diff --git a/public/htWeb/lib/core/ht.js b/public/htWeb/lib/core/ht.js index 65ef5d4..bee314a 100644 --- a/public/htWeb/lib/core/ht.js +++ b/public/htWeb/lib/core/ht.js @@ -1,32947 +1 @@ -! function (x, o, Z) { - "use strict"; - - function l(_, r) { - if ("function" != typeof r && null !== r) throw new TypeError("Super expression must either be null or a function"); - _.prototype = o.create(r && r.prototype, { - constructor: { - value: _, - writable: !0, - configurable: !0 - } - }), r && rb(_, r) - } - - function d(e) { - var B = o.prototype.toString.call(e); - return "Array]" === B.substring(B.length - 6) - } - - function y(F, D, n, T, x, Y) { - D = D || [], n = n || [], T = T || []; - try { - D.push(F); - var C = Function.apply(0, D); - return n[n.length] = "return " + C, Function.apply(0, n).apply(0, T) - } catch (U) { - return Y && Y(U), x - } - } - - function E(b) { - var K = {}; - return { - get: function (D) { - if (K[D] !== Z) return K[D]; - var X; - switch (D) { - case "WEBGL_depth_texture": - X = b.getExtension("WEBGL_depth_texture") || b.getExtension("MOZ_WEBGL_depth_texture") || b.getExtension("WEBKIT_WEBGL_depth_texture"); - break; - case "EXT_texture_filter_anisotropic": - X = b.getExtension("EXT_texture_filter_anisotropic") || b.getExtension("MOZ_EXT_texture_filter_anisotropic") || b.getExtension("WEBKIT_EXT_texture_filter_anisotropic"); - break; - case "WEBGL_compressed_texture_s3tc": - X = b.getExtension("WEBGL_compressed_texture_s3tc") || b.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || b.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"); - break; - case "WEBGL_compressed_texture_pvrtc": - X = b.getExtension("WEBGL_compressed_texture_pvrtc") || b.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"); - break; - case "WEBGL_compressed_texture_etc1": - X = b.getExtension("WEBGL_compressed_texture_etc1"); - break; - default: - X = b.getExtension(D) - } - return K[D] = X, X - } - } - } - - function B(y, V, h) { - function d() { - if (p !== Z) return p; - var K = V.get("EXT_texture_filter_anisotropic"); - return p = null !== K ? y.getParameter(K.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0 - } - - function r(o) { - if ("highp" === o) { - if (y.getShaderPrecisionFormat(y.VERTEX_SHADER, y.HIGH_FLOAT).precision > 0 && y.getShaderPrecisionFormat(y.FRAGMENT_SHADER, y.HIGH_FLOAT).precision > 0) return "highp"; - o = "mediump" - } - return "mediump" === o && y.getShaderPrecisionFormat(y.VERTEX_SHADER, y.MEDIUM_FLOAT).precision > 0 && y.getShaderPrecisionFormat(y.FRAGMENT_SHADER, y.MEDIUM_FLOAT).precision > 0 ? "mediump" : "lowp" - } - var p; - h = h || {}; - var K = "undefined" != typeof WebGL2RenderingContext && y instanceof WebGL2RenderingContext, - x = h.precision !== Z ? h.precision : "highp", - D = r(x); - D !== x && (console.warn("WebGL:", x, "not supported, using", D, "instead."), x = D); - var c = h.logarithmicDepthBuffer === !0, - F = y.getParameter(y.MAX_TEXTURE_IMAGE_UNITS), - C = y.getParameter(y.MAX_VERTEX_TEXTURE_IMAGE_UNITS), - Y = y.getParameter(y.MAX_TEXTURE_SIZE), - n = y.getParameter(y.MAX_CUBE_MAP_TEXTURE_SIZE), - I = y.getParameter(y.MAX_VERTEX_ATTRIBS), - e = y.getParameter(y.MAX_VERTEX_UNIFORM_VECTORS), - o = y.getParameter(y.MAX_VARYING_VECTORS), - O = y.getParameter(y.MAX_FRAGMENT_UNIFORM_VECTORS), - j = C > 0, - i = K || !!V.get("OES_texture_float"), - s = (K || !!V.get("OES_element_index_uint")) && "undefined" != typeof Uint32Array, - q = j && i, - k = K ? y.getParameter(y.MAX_SAMPLES) : 0; - return { - getMaxAnisotropy: d, - getMaxPrecision: r, - precision: x, - logarithmicDepthBuffer: c, - maxTextures: F, - maxVertexTextures: C, - maxTextureSize: Y, - maxCubemapSize: n, - maxAttributes: I, - maxVertexUniforms: e, - maxVaryings: o, - maxFragmentUniforms: O, - vertexTextures: j, - floatFragmentTextures: i, - elementTypeUint: s, - floatVertexTextures: q, - maxSamples: k - } - } - - function i(J, U) { - return J.z !== U.z ? J.z - U.z : J.id - U.id - } - - function p(q, r) { - return q.z !== r.z ? r.z - q.z : q.id - r.id - } - var Y = "ht"; - if (!x[Y]) { - ! function () { - Date.now && Date.prototype.getTime || (Date.now = function () { - return (new Date).getTime() - }), x.performance && x.performance.now || function () { - var $ = Date.now(); - x.performance || (x.performance = {}), x.performance.now = function () { - return Date.now() - $ - } - }(); - for (var Q = Date.now(), $ = 16, J = ["ms", "moz", "webkit", "o"], n = 0; n < J.length && !x.requestAnimationFrame; ++n) x.requestAnimationFrame = x[J[n] + "RequestAnimationFrame"], x.cancelAnimationFrame = x[J[n] + "CancelAnimationFrame"] || x[J[n] + "CancelRequestAnimationFrame"]; - x.requestAnimationFrame || (x.requestAnimationFrame = function (_) { - var k = Date.now(), - d = $ + Q - k; - return 0 > d && (d = 0), Q = k, x.setTimeout(function () { - Q = Date.now(), _(performance.now()) - }, d) - }), x.cancelAnimationFrame || (x.cancelAnimationFrame = function (G) { - return x.clearTimeout(G) - }), o.assign === Z && (o.assign = function (P) { - if (P === Z || null === P) throw new TypeError("Cannot convert undefined or null to object"); - for (var h = o(P), z = 1; z < arguments.length; z++) { - var f = arguments[z]; - if (f !== Z && null !== f) - for (var s in f) o.prototype.hasOwnProperty.call(f, s) && (h[s] = f[s]) - } - return h - }) - }(); - var U = x.document, - F = null, - O = x[Y] = {}, - M = x[Y + "config"], - u = O.Default = M && M.Default || {}, - z = O.Style = M && M.Style || {}, - I = O.Attr = M && M.Attr || {}, - C = function () { - return !0 - }, - Q = function (R) { - return R - }, - j = function (_) { - return !_ - }, - S = O.Color = M && M.Color || {}, - t = O.IsGetter = M && M.IsGetter || {}; - ! function () { - var h = !1; - try { - var a = o.defineProperty({}, "passive", { - get: function () { - return h = !0, Z - } - }); - x.addEventListener("test", a, a), x.removeEventListener("test", a, a) - } catch (t) { - h = !1 - } - u.passiveSupported = h - }(); - var e, G, H, g, f = u.passiveSupported, - J = u.eventListenerOptionsFalse = f ? { - passive: !1, - capture: !1 - } : !1, - r = u.eventListenerOptionsTrue = f ? { - passive: !1, - capture: !0 - } : !0, - K = function (m, t, W, C) { - m.addEventListener(t, W, C ? r : J) - }, - b = function (l, s, x, H) { - l.removeEventListener(s, x, H ? r : J) - }, - h = Math, - A = h.round, - T = h.floor, - s = h.ceil, - w = h.sqrt, - q = h.max, - V = h.min, - X = h.abs, - k = h.cos, - c = h.acos, - n = h.sin, - P = h.pow, - a = h.asin, - L = h.exp, - W = h.PI, - $ = 2 * W, - N = W / 2, - R = h.tan, - D = h.atan2, - m = h.random, - v = h.log, - _ = !1, - Ad = !1, - Zb = x.parseInt || global.parseInt, - yh = "2021-6-15", - Qe = x.navigator ? x.navigator.platform.indexOf("Win") > -1 : !1, - ds = function (p) { - return p * p - }, - cd = x.setTimeout, - nr = x.clearTimeout, - ge = x.location, - jb = x.navigator ? x.navigator.userAgent.toLowerCase() : "", - Sq = function (W) { - return W.test(jb) - }, - $f = Sq(/msie/), - Uq = Sq(/msie/) || Sq(/trident/), - Xf = Sq(/msie 10/), - Bj = Sq(/edge/), - es = Sq(/firefox/), - eg = Sq(/mac/), - nf = u.isTouchable === Z ? Qe ? !1 : U ? "ontouchend" in U : !1 : u.isTouchable, - lp = "default", - vq = "single", - tb = "multiple", - wg = "front", - Qq = "back", - nq = "left", - fm = "right", - $c = "top", - Kd = "bottom", - sc = "center", - to = "eye", - Sg = "middle", - Yn = "east", - Wg = "west", - Tb = "north", - Jc = "none", - oe = "px", - Ki = "absolute", - Xe = "border", - _d = "triangle", - Tq = "rect", - Eq = "circle", - xk = "cylinder", - bl = "shape", - Uj = "items", - Fk = "normal", - Ce = "remove", - Tg = "clear", - ul = "width", - Hh = "height", - Dm = "ingroup", - tm = "check", - He = "uncheck", - Hp = "radio", - kj = "radioOn", - yb = "radioOff", - _b = "points", - kd = "values", - Kh = "series", - nh = "body", - Bg = "label", - Qk = "label2", - Rm = "note", - Vk = "note2", - ub = "icons", - Vm = "labelFont", - fe = "labelColor", - Uo = "labelSelectColor", - ke = "note.expanded", - Mh = "note2.expanded", - kh = "edge.expanded", - Ei = "edge.points", - ej = "edge.type", - ac = "rotation", - fc = "hidden", - Pd = "visible", - ih = "tuv", - Df = "no", - Ph = "draw", - nj = "select", - Fi = "currentSubGraph", - op = "selectBackground", - Pi = "autoMakeVisible", - Ji = "autoHideScrollBar", - df = "scrollBarColor", - gd = "scrollBarSize", - Vb = "indent", - Jj = "rowHeight", - Gr = "columnLineColor", - Ln = "rowLineColor", - jh = "columnLineVisible", - Yc = "rowLineVisible", - dj = "visibleFunc", - Zi = "expandIcon", - xj = "collapseIcon", - wi = "checkMode", - go = "sortFunc", - Me = "editable", - Zh = "batchEditable", - qh = "tristate", - Sh = "asc", - rj = "desc", - pr = "position", - zl = "__", - pd = "elevation", - Wf = "children", - gq = "translateX", - wb = "translateY", - uk = "dataModel", - Pq = "maxSize", - xq = "enc", - Cp = "state", - Yk = xq + "o" + "de", - Lm = "shape3d", - cp = "shape3d.resolution", - lm = "shape3d.visible", - Rb = "shape3d.from.visible", - xh = "shape3d.to.visible", - Je = "shape3d.top.visible", - Ho = "shape3d.bottom.visible", - Sn = "repeat.uv.length", - No = "serializeValue", - Ij = "deserializeValue", - Mg = "centerUniform", - gs = "uniform", - nb = "rgba(255,255,255,0)", - om = "style", - dr = "attr", - Kb = "field", - Gl = "string", - hm = "boolean", - dg = "color", - fj = "int", - Mo = "number", - Nc = "ew-resize", - zi = "ns-resize", - Zk = "pointer", - iq = "auto", - fp = "mousedown", - rp = "mousemove", - cj = "mouseup", - Si = "mouseout", - Xd = "touchstart", - wj = "touchmove", - Sj = "touchend", - Ze = "keydown", - gn = "keyup", - kg = ["DOMMouseScroll", "mousewheel"], - ad = es ? kg[0] : kg[1], - Xl = zl + Y + zl + Yk, - Vr = [Xd, wj, Sj], - vs = [fp, rp, cj, Si, ad, "wheel", "mouseenter", "mouseleave", "mouseover"], - kr = [Ze, gn, "keypress", "input", "contextmenu", "compositionstart", "compositionupdate", "compositionend"], - Ec = nf ? Vr.concat(kr) : vs.concat(kr), - Xm = F, - xn = F, - sq = F, - Ob = cj.length, - Yp = function () { - sq && (nr(sq.timeout), sq = F) - }, - Xk = function () { - sq && me(sq.e, sq.info) - }; - x.addEventListener && (nf || (K(x, Si, function () { - Yp() - }), K(x, ad, function () { - Um() - })), K(x, gn, function (y) { - 91 === y.keyCode ? pl = {} : delete pl[y.keyCode] - }, !0), K(x, Ze, function (b) { - pl[b.keyCode] = !0 - }, !0), K(x, "blur", function () { - pl = {} - })); - var ug, yo, Qg, aj = 0, - nn = F, - Jl = function (Z, A) { - var T = cd(function () { - delete nn[T], wd(nn) && (nn = F), Z() - }, A); - return T - }, - Gk = F, - vi = F, - Zl = {}, - Oe = {}, - ef = {}, - Zm = {}, - Mq = {}, - pl = {}, - Xh = {}, - $d = {}, - Al = {}, - Dc = {}, - Bm = /.json$/, - Gq = /\.(json|bin)$/, - Ok = /^data:image\/svg\+xml/, - $i = {}, - Pc = [], - Xn = {}, - zs = F, - rq = F, - Mr = function () { }, - jm = function () { - throw "Oops!" - }, - bg = [0, 0, 0], - nl = { - x: 0, - y: 0, - width: 0, - height: 0 - }, - de = F, - rm = F, - Wc = F, - vl = function (Z, y) { - Oe[Z] = y, y && y.comps && !y.uuid && (y.uuid = O.Math.generateUUID()), wk[Z] && (y.cacheRule = wk[Z], delete wk[Z]) - }, - Dd = function (V) { - rm && !V._72O && (Wc || (Wc = {}), Wc[V._72O = xp()] = V), ug != F ? Gg() < .05 && g && !yo && (tf = Yp) : tf = El - }, - sd = function (P, X, v, z) { - rm || (rm = {}); - var Q = rm[P]; - if (Q) { - if (Q.url === X) return; - Q.image ? (Q.image.onload = Mr, Q.image.onerror = Mr) : Q.request && (Q.request.onload = Mr, Q.request.onerror = Mr) - } - if (Bm.test(X)) { - var m = new De; - if (rm[P] = { - request: m, - url: X - }, X = u.beforeLoadURL(X, P), X.data) { - var _ = u.parse(X.data); - Sm(P, _), u.handleImageLoaded(P, _) - } else { - m.onload = function () { - if (200 === this.status || 0 === this.status) { - var p = u.parse(m.getResponseText()); - Sm(P, p), u.handleImageLoaded(P, p) - } else Sm(P, u.handleUnfoundImage(P, X) || F) - }, m.onerror = function () { - Sm(P, u.handleUnfoundImage(P, X) || F) - }; - var x = {}; - x.url = encodeURI(X), x.sync = !1, m.send(x) - } - } else { - var _ = new Image; - rm[P] = { - image: _, - url: X - }, /^data:image/.test(X) || (X = u.beforeLoadURL(X, P), X = u.appendTimeStamp(X), X = encodeURI(X), _.crossOrigin = u.crossOrigin), u.convertImageSrc(X, function (f) { - Uq && (X.toLowerCase().indexOf(".svg") > 0 || Ok.test(X)) ? (U.body.appendChild(_), _.style.visibility = "hidden", _.onload = function () { - cd(function () { - if (v && (_.width = v), z && (_.height = z), !_.width || !_.height) { - var H = _.width || _.clientWidth, - B = _.height || _.clientHeight; - _.width = H, _.height = B - } - u.handleImageLoaded(P, _), Sm(P, _), U.body.removeChild(_), _.style.visibility = "" - }, 180) - }, _.onerror = function () { - Sm(P, u.handleUnfoundImage(P, X) || F), U.body.removeChild(_), _.style.visibility = "" - }) : (_.onload = function () { - v && (_.width = v), z && (_.height = z), u.handleImageLoaded(P, _), Sm(P, _) - }, _.onerror = function () { - Sm(P, u.handleUnfoundImage(P, X) || F) - }), _.src = f - }) - } - }, - Sm = function (S, B) { - if (vl(S, B), delete rm[S], wd(rm) && (rm = F, Wc)) { - for (var z in Wc) { - var A = Wc[z]; - A._2O && A._2O[S] && (A.deleteTexture(S), delete A._2O[S]), A.invalidateAll && A.invalidateAll(Z, "imageLoaded", S), A.redraw && A.redraw(), A.iv(), delete A._72O - } - Wc = F - } - if (B && Wc) - for (var z in Wc) { - var A = Wc[z]; - A.invalidateAll && A.invalidateAll(Z, "imageLoading", S), A.redraw && A.redraw(), A.iv() - } - }, - mm = function () { - return v = h && Date, - function () { - return x.performance && x.performance.now ? x.performance.now() : Date.now() - } - }(), - ee = function (u, g, v) { - return { - width: u, - height: g, - comps: ip(v) ? v : [v] - } - }, - eq = function (S, X) { - return { - type: Eq, - rect: [S, X, 1.6, 1.6], - borderWidth: 1, - borderColor: Ur, - gradient: Nf, - gradientColor: Cn, - background: Ur - } - }, - lj = function (H, J) { - return ee(16, 16, { - type: _d, - rect: [4, 4, 10, 8], - background: H, - rotation: J ? 1.57 : 3.14 - }) - }, - mf = function (O, h) { - return ee(16, 16, { - type: _d, - rect: [4, 4, 8, 7], - background: O, - rotation: h ? 3.14 : 0 - }) - }, - Oj = function (g) { - var O = g._orientation; - return "horizontal" === O || "h" === O - }, - $o = function (B, l) { - var E = F || 4, - h = F || 1, - v = F || 1; - 0 > E ? E = 0 : E > .25 && (E = .25); - var o, D, p, g, s, y, S, M = .5, - q = [], - T = [], - Q = [], - b = $ / v, - m = $ / h, - a = M - E; - for (D = 0; h >= D; D++) - for (g = -W + D * m, y = k(g), s = n(g), o = 0; v >= o; o++) p = o * b, S = a + E * y, q.push(k(p) * S, s * E, -n(p) * S), (G = [B, l]) && T.push(o / v, 1 - D / h); - for (D = 0; h > D; D++) { - var i = D * (v + 1), - O = (D + 1) * (v + 1); - for (o = 0; v > o; o++) Q.push(i + o, O + o + 1, O + o, i + o, i + o + 1, O + o + 1), qg.z = ok.z = [B, l] - } - }, - lh = function ($) { - var i = 2, - E = 0; - for (var s in $) s.length === i && Zb(s, 32) === $r && (zs = rq = $[s]), E++; - return E - }, - Cc = function (Z, l, d, G) { - return d || (d = nf ? 5 : 3, d /= G || 1), { - x: Z - d, - y: l - d, - width: 2 * d, - height: 2 * d - } - }, - Ub = function (_, e, A, d) { - var y = this; - e || (e = nf ? 5 : 3, A = 20, d = 20); - var p = { - x: _, - y: e, - width: A, - height: d - }; - if (A) - for (var N = 0; A > N; N++) - if (3 === A) d = 20; - else - for (var j = 0; d > j; j++) y = x ? x : A; - var q = { - x: W, - y: 2 * W - }; - if (cf(p, q)) { - var T = Hh[0] + $c[0] + Tg[1] + Sh.length, - g = fc[0] + qh[0] + Tg[1] + nh.length; - Xb[to] = [y[T], y[g]], y[T] = tg[to], y[g] = tg[Lm] - } - }, - kp = function (w) { - return (/ble$/.test(w) || /ed$/.test(w) || t[w] ? "is" : "get") + w.charAt(0).toUpperCase() + w.slice(1) - }, - tg = function (p) { - return "set" + p.charAt(0).toUpperCase() + p.slice(1) - }, - dk = function (M) { - return typeof M === Gl || M instanceof String - }, - Bp = function (c) { - return typeof c === Mo - }, - El = function (_) { - return typeof _ === hm - }, - xl = function (q) { - return q && "object" == typeof q - }, - Mf = function (J) { - return "function" == typeof J - }, - ip = function (l) { - return l instanceof Array - }, - Xo = function (E) { - return E instanceof xr - }, - mh = function (y) { - return ip(y) ? new xr(y) : y - }, - Fq = function (U) { - return U instanceof Dp - }, - Bk = function (N) { - return N instanceof Xg - }, - yl = function (K) { - return K instanceof Lc - }, - Th = function (m, I) { - if (!(m instanceof O.Group)) return !1; - if (!I) return m.isExpanded(); - var $ = I.getDataUI(m); - return $ && $._88I ? !0 : !1 - }, - Qb = function (m) { - return m instanceof Br - }, - Db = function (B) { - return B && "IFRAME" === B.tagName - }, - Oo = function (d) { - return d == F || u.numberDigits == F ? d : parseFloat(d.toFixed(u.numberDigits)) - }, - gc = function (s, $, i) { - var E, L = $.length; - if (i) - for (var z = 0; i > z; z++) - if (3 === L) s.push($[0]), s.push($[1]), s.push($[2]); - else - for (E = 0; L > E; E++) s.push($[E]); - else if (3 === L) s.push($[0]), s.push($[1]), s.push($[2]); - else - for (E = 0; L > E; E++) s.push($[E]) - }, - Il = function (p) { - return p ? xl(p) ? p : {} : !1 - }, - Uh = function (L, O, J) { - var j, b = xl(L) ? L : L.prototype; - for (j in O) J && j in b ? b[j] === Z && console.warn("class", b, "has own undefined property", j, ", keep exist!") : b[j] = O[j]; - return L - }, - sg = function (Y, L) { - if (!("wheelDelta" in L)) { - var A = L.deltaMode; - L.wheelDelta = A === L.DOM_DELTA_PIXEL ? -L.deltaY : A === L.DOM_DELTA_LINE ? 40 * -L.deltaY : 120 * -L.deltaY - } - Y.handle_mousewheel(L) - }, - Hc = function (B) { - return String.fromCharCode(B) - }, - fo = function (N) { - for (var s, f = 0, i = ""; f < N.length; f++) s = N[N.length - 1 - f], "%" === s ? s = "'" : "a" === s ? s = '"' : "]" === s && (s = "\\"), i += Hc(s.charCodeAt(0) - 1); - return i - }, - fi = function (G, e, E) { - G.superClass.constructor.apply(e, E) - }, - wd = function (n) { - for (var g in n) return !1; - return !0 - }, - Ro = function (g) { - return g ? 0 === g.length : !0 - }, - jg = function () { - var w = ""; - return [He[0], Ln[0], Bg[0]].forEach(function (O) { - w += tg(O).slice(3) - }), gs = U && U[w] || Mg, - function (z, V) { - return z === V ? !0 : z.x === V.x && z.y === V.y && z.width === V.width && z.height === V.height - } - }(), - re = function (Q, Z, R) { - return Z > Q ? Z : Q > R ? R : Q - }, - he = function (e) { - return 0 > e ? -1 : e > 0 ? 1 : 0 - }, - Gg = function () { - var z = 1e4 * n(Ob++); - return z - T(z) - }, - Rl = function (L, K, J) { - return ti(L.x, L.y, K.x, K.y, J.x, J.y, J.x + J.width, J.y, !0) || ti(L.x, L.y, K.x, K.y, J.x + J.width, J.y, J.x + J.width, J.y + J.height, !0) || ti(L.x, L.y, K.x, K.y, J.x + J.width, J.y + J.height, J.x, J.y + J.height, !0) || ti(L.x, L.y, K.x, K.y, J.x, J.y + J.height, J.x, J.y, !0) - }, - ti = function (D, w, R, T, d, C, u, b, r) { - var B = (u - d) * (w - C) - (b - C) * (D - d), - l = (b - C) * (R - D) - (u - d) * (T - w); - if (0 !== l) { - var O = B / l, - e = D + O * (R - D), - o = w + O * (T - w); - return r && (e + Wp < V(D, R) || e - Wp > q(D, R) || e + Wp < V(d, u) || e - Wp > q(d, u) || o + Wp < V(w, T) || o - Wp > q(w, T) || o + Wp < V(C, b) || o - Wp > q(C, b)) ? F : [e, o] - } - return F - }, - jq = function (U, Q, _) { - if (U && _) - if (Q) { - if (Q === om) return U.getStyle(_); - if (Q === dr) return U.getAttr(_); - if (Q === Kb) return U[_] - } else if (_ = kp(_), U[_]) return U[_](); - return Z - }, - Di = function (c, W, b, h) { - if (c && b) - if (W) { - if (W === om) c.s(b, h); - else if (W === dr) c.a(b, h); - else if (W === Kb) { - var w = c[b]; - c[b] = h, c.fp("f:" + b, w, h) - } - } else b = tg(b), c[b] && c[b](h) - }, - Wh = function (L, W, X) { - return W && "top" !== W ? "bottom" === W ? { - x: L.x, - y: L.y, - width: L.width, - height: L.height * X - } : "right" === W ? { - x: L.x, - y: L.y, - width: L.width * X, - height: L.height - } : "left" === W ? { - x: L.x + L.width * (1 - X), - y: L.y, - width: L.width * X, - height: L.height - } : void 0 : { - x: L.x, - y: L.y + L.height * (1 - X), - width: L.width, - height: L.height * X - } - }, - cs = function (z, f, b, Q, N) { - f && fl(z, b, Q, 1, N, f) - }, - Id = function (w, R, p, n) { - var E = 1 - w; - return E * E * R + 2 * w * E * p + w * w * n - }, - qg = function (C, I, s, m, O) { - var i = 1 - C; - return i * i * i * I + 3 * i * i * C * s + 3 * i * C * C * m + C * C * C * O - }, - tj = function (h) { - var l, G, t, g, x = 0; - return h.forEach(function (s) { - if (l = s.length, l > 0) - for (G = s[0], g = 1; l > g; g++) t = s[g], x += En(G, t), G = t - }), x - }, - ic = function (D, L, q) { - var j = "__" + D, - l = function (i) { - ("mousedown" === D || "mouseup" === D || "touchstart" === D || "touchend" === D) && wm(i), q.disabled || q["handle_" + D](i) - }; - q[j] || (q[j] = l, K(L, D, l)) - }, - ws = function (D, E, B) { - var N = "__" + D, - W = B[N]; - W && (b(E, D, W), delete B[N]) - }, - em = function (P, V) { - var e = "_" + V; - P[kp(V)] = function () { - return this[e] - }, P[tg(V)] = function (q) { - var n = this[e]; - this[e] = q, this.fp(V, n, q) - } - }, - Ci = function (C) { - return o.create(C) - }, - bh = function ($) { - if (!$.element) { - var W, s; - (W = $.textField) ? s = Wn(Vs.TextField, W) : (W = $.textArea) ? s = Wn(Vs.TextArea, W) : (W = $.button) ? s = Wn(Vs.Button, W) : (W = $.comboBox) ? s = Wn(Vs.ComboBox, W) : (W = $.checkBox) ? s = Wn(Vs.CheckBox, W) : (W = $.radioButton) ? s = Wn(Vs.RadioButton, W) : (W = $.slider) ? s = Wn(Vs.Slider, W) : (W = $.colorPicker) ? s = Wn(Vs.ColorPicker, W) : (W = $.image) && (s = Wn(Vs.Image, W)), s && ($.element = s) - } - }, - ve = function (J, c) { - var P = dd(J); - return P._ht = c, P - }, - Iq = x.top === x ? x.top : x || x.document, - dd = function (p, C) { - var i = U.createElement("div"), - L = i.style; - return i.tabIndex = -1, i.onkeydown = Qc, L.msTouchAction = Jc, Yq(i, F, 0), nf && L.setProperty("-webkit-tap-highlight-color", "rgba(0, 0, 0, 0)", F), p && (L.overflow = fc), C && sn(C, i), i - }, - uo = function (W, M) { - var h = U.createElement("canvas"), - v = h.style; - return v.msTouchAction = Jc, M || (v.pointerEvents = Jc), Yq(h, F, 0), W && sn(W, h), h - }, - Yq = function (A, x, r) { - var u = A.style; - u.border = x ? x + " solid 1px" : 0, u.outline = 0, u.padding = r ? "0 " + r + oe : 0, uj(A) - }, - uj = function (B) { - var I = B.style; - I.position = Ki, I.margin = 0, I.setProperty("box-sizing", "border-box", F), I.setProperty("-moz-box-sizing", "border-box", F) - }, - Bn = function (I, w, u, X) { - X || (X = ij), w != F && (I.width = w * X, I.style.width = w + oe), u != F && (I.height = u * X, I.style.height = u + oe) - }, - sn = function (D, t, m) { - D.appendChild(t), m && (t.style.position = Ki) - }, - qr = function (P, S) { - S.split || (S += ""); - for (var m, z = S.split("\n"), T = 0, K = z.length, e = 0; K > e; e++) { - var w = ln(P.font, z[e]); - w.width > T && (T = w.width), m || (m = w.height) - } - return P.ss = z, { - width: T, - height: m * K - } - }, - Om = function (w, G, t, V, Z, j) { - var J = G.length; - if (1 === J) Lp(w, G[0], t, V, Z); - else - for (var k = t.height / J, H = { - x: t.x, - y: t.y, - width: t.width, - height: k - }, m = 0; m < G.length; m++) j ? nd(w, G[m], V, Z, H.x, H.y, H.width, H.height, j) : Lp(w, G[m], H, V, Z), H.y += k - }, - Lp = function (c, V, W, D, G) { - c.font = D ? D : Fh, c.fillStyle = G ? G : Dh, c.textAlign = sc, c.textBaseline = Sg; - var j, M; - W ? W.width === Z ? (j = W.x, M = W.y) : (j = W.x + W.width / 2, M = W.y + W.height / 2) : (j = 0, M = 0), c.fillText(V, A(j), A(M)) - }, - oh = function (h) { - h.getView && (h = h.getView()); - var W = h.offsetWidth || h.scrollWidth; - return !W && h.style.width && (W = Zb(h.style.width)), W - }, - zp = function (f) { - f.getView && (f = f.getView()); - var r = f.offsetHeight || f.scrollHeight; - return !r && f.style.height && (r = Zb(f.style.height)), r - }, - Jg = function (F, k, X) { - var B = k[0].toUpperCase() + k.substring(1, k.length); - F["webkit" + B] = X, F["moz" + B] = X, F["ms" + B] = X, F["o" + B] = X, F[k] = X - }, - lo = function () { - var Z = function (j) { - Qc(j), j.stopPropagation() - }, - o = function (u) { - Qc(u) - }, - h = [Xd, Ze, fp]; - return function (c, H) { - var P = dd(), - J = P.style; - return J.backgroundColor = u.disabledBackground, c && (J.backgroundImage = "url(" + c + ")", J.backgroundPosition = "50% 50%", J.backgroundRepeat = "no-repeat no-repeat"), H === !1 ? h.forEach(function (x) { - K(P, x, o) - }) : h.forEach(function (R) { - K(P, R, Z) - }), P - } - }(), - Wd = function (C) { - var F = C.getContext("2d"); - return F.save(), F.lineCap = ob, F.lineJoin = Wl, F - }, - tf = function (I, s, m, P) { - wh(I, s * ij, m * ij), P *= ij, 1 !== P && I.scale(P, P) - }, - wh = function (s, n, N) { - s.translate(n, N) - }, - jc = function (z, k) { - k && z.rotate(k) - }, - ec = function (v, i, m) { - i === Z && (i = 1), m === Z && (m = 1), (1 !== i || 1 !== m) && v.scale(i, m) - }, - lg = !1, - L = Iq[tm[1] + gq[0]], - hr = function (i) { - var n = U.activeElement; - if (U.activeElement !== i) { - n && n.forceOnblur && n.forceOnblur(); - for (var C = [], c = i.parentNode; c;) C.push([c, c.scrollLeft, c.scrollTop]), c = c.parentNode; - if (!lg) { - var V = [], - J = []; - try { - for (var $ = x.parent, H = x; $ !== H;) V.push([$, $.scrollX, $.scrollY]), H = $, $ = x.parent; - var N = x.frameElement; - if (N) - for (var X = N.parentNode; X;) J.push([X, X.scrollLeft, X.scrollTop]), X = X.parentNode - } catch (d) { - lg = !0 - } - } - if (nf) i.focus(); - else { - var a = hq(), - k = a.target; - i.focus(), k.scrollLeft = a.left, k.scrollTop = a.top - } - C.forEach(function (I) { - I[0].scrollLeft = I[1], I[0].scrollTop = I[2] - }), lg || (V.forEach(function (g) { - g[0].scrollTo(g[1], g[2]) - }), J.forEach(function (a) { - a[0].scrollLeft = a[1], a[0].scrollTop = a[2] - })) - } - }, - Bq = function (r) { - return r && r.getView ? r.getView() : r - }, - qp = function (R, A, i, d, P) { - if (2 === arguments.length && (i = A.y, d = A.width, P = A.height, A = A.x), R.isSelfViewEvent) R.setX(A), R.setY(i), R.setWidth(d), R.setHeight(P); - else { - var W = Bq(R), - p = W.style; - if ((U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement) !== W) A !== Z && (p.left = A + oe), i !== Z && (p.top = i + oe), d !== Z && (p.width = d + oe), P !== Z && (p.height = P + oe); - else { - var e = u.getWindowInfo(); - p.left = (A = e.left) + oe, p.top = (i = e.top) + oe, p.width = (d = e.width) + oe, p.height = (P = e.height) + oe - } - R.endEditing && !nf && R.endEditing(), R.redraw && R.redraw(), R.invalidate && R.invalidate(), R.onLayouted && R.onLayouted(A, i, d, P), R.fireViewEvent && R.fireViewEvent("layout") - } - }, - Xj = function (D) { - if (!D.touches) return D; - var g = D.touches[0]; - return g ? g : D.changedTouches[0] - }, - gr = function (V) { - return li(V) ? Xj(V).target : V.target - }, - li = function (d) { - return d && "object" == typeof d && "touches" in d - }, - ek = function (n) { - u.popup && u.popup.close(), u.popup = n - }, - si = F, - Ed = function ($) { - si.handleWindowTouchMove($) - }, - Zr = function ($) { - si.handleWindowTouchEnd($), b(x, wj, Ed), b(x, Sj, Zr), si = F - }, - Kn = function (z) { - si.handleWindowMouseMove(z) - }, - tc = function (Z) { - si.handleWindowMouseUp(Z), b(x, rp, Kn), b(x, cj, tc), si = F - }, - Bf = function (r) { - return 1 === Qj(r) - }, - sh = function (F, h) { - return h ? h.keyCode === F : pl[F] - }, - Dq = function (N) { - return ik(N) && sh(65, N) - }, - qq = function (L) { - return sh(46, L) || sh(8, L) - }, - jl = function (g) { - return function (M) { - return M ? M.keyCode === g : pl[g] - } - }, - $r = 573, - Fe = [65, 83, 68, 87, 37, 38, 39, 40, 32, 13, 27], - sb = jl(Fe[0]), - Ib = jl(Fe[1]), - Fr = jl(Fe[2]), - $j = jl(Fe[3]), - Wk = jl(Fe[4]), - Nk = jl(Fe[5]), - _i = jl(Fe[6]), - ri = jl(Fe[7]), - Cf = jl(Fe[8]), - hd = jl(Fe[9]), - bj = jl(Fe[10]), - Gj = { - 65: 1, - 83: 1, - 68: 1, - 87: 1, - 37: 1, - 38: 1, - 39: 1, - 40: 1 - }, - Cg = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 5, 5, 5, 5, 5, 7, 4027], - abd ="20t24bt02b28 12c12c11", - xm = F, - Fb = F, - Cr = function (B, M) { - xm || (xm = uo()), Bn(xm, B, M, 1); - var Q = Wd(xm); - return Q.clearRect(0, 0, B, M), Q - }, - nm = function (F, I, q) { - if (I && F) { - if ("override" === q) return I; - if ("override_rgb" === q) { - var z = ns(I); - return F = zd(F), "rgba(" + A(255 * z[0]) + "," + A(255 * z[1]) + "," + A(255 * z[2]) + "," + F[3] / 255 + ")" - } - if ("override_a" === q) { - var z = ns(I); - return F = zd(F), "rgba(" + F[0] + "," + F[1] + "," + F[2] + "," + z[3] + ")" - } - if ("multiply_destinationAtop" === q) { - var d = Pm(ns(F)), - C = d[3], - h = Pm(ns(I)), - m = h[3], - w = Pm(d), - N = w[3], - x = d.map(function (R, S) { - return R * h[S] - }), - E = 1 - C, - s = 1 - m, - H = s * C + m; - return d = d.map(function (i, j) { - return (m * E * h[j] + m * C * x[j] + s * C * i) / H - }), C = H, E = 1 - C, d = d.map(function (v, b) { - return (N * w[b] * E + C * v * N) / N - }), C = N, "rgba(" + A(255 * d[0]) + "," + A(255 * d[1]) + "," + A(255 * d[2]) + "," + C + ")" - } - var z = ns(I); - return F = zd(F), "rgba(" + A(F[0] * z[0]) + "," + A(F[1] * z[1]) + "," + A(F[2] * z[2]) + "," + F[3] / 255 * z[3] + ")" - } - return F - }, - zd = function () { - var m, k = {}; - for (var u in x) { - var T = tb.length; - if (u.length == T && u[0] === tb[2] && u[1] === Jc[1] && u[4] === tb[3] && u[5] === tb[4] && u.substr(T - 2) === Jc[1] + Jc[2]) { - var Z = x[u]; - for (var d in Z) d.length === T && d.substr(0, 3) === fm[3] + Ce[3] + nj[0] && d.substr(T - 2) === tb[0] + Rm[3] && (kg = Z[d]) - } - } - return function (_) { - var O, X = k[_]; - return X || (m || (m = uo(), Bn(m, 1, 1, 1)), O = m.getContext("2d"), O.clearRect(0, 0, 1, 1), fl(O, 0, 0, 1, 1, _), X = O.getImageData(0, 0, 1, 1).data, X = k[_] = [X[0], X[1], X[2], X[3]]), X - } - }(), - ns = function (U) { - if (!dk(U)) return U; - var E = zd(U); - return E.CA || (E.CA = [E[0] / 255, E[1] / 255, E[2] / 255, E[3] / 255]), E.CA - }, - oi = function (X, i, h, Z, O) { - var b = uo(); - b.width = h, b.height = Z; - var V = b.getContext("2d"); - V.drawImage(X, 0, 0, h, Z); - try { - for (var l = V.getImageData(0, 0, h, Z), B = l.data, H = 0, q = B.length; q > H; H += 4) { - var U = B[H + 0], - g = B[H + 1], - t = B[H + 2], - W = B[H + 3]; - "override_a" === O ? B[H + 3] = 255 * i[3] : "override_rgb" === O ? (B[H + 0] = 255 * i[0], B[H + 1] = 255 * i[1], B[H + 2] = 255 * i[2]) : "override" === O ? (B[H + 0] = 255 * i[0], B[H + 1] = 255 * i[1], B[H + 2] = 255 * i[2], B[H + 3] = 255 * i[3]) : (B[H + 0] = i[0] * U, B[H + 1] = i[1] * g, B[H + 2] = i[2] * t, B[H + 3] = i[3] * W) - } - V.putImageData(l, 0, 0) - } catch (M) { - return X - } - return b - }, - Xb = function (_, k, K) { - return k && (k = "miter" === K ? 8 * k + 20 : k + 1, _ && vn(_, k)), k - }, - Rj = function (e, U) { - if (U) { - var h = new In(U), - s = e.width / 2, - g = e.height / 2, - H = ms([h.tf(-s, -g), h.tf(s, -g), h.tf(s, g), h.tf(-s, g)]); - return H.x += e.x + s, H.y += e.y + g, H - } - return e - }, - dc = function (K, O, X, t, Q, g, y, j) { - t *= Math.PI / 180; - var G = { - x: Math.cos(t) * (K.x - y.x) / 2 + Math.sin(t) * (K.y - y.y) / 2, - y: -Math.sin(t) * (K.x - y.x) / 2 + Math.cos(t) * (K.y - y.y) / 2 - }, - H = Math.pow(G.x, 2) / Math.pow(O, 2) + Math.pow(G.y, 2) / Math.pow(X, 2); - H > 1 && (O *= Math.sqrt(H), X *= Math.sqrt(H)); - var b = (Q == g ? -1 : 1) * Math.sqrt((Math.pow(O, 2) * Math.pow(X, 2) - Math.pow(O, 2) * Math.pow(G.y, 2) - Math.pow(X, 2) * Math.pow(G.x, 2)) / (Math.pow(O, 2) * Math.pow(G.y, 2) + Math.pow(X, 2) * Math.pow(G.x, 2))); - isNaN(b) && (b = 0); - var e = { - x: b * O * G.y / X, - y: b * -X * G.x / O - }, - d = { - x: (K.x + y.x) / 2 + Math.cos(t) * e.x - Math.sin(t) * e.y, - y: (K.y + y.y) / 2 + Math.sin(t) * e.x + Math.cos(t) * e.y - }, - C = function (K) { - return Math.sqrt(Math.pow(K[0], 2) + Math.pow(K[1], 2)) - }, - $ = function (B, J) { - return (B[0] * J[0] + B[1] * J[1]) / (C(B) * C(J)) - }, - u = function (J, _) { - return (J[0] * _[1] < J[1] * _[0] ? -1 : 1) * Math.acos($(J, _)) - }, - w = u([1, 0], [(G.x - e.x) / O, (G.y - e.y) / X]), - r = [(G.x - e.x) / O, (G.y - e.y) / X], - T = [(-G.x - e.x) / O, (-G.y - e.y) / X], - n = u(r, T); - $(r, T) <= -1 && (n = Math.PI), $(r, T) >= 1 && (n = 0); - var $ = O > X ? O : X, - E = O > X ? 1 : O / X, - N = O > X ? X / O : 1; - if (null == j) { - var l = { - x: 0, - y: 0, - width: 0, - height: 0 - }; - vn(l, $), l.x *= E, l.width *= E, l.y *= N, l.height *= N; - var f = new In(t); - return l = ms([f.tf(l.x, l.y), f.tf(l.x + l.width, l.y), f.tf(l.x + l.width, l.y + l.height), f.tf(l.x, l.y + l.height)]), l.x += d.x, l.y += d.y, [{ - x: l.x, - y: l.y - }, { - x: l.x + l.width, - y: l.y - }, { - x: l.x + l.width, - y: l.y + l.height - }, { - x: l.x, - y: l.y + l.height - }] - } - j.translate(d.x, d.y), j.rotate(t), j.scale(E, N), j.arc(0, 0, $, w, w + n, 1 - g), j.scale(1 / E, 1 / N), j.rotate(-t), j.translate(-d.x, -d.y) - }, - jp = function (q, I) { - q && q.beginPath(); - for (var N, p, z, v = [], V = function (k) { - for (var m, b = /(\-{0,1}[\d\.]+)/gi, c = []; m = b.exec(k);) c.push(parseFloat(m[0])); - return c - }, u = /([MmLlHhVvCcSsQqTtAa]{1}[\d\.,\s\-Zz]*)/gi, g = { - x: 0, - y: 0 - }; N = u.exec(I);) { - var S = N[0], - J = S.substr(0, 1); - if ("M" === J || "m" === J) { - for (var R = V(S), L = 0; L < R.length; L += 2) { - var b = R[L], - W = R[L + 1]; - "m" === J && (b += g.x, W += g.y), q && q.moveTo(b, W), v.push({ - x: b, - y: W - }), g.x = b, g.y = W - } - p = z = null - } else if ("H" === J || "h" === J) { - for (var R = V(S), L = 0; L < R.length; L += 1) { - var b = R[L]; - "h" === J && (b += g.x), q && q.lineTo(b, g.y), v.push({ - x: b, - y: g.y - }), g.x = b - } - p = z = null - } else if ("C" === J || "c" === J) { - for (var R = V(S), L = 0; L < R.length; L += 6) { - var B = R[L], - c = R[L + 1], - T = R[L + 2], - D = R[L + 3], - b = R[L + 4], - W = R[L + 5]; - "c" === J && (B += g.x, c += g.y, T += g.x, D += g.y, b += g.x, W += g.y), q && q.bezierCurveTo(B, c, T, D, b, W), v.push({ - x: B, - y: c - }), v.push({ - x: T, - y: D - }), v.push({ - x: b, - y: W - }), g.x = b, g.y = W - } - p = [B, c, T, D, b, W], z = null - } else if ("S" === J || "s" === J) { - for (var R = V(S), L = 0; L < R.length; L += 4) { - var B, c; - p ? (B = 2 * p[4] - p[2], c = 2 * p[5] - p[3]) : (B = g.x, c = g.y); - var T = R[L], - D = R[L + 1], - b = R[L + 2], - W = R[L + 3]; - "s" === J && (T += g.x, D += g.y, b += g.x, W += g.y), q && q.bezierCurveTo(B, c, T, D, b, W), v.push({ - x: B, - y: c - }), v.push({ - x: T, - y: D - }), v.push({ - x: b, - y: W - }), g.x = b, g.y = W - } - p = [B, c, T, D, b, W], z = null - } else if ("Q" === J || "q" === J) { - for (var R = V(S), L = 0; L < R.length; L += 4) { - var B = R[L], - c = R[L + 1], - b = R[L + 2], - W = R[L + 3]; - "q" === J && (B += g.x, c += g.y, b += g.x, W += g.y), q && q.quadraticCurveTo(B, c, b, W), v.push({ - x: B, - y: c - }), v.push({ - x: b, - y: W - }), g.x = b, g.y = W - } - p = null, z = [B, c, b, W] - } else if ("T" === J || "t" === J) { - for (var R = V(S), L = 0; L < R.length; L += 2) { - var B, c; - z ? (B = 2 * z[2] - z[0], c = 2 * z[3] - z[1]) : (B = g.x, c = g.y); - var b = R[L], - W = R[L + 1]; - "t" === J && (b += g.x, W += g.y), q && q.quadraticCurveTo(B, c, b, W), v.push({ - x: B, - y: c - }), v.push({ - x: b, - y: W - }), g.x = b, g.y = W - } - p = null, z = [B, c, b, W] - } else if ("V" === J || "v" === J) { - for (var R = V(S), L = 0; L < R.length; L += 1) { - var W = R[L]; - "v" === J && (W += g.y), q && q.lineTo(g.x, W), v.push({ - x: g.x, - y: W - }), g.y = W - } - p = z = null - } else if ("L" === J || "l" === J) { - for (var R = V(S), L = 0; L < R.length; L += 2) { - var b = R[L], - W = R[L + 1]; - "l" === J && (b += g.x, W += g.y), q && q.lineTo(b, W), v.push({ - x: b, - y: W - }), g.x = b, g.y = W - } - p = z = null - } else if ("A" === J || "a" === J) { - for (var R = V(S), L = 0; L < R.length; L += 7) { - var X = R[L], - o = R[L + 1], - H = R[L + 2], - i = R[L + 3], - y = R[L + 4], - b = R[L + 5], - W = R[L + 6]; - "a" === J && (b += g.x, W += g.y); - var _ = dc(g, X, o, H, i, y, { - x: b, - y: W - }, q); - _ && (v = v.concat(_)), g.x = b, g.y = W - } - p = z = null - } - var O = S.substr(S.length - 1); - ("z" === O || "Z" === O) && q && q.closePath() - } - return v - }, - uq = function (q, Y, O) { - var w, K, c = "L" === Y[0], - g = Y.length; - q.save(), c ? (q.transform(Y[5], Y[6], Y[7], Y[8], Y[9], Y[10]), w = q.createLinearGradient(Y[1], Y[2], Y[3], Y[4]), K = 11) : (q.transform(Y[7], Y[8], Y[9], Y[10], Y[11], Y[12]), w = q.createRadialGradient(Y[1], Y[2], Y[3], Y[4], Y[5], Y[6]), K = 13); - for (var v = q.compGray; g > K;) { - var V = Y[K + 1]; - V = O(V), w.addColorStop(Y[K], v ? u.toGrayColor(V) : V), K += 2 - } - q.fillStyle = w - }, - ok = function (e, J) { - var F = e.s("shape.gradient.pack"); - if (F) { - for (var H = F.length, Q = new Array(H), f = 0; H > f; f++) Q[f] = F[f]; - var M, n, q, Y, E, w, B, N, I, U, $, R, A, m = "L" === Q[0]; - M = m ? 5 : 7, n = Q[M], q = Q[M + 1], Y = Q[M + 2], E = Q[M + 3], w = Q[M + 4], B = Q[M + 5], N = J[0], I = J[1], U = J[2], $ = J[3], R = J[4], A = J[5], Q[M] = N * n + U * q, Q[M + 1] = I * n + $ * q, Q[M + 2] = N * Y + U * E, Q[M + 3] = I * Y + $ * E, Q[M + 4] = N * w + U * B + R, Q[M + 5] = I * w + $ * B + A, e.s("shape.gradient.pack", Q) - } - }, - en = function (T, U, F, m) { - var N = !1; - if (T.beginPath ? T.beginPath() : N = !0, Xo(U) && (U = U._as), Xo(F) && (F = F._as), F && F.length) { - for (var A, $, p, W, B = 0, g = 0, y = F.length; y > g; g++) A = F[g], 1 === A ? ($ = U[B++], T.moveTo($.x, N ? -$.y : $.y)) : 2 === A ? ($ = U[B++], T.lineTo($.x, N ? -$.y : $.y)) : 3 === A ? ($ = U[B++], p = U[B++], T.quadraticCurveTo($.x, N ? -$.y : $.y, p.x, N ? -p.y : p.y)) : 4 === A ? ($ = U[B++], p = U[B++], W = U[B++], T.bezierCurveTo($.x, N ? -$.y : $.y, p.x, N ? -p.y : p.y, W.x, N ? -W.y : W.y)) : 5 === A && T.closePath(); - m && 5 !== A && T.closePath() - } else { - var w, M, j, d = U.length; - if (d > 0) { - for (w = U[0], T.moveTo(w.x, N ? -w.y : w.y), M = 1; d > M; M++) j = U[M], T.lineTo(j.x, N ? -j.y : j.y); - m && T.closePath() - } - } - }, - Yo = function (s, P, G, h) { - if (Xo(s) && (s = s._as), Xo(P) && (P = P._as), P && P.length) { - G = G || Nl; - for (var C, U, N, y, W, _, E, q, k = [], w = F, Y = 0, I = 0, v = P.length; v > I; I++) - if (C = P[I], 1 === C) k.push(w = []), w.push(s[Y++]); - else if (2 === C) w.push(s[Y++]); - else if (3 === C) { - for (U = w[w.length - 1], N = s[Y++], y = s[Y++], _ = 1; G > _; _++) E = Id(_ / G, U.x, N.x, y.x), q = Id(_ / G, U.y, N.y, y.y), w.push({ - x: E, - y: q, - b: !0 - }); - w.push(y) - } else if (4 === C) { - for (U = w[w.length - 1], N = s[Y++], y = s[Y++], W = s[Y++], _ = 1; G > _; _++) E = qg(_ / G, U.x, N.x, y.x, W.x), q = qg(_ / G, U.y, N.y, y.y, W.y), w.push({ - x: E, - y: q, - b: !0 - }); - w.push(W) - } else 5 === C && w.push(w[0]); - return h && 5 !== C && w && w.length > 2 && w.push(w[0]), k - } - return h && s.length > 2 && (s = s.slice(), s.push(s[0])), s ? [s] : [] - }, - fr = function (X, D, L, Z, c, g) { - var n, l, Q, x = zd(D), - B = Z, - J = x[0], - R = x[1], - f = x[2]; - if (L) { - var u = zd(L); - n = u[0] - J, l = u[1] - R, Q = u[2] - f - } else n = 255 - J, l = 255 - R, Q = 255 - f; - for (g || (g = Z > 10 ? 1 : .5, g = 1 > c ? V(g / c, 2) : g), X.save(), X.shadowOffsetX = 0, X.shadowOffsetY = 0, X.shadowBlur = 0, X.shadowColor = 0; - (Z -= g) > 0;) { - var d = 1 - Z / B, - M = J + n * d, - P = R + l * d, - $ = f + Q * d; - M = V(s(M), 255), P = V(s(P), 255), $ = V(s($), 255), X.strokeStyle = "rgb(" + M + "," + P + "," + $ + ")", X.lineWidth = Z, X.stroke() - } - X.restore() - }, - mp = function () { - var y = {}; - return function (O, d) { - var p = O + "-" + d, - a = y[p]; - if (a) return a; - var u, T, b, L = zd(O); - return 0 > d ? (d = (100 + d) / 100, u = s(L[0] * d), T = s(L[1] * d), b = s(L[2] * d)) : (d /= 100, u = L[0], T = L[1], b = L[2], u += (255 - u) * d, T += (255 - T) * d, b += (255 - b) * d, u = V(s(u), 255), T = V(s(T), 255), b = V(s(b), 255)), y[p] = "rgb(" + u + "," + T + "," + b + ")" - } - }(), - fl = function (D, e, d, f, k, c) { - c && (D.fillStyle = c), D.beginPath(), D.rect(e, d, f, k), D.fill() - }, - Ej = function (x, j, Q, M, R, t, K) { - x.beginPath(), Eg[j](x, Q.x, Q.y, Q.width, Q.height, M, R, t, K) - }, - Ge = function (M, V, S, Q, T) { - var m = Eg[S]; - M.fillStyle = m ? m(M, V, Q ? Q : Cn, T.x, T.y, T.width, T.height) : V - }, - fg = function (Y, Q, u, v, S, q) { - Y.fillStyle = am(Y, Q, u, v, S, q) - }, - qb = function (t, I, T, M, w, l) { - t.strokeStyle = am(t, I, T, M, w, l) - }, - am = function (k, I, o, x, F, J) { - var f; - try { - if (!I.tagName && I.comps) { - I._cacheImage_ || (I._cacheImage_ = {}); - var y; - y = "override" === x ? "colors_override" : "override_rgb" === x ? "colors_override_rgb" : "override_a" === x ? "colors_override_a" : "colors", I._cacheImage_[y] || (I._cacheImage_[y] = { - __count__: 0 - }); - var H = I._cacheImage_[y][o]; - H || (I._cacheImage_[y].__count__ > u.imageCacheThreshold && (I._cacheImage_[y] = { - __count__: 0 - }), H = O.Default.toCanvas(I, xc(I), oo(I), null, F, J, o, null, x), I._cacheImage_[y][o] = H, I._cacheImage_[y].__count__++), I = H - } - f = k.createPattern(I, "repeat") - } catch (w) { - f = "black" - } - return f - }, - Gh = function (r) { - var z, $, v = [], - n = 0, - U = r.length; - for (z = 0; 65 > z; z++) v[z] = z; - for (z = 0; 65 > z; z++) n = (n + v[z] + r.charCodeAt(z % U)) % 65, $ = v[z], v[z] = v[n], v[n] = $; - for (z = 0; 65 > z; z++) v[z] = Of[v[z]]; - return v.join("") - }, - bn = function (T) { - for (var q = 8 + Rc.randomInt(8), j = Of[8 * Rc.randomInt(8) + (q - 8)], P = "", i = 0; q > i; i++) P += Of[Rc.randomInt(64)]; - var w = Gh(P + Y + zl + Yk); - return j + P + Nq.encode(T, w) - }, - _o = function (N) { - var H = N[0], - P = Of.indexOf(H); - if (0 > P) return ""; - P = 8 + (7 & P); - var h = N.slice(1, 1 + P), - q = Gh(h + Y + zl + Yk); - return Nq.decode(N, q, 1 + P) - }, - Xr = function (X, Z, D, r, O, E, p) { - X.save(), X.translate(Z, D), X.scale(1, p / E), X.arc(0, 0, E, r, O), X.restore() - }, - mo = function (L, t, g, e, y, U, Z, _) { - var I, P, m, b, r, $, D, f, N, M, A; - if (X(y) > 2 * W && (y = 2 * W), r = s(X(y) / (W / 4)), I = y / r, P = -I, m = -e, r > 0) { - $ = t + k(e) * U, D = g + n(-e) * Z, _ ? L.lineTo($, D) : L.moveTo($, D); - for (var i = 0; r > i; i++) m += P, b = m - P / 2, f = t + k(m) * U, N = g + n(m) * Z, M = t + k(b) * (U / k(P / 2)), A = g + n(b) * (Z / k(P / 2)), L.quadraticCurveTo(M, A, f, N) - } - }, - pg = function ($, k, P, r, X, x, c, O, G) { - 6 === arguments.length && (c = x, O = x, G = x); - var M = k + r, - n = P + X, - v = X > r ? 2 * r : 2 * X; - x = v > x ? x : v, c = v > c ? c : v, O = v > O ? O : v, G = v > G ? G : v; - var q = .29 * G, - Y = .58 * G; - $.moveTo(M, n - G), $.quadraticCurveTo(M, n - Y, M - q, n - q), $.quadraticCurveTo(M - Y, n, M - G, n), q = .29 * O, Y = .58 * O, $.lineTo(k + O, n), $.quadraticCurveTo(k + Y, n, k + q, n - q), $.quadraticCurveTo(k, n - Y, k, n - O), q = .29 * x, Y = .58 * x, $.lineTo(k, P + x), $.quadraticCurveTo(k, P + Y, k + q, P + q), $.quadraticCurveTo(k + Y, P, k + x, P), q = .29 * c, Y = .58 * c, $.lineTo(M - c, P), $.quadraticCurveTo(M - Y, P, M - q, P + q), $.quadraticCurveTo(M, P + Y, M, P + c), $.lineTo(M, n - G) - }, - Ie = function (f, g, w, c, v, J, b) { - g && (w = A(w), c = A(c), b || (b = 1), f.fillStyle = g, f.beginPath(), f.rect(w, c, b, J), f.rect(w, c, v, b), J - b > 0 && f.rect(w, c + J - b, v, b), v - b > 0 && f.rect(w + v - b, c, b, J), f.fill()) - }, - Wq = function (o, N, m, K) { - var U = K.x, - M = K.y, - I = K.width, - j = K.height; - if (!(!N || !m || 0 >= I || 0 >= j)) { - var _, t = Ee(N), - q = cn(N), - $ = m > 0; - 1 === m || -1 === m ? (o.fillStyle = $ ? t : q, o.beginPath(), o.rect(U, M, 1, j), o.rect(U, M, I, 1), o.fill(), o.fillStyle = $ ? q : t, o.beginPath(), o.rect(U, M + j - 1, I, 1), o.rect(U + I - 1, M, 1, j), o.fill()) : (m = V(X(m), V(I / 2, j / 2)), _ = o.createLinearGradient(U, M, U + m, M), _.addColorStop(0, $ ? t : q), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U, M), o.lineTo(U + m, M + m), o.lineTo(U + m, M + j - m), o.lineTo(U, M + j), o.lineTo(U, M), o.fill(), _ = o.createLinearGradient(U, M, U, M + m), _.addColorStop(0, $ ? t : q), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U, M), o.lineTo(U + m, M + m), o.lineTo(U + I - m, M + m), o.lineTo(U + I, M), o.lineTo(U, M), o.fill(), _ = o.createLinearGradient(U, M + j, U, M + j - m), _.addColorStop(0, $ ? q : t), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U, M + j), o.lineTo(U + m, M + j - m), o.lineTo(U + I - m, M + j - m), o.lineTo(U + I, M + j), o.lineTo(U, M + j), o.fill(), _ = o.createLinearGradient(U + I, M, U + I - m, M), _.addColorStop(0, $ ? q : t), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U + I, M), o.lineTo(U + I - m, M + m), o.lineTo(U + I - m, M + j - m), o.lineTo(U + I, M + j), o.lineTo(U + I, M), o.fill()) - } - }, - Hf = function (L, m, r, s, h, i, B) { - var A = L.createLinearGradient(s, h, i, B); - return A.addColorStop(0, r), A.addColorStop(1, m), A - }, - Nd = function ($, B, i, W, j, H, t) { - var U = $.createLinearGradient(W, j, H, t); - return U.addColorStop(0, B), U.addColorStop(.5, i), U.addColorStop(1, B), U - }, - Dl = function (W, O, L, u, $, N, y) { - var P = W.createLinearGradient(u, $, N, y); - return P.addColorStop(0, O), P.addColorStop(1 / 3, L), P.addColorStop(2 / 3, O), P.addColorStop(1, L), P - }, - Ni = function (O, i, A, I, D, z, F, X, U) { - var c = O.createRadialGradient(I + z * X, D + F * U, V(z, F) / 24, I + z / 2, D + F / 2, q(z, F) / 2); - return c.addColorStop(0, A), c.addColorStop(1, i), c - }, - og = [0, -1, .22451398828979272, -.30901699437494734, .9510565162951535, -.30901699437494745, .3632712640026804, .11803398874989468, .5877852522924731, .8090169943749473, -1.1102230246251565e-16, .38196601125010515, -.587785252292473, .8090169943749475, -.3632712640026805, .1180339887498949, -.9510565162951536, -.3090169943749473, -.22451398828979285, -.30901699437494734], - Eg = { - polygon: function (L, N, X, t, c, h) { - (h == F || 3 > h) && (h = 6); - for (var l, p, q = V(t, c) / 2, z = N + t / 2, B = X + c / 2, b = 0, K = 2 * W / h, y = 0; h > y; y++) l = z + k(b) * q, p = B + n(b) * q, 0 === y ? L.moveTo(l, p) : L.lineTo(l, p), b += K; - L.closePath() - }, arc: function (j, c, p, k, T, d, K, m, t) { - d == F && (d = W), K == F && (K = $), m == F && (m = !0); - var J = c + k / 2, - E = p + T / 2; - m && j.moveTo(J, E), t ? Xr(j, J, E, d, K, k / 2, T / 2) : j.arc(J, E, V(k, T) / 2, d, K), m && j.closePath() - }, rect: function (A, i, x, G, U) { - A.rect(i, x, G, U) - }, circle: function (n, g, I, i, s) { - n.arc(g + i / 2, I + s / 2, V(i, s) / 2, 0, $, !0) - }, oval: function (y, J, v, I, H) { - Xr(y, J + I / 2, v + H / 2, 0, $, I / 2, H / 2) - }, roundRect: function (E, m, R, Q, y, w) { - w == F && (w = V(V(Q, y) / 4, 8)), pg(E, m, R, Q, y, w) - }, star: function (I, B, F, z, x) { - var L = 2 * z, - t = 2 * x, - E = B + z / 2, - o = F + x / 2; - I.moveTo(E - L / 4, o - t / 12), I.lineTo(B + .306 * z, F + .579 * x), I.lineTo(E - L / 6, o + t / 4), I.lineTo(B + z / 2, F + .733 * x), I.lineTo(E + L / 6, o + t / 4), I.lineTo(B + .693 * z, F + .579 * x), I.lineTo(E + L / 4, o - t / 12), I.lineTo(B + .611 * z, F + .332 * x), I.lineTo(E + 0, o - t / 4), I.lineTo(B + .388 * z, F + .332 * x), I.closePath() - }, pentagram: function (F, T, a, L, U) { - var m = .5 * U, - Q = T + .5 * L, - Z = a + m, - W = .5257311121191336 * L; - W > m && (W = m); - var R = og, - K = 0; - for (F.moveTo(Q + W * R[K++], Z + W * R[K++]); 20 > K;) F.lineTo(Q + W * R[K++], Z + W * R[K++]); - F.closePath() - }, triangle: function (D, j, H, O, T) { - D.moveTo(j + O / 2, H), D.lineTo(j + O, H + T), D.lineTo(j, H + T), D.closePath() - }, hexagon: function (_, i, Z, r, f) { - _.moveTo(i, Z + f / 2), _.lineTo(i + r / 4, Z + f), _.lineTo(i + 3 * r / 4, +Z + f), _.lineTo(i + r, Z + f / 2), _.lineTo(i + 3 * r / 4, Z), _.lineTo(i + r / 4, Z), _.closePath() - }, pentagon: function (i, m, j, p, A) { - var b = 2 * p, - f = 2 * A, - E = m + p / 2, - k = j + A / 2; - i.moveTo(E - b / 4, k - f / 12), i.lineTo(E - b / 6, k + f / 4), i.lineTo(E + b / 6, k + f / 4), i.lineTo(E + b / 4, k - f / 12), i.lineTo(E + 0, k - f / 4), i.closePath() - }, diamond: function (x, l, v, u, n) { - x.moveTo(l + u / 2, v), x.lineTo(l, v + n / 2), x.lineTo(l + u / 2, v + n), x.lineTo(l + u, v + n / 2), x.closePath() - }, rightTriangle: function (N, Z, G, b, L) { - N.moveTo(Z, G), N.lineTo(Z + b, G + L), N.lineTo(Z, G + L), N.closePath() - }, parallelogram: function (Q, g, B, p, k) { - var V = p / 4; - Q.moveTo(g + V, B), Q.lineTo(g + p, B), Q.lineTo(g + p - V, B + k), Q.lineTo(g, B + k), Q.closePath() - }, trapezoid: function (C, D, a, y, m) { - var M = y / 4; - C.moveTo(D + M, a), C.lineTo(D + y - M, a), C.lineTo(D + y, a + m), C.lineTo(D, a + m), C.closePath() - }, "linear.southwest": function (k, R, u, P, i, g, v) { - return Hf(k, R, u, P, i + v, P + g, i) - }, "linear.southeast": function (X, h, r, S, b, e, f) { - return Hf(X, h, r, S + e, b + f, S, b) - }, "linear.northwest": function (e, L, p, K, y, k, U) { - return Hf(e, L, p, K, y, K + k, y + U) - }, "linear.northeast": function (E, D, $, L, V, N, J) { - return Hf(E, D, $, L + N, V, L, V + J) - }, "linear.north": function (t, E, N, q, C, P, J) { - return Hf(t, E, N, q, C, q, C + J) - }, "linear.south": function (w, U, P, m, V, t, L) { - return Hf(w, U, P, m, V + L, m, V) - }, "linear.west": function (H, $, G, d, s, u) { - return Hf(H, $, G, d, s, d + u, s) - }, "linear.east": function (e, l, L, i, t, h) { - return Hf(e, l, L, i + h, t, i, t) - }, "radial.center": function (T, s, S, h, l, Z, U) { - return Ni(T, s, S, h, l, Z, U, .5, .5) - }, "radial.southwest": function (Y, Z, z, n, L, o, a) { - return Ni(Y, Z, z, n, L, o, a, .25, .75) - }, "radial.southeast": function (p, U, m, b, M, d, w) { - return Ni(p, U, m, b, M, d, w, .75, .75) - }, "radial.northwest": function (L, J, G, $, r, w, V) { - return Ni(L, J, G, $, r, w, V, .25, .25) - }, "radial.northeast": function (B, l, J, v, V, f, a) { - return Ni(B, l, J, v, V, f, a, .75, .25) - }, "radial.north": function (F, i, H, n, S, r, K) { - return Ni(F, i, H, n, S, r, K, .5, .25) - }, "radial.south": function (L, h, R, Y, E, a, S) { - return Ni(L, h, R, Y, E, a, S, .5, .75) - }, "radial.west": function (R, V, v, t, C, A, $) { - return Ni(R, V, v, t, C, A, $, .25, .5) - }, "radial.east": function (i, J, r, o, v, j, w) { - return Ni(i, J, r, o, v, j, w, .75, .5) - }, "spread.horizontal": function (H, I, D, z, E, q) { - return Nd(H, I, D, z, E, z + q, E) - }, "spread.vertical": function (I, R, N, o, K, h, P) { - return Nd(I, R, N, o, K, o, K + P) - }, "spread.diagonal": function (A, c, x, B, P, F, d) { - return Nd(A, c, x, B + F, P, B, P + d) - }, "spread.antidiagonal": function (G, C, d, q, p, D, $) { - return Nd(G, C, d, q, p, q + D, p + $) - }, "spread.north": function (A, o, t, z, $, M, c) { - return Dl(A, o, t, z, $ - c / 4, z, $ + c + c / 4) - }, "spread.south": function (E, l, w, N, J, f, r) { - return Dl(E, w, l, N, J - r / 4, N, J + r + r / 4) - }, "spread.west": function (S, P, r, W, G, q) { - return Dl(S, P, r, W - q / 4, G, W + q + q / 4, G) - }, "spread.east": function (D, J, f, w, N, s) { - return Dl(D, f, J, w - s / 4, N, w + s + s / 4, N) - } - }, - Go = function (o, l, _) { - return new In(o).tf(l, _) - }, - zo = function (N) { - var C = N.touches[0], - p = N.touches[1], - B = C.clientX, - b = C.clientY, - z = p.clientX, - J = p.clientY; - return w((B - z) * (B - z) + (b - J) * (b - J)) - }, - ne = function (p) { - var K = p.touches[0], - n = p.touches[1], - T = K.clientX, - e = K.clientY, - O = n.clientX, - x = n.clientY; - return { - x: (T + O) / 2, - y: (e + x) / 2 - } - }, - er = (function () { - for (var Q = 0, F = rj.split(""), L = 0; L < F.length; L++) Q = 10 * Zb(F[L]) + Q; - return $o(x[$r.toString(8 * L) + Bg.substr(L) + 3], x[$r.toString(8 * L) + Bg.substr(L) + 4]), Q - }(), function (M, A, N) { - for (var g = 0; g < N.size(); g++) { - var F = N.get(g); - M.co(F) && A.add(F) - } - for (g = 0; g < N.size(); g++) F = N.get(g), er(M, A, F._children) - }), - no = function (H, N, Y) { - for (var g = 0; g < Y.size(); g++) { - var Z = Y.get(Y.size() - 1 - g); - H.co(Z) && N.add(Z) - } - for (g = 0; g < Y.size(); g++) Z = Y.get(g), no(H, N, Z._children) - }, - ao = function (Z, y, t) { - for (var z = !1, o = 0; o < t.size(); o++) { - var N = t.get(o); - Z.co(N) ? z && y.add(N) : z = 1 - } - for (o = 0; o < t.size(); o++) N = t.get(o), ao(Z, y, N._children) - }, - Tk = function (I, r, Z) { - for (var R = !1, Q = 0; Q < Z.size(); Q++) { - var S = Z.get(Z.size() - 1 - Q); - I.co(S) ? R && r.add(S) : R = !0 - } - for (Q = 0; Q < Z.size(); Q++) S = Z.get(Q), Tk(I, r, S._children) - }, - qc = u.moveDatas = function (j, p, E, o) { - var U = o == F; - if (0 !== p || 0 !== E || !U && 0 !== o) { - var V = !0, - R = []; - if (j.forEach(function (Y) { - V && (Y._69O || yl(Y) || Qb(Y)) && (V = !1) - }), V) R = j; - else { - var O = {}, - l = {}; - j.forEach(function (L) { - O[L._id] = !0 - }); - var y = {}, - g = function (B) { - var H = B._id; - return O[H] ? (R.push(B), y[H] = !0) : y[H] = !1 - }, - a = function (C) { - var W = C._id; - if (l[W]) return g(C); - var N = y[W]; - if (N !== Z) return N; - var q = C._parent; - if (q && (Qb(q) || yl(q)) && a(q)) return y[W] = !0; - var J = C._host; - return J && (l[W] = W, N = a(J), l[W] = Z, N) ? y[W] = !0 : g(C) - }; - j.forEach(function (S) { - a(S) - }) - } - R.forEach(function (k) { - if (Fq(k)) U ? k.translate(p, E) : k.translate3d(p, E, o); - else { - var W = k.s(Ei); - if (!W || W.isEmpty()) return; - var y = new xr; - W.each(function (b) { - b = Pm(b), U ? (b.x += p, b.y += E) : (b.x += p, b.y += o, b.e == F ? b.e = E : b.e += E), y.add(b) - }), k.s(Ei, y) - } - }) - } - }, - Vg = function () { - function n(e, P) { - return P === e.substring(0, P.length) ? !0 : !1 - } - - function f(K) { - return parseFloat(K) || 0 - } - - function b(D, q) { - if (q == Z && (q = new br), n(D, "matrix3d")) { - var m = D.substring(9, D.length - 1).split(","); - m = m.map(f), q.fromArray(m) - } else if (n(D, "matrix")) { - var m = D.substring(7, D.length - 1).split(","); - m = m.map(f), q.el[0] = m[0], q.el[1] = m[1], q.el[2] = 0, q.el[3] = 0, q.el[4] = m[2], q.el[5] = m[3], q.el[6] = 0, q.el[7] = 0, q.el[8] = 0, q.el[9] = 0, q.el[10] = 1, q.el[11] = 0, q.el[12] = m[4], q.el[13] = m[5], q.el[14] = 0, q.el[15] = 1 - } - return q - } - - function j(O, W) { - W == Z && (W = new tl); - var z = O.split(/\s+/); - return z = z.map(f), W.set(z[0] || 0, z[1] || 0, z[2] || 0), W - } - var H, M, w, A, h, R = function (W, c) { - H || (H = new br, M = new tl, w = new br, A = new br, h = new br), c == Z && (c = new br); - var P = getComputedStyle(W); - P.transform && "none" !== P.transform && (b(P.transform, H), j(P.transformOrigin, M), A.setPosition(M), M.negate(), h.setPosition(M), (Uq || "preserve-3d" !== P.transformStyle) && (H.el[8] = 0, H.el[9] = 0, H.el[10] = 1, H.el[11] = 0), c.multiplyMatrices(h, c), c.multiplyMatrices(H, c), c.multiplyMatrices(A, c)), !Uq && P.perspective && "none" !== P.perspective && (w.el[11] = -1 / f(P.perspective), j(P.perspectiveOrigin, M), A.setPosition(M), M.negate(), h.setPosition(M), c.multiplyMatrices(h, c), c.multiplyMatrices(w, c), c.multiplyMatrices(A, c)); - for (var C = W.offsetParent, s = W.offsetLeft, n = W.offsetTop, x = W.parentElement; x && x !== C;) { - var q = getComputedStyle(x); - if ("none" !== q.transform || "none" !== q.perspective) break; - x = x.parentElement - } - return x == Z && W !== W.ownerDocument.documentElement && "fixed" !== P.position && (x = W.ownerDocument.documentElement), C != Z && C !== x && (s -= x.offsetLeft, n -= x.offsetTop), M.set(s, n, 0), A.setPosition(M), c.multiplyMatrices(A, c), x && R(x, c), c - }; - return function (g, a) { - var O = g.parentElement; - if (O) { - var V = O.updateAppendMatrix; - if (V) { - delete O.updateAppendMatrix; - var S = new br; - R(O, S); - var J = new br; - J.getInverse(S), O._matrixAppend = J, O._maxrixPreAppend = S - } - return a ? O._matrixAppend : O._maxrixPreAppend - } - } - }(), - Jm = function (b, p) { - for (; b && !b.hasOwnProperty(p);) b = o.getPrototypeOf(b); - return b && o.getOwnPropertyDescriptor(b, p) - }, - Ug = o.getPrototypeOf ? function (n, p, W) { - var C = Jm(p, W); - C && o.defineProperty(n, W, C) - } : function (v, f, S) { - v[S] = f[S] - }, - cg = { - 1: 29, - 2: 30, - 3: 31, - 4: 32, - 5: 33, - 6: 26, - 7: 27, - 8: 28, - 9: 21, - 10: 22, - 11: 23, - 12: 24, - 13: 25, - 14: 14, - 15: 15, - 16: 16, - 17: 17, - 18: 18, - 19: 19, - 20: 20, - 21: 9, - 22: 10, - 23: 11, - 24: 12, - 25: 13, - 26: 6, - 27: 7, - 28: 8, - 29: 1, - 30: 2, - 31: 3, - 32: 4, - 33: 5, - 34: 36, - 35: 37, - 36: 34, - 37: 35, - 38: 54, - 39: 55, - 40: 52, - 41: 53, - 42: 50, - 43: 51, - 44: 49, - 50: 42, - 51: 43, - 52: 40, - 53: 41, - 54: 38, - 55: 39 - }, - Re = function () { - var Q = { - 1: function (Z, z) { - return { - x: Z.x - z.width / 2, - y: Z.y - z.height / 2 - } - }, 2: function (i, e) { - return { - x: i.x + e.width / 2, - y: i.y - e.height / 2 - } - }, 3: function (k, F) { - return { - x: k.x + k.width / 2, - y: k.y - F.height / 2 - } - }, 4: function (L, F) { - return { - x: L.x + L.width - F.width / 2, - y: L.y - F.height / 2 - } - }, 5: function (g, l) { - return { - x: g.x + g.width + l.width / 2, - y: g.y - l.height / 2 - } - }, 6: function (r) { - return { - x: r.x, - y: r.y - } - }, 7: function (N) { - return { - x: N.x + N.width / 2, - y: N.y - } - }, 8: function (Z) { - return { - x: Z.x + Z.width, - y: Z.y - } - }, 9: function (U, V) { - return { - x: U.x - V.width / 2, - y: U.y + V.height / 2 - } - }, 10: function (n, M) { - return { - x: n.x + M.width / 2, - y: n.y + M.height / 2 - } - }, 11: function (D, w) { - return { - x: D.x + D.width / 2, - y: D.y + w.height / 2 - } - }, 12: function (E, u) { - return { - x: E.x - u.width / 2 + E.width, - y: E.y + u.height / 2 - } - }, 13: function (Y, P) { - return { - x: Y.x + Y.width + P.width / 2, - y: Y.y + P.height / 2 - } - }, 14: function (A, U) { - return { - x: A.x - U.width / 2, - y: A.y + A.height / 2 - } - }, 15: function (b) { - return { - x: b.x, - y: b.y + b.height / 2 - } - }, 16: function (e, p) { - return { - x: e.x + p.width / 2, - y: e.y + e.height / 2 - } - }, 17: function (y) { - return { - x: y.x + y.width / 2, - y: y.y + y.height / 2 - } - }, 18: function (L, s) { - return { - x: L.x + L.width - s.width / 2, - y: L.y + L.height / 2 - } - }, 19: function (y) { - return { - x: y.x + y.width, - y: y.y + y.height / 2 - } - }, 20: function (R, c) { - return { - x: R.x + R.width + c.width / 2, - y: R.y + R.height / 2 - } - }, 21: function (S, s) { - return { - x: S.x - s.width / 2, - y: S.y + S.height - s.height / 2 - } - }, 22: function (W, D) { - return { - x: W.x + D.width / 2, - y: W.y + W.height - D.height / 2 - } - }, 23: function (d, a) { - return { - x: d.x + d.width / 2, - y: d.y + d.height - a.height / 2 - } - }, 24: function (J, O) { - return { - x: J.x + J.width - O.width / 2, - y: J.y + J.height - O.height / 2 - } - }, 25: function (C, k) { - return { - x: C.x + C.width + k.width / 2, - y: C.y + C.height - k.height / 2 - } - }, 26: function (x) { - return { - x: x.x, - y: x.y + x.height - } - }, 27: function (W) { - return { - x: W.x + W.width / 2, - y: W.y + W.height - } - }, 28: function (g) { - return { - x: g.x + g.width, - y: g.y + g.height - } - }, 29: function (k, r) { - return { - x: k.x - r.width / 2, - y: k.y + k.height + r.height / 2 - } - }, 30: function (u, B) { - return { - x: u.x + B.width / 2, - y: u.y + u.height + B.height / 2 - } - }, 31: function (H, w) { - return { - x: H.x + H.width / 2, - y: H.y + H.height + w.height / 2 - } - }, 32: function (N, b) { - return { - x: N.x + N.width - b.width / 2, - y: N.y + N.height + b.height / 2 - } - }, 33: function (l, B) { - return { - x: l.x + l.width + B.width / 2, - y: l.y + l.height + B.height / 2 - } - }, 34: function (q, t) { - return { - x: q.x, - y: q.y - t.height / 2 - } - }, 35: function (Y, x) { - return { - x: Y.x + Y.width, - y: Y.y - x.height / 2 - } - }, 36: function (j, q) { - return { - x: j.x, - y: j.y + j.height + q.height / 2 - } - }, 37: function (i, o) { - return { - x: i.x + i.width, - y: i.y + i.height + o.height / 2 - } - }, 38: function (u, x) { - return { - x: u.x + u.width / 4, - y: u.y - x.height / 2 - } - }, 39: function (N, e) { - return { - x: N.x + 3 * N.width / 4, - y: N.y - e.height / 2 - } - }, 40: function (l) { - return { - x: l.x + l.width / 4, - y: l.y - } - }, 41: function (w) { - return { - x: w.x + 3 * w.width / 4, - y: w.y - } - }, 42: function (x, i) { - return { - x: x.x + x.width / 4, - y: x.y + i.height / 2 - } - }, 43: function (A, t) { - return { - x: A.x + 3 * A.width / 4, - y: A.y + t.height / 2 - } - }, 44: function (M, d) { - return { - x: M.x + M.width / 2, - y: M.y + M.height / 2 - d.height / 2 - } - }, 45: function (N) { - return { - x: N.x + N.width / 4, - y: N.y + N.height / 2 - } - }, 46: function (M, w) { - return { - x: M.x + M.width / 2 - w.width / 2, - y: M.y + M.height / 2 - } - }, 47: function (a, E) { - return { - x: a.x + a.width / 2 + E.width / 2, - y: a.y + a.height / 2 - } - }, 48: function (U) { - return { - x: U.x + 3 * U.width / 4, - y: U.y + U.height / 2 - } - }, 49: function (u, L) { - return { - x: u.x + u.width / 2, - y: u.y + u.height / 2 + L.height / 2 - } - }, 50: function (O, J) { - return { - x: O.x + O.width / 4, - y: O.y + O.height - J.height / 2 - } - }, 51: function (l, S) { - return { - x: l.x + 3 * l.width / 4, - y: l.y + l.height - S.height / 2 - } - }, 52: function (j) { - return { - x: j.x + j.width / 4, - y: j.y + j.height - } - }, 53: function (O) { - return { - x: O.x + 3 * O.width / 4, - y: O.y + O.height - } - }, 54: function (W, G) { - return { - x: W.x + W.width / 4, - y: W.y + W.height + G.height / 2 - } - }, 55: function (A, u) { - return { - x: A.x + 3 * A.width / 4, - y: A.y + A.height + u.height / 2 - } - } - }; - return lh(x) ? function (V, Y, O) { - return Q[V](Y, O ? O : nl) - } : void 0 - }(); - Uh(S, { - highlight: "#1ABC9C", - label: "#000", - labelSelect: "#FFF", - transparent: "rgba(0,0,0,0.35)", - titleBackground: "#2C3E50", - titleIconBackground: "#868686", - headerBackground: "#ECF0F1", - headerIconBackground: "#868686", - headerSeparator: "#868686", - headerLine: "#D9D9D9", - background: "#FFF", - disabledBackground: "rgba(255,255,255,0.65)", - toolTipBackground: "#FFFFE0", - rectSelectBorder: "#45C4F9", - rectSelectBackground: "rgba(0,0,0,0.35)", - editPointBorder: "#2C3E50", - editPointBackground: "#D9D9D9", - dash: "#2C3E50", - groupBackground: "#ECF0F1", - groupTitleBackground: "#2C3E50", - gridBackground: "#D9D9D9", - gridCellBorderColor: "#868686", - gridBlockColor: "#868686", - reverse: "#868686", - contentIconBackground: "#868686", - contentLine: "#D9D9D9", - widgetBackground: "#ECF0F1", - widgetBorder: "#D9D9D9", - widgetIconBackground: "#868686", - widgetIconBorder: "#868686", - widgetIconGradient: "#D9D9D9", - widgetIconHighlight: "#43AFF1", - imageBackground: "#3498DB", - imageGradient: "#FFF", - chart: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"] - }, !0); - var vc = S.reverse, - od = S.transparent, - Vh = S.rectSelectBackground, - dm = S.dash, - Kf = S.titleBackground, - Fj = S.titleIconBackground, - Yl = S.headerBackground, - cb = S.headerIconBackground, - Yb = S.headerSeparator, - qj = S.headerLine, - hk = S.contentIconBackground, - rh = S.contentLine, - Em = (S.widgetIconHighlight, S.widgetIconBorder), - Ur = (S.widgetIconGradient, S.imageBackground), - Cn = S.imageGradient, - Bc = S.highlight, - Un = S.label, - Dg = S.labelSelect; - if (false && !x.shutAlert1) { - var ml = new Date, - qn = yh.split("-"), - $n = new Date(ml.getFullYear(), ml.getMonth(), ml.getDate()), - yh = new Date(Zb(qn[0], 10), Zb(qn[1], 10) - 1, Zb(qn[2], 10)), - Pe = $n.getTime(), - of = yh.getTime(), - Wm = Y + "_try", - xi = x.alert; - try { - var Gd = x.localStorage; - if (Gd && xi) - if (of > Pe && 1728e6 > of - Pe) { - var Oc = (of - Pe) / 864e5; - Gd && Gd[Wm] != Oc && (Gd[Wm] = Oc, x.htWillExpire ? xi(x.htWillExpire.replace("{{day}}", Oc)) : xi("HT for Web free trial license will expire in " + Oc + " days, please apply for a new license!")) - } else Pe >= of && (x.htExpired ? xi(x.htExpired) : xi("Your free trial of HT for Web has expired!")), - Gd && delete Gd[Wm] - } catch (bd) { } - } - Math.sign === Z && (Math.sign = function (M) { - return 0 > M ? -1 : M > 0 ? 1 : +M - }); - var Of = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", - Nq = { - encode: function (F, B) { - var p, j, f, G, M, E, i, l = "", - C = 0; - for (F = unescape(encodeURIComponent(F)); C < F.length;) p = F.charCodeAt(C++), j = F.charCodeAt(C++), f = F.charCodeAt(C++), G = p >> 2, M = (3 & p) << 4 | j >> 4, E = (15 & j) << 2 | f >> 6, i = 63 & f, isNaN(j) ? E = i = 64 : isNaN(f) && (i = 64), l = l + B.charAt(G) + B.charAt(M) + B.charAt(E) + B.charAt(i); - return l - }, decode: function (o, I, T) { - for (var u, f, v, i, s, K, V, j = "", y = T || 0; y < o.length;) i = I.indexOf(o.charAt(y++)), s = I.indexOf(o.charAt(y++)), K = I.indexOf(o.charAt(y++)), V = I.indexOf(o.charAt(y++)), u = i << 2 | s >> 4, f = (15 & s) << 4 | K >> 2, v = (3 & K) << 6 | V, j += String.fromCharCode(u), 64 != K && (j += String.fromCharCode(f)), 64 != V && (j += String.fromCharCode(v)); - return j = decodeURIComponent(escape(j)) - }, _utf8_encode: function (a) { - a = a.replace(/\r\n/g, "\n"); - for (var L = "", h = 0; h < a.length; h++) { - var l = a.charCodeAt(h); - 128 > l ? L += String.fromCharCode(l) : l > 127 && 2048 > l ? (L += String.fromCharCode(192 | l >> 6), L += String.fromCharCode(128 | 63 & l)) : (L += String.fromCharCode(224 | l >> 12), L += String.fromCharCode(128 | 63 & l >> 6), L += String.fromCharCode(128 | 63 & l)) - } - return L - }, _utf8_decode: function (k) { - for (var K = "", $ = 0, O = 0, h = 0, B = 0; $ < k.length;) O = k.charCodeAt($), 128 > O ? (K += String.fromCharCode(O), $++) : O > 191 && 224 > O ? (h = k.charCodeAt($ + 1), K += String.fromCharCode((31 & O) << 6 | 63 & h), $ += 2) : (h = k.charCodeAt($ + 1), B = k.charCodeAt($ + 2), K += String.fromCharCode((15 & O) << 12 | (63 & h) << 6 | 63 & B), $ += 3); - return K - } - }, - Xq = [], - Uf = [], - Rc = O.Math = { - generateUUID: function () { - for (var k = [], f = 0; 256 > f; f++) k[f] = (16 > f ? "0" : "") + f.toString(16).toUpperCase(); - return function () { - var r = 0 | 4294967295 * Math.random(), - i = 0 | 4294967295 * Math.random(), - x = 0 | 4294967295 * Math.random(), - z = 0 | 4294967295 * Math.random(); - return k[255 & r] + k[255 & r >> 8] + k[255 & r >> 16] + k[255 & r >> 24] + "-" + k[255 & i] + k[255 & i >> 8] + "-" + k[64 | 15 & i >> 16] + k[255 & i >> 24] + "-" + k[128 | 63 & x] + k[255 & x >> 8] + "-" + k[255 & x >> 16] + k[255 & x >> 24] + k[255 & z] + k[255 & z >> 8] + k[255 & z >> 16] + k[255 & z >> 24] - } - }(), - clamp: function (K, V, v) { - return Math.max(V, Math.min(v, K)) - }, generateIncreasingID: function () { - var e = 0; - return function () { - return ++e - } - }(), - encodeBase64: function (z, g) { - return Nq.encode(z, g || Of) - }, decodeBase64: function (t, z) { - return Nq.decode(t, z || Of) - }, randomArray: function (z, c) { - c = c || z.length; - for (var q = c - 1; q > 0; q--) { - var Y = Math.floor(Math.random() * (q + 1)), - T = z[q]; - z[q] = z[Y], z[Y] = T - } - return z - }, randomInt: function (e, q) { - return q === Z && (q = e, e = 0), e + Math.floor(Math.random() * (q - e)) - }, isPOT: function (H) { - return H > 0 && 0 === (H - 1 & H) - }, nearestPOT: function (A) { - if (!A) return 1; - var p = A; - p--, p |= p >> 1, p |= p >> 2, p |= p >> 4, p |= p >> 8, p |= p >> 16, p++; - var j = p >> 1; - return A - j > p - A ? p : j - }, requestMatrix4: function () { - return Xq.length > 0 ? Xq.pop() : new Rc.Matrix4 - }, releaseMatrix4: function (N) { - Xq.push(N) - }, requestVector3: function () { - return Uf.length > 0 ? Uf.pop() : new Rc.Vector3 - }, releaseVector3: function (b) { - Uf.push(b) - } - }, - Np = O.Matrix = O.Math.Matrix2d = function (W, g, H, G, x) { - this.setFromTransform(W, g, H, G, x) - }, - In = Np; - Np.prototype = {}, Np.prototype.constructor = Np, Np.prototype.set = function (s, d, C, R, K, L) { - return this.a = s, this.b = d, this.c = C, this.d = R, this.tx = K, this.ty = L, this - }, Np.prototype.setFromTransform = function (V, u, T, D, I) { - var Q = this; - if (V === Z) return Q.a = 1, Q.b = 0, Q.c = 0, Q.d = 1, Q.tx = 0, Q.ty = 0, void 0; - V = V || 0; - var U = n(V), - P = k(V); - return D = D || 1, I = I || 1, Q.a = P * D, Q.b = U * D, Q.c = -U * I, Q.d = P * I, Q.tx = u || 0, Q.ty = T || 0, Q - }, Np.prototype.apply = function (h, T) { - T = T || new Xi; - var D = h.x, - j = h.y; - return T.x = this.a * D + this.c * j + this.tx, T.y = this.b * D + this.d * j + this.ty, T - }, Np.prototype.applyInverse = function (p, o) { - o = o || new Xi; - var Q = 1 / (this.a * this.d + this.c * -this.b), - A = p.x, - c = p.y; - return o.x = this.d * Q * A + -this.c * Q * c + (this.ty * this.c - this.tx * this.d) * Q, o.y = this.a * Q * c + -this.b * Q * A + (-this.ty * this.a + this.tx * this.b) * Q, o - }, Np.prototype.translate = function (D, b) { - return this.tx += D, this.ty += b, this - }, Np.prototype.scale = function (b, o) { - return this.a *= b, this.d *= o, this.c *= b, this.b *= o, this.tx *= b, this.ty *= o, this - }, Np.prototype.rotate = function (V) { - var Y = Math.cos(V), - $ = Math.sin(V), - F = this.a, - C = this.c, - b = this.tx; - return this.a = F * Y - this.b * $, this.b = F * $ + this.b * Y, this.c = C * Y - this.d * $, this.d = C * $ + this.d * Y, this.tx = b * Y - this.ty * $, this.ty = b * $ + this.ty * Y, this - }, Np.prototype.appendTranslate = function (c, Y) { - return this.tx += this.a * c + this.c * Y, this.ty += this.b * c + this.d * Y, this - }, Np.prototype.appendScale = function (L, I) { - return this.a *= L, this.d *= I, this.c *= I, this.b *= L, this - }, Np.prototype.appendRotate = function (J) { - if (!J) return this; - var K = Math.cos(J), - X = Math.sin(J), - w = this.a, - h = this.b; - return this.a = w * K + this.c * X, this.b = h * K + this.d * X, this.c = -w * X + this.c * K, this.d = -h * X + this.d * K, this - }, Np.prototype.append = function (X) { - var n = this.a, - W = this.b, - P = this.c, - s = this.d; - return this.a = X.a * n + X.b * P, this.b = X.a * W + X.b * s, this.c = X.c * n + X.d * P, this.d = X.c * W + X.d * s, this.tx = X.tx * n + X.ty * P + this.tx, this.ty = X.tx * W + X.ty * s + this.ty, this - }, Np.prototype.setTransform = function (z, d, q, S, L, n, E, Y, K) { - var J, A, Q, N, P, T, e, a, r, Z; - return P = Math.sin(E), T = Math.cos(E), e = Math.cos(K), a = Math.sin(K), r = -Math.sin(Y), Z = Math.cos(Y), J = T * L, A = P * L, Q = -P * n, N = T * n, this.a = e * J + a * Q, this.b = e * A + a * N, this.c = r * J + Z * Q, this.d = r * A + Z * N, this.tx = z + (q * J + S * Q), this.ty = d + (q * A + S * N), this - }, Np.prototype.prepend = function (d) { - var v = this.tx; - if (1 !== d.a || 0 !== d.b || 0 !== d.c || 1 !== d.d) { - var y = this.a, - w = this.c; - this.a = y * d.a + this.b * d.c, this.b = y * d.b + this.b * d.d, this.c = w * d.a + this.d * d.c, this.d = w * d.b + this.d * d.d - } - return this.tx = v * d.a + this.ty * d.c + d.tx, this.ty = v * d.b + this.ty * d.d + d.ty, this - }, Np.prototype.transform = Np.prototype.prepend, Np.prototype.invert = function () { - var M = this.a, - R = this.b, - Y = this.c, - o = this.d, - a = this.tx, - h = M * o - R * Y; - return this.a = o / h, this.b = -R / h, this.c = -Y / h, this.d = M / h, this.tx = (Y * this.ty - o * a) / h, this.ty = -(M * this.ty - R * a) / h, this - }, Np.prototype.identity = function () { - return this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.tx = 0, this.ty = 0, this - }, Np.prototype.clone = function () { - var o = new Np; - return o.a = this.a, o.b = this.b, o.c = this.c, o.d = this.d, o.tx = this.tx, o.ty = this.ty, o - }, Np.prototype.copy = function (d) { - return d.a = this.a, d.b = this.b, d.c = this.c, d.d = this.d, d.tx = this.tx, d.ty = this.ty, d - }, Np.prototype.tf = function (m, h) { - 1 === arguments.length && (h = m.y, m = m.x); - var J = this; - return { - x: J.a * m + J.c * h + J.tx, - y: J.b * m + J.d * h + J.ty - } - }, Np.prototype.tfi = function (x, q) { - 1 === arguments.length && (q = x.y, x = x.x); - var C = this, - j = 1 / (C.a * C.d + C.c * -C.b); - return { - x: C.d * j * x + -C.c * j * q + (C.ty * C.c - C.tx * C.d) * j, - y: C.a * j * q + -C.b * j * x + (-C.ty * C.a + C.tx * C.b) * j - } - }, Np.IDENTITY = new Np, Np.TEMP_MATRIX = new Np; - var fs = O.Math.Quaternion = function (q, I, f, h) { - this.set(q, I, f, h) - }; - o.assign(fs.prototype, { - set: function (X, R, C, j) { - var f = this; - return f._x = X || 0, f._y = R || 0, f._z = C || 0, f._w = j !== Z ? j : 1, f - }, clone: function () { - return new this.constructor(this._x, this._y, this._z, this._w) - }, copy: function (u) { - var t = this; - return t._x = u._x, t._y = u._y, t._z = u._z, t._w = u._w, t - }, inverse: function () { - return this.conjugate() - }, conjugate: function () { - return this._x *= -1, this._y *= -1, this._z *= -1, this - }, dot: function (N) { - return this._x * N._x + this._y * N._y + this._z * N._z + this._w * N._w - }, lengthSq: function () { - return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w - }, length: function () { - return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w) - }, normalize: function () { - var J = this.length(); - return 0 === J ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (J = 1 / J, this._x = this._x * J, this._y = this._y * J, this._z = this._z * J, this._w = this._w * J), this - }, fromArray: function (S, M) { - M === Z && (M = 0); - var g = this; - return g._x = S[M], g._y = S[M + 1], g._z = S[M + 2], g._w = S[M + 3], this - }, slerp: function (W, L) { - if (0 === L) return this; - if (1 === L) return this.copy(W); - var c = this._x, - Z = this._y, - p = this._z, - E = this._w, - O = E * W._w + c * W._x + Z * W._y + p * W._z; - if (0 > O ? (this._w = -W._w, this._x = -W._x, this._y = -W._y, this._z = -W._z, O = -O) : this.copy(W), O >= 1) return this._w = E, this._x = c, this._y = Z, this._z = p, this; - var G = Math.sqrt(1 - O * O); - if (Math.abs(G) < .001) return this._w = .5 * (E + this._w), this._x = .5 * (c + this._x), this._y = .5 * (Z + this._y), this._z = .5 * (p + this._z), this; - var _ = Math.atan2(G, O), - Q = Math.sin((1 - L) * _) / G, - v = Math.sin(L * _) / G; - return this._w = E * Q + this._w * v, this._x = c * Q + this._x * v, this._y = Z * Q + this._y * v, this._z = p * Q + this._z * v, this - }, setFromAxisAngle: function (r, B) { - var W = B / 2, - A = Math.sin(W); - return this._x = r.x * A, this._y = r.y * A, this._z = r.z * A, this._w = Math.cos(W), this - }, setFromEuler: function (m) { - var R = m._x, - C = m._y, - y = m._z, - v = m._order, - B = Math.cos, - g = Math.sin, - E = B(R / 2), - Z = B(C / 2), - w = B(y / 2), - T = g(R / 2), - u = g(C / 2), - r = g(y / 2); - return "XYZ" === v ? (this._x = T * Z * w + E * u * r, this._y = E * u * w - T * Z * r, this._z = E * Z * r + T * u * w, this._w = E * Z * w - T * u * r) : "YXZ" === v ? (this._x = T * Z * w + E * u * r, this._y = E * u * w - T * Z * r, this._z = E * Z * r - T * u * w, this._w = E * Z * w + T * u * r) : "ZXY" === v ? (this._x = T * Z * w - E * u * r, this._y = E * u * w + T * Z * r, this._z = E * Z * r + T * u * w, this._w = E * Z * w - T * u * r) : "ZYX" === v ? (this._x = T * Z * w - E * u * r, this._y = E * u * w + T * Z * r, this._z = E * Z * r - T * u * w, this._w = E * Z * w + T * u * r) : "YZX" === v ? (this._x = T * Z * w + E * u * r, this._y = E * u * w + T * Z * r, this._z = E * Z * r - T * u * w, this._w = E * Z * w - T * u * r) : "XZY" === v && (this._x = T * Z * w - E * u * r, this._y = E * u * w - T * Z * r, this._z = E * Z * r + T * u * w, this._w = E * Z * w + T * u * r), this - }, setFromRotationMatrix: function (m) { - var S, k = m.el, - t = k[0], - Z = k[4], - F = k[8], - G = k[1], - $ = k[5], - W = k[9], - R = k[2], - Q = k[6], - x = k[10], - A = t + $ + x; - return A > 0 ? (S = .5 / Math.sqrt(A + 1), this._w = .25 / S, this._x = (Q - W) * S, this._y = (F - R) * S, this._z = (G - Z) * S) : t > $ && t > x ? (S = 2 * Math.sqrt(1 + t - $ - x), this._w = (Q - W) / S, this._x = .25 * S, this._y = (Z + G) / S, this._z = (F + R) / S) : $ > x ? (S = 2 * Math.sqrt(1 + $ - t - x), this._w = (F - R) / S, this._x = (Z + G) / S, this._y = .25 * S, this._z = (W + Q) / S) : (S = 2 * Math.sqrt(1 + x - t - $), this._w = (G - Z) / S, this._x = (F + R) / S, this._y = (W + Q) / S, this._z = .25 * S), this - }, setFromToVectors: function () { - var a, w; - return function (d, M) { - return a === Z && (a = new tl), w = d.dot(M) + 1, 1e-7 > w ? (w = 0, Math.abs(d.x) > Math.abs(d.z) ? a.set(-d.y, d.x, 0) : a.set(0, -d.z, d.y)) : a.crossVectors(d, M), this._x = a.x, this._y = a.y, this._z = a.z, this._w = w, this.normalize() - } - }(), - setFromUnitVectors: function () { - var P, Q, h = 1e-6; - return function (g, u) { - return P === Z && (P = new tl), Q = g.dot(u) + 1, h > Q ? (Q = 0, Math.abs(g.x) > Math.abs(g.z) ? P.set(-g.y, g.x, 0) : P.set(0, -g.z, g.y)) : P.crossVectors(g, u), this._x = P.x, this._y = P.y, this._z = P.z, this._w = Q, this.normalize() - } - }(), - multiply: function (S) { - return this.multiplyQuaternions(this, S) - }, premultiply: function (k) { - return this.multiplyQuaternions(k, this) - }, multiplyQuaternions: function (y, W) { - var z = y._x, - L = y._y, - r = y._z, - N = y._w, - o = W._x, - p = W._y, - O = W._z, - Y = W._w; - return this._x = z * Y + N * o + L * O - r * p, this._y = L * Y + N * p + r * o - z * O, this._z = r * Y + N * O + z * p - L * o, this._w = N * Y - z * o - L * p - r * O, this - } - }); - var ye = O.Math.Vector4 = function (F, H, L, N) { - this.x = F || 0, this.y = H || 0, this.z = L || 0, this.w = N !== Z ? N : 1 - }; - o.assign(ye.prototype, { - isVector4: !0, - set: function (r, B, R, s) { - return this.x = r, this.y = B, this.z = R, this.w = s, this - }, setScalar: function (R) { - return this.x = R, this.y = R, this.z = R, this.w = R, this - }, setX: function (F) { - return this.x = F, this - }, setY: function (b) { - return this.y = b, this - }, setZ: function (R) { - return this.z = R, this - }, setW: function (r) { - return this.w = r, this - }, setComponent: function (N, V) { - switch (N) { - case 0: - this.x = V; - break; - case 1: - this.y = V; - break; - case 2: - this.z = V; - break; - case 3: - this.w = V; - break; - default: - throw new Error("index is out of range: " + N) - } - return this - }, getComponent: function (y) { - switch (y) { - case 0: - return this.x; - case 1: - return this.y; - case 2: - return this.z; - case 3: - return this.w; - default: - throw new Error("index is out of range: " + y) - } - }, clone: function () { - return new this.constructor(this.x, this.y, this.z, this.w) - }, copy: function (i) { - return this.x = i.x, this.y = i.y, this.z = i.z, this.w = i.w !== Z ? i.w : 1, this - }, add: function (S, $) { - return $ !== Z ? this.addVectors(S, $) : (this.x += S.x, this.y += S.y, this.z += S.z, this.w += S.w, this) - }, addScalar: function (d) { - return this.x += d, this.y += d, this.z += d, this.w += d, this - }, addVectors: function (J, D) { - return this.x = J.x + D.x, this.y = J.y + D.y, this.z = J.z + D.z, this.w = J.w + D.w, this - }, addScaledVector: function (v, d) { - return this.x += v.x * d, this.y += v.y * d, this.z += v.z * d, this.w += v.w * d, this - }, sub: function (k, l) { - return l !== Z ? this.subVectors(k, l) : (this.x -= k.x, this.y -= k.y, this.z -= k.z, this.w -= k.w, this) - }, subScalar: function (f) { - return this.x -= f, this.y -= f, this.z -= f, this.w -= f, this - }, subVectors: function ($, y) { - return this.x = $.x - y.x, this.y = $.y - y.y, this.z = $.z - y.z, this.w = $.w - y.w, this - }, multiplyScalar: function (m) { - return this.x *= m, this.y *= m, this.z *= m, this.w *= m, this - }, applyMatrix4: function (M) { - var r = this.x, - o = this.y, - v = this.z, - X = this.w, - E = M.el; - return this.x = E[0] * r + E[4] * o + E[8] * v + E[12] * X, this.y = E[1] * r + E[5] * o + E[9] * v + E[13] * X, this.z = E[2] * r + E[6] * o + E[10] * v + E[14] * X, this.w = E[3] * r + E[7] * o + E[11] * v + E[15] * X, this - }, divideScalar: function (O) { - return this.multiplyScalar(1 / O) - }, setAxisAngleFromQuaternion: function (p) { - this.w = 2 * Math.acos(p.w); - var z = Math.sqrt(1 - p.w * p.w); - return 1e-4 > z ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = p.x / z, this.y = p.y / z, this.z = p.z / z), this - }, setAxisAngleFromRotationMatrix: function (c) { - var S, z, k, _, i = .01, - I = .1, - u = c.el, - P = u[0], - g = u[4], - L = u[8], - o = u[1], - f = u[5], - X = u[9], - s = u[2], - x = u[6], - q = u[10]; - if (Math.abs(g - o) < i && Math.abs(L - s) < i && Math.abs(X - x) < i) { - if (Math.abs(g + o) < I && Math.abs(L + s) < I && Math.abs(X + x) < I && Math.abs(P + f + q - 3) < I) return this.set(1, 0, 0, 0), this; - S = Math.PI; - var $ = (P + 1) / 2, - W = (f + 1) / 2, - C = (q + 1) / 2, - Y = (g + o) / 4, - H = (L + s) / 4, - T = (X + x) / 4; - return $ > W && $ > C ? i > $ ? (z = 0, k = .707106781, _ = .707106781) : (z = Math.sqrt($), k = Y / z, _ = H / z) : W > C ? i > W ? (z = .707106781, k = 0, _ = .707106781) : (k = Math.sqrt(W), z = Y / k, _ = T / k) : i > C ? (z = .707106781, k = .707106781, _ = 0) : (_ = Math.sqrt(C), z = H / _, k = T / _), this.set(z, k, _, S), this - } - var M = Math.sqrt((x - X) * (x - X) + (L - s) * (L - s) + (o - g) * (o - g)); - return Math.abs(M) < .001 && (M = 1), this.x = (x - X) / M, this.y = (L - s) / M, this.z = (o - g) / M, this.w = Math.acos((P + f + q - 1) / 2), this - }, min: function (Y) { - return this.x = Math.min(this.x, Y.x), this.y = Math.min(this.y, Y.y), this.z = Math.min(this.z, Y.z), this.w = Math.min(this.w, Y.w), this - }, max: function (f) { - return this.x = Math.max(this.x, f.x), this.y = Math.max(this.y, f.y), this.z = Math.max(this.z, f.z), this.w = Math.max(this.w, f.w), this - }, clamp: function (k, j) { - return this.x = Math.max(k.x, Math.min(j.x, this.x)), this.y = Math.max(k.y, Math.min(j.y, this.y)), this.z = Math.max(k.z, Math.min(j.z, this.z)), this.w = Math.max(k.w, Math.min(j.w, this.w)), this - }, clampScalar: function () { - var v, L; - return function (k, m) { - return v === Z && (v = new ye, L = new ye), v.set(k, k, k, k), L.set(m, m, m, m), this.clamp(v, L) - } - }(), - clampLength: function (r, I) { - var R = this.length(); - return this.divideScalar(R || 1).multiplyScalar(Math.max(r, Math.min(I, R))) - }, floor: function () { - return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this - }, ceil: function () { - return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this - }, round: function () { - return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this - }, roundToZero: function () { - return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z), this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w), this - }, negate: function () { - return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this - }, dot: function (H) { - return this.x * H.x + this.y * H.y + this.z * H.z + this.w * H.w - }, lengthSq: function () { - return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w - }, length: function () { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w) - }, manhattanLength: function () { - return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w) - }, normalize: function () { - return this.divideScalar(this.length() || 1) - }, setLength: function (h) { - return this.normalize().multiplyScalar(h) - }, lerp: function (I, X) { - return this.x += (I.x - this.x) * X, this.y += (I.y - this.y) * X, this.z += (I.z - this.z) * X, this.w += (I.w - this.w) * X, this - }, lerpVectors: function (W, j, q) { - return this.subVectors(j, W).multiplyScalar(q).add(W) - }, equals: function (O) { - return O.x === this.x && O.y === this.y && O.z === this.z && O.w === this.w - }, fromArray: function (E, c) { - return c === Z && (c = 0), this.x = E[c], this.y = E[c + 1], this.z = E[c + 2], this.w = E[c + 3], this - }, toArray: function (K, E) { - return K === Z && (K = []), E === Z && (E = 0), K[E] = this.x, K[E + 1] = this.y, K[E + 2] = this.z, K[E + 3] = this.w, K - }, fromBufferAttribute: function (O, S) { - return this.x = O.getX(S), this.y = O.getY(S), this.z = O.getZ(S), this.w = O.getW(S), this - } - }); - var tl = O.Math.Vector3 = function (F, m, V) { - F === Z ? (this.x = 0, this.y = 0, this.z = 0) : "object" == typeof F ? this.copy(F) : this.set(F, m == Z ? F : m, V == Z ? F : V) - }; - o.assign(tl.prototype, { - isNaN: function () { - return isNaN(this.x) || isNaN(this.y) || isNaN(this.z) - }, set: function (T, g, X) { - return this.x = T, this.y = g, this.z = X, this - }, equals: function (C) { - return C && this.x === C.x && this.y === C.y && this.z === C.z - }, setScalar: function (A) { - return this.x = A, this.y = A, this.z = A, this - }, setX: function (e) { - return this.x = e, this - }, setY: function (X) { - return this.y = X, this - }, setZ: function (s) { - return this.z = s, this - }, clone: function () { - return new this.constructor(this.x, this.y, this.z) - }, copy: function (U) { - return U.x === Z ? (this.x = U[0], this.y = U[1], this.z = U[2]) : (this.x = U.x, this.y = U.y, this.z = U.z || 0), this - }, add: function (i) { - return this.x += i.x, this.y += i.y, this.z += i.z, this - }, addScalar: function (E) { - return this.x += E, this.y += E, this.z += E, this - }, addVectors: function (n, b) { - return this.x = n.x + b.x, this.y = n.y + b.y, this.z = n.z + b.z, this - }, addScaledVector: function (t, p) { - return this.x += t.x * p, this.y += t.y * p, this.z += t.z * p, this - }, sub: function (k) { - return this.x -= k.x, this.y -= k.y, this.z -= k.z, this - }, subScalar: function (X) { - return this.x -= X, this.y -= X, this.z -= X, this - }, subVectors: function (x, $) { - return this.x = x.x - $.x, this.y = x.y - $.y, this.z = x.z - $.z, this - }, divide: function (A) { - return this.x /= A.x, this.y /= A.y, this.z /= A.z, this - }, multiply: function (K) { - return this.x *= K.x, this.y *= K.y, this.z *= K.z, this - }, multiplyScalar: function (m) { - return this.x *= m, this.y *= m, this.z *= m, this - }, distanceTo: function (i) { - return Math.sqrt(this.distanceToSquared(i)) - }, distanceToSquared: function (m) { - var i = this.x - m.x, - Z = this.y - m.y, - G = this.z - m.z; - return i * i + Z * Z + G * G - }, distanceToSquared2: function (f) { - var h = this.x - f[0], - Z = this.y - f[1], - J = this.z - f[2]; - return h * h + Z * Z + J * J - }, divideVectors: function (X, M) { - return this.x = X.x / M.x, this.y = X.y / M.y, this.z = X.z / M.z, this - }, multiplyVectors: function (Z, H) { - return this.x = Z.x * H.x, this.y = Z.y * H.y, this.z = Z.z * H.z, this - }, transformDirection: function (L) { - var G = this.x, - i = this.y, - Y = this.z, - m = L.el; - return this.x = m[0] * G + m[4] * i + m[8] * Y, this.y = m[1] * G + m[5] * i + m[9] * Y, this.z = m[2] * G + m[6] * i + m[10] * Y, this.normalize() - }, applyAxisAngle: function () { - var i = new fs; - return function (Q, u) { - return this.applyQuaternion(i.setFromAxisAngle(Q, u)) - } - }(), - applyEuler: function () { - var n = new fs; - return function (M) { - return this.applyQuaternion(n.setFromEuler(M)) - } - }(), - applyQuaternion: function (C) { - var X = this.x, - h = this.y, - l = this.z, - P = C._x, - o = C._y, - R = C._z, - d = C._w, - q = d * X + o * l - R * h, - i = d * h + R * X - P * l, - z = d * l + P * h - o * X, - j = -P * X - o * h - R * l; - return this.x = q * d + j * -P + i * -R - z * -o, this.y = i * d + j * -o + z * -P - q * -R, this.z = z * d + j * -R + q * -o - i * -P, this - }, applyMatrix4: function (l) { - var v = this.x, - C = this.y, - W = this.z, - R = l.el, - K = 1 / (R[3] * v + R[7] * C + R[11] * W + R[15]); - return this.x = (R[0] * v + R[4] * C + R[8] * W + R[12]) * K, this.y = (R[1] * v + R[5] * C + R[9] * W + R[13]) * K, this.z = (R[2] * v + R[6] * C + R[10] * W + R[14]) * K, this - }, applyMatrix3: function (q) { - var K = this.x, - I = this.y, - U = this.z, - J = q.el; - return this.x = J[0] * K + J[3] * I + J[6] * U, this.y = J[1] * K + J[4] * I + J[7] * U, this.z = J[2] * K + J[5] * I + J[8] * U, this - }, negate: function () { - return this.x = -this.x, this.y = -this.y, this.z = -this.z, this - }, reflect: function () { - var F = new tl; - return function (w) { - return this.sub(F.copy(w).multiplyScalar(2 * this.dot(w))) - } - }(), - dot: function (P) { - return this.x * P.x + this.y * P.y + this.z * P.z - }, lengthSq: function () { - return this.x * this.x + this.y * this.y + this.z * this.z - }, length: function () { - return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z) - }, manhattanLength: function () { - return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) - }, normalize: function () { - var W = this.length(); - return W ? this.multiplyScalar(1 / W) : this - }, setLength: function (G) { - return this.normalize().multiplyScalar(G) - }, fromArray: function (v, O) { - return O === Z && (O = 0), this.x = v[O], this.y = v[O + 1], this.z = v[O + 2], this - }, toArray: function (R, X) { - return R === Z && (R = [0, 0, 0]), X === Z && (X = 0), R[X] = this.x, R[X + 1] = this.y, R[X + 2] = this.z, R - }, cross: function (M) { - return this.crossVectors(this, M) - }, angleTo: function (t) { - var j = this.dot(t) / Math.sqrt(this.lengthSq() * t.lengthSq()); - return j > 1 || -1 > j ? 0 : Math.acos(j) - }, lerp: function (Z, J) { - return this.x += (Z.x - this.x) * J, this.y += (Z.y - this.y) * J, this.z += (Z.z - this.z) * J, this - }, lerpVectors: function (E, K, y) { - return this.subVectors(K, E).multiplyScalar(y).add(E) - }, crossVectors: function (q, O) { - var R = q.x, - H = q.y, - C = q.z, - F = O.x, - z = O.y, - L = O.z; - return this.x = H * L - C * z, this.y = C * F - R * L, this.z = R * z - H * F, this - }, min: function (J) { - return this.x = Math.min(this.x, J.x), this.y = Math.min(this.y, J.y), this.z = Math.min(this.z, J.z), this - }, max: function (W) { - return this.x = Math.max(this.x, W.x), this.y = Math.max(this.y, W.y), this.z = Math.max(this.z, W.z), this - }, setFromMatrixPosition: function (F) { - return this.setFromMatrixColumn(F, 3) - }, setFromMatrixScale: function (K) { - var y = this.setFromMatrixColumn(K, 0).length(), - s = this.setFromMatrixColumn(K, 1).length(), - f = this.setFromMatrixColumn(K, 2).length(); - return this.x = y, this.y = s, this.z = f, this - }, setFromMatrixColumn: function (r, q) { - return this.fromArray(r.el, 4 * q) - } - }); - var Xi = O.Math.Vector2 = function (C, P, G) { - "object" == typeof C && (C.x != Z ? (P = C.y, C = C.x, G = C.e) : (G = C[2], P = C[1], C = C[0])), this.set(C || 0, P || 0, G) - }; - Xi.prototype = {}, Xi.prototype.constructor = Xi, o.defineProperties(Xi.prototype, { - width: { - get: function () { - return this.x - }, set: function (p) { - this.x = p - } - }, - height: { - get: function () { - return this.y - }, set: function (W) { - this.y = W - } - } - }), Xi.prototype.clone = function () { - return new Xi(this.x, this.y, this.e) - }, Xi.prototype.copy = function (I) { - return this.set(I.x, I.y, I.e), this - }, Xi.prototype.equals = function (R) { - return R.x === this.x && R.y === this.y - }, Xi.prototype.set = function (U, w, D) { - return this.x = U || 0, this.y = w || (0 !== w ? this.x : 0), D != Z && (this.e = D), this - }, Xi.prototype.setScalar = function (y) { - return this.x = y, this.y = y, this - }, Xi.prototype.setX = function (b) { - return this.x = b || 0, this - }, Xi.prototype.setY = function (A) { - return this.y = A || 0, this - }, Xi.prototype.add = function (S) { - return this.x += S.x, this.y += S.y, this - }, Xi.prototype.addVectors = function (M, B) { - return this.x = M.x + B.x, this.y = M.y + B.y, this - }, Xi.prototype.addScalar = function (X) { - return this.x += X, this.y += X, this - }, Xi.prototype.addScaledVector = function (o, p) { - return this.x += o.x * p, this.y += o.y * p, this - }, Xi.prototype.sub = function (a) { - return this.x -= a.x, this.y -= a.y, this - }, Xi.prototype.subScalar = function (r) { - return this.x -= r, this.y -= r, this - }, Xi.prototype.subVectors = function (U, H) { - return this.x = U.x - H.x, this.y = U.y - H.y, this - }, Xi.prototype.multiply = function (k) { - return this.x *= k.x, this.y *= k.y, this - }, Xi.prototype.multiplyScalar = function (x) { - return this.x *= x, this.y *= x, this - }, Xi.prototype.divide = function (K) { - return this.x /= K.x, this.y /= K.y, this - }, Xi.prototype.divideScalar = function (H) { - return this.multiplyScalar(1 / H) - }, Xi.prototype.min = function (M) { - return this.x = Math.min(this.x, M.x), this.y = Math.min(this.y, M.y), this - }, Xi.prototype.max = function (Q) { - return this.x = Math.max(this.x, Q.x), this.y = Math.max(this.y, Q.y), this - }, Xi.prototype.fromArray = function (Y, B) { - return B === Z && (B = 0), this.x = Y[B], this.y = Y[B + 1], this - }, Xi.prototype.clamp = function (o, f) { - return this.x = Math.max(o.x, Math.min(f.x, this.x)), this.y = Math.max(o.y, Math.min(f.y, this.y)), this - }, Xi.prototype.clampScalar = function () { - var e, c; - return function (m, _) { - return e === Z && (e = new Xi, c = new Xi), e.set(m, m), c.set(_, _), this.clamp(e, c) - } - }(), Xi.prototype.clampLength = function (e, c) { - var l = this.length(); - return this.multiplyScalar(Math.max(e, Math.min(c, l)) / l) - }, Xi.prototype.dot = function (M) { - return this.x * M.x + this.y * M.y - }, Xi.prototype.lengthSq = function () { - return this.x * this.x + this.y * this.y - }, Xi.prototype.length = function () { - return Math.sqrt(this.x * this.x + this.y * this.y) - }, Xi.prototype.normalize = function () { - return this.divideScalar(this.length()) - }, Xi.prototype.angle = function () { - var P = Math.atan2(this.y, this.x); - return 0 > P && (P += 2 * Math.PI), P - }, Xi.prototype.distanceTo = function ($) { - return Math.sqrt(this.distanceToSquared($)) - }, Xi.prototype.distanceToSquared = function (F) { - var o = this.x - F.x, - v = this.y - F.y; - return o * o + v * v - }, Xi.prototype.isNearEnough = function (S) { - return this.distanceToSquared(S) < 1e-8 - }, Xi.prototype.setLength = function (I) { - var l = this.length(); - return l ? this.multiplyScalar(I / l) : this - }, Xi.prototype.lerp = function (u, p) { - return this.x += (u.x - this.x) * p, this.y += (u.y - this.y) * p, this - }, Xi.prototype.lerpVectors = function (E, Y, s) { - return this.subVectors(Y, E).multiplyScalar(s).add(E) - }, Xi.prototype.rotateAround = function (O, L) { - var q = O ? O.x : 0, - A = O ? O.y : 0, - F = Math.cos(L), - N = Math.sin(L), - a = this.x - q, - c = this.y - A; - return this.x = a * F - c * N + q, this.y = a * N + c * F + A, this - }; - var sm = O.Math.Matrix3 = function () { - this.el = [1, 0, 0, 0, 1, 0, 0, 0, 1] - }; - o.assign(sm.prototype, { - isMatrix3: !0, - set: function (W, D, A, V, T, U, f, $, I) { - var S = this.el; - return S[0] = W, S[1] = V, S[2] = f, S[3] = D, S[4] = T, S[5] = $, S[6] = A, S[7] = U, S[8] = I, this - }, identity: function () { - return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1), this - }, clone: function () { - return (new this.constructor).fromArray(this.el) - }, copy: function (S) { - var W = this.el, - H = S.el; - return W[0] = H[0], W[1] = H[1], W[2] = H[2], W[3] = H[3], W[4] = H[4], W[5] = H[5], W[6] = H[6], W[7] = H[7], W[8] = H[8], this - }, setFromMatrix4: function (P) { - var M = P.el; - return this.set(M[0], M[4], M[8], M[1], M[5], M[9], M[2], M[6], M[10]), this - }, applyToBufferAttribute: function () { - var N = new tl; - return function (U) { - for (var b = 0, j = U.count; j > b; b++) N.x = U.getX(b), N.y = U.getY(b), N.z = U.getZ(b), N.applyMatrix3(this), U.setXYZ(b, N.x, N.y, N.z); - return U - } - }(), - multiply: function (A) { - return this.multiplyMatrices(this, A) - }, premultiply: function (K) { - return this.multiplyMatrices(K, this) - }, multiplyMatrices: function (B, t) { - var r = B.el, - A = t.el, - W = this.el, - N = r[0], - C = r[3], - S = r[6], - o = r[1], - l = r[4], - X = r[7], - F = r[2], - P = r[5], - j = r[8], - D = A[0], - T = A[3], - J = A[6], - e = A[1], - k = A[4], - R = A[7], - s = A[2], - Q = A[5], - v = A[8]; - return W[0] = N * D + C * e + S * s, W[3] = N * T + C * k + S * Q, W[6] = N * J + C * R + S * v, W[1] = o * D + l * e + X * s, W[4] = o * T + l * k + X * Q, W[7] = o * J + l * R + X * v, W[2] = F * D + P * e + j * s, W[5] = F * T + P * k + j * Q, W[8] = F * J + P * R + j * v, this - }, multiplyScalar: function (v) { - var p = this.el; - return p[0] *= v, p[3] *= v, p[6] *= v, p[1] *= v, p[4] *= v, p[7] *= v, p[2] *= v, p[5] *= v, p[8] *= v, this - }, determinant: function () { - var j = this.el, - l = j[0], - q = j[1], - B = j[2], - n = j[3], - t = j[4], - s = j[5], - N = j[6], - H = j[7], - m = j[8]; - return l * t * m - l * s * H - q * n * m + q * s * N + B * n * H - B * t * N - }, getInverse: function (t) { - var L = t.el, - M = this.el, - f = L[0], - D = L[1], - i = L[2], - S = L[3], - E = L[4], - Q = L[5], - o = L[6], - j = L[7], - c = L[8], - B = c * E - Q * j, - w = Q * o - c * S, - N = j * S - E * o, - K = f * B + D * w + i * N; - if (0 === K) return this.identity(); - var F = 1 / K; - return M[0] = B * F, M[1] = (i * j - c * D) * F, M[2] = (Q * D - i * E) * F, M[3] = w * F, M[4] = (c * f - i * o) * F, M[5] = (i * S - Q * f) * F, M[6] = N * F, M[7] = (D * o - j * f) * F, M[8] = (E * f - D * S) * F, this - }, transpose: function () { - var H, $ = this.el; - return H = $[1], $[1] = $[3], $[3] = H, H = $[2], $[2] = $[6], $[6] = H, H = $[5], $[5] = $[7], $[7] = H, this - }, getNormalMatrix: function (w) { - return this.setFromMatrix4(w).getInverse(this).transpose() - }, transposeIntoArray: function (v) { - var B = this.el; - return v[0] = B[0], v[1] = B[3], v[2] = B[6], v[3] = B[1], v[4] = B[4], v[5] = B[7], v[6] = B[2], v[7] = B[5], v[8] = B[8], this - }, setUvTransform: function (r, H, h, R, f, K, P) { - var i = Math.cos(f), - Y = Math.sin(f); - this.set(h * i, h * Y, -h * (i * K + Y * P) + K + r, -R * Y, R * i, -R * (-Y * K + i * P) + P + H, 0, 0, 1) - }, scale: function (p, g) { - var H = this.el; - return H[0] *= p, H[3] *= p, H[6] *= p, H[1] *= g, H[4] *= g, H[7] *= g, this - }, rotate: function (W) { - var R = Math.cos(W), - J = Math.sin(W), - r = this.el, - g = r[0], - O = r[3], - Y = r[6], - w = r[1], - c = r[4], - _ = r[7]; - return r[0] = R * g + J * w, r[3] = R * O + J * c, r[6] = R * Y + J * _, r[1] = -J * g + R * w, r[4] = -J * O + R * c, r[7] = -J * Y + R * _, this - }, translate: function (t, M) { - var o = this.el; - return o[0] += t * o[2], o[3] += t * o[5], o[6] += t * o[8], o[1] += M * o[2], o[4] += M * o[5], o[7] += M * o[8], this - }, equals: function (z) { - for (var M = this.el, Q = z.el, V = 0; 9 > V; V++) - if (M[V] !== Q[V]) return !1; - return !0 - }, fromArray: function (X, J) { - J === Z && (J = 0); - for (var j = 0; 9 > j; j++) this.el[j] = X[j + J]; - return this - }, toArray: function (D, A) { - D === Z && (D = []), A === Z && (A = 0); - var P = this.el; - return D[A] = P[0], D[A + 1] = P[1], D[A + 2] = P[2], D[A + 3] = P[3], D[A + 4] = P[4], D[A + 5] = P[5], D[A + 6] = P[6], D[A + 7] = P[7], D[A + 8] = P[8], D - } - }); - var Io = O.Math.Plane = function (s, S) { - this.normal = s !== Z ? s : new tl(1, 0, 0), this.constant = S !== Z ? S : 0 - }; - o.assign(Io.prototype, { - set: function (L, G) { - return this.normal.copy(L), this.constant = G, this - }, setComponents: function (D, S, E, C) { - return this.normal.set(D, S, E), this.constant = C, this - }, setFromNormalAndCoplanarPoint: function (O, e) { - return this.normal.copy(O), this.constant = -e.dot(this.normal), this - }, setFromCoplanarPoints: function () { - var v = new tl, - c = new tl; - return function (Q, e, o) { - var j = v.subVectors(o, e).cross(c.subVectors(Q, e)).normalize(); - return this.setFromNormalAndCoplanarPoint(j, Q), this - } - }(), - clone: function () { - return (new this.constructor).copy(this) - }, copy: function (h) { - return this.normal.copy(h.normal), this.constant = h.constant, this - }, normalize: function () { - var V = 1 / this.normal.length(); - return this.normal.multiplyScalar(V), this.constant *= V, this - }, negate: function () { - return this.constant *= -1, this.normal.negate(), this - }, distanceToPoint: function (Q) { - return this.normal.dot(Q) + this.constant - }, distanceToSphere: function (r) { - return this.distanceToPoint(r.center) - r.radius - }, projectPoint: function (X, R) { - return R === Z && (R = new tl), R.copy(this.normal).multiplyScalar(-this.distanceToPoint(X)).add(X) - }, intersectLine: function () { - var s = new tl; - return function (r, R) { - R === Z && (R = new tl); - var j = r.delta(s), - L = this.normal.dot(j); - if (0 === L) return 0 === this.distanceToPoint(r.start) ? R.copy(r.start) : Z; - var V = -(r.start.dot(this.normal) + this.constant) / L; - return 0 > V || V > 1 ? Z : R.copy(j).multiplyScalar(V).add(r.start) - } - }(), - intersectsLine: function (D) { - var x = this.distanceToPoint(D.start), - r = this.distanceToPoint(D.end); - return 0 > x && r > 0 || 0 > r && x > 0 - }, intersectsBox: function (K) { - return K.intersectsPlane(this) - }, intersectsSphere: function (L) { - return L.intersectsPlane(this) - }, coplanarPoint: function (V) { - return V === Z && (V = new tl), V.copy(this.normal).multiplyScalar(-this.constant) - }, applyMatrix4: function () { - var C = new tl, - i = new sm; - return function (X, N) { - var $ = N || i.getNormalMatrix(X), - R = this.coplanarPoint(C).applyMatrix4(X), - j = this.normal.applyMatrix3($).normalize(); - return this.constant = -R.dot(j), this - } - }(), - translate: function (Y) { - return this.constant -= Y.dot(this.normal), this - }, equals: function (v) { - return v.normal.equals(this.normal) && v.constant === this.constant - } - }); - var Qi = O.Math.Ray = function (I, V) { - this.origin = I !== Z ? I.clone() : new tl, this.direction = V !== Z ? V.clone() : new tl - }; - o.assign(Qi.prototype, { - set: function (K, n) { - return this.origin.copy(K), this.direction.copy(n), this - }, clone: function () { - return (new this.constructor).copy(this) - }, copy: function (T) { - return this.origin.copy(T.origin), this.direction.copy(T.direction), this.maxHitLen = T.maxHitLen, this - }, at: function (n, r) { - var I = r || new tl; - return I.copy(this.direction).multiplyScalar(n).add(this.origin) - }, setMaxHitLength: function ($) { - this.maxHitLen = $ - }, lookAt: function (o) { - return this.direction.copy(o).sub(this.origin).normalize(), this - }, applyMatrix4: function (U) { - var i = this.maxHitLen; - if (i) { - var L = this.direction.clone().multiplyScalar(i).add(this.origin); - L.applyMatrix4(U) - } - return this.origin.applyMatrix4(U), this.direction.transformDirection(U), i && (this.maxHitLen = this.origin.distanceTo(L)), this - }, intersectSphere: function () { - var s = new tl; - return function (h, K) { - s.subVectors(h.center, this.origin); - var m = s.dot(this.direction), - T = s.dot(s) - m * m, - I = h.radius * h.radius; - if (T > I) return null; - var i = Math.sqrt(I - T), - Y = m - i, - y = m + i; - return 0 > Y && 0 > y ? null : 0 > Y ? this.at(y, K) : this.at(Y, K) - } - }(), - intersectEllipsoid: function () { - var P = new tl, - A = new tl; - return function (s, i) { - P.subVectors(s.center, this.origin), P.divide(s.radius), A.divideVectors(this.direction, s.radius); - var J = A.lengthSq(), - I = P.dot(A), - r = P.dot(P) * J - I * I; - if (r > J) return null; - var H = Math.sqrt(J - r), - l = (I - H) / J, - U = (I + H) / J; - return 0 > l && 0 > U ? null : 0 > l ? this.at(U, i) : this.at(l, i) - } - }(), - intersectBox: function (P, y) { - var T, M, t, w, Q, q, e = 1 / this.direction.x, - $ = 1 / this.direction.y, - u = 1 / this.direction.z, - z = this.origin; - if (e >= 0 ? (T = (P.min.x - z.x) * e, M = (P.max.x - z.x) * e) : (T = (P.max.x - z.x) * e, M = (P.min.x - z.x) * e), $ >= 0 ? (t = (P.min.y - z.y) * $, w = (P.max.y - z.y) * $) : (t = (P.max.y - z.y) * $, w = (P.min.y - z.y) * $), T > w || t > M) return null; - if ((t > T || T !== T) && (T = t), (M > w || M !== M) && (M = w), u >= 0 ? (Q = (P.min.z - z.z) * u, q = (P.max.z - z.z) * u) : (Q = (P.max.z - z.z) * u, q = (P.min.z - z.z) * u), T > q || Q > M) return null; - if ((Q > T || T !== T) && (T = Q), (M > q || M !== M) && (M = q), 0 > M) return null; - var c = T >= 0 ? T : M, - o = this.maxHitLen; - return o && c > o ? null : this.at(c, y) - }, intersectTriangle: function () { - var D = new tl, - L = new tl, - n = new tl, - H = new tl; - return function (E, u, s, d, x) { - L.subVectors(u, E), n.subVectors(s, E), H.crossVectors(L, n); - var w, b = this.direction.dot(H); - if (b > 0) { - if (d) return null; - w = 1 - } else { - if (!(0 > b)) return null; - w = -1, b = -b - } - D.subVectors(this.origin, E); - var B = w * this.direction.dot(n.crossVectors(D, n)); - if (0 > B) return null; - var M = w * this.direction.dot(L.cross(D)); - if (0 > M || B + M > b) return null; - var y = -w * D.dot(H); - if (0 > y) return null; - var z = y / b, - p = this.maxHitLen; - return p && z > p ? null : this.at(z, x) - } - }() - }); - var Hi = O.Math.Box3 = function (i, V) { - this.min = i !== Z ? i : new tl(1 / 0, 1 / 0, 1 / 0), this.max = V !== Z ? V : new tl(-1 / 0, -1 / 0, -1 / 0) - }; - o.assign(Hi.prototype, { - set: function (E, p) { - return this.min.copy(E), this.max.copy(p), this - }, setFromArray: function ($) { - for (var n = 1 / 0, P = 1 / 0, L = 1 / 0, V = -1 / 0, l = -1 / 0, Y = -1 / 0, v = 0, D = $.length; D > v; v += 3) { - var u = $[v], - T = $[v + 1], - Q = $[v + 2]; - n > u && (n = u), P > T && (P = T), L > Q && (L = Q), u > V && (V = u), T > l && (l = T), Q > Y && (Y = Q) - } - return this.min.set(n, P, L), this.max.set(V, l, Y), this - }, setFromPoints: function (p) { - this.makeEmpty(); - for (var D = 0, O = p.length; O > D; D++) this.expandByPoint(p[D]); - return this - }, clone: function () { - return (new this.constructor).copy(this) - }, intersectsBox: function (f) { - return f.max.x < this.min.x || f.min.x > this.max.x || f.max.y < this.min.y || f.min.y > this.max.y || f.max.z < this.min.z || f.min.z > this.max.z ? !1 : !0 - }, copy: function (O) { - return this.min.copy(O.min), this.max.copy(O.max), this - }, makeEmpty: function () { - return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this - }, isEmpty: function () { - return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z - }, expandByPoint: function (Y) { - return this.min.min(Y), this.max.max(Y), this - }, expandByBox: function (p) { - return this.min.min(p.min), this.max.max(p.max), this - }, applyMatrix4: function () { - var w = [new tl, new tl, new tl, new tl, new tl, new tl, new tl, new tl]; - return function (a) { - return this.isEmpty() ? this : (w[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(a), w[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(a), w[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(a), w[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(a), w[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(a), w[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(a), w[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(a), w[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(a), this.setFromPoints(w), this) - } - }() - }); - var Mk = O.Math.Sphere = function (V, v) { - this.center = V !== Z ? V : new tl, this.radius = v !== Z ? v : 0 - }; - o.assign(Mk.prototype, { - set: function (b, z) { - return this.center.copy(b), this.radius = z, this - }, setFromPoints: function () { - var d = new Hi; - return function (T, $) { - var V = this.center; - $ !== Z ? V.copy($) : d.setFromPoints(T).getCenter(V); - for (var M = 0, j = 0, H = T.length; H > j; j++) M = Math.max(M, V.distanceToSquared(T[j])); - return this.radius = Math.sqrt(M), this - } - }(), - clone: function () { - return (new this.constructor).copy(this) - }, copy: function (m) { - return this.center.copy(m.center), this.radius = m.radius, this - }, empty: function () { - return this.radius <= 0 - }, containsPoint: function (Z) { - return Z.distanceToSquared(this.center) <= this.radius * this.radius - }, distanceToPoint: function (s) { - return s.distanceTo(this.center) - this.radius - }, intersectsSphere: function (y) { - var Z = this.radius + y.radius; - return y.center.distanceToSquared(this.center) <= Z * Z - }, intersectsBox: function (Y) { - return Y.intersectsSphere(this) - }, intersectsPlane: function ($) { - return Math.abs($.distanceToPoint(this.center)) <= this.radius - }, clampPoint: function (I, y) { - var L = this.center.distanceToSquared(I); - return y === Z && (y = new tl), y.copy(I), L > this.radius * this.radius && (y.sub(this.center).normalize(), y.multiplyScalar(this.radius).add(this.center)), y - }, getBoundingBox: function (X) { - return X === Z && (X = new Hi), X.set(this.center, this.center), X.expandByScalar(this.radius), X - }, applyMatrix4: function (L) { - return this.center.applyMatrix4(L), this.radius = this.radius * L.getMaxScaleOnAxis(), this - }, translate: function (A) { - return this.center.add(A), this - }, equals: function (j) { - return j.center.equals(this.center) && j.radius === this.radius - } - }); - var Vc = O.Math.Frustum = function (H, F, B, J, r, Q) { - this.planes = [H !== Z ? H : new Io, F !== Z ? F : new Io, B !== Z ? B : new Io, J !== Z ? J : new Io, r !== Z ? r : new Io, Q !== Z ? Q : new Io] - }; - o.assign(Vc.prototype, { - set: function (b, n, w, S, E, Z) { - var d = this.planes; - return d[0].copy(b), d[1].copy(n), d[2].copy(w), d[3].copy(S), d[4].copy(E), d[5].copy(Z), this - }, clone: function () { - return (new this.constructor).copy(this) - }, copy: function (y) { - for (var u = this.planes, g = 0; 6 > g; g++) u[g].copy(y.planes[g]); - return this - }, setFromMatrix: function (L) { - var Q = this.planes, - T = L.el, - u = T[0], - i = T[1], - E = T[2], - A = T[3], - U = T[4], - f = T[5], - c = T[6], - V = T[7], - G = T[8], - q = T[9], - r = T[10], - l = T[11], - J = T[12], - C = T[13], - Z = T[14], - h = T[15]; - return Q[0].setComponents(A - u, V - U, l - G, h - J).normalize(), Q[1].setComponents(A + u, V + U, l + G, h + J).normalize(), Q[2].setComponents(A + i, V + f, l + q, h + C).normalize(), Q[3].setComponents(A - i, V - f, l - q, h - C).normalize(), Q[4].setComponents(A - E, V - c, l - r, h - Z).normalize(), Q[5].setComponents(A + E, V + c, l + r, h + Z).normalize(), this - }, intersectsObject: function () { - var Y = new Mk; - return function (o) { - var K = o.geometry; - return null === K.boundingSphere && K.computeBoundingSphere(), Y.copy(K.boundingSphere).applyMatrix4(o.matrixWorld), this.intersectsSphere(Y) - } - }(), - intersectsSprite: function () { - var K = new Mk; - return function (m) { - return K.center.set(0, 0, 0), K.radius = .7071067811865476, K.applyMatrix4(m.matrixWorld), this.intersectsSphere(K) - } - }(), - intersectsSphere: function (L) { - for (var v = this.planes, O = L.center, Q = -L.radius, s = 0; 6 > s; s++) { - var g = v[s].distanceToPoint(O); - if (Q > g) return !1 - } - return !0 - }, intersectsBox: function () { - var D = new tl; - return function (b) { - for (var Q = this.planes, I = 0; 6 > I; I++) { - var K = Q[I]; - if (D.x = K.normal.x > 0 ? b.max.x : b.min.x, D.y = K.normal.y > 0 ? b.max.y : b.min.y, D.z = K.normal.z > 0 ? b.max.z : b.min.z, K.distanceToPoint(D) < 0) return !1 - } - return !0 - } - }(), - containsPoint: function ($) { - for (var c = this.planes, E = 0; 6 > E; E++) - if (c[E].distanceToPoint($) < 0) return !1; - return !0 - } - }); - var br = O.Math.Matrix4 = function () { - this.el = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] - }; - o.assign(br.prototype, { - set: function (j, F, t, K, Y, A, V, O, P, v, k, w, G, H, B, m) { - var x = this.el; - return x[0] = j, x[4] = F, x[8] = t, x[12] = K, x[1] = Y, x[5] = A, x[9] = V, x[13] = O, x[2] = P, x[6] = v, x[10] = k, x[14] = w, x[3] = G, x[7] = H, x[11] = B, x[15] = m, this - }, clone: function () { - return (new br).fromArray(this.el) - }, fromArray: function (c, Q) { - Q === Z && (Q = 0); - for (var n = this.el, v = 0; 16 > v; v++) n[v] = c[v + Q]; - return this - }, getElements: function () { - return this.el - }, scale: function (w) { - var W = this.el, - H = w.x, - C = w.y, - b = w.z; - return W[0] *= H, W[4] *= C, W[8] *= b, W[1] *= H, W[5] *= C, W[9] *= b, W[2] *= H, W[6] *= C, W[10] *= b, W[3] *= H, W[7] *= C, W[11] *= b, this - }, makeRotationFromEuler: function (K) { - var D = this.el, - M = K._x, - R = K._y, - o = K._z, - X = K._order, - z = Math.cos(M), - I = Math.sin(M), - p = Math.cos(R), - l = Math.sin(R), - Z = Math.cos(o), - i = Math.sin(o); - if ("XYZ" === X) { - var m = z * Z, - r = z * i, - t = I * Z, - f = I * i; - D[0] = p * Z, D[4] = -p * i, D[8] = l, D[1] = r + t * l, D[5] = m - f * l, D[9] = -I * p, D[2] = f - m * l, D[6] = t + r * l, D[10] = z * p - } else if ("YXZ" === X) { - var n = p * Z, - b = p * i, - a = l * Z, - V = l * i; - D[0] = n + V * I, D[4] = a * I - b, D[8] = z * l, D[1] = z * i, D[5] = z * Z, D[9] = -I, D[2] = b * I - a, D[6] = V + n * I, D[10] = z * p - } else if ("ZXY" === X) { - var n = p * Z, - b = p * i, - a = l * Z, - V = l * i; - D[0] = n - V * I, D[4] = -z * i, D[8] = a + b * I, D[1] = b + a * I, D[5] = z * Z, D[9] = V - n * I, D[2] = -z * l, D[6] = I, D[10] = z * p - } else if ("ZYX" === X) { - var m = z * Z, - r = z * i, - t = I * Z, - f = I * i; - D[0] = p * Z, D[4] = t * l - r, D[8] = m * l + f, D[1] = p * i, D[5] = f * l + m, D[9] = r * l - t, D[2] = -l, D[6] = I * p, D[10] = z * p - } else if ("YZX" === X) { - var g = z * p, - T = z * l, - j = I * p, - G = I * l; - D[0] = p * Z, D[4] = G - g * i, D[8] = j * i + T, D[1] = i, D[5] = z * Z, D[9] = -I * Z, D[2] = -l * Z, D[6] = T * i + j, D[10] = g - G * i - } else if ("XZY" === X) { - var g = z * p, - T = z * l, - j = I * p, - G = I * l; - D[0] = p * Z, D[4] = -i, D[8] = l * Z, D[1] = g * i + G, D[5] = z * Z, D[9] = T * i - j, D[2] = j * i - T, D[6] = I * Z, D[10] = G * i + g - } - return D[3] = 0, D[7] = 0, D[11] = 0, D[12] = 0, D[13] = 0, D[14] = 0, D[15] = 1, this - }, makeRotationFromQuaternion: function (R) { - var Y = this.el, - U = R._x, - n = R._y, - S = R._z, - G = R._w, - $ = U + U, - K = n + n, - L = S + S, - F = U * $, - e = U * K, - c = U * L, - X = n * K, - q = n * L, - O = S * L, - w = G * $, - j = G * K, - s = G * L; - return Y[0] = 1 - (X + O), Y[4] = e - s, Y[8] = c + j, Y[1] = e + s, Y[5] = 1 - (F + O), Y[9] = q - w, Y[2] = c - j, Y[6] = q + w, Y[10] = 1 - (F + X), Y[3] = 0, Y[7] = 0, Y[11] = 0, Y[12] = 0, Y[13] = 0, Y[14] = 0, Y[15] = 1, this - }, identity: function () { - return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), this - }, getInverse: function (V) { - var D = this.el, - x = V.el, - k = x[0], - H = x[1], - R = x[2], - Y = x[3], - e = x[4], - v = x[5], - i = x[6], - M = x[7], - $ = x[8], - o = x[9], - y = x[10], - U = x[11], - p = x[12], - h = x[13], - Q = x[14], - u = x[15], - q = o * Q * M - h * y * M + h * i * U - v * Q * U - o * i * u + v * y * u, - K = p * y * M - $ * Q * M - p * i * U + e * Q * U + $ * i * u - e * y * u, - f = $ * h * M - p * o * M + p * v * U - e * h * U - $ * v * u + e * o * u, - w = p * o * i - $ * h * i - p * v * y + e * h * y + $ * v * Q - e * o * Q, - l = k * q + H * K + R * f + Y * w; - if (0 === l) return this.identity(); - var r = 1 / l; - return D[0] = q * r, D[1] = (h * y * Y - o * Q * Y - h * R * U + H * Q * U + o * R * u - H * y * u) * r, D[2] = (v * Q * Y - h * i * Y + h * R * M - H * Q * M - v * R * u + H * i * u) * r, D[3] = (o * i * Y - v * y * Y - o * R * M + H * y * M + v * R * U - H * i * U) * r, D[4] = K * r, D[5] = ($ * Q * Y - p * y * Y + p * R * U - k * Q * U - $ * R * u + k * y * u) * r, D[6] = (p * i * Y - e * Q * Y - p * R * M + k * Q * M + e * R * u - k * i * u) * r, D[7] = (e * y * Y - $ * i * Y + $ * R * M - k * y * M - e * R * U + k * i * U) * r, D[8] = f * r, D[9] = (p * o * Y - $ * h * Y - p * H * U + k * h * U + $ * H * u - k * o * u) * r, D[10] = (e * h * Y - p * v * Y + p * H * M - k * h * M - e * H * u + k * v * u) * r, D[11] = ($ * v * Y - e * o * Y - $ * H * M + k * o * M + e * H * U - k * v * U) * r, D[12] = w * r, D[13] = ($ * h * R - p * o * R + p * H * y - k * h * y - $ * H * Q + k * o * Q) * r, D[14] = (p * v * R - e * h * R - p * H * i + k * h * i + e * H * Q - k * v * Q) * r, D[15] = (e * o * R - $ * v * R + $ * H * i - k * o * i - e * H * y + k * v * y) * r, this - }, makeRotationAxis: function (Z, d) { - var a = Math.cos(d), - o = Math.sin(d), - L = 1 - a, - M = Z.x, - j = Z.y, - x = Z.z, - T = L * M, - Y = L * j; - return this.set(T * M + a, T * j - o * x, T * x + o * j, 0, T * j + o * x, Y * j + a, Y * x - o * M, 0, T * x - o * j, Y * x + o * M, L * x * x + a, 0, 0, 0, 0, 1), this - }, multiply: function (X) { - return this.multiplyMatrices(this, X) - }, premultiply: function (S) { - return this.multiplyMatrices(S, this) - }, multiplyMatrices: function (P, F) { - var W = P.el, - C = F.el, - u = this.el, - s = W[0], - A = W[4], - Q = W[8], - o = W[12], - t = W[1], - S = W[5], - _ = W[9], - N = W[13], - T = W[2], - z = W[6], - j = W[10], - c = W[14], - h = W[3], - d = W[7], - x = W[11], - E = W[15], - l = C[0], - D = C[4], - G = C[8], - B = C[12], - I = C[1], - H = C[5], - M = C[9], - K = C[13], - J = C[2], - r = C[6], - Y = C[10], - e = C[14], - X = C[3], - n = C[7], - L = C[11], - v = C[15]; - return u[0] = s * l + A * I + Q * J + o * X, u[4] = s * D + A * H + Q * r + o * n, u[8] = s * G + A * M + Q * Y + o * L, u[12] = s * B + A * K + Q * e + o * v, u[1] = t * l + S * I + _ * J + N * X, u[5] = t * D + S * H + _ * r + N * n, u[9] = t * G + S * M + _ * Y + N * L, u[13] = t * B + S * K + _ * e + N * v, u[2] = T * l + z * I + j * J + c * X, u[6] = T * D + z * H + j * r + c * n, u[10] = T * G + z * M + j * Y + c * L, u[14] = T * B + z * K + j * e + c * v, u[3] = h * l + d * I + x * J + E * X, u[7] = h * D + d * H + x * r + E * n, u[11] = h * G + d * M + x * Y + E * L, u[15] = h * B + d * K + x * e + E * v, this - }, lookAt: function () { - var u = new tl, - e = new tl, - R = new tl; - return function (E, q, z) { - var r = this.el; - return R.subVectors(E, q), 0 === R.lengthSq() && (R.z = 1), R.normalize(), u.crossVectors(z, R), 0 === u.lengthSq() && (1 === Math.abs(z.z) ? R.x += 1e-4 : R.z += 1e-4, R.normalize(), u.crossVectors(z, R)), u.normalize(), e.crossVectors(R, u), r[0] = u.x, r[4] = e.x, r[8] = R.x, r[1] = u.y, r[5] = e.y, r[9] = R.y, r[2] = u.z, r[6] = e.z, r[10] = R.z, this - } - }(), - extractScale: function () { - var f; - return function (I) { - f === Z && (f = new tl), I === Z && (I = new tl); - var l = f.setFromMatrixColumn(this, 0).length(), - Q = f.setFromMatrixColumn(this, 1).length(), - U = f.setFromMatrixColumn(this, 2).length(); - return I.set(l, Q, U), I - } - }(), - extractRotation: function () { - var p; - return function (o) { - p === Z && (p = new tl), o === Z && (o = new br); - var c = this.el, - f = o.el, - r = 1 / p.setFromMatrixColumn(o, 0).length(), - K = 1 / p.setFromMatrixColumn(o, 1).length(), - A = 1 / p.setFromMatrixColumn(o, 2).length(); - return c[0] = f[0] * r, c[1] = f[1] * r, c[2] = f[2] * r, c[4] = f[4] * K, c[5] = f[5] * K, c[6] = f[6] * K, c[8] = f[8] * A, c[9] = f[9] * A, c[10] = f[10] * A, this - } - }(), - multiplyScalar: function (u) { - var v = this.el; - return v[0] *= u, v[4] *= u, v[8] *= u, v[12] *= u, v[1] *= u, v[5] *= u, v[9] *= u, v[13] *= u, v[2] *= u, v[6] *= u, v[10] *= u, v[14] *= u, v[3] *= u, v[7] *= u, v[11] *= u, v[15] *= u, this - }, getPosition: function (j) { - return j === Z && (j = new tl), j.setFromMatrixColumn(this, 3) - }, setPosition: function (S) { - var h = this.el; - return h[12] = S.x, h[13] = S.y, h[14] = S.z, this - }, toArray: function (g, D) { - g === Z && (g = []), D === Z && (D = 0); - var Y = this.el; - return g[D] = Y[0], g[D + 1] = Y[1], g[D + 2] = Y[2], g[D + 3] = Y[3], g[D + 4] = Y[4], g[D + 5] = Y[5], g[D + 6] = Y[6], g[D + 7] = Y[7], g[D + 8] = Y[8], g[D + 9] = Y[9], g[D + 10] = Y[10], g[D + 11] = Y[11], g[D + 12] = Y[12], g[D + 13] = Y[13], g[D + 14] = Y[14], g[D + 15] = Y[15], g - }, determinant: function () { - var C = this.el, - g = C[0], - q = C[4], - H = C[8], - J = C[12], - s = C[1], - I = C[5], - _ = C[9], - j = C[13], - V = C[2], - N = C[6], - u = C[10], - b = C[14], - d = C[3], - n = C[7], - y = C[11], - S = C[15]; - return d * (+J * _ * N - H * j * N - J * I * u + q * j * u + H * I * b - q * _ * b) + n * (+g * _ * b - g * j * u + J * s * u - H * s * b + H * j * V - J * _ * V) + y * (+g * j * N - g * I * b - J * s * N + q * s * b + J * I * V - q * j * V) + S * (-H * I * V - g * _ * N + g * I * u + H * s * N - q * s * u + q * _ * V) - }, copy: function (e) { - var h = this.el, - n = e.el; - return h[0] = n[0], h[1] = n[1], h[2] = n[2], h[3] = n[3], h[4] = n[4], h[5] = n[5], h[6] = n[6], h[7] = n[7], h[8] = n[8], h[9] = n[9], h[10] = n[10], h[11] = n[11], h[12] = n[12], h[13] = n[13], h[14] = n[14], h[15] = n[15], this - }, compose: function (o, f, T) { - var P = this.el, - H = f._x, - m = f._y, - C = f._z, - Z = f._w, - w = H + H, - G = m + m, - R = C + C, - K = H * w, - Q = H * G, - u = H * R, - X = m * G, - F = m * R, - O = C * R, - $ = Z * w, - e = Z * G, - L = Z * R, - B = T.x, - j = T.y, - z = T.z; - return P[0] = (1 - (X + O)) * B, P[1] = (Q + L) * B, P[2] = (u - e) * B, P[3] = 0, P[4] = (Q - L) * j, P[5] = (1 - (K + O)) * j, P[6] = (F + $) * j, P[7] = 0, P[8] = (u + e) * z, P[9] = (F - $) * z, P[10] = (1 - (K + X)) * z, P[11] = 0, P[12] = o.x, P[13] = o.y, P[14] = o.z, P[15] = 1, this - }, decompose: function () { - var N = new tl, - Y = new br; - return function (k, I, H) { - var F = this.el, - i = N.set(F[0], F[1], F[2]).length(), - p = N.set(F[4], F[5], F[6]).length(), - q = N.set(F[8], F[9], F[10]).length(), - W = this.determinant(); - 0 > W && (i = -i), k.x = F[12], k.y = F[13], k.z = F[14], Y.copy(this); - var n = 1 / i, - o = 1 / p, - c = 1 / q; - return Y.el[0] *= n, Y.el[1] *= n, Y.el[2] *= n, Y.el[4] *= o, Y.el[5] *= o, Y.el[6] *= o, Y.el[8] *= c, Y.el[9] *= c, Y.el[10] *= c, I.setFromRotationMatrix(Y), H.x = i, H.y = p, H.z = q, this - } - }() - }); - var pq = O.Math.Triangle = function (i, N, v) { - this.a = i !== Z ? i : new tl, this.b = N !== Z ? N : new tl, this.c = v !== Z ? v : new tl - }; - o.assign(pq, { - barycoordFromPoint: function () { - var b = new tl, - g = new tl, - C = new tl; - return function (j, m, U, N, V) { - b.subVectors(N, m), g.subVectors(U, m), C.subVectors(j, m); - var Y = b.dot(b), - _ = b.dot(g), - X = b.dot(C), - I = g.dot(g), - q = g.dot(C), - W = Y * I - _ * _, - G = V || new tl; - if (0 === W) return G.set(-2, -1, -1); - var Z = 1 / W, - o = (I * X - _ * q) * Z, - c = (Y * q - _ * X) * Z; - return G.set(1 - o - c, c, o) - } - }() - }); - var gg = O.Math.Euler = function (j, s, H, $, I) { - this.set(j, s, H, $, I) - }; - gg.RotationOrders = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"], gg.DefaultOrder = "XYZ", gg.ReverseOrder = function (U) { - return U = U[2] + U[1] + U[0], U.toUpperCase() - }, o.defineProperties(gg.prototype, { - x: { - get: function () { - return this._x - }, set: function (s) { - this._x = s, this.onChangeCallback() - } - }, - y: { - get: function () { - return this._y - }, set: function (F) { - this._y = F, this.onChangeCallback() - } - }, - z: { - get: function () { - return this._z - }, set: function (q) { - this._z = q, this.onChangeCallback() - } - }, - order: { - get: function () { - return this._order - }, set: function (t) { - this._order = t, this.onChangeCallback() - } - } - }), o.assign(gg.prototype, { - set: function (C, d, e, f, y) { - return ip(C) && (y = e, f = d, e = C[2], d = C[1], C = C[0]), f ? y && (f = gg.ReverseOrder(f)) : f = "ZYX", this._x = C || 0, this._y = d || 0, this._z = e || 0, this._order = f || this._order, this.onChangeCallback(), this - }, clone: function () { - return new this.constructor(this._x, this._y, this._z, this._order) - }, copy: function (O) { - return this._x = O._x, this._y = O._y, this._z = O._z, this._order = O._order, this.onChangeCallback(), this - }, setFromRotationMatrix: function (o, H, X) { - var p = O.Math.clamp, - N = o.el || o, - U = N[0], - E = N[4], - x = N[8], - D = N[1], - F = N[5], - h = N[9], - I = N[2], - Q = N[6], - P = N[10]; - return H = H || this._order, "XYZ" === H ? (this._y = Math.asin(p(x, -1, 1)), Math.abs(x) < .99999 ? (this._x = Math.atan2(-h, P), this._z = Math.atan2(-E, U)) : (this._x = Math.atan2(Q, F), this._z = 0)) : "YXZ" === H ? (this._x = Math.asin(-p(h, -1, 1)), Math.abs(h) < .99999 ? (this._y = Math.atan2(x, P), this._z = Math.atan2(D, F)) : (this._y = Math.atan2(-I, U), this._z = 0)) : "ZXY" === H ? (this._x = Math.asin(p(Q, -1, 1)), Math.abs(Q) < .99999 ? (this._y = Math.atan2(-I, P), this._z = Math.atan2(-E, F)) : (this._y = 0, this._z = Math.atan2(D, U))) : "ZYX" === H ? (this._y = Math.asin(-p(I, -1, 1)), Math.abs(I) < .99999 ? (this._x = Math.atan2(Q, P), this._z = Math.atan2(D, U)) : (this._x = 0, this._z = Math.atan2(-E, F))) : "YZX" === H ? (this._z = Math.asin(p(D, -1, 1)), Math.abs(D) < .99999 ? (this._x = Math.atan2(-h, F), this._y = Math.atan2(-I, U)) : (this._x = 0, this._y = Math.atan2(x, P))) : "XZY" === H ? (this._z = Math.asin(-p(E, -1, 1)), Math.abs(E) < .99999 ? (this._x = Math.atan2(Q, F), this._y = Math.atan2(x, U)) : (this._x = Math.atan2(-h, P), this._y = 0)) : console.warn("unsupported order: " + H), this._order = H, X !== !1 && this.onChangeCallback(), this - }, setFromQuaternion: function () { - var S = new br; - return function (A, c, w) { - return S.makeRotationFromQuaternion(A), this.setFromRotationMatrix(S, c, w) - } - }(), - setFromVector3: function (J, I) { - return this.set(J.x, J.y, J.z, I || this._order) - }, reorder: function () { - var S = new fs; - return function (f) { - return S.setFromEuler(this), this.setFromQuaternion(S, f) - } - }(), - equals: function (O) { - return O._x === this._x && O._y === this._y && O._z === this._z && O._order === this._order - }, fromArray: function (S) { - return this._x = S[0], this._y = S[1], this._z = S[2], S[3] !== Z && (this._order = S[3]), this.onChangeCallback(), this - }, toArray: function (q, w) { - return q === Z && (q = []), w === Z && (w = 0), q[w] = this._x, q[w + 1] = this._y, q[w + 2] = this._z, q[w + 3] = this._order, q - }, toVector3: function (a) { - return a ? a.set(this._x, this._y, this._z) : new tl(this._x, this._y, this._z) - }, onChange: function (W) { - return this.onChangeCallback = W, this - }, onChangeCallback: function () { } - }); - var fb = { - ms_ac: function (L, V) { - for (var C = V.ms_ac, W = 0; W < C.length; W++) em(L, C[W]) - }, ms_listener: function (Y) { - Y.addListeners = function () { - var s = this, - Z = Ec; - u.mockTouch && (Z = Vr.concat(vs).concat(kr)), s.__events__ = Z; - for (var T = 0, D = Z.length; D > T; T++) { - var _ = Z[T]; - "wheel" === _ && !s.handle_wheel && s.handle_mousewheel && (s.handle_wheel = function ($) { - sg(s, $) - }), s["handle_" + _] && ic(_, s.getView(), s) - } - }, Y.removeListeners = function () { - var X = this, - z = X.__events__; - if (z) { - X.__events__ = Z; - for (var c = 0, g = z.length; g > c; c++) X["handle_" + z[c]] && ws(z[c], X.getView(), X) - } - } - }, ms_fire: function (R) { - R.mp = function (A, u, V) { - this.addPropertyChangeListener(A, u, V) - }, R.ump = function (Q, p) { - this.removePropertyChangeListener(Q, p) - }, R.fp = function (k, l, d, A, B) { - return this.firePropertyChange(k, l, d, A, B) - }, R.addPropertyChangeListener = function (y, H, s) { - var F = this; - F._62I || (F._62I = new Yj), F._62I.add(y, H, s) - }, R.removePropertyChangeListener = function (n, y) { - this._62I && this._62I.remove(n, y) - }, R.firePropertyChange = function (b, K, H, g, U) { - if (g) { - if (g(K, H)) return !1 - } else if (K === H) return !1; - var f = this, - P = U || {}; - return P.property = b, P.oldValue = K, P.newValue = H, P.source = f, P.data = f, f._62I && f._62I.fire(P), f.onPropertyChanged && f.onPropertyChanged(P), !0 - } - }, ms_attr: function (A) { - A.a = function (D, N) { - var A = this; - if (2 === arguments.length) A.setAttr(D, N); - else { - if (!xl(D)) return A.getAttr(D); - for (var b in D) A.setAttr(b, D[b]) - } - return A - }, A.getAttr = function (m, p) { - if (p === Z && (p = 1), this._attrObject && m in this._attrObject) return this._attrObject[m]; - if (this.getImage) { - var q = this.getImage(); - if (dk(q) && (q = Oe[q]), xl(q) && "dataBindings" in q) - for (var S = q.dataBindings, r = S.length - 1; r >= 0; r--) { - var b = S[r]; - if (b.attr === m) { - if ("defaultValue" in b) return b.defaultValue; - break - } - } - } - return p ? I[m] : Z - }, A.setAttr = function (q, T) { - var F = this; - F._attrObject || (F._attrObject = {}); - var C = F._attrObject[q]; - T === Z ? delete F._attrObject[q] : F._attrObject[q] = T, F.fp && F.fp("a:" + q, C, T) && F.onAttrChanged && F.onAttrChanged(q, C, T) - }, A.getSerializableAttrs = function () { - var B, p = {}; - for (B in this._attrObject) p[B] = 1; - return p - } - }, ms_bnb: function (v) { - v.getBodyColor = function (G) { - return G.s("body.color") - }, v.getBorderColor = function (S) { - return S.s("border.color") - } - }, _51o: function (h) { - h.mi = function (X, g, k) { - this.addInteractorListener(X, g, k) - }, h.umi = function (O, F) { - this.removeInteractorListener(O, F) - }, h.fi = function (I) { - this.fireInteractorEvent(I) - }, h.addInteractorListener = function (M, F, G) { - var r = this; - r._63I || (r._63I = new Yj), r._63I.add(M, F, G) - }, h.removeInteractorListener = function (B, D) { - this._63I && this._63I.remove(B, D) - }, h.fireInteractorEvent = function (W) { - this._63I && this._63I.fire(W) - }, h.setInteractors = function (A) { - var o = this, - C = o._interactors; - C && C.each(function (T) { - T.tearDown() - }), ip(A) && (A = new xr(A)), o._interactors = A, A && A.each(function (v) { - v.setUp() - }), o.fp("interactors", C, A), o.invalidateSelection() - }, h.getInteractors = function () { - return this._interactors - } - }, _49o: function (T) { - T._44O = F, T._45O = F, T.getTopPainters = function () { - return this._44O - }, T.getBottomPainters = function () { - return this._45O - }, T.addTopPainter = function (u) { - var c = this; - c._44O || (c._44O = new xr), c._44O.contains(u) || (c._44O.add(u), c.redraw && c.redraw()) - }, T.removeTopPainter = function (d) { - var k = this; - k._44O && (k._44O.remove(d), k.redraw && k.redraw()) - }, T.addBottomPainter = function (Q) { - var V = this; - V._45O || (V._45O = new xr), V._45O.contains(Q) || (V._45O.add(Q), V.redraw && V.redraw()) - }, T.removeBottomPainter = function (z) { - var N = this; - N._45O && (N._45O.remove(z), N.redraw && N.redraw()) - }, T._93db = function (Y, M) { - var N = this; - N._45O && N._45O.each(function (b) { - b.draw ? b.draw(Y, M) : b.call(N, Y, M) - }) - }, T._92db = function (_, N) { - var A = this; - A._44O && A._44O.each(function (v) { - v.draw ? v.draw(_, N) : v.call(A, _, N) - }) - } - }, ms_sm: function (l) { - l.sm = function () { - return this.getSelectionModel() - }, l.setSelectableFunc = function (W) { - this.sm().setFilterFunc(W) - }, l.getSelectableFunc = function () { - return this.sm().getFilterFunc() - }, l.getSelectionModel = function () { - var s = this; - return s._selectionModel ? s._selectionModel : s.dm().sm() - }, l.isSelectionModelShared = function () { - return !this._selectionModel - }, l.setSelectionModelShared = function (y) { - var X = this, - n = !X._selectionModel, - S = X.handleSelectionChange, - W = X.dm(); - n !== y && (X.invalidateSelection && X.invalidateSelection(), y ? (W.sm().ms(S, X), X._selectionModel.ums(S, X), X._selectionModel.dispose(), X._selectionModel = F) : (W.sm().ums(S, X), X._selectionModel = new Uc(W), X._selectionModel.ms(S, X)), X.onSelectionModelSharedChanged(), X.fp("selectionModelShared", n, y)) - }, l.onSelectionModelSharedChanged = function () { - var D = this; - D.redraw(), D.invalidateSelection && D.invalidateSelection() - }, l.removeSelection = function () { - var w = this.dm(); - w.beginTransaction(), this.sm().toSelection().each(w.remove, w), w.endTransaction() - }, l.selectAll = function () { - var y = this; - y.sm().ss(y.dm().toDatas(function (o) { - return y.isVisible(o) && y.isSelectable(o) - })) - }, l.isSelected = function (T) { - return this.sm().co(T) - }, l.isSelectedById = function (P) { - var D = this.dm().getDataById(P); - return D ? this.isSelected(D) : !1 - }, l.isSelectable = function (y) { - return this.sm().isSelectable(y) - } - }, ms_tx: function (o) { - o._64I = 0, o._65O = 0, o.isScrollable = function () { - return this.getWidth() < this._64I - }, o._40o = function () { - return this.isScrollable() - }, o.getLogicalPoint = function (T) { - return Nm(T, this._canvas || this._view, this.tx(), this.ty ? this.ty() : 0) - }, o.tx = function (A) { - return A === Z ? this.getTranslateX() : (this.setTranslateX(A), void 0) - }, o.getTranslateX = function () { - return this._65O - }, o.setTranslateX = function (D) { - var C = this, - X = C.getWidth() - C._64I; - X > D && (D = X), D > 0 && (D = 0), D = A(D); - var B = C._65O; - C._65O = D, C.fp(gq, B, D) - } - }, ms_ty: function (k) { - k._23Q = 0, k._66O = 0, k._41o = function () { - return this.getHeight() < this._23Q - }, k.getLogicalPoint = function (Z) { - return Nm(Z, this._canvas || this._view, this.tx ? this.tx() : 0, this.ty()) - }, k.ty = function (Q) { - return Q === Z ? this.getTranslateY() : (this.setTranslateY(Q), void 0) - }, k.getTranslateY = function () { - return this._66O - }, k.setTranslateY = function (x) { - var f = this, - H = f.getHeight() - f._23Q; - H > x && (x = H), x > 0 && (x = 0), x = A(x); - var y = f._66O; - f._66O = x, f.fp(wb, y, x) - } - }, ms_txy: function (o) { - o._65O = 0, o._66O = 0, o.tx = function (f) { - return f === Z ? this.getTranslateX() : (this.setTranslateX(f), void 0) - }, o.ty = function (k) { - return k === Z ? this.getTranslateY() : (this.setTranslateY(k), void 0) - }, o.onTranslateEnded = function () { }, o.setTranslate = function (K, l, o) { - var w = this; - if (o = Il(o)) { - w._65I && w._65I.stop(!0); - var j = w.tx(), - I = w.ty(); - o.action = function (E) { - w.setTranslate(j + (K - j) * E, I + (l - I) * E) - }, o._37o = function () { - delete w._66I, delete w._65I, w.onTranslateEnded() - }, w._66I = 1, w._65I = Sf(o) - } else w.tx(K), w.ty(l) - }, o.getTranslateX = function () { - return this._65O - }, o.setTranslateX = function (w) { - var g = this; - w = g.adjustTranslateX(w); - var I = g._65O; - g._65O = w, g.fp(gq, I, w) - }, o.getTranslateY = function () { - return this._66O - }, o.setTranslateY = function (T) { - var G = this; - T = G.adjustTranslateY(T); - var M = G._66O; - G._66O = T, G.fp(wb, M, T) - }, o.adjustTranslateX = function (c) { - return A(c) - }, o.adjustTranslateY = function (D) { - return A(D) - }, o.translate = function (I, d, h) { - this.setTranslate(this.tx() + I, this.ty() + d, h) - }, o.getLogicalPoint = function (D) { - var m = this; - return Nm(D, this._canvas || m._view, m.tx(), m.ty()) - } - }, ms_dm: function (w) { - w.dm = function (a) { - return a ? (this.setDataModel(a), void 0) : this.getDataModel() - }, w.getDataModel = function () { - return this._dataModel - } - }, ms_lp: function (D) { - D.lp = function (D) { - return this.getLogicalPoint(D) - } - }, ms_v: function (Q) { - Q._disabled = !1, Q.setDisabled = function (K, Q) { - var F = this, - B = F._disabled; - B !== K && (B && (yj(F._63O), delete F._63O), K && (sn(F._view, F._63O = lo(Q)), F.iv()), F._disabled = K, F.fp("disabled", B, K)) - }, Q.isDisabled = function () { - return this._disabled - }, Q.getDisabledDiv = function () { - return this._63O - }, Q.getView = function () { - return this._view - }, Q.addToDOM = function (X) { - var u = this, - m = u.getView(), - Y = m.style; - X = X || U.body, X.appendChild(m), Y.left = "0", Y.right = "0", Y.top = "0", Y.bottom = "0", K(x, "resize", function () { - u.iv() - }), u.iv() - }, Q.getWidth = function () { - return this._view.clientWidth - }, Q.getHeight = function () { - return this._view.clientHeight - }, Q.setWidth = function (R) { - var D = this; - D._view.style.width = R + oe, D.iv(), D.fp && D.fp(ul, F, R) - }, Q.setHeight = function (z) { - var Q = this; - Q._view.style.height = z + oe, Q.iv(), Q.fp && Q.fp(Hh, F, z) - }, Q.setFocus = function (V) { - var G = this, - s = G._currentEditor; - return V && s && (s.getView && (s = s.getView()), s.contains(V.target)) ? !1 : (hr(G._view), G.endEditing && G.endEditing(), G.fireViewEvent("focus"), !0) - }, Q.iv = function (x) { - this.invalidate(x) - }, Q.invalidate = function (z) { - var T = this; - T._68I || (T._68I = 1, $e(T.validate, T, F, z), T.onInvalidated && T.onInvalidated(), T.fireViewEvent("invalidate")) - }, Q.validate = function () { - var r = this, - _ = r._view; - if (r._68I && (delete r._68I, _.parentNode)) - if (0 === _.offsetWidth && 0 === _.offsetHeight && r._67I !== F) r._67I === Z && (r._67I = u.reinvalidateCount), r._67I > 0 ? r._67I-- : r._67I = F, r.iv(); - else { - r.fireViewEvent("beginValidate"), r.validateImpl(), r.onValidated && r.onValidated(), r.fireViewEvent("validate"); - var s = r._63O; - s && (_.lastChild !== s && (yj(s), sn(_, s)), qp(s, 0, 0, r.getWidth(), r.getHeight())), Dd(r), Fo(r), Yi(r) - } - }, Q.layout = function (H, T, h, k) { - 1 === arguments.length ? qp(this, H) : qp(this, H, T, h, k) - }, Q.addViewListener = function (l, Z, V) { - var y = this; - y._67O || (y._67O = new Yj), y._67O.add(l, Z, V) - }, Q.removeViewListener = function (p, M) { - this._67O.remove(p, M) - }, Q.fireViewEvent = function (a) { - var m = this; - m._67O && (dk(a) && (a = { - kind: a - }), m._67O.fire(a)), u.viewListener && u.viewListener(m, a) - } - }, ms_tip: function (c) { - c.setToolTipEnabled = function (M) { - var S = this; - M ? nf || S._13o || (S.enableToolTip(), S.fp("toolTipEnabled", !1, !0)) : S._13o && (S.disableToolTip(), S.fp("toolTipEnabled", !0, !1)) - }, c.isToolTipEnabled = function () { - return !!this._13o - }, c.enableToolTip = function () { - var C = this; - if (!nf && !C._13o) { - C._13o = function (i) { - var J = C.getToolTip(i); - J != F ? u.toolTipContinual && u.isToolTipShowing() ? me(i, J) : (Um(), sq = { - timeout: cd(Xk, gj), - e: i, - info: J - }) : Um() - }; - var h = C.getView(); - K(h, rp, C._13o), K(h, "mouseleave", u.hideToolTip) - } - }, c.disableToolTip = function () { - var w = this; - if (w._13o) { - var K = w.getView(); - b(K, rp, w._13o), b(K, "mouseleave", u.hideToolTip), delete w._13o - } - }, c.getToolTip = function (p) { - var J = this; - if (J.getDataAt) { - var H = J.getDataAt(p); - return H ? H.getToolTip() : F - } - return J.getValue ? J.getValue() : void 0 - } - }, _52o: function (X) { - X._zoom = 1, X._29I = nl, X.zoomIn = function (S, C) { - this.setZoom(this._zoom * lq, S, C) - }, X.zoomOut = function (Y, k) { - this.setZoom(this._zoom / lq, Y, k) - }, X.zoomReset = function (w, u) { - this.setZoom(1, w, u) - }, X.scrollZoomIn = function (v) { - this.setZoom(this._zoom * _f, F, v) - }, X.scrollZoomOut = function (J) { - this.setZoom(this._zoom / _f, F, J) - }, X.pinchZoomIn = function (j) { - this.setZoom(this._zoom * db, F, j) - }, X.pinchZoomOut = function (K) { - this.setZoom(this._zoom / db, F, K) - }, X.adjustZoom = function (m) { - return gh > m ? gh : m > us ? us : m - }, X.getZoom = function () { - return this._zoom - }, X.setZoom = function (c, v, K) { - var _ = this; - if (v = Il(v)) { - _._14o && _._14o.stop(!0); - var p = _._zoom; - v.action = function (j) { - _._96O(p + (c - p) * j, K) - }, v._37o = function () { - delete _._zooming, delete _._14o, _.onZoomEnded() - }, _._zooming = 1, _._14o = Sf(v) - } else _._96O(c, K) - }, X._96O = function (X, b) { - var m = this; - if (X = m.adjustZoom(X), X !== m._zoom) { - m.validate(); - var M = m._29I, - _ = m._zoom; - 0 !== M.width && 0 !== M.height && (b = b ? b : { - x: M.x + M.width / 2, - y: M.y + M.height / 2 - }, m.tx((b.x - M.x) * _ - b.x * X), m.ty((b.y - M.y) * _ - b.y * X)), m._zoom = X, m.fp("zoom", _, X) - } - } - }, ms_edge: function (B) { - B._2I = function (z) { - var q = this; - q._44I || (q._44I = new xr), q._42I || (q._42I = new xr), q._44I.add(z), q._42I.add(z), q._20I() - }, B._4I = function (M) { - var F = this; - F._44I || (F._44I = new xr), F._43I || (F._43I = new xr), F._44I.add(M), F._43I.add(M), F._20I() - }, B._16I = function (x) { - var d = this; - d._44I.remove(x), d._42I.remove(x), d._44I.isEmpty() && delete d._44I, d._42I.isEmpty() && delete d._42I, d._20I() - }, B._18I = function (u) { - var d = this; - d._44I.remove(u), d._43I.remove(u), d._44I.isEmpty() && delete d._44I, d._43I.isEmpty() && delete d._43I, d._20I() - }, B._20I = function () { - var y = this; - if (delete y._45I, !y._44I || y._44I.isEmpty()) return delete y._70O, void 0; - var k; - y._44I.each(function (l) { - l.isLooped() && (k || (k = {}), k[l._id] || (y._45I || (y._45I = new xr), y._45I.add(l), k[l._id] = l)) - }), k ? (y._70O = new xr, y._44I.each(function (A) { - k[A._id] ? "A" === k[A._id] || (k[A._id] = "A", y._70O.add(A)) : y._70O.add(A) - })) : y._70O = y._44I - }, B.hasAgentEdges = function () { - return !!this._49I && !this._49I.isEmpty() - }, B.getSourceAgentEdges = function () { - return this._46I - }, B.getTargetAgentEdges = function () { - return this._47I - }, B._1I = function (F) { - var e = this; - e._46I || (e._46I = new xr), e._48I || (e._48I = new xr), e._46I.add(F), e._48I.add(F), e._19I() - }, B._3I = function (T) { - var H = this; - H._47I || (H._47I = new xr), H._48I || (H._48I = new xr), H._47I.add(T), H._48I.add(T), H._19I() - }, B._15I = function (W) { - var Y = this; - Y._46I.remove(W), Y._48I.remove(W), Y._46I.isEmpty() && delete Y._46I, Y._48I.isEmpty() && delete Y._48I, Y._19I() - }, B._17I = function (B) { - var K = this; - K._47I.remove(B), K._48I.remove(B), K._47I.isEmpty() && delete K._47I, K._48I.isEmpty() && delete K._48I, K._19I() - }, B._19I = function () { - var Y = this; - delete Y._49I; - var b = Y._48I; - if (b && !b.isEmpty()) { - var _ = {}; - b.each(function (G) { - _[G._id] ? Y._49I || (Y._49I = new xr) : _[G._id] = G - }), Y._49I ? b.each(function (c) { - _[c._id] && (Y._49I.add(c), delete _[c._id]) - }) : Y._49I = b - } - }, B.getLoopedEdges = function () { - return this._45I - }, B.getEdges = function () { - return this._70O - }, B.getAgentEdges = function () { - return this._49I - }, B.getSourceEdges = function () { - return this._42I - }, B.getTargetEdges = function () { - return this._43I - }, B._8I = function () { - this._70O && this._70O.each(function (k) { - k._7I() - }) - } - }, ms_shadow: function (c) { - _r.PARAMS.forEach(function (u) { - var k = u.replace(/(^|\.)[a-z]/g, function (e) { - return e[e.length - 1].toUpperCase() - }), - R = k.charAt(0).toLowerCase() + k.substr(1); - c["getShadow" + k] = function () { - return this._getShadowParam(R) - }, c["setShadow" + k] = function (f) { - this._setShadowParam(R, f) - } - }), c.enableShadow = function (D) { - this.shadowMap.setShadow(!0, D) - }, c.disableShadow = function () { - this.shadowMap.setShadow(!1) - }, c._getShadowParam = function (Z) { - return this.shadowMap.getShadow()[Z] - }, c._setShadowParam = function (s, b) { - var f = this._getShadowParam(s), - u = {}; - u[s] = b; - var h = this.shadowMap; - h.setShadow(h.enable, u), this.firePropertyChange("shadow" + s.charAt(0).toUpperCase() + s.substr(1), f, b) - } - } - }; - Uh(u, { - getVersion: function () { - return "7.2.1" - } - }, !0), Uh(u, { - numberDigits: 5, - crossOrigin: "", - baseZIndex: Z, - isTouchable: nf, - mockTouch: !0, - devicePixelRatio: x.devicePixelRatio ? x.devicePixelRatio : 1, - reinvalidateCount: 3, - hitMaxArea: 3e3, - imageCacheThreshold: 20, - autoMakeVisible: !0, - autoHideScrollBar: !0, - disabledOpacity: .4, - disabledBackground: S.disabledBackground, - forceHierarchicalSerialization: !0, - hoverDelay: 600, - clickDelay: 200, - toolTipDelay: 800, - toolTipContinual: !1, - getDragger: function () { - return si - }, lineCap: "butt", - lineJoin: "round", - imageGradient: "linear.northeast", - dashPattern: [16, 16], - blockMinSize: 1, - encodeStringKey: null, - doubleClickSpeed: 500, - doubleClickRange: 1, - doubleTouchRange: 20, - touchMoveThreshold: 10, - animDuration: 200, - animEasing: function (W) { - return W * W - }, labelColor: Un, - labelSelectColor: Dg, - labelFont: "12px arial, sans-serif", - widgetIndent: nf ? 30 : 20, - widgetRowHeight: nf ? 30 : 20, - widgetHeaderHeight: nf ? 32 : 22, - widgetTitleHeight: nf ? 34 : 24, - scrollBarColor: od, - scrollBarSize: 7, - scrollBarTimeout: 1e3, - scrollBarMinLength: 20, - scrollBarInteractiveSize: nf ? 32 : 16, - zoomIncrement: 1.3, - scrollZoomIncrement: 1.05, - pinchZoomIncrement: 1.08, - pinchZoomThreshold: 1, - zoomMax: 20, - zoomMin: .01, - segmentResolution: 12, - shapeResolution: 24, - shapeSide: 24, - intersectionLineRect: Rl, - intersectionLineLine: ti, - isEnter: hd, - isEsc: bj, - isDelete: qq, - isSpace: Cf, - isLeft: Wk, - isUp: Nk, - isRight: _i, - isDown: ri, - isTouchEvent: li, - getTarget: gr, - isString: dk, - isNumber: Bp, - isBoolean: El, - isArray: ip, - isSelectAll: Dq, - isFunction: Mf, - isObject: xl, - getPropertyValue: jq, - setPropertyValue: Di, - addMethod: Uh, - isMobile: function () { - var g; - return function () { - return g !== Z ? g : (g = !1, function (k) { - (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(k) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(k.substr(0, 4))) && (g = !0) - }(navigator.userAgent || navigator.vendor || x.opera), g) - } - }(), - createGradient: function (k, b, L, Z, w, d, H, p) { - var N = Eg[b]; - return N(k, L, Z, w, d, H, p) - }, appendToScreen: function (v) { - v = v.getView ? v.getView() : v, (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement || U.body).appendChild(v) - }, encodeString: function (m) { - return O.Math.encodeBase64(m, u.encodeStringKey) - }, decodeString: function (M) { - return O.Math.decodeBase64(M, u.encodeStringKey) - }, findView: function (L) { - var s = function (F, Y) { - var z = Y._ht; - z && F.push(z); - var v = Y.children, - U = v.length; - if (U) - for (var D = 0; U > D; D++) s(F, v[D]) - }, - r = []; - s(r, U.body); - var G = function (h, H) { - for (var m = "2d" === H ? hg.GraphView : Eh.Graph3dView, l = 0, W = h.length; W > l; l++) - if (h[l] instanceof m) return r[l]; - return null - }; - return "all" === L ? r : "2d" === L ? G(r, "2d") : "3d" === L ? G(r, "3d") : G(r, "3d") || G(r, "2d") - }, toggleFullscreen: function (D) { - var Y = D.getView(); - if (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement) U.exitFullscreen ? U.exitFullscreen() : U.msExitFullscreen ? U.msExitFullscreen() : U.mozCancelFullScreen ? U.mozCancelFullScreen() : U.webkitExitFullscreen && U.webkitExitFullscreen(); - else { - var W = !0; - if (D.isSelfViewEvent) { - var i = D.getX(), - s = D.getY(), - E = D.getWidth(), - N = D.getHeight(), - g = Y.style.background, - A = Y.style.backgroundColor; - g || A || (Y.style.backgroundColor = "white"), Y.requestFullscreen ? Y.requestFullscreen() : Y.msRequestFullscreen ? Y.msRequestFullscreen() : Y.mozRequestFullScreen ? Y.mozRequestFullScreen() : Y.webkitRequestFullscreen && Y.webkitRequestFullscreen(); - var p = setInterval(function () { - if (Y !== (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement)) clearInterval(p), D.setX(i), D.setY(s), D.setWidth(E), D.setHeight(N), D._fullscreen = !1, Y.style.oldBackgroundColor = A, D.iv(); - else { - var I = O.Default.getWindowInfo(); - (W || I.width !== D.getWidth() || I.height !== D.getHeight()) && (D.setX(I.left), D.setY(I.top), D.setWidth(I.width), D.setHeight(I.height), D._fullscreen = !0, D.iv(), W = !1) - } - }, 500) - } else { - var j = Y.style.left, - w = Y.style.top, - E = Y.style.width, - N = Y.style.height, - g = Y.style.background, - A = Y.style.backgroundColor; - g || A || (Y.style.backgroundColor = "white"), Y.requestFullscreen ? Y.requestFullscreen() : Y.msRequestFullscreen ? Y.msRequestFullscreen() : Y.mozRequestFullScreen ? Y.mozRequestFullScreen() : Y.webkitRequestFullscreen && Y.webkitRequestFullscreen(); - var p = setInterval(function () { - if (Y !== (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement)) clearInterval(p), Y.style.left = j, Y.style.top = w, Y.style.width = E, Y.style.height = N, Y.style.oldBackgroundColor = A, D.iv(); - else { - var I = O.Default.getWindowInfo(); - (W || I.width !== D.getWidth() || I.height !== D.getHeight()) && (qp(D), W = !1) - } - }, 500) - } - } - }, appendTimeStamp: function (H) { - return H - }, setCompType: function (O, m) { - Mf(m) || xl(m) ? Xh[O] = m : qs(O) - }, getCompType: function (o) { - var r = Xh[o]; - return r === Z && Bm.test(o) && qs(o), r - }, getCompTypeMap: function () { - return Xh - }, drawCompType: function (j, O, w, $, l, H) { - j(O, w, $, l, H) - }, numberListener: function () { - var r = { - 46: 1, - 8: 1, - 9: 1, - 27: 1, - 13: 1, - 109: 1, - 110: 1, - 189: 1, - 190: 1 - }; - return function (K) { - var T = K.keyCode; - r[T] || 65 === T && u.isCtrlDown(K) || 86 === T && u.isCtrlDown(K) || 67 === T && u.isCtrlDown(K) || 88 === T && u.isCtrlDown(K) || T >= 35 && 40 >= T || (K.shiftKey || 48 > T || T > 57) && (96 > T || T > 105) && K.preventDefault() - } - }(), - ignoreKeyCodes: [122, 123], - preventDefault: function (J) { - var H = J.target.tagName; - ("DIV" === H || "CANVAS" === H) && !(u.ignoreKeyCodes.indexOf(J.keyCode) >= 0) && ("keydown" !== J.type || Wk(J) || _i(J) || Nk(J) || ri(J) || qq(J) || 65 === J.keyCode && (J.metaKey || J.ctrlKey)) && (J.preventDefault(), J.preventManipulation && J.preventManipulation()) - }, getWindowInfo: function () { - var H = U.documentElement, - z = H && (H.scrollLeft || H.scrollTop) ? H : U.body; - return { - target: z, - left: z.scrollLeft, - top: z.scrollTop, - width: x.innerWidth || z.clientWidth, - height: x.innerHeight || z.clientHeight - } - }, isDragging: function () { - return !!si - }, isLeftButton: function (M) { - return li(M) ? !0 : 0 === M.button - }, isMiddleButton: function (I) { - return li(I) ? !1 : I && (1 === I.button || 4 & (I.buttons || 0)) - }, isRightButton: function (G) { - return li(G) ? !1 : G && (2 === G.button || 2 & (G.buttons || 0)) - }, isInput: function (D) { - if (!D) return !1; - var n = D.tagName; - return "INPUT" === n || "TEXTAREA" === n || "SELECT" === n - }, getTouchCount: function (e) { - return li(e) ? e.touches.length : 1 - }, isDoubleClick: function () { - function j(f) { - f.details = 0, f.timeout = null, f.lastPoint = null - } - var T = {}; - return Gk = new v, vi = Gk.getTime(), - function (C) { - if (Qj(C) > 1) return !1; - var I = C.button == F ? "" : C.button, - m = C.type + I, - h = m + "_isDoubleClick", - y = T[m]; - if (y || (y = T[m] = { - details: 0, - timeout: null, - lastPoint: null - }), C[h] === Z) { - C[h] = !0; - var l = lb(C); - y.timeout && (nr(y.timeout), y.timeout = null); - var s = li(C) ? u.doubleTouchRange : u.doubleClickRange; - y.lastPoint && En(y.lastPoint, l) > s && j(y), y.lastPoint = l, y.details++, y.timeout = cd(function () { - j(this) - }.bind(y), u.doubleClickSpeed) - } - return 2 === y.details - } - }(), - isShiftDown: function (z) { - return z ? z.shiftKey : pl["16"] - }, isCtrlDown: function (Q) { - return Q ? eg ? Q.metaKey : Q.ctrlKey : eg ? pl["91"] : pl["17"] - }, getClientPoint: function (r) { - return li(r) && (r = Xj(r)), { - x: r.clientX, - y: r.clientY - } - }, isMouseEvent: function (P) { - return P instanceof MouseEvent || 0 === P.type.indexOf("mouse") - }, getTargetElement: function (z) { - if (u.isMouseEvent(z) || !U.elementFromPoint) return z.target; - var V = Fd(z); - return U.elementFromPoint(V.x, V.y) - }, getPagePoint: function (Q) { - return li(Q) && (Q = Xj(Q)), { - x: Q.pageX, - y: Q.pageY - } - }, createObject: function (E, Y) { - var l = new E; - for (var G in Y) { - var r = Y[G]; - if (Mf(r)) l[G] = r; - else if (0 === G.indexOf("s:")) l.s(G.substr(2), Y[G]); - else if (0 === G.indexOf("a:")) l.a(G.substr(2), Y[G]); - else { - var R = tg(G), - r = Y[G]; - l[R] ? (l[R](r), "setToolTip" === R && l.enableToolTip && l.enableToolTip()) : l[G] = r - } - } - return l - }, setImage: function (v, b, k, U) { - var W = arguments.length; - 4 === W ? sd(v, U, b, k) : 2 === W ? dk(b) ? sd(v, b) : vl(v, b) : 1 === W && sd(v, v) - }, getImage: function (s, I, K) { - var U; - if (s == F) return F; - if (xl(s) ? U = s : (U = Oe[s], s && U === Z && (rm && rm[s] || sd(s, s))), I && U && U.tagName) { - var w; - w = "override" === K ? "colors_override" : "override_rgb" === K ? "colors_override_rgb" : "override_a" === K ? "colors_override_a" : "colors", U[w] || (U[w] = { - __count__: 0 - }); - var G = U[w][I]; - return G || (U[w].__count__ > u.imageCacheThreshold && (U[w] = { - __count__: 0 - }), G = oi(U, ns(I), U.width, U.height, K), U[w][I] = G, U[w].__count__++), G - } - return U - }, isImageComplete: function (k, H, K) { - var r = ii(k); - if (!r) return !1; - if (r.tagName) return r.complete; - for (var x, k, v, D = r.comps, U = !0, p = 0, l = D.length; l > p; p++) - if (x = D[p], v = x.type, "image" === x.type) { - k = x.name, k && k.func && (k = Dj(k, H)); - var R = Dr(k, H, K); - if (!R) { - U = !1; - break - } - } else if (Bm.test(v) && u.getCompType(v) === Z) { - U = !1, qs(v); - break - } - return U - }, getId: function () { - var d = 1; - return function () { - return ++d - } - }(), - callLater: function (Z, p, W, T) { - var f = function () { - Z.apply(p, W) - }; - return T ? cd(f, T) : x.requestAnimationFrame(f) - }, cancelLater: function (K, f) { - f ? nr(K) : x.cancelAnimationFrame(K) - }, clone: function (i) { - if (null == i || "object" != typeof i) return i; - if (i instanceof Date) { - var x = new Date; - return x.setTime(i.getTime()), x - } - if (i instanceof Array) { - for (var x = [], $ = 0, N = i.length; N > $; $++) x[$] = Pm(i[$]); - return x - } - if (i instanceof xr) { - for (var x = new xr, $ = 0, N = i.length; N > $; $++) x.set($, Pm(i.get($))); - return x - } - if (i instanceof Qp) return i; - if (i instanceof o) { - var x = {}; - for (var e in i) i.hasOwnProperty(e) && (x[e] = Pm(i[e])); - return x - } - return i - }, callWhenLoaded: function (t, b) { - b = b || 100; - var k = Jl(t, b); - nn || (nn = {}), nn[k] = { - tick: k, - cb: t, - delay: b - } - }, beforeLoadURL: function (v, I) { - if (nn) { - var V = {}; - for (var I in nn) { - var S = nn[I]; - nr(S.tick); - var z = Jl(S.cb, S.delay); - V[z] = { - tick: z, - delay: S.delay, - cb: S.cb - } - } - nn = V - } - return u.convertURL ? u.convertURL(v, I) : v - }, convertURL: function (Z) { - return Z - }, handleRefGraphLoaded: function () { }, handleCompTypeLoaded: function () { }, handleImageLoaded: function () { }, handleUnfoundImage: function () { - return u.getImage("default_blank") - }, resizeImagePOT: function (F, L) { - if (!F || !F.tagName) return F; - var c = F.width, - $ = F.height; - if (!c || !$) return F; - if (Rc.isPOT(c) && Rc.isPOT($) && (!L || c === $)) return F; - var m, X; - L ? X = m = Rc.nearestPOT(Math.min(c, $)) : (m = Rc.nearestPOT(c), X = Rc.nearestPOT($)); - var l = uo(), - E = l.getContext("2d"); - return Bn(l, m, X, 1), E.drawImage(F, 0, 0, c, $, 0, 0, m, X), l - }, sortFunc: function (G, P) { - if (G === P) return 0; - if (G == F && P != F) return 1; - if (G != F && P == F) return -1; - if (G == F && P == F) return 0; - var j, z = typeof G, - A = typeof P; - return z === Gl && A === Gl ? j = G.localeCompare(P) : z === Mo && A === Mo && (j = G - P), j === Z && (j = ("" + G).localeCompare("" + P)), j > 0 ? 1 : 0 > j ? -1 : 0 - }, getClassMap: function () { - return Zl - }, getClass: function (D) { - if (dk(D)) { - var X, f = Zl[D]; - if (!f) { - X = D.split("."), f = x; - for (var y = 0; y < X.length; y++) f = f[X[y]]; - Zl[D] = f - } - return f - } - return D - }, def: function (C, u, w) { - var p, Y, d, T = function () { }; - if (T.prototype = u.prototype, p = new T, dk(C)) { - if (Zl[C]) throw "'" + C + "' already defined"; - d = gp(C), p.getClassName = function () { - return C - } - } else d = C; if (p.constructor = d, p.getClass = function () { - return d - }, p.getSuperClass = function () { - return u - }, w) - for (Y in w) fb[Y] && fb.hasOwnProperty(Y) ? fb[Y](p, w) : Ug(p, w, Y); - d.prototype = p, d.superClass = u.prototype - }, startAnim: function () { - var E = function (W) { - W.duration && (W.startTime = mm()), W.timeId = $e(W.tick, F, F, W.interval) - }; - return function (R) { - return R = Pm(R), R.easing = R.easing || u.animEasing, R.duration || R.frames || (R.duration = u.animDuration), R.t = 0, R.duration ? R.interval = 0 : (R.frame = 0, R.interval = R.interval || 10), R.tick = function () { - if (R.duration) { - var z = (mm() - R.startTime) / R.duration; - if (z > 1 && (z = 1), R.t = z, R.action(R.easing(z), z), !R.isRunning()) return; - 1 === z ? R.stop() : R._isPaused || (R.timeId = $e(R.tick)) - } else { - if (R.frame++, z = R.t = R.frame / R.frames, R.action(R.easing(z), z), !R.isRunning()) return; - R.frame < R.frames ? R._isPaused || (R.timeId = $e(R.tick, F, F, R.interval)) : R.stop() - } - }, R.resume = function () { - R._isPaused && (delete R._isPaused, R.duration ? R.t < 1 && (R.startTime = mm() - R.duration * R.t, R.timeId = $e(R.tick)) : R.frame < R.frames && (R.timeId = $e(R.tick, F, F, R.interval))) - }, R.pause = function () { - td(R.timeId, !R.duration), R._isPaused = !0 - }, R.isPaused = function () { - return this._isPaused - }, R.stop = function (Y) { - R.isRunning() && (td(R.timeId, !R.duration), delete R.timeId, R.duration ? R.t < 1 && Y && (R.t = 1, R.action(R.easing(1), 1)) : R.frame < R.frames && Y && (R.frame = R.frames, R.action(R.easing(1), 1)), R._37o && R._37o(), R.finishFunc && R.finishFunc()) - }, R.isRunning = function () { - return R.timeId != F - }, R.delay ? $e(E, F, [R], R.delay) : E(R), R - } - }(), - getTextSize: function () { - var p = {}, - x = U ? uo().getContext("2d") : F; - return function (C, Q) { - x.font = C ? C : Fh; - var c = p[x.font]; - return c || (c = 2 * x.measureText("e").width + 4, p[x.font] = c), { - width: x.measureText(Q).width + 4, - height: c - } - } - }(), - drawText: function (v, Q, q, t, a, n, D, K, m, A) { - if (Q != F) { - var H = ln(q, Q), - V = {}; - V.y = A && A !== Sg ? A === $c ? n + H.height / 2 : n + K - H.height / 2 : n + K / 2, V.x = m && m !== nq ? m === fm ? a + D - H.width / 2 : a + D / 2 : a + H.width / 2, Lp(v, Q, V, q, t) - } - }, getDistance: function (x, U) { - var $ = x.length; - return U ? 3 === $ ? w(ds(x[0] - U[0]) + ds(x[1] - U[1]) + ds(x[2] - U[2])) : 2 === $ ? w(ds(x[0] - U[0]) + ds(x[1] - U[1])) : x.z === Z ? w(ds(U.x - x.x) + ds(U.y - x.y)) : w(ds(U.x - x.x) + ds(U.y - x.y) + ds(U.z - x.z)) : 3 === $ ? w(ds(x[0]) + ds(x[1]) + ds(x[2])) : 2 === $ ? w(ds(x[0]) + ds(x[1])) : void 0 - }, brighter: function (V, H) { - return 0 > H && (H = -H), mp(V, H ? H : 40) - }, darker: function (J, S) { - return S > 0 && (S = -S), mp(J, S ? S : -40) - }, unionPoint: function (C, U) { - if (!C) return F; - if (2 === arguments.length) return C && U ? { - x: V(C.x, U.x), - y: V(C.y, U.y), - width: X(C.x - U.x), - height: X(C.y - U.y) - } : F; - var u = C; - if (u._as && (u = u._as), u.length === Z) return F; - var G = u.length; - if (0 >= G) return F; - for (var O = 1, e = u[0], v = { - x: e.x, - y: e.y, - width: 0, - height: 0 - }; G > O; O++) { - e = u[O]; - var h = V(v.x, e.x), - y = q(v.x + v.width, e.x), - p = V(v.y, e.y), - M = q(v.y + v.height, e.y); - v.x = h, v.y = p, v.width = y - h, v.height = M - p - } - return v - }, unionRect: function (E, u) { - if (E && !u) return Pm(E); - if (!E && u) return Pm(u); - if (E && u) { - var l = { - x: V(E.x, u.x), - y: V(E.y, u.y) - }; - return l.width = q(E.x + E.width, u.x + u.width) - l.x, l.height = q(E.y + E.height, u.y + u.height) - l.y, l - } - return F - }, containsPoint: function (p, I, Y, O) { - if (O != F && 1 !== O) { - var u = p.x + p.width / 2, - T = p.y + p.height / 2; - p = { - x: u - p.width / 2 * O, - y: T - p.height / 2 * O, - width: p.width * O, - height: p.height * O - } - } - if (Y) { - var B = p.width / 2, - f = p.height / 2, - r = n(-Y), - q = k(-Y), - C = I.x - p.x - B, - G = I.y - p.y - f; - return I = { - x: q * C - r * G, - y: r * C + q * G - }, cf({ - x: -B, - y: -f, - width: p.width, - height: p.height - }, I) - } - return !(!p || I.x < p.x || I.y < p.y || I.x > p.x + p.width || I.y > p.y + p.height) - }, containsRect: function (G, W) { - if (!G || !W) return !1; - var P = W.x, - R = W.y, - k = W.width, - Z = W.height, - C = G.width, - F = G.height; - if (0 > (C | F | k | Z)) return !1; - var t = G.x, - Y = G.y; - if (t > P || Y > R) return !1; - if (C += t, k += P, P >= k) { - if (C >= t || k > C) return !1 - } else if (C >= t && k > C) return !1; - if (F += Y, Z += R, R >= Z) { - if (F >= Y || Z > F) return !1 - } else if (F >= Y && Z > F) return !1; - return !0 - }, intersectsRect: function (b, k) { - if (!b || !k) return !1; - var y = k.width, - K = k.height, - x = b.width, - M = b.height; - if (0 >= x || 0 >= M || 0 >= y || 0 >= K) return !1; - var O = k.x, - q = k.y, - f = b.x, - W = b.y; - return x += f, M += W, y += O, K += q, x > O && M > q && y > f && K > W - }, intersection: function (G, K) { - if (!G || !K) return F; - var S = K.x, - t = K.y, - b = G.x, - M = G.y, - Y = S, - W = t, - V = b, - L = M; - return Y += K.width, W += K.height, V += G.width, L += G.height, b > S && (S = b), M > t && (t = M), Y > V && (Y = V), W > L && (W = L), Y -= S, W -= t, 0 >= Y || 0 >= W ? F : { - x: S, - y: t, - width: Y, - height: W - } - }, grow: function (_, P, E) { - E === Z && (E = P), _.x -= P, _.y -= E, _.width = _.width + 2 * P, _.height = _.height + 2 * E - }, getScreenPoint: function (v, m, Y, J, q, E, T) { - var y = Y.getBoundingClientRect(), - Q = v * (E || 1) - Y.scrollLeft + (J || 0), - V = m * (T || 1) - Y.scrollTop + (q || 0), - b = Vg(Y, !1); - if (b) { - var P = new tl(Q, V, 0); - return P.applyMatrix4(b), console.log(P), { - x: P.x, - y: P.y - } - } - return { - x: Q + y.left, - y: V + y.top - } - }, getLogicalPoint: function (L, v, q, G, r, A) { - var d, n, o = v.getBoundingClientRect(); - L.target ? (ik(L) ? eg ? pl["91"] = !0 : pl["17"] = !0 : eg ? pl["91"] = !1 : pl["17"] = !1, pl["16"] = Pf(L) ? !0 : !1, L = li(L) ? Xj(L) : L, d = L.clientX, n = L.clientY) : (d = L.x, n = L.y); - var H = Vg(v, !0); - if (H) { - var m = new tl(d, n, 0); - m.applyMatrix4(H); - do { - if (Math.abs(m.z) <= 1e-6) break; - var F = new tl(d, n, 1); - if (F.applyMatrix4(matrix), Math.abs(F.z) <= 1e-6) { - m = F; - break - } - if (F.sub(m), Math.abs(F.z) <= 1e-6) break; - m.addScaledVector(F, -m.z / F.z) - } while (!1); - return { - x: (m.x + v.scrollLeft - (q || 0)) / (r || 1), - y: (m.y + v.scrollTop - (G || 0)) / (A || 1) - } - } - return { - x: (d - o.left + v.scrollLeft - (q || 0)) / (r || 1), - y: (n - o.top + v.scrollTop - (G || 0)) / (A || 1) - } - }, removeHTML: function () { - var W; - return function (J) { - return J && J.getView && (J = J.getView()), J && J.parentNode ? W === J ? !0 : (W = J, J.parentNode.removeChild(J), W = F, !0) : !1 - } - }(), - getToolTipDiv: function () { - if (!Xm) { - Xm = dd(), xn = dd(); - var L = Xm.style; - u.baseZIndex != F && (L.zIndex = Zb(u.baseZIndex) + 3 + ""), L.whiteSpace = "nowrap", L.color = u.toolTipLabelColor, L.background = u.toolTipBackground, L.font = u.toolTipLabelFont, L.padding = "5px", L.boxShadow = "0px 0px 3px " + u.toolTipShadowColor - } - return Xm - }, isToolTipShowing: function () { - return Xm && Xm.parentNode ? !0 : xn && xn.parentNode ? !0 : !1 - }, hideToolTip: function () { - yj(Xm), yj(xn), Yp() - }, showToolTip: function (N, B) { - if (!N || B == F) return Um(), void 0; - u.getToolTipDiv(); - var e, j; - if (B.html ? (B = B.html, e = xn, yj(Xm)) : (e = Xm, yj(xn)), j = e.style, e.innerHTML = B, e.parentNode || O.Default.appendToScreen(e), N.target) { - N = Fd(N); - var f = hq(), - Q = N.x, - a = N.y, - K = nf ? 60 : 12; - if (nf) { - var c = e.getBoundingClientRect(); - j.left = Q - c.width / 2 + oe, j.top = a - c.height - K < f.top ? a + K + oe : a - c.height - K + oe - } else { - j.left = Q + K + oe, j.top = a + K + oe; - var c = e.getBoundingClientRect(); - c.left + c.width > f.width && (j.left = Q - K - c.width + oe), c.top + c.height > f.height && (j.top = a - K - c.height + oe), c.left < 0 && (j.left = Q + K + oe), c.top < 0 && (j.top = a + K + oe) - } - } else j.left = N.x + oe, j.top = N.y + oe; - Yp() - }, startDragging: function (t, A, d) { - d == Z && (d = !0), t !== si && (si ? d && (li(A) ? si.handleWindowTouchEnd(A) : si.handleWindowMouseUp(A)) : li(A) ? (K(x, wj, Ed), K(x, Sj, Zr)) : (K(x, rp, Kn), K(x, cj, tc)), si = t) - }, getImageMap: function () { - return Oe - }, toBoundaries: function (y, n, A, w) { - var T = []; - return Yo(y, n, A, w).forEach(function (b) { - var V = []; - b.forEach(function (I) { - V.push(I.x, I.y) - }), T.push(V) - }), T - }, getCurrentKeyCodeMap: function () { - return pl - }, drawCenterImage: function (G, t, k, z, n, H, O, Q) { - !n && H && H.isSelfViewEvent && (n = H); - var Y = xc(t, n, H), - l = oo(t, n, H); - Yd(G, t, A(k - Y / 2), A(z - l / 2), Y, l, n, H, O, Q) - }, drawStretchImage: function (T, N, I, o, c, M, b, k, X, f, J, d) { - !k && X && X.isSelfViewEvent && (k = X); - var i, g = xc(N, k, X, M), - G = oo(N, k, X, b); - "uniform" === I ? (i = V(M / g, b / G), g *= i, G *= i, o += A((M - g) / 2), c += A((b - G) / 2), M = g, b = G) : "centerUniform" === I && ((g > M || G > b) && (i = V(M / g, b / G), g *= i, G *= i), o += A((M - g) / 2), c += A((b - G) / 2), M = g, b = G); - var u = T.interactiveInfo; - if (u) { - var W; - if (W = "center" === I ? { - x: o + M / 2 - g / 2, - y: c + b / 2 - G / 2, - width: g, - height: G - } : { - x: o, - y: c, - width: M, - height: b - }, u.rect) { - var r = u.compInfos, - S = r.length; - S && (r[S - 1].rect.image = N) - } else u.rect = W - } - if ("center" === I) { - var F = J !== !1 && (g > M || G > b); - F && (T.save(), T.beginPath(), T.rect(o, c, M, b), T.clip()), Yd(T, N, o + M / 2 - g / 2, c + b / 2 - G / 2, g, G, k, X, f, d), F && T.restore() - } else Yd(T, N, o, c, M, b, k, X, f, d) - }, toCanvas: function (A, F, R, z, $, E, x, t, u) { - A = ii(A, x), F = F || xc(A, $), R = R || oo(A, $); - var X = uo(), - D = Wd(X); - return t ? (Bn(X, F, R, t), D.scale(t, t)) : Bn(X, F, R, 1), qk(D, A, z, 0, 0, F, R, $, E, x, u), A && A.clampToEdge && (X.clampToEdge = A.clampToEdge), D.restore(), X - }, toGrayColor: function (M) { - if (!M) return M; - var m = zd(M), - v = A(.299 * m[0] + .587 * m[1] + .114 * m[2]); - return "rgba(" + v + "," + v + "," + v + "," + m[3] / 255 + ")" - }, createGradientImage: function (Y, x, G, H) { - for (var i = ["L", 0, 0, Y, 0, 1, 0, 0, 1, 0, 0], r = 0, e = Math.min(x.length, G.length); e > r; r++) i.push(G[r], x[r]); - var X = O.Default.toCanvas({ - width: Y, - height: Y, - clampToEdge: !0, - comps: [{ - type: "shape", - rotation: H || 0, - points: [0, 0, Y, 0, Y, Y, 0, Y], - background: "#ffffff", - gradientPack: i - }] - }); - return X - }, createElement: function (h, _, X, Y) { - var n = U.createElement(h); - return Yq(n, _ || S.widgetBorder, 2), n.style.font = X ? X : Fh, Y != F && (n.value = Y), u.onElementCreated && u.onElementCreated(n), n - }, containedInView: function (f, R) { - var D = Bq(R).getBoundingClientRect(); - return cf({ - x: D.left, - y: D.top, - width: D.width, - height: D.height - }, lb(f)) - }, isIsolating: function () { - return aj > 0 - }, setIsolating: function (i) { - i ? aj++ : aj-- - }, getMSMap: function () { - return fb - }, stringify: function (E, m, w) { - var r = Date.prototype.toJSON; - Date.prototype.toJSON = function () { - return "__ht__date" + this.getTime() - }, m = w ? 0 : m == F ? 2 : m; - var A = JSON.stringify(E, function (K, $) { - return "function" == typeof $ ? "__ht__" + ($.__ht__ || $.toString()) : Bp($) ? Oo($) : $ instanceof O.List ? "__ht__list" + ($.__ht__list || u.stringify($._as)) : $ - }, m); - return Date.prototype.toJSON = r, w && (A = Xl + bn(A)), A - }, parse: function (M) { - return dk(M) ? M.substr(0, 12) != Xl || (M = _o(M.substr(12)), dk(M)) ? JSON.parse(M, function (l, t) { - if (dk(t)) - if ("__ht__function" == t.substr(0, 14)) { - var P = t.indexOf("{") + 1, - C = t.lastIndexOf("}"), - w = t.indexOf("(") + 1, - j = t.indexOf(")"); - if (P && C && w && j) try { - var K = new Function(t.substring(w, j), t.substring(P, C)); - return K.__ht__ = t.substr(6), K - } catch (v) { - throw console.info("=== SyntaxError ===\n", t), v - } - } else { - if ("__ht__date" == t.substr(0, 10)) return new Date(Zb(t.substr(10))); - if ("__ht__list" === t.substr(0, 10)) return new xr(u.parse(t.substr(10))) - } - return t - }) : M : M - }, loadJS: function (b, x) { - x && b.push(x); - var n = b.shift(); - if (ip(n)) b = n.contact(b), u.loadJS(b); - else if (Mf(n)) n(), u.loadJS(b); - else if (dk(n)) { - var m = U.createElement("script"); - m.onload = function () { - u.loadJS(b) - }, m.setAttribute("src", n), U.getElementsByTagName("head")[0].appendChild(m) - } else b.length && u.loadJS(b) - }, extendClass: function (A, m) { - var d = A.prototype; - for (var Y in m) fb[Y] && fb.hasOwnProperty(Y) ? fb[Y](d, m) : d[Y] = m[Y] - }, toRoundedCorner: function () { - function f(Y, s, m) { - Y.x = s.x, Y.y = s.e || m, Y.z = s.y - } - var n = new tl, - u = new tl, - R = new tl, - A = new tl; - return function (o, h) { - var _, e = 0; - o.getPoints && (e = o.getElevation(), o = o.getPoints()), _ = o instanceof xr ? o : new xr(o); - var t = _.size(); - if (0 >= h) return { - points: _ - }; - var z = new xr, - C = new xr, - T = _.get(0); - f(n, T, e), z.add(T), C.add(1); - for (var S = 1; t > S; S++) - if (t > S + 1) { - var i = _.get(S), - p = _.get(S + 1); - f(u, i, e), f(R, p, e), A.subVectors(n, u).setLength(Math.min(.99 * A.length(), h)).add(u), i.e !== Z || T.e !== Z ? z.add({ - x: A.x, - y: A.z, - e: A.y - }) : z.add({ - x: A.x, - y: A.z - }), z.add(i), A.subVectors(R, u).setLength(Math.min(.99 * A.length(), h)).add(u), i.e !== Z || p.e !== Z ? z.add(T = { - x: A.x, - y: A.z, - e: A.y - }) : z.add(T = { - x: A.x, - y: A.z - }), n.copy(A), C.addAll([2, 3]) - } else z.add(_.get(S)), C.add(2); - return { - points: z, - segments: C - } - } - }(), - toColorData: zd, - setCanvas: Bn, - createDiv: dd, - createDisabledDiv: lo, - createView: ve, - createCanvas: uo, - appendChild: sn, - initContext: Wd, - checkLoadingImage: Dd, - translateAndScale: tf, - layout: qp, - getPosition: Re, - drawPoints: en, - drawRoundRect: pg, - drawBorder: Ie, - setFocus: hr, - getter: kp, - setter: tg, - isEmptyObject: wd, - cameraPriority: function () { - var V = { - skybox: 0, - main: 1e4, - top: 1e7, - infinity: 1 / 0 - }; - return o.seal(o.defineProperties({}, { - skybox: { - configurable: !1, - enumerable: !1, - get: function () { - return V.skybox - }, set: function (q) { - if (q >= V.main) throw new RangeError("Skybox camera must have lower priority than the main camera."); - V.skybox = Number(q) - } - }, - main: { - configurable: !1, - enumerable: !1, - get: function () { - return V.main - }, set: function (T) { - if (T <= V.skybox) throw new RangeError("Main camera must have higher priority than the skybox camera."); - if (T >= V.top) throw new RangeError("Main camera must have lower priority than the top camera."); - V.main = Number(T) - } - }, - top: { - configurable: !1, - enumerable: !1, - get: function () { - return V.top - }, set: function (r) { - if (r <= V.main) throw new RangeError("Top camera must have higher priority than the main camera."); - V.top = Number(r) - } - } - })) - }() - }, !0), Uh(t, { - autoAdjustIndex: 1, - hierarchicalRendering: 1, - adjustChildrenToTop: 1, - autoHideScrollBar: 1, - autoUpdate: 1, - firstPersonMode: 1, - ortho: 1, - strict: 1, - stickToRight: 1, - instant: 1, - closePath: 1, - hierarchical: 1, - doubleClickToToggle: 1, - continuousLayout: 1, - syncSize: 1 - }, !0); - var Nn = u.disabledOpacity, - gj = u.toolTipDelay, - ij = u.devicePixelRatio, - be = u.autoMakeVisible, - jr = u.autoHideScrollBar, - Nf = u.imageGradient, - me = u.showToolTip, - Um = u.hideToolTip, - up = u.dashPattern, - ob = u.lineCap, - Wl = u.lineJoin, - Dh = u.labelColor, - rf = u.labelSelectColor, - Fh = u.labelFont, - kc = u.widgetIndent, - Oi = u.widgetRowHeight, - um = u.widgetHeaderHeight, - Jk = u.widgetTitleHeight, - Ch = u.scrollBarColor, - di = u.scrollBarSize, - Lg = u.scrollBarTimeout, - un = u.scrollBarMinLength, - co = u.scrollBarInteractiveSize, - lq = u.zoomIncrement, - _f = u.scrollZoomIncrement, - db = u.pinchZoomIncrement, - us = u.zoomMax, - gh = u.zoomMin, - Wn = u.createObject, - Qc = u.preventDefault, - _c = u.setImage, - ii = u.getImage, - Dr = u.isImageComplete, - Ii = u.drawCenterImage, - qk = u.drawStretchImage, - xp = u.getId, - $e = u.callLater, - td = u.cancelLater, - Sd = u.sortFunc, - Pm = u.clone, - gp = u.getClass, - Sf = u.startAnim, - Ee = u.brighter, - cn = u.darker, - nd = u.drawText, - ln = u.getTextSize, - jj = u.isLeftButton, - Fm = u.isMiddleButton, - tk = u.isRightButton, - Qj = u.getTouchCount, - wm = u.isDoubleClick, - Pf = u.isShiftDown, - ik = u.isCtrlDown, - lb = u.getClientPoint, - Fd = u.getPagePoint, - En = u.getDistance, - ms = u.unionPoint, - ni = u.unionRect, - cf = u.containsPoint, - $k = u.containsRect, - Kj = u.intersectsRect, - ro = u.intersection, - hq = u.getWindowInfo, - vn = u.grow, - Nm = u.getLogicalPoint, - Qo = u.getScreenPoint, - Ui = u.startDragging, - yj = u.removeHTML, - $g = u.createElement, - Nl = u.segmentResolution, - Cq = u.shapeResolution, - rr = u.shapeSide, - yc = u.def, - ki = function (g, T, b) { - yc(Y + "." + g, T, b) - }, - zj = function (R, Q) { - R.childNodes.forEach(function ($) { - Q($), zj($, Q) - }) - }; - Uh(u, { - toolTipLabelColor: Dh, - toolTipLabelFont: Fh, - toolTipBackground: S.toolTipBackground, - toolTipShadowColor: od, - debugTipLabelFont: Fh, - debugTipLabelColor: Dh, - debugTipBackground: S.toolTipBackground, - drawBreakableText: Om, - setDevicePixelRatio: function (m) { - ij = u.devicePixelRatio = "number" == typeof m ? m : x.devicePixelRatio, zj(U.body, function (U) { - var k = U._ht; - k && k._canvas && (Bn(k._canvas, k.getWidth(), k.getHeight()), k.redraw ? k.redraw() : k.iv()) - }) - } - }, !0); - var Wp = 1e-6, - $m = "undefined" != typeof Uint16Array ? Uint16Array : Array, - fk = "undefined" != typeof Float32Array ? Float32Array : Array, - fn = function (j, $, b) { - var V = [j[0] - $[0], j[1] - $[1], j[2] - $[2]]; - if (b) { - var t = En(V); - t > 0 && (V[0] /= t, V[1] /= t, V[2] /= t) - } - return V - }, - Cj = function () { - var l = "charCodeAt", - $ = 2 * (2 * Ki.length + 1); - for (var J in x) - if (J === Y + nq[0] + (oe.length + 2)) { - var w = x[J]; - if (!w) break; - for (var A = w.length, R = 0; A > R; R++) - if (w[R][l](0) === $ && w[R + 1] != F && w[R + 1] === oe[0] && w[R + 2] != F && w[R + 2][l](0) === $) { - for (var N = R + 3; A > N; N++) - if (w[N][l](0) === $) { - if (0 == w[N + 1]) - for (var h, X = N + 2; A > X; X++) { - if (w[X][l](0) === $) { - 0 == w[X - 1] && h && ($f = h.substr(0, h.length - 1)); - break - } - h == F ? h = w[X] : h += w[X] - } - break - } - break - } - break - } - return function (E) { - return [-E[0], -E[1], -E[2]] - } - }(), - zc = function (u, n) { - return 3 === u.length ? u[0] * n[0] + u[1] * n[1] + u[2] * n[2] : u[0] * n[0] + u[1] * n[1] - }, - kn = function () { - var $ = new Array(16); - return $[0] = 1, $[1] = 0, $[2] = 0, $[3] = 0, $[4] = 0, $[5] = 1, $[6] = 0, $[7] = 0, $[8] = 0, $[9] = 0, $[10] = 1, $[11] = 0, $[12] = 0, $[13] = 0, $[14] = 0, $[15] = 1, $ - }, - Hd = kn(), - Ql = function (q) { - var L = new Array(16); - return L[0] = q[0], L[1] = q[1], L[2] = q[2], L[3] = q[3], L[4] = q[4], L[5] = q[5], L[6] = q[6], L[7] = q[7], L[8] = q[8], L[9] = q[9], L[10] = q[10], L[11] = q[11], L[12] = q[12], L[13] = q[13], L[14] = q[14], L[15] = q[15], L - }, - Vd = function (L, x) { - return L[0] = x[0], L[1] = x[1], L[2] = x[2], L[3] = x[3], L[4] = x[4], L[5] = x[5], L[6] = x[6], L[7] = x[7], L[8] = x[8], L[9] = x[9], L[10] = x[10], L[11] = x[11], L[12] = x[12], L[13] = x[13], L[14] = x[14], L[15] = x[15], L - }, - yi = function (s) { - return s[0] = 1, s[1] = 0, s[2] = 0, s[3] = 0, s[4] = 0, s[5] = 1, s[6] = 0, s[7] = 0, s[8] = 0, s[9] = 0, s[10] = 1, s[11] = 0, s[12] = 0, s[13] = 0, s[14] = 0, s[15] = 1, s - }, - Td = function (e, D) { - var y = e[0], - q = e[1], - g = e[2]; - return e[0] = D[0] * y + D[4] * q + D[8] * g + D[12], e[1] = D[1] * y + D[5] * q + D[9] * g + D[13], e[2] = D[2] * y + D[6] * q + D[10] * g + D[14], e - }, - Ek = function (o, K) { - var A = o[0], - b = o[1], - V = o[2], - r = o[3]; - return o[0] = K[0] * A + K[4] * b + K[8] * V + K[12] * r, o[1] = K[1] * A + K[5] * b + K[9] * V + K[13] * r, o[2] = K[2] * A + K[6] * b + K[10] * V + K[14] * r, o[3] = K[3] * A + K[7] * b + K[11] * V + K[15] * r, o - }, - Og = function () { - var J, V, A, C, k = Hc(Fe[1] + Fe[7]), - Y = Hc(Fe[0] + Fe[3] - Fe[10]), - r = Hc(Fe[8] + 2), - e = function () { - return V = A.charAt(J), J += 1, V - }, - f = function () { - var E = ""; - if (V === r) - for (; e();) { - if (V === r) return e(), E; - E += V - } else e() - }, - h = function () { - for (; V && " " >= V;) e() - }, - W = function () { - var Z, v = {}; - if (V === k) { - if (e(), h(), V === Y) return e(), v; - for (; V;) { - if (Z = f(), h(), e(), v[Z] = C(), h(), V === Y) return e(), v; - e(), h() - } - } - }; - return C = function () { - switch (h(), V) { - case k: - return W(); - default: - return f() - } - }, - function (s) { - if (g = {}, s) { - var n; - if (A = s, J = 0, V = " ", n = C(), h(), !V) return n - } - } - }(), - uh = function (F, D) { - if (D) { - var x = n(D), - e = k(D), - A = F[4], - f = F[5], - $ = F[6], - P = F[7], - d = F[8], - X = F[9], - u = F[10], - g = F[11]; - F[4] = A * e + d * x, F[5] = f * e + X * x, F[6] = $ * e + u * x, F[7] = P * e + g * x, F[8] = d * e - A * x, F[9] = X * e - f * x, F[10] = u * e - $ * x, F[11] = g * e - P * x - } - }, - ah = function (p, v) { - if (v) { - var m = n(v), - t = k(v), - R = p[0], - I = p[1], - f = p[2], - T = p[3], - x = p[8], - l = p[9], - K = p[10], - P = p[11]; - p[0] = R * t - x * m, p[1] = I * t - l * m, p[2] = f * t - K * m, p[3] = T * t - P * m, p[8] = R * m + x * t, p[9] = I * m + l * t, p[10] = f * m + K * t, p[11] = T * m + P * t - } - }, - wo = function (v, W) { - if (W) { - var u = n(W), - y = k(W), - H = v[0], - l = v[1], - K = v[2], - j = v[3], - U = v[4], - C = v[5], - t = v[6], - N = v[7]; - v[0] = H * y + U * u, v[1] = l * y + C * u, v[2] = K * y + t * u, v[3] = j * y + N * u, v[4] = U * y - H * u, v[5] = C * y - l * u, v[6] = t * y - K * u, v[7] = N * y - j * u - } - }, - sj = function (E, G, W) { - return Jn(F, W === !1 ? F : E.getFinalScale3d(), E.getFinalRotation3d(), E.getRotationMode(), E.p3(), F, G) - }, - Jn = function (j, G, c, h, a, B, M) { - return B || (B = kn()), a && bo(B, a), Cl(B, c, h), M && xo(B, B, M), G && Bd(B, G), j && xo(B, B, j), B - }, - pf = function (k, b, l) { - b = Zb(b), l = Zb(l); - var P = this; - P.g = k, P._84O = b, P._85O = l, P._70I = !0, P.F = 0, P._83O = b + l, P.pen = { - x: 0, - y: 0 - } - }, - ph = "lineDashOffset", - Ue = "setLineDash", - xf = function ($) { - for (var N in $) 1 === N.length && (ph = $[N]); - return N ? 1 : 0 - }, - ls = function (W, I, U) { - return Ro(I) ? W : W[Ue] ? (W[Ue](I), U && (W.lineDashOffset = U), W) : new pf(W, I[0], I.length > 1 ? I[1] : I[0]) - }, - _l = function (A, d) { - !Ro(d) && A[Ue] && (A[Ue](Pc), A.lineDashOffset = 0) - }; - if (yc(pf, o, { - _69I: 6, - moveTo: function (V, e) { - var t = this, - D = t.pen; - D.x = V, D.y = e, t.g.moveTo(V, e), t.start || (t.start = { - x: V, - y: e - }) - }, lineTo: function (S, $) { - var O = this, - V = O.pen, - N = S - V.x, - G = $ - V.y, - E = D(G, N), - v = k(E), - R = n(E), - U = O._23O(V.x, V.y, S, $), - y = O._85O, - A = O._84O, - b = O._83O; - if (O.F) { - if (O.F > U) return O._70I ? O._72I(S, $) : O.moveTo(S, $), O.F -= U, void 0; - if (O._70I ? O._72I(V.x + v * O.F, V.y + R * O.F) : O.moveTo(V.x + v * O.F, V.y + R * O.F), U -= O.F, O.F = 0, O._70I = !O._70I, !U) return - } - var r = T(U / b); - if (r) { - for (var B = v * A, e = R * A, K = v * y, w = R * y, z = 0; r > z; z++) O._70I ? (O._72I(V.x + B, V.y + e), O.moveTo(V.x + K, V.y + w)) : (O.moveTo(V.x + K, V.y + w), O._72I(V.x + B, V.y + e)); - U -= b * r - } - O._70I ? U > A ? (O._72I(V.x + v * A, V.y + R * A), O.moveTo(S, $), O.F = y - (U - A), O._70I = !1) : (O._72I(S, $), U === A ? (O.F = 0, O._70I = !O._70I) : (O.F = A - U, O.moveTo(S, $))) : U > y ? (O.moveTo(V.x + v * y, V.y + R * y), O._72I(S, $), O.F = A - (U - y), O._70I = !0) : (O.moveTo(S, $), U === y ? (O.F = 0, O._70I = !O._70I) : O.F = y - U) - }, quadraticCurveTo: function (y, h, r, f) { - var E, x = this, - i = x.pen, - z = i.x, - d = i.y, - w = x._22O(z, d, y, h, r, f), - M = 0, - C = 0, - t = x._85O, - X = x._84O; - if (x.F) { - if (x.F > w) return x._70I ? x._71I(y, h, r, f) : x.moveTo(r, f), x.F -= w, void 0; - if (M = x.F / w, E = x._20O(z, d, y, h, r, f, M), x._70I ? x._71I(E[2], E[3], E[4], E[5]) : x.moveTo(E[4], E[5]), x.F = 0, x._70I = !x._70I, !w) return - } - var e = w - w * M, - P = T(e / x._83O), - G = X / w, - W = t / w; - if (P) - for (var K = 0; P > K; K++) x._70I ? (C = M + G, E = x._21O(z, d, y, h, r, f, M, C), x._71I(E[2], E[3], E[4], E[5]), M = C, C = M + W, E = x._21O(z, d, y, h, r, f, M, C), x.moveTo(E[4], E[5])) : (C = M + W, E = x._21O(z, d, y, h, r, f, M, C), x.moveTo(E[4], E[5]), M = C, C = M + G, E = x._21O(z, d, y, h, r, f, M, C), x._71I(E[2], E[3], E[4], E[5])), M = C; - e = w - w * M, x._70I ? e > X ? (C = M + G, E = x._21O(z, d, y, h, r, f, M, C), x._71I(E[2], E[3], E[4], E[5]), x.moveTo(r, f), x.F = t - (e - X), x._70I = !1) : (E = x._19O(z, d, y, h, r, f, M), x._71I(E[2], E[3], E[4], E[5]), w === X ? (x.F = 0, x._70I = !x._70I) : (x.F = X - e, x.moveTo(r, f))) : e > t ? (C = M + W, E = x._21O(z, d, y, h, r, f, M, C), x.moveTo(E[4], E[5]), E = x._19O(z, d, y, h, r, f, C), x._71I(E[2], E[3], E[4], E[5]), x.F = X - (e - t), x._70I = !0) : (x.moveTo(r, f), e === t ? (x.F = 0, x._70I = !x._70I) : x.F = t - e) - }, bezierCurveTo: function () { - var M = arguments; - this.pen = { - x: M[4], - y: M[5] - }, this.g.bezierCurveTo(M[0], M[1], M[2], M[3], M[4], M[5]) - }, arc: function (M, g, v, C, e, S) { - S || (C = -C, e = -e), mo(this, M, g, C, e - C, v, v, !1) - }, rect: function (G, z, t, $) { - var Q = this; - Q.pen = { - x: G, - y: z - }, Q.moveTo(G, z), Q.lineTo(G, z + $), Q.lineTo(G + t, z + $), Q.lineTo(G + t, z), Q.lineTo(G, z) - }, beginPath: function () { - this.g.beginPath() - }, closePath: function () { - this.lineTo(this.start.x, this.start.y) - }, _23O: function (O, c, l, Z) { - var h = l - O, - b = Z - c; - return w(h * h + b * b) - }, _22O: function (X, t, r, J, o, W, I) { - for (var z, e, q, $, a, A, Z, V = 0, G = X, s = t, m = I > 0 ? I : this._69I, w = 1; m >= w; w++) q = w / m, $ = 1 - q, a = $ * $, A = 2 * q * $, Z = q * q, z = a * X + A * r + Z * o, e = a * t + A * J + Z * W, V += this._23O(G, s, z, e), G = z, s = e; - return V - }, _21O: function (y, E, z, L, g, U, I, f) { - var J = this; - if (0 === I) return J._20O(y, E, z, L, g, U, f); - if (1 === f) return J._19O(y, E, z, L, g, U, I); - var H = J._20O(y, E, z, L, g, U, f); - return H.push(I / f), J._19O.apply(J, H) - }, _20O: function (x, O, o, T, a, m, N) { - if (1 !== N) { - var C = o + (a - o) * N, - g = T + (m - T) * N; - o = x + (o - x) * N, T = O + (T - O) * N, a = o + (C - o) * N, m = T + (g - T) * N - } - return [x, O, o, T, a, m] - }, _19O: function (l, A, I, d, Y, r, h) { - if (1 !== h) { - var w = l + (I - l) * h, - P = A + (d - A) * h; - I += (Y - I) * h, d += (r - d) * h, l = w + (I - w) * h, A = P + (d - P) * h - } - return [l, A, I, d, Y, r] - }, _72I: function (u, $) { - var j = this.pen; - (u !== j.x || $ !== j.y) && (j.x = u, j.y = $, this.g.lineTo(u, $)) - }, _71I: function (u, i, t, y) { - var U = this.pen; - (u !== t || i !== y || t !== U.x || y !== U.y) && (U.x = t, U.y = y, this.g.quadraticCurveTo(u, i, t, y)) - } - }), _ && ge) { - var vk = ge.toString(); - Ad = vk.indexOf(fc.substr(0, 2)) > 0 && vk.indexOf($c + $c.substr(1, 1)) > 1 || vk.indexOf(Kb.substr(0, 2) + fc.substr(2, 2) + nq[0] + fc[4]) > 1 ? !0 : !1 - } - var mc = F, - md = F, - Fo = u.checkLoadingCompType = function (N) { - mc && !N._72O && (md || (md = {}), md[N._72O = xp()] = N) - }, - qs = function (K, s) { - if (s || (s = K), s && (mc || (mc = {}), !mc[K])) { - var z = new De; - if (mc[s] = { - request: z, - url: s - }, s = u.beforeLoadURL(s, K), s.data) { - var M = u.parse(s.data); - Ko(K, M), u.handleCompTypeLoaded(K, M) - } else { - z.onload = function () { - if (200 === this.status || 0 === this.status) { - var O = u.parse(z.getResponseText()); - Ko(K, O), u.handleCompTypeLoaded(K, O) - } else Ko(K, F) - }, z.onerror = function () { - Ko(K, F) - }; - var n = {}; - n.url = encodeURI(s), n.sync = !1, z.send(n) - } - } - }, - Ko = function (J, M) { - if (Xh[J] = M, delete mc[J], wd(mc) && (mc = F, md)) { - for (var e in md) { - var H = md[e]; - H.invalidateAll && H.invalidateAll(Z, "compTypeLoaded", J), H.redraw && H.redraw(), H.iv(), delete H._72O - } - md = F - } - if (M && md) - for (var e in md) { - var H = md[e]; - H.invalidateAll && H.invalidateAll(Z, "compTypeLoading", J), H.redraw && H.redraw(), H.iv() - } - }, - ch = S.chart, - Nh = "", - Jp = !0, - Hn = u.compStack = [], - Yf = /^style@/, - Gn = /^attr@/, - Se = /^field@/, - Tm = { - x: .5, - y: .5 - }, - _m = function () { - Jp = !0 - }, - zm = function () { - return Jp - }, - xc = function (h, H, K, I) { - if (!h) return 0; - if (Dj(h.fitSize, H, K) && I) return I; - var W = Dj(h.width, H, K); - return null == W ? 20 : W - }, - oo = function (w, n, L, E) { - if (!w) return 0; - if (Dj(w.fitSize, n, L) && E) return E; - var J = Dj(w.height, n, L); - return null == J ? 20 : J - }, - Dj = function (g, v, b) { - if (!g || !g.func) return g; - var R, I = g.func, - H = g.value; - return R = Mf(I) ? b && b.vectorDataBindingDisabled && !g.isSafeFunc ? H : I(v, b) : v instanceof Qp || (O.ui ? v instanceof O.ui.View : 0) ? Gn.test(I) ? v.a(Nh + I.slice(5)) : Yf.test(I) ? v.s(Nh + I.slice(6)) : Se.test(I) ? v[I.slice(6)] : v[I] ? v[I](b) : H : H, H !== Z && R == F ? H : R - }, - Yd = u.drawImage = function () { - var f, d, h, s, z, A, v = function (Y, v) { - Y.getValue && Y.getValue.compType === v || (Y.getValue = function (I) { - var u = Q(Y, I); - if (u === Z && v.properties) { - var T = v.properties[I]; - T && (u = T.defaultValue) - } - return u - }, Y.getColor = function (W, S) { - return S === !0 ? b(W) : b(Y.getValue(W)) - }, Y.getValue.compType = v) - }, - Q = function (n, l, s) { - var e, B = !1; - if (n.prefix && d instanceof Qp) { - var c = d.a(Nh + l); - c !== Z && (B = !0, e = c) - } - return e === Z && (e = n[l]), e && e.func && (B = !0, e = Dj(e, d, h)), s && (e = s(e), B || (n[l] = e)), e - }, - b = function (P, B) { - var D; - return D = B ? Q(P, B) : P, f && f.compGray && D ? u.toGrayColor(D) : z && D ? nm(D, z, A) : D - }, - X = function (j) { - if (ip(j)) { - for (var L = new xr, b = j.length, n = 0; b > n; n += 2) L.add({ - x: j[n], - y: j[n + 1] - }); - j = L - } - return j - }, - D = function (G) { - var b = Q(G, "anchorX"), - c = Q(G, "anchorY"); - if (b !== Z || c !== Z) return { - x: b === Z ? Tm.x : b, - y: c === Z ? Tm.y : c - }; - var f = Q(G, "type"), - e = Q(G, "name"); - if ("image" !== f || !e) return Tm; - var J = ii(e); - return J && J.anchorX !== Z && J.anchorY !== Z ? { - x: J.anchorX, - y: J.anchorY - } : Tm - }, - p = function (W, t) { - var y = Q(W, Tq), - E = D(W); - if (ip(y)) { - var x = y.length, - r = Q(W, "relative"), - z = t.width, - T = t.height; - if (4 === x) y = { - x: y[0], - y: y[1], - width: y[2], - height: y[3] - }, r && (y.x *= z, y.y *= T, y.width *= z, y.height *= T); - else if (3 === x) { - var J = y[0]; - y = { - width: y[1], - height: y[2] - }, r && (y.width *= z, y.height *= T), "object" == typeof J ? J.length && (J = { - x: J[0], - y: J[1] - }) : J = Re(J, t, y), y.x = J.x - y.width * E.x, y.y = J.y - y.height * E.y - } - y.x += Q(W, "offsetX") || 0, y.y += Q(W, "offsetY") || 0, !r && t.fitSize && (y = M(W, y, t)) - } - return y - }, - M = function (n, s, T) { - if (s) { - var l, a, q, B = { - x: s.x, - y: s.y, - width: s.width, - height: s.height - }, - u = D(n), - U = Q(n, "layoutH"), - m = Q(n, "layoutV"), - Y = 1, - t = 1, - P = 0, - v = 0, - Z = 1, - f = 1; - switch (U) { - case "left": - break; - case "right": - B.x += T.width - T.rw; - break; - case "center": - B.x += .5 * (T.width - T.rw); - break; - case "scale": - case "leftright": - default: - l = Q(n, ac) || 0, l && (P = Math.abs(v = Math.sin(l)), Z = Math.abs(f = Math.cos(l))), "leftright" !== U ? (Y += Z * (T.widthScale - 1), t += P * (T.widthScale - 1)) : (Y += B.width ? Z * (T.width - T.rw) / B.width : 0, t += B.height ? P * (T.width - T.rw) / B.height : 0, a = -Math.min(-u.x * f + u.y * v, -u.x * f - (1 - u.y) * v, (1 - u.x) * f + u.y * v, (1 - u.x) * f - (1 - u.y) * v)) - } - switch (m) { - case "top": - break; - case "bottom": - B.y += T.height - T.rh; - break; - case "center": - B.y += .5 * (T.height - T.rh); - break; - case "scale": - case "topbottom": - default: - l == F && (l = Q(n, ac), l && (P = Math.abs(v = Math.sin(l)), Z = Math.abs(f = Math.cos(l)))), "topbottom" !== m ? (Y += P * (T.heightScale - 1), t += Z * (T.heightScale - 1)) : (Y += B.width ? P * (T.height - T.rh) / B.width : 0, t += B.height ? Z * (T.height - T.rh) / B.height : 0, q = -Math.min(-u.x * v - u.y * f, -u.x * v + (1 - u.y) * f, (1 - u.x) * v - u.y * f, (1 - u.x) * v + (1 - u.y) * f)) - } - return (1 !== Y || 1 !== t) && ("scale" !== U && U ? "leftright" === U && (B.x += B.width * (1 - Y) * u.x + a * (T.width - T.rw)) : B.x += B.x * (T.widthScale - 1) + u.x * B.width * (T.widthScale - Y), "scale" !== m && m ? "topbottom" === m && (B.y += B.height * (1 - t) * u.y + q * (T.height - T.rh)) : B.y += B.y * (T.heightScale - 1) + u.y * B.height * (T.heightScale - t), B.width *= Y, B.height *= t), B.width < 0 && (B.width = 0), B.height < 0 && (B.height = 0), B - } - }, - y = function (J) { - return ip(J) ? new xr(J) : J - }, - W = function (o, c, I, $, x, R, T) { - var G = f.interactiveInfo, - _ = o.transform; - if (_) return f.save(), f.setTransform(_.a, _.b, _.c, _.d, _.tx, _.ty), G && G.compInfos.push({ - comp: o, - rect: c, - matrix: _.clone(), - prefix: Nh, - refRect: G.refRect - }), !0; - x === Z && (x = 1), R === Z && (R = 1); - var S = Q(o, "clipPercentage"), - W = jg(I, c); - if (W && !$ && 1 === x && 1 === R && !(1 > S)) return G && G.compInfos.push({ - comp: o, - rect: c, - matrix: G.matrix.clone(), - prefix: Nh, - refRect: G.refRect - }), !1; - T = T || Tm; - var N = c.x + c.width * T.x, - M = c.y + c.height * T.y, - p = I.x + I.width * T.x, - j = I.y + I.height * T.y, - E = I.width ? x * (c.width / I.width) : 1, - k = I.height ? R * (c.height / I.height) : 1; - if (f.save(), G && (G.matrix.appendTranslate(N, M).appendRotate($).appendScale(E, k).appendTranslate(-p, -j), G.compInfos.push({ - comp: o, - rect: c, - matrix: G.matrix.clone(), - prefix: Nh, - refRect: G.refRect - })), wh(f, N, M), jc(f, $ || 0), ec(f, E, k), wh(f, -p, -j), 1 > S) { - 0 > S && (S = 0); - var w = Wh(I, Q(o, "clipDirection"), S); - f.beginPath(), f.rect(w.x, w.y, w.width, w.height), f.clip() - } - return !0 - }, - O = function () { - f.restore() - }, - S = function (n, N, G) { - var o = Q(n, "path"), - z = Q(n, ac), - L = Q(n, "scaleX"), - l = Q(n, "scaleY"), - m = D(n), - P = F, - S = jp(null, o); - if (G || (G = n.unionRect, G || (G = ms(S), n.path.func || (n.unionRect = G)), P = G), G) { - P || (P = n.unionRect, P || (P = ms(S), n.path.func || (n.unionRect = P))); - var q = W(n, G, P, z, L, l, m), - c = Q(n, "borderPattern"), - v = ls(f, c), - a = b(n, "background"), - r = b(n, "borderColor"), - H = Q(n, "borderWidth"), - j = Q(n, "gradient"), - B = b(n, "gradientColor"), - y = Q(n, "border3d"), - U = b(n, "border3dColor"), - Y = Q(n, "border3dAccuracy"), - I = f.lineJoin, - X = f.lineCap; - f.lineJoin = Q(n, "borderJoin") || Wl, f.lineCap = Q(n, "borderCap") || ob, a ? (Ge(f, a, j, B, P), jp(f, o), f.fill(), v !== f && jp(f, o)) : jp(f, o); - var M = Q(n, "borderWidthAbsolute"); - if (M && (f.save(), f.setTransform(1, 0, 0, 1, 0, 0)), H && r && (f.lineWidth = H, f.strokeStyle = r, f.stroke(), y && fr(f, r, U, H, s, Y)), _l(f, c), Q(n, "dash")) { - var h = Q(n, "dashWidth") || H; - if (h > 0) { - c = Q(n, "dashPattern") || up; - var v = ls(f, c, Q(n, "dashOffset")), - Z = b(n, "dashColor") || b(dm); - v !== f && jp(f, o), f.strokeStyle = Z, f.lineWidth = h, f.stroke(), Q(n, "dash3d") && fr(f, Z, b(n, "dash3dColor"), h, s, Q(n, "dash3dAccuracy")), _l(f, c) - } - } - M && f.restore(), N === Tq && Wq(f, a, Q(n, "depth"), P), f.lineJoin = I, f.lineCap = X, q && O() - } - }, - N = function ($, e, T, p) { - var x = Q($, _b, X), - G = Q($, ac), - B = D($); - if (x && p.fitSize) { - var m = new xr, - V = ms(x), - Y = M($, V, p), - P = V.x + B.x * V.width, - _ = V.y + B.y * V.height, - K = Y.x + B.x * Y.width, - u = Y.y + B.y * Y.height, - N = V.width ? Y.width / V.width : 1, - c = V.height ? Y.height / V.height : 1; - x.each(function (w) { - m.add({ - x: K + (w.x - P) * N, - y: u + (w.y - _) * c - }) - }), x = m, $.unionRect = null - } - var j = Q($, "scaleX"), - C = Q($, "scaleY"), - v = e === bl, - R = F; - if (!T && v && (T = $.unionRect, T || (T = ms(x), $.points.func || ($.unionRect = T)), R = T), T) { - v ? R || (R = $.unionRect, R || (R = ms(x), $.points.func || ($.unionRect = R))) : R = T; - var i, r, o, n, E = W($, T, R, G, j, C, B), - S = Q($, "borderPattern"), - H = ls(f, S), - w = b($, "background"), - U = ii(Q($, "repeatImage"), z, A), - q = Q($, "gradientPack"), - k = b($, "borderColor"), - g = Q($, "borderWidth"), - I = ii(Q($, "borderRepeatImage"), z, A), - J = Q($, "segments", y), - l = Q($, "gradient"), - t = b($, "gradientColor"), - L = Q($, "border3d"), - a = b($, "border3dColor"), - Z = Q($, "border3dAccuracy"), - Gd = Q($, "closePath"), - gg = Q($, "fillRule") || "nonzero", - kk = f.lineJoin, - Pq = f.lineCap; - if (f.lineJoin = Q($, "borderJoin") || Wl, f.lineCap = Q($, "borderCap") || ob, v) - if (w || U || q) { - var Te = Q($, "fillClipPercentage"); - if (1 > Te) { - 0 > Te && (Te = 0); - var km = Wh(R, Q($, "fillClipDirection"), Te); - f.save(), f.beginPath(), f.rect(km.x, km.y, km.width, km.height), f.clip() - } - en(f, x, J, Gd), q ? uq(f, q, b) : U ? fg(f, U, z, A, d, h) : Ge(f, w, l, t, R), f.fill(gg), q && f.restore(), 1 > Te && f.restore(), H !== f && en(H, x, J, Gd) - } else en(H, x, J, Gd); - else if ("roundRect" === e ? i = Q($, "cornerRadius") : "polygon" === e ? i = Q($, "polygonSide") : "arc" === e && (i = Q($, "arcFrom"), r = Q($, "arcTo"), o = Q($, "arcClose"), n = Q($, "arcOval")), w || U || q) { - var Te = Q($, "fillClipPercentage"); - if (1 > Te) { - 0 > Te && (Te = 0); - var km = Wh(R, Q($, "fillClipDirection"), Te); - f.save(), f.beginPath(), f.rect(km.x, km.y, km.width, km.height), f.clip() - } - Ej(f, e, R, i, r, o, n), q ? uq(f, q, b) : U ? fg(f, U, z, A, d, h) : Ge(f, w, l, t, R), f.fill(gg), q && f.restore(), 1 > Te && f.restore(), f !== H && Ej(H, e, R, i, r, o, n) - } else Ej(H, e, R, i, r, o, n); - var yh = Q($, "borderWidthAbsolute"); - if (yh && (f.save(), f.setTransform(1, 0, 0, 1, 0, 0)), g && (k || I) && (f.lineWidth = g, I ? qb(f, I, z, A, d, h) : f.strokeStyle = k, f.stroke(), L && fr(f, k, a, g, s, Z)), _l(f, S), Q($, "dash")) { - var Yi = Q($, "dashWidth") || g; - if (Yi > 0) { - S = Q($, "dashPattern") || up; - var H = ls(f, S, Q($, "dashOffset")), - Yr = b($, "dashColor") || b(dm); - H !== f && (v ? en(H, x, J, Gd) : Ej(H, e, R, i, r, o, n)), f.strokeStyle = Yr, f.lineWidth = Yi, f.stroke(), Q($, "dash3d") && fr(f, Yr, b($, "dash3dColor"), Yi, s, Q($, "dash3dAccuracy")), _l(f, S) - } - } - yh && f.restore(), e === Tq && Wq(f, w, Q($, "depth"), R), f.lineJoin = kk, f.lineCap = Pq, E && O() - } - }, - K = function (u, U) { - var Z = z || Q(u, dg), - w = A || Q(u, "blendMode"), - D = Q(u, "name"), - o = ii(D, Z, w); - o ? qk(f, o, Q(u, "stretch"), U.x, U.y, U.width, U.height, d, h, Z, null, w) : Jp = !1 - }, - L = function (G, c) { - var g = Q(G, "text"); - g != F && nd(f, g, Q(G, "font"), b(G, dg), c.x, c.y, c.width, c.height, Q(G, "align"), Q(G, "vAlign")) - }, - G = function (A, d) { - Ie(f, b(A, dg), d.x, d.y, d.width, d.height, Q(A, "width")) - }, - P = function (p, W) { - var E = Q(p, kd), - D = 0; - if (E && (E.forEach(function (V) { - D += V - }), D > 0)) { - for (var h = Q(p, "colors") || ch, B = Q(p, "startAngle") || 0, R = Q(p, "hollow"), I = Q(p, Bg), N = Q(p, Vm), M = Q(p, fe), P = I ? new xr : F, t = W.x, v = W.y, m = W.width, z = W.height, Y = t + m / 2, r = v + z / 2, y = V(m, z) / 2, j = 0, l = 0; l < E.length; l++) { - var c = E[l], - x = $ * c / D, - U = B + x; - if (f.fillStyle = h[j++], j === h.length && (j = 0), f.beginPath(), R) { - var q = Y + k(B) * y / 2, - i = r + n(B) * y / 2, - A = Y + k(U) * y, - X = r + n(U) * y; - f.moveTo(q, i), f.arc(Y, r, y / 2, B, U, !1), f.lineTo(A, X), f.arc(Y, r, y, U, B, !0) - } else f.moveTo(Y, r), f.arc(Y, r, y, U, B, !0); - P && (x = (B + U) / 2, P.add({ - text: Mf(I) ? I(c, l, D, d) : c, - x: Y + .75 * k(x) * y, - y: r + .75 * n(x) * y - })), f.closePath(), f.fill(), B = U - } - P && P.each(function (t) { - nd(f, t.text, N, M, t.x, t.y, 0, 0, sc) - }) - } - }, - I = function (X, l) { - var o = Q(X, Kh); - if (o && o.length > 0) { - var P = o.length, - T = Q(X, Bg), - R = Q(X, Vm), - S = Q(X, fe), - b = T ? new xr : F, - w = Q(X, "minValue") || 0, - n = Q(X, "maxValue"); - if (n == F && (n = 0, o.forEach(function (A) { - Q(A, kd).forEach(function (v) { - n = q(n, v) - }) - })), w === n) return; - for (var x = l.height / (n - w), t = l.y + n * x, c = Q(o[0], kd).length, I = l.width / (3 * c + 1), r = 2 * I / P, h = 0, M = 0; P > M; M++) - for (var s = o[M], k = Q(s, dg), j = Q(s, "colors"), B = Q(s, kd), K = 0; c > K; K++) { - j ? f.fillStyle = j[K] : k ? f.fillStyle = k : (f.fillStyle = ch[h++], h === ch.length && (h = 0)); - var C = B[K], - Z = C * x, - z = l.x + (1 + 3 * K) * I + M * r; - if (fl(f, z, t - Z, r, Z), b) { - var W = Mf(T) ? T(C, K, s, d) : C, - H = ln(R, W).height; - b.add({ - x: z, - y: t - Z - H, - width: r, - height: H, - text: W - }) - } - } - b && b.each(function (L) { - nd(f, L.text, R, S, L.x, L.y, L.width, L.height, sc) - }) - } - }, - j = function (T, g) { - var v = Q(T, Kh); - if (v && v.length > 0) { - var u = v.length, - $ = Q(v[0], kd).length, - H = g.width / (3 * $ + 1), - B = 0, - w = Q(T, "maxValue"), - S = Q(T, Bg), - U = Q(T, Vm), - M = Q(T, fe), - D = S ? new xr : F; - if (w == F) { - w = 0; - for (var O = 0; $ > O; O++) { - for (var C = 0, V = 0; u > V; V++) C += Q(v[V], kd)[O]; - w = q(w, C) - } - } - if (w > 0) { - for (var O = 0; $ > O; O++) - for (var m = g.y + g.height, V = 0; u > V; V++) { - var J = v[V], - Y = Q(J, dg), - z = Q(J, kd)[O], - E = z / w * g.height; - Y ? f.fillStyle = Y : (f.fillStyle = ch[B++], B === ch.length && (B = 0)), m -= E; - var k = { - x: g.x + (1 + 3 * O) * H, - y: m, - width: 2 * H, - height: E - }; - fl(f, k.x, k.y, k.width, k.height), D && (k.text = Mf(S) ? S(z, O, J, d) : z, D.add(k)) - } - D && D.each(function (n) { - nd(f, n.text, U, M, n.x, n.y, n.width, n.height, sc) - }) - } - } - }, - r = function (L, R) { - var C = Q(L, Kh); - if (C && C.length > 0) { - for (var q = C.length, V = Q(C[0], kd).length, u = R.width / (3 * V + 1), Y = 0, K = Q(L, Bg), N = Q(L, Vm), t = Q(L, fe), b = K ? new xr : F, r = 0; V > r; r++) { - for (var s = 0, o = 0; q > o; o++) s += Q(C[o], kd)[r]; - if (s > 0) { - var W = R.y + R.height; - for (o = 0; q > o; o++) { - var O = C[o], - T = Q(O, dg), - j = Q(O, kd)[r], - g = j / s * R.height; - T ? f.fillStyle = T : (f.fillStyle = ch[Y++], Y === ch.length && (Y = 0)), W -= g; - var x = { - x: R.x + (1 + 3 * r) * u, - y: W, - width: 2 * u, - height: g - }; - fl(f, x.x, x.y, x.width, x.height), b && (x.text = Mf(K) ? K(j, r, O, d) : j, b.add(x)) - } - } - } - b && b.each(function ($) { - nd(f, $.text, N, t, $.x, $.y, $.width, $.height, sc) - }) - } - }, - e = function (H, U) { - var D = Q(H, Kh); - if (D && D.length > 0) { - var G = D.length, - _ = Q(H, "minValue") || 0, - E = Q(H, "maxValue"); - if (E == F && (E = 0, D.forEach(function ($) { - Q($, kd).forEach(function (e) { - E = q(E, e) - }) - })), _ === E) return; - for (var z = U.height / (E - _), u = U.y + E * z, k = Q(D[0], kd).length, A = U.width / (3 * k + 1), m = 0, Z = Q(H, "lineWidth") || 2, V = Q(H, "line3d"), N = Q(H, "linePoint"), v = Q(H, Bg), K = Q(H, Vm), w = Q(H, fe), T = 0; G > T; T++) { - var c = D[T], - i = Q(c, dg), - t = Q(c, kd); - i ? f.strokeStyle = i : (i = f.strokeStyle = ch[m++], m === ch.length && (m = 0)), f.beginPath(); - for (var P = 0; k > P; P++) { - var R = U.x + (2 + 3 * P) * A, - y = u - t[P] * z; - 0 === P ? f.moveTo(R, y) : f.lineTo(R, y) - } - if (f.lineWidth = Z, f.stroke(), V && fr(f, i, F, Z, s), N || v) { - var x, l = Z / 2 + 2; - for (P = 0; k > P; P++) { - var n = t[P]; - if (R = U.x + (2 + 3 * P) * A, y = u - n * z, Mf(N) ? N(f, R, y, i, P, c, d) : N && (f.fillStyle = i, f.beginPath(), f.arc(R, y, l, 0, $, !0), f.fill()), Mf(v) ? x = v(n, P, c, d) : v && (x = n), x) { - var g = ln(K, x).height, - p = f.shadowBlur; - if (p) { - var J = f.shadowOffsetX, - B = f.shadowOffsetY, - I = f.shadowColor; - f.shadowOffsetX = 0, f.shadowOffsetY = 0, f.shadowBlur = 0, f.shadowColor = F - } - nd(f, x, K, w, R, y - g - l + 2, 0, g, sc), p && (f.shadowOffsetX = J, f.shadowOffsetY = B, f.shadowBlur = p, f.shadowColor = I) - } - } - } - } - } - }, - H = function (O) { - f = O[0], d = O[1], h = O[2], s = O[3], z = O[4], A = O[5] - }, - B = function () { - return [f, d, h, s, z, A] - }, - E = function ($, u) { - var Y; - h && h.getDrawableState ? Y = h.getDrawableState(d) : h && h.getState ? Y = h.getState(d) : (Y = d instanceof Qp ? d.s(Cp) : null, (Y === Z || null === Y) && (Y = Q($, Cp))); - var o = Q(u, Cp); - return o !== Z && null !== o && o !== Y ? !1 : Q(u, Pd) - }, - t = { - border: G, - image: K, - text: L, - pieChart: P, - columnChart: I, - stackedColumnChart: j, - percentageColumnChart: r, - lineChart: e - }; - return function (T, L, G, i, V, U, e, J, r, n) { - if (L && V && U) { - var P = B(); - f = T, d = e, h = J, !d && h && h.isSelfViewEvent && (d = h), s = h ? h._zoom ? h._zoom : 1 : 1, z = r, A = n; - var j = V, - a = U; - if (true){//Jq()) {//时间修改 - //Jq();//日期控件不能正常显示后加上 - //var o, R, g, I, w; - //0 === f[Pq] ? Jq[0] && (o = !0) : o = !0, f.texureImage2D ? Jq[1] && (R = !0) : R = !0, f.texureImage3D ? Jq[2] && (g = !0) : g = !0, f.drawDNDState ? Jq[3] && (w = !0) : w = !0, rq.widget[0] ? Jq[4] && (I = !0) : I = !0, o && R && g && I && w && (j = G, a = i) - Jq(); - var o, R, g, I, w; - 0 === f[Pq] ? Jq[0] && (o = !0) : o = !0; - f.texureImage2D ? Jq[1] && (R = !0) : R = !0; - f.texureImage3D ? Jq[2] && (g = !0) : g = !0; - f.drawDNDState ? Jq[3] && (w = !0) : w = !0; - rq.widget[0] ? Jq[4] && (I = !0) : I = !0; - j = G; - a = i; - } - if (L.tagName) return dk($f) && !x[$f] || f.drawImage(L, j, a, V, U), H(P), void 0; - if (0 == Q(L, "visible")) return H(P), void 0; - z || (z = Dj(L.color, d, h)), n || (A = Dj(L.blendMode, d, h)), dk($f) && !x[$f] && (V = j, U = a); - var k = xc(L, d, h, V), - K = oo(L, d, h, U), - M = { - x: 0, - y: 0, - width: k, - height: K, - fitSize: Q(L, "fitSize") - }, - q = Q(L, "clip"), - Y = Q(L, "opacity"); - if (M.fitSize) { - var $ = M.rw = Dj(L.width, d, h) || 20; - M.widthScale = k / $; - var C = M.rh = Dj(L.height, d, h) || 20; - M.heightScale = K / C - } - if (f.save(), f.interactiveInfo) { - var m = f.interactiveInfo.matrix, - c = m.clone(); - m.appendTranslate(j, a).appendScale(V / k, U / K), f.interactiveInfo.refRect = M - } - wh(f, j, a), (k !== V || K !== U) && f.scale(V / k, U / K), q && (Mf(q) ? q(f, k, K, d, h, L) : (f.beginPath(), f.rect(0, 0, k, K), f.clip())), Y != F && (f.globalAlpha *= Y), Q(L, "comps").forEach(function (n) { - if (n.prefix) { - var $ = Nh, - B = Dj(n.prefix, d, h); - B && (Nh = Nh + B + ".") - } - if (0 == E(L, n)) return n.prefix && (Nh = $), void 0; - if (Hn.splice(0, 0, n), f.interactiveInfo) var k = f.interactiveInfo.matrix.clone(); - var T = Q(n, "opacity"), - a = Q(n, "shadow"), - w = Q(n, "type"), - r = Q(n, "refRect") || M, - U = p(n, r); - if (T != F) { - var Y = f.globalAlpha; - f.globalAlpha *= T - } - if (a) { - var g = f.shadowOffsetX, - z = f.shadowOffsetY, - H = f.shadowBlur, - c = f.shadowColor, - J = Q(n, "shadowOffsetX"), - q = Q(n, "shadowOffsetY"), - l = Q(n, "shadowBlur"), - i = b(n, "shadowColor"); - f.shadowOffsetX = (J == F ? 3 : J) * s, f.shadowOffsetY = (q == F ? 3 : q) * s, f.shadowBlur = (l == F ? 6 : l) * s, f.shadowColor = i || b(Bc) - } - if ("save" === w) f.save(); - else if ("endClip" === w || "restore" === w) f.restore(); - else if ("clip" === w) f.save(), en(f, Q(n, "points", X), Q(n, "segments", y), !0), f.clip(); - else if (Eg[w]) U = U || { - x: 0, - y: 0, - width: r.width, - height: r.height - }, N(n, w, U, r); - else if (w === bl) N(n, w, U, r); - else if ("SVGPath" === w) S(n, w, U); - else { - U = U || { - x: 0, - y: 0, - width: r.width, - height: r.height - }; - var I = Q(n, ac), - j = Q(n, "scaleX"), - C = Q(n, "scaleY"), - K = D(n), - e = W(n, U, U, I, j, C, K); - if (Mf(w)) v(n, w), u.drawCompType(w, f, U, n, d, h); - else if (u.getCompType(w)) { - var V = u.getCompType(w), - A = V.func || V; - v(n, V), u.drawCompType(A, f, U, n, d, h) - } else t[w] ? t[w](n, U) : u.getCompType(w) === Z && Bm.test(w) && qs(w); - e && O() - } - a && (f.shadowOffsetX = g, f.shadowOffsetY = z, f.shadowBlur = H, f.shadowColor = c), T != F && (f.globalAlpha = Y), f.interactiveInfo && (f.interactiveInfo.matrix = k), n.prefix && (Nh = $), Hn.splice(0, 1) - }), f.interactiveInfo && (f.interactiveInfo.matrix = c), f.restore(), H(P) - } - } - }(); - u.getCurrentComp = function () { - return Hn[0] - }, u.getParentComp = function () { - return Hn[1] - }, u.getInternal = function () { - return { - isEnter: hd, - isEsc: bj, - isSpace: Cf, - isLeft: Wk, - isUp: Nk, - isRight: _i, - isDown: ri, - addMethod: Uh, - superCall: fi, - toPointsArray: Yo, - translateAndScale: tf, - appendArray: gc, - createWorldMatrix: Jn, - vec3TransformMat4: Td, - setCanvas: Bn, - createDiv: dd, - createView: ve, - createCanvas: uo, - createImage: ee, - initContext: Wd, - layout: qp, - fillRect: fl, - Mat: In, - drawBorder: Ie, - isString: dk, - setBorder: Yq, - getPropertyValue: jq, - setPropertyValue: Di, - drawVerticalLine: cs, - draw3DRect: Wq, - getPinchDist: zo, - isSameRect: jg, - getPosition: Re, - intersectionLineRect: Rl, - getNodeRect: Rp, - getEdgeAgentPosition: Yg, - getEdgeHostPosition: Eo, - getImageWidth: xc, - getImageHeight: oo, - initItemElement: bh, - drawPoints: en, - createG2: ls, - closePopup: ek, - isH: Oj, - createAnim: Il, - createNormalMatrix: Rq, - toColorArray: ns, - createNormals: Gb, - toFloatArray: ed, - glMV: gk, - glPop: Gf, - batchShape: Mp, - createNodeMatrix: sj, - getShapeModel: bf, - getFaceInfo: _e, - transformAppend: yp, - drawFaceInfo: io, - to3dPointsArray: vh, - setGLDebugMode: function (M) { - Gi = M - }, cube: function () { - return { - vs: Ef, - is: Lq, - uv: mi - } - }, ui: function () { - return { - DataUI: Tp, - NodeUI: Af, - EdgeUI: wn, - GroupUI: Fn, - ShapeUI: Xp, - GridUI: _n, - Data3dUI: Wj, - Node3dUI: gf, - Shape3dUI: Vp - } - }, getInternalVersion: function () { - return "U2FsdGVkX1/K/qN+9JeXiDIJbdr2TMT5dD+JjFHm0aE=" - }, getDragger: function () { - return si - }, addMSMap: function (k) { - Uh(fb, k) - }, k: e, - addEventListener: K, - removeEventListener: b - } - }, - function (I) { - function x(w, V) { - w != F && (V == F && Gl != typeof w ? this._54O(w, 256) : this._54O(w, V)) - } - - function X() { - return new x(F) - } - - function i(N, z, p, n, o, Y) { - for (; --Y >= 0;) { - var y = z * this[N++] + p[n] + o; - o = T(y / 67108864), p[n++] = 67108863 & y - } - return o - } - - function g(H, S, C, $, M, p) { - for (var F = 32767 & S, m = S >> 15; --p >= 0;) { - var x = 32767 & this[H], - z = this[H++] >> 15, - b = m * x + z * F; - x = F * x + ((32767 & b) << 15) + C[$] + (1073741823 & M), M = (x >>> 30) + (b >>> 15) + m * z + (M >>> 30), C[$++] = 1073741823 & x - } - return M - } - - function U(k, w, S, m, V, r) { - for (var o = 16383 & w, B = w >> 14; --r >= 0;) { - var c = 16383 & this[k], - R = this[k++] >> 14, - O = B * c + R * o; - c = o * c + ((16383 & O) << 14) + S[m] + V, V = (c >> 28) + (O >> 14) + B * R, S[m++] = 268435455 & c - } - return V - } - - function d(N) { - return _o.charAt(N) - } - - function R(L, N) { - var l = lr[L.charCodeAt(N)]; - return l == F ? -1 : l - } - - function t(O) { - for (var i = this.t - 1; i >= 0; --i) O[i] = this[i]; - O.t = this.t, O.s = this.s - } - - function A(Q) { - this.t = 1, this.s = 0 > Q ? -1 : 0, Q > 0 ? this[0] = Q : -1 > Q ? this[0] = Q + this.DV : this.t = 0 - } - - function r($) { - var Q = X(); - return Q._58O($), Q - } - - function j(y, K) { - var Y, w = this; - if (16 == K) Y = 4; - else if (8 == K) Y = 3; - else if (256 == K) Y = 8; - else if (2 == K) Y = 1; - else if (32 == K) Y = 5; - else { - if (4 != K) return w.fromRadix(y, K), void 0; - Y = 2 - } - w.t = 0, w.s = 0; - for (var h = y.length, C = !1, g = 0; --h >= 0;) { - var U = 8 == Y ? 255 & y[h] : R(y, h); - 0 > U ? "-" == y.charAt(h) && (C = !0) : (C = !1, 0 == g ? w[w.t++] = U : g + Y > w.DB ? (w[w.t - 1] |= (U & (1 << w.DB - g) - 1) << g, w[w.t++] = U >> w.DB - g) : w[w.t - 1] |= U << g, g += Y, g >= w.DB && (g -= w.DB)) - } - 8 == Y && 0 != (128 & y[0]) && (w.s = -1, g > 0 && (w[w.t - 1] |= (1 << w.DB - g) - 1 << g)), w._57O(), C && x.ZERO._78O(w, w) - } - - function _() { - for (var j = this, H = j.s & j.DM; j.t > 0 && j[j.t - 1] == H;)--j.t - } - - function D($) { - var v = this; - if (v.s < 0) return "-" + v._85O()[cq]($); - var X; - if (16 == $) X = 4; - else if (8 == $) X = 3; - else if (2 == $) X = 1; - else if (32 == $) X = 5; - else { - if (4 != $) return v.toRadix($); - X = 2 - } - var n, E = (1 << X) - 1, - e = !1, - w = "", - W = v.t, - N = v.DB - W * v.DB % X; - if (W-- > 0) - for (N < v.DB && (n = v[W] >> N) > 0 && (e = !0, w = d(n)); W >= 0;) X > N ? (n = (v[W] & (1 << N) - 1) << X - N, n |= v[--W] >> (N += v.DB - X)) : (n = v[W] >> (N -= X) & E, 0 >= N && (N += v.DB, --W)), n > 0 && (e = !0), e && (w += d(n)); - return e ? w : "0" - } - - function h() { - var z = X(); - return x.ZERO._78O(this, z), z - } - - function O() { - return this.s < 0 ? this._85O() : this - } - - function M(r) { - var P = this, - b = P.s - r.s; - if (0 != b) return b; - var j = P.t; - if (b = j - r.t, 0 != b) return P.s < 0 ? -b : b; - for (; --j >= 0;) - if (0 != (b = P[j] - r[j])) return b; - return 0 - } - - function K(n) { - var $, H = 1; - return 0 != ($ = n >>> 16) && (n = $, H += 16), 0 != ($ = n >> 8) && (n = $, H += 8), 0 != ($ = n >> 4) && (n = $, H += 4), 0 != ($ = n >> 2) && (n = $, H += 2), 0 != ($ = n >> 1) && (n = $, H += 1), H - } - - function y() { - var V = this; - return V.t <= 0 ? 0 : V.DB * (V.t - 1) + K(V[V.t - 1] ^ V.s & V.DM) - } - - function o(w, B) { - var a; - for (a = this.t - 1; a >= 0; --a) B[a + w] = this[a]; - for (a = w - 1; a >= 0; --a) B[a] = 0; - B.t = this.t + w, B.s = this.s - } - - function J(_, w) { - for (var j = _; j < this.t; ++j) w[j - _] = this[j]; - w.t = q(this.t - _, 0), w.s = this.s - } - - function C(F, g) { - var A, J = this, - d = F % J.DB, - a = J.DB - d, - v = (1 << a) - 1, - n = T(F / J.DB), - e = J.s << d & J.DM; - for (A = J.t - 1; A >= 0; --A) g[A + n + 1] = J[A] >> a | e, e = (J[A] & v) << d; - for (A = n - 1; A >= 0; --A) g[A] = 0; - g[n] = e, g.t = J.t + n + 1, g.s = J.s, g._57O() - } - - function W(G, r) { - var H = this; - r.s = H.s; - var Y = T(G / H.DB); - if (Y >= H.t) return r.t = 0, void 0; - var M = G % H.DB, - c = H.DB - M, - F = (1 << M) - 1; - r[0] = H[Y] >> M; - for (var A = Y + 1; A < H.t; ++A) r[A - Y - 1] |= (H[A] & F) << c, r[A - Y] = H[A] >> M; - M > 0 && (r[H.t - Y - 1] |= (H.s & F) << c), r.t = H.t - Y, r._57O() - } - - function L(f, n) { - for (var F = this, i = 0, j = 0, J = V(f.t, F.t); J > i;) j += F[i] - f[i], n[i++] = j & F.DM, j >>= F.DB; - if (f.t < F.t) { - for (j -= f.s; i < F.t;) j += F[i], n[i++] = j & F.DM, j >>= F.DB; - j += F.s - } else { - for (j += F.s; i < f.t;) j -= f[i], n[i++] = j & F.DM, j >>= F.DB; - j -= f.s - } - n.s = 0 > j ? -1 : 0, -1 > j ? n[i++] = F.DV + j : j > 0 && (n[i++] = j), n.t = i, n._57O() - } - - function z(g, Z) { - var I = this.abs(), - c = g.abs(), - s = I.t; - for (Z.t = s + c.t; --s >= 0;) Z[s] = 0; - for (s = 0; s < c.t; ++s) Z[s + I.t] = I.am(0, c[s], Z, s, 0, I.t); - Z.s = 0, Z._57O(), this.s != g.s && x.ZERO._78O(Z, Z) - } - - function G(L) { - for (var n = this.abs(), H = L.t = 2 * n.t; --H >= 0;) L[H] = 0; - for (H = 0; H < n.t - 1; ++H) { - var U = n.am(H, n[H], L, 2 * H, 0, 1); - (L[H + n.t] += n.am(H + 1, 2 * n[H], L, 2 * H + 1, U, n.t - H - 1)) >= n.DV && (L[H + n.t] -= n.DV, L[H + n.t + 1] = 1) - } - L.t > 0 && (L[L.t - 1] += n.am(H, n[H], L, 2 * H, 0, 1)), L.s = 0, L._57O() - } - - function p(s, j, E) { - var i = s.abs(), - S = this; - if (!(i.t <= 0)) { - var o = S.abs(); - if (o.t < i.t) return j != F && j._58O(0), E != F && S._77O(E), void 0; - E == F && (E = X()); - var W = X(), - u = S.s, - n = s.s, - b = S.DB - K(i[i.t - 1]); - b > 0 ? (i._44O(b, W), o._44O(b, E)) : (i._77O(W), o._77O(E)); - var e = W.t, - p = W[e - 1]; - if (0 != p) { - var U = p * (1 << S.F1) + (e > 1 ? W[e - 2] >> S.F2 : 0), - h = S.FV / U, - f = (1 << S.F1) / U, - t = 1 << S.F2, - C = E.t, - m = C - e, - g = j == F ? X() : j; - for (W._59O(m, g), E._52O(g) >= 0 && (E[E.t++] = 1, E._78O(g, E)), x.ONE._59O(e, g), g._78O(W, W); W.t < e;) W[W.t++] = 0; - for (; --m >= 0;) { - var r = E[--C] == p ? S.DM : T(E[C] * h + (E[C - 1] + t) * f); - if ((E[C] += W.am(0, r, E, m, 0, e)) < r) - for (W._59O(m, g), E._78O(g, E); E[C] < --r;) E._78O(g, E) - } - j != F && (E._45O(e, j), u != n && x.ZERO._78O(j, j)), E.t = e, E._57O(), b > 0 && E._46O(b, E), 0 > u && x.ZERO._78O(E, E) - } - } - } - - function c(W) { - var j = X(); - return this.abs()._49O(W, F, j), this.s < 0 && j._52O(x.ZERO) > 0 && W._78O(j, j), j - } - - function l(u) { - this.m = u - } - - function a(j) { - return j.s < 0 || j._52O(this.m) >= 0 ? j.mod(this.m) : j - } - - function v(S) { - return S - } - - function S(P) { - P._49O(this.m, F, P) - } - - function Z(i, q, T) { - i._47O(q, T), this._74O(T) - } - - function Q(t, v) { - t._48O(v), this._74O(v) - } - - function B() { - if (this.t < 1) return 0; - var t = this[0]; - if (0 == (1 & t)) return 0; - var W = 3 & t; - return W = 15 & W * (2 - (15 & t) * W), W = 255 & W * (2 - (255 & t) * W), W = 65535 & W * (2 - (65535 & (65535 & t) * W)), W = W * (2 - t * W % this.DV) % this.DV, W > 0 ? this.DV - W : -W - } - - function u(f) { - var r = this; - r.m = f, r.mp = f._50O(), r.mpl = 32767 & r.mp, r.mph = r.mp >> 15, r.um = (1 << f.DB - 15) - 1, r.mt2 = 2 * f.t - } - - function f(m) { - var b = X(); - return m.abs()._59O(this.m.t, b), b._49O(this.m, F, b), m.s < 0 && b._52O(x.ZERO) > 0 && this.m._78O(b, b), b - } - - function b(n) { - var U = X(); - return n._77O(U), this._74O(U), U - } - - function N(t) { - for (var O = this; t.t <= O.mt2;) t[t.t++] = 0; - for (var z = 0; z < O.m.t; ++z) { - var $ = 32767 & t[z], - E = $ * O.mpl + (($ * O.mph + (t[z] >> 15) * O.mpl & O.um) << 15) & t.DM; - for ($ = z + O.m.t, t[$] += O.m.am(0, E, t, z, 0, O.m.t); t[$] >= t.DV;) t[$] -= t.DV, t[++$]++ - } - t._57O(), t._45O(O.m.t, t), t._52O(O.m) >= 0 && t._78O(O.m, t) - } - - function E(z, e) { - z._48O(e), this._74O(e) - } - - function uk(I, y, n) { - I._47O(y, n), this._74O(n) - } - - function Ad() { - return 0 == (this.t > 0 ? 1 & this[0] : this.s) - } - - function Il(Z, J) { - if (Z > 4294967295 || 1 > Z) return x.ONE; - var P = X(), - j = X(), - A = J._73O(this), - C = K(Z) - 1; - for (A._77O(P); --C >= 0;) - if (J._76O(P, j), (Z & 1 << C) > 0) J._75O(j, A, P); - else { - var y = P; - P = j, j = y - } - return J.revert(P) - } - - function jg(t, L) { - var J; - return J = 256 > t || L._51O() ? new l(L) : new u(L), this.exp(t, J) - } - - function Yc() { - var q = this; - if (q.s < 0) { - if (1 == q.t) return q[0] - q.DV; - if (0 == q.t) return -1 - } else { - if (1 == q.t) return q[0]; - if (0 == q.t) return 0 - } - return (q[1] & (1 << 32 - q.DB) - 1) << q.DB | q[0] - } - - function dl(F, E) { - return new x(F, E) - } - - function gb() { - var p = this; - p.n = F, p.e = 0, p.d = F, p.p = F, p.q = F, p.dmp1 = F, p.dmq1 = F, p._10A = F - } - - function ti(I) { - return I._53O(this.e, this.n) - } - - function js(Q) { - var l, _, N, z = "", - s = 0; - for (l = 0; l < Q.length && Q.charAt(l) != Me; ++l) N = Ug.indexOf(Q.charAt(l)), 0 > N || (0 == s ? (z += d(N >> 2), _ = 3 & N, s = 1) : 1 == s ? (z += d(_ << 2 | N >> 4), _ = 15 & N, s = 2) : 2 == s ? (z += d(_), z += d(N >> 2), _ = 3 & N, s = 3) : (z += d(_ << 2 | N >> 4), z += d(15 & N), s = 0)); - return 1 == s && (z += d(_ << 2)), z - } - - function Nm(J) { - var R = J.split(""), - W = js(J); - return R.forEach(function (B) { - var m = B.length; - m > 0 && W && (ug += Zb(B)) - }), W - } - - function Zq(A, B) { - var n = Yq._4O.Util._56O(A, "ss"), - P = {}, - K = 0; - return P.v = n == B, P.t = 1, P.s = 0 > K ? -1 : 0, yo = P.v, K > 0 ? P[0] = K : -1 > K ? P[0] = K + P.DV : P.t = 0, [n, P] - } - - function ko(s) { - var p = 38, - u = s.substring(0, p); - if (u && 30 == u.indexOf("05000420")) { - var R = ["ss", s.substring(p)]; - return R - } - return [] - } - - function rb(E, Z) { - Z = Z.replace(Lp, ""), Z = Z.replace(/[ \n]+/g, ""); - var V = dl(Z, 16); - if (V._55O() > this.n._55O()) return 0; - var R = this._37O(V), - I = R[cq](16).replace(/^1f+00/, ""), - K = ko(I); - if (0 == K.length) return !1; - for (var v, W, C, w = .5, G = rr, J = [0, .5, .75, .875, .9375], F = [], p = [], Q = [], q = $ / G, N = K[1], f = Zq(E, N)[0], c = 0, L = 0; c < J.length; c++) { - var z = 0 === c % 2 ? 0 : .5; - for (v = 0; G >= v; v++) W = (v + z) * q, C = 1 - J[c], F.push(k(W) * w * C, -w + 2 * J[c] * w, -n(W) * w * C), p.push((v + z) / G, C) - } - for (c = 0; c < J.length - 1; c++) { - var B = c * (G + 1), - H = (c + 1) * (G + 1); - for (v = 0; G > v; v++) Q.push(B + v, H + v + 1, H + v, B + v, B + v + 1, H + v + 1) - } - return Q.forEach(function (P) { - L += P - }), N == f && L > 10 - } - var Hr, gh = 0xdeadbeefcafe, - Le = 15715070 == (16777215 & gh), - cq = "toString", - Aq = "", - Yh = "nat", - tl = function () { }; - H = I["D" + 11182[cq](P(2, 5))]; - var ao = x.prototype; - Df += Wg.substr(0, 1); - var Nj = I.navigator ? I.navigator.appName : ""; - Le && "Microsoft Internet Explorer" == Nj ? (ao.am = g, Hr = 30) : Le && "Netscape" != Nj ? (ao.am = i, Hr = 26) : (ao.am = U, Hr = 28), ao.DB = Hr, ao.DM = (1 << Hr) - 1, ao.DV = 1 << Hr; - var tn = 52; - ao.FV = P(2, tn), ao.F1 = tn - Hr, ao.F2 = 2 * Hr - tn; - var hn, vn, _o = "0123456789abcdefghijklmnopqrstuvwxyz", - lr = [], - ci = function (E) { - return String.fromCharCode(E) - }; - for (hn = "0".charCodeAt(0), vn = 0; 9 >= vn; ++vn) lr[hn++] = vn; - for (hn = "a".charCodeAt(0), vn = 10; 36 > vn; ++vn) lr[hn++] = vn; - for (hn = "A".charCodeAt(0), vn = 10; 36 > vn; ++vn) lr[hn++] = vn; - var Af = l.prototype; - Af._73O = a, Af.revert = v, Af._74O = S, Af._75O = Z, Af._76O = Q; - var hk = u.prototype; - hk._73O = f, hk.revert = b, hk._74O = N, hk._75O = uk, hk._76O = E, ao._77O = t, ao._58O = A, ao._54O = j, ao._57O = _, ao._59O = o, ao._45O = J, ao._44O = C, ao._46O = W, ao._78O = L, ao._47O = z, ao._48O = G, ao._49O = p, ao._50O = B, ao._51O = Ad, ao.exp = Il, ao.toString = D, ao._85O = h, ao.abs = O, ao._52O = M, ao._55O = y, ao.mod = c, ao._53O = jg, x.ZERO = r(0), x.ONE = r(1), ao._86O = Yc; - var nh = function (r, B) { - var K = this; - K.isPublic = !0, typeof r !== Gl ? (K.n = r, K.e = B) : r != F && B != F && r.length > 0 && B.length > 0 && (K.n = dl(r, 16), K.e = Zb(B, 16)) - }; - Fb = function () { - var w, b, h = Nm(yb), - R = h.substr(0, 4), - l = h.substr(4, 2), - U = h.substr(6, 2), - Q = 1, - i = !Q, - M = e, - E = [], - t = zi.charAt(7); - if (H && (H[cq]().indexOf(Yh) < 0 || H[Df][cq]().indexOf(Yh) < 0 || !h ? w = F : (h = new H(R - 0, l - Q, U - 0), b = h.setHours(9), H[Df]() > b ? w = ok[t] : i = !0)), h && w && w[0] && w[s(.5)] && M) { - var k = Og(w[0]), - n = Og(w[1]); - for (var O in n) E.push(O); - var X, P = 0, - J = k[E[P]], - x = n[E[P++]], - V = n[E[P++]], - c = n[E[P++]], - S = n[E[P++]], - r = n[E[P++]], - a = n[E[P++]], - j = k[E[P]], - v = n[E[P++]], - $ = Om._27O(M); - if (J === x && $ && v) { - X = x + V + c + S + r + a; - var I = !a || a === kg; - if (!I && a) - for (var y, N = 0, o = a.length; o > N; N++) a[N] === dj[P] ? y === kg ? I = !0 : y[0] === Uo[5] && kg && kg.indexOf(y.substr(1)) >= 0 ? I = !0 : y = F : (y == F ? y = a[N] : y += a[N], N === o - 1 && (y === kg ? I = !0 : y[0] === Uo[5] && kg && kg.indexOf(y.substr(1)) >= 0 && (I = !0))); - X && $._31O(X, v) && $._31O(J, j) && I && (!r || H[Df]() < r) && (i = !0) - } - } - return i || (Ej = Ro), t - }; - var gm = gb.prototype; - gm._37O = ti, gm._38O = nh; - var Ug = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", - Me = "=", - Mj = 25, - Pc = 10, - yb = "ICFhU===", - So = So || function (i, b) { - var f = {}, - L = f._7A = {}, - a = L._6A = function () { - function k() { } - return { - _80O: function (i) { - k.prototype = this; - var e = new k; - return i && e._5A(i), e.hasOwnProperty("_82O") || (e._82O = function () { - e.$super._82O.apply(this, arguments) - }), e._82O.prototype = e, e.$super = this, e - }, _3A: function () { - var p = this._80O(); - return p._82O.apply(p, arguments), p - }, _82O: function () { }, _5A: function (t) { - for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); - t.hasOwnProperty(cq) && (this.toString = t.toString) - }, _88O: function () { - return this._82O.prototype._80O(this) - } - } - }(), - g = L._39O = a._80O({ - _82O: function (_, g) { - _ = this._84O = _ || [], this._65O = g != b ? g : 4 * _.length - }, toString: function (R) { - return (R || H).stringify(this) - }, _89O: function (N) { - var $ = this._84O, - m = N._84O, - x = this._65O, - s = N._65O; - if (this._57O(), x % 4) - for (var c = 0; s > c; c++) { - var X = 255 & m[c >>> 2] >>> 24 - 8 * (c % 4); - $[x + c >>> 2] |= X << 24 - 8 * ((x + c) % 4) - } else if (m.length > 65535) - for (var c = 0; s > c; c += 4) $[x + c >>> 2] = m[c >>> 2]; - else $.push.apply($, m); - return this._65O += s, this - }, _57O: function () { - var G = this._84O, - U = this._65O; - G[U >>> 2] &= 4294967295 << 32 - 8 * (U % 4), G.length = s(U / 4) - }, _88O: function () { - var r = a._88O.call(this); - return r._84O = this._84O.slice(0), r - }, _87O: function (W) { - for (var T = [], I = 0; W > I; I += 4) T.push(0 | 4294967296 * m); - return new g._82O(T, W) - } - }), - Z = f._2A = {}, - H = Z._69O = { - stringify: function (V) { - var t, k = V._84O, - c = V._65O, - g = []; - for (t = 0; c > t; t++) { - var M = 255 & k[t >>> 2] >>> 24 - 8 * (t % 4); - g.push((M >>> 4).toString(16)), g.push((15 & M).toString(16)) - } - return g.join("") - }, _68O: function (s) { - for (var S = s.length, z = [], R = 0; S > R; R += 2) z[R >>> 3] |= Zb(s.substr(R, 2), 16) << 24 - 4 * (R % 8); - return new g._82O(z, S / 2) - } - }, - R = Z._8A = { - stringify: function (Y) { - var K, M = Y._84O, - L = Y._65O, - r = []; - for (K = 0; L > K; K++) { - var P = 255 & M[K >>> 2] >>> 24 - 8 * (K % 4); - r.push(ci(P)) - } - return r.join("") - }, _68O: function (m) { - var R, w = m.length, - v = []; - for (R = 0; w > R; R++) v[R >>> 2] |= (255 & m.charCodeAt(R)) << 24 - 8 * (R % 4); - return new g._82O(v, w) - } - }, - D = Z._9A = { - stringify: function (c) { - try { - return decodeURIComponent(escape(R.stringify(c))) - } catch (p) { - throw new Error("") - } - }, _68O: function (G) { - return R._68O(unescape(encodeURIComponent(G))) - } - }, - w = L._32O = a._80O({ - _1A: function () { - this._83O = new g._82O, this._23O = 0 - }, _33O: function (o) { - typeof o == Gl && (o = D._68O(o)), this._83O._89O(o), this._23O += o._65O - }, _25O: function (M) { - var m = this._83O, - Q = m._84O, - y = m._65O, - c = this._79O, - P = 4 * c, - k = y / P; - k = M ? s(k) : q((0 | k) - this._22O, 0); - var w = k * c, - Y = V(4 * w, y); - if (w) { - for (var J = 0; w > J; J += c) this._20O(Q, J); - var $ = Q.splice(0, w); - m._65O -= Y - } - return new g._82O($, Y) - }, _88O: function () { - var s = a._88O.call(this); - return s._83O = this._83O._88O(), s - }, _22O: 0 - }); - L._66O = w._80O({ - cfg: a._80O(), - _82O: function (d) { - this.cfg = this.cfg._80O(d), this._1A() - }, _1A: function () { - w._1A.call(this), this._34O() - }, _81O: function (u) { - return this._33O(u), this._25O(), this - }, _72O: function (j) { - j && this._33O(j); - var m = this._21O(); - return m - }, _79O: 16, - _26O: function (K) { - return function (S, L) { - return new K._82O(L)._72O(S) - } - }, _19O: function (h) { - return function (S, H) { - return new u._71O._82O(h, H)._72O(S) - } - } - }); - var u = f._67O = {}; - return f - }(); - ! function () { - var U = So, - E = U._7A, - C = E._39O, - $ = E._66O, - g = U._67O, - S = [], - F = []; - ! function () { - function g(r) { - for (var x = w(r), c = 2; x >= c; c++) - if (!(r % c)) return !1; - return !0 - } - - function p(d) { - return 0 | 4294967296 * (d - (0 | d)) - } - for (var Z = 2, s = 0; 64 > s;) g(Z) && (8 > s && (S[s] = p(P(Z, .5))), F[s] = p(P(Z, 1 / 3)), s++), Z++ - }(); - var d = [], - j = g._41O = $._80O({ - _34O: function () { - this._64O = new C._82O(S.slice(0)) - }, _20O: function (Z, t) { - for (var $ = this._64O._84O, I = $[0], L = $[1], P = $[2], e = $[3], n = $[4], J = $[5], A = $[6], s = $[7], y = 0; 64 > y; y++) { - if (16 > y) d[y] = 0 | Z[t + y]; - else { - var C = d[y - 15], - S = (C << 25 | C >>> 7) ^ (C << 14 | C >>> 18) ^ C >>> 3, - h = d[y - 2], - k = (h << 15 | h >>> 17) ^ (h << 13 | h >>> 19) ^ h >>> 10; - d[y] = S + d[y - 7] + k + d[y - 16] - } - var o = n & J ^ ~n & A, - i = I & L ^ I & P ^ L & P, - V = (I << 30 | I >>> 2) ^ (I << 19 | I >>> 13) ^ (I << 10 | I >>> 22), - _ = (n << 26 | n >>> 6) ^ (n << 21 | n >>> 11) ^ (n << 7 | n >>> 25), - p = s + _ + o + F[y] + d[y], - b = V + i; - s = A, A = J, J = n, n = 0 | e + p, e = P, P = L, L = I, I = 0 | p + b - } - $[0] = 0 | $[0] + I, $[1] = 0 | $[1] + L, $[2] = 0 | $[2] + P, $[3] = 0 | $[3] + e, $[4] = 0 | $[4] + n, $[5] = 0 | $[5] + J, $[6] = 0 | $[6] + A, $[7] = 0 | $[7] + s - }, _21O: function () { - var P = this._83O, - G = P._84O, - n = 8 * this._23O, - k = 8 * P._65O; - return G[k >>> 5] |= 128 << 24 - k % 32, G[(k + 64 >>> 9 << 4) + 14] = T(n / 4294967296), G[(k + 64 >>> 9 << 4) + 15] = n, P._65O = 4 * G.length, this._25O(), this._64O - }, _88O: function () { - var i = $._88O.call(this); - return i._64O = this._64O._88O(), i - } - }); - U._41O = $._26O(j), U._42O = $._19O(j) - }(); - var Lp = new RegExp(""); - Lp.compile("[^0-9a-f]", "gi"), gb._28O = -1, gb._29O = -2, gm._31O = rb, gm._63O = rb, gb._43O = -2; - var ye = new function () { - var T = this; - T._5O = function (B, P) { - if ("8" != B.substring(P + 2, P + 3)) return 1; - var H = Zb(B.substring(P + 3, P + 4)); - return 0 == H ? -1 : H > 0 && 10 > H ? H + 1 : -2 - }, T._13O = function (m, f) { - var C = T._5O(m, f); - return 1 > C ? "" : m.substring(f + 2, f + 2 + 2 * C) - }, T._12O = function (G, N) { - var V = T._13O(G, N); - if ("" == V) return -1; - var q; - return q = Zb(V.substring(0, 1)) < 8 ? new x(V, 16) : new x(V.substring(2), 16), q._86O() - }, T._6O = function (q, O) { - var V = T._5O(q, O); - return 0 > V ? V : O + 2 * (V + 1) - }, T._11O = function (v, m) { - var n = T._6O(v, m), - c = T._12O(v, m); - return v.substring(n, n + 2 * c) - }, T._10O = function (r, E) { - var H = T._6O(r, E), - $ = T._12O(r, E); - return H + 2 * $ - }, T._7O = function (l, m) { - var R = [], - H = T._6O(l, m); - R.push(H); - for (var C = T._12O(l, m), e = H, S = 0; ;) { - var Z = T._10O(l, e); - if (Z == F || Z - H >= 2 * C) break; - if (S >= 200) break; - R.push(Z), e = Z, S++ - } - return R - } - }; - if (ye._90O = ci(Pc + 24), ye._91O = Y + ci(Pc * Pc + 8), Yq == F || !Yq) var Yq = {}; - Yq._4O != F && Yq._4O || (Yq._4O = {}); - var _p = Yq._4O; - Yq._4O.Util = new function () { - var a = this; - a._56O = function (X) { - var O = new Yq._4O._3O; - return O._30O(X) - }, a._4A = function (p) { - var B = new Yq._4O._3O; - return B._36O(p) - }, a._11A = function (L) { - var w = new _p._3O; - return w._30O(L) - } - }, Yq._4O._3O = function () { - var u = this; - u._8O = function (J, K) { - if ("ss" == J && "cj" == K) { - try { - u.md = So._67O._41O._3A() - } catch (l) { - tl(Aq) - } - u._24O = function (A) { - u.md._81O(A) - }, u._35O = function (w) { - var S = So._2A._69O._68O(w); - u.md._81O(S) - }, u._60O = function () { - var v = u.md._72O(); - return v[cq](So._2A._69O) - }, u._30O = function (I) { - return u._24O(I), u._60O() - }, u._36O = function (E) { - return u._35O(E), u._60O() - } - } - }, u._24O = function () { - tl(Aq) - }, u._35O = function () { - tl(Aq) - }, u._60O = function () { - tl(Aq) - }, u._30O = function () { - tl(Aq) - }, u._36O = function () { - tl(Aq) - }, u._8O("ss", "cj") - }, Qg = function (g) { - var w = qg[No[7]], - F = 1, - O = !1; - if (Cg.a != qg[Mo]) return Cg.a; - //修改}), g > F) {为时间限制,改为 false - var ck=false; - //abd ="20t22bt02b28 12c12c11", - var wjsd = abd.replace(/b/g, "-").replace(/c/g, ":").replace(/t/g, ""); - var oDate1 = new Date(wjsd); - if (oDate1.getTime() < (new Date()).getTime()) - ck=true; - if (Cg.forEach(function (K) { - F *= K - }), ck){//g > F) { - if (w && w[1] && w[0]) { - var z = w[0], - $ = w[1]; - $ = $.split(ye._90O), z = z.split(ye._90O); - var y = $[3], - A = z[3], - U = $[7], - T = $[11], - W = $[15], - a = $[19], - i = $[23], - S = $[27], - N = z[7], - c = y + U + T + W + a + i, - J = i ? !1 : !0, - P = A === y; - if (i) { - var l = i && i.split(tg("firefox")[3]); - if (l) - for (var E = 0; E < l.length; E++) { - var M = l[E]; - if (M[0] === Ji[8] && (M = M.substring(1)), gs.indexOf(M) >= 0) { - J = !0; - break - } - } - } - O = P && de()(A, N) && de()(c, S) && J && (!a || a > g), O && T.indexOf(Tb.length) >= 0 && (Qg[Tb.length] = Tb), O && T.indexOf(Tb.length + 1) >= 0 && (Qg[Tb.length + 1] = Tb), O && T.indexOf(Tb.length + 3) >= 0 && (Qg[Tb.length + 3] = Tb) - } - O || (Tp.prototype._42 = Xk) - } else O = !0, Qg[Tb.length] = Qg[Tb.length + 1] = Qg[Tb.length + 3] = Tb; - return Cg.a = O, O - }, Mj = String.fromCharCode(Mj + 20); - var Po = function (V) { - return V = V.replace(Lp, Aq), V = V.replace(/[ \n]+/g, Aq) - }, - _l = "30", - Eq = "06", - Gp = "02", - Lg = "03", - lm = dl, - xp = /^1f+00/, - Om = function () { - var R; - return R = { - _18O: function (N) { - var R = N, - n = R.replace(/\s+/g, ""), - P = js(n); - return P - }, _14O: function (D) { - var U = this._18O(D), - s = this._15O(U); - return s - }, _15O: function (z) { - var j = this._17O(z); - if ("2a864886f70d010101" == j._61O) { - var X = this._16O(j.key), - S = new gb; - return S._38O(X.n, X.e), S - } - tl(Aq) - }, _16O: function (w) { - var n = {}; - w.substr(0, 2) != _l && tl(Aq); - var T = ye._7O(w, 0); - return 2 != T.length && tl(Aq), w.substr(T[0], 2) != Gp && tl(Aq), n.n = ye._11O(w, T[0]), w.substr(T[1], 2) != Gp && tl(Aq), n.e = ye._11O(w, T[1]), n - }, _17O: function (h) { - var A = {}; - A._40O = F; - var d = ye._7O(h, 0); - 2 != d.length && tl(Aq); - var b = d[0]; - h.substr(b, 2) != _l && tl(Aq); - var c = ye._7O(h, b); - return 2 != c.length && tl(Aq), h.substr(c[0], 2) != Eq && tl(Aq), A._61O = ye._11O(h, c[0]), h.substr(c[1], 2) == Eq ? A._40O = ye._11O(h, c[1]) : h.substr(c[1], 2) == _l && (A._40O = {}, A._40O.p = ye._70O(h, c[1], [0], Gp), A._40O.q = ye._70O(h, c[1], [1], Gp), A._40O.g = ye._70O(h, c[1], [2], Gp)), h.substr(d[1], 2) != Lg && tl(Aq), A.key = ye._11O(h, d[1]).substr(2), A - } - }, R._17O ? R : F - }(), - bc = Om._27O = function (f) { - return Om._14O(f) - }; - de = function () { - return function (p, J) { - if (p && J) { - J = Po(J); - var G = lm(J, P(2, 4)), - m = this; - if (!m || !m.n || G._55O() > m.n._55O()) return 0; - var L = m._37O(G), - i = L[cq](P(2, 4)).replace(xp, ""), - Z = ko(i); - if (0 == Z.length) return !1; - var n = Z[0], - x = Z[1], - X = function (D) { - return Yq._4O.Util._56O(D, n) - }, - O = X(p); - return x == O - } - }.bind(bc(e)) - }; - var aj, dr; - return function () { - var O = xj.length - Zi.length; - if (O > 0) - for (var F = 0; O > F; F++) aj = _p.Util, dr = Po - }(), $i = function (_, h) { - h = dr(h); - var n = bc(ph), - A = oe.length, - p = 2 * A, - d = lm(h, P(A, p)), - M = n, - a = !0; - if (M) { - var l = M[Jc[0]]; - l && d._55O() <= l._55O() && (a = !1) - } - if (a) return 0; - var X = M._37O(d), - k = X[cq](P(A, p)).replace(xp, ""), - J = ko(k); - if (0 == J.length) return !1; - var Z = J[0], - D = J[1], - R = aj._11A(_, Z); - return D == R - }, Om - }(x, o), Uh(u, { - load: function () { - var j = {}, - $ = function (k) { - return k ? "c_" + (k.sync ? "1" : "0") + "_" + (k.post ? "1" : "0") + "_" + (k.responseType || "H") + "_" + (k.mimeType || "H") + "_" + (k.data ? JSON.stringify(k.data) : "H") : "" - }; - return function (F, U, Y) { - var P, n = j[F], - y = $(Y); - return n && (P = n[y]) ? (P.push(U), void 0) : (j[F] || (n = j[F] = { - count: 0 - }), P = n[y] = [U], n.count++, u.xhrLoad(F, function (w) { - delete n[y], n.count--, n.count || delete j[F], P.forEach(function (O) { - O(w) - }) - }, Y), void 0) - } - }(), - asyncEach: function (p, E, h) { - "function" != typeof h && (h = Function.prototype); - var X = new Array(p.length), - H = 0, - m = !1; - p.forEach(function (C, F) { - E(C, function (t, i) { - return m ? void 0 : t ? (m = !0, h(null)) : (X[F] = i, H++, H === p.length ? h(X) : void 0) - }) - }) - }, xhrLoad: function ($, b, F) { - var x = !1; - ip($) || (x = !0, $ = [$]), F = F || {}; - var M = F.sync, - e = null, - H = F.method || "GET"; - return F.post && (H = "POST"), F.method = H, u.asyncEach($, function (Z, W) { - var K = new De; - Z = u.beforeLoadURL(Z), Z.data ? W(null, Z.data) : (F.url = encodeURI(Z), F.responseType ? K.setResponseType(F.responseType) : K.setOverrideMimeType(F.mimeType || "text/plain"), K.onload = function () { - 200 === this.status || 0 === this.status ? W(null, K.getResponseText()) : W(!0) - }, K.onerror = function () { - W(!0) - }, K.send(F)) - }, function (a) { - var O = "function" == typeof b; - (O || M) && (e = x && a ? a[0] : a, O && b(e)) - }), M ? e : void 0 - } - }); - var rb = o.setPrototypeOf || function (f, Y) { - return f.__proto__ = Y, f - }, - ql = o.getPrototypeOf || function (w) { - return w.__proto__ - }, - bc = o.freeze; - o.isFrozen; - var zn = function () { - var g = function (G) { - return G - }; - return function (I) { - return I && I.length ? new Function("o", ["return o['", I.join("']['"), "'];"].join("")) : g - } - }(), - ai = function () { - var H = function (o, Z) { - return o = Z - }; - return function (p) { - return p && p.length ? new Function("o", "v", ["return o['", p.join("']['"), "'] = v;"].join("")) : H - } - }(); - ! function () { - function d(T) { - var i = []; - if (T) - for (var B; - (B = $.exec(T)) != Z;) i.push(B[1]); - return i - } - - function F(F, W) { - var T = G.exec(W); - this._cell = F, this._key = T[1], this._format = T[2], this._style = d(T[3]) - } - - function E(w) { - for (var g = this._cellList = [], V = this._paramList = [], m = w.split(_), L = 0, P = m.length; P > L; ++L) { - var u = m[L]; - if ("{{" !== u) - for (var x = u.split(o), l = 0, N = x.length; N > l; ++l) { - var b = x[l]; - o.test(b) ? (V.push(new F(g.length, b)), g.push(Z)) : b.length > 0 && g.push(b) - } else g.push("{") - } - this._formatList = this._cellList.slice(0) - } - var X = {}, - T = {}, - _ = /(\{\{)/, - o = /(\{\w+(?:\:\w+(?:\&[\w\.])*)?\})/, - G = /\{(\w+)(?:\:(\w+)((?:\&[\w\.])*))?\}/, - $ = /\&([\w\.]*)/g; - E.prototype._73O = function (I) { - for (var b = this._paramList.length; b--;) { - var A = this._paramList[b], - v = I[Zb(A._key) + 1], - J = T[A._format]; - J && (v = J(v, A._style)), this._formatList[A._cell] = v - } - return this._formatList.join("") - }, E.prototype._map = function (s) { - for (var k = this._paramList.length; k--;) { - var f = this._paramList[k], - a = s[f._key], - C = T[f._format]; - C && (a = C(a, f._style)), this._formatList[f._cell] = a - } - return this._formatList.join("") - }; - var p = function (w) { - var Y = X[w]; - return Y || (X[w] = Y = new E(w)), Y._73O(arguments) - }; - return p.map = function (s, i) { - var I = X[s]; - return I || (X[s] = I = new E(s)), I._map(i) - }, p.setValueFormat = function (G, b) { - T[G] = b - }, p.gc = function () { - X.length = 0 - }, p.__parsed = X, p - }(); - var _j = function () { - function p(H, h, y, x) { - var s = H ? H.path.slice(0) : []; - h && s.push(h), this.desc = y, this.name = h, this.path = bc(s), this.getter = zn(s), this.setter = ai(s), this.isLeaf = x, this.parent = H, this.children = [], this.childMap = {} - } - return p.create = function () { - function S(w, u, K, U) { - var M = U(K), - F = new p(w, u, K, M); - if (!M) { - for (var m = F.children, j = F.childMap, b = o.keys(K), R = 0, d = b.length; d > R; ++R) { - var O = b[R], - D = S(F, O, K[O], U); - m.push(D), j[D.name] = D - } - F.children = bc(m), F.childMap = bc(j) - } - return bc(F), F - } - return function (k, L) { - return S(Z, Z, k, L) - } - }(), p.prototype.forEach = function (W, v) { - for (var Y = this.children, o = 0, m = Y.length; m > o; ++o) { - var z = Y[o]; - W(z, v) - } - }, p - }(), - bc = o.freeze, - Sc = { - main: { - mask: 1, - priority: u.cameraPriority.main, - clearDepth: !1, - ignore: !1 - }, - top: { - mask: 2, - priority: u.cameraPriority.top, - ignore: !1 - } - }, - aq = "main", - pb = Sc[aq].mask, - hp = function (N, R, $) { - if (N = N || 0, !(R in Sc)) { - if ($b >= 32) throw new Error("Only 31 render layer can be defined."); - Sc[R] = { - mask: 1 << $b++, - priority: Sc[aq].priority - } - } - if ($) - for (var E in $) Sc[R][E] = $[E]; - return kl = Ck(o.keys(Sc)), $b = kl.length, N |= Sc[R].mask - }, - Sr = function (L, c) { - return L && c && L & c - }, - Ck = function (p) { - return p.sort(function (s, i) { - return Sc[s].priority - Sc[i].priority - }) - }, - kl = Ck(o.keys(Sc)), - $b = kl.length; - Uh(u, { - setRenderLayerInfo: function (J, q) { - hp(0, J, q) - }, getRenderLayerInfo: function (F) { - return Sc[F] - } - }, !0); - var xr = O.List = function () { - this._as = []; - var s, z, V = arguments.length; - if (1 === V) { - var B = arguments[0]; - if (Xo(B) && (B = B._as), ip(B)) - for (z = B.length, s = 0; z > s; s++) this._as.push(B[s]); - else B != F && this._as.push(B) - } else if (V > 1) - for (s = 0; V > s; s++) this._as.push(arguments[s]) - }; - ki("List", o, { - forEach: function (h, L) { - this.each(h, L) - }, push: function () { - for (var y = 0; y < arguments.length; y++) this.add(arguments[y]) - }, pop: function () { - return this._as.pop() - }, shift: function () { - return this._as.shift() - }, unshift: function () { - return this._as.unshift.apply(this._as, arguments) - }, size: function () { - return this._as.length - }, isEmpty: function () { - return 0 === this._as.length - }, add: function (e, I) { - return I === Z ? this._as.push(e) : this._as.splice(I, 0, e) - }, addAll: function ($) { - Xo($) && ($ = $._as), ip($) ? gc(this._as, $) : this._as.push($) - }, get: function (x) { - return this._as[x] - }, slice: function (g, r) { - return new xr(this._as.slice(g, r)) - }, remove: function (b) { - var Q = this._as.indexOf(b); - return Q >= 0 && Q < this._as.length && this.removeAt(Q), Q - }, removeAt: function (_) { - return this._as.splice(_, 1)[0] - }, set: function (O, k) { - return this._as[O] = k - }, clear: function () { - return this._as.splice(0, this._as.length) - }, contains: function (e) { - return this._as.indexOf(e) >= 0 - }, indexOf: function (I) { - return this._as.indexOf(I) - }, each: function ($, x) { - for (var Z = 0, t = this._as.length; t > Z; Z++) { - var X = this._as[Z]; - x ? $.call(x, X, Z, this) : $(X, Z, this) - } - }, reverseEach: function (C, j) { - for (var H = this._as.length - 1; H >= 0; H--) { - var $ = this._as[H]; - j ? C.call(j, $) : C($) - } - }, getArray: function () { - return this._as - }, toArray: function (H, h) { - if (H) { - for (var C, _ = [], N = 0, Q = this._as.length; Q > N; N++) C = this._as[N], h ? H.call(h, C) && _.push(C) : H(C) && _.push(C); - return _ - } - return this._as.concat() - }, toList: function (V, G) { - if (V) { - for (var R, I = new xr, N = 0, h = this._as.length; h > N; N++) R = this._as[N], G ? V.call(G, R) && I.add(R) : V(R) && I.add(R); - return I - } - return new xr(this) - }, reverse: function () { - this._as.reverse() - }, sort: function (P) { - return this._as.sort(P ? P : Sd), this - }, toString: function () { - return this._as.toString() - } - }), o.defineProperties(xr.prototype, { - length: { - get: function () { - return this._as.length - }, set: function (d) { - this._as.length = d - } - } - }); - var Yh = new xr; - Uh(Yh, { - size: function () { - return 0 - }, indexOf: function () { - return -1 - }, contains: function () { - return !1 - }, isEmpty: function () { - return !0 - }, sort: Mr, - each: Mr, - reverseEach: Mr, - toArray: function () { - return [] - }, toList: function () { - return new xr - }, add: jm, - addAll: jm, - set: jm, - remove: jm, - removeAt: jm, - clear: jm - }); - var Yj = O.Notifier = function () { - this._f = 0 - }; - ki("Notifier", o, { - contains: function (P, W) { - if (this._ls) - for (var s, o = 0, $ = this._ls.size(); $ > o; o++) - if (s = this._ls.get(o), P === s.l && W === s.s) return !0; - return !1 - }, add: function (w, y, v) { - var f = this, - Z = { - l: w, - s: y, - a: v - }; - f._ls || (f._ls = new xr), f._f ? (f._as || (f._as = new xr), f._as.add(Z)) : Z.a ? f._ls.add(Z, 0) : f._ls.add(Z) - }, remove: function (h, K) { - var r = this; - r._ls && (r._f ? (r._rs || (r._rs = new xr), r._rs.add({ - l: h, - s: K - })) : r._remove(h, K)) - }, _remove: function (R, X) { - for (var t, j = this._ls, S = 0, J = j.size(); J > S; S++) - if (t = j.get(S), t.l === R && t.s === X) return j.removeAt(S), void 0 - }, fire: function (F) { - var J = this, - M = J._ls; - if (J._b = 1e4, M) { - ++J._f; - try { - for (var X, h = 0, C = M.size(); C > h; h++) X = M.get(h), X.s ? X.l.call(X.s, F) : X.l(F) - } catch (F) { - cd(function () { - throw F - }) - } finally { - if (--J._f) return; - if (J._rs) { - for (C = J._rs.size(), h = 0; C > h; h++) X = J._rs.get(h), J._remove(X.l, X.s); - delete J._rs - } - if (J._as) { - for (C = J._as.size(), h = 0; C > h; h++) X = J._as.get(h), X.a ? M.add(X, 0) : M.add(X); - delete J._as - } - } - } - } - }); - var Qp = O.Data = function () { - this._id = xp() - }; - ki("Data", o, { - ms_ac: ["tag", "name", "displayName", "icon", "toolTip", "attrObject", "styleMap", "layer", "adjustChildrenToTop", "dataBindings"], - ms_dm: 1, - ms_attr: 1, - _icon: F, - _parent: F, - _children: Yh, - _childMap: F, - _styleMap: F, - _layer: "0", - _renderLayer: aq, - _renderLayerMask: pb, - _adjustChildrenToTop: !1, - getRenderLayerMask: function () { - return this._renderLayerMask || pb - }, getRenderLayer: function () { - return this._renderLayer || aq - }, setRenderLayer: function (S) { - var g = this, - H = hp(0, S); - g._renderLayerMask = H; - var Y = g._renderLayer; - g._renderLayer = S, g.fp("renderLayer", Y, g._renderLayer) - }, testRenderLayer: function (V) { - var C = Sc[V]; - return C && Sr(this._renderLayerMask, Sc[V].mask) - }, getUIClass: function () { - return F - }, _22Q: function () { - return F - }, beginTransaction: function () { - this._dataModel && this._dataModel.beginTransaction() - }, endTransaction: function () { - this._dataModel && this._dataModel.endTransaction() - }, s: function (z, d) { - var V = this; - if (2 === arguments.length) V.setStyle(z, d); - else { - if (!xl(z)) return V.getStyle(z); - for (var q in z) V.setStyle(q, z[q]) - } - return V - }, fp: function (H, V, N, j, o) { - return this.firePropertyChange(H, V, N, j, o) - }, firePropertyChange: function (x, l, s, v, K) { - if (v) { - if (v(l, s)) return !1 - } else if (l === s) return !1; - var p = this, - R = K || {}; - return R.property = x, R.oldValue = l, R.newValue = s, R.data = p, p._dataModel && p._dataModel.handleDataPropertyChange(R), p.onPropertyChanged(R), !0 - }, onPropertyChanged: function (H) { - var M = this, - c = M._parent, - T = H.property; - if (yl(c)) { - var v = M.s(Dm), - d = "s:ingroup" === T; - (v && Lk[T] || T === d) && c._81I(), (v || d) && c.fp("childChange", !0, !1) - } - Qb(c) && (Lk[T] || "elevation" === T || Yr[T] || "scaleTall" === T || "tall" === T) && c.updateFromChildren() - }, _21I: function (S) { - var t = this; - if (S && t._dataModel) throw "Remove data from dataModel before adding"; - t._dataModel = S - }, removeFromDataModel: function () { - this._dataModel ? this._dataModel.remove(this) : this.setParent(null) - }, clearChildrenFromDataModel: function () { - for (var I = 0, f = this._children.toArray(), q = f.length; q > I; I++) f[I].removeFromDataModel() - }, getId: function () { - return this._id - }, setId: function ($) { - this._id = $ - }, getChildren: function () { - return this._children - }, size: function () { - return this._children.size() - }, toChildren: function (W, D) { - return this._children.toList(W, D) - }, eachChild: function (j, c) { - this._children.each(j, c) - }, addChild: function (v, s) { - var q = this; - v !== q && (q._children === Yh && (q._children = new xr, q._childMap = {}), s >= 0 || (s = q._children.size()), q._childMap[v._id] || q.isDescendantOf(v) || (v._parent && v._parent.removeChild(v), (0 > s || s > q._children.size()) && (s = q._children.size()), q._children.add(v, s), q._childMap[v._id] = v, v.setParent(q), q.onChildAdded(v, s), q.fp(Wf, F, v))) - }, onChildAdded: function () { }, removeChild: function (m) { - var J = this; - if (J._childMap && J._childMap[m._id]) { - var V = J._children.remove(m); - delete J._childMap[m._id], J.fp(Wf, m, F), m.setParent(F, V), J.onChildRemoved(m, V) - } - }, onChildRemoved: function () { }, getChildAt: function (I) { - return this._children.get(I) - }, clearChildren: function () { - var B = this; - if (!B._children.isEmpty()) - for (var P = 0, $ = B._children.toArray(), b = $.length; b > P; P++) B.removeChild($[P]) - }, getParent: function () { - return this._parent - }, setParent: function (I, Q) { - var W = this; - if (!(W._73I || W._parent === I || W === I || I && I.isDescendantOf(W))) { - var V, v = W._parent; - W._parent = I, W._73I = 1, v ? (Q == F && (Q = v.getChildren().indexOf(W)), v.removeChild(W)) : W._dataModel && Q == F && (Q = W._dataModel.getRoots().indexOf(W)), I && (I.addChild(W), V = I.getChildren().indexOf(W)), delete W._73I, W.fp("parent", v, I, Z, { - oldIndex: Q, - newIndex: V - }), W.onParentChanged(v, I) - } - }, onParentChanged: function () { }, hasChildren: function () { - return this._children.size() > 0 - }, isEmpty: function () { - return this._children.isEmpty() - }, isRelatedTo: function (c) { - return c ? this.isDescendantOf(c) || c.isDescendantOf(this) : !1 - }, isParentOf: function (P) { - return P && this._childMap ? !!this._childMap[P._id] : !1 - }, isDescendantOf: function (R) { - if (!R || R.isEmpty()) return !1; - for (var b = this._parent; b;) { - if (R === b) return !0; - b = b._parent - } - return !1 - }, getStyle: function (B, A) { - A === Z && (A = 1); - var q = this._styleMap ? this._styleMap[B] : Z; - return q === Z && A ? z[B] : q - }, setStyle: function (b, u) { - var T = this; - T._styleMap || (T._styleMap = {}); - var Q = T._styleMap[b]; - u === Z ? delete T._styleMap[b] : T._styleMap[b] = u, T.fp("s:" + b, Q, u) && T.onStyleChanged(b, Q, u) - }, onStyleChanged: function () { }, iv: function (b) { - this.invalidate(b) - }, invalidate: function (k) { - this.fp(k || "*", !1, !0) - }, toString: function () { - var Y = this; - return Y._displayName || Y._name || Y._tag || Y._id - }, toLabel: function () { - return this._displayName || this._name - }, addStyleIcon: function (q, d) { - var r = this, - e = r.s(ub); - r.beginTransaction(), e || r.s(ub, e = {}), d ? e[q] = d : delete e[q], r.fp(ub, F, e), r.endTransaction() - }, removeStyleIcon: function (M) { - var P = this.s(ub); - if (P) { - var x = P[M]; - delete P[M], this.fp(ub, F, P) - } - return x - }, _calcAnchorMatrix3d: function () { }, appendAnchorMatrix3d: function (h) { - var W = this; - if (W.hasOwnProperty("_anchor") || W.hasOwnProperty("_anchorElevation")) { - var l = W.getAnchor3d(), - D = { - x: l.x - .5, - y: l.y - .5, - z: l.z - .5 - }; - bo(h, [-D.x, -D.y, -D.z]) - } - }, getSerializableProperties: function () { - return { - name: 1, - displayName: 1, - icon: 1, - toolTip: 1, - parent: 1, - layer: 1, - renderLayer: 1, - tag: 1, - adjustChildrenToTop: 1, - dataBindings: 1 - } - }, getSerializableStyles: function () { - var F, D = {}; - for (F in this._styleMap) D[F] = 1; - return D - }, getCurrentPrefix: function () { - return this._interactPrefix || Nh - }, ca: function (r, W) { - var z = this.getCurrentPrefix(); - return r = z + r, 2 === arguments.length ? this.a(r, W) : this.a(r) - } - }); - var jn = O.DataModel = function () { - var n = this; - n._isDeserializing = 0, n._datas = new xr, n._dataMap = {}, n._roots = new xr, n._rootMap = {}, n._fsDataMap = {}, n._78O = {}, n._reflectorMap = {}, n._36I = new Yj, n._35I = new Yj, n._serializeNotifier = new Yj, n._selectionModel = new Uc(n); - var N = n._29Q = [], - e = n._scheduleCallback = function () { - for (var m = Date.now(), M = 0; M < N.length; M++) { - var S = N[M]; - S.enabled && m - S.lastTime > S.interval && (S.beforeAction && S.beforeAction(), S.action && n.each(function (r) { - S.action(r) - }), S.afterAction && S.afterAction(), S.lastTime = m) - } - N.length && (n._30Q = x.requestAnimationFrame(e)) - } - }; - ki("DataModel", o, { - ms_fire: 1, - ms_attr: 1, - ms_ac: ["layers", "name", "autoAdjustIndex", "hierarchicalRendering", "background", "envmap", "postProcessingData", "init"], - _name: Z, - _autoAdjustIndex: !0, - _hierarchicalRendering: !1, - _background: Z, - _init: Z, - _envmap: Z, - _cubicEnvmap: !1, - _postProcessingData: Z, - sm: function () { - return this.getSelectionModel() - }, mm: function (B, q, C) { - this.addDataModelChangeListener(B, q, C) - }, umm: function (o, y) { - this.removeDataModelChangeListener(o, y) - }, md: function (F, m, G) { - this.addDataPropertyChangeListener(F, m, G) - }, umd: function (B, i) { - this.removeDataPropertyChangeListener(B, i) - }, mh: function (r, i, M) { - this.addHierarchyChangeListener(r, i, M) - }, umh: function (y, v) { - this.removeHierarchyChangeListener(y, v) - }, getAttrObject: function () { - return this._attrObject - }, setAttrObject: function (Z) { - return this._attrObject = Z - }, getSelectionModel: function () { - return this._selectionModel - }, size: function () { - return this._datas.size() - }, isEmpty: function () { - return this._datas.isEmpty() - }, getRoots: function () { - return this._roots - }, getDatas: function () { - return this._datas - }, getFullscreenDatas: function () { - return this._fsDataMap - }, getReflectors: function () { - return this._reflectorMap - }, getDataById: function (D) { - return this._dataMap[D] - }, removeDataById: function (P) { - this.remove(this.getDataById(P)) - }, toDatas: function (j, F) { - return this._datas.toList(j, F) - }, each: function (Z, r) { - this._datas.each(Z, r) - }, getDataByTag: function (e) { - return this._78O[e] - }, getTagMap: function () { - return this._78O - }, removeDataByTag: function (e) { - this.remove(this.getDataByTag(e)) - }, add: function (R, k, M) { - var H = this, - m = R._id, - P = R._tag, - v = H._roots; - if (H._dataMap[m]) throw "'" + m + "' already exists"; - P != F && (H._78O[P] = R), H._dataMap[m] = R, M >= 0 ? H._datas.add(R, M) : H._datas.add(R), R._parent || (H._rootMap[m] = R, k >= 0 ? v.add(R, k) : v.add(R)), R.s("fullscreen") !== Z && (H._fsDataMap[m] = R), R.s("shape3d.reflector") && (H._reflectorMap[m] = R), R._21I(H), H.onAdded(R), H._36I.fire({ - kind: "add", - data: R, - rootsIndex: k, - datasIndex: M - }) - }, onAdded: function () { }, remove: function (k, L) { - if (k) { - var q = this, - I = k._id, - S = L && L.keepStructure, - M = L && L.keepChildren, - A = k.getTag(); - if (k._dataModel === q) { - this.beginTransaction(), S ? q._removingData || (q._removingData = k) : q.prepareRemove(k), M || k.toChildren().each(function (I) { - q.remove(I, L) - }, q), S ? q._removingData === k && (k._parent && k._parent.removeChild(k), delete q._removingData) : k._parent && k._parent.removeChild(k); - var Z = q._datas.remove(k); - delete q._dataMap[I], A != F && delete q._78O[A]; - var c; - q._rootMap[I] && (delete q._rootMap[I], c = q._roots.remove(k)), q._fsDataMap[I] && delete q._fsDataMap[I], q._reflectorMap[I] && delete q._reflectorMap[I], k._21I(F), q.onRemoved(k), q._36I.fire({ - kind: Ce, - data: k, - rootsIndex: c, - datasIndex: Z - }), this.endTransaction() - } - } - }, onRemoved: function () { }, prepareRemove: function () { }, clear: function () { - var h = this; - if (h._datas.size()) { - var G = h._historyManager ? this.toJSON() : Z; - h._datas.toArray().forEach(function (M) { - M._21I(F) - }), h._datas.clear(), h._dataMap = {}, h._roots.clear(), h._rootMap = {}, h._fsDataMap = {}, h._reflectorMap = {}, h._78O = {}, h._36I.fire({ - kind: Tg, - json: G - }) - } - }, contains: function (V) { - return V && V._dataModel === this - }, handleDataPropertyChange: function (v) { - var i = this, - m = v.data, - n = v.property; - if ("parent" === n) { - var K = m._id, - R = i._rootMap, - _ = i._roots; - m._parent ? R[K] && (delete R[K], _.remove(m)) : R[K] || (R[K] = m, _.add(m)) - } else if ("tag" === n) { - var E = v.oldValue, - L = v.newValue, - u = i._78O; - E != F && delete u[E], L != F && (u[L] = m) - } else if ("s:fullscreen" === n) { - var K = m._id, - h = i._fsDataMap; - v.oldValue != F && delete h[K], v.newValue != F && (h[K] = m) - } else if ("s:shape3d.reflector" === n) { - var K = m._id, - t = i._reflectorMap; - v.oldValue && delete t[K], v.newValue && (t[K] = m) - } - this.onDataPropertyChanged(m, v), this._35I.fire(v) - }, onDataPropertyChanged: function () { }, addDataModelChangeListener: function (E, B, W) { - this._36I.add(E, B, W) - }, removeDataModelChangeListener: function (y, x) { - this._36I.remove(y, x) - }, addSerializeListener: function (z, D, I) { - this._serializeNotifier.add(z, D, I) - }, removeSerializeListener: function (L, c) { - this._serializeNotifier.remove(L, c) - }, fireSerializeEvent: function (Q) { - this._serializeNotifier.fire(Q) - }, addDataPropertyChangeListener: function (D, f, K) { - this._35I.add(D, f, K) - }, removeDataPropertyChangeListener: function (N, j) { - this._35I.remove(N, j) - }, _38I: function (o, s, J) { - this._37I && this._37I.fire({ - data: o, - oldIndex: s, - newIndex: J - }) - }, addHierarchyChangeListener: function (U, Z, q) { - this._37I || (this._37I = new Yj), this._37I.add(U, Z, q) - }, removeHierarchyChangeListener: function (j, m) { - this._37I.remove(j, m) - }, getSiblings: function (K) { - var R = K._parent; - return R ? R._children : this._roots - }, eachByHierarchical: function (e, B, l) { - if (B) return this._eachByHierarchical(e, B, l); - for (var z = 0, v = this._roots, G = v.size(); G > z; z++) - if (this._eachByHierarchical(e, v.get(z), l) === !1) return !1; - return !0 - }, _eachByHierarchical: function (g, U, S) { - if (S) { - if (g.call(S, U) === !1) return !1 - } else if (g(U) === !1) return !1; - for (var n = U.size(), V = 0; n > V; V++) - if (this._eachByHierarchical(g, U.getChildAt(V), S) === !1) return !1; - return !0 - }, reverseEachByHierarchical: function (s, T, U) { - if (T) return this._reverseEachByHierarchical(s, T, U); - for (var V = this._roots, w = V.size(), H = w - 1; H >= 0; H--) - if (this._reverseEachByHierarchical(s, V.get(H), U) === !1) return !1; - return !0 - }, _reverseEachByHierarchical: function (_, e, E) { - for (var p = e.size(), s = p - 1; s >= 0; s--) - if (this._reverseEachByHierarchical(_, e.getChildAt(s), E) === !1) return !1; - if (E) { - if (_.call(E, e) === !1) return !1 - } else if (_(e) === !1) return !1; - return !0 - }, eachByDepthFirst: function (s, K, A) { - if (K) return this._11I(s, K, A); - for (var W = 0, O = this._roots, d = O.size(); d > W; W++) - if (this._11I(s, O.get(W), A) === !1) return !1; - return !0 - }, _11I: function (o, e, l) { - for (var H = e.size(), M = 0; H > M; M++) - if (this._11I(o, e.getChildAt(M), l) === !1) return !1; - if (l) { - if (o.call(l, e) === !1) return !1 - } else if (o(e) === !1) return !1; - return !0 - }, eachByBreadthFirst: function (b, _, u) { - var c = new xr; - for (_ ? c.add(_) : this._roots.each(c.add, c); c.size() > 0;) - if (_ = c.removeAt(0), _.eachChild(c.add, c), u) { - if (b.call(u, _) === !1) return !1 - } else if (b(_) === !1) return !1; - return !0 - }, moveTo: function (I, B) { - var s = this.getSiblings(I), - J = s.indexOf(I); - J === B || 0 > J || B >= 0 && B <= s.size() && (s.remove(I), B > s.size() && B--, s.add(I, B), this._38I(I, J, B)) - }, moveUp: function (C) { - this.moveTo(C, this.getSiblings(C).indexOf(C) - 1) - }, moveDown: function (P) { - this.moveTo(P, this.getSiblings(P).indexOf(P) + 1) - }, moveToTop: function (z) { - this.moveTo(z, 0) - }, moveToBottom: function (v) { - this.moveTo(v, this.getSiblings(v).size()) - }, moveSelectionUp: function (q) { - this.beginTransaction(), q || (q = this.sm()); - var Y = new xr; - ao(q, Y, this._roots), Y.each(this.moveUp, this), this.endTransaction() - }, moveSelectionDown: function (l) { - this.beginTransaction(), l || (l = this.sm()); - var m = new xr; - Tk(l, m, this._roots), m.each(this.moveDown, this), this.endTransaction() - }, moveSelectionToTop: function (A) { - this.beginTransaction(), A || (A = this.sm()); - var m = new xr; - no(A, m, this._roots), m.each(this.moveToTop, this), this.endTransaction() - }, moveSelectionToBottom: function (k) { - this.beginTransaction(), k || (k = this.sm()); - var R = new xr; - er(k, R, this._roots), R.each(this.moveToBottom, this), this.endTransaction() - }, moveToIndex: function (h, E, f) { - var J = this.getDatas(); - null == f && (f = J.indexOf(h)), f === E || 0 > f || E >= 0 && E <= J.size() && (J.remove(h), E > J.size() && E--, J.add(h, E), this._76I(h, f, E)) - }, bringForward: function (r) { - this.moveToIndex(r, this.getDatas().indexOf(r) + 1) - }, bringToFront: function (N) { - this.moveToIndex(N, this.size()) - }, sendBackward: function ($) { - this.moveToIndex($, this.getDatas().indexOf($) - 1) - }, sendToBack: function (p) { - this.moveToIndex(p, 0) - }, bringSelectionForward: function (G) { - this.beginTransaction(), G || (G = this.sm()); - for (var V = new xr, o = this.getDatas(), W = !1, p = 0; p < o.size(); p++) { - var P = o.get(o.size() - 1 - p); - G.contains(P) ? W && V.add(P) : W = !0 - } - V.each(this.bringForward, this), this.endTransaction() - }, bringSelectionToFront: function (c) { - this.beginTransaction(), c || (c = this.sm()); - for (var X = new xr, H = this.getDatas(), B = 0; B < H.size(); B++) { - var d = H.get(B); - c.contains(d) && X.add(d) - } - X.each(this.bringToFront, this), this.endTransaction() - }, sendSelectionBackward: function (X) { - this.beginTransaction(), X || (X = this.sm()); - for (var Q = new xr, f = this.getDatas(), R = !1, g = 0; g < f.size(); g++) { - var J = f.get(g); - X.contains(J) ? R && Q.add(J) : R = !0 - } - Q.each(this.sendBackward, this), this.endTransaction() - }, sendSelectionToBack: function (t) { - this.beginTransaction(), t || (t = this.sm()); - for (var C = new xr, P = this.getDatas(), x = 0; x < P.size(); x++) { - var J = P.get(P.size() - 1 - x); - t.contains(J) && C.add(J) - } - C.each(this.sendToBack, this), this.endTransaction() - }, addScheduleTask: function (c) { - var u = this; - u.removeScheduleTask(c), c.enabled == F && (c.enabled = !0), c.interval == F && (c.interval = 10), c.lastTime = Date.now(), u._29Q.push(c), u._30Q == F && (u._30Q = x.requestAnimationFrame(u._scheduleCallback)) - }, removeScheduleTask: function (G) { - var P = this, - w = P._29Q, - b = w.indexOf(G); - b >= 0 && w.splice(b, 1), w.length || P._30Q == F || (x.cancelAnimationFrame(P._30Q), delete P._30Q) - }, getHistoryManager: function () { - return this._historyManager - }, enableHistoryManager: function (I) { - this._historyManager || new O.HistoryManager(this), null != I && this._historyManager.setMaxHistoryCount(I), this._historyManager.setDisabled(!1) - }, disableHistoryManager: function () { - this._historyManager && this._historyManager.setDisabled(!0) - }, clearHistoryManager: function () { - this._historyManager && this._historyManager.clear() - }, undo: function (d) { - this._historyManager && this._historyManager.undo(d) - }, redo: function (c) { - this._historyManager && this._historyManager.redo(c) - }, beginTransaction: function () { - this._historyManager && this._historyManager.beginTransaction() - }, endTransaction: function () { - this._historyManager && this._historyManager.endTransaction() - }, addHistory: function (t) { - this._historyManager && this._historyManager.addHistory(t) - }, onHistoryManagerChanged: function () { }, isDeserializing: function () { - return this._isDeserializing > 0 - }, setDeserializing: function (d) { - d ? this._isDeserializing++ : this._isDeserializing-- - }, isCubicEnvmap: function () { - return this._cubicEnvmap - }, setCubicEnvmap: function (H) { - var m = this._cubicEnvmap; - this._cubicEnvmap = H, this.fp("cubicEnvmap", m, H) - } - }); - var Uc = O.SelectionModel = function (Q) { - var l = this; - l._68O = tb, l._map = {}, l._73O = new xr, l._74I = new Yj, l._21I(Q) - }; - ki("SelectionModel", o, { - ms_fire: 1, - ms_dm: 1, - ms: function (k, I, B) { - this.addSelectionChangeListener(k, I, B) - }, ums: function (b, R) { - this.removeSelectionChangeListener(b, R) - }, fd: function () { - return this.getFirstData() - }, ld: function () { - return this.getLastData() - }, sg: function () { - return this._68O === vq - }, co: function (O) { - return this._map[O._id] != F - }, ss: function (Q) { - this.setSelection(Q) - }, as: function (q) { - this.appendSelection(q) - }, rs: function (G) { - this.removeSelection(G) - }, cs: function () { - this.clearSelection() - }, sa: function () { - this.selectAll() - }, getSelectionMode: function () { - return this._68O - }, setSelectionMode: function (e) { - var S = this; - if (S._68O !== e && (e === Jc || e === vq || e === tb)) { - S.cs(); - var L = S._68O; - S._68O = e, S.fp("selectionMode", L, e) - } - }, _21I: function (R) { - var F = this, - L = F._dataModel; - L !== R && (L && (F.cs(), L.umm(F.handleDataModelChange, F)), F._dataModel = R, R.mm(F.handleDataModelChange, F, !0), F.fp(uk, L, R)) - }, dispose: function () { - var N = this; - N.cs(), N._dataModel.umm(N.handleDataModelChange, N) - }, handleDataModelChange: function ($) { - var H = this; - if ($.kind === Ce) { - var z = $.data; - H.co(z) && (H._73O.remove(z), delete H._map[z._id], H._75I(Ce, new xr(z))) - } else $.kind === Tg && H.cs() - }, getFilterFunc: function () { - return this._filterFunc - }, setFilterFunc: function (m) { - var x = this; - if (x._filterFunc !== m) { - x.cs(); - var C = x._filterFunc; - x._filterFunc = m, x.fp("filterFunc", C, x._filterFunc) - } - }, _75I: function (r, Y, O, j) { - O && (this._73O.each(function (U) { - j[U._id] ? O.remove(U) : O.add(U) - }), Y = O.toList()), this._74I.fire({ - kind: r, - datas: new xr(Y) - }) - }, addSelectionChangeListener: function (w, J, r) { - this._74I.add(w, J, r) - }, removeSelectionChangeListener: function (B, D) { - this._74I.remove(B, D) - }, _97O: function (E, A) { - for (var C, f = this, v = 0, o = new xr(E); v < o.size(); v++) C = o.get(v), (f._filterFunc && !f._filterFunc(C) || A && f.co(C) || !A && !f.co(C) || !f._dataModel.contains(C)) && (o.removeAt(v), v--); - return o - }, appendSelection: function (S) { - var g = this; - if (g._68O !== Jc) { - var C, B, r = g._73O, - c = g._97O(S, !0); - c.isEmpty() || (g.sg() && (C = new xr(r), B = g._map, r.clear(), g._map = {}, c = new xr(c.get(c.size() - 1))), c.each(function (F) { - r.add(F), g._map[F._id] = F - }), g._75I("append", c, C, B)) - } - }, removeSelection: function (b) { - var U = this, - F = U._97O(b), - G = 0, - K = F.size(); - if (0 !== K) { - for (; K > G; G++) { - var D = F.get(G); - U._73O.remove(D), delete U._map[D._id] - } - U._75I(Ce, F) - } - }, toSelection: function (K, q) { - return this._73O.toList(K, q) - }, getSelection: function () { - return this._73O - }, each: function (Q, i) { - this._73O.each(Q, i) - }, setSelection: function (Z) { - var E = this, - y = E._73O; - if (E._68O !== Jc && !(y.isEmpty() && !Z || 1 === y.size() && E.ld() === Z)) { - var L = new xr(y), - w = E._map; - y.clear(), E._map = {}; - var $ = E._97O(Z, !0); - E.sg() && $.size() > 1 && ($ = new xr($.get($.size() - 1))), $.each(function (Q) { - y.add(Q), E._map[Q._id] = Q - }), E._75I("set", F, L, w) - } - }, clearSelection: function () { - var a = this, - v = a._73O; - if (v.size() > 0) { - var p = v.toList(); - v.clear(), a._map = {}, a._75I(Tg, p) - } - }, selectAll: function () { - var H = this; - if (H._68O !== Jc) { - var x, S, k = H._dataModel.toDatas(); - if (H._filterFunc) - for (x = 0; x < k.size(); x++) S = k.get(x), H._filterFunc(S) || (k.removeAt(x), x--); - var o = H._73O, - r = new xr(o), - f = H._map; - o.clear(), H._map = {}, H.sg() && k.size() > 1 && (k = new xr(k.get(k.size() - 1))); - var _ = k.size(); - for (x = 0; _ > x; x++) S = k.get(x), o.add(S), H._map[S._id] = S; - H._75I("all", F, r, f) - } - }, size: function () { - return this._73O.size() - }, isEmpty: function () { - return this._73O.isEmpty() - }, contains: function (k) { - return this._map[k._id] != F - }, getLastData: function () { - var $ = this._73O; - return $.size() > 0 ? $.get($.size() - 1) : F - }, getFirstData: function () { - var A = this._73O; - return A.size() > 0 ? A.get(0) : F - }, isSelectable: function (n) { - var t = this; - return n && t._68O !== Jc ? t._filterFunc ? t._filterFunc(n) : !0 : !1 - }, getTopSelection: function () { - var d = this, - D = new xr; - return d._73O.each(function (i) { - for (var p = i.getParent(); p;) { - if (d.contains(p)) { - i = F; - break - } - p = p.parent - } - i && D.add(i) - }), D - } - }); - var Rp = function () { - return Ub(0), - function ($, t) { - var k; - if (Th(t)) { - var R = $.getDataUI(t); - R && R._88I && (k = R._88I.rect) - } - return k ? k : t.getRect() - } - }(); - Uh(u, { - edgeGroupAgentFunc: F, - graphViewAutoScrollZone: 16, - graphViewZoomable: !0, - graphViewResettable: !1, - graphViewPannable: !0, - graphViewRectSelectable: !0, - graphViewScrollBarVisible: !0, - graphViewRectSelectBorderColor: S.rectSelectBorder, - graphViewRectSelectBackground: Vh, - graphViewEditPointSize: nf ? 17 : 7, - graphViewEditPointBorderColor: S.editPointBorder, - graphViewEditPointBackground: S.editPointBackground, - setEdgeType: function (b, R, c) { - $d[b] = R, Dc[b] = c - }, getEdgeType: function (F) { - return $d[F] - }, getEdgeTypeMap: function () { - return $d - }, getNodeRect: Rp - }, !0); - var Ve = { - "layout.h": Z, - "layout.v": Z, - "2d.selectable": !0, - "2d.visible": !0, - "2d.movable": !0, - "2d.editable": !0, - "2d.move.mode": Z, - "2d.attachable": !1, - "2d.hostable": !1, - interactive: !1, - preventDefaultWhenInteractive: !0, - "image.stretch": "fill", - icons: Z, - ingroup: !0, - "body.color": Z, - "2d.gray": !1, - fullscreen: Z, - "fullscreen.gap": 2, - "fullscreen.lock": !1, - opacity: Z, - pixelPerfect: !0, - keepAspectRatio: !1, - "attach.points": null, - "attach.style": null, - "attach.close.threshold": 16, - "clip.direction": "top", - "clip.percentage": 1, - "select.color": Bc, - "select.width": 1, - "select.padding": 2, - "select.type": Tq, - shadow: !1, - "shadow.blur": 6, - "shadow.offset.x": 3, - "shadow.offset.y": 3, - shadow2: !1, - "shadow2.color": Bc, - "shadow2.blur": 6, - "shadow2.offset.x": 3, - "shadow2.offset.y": 3, - "border.color": Z, - "border.width": 2, - "border.padding": 2, - "border.type": Tq, - label: Z, - "label.font": Z, - "label.color": Dh, - "label.background": Z, - "label.position": 31, - "label.position.fixed": !1, - "label.offset.x": 0, - "label.offset.y": 2, - "label.rotation": Z, - "label.max": Z, - "label.opacity": Z, - "label.scale": 1, - "label.align": Z, - "label.selectable": !0, - label2: Z, - "label2.font": Z, - "label2.color": Dh, - "label2.background": Z, - "label2.position": 34, - "label2.position.fixed": !1, - "label2.offset.x": 0, - "label2.offset.y": -2, - "label2.rotation": Z, - "label2.max": Z, - "label2.opacity": Z, - "label2.scale": 1, - "label2.align": Z, - "label2.selectable": !0, - note: Z, - "note.expanded": !0, - "note.font": Z, - "note.color": rf, - "note.background": Bc, - "note.position": 8, - "note.offset.x": -3, - "note.offset.y": 3, - "note.max": Z, - "note.toggleable": !0, - "note.border.width": 1, - "note.border.color": Z, - "note.opacity": Z, - "note.scale": 1, - "note.align": Z, - note2: Z, - "note2.expanded": !0, - "note2.font": Z, - "note2.color": rf, - "note2.background": Bc, - "note2.position": 3, - "note2.offset.x": 3, - "note2.offset.y": -3, - "note2.max": Z, - "note2.toggleable": !0, - "note2.border.width": 1, - "note2.border.color": Z, - "note2.opacity": Z, - "note2.scale": 1, - "note2.align": Z, - "group.type": Z, - "group.image": Z, - "group.image.stretch": "fill", - "group.repeat.image": Z, - "group.border.repeat.image": Z, - "group.padding": 8, - "group.padding.left": 0, - "group.padding.right": 0, - "group.padding.top": 0, - "group.padding.bottom": 0, - "group.position": 17, - "group.toggleable": !0, - "group.title.font": Z, - "group.title.color": rf, - "group.title.background": S.groupTitleBackground, - "group.title.align": nq, - "group.title.orientation": $c, - "group.background": S.groupBackground, - "group.depth": 1, - "group.border.width": 1, - "group.border.pattern": Z, - "group.border.color": Ur, - "group.border.radius": Z, - "group.border.cap": ob, - "group.border.join": Wl, - "group.border.width.absolute": !1, - "group.splitLine": !1, - "group.gradient": F, - "group.gradient.color": "#FFF", - shape: Z, - "shape.background": Ur, - "shape.repeat.image": Z, - "shape.border.repeat.image": Z, - "shape.border.width": 0, - "shape.border.width.absolute": !1, - "shape.border.color": Ur, - "shape.border.3d": !1, - "shape.border.3d.color": Z, - "shape.border.3d.accuracy": Z, - "shape.border.cap": ob, - "shape.border.join": Wl, - "shape.border.pattern": Z, - "shape.gradient": F, - "shape.gradient.color": "#FFF", - "shape.depth": 0, - "shape.dash": !1, - "shape.dash.pattern": up, - "shape.dash.offset": 0, - "shape.dash.color": dm, - "shape.dash.width": Z, - "shape.dash.3d": !1, - "shape.dash.3d.color": Z, - "shape.dash.3d.accuracy": Z, - "shape.polygon.side": 6, - "shape.arc.from": W, - "shape.arc.to": $, - "shape.arc.close": !0, - "shape.arc.oval": !1, - "shape.corner.radius": Z, - "shape.gradient.pack": Z, - "shape.fill.rule": "nonzero", - "shape.fill.clip.direction": "top", - "shape.fill.clip.percentage": 1, - "shape.foreground": Z, - "shape.foreground.gradient": F, - "shape.foreground.gradient.color": "#FFF", - "shape.foreground.clip.direction": "top", - "shape.foreground.clip.percentage": 1, - "autolayout.gap": Z, - "autolayout.hgap": Z, - "autolayout.vgap": Z, - "edge.type": Z, - "edge.points": Z, - "edge.segments": Z, - "edge.color": Ur, - "edge.width": 2, - "edge.width.absolute": !1, - "edge.repeat.image": null, - "edge.offset": 0, - "edge.group": 0, - "edge.expanded": !0, - "edge.gap": 12, - "edge.toggleable": !0, - "edge.center": !1, - "edge.3d": !1, - "edge.3d.color": Z, - "edge.3d.accuracy": Z, - "edge.cap": ob, - "edge.join": Wl, - "edge.source.position": 17, - "edge.source.anchor.x": Z, - "edge.source.anchor.y": Z, - "edge.source.offset.x": 0, - "edge.source.offset.y": 0, - "edge.source.index": -1, - "edge.source.percent": 0, - "edge.target.position": 17, - "edge.target.anchor.x": Z, - "edge.target.anchor.y": Z, - "edge.target.offset.x": 0, - "edge.target.offset.y": 0, - "edge.target.index": -1, - "edge.target.percent": 0, - "edge.pattern": Z, - "edge.dash": !1, - "edge.dash.pattern": up, - "edge.dash.offset": 0, - "edge.dash.color": dm, - "edge.dash.width": Z, - "edge.dash.3d": !1, - "edge.dash.3d.color": Z, - "edge.dash.3d.accuracy": Z, - "edge.independent": !1, - "attach.row.index": 0, - "attach.column.index": 0, - "attach.row.span": 1, - "attach.column.span": 1, - "attach.padding": 0, - "attach.padding.left": 0, - "attach.padding.right": 0, - "attach.padding.top": 0, - "attach.padding.bottom": 0, - "attach.index": -1, - "attach.offset": 0, - "attach.offset.relative": !1, - "attach.offset.opposite": !1, - "attach.thickness": Z, - "attach.gap": 0, - "attach.gap.relative": !1, - "grid.row.count": 1, - "grid.column.count": 1, - "grid.row.percents": Z, - "grid.column.percents": Z, - "grid.border": 1, - "grid.border.left": 0, - "grid.border.right": 0, - "grid.border.top": 0, - "grid.border.bottom": 0, - "grid.gap": 1, - "grid.background": S.gridBackground, - "grid.depth": 1, - "grid.cell.depth": -1, - "grid.cell.border.color": S.gridCellBorderColor, - "grid.block": Z, - "grid.block.padding": 3, - "grid.block.width": 1, - "grid.block.color": S.gridBlockColor, - text: "", - "text.align": "left", - "text.vAlign": "middle", - "text.color": Dh, - "text.font": Fh, - "text.shadow": !1, - "text.shadow.color": Bc, - "text.shadow.blur": 6, - "text.shadow.offset.x": 3, - "text.shadow.offset.y": 3, - "text.scale.x": 1, - "text.scale.y": 1, - keepPosition: !0 - }; - Ve[Cp] = Z, Uh(z, Ve, !0), Uh(jn, { - _76I: function (v, N, F) { - this._39I && this._39I.fire({ - data: v, - oldIndex: N, - newIndex: F - }) - }, addIndexChangeListener: function (i, V, m) { - var Z = this; - Z._39I || (Z._39I = new Yj), Z._39I.add(i, V, m) - }, removeIndexChangeListener: function (E, M) { - this._39I.remove(E, M) - }, prepareRemove: function (I) { - Bk(I) && (I.setSource(F), I.setTarget(F)), I._70O && I._70O.toList().each(this.remove, this), I._69O && I._69O.toList().each(function (W) { - W.setHost(F) - }), I._host && I.setHost(F) - }, onAdded: function (x) { - this.isAutoAdjustIndex() && this.adjustIndex(x) - }, onDataPropertyChanged: function (z, h) { - xs[h.property] && this.isAutoAdjustIndex() && this.adjustIndex(z) - }, isAdjustable: function (P) { - return Fq(P) || Bk(P) - }, isAdjustedToBottom: function (Q) { - return yl(Q) ? Q.isExpanded() && ag(Q) : !1 - }, adjustIndex: function (K) { - var Q = this; - this.isHierarchicalRendering() || (Q.isAdjustedToBottom(K) ? (Q.sendToBottom(K), K.eachChild(Q.adjustIndex, Q)) : Q.sendToTop(K)) - }, sendToTop: function (j) { - var U = this; - if (U.contains(j) && U.isAdjustable(j)) { - var y = U._datas; - if (j !== y.get(U.size() - 1)) { - var b = y.indexOf(j); - y.removeAt(b), y.add(j), U._76I(j, b, U.size() - 1) - } - if (Bk(j)) { - var V = j._40I; - V && !U.isAdjustedToBottom(V) && U.sendToTop(V), V = j._41I, V && !U.isAdjustedToBottom(V) && U.sendToTop(V) - } - j._69O && j._69O.each(function (G) { - G.isRelatedTo(j) || Fq(j) && G.isLoopedHostOn(j) || U.sendToTop(G) - }), j.ISubGraph || (!yl(j) || j.isExpanded()) && j._adjustChildrenToTop && j.eachChild(function (X) { - Bk(X) || U.sendToTop(X) - }) - } - }, sendToBottom: function (W, m) { - var H = this; - if (W !== m && H.contains(W) && H.isAdjustable(W) && (!m || H.contains(m))) { - var T = H._datas, - R = T.remove(W), - L = m ? H._datas.indexOf(m) : 0; - if (T.add(W, L), R !== L) { - H._76I(W, R, L); - var J = W._parent; - !J || J.ISubGraph || Bk(J) || H.sendToBottom(W._parent, W) - } - } - } - }), Uh(fb, { - ms_edit: function (i) { - i._46O = function (W) { - var A = this, - l = A.gv.dm(), - g = A._index, - b = A._89I, - Y = A._node, - J = A._shape, - H = A._edge, - Z = A._77I; - Y && b ? (this.fi({ - kind: "endEditRect", - event: W, - data: Y, - direction: b - }), l.endTransaction()) : J && g >= 0 ? (A.fi({ - kind: "endEditPoint", - event: W, - data: J, - index: g - }), l.endTransaction()) : H && g >= 0 ? (A.fi({ - kind: "endEditPoint", - event: W, - data: H, - index: g - }), l.endTransaction()) : Z && (A.fi({ - kind: "endEditRotation", - event: W, - data: Z - }), l.endTransaction()) - }, i._78I = function (t) { - var Q = this; - Q.autoScroll(t); - var j = Q.gv.lp(t), - s = Q._index, - i = Q._89I, - S = Q._node, - m = Q._shape, - V = Q._edge, - q = Q._77I; - if (S && i) Q._80O(j), Q.fi({ - kind: "betweenEditRect", - event: t, - data: S, - direction: i - }); - else if (m && s >= 0) j.e = m.getPoints().get(s).e, m.setPoint(s, j), Q.fi({ - kind: "betweenEditPoint", - event: t, - data: m, - index: s - }); - else if (V && s >= 0) { - var k = V.s(Ei); - j.e = k.get(s).e, k.set(s, j), V.fp(Ei, F, k), Q.fi({ - kind: "betweenEditPoint", - event: t, - data: V, - index: s - }) - } else if (q) { - var Y = q.p(), - z = q.getScale(), - I = N + D(j.y - Y.y, j.x - Y.x); - z.y < 0 && (I += W), X(I) < .04 && (I = 0), q.setRotation(I), Q.fi({ - kind: "betweenEditRotation", - event: t, - data: q - }) - } - }, i._80O = function (O) { - var J = this, - Z = J._node, - N = J._rect, - u = N.x, - T = N.y, - n = N.width, - H = N.height, - $ = J._89I, - h = J._anchor, - F = J._matrix, - O = F.tfi(O); - "northwest" === $ ? N = ms(O, { - x: u + n, - y: T + H - }) : $ === Tb ? N = ms({ - x: u, - y: O.y - }, { - x: u + n, - y: T + H - }) : "northeast" === $ ? N = ms({ - x: u, - y: O.y - }, { - x: O.x, - y: T + H - }) : $ === Wg ? N = ms({ - x: O.x, - y: T - }, { - x: u + n, - y: T + H - }) : $ === Yn ? N = ms({ - x: u, - y: T - }, { - x: O.x, - y: T + H - }) : "southwest" === $ ? N = ms({ - x: O.x, - y: T - }, { - x: u + n, - y: O.y - }) : "south" === $ ? N = ms({ - x: u, - y: T - }, { - x: u + n, - y: O.y - }) : "southeast" === $ && (N = ms({ - x: u, - y: T - }, O)), Z.setPosition(F.tf(N.x + N.width * h.x, N.y + N.height * h.y)), Z.setWidth(N.width), Z.setHeight(N.height) - }, i._80I = function (a, U, L, z) { - var J = this, - V = J.gv._zoom, - t = (J.gv.getEditPointSize() + 2) / V; - return cf({ - x: U - t / 2, - y: L - t / 2, - width: t, - height: t - }, a) ? (J._89I !== z && (J._89I = z), !0) : !1 - }, i._79I = function (K, f, L) { - var O = this, - J = O.gv, - R = f ? J.getDataUI(f) : F, - e = R ? R._55O : F; - if (e) { - var A, H, x, m, B = J._zoom, - d = (J.getEditPointSize() + 2) / B, - W = J.lp(K); - if (Fq(f)) { - if (e._56O && Fq(f) && (H = e._98o, cf({ - x: H.x - d / 2, - y: H.y - d / 2, - width: d, - height: d - }, W))) return O._77I = f, L && O.fi({ - kind: "beginEditRotation", - event: K, - data: f - }), O.setCursor("crosshair"), !0; - if (e._43O && f instanceof Fc) - for (x = f.getPoints(), A = x.size() - 1; A >= 0; A--) - if (H = x.get(A), cf({ - x: H.x - d / 2, - y: H.y - d / 2, - width: d, - height: d - }, W)) return O._index = A, O._shape = f, L && O.fi({ - kind: "beginEditPoint", - event: K, - data: f, - index: A - }), O.setCursor("crosshair"), !0; - if (e._42O) - for (var b = f.getEditControlPoints(), i = ["northwest", -1, -1, Wg, -1, 0, "southwest", -1, 1, "south", 0, 1, "southeast", 1, 1, Yn, 1, 0, "northeast", 1, -1, Tb, 0, -1], A = 0, m = b.length; m > A; A++) { - var y = i[3 * A], - Q = b[A]; - if (O._80I(W, Q.x, Q.y, y)) { - O._node = f; - var q = f.getWidth(), - T = f.getHeight(), - p = f.getAnchor(); - O._rect = { - x: -q * p.x, - y: -T * p.y, - width: q, - height: T - }, O._anchor = p, O._matrix = f.getMatrix(); - var v = f.getRotation(), - s = k(v), - _ = n(v), - Z = i[3 * A + 1] * he(f.getScale().x), - j = i[3 * A + 2] * he(f.getScale().y), - N = Math.atan2(-_ * Z - s * j, s * Z - _ * j), - z = (Math.round(N / (Math.PI / 4)) + 8) % 8, - Y = [Nc, "nesw-resize", zi, "nwse-resize", Nc, "nesw-resize", zi, "nwse-resize"][z]; - return O.setCursor(Y), L && O.fi({ - kind: "beginEditRect", - event: K, - data: f, - direction: O._89I - }), !0 - } - } - } - if (e._43O && Bk(f) && f.s(ej) === _b && (x = f.s(Ei))) - for (A = x.size() - 1; A >= 0; A--) - if (H = x.get(A), cf({ - x: H.x - d / 2, - y: H.y - d / 2, - width: d, - height: d - }, W)) return O._index = A, O._edge = f, L && O.fi({ - kind: "beginEditPoint", - event: K, - data: f, - index: A - }), O.setCursor("crosshair"), !0 - } - return !1 - } - }, ms_gv: function (A) { - A._currentSubGraph = F, A._initView = function () { - this._fpsInfo = { - time: 0, - fps: 0, - frames: 0 - } - }, A.upSubGraph = function () { - this.setCurrentSubGraph(Jr(this._currentSubGraph)) - }, A.isVisible = function (s) { - var j = this; - if (Jr(s) !== j._currentSubGraph) return !1; - if (Bk(s)) { - var k = s._40I, - $ = s._41I; - if (!k || !$) return !1; - if (!(s.s("edge.independent") || j.isVisible(k) && j.isVisible($))) return !1; - if (s.isEdgeGroupHidden()) return !1 - } else - for (var I = s._parent; I && !I.ISubGraph;) { - if (yl(I) && (!I.isExpanded() || !j.isVisible(I))) return !1; - I = I._parent - } - if (s._parent instanceof Br && !j.isVisible(s._parent)) return !1; - if (s._refGraph instanceof Ff && !j.isVisible(s._refGraph)) return !1; - if (j instanceof Hl) { - if (!s.s("3d.visible")) return !1 - } else { - var h = j.getLayersInfo(); - if (h) { - var C = h[s._layer]; - if (C && C.visible === !1) return !1 - } - if (!s.s("2d.visible")) return !1 - } - return j._visibleFunc ? j._visibleFunc(s) : !0 - }, A.handleSelectionChange = function (f) { - var m = this; - f.datas.each(function (z) { - m.invalidateData(z); - var s = z._parent; - yl(s) && Fq(z) && z.s(Dm) && (m.invalidateData(s), s._49I && s._49I.each(function (P) { - m.invalidateData(P) - })) - }), m.onSelectionChanged(f) - }, A.onSelectionChanged = function (D) { - var x = this, - f = x.sm(); - if (1 === f.size() && ("set" === D.kind || "append" === D.kind)) { - var E = f.ld(); - x.isAutoMakeVisible() && x.makeVisible(E), x.adjustIndex && x._dataModel.isAutoAdjustIndex() && x.adjustIndex(E) - } - }, A.makeVisible = function (n) { - if (n) { - var H = this, - Y = H.getDataUI ? H.getDataUI(n) : H.getData3dUI(n); - if (Y) { - var t = n, - $ = Jr(n); - for ($ !== H._currentSubGraph && H.setCurrentSubGraph($); - (t = t._parent) && t !== $;) yl(t) && t.setExpanded(!0); - H._23I = n, H.iv() - } - } - }, A.getLabel = function (b) { - var v = b.getStyle(Bg); - return v === Z ? b.getName() : v - }, A.getLabelBackground = function (V) { - return V.getStyle("label.background") - }, A.getLabelColor = function (j) { - return j.getStyle("label.color") - }, A.getLabel2 = function (D) { - return D.getStyle("label2") - }, A.getLabel2Background = function (F) { - return F.getStyle("label2.background") - }, A.getLabel2Color = function ($) { - return $.getStyle("label2.color") - }, A.getNote = function (Z) { - return Z.getStyle(Rm) - }, A.getNoteBackground = function (n) { - return n.getStyle("note.background") - }, A.getNote2 = function (G) { - return G.getStyle(Vk) - }, A.getNote2Background = function (E) { - return E.getStyle("note2.background") - }, A.handleClick = function (v, t, z) { - var K = this; - t ? (K.fi({ - kind: "clickData", - event: v, - data: t, - part: z - }), K.onDataClicked(t, v)) : (K.fi({ - kind: "clickBackground", - event: v - }), K.onBackgroundClicked(v)) - }, A.handleDoubleClick = function (R, b, P) { - var s = this; - jj(R) && (b ? (s.fi({ - kind: "doubleClickData", - event: R, - data: b, - part: P - }), s.onDataDoubleClicked(b, R, P), s.checkDoubleClickOnNote(R, b, P) || s.checkDoubleClickOnRotation && s.checkDoubleClickOnRotation(R, b, P) || (Bk(b) ? s.onEdgeDoubleClicked(b, R, P) : b.ISubGraph ? s.onSubGraphDoubleClicked(b, R, P) : yl(b) ? s.onGroupDoubleClicked(b, R, P) : b.IDoorWindow ? s.onDoorWindowDoubleClicked(b, R, P) : b.ICSGBox && s.onCSGBoxDoubleClicked(b, R, P))) : (s.fi({ - kind: "doubleClickBackground", - event: R - }), s.onBackgroundDoubleClicked(R))) - }, A.onSubGraphDoubleClicked = function (x) { - this.setCurrentSubGraph(x) - }, A.onEdgeDoubleClicked = function (x, k) { - this.isEditable(x) || (x.ISubGraph && !ik(k) ? this.setCurrentSubGraph(x) : x.s("edge.toggleable") && x.toggle()) - }, A._39Q = function (l) { - return this.isInteractive(l) ? this.preventDefaultWhenInteractive(l) : !1 - }, A.preventDefaultWhenInteractive = function (o) { - return o.s("preventDefaultWhenInteractive") - }, A.onGroupDoubleClicked = function (F) { - F.s("group.toggleable") && F.toggle() - }, A.onDoorWindowDoubleClicked = function (k) { - k.s("dw.toggleable") && k.toggle(!0) - }, A.onCSGBoxDoubleClicked = function (N, L) { - var r = this; - if (r instanceof Hl) { - var a = r.intersectObject(L, N); - a && N.s(a.part + ".toggleable") && N.toggleFace(a.part, !0) - } - }, A.onBackgroundClicked = function () { }, A.onBackgroundDoubleClicked = function () { - this.upSubGraph() - }, A.onDataClicked = function () { }, A.onDataDoubleClicked = function () { }, A.onAutoLayoutEnded = function () { }, A.onMoveEnded = function () { }, A.onPanEnded = function () { }, A.onPinchEnded = function () { }, A.onRectSelectEnded = function () { }, A.onZoomEnded = function () { }, A.serialize = function (g) { - return this.dm().serialize(g) - }, A.toJSON = function () { - return this.dm().toJSON() - }, A.deserialize = function (S, G) { - var i = this; - G = G instanceof Qp ? { - rootParent: G - } : El(G) ? { - setId: G - } : Mf(G) ? { - finishFunc: G - } : G || {}, G.view = i; - var e = i.dm(); - return G.__innerHandler__ = function (k) { - if (El(e.a("toolTipEnable")) && (e.a("toolTipEnable") ? i.enableToolTip() : i.disableToolTip()), i instanceof O.graph.GraphView && (El(e.a("zoomable")) && i.setZoomable && i.setZoomable(e.a("zoomable")), El(e.a("pannable")) && i.setPannable && i.setPannable(e.a("pannable")), El(e.a("rectSelectable")) && i.setRectSelectable && i.setRectSelectable(e.a("rectSelectable")), e.a("fitContent") === !0 && i.fitContent && i.fitContent(!0, 0)), i instanceof O.graph3d.Graph3dView) { - var Y = k.scene; - Y && Y.shadow != F && i.shadowMap.setShadow(Y.shadow, Y.shadowParams); - var $ = e.a("sceneContext"); - $ ? ($.eye && i.setEye($.eye), $.center && i.setCenter($.center), Bp($.far) && i.setFar($.far), Bp($.near) && i.setNear($.near)) : (Bp(e.a("sceneNear")) && i.setNear(e.a("sceneNear")), Bp(e.a("sceneFar")) && i.setFar(e.a("sceneFar")), Y && (Y.eye && i.setEye(Y.eye), Y.center && i.setCenter(Y.center))), El(e.a("sceneShadowEnabled")) && (e.a("sceneShadowEnabled") ? i.enableShadow() : i.disableShadow()), e.a("sceneShadowDegreeX") && i.setShadowDegreeX(e.a("sceneShadowDegreeX")), e.a("sceneShadowDegreeZ") && i.setShadowDegreeZ(e.a("sceneShadowDegreeZ")), e.a("sceneShadowIntensity") && i.setShadowIntensity(e.a("sceneShadowIntensity")), e.a("sceneShadowQuality") && i.setShadowQuality(e.a("sceneShadowQuality")), e.a("sceneShadowType") && i.setShadowType(e.a("sceneShadowType")), e.a("sceneShadowRadius") && i.setShadowRadius(e.a("sceneShadowRadius")), e.a("sceneShadowBias") && i.setShadowBias(e.a("sceneShadowBias")), El(e.a("sceneDashEnable")) && i.setDashDisabled(!e.a("sceneDashEnable")), dk(e.a("sceneHighlightMode")) && i.setHighlightMode(e.a("sceneHighlightMode")), Bp(e.a("sceneHighlightWidth")) && i.setHighlightWidth(e.a("sceneHighlightWidth")), e.a("sceneHighlightColor") && i.setHighlightColor(e.a("sceneHighlightColor")), El(e.a("sceneHeadlightEnable")) && i.setHeadlightDisabled(!e.a("sceneHeadlightEnable")), Bp(e.a("sceneHeadlightRange")) && i.setHeadlightRange(e.a("sceneHeadlightRange")), e.a("sceneHeadlightColor") && i.setHeadlightColor(e.a("sceneHeadlightColor")), Bp(e.a("sceneHeadlightIntensity")) && i.setHeadlightIntensity(e.a("sceneHeadlightIntensity")), Bp(e.a("sceneHeadlightAmbientIntensity")) && i.setHeadlightAmbientIntensity(e.a("sceneHeadlightAmbientIntensity")), El(e.a("sceneFogEnable")) && i.setFogDisabled(!e.a("sceneFogEnable")), e.a("sceneFogMode") && i.setFogMode(e.a("sceneFogMode")), El(e.a("sceneFogDensity")) && i.setFogDensity(!e.a("sceneFogDensity")), e.a("sceneFogColor") && i.setFogColor(e.a("sceneFogColor")), Bp(e.a("sceneFogNear")) && i.setFogNear(e.a("sceneFogNear")), Bp(e.a("sceneFogFar")) && i.setFogFar(e.a("sceneFogFar")), El(e.a("sceneBatchBrightnessDisabled")) && i.setBatchBrightnessDisabled(e.a("sceneBatchBrightnessDisabled")), El(e.a("sceneBatchBlendDisabled")) && i.setBatchBlendDisabled(e.a("sceneBatchBlendDisabled")), El(e.a("sceneBatchColorDisabled")) && i.setBatchColorDisabled(e.a("sceneBatchColorDisabled")), e.a("sceneBatchInfoMap") && i.setBatchInfoMap(e.a("sceneBatchInfoMap")), Bp(e.a("sceneMoveStep")) && i.setMoveStep(e.a("sceneMoveStep")), Bp(e.a("sceneRotateStep")) && i.setRotateStep(e.a("sceneRotateStep")); - var h = e.a("sceneSkyboxType") || "sphere"; - if (h != F) { - var T = {}, - _ = !1; - if ("sphere" === h) { - T.shape3d = h; - var U = e.a("sceneSkyboxImage"); - U && (T["shape3d.image"] = U, _ = !0) - } else T.shape3d = Z, ["front", "back", "left", "right", "top", "bottom"].forEach(function (y) { - var f = y + ".image", - D = y.charAt(0).toUpperCase() + y.slice(1), - p = e.a("sceneSkybox" + D + "Image"); - p && (T[f] = p, _ = !0) - }); if (_) { - var z = new Dp; - z.s3(20, 20, 20), T["body.color"] = e.a("sceneSkyboxBodyColor"), T.envmap = e.a("sceneSkyboxEnvmap"), T.light = !1, T["texture.wrap"] = "clampToEdge", z.s(T), ["X", "Y", "Z"].forEach(function (L) { - var Y = e.a("sceneSkyboxRotation" + L); - Bp(Y) && z["setRotation" + L](Y) - }), i.setSkybox(z) - } - } - } - }, e.deserialize(S, G.rootParent, G) - }, A.isDebugTipShowing = function () { - return !!this._debugDiv - }, A.showDebugTip = function () { - var v = this, - Y = v._debugDiv; - if (!Y) { - Y = v._debugDiv = U.createElement("div"), Y.style.position = "absolute", Y.style.overflow = "hidden", Y.style.font = u.debugTipLabelFont, Y.style.padding = "6px", Y.style.backgroundColor = u.debugTipBackground, Y.style.color = u.debugTipLabelColor; - var F = v.getView(); - v._79O ? F.insertBefore(Y, v._79O) : F.appendChild(Y); - var C = function () { - v.redraw(); - var $ = v._canvas, - S = "FPS: " + v._fpsInfo.fps + "
" + "Datas: " + v.dm().getDatas().length + ($ ? "
Size: " + $.width + " * " + $.height : ""), - x = v.dm()._historyManager; - x && (S += "
Undoes: " + x.getHistories().length + " index: " + x.getHistoryIndex()); - var e = v.getDebugTip(); - e && (S += "
" + e), Y.innerHTML = S, v._isDebugging && requestAnimationFrame(C) - }; - requestAnimationFrame(C), v._isDebugging = !0 - } - }, A.hideDebugTip = function () { - var y = this, - o = y._debugDiv; - o && (delete y._debugDiv, y.getView().removeChild(o), y._isDebugging = !1) - }, A.updateDOMAppendMatrix = function () { - var J = this.getView(); - J && (J.updateAppendMatrix = !0) - }, A.countFrame = function () { - if (this._isDebugging) { - var h = Date.now(), - G = this._fpsInfo; - h - G.time > 1e3 ? (G.fps = Math.round(1e5 * (G.frames + 1) / (h - G.time)) / 100, G.time = h, G.frames = 0) : G.frames++ - } - } - }, ms_icons: function (f) { - f.getRotation = function (m) { - return m == F ? 0 : m - }, f._15O = function () { - var j = this, - l = j.s(ub); - if (l) { - var H = j, - m = j.data || j._data, - B = j._38o = { - icons: l, - rects: {} - }; - for (var Y in l) { - var q = l[Y], - A = Dj(q.shape3d, m, H); - if (!(Dj(q.visible, m, H) === !1 || Dj(q.for3d, m, H) && !j.I3d || A && !j.I3d)) { - var T = A ? [A] : Dj(q.names, m, H), - b = T ? T.length : 0, - s = Dj(q.position, m, H) || 3, - n = Dj(q.offsetX, m, H) || 0, - E = Dj(q.offsetY, m, H) || 0, - R = Dj(q.direction, m, H) || Yn, - x = Dj(q.gap, m, H), - w = x != F ? x : 1, - y = Dj(q.rotation, m, H), - G = Dj(q.keepOrien, m, H), - i = Dj(q.rotationFixed, m, H) ? y : j.getRotation(y, G, s), - v = F, - W = B.rects[Y] = new Array(b); - W.rotation = i; - for (var M = 0; b > M; M++) { - var p, Z, U, z, L = T[M]; - if (A) U = 0, z = 0; - else { - var O = ii(L); - U = Dj(q.width, m, H), z = Dj(q.height, m, H), U == F && (U = xc(O, m)), z == F && (z = oo(O, m)) - } if (v ? R === Yn ? n += U / 2 : R === Wg ? n -= U / 2 : R === Tb ? E -= z / 2 : E += z / 2 : v = { - width: U, - height: z - }, j.I3d) { - var a = -U / 2, - N = -z / 2; - Z = { - width: U, - height: z, - mat: j._16O(Dj(q.autorotate, m, H), s, v, Dj(q.face, m, H) || wg, Dj(q.t3, m, H), Dj(q.r3, m, H), Dj(q.rotationMode, m, H), n, E), - vs: new fk([a, -N, 0, a, -N - z, 0, a + U, -N - z, 0, a + U, -N, 0]) - } - } else p = j.getPosition(s, n, E, v, Dj(q.positionFixed, m, H)), Z = { - x: p.x - U / 2, - y: p.y - z / 2, - width: U, - height: z - }, j._68o(Z, i); - W[M] = Z, R === Yn ? n += U / 2 + w : R === Wg ? n -= U / 2 + w : R === Tb ? E -= z / 2 + w : E += z / 2 + w - } - } - } - } - } - } - }); - var Ym = { - 1: 1, - 2: 1, - 6: 1, - 9: 1, - 10: 1, - 14: 1, - 15: 1, - 16: 1, - 21: 1, - 22: 1, - 26: 1, - 29: 1, - 30: 1, - 34: 1, - 36: 1, - 38: 1, - 40: 1, - 42: 1, - 45: 1, - 50: 1, - 52: 1, - 54: 1 - }, - nk = { - 3: 1, - 7: 1, - 11: 1, - 17: 1, - 23: 1, - 27: 1, - 31: 1, - 44: 1, - 46: 1, - 47: 1, - 49: 1 - }, - Jd = { - translateX: 1, - translateY: 1, - zoom: 1, - scrollBarVisible: 1 - }, - xs = { - sourceAgent: 1, - targetAgent: 1, - expanded: 1, - parent: 1, - host: 1 - }, - Lk = { - position: 1, - width: 1, - height: 1, - expanded: 1, - rotation: 1, - anchor: 1, - scale: 1, - "s:edge.points": 1 - }, - Am = { - "edge.type": 1, - "edge.group": 1 - }, - Yr = { - rotation: 1, - rotationX: 1, - rotationZ: 1 - }, - Zf = { - rotation: 1, - rotationX: 1, - rotationZ: 1, - position: 1, - width: 1, - height: 1, - anchor: 1, - scale: 1 - }, - ir = { - position: 1, - width: 1, - height: 1, - anchor: 1, - scale: 1, - "s:grid.row.count": 1, - "s:grid.column.count": 1, - "s:grid.row.percents": 1, - "s:grid.column.percents": 1, - "s:grid.border": 1, - "s:grid.border.left": 1, - "s:grid.border.right": 1, - "s:grid.border.top": 1, - "s:grid.border.bottom": 1, - "s:grid.gap": 1 - }, - Zj = { - "attach.row.index": 1, - "attach.column.index": 1, - "attach.row.span": 1, - "attach.column.span": 1, - "attach.padding": 1, - "attach.padding.left": 1, - "attach.padding.right": 1, - "attach.padding.top": 1, - "attach.padding.bottom": 1, - "attach.index": 1, - "attach.offset": 1, - "attach.offset.relative": 1, - "attach.offset.opposite": 1, - "attach.gap": 1, - "attach.gap.relative": 1, - "attach.thickness": 1 - }, - zq = { - shape: 1, - thickness: 1, - position: 1, - anchor: 1, - scale: 1 - }, - Jr = function (Q) { - if (!Q) return F; - if (Bk(Q)) { - var s = Q._40I, - l = Q._41I; - if (!s || !l) return F; - var G = Jr(s), - E = Jr(l); - return G === E ? G : F - } - for (var r = Q._parent; Bk(r) && !r.ISubGraph;) r = r._parent; - return r ? r.ISubGraph ? r : Jr(r) : F - }, - ld = function (I, j, F, b) { - var $ = j.getStyle(F) * b; - $ && vn(I, $), $ = j.getStyle(F + ".left") * b, $ && (I.x -= $, I.width += $), $ = j.getStyle(F + ".right") * b, $ && (I.width += $), $ = j.getStyle(F + ".top") * b, $ && (I.y -= $, I.height += $), $ = j.getStyle(F + ".bottom") * b, $ && (I.height += $), I.width < 0 && (I.width = -I.width, I.x -= I.width), I.height < 0 && (I.height = -I.height, I.y -= I.height) - }, - ag = function (U) { - for (var R, j = 0, S = U.size(); S > j; j++) - if (R = U.getChildAt(j), Fq(R) && ag(R)) return !0; - return U.hasAgentEdges() - }, - An = function (z) { - if (!z) return F; - for (var A = z._parent; yl(A);) { - if (!yl(A._parent)) return A.isExpanded() ? z : A; - A.isExpanded() || (z = A), A = A._parent - } - return z - }, - ur = function (y, b) { - if (!y || !b) return F; - var p, H, X, $ = Jr(y), - M = Jr(b); - if ($ !== M) { - for (; M && $ !== M;) M = Jr(M); - if ($ === M) return y; - p = new xr, p.add(y, 0); - for (var f = y._parent; Fq(f) && !b.isDescendantOf(f);) p.add(f, 0), f = f._parent; - for (X = p.size(), H = 0; X > H; H++) { - var r = p.get(H); - if (yl(r) && !r.isExpanded()) return r; - if (r.ISubGraph) return r - } - return y - } - return y - }, - Oq = function (g) { - if (g.isLooped()) return g._source; - var L = An(g._source), - b = An(g._target); - return L === b ? g._source : ur(L, b) - }, - xg = function (y) { - if (y.isLooped()) return y._target; - var m = An(y._source), - L = An(y._target); - return m === L ? y._target : ur(L, m) - }, - Eo = function (r, D, H) { - "target" !== H && (H = "source"); - var L = "target" === H ? D.getTargetAgent() : D.getSourceAgent(), - E = "edge." + H + "."; - if (Bk(L)) { - var T = r.getDataUI(L); - T._79o(); - var i = D.s(E + "index"); - if (i >= 0) { - var e = Kk(T); - return e[Math.max(0, Math.min(i, e.length - 1))] - } - var j = D.s(E + "percent") || 0; - j = Math.max(0, Math.min(j, 1)); - var b = qm(T); - return np(b, 100 * j) - } - return Yg(r, L, D.s(E + "position"), D.s(E + "offset.x"), D.s(E + "offset.y"), D.s(E + "anchor.x"), D.s(E + "anchor.y")) - }, - Yg = function (P, R, S, y, u, e, W) { - if (!R) return F; - var $, M = R.getRotation ? R.getRotation() : 0; - if (e !== Z || W !== Z) { - e = e === Z ? .5 : e, W = W === Z ? .5 : W; - var C = R.getScale(); - if (M && !Th(R, P) || C.x < 0 || C.y < 0) { - var H = R.getPosition(), - m = R.getWidth(), - I = R.getHeight(), - A = R.getAnchor(), - _ = new In(M, H.x, H.y, C.x, C.y); - S = _.tf((e - A.x) * m, (W - A.y) * I) - } else $ = Rp(P, R), S = { - x: $.x + e * $.width, - y: $.y + W * $.height - } - } else S = Re(S, Rp(P, R)); if (M) { - var j = k(M), - U = n(M), - t = y * j - u * U; - u = y * U + u * j, y = t - } - return S.x += y, S.y += u, S - }, - kk = function (Y, h) { - if (!Y || !h) return F; - var w, b, D, p, P, M; - if (Y === h) { - if (p = Y.getLoopedEdges(), !p) return F; - p = new xr(p) - } else { - if (P = Y.getAgentEdges(), M = h.getAgentEdges(), !P || !M) return F; - for (b = P.size(), w = 0; b > w; w++) D = P.get(w), M.contains(D) && (p || (p = new xr), p.add(D)) - } if (p) - for (w = 0; w < p.size(); w++) D = p.get(w), D.getStyle(ej) === _b && (D._22I(F), p.removeAt(w), w--); - return p - }, - gi = function (j, z) { - var e = kk(j, z); - if (e && !e.isEmpty()) { - if (1 === e.size()) return e.get(0)._22I(F), void 0; - var M = new xr, - T = new xr; - e.each(function (e) { - var k = e.s("edge.group"); - M.contains(k) || M.add(k) - }), M.sort(), M.each(function (d) { - T.add(new O.EdgeGroup(e.toList(function (h) { - return d === h.s("edge.group") - }), T)) - }), T.each(function (s) { - s.each(function (T) { - T._22I(s) - }) - }) - } - }, - wq = function (K, L, Y) { - var n = K._canvas; - K._zoom; - var b = Nm(L, n), - X = Nm(Y, n); - return { - x: b.x - X.x, - y: b.y - X.y - } - }, - vp = function (t, q) { - if (q) { - var Z = q.rect, - v = q.color, - S = q.rotation, - r = q.labelWidth, - o = q.background, - k = q.opacity, - l = q.scale, - O = l != F && 1 !== l; - if (k != F) { - var A = t.globalAlpha; - t.globalAlpha *= k - } - if (S || O) { - t.save(); - var j = Z.x + Z.width / 2, - h = Z.y + Z.height / 2; - wh(t, j, h), S && jc(t, S), O && t.scale(l, l), wh(t, -j, -h) - } - if (o && fl(t, Z.x, Z.y, Z.width, Z.height, o), r) { - var L = Z.width, - m = t.createLinearGradient(Z.x, Z.y, Z.x + L, Z.y); - m.addColorStop(0, v), m.addColorStop(.9, v), m.addColorStop(1, nb), v = m, Z.width = r - } - Om(t, q.ss, Z, q.font, v, q.align), r && (Z.width = L), (S || O) && t.restore(), k != F && (t.globalAlpha = A) - } - }, - $q = function (s, Q) { - if (Q) { - var X = Q.rect, - O = X.x, - E = X.y, - h = X.width, - K = X.height, - J = Q.background, - w = Q.backgroundImage, - f = Q.borderWidth, - U = Q.borderColor, - e = Q.labelWidth, - M = Q.opacity, - Y = Q.scale, - n = Y != F && 1 !== Y; - if (M != F) { - var _ = s.globalAlpha; - s.globalAlpha *= M - } - if (n) { - s.save(); - var y = X.x + X.width / 2, - d = X.y + X.height / 2; - wh(s, y, d), s.scale(Y, Y), wh(s, -y, -d) - } - if (Q.expanded) { - var t = V(8, h / 4), - o = E + K - 8; - if (s.fillStyle = J, s.beginPath(), s.moveTo(O, E), s.lineTo(O, o), s.lineTo(O + h / 2, o), s.lineTo(O + h / 2, E + K), s.lineTo(O + h / 2 + t, o), s.lineTo(O + h, o), s.lineTo(O + h, E), s.closePath(), s.fill(), f && (s.lineWidth = f, s.lineJoin = "round", s.lineCap = "round", U ? (s.strokeStyle = U, s.stroke()) : (s.strokeStyle = cn(J), s.beginPath(), s.moveTo(O + h, E), s.lineTo(O + h, o), s.lineTo(O + h / 2 + t, o), s.lineTo(O + h / 2, E + K), s.stroke(), s.strokeStyle = Ee(J), s.beginPath(), s.moveTo(O + h, E), s.lineTo(O, E), s.lineTo(O, o), s.lineTo(O + h / 2, o), s.lineTo(O + h / 2, E + K), s.stroke())), w) qk(s, ii(w), Mg, X.x, X.y, X.width, X.height - 8, Q.data, Q.view); - else { - if (X.height -= 8, J = Q.color, e) { - var S = h, - H = s.createLinearGradient(O, E, O + S, E); - H.addColorStop(0, J), H.addColorStop(.9, J), H.addColorStop(1, nb), J = H, X.width = e - } - Om(s, Q.ss, X, Q.font, J, Q.align), e && (X.width = S), X.height += 8 - } - } else if (Q.icon) Yd(s, ii(Q.icon), O, E, h, K, Q.data, Q.view); - else { - var v = h / 2; - f && (s.lineWidth = f, s.lineJoin = "round", s.lineCap = "round", s.strokeStyle = U ? U : cn(J), s.beginPath(), s.arc(O + v, E + v, v, N, 1.6 * W, !0), s.moveTo(O + v, E + K), s.lineTo(O + h - v / 5, E + v), s.stroke(), s.strokeStyle = U ? U : Ee(J), s.beginPath(), s.arc(O + v, E + v, v, 1.6 * W, N, !0), s.moveTo(O + v, E + K), s.lineTo(O + v / 5, E + v), s.stroke()), s.fillStyle = J, s.beginPath(), s.arc(O + v, E + v, v, 0, $, !0), s.moveTo(O + v, E + K), s.lineTo(O + h - v / 5, E + v), s.lineTo(O + v / 5, E + v), s.closePath(), s.fill(), s.fillStyle = Q.color, s.beginPath(), s.arc(O + v, E + v, v / 3, 0, $, !0), s.fill() - } - n && s.restore(), M != F && (s.globalAlpha = _) - } - }, - cr = function (p, x) { - return x > 2 * p ? p : x / 2 - }, - Mn = function (A, c, m, Z) { - if (!A || !c) return 0; - var L = D(c.y - A.y, c.x - A.x); - return m || (L = c.x < A.x ? L + W : L), L + Z - }, - Md = function (A, v, m, J, i, M, Q) { - Q && (A.x > v.x || A.x === v.x && A.y > v.y) && (m = cg[m], i = -i); - var b = Re(m, { - x: 0, - y: 0, - width: En(A, v), - height: 0 - }, M); - return b.x += J, b.y += i, b = new In(D(v.y - A.y, v.x - A.x)).tf(b), b.x += A.x, b.y += A.y, b - }, - Ml = function (B, l, d, C, M) { - if (B._19Q = !0, !d.getEdgeGroup()) return C ? d.s("edge.gap") : 0; - if (Bk(d.getSourceAgent()) || Bk(d.getTargetAgent())) return 0; - var m, X = 0, - L = 0, - $ = 0; - if (d.getEdgeGroup().getSiblings().each(function (Q) { - Q.each(function (Q) { - if (l.isVisible(Q) && Q.s(ej) == M) { - var Y = Q.s("edge.gap"); - m ? (L += $ / 2 + Y / 2, $ = Y) : (m = Q, $ = Y), Q === d && (X = L) - } - }) - }), C) return L - X + $; - var Z = X - L / 2; - return m && d._40I !== m._40I && (B._19Q = !1), Z - }, - Dk = function () { - var F = function (R) { - var e = []; - return R.forEach(function (I) { - e.push({ - x: I.x, - y: I.y - }), e.push({ - x: I.x + I.width, - y: I.y + I.height - }), e.push({ - x: I.x + I.width, - y: I.y - }), e.push({ - x: I.x, - y: I.y + I.height - }) - }), e - }; - return function (T, N, M) { - if ("oval" === T) { - var j = 0, - t = M.height / M.width, - f = t * t, - n = M.x + M.width / 2, - x = M.y + M.height / 2, - s = F(N); - s.forEach(function (z) { - var C = z.x - n, - k = z.y - x, - R = C * C + k * k / f; - R > j && (j = R) - }), j = w(j); - var O = t * j; - return { - x: n - j, - y: x - O, - width: 2 * j, - height: 2 * O - } - } - if ("circle" === T) { - var r = 0, - n = M.x + M.width / 2, - x = M.y + M.height / 2, - s = F(N); - return s.forEach(function (i) { - var Q = i.x - n, - m = i.y - x, - C = Q * Q + m * m; - C > r && (r = C) - }), r = w(r), { - x: n - r, - y: x - r, - width: 2 * r, - height: 2 * r - } - } - return "roundRect" === T ? (vn(M, V(M.width, M.height) / 16), M) : M - } - }(), - hg = O.graph = {}, - Bb = function (i, v, z) { - yc(Y + ".graph." + i, v, z) - }; - O.layout = {}; - var wk = {}, - lc = function (i, D, P, A, r, c, v, z) { - var X = v._zoom; - if (X !== v._cacheZoom && (v._cacheZoom = X, v._cacheImage = {}), X *= ij, A = Math.ceil(A * X), r = Math.ceil(r * X), A > 2048 || r > 2048) return D; - var w = [D.uuid, A, r, P].join("_"); - D.cacheRule && (w += "_" + Dj(D.cacheRule, c, v)); - var n = v._cacheImage[w]; - return n || (_m(), n = O.Default.toCanvas(D, A, r, P, c, v, z), zm() && (v._cacheImage[w] = n)), n - }; - Uh(u, { - setImageCacheRule: function (h, V) { - var C; - V || "object" != typeof h ? (C = {}, C[h] = V) : C = h; - for (var l in C) { - var g = C[l]; - dk(l) ? (yc = ii(l), yc ? yc.cacheRule = g : wk[l] = g) : l.cacheRule = g - } - } - }); - var zr = { - comps: [{ - type: bl, - points: [85, 50, 70, 115, 100, 71, 86, 107, 88, 49, 43, 117, 100, 48, 57, 106, 108, 57, 69, 55, 101, 53, 78, 114, 65, 55, 97, 112, 56, 70, 68, 49, 67, 97, 115, 122, 67, 43, 113, 110, 114, 54, 69, 61], - borderWidth: 1, - borderColor: F - }] - }; - if (zr[ul] = zr[Hh] = 160, x.Image) { - var fh = new x.Image; - fh.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAALUlEQVRYR+3QQREAAAABQfqXFsNnFTizzXk99+MAAQIECBAgQIAAAQIECBAgMBo/ACHo7lH9AAAAAElFTkSuQmCC", _c("default_blank", fh) - } - _c("node_image", ee(30, 30, [{ - type: Tq, - rect: [4, 5, 22, 16], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [2, 3, 26, 20], - borderWidth: 1, - borderColor: Ur - }, { - type: Tq, - rect: [11, 23, 8, 4], - background: Ur - }, { - type: Tq, - rect: [6, 27, 18, 2], - background: Ur - }])), _c("node_icon", ee(16, 16, [{ - type: Tq, - rect: [2, 2, 12, 10], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Xe, - rect: [2, 2, 12, 10], - width: 1, - color: Ur - }, { - type: Tq, - rect: [6, 12, 4, 2], - background: Ur - }, { - type: Tq, - rect: [4, 14, 8, 1], - background: Ur - }])), _c("block_icon", ee(16, 16, [{ - type: Xe, - rect: [1, 1, 14, 14], - width: 1, - color: Ur - }])), _c("group_image", ee(66, 39, [{ - type: Tq, - rect: [44.3, 18, 18.1, 12.8], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [3.3, 17.8, 18.1, 12.8], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [15.8, 3.2, 33.5, 26.4], - borderWidth: 1, - borderColor: Ur, - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [26.2, 29.4, 12.8, 4.2], - background: Ur - }, { - type: Tq, - rect: [21.3, 33.5, 22.5, 2.3], - background: Ur - }, { - type: Tq, - rect: [5.3, 32.7, 14.1, 2.1], - background: Ur - }, { - type: Tq, - rect: [9, 30.4, 6.7, 2.4], - background: Ur - }, { - type: Tq, - rect: [50, 30.7, 6.7, 2.4], - background: Ur - }, { - type: Tq, - rect: [46.3, 33, 14.1, 2.1], - background: Ur - }])), _c("group_icon", ee(16, 16, [{ - type: Tq, - rect: [4, 12, 4, 2], - background: Ur - }, { - type: Tq, - rect: [2, 13, 8, 1], - background: Ur - }, { - type: Tq, - rect: [12, 12, 2, 1], - background: Ur - }, { - type: Tq, - rect: [11, 13, 4, 1], - background: Ur - }, { - type: Tq, - rect: [10, 7, 6, 5], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [1, 2, 10, 10], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Xe, - rect: [1, 2, 10, 10], - width: 1, - color: Ur - }])), _c("refGraph_icon", ee(16, 16, [{ - type: "shape", - borderWidth: 1, - borderColor: Ur, - borderCap: "round", - rotation: .7854, - points: [12.5502, 6.7981, 12.5502, 6.7981, 12.5502, 4.8181, 12.5502, 3.7981, 12.5502, 2.7781, 11.36687, 1.7981, 10.0502, 1.7981, 8.73354, 1.7981, 7.5502, 2.8181, 7.5502, 3.7981, 7.5502, 4.55989, 7.5502, 7.79805, 7.5502, 7.79805, 7.5502, 7.79805, 7.5502, 9.7981, 10.0502, 9.7981], - segments: [1, 4, 4, 4, 4, 4] - }, { - type: "shape", - borderWidth: 1, - borderColor: Ur, - borderCap: "round", - rotation: -2.35619, - points: [8.4498, 11.2019, 8.4498, 11.2019, 8.4498, 9.2219, 8.4498, 8.2019, 8.4498, 7.1819, 7.26646, 6.2019, 5.9498, 6.2019, 4.63313, 6.2019, 3.4498, 7.2219, 3.4498, 8.2019, 3.4498, 8.9637, 3.4498, 12.20186, 3.4498, 12.20186, 3.4498, 12.20186, 3.4498, 14.2019, 5.9498, 14.2019], - segments: [1, 4, 4, 4, 4, 4] - }])), _c("edge_icon", ee(16, 16, [{ - type: Tq, - rect: [2.1, 6.9, 11.5, 2.6], - rotation: -.79, - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [10.8, 1, 4, 4], - background: Ur - }, { - type: Tq, - rect: [1, 11, 4, 4], - background: Ur - }])), _c("subGraph_image", ee(72, 45, [{ - type: bl, - points: [9, 42, .3, 38.4, 2.4, 28.8, 5.7, 21.6, 11.7, 22.5, 11.7, 15.9, 16.8, 13.8, 21.6, 12, 24.3, 15.9, 27.9, 3, 42.3, 2.1, 59.4, 4.5, 57.3, 18.3, 67.5, 18.9, 69.6, 27.3, 69.9, 38.4, 64.2, 41.4], - segments: [1, 3, 3, 3, 3, 3, 3, 3, 3], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [29.6, 30.7, 3.6, 1.8], - background: Ur - }, { - type: Tq, - rect: [28.4, 32.3, 6, 1.2], - background: Ur - }, { - type: Tq, - rect: [37.3, 32, 10.8, 1.8], - background: Ur - }, { - type: Tq, - rect: [39.1, 29.9, 7.2, 2.3], - background: Ur - }, { - type: Tq, - rect: [26.6, 23.7, 9.6, 7.2], - gradient: Nf, - gradientColor: Cn, - background: Ur - }, { - type: Tq, - rect: [34.3, 16.8, 16.8, 13.2], - borderWidth: 1, - borderColor: Ur, - gradient: Nf, - gradientColor: Cn, - background: Ur - }])), _c("subGraph_icon", ee(17, 17, [{ - type: bl, - points: [2.2, 14.6, .2, 11.9, .8, 8.8, 1.8, 5.9, 5.6, 7.4, 3.8, 1.6, 10.3, 3, 14.5, 4.2, 12.2, 7.5, 18.9, 7.2, 14.5, 14.5], - segments: [1, 3, 3, 3, 3, 3], - gradient: Nf, - gradientColor: Cn, - background: Ur - }])), _c("shape_icon", ee(16, 16, [{ - type: bl, - points: [1.5, 1, 8.4, 1, 8.4, 7.2, 14.6, 7.1, 14.6, 14.9, 1.5, 14.9, 1.5, 1], - background: Ur - }])), _c("polyline_icon", ee(16, 16, [{ - type: bl, - points: [1.5, 1, 8.4, 1, 8.4, 7.2, 14.6, 7.1, 14.6, 14.9, 1.5, 14.9, 1.5, 1], - borderWidth: 1, - borderColor: Ur - }, - eq(7.5, .4), eq(7.5, 6.3), eq(13.6, 6.3), eq(13.6, 14), eq(.7, 13.9), eq(.7, .3)])), _c("grid_icon", ee(16, 16, [{ - type: Tq, - rect: [1, 1, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [6, 1, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [11, 1, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [11, 6, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [6, 6, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [1, 6, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [11, 11, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [6, 11, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }, { - type: Tq, - rect: [1, 11, 4, 4], - background: Ur, - gradient: Nf, - gradientColor: Cn - }])), _c("light_icon", ee(16, 16, [{ - type: "rect", - rect: [6, 9, 5, 5], - borderWidth: 1, - borderColor: Ur - }, { - type: "circle", - rect: [1, 1, 15, 10], - borderWidth: 1, - borderColor: Ur, - gradient: Nf, - gradientColor: Cn, - background: { - func: function (R) { - var M = R ? R.s(ep) : F; - return ip(M) ? "rgb(" + Zb(255 * M[0]) + "," + Zb(255 * M[1]) + "," + Zb(255 * M[2]) + ")" : M || Ur - } - } - }])), _c("text_icon", ee(16, 16, [{ - type: "shape", - points: [3, 3, 13, 3, 8, 3, 8, 14], - segments: [1, 2, 1, 2], - borderWidth: 1, - borderColor: Ur - }])), _c("border_image", { - fitSize: !0, - comps: [{ - type: "border", - relative: !0, - rect: [0, 0, 1, 1], - color: { - func: "style@border_color" - }, - width: { - func: "style@border_width" - } - }] - }), _c("columnChart_image", { - fitSize: !0, - boundExtend: 150, - comps: [{ - type: { - func: "style@chart.type" - }, - relative: !0, - rect: [0, 0, 1, 1], - label: { - func: "style@chart.label" - }, - labelColor: { - func: "style@chart.label.color" - }, - labelFont: { - func: "style@chart.label.font" - }, - series: { - func: "style@chart.series" - }, - minValue: { - func: "style@chart.min.value" - }, - maxValue: { - func: "style@chart.max.value" - } - }] - }), _c("lineChart_image", { - fitSize: !0, - boundExtend: 150, - comps: [{ - type: "lineChart", - relative: !0, - rect: [0, 0, 1, 1], - label: { - func: "style@chart.label" - }, - labelColor: { - func: "style@chart.label.color" - }, - labelFont: { - func: "style@chart.label.font" - }, - series: { - func: "style@chart.series" - }, - minValue: { - func: "style@chart.min.value" - }, - maxValue: { - func: "style@chart.max.value" - }, - linePoint: { - func: "style@chart.line.point" - }, - lineWidth: { - func: "style@chart.line.width" - }, - line3d: { - func: "style@chart.line.3d" - } - }] - }), _c("pieChart_image", { - fitSize: !0, - boundExtend: 150, - comps: [{ - type: "pieChart", - relative: !0, - rect: [0, 0, 1, 1], - label: { - func: "style@chart.label" - }, - labelColor: { - func: "style@chart.label.color" - }, - labelFont: { - func: "style@chart.label.font" - }, - hollow: { - func: "style@chart.hollow" - }, - startAngle: { - func: "style@chart.start.angle" - }, - values: { - func: "style@chart.values" - }, - colors: { - func: "style@chart.colors" - } - }] - }); - var vr = function (G, q, $, t, Y, T) { - var h, N, f, A, M, F, g, X, V, R, r, I = []; - if (Math.abs(t) > 2 * Math.PI && (t = 2 * Math.PI), M = Math.ceil(Math.abs(t) / (Math.PI / 4)), h = t / M, N = -h, f = -$, M > 0) { - F = G + Math.cos($) * Y, g = q + Math.sin(-$) * T, I.push({ - x: F, - y: g - }); - for (var E = 0; M > E; E++) f += N, A = f - N / 2, X = G + Math.cos(f) * Y, V = q + Math.sin(f) * T, R = G + Math.cos(A) * (Y / Math.cos(N / 2)), r = q + Math.sin(A) * (T / Math.cos(N / 2)), I.push({ - x: R, - y: r - }), I.push({ - x: X, - y: V - }) - } - return I - }, - gl = function (J) { - if (J) { - var i = J._data; - if (i instanceof O.Shape) return { - points: i.getPoints(), - segments: i.getSegments() - }; - var I; - if (i instanceof O.Edge && (I = J._78o)) { - var V, k, C = I.type, - T = I.points, - e = I.segments, - l = I.edgeTypeInfo; - if (!C || T) { - var a = I.sourcePoint, - U = a.x, - N = a.y, - _ = I.targetPoint, - S = _.x, - F = _.y; - if (C) e ? (V = new xr({ - x: U, - y: N - }), V.addAll(T), V.add({ - x: S, - y: F - }), k = new xr(e._as)) : (V = new xr({ - x: U, - y: N - }), T.each(function (U) { - V.add(U) - }), V.add({ - x: S, - y: F - })); - else if (I.looped) { - V = new xr(vr(U, N, 0, 2 * Math.PI, I.radius, I.radius)), k = new xr([1]); - for (var B = 0; B < (V.size() - 1) / 2; B++) k.add(3) - } else V = new xr, I.center ? (V.add({ - x: I.c1.x, - y: I.c1.y - }), V.add({ - x: U, - y: N - }), V.add({ - x: S, - y: F - }), V.add({ - x: I.c2.x, - y: I.c2.y - })) : (V.add({ - x: U, - y: N - }), V.add({ - x: S, - y: F - })) - } else l && (V = new xr(l.points._as), l.segments && (k = new xr(l.segments._as))); - return { - points: V, - segments: k - } - } - } - }, - qm = function (H, W, F) { - if (null == W) { - var j = gl(H); - if (!j) return; - W = j.points, F = j.segments - } - if (W) { - if (Array.isArray(W) && (W = new xr(W)), "number" == typeof W.get(0)) { - for (var m = new O.List, $ = 0; $ < W.size(); $ += 2) m.add({ - x: W.get($), - y: W.get($ + 1) - }); - W = m - } - if (!F) { - F = [1]; - for (var G = W.length - 1; G > 0; G--) F.push(2) - } - Array.isArray(F) && (F = new xr(F)); - for (var x = Yo(W._as, F._as, 50), A = x.length, B = [], $ = 0; A > $; $++) { - var d = x[$]; - d.length > 1 && B.push(d) - } - return B - } - }, - Pp = function (Q) { - for (var i = 0, U = Q.length - 1, N = 0; U > N; N++) { - var I = Q[N], - g = Q[N + 1], - F = g.x - I.x, - C = g.y - I.y; - i += Math.sqrt(F * F + C * C) - } - return i - }, - eh = function (F, e) { - for (var x = 0, u = e.length, I = 0; u > I; I++) { - var W = e[I]; - if (x += W, x > F) return I - } - return Math.min(I, u - 1) - }, - tp = function (j, D) { - for (var e = 0, g = 0, _ = 0, c = j.length - 1, U = 0; c > U; U++) { - var v = j[U], - H = j[U + 1], - b = H.x - v.x, - C = H.y - v.y; - if (_ = Math.sqrt(b * b + C * C), e += _, e > D) { - e -= _, g = U; - break - } - } - var I = j[g], - L = j[g + 1], - t = Math.atan2(L.y - I.y, L.x - I.x), - z = D - e, - C = Math.sin(t) * z, - b = Math.cos(t) * z; - return { - x: I.x + b, - y: I.y + C - } - }, - np = function (q, M) { - if (q) { - var r; - if (0 === M) r = q[0][0]; - else if (100 === M) q = q[q.length - 1], r = q[q.length - 1]; - else { - for (var b = 0, I = [], z = q.length, l = 0; z > l; l++) { - var A = q[l], - Q = Pp(A); - b += Q, I.push(Q) - } - for (var m = b * M / 100, p = eh(m, I), o = 0, e = 0; p > e; e++) o += I[e]; - m -= o, r = tp(q[p], m) - } - return r - } - }, - Kk = function (Y) { - var z, O, l, H, E = gl(Y), - b = [], - s = E.points, - o = E.segments, - $ = -1; - for (O = 0, l = o ? o.length : s.length; l > O; O++) { - if (z = o ? o.get(O) : 1, 3 === z) H = 2; - else if (4 === z) H = 3; - else { - if (5 === z) continue; - H = 1 - } - $ += H, b.push(s.get($)) - } - return b - }, - Tn = function (w, j, x, v) { - function P(M) { - if (M >= 0 && 1 >= M) { - G = j(M); - var K = (w.x - G.x) * (w.x - G.x) + (w.y - G.y) * (w.y - G.y); - return F > K ? (F = K, _ = M, !0) : !1 - } - } - x = x || 100, v = v || 1e-5; - for (var F = 1 / 0, _ = 0, G = new Xi, M = 0; x > M; ++M) P(M / x); - for (var Z = 1 / (2 * x); Z > v;) P(_ - Z) || P(_ + Z) || (Z /= 2); - return _ - }; - Uh(u, { - _edgeProtectMethod: { - getStraightLinePoints: qm, - calculateLineLength: Pp, - calcSegmentIndexByDistance: eh, - calculatePointAlongLine: tp, - getPercentPosition: np, - getRealPointsFromDataUI: Kk - } - }); - var Mb = function (g, s) { - for (var J = g.vertices, y = 0; y < J.length; y++) { - var H = J[y], - k = H.y; - H.y = H.z, H.z = -k, s && (H.y += s) - } - }, - ig = function (G) { - for (var k, B, V, H, D, s, n = [], v = [], E = [], X = G.faces, A = 0, O = 0, J = 0, L = X.length; L > A; A++, O += 6, J += 9) { - var o = X[A]; - 1 === o.i ? (k || (k = [], B = [], V = []), yd(o, A, O, J, G, k, V, B)) : 2 === o.i ? (H || (H = [], D = [], s = []), yd(o, A, O, J, G, H, s, D)) : yd(o, A, O, J, G, n, E, v) - } - return { - vs: n, - uv: v, - ns: E, - top_vs: k, - top_uv: B, - top_ns: V, - bottom_vs: H, - bottom_uv: D, - bottom_ns: s - } - }, - yd = function (z, t, w, o, K, X, q, W) { - var c = K.vertices, - e = K.faceVertexUvs, - p = c[z.a], - H = c[z.b], - O = c[z.c]; - X.push(p.x, p.y, p.z, H.x, H.y, H.z, O.x, O.y, O.z); - var D, V, b, Y = z.vertexNormals; - 3 === Y.length ? (D = Y[0], V = Y[1], b = Y[2]) : D = V = b = z.normal, q.push(D.x, D.y, D.z, V.x, V.y, V.z, b.x, b.y, b.z); - var x = e[0][t][0], - M = e[0][t][1], - $ = e[0][t][2]; - W.push(x.x, x.y, M.x, M.y, $.x, $.y) - }, - _h = function () { - function Q(s, y) { - return s.dot(y) > 0 - } - - function q(w, P, v, h, g, Z, k) { - for (var y, O, M = [P, v, h], G = [g, Z, k], L = [], Y = M.length, N = !0; Y-- && N;) { - for (var J = M[Y], f = G.length, j = !1; f--;) - if (J.equals(G[f])) { - G.splice(f, 1), L.push(J), j = !0; - break - } - if (!j) { - if (y) { - N = !1; - break - } - y = J - } - } - return N && 2 === L.length && (O = G[0], W.subVectors(y, L[0]), I.subVectors(O, L[0]), B.subVectors(y, L[1]), W.x * B.y * I.z + B.x * I.y * W.z + I.x * W.y * B.z - I.x * B.y * W.z - I.y * B.z * W.x - I.z * B.x * W.y < 1e-6 && (R.subVectors(O, L[1]), F.subVectors(L[1], L[0]), Q(F, W) && Q(F, I) && (F.negate(), Q(F, B) && Q(F, R)))) ? (w.push(L[1].x, L[1].y, L[1].z), w.push(y.x, y.y, y.z), w.push(y.x, y.y, y.z), w.push(L[0].x, L[0].y, L[0].z), w.push(L[0].x, L[0].y, L[0].z), w.push(O.x, O.y, O.z), w.push(O.x, O.y, O.z), w.push(L[1].x, L[1].y, L[1].z), 2) : (w.push(P.x, P.y, P.z), w.push(v.x, v.y, v.z), w.push(v.x, v.y, v.z), w.push(h.x, h.y, h.z), w.push(h.x, h.y, h.z), w.push(P.x, P.y, P.z), 1) - } - - function J() { - this._vertexMap = {}, this._lineMap = {}, this._lineList = [] - } - - function f(N, f, T, b, F, o, d) { - var v = [T, F]; - N[0] === b && v.reverse(); - var u = [v[0]._key, v[1]._key].join("|"), - O = N._triangles[u]; - O || (N._triangles[u] = O = {}); - var t = [o._key, d._key].join("|"); - O[t] || (O[t] = [o, d]) - } - - function G(c, j, F) { - var L = c._planes[F._key]; - if (!L) - for (var m in c._planes) { - var r = c._planes[m]; - if (r._normal.angleTo(F) < .001) { - L = r; - break - } - } - return L ? (L._vertices.indexOf(j) < 0 && L._vertices.push(j), void 0) : (c._planes[F._key] = { - _normal: F, - _vertices: [j] - }, void 0) - } - - function k(n, h) { - return 0 === h ? "0|0|0" : 1 / 0 === Math.abs(h) ? [n.x, n.y, n.z].join("|") : [Math.round(X.angleTo(n) * h), Math.round(t.angleTo(n) * h), Math.round(_.angleTo(n) * h)].join("|") - } - - function d(Z, G) { - var g = Z._ctlineModel; - if (g || (Z._ctlineModel = g = []), g[0]) return g[0]; - var u; - u = ip(Z) ? Z : [Z]; - var p, R, n, I, l, z, E, d, K, M, A, N, Q, Y, H, $, s, W, e, D = ["", "top_", "bottom_"]; - g = []; - var C = []; - for ($p(u, G, C), p = 0, R = C.length; R > p; p++) - if (M = C[p]) - for (ko(M), n = 0, I = D.length; I > n; n++) - if (K = M[D[n] + "lvs"]) - for (s = g.length, W = K.length, g.length = s + W, e = 0; W > e; ++e, ++s) g[s] = K[e]; - else if (E = M[D[n] + "vs"]) { - d = M[D[n] + "is"], z = d ? d.length : E.length / 3; - for (var l = 0; z - 1 > l;) d ? (A = d[l], N = d[l + 1], Q = d[l + 2], Y = d[l + 3], H = d[l + 4], $ = d[l + 5]) : (A = l, N = l + 1, Q = l + 2, Y = l + 3, H = l + 4, $ = l + 5), S.fromArray(E, 3 * A), L.fromArray(E, 3 * N), O.fromArray(E, 3 * Q), v.fromArray(E, 3 * Y), P.fromArray(E, 3 * H), i.fromArray(E, 3 * $), l += 3 * q(g, S, L, O, v, P, i); - z > l && (d ? (A = d[l], N = d[l + 1], Q = d[l + 2]) : (A = l, N = l + 1, Q = l + 2), S.fromArray(E, 3 * A), L.fromArray(E, 3 * N), O.fromArray(E, 3 * Q), g.push(S.x, S.y, S.z), g.push(L.x, L.y, L.z), g.push(L.x, L.y, L.z), g.push(O.x, O.y, O.z), g.push(O.x, O.y, O.z), g.push(S.x, S.y, S.z)) - } - return Z._ctlineModel[0] = g, g - } - - function e(k, I, W) { - var E = k._ctlineModel; - E || (k._ctlineModel = E = []); - var e = E[1]; - if (e && e.epsilon === W) return e; - e = [], e.epsilon = W; - var S; - S = ip(k) ? k : [k]; - var H, p, f, y, G, F, P, O, r, D, b, o, V = ["", "top_", "bottom_"], - u = new J, - z = []; - for ($p(S, I, z), H = 0, p = z.length; p > H; H++) - if (r = z[H]) - for (ko(r), f = 0, y = V.length; y > f; f++) - if (P = r[V[f] + "vs"]) { - O = r[V[f] + "is"], F = O ? O.length : P.length / 3; - for (var G = 0, G = 0; F > G; G += 3) O ? (D = O[G], b = O[G + 1], o = O[G + 2]) : (D = G, b = G + 1, o = G + 2), u._addTriangle(P, Z, D, b, o, W) - } - return u._toLineVS(e), k._ctlineModel[1] = e, e - } - - function y(K, A, a) { - var T = K._ctlineModel; - T || (K._ctlineModel = T = []); - var S = T[1]; - if (S && S.epsilon === a) return S; - S = [], S.epsilon = a; - var t; - t = ip(K) ? K : [K]; - var B, x, z, G, $, L, V, o, C, h, e, F, m, v = ["", "top_", "bottom_"], - k = new J, - l = []; - for ($p(t, A, l), B = 0, x = l.length; x > B; B++) - if (h = l[B]) - for (ko(h), z = 0, G = v.length; G > z; z++) - if (V = h[v[z] + "vs"]) { - o = h[v[z] + "is"], C = h[v[z] + "ns"], L = o ? o.length : V.length / 3; - for (var $ = 0, $ = 0; L > $; $ += 3) o ? (e = o[$], F = o[$ + 1], m = o[$ + 2]) : (e = $, F = $ + 1, m = $ + 2), k._addTriangle(V, C, e, F, m, a) - } - return k._toLineVS(S), K._ctlineModel[2] = S, S - } - var S = new tl, - L = new tl, - O = new tl, - v = new tl, - P = new tl, - i = new tl, - W = new tl, - B = new tl, - I = new tl, - R = new tl, - F = new tl, - h = new tl; - J.prototype._findVertex = function (J, y) { - h.fromArray(J, 3 * y); - var G = [h.x, h.y, h.z].join(","), - c = this._vertexMap[G]; - if (!c) { - var K = h.clone(); - K._key = G, this._vertexMap[G] = c = K - } - return c - }, J.prototype._findLine = function (H, E) { - var g = [H, E]; - H._key > E._key && g.reverse(), g._key = [g[0]._key, g[1]._key].join("|"); - var v = this._lineMap[g._key]; - return v || (this._lineMap[g._key] = v = g, g._triangles = {}, g._planes = {}, this._lineList.push(g)), v - }; - var X = new tl(1, 0, 0), - t = new tl(0, 1, 0), - _ = new tl(0, 0, 1), - w = new tl, - a = new tl; - return J.prototype._addTriangle = function (Y, g, O, S, x, T) { - var E, s, r, i = this._findVertex(Y, O), - R = this._findVertex(Y, S), - c = this._findVertex(Y, x), - t = this._findLine(i, R), - l = this._findLine(R, c), - P = this._findLine(c, i); - g ? (E = (new tl).fromArray(g, 3 * O), E._key = k(E, T), s = (new tl).fromArray(g, 3 * S), s._key = k(s, T), r = (new tl).fromArray(g, 3 * x), r._key = k(r, T), f(t, i, E, R, s, c, r), f(l, R, s, c, r, i, E), f(P, c, r, i, E, R, s)) : (a.subVectors(c, R), w.subVectors(R, i), E = (new tl).crossVectors(w, a), E._key = k(E, T), G(t, c, E), G(l, i, E), G(P, R, E)) - }, J.prototype._toLineVS = function (z) { - for (var N = this._lineList, H = 0, x = N.length; x > H; ++H) { - var d = N[H], - A = !1; - for (var I in d._triangles) - if (1 == o.keys(d._triangles[I]).length) { - z.push(d[0].x, d[0].y, d[0].z, d[1].x, d[1].y, d[1].z), A = !0; - break - } - if (!A) - for (var Q in d._planes) - if (1 == d._planes[Q]._vertices.length) { - z.push(d[0].x, d[0].y, d[0].z, d[1].x, d[1].y, d[1].z), A = !0; - break - } - } - }, [d, e, y] - }(), - hl = function (A, R) { - var F = A._lineModel; - if (F) return F; - var o; - o = ip(A) ? A : [A]; - var N, v, q, n, m, a, E, h, u, P, L, f, y = ["", "top_", "bottom_"]; - F = []; - var D = []; - for ($p(A, R, D), N = 0, v = D.length; v > N; N++) - if (u = D[N]) - for (q = 0, n = y.length; n > q; q++) - if (E = u[y[q] + "vs"]) { - h = u[y[q] + "is"], a = h ? h.length : E.length / 3; - for (var m = 0; a > m; m += 3) h ? (P = h[m], L = h[m + 1], f = h[m + 2]) : (P = m, L = m + 1, f = m + 2), P *= 3, L *= 3, f *= 3, F.push(E[P], E[P + 1], E[P + 2], E[L], E[L + 1], E[L + 2], E[L], E[L + 1], E[L + 2], E[f], E[f + 1], E[f + 2], E[f], E[f + 1], E[f + 2], E[P], E[P + 1], E[P + 2]) - } - return A._lineModel = F, F - }, - wf = function ($, T, S, W, C, Y, G, b, N) { - S == F && (S = !0), W == F && (W = !0), G == F && (G = 1), b == F && (b = 0); - var u = new af; - return en(u, $, T, N), u = u.toShapes(), ig(new xb(u, { - top: S, - bottom: W, - curveSegments: C, - amount: G, - repeatUVLength: Y - }, -G / 2 + b)) - }, - jd = function (u, l) { - this.x = u || 0, this.y = l || 0 - }; - jd.prototype = { - constructor: jd, - add: function (C) { - return this.x += C.x, this.y += C.y, this - }, sub: function (t) { - return this.x -= t.x, this.y -= t.y, this - }, equals: function (m) { - return m.x === this.x && m.y === this.y - }, multiplyScalar: function (I) { - return this.x *= I, this.y *= I, this - }, distanceTo: function (B) { - return w(this.distanceToSquared(B)) - }, distanceToSquared: function (M) { - var w = this.x - M.x, - c = this.y - M.y; - return w * w + c * c - }, clone: function () { - return new jd(this.x, this.y) - } - }; - var pe = function (T, X, O) { - this.x = T || 0, this.y = X || 0, this.z = O || 0 - }; - pe.prototype = { - constructor: pe, - set: function (g, Y, X) { - return this.x = g, this.y = Y, this.z = X, this - }, setY: function (D) { - return this.y = D, this - }, copy: function (w) { - return this.x = w.x, this.y = w.y, this.z = w.z, this - }, add: function (E) { - return this.x += E.x, this.y += E.y, this.z += E.z, this - }, addVectors: function (K, U) { - return this.x = K.x + U.x, this.y = K.y + U.y, this.z = K.z + U.z, this - }, sub: function (k) { - return this.x -= k.x, this.y -= k.y, this.z -= k.z, this - }, subVectors: function (x, k) { - return this.x = x.x - k.x, this.y = x.y - k.y, this.z = x.z - k.z, this - }, multiplyScalar: function (c) { - return this.x *= c, this.y *= c, this.z *= c, this - }, applyMatrix4: function (L) { - var q = this.x, - j = this.y, - z = this.z, - K = L.elements; - return this.x = K[0] * q + K[4] * j + K[8] * z + K[12], this.y = K[1] * q + K[5] * j + K[9] * z + K[13], this.z = K[2] * q + K[6] * j + K[10] * z + K[14], this - }, divideScalar: function (n) { - if (0 !== n) { - var u = 1 / n; - this.x *= u, this.y *= u, this.z *= u - } else this.x = 0, this.y = 0, this.z = 0; - return this - }, dot: function (N) { - return this.x * N.x + this.y * N.y + this.z * N.z - }, length: function () { - return w(this.x * this.x + this.y * this.y + this.z * this.z) - }, normalize: function () { - return this.divideScalar(this.length()) - }, cross: function (L) { - var n = this.x, - H = this.y, - X = this.z; - return this.x = H * L.z - X * L.y, this.y = X * L.x - n * L.z, this.z = n * L.y - H * L.x, this - }, crossVectors: function (e, o) { - var L = e.x, - G = e.y, - Q = e.z, - i = o.x, - S = o.y, - y = o.z; - return this.x = G * y - Q * S, this.y = Q * i - L * y, this.z = L * S - G * i, this - }, distanceTo: function ($) { - return w(this.distanceToSquared($)) - }, distanceToSquared: function (E) { - var Z = this.x - E.x, - g = this.y - E.y, - t = this.z - E.z; - return Z * Z + g * g + t * t - }, clone: function () { - return new pe(this.x, this.y, this.z) - } - }; - var wl = function () { - this.elements = new Float32Array(16) - }; - wl.prototype = { - constructor: wl, - set: function ($, L, M, H, X, x, N, U, p, Q, B, D, v, o, u, k) { - var K = this.elements; - return K[0] = $, K[4] = L, K[8] = M, K[12] = H, K[1] = X, K[5] = x, K[9] = N, K[13] = U, K[2] = p, K[6] = Q, K[10] = B, K[14] = D, K[3] = v, K[7] = o, K[11] = u, K[15] = k, this - }, makeRotationAxis: function (r, I) { - var L = k(I), - w = n(I), - O = 1 - L, - t = r.x, - j = r.y, - m = r.z, - G = O * t, - S = O * j; - return this.set(G * t + L, G * j - w * m, G * m + w * j, 0, G * j + w * m, S * j + L, S * m - w * t, 0, G * m - w * j, S * m + w * t, O * m * m + L, 0, 0, 0, 0, 1), this - } - }; - var kf = function (o) { - this.repeatUVLength = o - }; - kf.prototype = { - generateTopUV: function (h, g, z, X, e, T, b) { - var R, E, i, l, u = h.vertices, - f = u[X].x, - V = u[X].y, - m = u[e].x, - L = u[e].y, - S = u[T].x, - w = u[T].y, - Q = this.repeatUVLength; - if (Q) R = 0, E = 0, i = Q, l = Q; - else { - this._bb || (this._bb = g.getBoundingBox()); - var y = this._bb; - R = y.minX, E = y.minY, i = y.maxX - R, l = y.maxY - E - } - return b ? [new jd((f - R) / i, (V - E) / l), new jd((m - R) / i, (L - E) / l), new jd((S - R) / i, (w - E) / l)] : [new jd((f - R) / i, 1 - (V - E) / l), new jd((m - R) / i, 1 - (L - E) / l), new jd((S - R) / i, 1 - (w - E) / l)] - }, generateBottomUV: function (e, x, U, g, Y, u) { - return this.generateTopUV(e, x, U, g, Y, u, !0) - }, generateSideWallUV: function (d, B, H, F, h, p, Q, R, c, l, e, E) { - if (!this._cl) { - for (var S, L, U = [], q = 0, n = H.length, O = 0; n > O; O++) { - S = H[O], L = H[(O + 1) % n]; - var V = S.x - L.x, - M = S.y - L.y, - o = w(V * V + M * M); - U.push(q), q += o - } - for (var O = 0; n > O; O++) U[O] /= q; - this._cl = U - } - var U = this._cl, - K = 1 - c / l, - A = 1 - (c + 1) / l, - k = U[e], - Z = U[E]; - return Z > k && (k += 1), [new jd(k, K), new jd(Z, K), new jd(Z, A), new jd(k, A)] - } - }; - var sf = function (K, q, l, p, L, $) { - this.a = K, this.b = q, this.c = l, this.i = $, this.normal = p instanceof pe ? p : new pe, this.vertexNormals = p instanceof Array ? p : [] - }; - sf.prototype = { - constructor: sf - }; - //修改时间限制 new(x[a.substr(3, 3) + Nc[A]])取的字符串"Date" - var lr = [-8, 14, -5, 9, 1, 12, 3, 6, -1], - Jq = function () { - if (Jq[to] != F) return Jq[to]; - for (var g = Xb[to], b = lr, a = Qp.prototype.getClassName(), O = '"', A = 0, m = "", S = !1, P = +new (x[a.substr(3, 3) + Nc[A]]), q = A; q < b.length; q++) { - var C = b.length - q; - m += q % 2 === A ? b[q] + C + "" : b[q] - C + "" - } - for (var q = A; 4 > q; q++) m += A; - if (m = m * m.length / m.length, P > m) { - if (g && g[A] && g[4 / Tq.length]) { - for (var R, k, G, s, V, u, J, p, n = g[0], w = g[1], X = "", B = 0, q = 0; q < w.length; q++) w[q] === O ? p ? (p = !1, 0 !== B % 2 && (R == F ? R = X : k == F ? k = X : G == F ? G = X : s == F ? s = X : V == F ? V = X : u == F ? u = X : J == F && (J = X)), B++, X = "") : p = !0 : p && (X += w[q]); - for (var f, E, h, j = "", l = 0, q = 0; q < n.length; q++) n[q] === O ? f ? (f = !1, 0 !== l % 2 && (E == F ? E = j : h == F && (h = j)), l++, j = "") : f = !0 : f && (j += n[q]); - var D = R + k + G + s + V + u, - c = !u || u === kg; - if (!c && u) - for (var Z, q = 0, M = u.length; M > q; q++) u[q] === go[4] ? Z === kg ? c = Jj : Z[0] === Fi[7] && kg && kg.indexOf(Z.substr(1)) >= 0 ? c = Ln : Z = F : (Z == F ? Z = u[q] : Z += u[q], q === M - 1 && (Z === kg ? c = Jj : Z[0] === Fi[7] && kg && kg.indexOf(Z.substr(1)) >= 0 && (c = Ln))); - (S = $i(D, J) && $i(E, h) && E === R && c && (!V || V > P)) && G.indexOf(bg[0]) >= 0 && (Jq[bg[0]] = 1), S && G.indexOf(1) >= 0 && (Jq[1] = 1), S && G.indexOf(3) >= 0 && (Jq[2] = 1), S && G.indexOf(4) >= 0 && (Jq[3] = 1), S && G.indexOf(7) >= 0 && (Jq[4] = 1) - } - } else S = !0, Jq[bg[0]] = Jq[1] = Jq[2] = Jq[3] = Jq[4] = 1; - return Jq[to] = S, S - }, - hi = function () { }, - ib = hi.prototype; - ib.getPointAt = function (n) { - var y = this.getUtoTmapping(n); - return this.getPoint(y) - }, ib.getPoints = function (X) { - X || (X = 5); - var I, z = []; - for (I = 0; X >= I; I++) z.push(this.getPoint(I / X)); - return z - }, ib.getSpacedPoints = function (K) { - K || (K = 5); - var L, Y = []; - for (L = 0; K >= L; L++) Y.push(this.getPointAt(L / K)); - return Y - }, ib.getLength = function () { - var a = this.getLengths(); - return a[a.length - 1] - }, ib.getLengths = function (r) { - if (r || (r = this.__arcLengthDivisions ? this.__arcLengthDivisions : 200), this.cacheArcLengths && this.cacheArcLengths.length == r + 1 && !this.needsUpdate) return this.cacheArcLengths; - this.needsUpdate = !1; - var G, Y, y = [], - e = this.getPoint(0), - O = 0; - for (y.push(0), Y = 1; r >= Y; Y++) G = this.getPoint(Y / r), O += G.distanceTo(e), y.push(O), e = G; - return this.cacheArcLengths = y, y - }, ib.getUtoTmapping = function (D, x) { - var p, J = this.getLengths(), - O = 0, - q = J.length; - p = x ? x : D * J[q - 1]; - for (var u, F = 0, i = q - 1; i >= F;) - if (O = T(F + (i - F) / 2), u = J[O] - p, 0 > u) F = O + 1; - else { - if (!(u > 0)) { - i = O; - break - } - i = O - 1 - } - if (O = i, J[O] == p) { - var l = O / (q - 1); - return l - } - var W = J[O], - U = J[O + 1], - Q = U - W, - c = (p - W) / Q, - l = (O + c) / (q - 1); - return l - }, ib.getTangent = function (V) { - var J = 1e-4, - U = V - J, - j = V + J; - 0 > U && (U = 0), j > 1 && (j = 1); - var g = this.getPoint(U), - z = this.getPoint(j), - R = z.clone().sub(g); - return R.normalize() - }, ib.getTangentAt = function (k) { - var A = this.getUtoTmapping(k); - return this.getTangent(A) - }, hi.create = function (g, T) { - return g.prototype = Ci(hi.prototype), g.prototype.getPoint = T, g - }; - var Pn = function () { - this.curves = [], this.autoClose = !1 - }, - Ig = Pn.prototype = Ci(ib); - Ig.add = function (e) { - this.curves.push(e) - }, Ig.closePath = function () { - var m = this.curves[0].getPoint(0), - N = this.curves[this.curves.length - 1].getPoint(1); - m.equals(N) || this.curves.push(new Aj(N, m)) - }, Ig.getPoint = function (_) { - for (var Y, c, X = _ * this.getLength(), A = this.getCurveLengths(), V = 0; V < A.length;) { - if (A[V] >= X) { - Y = A[V] - X, c = this.curves[V]; - var z = 1 - Y / c.getLength(); - return c.getPointAt(z) - } - V++ - } - return null - }, Ig.getLength = function () { - var S = this.getCurveLengths(); - return S[S.length - 1] - }, Ig.getCurveLengths = function () { - if (this.cacheLengths && this.cacheLengths.length == this.curves.length) return this.cacheLengths; - var $, i = [], - B = 0, - k = this.curves.length; - for ($ = 0; k > $; $++) B += this.curves[$].getLength(), i.push(B); - return this.cacheLengths = i, i - }, Ig.getTransformedPoints = function (b) { - return this.getPoints(b) - }, Ig.getBoundingBox = function () { - var C, L, h, F, t, A, v = this.getPoints(); - C = L = Number.NEGATIVE_INFINITY, F = t = Number.POSITIVE_INFINITY; - var B, s, D, V, X = v[0] instanceof pe; - for (V = X ? new pe : new jd, s = 0, D = v.length; D > s; s++) B = v[s], B.x > C && (C = B.x), B.x < F && (F = B.x), B.y > L && (L = B.y), B.y < t && (t = B.y), X && (B.z > h && (h = B.z), B.z < A && (A = B.z)), V.add(B); - var r = { - minX: F, - minY: t, - maxX: C, - maxY: L - }; - return X && (r.maxZ = h, r.minZ = A), r - }; - var $h = function (Y) { - Pn.call(this), this.actions = [], Y && this.fromPoints(Y) - }, - Rd = $h.prototype = Ci(Pn.prototype), - as = "moveTo", - js = "lineTo", - al = "quadraticCurveTo", - Xc = "bezierCurveTo", - Ir = "arc", - sr = "ellipse"; - Rd.fromPoints = function (Q) { - this.moveTo(Q[0].x, Q[0].y); - for (var y = 1, C = Q.length; C > y; y++) this.lineTo(Q[y].x, Q[y].y) - }, Rd.moveTo = function () { - var H = Array.prototype.slice.call(arguments); - this.actions.push({ - action: as, - args: H - }) - }, Rd.lineTo = function (A, v) { - var N = Array.prototype.slice.call(arguments), - u = this.actions[this.actions.length - 1].args, - W = u[u.length - 2], - d = u[u.length - 1], - S = new Aj(new jd(W, d), new jd(A, v)); - this.curves.push(S), this.actions.push({ - action: js, - args: N - }) - }, Rd.quadraticCurveTo = function (U, O, B, s) { - var W = Array.prototype.slice.call(arguments), - C = this.actions[this.actions.length - 1].args, - S = C[C.length - 2], - H = C[C.length - 1], - J = new tq(new jd(S, H), new jd(U, O), new jd(B, s)); - this.curves.push(J), this.actions.push({ - action: al, - args: W - }) - }, Rd.bezierCurveTo = function (Y, N, C, X, G, L) { - var W = Array.prototype.slice.call(arguments), - k = this.actions[this.actions.length - 1].args, - Z = k[k.length - 2], - o = k[k.length - 1], - c = new hc(new jd(Z, o), new jd(Y, N), new jd(C, X), new jd(G, L)); - this.curves.push(c), this.actions.push({ - action: Xc, - args: W - }) - }, Rd.arc = function (s, y, p, l, e, Z) { - var h = this.actions[this.actions.length - 1].args, - L = h[h.length - 2], - q = h[h.length - 1]; - this.absarc(s + L, y + q, p, l, e, Z) - }, Rd.absarc = function (X, q, E, T, d, u) { - this.absellipse(X, q, E, E, T, d, u) - }, Rd.ellipse = function (g, I, r, h, o, Y, n) { - var x = this.actions[this.actions.length - 1].args, - j = x[x.length - 2], - J = x[x.length - 1]; - this.absellipse(g + j, I + J, r, h, o, Y, n) - }, Rd.absellipse = function (H, J, Y, t, L, k, R) { - var o = Array.prototype.slice.call(arguments), - x = new Hk(H, J, Y, t, L, k, R); - this.curves.push(x); - var W = x.getPoint(1); - o.push(W.x), o.push(W.y), this.actions.push({ - action: sr, - args: o - }) - }, Rd.getSpacedPoints = function (Z) { - Z || (Z = 40); - for (var w = [], c = 0; Z > c; c++) w.push(this.getPoint(c / Z)); - return w - }, Rd.getPoints = function (b, B) { - b = b || 12; - var v, i, f, A, T, U, G, _, u, p, x, D, I, r, H, g, y, h, a = []; - for (v = 0, i = this.actions.length; i > v; v++) switch (f = this.actions[v], A = f.action, T = f.args, A) { - case as: - a.push(new jd(T[0], T[1])); - break; - case js: - a.push(new jd(T[0], T[1])); - break; - case al: - for (U = T[2], G = T[3], p = T[0], x = T[1], a.length > 0 ? (r = a[a.length - 1], D = r.x, I = r.y) : (r = this.actions[v - 1].args, D = r[r.length - 2], I = r[r.length - 1]), H = 1; b >= H; H++) g = H / b, y = uc.b2(g, D, p, U), h = uc.b2(g, I, x, G), a.push(new jd(y, h)); - break; - case Xc: - for (U = T[4], G = T[5], p = T[0], x = T[1], _ = T[2], u = T[3], a.length > 0 ? (r = a[a.length - 1], D = r.x, I = r.y) : (r = this.actions[v - 1].args, D = r[r.length - 2], I = r[r.length - 1]), H = 1; b >= H; H++) g = H / b, y = uc.b3(g, D, p, _, U), h = uc.b3(g, I, x, u, G), a.push(new jd(y, h)); - break; - case Ir: - var s, Y = T[0], - C = T[1], - m = T[2], - o = T[3], - R = T[4], - Z = !!T[5], - P = R - o, - M = 2 * b; - for (H = 1; M >= H; H++) g = H / M, Z || (g = 1 - g), s = o + g * P, y = Y + m * k(s), h = C + m * n(s), a.push(new jd(y, h)); - break; - case sr: - var s, Y = T[0], - C = T[1], - K = T[2], - J = T[3], - o = T[4], - R = T[5], - Z = !!T[6], - P = R - o, - M = 2 * b; - for (H = 1; M >= H; H++) g = H / M, Z || (g = 1 - g), s = o + g * P, y = Y + K * k(s), h = C + J * n(s), a.push(new jd(y, h)) - } - var $, V, O = z["shape3d.point.epsilon"], - j = !1; - for (i = a.length, v = 0, i = a.length; i > v; v++) $ = a[v], V = v === i - 1 ? a[0] : a[v + 1], $ && V && X($.x - V.x) < O && X($.y - V.y) < O && (j = !0, a[v] = null); - if (j) { - var S = []; - for (v = 0; i > v; v++) a[v] && S.push(a[v]); - a = S - } - return B && a.push(a[0]), a - }, Rd.toShapes = function (w, P) { - function U(W) { - var U, q, E, t, Z, A = [], - V = new $h; - for (U = 0, q = W.length; q > U; U++) E = W[U], Z = E.args, t = E.action, t == as && 0 != V.actions.length && (A.push(V), V = new $h), V[t].apply(V, Z); - return 0 != V.actions.length && A.push(V), A - } - - function u(f) { - for (var m = [], U = 0, o = f.length; o > U; U++) { - var w = f[U], - V = new af; - V.actions = w.actions, V.curves = w.curves, m.push(V) - } - return m - } - - function C(t, C) { - for (var o = 1e-10, k = C.length, l = !1, i = k - 1, P = 0; k > P; i = P++) { - var Y = C[i], - N = C[P], - Z = N.x - Y.x, - M = N.y - Y.y; - if (X(M) > o) { - if (0 > M && (Y = C[P], Z = -Z, N = C[i], M = -M), t.y < Y.y || t.y > N.y) continue; - if (t.y == Y.y) { - if (t.x == Y.x) return !0 - } else { - var d = M * (t.x - Y.x) - Z * (t.y - Y.y); - if (0 == d) return !0; - if (0 > d) continue; - l = !l - } - } else { - if (t.y != Y.y) continue; - if (N.x <= t.x && t.x <= Y.x || Y.x <= t.x && t.x <= N.x) return !0 - } - } - return l - } - var m = U(this.actions); - if (0 == m.length) return []; - if (P === !0) return u(m); - var c, N, L, H = []; - if (1 == m.length) return N = m[0], L = new af, L.actions = N.actions, L.curves = N.curves, H.push(L), H; - var A = !uc.isClockWise(m[0].getPoints()); - A = w ? !A : A; - var B, V = [], - F = [], - D = [], - _ = 0; - F[_] = Z, D[_] = []; - var o, T; - for (o = 0, T = m.length; T > o; o++) N = m[o], B = N.getPoints(), c = uc.isClockWise(B), c = w ? !c : c, c ? (!A && F[_] && _++, F[_] = { - s: new af, - p: B - }, F[_].s.actions = N.actions, F[_].s.curves = N.curves, A && _++, D[_] = []) : D[_].push({ - h: N, - p: B[0] - }); - if (!F[0]) return u(m); - if (F.length > 1) { - for (var Q = !1, J = [], G = 0, y = F.length; y > G; G++) V[G] = []; - for (var G = 0, y = F.length; y > G; G++) { - F[G]; - for (var W = D[G], x = 0; x < W.length; x++) { - for (var M = W[x], t = !0, O = 0; O < F.length; O++) C(M.p, F[O].p) && (G != O && J.push({ - froms: G, - tos: O, - hole: x - }), t ? (t = !1, V[O].push(M)) : Q = !0); - t && V[G].push(M) - } - } - J.length > 0 && (Q || (D = V)) - } - var f, S, h; - for (o = 0, T = F.length; T > o; o++) - for (L = F[o].s, H.push(L), f = D[o], S = 0, h = f.length; h > S; S++) L.holes.push(f[S].h); - return H - }; - var af = function () { - $h.apply(this, arguments), this.holes = [] - }, - Fg = af.prototype = Ci(Rd); - Fg.getPointsHoles = function (e) { - var A, q = this.holes.length, - x = []; - for (A = 0; q > A; A++) x[A] = this.holes[A].getTransformedPoints(e); - return x - }, Fg.extractAllPoints = function (M) { - return { - shape: this.getTransformedPoints(M), - holes: this.getPointsHoles(M) - } - }, Fg.extractPoints = function (Z) { - return this.extractAllPoints(Z) - }; - var uc = { - triangulateShape: function (r, E) { - function J(t, C, c) { - return t.x != C.x ? t.x < C.x ? t.x <= c.x && c.x <= C.x : C.x <= c.x && c.x <= t.x : t.y < C.y ? t.y <= c.y && c.y <= C.y : C.y <= c.y && c.y <= t.y - } - - function B(S, m, y, l, W) { - var Z = 1e-10, - M = m.x - S.x, - o = m.y - S.y, - R = l.x - y.x, - q = l.y - y.y, - i = S.x - y.x, - G = S.y - y.y, - p = o * R - M * q, - Y = o * i - M * G; - if (X(p) > Z) { - var U; - if (p > 0) { - if (0 > Y || Y > p) return []; - if (U = q * i - R * G, 0 > U || U > p) return [] - } else { - if (Y > 0 || p > Y) return []; - if (U = q * i - R * G, U > 0 || p > U) return [] - } if (0 == U) return !W || 0 != Y && Y != p ? [S] : []; - if (U == p) return !W || 0 != Y && Y != p ? [m] : []; - if (0 == Y) return [y]; - if (Y == p) return [l]; - var c = U / p; - return [{ - x: S.x + c * M, - y: S.y + c * o - }] - } - if (0 != Y || q * i != R * G) return []; - var r = 0 == M && 0 == o, - s = 0 == R && 0 == q; - if (r && s) return S.x != y.x || S.y != y.y ? [] : [S]; - if (r) return J(y, l, S) ? [S] : []; - if (s) return J(S, m, y) ? [y] : []; - var N, O, B, V, C, d, I, H; - return 0 != M ? (S.x < m.x ? (N = S, B = S.x, O = m, V = m.x) : (N = m, B = m.x, O = S, V = S.x), y.x < l.x ? (C = y, I = y.x, d = l, H = l.x) : (C = l, I = l.x, d = y, H = y.x)) : (S.y < m.y ? (N = S, B = S.y, O = m, V = m.y) : (N = m, B = m.y, O = S, V = S.y), y.y < l.y ? (C = y, I = y.y, d = l, H = l.y) : (C = l, I = l.y, d = y, H = y.y)), I >= B ? I > V ? [] : V == I ? W ? [] : [C] : H >= V ? [C, O] : [C, d] : B > H ? [] : B == H ? W ? [] : [N] : H >= V ? [N, O] : [N, d] - } - - function n(u, l, y, F) { - var t = 1e-10, - o = l.x - u.x, - E = l.y - u.y, - D = y.x - u.x, - G = y.y - u.y, - g = F.x - u.x, - s = F.y - u.y, - p = o * G - E * D, - K = o * s - E * g; - if (X(p) > t) { - var z = g * G - s * D; - return p > 0 ? K >= 0 && z >= 0 : K >= 0 || z >= 0 - } - return K > 0 - } - - function v(G, W) { - function q(X, w) { - var W = _.length - 1, - M = X - 1; - 0 > M && (M = W); - var v = X + 1; - v > W && (v = 0); - var S = n(_[X], _[M], _[v], Q[w]); - if (!S) return !1; - var O = Q.length - 1, - V = w - 1; - 0 > V && (V = O); - var y = w + 1; - return y > O && (y = 0), S = n(Q[w], Q[V], Q[y], _[X]), S ? !0 : !1 - } - - function N(v, c) { - var z, D, V; - for (z = 0; z < _.length; z++) - if (D = z + 1, D %= _.length, V = B(v, c, _[z], _[D], !0), V.length > 0) return !0; - return !1 - } - - function y(K, b) { - var z, Z, x, p, y; - for (z = 0; z < I.length; z++) - for (Z = W[I[z]], x = 0; x < Z.length; x++) - if (p = x + 1, p %= Z.length, y = B(K, b, Z[x], Z[p], !0), y.length > 0) return !0; - return !1 - } - for (var Q, x, s, r, m, U, v, T, Y, P, g, _ = G.concat(), I = [], J = [], $ = 0, c = W.length; c > $; $++) I.push($); - for (var z = 0, O = 2 * I.length; I.length > 0 && (O--, !(0 > O));) - for (s = z; s < _.length; s++) { - r = _[s], x = -1; - for (var $ = 0; $ < I.length; $++) - if (U = I[$], v = r.x + ":" + r.y + ":" + U, J[v] === Z) { - Q = W[U]; - for (var K = 0; K < Q.length; K++) - if (m = Q[K], q(s, K) && !N(r, m) && !y(r, m)) { - x = K, I.splice($, 1), T = _.slice(0, s + 1), Y = _.slice(s), P = Q.slice(x), g = Q.slice(0, x + 1), _ = T.concat(P).concat(g).concat(Y), z = s; - break - } - if (x >= 0) break; - J[v] = !0 - } - if (x >= 0) break - } - return _ - } - for (var j, T, x, s, F, c, Y = {}, $ = r.concat(), N = 0, b = E.length; b > N; N++) Array.prototype.push.apply($, E[N]); - for (j = 0, T = $.length; T > j; j++) F = $[j].x + ":" + $[j].y, Y[F] !== Z, Y[F] = j; - var w = v(r, E), - D = Pk.Triangulate(w, !1); - for (j = 0, T = D.length; T > j; j++) - for (s = D[j], x = 0; 3 > x; x++) F = s[x].x + ":" + s[x].y, c = Y[F], c !== Z && (s[x] = c); - return D.concat() - }, isClockWise: function (d) { - return Pk.Triangulate.area(d) < 0 - }, b2p0: function (E, K) { - var F = 1 - E; - return F * F * K - }, b2p1: function (y, t) { - return 2 * (1 - y) * y * t - }, b2p2: function (N, R) { - return N * N * R - }, b2: function (c, H, B, u) { - return this.b2p0(c, H) + this.b2p1(c, B) + this.b2p2(c, u) - }, b3p0: function (y, C) { - var n = 1 - y; - return n * n * n * C - }, b3p1: function (y, G) { - var F = 1 - y; - return 3 * F * F * y * G - }, b3p2: function (M, T) { - var G = 1 - M; - return 3 * G * M * M * T - }, b3p3: function (t, C) { - return t * t * t * C - }, b3: function (b, K, k, c, F) { - return this.b3p0(b, K) + this.b3p1(b, k) + this.b3p2(b, c) + this.b3p3(b, F) - } - }, - Pk = { - faces: {}, - face: "", - weight: "normal", - style: "normal", - size: 150, - divisions: 10, - getDefaultFont: function () { - var L = o.keys(this.faces); - return L.length ? L[0] : null - }, getFace: function () { - try { - return this.faces[this.face][this.weight][this.style] - } catch (s) { - throw "The font " + this.face + " with " + this.weight + " weight and " + this.style + " style is missing." - } - }, loadFace: function (e) { - var v = e.familyName.toLowerCase(), - i = this; - return i.faces[v] = i.faces[v] || {}, i.faces[v][e.cssFontWeight] = i.faces[v][e.cssFontWeight] || {}, i.faces[v][e.cssFontWeight][e.cssFontStyle] = e, e - }, drawText: function (v) { - var R, p = this.getFace(), - n = this.size / p.resolution, - N = 0, - U = String(v).split(""), - x = U.length, - E = []; - for (R = 0; x > R; R++) { - var w = new $h, - G = this.extractGlyphPoints(U[R], p, n, N, w); - G && (N += G.offset * this.spacing, E.push(G.path)) - } - var M = N / 2; - return { - paths: E, - offset: M - } - }, extractGlyphPoints: function (o, W, B, d, $) { - var T, Y, K, R, k, U, Q, C, V, j, c, g, Z, f, D, N, n, b, O, h = [], - u = W.glyphs[o] || W.glyphs["?"]; - if (u) { - if (u.o) - for (R = u._cachedOutline || (u._cachedOutline = u.o.split(" ")), U = R.length, Q = B, C = B, T = 0; U > T;) switch (k = R[T++]) { - case "m": - V = R[T++] * Q + d, j = R[T++] * C, $.moveTo(V, j); - break; - case "l": - V = R[T++] * Q + d, j = R[T++] * C, $.lineTo(V, j); - break; - case "q": - if (c = R[T++] * Q + d, g = R[T++] * C, D = R[T++] * Q + d, N = R[T++] * C, $.quadraticCurveTo(D, N, c, g), O = h[h.length - 1]) - for (Z = O.x, f = O.y, Y = 1, K = this.divisions; K >= Y; Y++) { - var J = Y / K; - uc.b2(J, Z, D, c), uc.b2(J, f, N, g) - } - break; - case "b": - if (c = R[T++] * Q + d, g = R[T++] * C, D = R[T++] * Q + d, N = R[T++] * C, n = R[T++] * Q + d, b = R[T++] * C, $.bezierCurveTo(D, N, n, b, c, g), O = h[h.length - 1]) - for (Z = O.x, f = O.y, Y = 1, K = this.divisions; K >= Y; Y++) { - var J = Y / K; - uc.b3(J, Z, D, n, c), uc.b3(J, f, N, b, g) - } - } - return { - offset: u.ha * B, - path: $ - } - } - } - }; - Pk.generateShapes = function (R, Y) { - Y = Y || {}; - var H = Y.font; - if (H === Z && (H = Pk.getDefaultFont(), !H)) return console.log("There's no valid font face, use ht.Default.loadFontFace to load font first."), []; - var r = Y.size !== Z ? Y.size : 1, - l = Y.curveSegments !== Z ? Y.curveSegments : 4, - y = Y.spacing !== Z ? Y.spacing : 1, - m = Y.weight !== Z ? Y.weight : "normal", - J = Y.style !== Z ? Y.style : "normal"; - Pk.size = r, Pk.divisions = l, Pk.face = H, Pk.weight = m, Pk.style = J, Pk.spacing = y; - for (var X = Pk.drawText(R), k = X.paths, Q = [], w = 0, v = k.length; v > w; w++) Array.prototype.push.apply(Q, k[w].toShapes()); - return Q - }, - function (S) { - var d = 1e-10, - j = function (O, r) { - var h = O.length; - if (3 > h) return null; - var X, j, e, s = [], - c = [], - K = []; - if (W(O) > 0) - for (j = 0; h > j; j++) c[j] = j; - else - for (j = 0; h > j; j++) c[j] = h - 1 - j; - var S = h, - n = 2 * S; - for (j = S - 1; S > 2;) { - if (n-- <= 0) return r ? K : s; - if (X = j, X >= S && (X = 0), j = X + 1, j >= S && (j = 0), e = j + 1, e >= S && (e = 0), o(O, X, j, e, S, c)) { - var Y, l, U, x, m; - for (Y = c[X], l = c[j], U = c[e], s.push([O[Y], O[l], O[U]]), K.push([c[X], c[j], c[e]]), x = j, m = j + 1; S > m; x++, m++) c[x] = c[m]; - S--, n = 2 * S - } - } - return r ? K : s - }, - W = function (C) { - for (var m = C.length, F = 0, B = m - 1, E = 0; m > E; B = E++) F += C[B].x * C[E].y - C[E].x * C[B].y; - return .5 * F - }, - o = function (I, s, L, D, t, J) { - var A, Q, c, U, Y, $, E, b, x; - if (Q = I[J[s]].x, c = I[J[s]].y, U = I[J[L]].x, Y = I[J[L]].y, $ = I[J[D]].x, E = I[J[D]].y, d > (U - Q) * (E - c) - (Y - c) * ($ - Q)) return !1; - var e, o, g, P, W, H, m, M, R, f, q, h, S, y, j; - for (e = $ - U, o = E - Y, g = Q - $, P = c - E, W = U - Q, H = Y - c, A = 0; t > A; A++) - if (b = I[J[A]].x, x = I[J[A]].y, !(b === Q && x === c || b === U && x === Y || b === $ && x === E) && (m = b - Q, M = x - c, R = b - U, f = x - Y, q = b - $, h = x - E, j = e * f - o * R, S = W * M - H * m, y = g * h - P * q, j >= -d && y >= -d && S >= -d)) return !1; - return !0 - }; - return S.Triangulate = j, S.Triangulate.area = W, S - }(Pk), x._typeface_js = { - faces: Pk.faces, - loadFace: Pk.loadFace - }; - var wr = function () { - this.vertices = [], this.faces = [], this.faceVertexUvs = [[]] - }, - vo = wr.prototype = { - constructor: wr, - computeFaceNormals: function () { - for (var W = new pe, N = new pe, v = 0, O = this.faces.length; O > v; v++) { - var i = this.faces[v], - s = this.vertices[i.a], - B = this.vertices[i.b], - M = this.vertices[i.c]; - W.subVectors(M, B), N.subVectors(s, B), W.cross(N), W.normalize(), i.normal.copy(W) - } - }, computeVertexNormals: function (z) { - var Y, j, N, M, y, k; - for (k = new Array(this.vertices.length), Y = 0, j = this.vertices.length; j > Y; Y++) k[Y] = new pe; - if (z) { - var I, p, G, D = new pe, - f = new pe; - for (N = 0, M = this.faces.length; M > N; N++) y = this.faces[N], I = this.vertices[y.a], p = this.vertices[y.b], G = this.vertices[y.c], D.subVectors(G, p), f.subVectors(I, p), D.cross(f), k[y.a].add(D), k[y.b].add(D), k[y.c].add(D) - } else - for (N = 0, M = this.faces.length; M > N; N++) y = this.faces[N], k[y.a].add(y.normal), k[y.b].add(y.normal), k[y.c].add(y.normal); - for (Y = 0, j = this.vertices.length; j > Y; Y++) k[Y].normalize(); - for (N = 0, M = this.faces.length; M > N; N++) y = this.faces[N], y.vertexNormals[0] = k[y.a].clone(), y.vertexNormals[1] = k[y.b].clone(), y.vertexNormals[2] = k[y.c].clone() - }, mergeVertices: function () { - var i, s, O, n, J, h, D, u, N = {}, - w = [], - B = [], - F = 4, - j = P(10, F); - for (O = 0, n = this.vertices.length; n > O; O++) i = this.vertices[O], s = A(i.x * j) + "_" + A(i.y * j) + "_" + A(i.z * j), N[s] === Z ? (N[s] = O, w.push(this.vertices[O]), B[O] = w.length - 1) : B[O] = B[N[s]]; - var R = []; - for (O = 0, n = this.faces.length; n > O; O++) { - J = this.faces[O], J.a = B[J.a], J.b = B[J.b], J.c = B[J.c], h = [J.a, J.b, J.c]; - for (var r = 0; 3 > r; r++) - if (h[r] == h[(r + 1) % 3]) { - R.push(O); - break - } - } - for (O = R.length - 1; O >= 0; O--) { - var q = R[O]; - for (this.faces.splice(q, 1), D = 0, u = this.faceVertexUvs.length; u > D; D++) this.faceVertexUvs[D].splice(q, 1) - } - var t = this.vertices.length - w.length; - return this.vertices = w, t - } - }, - Hk = function (n, y, $, E, C, T, Z) { - this.aX = n, this.aY = y, this.xRadius = $, this.yRadius = E, this.aStartAngle = C, this.aEndAngle = T, this.aClockwise = Z - }; - Hk.prototype = Ci(ib), Hk.prototype.getPoint = function (w) { - var o, E = this.aEndAngle - this.aStartAngle; - 0 > E && (E += $), E > $ && (E -= $), o = this.aClockwise === !0 ? this.aEndAngle + (1 - w) * ($ - E) : this.aStartAngle + w * E; - var M = this.aX + this.xRadius * k(o), - K = this.aY + this.yRadius * n(o); - return new jd(M, K) - }; - var Aj = function (C, Q) { - this.v1 = C, this.v2 = Q - }, - Bi = Aj.prototype = Ci(ib); - Bi.getPoint = function (J) { - var f = this.v2.clone().sub(this.v1); - return f.multiplyScalar(J).add(this.v1), f - }, Bi.getPointAt = function (h) { - return this.getPoint(h) - }, Bi.getTangent = function () { - var i = this.v2.clone().sub(this.v1); - return i.normalize() - }; - var tq = function (J, b, w) { - this.v0 = J, this.v1 = b, this.v2 = w - }; - tq.prototype = Ci(ib), tq.prototype.getPoint = function (G) { - var r, Y; - return r = uc.b2(G, this.v0.x, this.v1.x, this.v2.x), Y = uc.b2(G, this.v0.y, this.v1.y, this.v2.y), new jd(r, Y) - }; - var hc = function (j, d, K, F) { - this.v0 = j, this.v1 = d, this.v2 = K, this.v3 = F - }; - hc.prototype = Ci(ib), hc.prototype.getPoint = function (o) { - var $, Y; - return $ = uc.b3(o, this.v0.x, this.v1.x, this.v2.x, this.v3.x), Y = uc.b3(o, this.v0.y, this.v1.y, this.v2.y, this.v3.y), new jd($, Y) - }, hi.create(function (e, E) { - this.v1 = e, this.v2 = E - }, function (C) { - var a = new pe; - return a.subVectors(this.v2, this.v1), a.multiplyScalar(C), a.add(this.v1), a - }); - var Cb = hi.create(function (P, N, H) { - this.v0 = P, this.v1 = N, this.v2 = H - }, function (d) { - var g, f, x; - return g = uc.b2(d, this.v0.x, this.v1.x, this.v2.x), f = uc.b2(d, this.v0.y, this.v1.y, this.v2.y), x = uc.b2(d, this.v0.z, this.v1.z, this.v2.z), new pe(g, f, x) - }), - th = hi.create(function (Y, R, d, B) { - this.v0 = Y, this.v1 = R, this.v2 = d, this.v3 = B - }, function (Q) { - var O, P, d; - return O = uc.b3(Q, this.v0.x, this.v1.x, this.v2.x, this.v3.x), P = uc.b3(Q, this.v0.y, this.v1.y, this.v2.y, this.v3.y), d = uc.b3(Q, this.v0.z, this.v1.z, this.v2.z, this.v3.z), new pe(O, P, d) - }), - rc = function (W, O, H, I, f, R, E, e) { - wr.call(this), I = I !== Z ? I : .5, f = f !== Z ? f : .5, e = e !== Z ? e : 1, W = W || 8, R = R || 0, E = E || $; - var g, i, K = 1, - L = e / 2, - X = [], - u = [], - c = this.vertices, - j = this.faces, - M = this.faceVertexUvs; - for (i = 0; K >= i; i++) { - var F = [], - A = [], - h = i / K, - G = h * (f - I) + I; - for (g = 0; W >= g; g++) { - var v = g / W, - z = new pe, - B = -(v * E + R); - z.z = G * n(B), z.y = -h * e + L, z.x = G * k(B), c.push(z), F.push(c.length - 1), A.push(new jd(v, h)) - } - X.push(F), u.push(A) - } - var S, U, T = (f - I) / e; - for (g = 0; W > g; g++) - for (0 !== I ? (S = c[X[0][g]].clone(), U = c[X[0][g + 1]].clone()) : (S = c[X[1][g]].clone(), U = c[X[1][g + 1]].clone()), S.setY(w(S.x * S.x + S.z * S.z) * T).normalize(), U.setY(w(U.x * U.x + U.z * U.z) * T).normalize(), i = 0; K > i; i++) { - var C = X[i][g], - q = X[i + 1][g], - d = X[i + 1][g + 1], - b = X[i][g + 1], - o = S.clone(), - x = S.clone(), - r = U.clone(), - D = U.clone(), - V = u[i][g].clone(), - t = u[i + 1][g].clone(), - N = u[i + 1][g + 1].clone(), - m = u[i][g + 1].clone(); - j.push(new sf(C, q, b, [o, x, D])), M[0].push([V, t, m]), j.push(new sf(q, d, b, [x.clone(), r, D.clone()])), M[0].push([t.clone(), N, m.clone()]) - } - if (O && I > 0) - for (this.vertices.push(new pe(0, L, 0)), g = 0; W > g; g++) { - var C = X[0][g], - q = X[0][g + 1], - d = this.vertices.length - 1, - o = new pe(0, 1, 0), - x = new pe(0, 1, 0), - r = new pe(0, 1, 0), - V = u[0][g].clone(), - t = u[0][g + 1].clone(), - N = new jd(t.x, 0); - j.push(new sf(C, q, d, [o, x, r], null, 1)); - var p = g / W * $, - s = k(p), - _ = n(p), - a = (g + 1) / W * $, - J = k(a), - Q = n(a); - M[0].push([new jd(.5 + .5 * s, .5 + .5 * _), new jd(.5 + .5 * J, .5 + .5 * Q), new jd(.5, .5)]) - } - if (H && f > 0) - for (this.vertices.push(new pe(0, -L, 0)), g = 0; W > g; g++) { - var C = X[i][g + 1], - q = X[i][g], - d = c.length - 1, - o = new pe(0, -1, 0), - x = new pe(0, -1, 0), - r = new pe(0, -1, 0), - V = u[i][g + 1].clone(), - t = u[i][g].clone(); - j.push(new sf(C, q, d, [o, x, r], null, 2)); - var p = g / W * $, - s = k(p), - _ = n(p), - a = (g + 1) / W * $, - J = k(a), - Q = n(a); - M[0].push([new jd(.5 + .5 * J, .5 - .5 * Q), new jd(.5 + .5 * s, .5 - .5 * _), new jd(.5, .5)]) - } - }; - rc.prototype = Ci(vo); - var To = function (p, C, l, e, R, x, w) { - wr.call(this), w = w || .5, p = p || 16, C = C || 16, l = (l !== Z ? l : 0) - W, e = e !== Z ? e : $, R = R !== Z ? R : 0, x = x !== Z ? x : W; - var F, A, u = [], - y = [], - Q = this.vertices, - b = this.faces, - o = this.faceVertexUvs; - for (A = 0; C >= A; A++) { - var f = [], - q = []; - for (F = 0; p >= F; F++) { - var S = F / p, - G = A / C, - d = new pe; - d.x = -w * k(l + S * e) * n(R + G * x), d.y = w * k(R + G * x), d.z = w * n(l + S * e) * n(R + G * x), Q.push(d), f.push(Q.length - 1), q.push(new jd(S, G)) - } - u.push(f), y.push(q) - } - for (A = 0; C > A; A++) - for (F = 0; p > F; F++) { - var O = u[A][F + 1], - g = u[A][F], - N = u[A + 1][F], - M = u[A + 1][F + 1], - T = Q[O].clone().normalize(), - i = Q[g].clone().normalize(), - v = Q[N].clone().normalize(), - P = Q[M].clone().normalize(), - m = y[A][F + 1].clone(), - J = y[A][F].clone(), - H = y[A + 1][F].clone(), - I = y[A + 1][F + 1].clone(); - X(Q[O].y) === w ? (m.x = (m.x + J.x) / 2, b.push(new sf(O, N, M, [T, v, P])), o[0].push([m, H, I])) : X(Q[N].y) === w ? (H.x = (H.x + I.x) / 2, b.push(new sf(O, g, N, [T, i, v])), o[0].push([m, J, H])) : (b.push(new sf(O, g, M, [T, i, P])), o[0].push([m, J, I]), b.push(new sf(g, N, M, [i.clone(), v, P.clone()])), o[0].push([J.clone(), H, I.clone()])) - } - }; - To.prototype = Ci(vo); - var Kg = function (a, l, u, B, x, R) { - wr.call(this), a = a || .33, l = l || .17, B = B || 8, u = u || 6, x = x || 0, R = R || $; - for (var P = new pe, g = [], o = [], D = 0; B >= D; D++) - for (var J = D / B * $ + W, q = 0; u >= q; q++) { - var s = q / u * R + x; - P.x = a * k(s), P.z = -a * n(s); - var t = new pe, - E = a + l * k(J); - t.x = E * k(s), t.z = -E * n(s), t.y = l * n(J), this.vertices.push(t), g.push(new jd(q / u, 1 - D / B)), o.push(t.clone().sub(P).normalize()) - } - for (var D = 1; B >= D; D++) - for (var q = 1; u >= q; q++) { - var r = (u + 1) * D + q - 1, - w = (u + 1) * (D - 1) + q - 1, - Z = (u + 1) * (D - 1) + q, - C = (u + 1) * D + q, - b = new sf(r, w, C, [o[r].clone(), o[w].clone(), o[C].clone()]); - this.faces.push(b), this.faceVertexUvs[0].push([g[r].clone(), g[w].clone(), g[C].clone()]), b = new sf(w, Z, C, [o[w].clone(), o[Z].clone(), o[C].clone()]), this.faces.push(b), this.faceVertexUvs[0].push([g[w].clone(), g[Z].clone(), g[C].clone()]) - } - this.computeFaceNormals() - }; - Kg.prototype = Ci(vo); - var xb = function (B, Y, q) { - return B ? (wr.call(this), B = B instanceof Array ? B : [B], this.addShapeList(B, Y), Y.convertYZ !== !1 && Mb(this, q), this.computeFaceNormals(), void 0) : (B = [], void 0) - }, - ys = xb.prototype = Ci(wr.prototype); - ys.addShapeList = function (O, t) { - for (var L = O.length, m = 0; L > m; m++) { - var n = O[m]; - this.addShape(n, t) - } - }, ys.addShape = function (H, j) { - function $() { - if (j.bottom) - for (var n = 0; f > n; n++) A = P[n], R(A[2], A[1], A[0], !0); - if (j.top) - for (n = 0; f > n; n++) A = P[n], R(A[0] + Q * o, A[1] + Q * o, A[2] + Q * o, !1) - } - - function _() { - var L = 0; - for (N(k, L), L += k.length, q = 0, E = X.length; E > q; q++) y = X[q], N(y, L), L += y.length - } - - function N(J, E) { - for (var k, D, A = J.length; --A >= 0;) { - k = A, D = A - 1, 0 > D && (D = J.length - 1); - var g = 0, - $ = o; - for (g = 0; $ > g; g++) { - var u = Q * g, - V = Q * (g + 1), - L = E + k + u, - l = E + D + u, - m = E + D + V, - n = E + k + V; - G(L, l, m, n, J, g, $, k, D) - } - } - } - - function i(H, Z, s) { - w.vertices.push(new pe(H, Z, s)) - } - - function R(f, V, S, r) { - f += D, V += D, S += D, w.faces.push(new sf(f, V, S, null, null, r ? 2 : 1)); - var u = r ? n.generateBottomUV(w, H, j, f, V, S) : n.generateTopUV(w, H, j, f, V, S); - w.faceVertexUvs[0].push(u) - } - - function G(q, U, R, v, B, C, b, g, Z) { - q += D, U += D, R += D, v += D, w.faces.push(new sf(q, U, v)), w.faces.push(new sf(U, R, v)); - var p = n.generateSideWallUV(w, H, B, j, q, U, R, v, C, b, g, Z); - w.faceVertexUvs[0].push([p[0], p[1], p[3]]), w.faceVertexUvs[0].push([p[1], p[2], p[3]]) - } - var B, g, a, p, F, T = j.amount, - c = j.curveSegments || Cq, - o = j.steps || 1, - M = j.extrudePath, - d = !1, - n = new kf(j.repeatUVLength); - M && (B = M.getSpacedPoints(o), d = !0, g = j.frames !== Z ? j.frames : new Ri.FrenetFrames(M, o, !1), a = new pe, p = new pe, F = new pe); - var y, q, E, w = this, - D = this.vertices.length, - e = H.extractPoints(c), - l = e.shape, - X = e.holes, - s = !uc.isClockWise(l); - if (s) { - for (l = l.reverse(), q = 0, E = X.length; E > q; q++) y = X[q], uc.isClockWise(y) && (X[q] = y.reverse()); - s = !1 - } - var P = uc.triangulateShape(l, X), - k = l; - for (q = 0, E = X.length; E > q; q++) y = X[q], l = l.concat(y); - for (var x, A, Q = l.length, f = P.length, m = 0; Q > m; m++) x = l[m], d ? (p.copy(g.normals[0]).multiplyScalar(x.x), a.copy(g.binormals[0]).multiplyScalar(x.y), F.copy(B[0]).add(p).add(a), i(F.x, F.y, F.z)) : i(x.x, x.y, 0); - var r; - for (r = 1; o >= r; r++) - for (m = 0; Q > m; m++) x = l[m], d ? (p.copy(g.normals[r]).multiplyScalar(x.x), a.copy(g.binormals[r]).multiplyScalar(x.y), F.copy(B[r]).add(p).add(a), i(F.x, F.y, F.z)) : i(x.x, x.y, T / o * r); - $(), _() - }; - var Ri = function (y, H, p, I, d) { - function J(E, l, A) { - return b.vertices.push(new pe(E, l, A)) - 1 - } - wr.call(this), H = H || 64, p = p || 1, I = I || 8, d = d || !1; - var B, W, G, o, S, f, F, A, c, v, R, l, O, w, t, E, K, j, u, m, Q = [], - b = this, - z = H + 1, - T = new pe, - q = new Ri.FrenetFrames(y, H, d), - M = q.tangents, - s = q.normals, - x = q.binormals; - for (this.tangents = M, this.normals = s, this.binormals = x, c = 0; z > c; c++) - for (Q[c] = [], o = c / (z - 1), A = y.getPointAt(o), B = M[c], W = s[c], G = x[c], v = 0; I > v; v++) S = v / I * $, f = -p * k(S), F = p * n(S), T.copy(A), T.x += f * W.x + F * G.x, T.y += f * W.y + F * G.y, T.z += f * W.z + F * G.z, Q[c][v] = J(T.x, T.y, T.z); - for (c = 0; H > c; c++) - for (v = 0; I > v; v++) R = d ? (c + 1) % H : c + 1, l = (v + 1) % I, O = Q[c][v], w = Q[R][v], t = Q[R][l], E = Q[c][l], K = new jd(c / H, v / I), j = new jd((c + 1) / H, v / I), u = new jd((c + 1) / H, (v + 1) / I), m = new jd(c / H, (v + 1) / I), this.faces.push(new sf(O, w, E)), this.faceVertexUvs[0].push([K, j, m]), this.faces.push(new sf(w, t, E)), this.faceVertexUvs[0].push([j.clone(), u, m.clone()]); - this.computeFaceNormals(), this.computeVertexNormals() - }; - Ri.prototype = Ci(vo), Ri.FrenetFrames = function (v, $, I) { - function Y() { - F[0] = new pe, O[0] = new pe, l = Number.MAX_VALUE, M = X(B[0].x), U = X(B[0].y), j = X(B[0].z), l >= M && (l = M, Z.set(1, 0, 0)), l >= U && (l = U, Z.set(0, 1, 0)), l >= j && Z.set(0, 0, 1), q.crossVectors(B[0], Z).normalize(), F[0].crossVectors(B[0], q), O[0].crossVectors(B[0], F[0]) - } - var C, l, M, U, j, r, J, Z = new pe, - B = [], - F = [], - O = [], - q = new pe, - h = new wl, - o = $ + 1, - Q = 1e-4; - for (this.tangents = B, this.normals = F, this.binormals = O, r = 0; o > r; r++) J = r / (o - 1), B[r] = v.getTangentAt(J), B[r].normalize(); - for (Y(), r = 1; o > r; r++) F[r] = F[r - 1].clone(), O[r] = O[r - 1].clone(), q.crossVectors(B[r - 1], B[r]), q.length() > Q && (q.normalize(), C = c(re(B[r - 1].dot(B[r]), -1, 1)), F[r].applyMatrix4(h.makeRotationAxis(q, C))), O[r].crossVectors(B[r], F[r]); - if (I) - for (C = c(re(F[0].dot(F[o - 1]), -1, 1)), C /= o - 1, B[0].dot(q.crossVectors(F[0], F[o - 1])) > 0 && (C = -C), r = 1; o > r; r++) F[r].applyMatrix4(h.makeRotationAxis(B[r], C * r)), O[r].crossVectors(B[r], F[r]) - }; - var Zd = function (r, U, g, P) { - wr.call(this), U = U || 18, g = g || 0, P = P == F ? $ : P; - for (var d = 1 / (r.length - 1), u = 1 / U, x = 0, I = U; I >= x; x++) - for (var C = g + x * u * P, b = k(C), E = n(C), w = 0, W = r.length; W > w; w++) { - var N = r[w], - i = new pe; - i.x = b * N.x - E * N.y, i.y = E * N.x + b * N.y, i.z = N.z, this.vertices.push(i) - } - for (var l = r.length, x = 0, I = U; I > x; x++) - for (var w = 0, W = r.length - 1; W > w; w++) { - var e = w + l * x, - A = e, - c = e + l, - b = e + 1 + l, - h = e + 1, - B = x * u, - q = w * d, - o = B + u, - X = q + d; - this.faces.push(new sf(A, h, c)), this.faceVertexUvs[0].push([new jd(B, q), new jd(B, X), new jd(o, q)]), this.faces.push(new sf(c, h, b)), this.faceVertexUvs[0].push([new jd(o, q), new jd(B, X), new jd(o, X)]) - } - this.mergeVertices(), Mb(this), this.computeFaceNormals(), this.computeVertexNormals() - }; - Zd.prototype = Ci(vo); - var qf = function (Q, W) { - W = W || {}; - var P = Pk.generateShapes(Q, W); - W.amount = W.amount !== Z ? W.amount : .5, W.convertYZ = !1, W.fill !== !1 && (W.bottom = !0, W.top = !0), xb.call(this, P, W) - }; - qf.prototype = Ci(ys); - var Dp = O.Node = function () { - fi(Dp, this) - }, - Qn = { - X: uh, - Y: ah, - Z: wo - }, - Er = { - X: 0, - Y: 1, - Z: 2 - }, - il = { - xyz: "XYZ", - xzy: "XZY", - yxz: "YXZ", - yzx: "YZX", - zxy: "ZXY", - zyx: "ZYX" - }, - Vn = "xzy", - Cl = function (F, v, $) { - if (v) { - var Z = v[0], - L = v[1], - R = v[2]; - "xzy" === $ ? (ah(F, L), wo(F, R), uh(F, Z)) : "xyz" === $ ? (wo(F, R), ah(F, L), uh(F, Z)) : "yxz" === $ ? (wo(F, R), uh(F, Z), ah(F, L)) : "yzx" === $ ? (uh(F, Z), wo(F, R), ah(F, L)) : "zxy" === $ ? (ah(F, L), uh(F, Z), wo(F, R)) : "zyx" === $ ? (uh(F, Z), ah(F, L), wo(F, R)) : (ah(F, L), wo(F, R), uh(F, Z)) - } - }; - ki("Node", Qp, { - ms_ac: ["rotationMode", "anchorElevation"], - ms_edge: !0, - _adjustChildrenToTop: !0, - _icon: "node_icon", - _image: "node_image", - _rotationMode: Vn, - _64O: 0, - _rotationX: 0, - _53O: 0, - _host: F, - _position: { - x: 0, - y: 0 - }, - _anchor: { - x: .5, - y: .5 - }, - _anchorElevation: .5, - _scale: { - x: 1, - y: 1 - }, - _scaleTall: 1, - _54O: 0, - getUIClass: function () { - return Af - }, _22Q: function () { - return gf - }, getX: function () { - return this.p().x - }, setX: function (u) { - this.p(u, this.p().y) - }, getY: function () { - return this.p().y - }, setY: function (o) { - this.p(this.p().x, o) - }, getAnchorX: function () { - return this.getAnchor().x - }, setAnchorX: function (w) { - this.setAnchor(w, this.getAnchor().y) - }, getAnchorY: function () { - return this.getAnchor().y - }, setAnchorY: function (H) { - this.setAnchor(this.getAnchor().x, H) - }, getScaleX: function () { - return this.getScale().x - }, setScaleX: function (E) { - this.setScale(E, this.getScale().y) - }, getScaleY: function () { - return this.getScale().y - }, setScaleY: function (S) { - this.setScale(this.getScale().x, S) - }, p: function () { - return 0 === arguments.length ? this.getPosition() : (this.setPosition.apply(this, arguments), this) - }, p3: function () { - return 0 === arguments.length ? this.getPosition3d() : (this.setPosition3d.apply(this, arguments), this) - }, s3: function () { - return 0 === arguments.length ? this.getSize3d() : (this.setSize3d.apply(this, arguments), this) - }, r3: function () { - return 0 === arguments.length ? this.getRotation3d() : (this.setRotation3d.apply(this, arguments), this) - }, setQuaternion: function (X) { - var a = (new gg).setFromQuaternion(X, gg.ReverseOrder(this.getRotationMode())); - return this.r3(a.x, a.y, a.z) - }, getQuaternion: function () { - return (new fs).setFromEuler(this.getEuler()) - }, getEuler: function () { - var W = this.r3(); - return (new gg).set(W[0], W[1], W[2], gg.ReverseOrder(this.getRotationMode())) - }, setEuler: function (U) { - return U = U.clone().reorder(gg.ReverseOrder(this.getRotationMode())), this.r3(U.x, U.y, U.z) - }, t3: function () { - return this.translate3d.apply(this, arguments), this - }, translate3dBy: function (u, H) { - Td(u, Jn(F, F, this.r3(), this.getRotationMode())), this.translate3d(u[0] * H, u[1] * H, u[2] * H) - }, translateFront: function (J) { - this.translate3dBy([0, 0, 1], J) - }, translateBack: function (c) { - this.translate3dBy([0, 0, -1], c) - }, translateLeft: function (s) { - this.translate3dBy([-1, 0, 0], s) - }, translateRight: function (g) { - this.translate3dBy([1, 0, 0], g) - }, translateTop: function (D) { - this.translate3dBy([0, 1, 0], D) - }, translateBottom: function (A) { - this.translate3dBy([0, -1, 0], A) - }, getPosition3d: function () { - return [this._position.x, this._54O, this._position.y] - }, setPosition3d: function (y, M, T) { - 1 === arguments.length && (M = y[1], T = y[2], y = y[0]), this.p(y, T), this.setElevation(M) - }, translate3d: function (n, H, E) { - 1 === arguments.length && (H = n[1], E = n[2], n = n[0]), this.translate(n, E), this.setElevation(this._54O + H) - }, getSize3d: function () { - return [this.getWidth(), this.getTall(), this.getHeight()] - }, setSize3d: function (O, B, M) { - 1 === arguments.length && (B = O[1], M = O[2], O = O[0]), this.setSize(O, M), this.setTall(B) - }, getRotation3d: function () { - return [this._rotationX, -this._64O, this._53O] - }, setRotation3d: function (e, F, D) { - 1 === arguments.length && (F = e[1], D = e[2], e = e[0]), this.setRotationX(e), this.setRotation(-F), this.setRotationZ(D) - }, setRotationY: function (x) { - this.setRotation(-x) - }, getRotationY: function () { - return -this._64O - }, lookAtDirection: function (t, m) { - m = m || wg; - var q = this, - v = En(t); - m === wg ? (q.r3([-a(t[1] / v), -D(t[2], t[0]) + N, 0]), q.setRotationMode("xzy")) : m === fm ? (q.r3(0, -D(t[2], t[0]), a(t[1] / v)), q.setRotationMode("zyx")) : m === nq ? (q.r3(0, -D(t[2], t[0]) + W, -a(t[1] / v)), q.setRotationMode("zyx")) : m === $c ? (q.r3([-a(t[1] / v) + N, -D(t[2], t[0]) + N, 0]), q.setRotationMode("xzy")) : m === Kd && (q.r3([-a(t[1] / v) - N, -D(t[2], t[0]) + N, 0]), q.setRotationMode("xzy")), m === Qq && (q.r3([-a(t[1] / v) + W, -D(t[2], t[0]) + N, W]), q.setRotationMode("zxy")) - }, lookAt: function (c, n) { - return this.lookAtDirection(fn(c, this.p3()), n) - }, lookAtX: function () { - var n = new tl, - i = new tl, - V = new tl, - W = new br, - R = new br, - r = new gg; - return function (B, C) { - var A = sj(this); - if (W.fromArray(A), V.copy(this.p3()), n.copy(B).sub(V), !(n.lengthSq() < 1e-6)) { - n.normalize(), C === wg ? i.set(0, 0, 1) : C === Qq ? i.set(0, 0, -1) : C === nq ? i.set(-1, 0, 0) : C === fm ? i.set(1, 0, 0) : C === $c ? i.set(0, 1, 0) : C === Kd && i.set(0, -1, 0), i.applyMatrix4(W).sub(V).normalize(); - var l = Math.acos(n.dot(i)); - if (l) { - var J = n.clone().cross(i); - J.lengthSq() < 1e-6 && (C === $c || C === Kd ? J.set(0, 0, 1).applyMatrix4(W).sub(V) : J.set(0, 1, 0).applyMatrix4(W).sub(V)), J.normalize(), r.set(this.r3(), this.getRotationMode(), !0), W.makeRotationFromEuler(r), R.makeRotationAxis(J, -l), r.setFromRotationMatrix(R.multiply(W)), this.r3([r.x, r.y, r.z]) - } - } - } - }(), - getHost: function () { - return this._host - }, setHost: function (h) { - var w = this; - if (w !== h && w._host !== h) { - var $ = w._host; - $ && $._removeAttach(w), w._host = h, w._host && w._host._addAttach(w), w.fp("host", $, h), w.onHostChanged($, h) - } - }, getAttaches: function () { - return this._69O - }, _addAttach: function (H) { - var L = this; - L._69O || (L._69O = new xr), L._69O.add(H), L.fp("attaches", F, H) - }, _removeAttach: function (M) { - var X = this; - X._69O.remove(M), X._69O.isEmpty() && delete X._69O, X.fp("attaches", M, F) - }, getImage: function () { - if (this._pendingCheckImageJSON) { - var F = u.getImage(this._image); - F && (this._pendingCheckImageJSON = !1, this.getParent() instanceof Ff && this.getParent().checkPendingUpdateInfo()) - } - return this._image - }, setImage: function (J) { - var O = this, - t = O._image, - x = O.getWidth(), - r = O.getHeight(); - O._image = J, O.fp("image", t, J) && (null != J && (xl(J) || dk(J) && /\.json$/i.test(J)) && (this._pendingCheckImageJSON = !0), O.fp(ul, x, O.getWidth()), O.fp(Hh, r, O.getHeight())) - }, getElevation: function () { - return this._54O - }, setElevation: function (A) { - var k = this; - if (!k._50O) { - k._50O = 1; - var Y = k._54O; - k._54O = A, k.fp(pd, Y, A), delete this._50O - } - }, getRotation: function () { - return this._64O - }, setRotation: function (T) { - var v = this; - if (!v._49O) { - v._49O = 1; - var N = v._64O; - v._64O = T, v.fp(ac, N, T), delete v._49O - } - }, getRotationX: function () { - return this._rotationX - }, setRotationX: function (Y) { - var E = this; - if (!E._51O) { - E._51O = 1; - var X = E._rotationX; - E._rotationX = Y, E.fp("rotationX", X, Y), delete E._51O - } - }, getRotationZ: function () { - return this._53O - }, setRotationZ: function (e) { - var H = this; - if (!H._52O) { - H._52O = 1; - var Z = H._53O; - H._53O = e, H.fp("rotationZ", Z, e), delete H._52O - } - }, getPosition: function () { - return this._position - }, setPosition: function (X, w) { - var D = this; - if (!D._50I) { - D._50I = 1; - var P; - if (P = 2 === arguments.length ? { - x: X, - y: w - } : X, P.x !== D._position.x || P.y !== D._position.y) { - var B = D._position; - D._position = P, D.fp(pr, B, P) - } - delete D._50I - } - }, translate: function (x, R) { - var o = this._position; - this.p(o.x + x, o.y + R) - }, getWidth: function () { - var q = this; - if (q._width >= 0) return q._width; - var C = q.getStyle("shape3d"); - if (C) { - var u = vf(C); - if (u && u.rawS3) return u.rawS3[0]; - if ("billboard" === C || "plane" === C) { - var y = ii(q.getStyle("shape3d.image")); - return y ? xc(y, q) : 20 - } - } - var y = ii(q._image); - return y ? xc(y, q) : 20 - }, setWidth: function (y) { - var G = this, - q = G._width; - G._width = y, G.fp(ul, q, y) - }, getHeight: function () { - var u = this; - if (u._height >= 0) return u._height; - var B = u.getStyle("shape3d"); - if (B) { - var Q = vf(B); - if (Q && Q.rawS3) return Q.rawS3[2]; - if ("plane" === B) { - var n = ii(u.getStyle("shape3d.image")); - return n ? oo(n, u) : 20 - } - if ("billboard" === B) return 2 - } - var n = ii(u._image); - return n ? oo(n, u) : 20 - }, setHeight: function (I) { - var A = this, - c = A._height; - A._height = I, A.fp(Hh, c, I) - }, getTall: function () { - var d = this; - if (d._tall >= 0) return d._tall; - var a = d.getStyle("shape3d"); - if (a) { - var $ = vf(a); - if ($ && $.rawS3) return $.rawS3[1]; - if ("billboard" === a) { - var J = ii(d.getStyle("shape3d.image")); - return J ? oo(J, d) : 20 - } - if ("plane" === a) return 2 - } - return 20 - }, setTall: function (l) { - var R = this, - O = R._tall; - R._tall = l, R.fp("tall", O, l) - }, setSize: function (H, r) { - var N = this; - 2 === arguments.length ? (N.setWidth(H), N.setHeight(r)) : (N.setWidth(H.width), N.setHeight(H.height)) - }, getSize: function () { - return { - width: this.getWidth(), - height: this.getHeight() - } - }, setRect: function (L, K, f, V, n) { - var E = this, - o = E.getAnchor(), - Z = E.getScale(); - arguments.length <= 2 && (n = K, K = L.y, f = L.width, V = L.height, L = L.x); - var k = n && Z.x < 0 ? 1 - o.x : o.x, - y = n && Z.y < 0 ? 1 - o.y : o.y; - E.p(L + f * k, K + V * y), n && (f /= Math.abs(Z.x), V /= Math.abs(Z.y)), E.setWidth(f), E.setHeight(V) - }, getMatrix: function () { - var g = this, - T = g._64O, - _ = g._position, - j = g.getScale(); - return new In(T, _.x, _.y, j.x, j.y) - }, getAnchorRect: function () { - var J = this, - W = J.getWidth(), - m = J.getHeight(), - z = J.getAnchor(); - return { - x: -W * z.x, - y: -m * z.y, - width: W, - height: m - } - }, toLocal: function (j) { - return this.getMatrix().tfi(j) - }, toGlobal: function (o) { - return this.getMatrix().tf(o) - }, getAttachPosition: function () { - var F = new In; - return function (y, T, V, e) { - V = V || 0, e = e || 0; - var i = this, - u = i.getAnchor(), - Z = i._64O, - s = i._position, - P = i.getScale(); - return F.setFromTransform(Z, s.x, s.y).tf({ - x: V + P.x * i.getWidth() * (y - u.x), - y: e + P.y * i.getHeight() * (T - u.y) - }) - } - }(), - isInRect: function (P) { - P = this.toLocal(P); - var u = this.getWidth(), - d = this.getHeight(); - return P.x += u * this.getAnchorX(), P.y += d * this.getAnchorY(), !(P.x < 0 || P.y < 0 || P.x > u || P.y > d) - }, getRect: function () { - var R = this, - E = R.getWidth(), - O = R.getHeight(), - e = R.getAnchor(), - z = { - x: -E * e.x, - y: -O * e.y, - width: E, - height: O - }, - y = R.getMatrix(); - return z = ms([y.tf(z.x, z.y), y.tf(z.x + z.width, z.y), y.tf(z.x + z.width, z.y + z.height), y.tf(z.x, z.y + z.height)]) - }, getAnchorElevation: function () { - return this._anchorElevation - }, getAnchor3d: function () { - var T = this, - X = T.getAnchor(), - R = T._anchorElevation; - return { - x: X.x, - y: R, - z: X.y - } - }, setAnchorElevation: function (B) { - var a = this, - t = a._anchorElevation; - return t !== B ? (a._anchorElevation = B, a.fp("anchorElevation", t, B), !0) : !1 - }, setAnchor3d: function (z, X, i, U) { - var K, d = this; - "number" == typeof z ? K = { - x: z, - y: X, - z: i - } : (K = z.length ? { - x: z[0], - y: z[1], - z: z[2] - } : z, U = X); - var a = d.getDataModel(); - a && a.beginTransaction(); - var t = d.getAnchor3d(), - $ = d.setAnchor(K.x, K.z); - if (d.setAnchorElevation(K.y) && ($ = !0), $ && U && !aj) { - d.getAnchor3d(); - var J = sj(d), - Y = Td([K.x - t.x, K.y - t.y, K.z - t.z], J); - d.p3(Y) - } - return a && a.endTransaction(), $ - }, getAnchor: function () { - var U = this; - if (U.hasOwnProperty("_anchor")) return U._anchor; - var q = ii(U._image); - return q && q.anchorX !== Z ? { - x: q.anchorX, - y: q.anchorY - } : U._anchor - }, setAnchor: function (s, E, f) { - var Y, D = this; - "number" == typeof s ? Y = { - x: s, - y: E - } : (Y = s.length ? { - x: s[0], - y: s[1] - } : s, f = E); - var P = D.getAnchor(); - if (P.x !== Y.x || P.y !== Y.y) { - var B = D.getDataModel(); - if (B && B.beginTransaction(), D._anchor = Y, D.fp("anchor", P, Y), f && !aj) { - var m = D.getPosition(), - I = D.getSize(), - N = D.getRotation(), - K = D.getScale(), - c = -I.width * (P.x - Y.x) * K.x, - d = -I.height * (P.y - Y.y) * K.y, - U = n(N), - l = k(N); - D.setPosition(m.x + l * c - U * d, m.y + U * c + l * d) - } - return B && B.endTransaction(), !0 - } - return !1 - }, getScale: function () { - return this._scale - }, setScale: function (p, D) { - var S, R = this; - S = 2 === arguments.length ? { - x: p, - y: D - } : p; - var l = R.getScale(); - (l.x !== S.x || l.y !== S.y) && (R._scale = S, R.fp("scale", l, S)) - }, getScaleTall: function () { - return this._scaleTall - }, getScale3d: function () { - var $ = this, - f = $._scaleTall, - m = $.getScale(); - return [m.x, f, m.y] - }, getFinalScale3d: function () { - var F = this, - G = F.s3(), - S = F._dynamicScale3d, - v = F.getScale3d(); - return G && (v[0] *= G[0], v[1] *= G[1], v[2] *= G[2]), S && (v[0] *= S[0], v[1] *= S[1], v[2] *= S[2]), v - }, getFinalRotation3d: function () { - var Z = this; - return Z._dynamicRotation || Z.r3() - }, setScaleTall: function (N) { - var j = this, - F = j._scaleTall; - F !== N && (j._scaleTall = N, j.fp("scaleTall", F, N)) - }, setScale3d: function (u, d, B) { - var o, Y = this; - o = "number" == typeof u ? { - x: u, - y: d, - z: B - } : u.length ? { - x: u[0], - y: u[1], - z: u[2] - } : u, Y.setScaleTall(o.y), Y.setScale(o.x, o.z) - }, getCorners: function (X, u) { - X == F && (X = 0), u == F && (u = X); - var p = this, - W = p.getAnchor(), - C = p.getWidth(), - Z = p.getHeight(), - y = -C * W.x - X, - L = -Z * W.y - u, - A = C + 2 * X, - z = Z + 2 * u, - q = p.getMatrix(); - return [q.tf(y, L), q.tf(y, L + z), q.tf(y + A, L + z), q.tf(y + A, L)] - }, getEditControlPoints: function (i, l, k) { - l == F && (l = 0), k == F && (k = l); - var q = this, - r = q.getAnchor(), - c = q.getWidth(), - S = q.getHeight(), - m = -c * r.x - l, - p = -S * r.y - k, - u = c + 2 * l, - R = S + 2 * k; - if (i) return [{ - x: m, - y: p - }, { - x: m, - y: 0 - }, { - x: m, - y: p + R - }, { - x: 0, - y: p + R - }, { - x: m + u, - y: p + R - }, { - x: m + u, - y: 0 - }, { - x: m + u, - y: p - }, { - x: 0, - y: p - }]; - var A = q.getMatrix(); - return [A.tf(m, p), A.tf(m, 0), A.tf(m, p + R), A.tf(0, p + R), A.tf(m + u, p + R), A.tf(m + u, 0), A.tf(m + u, p), A.tf(0, p)] - }, rotateAt: function (g, x, t) { - var i = this, - E = i._position, - a = i._64O, - M = new In(a, E.x, E.y).tf(g, x), - Q = w(g * g + x * x), - H = D(E.y - M.y, E.x - M.x) + t; - i.setRotation(a + t), i.p(M.x + Q * k(H), M.y + Q * n(H)) - }, onParentChanged: function () { - Dp.superClass.onParentChanged.apply(this, arguments), this._8I() - }, onPropertyChanged: function () { - var v = {}; - return "width|height|position|anchor|rotation|scale|s:layout.h|s:layout.v".split("|").forEach(function (B) { - v[B] = !0 - }), - function (e) { - var Y = this; - Dp.superClass.onPropertyChanged.call(Y, e), v[e.property] && !Y._layoutUpdating && Y.updateLayoutParameters(null, e.property), Y._69O && Y._69O.each(function (B) { - B.handleHostPropertyChange(e) - }), Y._49I && Y._49I.each(function (F) { - F.fp("agentChange", !0, !1) - }), "a:layout" === e.property.substring(0, 8) && this.updateAttach() - } - }(), - onHostChanged: function () { - this.updateAttach(), this.updateLayoutParameters() - }, handleHostPropertyChange: function (e) { - this.updateAttach(e) - }, onStyleChanged: function (i) { - Dp.superClass.onStyleChanged.apply(this, arguments), Zj[i] && this.updateAttach() - }, updateAttach: function (m) { - var H = this; - return aj ? (H.updateLayoutParameters(), void 0) : (H._51I || (H._51I = 1, H._71O(m), delete H._51I), void 0) - }, _71O: function (U) { - var r, V, w, c, H, G, x, L, m = this, - g = m._host, - E = U ? U.property : F, - W = U ? U.oldValue : F, - S = U ? U.newValue : F; - if (g instanceof Dp && (x = ii(g.getImage()), x && x.layoutAttach && (L = x.layoutAttach)), U && !Zf[E] && "a:layout" !== E.substring(0, 8) || !L || L(g, this)) - if (g instanceof O.Grid) { - if (E === pd) m.setElevation(m._54O + S - W); - else if (!U || ir[E]) { - if (r = m.s("attach.row.index"), V = m.s("attach.column.index"), w = g.getCellRect(r, V), !w) return; - c = m.s("attach.row.span"), H = m.s("attach.column.span"), (1 !== c || 1 !== H) && (w = ni(w, g.getCellRect(r + c - 1, V + H - 1))), ld(w, m, "attach.padding", 1), m.setRect(w) - } - } else if (g instanceof Fc && (G = m.s("attach.index")) >= 0 && (!U || zq[E])) { - var K = m.s("attach.thickness"), - i = g.getScale(), - j = Math.max(i.x, i.y); - K > 0 && m.setHeight(g.getThickness() * K * j); - var s = m.s("attach.offset"), - B = g.getPoints(), - f = B.size(); - if (f > G) { - var u = g.getPointsMatrix2d(), - J = B.get(G), - p = f === G + 1 ? B.get(0) : B.get(G + 1); - J = u.apply(J), p = u.apply(p); - var y = [p.x - J.x, p.y - J.y], - M = En(y); - if (M) { - m.s("attach.offset.relative") && (s *= M), m.s("attach.offset.opposite") && (s = M - s); - var Y = { - x: J.x + y[0] / M * s, - y: J.y + y[1] / M * s - }, - Q = m.s("attach.gap"); - Q && (m.s("attach.gap.relative") && (Q *= g.getThickness() * j), Y = pc(F, Y, p, Q)), m.p(Y), m.setRotation(D(y[1], y[0])) - } - } - } else U && (E === pr ? m.translate(S.x - W.x, S.y - W.y) : E === pd ? m.setElevation(m._54O + S - W) : Yr[E] ? m._11Q(g, E, S - W) : ("anchor" === E || "width" === E || "height" === E || "scale" === E) && m.layout(g)) - }, _11Q: function () { - var R = new O.Math.Euler, - o = O.Math.Euler.ReverseOrder, - p = new O.Math.Vector2, - w = new O.Math.Vector2; - return function (F, C, v) { - var Q = this, - W = F.p3(), - V = F.r3(), - H = Q.p3(), - E = Q.r3(); - if (C === ac && (C = "rotationY", v = -v), (C === ac || "rotationY" === C) && 0 === E[0] && 0 === E[2] && 0 === V[0] && 0 === V[2] && 0 === H[1] && 0 === W[1]) return Q.setRotation(-E[1] - v), p.set(H[0], H[2]).rotateAround(w.set(W[0], W[2]), -v), Q.p(p.x, p.y), void 0; - var q = il[F.getRotationMode()], - x = q[0], - n = q[1], - b = q[2], - Y = Qn[x], - K = Qn[n], - h = Qn[b], - X = kn(); - C === ac + x ? (h(X, V[Er[b]]), K(X, V[Er[n]]), Y(X, v), K(X, -V[Er[n]]), h(X, -V[Er[b]])) : C === ac + n ? (h(X, V[Er[b]]), K(X, v), h(X, -V[Er[b]])) : C === ac + b && h(X, v); - var P = fn(H, W); - Td(P, X), Q.p3(W[0] + P[0], W[1] + P[1], W[2] + P[2]); - var S = Q.getRotationMode(); - Cl(X, Q.r3(), S), R.setFromRotationMatrix(X, o(S)), Q.r3([R.x, R.y, R.z]) - } - }(), - isHostOn: function (X) { - var t = this; - if (t._host && X && X._69O) - for (var z = {}, D = t._host; D && D !== t && !z[D._id];) { - if (D === X) return !0; - z[D._id] = D, D = D._host - } - return !1 - }, isLoopedHostOn: function (k) { - return this.isHostOn(k) && k.isHostOn(this) - }, getScaledSize: function () { - var Y = this.getSize(), - W = this.getScale(); - return Y.width *= Math.abs(W.x), Y.height *= Math.abs(W.y), Y - }, layout: function (d) { - if (d = d || this.getHost()) { - var M = this, - A = M.s("layout.h") || "center", - $ = M.s("layout.v") || "center"; - if ("center" !== A || "center" !== $) { - var N = new O.Math.Vector2, - m = d.getPosition(), - f = d.getAnchor(), - T = d.getScaledSize(); - M.getPosition(); - var a, r, _, i, h, P = 1, - p = 1; - switch (M._layoutUpdating = !0, A) { - case "left": - N.setX(M._layoutHValue - f.x * T.width); - break; - case "right": - N.setX((1 - f.x) * T.width - M._layoutHValue); - break; - case "leftright": - a = T.width - M._layoutHValue[2], _ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_)), P += h * a / M._layoutHValue[3], p += i * a / M._layoutHValue[4], N.setX(M._layoutHValue[1] + (M._layoutHValue[5] - f.x) * T.width); - break; - case "center": - N.setX((.5 - f.x) * T.width - M._layoutHValue); - break; - case "scale": - _ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_)), N.setX((.5 - f.x) * T.width - M._layoutHValue[1] * T.width / M._layoutHValue[0]), r = T.width / M._layoutHValue[2] - 1, P += h * r, p += i * r - } - switch ($) { - case "top": - N.setY(M._layoutVValue - f.y * T.height); - break; - case "bottom": - N.setY((1 - f.y) * T.height - M._layoutVValue); - break; - case "topbottom": - _ || (_ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_))), a = T.height - M._layoutVValue[2], P += i * a / M._layoutVValue[3], p += h * a / M._layoutVValue[4], N.setY(M._layoutVValue[1] + (M._layoutVValue[5] - f.y) * T.height); - break; - case "center": - N.setY((.5 - f.y) * T.height - M._layoutVValue); - break; - case "scale": - _ || (_ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_))), N.setY((.5 - f.y) * T.height - M._layoutVValue[1] * T.height / M._layoutVValue[0]), r = T.height / M._layoutVValue[2] - 1, P += i * r, p += h * r - } - if ("leftright" === A || "scale" === A || "topbottom" === $ || "scale" === $) { - var j = this.getScale(), - H = Math.abs(j.x), - n = Math.abs(j.y); - "leftright" === A || "scale" === A ? M.setSize(M._layoutHValue[3] * P / H, M._layoutHValue[4] * p / n) : M.setSize(M._layoutVValue[3] * P / H, M._layoutVValue[4] * p / n) - } - N.rotateAround(null, d.getRotation()), this.setPosition(N.x + m.x, N.y + m.y), M._layoutUpdating = Z - } - } - }, updateLayoutParameters: function (q, B) { - if (q = q || this.getHost()) { - var E = this, - G = E.s("layout.h"), - W = E.s("layout.v"); - if (G || W) { - var o, w, I, Y, H, Q, z = new O.Math.Vector2, - r = q.getPosition(), - y = q.getAnchor(), - k = q.getScaledSize(), - F = E.getPosition(), - U = E.getScaledSize(); - switch (z.set(F.x - r.x, F.y - r.y), z.rotateAround(null, -q.getRotation()), G) { - case "left": - E._layoutHValue = z.x + y.x * k.width; - break; - case "right": - E._layoutHValue = -z.x + (1 - y.x) * k.width; - break; - case "center": - E._layoutHValue = -z.x + (.5 - y.x) * k.width; - break; - case "leftright": - case "scale": - "scale" === G ? o = -z.x + (.5 - y.x) * k.width : (w = E.getAnchor(), I = E.getRotation() - q.getRotation(), Y = Math.cos(I), H = Math.sin(I), Q = -Math.min(-w.x * Y + w.y * H, -w.x * Y - (1 - w.y) * H, (1 - w.x) * Y + w.y * H, (1 - w.x) * Y - (1 - w.y) * H), o = z.x - (Q - y.x) * k.width), "position" === B && "object" == typeof E._layoutHValue ? (E._layoutHValue[0] = k.width, E._layoutHValue[1] = o) : E._layoutHValue = [k.width, o, k.width, U.width, U.height, Q] - } - switch (W) { - case "top": - E._layoutVValue = z.y + y.y * k.height; - break; - case "bottom": - E._layoutVValue = -z.y + (1 - y.y) * k.height; - break; - case "center": - E._layoutVValue = -z.y + (.5 - y.y) * k.height; - break; - case "topbottom": - case "scale": - "scale" === W ? o = -z.y + (.5 - y.y) * k.height : (I || (w = E.getAnchor(), I = E.getRotation() - q.getRotation(), Y = Math.cos(I), H = Math.sin(I)), Q = -Math.min(-w.x * H - w.y * Y, -w.x * H + (1 - w.y) * Y, (1 - w.x) * H - w.y * Y, (1 - w.x) * H + (1 - w.y) * Y), o = z.y - (Q - y.y) * k.height), "position" === B && "object" == typeof E._layoutVValue ? (E._layoutVValue[0] = k.height, E._layoutVValue[1] = o) : E._layoutVValue = [k.height, o, k.height, U.width, U.height, Q] - } - } - } - }, getSerializableProperties: function () { - var g = Dp.superClass.getSerializableProperties.call(this); - return Uh(g, { - image: 1, - host: 1, - rotation: 1, - rotationX: 1, - rotationZ: 1, - rotationMode: 1, - position: 1, - anchor: 1, - anchorElevation: 1, - scale: 1, - scaleTall: 1, - _width: 1, - _height: 1, - _tall: 1, - elevation: 1 - }), g - } - }); - var Xg = O.Edge = function ($, G) { - var S = this; - fi(Xg, S), S.setSource($), S.setTarget(G) - }; - ki("Edge", Qp, { - ms_edge: !0, - _icon: "edge_icon", - getUIClass: function () { - return wn - }, _22Q: function () { - return Ip - }, getSource: function () { - return this._source - }, getTarget: function () { - return this._target - }, getSourceAgent: function () { - return this._40I - }, getTargetAgent: function () { - return this._41I - }, canSetSourceTarget: function (Q) { - if (Q === this) return !1; - if (Fq(Q)) return !0; - for (var X, E, a, B, e, A = [this], f = -1, j = 0; j > f;) - if (f++, X = A[f], E = X._44I) - for (E = E.getArray(), B = 0, e = E.length; e > B; B++) - if (a = E[B], Bk(a) && !(A.indexOf(a) >= 0)) { - if (a === Q) return !1; - A.push(a), j++ - } - return !0 - }, setSource: function (B) { - var h = this; - if (h._source !== B && h.canSetSourceTarget(B)) { - var A = h._source; - h._source = B, A && A._16I(h), B && B._2I(h), h._7I(), h.fp("source", A, B) - } - }, setTarget: function (M) { - var C = this; - if (C._target !== M && C.canSetSourceTarget(M)) { - var D = C._target; - C._target = M, D && D._18I(C), M && M._4I(C), C._7I(), C.fp("target", D, M) - } - }, isLooped: function () { - var p = this; - return p._source === p._target && Fq(p._source) && Fq(p._target) - }, onPropertyChanged: function () { - var $ = this; - $._49I && $._49I.each(function (s) { - s.fp("agentChange", !0, !1) - }) - }, _7I: function () { - var f, y = this, - H = Oq(y); - y._40I !== H && (f = this._40I, f && f._15I(y), y._40I = H, H && H._1I(y), y.fp("sourceAgent", f, H), gi(f, y._41I), gi(H, y._41I)); - var g = xg(y); - y._41I !== g && (f = y._41I, f && f._17I(y), y._41I = g, g && g._3I(y), y.fp("targetAgent", f, g), gi(f, y._40I), gi(g, y._40I)) - }, _22I: function (D) { - this._52I = D, this.fp("edgeGroup", !0, !1) - }, getEdgeGroup: function () { - return this._52I - }, isEdgeGroupHidden: function () { - var J = this; - return J._52I && J._52I.get(0) !== J && !J.getStyle(kh) - }, getEdgeGroupSize: function () { - return this._52I ? this._52I.size() : 1 - }, getEdgeGroupIndex: function () { - return this._52I ? this._52I.indexOf(this) : 0 - }, isEdgeGroupAgent: function () { - var z = this, - O = z._52I; - return O && !z.getStyle(kh) && O.size() > 1 && z === O.get(0) - }, toggle: function () { - this.beginTransaction(); - var c = this._52I, - K = !this.s(kh); - c && c.size() > 1 && (c.each(function (t) { - t.s(kh, K) - }), c.getSiblings().each(function (t) { - t !== c && t.each(function (a) { - a.fp("edgeGroup", F, t) - }) - })), this.endTransaction() - }, setStyle: function (b, F) { - (b === Ei || "edge.segments" === b) && (F = mh(F)), Xg.superClass.setStyle.call(this, b, F) - }, onStyleChanged: function (V) { - Xg.superClass.onStyleChanged.apply(this, arguments), Am[V] && gi(this._41I, this._40I) - }, getSerializableProperties: function () { - var r = Xg.superClass.getSerializableProperties.call(this); - return Uh(r, { - source: 1, - target: 1 - }), r - } - }); - var Lc = O.Group = function () { - fi(Lc, this) - }; - ki("Group", Dp, { - _image: "group_image", - _icon: "group_icon", - _57O: !1, - getUIClass: function () { - return Fn - }, onChildAdded: function () { - Lc.superClass.onChildAdded.apply(this, arguments), this._81I() - }, onChildRemoved: function () { - Lc.superClass.onChildRemoved.apply(this, arguments), this._81I() - }, _81I: function () { - var y = this; - if (!y._54I && !aj) { - var E = y.getChildrenRect(); - E && (y._53I = 1, y.p(Re(y.s("group.position"), E, y.getSize())), delete y._53I) - } - }, getChildrenRect: function () { - var $, F = this; - return F.eachChild(function (e) { - Fq(e) && ($ = ni($, F.getChildRect(e))) - }), $ - }, getChildRect: function (P) { - var a; - return Fq(P) && P.s(Dm) && (yl(P) && P.isExpanded() && P.eachChild(function (k) { - a = ni(a, P.getChildRect(k)) - }), !a && P.getRect && (a = P.getRect())), a - }, setPosition: function (G, N) { - var j = this; - if (!j._54I) { - var A; - A = 2 === arguments.length ? { - x: G, - y: N - } : G, aj || j._53I || (j._54I = 1, qc(j._children, A.x - j._position.x, A.y - j._position.y), delete j._54I), Lc.superClass.setPosition.call(this, A) - } - }, toggle: function () { - this.setExpanded(!this.isExpanded()) - }, isExpanded: function () { - return this._57O - }, setExpanded: function (M) { - var d = this; - if (d._57O !== M) { - var n = d._57O; - d._57O = M, d.fp("expanded", n, d._57O), d._fireInvalidateDeep(), d._8I() - } - }, _fireInvalidateDeep: function () { - this.eachChild(function (H) { - yl(H) ? H._fireInvalidateDeep() : H.iv() - }) - }, _8I: function () { - Lc.superClass._8I.call(this), this.eachChild(function (y) { - Fq(y) && y._8I() - }) - }, onStyleChanged: function (f) { - Lc.superClass.onStyleChanged.apply(this, arguments), "group.position" === f && this._81I() - }, getSerializableProperties: function () { - var B = Lc.superClass.getSerializableProperties.call(this); - return B.expanded = 1, B - } - }); - var Br = O.Block = function () { - fi(Br, this), this.s({ - "shadow.cast": !1, - "shadow.receive": !1 - }) - }; - ki("Block", Dp, { - _icon: "block_icon", - _clickThroughEnabled: !1, - _syncSize: !0, - ms_ac: ["clickThroughEnabled", "syncSize"], - getUIClass: function () { - return Ul - }, _22Q: function () { - return rs - }, onChildAdded: function () { - Br.superClass.onChildAdded.apply(this, arguments), this.updateFromChildren() - }, onChildRemoved: function () { - Br.superClass.onChildRemoved.apply(this, arguments), this.updateFromChildren() - }, _getBoundingBox: function () { - function G(x, Y, A) { - M.fromArray(sj(Y)); - var S = Y.getAnchor3d(); - x.push((new tl).set(0 - S.x, 0 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(0 - S.x, 0 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(0 - S.x, 1 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(0 - S.x, 1 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 0 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 0 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 1 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 1 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)) - } - - function Y(x, N) { - var Q = (new br).makeRotationFromEuler(this.getEuler()).setPosition((new tl).fromArray(this.p3())); - Q.getInverse(Q), x.forEach(function (A) { - Fq(A) && G(N, A, Q) - }) - } - var M = new br; - return function (g, I) { - if (g instanceof Dp && (g = [g]), !g || 0 === g.length) return F; - var I = []; - Y.call(this, g, I); - var E = [1 / 0, 1 / 0, 1 / 0], - l = [-1 / 0, -1 / 0, -1 / 0]; - return I.forEach(function (Q) { - E[0] = Math.min(Q.x, E[0]), E[1] = Math.min(Q.y, E[1]), E[2] = Math.min(Q.z, E[2]), l[0] = Math.max(Q.x, l[0]), l[1] = Math.max(Q.y, l[1]), l[2] = Math.max(Q.z, l[2]) - }), { - min: E, - max: l - } - } - }(), - updateFromChildren: function () { - var i = this; - if (!aj && !i._updatingToChildren && i._syncSize && 0 !== i.size() && !i._freezeSyncFromChildren) { - var f = this._getBoundingBox(i.toChildren(Fq)); - if (f) { - i._updatingFromChildren = 1; - var I = (new tl).fromArray(this.getScale3d()), - Z = (new tl).fromArray(f.min), - T = (new tl).fromArray(f.max), - v = u.blockMinSize, - k = new tl, - r = T.clone().sub(Z); - 0 === r.x && k.setX(.5), 0 === r.y && k.setY(.5), 0 === r.z && k.setZ(.5); - var S = this._width == F || -1 === this._width, - E = new tl(this.getAnchor3d()); - if (S || this._anchorChanged || !this.s("keepPosition")) { - var q = E.clone().multiply(r).add(Z).applyEuler(this.getEuler()).add((new tl).fromArray(this.p3())); - this.p3([q.x, q.y, q.z]) - } else { - var y = I.clone().multiply((new tl).fromArray(this.s3())), - s = r.clone(); - 0 === s.x && s.setX(v), 0 === s.y && s.setY(v), 0 === s.z && s.setZ(v); - var l = E.clone().multiply(y), - z = l.clone().multiplyScalar(-1).sub(Z).divide(s).add(l.divide(s)).add(k); - this.setAnchor3d(z.x, z.y, z.z) - } - var c = new tl(1, 1, 1).divide(I).multiply(r); - this.s3(Math.abs(c.x), Math.abs(c.y), Math.abs(c.z)), delete i._updatingFromChildren - } - } - }, setPosition: function (w, J) { - var c = this; - if (!c._updatingToChildren) { - var x; - x = 2 === arguments.length ? { - x: w, - y: J - } : w, aj || c._updatingFromChildren || (c._updatingToChildren = 1, qc(c._children, x.x - c._position.x, x.y - c._position.y), delete c._updatingToChildren), Br.superClass.setPosition.call(this, x) - } - }, setSize3d: function () { - var Y = this.getDataModel(); - Y && Y.beginTransaction(), Br.superClass.setSize3d.apply(this, arguments), Y && Y.endTransaction() - }, setTall: function (I) { - var z = this; - if (!z._updatingToChildren) { - var O = z.getDataModel(); - O && O.beginTransaction(), I = q(I, u.blockMinSize); - var w = z.getTall(); - if (I !== w && Br.superClass.setTall.call(z, I), !aj && !z._updatingFromChildren) { - z._updatingToChildren = 1; - var B = I / w; - z._adjustChildTallOrScale(B, "size"), delete z._updatingToChildren, z.updateFromChildren() - } - O && O.endTransaction() - } - }, setWidth: function (t) { - return this.setSize(t, this.getHeight()) - }, setHeight: function (O) { - return this.setSize(this.getWidth(), O) - }, setSize: function (G, V) { - var N = u.blockMinSize; - G = q(G, N), V = q(V, N); - var a = this; - if (!a._updatingToChildren) { - 2 !== arguments.length && (V = G.height, G = G.width); - var t = a.getDataModel(); - t && t.beginTransaction(); - var v = a.getWidth(), - I = a.getHeight(); - if (G !== v && Br.superClass.setWidth.call(a, G), V !== I && Br.superClass.setHeight.call(a, V), !aj && !a._updatingFromChildren) { - a._updatingToChildren = 1; - var k = G / v, - r = V / I; - a._adjustChildScaleOrSize(k, r, "size"), delete a._updatingToChildren, a.updateFromChildren() - } - t && t.endTransaction() - } - }, _adjustChildScaleOrSize: function (C, K, Q) { - var $ = this; - if ($._syncSize) { - var p = $.getPosition(), - s = $.getRotation(); - $.getScale(), $.eachChild(function (b) { - if (Fq(b)) { - var g = b.getPosition(), - h = b.getRotation(), - B = b.getWidth(), - S = b.getHeight(), - d = b.getScale(), - q = d.x * B, - o = d.y * S, - t = new In(h, g.x, g.y, q, o); - t.translate(-p.x, -p.y), t.rotate(-s), h = D(t.b * Math.sign(q), t.a * Math.sign(q)), t.scale(C, K); - var E, A, M, L = k(h); - if (Math.abs(L) < .001 ? (E = n(h), A = t.b / E, M = -t.c / E) : (A = t.a / L, M = t.d / L), "scale" === Q) b.setScale(A / B, M / S); - else if ("size" === Q) { - var u = A / d.x, - X = M / d.y; - b.setScale(he(A) * Math.abs(d.x), he(M) * Math.abs(d.y)), b instanceof O.Shape ? (b.setWidthForce(Math.max(Math.abs(u), 1e-5)), b.setHeightForce(Math.max(Math.abs(X), 1e-5))) : b.setSize(Math.max(.01, Math.abs(u)), Math.max(.01, Math.abs(X))) - } - t.rotate(s), t.translate(p.x, p.y), b.setPosition(t.tx, t.ty) - } - }) - } - }, _calcChangeFactor: function (B, g, n, h) { - var d, L, w, G; - return d = X(B), L = X(n), w = d > L ? d / L : L / d, d = X(g), L = X(h), G = d > L ? d / L : L / d, q(w, G) - }, setElevation: function (L) { - var R = this; - if (!R._updatingToChildren) { - var e = R.getElevation(), - $ = L - e; - 0 !== $ && (aj || R._updatingFromChildren || (R._updatingToChildren = 1, qc(R._children, 0, $, 0), delete R._updatingToChildren), Br.superClass.setElevation.apply(R, arguments)) - } - }, setScaleTall: function (I) { - var N = this; - if (!N._updatingToChildren) { - var w = N.getScaleTall(); - if (X(I) < .01 && (I = .01 * (he(I) || he(w))), Br.superClass.setScaleTall.call(N, I), !aj && !N._updatingFromChildren) { - N._updatingToChildren = 1; - var C = I / w; - N._adjustChildTallOrScale(C, "size"), delete N._updatingToChildren, this.updateFromChildren() - } - } - }, _adjustChildTallOrScale: function (E, n) { - var c = this; - if (c._syncSize) { - var b = c.getElevation(); - c.eachChild(function (d) { - if (Fq(d)) - if ("size" === n) { - var G = d.getTall(); - 0 > E && d.setScaleTall(-1 * d.getScaleTall()), d.setTall(Math.max(.01, Math.abs(G * E))), d.setElevation(b + (d.getElevation() - b) * E) - } else { - var q = d.getScaleTall(); - d.setScaleTall(q * E) - } - }) - } - }, setAnchor3d: function () { - if (!this._updatingToChildren) { - var s = this.getDataModel(); - s && s.beginTransaction(); - var $ = Br.superClass.setAnchor3d.apply(this, arguments); - return $ && !aj && !this._updatingFromChildren && this._syncSize && (this._anchorChanged = 1, this.updateFromChildren(), delete this._anchorChanged), s && s.endTransaction(), $ - } - }, setAnchor: function () { - var O = this; - if (!O._updatingToChildren) { - var o = O.getAnchor(), - _ = Br.superClass.setAnchor.apply(O, arguments); - if (aj || O._updatingFromChildren || !O._syncSize) return _; - O._updatingToChildren = 1; - var u = O.getAnchor(); - O.getPosition(); - var G = O.getSize(), - T = O.getScale(), - E = O.getRotation(), - s = -G.width * T.x * (o.x - u.x), - $ = -G.height * T.y * (o.y - u.y), - p = n(E), - F = k(E), - y = F * s - p * $, - P = p * s + F * $; - return O.eachChild(function (S) { - if (Fq(S)) { - var Z = S.getPosition(); - S.setPosition(Z.x - y, Z.y - P) - } - }), delete O._updatingToChildren, _ - } - }, setAnchorElevation: function () { - var Z = this; - if (!Z._updatingToChildren) { - var a = Z.getAnchorElevation(), - F = Br.superClass.setAnchorElevation.apply(Z, arguments); - if (aj || Z._updatingFromChildren || !Z._syncSize) return F; - Z._updatingToChildren = 1; - var _ = Z.getAnchorElevation(), - W = Z.getTall(), - J = Z.getScaleTall(), - G = -W * J * (a - _); - return Z.eachChild(function (J) { - if (Fq(J)) { - var N = J.getElevation(); - J.setElevation(N - G) - } - }), delete Z._updatingToChildren, F - } - }, setRotation: function (G) { - this._updateChildrenRotation3d("rotation", G) - }, setRotationX: function (L) { - this._updateChildrenRotation3d("rotationX", L) - }, setRotationZ: function (_) { - this._updateChildrenRotation3d("rotationZ", _) - }, _updateChildrenRotation3d: function (w, f) { - var E = this; - if (!E._updatingToChildren) { - var p = E[kp(w)](); - if (Br.superClass[tg(w)].call(E, f), !aj && !E._updatingFromChildren) { - E._updatingToChildren = 1; - var c = f - p; - E.eachChild(function (G) { - Fq(G) && G._11Q(E, w, c) - }), delete E._updatingToChildren - } - } - }, setScale: function (p, q) { - var V = this; - if (!V._updatingToChildren) { - null == q && (q = p.y, p = p.x); - var S = V.getScale(); - if (X(p) < .01 && (p = .01 * (he(p) || he(S.x))), X(q) < .01 && (q = .01 * (he(q) || he(S.y))), Br.superClass.setScale.call(V, p, q), !aj && !V._updatingFromChildren) { - V._updatingToChildren = 1; - var Q = p / S.x, - b = q / S.y; - V._adjustChildScaleOrSize(Q, b, "size"), delete V._updatingToChildren, V.updateFromChildren() - } - } - }, getSerializableProperties: function () { - var o = Br.superClass.getSerializableProperties.call(this); - return o.clickThroughEnabled = 1, o.syncSize = 1, o - } - }); - var pi = O.Grid = function () { - fi(O.Grid, this) - }; - ki("Grid", Dp, { - IRotatable: !1, - _icon: "grid_icon", - _image: F, - getUIClass: function () { - return _n - }, setRotation: function () { }, getCellRect: function (E, u) { - var I = this, - S = I.s("grid.row.count"), - Y = I.s("grid.column.count"); - if (0 >= S || 0 >= Y || 0 > E || E >= S || 0 > u || u >= Y) return F; - var G, z, v, g = I.getRect(), - N = I.s("grid.row.percents"), - b = I.s("grid.column.percents"); - if (ld(g, I, "grid.border", -1), N && N._as && (N = N._as), b && b._as && (b = b._as), N && N.length === S) { - for (v = 0, G = 0; E > G; G++) v += g.height * N[G]; - g.y += v, g.height = g.height * N[E] - } else g.height = g.height / S, g.y += g.height * E; if (b && b.length === Y) { - for (z = 0, G = 0; u > G; G++) z += g.width * b[G]; - g.x += z, g.width = g.width * b[u] - } else g.width = g.width / Y, g.x += g.width * u; - return vn(g, -I.s("grid.gap")), g - } - }); - var Lo = O.Text = function () { - fi(Lo, this), this.setSize(100, 50), this.s("text", "TEXT") - }; - ki("Text", Dp, { - _icon: "text_icon", - _image: "__text__", - getUIClass: function () { - return sk - }, setWidth: function (U) { - U || (U = .001), Lo.superClass.setWidth.call(this, U) - }, setHeight: function (J) { - J || (J = .001), Lo.superClass.setHeight.call(this, J) - }, toLabel: function () { - return this._displayName || this._name || this.s("text") - } - }), _c("__text__", { - width: { - value: 100, - isSafeFunc: !0, - func: function (L) { - return L ? L._width : 100 - } - }, - height: { - value: 50, - isSafeFunc: !0, - func: function (T) { - return T ? T._height : 50 - } - }, - comps: [{ - type: "text", - relative: !0, - rect: [0, 0, 1, 1], - text: { - func: "style@text" - }, - align: { - func: "style@text.align" - }, - vAlign: { - func: "style@text.vAlign" - }, - color: { - func: "style@text.color" - }, - font: { - func: "style@text.font" - }, - shadow: { - func: "style@text.shadow" - }, - shadowColor: { - func: "style@text.shadow.color" - }, - shadowBlur: { - func: "style@text.shadow.blur" - }, - shadowOffsetX: { - func: "style@text.shadow.offset.x" - }, - shadowOffsetY: { - func: "style@text.shadow.offset.y" - }, - scaleX: { - func: "style@text.scale.x" - }, - scaleY: { - func: "style@text.scale.y" - } - }] - }); - var Fc = O.Shape = function () { - fi(Fc, this), this._59O = new xr - }; - Fc.__de__ = zr, ki("Shape", Dp, { - ms_ac: ["thickness", "closePath"], - _icon: "shape_icon", - _thickness: 10, - _closePath: !1, - getUIClass: function () { - return Xp - }, _22Q: function () { - return Vp - }, getLength: function (T) { - return tj(Yo(this._59O, this._58O, T, this._closePath)) - }, getSegments: function () { - return this._58O - }, toSegments: function () { - var k = this._58O; - return k ? new xr(k._as.slice(0)) : k - }, setSegments: function (h) { - var P = this._58O; - h = h ? ip(h) ? new xr(h.slice(0)) : new xr(h._as.slice(0)) : null, (P && h && P._as.join(",") !== h._as.join(",") || P !== h) && (this._58O = h, this.fp("segments", P, h)) - }, getPoints: function () { - return this._59O - }, toPoints: function () { - var O = this._59O; - return new xr(O._as.slice(0)) - }, getPointsMatrix2d: function () { - var n = this, - c = new Rc.Matrix2d, - Q = n.getPosition(), - t = n.getScale(), - z = n.getRotation(); - return c.translate(-Q.x, -Q.y).scale(t.x, t.y).rotate(z).translate(Q.x, Q.y), c - }, getPointsMatrix3d: function () { - return function () { - var O = this, - V = new Rc.Matrix4, - p = V.getElements(), - L = O.p3(); - bo(p, L), Cl(p, O.getFinalRotation3d(), O.getRotationMode()); - var H = O.getScale3d(), - Q = O._dynamicScale3d; - return Q && (H[0] *= Q[0], H[1] *= Q[1], H[2] *= Q[2]), Bd(p, H), bo(p, Cj(L)), V - } - }(), - setPoints: function (Z, X) { - var w = this, - c = w._59O; - Z = Z ? ip(Z) ? new xr(Z.slice(0)) : new xr(Z._as.slice(0)) : new xr; - var D, N, q, T, o, n; - X && (D = w.getPosition(), n = new In(w.getRotation(), 0, 0, w.getScale().x, w.getScale().y)), (c && Z && c._as.join(",") !== Z._as.join(",") || c !== Z) && (w._59O = Z, w.fs(), w.fp("points", c, Z)), X && (N = w.getPosition(), q = N.x - D.x, T = N.y - D.y, o = n.tf(q, T), w.setPosition(N.x - q + o.x, N.y - T + o.y)) - }, addPoint: function (J, t, M) { - var z = this.toPoints(); - z.add(J, t), this.setPoints(z, M) - }, setPoint: function (K, u, k) { - var P = this.toPoints(); - P.set(K, u), this.setPoints(P, k) - }, removePointAt: function (t) { - var R = this.toPoints(); - R.removeAt(t), this.setPoints(R) - }, setWidthForce: function (T) { - var U = this; - if (!U._55I && !aj && U.getWidth()) { - U._55I = 1; - var V = U._position.x, - q = T / U.getWidth(), - M = U.toPoints(), - s = new xr; - 1 !== q && (M.each(function (z) { - s.add({ - x: (z.x - V) * q + V, - y: z.y, - e: z.e - }) - }), U.setPoints(s), ok(U, [q, 0, 0, 1, V * (1 - q), 0]), U.fs()), delete U._55I - } - Fc.superClass.setWidth.call(U, T) - }, setWidth: function (W) { - return this.setWidthForce(Wp > W ? Wp : W) - }, setHeightForce: function (i) { - var R = this; - if (!R._55I && !aj && R.getHeight()) { - R._55I = 1; - var o = R._position.y, - g = i / R.getHeight(), - S = R.toPoints(), - h = new xr; - 1 !== g && (S.each(function (D) { - h.add({ - x: D.x, - y: (D.y - o) * g + o, - e: D.e - }) - }), R.setPoints(h), ok(R, [1, 0, 0, g, 0, o * (1 - g)]), R.fs()), delete R._55I - } - Fc.superClass.setHeight.call(R, i) - }, setHeight: function (x) { - return this.setHeightForce(Wp > x ? Wp : x) - }, setAnchorElevation: function (v) { - var M = this; - M._55I = !0; - var o = M._updatingAnchor3d, - x = !aj && !o; - if (x) { - var t, p = v, - Z = M.getAnchorElevation(), - U = M.getTall(); - t = U * (Z - p), 0 !== t && M.shiftPointsElevation(t) - } - var y = Fc.superClass.setAnchorElevation.apply(M, arguments); - return o || delete M._55I, y - }, getShapeElevation: function () { - var J = this, - j = J._54O; - return j - (J.getTall() || 0) * (J._anchorElevation - .5) - }, setAnchor3d: function (c, q, X, J) { - var Z, F = this; - "number" == typeof c ? Z = { - x: c, - y: q, - z: X - } : (Z = c.length ? { - x: c[0], - y: c[1], - z: c[2] - } : c, J = q), F._55I = !0, F._updatingAnchor3d = !0; - var N = F.getDataModel(); - if (N && N.beginTransaction(), !aj) { - var K = F.getAnchor3d(), - z = F.getSize(), - A = F.getTall(), - R = z.width * (K.x - Z.x), - n = z.height * (K.z - Z.z), - C = A * (K.y - Z.y); - J || F.shiftPoints(R, n, C); - var V = F.p3() - } - var H = Fc.superClass.setAnchor3d.apply(F, arguments); - if (!aj && J) { - var s = F.p3(); - F.shiftPoints(s[0] - V[0] + R, s[2] - V[2] + n, s[1] - V[1] + C) - } - return N && N.endTransaction(), delete F._updatingAnchor3d, delete F._55I, H - }, setAnchor: function (f, X, n) { - var j = this; - j._55I = !0; - var A = j._updatingAnchor3d, - d = !aj && !A; - if (d) { - var E, t, Y; - "number" == typeof f ? Y = { - x: f, - y: X - } : (Y = f.length ? { - x: f[0], - y: f[1] - } : f, n = X); - var q = j.getAnchor(), - Z = j.getSize(); - E = Z.width * (q.x - Y.x), t = Z.height * (q.y - Y.y), n || j.shiftPoints(E, t); - var o = j.getPosition() - } - var y = Fc.superClass.setAnchor.apply(j, arguments); - if (d) { - var P = j.getPosition(); - n && j.shiftPoints(P.x - o.x + E, P.y - o.y + t) - } - return A || delete j._55I, y - }, shiftPoints: function (x, m, s) { - if (x || m || s) { - var Y = this, - O = Y.getElevation() || 0, - i = Y.toPoints(), - v = new xr; - i.each(function (t) { - var Q = t.e; - s && (Q = (Q == F ? O : Q) + s), v.add({ - x: t.x + x, - y: t.y + m, - e: Q - }) - }), Y.setPoints(v), Y.fs() - } - }, shiftPointsElevation: function (h) { - return this.shiftPoints(0, 0, h) - }, setPosition: function (T, X) { - var U, y = this; - if (!y._28Q) { - if (y._28Q = 1, !y._55I && !aj) { - U = 2 === arguments.length ? { - x: T, - y: X - } : T; - var f = U.x - y._position.x, - m = U.y - y._position.y; - if (0 === f && 0 === m) return delete y._28Q, void 0; - y._55I = 1, y.shiftPoints(f, m), ok(y, [1, 0, 0, 1, f, m]), delete y._55I - } - Fc.superClass.setPosition.apply(y, arguments), delete y._28Q - } - }, fs: function () { - this.fireShapeChange() - }, _70I: function () { - var y = this; - if (2 !== y._59O.size()) return !1; - var F = y._58O; - return F ? 2 === F.size() && 1 === F.get(0) && 2 === F.get(1) ? !0 : !1 : !0 - }, fireShapeChange: function () { - var W = this; - if (!W._55I && !aj) { - var N = ms(W._59O); - N && (W._55I = 1, W.setRect(N), delete W._55I) - } - W.fp(bl, !1, !0) - }, getSerializableProperties: function () { - var j = Fc.superClass.getSerializableProperties.call(this); - return j.segments = 1, j.points = 1, j.thickness = 1, j.closePath = 1, j - } - }); - var oj = O.Points = function () { - fi(oj, this) - }; - ki("Points", Dp, { - _22Q: function () { - return Co - }, setPoints: function (T) { - this.points = T, this._pointsDirty = !0, this.fp("points", F, this.points) - }, setPoint: function (S, h) { - this.points || (this.points = []), this.points[3 * S] = h[0], this.points[3 * S + 1] = h[1], this.points[3 * S + 2] = h[2], this._pointsDirty = !0, this.fp("points", F, this.points) - }, setPointsColor: function (B) { - this.colors = B, this._colorsDirty = !0, this.fp("colors", F, this.colors) - }, setPointColor: function (i, g) { - this.colors || (this.colors = []), g ? (g = ns(g), this.colors[3 * i] = g[0], this.colors[3 * i + 1] = g[1], this.colors[3 * i + 2] = g[2]) : (this.colors[3 * i] = Z, this.colors[3 * i + 1] = Z, this.colors[3 * i + 2] = Z), this._colorsDirty = !0, this.fp("colors", F, this.colors) - }, setPointsSize: function (U) { - this.sizes = U, this._sizesDirty = !0, this.fp("sizes", F, this.sizes) - }, setPointSize: function (x, q) { - this.sizes || (this.sizes = []), this.sizes[x] = q ? q : Z, this._sizesDirty = !0, this.fp("sizes", F, this.sizes) - }, getPointInfo: function (D) { - var A = 3 * D, - f = this.points; - if (!f || f[A] === Z || f[A + 1] === Z || f[A + 2] === Z) return null; - var d = [f[A], f[A + 1], f[A + 2]], - Y = this.mat || sj(this), - C = [d[0], d[1], d[2]]; - Td(C, Y); - var x = this.colors; - return { - size: this.sizes && this.size[D] || this.s("points.size"), - color: x && x[A] ? [x[A], x[A + 1], x[A + 2]] : this.s("points.color"), - local: d, - world: C - } - }, getSerializableProperties: function () { - var O = oj.superClass.getSerializableProperties.call(this); - return O.points = 1, O.colors = 1, O.sizes = 1, O - } - }); - var hn = O.Polyline = function () { - fi(hn, this), this.s({ - "shape.background": null, - "shape.border.width": 2 - }) - }; - ki("Polyline", Fc, { - _icon: "polyline_icon", - _22Q: function () { - return Ds - }, getUIClass: function () { - return Kr - }, setClosePath: function () { }, setTall: function (m) { - var f = this, - j = f.getDataModel(); - if (j && j.beginTransaction(), !f._55I && !f._24Q && !aj && f.getTall()) { - f._24Q = 1; - var q = f._54O, - S = m / f.getTall(); - if (1 !== S) { - var l = f.toPoints(), - _ = new xr; - l.each(function (Q) { - _.add({ - x: Q.x, - y: Q.y, - e: Q.e == F ? Q.e : (Q.e - q) * S + q - }) - }), f.setPoints(_), f.fs() - } - delete f._24Q - } - hn.superClass.setTall.call(f, m), j && j.endTransaction() - }, setElevation: function (d) { - var C = this, - k = C.getDataModel(); - if (k && k.beginTransaction(), !C._55I && !C._24Q && !aj) { - C._24Q = 1; - var _ = d - C._54O; - 0 !== _ && C.shiftPointsElevation(_), delete C._24Q - } - hn.superClass.setElevation.apply(C, arguments), k && k.endTransaction() - }, fireShapeChange: function () { - var w = this, - s = w._59O; - if (!w._55I && !w._24Q && !aj) { - var U = s.size(); - if (U) { - var Q = 1, - h = s.get(0), - I = w._54O; - h.e == F && (h.e = I); - for (var o = h.e, g = 0; U > Q; Q++) { - h = s.get(Q), h.e == F && (h.e = I); - var C = V(o, h.e), - k = q(o + g, h.e); - o = C, g = k - C - } - w._24Q = 1, w.setTall(g), w.setElevation(o + g * w._anchorElevation), delete w._24Q - } - } - hn.superClass.fireShapeChange.apply(w, arguments) - } - }); - var zh = O.SubGraph = function () { - fi(zh, this) - }; - ki("SubGraph", Dp, { - ISubGraph: 1, - _image: "subGraph_image", - _icon: "subGraph_icon", - _8I: function () { - zh.superClass._8I.call(this), this.eachChild(function (G) { - Fq(G) && G._8I() - }) - } - }), u.loadingRefGraph = 0; - var Ff = O.RefGraph = function () { - fi(Ff, this) - }; - ki("RefGraph", Br, { - _icon: "refGraph_icon", - getRef: function () { - return this._ref - }, setRef: function (f) { - var _ = this._ref; - this._ref = f, this.fp("ref", _, f), this.updateRef() - }, _21I: function () { - Ff.superClass._21I.apply(this, arguments), this.updateRef() - }, updateRef: function () { - var V = this; - if (u.loadingRefGraph++, V.clearChildrenFromDataModel(), u.loadingRefGraph--, V._ref && V._dataModel) { - V._xhrLoadHandler && (V._xhrLoadHandler.cancel = !0); - var a = aj, - x = V._xhrLoadHandler = function (I) { - if (I && V._dataModel) { - u.loadingRefGraph++; - var k = V._pendingUpdateInfo = { - needToRestore: a - }; - a && (k.p3 = V.p3(), k.s3 = V.s3(), k.r3 = V.r3(), k.anchor3d = V.getAnchor3d(), k.scale3d = V.getScale3d()), V.r3(0, 0, 0), V.setScale3d(1, 1, 1), V.setAnchor3d(.5, .5, .5), V.p3(0, 0, 0); - var B = u.parse(I), - J = V._dataModel.deserialize(B, V, { - justDatas: !0 - }); - J.each(function (Y) { - Y._refGraph = V - }), V.checkPendingUpdateInfo(), u.loadingRefGraph--, u.handleRefGraphLoaded(V, J, B) - } - }; - x.xhrLoadCalled = !1, u.load(V._ref, function (V) { - x.cancel || (x.xhrLoadCalled ? x(V) : $e(function () { - x(V) - })) - }), x.xhrLoadCalled = !0 - } - }, checkPendingUpdateInfo: function () { - var D = this, - f = D._pendingUpdateInfo; - if (!f) return D.onPendingUpdated && (u.loadingRefGraph++, D.onPendingUpdated(), u.loadingRefGraph--), void 0; - var X = !0; - this.eachChild(function (Q) { - (Q._pendingCheckImageJSON || Q._pendingUpdateInfo) && (X = !1) - }), X && (u.loadingRefGraph++, D._pendingUpdateInfo = null, D.updateFromChildren(), f.needToRestore && (D.setAnchor3d(f.anchor3d), D.setScale3d(f.scale3d), D.r3(f.r3), D.p3(f.p3)), this.getParent() instanceof Ff && this.getParent().checkPendingUpdateInfo(), D.onPendingUpdated && D.onPendingUpdated(), u.loadingRefGraph--) - }, getSerializableProperties: function () { - var G = Ff.superClass.getSerializableProperties.call(this); - return G.ref = 1, G - } - }), O.EdgeGroup = function (h, V) { - this._70O = h, this._siblings = V; - for (var n, p, d = 0, K = h.size(), y = z[kh]; K > d; d++) - if (n = h.get(d).getStyle(kh, !1), n != F) { - y = n; - break - } - y == F && (y = !0); - var t = u.edgeGroupAgentFunc; - for (t && (p = t(h), p && p !== h.get(0) && (h.remove(p), h.add(p, 0))), d = 0; K > d; d++) h.get(d).s(kh, y) - }, ki("EdgeGroup", o, { - getEdges: function () { - return this._70O - }, size: function () { - return this._70O.size() - }, get: function (N) { - return this._70O.get(N) - }, indexOf: function (v) { - return this._70O.indexOf(v) - }, each: function ($, p) { - this._70O.each($, p) - }, getSiblings: function () { - return this._siblings - }, eachSiblingEdge: function ($, T) { - this._siblings.each(function (W) { - W._70O.each($, T) - }) - } - }); - var Sk = function (A, C, E) { - var y = Al[A] = { - type: A, - action: C - }; - if (E) - for (var O in E) y[O] = E[O] - }; - Uh(u, { - setConnectAction: Sk, - getConnectAction: function (b, Q) { - if (!Q) { - if (!b) return null; - Q = b.getCurrentConnectActionType() - } - return Al[Q] - }, doConnectAction: function (W, d, B, H) { - H = H || W.getCurrentConnectActionType(); - var K = Al[H]; - if (!K) return !1; - var P = K.action; - return P ? (d instanceof se.Group ? W.sm().getSelection().each(function (b) { - P.call(null, W, b, B) - }) : P.call(null, W, d, B), !0) : !1 - }, doDeleteConnectionAction: function (W, V, s) { - s = s || W.getCurrentConnectActionType(); - var X = Al[s]; - if (!X || !X.delete) return !1; - var v = X.delete.action; - return v ? (V instanceof se.Group ? W.sm().getSelection().each(function (H) { - v.call(null, W, H) - }) : v.call(null, W, V), !0) : !1 - } - }); - var dl = O.JSONSerializer = function (I, j) { - this.dm = this._dataModel = I, this._hierarchical = u.forceHierarchicalSerialization ? !0 : j == F ? I.isHierarchicalRendering() : j - }; - ki("JSONSerializer", o, { - ms_ac: ["hierarchical"], - serialize: function (M) { - return u.stringify(this.toJSON(), M) - }, toJSON: function () { - var U = this, - c = U.dm, - x = c.getRoots(), - g = U.json = { - v: u.getVersion(), - p: {}, - a: {}, - d: [] - }, - Y = c.getSerializableAttrs(); - c.getInit() && (g.init = c.getInit()), c.getName() && (g.p.name = c.getName()), c.getBackground() && (g.p.background = c.getBackground()), c.getLayers() && (g.p.layers = c.getLayers()), c.getEnvmap() && (g.p.envmap = c.getEnvmap()), c.isCubicEnvmap() && (g.p.cubicEnvmap = c.isCubicEnvmap()), g.p.autoAdjustIndex = c.isAutoAdjustIndex(), g.p.hierarchicalRendering = c.isHierarchicalRendering(); - for (var H in Y) { - var L = c.a(H); - L !== Z && U[No](H, L, g.a) - } - return wd(g.a) && delete g.a, U._hierarchical ? x.each(U.serializeData, this) : c.each(function (d) { - U.serializeData(d) - }), c.fireSerializeEvent({ - type: "serialize", - json: g - }), c.getPostProcessingData() && (g.p.postProcessingData = c.getPostProcessingData()), g - }, isSerializable: function () { - return !0 - }, getProperties: function (h) { - return h.getSerializableProperties() - }, getStyles: function (H) { - return H.getSerializableStyles() - }, getAttrs: function (i) { - return i.getSerializableAttrs() - }, serializeData: function (v) { - var g = this; - if (g.isSerializable(v) && !v._refGraph) { - var V, R, Z, q, M = gp(v.getClassName()) || v.getClass(), - j = new M, - a = { - c: v.getClassName(), - i: v.getId(), - p: {}, - s: {}, - a: {} - }; - g.json.d.push(a), V = g.getProperties(v); - for (R in V) - if (/^_/.test(R)) { - if (Z = v[R], !("_width" !== R && "_height" !== R || Z != F && -1 !== Z)) { - var x; - ((v.s("layout.h") || v.s("layout.v")) && v.getHost() || v instanceof O.Node && (x = v.getParent()) && x instanceof O.Block || v.s("fullscreen")) && (Z = v[R] = "_width" === R ? v.getWidth() : v.getHeight()) - } - Z !== j[R] && g[No](R.substr(1), Z, a.p) - } else q = kp(R), v[q] && (Z = v[q](), Z !== j[q]() && g[No](R, Z, a.p)); - V = g.getStyles(v); - for (R in V) Z = v.s(R), Z !== j.s(R) && g[No](R, Z, a.s); - V = g.getAttrs(v); - for (R in V) Z = v.a(R), Z !== j.a(R) && g[No](R, Z, a.a); - wd(a.p) && delete a.p, wd(a.s) && delete a.s, wd(a.a) && delete a.a - } - g._hierarchical && v.getChildren().each(g.serializeData, g) - }, serializeValue: function (q, h, V) { - Xo(h) ? h = { - __a: h._as - } : h instanceof Qp && (h = { - __i: h.getId() - }), V[q] = h - }, deserialize: function (X, N, e) { - var v = this; - return dk(X) && /.json$/.test(X) ? (u.xhrLoad(X, function (i) { - v.deserializeImpl(i, N, e) - }), void 0) : v.deserializeImpl(X, N, e) - }, deserializeImpl: function (m, v, q) { - var d = this, - a = d.dm; - a.setDeserializing(!0), q = El(q) ? { - setId: q - } : Mf(q) ? { - finishFunc: q - } : q || {}, m = d.json = dk(m) ? u.parse(m) : m, !q.justDatas && m.a && m.a.onPreDeserialize && !q.disableOnPreDeserialize && m.a.onPreDeserialize(m, a, q.view), a.beginTransaction(), aj++, d._82I = {}; - var M = new xr, - Q = new xr, - G = 0, - Y = m.d.length; - if (q.justDatas || (!q.disableInit && Mf(m.init) && m.init(a), a.setInit(m.init)), !q.justDatas) { - for (var s in m.a) a.a(s, d[Ij](m.a[s])); - for (var j in m.p) a[tg(j)](m.p[j]) - } - for (; Y > G; G++) { - var t = m.d[G], - z = gp(t.c), - O = new z, - U = t.i; - q.setId && U != F && (O._id = U), d._82I[U] = O, M.add(O), Q.add(t) - } - for (G = 0; Y > G; G++) d.deserializeData(M.get(G), Q.get(G)); - return M.each(function (L) { - v && !L.getParent() && L.setParent(v), a.add(L) - }), q.__innerHandler__ && q.__innerHandler__(m, a, q.view, M), a.fireSerializeEvent({ - type: "deserialize", - json: m - }), aj--, a.endTransaction(), !q.justDatas && m.a && m.a.onPostDeserialize && !q.disableOnPostDeserialize && m.a.onPostDeserialize(m, a, q.view, M), q.finishFunc && q.finishFunc(m, a, q.view, M), a.setDeserializing(!1), M - }, deserializeData: function (y, r) { - for (var Z in r.p) y[tg(Z)](this[Ij](r.p[Z])); - for (Z in r.s) y.s(Z, this[Ij](r.s[Z])); - for (Z in r.a) y.a(Z, this[Ij](r.a[Z])) - }, deserializeValue: function (w) { - if (xl(w)) { - var z = w.__i; - if (z != F) return this._82I[z]; - if (z = w.__a, ip(z)) return new xr(z) - } - return w - } - }), Uh(jn, { - serialize: function (A, E) { - return new dl(this, E).serialize(A) - }, toJSON: function (c) { - return new dl(this, c).toJSON() - }, deserialize: function (K, x, U) { - return new dl(this).deserialize(K, x, U) - } - }); - var Rn = O.OverlappingBox = function (U) { - this.gv = U, this.boxes = {} - }; - ki("OverlappingBox", o, { - clear: function () { - var T, G, f = this.boxes; - for (T in f) G = f[T], G.length = 0 - }, isOverlapping: function (C, y) { - var Y, o, X = this, - k = X.boxes, - B = k[C]; - B ? (Y = B.rects, o = B.length) : B = k[C] = { - rects: Y = [], - length: o = 0 - }; - var d, S, y; - for (d = 0; o > d; d++) - if (S = Y[d], S.x < y.x + y.w && S.x + S.w > y.x && S.y < y.y + y.h && S.h + S.y > y.y) return !0; - return Y.length <= o ? (Y.push(y), B.length++) : Y[B.length++] = y, !1 - } - }), Uh(u, { - fetch: function (T, t) { - var F = "GET", - r = !1, - _ = null, - O = ""; - t && (F = t.method || "GET", r = t.sync, O = t.url, _ = t.data || null), T.open(F, O, !r), t.responseType ? T.responseType = t.responseType : t.overrideMimeType && T.overrideMimeType && T.overrideMimeType(t.overrideMimeType), T.send(_) - }, convertImageSrc: function (U, Z) { - Z && "function" == typeof Z || (Z = function () { }), Z(U) - } - }); - var De = O.Request = function () { - this._xhr = new XMLHttpRequest, this._onloadFunc = function () { }, this._errorFunc = function () { } - }; - ki("Request", o, { - _responseType: null, - _overrideMimeType: "text/plain", - send: function (e) { - var O = this._xhr, - j = this.onload, - J = this.onerror; - this.getResponseType() ? e.responseType = this.getResponseType() : this.getOverrideMimeType() && (e.overrideMimeType = this.getOverrideMimeType()), O.onload = j, O.onerror = J, u.fetch(O, e) - }, onload: function () { }, onerror: function () { }, getResponseType: function () { - return this._responseType - }, setResponseType: function (v) { - this._responseType = v - }, getOverrideMimeType: function () { - return this._overrideMimeType - }, setOverrideMimeType: function (N) { - this._overrideMimeType = N - }, getResponseText: function () { - var z = this._xhr; - return z.response || z.responseText - } - }), hg.GraphView = function (c) { - var W = this; - W._24I = {}, W._34I = new xr, W._25I = {}, W._56I = {}, W._view = ve(1, W), W._canvas = uo(W._view), W.dm(c ? c : new jn), this._coreInteractor = new mq(this), W.setEditable(!1), W.setScrollBarVisible(u.graphViewScrollBarVisible), W._initView() - }, Bb("GraphView", o, { - ms_v: 1, - ms_gv: 1, - ms_bnb: 1, - ms_tip: 1, - ms_dm: 1, - ms_lp: 1, - ms_fire: 1, - ms_sm: 1, - _49o: 1, - ms_txy: 1, - _52o: 1, - _51o: 1, - ms_ac: [df, gd, Pi, Ji, "resettable", "editInteractor", Fi, "zoomable", "pannable", "rectSelectable", "autoScrollZone", dj, "movableFunc", "editableFunc", "pointEditableFunc", "rectEditableFunc", "rotationEditableFunc", "anchorEditableFunc", "rectSelectBackground", "rectSelectBorderColor", "editPointSize", "editPointBorderColor", "editPointBackground", "hoverDelay"], - _zoomable: u.graphViewZoomable, - _resettable: u.graphViewResettable, - _pannable: u.graphViewPannable, - _rectSelectable: u.graphViewRectSelectable, - _autoScrollZone: u.graphViewAutoScrollZone, - _rectSelectBackground: u.graphViewRectSelectBackground, - _rectSelectBorderColor: u.graphViewRectSelectBorderColor, - _editPointSize: u.graphViewEditPointSize, - _editPointBorderColor: u.graphViewEditPointBorderColor, - _editPointBackground: u.graphViewEditPointBackground, - _scrollBarColor: Ch, - _scrollBarSize: di, - _autoHideScrollBar: jr, - _autoMakeVisible: be, - _currentActionType: null, - getCoreInteractor: function () { - return this._coreInteractor - }, getLayers: function () { - return this._dataModel.getLayers() - }, setLayers: function (d) { - this._dataModel.setLayers(d) - }, setEditable: function (Y) { - var W = this, - J = W.__interactorMap__; - if (!J) { - var $ = hg.XEditInteractor; - J = W.__interactorMap__ = { - scrollBar: new Vl(W), - select: new ng(W), - edit: $ ? new $(W) : new vm(W), - text: new eb(W), - move: new Wr(W), - "default": new pk(W), - touch: new Jb(W, { - editable: !1 - }) - } - } - Y ? (W._uieditable = !0, W.setInteractors([J.scrollBar, J.select, J.edit, J.text, J.move, J.default, J.touch])) : (W._uieditable = !1, W.setInteractors([J.scrollBar, J.select, J.move, J.default, J.touch])) - }, getCanvas: function () { - return this._canvas - }, _33I: function (e) { - var I = e.getUIClass(); - return I ? new I(this, e) : F - }, getDataUI: function (m) { - var H = this, - M = H._25I[m._id]; - return M === Z && (M = H._33I(m), H._25I[m._id] = M), M - }, getNodeRect: function (m) { - return u.getNodeRect(this, m) - }, getFullscreenDatas: function () { - return this._dataModel.getFullscreenDatas() - }, getEdgeInfo: function (j) { - var J = this.getDataUI(j); - return J ? (J._79o(), J._78o) : null - }, getEdgeSourcePosition: function (l) { - var F = this, - k = F.getDataUI(l), - i = k.s, - r = k._data._40I; - return Yg(F, r, i("edge.source.position"), i("edge.source.offset.x"), i("edge.source.offset.y"), i("edge.source.anchor.x"), i("edge.source.anchor.y")) - }, getEdgeTargetPosition: function (Z) { - var m = this, - R = m.getDataUI(Z), - h = R.s, - V = R._data._41I; - return Yg(m, V, h("edge.target.position"), h("edge.target.offset.x"), h("edge.target.offset.y"), h("edge.target.anchor.x"), h("edge.target.anchor.y")) - }, invalidateAll: function (l) { - var G = this; - if (l) { - for (var e in G._25I) { - var t = G._25I[e]; - t && t.dispose() - } - G._25I = {}, G._56I = {}, G._24I = {}, G._34I.clear(), G.redraw() - } else G.dm().each(function (y) { - G.invalidateData(y) - }) - }, invalidateSelection: function () { - var k = this; - k.sm().each(function (S) { - k.invalidateData(S) - }) - }, invalidateData: function ($) { - var O = this; - O._24I[$._id] = $, O._21Q($), O.iv() - }, _21Q: function (G) { - var o = this, - v = o._24I; - if (Bk(G) && Dc[G.s(ej)]) { - var M = G.getSourceAgent(); - M && M.getAgentEdges().each(function (V) { - v[V._id] = V - }), M = G.getTargetAgent(), M && M.getAgentEdges().each(function (f) { - v[f._id] = f - }), o.iv() - } - }, redraw: function (s) { - var d = this; - d._32I || (s ? d._34I.add(s) : (d._32I = 1, d._34I.clear()), d.iv()) - }, each: function (T, w) { - var X, $, E, f = 0, - A = this.getLayers(), - Z = this._dataModel, - P = Z._datas._as, - q = P.length; - if (A) { - for (var F = A.length; F > f; f++) - if (E = A[f], xl(E) && (E = E.name), Z.isHierarchicalRendering()) { - var D = function (b) { - return b._layer === E ? w ? T.call(w, b) : T(b) : void 0 - }; - if (this._dataModel.eachByHierarchical(D) === !1) return - } else - for (var b = 0; q > b; b++) - if (X = P[b], X._layer === E && ($ = w ? T.call(w, X) : T(X), $ === !1)) return - } else if (Z.isHierarchicalRendering()) this._dataModel.eachByHierarchical(T, null, w); - else - for (; q > f; f++) - if (X = P[f], $ = w ? T.call(w, X) : T(X), $ === !1) return - }, reverseEach: function (L, O) { - var M, P, e, b, t = this._dataModel, - a = t._layers, - V = t._datas._as, - v = V.length; - if (a) { - for (M = a.length - 1; M >= 0; M--) - if (b = a[M], xl(b) && (b = b.name), t.isHierarchicalRendering()) { - var o = function (I) { - return I._layer === b ? O ? L.call(O, I) : L(I) : void 0 - }; - if (t.reverseEachByHierarchical(o) === !1) return - } else - for (var i = v - 1; i >= 0; i--) - if (P = V[i], P._layer === b && (e = O ? L.call(O, P) : L(P), e === !1)) return - } else if (t.isHierarchicalRendering()) t.reverseEachByHierarchical(L, null, O); - else - for (M = v - 1; M >= 0; M--) - if (P = V[M], e = O ? L.call(O, P) : L(P), e === !1) return - }, getViewRect: function () { - return this._29I - }, getContentRect: function () { - var $ = this, - e = $._84I; - if (!e) { - var i = this.dm().a("width"), - p = this.dm().a("height"); - i > 0 && p > 0 ? $._84I = { - x: 0, - y: 0, - width: i, - height: p - } : ($.each(function (u) { - $.isVisible(u) && (e = ni(e, $.getDataUIBounds(u))) - }), $._84I = e ? e : nl) - } - return $._84I - }, getScrollRect: function () { - return ni(this.getContentRect(), this._29I) - }, makeCenter: function (m, V, G) { - var h = this; - if (!h.getWidth() || !h.getHeight()) return G || $e(h.makeCenter, h, [m, V, !0], 500), void 0; - h.makeVisible(m), h.validate(); - var x = h.getDataUIBounds(m); - if (x) { - var s = h.getWidth(), - Q = h.getHeight(), - S = x.x + x.width / 2, - $ = x.y + x.height / 2, - M = -S * h._zoom + s / 2, - W = -$ * h._zoom + Q / 2; - h.setTranslate(M, W, V) - } - }, fitData: function (I, D, R, r, S) { - var P = this; - if (!P.getWidth() || !P.getHeight()) return S || $e(P.fitData, P, [I, D, R, r, !0], 500), void 0; - var N = function () { - P.makeVisible(I), P.validate(); - var x = P.getDataUIBounds(I); - x && (x = Pm(x), vn(x, R == F ? 20 : R), P.fitRect(x, D, r)) - }; - D ? u.callWhenLoaded(N) : N() - }, fitContent: function (A, G, Q, m) { - var B = this; - if (!B.getWidth() || !B.getHeight()) return m || $e(B.fitContent, B, [A, G, Q, !0], 500), void 0; - var R = function () { - B.validate(); - var I = Pm(B.getContentRect()); - vn(I, G == F ? 20 : G), B.fitRect(I, A, Q) - }; - A ? u.callWhenLoaded(R) : R() - }, fitRect: function (i, A, m) { - var l = this, - C = l.getWidth(), - G = l.getHeight(), - w = i.x + i.width / 2, - U = i.y + i.height / 2, - q = V(C / i.width, G / i.height), - _ = l._zoom, - H = -w * _ + C / 2, - d = -U * _ + G / 2; - 0 === q || isNaN(q) || (m && (q = V(1, q)), A ? (l._65I && (delete l._65I.finishFunc, l._65I.stop(!0)), l._14o && l._14o.stop(!0), l.setTranslate(H, d, { - finishFunc: function () { - l.setZoom(q, A) - } - })) : (l.setTranslate(H, d), l.setZoom(q))) - }, fitSelection: function (N, C, q) { - var R = this, - u = R.sm(), - z = null; - u.size() && (u.each(function (G) { - z = ni(R.getDataUIBounds(G), z) - }), N && vn(z, N), R.fitRect(z, C, q)) - }, toCanvas: function (d, H, P) { - H = H || this._zoom, this.validateImpl(); - var p = this, - R = p.getContentRect(); - P && vn(R, P), R.width || (R.width = 10), R.height || (R.height = 10); - var G = uo(), - i = R.x * H, - $ = R.y * H, - n = Math.ceil(R.width * H), - K = Math.ceil(R.height * H); - Bn(G, n, K, 1); - var C = Wd(G); - return d = d || this._dataModel.getBackground(), d && fl(C, 0, 0, n, K, d), wh(C, -i, -$), C.scale(H, H), p._42(C), C.restore(), G - }, toDataURL: function (O, G, a, v) { - return this.toCanvas(O, a, v).toDataURL(G || "image/png", 1) - }, getClipBounds: function () { - return this._74O - }, _42: function (S, z) { - var H = this, - V = H.dm().getBackground(); - if (V) { - var $ = H.dm().a("width"), - N = H.dm().a("height"); - $ > 0 && N > 0 && fl(S, 0, 0, $, N, V) - } - var R = H.__htmlOrderList, - r = [], - K = H._forcedLayoutHTML; - if (H._93db(S, z), H.each(function (A) { - var N = H.getDataUI(A); - if (N) { - var Y = H._56I[A._id], - t = N._htmlView; - if (Y) { - var L = N._79o(); - if (t = N._htmlView, O.HtmlNode && A instanceof O.HtmlNode) N._42(S); - else { - var c = H.getViewRect(), - T = t && t.layoutHTML; - !z || Kj(z, L) ? (T && (t.layoutHTML(), N.__outerLayout && delete N.__outerLayout), N._42(S)) : Kj(c, L) || !T || N.__outerLayout && !K || (t.layoutHTML(), N.__outerLayout = !0) - } - } - t && (r.push(t), t.getView && (t = t.getView()), t.style.display = Y ? "block" : Jc) - } - }), R && r.length > 0) { - var P = !1; - if (R.length !== r.length) P = !0; - else - for (var I = 0; I < r.length; I++) - if (r[I] !== R[I]) { - P = !0; - break - } - P && (r.forEach(function (L) { - L.autoAdjustIndex !== !1 && H.appendHTML(L, !0) - }), this.__htmlOrderList = r) - } else this.__htmlOrderList = r; - H._92db(S, z) - }, validateImpl: function () { - this.tryUpdateRootData(); - var H, D, S, v, X, Q = this, - F = Q.tx(), - z = Q.ty(), - R = Q._zoom, - f = Q._canvas, - i = this.getWidth(), - y = this.getHeight(), - h = Q._29I, - C = { - x: -F / R, - y: -z / R, - width: i / R, - height: y / R - }, - d = {}, - Y = Q._34I, - W = Q._24I, - l = Q._32I, - Z = Q._23I; - Q._24I = {}, (i !== f.clientWidth || y !== f.clientHeight) && (Bn(f, i, y), l = 1, Q._forcedLayoutHTML = 1), l || jg(C, h) || (l = 1, Q._forcedLayoutHTML = 1), Q._29I = C, Q.each(function (l) { - D = l._id; - var n = d[D] = Q.isVisible(l); - n !== Q._56I[D] && (W[D] = l, S = Q.getDataUI(W[D]), S && S._84o(n), Q._84o(l, n)) - }, Q); - for (D in W) S = Q.getDataUI(W[D]), S && (!l && Q._56I[D] && (X = S._79o(), X && Y.add(X)), S.invalidate()), Q._83I = 1; - if (Q._56I = d, !l) - for (D in W) d[D] && (S = Q.getDataUI(W[D]), S && (X = S._79o(), X && Y.add(X))); - if (l ? v = C : (Y.each(function (D) { - Kj(C, D) && (v = ni(v, D)) - }), v && (vn(v, q(1, 1 / R)), v.x = T(v.x * R) / R, v.y = T(v.y * R) / R, v.width = s(v.width * R) / R, v.height = s(v.height * R) / R, v = ro(C, v))), Q._74O = v, v) { - H = Wd(f); - var I = v.x, - k = v.y, - P = v.width, - U = v.height; - I = Math.floor((I * R + F) * ij), k = Math.floor((k * R + z) * ij), P = Math.ceil(P * R * ij) + 1, U = Math.ceil(U * R * ij) + 1, l || (v.x = (I / ij - F) / R, v.y = (k / ij - z) / R, v.width = P / ij / R, v.height = U / ij / R), H.beginPath(), H.rect(I, k, P, U), H.clip(), H.clearRect(I, k, P, U), tf(H, F, z, R), Q._42(H, v), H.restore(), delete Q._74O - } - if (Y.clear(), delete Q._32I, delete Q._forcedLayoutHTML, Z && i > 0 && y > 0) { - var S = Q.getDataUI(Z); - if (S) { - var X = S._79o(), - p = Q._29I, - J = p.x, - O = p.y, - K = p.width, - E = p.height, - R = Q._zoom; - X && !Kj(X, p) && (X.x + X.width < J && Q.tx(-X.x * R), X.x > J + K && Q.tx(-(X.x + X.width - K) * R), X.y + X.height < O && Q.ty(-X.y * R), X.y > O + E && Q.ty(-(X.y + X.height - E) * R)) - } - delete Q._23I - } - Q._83I && (delete Q._83I, delete Q._84I), Q._98O(), Q.countFrame(), wd(Q._24I) || $e(Q.iv, Q) - }, isValidGuideLineSource: function () { - return !0 - }, tryUpdateRootData: function () { - if (!this._rootDataUpdating) { - this._rootDataUpdating = !0; - var z, x = this.getFullscreenDatas(); - for (var s in x) z = x[s], this.scaleRootData(z); - this._rootDataUpdating = !1 - } - }, scaleRootData: function (_) { - var E = _.s("fullscreen"); - if ("uniform" === E || "fill" === E) { - _.getRotation() && _.setRotation(0); - var v = _.s("fullscreen.gap") || 0, - f = this.getWidth(), - X = this.getHeight(); - if (f && X) { - var a, A, L, r = f - 2 * v, - x = X - 2 * v, - z = _.getAnchor(), - u = _.getScaledSize(), - Y = u.width, - O = u.height, - J = _.s("fullscreen.lock"); - if (J) return "uniform" === E ? r / x > Y / O ? (a = x / O, Y = O * r / x) : (a = r / Y, O = Y * x / r) : "v" === J ? (a = x / O, Y = r / a, _.getWidth() !== Y && _.setWidth(Y)) : (a = r / Y, O = x / a, _.getHeight() !== O && _.setHeight(O)), this.setZoom(a), A = v - (_.getX() - z.x * Y) * a, L = v - (_.getY() - z.y * O) * a, A !== this.tx() && this.tx(A), L !== this.ty() && this.ty(L), void 0; - A = this.tx(), L = this.ty(), a = this._zoom; - var P = { - x: (-A + v) / a, - y: (-L + v) / a, - width: r / a, - height: x / a - }; - if ("uniform" === E) { - var w = Y / O, - j = Math.min(P.width, P.height * w), - k = j / w; - P.x += .5 * (P.width - j), P.y += .5 * (P.height - k), P.width = j, P.height = k - } - r = P.width / _.getScaleX(), x = P.height / _.getScaleY(), (_.getWidth() != r || _.getHeight() !== x) && _.setSize(r, x); - var l = P.x + z.x * P.width, - n = P.y + z.y * P.height, - H = _.getPosition(); - (l !== H.x || n !== H.y) && _.setPosition(l, n) - } - } - }, isScrollBarVisible: function () { - return !!this._79O - }, setScrollBarVisible: function (w) { - var m = this; - w !== m.isScrollBarVisible() && (w ? (sn(m._view, m._79O = dd()), sn(m._79O, m._27I = dd()), sn(m._79O, m._28I = dd())) : (yj(m._79O), delete m._79O, delete m._27I, delete m._28I), m.fp("scrollBarVisible", !w, w)) - }, getDebugTip: function () { - return "" - }, showScrollBar: function () { - var c = this; - c._79O && (c._85I || (cd(function () { - c._86I() - }, Lg), c.iv()), c._85I = new Date) - }, _86I: function () { - var i = this; - if (i._85I) { - var C = new Date, - d = C.getTime(); - d - i._85I.getTime() >= Lg ? (delete i._85I, i.iv()) : cd(function () { - i._86I() - }, Lg) - } - }, getVScrollBar: function () { - return this._27I - }, getHScrollBar: function () { - return this._28I - }, _98O: function () { - var K = this, - N = this._27I, - B = this._28I; - if (K._79O) { - if (K._autoHideScrollBar && !K._85I) return N.style.visibility = fc, B.style.visibility = fc, void 0; - var D = K.getScrollBarColor(), - Y = K._zoom, - M = K.getScrollBarSize(), - u = K.getViewRect(), - I = K.getScrollRect(), - Z = u.height * Y, - h = I.height * Y, - T = u.width * Y - M - 2, - F = Z * ((u.y - I.y) * Y / h), - J = Z * (Z / h), - R = N.style; - h - .5 > Z ? (un > J && (F = F + J / 2 - un / 2, 0 > F && (F = 0), F + un > Z && (F = Z - un), J = un), qp(N, T, F, M, J), R.visibility = Pd, R.background = D, R.borderRadius = M / 2 + oe) : R.visibility = fc; - var A = u.width * Y, - o = I.width * Y, - F = u.height * Y - M - 2, - T = A * ((u.x - I.x) * Y / o), - z = A * (A / o), - R = B.style; - o - .5 > A ? (un > z && (T = T + z / 2 - un / 2, 0 > T && (T = 0), T + un > A && (T = A - un), z = un), qp(B, T, F, z, M), R.visibility = Pd, R.background = D, R.borderRadius = M / 2 + oe) : R.visibility = fc - } - }, setDataModel: function (H) { - var d = this, - g = d._dataModel, - f = d._selectionModel; - g !== H && (g && (g.ump(d.handleDataModelPropertyChange, d), g.umm(d.handleDataModelChange, d), g.umd(d.handleDataPropertyChange, d), g.removeIndexChangeListener(d._75O, d), g.removeHierarchyChangeListener(d.handleHierarchyChange, d), f || g.sm().ums(d.handleSelectionChange, d)), d._dataModel = H, H.mp(d.handleDataModelPropertyChange, d), H.mm(d.handleDataModelChange, d), H.md(d.handleDataPropertyChange, d), H.addIndexChangeListener(d._75O, d), H.addHierarchyChangeListener(d.handleHierarchyChange, d), f ? f._21I(H) : H.sm().ms(d.handleSelectionChange, d), d.invalidateAll(!0), d.fp(uk, g, H), d.updateBackground()) - }, getLayersInfo: function () { - if (this._layersInfo === Z) { - var B = this.getLayers(); - B ? (this._layersInfo = {}, B.forEach(function (l) { - var D = xl(l) ? l.name : l; - this._layersInfo[D] = l - }, this)) : this._layersInfo = null - } - return this._layersInfo - }, calculateEdgePosition: function (J, V, Z) { - var p, G, C = this, - e = C.getDataUI(J), - k = qm(e), - W = Tn(V, function (f) { - return np(k, 100 * f) - }, 100, .001), - F = np(k, 100 * W); - if (!Z) { - var L = Kk(e), - g = new Xi(F.x, F.y), - D = 49 / (C._zoom * C._zoom); - for (p = 0, G = L.length; G > p; p++) - if (g.distanceToSquared(L[p]) < D) return { - index: p, - point: L[p], - distance: Math.sqrt((L[p].x - V.x) * (L[p].x - V.x) + (L[p].y - V.y) * (L[p].y - V.y)) - } - } - return { - percent: W, - point: F, - distance: Math.sqrt((F.x - V.x) * (F.x - V.x) + (F.y - V.y) * (F.y - V.y)) - } - }, calculateAttachPoint: function () { - var R = new Xi, - D = new Xi, - B = new Xi; - return function (z, V) { - var u = this.getAttachPoints(z); - if (!u || !u.length) return null; - B.set(V.x, V.y); - for (var W, E, H, s, O, h = 1 / 0, A = 0, $ = u.length; $ > A; A++) H = u[A], D.x = H.x, D.y = H.y, R.x = H.offsetX || 0, R.y = H.offsetY || 0, s = Yg(this, z, 0, R.x, R.y, D.x, D.y), E = B.distanceToSquared(s), h > E && (W = A, h = E, O = s); - h = Math.sqrt(h); - var l = this.getAttachStyle(z); - if ("close" === l) { - var m = z.s("attach.close.threshold") / this._zoom; - if (h > m) return null - } - return { - index: W, - distance: h, - info: u[W], - point: O - } - } - }(), - getAttachPoints: function (J) { - var d = J.s("attach.points"); - if (d) return d; - var b = ii(J._image); - return b ? Dj(b.attachPoints, J, this) || null : void 0 - }, getAttachStyle: function (w) { - var u = w.s("attach.style"); - if (u) return u; - var f = ii(w._image); - return f ? Dj(f.attachStyle, w, this) || "close" : void 0 - }, updateLayers: function () { - this._layersInfo = Z, this.invalidateSelection(), this.redraw() - }, updateBackground: function () { - var g = this.dm().a("width"), - V = this.dm().a("height"); - this._canvas.style.background = g > 0 && V > 0 ? "" : this.dm().getBackground() || "" - }, handleDataModelPropertyChange: function (n) { - if ("background" === n.property) { - var i = this._canvas.style.background, - e = n.newValue || ""; - this.updateBackground(), this.fp("canvasBackground", i, e), this.redraw() - } else "a:width" === n.property || "a:height" === n.property ? (this._83I = 1, this.updateBackground(), this.redraw()) : "layers" === n.property ? this.updateLayers() : "hierarchicalRendering" === n.property && this.redraw() - }, handleDataPropertyChange: function (P) { - this.dm().isHierarchicalRendering() && "parent" === P.property && P.data.hasChildren() && this.redraw(), this.invalidateData(P.data) - }, onPropertyChanged: function (M) { - var L = this, - n = M.property; - if (L.redraw(), "zoom" === n) { - var Y = L.sm().getSelection(); - Y.size() && Y.each(function (N) { - N.invalidate() - }) - } else "dataModel" === n && (L._83I = 1); - Jd[n] ? L.showScrollBar() : n === Fi && L.onCurrentSubGraphChanged(M) - }, onCurrentSubGraphChanged: function () { - this.sm().cs(), this.reset() - }, handleDataModelChange: function (O) { - var T = this, - R = O.kind, - A = O.data; - if (T._83I = 1, "add" === R) T.invalidateData(A), Bk(A) && A.getEdgeGroup() && A.getEdgeGroup().eachSiblingEdge(T.invalidateData, T); - else if (R === Ce) { - T._21Q(A); - var g = A._id, - n = T._25I[g]; - if (n) { - if (T._56I[g]) { - var v = n._79o(); - v && T.redraw(v) - } - n.dispose(), delete T._25I[g], delete T._24I[g], delete T._56I[g] - } - A === T._currentSubGraph && T.setCurrentSubGraph(F) - } else R === Tg && (T.invalidateAll(!0), T.setCurrentSubGraph(F)) - }, _75O: function (n) { - this.invalidateData(n.data) - }, handleHierarchyChange: function (A) { - this.dm().isHierarchicalRendering() && A.data.hasChildren() && this.redraw(), this.invalidateData(A.data) - }, adjustIndex: function (P) { - var $ = this; - if ($.isVisible(P)) { - $.dm().beginTransaction(); - for (var J = P; J._parent && $.isVisible(J._parent);) J = J._parent; - J && J !== P && $._dataModel.adjustIndex(J), $._dataModel.adjustIndex(P), $.dm().endTransaction() - } - }, getImage: function (r) { - return r.getImage ? r.getImage() : Z - }, getSelectWidth: function (Z) { - var j = ii(this.getImage(Z)); - return j && Dj(j.disableSelectedBorder, Z, this) ? 0 : Z.s("select.width") - }, getSelectColor: function (t) { - return t.s("select.color") - }, isSelectable: function (o, d) { - if (this.isSelected(o)) return !0; - if (!d && o.getParent() instanceof Br && this.isSelectable(o.getParent(), !0) && o.getParent().isSyncSize()) return !1; - var y = this.getLayersInfo(); - if (y) { - var L = y[o._layer]; - if (L && L.selectable === !1) return !1 - } - return o.s("2d.selectable") && this.sm().isSelectable(o) - }, isMovable: function (b) { - var O = this; - if (Bk(b) && b.getStyle(ej) !== _b) return !1; - var p = this.getLayersInfo(); - if (p) { - var w = p[b._layer]; - if (w && w.movable === !1) return !1 - } - return b.s("2d.movable") ? O._movableFunc ? O._movableFunc(b) : !0 : !1 - }, isEditable: function (A) { - var H = this; - if (O._uiSerializing) return H._uieditable; - if (!H._editInteractor || !H.isSelected(A)) return !1; - if (yl(A)) { - var W = H.getDataUI(A); - if (!W || W._88I) return !1 - } - if (Bk(A) && A.getStyle(ej) !== _b) return !1; - var t = this.getLayersInfo(); - if (t) { - var w = t[A._layer]; - if (w && w.editable === !1) return !1 - } - return A.s("2d.editable") ? H._editableFunc ? H._editableFunc(A) : !0 : !1 - }, handleDelete: function () { - this._editInteractor && (this._editInteractor.handleDelete ? this._editInteractor.handleDelete() : this.removeSelection()) - }, isPointEditable: function (x) { - return Fq(x) && 0 !== x.getRotation() ? !1 : this._pointEditableFunc ? this._pointEditableFunc(x) : !0 - }, isRectEditable: function (I) { - return this._rectEditableFunc ? this._rectEditableFunc(I) : !0 - }, isAnchorEditable: function (g) { - return this._anchorEditableFunc ? this._anchorEditableFunc(g) : !0 - }, isRotationEditable: function (s) { - return s.setRotation && s.IRotatable !== !1 ? this._rotationEditableFunc ? this._rotationEditableFunc(s) : !0 : !1 - }, isSourceTargetEditable: function () { - return !0 - }, getRotationPoint: function (c) { - var Y = c.getAnchor(), - K = c.getScale(), - w = this._zoom, - M = Go(c.getRotation(), 0, -c.getHeight() * K.y * Y.y - (K.y < 0 ? -1 : 1) * (nf ? 32 : 16) / w), - m = c.p(); - return M.x += m.x, M.y += m.y, M - }, getLogicalPoint: function (P) { - var y = this; - return Nm(P, y._canvas, y.tx(), y.ty(), y._zoom, y._zoom) - }, getScreenPoint: function (_, C) { - var i, s = this; - return "object" == typeof _ ? _.x !== Z ? (i = _.x, C = _.y) : (i = _[0], C = _[1]) : i = _, Qo(i, C, s._canvas, s.tx(), s.ty(), s._zoom, s._zoom) - }, getSelectedDataAt: function (T) { - var A = this; - return this.getDataAt(T, function (w) { - return A.isSelected(w) - }) - }, getDataInfoAt: function (c, o, J) { - var u, b = this.lp(c), - a = this.getDataAt(b, o, J); - if (a) { - var Y = this.getDataUI(a); - u = { - data: a, - ui: Y, - point: b - }; - var e = Y._38o; - if (e) { - var W = e.icons; - for (var T in W) { - var f = W[T], - x = e.rects[T]; - if (x) - for (var P = Dj(f.names, a, this), p = P ? P.length : 0, i = x.rotation, O = p - 1; O >= 0; O--) { - var z = P[O], - B = x[O]; - if (cf(B, b, i)) return u.part = "icons", u.name = T, u.icon = z, u.rect = B, u.index = O, u.rotation = i, u - } - } - } - if (this.isNoteVisible(a)) { - if (Y.note2Info && cf(Y.note2Info.clickRect, b, F, Y.note2Info.scale)) return u.part = "note2", u; - if (Y.noteInfo && cf(Y.noteInfo.clickRect, b, F, Y.noteInfo.scale)) return u.part = "note", u - } - if (this.isLabelVisible(a)) { - if (Y.label2Info && cf(Y.label2Info.rect, b, Y.label2Info.rotation, Y.label2Info.scale)) return u.part = "label2", u; - if (Y.labelInfo && cf(Y.labelInfo.rect, b, Y.labelInfo.rotation, Y.labelInfo.scale)) return u.part = "label", u - } - if (a.isInRect && a.isInRect(b)) return u.part = "body", u - } - return u - }, getDataAt: function (h, o, M) { - h.target && (h = this.lp(h)); - var k, E = this._zoom; - return this.reverseEach(function (z) { - return (o ? o(z) : this.isSelectable(z)) && this.rectIntersects(z, Cc(h.x, h.y, M, E)) ? (k = z, !1) : void 0 - }, this), k - }, getIconInfoAt: function (q, j) { - var C = this; - if (q.target && (q = C.lp(q)), j || (j = C.getDataAt(q)), j) { - var h = C.getDataUI(j); - if (h && h._38o) { - var G, V = h._38o, - x = new xr; - for (G in V.icons) x.add(G); - for (var K = x.size() - 1; K >= 0; K--) { - G = x.get(K); - for (var d = V.rects[G], M = d.rotation, t = d.length - 1; t >= 0; t--) { - var b = d[t], - P = b.width, - Z = b.height, - e = { - x: q.x - b.x - P / 2, - y: q.y - b.y - Z / 2 - }; - M != F && (e = Go(-M, e.x, e.y)); - var b = { - x: -P / 2, - y: -Z / 2, - width: P, - height: Z - }; - if (cf(b, e)) return { - key: G, - index: t, - name: V.icons[G].names[t], - rect: d[t], - point: q, - rotation: M, - relativeRect: b, - relativePoint: e, - data: j - } - } - } - } - } - return F - }, getDatasInRect: function (P, D, N) { - N === Z && (N = 1); - var h = this, - p = new xr; - return h.reverseEach(function ($) { - N && !h.isSelectable($) || (D ? h.rectIntersects($, P) : h.rectContains($, P)) && p.add($) - }), p - }, moveSelection: function (m, a) { - var u = this; - u.dm().beginTransaction(), qc(u.sm().toSelection(u.isMovable, u), m, a), u.dm().endTransaction() - }, moveDatas: function (h, G, p) { - var U = this; - U.dm().beginTransaction(), h instanceof xr || (h = new xr(h)), qc(h, G, p), U.dm().endTransaction() - }, getDataUIBounds: function (w) { - var U = this.getDataUI(w); - return U ? U._79o() : F - }, drawData: function (K, w, X) { - var u = this.getDataUI(w); - if (u) { - var s = u._79o(); - (!X || Kj(X, s)) && (u._42(K), w instanceof O.Block && w.eachChild(function (N) { - this.isVisible(N) && this.drawData(K, N, X) - }, this)) - } - }, getBoundsForGroup: function (n) { - return n.s(Dm) ? this.getDataUIBounds(n) : F - }, isPixelPerfect: function (o) { - return o.s("pixelPerfect") - }, rectIntersects: function (f, r) { - this.validate(); - var P = F; - if (this._56I[f._id]) { - var Y = this._25I[f._id]; - if (Y) { - var a = Y._79o(); - if ($k(r, a)) P = !0; - else if ((r = ro(r, a)) && (Y.rectIntersects && (P = Y.rectIntersects(r)), P == F)) { - if (!this.isPixelPerfect(f)) return !0; - var D = r.x, - O = r.y, - T = r.width, - B = r.height, - U = this._zoom, - y = u.hitMaxArea, - c = T * B * U * U; - if (c > y) { - var i = Math.sqrt(y / c); - U *= i - } - T *= U, B *= U, 2 > T && (T = 2), 2 > B && (B = 2), D *= U, O *= U; - var R = Cr(T, B); - wh(R, -D, -O), R.scale(U, U), this._drawForChecking = !0, this.drawData(R, f, r), this._drawForChecking = !1; - try { - for (var Q = 0, W = R.getImageData(0, 0, T, B).data; Q < W.length; Q += 4) - if (0 !== W[Q + 3]) { - P = !0; - break - } - R.restore() - } catch ($) { - xm = F, P = !1 - } - } - } - } - return P ? !0 : !1 - }, rectContains: function (J, q) { - if (this._56I[J._id]) { - var N = this._25I[J._id]; - if (N) return $k(q, N._79o()) - } - return !1 - }, reset: function () { - this.setZoom(1), this.setTranslate(0, 0) - }, handleKeyDown: function (Y) { - if (!u.isInput(Y.target)) { - var R = this, - J = R._focusData, - m = J && R._25I[J._id], - v = 0, - t = R._dataModel._datas; - if (!(J && J._enabled && J._editable && m && m.onKeyDown && m.onKeyDown(Y) === !0)) - if (9 === Y.keyCode && (J && (v = t.indexOf(J), Pf(Y) ? -1 === --v && (v = 0) : ++v === t.size() && (v = 0)), R._focusData = J = t.get(v), R.sm().setSelection(J)), Dq(Y) ? R.selectAll() : Cf(Y) && R.isResettable() && R.reset(), R.sm().isEmpty()) { - if (R._editing) return; - var $ = R.tx(), - x = R.ty(), - r = !1, - C = Pf() ? 100 : 10; - Wk(Y) && ($ -= C, r = !0), Nk(Y) && (x -= C, r = !0), _i(Y) && ($ += C, r = !0), ri(Y) && (x += C, r = !0), r && R.setTranslate($, x) - } else { - qq(Y) && R.handleDelete(Y); - var d = Pf() ? 10 : 1; - Wk(Y) && (R.moveSelection(-d, 0), R.fi({ - kind: "moveLeft" - })), Nk(Y) && (R.moveSelection(0, -d), R.fi({ - kind: "moveUp" - })), _i(Y) && (R.moveSelection(d, 0), R.fi({ - kind: "moveRight" - })), ri(Y) && (R.moveSelection(0, d), R.fi({ - kind: "moveDown" - })) - } - } - }, handleScroll: function (A, Z) { - if (Qc(A), this.isZoomable()) { - if (!this.getEditInteractor()) { - var o = this.getDataAt(A); - if (o) { - var n = ii(this.getImage(o)); - if (n && Dj(n.scrollable, o, this)) return - } - } - var L = this.lp(A); - Z > 0 ? this.scrollZoomIn(L) : 0 > Z && this.scrollZoomOut(L) - } - }, handlePinch: function (l, P, R) { - this.isZoomable() && (Math.abs(P - R) < u.pinchZoomThreshold || (P > R ? this.pinchZoomIn(l) : this.pinchZoomOut(l))) - }, checkDoubleClickOnNote: function (h, K) { - var N = this, - J = N.lp(h), - E = N.getDataUI(K), - o = E.note2Info; - return o && K.s("note2.toggleable") && cf(o.clickRect, J) ? (K.s(Mh, !K.s(Mh)), N.fi({ - kind: "toggleNote2", - event: h, - data: K - }), !0) : (o = E.noteInfo, o && K.s("note.toggleable") && cf(o.clickRect, J) ? (K.s(ke, !K.s(ke)), N.fi({ - kind: "toggleNote", - event: h, - data: K - }), !0) : !1) - }, _84o: function () { }, isNoteVisible: function () { - return this._zoom > .15 - }, isLabelVisible: function () { - return this._zoom > .15 - }, isEditVisible: function () { - return this._zoom > .15 - }, autoScroll: function (T, r) { - var h = this, - m = h.getAutoScrollZone(), - g = m / h.getZoom(), - z = m / 4, - k = h._29I, - L = h.lp(T), - y = { - x: h.tx(), - y: h.ty() - }; - return L && m > 0 && k && (L.x - k.x < g ? h.translate(z, 0) : k.x + k.width - L.x < g && h.translate(-z, 0), L.y - k.y < g ? h.translate(0, z) : k.y + k.height - L.y < g && h.translate(0, -z)), y.x = h.tx() - y.x, y.y = h.ty() - y.y, r && (r.x += y.x, r.y += y.y), y - }, getMoveMode: function (j, s) { - var L = s.s("2d.move.mode"); - return L ? L : pl["88"] ? "x" : pl["89"] ? "y" : "xy" - }, getSerializableProperties: function () { - return { - scrollBarColor: 1, - scrollBarSize: 1, - autoMakeVisible: 1, - autoHideScrollBar: 1, - editable: 1, - resettable: 1, - pannable: 1, - rectSelectable: 1, - autoScrollZone: 1, - visibleFunc: 1, - movableFunc: 1, - editableFunc: 1, - pointEditableFunc: 1, - rectEditableFunc: 1, - anchorEditableFunc: 1, - rotationEditableFunc: 1, - rectSelectBackground: 1, - rectSelectBorderColor: 1, - editPointSize: 1, - editPointBorderColor: 1, - editPointBackground: 1, - hoverDelay: 1, - dataModel: 1, - selectionModel: 1, - currentSubGraph: 1, - zoom: 1, - translateX: 1, - translateY: 1 - } - }, serializeProperty: function (s, _, k) { - var q = this; - return "currentSubGraph" === _ ? { - __i: s.getId() - } : k.serializeProperty(s, _, q) - }, deserializeProperty: function (a, c, e) { - var H = this; - if ("currentSubGraph" === c) { - var n = H.dm(), - t = n.__idMap; - return t[a.__i] - } - return e.deserializeProperty(a, c, H) - }, setDefaultCursor: function (Y, c) { - this._defaultCursor = Y, c !== !1 && this.setCursor(Y) - }, setCursor: function (V) { - "default" === V && (V = this._defaultCursor || V); - var r = this.getView().style; - r.cursor = V, r.cursor = "-webkit-" + V, r.cursor = "-moz-" + V - }, getCurrentConnectActionType: function () { - return this._currentActionType - }, setCurrentConnectActionType: function (R) { - return R === F || u.getConnectAction(null, R) ? (this._currentActionType = R, this.redraw(), !0) : !1 - }, getEditStyle: function (z) { - var S = this.getEditInteractor(); - return S ? S.getStyle(z) : Z - }, setEditStyle: function (Q, z, t) { - var c = this.getEditInteractor(); - return c ? (c.setStyle(Q, z, t), !0) : !1 - }, isConnectActionVisible: function (g) { - var A = u.getConnectAction(this); - if (!A) return !1; - var w = A.visible; - return Mf(w) && (w = w(this, g)), w - }, isInteractive: function (E) { - if (this._drawForChecking) return !1; - var U = ii(this.getImage(E)); - return U && Dj(U.interactive, E, this) ? !0 : E.s("interactive") - }, appendHTML: function (u, r) { - var A = this.getView(); - if (!(r || u && u.parentNode !== A)) return !1; - var K = u.getView && u.getView(); - if (!r && K && K.parentNode === A) return !1; - (u.getView || u.isSelfViewEvent) && (u = u.getView()); - var h = this.getEditInteractor(); - return h && h._canvas ? A.insertBefore(u, h._canvas) : this.isScrollBarVisible() ? A.insertBefore(u, this.getView().lastChild) : sn(A, u), !0 - }, _layoutHTMLImpl: function ($, O, w) { - if (arguments.length > 1) { - var D, A = this, - j = A._zoom; - if (O.getView && (D = O, O = O.getView()), O.style.position = "absolute", w) { - var Z = $.getRect(); - qp(D || O, A.tx() + Z.x * j, A.ty() + Z.y * j, Z.width * j, Z.height * j) - } else { - var h = new Np, - Z = $.getAnchorRect(), - z = $.getPosition(), - f = $.getScale(), - G = O.style; - qp(D || O, Z), h.appendTranslate(A.tx(), A.ty()), h.appendScale(j, j), h.append(new Np($.getRotation(), z.x, z.y, f.x, f.y)), Jg(G, "transform", "matrix(" + h.a.toFixed(5) + ", " + h.b.toFixed(5) + ", " + h.c.toFixed(5) + ",\n " + h.d.toFixed(5) + ", " + h.tx.toFixed(5) + ", " + h.ty.toFixed(5) + ")"), Jg(G, "transformOrigin", (-Z.x).toFixed(5) + "px " + (-Z.y).toFixed(5) + "px"), O.updateAppendMatrix = !0 - } - } else this._layoutHTML && this._layoutHTML() - }, getTextEditInfo: function (y) { - return y instanceof Lo ? { - name: "text", - accessType: "s", - isMultiline: !1 - } : void 0 - }, getState: function (j) { - var t = "state", - V = j.s(t); - if (V) return V; - var J = ii(j._image); - return J ? Dj(J[t], j, this) || null : void 0 - }, getShape: function (E) { - return E.getStyle(bl) - } - }), o.defineProperties(hg.GraphView.prototype, { - layoutHTML: { - get: function () { - return this._layoutHTMLImplBind || (this._layoutHTMLImplBind = this._layoutHTMLImpl.bind(this)), this._layoutHTMLImplBind - }, set: function (a) { - this._layoutHTML = a - } - } - }); - var Tp = function (B, H) { - var M = this; - M.gv = B, M.s = function (b) { - return H.getStyle(b) - }, M._data = H, M._87I = new xr - }; - yc(Tp, o, { - _6I: F, - ms_icons: 1, - _84o: function () { }, dispose: function () { }, isShadowed: function () { - return this.s("shadow") || this.gv.isSelected(this._data) && "shadow" === this.s("select.type") - }, getSelectWidth: function () { - var _ = this, - h = _.gv.isSelected(_._data); - return !h || _.isShadowed() ? 0 : _.gv.getSelectWidth(_._data) - }, getSelectColor: function () { - return this.gv.getSelectColor(this._data) - }, getBodyColor: function (o) { - var X = this._data, - q = this.gv.getBodyColor(X); - return q ? q : o ? X.getStyle(o) : F - }, _2Q: function (o) { - return this.s(o) - }, _1Q: function (O, S, k, F) { - var Y = this.s, - A = Y("2d.gray"), - $ = Y(S + ".dash.color"); - if (A && ($ = u.toGrayColor($)), O.strokeStyle = $, O.lineWidth = k, O.stroke(), Y(S + ".dash.3d")) { - var w = Y(S + ".dash.3d.color"); - fr(O, $, A ? u.toGrayColor(w) : w, k, this.gv._zoom, Y(S + ".dash.3d.accuracy")) - } - _l(O, F) - }, invalidate: function () { - this._6I = F - }, _79o: function () { - var J = this; - if (!J._6I) { - var u = J._data, - p = J.gv; - J.labelInfo = J.label2Info = J.noteInfo = J.note2Info = J._38o = F, J._87I.clear(), J.interactiveInfo = p.isInteractive(u) ? {} : F, J._3O(), J._55O = p.isEditable(u) ? { - _42O: p.isRectEditable(u), - _43O: p.isPointEditable(u), - _56O: p.isRotationEditable(u) - } : F, J._6I = J._81o() - } - return J._6I - }, _3O: function () { }, getPosition: function () { - return nl - }, _68o: function (b, A) { - b && this._87I.add(Rj(b, A)) - }, _81o: function () { - var E = this, - i = E.s; - E._24O(Bg, "getLabel"), E._24O(Qk, "getLabel2"), E._26O(Rm, "getNote"), E._26O(Vk, "getNote2"), E._15O(), E._55O && E._48O(); - var C; - if (E._87I.each(function (V) { - C = ni(C, V) - }), C) { - var I = E.isShadowed(), - w = i("shadow2"), - X = Pm(C); - w ? (X.x += i("shadow2.offset.x"), X.y += i("shadow2.offset.y"), vn(X, i("shadow2.blur"))) : I && (X.x += i("shadow.offset.x"), X.y += i("shadow.offset.y"), vn(X, i("shadow.blur"))), C = ni(C, X) - } - return E._87I.clear(), C - }, _42: function (v) { - var e = this, - z = e._data, - I = e.gv, - O = e.s, - V = O("opacity"), - d = this.isShadowed(), - q = O("shadow2"); - if (d || q) { - var Z = v.shadowOffsetX, - D = v.shadowOffsetY, - b = v.shadowBlur, - r = v.shadowColor, - j = I.getZoom(), - W = d ? "shadow" : "shadow2"; - v.shadowOffsetX = O(W + ".offset.x") * j, v.shadowOffsetY = O(W + ".offset.y") * j, v.shadowBlur = O(W + ".blur") * j, v.shadowColor = d ? e.getSelectColor() : O(W + ".color") - } - if (V != F) { - var S = v.globalAlpha; - v.globalAlpha = V - } - e._80o(v), I.isLabelVisible(z) && ((!I._drawForChecking || O("label.selectable")) && vp(v, e.labelInfo), (!I._drawForChecking || O("label2.selectable")) && vp(v, e.label2Info)), I.isNoteVisible(z) && ($q(v, e.noteInfo), $q(v, e.note2Info)), e._99O(v), V != F && (v.globalAlpha = S), (d || q) && (v.shadowOffsetX = Z, v.shadowOffsetY = D, v.shadowBlur = b, v.shadowColor = r) - }, _80o: function () { }, _47O: function () { }, _24O: function (C, f) { - var r = this, - e = r._data, - g = r.gv, - p = r.s, - Z = g[f](e); - if (Z != F) { - var T = p(C + ".scale"), - S = p(C + ".max"), - Q = p(C + ".position"), - c = r[C + "Info"] = { - label: Z, - scale: T, - color: g[f + "Color"](e), - font: p(C + ".font"), - opacity: p(C + ".opacity"), - align: p(C + ".align"), - rotation: r.getRotation(p(C + ".rotation"), !1, Q), - background: g[f + "Background"](e) - }, - _ = qr(c, Z); - S > 0 && S < _.width && (c.labelWidth = _.width, _.width = S), 1 !== T && (_.width *= T, _.height *= T); - var t = r.getPosition(Q, p(C + ".offset.x"), p(C + ".offset.y"), _, p(C + ".position.fixed")); - if (_.x = t.x - _.width / 2, _.y = t.y - _.height / 2, r._68o(c.rect = _, c.rotation), 1 !== T) { - var h = _.width / T, - P = _.height / T; - c.rect = { - x: t.x - h / 2, - y: t.y - P / 2, - width: h, - height: P - } - } - } - }, _26O: function (A, n) { - var N = this, - z = N.gv, - X = N._data, - t = N.s, - c = z[n](X); - if (c != F) { - var i, L, r = t(A + ".scale"), - V = N[A + "Info"] = { - note: c, - scale: r, - data: X, - view: z, - expanded: t(A + ".expanded"), - font: t(A + ".font"), - color: t(A + ".color"), - opacity: t(A + ".opacity"), - align: t(A + ".align"), - icon: t(A + ".icon"), - backgroundImage: t(A + ".backgroundImage"), - borderWidth: t(A + ".border.width"), - borderColor: t(A + ".border.color"), - background: z[n + "Background"](X) - }, - R = N.getPosition(t(A + ".position"), t(A + ".offset.x"), t(A + ".offset.y")), - G = R.x, - M = R.y; - if (V.expanded) { - var b, Y = t(A + ".max"), - j = t(A + ".backgroundImage"); - j ? (j = ii(j), b = { - width: xc(j, X), - height: oo(j, X) - }) : b = qr(V, c), b.width += 6, b.height += 2, Y > 0 && Y < b.width && (V.labelWidth = b.width, b.width = Y), i = b.width, L = b.height + 8, V.clickRect = { - x: G - i * r / 2, - y: M - L * r, - width: i * r, - height: L * r * b.height / L - } - } else { - var I = t(A + ".icon"); - I ? (I = ii(I), i = xc(I, X), L = oo(I, X)) : (i = 12, L = 18), V.clickRect = { - x: G - i * r / 2, - y: M - L * r, - width: i * r, - height: L * r - } - } - V.rect = { - x: G - i / 2, - y: M - L * r / 2 - L / 2, - width: i, - height: L - }; - var C = s(V.borderWidth / 2) * r; - N._68o({ - x: G - i * r / 2 - C, - y: M - L * r - C, - width: i * r + 2 * C, - height: L * r + 2 * C - }) - } - }, _48O: function () { }, _99O: function (a) { - var o = this, - B = o._38o; - if (B) { - var m = o.gv, - M = o._data, - t = B.icons, - W = o.interactiveInfo; - W && (W._38o = {}); - for (var e in t) { - var d = t[e], - f = B.rects[e]; - if (f) { - W && (W._38o[e] = []); - var j = Dj(d.opacity, M, m), - A = Dj(d.names, M, m), - $ = A ? A.length : 0, - w = f.rotation; - if (j != F) { - var E = a.globalAlpha; - a.globalAlpha *= j - } - for (var q = 0; $ > q; q++) { - var z = A[q], - x = ii(z), - N = f[q]; - if (w) { - var c = N.x + N.width / 2, - H = N.y + N.height / 2; - a.save(), wh(a, c, H), jc(a, w), wh(a, -c, -H) - } - W && W._38o[e].push(a.interactiveInfo = { - compInfos: [], - matrix: w ? new Np(w, c, H).appendTranslate(-c, -H) : new Np - }), qk(a, x, Dj(d.stretch, M, m), N.x, N.y, N.width, N.height, o._data, o.gv), a.interactiveInfo = F, w && a.restore() - } - j != F && (a.globalAlpha = E) - } - } - } - } - }); - var Af = function (A, s) { - fi(Af, this, [A, s]) - }; - yc(Af, Tp, { - _checkEmptyRect: !0, - _40O: function (U, I) { - var V = this, - n = V.s, - _ = U.rect; - (U.borderColor = V.gv.getBorderColor(V._data)) && (U.borderType = n("border.type"), U.borderWidth = n("border.width"), U.borderPadding = n("border.padding"), I = q(I, U.borderPadding + U.borderWidth / 2)); - var e = V._data.getScale(), - G = q(1, q(X(e.x), X(e.y))); - if (U.selectWidth = V.getSelectWidth()) { - var D = V.gv._zoom; - U.selectType = n("select.type"), U._97o = V.getSelectColor(), U.selectPadding = n("select.padding"), I = q(I, (U.selectPadding + U.selectWidth / 2 / D) / G) - } - I > 0 && (I *= G, _ = Pm(_), vn(_, I)), V._68o(_) - }, _39O: function (W, I) { - var J, u = this, - A = I.rect; - if (I.borderWidth > 0 && (J = I.borderPadding, W.strokeStyle = I.borderColor, W.lineWidth = I.borderWidth, Ej(W, I.borderType, { - x: A.x - J, - y: A.y - J, - width: A.width + 2 * J, - height: A.height + 2 * J - }), W.stroke()), I.selectWidth > 0) { - var z = u.gv._zoom; - if (J = I.selectPadding, W.strokeStyle = I._97o, W.lineWidth = I.selectWidth / z, I.rotation != F) { - W.save(), W.translate(I.position.x, I.position.y), W.rotate(I.rotation); - var Q = u._data, - k = Q.getWidth(), - O = Q.getHeight(), - m = I.scale, - h = I.anchor; - A = { - x: m.x * -k * h.x, - y: m.y * -O * h.y, - width: m.x * k, - height: m.y * O - } - } - Ej(W, I.selectType, { - x: A.x - J, - y: A.y - J, - width: A.width + 2 * J, - height: A.height + 2 * J - }), I.rotation != F && W.restore(), W.stroke() - } - }, dispose: function () { - var X = this, - u = X._htmlView; - Af.superClass._3O.call(X), u && (u.onHTMLRemoved && u.onHTMLRemoved(), yj(u)) - }, _3O: function () { - var N = this, - O = N.s, - k = N._data, - P = N.gv, - i = P.getShape(k), - t = N.getBodyColor(), - n = O("shape.border.color"), - T = N._83o = i ? { - shape: i, - _53o: N.getBodyColor("shape.background"), - _27Q: ii(O("shape.repeat.image"), t), - shapeGradientPack: O("shape.gradient.pack"), - _54o: O("shape.border.width"), - _55o: n, - shapeBorderRepeatImage: ii(O("shape.border.repeat.image"), n), - _56o: O("shape.border.3d"), - _57o: O("shape.border.3d.color"), - _58o: O("shape.border.3d.accuracy"), - shapeGradient: O("shape.gradient"), - _59o: O("shape.gradient.color"), - _60o: O("shape.border.pattern"), - _61o: O("shape.border.cap"), - _62o: O("shape.border.join"), - shapeForeground: O("shape.foreground"), - bodyColor: t, - gray: O("2d.gray") - } : { - img: ii(P.getImage(k), t), - bodyColor: t, - gray: O("2d.gray"), - stretch: O("image.stretch") - }; - if (_ && !Ad); - else { - var y, d = T.img; - d && d.renderHTML ? (N._htmlInfo && N._htmlInfo.img !== d && (N._htmlInfo = F), N._htmlInfo || (N._htmlInfo = { - img: d, - cache: {} - }), y = d.renderHTML(k, P, N._htmlInfo.cache)) : N._htmlInfo = F, N._htmlView && N._htmlView !== y && (N._htmlView.onHTMLRemoved && N._htmlView.onHTMLRemoved(), yj(N._htmlView.getView ? N._htmlView.getView() : N._htmlView)), (N._htmlView = y) && P.appendHTML(y) && (y.onHTMLAddedSync && y.onHTMLAddedSync(), y.onHTMLAdded && $e(y.onHTMLAdded)), T.rect = k.getRect(), T.position = k.p(), T.scale = k.getScale(), T.anchor = k.getAnchor(), T.rotation = k.getRotation(), i === Tq && (T._63o = O("shape.depth")); - var I = 0; - if (i) I = Xb(F, T._54o / 2, T._62o), N.s("shape.dash") && (I = q(I, (N.s("shape.dash.width") || T._54o) / 2)); - else if (d && d.boundExtend) - if (I = Dj(d.boundExtend, k, P), d.boundExtendAbsolute) { - var S = k.getScale(); - I /= P._zoom * q(1, q(X(S.x), X(S.y))) - } else if (!Dj(d.fitSize, k, P)) { - var A = Dj(d.width, k, P), - E = Dj(d.height, k, P); - I *= q(k.getWidth() / A, k.getHeight() / E) - } - N._40O(T, I); - var w = O("clip.percentage"); - if (1 > w && (0 > w && (w = 0), T.clipRect = Wh(k.getAnchorRect(), O("clip.direction"), w)), i) { - var C = O("shape.fill.clip.percentage"); - 1 > C && (0 > C && (C = 0), T.shapeClipRect = Wh(k.getAnchorRect(), O("shape.fill.clip.direction"), C)); - var $ = O("shape.foreground.clip.percentage"); - 1 > $ && (0 > $ && ($ = 0), T.shapeForegroundClipRect = Wh(k.getAnchorRect(), O("shape.foreground.clip.direction"), $)) - } - } - }, getPosition: function (A, s, b, w) { - var a = Re(A, this._83o.rect, w); - return a.x += s, a.y += b, a - }, _80o: function (c) { - var P = this, - E = P.s, - S = P.gv, - M = P._data, - l = P._83o, - j = l.rect, - v = l.position, - U = l.rotation, - K = l.anchor, - X = l.scale, - e = l.shape, - O = l.clipRect; - if (!P._checkEmptyRect || j.width > 0 && j.height > 0) { - var T = M.getSize(); - if (T.x = -T.width * K.x, T.y = -T.height * K.y, c.save(), wh(c, v.x, v.y), jc(c, U), ec(c, X.x, X.y), O && (c.beginPath(), c.rect(O.x, O.y, O.width, O.height), c.clip()), S._drawForChecking && l.img && Dj(l.img.pixelPerfect, M, S) === !1) fl(c, T.x, T.y, T.width, T.height, "#888888"); - else if (P.freeDraw) P.freeDraw(c, T, l); - else if (e) { - var C, o, G, t, N = l._60o, - w = ls(c, N), - Z = l._27Q, - W = l._54o, - s = l.shapeGradientPack, - m = l.gray, - n = c.lineJoin, - q = c.lineCap, - H = function (R) { - return m ? u.toGrayColor(R) : R - }; - "roundRect" === e ? C = E("shape.corner.radius") : "polygon" === e ? C = E("shape.polygon.side") : "arc" === e && (C = E("shape.arc.from"), o = E("shape.arc.to"), G = E("shape.arc.close"), t = E("shape.arc.oval")), c.lineJoin = l._62o, c.lineCap = l._61o; - var x = H(l._53o); - if (x || Z || s) { - var i = l.shapeClipRect; - i && (c.save(), c.beginPath(), c.rect(i.x, i.y, i.width, i.height), c.clip()), Ej(c, e, T, C, o, G, t), s ? uq(c, s, function (j) { - return nm(j, l.bodyColor) - }) : Z ? fg(c, Z, H(l.bodyColor), null, M, S) : Ge(c, x, l.shapeGradient, H(l._59o), T), c.fill(), s && c.restore(), i && c.restore(), c !== w && Ej(w, e, T, C, o, G, t) - } else Ej(w, e, T, C, o, G, t); - var J = l.shapeForeground; - if (J) { - c.save(); - var r = l.shapeForegroundClipRect; - r && (c.beginPath(), c.rect(r.x, r.y, r.width, r.height), c.clip()), Ej(c, e, T, C, o, G, t), Ge(c, J, E("shape.foreground.gradient"), H(E("shape.foreground.gradient.color")), T), c.fill(), c.restore() - } - if (W > 0) { - var L = E("shape.border.width.absolute"); - L && (c.save(), c.setTransform(1, 0, 0, 1, 0, 0)), c.lineWidth = W; - var g = H(l._55o); - l.shapeBorderRepeatImage ? qb(c, l.shapeBorderRepeatImage, g, null, M, S) : c.strokeStyle = g, c.stroke(), L && c.restore(), l._56o && fr(c, g, H(l._57o), W, S._zoom, l._58o) - } - if (_l(c, N), E("shape.dash")) { - var D = E("shape.dash.width") || W; - if (D > 0) { - N = E("shape.dash.pattern"); - var w = ls(c, N, P._2Q("shape.dash.offset")); - w !== c && Ej(w, e, T, C, o, G, t), P._1Q(c, "shape", D, N) - } - } - Wq(c, x, l._63o, T), c.lineJoin = n, c.lineCap = q - } else { - var p = P.interactiveInfo; - p && (c.interactiveInfo = p.bodyInfo = { - compInfos: [], - matrix: new Np(U, v.x, v.y, X.x, X.y) - }), l.gray && (c.compGray = !0); - var f = l.img; - f && f.cacheRule != F && (f = lc(c, f, l.stretch, T.width, T.height, M, S, l.bodyColor)), qk(c, f, l.stretch, T.x, T.y, T.width, T.height, M, S, l.bodyColor), c.compGray = !1, c.interactiveInfo = F - } - c.restore() - } - P._39O(c, l) - }, _48O: function () { }, _47O: function () { } - }); - var wn = function (A, O) { - fi(wn, this, [A, O]) - }, - Fl = function (A, v, C, W) { - var Y = En(A, v); - return C = W ? V(C, Y) : cr(C, Y), Y ? C /= Y : C = 0, { - x: A.x + (v.x - A.x) * C, - y: A.y + (v.y - A.y) * C - } - }; - yc(wn, Tp, { - _3O: function () { - var y, X = this, - g = X._data, - k = X.gv, - i = X.s, - R = i(ej), - r = g.isLooped(), - _ = i("edge.width"), - s = X.getBodyColor("edge.color"), - w = i("edge.center"), - A = i("edge.offset"), - C = k.getBorderColor(g), - I = C ? i("border.width") : 0, - T = X.getSelectWidth(), - p = g._40I, - J = g._41I, - K = X._78o = p && J ? { - looped: r, - type: R, - width: _, - center: w, - color: s, - repeatImage: ii(i("edge.repeat.image"), s), - borderColor: C, - borderWidth: I, - _97o: T ? X.getSelectColor() : F, - selectWidth: T, - pattern: i("edge.pattern"), - cap: i("edge.cap"), - join: i("edge.join"), - is3d: i("edge.3d"), - _67o: i("edge.3d.color"), - _66o: i("edge.3d.accuracy"), - gray: i("2d.gray") - } : F; - if (K) { - var d = u.getEdgeType(R); - if (d) { - var P = d(g, Ml(X, k, g, r, R), k, X._19Q); - P.points && P.points.size() > 1 ? (K.edgeTypeInfo = P, y = ms(K.edgeTypeInfo.points)) : P[Ph] && P.rect && (K.edgeTypeInfo = P, y = P.rect) - } else { - var L = i("edge.source.anchor.x"), - N = i("edge.source.anchor.y"), - h = i("edge.target.anchor.x"), - v = i("edge.target.anchor.y"), - Q = Eo(k, g, "source"), - f = Eo(k, g, "target"); - if (R === _b) { - var n = K.points = i(Ei) || Yh, - j = n.size(); - K.segments = i("edge.segments"); - var m = L !== Z || N !== Z || Bk(p), - B = h !== Z || v !== Z || Bk(J); - if (!w) - if (A) m || (Q = Fl(Q, j ? n.get(0) : f, A, j)), B || (f = Fl(f, j ? n.get(j - 1) : Q, A, j)); - else { - var o; - m || (o = Rl(Q, j ? n.get(0) : f, Rp(k, p)), o && (Q = { - x: o[0], - y: o[1] - })), B || (o = Rl(j ? n.get(j - 1) : Q, f, Rp(k, J)), o && (f = { - x: o[0], - y: o[1] - })) - } - y = ni(ms(K.points), ms(Q, f)) - } else { - var e = Ml(X, k, g, r, R); - if (X._19Q || (e = -e), r) Q = Pm(Q), Q.x = k.getNodeRect(p).x, K.radius = e, y = { - x: Q.x - e, - y: Q.y - e, - width: 2 * e, - height: 2 * e - }; - else { - var b = En(Q, f), - G = cr(A, b), - E = { - x: G, - y: e - }, - U = { - x: b - G, - y: e - }, - V = D(f.y - Q.y, f.x - Q.x), - H = K.mat = new In(V); - if (K.orienAngle = V, K.angle = f.x < Q.x ? V + W : V, K.rect = { - x: E.x, - y: E.y, - width: U.x - E.x, - height: 0 - }, K.origin = Q, E = H.tf(E), E.x += Q.x, E.y += Q.y, U = H.tf(U), U.x += Q.x, U.y += Q.y, w) { - var $ = { - x: b, - y: 0 - }; - $ = H.tf($), $.x += Q.x, $.y += Q.y, y = ms([Q, E, U, $]), K.c1 = Q, K.c2 = $ - } else y = ms(E, U); - Q = E, f = U - } - } - K.sourcePoint = Q, K.targetPoint = f, g._lastSourcePoint = Q, g._lastTargetPoint = f - } - var S = 0; - i("edge.dash") && (S = i("edge.dash.width") || _); - var l = "square" === K.cap ? .71 : .5; - Xb(y, q(S * l, _ * l + I + T), K.join), X._68o(y) - } - }, getRotation: function (h, q, R) { - h = h || 0; - var B = this._78o; - if (B) { - var e, W = B.angle, - E = B.points, - u = B.edgeTypeInfo; - if (W != F) return q ? B.orienAngle + h : W + h; - if (u && u[Ph]) return u.getRotation ? u.getRotation(this, h, q, R) : 0; - if (u && u.points) { - var f = u.points; - return e = f.size(), nk[R] ? e && 0 === e % 2 ? Mn(f.get(e / 2 - 1), f.get(e / 2), q, h) : h : Ym[R] ? Mn(f.get(0), f.get(1), q, h) : Mn(f.get(e - 2), f.get(e - 1), q, h) - } - if (E) return e = E.size(), nk[R] ? e && 0 === e % 2 ? Mn(E.get(e / 2 - 1), E.get(e / 2), q, h) : h : Ym[R] ? Mn(B.sourcePoint, e ? E.get(0) : B.targetPoint, q, h) : Mn(e ? E.get(e - 1) : B.sourcePoint, B.targetPoint, q, h) - } - return h - }, getPosition: function (o, T, l, P, c) { - var C = this._78o; - if (C) { - var t, a = C.type, - e = C.points, - f = C.edgeTypeInfo, - H = C.sourcePoint, - K = C.targetPoint; - if (!a) return C.looped ? { - x: H.x - C.radius + T, - y: H.y + l - } : (c && H && K && (H.x > K.x || H.x === K.x && H.y > K.y) && (o = cg[o], l = -l), t = Re(o, C.rect, P), t.x += T, t.y += l, t = C.mat.tf(t), t.x += C.origin.x, t.y += C.origin.y, t); - if (f && f[Ph]) return f.getPosition ? f.getPosition(this, o, T, l, P, c) : { - x: (H.x + K.x) / 2, - y: (H.y + K.y) / 2 - }; - if (e) { - var t, I = e.size(); - if (nk[o]) { - if (I) { - var h = I % 2; - if (0 === h) return Md(e.get(I / 2 - 1), e.get(I / 2), o, T, l, P, c); - t = e.get((I - h) / 2) - } else t = { - x: (H.x + K.x) / 2, - y: (H.y + K.y) / 2 - }; - return t = Re(o, { - x: t.x, - y: t.y, - width: 0, - height: 0 - }, P), t.x += T, t.y += l, t - } - return Ym[o] ? Md(H, I ? e.get(0) : K, o, T, l, P, c) : Md(I ? e.get(I - 1) : H, K, o, T, l, P, c) - } - if (f) { - var $ = f.points, - I = $.size(); - if (nk[o]) { - var h = I % 2; - return 0 === h ? Md($.get(I / 2 - 1), $.get(I / 2), o, T, l, P, c) : (t = $.get((I - h) / 2), t = Re(o, { - x: t.x, - y: t.y, - width: 0, - height: 0 - }, P), t.x += T, t.y += l, t) - } - return Ym[o] ? Md($.get(0), $.get(1), o, T, l, P, c) : Md($.get(I - 2), $.get(I - 1), o, T, l, P, c) - } - } - return nl - }, _42: function (V) { - this._78o && wn.superClass._42.call(this, V) - }, drawPath: function (c, J) { - c.beginPath(); - var y = J.type, - G = J.points, - I = J.segments, - v = J.edgeTypeInfo; - if (!y || G) { - var Z = J.sourcePoint, - p = Z.x, - j = Z.y, - F = J.targetPoint, - R = F.x, - S = F.y; - if (y) - if (I) { - var W = new xr({ - x: p, - y: j - }); - W.addAll(G), W.add({ - x: R, - y: S - }), en(c, W, I) - } else c.moveTo(p, j), G.each(function (V) { - c.lineTo(V.x, V.y) - }), c.lineTo(R, S); - else J.looped ? c.arc(p, j, J.radius, 0, $, !0) : J.center ? (c.moveTo(J.c1.x, J.c1.y), c.lineTo(p, j), c.lineTo(R, S), c.lineTo(J.c2.x, J.c2.y)) : (c.moveTo(p, j), c.lineTo(R, S)) - } else v && (v.points ? en(c, v.points, v.segments) : v[Ph] && v[Ph](c, v)) - }, _80o: function (P) { - var z = this, - X = z.s, - I = z._78o, - C = I.width, - g = I.selectWidth, - k = I.borderWidth, - D = I.repeatImage, - Q = P.lineJoin, - T = P.lineCap, - R = I.gray, - U = I.pattern; - P.lineJoin = I.join, P.lineCap = I.cap, z.drawPath(ls(P, U), I); - var A = X("edge.width.absolute"); - A && (P.save(), P.setTransform(1, 0, 0, 1, 0, 0)), g && (P.strokeStyle = I._97o, P.lineWidth = C + 2 * (k + g), P.stroke()), k && (P.strokeStyle = R ? u.toGrayColor(I.borderColor) : I.borderColor, P.lineWidth = C + 2 * k, P.stroke()); - var K = R ? u.toGrayColor(I.color) : I.color; - if (D ? qb(P, D, K, null, z._data, z.gv) : P.strokeStyle = K, P.lineWidth = C, P.stroke(), I.is3d) { - var r = R ? u.toGrayColor(I._67o) : I._67o; - fr(P, K, r, C, z.gv._zoom, I._66o) - } - if (_l(P, U), X("edge.dash")) { - U = X("edge.dash.pattern"); - var f = ls(P, U, z._2Q("edge.dash.offset")); - f !== P && z.drawPath(f, I), z._1Q(P, "edge", X("edge.dash.width") || C, U) - } - A && P.restore(), P.lineJoin = Q, P.lineCap = T - }, _48O: function () { }, _47O: function () { } - }); - var Fn = function (n, q) { - fi(Fn, this, [n, q]) - }; - yc(Fn, Af, { - _3O: function () { - var n, e, Z = this, - E = Z.s, - I = Z._data, - i = Z.gv; - if (Z._88I = F, I.isExpanded() && I.eachChild(function (d) { - if (Fq(d)) { - var j = i.getBoundsForGroup(d); - j && (e || (e = []), e.push(j), n = ni(n, j)) - } - }), n) { - var L = i.getLabel(I), - V = E("group.type"), - R = E("group.border.width") || 0, - c = E("group.border.width.absolute"), - B = R / 2; - c && (R /= i._zoom), n = Dk(V, e, n), ld(n, I, "group.padding", 1), vn(n, R); - var r = Z._88I = { - type: V, - rect: n, - _64o: n - }; - if (!V && L != F) { - var o, S = Z.labelInfo = { - label: L, - color: E("group.title.color"), - font: E("group.title.font"), - align: E("group.title.align") - }, - J = qr(S, L), - v = J.width + R, - Q = J.height + R, - w = E("group.title.align"), - l = E("group.title.orientation"); - if (l === $c || l === Kd ? (n.height += R, v > n.width && (n.width = v)) : (l === nq || l === fm) && (n.width += R, v > n.height && (n.height = v)), o = w === nq ? n.x : w === fm ? n.x + n.width - v : n.x + n.width / 2 - v / 2, l === Kd) r.titleRect = { - x: n.x, - y: n.y + n.height, - width: n.width, - height: Q - }, r.rect = { - x: n.x, - y: n.y, - width: n.width, - height: n.height + Q - }, S.rect = { - x: o, - y: n.y + n.height, - width: v, - height: Q - }; - else if (l === nq) { - var q = r.titleRect = { - x: n.x - Q, - y: n.y, - width: Q, - height: n.height - }; - r.rect = { - x: n.x - Q, - y: n.y, - width: n.width + Q, - height: n.height - }, S.rect = { - x: q.x + Q / 2 - n.height / 2, - y: q.y + n.height / 2 - Q / 2, - width: n.height, - height: Q - }, S.rotation = -Math.PI / 2 - } else if (l === fm) { - var q = r.titleRect = { - x: n.x + n.width, - y: n.y, - width: Q, - height: n.height - }; - r.rect = { - x: n.x, - y: n.y, - width: n.width + Q, - height: n.height - }, S.rect = { - x: q.x + Q / 2 - n.height / 2, - y: q.y + n.height / 2 - Q / 2, - width: n.height, - height: Q - }, S.rotation = Math.PI / 2 - } else r.titleRect = { - x: n.x, - y: n.y - Q, - width: n.width, - height: Q - }, r.rect = { - x: n.x, - y: n.y - Q, - width: n.width, - height: n.height + Q - }, S.rect = { - x: o, - y: n.y - Q - B, - width: v, - height: Q + R - } - } - Z._40O(r, E("group.border.width") / 2) - } else Fn.superClass._3O.call(Z) - }, getPosition: function (J, $, O, k) { - var W = this._88I; - if (W) { - var E = Re(J, W.rect, k); - return E.x += $, E.y += O, E - } - return Fn.superClass.getPosition.apply(this, arguments) - }, _24O: function (T, R) { - var Y = this._88I; - (!Y || Y.type || "label2" === T) && Fn.superClass._24O.call(this, T, R) - }, _80o: function (v) { - var P = this, - K = P._88I; - if (K) { - var I = P._data, - Q = P.s, - U = P.gv, - M = K.type, - t = K.rect, - m = K._64o, - F = K.titleRect, - o = P.getBodyColor(), - S = ii(Q("group.image"), o), - J = Q("group.image.stretch"), - i = P.getBodyColor("group.background"), - V = ii(Q("group.repeat.image"), o), - L = Q("group.gradient.pack"), - c = Q("group.gradient"), - N = Q("group.gradient.color"), - g = Q("group.border.width"), - l = Q("group.border.color"), - d = Q("group.border.pattern"), - f = Q("group.title.orientation"), - T = Q("group.depth"), - q = Q("group.border.radius"), - k = Q("group.border.join"), - r = Q("group.border.cap"), - B = Q("group.border.width.absolute"); - B && (g /= U._zoom); - var y = l, - A = Q("group.border.repeat.image"); - if (A && (A = ii(A, l)) && (y = am(v, A, l, null, I, U)), M) { - var R = v.lineJoin, - z = v.lineCap; - if (v.lineJoin = k, v.lineCap = r, S) { - if (v.save(), Ej(v, M, t, q), v.clip(), qk(v, S, J, t.x, t.y, t.width, t.height, I, U, o), v.restore(), g > 0) { - var X = ls(v, d); - Ej(X, M, t, q), v.lineWidth = g, v.strokeStyle = y, v.stroke(), _l(v, d) - } - } else { - var X = ls(v, d); - i || V || L ? (Ej(v, M, t, q), L ? uq(v, L, function (K) { - return nm(K, o) - }) : V ? fg(v, V, o, null, I, U) : Ge(v, i, c, N, t), v.fill(), L && v.restore(), v !== X && Ej(X, M, t, q)) : Ej(X, M, t, q), g > 0 && (v.lineWidth = g, v.strokeStyle = y, v.stroke()), _l(v, d), M === Tq && Wq(v, i, T, t) - } - v.lineJoin = R, v.lineCap = z - } else { - var D = Q("group.title.background"); - if ((!q || 0 > q) && (q = 0), S) qk(v, S, J, m.x, m.y, m.width, m.height, I, U, P.getBodyColor()); - else if (i || V) - if (V ? fg(v, V, o, null, I, U) : Ge(v, i, c, N, m), 0 === g) Ej(v, Tq, m), v.fill(), Wq(v, i, T, m); - else { - switch (v.beginPath(), f) { - case Kd: - pg(v, m.x, m.y, m.width, m.height, q, q, 0, 0); - break; - case nq: - pg(v, m.x, m.y, m.width, m.height, 0, q, 0, q); - break; - case fm: - pg(v, m.x, m.y, m.width, m.height, q, 0, q, 0); - break; - case $c: - pg(v, m.x, m.y, m.width, m.height, 0, 0, q, q) - } - v.fill() - } - if (F && D) - if (0 === g) fl(v, F.x, F.y, F.width, F.height, D), Wq(v, D, T, F); - else { - switch (v.beginPath(), v.fillStyle = D, f) { - case Kd: - pg(v, F.x, F.y, F.width, F.height, 0, 0, q, q); - break; - case nq: - pg(v, F.x, F.y, F.width, F.height, q, 0, q, 0); - break; - case fm: - pg(v, F.x, F.y, F.width, F.height, 0, q, 0, q); - break; - case $c: - pg(v, F.x, F.y, F.width, F.height, q, q, 0, 0) - } - v.fill() - } - if (g > 0) { - var X = ls(v, d); - if (Ej(X, "roundRect", t, q), v.save(), v.lineWidth = g, v.strokeStyle = y, v.lineJoin = k, v.lineCap = r, v.closePath(), v.stroke(), F && Q("group.splitLine")) { - var h = F.x, - e = F.y, - u = F.width, - p = F.height; - v.beginPath(), f === Kd ? (v.moveTo(h, e), v.lineTo(h + u, e)) : f === nq ? (v.moveTo(h + u, e), v.lineTo(h + u, e + p)) : f === fm ? (v.moveTo(h, e), v.lineTo(h, e + p)) : (v.moveTo(h, e + p), v.lineTo(h + u, e + p)) - } - v.stroke(), v.restore(), _l(X, d) - } - } - P._39O(v, K) - } else Fn.superClass._80o.call(P, v) - } - }); - var Ul = function (d, R) { - fi(Ul, this, [d, R]) - }; - yc(Ul, Af, { - _80o: function (b) { - this._39O(b, this._83o) - } - }); - var Xp = function (A, w) { - fi(Xp, this, [A, w]) - }; - yc(Xp, Af, { - _3O: function () { - var g = this, - v = g._data, - V = g.s, - A = g.gv, - p = v.getPoints(), - C = A.getBorderColor(v), - G = C ? V("border.width") : 0, - k = g.getSelectWidth(), - S = V("shape.border.width"), - B = v.getRect(), - D = v.getAnchorRect(), - u = A.getBodyColor(v), - P = V("shape.border.color"), - E = g._99o = p.isEmpty() ? F : { - rect: B, - rotation: v.getRotation(), - fillRule: V("shape.fill.rule"), - scale: v.getScale(), - position: v.p(), - points: p, - segments: v.getSegments(), - bodyColor: u, - borderColor: C, - borderWidth: G, - _94o: V("shape.border.3d"), - _95o: V("shape.border.3d.color"), - _96o: V("shape.border.3d.accuracy"), - _97o: k ? g.getSelectColor() : F, - selectWidth: k, - _53o: V("shape.background"), - _27Q: ii(V("shape.repeat.image"), u), - shapeGradientPack: V("shape.gradient.pack"), - _54o: S, - _55o: P, - shapeBorderRepeatImage: ii(V("shape.border.repeat.image"), P), - shapeGradient: V("shape.gradient"), - _59o: V("shape.gradient.color"), - _60o: V("shape.border.pattern"), - _61o: V("shape.border.cap"), - _62o: V("shape.border.join"), - shapeForeground: V("shape.foreground"), - gray: V("2d.gray") - }; - if (E) { - D.x += E.position.x, D.y += E.position.y, E.gradientRect = D; - var I = v.getScale(), - Z = q(1, q(X(I.x), X(I.y))); - V("shape.dash") && V("shape.dash.width") > S && (S = V("shape.dash.width")); - var Y, n = V("shape.border.width.absolute"); - Y = n ? (S + G + k) / g.gv._zoom / Z : S * ("square" === E._61o ? .71 : .5) + G + k / g.gv._zoom / Z, Y && (Y *= Z, B = Pm(B), Xb(B, Y, E._62o)), g._68o(B); - var t = V("clip.percentage"); - 1 > t && (0 > t && (t = 0), E.clipRect = Wh(v.getAnchorRect(), V("clip.direction"), t)); - var M = V("shape.fill.clip.percentage"); - 1 > M && (0 > M && (M = 0), E.shapeClipRect = Wh(v.getAnchorRect(), V("shape.fill.clip.direction"), M)); - var J = V("shape.foreground.clip.percentage"); - 1 > J && (0 > J && (J = 0), E.shapeForegroundClipRect = Wh(v.getAnchorRect(), V("shape.foreground.clip.direction"), J)) - } - }, getPosition: function (l, m, s, t) { - var L = this._99o; - if (L) { - var Q = Re(l, L.rect, t); - return Q.x += m, Q.y += s, Q - } - return nl - }, _42: function (I) { - this._99o && Xp.superClass._42.call(this, I) - }, _80o: function (l) { - var a, I = this, - F = I.s, - R = I._99o, - J = R.position, - B = R.scale, - Q = R.rotation, - D = R.borderWidth, - s = R.selectWidth / I.gv._zoom, - v = R._27Q, - d = R.shapeGradientPack, - N = R._54o, - w = R.clipRect, - Z = R.shapeClipRect, - m = R.points, - C = R.segments, - n = I._data.isClosePath(), - h = R.fillRule, - f = R.gray, - c = function (c) { - return f ? u.toGrayColor(c) : c - }, - r = c(R._53o), - x = r || v || d; - l.save(), wh(l, J.x, J.y), jc(l, Q), ec(l, B.x, B.y), w && (l.beginPath(), l.rect(w.x, w.y, w.width, w.height), l.clip()), x && Z && (l.save(), l.beginPath(), l.rect(Z.x, Z.y, Z.width, Z.height), l.clip()), wh(l, -J.x, -J.y); - var O = R._60o, - H = ls(l, O), - K = l.lineJoin, - o = l.lineCap; - l.lineJoin = R._62o, l.lineCap = R._61o; - var V = c(R.bodyColor); - x ? (en(l, m, C, n), d ? uq(l, d, function (s) { - return nm(s, R.bodyColor) - }) : v ? fg(l, v, V, null, I._data, I.gv) : (a = V ? V : r, Ge(l, a, R.shapeGradient, c(R._59o), R.gradientRect)), l.fill(h), d && l.restore(), Z && (l.restore(), wh(l, -J.x, -J.y)), H !== l && en(H, m, C, n)) : en(H, m, C, n); - var k = R.shapeForeground; - if (k) { - l.save(); - var G = R.shapeForegroundClipRect; - G && (wh(l, J.x, J.y), l.beginPath(), l.rect(G.x, G.y, G.width, G.height), l.clip(), wh(l, -J.x, -J.y)), en(l, m, C, n), Ge(l, k, F("shape.foreground.gradient"), c(F("shape.foreground.gradient.color")), R.gradientRect), l.fill(h), l.restore() - } - var M = F("shape.border.width.absolute"); - if (M && (l.save(), l.setTransform(1, 0, 0, 1, 0, 0)), s && (l.strokeStyle = R._97o, l.lineWidth = N + 2 * (D + s), l.stroke()), D && (l.strokeStyle = c(R.borderColor), l.lineWidth = N + 2 * D, l.stroke()), N && (a = c(R._55o), R.shapeBorderRepeatImage ? qb(l, R.shapeBorderRepeatImage, a, null, I._data, I.gv) : (!r && V && (a = V), l.strokeStyle = a), l.lineWidth = N, l.stroke(), R._94o && fr(l, a, c(R._95o), N, I.gv._zoom, R._96o)), _l(l, O), F("shape.dash")) { - var z = F("shape.dash.width") || N; - if (z > 0) { - O = F("shape.dash.pattern"); - var H = ls(l, O, I._2Q("shape.dash.offset")); - H !== l && en(H, m, C, n), I._1Q(l, "shape", z, O) - } - } - M && l.restore(), l.lineJoin = K, l.lineCap = o, l.restore() - }, _48O: function () { }, _47O: function () { } - }); - var Kr = function (b, G) { - fi(Kr, this, [b, G]) - }; - yc(Kr, Xp, { - getRotation: function (w, n, K) { - w = w || 0; - var H = this._data.getPoints(), - R = H.size(); - return R > 1 ? nk[K] ? R && 0 === R % 2 ? Mn(H.get(R / 2 - 1), H.get(R / 2), n, w) : w : Ym[K] ? Mn(H.get(0), H.get(1), n, w) : Mn(H.get(R - 2), H.get(R - 1), n, w) : w - }, getPosition: function (F, H, k, C, b) { - var z = this._data.getPoints(), - l = z.size(); - if (l > 1) { - if (nk[F]) { - var t = l % 2; - if (0 === t) return Md(z.get(l / 2 - 1), z.get(l / 2), F, H, k, C, b); - var R = z.get((l - t) / 2), - S = { - x: R.x, - y: R.y, - width: 0, - height: 0 - }; - return R = Re(F, S, C), R.x += H, R.y += k, R - } - return Ym[F] ? Md(z.get(0), z.get(1), F, H, k, C, b) : Md(z.get(l - 2), z.get(l - 1), F, H, k, C, b) - } - return nl - } - }); - var _n = function (t, k) { - fi(_n, this, [t, k]) - }; - yc(_n, Af, { - _3O: function () { - var C = this; - _n.superClass._3O.call(C); - var G = C.s, - z = C._83o; - C._82o = z.img || z.shape ? F : { - background: C.getBodyColor("grid.background"), - depth: G("grid.depth"), - rect: z.rect, - _88o: G("grid.cell.depth"), - cellBorderColor: G("grid.cell.border.color"), - _89o: G("grid.row.count"), - _90o: G("grid.column.count"), - block: G("grid.block"), - _91o: G("grid.block.color"), - _92o: G("grid.block.padding"), - _93o: G("grid.block.width") - } - }, _80o: function (t) { - var w = this, - R = w._82o; - if (!R) return _n.superClass._80o.call(w, t), void 0; - var H, f, E = w._data, - h = R.background, - W = R.rect, - x = R.block, - k = R._91o, - Z = R._92o, - P = R._93o, - V = R._88o, - D = R.cellBorderColor, - s = R._89o, - o = R._90o; - if (h) - if (fl(t, W.x, W.y, W.width, W.height, h), Wq(t, h, R.depth, W), V) - for (H = 0; s > H; H++) - for (f = 0; o > f; f++) W = E.getCellRect(H, f), W && Wq(t, h, V, W); - else if (D) { - for (t.beginPath(), H = 0; s > H; H++) - for (f = 0; o > f; f++) W = E.getCellRect(H, f), W && t.rect(W.x, W.y, W.width, W.height); - t.strokeStyle = D, t.lineWidth = 1, t.stroke() - } - if ("h" === x) - for (H = 0; s > H; H++) W = ni(E.getCellRect(H, 0), E.getCellRect(H, o - 1)), vn(W, Z), Ie(t, k, W.x, W.y, W.width, W.height, P); - else if ("v" === x) - for (f = 0; o > f; f++) W = ni(E.getCellRect(0, f), E.getCellRect(s - 1, f)), vn(W, Z), Ie(t, k, W.x, W.y, W.width, W.height, P); - w._39O(t, w._83o) - } - }); - var sk = function (C, J) { - fi(sk, this, [C, J]) - }; - yc(sk, Af, { - _checkEmptyRect: !1, - _81o: function () { - var t = this._data, - p = sk.superClass._81o.call(this), - O = t.s("text"); - if (O != F) { - var P, Q, V = t.s("text.font"), - o = t.s("text.align"), - U = t.s("text.vAlign"), - f = ln(V, O), - z = f.width, - L = f.height, - j = t.getAnchor(), - e = t.getWidth(), - k = t.getHeight(); - "left" === o ? P = -e * j.x : "center" === o ? P = -e * j.x + (e - z) / 2 : "right" === o && (P = e * (1 - j.x) - f.width), "top" === U ? Q = -k * j.y : "middle" === U ? Q = -k * j.y + (k - L) / 2 : "bottom" === U && (Q = k * (1 - j.y) - f.height); - var T, v = t.getMatrix(); - if (T = ms([v.tf(P, Q), v.tf(P + z, Q), v.tf(P + z, Q + L), v.tf(P, Q + L)]), p = ni(p, T), p && t.s("text.shadow")) { - var N = Pm(p); - N.x += t.s("text.shadow.offset.x"), N.y += t.s("text.shadow.offset.y"), vn(N, t.s("text.shadow.blur")), p = ni(p, N) - } - } - return p - } - }); - var Zp = hg.Interactor = function (S) { - this.gv = this._graphView = S - }; - Bb("Interactor", o, { - ms_listener: 1, - getView: function () { - return this.gv.getView() - }, setUp: function () { - this.addListeners() - }, tearDown: function () { - this.removeListeners(), this.clear() - }, clear: function () { }, fi: function (g) { - this.gv.fi(g) - }, setCursor: function (G) { - nf || this.gv.setCursor(G) - }, startDragging: function ($) { - var V = this; - V._lastClientPoint = lb($), V._lastLogicalPoint = V.gv.lp($), Ui(V, $) - }, clearDragging: function () { - var t = this; - t._lastClientPoint = t._lastLogicalPoint = t._logicalPoint = F - }, autoScroll: function (M) { - return this.gv.autoScroll(M, this._lastClientPoint) - } - }); - var cm = F, - Cd = function (Z) { - cm.handleWindowTouchMove(Z) - }, - sp = function (h) { - cm.handleWindowTouchEnd(h), b(x, wj, Cd), b(x, Sj, sp), cm = F - }, - Ng = function (_) { - cm.handleWindowMouseMove(_) - }, - Vi = function (W) { - cm.handleWindowMouseUp(W), b(x, rp, Ng), b(x, cj, Vi), cm = F - }, - Lj = function (m, h) { - if (m !== cm) { - var T = li(h); - cm ? T ? cm.handleWindowTouchEnd(h) : cm.handleWindowMouseUp(h) : T ? (K(x, wj, Cd), K(x, Sj, sp)) : (K(x, rp, Ng), K(x, cj, Vi)), cm = m - } - }, - mq = function (p) { - var N = this; - N.gv = p, N._is2d = p instanceof hg.GraphView, N._eventListeners = {}, ["mousedown", "mousemove", "mouseleave", "touchstart", "touchmove", ad, "wheel"].forEach(function (K) { - N.addListener(K) - }), N.initImageResource() - }; - yc(mq, Zp, { - enableVR: function (V) { - var l = this; - if (!!l._vrEnable !== V) - if (l._vrEnable = V, V) l.gv.vr.mp(l.onVRControllerChange, l); - else if (l.gv.vr.ump(l.onVRControllerChange, l), l._vrRayPolyline) { - var R = l.gv.dm(); - R.remove(l._vrRayPolyline), R.remove(l._vrRayHitPoint), l._vrRayPolyline = Z, l._vrRayHitPoint = Z - } - }, onVRControllerChange: function (g) { - var Z = this, - V = g.property, - r = g.newValue, - B = Z.gv.vr.getController(r.id), - p = B.getRay(); - p && ("gamepad.button.trigger" === V ? "down" === r._62O ? Z.handle_mousedown(p) : Z.handleWindowMouseUp(p) : "gamepad.pose" === V && (Z.handle_mousemove(p), Z.handleWindowMouseMove(p))) - }, drawVRRay: function (m, Q, V) { - var C, A = this, - J = A.gv, - G = A._vrRayPolyline, - K = !1; - if (G) C = A._vrRayHitPoint; - else { - var W = J.dm(); - A._vrRayPolyline = G = new O.Polyline, A._vrRayHitPoint = C = new O.Node, C.s({ - shape3d: "billboard", - "shape3d.transparent": !0, - "texture.scale": 10, - "shape3d.image": "coreInteractorRayHitImage" - }), C.setAnchor3d(.5, .5, .499); - var k = .2 / J.vr.measureOflength; - C.s3(k, k, k), G.s("intersect", !1), C.s("intersect", !1), W.add(G), W.add(C), K = !0 - } if (Q) { - var L = V.world, - y = V.worldNormal, - t = L.x, - n = L.y, - f = L.z; - G.s("shape.border.color", "red"), G.setPoints([{ - x: m.origin.x, - y: m.origin.z, - e: m.origin.y - }, { - x: t, - y: f, - e: n - }]), C.s("3d.visible", !0), C.p3(t, n, f), C.lookAtDirection([y.x, y.y, y.z], "front") - } else { - G.s("shape.border.color", "blue"); - var S = new O.Math.Vector3; - S.copy(m.direction).setLength(1e3 / A.gv.vr.measureOflength).add(m.origin), G.setPoints([{ - x: m.origin.x, - y: m.origin.z, - e: m.origin.y - }, { - x: S.x, - y: S.z, - e: S.y - }]), C.s("3d.visible", !1) - } - J.fi({ - kind: "vrRayIntersect", - ray: m, - data: Q, - intersect: V, - polyline: G, - hitNode: C, - begin: K - }) - }, setPreventEventDefault: function (x, c) { - var T = this, - f = T._eventListeners[x]; - f ? f._prevent = c : T._eventListeners[x] = f = { - _removal: Z, - _prevent: c - } - }, removeListener: function (L) { - var c = this, - T = c._eventListeners[L]; - T && T._removal && (T._removal(), T._removal = Z) - }, addListener: function (G) { - var s = this, - v = s._eventListeners[G]; - if (v || (s._eventListeners[G] = v = { - _removal: Z, - _prevent: !0 - }), !v || !v._removal) { - var f = function (I) { - v._prevent && u.preventDefault(I), s.disabled || ("wheel" === G ? sg(s, I) : s["handle_" + G](I)) - }; - K(s.gv.getView(), G, f), v._removal = function () { - b(s.gv.getView(), G, f) - } - } - }, handleWindowTouchMove: function (r) { - this.handleWindowMouseMove(r) - }, handleWindowMouseMove: function (v) { - this.downInfo && (this.isDragging ? this.handleDownInfo("onDrag", v) : (this.handleDownInfo("onBeginDrag", v), this.isDragging = !0)) - }, handleWindowTouchEnd: function (j) { - this.handleWindowMouseUp(j) - }, handleWindowMouseUp: function (k) { - if (this.isDragging && (this.handleDownInfo("onEndDrag", k), this.isDragging = !1), this.downInfo) { - var c = this.handle("onUp", k); - if (c && c.data === this.downInfo.data) { - this.handleMissingUp(k); - var J = this, - z = 2 === k.button ? "onContextMenu" : "onClick"; - if (!J._dbclickTimer) return J._dbclickTimer = cd(function () { - delete J._dbclickTimer, J.handleClick(k, z, c), this.downInfo = F - }, u.clickDelay), void 0; - nr(J._dbclickTimer), delete J._dbclickTimer, z = "onDoubleClick", J.handleClick(k, z, c) - } else this.handleDownInfo("onUp", k); - this.downInfo = F - } - }, handle_mouseleave: function (f) { - var e = this, - w = e.gv, - z = e.currentInfo ? e.currentInfo.data : F; - if (z) { - z.s("onLeave") && z.s("onLeave")(f, z, w), e.fire("data", "onLeave", f, z); - var X = e.currentInfo ? e.currentInfo.hits : F; - if (X) - for (var R in X) e.handleLeave(f, R); - e.currentInfo = F - } - }, handle_mousewheel: function (R) { - R.scrollDelta = R.wheelDelta / 40, this.handle("onScroll", R) - }, handle_DOMMouseScroll: function (E) { - E.scrollDelta = 2 === E.axis ? -E.detail : 0, this.handle("onScroll", E) - }, handle_touchstart: function (r) { - this.handle_mousedown(r) - }, handle_touchmove: function (x) { - this.handle("onMove", x) - }, handle_mousedown: function (G) { - this.isDragging && (this.handleDownInfo("onEndDrag", G), this.isDragging = !1), this.downInfo = this.handle("onDown", G), this.downInfo && Lj(this, G) - }, handle_mousemove: function (p) { - var k = this, - $ = k.gv; - k._hoverTimer && (nr(k._hoverTimer), delete k._hoverTimer); - var h, I, T, S = k.handle("onMove", p), - w = this.currentInfo ? this.currentInfo.data : F, - v = this.currentInfo ? this.currentInfo.hits : F; - if (S && (I = S.data, T = S.hits, k._hoverTimer = cd(function () { - nr(k._hoverTimer), delete k._hoverTimer, k.handle("onHover", p, S) - }, $.getHoverDelay() || u.hoverDelay)), I !== w) { - if (w && (w.s("onLeave") && w.s("onLeave")(p, w, $), this.fire("data", "onLeave", p, w)), I && (I.s("onEnter") && I.s("onEnter")(p, I, $), this.fire("data", "onEnter", p, I)), v) - for (h in v) this.handleLeave(p, h); - if (T) - for (h in T) { - var O = T[h], - R = I._interactPrefix = O.prefix, - Y = R && I.a(R + "onEnter") || O.target.onEnter; - Y && Y.call(O.target, p, I, $, O.point, O.width, O.height), this.fire(O.type, "onEnter", O.event, O.data, O.image, O.comp, O.point, O), I._interactPrefix = null - } - } else { - if (v) - for (h in v) T && T[h] || this.handleLeave(p, h); - if (T) - for (h in T) - if (!v || !v[h]) { - var O = T[h], - R = I._interactPrefix = O.prefix, - Y = R && I.a(R + "onEnter") || O.target.onEnter; - Y && Y.call(O.target, p, I, $, O.point, O.width, O.height), this.fire(O.type, "onEnter", O.event, O.data, O.image, O.comp, O.point, O), I._interactPrefix = null - } - } - this.currentInfo = S - }, handle: function (M, r, m) { - var D, j = this, - v = j.gv; - if (j._is2d) { - if (m = m || v.getDataInfoAt(r), !m || !v.isInteractive(m.data)) return; - if (D = m.ui.interactiveInfo) { - var u, f = m.data; - if (f.s(M) && f.s(M)(r, f, v), this.fire("data", M, r, f), "body" === m.part && D.bodyInfo) u = "body", m.hits = this.handleImage(u, v.getImage(f), M, r, f, m.point, D.bodyInfo); - else if ("icons" === m.part && D._38o) { - var J = D._38o[m.name]; - J && J[m.index] && (u = "icons|" + m.name + "|" + m.index, m.hits = this.handleImage(u, m.icon, M, r, f, m.point, J[m.index])) - } - } - return m - } - var f, K; - if (!m) - if (r && r instanceof O.Math.Ray) { - var y = v.vr.intersectWorld(r); - if (f = y.data, K = y.intersect, j.drawVRRay(r, f, K), !f) return; - var n = v.getData3dUI(f); - if (D = n.interactiveInfo, !D) return; - m = { - data: f, - part: K.part, - ui: n - } - } else { - if (m = v.getDataInfoAt(r), !m) return; - m && (m = { - data: m.data, - part: m.part - }) - } - if (v.isInteractive(m.data)) { - if (!K) { - f = m.data; - var n = v.getData3dUI(f); - if (m.ui = n, D = n.interactiveInfo, !D) return m; - if (K = v.intersectObject(r, f), !K) return - } - f.s(M) && f.s(M)(r, f, v), this.fire("data", M, r, f); - var z, B = K.part; - return "body" !== B && (z = f.s(B + ".image") || f.s("shape3d." + B + ".image")), z || (z = f.s("all.image") || f.s("shape3d.image")), z ? (D = "object" == typeof z ? D[z.uuid] : D[z], D && D.bodyInfo ? (m.part = "body", m.interactiveInfo = D, m.point = this._convertUVToPoint(K.uv, D), m.image = z, m.hits = this.handleImage("body", z, M, r, f, m.point, D.bodyInfo), m) : m) : m - } - }, _handleLeaveOrMissing: function (J, E, I) { - var v = "leave" === J ? this.currentInfo : this.downInfo; - if (v) { - var j = v.interactiveInfo || v.ui.interactiveInfo; - if (j) { - var C, $, z = v.data; - if (this._is2d) { - if ($ = this.gv.lp(E), "body" === v.part && j.bodyInfo) C = "body", "leave" === J ? this.handleLeaveImage(I, C, this.gv.getImage(z), E, z, $, j.bodyInfo) : this.handleMissingUpImage(C, this.gv.getImage(z), E, z, $, j.bodyInfo); - else if ("icons" === v.part && j._38o) { - var R = j._38o[v.name]; - R && R[v.index] && (C = "icons|" + v.name + "|" + v.index, "leave" === J ? this.handleLeaveImage(I, C, v.icon, E, z, $, R[v.index]) : this.handleMissingUpImage(C, v.icon, E, z, $, R[v.index])) - } - } else { - if (!j.bodyInfo) return; - var r = this.gv.intersectObject(E, z); - $ = r && r.uv ? this._convertUVToPoint(r.uv, j) : { - x: 1 / 0, - y: 1 / 0 - }, "leave" === J ? this.handleLeaveImage(I, "body", v.image, E, z, $, j.bodyInfo) : this.handleMissingUpImage("body", v.image, E, z, $, j.bodyInfo) - } - } - } - }, handleClick: function (l, h, M) { - var x = this, - B = this.downInfo; - if (B && M) { - var Y, c = M.interactiveInfo || M.ui.interactiveInfo, - W = M.data, - q = this.gv; - if (W.s(h) && W.s(h)(l, W, q), x.fire("data", h, l, W), c) - if (this._is2d) { - if (B.part === M.part) { - var n = q.lp(l); - "body" === M.part && c.bodyInfo && (Y = "body", this.handleClickImage(Y, q.getImage(W), h, l, W, n, c.bodyInfo, M)) - } - } else { - if (!c.bodyInfo) return; - var U = q.intersectObject(l, W); - if (!U) return; - n = this._convertUVToPoint(U.uv, c), this.handleClickImage("body", B.image, h, l, W, n, c.bodyInfo, M) - } - } - }, handleDownInfo: function (T, B) { - if (this.downInfo) { - var w = this.downInfo, - q = this.gv, - d = w.interactiveInfo || w.ui.interactiveInfo; - if (d) { - var W, N = w.data; - if (N.s(T) && N.s(T)(B, N, q), this.fire("data", T, B, N), this._is2d) { - var D = q.lp(B); - if ("body" === w.part && d.bodyInfo) W = "body", this.handleDownInfoImage(W, q.getImage(N), T, B, N, D, d.bodyInfo); - else if ("icons" === w.part && d._38o) { - var t = d._38o[w.name]; - t && t[w.index] && (W = "icons|" + w.name + "|" + w.index, this.handleDownInfoImage(W, w.icon, T, B, N, D, t[w.index])) - } - } else { - if (!d.bodyInfo) return; - var K = q.intersectObject(B, N); - if (!K) return; - D = this._convertUVToPoint(K.uv, d), this.handleDownInfoImage("body", w.image, T, B, N, D, d.bodyInfo) - } - } - } - }, fire: function (N, u, v, H, i, g, U, q) { - this.gv.fi({ - kind: u, - type: N, - event: v, - data: H, - image: i, - comp: g, - view: this.gv, - point: U, - width: q ? q.width : Z, - height: q ? q.height : Z - }) - }, handleImage: function (j, I, E, F, t, W, m) { - var $ = {}; - if (I && (I = ii(I))) { - var B = this.gv, - b = m.rect, - s = this.convertPoint(W, m); - s.inRect && (I[E] && I[E](F, t, B, s, b.width, b.height), this.fire("image", E, F, t, I, Z, s, b), $[j + "|image"] = { - target: I, - type: "image", - image: I, - data: t, - event: F, - point: s, - width: b.width, - height: b.height - }); - for (var l, R = m.compInfos, e = I, L = R.length - 1; L >= 0; L--) { - var q = R[L], - z = q.comp; - if (s = this.convertPoint(W, q, e, z, B, t), s.inRect) { - b = q.rect; - var y = t._interactPrefix = q.prefix, - h = y && t.a(y + E) || z[E]; - if (h && (l = h.call(z, F, t, B, s, b.width, b.height)), this.fire("comp", E, F, t, I, z, s, b), l !== !0 && (I = b.image) && (I[E] && (l = I[E](F, t, B, s, b.width, b.height)), this.fire("image", E, F, t, I, Z, s, b)), t._interactPrefix = null, $[j + "|" + L] = { - target: z, - type: "comp", - comp: z, - image: I, - data: t, - event: F, - point: s, - width: b.width, - height: b.height, - prefix: y - }, I && ($[j + "|" + L + "|image"] = { - target: I, - type: "image", - image: I, - data: t, - event: F, - point: s, - width: b.width, - height: b.height, - prefix: y - }), l === !0) break - } - } - } - return $ - }, handleLeave: function (S, F) { - return this._handleLeaveOrMissing("leave", S, F) - }, handleMissingUp: function (Z) { - return this._handleLeaveOrMissing("missing", Z) - }, handleLeaveImage: function (u, E, B, L, v, b, Q) { - if (B && (B = ii(B))) { - var z = this.gv, - w = Q.rect, - x = this.convertPoint(b, Q); - u === E + "|image" && (B.onLeave && B.onLeave(L, v, z, x, w.width, w.height), this.fire("image", "onLeave", L, v, B, Z, x, w)); - for (var j, f = Q.compInfos, P = B, l = f.length - 1; l >= 0; l--) { - var q = f[l], - M = q.comp; - x = this.convertPoint(b, q, P, M, z, v), w = q.rect; - var D = v._interactPrefix = q.prefix; - if (u === E + "|" + l) { - var t = D && v.a(D + "onLeave") || M.onLeave; - t && (j = t.call(M, L, v, z, x, w.width, w.height)), this.fire("comp", "onLeave", L, v, B, M, x, w) - } - if (j !== !0 && (B = w.image) && u === E + "|" + l + "|image" && (B.onLeave && (j = B.onLeave(L, v, z, x, w.width, w.height)), this.fire("image", "onLeave", L, v, B, Z, x, w)), v._interactPrefix = null, j === !0) break - } - } - }, handleMissingUpImage: function (M, I, $, T, m, g) { - var N = "onUp", - A = this.downInfo.hits; - if (A && I && (I = ii(I))) { - var L = this.gv, - y = g.rect, - W = this.convertPoint(m, g); - !W.inRect && A[M + "|image"] && (I[N] && I[N]($, T, L, W, y.width, y.height), this.fire("image", N, $, T, I, Z, W, y)); - for (var U, j = g.compInfos, G = I, C = j.length - 1; C >= 0; C--) { - var w = j[C], - B = w.comp; - if (W = this.convertPoint(m, w, G, B, L, T), !W.inRect) { - y = w.rect; - var b = T._interactPrefix = w.prefix; - if (A[M + "|" + C]) { - var P = b && T.a(b + N) || B[N]; - P && (U = P.call(B, $, T, L, W, y.width, y.height)), this.fire("comp", N, $, T, I, B, W, y) - } - if (U !== !0 && (I = y.image) && A[M + "|" + C + "|image"] && (I[N] && (U = I[N]($, T, L, W, y.width, y.height)), this.fire("image", N, $, T, I, Z, W, y)), T._interactPrefix = null, U === !0) break - } - } - } - }, handleDownInfoImage: function (H, L, M, E, n, p, l) { - var Y = this.downInfo.hits; - if (Y && L && (L = ii(L))) { - var j = this.gv, - P = l.rect, - D = this.convertPoint(p, l); - Y[H + "|image"] && (L[M] && L[M](E, n, j, D, P.width, P.height), this.fire("image", M, E, n, L, Z, D, P)); - for (var g, V = l.compInfos, S = L, N = V.length - 1; N >= 0; N--) { - var B = V[N], - X = B.comp; - D = this.convertPoint(p, B, S, X, j, n), P = B.rect; - var z = n._interactPrefix = B.prefix; - if (Y[H + "|" + N]) { - var $ = z && n.a(z + M) || X[M]; - $ && (g = $.call(X, E, n, j, D, P.width, P.height)), this.fire("comp", M, E, n, L, X, D, P) - } - if (g !== !0 && (L = P.image) && Y[H + "|" + N + "|image"] && (L[M] && (g = L[M](E, n, j, D, P.width, P.height)), this.fire("image", M, E, n, L, Z, D, P)), n._interactPrefix = null, g === !0) break - } - } - }, handleClickImage: function (d, u, n, v, A, b, c, o) { - var k = this.downInfo.hits, - U = o.hits; - if (k && u && (u = ii(u))) { - var X = this.gv, - F = c.rect, - q = this.convertPoint(b, c); - k[d + "|image"] && (u[n] && u[n](v, A, X, q, F.width, F.height), this.fire("image", n, v, A, u, Z, q, F)); - for (var _, B = c.compInfos, D = u, e = B.length - 1; e >= 0; e--) { - var J = B[e], - g = J.comp; - q = this.convertPoint(b, J, D, g, X, A), F = J.rect; - var P = A._interactPrefix = J.prefix; - if (k[d + "|" + e] && U[d + "|" + e]) { - var j = P && A.a(P + n) || g[n]; - j && (_ = j.call(g, v, A, X, q, F.width, F.height)), this.fire("comp", n, v, A, u, g, q, F) - } - if (_ !== !0 && (u = F.image) && k[d + "|" + e + "|image"] && (u[n] && (_ = u[n](v, A, X, q, F.width, F.height)), this.fire("image", n, v, A, u, Z, q, F)), A._interactPrefix = null, _ === !0) break - } - } - }, initImageResource: function () { - u.setImage("coreInteractorRayHitImage", { - width: 16, - height: 16, - comps: [{ - type: "oval", - background: "rgb(255,0,0)", - borderWidth: 1, - borderColor: "rgb(250,120,120)", - opacity: .3, - rotation: -1.593, - rect: [.73315, .6933, 14.5337, 14.61341] - }, { - type: "oval", - background: "rgb(255,0,0)", - borderWidth: 1, - borderColor: "rgb(250,120,120)", - rotation: -1.593, - rect: [3.56695, 3.75073, 8.8661, 8.49856] - }] - }) - }, _convertUVToPoint: function (w, O) { - if (!w) return { - x: 1 / 0, - y: 1 / 0 - }; - var n = O.bodyInfo.rect, - N = w.clone(), - g = w.multiply({ - x: n.width, - y: n.height - }); - return g.local = N, g - }, convertPoint: function (R, P, t, m, O, S) { - var $ = P.rect, - i = P.matrix.applyInverse(R).sub($), - z = i.x >= 0 && i.y >= 0 && i.x <= $.width && i.y <= $.height; - if (!z) return i; - if (m && Dj(m.pixelPerfect, S, O)) { - var $, k = 1; - this._is2d ? (k = O.getZoom(), $ = Cc(R.x, R.y, Z, k)) : $ = Cc(R.x, R.y); - var N = !1, - B = $.x, - s = $.y, - f = $.width, - V = $.height, - x = u.hitMaxArea, - T = f * V * k * k; - if (T > x) { - var c = Math.sqrt(x / T); - k *= c - } - f *= k, V *= k, 2 > f && (f = 2), 2 > V && (V = 2), B *= k, s *= k; - var I = Cr(f, V), - q = new Np(0, -B, -s, k, k); - q.append(P.matrix), O._drawForChecking = !0, m.transform = q, P.refRect && P.refRect.fitSize && (m.refRect = P.refRect); - var p = t.comps; - t.comps = [m], Yd(I, t, 0, 0, f, V, S, self), t.comps = p, delete m.refRect, delete m.transform, O._drawForChecking = !1; - try { - for (var v = 0, J = I.getImageData(0, 0, f, V).data; v < J.length; v += 4) - if (0 !== J[v + 3]) { - N = !0; - break - } - I.restore() - } catch (o) { - xm = F, N = !1 - } - i.inRect = N - } else i.inRect = !0; - return i - } - }); - var pk = hg.DefaultInteractor = function (C) { - fi(pk, this, [C]) - }; - Bb("DefaultInteractor", Zp, { - handle_mousedown: function (q) { - Qc(q); - var k = this, - R = k.gv, - Q = R.getDataAt(q); - if (R.setFocus(q) && !R._editing && !R._scrolling) { - wm(q) ? R.handleDoubleClick(q, Q) : R.handleClick(q, Q); - var I = Fm(q); - !Cf() && !I && Q && (R.isMovable(Q) || R._39Q(Q)) || !R.isPannable() || !jj(q) && !I || ik(q) || (k._tx = R.tx(), k._ty = R.ty(), k.startDragging(q)) - } - }, handleWindowMouseUp: function (X) { - var e = this, - l = e.gv; - l._panning && (delete l._panning, l.onPanEnded(), e.fi({ - kind: "endPan", - event: X - })), delete e._tx, delete e._ty, e.clearDragging() - }, handle_mousemove: function (F) { - var q = this, - C = q.gv; - q._hoverTimer && (nr(q._hoverTimer), delete q._hoverTimer), q._hoverTimer = cd(function () { - q.fi({ - kind: "hover", - event: F - }), nr(q._hoverTimer), delete q._hoverTimer - }, C.getHoverDelay() || u.hoverDelay) - }, handle_touchmove: function (U) { - this.handle_mousemove(U) - }, handleWindowMouseMove: function (S) { - var I = this, - u = I.gv; - I.fi({ - kind: u._panning ? "betweenPan" : "beginPan", - event: S - }), u._panning = 1; - var g = wq(u, S, I._lastClientPoint); - u.setTranslate(I._tx + g.x, I._ty + g.y) - }, handle_mousewheel: function (P) { - this.gv.handleScroll(P, P.wheelDelta) - }, handle_DOMMouseScroll: function (D) { - 2 === D.axis && this.gv.handleScroll(D, -D.detail) - }, handle_keydown: function (g) { - this.gv.handleKeyDown(g) - } - }); - var ng = hg.SelectInteractor = function (t) { - fi(ng, this, [t]) - }; - Bb("SelectInteractor", Zp, { - _42: function () { - var c = this, - i = c.gv, - B = i.getZoom(), - K = c.mark, - g = c.div; - g || (g = c.div = dd(), sn(c.getView(), g)); - var D = {}; - D.x = K.x * B + i.tx(), D.y = K.y * B + i.ty(), D.width = K.width * B, D.height = K.height * B, qp(g, D), this.intersects() ? (g.style.border = "", g.style.background = i.getRectSelectBackground()) : (g.style.background = "", g.style.border = "1px solid " + i.getRectSelectBorderColor()) - }, handle_mousedown: function (z) { - var v = this, - E = v.gv; - if (v._57I = F, v.pendingClickThrough = F, !(E._editing || E._scrolling || Cf() || Fm(z))) { - var g = E.getDataAt(z), - I = E.sm(); - g ? ik(z) ? I.co(g) ? I.rs(g) : I.as(g) : I.co(g) ? g instanceof Br && g.isClickThroughEnabled() && jj(z) && (v.pendingClickThrough = lb(z)) : I.ss(g) : ik(z) || !E.isPannable() ? jj(z) && (ik(z) || I.cs(), E.isRectSelectable() && (v.startDragging(z), E._77O = 1)) : jj(z) && (v._57I = lb(z)) - } - }, handle_mouseup: function (_) { - var y = this, - S = y.gv, - Z = y._57I; - if (Z && (En(Z, lb(_)) <= 1 && S.sm().cs(), y._57I = F), y.pendingClickThrough) { - if (En(y.pendingClickThrough, lb(_)) <= 1) { - var n = S.getDataAt(_); - if (n instanceof Br && n.isClickThroughEnabled()) { - var h = S.getDataAt(_, function (f) { - var u = f.getParent() === n && S.isSelectable(f, !0); - return u - }); - h && (_.clickThrough = !0, S.sm().ss(h)) - } - } - y.pendingClickThrough = F - } - }, handleWindowMouseUp: function (Y) { - this.clear(Y) - }, handleWindowMouseMove: function (U) { - var K = this, - $ = K.gv; - K._logicalPoint = $.lp(U), K.mark ? (K.fi({ - kind: "betweenRectSelect", - event: U - }), $.isPannable() && K.autoScroll(U), K.redraw()) : K.fi({ - kind: "beginRectSelect", - event: U - }), K.mark = ms(K._lastLogicalPoint, K._logicalPoint), K.redraw() - }, intersects: function () { - var J = this, - v = J._lastLogicalPoint, - b = J._logicalPoint; - return v.x > b.x || v.y > b.y - }, clear: function (w) { - var G = this, - O = G.gv, - Y = G.mark; - if (G._57I = F, G.pendingClickThrough = F, G._lastLogicalPoint) { - if (Y) { - if (0 !== Y.width && 0 !== Y.height) { - var $ = O.getDatasInRect(Y, G.intersects()); - if (!$.isEmpty()) { - var P = O.sm(), - E = P.toSelection(); - $.each(function (h) { - P.co(h) ? E.remove(h) : E.add(h) - }), P.ss(E) - } - } - yj(G.div), delete G.div, delete G.mark, G.redraw(), G.fi({ - kind: "endRectSelect", - event: w - }), O.onRectSelectEnded() - } - G.clearDragging(), delete O._77O - } - }, redraw: function () { - var u = this; - u._draw || (u._draw = 1, cd(function () { - u.mark && u._42(), delete u._draw - }, 16)) - } - }); - var Wr = hg.MoveInteractor = function (l) { - fi(Wr, this, [l]) - }; - Bb("MoveInteractor", Zp, { - handle_mousedown: function (y) { - var n = this, - m = n.gv; - if (jj(y) && !m._editing && !m._scrolling && !Cf()) { - var w = m.getSelectedDataAt(y); - !w || m._39Q(w) && !m.isMovable(w) ? m._focusData = F : (n._data = w, m.handleMouseDown && m.handleMouseDown(y, w), n.startDragging(y), m.isMovable(w) && (m._moving = 1)) - } - }, handleWindowMouseUp: function (J) { - var U = this, - F = U.gv; - F.handleMouseUp && F.handleMouseUp(J, U._data), U.clear(J) - }, handleWindowMouseMove: function (v) { - var E = this, - t = E._data, - U = E.gv; - if ((!U._93O || !U._93O(v, t)) && U._moving) { - E._logicalPoint || E.fi({ - kind: "prepareMove", - event: v - }); - var Y = E._logicalPoint ? "betweenMove" : "beginMove", - W = { - kind: Y, - event: v - }, - $ = E._logicalPoint = U.lp(v); - "beginMove" !== Y || E._alreadyBeginTransaction || (E._alreadyBeginTransaction = !0, U.getDataModel().beginTransaction()); - var R = E._calcShift(Y, v), - O = R.x, - J = R.y, - k = E.gv.getMoveMode(v, t); - k && ("x" === k ? J = 0 : "y" === k ? O = 0 : "xy" !== k && (O = J = 0)), U.moveSelection(O, J), E._lastLogicalPoint = $, E.autoScroll(v), E.fi(W) - } - }, _calcShift: function () { - var m = this, - s = m._logicalPoint, - t = m._lastLogicalPoint, - q = s.x - t.x, - x = s.y - t.y; - return { - x: q, - y: x - } - }, clear: function (u) { - var P = this, - L = P.gv; - P._lastLogicalPoint && (P._lastLogicalPoint = P._data = L._moving = F, P._logicalPoint && (P.fi({ - kind: "endMove", - event: u - }), L.onMoveEnded()), P.clearDragging()), P._alreadyBeginTransaction && (P._alreadyBeginTransaction = !1, L.getDataModel().endTransaction()) - } - }); - var eb = hg.TextEditInteractor = function (C) { - fi(eb, this, [C]), this.init() - }; - Bb("TextEditInteractor", Zp, { - init: function () { - var m = this, - _ = this.input = U.createElement("input"), - V = _.style; - _.text = "text", V.border = "1px solid #d8d8d8", V.position = "absolute", V.padding = "2px 3px", V.outline = "none", V.marginLeft = "-90px", V.marginTop = "-16px", V.backgroundColor = "rgba(255,255,255, 0.9)", V.fontSize = "14px", V.width = "180px", V.height = "32px", V.boxShadow = "0 0 13px rgba(16,142,233, 0.5)", V.textAlign = "center", V.boxSizing = "border-box", K(_, "keyup", function (S) { - hd(S) && m.endTextEdit() - }), K(_, "focus", function () { - _.select() - }); - var F = this.textarea = U.createElement("textarea"), - R = this.wrap = U.createElement("div"); - R.appendChild(F), V = F.style, V.margin = 0, V.padding = "4px", V.overflow = "hidden", V.boxSizing = "border-box", V.position = "absolute", V.outline = "none", V.backgroundColor = "transparent", V.resize = "none", V.textAlign = "center", V.fontSize = "14px", V.border = "none", V.borderWidth = 0, V.width = "100%", V.top = "50%", V = R.style, V.boxSizing = "border-box", V.margin = 0, V.padding = 0, V.position = "absolute", V.boxShadow = "0 0 13px rgba(16,142,233, 0.5)", V.border = "1px solid #d8d8d8", V.backgroundColor = "rgba(255,255,255, 0.9)", V.width = "180px", V.marginLeft = "-90px", K(F, "keydown", function (t) { - return (Pf() || ik()) && hd(t) ? (m.endTextEdit(), void 0) : (m.calculateTextareaHeight(String.fromCharCode(t.keyCode)), void 0) - }), K(F, "focus", function () { - F.select() - }); - var C = function (p) { - p.stopPropagation() - }; - K(_, "mousedown", C), K(_, "touchstart", C), K(F, "mousedown", C), K(F, "touchstart", C), m.SIZING_STYLE = ["letter-spacing", "line-height", "padding-top", "padding-bottom", "font-family", "font-weight", "font-size", "text-rendering", "text-transform", "width", "text-indent", "padding-left", "padding-right", "border-width", "box-sizing"], m.HIDDEN_TEXTAREA_STYLE = "visibility:hidden; min-height:0 !important;max-height:none !important;height:0 !important;visibility:hidden !important;overflow:hidden !important;position:absolute !important;z-index:-1000 !important;top:0 !important;right:0 !important", m.handleWindowClick = function (x) { - var q = m._editingDOM; - if (q) { - var X = q.getBoundingClientRect(), - G = lb(x); - cf(X, G) || m.endTextEdit() - } - } - }, handle_mousedown: function (P) { - var l = this, - $ = l.gv; - if (wm(P) && !$._editing) { - var M = $.getDataAt(P); - if (M) { - var a = $.getTextEditInfo(M); - a && (this._editInfo = a, this._editTarget = M, $._editing = !0, a.isMultiline ? this.handleMultilineEdit() : this.handleTextEdit()) - } - } - }, handleMultilineEdit: function () { - var l = this, - d = l.gv, - F = l._editTarget, - f = l.getTargetValue(), - Y = l.textarea, - R = l.wrap; - this.hiddenTextarea || this.createHiddenTextarea(), (null === f || f === Z) && (f = ""), Y.value = f, l._editingDOM = Y, d.getView().appendChild(R), this.layoutHTML(R, F), this.calculateTextareaHeight(), cd(function () { - Y.focus(), K(x, "mousedown", l.handleWindowClick), K(x, "touchstart", l.handleWindowClick) - }, 10) - }, handleTextEdit: function () { - var o = this, - H = o.gv, - s = o._editTarget, - q = o.getTargetValue(), - N = o.input; - (null === q || q === Z) && (q = ""), N.value = q, o._editingDOM = N, H.getView().appendChild(N), this.layoutHTML(N, s), cd(function () { - N.focus(), K(x, "mousedown", o.handleWindowClick), K(x, "touchstart", o.handleWindowClick) - }, 10) - }, layoutHTML: function (X, z) { - var J = this.gv, - t = J.getZoom(); - if (z instanceof O.Node) { - var Z = z.getRect(); - X.style.left = (Z.x + Z.width / 2) * t + J.tx() + "px", X.style.top = (Z.y + Z.height / 2) * t + J.ty() + "px" - } else if (z instanceof O.Edge) { - var E = J.getDataUI(z), - Z = E._6I; - X.style.left = (Z.x + Z.width / 2) * t + J.tx() + "px", X.style.top = (Z.y + Z.height / 2) * t + J.ty() + "px" - } - }, endTextEdit: function () { - var m = this, - V = m._editInfo.isMultiline ? m.wrap : m.input, - $ = m._editInfo.isMultiline ? m.textarea : m.input; - m.setTargetValue($.value), m.gv.getView().removeChild(V), m.gv._editing = !1, delete m._editingDOM, b(x, "mousedown", m.handlelick), b(x, "touchstart", m.handleWindowClick) - }, setTargetValue: function (X) { - var D = this, - P = D._editTarget, - E = D._editInfo, - V = E.accessType, - g = E.name; - if (g && V || (V = "p", g = "name"), "p" === V) { - var T = O.Default.setter(g); - P[T](X) - } else "a" === V ? P.a(g, X) : P.s(g, X) - }, getTargetValue: function () { - var u = this, - y = u._editTarget, - b = u._editInfo, - W = b.accessType, - j = b.name; - if (j && W || (W = "p", j = "name"), "p" === W) { - var z = O.Default.getter(j); - return y[z]() - } - return "a" === W ? y.a(j) : y.s(j) - }, createHiddenTextarea: function () { - this.hiddenTextarea = U.createElement("textarea"), this.hiddenTextarea.setAttribute("style", "margin:0; padding:0; position:absolute; overflowY:scroll; resize:none; box-sizing:border-box;"), this.hiddenTextarea.setAttribute("rows", "1"), this.gv.getView().appendChild(this.hiddenTextarea) - }, calculateHTMLStyle: function (n, K) { - if (K && this.computedStyleCache) return this.computedStyleCache; - var l = this, - z = x.getComputedStyle(n), - U = z.getPropertyValue("box-sizing") || z.getPropertyValue("-moz-box-sizing") || z.getPropertyValue("-webkit-box-sizing"), - v = parseFloat(z.getPropertyValue("padding-bottom")) + parseFloat(z.getPropertyValue("padding-top")), - G = parseFloat(z.getPropertyValue("border-bottom-width")) + parseFloat(z.getPropertyValue("border-top-width")), - h = l.SIZING_STYLE.map(function (A) { - return A + ":" + z.getPropertyValue(A) - }).join(";"), - R = { - sizingStyle: h, - paddingSize: v, - borderSize: G, - boxSizing: U - }; - return K && (this.computedStyleCache = R), R - }, calculateTextareaHeight: function (P) { - P = P || ""; - var Y = this, - S = Y.textarea, - Z = Y.hiddenTextarea, - t = Y.wrap, - g = 32, - C = Y.calculateHTMLStyle(S, !1), - G = C.paddingSize, - n = C.borderSize, - X = C.boxSizing, - $ = C.sizingStyle; - Z.setAttribute("style", $ + ";" + Y.HIDDEN_TEXTAREA_STYLE), Z.value = S.value + P; - var V = Z.scrollHeight; - "border-box" === X ? V += n : "content-box" === X && (V -= G), S.style.height = V + "px", S.style.marginTop = 0 - .5 * V + "px", t.style.height = Math.max(V, g) + "px", t.style.marginTop = V * -.5 + "px" - } - }); - var Vl = hg.ScrollBarInteractor = function (u) { - fi(Vl, this, [u]) - }; - Bb("ScrollBarInteractor", Zp, { - _41o: function () { - return this.gv.getViewRect().height < this.gv.getScrollRect().height - }, _40o: function () { - return this.gv.getViewRect().width < this.gv.getScrollRect().width - }, isV: function (u) { - var y = this.gv.getViewRect(); - return this._41o() && (y.x + y.width - this.gv.lp(u).x) * this.gv.getZoom() < co - }, isH: function (r) { - var z = this.gv.getViewRect(); - return this._40o() && (z.y + z.height - this.gv.lp(r).y) * this.gv.getZoom() < co - }, handle_mousemove: function (z) { - this.handle_touchmove(z) - }, handle_touchmove: function (x) { - if (!si && jj(x) && this.gv.isScrollBarVisible()) { - var r = this, - _ = r.isV(x), - X = r.isH(x); - (_ || X) && r.gv.showScrollBar(), r.gv._scrolling = _ || X - } - }, handleWindowMouseUp: function (E) { - this.handleWindowTouchEnd(E) - }, handleWindowTouchEnd: function (D) { - this._state = this._cp = this._tx = this._ty = this.gv._scrolling = F, this.fi({ - kind: "endScroll", - event: D - }) - }, handle_mousedown: function (E) { - this.handle_touchstart(E) - }, handle_touchstart: function (w) { - var g = this; - if (g.gv.setFocus(w), Qc(w), g.handle_touchmove(w), !(Qj(w) > 1) && g.gv._scrolling && g.gv.isScrollBarVisible()) { - g._cp = lb(w), g._tx = g.gv.tx(), g._ty = g.gv.ty(); - var n = g.isV(w); - g._state = n ? "vScroll" : "hScroll", Ui(g, w), g.fi({ - kind: "beginScroll", - event: w - }) - } - }, handleWindowMouseMove: function (W) { - this.handleWindowTouchMove(W) - }, handleWindowTouchMove: function (d) { - var g = lb(d), - z = this.gv.getViewRect(), - G = this.gv.getScrollRect(); - "vScroll" === this._state ? this.gv.ty(this._ty + (this._cp.y - g.y) * G.height / z.height) : "hScroll" === this._state && this.gv.tx(this._tx + (this._cp.x - g.x) * G.width / z.width), this.fi({ - kind: "betweenScroll", - event: d - }) - } - }); - var Jb = hg.TouchInteractor = function (y, s) { - s = s || {}, s.selectable === Z && (s.selectable = !0), s.movable === Z && (s.movable = !0), s.pannable === Z && (s.pannable = !0), s.pinchable === Z && (s.pinchable = !0), s.editable === Z && (s.editable = !0), this.params = s, fi(Jb, this, [y]) - }; - Bb("TouchInteractor", Zp, { - ms_edit: 1, - setUp: function () { - var H = this; - Jb.superClass.setUp.call(H), nf && H.params.editable && H.gv.setEditInteractor(H) - }, tearDown: function () { - var _ = this; - Jb.superClass.tearDown.call(_), nf && _.params.editable && _.gv.setEditInteractor(F) - }, clear: function (l) { - var P = this, - k = P.gv; - k._moving && (P.fi({ - kind: "endMove", - event: l - }), delete k._moving, k.onMoveEnded(), k.dm().endTransaction()), k._panning && (P.fi({ - kind: "endPan", - event: l - }), delete k._panning, k.onPanEnded()), k._pinching && (P.fi({ - kind: "endPinch", - event: l - }), delete k._pinching, k.onPinchEnded()), k._editing && (P._46O(l), P._77I = P._node = P._edge = P._shape = P._rect = P._89I = P._index = k._editing = F), P.pendingClickThrough = P._moving = P._panning = P._pinching = P._editing = P._57I = P._data = P._beginHistory = F, P.clearDragging() - }, handle_touchstart: function (g) { - var u = this; - if (!u.gv._editing) { - Qc(g), u._57I = F, u.pendingClickThrough = F; - var j = u.params, - A = u.gv, - Y = A.sm(), - I = A.getDataAt(g), - P = Qj(g); - if (1 === P) { - if (wm(g)) return A.handleDoubleClick(g, I), void 0; - A.handleClick(g, I), I && (A.handleMouseDown && A.handleMouseDown(g, I), u._data = I), j.selectable || (I = F), I && (Y.co(I) ? I instanceof Br && I.isClickThroughEnabled() && (u.pendingClickThrough = lb(g)) : Y.ss(I), j.editable && A.isEditable(I) && u._79I(g, I, !0) ? (u._editing = 1, u.startDragging(g)) : j.movable && A.isMovable(I) && (u._moving = 1, u.startDragging(g))), I && A.isMovable(I) || (u._57I = lb(g), j.pannable && A.isPannable() && (u._panning = 1, u.startDragging(g), u._translate = { - x: A.tx(), - y: A.ty() - })) - } else if (j.pinchable && 2 === P) { - if (I && A._39Q(I)) return; - u._pinching = 1, u.startDragging(g); - var $ = A.getView(), - V = A.getZoom(), - N = $.getBoundingClientRect(), - n = g.touches[0], - C = g.touches[1], - d = { - x: (n.clientX + C.clientX) / 2 - N.left, - y: (n.clientY + C.clientY) / 2 - N.top - }; - d.x -= A.tx(), d.y -= A.ty(), d.x /= V, d.y /= V, u._p = d, u._d = zo(g) - } - } - }, handle_touchend: function (o) { - var E = this, - t = E.gv, - g = E._57I, - j = E._data; - if (g && (En(g, lb(o)) <= 1 && !t.getDataAt(o) && t.sm().cs(), E._57I = F), j && t.handleMouseUp && t.handleMouseUp(o, j), E.pendingClickThrough) { - if (En(E.pendingClickThrough, lb(o)) <= 1) { - var j = t.getDataAt(o); - if (j instanceof Br && j.isClickThroughEnabled()) { - var c = t.getDataAt(o, function (l) { - var A = l.getParent() === j && t.isSelectable(l, !0); - return A - }); - c && (o.clickThrough = !0, t.sm().ss(c)) - } - } - E.pendingClickThrough = F - } - }, handleWindowTouchEnd: function (e) { - this.clear(e) - }, handleWindowTouchMove: function (V) { - var j = this, - N = j.gv, - w = Qj(V); - if (1 === w) { - var S = lb(V), - m = wq(N, S, j._lastClientPoint), - Z = En({ - x: 0, - y: 0 - }, m); - if (j._editing && (j._beginHistory || (j._beginHistory = 1, N.dm().beginTransaction()), N._editing = 1, j._78I(V)), j._moving) { - if (!N._moving && Z < u.touchMoveThreshold) return; - j._beginHistory || (j._beginHistory = 1, N.dm().beginTransaction()), j.handleMove(V) - } else if (j._panning) { - if (!N._panning && Z < u.touchMoveThreshold) return; - N.setTranslate(j._translate.x + m.x, j._translate.y + m.y), j.fi({ - kind: N._panning ? "betweenPan" : "beginPan", - event: V - }), N._panning = 1 - } - } else if (2 === w && j._pinching) { - var C = zo(V); - N.handlePinch(j._p, C, j._d), j._d = C, j.fi({ - kind: N._pinching ? "betweenPinch" : "beginPinch", - event: V - }), N._pinching = 1 - } - }, handleMove: function (a) { - var l = this, - E = l.gv, - q = E.lp(a); - E._93O && E._93O(a, l._data) || (E.moveSelection(q.x - l._lastLogicalPoint.x, q.y - l._lastLogicalPoint.y), l._lastLogicalPoint = q, l.autoScroll(a), l.fi({ - kind: E._moving ? "betweenMove" : "beginMove", - event: a - }), E._moving = 1) - } - }); - var O = x.ht, - se = O.graph._editor = { - Math: O.Math, - Guide: {} - }; - se.getStyle = function (K) { - var _, V = se.StyleMap; - return V && (_ = V[K], _ !== Z) ? _ : se.DefaultStyleMap[K] - }, se.setStyle = function (h, t) { - var V = se.StyleMap; - V || (V = se.StyleMap = {}), V[h] = t - }, se.inEdit = function (A) { - return A._inXEdit === !0 - }, se.startEdit = function (l) { - l._inXEdit = !0, se.Inject.doInject(l) - }, se._46O = function (M) { - M._inXEdit = !1, se.Inject.undoInject(M) - }, se.toScreenPosition = function (J, g) { - var d = J.tx(), - G = J.ty(), - T = J._zoom; - return new se.Math.Vector2(g.x * T + d, g.y * T + G) - }, se.checkHit = function (Y, l, s) { - return Y.distanceTo(l) < s ? !0 : !1 - }, se.toWorldPosition = function (y, $) { - var b = y.tx(), - t = y.ty(), - E = y._zoom; - return { - x: ($.x - b) / E, - y: ($.y - t) / E - } - }, se.setAntialias = function (h, R) { - for (var E, Z = ["imageSmoothingEnabled", "webkitImageSmoothingEnabled", "mozImageSmoothingEnabled", "oImageSmoothingEnabled", "msImageSmoothingEnabled"], r = 0, v = Z.length; v > r && (E = Z[r], !(E in h)); r++); - h[E], h[E] = R - }, se.getTargetCornersOnScreen = function (q, A) { - if (!A) return null; - var f, Y = []; - if (Th(A, q)) { - var J = Rp(q, A); - f = [{ - x: J.x, - y: J.y - }, { - x: J.x + J.width, - y: J.y - }, { - x: J.x + J.width, - y: J.y + J.height - }, { - x: J.x, - y: J.y + J.height - }] - } else { - if (!A.getCorners) return null; - f = A.getCorners() - } - return f.forEach(function (t) { - var S = se.toScreenPosition(q, t); - Y.push(S.x, S.y) - }), Y - }, se.log = function () { }; - var Tl = se.Inject = { - _modules: [] - }; - Tl.registAsModule = function (_, b) { - var l = {}, - K = {}; - for (var s in _) { - var V = b.prototype[s]; - l[s] = V - } - _.getBackup = function (b) { - return l[b] - }, _.getBackups = function () { - return l - }, K.doInject = function () { - for (var l in _) "getBackup" !== l && (b.prototype[l] = _[l]) - }, K.undoInject = function () { - for (var B in _) "getBackup" !== B && (b.prototype[B] = l[B]) - }, Tl._modules.push(K) - }, Tl.doInject = function (A) { - for (var c, K = Tl._modules, H = 0, e = K.length; e > H; H++) c = K[H], c.doInject(A) - }, Tl.undoInject = function (_) { - for (var c, a = Tl._modules, W = 0, o = a.length; o > W; W++) c = a[W], c.undoInject(_) - }; - var Zp = O.graph.EditInteractor = function (m) { - var f = this, - F = U.createElement("canvas"); - F.className = "editCanvas", F.style.position = "absolute", f._styleMap = {}, f._canvas = F, f._context = F.getContext("2d"), Zp.superClass.constructor.call(f, m), this._editDetail = !1, se.setAntialias(f._context, !1), f._subModules = [new se.Anchor(f), new se.RotateX(f), new se.MoveDummy(f), new se.Rect(f), new se.Curve(f), new se.MoveHelper(f)], f._gridGuide = new se.Guide.Grid(f), f._rectGuide = new se.Guide.Rect(f), f._hoverGuide = new se.Guide.Hover(f) - }, - vm = Zp; - O.Default.def(Zp, O.graph.Interactor, { - ms_edit: 1, - ms_fire: 1 - }), o.defineProperties(Zp.prototype, { - editDetail: { - get: function () { - var d = !!this._editDetail; - return d - }, set: function (y) { - var T = this, - c = T._editDetail; - c !== y && (T._editDetail = y, T.gv._editing = y, T.fp("editDetail", c, y), T.fp("pointsEditingMode", c, y), T.fi({ - kind: y ? "beginEditPoints" : "endEditPoints" - })) - } - }, - gvEditing: { - get: function () { - return this.gv._editing - }, set: function (c) { - (!this._editDetail || c) && (this.gv._editing = c, c || (this.editDetail = !1)) - } - }, - editing: { - get: function () { - return this._editing - }, set: function (_) { - this._editing = _, this.gvEditing = _ - } - }, - editingModule: { - get: function () { - return this._editMod - } - }, - pointsEditingMode: { - get: function () { - return this.editDetail - }, set: function (l) { - var K = this; - K.editDetail !== l && (l ? K._tryEnterEditDetailMode() : K._tryQuitEditDetailMode()) - } - }, - gridEnabled: { - get: function () { - var J = this._gridEnabled; - if (!J) return !1; - var E = this.gv; - return E ? !0 : !0 - }, set: function (G) { - G !== this._gridEnabled && (this._gridEnabled = G, this._42()) - } - }, - alignmentGuideEnabled: { - get: function () { - return this._agEnabled - }, set: function (r) { - r !== this._agEnabled && (this._agEnabled = r, this._42()) - } - }, - gridGuide: { - get: function () { - return this._gridGuide - } - }, - rectGuide: { - get: function () { - return this._rectGuide - } - }, - hoverGuide: { - get: function () { - return this._hoverGuide - } - } - }), Zp.prototype.getSubModule = function (r) { - var p, B, Z, v = this._subModules; - for (B = 0, Z = v.length; Z > B; B++) - if (p = v[B], p.catalog === r) return p - }, Zp.prototype.invokeSubModule = function (e, h) { - var Q = this, - b = Q._subModules; - if (b) - for (var f, K, A, I = Array.prototype.slice.call(arguments, 2), E = 0, S = b.length; S > E; E++) - if (f = b[E], K = f[e], K && (A = K.apply(f, I), A != Z && h)) return f - }, Zp.prototype.invokeSubModuleInverse = function (L, Y) { - var q = this, - U = q._subModules; - if (U) - for (var K, T, a, X = Array.prototype.slice.call(arguments, 2), W = U.length - 1; W >= 0; W--) - if (K = U[W], T = K[L], T && (a = T.apply(K, X), a != Z && Y)) return K - }, Zp.prototype.setUp = function () { - se.log("setUp"); - var N = this, - n = N.gv, - L = n.getView(), - h = N._canvas; - Zp.superClass.setUp.call(N), n.setEditInteractor(N), n._79O ? L.insertBefore(h, n._79O) : L.appendChild(h), se.startEdit(n), N.invokeSubModule("setUp"), n.dm().mm(N._onDataModelChanged, N), n.dm().md(N._onDataPropertyChanged, N) - }, Zp.prototype.tearDown = function () { - se.log("tearDown"); - var Y = this, - S = Y.gv, - Z = S.getView(); - Y._resetCustomCursorStyle(), Zp.superClass.tearDown.call(Y), S.dm().umm(Y._onDataModelChanged, Y), S.dm().umd(Y._onDataPropertyChanged, Y), S.setEditInteractor(null), Z.removeChild(Y._canvas), Y._drawTimer && (nr(Y._drawTimer), Y._drawTimer = null), se._46O(S), Y.invokeSubModule("tearDown") - }, Zp.prototype._onDataModelChanged = function (k) { - var c = this; - ("clear" === k.kind || "remove" === k.kind && c.editDetail && k.data === c.getSubModule("Curve").target) && (c.editDetail = !1, c._42()) - }, Zp.prototype._onDataPropertyChanged = function (w) { - var o = this; - if (o.editDetail) { - var L = o.getSubModule("Curve"), - R = w.data; - R === L.target && (R._writing || L._handleDataChanged(w)) - } - }, Zp.prototype.clear = function () { - se.log("clear") - }, Zp.prototype.redraw = function () { - this._42() - }, Zp.prototype._42 = function () { - var m = this; - m._drawTimer || (m._drawTimer = cd(function () { - m._drawTimer = null, m.drawImpl() - }, 0)) - }, Zp.prototype.drawImpl = function () { - var i; - for (i in { - _42: !0 - }) break; - return function () { - var M = this, - f = M._canvas, - C = M.gv, - r = C.getWidth(), - D = C.getHeight(), - t = M._context, - P = O.Default.getInternal(), - Q = x.devicePixelRatio; - (f.width !== r || f.height !== D) && P.setCanvas(f, r, D, Q), t.clearRect(0, 0, f.width, f.height); - var F = M._getValidSelection(); - t.save(), t.scale(Q, Q), M._gridGuide._42(), M.invokeSubModuleInverse(i, !1, t, C, F), M._rectGuide._42(), M._hoverGuide._42(), t.restore() - } - }(), Zp.prototype._getValidSelection = function () { - var i = this, - n = i.gv, - v = n.sm().getSelection(), - K = []; - return v.each(function (N) { - n.isVisible(N) && n.isEditable(N) && K.push(N) - }), K - }, Zp.prototype.handle_touchmove = function (Q) { - return this.handle_mousemove(Q) - }, Zp.prototype.handle_mousemove = function (u) { - if (!O.Default.isDragging()) { - var K = this; - if ((K.editDetail || !Cf() && !Fm(u)) && !K.gv._externalEditing) - if (K.gvEditing = !1, K._checkEdit(u)) K.gvEditing = !0; - else { - if (!K.getStyle("hoverGuideVisible")) return; - K.hoverData = K.gv.getDataAt(u), K._42() - } - } - }, Zp.prototype.handle_touchstart = function (G) { - return this.handle_mousedown(G) - }, Zp.prototype.handle_mousedown = function (E) { - Qc(E); - var b = this; - if ((b.editDetail || !Cf() && !Fm(E)) && !b.gv._externalEditing) { - if (wm(E) && !E.clickThrough) { - if (b.editDetail) { - if (b._tryQuitEditDetailMode(E)) return - } else if (b._tryEnterEditDetailMode()) return; - b.gv.dm().beginTransaction(); - var B = b.invokeSubModule("handleDoubleClick", !0, E); - if (b.gv.dm().endTransaction(), B) return - } - var T = b._checkEdit(E); - T && (b._downPosition = b._getLogicalPoint(E), b.gv.dm().beginTransaction(), T.startEdit(b, E), b.editing = !0) - } - }, Zp.prototype._checkEdit = function (U) { - var P = this, - O = P.gv, - B = P._getLogicalPoint(U), - K = P.invokeSubModule("check", !0, O, U, B) || null; - return P._editMod = K, K - }, Zp.prototype.handleWindowTouchMove = function (f) { - return this.handleWindowMouseMove(f) - }, Zp.prototype.handleWindowMouseMove = function (E) { - var D = this, - l = D._downPosition; - if (l) { - var z = D._getLogicalPoint(E); - if (z.distanceTo(l) < D.getStyle("moveSensitivity")) return; - delete D._downPosition - } - var x = D._editMod; - x && x.handleEdit(D.gv, E) - }, Zp.prototype._getLogicalPoint = function (t) { - var f = this, - e = O.Default.getLogicalPoint(t, f._canvas); - return new se.Math.Vector2(e) - }, Zp.prototype.handleWindowTouchEnd = function (J) { - return this.handleWindowMouseUp(J) - }, Zp.prototype.handleWindowMouseUp = function () { - var e; - for (e in { - _46O: !0 - }) break; - return function (g) { - var W = this; - W.editing = !1, W.setCursor("default"), W.invokeSubModule(e, !1, g), W._42(), W.gv.dm().endTransaction() - } - }(), Zp.prototype.handle_mousewheel = function (B) { - var J = this; - Qc(B), J.invokeSubModule("preHandleScroll", !0) || J.gv.handleScroll(B, B.wheelDelta) - }, Zp.prototype.handleDelete = function () { - var e = this; - if (!e.editDetail) { - e.gv.dm().beginTransaction(); - var u = e.invokeSubModule("handleNormalStateDelete", !0); - return e.gv.dm().endTransaction(), u || e.gv.removeSelection(), void 0 - } - e.gv.dm().beginTransaction(), e.invokeSubModule("handleDelete", !0), e.gv.dm().endTransaction(), e._42() - }, Zp.prototype.handle_keydown = function (X) { - var D = this; - if ((X.metaKey || X.ctrlKey) && D._42(), Cf(X) && !D.editing) return D.gvEditing = !1, D.setCursor("default"), D._42(), void 0; - var x = hd(X); - return D.editDetail ? ((x || bj(X)) && (D.editDetail = !1, D._42()), D.gv.dm().beginTransaction(), D.invokeSubModule("handle_keydown", !0, X), D.gv.dm().endTransaction(), void 0) : (D.gv.dm().beginTransaction(), D.invokeSubModule("handleNormalStateKeyDown", !0, X), D.gv.dm().endTransaction(), x && D._tryEnterEditDetailMode(), void 0) - }, Zp.prototype.handle_keyup = function (g) { - this.gv.dm().beginTransaction(), this.invokeSubModule("handle_keyup", !0, g), this.gv.dm().endTransaction() - }, Zp.prototype._tryEnterEditDetailMode = function () { - var b = this; - return !b.editDetail && b.invokeSubModule("canEnterEditDetailMode", !0) && 1 === b._getValidSelection().length ? (b.editDetail = !0, b._42(), !0) : void 0 - }, Zp.prototype._tryQuitEditDetailMode = function (A) { - var _ = this; - return _.editDetail ? !A || _.invokeSubModule("canQuitEditDetailMode", !0, A) ? (_.editDetail = !1, _._42(), !0) : !1 : !1 - }, Zp.prototype.setStyle = function (J, C, N) { - var v = this; - N ? se.setStyle(J, C) : v._styleMap[J] = C, "baseColor" === J && (ci = C), v.fp("styleChanged", null, { - key: J, - value: C, - base: N - }), v._42() - }, Zp.prototype.getStyle = function (T) { - var P = this, - s = P._styleMap[T]; - return s !== Z ? s : se.getStyle(T) - }, Zp.prototype.setCursor = function (d) { - this._resetCustomCursorStyle(), O.graph.EditInteractor.superClass.setCursor.call(this, d) - }, Zp.prototype._drawHostGuide = function (Y) { - var l = this, - i = l._context, - M = l.gv; - se.Icons.DrawIcon(l, i, se.Icons.NodeHoverGuide, Y.corners); - var w = Y.host; - if (w) { - var D = M.getAttachPoints(w); - if (D && D.length) - for (var X = 0, $ = D.length; $ > X; X++) { - var v = D[X], - j = Yg(M, w, 0, v.offsetX || 0, v.offsetY || 0, v.x, v.y); - j = se.toScreenPosition(M, j), j.isAttach = Y.attach === X, se.Icons.DrawIcon(l, i, se.Icons.AttachPoint, j) - } - } - }, Zp.prototype._resetCustomCursorStyle = function () { - var J = this; - if (J._customStyle) { - var H = this.gv.getView(); - H.classList && H.classList.remove && H.classList.remove(J._customStyle), J._customStyle = null - } - }, Zp.prototype._setRotateCursor = function (M) { - var c = this, - z = c._cursorFactory; - z || (z = c._cursorFactory = new se.CursorFactory(c)); - var B = z.getRotateCursor(M), - J = c.gv.getView(); - c._resetCustomCursorStyle(), c._customStyle = B, J.classList && J.classList.add && J.classList.add(B) - }; - var bb = se.Group = function (G) { - var g = this; - g._entities = G, g._64O = 0, g._position = { - x: 0, - y: 0 - }, g._scale = { - x: 1, - y: 1 - }, g._anchor = { - x: .5, - y: .5 - }, g._anchor2 = { - x: .5, - y: .5 - } - }; - bb.prototype = {}, bb.prototype.constructor = bb; - var Ag = null; - bb.findOrCreateGroup = function (T) { - if (Ag && Ag.checkIsMe(T)) return Ag; - var E = new se.Group(T); - return E.getKeyOb() ? (Ag = E, E) : void 0 - }, bb.prototype.checkIsMe = function (i) { - var O = this._entities; - if (O.length !== i.length) return !1; - var W, R = {}, - l = i.length; - for (W = 0; l > W; W++) R[i[W]._id] = !0; - for (W = 0; l > W; W++) - if (!R[O[W]._id]) return !1; - return !0 - }, bb.prototype.getRotation = function () { - return this._64O - }, bb.prototype.getPosition = function () { - return this._position - }, bb.prototype.getAnchor = function () { - return this._anchor - }, bb.prototype.getWidth = function () { - return this._width - }, bb.prototype.getScale = function () { - return this._scale - }, bb.prototype.getSize = function () { - return { - width: this._width, - height: this._height - } - }, bb.prototype.getHeight = function () { - return this._height - }, bb.prototype.getKeyOb = function () { - for (var W = this._entities, R = W.length - 1; R >= 0; R--) { - var Y = W[R]; - if (this.isNode(Y)) return Y - } - }, bb.prototype.getAnchor2 = function () { - var k = this, - M = k.rotateCenter; - if (M) return M; - var A = k.getKeyOb(); - if (!A) return k._anchor; - var N = k._anchor2, - g = A.getMatrix(); - return g.tf({ - x: A.getWidth() * (N.x - A.getAnchor().x), - y: A.getHeight() * (N.y - A.getAnchor().y) - }) - }, bb.prototype.setAnchor2 = function (B, L) { - var h = this, - C = h.getKeyOb(); - if (C) { - var u, R = C.getMatrix(); - u = "number" == typeof B ? { - x: B, - y: L - } : B; - var M = R.tfi(u); - h._anchor2 = { - x: C.getAnchor().x + M.x / C.getWidth(), - y: C.getAnchor().y + M.y / C.getHeight() - } - } - }, bb.prototype.setRotation = function () { }, bb.prototype.beginRotate = function (n) { - this.rotateCenter = n.pos, this.rotateMode = n.groupRotateMode - }, bb.prototype.endRotate = function () { - delete this.rotateCenter, delete this.rotateMode - }, bb.prototype.addRotation = function (g, r, n) { - return "batch" === r ? this._addRotationInBatchMode(g, n) : "block" === r ? this._addRotationInBlockMode(g, n) : void 0 - }, bb.prototype._addRotationInBlockMode = function (r, q) { - var s = this, - U = s.rotateCenter || s.getPosition(); - s._entities.forEach(function ($) { - if (s.isNode($) && (!q || q($))) { - var l = $.getMatrix(); - l.translate(-U.x, -U.y), l.rotate(r), l.translate(U.x, U.y); - var x = Math.sign($.getScale().x); - $.setRotation(D(l.b * x, l.a * x)), $.setPosition(l.tx, l.ty) - } - }) - }, bb.prototype._addRotationInBatchMode = function (C, s) { - var N = this, - I = N._anchor2; - N._entities.forEach(function (b) { - if (N.isNode(b) && (!s || s(b))) { - var m = b.getAnchor(), - P = b.getMatrix(), - V = P.tf({ - x: b.getWidth() * (I.x - m.x), - y: b.getHeight() * (I.y - m.y) - }), - T = new se.Math.Matrix2d; - T.set(P.a, P.b, P.c, P.d, P.tx, P.ty), T.translate(-V.x, -V.y), T.rotate(C), T.translate(V.x, V.y); - var n = Math.sign(b.getScale().x); - b.setRotation(D(T.b * n, T.a * n)), b.setPosition(T.tx, T.ty) - } - }) - }, bb.prototype.setPosition = function (A) { - var Y, z, U, P, T = this, - c = T._position, - m = A.x - c.x, - V = A.y - c.y, - k = T._entities; - for (z = 0, U = k.length; U > z; z++) Y = k[z], Fq(Y) && (P = Y.getPosition(), Y.setPosition(P.x + m, P.y + V)); - T._position = A - }, bb.prototype.setScale = function (r, E) { - var o = this, - A = r / o._scale.x, - O = E / o._scale.y; - o._adjustChildScaleOrSize(A, O, "size"), o._scale = { - x: r, - y: E - } - }, bb.prototype.getRect = function () { - var C = this, - R = C._position, - Z = C._width, - l = C._height; - return { - x: R.x - Z / 2, - y: R.y - l / 2, - width: Z, - height: l - } - }, bb.prototype.setSize = function (N, b) { - var r = this, - N = Math.max(1, N), - b = Math.max(1, b), - s = N / r._width, - g = b / r._height; - r._adjustChildScaleOrSize(s, g, "size"), r._width = N, r._height = b - }, bb.prototype._adjustChildScaleOrSize = function (B, P, v) { - var l, Y, C, f, p, o, s, u, X, J, m, E, n, K, b = this, - w = b._position, - h = b._entities, - R = new se.Math.Matrix2d; - for (Y = 0, C = h.length; C > Y; Y++) - if (l = h[Y], b.isNode(l)) { - if (f = l.getPosition(), p = l.getRotation(), o = l.getWidth(), s = l.getHeight(), u = l.getScale(), m = u.x * o, E = u.y * s, R.identity().scale(m, E).rotate(p).translate(f.x, f.y).translate(-w.x, -w.y).rotate(-b._64O), p = D(R.b * Math.sign(m), R.a * Math.sign(m)), R.scale(B, P), X = Math.cos(p), J = Math.sin(p), Math.abs(X) < .001 ? (n = R.b / J, K = -R.c / J) : (n = R.a / X, K = R.d / X), "scale" === v) l.setScale(n / o, K / s); - else if ("size" === v) { - var M = n / u.x, - g = K / u.y; - l.setScale(he(n) * Math.abs(u.x), he(K) * Math.abs(u.y)), l.setSize(Math.max(.1, Math.abs(M)), Math.max(.1, Math.abs(g))) - } - R.rotate(b._64O).translate(w.x, w.y), l.setPosition(R.tx, R.ty) - } - }, bb.prototype.getMatrix = function () { - var e = this, - W = e._position, - $ = O.Default.getInternal(), - j = e._scale; - return new $.Mat(e._64O, W.x, W.y, j.x, j.y) - }, bb.prototype.toGlobal = function (M) { - return this.getMatrix().tf(M) - }, bb.prototype.getCorners = function () { - var R = this, - x = R._width, - t = R._height, - O = R._anchor, - k = -x * O.x, - w = -t * O.y, - J = R.getMatrix(); - return [J.tf(k, w), J.tf(k, w + t), J.tf(k + x, w + t), J.tf(k + x, w)] - }, bb.prototype.calcInfo = function () { - var f, L, F, o, u, W, $ = this, - V = [], - b = $._entities, - G = $._64O; - for (o = 0, u = b.length; u > o; o++) W = b[o], $.isNode(W) && W.getCorners && V.push.apply(V, W.getCorners()); - if (V.length) { - var P = Math.cos(-G), - Z = Math.sin(-G), - X = 1 / 0, - M = -1 / 0, - Y = 1 / 0, - J = -1 / 0; - for (o = 0, u = V.length; u > o; o++) F = V[o], f = F.x, L = F.y, F.x = P * f - Z * L, F.y = Z * f + P * L, X = Math.min(X, F.x), M = Math.max(M, F.x), Y = Math.min(Y, F.y), J = Math.max(J, F.y); - $._width = (M - X) / $._scale.x, $._height = (J - Y) / $._scale.y, P = Math.cos(G), Z = Math.sin(G); - var s = $._anchor; - f = X + (M - X) * s.x, L = Y + (J - Y) * s.y, $._position = { - x: P * f - Z * L, - y: Z * f + P * L - } - } - }, bb.prototype.isNode = function (n) { - return Fq(n) ? Th(n) ? n.size() ? !1 : !0 : !0 : !1 - }, bb.prototype._42 = function (N, Z, c) { - var R, u, s, q, X, E, P, $, j = this, - r = j._entities, - S = j.rotateMode; - for ("batch" === S && ($ = j.getKeyOb()), R = 0, u = r.length; u > R; R++) s = r[R], j.isNode(s) && (E = s.getRect(), q = se.toScreenPosition(c, { - x: E.x, - y: E.y - }), X = se.toScreenPosition(c, { - x: E.x + E.width, - y: E.y + E.height - }), P = { - min: q, - max: X - }, s === $ && (P.isKeyOb = !0), se.Icons.DrawIcon(N, Z, se.Icons.GroupSubEntityRect, P)) - }; - var bp = se.CurveActiving = function (T, r) { - this._curve = T, this._interactor = T._interactor, this.silent = !0; - for (var x in r) this[x] = r[x]; - delete this.silent - }; - bp.prototype = {}, bp.prototype.constructor = bp, o.defineProperties(bp.prototype, { - point: { - get: function () { - return this._point - }, set: function (S) { - var f = this; - f._point = S, f.editingCtrl || f.silent || f._firePointChange() - } - }, - pairs: { - get: function () { - return this._pairs - }, set: function (l) { - var J = this; - J._pairs = l, J.editingCtrl && !J.silent && J._firePointChange() - } - } - }), bp.prototype._firePointChange = function () { - var J = this, - j = J.getCurrentEditingPoint(), - i = J._interactor; - if (!j) return i.fi({ - kind: "selectPoint" - }), void 0; - var e = this._curve.target; - if (e) { - var o = se.getDataMatrix(e).invert(), - t = j.e; - j = o.apply(se.toWorldPosition(i.gv, j)), j.e = t; - var q = J._lastFirePoint; - q && Math.abs(j.x - q.x) < 1e-5 && Math.abs(j.y - q.y) < 1e-5 && (j.e == Z && q.e == Z || Math.abs(j.e - q.e) < 1e-5) || (J._lastFirePoint = j, i.fi({ - kind: "selectPoint", - x: j.x, - y: j.y, - e: j.e - })) - } - }, bp.prototype.dispose = function () { - this._interactor.fi({ - kind: "selectPoint" - }) - }, bp.prototype.getCurrentEditingPoint = function () { - var l = this, - d = l.editingCtrl; - if (d) { - var O = l.pairs; - if (O) { - var t = O[d.pairId]; - if (t) { - var S = t[d.type]; - if (S) return S - } - } - } - return l._point - }; - var Rf = se.CursorFactory = function (q) { - var V = this; - V._interactor = q, V._rotateCursorStyles = {} - }; - Rf.prototype = {}, Rf.prototype.constructor = Rf, Rf.prototype.getRotateCursor = function (E) { - var q = this; - 0 > E && (E += 2 * Math.PI); - var D = q._interactor, - o = D.getStyle("rotateCursorSize"), - c = D.getStyle("rotateCursorRound"), - U = Math.round(180 * (E / Math.PI) / c); - U * c >= 360 && (U = 0); - var A = q._rotateCursorStyles, - M = "htCustomRotateStyle_" + o + "_" + c + "_" + U; - return A[M] || (q._produceRotateCursor(M, o, c, U), A[M] = !0), M - }, Rf.prototype._produceRotateCursor = function (A, I, N, M) { - var E = this; - E._interactor; - var j = E._canvas; - j || (j = E._canvas = U.createElement("canvas")), j.width = j.height = I * devicePixelRatio, j.style.width = j.style.height = I + " px"; - var L = j.getContext("2d"); - se.setAntialias(L, !1), L.scale(devicePixelRatio, devicePixelRatio); - var e, o, X, z, B, S = Math.round(I / 2), - x = "" + S + " " + S + ",auto !important;", - D = 4; - e = Math.PI / 180 * M * N, L.clearRect(0, 0, I, I), L.save(), L.scale(I / 32, I / 32), L.translate(16, 15), L.rotate(e + Math.PI / 2), L.beginPath(), L.moveTo(-8, 0), L.lineTo(-8, D), L.lineTo(-8 + D, D), L.moveTo(8, 0), L.lineTo(8, D), L.lineTo(8 - D, D), L.moveTo(-8, D), L.quadraticCurveTo(0, -6, 8, D), L.restore(), L.lineCap = "round", L.lineJoin = "miter", L.strokeStyle = "white", L.lineWidth = 4, L.stroke(), L.strokeStyle = "black", L.lineWidth = 2, L.stroke(), o = JSON.stringify(j.toDataURL()), z = "cursor:url(" + o + ")" + x, 1 !== devicePixelRatio && (X = '', z += "cursor:url(data:image/svg+xml;base64," + btoa(X) + ")" + x, z += "cursor:-webkit-image-set(url(" + o + ")" + devicePixelRatio + "x,url(" + o + ")1x)" + x), B = U.createElement("style"), B.textContent = "body." + A + " *, ." + A + "{" + z + "}", U.head.appendChild(B) - }; - var pi = se.Guide.Grid = function (S) { - var W = this; - W._interactor = S, W._alignmentGuideId = 0, W._xAlignmentGuide = [], W._yAlignmentGuide = [] - }; - pi.prototype = {}, pi.prototype.constructor = pi, o.defineProperties(pi.prototype, { - gridBlockSize: { - get: function () { - var L = this; - return L._gridBlockSize || L._interactor.getStyle("gridBlockSize") - }, set: function (a) { - this._gridBlockSize = a, this._interactor._42() - } - }, - gridThickLinesEvery: { - get: function () { - var b = this; - return b._gridThickLinesEvery || b._interactor.getStyle("gridThickLinesEvery") - }, set: function (p) { - this._gridThickLinesEvery = p, this._interactor._42() - } - }, - gridEnabled: { - get: function () { - var R = this, - t = R._interactor; - return t.gridEnabled && R.isValidGrid() - } - } - }), pi.prototype._42 = function () { - var Q = this, - M = Q._interactor; - Q.gridEnabled && Q.drawGrid(), M.alignmentGuideEnabled && Q.drawAlignmentGuide() - }, pi.prototype.makeMatrix = function () { - var k = this, - i = k._interactor.getStyle("gridAngle"), - v = k._interactor.getStyle("gridRotation"), - R = new se.Math.Matrix2d, - u = Math.sin(i), - $ = Math.cos(i); - return R.set(1, 0, $, u, 0, 0), R.rotate(v), R - }, pi.prototype.isValidGrid = function () { - var d = this, - T = Math.PI, - O = d._interactor, - Y = O.gv; - if (Y._zoom < O.getStyle("gridZoomThreshold")) return !1; - var I = O.getStyle("gridAngle"), - b = Math.abs(180 * (I % T / T)), - C = 1 - 1e-8; - return C > b || b > 180 - C ? !1 : !0 - }, pi.prototype.drawAlignmentGuide = function () { - var $ = this, - C = $._interactor, - l = C.gv, - Q = C._canvas, - k = C._context, - x = Q.width, - M = Q.height, - i = l.tx(), - K = l.ty(), - n = l._zoom; - k.beginPath(), k.strokeStyle = C.getStyle("gridAlignmentGuideColor"), k.lineWidth = 1, $._xAlignmentGuide.forEach(function (r) { - var L = r.p * n + i; - k.moveTo(L, 0), k.lineTo(L, M) - }), $._yAlignmentGuide.forEach(function (M) { - var _ = M.p * n + K; - k.moveTo(0, _), k.lineTo(x, _) - }), k.stroke() - }, pi.prototype.drawGrid = function () { - function g(T, $, F, m) { - var K = se.toScreenPosition(i, v.apply({ - x: T, - y: $ - })), - t = se.toScreenPosition(i, v.apply({ - x: F, - y: m - })); - c.moveTo(K.x, K.y), c.lineTo(t.x, t.y) - } - var Y = this, - s = Y._interactor, - F = Y.gridBlockSize, - P = Y.gridThickLinesEvery, - o = s.getStyle("gridThickColor"), - t = s.getStyle("gridLightColor"), - i = s.gv, - X = s._canvas, - c = s._context, - z = X.width, - h = X.height, - v = Y.makeMatrix(), - Q = v.applyInverse(se.toWorldPosition(i, { - x: 0, - y: 0 - })), - I = v.applyInverse(se.toWorldPosition(i, { - x: z, - y: 0 - })), - n = v.applyInverse(se.toWorldPosition(i, { - x: 0, - y: h - })), - f = v.applyInverse(se.toWorldPosition(i, { - x: z, - y: h - })), - u = Math.min(Q.x, I.x, n.x, f.x), - S = Math.max(Q.x, I.x, n.x, f.x), - a = Math.min(Q.y, I.y, n.y, f.y), - C = Math.max(Q.y, I.y, n.y, f.y); - z = S - u, h = C - a; - var K = Math.ceil(u / F), - d = Math.floor(S / F), - T = Math.ceil(a / F), - $ = Math.floor(C / F); - i.tx(), i.ty(), i._zoom; - var j, D, r; - for (c.save(), c.lineWidth = 1, c.beginPath(), c.strokeStyle = o, r = Math.ceil(K / P) * P; d >= r; r += P) j = r * F, g(j, a, j, C); - for (r = Math.ceil(T / P) * P; $ >= r; r += P) D = r * F, g(u, D, S, D); - for (c.stroke(), c.beginPath(), c.strokeStyle = t, r = K; d >= r; r++) 0 !== r % P && (j = r * F, g(j, a, j, C)); - for (r = T; $ >= r; r++) 0 !== r % P && (D = r * F, g(u, D, S, D)); - c.stroke(), c.restore() - }, pi.prototype.getAlignmentGuides = function () { - var Q = this; - return { - x: Q._xAlignmentGuide, - y: Q._yAlignmentGuide - } - }, pi.prototype.addAlignmentGuide = function (t, g, A) { - var B = this, - y = "x" === t ? B._xAlignmentGuide : B._yAlignmentGuide, - A = A ? A : ++B._alignmentGuideId, - G = { - p: g, - id: A - }; - if (y.length) { - var K = B._findClosestAlignmentGuide(G.p, y); - K.dis < 0 ? y.splice(K.index + 1, 0, G) : y.splice(K.index, 0, G) - } else y.push(G); - return B._interactor._42(), A - }, pi.prototype.findClosest = function (K, n, F) { - var k = this, - U = k._interactor, - i = U.gv; - F && (K = se.toWorldPosition(i, K)); - var H, b, f, X = 1 / 0, - r = 1 / 0, - h = K.x, - u = K.y; - if (k.gridEnabled) { - var S = k.gridBlockSize, - R = k.makeMatrix(), - W = R.applyInverse(K); - W = R.apply({ - x: Math.round(W.x / S) * S, - y: Math.round(W.y / S) * S - }), X = W.x - h, r = W.y - u, f = !0 - } - if (U.alignmentGuideEnabled && (H = k._findClosestAlignmentGuide(h, k._xAlignmentGuide).dis, b = k._findClosestAlignmentGuide(u, k._yAlignmentGuide).dis, Math.abs(H) < Math.abs(X) && (X = H, f = !0), Math.abs(b) < Math.abs(r) && (r = b, f = !0)), f) { - f = !1; - var E = i._zoom, - p = U.getStyle("smartGuideThreshold") / E, - $ = {}; - if (Math.abs(X) < p && "y" !== n && ($.x = F ? X * E : X, f = !0), Math.abs(r) < p && "x" !== n && ($.y = F ? r * E : r, f = !0), f) return $ - } - }, pi.prototype._findClosestAlignmentGuide = function (B, N) { - if (!N.length) return { - dis: 1 / 0 - }; - for (var G, V = 0, b = N.length - 1; b - V > 1;) G = Math.floor((V + b) / 2), N[G].p < B ? V = G : b = G; - var D = N[V].p - B, - l = N[b].p - B; - return Math.abs(D) <= Math.abs(l) ? { - line: N[V], - dis: D, - index: V - } : { - line: N[b], - dis: l, - index: b - } - }, pi.prototype.removeAllAlignmentGuide = function (k) { - var B = this; - "y" !== k && (B._xAlignmentGuide = []), "x" !== k && (B._yAlignmentGuide = []), B._interactor._42() - }, pi.prototype.removeAlignmentGuide = function (c) { - for (var L, A, U, V = this, g = V._xAlignmentGuide, F = 0; 2 > F; F++) - for (g = 0 === F ? V._xAlignmentGuide : V._yAlignmentGuide, L = 0, A = g.length; A > L; L++) - if (U = g[L], U.id === c) return g.splice(L, 1), V._interactor._42(), { - axis: 0 === F ? "x" : "y", - position: U.p - }; - return !1 - }, pi.prototype.adjustAlignmentGuide = function (X, V) { - var D = this, - y = D.removeAlignmentGuide(X); - return y ? (D.addAlignmentGuide(y.axis, V, X), !0) : !1 - }; - var yf = se.Guide.Rect = function (i) { - var $ = this; - $._interactor = i - }; - yf.prototype = {}, yf.prototype.constructor = yf, yf.prototype.gatherRects = function () { - var O, E, l, Q, j = this, - t = j._interactor.gv, - V = [], - s = [], - M = { - x: V, - y: s - }, - m = {}, - K = t.getDataModel(), - F = K.a("width"), - v = K.a("height"); - F && v && (O = 0, E = 0, l = F, Q = v, V.push({ - node: K, - type: 0, - p: O - }, { - node: K, - type: 1, - p: O + l / 2 - }, { - node: K, - type: 2, - p: O + l - }), s.push({ - node: K, - type: 0, - p: E - }, { - node: K, - type: 1, - p: E + Q / 2 - }, { - node: K, - type: 2, - p: E + Q - }), m[K._id || 0] = { - x: O, - y: E, - width: l, - height: Q - }), K.each(function (L) { - if (Fq(L) && !t.isSelected(L) && t.isVisible(L) && t.isValidGuideLineSource(L)) { - var W = !1; - if (t.sm().getSelection().each(function (I) { - W || (L.isHostOn(I) ? W = !0 : L.isDescendantOf(I) && (W = !0)) - }), !W) { - var u = L.getRect(); - O = u.x, E = u.y, l = u.width, Q = u.height, V.push({ - node: L, - type: 0, - p: O - }, { - node: L, - type: 1, - p: O + l / 2 - }, { - node: L, - type: 2, - p: O + l - }), s.push({ - node: L, - type: 0, - p: E - }, { - node: L, - type: 1, - p: E + Q / 2 - }, { - node: L, - type: 2, - p: E + Q - }), m[L._id] = u - } - } - }), V.sort(function (y, i) { - return y.p - i.p - }), s.sort(function (x, r) { - return x.p - r.p - }), j._grid = M, j._87I = m - }, yf.prototype.gatherLines = function (R, $, Q) { - var k, r, u, T, F, G, U, z, X, x, a, y, q = this, - i = [q.findClosest({ - x: R.x, - y: R.y - }, $), q.findClosest({ - x: R.x + R.w / 2, - y: R.y + R.h / 2 - }, $), q.findClosest({ - x: R.x + R.w, - y: R.y + R.h - }, $)], - V = {}, - g = q._87I; - Q = Q || 255; - var N, o; - for (q._guideLine = [], k = 0; 2 > k; k++) - for (V = {}, 0 === k ? (T = "y", z = R.x, X = z + R.w) : (T = "x", z = R.y, X = z + R.h), r = 0; 3 > r; r++) F = i[r], F && isFinite(F[T]) && (N = 1 << 3 * k + r, Q & N && (G = F[T + "Line"], U = G.node, o = U._id || 0, V[o] || (V[o] = !0, y = g[o], "y" === T ? (x = y.x, a = y.x + y.width) : (x = y.y, a = y.y + y.height), u = G.p, q._guideLine.push({ - type: T, - a: z, - b: X, - c: x, - d: a, - p: u, - center: 1 === G.type - })))) - }, yf.prototype._binarySearchClosest = function (N, j) { - if (!j.length) return { - dis: 1 / 0 - }; - for (var $, p = 0, n = j.length - 1; n - p > 1;) $ = Math.floor((p + n) / 2), j[$].p < N ? p = $ : n = $; - var t = j[p].p - N, - D = j[n].p - N; - return Math.abs(t) <= Math.abs(D) ? { - line: j[p], - dis: t - } : { - line: j[n], - dis: D - } - }, yf.prototype.findClosest = function (p, i, f) { - var V = this, - G = V._interactor, - e = G.gv, - L = V._grid; - f && (p = se.toWorldPosition(e, p)); - var b, t = V._binarySearchClosest(p.x, L.x), - m = V._binarySearchClosest(p.y, L.y), - J = t.dis, - C = m.dis, - M = e._zoom, - w = G.getStyle("smartGuideThreshold") / M, - $ = {}; - return Math.abs(J) < w && "y" !== i && ($.x = f ? J * M : J, $.xLine = t.line, b = !0), Math.abs(C) < w && "x" !== i && ($.y = f ? C * M : C, $.yLine = m.line, b = !0), b ? $ : void 0 - }, yf.prototype._42 = function () { - var C = this, - T = C._guideLine; - if (T && !O.Default.isCtrlDown()) { - var $ = C._interactor; - if ($.getStyle("guideLineVisible")) { - var _, I, G, R, E, V, m, o, l, c, P, K, M, H, W, Q, U, B = $.gv, - J = $._context, - k = B.tx(), - p = B.ty(), - A = B._zoom, - r = $.getStyle("guideLineTextSpacing"); - for (_ = 0, I = T.length; I > _; _++) G = T[_], o = G.type, l = G.p, c = G.a, P = G.b, K = G.c, M = G.d, H = Math.min(c, K), W = Math.max(P, M), "x" === o ? (R = l * A + k, E = H * A + p, V = R, m = W * A + p) : (R = H * A + k, E = l * A + p, V = W * A + k, m = E), se.Icons.DrawIcon($, J, se.Icons.MoveLineGuide, { - rect: [R, E, V, m], - center: G.center - }), M >= c && P >= K || (H = c > M ? M : P, W = c > M ? c : K, U = W - H, "x" === o ? (G.center2center || (R -= r, V = R), E = H * A + p, m = W * A + p, Q = se.Icons.MoveLineGuideDistanceV) : "y" === o && (G.center2center || (E -= r, m = E), R = H * A + k, V = W * A + k, Q = se.Icons.MoveLineGuideDistanceH), se.Icons.DrawIcon($, J, Q, { - x0: R, - y0: E, - x1: V, - y1: m, - dis: U - })) - } - } - }, yf.prototype.clear = function () { - this._guideLine = null - }; - var Aq = se.Guide.Hover = function (p) { - var v = this; - v._interactor = p - }; - Aq.prototype = {}, Aq.prototype.constructor = Aq, o.defineProperties(Aq.prototype, {}), Aq.prototype._42 = function () { - var b = this._interactor; - if (b.getStyle("hoverGuideVisible") && !b.gvEditing) { - var g = b.hoverData, - Y = b.gv; - if (!Fq(g) || Y.isSelected(g)) return b.hoverData = null, void 0; - var t = Rp(Y, g), - G = se.toScreenPosition(Y, { - x: t.x, - y: t.y - }), - L = se.toScreenPosition(Y, { - x: t.x + t.width, - y: t.y + t.height - }); - se.Icons.DrawIcon(b, b._context, se.Icons.HoverDataRect, { - min: G, - max: L, - color: b.getStyle("hoverGuideColor") || b.getStyle("baseColor") - }) - } - }, se.DefaultStyleMap = { - baseColor: "rgb(51,153,255)", - pointSize: [24, 9], - checkSize: 7, - rotateCheckSize: 10, - moveSensitivity: 10, - moveDummyThreshold: 32, - moveDummyPosition: [0, 0, -16, -16], - moveDummyLineExtraShift: [-32, 0], - moveDummySensitivity: 16, - keepAspectRatio: !1, - rotateRound: Math.PI / 2, - shiftRotateRound: Math.PI / 12, - rotateSensitivity: Math.PI / 60, - rotateAsClock: !1, - shiftLineRotateRound: Math.PI / 4, - anchorMovable: !0, - anchorVisible: !0, - anchorHideThreshold: 25, - anchorOutsideVisibleThreshold: .25, - anchorRound: .25, - anchorSensitivity: .02, - smartGuideThreshold: 8, - curveIntersectSize: 5, - curvePointIntersectSize: 8, - edgeHostDetectPerFrame: !0, - edgeHostEdgeMaxDistance: 12, - edgeHostEdgeHighlighColor: "#5d5d5d", - edgeHostPointHighlighColor: "red", - edgeHostHighlighPeriod: 1500, - edgeElevationEditable: !1, - attachThreshold: 25, - guideLineVisible: !0, - guideLineTextSpacing: 0, - hoverGuideVisible: !1, - hoverGuideColor: null, - gridBlockSize: 40, - gridThickLinesEvery: 10, - gridThickColor: "#5d5d5d", - gridLightColor: "#d0d0d0", - gridZoomThreshold: .25, - gridAlignmentGuideColor: "#ff0000", - gridAngle: Math.PI / 2, - gridRotation: 0, - groupRotateModeDefault: "block", - groupRotateModeKey: ["ctrlKey", "metaKey"], - rotateCursorSize: 32, - rotateCursorRound: 45, - tipTextColor: "#ffffff", - tipBackground: "#333333", - curveHighlightColor: "#30599e", - rectPointBackground: "white", - rectPointBorderColor: "#666666", - rectPointShadowColor: "rgba(0,0,0,0.35)", - shapeCtrlPointBackground: "white", - shapeCtrlPointBorderColor: null, - shapeCtrlPointHighlightBorder: null, - shapeHighlighPointBackground: "#30599e", - curveElevationVisible: !0, - curveElevationIntersectSize: 8, - curveElevationGuideShift: [20, 0], - curveTipVisible: !0, - connectGuideVisible: !0, - connectGuideShift: [1, .25, 8, 0], - connectGuideIntersectSize: 8, - connectGuideGarbageIntersectsize: 25, - connectGuideGarbageShift: [1, 1, -48, -48] - }; - var Kp = se.Icons = {}, - bs = 1e4, - je = null, - ci = se.DefaultStyleMap.baseColor, - Sb = "rgb(183,232,135)", - yk = "rgb(255,204,153)", - ho = 6; - O.Default.setImage("Icons.RectPoint", { - width: ho, - height: ho, - comps: [{ - type: "rect", - background: "rgb(247,247,247)", - borderWidth: 1, - borderColor: { - func: function () { - return ci - } - }, - rect: [0, 0, ho, ho] - }] - }), Kp.GroupSubEntityRect = { - comps: [{ - type: "shape", - points: { - func: function () { - var Y = Kp.GroupSubEntityRect.data; - if (!Y) return []; - var S = Y.min, - I = Y.max; - return [S.x, S.y, S.x, I.y, I.x, I.y, I.x, S.y] - } - }, - segments: [1, 2, 2, 2, 5], - background: null, - borderWidth: 1, - borderColor: { - func: function () { - return Kp.GroupSubEntityRect.data.isKeyOb ? ci : ci - } - } - }] - }; - var ak = 4; - Kp.HoverDataRect = { - comps: [{ - type: "shape", - points: { - func: function () { - var D = Kp.HoverDataRect.data; - if (!D) return []; - var b = D.min, - G = D.max, - J = ak; - return b.x -= J, b.y -= J, G.x += J, G.y += J, [b.x, b.y, b.x, G.y, G.x, G.y, G.x, b.y] - } - }, - segments: [1, 2, 2, 2, 5], - background: null, - borderWidth: 1, - borderColor: { - func: function () { - return Kp.HoverDataRect.data.color - } - }, - borderCap: "round", - borderPattern: [1, 4] - }] - }, Kp.Line = { - comps: [{ - type: "image", - name: "Icons.RectPoint", - rect: { - func: function () { - return [[Kp.Line.data.P1.x, Kp.Line.data.P1.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rect: { - func: function () { - return [[Kp.Line.data.P2.x, Kp.Line.data.P2.y], ho, ho] - } - } - }] - }, Kp.NodeHoverGuide = { - comps: [{ - type: "shape", - points: { - func: function () { - return Kp.NodeHoverGuide.data - } - }, - segments: [1, 2, 2, 2, 5], - background: null, - borderWidth: 1, - borderColor: "#3399FF" - }] - }, Kp.Rect = { - comps: [{ - type: "shape", - points: { - func: function () { - var n = Kp.Rect.data; - if (!n) return []; - var h = n.LT, - V = n.LB, - o = n.RB, - C = n.RT; - return [h.x, h.y, V.x, V.y, o.x, o.y, C.x, C.y] - } - }, - segments: [1, 2, 2, 2, 5], - background: null, - borderWidth: 1, - borderColor: { - func: function () { - return ci - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.LT.x, Kp.Rect.data.LT.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.LB.x, Kp.Rect.data.LB.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.RB.x, Kp.Rect.data.RB.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.RT.x, Kp.Rect.data.RT.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - visible: { - func: function () { - return Kp.Rect.data.L ? !0 : !1 - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.L.x, Kp.Rect.data.L.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - visible: { - func: function () { - return Kp.Rect.data.R ? !0 : !1 - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.R.x, Kp.Rect.data.R.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - visible: { - func: function () { - return Kp.Rect.data.T ? !0 : !1 - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.T.x, Kp.Rect.data.T.y], ho, ho] - } - } - }, { - type: "image", - name: "Icons.RectPoint", - rotation: { - func: function () { - return Kp.Rect.data.rotation - } - }, - visible: { - func: function () { - return Kp.Rect.data.B ? !0 : !1 - } - }, - rect: { - func: function () { - return [[Kp.Rect.data.B.x, Kp.Rect.data.B.y], ho, ho] - } - } - }] - }; - var Bs = 16; - O.Default.setImage("Icons.Anchor", { - width: 12, - height: 12, - comps: [{ - type: "shape", - borderWidth: 1, - borderColor: { - func: function () { - return ci - } - }, - borderCap: "round", - shadowColor: "#1ABC9C", - points: [.50928, 6, 11.49072, 6, 6, 6, 6, .50928, 6, 11.49072] - }, { - type: "circle", - borderWidth: 1, - borderColor: { - func: function () { - return ci - } - }, - shadowColor: "#1ABC9C", - rect: [2.84391, 2.84391, 6.53697, 6.53697] - }] - }), Kp.Anchor = { - comps: [{ - type: "image", - name: "Icons.Anchor", - rect: { - func: function () { - return [[Kp.Anchor.data.POS.x, Kp.Anchor.data.POS.y], Bs, Bs] - } - } - }] - }, Kp.TipShiftX = 12, Kp.TipShiftY = 12; - var yr = [8, 28]; - Kp.TipHelper = { - comps: [{ - type: "roundRect", - rect: { - func: function () { - return [Kp.TipHelper.data.helperPos.x, Kp.TipHelper.data.helperPos.y, yr[0] * Kp.TipHelper.data.size, yr[1]] - } - }, - background: { - func: function () { - return je.getStyle("tipBackground") - } - }, - opacity: .6 - }, { - type: "text", - text: { - func: function () { - return Kp.TipHelper.data.text - } - }, - rect: { - func: function () { - return [Kp.TipHelper.data.helperPos.x, Kp.TipHelper.data.helperPos.y, yr[0] * Kp.TipHelper.data.size, yr[1]] - } - }, - color: { - func: function () { - return je.getStyle("tipTextColor") - } - }, - font: "bold 12px Arial", - align: "center" - }] - }; - var Ih = 7; - Kp.ShapePoint = { - comps: [{ - type: "circle", - visible: { - func: function () { - return !!Kp.ShapePoint.data.dynamicVisible - } - }, - rect: { - func: function () { - var x = Kp.ShapePoint.data.point, - y = Kp.ShapePoint.data.size || Ih; - return [x, y + 10, y + 10] - } - }, - background: { - func: function () { - var L = Date.now(), - P = Kp.ShapePoint.data.dynamicPeriod || 1500, - p = Math.sin(L % P / P * Math.PI); - return "rgba(27,124,22," + .5 * p + ")" - } - }, - borderWidth: 0 - }, { - type: "circle", - rect: { - func: function () { - var r = Kp.ShapePoint.data.point, - I = Kp.ShapePoint.data.size || Ih; - return [r, I, I] - } - }, - background: { - func: function () { - var l = Kp.ShapePoint.data.isEnd; - return l ? "rgba(27,124,222,0.7)" : "#ffffff" - } - }, - borderWidth: 1, - borderColor: { - func: function () { - return Kp.ShapePoint.data.color || ci - } - } - }, { - type: "rect", - visible: { - func: function () { - return !!Kp.ShapePoint.data.dynamicVisible - } - }, - background: "red", - borderWidth: 0, - rotation: Math.PI / 4, - borderColor: { - func: function () { - return ci - } - }, - rect: { - func: function () { - var I = 5; - return [Kp.ShapePoint.data.point, I, I] - } - } - }] - }, Kp.ShapeBgCurve = { - comps: [{ - type: "shape", - visible: { - func: function () { - return !!Kp.ShapeBgCurve.data.dynamicVisible - } - }, - points: { - func: function () { - return Kp.ShapeBgCurve.data.P - } - }, - segments: { - func: function () { - return Kp.ShapeBgCurve.data.S - } - }, - background: null, - borderWidth: 6, - borderColor: { - func: function () { - var L = Date.now(), - A = Kp.ShapeBgCurve.data.dynamicPeriod || 1500, - J = Math.sin(L % A / A * Math.PI); - return "rgba(27,124,22," + .3 * J + ")" - } - } - }, { - type: "shape", - points: { - func: function () { - return Kp.ShapeBgCurve.data.P - } - }, - segments: { - func: function () { - return Kp.ShapeBgCurve.data.S - } - }, - background: null, - borderWidth: 1, - borderColor: { - func: function () { - return Kp.ShapeBgCurve.data.color || ci - } - } - }] - }; - var Lf = 8; - Kp.ShapeHighlighPoint = { - comps: [{ - type: "circle", - rect: { - func: function () { - var T = Kp.ShapeHighlighPoint.data; - return [[T.x, T.y], Lf, Lf] - } - }, - background: { - func: function () { - return je.getStyle("shapeHighlighPointBackground") - } - }, - borderWidth: 0 - }] - }; - var rn = 10; - Kp.ShapeHighlighRealPoint = { - comps: [{ - type: "circle", - rect: { - func: function () { - var n = Kp.ShapeHighlighRealPoint.data; - return [[n.x, n.y], rn, rn] - } - }, - background: "#ffffff", - borderWidth: 2, - borderColor: { - func: function () { - return ci - } - } - }] - }; - var qi = 8; - Kp.ShapeHighlighCtrlPoint = { - comps: [{ - type: "shape", - points: { - func: function () { - var c = Kp.ShapeHighlighCtrlPoint.data, - m = c.x, - j = c.y, - o = qi / 2; - return [m - o, j - o, m - o, j + o, m + o, j + o, m + o, j - o] - } - }, - segments: [1, 2, 2, 2, 5], - borderWidth: 2, - background: { - func: function () { - return je.getStyle("shapeCtrlPointBackground") - } - }, - borderColor: { - func: function () { - return je.getStyle("shapeCtrlPointBorderColor") || ci - } - } - }] - }; - var or = 3; - Kp.ShapeHighlightCurve = { - comps: [{ - type: "shape", - points: { - func: function () { - return Kp.ShapeHighlightCurve.data - } - }, - segments: [1, 4], - background: null, - borderWidth: or, - borderColor: { - func: function () { - return je.getStyle("curveHighlightColor") - } - } - }] - }, Kp.ShapeGuideLine = { - comps: [{ - type: "shape", - points: { - func: function () { - return Kp.ShapeGuideLine.data - } - }, - background: null, - borderWidth: 1, - borderColor: "rgb(255,204,153)" - }] - }, Kp.MoveLineGuide = { - comps: [{ - type: "shape", - points: { - func: function () { - return Kp.MoveLineGuide.data.rect - } - }, - background: null, - borderWidth: 1, - borderColor: { - func: function () { - return Kp.MoveLineGuide.data.center ? Sb : yk - } - } - }] - }; - var ei = 5; - Kp.MoveLineGuideDistanceH = { - comps: [{ - type: "shape", - points: { - func: function () { - var y = Kp.MoveLineGuideDistanceH.data, - n = y.x0, - v = y.y0; - return [n, v - ei, n, v + ei] - } - }, - rotation: -Math.PI / 4, - segments: [1, 2], - background: null, - borderWidth: 1, - borderColor: yk - }, { - type: "shape", - points: { - func: function () { - var R = Kp.MoveLineGuideDistanceH.data, - c = R.x1, - D = R.y1; - return [c, D - ei, c, D + ei] - } - }, - rotation: -Math.PI / 4, - segments: [1, 2], - background: null, - borderWidth: 1, - borderColor: yk - }, { - type: "text", - text: { - func: function () { - return Math.round(Kp.MoveLineGuideDistanceH.data.dis) - } - }, - rect: { - func: function () { - var T = Kp.MoveLineGuideDistanceH.data; - return [[(T.x0 + T.x1) / 2, T.y0 - 10], 20, 20] - } - }, - color: yk, - font: "12px Arial", - align: "center" - }] - }, Kp.MoveLineGuideDistanceV = { - comps: [{ - type: "shape", - points: { - func: function () { - var p = Kp.MoveLineGuideDistanceV.data, - I = p.x0, - D = p.y0; - return [I - ei, D, I + ei, D] - } - }, - rotation: Math.PI / 4, - segments: [1, 2], - background: null, - borderWidth: 1, - borderColor: yk - }, { - type: "shape", - points: { - func: function () { - var o = Kp.MoveLineGuideDistanceV.data, - g = o.x1, - b = o.y1; - return [g - ei, b, g + ei, b] - } - }, - rotation: Math.PI / 4, - segments: [1, 2], - background: null, - borderWidth: 1, - borderColor: yk - }, { - type: "text", - text: { - func: function () { - return Math.round(Kp.MoveLineGuideDistanceV.data.dis) - } - }, - rect: { - func: function () { - var G = Kp.MoveLineGuideDistanceV.data; - return [[G.x0 - 10, (G.y0 + G.y1) / 2], 20, 20] - } - }, - color: yk, - font: "12px Arial", - align: "center" - }] - }, O.Default.setImage("Icons.EdgeElevationGuideImage", { - width: 16, - height: 16, - comps: [{ - type: "oval", - background: "rgb(255,255,255)", - borderWidth: 1, - borderColor: "rgb(138,138,138)", - rect: [.5, .5, 15, 15] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(44,44,44)", - borderCap: "round", - points: [4, 8, 8, 4, 12, 8, 8, 4, 8, 13], - segments: [1, 2, 2, 1, 2] - }] - }), Kp.EdgeElevationGuide = { - comps: [{ - type: "image", - name: "Icons.EdgeElevationGuideImage", - rect: { - func: function () { - var j = Kp.EdgeElevationGuide.data, - v = j.x, - s = j.y, - M = je.getStyle("curveElevationIntersectSize"), - c = je.getStyle("curveElevationGuideShift"); - return v += c[0], s += c[1], [v - M, s - M, 2 * M, 2 * M] - } - } - }] - }, O.Default.setImage("Icons.ConnectGuideBgImage", { - width: 12, - height: 12, - comps: [{ - type: "shape", - background: "#3399ff", - fillRule: "evenodd", - shadowColor: "#1ABC9C", - rotation: 3.14159, - points: [6.00001, 11.99999, 6.00001, 11.99999, 2.6863, 11.99999, 1e-5, 9.30695, 1e-5, 5.99999, 1e-5, 5.99999, 1e-5, 2.68628, 2.69305, -1e-5, 6.00001, -1e-5, 12.00001, -1e-5, 11.99998, 12.00001, 6.00001, 11.99999], - segments: [1, 2, 4, 2, 4, 2, 2, 2] - }] - }), O.Default.setImage("Icons.ConnectGuideHeaderImage", { - width: 12, - height: 12, - comps: [{ - type: "oval", - background: "#3399FF", - borderColor: "#3399FF", - shadowColor: "#1ABC9C", - rect: [0, 0, 12, 12] - }, { - type: "shape", - borderWidth: 1, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [4.76, 2.56, 8.2, 5.98, 4.76, 9.44] - }] - }), Kp.ConnectGuide = { - comps: [{ - type: "image", - name: "Icons.ConnectGuideBgImage", - rotation: { - func: function () { - return Kp.ConnectGuide.data.rotation - } - }, - rect: { - func: function () { - var N = Kp.ConnectGuide.data.connect; - N.x, N.y; - var i = je.getStyle("connectGuideIntersectSize"); - return [[N.x, N.y], 2 * i, 2 * i] - } - } - }, { - type: "image", - name: "Icons.ConnectGuideHeaderImage", - rect: { - func: function () { - var V = Kp.ConnectGuide.data.cursorPos || Kp.ConnectGuide.data.connect, - r = je.getStyle("connectGuideIntersectSize"); - return [[V.x, V.y], 2 * r - 2, 2 * r - 2] - } - } - }, { - type: "shape", - background: null, - borderColor: "#3399ff", - borderWidth: 2, - segments: [1, 4], - points: { - func: function () { - var E = Kp.ConnectGuide.data.connect, - F = Kp.ConnectGuide.data.cursorPos || E; - return [E.x, E.y, E.x + .5 * (F.x - E.x), E.y, F.x + .5 * (E.x - F.x), F.y, F.x, F.y] - } - } - }] - }, O.Default.setImage("Icons.ConnectGuideGarbageImage", { - width: 48, - height: 48, - comps: [{ - type: "oval", - background: "rgba(0,0,0,0.1)", - borderColor: "#979797", - shadowColor: "#1ABC9C", - rect: [0, 0, 48, 48] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [19.84721, 19.69091, 19.84721, 32.25123] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [24.10371, 19.69091, 24.10371, 32.25123] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [28.15279, 19.69091, 28.15279, 32.25123] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [11.23055, 15.22377, 36.76945, 15.189, 19.12302, 15.17121, 20.94722, 11.5228, 26.41985, 11.5228, 28.24406, 15.17121] - }, { - type: "rect", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - shadowColor: "#1ABC9C", - rect: [15.48702, 15.22377, 17.02595, 21.25344] - }] - }), O.Default.setImage("Icons.ConnectGuideDeletingImage", { - width: 56, - height: 56, - comps: [{ - type: "oval", - background: "rgba(232,0,0,0.75)", - borderColor: "#979797", - shadowColor: "#1ABC9C", - rect: [0, 0, 56, 56] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [22.67939, 27.69091, 22.67939, 40.25123] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [26.93588, 27.69091, 26.93588, 40.25123] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - points: [30.98497, 27.69091, 30.98497, 40.25123] - }, { - type: "shape", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - borderCap: "round", - shadowColor: "#1ABC9C", - anchorX: 0, - anchorY: 1, - rotation: 5.65062, - points: [14.06272, 23.22377, 39.60163, 23.189, 21.9552, 23.17121, 23.7794, 19.5228, 29.25203, 19.5228, 31.07623, 23.17121] - }, { - type: "rect", - borderWidth: 2, - borderColor: "rgb(255,255,255)", - shadowColor: "#1ABC9C", - rect: [18.3192, 23.22377, 17.02595, 21.25344] - }] - }), Kp.ConnectGuideGarbage = { - comps: [{ - type: "image", - name: { - func: function () { - var Q = Kp.ConnectGuideGarbage.data.hover; - return Q ? "Icons.ConnectGuideDeletingImage" : "Icons.ConnectGuideGarbageImage" - } - }, - rect: { - func: function () { - var d = Kp.ConnectGuideGarbage.data, - n = je.getStyle("connectGuideGarbageIntersectsize"); - return d.hover && (n += 5), [[d.x, d.y], 2 * n, 2 * n] - } - } - }] - }; - var ae = 6; - Kp.ShapeActivingCtrl = { - comps: [{ - type: "shape", - visible: { - func: function () { - return Kp.ShapeActivingCtrl.data.c1 ? !0 : !1 - } - }, - points: { - func: function () { - var h = Kp.ShapeActivingCtrl.data; - return [h.point.x, h.point.y, h.c1.x, h.c1.y] - } - }, - segments: [1, 2], - background: null, - borderWidth: 1, - borderColor: { - func: function () { - return ci - } - } - }, { - type: "shape", - visible: { - func: function () { - return Kp.ShapeActivingCtrl.data.c2 ? !0 : !1 - } - }, - points: { - func: function () { - var K = Kp.ShapeActivingCtrl.data; - return [K.point.x, K.point.y, K.c2.x, K.c2.y] - } - }, - segments: [1, 2], - background: null, - borderWidth: 1, - borderColor: { - func: function () { - return ci - } - } - }, { - type: "shape", - visible: { - func: function () { - return Kp.ShapeActivingCtrl.data.c1 ? !0 : !1 - } - }, - points: { - func: function () { - var x = Kp.ShapeActivingCtrl.data.c1, - f = x.x, - Q = x.y, - b = ae / 2; - return "c1" === Kp.ShapeActivingCtrl.data.hl && (b += .5), [f - b, Q - b, f - b, Q + b, f + b, Q + b, f + b, Q - b] - } - }, - segments: [1, 2, 2, 2, 5], - borderWidth: 2, - background: { - func: function () { - return je.getStyle("shapeCtrlPointBackground") - } - }, - borderColor: { - func: function () { - return "c1" === Kp.ShapeActivingCtrl.data.hl ? je.getStyle("shapeCtrlPointHighlightBorder") || ci : je.getStyle("shapeCtrlPointBorderColor") || ci - } - } - }, { - type: "shape", - visible: { - func: function () { - return Kp.ShapeActivingCtrl.data.c2 ? !0 : !1 - } - }, - points: { - func: function () { - var R = Kp.ShapeActivingCtrl.data.c2, - k = R.x, - X = R.y, - N = ae / 2; - return "c2" === Kp.ShapeActivingCtrl.data.hl && (N += .5), [k - N, X - N, k - N, X + N, k + N, X + N, k + N, X - N] - } - }, - segments: [1, 2, 2, 2, 5], - borderWidth: 2, - background: { - func: function () { - return je.getStyle("shapeCtrlPointBackground") - } - }, - borderColor: { - func: function () { - return "c2" === Kp.ShapeActivingCtrl.data.hl ? je.getStyle("shapeCtrlPointHighlightBorder") || ci : je.getStyle("shapeCtrlPointBorderColor") || ci - } - } - }] - }, Kp.RoundPoint = { - comps: [{ - type: "circle", - background: "rgb(247,247,247)", - borderWidth: 1, - borderColor: { - func: function () { - return ci - } - }, - rect: { - func: function () { - return [[Kp.RoundPoint.data.x, Kp.RoundPoint.data.y], ho, ho] - } - } - }] - }, Kp.AttachPoint = { - comps: [{ - type: "rect", - background: { - func: function () { - return Kp.AttachPoint.data.isAttach ? "rgb(51,153,255)" : "rgb(247,247,247)" - } - }, - borderWidth: 1, - rotation: Math.PI / 4, - borderColor: { - func: function () { - return ci - } - }, - rect: { - func: function () { - var i = Kp.AttachPoint.data.isAttach ? ho + 4 : ho; - return [[Kp.AttachPoint.data.x, Kp.AttachPoint.data.y], i, i] - } - } - }] - }, Kp.SimpleRect = { - comps: [{ - type: "rect", - background: null, - borderWidth: { - func: function () { - return Kp.SimpleRect.data.borderWidth || 1 - } - }, - borderColor: { - func: function () { - return Kp.SimpleRect.data.color || ci - } - }, - rect: { - func: function () { - var J = Kp.SimpleRect.data; - return [J.x, J.y, J.width, J.height] - } - } - }] - }, O.Default.setImage("Icons.MoveDummyImage", { - width: 32, - height: 32, - boundExtend: 12, - attachStyle: "close", - comps: [{ - type: "oval", - background: "rgb(255,255,255)", - borderColor: "#979797", - shadow: !0, - shadowColor: "rgba(0,0,0,0.25)", - shadowOffsetX: 0, - rect: [0, 0, 32, 32] - }, { - type: "shape", - background: "rgb(51,153,255)", - pixelPerfect: !0, - points: [8.65079, 11.90713, 9.05502, 11.46921, 9.70629, 11.46921, 10.11052, 11.90713, 10.51476, 12.28891, 10.51476, 12.92895, 10.11052, 13.34441, 8.49359, 14.97258, 12.2889, 14.97258, 12.85034, 14.97258, 13.29949, 15.42172, 13.29949, 15.99439, 13.29949, 16.57828, 12.85034, 17.0162, 12.2889, 17.0162, 8.49359, 17.0162, 10.11052, 18.6556, 10.51476, 19.0486, 10.51476, 19.7111, 10.11052, 20.09288, 9.70629, 20.50834, 9.05502, 20.50834, 8.65079, 20.09288, 5.32709, 16.76917, 5.28217, 16.71303, 4.87794, 16.32002, 4.87794, 15.67998, 5.28217, 15.26452, 8.65079, 11.90713, 8.65079, 11.90713, 8.65079, 11.90713, 13.3444, 10.09931, 13.3444, 10.09931, 12.94017, 10.50354, 12.2889, 10.50354, 11.88467, 10.09931, 11.48043, 9.69507, 11.48043, 9.0438, 11.88467, 8.63957, 15.27574, 5.25973, 15.66874, 4.86672, 16.32001, 4.86672, 16.73547, 5.25973, 16.76917, 5.31586, 20.10409, 8.63957, 20.50832, 9.0438, 20.50832, 9.68385, 20.10409, 10.09931, 19.69986, 10.49231, 19.07105, 10.50354, 18.64436, 10.09931, 17.02742, 8.45991, 17.02742, 12.26646, 17.02742, 12.83912, 16.55581, 13.31072, 15.99438, 13.31072, 15.43295, 13.31072, 14.98379, 12.83912, 14.98379, 12.26646, 14.96134, 8.45991, 13.3444, 10.09931, 13.3444, 10.09931, 13.3444, 10.09931, 21.90069, 13.33318, 21.90069, 13.33318, 21.49646, 12.91771, 21.49646, 12.27768, 21.90069, 11.89591, 22.31615, 11.45798, 22.94497, 11.45798, 23.36043, 11.89591, 26.72904, 15.2533, 27.12205, 15.66876, 27.12205, 16.3088, 26.72904, 16.7018, 26.6729, 16.75794, 23.36043, 20.08165, 22.94497, 20.49711, 22.31615, 20.49711, 21.90069, 20.08165, 21.49646, 19.69987, 21.49646, 19.03737, 21.90069, 18.64437, 23.51763, 17.00498, 19.72231, 17.00498, 19.14965, 17.00498, 18.71173, 16.56705, 18.71173, 15.98316, 18.71173, 15.41049, 19.14965, 14.96135, 19.72231, 14.96135, 23.51763, 14.96135, 21.90069, 13.33318, 21.90069, 13.33318, 21.90069, 13.33318, 11.88467, 23.32675, 11.88467, 23.32675, 11.48043, 22.94498, 11.48043, 22.27125, 11.88467, 21.88948, 12.2889, 21.48523, 12.94017, 21.48523, 13.3444, 21.88948, 14.96134, 23.52887, 14.98379, 19.7111, 14.98379, 19.14966, 15.43295, 18.67805, 15.99438, 18.67805, 16.55581, 18.67805, 17.02742, 19.14966, 17.02742, 19.7111, 17.02742, 23.52887, 18.64436, 21.88948, 19.07105, 21.48523, 19.69986, 21.48523, 20.10409, 21.88948, 20.50832, 22.27125, 20.50832, 22.94498, 20.10409, 23.32675, 16.76917, 26.65045, 16.73547, 26.72905, 16.32001, 27.13329, 15.66874, 27.13329, 15.27574, 26.72905, 11.88467, 23.32675, 11.88467, 23.32675, 11.88467, 23.32675], - segments: [1, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 1, 2, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 1, 2, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 1, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2] - }] - }), Kp.MoveDummy = { - comps: [{ - type: "image", - name: "Icons.MoveDummyImage", - rect: { - func: function () { - var n = Kp.MoveDummy.data; - return [[n.pos.x, n.pos.y], 2 * n.size, 2 * n.size] - } - } - }] - }, se.Icons.DrawIcon = function (z, B, T, h) { - T.width = T.height = bs, T.data = h, je = z, O.Default.drawImage(B, T, 0, 0, bs, bs) - }, se.Icons.MapPoints = function (H, n) { - for (var p = 0, s = H.length; s > p; p++) H[p] /= n - }, se.roundTo = function (b, h, O) { - var U = Math.abs(b % h); - return O > U || O > h - U ? h * Math.round(b / h) : b - }, se.toFixed = function (f) { - return Math.round(100 * f) / 100 - }, se.getDataMatrix = function (q) { - if (q instanceof O.Shape) { - var Y = new O.Math.Matrix2d, - h = q.getPosition(); - return Y.translate(-h.x, -h.y).scale(q.getScale().x, q.getScale().y).rotate(q.getRotation()).translate(h.x, h.y), Y - } - return q.getMatrix ? q.getMatrix() : new O.Math.Matrix2d - }; - var Ao = se.Math.Curve = function () { - this._curves = [] - }; - Ao.prototype = {}, Ao.prototype.constructor = Ao, Ao.prototype.createFromHtShape = function (Y, J, V) { - J instanceof O.List && (J = J.toArray()); - var I, W, L, D, _, G, S, m = this, - C = null, - d = null, - H = 0, - v = se.Math.Vector2, - T = se.Math.CubicBezier, - p = function (H) { - return new v(Y[H], Y[H + 1], V ? V[H / 2] : Z) - }; - for (W = 0, L = J.length; L > W; W++) { - switch (D = J[W], _ = null, D) { - case 1: - d = p(H), C = d, H += 2; - break; - case 2: - I = p(H), H += 2, _ = new T(d, d.clone(), I.clone(), I), d = I; - break; - case 3: - G = p(H), I = p(H + 2), H += 4, _ = new T(d, G.clone().sub(d).multiplyScalar(2 / 3).add(d), G.clone().sub(I).multiplyScalar(2 / 3).add(I), I), d = I; - break; - case 4: - G = p(H), S = p(H + 2), I = p(H + 4), H += 6, _ = new T(d, G, S, I), d = I; - break; - case 5: - if (!C) break; - _ = new T(d, d.clone(), C.clone(), C), d = null, C = null - } - _ && (_._index = m._curves.length, m._curves.push(_)) - } - }, Ao.prototype.checkPoint = function (T, p) { - var G, B, y, o, R, A = this, - g = A._curves; - for (G = 0, B = g.length; B > G; G++) - if (o = g[G], R = o.intersectRect(T, p, p), R.length) return y = 0, R.forEach(function (Q) { - y += Q.t - }), y /= R.length, T = o.getPointAt(y), T.t = y, { - bezier: o, - intersection: T - } - }, Ao.prototype.insertKnot = function (t, I) { - var k = t.insertKnot(I), - m = this, - L = m._curves; - L.splice(t._index, 1, k[0], k[1]) - }, Ao.prototype._isCloseEnough = function (e, g) { - return Math.abs(e.x - g.x) < 1e-6 && Math.abs(e.y - g.y) < 1e-6 - }, Ao.prototype._isSamePoint = function (G, E) { - return G === E - }, Ao.prototype.moveRealPoint = function (R, T) { - var t = this, - A = t._curves, - f = T.clone().sub(R); - A.forEach(function (Y) { - var n = Y._p1; - Y._p2, Y._p3; - var d = Y._p4; - t._isSamePoint(n, R) && (Y._p2.add(f), Y._p1 = T), t._isSamePoint(d, R) && (Y._p3.add(f), Y._p4 = T) - }) - }, Ao.prototype.moveCtrlDueToRealPointMovement = function (r, Z) { - var a = this, - i = a._curves, - c = function (o) { - o.add(Z), o.e && Z.e && (o.e += Z.e) - }; - i.forEach(function (S) { - var x = S._p1; - S._p2, S._p3; - var z = S._p4; - a._isSamePoint(x, r) && c(S._p2), a._isSamePoint(z, r) && c(S._p3) - }) - }, Ao.prototype.moveCtrlPoint = function (o, e, d) { - var m = o[d]; - if (m) { - m.e !== Z && (e.e = m.e); - var H = this, - B = H._curves; - e.clone().sub(m), B.forEach(function (P) { - var $; - "c2" === d ? $ = "_p2" : "c1" === d && ($ = "_p3"), H._isSamePoint(P[$], m) && (P[$] = e) - }), o[d] = e - } - }, Ao.prototype.deleteRealPoint = function (G, l) { - var D, E, w, n, p, s, Y, J = this, - H = J._curves, - W = {}, - Q = [], - O = se.Math.CubicBezier; - for (E = 0, w = H.length; w > E; E++) D = H[E], n = D._p1, p = D._p2, s = D._p3, Y = D._p4, (W[E] || !J._isSamePoint(n, G)) && (J._isSamePoint(Y, G) ? w > E + 1 && J._isSamePoint(H[E + 1]._p1, G) && (l || Q.push(new O(n, p, H[E + 1]._p3, H[E + 1]._p4))) : Q.push(D)); - J._curves = Q - }, Ao.prototype.findPairs = function (R, l) { - var d, j, t, f, I, J, T, o, Y = this, - L = Y._curves, - O = {}, - z = []; - for (j = 0, t = L.length; t > j; j++) d = L[j], f = d._p1, I = d._p2, J = d._p3, T = d._p4, !O[j] && Y._isSamePoint(f, R) && (l ? z.push({ - point: f, - r2: T - }) : z.push({ - point: f, - c2: I - })), Y._isSamePoint(T, R) && (o = l ? { - point: T, - r1: f - } : { - point: T, - c1: J - }, t > j + 1 && Y._isSamePoint(L[j + 1]._p1, R) && (l ? o.r2 = L[j + 1]._p4 : o.c2 = L[j + 1]._p2, O[j + 1] = !0), z.push(o)); - return z - }, Ao.prototype.toHtShape = function () { - var X = this, - R = X._curves, - k = [], - A = [], - e = { - x: 1 / 0, - y: 1 / 0 - }; - return R.forEach(function (R) { - var $ = R._p1, - P = R._p2, - E = R._p3, - F = R._p4; - return X._isCloseEnough($, e) || (k.push(1), A.push($.clone())), e = F, X._isCloseEnough($, P) && X._isCloseEnough(E, F) ? (k.push(2), A.push(F.clone()), void 0) : (k.push(4), A.push(P.clone(), E.clone(), F.clone()), void 0) - }), { - segments: k, - points: A - } - }; - var Po = se.Math.CubicBezier = function (M, V, v, d) { - var I = this; - I._id = se.Math.CubicBezier._globalId++, I._p1 = M, I._p2 = V, I._p3 = v, I._p4 = d - }; - Po._globalId = 1, Po.prototype = {}, Po.prototype.constructor = Po, Po.prototype.toString = function () { - return this._id - }, Po.prototype.intersectRect = function (Q, M, g) { - var z = M / 2, - I = g / 2, - p = Q.x, - F = Q.y, - d = se.Math.Vector2, - j = new d(-z + p, -I + F), - t = new d(z + p, I + F), - m = new d(t.x, j.y), - c = new d(j.x, t.y), - e = this, - $ = e.intersectLine(j, m), - h = e.intersectLine(m, t), - L = e.intersectLine(t, c), - R = e.intersectLine(c, j), - w = $.concat(h).concat(L).concat(R); - return w - }, Po.prototype.intersectLine = function (B, i) { - var U, d, y, a, r, u, l, X, t, C, w, R, Y, F = this, - H = B.clone().min(i), - e = B.clone().max(i); - a = F._p1, r = F._p2, u = F._p3, l = F._p4, U = a.clone().multiplyScalar(-1), d = r.clone().multiplyScalar(3), y = u.clone().multiplyScalar(-3), w = U.add(d).add(y).add(l), U = a.clone().multiplyScalar(3), d = r.clone().multiplyScalar(-6), y = u.clone().multiplyScalar(3), C = U.add(d).add(y), U = a.clone().multiplyScalar(-3), d = r.clone().multiplyScalar(3), t = U.add(d), X = a.clone(), Y = new se.Math.Vector2(B.y - i.y, i.x - B.x), R = B.x * i.y - i.x * B.y; - for (var j = F.getRoots(Y.dot(w), Y.dot(C), Y.dot(t), Y.dot(X) + R), c = new Array, W = 0, k = j.length; k > W; W++) { - var Z = j[W]; - if (!(0 > Z || Z > 1)) { - var T = F.getPointAt(Z); - T.t = Z, B.x == i.x ? H.y <= T.y && T.y <= e.y && c.push(T) : B.y == i.y ? H.x <= T.x && T.x <= e.x && c.push(T) : T.x >= H.x && T.y >= H.y && T.x <= e.x && T.y <= e.y && c.push(T) - } - } - return c - }, Po.prototype.solveTForPoint = function (s) { - var p, A, f, S, q = this; - p = q._p1.x - s.x, A = q._p2.x - s.x, f = q._p3.x - s.x, S = q._p4.x - s.x; - for (var P = q.getRoots(S - 3 * f + 3 * A - p, 3 * f - 6 * A + 3 * p, 3 * A - 3 * p, p), $ = Z, o = 1 / 0, c = 0, L = P.length; L > c; c++) { - var Q = P[c]; - if (!(0 > Q || Q > 1)) { - var m = q.getPointAt(Q); - m.t = Q; - var i = Math.abs(m.y - s.y); - o > i && (o = i, $ = m) - } - } - return $ - }, Po.prototype.getPointAt = function (n) { - var e = this, - O = e._p1, - u = e._p2, - d = e._p3, - Z = e._p4, - o = O.clone().lerp(u, n), - G = u.clone().lerp(d, n), - i = d.clone().lerp(Z, n), - g = o.lerp(G, n), - _ = G.lerp(i, n); - return g.lerp(_, n) - }, Po.prototype.getPointByPercentage = function (l) { - var z = this.length * l, - J = this._cacheLength, - h = J.length; - if (0 === z) return J[0].point; - if (l >= 1) return J[h - 1].point; - for (var q = 0; h > q; q++) { - var m = J[q]; - if (!(m.len < z)) { - var $ = J[q - 1]; - return m.point.clone().sub($.point).setLength(z - $.len).add($.point) - } - } - }, Po.prototype.getTByPercentage = function (j) { - var q = this.length * j, - Z = this._cacheLength, - a = Z.length; - if (0 === q || 0 >= j) return Z[0].t; - if (j >= 1) return Z[a - 1].t; - for (var t = 0; a > t; t++) { - var H = Z[t]; - if (!(H.len < q)) { - var g = Z[t - 1]; - return (q - g.len) / (H.len - g.len) * (H.t - g.t) + g.t - } - } - }, Po.prototype.getRoots = function (Y, s, t, u) { - var T, A, e, F, $, E = new Array; - if (Math.abs(Y) < 1e-6) { - var T = s, - A = t / T, - e = u / T, - F = A * A - 4 * e; - if (F > 0) { - var $ = Math.sqrt(F); - E.push(.5 * (-A + $)), E.push(.5 * (-A - $)) - } else 0 == F && E.push(.5 * -A) - } - s /= Y, t /= Y, u /= Y, T = (3 * t - s * s) / 3, A = (2 * s * s * s - 9 * t * s + 27 * u) / 27; - var M = s / 3, - V = A * A / 4 + T * T * T / 27, - v = A / 2; - if (Math.abs(V) <= 1e-6 && (V = 0), V > 0) { - var w, O, $ = Math.sqrt(V); - w = -v + $, O = w >= 0 ? Math.pow(w, 1 / 3) : -Math.pow(-w, 1 / 3), w = -v - $, w >= 0 ? O += Math.pow(w, 1 / 3) : O -= Math.pow(-w, 1 / 3), E.push(O - M) - } else if (0 > V) { - var r = Math.sqrt(-T / 3), - Q = Math.atan2(Math.sqrt(-V), -v) / 3, - C = Math.cos(Q), - f = Math.sin(Q), - q = Math.sqrt(3); - E.push(2 * r * C - M), E.push(-r * (C + q * f) - M), E.push(-r * (C - q * f) - M) - } else { - var w; - w = v >= 0 ? -Math.pow(v, 1 / 3) : Math.pow(-v, 1 / 3), E.push(2 * w - M), E.push(-w - M) - } - return E - }, Po.prototype._70I = function () { - var i = this; - return i._p1.distanceToSquared(i._p2) < 1e-10 && i._p3.distanceToSquared(i._p4) < 1e-10 - }, Po.prototype.insertKnot = function (K) { - var d = this, - v = d._p1, - g = d._p2, - U = d._p3, - Q = d._p4, - z = v.clone().lerp(g, K), - E = g.clone().lerp(U, K), - f = U.clone().lerp(Q, K), - V = z.clone().lerp(E, K), - I = E.clone().lerp(f, K), - $ = V.clone().lerp(I, K); - return d._70I() ? (v.clone().lerp(Q, K), [new se.Math.CubicBezier(v, v.clone(), $.clone(), $), new se.Math.CubicBezier($, $.clone(), Q.clone(), Q)]) : [new se.Math.CubicBezier(v, z, V, $), new se.Math.CubicBezier($, I, f, Q)] - }, o.defineProperties(Po.prototype, { - length: { - get: function () { - var A = this._cacheLength; - if (!A) { - A = this._cacheLength = []; - for (var Z = this._p1, K = 0, F = 0; 1 >= K;) { - var k = this.getPointAt(K += .001); - F += k.clone().sub(Z).length(), Z = k, A.push({ - len: F, - t: K, - point: k.clone() - }) - } - } - return A[A.length - 1].len - } - }, - p1: { - get: function () { - return this._p1 - }, set: function ($) { - this._p1 = $, this._cacheLength = Z - } - }, - p2: { - get: function () { - return this._p2 - }, set: function (U) { - this._p2 = U, this._cacheLength = Z - } - }, - p3: { - get: function () { - return this._p3 - }, set: function (r) { - this._p3 = r, this._cacheLength = Z - } - }, - p4: { - get: function () { - return this._p4 - }, set: function (K) { - this._p4 = K, this._cacheLength = Z - } - } - }); - var wn = O.Default.getInternal().ui().EdgeUI, - xe = { - _47O: function (j) { - var D = this, - z = xe.getBackups()._47O; - se.inEdit(D.gv) || z.call(D, j) - } - }; - se.Inject.registAsModule(xe, wn); - var Af = O.Default.getInternal().ui().NodeUI, - Zq = { - _47O: function (n) { - var h = this, - X = Zq.getBackups()._47O; - se.inEdit(h.gv) || X.call(h, n) - }, getSelectWidth: function () { - var M = this, - l = M.gv, - O = M._data; - if (l.isEditable(O) && se.inEdit(l)) return 0; - var e = Zq.getBackup("getSelectWidth"); - return e.call(M) - } - }; - se.Inject.registAsModule(Zq, Af); - var Ab = O.graph.GraphView, - Kl = { - _editPointSize: function () { - var f = O.Default.isTouchable, - S = se.getStyle("pointSize"); - return S[f ? 0 : 1] - }(), - isPointEditable: function (J) { - var p = this; - if (se.inEdit(p)) return p._pointEditableFunc ? p._pointEditableFunc(J) : !0; - var W = Kl.getBackup("isPointEditable"); - W.call(p, J) - }, isEditable: function (C) { - var H, A = this, - s = Kl.getBackup("isEditable"); - if (H = C instanceof se.Group ? !0 : s.call(A, C), !se.inEdit(A)) return H; - if (!(C instanceof O.Edge)) return H; - if (!C.s("2d.editable")) return !1; - var g = A.getEditableFunc(); - return g ? g(C) : !0 - }, _42: function (n, d) { - var m = this, - p = Kl.getBackups()._42; - if (p.call(m, n, d), se.inEdit(m)) { - var r = m.getEditInteractor(); - r.drawImpl() - } - } - }; - se.Inject.registAsModule(Kl, Ab); - var Xp = O.Default.getInternal().ui().ShapeUI, - pm = { - _47O: function (d) { - var s = this, - p = pm.getBackups()._47O; - se.inEdit(s.gv) || p.call(s, d) - } - }; - se.Inject.registAsModule(pm, Xp); - var pk = O.graph.DefaultInteractor, - ji = { - handle_mousewheel: function (N) { - var t = this, - l = ji.getBackup("handle_mousewheel"); - se.inEdit(t.gv) || l.call(t, N) - } - }; - se.Inject.registAsModule(ji, pk); - var Wr = O.graph.MoveInteractor, - tn = { - _calcShift: function (h, f) { - var W = this, - I = tn.getBackup("_calcShift"), - D = W.gv; - if (!se.inEdit(D)) return I.call(W, h, f); - var E = D.getEditInteractor(), - d = E.getSubModule("Move").calcShift(h, f, W); - return d || I.call(W, h, f) - }, clear: function (x) { - var Q = this, - P = tn.getBackup("clear"); - P.call(Q, x); - var D = Q.gv; - if (se.inEdit(D)) { - var F = D.getEditInteractor(); - F.getSubModule("Move").clear(x) - } - } - }; - se.Inject.registAsModule(tn, Wr); - var yf = se.Rect = function (P) { - this.catalog = "Rect", this._interactor = P - }; - yf.prototype = {}, yf.prototype.constructor = yf, yf.prototype.gatherInfo = function (w, X) { - var D = this; - if (1 === X.length) { - var $ = X[0]; - return $ instanceof O.Shape && $._70I() ? D.gatherLine(w, $) : Th($, w) ? !1 : D.gatherSingleTarget(w, $) - } - return X.length > 1 ? D.gatherMultiTargets(w, X) : !1 - }, yf.prototype.gatherSingleTarget = function (u, v) { - if (v.getCorners) { - var L, H = this, - a = H.info; - H.target = v, L = H.screenInfo = {}; - var M = v.getCorners(); - a.LT = new se.Math.Vector2(M[0]), a.LB = new se.Math.Vector2(M[1]), a.RB = new se.Math.Vector2(M[2]), a.RT = new se.Math.Vector2(M[3]), a.T = a.LT.clone().add(a.RT).divideScalar(2), a.B = a.LB.clone().add(a.RB).divideScalar(2), a.L = a.LT.clone().add(a.LB).divideScalar(2), a.R = a.RT.clone().add(a.RB).divideScalar(2); - for (var P in a) L[P] = se.toScreenPosition(u, a[P]); - var e = H._interactor, - j = e.getStyle("checkSize"), - k = function (J, $, m) { - var I = $.clone().sub(J).setLength(-j), - x = m.clone().sub(J).setLength(-j), - v = I.add(x).add(J); - return v - }; - return L.rotLT = k(L.LT, L.RT, L.LB), L.rotLB = k(L.LB, L.LT, L.RB), L.rotRB = k(L.RB, L.LB, L.RT), L.rotRT = k(L.RT, L.LT, L.RB), L.rotT = L.rotLT.clone().add(L.rotRT).divideScalar(2), L.rotB = L.rotLB.clone().add(L.rotRB).divideScalar(2), L.rotL = L.rotLT.clone().add(L.rotLB).divideScalar(2), L.rotR = L.rotRT.clone().add(L.rotRB).divideScalar(2), L.rotation = v.getRotation(), H.gatherConnectInfo(), !0 - } - }, yf.prototype.gatherConnectInfo = function () { - var e = this, - Y = e.target, - N = e._interactor, - f = e.screenInfo, - G = N.gv; - if (G.isConnectActionVisible(Y) && N.getStyle("connectGuideVisible")) { - var S; - Y.s && (S = Y.s("connectGuideShift")), S || (S = N.getStyle("connectGuideShift")); - var V = Y.getAnchor(), - F = Y.getSize(), - p = Y.toGlobal({ - x: F.width * (S[0] - V.x), - y: F.height * (S[1] - V.y) - }); - p = se.toScreenPosition(G, p), f.P1 ? p.add(f.P2.clone().sub(f.P1).setLength(S[2])) : (p.add(f.RT.clone().sub(f.LT).setLength(S[2])), p.add(f.LB.clone().sub(f.LT).setLength(S[3]))), f.connect = p - } - }, yf.prototype.gatherMultiTargets = function (F, K) { - var o = se.Group.findOrCreateGroup(K); - if (!o) return !1; - var I = this; - return I.editing && "rotate" !== I.editing.mode || o.calcInfo(), I.gatherSingleTarget(F, o) - }, yf.prototype.gatherLine = function (l, q) { - this.target = q; - var Q = this.screenInfo = {}, - e = q.getPoints(), - D = se.getDataMatrix(q); - return Q.P1 = se.toScreenPosition(l, D.apply(e.get(0))), Q.P2 = se.toScreenPosition(l, D.apply(e.get(1))), this.gatherConnectInfo(), !0 - }, yf.ResizeKeys = ["LT", "RB", "LB", "RT", "L", "R", "B", "T"], yf.ResizeDirection = [{ - x: -1, - y: -1 - }, { - x: 1, - y: 1 - }, { - x: -1, - y: 1 - }, { - x: 1, - y: -1 - }, { - x: -1, - y: 0 - }, { - x: 1, - y: 0 - }, { - x: 0, - y: 1 - }, { - x: 0, - y: -1 - }], yf.RotateKeys = ["rotLT", "rotRB", "rotLB", "rotRT", "rotL", "rotR", "rotB", "rotT"], yf.prototype.check = function (s, h, g) { - if (O.Default.isLeftButton(h)) { - var l = this; - if (l.editing = null, l.tipInfo = null, l.screenInfo) { - var L = l.target, - i = s.isEditable(L), - v = l.screenInfo; - if (i && v.connect) { - var Q = l._checkConnect(g); - if (Q) return Q - } - if (v.P1) return l._checkLine(g); - var z, e, p, Y = null, - D = l._interactor, - $ = D.getStyle("checkSize"); - if (i && s.isRectEditable(L)) - for (e = 0; e < se.Rect.ResizeKeys.length; e++) - if (p = se.Rect.ResizeKeys[e], se.checkHit(g, v[p], $)) { - Y = p, z = "resize"; - break - } - if (!Y && i && s.isRotationEditable(L) && !D.getStyle("rotateAsClock")) { - var f = D.getStyle("rotateCheckSize"); - for (e = 0; e < se.Rect.RotateKeys.length; e++) - if (p = se.Rect.RotateKeys[e], se.checkHit(g, v[p], f)) { - Y = p, z = "rotate"; - break - } - } - if (!Y) return D.setCursor("default"), void 0; - if ("rotate" === z) { - var R, x = s.lp(h); - if (L instanceof se.Group) { - var a = D.getStyle("groupRotateModeKey"); - "string" == typeof a && (a = [a]); - for (var y = !1, A = 0, q = a.length; q > A; A++) - if (h[a[A]]) { - y = !0; - break - } - var Z = D.getStyle("groupRotateModeDefault"); - R = y ? "batch" === Z ? "block" : "batch" : Z - } - var X = "batch" === R ? L.getAnchor2() : L.getPosition(), - E = Math.atan2(x.y - X.y, x.x - X.x); - D._setRotateCursor(E), l.editing = { - mode: z, - key: Y, - pos: X, - flipY: L.getScale().y < 0, - rotation: L.getRotation(), - hitRot: E - }, R && (l.editing.groupRotateMode = R) - } else { - var o = se.Rect.ResizeKeys.indexOf(Y), - H = se.Rect.ResizeDirection[o], - F = Math.cos(L.getRotation()), - r = Math.sin(L.getRotation()), - P = H.x * Math.sign(L.getScale().x), - M = H.y * Math.sign(L.getScale().y), - W = Math.atan2(-r * P - F * M, F * P - r * M), - T = (Math.round(W / (Math.PI / 4)) + 8) % 8, - t = ["ew-resize", "nesw-resize", "ns-resize", "nwse-resize", "ew-resize", "nesw-resize", "ns-resize", "nwse-resize"][T]; - this._interactor.setCursor(t); - var C = L.getWidth(), - G = L.getHeight(), - j = L.getAnchor(); - l.editing = { - mode: z, - key: Y, - rect: { - x: -C * j.x, - y: -G * j.y, - width: C, - height: G - }, - anchor: j, - matrix: L.getMatrix() - } - } - return Y - } - } - }, yf.prototype._checkLine = function (O) { - var I = this; - I.screenInfo; - var d, J = I._interactor.getStyle("checkSize"); - if (se.checkHit(O, I.screenInfo.P1, J)) d = "P1"; - else { - if (!se.checkHit(O, I.screenInfo.P2, J)) return this._interactor.setCursor("default"), void 0; - d = "P2" - } - return I.editing = { - mode: "line", - key: d - }, d - }, yf.prototype._checkConnect = function (K) { - var a = this, - g = a.screenInfo, - P = a._interactor, - d = P.getStyle("connectGuideIntersectSize"), - l = g.connect, - o = K.x, - j = l.x; - if (j > o && d > j - o && Math.abs(l.y - K.y) < d || o >= j && se.checkHit(K, l, d)) { - var S = "connect", - O = u.getConnectAction(P.gv); - if (a.editing = { - mode: S - }, O && O.delete) - if (a.target instanceof se.Group) { - var R = !0; - P.gv.sm().getSelection().each(function (K) { - O.delete.visible.call(null, P.gv, K) || (R = !1) - }), a.editing.hasDeleteAction = R - } else O.delete.visible.call(null, P.gv, a.target) && (a.editing.hasDeleteAction = !0); - return P.setCursor("default"), S - } - }, yf.prototype._fireEditEvent = function (x, j) { - var v = this._interactor, - M = this.editing; - if (M) { - var S = M.mode; - S = "rotate" === S ? "Rotation" : "connect" === S ? "Connection" : "resize" === S ? "Rect" : S[0].toUpperCase() + S.slice(1), v.fi({ - kind: x + "Edit" + S, - event: j - }) - } - }, yf.prototype.startEdit = function (w, n) { - w.startDragging(n); - var L = this; - L._interactor.fi({ - kind: "prepareEdit", - event: n - }); - var r = L.editing, - v = L.target; - if (r) { - if (L._fireEditEvent("begin", n), "rotate" === r.mode) return r.groupRotateMode && v.beginRotate(r), void 0; - if ("connect" !== r.mode) ("line" === r.mode || v && 0 === v.getRotation()) && (L._inSmartGuide = !0, L._interactor.rectGuide.gatherRects()); - else if (r.hasDeleteAction) { - var z = w.gv, - Y = L._interactor.getStyle("connectGuideGarbageShift"); - r.garbageInfo = { - x: z.getWidth() * Y[0] + Y[2], - y: z.getHeight() * Y[1] + Y[3], - size: L._interactor.getStyle("connectGuideGarbageIntersectsize") - }, w._42() - } - } - }, yf.prototype._46O = function ($) { - var q, Y, i = this, - M = i.editing, - d = i.target; - if (M) { - if ("connect" === M.mode && !M.canceled && !M.deleted) try { - M.garbageInfo && M.garbageInfo.hover ? u.doDeleteConnectionAction(i._interactor.gv, d) : u.doConnectAction(i._interactor.gv, d, M.target) - } catch (b) { - console.error(b) - } - Y = M.freezeFlag, q = i.editing.groupRotateMode, i._fireEditEvent("end", $), i.editing = null - } - i.tipInfo = null, i._inSmartGuide && (i._interactor.rectGuide.clear(), i._inSmartGuide = !1), q && d && d.endRotate(), d instanceof O.Block && (Y === Z ? delete d._freezeSyncFromChildren : d._freezeSyncFromChildren = Y, d.updateFromChildren()) - }, yf.prototype.handleNormalStateDelete = function () { - var V = this, - e = V.editing; - if (e && "connect" === e.mode && !e.canceled && !e.deleted) { - if (e.garbageInfo) { - try { - u.doDeleteConnectionAction(V._interactor.gv, V.target) - } catch ($) { - console.error($) - } - e.garbageInfo = null - } - return e.cursorPos = null, e.targetCorners = null, e.deleted = !0, V._interactor._42(), !0 - } - }, yf.prototype.handleNormalStateKeyDown = function (f) { - var j = this, - q = j.editing; - return !q || "connect" !== q.mode || q.canceled || q.deleted ? void 0 : O.Default.isEsc(f) ? (q.cursorPos = null, q.targetCorners = null, q.canceled = !0, j._interactor._42(), !0) : void 0 - }, yf.prototype.handleEdit = function (J, i) { - var Y = this, - C = Y.editing; - if (C) { - var b, R, m, _, D, Z = Y.target, - U = C.key, - s = C.mode, - x = J.lp(i), - w = Y._interactor; - if ("connect" === s) { - if (C.canceled) return; - if (C.deleted) return; - C.cursorPos = w._getLogicalPoint(i); - var u = C.garbageInfo; - return u && se.checkHit(C.cursorPos, u, u.size) ? (u.hover = !0, C.target = null, C.targetCorners = null) : (u && (u.hover = !1), C.target = J.getDataAt(x, function (H) { - return J.isSelectable(H) ? Fq(H) ? !0 : !1 : !1 - }) || null, C.targetCorners = se.getTargetCornersOnScreen(J, C.target)), w._42(), void 0 - } - if ("rotate" === s) { - var p, z, t = C.pos, - e = Math.atan2(x.y - t.y, x.x - t.x); - if (C.groupRotateMode ? z = e - C.hitRot : (p = e - C.hitRot, z = C.rotation + p), z %= 2 * Math.PI, 0 > z && (z += 2 * Math.PI), !O.Default.isCtrlDown(i)) { - var B, q; - Pf(i) ? (B = w.getStyle("shiftRotateRound"), q = B / 2) : (B = w.getStyle("rotateRound"), q = w.getStyle("rotateSensitivity")), z = se.roundTo(z, B, q) - } - C.groupRotateMode ? (p = z - (C.lastRotation || 0), 0 !== p && (Z.addRotation(p, C.groupRotateMode, function (l) { - return J.isRotationEditable(l) - }), C.lastRotation = z)) : Z.setRotation(z), w._setRotateCursor(e), z > Math.PI && (z -= 2 * Math.PI); - var X = 180 * (z / Math.PI); - X = X.toFixed(2), b = "" + X + "°" - } else if ("resize" === s) { - var Q = C.rect; - m = Q.x, _ = Q.y; - var G, g = Q.width, - H = Q.height, - v = C.anchor, - F = C.matrix, - T = Z.s && Z.s("keepAspectRatio") || w.getStyle("keepAspectRatio"); - Pf(i) && (T = !T); - var V = Y._unionPointMode1, - r = Y._unionPointMode2; - if (Y._inSmartGuide && !O.Default.isCtrlDown(i) && !T) { - var K; - "L" === U || "R" === U ? K = "x" : ("T" === U || "B" === U) && (K = "y"), Y._adsorbedToClosest(x, K), D = !0 - } - G = F.tfi(x); - var d; - "LT" === U ? (Q = V(G, { - x: m + g, - y: _ + H - }, g, H, T), d = 9) : "T" === U ? (Q = r({ - x: m, - y: G.y - }, { - x: m + g, - y: _ + H - }, g, H, T, "v"), d = 1) : "RT" === U ? (Q = V(G, { - x: m, - y: _ + H - }, g, H, T), d = 33) : "L" === U ? (Q = r({ - x: G.x, - y: _ - }, { - x: m + g, - y: _ + H - }, g, H, T, "h"), d = 8) : "R" === U ? (Q = r({ - x: m, - y: _ - }, { - x: G.x, - y: _ + H - }, g, H, T, "h"), d = 32) : "LB" === U ? (Q = V(G, { - x: m + g, - y: _ - }, g, H, T), d = 12) : "B" === U ? (Q = r({ - x: m, - y: _ - }, { - x: m + g, - y: G.y - }, g, H, T, "v"), d = 4) : "RB" === U && (Q = V(G, { - x: m, - y: _ - }, g, H, T), d = 36); - var W = F.tf(Q.x + Q.width * v.x, Q.y + Q.height * v.y); - Z instanceof O.Block && (C.hasOwnProperty("freezeFlag") || (C.freezeFlag = Z._freezeSyncFromChildren, Z._freezeSyncFromChildren = !0)), Z.setPosition(W), Z.setSize(Q.width, Q.height), D && (R = Z.getRect(), w.rectGuide.gatherLines({ - node: Z, - x: R.x, - y: R.y, - w: R.width, - h: R.height - }, K, d)), b = "" + Math.round(Q.width) + " * " + Math.round(Q.height) - } else if ("line" === s) { - if (Pf(i)) { - var o = Z.getPoints(), - h = "P1" === U ? o.get(1) : o.get(0), - c = { - x: x.x - h.x, - y: x.y - h.y - }, - E = w.getStyle("shiftLineRotateRound"), - I = Y._shiftDirList; - if (!I || Y._shiftRotateRound !== E) { - Y._shiftRotateRound = E, Y._shiftDirList = I = []; - for (var L = 0; L < Math.PI; L += E) I.push({ - x: n(L), - y: k(L) - }) - } - for (var y, f = 0, l = 0, j = I.length; j > l; l++) { - var $ = I[l], - a = $.x * c.x + $.y * c.y; - Math.abs(a) > Math.abs(f) && (f = a, y = $) - } - x = { - x: h.x + y.x * f, - y: h.y + y.y * f - }, w.rectGuide.clear() - } else Y._inSmartGuide && !O.Default.isCtrlDown(i) && (Y._adsorbedToClosest(x), D = !0); - var A = se.getDataMatrix(Z).applyInverse(x); - Z.setPoint("P1" === U ? 0 : 1, A, !0); - var M = Z.getPoints(), - P = M.get(0), - S = M.get(1); - m = P.x - S.x, _ = P.y - S.y, b = " " + Math.round(Math.sqrt(m * m + _ * _)) + " ", D && (R = Z.getRect(), w.rectGuide.gatherLines({ - node: Z, - x: R.x, - y: R.y, - w: R.width, - h: R.height - })) - } - if (b) { - var N = O.Default.getLogicalPoint(i, w._canvas); - N.x += se.Icons.TipShiftX, N.y += se.Icons.TipShiftY, Y.tipInfo = { - helperPos: N, - text: b, - size: b.length - } - } - Y._fireEditEvent("between", i) - } - }, yf.prototype._unionPointMode1 = function (y, u, c, U, M) { - if (M && c && U) { - var Z = y.x - u.x, - S = y.y - u.y; - Math.abs(Z * U) < Math.abs(S * c) ? (S = Math.sign(S) * Math.abs(Z * U / c), y.y = u.y + S) : (Z = Math.sign(Z) * Math.abs(S * c / U), y.x = u.x + Z) - } - return O.Default.unionPoint(y, u) - }, yf.prototype._unionPointMode2 = function (A, p, e, r, N, R) { - var b = O.Default.unionPoint(A, p); - if (N && e && r) { - var l; - "v" === R ? (l = b.x + b.width / 2, b.width = e * b.height / r, b.x = l - b.width / 2) : (l = b.y + b.height / 2, b.height = r * b.width / e, b.y = l - b.height / 2) - } - return b - }, yf.prototype._adsorbedToClosest = function (y, O) { - var H = this, - V = H._interactor, - h = V.rectGuide.findClosest(y, O), - N = V.gridGuide.findClosest(y, O), - f = 1 / 0, - A = 1 / 0; - h && (isFinite(h.x) && (f = h.x), isFinite(h.y) && (A = h.y)), N && (isFinite(N.x) && Math.abs(N.x) < Math.abs(f) && (f = N.x), isFinite(N.y) && Math.abs(N.y) < Math.abs(A) && (A = N.y)), isFinite(f) && (y.x += f), isFinite(A) && (y.y += A) - }, yf.prototype._42 = function (p, L, O) { - var U = this; - U.info = {}, U.screenInfo = null; - var D = U._interactor; - if (!D.editDetail && U.gatherInfo(L, O)) { - var z = U.editing, - F = z ? z.groupRotateMode : null, - v = U.screenInfo; - if ("block" !== F) { - if (v.P1 ? se.Icons.DrawIcon(D, p, se.Icons.Line, v) : se.Icons.DrawIcon(D, p, se.Icons.Rect, v), v.connect && (se.Icons.DrawIcon(D, p, se.Icons.ConnectGuide, { - rotation: v.rotation, - connect: v.connect, - cursorPos: z ? z.cursorPos : null - }), z)) { - if (z.targetCorners) { - for (var Z = { - x: 1 / 0, - y: 1 / 0 - }, l = { - x: -1 / 0, - y: -1 / 0 - }, B = 0, G = z.targetCorners.length; G > B; B += 2) Z.x = Math.min(Z.x, z.targetCorners[B]), l.x = Math.max(l.x, z.targetCorners[B]), Z.y = Math.min(Z.y, z.targetCorners[B + 1]), l.y = Math.max(l.y, z.targetCorners[B + 1]); - se.Icons.DrawIcon(D, p, se.Icons.HoverDataRect, { - min: Z, - max: l, - color: D.getStyle("hoverGuideColor") || D.getStyle("baseColor") - }) - } - z.garbageInfo && se.Icons.DrawIcon(D, p, se.Icons.ConnectGuideGarbage, z.garbageInfo) - } - U.tipInfo && se.Icons.DrawIcon(D, p, se.Icons.TipHelper, U.tipInfo) - } - U.target instanceof se.Group && U.target._42(D, p, L) - } - }; - var vb = se.Anchor = function (Y) { - this.catalog = "Anchor", this._interactor = Y - }; - vb.prototype = {}, vb.prototype.constructor = vb, vb.prototype.gatherInfo = function (i, q) { - var d = this; - if (1 === q.length) { - var F = q[0]; - if (!F.getAnchor) return; - if (F instanceof O.Shape && F._70I()) return; - if (Th(F, i)) return; - return d.gatherSingleTarget(i, q[0]) - } - return q.length > 1 ? d.gatherMultiTargets(i, q) : !1 - }, vb.prototype.gatherSingleTarget = function (A, E) { - var B = this; - return B.info.POS = E.getPosition(), B.screenInfo.POS = se.toScreenPosition(A, B.info.POS), B.target = E, !0 - }, vb.prototype.gatherMultiTargets = function (b, v) { - var L = this, - W = se.Group.findOrCreateGroup(v); - return W ? (L.screenInfo.POS = se.toScreenPosition(b, W.getAnchor2()), L.target = W, !0) : !1 - }, vb.prototype.isVisible = function () { - var y = this, - F = y._interactor; - if (F.getStyle("anchorVisible") === !1) return !1; - var i = y.target; - if (i) { - if (this.editing) return !0; - var h = i.getAnchor(), - I = F.getStyle("anchorOutsideVisibleThreshold"); - if (h.x < -I || h.x > 1 + I || h.y < -I || h.y > 1 + I) return !0; - var Z = i.getSize(), - u = i.getScale(), - X = Math.min(Math.abs(Z.width * u.x), Math.abs(Z.height * u.y)); - if (X * F.gv._zoom < F.getStyle("anchorHideThreshold")) return !1 - } - return !0 - }, vb.prototype.check = function (H, F, w) { - if (O.Default.isLeftButton(F)) { - var p = this, - n = p._interactor; - if (p.isVisible() && n.getStyle("anchorMovable") !== !1) { - p.editing = null, p.tipInfo = null; - var J = p.target; - if (J && H.isAnchorEditable(J) && H.isEditable(J)) { - var A; - if (p.screenInfo && (A = p.screenInfo.POS) && se.checkHit(w, new se.Math.Vector2(A), n.getStyle("checkSize"))) { - if (J instanceof se.Group) return p.editing = {}, !0; - var I = J.getWidth(), - s = J.getHeight(), - c = J.getAnchor(); - return p.editing = { - rect: { - x: -I * c.x, - y: -s * c.y, - width: I, - height: s - }, - anchor: c, - matrix: J.getMatrix() - }, !0 - } - } - } - } - }, vb.prototype.startEdit = function (H, z) { - H.startDragging(z), H.fi({ - kind: "beginEditAnchor", - event: z - }) - }, vb.prototype._46O = function (F) { - var X = this; - X.editing && (X.editing = null, X._interactor.fi({ - kind: "endEditAnchor", - event: F - })), X.tipInfo = null - }, vb.prototype.handleEdit = function (n, U) { - var k = this, - N = k.target; - if (N) { - var P = k.editing; - if (P) { - var x = n.lp(U), - i = k._interactor; - if (N instanceof se.Group) return N.setAnchor2(x), i._42(), void 0; - var c = P.matrix, - K = c.tfi(x), - S = P.rect, - C = (K.x - S.x) / S.width, - I = (K.y - S.y) / S.height; - if (!O.Default.isCtrlDown(U)) { - var $ = i.getStyle("anchorRound"), - y = i.getStyle("anchorSensitivity"); - C = se.roundTo(C, $, y), I = se.roundTo(I, $, y) - } - N.setAnchor(C, I, !0); - var H = O.Default.getLogicalPoint(U, i._canvas); - H.x += se.Icons.TipShiftX, H.y += se.Icons.TipShiftY; - var z = "" + C.toFixed(2) + ", " + I.toFixed(2); - k.tipInfo = { - helperPos: H, - text: z, - size: z.length - }, i.fi({ - kind: "betweenEditAnchor", - event: U - }) - } - } - }, vb.prototype._42 = function (N, T, C) { - var P = this; - P.info = {}, P.screenInfo = {}; - var R = P._interactor; - R.editDetail || P.gatherInfo(T, C) && P.isVisible() && (se.Icons.DrawIcon(R, N, se.Icons.Anchor, P.screenInfo), P.tipInfo && se.Icons.DrawIcon(R, N, se.Icons.TipHelper, P.tipInfo)) - }; - var Ap = se.MoveDummy = function (S) { - this.catalog = "MoveDummy", this._interactor = S - }; - Ap.prototype = {}, Ap.prototype.constructor = Ap, Ap.prototype.gatherInfo = function () { - var t = this, - h = this._interactor.getSubModule("Rect"); - if (h) { - var I = h.screenInfo; - if (I) { - var f = t._interactor, - S = t.getMovableTarget(h.target); - if (S) { - var X = f.getStyle("moveDummyThreshold"); - if (X !== !1) { - var a = I.LT || I.P1, - K = I.RT || I.P2, - i = I.LB || a; - if (a) { - var _ = I.P1, - A = Math.min(a.distanceTo(i), a.distanceTo(K)); - if (!(X !== !0 && A > X)) { - var G = f.getStyle("moveDummyPosition"), - g = K.clone().sub(a), - s = i.clone().sub(a), - V = G[2], - $ = G[3]; - if (_) { - var U = f.getStyle("moveDummyLineExtraShift"); - U && (V += U[0], $ += U[1]) - } - var O = a.clone().add(g.clone().multiplyScalar(G[0])).add(g.setLength(V)).add(s.clone().multiplyScalar(G[1])).add(s.setLength($)); - return t.screenInfo.pos = O, t.screenInfo.size = f.getStyle("moveDummySensitivity"), !0 - } - } - } - } - } - } - }, Ap.prototype.getMovableTarget = function (I) { - var c = this._interactor.gv; - if (Fq(I)) { - if (c.isMovable(I)) return I - } else if (I instanceof se.Group) - for (var q = I._entities, U = q.length - 1; U >= 0; U--) { - var y = q[U]; - if (Fq(y) && c.isMovable(y)) return y - } - return null - }, Ap.prototype.getMoveInteractor = function () { - for (var m, I, N, S = this._interactor.gv, o = S.getInteractors(), m = 0, I = o.length; I > m; m++) - if (N = o.get(m), N instanceof Wr) return N - }, Ap.prototype.startEdit = function (Q, n) { - Q.startDragging(n); - var d = this.getMoveInteractor(); - if (d) { - var $ = this.selectedTarget, - b = Q.gv; - b._moving = 1, d._data = $, b.handleMouseDown && b.handleMouseDown(n, $) - } - }, Ap.prototype._46O = function (m) { - var S = this, - T = S.getMoveInteractor(); - T && (T.handleWindowMouseUp(m), S.selectedTarget = null) - }, Ap.prototype.handleEdit = function (e, n) { - var i = this.getMoveInteractor(); - i && i.handleWindowMouseMove(n) - }, Ap.prototype.check = function (B, P, r) { - if (this.selectedTarget = null, O.Default.isLeftButton(P) && !B._scrolling && !Cf()) { - var S = this; - if (S.screenInfo) { - var $ = S.screenInfo.pos; - if ($ && !(r.distanceTo($) > S.screenInfo.size)) { - var U = S._interactor; - return S.selectedTarget = S.getMovableTarget(U.getSubModule("Rect").target), U.setCursor("default"), !0 - } - } - } - }, Ap.prototype._42 = function (f, t, b) { - var L = this; - L.screenInfo = {}; - var Q = L._interactor; - Q.editDetail || L.gatherInfo(t, b) && (!Q.editing || L.selectedTarget) && se.Icons.DrawIcon(Q, f, se.Icons.MoveDummy, L.screenInfo) - }; - var ff = se.RotateX = function (l) { - this.catalog = "RotateX", this._interactor = l - }; - ff.prototype = {}, ff.prototype.constructor = ff, ff.prototype.gatherInfo = function (c, p) { - var j = this; - if (1 === p.length) { - var m = p[0]; - return m instanceof O.Shape && m._70I() || Th(m, c) ? !1 : j.gatherSingleTarget(c, m) - } - return p.length > 1 ? j.gatherMultiTargets(c, p) : !1 - }, ff.prototype.gatherSingleTarget = function () { - var v = new O.Math.Vector2, - A = new O.Math.Vector2, - g = new O.Math.Vector2, - w = new O.Math.Vector2, - q = function (n, S) { - var L = n.x - S.x, - M = n.y - S.y; - return L * L + M * M - }; - return function (K, P) { - if (P.getCorners) { - var y = this, - X = P.getCorners(), - U = 15, - t = P.getPosition(); - v.copy(X[0]), g.copy(X[1]), w.copy(X[3]), A.copy(v).add(w).divideScalar(2).add(v.sub(g).setLength(U / K.getZoom())); - var x = Math.max(q(t, X[0]), q(t, X[1]), q(t, X[2]), q(t, X[3])); - return y.info.POS = A.clone(), y.screenInfo.POS = se.toScreenPosition(K, y.info.POS), y.screenInfo.LEN = Math.sqrt(x) * K.getZoom() + U, y.screenInfo.CENTER = se.toScreenPosition(K, t), y.target = P, !0 - } - } - }(), ff.prototype.gatherMultiTargets = function (Q, P) { - var y = this, - u = se.Group.findOrCreateGroup(P); - if (!u) return !1; - var y = this; - return y.gatherSingleTarget(Q, u) - }, ff.prototype.isVisible = function () { - var S = this._interactor; - if (!S.getStyle("rotateAsClock")) return !1; - var R = this.target; - if (!R) return !0; - var l = S.gv; - return l.isEditable(R) && l.isRotationEditable(R) ? !0 : !1 - }, ff.prototype.check = function (r, q, c) { - var j = this, - E = j._checkImpl(r, q, c); - return (E || j._clockPainted) && j._interactor._42(), E - }, ff.prototype._checkImpl = function (l, x, y) { - if (O.Default.isLeftButton(x)) { - var V = this; - V.editing = null, V.tipInfo = null; - var u; - if (V.screenInfo && (u = V.screenInfo.POS) && V.isVisible()) { - var f = V._interactor; - if (se.checkHit(y, u, f.getStyle("checkSize"))) { - var p = V.target, - e = l.lp(x), - o = p.getPosition(), - T = Math.atan2(e.y - o.y, e.x - o.x); - return f._setRotateCursor(T), V.editing = { - pos: o, - rotation: p.getRotation(), - hitRot: T, - groupRotateMode: "block", - screenInfo: { - CENTER: V.screenInfo.CENTER, - LEN: V.screenInfo.LEN - } - }, !0 - } - } - } - }, ff.prototype.startEdit = function (m, V) { - m.startDragging(V), m.fi({ - kind: "beginEditRotation", - event: V - }), this.target instanceof se.Group && this.target.beginRotate(this.editing) - }, ff.prototype._46O = function (I) { - var G = this; - G.editing && (G.editing = null, G._interactor.fi({ - kind: "endEditRotation", - event: I - })), G.target instanceof se.Group && G.target.endRotate(), G.tipInfo = null - }, ff.prototype.handleEdit = function (z, e) { - var L = this, - b = L.editing; - if (b) { - var p, J, y = L.target, - f = z.lp(e), - r = L._interactor, - E = b.pos, - d = Math.atan2(f.y - E.y, f.x - E.x), - n = y instanceof se.Group; - if (n ? J = d - b.hitRot : (p = d - b.hitRot, J = b.rotation + p), J %= 2 * Math.PI, 0 > J && (J += 2 * Math.PI), !O.Default.isCtrlDown(e)) { - var G, A; - Pf(e) ? (G = r.getStyle("shiftRotateRound"), A = G / 2) : (G = r.getStyle("rotateRound"), A = r.getStyle("rotateSensitivity")), J = se.roundTo(J, G, A) - } - n ? (p = J - (b.lastRotation || 0), 0 !== p && (y.addRotation(p, b.groupRotateMode, function (O) { - return z.isRotationEditable(O) - }), b.lastRotation = J)) : y.setRotation(J), r._setRotateCursor(d), J > Math.PI && (J -= 2 * Math.PI); - var u = 180 * (J / Math.PI), - X = "" + u.toFixed(2) + "°", - i = O.Default.getLogicalPoint(e, r._canvas); - i.x += se.Icons.TipShiftX, i.y += se.Icons.TipShiftY, L.tipInfo = { - helperPos: i, - text: X, - size: X.length - }, r.fi({ - kind: "betweenEditRotation", - event: e - }) - } - }, ff.prototype._42 = function (A, t, r) { - var S = this; - S._clockPainted = !1, S.info = {}, S.screenInfo = {}; - var g = S._interactor; - g.editDetail || S.gatherInfo(t, r) && S.isVisible() && (se.Icons.DrawIcon(g, A, se.Icons.RoundPoint, S.screenInfo.POS), S.tipInfo && se.Icons.DrawIcon(g, A, se.Icons.TipHelper, S.tipInfo), S.editing && S.drawClock(A)) - }, ff.prototype.drawClock = function (x) { - x.save(); - var S = this; - S._clockPainted = !0; - var R = S.editing || {}, - w = R.screenInfo || S.screenInfo, - E = w.LEN, - q = E + 8, - t = E + 18; - x.save(), x.translate(w.CENTER.x, w.CENTER.y), x.beginPath(), x.strokeStyle = "rgb(150, 150, 150)"; - for (var e, T, f, y, b, Q = 0; 360 > Q; Q++) e = Q * Math.PI / 180, 0 === Q % 5 && (T = k(e) * E, f = n(e) * E, y = k(e) * q, b = n(e) * q, x.moveTo(T, f), x.lineTo(y, b)), 0 === Q % 45 && (T = k(e) * E, f = n(e) * E, y = k(e) * t, b = n(e) * t, x.moveTo(T, f), x.lineTo(y, b)); - x.stroke(), x.rotate(-N); - var p = R.lastRotation || S.target.getRotation(); - x.beginPath(), x.fillStyle = "rgba(255, 0, 0, 0.1)", x.strokeStyle = "rgb(157, 157, 157)", x.moveTo(0, 0), x.arc(0, 0, t, 0, p, !1), x.fill(), x.beginPath(), x.moveTo(0 + t, 0), x.arc(0, 0, t, 0, p, !1), x.stroke(), x.restore() - }; - var Ao = se.Curve = function (U) { - this.catalog = "Curve", this._interactor = U - }; - Ao.prototype = {}, Ao.prototype.constructor = Ao, o.defineProperties(Ao.prototype, { - activing: { - get: function () { - return this._activing - }, set: function (C) { - var b = this; - if (C) b._activing = new se.CurveActiving(this, C), b._activing._firePointChange(); - else { - var K = b._activing; - K && K.dispose(), b._activing = null - } - } - } - }), Ao.PointType = { - Mirrored: 0, - Straight: 1, - Disconnected: 2, - Asymmetric: 3 - }, Ao.prototype.setUp = function () { - var g = this, - y = g._interactor; - y && y.gv.mp(g._onGraphviewPropertyChanged, g) - }, Ao.prototype._onGraphviewPropertyChanged = function (P) { - ("zoom" === P.property || "translateX" === P.property || "translateY" === P.property) && this._handleDataChanged() - }, Ao.prototype.tearDown = function () { - var X = this, - u = X._interactor; - u && u.gv.ump(X._onGraphviewPropertyChanged, X) - }, Ao.prototype.canEnterEditDetailMode = function () { - var z = this, - e = z._interactor, - M = e._getValidSelection(); - if (1 === M.length) { - var w = M[0], - L = w instanceof O.Edge; - if (w instanceof O.Shape || L) { - if (L) { - var A = w.s("edge.type"); - if (A && "points" !== A) return - } - var S = e.gv; - if (S.isPointEditable(w) && S.isEditable(w)) return z.target = w, !0 - } - } - }, Ao.prototype.canQuitEditDetailMode = function (G) { - var Q = this, - y = Q._interactor._getLogicalPoint(G); - return Q._checkEditRealPoint(y) ? void 0 : Q._interactor.gv.getDataAt(G) !== Q.target ? !0 : void 0 - }, Ao.prototype.preHandleScroll = function () { - var _ = this.editing; - return _ && _.inEdit ? !0 : void 0 - }, Ao.prototype.getCurrentSelectintStatus = function () { - var E = this; - if (E.activing && !E.activing.selections) { - if (E.activing.status != Z) return E.activing.status; - var I = function (V) { - var R = E.activing.status; - E.activing.status = V, E._interactor.fp("shapePointStatus", R, V) - }, - K = se.Curve.PointType, - o = E.activing.point, - j = E.activing.pairs; - if (!j || 1 !== j.length) return I(K.Mirrored); - var b = j[0], - z = b.c1 && b.c1.isNearEnough(o), - k = b.c2 && b.c2.isNearEnough(o); - if (!b.c1 || !b.c2) return z || k ? I(K.Straight) : I(K.Disconnected); - if (z && k) return I(K.Straight); - if (z || k) return I(K.Asymmetric); - var D = b.c1.clone().sub(o), - w = b.c2.clone().sub(o); - return Math.abs(D.x * w.y - D.y * w.x) > 1e-5 || D.x * w.x > 0 ? I(K.Disconnected) : Math.abs(D.length() - w.length()) > 1e-5 ? I(K.Asymmetric) : I(K.Mirrored) - } - }, Ao.prototype.handle_keydown = function (x) { - var p = this; - if (p._interactor.editDetail) { - var g = se.Curve.PointType; - "1" === x.key ? p._setCurrentSelectionStatus(g.Straight) : "2" === x.key ? p._setCurrentSelectionStatus(g.Mirrored) : "3" === x.key ? p._setCurrentSelectionStatus(g.Disconnected) : "4" === x.key && p._setCurrentSelectionStatus(g.Asymmetric) - } - }, Ao.prototype.setCurrentSelectionStatus = function (F) { - var h = this, - z = h._interactor; - if (z) { - var Y = z.gv; - Y.dm().beginTransaction(), this._setCurrentSelectionStatus(F), Y.dm().endTransaction() - } - }, Ao.prototype._setCurrentSelectionStatus = function (L) { - var N = this, - I = N.activing; - if (I) { - var v = N.getCurrentSelectintStatus(); - if (null !== v && v !== L) { - I.status = L; - var b = N.activing.point, - s = N.activing.pairs; - if (s && 1 === s.length) { - var S = s[0], - X = N.screenInfo.curve, - H = se.Curve.PointType, - Q = N._interactor, - r = function () { - N._writeToHt(), Q.fp("shapePointStatus", v, L), N.check(Q.gv, null, new se.Math.Vector2(Q._lastLogicalPoint)) - }; - if (L === H.Straight) return X.moveCtrlPoint(S, b, "c1"), X.moveCtrlPoint(S, b, "c2"), r(), void 0; - if (v === H.Straight) { - var $ = X.findPairs(b, !0), - c = $[0], - C = c.r1 || b, - m = c.r2 || b, - i = m.clone().sub(C).multiplyScalar(.25); - return X.moveCtrlPoint(S, b.clone().sub(i), "c1"), X.moveCtrlPoint(S, b.clone().add(i), "c2"), r(), void 0 - } - var p = S.c1, - T = S.c2; - if (p && T) { - if (L === H.Mirrored) return X.moveCtrlPoint(S, b.clone().multiplyScalar(2).sub(T), "c1"), r(), void 0; - if (L === H.Asymmetric && v === H.Disconnected) { - var x = p.clone().sub(b).length(), - i = b.clone().sub(T).setLength(x).add(b); - return X.moveCtrlPoint(S, i, "c1"), r(), void 0 - } - } - I._firePointChange(), Q.fp("shapePointStatus", v, L), N.check(Q.gv, null, new se.Math.Vector2(Q._lastLogicalPoint)) - } - } - } - }, Ao.prototype._handleDataChanged = function () { - var g = "s:edge.points,s:edge.segments,points,segments,shape,position,rotation,scale".split(","); - return function (P) { - var t = this; - if (t.screenInfo && t.target) { - if (P && g.indexOf(P.property) < 0) return; - var O = t._interactor; - t.gatherSingleTarget(O.gv, t.target, !0), t.check(O.gv, null, new se.Math.Vector2(O._lastLogicalPoint)), O._42() - } - } - }(), Ao.prototype.gatherSingleTarget = function (h, c, P) { - var A, N, Q = this; - Q.screenInfo && Q.screenInfo.curve && (N = Q.screenInfo.curve._curves); - var W = Q.editing; - A = W ? Q.screenInfo : Q.screenInfo = {}; - var U, y, C = c instanceof O.Edge; - C ? (U = c.s("edge.segments"), y = c.s("edge.points") || new O.List) : (U = c._58O, y = c._59O), A.S = U; - var b, w = A.P = [], - p = se.getDataMatrix(c); - if (c instanceof O.Polyline || c instanceof O.Edge && Q._interactor.getStyle("edgeElevationEditable")) b = c.getElevation && c.getElevation() || 0, A.E = []; - else { - var G = !1; - y.each(function (i) { - i.e !== Z && (G = !0) - }), G && (A.E = []) - } if (y.each(function (n) { - A.E && A.E.push(n.e != Z ? n.e : b), n = p.apply(n); - var o = se.toScreenPosition(h, n); - w.push(o.x, o.y) - }), C) { - var K = w.length, - x = se.toScreenPosition(h, c._lastSourcePoint || (K ? { - x: w[0], - y: w[1] - } : { - x: 0, - y: 0 - })), - B = se.toScreenPosition(h, c._lastTargetPoint || (K ? { - x: w[K - 2], - y: w[K - 1] - } : { - x: 0, - y: 0 - })); - w.splice(0, 0, x.x, x.y), w.push(B.x, B.y), A.E && (A.E.splice(0, 0, "head"), A.E.push("tail")) - } - if (!A.S || !A.S.size()) { - A.S = new O.List, A.S.add(1); - for (var j = 0; j < w.length / 2 - 1; j++) A.S.add(2) - } - if ((!W || P) && Q.convertToCubicBezier(N), Q.activing && (P || !Q.editing || "realPoint" === Q.editing.type)) { - var d = A.curve.findPairs(Q.activing.point); - Q.activing.pairs = d - } - }, Ao.prototype._convertToNewPoint = function (Y, a, J, L) { - var G, I, H; - for (G = 0, I = a.length; I > G; G++) { - if (H = a[G], H._p1.isNearEnough(Y) && (!L || L.indexOf(H._p1) < 0)) return H._p1; - if (H._p4.isNearEnough(Y) && (!L || L.indexOf(H._p4) < 0)) return H._p4 - } - if (J) - for (G = 0, I = Math.min(J.length, I); I > G; G++) { - if (H = J[G], H._p1 === Y && (!L || L.indexOf(a[G]._p1) < 0)) return a[G]._p1; - if (H._p4 === Y && (!L || L.indexOf(a[G]._p4) < 0)) return a[G]._p4 - } - }, Ao.prototype.convertToCubicBezier = function (S) { - var X, M, N = this, - Z = new se.Math.Curve, - $ = N.screenInfo; - if (Z.createFromHtShape($.P, $.S, $.E), $.curve = Z, N.activing) { - var A = Z._curves; - X = N.activing.point, M = N._convertToNewPoint(X, A, S); - var I = []; - if (M && (N.activing.point = M, I.push(M)), N.activing.selections) { - var o = -1, - F = N.activing.selections; - F.forEach(function (f) { - o++, M = N._convertToNewPoint(f, A, S, I), M && (F[o] = M, I.push(M)) - }) - } - } - }, Ao.prototype.check = function (C, o, p) { - if (!o || jj(o) || Fm(o)) { - var q = this; - if (q._interactor.setCursor("default"), q.editing = null, q.highlight = null, q.tipInfo = null, q.edgeEditResult = null, q.screenInfo) { - if (Cf() || o && Fm(o)) return q._interactor._42(), !0; - if (q._checkEditCtrlPoint(p)) return q._interactor._42(), !0; - if (q._checkEditRealPoint(p)) return q._interactor._42(), !0; - if (q._checkEditElevation(p)) return q._interactor._42(), !0; - var Z = q.screenInfo.curve, - h = Z.checkPoint(p, q._interactor.getStyle("curveIntersectSize")); - if (h) { - var y = q.highlight = {}; - y.type = "insertKnot", y.bezier = h.bezier, y.point = h.intersection - } - return q._interactor._42(), !0 - } - } - }, Ao.prototype.getAdjacentBeziers = function (z) { - var G = this.screenInfo; - if (G) { - var D, T, W, N = G.curve._curves, - d = [], - C = Z; - for (D = 0, T = N.length; T > D; D++) - if (W = N[D], C === Z) { - if (W._p4.isNearEnough(z)) { - d.push(W), C = D; - continue - } - } else { - if (W._p1.isNearEnough(z)) return d.push(W), d; - if (W._p4.isNearEnough(z)) { - d[0] = W, C = D; - continue - } - } - } - }, Ao.prototype.roundCorner = function (i) { - if (this.activing && this.screenInfo) { - var o = this.screenInfo.curve, - X = o._curves, - G = this.getAdjacentBeziers(this.activing.point), - j = G[1], - m = j._index; - j = j.insertKnot(j.getTByPercentage(i / j.length))[1], X[m] = j; - var U = j.p1, - H = G[0], - d = H._index; - H = H.insertKnot(H.getTByPercentage(1 - i / H.length))[0], X[d] = H; - var Q = H.p4, - h = this.activing.point, - v = new se.Math.CubicBezier(Q, h.clone().sub(Q).multiplyScalar(2 / 3).add(Q), h.clone().sub(U).multiplyScalar(2 / 3).add(U), U); - X.splice(m, 0, v), this._writeToHt(), this.activing = null, this._interactor._42() - } - }, Ao.prototype._checkEditRealPoint = function (f) { - var F, W, J, G, $, j, D = this, - h = D.screenInfo.curve._curves, - N = D._interactor.getStyle("curvePointIntersectSize"), - U = 1 / 0; - for (N *= N, J = 0, G = h.length; G > J; J++) F = h[J], $ = F._p1, j = f.distanceToSquared($), U > j && (U = j, W = $), $ = F._p4, j = f.distanceToSquared($), U > j && (U = j, W = $); - if (U > N) return !1; - var y = D.highlight = {}; - return y.type = "changeRealPoint", y.point = W, D.editing = { - type: "realPoint", - point: W, - shiftGuide: { - point: W.clone(), - dir: "x", - limit: 0 - } - }, D._interactor.setCursor("crosshair"), !0 - }, Ao.prototype._checkEditElevation = function (Z) { - var R = this; - if (!R._interactor.getStyle("curveElevationVisible")) return !1; - var w = R.target; - if (w instanceof O.Edge && !R._interactor.getStyle("edgeElevationEditable")) return !1; - var N = R.activing; - if (!N) return !1; - var y = N.getCurrentEditingPoint(); - if (!y) return !1; - var K = R._interactor, - S = K.getStyle("curveElevationGuideShift"), - q = K.getStyle("curveElevationIntersectSize"), - b = Z.distanceToSquared({ - x: y.x + S[0], - y: y.y + S[1] - }); - if (!(b > q * q)) { - var P = R.highlight = {}; - P.type = "elevation"; - var G = new se.Math.Vector2(Z.x, Z.y, y.e); - return R.editing = { - type: "elevation", - startPoint: G - }, R._interactor.setCursor("crosshair"), !0 - } - }, Ao.prototype._checkEditCtrlPoint = function (l) { - var y = this; - if (y.activing && !y.activing.selections) { - var T = y.getCurrentSelectintStatus(); - if (T !== se.Curve.PointType.Straight) { - var M = y.activing.pairs; - if (M) { - var w = y._interactor.getStyle("curvePointIntersectSize"); - w *= w; - var B, n, m, k, O, U, t, v, p, $ = 1 / 0; - for (t = 0, p = M.length; p > t; t++) - for (k = M[t], v = 0; 2 > v; v++) O = 0 === v ? "c1" : "c2", k[O] && (U = l.distanceToSquared(k[O]), $ > U && ($ = U, B = k, n = t, m = O)); - if ($ > w) return !1; - y.activing.hlpair = B, y.activing.hltype = m; - var P = y.highlight = {}; - return P.type = "changeCtrlPoint", P.point = B[m], y.editing = { - type: "ctrlPoint", - pair: B, - pairId: n, - ctrlType: m, - direction: B[m].clone().sub(y.activing.point).normalize() - }, y._interactor.setCursor("crosshair"), !0 - } - } - } - }, Ao.prototype.startEdit = function (G, V) { - G.startDragging(V); - var U = this; - U.highlight && "insertKnot" === U.highlight.type && (U.insertKnot(), U.gatherSingleTarget(U._interactor.gv, U.target), U.activing = null, U._checkEditRealPoint(U._interactor._getLogicalPoint(V))); - var Y = U._activing; - if (Y) { - var I = U.editing ? U.editing.type : null; - "ctrlPoint" === I ? Y.editingCtrl = { - pairId: U.editing.pairId, - type: Y.hltype - } : "realPoint" === I && (Y.editingCtrl = !1) - } - var m = U.highlight, - l = O.Default.isCtrlDown(V); - if (!m || Cf() || Fm(V)) { - var d = U._interactor.gv; - if (!d.setFocus(V) || d._scrolling) return; - return l ? U._multiSelect = { - startPoint: d.lp(V) - } : d.isPannable() && (jj(V) || Fm(V)) && (U._pan = { - tx: d.tx(), - ty: d.ty() - }, G.fi({ - kind: "beginPan", - event: V - })), void 0 - } - if ("changeRealPoint" === m.type) { - var u, X = U.activing ? U.activing.point : null, - S = U.activing ? U.activing.selections : null; - if (l && U.activing) X === m.point ? (S ? (U.activing = { - point: S[0] - }, S.length > 1 && (S.splice(0, 1), U.activing.selections = S)) : U.activing = null, U.editing = null) : S && (u = S.indexOf(m.point)) >= 0 ? (S.length > 1 ? S.splice(u, 1) : delete U.activing.selections, U.editing = null) : S ? (S.push(X), U.activing = { - point: m.point, - selections: S - }) : U.activing = { - point: m.point, - selections: [X] - }; - else if (S) X === m.point || ((u = S.indexOf(m.point)) >= 0 ? (S.splice(u, 1, X), U.activing = { - point: m.point, - selections: S - }) : U.activing = { - point: m.point - }); - else { - var e; - X === m.point && (e = U.activing.status), U.activing = { - point: m.point - }, e && (U.activing.status = e) - } - G.fi({ - kind: "beginEditPoint", - event: V - }) - } - }, Ao.prototype.insertKnot = function () { - var e = this, - L = e.highlight, - x = e.screenInfo.curve; - x.insertKnot(L.bezier, L.point.t), e._writeToHt() - }, Ao.prototype._writeToHt = function () { - var D, w, m = this, - x = m.screenInfo.curve, - c = x.toHtShape(), - r = c.points, - f = [], - a = c.segments, - E = m._interactor.gv; - E.dm().beginTransaction(); - var T, H, q = m.target, - R = q instanceof O.Edge, - y = se.getDataMatrix(q).invert(); - H = q instanceof O.Polyline || q instanceof O.Edge && m._interactor.getStyle("edgeElevationEditable"), H && (T = q.getElevation && q.getElevation() || 0); - for (var s = 0, Q = r.length; Q > s; s++) D = r[s], w = se.toWorldPosition(E, D), w = y.apply(w), isFinite(D.e) && D.e !== T && (w.e = D.e), f.push(w); - if (q._writing = !0, R) { - q.s("edge.type", "points"), q.setStyle("edge.segments", a), q.setStyle("edge.points", f.slice(1, f.length - 1)), q.setStyle("edge.source.offset.x", 0), q.setStyle("edge.source.offset.y", 0), q.setStyle("edge.target.offset.x", 0), q.setStyle("edge.target.offset.y", 0); - var U = m._nextChangeEdgeHost; - delete m._nextChangeEdgeHost, U && ("source" === U.type ? q.setSource(U.host) : q.setTarget(U.host)), m._writeEdgeHostAnchor("source", f[0]), m._writeEdgeHostAnchor("target", f[f.length - 1]) - } else f.length ? (q.setSegments(a), q.setPoints(f, !0)) : q.removeFromDataModel(); - E.dm().endTransaction(), delete q._writing - }, Ao.prototype._writeEdgeHostAnchor = function (s, C) { - var J = this, - R = J.target, - E = J._calcHostAnchor(R, s, C); - E.index !== Z ? (R.setStyle("edge." + s + ".index", E.index), R.setStyle("edge." + s + ".percent", Z), R.setStyle("edge." + s + ".anchor.x", Z), R.setStyle("edge." + s + ".anchor.y", Z)) : E.percent !== Z ? (R.setStyle("edge." + s + ".percent", E.percent), R.setStyle("edge." + s + ".index", Z), R.setStyle("edge." + s + ".anchor.x", Z), R.setStyle("edge." + s + ".anchor.y", Z)) : (R.s("edge." + s + ".anchor.x", E.x), R.s("edge." + s + ".anchor.y", E.y), E.offsetX || E.offsetY ? (R.s("edge." + s + ".offset.x", E.offsetX), R.s("edge." + s + ".offset.y", E.offsetY)) : (R.s("edge." + s + ".offset.x", 0), R.s("edge." + s + ".offset.y", 0))) - }, Ao.prototype._calcHostAnchor = function (R, o, s, h) { - h || (h = "source" === o ? R.getSource() : R.getTarget()); - var Q = this._interactor.gv, - U = Q.calculateAttachPoint(h, s); - if (U) return U.info; - if (Bk(h)) { - var b = Q.calculateEdgePosition(h, s); - return b - } - var J = h.getRotation(), - u = h.getAnchor(); - Th(h, Q) && (J = 0); - var _ = h.getScale(); - if (J || _.x < 0 || _.y < 0) { - var W = h.getMatrix(), - T = W.tfi(s), - l = h.getSize(); - return { - x: T.x / l.width + u.x, - y: T.y / l.height + u.y - } - } - var f = Rp(Q, h), - m = { - x: (s.x - f.x) / f.width, - y: (s.y - f.y) / f.height - }; - return m - }, Ao.prototype._handlePanning = function (Q) { - var Z = this, - s = Z._pan; - if (s) { - s.started = !0; - var U = Z._interactor, - H = U.gv, - b = U._lastClientPoint, - h = lb(Q), - J = wq(H, h, b); - H.setTranslate(s.tx + J.x, s.ty + J.y), Z.gatherSingleTarget(U.gv, Z.target), U._42(), U.fi({ - kind: "betweenPan", - event: Q - }) - } - }, Ao.prototype.handleEdit = function (c, t) { - var z = this, - m = z.editing; - if (z._pan) return z._handlePanning(t), void 0; - if (z._multiSelect) return z._multiSelect.endPoint = c.lp(t), z._interactor.redraw(), void 0; - if (m) { - m.inEdit = !0; - var K, y, b, N = z._interactor._getLogicalPoint(t), - H = O.Default.isCtrlDown(t), - j = O.Default.isShiftDown(t), - Q = m.type, - k = z.activing; - if (z._guideInfo = null, "ctrlPoint" === Q && j) { - var A = z.editing.direction.clone(); - K = k.point; - var R = A.dot(N.clone().sub(K)); - N = A.setLength(R).add(K) - } else if ("ctrlPoint" === Q || "realPoint" === Q) { - var A; - if ("realPoint" === Q && j) { - var V = z.editing.shiftGuide; - y = V.point; - var F = Math.abs(N.x - y.x), - o = Math.abs(N.y - y.y); - F > o && F > V.limit && "y" === V.dir && (V.dir = "x"), o > F && o > V.limit && "x" === V.dir && (V.dir = "y"), A = V.dir, "x" === A ? (N.y = y.y, V.limit = Math.max(V.limit, F)) : "y" === A && (N.x = y.x, V.limit = Math.max(V.limit, o)) - } - var Y = z._isEditEdgeSourceTarget(); - if (Y) { - var _ = z._editEdgeSourceTarget(Y, N, H); - _ && (z.edgeEditResult = _, b = _.tipText) - } else if (!H) { - var w = z._guidingToEdit(N, A), - G = "realPoint" === Q ? z._interactor.gridGuide.findClosest(N, A, !0) : null, - g = 1 / 0, - $ = 1 / 0; - G && (G.x && (g = G.x), G.y && ($ = G.y)); - var P = !1; - w && (w.xList && (Math.abs(w.x) <= Math.abs(g) ? (P = !0, g = w.x) : delete w.xList), w.yList && (Math.abs(w.y) <= Math.abs($) ? (P = !0, $ = w.y) : delete w.yList), P && (z._guideInfo = w)), isFinite(g) && (N.x += g), isFinite($) && (N.y += $), P && (w.v = N) - } - } - var i = z.screenInfo.curve; - if ("realPoint" === m.type) { - K = m.point, K.e !== Z && (N.e = K.e), i.moveRealPoint(K, N), m.point = N, z.highlight.point = N; - var D = k.status, - x = k.selections; - if (z.activing = { - point: N, - status: D - }, x) { - var q = N.clone().sub(K), - T = 0; - x.forEach(function (p) { - var o = p.clone().add(q); - i.moveRealPoint(p, o), x[T++] = o - }), z.activing.selections = x - } - } else if ("ctrlPoint" === m.type) { - var d = k.pairs, - J = d[m.pairId]; - i.moveCtrlPoint(J, N, m.ctrlType); - var e = k.status, - l = se.Curve.PointType; - if ((e === l.Mirrored || e === l.Asymmetric) && J.c1 && J.c2) { - var K = new se.Math.Vector2(k.point), - L = "c1" === m.ctrlType ? "c2" : "c1"; - if (e === se.Curve.PointType.Mirrored) i.moveCtrlPoint(J, K.clone().multiplyScalar(2).sub(N), L); - else if (e === l.Asymmetric) { - var R = J[L].clone().sub(K).length(), - v = K.clone().sub(J[m.ctrlType]).setLength(R).add(K); - isNaN(v.x) || i.moveCtrlPoint(J, v, L) - } - } - k._firePointChange() - } else if ("elevation" === m.type) { - y = m.startPoint; - var U = y.e + (y.y - N.y) / c._zoom; - z._setCurrentPointImpl("e", U), k._firePointChange(), b = "E: " + se.toFixed(U) - } - var f = O.Default.getLogicalPoint(t, z._interactor._canvas); - if (f.x += se.Icons.TipShiftX, f.y += se.Icons.TipShiftY, !b) { - var E = se.toWorldPosition(c, N); - b = "" + se.toFixed(E.x) + ", " + se.toFixed(E.y) - } - z.tipInfo = { - helperPos: f, - text: b, - size: b.length - }, z._writeToHt(), z._interactor.fi({ - kind: "betweenEditPoint", - event: t - }) - } - }, Ao.prototype._setCurrentPointImpl = function (i, j) { - var E = this, - p = E._activing; - if (!p) return !1; - var t = E.target; - if (!t) return !1; - var U = p.getCurrentEditingPoint(); - if (!U) return !1; - var f = p.editingCtrl; - if (!f) var x = U.clone(); - if ("e" === i) U.e = j; - else { - var N; - if ("x" === i || "y" === i) { - var X = p._lastFirePoint; - N = "x" === i ? { - x: j, - y: X ? X.y : 0 - } : { - x: X ? X.x : 0, - y: j - } - } else "object" == typeof i ? (N = i, i.e !== Z && (U.e = i.e)) : (N = { - x: arguments[0], - y: arguments[1] - }, arguments[2] !== Z && (U.e = arguments[2])); - var T = se.getDataMatrix(t); - N = se.toScreenPosition(E._interactor.gv, T.apply(N)), U.x = N.x, U.y = N.y - } if (!f) { - var K = x.multiplyScalar(-1).add(U); - U.e && x.e && (K.e = U.e - x.e); - var C = E.screenInfo.curve; - C.moveCtrlDueToRealPointMovement(U, K); - var J = p.selections; - if (J) { - var u = 0; - J.forEach(function (D) { - var B = D.clone().add(K); - isFinite(K.e) && (B.e = (isFinite(D.e) ? D.e : t.getElevation() || 0) + K.e), C.moveRealPoint(D, B), J[u++] = B - }), p.selections = J - } - } - return !0 - }, Ao.prototype.setCurrentPoint = function (Q, c) { - return this._setCurrentPointImpl(Q, c) ? (this._writeToHt(), !0) : !1 - }, Ao.prototype._isEditEdgeSourceTarget = function () { - var B = this, - W = B.target; - if (!(W instanceof O.Edge)) return !1; - var r = B.editing.point, - m = B.screenInfo.curve._curves; - return r === m[0]._p1 ? "source" : r === m[m.length - 1]._p4 ? "target" : !1 - }, Ao.prototype._editEdgeSourceTarget = function (O, K, T) { - var p, t = this, - v = t.target; - if (p = "source" === O ? v.getSource() : v.getTarget()) { - var C, R = t._interactor.gv, - P = se.toWorldPosition(R, K), - n = t._calcHostAnchor(v, O, P, p); - if (C = n.index !== Z || n.percent !== Z ? n.distance * R.getZoom() > t._interactor.getStyle("edgeHostEdgeMaxDistance") : t._interactor.getStyle("edgeHostDetectPerFrame") ? !0 : n.x < 0 || n.x > 1 || n.y < 0 || n.y > 1 ? !0 : !1) { - var d = R.getDataAt(P, function (o) { - return R.isSelectable(o) ? R.isSourceTargetEditable(v, o, O) ? v.canSetSourceTarget(o, O) ? !0 : !1 : !1 : !1 - }); - if (d) { - var Q = t._calcHostAnchor(v, O, P, d); - p = d, t._nextChangeEdgeHost = { - type: O, - host: d - }, n = Q - } - } - var W, h, B; - if (T || n.x === Z) (n.percent !== Z || n.index !== Z) && (h = n.point); - else { - var b = t._interactor.getStyle("anchorRound"), - E = t._interactor.getStyle("anchorSensitivity"); - W = R.calculateAttachPoint(p, P), W ? n = W.info : (n.x = se.roundTo(n.x, b, E), n.y = se.roundTo(n.y, b, E)), h = Yg(R, p, 0, n.offsetX || 0, n.offsetY || 0, n.x, n.y) - } - h && (B = se.toScreenPosition(R, h), K.x = B.x, K.y = B.y), t._edgeHostGuideInfo = { - corners: se.getTargetCornersOnScreen(R, p), - attach: W ? W.index : -1, - host: p - }; - var M; - return n.percent !== Z ? M = "percent: " + n.percent.toFixed(2) : n.index !== Z ? M = "index: " + n.index : (M = "" + n.x.toFixed(2) + ", " + n.y.toFixed(2), (n.offsetX || n.offsetY) && (M += " offset: " + n.offsetX.toFixed(2) + ", " + n.offsetY.toFixed(2))), { - host: p, - anchor: n, - tipText: M - } - } - }, Ao.prototype._guidingToEdit = function (h, T) { - var L, u, X = this; - if (L = X.screenInfo.curve) { - u = L._curves; - var j, Y, m, e, t, C, f, q, R = 1 / 0, - l = 1 / 0, - H = []; - for (X.editing && "realPoint" === X.editing.type && (q = X.editing.point), t = 0, C = 2 * u.length; C > t; t++) f = u[Math.floor(t / 2)][t % 2 ? "_p4" : "_p1"], H.indexOf(f) >= 0 || (H.push(f), q && q === f || (m = f.x - h.x, e = f.y - h.y, Math.abs(m) < Math.abs(R) ? (R = m, j = [f]) : m === R && j.push(f), Math.abs(e) < Math.abs(l) ? (l = e, Y = [f]) : e === l && Y.push(f))); - var G = X._interactor.getStyle("smartGuideThreshold"); - if ((Math.abs(R) > G || "y" === T) && (j = null), (Math.abs(l) > G || "x" === T) && (Y = null), j || Y) { - var c = !1, - E = {}; - if (j && (c = !0, E.xList = j, E.x = R), Y && (c = !0, E.yList = Y, E.y = l), c) return E - } - } - }, Ao.prototype._46O = function (v) { - var c = this; - c.editing && (c.editing = null, c._interactor.fi({ - kind: "endEditPoint", - event: v - })), c._guideInfo = null, c._edgeHostGuideInfo = null, c._pan && (c._pan = null, c._interactor.fi({ - kind: "endPan", - event: v - })), c._multiSelect && (c._handleMultiSelect(c._multiSelect), c._multiSelect = null), c.tipInfo = null, c.edgeEditResult = null - }, Ao.prototype._handleMultiSelect = function (N) { - if (N.startPoint && N.endPoint) { - var S, v, T, p, n, m = this, - Q = m._interactor, - B = Q.gv, - _ = se.toScreenPosition(B, N.startPoint), - g = se.toScreenPosition(B, N.endPoint), - R = O.Default.unionPoint(_, g), - G = m.screenInfo.curve._curves, - P = [], - s = function (k) { - k.x >= R.x && k.y >= R.y && k.x <= R.x + R.width && k.y <= R.y + R.height && P.indexOf(k) < 0 && P.push(k) - }; - for (S = 0, v = G.length; v > S; S++) n = G[S], s(n._p1), s(n._p4); - if (P.length) { - var J = m.activing || {}, - d = J.selections || []; - for (J.point && d.push(J.point), S = 0, v = d.length; v > S; S++) T = d[S], p = P.indexOf(T), p >= 0 ? P[p] = Z : P.push(T); - var c = P; - for (P = [], S = 0, v = c.length; v > S; S++) c[S] && P.push(c[S]); - v = P.length, 0 === v ? m.activing = null : 1 === v ? m.activing = { - point: P[0] - } : (T = P[v - 1], m.activing = { - point: T, - selections: P.splice(0, v - 1) - }), Q.redraw() - } - } - }, Ao.prototype._canDeletePoint = function (c, g) { - var Z = this.target; - if (!(Z instanceof O.Edge)) return !0; - var L = c._curves[0], - o = c._curves[c._curves.length - 1]; - return L._p1 === g || o._p4 === g ? !1 : !0 - }, Ao.prototype.handleDelete = function () { - var F = this; - if (F.activing && F.screenInfo) { - var c = O.Default.isShiftDown(), - o = F.screenInfo.curve; - F._canDeletePoint(o, F.activing.point) && o.deleteRealPoint(F.activing.point, c), F.activing.selections && F.activing.selections.forEach(function (u) { - F._canDeletePoint(o, u) && o.deleteRealPoint(u, c) - }), F.activing = null, delete F.editing, delete F.tipInfo, delete F.edgeEditResult, delete F._pan, delete F._multiSelect, F._writeToHt(), F._interactor.fp("deleteShapePoint", !1, !0) - } - }, Ao.prototype.handleDoubleClick = function (T) { - var O = this, - P = O._interactor._getLogicalPoint(T); - if (O.screenInfo && O._checkEditRealPoint(P)) { - var k = O.getCurrentSelectintStatus(), - Z = se.Curve.PointType; - return k = k === Z.Mirrored ? Z.Straight : Z.Mirrored, O._setCurrentSelectionStatus(k), O._interactor._42(), !0 - } - }, Ao.prototype._drawHighlight = function (d) { - var s = this, - x = s.highlight; - if (x) { - var o = x.bezier, - L = s._interactor; - o && se.Icons.DrawIcon(L, d, se.Icons.ShapeHighlightCurve, [o._p1.x, o._p1.y, o._p2.x, o._p2.y, o._p3.x, o._p3.y, o._p4.x, o._p4.y]); - var b = x.point; - b && "insertKnot" === x.type && se.Icons.DrawIcon(L, d, se.Icons.ShapeHighlighPoint, b) - } - }, Ao.prototype._drawGuide = function (V) { - var K = this, - H = K._guideInfo; - if (H) { - var l, y, G, i, c = H.v; - for (l = 0; 2 > l; l++) - if (i = 0 === l ? H.xList : H.yList) - for (y = 0, G = i.length; G > y; y++) se.Icons.DrawIcon(K._interactor, V, se.Icons.ShapeGuideLine, [c.x, c.y, i[y].x, i[y].y]) - } - }, Ao.prototype._drawCurrentPoint = function (M) { - var q = this; - if (q.activing) { - var C = q.activing, - s = q.getCurrentSelectintStatus(), - K = q._interactor; - if (s !== se.Curve.PointType.Straight) { - var Z = C.pairs; - C.hlpair, C.hltype; - var p = C.selections, - F = C.editingCtrl; - if (Z && !p) { - var E, u, S; - for (u = 0, S = Z.length; S > u; u++) E = Z[u], F && u === F.pairId && E[F.type] ? se.Icons.DrawIcon(K, M, se.Icons.ShapeActivingCtrl, { - point: E.point, - c1: E.c1, - c2: E.c2, - hl: F.type - }) : se.Icons.DrawIcon(K, M, se.Icons.ShapeActivingCtrl, E) - } - } - se.Icons.DrawIcon(K, M, se.Icons.ShapeHighlighRealPoint, q.activing.point), p && p.forEach(function (S) { - se.Icons.DrawIcon(K, M, se.Icons.ShapeHighlighRealPoint, S) - }) - } - }, Ao.prototype.clear = function () { - var d = this; - d.editing = null, d._guideInfo = null, d.activing = null, d.highlight = null - }, Ao.prototype._42 = function (C) { - var j = this; - j.info = {}, j.editing || (j.screenInfo = null); - var R = j._interactor; - if (!R.editDetail) return j.clear(), void 0; - var t = R.gv; - if (!j.target || !t.isSelected(j.target) || !t.isVisible(j.target)) return R.editDetail = !1, j.clear(), void 0; - if (j.gatherSingleTarget(t, j.target), se.Icons.DrawIcon(R, C, se.Icons.ShapeBgCurve, j.screenInfo), j._interactor.getStyle("curveElevationVisible") && (j.target instanceof O.Polyline || j.target instanceof O.Edge && j._interactor.getStyle("edgeElevationEditable")) && j.activing) { - var M = j.activing.getCurrentEditingPoint(); - M && "string" != typeof M.e && se.Icons.DrawIcon(R, C, se.Icons.EdgeElevationGuide, M) - } - if (j._drawHighlight(C), j._drawCurrentPoint(C), j._getRealPoint().forEach(function (Q) { - se.Icons.DrawIcon(R, C, se.Icons.ShapePoint, Q) - }), j._drawGuide(C), j.tipInfo && j._interactor.getStyle("curveTipVisible") && se.Icons.DrawIcon(R, C, se.Icons.TipHelper, j.tipInfo), j._edgeHostGuideInfo && R._drawHostGuide(j._edgeHostGuideInfo), j.edgeEditResult && j._drawEdgeHostHighlight(C, j.edgeEditResult.host, j.edgeEditResult.anchor), j._multiSelect && j._multiSelect.endPoint) { - var s = O.Default.unionPoint(se.toScreenPosition(t, j._multiSelect.startPoint), se.toScreenPosition(t, j._multiSelect.endPoint)); - s.color = t.getRectSelectBorderColor(), C.save(), C.setTransform(1, 0, 0, 1, 0, 0); - var L = x.devicePixelRatio, - p = s.borderWidth = Math.round(L); - p /= 2, s.x = Math.round(s.x * L) + p, s.y = Math.round(s.y * L) + p, s.width = Math.round(s.width * L), s.height = Math.round(s.height * L), se.Icons.DrawIcon(R, C, se.Icons.SimpleRect, s), C.restore() - } - }, Ao.prototype._drawEdgeHostHighlight = function (D, j, $) { - this.drawEdgeHostHighlight(D, j, $), this._interactor.redraw() - }, Ao.prototype.drawEdgeHostHighlight = function (m, V, K) { - if (Bk(V)) { - var u, O, $, R, A = this, - k = A._interactor, - b = k.gv, - D = b.getDataUI(V), - C = gl(D), - E = []; - for ($ = 0, R = C.points.length; R > $; $++) O = se.toScreenPosition(b, C.points.get($)), E.push(O.x, O.y); - C.segments && (u = C.segments.toArray()); - var l = k.getStyle("edgeHostHighlighPeriod"), - N = k.getStyle("edgeHostEdgeHighlighColor"); - se.Icons.DrawIcon(k, m, se.Icons.ShapeBgCurve, { - P: E, - S: u, - color: N, - dynamicVisible: K.index === Z, - dynamicPeriod: l - }), N = k.getStyle("edgeHostPointHighlighColor"); - var e = Kk(D); - for ($ = 0, R = e.length; R > $; $++) { - var c = e[$], - y = se.toScreenPosition(b, c); - se.Icons.DrawIcon(k, m, se.Icons.ShapePoint, { - point: { - x: y.x, - y: y.y - }, - color: N, - size: 12, - dynamicVisible: $ === K.index, - dynamicPeriod: l - }) - } - } - }, Ao.prototype._getRealPoint = function () { - var p, n = this.screenInfo, - z = n.P, - _ = n.S, - T = -1, - L = [], - Z = -1, - D = _.length; - return _.each(function (C) { - Z++; - var G = 1; - if (3 === C) G = 2; - else if (4 === C) G = 3; - else if (5 === C) return; - T += G, p = Z + 1 >= D ? !0 : 1 === _.get(Z + 1) ? !0 : !1, L.push({ - point: { - x: z[2 * T], - y: z[2 * T + 1] - }, - segmentIndex: Z, - pointIndex: T, - isEnd: p - }) - }), L - }, Ao.prototype.getEditingPointsInfo = function (V) { - var e = this, - b = e.activing; - if (!b) return !1; - var v = b.point; - if (!v) return !1; - var j = this._getRealPoint(), - z = [{ - screen: v - }]; - b.selections && b.selections.forEach(function (s) { - z.push({ - screen: s - }) - }); - var c, s, y = j.length; - return z.forEach(function (R) { - for (c = 0; y > c; c++) - if (s = j[c], R.screen.isNearEnough(s.point)) { - R.segmentIndex = s.segmentIndex, R.pointIndex = s.pointIndex, R.point = e.target.getPoints().get(s.pointIndex); - break - } - }), V && z.sort(function (O, o) { - return O.segmentIndex - o.segmentIndex - }), z - }; - var If = se.MoveHelper = function (W) { - var x = this; - x.catalog = "Move", x._interactor = W - }; - If.prototype = {}, If.prototype.constructor = If, If.prototype.calcShift = function (e, n, m) { - var T, E, w = this, - r = w._interactor.gv, - c = r.lp(n); - if ("beginMove" === e && w._gatherGridInfo(m._lastLogicalPoint || c), T = w._target) { - var N = T.downPosition; - if (N) { - var K = w._interactor.getStyle("moveSensitivity") / r._zoom; - if (N.distanceTo(c) < K) return { - x: 0, - y: 0 - }; - delete T.downPosition - } - var S; - E = O.Default.isShiftDown(n), E && (c = w._dealShiftDown(c), S = T.shiftGuide.dir); - var o, Z = T.rawPos = { - x: T.pos.x + c.x - T.lp.x, - y: T.pos.y + c.y - T.lp.y - }; - if (O.Default.isCtrlDown(n)) { - if (o = w._calcShiftByAddon(), w._target.node instanceof se.Group) { - var k = w._target.node; - k._position.x += o.x, k._position.y += o.y - } - return o - } - var d = w._interactor.rectGuide; - if (T.node instanceof O.Data && T.node.s("2d.attachable")) { - var H = w._calcAttachNodeShift(T.node, Z); - if (d.clear(), H) return H - } - for (var s, v = T.x + Z.x, I = T.y + Z.y, z = { - x: v, - y: I - }, U = { - x: v + T.w / 2, - y: I + T.h / 2 - }, Y = { - x: v + T.w, - y: I + T.h - }, i = w._interactor.gridGuide, R = [d.findClosest(z, S), d.findClosest(U, S), d.findClosest(Y, S), i.findClosest(z, S), i.findClosest(U, S), i.findClosest(Y, S)], L = 1 / 0, $ = 1 / 0, l = 0, _ = R.length; _ > l; l++) s = R[l], s && (v = s.x, I = s.y, isFinite(v) && Math.abs(v) < Math.abs(L) && (L = v), isFinite(I) && Math.abs(I) < Math.abs($) && ($ = I)); - if (isFinite(L) || (L = 0), isFinite($) || ($ = 0), o = w._calcShiftByAddon(L, $), w._target.node instanceof se.Group) { - var k = w._target.node; - k._position.x += o.x, k._position.y += o.y - } - var Q = T.node; - if (!Th(Q, r)) { - var h = Z.x + L, - x = Z.y + $; - w._interactor.rectGuide.gatherLines({ - node: Q, - x: T.x + h, - y: T.y + x, - w: T.w, - h: T.h - }, S) - } - return o - } - }, If.prototype._calcShiftByAddon = function (V, J) { - var Z = this._target, - g = Z.rawPos, - $ = Z.node.getPosition(); - return V = V || 0, J = J || 0, { - x: g.x - $.x + V, - y: g.y - $.y + J - } - }, If.prototype._dealShiftDown = function (p) { - var m = this, - x = m._target.shiftGuide, - K = m._target.lp, - M = Math.abs(p.x - K.x), - $ = Math.abs(p.y - K.y); - M > $ && M > x.limit && "y" === x.dir && (x.dir = "x"), $ > M && $ > x.limit && "x" === x.dir && (x.dir = "y"); - var j = x.dir; - return "x" === j ? (p.y = K.y, x.limit = Math.max(x.limit, M)) : "y" === j && (p.x = K.x, x.limit = Math.max(x.limit, $)), p - }, If.prototype._isAttachableLineShape = function ($) { - if (!$.getSegments) return !1; - var t = $.getSegments(); - if (!t) return !0; - t instanceof O.List && (t = t.getArray()); - for (var L = 1, G = t.length; G > L; L++) - if (2 !== t[L]) return !1; - return !0 - }, If.prototype._calcAttachNodeShift = function () { - var x = new Xi, - K = new Xi, - l = new Xi, - G = new Xi; - return function (N, U) { - var r = this._interactor.gv, - p = N.getHost(), - O = r.getDataAt(U, function (C) { - return C.s("2d.hostable") ? !0 : !1 - }); - if (O && p !== O && N.setHost(O), !O) return this._edgeHostGuideInfo = null, N.setHost(null); - var k = this._edgeHostGuideInfo = { - corners: se.getTargetCornersOnScreen(r, O), - host: O, - attach: -1 - }; - if (this._isAttachableLineShape(O)) { - for (var u, a, y, P, J, H, h = O.getPoints(), I = h.size(), Z = O.getPointsMatrix2d(), s = 1 / 0, q = 0; I > q && (q !== I - 1 || O.isClosePath()); q++) 0 !== q ? K.copy(l) : Z.apply(h.get(q), K), Z.apply(q === I - 1 ? h.get(0) : h.get(q + 1), l), x.copy(U).sub(K), G.copy(l).sub(K), u = G.length(), G.divideScalar(u), a = x.dot(G), 0 > a ? a = 0 : a > u && (a = u), G.multiplyScalar(a).add(K), y = x.copy(U).sub(G).lengthSq(), s > y && (s = y, H = q, P = a, J = u); - return Math.sqrt(s) * r.getZoom() > this._interactor.getStyle("attachThreshold") ? (N.s({ - "attach.index": -1 - }), N.setHost(null), void 0) : (N.s("attach.offset.opposite") && (P = J - P), N.s({ - "attach.index": H, - "attach.offset": N.s("attach.offset.relative") ? P / J : P - }), { - x: 0, - y: 0 - }) - } - var B = r.calculateAttachPoint(O, U); - if (B) { - var Y = B.point; - return k.attach = B.index, this._calcShiftByAddon(Y.x - U.x, Y.y - U.y) - } - } - }(), If.prototype._gatherGridInfo = function (C) { - var y, D = this, - T = D._interactor, - W = T._getValidSelection(); - if (W.length) { - if (1 === W.length) { - if (y = W[0], !y.getRect) return D._target = null, void 0 - } else if (y = se.Group.findOrCreateGroup(W), !y) return D._target = null, void 0 - } else { - var W = T.gv.sm().getSelection(); - if (W.length && (y = W.get(0), !y.getRect)) return D._target = null, void 0 - } if (y) { - var _ = y.getPosition(), - l = y.getRect(); - D._target = { - node: y, - x: l.x - _.x, - y: l.y - _.y, - w: l.width, - h: l.height, - lp: { - x: C.x, - y: C.y - }, - pos: { - x: _.x, - y: _.y - }, - shiftGuide: { - dir: "x", - limit: 0 - }, - downPosition: new se.Math.Vector2(C) - }, T.rectGuide.gatherRects() - } - }, If.prototype.clear = function () { - var l = this; - l._edgeHostGuideInfo = null, l._interactor.rectGuide.clear(), l._interactor._42() - }, If.prototype._42 = function () { - var j = this._edgeHostGuideInfo; - j && this._interactor._drawHostGuide(j) - }; - var Ah = o.freeze({ - DEPTH_BUFFER_BIT: 256, - STENCIL_BUFFER_BIT: 1024, - COLOR_BUFFER_BIT: 16384, - POINTS: 0, - LINES: 1, - LINE_LOOP: 2, - LINE_STRIP: 3, - TRIANGLES: 4, - TRIANGLE_STRIP: 5, - TRIANGLE_FAN: 6, - ZERO: 0, - ONE: 1, - SRC_COLOR: 768, - ONE_MINUS_SRC_COLOR: 769, - SRC_ALPHA: 770, - ONE_MINUS_SRC_ALPHA: 771, - DST_ALPHA: 772, - ONE_MINUS_DST_ALPHA: 773, - DST_COLOR: 774, - ONE_MINUS_DST_COLOR: 775, - SRC_ALPHA_SATURATE: 776, - FUNC_ADD: 32774, - BLEND_EQUATION: 32777, - BLEND_EQUATION_RGB: 32777, - BLEND_EQUATION_ALPHA: 34877, - FUNC_SUBTRACT: 32778, - FUNC_REVERSE_SUBTRACT: 32779, - BLEND_DST_RGB: 32968, - BLEND_SRC_RGB: 32969, - BLEND_DST_ALPHA: 32970, - BLEND_SRC_ALPHA: 32971, - CONSTANT_COLOR: 32769, - ONE_MINUS_CONSTANT_COLOR: 32770, - CONSTANT_ALPHA: 32771, - ONE_MINUS_CONSTANT_ALPHA: 32772, - BLEND_COLOR: 32773, - ARRAY_BUFFER: 34962, - ELEMENT_ARRAY_BUFFER: 34963, - ARRAY_BUFFER_BINDING: 34964, - ELEMENT_ARRAY_BUFFER_BINDING: 34965, - STREAM_DRAW: 35040, - STATIC_DRAW: 35044, - DYNAMIC_DRAW: 35048, - BUFFER_SIZE: 34660, - BUFFER_USAGE: 34661, - CURRENT_VERTEX_ATTRIB: 34342, - FRONT: 1028, - BACK: 1029, - FRONT_AND_BACK: 1032, - CULL_FACE: 2884, - BLEND: 3042, - DITHER: 3024, - STENCIL_TEST: 2960, - DEPTH_TEST: 2929, - SCISSOR_TEST: 3089, - POLYGON_OFFSET_FILL: 32823, - SAMPLE_ALPHA_TO_COVERAGE: 32926, - SAMPLE_COVERAGE: 32928, - NO_ERROR: 0, - INVALID_ENUM: 1280, - INVALID_VALUE: 1281, - INVALID_OPERATION: 1282, - OUT_OF_MEMORY: 1285, - CW: 2304, - CCW: 2305, - LINE_WIDTH: 2849, - ALIASED_POINT_SIZE_RANGE: 33901, - ALIASED_LINE_WIDTH_RANGE: 33902, - CULL_FACE_MODE: 2885, - FRONT_FACE: 2886, - DEPTH_RANGE: 2928, - DEPTH_WRITEMASK: 2930, - DEPTH_CLEAR_VALUE: 2931, - DEPTH_FUNC: 2932, - STENCIL_CLEAR_VALUE: 2961, - STENCIL_FUNC: 2962, - STENCIL_FAIL: 2964, - STENCIL_PASS_DEPTH_FAIL: 2965, - STENCIL_PASS_DEPTH_PASS: 2966, - STENCIL_REF: 2967, - STENCIL_VALUE_MASK: 2963, - STENCIL_WRITEMASK: 2968, - STENCIL_BACK_FUNC: 34816, - STENCIL_BACK_FAIL: 34817, - STENCIL_BACK_PASS_DEPTH_FAIL: 34818, - STENCIL_BACK_PASS_DEPTH_PASS: 34819, - STENCIL_BACK_REF: 36003, - STENCIL_BACK_VALUE_MASK: 36004, - STENCIL_BACK_WRITEMASK: 36005, - VIEWPORT: 2978, - SCISSOR_BOX: 3088, - COLOR_CLEAR_VALUE: 3106, - COLOR_WRITEMASK: 3107, - UNPACK_ALIGNMENT: 3317, - PACK_ALIGNMENT: 3333, - MAX_TEXTURE_SIZE: 3379, - MAX_VIEWPORT_DIMS: 3386, - SUBPIXEL_BITS: 3408, - RED_BITS: 3410, - GREEN_BITS: 3411, - BLUE_BITS: 3412, - ALPHA_BITS: 3413, - DEPTH_BITS: 3414, - STENCIL_BITS: 3415, - POLYGON_OFFSET_UNITS: 10752, - POLYGON_OFFSET_FACTOR: 32824, - TEXTURE_BINDING_2D: 32873, - SAMPLE_BUFFERS: 32936, - SAMPLES: 32937, - SAMPLE_COVERAGE_VALUE: 32938, - SAMPLE_COVERAGE_INVERT: 32939, - COMPRESSED_TEXTURE_FORMATS: 34467, - DONT_CARE: 4352, - FASTEST: 4353, - NICEST: 4354, - GENERATE_MIPMAP_HINT: 33170, - BYTE: 5120, - UNSIGNED_BYTE: 5121, - SHORT: 5122, - UNSIGNED_SHORT: 5123, - INT: 5124, - UNSIGNED_INT: 5125, - FLOAT: 5126, - DEPTH_COMPONENT: 6402, - ALPHA: 6406, - RGB: 6407, - RGBA: 6408, - LUMINANCE: 6409, - LUMINANCE_ALPHA: 6410, - UNSIGNED_SHORT_4_4_4_4: 32819, - UNSIGNED_SHORT_5_5_5_1: 32820, - UNSIGNED_SHORT_5_6_5: 33635, - FRAGMENT_SHADER: 35632, - VERTEX_SHADER: 35633, - MAX_VERTEX_ATTRIBS: 34921, - MAX_VERTEX_UNIFORM_VECTORS: 36347, - MAX_VARYING_VECTORS: 36348, - MAX_COMBINED_TEXTURE_IMAGE_UNITS: 35661, - MAX_VERTEX_TEXTURE_IMAGE_UNITS: 35660, - MAX_TEXTURE_IMAGE_UNITS: 34930, - MAX_FRAGMENT_UNIFORM_VECTORS: 36349, - SHADER_TYPE: 35663, - DELETE_STATUS: 35712, - LINK_STATUS: 35714, - VALIDATE_STATUS: 35715, - ATTACHED_SHADERS: 35717, - ACTIVE_UNIFORMS: 35718, - ACTIVE_ATTRIBUTES: 35721, - SHADING_LANGUAGE_VERSION: 35724, - CURRENT_PROGRAM: 35725, - NEVER: 512, - LESS: 513, - EQUAL: 514, - LEQUAL: 515, - GREATER: 516, - NOTEQUAL: 517, - GEQUAL: 518, - ALWAYS: 519, - KEEP: 7680, - REPLACE: 7681, - INCR: 7682, - DECR: 7683, - INVERT: 5386, - INCR_WRAP: 34055, - DECR_WRAP: 34056, - VENDOR: 7936, - RENDERER: 7937, - VERSION: 7938, - NEAREST: 9728, - LINEAR: 9729, - NEAREST_MIPMAP_NEAREST: 9984, - LINEAR_MIPMAP_NEAREST: 9985, - NEAREST_MIPMAP_LINEAR: 9986, - LINEAR_MIPMAP_LINEAR: 9987, - TEXTURE_MAG_FILTER: 10240, - TEXTURE_MIN_FILTER: 10241, - TEXTURE_WRAP_S: 10242, - TEXTURE_WRAP_T: 10243, - TEXTURE_2D: 3553, - TEXTURE: 5890, - TEXTURE_CUBE_MAP: 34067, - TEXTURE_BINDING_CUBE_MAP: 34068, - TEXTURE_CUBE_MAP_POSITIVE_X: 34069, - TEXTURE_CUBE_MAP_NEGATIVE_X: 34070, - TEXTURE_CUBE_MAP_POSITIVE_Y: 34071, - TEXTURE_CUBE_MAP_NEGATIVE_Y: 34072, - TEXTURE_CUBE_MAP_POSITIVE_Z: 34073, - TEXTURE_CUBE_MAP_NEGATIVE_Z: 34074, - MAX_CUBE_MAP_TEXTURE_SIZE: 34076, - TEXTURE0: 33984, - TEXTURE1: 33985, - TEXTURE2: 33986, - TEXTURE3: 33987, - TEXTURE4: 33988, - TEXTURE5: 33989, - TEXTURE6: 33990, - TEXTURE7: 33991, - TEXTURE8: 33992, - TEXTURE9: 33993, - TEXTURE10: 33994, - TEXTURE11: 33995, - TEXTURE12: 33996, - TEXTURE13: 33997, - TEXTURE14: 33998, - TEXTURE15: 33999, - TEXTURE16: 34e3, - TEXTURE17: 34001, - TEXTURE18: 34002, - TEXTURE19: 34003, - TEXTURE20: 34004, - TEXTURE21: 34005, - TEXTURE22: 34006, - TEXTURE23: 34007, - TEXTURE24: 34008, - TEXTURE25: 34009, - TEXTURE26: 34010, - TEXTURE27: 34011, - TEXTURE28: 34012, - TEXTURE29: 34013, - TEXTURE30: 34014, - TEXTURE31: 34015, - ACTIVE_TEXTURE: 34016, - REPEAT: 10497, - CLAMP_TO_EDGE: 33071, - MIRRORED_REPEAT: 33648, - FLOAT_VEC2: 35664, - FLOAT_VEC3: 35665, - FLOAT_VEC4: 35666, - INT_VEC2: 35667, - INT_VEC3: 35668, - INT_VEC4: 35669, - BOOL: 35670, - BOOL_VEC2: 35671, - BOOL_VEC3: 35672, - BOOL_VEC4: 35673, - FLOAT_MAT2: 35674, - FLOAT_MAT3: 35675, - FLOAT_MAT4: 35676, - SAMPLER_2D: 35678, - SAMPLER_CUBE: 35680, - VERTEX_ATTRIB_ARRAY_ENABLED: 34338, - VERTEX_ATTRIB_ARRAY_SIZE: 34339, - VERTEX_ATTRIB_ARRAY_STRIDE: 34340, - VERTEX_ATTRIB_ARRAY_TYPE: 34341, - VERTEX_ATTRIB_ARRAY_NORMALIZED: 34922, - VERTEX_ATTRIB_ARRAY_POINTER: 34373, - VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 34975, - IMPLEMENTATION_COLOR_READ_TYPE: 35738, - IMPLEMENTATION_COLOR_READ_FORMAT: 35739, - COMPILE_STATUS: 35713, - LOW_FLOAT: 36336, - MEDIUM_FLOAT: 36337, - HIGH_FLOAT: 36338, - LOW_INT: 36339, - MEDIUM_INT: 36340, - HIGH_INT: 36341, - FRAMEBUFFER: 36160, - RENDERBUFFER: 36161, - RGBA4: 32854, - RGB5_A1: 32855, - RGB565: 36194, - DEPTH_COMPONENT16: 33189, - STENCIL_INDEX: 6401, - STENCIL_INDEX8: 36168, - DEPTH_STENCIL: 34041, - RENDERBUFFER_WIDTH: 36162, - RENDERBUFFER_HEIGHT: 36163, - RENDERBUFFER_INTERNAL_FORMAT: 36164, - RENDERBUFFER_RED_SIZE: 36176, - RENDERBUFFER_GREEN_SIZE: 36177, - RENDERBUFFER_BLUE_SIZE: 36178, - RENDERBUFFER_ALPHA_SIZE: 36179, - RENDERBUFFER_DEPTH_SIZE: 36180, - RENDERBUFFER_STENCIL_SIZE: 36181, - FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 36048, - FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 36049, - FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 36050, - FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 36051, - COLOR_ATTACHMENT0: 36064, - DEPTH_ATTACHMENT: 36096, - STENCIL_ATTACHMENT: 36128, - DEPTH_STENCIL_ATTACHMENT: 33306, - NONE: 0, - FRAMEBUFFER_COMPLETE: 36053, - FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 36054, - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 36055, - FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 36057, - FRAMEBUFFER_UNSUPPORTED: 36061, - FRAMEBUFFER_BINDING: 36006, - RENDERBUFFER_BINDING: 36007, - MAX_RENDERBUFFER_SIZE: 34024, - INVALID_FRAMEBUFFER_OPERATION: 1286, - UNPACK_FLIP_Y_WEBGL: 37440, - UNPACK_PREMULTIPLY_ALPHA_WEBGL: 37441, - CONTEXT_LOST_WEBGL: 37442, - UNPACK_COLORSPACE_CONVERSION_WEBGL: 37443, - BROWSER_DEFAULT_WEBGL: 37444, - COMPRESSED_RGB_S3TC_DXT1_EXT: 33776, - COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777, - COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778, - COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779, - COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840, - COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841, - COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842, - COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843, - COMPRESSED_RGB_ETC1_WEBGL: 36196, - HALF_FLOAT_OES: 36193, - DOUBLE: 5130, - READ_BUFFER: 3074, - UNPACK_ROW_LENGTH: 3314, - UNPACK_SKIP_ROWS: 3315, - UNPACK_SKIP_PIXELS: 3316, - PACK_ROW_LENGTH: 3330, - PACK_SKIP_ROWS: 3331, - PACK_SKIP_PIXELS: 3332, - COLOR: 6144, - DEPTH: 6145, - STENCIL: 6146, - RED: 6403, - RGB8: 32849, - RGBA8: 32856, - RGB10_A2: 32857, - TEXTURE_BINDING_3D: 32874, - UNPACK_SKIP_IMAGES: 32877, - UNPACK_IMAGE_HEIGHT: 32878, - TEXTURE_3D: 32879, - TEXTURE_WRAP_R: 32882, - MAX_3D_TEXTURE_SIZE: 32883, - UNSIGNED_INT_2_10_10_10_REV: 33640, - MAX_ELEMENTS_VERTICES: 33e3, - MAX_ELEMENTS_INDICES: 33001, - TEXTURE_MIN_LOD: 33082, - TEXTURE_MAX_LOD: 33083, - TEXTURE_BASE_LEVEL: 33084, - TEXTURE_MAX_LEVEL: 33085, - MIN: 32775, - MAX: 32776, - DEPTH_COMPONENT24: 33190, - MAX_TEXTURE_LOD_BIAS: 34045, - TEXTURE_COMPARE_MODE: 34892, - TEXTURE_COMPARE_FUNC: 34893, - CURRENT_QUERY: 34917, - QUERY_RESULT: 34918, - QUERY_RESULT_AVAILABLE: 34919, - STREAM_READ: 35041, - STREAM_COPY: 35042, - STATIC_READ: 35045, - STATIC_COPY: 35046, - DYNAMIC_READ: 35049, - DYNAMIC_COPY: 35050, - MAX_DRAW_BUFFERS: 34852, - DRAW_BUFFER0: 34853, - DRAW_BUFFER1: 34854, - DRAW_BUFFER2: 34855, - DRAW_BUFFER3: 34856, - DRAW_BUFFER4: 34857, - DRAW_BUFFER5: 34858, - DRAW_BUFFER6: 34859, - DRAW_BUFFER7: 34860, - DRAW_BUFFER8: 34861, - DRAW_BUFFER9: 34862, - DRAW_BUFFER10: 34863, - DRAW_BUFFER11: 34864, - DRAW_BUFFER12: 34865, - DRAW_BUFFER13: 34866, - DRAW_BUFFER14: 34867, - DRAW_BUFFER15: 34868, - MAX_FRAGMENT_UNIFORM_COMPONENTS: 35657, - MAX_VERTEX_UNIFORM_COMPONENTS: 35658, - SAMPLER_3D: 35679, - SAMPLER_2D_SHADOW: 35682, - FRAGMENT_SHADER_DERIVATIVE_HINT: 35723, - PIXEL_PACK_BUFFER: 35051, - PIXEL_UNPACK_BUFFER: 35052, - PIXEL_PACK_BUFFER_BINDING: 35053, - PIXEL_UNPACK_BUFFER_BINDING: 35055, - FLOAT_MAT2x3: 35685, - FLOAT_MAT2x4: 35686, - FLOAT_MAT3x2: 35687, - FLOAT_MAT3x4: 35688, - FLOAT_MAT4x2: 35689, - FLOAT_MAT4x3: 35690, - SRGB: 35904, - SRGB8: 35905, - SRGB8_ALPHA8: 35907, - COMPARE_REF_TO_TEXTURE: 34894, - RGBA32F: 34836, - RGB32F: 34837, - RGBA16F: 34842, - RGB16F: 34843, - VERTEX_ATTRIB_ARRAY_INTEGER: 35069, - MAX_ARRAY_TEXTURE_LAYERS: 35071, - MIN_PROGRAM_TEXEL_OFFSET: 35076, - MAX_PROGRAM_TEXEL_OFFSET: 35077, - MAX_VARYING_COMPONENTS: 35659, - TEXTURE_2D_ARRAY: 35866, - TEXTURE_BINDING_2D_ARRAY: 35869, - R11F_G11F_B10F: 35898, - UNSIGNED_INT_10F_11F_11F_REV: 35899, - RGB9_E5: 35901, - UNSIGNED_INT_5_9_9_9_REV: 35902, - TRANSFORM_FEEDBACK_BUFFER_MODE: 35967, - MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 35968, - TRANSFORM_FEEDBACK_VARYINGS: 35971, - TRANSFORM_FEEDBACK_BUFFER_START: 35972, - TRANSFORM_FEEDBACK_BUFFER_SIZE: 35973, - TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 35976, - RASTERIZER_DISCARD: 35977, - MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 35978, - MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 35979, - INTERLEAVED_ATTRIBS: 35980, - SEPARATE_ATTRIBS: 35981, - TRANSFORM_FEEDBACK_BUFFER: 35982, - TRANSFORM_FEEDBACK_BUFFER_BINDING: 35983, - RGBA32UI: 36208, - RGB32UI: 36209, - RGBA16UI: 36214, - RGB16UI: 36215, - RGBA8UI: 36220, - RGB8UI: 36221, - RGBA32I: 36226, - RGB32I: 36227, - RGBA16I: 36232, - RGB16I: 36233, - RGBA8I: 36238, - RGB8I: 36239, - RED_INTEGER: 36244, - RGB_INTEGER: 36248, - RGBA_INTEGER: 36249, - SAMPLER_2D_ARRAY: 36289, - SAMPLER_2D_ARRAY_SHADOW: 36292, - SAMPLER_CUBE_SHADOW: 36293, - UNSIGNED_INT_VEC2: 36294, - UNSIGNED_INT_VEC3: 36295, - UNSIGNED_INT_VEC4: 36296, - INT_SAMPLER_2D: 36298, - INT_SAMPLER_3D: 36299, - INT_SAMPLER_CUBE: 36300, - INT_SAMPLER_2D_ARRAY: 36303, - UNSIGNED_INT_SAMPLER_2D: 36306, - UNSIGNED_INT_SAMPLER_3D: 36307, - UNSIGNED_INT_SAMPLER_CUBE: 36308, - UNSIGNED_INT_SAMPLER_2D_ARRAY: 36311, - DEPTH_COMPONENT32F: 36012, - DEPTH32F_STENCIL8: 36013, - FLOAT_32_UNSIGNED_INT_24_8_REV: 36269, - FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 33296, - FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 33297, - FRAMEBUFFER_ATTACHMENT_RED_SIZE: 33298, - FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 33299, - FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 33300, - FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 33301, - FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 33302, - FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 33303, - FRAMEBUFFER_DEFAULT: 33304, - UNSIGNED_INT_24_8: 34042, - DEPTH24_STENCIL8: 35056, - UNSIGNED_NORMALIZED: 35863, - DRAW_FRAMEBUFFER_BINDING: 36006, - READ_FRAMEBUFFER: 36008, - DRAW_FRAMEBUFFER: 36009, - READ_FRAMEBUFFER_BINDING: 36010, - RENDERBUFFER_SAMPLES: 36011, - FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 36052, - MAX_COLOR_ATTACHMENTS: 36063, - COLOR_ATTACHMENT1: 36065, - COLOR_ATTACHMENT2: 36066, - COLOR_ATTACHMENT3: 36067, - COLOR_ATTACHMENT4: 36068, - COLOR_ATTACHMENT5: 36069, - COLOR_ATTACHMENT6: 36070, - COLOR_ATTACHMENT7: 36071, - COLOR_ATTACHMENT8: 36072, - COLOR_ATTACHMENT9: 36073, - COLOR_ATTACHMENT10: 36074, - COLOR_ATTACHMENT11: 36075, - COLOR_ATTACHMENT12: 36076, - COLOR_ATTACHMENT13: 36077, - COLOR_ATTACHMENT14: 36078, - COLOR_ATTACHMENT15: 36079, - FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 36182, - MAX_SAMPLES: 36183, - HALF_FLOAT: 5131, - RG: 33319, - RG_INTEGER: 33320, - R8: 33321, - RG8: 33323, - R16F: 33325, - R32F: 33326, - RG16F: 33327, - RG32F: 33328, - R8I: 33329, - R8UI: 33330, - R16I: 33331, - R16UI: 33332, - R32I: 33333, - R32UI: 33334, - RG8I: 33335, - RG8UI: 33336, - RG16I: 33337, - RG16UI: 33338, - RG32I: 33339, - RG32UI: 33340, - VERTEX_ARRAY_BINDING: 34229, - R8_SNORM: 36756, - RG8_SNORM: 36757, - RGB8_SNORM: 36758, - RGBA8_SNORM: 36759, - SIGNED_NORMALIZED: 36764, - COPY_READ_BUFFER: 36662, - COPY_WRITE_BUFFER: 36663, - COPY_READ_BUFFER_BINDING: 36662, - COPY_WRITE_BUFFER_BINDING: 36663, - UNIFORM_BUFFER: 35345, - UNIFORM_BUFFER_BINDING: 35368, - UNIFORM_BUFFER_START: 35369, - UNIFORM_BUFFER_SIZE: 35370, - MAX_VERTEX_UNIFORM_BLOCKS: 35371, - MAX_FRAGMENT_UNIFORM_BLOCKS: 35373, - MAX_COMBINED_UNIFORM_BLOCKS: 35374, - MAX_UNIFORM_BUFFER_BINDINGS: 35375, - MAX_UNIFORM_BLOCK_SIZE: 35376, - MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 35377, - MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 35379, - UNIFORM_BUFFER_OFFSET_ALIGNMENT: 35380, - ACTIVE_UNIFORM_BLOCKS: 35382, - UNIFORM_TYPE: 35383, - UNIFORM_SIZE: 35384, - UNIFORM_BLOCK_INDEX: 35386, - UNIFORM_OFFSET: 35387, - UNIFORM_ARRAY_STRIDE: 35388, - UNIFORM_MATRIX_STRIDE: 35389, - UNIFORM_IS_ROW_MAJOR: 35390, - UNIFORM_BLOCK_BINDING: 35391, - UNIFORM_BLOCK_DATA_SIZE: 35392, - UNIFORM_BLOCK_ACTIVE_UNIFORMS: 35394, - UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 35395, - UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 35396, - UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 35398, - INVALID_INDEX: 4294967295, - MAX_VERTEX_OUTPUT_COMPONENTS: 37154, - MAX_FRAGMENT_INPUT_COMPONENTS: 37157, - MAX_SERVER_WAIT_TIMEOUT: 37137, - OBJECT_TYPE: 37138, - SYNC_CONDITION: 37139, - SYNC_STATUS: 37140, - SYNC_FLAGS: 37141, - SYNC_FENCE: 37142, - SYNC_GPU_COMMANDS_COMPLETE: 37143, - UNSIGNALED: 37144, - SIGNALED: 37145, - ALREADY_SIGNALED: 37146, - TIMEOUT_EXPIRED: 37147, - CONDITION_SATISFIED: 37148, - WAIT_FAILED: 37149, - SYNC_FLUSH_COMMANDS_BIT: 1, - VERTEX_ATTRIB_ARRAY_DIVISOR: 35070, - ANY_SAMPLES_PASSED: 35887, - ANY_SAMPLES_PASSED_CONSERVATIVE: 36202, - SAMPLER_BINDING: 35097, - RGB10_A2UI: 36975, - INT_2_10_10_10_REV: 36255, - TRANSFORM_FEEDBACK: 36386, - TRANSFORM_FEEDBACK_PAUSED: 36387, - TRANSFORM_FEEDBACK_ACTIVE: 36388, - TRANSFORM_FEEDBACK_BINDING: 36389, - COMPRESSED_R11_EAC: 37488, - COMPRESSED_SIGNED_R11_EAC: 37489, - COMPRESSED_RG11_EAC: 37490, - COMPRESSED_SIGNED_RG11_EAC: 37491, - COMPRESSED_RGB8_ETC2: 37492, - COMPRESSED_SRGB8_ETC2: 37493, - COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37494, - COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37495, - COMPRESSED_RGBA8_ETC2_EAC: 37496, - COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37497, - TEXTURE_IMMUTABLE_FORMAT: 37167, - MAX_ELEMENT_INDEX: 36203, - TEXTURE_IMMUTABLE_LEVELS: 33503, - MAX_TEXTURE_MAX_ANISOTROPY_EXT: 34047 - }), - Do = function () { - function i(G, p) { - var r = Z; - return function () { - return r || (r = G.getExtension(p)), r - } - } - - function q(d, T) { - T == Z && (T = {}), T.version = P && (d instanceof WebGL2RenderingContext || o.prototype.toString.call(d) === k) ? 2 : 1, T.extensions = function () { - for (var _ = {}, A = d.getSupportedExtensions(), a = A.length; a--;) _[name] = i(d, A[a]); - return _ - }(); - for (var z = o.keys(g), H = 0, Q = z.length; Q > H; ++H) { - var h = z[H]; - T[h] = d.getParameter(g[h]) - } - if (T.version > 1) { - z = o.keys(r); - for (var H = 0, Q = z.length; Q > H; ++H) { - var h = z[H]; - T[h] = d.getParameter(r[h]) - } - } - return T - } - var P = "undefined" != typeof WebGL2RenderingContext, - k = "[object WebGL2RenderingContext]", - g = { - aliasedLineWidthRange: Ah.ALIASED_LINE_WIDTH_RANGE, - aliasedPointSizeRange: Ah.ALIASED_POINT_SIZE_RANGE, - maxCombinedTextureImageUnits: Ah.MAX_COMBINED_TEXTURE_IMAGE_UNITS, - maxCubeMapTextureSize: Ah.MAX_CUBE_MAP_TEXTURE_SIZE, - maxFragmentUniformVectors: Ah.MAX_FRAGMENT_UNIFORM_VECTORS, - maxRenderBufferSize: Ah.MAX_RENDERBUFFER_SIZE, - maxTextureImageUnits: Ah.MAX_TEXTURE_IMAGE_UNITS, - maxTextureSize: Ah.MAX_TEXTURE_SIZE, - maxVaryingVectors: Ah.MAX_VARYING_VECTORS, - maxVertexAttribs: Ah.MAX_VERTEX_ATTRIBS, - maxVertexTextureImageUnits: Ah.MAX_VERTEX_TEXTURE_IMAGE_UNITS, - maxVertexUniformVectors: Ah.MAX_VERTEX_UNIFORM_VECTORS, - maxViewportDIMs: Ah.MAX_VIEWPORT_DIMS - }, - r = { - max3DTextureSize: Ah.MAX_3D_TEXTURE_SIZE, - maxArrayTextureLayers: Ah.MAX_ARRAY_TEXTURE_LAYERS, - maxColorAttachments: Ah.MAX_COLOR_ATTACHMENTS, - maxCombinedFragmentUniformComponents: Ah.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, - maxCombinedUniformBlocks: Ah.MAX_COMBINED_UNIFORM_BLOCKS, - maxCombinedVertexUniformComponents: Ah.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, - maxDrawBuffers: Ah.MAX_DRAW_BUFFERS, - maxElementIndex: Ah.MAX_ELEMENT_INDEX, - maxElementsIndices: Ah.MAX_ELEMENTS_INDICES, - maxElementsVertices: Ah.MAX_ELEMENTS_VERTICES, - maxFragmentInpuComponents: Ah.MAX_FRAGMENT_INPUT_COMPONENTS, - maxFragmentUniformBlocks: Ah.MAX_FRAGMENT_UNIFORM_BLOCKS, - maxFragmentUniformComponents: Ah.MAX_FRAGMENT_UNIFORM_COMPONENTS, - maxProgramTexelOffset: Ah.MAX_PROGRAM_TEXEL_OFFSET, - maxSamples: Ah.MAX_SAMPLES, - maxTextureLODBias: Ah.MAX_TEXTURE_LOD_BIAS, - maxTransformFeedbackInterleavedComponents: Ah.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, - maxTransformFeedbackSeparateAttribs: Ah.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, - maxTransformFeedbackSeparateComponents: Ah.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, - maxUniformBlockSize: Ah.MAX_UNIFORM_BLOCK_SIZE, - maxUniformBufferBindings: Ah.MAX_UNIFORM_BUFFER_BINDINGS, - maxVaryingComponents: Ah.MAX_VARYING_COMPONENTS, - maxVertexOutputComponents: Ah.MAX_VERTEX_OUTPUT_COMPONENTS, - maxVertexUniformBlocks: Ah.MAX_VERTEX_UNIFORM_BLOCKS, - maxVertexUniformComponents: Ah.MAX_VERTEX_UNIFORM_COMPONENTS, - minProgramTexelOffset: Ah.MIN_PROGRAM_TEXEL_OFFSET - }; - return { - "for": function (z) { - var e = z._info; - return e || (z._info = e = q(z, e)), e - } - } - }(), - vd = function () { - function s(y, m, S) { - return { - def: y, - getter: S ? function (A) { - var P = Do.for(A); - return P.version > 1 ? A.getParameter(m) : y - } : function (s) { - return s.getParameter(m) - }, setter: S ? function (d, D) { - var I = Do.for(d); - I.version > 1 && d.pixelStorei(m, D) - } : function (I, D) { - I.pixelStorei(m, D) - } - } - } - - function W(v) { - return "string" == typeof v ? ns(v) : v.r !== Z ? (I[0] = v.r, I[1] = v.g, I[2] = v.b, I[3] = v.a, I) : v.red !== Z ? (I[0] = v.red, I[1] = v.green, I[2] = v.blue, I[3] = v.alpha, I) : v - } - - function A(s) { - return d(s) ? Array.prototype.slice.call(s, 0) : s - } - - function r(H, e, K) { - this.gl = e, this._record = K || {}, this._branches = {}, this._leafSync = {}, this._struct = H; - for (var G = H.children, M = G.length; M--;) { - var t = G[M], - J = t.name; - t.isLeaf ? (this._leafSync[J] = !1, this._record[J] = A(t.desc.def)) : this._record[J] = {} - } - } - - function K(O) { - function G(B, X) { - r.call(this, O, B, X); - for (var h = u.length; h--;) { - var T = u[h]; - this._branches[T._name] = new T._type(B, this._record[T._name]) - } - } - - function Q(w, x) { - function L(b, U) { - for (var g = W, v = !1; g--;) b[g] !== U[g] && (b[g] = U[g], v = !0); - return v - } - var V = w.name, - N = d(w.desc.def), - W = N && w.desc.def.length; - if (w.isLeaf) { - var $ = w.desc.setter, - y = w.desc.parse; - o.defineProperty(x, V, { - configurable: !1, - enumerable: !0, - get: function () { - return this._record[V] - }, set: N ? function (T) { - y && (T = y(T)), (L(this._record[V], T) || !this._leafSync[V]) && ($(this.gl, this._record[V]), this._leafSync[V] = !0) - } : function (Y) { - this._record[V] === Y && this._leafSync[V] || ($(this.gl, Y), this._record[V] = Y, this._leafSync[V] = !0) - } - }) - } else u.push({ - _name: V, - _type: K(w) - }), o.defineProperty(x, V, { - configurable: !1, - enumerable: !0, - get: function () { - return this._branches[V] - }, set: function (W) { - this._branches[V].apply(W) - } - }) - } - var u = []; - return l(G, r), O.forEach(Q, G.prototype), G - } - var I = "undefined" != typeof Float32Array && new Float32Array(4), - H = { - viewport: { - def: [0, 0, 0 / 0, 0 / 0], - getter: function (a) { - return a.getParameter(a.VIEWPORT) - }, setter: function (G, z) { - var i = z[2] !== z[2] ? G.drawingBufferWidth - z[0] : z[2], - K = z[3] !== z[3] ? G.drawingBufferHeight - z[1] : z[3]; - G.viewport(z[0], z[1], i, K) - } - }, - dither: { - def: !1, - getter: function (O) { - return O.isEnabled(O.DITHER) - }, setter: function (p, Y) { - Y ? p.enable(p.DITHER) : p.disable(p.DITHER) - } - }, - rasterizerDiscard: { - def: !1, - getter: function (w) { - var J = Do.for(w); - return J.version > 1 && w.isEnabled(w.RASTERIZER_DISCARD) - }, setter: function (T, h) { - var f = Do.for(T); - 1 !== f.version && (h ? T.enable(T.RASTERIZER_DISCARD) : T.disable(T.RASTERIZER_DISCARD)) - } - }, - lineWidth: { - def: 1, - getter: function (K) { - return K.lineWidth ? K.getParameter(K.LINE_WIDTH) : 1 - }, setter: function (i, W) { - i.lineWidth && i.lineWidth(W) - } - }, - color: { - clear: { - def: [0, 0, 0, 0], - getter: function (Q) { - return Q.getParameter(Q.COLOR_CLEAR_VALUE) - }, setter: function (x, l) { - x.clearColor(l[0], l[1], l[2], l[3]) - }, parse: W - }, - mask: { - def: [!0, !0, !0, !0], - getter: function (i) { - return i.getParameter(i.COLOR_WRITEMASK) - }, setter: function (r, d) { - r.colorMask(d[0], d[1], d[2], d[3]) - } - } - }, - blend: { - enabled: { - def: !1, - getter: function (q) { - return q.isEnabled(q.BLEND) - }, setter: function (g, P) { - P ? g.enable(g.BLEND) : g.disable(g.BLEND) - } - }, - color: { - def: [0, 0, 0, 0], - getter: function (x) { - return x.getParameter(x.BLEND_COLOR) - }, setter: function (X, q) { - X.blendColor(q[0], q[1], q[2], q[3]) - }, parse: W - }, - equation: { - def: [Ah.FUNC_ADD, Ah.FUNC_ADD], - getter: function (n) { - return [n.getParameter(n.BLEND_EQUATION_RGB), n.getParameter(n.BLEND_EQUATION_ALPHA)] - }, setter: function (G, d) { - G.blendEquationSeparate(d[0], d[1]) - }, parse: function (y) { - var b = y.length; - return b > 1 ? y : 1 === b ? (I[1] = I[0] = y[0], I) : (I[1] = I[0] = y, I) - } - }, - func: { - def: [Ah.ONE, Ah.ZERO, Ah.ONE, Ah.ZERO], - getter: function (T) { - return [T.getParameter(T.BLEND_SRC_RGB), T.getParameter(T.BLEND_DST_RGB), T.getParameter(T.BLEND_SRC_ALPHA), T.getParameter(T.BLEND_DST_ALPHA)] - }, setter: function (T, R) { - T.blendFuncSeparate(R[0], R[1], R[2], R[3]) - }, parse: function (P) { - var w = P.length; - return w > 3 ? P : (I[2] = I[0] = P[0], I[3] = I[1] = P[1], I) - } - } - }, - cullFace: { - enabled: { - def: !1, - getter: function (M) { - return M.isEnabled(M.CULL_FACE) - }, setter: function (Q, G) { - G ? Q.enable(Q.CULL_FACE) : Q.disable(Q.CULL_FACE) - } - }, - mode: { - def: Ah.BACK, - getter: function (M) { - return M.getParameter(M.CULL_FACE_MODE) - }, setter: function (Y, R) { - Y.cullFace(R) - } - }, - frontFace: { - def: Ah.CCW, - getter: function (i) { - return i.getParameter(i.FRONT_FACE) - }, setter: function (u, $) { - u.frontFace($) - } - } - }, - scissor: { - enabled: { - def: !1, - getter: function (S) { - return S.isEnabled(S.SCISSOR_TEST) - }, setter: function (k, t) { - t ? k.enable(k.SCISSOR_TEST) : k.disable(k.SCISSOR_TEST) - } - }, - box: { - def: [0, 0, 0 / 0, 0 / 0], - getter: function (p) { - return p.getParameter(p.SCISSOR_BOX) - }, setter: function (l, C) { - var s = C[2] !== C[2] ? l.drawingBufferWidth - C[0] : C[2], - U = C[3] !== C[3] ? l.drawingBufferHeight - C[1] : C[3]; - l.scissor(C[0], C[1], s, U) - } - } - }, - depth: { - enabled: { - def: !1, - getter: function (_) { - return _.isEnabled(_.DEPTH_TEST) - }, setter: function (U, M) { - M ? U.enable(U.DEPTH_TEST) : U.disable(U.DEPTH_TEST) - } - }, - clear: { - def: 1, - getter: function (M) { - return M.getParameter(M.DEPTH_CLEAR_VALUE) - }, setter: function (Y, c) { - Y.clearDepth(c) - } - }, - mask: { - def: !0, - getter: function (z) { - return z.getParameter(z.DEPTH_WRITEMASK) - }, setter: function (S, k) { - S.depthMask(k) - } - }, - range: { - def: [-1, 1], - getter: function (s) { - return s.getParameter(s.DEPTH_RANGE) - }, setter: function (d, Z) { - d.depthRange(Z[0], Z[1]) - } - }, - func: { - def: Ah.LESS, - getter: function (f) { - return f.getParameter(f.DEPTH_FUNC) - }, setter: function (g, J) { - g.depthFunc(J) - } - } - }, - stencil: { - enabled: { - def: !1, - getter: function (Q) { - return Q.isEnabled(Q.STENCIL_TEST) - }, setter: function (a, G) { - G ? a.enable(a.STENCIL_TEST) : a.disable(a.STENCIL_TEST) - } - }, - clear: { - def: 0, - getter: function (j) { - return j.getParameter(j.STENCIL_CLEAR_VALUE) - }, setter: function (D, r) { - D.clearStencil(r) - } - }, - frontMask: { - def: 255, - getter: function (v) { - return v.getParameter(v.STENCIL_WRITEMASK) - }, setter: function (E, i) { - E.stencilMaskSeparate(E.FRONT, i) - } - }, - frontOp: { - def: [Ah.KEEP, Ah.KEEP, Ah.KEEP], - getter: function (s) { - return [s.getParameter(s.STENCIL_FAIL), s.getParameter(s.STENCIL_PASS_DEPTH_FAIL), s.getParameter(s.STENCIL_PASS_DEPTH_PASS)] - }, setter: function (n, H) { - n.stencilOpSeparate(n.FRONT, H[0], H[1], H[2]) - } - }, - frontFunc: { - def: [Ah.ALWAYS, 0, 255], - getter: function (t) { - return [t.getParameter(t.STENCIL_FUNC), t.getParameter(t.STENCIL_REF), t.getParameter(t.STENCIL_VALUE_MASK)] - }, setter: function (u, f) { - u.stencilFuncSeparate(u.FRONT, f[0], f[1], f[2]) - } - }, - backMask: { - def: 255, - getter: function (y) { - return y.getParameter(y.STENCIL_BACK_WRITEMASK) - }, setter: function (y, P) { - y.stencilMaskSeparate(y.BACK, P) - } - }, - backOp: { - def: [Ah.KEEP, Ah.KEEP, Ah.KEEP], - getter: function (l) { - return [l.getParameter(l.STENCIL_BACK_FAIL), l.getParameter(l.STENCIL_BACK_PASS_DEPTH_FAIL), l.getParameter(l.STENCIL_BACK_PASS_DEPTH_PASS)] - }, setter: function (s, P) { - s.stencilOpSeparate(s.BACK, P[0], P[1], P[2]) - } - }, - backFunc: { - def: [Ah.ALWAYS, 0, 255], - getter: function (J) { - return [J.getParameter(J.STENCIL_BACK_FUNC), J.getParameter(J.STENCIL_BACK_REF), J.getParameter(J.STENCIL_BACK_VALUE_MASK)] - }, setter: function (B, T) { - B.stencilFuncSeparate(B.BACK, T[0], T[1], T[2]) - } - } - }, - hint: { - generateMipmap: { - def: Ah.DONT_CARE, - getter: function (X) { - return X.getParameter(X.GENERATE_MIPMAP_HINT) - }, setter: function (y, K) { - y.hint(y.GENERATE_MIPMAP_HINT, K) - } - }, - fragmentShaderDerivative: { - def: Ah.DONT_CARE, - getter: function (k) { - var q = Do.for(k); - return 1 !== q.version || q.extensions.OES_standard_derivatives ? k.getParameter(Ah.FRAGMENT_SHADER_DERIVATIVE_HINT) : Ah.DONT_CARE - }, setter: function (e, K) { - var x = Do.for(e); - return x.version > 1 || x.extensions.OES_standard_derivatives ? (e.hint(Ah.FRAGMENT_SHADER_DERIVATIVE_HINT, K), void 0) : void 0 - } - } - }, - pixelStore: { - packAlignment: s(4, Ah.PACK_ALIGNMENT, !1), - unpackAlignment: s(4, Ah.UNPACK_ALIGNMENT, !1), - unpackFlipY: s(!1, Ah.UNPACK_FLIP_Y_WEBGL, !1), - unpackPremultiplyAlpha: s(!1, Ah.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1), - unpackColorspaceConversion: s(Ah.BROWSER_DEFAULT_WEBGL, Ah.UNPACK_COLORSPACE_CONVERSION_WEBGL, !1), - packRowLength: s(0, Ah.PACK_ROW_LENGTH, !0), - packSkipPixels: s(0, Ah.PACK_SKIP_PIXELS, !0), - packSkipRows: s(0, Ah.PACK_SKIP_ROWS, !0), - unpackRowLength: s(0, Ah.UNPACK_ROW_LENGTH, !0), - unpackImageHeight: s(0, Ah.UNPACK_IMAGE_HEIGHT, !0), - unpackSkipPixels: s(0, Ah.UNPACK_SKIP_PIXELS, !0), - unpackSkipRows: s(0, Ah.UNPACK_SKIP_ROWS, !0), - unpackSkipImages: s(0, Ah.UNPACK_SKIP_IMAGES, !0) - }, - polygonOffset: { - enabled: { - def: !1, - getter: function (T) { - return T.isEnabled(T.POLYGON_OFFSET_FILL) - }, setter: function (A, j) { - j ? A.enable(A.POLYGON_OFFSET_FILL) : A.disable(A.POLYGON_OFFSET_FILL) - } - }, - value: { - def: [0, 0], - getter: function (q) { - return [q.getParameter(q.POLYGON_OFFSET_FACTOR), q.getParameter(q.POLYGON_OFFSET_UNITS)] - }, setter: function (t, i) { - t.polygonOffset(i[0], i[1]) - } - } - }, - sampleCoverage: { - enabled: { - def: !1, - getter: function (i) { - return i.isEnabled(i.SAMPLE_COVERAGE) - }, setter: function (k, B) { - B ? k.enable(k.SAMPLE_COVERAGE) : k.disable(k.SAMPLE_COVERAGE) - } - }, - alpha: { - def: !1, - getter: function (S) { - return S.isEnabled(S.SAMPLE_ALPHA_TO_COVERAGE) - }, setter: function (u, P) { - P ? u.enable(u.SAMPLE_ALPHA_TO_COVERAGE) : u.disable(u.SAMPLE_ALPHA_TO_COVERAGE) - } - }, - value: { - def: [1, !1], - getter: function (g) { - return [g.getParameter(g.SAMPLE_COVERAGE_VALUE), g.getParameter(g.SAMPLE_COVERAGE_INVERT)] - }, setter: function (B, h) { - B.sampleCoverage(h[0], h[1]) - } - } - } - }, - C = _j.create(H, function (L) { - return "def" in L - }); - r.prototype.reset = function () { - for (var R = this._struct.children, l = R.length; l--;) { - var M = R[l], - T = M.name; - M.isLeaf ? this[T] = M.desc.def : this._branches[T].reset() - } - }, r.prototype.save = function (p) { - p == Z && (p = {}); - for (var z = this._struct.children, F = z.length; F--;) { - var k = z[F], - c = k.name; - if (k.isLeaf) p[c] = A(this._record[c]); - else { - var y = p[c]; - y == Z && (p[c] = y = {}), this._branches[c].save(y) - } - } - return p - }, r.prototype.sync = function (n, b) { - for (var Q = this._struct.children, k = Q.length; k--;) { - var s = Q[k], - o = s.name; - s.isLeaf ? (b || !this._leafSync[o]) && (n ? (this._record[o] = s.desc.getter(this.gl), this._leafSync[o] = !0) : (s.desc.setter(this.gl, this._record[o]), this._leafSync[o] = !0)) : this._branches[o].sync(n, b) - } - }, r.prototype.syncLoss = function () { - for (var E = this._struct.children, P = E.length; P--;) { - var k = E[P]; - k.isLeaf ? this._leafSync[k.name] = !1 : this._branches[k.name].syncLoss() - } - }, r.prototype.apply = function (M) { - for (var P = this._struct.children, L = P.length; L--;) { - var i = P[L], - B = i.name; - B in M && (i.isLeaf ? this[B] = M[B] : this._branches[B].apply(M[B])) - } - }, r.prototype.append = function (s) { - var F = this._struct.childMap; - for (var Y in s) { - var f = F[Y]; - f && (f.isLeaf ? this[Y] = s[Y] : this._branches[Y].append(s[Y])) - } - }; - var h = K(C); - return function (f) { - var C = f._state; - return C || (f._state = C = new h(f)), C - } - }(), - Mj = function () { - function M(m, T, O, s) { - if (m) { - var g = m.length; - if (g != Z) - for (var p = 0; s > p; ++p) T[O + p] = m[p]; - else m.toArray && m.toArray(T, O) - } else - for (var p = 0; s > p; ++p) T[O + p] = 0 - } - - function g(B, L, s) { - var g = B[0]; - if (0 >= g || g > 0) return B; - var t = L * s, - a = h[t]; - if (a == Z && (h[t] = new Float32Array(t)), 0 !== L) { - M(g, a, 0, s); - for (var i = 1, O = 0; i !== L; ++i) O += s, M(B[i], a, O, s) - } - return a - } - - function t(u, S) { - u.uniform1f(this.addr, S) - } - - function k(o, P) { - o.uniform1fv(this.addr, P) - } - - function d(R, M) { - if (M.x != Z) R.uniform2f(this.addr, M.x, M.y); - else { - var X = h[2]; - X.set(M, 0), R.uniform2fv(this.addr, X) - } - } - - function V(u, U) { - u.uniform2fv(this.addr, g(U, this.size, 2)) - } - - function H(n, i) { - if (i.x != Z) n.uniform3f(this.addr, i.x, i.y, i.z); - else if (i.r != Z) n.uniform3f(this.addr, i.r, i.g, i.b); - else if (i.red != Z) n.uniform3f(this.addr, i.red, i.green, i.blue); - else { - var d = h[3]; - d.set(i, 0), n.uniform3fv(this.addr, d) - } - } - - function x(O, B) { - O.uniform3fv(this.addr, g(B, this.size, 3)) - } - - function m(L, f) { - if ("string" == typeof f && (f = ns(f)), f.x != Z) L.uniform4f(this.addr, f.x, f.y, f.z, f.w); - else if (f.r != Z) L.uniform4f(this.addr, f.r, f.g, f.b, f.a); - else if (f.red != Z) L.uniform4f(this.addr, f.red, f.green, f.blue, f.alpha); - else { - var B = h[4]; - B.set(f, 0), L.uniform4fv(this.addr, B) - } - } - - function b(j, N) { - j.uniform4fv(this.addr, g(N, this.size, 4)) - } - - function P(B, r) { - B.uniform1i(this.addr, r) - } - - function T(F, R) { - F.uniform1iv(this.addr, R) - } - - function Y(S, I) { - S.uniform2iv(this.addr, I) - } - - function K(P, b) { - P.uniform3iv(this.addr, b) - } - - function W(C, z) { - C.uniform4iv(this.addr, z) - } - - function L(z, G) { - z.uniform1i(this.addr, s[G ? 1 : 0]) - } - - function q($, i) { - var u = h[4]; - u.set(i, 0), $.uniformMatrix2fv(this.addr, !1, u) - } - - function v(A, Y) { - A.uniformMatrix2fv(this.addr, !1, g(Y, this.size, 4)) - } - - function u(S, U) { - var y = h[9]; - y.set(U, 0), S.uniformMatrix3fv(this.addr, !1, y) - } - - function f(E, Z) { - E.uniformMatrix3fv(this.addr, !1, g(Z, this.size, 9)) - } - - function p(M, g) { - var w = h[16]; - w.set(g, 0), M.uniformMatrix4fv(this.addr, !1, w) - } - - function a(D, S) { - D.uniformMatrix4fv(this.addr, !1, g(S, this.size, 16)) - } - - function e(e, f) { - e.uniform1i(this.addr, this.slots[0]), e.activeTexture(e.TEXTURE0 + this.slots[0]), e.bindTexture(e.TEXTURE_2D, f || e._emptyTexture) - } - - function A(I, W) { - I.uniform1iv(this.addr, this.slots); - for (var $ = this.slots.length; $--;) I.activeTexture(I.TEXTURE0 + this.slots[$]), I.bindTexture(I.TEXTURE_2D, W[$] || I._emptyTexture) - } - - function N(P, k) { - P.uniform1i(this.addr, this.slots[0]), P.activeTexture(P.TEXTURE0 + this.slots[0]), P.bindTexture(P.TEXTURE_CUBE_MAP, k || P._emptyCubeTexture) - } - - function $(F, r) { - F.uniform1iv(this.addr, this.slots); - for (var w = this.slots.length; w--;) F.activeTexture(F.TEXTURE0 + this.slots[w]), F.bindTexture(F.TEXTURE_CUBE_MAP, r[w] || F._emptyCubeTexture) - } - - function C(U, J, d) { - G[U] = [J, d] - } - - function z(L, A, O) { - switch (L.type) { - case 35678: - case 35680: - if ("uSampler" === O) return [0]; - if ("uBlendSampler" === O) return [1]; - for (var q = L.size, Q = new Int32Array(q), T = 0; q > T; ++T) Q[T] = A.usedTextureSlot++; - return Q - } - return Z - } - - function R(B, s, q, e, k) { - this.name = B, this.addr = s, this.size = e ? q.size : 0, this.activeInfo = q, this.setter = G[q.type][e ? 1 : 0], this.slots = z(q, k, B), bc(this) - } - - function O(G, P, H, g) { - var l = G.name, - Q = l.length; - for (X.lastIndex = 0; ;) { - var E = X.exec(l), - M = X.lastIndex, - W = E[1], - d = "]" === E[2], - S = E[3]; - if (d && (W = 0 | W), S === Z || "[" === S && M + 2 === Q) { - H[W] = new R(W, P, G, S !== Z, g); - break - } - var O = H[W]; - O == Z && (H[W] = O = {}), H = O - } - } - - function E(j, E, A) { - this.gl = E, this._program = A, this._leaves = {}, this._branches = {}, this._struct = j - } - - function D(u) { - function i(m, D) { - E.call(this, u, m, D); - for (var r = T.length; r--;) { - var n = T[r]; - this._branches[n._name] = new n._type(m, D) - } - } - - function Z(F, z) { - var S = F.name; - if (F.isLeaf) { - var r = y("d.setter(this.gl, v);", ["v"], ["d"], [F.desc]); - o.defineProperty(z, S, { - configurable: !1, - enumerable: !0, - get: function () { - return r - }, set: r - }) - } else T.push({ - _name: S, - _type: D(F) - }), o.defineProperty(z, S, { - configurable: !1, - enumerable: !0, - get: function () { - return this._branches[S] - }, set: function (J) { - this._branches[S].apply(J) - } - }) - } - var T = []; - return l(i, E), u.forEach(Z, i.prototype), i - } - - function c(W, N) { - for (var M = W.getProgramParameter(N, W.ACTIVE_UNIFORMS), U = {}, Z = { - usedTextureSlot: 2 - }; M--;) { - var P = W.getActiveUniform(N, M), - e = P.name, - J = W.getUniformLocation(N, e); - O(P, J, U, Z) - } - var h = _j.create(U, function (Y) { - return "addr" in Y - }), - p = D(h); - return o.defineProperty(p.prototype, "textureCount", { - configurable: !1, - enumerable: !1, - writable: !1, - value: Z.usedTextureSlot - }), new p(W, N) - } - var h = []; - if ("function" == typeof Float32Array) - for (var S = 1; 17 > S; ++S) h[S] = new Float32Array(S); - var s = new Int32Array([0, 1]), - G = []; - C(Ah.FLOAT, t, k), C(Ah.FLOAT_VEC2, d, V), C(Ah.FLOAT_VEC3, H, x), C(Ah.FLOAT_VEC4, m, b), C(Ah.INT, P, T), C(Ah.INT_VEC2, Y, Y), C(Ah.INT_VEC3, K, K), C(Ah.INT_VEC4, W, W), C(Ah.BOOL, L, T), C(Ah.BOOL_VEC2, Y, Y), C(Ah.BOOL_VEC3, K, K), C(Ah.BOOL_VEC4, W, W), C(Ah.FLOAT_MAT2, q, v), C(Ah.FLOAT_MAT3, u, f), C(Ah.FLOAT_MAT4, p, a), C(Ah.SAMPLER_2D, e, A), C(Ah.SAMPLER_CUBE, N, $); - var X = /([\w\d_]+)(\])?(\[|\.)?/g; - return E.prototype.apply = function (V) { - for (var d = this._struct.children, D = d.length; D--;) { - var l = d[D], - t = l.name; - t in V && (l.isLeaf ? this[t] = V[t] : this._branches[t].apply(V[t])) - } - }, E.prototype.append = function (X) { - var e = this._struct.childMap; - for (var $ in X) { - var y = e[$]; - y && (y.isLeaf ? this[$] = X[$] : this._branches[$].append(X[$])) - } - }, - function (t, T) { - var o = T._uniforms; - return o || (T._uniforms = o = c(t, T)), o - } - }(), - Nb = function () { - function t(n, a, v) { - a.vertexAttrib1f(n.addr, v) - } - - function k(A, l, G) { - if (G.x != Z) l.vertexAttrib2f(A.addr, G.x, G.y); - else { - var p = b[2]; - p.set(G, 0), l.vertexAttrib2fv(A.addr, p) - } - } - - function p(M, n, V) { - if (V.x != Z) n.vertexAttrib3f(M.addr, V.x, V.y, V.z); - else if (V.r != Z) n.vertexAttrib3f(M.addr, V.r, V.g, V.b); - else if (V.red != Z) n.vertexAttrib3f(M.addr, V.red, V.green, V.blue); - else { - var x = b[3]; - x.set(V, 0), n.vertexAttrib3fv(M.addr, x) - } - } - - function S(Q, g, M) { - if ("string" == typeof M && (M = ns(M)), M.x != Z) g.vertexAttrib4f(Q.addr, M.x, M.y, M.z, M.w); - else if (M.r != Z) g.vertexAttrib4f(Q.addr, M.r, M.g, M.b, M.a); - else if (M.red != Z) g.vertexAttrib4f(Q.addr, M.red, M.green, M.blue, M.alpha); - else { - var S = b[4]; - S.set(M, 0), g.vertexAttrib4fv(Q.addr, S) - } - } - - function Y(m, O, A) { - A = A.el || A; - for (var K = 0, x = 0; 2 > K; ++K) O.vertexAttrib2f(m.addr, A[x++], A[x++]) - } - - function d(m, G, n) { - n = n.el || n; - for (var O = 0, A = 0; 3 > O; ++O) G.vertexAttrib3f(m.addr, n[A++], n[A++], n[A++]) - } - - function x(r, l, q) { - q = q.el || q; - for (var i = 0, K = 0; 4 > i; ++i) l.vertexAttrib4f(r.addr, q[K++], q[K++], q[K++], q[K++]) - } - - function K(b, K, E, h, $, S, Z) { - K.bindBuffer(K.ARRAY_BUFFER, E), K.vertexAttribPointer(b.addr, 1, h || K.FLOAT, !!$, S || 0, Z || 0), K.bindBuffer(K.ARRAY_BUFFER, null) - } - - function P(t, J, n, O, f, Z, C) { - J.bindBuffer(J.ARRAY_BUFFER, n), J.vertexAttribPointer(t.addr, 2, O || J.FLOAT, !!f, Z || 0, C || 0), J.bindBuffer(J.ARRAY_BUFFER, null) - } - - function u(Q, g, B, Y, $, q, w) { - g.bindBuffer(g.ARRAY_BUFFER, B), g.vertexAttribPointer(Q.addr, 3, Y || g.FLOAT, !!$, q || 0, w || 0), g.bindBuffer(g.ARRAY_BUFFER, null) - } - - function B(K, h, d, J, Y, n, w) { - h.bindBuffer(h.ARRAY_BUFFER, d), h.vertexAttribPointer(K.addr, 4, J || h.FLOAT, !!Y, n || 0, w || 0), h.bindBuffer(h.ARRAY_BUFFER, null) - } - - function g(I, w, e, i, p, R, h) { - var R = R || 4, - h = h || 0; - w.bindBuffer(w.ARRAY_BUFFER, e), w.vertexAttribPointer(I.addr, 2, i || w.FLOAT, !!p, R, h), w.vertexAttribPointer(I.addr + 1, 2, i || w.FLOAT, !!p, R, h + 2), w.bindBuffer(w.ARRAY_BUFFER, null) - } - - function $(_, k, J, g, c, B, h) { - var B = B || 9, - h = h || 0; - k.bindBuffer(k.ARRAY_BUFFER, J), k.vertexAttribPointer(_.addr, 3, g || k.FLOAT, !!c, B, h), k.vertexAttribPointer(_.addr + 1, 3, g || k.FLOAT, !!c, B, h + 3), k.vertexAttribPointer(_.addr + 2, 3, g || k.FLOAT, !!c, B, h + 6), k.bindBuffer(k.ARRAY_BUFFER, null) - } - - function z(F, z, J, T, q, n, l) { - var n = n || 16, - l = l || 0; - z.bindBuffer(z.ARRAY_BUFFER, J), z.vertexAttribPointer(F.addr, 4, T || z.FLOAT, !!q, n, l), z.vertexAttribPointer(F.addr + 1, 4, T || z.FLOAT, !!q, n, l + 4), z.vertexAttribPointer(F.addr + 2, 4, T || z.FLOAT, !!q, n, l + 8), z.vertexAttribPointer(F.addr + 3, 4, T || z.FLOAT, !!q, n, l + 12), z.bindBuffer(z.ARRAY_BUFFER, null) - } - - function W(i, m, C) { - M[i] = function (I, B, s, c, l, W) { - this.addr == Z || this.addr < 0 || (B == Z || B === !1 ? I.disableVertexAttribArray(this.addr) : ql(B) === R ? (I.enableVertexAttribArray(this.addr), C(this, I, B, s, c, l, W)) : (I.disableVertexAttribArray(this.addr), m(this, I, B))) - } - } - - function v(c, $, g) { - this.name = c, this.addr = $, this.activeInfo = g, this.setter = M[g.type], bc(this) - } - - function L(l, L, f) { - this.gl = L, this.program = f, this._branches = {}, this._struct = l - } - - function E(k) { - function I(d, V) { - L.call(this, k, d, V); - for (var z = O.length; z--;) { - var t = O[z]; - this._branches[t._name] = new t._type(d, V) - } - } - - function T(n, h) { - var G = n.name; - if (n.isLeaf) { - var Q = y("d.setter(this.gl, v);", ["v"], ["d"], [n.desc]); - o.defineProperty(h, G, { - configurable: !1, - enumerable: !0, - get: function () { - return Q - }, set: Q - }) - } else O.push({ - _name: G, - _type: E(n) - }), o.defineProperty(h, G, { - configurable: !1, - enumerable: !0, - get: function () { - return this._branches[G] - }, set: function ($) { - this._branches[G].apply($) - } - }) - } - var O = []; - return l(I, L), k.forEach(T, I.prototype), I - } - - function h(p, F) { - for (var r = p.getProgramParameter(F, p.ACTIVE_ATTRIBUTES), g = {}; r--;) { - var h = p.getActiveAttrib(F, r), - B = h.name, - q = p.getAttribLocation(F, B); - g[B] = new v(B, q, h) - } - var o = _j.create(g, function (X) { - return "addr" in X - }), - N = E(o); - return new N(p, F) - } - var b = []; - if (Float32Array) - for (var X = 1; 17 > X; ++X) b[X] = new Float32Array(X); - var M = [], - R = "undefined" != typeof WebGLBuffer && WebGLBuffer.prototype; - return W(Ah.FLOAT, t, K), W(Ah.FLOAT_VEC2, k, P), W(Ah.FLOAT_VEC3, p, u), W(Ah.FLOAT_VEC4, S, B), W(Ah.FLOAT_MAT2, Y, g), W(Ah.FLOAT_MAT3, d, $), W(Ah.FLOAT_MAT4, x, z), L.prototype.disable = function () { - for (var $ = this._struct.children, F = $.length; F--;) { - var T = $[F], - m = T.name; - T.isLeaf ? this.gl.disableVertexAttribArray(T.desc.addr) : this._branches[m].disable() - } - }, L.prototype.apply = function (b) { - for (var l = this._struct.children, B = l.length; B--;) { - var Z = l[B], - t = Z.name; - t in b && (Z.isLeaf ? this[t] = b[t] : this._branches[t].apply(b[t])) - } - }, L.prototype.append = function (d) { - var O = this._struct.childMap; - for (var X in d) { - var G = O[X]; - G && (G.isLeaf ? this[X] = d[X] : this._branches[X].append(d[X])) - } - }, - function (l, u) { - var y = u._attribs; - return y || (u._attribs = y = h(l, u)), y - } - }(), - ts = function (k) { - var w = this; - o.defineProperties(this, { - gl: { - configurable: !1, - enumerable: !1, - value: k, - writable: !1 - }, - glState: { - configurable: !1, - enumerable: !1, - value: vd(k), - writable: !1 - } - }), w._currProgram = Z, w._currUniforms = Z, w._currAttribs = Z, w._sync = !0 - }; - o.defineProperties(ts.prototype, { - program: { - configurable: !1, - enumerable: !1, - get: function () { - return this._currProgram - }, set: function (g) { - var S = this; - S._sync && g === S._currProgram || (S.gl.useProgram(g), S._currProgram = g, S._currUniforms = Mj(S.gl, g), S._currAttribs = Nb(S.gl, g), S._sync = !0) - } - }, - uniforms: { - configurable: !1, - enumerable: !1, - get: function () { - var I = this; - return I._currProgram && !I._sync && (I.gl.useProgram(I._currProgram), I._sync = !0), I._currUniforms - }, set: function ($) { - var Q = this; - Q._currUniforms && (Q._currProgram && !Q._sync && (Q.gl.useProgram(Q._currProgram), this._sync = !0), Q._currUniforms.apply($)) - } - }, - attribs: { - configurable: !1, - enumerable: !1, - get: function () { - var d = this; - return d._currProgram && !d._sync && (d.gl.useProgram(d._currProgram), d._sync = !0), d._currAttribs - }, set: function (X) { - var C = this; - C._currUniforms && (C._currProgram && !C._sync && (C.gl.useProgram(C._currProgram), this._sync = !0), C._currAttribs.apply(X)) - } - } - }), ts.prototype.useProgram = function (v) { - var Z = this; - Z._sync && v === Z._currProgram || (Z.gl.useProgram(v), Z._currProgram = v, Z._currUniforms = Mj(Z.gl, v), Z._currAttribs = Nb(Z.gl, v), Z._sync = !0) - }, ts.prototype.directState = function () { - return this.glState - }, ts.prototype.directUniforms = function () { - return this._currUniforms - }, ts.prototype.directAttribs = function () { - return this._currAttribs - }, ts.prototype.syncLoss = function () { - this._sync = !1, this.glState.syncLoss() - }, ts.for = function (e) { - var s = e._renderState; - return s || (e._renderState = s = new ts(e)), s - }; - var Tf = "directional", - zg = "point", - Bo = "spot", - ep = "light.color", - Gc = {}, - Qf = function (O, R) { - dk(R) && Gq.test(R) ? Im(O, R) : xl(R) && R.modelType ? Ti(O, R) : R === Z ? delete Zm[O] : Zm[O] = R - }, - Wi = function (Y) { - return Y - }, - vf = function (p) { - p = u.convertShape3dModelName(p); - var N; - if (xl(p)) { - if (p.modelType) { - if (p.uuid) { - if (N = Zm[p.uuid]) return N - } else p.uuid = O.Math.generateUUID(); - return N === Z && (Wb && Wb[p.uuid] || Ti(p.uuid, p)), Z - } - return p - } - return N = Zm[p], p && N === Z && Gq.test(p) && (Wb && Wb[p] || Im(p, p)), N - }, - So = function (E, X) { - E.frameStack ? E.frameStack.push(X) : E.frameStack = [X], E.bindFramebuffer(E.FRAMEBUFFER, X) - }, - Ar = function (l) { - var y = l.frameStack; - if (y) { - if (y.pop(), y.length) return l.bindFramebuffer(l.FRAMEBUFFER, y[y.length - 1]), void 0; - l.frameStack = null - } - l.bindFramebuffer(l.FRAMEBUFFER, null) - }; - Uh(u, { - graph3dViewAttributes: F, - graph3dViewFirstPersonMode: !1, - graph3dViewMouseRoamable: !0, - graph3dViewMoveStep: 15, - graph3dViewRotateStep: W / 60, - graph3dViewBlockSelectable: !0, - graph3dViewEditHelperDisabled: !1, - graph3dViewPannable: !0, - graph3dViewRotatable: !0, - graph3dViewWalkable: !0, - graph3dViewResettable: !0, - graph3dViewZoomable: !0, - graph3dViewRectSelectable: !0, - graph3dViewRectSelectBackground: Vh, - graph3dViewGridVisible: !1, - graph3dViewGridSize: 50, - graph3dViewGridGap: 50, - graph3dViewGridColor: [.4, .75, .85, 1], - graph3dViewRotateMaxPhi: W, - graph3dViewRotateMinPhi: 0, - graph3dViewShadowQuality: "high", - graph3dViewShadowIntensity: .3, - graph3dViewShadowBias: -.005, - graph3dViewShadowRadius: .1, - graph3dViewShadowType: "hard", - graph3dViewShadowDegreeX: 30, - graph3dViewShadowDegreeZ: -10, - graph3dViewOriginAxisVisible: !1, - graph3dViewCenterAxisVisible: !1, - graph3dViewAxisXColor: [1, 0, 0, 1], - graph3dViewAxisYColor: [0, 1, 0, 1], - graph3dViewAxisZColor: [0, 0, 1, 1], - graph3dViewEditSizeColor: [1, 1, 0, 1], - graph3dViewOrtho: !1, - graph3dViewOrthoWidth: 2e3, - graph3dViewFovy: W / 4, - graph3dViewNear: 10, - graph3dViewFar: 1e4, - graph3dViewEye: [0, 300, 1e3], - graph3dViewCenter: [0, 0, 0], - graph3dViewUp: [0, 1, -1e-7], - graph3dViewHeadlightRange: 0, - graph3dViewHeadlightColor: [1, 1, 1, 1], - graph3dViewHeadlightIntensity: 1, - graph3dViewHeadlightDisabled: !1, - graph3dViewHeadlightAmbientIntensity: .7, - graph3dViewFogDisabled: !0, - graph3dViewFogMode: "linear", - graph3dViewFogDensity: 5e-4, - graph3dViewFogColor: "white", - graph3dViewFogNear: 1, - graph3dViewFogFar: 2e3, - graph3dViewPickerResolution: .5, - graph3dViewDashDisabled: !0, - graph3dViewBatchBlendDisabled: !0, - graph3dViewBatchBrightnessDisabled: !0, - graph3dViewBatchColorDisabled: !1, - graph3dMaxVectorCacheTime: 50, - graph3dEnvmapCapabilityRequire: 8, - setShape3dModel: Qf, - getShape3dModel: vf, - convertShape3dModelName: Wi, - getShape3dModelMap: function () { - return Zm - }, getCachedShape3dModelMap: function () { - return Mq - }, createMatrix: function (r, J) { - ip(r) || (r = [r]); - for (var q = r.length - 1; q >= 0; q--) { - var e = r[q]; - J = Jn(e.mat, e.s3, e.r3, e.rotationMode, e.t3, J) - } - return J - }, transformVec: function (x, h) { - return Td(x, h) - }, glBindFrame: So, - glUnbindFrame: Ar, - createBoxModel: function () { - return { - vs: Ef, - ns: mn, - uv: mi, - is: Lq - } - }, createRoundRectModel: function (S, W) { - return Gm.roundRect(S, W) - }, createStarModel: function (G, Z) { - return Gm.star(G, Z) - }, createRectModel: function (y, F) { - return Gm.rect(y, F) - }, createTriangleModel: function (f, t) { - return Gm.triangle(f, t) - }, createRightTriangleModel: function (v, e) { - return Gm.rightTriangle(v, e) - }, createParallelogramModel: function (l, e) { - return Gm.parallelogram(l, e) - }, createTrapezoidModel: function (s, J) { - return Gm.trapezoid(s, J) - }, createSmoothSphereModel: function (C, S, L, W, N, E, B) { - return ig(new To(C, S, L, W, N, E, B)) - }, createSphereModel: function (P, Y, b, H, c, p, y) { - return P ? Mi(P, Y, b, H, c, p, y) : u.createSmoothSphereModel() - }, createSmoothConeModel: function ($, h, o, T, d) { - return ce($, h, o, T, d) - }, createConeModel: function (a, V, I, T, O, B) { - return a ? po(a, V, I, T, O, B) : ce(B) - }, createSmoothCylinderModel: function (Y, V, e, G, Z, M, Q, J) { - return ig(new rc(Y, V, e, G, Z, M, Q, J)) - }, createCylinderModel: function (x, T, w, j, H, S, J, n) { - return x ? Qh(x, T, w, j, H, S, J, n) : mj(S, J) - }, createSmoothTorusModel: function (I, i, p, J, N, H) { - return ig(new Kg(I, i, p, J, N, H)) - }, createTorusModel: function (Q, C, M, X, x, k, P, s) { - return Q ? Tc(Q, C, M, X, x, k, P, s) : Or(k, P) - }, createExtrusionModel: function (y, c, p, C, z, i, K, M) { - return zk(y, c, p, C, z, i, K, M) - }, createSmoothRingModel: function (S, P, f, p, h, U) { - for (var $ = [], n = 0; n < S.length - 1; n += 2) $.push({ - x: S[n], - y: S[n + 1] - }); - for (S = Yo($, P, f)[0], $ = [], n = 0; n < S.length; n++) { - var c = S[n]; - $.push(new pe(c.x, 0, c.y)) - } - return ig(new Zd($, U, p, h)) - }, createTextGeometry: function (q, E) { - return ig(new qf(q, E)) - }, loadFontFace: function (X, T) { - u.xhrLoad(X, function (A) { - if (!A) return T(); - var L; - try { - L = JSON.parse(A) - } catch (P) { - L = JSON.parse(A.substring(65, A.length - 2)) - } - Pk.loadFace(L), T && T(L.familyName.toLowerCase()) - }, T ? null : { - sync: !0 - }) - }, createRingModel: function (m, v, C, U, w, Q, h, c, j, y) { - for (var x = [], J = 0; J < m.length - 1; J += 2) x.push({ - x: m[J], - y: m[J + 1] - }); - Q = Q || u.shapeSide, h = h || 0, c = c || Q; - var d, p, K, e, S, t, T, P, g, M, J, N, O, b, X, I, l, i, W = [], - f = [], - $ = j ? [] : F, - A = j ? [] : F, - z = y ? [] : F, - Z = y ? [] : F, - _ = U ? [] : F, - B = U ? [] : F, - E = w ? [] : F, - o = w ? [] : F, - m = Yo(x, v, C), - V = tj(m), - Y = 0, - r = 2 * Math.PI / Q; - return m.forEach(function (u) { - if (K = u.length, K > 1) { - if (e = u[0], U) - for (t = e.x, P = e.y, J = h; c > J; J++) N = J + 1, O = J * r, b = N * r, X = k(O), I = n(O), l = k(b), i = n(b), _.push(X * t, P, -I * t, l * t, P, -i * t, 0, P, 0), B.push(.5 - .5 * X, .5 - .5 * I, .5 - .5 * l, .5 - .5 * i, .5, .5); - for (M = 0; K > M; M++) { - for (S = u[M], t = e.x, T = S.x, P = e.y, g = S.y, d = Y / V, Y += En(e, S), p = Y / V, J = h; c > J; J++) N = J + 1, O = J * r, b = N * r, X = k(O), I = n(O), l = k(b), i = n(b), W.push(X * T, g, -I * T, l * T, g, -i * T, X * t, P, -I * t, l * T, g, -i * T, l * t, P, -i * t, X * t, P, -I * t), f.push(J / Q, p, N / Q, p, J / Q, d, N / Q, p, N / Q, d, J / Q, d), j && J === h && ($.push(0, P, 0, 0, g, 0, X * T, g, -I * T, X * T, g, -I * T, X * t, P, -I * t, 0, P, 0), A.push(0, .5 - P, 0, .5 - g, 2 * T, .5 - g, 2 * T, .5 - g, 2 * t, .5 - P, 0, .5 - P)), y && N === c && (z.push(0, P, 0, l * T, g, -i * T, 0, g, 0, l * T, g, -i * T, 0, P, 0, l * t, P, -i * t), Z.push(1, .5 - P, 1 - 2 * T, .5 - g, 1, .5 - g, 1 - 2 * T, .5 - g, 1, .5 - P, 1 - 2 * t, .5 - P)); - e = S - } - if (w) - for (t = e.x, P = e.y, J = h; c > J; J++) N = J + 1, O = J * r, b = N * r, X = k(O), I = n(O), l = k(b), i = n(b), E.push(l * t, P, -i * t, X * t, P, -I * t, 0, P, 0), o.push(.5 - .5 * l, .5 + .5 * i, .5 - .5 * X, .5 + .5 * I, .5, .5) - } - }), { - vs: W, - uv: f, - bottom_vs: E, - bottom_uv: o, - top_vs: _, - top_uv: B, - from_vs: $, - from_uv: A, - to_vs: z, - to_uv: Z - } - } - }, !0), Uh(z, { - "3d.move.mode": Z, - "3d.selectable": !0, - "3d.visible": !0, - "3d.movable": !0, - "3d.editable": !0, - "3d.clip.direction": null, - "3d.clip.percentage": 1, - "3d.reflectable": !0, - "shape.border.gradient.color": Z, - "edge.gradient.color": Z, - "edge.source.t3": Z, - "edge.target.t3": Z, - "light.type": zg, - "light.center": [0, 0, 0], - "light.color": [1, 1, 1, 1], - "light.disabled": !1, - "light.angle": W / 4, - "light.range": 0, - "light.exponent": 1, - "light.intensity": 1, - "wf.visible": !1, - "wf.width": 1, - "wf.color": Bc, - "wf.short": !1, - "wf.mat": Z, - "wf.geometry": !1, - "wf.loadQuadWireframe": !1, - "wf.combineTriangle": !0, - batch: Z, - "transparent.mask": !1, - brightness: Z, - "select.brightness": .7, - "repeat.uv.length": Z, - "shadow.cast": !0, - "shadow.receive": !0, - bloom: !1, - envmap: 0, - renderTextureSamples: 4, - alphaTest: .4, - autorotate: !1, - fixSizeOnScreen: !1, - "texture.cache": !1, - "hide.overlapping.group": Z, - "vector.dynamic": !1, - "vector.dynamic.maxsize": 2048, - "texture.scale": 1, - "geometry.cache": !1, - "highlight.mode": !1, - "highlight.visible": !0, - "highlight.width": .8, - "highlight.color": "rgba(190, 210, 250, 1)", - "color.empty": [0, 0, 0, 0], - "label.face": wg, - "label.t3": Z, - "label.r3": Z, - "label.texture.scale": 2, - "label.rotationMode": Vn, - "label.light": !1, - "label.blend": Z, - "label.reverse.flip": !1, - "label.reverse.color": vc, - "label.reverse.cull": !1, - "label.transparent": !1, - "label.autorotate": !1, - "label2.face": wg, - "label2.t3": Z, - "label2.r3": Z, - "label2.texture.scale": 2, - "label2.rotationMode": Vn, - "label2.light": !1, - "label2.blend": Z, - "label2.reverse.flip": !1, - "label2.reverse.color": vc, - "label2.reverse.cull": !1, - "label2.transparent": !1, - "label2.autorotate": !1, - "note.face": wg, - "note.t3": Z, - "note.r3": Z, - "note.texture.scale": 2, - "note.rotationMode": Vn, - "note.light": !1, - "note.blend": Z, - "note.reverse.flip": !1, - "note.reverse.color": vc, - "note.reverse.cull": !1, - "note.transparent": !1, - "note.autorotate": !1, - "note2.face": wg, - "note2.t3": Z, - "note2.r3": Z, - "note2.texture.scale": 2, - "note2.rotationMode": Vn, - "note2.light": !1, - "note2.blend": Z, - "note2.reverse.flip": !1, - "note2.reverse.color": vc, - "note2.reverse.cull": !1, - "note2.transparent": !1, - "note2.autorotate": !1, - shape3d: Z, - "shape3d.color": Ur, - "shape3d.top.color": Z, - "shape3d.bottom.color": Z, - "shape3d.from.color": Z, - "shape3d.to.color": Z, - "shape3d.image": Z, - "shape3d.top.image": Z, - "shape3d.bottom.image": Z, - "shape3d.from.image": Z, - "shape3d.to.image": Z, - "shape3d.light": !0, - "shape3d.side": 0, - "shape3d.side.from": Z, - "shape3d.side.to": Z, - "shape3d.smooth": Z, - "shape3d.visible": !0, - "shape3d.from.visible": !0, - "shape3d.to.visible": !0, - "shape3d.top.visible": !0, - "shape3d.bottom.visible": !0, - "shape3d.torus.radius": .17, - "shape3d.resolution": 0, - "shape3d.blend": Z, - "shape3d.opacity": Z, - "shape3d.reverse.flip": !1, - "shape3d.reverse.color": vc, - "shape3d.reverse.cull": !1, - "shape3d.transparent": !1, - "shape3d.uv.offset": Z, - "shape3d.uv.scale": Z, - "shape3d.top.uv.offset": Z, - "shape3d.top.uv.scale": Z, - "shape3d.bottom.uv.offset": Z, - "shape3d.bottom.uv.scale": Z, - "shape3d.from.uv.offset": Z, - "shape3d.from.uv.scale": Z, - "shape3d.to.uv.offset": Z, - "shape3d.to.uv.scale": Z, - "shape3d.top.cap": Z, - "shape3d.bottom.cap": Z, - "shape3d.start.angle": 0, - "shape3d.sweep.angle": $, - "shape3d.point.epsilon": 1e-6, - "shape3d.discard.selectable": !0, - "shape3d.top.discard.selectable": !0, - "shape3d.bottom.discard.selectable": !0, - "shape3d.from.discard.selectable": !0, - "shape3d.to.discard.selectable": !0, - "shape3d.scaleable": !0, - "shape3d.reflector": !1, - "shape3d.reflector.color": "rgb(128,128,128)", - "shape3d.reflector.blur": 0, - "shape3d.reflector.blur.ratio": 1, - "shape3d.reflector.background": null, - "shape3d.reflector.clip": .003, - "texture.mipmap.max": Z, - "texture.filter": Z, - "texture.filter.min": Z, - "texture.filter.mag": Z, - "texture.wrap": Z, - "points.image": Z, - "points.color": "white", - "points.transparent": !1, - "points.size": 20, - "points.opacity": 1, - "all.light": !0, - "all.visible": !0, - "all.color": Ur, - "all.image": Z, - "all.blend": Z, - "all.opacity": Z, - "all.reverse.flip": !1, - "all.reverse.color": vc, - "all.reverse.cull": !1, - "all.transparent": !1, - "all.uv": Z, - "all.uv.offset": Z, - "all.uv.scale": Z, - "all.discard.selectable": !0, - mat: Z, - "left.mat": Z, - "right.mat": Z, - "top.mat": Z, - "bottom.mat": Z, - "front.mat": Z, - "back.mat": Z, - "edge.source.anchor.elevation": Z, - "edge.target.anchor.elevation": Z - }, !0); - var Gi, dp = !1, - zf = [0, 0, 0, 0], - Kc = function (E) { - return E instanceof lf - }, - bk = function (R) { - return [R.x, R.e || 0, R.y] - }, - Tr = function (Q, f, G) { - for (var f = ns(f || 0), E = f[0], a = f[1], r = f[2]; G--;) Q.push(E, a, r) - }, - Wo = function (T, z, y) { - for (var z = ns(z || 0), S = z[0], $ = z[1], E = z[2], t = z[3]; y--;) T.push(S, $, E, t) - }, - yp = function (F, a, W) { - if (a) - for (var H, N, d, _ = a[0], f = a[1], g = a[2], O = a[4], T = a[5], e = a[6], G = a[8], S = a[9], r = a[10], q = a[12], l = a[13], Y = a[14], x = W.length, w = 0, w = 0; x > w; w += 3) H = W[w], N = W[w + 1], d = W[w + 2], F.push(_ * H + O * N + G * d + q, f * H + T * N + S * d + l, g * H + e * N + r * d + Y); - else gc(F, W) - }, - hh = function (F, W) { - var r = W.s("light.intensity"), - m = ns(W.s(ep)), - t = m[0], - k = m[1], - v = m[2]; - 1 !== r && (t *= r, k *= r, v *= r), F.push(t, k, v, W.s("light.disabled") ? 1 : 0) - }, - nc = function (L, o) { - var U = ts.for(o), - $ = U.directUniforms(); - $.uHeadlightRange = L._headlightRange, $.uHeadlightAmbientIntensity = L._headlightAmbientIntensity; - var W = L._headlightIntensity, - j = ns(L._headlightColor); - 1 !== W && (j = [j[0] * W, j[1] * W, j[2] * W]), $.uHeadlightColor = [j[0], j[1], j[2], L._headlightDisabled ? 1 : 0]; - var P = L._59O, - v = L._spots, - F = L._dirs; - if (P.length) { - var E = [], - N = [], - M = []; - P.forEach(function (t) { - hh(E, t), gc(N, L._transformPointToViewSpace(t.p3())), M.push(t.s("light.range")) - }), $.uPointColor = E, $.uPointRange = M, $.uPointPosition = N - } - if (v.length) { - var I = [], - n = [], - b = [], - c = [], - Q = [], - Z = []; - v.forEach(function (F) { - hh(I, F), gc(n, L._transformPointToViewSpace(F.p3())), gc(Q, L._transformDirectionToViewSpace(F.p3(), F.s("light.center"))), b.push(F.s("light.range")), c.push(k(F.s("light.angle") / 2)), Z.push(F.s("light.exponent")) - }), $.uSpotColor = I, $.uSpotRange = b, $.uSpotAngle = c, $.uSpotExponent = Z, $.uSpotPosition = n, $.uSpotDirection = Q - } - if (F.length) { - var H = [], - O = []; - F.forEach(function (K) { - hh(H, K), gc(O, L._transformDirectionToViewSpace(K.p3())) - }), $.uDirColor = H, $.uDirDirection = O - } - }, - vg = function (s, N) { - return Math.max(s.getRotateMinPhi() + Wp, Math.min(s.getRotateMaxPhi() - Wp, N)) - }, - Hj = function () { - return .05 + m() / 2 - }, - cc = function (n, P, S, h) { - var C, A = n.getEye(); - return n.isOrtho() ? (C = fn(n.getCenter(), A), C[0] += h[0], C[1] += h[1], C[2] += h[2]) : C = A, hf(P, S, h, C) - }, - hf = function (x, j, p, S) { - var w = zc(x, j), - t = fn(S, p, !0), - P = zc(t, j); - if (X(P) < Wp) return F; - var b = (w - zc(p, j)) / P; - return [p[0] + t[0] * b, p[1] + t[1] * b, p[2] + t[2] * b] - }, - $l = function (S, p) { - return { - x: 2 * S.x - p.x, - y: 2 * S.y - p.y - } - }, - pc = function (S, U, O, u) { - var X, G; - if (!S) return X = D(U.y - O.y, O.x - U.x), { - x: U.x + u * n(X), - y: U.y + u * k(X) - }; - if (!O) return X = D(S.y - U.y, U.x - S.x), { - x: U.x + u * n(X), - y: U.y + u * k(X) - }; - var L = fn([S.x, S.y, 0], [U.x, U.y, 0], !0), - b = fn([O.x, O.y, 0], [U.x, U.y, 0], !0), - H = -(L[0] + b[0]) / 2, - V = -(L[1] + b[1]) / 2, - N = w(H * H + V * V); - if (Wp > N) return X = D(S.y - U.y, U.x - S.x), { - x: U.x + u * n(X), - y: U.y + u * k(X) - }; - var g = S.x - U.x, - T = S.y - U.y, - x = O.x - U.x, - I = O.y - U.y, - f = w(g * g + T * T), - i = w(x * x + I * I); - X = c(zc(L, b)) / 2, G = L[1] * b[0] - L[0] * b[1] > 0 ? -1 : 1, H /= N, V /= N; - var $ = u / n(X), - l = q(f, i) / k(X); - N = Math.min($, l); - var F = { - x: U.x + G * N * H, - y: U.y + G * N * V - }; - return O.b && $ > i / k(X) && (F.adjust = !0), F - }, - ss = function (p) { - var O = p[1], - $ = p[2], - W = p[3], - q = p[6], - Y = p[7], - M = p[11]; - p[1] = p[4], p[2] = p[8], p[3] = p[12], p[4] = O, p[6] = p[9], p[7] = p[13], p[8] = $, p[9] = q, p[11] = p[14], p[12] = W, p[13] = Y, p[14] = M - }, - Od = function (G) { - var c = G[0], - R = G[1], - Z = G[2], - L = G[3], - S = G[4], - $ = G[5], - X = G[6], - q = G[7], - K = G[8], - u = G[9], - U = G[10], - P = G[11], - k = G[12], - d = G[13], - Q = G[14], - y = G[15], - V = c * $ - R * S, - o = c * X - Z * S, - m = c * q - L * S, - j = R * X - Z * $, - T = R * q - L * $, - h = Z * q - L * X, - E = K * d - u * k, - Y = K * Q - U * k, - t = K * y - P * k, - s = u * Q - U * d, - B = u * y - P * d, - p = U * y - P * Q, - _ = V * p - o * B + m * s + j * t - T * Y + h * E; - return _ ? (_ = 1 / _, G[0] = ($ * p - X * B + q * s) * _, G[1] = (Z * B - R * p - L * s) * _, G[2] = (d * h - Q * T + y * j) * _, G[3] = (U * T - u * h - P * j) * _, G[4] = (X * t - S * p - q * Y) * _, G[5] = (c * p - Z * t + L * Y) * _, G[6] = (Q * m - k * h - y * o) * _, G[7] = (K * h - U * m + P * o) * _, G[8] = (S * B - $ * t + q * E) * _, G[9] = (R * t - c * B - L * E) * _, G[10] = (k * T - d * m + y * V) * _, G[11] = (u * m - K * T - P * V) * _, G[12] = ($ * Y - S * s - X * E) * _, G[13] = (c * s - R * Y + Z * E) * _, G[14] = (d * o - k * j - Q * V) * _, G[15] = (K * j - u * o + U * V) * _, void 0) : F - }, - bo = function (u, Z) { - if (Z) { - var o = Z[0], - z = Z[1], - s = Z[2]; - u[12] = u[0] * o + u[4] * z + u[8] * s + u[12], u[13] = u[1] * o + u[5] * z + u[9] * s + u[13], u[14] = u[2] * o + u[6] * z + u[10] * s + u[14], u[15] = u[3] * o + u[7] * z + u[11] * s + u[15] - } - }, - Bd = function (A, _) { - if (_) { - var o = _[0], - z = _[1], - O = _[2]; - A[0] = A[0] * o, A[1] = A[1] * o, A[2] = A[2] * o, A[3] = A[3] * o, A[4] = A[4] * z, A[5] = A[5] * z, A[6] = A[6] * z, A[7] = A[7] * z, A[8] = A[8] * O, A[9] = A[9] * O, A[10] = A[10] * O, A[11] = A[11] * O - } - }, - xo = function (l, E, N) { - var o = E[0], - O = E[1], - x = E[2], - Z = E[3], - C = E[4], - y = E[5], - r = E[6], - $ = E[7], - T = E[8], - s = E[9], - j = E[10], - b = E[11], - m = E[12], - u = E[13], - P = E[14], - Q = E[15], - W = N[0], - f = N[1], - w = N[2], - H = N[3]; - return l[0] = W * o + f * C + w * T + H * m, l[1] = W * O + f * y + w * s + H * u, l[2] = W * x + f * r + w * j + H * P, l[3] = W * Z + f * $ + w * b + H * Q, W = N[4], f = N[5], w = N[6], H = N[7], l[4] = W * o + f * C + w * T + H * m, l[5] = W * O + f * y + w * s + H * u, l[6] = W * x + f * r + w * j + H * P, l[7] = W * Z + f * $ + w * b + H * Q, W = N[8], f = N[9], w = N[10], H = N[11], l[8] = W * o + f * C + w * T + H * m, l[9] = W * O + f * y + w * s + H * u, l[10] = W * x + f * r + w * j + H * P, l[11] = W * Z + f * $ + w * b + H * Q, W = N[12], f = N[13], w = N[14], H = N[15], l[12] = W * o + f * C + w * T + H * m, l[13] = W * O + f * y + w * s + H * u, l[14] = W * x + f * r + w * j + H * P, l[15] = W * Z + f * $ + w * b + H * Q, l - }, - _g = function (f, L, d, r) { - var U, M, Z, m, A, G, K, T, j, D, Q = L[0], - l = L[1], - _ = L[2], - a = r[0], - F = r[1], - B = r[2], - W = d[0], - i = d[1], - y = d[2]; - return X(Q - W) < Wp && X(l - i) < Wp && X(_ - y) < Wp ? yi(f) : (K = Q - W, T = l - i, j = _ - y, D = 1 / w(K * K + T * T + j * j), K *= D, T *= D, j *= D, U = F * j - B * T, M = B * K - a * j, Z = a * T - F * K, D = w(U * U + M * M + Z * Z), D ? (D = 1 / D, U *= D, M *= D, Z *= D) : (U = 0, M = 0, Z = 0), m = T * Z - j * M, A = j * U - K * Z, G = K * M - T * U, D = w(m * m + A * A + G * G), D ? (D = 1 / D, m *= D, A *= D, G *= D) : (m = 0, A = 0, G = 0), f[0] = U, f[1] = m, f[2] = K, f[3] = 0, f[4] = M, f[5] = A, f[6] = T, f[7] = 0, f[8] = Z, f[9] = G, f[10] = j, f[11] = 0, f[12] = -(U * Q + M * l + Z * _), f[13] = -(m * Q + A * l + G * _), f[14] = -(K * Q + T * l + j * _), f[15] = 1, f) - }, - We = function (Y, x, L, i, j) { - var E = 1 / R(x / 2), - B = 1 / (i - j); - return Y[0] = E / L, Y[1] = 0, Y[2] = 0, Y[3] = 0, Y[4] = 0, Y[5] = E, Y[6] = 0, Y[7] = 0, Y[8] = 0, Y[9] = 0, Y[10] = (j + i) * B, Y[11] = -1, Y[12] = 0, Y[13] = 0, Y[14] = 2 * j * i * B, Y[15] = 0, Y - }, - lk = function (R, w, r, l, a, K, b) { - var M = 1 / (w - r), - S = 1 / (l - a), - n = 1 / (K - b); - return R[0] = -2 * M, R[1] = 0, R[2] = 0, R[3] = 0, R[4] = 0, R[5] = -2 * S, R[6] = 0, R[7] = 0, R[8] = 0, R[9] = 0, R[10] = 2 * n, R[11] = 0, R[12] = (w + r) * M, R[13] = (a + l) * S, R[14] = (b + K) * n, R[15] = 1, R - }, - _p = function (N, B) { - var l = B[0], - q = B[1], - M = B[2], - k = B[3], - Y = l * l + q * q + M * M + k * k, - Q = Y ? 1 / Y : 0; - return N[0] = -l * Q, N[1] = -q * Q, N[2] = -M * Q, N[3] = k * Q, N - }, - Hg = function (r, f) { - var I = f[0] + f[5] + f[10], - Z = 0; - return I > 0 ? (Z = 2 * Math.sqrt(I + 1), r[3] = .25 * Z, r[0] = (f[6] - f[9]) / Z, r[1] = (f[8] - f[2]) / Z, r[2] = (f[1] - f[4]) / Z) : f[0] > f[5] & f[0] > f[10] ? (Z = 2 * Math.sqrt(1 + f[0] - f[5] - f[10]), r[3] = (f[6] - f[9]) / Z, r[0] = .25 * Z, r[1] = (f[1] + f[4]) / Z, r[2] = (f[8] + f[2]) / Z) : f[5] > f[10] ? (Z = 2 * Math.sqrt(1 + f[5] - f[0] - f[10]), r[3] = (f[8] - f[2]) / Z, r[0] = (f[1] + f[4]) / Z, r[1] = .25 * Z, r[2] = (f[6] + f[9]) / Z) : (Z = 2 * Math.sqrt(1 + f[10] - f[0] - f[5]), r[3] = (f[1] - f[4]) / Z, r[0] = (f[8] + f[2]) / Z, r[1] = (f[6] + f[9]) / Z, r[2] = .25 * Z), r - }, - dq = function (U, H, v) { - var E = H[0], - S = H[1], - V = H[2], - r = H[3], - M = E + E, - f = S + S, - X = V + V, - C = E * M, - J = E * f, - k = E * X, - Q = S * f, - b = S * X, - d = V * X, - y = r * M, - m = r * f, - z = r * X; - return U[0] = 1 - (Q + d), U[1] = J + z, U[2] = k - m, U[3] = 0, U[4] = J - z, U[5] = 1 - (C + d), U[6] = b + y, U[7] = 0, U[8] = k + m, U[9] = b - y, U[10] = 1 - (C + Q), U[11] = 0, U[12] = v[0], U[13] = v[1], U[14] = v[2], U[15] = 1, U - }, - wp = function (F, E) { - if (F.vr.enable) { - var O = F.vr.getViewMatrix(E); - if (O) return O - } - return _g(E ? E : kn(), F._eye, F._center, F._up) - }, - Mc = function (d, i) { - if (d.vr.enable) { - var r = d.vr.getProjectMatrix(); - if (r) return r - } - if (!i && d._computedProjectMatrix) return Ql(d._computedProjectMatrix); - var f = d.getAspect(), - n = d._near, - w = d._far, - E = kn(); - if (d._ortho) { - var J = d._orthoWidth / 2, - q = J / f; - lk(E, -J, J, -q, q, n, w) - } else We(E, d._fovy, f, n, w); - return E - }, - Gb = function (q, i) { - if (!q) return F; - var j = 0, - N = 1, - y = 2, - b = [], - k = 0, - _ = q.length, - o = _ / 3; - if (i) { - for (; _ > k; k++) b[k] = 0; - for (k = 0; k < i.length; k += 3) { - var e = [], - W = [], - f = []; - e[j] = q[3 * i[k + 1] + j] - q[3 * i[k] + j], e[N] = q[3 * i[k + 1] + N] - q[3 * i[k] + N], e[y] = q[3 * i[k + 1] + y] - q[3 * i[k] + y], W[j] = q[3 * i[k + 2] + j] - q[3 * i[k + 1] + j], W[N] = q[3 * i[k + 2] + N] - q[3 * i[k + 1] + N], W[y] = q[3 * i[k + 2] + y] - q[3 * i[k + 1] + y], f[j] = e[N] * W[y] - e[y] * W[N], f[N] = e[y] * W[j] - e[j] * W[y], f[y] = e[j] * W[N] - e[N] * W[j]; - for (var S = 0; 3 > S; S++) b[3 * i[k + S] + j] += f[j], b[3 * i[k + S] + N] += f[N], b[3 * i[k + S] + y] += f[y] - } - } else - for (k = 0; o > k; k += 3) { - var e = [], - W = [], - f = []; - e[j] = q[3 * (k + 1) + j] - q[3 * k + j], e[N] = q[3 * (k + 1) + N] - q[3 * k + N], e[y] = q[3 * (k + 1) + y] - q[3 * k + y], W[j] = q[3 * (k + 2) + j] - q[3 * (k + 1) + j], W[N] = q[3 * (k + 2) + N] - q[3 * (k + 1) + N], W[y] = q[3 * (k + 2) + y] - q[3 * (k + 1) + y], f[j] = e[N] * W[y] - e[y] * W[N], f[N] = e[y] * W[j] - e[j] * W[y], f[y] = e[j] * W[N] - e[N] * W[j]; - for (var S = 0; 3 > S; S++) b[3 * (k + S) + j] = f[j], b[3 * (k + S) + N] = f[N], b[3 * (k + S) + y] = f[y] - } - for (k = 0; _ > k; k += 3) { - var Q = []; - Q[j] = b[k + j], Q[N] = b[k + N], Q[y] = b[k + y]; - var X = w(Q[j] * Q[j] + Q[N] * Q[N] + Q[y] * Q[y]); - 0 === X && (X = Wp), Q[j] = Q[j] / X, Q[N] = Q[N] / X, Q[y] = Q[y] / X, b[k + j] = Q[j], b[k + N] = Q[N], b[k + y] = Q[y] - } - return new fk(b) - }, - rg = function (w, b, M, x) { - if (M || (M = w.createTexture()), b) { - var r = w.TEXTURE_2D, - u = w.REPEAT, - I = w.CLAMP_TO_EDGE, - A = w.TEXTURE_MIN_FILTER; - x = x || Xn; - var V = x.minFilter || x.filter || w.LINEAR, - t = x.magFilter || x.filter || w.LINEAR; - w.activeTexture(w.TEXTURE0), an(w, M), w.texImage2D(r, 0, w.RGBA, w.RGBA, w.UNSIGNED_BYTE, b), Lr(w, w.TEXTURE_MAG_FILTER, t); - var v = b.naturalWidth || b.width, - p = b.naturalHeight || b.height; - Rc.isPOT(v) && Rc.isPOT(p) && !x.clampToEdge && !b.clampToEdge ? (Lr(w, w.TEXTURE_WRAP_S, u), Lr(w, w.TEXTURE_WRAP_T, u), Lr(w, A, V === w.NEAREST ? w.NEAREST_MIPMAP_NEAREST : w.LINEAR_MIPMAP_LINEAR), x.mipmapMaxLevel !== Z && Lr(w, w.TEXTURE_MAX_LEVEL, x.mipmapMaxLevel), w.generateMipmap(r)) : (Lr(w, w.TEXTURE_WRAP_S, I), Lr(w, w.TEXTURE_WRAP_T, I), Lr(w, A, V)), an(w, F) - } - return M - }, - ze = function (j, r) { - var J = new Uint8Array(4); - return r = r || j.createTexture(), j.activeTexture(j.TEXTURE0), an(j, r), Lr(j, j.TEXTURE_MIN_FILTER, j.LINEAR), j.texImage2D(j.TEXTURE_2D, 0, j.RGBA, 1, 1, 0, j.RGBA, j.UNSIGNED_BYTE, J), r - }, - Gp = function (K, W) { - var u = new Uint8Array(4); - return W = W || K.createTexture(), K.activeTexture(K.TEXTURE0), K.bindTexture(K.TEXTURE_CUBE_MAP, W), K.texParameteri(K.TEXTURE_CUBE_MAP, K.TEXTURE_MAG_FILTER, K.LINEAR), K.texParameteri(K.TEXTURE_CUBE_MAP, K.TEXTURE_MIN_FILTER, K.LINEAR), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 0, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 1, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 2, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 3, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 4, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 5, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), W - }, - Vo = function (y) { - y._26I && y._prg && (y._26I.deleteProgram(y._prg), y._prg = F) - }, - Pl = function (I, E, $, k) { - var Y = I.createShader($); - return I.shaderSource(Y, k), I.compileShader(Y), I.attachShader(E, Y), Y - }, - el = function (A) { - return A.createBuffer() - }, - an = function (f, m) { - f.bindTexture(f.TEXTURE_2D, m || f._emptyTexture) - }, - Lr = function (K, E, j) { - K.texParameteri(K.TEXTURE_2D, E, j) - }, - Ik = function (O, C) { - var L = ts.for(O).directState(); - L.polygonOffset.enabled = !0, L.polygonOffset.value = C - }, - rd = function (d) { - var L = ts.for(d).directState(); - L.polygonOffset.enabled = !1 - }, - qe = function (n, E) { - if (E) { - var V = ts.for(n).directState(); - V.color.clear = ns(E) - } - }, - _k = function (k) { - var R = ts.for(k), - N = R.directUniforms(), - X = R.directAttribs(); - N.uFix = !0, X.aNormal = !1 - }, - On = function (B) { - var o = ts.for(B), - f = o.directUniforms(); - o.directAttribs(), f.uFix = !1 - }, - Ll = function (R, l, v, i, o, C, e, W) { - var D = ts.for(R), - I = D.directState(), - K = D.directUniforms(); - R._picking || (v ? (K.uBlend = !0, K.uBlendColor = v) : K.uBlend = !1, K.uLight = i == F ? !0 : i, Bp(o) && 1 !== o && (K.uPartOpacity = o), K.uReverseFlip = C == F ? !1 : C, K.uFixPickReverseColor = e || vc), I.cullFace.enabled = W ? !0 : !1 - }, - ol = function (N) { - if (!N._picking) { - var v = ts.for(N), - C = v.directUniforms(); - C.uPartOpacity = 1 - } - }, - bi = function () { - var a = [0, 0, 1, 1]; - return function (i, $, T, l, Y, D, Q, r, o) { - var v = ts.for(i), - L = v.directUniforms(), - z = v.directAttribs(); - return T ? (L.uTexture = !0, L.uDiscardSelectable = El(l) ? l : !0, z.aUv = Sl(i, Y, D, F, 2), o ? (L.uBlendTexture = !0, L.uBlendSampler = o) : (L.uBlendTexture = !1, L.uBlendSampler = i._emptyBlendTexture), L.uSampler = T, Q ? (a[0] = Q[0], a[1] = Q[1]) : (a[0] = 0, a[1] = 0), r ? (a[2] = r[0], a[3] = r[1]) : (a[2] = 1, a[3] = 1), L.uOffsetScale = a, void 0) : (L.uSampler = i._emptyTexture, L.uBlendSampler = i._emptyBlendTexture, void 0) - } - }(), - Jf = function (P, L, W) { - var X = ts.for(P), - M = X.directUniforms(), - s = X.directAttribs(); - P.activeTexture(P.TEXTURE0), an(P, F), P.activeTexture(P.TEXTURE1), an(P, F), W && (s.aUv = !1, M.uTexture = !1, M.uSampler = P._emptyTexture, M.uBlendTexture = !1, M.uBlendSampler = P._emptyBlendTexture) - }, - ck = function (L, w, B, E, g, W) { - var z = ts.for(L), - M = z.directUniforms(), - _ = z.directAttribs(); - !B || Uq || Bj || L.lineWidth(B), E && !L._picking && (M.uFixPickReverseColor = E), g && (_.aPosition = Sl(L, g, W, F)) - }, - ie = function (e, T, V, u) { - Gi && (u = e[Gi]), e.drawArrays(u == F ? e.TRIANGLES : u, T, V); - var p = e._renderInfo; - p && (p.calls++, p.vertices += V, (u == F || u === e.TRIANGLES) && (p.faces += V / 3), u === e.LINES && (p.lines += V / 2), u === e.POINTS && (p.points += V)) - }, - os = function (j, R, O, S, v) { - Gi && (S = j[Gi]), j.drawElements(S == F ? j.TRIANGLES : S, O, v == F ? j.UNSIGNED_SHORT : v, R == F ? 0 : 2 * R); - var H = j._renderInfo; - H && (H.calls++, H.vertices += O, (S == F || S === j.TRIANGLES) && (H.faces += O / 3), S === j.LINES && (H.lines += O / 2), S === j.POINTS && (H.points += O)) - }, - bm = function (m, P, $) { - var r = m.ARRAY_BUFFER; - return m.bindBuffer(r, P), $ && m.bufferData(r, $, m.STATIC_DRAW), P - }, - Sl = function ($, v, N, u, D) { - return N ? rk($, $.ARRAY_BUFFER, v, N) : bm($, v, N, u, D) - }, - eo = function (L, K, X) { - var Q = L.ELEMENT_ARRAY_BUFFER; - L.bindBuffer(Q, K), X && L.bufferData(Q, X, L.STATIC_DRAW) - }, - ym = function (B, U, h) { - rk(B, B.ELEMENT_ARRAY_BUFFER, U, h) - }, - rk = function (f, Y, Q, U) { - var E = U._bufId; - E || (E = U._bufId = O.Math.generateIncreasingID()); - var Q, b = f._bufPool; - return (Q = b[E]) && Q._buf ? f.bindBuffer(Y, Q._buf) : (Q = b[E] = { - _buf: el(f) - }, f.bindBuffer(Y, Q._buf), f.bufferData(Y, U, f.STATIC_DRAW)), Q._fid = f._renderInfo.frame, Q._buf - }, - Pr = function (Z, D) { - D != F && D >= 0 && Z.enableVertexAttribArray(D) - }, - Rg = function (y, P) { - P != F && P >= 0 && y.disableVertexAttribArray(P) - }, - Gf = function (e, i) { - var j = e.getGL(); - e._prg; - var Y = ts.for(j), - U = Y.directUniforms(); - Y.directAttribs(), e._7O = e._8O.pop(), i && (U.uMVMatrix = e._7O, e._6O = i, U.uNMatrix = i) - }, - Rq = function (Q, F) { - return F || (F = kn()), Vd(F, Q), Od(F), ss(F), F - }, - gk = function (I, Y) { - var D = I.getGL(), - g = I._7O, - r = ts.for(D), - N = r.directUniforms(); - Y ? (I._8O.push(Ql(g)), N.uMMatrix = Y, xo(g, g, Y), I._7O = g) : N.uMMatrix = Hd, N.uMVMatrix = g, N.uNMatrix = Rq(g, I._6O) - }, - is = { - body: 0, - label: 1, - label2: 2, - note: 3, - note2: 4, - symbol: 5 - }, - wc = 10, - gm = function (f, Z, n, D, k, _) { - var Y; - if (n) { - var K = D._pickId; - K || (K = D._pickId = Z._pickIdUsed, Z._pickIdUsed += wc); - var c, y = is[k]; - if (null != y) c = K + y; - else { - var t = D._pickExtraPartMap; - t || (t = D._pickExtraPartMap = {}), (c = t[k]) || (c = t[k] = Z._pickIdUsed++) - } - Z[c] || (Z[c] = { - data: D, - part: k - }), Y = rl(c) - } else Y = zf; if (!_) { - var h = ts.for(f), - u = h.directUniforms(); - u.uFixPickReverseColor = Y - } - return Y - }, - Hb = function (_, x, J) { - "target" !== J && (J = "source"); - var y = "target" === J ? x.getTargetAgent() : x.getSourceAgent(), - N = "edge." + J + "."; - if (Fq(y)) { - var B = x.s(N + "anchor.x"), - G = x.s(N + "anchor.elevation"), - M = x.s(N + "anchor.y"), - S = sj(y, _.getMat(y)), - v = y.getAnchor3d(); - return Td([(B === Z ? .5 : B) - v.x, (G === Z ? .5 : G) - v.y, (M === Z ? .5 : M) - v.z], S) - } - var R = x.s(N + "index"), - m = _.getData3dUI(y); - if (!m.info || !m.info.list) return !1; - if (R >= 0) { - var q, b, W, p, h, T = m.info._lastPointsSegments, - L = T.points, - o = T.segments, - c = -1, - Q = -1; - for (W = 0, p = o ? o.length : L.length; p > W; W++) { - if (b = o ? o.get(W) : 1, 3 === b) h = 2; - else if (4 === b) h = 3; - else { - if (5 === b) continue; - h = 1 - } if (c += h, Q++, Q === R) { - q = L.get(c); - break - } - } - return q || (q = L.get(L.length - 1)), [q.x, q.e || 0, q.y] - } - var K = x.s(N + "percent") || .5; - if (K = Math.max(0, Math.min(K, 1)), !m || !m.getCache) return !1; - var w = m.getCache(), - p = w[w.length - 1].length, - T = _.getLineOffset(y, K * p), - t = T.point; - return [t.x, t.y, t.z] - }, - Ep = function () { - var T = { - center: function (U, E, y, B, e) { - var f = -E[1] / 2, - x = { - x: -E[0] / 2, - y: f, - width: E[0], - height: E[1] - }, - u = Re(U, x, y); - return [u.x + B, -u.y - e, Hj()] - }, front: function (n, S, C, h, y) { - var d = -S[1] / 2, - f = { - x: -S[0] / 2, - y: d, - width: S[0], - height: S[1] - }, - m = Re(n, f, C); - return [m.x + h, -m.y - y, S[2] / 2 + Hj()] - }, back: function (m, T, f, X, p) { - var K = -T[0] / 2, - k = -T[1] / 2, - x = { - x: K, - y: k, - width: T[0], - height: T[1] - }, - r = Re(m, x, f); - return [-r.x - X, -r.y - p, -T[2] / 2 - Hj()] - }, left: function (y, U, H, o, W) { - var B = -U[1] / 2, - E = { - x: -U[2] / 2, - y: B, - width: U[2], - height: U[1] - }, - l = Re(y, E, H); - return [-U[0] / 2 - Hj(), -l.y - W, l.x + o] - }, right: function (z, d, T, e, R) { - var B = -d[2] / 2, - K = -d[1] / 2, - o = { - x: B, - y: K, - width: d[2], - height: d[1] - }, - J = Re(z, o, T); - return [d[0] / 2 + Hj(), -J.y - R, -J.x - e] - }, top: function (H, P, V, E, h) { - var o = { - x: -P[0] / 2, - y: -P[2] / 2, - width: P[0], - height: P[2] - }, - W = Re(H, o, V); - return [W.x + E, P[1] / 2 + Hj(), W.y + h] - }, bottom: function (u, y, l, e, L) { - var P = -y[2] / 2, - Z = { - x: -y[0] / 2, - y: P, - width: y[0], - height: y[2] - }, - M = Re(u, Z, l); - return [M.x + e, -y[1] / 2 - Hj(), -M.y - L] - } - }; - return function (w, E, K, b, m, l) { - return T[b](w, E, K, m || 0, l || 0) - } - }(), - Te = function (v, P, z, K, t, d, H, D, S, J) { - if (t && (P[0] += t[0], P[1] += t[1], P[2] += t[2]), bo(v, z), D) { - var b = kn(); - if (Cl(b, S, J), Td(P, b), bo(v, P), v.auto = D, v.pos = Td([0, 0, 0], v), d) { - var E = v.mat2 = kn(); - Cl(E, d, H) - } - } else Cl(v, S, J), bo(v, P), K === nq ? ah(v, -N) : K === fm ? ah(v, N) : K === $c ? uh(v, -N) : K === Kd ? uh(v, N) : K === Qq && ah(v, W), Cl(v, d, H); - return v - }, - yn = function ($, s) { - var J = s.auto, - z = s.mat2, - E = $.gv; - if (J) { - var t, o = kn(), - W = [0, 0, 0, 0]; - t = "string" == typeof J ? [J.indexOf("x") < 0 ? E._eye[0] : E._center[0], J.indexOf("y") < 0 ? E._eye[1] : E._center[1], J.indexOf("z") < 0 ? E._eye[2] : E._center[2]] : E._eye, Hg(W, _g(kn(), t, E._center, E._up)), dq(o, _p(W, W), s.pos), z && xo(o, o, z), gk(E, o) - } else gk(E, s) - }, - ud = function (c, D, C, t, O) { - var A = c.s, - X = c.gv, - Z = X.getGL(), - P = X._prg, - I = X._buffer, - Y = X._1O, - E = ts.for(Z), - y = E.directAttribs(); - rg(Z, xm, Y), yn(c, C), Ll(Z, P, A(D + ".blend"), A(D + ".light"), A(D + ".opacity"), A(D + ".reverse.flip"), A(D + ".reverse.color"), A(D + ".reverse.cull")), bi(Z, P, Y, O, I.uv, Vj), y.aPosition = Sl(Z, I.vs, t, F), y.aNormal = Sl(Z, I.ns, Lh, F), ym(Z, I.is, ar), os(Z, 0, ar.length), Jf(Z, P, Y), ol(Z, P), Gf(X) - }, - _e = function (p, E, F) { - var V = p.gv, - K = p.data, - h = p[E] = { - blend: V.getBodyColor(K) || V.getFaceBlend(K, E), - light: V.getFaceLight(K, E), - color: V.getFaceColor(K, E), - opacity: V.getFaceOpacity(K, E), - transparent: V.getFaceTransparent(K, E), - reverseFlip: V.getFaceReverseFlip(K, E), - reverseColor: V.getFaceReverseColor(K, E), - reverseCull: V.getFaceReverseCull(K, E), - texture: V.getFaceImage(K, E), - blendTexture: V.getFaceBlendImage(K, E), - discardSelectable: V.getFaceDiscardSelectable(K, E) - }; - if ("csg" !== E) { - h.uv = V.getFaceUv(K, E) || F && F[E + "Uv"], h.uvScale = V.getFaceUvScale(K, E) || F && F[E + "UvScale"], h.uvOffset = V.getFaceUvOffset(K, E) || F && F[E + "UvOffset"]; - var z = V.getFaceMat(K, E); - if (z) { - var D = sj(K, z); - K.appendAnchorMatrix3d(D), h.mat = D - } - } - return h - }, - io = function (E, h, N, T, j) { - var W = E[T]; - if (W) { - if (!j(W.transparent)) return; - var R = E.data, - w = E.gv, - U = w._buffer, - O = w.getTexture(W.texture, R, T), - d = w.getTexture(W.blendTexture, R), - u = ts.for(h), - K = u.directUniforms(), - f = u.directAttribs(); - bi(h, N, O, W.discardSelectable, U.uv, W.tuv, W.uvOffset, W.uvScale, d), Ll(h, N, W.blend, W.light, W.opacity, W.reverseFlip, W.reverseColor, W.reverseCull), W.cs && !w._batchColorDisabled ? (K.uBatchColor = !0, f.aBatchColor = Sl(h, U.batchColor, W.cs, N.aBatchColor, 4)) : K.uDiffuse = W.color || z["color.empty"], f.aPosition = Sl(h, U.vs, W.vs, F), f.aNormal = Sl(h, U.ns, W.ns, F), ie(h, 0, W.vs.length / 3), W.cs && !w._batchColorDisabled && (K.uBatchColor = !1, Rg(h, N.aBatchColor)), ol(h, N), Jf(h, N, O) - } - }, - $p = function (o, p, h) { - ip(o) ? o.forEach(function (N) { - $p(N, p, h) - }) : dk(o) ? $p(bf(p, o), p, h) : xl(o) ? o.shape3d ? $p(o.shape3d, p, h) : h.push(o) : h.push(o) - }, - mb = function (s, m, t, G, H, S) { - var Z, J, V, b, y, Y, I, E, h, i, x, W = [G - m, H - t], - Q = s ? s.length : 0; - for (V = 0; Q > V; V++) { - for (b = 2, Z = s[V], y = Z[0], Y = Z[1]; b + 1 < Z.length;) { - if (I = Z[b], E = Z[b + 1], J = ti(m, t, G, H, y, Y, I, E, !0)) { - h = [I - y, E - Y], i = En(h), h[0] /= i, h[1] /= i, i = zc(W, h), i = i > 0 ? S : -S, x = [h[0] * i, h[1] * i]; - break - } - y = I, Y = E, b += 2 - } - if (x) break - } - if (x) - for (G = m + x[0], H = t + x[1], V = 0; Q > V; V++) - for (b = 2, Z = s[V], y = Z[0], Y = Z[1]; b + 1 < Z.length;) { - if (I = Z[b], E = Z[b + 1], J = ti(m, t, G, H, y, Y, I, E, !0)) return [0, 0]; - y = I, Y = E, b += 2 - } - return x ? x : [G - m, H - t] - }, - Mm = function (V) { - return "nearest" === V ? Ah.NEAREST : "linear" === V ? Ah.LINEAR : V - }, - Eh = O.graph3d = {}, - Dn = function (W, T, z) { - yc(Y + ".graph3d." + W, T, z) - }, - //修改加密 - Ae = "~!opjujtpQ`mh !gjeof$! <*1/2!-opjujtpQb)5dfw!+!yjsubNNv!+!yjsubNxpebit!>!esppDxpebit !QBNXPEBIT`FTV!gfegj$! !gjeof$! ~!fdobutjEfojMw|*itbEv)gj !ITBE!gfegj$! !gjeof$! ~!ttfouihjsCidubCw|*ttfouihjsCidubCv)gj !TTFOUIHJSCIDUBC!gfegj$! !gjeof$! ~!eofmCidubCw|*eofmCidubCv)gj !EOFMCIDUBC!gfegj$! !gjeof$! ~!spmpDidubCw|*spmpDidubCv)gj !SPMPDIDUBC!gfegj$! ~!wVs|*fsvuyfUeofmCv)gj ~!wVw|*fsvuyfUv)gj<*opjujtpQb)4dfw!>!opjujtpQw~<**1/2!-opjujtpQb)5dfw!+!yjsubNNv)4dfw!>!emspXw<*yfusfw)4dfw!>!yfusfWw<**1/2!-mbnspOb)5dfw!+!yjsubNOv)4dfw!>!mbnspOw|*ldjQva!%%!yjGva)gj<*1/2!-opjujtpQb)5dfw!+!yjsubNWNv!>!yfusfw!5dfw|!*ejpw)ojbn!ejpw !gjeof$! p; p += 6) Z = En([D[p], D[p + 1], D[p + 2]], [D[p + 3], D[p + 4], D[p + 5]]), v.push(Z), d += Z; - if (d && e) { - var P, r = yg(ns(e), H), - m = [r[0] - L[0], r[1] - L[1], r[2] - L[2], r[3] - L[3]], - j = 0; - for (p = 0; g > p; p += 6) P = j / d, Wo(V, [L[0] + m[0] * P, L[1] + m[1] * P, L[2] + m[2] * P, L[3] + m[3] * P], 1), j += v[p / 6], P = j / d, Wo(V, [L[0] + m[0] * P, L[1] + m[1] * P, L[2] + m[2] * P, L[3] + m[3] * P], 1) - } else Wo(V, L, l); if (s) - for (j = M || 0, p = 0; g > p; p += 6) u.push(j), j += v[p / 6], u.push(j) - }, - Ic = function (Y, x, h) { - if (x) { - var M = 4 * x.begin, - L = h[x.batch].ps; - if (L[M] !== Y[0] || L[M + 1] !== Y[1] || L[M + 2] !== Y[2] || L[M + 3] !== Y[3]) { - for (var J = 0; J < x.size; J++) L[M++] = Y[0], L[M++] = Y[1], L[M++] = Y[2], L[M++] = Y[3]; - L._invalidateThisFrame = !0 - } - } - }, - Tj = function (E, C) { - var u = C + ["32"], - x = E[C], - P = E[u]; - x ? P && P.length === x.length ? (P.set(x), P._bufId = null) : E[u] = new fk(x) : delete E[u] - }, - km = function (s, O, Q, E, M, B, Y, D, o) { - if (ip(Q)) Q.forEach(function (v) { - km(s, O, v, E, M, B, Y, D, o) - }); - else if (dk(Q)) km(s, O, bf(E, Q), E, M, B, Y, D, o); - else if (xl(Q)) { - var h, b = Dj(Q.mat, O, s), - v = Dj(Q.s3, O, s), - x = Dj(Q.t3, O, s), - C = Dj(Q.r3, O, s); - if ((v || C || x || b) && (h = Jn(b, v, C, Dj(Q.rotationMode, O, s), x), B.push(h)), Q.shape3d) km(s, O, Q.shape3d, E, M, B, Y, D, Q); - else { - var t = E.s; - o = o || Xn; - var T = B[0], - p = B.length, - c = t("shape3d.color", Q.color, o.color); - if (M || (M = t("shape3d.blend", Q.blend, o.blend)), p > 1) { - T = Ql(T); - for (var f = 1; p > f; f++) xo(T, T, B[f]) - } - Q.vs && t(lm, Q.visible, o.visible) && Ak(T, Y, D, Q.vs, Q.uv, Q.is, M, c), Q.top_vs && t(Je, Q.topVisible, o.topVisible) && Ak(T, Y, D, Q.top_vs, Q.top_uv, Q.top_is, M, t("shape3d.top.color", Q.topColor, o.topColor) || c), Q.bottom_vs && t(Ho, Q.bottomVisible, o.bottomVisible) && Ak(T, Y, D, Q.bottom_vs, Q.bottom_uv, Q.bottom_is, M, t("shape3d.bottom.color", Q.bottomColor, o.bottomColor) || c), Q.from_vs && t(Rb, Q.fromVisible, o.fromVisible) && Ak(T, Y, D, Q.from_vs, Q.from_uv, Q.from_is, M, t("shape3d.from.color", Q.fromColor, o.fromColor) || c), Q.to_vs && t(xh, Q.toVisible, o.toVisible) && Ak(T, Y, D, Q.to_vs, Q.to_uv, Q.to_is, M, t("shape3d.to.color", Q.toColor, o.toColor) || c) - } - h && B.pop() - } - }, - Ak = function (H, c, n, p, d, e, _, r) { - var P, l = c.cs, - W = c.uv, - a = c.bs; - if (e) { - P = e.length; - for (var U = 0; P > U; U++) { - var i = e[U]; - yp(n, H, [p[3 * i], p[3 * i + 1], p[3 * i + 2]]), W && gc(W, [d[2 * i], d[2 * i + 1]]) - } - } else P = p.length / 3, yp(n, H, p), W && gc(W, d); - l && Wo(l, r, P), a && (_ ? Tr(a, _, P) : gc(a, Qm, P)) - }, - Mp = function (A, $, F, _) { - var Q = []; - _ ? km(A.gv, A.data, _, A, A.getBodyColor(), [$], F, Q) : (_q(A, nq, $, F, Q), _q(A, fm, $, F, Q), _q(A, wg, $, F, Q), _q(A, Qq, $, F, Q), _q(A, $c, $, F, Q), _q(A, Kd, $, F, Q), _q(A, "csg", $, F, Q)), Q.length && (gc(F.vs, Q), gc(F.ns, Gb(Q))) - }, - _q = function (O, y, E, r, D) { - var d = O[y]; - if (d) { - var Q = d.tuv; - if (Q) { - var T, I, f, s, p = d.uvScale, - z = d.uvOffset; - if (p) - for (T = Q.length, I = p[0], f = p[1], s = 0; T > s; s += 2) Q[s] *= I, Q[s + 1] *= f; - if (z) - for (T = Q.length, I = z[0], f = z[1], s = 0; T > s; s += 2) Q[s] += I, Q[s + 1] += f - } - Ak(E, r, D, d.vs, Q, F, d.blend, d.color) - } - }, - Li = function (J, z, C, b, y, S, T, F) { - var v, A = C.cs, - p = C.uv, - E = C.bs; - if (J.getFaceVisible(z, S)) { - var R = J.getFaceMat(z, S); - if (R && (y = sj(z, R)), yp(T, y, F), A && Wo(A, J.getFaceColor(z, S), 6), p) { - var k = J.getFaceUv(z, S) || b[S + "Uv"], - f = J.getFaceUvScale(z, S) || b[S + "UvScale"], - V = J.getFaceUvOffset(z, S) || b[S + "UvOffset"]; - k = k ? [k[6], k[7], k[0], k[1], k[2], k[3], k[2], k[3], k[4], k[5], k[6], k[7]] : xd; - var Q = k[0], - Y = k[1], - u = k[2], - O = k[3], - W = k[4], - G = k[5], - K = k[6], - l = k[7], - d = k[8], - $ = k[9], - H = k[10], - w = k[11]; - if (f) { - var m = f[0], - o = f[1]; - Q *= m, Y *= o, u *= m, O *= o, W *= m, G *= o, K *= m, l *= o, d *= m, $ *= o, H *= m, w *= o - } - if (V) { - var s = V[0], - x = V[1]; - Q += s, Y += x, u += s, O += x, W += s, G += x, K += s, l += x, d += s, $ += x, H += s, w += x - } - p.push(Q, Y, u, O, W, G, K, l, d, $, H, w) - } - E && (v = J.getBodyColor(z) || J.getFaceBlend(z, S), v ? Tr(E, v, 6) : gc(E, Qm, 6)) - } - }, - Eb = function (X, W, E, u) { - var E = X._picking ? X.pickColorMap : null, - t = X.getGL(), - G = X._prg, - h = X._buffer; - if (!wd(W)) { - gk(X, Nj), _k(t, G); - for (var x in W) { - var k = W[x]; - if (!(u && !k.T || !u && k.T)) { - k.invalidate ? (k.invalidate = !1, Tj(k, "vs"), Tj(k, "cs"), Tj(k, "ls"), Tj(k, "ps")) : E && k.ps && k.ps._invalidateThisFrame && (k.ps._invalidateThisFrame = !1, Tj(k, "ps")); - var $ = k.vs32, - r = E ? k.ps32 : k.cs32; - ck(t, G, k.W, F, h.vs, $); - var Y = ts.for(t), - C = Y.directUniforms(), - j = Y.directAttribs(), - d = k.D, - o = !X._dashDisabled && d; - C.uAlphaTest = z.alphaTest, t._blooming && !k.B && (C.blackout = !0), o && (C.uDash = !0, C.uDashDistance = d, C.uDashGapDistance = k.G, C.uDiffuse = k.A || z["color.empty"], j.aLineDistance = Sl(t, h.lineDistance, k.ls32, F, 1)); - var D = !X._batchColorDisabled; - D && r.length ? (C.uBatchColor = !0, j.aBatchColor = Sl(t, h.batchColor, r, F, 4)) : (C.uBatchColor = !1, j.aBatchColor = !1), bi(t), ie(t, 0, $.length / 3, t.LINES), Jf(t), D && (C.uBatchColor = !1, j.aBatchColor = !1), o && (C.uDash = !1, j.aLineDistance = !1), t._blooming && !k.B && (C.blackout = !1) - } - } - On(t, G), Gf(X) - } - }, - Zn = function (x, g, Y, $, I) { - var e, h, k, N, y, O, c, n, d, r, t, Y = x._picking ? x.pickColorMap : null, - D = x.getGL(), - E = x._prg, - H = ts.for(D), - G = H.directUniforms(), - X = H.directAttribs(), - P = x._buffer; - if (!wd(g) && !x.drawFilter) { - gk(x, Nj); - for (e in g) - if (h = x.getBatchInfo(e) || Xn, h.visible !== !1 && !($ && !h.transparent || !$ && h.transparent || x.isReflecting(D) && h.reflectable === !1)) { - var V = h.renderLayerMask; - if (V == F && (V = pb), I == F && (I = pb), Sr(I, V) && (k = g[e], Y || !h.transparentMask)) { - var q = $ && h.autoSort === !0 && (x._33Q || k.invalidate); - if (k.invalidate ? (k.invalidate = !1, Tj(k, "vs"), Tj(k, "ns"), Tj(k, "cs"), Tj(k, "rs"), Tj(k, "ps"), Tj(k, "bs"), Tj(k, "uv")) : Y && k.ps && k.ps._invalidateThisFrame && (k.ps._invalidateThisFrame = !1, Tj(k, "ps")), y = k.vs32, O = Y ? k.ps32 : k.cs32, d = k.uv32, c = k.bs32, n = k.rs32, t = y.length / 3, q) { - var p = le(y, x.getEye(), x); - p ? (k.is = p.is, k.elementTypeUint = p.useUint32) : (k.is = null, k.elementTypeUint = null) - } - if (t) { - N = h.light, r = x.getTexture(h.image), Ll(D, E, F, h.light, h.opacity, h.reverseFlip, h.reverseColor, h.reverseCull), O ? x._batchColorDisabled ? (G.uBatchColor = !1, X.aBatchColor = !1) : (G.uBatchColor = !0, X.aBatchColor = Sl(D, P.batchColor, O, F, 4)) : (G.uBatchColor = !1, G.uDiffuse = h.color || z["color.empty"]); - var B = h.alphaTest; - G.uAlphaTest = B === Z ? z.alphaTest : B, D._blooming && !h.bloom && (G.blackout = !0), h.envmap !== Z ? (G.uUseEnvMap = !0, G.uReflectivity = h.envmap) : (G.uUseEnvMap = !1, G.uReflectivity = 0); - var U = c && !x._batchBlendDisabled; - U && (G.uBatchBlend = !0, X.aBatchBlend = Sl(D, P.batchBlend, c, F)); - var T = n && !x._batchBrightnessDisabled; - T && (G.uBatchBrightness = !0, X.aBatchBrightness = Sl(D, P.batchBrightness, n, F, 1)), d ? bi(D, E, r, h.discardSelectable, P.uv, d, h.uvOffset, h.uvScale) : bi(D), X.aPosition = Sl(D, P.vs, y, F), X.aNormal = Sl(D, P.ns, k.ns32, F), k.is ? (eo(D, P.is, k.is), os(D, 0, t, null, k.elementTypeUint ? D.UNSIGNED_INT : null)) : ie(D, 0, t), d ? Jf(D, E, r) : Jf(D), O && !x._batchColorDisabled && (G.uBatchColor = !1, X.aBatchColor = !1), U && (G.uBatchBlend = !1, X.aBatchBlend = !1), T && (G.uBatchBrightness = !1, X.aBatchBrightness = !1), D._blooming && !h.bloom && (G.blackout = !1), ol(D, E) - } - } - } - Gf(x) - } - }, - le = function (d, q, b) { - var m = d.length / 3, - h = m > 65535, - v = b._glCapabilities.elementTypeUint && h; - if (!v && h) return null; - for (var L = new Array(m), S = m / 3, A = new Array(S), T = 0; S > T; T++) A[T] = T; - A.sort(function (f, x) { - var c = 9 * f, - n = [(d[c] + d[c + 3] + 2 * d[c + 6]) / 4, (d[c + 1] + d[c + 4] + 2 * d[c + 7]) / 4, (d[c + 2] + d[c + 5] + 2 * d[c + 8]) / 4]; - c = 9 * x; - var W = [(d[c] + d[c + 3] + 2 * d[c + 6]) / 4, (d[c + 1] + d[c + 4] + 2 * d[c + 7]) / 4, (d[c + 2] + d[c + 5] + 2 * d[c + 8]) / 4], - R = En(q, n) - En(q, W); - return R > 0 ? -1 : 0 > R ? 1 : 0 - }); - for (var T = 0; S > T; T++) { - var j = 3 * T, - o = 3 * A[T]; - L[j] = o, L[j + 1] = o + 1, L[j + 2] = o + 2 - } - return { - useUint32: v, - is: v ? new Uint32Array(L) : new $m(L) - } - }, - Jh = { - obj: function (b, O) { - var x = { - mat: b.mat, - s3: b.s3, - r3: b.r3, - rotationMode: b.rotationMode, - t3: b.t3, - cube: b.cube == F ? !0 : b.cube, - center: b.center == F ? !0 : b.center, - ignoreMtls: b.ignoreMtls, - ignoreTransparent: b.ignoreTransparent, - ignoreColor: b.ignoreColor, - ignoreImage: b.ignoreImage, - ignoreNormal: b.ignoreNormal, - prefix: b.prefix, - flipY: b.flipY, - flipFace: b.flipFace, - reverseFlipMtls: b.reverseFlipMtls, - finishFunc: function (i, n) { - if (i) { - var n = []; - for (var s in i) { - var o = i[s]; - n.rawS3 = o.rawS3, o.center && (n.center = o.center), n.push(o), b.eachModel && b.eachModel(s, o) - } - n.json = b, O(n) - } else O() - } - }; - u.loadObj(b.obj, b.mtl, x) - }, bin: function (m, f) { - var d = { - finishFunc: function (M) { - M ? f(M) : f() - } - }; - u.loadBin(m.url, d) - } - }; - u.getModelTypeHandlers = function () { - return Jh - }, u.setModelTypeHandler = function (G, A) { - Jh[G] = A - }, u.getModelTypeHandler = function (A) { - return Jh[A] - }, u.handleModelLoaded = function () { }, u.handleUnfoundModel = function () { }; - var Wb = F, - pp = F, - Yi = function (T) { - Wb && !T._loadingModelView_ && (pp || (pp = {}), pp[T._loadingModelView_ = xp()] = T) - }, - Im = function (X, g) { - Wb || (Wb = {}); - var l = Wb[X]; - if (l) { - if (l.url === g) return; - l.request.onload = Mr, l.request.onerror = Mr - } - if (g.indexOf(".bin") === g.length - 4) return Ti(X, { - modelType: "bin", - url: g - }, g); - if (g = u.beforeLoadURL(g), g.data) { - var v = u.parse(g.data); - Ti(X, v, g) - } else { - var O = new De; - Wb[X] = { - request: O, - url: g - }, O.onload = function () { - if (200 === this.status || 0 === this.status) { - delete Wb[X]; - var t = u.parse(O.getResponseText()); - Ti(X, t, g) - } else Hr(X, u.handleUnfoundModel(X, g) || F) - }, O.onerror = function () { - Hr(X, u.handleUnfoundModel(X, g) || F) - }; - var Q = {}; - Q.url = encodeURI(g), Q.sync = !1, O.send(Q) - } - }, - Ti = function (X, Y, H) { - var o = Y.modelType; - if (!o) return Hr(X, Y), u.handleModelLoaded(X, Y), void 0; - var B = u.getModelTypeHandler(o); - if (B) { - if (Wb || (Wb = {}), Wb[X]) return; - Wb[X] = !0; - var R = function (l) { - l ? (Hr(X, l), u.handleModelLoaded(X, l)) : Hr(X, u.handleUnfoundModel(X, H, Y) || F) - }; - B(Y, R) - } else Hr(X, u.handleUnfoundModel(X, H, Y) || F) - }, - Hr = function (y, I) { - if (delete Wb[y], dk(I) && Gq.test(I)) return Im(y, I), void 0; - if (Zm[y] = I, wd(Wb) && (Wb = F, pp)) { - for (var T in pp) { - var p = pp[T]; - p.invalidateAll && p.invalidateAll(Z, "modelLoaded", y), p.redraw && p.redraw(), p.iv(), delete p._loadingModelView_ - } - pp = F - } - if (I && pp) - for (var T in pp) { - var p = pp[T]; - p.invalidateAll && p.invalidateAll(Z, "modelLoading", y), p.redraw && p.redraw(), p.iv() - } - }, - Vj = new fk([0, 0, 0, 1, 1, 1, 1, 0]), - Lh = new fk([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]), - ar = new $m([0, 1, 2, 2, 3, 0]), - Ef = new fk([-.5, .5, -.5, -.5, -.5, -.5, -.5, -.5, .5, -.5, .5, .5, -.5, .5, .5, -.5, -.5, .5, .5, -.5, .5, .5, .5, .5, .5, .5, .5, .5, -.5, .5, .5, -.5, -.5, .5, .5, -.5, .5, .5, -.5, .5, -.5, -.5, -.5, -.5, -.5, -.5, .5, -.5, -.5, .5, -.5, -.5, .5, .5, .5, .5, .5, .5, .5, -.5, -.5, -.5, .5, -.5, -.5, -.5, .5, -.5, -.5, .5, -.5, .5]), - Lq = new $m([0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23]), - mi = new fk([0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0]), - mn = Gb(Ef, Lq), - Rh = (new fk([-.5, .5, .5, -.5, -.5, .5, .5, -.5, .5, .5, .5, .5, .5, -.5, -.5, .5, .5, -.5, -.5, -.5, -.5, -.5, .5, -.5]), new $m([0, 1, 2, 3, 0, 7, 5, 4, 6, 7, 5, 3, 2, 4, 6, 1]), [nq, wg, fm, Qq, $c, Kd]), - sl = [-.5, .5, .5, -.5, -.5, .5, -.5, -.5, .5, .5, -.5, .5, .5, -.5, .5, .5, .5, .5, .5, .5, .5, -.5, .5, .5, -.5, .5, -.5, -.5, -.5, -.5, -.5, -.5, -.5, .5, -.5, -.5, .5, -.5, -.5, .5, .5, -.5, .5, .5, -.5, -.5, .5, -.5, .5, .5, .5, .5, .5, -.5, .5, -.5, .5, .5, -.5, -.5, -.5, .5, .5, -.5, .5, -.5, -.5, -.5, .5, -.5, -.5, -.5], - yq = [-.5, .5, .5, -.4, .5, .5, -.5, .5, .5, -.5, .4, .5, -.5, .5, .5, -.5, .5, .4, .5, .5, .5, .4, .5, .5, .5, .5, .5, .5, .4, .5, .5, .5, .5, .5, .5, .4, -.5, -.5, .5, -.4, -.5, .5, -.5, -.5, .5, -.5, -.4, .5, -.5, -.5, .5, -.5, -.5, .4, .5, -.5, .5, .4, -.5, .5, .5, -.5, .5, .5, -.4, .5, .5, -.5, .5, .5, -.5, .4, -.5, .5, -.5, -.4, .5, -.5, -.5, .5, -.5, -.5, .4, -.5, -.5, .5, -.5, -.5, .5, -.4, .5, .5, -.5, .4, .5, -.5, .5, .5, -.5, .5, .4, -.5, .5, .5, -.5, .5, .5, -.4, -.5, -.5, -.5, -.4, -.5, -.5, -.5, -.5, -.5, -.5, -.4, -.5, -.5, -.5, -.5, -.5, -.5, -.4, .5, -.5, -.5, .4, -.5, -.5, .5, -.5, -.5, .5, -.4, -.5, .5, -.5, -.5, .5, -.5, -.4], - Mi = function (H, C, s, j, c, d, F) { - d = d || 16, H = H || 16, C = C || 0, s = s || H; - var h, D, m, N, l, _, A, t, S, i = .5, - E = [], - y = [], - O = $ / H, - R = W / d; - for (h = 0; d > h; h++) - for (_ = h + 1, N = h * R, S = _ * R, D = C; s > D; D++) A = D + 1, m = D * O, t = A * O, E.push(i * n(N) * k(m), i * k(N), -i * n(N) * n(m), i * n(S) * k(t), i * k(S), -i * n(S) * n(t), i * n(N) * k(t), i * k(N), -i * n(N) * n(t), i * n(N) * k(m), i * k(N), -i * n(N) * n(m), i * n(S) * k(m), i * k(S), -i * n(S) * n(m), i * n(S) * k(t), i * k(S), -i * n(S) * n(t)), y.push(D / H, h / d, A / H, _ / d, A / H, h / d, D / H, h / d, D / H, _ / d, A / H, _ / d); - if (F) { - var G = []; - for (h = 0, l = E.length; l > h; h += 3) G.push(2 * E[h], 2 * E[h + 1], 2 * E[h + 2]) - } - if (j) { - var b = [], - T = []; - for (m = C * O, h = 0; d > h; h++) _ = h + 1, N = h * R, S = _ * R, b.push(0, 0, 0, i * n(S) * k(m), i * k(S), -i * n(S) * n(m), i * n(N) * k(m), i * k(N), -i * n(N) * n(m)), T.push(0, .5, C / H, _ / d, C / H, h / d) - } - if (c) { - var I = [], - q = []; - for (m = s * O, h = 0; d > h; h++) _ = h + 1, N = h * R, S = _ * R, I.push(0, 0, 0, i * n(N) * k(m), i * k(N), -i * n(N) * n(m), i * n(S) * k(m), i * k(S), -i * n(S) * n(m)), q.push(1, .5, s / H, h / d, s / H, _ / d) - } - var M = { - vs: E, - uv: y, - from_vs: b, - from_uv: T, - to_vs: I, - to_uv: q - }; - return F && (M.ns = G), M - }, - Or = function (j, q, N) { - j = j || .17, q = q || 12, N = N || 18, 0 > j ? j = 0 : j > .25 && (j = .25); - var B, F, A, r, m, U, l, P = .5, - b = [], - T = [], - c = [], - X = $ / N, - w = $ / q, - V = P - j; - for (F = 0; q >= F; F++) - for (r = -W + F * w, U = k(r), m = n(r), B = 0; N >= B; B++) A = B * X, l = V + j * U, b.push(k(A) * l, m * j, -n(A) * l), T.push(B / N, 1 - F / q); - for (F = 0; q > F; F++) { - var O = F * (N + 1), - E = (F + 1) * (N + 1); - for (B = 0; N > B; B++) c.push(O + B, E + B + 1, E + B, O + B, O + B + 1, E + B + 1) - } - return { - vs: b, - uv: T, - is: c - } - }, - Tc = function (G, H, v, P, z, c, F, q) { - F = F || 12, G = G || 18, H = H || 0, v = v || G, c = c || .17, 0 > c ? c = 0 : c > .25 && (c = .25); - var w, p, L, T, Q, d, l, S, f, R, m = .5, - C = [], - E = [], - A = $ / G, - r = $ / F, - s = m - c, - U = q ? [] : Z; - for (L = 0; F > L; L++) - for (T = L + 1, l = -W + L * r, S = -W + T * r, w = H; v > w; w++) p = w + 1, Q = w * A, d = p * A, f = s + c * k(l), R = s + c * k(S), C.push(k(Q) * f, n(l) * c, -n(Q) * f, k(d) * f, n(l) * c, -n(d) * f, k(d) * R, n(S) * c, -n(d) * R, k(Q) * f, n(l) * c, -n(Q) * f, k(d) * R, n(S) * c, -n(d) * R, k(Q) * R, n(S) * c, -n(Q) * R), E.push(w / G, 1 - L / F, p / G, 1 - L / F, p / G, 1 - T / F, w / G, 1 - L / F, p / G, 1 - T / F, w / G, 1 - T / F), q && U.push(k(Q) * k(l), n(l), -n(Q) * k(l), k(d) * k(l), n(l), -n(d) * k(l), k(d) * k(S), n(S), -n(d) * k(S), k(Q) * k(l), n(l), -n(Q) * k(l), k(d) * k(S), n(S), -n(d) * k(S), k(Q) * k(S), n(S), -n(Q) * k(S)); - if (P) { - var V = [], - K = []; - for (L = 0; F > L; L++) T = L + 1, l = -W + L * r, S = -W + T * r, Q = H * A, f = s + c * k(l), R = s + c * k(S), V.push(k(Q) * f, n(l) * c, -n(Q) * f, k(Q) * R, n(S) * c, -n(Q) * R, k(Q) * s, 0, -n(Q) * s), K.push(.5 + .5 * k(l), .5 - .5 * n(l), .5 + .5 * k(S), .5 - .5 * n(S), .5, .5) - } - if (z) { - var J = [], - Y = []; - for (L = 0; F > L; L++) T = L + 1, l = -W + L * r, S = -W + T * r, Q = v * A, f = s + c * k(l), R = s + c * k(S), J.push(k(Q) * f, n(l) * c, -n(Q) * f, k(Q) * s, 0, -n(Q) * s, k(Q) * R, n(S) * c, -n(Q) * R), Y.push(.5 - .5 * k(l), .5 - .5 * n(l), .5, .5, .5 - .5 * k(S), .5 - .5 * n(S)) - } - var X = { - vs: C, - uv: E, - from_vs: V, - from_uv: K, - to_vs: J, - to_uv: Y - }; - return q && (X.ns = U), X - }, - mj = function (Y, F) { - for (var R, p, s, w = .5, y = 16, I = [], m = [], u = [], D = $ / y, X = 0; y >= X; X++) R = X * D, p = k(R) * w, s = n(R) * w, I.push(p, -w, s, p, w, s), m.push(1 - X / y, 1, 1 - X / y, 0); - for (X = 0; y > X; X++) u.push(2 * X, 2 * X + 1, 2 * X + 3, 2 * X, 2 * X + 3, 2 * X + 2); - if (F) { - var d = [], - j = [], - C = []; - for (d.push(0, -w, 0), j.push(.5, .5), X = 0; y >= X; X++) R = X * D, p = k(R), s = n(R), d.push(p * w, -w, -s * w), j.push(.5 + .5 * p, .5 + .5 * s); - for (X = 0; y > X; X++) C.push(0, X + 2, X + 1) - } - if (Y) { - var b = [], - S = [], - z = []; - for (b.push(0, w, 0), S.push(.5, .5), X = 0; y >= X; X++) R = X * D, p = k(R), s = n(R), b.push(p * w, w, -s * w), S.push(.5 + .5 * p, .5 - .5 * s); - for (X = 0; y > X; X++) z.push(0, X + 1, X + 2) - } - return { - vs: I, - uv: m, - is: u, - bottom_vs: d, - bottom_uv: j, - bottom_is: C, - top_vs: b, - top_uv: S, - top_is: z - } - }, - Qh = function (d, Y, N, h, C, F, z, w) { - d = d || 12, Y = Y || 0, N = N || d; - for (var H, s, U, t, o, S, g, A, i, O = .5, V = [], L = [], q = $ / d, x = Y; N > x; x++) H = x + 1, s = x * q, U = H * q, t = k(s) * O, o = n(s) * O, S = k(U) * O, g = n(U) * O, V.push(t, -O, -o, S, -O, -g, t, O, -o, S, -O, -g, S, O, -g, t, O, -o), L.push(x / d, 1, H / d, 1, x / d, 0, H / d, 1, H / d, 0, x / d, 0); - if (w) { - var E = []; - for (x = 0, i = V.length; i > x; x += 3) E.push(2 * V[x], 0, 2 * V[x + 2]) - } - if (z) { - var B = [], - p = []; - for (x = Y; N > x; x++) s = q * x, U = q * (x + 1), t = k(s), o = n(s), S = k(U), g = n(U), B.push(t * O, -O, -o * O, 0, -O, 0, S * O, -O, -g * O), p.push(.5 + .5 * t, .5 + .5 * o, .5, .5, .5 + .5 * S, .5 + .5 * g) - } - if (F) { - var f = [], - I = []; - for (x = Y; N > x; x++) s = q * x, U = q * (x + 1), t = k(s), o = n(s), S = k(U), g = n(U), f.push(t * O, O, -o * O, S * O, O, -g * O, 0, O, 0), I.push(.5 + .5 * t, .5 - .5 * o, .5 + .5 * S, .5 - .5 * g, .5, .5) - } - if (h) { - var G = [], - J = []; - s = q * Y, t = k(s) * O, o = n(s) * O, A = Y / d, G.push(0, O, 0, 0, -O, 0, t, -O, -o, t, -O, -o, t, O, -o, 0, O, 0), J.push(0, 0, 0, 1, A, 1, A, 1, A, 0, 0, 0) - } - if (C) { - var e = [], - R = []; - s = q * N, t = k(s) * O, o = n(s) * O, A = N / d, e.push(0, -O, 0, 0, O, 0, t, O, -o, t, O, -o, t, -O, -o, 0, -O, 0), R.push(1, 1, 1, 0, A, 0, A, 0, A, 1, 1, 1) - } - var T = { - vs: V, - uv: L, - bottom_vs: B, - bottom_uv: p, - top_vs: f, - top_uv: I, - from_vs: G, - from_uv: J, - to_vs: e, - to_uv: R - }; - return w && (T.ns = E), T - }, - ce = function (e, g, Y, u, G) { - g = g || 18, Y = Y || 0, u = u == F ? $ : u, G = G == F ? .5 : G; - for (var D, h, Q, o, b, v, P = [0, .5, .75, .875, .9375], i = [], J = [], H = [], M = u / g, d = 0; d < P.length; d++) { - var E = 0 === d % 2 ? 0 : .5; - for (D = 0; g >= D; D++) h = (D + E) * M + Y, Q = 1 - P[d], i.push(k(h) * G * Q, -G + 2 * P[d] * G, -n(h) * G * Q), J.push((D + E) / g, Q) - } - for (d = 0; d < P.length - 1; d++) { - var W = d * (g + 1), - s = (d + 1) * (g + 1); - for (D = 0; g > D; D++) H.push(W + D, s + D + 1, s + D, W + D, W + D + 1, s + D + 1) - } - for (v = i.length / 3 - (g + 1), D = 0; g > D; D++) i.push(0, G, 0), J.push((D + .5) / g, 0); - for (D = 0; g > D; D++) H.push(v + D, v + D + 1, v + (g + 1) + D); - if (e) { - var x = [], - r = [], - j = []; - for (x.push(0, -G, 0), r.push(.5, .5), D = 0; g >= D; D++) h = D * M + Y, o = k(h), b = n(h), x.push(o * G, -G, -b * G), r.push(.5 + .5 * o, .5 + .5 * b); - for (D = 0; g > D; D++) j.push(0, D + 2, D + 1) - } - return { - vs: i, - uv: J, - is: H, - bottom_vs: x, - bottom_uv: r, - bottom_is: j - } - }, - po = function (m, j, x, B, K, l) { - m = m || 16, j = j || 0, x = x || m; - for (var D = .5, i = [], d = [], T = $ / m, A = j; x > A; A++) { - var p = A + 1, - O = T * A, - G = T * p; - i.push(k(O) * D, -D, -n(O) * D, k(G) * D, -D, -n(G) * D, 0, D, 0), d.push(A / m, 1, p / m, 1, (A + p) / 2 / m, 0) - } - if (l) { - var _ = [], - y = []; - for (A = j; x > A; A++) { - O = T * A, G = T * (A + 1); - var M = k(O), - L = n(O), - h = k(G), - Q = n(G); - _.push(M * D, -D, -L * D, 0, -D, 0, h * D, -D, -Q * D), y.push(.5 + .5 * M, .5 + .5 * L, .5, .5, .5 + .5 * h, .5 + .5 * Q) - } - } - if (B) { - var W = [], - s = []; - O = T * j, W.push(0, D, 0, 0, -D, 0, k(O) * D, -D, -n(O) * D), s.push(0, 0, 0, 1, j / m, 1) - } - if (K) { - var N = [], - V = []; - O = T * x, N.push(0, -D, 0, 0, D, 0, k(O) * D, -D, -n(O) * D), V.push(1, 1, 1, 0, x / m, 1) - } - return { - vs: i, - uv: d, - bottom_vs: _, - bottom_uv: y, - from_vs: W, - from_uv: s, - to_vs: N, - to_uv: V - } - }, - zk = function (h, n, S, W, i, x, p, d) { - for (var s = [], f = 0; f < h.length - 1; f += 2) s.push({ - x: h[f], - y: h[f + 1] - }); - return wf(s, n, S, W, i, x, p, d, !1) - }, - Gm = { - roundRect: function (i, B) { - return zk([.5, .4, .5, .442, .471, .471, .442, .5, .4, .5, -.4, .5, -.442, .5, -.471, .471, -.5, .442, -.5, .4, -.5, -.4, -.5, -.442, -.471, -.471, -.442, -.5, -.4, -.5, .4, -.5, .442, -.5, .471, -.471, .5, -.442, .5, -.4, .5, .4], [1, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2], i, B, 3) - }, star: function (j, T) { - return zk([.193, .079, .333, .5, 0, .233, -.333, .5, -.194, .079, -.5, -.167, -.112, -.167, 0, -.5, .111, -.167, .5, -.167], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5], j, T) - }, rect: function (X, M) { - return zk([.5, -.5, .5, .5, -.5, .5, -.5, -.5], [1, 2, 2, 2, 5], X, M) - }, billboard: function () { - return { - vs: [-.5, .5, 0, -.5, -.5, 0, .5, .5, 0, .5, .5, 0, -.5, -.5, 0, .5, -.5, 0], - uv: [0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1], - ns: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1] - } - }, plane: function () { - return { - vs: [-.5, 0, -.5, -.5, 0, .5, .5, 0, -.5, .5, 0, -.5, -.5, 0, .5, .5, 0, .5], - uv: [0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1], - ns: [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0] - } - }, triangle: function (N, D) { - return zk([0, -.5, .5, .5, -.5, .5], [1, 2, 2, 5], N, D) - }, rightTriangle: function (g, c) { - return zk([.5, .5, -.5, .5, -.5, -.5], [1, 2, 2, 5], g, c) - }, parallelogram: function (Q, V) { - return zk([.5, -.5, .25, .5, -.5, .5, -.25, -.5], [1, 2, 2, 2, 5], Q, V) - }, trapezoid: function (l, P) { - return zk([.25, -.5, .5, .5, -.5, .5, -.25, -.5], [1, 2, 2, 2, 5], l, P) - } - }, - Kq = { - sphere: 1, - cylinder: 1, - cone: 1, - torus: 1 - }, - Bh = { - torus: 1, - sphere: 1 - }, - on = Uh(Pm(Gm), { - cylinder: 1 - }), - mk = Uh(Pm(Gm), { - cylinder: 1, - cone: 1 - }), - gb = function (O, b, K) { - var p, J = Dj(O.anchor3d, K, b), - W = Dj(O.mat, K, b), - Z = Dj(O.s3, K, b), - Y = Dj(O.t3, K, b), - l = Dj(O.r3, K, b), - y = Z || l || Y || W; - if (J || y) { - p = Ql(b._6O); - var N = y ? Jn(W, Z, l, Dj(O.rotationMode, K, b), Y) : kn(); - J && bo(N, [.5 - J[0], .5 - J[1], .5 - J[2]]), gk(b, N) - } - return p - }, - pj = function (L, Z, N, j, v, l, X) { - if (ip(N)) N.forEach(function (k) { - pj(L, Z, k, j, v, l, X) - }); - else if (dk(N)) pj(L, Z, bf(j, N), j, v, l, X); - else if (xl(N)) - if (N.shape3d) { - var q = gb(N, L, Z); - pj(L, Z, N.shape3d, j, v, l, N), q && Gf(L, q) - } else As(L, Z, N, j.s, v, l, X) - }, - As = function (w, J, M, e, K, d, N) { - if (N = N || Xn, !d || d(e("shape3d.transparent", M.transparent, N.transparent))) { - var V = gb(M, w, J); - if (ko(M)) { - var a = w.getData3dUI(J); - a.dispatchBoundingBoxChanged() - } - var c = w._26I, - Z = w._prg, - r = w._buffer, - h = e("shape3d.color", M.color, N.color); - K || (K = e("shape3d.blend", M.blend, N.blend)); - var U, R = M.opacity == F ? N.opacity : M.opacity, - p = e("shape3d.opacity"); - U = p != F && R != F ? R * p : R != F ? R : p, Ll(c, Z, K, e("shape3d.light", M.light, N.light), U, e("shape3d.reverse.flip", M.reverseFlip, N.reverseFlip), e("shape3d.reverse.color", M.reverseColor, N.reverseColor), e("shape3d.reverse.cull", M.reverseCull, N.reverseCull)); - var z = e("polygonOffset", M.polygonOffset, N.polygonOffset); - M.vs && e(lm, M.visible, N.visible) && Cs(c, Z, r, h, w.getTexture(e("shape3d.image", M.image, N.image), J), e("shape3d.discard.selectable", M.discardSelectable, N.discardSelectable), M.vs, M.uv, M.ns, M.is, e("shape3d.uv.offset", M.uvOffset, N.uvOffset), e("shape3d.uv.scale", M.uvScale, N.uvScale), z), M.top_vs && e(Je, M.topVisible, N.topVisible) && Cs(c, Z, r, e("shape3d.top.color", M.topColor, N.topColor) || h, w.getTexture(e("shape3d.top.image", M.topImage, N.topImage), J, "top"), e("shape3d.top.discard.selectable", M.topDiscardSelectable, N.topDiscardSelectable), M.top_vs, M.top_uv, M.top_ns, M.top_is, e("shape3d.top.uv.offset", M.topUvOffset, N.topUvOffset), e("shape3d.top.uv.scale", M.topUvScale, N.topUvScale), z), M.bottom_vs && e(Ho, M.bottomVisible, N.bottomVisible) && Cs(c, Z, r, e("shape3d.bottom.color", M.bottomColor, N.bottomColor) || h, w.getTexture(e("shape3d.bottom.image", M.bottomImage, N.bottomImage), J, "bottom"), e("shape3d.bottom.discard.selectable", M.bottomDiscardSelectable, N.bottomDiscardSelectable), M.bottom_vs, M.bottom_uv, M.bottom_ns, M.bottom_is, e("shape3d.bottom.uv.offset", M.bottomUvOffset, N.bottomUvOffset), e("shape3d.bottom.uv.scale", M.bottomUvScale, N.bottomUvScale), z), M.from_vs && e(Rb, M.fromVisible, N.fromVisible) && Cs(c, Z, r, e("shape3d.from.color", M.fromColor, N.fromColor) || h, w.getTexture(e("shape3d.from.image", M.fromImage, N.fromImage), J, "from"), e("shape3d.from.discard.selectable", M.fromDiscardSelectable, N.fromDiscardSelectable), M.from_vs, M.from_uv, M.from_ns, M.from_is, e("shape3d.from.uv.offset", M.fromUvOffset, N.fromUvOffset), e("shape3d.from.uv.scale", M.fromUvScale, N.fromUvScale), z), M.to_vs && e(xh, M.toVisible, N.toVisible) && Cs(c, Z, r, e("shape3d.to.color", M.toColor, N.toColor) || h, w.getTexture(e("shape3d.to.image", M.toImage, N.toImage), J, "to"), e("shape3d.to.discard.selectable", M.toDiscardSelectable, N.toDiscardSelectable), M.to_vs, M.to_uv, M.to_ns, M.to_is, e("shape3d.to.uv.offset", M.toUvOffset, N.toUvOffset), e("shape3d.to.uv.scale", M.toUvScale, N.toUvScale), z), ol(c, Z), V && Gf(w, V) - } - }, - Cs = function (V, x, y, O, o, r, g, A, j, G, $, m, P) { - if (g) { - P && Ik(V, P); - var d = ts.for(V), - S = d.directUniforms(), - C = d.directAttribs(); - S.uDiffuse = O || z["color.empty"], A ? bi(V, x, o, r, y.uv, A, $, m) : bi(V), C.aPosition = Sl(V, y.vs, g, F), C.aNormal = Sl(V, y.ns, j, F), G ? (ym(V, y.is, G), os(V, 0, G.length, null, G instanceof Uint32Array ? V.UNSIGNED_INT : null)) : ie(V, 0, g.length / 3), A ? Jf(V, x, o) : Jf(V), P && rd(V) - } - }, - bf = function (C, e) { - var S = C.s; - if (e || (e = S(Lm)), !e) return F; - var U = vf(e); - if (U) return U; - if ("text" === e) { - var w = { - amount: S("shape3d.text.amount"), - size: S("shape3d.text.size"), - font: S("shape3d.text.font"), - style: S("shape3d.text.style"), - weight: S("shape3d.text.weight"), - fill: S("shape3d.text.fill"), - curveSegments: S("shape3d.text.curveSegments"), - spacing: S("shape3d.text.spacing") - }, - o = C.gv.getShape3dText(C.data), - p = o; - for (var c in w) p += "_" + (w[c] === Z ? "U" : w[c]); - return C._cachedTextKey === p ? C._cachedTextGeometry : (C._cachedTextKey = p, C._cachedTextGeometry = u.createTextGeometry(o, w)) - } - var c = e; - if (Kq[e]) { - var R = S("shape3d.side"), - d = S("shape3d.side.from"), - y = S("shape3d.side.to"), - t = S(Rb), - O = S(xh); - 3 > R ? (R = 0, d = 0, y = 0, t = !1, O = !1) : ((d == F || 0 > d) && (d = 0), (y == F || y > R) && (y = R), 0 === d && y === R && (t = !1, O = !1)); - var G = "cone" === e ? !1 : S("shape3d.smooth"); - c += "-" + R + "-" + d + "-" + y + "-" + t + "-" + O + (G ? 1 : 0) - } - if (on[e]) { - var N = S(Je); - c += "-" + N - } - if (mk[e]) { - var i = S(Ho); - c += "-" + i - } - if ("torus" === e) { - var s = S("shape3d.torus.radius"); - 0 > s ? s = 0 : s > .25 && (s = .25), c += "-" + s - } - if (Bh[e]) { - var T = S(cp); - c += "-" + T - } - return U = Mq[c], U || ("box" === e ? U = u.createBoxModel() : Gm[e] ? U = Gm[e](N, i) : "sphere" === e ? U = u.createSphereModel(R, d, y, t, O, T, G) : e === xk ? U = u.createCylinderModel(R, d, y, t, O, N, i, G) : "cone" === e ? U = u.createConeModel(R, d, y, t, O, i) : "torus" === e && (U = u.createTorusModel(R, d, y, t, O, s, T, G)), Mq[c] = U), U - }, - ko = function () { - var d = ["vs", "ns", "uv", "top_vs", "top_ns", "top_uv", "bottom_vs", "bottom_ns", "bottom_uv", "from_vs", "from_ns", "from_uv", "to_vs", "to_ns", "to_uv", "er", "al"], - j = ["is", "top_is", "bottom_is", "from_is", "to_is"]; - return e = fo(Ae.substr(Ae.indexOf("^#") + 2)), xf(u[kp(fj + d[15] + "n" + d[16])]()) && Fb() ? function (o) { - return o && !o._complete_ ? (o._complete_ = !0, o.vs && Ro(o.ns) && (o.ns = Gb(o.vs, o.is), o.boundingBox = Z), o.top_vs && Ro(o.top_ns) && (o.top_ns = Gb(o.top_vs, o.top_is), o.top_boundingBox = Z), o.bottom_vs && Ro(o.bottom_ns) && (o.bottom_ns = Gb(o.bottom_vs, o.bottom_is), o.bottom_boundingBox = Z), o.from_vs && Ro(o.from_ns) && (o.from_ns = Gb(o.from_vs, o.from_is), o.from_boundingBox = Z), o.to_vs && Ro(o.to_ns) && (o.to_ns = Gb(o.to_vs, o.to_is), o.to_boundingBox = Z), d.forEach(function (U) { - var L = o[U]; - ip(L) && (o[U] = new fk(L)) - }), j.forEach(function (T) { - var t = o[T]; - ip(t) && (o[T] = new $m(t)) - }), !0) : !1 - } : void 0 - }(), - ed = function (i, A) { - var l = i[A]; - ip(l) && (i[A] = new fk(l)) - }; - Uh(fb, { - _25Q: function (E) { - E._16O = function (L, v, H, M, p, N, X, g, l) { - var o = this.info; - if (o) { - var m, R, u, h, _, V, C = kn(); - if (nk[v] ? (m = o.p3, R = o.c1, u = o.c2) : Ym[v] ? (R = o.s1 || o.c1, u = o.s2 || o.c2) : (R = o.t1 || o.c1, u = o.t2 || o.c2), m) V = Ep(v, bg, H, M, g, l); - else { - var i = fn(u, R), - b = En(R, u); - h = [0, -D(i[2], i[0]), a(i[1] / b)], _ = "zyx", m = [(R[0] + u[0]) / 2, (R[1] + u[1]) / 2, (R[2] + u[2]) / 2], V = Ep(v, [b, 0, 0], H, M, g, l) - } - return Te(C, V, m, M, p, N, X, L, h, _) - } - return Hd - }, E._80o = function (S, L, R) { - var e = this, - $ = e.shapeModel; - if ($) { - var x = e.gv; - gk(x), pj(x, e.data, $, e, e.getBodyColor(), R) - } - }, E.createLineModel = function (y, I, k, g, s) { - var U = this, - h = U.s, - H = vh(y, I, h(cp)), - m = h(g + ".color"); - if (m) { - for (var l = [], o = 0; o < H.length; o++) { - var X = H[o], - z = X.length; - if (z > 1) { - var K = X[0]; - l.push(K.x, K.y, K.z); - for (var E = 1; z - 1 > E; E++) K = X[E], l.push(K.x, K.y, K.z), l.push(K.x, K.y, K.z); - K = X[z - 1], l.push(K.x, K.y, K.z) - } - } - var i, u, D, c = h(s), - W = 0; - c && (u = h(s + ".color"), i = h(s + ".pattern"), W = h(s + ".offset"), D = m), mg(U.gv, U.data, l, u || m, D ? F : h(g + ".gradient.color"), k, i || h(g + ".pattern"), W, D) - } - return H - }, E.createTubeModel = function (D, v, t, q) { - for (var C = this, a = C.s, c = a("shape3d.side") || rr, J = a("shape3d.start.angle"), X = a("shape3d.sweep.angle"), W = a(Je) ? a("shape3d.top.cap") : F, d = a(Ho) ? a("shape3d.bottom.cap") : F, K = "flat" === W, p = "flat" === d, N = K && (q ? q.uv : a("shape3d.top.image")), I = p && (q ? q.uv : a("shape3d.bottom.image")), Y = q ? q.uv : a("shape3d.image"), x = a("shape3d.smooth"), g = { - vs: [], - uv: Y ? [] : F, - ns: x ? [] : F, - top_vs: K ? [] : F, - top_uv: N ? [] : F, - bottom_vs: p ? [] : F, - bottom_uv: I ? [] : F - }, k = vh(D, v, a(cp), t), M = 0, O = k.length; O > M; M++) Ke(g, k[M], a(Sn), t, c, J, X, W, d); - if (q) { - var u = []; - km(C.gv, C.data, g, C, C.getBodyColor(), C.mat ? [C.mat] : [], q, u), u.length && (gc(q.vs, u), gc(q.ns, Gb(u))) - } else C.shapeModel = g; - return k - }, E.getCache = function () { - var p = this.info; - if (p) { - var b = p.list; - if (b) { - var h = p.cache; - return h || (h = p.cache = we(b)), h - } - } - return F - } - } - }); - var Qd = function (Q, V) { - for (var f, U = 0, Y = Q.length, q = 0, Z = Y - 1; Z >= q;) - if (U = T(q + (Z - q) / 2), f = Q[U].length - V, 0 > f) q = U + 1; - else { - if (!(f > 0)) { - Z = U; - break - } - Z = U - 1 - } - U = Z; - var F = Q[U], - c = F.point; - return U === Y - 1 || F.length === V || (c = (new pe).subVectors(Q[U + 1].point, c).normalize().multiplyScalar(V - F.length).add(c)), { - point: c, - tangent: F.tangent - } - }, - we = function (u) { - for (var A, h, F = [], f = 0, e = 0; e < u.length; e++) { - for (var T = u[e], M = 0; M < T.length; M++) { - A = T[M], h && (f += h.distanceTo(A)); - var z = new pe, - I = T[M + 1]; - I ? z.subVectors(I, A) : h ? z.subVectors(A, h) : z.x = 1, z.normalize(), F.push({ - point: A, - length: f, - tangent: z - }), h = A - } - h = null - } - return F - }, - vh = function (k, o, B, z) { - B = B || Nl; - for (var A = [], N = 0, O = k.size(); O > N; N++) { - var X = k.get(N); - A.push(new pe(X.x, X.e || 0, X.y)) - } - o && (Xo(o) && (o = o._as), o.length || (o = null)); - for (var L, J, W, b, M, l = [], S = 0, e = 0, H = o ? o.length : O; H > e; e++) - if (M = o ? o[e] : 0 === e ? 1 : 2, 1 === M) l.push(W = []), W.push(A[S++]); - else if (2 === M || 5 === M) - if (b = 2 === M ? A[S++] : W[0], z) { - var u = o ? o[e + 1] : H > e + 1 ? 2 : F; - if (2 === u || 5 === u) { - var K = W[W.length - 1], - g = 2 === u ? A[S] : W[0], - w = (new pe).subVectors(K, b), - h = (new pe).subVectors(g, b), - p = w.length(), - D = h.length(); - if (p && D) - if (z > p / 2 && z > D / 2) W.push(b); - else - for (w.multiplyScalar(V(z, p / 2) / p).add(b), h.multiplyScalar(V(z, D / 2) / D).add(b), L = new Cb(w, b, h).getPoints(B), J = 0; B >= J; J++) W.push(L[J]) - } else W.push(b) - } else W.push(b); - else if (3 === M) - for (L = new Cb(W[W.length - 1], A[S++], A[S++]).getPoints(B), J = 1; B >= J; J++) W.push(L[J]); - else if (4 === M) - for (L = new th(W[W.length - 1], A[S++], A[S++], A[S++]).getPoints(B), J = 1; B >= J; J++) W.push(L[J]); - return l - }, - ab = function (N) { - for (var R, W, B = new pe, o = [], b = [], J = [], M = 0, V = N.length; V > M; M++) R = N[M], W = N[M + 1], W ? B.subVectors(W, R) : B.subVectors(R, N[M - 1]), o.push(B.normalize().clone()); - var i, I, A, F, O = new pe, - k = new pe, - P = new wl, - C = 1e-4, - G = Number.MAX_VALUE, - g = o[0], - h = b[0] = new pe, - Q = J[0] = new pe; - for (I = X(g.x), A = X(g.y), F = X(g.z), G >= I && (G = I, O.set(1, 0, 0)), G >= A && (G = A, O.set(0, 1, 0)), G >= F && O.set(0, 0, 1), k.crossVectors(g, O).normalize(), h.crossVectors(g, k), Q.crossVectors(g, h), M = 1; V > M; M++) b[M] = b[M - 1].clone(), J[M] = J[M - 1].clone(), k.crossVectors(o[M - 1], o[M]), k.length() > C && (k.normalize(), i = c(re(o[M - 1].dot(o[M]), -1, 1)), b[M].applyMatrix4(P.makeRotationAxis(k, i))), J[M].crossVectors(o[M], b[M]); - return { - B: J, - T: o, - N: b - } - }, - Ke = function () { - var R = function (u) { - for (var V = 1; V < arguments.length; V++) { - var E = arguments[V]; - u.push(E.x, E.y, E.z) - } - }, - l = function (V) { - for (var Q = 1; Q < arguments.length; Q++) { - var u = arguments[Q].uv; - V.push(u[0], u[1]) - } - }, - P = function (n) { - for (var O = 1; O < arguments.length; O++) { - var H = arguments[O].ns; - n.push(H[0], H[1], H[2]) - } - }, - O = function (S, o, u, A, e) { - var P = -A * k(e), - L = A * n(e); - return new pe(S.x + P * u.x + L * o.x, S.y + P * u.y + L * o.y, S.z + P * u.z + L * o.z) - }, - o = function (M, R, X, s, t, x, l, q, w) { - l = l || $; - for (var C, r = [], A = l / t, C = w ? new tl : F, T = 0; t >= T; T++) { - var I = O(M, R, X, s, T * A + x); - r.push(I), q != F && (I.uv = [q, 1 - T / t]), w && (I.ns = C.subVectors(I, M).normalize().toArray()) - } - return r - }, - y = function (o, g, A, B, i, N, s, y, Q) { - Q = Q || $; - var u = g ? o.top_vs : o.bottom_vs; - if (u) - for (var e = g ? o.top_uv : o.bottom_uv, r = Q / s, _ = 0; s > _; _++) { - var q, U; - g ? (q = _ * r + y, U = (_ + 1) * r + y) : (U = _ * r + y, q = (_ + 1) * r + y), R(u, O(A, B, i, N, q), O(A, B, i, N, U), A), e && e.push(.5 - .5 * k(q), .5 - .5 * n(q), .5 - .5 * k(U), .5 - .5 * n(U), .5, .5) - } - }; - return function (G, a, q, f, e, L, I, h, z) { - var x = a.length; - if (x > 1) { - var H, B, p, j, O, Q, W, m = ab(a), - C = m.T, - t = m.N, - n = m.B; - "flat" === h && y(G, !0, a[0], n[0], t[0], f, e, L, I), "flat" === z && y(G, !1, a[x - 1], n[x - 1], t[x - 1], f, e, L, I); - var D, J, r = [], - X = s(e / 2), - S = "round" === h, - g = "round" === z, - k = a[0], - $ = C[0], - U = n[0], - v = t[0], - K = a[x - 1], - _ = C[x - 1], - E = n[x - 1], - u = t[x - 1]; - if (S) { - for (p = 1; X >= p; p++) t.splice(0, 0, v), n.splice(0, 0, U), C.splice(0, 0, $), J = -p / X * f, a.splice(0, 0, $.clone().multiplyScalar(J).add(k)), r[X - p] = w(f * f - J * J); - x += X - } - if (g) { - for (p = 1; X >= p; p++) t.push(u), n.push(E), C.push(_), J = p / X * f, a.push(_.clone().multiplyScalar(J).add(K)), r[a.length - 1] = w(f * f - J * J); - x += X - } - if (G.uv) { - var V = 0, - i = 0, - N = []; - for (q && (V = q), O = a[0], N[0] = 0, p = 1; x > p; p++) j = a[p], N[p] = O.distanceTo(j), O = j, q || (V += N[p]); - for (D = [], p = 0; x > p; p++) i += N[p], D[p] = V ? i / V : 0 - } - var c = G.ns ? !0 : !1; - for (p = 0; x > p; p++) { - if (j = a[p], Q = n[p], W = t[p], H = o(j, Q, W, r[p] === Z ? f : r[p], e, L, I, D ? D[p] : F, c), B) - for (var M = 0; e > M; M++) { - var T = B[M], - d = B[M + 1] || B[0], - A = H[M], - Y = H[M + 1] || H[0]; - R(G.vs, d, T, A, A, Y, d), G.uv && l(G.uv, d, T, A, A, Y, d), c && P(G.ns, d, T, A, A, Y, d) - } - B = H - } - } - } - }(); - Uh(u, { - getLineLength: function (v) { - return v[v.length - 1].length - }, getLineOffset: function (Y, E) { - return Qd(Y, E) - }, getLineCacheInfo: function (d, o, f, e) { - return we(vh(d, o, f, e)) - } - }); - var Cm = O.graph3d.RenderLite = {}, - oc = new Array(0), - Pb = Cm.Buffer = function (w, R, v, E) { - this.gl = w, this.buffer = w.createBuffer(), this.type = R || w.ARRAY_BUFFER, this.drawType = E || w.STATIC_DRAW, this.data = oc, v && this.upload(v) - }; - Pb.prototype.upload = function (e, R, o) { - o || this.bind(); - var H = this.gl; - e = e || this.data, R = R || 0, this.data.byteLength >= e.byteLength ? H.bufferSubData(this.type, R, e) : H.bufferData(this.type, e, this.drawType), this.data = e - }, Pb.prototype.bind = function () { - var D = this.gl; - D.bindBuffer(this.type, this.buffer) - }, Pb.createVertexBuffer = function (a, N, S) { - return new Pb(a, a.ARRAY_BUFFER, N, S) - }, Pb.createIndexBuffer = function (v, p, B) { - return new Pb(v, v.ELEMENT_ARRAY_BUFFER, p, B) - }, Pb.create = function (S, m, G, R) { - return new Pb(S, m, R) - }, Pb.prototype.destroy = function () { - this.gl.deleteBuffer(this.buffer) - }; - var ue = Cm.Shader = function (K, I, o) { - this.gl = K, this.program = tr(K, I, o), this.attributes = Ne(K, this.program); - var b = fd(K, this.program); - this.uniforms = jo(K, b) - }; - ue.prototype.bind = function () { - this.gl.useProgram(this.program) - }, ue.prototype.destroy = function () { - this.gl - }; - var tr = function (P, B, Y) { - var l = ks(P, P.VERTEX_SHADER, B), - e = ks(P, P.FRAGMENT_SHADER, Y); - P.getShaderParameter(e, P.COMPILE_STATUS) || console.error(P.getError()); - var c = P.createProgram(); - return P.attachShader(c, l), P.attachShader(c, e), P.linkProgram(c), P.getProgramParameter(c, P.LINK_STATUS) || (console.error("Error: Could not initialize shader."), console.error("gl.VALIDATE_STATUS", P.getProgramParameter(c, P.VALIDATE_STATUS)), console.error("gl.getError()", P.getError()), "" !== P.getProgramInfoLog(c) && console.warn("Warning: gl.getProgramInfoLog()", P.getProgramInfoLog(c)), P.deleteProgram(c), c = null), P.deleteShader(l), P.deleteShader(e), c - }, - ks = function (E, C, A) { - var f = E.createShader(C); - return E.shaderSource(f, A), E.compileShader(f), E.getShaderParameter(f, E.COMPILE_STATUS) ? f : (console.log(E.getShaderInfoLog(f)), null) - }, - fd = function (z, Q) { - for (var t = {}, d = z.getProgramParameter(Q, z.ACTIVE_UNIFORMS), V = 0; d > V; V++) { - var C = z.getActiveUniform(Q, V), - r = C.name.replace(/\[.*?\]/, ""), - L = uf(z, C.type); - t[r] = { - type: L, - size: C.size, - location: z.getUniformLocation(Q, r), - value: bq(L, C.size) - } - } - return t - }, - Ne = function (w, e) { - for (var B = {}, k = w.getProgramParameter(e, w.ACTIVE_ATTRIBUTES), D = 0; k > D; D++) { - var m = w.getActiveAttrib(e, D), - K = uf(w, m.type); - B[m.name] = { - type: K, - size: Ai(K), - gl: w, - location: w.getAttribLocation(e, m.name), - pointer: vj - } - } - return B - }, - vj = function (p, v, T, d, t) { - var D = this.gl; - D.enableVertexAttribArray(this.location), p instanceof Cm.Buffer || (p = Cm.Buffer.createVertexBuffer(D, p)), D.bindBuffer(p.type, p.buffer), D.vertexAttribPointer(this.location, this.size, v || D.FLOAT, T || !1, d || 0, t || 0) - }, - Ai = function (V) { - return Rr[V] - }, - Rr = { - "float": 1, - vec2: 2, - vec3: 3, - vec4: 4, - "int": 1, - ivec2: 2, - ivec3: 3, - ivec4: 4, - bool: 1, - bvec2: 2, - bvec3: 3, - bvec4: 4, - mat2: 4, - mat3: 9, - mat4: 16, - sampler2D: 1 - }, - uf = function (R, H) { - if (!Ld) { - var E = o.keys(Pj); - Ld = {}; - for (var m = 0; m < E.length; ++m) { - var W = E[m]; - Ld[R[W]] = Pj[W] - } - } - return Ld[H] - }, - Ld = null, - Pj = { - FLOAT: "float", - FLOAT_VEC2: "vec2", - FLOAT_VEC3: "vec3", - FLOAT_VEC4: "vec4", - INT: "int", - INT_VEC2: "ivec2", - INT_VEC3: "ivec3", - INT_VEC4: "ivec4", - BOOL: "bool", - BOOL_VEC2: "bvec2", - BOOL_VEC3: "bvec3", - BOOL_VEC4: "bvec4", - FLOAT_MAT2: "mat2", - FLOAT_MAT3: "mat3", - FLOAT_MAT4: "mat4", - SAMPLER_2D: "sampler2D" - }, - bq = function (O, r) { - switch (O) { - case "float": - return 0; - case "vec2": - return new Float32Array(2 * r); - case "vec3": - return new Float32Array(3 * r); - case "vec4": - return new Float32Array(4 * r); - case "int": - case "sampler2D": - return 0; - case "ivec2": - return new Int32Array(2 * r); - case "ivec3": - return new Int32Array(3 * r); - case "ivec4": - return new Int32Array(4 * r); - case "bool": - return !1; - case "bvec2": - return so(2 * r); - case "bvec3": - return so(3 * r); - case "bvec4": - return so(4 * r); - case "mat2": - return new Float32Array([1, 0, 0, 1]); - case "mat3": - return new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); - case "mat4": - return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]) - } - }, - so = function (T) { - for (var O = new Array(T), y = 0; y < O.length; y++) O[y] = !1; - return O - }, - jo = function (H, C) { - var k = { - data: {} - }; - k.gl = H; - for (var z = o.keys(C), c = 0; c < z.length; c++) { - var e = z[c], - i = e.split("."), - D = i[i.length - 1], - T = mr(i, k), - F = C[e]; - T.data[D] = F, T.gl = H, o.defineProperty(T, D, { - get: id(D), - set: jk(D, F) - }) - } - return k - }, - id = function (n) { - var U = Op.replace("%%", n); - return new Function(U) - }, - jk = function (o, F) { - var C, D = im.replace(/%%/g, o); - return C = 1 === F.size ? Lb[F.type] : Ac[F.type], C && (D += "\nthis.gl." + C + ";"), new Function("value", D) - }, - mr = function (b, n) { - for (var x = n, S = 0; S < b.length - 1; S++) { - var Q = x[b[S]] || { - data: {} - }; - x[b[S]] = Q, x = Q - } - return x - }, - Op = ["return this.data.%%.value;"].join("\n"), - im = ["this.data.%%.value = value;", "var location = this.data.%%.location;"].join("\n"), - Lb = { - "float": "uniform1f(location, value)", - vec2: "uniform2f(location, value[0], value[1])", - vec3: "uniform3f(location, value[0], value[1], value[2])", - vec4: "uniform4f(location, value[0], value[1], value[2], value[3])", - "int": "uniform1i(location, value)", - ivec2: "uniform2i(location, value[0], value[1])", - ivec3: "uniform3i(location, value[0], value[1], value[2])", - ivec4: "uniform4i(location, value[0], value[1], value[2], value[3])", - bool: "uniform1i(location, value)", - bvec2: "uniform2i(location, value[0], value[1])", - bvec3: "uniform3i(location, value[0], value[1], value[2])", - bvec4: "uniform4i(location, value[0], value[1], value[2], value[3])", - mat2: "uniformMatrix2fv(location, false, value)", - mat3: "uniformMatrix3fv(location, false, value)", - mat4: "uniformMatrix4fv(location, false, value)", - sampler2D: "uniform1i(location, value)" - }, - Ac = { - "float": "uniform1fv(location, value)", - vec2: "uniform2fv(location, value)", - vec3: "uniform3fv(location, value)", - vec4: "uniform4fv(location, value)", - "int": "uniform1iv(location, value)", - ivec2: "uniform2iv(location, value)", - ivec3: "uniform3iv(location, value)", - ivec4: "uniform4iv(location, value)", - bool: "uniform1iv(location, value)", - bvec2: "uniform2iv(location, value)", - bvec3: "uniform3iv(location, value)", - bvec4: "uniform4iv(location, value)", - sampler2D: "uniform1iv(location, value)" - }, - _r = function (g) { - function J(I) { - if ("string" != typeof I) return 0 | I; - switch (I) { - case "low": - return 512; - case "medium": - return 1024; - case "ultra": - return 4096; - default: - return 2048 - } - } - var N = this; - N.enable = !1; - var j, o, P = u.graph3dViewShadowType, - t = u.graph3dViewShadowIntensity, - I = u.graph3dViewShadowBias, - q = u.graph3dViewShadowQuality, - e = u.graph3dViewShadowRadius, - T = u.graph3dViewShadowDegreeX, - B = u.graph3dViewShadowDegreeZ, - L = 1, - U = J(q), - r = !1, - H = new O.Math.Matrix4, - X = new O.Math.Matrix4, - C = N.pvMatrix = new O.Math.Matrix4; - N.render = function () { - if (!g._picking && N.enable) { - var o = g.getGL(); - if (o) { - r && N.setupShadowCamera(), g._glCapabilities && (U = Math.min(U, g._glCapabilities.maxTextureSize)), N.map ? j.setSize(U, U) : j = N.map = new fq(g, g.getGL(), 0, 0, { - samples: 1, - minFilter: Ah.NEAREST, - magFilter: Ah.NEAREST, - width: U, - height: U - }), o._shadowShader || (o._shadowShader = new Cm.Shader(o, _r.shaderSrc.vs, _r.shaderSrc.fs)); - var V = g._frameState, - O = V.renderState.glState; - O.blend.enabled = !1, O.depth.enabled = !0, O.depth.mask = !0; - var l = O.color.clear.slice(0); - qe(o, [1, 1, 1, 1]), V.renderState.useProgram(o._shadowShader.program), R(), qe(o, l) - } - } - }, N.getShadow = function () { - var Z = { - degreeX: T, - degreeZ: B, - intensity: t, - quality: q, - type: P, - radius: e, - bias: I - }; - return 1 !== L && (Z.boundExtend = L), Z - }, N.setShadow = function (l, v) { - l = !!l; - var E = N.enable !== l; - N.enable = l, "object" == typeof v && (v.intensity !== Z && (t = v.intensity), v.bias !== Z && (I = v.bias), v.radius !== Z && (e = v.radius), v.degreeX !== Z && (T = v.degreeX), v.degreeZ !== Z && (B = v.degreeZ), v.quality !== Z && (q = v.quality), v.type !== Z && P !== v.type && (P = v.type, E = !0), U = J(q), v.boundExtend !== Z && (L = v.boundExtend)), l && N.setupShadowCamera(), E && Vo(g), g.iv() - }, N.refresh = function () { - this.enable && (this.setupShadowCamera(), g.iv()) - }, N.tryUpdateBounding = function (i) { - var J = this.boundingSphere; - if (J) { - var h = (new br).fromArray(sj(i, g.getMat(i))), - l = i.getAnchor3d(), - K = new tl; - J.containsPoint(K.set(0 - l.x, 0 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(0 - l.x, 0 - l.y, 1 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(0 - l.x, 1 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(0 - l.x, 1 - l.y, 1 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 0 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 0 - l.y, 1 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 1 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 1 - l.y, 1 - l.z).applyMatrix4(h)) || N.setupShadowCamera() - } - }, N.createShadow = function (K) { - K || (K = g._frameState.renderState.directUniforms()), K.shadowMatrix = C.toArray(), K.shadowMap = j.texture, K.shadowSize = [j.width, j.height], K.shadowIntensity = t, K.shadowBias = I, K.shadowRadius = e - }, N.genShaderDefine = function () { - var y = "#define USE_SHADOWMAP\n"; - return "hard" === P ? y += "#define SHADOWMAP_TYPE_PCF\n" : "soft" === P && (y += "#define SHADOWMAP_TYPE_PCF_SOFT\n"), y - }; - var D; - N.setupShadowCamera = function () { - o || (o = N.boundingSphere = new O.Math.Sphere), r = !1; - var $, K, F = g.getBoundingBox(g.dm().toDatas(function (V) { - return V.s("shadow.cast") && g.isVisible(V) - })); - F ? ($ = new tl(F.min), K = new tl(F.max)) : ($ = new tl(-256, -256, -256), K = new tl(256, 256, 256), r = !0), o.set($.clone().add(K).multiplyScalar(.5), .5 * $.distanceTo(K) * L); - var y, v = o.radius, - p = g.getBoundingBox(g.dm().toDatas(function (q) { - return (q.s("shadow.cast") || q.s("shadow.receive")) && g.isVisible(q) - })); - if (p) { - $.copy(p.min), K.copy(p.max); - var U = .5 * $.distanceTo(K); - y = U + Math.min(U, v + o.center.distanceTo($.add(K).multiplyScalar(.5))) - } else y = 2 * v; - D = lk(kn(), -v, v, -v, v, y / 1e3, y), C.set(.5, 0, 0, .5, 0, .5, 0, .5, 0, 0, .5, .5, 0, 0, 0, 1), C.multiply(H.fromArray(D)); - var b = Math.tan(-T * Math.PI / 180), - l = Math.tan(-B * Math.PI / 180), - Y = v / Math.sqrt(b * b + l * l + 1), - s = new tl(Y * b, Y, Y * l); - H.lookAt(s, new tl(0, 0, 0), new tl(0, 1, 0)).setPosition(s.add(o.center)), H.getInverse(H), C.multiply(H) - }; - var R = function () { - var P = g.getGL(), - f = U, - M = U; - j.setSize(P, f, M), j.bind(P), P.clear(Ah.COLOR_BUFFER_BIT | Ah.DEPTH_BUFFER_BIT); - var l = g._frameState, - w = l.renderState, - I = w.directUniforms(), - C = w.directAttribs(), - J = w.directState(); - I.projectionMatrix = D; - var Y = g._viewport; - g.setViewport(P, 0, 0, f, M); - var X, i, c, q; - for (X = 0, i = kl.length; i > X; X++) c = kl[X], Sc[c].ignore || (q = g._40Q.get(c), q && (N.renderItems(P, I, C, q.opaque, J), N.renderItems(P, I, C, q.transparent, J))); - j.unbind(P), g.setViewport(P, Y[0], Y[1], Y[2], Y[3]) - }; - N._renderDirect = function (P, z, d, t) { - d && d.length && (z.position = Sl(P, g._buffer.vs, d, F), t ? (ym(P, g._buffer.is, t), os(P, 0, t.length, null, t instanceof Uint32Array ? P.UNSIGNED_INT : null)) : ie(P, 0, d.length / 3)) - }, N.renderShapeModel = function (k, $, g, d) { - var Q, u, j; - if (ip(g)) - for (u = 0, j = g.length; j > u; u++) Q = g[u], Q && N.renderShapeModel(k, $, Q, d); - else dk(g) ? N.renderShapeModel(k, $, bf(d, g), d) : xl(g) && (g.shape3d ? N.renderShapeModel(k, $, g.shape3d, d) : N.renderShapeModelImpl(k, $, g)) - }, N.renderShapeModelImpl = function (w, y, p) { - ko(p), N._renderDirect(w, y, p.vs, p.is), N._renderDirect(w, y, p.top_vs, p.top_is), N._renderDirect(w, y, p.bottom_vs, p.bottom_is), N._renderDirect(w, y, p.from_vs, p.from_is), N._renderDirect(w, y, p.to_vs, p.to_is) - }, N.renderItems = function (Q, F, r, I, $) { - var L, v, B, b, l, K = I.length; - for (L = 0; K > L; L++) v = I[L], b = v.ui, B = v.data, !Kc(B) && B.s("shadow.cast") && g.isVisible(B) && (l = b.shapeModel || bf(b), l || (l = B instanceof O.Node && !(B instanceof O.Shape) ? { - vs: Ef, - is: Lq - } : [b.left, b.front, b.right, b.back, b.top, b.bottom]), F.modelViewMatrix = (b.mat ? X.fromArray(b.mat) : X.identity()).premultiply(H).toArray(), $.cullFace.enabled = !!B.s("shape3d.reverse.cull"), N.renderShapeModel(Q, r, l, b)) - } - }; - _r.shaderSrc = { - vs: ["uniform mat4 modelViewMatrix;", "uniform mat4 projectionMatrix;", "attribute vec3 position;", "void main() {", "vec3 transformed = vec3( position );", "vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );", "gl_Position = projectionMatrix * mvPosition;", "}"].join("\n"), - fs: ["precision highp float;", "const float PackUpscale = 256. / 255.;", "const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );", "const float ShiftRight8 = 1. / 256.;", "vec4 packDepthToRGBA( const in float v ) {", "vec4 r = vec4( fract( v * PackFactors ), v );", "r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;", "}", "void main() {", "gl_FragColor = packDepthToRGBA( gl_FragCoord.z );", "}"].join("\n") - }, _r.PARAMS = ["quality", "intensity", "bias", "radius", "type", "degree.x", "degree.z"]; - var lf = O.Light = function () { - fi(lf, this), this.s(ep, z[ep]), this.s(Lm, "sphere"), this.s("shape3d.reverse.cull", !0), this.s3(20, 20, 20) - }; - ki("Light", Dp, { - _image: "light_icon", - _icon: "light_icon", - onStyleChanged: function (P, w, i) { - lf.superClass.onStyleChanged.apply(this, arguments), P === ep && this.s("shape3d.color", i) - } - }); - var Bl = Eh.FrameState = function (M, O) { - this.renderState = ts.for(O), this.picking = !1, this.envmapReflectivity = .5, this.cameraPosition = Z, this.projectMatrix = Z, this.viewMatrix = Z, this.view = M, this.defaultProgram = Z, this.pickColorMap = Z, this._pvStack = [], this._renderStateStack = [] - }; - Bl.prototype.savePV = function () { - var e = this.view; - this._pvStack.push([Ql(this.projectMatrix), Ql(this.viewMatrix), e._18Q, Ql(e._7O)]) - }, Bl.prototype.restorePV = function () { - var B = this._pvStack.pop(); - if (B) { - var T = this.view; - this.projectMatrix = T._projectMatrix = B[0], this.viewMatrix = T._viewMatrix = B[1], T._18Q = B[2], T._7O = B[3] - } - }, Bl.prototype.setPV = function (s, z) { - var I = this.view, - M = !1; - if (s && (this.projectMatrix = I._projectMatrix = s, M = !0), z && (this.viewMatrix = I._viewMatrix = z, I._7O = Ql(z), M = !0), M) { - var T = I.getWidth(), - n = I.getHeight(), - l = Ql(this.projectMatrix); - I._18Q = xo(l, l, z), I._18Q._wh = T / n - } - }, Bl.prototype.syncEnv = function (x) { - var G = this, - l = G.view; - G.envmapReflectivity = l._envmapReflectivity || .5, G.cameraPosition = l.getEye(), G.projectMatrix = l._projectMatrix, G.viewMatrix = l._viewMatrix, G.pickColorMap = x, G.picking = l.getGL()._picking - }, Bl.prototype.setGLState = function () { - var D = [0, 0, 0, 0], - $ = [!0, !0, !0, !0], - q = [-1, 1], - W = [Ah.FUNC_ADD, Ah.FUNC_ADD], - J = [Ah.SRC_ALPHA, Ah.ONE_MINUS_SRC_ALPHA, Ah.ONE, Ah.ONE_MINUS_SRC_ALPHA]; - return function (T, m) { - var j = this, - E = j.renderState.gl, - X = j.renderState.glState; - X.dither = !1, m ? X.color.mask = $ : X.color.reset(), X.pixelStore.reset(), X.blend.color = D, X.blend.equation = W, X.blend.func = J, X.cullFace.enabled = !1, X.scissor.enabled = !1, X.depth.enabled = !0, X.depth.clear = 1, X.depth.func = E.LEQUAL, X.depth.range = q, X.stencil.enabled = !1, X.polygonOffset.enabled = !1, T ? (X.depth.mask = !1, X.blend.enabled = !0) : (X.depth.mask = !0, X.blend.enabled = !1) - } - }(), Bl.prototype.setUniforms = function (D) { - var o = this, - C = o.view, - r = o.renderState, - c = r.gl, - P = r.uniforms; - P.uBrightness = 1, P.uOpacity = 1, P.uPartOpacity = 1, P.uPick = o.picking, P.uTexture = !1, P.uBlendTexture = !1, P.uAlphaTest = z.alphaTest, P.uTransparent = !!D, P.uFix = !1, P.uBatchColor = !1, P.uBatchBlend = !1, P.uBatchBrightness = !1, P.uReflectivity = o.envmapReflectivity || .5, P.uCameraPosition = o.cameraPosition, P.uPMatrix = o.projectMatrix, P.uViewMatrix = o.viewMatrix, C.bindEnvMap(c), o.picking || (nc(C, c, Z), C._fogDisabled || (P.uFogColor = C._fogColor, P.uFogDensity = C._fogDensity, P.uFogNear = C._fogNear, P.uFogFar = C._fogFar)) - }, Bl.prototype.drawLayer = function (O) { - return this.view.renderLayers(O, !0) - }, Bl.prototype.drawData = function (W, r, b) { - var m = this.view; - if (m.isVisible(W)) { - var Z = this.renderState, - c = Z.uniforms, - J = m.getData3dUI(W); - if (J) { - var l = Z.gl, - d = l._picking, - s = m._picking, - i = W._pickId; - b && (W._pickId = b), c.uPick = l._picking = m._picking = !!b, c.uTransparent = !!r, J._42(Z.gl, Z.program, r ? Q : j), c.uPick = l._picking = d, m._picking = s, W._pickId = i - } - } - }; - var Hl = Eh.Graph3dView = function (Z, I) { - var r = this; - r._webGLVersion = 1, r._attributes = I || u.graph3dViewAttributes, r._25I = {}, r._view = ve(1, r); - var i = r._canvas = uo(r._view); - K(i, "webglcontextlost", function (s) { - s.preventDefault(), Vo(r), r._26I && r._doBufferGC(r._26I, !0), r._26I = F, r._1o.onContextLost(), r._35O = !0 - }), K(i, "webglcontextrestored", function () { - r._35O = !1, r.iv() - }), r._40Q = new Ud, r._43Q = {}, r._44Q = -1, r._batchIndexMap = {}, r._batchModelMap = {}, r._wireframeIndexMap = {}, r._wireframeModelMap = {}, r._wireframeIndexMapSwap = {}, r._wireframeModelMapSwap = {}, r._polylineIndexMap = {}, r._polylineIndexMap = {}, r._polylineIndexMapSwap = {}, r._polylineIndexMapSwap = {}, r._8O = [], r._7O = kn(), r._6O = kn(), r._1o = new qo(r), r._30O = new Rk(r), r._31O = new Le(r), r._32O = new ap(r), r._raycaster = new Vf(r), r._highlightHelper = new ui(r), r._postProcessing = new Hs(r), r._41Q = [], r._42Q = 0, r.vr = new Es(r), r.shadowMap = new _r(r), r._33Q = !0, r._eye = Pm(u.graph3dViewEye), r._center = Pm(u.graph3dViewCenter), r._up = Pm(u.graph3dViewUp), r._lightChanged = !1, r._59O = [], r._spots = [], r._dirs = [], r._frameId = 0, r._batchInfoMap = {}, r.overlappingBox = new Rn(r), r.dm(Z ? Z : new jn), r._coreInteractor = new mq(this), r.setInteractors([new ps(r)]), r._initView() - }, - Jo = { - fogDisabled: 1, - fogMode: 1, - dashDisabled: 1, - batchColorDisabled: 1, - batchBlendDisabled: 1, - batchBrightnessDisabled: 1, - ortho: 1 - }, - qd = 0; - Dn("Graph3dView", o, { - ms_v: 1, - ms_tip: 1, - ms_gv: 1, - ms_dm: 1, - ms_lp: 1, - ms_fire: 1, - ms_sm: 1, - _51o: 1, - ms_shadow: 1, - ms_ac: ["devicePixelRatio", "boundaries", "moveStep", "rotateStep", "editHelperDisabled", "blockSelectable", "sizeEditableFunc", "rotationEditableFunc", "editableFunc", "rotatable", "zoomable", "pannable", "walkable", "resettable", "mouseRoamable", "zoomToCenter", Fi, Pi, "firstPersonMode", dj, "movableFunc", "gridVisible", "gridSize", "gridGap", "gridColor", "originAxisVisible", "centerAxisVisible", "axisXColor", "axisYColor", "axisZColor", "editSizeColor", "rectSelectable", "rectSelectBackground", "headlightRange", "headlightColor", "headlightIntensity", "headlightAmbientIntensity", "headlightDisabled", "ortho", "orthoWidth", "fovy", "near", "far", to, sc, "up", "aspect", "fogDisabled", "fogMode", "fogDensity", "fogColor", "fogNear", "fogFar", "pickerResolution", "dashDisabled", "batchColorDisabled", "batchBlendDisabled", "batchBrightnessDisabled", "hoverDelay", "batchInfoMap", "rotateMinPhi", "rotateMaxPhi"], - _editable: !1, - _editHelperDisabled: u.graph3dViewEditHelperDisabled, - _blockSelectable: u.graph3dViewBlockSelectable, - _devicePixelRatio: Z, - _boundaries: Z, - _moveStep: u.graph3dViewMoveStep, - _rotateStep: u.graph3dViewRotateStep, - _rotateMinPhi: u.graph3dViewMinPhi === Z ? u.graph3dViewRotateMinPhi : u.graph3dViewMinPhi, - _rotateMaxPhi: u.graph3dViewMaxPhi === Z ? u.graph3dViewRotateMaxPhi : u.graph3dViewMaxPhi, - _pannable: u.graph3dViewPannable, - _rotatable: u.graph3dViewRotatable, - _walkable: u.graph3dViewWalkable, - _resettable: u.graph3dViewResettable, - _zoomable: u.graph3dViewZoomable, - _zoomToCenter: !0, - _firstPersonMode: u.graph3dViewFirstPersonMode, - _mouseRoamable: u.graph3dViewMouseRoamable, - _gridVisible: u.graph3dViewGridVisible, - _gridSize: u.graph3dViewGridSize, - _gridGap: u.graph3dViewGridGap, - _gridColor: u.graph3dViewGridColor, - _originAxisVisible: u.graph3dViewOriginAxisVisible, - _centerAxisVisible: u.graph3dViewCenterAxisVisible, - _axisXColor: u.graph3dViewAxisXColor, - _axisYColor: u.graph3dViewAxisYColor, - _axisZColor: u.graph3dViewAxisZColor, - _ortho: u.graph3dViewOrtho, - _orthoWidth: u.graph3dViewOrthoWidth, - _fovy: u.graph3dViewFovy, - _near: u.graph3dViewNear, - _far: u.graph3dViewFar, - _headlightColor: u.graph3dViewHeadlightColor, - _headlightIntensity: u.graph3dViewHeadlightIntensity, - _headlightRange: u.graph3dViewHeadlightRange, - _headlightAmbientIntensity: u.graph3dViewHeadlightAmbientIntensity, - _headlightDisabled: u.graph3dViewHeadlightDisabled, - _rectSelectable: u.graph3dViewRectSelectable, - _rectSelectBackground: u.graph3dViewRectSelectBackground, - _editSizeColor: u.graph3dViewEditSizeColor, - _autoMakeVisible: be, - _fogDisabled: u.graph3dViewFogDisabled, - _fogMode: u.graph3dViewFogMode, - _fogDensity: u.graph3dViewFogDensity, - _fogColor: u.graph3dViewFogColor, - _fogNear: u.graph3dViewFogNear, - _fogFar: u.graph3dViewFogFar, - _pickerResolution: u.graph3dViewPickerResolution, - _dashDisabled: u.graph3dViewDashDisabled, - _batchColorDisabled: u.graph3dViewBatchColorDisabled, - _batchBlendDisabled: u.graph3dViewBatchBlendDisabled, - _batchBrightnessDisabled: u.graph3dViewBatchBrightnessDisabled, - addCamera: function (d) { - var j = this, - P = o.freeze({ - id: j._42Q++, - priority: d.priority || 0, - ignoreInPick: !!d.ignoreInPick, - render: d.render - }); - d.switch3DStatus && (j._43Q[P.id] = !0), j._41Q.push(P), j._41Q.sort(function (n, l) { - return n.priority !== l.priority ? n.priority - l.priority : n.id - l.id - }) - }, setEye: function (H, k, P) { - 1 === arguments.length && (k = H[1], P = H[2], H = H[0]); - var C = this._eye; - C[0] = H, C[1] = k, C[2] = P, this.fp(to, F, C) - }, setCenter: function (E, i, X) { - 1 === arguments.length && (i = E[1], X = E[2], E = E[0]); - var p = this._center; - p[0] = E, p[1] = i, p[2] = X, this.fp(sc, F, p) - }, setUp: function (_, i, c) { - 1 === arguments.length && (i = _[1], c = _[2], _ = _[0]); - var g = this._up; - g[0] = _, g[1] = i, g[2] = c, this.fp("up", F, g) - }, getDevicePixelRatio: function () { - return this._picking ? this._1o._resolution : this._devicePixelRatio || ij - }, isTransparentMask: function (S) { - return S.s("transparent.mask") - }, getCoreInteractor: function () { - return this._coreInteractor - }, getHighlightHelper: function () { - return this._highlightHelper - }, getRaycaster: function () { - return this._raycaster - }, getAspect: function () { - var N = this, - o = N._aspect; - return o ? o : (o = N.getWidth() / N.getHeight(), o || 1.2) - }, getCanvas: function () { - return this._canvas - }, setDataModel: function (L) { - var P = this, - H = P._dataModel, - $ = P._selectionModel; - H !== L && (H && (H.ump(P.handleDataModelPropertyChange, P), H.umm(P.handleDataModelChange, P), H.umd(P.handleDataPropertyChange, P), $ || H.sm().ums(P.handleSelectionChange, P)), P._dataModel = L, L.mp(P.handleDataModelPropertyChange, P), L.mm(P.handleDataModelChange, P), L.md(P.handleDataPropertyChange, P), $ ? $._21I(L) : L.sm().ms(P.handleSelectionChange, P), P._postProcessing.handleDataModleChange(H, L), P.invalidateAll(!0), P.invalidateLight(), P.fp(uk, H, L), P._canvas.style.background = L.getBackground() || "") - }, handleDataModelPropertyChange: function (G) { - if ("background" === G.property) { - var A = this._canvas.style.background, - k = G.newValue || ""; - this._canvas.style.background = k, this.fp("canvasBackground", A, k) - } else "envmap" === G.property ? this.iv() : "cubicEnvmap" === G.property && (this._lastEnvMap = Z, this.iv()) - }, handleDataPropertyChange: function (G) { - var O = G.data; - this.invalidateData(O), Kc(O) && "s:light.type" === G.property ? this.invalidateLight() : "s:shadow.cast" === G.property ? this.shadowMap.tryUpdateBounding(O) : ("s:alwaysOnTop" === G.property || "s:shape3d.alwaysOnTop" === G.property) && (G.newValue ? O.setRenderLayer("top") : O.setRenderLayer(Z)) - }, invalidateLight: function () { - this._lightChanged || (this._lightChanged = !0, this.iv()) - }, onPropertyChanged: function (v) { - var j = this, - h = v.property; - j.iv(), j._18Q = F, "eye" === h ? j._33Q = !0 : "devicePixelRatio" === h ? j._42(F, j.getDevicePixelRatio()) : Jo[h] && Vo(j) - }, _5O: function (C) { - var L = C._22Q(); - return L ? new L(this, C) : F - }, getData3dUI: function (A) { - var g = this._25I[A._id]; - return g === Z && (g = this._5O(A), this._25I[A._id] = g), g - }, invalidateAll: function (W) { - var r = this; - if (W) { - for (var f in r._25I) { - var z = r._25I[f]; - z && z.dispose() - } - r._25I = {}, r.iv(), dn(r) - } else dn(r), r.dm().each(function (L) { - r.invalidateData(L) - }) - }, invalidateSelection: function () { - var R = this; - R.sm().each(function (j) { - R.invalidateData(j) - }) - }, invalidateData: function (d) { - var L = this, - m = L.getData3dUI(d); - m && (m.iv(), L.iv()), dn(L, d) - }, getShape3dText: function (x) { - return x.getStyle("shape3d.text") || this.getLabel(x) - }, invalidateBatch: function (j) { - var z = this, - r = z._40Q; - r.each(function (N) { - z._invalidateBatch(N.batchModelMap, N.batchIndexMap, N.polylineModelMap, N.polylineIndexMap, N.wireframeModelMap, N.wireframeIndexMap, j), N.markBatchInvalid() - }) - }, _invalidateBatch: function (h, L, s, i, U, P, n) { - var o = this, - d = h[n], - R = [], - u = {}; - if (d) { - d.ds.forEach(function (A) { - var B = o.getData3dUI(A); - B && B.iv(), delete L[A._id], R.push(A._id) - }), delete h[n]; - for (var e, p, J, M, x, j, l, I, F, A = [U, s], m = [P, i], T = 0; T < A.length; T++) { - var H = A[T], - O = m[T]; - for (u = {}, I = 0; I < R.length; I++) { - var t = O[R[I]]; - if (t) { - delete O[R[I]], F = t.batch, e = H[F]; - var V = t.begin, - z = t.size, - _ = 3 * V, - S = 3 * z, - E = 4 * V, - W = 4 * z; - for (p = e.ds, J = e.vs, M = e.cs, x = e.ps, j = e.ls, l = t.index, e.invalidate = !0, p[l] = Z, l = _; _ + S > l; l++) J[l] = Z; - for (l = E; E + W > l; l++) M[l] = Z; - for (l = E; E + W > l; l++) x[l] = Z; - if (j) - for (l = _; _ + S > l; l++) j[l] = Z; - u[F] = !0 - } - } - for (F in u) { - e = H[F], p = e.ds, J = e.vs, M = e.cs, x = e.ps, j = e.ls; - var K = []; - for (l = 0; l < p.length; l++) p[l] !== Z && K.push(p[l]); - if (0 === K.length) delete H[F]; - else { - for (e.ds = K, K = [], l = 0; l < J.length; l++) J[l] !== Z && K.push(J[l]); - for (e.vs = K, K = [], l = 0; l < M.length; l++) M[l] !== Z && K.push(M[l]); - for (e.cs = K, K = [], l = 0; l < x.length; l++) x[l] !== Z && K.push(x[l]); - if (e.ps = K, j) { - for (K = [], l = 0; l < j.length; l++) j[l] !== Z && K.push(j[l]); - e.ls = K - } - } - } - } - o.iv() - } - }, handleDataModelChange: function (y) { - var B = this, - J = y.kind, - n = y.data; - if ("add" === J) B.invalidateData(n), Bk(n) && n.getEdgeGroup() && n.getEdgeGroup().eachSiblingEdge(B.invalidateData, B), Kc(n) && B.invalidateLight(); - else if (J === Ce) { - var r = n._id, - L = B._25I[r]; - L && (L.dispose(), delete B._25I[r], B.iv()), n === B._currentSubGraph && B.setCurrentSubGraph(F), dn(B, n), Kc(n) && B.invalidateLight() - } else J === Tg && (B.invalidateAll(!0), B.setCurrentSubGraph(F), dn(B), B.invalidateLight()) - }, toCanvas: function (o, n, C) { - var p = this, - k = p.getGL(); - if (p.validate(), o) { - var r = k.getParameter(k.COLOR_CLEAR_VALUE); - qe(k, o) - } - p._42(F, 1); - var j = p.getWidth() || 1, - I = p.getHeight() || 1, - G = new Uint8Array(4 * j * I), - l = uo(), - Z = l.getContext("2d"); - k.readPixels(0, 0, j, I, k.RGBA, k.UNSIGNED_BYTE, G), Bn(l, j, I, 1); - for (var t = Z.getImageData(0, 0, j, I), e = t.data, B = 0; B < e.length; B += 4) { - var L = B / 4, - i = T(L / j), - J = L - i * j; - L = 4 * ((I - 1 - i) * j + J), e[L] = G[B], e[L + 1] = G[B + 1], e[L + 2] = G[B + 2], e[L + 3] = G[B + 3] - } - if (Z.putImageData(t, 0, 0), o && qe(k, r), p._42(F, p.getDevicePixelRatio()), n && C) { - var d = uo(), - X = d.getContext("2d"); - return Bn(d, n, C, 1), u.drawImage(X, l, 0, 0, n, C), d - } - return l - }, toDataURL: function (X, _) { - var c = this, - v = c.getGL(); - if (c.validate(), X) { - var l = v.getParameter(v.COLOR_CLEAR_VALUE); - qe(v, X) - } - c._42(F, 1); - var z = c._canvas.toDataURL(_ || "image/png", 1); - return X && qe(v, l), c._42(F, c.getDevicePixelRatio()), z - }, getGL: function () { - var D = this._26I; - if (D) return this.acquireProgram(), D; - if (!this._35O) { - var H = this, - A = H._canvas, - O = H._attributes; - if (!O || O.requestWebGL2 !== !1) try { - D = A.getContext("webgl2", O) || A.getContext("experimental-webgl2", O), D && (H._webGLVersion = 2, H._26I = D) - } catch (u) { } - if (!D) try { - D = A.getContext("webgl", O) || A.getContext("experimental-webgl", O) - } catch (u) { - throw new Error("WebGL not supported") - } - if (!D) throw new Error("WebGL not supported"); - H._26I = D; - var q = H._frameState = new Bl(this, D); - H._glExtensions = new E(D), H._glCapabilities = new B(D, H._glExtensions), H._2O = {}, D._emptyCubeTexture = Gp(D), D._compiledShader = {}, D._emptyTexture = ze(D), D._emptyBlendTexture = ze(D), D._bufPool = {}, D._id = ++qd, q.setGLState(), H._buffer = { - vs: el(D), - ns: el(D), - is: el(D), - uv: el(D), - batchColor: el(D), - batchBlend: el(D), - batchBrightness: el(D), - lineDistance: el(D) - }, H._1O = rg(D); - var Y = H._cube = { - vs: el(D), - ns: el(D), - is: el(D), - uv: el(D) - }; - return bm(D, Y.vs, Ef), bm(D, Y.ns, mn), bm(D, Y.uv, mi), eo(D, Y.is, Lq), H.acquireProgram(), D._renderInfo = { - calls: 0, - vertices: 0, - faces: 0, - lines: 0, - points: 0, - frame: 0, - cacheTimeCost: 0 - }, D - } - }, getEnvmap: function () { - return this._glCapabilities && this._glCapabilities.maxVertexTextures < u.graph3dEnvmapCapabilityRequire ? null : this.dm().getEnvmap() - }, acquireProgram: function () { - var D = this, - d = D._26I; - if (d) { - var s = u.getImage(D.getEnvmap()), - G = s && s.tagName ? !0 : !1, - m = D._prg && D._prg.envMapFlag ? !0 : !1; - if (!D._prg || G !== m) { - var _ = D._prg = d.createProgram(); - if (!_) return F; - _.envMapFlag = G; - var e = D._dirs.length, - z = D._spots.length, - l = D._59O.length, - S = ["uPMatrix", "uMVMatrix", "uMMatrix", "uReflectivity", "uViewMatrix", "uUseEnvMap", "uEnvMap", "uCameraPosition", "uNMatrix", "uViewMatrix", "aNormal", "aUv", "uOffsetScale", "uDiffuse", "uBlend", "uBlendColor", "uBrightness", "uPartOpacity", "uAlphaTest", "uTransparent", "uClipDirection", "uClipPercent", "uTexture", "uBlendTexture", "uSampler", "uBlendSampler", "uDiscardSelectable", "uFix", "uPick", "uReverseFlip", "uFixPickReverseColor", "uBatchBrightness", "aBatchBrightness", "uBatchColor", "aBatchColor", "uBatchBlend", "aBatchBlend", "uDash", "aLineDistance", "uDashDistance", "uDashGapDistance", "uLight", "uHeadlightRange", "uHeadlightAmbientIntensity", "uHeadlightColor", "uFogColor", "uFogDensity", "uFogNear", "uFogFar"]; - e && S.push("uDirColor", "uDirDirection"), z && S.push("uSpotColor", "uSpotRange", "uSpotAngle", "uSpotExponent", "uSpotPosition", "uSpotDirection"), l && S.push("uPointColor", "uPointRange", "uPointPosition"), dp || (Ae = fo(Ae.substring(0, Ae.indexOf("^#"))), Sp = fo(Sp), dp = !0); - var c = ["#define MAX_DIR " + e, "#define MAX_SPOT " + z, "#define MAX_POINT " + l, D._fogDisabled ? "" : "#define FOG", "exp2" === D.getFogMode() ? "#define FOG_EXP2" : "", D._dashDisabled ? "" : "#define DASH", G ? "#define USE_ENVMAP" : "", D.isOrtho() ? "#define ORTHOGRAPHIC" : "", D._batchColorDisabled ? "" : "#define BATCHCOLOR", D._batchBlendDisabled ? "" : "#define BATCHBLEND", D._batchBrightnessDisabled ? "" : "#define BATCHBRIGHTNESS", D.shadowMap.enable ? D.shadowMap.genShaderDefine() : "", ""].join("\n"), - O = Pl(d, _, d.VERTEX_SHADER, Ae.replace("PREFIX", c)); - d.getShaderParameter(O, d.COMPILE_STATUS) || console.error("compile vs shader faild, error info : ", d.getShaderInfoLog(O)); - var o = Pl(d, _, d.FRAGMENT_SHADER, Sp.replace("PREFIX", c)); - d.getShaderParameter(o, d.COMPILE_STATUS) || console.error("compile fs shader faild, error info : ", d.getShaderInfoLog(o)), Uq ? S.push("aPosition") : (_.aPosition = 0, d.bindAttribLocation(_, 0, "aPosition")), d.linkProgram(_), S.forEach(function (U) { - _[U] = /^u/.test(U) ? d.getUniformLocation(_, U) : d.getAttribLocation(_, U) - }); - var A = this._frameState; - A.renderState.program = A.defaultProgram = _, d.deleteShader(O), d.deleteShader(o) - } - } - }, getBrightness: function (p) { - var W = p.s("brightness"), - P = this.isSelected(p) ? p.s("select.brightness") : F; - return W == F ? P : P == F ? W : W * P - }, setHighlightMode: function (F) { - var J; - J = "selection" === F || "selected" === F ? ui.Mode.Selection : "mouseover" === F || "hover" === F ? ui.Mode.MouseOver : "style" === F ? ui.Mode.Style : ui.Mode.Disable; - var l = this._highlightHelper.mode; - this._highlightHelper.mode = J, this.firePropertyChange("highlightMode", l, J) - }, getHighlightMode: function () { - var i = this._highlightHelper.mode; - return i === ui.Mode.Selection ? "selected" : i === ui.Mode.MouseOver ? "hover" : i === ui.Mode.Style ? "style" : "disabled" - }, getDataHighlightMode: function (N) { - return N.s("highlight.mode") - }, getHighlightColor: function () { - return this._highlightHelper.color || z["highlight.color"] - }, setHighlightColor: function (x) { - var f = this._highlightHelper.color; - this._highlightHelper.color = x, this.firePropertyChange("highlightColor", f, x) - }, getHighlightWidth: function () { - return this._highlightHelper.width || z["highlight.width"] - }, setHighlightWidth: function (c) { - var E = this._highlightHelper.width; - this._highlightHelper.width = c, this.firePropertyChange("highlightWidth", E, c) - }, bindEnvMap: function (G) { - var V = this, - x = ts.for(G), - v = x.directUniforms(), - D = V.getEnvmap(), - S = u.getImage(D); - if (S && S.tagName) { - if (D !== V._lastEnvMap) { - var K = {}; - if (V.dm().isCubicEnvmap()) { - var k = xc(S), - W = oo(S); - if (0 === k || 0 === W) return; - var U = k / 4, - M = W / 3, - X = { - top: { - x: U, - y: 0 - }, - left: { - x: 0, - y: M - }, - front: { - x: U, - y: M - }, - right: { - x: 2 * U, - y: M - }, - back: { - x: 3 * U, - y: M - }, - bottom: { - x: U, - y: 2 * M - } - }; - ["top", "left", "front", "right", "back", "bottom"].forEach(function (E) { - var h = X[E], - W = K[E] = uo(); - Bn(W, U, M, 1); - var o = Wd(W); - o.drawImage(S, h.x, h.y, U, M, 0, 0, U, M), o.restore(), K[E] = u.resizeImagePOT(W, !0) - }) - } else S = u.resizeImagePOT(S, !0); - V._envMapTexture && G.deleteTexture(V._envMapTexture); - var O = V._envMapTexture = G.createTexture(); - G.activeTexture(G.TEXTURE0), G.bindTexture(G.TEXTURE_CUBE_MAP, O), G.texParameteri(G.TEXTURE_CUBE_MAP, G.TEXTURE_MAG_FILTER, G.LINEAR), G.texParameteri(G.TEXTURE_CUBE_MAP, G.TEXTURE_MIN_FILTER, G.LINEAR), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 0, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.right || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 1, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.left || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 2, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.top || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 3, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.bottom || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 4, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.front || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 5, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.back || S), G.bindTexture(G.TEXTURE_CUBE_MAP, G._emptyCubeTexture), V._lastEnvMap = D - } - v.uEnvMap = V._envMapTexture - } - }, getWireframe: function (H) { - var w = H.s("wf.visible"), - G = H.s("wf.width"); - return w === !0 || G > 0 && "selected" === w && this.isSelected(H) ? { - color: H.s("wf.color"), - width: G, - "short": H.s("wf.short"), - mat: H.s("wf.mat") - } : void 0 - }, _transformPointToViewSpace: function (i) { - var M = [i[0], i[1], i[2]]; - return Td(M, this._viewMatrix), M - }, _transformDirectionToViewSpace: function (b, V) { - var H = [b[0], b[1], b[2]]; - Td(H, this._viewMatrix); - var Q = V ? [V[0], V[1], V[2]] : [0, 0, 0]; - Td(Q, this._viewMatrix); - var O = Q[0] - H[0], - X = Q[1] - H[1], - r = Q[2] - H[2], - U = Math.sqrt(O * O + X * X + r * r); - return U ? [O / U, X / U, r / U] : [O, X, r] - }, getWireframeGeometry: function (E) { - return E.s("wf.geometry") ? { - color: E.s("wf.color"), - width: E.s("wf.width"), - mat: E.s("wf.mat"), - geometry: !0 - } : void 0 - }, getBodyColor: function (v) { - return v.s("body.color") - }, getMat: function (v) { - return v.getMat ? v.getMat() : v.s("mat") - }, getFaceMat: function (t, I) { - return t.getFaceMat ? t.getFaceMat(I) : t.s(I + ".mat") - }, getFaceBlend: function (o, g) { - return o.s(g + ".blend") || o.s("all.blend") - }, getFaceColor: function (i, h) { - return i.s(h + ".color") || i.s("all.color") - }, getFaceImage: function (V, O) { - return V.s(O + ".image") || V.s("all.image") - }, getFaceBlendImage: function (A, G) { - return A.s(G + ".blend.image") || A.s("all.blend.image") - }, getFaceDiscardSelectable: function (l, e) { - var o = l.s(e + ".discard.selectable"); - return o == F ? l.s("all.discard.selectable") : o - }, getFaceUv: function (e, $) { - return e.s($ + ".uv") || e.s("all.uv") - }, getFaceUvOffset: function (k, q) { - return k.s(q + ".uv.offset") || k.s("all.uv.offset") - }, getFaceUvScale: function (h, B) { - return h.s(B + ".uv.scale") || h.s("all.uv.scale") - }, getFaceLight: function (o, s) { - var O = o.s(s + ".light"); - return O == F ? o.s("all.light") : O - }, getFaceVisible: function (T, k) { - var O = T.s(k + ".visible"); - return O == F ? T.s("all.visible") : O - }, getFaceOpacity: function (S, J) { - var M = S.s(J + ".opacity"); - return M == F ? S.s("all.opacity") : M - }, getFaceTransparent: function (m, Y) { - var l = m.s(Y + ".transparent"); - return l == F ? m.s("all.transparent") : l - }, getFaceReverseColor: function (o, W) { - return o.s(W + ".reverse.color") || o.s("all.reverse.color") - }, getFaceReverseFlip: function (I, c) { - var d = I.s(c + ".reverse.flip"); - return d == F ? I.s("all.reverse.flip") : d - }, getFaceReverseCull: function (P, t) { - var n = P.s(t + ".reverse.cull"); - return n == F ? P.s("all.reverse.cull") : n - }, getTextureMap: function () { - return this._2O - }, deleteTexture: function (I) { - var T = this, - V = T._2O[I]; - V && (delete T._2O[I], T.getGL().deleteTexture(V)) - }, renderPickScene: function () { - var u = this.getGL(); - this._picking = u._picking = !0, this.renderScene(), this._picking = u._picking = !1 - }, invalidateCachedTexture: function (X) { - var m = this.getData3dUI(X); - m.invalidateCachedTexture(this.getGL()), this.invalidateData(X) - }, invalidateShape3dCachedImage: function (B) { - this.invalidateCachedTexture(B) - }, invalidateCachedGeometry: function (Q) { - var o = this.getData3dUI(Q); - o.invalidateCachedGeometry(), this.invalidateData(Q) - }, isInteractive: function (S) { - return S.s("interactive") - }, getTexture: function ($, g, E) { - if (!$) return F; - var w = this, - p = w.getGL(), - m = w._2O[$]; - if (!m) { - var j = ii($), - C = {}; - if (!j) return p._emptyTexture; - if (g) { - C.mipmapMaxLevel = g.s("texture.mipmap.max"); - var Y = g.s("texture.wrap"); - C.clampToEdge = "clampToEdge" === Y ? !0 : "repeat" === Y ? !1 : Z - } - if (j.uuid || (j.uuid = O.Math.generateUUID()), j.tagName) { - if (j.dynamic) return rg(p, j, w._1O, C); - m = w._2O[$] = rg(p, j, Z, C) - } else { - var L, R = g && (g.s("texture.cache") || g.s("shape3d.image.cache") || j.textureCache), - H = w.vr.isPresenting(); - if (H && (g._textureUpdateFrame === p._renderInfo.frame ? R = !0 : g._textureUpdateFrame = p._renderInfo.frame), R && (L = w.getData3dUI(g), m = L.getCachedTexture(E), m && L.interactiveInfo && m.interactiveInfo && (L.interactiveInfo[m.interactiveInfo.key] = m.interactiveInfo.info)), !m) { - var P = p._renderInfo.textureCache; - if (R) { - if (P.time > u.graph3dMaxVectorCacheTime) return w.redraw(), p._emptyTexture; - if (!Dr(j, g)) return p._emptyTexture - } - var G; - g && (1 !== g.s("texture.scale") ? G = g.s("texture.scale") : 1 !== g.s("shape3d.texture.scale") && (G = g.s("shape3d.texture.scale"))), G || (G = 1); - var o = g && (g.s("fixSizeOnScreen") || g.s("shape3d.fixSizeOnScreen")), - b = o ? p.NEAREST : p.LINEAR; - o ? "number" == typeof o && (G *= 0 > o ? 1 : o) : g && (g.s("vector.dynamic") || g.s("shape3d.vector.dynamic")) && (L || (L = w.getData3dUI(g)), o = L.getVectorDynamicSize()); - var h, s, f, J = g && g.s("shape3d"); - "billboard" === J ? f = g.getTall() / g.getWidth() : "plane" === J && (f = g.getHeight() / g.getWidth()); - var A = xc(j, g); - if (o) { - var i; - i = R ? w._devicePixelRatio || ij : w.getDevicePixelRatio(), h = o[0] > 0 ? o[0] * i : G * A * i, s = o[1] > 0 ? o[1] * i : G * (f ? oo(j, g, w, Math.min(4096, A * f)) : oo(j, g)) * i - } else h = G * A, s = G * (f ? oo(j, g, w, Math.min(4096, A * f)) : oo(j, g)); if (h >= 1 && s >= 1) { - var t = 0; - (R || H) && (t = Date.now()); - var e = w._glCapabilities.maxTextureSize; - h = Math.min(h, e), s = Math.min(s, e); - var N = Cr(h, s); - if (!L && g && (L = w.getData3dUI(g)), L && L.interactiveInfo) { - var _ = $; - "object" == typeof _ && (_ = _.uuid || (_.uuid = O.Math.generateUUID())); - var S = L.interactiveInfo[_] = {}; - N.interactiveInfo = S.bodyInfo = { - compInfos: [], - matrix: new Np, - rect: { - x: 0, - y: 0, - width: h, - height: s - } - } - } - Yd(N, j, 0, 0, h, s, g, w), N.interactiveInfo && (N.interactiveInfo = null), N.restore(), P.count++, P.pixels += h * s, g ? (C.minFilter = Mm(g.s("texture.filter.min") || g.s("texture.filter")) || b, C.magFilter = Mm(g.s("texture.filter.mag") || g.s("texture.filter")) || b) : C.minFilter = C.magFilter = b, R || H ? (m = rg(p, xm, null, C), L.setCachedTexture(m, E), P.time += Date.now() - t, S && (m.interactiveInfo = { - key: _, - info: S - }), xm = null) : m = rg(p, xm, w._1O, C) - } - } - } - } - return m - }, redraw: function () { - this.iv() - }, validateImpl: function () { - var B = this; - if (B._lightChanged) { - B._lightChanged = !1; - var h = [], - v = [], - N = []; - B.dm().each(function (c) { - if (Kc(c)) { - var F = c.s("light.type"); - F === zg ? h.push(c) : F === Bo ? v.push(c) : F === Tf && N.push(c) - } - }), (h.length !== B._59O.length || v.length !== B._spots.length || N.length !== B._dirs.length) && Vo(B), B._59O = h, B._spots = v, B._dirs = N - } - B._42(), B._1o.iv() - }, getRenderInfo: function () { - var X = this.getGL(); - return X ? X._renderInfo : void 0 - }, getDebugTip: function () { - var i = this, - Y = i.getRenderInfo(); - if (Y) { - var M = i.getGL()._validBufCount || 0, - v = "Draw Calls: " + Y.calls + "
" + "Vertices: " + Y.vertices + "
" + "Faces: " + Y.faces + "
" + "Lines: " + Y.lines + "
" + (Y.points ? "Points: " + Y.points + "
" : "") + "Buffers: " + M + "
" + "Cache Models: " + o.keys(Mq).length + "
" + "Shape3d Models: " + o.keys(Zm).length; - if (i.vr.isPresenting() && (v += "
VR fps: " + i.vr.getFps()), Y.textureCache) { - var n = Y.textureCache.count; - if (v += "
2D Dynamic Textures: " + Y.textureCache.count, n > 0) { - var d, f = Y.textureCache.pixels; - d = f > 1e6 ? Math.round(f / 1e6) + "M" : f > 1e3 ? Math.round(f / 1e3) + "K" : Math.round(f), v += "
2D Dynamic pixels: " + d - } - } - return v - } - }, getFrameState: function () { - return this._frameState - }, isBoundingBoxInView: function () { - var R = new O.Math.Box3, - d = new O.Math.Matrix4; - return function (H) { - var p = H; - if (p instanceof O.Data && (p = this.getData3dUI(p)), !p.mat) return !0; - var M = p.getBoundingBox(); - R.copy(M).applyMatrix4(d.fromArray(p.mat)); - var e = this.getFrustum(); - return e.intersectsBox(R) - } - }(), - updateScene: function () { - var O = this; - O._81O = F, O.overlappingBox.clear(), O._40Q.init(); - var l, i, M, C = this.dm().getDatas().getArray(), - m = C.length, - v = this.getGL(), - B = this._40Q; - for (l = 0; m > l; l++) i = C[l], M = this.getData3dUI(i), M && M.update(this, v, B); - O._40Q.onUpdated() - }, renderScene: function () { - function m(M, G) { - Q.setGLState(M, G), Q.setUniforms(M), Q.renderState.attribs.disable(), a = E.directUniforms(), H = E.directAttribs(), H.disable() - } - - function l(P) { - for (; I > p; p++) { - var x = t[p]; - if (!K || !x.ignoreInPick) { - if (x.priority >= P) break; - (!d._43Q[d._44Q = x.id] || Qg[ub.length]) && (x.render(c, d, Q), m()) - } - } - } - var d = this; - d.shadowMap.render(), d._44Q = -1; - var H, Q = d._frameState, - E = Q.renderState, - h = E.glState, - a = E.directUniforms(), - c = d.getGL(), - o = d._prg; - E.syncLoss(), d._projectMatrix = Mc(d), wp(d, d._7O), d._viewMatrix = Ql(d._7O), Q.syncEnv(this._picking ? this.pickColorMap : Z), E.useProgram(o), m(!1, !0), c.clear(c.DEPTH_BUFFER_BIT); - var K = d._picking, - t = this._41Q, - p = 0, - I = t.length; - if (l(u.cameraPriority.skybox), K) { - var B = h.color.clear.slice(0); - qe(c, [0, 0, 0, 0]) - } else qe(c, [0, 0, 0, 0]), h.blend.enabled = !1, h.depth.enabled = !1, h.depth.mask = !1, d.drawSky(c, o), d.drawReflectors(c) && (d._projectMatrix = Mc(d), wp(d, d._7O), d._viewMatrix = Ql(d._7O), Q.syncEnv(), m()), h.blend.enabled = !1, h.depth.enabled = !0, h.depth.mask = !0, a.uTransparent = !1, d._31O._42(c, o); if (!c.textureBatch || Qg[(ONE_FRAME_TIME - 6) / 2]) { - !K && d.shadowMap.enable && d.shadowMap.createShadow(a); - for (var U = 0, g = kl.length; g > U; U++) { - var f = kl[U], - e = Sc[f]; - if (!e.ignore) { - var M = e.priority; - l(M), this.renderLayer(f) - } - } - h.depth.enabled = !1, a.uTransparent = !1, a.shadowReceive = !1, K ? d.drawFilter || d._30O._42(c, o) : (h.blend.enabled = !1, h.depth.mask = !0, d._32O._42(c, o), d._30O._42(c, o), d._highlightHelper._42(c, o)), h.depth.enabled = !0, l(u.cameraPriority.infinity), K && qe(c, B), bm(c, F), eo(c, F), d._44Q = -1 - } - }, renderLayers: function (u, D) { - D && (u = Ck(u)); - for (var m = 0, A = u.length; A > m; m++) this.renderLayer(u[m]) - }, renderLayer: function (T) { - var I = this, - k = I._picking, - l = I._40Q.get(T); - if (l) { - var y, p, L, A = I.getGL(), - W = I._frameState, - q = W.renderState, - Z = q.glState, - v = q.directUniforms(), - d = l.opaque, - F = l.transparent, - x = l.batchModelMap, - B = l.polylineModelMap, - h = l.wireframeModelMap, - A = I.getGL(), - K = I._prg; - k || (Z.blend.enabled = !1, Z.depth.enabled = !0, Z.depth.mask = !0), v.uTransparent = !1, Sc[T].clearDepth !== !1 && A.clear(A.DEPTH_BUFFER_BIT); - var R = this.drawFilter; - if (R) - for (L = d, y = 0, p = L.length; p > y; y++) R(L[y].data) !== !0 && L[y].ui._42(A, K, j); - else { - for (L = d, y = 0, p = L.length; p > y; y++) L[y].ui._42(A, K, j); - if (k) - for (L = F, y = 0, p = L.length; p > y; y++) L[y].ui._46Q(A); - Zn(I, x), Eb(I, B), Eb(I, h) - } if (k || (Z.blend.enabled = !0, Z.depth.mask = !1), I._45Q = v.uTransparent = !0, R) - for (L = F, y = 0, p = L.length; p > y; y++) R(L[y].data) !== !0 && L[y].ui._42(A, K, Q); - else { - for (L = F, y = 0, p = L.length; p > y; y++) L[y].ui._42(A, K, Q); - Zn(I, x, null, !0), Eb(I, B, null, !0), Eb(I, h, null, !0) - } - I._45Q = null - } - }, drawV2: function (P) { - var L = this; - if (!L._35O && (!vi || Qg(vi))) { - var G = L.getWidth(), - x = L.getHeight(); - if (G && x) { - var d = L.getGL(); - if (d) { - var j = L._canvas; - if (P || (P = L.getDevicePixelRatio()), G !== j.clientWidth || x !== j.clientHeight) { - Bn(j, G, x, P); - var R = P; - G && Math.abs(d.drawingBufferWidth - G * P) > 1 && (R = Math.min(R, d.drawingBufferWidth / G)), x && Math.abs(d.drawingBufferHeight - x * P) > 1 && (R = Math.min(R, d.drawingBufferHeight / x)), R !== P && (L.setDevicePixelRatio(P = R), Bn(j, G, x, P)), L._18Q = null - } - d.clear(d.COLOR_BUFFER_BIT); - var r = d._renderInfo; - r.calls = 0, r.vertices = 0, r.faces = 0, r.lines = 0, r.points = 0, r.textureCache = { - time: 0, - count: 0, - pixels: 0 - }, r.frame = ++L._frameId, r.cacheTimeCost = 0, r.reflectDepth = 0, G *= P, x *= P; - do { - if (L.vr.enable && L.vr.render(d, G, x)) break; - if (L.updateScene(), L._postProcessing.render(d, G, x)) break; - L.setViewport(d, 0, 0, G, x), L.renderScene() - } while (!1); - L._33Q = !1, L.countFrame(), L._doBufferGC(d) - } - } - } - }, _42: function (J, _) { - return this.drawV2(_) - }, drawReflectors: function (L) { - L._renderInfo.reflectDepth++; - var V, T, b, n = this, - P = n._dataModel.getReflectors(), - d = !1; - for (V in P) T = P[V], n.isVisible(T) && (b = n.getData3dUI(T), b && b.drawReflector(L) && (d = !0)); - return L._renderInfo.reflectDepth--, d - }, isReflecting: function (M) { - return M._renderInfo.reflectDepth - }, getPostProcessing: function () { - return this._postProcessing - }, enablePostProcessing: function (_, s) { - return this._postProcessing.enableModule(_, s) - }, getPostProcessingModule: function (_) { - return this._postProcessing.getModule(_) - }, getPostProcessingValue: function (H, V) { - var e = this._postProcessing.getModule(H); - return e ? e[V] : Z - }, setPostProcessingValue: function (X, j, d) { - var F = this.getPostProcessingValue(X, j), - Z = this._postProcessing.getModule(X); - Z && F !== d && ("enable" === j ? this.enablePostProcessing(X, d) : Z[j] = d, this.firePropertyChange("postProcessing." + X + "." + j, F, d)) - }, setViewport: function (k, T, n, Y, v) { - this._viewport = [T, n, Y, v], ts.for(k).directState().viewport = this._viewport - }, getViewport: function () { - return this._viewport - }, setBufferGCInterval: function (v) { - this._bufferGCInterval = v - }, _doBufferGC: function (O, k) { - var o, e, y = O._bufPool, - U = 0, - f = 0, - R = O._renderInfo.frame, - K = this._bufferGCInterval || 10; - for (o in y) U++, e = y[o], e && (k || R - e._fid > K ? (O.deleteBuffer(e._buf), e._buf = null, y[o] = null) : f++); - if (U / 2 > f && U > 128) { - var E = {}; - for (o in y) y[o] && (E[o] = y[o]); - O._bufPool = E - } - O._validBufCount = f - }, _swapLineMap: function () { - var Y = this; - jb = Y._polylineModelMap, Y._polylineModelMap = Y._polylineModelMapSwap, Y._polylineModelMapSwap = jb, jb = Y._wireframeModelMap, Y._wireframeModelMap = Y._wireframeModelMapSwap, Y._wireframeModelMapSwap = jb, jb = Y._polylineIndexMap, Y._polylineIndexMap = Y._polylineIndexMapSwap, Y._polylineIndexMapSwap = jb, jb = Y._wireframeIndexMap, Y._wireframeIndexMap = Y._wireframeIndexMapSwap, Y._wireframeIndexMapSwap = jb - }, _updateSkybox: function (c) { - if (this._skybox && c) { - var h = c.property, - S = !1, - M = this._skybox; - if ("eye" === h || "forceUpdate" === h) { - var i = this._eye; - M.p3(i[0], i[1], i[2]), S = !0 - } - if ("near" === h || "far" === h || "forceUpdate" === h) { - var w = this._near, - L = this._far, - k = M.getFinalScale3d(); - if (k[0] /= 2, k[1] /= 2, k[2] /= 2, k[0] <= w || k[0] >= L || k[1] <= w || k[1] >= L || k[2] <= w || k[2] >= L) { - var Y = 2 * w * L / (w + L), - $ = Math.min(k[0], k[1], k[2]), - p = Y / $, - f = M.getScale3d(); - M.setScale3d(f[0] * p, f[1] * p, f[2] * p), S = !0 - } - } - S && this.invalidateData(M) - } - }, getSkyBox: function () { - return this.getSkybox() - }, setSkyBox: function (x) { - return this.setSkybox(x) - }, getSkybox: function () { - return this._skybox - }, setSkybox: function (g) { - var X = this._skybox; - return X === g ? (g && this._updateSkybox({ - property: "forceUpdate" - }), void 0) : (X && (this._skyboxStyleMap && X.setStyleMap(this._skyboxStyleMap), this._skyboxStyleMap = null, this._skyboxAnchor3d && X.setAnchor3d(this._skyboxAnchor3d), this._skyboxAnchor3d = null, this._skyboxP3 && X.p3(this._skyboxP3), this._skyboxP3 = null), this._skybox = g, this.ump(this._updateSkybox, this), g && (g.dm() && g.dm().remove(g), this._skyboxStyleMap = O.Default.clone(g.getStyleMap()), this._skyboxAnchor3d = g.getAnchor3d(), g.setAnchor3d(.5, .5, .5), this._skyboxP3 = g.p3().slice(0), g.s({ - "shape3d.reverse.flip": !0, - "shape3d.reverse.cull": !1, - "all.reverse.flip": !0, - "all.reverse.cull": !1, - "front.reverse.flip": !0, - "front.reverse.cull": !1, - "back.reverse.flip": !0, - "back.reverse.cull": !1, - "left.reverse.flip": !0, - "left.reverse.cull": !1, - "right.reverse.flip": !0, - "right.reverse.cull": !1, - "top.reverse.flip": !0, - "top.reverse.cull": !1, - "bottom.reverse.flip": !0, - "bottom.reverse.cull": !1 - }), this.mp(this._updateSkybox, this), this._updateSkybox({ - property: "forceUpdate" - })), this.fp("skybox", X, g), void 0) - }, drawSky: function (f, M) { - var N = this, - _ = N._skybox; - if (_) { - var A = ts.for(f).directUniforms(), - S = N._headlightIntensity, - E = ns(N._headlightColor), - M = N._prg; - 1 !== S && (E = [E[0] * S, E[1] * S, E[2] * S]), A.uHeadlightColor = [E[0], E[1], E[2], 1]; - var U = N.getData3dUI(_); - if (U) { - var R = N.isOrtho(), - W = R || this._computedProjectMatrix; - if (W) { - var n = N._projectMatrix; - R && (N._ortho = !1), A.uPMatrix = N._projectMatrix = Mc(N, !0) - } - var m = _.p3(), - p = this._eye; - (m[0] !== p[0] || m[1] !== p[1] || m[2] !== p[2]) && (_._position.x = p[0], _._54O = p[1], _._position.y = p[2]), U.validate(), U._42(f, M, C), W && (R && (N._ortho = !0), A.uPMatrix = N._projectMatrix = n) - } - f.clear(f.DEPTH_BUFFER_BIT), A.uHeadlightColor = [E[0], E[1], E[2], N._headlightDisabled ? 1 : 0] - } - }, getLogicalPoint: function (L) { - return Nm(L, this._canvas) - }, isRectOverlapping: function (Y) { - var z = this.getData3dUI(Y); - return z._rectOverlapping - }, getHitFaceInfo: function (Z) { - Z.target && (Z = this.lp(Z)); - var v = this.getDataInfoAt(Z); - if (v) { - var Q = this.intersectObject(Z, v.data); - if (Q) return { - data: v.data, - face: Q.part - } - } - return F - }, unproject: function (Z, N) { - var W = this, - C = W.getWidth(), - F = W.getHeight(), - y = Z.target ? W.lp(Z) : Z, - i = y.x - C / 2, - K = y.y - F / 2, - u = 2 * (i / C), - p = 2 * (-1 * K / F); - N = N || 0; - var j = kn(), - I = Mc(W), - r = wp(W); - xo(j, I, r), Od(j); - var t = Ek([u, p, N, 1], j); - return [t[0] / t[3], t[1] / t[3], t[2] / t[3]] - }, getDataAt: function (N) { - var U = this.getDataInfoAt(N); - return U ? U.data : F - }, getDataInfoAt: function (H, M) { - return H.target && (H = this.lp(H)), this._1o.get(Cc(H.x, H.y, M), !0) - }, getDatasInRect: function (O) { - return this._1o.get(O) - }, setEditable: function (H) { - var K = this, - m = K._editable; - K._editable = H, this.fp(Me, m, H) - }, isEditable: function (v) { - var U = this; - return v ? U._editable ? Fq(v) ? v.s("3d.editable") ? U._editableFunc ? U._editableFunc(v) : !0 : !1 : !1 : !1 : U._editable - }, isSelectable: function (v) { - return v.s("3d.selectable") && this.sm().isSelectable(v) - }, isMovable: function (Y) { - var G = this; - return Bk(Y) && Y.getStyle(ej) !== _b ? !1 : Y.s("3d.movable") ? G._movableFunc ? G._movableFunc(Y) : !0 : !1 - }, isSizeEditable: function (s) { - return Fq(s) ? this._sizeEditableFunc ? this._sizeEditableFunc(s) : !0 : !1 - }, isRotationEditable: function (K) { - return Fq(K) && K.IRotatable !== !1 ? this._rotationEditableFunc ? this._rotationEditableFunc(K) : !0 : !1 - }, handleDelete: function () { - this._editable && this.removeSelection() - }, zoomIn: function (Y) { - this.setZoom(lq, Y) - }, zoomOut: function (J) { - this.setZoom(1 / lq, J) - }, setZoom: function () { - var X = new tl, - k = new tl, - Z = new tl, - c = new tl; - return function (h, V) { - if (1 !== h) { - var R = this; - R._14o && R._14o.stop(!0); - var T, l = 1 / h; - X.copy(R.getCenter()), k.copy(R.getEye()); - var g = R._ortho; - if (g) { - if (T = R._orthoWidth, T < R._moveStep && h > 1) return - } else if (X.distanceTo(k) < R._moveStep && 1 > l) return; - var u = !1; - return R._zoomToCenter === !1 && R._lastZoomLP && (Z.copy(k).sub(X).normalize(), R._81O = null, c.copy(R.getHitPosition(R._lastZoomLP, X.toArray(), Z.toArray())), u = !0, R._lastZoomHit = c), (V = Il(V)) ? (V.action = function (N) { - R.fi({ - kind: R._zooming ? "betweenZoom" : "beginZoom" - }), R._zooming = 1; - var s = (l - 1) * N + 1; - g && R.setOrthoWidth(T * s), u ? (R.setEye(Z.lerpVectors(c, k, s).toArray()), R.setCenter(Z.lerpVectors(c, X, s).toArray())) : g || R.setEye(Z.lerpVectors(X, k, s).toArray()) - }, V._37o = function () { - delete R._14o, delete R._zooming, R.fi({ - kind: "endZoom" - }), R.onZoomEnded() - }, R._14o = Sf(V)) : (g && R.setOrthoWidth(T * l), u ? (R.setEye(Z.lerpVectors(c, k, l).toArray()), R.setCenter(Z.lerpVectors(c, X, l).toArray())) : g || R.setEye(Z.lerpVectors(X, k, l).toArray()), void 0) - } - } - }(), - setOrthoZoom: function (M, F) { - return this.setZoom(M, F) - }, getPositionInfo: function (k) { - var N = this, - l = N._eye, - j = N._center, - H = N.getAspect(), - q = k ? zc(fn(j, l, !0), fn(k, l)) : En(l, j); - if (N._ortho) { - var v = N._orthoWidth; - return { - length: q, - height: v / H, - width: v - } - } - var A = 2 * R(N._fovy / 2) * q; - return { - length: q, - height: A, - width: A * H - } - }, getCenterInfo: function () { - var G = this; - return G._81O || (G._81O = G.getPositionInfo()), Pm(G._81O) - }, rotate: function (p, B, X, O) { - var b = this; - if (p || B) { - O == F && (O = b._firstPersonMode), b._88O && b._88O.stop(!0); - var e = b._center, - N = b._eye, - l = b.getCenterInfo().length, - L = O ? e : N, - Y = O ? N : e, - v = fn(L, Y), - j = D(v[0], v[2]), - R = D(w(v[0] * v[0] + v[2] * v[2]), v[1]), - m = O ? sc : to; - return O && (B = -B), (X = Il(X)) ? (X.action = function (U) { - b.fi({ - kind: b._rotating ? "betweenRotate" : "beginRotate" - }), b._rotating = 1; - var t = j + p * U, - T = R + B * U; - T = O ? W - vg(b, W - T) : vg(b, T), v[0] = l * n(T) * n(t), v[1] = l * k(T), v[2] = l * n(T) * k(t), L[0] = Y[0] + v[0], L[1] = Y[1] + v[1], L[2] = Y[2] + v[2], b.fp(m, F, L) - }, X._37o = function () { - delete b._88O, delete b._rotating, b.fi({ - kind: "endRotate" - }), b.onRotateEnded() - }, b._88O = Sf(X)) : (j += p, R += B, R = O ? W - vg(b, W - R) : vg(b, R), v[0] = l * n(R) * n(j), v[1] = l * k(R), v[2] = l * n(R) * k(j), L[0] = Y[0] + v[0], L[1] = Y[1] + v[1], L[2] = Y[2] + v[2], b.fp(m, F, L), void 0) - } - }, pan: function (I, b, S, j) { - if (I || b) { - var u = this; - j == F && (j = u._firstPersonMode), u._89O && u._89O.stop(!0); - var m = wp(u), - x = [m[0] * I, m[4] * I, m[8] * I], - z = [m[1] * b, m[5] * b, m[9] * b], - $ = x[0] + z[0], - G = x[1] + z[1], - v = x[2] + z[2], - i = u._center, - W = u._eye; - if (j) { - var h = mb(u.getBoundaries(), W[0], W[2], W[0] + $, W[2] + v, w($ * $ + v * v)); - $ = h[0], v = h[1] - } - if (S = Il(S)) { - var r = Pm(W), - C = Pm(i); - return S.action = function (s) { - u.fi({ - kind: u._panning ? "betweenPan" : "beginPan" - }), u._panning = 1, i[0] = C[0] + $ * s, i[1] = C[1] + G * s, i[2] = C[2] + v * s, W[0] = r[0] + $ * s, W[1] = r[1] + G * s, W[2] = r[2] + v * s, u.fp(to, F, W), u.fp(sc, F, i) - }, S._37o = function () { - delete u._89O, delete u._panning, u.fi({ - kind: "endPan" - }), u.onPanEnded() - }, u._89O = Sf(S) - } - i[0] += $, i[1] += G, i[2] += v, W[0] += $, W[1] += G, W[2] += v, u.fp(to, F, W), u.fp(sc, F, i) - } - }, walk: function (_, H, p) { - if (_) { - var y = this; - p == F && (p = y._firstPersonMode), y._90O && y._90O.stop(!0); - var t = y._center, - E = y._eye, - S = fn(t, E, !0); - if (p) { - var D = mb(y.getBoundaries(), E[0], E[2], E[0] + S[0] * _, E[2] + S[2] * _, X(_)); - if (_ = En(D), !_) return; - S = [D[0] / _, 0, D[1] / _] - } - if (H = Il(H)) { - var Z = Pm(E), - R = Pm(t); - return H.action = function (T) { - y.fi({ - kind: y._walking ? "betweenWalk" : "beginWalk" - }), y._walking = 1; - var p = _ * T; - E[0] = Z[0] + S[0] * p, E[1] = Z[1] + S[1] * p, E[2] = Z[2] + S[2] * p, t[0] = R[0] + S[0] * p, t[1] = R[1] + S[1] * p, t[2] = R[2] + S[2] * p, y.fp(to, F, E), y.fp(sc, F, t) - }, H._37o = function () { - delete y._90O, delete y._walking, y.fi({ - kind: "endWalk" - }), y.onWalkEnded() - }, y._90O = Sf(H) - } - E[0] += S[0] * _, E[1] += S[1] * _, E[2] += S[2] * _, t[0] += S[0] * _, t[1] += S[1] * _, t[2] += S[2] * _, y.fp(to, F, E), y.fp(sc, F, t) - } - }, handleScroll: function (i, O) { - i.preventDefault(); - var w = this, - A = w._moveStep, - o = w.getDataInfoAt(i); - if (o) { - var d = o.data; - if (d && w.isInteractive(d)) { - var B = w.intersectObject(i, d); - if (B) { - var _ = B.part, - h = ii(d.s(_ + ".image") || d.s("shape3d." + _ + ".image") || d.s("all.image") || d.s("shape3d.image")); - if (h && Dj(h.scrollable, d, w)) return - } - } - } - return w.isFirstPersonMode() ? (w.isPannable() && w.pan(0, O > 0 ? A : -A), void 0) : (w.isZoomable() && (w._lastZoomLP = w.lp(i), w.setZoom(0 > O ? 1 / _f : _f), w._lastZoomLP = w._lastZoomHit = null), void 0) - }, handlePinch: function (O, Q) { - if (this.isZoomable()) { - if (Math.abs(O - Q) < u.pinchZoomThreshold) return; - this.setZoom(Q > O ? 1 / db : db) - } - }, reset: function () { - this.setCenter(u.graph3dViewCenter), this.setEye(u.graph3dViewEye), this.setUp(u.graph3dViewUp) - }, moveSelection: function (n, q, M) { - var W = this; - W.dm().beginTransaction(), qc(this.sm().toSelection(this.isMovable, this), n, q, M), W.dm().endTransaction() - }, getMoveMode: function (H, s) { - var Q = s.s("3d.move.mode"); - if (Q) return Q; - var W = "88", - V = "89", - p = "90"; - return Pf(H) || pl[W] && pl[V] && pl[p] ? "xyz" : pl[W] && pl[V] ? "xy" : pl[W] && pl[p] ? "xz" : pl[V] && pl[p] ? "yz" : pl[W] ? "x" : pl[V] ? "y" : pl[p] ? "z" : "xz" - }, handleTick: function () { - var C = this, - p = !1, - Y = C._moveStep, - a = Y, - V = !1, - o = !0, - D = C._rotateStep * (o ? -1 : 1); - if (C.isWalkable() || (a = 0), C.isPannable() || (Y = 0), C.isRotatable() || (D = 0), C._32Q) { - var E = (mm() - C._32Q) / 50; - a *= E, Y *= E, D *= E - } - C._31Q && (td(C._31Q), delete C._31Q, delete C._32Q), sb() && (p = !0, C.pan(-Y, 0, V, o)), Fr() && (p = !0, C.pan(Y, 0, V, o)), $j() && (p = !0, Pf() ? C.pan(0, Y, V, o) : C.walk(a, V, o)), Ib() && (p = !0, Pf() ? C.pan(0, -Y, V, o) : C.walk(-a, V, o)), Wk() && (p = !0, C.rotate(-D, 0, V, o)), _i() && (p = !0, C.rotate(D, 0, V, o)), Nk() && (p = !0, C.rotate(0, -D / 2, V, o)), ri() && (p = !0, C.rotate(0, D / 2, V, o)), p && (C._32Q = mm(), C._31Q = $e(C.handleTick, C)) - }, handleKeyDown: function (L) { - var p = this; - !ik(L) && Gj[L.keyCode] ? p.handleTick() : Dq(L) ? p.selectAll() : qq(L) ? p.handleDelete(L) : Cf(L) && this.isResettable() && p.reset() - }, checkDoubleClickOnNote: function (R, b, e) { - var A = this; - if (e === Rm) { - if (b.s("note.toggleable")) return b.s(ke, !b.s(ke)), A.fi({ - kind: "toggleNote", - event: R, - data: b, - part: e - }), !0 - } else if (e === Vk && b.s("note2.toggleable")) return b.s(Mh, !b.s(Mh)), A.fi({ - kind: "toggleNote2", - event: R, - data: b, - part: e - }), !0; - return !1 - }, checkDoubleClickOnRotation: function (W, _, p) { - return p === Pg ? (_.setRotationX(0), !0) : p === hb ? (_.setRotationY(0), !0) : p === pn ? (_.setRotationZ(0), !0) : !1 - }, onRotateEnded: function () { }, onWalkEnded: function () { }, getViewRatio: function (n) { - var U = this; - if (U.isOrtho()) return U.getWidth() / U.getOrthoWidth(); - var l = U.getCenter(), - J = U.getHeight(), - H = U.getEye(), - A = [l[0] - H[0], l[1] - H[1], l[2] - H[2]], - e = [n[0] - H[0], n[1] - H[1], n[2] - H[2]], - i = Math.sqrt(A[0] * A[0] + A[1] * A[1] + A[2] * A[2]), - R = 1 / Math.tan(U.getFovy() / 2); - return J * i * R / (e[0] * A[0] + e[1] * A[1] + e[2] * A[2]) - }, inViewSpace: function (L) { - var T, k = this, - I = k._transformPointToViewSpace(L), - O = k.getAspect(), - S = k.getNear(), - $ = k.getFar(); - return -I[2] < S || -I[2] > $ ? !1 : k.isOrtho() ? (T = k.getOrthoWidth() / 2, Math.abs(I[0]) <= T && Math.abs(I[1] * O) <= T) : (T = Math.sqrt(I[0] * I[0] + I[1] * I[1] + I[2] * I[2]) * Math.tan(k.getFovy() / 2), Math.abs(I[1] <= T) && Math.abs(I[0]) <= T * O) - }, getPVMatrix: function () { - var l, v = this; - return (l = v._18Q) || (l = Mc(v), v._18Q = xo(l, l, wp(v)), v._18Q._wh = v.getWidth() / 2 / v.getHeight()), l - }, getFrustum: function () { - var g = new br, - c = new Vc, - f = new Array(16); - return function () { - for (var e = this.getPVMatrix(), j = !1, $ = 0; 16 > $; $++) e[$] !== f[$] && (j = !0, f[$] = e[$]); - return j && c.setFromMatrix(g.fromArray(e)), c - } - }(), - toViewPosition: function (V) { - var x = this, - g = x.getWidth() / 2, - G = x.getHeight() / 2, - k = x.getPVMatrix(); - return V = Ek([V[0], V[1], V[2], 1], k), { - x: g + g * V[0] / V[3], - y: G - G * V[1] / V[3], - z: V[2] / V[3] - } - }, getHitPosition: function (S, u, Q) { - var X = this, - T = X.getWidth(), - o = X.getHeight(), - h = S.target ? X.lp(S) : S, - i = h.x - T / 2, - x = h.y - o / 2, - z = X.getCenterInfo(), - E = wp(X); - u = u ? u : [0, 0, 0], Q = Q ? Q : [0, 1, 0], i = i / T * z.width, x = -1 * x / o * z.height; - var F = [E[0] * i, E[4] * i, E[8] * i], - q = [E[1] * x, E[5] * x, E[9] * x], - e = [F[0] + q[0], F[1] + q[1], F[2] + q[2]], - w = X.getCenter(), - N = cc(X, u, Q, [e[0] + w[0], e[1] + w[1], e[2] + w[2]]); - return N ? N : [0, 0, 0] - }, intersectObject: function (k, h) { - return this._raycaster.intersectObject(k, h) - }, intersectObjects: function (U, t, g) { - return this._raycaster.intersectObjects(U, t, g) - }, getLineLength: function (j) { - this.validate(); - var Z = this.getData3dUI(j); - if (Z && Z.getCache) { - var K = Z.getCache(); - if (K) return K[K.length - 1].length - } - return 0 - }, getLineOffset: function (V, k) { - var i = this.getData3dUI(V); - if (i && i.getCache) { - var U = i.getCache(); - if (U) { - var J = Qd(U, k); - if (!V.r3) return J; - var u = V.r3(); - if (0 === u[0] && 0 === u[1] && 0 === u[2]) return J; - var x = new tl(V.p3()), - d = new tl(J.point).sub(x), - X = new tl(J.tangent).add(d), - R = (new fs).setFromEuler(new gg(u, V.getRotationMode(), !0)); - return d.applyQuaternion(R), X.applyQuaternion(R), { - point: d.add(x), - tangent: X.sub(d).normalize() - } - } - } - return F - }, isLabelVisible: function () { - return !0 - }, isNoteVisible: function () { - return !0 - }, moveCamera: function (M, i, X) { - var V = this, - h = V.getEye(); - h = [h[0], h[1], h[2]]; - var B = V.getCenter(); - if (B = [B[0], B[1], B[2]], M || (M = h), i || (i = B), V._flyAnim && V._flyAnim.stop(!0), X = Il(X), !X) return V.setEye(M[0], M[1], M[2]), V.setCenter(i[0], i[1], i[2]), delete V._flyAnim, !0; - var H = [M[0] - h[0], M[1] - h[1], M[2] - h[2]], - Q = [i[0] - B[0], i[1] - B[1], i[2] - B[2]]; - return X.action = function (j) { - V.setCenter(B[0] + Q[0] * j, B[1] + Q[1] * j, B[2] + Q[2] * j), V.setEye(h[0] + H[0] * j, h[1] + H[1] * j, h[2] + H[2] * j) - }, X._37o = function () { - delete V._flyAnim - }, V._flyAnim = Sf(X) - }, flyTo: function () { - function u(X, R, C) { - if (C instanceof O.Node) { - v.fromArray(sj(C, R.getMat(C))); - var A = C.getAnchor3d(); - X.push((new tl).set(0 - A.x, 0 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(0 - A.x, 0 - A.y, 1 - A.z).applyMatrix4(v)), X.push((new tl).set(0 - A.x, 1 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(0 - A.x, 1 - A.y, 1 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 0 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 0 - A.y, 1 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 1 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 1 - A.y, 1 - A.z).applyMatrix4(v)) - } - } - var m = new tl, - D = new tl, - N = new tl, - c = new tl, - v = new br, - q = new O.Math.Quaternion, - d = new gg, - E = new Hi; - return function (W, e, p) { - var $ = this; - if (p !== Z) e = { - animation: e, - ratio: p - }; - else { - var y = typeof e; - ("boolean" === y || "object" === y && e.duration) && (e = { - animation: e - }) - } - e = e || {}, m.fromArray($.getEye()), D.fromArray($.getCenter()); - var g, H, Q = [], - X = e.center, - T = e.distance === Z; - if (X && N.fromArray(X), W instanceof O.Node) X || N.fromArray(W.p3()), T && (u(Q, $, W), g = Q.length); - else { - if (W || (W = $.dm().getDatas()), !W.length) return; - if ((T || !X) && (Q = [], W.forEach(function (_) { - u(Q, $, _) - }), g = Q.length, !g)) return; - X || (E.setFromPoints(Q), N.copy(E.min).add(E.max).multiplyScalar(.5)) - } if ($.setCenter(N.x, N.y, N.z), c.subVectors(m, D), e.direction || e.worldDirection) { - !e.worldDirection && W instanceof O.Node ? q.setFromEuler(d.set(W.r3(), W.getRotationMode(), !0)) : q.set(0, 0, 0, 1); - var C = c.length(); - c.fromArray(e.worldDirection || e.direction).applyQuaternion(q).setLength(C) - } - var B = 0; - if (T) { - var i, j, w, p = e.ratio || .8, - h = e.xRatio || p, - o = e.yRatio || p; - if ($.isOrtho()) { - var P = -1 / 0; - for ($._eye[0] = c.x + N.x, $._eye[1] = c.y + N.y, $._eye[2] = c.z + N.z, i = Mc($), xo(i, i, wp($)), H = 0; g > H; H++) w = Q[H], j = Ek([w.x, w.y, w.z, 1], i), P = Math.max(P, Math.max(Math.abs(j[0]) / h, Math.abs(j[1]) / o)); - B = $.getOrthoWidth() * P, c.add(N) - } else { - for (var s, L, z = $.getNear(), A = 10; A--;) { - for ($._eye[0] = c.x + N.x, $._eye[1] = c.y + N.y, $._eye[2] = c.z + N.z, i = Mc($), xo(i, i, wp($)), s = !0, L = -1 / 0, H = 0; g > H; H++) { - if (w = Q[H], j = Ek([w.x, w.y, w.z, 1], i), j[3] < z && A) { - c.multiplyScalar(2), s = !1; - break - } - L = Math.max(L, Math.max(Math.abs(j[0]) / h, Math.abs(j[1]) / o) - j[3]) - } - if (s) break - } - c.setLength(L + c.length()).add(N) - } - } else c.setLength(e.distance).add(N); - $._flyAnim && $._flyAnim.stop(!0); - var S = Il(e.animation); - if (S) { - $.setEye(m.x, m.y, m.z), $.setCenter(D.x, D.y, D.z); - var k = (new tl).subVectors(c, m), - U = (new tl).subVectors(N, D); - if (B) var f = $.getOrthoWidth(); - var R = new tl, - l = new tl, - I = S.action, - n = S._37o, - V = m.clone(), - M = D.clone(); - return S.action = function (J, O) { - R.copy(V).addScaledVector(k, J), l.copy(M).addScaledVector(U, J), $.setCenter(l.x, l.y, l.z), $.setEye(R.x, R.y, R.z), B && $.setOrthoWidth((B - f) * J + f), I && I(J, O) - }, S._37o = function () { - delete $._flyAnim, n && n() - }, { - lastEye: m, - lastCenter: D, - eye: c, - center: N, - orthoWidth: B, - animation: $._flyAnim = Sf(S) - } - } - return $.setEye(c.x, c.y, c.z), B && $.setOrthoWidth(B), delete $._flyAnim, { - lastEye: m, - lastCenter: D, - eye: c, - center: N, - orthoWidth: B - } - } - }(), - getBoundingBox: function () { - function Y(E, J, g) { - $.fromArray(sj(g, J.getMat(g))); - var A = g.getAnchor3d(); - E.push((new tl).set(0 - A.x, 0 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(0 - A.x, 0 - A.y, 1 - A.z).applyMatrix4($)), E.push((new tl).set(0 - A.x, 1 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(0 - A.x, 1 - A.y, 1 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 0 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 0 - A.y, 1 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 1 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 1 - A.y, 1 - A.z).applyMatrix4($)) - } - var $ = new br; - return function (d) { - if (d = d || this.sm().getSelection(), d instanceof O.Node && (d = [d]), 0 === d.length) return F; - var X = []; - d.forEach(function (Q) { - Fq(Q) && Y(X, this, Q) - }, this); - var N = [1 / 0, 1 / 0, 1 / 0], - Q = [-1 / 0, -1 / 0, -1 / 0]; - return X.forEach(function (U) { - N[0] = Math.min(U.x, N[0]), N[1] = Math.min(U.y, N[1]), N[2] = Math.min(U.z, N[2]), Q[0] = Math.max(U.x, Q[0]), Q[1] = Math.max(U.y, Q[1]), Q[2] = Math.max(U.z, Q[2]) - }), { - min: N, - max: Q - } - } - }(), - setBatchInfo: function (A, T) { - var w = this._batchInfoMap[A]; - this._batchInfoMap[A] = T, this.fp("batchInfo", w, T) - }, getBatchInfo: function (q) { - return this._batchInfoMap[q] || ef[q] - } - }), Eh.RenderEnv = function (I) { - this.gv = I, this.enable = !1 - }, o.defineProperties(Eh.RenderEnv.prototype, { - debugOn: { - get: function () { - return this._debugOn - }, set: function ($) { - this._debugOn = $, this.capture && this.capture() - } - } - }), o.assign(Eh.RenderEnv.prototype, { - renderEnvToCube: function (w, Y, m, N) { - var u = this, - s = u.gv; - if (!w || !Y || !m) return u.enable = !1, u._42 = null, void 0; - u.enable = !0; - var y = Math.floor(N / w * Y), - G = s.getGL(), - Q = u._renderTargets; - Q ? Q.length < m && (Q = u._renderTargets = Q.concat(new Array(m - Q.length))) : Q = u._renderTargets = new Array(m); - for (var U = 0; m > U; U++) Q[U] ? Q[U].setSize(G, N, y) : Q[U] = new Eh.RenderTarget(s, G, N, y); - var M = !1; - u.capture = function () { - M = !0, s._42(), M = !1 - }; - var c = new tl, - O = new tl, - H = new tl, - J = new tl, - V = (new tl).setY(0), - v = 2 * Math.PI / m, - T = w / 2 / Math.tan(Math.PI / m), - I = 2 * Math.atan2(Y / 2, T), - t = w / Y; - u._42 = function (S, R, r, B) { - var G = u._debugOn; - if (!M && !G) return !1; - c.copy(s.getEye()), J.copy(s.getCenter()).sub(c); - var K = Math.atan2(J.z, J.x), - Z = s.getNear(), - L = s.getFovy(), - F = s.getAspect(); - O.copy(s.getCenter()); - for (var Y, x = 0; m > x; x++) - if (Y = Q[x], V.setZ(Math.cos(K)).setX(Math.sin(K)).multiplyScalar(T), K -= v, H.addVectors(c, V), s.setNear(T), s.setCenter([H.x, H.y, H.z]), s.setFovy(I), s.setAspect(t), G) { - var y = Math.round(R / m); - ts.for(S).glState.viewport = [y * x, 0, y, r], B() - } else So(S, Y.frame), ts.for(S).glState.viewport = [0, 0, Y.width, Y.height], S.clear(S.COLOR_BUFFER_BIT), B(), Ar(S), Y.assureTexture(); - return s.setNear(Z), s.setCenter([O.x, O.y, O.z]), s.setFovy(L), s.setAspect(F), !0 - }, u.capture() - }, getTextureInfo: function (G) { - var Q = this._renderTargets; - if (!Q) return null; - var D = this._renderTargets[G]; - return D ? { - index: G, - texture: D.texture, - textureName: D.uuid - } : null - } - }), o.assign(Eh.Graph3dView.prototype, { - renderEnvToCube: function (j, p, N, G) { - var U = this; - U.envRenderer || (U.envRenderer = new Eh.RenderEnv(U)), U.envRenderer.renderEnvToCube(j, p, N, G) - } - }); - var kq = ["left", "front", "right", "back", "top", "bottom"], - Km = Eh._RenderList = function () { - function c() { - J.length = 0, j.length = 0, l = {} - } - - function $(n) { - var q = n.gv, - N = n.data; - if (_ && !Ad) return n._renderParams = null, void 0; - var C, u, G, f, w = n.shapeModel; - if (w) { - var L, m, S, $ = N.s("shape3d.transparent") || N.s("points.transparent"); - for (ip(w) || (L = Dj(w.transparent, N, q), w = [w]), G = 0, f = w.length; f > G; G++) S = w[G], m = Dj(S.transparent, N, q), m === Z && (m = L), m === Z && (m = $), m ? u = !0 : C = !0 - } - for (G = 0, f = kq.length; f > G; G++) { - var k = n[kq[G]]; - k && (k.transparent ? u = !0 : C = !0) - } - q.isLabelVisible(N) && (n.labelInfo && (N.s(Bg + ".transparent") ? u = !0 : C = !0), n.label2Info && (N.s(Qk + ".transparent") ? u = !0 : C = !0)), q.isNoteVisible(N) && (n.noteInfo && (N.s(Rm + ".transparent") ? u = !0 : C = !0), n.note2Info && (N.s(Vk + ".transparent") ? u = !0 : C = !0)), n._38o && (u = C = !0), u || (C = !0), n._renderParams = { - opaque: C, - transparent: u - } - } - - function M(N, x) { - x && $(N); - var r = N.data, - n = r._id; - if (!l[n]) { - l[n] = !0; - var u = N._renderParams; - u && u.visible !== !1 && (N = { - ui: N, - data: r, - z: r._z, - id: n - }, u.opaque && J.push(N), u.transparent && j.push(N)) - } - } - - function D() { - J.length > 1 && J.sort(i), j.length > 1 && j.sort(p) - } - - function S(d) { - d ? (kb(y, h, d), kb(X, W, d), kb(H, f, d)) : (y = this.batchModelMap = {}, h = this.batchIndexMap = {}, X = this.polylineModelMap = {}, W = this.polylineIndexMap = {}, H = this.wireframeModelMap = {}, f = this.wireframeIndexMap = {}), this.markBatchInvalid() - } - - function z(m) { - m ? kb(y, h, m) : (y = this.batchModelMap = {}, h = this.batchIndexMap = {}), this.markBatchInvalid() - } - - function U(V) { - V ? kb(X, W, V) : (X = this.polylineModelMap = {}, W = this.polylineIndexMap = {}), this.markBatchInvalid() - } - - function q(U) { - U ? kb(H, f, U) : (H = this.wireframeModelMap = {}, f = this.wireframeIndexMap = {}), this.markBatchInvalid() - } - - function s() { - return this._batchInvalid - } - - function t() { - this._batchInvalid = !0 - } - - function e() { - this._batchInvalid = null - } - var J = [], - j = [], - y = {}, - h = {}, - X = {}, - W = {}, - H = {}, - f = {}, - l = {}; - return { - opaque: J, - transparent: j, - init: c, - push: M, - batchModelMap: y, - batchIndexMap: h, - polylineModelMap: X, - polylineIndexMap: W, - wireframeModelMap: H, - wireframeIndexMap: f, - ivBatch: S, - ivModelBatch: z, - ivPolylineBatch: U, - ivWireframeBatch: q, - markBatchInvalid: t, - isBatchInvalid: s, - onUpdated: e, - sort: D - } - }, - Ud = Eh._RenderLists = function () { - function B() { - for (var H in t) t[H].init() - } - - function f() { - for (var T in t) t[T].onUpdated() - } - - function X(T, D) { - T = T || "main"; - var Z = t[T]; - return !Z && D && (Z = t[T] = new Km), Z - } - - function u(D, i) { - var b = D.data.getRenderLayer(), - H = X(b, !0); - H.push(D, i) - } - - function q(Z) { - for (var w in t) Z(t[w]) - } - var t = {}; - return { - init: B, - onUpdated: f, - get: X, - push: u, - each: q, - lists: t - } - }, - fq = Eh.RenderTarget = function (T, J, E, F, t) { - var C = this; - t = t || {}, t.samples = Math.min(T._glCapabilities.maxSamples, t.samples && t.samples > 1 && 2 === T._webGLVersion ? t.samples : 0), C.options = t, C.uuid = O.Math.generateUUID(), C.gv = T, C.init(T, J, t), t.samples && !T._glCapabilities._maxSamplesChecked ? C.setSize(J, E || 1, F || 1) : C.setSize(J, E, F) - }; - o.assign(Eh.RenderTarget.prototype, { - bind: function (Z) { - So(Z, this.options.samples ? this._MSAAFbo : this.frame) - }, unbind: function (R) { - Ar(R), this.options.samples && (R.bindFramebuffer(R.READ_FRAMEBUFFER, this._MSAAFbo), R.bindFramebuffer(R.DRAW_FRAMEBUFFER, this.frame), R.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, R.COLOR_BUFFER_BIT, R.NEAREST), R.bindFramebuffer(R.READ_FRAMEBUFFER, null), R.bindFramebuffer(R.DRAW_FRAMEBUFFER, null)) - }, init: function (y, P, j) { - var Y = this, - E = Y.texture = P.createTexture(); - P.activeTexture(P.TEXTURE0), an(P, E); - var G = j.samples, - D = G ? P.NEAREST : P.LINEAR; - P.texParameteri(P.TEXTURE_2D, P.TEXTURE_MIN_FILTER, j.minFilter || D), P.texParameteri(P.TEXTURE_2D, P.TEXTURE_MAG_FILTER, j.magFilter || D), an(P, null), Y.render = P.createRenderbuffer(), Y.frame = P.createFramebuffer(), y._2O[Y.uuid] = E - }, assureTexture: function () { - var Z = this, - z = Z.uuid, - h = Z.gv._2O; - h[z] || (h[z] = Z.texture) - }, setSize: function (O, D, q) { - var n = this; - if (D && q && (n.width !== D || n.height !== q)) { - var R = O.RGBA, - A = O.TEXTURE_2D, - z = O.RENDERBUFFER, - N = O.FRAMEBUFFER, - B = n.options.samples; - if (O.activeTexture(O.TEXTURE0), an(O, n.texture), O.texImage2D(A, 0, R, D, q, 0, R, O.UNSIGNED_BYTE, F), Rc.isPOT(D) && Rc.isPOT(q) && !n.options.clampToEdge ? (O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_S, O.REPEAT), O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_S, O.REPEAT)) : (O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_S, O.CLAMP_TO_EDGE), O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_T, O.CLAMP_TO_EDGE)), O.bindRenderbuffer(z, n.render), B) { - var w = n.gv._glCapabilities; - if (w._maxSamplesChecked) O.renderbufferStorageMultisample(z, B, O.DEPTH_COMPONENT16, D, q); - else { - for (O.getError(); B > 1 && (O.renderbufferStorageMultisample(z, B, O.DEPTH_COMPONENT16, D, q), O.getError());) B = Math.floor(B >> 1); - 1 >= B && (B = 0, O.texParameteri(O.TEXTURE_2D, O.TEXTURE_MIN_FILTER, n.options.minFilter || O.LINEAR), O.texParameteri(O.TEXTURE_2D, O.TEXTURE_MAG_FILTER, n.options.magFilter || O.LINEAR), O.renderbufferStorage(z, O.DEPTH_COMPONENT16, D, q)), w._maxSamplesChecked = !0, w.maxSamples = n.options.samples = B - } - } else O.renderbufferStorage(z, O.DEPTH_COMPONENT16, D, q); - B && !n._MSAAFbo && (n._MSAAFbo = O.createFramebuffer(), n._MSAARbO = O.createRenderbuffer()), So(O, n.frame), O.framebufferTexture2D(N, O.COLOR_ATTACHMENT0, A, n.texture, 0), B || O.framebufferRenderbuffer(N, O.DEPTH_ATTACHMENT, z, n.render), Ar(O), B && (O.bindRenderbuffer(O.RENDERBUFFER, n._MSAARbO), O.renderbufferStorageMultisample(O.RENDERBUFFER, B, O.RGBA8, D, q), So(O, n._MSAAFbo), O.framebufferRenderbuffer(O.FRAMEBUFFER, O.COLOR_ATTACHMENT0, O.RENDERBUFFER, n._MSAARbO), O.framebufferRenderbuffer(N, O.DEPTH_ATTACHMENT, z, n.render), Ar(O)), an(O, F), O.bindRenderbuffer(z, F), n.width = D, n.height = q - } - }, toCanvas: function () { - var e = this, - u = e.gv.getGL(); - So(u, e.frame); - var H = e.width, - K = e.height, - C = new Uint8Array(4 * H * K); - u.readPixels(0, 0, H, K, u.RGBA, u.UNSIGNED_BYTE, C), Ar(u); - var N = U.createElement("canvas"); - N.width = H, N.height = K; - var $ = N.getContext("2d"), - l = $.createImageData(H, K); - return l.data.set(C), $.putImageData(l, 0, 0), N - } - }); - var Vq = Eh.Interactor = function (K) { - this.gv = this.g3d = K - }; - Dn("Interactor", o, { - ms_listener: 1, - getView: function () { - return this.gv.getView() - }, setUp: function () { - this.addListeners() - }, tearDown: function () { - this.removeListeners() - } - }); - var ps = Eh.DefaultInteractor = function (U) { - fi(ps, this, [U]) - }; - Dn("DefaultInteractor", Vq, { - getDataInfoAt: function (f, e) { - var j = this.gv, - R = j.getDataInfoAt(f); - if (!j.isBlockSelectable() || !R || !R.data) return R; - if (!e && j.isSelected(R.data)) return R; - for (var d = R.data; - (d = d.getParent()) && d instanceof O.Block && j.isSelectable(d);) { - var o = j.isSelected(d); - if (o && e) break; - if (R = { - data: d, - part: R - }, o && !e) break - } - return R - }, handle_contextmenu: function (y) { - Qc(y) - }, handle_mousewheel: function (H) { - this.gv.handleScroll(H, H.wheelDelta / 40) - }, handle_DOMMouseScroll: function (l) { - 2 === l.axis && this.gv.handleScroll(l, -l.detail) - }, handle_keydown: function (s) { - this.gv.handleKeyDown(s) - }, handle_mousedown: function (J) { - this.handle_touchstart(J) - }, handle_touchstart: function (S) { - Qc(S); - var v = this, - O = v.gv, - f = jj(S), - o = v.getDataInfoAt(S), - d = o ? o.data : F, - K = o ? o.part : F, - $ = O.sm(), - r = Bf(S), - U = Qj(S); - O.setFocus(S) && (v._62O = F, v._57I = F, v.pendingClickThrough = F, v.__lastClientPoint__ = lb(S), d ? ik(S) ? $.co(d) ? $.rs(d) : $.as(d) : $.co(d) ? d instanceof Br && d.isClickThroughEnabled() && jj(S) && (v.pendingClickThrough = lb(S)) : $.ss(d) : f && (ik(S) ? O.isRectSelectable() && (v._62O = nj) : v._57I = lb(S)), v._31Q && (td(v._31Q), delete v._31Q, delete v._32Q), v._62O || (O.isFirstPersonMode() && (Pf(S) || Fm(S) || U > 2 ? v._62O = "pan" : O.isMouseRoamable() || li(S) ? (v._62O = "roaming", v.foward = r && jj(S), v._32Q = mm(), v._31Q = $e(v.tick, v)) : f || (v._62O = "roaming")), v._62O || (f && r && Nr[K] ? (v._62O = K, v.p3 = d.p3()) : f && r && Fq(d) && O.isSelected(d) ? O.isMovable(d) ? (v._62O = "move", v.p3 = d.p3(), v.movedata = d) : O._39Q(d) && (v._62O = "none") : li(S) && (U > 2 ? v._62O = "pan" : 2 === U && (v.dist = zo(S), v._62O = "pinch")))), v.point = O.lp(S), Ui(v, S), wm(S) ? O.handleDoubleClick(S, d, K) : O.handleClick(S, d, K)) - }, tick: function () { - var p = this, - J = p.gv, - y = J._moveStep; - p.point && J.isWalkable() && (p._32Q && (y *= (mm() - p._32Q) / 50), J.walk(p.foward ? y : -y), p._32Q = mm(), p._31Q = $e(p.tick, p)) - }, handle_mouseup: function (h) { - this.handle_touchend(h) - }, handle_touchend: function (m) { - var X = this._57I; - if (X && (En(X, lb(m)) <= 1 && this.gv.sm().cs(), this._57I = F), X = this.pendingClickThrough) { - if (En(X, lb(m)) <= 1) { - var N = this.getDataInfoAt(m); - N && N.data instanceof Br && N.data.isClickThroughEnabled() && (N = this.getDataInfoAt(m, !0), N && (m.clickThrough = !0, this.gv.sm().ss(N.data))) - } - this.pendingClickThrough = null - } - }, handleWindowMouseMove: function (p) { - this.handleWindowTouchMove(p) - }, handleWindowTouchMove: function (b) { - var F, Q, O = this, - m = O.gv, - r = O._62O, - N = O.point, - A = m.dm(), - R = m.lp(b), - s = R.x - N.x, - w = R.y - N.y, - x = m.getWidth(), - t = m.getHeight(); - if (x && t) { - var j = lb(b), - k = wq(m, j, O.__lastClientPoint__), - I = En({ - x: 0, - y: 0 - }, k), - T = -$ * s / x, - M = -$ * w / t; - if ("roaming" === r) O.rotate(b, T / 2, M / 2); - else if (r === Pg || r === hb || r === pn) m._86O || A.beginTransaction(), m.fi({ - kind: m._86O ? "betweenEditRotation" : "beginEditRotation", - event: b - }), m._86O = 1, m.sm().each(function (C) { - if (Fq(C) && m.isRotationEditable(C)) { - var Z = X(T) > X(M) ? T : M; - r === Pg ? C.setRotationX(C.getRotationX() + Z) : r === hb ? C.setRotationY(C.getRotationY() + Z) : r === pn && C.setRotationZ(C.getRotationZ() + Z) - } - }); - else if ("move" === r || Nr[r]) { - if (r === zb || r === Oh || r === dh) m._87O || A.beginTransaction(), m.fi({ - kind: m._87O ? "betweenEditScale" : "beginEditScale", - event: b - }), m._87O = 1; - else { - if (!m._moving) { - if (I < u.touchMoveThreshold) return; - A.beginTransaction() - } - m.fi({ - kind: m._moving ? "betweenMove" : "beginMove", - event: b - }), m._moving = 1 - } - var U, y = O.p3, - n = m.getPositionInfo(y), - C = wp(m); - U = r === Zo ? "x" : r === te ? "y" : r === ll ? "z" : r === zb ? "sx" : r === Oh ? "sy" : r === dh ? "sz" : m.getMoveMode(b, O.movedata), s = s / x * n.width, w = -1 * w / t * n.height; - var V, d, p = [C[0] * s, C[4] * s, C[8] * s], - e = [C[1] * w, C[5] * w, C[9] * w], - W = p[0] + e[0], - g = p[1] + e[1], - v = p[2] + e[2], - J = [y[0] + W, y[1] + g, y[2] + v], - Z = fn(m.getEye(), J, !0); - if ("xyz" === U ? (V = J, m.moveSelection(W, g, v)) : "xz" === U ? (V = cc(m, y, [0, 1, 0], J), V && m.moveSelection(V[0] - y[0], 0, V[2] - y[2])) : "xy" === U ? (V = cc(m, y, [0, 0, 1], J), V && m.moveSelection(V[0] - y[0], V[1] - y[1], 0)) : "yz" === U ? (V = cc(m, y, [1, 0, 0], J), V && m.moveSelection(0, V[1] - y[1], V[2] - y[2])) : "x" === U || "sx" === U ? (Z[0] = 0, V = cc(m, y, Z, J), V && (d = V[0] - y[0], "x" === U ? m.moveSelection(d, 0, 0) : m.sm().each(function (i) { - Fq(i) && m.isSizeEditable(i) && (F = i.getScaleX() + d / 100, Q = F / i.getScaleX(), i.setScaleX(F), Pf(b) && (i.setScaleY(i.getScaleY() * Q), i.setScaleTall(i.getScaleTall() * Q))) - }))) : "y" === U || "sy" === U ? (Z[1] = 0, V = cc(m, y, Z, J), V && (d = V[1] - y[1], "y" === U ? m.moveSelection(0, d, 0) : m.sm().each(function (k) { - Fq(k) && m.isSizeEditable(k) && (F = k.getScaleTall() + d / 100, Q = F / k.getScaleTall(), k.setScaleTall(F), Pf(b) && (k.setScaleY(k.getScaleY() * Q), k.setScaleX(k.getScaleX() * Q))) - }))) : ("z" === U || "sz" === U) && (Z[2] = 0, V = cc(m, y, Z, J), V && (d = V[2] - y[2], "z" === U ? m.moveSelection(0, 0, d) : m.sm().each(function (n) { - Fq(n) && m.isSizeEditable(n) && (F = n.getScaleY() + d / 100, Q = F / n.getScaleY(), n.setScaleY(F), Pf(b) && (n.setScaleX(n.getScaleX() * Q), n.setScaleTall(n.getScaleTall() * Q))) - }))), !V) return; - O.p3 = V - } else if (r === nj) { - var z = O.div; - z || (z = O.div = dd(), sn(O.getView(), z), z.op = N, z.style.background = m.getRectSelectBackground()), m.fi({ - kind: m._rectSelecting ? "betweenRectSelect" : "beginRectSelect", - event: b - }), m._rectSelecting = 1, z.rect = ms(z.op, R), qp(z, z.rect) - } else if ("pinch" === r && 2 === Qj(b)) { - m.fi({ - kind: m._pinching ? "betweenPinch" : "beginPinch", - event: b - }), m._pinching = 1; - var d = zo(b); - m._lastZoomLP || (m._lastZoomLP = ne(b)), m.handlePinch(d, O.dist), O.dist = d - } else "pan" === r || Pf(b) || Fm(b) ? O.pan(b, s, w) : "none" === r || m.isFirstPersonMode() || O.rotate(b, T, M); - O.point = R - } - }, pan: function (r, G, u) { - var B = this.gv; - if (B.isPannable()) { - var H = B.getWidth(), - j = B.getHeight(); - if (!H || !j) return; - var w = B.getCenterInfo(), - e = G / H * w.width, - f = -1 * u / j * w.height; - B.fi({ - kind: B._panning ? "betweenPan" : "beginPan", - event: r - }), B._panning = 1, B.pan(-e, -f) - } - }, rotate: function (I, e, y) { - var H = this.gv; - H.isRotatable() && (H.fi({ - kind: H._rotating ? "betweenRotate" : "beginRotate", - event: I - }), H._rotating = 1, H.rotate(e, y)) - }, handleWindowMouseUp: function (G) { - this.handleWindowTouchEnd(G) - }, handleWindowTouchEnd: function (K) { - var _ = this, - u = _.gv, - g = u.dm(), - H = _.div; - if (H) { - var V = u.getDatasInRect(H.rect); - if (!V.isEmpty()) { - var n = u.sm(), - q = n.toSelection(); - V.each(function (w) { - n.co(w) ? q.remove(w) : q.add(w) - }), n.ss(q) - } - yj(H) - } - u._moving && (delete u._moving, u.fi({ - kind: "endMove", - event: K - }), u.onMoveEnded(), g.endTransaction()), u._panning && (delete u._panning, u.fi({ - kind: "endPan", - event: K - }), u.onPanEnded()), u._rotating && (delete u._rotating, u.fi({ - kind: "endRotate", - event: K - }), u.onRotateEnded()), u._86O && (delete u._86O, u.fi({ - kind: "endEditRotation", - event: K - }), g.endTransaction()), u._87O && (delete u._87O, u.fi({ - kind: "endEditScale", - event: K - }), g.endTransaction()), u._pinching && (delete u._pinching, u.fi({ - kind: "endPinch", - event: K - }), u.onPinchEnded()), u._rectSelecting && (delete u._rectSelecting, u.fi({ - kind: "endRectSelect", - event: K - }), u.onRectSelectEnded()), u._walking && (delete u._walking, u.fi({ - kind: "endWalk", - event: K - }), u.onWalkEnded()), u._lastZoomLP = u._lastZoomHit = null, _.dist = _.point = _._62O = _.p3 = _.movedata = _.div = _._57I = _.pendingClickThrough = _._32Q = _._31Q = _.foward = F, _.__lastClientPoint__ = F - } - }); - var cl = Eh.MapInteractor = function (I) { - fi(cl, this, [I]), this._keepHorizon = !0, this._threshold = 2, this._touchScaleThreshold = .05, this._touchRotateThreshold = .03, this._touchScaleCheckAccuracy = .01, this._panButton = "right", this.maxPhi = 5 * Math.PI / 12 - }; - Dn("MapInteractor", Vq, { - handle_contextmenu: function (K) { - Qc(K) - }, handle_mousewheel: function (i) { - this.gv.handleScroll(i, i.wheelDelta / 40) - }, handle_DOMMouseScroll: function (N) { - 2 === N.axis && this.gv.handleScroll(N, -N.detail) - }, handle_keydown: function (f) { - this.gv.handleKeyDown(f) - }, handle_mousedown: function (S) { - this.handle_touchstart(S) - }, handle_touchstart: function (B) { - Qc(B); - var $ = this, - e = $.gv; - if (e.setFocus(B)) { - var K = e.getDataInfoAt(B), - P = K ? K.data : F, - T = K ? K.part : F, - X = $.editing = { - point: e.lp(B) - }; - li(B) ? X.touch = !0 : (X.touch = !1, X.clickLeft = jj(B), X.pan = Fm(B) ? !0 : "left" === this.panButton === X.clickLeft), P && e._39Q(P) && (X.preventDefault = !0), Ui($, B), wm(B) ? e.handleDoubleClick(B, P, T) : e.handleClick(B, P, T) - } - }, handle_mouseup: function (b) { - this.handle_touchend(b) - }, handle_touchend: function () { }, handleWindowMouseMove: function (X) { - this.handleWindowTouchMove(X) - }, handleWindowTouchMove: function (Z) { - var Y = this, - z = Y.gv, - e = Y.editing; - if (e) { - var V = z.lp(Z), - N = e.point, - s = V.x - N.x, - o = V.y - N.y; - if (!e.moved) { - if (Math.abs(s) < Y.threshold && Math.abs(o) < Y.threshold && !(Z.touches && Z.touches.length > 1)) return; - e.moved = !0 - } - if (!e.preventDefault) - if (e.point = V, e.touch) { - var G = Z.touches.length; - if (2 !== G) Y.pan(Z, s, o); - else { - if (1 >= G) return; - var p = Z.touches, - E = { - x: p[0].clientX, - y: p[0].clientY - }, - w = { - x: p[1].clientX, - y: p[1].clientY - }, - g = { - x: w.x - E.x, - y: w.y - E.y - }, - y = e.lastCenter, - A = Math.atan2(g.y, g.x), - D = e.theta, - v = 0; - D == F ? D = e.theta = A : (v = A - D, e.thetaStarted || Math.abs(v) > Y.touchRotateThreshold ? (e.thetaStarted = !0, e.theta = A) : v = 0); - var n = W * (E.y + w.y) / 2 / z.getHeight(), - q = e.phi, - a = 0; - q == F ? q = e.phi = n : (a = n - q, e.phiStarted || Math.abs(a) > Y.touchRotateThreshold ? (e.phiStarted = !0, e.phi = n) : a = 0); - var I, b = Math.sqrt(g.x * g.x + g.y * g.y), - Q = e.vlen; - if (Q) { - var P = E.x - y.x, - h = E.y - y.y, - f = w.x - y.x, - X = w.y - y.y, - U = Math.sqrt(P * P + h * h), - x = Math.sqrt(f * f + X * X), - d = Q / 2, - R = Y._sign2(U - d), - L = Y._sign2(x - d); - 0 > R * L || 0 === R && 0 === L ? (I = 1, e.vlen = b) : (I || (I = b / Q), e.scaleStarted || Math.abs(I - 1) > Y.touchScaleThreshold ? (e.vlen = b, e.scaleStarted = !0) : I = 1) - } else Q = e.vlen = b, I = 1; - 1 !== I && z.setZoom(I), (a || v) && Y.rotate(Z, v, -a), e.lastCenter = { - x: (w.x + E.x) / 2, - y: (w.y + E.y) / 2 - } - } - } else if (e.pan) Y.pan(Z, s, o); - else { - var r = z.getWidth(), - u = z.getHeight(); - if (!r || !u) return; - var S = -$ * s / r, - l = -$ * o / u; - Y.rotate(Z, S, l) - } - } - }, _sign2: function (s) { - return Math.abs(s) < this._touchScaleCheckAccuracy ? 0 : s > 0 ? 1 : -1 - }, handleWindowMouseUp: function (H) { - this.handleWindowTouchEnd(H) - }, handleWindowTouchEnd: function (A) { - var J = this, - Q = J.editing; - if (J.editing = null, Q) { - var M = J.gv; - if (Q.moved || !Q.clickLeft && !Q.touch) M._panning = null, M._rotating = null, M.fi({ - kind: Q.pan ? "endPan" : "endRotate", - event: A - }); - else { - var u = M.getDataAt(A); - u ? M.sm().setSelection([u]) : M.sm().clearSelection() - } - } - }, pan: function (B, l, g) { - var D = this, - O = D.gv; - if (O.isPannable()) { - var n = O.getWidth(), - C = O.getHeight(); - if (n && C) { - var z = O.getCenterInfo(), - q = -l / n * z.width, - K = 1 * g / C * z.height; - O.fi({ - kind: O._panning ? "betweenPan" : "beginPan", - event: B - }), O._panning = 1; - var G = D.keepHorizon, - L = D.editing.touch; - if ((L && B.touches && B.touches.length > 1 || !L && Pf(B)) && (G = !G), !G) return O.pan(q, K); - if (q || K) { - var S = wp(O), - V = [S[0] * q, S[4] * q, S[8] * q], - P = [S[1], 0, S[9]], - m = Math.sqrt(P[0] * P[0] + P[2] * P[2]); - m && (P = [P[0] / m * K, 0, P[2] / m * K]); - var A = V[0] + P[0], - i = V[1] + P[1], - y = V[2] + P[2], - w = O._center, - r = O._eye; - w[0] += A, w[1] += i, w[2] += y, r[0] += A, r[1] += i, r[2] += y, O.fp(to, F, r), O.fp(sc, F, w) - } - } - } - }, rotate: function (K, y, N) { - var O = this, - i = O.gv; - if (i.isRotatable()) { - var q = i._center, - E = i._eye, - t = fn(E, q), - e = D(w(t[0] * t[0] + t[2] * t[2]), t[1]), - l = vg(i, e + N); - N = l - e, i.fi({ - kind: i._rotating ? "betweenRotate" : "beginRotate", - event: K - }), i._rotating = 1, i.rotate(y, N) - } - } - }), o.defineProperties(cl.prototype, { - panButton: { - get: function () { - return this._panButton - }, set: function (Z) { - this._panButton = Z - } - }, - minPhi: { - get: function () { - return this.gv.getRotateMinPhi() - }, set: function (R) { - this.gv.setRotateMinPhi(R) - } - }, - maxPhi: { - get: function () { - return this.gv.getRotateMaxPhi() - }, set: function (g) { - this.gv.setRotateMaxPhi(g) - } - }, - keepHorizon: { - get: function () { - return this._keepHorizon - }, set: function (g) { - this._keepHorizon = g - } - }, - threshold: { - get: function () { - return this._threshold - }, set: function (x) { - this._threshold = x - } - }, - touchScaleThreshold: { - get: function () { - return this._touchScaleThreshold - }, set: function (i) { - this._touchScaleThreshold = i - } - }, - touchRotateThreshold: { - get: function () { - return this._touchRotateThreshold - }, set: function (K) { - this._touchRotateThreshold = K - } - } - }); - var Ye, cq = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEyUlEQVRYR62XW0xcVRSG/58cmIG2HmstE9N4SX2xtVqBCISoFS/RmDSpKQSvTWNixUStQSqVyBQYJUGttrQVtYkPatuQPmhivMUHqbUBZ2itl1qjTzZpImNUZhDLsUeWWXgOOd2cgcGyk3mYs/de69trr70uxP8YIlJKMi0i9wIgyf0iEiM5PFdxzGeDiBQAuB7AjQBuALCN5NcGQDmANgBfeL8UyYnZ5M8KICJ3AXgAwAlfOMl/VHAQwPtveYAKuQLA2yQ/ngliRgAR2QogA2AvSdcUZAIE50VEYR4BsIDkC7kgQgFE5GIAuwDsJnkk1+aZAPw9IqLX1gjgcZK/m7KmAXjK4wBaSf4ZplxEIgCuA3Cz3gSAfgDHSf6dY/0FAJ4D0G5ChAEcAPBwmHIRqXNd90nLsiocx/k+k8n8oK/Atu2rIpHIStd1v7QsawfJd0Ouywawh6T609Q4B8C788NhZnddt29sbGxBd3f39q6urtNhJ43H48uam5u3lJSUjFiWdV8IxE0Aqki+6M9NAXjefjnJXsOZogBGBgYGttbU1Hw427PS+cHBwbVVVVUJAItJOoa8xwD8RPIT/T4J4L3zfQAeNL1dRMZra2ur+/v7/8pHub+mvr7+wr6+vs8KCgoWGABFAN4EsEHjhA9QBeA2ks8HF6vZk8nkQL4nNwGTyeTa8vLycsuy7jcg1Mk/IpnyAZoBaOQ6FHg+ddlsdqNt201zObm5NpvN7ly0aNHrJN8LyL4FwGqSr/gAOrnej3C60HXdw/F4PJ7L4fKFSiQSl7W0tLQVFRWtCQDoNRwguZ6aWABcorE9sEDf+QjJ1fkqmmmdiHwHoCToXyKiceR0rkhY5TjOq9FoVLPdeY/x8fG+SCSySe/cFKYWCFOyPJ1Or4zFYh3nrR3A8PBwe2lp6TcAfg4DmBYwAFyRTqdXxWKx9nkE+DYUIEyBiFQ6jvNaNBq9Zz4AZruCGIBlJI8ZXpolee18AORwwgoAp/xnqMmjPuilZ8+ePZRIJNo7OztD436+YB0dHZe2trY+W1hYWGsccD/JOh/gKQBHSWpanRwicnc2m91k2/bmfJWFrRsdHd29cOHCXSTfD8i+FcA1JHcEQ/HtJDVnTw3XdfcPDQ0dra6unto8F5hUKrWurKxslWVZG4L7RGQbgA9IDgWT0VsANprJaGJi4kxDQ8OagwcPjsxFeWNj49Le3l6N91qMTA2vmNnr6fovGXkmvxPAlST3hGz4LZVKbausrMzLEnryioqKNpJLzCpJRJ4AcJLkp6rHLEieBjBA8rB5Wtd1942NjS3p6el5qa2t7VSYNdThmpqaWoqLi38xze4dUku4CpLb/f1hJZnWBY+SzJpKRGSdV5LVOI5zIpPJnNQ1tm2viEQiV7uue8SyrJeDDhew8GIAO0me4w9hABdp8ahNBkktyacNr+Qu84pSndfX81VY6e6dXJV3AoiT/CMoMFcyUogeAG+Q/DyX8+VZlqvZHwKw2VQ+zQdCTL4FwBkPZFrJPUtjoildG5PC4J2bOvJpze7QWhHAj4HWbBImpDXTQsPvH5cDeMf39lxWnBXAU6TNqcZu7fn0lyB53GhOdf6ZQHN6bF6a0xxOuJTkrwbA5LdcJ831/V8SOUYQxYGhRwAAAABJRU5ErkJggg==", - Hq = 32, - Zg = Eh.GlobeInteractor = function (J, L) { - fi(Zg, this, [J]); - var S, b = L.radius || 6378137, - x = this, - Y = null; - Ye || (Ye = dd(), Ye.style.border = "", Ye.style.backgroundImage = "url(" + cq + ")"); - var N = new fs, - U = new tl, - Q = new tl, - R = new tl, - H = new Qi, - c = "number" == typeof b ? { - x: b, - y: b, - z: b - } : b, - G = { - center: new tl(0, 0, 0), - radius: c - }, - t = function (S) { - J._81O = null; - var P = J.getHitPosition(S, J.getCenter(), U.copy(J.getEye()).sub(Q.copy(J.getCenter())).toArray()); - return H.origin.copy(J.getEye()), H.direction.copy(P).sub(H.origin).normalize(), H.intersectEllipsoid(G) - }, - h = function (N, M) { - J._81O = null, H.origin.copy(J.getEye()); - for (var V, b, L = J.getCenter(), d = U.copy(J.getEye()).sub(Q.copy(J.getCenter())).toArray(), X = 1, e = 16, K = 0, v = 1, B = { - x: 0, - y: 0 - }; e--;) { - if (B.x = M.x + (N.x - M.x) * X, B.y = M.y + (N.y - M.y) * X, V = J.getHitPosition(B, L, d), H.direction.copy(V).sub(H.origin).normalize(), b = H.intersectEllipsoid(G), b && 1 === X) return { - hit: b - }; - b ? K = X : v = X, X = (K + v) / 2 - } - return { - hit: b, - out: 1 > X - } - }, - s = function (M, S) { - if (Y) { - var n = Date.now(); - Y.deltaTime = Y.lastTime ? n - Y.lastTime : 1e3, Y.lastTime = n, Y.lastAxis = M, Y.lastAngle = S - } - S && (N.setFromAxisAngle(M, S), J.setEye(U.copy(J.getEye()).applyQuaternion(N).toArray()), J.setCenter(U.copy(J.getCenter()).applyQuaternion(N).toArray()), J.setUp(U.copy(J.getUp()).applyQuaternion(N).toArray())) - }; - x._showCrossIcon = function (g) { - sn(x.getView(), Ye), qp(Ye, { - x: g.clientX - Hq / 2, - y: g.clientY - Hq / 2, - width: Hq, - height: Hq - }) - }, x._hideCrossIcon = function () { - yj(Ye) - }, x._scrollImpl = function (p, X) { - Y = { - point: J.lp(p), - screen: lb(p), - hit: t(p), - type: "right" - }, Y.hitNormalize = Y.hit ? Y.hit.clone().normalize() : new tl; - var G = { - clientX: Y.screen.x, - clientY: Y.screen.y + 10 * X - }; - x._handleMoveImpl(G), x._endMoveImpl(G) - }, x._startMoveImpl = function (o) { - S && (S.stop(!0), S = null), Y = { - point: J.lp(o), - screen: lb(o), - hit: t(o) - }, Y.hitNormalize = Y.hit ? Y.hit.clone().normalize() : new tl, li(o) ? 1 === o.touches.length ? Y.hit && (Y.type = "left") : 2 === o.touches.length && (Y.type = "touch2") : (jj(o) ? Y.hit && (Y.type = "left") : tk(o) ? Y.type = "right" : Fm(o) && Y.hit && (Y.type = "middle"), !Y.hit || "right" !== Y.type && "middle" !== Y.type || x._showCrossIcon(o)), Y.type && Ui(x, o) - }, x._handleMoveImpl = function (c) { - if (Y) switch (Y.type) { - case "left": - return x._handleLeft(c); - case "right": - return x._handleRight(c); - case "middle": - return x._handleMiddle(c); - case "touch2": - return x._handleTouch2(c) - } - }, x._endMoveImpl = function () { - if (Y) { - if (this._hideCrossIcon(), "left" === Y.type || "middle" === Y.type) { - var q = 1e3 * (Y.lastAngle / (Y.deltaTime || 30)), - B = Y.lastAxis, - j = Y.lastTime, - m = function () { - var P = Date.now(), - l = (P - j) / 1e3; - return j = P, q *= Math.pow(Math.abs(x.decelerationRate), 3 * l), Math.abs(q) < .01 ? (q = 0, S && S.stop(), void 0) : (s(B, q * l), void 0) - }; - S = Sf({ - action: function () { - m(arguments) - }, duration: 5e3 - }) - } - Y = null - } - }, x._handleLeft = function (c) { - if (!Y.finished) { - var Z = lb(c), - J = h(Z, Y.lastScreen || Y.screen); - if (Y.lastScreen = Z, !J.hit) return Y.finished = !0, x._endMoveImpl(c), void 0; - var d = J.hit; - d.normalize(); - var C = Y.hitNormalize, - I = Math.acos(d.dot(C)), - z = d.cross(C).normalize(); - s(z, I), J.out && (Y.finished = !0, x._endMoveImpl(c)) - } - }, x._handleRight = function (b) { - var k = Y.lastScreen || Y.screen, - E = k.y; - k = Y.lastScreen = lb(b); - var B = k.y, - f = B - E; - if (f) { - var m = Math.min(.5, f * x.scaleSpeed); - U.copy(J.getEye()); - var d = Y.hit; - d || (d = U.clone().divide(c).normalize().multiply(c)), Q.copy(U).lerp(d, m), J.setEye(Q.toArray()), U.copy(J.getUp()), Q.normalize(); - var G = U.clone().cross(Q).normalize(); - if (R.copy(J.getCenter()), R.sub(G.multiplyScalar(R.dot(G))), J.setCenter(R.toArray()), Y.hit) { - var W = t(Y.screen), - g = Y.hitNormalize; - if (W) { - W.normalize(); - var V = Math.acos(W.dot(g)), - T = W.cross(g).normalize(); - V && s(T, V) - } - } - } - }; - var _ = function (C) { - return Math.abs(C) < .01 ? 0 : C > 0 ? 1 : -1 - }; - x._handleTouch2 = function (M) { - var i = M.touches.length; - if (2 === i) { - var f = M.touches, - $ = { - x: f[0].clientX, - y: f[0].clientY - }, - j = { - x: f[1].clientX, - y: f[1].clientY - }, - l = { - x: j.x - $.x, - y: j.y - $.y - }, - v = Y.lastCenter, - g = Math.atan2(l.y, l.x), - n = Y.theta, - z = 0; - n == F ? n = Y.theta = g : (z = g - n, Y.thetaStarted || Math.abs(z) > .03 ? (Y.thetaStarted = !0, Y.theta = g) : z = 0); - var P, D = Math.sqrt(l.x * l.x + l.y * l.y), - p = Y.vlen; - if (p) { - var X = $.x - v.x, - t = $.y - v.y, - c = j.x - v.x, - y = j.y - v.y, - K = Math.sqrt(X * X + t * t), - d = Math.sqrt(c * c + y * y), - L = p / 2, - u = _(K - L), - x = _(d - L); - 0 > u * x || 0 === u && 0 === x ? (P = 1, Y.vlen = D) : (P || (P = D / p), Y.scaleStarted || Math.abs(P - 1) > .05 ? (Y.vlen = D, Y.scaleStarted = !0) : P = 1) - } else p = Y.vlen = D, P = 1; - var l = Q.copy(J.getEye()).clone(); - 1 !== P && J.setEye(l.setLength((l.length() - b) / P + b).toArray()), z && s(l.normalize(), z), Y.lastCenter = { - x: (j.x + $.x) / 2, - y: (j.y + $.y) / 2 - } - } - }, x._handleMiddle = function (M) { - var v = lb(M), - g = Y.screen; - Y.screen = v; - var P = (v.y - g.y) / 180 * Math.PI * x.rollSpeed; - Q.copy(J.getCenter()).sub(U.copy(J.getEye())).normalize(), U.copy(J.getUp()).cross(Q).normalize(), Q.copy(J.getEye()).sub(Y.hit).applyAxisAngle(U, P).add(Y.hit); - var u = Q.clone(); - Q.copy(J.getCenter()).sub(Y.hit).applyAxisAngle(U, P).add(Y.hit); - var Z = Q.clone(), - q = Q.copy(J.getUp()).applyAxisAngle(U, P).clone(), - j = !1; - P > 0 && (R.copy(q), Q.copy(Z).sub(u).normalize(), U.copy(u).multiplyScalar(-1).normalize(), U.dot(R) - Q.dot(R) > 0 && (j = !0)), j || R.copy(Y.hit).sub(u).dot(Y.hitNormalize) >= 0 && (j = !0), j || (J.setEye(u.toArray()), J.setCenter(Z.toArray()), J.setUp(q.toArray())); - var l = -(v.x - g.x) / 180 * Math.PI * x.rotateSpeed; - s(Y.hitNormalize, l) - } - }; - Dn("GlobeInteractor", Vq, { - handle_contextmenu: function (i) { - Qc(i) - }, handle_mousewheel: function (y) { - this._scrollImpl(y, y.wheelDelta / 40) - }, handle_DOMMouseScroll: function (E) { - 2 === E.axis && this._scrollImpl(E, -E.detail) - }, handle_keydown: function (g) { - this.gv.handleKeyDown(g) - }, handle_mousedown: function (A) { - this.handle_touchstart(A) - }, handle_touchstart: function (K) { - Qc(K); - var k = this.gv; - if (k.setFocus(K)) { - var E = k.getDataInfoAt(K), - P = E ? E.data : F; - P && k.isInteractive(P) || this._startMoveImpl(K); - var Y = E ? E.part : F; - wm(K) ? k.handleDoubleClick(K, P, Y) : k.handleClick(K, P, Y) - } - }, handle_mouseup: function (h) { - this.handle_touchend(h) - }, handle_touchend: function () { }, handleWindowMouseMove: function (n) { - this.handleWindowTouchMove(n) - }, handleWindowTouchMove: function (d) { - this._handleMoveImpl(d) - }, handleWindowMouseUp: function (p) { - this.handleWindowTouchEnd(p) - }, handleWindowTouchEnd: function (G) { - this._endMoveImpl(G) - } - }), o.defineProperties(Zg.prototype, { - rotateSpeed: { - get: function () { - return this._rotateSpeed || .3 - }, set: function (u) { - this._rotateSpeed = u - } - }, - rollSpeed: { - get: function () { - return this._rollSpeed || .1 - }, set: function (e) { - this._rollSpeed = e - } - }, - scaleSpeed: { - get: function () { - return this._scaleSpeed || .002 - }, set: function (x) { - this._scaleSpeed = x - } - }, - decelerationRate: { - get: function () { - return this._decelerationRate || .04 - }, set: function (M) { - this._decelerationRate = M - } - } - }); - var rl = function (b) { - var G = 2147483648 | b; - return [(255 & G >> 16) / 255, (255 & G >> 8) / 255, (255 & G) / 255, (255 & G >> 24) / 255] - }, - qo = function (J) { - this.gv = J, this.gv.pickColorMap = { - _pickIdUsed: 1e3 - } - }; - yc(qo, o, { - _iv: !0, - iv: function () { - this._iv = !0 - }, get: function (y, $) { - this.validate(); - var j = this, - l = j.gv.getGL(); - if (!l) return F; - var o, N, d = j._resolution, - U = Math.round(y.x * d), - S = Math.ceil(y.width * d), - M = Math.ceil(y.height * d), - s = j.height - Math.round(y.y * d) - M, - b = T(S / 2), - g = new Uint8Array(4 * S * M), - R = 0, - X = g.length, - J = $ ? F : new xr, - x = $ ? F : {}; - if (So(l, j.frame), l.readPixels(U, s, S, M, l.RGBA, l.UNSIGNED_BYTE, g), Ar(l), $) { - for (; b >= R; R++) - for (var u = b - R, O = b + R, D = u; O >= D; D++) - for (var A = u; O >= A; A++) - if ((D === u || D === O || A === u || A === O) && (o = j.info(g, 4 * (D * S + A)))) return o - } else - for (; X > R; R += 4) o = j.info(g, R), o && (N = o.data, x[N._id] || (J.add(N), x[N._id] = N)); - return J - }, info: function (Q, D) { - return this.gv.pickColorMap[(Q[D] << 16) + (Q[D + 1] << 8) + Q[D + 2] + ((127 & Q[D + 3]) << 24)] - }, getResolution: function () { - return this._resolution - }, onContextLost: function () { - this.texture = null, this.width = this.height = -1 - }, validate: function () { - var U = this, - d = U.gv, - r = d.getGL(); - if (r) { - var I = U._resolution = d._pickerResolution * d.getDevicePixelRatio(), - y = Math.round(I * d.getWidth()), - D = Math.round(I * d.getHeight()), - k = r.RGBA, - X = r.TEXTURE_2D, - H = r.RENDERBUFFER, - K = r.FRAMEBUFFER; - if (U.texture || (U.texture = rg(r), U.render = r.createRenderbuffer(), U.frame = r.createFramebuffer()), (U.width !== y || U.height !== D) && (r.activeTexture(r.TEXTURE0), an(r, U.texture), r.texImage2D(X, 0, k, y, D, 0, k, r.UNSIGNED_BYTE, F), Lr(r, r.TEXTURE_MIN_FILTER, r.LINEAR), r.bindRenderbuffer(H, U.render), r.renderbufferStorage(H, r.DEPTH_COMPONENT16, y, D), So(r, U.frame), r.framebufferTexture2D(K, r.COLOR_ATTACHMENT0, X, U.texture, 0), r.framebufferRenderbuffer(K, r.DEPTH_ATTACHMENT, H, U.render), an(r, F), r.bindRenderbuffer(H, F), Ar(r), U.width = y, U.height = D), U._iv) { - U._iv = !1; - var C = !1; - d._40Q.each(function (a) { - !C && a.isBatchInvalid() && (C = !0) - }), C && d.updateScene(), So(r, U.frame), r.clear(r.COLOR_BUFFER_BIT), d.overlappingBox.clear(), d.setViewport(r, 0, 0, y, D), d.renderPickScene(), Ar(r) - } - } - } - }); - var Le = function (W) { - this.gv = W - }; - yc(Le, o, { - gap: 0, - size: 0, - _42: function (O, r) { - var x = this, - N = x.gv, - t = N._gridGap, - L = N._gridSize; - if (N._gridVisible) { - if (x.gap !== t || x.size !== L) { - for (var i = [], Y = N._gridSize / 2, d = t * Y, o = 0; 2 * Y + 1 > o; o++) { - var s = 6 * o, - B = 6 * (2 * Y + 1) + s; - i[s] = -d, i[s + 1] = 0, i[s + 2] = -d + o * t, i[s + 3] = d, i[s + 4] = 0, i[s + 5] = -d + o * t, i[B] = -d + o * t, i[B + 1] = 0, i[B + 2] = -d, i[B + 3] = -d + o * t, i[B + 4] = 0, i[B + 5] = d - } - x.vs = new fk(i), x.gap = t, x.size = L - } - gk(N), _k(O, r), bi(O), ck(O, r, 1, N._gridColor, N._buffer.vs, x.vs), ie(O, 0, x.vs.length / 3, O.LINES), Jf(O), On(O, r) - } else x.vs = x.gap = x.size = F - } - }); - var ap = function (L) { - this.gv = L - }; - yc(ap, o, { - _42: function (p, U) { - var s = this.gv, - y = s._buffer.vs, - f = s._axisXColor, - o = s._axisYColor, - O = s._axisZColor, - $ = s._originAxisVisible, - n = s._centerAxisVisible; - if ($ || n) { - var B = Uq ? p.TRIANGLES : p.TRIANGLE_FAN, - R = p.LINES; - if (gk(s), _k(p, U), bi(p), $) { - var D = s.getCenterInfo(), - b = V(D.width, D.height) / 5, - t = .8 * b, - W = .05 * b; - ck(p, U, 1.5, f, y, new fk([0, 0, 0, b, 0, 0, t, W, 0, t, 0, W, t, -W, 0, t, 0, -W, t, W, 0, 0, 0, 0, 0, b, 0, W, t, 0, 0, t, W, -W, t, 0, 0, t, -W, W, t, 0, 0, 0, 0, 0, 0, b, W, 0, t, 0, W, t, -W, 0, t, 0, -W, t, W, 0, t])), ie(p, 0, 2, R), ie(p, 1, 6, B), ck(p, U, F, o), ie(p, 7, 2, R), ie(p, 8, 6, B), ck(p, U, F, O), ie(p, 14, 2, R), ie(p, 15, 6, B) - } - if (n) { - var z = s._center, - J = z[0], - Q = z[1], - P = z[2], - D = s.getPositionInfo(z); - b = V(D.width, D.height) / 20, ck(p, U, 1.5, f, y, new fk([J, Q, P, J + b, Q, P, J, Q, P, J, Q + b, P, J, Q, P, J, Q, P + b])), ie(p, 0, 2, R), ck(p, U, F, o), ie(p, 2, 2, R), ck(p, U, F, O), ie(p, 4, 2, R) - } - Jf(p), On(p, U) - } - } - }); - var ui = function (B) { - this.gv = B, this.onMouseOver = this.onMouseOver.bind(this), this.mode = ui.Mode.Style, this.color = Z, this.width = Z - }; - ui.Mode = { - Disable: 0, - Selection: 1, - MouseOver: 2, - Style: 3 - }, yc(ui, o, { - onMouseOver: function (P) { - u.preventDefault(P); - var Q = this.gv.getDataAt(P); - Q !== this.mouseOverData && (this.mouseOverData = Q, this.gv.iv()) - }, setFetchTargetFunc: function (f) { - this.fetchTargetFunc = f - }, _42: function (y, W) { - var D, z, t = this, - H = t._mode, - E = t.gv; - if (!y._renderInfo.reflectDepth && H !== ui.Mode.Disable) { - if (H === ui.Mode.Selection ? D = E.sm().getSelection().toArray(function (c) { - return c.s("highlight.visible") - }) : H === ui.Mode.MouseOver && t.mouseOverData && t.mouseOverData.s("highlight.visible") && (D = [t.mouseOverData]), t.fetchTargetFunc && (D = t.fetchTargetFunc(D)), H === ui.Mode.Style) D = D || [], z = function (V) { - if (D.indexOf(V) >= 0) return !1; - var O = E.getDataHighlightMode(V); - return O === !1 ? !0 : O === !0 ? !1 : "selected" === O ? E.isSelected(V) ? !1 : !0 : "hover" === O ? V === t.mouseOverData ? !1 : !0 : !0 - }; - else { - if (!D || !D.length) return; - z = function (m) { - return D.indexOf(m) < 0 ? !0 : void 0 - } - } - var E = t.gv, - N = E.vr.isPresenting(), - I = E.getWidth(); - if (N) { - var x = E.getWidth; - I /= 2, E.getWidth = function () { - return I - }; - var S = E.getViewport() - } - var O, B = E.getDevicePixelRatio(), - R = I * B, - K = E.getHeight() * B; - (O = t._renderTarget) ? O.setSize(y, R, K) : t._renderTarget = O = new Eh.RenderTarget(E, y, R, K), So(y, O.frame), y.clear(y.COLOR_BUFFER_BIT), E.setViewport(y, 0, 0, R, K); - var A = []; - D.forEach(function (j) { - var S = j.getRenderLayer(); - A.indexOf(S) < 0 && A.push(S) - }), E.drawFilter = z, E.renderPickScene(), E.drawFilter = null, Ar(y), Uq && Rg(y, W.aPosition), Rg(y, W.aNormal), N && (E.getWidth = x, E.setViewport(y, S[0], S[1], S[2], S[3])); - var Z = y._compiledShader.highlight; - Z || (Z = y._compiledShader.highlight = new Cm.Shader(y, hj.vs, hj.fs)), Z.bind(); - var M = ts.for(y), - P = M.directState(); - P.blend.enabled = !0, y.activeTexture(y.TEXTURE0 + 0), an(y, O.texture), Z.uniforms.image = 0, Z.uniforms.textureSize = [R, K], Z.uniforms.edgeWidth = E.getHighlightWidth(); - var d = E.getHighlightColor(); - if (t._lastHighlightColor !== d) { - var g = zd(t._lastHighlightColor = d); - t._highlightColorData = [g[0] / 255, g[1] / 255, g[2] / 255, g[3] / 255] - } - Z.uniforms.edgeColor = t._highlightColorData, t.ibuffer ? (t.ibuffer.upload(), t.vbuffer.upload()) : (t.ibuffer = Cm.Buffer.createIndexBuffer(y, new Uint16Array([0, 2, 1, 1, 2, 3])), t.vbuffer = Cm.Buffer.createVertexBuffer(y, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]))), Z.attributes.pos.pointer(t.vbuffer), y.drawElements(y.TRIANGLES, 6, y.UNSIGNED_SHORT, 0), P.blend.enabled = !1, an(y, null), y.useProgram(W), Uq && Pr(y, W.aPosition) - } - } - }), o.defineProperties(ui.prototype, { - mode: { - get: function () { - return this._mode - }, set: function (d) { - var q = this._mode; - d !== q && (this._mode = d, d === ui.Mode.MouseOver || d === ui.Mode.Style ? K(this.gv.getView(), "mousemove", this.onMouseOver) : (q === ui.Mode.MouseOver || q === ui.Mode.Style) && b(this.gv.getView(), "mousemove", this.onMouseOver)) - } - } - }); - var hj = { - vs: ["attribute vec2 pos;", "varying vec2 vUv;", "void main(void) {", "gl_Position = vec4(pos.x * 2.0 - 1.0, -pos.y * 2.0 + 1.0, 0.0, 1.0);", "vUv = vec2(pos.x, 1.0 - pos.y);", "}"].join("\n"), - fs: ["precision highp float;", "uniform sampler2D image;", "uniform vec2 textureSize;", "uniform float edgeWidth;", "uniform vec4 edgeColor;", "varying vec2 vUv;", "float getCol(vec2 coord) {", "return texture2D(image, coord).a;", "}", "void main() {", "vec2 cc = vUv;", "float center = getCol(cc);", "float dx = edgeWidth / textureSize.x;", "float dy = edgeWidth / textureSize.y;", "vec2 coord;", "float topLeft = getCol(cc+vec2(-dx, -dy));", "float top = getCol(cc+vec2(0.0, -dy));", "float topRight = getCol(cc+vec2(dx, -dy));", "float left = getCol(cc+vec2(-dx, 0.0));", "float right = getCol(cc+vec2(dx, 0.0));", "float bottomLeft = getCol(cc+vec2(-dx, dy));", "float bottom = getCol(cc+vec2(0.0, dy));", "float bottomRight = getCol(cc+vec2(dx, dy));", "float v = -topLeft-2.0*top-topRight+bottomLeft+2.0*bottom+bottomRight;", "float h = -bottomLeft-2.0*left-topLeft+bottomRight+2.0*right+topRight;", "float edge = sqrt(h * h + v * v);", "edge = smoothstep(0.9, 1.0, edge);", "if (edge < 0.5) {", "discard;", "}", "gl_FragColor = edgeColor;", "}"].join("\n") - }, - Rk = function (E) { - this.gv = E - }, - Zo = "edit_tx", - te = "edit_ty", - ll = "edit_tz", - Pg = "edit_rx", - hb = "edit_ry", - pn = "edit_rz", - zb = "edit_sx", - Oh = "edit_sy", - dh = "edit_sz", - Nr = {}; - Nr[Zo] = 101, Nr[te] = 102, Nr[ll] = 103, Nr[Pg] = 104, Nr[hb] = 105, Nr[pn] = 106, Nr[zb] = 107, Nr[Oh] = 108, Nr[dh] = 109, yc(Rk, o, { - _42: function (l, K, m) { - var i = this, - N = i.gv, - a = N.sm().ld(); - if (a && N.isEditable(a) && !N.isEditHelperDisabled() && Fq(a) && (!N.isFirstPersonMode() || !N.isMouseRoamable() && !nf)) { - gk(N); - var F, $, T = N.isMovable(a), - I = N.isRotationEditable(a), - x = N.isSizeEditable(a), - V = N._axisXColor, - W = N._axisYColor, - S = N._axisZColor, - j = N._editSizeColor, - A = a.p3(), - B = En(N.getEye(), A) / 10, - c = B / (m ? 5 : 10), - H = .7 * B, - X = .4 * H, - u = A[0], - d = A[1], - Y = A[2]; - F = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0], T && i._17O(l, K, a, m, Zo, V, F, [u, d - c, Y, u + H, d - c, Y, u + H, d, Y, u + H, d, Y, u, d, Y, u, d - c, Y, u, d - c, Y + c, u + H, d - c, Y + c, u + H, d - c, Y, u + H, d - c, Y, u, d - c, Y, u, d - c, Y + c]), $ = u + H, x && i._17O(l, K, a, m, zb, j, F, [$, d - c, Y, $ + X, d - c, Y, $ + X, d, Y, $ + X, d, Y, $, d, Y, $, d - c, Y, $, d - c, Y + c, $ + X, d - c, Y + c, $ + X, d - c, Y, $ + X, d - c, Y, $, d - c, Y, $, d - c, Y + c]), $ += X, I && i._17O(l, K, a, m, Pg, V, F, [$, d - c, Y, $ + X, d - c, Y, $ + X, d, Y, $ + X, d, Y, $, d, Y, $, d - c, Y, $, d - c, Y + c, $ + X, d - c, Y + c, $ + X, d - c, Y, $ + X, d - c, Y, $, d - c, Y, $, d - c, Y + c]), F = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0], T && i._17O(l, K, a, m, te, W, F, [u, d, Y, u, d + H, Y, u - c, d + H, Y, u - c, d + H, Y, u - c, d, Y, u, d, Y, u, d, Y, u, d, Y - c, u, d + H, Y - c, u, d + H, Y - c, u, d + H, Y, u, d, Y]), $ = d + H, x && i._17O(l, K, a, m, Oh, j, F, [u, $, Y, u, $ + X, Y, u - c, $ + X, Y, u - c, $ + X, Y, u - c, $, Y, u, $, Y, u, $, Y, u, $, Y - c, u, $ + X, Y - c, u, $ + X, Y - c, u, $ + X, Y, u, $, Y]), $ += X, I && i._17O(l, K, a, m, hb, W, F, [u, $, Y, u, $ + X, Y, u - c, $ + X, Y, u - c, $ + X, Y, u - c, $, Y, u, $, Y, u, $, Y, u, $, Y - c, u, $ + X, Y - c, u, $ + X, Y - c, u, $ + X, Y, u, $, Y]), F = [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0], T && i._17O(l, K, a, m, ll, S, F, [u, d, Y, u, d, Y + H, u, d - c, Y + H, u, d - c, Y + H, u, d - c, Y, u, d, Y, u, d - c, Y, u - c, d - c, Y, u - c, d - c, Y + H, u - c, d - c, Y + H, u, d - c, Y + H, u, d - c, Y]), $ = Y + H, x && i._17O(l, K, a, m, dh, j, F, [u, d, $, u, d, $ + X, u, d - c, $ + X, u, d - c, $ + X, u, d - c, $, u, d, $, u, d - c, $, u - c, d - c, $, u - c, d - c, $ + X, u - c, d - c, $ + X, u, d - c, $ + X, u, d - c, $]), $ += X, I && i._17O(l, K, a, m, pn, S, F, [u, d, $, u, d, $ + X, u, d - c, $ + X, u, d - c, $ + X, u, d - c, $, u, d, $, u, d - c, $, u - c, d - c, $, u - c, d - c, $ + X, u - c, d - c, $ + X, u, d - c, $ + X, u, d - c, $]) - } - }, _17O: function (p, n, u, R, w, V, N, t) { - var g = this.gv, - D = g._buffer, - f = ts.for(p), - S = f.directUniforms(), - l = f.directAttribs(); - if (g._picking) { - R = g.pickColorMap; - var k = Nr[w]; - R[k] = { - data: u, - part: w - }, S.uFixPickReverseColor = rl(k) - } - Ll(p, n, F, !0, F, !0, F, !1), S.uDiffuse = V, l.aPosition = bm(p, D.vs, new fk(t), F), l.aNormal = bm(p, D.ns, new fk(N), F), bi(p), ie(p, 0, 12), Jf(p), ol(p, n) - } - }); - var Vf = O.Raycaster = function ($) { - this.gv = $, this.maxTriangleTest = 1 / 0, this.backfaceCulling = !0 - }; - ki("Raycaster", o, { - intersect: function (u) { - var A = this, - x = A.gv, - F = x.getDataAt(u); - return F ? A.intersectObject(u, F) : null - }, intersectObjects: function (F, R, A) { - var X, y, G, i, B = this, - _ = 1 / 0, - q = F.origin || (new tl).fromArray(B.gv.getEye()), - V = B.maxTriangleTest, - E = []; - return R.forEach(function ($) { - A && A($) === !1 || $.s("intersect") !== !1 && E.push($) - }), E.sort(function (o, P) { - return q.distanceToSquared2(o.p3()) - q.distanceToSquared2(P.p3()) - }), B.countTriangles = 0, E.forEach(function (T) { - B.countTriangles > V || (X = B.intersectObject(F, T), X && (y = q.distanceToSquared(X.world), _ > y && (G = T, i = X, _ = y))) - }), B.countTriangles = 0, { - data: G, - intersect: i - } - }, intersectObject: function (e, a) { - if (e instanceof Qi) return this._intersectObjectImpl(e, a); - var U = this, - X = U.gv, - d = X.unproject(e), - S = new tl, - G = X.getEye(), - C = new tl; - if (X.isOrtho()) { - var s = new tl(G); - C.copy(X.getCenter()).sub(s).normalize(); - var p = S.copy(d).sub(s).dot(C); - S.copy(C).setLength(-p).add(s.copy(d)) - } else S.copy(G), C.copy(d).sub(S).normalize(); - var f = new O.Math.Ray(S, C); - return U._intersectObjectImpl(f, a) - }, _intersectObjectImpl: function () { - function M() { - var s = new tl; - return s.subVectors(F, g), I.subVectors(x, g), s.cross(I).normalize(), s - } - - function r(R, U, a, d, r, $, i) { - return pq.barycoordFromPoint(R, U, a, d, c), r.multiplyScalar(c.x), $.multiplyScalar(c.y), i.multiplyScalar(c.z), r.add($).add(i), r.clone() - } - var j = new br, - z = new br, - s = new Qi, - A = new tl, - b = new tl, - w = new tl, - y = new tl, - v = new tl, - x = new tl, - g = new tl, - F = new tl, - $ = new Xi, - h = new Xi, - L = new Xi, - I = new tl, - B = { - vs: Ef, - is: Lq, - uv: mi - }, - c = new tl, - d = Rh.slice(0); - return d.push("csg"), - function (p, c) { - var e = this.gv.getData3dUI(c), - V = c.mat || e.mat; - V ? j.fromArray(V) : j.identity(), z.getInverse(j), s.copy(p).applyMatrix4(z); - var a, n, J, W = "body", - Z = e.shapeModel; - if (Z || (Z = bf(e)), Z || (O.CSGNode && c instanceof O.CSGNode || O.CSGShape && c instanceof O.CSGShape ? (J = !0, Z = [e.left, e.front, e.right, e.back, e.top, e.bottom, e.csg]) : c instanceof O.Node && !(c instanceof O.Shape) ? (a = !0, Z = B) : (n = !0, Z = [e.left, e.front, e.right, e.back, e.top, e.bottom])), !Z) return console.log("Can not find shape model."), null; - ip(Z) || (Z = [Z]); - var P, u, _, q, H, G, E, m, o, Q, D, t, U, R, i, I, S = 1 / 0, - X = ["", "top_", "bottom_"], - k = !1, - C = this.backfaceCulling, - T = []; - for ($p(Z, e, T), P = 0, u = T.length; u > P; P++) - if (U = T[P]) - for (_ = 0, q = X.length; q > _; _++) - if (R = X[_], E = U[R + "vs"], m = U[R + "is"], o = U[R + "uv"] || U[R + "tuv"], E) { - if (i = U[R + "boundingBox"]) { - var D = s.intersectBox(i); - if (!D) continue; - if (s.origin.distanceTo(D) > S) continue; - I = !1 - } else U[R + "boundingBox"] = i = new O.Math.Box3, I = !0; - for (H = 0, G = m ? m.length : E.length / 3; G > H; H += 3) this.countTriangles++, m ? (b.fromArray(E, 3 * m[H]), w.fromArray(E, 3 * m[H + 1]), y.fromArray(E, 3 * m[H + 2])) : (b.fromArray(E, 3 * H), w.fromArray(E, 3 * (H + 1)), y.fromArray(E, 3 * (H + 2))), I && (i.expandByPoint(b), i.expandByPoint(w), i.expandByPoint(y)), Q = s.intersectTriangle(b, w, y, C, A), Q && (t = s.origin.distanceTo(Q), S > t && (S = t, v.copy(Q), x.copy(b), g.copy(w), F.copy(y), "" !== R ? W = R.slice(0, -1) : a ? W = Rh[Math.floor(H / 6)] : n ? W = Rh[P] : J && (W = d[P]), o && (k = !0, m ? ($.fromArray(o, 2 * m[H]), h.fromArray(o, 2 * m[H + 1]), L.fromArray(o, 2 * m[H + 2])) : ($.fromArray(o, 2 * H), h.fromArray(o, 2 * (H + 1)), L.fromArray(o, 2 * (H + 2)))))) - } - if (!isFinite(S)) return null; - var N, f = v.clone().applyMatrix4(j); - k && (N = r(v, x, g, F, $, h, L)); - var K = M(x, g, F), - Y = M(x.applyMatrix4(j), g.applyMatrix4(j), F.applyMatrix4(j)), - l = s.direction.dot(K); - return l > 0 && (K.multiplyScalar(-1), Y.multiplyScalar(-1)), { - world: f, - local: v.clone(), - worldNormal: Y, - normal: K, - uv: N, - part: W - } - } - }() - }); - var Wj = function (H, q) { - this.gv = H, this.s = function (b, u, o) { - return u == F && (u = o), u == F ? q.getStyle(b) : Dj(u, q, H) - }, this.data = q - }; - yc(Wj, o, { - I3d: !0, - ms_icons: 1, - _iv: !0, - _cacheBoundingBox: Z, - iv: function () { - this._iv = !0 - }, update: function (U, e, M) { - var Y = this, - j = Y.data; - if (U || (U = Y.gv, e = U.getGL(), M = e._40Q), !Y.needValidate(e) || !U.isVisible(j)) return M.push(this, !1), void 0; - var l, z, x, s, R, O = j._id, - L = Y.s("autorotate") || Y.s("shape3d.autorotate") || Y.s("fixSizeOnScreen") || Y.s("shape3d.fixSizeOnScreen") ? null : Y.s("batch"), - A = j.getRenderLayer(), - T = M.get(A, !0), - G = T.batchIndexMap, - r = T.batchModelMap, - W = U.getBrightness(j), - V = W != F && 1 !== W; - l = Qr(G, r, j, L, U); - var B = Y.validate(l, L ? U.getBatchInfo(L) || Xn : F); - if (l && (z = G[O], x = z.size = l.vs.length / 3 - z.begin, R = l.rs)) - for (W = V ? W : 1, s = 0; x > s; s++) R.push(W); - var S = U.getWireframeGeometry(j); - if (S) oq(U, j, S); - else if (Fq(j)) { - var E = U.getWireframe(j); - E && oq(U, j, E) - } - Y.labelInfo = Y.label2Info = Y.noteInfo = Y.note2Info = Y._38o = F, Y._24O(Bg, "getLabel"), Y._24O(Qk, "getLabel2"), Y._26O(Rm, "getNote"), Y._26O(Vk, "getNote2"), Y._15O(), Y.interactiveInfo = U.isInteractive(j) ? {} : F, T.push(this, !0), B !== !1 && (Y._iv = !1) - }, clearWireframeGeometryCache: function () { - var M = this; - Hm(M), M.data.iv() - }, _46Q: function (G) { - var l = this, - V = l.data, - q = l.gv; - if (q.isVisible(V)) { - var f = V._id, - r = q._40Q.get(V._renderLayer, !0), - J = r.batchIndexMap[f], - $ = r.polylineIndexMap[f], - E = r.wireframeIndexMap[f]; - if (J || $ || E) { - var v = gm(G, q.pickColorMap, q.isSelectable(V), V, nh, !0); - v && (Ic(v, J, r.batchModelMap), Ic(v, $, r.polylineModelMap), Ic(v, E, r.wireframeModelMap)) - } - } - }, _42: function (K, P, G) { - function N(v, l, G) { - var M = l.getBrightness(G), - c = G.s("alphaTest"), - w = G.s("envmap"), - P = ts.for(v), - m = P.directUniforms(); - M != F && 1 !== M && (m.uBrightness = M), m.uAlphaTest = c, m.uUseEnvMap = w ? !0 : !1, m.uReflectivity = w || .01, m.shadowReceive = !S && G.s("shadow.receive"), m.shadowCull = !S && !!G.s("shadow.cull"); - var T = A.s("3d.clip.direction"); - if (T) { - var L = A.s("3d.clip.percentage"); - switch (0 === L && (z = !1), T) { - case "left": - T = 2; - break; - case "top": - T = 3; - break; - case "bottom": - T = 4; - break; - case "front": - T = 5; - break; - case "back": - T = 6; - break; - case "right": - default: - T = 1 - } - if (0 === T % 2 && (L = 1 - L), G instanceof O.Shape) { - var x = G.s3(), - b = G.p3(), - u = G.getAnchor3d(); - L = 3 > T ? (L - u.x) * x[0] + b[0] : 5 > T ? (L - u.y) * x[1] + b[1] : (L - u.z) * x[2] + b[2] - } else L -= .5; - m.uClipPercent = L - } - m.uClipDirection = T || 0, v._blooming && !G.s("bloom") && (m.blackout = !0) - } - var A = this, - m = A.data, - I = A.gv; - if (I.isVisible(m)) { - var J, S = I._picking; - if (S) J = I.pickColorMap; - else { - if (I.isTransparentMask(m) || I.isReflecting(K) && m.s("3d.reflectable") === !1) return; - J = Z - } if (Wj.getTitle === Z) { - Wj.getTitle = 0; - for (var E in u) - if (E.length === Qk.length + 1 && E[Qk.length] === Gr[4].toUpperCase() && E[Qk.length - 1] === Gr[Qk.length + 1].toUpperCase()) { - Wj.getTitle = jq; - break - } - } - if (!Wj.getTitle || Qg[Qk.length + 2]) { - if (Wj.getHead === Z) { - Wj.getHead = 0; - for (var E in L) { - var g = "box-sizing"; - 6 === E.length && E[0] === Gr[4] && E[3] === g[0] && E[4] === g[1] && E[5] === g[2] && (Wj.getHead = jq) - } - } - if (!Wj.getHead || Qg[Qk.length]) { - var Q, v, t = m._id, - s = I._40Q.get(m._renderLayer, !0), - b = s.batchIndexMap, - W = s.batchModelMap, - R = I.isSelectable(m), - D = !1, - z = !0, - x = b[t]; - if (S && (v = gm(K, J, R, m, nh, x), v && !I._45Q && (Ic(v, x, W), Ic(v, s.polylineIndexMap[t], s.polylineModelMap), Ic(v, s.wireframeIndexMap[t], s.wireframeModelMap))), x || (D || (D = !0, N(K, I, m)), z && A._80o(K, P, G)), I.isLabelVisible(m) && ((Q = A.labelInfo) && (S && gm(K, J, R, m, Bg), D || (D = !0, N(K, I, m)), A._28O(Q, Bg, G)), (Q = A.label2Info) && (S && gm(K, J, R, m, Qk), D || (D = !0, N(K, I, m)), A._28O(Q, Qk, G))), I.isNoteVisible(m) && ((Q = A.noteInfo) && (S && gm(K, J, R, m, Rm), D || (D = !0, N(K, I, m)), A._29O(Q, Rm, G)), (Q = A.note2Info) && (S && gm(K, J, R, m, Vk), D || (D = !0, N(K, I, m)), A._29O(Q, Vk, G))), (Q = A._38o) && (D || (D = !0, N(K, I, m)), A._99O(K, P, Q, J, R, G)), D) { - var f = ts.for(K).directUniforms(); - f.uBrightness = 1, f.uClipDirection = 0, K._blooming && (f.blackout = !1) - } - } - } - } - }, prepare: function () { - var S = this, - D = S.data; - if (!(D instanceof Br)) { - var b, s, C, t, u, Z = S.gv, - N = Z.getGL(), - n = D._id, - Y = S.s("batch"), - x = Z._batchIndexMap, - I = Z._batchModelMap, - q = Z.getBrightness(D), - e = q != F && 1 !== q; - if (S.needValidate(N)) { - if (b = Qr(x, I, D, Y, Z), S.validate(b, Y ? Z.getBatchInfo(Y) || Xn : F), b && (s = x[n], C = s.size = b.vs.length / 3 - s.begin, u = b.rs)) - for (q = e ? q : 1, t = 0; C > t; t++) u.push(q); - if (Fq(D)) { - var i = Z.getWireframeGeometry(D); - if (i) oq(Z, D, i); - else { - var K = Z.getWireframe(D); - K && oq(Z, D, K) - } - } - S.labelInfo = S.label2Info = S.noteInfo = S.note2Info = S._38o = F, S._24O(Bg, "getLabel"), S._24O(Qk, "getLabel2"), S._26O(Rm, "getNote"), S._26O(Vk, "getNote2"), S._15O(), S.interactiveInfo = Z.isInteractive(D) ? {} : F, S._iv = !1 - } - } - }, dispatchBoundingBoxChanged: function () { - this._cacheBoundingBox = Z - }, getBoundingBox: function () { - var r, H, _, h, L, e; - return function () { - if (this._cacheBoundingBox) return this._cacheBoundingBox; - r || (r = { - vs: Ef, - is: Lq, - uv: mi - }, H = new tl, _ = new tl, h = new tl, L = new tl, e = new tl); - var v = this, - F = v.data, - w = v.shapeModel; - if (w || F instanceof O.Shape || (w = bf(v)), !w && F instanceof O.Shape && (v.prepare(), w = v.shapeModel), w || (F instanceof O.Node && !(F instanceof O.Shape) ? w = r : (v.left || v.front || v.right || v.back || v.top || v.bottom) && (w = [v.left, v.front, v.right, v.back, v.top, v.bottom])), !w) return Z; - ip(w) || (w = [w]); - var Y, S, U, p, i, f, t, I, B, Q, G, d, $ = ["", "top_", "bottom_"], - R = new O.Math.Box3, - W = !1; - if (v._needRecoverPosition) { - L.set.apply(L, F.p3()); - var m = F.s3(); - e.set(1 / (m[0] || 1), 1 / (m[1] || 1), 1 / (m[2] || 1)) - } else L.set(0, 0, 0), e.set(1, 1, 1); - for (Y = 0, S = w.length; S > Y; Y++) - if (B = w[Y]) - for (U = 0, p = $.length; p > U; U++) - if (Q = $[U], t = B[Q + "vs"], I = B[Q + "is"], t) { - if (d = Q + "boundingBox", G = B[d], !G) - for (B[d] = G = new O.Math.Box3, i = 0, f = I ? I.length : t.length / 3; f > i; i += 3) I ? (H.fromArray(t, 3 * I[i]).sub(L).multiply(e), _.fromArray(t, 3 * I[i + 1]).sub(L).multiply(e), h.fromArray(t, 3 * I[i + 2]).sub(L).multiply(e)) : (H.fromArray(t, 3 * i).sub(L).multiply(e), _.fromArray(t, 3 * (i + 1)).sub(L).multiply(e), h.fromArray(t, 3 * (i + 2)).sub(L).multiply(e)), !H.isNaN() && G.expandByPoint(H), !_.isNaN() && G.expandByPoint(_), !h.isNaN() && G.expandByPoint(h); - R.expandByBox(G), W = !0 - } - return W ? (this._cacheBoundingBox = R, o.freeze(R), o.freeze(R.min), o.freeze(R.max), dn(v.gv, F), R) : Z - } - }(), - needValidate: function () { - return this._iv - }, validate: function () { }, _16O: function () { - return Hd - }, _80o: function () { }, dispose: function () { }, getBodyColor: function (w) { - var r = this.data, - m = this.gv.getBodyColor(r); - return m ? m : w ? r.getStyle(w) : F - }, getCachedTexture: function (N) { - var p = this._cachedTextures; - return p ? p[N || "main"] : null - }, setCachedTexture: function (w, C) { - var s = this._cachedTextures; - return s || (s = this._cachedTextures = {}), s[C || "main"] = w, w - }, invalidateCachedTexture: function (Q) { - var l = this._cachedTextures; - if (l) { - for (var R in l) Q.deleteTexture(l[R]); - this._cachedTextures = {} - } - }, invalidateCachedGeometry: function () { }, _24O: function (g, I) { - var x = this, - u = x.data, - z = x.gv, - m = x.s, - d = z[I](u); - if (d != F) { - var l = m(g + ".scale"), - O = m(g + ".max"), - r = x[g + "Info"] = { - label: d, - textureScale: m(g + ".texture.scale"), - color: z[I + "Color"](u), - font: m(g + ".font"), - align: m(g + ".align"), - background: z[I + "Background"](u) - }, - H = r.rect = qr(r, d); - O > 0 && O < H.width && (r.labelWidth = H.width, H.width = O), H.x = H.y = 0, H.width *= l, H.height *= l, r.mat = x._16O(m(g + ".autorotate"), m(g + ".position"), H, m(g + ".face"), m(g + ".t3"), m(g + ".r3"), m(g + ".rotationMode")); - var T = H.width / 2, - o = H.height / 2; - r.vs = new fk([-T, o, 0, -T, -o, 0, T, -o, 0, T, o, 0]), H.width /= l, H.height /= l - } - }, _26O: function (C, r) { - var Z = this, - x = Z.data, - W = Z.gv, - Y = Z.s, - L = W[r](x); - if (L != F) { - var g = Y(C + ".scale"), - I = this[C + "Info"] = { - note: L, - textureScale: Y(C + ".texture.scale"), - expanded: Y(C + ".expanded"), - font: Y(C + ".font"), - color: Y(C + ".color"), - align: Y(C + ".align"), - borderWidth: Y(C + ".border.width"), - borderColor: Y(C + ".border.color"), - background: W[r + "Background"](x) - }; - if (I.expanded) { - var O = Y(C + ".max"), - _ = qr(I, L); - _.width += 6, _.height += 2, O > 0 && O < _.width && (I.labelWidth = _.width, _.width = O); - var J = { - x: -_.width / 2, - y: -8 - _.height, - width: _.width, - height: _.height + 8 - } - } else J = { - x: -6, - y: -18, - width: 12, - height: 18 - }; - I.mat = Z._16O(Y(C + ".autorotate"), Y(C + ".position"), F, Y(C + ".face"), Y(C + ".t3"), Y(C + ".r3"), Y(C + ".rotationMode")), I.rect = J, 1 !== g && (J = Pm(J), J.x *= g, J.height *= g, J.y = -J.height, J.width *= g); - var S = J.x, - z = J.y, - i = J.width, - y = J.height; - I.vs = new fk([S, -z, 0, S, -z - y, 0, S + i, -z - y, 0, S + i, -z, 0]) - } - }, eachShapeModel: function (q, t) { - function j(p) { - ko(p), p.vs && q(p.vs, p.is, p.ns, p.uv), p.top_vs && q(p.top_vs, p.top_is, p.top_ns, p.top_uv), p.bottom_vs && q(p.bottom_vs, p.bottom_is, p.bottom_ns, p.bottom_uv), p.from_vs && q(p.from_vs, p.from_is, p.from_ns, p.from_uv), p.to_vs && q(p.to_vs, p.to_is, p.to_ns, p.to_uv) - } - - function A(v) { - var S, c, w; - if (ip(v)) - for (c = 0, w = v.length; w > c; c++) S = v[c], S && A(S); - else dk(v) ? A(bf(n, v), n) : xl(v) && (v.shape3d ? A(v.shape3d) : j(v)) - } - var n = this, - J = n.data, - t = t || n.shapeModel || bf(n); - t || (t = J instanceof O.Node && !(J instanceof O.Shape) ? { - vs: Ef, - is: Lq - } : [n.left, n.front, n.right, n.back, n.top, n.bottom]), A(t) - }, _28O: function (k, T, I) { - if (I(this.s(T + ".transparent"))) { - var K = k.rect, - F = k.textureScale, - d = K.width * F, - x = K.height * F; - if (d >= 1 && x >= 1) { - var P = Cr(d, x); - 1 !== F && (P.translate(P, K.x, K.y), P.scale(F, F), P.translate(P, -K.x, -K.y)), vp(P, k), P.restore(), ud(this, T, k.mat, k.vs, !0) - } - } - }, _29O: function (u, M, Y) { - if (Y(this.s(M + ".transparent"))) { - var I = u.rect, - a = u.textureScale, - V = I.x, - $ = I.y, - y = I.width * a, - C = I.height * a; - if (y >= 1 && C >= 1) { - I.x = I.y = 0; - var R = Cr(y, C); - 1 !== a && R.scale(a, a), $q(R, u), R.restore(), I.x = V, I.y = $, ud(this, M, u.mat, u.vs, !1) - } - } - }, _99O: function (I, L, e, w, i, o) { - if (e) { - var m = this, - u = m.gv, - s = m.data, - _ = u._buffer, - v = u._1O, - X = e.icons, - y = ts.for(I), - Z = y.directAttribs(); - for (var Y in X) { - var P = X[Y], - n = e.rects[Y]; - if (n && o(Dj(P.transparent, s, u))) { - u._picking && gm(I, w, i, s, Y); - var h = Dj(P.shape3d, s, u), - k = h ? [h] : Dj(P.names, s, u), - b = k ? k.length : 0, - c = Dj(P.textureScale, s, u) || 1, - A = Dj(P.light, s, u); - A == F && (A = h ? !0 : !1), Ll(I, L, Dj(P.blend, s, u), A, Dj(P.opacity, s, u), Dj(P.reverseFlip, s, u), Dj(P.reverseColor, s, u), Dj(P.reverseCull, s, u)); - for (var N = 0; b > N; N++) { - var H = k[N], - U = n[N]; - if (yn(m, U.mat), h) pj(u, s, bf(m, h), m); - else { - var x = ii(H); - if (x) { - var l = U.width * c, - S = U.height * c; - if (l >= 1 && S >= 1) { - var T = Cr(l, S); - qk(T, x, Dj(P.stretch, s, u), 0, 0, l, S, s, u), T.restore(), rg(I, xm, v), bi(I, L, v, Dj(P.discardSelectable, s, u), _.uv, Vj), Z.aPosition = bm(I, _.vs, U.vs, F), Z.aNormal = Sl(I, _.ns, Lh, F), ym(I, _.is, ar), os(I, 0, ar.length), Jf(I, L, v) - } - } - } - Gf(u) - } - ol(I, L) - } - } - } - } - }); - var gf = function (B, d) { - fi(gf, this, [B, d]) - }; - yc(gf, Wj, { - _16O: function (I, $, d, Y, q, R, Q, j, F) { - var o = this.data, - l = o.getFinalScale3d(), - S = Ep($, l, d, Y, j, F); - if (o.hasOwnProperty("_anchor") || o.hasOwnProperty("_anchorElevation")) { - var f = o.getAnchor3d(); - S[0] -= (f.x - .5) * l[0], S[1] -= (f.y - .5) * l[1], S[2] -= (f.z - .5) * l[2] - } - return Te(kn(), S, o.p3(), Y, q, R, Q, I, o.getFinalRotation3d(), o.getRotationMode()) - }, clear: function () { - var V = this; - V.faceMat = V.mat = V.shapeModel = V.left = V.right = V.front = V.back = V.top = V.bottom = V.csg = F - }, needValidate: function (N) { - if (this._iv) return this._validateFrameId = N._renderInfo.frame, !0; - if (this.s("autorotate") || this.s("shape3d.autorotate") || this.s("fixSizeOnScreen") || this.s("shape3d.fixSizeOnScreen") || this.s("hide.overlapping.group")) { - var s = N._renderInfo.frame; - if (this._validateFrameId !== s) return this._validateFrameId = s, !0 - } - return !1 - }, validate: function (o, z) { - var w = this, - k = w.gv, - _ = w.data, - Z = w.shapeName = w.s(Lm), - x = bf(w, Z); - if (w._updateAutoRotation(), w._updateFixSize2d(), w._updateOverlapping(), w.dispatchBoundingBoxChanged(), this.s("autorotate") || this.s("shape3d.autorotate") || this.s("fixSizeOnScreen") || this.s("shape3d.fixSizeOnScreen")) { - var y = _.getRenderLayer(), - E = k._40Q.get(y); - E && E.ivWireframeBatch(_) - } - var m = sj(_, k.getMat(_), x ? w.s("shape3d.scaleable") : !0); - if (_.appendAnchorMatrix3d(m), w.clear(), w.mat = _.mat = m, x || !Z) - if (w.shapeModel = x, o) { - var C = []; - x ? km(k, _, x, w, w.getBodyColor(), [m], o, C) : (Li(k, _, o, z, m, nq, C, Zc), Li(k, _, o, z, m, fm, C, Up), Li(k, _, o, z, m, $c, C, Ol), Li(k, _, o, z, m, Kd, C, Uk), Li(k, _, o, z, m, wg, C, Fp), Li(k, _, o, z, m, Qq, C, Be)), C.length && (gc(o.vs, C), gc(o.ns, Gb(C))) - } else x || (w._cubeUvs = null, w.vf(nq, 0), w.vf(fm, 16), w.vf(wg, 8), w.vf(Qq, 24), w.vf($c, 32), w.vf(Kd, 40)) - }, _updateAutoRotation: function () { - var t = new gg, - Y = new br, - R = new tl, - A = new tl, - a = new tl; - return function () { - var D = this, - q = D.data, - f = D.s("autorotate") || D.s("shape3d.autorotate"); - if (!f) return q._dynamicRotation && delete q._dynamicRotation, void 0; - var s = D.gv; - a.copy(D.s("shape3d.autorotate.up") || s._up); - var m; - m = "string" == typeof f ? [f.indexOf("x") < 0 ? s._eye[0] : s._center[0], f.indexOf("y") < 0 ? s._eye[1] : s._center[1], f.indexOf("z") < 0 ? s._eye[2] : s._center[2]] : s._eye; - var L = s._center, - g = q.p3(); - R.copy(g), A.set(m[0] - L[0], m[1] - L[1], m[2] - L[2]).add(R), Y.lookAt(A, R, a), t.set(0, 0, 0, q.getRotationMode(), !0).setFromRotationMatrix(Y); - var H = q._dynamicRotation; - H && Math.abs(H[0] - t.x) < 1e-5 && Math.abs(H[1] - t.y) < 1e-5 && Math.abs(H[2] - t.z) < 1e-5 || (q._dynamicRotation = [t.x, t.y, t.z]) - } - }(), - _updateFixSize2d: function () { - var x = this, - X = x.data, - J = x.s("fixSizeOnScreen") || x.s("shape3d.fixSizeOnScreen"); - if (!J) return X._dynamicScale3d && delete X._dynamicScale3d, void 0; - var n = x.gv, - U = sj(X, n.getMat(X)), - w = Td([0, 0, 0], U), - i = n.toViewPosition(w); - if (!isNaN(i.x) && !isNaN(i.y)) { - var C = Td([1, 0, 0], U), - V = n.toViewPosition(C), - Y = Td([0, 1, 0], U), - e = n.toViewPosition(Y), - l = V.x - i.x, - Z = e.y - i.y; - if (l && Z) { - var q, p, d = X._dynamicScale3d || [1, 1, 1], - h = ii(X.s("shape3d.image")); - if (J[0] > 0 && (q = J[0]), J[1] > 0 && (p = J[1]), !q || !p) { - var O = J > 0 ? J : 1; - q || (q = (xc(h, X) || X.getWidth()) * O), p || (p = (oo(h, X) || X.getTall()) * O) - } - var A = Math.abs(l / q), - o = Math.abs(Z / p); - Math.abs(A - 1) < .001 && Math.abs(o - 1) < .001 || (X._dynamicScale3d = [d[0] / A, d[1] / o, d[2]]) - } - } - }, _updateOverlapping: function () { - var Q = this, - M = Q.s("hide.overlapping.group"); - if (!M) return Q._rectOverlapping && (Q._rectOverlapping = Z), void 0; - var A, n, x, w = Q.gv, - k = Q.data, - H = sj(k, w.getMat(k)), - F = 1 / 0, - W = 1 / 0, - c = -1 / 0, - N = -1 / 0, - v = k.getAnchor3d(), - S = v.x, - e = v.y, - i = v.z; - for (A = 0; 8 > A; A++) { - if (n = Td([(A >> 2) - S, (1 & A >> 1) - e, (1 & A) - i], H), x = w.toViewPosition(n), isNaN(x.x) || isNaN(x.y)) return; - F = Math.min(F, x.x), c = Math.max(c, x.x), W = Math.min(W, x.y), N = Math.max(N, x.y) - } - var L = { - x: F, - y: W, - w: c - F, - h: N - W - }; - Q._rectOverlapping = w.overlappingBox.isOverlapping(M, L) - }, getVectorDynamicSize: function () { - var g, E = this, - a = E.s("shape3d"), - j = E.data; - if ("billboard" === a || "plane" === a || (g = j._currentCubeElementId) != F) { - var y, V, w = E.gv, - c = sj(j, w.getMat(j)), - L = j.getAnchor3d(), - z = .5 - L.x, - K = .5 - L.y, - X = .5 - L.z, - x = Math.min(E.s("vector.dynamic.maxsize"), w._glCapabilities.maxTextureSize) / w.getDevicePixelRatio(), - n = function (Z, P) { - Z[0] += z, Z[1] += K, Z[2] += X, P[0] += z, P[1] += K, P[2] += X; - var J = w.toViewPosition(Td(Z, c)), - b = w.toViewPosition(Td(P, c)), - S = J.x - b.x, - D = J.y - b.y; - return Math.min(x, Math.sqrt(S * S + D * D)) - }; - if ("billboard" === a) y = n([-.5, 0, 0], [.5, 0, 0]), V = n([0, -.5, 0], [0, .5, 0]); - else if ("plane" === a) y = n([-.5, 0, 0], [.5, 0, 0]), V = n([0, 0, -.5], [0, 0, .5]); - else if (j._currentCubeElementId != F) { - var e = 3 * Lq[g + 1], - $ = 3 * Lq[g], - Y = 3 * Lq[g + 2]; - y = n([Ef[e], Ef[e + 1], Ef[e + 2]], [Ef[Y], Ef[Y + 1], Ef[Y + 2]]), V = n([Ef[e], Ef[e + 1], Ef[e + 2]], [Ef[$], Ef[$ + 1], Ef[$ + 2]]) - } - return [y, V] - } - }, vf: function (h, A) { - var r = this; - if (r.gv.getFaceVisible(r.data, h)) { - var S = _e(r, h); - S.mat && (r.faceMat = !0); - var O = S.uv; - if (O) { - var i = r._cubeUvs; - i || (i = r._cubeUvs = new fk([0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0])); - for (var w = 0; 8 > w; w++) i[A + w] = O[w] - } - return S - } - }, _billboardInView: function () { - var q = [-.5, -.5, 0, -.5, .5, 0, .5, -.5, 0, .5, .5, 0], - w = [-.5, 0, -.5, -.5, 0, .5, .5, 0, -.5, .5, 0, .5], - A = new Hi, - o = new tl, - J = new br; - return function (Z) { - var O = this; - if (!O.mat) return !0; - var _ = O.gv.getFrustum(), - I = "billboard" === Z ? q : w; - A.makeEmpty(), J.fromArray(O.mat); - for (var v = 0, b = I.length; b > v; v += 3) A.expandByPoint(o.fromArray(I, v).applyMatrix4(J)); - return _.intersectsBox(A) - } - }(), - _80o: function (k, p, N) { - var m = this; - if (m._rectOverlapping) return !0; - var E = m.shapeModel; - if (E || !m.shapeName) { - var U = m.s("shape3d"); - if (("billboard" === U || "plane" === U) && !m._billboardInView(U)) return !0; - var i = m.gv, - u = m.data, - V = i._cube, - O = ts.for(k), - j = O.directAttribs(); - gk(i, m.mat), m.s("shape3d.reflector") && !k._picking || (E ? pj(i, u, E, m, m.getBodyColor(), N) : (j.aPosition = bm(k, V.vs, F, F), j.aNormal = bm(k, V.ns, F, F), eo(k, V.is), m._18O(k, p, "left", 0, N), m._18O(k, p, "front", 6, N), m._18O(k, p, "right", 12, N), m._18O(k, p, "back", 18, N), m._18O(k, p, "top", 24, N), m._18O(k, p, "bottom", 30, N))), Gf(i), m.faceMat && (m._18O(k, p, "left", 0, N, !0), m._18O(k, p, "front", 6, N, !0), m._18O(k, p, "right", 12, N, !0), m._18O(k, p, "back", 18, N, !0), m._18O(k, p, "top", 24, N, !0), m._18O(k, p, "bottom", 30, N, !0)) - } - }, _18O: function (K, r, M, h, k, m) { - var E = this[M]; - if (E) { - if (!k(E.transparent)) return; - if (m && !E.mat || !m && E.mat) return; - var n = this.data.s("polygonOffset"); - n && Ik(K, n), m && gk(this.gv, E.mat); - var Q = this, - X = Q.data, - y = ts.for(K), - l = y.directUniforms(); - X._currentCubeElementId = h; - var B = Q.gv, - o = B.getTexture(E.texture, X, M), - f = E.uv, - a = E.uvScale, - T = E.uvOffset, - N = E.discardSelectable; - o ? f ? bi(K, r, o, N, B._buffer.uv, Q._cubeUvs, T, a) : bi(K, r, o, N, B._cube.uv, F, T, a) : bi(K), Ll(K, r, E.blend, E.light, E.opacity, E.reverseFlip, E.reverseColor, E.reverseCull), l.uDiffuse = E.color || z["color.empty"], os(K, h, 6), ol(K, r), Jf(K, r, o), m && Gf(B), n && rd(K), X._currentCubeElementId = null - } - }, drawReflector: function () { - var h = new tl, - f = new tl, - R = new gg, - A = new br, - G = new tl, - i = new tl, - C = new tl, - l = new tl, - P = new br, - Q = new br, - Y = new Io, - W = new ye, - E = new ye, - z = function ($, f, C) { - $[C] = f[0], $[C + 1] = f[1], $[C + 2] = f[2] - }, - B = function (f, B) { - z(f, B.getEye(), 0), z(f, B.getCenter(), 3), z(f, B.getUp(), 6) - }, - k = function (I, e) { - e._eye = [I[0], I[1], I[2]], e._center = [I[3], I[4], I[5]], e._up = [I[6], I[7], I[8]], e._18Q = F; - var k = e._skybox; - k && (k.p3([I[0], I[1], I[2]]), e.getData3dUI(k).iv()) - }; - return function (j) { - var $ = this; - $._reflectorInfo = null; - var J = $.data; - if (J._reflecting) return !1; - var w = $.gv; - if (w._picking) return !1; - var z = $._reflectorRenderTarget, - H = w.getDevicePixelRatio(), - r = w.getWidth() * H, - x = w.getHeight() * H; - z ? z.setSize(j, r, x) : z = $._reflectorRenderTarget = new Eh.RenderTarget(w, j, r, x), h.copy(J.p3()), f.copy(w.getEye()), A.makeRotationFromEuler(R.set(J.r3(), J.getRotationMode(), !0)); - var U; - if (!$._reflectNormal) { - var U = bf($, $.s("shape3d")); - if (!U) return !1; - if (!U.ns && U.length && (U = U[0]), !U.ns || !U.vs) return !1; - $._reflectNormal = [U.ns[0], U.ns[1], U.ns[2]], $._reflectorVbuffer = Cm.Buffer.createVertexBuffer(j, new Float32Array(U.vs)) - } - if (G.copy($._reflectNormal), G.applyMatrix4(A), i.subVectors(h, f), i.dot(G) > 0) return !1; - i.reflect(G).negate(), i.add(h), C.copy(w.getCenter()).negate().add(h), C.reflect(G).negate(), C.add(h), l.copy(w.getUp()), l.reflect(G); - var I = [0, 0, 0, 0, 0, 0, 0, 0, 0]; - B(I, w), w._eye = i.toArray(), w._center = C.toArray(), w._up = l.toArray(), w._18Q = F; - var g = w._skybox; - g && (g.p3(w._eye), w.getData3dUI(g).iv()), So(j, z.frame), j.viewport(0, 0, z.width, z.height); - var a = J.s("shape3d.reflector.background"); - if (a) { - var D = j.getParameter(j.COLOR_CLEAR_VALUE); - qe(j, a) - } else j.clearColor(0, 0, 0, 1); - ts.for(j).glState.depth.mask = !0, j.clear(j.COLOR_BUFFER_BIT | j.DEPTH_BUFFER_BIT); - var O = Mc(w), - s = wp(w); - Y.setFromNormalAndCoplanarPoint(G, h), Y.applyMatrix4(Q.fromArray(s)), W.set(Y.normal.x, Y.normal.y, Y.normal.z, Y.constant), E.x = (Math.sign(W.x) + O[8]) / O[0], E.y = (Math.sign(W.y) + O[9]) / O[5], E.z = -1, E.w = (1 + O[10]) / O[14], W.multiplyScalar(2 / W.dot(E)); - var y = J.s("shape3d.reflector.clip"), - X = y === Z ? .003 : y; - O[2] = W.x, O[6] = W.y, O[10] = W.z + 1 - X, O[14] = W.w; - var c = w._computedProjectMatrix; - w._computedProjectMatrix = O, J._reflecting = !0, w.renderScene(), w._computedProjectMatrix = c, P.set(.5, 0, 0, .5, 0, .5, 0, .5, 0, 0, .5, .5, 0, 0, 0, 1), P.multiply(Q.fromArray(w._projectMatrix)), P.multiply(Q.fromArray(w._viewMatrix)), a && qe(j, D), Ar(j), k(I, w); - var u = J.s("shape3d.reflector.blur"); - if (u) { - var q = w.getPostProcessingModule("Blur"); - q && q.drawImpl(j, z, u, J.s("shape3d.reflector.blur.ratio")) - } - var S = j._compiledShader.reflector; - S || (S = j._compiledShader.reflector = new Cm.Shader(j, Gc.Reflector.vs, Gc.Reflector.fs)), S.bind(), j.activeTexture(j.TEXTURE0), an(j, z.texture), S.uniforms.tDiffuse = 0, S.uniforms.color = ns(J.s("shape3d.reflector.color") || "rgb(128,128,128)"), S.uniforms.textureMatrix = P.toArray(), S.uniforms.modelMatrix = sj(J), S.uniforms.viewMatrix = wp(w), S.uniforms.projectionMatrix = Mc(w), $._reflectorVbuffer.upload(), S.attributes.pos.pointer($._reflectorVbuffer); - var e = this.s("shape3d.transparent"); - if (e) { - var n = ts.for(j).glState, - V = n.depth.mask; - n.depth.mask = !1 - } - return j.drawArrays(j.TRIANGLES, 0, 6), e && (n.depth.mask = V), J._reflecting = !1, j.useProgram(w._prg), an(j, F), !0 - } - }() - }), Gc.Reflector = { - vs: ["attribute vec3 pos;", "uniform mat4 textureMatrix;", "uniform mat4 modelMatrix;", "uniform mat4 viewMatrix;", "uniform mat4 projectionMatrix;", "varying vec4 vUv;", "void main() {", " vUv = textureMatrix * modelMatrix * vec4( pos, 1.0 );", " gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( pos, 1.0 );", "}"].join("\n"), - fs: ["precision highp float;", "uniform vec3 color;", "uniform sampler2D tDiffuse;", "varying vec4 vUv;", "float blendOverlay( float base, float blend ) {", " return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );", "}", "vec3 blendOverlay( vec3 base, vec3 blend ) {", " return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );", "}", "void main() {", " vec4 base = texture2DProj( tDiffuse, vUv );", " vec2 tUv = vUv.xy / vUv.w;", " if (tUv.x < .0 || tUv.y < .0 || tUv.x > 1. || tUv.y > 1.) discard;", " gl_FragColor = vec4( blendOverlay( base.rgb, color ), base.a );", "}"].join("\n") - }; - var rs = function (V, f) { - fi(rs, this, [V, f]) - }; - yc(rs, gf, { - _80o: function () { } - }); - var Ip = function (D, _) { - fi(Ip, this, [D, _]) - }; - yc(Ip, Wj, { - _25Q: 1, - validate: function (Q) { - var k = this; - if (!k.s("geometry.cache") || !k.info) { - var b = k.gv, - X = k.data, - g = k.s, - E = g("edge.width"), - L = X._40I, - J = X._41I; - if (k.shapeModel = k.info = F, L && J) { - var B, Z, I, x, _, t, R, p, o, c, O = X.isLooped(), - K = g(ej), - S = u.getEdgeType(K); - if (S) { - var G = S(X, Ml(k, b, X, O, K), b, k._19Q); - if (!G.points || G.points.isEmpty()) return; - t = k.info = {}, R = G.segments, _ = G.points, p = _.size(); - for (var s = L.getElevation(), N = J.getElevation(), C = 0; p > C; C++) { - var q = _.get(C); - q.e == F && (q.e = s + (N - s) * C / (p - 1)) - } - o = bk(_.get(0)), c = bk(_.get(p - 1)); - var v = p % 2; - 0 === v ? (t.c1 = bk(_.get(p / 2 - 1)), t.c2 = bk(_.get(p / 2))) : t.p3 = bk(_.get((p - v) / 2)), t.s1 = o, t.s2 = bk(_.get(1)), t.t1 = bk(_.get(p - 2)), t.t2 = c - } else { - _ = new xr, t = k.info = {}; - var $ = g("edge.offset"), - W = g("edge.center"), - h = g("edge.source.t3"), - T = g("edge.target.t3"), - H = Hb(b, X, "source"), - U = Hb(b, X, "target"); - if (!H || !U) return b.invalidateData(X), delete k.info, !1; - if (h && (H[0] += h[0], H[1] += h[1], H[2] += h[2]), T && (U[0] += T[0], U[1] += T[1], U[2] += T[2]), K === _b) { - R = g("edge.segments"); - var e = t.points = g(Ei) || Yh; - if (p = e.size()) { - o = bk(e.get(0)), c = bk(e.get(p - 1)), !W && $ && (I = fn(o, H, !0), $ = V($, En(H, o)), H = [H[0] + I[0] * $, H[1] + I[1] * $, H[2] + I[2] * $], I = fn(U, c, !0), $ = V($, En(c, U)), U = [U[0] - I[0] * $, U[1] - I[1] * $, U[2] - I[2] * $]); - var v = p % 2; - 0 === v ? (B = bk(e.get(p / 2 - 1)), Z = bk(e.get(p / 2))) : t.p3 = bk(e.get((p - v) / 2)), t.s1 = H, t.s2 = o, t.t1 = c, t.t2 = U - } else !W && $ && (I = fn(U, H, !0), x = En(H, U), $ = cr($, x), H = [H[0] + I[0] * $, H[1] + I[1] * $, H[2] + I[2] * $], U = [U[0] - I[0] * $, U[1] - I[1] * $, U[2] - I[2] * $]), B = H, Z = U; - _.add({ - x: H[0], - y: H[2], - e: H[1] - }), _.addAll(e), _.add({ - x: U[0], - y: U[2], - e: U[1] - }) - } else { - var l = Ml(k, b, X, O, K); - if (k._19Q || (l = -l), O) { - var d = H[0], - m = H[1], - A = H[2], - r = L.getTall() / 2 + l; - B = [d - l, m + r, A], Z = [d + l, m + r, A], _.add({ - x: d - l, - y: A, - e: m - }), _.add({ - x: d - l, - y: A, - e: m + r - }), _.add({ - x: d + l, - y: A, - e: m + r - }), _.add({ - x: d + l, - y: A, - e: m - }) - } else { - I = fn(U, H, !0), x = En(H, U); - var M = { - x: H[0], - y: H[2] - }, - z = { - x: U[0], - y: U[2] - }, - D = pc(F, M, z, l), - w = D.x - M.x, - f = D.y - M.y; - $ = cr($, x), I[0] *= $, I[1] *= $, I[2] *= $, B = [H[0] + I[0] + w, H[1] + I[1], H[2] + I[2] + f], Z = [U[0] - I[0] + w, U[1] - I[1], U[2] - I[2] + f], W ? (_.add({ - x: H[0], - y: H[2], - e: H[1] - }), _.add({ - x: B[0], - y: B[2], - e: B[1] - }), _.add({ - x: Z[0], - y: Z[2], - e: Z[1] - }), _.add({ - x: U[0], - y: U[2], - e: U[1] - })) : (_.add({ - x: B[0], - y: B[2], - e: B[1] - }), _.add({ - x: Z[0], - y: Z[2], - e: Z[1] - })) - } - } - t.c1 = B, t.c2 = Z - } - t._lastPointsSegments = { - points: _, - segments: R - }, t.list = g(Lm) === xk ? k.createTubeModel(_, R, E / 2, Q) : k.createLineModel(_, R, E, "edge", "edge.dash") - } - } - }, invalidateCachedGeometry: function () { - this.info = F - } - }); - var Vp = function (v, d) { - fi(Vp, this, [v, d]), this._needRecoverPosition = !0 - }; - yc(Vp, gf, { - _80o: function (J, u, $) { - var y = this, - B = y.gv, - H = y.shapeModel; - gk(B, y.mat), H ? pj(B, y.data, H, y, y.getBodyColor(), $) : (io(y, J, u, "left", $), io(y, J, u, "front", $), io(y, J, u, "right", $), io(y, J, u, "back", $), io(y, J, u, "top", $), io(y, J, u, "bottom", $)), Gf(B) - }, validate: function (l, f) { - var m, M, v = this, - G = v.s, - y = v.data, - t = (y.p3(), y._thickness / 2), - Y = y.isClosePath(), - r = y.getPoints(), - Q = y.getSegments(), - C = G(cp), - o = l && l.uv; - if (v.clear(), v.dispatchBoundingBoxChanged(), 0 > t) { - try { - M = v.shapeModel = wf(r, Q, G(Je), G(Ho), C, G(Sn), y.getTall(), y.getShapeElevation(), Y) - } catch (D) { - M = v.shapeModel = {} - } - G(lm) ? G("shape3d.image") || delete M.uv : (delete M.vs, delete M.ns, delete M.uv), G("shape3d.top.image") || delete M.top_uv, G("shape3d.bottom.image") || delete M.bottom_uv - } else if (G(Lm) === xk) m = Yo(r, Q, C, Y), M = v.shapeModel = { - vs: [] - }, G("shape3d.image") && (M.uv = [], M.sum = G(Sn) || tj(m) || 1, M.len = 0), G(Je) && !Y && (M.top_vs = [], G("shape3d.top.image") && (M.top_uv = [])), G(Ho) && !Y && (M.bottom_vs = [], G("shape3d.bottom.image") && (M.bottom_uv = [])), v._12O(m, t); - else { - var W, $, T, V, w, P, A, _, L, R; - if (m = Yo(r, Q, C, Y), w = v.vf(wg, o, !1, f), t && (P = v.vf(Qq, o, !1, f), A = Y ? F : v.vf(nq, o, !1, f), _ = Y ? F : v.vf(fm, o, !1, f), L = v.vf($c, o, !1, f), R = v.vf(Kd, o, !1, f)), t) { - for (var u = 0, X = m.length; X > u; u++) m[u] = v._tryRemoveBezierPoints(m[u], t); - v._12O(m, t) - } else w && m.forEach(function (y) { - if (V = y.length, V > 0) - for (W = y[0], T = 1; V > T; T++) $ = y[T], v.addV(w.vs, W, $), W = $ - }); - v._20Q(m), l || (w && (w.ns = Gb(w.vs), ed(w, "vs"), ed(w, ih)), t && (P && (P.ns = Gb(P.vs), ed(P, "vs"), ed(P, ih)), A && (A.ns = Gb(A.vs), ed(A, "vs"), ed(A, ih)), _ && (_.ns = Gb(_.vs), ed(_, "vs"), ed(_, ih)), L && (L.ns = Gb(L.vs), ed(L, "vs"), ed(L, ih)), R && (R.ns = Gb(R.vs), ed(R, "vs"), ed(R, ih)))) - } - var z = v.mat = y.getPointsMatrix3d().getElements(); - l && (Mp(v, z, l, M), v.clear()) - }, _20Q: function (G) { - var P, i, l, x, o, y, e, S = this, - r = S.front, - Y = S.back, - u = S.top, - V = S.bottom, - M = r ? r.tuv : F, - h = Y ? Y.tuv : F, - s = u ? u.tuv : F, - c = V ? V.tuv : F, - Z = 0; - (M || h || s || c) && (P = S.s(Sn) || tj(G) || 1, G.forEach(function (h) { - if (i = h.length, i > 0) - for (y = h[0], l = 1; i > l; l++) e = h[l], x = Z / P, Z += En(y, e), o = Z / P, S._14O(r, x, o), S._14O(Y, 1 - o, 1 - x), S._14O(u, x, o), S._14O(V, x, o), y = e - })) - }, _14O: function (L, x, o) { - if (L) { - var n = L.uv, - O = L.tuv; - if (O) { - if (n) var t = n[0] + (n[6] - n[0]) * x, - p = n[1] + (n[7] - n[1]) * x, - R = n[2] + (n[4] - n[2]) * x, - E = n[3] + (n[5] - n[3]) * x, - e = n[2] + (n[4] - n[2]) * o, - b = n[3] + (n[5] - n[3]) * o, - c = n[0] + (n[6] - n[0]) * o, - B = n[1] + (n[7] - n[1]) * o; - else t = x, p = 0, R = x, E = 1, e = o, b = 1, c = o, B = 0; - O.push(R, E, e, b, c, B, c, B, t, p, R, E) - } - } - }, _13O: function ($) { - var s = $.uv, - T = $.tuv; - T && (s ? T.push(s[2], s[3], s[4], s[5], s[6], s[7], s[6], s[7], s[0], s[1], s[2], s[3]) : T.push(0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1)) - }, _tryRemoveBezierPoints: function (y, U) { - var R = y.length; - if (4 > R) return y; - var X, s, C, w, A, O, n = !1, - Z = function (u) { - return y[u] - }, - Q = function (l) { - return y[R - 1 - l] - }; - for (A = 0; 1 >= A; A++) - for (O = A ? Q : Z, s = O(0), C = O(1), X = 2; R - 1 > X; X++) - if (w = O(X), !w.remove) - if (w.b) { - var m = pc(s, C, w, U); - m.adjust ? (w.remove = !0, n = !0) : (s = C, C = w) - } else s = C, C = w; - if (!n) return y; - var c = []; - for (X = 0; R > X; X++) y[X].remove || c.push(y[X]); - return c - }, _12O: function (V, r) { - var O, $, l, A, h, w = this.s("shape3d.point.epsilon"), - I = this; - V.forEach(function (U) { - if (h = U.length, h > 0) - for (O = { - p: U[0], - n: !0 - }, A = 1; h > A; A++) $ = U[A], l = h - 1 > A ? U[A + 1] : F, l && Math.abs($.x - l.x) < w && Math.abs($.y - l.y) < w || I.addPoint(O, $, l, r, U) - }) - }, addPoint: function (r, T, b, $, B) { - var C, H, Q, h, s, u, N, d, K, e = this, - E = r.p, - Z = r.f, - v = r.b, - U = e.s("shape3d.side") || rr, - q = e.s("shape3d.start.angle"), - V = e.s("shape3d.sweep.angle"), - m = e.shapeModel, - X = e.data.isClosePath(); - if (r.n && (r.n = !1, Z = X && B.length > 2 ? pc(B[B.length - 2], E, T, $) : pc(F, E, T, $), v = $l(E, Z), m ? m.top_vs && e._10O(v, Z, U, q, V, m.top_vs, m.top_uv) : (C = e.left) && (e.addV(C.vs, v, Z), e._13O(C))), H = b ? pc(E, T, b, $) : X && B.length > 2 ? pc(E, T, B[1], $) : pc(E, T, F, $), Q = $l(T, H), m) { - var Y, a, _ = m.vs, - n = m.uv, - k = m.sum; - for (n && (Y = m.len / k, m.len += En(E, T), a = m.len / k), u = e._9O(v, Z, U, q, V), N = e._9O(Q, H, U, q, V), d = 0; U > d; d++) K = d + 1, gc(_, u[K]), gc(_, N[d]), gc(_, u[d]), gc(_, N[d]), gc(_, u[K]), gc(_, N[K]), n && (h = d / U, s = K / U, n.push(Y, s, a, h, Y, h, a, h, Y, s, a, s)); - !b && m.bottom_vs && e._10O(Q, H, U, q, V, m.bottom_vs, m.bottom_uv, !0) - } else !b && (C = e.right) && (e.addV(C.vs, H, Q), e._13O(C)), (C = e.front) && e.addV(C.vs, Z, H), (C = e.back) && e.addV(C.vs, Q, v), (C = e.top) && e.addH(C.vs, Z, H, Q, v, !0), (C = e.bottom) && e.addH(C.vs, v, Q, H, Z); - r.p = T, r.f = H, r.b = Q - }, _10O: function (D, B, z, m, d, l, q, U) { - var i, a, T = this, - C = T.data, - P = T._9O(D, B, z, m, d), - u = (D.x + B.x) / 2, - e = (D.y + B.y) / 2, - Y = C.getShapeElevation(), - r = 0; - for (r = 0; z > r; r++) U ? (gc(l, P[r]), gc(l, P[r + 1])) : (gc(l, P[r + 1]), gc(l, P[r])), gc(l, [u, Y, e]), q && (U ? (i = $ * (r + 1) / z + m, a = $ * r / z + m) : (i = $ * r / z + m, a = $ * (r + 1) / z + m), q.push(.5 - .5 * k(a), .5 - .5 * n(a), .5 - .5 * k(i), .5 - .5 * n(i), .5, .5)) - }, _9O: function (r, l, t, D, C) { - var W, u, s = this, - K = s.data, - p = [], - j = (r.x + l.x) / 2, - i = (r.y + l.y) / 2, - O = K.getTall() / 2, - e = K.getShapeElevation(), - J = 0; - for (C == F && (C = $); t >= J; J++) W = C * J / t + D, u = k(W), p.push([j + (r.x - j) * u, e + O * n(W), i + (r.y - i) * u]); - return p - }, addV: function (b, B, x) { - var c = B.x, - p = B.y, - R = x.x, - T = x.y, - m = this.data, - t = m.getShapeElevation(), - F = m.getTall() / 2; - b.push(c, t - F, p, R, t - F, T, R, t + F, T, R, t + F, T, c, t + F, p, c, t - F, p) - }, addH: function (A, R, U, b, c, p) { - var m = this.data, - H = m.getTall() / 2, - W = m.getShapeElevation() + (p ? H : -H); - A.push(R.x, W, R.y, U.x, W, U.y, b.x, W, b.y, b.x, W, b.y, c.x, W, c.y, R.x, W, R.y) - }, vf: function (S, _, o, H) { - var k, g = this, - U = g.gv.getFaceVisible(g.data, S); - return (o || U) && (k = _e(g, S, H), k.vs = [], k.tuv = U && (k.texture || _) ? [] : F, k.visible = U), k - } - }); - var hs, jf, Co = function (Z, n) { - fi(Co, this, [Z, n]) - }; - yc(Co, gf, { - validate: function () { - var s = this, - V = s.gv, - M = s.data, - r = s.s, - I = ns(r("points.color")); - I = [I[0], I[1], I[2]]; - var C = r("points.size"), - f = r("points.image") || "rect"; - ("rect" === f || "circle" === f) && ("rect" === f ? (hs || (hs = s._createCachedImage(f)), f = hs) : (jf || (jf = s._createCachedImage(f)), f = jf)); - var i = r("points.model"); - if (i) { - if (s._lastShapeModel !== i || !s.shapeModel) { - var G = bf(s, i); - if (!G) return; - var h = [], - P = {}; - s.eachShapeModel(function (t) { - for (var d = 0, S = t.length; S > d; d += 3) { - var o = t[d], - $ = t[d + 1], - D = t[d + 2], - Z = "" + o + "_" + $ + "_" + D; - P[Z] || (P[Z] = !0, h.push(o, $, D)) - } - }, G), s.shapeModel = { - vs: new fk(h) - }, M._pointsDirty = !0, s._lastShapeModel = i - } - } else { - var b = M.points, - u = b.length, - U = u / 3; - if (M._pointsDirty || !s.shapeModel) { - var R = new fk(b); - s.shapeModel = { - vs: R - }, M._pointsDirty = !1, s._lastShapeModel = null - } - } if (s.info = { - mat: sj(M), - size: C, - diffuse: I, - opacity: r("points.opacity"), - texture: f, - alphaTest: r("points.transparent") ? 0 : r("alphaTest") - }, M._colorsDirty) { - for (var q, X, c, v = [], x = !1, S = M.colors, $ = 0; u > $; $ += 3) q = S[$], X = S[$ + 1], c = S[$ + 2], q === Z || X === Z || c === Z ? v.push(I[0], I[1], I[2]) : (x = !0, v.push(q, X, c)); - s.shapeModel.cs = x ? new fk(v) : null, M._colorsDirty = !1 - } - if (M._sizesDirty) { - for (var Y = [], n = !1, N = M.sizes, $ = 0; U > $; $++) N[$] ? (Y.push(N[$]), n = !0) : Y.push(C); - s.shapeModel.ss = n ? new fk(Y) : null, M._sizesDirty = !1 - } - if (s._lastPointNumber !== U) { - var _ = V.pickColorMap, - H = _._pickIdUsed; - _._pickIdUsed = H + U; - for (var J = [], $ = 0; U > $; $++) { - var p = H + $, - D = rl(p); - J.push(D[0], D[1], D[2], D[3]), _[p] || (_[p] = { - data: M, - part: $ - }) - } - s.shapeModel.ps = new fk(J), s._lastPointNumber = U - } - this.dispatchBoundingBoxChanged() - }, _createCachedImage: function (N) { - var W = 128, - K = uo(), - z = K.getContext("2d"); - Bn(K, W, W, 1), Yd(z, { - width: W, - height: W, - comps: [{ - type: N, - background: "white", - borderWidth: 0, - rect: [0, 0, W, W] - }] - }, 0, 0, W, W); - var h = O.Math.generateUUID(); - return Oe[h] = K, h - }, _80o: function (M, d) { - var f = this, - L = f.gv, - b = f.shapeModel, - W = f.info; - if (b && b.vs && b.vs.length) { - var o = ts.for(M); - o.useProgram(f._asureProgram(M)), o.directState(); - var m = o.directUniforms(), - h = o.directAttribs(); - m.modelMatrix = W.mat, m.modelViewMatrix = xo([], L._viewMatrix, W.mat), m.projectionMatrix = L._projectMatrix, m.viewMatrix = L._viewMatrix, m.scale = L.getHeight() / 2, m.size = W.size, m.diffuse = W.diffuse, m.opacity = W.opacity, m.map = L.getTexture(W.texture, f.data), m.alphaTest = W.alphaTest, m.resolution = L.getDevicePixelRatio(), h.position = Sl(M, L._buffer.vs, b.vs, F), L._picking ? (m.picking = !0, h.pickColor = Sl(M, L._buffer.ps, b.ps, F), m.useColor = !1, h.color = null) : (m.picking = !1, h.pickColor = null, b.cs ? (m.useColor = !0, h.color = Sl(M, L._buffer.cs, b.cs, F)) : (m.useColor = !1, h.color = null)), b.ss ? (m.useSizeArray = !0, h.sizeArray = Sl(M, L._buffer.ss, b.ss, F)) : (m.useSizeArray = !1, h.sizeArray = null), ie(M, 0, b.vs.length / 3, M.POINTS), o.useProgram(d) - } - }, _asureProgram: function (b) { - return b._pointsShader || (b._pointsShader = this.gv._postProcessing.createShader(b, Co.shaderSrc)), b._pointsShader.program - } - }), Co.shaderSrc = "! !~v!o jp+s!nf!{njbTuu5o!jnppQe`fmmhW!j*f!xfNwbjuusdjfyqj>p!o^N!b4u!s]j^y!<3 !!]vyojjsgupbsNno!pnjbuud5f!kwpjsfqx!N)b!u>s!jfywt!jfu{jjpToup!mfp{sjq!jodpljDupjmtppsQ<` m h!!v ob!uo!psjfutjptmpvQuwjnp!o << *!!v1o/j2g!p-senf!ncspppgmt!ovbtsfuT!j){5fdBfsws!b>z!!!jetfQnfssptgqtfodbusjuw!f4Ndbfuws!j y~)!! nn!]s!p3m!p^D]w!!4 !|^!!*>s>p!m.p!D2f/t1v<) !!g~j ! f!twmpfj!e !~n!b jq!jsdplmjpoDhw*!! |^#! !~q s~f!d jb!us!!esjpgmgpvDthfbu>z!f+d!usbpcmmpfDl!jsophm!p%D%f!tvvtgfgDjpem!p s|*!!f|t m!fe!j~g!g vp!!w-f{dz5y)/!swpDmp"; - var Ds = function (i, D) { - fi(Ds, this, [i, D]), this._needRecoverPosition = !0 - }; - yc(Ds, Wj, { - _25Q: 1, - validate: function (M) { - var w = this, - k = w.data, - c = w.s, - h = k.getPoints(), - Q = h.size(); - w.dispatchBoundingBoxChanged(); - var P = k.p3(), - v = w.mat = kn(); - bo(v, P), Cl(v, k.getFinalRotation3d(), k.getRotationMode()); - var L = k.getScale3d(), - $ = k._dynamicScale3d; - if ($ && (L[0] *= $[0], L[1] *= $[1], L[2] *= $[2]), Bd(v, L), bo(v, Cj(P)), (!w.s("geometry.cache") || !w.shapeModel) && (w.shapeModel = w.info = F, Q > 1)) { - var t = w.info = {}, - _ = k.getSegments(), - s = k.getThickness(), - g = bk(h.get(0)), - r = bk(h.get(Q - 1)), - u = Q % 2; - 0 === u ? (t.c1 = bk(h.get(Q / 2 - 1)), t.c2 = bk(h.get(Q / 2))) : t.p3 = bk(h.get((Q - u) / 2)), t.s1 = g, t.s2 = bk(h.get(1)), t.t1 = bk(h.get(Q - 2)), t.t2 = r, t.list = c(Lm) === xk ? w.createTubeModel(h, _, s / 2, M) : w.createLineModel(h, _, s, "shape.border", "shape.dash") - } - }, invalidateCachedGeometry: function () { - this.shapeModel = this.info = F - }, _80o: function (d, $, C) { - var h = this, - e = h.shapeModel; - if (e) { - var a = h.gv; - gk(a, h.mat), pj(a, h.data, e, h, h.getBodyColor(), C), Gf(a) - } - } - }); - var Es = O.graph3d.VR = function (G) { - var B = this; - B.gv = G, B._controllers = [], B.switch = new Gs(B), B._enable = !1, B._defaultCallLater = O.Default.callLater, B._defaultCancelLater = td, "undefined" != typeof x && "VRFrameData" in x && (B._frameData = new x.VRFrameData), B.measureOflength = 1, B.eyesOffset = [0, 0, 0], B._orientation = new Rc.Quaternion, B._lastHeadPose = [0, 0, 0], B._offsetToBeAdd = [0, 0, 0], B._originalOrientation = null, B._fpsInfo = { - time: 0, - fps: 0, - frames: 0 - } - }; - yc(Es, o, { - ms_fire: !0, - setOriginalYRotation: function (n) { - var B = this; - if (null == n) return B._originalOrientation = null, void 0; - var i = new Rc.Vector3(0, 1, 0), - P = (new Rc.Quaternion).setFromAxisAngle(i, -n), - F = (new Rc.Matrix4).makeRotationFromQuaternion(P); - return P.setFromAxisAngle(i, n), B._originalOrientation = { - quaternion: P, - matrixInverse: F - }, !0 - }, render: function (F, n, W) { - var c = this, - E = c.gv; - if (c._deviceInAction) { - var j = c._device; - if (j) { - var v = c._measureOflength; - j.depthNear = E.getNear() * v, j.depthFar = E.getFar() * v; - var i = c._offsetToBeAdd; - if (c.eyesOffset[0] += i[0], c.eyesOffset[1] += i[1], c.eyesOffset[2] += i[2], i[0] = 0, i[1] = 0, i[2] = 0, j.isPresenting === !1) return c._controllers.forEach(function (r) { - r && r.update() - }), E.iv(), !1; - var U = c._frameData; - j.getFrameData(U); - var m = U.pose.position; - if (m) { - var r = c.toViewPosition(m); - E.setEye(r), c._orientation.fromArray(U.pose.orientation), c._originalOrientation && c._orientation.premultiply(c._originalOrientation.quaternion); - var S = new Rc.Vector3(0, 0, -10 * c._scaleFactor); - S.applyQuaternion(c._orientation), E.setCenter([r[0] + S.x, r[1] + S.y, r[2] + S.z]) - } - c._controllers.forEach(function (M) { - M && M.update() - }), E.setViewport(F, 0, 0, n / 2, W), c._viewMatrix = c._copyViewMatrix(U.leftViewMatrix), c._projectMatrix = c._copyProjectMatrix(U.leftProjectionMatrix), E.updateScene(), E.renderScene(), E.setViewport(F, n / 2, 0, n / 2, W), c._viewMatrix = c._copyViewMatrix(U.rightViewMatrix), c._projectMatrix = c._copyProjectMatrix(U.rightProjectionMatrix), E.updateScene(), E.renderScene(), c._lastViewMatrix = c._viewMatrix, c._lastProjectMatrix = c._projectMatrix, c._viewMatrix = null, c._projectMatrix = null, c.submitFrame(); - var Y = Date.now(), - x = c._fpsInfo; - return Y - x.time > 1e3 ? (x.fps = Math.round(1e3 * (x.frames + 1) / (Y - x.time)), x.time = Y, x.frames = 0) : x.frames++, !0 - } - } - }, onVRDisplayPresentChange: function () { - var h = this.isPresenting(); - this._injectGraphView(h), this.fp("present", !h, h) - }, getOrientation: function () { - return this._orientation - }, addController: function (i) { - i = i || 0; - var g = this, - s = g.getController(i); - return s ? s : (s = new Fs(g, i), g._controllers.push(s), s) - }, getController: function (K) { - K = K || 0; - for (var I = this._controllers, x = 0, C = I.length; C > x; x++) - if (I[x] && I[x].id === K) return I[x]; - return null - }, removeController: function (x) { - x = x || 0; - for (var d = this._controllers, H = 0, q = d.length; q > H; H++) - if (d[H] && d[H].id === x) return d.splice(H, 1), !0; - return !1 - }, getLastHeadPose: function () { - return this._lastHeadPose - }, toViewPosition: function (z, j) { - var S = this, - _ = S._scaleFactor, - s = S._eyesOffset, - t = S._lastHeadPose; - if (S._originalOrientation) { - var c = S._originalOrientation.quaternion, - V = new Rc.Vector3(z); - V.applyQuaternion(c).multiplyScalar(_).toArray(t) - } else t[0] = z[0] * _, t[1] = z[1] * _, t[2] = z[2] * _; - return j ? (j[0] = t[0] + s[0], j[1] = t[1] + s[1], j[2] = t[2] + s[2], j) : [t[0] + s[0], t[1] + s[1], t[2] + s[2]] - }, addEyesOffset: function (x, P, A) { - var Z = this._offsetToBeAdd; - Z[0] += x, Z[1] += P, Z[2] += A - }, _copyViewMatrix: function (U) { - var d = this, - s = d.dup(U); - if (d._originalOrientation) { - var w = (new Rc.Matrix4).fromArray(s); - w.multiply(d._originalOrientation.matrixInverse).toArray(s) - } - var j = d._scaleFactor; - s[12] *= j, s[13] *= j, s[14] *= j; - var Y = d._eyesOffset; - if (Y && (Y[0] || Y[1] || Y[2])) { - var o = Y[0], - t = Y[1], - m = Y[2]; - s[12] -= s[0] * o + s[4] * t + s[8] * m, s[13] -= s[1] * o + s[5] * t + s[9] * m, s[14] -= s[2] * o + s[6] * t + s[10] * m - } - return s - }, shutdown: function () { - var x = this._device; - x && x.isPresenting && x.exitPresent() - }, isPresenting: function () { - var y = this._device; - return y && y.isPresenting - }, _copyProjectMatrix: function (j) { - var M = this.dup(j), - _ = this._scaleFactor; - return M[14] *= _, M - }, dup: function (y, W) { - for (var d = y.length, R = W || new Array(d); d--;) R[d] = y[d]; - return R - }, getViewMatrix: function (k) { - var R = this._viewMatrix; - return R ? this.dup(R, k) : void 0 - }, getProjectMatrix: function () { - var n = this._projectMatrix; - return n ? this.dup(n) : void 0 - }, submitFrame: function () { - var s = this; - if (s._enable && s._deviceInAction) { - var w = s._device; - w && w.isPresenting && (w.submitFrame(), s.gv.iv()) - } - }, getFps: function () { - return this._fpsInfo.fps - }, intersectWorld: function (b) { - var o = this.gv; - return o.intersectObjects(b, o.dm().getDatas()) - }, setDevice: function (P) { - var U = this; - U._device = P - }, _injectGraphView: function () { - var o, b, H; - return function (J) { - var O = this.gv; - if (!J) return o && (O.getWidth = o, O.getHeight = b, O.getDevicePixelRatio = H), void 0; - var a = this._device, - r = a.getEyeParameters("left"), - j = r.renderWidth, - X = r.renderHeight; - o = O.getWidth, b = O.getHeight, H = O.getDevicePixelRatio, O.getWidth = function () { - return 2 * j - }, O.getHeight = function () { - return X - }, O.getDevicePixelRatio = function () { - return 1 - } - } - }(), - _injectCallLaterFunc: function (B) { - var T = this; - if (!B) return $e = O.Default.callLater = T._defaultCallLater, td = O.Default.cancelLater = T._defaultCancelLater, void 0; - var T = this; - $e = O.Default.callLater = function (V, H, s, J) { - var j = T._device; - return j && j.isPresenting ? J ? cd(function () { - $e(V, H, s) - }, J) : j.requestAnimationFrame(function () { - T._deviceInAction = !0, V.apply(H, s), T._deviceInAction = !1 - }) : T._defaultCallLater(V, H, s, J) - }, td = O.Default.cancelLater = function (f, P) { - var Y = T._device; - return Y && Y.isPresenting ? P ? nr(f) : Y.cancelAnimationFrame(f) : T._defaultCancelLater(f, P) - } - } - }), o.defineProperties(Es.prototype, { - enable: { - get: function () { - return this._enable - }, set: function (Y) { - var N = this; - N._enable !== Y && (N._enable = Y, Y ? (N.switch.showButton(), N._injectCallLaterFunc(!0)) : (N.shutdown(), N.switch.hideButton(), N._injectCallLaterFunc(!1)), N.fp("enable", !Y, Y)) - } - }, - measureOflength: { - get: function () { - return this._measureOflength - }, set: function (X) { - this._measureOflength = X; - var S = this._scaleFactor = 1 / X; - this._controllers.forEach(function (P) { - P && P._setScaleFactor(S) - }) - } - }, - eyesOffset: { - get: function () { - return this._eyesOffset - }, set: function (U) { - this._eyesOffset = U - } - }, - controllerModel: { - get: function () { - return this._controllerModel - }, set: function (c) { - var G; - "object" == typeof c ? (G = c.mtl, c = c.obj) : (G = c + ".mtl", c += ".obj"); - var X = this, - A = X._controllerModel; - A && A.obj === c && A.mtl === G || (A = X._controllerModel = { - obj: c, - mtl: G - }, u.loadObj(c, G, { - finishFunc: function (v, x) { - X._controllerModel === A && u.setShape3dModel("vrControllerModel", x) - } - })) - } - }, - interactive: { - get: function () { - return !!this._interactive - }, set: function (N) { - !!N != !!this._interactive && (this._interactive = N, N && this.addController(0), this.gv.getCoreInteractor().enableVR(N)) - } - } - }); - var Fs = function (q, J) { - function P(S) { - var m = navigator.getGamepads && navigator.getGamepads(); - if (m) - for (var k = 0, M = 0, w = m.length; w > k; k++) { - var c = m[k]; - if (c) { - var Y = c.id; - if ("OpenVR Gamepad" === Y || 0 === Y.indexOf("Oculus Touch") || Y.indexOf("Controller") >= 0) { - if (M === S) return c; - M++ - } - } - } - } - - function $(A, n, D) { - return Math.abs(A[0] - n[0]) < D && Math.abs(A[1] - n[1]) < D && Math.abs(A[2] - n[2]) < D ? !0 : !1 - } - var G = this; - G.vr = q, G.id = J; - var c, z, j = [0, 0], - Y = [{ - id: "thumbpad", - pressed: !1 - }, { - id: "trigger", - pressed: !1 - }, { - id: "grips", - pressed: !1 - }, { - id: "menu", - pressed: !1 - }], - w = new Dp; - w.s("shape3d", "vrControllerModel"), w.isController = !0, w.s("intersect", !1), G.getGamepad = function () { - return z - }, G.isButtonPressed = function ($) { - for (var Z, q = 0, g = Y.length; g > q; q++) - if (Z = Y[q], Z.id === $) return Z.pressed; - return !1 - }, G.getNode = function () { - return w - }; - var I = .003; - G.setRotationEpsilon = function (V) { - I = V - }; - var n = 5e-4, - m = n; - G.setPositionEpsilon = function (C) { - n = C, m = C * G.vr._scaleFactor - }, G._setScaleFactor = function (x) { - w.s3(x, x, x), m = n * x - }, G._setScaleFactor(G.vr._scaleFactor); - var l, f = new fs, - R = new br, - g = [0, 0, 0], - v = [0, 0, 0], - o = new gg, - x = new tl, - N = new Qi; - G.getRay = function () { - return l ? (N.origin.fromArray(g), N.direction.copy(x), l = !1, N) : N - }, G.update = function () { - if (c = z, z = P(J), !z || z.pose === Z) return z = null, w.s("3d.visible", !1), void 0; - if (u.getShape3dModel("vrControllerModel")) { - w.dm() || q.gv.dm().add(w), w.s("3d.visible", !0); - var y = z.pose; - if (null !== y) { - if (y.position && (G.vr.toViewPosition(y.position, g), $(w.p3(), g, m) || (l = !0, w.p3(g))), y.orientation) { - f.fromArray(y.orientation); - var X = G.vr._originalOrientation; - X && f.premultiply(X.quaternion), x.set(0, 0, -1).applyQuaternion(f).normalize(), R.makeRotationFromQuaternion(f), o.set(0, 0, 0, w.getRotationMode(), !0).setFromRotationMatrix(R), v[0] = o.x, v[1] = o.y, v[2] = o.z, $(w.r3(), v, I) || (l = !0, w.r3(v)) - } - l && q.fp("gamepad.pose", null, { - position: g, - rotation: v, - id: J - }); - var U = z.axes; - (j[0] !== U[0] || j[1] !== U[1]) && (j = [U[0], U[1]], q.fp("gamepad.axes", null, { - id: J, - axes: j - })); - var T, V, r, E, t = z.buttons; - for (T = 0, V = t.length; V > T; T++) - if (r = t[T], r && (E = r.pressed, Y[T] || (Y[T] = { - id: "button" + T, - pressed: !1 - }), E !== Y[T].pressed)) { - Y[T].pressed = E; - var H = { - id: J - }, - K = "state"; - H[K] = H._62O = E ? "down" : "up", q.fp("gamepad.button." + Y[T].id, null, H) - } - } - } - } - }, - Gs = function (s) { - this.vr = s, this._button = null - }; - yc(Gs, o, { - showButton: function () { - var T = this.assureButton(); - if (!T.parentNode) { - var Y = this.vr.gv, - b = Y.getView(); - Y._79O ? b.insertBefore(T, Y._79O) : b.appendChild(T) - } - }, hideButton: function () { - var r = this._button; - r && r.parentNode && r.parentNode.removeChild(r) - }, assureButton: function () { - var r = this._button; - return r ? r : this._button = this.createButton(this.vr.gv) - }, createButton: function (F) { - function v(j, C) { - j.textContent = C && C.isPresenting ? "关闭 VR 显示" : "开启 VR 显示" - } - - function _(n) { - h.style.display = "", h.style.cursor = "pointer", h.style.left = "calc(50% - 50px)", h.style.width = "100px", v(h, n), h.onmouseenter = function () { - h.style.opacity = "1.0" - }, h.onmouseleave = function () { - h.style.opacity = "0.5" - }, h.onclick = function () { - n.isPresenting ? n.exitPresent() : n.requestPresent([{ - source: F.getCanvas() - }]) - }, F.vr.setDevice(n) - } - - function q() { - h.style.display = "", h.style.cursor = "auto", h.style.left = "calc(50% - 75px)", h.style.width = "150px", v(h, null), h.onmouseenter = null, h.onmouseleave = null, h.onclick = null, F.vr.setDevice(null) - } - - function S(g) { - g.style.position = "absolute", g.style.bottom = "20px", g.style.padding = "12px 6px", g.style.border = "1px solid #fff", g.style.borderRadius = "4px", g.style.color = "#000", g.style.font = "normal 13px sans-serif", g.style.textAlign = "center", g.style.opacity = "0.5", g.style.outline = "none", g.style.zIndex = "999" - } - if ("getVRDisplays" in navigator) { - var h = this._button = U.createElement("button"); - return h.style.display = "none", S(h), K(x, "vrdisplayconnect", function (j) { - _(j.display) - }), K(x, "vrdisplaydisconnect", function () { - q() - }), K(x, "vrdisplaypresentchange", function (e) { - v(h, e.display), F.vr.onVRDisplayPresentChange() - }), navigator.getVRDisplays().then(function (S) { - S.length > 0 ? _(S[0]) : q() - }), h - } - var o = U.createElement("a"); - return o.href = "https://webvr.info", o.innerHTML = "当前不支持 webvr", o.style.left = "calc(50% - 90px)", o.style.width = "180px", o.style.textDecoration = "none", S(o), o - } - }), o.defineProperties(Gs.prototype, {}); - var Hs = O.graph3d.PostProcessing = function (C) { - function T() { - if (!I) { - var h = C.getGL(); - I = new Eh.RenderTarget(C, h, null, null, { - samples: z.renderTextureSamples || 1 - }), d = new Cm.Shader(h, O.vs, O.fs), V = Cm.Buffer.createIndexBuffer(h, new Uint16Array([0, 2, 1, 1, 2, 3])), i = Cm.Buffer.createVertexBuffer(h, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1])) - } - } - var I, d, V, i, G = this, - q = {}, - s = !1; - ! function () { - o.keys(Hs).forEach(function (G) { - q[G] = new Hs[G](C) - }) - }(), G.getModule = function (E) { - return E ? q[E] : G - }, G.getModuleList = function () { - return o.keys(q) - }, G._serializable = !0, G.handleDataModleChange = function (W, j) { - W && (G._serializable && W.setPostProcessingData(G.serialize()), W.removeSerializeListener(G.onDataModelSerialize, G)), j && (j.addSerializeListener(G.onDataModelSerialize, G), G.deserialize(j)) - }, G.onDataModelSerialize = function (K) { - "serialize" === K.type ? G._serializable && (C.dm()._postProcessingData = G.serialize()) : "deserialize" === K.type && G.deserialize(C.dm()) - }, G.isDeserializeDisabled = function (s) { - return !G._serializable || s.a("sceneBloom") !== Z - }, G.isSerializable = function () { - return G._serializable - }, G.setSerializable = function (L) { - G._serializable = L, L || C.dm().setPostProcessingData(Z) - }, G.serialize = function () { - var a, B, p, Z, S = {}; - for (B in q) - if (p = q[B], Z = p.serializeProperties) { - a = {}, p.enable && (a.enable = !0); - for (var l in Z) { - var T = p[l]; - T != Z[l] && (a[l] = T) - } - o.keys(a).length && (S[B.toLowerCase()] = a) - } - return S - }, G.deserialize = function (k) { - var y, F, R, b, s, U = {}, - z = {}; - for (y in q) { - R = q[y], b = R.serializeProperties; - var c = {}, - E = "scene" + y, - N = k.a(E); - N !== Z && (c.enable = N); - for (var s in b) N = k.a(E + s[0].toUpperCase() + s.slice(1)), N !== Z && N !== b[s] && (c[s] = N); - wd(c) || (z[y[0].toLowerCase() + y.slice(1)] = c) - } - if (wd(z) && (z = k.getPostProcessingData()), z) - for (F in z) - if (F && (y = F[0].toUpperCase() + F.slice(1), R = q[y])) { - U[y] = !0, b = z[F]; - var L = !!b.enable; - G.enableModule(y, L), y = "scene" + y, k.a(y, L), R.resetProperties && R.resetProperties(); - for (s in b) - if ("enable" !== s) { - var N = b[s]; - R[s] = N, k.a(y + s[0].toUpperCase() + s.slice(1), N) - } - } - for (y in q) U[y] || (R = q[y], R.enable = !1, R.resetProperties && R.resetProperties()) - }, G.decodeShader = function (I) { - var y, z, X, T = "", - E = ""; - for (X = 0; X < I.length; X++) y = I[X], "%" === y ? y = "'" : "a" === y ? y = '"' : "]" === y && (y = "\\"), z = String.fromCharCode(y.charCodeAt(0) - 1), X % 2 ? E += z : T = z + T; - return E + T - }, G.createShader = function (_, v, A) { - var e = v.indexOf("^#"), - g = G.decodeShader(v.substr(0, e)), - O = G.decodeShader(v.substr(e + 2)); - if (A) { - var d = A(g, O); - d && d.vs && (g = d.vs), d && d.fs && (O = d.fs) - } - return new Cm.Shader(_, g, O) - }, G.enableModule = function (z, h) { - var u, E, o, U = z.split(","); - for (u = 0, E = U.length; E > u; u++) o = U[u].trim(), q[o] && (q[o].enable = h); - s = !1; - for (o in q) - if (q[o].enable) { - s = !0; - break - } - s && T() - }; - var O = { - vs: ["attribute vec2 pos;", "varying vec2 vUv;", "void main(void) {", "gl_Position = vec4(pos.x * 2.0 - 1.0, -pos.y * 2.0 + 1.0, 0.0, 1.0);", "vUv = vec2(pos.x, 1.0 - pos.y);", "}"].join("\n"), - fs: ["precision highp float;", "uniform sampler2D image;", "varying vec2 vUv;", "void main() {", "gl_FragColor = texture2D(image, vUv);", "}"].join("\n") - }; - G.render = function (h, L, w) { - if (s) { - I.setSize(h, L, w), I.bind(h); - var T = h.getParameter(h.COLOR_CLEAR_VALUE); - T && 0 === T[0] && 0 === T[1] && 0 === T[2] && 0 === T[3] ? T = null : qe(h, [0, 0, 0, 0]), h.clear(h.COLOR_BUFFER_BIT | h.DEPTH_BUFFER_BIT), C.setViewport(h, 0, 0, L, w), C.renderScene(), I.unbind(h); - for (var Y = 0, b = C._glCapabilities.maxAttributes; b > Y; Y++) h.disableVertexAttribArray(Y); - var r, A = I; - for (r in q) A = q[r]._42(h, A) || A; - return C.setViewport(h, 0, 0, L, w), T && qe(h, T), h.clear(h.COLOR_BUFFER_BIT | h.DEPTH_BUFFER_BIT), d.bind(), h.activeTexture(h.TEXTURE0 + 0), an(h, A.texture), d.uniforms.image = 0, V.upload(), i.upload(), d.attributes.pos.pointer(i), h.drawElements(h.TRIANGLES, 6, h.UNSIGNED_SHORT, 0), an(h, null), h.useProgram(C._prg), !0 - } - } - }, - Is = O.graph3d.PostProcessing.Bloom = function (S) { - function H() { - var B = S.getGL(); - if (B) - for (var A = S._postProcessing, K = 0; f > K; K++) Z[K] = A.createShader(B, Is._35Q, function (i, R) { - return { - fs: R.replace(/DEFINE_VALUE/g, $[K]).replace("%OVERRIDE_ALPHA_DEFINE%", I ? "#define OVERRIDE_ALPHA" : "") - } - }) - } - - function k() { - var X = S.getWidth(), - _ = S.getHeight(); - if (X && _) { - B = [X, _], L = !0; - var V, Q = S.getGL(), - r = Math.round(B[0] / 2), - P = Math.round(B[1] / 2); - for (x = new Eh.RenderTarget(S, Q, r, P), V = 0; f > V; V++) u.push(new Eh.RenderTarget(S, Q, r, P)), n.push(new Eh.RenderTarget(S, Q, r, P)), r = Math.round(r / 2), P = Math.round(P / 2); - var T = S._postProcessing; - O = T.createShader(Q, Is._34Q), H(), G = T.createShader(Q, Is._36Q, function (U, P) { - return { - fs: P.replace(/NUM_MIPS/g, f) - } - }), j = T.createShader(Q, Is.finalShader), M = Cm.Buffer.createIndexBuffer(Q, new Uint16Array([0, 2, 1, 1, 2, 3])), e = Cm.Buffer.createVertexBuffer(Q, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1])) - } - } - var F, W, K, I, r, M, e, E, m = this, - s = !1, - L = !1; - this.serializeProperties = { - strength: 1.5, - threshold: .55, - radius: .4, - overrideAlpha: !0, - selective: !1 - }, this.resetProperties = function () { - var m = this.serializeProperties; - for (var R in m) this[R] = m[R] - }, o.defineProperties(m, { - enable: { - get: function () { - return s - }, set: function (d) { - !!s != !!d && (s = d, d && !L && k(), S.iv()) - } - }, - strength: { - get: function () { - return F - }, set: function (Z) { - F !== Z && (F = Z, S.iv()) - } - }, - threshold: { - get: function () { - return W - }, set: function (q) { - W !== q && (W = q, S.iv()) - } - }, - radius: { - get: function () { - return K - }, set: function (C) { - K !== C && (K = C, S.iv()) - } - }, - overrideAlpha: { - get: function () { - return I - }, set: function (t) { - !!I != !!t && (I = t, L && H(), S.iv()) - } - }, - selective: { - get: function () { - return r - }, set: function (n) { - !!r != !!n && (r = !!n, S.iv()) - } - } - }), this.resetProperties(); - var x, O, G, j, B = [256, 256], - u = [], - n = [], - f = 5, - $ = [3, 5, 7, 9, 11], - Z = []; - m._42 = function (_, P) { - function A(b, J, z, $) { - So(_, J.frame), S.setViewport(_, 0, 0, J.width, J.height), $ ? $(_) : _.clear(_.COLOR_BUFFER_BIT | _.DEPTH_BUFFER_BIT), V !== b && b.bind(); - var k = 0; - for (var P in z) { - var a = z[P]; - a instanceof WebGLTexture && (_.activeTexture(_.TEXTURE0 + k), an(_, a), a = k, k++), b.uniforms[P] = a - } - for (V !== b && (M.upload(), e.upload(), b.attributes.pos.pointer(e), V = b), _.drawElements(_.TRIANGLES, 6, _.UNSIGNED_SHORT, 0); k--;) _.activeTexture(_.TEXTURE0 + k), an(_, null); - Ar(_) - } - if (s && (L || (k(), L))) { - var V; - if (r) { - E || (E = new Eh.RenderTarget(S, _)), E.setSize(_, P.width, P.height), E.bind(_); - var z = _.getParameter(_.COLOR_CLEAR_VALUE); - z && 0 === z[0] && 0 === z[1] && 0 === z[2] && 1 === z[3] ? z = null : qe(_, [0, 0, 0, 1]), _.clear(_.COLOR_BUFFER_BIT | _.DEPTH_BUFFER_BIT), S.setViewport(_, 0, 0, P.width, P.height), _._blooming = !0, S.renderScene(), _._blooming = !1, z && qe(_, z), E.unbind(_) - } - A(O, x, { - smoothWidth: .01, - luminosityThreshold: W, - tDiffuse: r ? E.texture : P.texture - }); - var U, d = x, - g = Math.round(B[0] / 2), - h = Math.round(B[1] / 2); - for (U = 0; f > U; U++) A(Z[U], u[U], { - colorTexture: d.texture, - direction: [1, 0], - texSize: [g, h] - }), A(Z[U], n[U], { - colorTexture: u[U].texture, - direction: [0, 1], - texSize: [g, h] - }), g = Math.round(g / 2), h = Math.round(h / 2), d = n[U]; - return A(G, u[0], { - blurTexture1: n[0].texture, - blurTexture2: n[1].texture, - blurTexture3: n[2].texture, - blurTexture4: n[3].texture, - blurTexture5: n[4].texture, - bloomStrength: F, - bloomRadius: K, - bloomTintColor: [1, 1, 1] - }), A(j, P, { - image: u[0].texture - }, function (N) { - ts.for(N).glState.blend.apply({ - enabled: !0, - equation: N.FUNC_ADD, - func: [N.SRC_ALPHA, N.ONE] - }) - }), ts.for(_).glState.blend.apply({ - equation: _.FUNC_ADD, - func: [_.SRC_ALPHA, _.ONE_MINUS_SRC_ALPHA, _.ONE, _.ONE_MINUS_SRC_ALPHA] - }), P - } - } - }; - Is._34Q = "~b uw!fwdV3w! w!!.w!f1d/53)!q+p!ty/^#~q sf!ss3pEm!puDEhjbgsgGv`tmfh< 3!!bwiVqwm1!)u5fdyfuwv!s>f!3sEp)m!puDEujvgqguvvtpf!-5!dwfVww !<**f!ywffud!4))u!p1e/!3>:!:w-!!u1b/p6m9g8 -w!fwdV3w! w!!.w!f1d/53)!q+p!ty/^#~q sgfjdejotfj$p on!qsmpfmsp3DEh!bdspGm`pmshU ffytumvfs$f << *v1o/j2g!p-snnv!Twufidh3j!fuxf0ynTvjT{fftd!3s!pemjpsDfhdbusjGp`om ,$!enfvgTjuoifh!jTfJxH NB,M!QnIvBT`fEtFvGgJgOjFe& |! 3sffmuqvnsbot!!14/d4f:w9 :<5c!h+s!/f*yuqf)t!g.g1P/w6v!!+,!!yw!V+w!!y-0f)s!vtujyhfnUbs!p+m!ptdj!h)nEb3*f*s0vtujyhfnub!<> !~2 fwmpqjneb!tn!b4jdof)w* !<|y !w+f!df3{!jjTowwoTjj!{+f!!o>p!j2u/d1f!s0j!eu!f>y!Tujf{tfgj!Tggm!p-byu))gTeJQHoNbBj*tu!!xx!fujbhpimugT v)!uhbbpvmtgt!j>b!oyQ!eugb)p1m/g1 -|!!g*T!j,h,n!bj*!<< TwVfJdE5B!Su`fMyFuOvSsFfLQ!j=y!!j>!!u!vjs!fu3oEj)!!)dsppmgp sv!n", Is._36Q = "~b uw!fwdV3w! w!!.w!f1d/53)!q+p!ty/^#~q sp!p2m/c3)!5.d!fgwb!d+u!p*s1p!nsSpbmepjDvhtb*s q; q++) A[q] = H[q] / 180; - D.iv() - } - } - }, - saturation: { - get: function () { - return Z - }, set: function (Y) { - if (Z !== Y && 7 === Y.length) { - for (var M = 0; 7 > M; M++) Z[M] = Y[M] / 100; - D.iv() - } - } - }, - lightness: { - get: function () { - return W - }, set: function (Y) { - if (W !== Y && 7 === Y.length) { - for (var Z = 0; 7 > Z; Z++) W[Z] = Y[Z] / 100; - D.iv() - } - } - } - }), T._42 = function (J, N) { - if (q) { - C || g(); - var G = N.width, - O = N.height; - if (G && O) { - w.setSize(J, G, O), So(J, w.frame), D.setViewport(J, 0, 0, w.width, w.height), J.clear(J.COLOR_BUFFER_BIT | J.DEPTH_BUFFER_BIT), t.bind(), J.activeTexture(J.TEXTURE0 + 0), an(J, N.texture); - var _ = t.uniforms; - return _.image = 0, _.hue = A, _.saturation = Z, _.lightness = W, y.upload(), x.upload(), t.attributes.pos.pointer(x), J.drawElements(J.TRIANGLES, 6, J.UNSIGNED_SHORT, 0), an(J, null), Ar(J), w - } - } - } - }; - Ks.hueSaturationShader = "!! b~u!u sf!dw3V!ww!V w<<* 1 /!2w!p-j1e/!1n!b-j1o/)2w!p,j!e1*/!3|! +!!hzm/`tQppqt.j!u-j1p/o2!!>.!!w1f/d35!)+q!pyt/^#!! q~s!f db!nsqpmmfpsD3hEb!sjGn`bmhhf!< f!tmtt]iN!B Y `~S!B O~H!F ^<!!gfmhpobbuS!titvffoBumimh-j!mg!m pv!ff!h>o!bjSooWpbjmuvbfs!v,u!b)ti!v f3!/f1h1>*!!ssffuuovvspod!`wfbvmiv)f!!g,j!!2 /|1!<* ,!,fsmftufo!vjpgd!`)fwvbim!v !!sffmutofv!psdf`ufvvsio!!uwobjm)v!fst!bfuhvosbbsu!j pm!pfbhuo!bjso!W*b7m!v>f?-!!fghmopbbsu)!!tgbju!v s~b!u j~p!o Bb!ofhhfo*b!s|! !|g!m*p6b/u1!!w,b!m*vsff!u>o!vjpodW`bfmvvif)!u+b!p)m2g/!1=!!,i!)t!bgujv!s b|u!j*p,o,Bsmfmu!o,v!ptdb`ufvvsib!uv!fs-f!u1o/v1p-d!`2f/v1i*!u!!fmhjohbisu!oufotjt!S bp!mmgj!h ih!iiu!oufbtptmSgb!o hu!vmstoi!!j4odWfbwm!v fu!vsspom!pjdo!W5bdmfvwf!! ,|!!)*w)!o+j!b)n2!/e1j!p.w!!j o W~b!m vp!biu!! g~3!- !!,i!vif!* !||! *!1j/g1!!)=i!vif)!!=g!j1!/ 1 *~ !! iE!d2!/01!<* h!!f.m!tsf)!!j,g!!1)/i5v!f>!!?i!!2 /|1!*f t!mifv!f~!!. >7!/i1!! +|!!i*vyfb*N!d=!!>2>/!1h*) !!gsjf!tf!t>m!fg!2~!!, !<)bgu3m!f.E!dg!20*!!*+c!!7./!1h!)+!!>i!vif!< |!!f*mytbfN!dj!g>!>)!)s3)/!1g!j+!! i v.!!g13/<3 )!!f0m!tbfu!mjfgE!d)!);4!/*1o!j+N!di!v,f!*y!b=N!d3)/!10*! b!usmfftE!d>!!@g!26!/,1!!)=g!3m!!.>!!gt2!* ! +!!.b!uimvffE*d!!+u!b7p/m1gb!Ngd2)3!smh!c ) wc!*>c!!1-/h1)*o!j|n !!-ssh)co!j>n!!w>f!do4j)Nidt!mu/b{p*m!!|c !!ugbmppmbgu!! g<3hj!gh!!)uibtpmm/g{!! = !!sg!3u!b>p!migt!m /<{1!/+1!!)>2!/m1!!u,b!pimtgm!/ z<*1m!ttf! u!bgp3m!g>!! i!!iit!mu/bzp!m.g!!i t|m!/*zd!!+4!diftwm)/m{t~!!3 /<1c!h+s!!iotsmv/u{f!s.!! g~3!< < *!*s1h/c4/0s1!/>2!)i!v.f!3ys/hmct)ig!2--3!gg!3--2!gi)tcmh/sy3!f,v!i)!2>/!1c0/4c/h1s*!* << *!ys/hmct/ih!!->3!gi!v-f23gs)hc"; - var Ls = O.graph3d.PostProcessing.Blur = function (B) { - function T() { - d = !0; - var V = B.getGL(); - z = new Eh.RenderTarget(B, V), k = B._postProcessing.createShader(V, Ls.hBlurShader), w = B._postProcessing.createShader(V, Ls.vBlurShader), c = Cm.Buffer.createIndexBuffer(V, new Uint16Array([0, 2, 1, 1, 2, 3])), G = Cm.Buffer.createVertexBuffer(V, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1])) - } - var c, G, k, w, z, R, D = this, - C = !1, - d = !1; - this.serializeProperties = { - value: 0 - }, this.resetProperties = function () { - this.value = 0 - }, o.defineProperties(D, { - enable: { - get: function () { - return C - }, set: function (H) { - !!C != !!H && (C = H, H && !d && T(), B.iv()) - } - }, - value: { - get: function () { - return R - }, set: function (h) { - R !== h && (R = h, B.iv()) - } - } - }), this.resetProperties(), D._42 = function (r, m) { - return C ? D.drawImpl(r, m, R) : void 0 - }, D.drawImpl = function (Z, x, L, R) { - d || T(); - var P = x.width, - j = x.height; - if (P && j) { - R && (P *= R, j *= R), z.setSize(Z, P, j), So(Z, z.frame), B.setViewport(Z, 0, 0, z.width, z.height), Z.clear(Z.COLOR_BUFFER_BIT | Z.DEPTH_BUFFER_BIT), k.bind(), Z.activeTexture(Z.TEXTURE0 + 0), an(Z, x.texture); - var A = k.uniforms; - A.image = 0, A.value = L / P, c.upload(), G.upload(), k.attributes.pos.pointer(G), Z.drawElements(Z.TRIANGLES, 6, Z.UNSIGNED_SHORT, 0), Ar(Z), So(Z, x.frame), B.setViewport(Z, 0, 0, x.width, x.height), Z.clear(Z.COLOR_BUFFER_BIT | Z.DEPTH_BUFFER_BIT), w.bind(), Z.activeTexture(Z.TEXTURE0 + 0), an(Z, z.texture); - var A = w.uniforms; - return A.image = 0, A.value = L / j, c.upload(), G.upload(), w.attributes.pos.pointer(G), Z.drawElements(Z.TRIANGLES, 6, Z.UNSIGNED_SHORT, 0), Ar(Z), an(Z, null), z - } - } - }; - Ls.hBlurShader = "!! b~u!u sf!dw3V!ww!V w<<* 1 /!2w!p-j1e/!1n!b-j1o/)2w!p,j!e1*/!3|! +!!hzm/`tQppqt.j!u-j1p/o2!!>.!!w1f/d35!)+q!pyt/^#!! q~s!f d!!isjphmipqD!hgbmspGb`um ,!!wnpvjte!! n!!-wffvdm5b)w!!1+/!11!/*4)!3udffywu!v-sffh3bEn)j!!j)nEb3hffs-v!uwyffdu3!)>!,w!Vnwv/ty!! .w!!u)f3ydufvws!f-3fEh)b!njjn!b)hEf3-f!swvfudy3f)u!!w>V,w!/nyv!t.!! 4w!!u)f3ydufvws!f-3fEh)b!njjn!b)hEf3-f!swvfudy3f)u!!w>V,w!/nyv!t.!! 3)!Eu3ffysuvvusyff3uE!)>!,j!nnbvhtf!- != Z || 0 >= T || (H._90I || (e = H._90I = {}), e[E] || (e[E] = new xr), qp(t, H.tx() + D, H.ty() + $, Z, T), sn(t, M), H._view.insertBefore(t, H._79O), M.onParentAdded && M.onParentAdded(t), e[E].add(t)) - } - }, d._76o = function () { - var t = this, - v = t._90I; - if (v) { - for (var G in v) v[G].each(function ($) { - yj($) - }); - delete t._90I - } - }, d._77o = function (Y) { - var Q = this; - if (Q._90I) { - var C = Q._90I[Y]; - C && (C.each(function (O) { - yj(O) - }), delete Q._90I[Y]) - } - } - }, _47o: function (g) { - g.getValue = function (P, p) { - return p.getValue ? p.getValue(P, p, this) : jq(P, p.getAccessType(), p.getName()) - }, g.setValue = function (f, _, I) { - if (_.isEmptiable(f) || "" !== I || (I = Z), _.isNullable(f) || I != F) { - var b = this, - j = _.getName(f), - k = _.getAccessType(f), - y = _.getValueType(f); - y === fj && dk(I) ? I = Zb(I) : y === Mo && dk(I) ? I = parseFloat(I) : y === hm && dk(I) && (I = "true" === I), b._batchEditable && _._batchEditable && b.isSelected(f) ? b.sm().each(function (x) { - _.setValue ? _.setValue(x, _, I, b) : Di(x, k, j, I) - }) : _.setValue ? _.setValue(f, _, I, b) : Di(f, k, j, I) - } - }, g.setCurrentEditor = function (y) { - this.endEditing(), this._currentEditor = y, this.redraw() - }, g.isEditing = function (c, O) { - var L = this, - D = L._currentEditor; - if (!D) return !1; - if (O) { - var $ = D.info; - return $ ? ($.column || $.property) === O && $.data === c : !1 - } - return !0 - }, g.endEditing = function (J) { - var m = this, - q = m._currentEditor; - q && (delete m._currentEditor, q.commitValue && q.commitValue(q.info, J), m.redraw(), m.getDataModel().endTransaction()) - }, g.beginEditing = function (o) { - this.endEditing(); - var U = this, - g = o.column || o.property; - if (g.beginEditing) g.beginEditing(o); - else { - var b = o.data, - D = o.value, - n = U.getSelectBackground(b), - G = g.getEnumValues(b), - v = g.getSlider(b), - R = g.getColorPicker(b); - if (v) { - var A = Wn(Vs.Slider, v); - return A.setValue(D), A.getView().onblur = function () { - U.endEditing() - }, A.isInstant() && (A.onValueChanged = function () { - U.setValue(b, g, A.getValue()) - }), Ts(A, o), void 0 - } - if (R || g.getValueType(b) === dg) { - var f = Wn(Vs.ColorPicker, R); - return f.setValue(D), f.onClosed = function () { - U.endEditing() - }, f.isInstant() && (f.onValueChanged = function (x, Z) { - U.setValue(b, g, Z) - }), Ts(f, o), f.open(), void 0 - } - if (G) { - if (Vs.ComboBox) { - var Q = new Vs.ComboBox; - Q.setValue(D), Q.setValues(G), Q.setLabels(g.getEnumLabels(b)), Q.setIcons(g.getEnumIcons(b)), Q.setEditable(g.isEnumEditable(b)), Q.setStrict(g.isEnumStrict(b)), Q.setMaxHeight(g.getEnumMaxHeight(b)), Q.setDropDownWidth(g.getEnumDropDownWidth(b)), Q.onClosed = function () { - U.endEditing() - }, Ts(Q, o), Q.open() - } else Us(nj, o, n, G, g); - return - } - var w = g.getValueType(b); - if (w === hm || El(D)) return U.setValue(b, g, !D), void 0; - if (g.getItemEditor(b)) { - var r = gp(g.getItemEditor(b)), - h = new r(b, g, U, o), - J = h.getView(); - return J._17Q = h, h.setValue(D), uj(J), Ts(J, o), h.editBeginning && h.editBeginning(), void 0 - } - Us("input", o, n, F, g) - } - } - }, _44o: function (D) { - D.init = function (R) { - var Q = this, - v = Q.th = new jt(R), - C = Q._view = ve(1, Q); - Q.tv = Q._tableView = R, sn(C, v.getView()), sn(C, R.getView()), v.mp(function (g) { - g.property === Hh && Q.iv() - }), Q.iv() - }, D.getTableView = function () { - return this.tv - }, D.getTableHeader = function () { - return this.th - }, D.getDataModel = function () { - return this.tv.dm() - }, D.getColumnModel = function () { - return this.tv.getColumnModel() - }, D.setColumns = function (D) { - this.tv.setColumns(D) - }, D.addColumns = function (P) { - this.tv.addColumns(P) - }, D.endEditing = function () { - this.tv.endEditing() - }, D.validateImpl = function () { - var W = this, - H = W.th, - P = zp(H), - o = { - x: 0, - y: 0, - width: W.getWidth(), - height: P - }; - qp(H, o), o.y = P, o.height = q(0, W.getHeight() - P), qp(W.tv, o) - } - }, ms_vs: function (y) { - y._41o = function () { - return this._29I.height < this._59I - }, y._43o = function () { - var r = this; - r._41o() && (r._58I || (cd(function () { - r._94O() - }, Lg), r.iv()), r._58I = new Date) - }, y._94O = function () { - var Q = this; - if (Q._58I) { - var o = new Date; - o.getTime() - Q._58I.getTime() >= Lg ? (delete Q._58I, Q.iv()) : cd(function () { - Q._94O() - }, Lg) - } - }, y._93I = function () { - var X = this, - O = X._27I; - if (X._58I || !X._autoHideScrollBar) { - O || sn(X._79O, O = X._27I = dd()); - var J = X._29I, - $ = J.height, - v = X._59I, - m = X.getScrollBarSize(), - U = J.width - m - 2, - e = $ * (-X.ty() / v), - I = $ * ($ / v), - E = O.style; - v > $ ? (un > I && (e = e + I / 2 - un / 2, 0 > e && (e = 0), e + un > $ && (e = $ - un), I = un), E.visibility = Pd, E.background = X.getScrollBarColor(), E.borderRadius = m / 2 + oe, qp(O, U, e, m, I)) : E.visibility = fc - } else O && (O.style.visibility = fc) - } - }, ms_hs: function (e) { - e._40o = function () { - return this._29I.width < this._91I - }, e._42o = function () { - var e = this; - e._40o() && (e._95O || (cd(function () { - e._94I() - }, Lg), e.iv()), e._95O = new Date) - }, e._94I = function () { - var v = this; - if (v._95O) { - var o = new Date; - o.getTime() - v._95O.getTime() >= Lg ? (delete v._95O, v.iv()) : cd(function () { - v._94I() - }, Lg) - } - }, e._92I = function () { - var C = this, - t = C._28I; - if (C._95O || !C._autoHideScrollBar) { - t || sn(C._79O, t = C._28I = dd()); - var a = C._29I, - R = a.width, - E = C._91I, - M = C.getScrollBarSize(), - r = a.height - M - 2, - H = R * (-C.tx() / E), - O = R * (R / E), - X = t.style; - E > R ? (un > O && (H = H + O / 2 - un / 2, 0 > H && (H = 0), H + un > R && (H = R - un), O = un), X.visibility = Pd, X.background = C.getScrollBarColor(), X.borderRadius = M / 2 + oe, qp(t, H, r, O, M)) : X.visibility = fc - } else t && (t.style.visibility = fc) - } - } - }), _c(tm, ee(16, 16, [{ - type: Tq, - rect: [1, 1, 14, 14], - background: Bc - }, { - type: Xe, - rect: [1, 1, 14, 14], - width: 1, - color: Em - }, { - type: bl, - points: [13, 3, 7, 12, 4, 8], - borderWidth: 2, - borderColor: "#FFF" - }])), _c(He, ee(16, 16, { - type: Xe, - rect: [1, 1, 14, 14], - width: 1, - color: Em - })), _c(kj, ee(16, 16, [{ - type: Eq, - rect: [2, 2, 12, 12], - borderWidth: 1, - borderColor: Em, - background: "#FFF" - }, { - type: Eq, - rect: [4, 4, 8, 8], - background: Bc - }])), _c(yb, ee(16, 16, { - type: Eq, - rect: [2, 2, 12, 12], - borderWidth: 1, - borderColor: Em - })), fb._15Q = function (h) { - h._29I = nl, h._59I = 0, h._91I = 0, h._5o = function (m) { - var x = this; - x._30I = new xr, x._rows = new xr, x._rowMap = {}, x._31I = 0, x._14I = 0, x._view = ve(1, x), x._canvas = uo(x._view), sn(x._view, x._79O = dd()), x.dm(m ? m : new jn) - }, h.getCheckIcon = function (s) { - var o = this.sm(), - V = o.co(s); - return o.sg() ? ii(V ? kj : yb) : ii(V ? tm : He) - }, h.checkData = function (V) { - var t = this.sm(), - j = t.co(V); - t.sg() && j || (this._32o = 1, j ? t.rs(V) : t.as(V), delete this._32o) - }, h.getDataAt = function (i) { - i.target && (i = this.lp(i)); - var Z = T(i.y / this._rowHeight), - P = this._rows; - return 0 > Z || Z >= P.size() ? F : P.get(Z) - }, h.onDataDoubleClicked = function () { }, h.onDataClicked = function () { }, h.adjustTranslateX = function () { - return 0 - }, h.adjustTranslateY = function (E) { - var z = this.getHeight() - this._59I; - return z > E && (E = z), E > 0 ? 0 : A(E) - }, h.onPropertyChanged = function (Y) { - var E = this, - o = Y.property; - Ps[o] ? E.ivm() : Os[o] || E.redraw(), o === gq ? E._42o() : o === wb && E._43o() - }, h.getLabel = function (V) { - return V.toLabel() - }, h.getLabelFont = function () { - return this._labelFont - }, h.getLabelColor = function (w) { - var x = this; - if (x.isCheckMode()) { - if (x._focusData === w) return x._labelSelectColor - } else if (x.isSelected(w)) return x._labelSelectColor; - return x._labelColor - }, h.getStartRowIndex = function () { - return this._31I - }, h.getEndRowIndex = function () { - return this._14I - }, h.getRowDatas = function () { - return this._rows - }, h.getRowIndex = function (E) { - return this._rowMap[E._id] - }, h.getRowSize = function () { - return this._rows.size() - }, h.getViewRect = function () { - return Pm(this._29I) - }, h.isVisible = function (T) { - return this._visibleFunc ? this._visibleFunc(T) : !0 - }, h.getCurrentSortFunc = function () { - return this._sortFunc - }, h.setDataModel = function (P) { - var a = this, - O = a._dataModel, - B = a._selectionModel; - O !== P && (O && (O.umm(a.handleDataModelChange, a), O.umd(a.handleDataPropertyChange, a), O.umh(a.handleHierarchyChange, a), B || O.sm().ums(a.handleSelectionChange, a)), a._dataModel = P, P.mm(a.handleDataModelChange, a), P.md(a.handleDataPropertyChange, a), P.mh(a.handleHierarchyChange, a), B ? B._21I(P) : P.sm().ms(a.handleSelectionChange, a), a.fp("dataModel", O, P)) - }, h.validateModel = function () { - var s = this; - s._rows.clear(), s._rowMap = {}, s.buildChildren(s._dataModel._roots); - var V = s._rows = s._rows.toList(s.isVisible, s), - _ = 0, - Q = s.getCurrentSortFunc(), - L = V.size(); - for (Q && V.sort(Q); L > _; _++) s._rowMap[V.get(_)._id] = _ - }, h.buildChildren = function (w) { - var t = this; - w.each(function (v) { - t._rows.add(v), t.buildChildren(v._children) - }) - }, h.handleDataModelChange = function () { - this.ivm() - }, h.handleDataPropertyChange = function (x) { - "parent" === x.property ? this.ivm() : this.invalidateData(x.data) - }, h.handleHierarchyChange = function () { - this.ivm() - }, h.handleSelectionChange = function (s) { - s.datas.each(this.invalidateData, this), this.onSelectionChanged(s) - }, h.onSelectionChanged = function (m) { - var p = this, - X = p.sm(); - !p.isAutoMakeVisible() || 1 !== X.size() || "set" !== m.kind && "append" !== m.kind || p._32o || p.makeVisible(X.ld()) - }, h.handleBackgroundClick = function (I) { - jj(I) && !this.isCheckMode() && this.sm().cs() - }, h.makeVisible = function (e) { - e && (this._23I = e, this.iv()) - }, h.scrollToIndex = function (Q) { - var p = this, - V = p._29I, - T = V.height, - q = p._rowHeight, - y = q * Q; - Q >= 0 && Q < p._rows.size() && T > 0 && (y + q > V.y + T ? p.ty(-y + T - q) : y < V.y && p.ty(-y)) - }, h.autoScroll = function (r, w) { - var t = this, - c = t._rowHeight, - I = c, - O = c / 4, - W = t._29I, - S = t.lp(r), - D = { - x: t.tx(), - y: t.ty() - }; - return c > 0 && W && (S.x - W.x < I ? t.translate(O, 0) : W.x + W.width - S.x < I && t.translate(-O, 0), S.y - W.y < I ? t.translate(0, O) : W.y + W.height - S.y < I && t.translate(0, -O)), D.x = t.tx() - D.x, D.y = t.ty() - D.y, w && (w.x += D.x, w.y += D.y), D - }, h.getTopRowOrderSelection = function () { - var D = this.sm().getTopSelection(), - g = {}, - S = new xr; - return D.each(function (f) { - g[f._id] = f - }), this._rows.each(function (e) { - g[e._id] && S.add(e) - }), S - }, h.getRowOrderSelection = function () { - var H = new xr; - return this._rows.each(function (X) { - this.isSelected(X) && H.add(X) - }, this), H - }, h.ivm = function () { - this.invalidateModel() - }, h.invalidateModel = function () { - var I = this; - I._96I || (I._96I = 1, I._32I = 1, delete I._24I), I.iv() - }, h.redraw = function () { - var F = this; - F._32I || (F._32I = 1, delete F._24I, F.iv()) - }, h.invalidateData = function (A) { - var n = this; - Xf ? n.redraw() : n._32I || (n._24I || (n._24I = {}), n._24I[A._id] = A, n.iv()) - }, h.getFocusData = function () { - return this._focusData - }, h.setFocusDataById = function (h) { - this.setFocusData(this.dm().getDataById(h)) - }, h.setFocusData = function ($) { - var q = this, - J = q._focusData; - J !== $ && (q._focusData = $, q.fp("focusData", J, $), J && q.invalidateData(J), $ && (q.invalidateData($), q.isAutoMakeVisible() && q.makeVisible($))) - }, h.drawRowBackground = function (S, W, w, L, Z, c, j) { - var K = this, - T = K.isCheckMode(); - (W === K._focusData && T || w && !T) && fl(S, L, Z, c, j, K.getSelectBackground(W)) - }, h.drawData = function (q, C, o) { - var y = this, - e = y._rowHeight, - F = e * o, - U = y._29I, - f = U.x, - d = U.width; - q.save(), q.beginPath(), q.rect(f, F, d, e), q.clip(), y._87o(y.drawRow(q, C, y.isSelected(C), f, F, d, e), o, f, F, d, e), q.restore(), y._rowLineVisible && fl(q, f, F + e - 1, d, 1, y._rowLineColor) - }, h._12I = function (t) { - var e = this, - F = e._31I, - y = e._29I, - j = y.x, - T = y.y, - _ = y.width, - c = y.height; - for (t.beginPath(), t.rect(j, T, _, c), t.clip(), t.clearRect(j, T, _, c), e._76o(), e._93db(t); F < e._14I; F++) e.drawData(t, e._rows.get(F), F); - e._92db(t) - }, h._13I = function (g) { - for (var l, n = this, y = n._rowHeight, E = n._29I, p = E.x, D = E.width, W = n._31I, h = n._30I; W < n._14I; W++) l = n._rows.get(W), n._24I[l._id] && h.add({ - data: l, - index: W - }); - h.isEmpty() || (g.beginPath(), h.each(function (T) { - g.rect(p, T.index * y, D, y) - }), g.clip(), h.each(function (n) { - g.clearRect(p, n.index * y, D, y) - }), h.each(function (Y) { - n._77o(Y.index) - }), n._93db(g), h.each(function (U) { - n.drawData(g, U.data, U.index) - }), n._92db(g), h.clear()) - }, h.preValidateModel = function () { - this.endEditing && this.endEditing() - }, h.validateImpl = function () { - var r = this, - c = r._canvas, - p = r.getWidth(), - B = r.getHeight(), - k = r._rowHeight, - v = r._32I; - (p !== c.clientWidth || B !== c.clientHeight) && (Bn(c, p, B), v = 1); - var I = _ && !Ad; - r._96I && !I && (r.preValidateModel(), r.validateModel()); - var W = r._29I, - $ = { - x: -r.tx(), - y: -r.ty(), - width: p, - height: B - }, - V = r._rows.size(), - C = Wd(c), - E = r._23I; - v || jg($, W) || (v = 1), r._29I = $, r._59I = V * k, r._31I = T($.y / k), r._14I = s(($.y + $.height) / k), r._31I < 0 && (r._31I = 0), r._14I > V && (r._14I = V), r._99I && v && r._99I(), (r._40o() || r._41o()) && (r._59I += r.getScrollBarSize(), r._99I && v && (r._91I += r.getScrollBarSize())), tf(C, r.tx(), r.ty(), 1), v ? r._12I(C) : r._24I && r._13I(C), r._93I(), r._92I(), C.restore(), r._32I = r._24I = r._96I = F, E && (r.scrollToIndex(r.getRowIndex(E)), delete r._23I), r.tx(r.tx()), r.ty(r.ty()) - }, h.canHandleSelectMode = function () { - return !0 - } - }, fb._48o = function (L) { - L._rootVisible = !0, L._rootData = F, L._35o = function () { - this._expandMap = {}, this._levelMap = {} - }, L.validateModel = function () { - var $ = this, - U = $._rootData; - $._rows.clear(), $._levelMap = {}, $._rowMap = {}, $._currentLevel = 0, U ? $._rootVisible ? $.isVisible(U) && $.buildData(U) : $.buildChildren(U) : $.buildChildren(), delete $._currentLevel - }, L.buildData = function (K) { - var J = this, - n = K._id, - b = J._rows; - J._rowMap[n] = b.size(), b.add(K), J._levelMap[n] = J._currentLevel, J.isExpanded(K) && (J._currentLevel++, J.buildChildren(K), J._currentLevel--) - }, L.buildChildren = function (u) { - var O = this, - a = u ? u._children : O._dataModel._roots, - k = O.getCurrentSortFunc(); - k && O.isChildrenSortable(u) ? a.toList(O.isVisible, O).sort(k).each(O.buildData, O) : a.each(function (N) { - O.isVisible(N) && O.buildData(N) - }) - }, L.getLevel = function (i) { - return this._levelMap[i._id] - }, L.getToggleIcon = function (s) { - var G = this, - X = G._loader, - q = G._collapseIcon; - return X && !X.isLoaded(s) ? q : s.hasChildren() ? G.isExpanded(s) ? G._expandIcon : q : F - }, L.isCheckMode = function () { - return this._checkMode != F - }, L.isChildrenSortable = function () { - return !0 - }, L.handleDataModelChange = function (p) { - var h = this; - p.kind === Ce ? delete h._expandMap[p.data._id] : p.kind === Tg && (h._expandMap = {}), h.ivm() - }, L.toggle = function (I) { - var C = this; - C.isExpanded(I) ? C.collapse(I) : C.expand(I) - }, L.isExpanded = function (W) { - return 1 === this._expandMap[W._id] - }, L.expand = function (Q) { - var P = this, - H = P._loader; - P.isExpanded(Q) || (H && !H.isLoaded(Q) && H.load(Q), P._expandMap[Q._id] = 1, P.ivm(), P.onExpanded(Q)) - }, L.onExpanded = function () { }, L.collapse = function (u) { - var f = this; - f.isExpanded(u) && (delete f._expandMap[u._id], f.ivm(), f.onCollapsed(u)) - }, L.onCollapsed = function () { }, L.expandAll = function (V) { - if (V) this.expand(V), V.eachChild(function (y) { - this.expandAll(y) - }, this); - else { - var L = this; - L._dataModel.each(function (T) { - T.hasChildren() && (L._expandMap[T._id] = 1) - }), L.ivm() - } - }, L.collapseAll = function () { - this._expandMap = {}, this.ivm() - }, L.makeVisible = function (U) { - if (U) { - var S = this; - if (!S._rootData || U.isDescendantOf(S._rootData)) { - for (var i = U._parent; i;) S.expand(i), i = i._parent; - S._23I = U, S.iv() - } - } - }, L.checkData = function (I) { - var T, V = this, - q = V._checkMode, - S = V.sm(), - J = S.co(I); - if (!S.sg() || !J) { - if (V._32o = 1, q === lp) J ? S.rs(I) : S.as(I); - else if (q === Wf) T = new xr(I), T.addAll(I._children); - else if ("descendant" === q) T = new xr, Rs(I, T); - else if ("all" === q && (T = new xr, Rs(I, T), !J)) - for (var _ = I._parent; _;) T.add(_), _ = _._parent; - T && (J ? S.rs(T) : S.as(T)), delete V._32o - } - }, L.drawTree = function (F, P, w, g, m, B, C) { - var Z = this, - l = Z._indent, - k = Z._levelMap[P._id], - t = Z.getIconWidth(P), - U = ii(Z.getToggleIcon(P)); - U ? (g += l * k, Ii(F, U, g + l / 2, m + C / 2, P, Z), g += l) : g += l * (k + 1), Z._checkMode && (Ii(F, Z.getCheckIcon(P), g + l / 2, m + C / 2, P, Z), g += l), Z.drawIcon(F, P, g, m, t, C), Z.drawLabel(F, P, g + t, m, C) - } - }, fb._14Q = function (p) { - p.getIcon = function (E) { - return E.getIcon() - }, p.getIconWidth = function (K) { - return this.getIcon(K) ? this._indent : 0 - }, p.drawIcon = function (Z, Y, $, S, L, s) { - if (L) { - var p = this, - j = p.getBodyColor(Y), - b = ii(p.getIcon(Y), j); - b && (s -= p.isRowLineVisible() ? 1 : 0, qk(Z, b, Mg, $, S, L, s, Y, p, j), Ie(Z, p.getBorderColor(Y), $, S, L, s)) - } - }, p.drawLabel = function (U, b, B, H, C) { - var s = this; - nd(U, s.getLabel(b), s.getLabelFont(b), s.getLabelColor(b), B, H, 0, C) - } - }, fb._50o = function (r) { - r._98I = function () { - var Z = this, - b = Z._39o = new jn; - Z._60I = new xr, b.mm(Z._17o, Z), b.md(Z._18o, Z), b.mh(Z._19o, Z) - }, r.setColumns = function (n) { - this._39o.clear(), this.addColumns(n) - }, r.addColumns = function (b) { - var U = this._39o; - b.forEach(function (h) { - if (!(h instanceof Ys)) { - var e = gp(h.className); - h = Wn(e ? e : Ys, h) - } - U.add(h) - }) - }, r.onColumnClicked = function () { }, r.onCheckColumnClicked = function () { }, r._3Q = function (s) { - for (var A, i = 0, L = this._60I, Y = L.size(); Y > i; i++) - if (A = L.get(i), A.column === s) return A; - return F - }, r.getColumnAt = function (H) { - var b = this._4Q(H); - return b ? b.column : F - }, r._4Q = function (T) { - for (var X = this, b = T.target ? X.lp(T).x : T.x, o = X._60I, L = 0; L < o.size(); L++) { - var l = o.get(L), - U = l.startX; - if (b >= U && b < U + l.column.getWidth()) return l - } - return F - }, r.getToolTip = function (T) { - var h = this, - t = h.getDataAt(T), - j = h.getColumnAt(T); - return t && j ? j.getToolTip(t, h) : F - }, r.adjustTranslateX = function (Z) { - var h = this.getWidth() - this._91I; - return h > Z && (Z = h), Z > 0 ? 0 : A(Z) - }, r._99I = function () { - var p = this, - Q = p._29I, - e = p._60I; - e.clear(), p._91I = 0, p._39o._roots.each(function (f) { - if (f.isVisible()) { - var L = p._91I + f.getWidth(); - p._91I <= Q.x + Q.width && L >= Q.x && e.add({ - column: f, - startX: p._91I - }), p._91I = L - } - }) - }, r.drawData = function (i, A, $) { - var W = this, - V = W._rowHeight, - e = V * $, - c = W.isSelected(A), - l = W._29I, - y = l.x, - b = l.width; - W.drawRowBackground(i, A, c, y, e, b, V), W._60I.each(function (S) { - var F = S.column, - g = S.startX, - E = F.getWidth(); - E > 0 && !W.isEditing(A, F) && (i.save(), i.beginPath(), i.rect(g, e, E, V), i.clip(), W._87o(W.drawCell(i, A, c, F, g, e, E, V), $, g, e, E, V), W._columnLineVisible && fl(i, g + E - 1, e, 1, V, W._columnLineColor), i.restore()) - }), W._rowLineVisible && fl(i, y, e + V - 1, b, 1, W._rowLineColor) - }, r.drawCell = function (H, O, X, $, b, c, D, a) { - var P = this; - if ($.drawCell) return $.drawCell(H, O, X, $, b, c, D, a, P); - var U = P.getValue(O, $); - Ss(H, U, $, P.getLabelFont(O, $, U), P.getLabelColor(O, $, U), b, c, D, a, O, P) - }, r.getColumnModel = function () { - return this._39o - }, r._17o = function () { - this.redraw() - }, r._18o = function (R) { - var v = this; - R.data === v._sortColumn && Ns[R.property] ? v.ivm() : (v._42o(), v.redraw()) - }, r._19o = function () { - this.redraw() - }, r.getCurrentSortFunc = function () { - var a = this, - I = a._sortColumn; - if (I && I.isSortable()) { - var w = I.getSortFunc(), - u = Sh === I.getSortOrder() ? 1 : -1; - return w || (w = Sd), - function (Q, v) { - return w.call(a, a.getValue(Q, I), a.getValue(v, I), Q, v) * u - } - } - return a._sortFunc - }, r.isCellEditable = function (H, b, m) { - return b.isEditable() && this.isEditable() ? b.isCellEditable ? b.isCellEditable(H, b, m, this) : !0 : !1 - }, r._37O = function (x, a) { - if (jj(a)) - for (var H = this, S = H.lp(a), z = H._60I, J = H._rowHeight, R = H._29I, E = R.x, d = R.y, f = R.width, o = R.height, k = 0; k < z.size(); k++) { - var Q = z.get(k), - B = Q.startX, - y = Q.column, - q = y.getWidth(); - if (y !== H._31o && y !== H._4o && S.x >= B && S.x < B + q && H.isCellEditable(x, y, a)) { - var O = { - x: B, - y: H.getRowIndex(x) * J, - width: q, - height: J - }, - Y = { - x: O.x + H.tx(), - y: O.y + H.ty(), - width: O.width, - height: O.height - }, - c = 0, - l = 0; - return O.x < E ? c = O.x - E : O.x + O.width > E + f && (c = O.x + O.width - E - f), c && (H.tx(H.tx() - c), Y.x -= c), O.y < d ? l = O.y - d : O.y + J > d + o && (l = O.y + J - d - o), l && (H.ty(H.ty() - l), Y.y -= l), H.beginEditing({ - data: x, - column: y, - value: H.getValue(x, y), - event: a, - rect: O, - editorRect: Y, - view: H - }), void 0 - } - } - } - }, Vs.BaseItemEditor = function (x, S, v, m) { - this._data = x, this._column = S, this._master = v, this._editInfo = m - }, Ws("BaseItemEditor", o, { - ms_ac: ["data", "column", "master", "editInfo"], - editBeginning: function () { }, getView: function () { }, getValue: function () { }, setValue: function () { } - }); - var Xs = O.Tab = function () { - fi(Xs, this) - }; - ki("Tab", Qp, { - ms_ac: ["view", "closable", "disabled", "visible"], - _icon: F, - _closable: !1, - _disabled: !1, - _visible: !0, - setParent: jm - }); - var Ys = O.Column = function () { - fi(Ys, this) - }; - ki("Column", Qp, { - _46o: 1, - ms_ac: ["accessType", "valueType", Pd, Me, Zh, ul, "align", dg, "sortOrder", go, "sortable", "clickable", "nullable", "emptiable", "slider", "colorPicker", "itemEditor"], - _visible: !0, - _width: 80, - _sortOrder: Sh, - _sortFunc: F, - _sortable: !0, - _clickable: !0, - setWidth: function (p) { - 16 > p && (p = 16); - var D = this._width; - this._width = p, this.fp(ul, D, p) - }, getToolTip: function (L, R) { - return this.formatValue(R.getValue(L, this)) - } - }); - var Zs = O.Property = function () { - fi(Zs, this) - }; - ki("Property", Qp, { - _46o: 1, - ms_ac: ["accessType", "valueType", Me, Zh, "categoryName", dg, "align", "nullable", "emptiable", "slider", "itemEditor", "colorPicker"], - _categoryName: F, - getToolTip: function (F, t, R) { - var $ = this; - return t ? $.formatValue(R.getValue(F, $)) : R.getPropertyName($) - } - }), Vs.AccordionView = function () { - var X = this; - X._20o = {}, X._21o = new xr, X._10o = F, X._9o = F, X._11o = F, X._view = ve(0, X), X.iv() - }, Ws("AccordionView", o, { - ms_v: 1, - ms_fire: 1, - ms_ac: [Zi, xj, "titleHeight", fe, Vm, "titleBackground", "selectWidth", op, "orientation", "separatorColor"], - _expandIcon: u.accordionViewExpandIcon, - _collapseIcon: u.accordionViewCollapseIcon, - _titleHeight: Jk, - _labelColor: u.accordionViewLabelColor, - _labelFont: u.accordionViewLabelFont, - _titleBackground: u.accordionViewTitleBackground, - _selectBackground: u.accordionViewSelectBackground, - _selectWidth: u.accordionViewSelectWidth, - _orientation: "v", - _separatorColor: u.accordionViewSeparatorColor, - onPropertyChanged: function () { - this.iv() - }, getView: function () { - return this._view - }, getTitles: function () { - return this._21o - }, getCurrentTitle: function () { - return this._10o - }, add: function (x, p, P, g) { - var q = this, - C = dd(), - b = { - content: p, - div: C, - canvas: uo(C), - icon: g - }; - if (q._20o[x]) throw x + " already exists"; - var J = b.downEventFunc = function (Y) { - Qc(Y) - }, - d = b.upEventFunc = function (F) { - Qc(F), jj(F) && (q._10o === x ? q.collapse() : q.expand(x)) - }; - [Xd, fp].forEach(function (m) { - K(C, m, J) - }), [Sj, cj].forEach(function (L) { - K(C, L, d) - }), C.style.cursor = Zk, sn(q._view, C), q._20o[x] = b, q._21o.add(x), P && q.expand(x), q.iv() - }, remove: function (y) { - var i = this, - K = i._20o[y]; - if (K) { - var n = K.div; - yj(n), [Xd, fp].forEach(function (Y) { - b(n, Y, K.downEventFunc) - }), [Sj, cj].forEach(function (p) { - b(n, p, K.upEventFunc) - }), delete i._20o[y], i._21o.remove(y), i.iv() - } - }, clear: function () { - var D = this; - D._21o.toArray().forEach(D.remove, D), D._20o = {}, D._21o.clear(), D.iv() - }, isExpanded: function (N) { - return this._10o === N - }, expand: function (s) { - var R = this; - R._20o[s] && R._10o !== s && (R._10o = s, R.onExpanded(s), R.iv()) - }, onExpanded: function () { }, collapse: function () { - var w = this; - w._10o && (w.onCollapsed(w._10o), delete w._10o, w.iv()) - }, onCollapsed: function () { }, initCanvas: function (X, f, C) { - Bn(X, f, C); - var i = Wd(X); - return tf(i, 0, 0, 1), i.clearRect(0, 0, f, C), i - }, drawTitle: function (V, C, A, f, r) { - var o = this, - i = ii(r.icon), - R = o.isExpanded(C), - w = o._titleHeight, - S = o._titleBackground, - O = o._selectWidth, - u = o._separatorColor, - $ = ii(R ? o._expandIcon : o._collapseIcon), - T = O + 4; - fl(V, 0, 0, A, f, S), R && O && fl(V, 0, 0, O, f, o._selectBackground), (R || o._21o.get(o._21o.size() - 1) !== C) && fl(V, 0, f - 1, A, 1, u ? u : Ee(S)), i && (Ii(V, i, T + xc(i) / 2, w / 2), T += xc(i) + 2), nd(V, C, o.getLabelFont(C), o.getLabelColor(C), T, 0, 0, w), $ && Ii(V, $, A - xc($) / 2 - 4, w / 2) - }, validateImpl: function () { - var Y = this, - m = Y._view, - k = 0, - P = 0, - i = Y.getWidth(), - b = Y.getHeight(), - G = Y._titleHeight, - l = Y._21o.size() * G, - W = Y._11o, - w = Y._9o; - delete Y._11o, delete Y._9o, Y._21o.each(function (t) { - var z, r, e = Y._20o[t], - h = e.content, - T = Y._10o === t; - Oj(Y) ? (qp(e.div, k, 0, G, b), z = Y.initCanvas(e.canvas, G, b), wh(z, 0, b), jc(z, -N), Y.drawTitle(z, t, b, G, e), z.restore(), T ? (r = q(0, i - l), h && (Y._11o = h, Y._9o = Bq(h), qp(h, k + G, 0, r, b)), k += G + r) : k += G) : (qp(e.div, 0, P, i, G), z = Y.initCanvas(e.canvas, i, G), Y.drawTitle(z, t, i, G, e), z.restore(), T ? (r = q(0, b - l), h && (Y._11o = h, Y._9o = Bq(h), qp(h, 0, P + G, i, r)), P += G + r) : P += G) - }); - var C = Y._9o; - W && W !== Y._11o && W.endEditing && W.endEditing(), C && C !== w && sn(m, C), w && w !== C && yj(w) - } - }), Vs.SplitView = function ($, p, E, Q) { - var w = this, - o = w._dividerDiv = dd(), - v = w._60O = uo(), - h = w._61O = uo(), - W = v.style, - s = h.style; - w._view = ve(1, w), sn(w._view, o), W.msTouchAction = iq, W.pointerEvents = iq, W.cursor = Zk, s.msTouchAction = iq, s.pointerEvents = iq, s.cursor = Zk, $ && w.setLeftView($), p && w.setRightView(p), E && w.setOrientation(E), Q != F && w.setPosition(Q), w.setStatus(Fk), new $s(w) - }, Ws("SplitView", o, { - ms_v: 1, - ms_fire: 1, - ms_ac: ["continuousLayout", "dividerSize", "dividerBackground", "toggleIcon", "togglable", "dragOpacity", "orientation", "draggable", "status"], - _continuousLayout: !1, - _position: .5, - _togglable: !0, - _orientation: "h", - _draggable: !0, - _dividerSize: u.splitViewDividerSize, - _dividerBackground: u.splitViewDividerBackground, - _dragOpacity: u.splitViewDragOpacity, - _toggleIcon: u.splitViewToggleIcon, - onPropertyChanged: function () { - this.iv() - }, getDividerDiv: function () { - return this._dividerDiv - }, getPosition: function () { - return this._position - }, setPosition: function (n, t) { - var M = this, - g = M._position; - isNaN(n) || (t || (M._82O = 0 > n ? -1 : n > 1 ? 1 : 0), M._position = n, M.fp(pr, g, n)) - }, getLeftView: function () { - return this._leftView - }, setLeftView: function (r) { - var U = this, - q = U._leftView, - o = U._view; - if (U._leftView !== r) { - if (q && q !== U._rightView) { - var l = Bq(q); - l.parentNode === o && yj(l) - } - if (U._leftView = r, r) { - var V = Bq(r); - V.parentNode !== o && o.insertBefore(V, U._dividerDiv) - } - U.fp("leftView", q, r) - } - }, getRightView: function () { - return this._rightView - }, setRightView: function (C) { - var s = this, - g = s._rightView, - y = s._view; - if (s._rightView !== C) { - if (g && g !== s._leftView) { - var $ = Bq(g); - $.parentNode === y && yj($) - } - if (s._rightView = C, C) { - var A = Bq(C); - A.parentNode !== y && y.insertBefore(A, s._dividerDiv) - } - s.fp("rightView", g, C) - } - }, validateImpl: function () { - var Y = this, - R = Y._draggable, - S = Y._position, - F = Y.getWidth(), - G = Y.getHeight(), - b = Y._dividerSize, - D = Y._dividerBackground, - f = nf ? 18 : 8, - t = Y._dividerDiv, - e = Y._82O, - u = Y._60O, - g = Y._61O, - j = Y._toggleIcon, - p = Y._status, - I = t.style, - o = null, - M = nf ? 20 : 4, - Q = j.comps[0]; - b >= f || 0 === b ? Y._coverDiv && (yj(Y._coverDiv), delete Y._coverDiv) : Y._coverDiv || (Y._coverDiv = dd(), Uq && (Y._coverDiv.style.background = nb), sn(t, Y._coverDiv)), Y._togglable ? u.parentNode || (sn(t, u), sn(t, g)) : (yj(u), yj(g)); - var L = Y._coverDiv, - k = Y._leftView, - v = Y._rightView; - if (Oj(Y)) { - if (b > F && (b = F), p === Fk) - if (1 === e) var X = V(S, F), - w = q(0, F - b - X); - else -1 === e ? (w = V(-S, F), X = q(0, F - b - w)) : (X = A((F - b) * S), w = q(0, F - b - X)); - else "cl" === p ? (X = 0, w = q(0, F - b)) : "cr" === p && (w = 0, X = q(0, F - b)); - k && qp(k, 0, 0, X, G), v && qp(v, X + b, 0, w, G), qp(t, X, 0, b, G), Y._22o = X, L && (qp(L, b / 2 - f / 2, 0, f, G), L.style.cursor = R ? Nc : ""), t.style.cursor = R ? Nc : ""; - var n = t.clientHeight / 2, - i = t.clientWidth; - Bn(u, i, i), qp(u, 0, n - i - M, i, i), o = Wd(u), tf(o, 0, 0, 1), Q.rotation = -N, Yd(o, j, 0, 0, i, i), o.restore(), Bn(g, i, i), qp(g, 0, n + M, i, i), o = Wd(g), tf(o, 0, 0, 1), Q.rotation = N, Yd(o, j, 0, 0, i, i), o.restore() - } else { - if (b > G && (b = G), p === Fk) - if (1 === e) var $ = V(S, G), - P = q(0, G - b - $); - else -1 === e ? (P = V(-S, G), $ = q(0, G - b - P)) : ($ = A((G - b) * S), P = q(0, G - b - $)); - else "cl" === p ? ($ = 0, P = q(0, G - b)) : "cr" === p && (P = 0, $ = q(0, G - b)); - k && qp(k, 0, 0, F, $), v && qp(v, 0, $ + b, F, P), qp(t, 0, $, F, b), Y._22o = $, L && (qp(L, 0, b / 2 - f / 2, F, f), L.style.cursor = R ? zi : ""), I.cursor = R ? zi : ""; - var Z = t.clientWidth / 2, - i = t.clientHeight; - Bn(u, i, i), qp(u, Z - i - M, 0, i, i), o = Wd(u), tf(o, 0, 0, 1), Q.rotation = 0, Yd(o, j, 0, 0, i, i), o.restore(), Bn(g, i, i), qp(g, Z + M, 0, i, i), o = Wd(g), tf(o, 0, 0, 1), Q.rotation = W, Yd(o, j, 0, 0, i, i), o.restore() - } - I.background = D - } - }); - var $s = function (d) { - this.sv = d, this.addListeners() - }; - yc($s, o, { - ms_listener: 1, - getView: function () { - return this.sv.getView() - }, handle_touchstart: function (P) { - var H = this, - k = H.sv, - a = k._dividerDiv, - l = k._60O, - C = k._61O, - b = k._status, - z = P.target; - if (z === l) b === Fk ? k.setStatus("cl") : "cr" === b && k.setStatus(Fk); - else if (z === C) b === Fk ? k.setStatus("cr") : "cl" === b && k.setStatus(Fk); - else if (Bf(P) && (z === a || z === k._coverDiv) && (Qc(P), k.isDraggable())) { - k.getLeftView(), k.getRightView(); - var R = H.maskDiv = dd(); - if (R.style.left = 0, R.style.top = 0, R.style.width = k.getWidth() + "px", R.style.height = k.getHeight() + "px", k.getView().appendChild(R), !k.isContinuousLayout()) { - var Z = H.resizeDiv = dd(); - Z.style.left = a.style.left, Z.style.top = a.style.top, Z.style.width = a.style.width, Z.style.height = a.style.height, Z.style.opacity = k.getDragOpacity(), Z.style.background = k.getDividerBackground(), sn(H.getView(), Z) - } - H._lastAbsPosition = k._22o, H._86o = Oj(k) ? lb(P).x : lb(P).y, Ui(H, P) - } - }, handleWindowTouchMove: function (y) { - Bf(y) && this.update(y, this.sv.isContinuousLayout()) - }, handleWindowTouchEnd: function (d) { - var O = this; - O.update(d, !0), O.sv.setStatus(Fk), O.maskDiv && yj(O.maskDiv), O.resizeDiv && yj(O.resizeDiv), O.maskDiv = O.resizeDiv = F - }, handle_mousedown: function (x) { - jj(x) && this.handle_touchstart(x) - }, handleWindowMouseMove: function (o) { - this.handleWindowTouchMove(o) - }, handleWindowMouseUp: function (C) { - this.handleWindowTouchEnd(C) - }, update: function (k, x) { - var t = this, - q = t.sv, - h = Oj(q) ? q.getWidth() : q.getHeight(), - g = q._dividerSize, - W = t._lastAbsPosition - t._86o; - Oj(q) ? (W += lb(k).x, W > h - g && (W = h - g), 0 > W && (W = 0), t.resizeDiv && (t.resizeDiv.style.left = W + oe)) : (W += lb(k).y, W > h - g && (W = h - g), 0 > W && (W = 0), t.resizeDiv && (t.resizeDiv.style.top = W + oe)), x && h !== g && (1 === q._82O ? q.setPosition(W, 1) : -1 === q._82O ? q.setPosition(W - h + g, 1) : q.setPosition(W / (h - g), 1)) - } - }), Vs.TabView = function () { - var t = this, - P = t._view = ve(1, t), - M = t._91O = dd(1), - D = t._tabModel = new jn, - A = D.sm(), - u = t.invalidate; - t._7o = new xr, t._canvas = uo(M), sn(P, M), sn(P, t._92O = dd(1)), A.setSelectionMode(vq), A.ms(t.handleSelectionChange, t), D.mm(u, t), D.mh(u, t), D.md(u, t), t._interactor = new _s(t), t.iv() - }, Ws("TabView", o, { - ms_v: 1, - ms_fire: 1, - ms_tx: 1, - ms_ty: 1, - ms_lp: 1, - ms_ac: ["movable", "tabGap", "tabHeight", "tabPosition", fe, Vm, "tabHPadding", "tabBackground", "selectWidth", op, "moveBackground", "insertColor"], - _tabHPadding: 0, - _tabPosition: $c, - _tabHeight: Jk, - _tabGap: u.tabViewTabGap, - _labelColor: u.tabViewLabelColor, - _labelFont: u.tabViewLabelFont, - _tabBackground: u.tabViewTabBackground, - _selectWidth: u.tabViewSelectWidth, - _selectBackground: u.tabViewSelectBackground, - _moveBackground: u.tabViewMoveBackground, - _insertColor: u.tabViewInsertColor, - _movable: !0, - handleSelectionChange: function () { - this._selectionChanged = !0, this.invalidate() - }, getContentDiv: function () { - return this._92O - }, getTitleDiv: function () { - return this._91O - }, getTabModel: function () { - return this._tabModel - }, add: function (Q, V, x) { - var b, c = this._tabModel; - return Q instanceof Xs ? (b = Q, V && b.setView(V)) : (b = new Xs, b.setName(Q), b.setView(V)), c.add(b), x && c.sm().ss(b), b - }, getLabel: function (v) { - return v.toLabel() - }, onPropertyChanged: function () { - this.iv() - }, _7Q: function (s) { - this._23o = s, this.iv() - }, get: function (g) { - var a = this, - p = a._tabModel; - if (Bp(g)) return p._roots.get(g); - if (dk(g)) { - var G; - return p.each(function (i) { - g === a.getLabel(i) && (G = i) - }), G - } - return g instanceof Xs ? g : F - }, select: function (I) { - this._tabModel.sm().ss(this.get(I)) - }, remove: function (G) { - var v = this; - if (G = v.get(G)) { - var w = v._tabModel, - s = w._roots.indexOf(G); - v._tabModel.remove(G), v.selectByIndex(--s) - } - }, getCurrentTab: function () { - return this._8o - }, hideTabView: function (B, t) { - t.parentNode === this._92O && (Db(t) ? (t.style.display = Jc, t._tab_ = B) : yj(t), Um()) - }, showTabView: function (t, x) { - Db(x) && (x.style.display = "block", x._tab_ = t), x.parentNode !== this._92O && (sn(this._92O, x), Um()) - }, _24o: function () { - var p, b = this, - E = b._8o, - P = b._9o, - L = b._tabModel.sm().ld(); - L && (p = Bq(L.getView())), p !== P && (P && (E.getView() && E.getView().endEditing && E.getView().endEditing(), b.hideTabView(E, P)), p && b.showTabView(L, p)), b._8o = L, b._9o = p, E !== L && b.onTabChanged(E, L) - }, onTabClosing: function () { - return !0 - }, onTabChanged: function () { }, onTabClosed: function (F, M) { - this.selectByIndex(--M) - }, selectByIndex: function (M) { - var x = this, - C = x._tabModel, - z = C.size(); - if (z && !C.sm().ld()) { - M == F && (M = 0), M >= z && (M = z - 1), 0 > M && (M = 0); - for (var $ = M; $ >= 0; $--) { - var U = x.get($); - if (!U.isDisabled()) return x.select(U), U - } - for ($ = M + 1; z > $; $++) - if (U = x.get($), !U.isDisabled()) return x.select(U), U - } - }, getTabWidth: function (u) { - var E = this.getTabHPadding(), - x = 4 + 2 * E, - C = ii(u.getIcon()); - C && (x += xc(C, u) + 4); - var P = this.getLabel(u); - return P && (x += ln(this.getLabelFont(u), P).width + 4), u.isClosable() && (x += 10), x - }, drawTab: function (f, c, V, $, e, q, H) { - var x, S = this, - b = S._tabPosition, - Q = this.getTabHPadding(), - v = V + 4 + Q, - C = S._selectWidth, - m = ii(c.getIcon()), - z = c.isDisabled(), - i = S.getLabelColor(c), - d = S.getLabelFont(c), - k = S.getLabel(c), - J = S._selectBackground, - t = b === nq + "-vertical", - T = b === fm + "-vertical"; - (t || T) && (v = $ + 4 + Q), z && (f.globalAlpha = Nn), fl(f, V, $, e, q, H), c === S._8o && C && (b === $c ? fl(f, V, $ + q - C, e, C, J) : b === nq ? fl(f, V + e - C, $, C, q, J) : b === fm ? fl(f, V, $, C, q, J) : t ? fl(f, V + e - C, $, C, q, J) : T ? fl(f, V, $, C, q, J) : fl(f, V, $, e, C, J)); - var D = e / 2; - if (t && (wh(f, D, $ + q / 2), jc(f, W), wh(f, -D, -$ - q / 2)), m) { - var j = oo(m, c), - G = xc(m, c); - if (t || T) { - var R = V + e / 2, - M = v + j / 2; - wh(f, R, M), jc(f, N), wh(f, -R, -M), Ii(f, m, V + e / 2, v + j / 2, c, S), wh(f, R, M), jc(f, -N), wh(f, -R, -M), v += j + 4 - } else Ii(f, m, v + G / 2, $ + q / 2, c, S), v += G + 4 - } - return t || T ? (wh(f, e / 2, v + e / 2), jc(f, N), wh(f, -e / 2, -v - e / 2), nd(f, k, d, i, V, v, q, e), wh(f, e / 2, v + e / 2), jc(f, -N), wh(f, -e / 2, -v - e / 2)) : nd(f, k, d, i, v, $, e, q), t && (wh(f, D, $ + q / 2), jc(f, -W), wh(f, -D, -$ - q / 2)), c.isClosable() && (x = T ? { - x: V + e - 12, - y: $ + q - 12, - width: 12, - height: 12 - } : { - x: V + e - 12, - y: $ + 2, - width: 12, - height: 12 - }, this.drawCloseIcon(c, f, i, x)), z && (f.globalAlpha = 1), x - }, drawCloseIcon: function (Z, $, v, P) { - var D = P.x, - J = P.y; - $.strokeStyle = v, $.lineWidth = 1, $.beginPath(), $.moveTo(D + 2, J + 8), $.lineTo(D + 8, J + 2), $.moveTo(D + 8, J + 8), $.lineTo(D + 2, J + 2), $.stroke() - }, getTabAt: function (c) { - var d = this._interactor._8Q(c); - return d ? d.tab : null - }, validateImpl: function () { - var T = this; - T._24o(); - var N, n = T._canvas, - W = T._tabPosition, - i = T._91O, - X = T._92O, - p = T._tabModel, - F = T.getWidth(), - c = T.getHeight(), - b = T._tabHeight, - d = T._7o, - v = T._tabGap, - B = W === $c, - C = W === nq, - L = W === fm, - k = W === nq + "-vertical", - r = W === fm + "-vertical", - g = T._23o, - e = 0; - if ((C || L) && p._roots.each(function (n) { - e = q(T.getTabWidth(n), e) - }), B ? (qp(i, 0, 0, F, b), N = { - x: 0, - y: b, - width: F, - height: q(0, c - b) - }) : C ? (qp(i, 0, 0, e, c), N = { - x: e, - y: 0, - width: q(0, F - e), - height: c - }) : L ? (qp(i, F - e, 0, e, c), N = { - x: 0, - y: 0, - width: q(0, F - e), - height: c - }) : k ? (qp(i, 0, 0, b, c), N = { - x: b, - y: 0, - width: q(0, F - b), - height: c - }) : r ? (qp(i, F - b, 0, b, c), N = { - x: 0, - y: 0, - width: q(0, F - b), - height: c - }) : (qp(i, 0, c - b, F, b), N = { - x: 0, - y: 0, - width: F, - height: q(0, c - b) - }), qp(X, N), k || r) { - T._9o && (N.x = 0, qp(T._8o.getView(), N)), Bn(n, b, c); - var Z = Wd(n), - y = 0; - if (tf(Z, 0, T.ty(), 1), Z.clearRect(0, 0, b, c), d.clear(), p._roots.each(function (h) { - if (h.isVisible()) { - var P, K = T.getTabWidth(h); - g && g.tab === h || (P = T.drawTab(Z, h, 0, y, b, K, T._tabBackground)), d.add({ - _75o: P, - tab: h, - startY: y, - endY: y + K, - height: K - }), y += K + v - } - }), T._23Q = q(0, y - v), g) { - var P = g.position; - T.drawTab(Z, g.tab, 0, g.startY, b, g.height, T._moveBackground), fl(Z, 0, P, b, 1, T._insertColor) - } - if (Z.restore(), T._selectionChanged) { - T._selectionChanged = !1; - for (var H = T.ty(), U = 0; U < d.size(); U++) { - var K = d.get(U); - if (K.tab === T._8o) { - if (K.endY + H < 0) { - T.ty(-K.startY); - break - } - if (K.startY + H > c) { - T.ty(c - K.endY); - break - } - } - } - } - T.ty(T.ty()) - } else if (C || L) { - T._9o && (N.x = 0, qp(T._8o.getView(), N)), Bn(n, e, c); - var Z = Wd(n), - y = 0; - if (tf(Z, 0, T.ty(), 1), Z.clearRect(0, 0, e, c), d.clear(), p._roots.each(function (q) { - if (q.isVisible()) { - var B; - g && g.tab === q || (B = T.drawTab(Z, q, 0, y, e, b, T._tabBackground)), d.add({ - _75o: B, - tab: q, - startY: y, - endY: y + b, - height: b - }), y += b + v - } - }), T._23Q = q(0, y - v), g) { - var P = g.position; - T.drawTab(Z, g.tab, 0, g.startY, e, g.height, T._moveBackground), fl(Z, 0, P, e, 1, T._insertColor) - } - if (Z.restore(), T._selectionChanged) { - T._selectionChanged = !1; - for (var H = T.ty(), U = 0; U < d.size(); U++) { - var K = d.get(U); - if (K.tab === T._8o) { - if (K.endY + H < 0) { - T.ty(-K.startY); - break - } - if (K.startY + H > c) { - T.ty(c - K.endY); - break - } - } - } - } - T.ty(T.ty()) - } else { - T._9o && (N.y = 0, qp(T._8o.getView(), N)), Bn(n, F, b); - var Z = Wd(n), - M = 0; - if (tf(Z, T.tx(), 0, 1), Z.clearRect(0, 0, F, b), d.clear(), p._roots.each(function (J) { - if (J.isVisible()) { - var k, B = T.getTabWidth(J); - g && g.tab === J || (k = T.drawTab(Z, J, M, 0, B, b, T._tabBackground)), d.add({ - _75o: k, - tab: J, - startX: M, - endX: M + B, - width: B - }), M += B + v - } - }), T._64I = q(0, M - v), g) { - var P = g.position; - T.drawTab(Z, g.tab, g.startX, 0, g.width, b, T._moveBackground), cs(Z, T._insertColor, P, 0, b) - } - if (Z.restore(), T._selectionChanged) { - T._selectionChanged = !1; - for (var z = T.tx(), U = 0; U < d.size(); U++) { - var K = d.get(U); - if (K.tab === T._8o) { - if (K.endX + z < 0) { - T.tx(-K.startX); - break - } - if (K.startX + z > F) { - T.tx(F - K.endX); - break - } - } - } - } - T.tx(T.tx()) - } - for (var l = [], w = X.children, U = 0; U < w.length; U++) { - var f = w[U], - j = f._tab_; - j && !p.contains(j) && l.push(f) - } - l.forEach(function (o) { - X.removeChild(o) - }) - } - }); - var _s = function (C) { - this.tv = C, this.addListeners() - }; - yc(_s, o, { - ms_listener: 1, - getView: function () { - return this.tv._91O - }, handle_mousewheel: function (W) { - this.handleScroll(W, 10 * (W.wheelDelta / 40)) - }, handle_DOMMouseScroll: function (x) { - this.handleScroll(x, 10 * -x.detail) - }, handleScroll: function (w, j) { - Qc(w); - var O = this.tv, - T = O._tabPosition; - !O._40o() || T !== $c && T !== Kd || O.tx(this.tv.tx() + j), !O._41o() || T !== nq && T !== fm && T !== nq + "-vertical" && T !== fm + "-vertical" || O.ty(this.tv.ty() + j) - }, _8Q: function (g) { - var P, Z, Q = this.tv, - N = Q._tabPosition, - q = Q._7o; - if (N === $c || N === Kd) { - var s = Q.lp(g).x; - for (P = 0; P < q.size(); P++) - if (Z = q.get(P), Z.startX <= s && s <= Z.endX) return Z - } else if (N === nq || N === fm || N === nq + "-vertical" || N === fm + "-vertical") { - var c = Q.lp(g).y; - for (P = 0; P < q.size(); P++) - if (Z = q.get(P), Z.startY <= c && c <= Z.endY) return Z - } - return F - }, isClickable: function (K) { - var j = this.tv, - p = j._tabPosition, - s = this._73o = this._8Q(K); - return !j._40o() || p !== $c && p !== Kd ? !j._41o() || p !== nq && p !== fm && p !== nq + "-vertical" && p !== fm + "-vertical" ? s && (!s.tab.isDisabled() || j.isMovable()) : !0 : !0 - }, handle_mousemove: function (S) { - var E = this; - si ? E._74o = E._8Q(S) : E.getView().style.cursor = E.isClickable(S) ? Zk : "" - }, handle_mousedown: function (E) { - this.handle_mousemove(E), this.handle_touchstart(E) - }, handle_touchstart: function ($) { - var d = this, - H = d.tv, - S = H._tabPosition; - Qc($), jj($) && d.isClickable($) && (S === $c || S === Kd ? (d.x = lb($).x, d.lp = H.lp($), d.tx = H.tx()) : (d.y = lb($).y, d.lp = H.lp($), d.ty = H.ty()), Ui(d, $)) - }, handleWindowMouseMove: function (P) { - this.handleWindowTouchMove(P) - }, handleWindowTouchMove: function ($) { - var Q, R = this, - O = R.tv, - e = O._tabPosition, - G = R._73o; - if (e === $c || e === Kd) { - if (Q = lb($).x - R.x, !R._25o && !R.moving && X(Q) > 2 && (O._40o() && !ik($) ? R._25o = 1 : G && O.isMovable() && (R.moving = 1)), R._25o) O.tx(R.tx + Q); - else if (R.moving) { - var C = R.lp.x + Q, - u = O._tabGap / 2; - O._7o.each(function (g) { - var i = g.endX, - y = C - g.startX < i - C; - C >= g.startX && i >= C && O._7Q({ - tab: G.tab, - startX: G.startX + Q, - width: G.width, - front: y, - insertTab: g.tab, - position: y ? q(0, g.startX - u) : V(O._64I, i + u) - }) - }) - } - } else if (Q = lb($).y - R.y, !R._25o && !R.moving && X(Q) > 2 && (O._41o() && !ik($) ? R._25o = 1 : G && O.isMovable() && (R.moving = 1)), R._25o) O.ty(R.ty + Q); - else if (R.moving) { - var K = R.lp.y + Q, - u = O._tabGap / 2; - O._7o.each(function (l) { - var j = l.endY, - c = K - l.startY < j - K; - K >= l.startY && j >= K && O._7Q({ - tab: G.tab, - startY: G.startY + Q, - height: G.height, - front: c, - insertTab: l.tab, - position: c ? q(0, l.startY - u) : V(O._23Q, j + u) - }) - }) - } - }, handleWindowMouseUp: function (q) { - this.handleWindowTouchEnd(q) - }, handleWindowTouchEnd: function () { - var n = this, - E = n.tv, - B = E._tabPosition, - T = E.getTabModel(), - b = T._roots, - j = n._73o; - if (n.moving) { - var z = E._23o; - if (z && z.insertTab !== z.tab) { - var p = z.tab, - X = b.remove(p), - x = b.indexOf(z.insertTab); - x >= 0 && (z.front || x++, x <= b.size() && (b.add(p, x), T._38I(p, X, x))) - } - E._7Q(F), delete n.moving - } else if (!n._25o && j) { - p = j.tab; - var o = n._74o; - if (!o || o.tab === p) - if (!p.isDisabled() && cf(j._75o, n.lp)) { - var $ = function () { - var N = b.indexOf(p); - T.remove(p), E.onTabClosed(p, N) - }; - E.onTabClosing(p, $) && $() - } else p.isDisabled() || E._8o === p || T.sm().ss(p) - } - n._25o = n._73o = n._74o = B === $c || B === Kd ? n.x = n.lp = n.tx = F : n.y = n.lp = n.ty = F - } - }), Vs.PropertyView = function (n) { - var g = this; - g._view = ve(1, g), g._canvas = uo(g._view), sn(g._view, g._79O = dd()), g._rows = new xr, g._28o = new xr, g._26o = {}, g._26Q = {}; - var R = g._propertyModel = new jn, - b = g.ivm; - R.mm(b, g), R.md(b, g), R.mh(b, g), g.dm(n ? n : new jn), new at(g) - }, Ws("PropertyView", o, { - ms_ac: [fe, Uo, Vm, Me, Zh, "categorizable", Vb, go, dj, Zi, xj, df, gd, Ji, "selectRowIndex", op, "background", Jj, Yc, Ln, jh, Gr], - ms_v: 1, - ms_dm: 1, - ms_fire: 1, - ms_sm: 1, - _49o: 1, - ms_txy: 1, - ms_lp: 1, - ms_vs: 1, - _45o: 1, - _47o: 1, - ms_tip: 1, - _29I: nl, - _59I: 0, - _9I: 0, - _selectRowIndex: -1, - _editable: !0, - _batchEditable: !0, - _categorizable: !0, - _indent: kc, - _background: u.propertyViewBackground, - _expandIcon: u.propertyViewExpandIcon, - _collapseIcon: u.propertyViewCollapseIcon, - _scrollBarColor: Ch, - _scrollBarSize: di, - _autoHideScrollBar: jr, - _selectBackground: u.propertyViewSelectBackground, - _rowHeight: Oi, - _rowLineVisible: u.propertyViewRowLineVisible, - _rowLineColor: u.propertyViewRowLineColor, - _10I: .5, - _columnLineVisible: u.propertyViewColumnLineVisible, - _columnLineColor: u.propertyViewColumnLineColor, - _labelColor: u.propertyViewLabelColor, - _labelSelectColor: u.propertyViewLabelSelectColor, - _labelFont: u.propertyViewLabelFont, - getRows: function () { - return this._rows - }, getColumnPosition: function () { - return this._10I - }, setColumnPosition: function (H) { - 0 > H && (H = 0), H > 1 && (H = 1); - var v = this, - t = v._10I; - v._10I = H, v.fp("columnPosition", t, H) - }, getPropertyName: function (K) { - return K.toLabel() - }, getLabelFont: function () { - return this._labelFont - }, getLabelColor: function (y, x, D) { - return D === this._selectRowIndex ? this._labelSelectColor : this._labelColor - }, getPropertyFont: function () { - return this._labelFont - }, getPropertyColor: function (h, U) { - return U === this._selectRowIndex ? this._labelSelectColor : h.getColor() || this._labelColor - }, getCategoryFont: function () { - return this._labelFont - }, getCategoryColor: function () { - return this._labelColor - }, adjustTranslateX: function () { - return 0 - }, adjustTranslateY: function (s) { - var U = this.getHeight() - this._59I; - return U > s && (s = U), s > 0 ? 0 : A(s) - }, isExpanded: function (K) { - if (!K) return !0; - var d = this._26o[K]; - return d ? d.isExpanded : !(this._26Q[K] === !1) - }, toggle: function (s) { - var t = this; - t.isExpanded(s) ? t.collapse(s) : t.expand(s) - }, expandAll: function () { - this.validate(); - for (var w in this._26o) this.expand(w) - }, expand: function (V) { - if (V && V !== Jc) { - var A = this, - k = A._26o[V]; - k && !k.isExpanded && (k.isExpanded = !0, A.onExpanded(V), A.ivm()) - } - }, onExpanded: function () { }, collapseAll: function () { - this.validate(); - for (var m in this._26o) this.collapse(m) - }, collapse: function (W) { - if (W && W !== Jc) { - var H = this, - X = H._26o[W]; - X && X.isExpanded && (X.isExpanded = !1, H.onCollapsed(W), H.ivm()) - } - }, onCollapsed: function () { }, getCategoryName: function (Y) { - if (!this.isCategorizable()) return Jc; - var $ = Y.getCategoryName(); - return $ ? $ : Jc - }, getPropertyModel: function () { - return this._propertyModel - }, handleSelectionChange: function () { - this.ivm() - }, setDataModel: function (U) { - var V = this, - Z = V._dataModel; - Z !== U && (Z && (Z.umd(V.handlePropertyChange, V), V._selectionModel || Z.sm().ums(V.handleSelectionChange, V)), V._dataModel = U, U.md(V.handlePropertyChange, V), V._selectionModel ? V._selectionModel._21I(U) : U.sm().ms(V.handleSelectionChange, V), V.fp(uk, Z, U)) - }, isVisible: function (R) { - return this._visibleFunc ? this._visibleFunc(R) : !0 - }, onPropertyChanged: function (i) { - var v = this, - u = i.property; - Qs[u] ? v.ivm() : v.iv(), u === wb && v._43o() - }, getCurrentData: function () { - return this._27o - }, updateCurrentData: function () { - this._27o = this.sm().ld() - }, getRawProperties: function () { - return this._27o ? this._propertyModel._roots : Yh - }, handlePropertyChange: function (a) { - this._27o === a.data && this.iv() - }, ivm: function () { - this.invalidateModel() - }, invalidateModel: function () { - var r = this; - r._96I || (r.setSelectRowIndex(-1), r._96I = 1, r.iv()) - }, redraw: function () { - this.iv() - }, validateModel: function () { - var f = this, - $ = f._rows, - _ = f._28o, - S = {}, - n = new xr, - h = f._27o; - f.updateCurrentData(), h !== f._27o && f.endEditing(), $.clear(), _.clear(), f.getRawProperties().each(function (B) { - if (f.isVisible(B)) { - n.add(B); - var E = f.getCategoryName(B); - S[E] || (_.add(E, E === Jc ? 0 : Z), S[E] = { - isExpanded: f.isExpanded(E), - properties: new xr - }) - } - }), f._sortFunc && n.sort(f._sortFunc); - for (var I in f._26o) f._26Q[I] = f.isExpanded(I); - f._26o = S, _.each(function (V) { - V !== Jc && $.add(V); - var D = S[V]; - D.isExpanded && n.each(function (L) { - f.getCategoryName(L) === V && (D.properties.add(L), $.add({ - property: L, - data: f._27o - })) - }, f) - }) - }, validateImpl: function () { - var B = this; - B._76o(), B._96I && (B.validateModel(), delete B._96I); - var f = B._canvas, - P = B.getWidth(), - Y = B.getHeight(), - $ = -B.ty(), - k = B._rowHeight, - b = B._indent, - l = P - b, - y = B._rows, - r = y.size(), - c = B._9I = b + l * B._10I, - g = B._59I = r * k; - Bn(f, P, Y), B._29I = { - x: 0, - y: $, - width: P, - height: Y - }, B._31I = T($ / k), B._14I = s(($ + Y) / k), B._31I < 0 && (B._31I = 0), B._14I > r && (B._14I = r); - var U, p = Wd(f), - Z = B._background; - tf(p, 0, -$, 1), p.beginPath(), p.rect(0, $, P, Y), p.clip(), p.clearRect(0, $, P, Y), B._93db(p), Z && fl(p, 0, 0, b, g, Z); - for (var S = B._31I; S < B._14I; S++) { - var G = y.get(S), - $ = k * S; - if (dk(G)) Z && fl(p, b, $, l, k, Z), U = ii(B.isExpanded(G) ? B._expandIcon : B._collapseIcon), U && qk(p, U, Mg, 0, $, b, k), p.save(), p.beginPath(), p.rect(b, $, l, k), p.clip(), B.drawCategoryName(p, G, S, b, $, l, k), p.restore(); - else { - var C = G.property, - E = G.data, - U = ii(C.getIcon()), - t = B._selectRowIndex === S ? B.getSelectBackground() : F; - if (U && qk(p, U, Mg, 0, $, b, k), t && fl(p, b, $, l, k, t), p.save(), p.beginPath(), p.rect(b, $, c - b, k), p.clip(), B.drawPropertyName(p, C, S, b, $, c - b, k), p.restore(), !B.isEditing(E, C)) { - var z = c + 1, - q = P - c - 1; - p.save(), p.beginPath(), p.rect(z, $, q, k), p.clip(), B._87o(B.drawPropertyValue(p, C, B.getValue(E, C), S, z, $, q, k, E), S, z, $, q, k), p.restore() - } - } - B._rowLineVisible && fl(p, b, $ + k - 1, l, 1, B._rowLineColor) - } - B._columnLineVisible && (fl(p, c, 0, 1, g, B._columnLineColor), fl(p, P - 1, 0, 1, g)), B._92db(p), B._93I(), p.restore(), B.ty(B.ty()) - }, drawCategoryName: function (d, C, h, X, t, S, O) { - nd(d, C, this.getCategoryFont(C), this.getCategoryColor(C), X, t, S, O) - }, drawPropertyName: function (A, f, Z, O, o, T, i) { - return f.drawPropertyName ? (f.drawPropertyName(A, f, Z, O, o, T, i, this), void 0) : (nd(A, this.getPropertyName(f), this.getPropertyFont(f, Z), this.getPropertyColor(f, Z), O, o, T, i), void 0) - }, drawPropertyValue: function (F, P, p, I, A, W, S, w, k) { - return P.drawPropertyValue ? P.drawPropertyValue(F, P, p, I, A, W, S, w, k, this) : (Ss(F, p, P, this.getLabelFont(P, p, I), this.getLabelColor(P, p, I), A, W, S, w, k, this), void 0) - }, isPropertyEditable: function (e) { - return e.isEditable() && this.isEditable() - }, setProperties: function (M) { - this._propertyModel.clear(), this.addProperties(M) - }, addProperties: function (a) { - if (a) { - var p = this._propertyModel; - a.forEach(function (W) { - if (!(W instanceof Zs)) { - var e = gp(W.className); - W = Wn(e ? e : Zs, W) - } - p.add(W) - }) - } - }, getRowIndexAt: function (N) { - var B = this, - Y = T(B.lp(N).y / B._rowHeight); - return Y >= 0 && Y < B._rows.size() ? Y : -1 - }, getPropertyAt: function (A) { - var x = this, - E = x.getRowIndexAt(A); - return E >= 0 ? x._rows.get(E).property : F - }, getToolTip: function (I) { - var V = this, - S = V.getPropertyAt(I), - P = V._27o; - return S && P ? S.getToolTip(P, V._9I < V.lp(I).x, V) : F - } - }); - var at = function (q) { - this.pv = q, this.addListeners() - }; - yc(at, o, { - ms_listener: 1, - getView: function () { - return this.pv._view - }, setCursor: function (A) { - this.getView().style.cursor = A - }, clear: function () { - var A = this; - A._62O = A.cp = A.ty = A.p = F, A.setCursor(lp) - }, handle_mousedown: function (g) { - this.handle_touchstart(g) - }, handle_touchstart: function (X) { - var i = this, - F = i.pv; - Qc(X), F.setFocus(X) && (jj(X) ? (i.cp = lb(X), i.ty = F.ty(), i.p = F.getColumnPosition(), i.handle_touchmove(X)) : F.setSelectRowIndex(F.getRowIndexAt(X))) - }, handleWindowMouseUp: function () { - this.clear() - }, handleWindowTouchEnd: function () { - this.clear() - }, handle_mouseup: function (J) { - this.handle_touchend(J) - }, handle_touchend: function (k) { - var $ = this; - if ($.cp && !$._62O) { - var p = $.pv, - x = p.lp(k), - F = x.x, - M = x.y, - s = p._indent, - Y = p.getRowIndexAt(k), - b = p._9I; - if (Y >= 0) { - var D = p._rowHeight, - U = D * Y, - r = p._rows.get(Y), - X = r.property; - if (dk(r)) ii(p.isExpanded(r) ? p._expandIcon : p._collapseIcon) && F >= 0 && s >= F && M >= U && U + D >= M ? p.toggle(r) : wm(k) && p.toggle(r); - else if (F > b && p.isPropertyEditable(X, k)) { - var u = { - x: b + 1, - y: U, - width: p.getWidth() - b - 1, - height: D - }, - T = { - x: u.x + p.tx(), - y: u.y + p.ty(), - width: u.width, - height: u.height - }, - i = 0, - W = p._29I; - u.y < W.y ? i = u.y - W.y : u.y + D > W.y + W.height && (i = u.y + D - W.y - W.height), i && (p.ty(p.ty() - i), T.y -= i), p.beginEditing({ - data: r.data, - property: X, - value: p.getValue(r.data, X), - event: k, - rect: u, - editorRect: T, - view: p - }) - } - } - p.setSelectRowIndex(Y) - } - $.clear() - }, handleWindowMouseMove: function (k) { - this.handleWindowTouchMove(k) - }, handleWindowTouchMove: function (M) { - var u = this, - Z = u.pv, - b = u.ty, - x = u.cp, - G = lb(M), - V = u._62O; - if ("p" === V) Z.setTranslateY(b + G.y - x.y); - else if ("c" === V) { - var H = Z.getWidth() - Z._indent; - if (H > 16) { - var h = u.p - (x.x - G.x) / H, - $ = 16 / H; - $ > h && (h = $), h > 1 - $ && (h = 1 - $), Z.setColumnPosition(h) - } - } else "s" === V && Z.setTranslateY(b + (x.y - G.y) * Z._59I / Z._29I.height) - }, handle_mousemove: function (w) { - this.handle_touchmove(w) - }, handle_touchmove: function (I) { - if (!si && jj(I)) { - var Y = this, - x = Y.pv, - P = X(x.lp(I).x - x._9I) <= (nf ? 8 : 3); - Y.cp ? Y._62O || (P ? (Y._62O = "c", Ui(Y, I)) : X(lb(I).y - Y.cp.y) >= 2 && (Y._62O = Y.isV(I) ? "s" : "p", Ui(Y, I))) : (P ? Y.setCursor(Nc) : Y.setCursor(lp), Y.isV(I) && x._43o()) - } - }, isV: function (Z) { - var Y = this.pv, - f = Y._29I; - return Y._41o() && f.x + f.width - Y.lp(Z).x < co - }, handle_mousewheel: function (B) { - this.handleScroll(B, B.wheelDelta / 40) - }, handle_DOMMouseScroll: function (k) { - 2 === k.axis && this.handleScroll(k, -k.detail) - }, handleScroll: function (_, o) { - var b = this.pv; - Qc(_), b.endEditing(), b.translate(0, o * b.getRowHeight()) - }, handle_keydown: function (j) { - var L = this.pv, - Q = L._rows.size(), - R = L._selectRowIndex + (Nk(j) ? -1 : 1); - (Nk(j) || ri(j)) && (0 > R && (R = 0), R >= Q && (R = Q - 1), L.setSelectRowIndex(R)) - } - }), Vs.ListView = function (f) { - this._5o(f), new bt(this) - }, Ws("ListView", o, { - ms_ac: [fe, Uo, Vm, Jj, Vb, Yc, Ln, go, dj, df, gd, Ji, Pi, op], - ms_v: 1, - ms_bnb: 1, - ms_tip: 1, - ms_fire: 1, - ms_sm: 1, - _49o: 1, - ms_txy: 1, - ms_lp: 1, - ms_vs: 1, - ms_hs: 1, - _15Q: 1, - _14Q: 1, - ms_dm: 1, - _45o: 1, - _checkMode: !1, - _indent: kc, - _rowHeight: Oi, - _rowLineVisible: u.listViewRowLineVisible, - _rowLineColor: u.listViewRowLineColor, - _scrollBarColor: Ch, - _scrollBarSize: di, - _autoMakeVisible: be, - _autoHideScrollBar: jr, - _selectBackground: u.listViewSelectBackground, - _labelColor: u.listViewLabelColor, - _labelSelectColor: u.listViewLabelSelectColor, - _labelFont: u.listViewLabelFont, - isCheckMode: function () { - return this._checkMode - }, setCheckMode: function (b) { - var D = this, - t = D._checkMode; - D._checkMode = b, D.fp(wi, t, b) - }, drawRow: function (M, q, h, X, V, i, E) { - var F = this, - m = 0, - H = F._indent, - e = F.getIconWidth(q); - F.drawRowBackground(M, q, h, X, V, i, E), F._checkMode && (Ii(M, ii(F.getCheckIcon(q)), m + H / 2, V + E / 2, q, F), m += H), F.drawIcon(M, q, m, V, e, E), F.drawLabel(M, q, m + e, V, E) - } - }); - var bt = function (W) { - this.list = W, this.addListeners() - }; - yc(bt, o, { - ms_listener: 1, - getView: function () { - return this.list._view - }, clear: function (r) { - var X = this, - f = X.list; - r && "d" === X._62O && !X.dragCancel && f.handleDragAndDrop(r, "end"), f.draggingData && (f.draggingData = null, f.redraw()), X.dragCancel = X._62O = X._isV = X._isH = X.cp = X.tx = X.ty = F - }, handle_mousedown: function (u) { - this.handle_touchstart(u) - }, handle_touchstart: function (F) { - var p = this, - R = p.list; - if (Qc(F), R.setFocus(F)) { - var v = R.getDataAt(F); - p.cp = lb(F), p.tx = R.tx(), p.ty = R.ty(), jj(F) ? v && R.handleDragAndDrop && !p.isV(F) && !p.isH(F) && (R.draggingData = v, R.redraw(), R.handleDragAndDrop(F, "prepare")) : (v ? p._33o(F, v) : this._cancelDataDoubleSelect(), p.clear(F)) - } - }, handleWindowMouseUp: function (x) { - this.clear(x) - }, handleWindowTouchEnd: function (q) { - this.clear(q) - }, handle_mouseup: function (S) { - this.handle_touchend(S) - }, handle_touchend: function (l) { - var Q = this, - g = Q.list; - if (!Q._isV && !Q._isH && Q.cp && !Q._62O) { - var u = g.getDataAt(l); - u ? (g.isCheckMode() ? Q._34o(l, u) : Q._33o(l, u), wm(l) ? g.onDataDoubleClicked(u, l) : g.onDataClicked(u, l)) : (Q._cancelDataDoubleSelect(), g.handleBackgroundClick(l)) - } - Q.clear(l) - }, handleWindowMouseMove: function (D) { - this.handleWindowTouchMove(D) - }, handleWindowTouchMove: function (L) { - var w = this, - z = w.list, - m = w._62O, - F = w.tx, - r = w.ty, - B = w.cp, - Z = lb(L), - R = z._29I; - "p" === m ? z.setTranslate(F + Z.x - B.x, r + Z.y - B.y) : "v" === m ? z.ty(r + (B.y - Z.y) * z._59I / R.height) : "h" === m ? z.tx(F + (B.x - Z.x) * z._91I / R.width) : "d" === m && (w.dragCancel || z.handleDragAndDrop(L, "between")) - }, handle_mousemove: function (e) { - this.handle_touchmove(e) - }, handle_touchmove: function (K) { - if (!si && jj(K)) { - var p = this, - f = p.list; - if (p._isV = p.isV(K), p._isH = p.isH(K), p.cp) { - if (!p._62O) { - if (En(lb(K), p.cp) < 2) return; - p._isV ? p._62O = "v" : p._isH ? p._62O = "h" : f.draggingData && !this.dragCancel ? (p._62O = "d", f.handleDragAndDrop(K, "begin")) : p._62O = "p", p._62O && "d" !== p._62O && f.draggingData && (f.draggingData = null, f.redraw()), Ui(p, K) - } - } else p._isV && f._43o(), p._isH && f._42o() - } - }, isV: function (P) { - var E = this.list, - m = E._29I; - return E._41o() && m.x + m.width - E.lp(P).x < co - }, isH: function (s) { - var U = this.list, - y = U._29I; - return U._40o() && y.y + y.height - U.lp(s).y < co - }, handle_mousewheel: function (u) { - this.handleScroll(u, u.wheelDelta / 40, u.wheelDelta !== u.wheelDeltaX) - }, handle_DOMMouseScroll: function (n) { - this.handleScroll(n, -n.detail, 1) - }, handleScroll: function (w, n, g) { - var T = this.list; - Qc(w), T.endEditing && T.endEditing(), g && T._41o() ? T.translate(0, n * T.getRowHeight()) : T._40o() && T.translate(10 * n, 0) - }, handle_keydown: function (T) { - if (!u.isInput(T.target)) { - var s, V = this.list, - t = V.sm(), - J = V._rows, - x = J.size(); - if (Dq(T)) V.selectAll(); - else if (qq(T)) V.handleDelete && V.handleDelete(T); - else if (bj(T)) "d" !== this._62O || this.dragCancel || (V.handleDragAndDrop(T, "cancel"), this.dragCancel = !0); - else if (Cf(T)) V.isCheckMode() && (s = V.getFocusData(), s && V.checkData(s)); - else if (Nk(T) || ri(T)) { - var y = V.isCheckMode(); - if (s = y ? V.getFocusData() : t.ld()) { - var X = V.getRowIndex(s); - X >= 0 && (Nk(T) ? 0 !== X && (s = J.get(X - 1), y ? V.setFocusData(s) : t.ss(s)) : X !== x - 1 && (s = J.get(X + 1), y ? V.setFocusData(s) : t.ss(s))) - } else x > 0 && (s = J.get(0), y ? V.setFocusData(s) : t.ss(s)) - } - } - }, _34o: function (f, F) { - var a = this.list, - m = a.lp(f).x; - return m >= 0 && m <= a._indent ? (a.checkData(F), void 0) : (a.setFocusData(F), void 0) - }, _33o: function (X, W) { - var z = this.list, - S = z.sm(), - k = S.ld(); - if (!z.canHandleSelectMode(X, W)) return this._cancelDataDoubleSelect(), void 0; - if (ik(X)) z.isSelected(W) ? S.rs(W) : S.as(W); - else if (Pf(X)) - if (k) - for (var Z = z.getRowIndex(k), E = z.getRowIndex(W); Z !== E;) Z += E > Z ? 1 : -1, S.as(z._rows.get(Z)); - else S.ss(W); - else jj(X) ? (S.contains(W) ? z.handleDataDoubleSelect && (this._handleDataDoubleSelect(X, W), wm(X) && this._cancelDataDoubleSelect()) : this._cancelDataDoubleSelect(), S.ss(W)) : S.contains(W) || S.ss(W) - }, _handleDataDoubleSelect: function (e, p) { - this._cancelDataDoubleSelect(), this._doubleSelectTimer = cd(function () { - this.list.handleDataDoubleSelect(e, p), this._doubleSelectTimer = Z - }.bind(this), u.doubleClickSpeed) - }, _cancelDataDoubleSelect: function () { - this._doubleSelectTimer && (nr(this._doubleSelectTimer), this._doubleSelectTimer = Z) - } - }), Vs.TreeView = function (p) { - var G = this; - G._35o(), G._5o(p), new ct(G) - }, Ws("TreeView", o, { - ms_ac: [fe, Uo, Vm, "rootVisible", wi, "rootData", go, dj, df, gd, Ji, Vb, Jj, Yc, Ln, Zi, xj, Pi, op, "loader", "doubleClickToToggle"], - ms_v: 1, - ms_bnb: 1, - ms_tip: 1, - ms_fire: 1, - ms_sm: 1, - _49o: 1, - ms_txy: 1, - ms_lp: 1, - ms_vs: 1, - ms_hs: 1, - _15Q: 1, - ms_dm: 1, - _48o: 1, - _14Q: 1, - _45o: 1, - _checkMode: F, - _indent: kc, - _rowHeight: Oi, - _rowLineVisible: u.treeViewRowLineVisible, - _rowLineColor: u.treeViewRowLineColor, - _scrollBarColor: Ch, - _scrollBarSize: di, - _autoHideScrollBar: jr, - _expandIcon: u.treeViewExpandIcon, - _collapseIcon: u.treeViewCollapseIcon, - _autoMakeVisible: be, - _selectBackground: u.treeViewSelectBackground, - _labelColor: u.treeViewLabelColor, - _labelSelectColor: u.treeViewLabelSelectColor, - _labelFont: u.treeViewLabelFont, - _doubleClickToToggle: u.treeViewDoubleClickToToggle, - drawRow: function (f, b, L, C, m, D, A) { - var B = this; - B.drawRowBackground(f, b, L, C, m, D, A), B.drawTree(f, b, L, 0, m, D, A) - }, isOnToggleIcon: function (P) { - var T = this.getDataAt(P); - if (T) { - var f = this.getIndent(), - e = this.lp(P).x; - if (ii(this.getToggleIcon(T))) { - var N = f * this.getLevel(T); - if (e >= N && N + f >= e) return !0 - } - } - return !1 - } - }); - var ct = function (G) { - fi(ct, this, [G]) - }; - yc(ct, bt, { - toggle: function (Y, u, A, t) { - var P = this.list, - Z = P.lp(Y).x; - if (ii(P.getToggleIcon(u))) { - var M = A * t; - if (Z >= M && M + A >= Z) return P.toggle(u), !0 - } - return P.isDoubleClickToToggle() && wm(Y) ? (P.toggle(u), !0) : !1 - }, _34o: function (B, S) { - var Y = this.list, - N = Y.lp(B).x, - n = Y._levelMap[S._id], - L = Y._indent, - u = L * (n + 1); - return N >= u && u + L >= N ? (Y.checkData(S), void 0) : (this.toggle(B, S, L, n) || Y.setFocusData(S), void 0) - }, _33o: function (Y, O) { - var N = this, - p = N.list; - if (!N.toggle(Y, O, p._indent, p.getLevel(O))) - if (Pf(Y)) { - var J = p.sm(); - if (J.size() > 0) { - for (var b = p._rows, v = null, l = 0, T = b.size(); T > l; l++) - if (p.isSelected(b.get(l))) { - v = l; - break - } - for (var L = null, l = b.size() - 1; l >= 0; l--) - if (p.isSelected(b.get(l))) { - L = l; - break - } - var A, n, s = p.getRowIndex(O); - for (v > s ? (A = s - 1, n = v) : s > L ? (A = L, n = s) : (A = v, n = L); A !== n;) A++, J.as(p._rows.get(A)) - } else J.ss(O) - } else ct.superClass._33o.call(N, Y, O) - }, handle_keydown: function (C) { - if (Wk(C) || _i(C)) { - var j = this.list, - u = j._rows, - _ = j.isCheckMode(), - S = j.sm(), - Y = _ ? j.getFocusData() : S.ld(); - Y ? Y.hasChildren() && (Wk(C) ? j.collapse(Y) : j.expand(Y)) : u.size() > 0 && (Y = u.get(0), _ ? j.setFocusData(Y) : S.ss(Y)) - } else ct.superClass.handle_keydown.call(this, C) - } - }); - var dt = Vs.TableView = function (D) { - this._98I(), this._5o(D), new et(this) - }; - Ws("TableView", o, { - ms_ac: [fe, Uo, Vm, "sortMode", Me, Zh, Jj, Yc, Ln, jh, Gr, "sortColumn", go, dj, df, gd, Ji, Pi, op], - ms_v: 1, - ms_fire: 1, - ms_sm: 1, - _49o: 1, - ms_txy: 1, - ms_lp: 1, - ms_vs: 1, - ms_hs: 1, - _15Q: 1, - ms_dm: 1, - ms_tip: 1, - _50o: 1, - _45o: 1, - _47o: 1, - _sortMode: qh, - _editable: !0, - _batchEditable: !1, - _rowHeight: Oi, - _rowLineVisible: u.tableViewRowLineVisible, - _rowLineColor: u.tableViewRowLineColor, - _columnLineVisible: u.tableViewColumnLineVisible, - _columnLineColor: u.tableViewColumnLineColor, - _scrollBarColor: Ch, - _scrollBarSize: di, - _autoHideScrollBar: jr, - _autoMakeVisible: be, - _selectBackground: u.tableViewSelectBackground, - _labelColor: u.tableViewLabelColor, - _labelSelectColor: u.tableViewLabelSelectColor, - _labelFont: u.tableViewLabelFont, - getCheckColumn: function () { - var s = this; - if (!s._31o) { - var U = s._31o = new Ys; - U.setEditable(!0), U.setWidth(40), U.getValue = s.getCheckColumValue, U.drawCell = s.drawCheckColumnCell - } - return s._31o - }, isCheckMode: function () { - return this._39o.contains(this._31o) - }, setCheckMode: function (i) { - var D = this, - b = D._39o, - V = D.getCheckColumn(); - i !== D.isCheckMode() && (i ? b.add(V, 0) : b.remove(V), D.fp(wi, !i, i)) - }, getCheckColumValue: function (b, W, I) { - return I.isSelected(b) - }, drawCheckColumnCell: function (d, M, C, W, w, e, J, r, y) { - Ii(d, y.getCheckIcon(M), w + J / 2, e + r / 2, M, y) - } - }); - var et = function (c) { - fi(et, this, [c]) - }; - yc(et, bt, { - _34o: function (c, d) { - var g = this.list, - J = g._31o; - if (g.isCellEditable(d, J, c)) { - var G = g._3Q(J), - E = g.lp(c).x; - if (G && E >= G.startX && E < G.startX + J.getWidth()) return g.checkData(d), void 0 - } - g._37O(d, c), g.setFocusData(d) - }, _33o: function (v, L) { - this.list._37O(L, v), et.superClass._33o.apply(this, arguments) - } - }); - var ft = Vs.TreeTableView = function (z) { - var U = this, - N = U._4o = new Ys; - U._35o(), U._98I(), U._5o(z), N.setDisplayName("Name"), N.setEditable(!0), N.setWidth(180), N.drawCell = gt, N.getValue = ht, U._39o.add(N), new it(U) - }, - gt = function (h, r, J, n, a, B, D, G, p) { - p.drawTree(h, r, J, a, B, D, G) - }, - ht = function (C, n, d) { - return d.getLabel(C) - }; - Ws("TreeTableView", o, { - ms_ac: [fe, Uo, Vm, "sortMode", Me, Zh, Vb, wi, "rootData", "rootVisible", go, dj, "sortColumn", Zi, xj, df, gd, Ji, Pi, Ln, Jj, Yc, jh, Gr, op, "loader"], - ms_v: 1, - ms_bnb: 1, - ms_fire: 1, - ms_sm: 1, - _49o: 1, - ms_txy: 1, - ms_lp: 1, - ms_vs: 1, - ms_hs: 1, - _15Q: 1, - ms_dm: 1, - ms_tip: 1, - _50o: 1, - _48o: 1, - _14Q: 1, - _45o: 1, - _47o: 1, - _sortMode: qh, - _checkMode: F, - _editable: !0, - _batchEditable: !1, - _indent: kc, - _rowHeight: Oi, - _rowLineVisible: u.treeTableViewRowLineVisible, - _rowLineColor: u.treeTableViewRowLineColor, - _columnLineVisible: u.treeTableViewColumnLineVisible, - _columnLineColor: u.treeTableViewColumnLineColor, - _expandIcon: u.treeTableViewExpandIcon, - _collapseIcon: u.treeTableViewCollapseIcon, - _scrollBarColor: Ch, - _scrollBarSize: di, - _autoHideScrollBar: jr, - _autoMakeVisible: be, - _selectBackground: u.treeTableViewSelectBackground, - _labelColor: u.treeTableViewLabelColor, - _labelSelectColor: u.treeTableViewLabelSelectColor, - _labelFont: u.treeTableViewLabelFont, - getTreeColumn: function () { - return this._4o - } - }); - var it = function (E) { - fi(it, this, [E]) - }; - yc(it, bt, { - _34o: function (g, u) { - var M = this.list, - h = M._4o, - e = M._3Q(h), - n = M.lp(g).x; - if (e) { - var H = M._indent, - d = e.startX + H * M.getLevel(u); - if (ii(M.getToggleIcon(u)) && n >= d && d + H >= n) return M.toggle(u), void 0; - if (M.isCellEditable(u, h) && (d += H, n >= d && d + H >= n)) return M.checkData(u), void 0 - } - M._37O(u, g), M.setFocusData(u) - }, _33o: function (O, N) { - var j = this.list, - J = j.lp(O).x; - if (ii(j.getToggleIcon(N))) { - var f = j._3Q(j._4o); - if (f) { - var W = j._indent, - Z = f.startX + W * j.getLevel(N); - if (J >= Z && Z + W >= J) return j.toggle(N), void 0 - } - } - j._37O(N, O), it.superClass._33o.apply(this, arguments) - } - }); - var jt = Vs.TableHeader = function (l) { - var v = this, - P = v._view = ve(1, v), - s = v._39o = l.getColumnModel(), - k = v.iv; - v.tv = v._tableView = l, v._60I = new xr, v._canvas = uo(P), P.style.background = u.tableHeaderBackground || "", P.style.height = um + oe, s.mm(k, v), s.md(k, v), s.mh(k, v), l.mp(function (o) { - Ms[o.property] && v.iv() - }, v), new kt(v), v.iv() - }; - Ws("TableHeader", o, { - ms_v: 1, - ms_lp: 1, - ms_fire: 1, - ms_ac: ["checkIcon", "sortDescIcon", "sortAscIcon", fe, Vm, Vb, "moveBackground", "insertColor", jh, Gr, "resizable", "movable"], - _checkIcon: He, - _movable: !0, - _resizable: !0, - _labelColor: u.tableHeaderLabelColor, - _labelFont: u.tableHeaderLabelFont, - _columnLineColor: u.tableHeaderColumnLineColor, - _columnLineVisible: u.tableHeaderColumnLineVisible, - _sortDescIcon: u.tableHeaderSortDescIcon, - _sortAscIcon: u.tableHeaderSortAscIcon, - _moveBackground: u.tableHeaderMoveBackground, - _insertColor: u.tableHeaderInsertColor, - _indent: kc, - getCheckIcon: function () { - return this._checkIcon - }, getTableView: function () { - return this.tv - }, getLabel: function (X) { - return X.toLabel() - }, getLabelFont: function () { - return this._labelFont - }, getLabelColor: function (r) { - return r.getColor() || this._labelColor - }, getLabelAlign: function (F) { - return F._align - }, onPropertyChanged: function () { - this.iv() - }, _5Q: function (V) { - this._61I = V, this.iv() - }, getLogicalPoint: function (r) { - return Nm(r, this._canvas, this.tv.tx()) - }, validateImpl: function () { - var I = this, - V = I._canvas, - E = I.getWidth(), - i = I.getHeight(), - z = I.tv, - K = I._60I, - C = I._61I, - l = -z.tx(), - d = 0; - (E !== V.clientWidth || i !== V.clientHeight) && Bn(V, E, i), K.clear(), I._39o._roots.each(function (f) { - if (f.isVisible()) { - var I = d + f.getWidth(); - l + E >= d && I >= l && K.add({ - column: f, - startX: d - }), d = I - } - }); - var p = Wd(V); - if (tf(p, -l, 0, 1), p.beginPath(), p.rect(l, 0, E, i), p.clip(), p.clearRect(l, 0, E, i), K.each(function (c) { - var F = c.column, - S = c.startX, - _ = F.getWidth(); - _ > 0 && (p.save(), p.beginPath(), p.rect(S, 0, _, i), p.clip(), C && C.column === F || I.drawColumn(p, F, S, 0, _, i), I._columnLineVisible && fl(p, S + _ - 1, 0, 1, i, I._columnLineColor), p.restore()) - }), C) { - var L = C.column, - d = C.startX, - G = C.position, - k = L.getWidth(); - p.save(), p.beginPath(), p.rect(d, 0, k, i), p.clip(), p.fillStyle = I._moveBackground, p.fill(), I.drawColumn(p, L, d, 0, k, i), p.restore(), cs(p, I._insertColor, G, 0, i) - } - p.restore() - }, _6Q: function ($) { - var m = this.tv; - return m._31o === $ && m.sm().getSelectionMode() === tb - }, drawColumn: function (n, C, S, L, c, y) { - var E = this, - h = E.tv, - H = ii(C.getIcon()), - W = E.getLabelAlign(C); - if (E._6Q(C)) { - var R = ii(E._checkIcon); - Ii(n, R, S + c / 2, L + y / 2, C, E) - } else { - var D = E.getLabel(C), - a = E.getLabelFont(C), - Q = E.getLabelColor(C), - N = ln(a, D).width, - k = H ? E._indent : 0; - W === nq ? (H && qk(n, H, Mg, S, L, k, y), nd(n, D, a, Q, S + k, L, c, y, nq)) : W === fm ? (H && qk(n, H, Mg, S + c - N - k, L, k, y), nd(n, D, a, Q, S, L, c, y, fm)) : (H && qk(n, H, Mg, S + (c - N - k) / 2, L, k, y), nd(n, D, a, Q, S + (c - N + k) / 2, L, 0, y, nq)) - } if (C.isSortable() && h.getSortColumn() === C && (H = ii(C.getSortOrder() === Sh ? E._sortAscIcon : E._sortDescIcon))) { - var g = xc(H, C) / 2 + 2; - Ii(n, H, W === fm ? S + g : S + c - g, L + y / 2, C, h) - } - } - }); - var kt = function (J) { - var O = this; - O.th = J, O.tv = J._tableView, O.addListeners() - }; - yc(kt, o, { - ms_listener: 1, - getView: function () { - return this.th.getView() - }, setCursor: function (O) { - this.getView().style.cursor = O - }, handle_mousemove: function (J) { - if (!si) { - var $ = this; - delete $._29o, $.setCursor(lp); - for (var m = $.th, v = m._60I, F = m.lp(J).x, f = v.size() - 1; f >= 0; f--) { - var l = v.get(f), - W = l.column, - E = l.startX + W.getWidth(); - if (m.isResizable() && X(E - F) <= (nf ? 10 : 3)) return $._29o = l, $.setCursor(Nc), void 0; - F > l.startX && E > F && ($._29o = l), (W.isClickable() || W.isSortable() || m.isMovable() || $.tv.getCheckColumn && W === $.tv.getCheckColumn()) && F > l.startX && E > F && $.setCursor(Zk) - } - } - }, handle_mousedown: function (P) { - this.handle_touchstart(P) - }, handle_touchstart: function (d) { - var E = this; - Qc(d), E.tv.endEditing(), E.handle_mousemove(d), E._29o && (E.x = lb(d).x, E.lx = E.th.lp(d).x, E.w = E._29o.column.getWidth(), Ui(E, d)) - }, handleWindowMouseMove: function (o) { - this.handleWindowTouchMove(o) - }, handleWindowTouchMove: function (P) { - var B = this, - t = B.th, - b = B.getView().style.cursor, - o = B._29o, - F = lb(P).x - B.x; - if (B.resizing || B.moving || (b === Nc ? B.resizing = 1 : t.isMovable() && b === Zk && X(F) > 2 && (B.moving = 1)), B.resizing) o.column.setWidth(B.w + F); - else if (B.moving) { - var $ = B.lx + F; - t._60I.each(function (E) { - var S = E.startX, - q = S + E.column.getWidth(); - if ($ >= S && q >= $) { - var h = { - column: o.column, - startX: o.startX + F, - front: q - $ > $ - S, - insertColumn: E.column - }; - h.position = h.front ? S : q, t._5Q(h) - } - }) - } - }, _16Q: function (F, o) { - var S = this, - N = S.tv, - b = S.th, - B = b._checkIcon; - if (b._6Q(F)) { - var g = ii(B), - Z = S.lx, - G = F.getWidth(), - i = xc(g, F); - if (Z >= o + G / 2 - i && o + G / 2 + i >= Z) { - b.setCheckIcon(B === tm ? He : tm); - var y = N.sm(), - U = N._rows; - return B === tm ? y.rs(U) : y.ss(U), N.onCheckColumnClicked(F), !0 - } - } - return !1 - }, handleWindowMouseUp: function (T) { - this.handleWindowTouchEnd(T) - }, handleWindowTouchEnd: function (Z) { - var L = this, - P = L.tv, - g = L.th, - u = L._29o; - if (L.moving) { - var W = g._61I; - if (W && W.insertColumn !== W.column) { - var $ = W.column, - q = P.getColumnModel()._roots, - I = q.remove($), - _ = q.indexOf(W.insertColumn); - _ >= 0 && (W.front || _++, _ <= q.size() && (q.add($, _), P.getColumnModel()._38I($, I, _))) - } - g._5Q(F), delete L.moving - } else if (!L.resizing && u) { - $ = u.column; - var R = g.lp(Z).x, - J = u.startX, - N = !0; - if (g.onColumnClicked) { - var v = g.onColumnClicked($, Z, J); - v === !1 && (N = !1) - } - if (N && R >= J && R <= J + $.getWidth() && !L._16Q($, J)) { - if ($.isSortable()) { - var m = P.getSortMode(), - e = $.getSortOrder(); - m === qh ? P.getSortColumn() === $ ? (e === rj && P.setSortColumn(F), $.setSortOrder(e === Sh ? rj : Sh)) : P.setSortColumn($) : "bistate" === m && (P.getSortColumn() === $ ? $.setSortOrder(e === Sh ? rj : Sh) : P.setSortColumn($)) - } - P.onColumnClicked($, Z, J) - } - } - L._29o = L.resizing = L.x = L.lx = L.w = F - } - }), Vs.TablePane = function (C) { - this.init(new dt(C)) - }, Ws("TablePane", o, { - ms_v: 1, - _44o: 1 - }), Vs.TreeTablePane = function (Z) { - this.init(new ft(Z)) - }, Ws("TreeTablePane", o, { - ms_v: 1, - _44o: 1 - }), Vs.Toolbar = function (O) { - var p = this, - B = p._view = ve(1, p), - r = B.style; - r.background = u.toolbarBackground || "", r.height = Jk + oe, p._canvas = uo(B), p._30o = new xr, p._90I = new xr, p.setItems(O || []), B.handleGroupSelectedChanged = function (O) { - if (O.isSelected()) { - var m = O.getGroupId(); - null != m && p._items.forEach(function (H) { - var F = H.element; - F && F !== O && F.setSelected && F.getGroupId && F.getGroupId() === m && F.setSelected(!1) - }) - } - }, new lt(p) - }, Ws("Toolbar", o, { - ms_v: 1, - ms_fire: 1, - ms_tx: 1, - ms_lp: 1, - ms_tip: 1, - ms_value: 1, - ms_ac: [Uj, fe, Vm, Uo, op, "itemGap", "separatorColor", "currentItem", "stickToRight"], - _labelColor: u.toolbarLabelColor, - _labelSelectColor: u.toolbarLabelSelectColor, - _labelFont: u.toolbarLabelFont, - _selectBackground: u.toolbarSelectBackground, - _itemGap: u.toolbarItemGap, - _separatorColor: u.toolbarSeparatorColor, - _stickToRight: !1, - getSumWidth: function () { - return this._64I - }, getToolTip: function (u) { - var X = this.getItemInfoAt(u); - return X ? X.item.toolTip : F - }, getLabelColor: function (m) { - return m && m.selected && m.type !== tm && m.type !== Hp ? this._labelSelectColor : this._labelColor - }, onPropertyChanged: function (w) { - this.iv(), w.property === Uj && this._items.forEach(function (z) { - bh(z) - }) - }, redraw: function () { - this.iv() - }, addItem: function (Q, d) { - var N = this._items; - d == F ? N.push(Q) : N.splice(d, 0, Q), this.fp(Uj, F, N) - }, removeItem: function (G) { - if (G) - for (var d = this._items, c = 0; c < d.length; c++) G === d[c] && (d.splice(c, 1), this.fp(Uj, F, d)) - }, removeItemById: function (b) { - if (b != F) - for (var K = this._items, q = 0; q < K.length; q++) - if (b === K[q].id) { - var _ = K.splice(q, 1)[0]; - return this.fp(Uj, F, K), _ - } - }, getItemById: function (x) { - if (x != F) - for (var y = this._items, d = 0; d < y.length; d++) { - var H = y[d]; - if (x === H.id) return H - } - }, setItemVisible: function (y, f) { - var z = this.getItemById(y); - z && (z.visible = f) - }, getItemInfos: function () { - return this._30o - }, getItemInfoAt: function (p) { - var R = this, - e = 0, - Y = R._30o, - L = R.lp(p), - r = L.x, - Q = L.y; - if (Q >= 0 && Q <= R.getHeight()) - for (; e < Y.size(); e++) { - var Z = Y.get(e); - if (Z.startX <= r && r <= Z.endX) return Z - } - return F - }, drawItem: function ($, K, x, G, s) { - if (K.visible === !1) return 0; - if (Mf(K.visible) && !K.visible()) return 0; - var q = this, - n = K.disabled; - n && ($.globalAlpha = Nn); - var v = q.drawItemImpl($, K, x, G, s), - o = q._itemGap; - return n && ($.globalAlpha = 1), this._currentItem !== K || "separator" === K || K.separator === !0 || K.unfocusable || Ie($, q._separatorColor, x - o / 2, 0, v + o, G), v - }, drawItemImpl: function (m, B, g, r, R) { - var J = this, - A = J._view, - C = J._itemGap, - _ = r / 2, - M = B.type, - p = B.element, - f = B.label; - dk(p) && (f = p, p = F); - var x, I = J.getLabelFont(B), - v = J.getLabelColor(B), - X = B.selected, - H = ii(B.icon), - E = xc(H, B), - z = 0, - j = E + (f ? ln(I, f).width : 0); - if ("separator" === B || B.separator === !0) return cs(m, J._separatorColor, g, r / 4, _), 1; - if (p) { - H && Ii(m, H, g + E / 2, _, B, J), nd(m, f, I, v, g + E, 0, 0, r); - var Q = Bq(p); - R || J._90I.add(Q), Q.parentNode !== A && sn(A, Q), p.iv && p.iv(), p.validate && p.validate(); - var l = Q.getBoundingClientRect(), - t = l.width, - S = Q.style; - return uj(Q), S.left = J.tx() + g + j + oe, S.top = (r - l.height) / 2 + oe, j + t - } - return M === Hp ? x = ii(X ? kj : yb) : M === tm && (x = ii(X ? tm : He)), x ? (z = xc(x, B), Ii(m, x, g + z / 2, _, B, J), g += z, j += z) : X && fl(m, g - C / 2, 0, j + C, r, J.getSelectBackground(B)), H && Ii(m, H, g + E / 2, _, B, J), nd(m, f, I, v, g + E, 0, 0, r), j - }, validateImpl: function () { - var O = this, - Y = O._canvas, - f = O.getWidth(), - B = O.getHeight(), - b = O._30o, - S = O._items; - Bn(Y, f, B); - var M = Wd(Y), - J = O._itemGap, - N = J / 2; - tf(M, O.tx(), 0, 1), M.clearRect(0, 0, f, B); - var T = O._90I; - O._90I = new xr, b.clear(), S.forEach(function (L) { - var G = O.drawItem(M, L, N, B); - b.add({ - item: L, - startX: N, - endX: N + G, - width: G - }), G && (N += G + J) - }), T.each(function (N) { - O._90I.contains(N) || yj(N) - }); - var p = O._64I; - O._64I = q(0, N), M.restore(), O._stickToRight ? (O._65O = 0, M = Wd(Y), N = f - O._64I + J, tf(M, 0, 0, 1), M.clearRect(0, 0, f, B), b.clear(), S.forEach(function (I) { - var d = O.drawItem(M, I, N, B, !0); - b.add({ - item: I, - startX: N, - endX: N + d, - width: d - }), d && (N += d + J) - }), M.restore()) : O.tx(O.tx()), p !== O._64I && O.onSumWidthChanged(p, O._64I) - }, onSumWidthChanged: function () { }, handleClick: function (i, S) { - var m = this, - l = i.type, - K = i.action, - V = i.groupId, - f = i.selected; - i.disabled || (V != F ? f || (i.selected = !0, this._items.forEach(function (a) { - a.groupId === V && i !== a && (a.selected = !1) - }), K && i.action(i, m, S)) : l === tm || "toggle" === l ? (i.selected = !f, K && i.action(i, m, S)) : K && i.action(i, m, S)), Um(), m.iv() - } - }); - var lt = function (o) { - this.tb = o, this.addListeners() - }; - yc(lt, o, { - ms_listener: 1, - getView: function () { - return this.tb._view - }, handle_mousewheel: function (a) { - this.handleScroll(a, 10 * (a.wheelDelta / 40)) - }, handle_DOMMouseScroll: function (z) { - this.handleScroll(z, 10 * -z.detail) - }, handleScroll: function (L, U) { - Qc(L); - var W = this.tb; - W.isScrollable() && !W._stickToRight && (W.tx(W.tx() + U), ek()) - }, handle_mousemove: function (h) { - var s = this; - si || s.setItem(h) - }, handle_mouseout: function (V) { - var J = this; - V.target === J.getView() ? J.tb.setCurrentItem(F) : J.handle_mousemove(V) - }, handle_mousedown: function (q) { - this.handle_mousemove(q), this.handle_touchstart(q) - }, handle_touchstart: function (b) { - var X = this, - g = X.tb, - c = b.target; - jj(b) && (c === X.getView() || c === g._canvas) && (Qc(b), g.setFocus(b) && (this.setItem(b, !0), (g.isScrollable() || X.info && !X.info.item.disabled) && (X.x = lb(b).x, X.tx = g.tx(), Ui(X, b)))) - }, handleWindowMouseMove: function (A) { - this.handleWindowTouchMove(A) - }, handleWindowTouchMove: function (l) { - var q = this, - W = q.tb; - if (!W._stickToRight) { - var h = lb(l).x - q.x; - !q._25o && X(h) > 2 && W.isScrollable() && (q._25o = 1), q._25o && W.tx(q.tx + h) - } - }, handleWindowMouseUp: function (h) { - this.handleWindowTouchEnd(h) - }, handleWindowTouchEnd: function (v) { - var j = this, - c = j.tb, - P = j.info, - k = j.tb.getItemInfoAt(v); - if (!j._25o && P) { - var W = P.item; - k && k.item === W && c.handleClick(W, v) - } - j._25o = j.x = j.tx = F, j.setItem() - }, setItem: function (i, $) { - var G = this, - Q = G.tb, - u = G.info = i ? Q.getItemInfoAt(i) : F, - V = u ? u.item : F; - Q.setCurrentItem(V), $ && V && Mf(V.onDown) && V.onDown(i) - } - }), Vs.BorderPane = function () { - this._view = ve(1, this), this.iv() - }, Ws("BorderPane", o, { - ms_v: 1, - ms_ac: ["topHeight", "bottomHeight", "leftWidth", "rightWidth"], - ms_fire: 1, - getLeftView: function () { - return this._leftView - }, setLeftView: function (O, B) { - this._12o("leftView", O), B != F && this.setLeftWidth(B) - }, getRightView: function () { - return this._rightView - }, setRightView: function (J, w) { - this._12o("rightView", J), w != F && this.setRightWidth(w) - }, getTopView: function () { - return this._topView - }, setTopView: function (M, S) { - this._12o("topView", M), S != F && this.setTopHeight(S) - }, getBottomView: function () { - return this._bottomView - }, setBottomView: function (Q, R) { - this._12o("bottomView", Q), R != F && this.setBottomHeight(R) - }, getCenterView: function () { - return this._centerView - }, setCenterView: function (j) { - this._12o("centerView", j) - }, _12o: function (k, T) { - var f = this, - g = "_" + k, - Q = f._view, - X = f[g]; - X !== T && (X && (X.getView ? yj(X.getView()) : yj(X)), f[g] = T, T && (T.getView ? sn(Q, T.getView(), 1) : sn(Q, T, 1)), f.fp(k, X, T)) - }, onPropertyChanged: function () { - this.iv() - }, validateImpl: function () { - var u = this, - m = u._topView, - W = u._bottomView, - f = u._leftView, - t = u._rightView, - E = u._centerView, - r = u.getWidth(), - T = u.getHeight(), - z = 0, - e = 0, - n = r, - P = T, - A = 0, - I = 0, - h = 0, - L = 0; - m && (A = u._topHeight == F ? zp(m) : u._topHeight, e = A), W && (I = u._bottomHeight == F ? zp(W) : u._bottomHeight, P = T - I), f && (h = u._leftWidth == F ? oh(f) : u._leftWidth, z = h), t && (L = u._rightWidth == F ? oh(t) : u._rightWidth, n = r - L); - var l = q(0, n - z), - k = q(0, P - e); - m && qp(m, 0, 0, r, A), W && qp(W, 0, P, r, I), f && qp(f, 0, e, h, k), t && qp(t, n, e, L, k), E && qp(E, z, e, l, k) - } - }) - } -}("undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : (0, eval)("this"), Object); \ No newline at end of file +!function(C,L,H){"use strict";function _(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=L.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&Eh(t,e)}function c(t){t=L.prototype.toString.call(t);return"Array]"===t.substring(t.length-6)}function v(t,e,i,n,r,o){e=e||[],i=i||[],n=n||[];try{e.push(t);var a=Function.apply(0,e);return i[i.length]="return "+a,Function.apply(0,i).apply(0,n)}catch(t){return o&&o(t),r}}function h(i){var n={};return{get:function(t){if(n[t]!==H)return n[t];var e;switch(t){case"WEBGL_depth_texture":e=i.getExtension("WEBGL_depth_texture")||i.getExtension("MOZ_WEBGL_depth_texture")||i.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":e=i.getExtension("EXT_texture_filter_anisotropic")||i.getExtension("MOZ_EXT_texture_filter_anisotropic")||i.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":e=i.getExtension("WEBGL_compressed_texture_s3tc")||i.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||i.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":e=i.getExtension("WEBGL_compressed_texture_pvrtc")||i.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case"WEBGL_compressed_texture_etc1":e=i.getExtension("WEBGL_compressed_texture_etc1");break;default:e=i.getExtension(t)}return n[t]=e}}}function l(e,i,t){function n(t){if("highp"===t){if(0N(t,i)||c+FsN(r,a)||l+FsN(e,n)||l+FsN(o,s))?U:[c,l]},Gn=function(t,e,i){if(t&&i)if(e){if("style"===e)return t.getStyle(i);if("attr"===e)return t.getAttr(i);if(e===Ye)return t[i]}else if(t[i=fn(i)])return t[i]();return H},Hn=function(t,e,i,n){t&&i&&(e?"style"===e?t.s(i,n):"attr"===e?t.a(i,n):e===Ye&&(e=t[i],t[i]=n,t.fp("f:"+i,e,n)):t[i=gn(i)]&&t[i](n))},Wn=function(t,e,i){return e&&"top"!==e?"bottom"===e?{x:t.x,y:t.y,width:t.width,height:t.height*i}:"right"===e?{x:t.x,y:t.y,width:t.width*i,height:t.height}:"left"===e?{x:t.x+t.width*(1-i),y:t.y,width:t.width*i,height:t.height}:void 0:{x:t.x,y:t.y+t.height*(1-i),width:t.width,height:t.height*i}},qn=function(t,e,i,n,r){e&&lo(t,i,n,1,r,e)},Xn=function(t,e,i,n){var r=1-t;return r*r*e+2*t*r*i+t*t*n},Qn=function(t,e,i,n,r){var o=1-t;return o*o*o*e+3*o*o*t*i+3*o*t*t*n+t*t*t*r},Yn=function(t){var e,i,n,r,o=0;return t.forEach(function(t){if(0<(e=t.length))for(i=t[0],r=1;rr&&(r=s.width),i=i||s.height}return t.ss=n,{width:r,height:i*o}},sr=function(t,e,i,n,r,o){var a=e.length;if(1===a)hr(t,e[0],i,n,r);else for(var s=i.height/a,h={x:i.x,y:i.y,width:i.width,height:s},c=0;cG.imageCacheThreshold&&(e._cacheImage_[s]={__count__:0}),h=Gl.Default.toCanvas(e,mh(e),bh(e),null,r,o,i,null,n),e._cacheImage_[s][i]=h,e._cacheImage_[s].__count__++),e=h),a=t.createPattern(e,"repeat")}catch(t){a="black"}return a},vo=function(t){for(var e,i=[],n=0,r=t.length,o=0;o<65;o++)i[o]=o;for(o=0;o<65;o++)n=(n+i[o]+t.charCodeAt(o%r))%65,e=i[o],i[o]=i[n],i[n]=e;for(o=0;o<65;o++)i[o]=$o[i[o]];return i.join("")},yo=function(t,e,i,n,r,o,a){t.save(),t.translate(e,i),t.scale(1,a/o),t.arc(0,0,o,n,r),t.restore()},mo=function(t,e,i,n,r,o,a,s,h){6===arguments.length&&(h=s=a=o);var c=e+n,l=i+r,n=n>2,o=(3&s)<<4|(i=t.charCodeAt(c++))>>4,a=(15&i)<<2|(n=t.charCodeAt(c++))>>6,s=63&n,isNaN(i)?a=s=64:isNaN(n)&&(s=64),h=h+e.charAt(r)+e.charAt(o)+e.charAt(a)+e.charAt(s);return h},decode:function(t,e,i){for(var n,r,o,a,s,h="",c=i||0;c>4,r=(15&o)<<4|(a=e.indexOf(t.charAt(c++)))>>2,o=(3&a)<<6|(s=e.indexOf(t.charAt(c++))),h+=String.fromCharCode(n),64!=a&&(h+=String.fromCharCode(r)),64!=s&&(h+=String.fromCharCode(o));return decodeURIComponent(escape(h))},_utf8_encode:function(t){t=t.replace(/\r\n/g,"\n");for(var e="",i=0;i>6):(e+=String.fromCharCode(224|n>>12),e+=String.fromCharCode(128|63&n>>6)),e+=String.fromCharCode(128|63&n))}return e},_utf8_decode:function(t){for(var e,i,n="",r=0,o=0;r>8]+r[255&t>>16]+r[255&t>>24]+"-"+r[255&e]+r[255&e>>8]+"-"+r[64|15&e>>16]+r[255&e>>24]+"-"+r[128|63&i]+r[255&i>>8]+"-"+r[255&i>>16]+r[255&i>>24]+r[255&n]+r[255&n>>8]+r[255&n>>16]+r[255&n>>24]}}(),clamp:function(t,e,i){return Math.max(e,Math.min(i,t))},generateIncreasingID:(cm=0,function(){return++cm}),encodeBase64:function(t,e){return ta.encode(t,e||$o)},decodeBase64:function(t,e){return ta.decode(t,e||$o)},randomArray:function(t,e){for(var i=(e=e||t.length)-1;0>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16;var i=++e>>1;return e-tMath.abs(t.z)?sm.set(-t.y,t.x,0):sm.set(0,-t.z,t.y)):sm.crossVectors(t,e),this._x=sm.x,this._y=sm.y,this._z=sm.z,this._w=hm,this.normalize()},setFromUnitVectors:function(t,e){return om===H&&(om=new ha),(am=t.dot(e)+1)<1e-6?(am=0,Math.abs(t.x)>Math.abs(t.z)?om.set(-t.y,t.x,0):om.set(0,-t.z,t.y)):om.crossVectors(t,e),this._x=om.x,this._y=om.y,this._z=om.z,this._w=am,this.normalize()},multiply:function(t){return this.multiplyQuaternions(this,t)},premultiply:function(t){return this.multiplyQuaternions(t,this)},multiplyQuaternions:function(t,e){var i=t._x,n=t._y,r=t._z,o=t._w,a=e._x,s=e._y,t=e._z,e=e._w;return this._x=i*e+o*a+n*t-r*s,this._y=n*e+o*s+r*a-i*t,this._z=r*e+o*t+i*s-n*a,this._w=o*e-i*a-n*s-r*t,this}}),sa=Gl.Math.Vector4=function(t,e,i,n){this.x=t||0,this.y=e||0,this.z=i||0,this.w=n!==H?n:1},L.assign(sa.prototype,{isVector4:!0,set:function(t,e,i,n){return this.x=t,this.y=e,this.z=i,this.w=n,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this.w=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setW:function(t){return this.w=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==H?t.w:1,this},add:function(t,e){return e!==H?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this},sub:function(t,e){return e!==H?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,r=this.w,t=t.el;return this.x=t[0]*e+t[4]*i+t[8]*n+t[12]*r,this.y=t[1]*e+t[5]*i+t[9]*n+t[13]*r,this.z=t[2]*e+t[6]*i+t[10]*n+t[14]*r,this.w=t[3]*e+t[7]*i+t[11]*n+t[15]*r,this},divideScalar:function(t){return this.multiplyScalar(1/t)},setAxisAngleFromQuaternion:function(t){this.w=2*Math.acos(t.w);var e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this},setAxisAngleFromRotationMatrix:function(t){var e,i,n,r=t.el,o=r[0],a=r[4],s=r[8],h=r[1],c=r[5],l=r[9],u=r[2],d=r[6],f=r[10];if(Math.abs(a-h)<.01&&Math.abs(s-u)<.01&&Math.abs(l-d)<.01){if(Math.abs(a+h)<.1&&Math.abs(s+u)<.1&&Math.abs(l+d)<.1&&Math.abs(o+c+f-3)<.1)return this.set(1,0,0,0),this;y=Math.PI;var g=(o+1)/2,p=(c+1)/2,_=(f+1)/2,v=(a+h)/4,t=(s+u)/4,r=(l+d)/4;return pthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)},copy:function(t){return this.min.copy(t.min),this.max.copy(t.max),this},makeEmpty:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this},isEmpty:function(){return this.max.xthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e},getBoundingBox:function(t){return t===H&&(t=new da),t.set(this.center,this.center),t.expandByScalar(this.radius),t},applyMatrix4:function(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this},translate:function(t){return this.center.add(t),this},equals:function(t){return t.center.equals(this.center)&&t.radius===this.radius}}),Ag=Gl.Math.Frustum=function(t,e,i,n,r,o){this.planes=[t!==H?t:new la,e!==H?e:new la,i!==H?i:new la,n!==H?n:new la,r!==H?r:new la,o!==H?o:new la]},L.assign(Ag.prototype,{set:function(t,e,i,n,r,o){var a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(i),a[3].copy(n),a[4].copy(r),a[5].copy(o),this},clone:function(){return(new this.constructor).copy(this)},copy:function(t){for(var e=this.planes,i=0;i<6;i++)e[i].copy(t.planes[i]);return this},setFromMatrix:function(t){var e=this.planes,i=t.el,n=i[0],r=i[1],o=i[2],a=i[3],s=i[4],h=i[5],c=i[6],l=i[7],u=i[8],d=i[9],f=i[10],g=i[11],p=i[12],_=i[13],t=i[14],i=i[15];return e[0].setComponents(a-n,l-s,g-u,i-p).normalize(),e[1].setComponents(a+n,l+s,g+u,i+p).normalize(),e[2].setComponents(a+r,l+h,g+d,i+_).normalize(),e[3].setComponents(a-r,l-h,g-d,i-_).normalize(),e[4].setComponents(a-o,l-c,g-f,i-t).normalize(),e[5].setComponents(a+o,l+c,g+f,i+t).normalize(),this},intersectsObject:(Vy=new Va,function(t){var e=t.geometry;return null===e.boundingSphere&&e.computeBoundingSphere(),Vy.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(Vy)}),intersectsSprite:(zy=new Va,function(t){return zy.center.set(0,0,0),zy.radius=.7071067811865476,zy.applyMatrix4(t.matrixWorld),this.intersectsSphere(zy)}),intersectsSphere:function(t){for(var e=this.planes,i=t.center,n=-t.radius,r=0;r<6;r++)if(e[r].distanceToPoint(i)t&&Xm(e),e.lastPoint=n,e.details++,e.timeout=w(function(){Xm(this)}.bind(e),G.doubleClickSpeed)),2===e.details}),isShiftDown:function(t){return t?t.shiftKey:Li[16]},isCtrlDown:function(t){return t?B?t.metaKey:t.ctrlKey:B?Li[91]:Li[17]},getClientPoint:function(t){return Tr(t)&&(t=Er(t)),{x:t.clientX,y:t.clientY}},isMouseEvent:function(t){return t instanceof MouseEvent||0===t.type.indexOf("mouse")},getTargetElement:function(t){if(G.isMouseEvent(t)||!d.elementFromPoint)return t.target;t=vs(t);return d.elementFromPoint(t.x,t.y)},getPagePoint:function(t){return Tr(t)&&(t=Er(t)),{x:t.pageX,y:t.pageY}},createObject:function(t,e){var i,n=new t;for(i in e){var r,o=e[i];mn(o)?n[i]=o:0===i.indexOf("s:")?n.s(i.substr(2),e[i]):0===i.indexOf("a:")?n.a(i.substr(2),e[i]):(r=gn(i),o=e[i],n[r]?(n[r](o),"setToolTip"===r&&n.enableToolTip&&n.enableToolTip()):n[i]=o)}return n},setImage:function(t,e,i,n){var r=arguments.length;4===r?on(t,n,e,i):2===r?(pn(e)?on:nn)(t,e):1===r&&on(t,t)},getImage:function(t,e,i){var n;if(t==U)return U;if(yn(t)?n=t:(n=Oi[t],t&&n===H&&(tn&&tn[t]||on(t,t))),e&&n&&n.tagName){var r="override"===i?"colors_override":"override_rgb"===i?"colors_override_rgb":"override_a"===i?"colors_override_a":"colors";n[r]||(n[r]={__count__:0});t=n[r][e];return t||(n[r].__count__>G.imageCacheThreshold&&(n[r]={__count__:0}),t=function(e,t,i,n,r){var o=er();o.width=i,o.height=n;var a=o.getContext("2d");a.drawImage(e,0,0,i,n);try{for(var s=a.getImageData(0,0,i,n),h=s.data,c=0,l=h.length;ct.x+t.width||e.y>t.y+t.height)},containsRect:function(t,e){if(!t||!e)return!1;var i=e.x,n=e.y,r=e.width,o=e.height,a=t.width,s=t.height;if((a|s|r|o)<0)return!1;e=t.x,t=t.y;if(ir.width&&(n.left=o-e-s.width+vt),s.top+s.height>r.height&&(n.top=a-e-s.height+vt),s.left<0&&(n.left=o+e+vt),s.top<0&&(n.top=a+e+vt))):(n.left=t.x+vt,n.top=t.y+vt),Ei()):Ta()},startDragging:function(t,e,i){i==H&&(i=!0),t!==Ir&&(Ir?i&&(Tr(e)?Ir.handleWindowTouchEnd(e):Ir.handleWindowMouseUp(e)):Tr(e)?(g(C,ci,Cr),g(C,li,Mr)):(g(C,ai,Rr),g(C,si,Ar)),Ir=t)},getImageMap:function(){return Oi},toBoundaries:function(t,e,i,n){var r=[];return so(t,e,i,n).forEach(function(t){var e=[];t.forEach(function(t){e.push(t.x,t.y)}),r.push(e)}),r},getCurrentKeyCodeMap:function(){return Li},drawCenterImage:function(t,e,i,n,r,o,a,s){!r&&o&&o.isSelfViewEvent&&(r=o);var h=mh(e,r,o),c=bh(e,r,o);wh(t,e,S(i-h/2),S(n-c/2),h,c,r,o,a,s)},drawStretchImage:function(t,e,i,n,r,o,a,s,h,c,l,u){!s&&h&&h.isSelfViewEvent&&(s=h);var d=mh(e,s,h,o),f=bh(e,s,h,a);"uniform"===i?(f*=p=q(o/d,a/f),n+=S((o-(d*=p))/2),r+=S((a-f)/2),o=d,a=f):"centerUniform"===i&&((o=ly.main)throw new RangeError("Skybox camera must have lower priority than the main camera.");ly.skybox=Number(t)}},main:{configurable:!1,enumerable:!1,get:function(){return ly.main},set:function(t){if(t<=ly.skybox)throw new RangeError("Main camera must have higher priority than the skybox camera.");if(t>=ly.top)throw new RangeError("Main camera must have lower priority than the top camera.");ly.main=Number(t)}},top:{configurable:!1,enumerable:!1,get:function(){return ly.top},set:function(t){if(t<=ly.main)throw new RangeError("Top camera must have higher priority than the main camera.");ly.top=Number(t)}}})))},!0),An(e,{autoAdjustIndex:1,hierarchicalRendering:1,adjustChildrenToTop:1,autoHideScrollBar:1,autoUpdate:1,firstPersonMode:1,ortho:1,strict:1,stickToRight:1,instant:1,closePath:1,hierarchical:1,doubleClickToToggle:1,continuousLayout:1,syncSize:1},!0),va=G.disabledOpacity,ya=G.toolTipDelay,ma=G.devicePixelRatio,ba=G.autoMakeVisible,xa=G.autoHideScrollBar,wa=G.imageGradient,Ea=G.showToolTip,Ta=G.hideToolTip,Sa=G.dashPattern,Ia=G.lineCap,Ca=G.lineJoin,Ma=G.labelColor,Ra=G.labelSelectColor,Aa=G.labelFont,Pa=G.widgetIndent,Da=G.widgetRowHeight,Oa=G.widgetHeaderHeight,Ba=G.widgetTitleHeight,za=G.scrollBarColor,Va=G.scrollBarSize,La=G.scrollBarTimeout,Fa=G.scrollBarMinLength,ka=G.scrollBarInteractiveSize,ja=G.zoomIncrement,Na=G.scrollZoomIncrement,Ua=G.pinchZoomIncrement,Ga=G.zoomMax,Ha=G.zoomMin,Wa=G.createObject,qa=G.preventDefault,Xa=G.setImage,Qa=G.getImage,Ya=G.isImageComplete,Za=G.drawCenterImage,Ka=G.drawStretchImage,Ja=G.getId,$a=G.callLater,ts=G.cancelLater,es=G.sortFunc,is=G.clone,ns=G.getClass,rs=G.startAnim,os=G.brighter,as=G.darker,ss=G.drawText,hs=G.getTextSize,cs=G.isLeftButton,ls=G.isMiddleButton,us=G.isRightButton,ds=G.getTouchCount,fs=G.isDoubleClick,gs=G.isShiftDown,ps=G.isCtrlDown,_s=G.getClientPoint,vs=G.getPagePoint,ys=G.getDistance,ms=G.unionPoint,bs=G.unionRect,xs=G.containsPoint,ws=G.containsRect,Es=G.intersectsRect,Ts=G.intersection,Ss=G.getWindowInfo,Is=G.grow,Cs=G.getLogicalPoint,Ms=G.getScreenPoint,Rs=G.startDragging,As=G.removeHTML,Ps=G.createElement,Ds=G.segmentResolution,Os=G.shapeResolution,Bs=G.shapeSide,zs=G.def,Vs=function(t,e,i){zs("ht."+t,e,i)},Ls=function(t,e){t.childNodes.forEach(function(t){e(t),Ls(t,e)})},An(G,{toolTipLabelColor:Ma,toolTipLabelFont:Aa,toolTipBackground:r.toolTipBackground,toolTipShadowColor:jo,debugTipLabelFont:Aa,debugTipLabelColor:Ma,debugTipBackground:r.toolTipBackground,drawBreakableText:sr,setDevicePixelRatio:function(t){ma=G.devicePixelRatio="number"==typeof t?t:C.devicePixelRatio,Ls(d.body,function(t){t=t._ht;t&&t._canvas&&(rr(t._canvas,t.getWidth(),t.getHeight()),t.redraw?t.redraw():t.iv())})}},!0),Fs=1e-6,ks="undefined"!=typeof Uint16Array?Uint16Array:Array,js="undefined"!=typeof Float32Array?Float32Array:Array,Ns=function(t,e,i){e=[t[0]-e[0],t[1]-e[1],t[2]-e[2]];return!i||0<(i=ys(e))&&(e[0]/=i,e[1]/=i,e[2]/=i),e},Us=function(){var t,e="charCodeAt",i=2*(2*yt.length+1);for(t in C)if(t===bm+st[0]+(vt.length+2)){var n=C[t];if(!n)break;for(var r=n.length,o=0;oc)return i._70I?i._72I(t,e):i.moveTo(t,e),void(i.F-=c);if(i._70I?i._72I(n.x+s*i.F,n.y+h*i.F):i.moveTo(n.x+s*i.F,n.y+h*i.F),c-=i.F,i.F=0,i._70I=!i._70I,!c)return}var l=k(c/a);if(l){for(var u=s*r,d=h*r,f=s*o,g=h*o,p=0;pc)return o._70I?o._71I(t,e,i,n):o.moveTo(i,n),void(o.F-=c);if(l=o.F/c,r=o._20O(s,h,t,e,i,n,l),o._70I?o._71I(r[2],r[3],r[4],r[5]):o.moveTo(r[4],r[5]),o.F=0,o._70I=!o._70I,!c)return}var a=c-c*l,g=k(a/o._83O),p=f/c,_=d/c;if(g)for(var v=0;v2*P&&(r=2*P),h=-(r/(l=j(X(r)/(P/4)))),c=-n,0>>16)&&(t=e,i+=16),0!=(e=t>>8)&&(t=e,i+=8),0!=(e=t>>4)&&(t=e,i+=4),0!=(e=t>>2)&&(t=e,i+=2),0!=(e=t>>1)&&(t=e,i+=1),i}function i(t){this.m=t}function n(t){this.m=t,this.mp=t._50O(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>2),e=3&i,1):1==r?(n+=c(e<<2|i>>4),e=15&i,2):2==r?(n+=c(e),n+=c(i>>2),e=3&i,3):(n+=c(e<<2|i>>4),n+=c(15&i),0));return 1==r&&(n+=c(e<<2)),n}function E(t){var e=t.substring(0,38);return e&&30==e.indexOf("05000420")?["ss",t.substring(38)]:[]}function o(t,e){var i=x(e=(e=e.replace(I,"")).replace(/[ \n]+/g,""),16);if(i._55O()>this.n._55O())return 0;var n=E(this._37O(i)[T](16).replace(/^1f+00/,""));if(0==n.length)return!1;for(var r,o,a=Bs,s=[0,.5,.75,.875,.9375],h=[],c=[],l=[],u=J/a,e=n[1],t=(i=t,n=e,t=C._4O.Util._56O(i,"ss"),(i={}).v=t==n,i.t=1,i.s=0,Ii=i.v,i.t=0,t),d=0,f=0;d>15;0<=--o;){var h=32767&this[t],c=this[t++]>>15,l=s*h+c*a;r=((h=a*h+((32767&l)<<15)+i[n]+(1073741823&r))>>>30)+(l>>>15)+s*c+(r>>>30),i[n++]=1073741823&h}return r},30):"Netscape"!=t?(a.am=function(t,e,i,n,r,o){for(;0<=--o;){var a=e*this[t++]+i[n]+r;r=k(a/67108864),i[n++]=67108863&a}return r},26):(a.am=function(t,e,i,n,r,o){for(var a=16383&e,s=e>>14;0<=--o;){var h=16383&this[t],c=this[t++]>>14,l=s*h+c*a;r=((h=a*h+((16383&l)<<14)+i[n]+r)>>28)+(l>>14)+s*c,i[n++]=268435455&h}return r},28);a.DB=t,a.DM=(1<>15)*e.mpl&e.um)<<15)&t.DM;for(t[n=i+e.m.t]+=e.m.am(0,r,t,i,0,e.m.t);t[n]>=t.DV;)t[n]-=t.DV,t[++n]++}t._57O(),t._45O(e.m.t,t),0<=t._52O(e.m)&&t._78O(e.m,t)},t._75O=function(t,e,i){t._47O(e,i),this._74O(i)},t._76O=function(t,e){t._48O(e),this._74O(e)},a._77O=function(t){for(var e=this.t-1;0<=e;--e)t[e]=this[e];t.t=this.t,t.s=this.s},a._58O=function(t){this.t=1,this.s=t<0?-1:0,0n.DB?(n[n.t-1]|=(s&(1<>n.DB-a):n[n.t-1]|=s<=n.DB&&(a-=n.DB))}8==i&&0!=(128&t[0])&&(n.s=-1,0>r|s,s=(i[h]&o)<=i.t)e.t=0;else{var r=t%i.DB,o=i.DB-r,a=(1<>r;for(var s=n+1;s>r;0>=i.DB;if(t.t>=i.DB;r+=i.s}else{for(r+=i.s;n>=i.DB;r-=t.s}e.s=r<0?-1:0,r<-1?e[n++]=i.DV+r:0=e.DV&&(t[i+e.t]-=e.DV,t[i+e.t+1]=1)}0>r.F2:0),u=r.FV/o,d=(1<>h)&&(o=!0,a=c(n));0<=s;)h>(h+=i.DB-e)):(n=i[s]>>(h-=e)&r,h<=0&&(h+=i.DB,--s)),0f?g=oo[h]:o=!0)),t&&g&&g[0]&&g[j(.5)]&&a){var c,l=Ys(g[0]),u=Ys(g[1]);for(c in u)s.push(c);var d=0,i=l[s[0]],n=u[s[d++]],r=u[s[d++]],f=u[s[d++]],t=u[s[d++]],g=u[s[d++]],p=u[s[d++]],l=l[s[6]],d=u[s[d++]],a=O._27O(a);if(i===n&&a&&d){t=n+r+f+t+g+p;var _=!p||p===di;if(!_&&p)for(var v,y=0,m=p.length;y>>2]>>>24-o%4*8;e[n+o>>>2]|=a<<24-(n+o)%4*8}else if(65535>>2]=i[o>>>2];else e.push.apply(e,i);return this._65O+=r,this},_57O:function(){var t=this._84O,e=this._65O;t[e>>>2]&=4294967295<<32-e%4*8,t.length=j(e/4)},_88O:function(){var t=i._88O.call(this);return t._84O=this._84O.slice(0),t},_87O:function(t){for(var e=[],i=0;i>>2]>>>24-r%4*8;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},_68O:function(t){for(var e=t.length,i=[],n=0;n>>3]|=tt(t.substr(n,2),16)<<24-n%8*4;return new c._82O(i,e/2)}},o=n._8A={stringify:function(t){for(var e=t._84O,i=t._65O,n=[],r=0;r>>2]>>>24-r%4*8;n.push(u(o))}return n.join("")},_68O:function(t){for(var e=t.length,i=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new c._82O(i,e)}},a=n._9A={stringify:function(t){try{return decodeURIComponent(escape(o.stringify(t)))}catch(t){throw new Error("")}},_68O:function(t){return o._68O(unescape(encodeURIComponent(t)))}},s=e._32O=i._80O({_1A:function(){this._83O=new c._82O,this._23O=0},_33O:function(t){typeof t==Ze&&(t=a._68O(t)),this._83O._89O(t),this._23O+=t._65O},_25O:function(t){var e=this._83O,i=e._84O,n=e._65O,r=this._79O,o=n/(4*r),a=(o=t?j(o):N((0|o)-this._22O,0))*r,n=q(4*a,n);if(a){for(var s=0;s>>7)^(g<<14|g>>>18)^g>>>3,g=((d=_[u-2])<<15|d>>>17)^(d<<13|d>>>19)^d>>>10,_[u]=f+_[u-7]+g+_[u-16]);var d=n&r^n&o^r&o,f=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),g=l+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&h^~s&c)+p[u]+_[u],l=c,c=h,h=s,s=0|a+g,a=o,o=r,r=n,n=0|g+(f+d)}i[0]=0|i[0]+n,i[1]=0|i[1]+r,i[2]=0|i[2]+o,i[3]=0|i[3]+a,i[4]=0|i[4]+s,i[5]=0|i[5]+h,i[6]=0|i[6]+c,i[7]=0|i[7]+l},_21O:function(){var t=this._83O,e=t._84O,i=8*this._23O,n=8*t._65O;return e[n>>>5]|=128<<24-n%32,e[14+(64+n>>>9<<4)]=k(i/4294967296),e[15+(64+n>>>9<<4)]=i,t._65O=4*e.length,this._25O(),this._64O},_88O:function(){var t=i._88O.call(this);return t._64O=this._64O._88O(),t}});t._41O=i._26O(n),t._42O=i._19O(n)}();var I=new RegExp("");I.compile("[^0-9a-f]","gi"),r._28O=-1,r._29O=-2,a._31O=o,a._63O=o,r._43O=-2;var C,p=new function(){var h=this;h._5O=function(t,e){if("8"!=t.substring(e+2,e+3))return 1;e=tt(t.substring(e+3,e+4));return 0==e?-1:0this.n._55O())return 0;e=E(this._37O(e)[T](K(2,4)).replace(D,""));if(0==e.length)return!1;var i=e[0];return e[1]==(n=t,C._4O.Util._56O(n,i))}var n}.bind(B(z))},function(){var t=be.length-me.length;if(0i._children.size())&&(e=i._children.size()),i._children.add(t,e),(i._childMap[t._id]=t).setParent(i),i.onChildAdded(t,e),i.fp(Ae,U,t)))},onChildAdded:function(){},removeChild:function(t){var e;this._childMap&&this._childMap[t._id]&&(e=this._children.remove(t),delete this._childMap[t._id],this.fp(Ae,t,U),t.setParent(U,e),this.onChildRemoved(t,e))},onChildRemoved:function(){},getChildAt:function(t){return this._children.get(t)},clearChildren:function(){if(!this._children.isEmpty())for(var t=0,e=this._children.toArray(),i=e.length;ti.interval&&(i.beforeAction&&i.beforeAction(),i.action&&n.each(function(t){i.action(t)}),i.afterAction&&i.afterAction(),i.lastTime=t)}r.length&&(n._30Q=C.requestAnimationFrame(o))}},Vs("DataModel",L,{ms_fire:1,ms_attr:1,ms_ac:["layers","name","autoAdjustIndex","hierarchicalRendering","background","envmap","postProcessingData","init"],_name:H,_autoAdjustIndex:!0,_hierarchicalRendering:!1,_background:H,_init:H,_envmap:H,_cubicEnvmap:!1,_postProcessingData:H,sm:function(){return this.getSelectionModel()},mm:function(t,e,i){this.addDataModelChangeListener(t,e,i)},umm:function(t,e){this.removeDataModelChangeListener(t,e)},md:function(t,e,i){this.addDataPropertyChangeListener(t,e,i)},umd:function(t,e){this.removeDataPropertyChangeListener(t,e)},mh:function(t,e,i){this.addHierarchyChangeListener(t,e,i)},umh:function(t,e){this.removeHierarchyChangeListener(t,e)},getAttrObject:function(){return this._attrObject},setAttrObject:function(t){return this._attrObject=t},getSelectionModel:function(){return this._selectionModel},size:function(){return this._datas.size()},isEmpty:function(){return this._datas.isEmpty()},getRoots:function(){return this._roots},getDatas:function(){return this._datas},getFullscreenDatas:function(){return this._fsDataMap},getReflectors:function(){return this._reflectorMap},getDataById:function(t){return this._dataMap[t]},removeDataById:function(t){this.remove(this.getDataById(t))},toDatas:function(t,e){return this._datas.toList(t,e)},each:function(t,e){this._datas.each(t,e)},getDataByTag:function(t){return this._78O[t]},getTagMap:function(){return this._78O},removeDataByTag:function(t){this.remove(this.getDataByTag(t))},add:function(t,e,i){var n=this,r=t._id,o=t._tag,a=n._roots;if(n._dataMap[r])throw"'"+r+"' already exists";o!=U&&(n._78O[o]=t),n._dataMap[r]=t,0<=i?n._datas.add(t,i):n._datas.add(t),t._parent||(n._rootMap[r]=t,0<=e?a.add(t,e):a.add(t)),t.s("fullscreen")!==H&&(n._fsDataMap[r]=t),t.s("shape3d.reflector")&&(n._reflectorMap[r]=t),t._21I(n),n.onAdded(t),n._36I.fire({kind:"add",data:t,rootsIndex:e,datasIndex:i})},onAdded:function(){},remove:function(t,e){var i,n,r,o,a,s;t&&(i=this,n=t._id,a=e&&e.keepStructure,r=e&&e.keepChildren,o=t.getTag(),t._dataModel===i&&(this.beginTransaction(),a?i._removingData||(i._removingData=t):i.prepareRemove(t),r||t.toChildren().each(function(t){i.remove(t,e)},i),a?i._removingData===t&&(t._parent&&t._parent.removeChild(t),delete i._removingData):t._parent&&t._parent.removeChild(t),a=i._datas.remove(t),delete i._dataMap[n],o!=U&&delete i._78O[o],i._rootMap[n]&&(delete i._rootMap[n],s=i._roots.remove(t)),i._fsDataMap[n]&&delete i._fsDataMap[n],i._reflectorMap[n]&&delete i._reflectorMap[n],t._21I(U),i.onRemoved(t),i._36I.fire({kind:Ct,data:t,rootsIndex:s,datasIndex:a}),this.endTransaction()))},onRemoved:function(){},prepareRemove:function(){},clear:function(){var t,e=this;e._datas.size()&&(t=e._historyManager?this.toJSON():H,e._datas.toArray().forEach(function(t){t._21I(U)}),e._datas.clear(),e._dataMap={},e._roots.clear(),e._rootMap={},e._fsDataMap={},e._reflectorMap={},e._78O={},e._36I.fire({kind:Mt,json:t}))},contains:function(t){return t&&t._dataModel===this},handleDataPropertyChange:function(t){var e,i,n,r,o=t.data,a=t.property;"parent"===a?(r=o._id,e=this._rootMap,i=this._roots,o._parent?e[r]&&(delete e[r],i.remove(o)):e[r]||(e[r]=o,i.add(o))):"tag"===a?(e=t.oldValue,n=t.newValue,i=this._78O,e!=U&&delete i[e],n!=U&&(i[n]=o)):"s:fullscreen"===a?(r=o._id,n=this._fsDataMap,t.oldValue!=U&&delete n[r],t.newValue!=U&&(n[r]=o)):"s:shape3d.reflector"===a&&(r=o._id,a=this._reflectorMap,t.oldValue&&delete a[r],t.newValue&&(a[r]=o)),this.onDataPropertyChanged(o,t),this._35I.fire(t)},onDataPropertyChanged:function(){},addDataModelChangeListener:function(t,e,i){this._36I.add(t,e,i)},removeDataModelChangeListener:function(t,e){this._36I.remove(t,e)},addSerializeListener:function(t,e,i){this._serializeNotifier.add(t,e,i)},removeSerializeListener:function(t,e){this._serializeNotifier.remove(t,e)},fireSerializeEvent:function(t){this._serializeNotifier.fire(t)},addDataPropertyChangeListener:function(t,e,i){this._35I.add(t,e,i)},removeDataPropertyChangeListener:function(t,e){this._35I.remove(t,e)},_38I:function(t,e,i){this._37I&&this._37I.fire({data:t,oldIndex:e,newIndex:i})},addHierarchyChangeListener:function(t,e,i){this._37I||(this._37I=new kh),this._37I.add(t,e,i)},removeHierarchyChangeListener:function(t,e){this._37I.remove(t,e)},getSiblings:function(t){t=t._parent;return t?t._children:this._roots},eachByHierarchical:function(t,e,i){if(e)return this._eachByHierarchical(t,e,i);for(var n=0,r=this._roots,o=r.size();ni.size()&&e--,i.add(t,e),this._38I(t,n,e))},moveUp:function(t){this.moveTo(t,this.getSiblings(t).indexOf(t)-1)},moveDown:function(t){this.moveTo(t,this.getSiblings(t).indexOf(t)+1)},moveToTop:function(t){this.moveTo(t,0)},moveToBottom:function(t){this.moveTo(t,this.getSiblings(t).size())},moveSelectionUp:function(t){this.beginTransaction(),t=t||this.sm();var e=new Lh;Do(t,e,this._roots),e.each(this.moveUp,this),this.endTransaction()},moveSelectionDown:function(t){this.beginTransaction(),t=t||this.sm();var e=new Lh;Oo(t,e,this._roots),e.each(this.moveDown,this),this.endTransaction()},moveSelectionToTop:function(t){this.beginTransaction(),t=t||this.sm();var e=new Lh;Po(t,e,this._roots),e.each(this.moveToTop,this),this.endTransaction()},moveSelectionToBottom:function(t){this.beginTransaction(),t=t||this.sm();var e=new Lh;Ao(t,e,this._roots),e.each(this.moveToBottom,this),this.endTransaction()},moveToIndex:function(t,e,i){var n=this.getDatas();null==i&&(i=n.indexOf(t)),i===e||i<0||0<=e&&e<=n.size()&&(n.remove(t),e>n.size()&&e--,n.add(t,e),this._76I(t,i,e))},bringForward:function(t){this.moveToIndex(t,this.getDatas().indexOf(t)+1)},bringToFront:function(t){this.moveToIndex(t,this.size())},sendBackward:function(t){this.moveToIndex(t,this.getDatas().indexOf(t)-1)},sendToBack:function(t){this.moveToIndex(t,0)},bringSelectionForward:function(t){this.beginTransaction(),t=t||this.sm();for(var e=new Lh,i=this.getDatas(),n=!1,r=0;rDatas: "+n.dm().getDatas().length+(t?"
Size: "+t.width+" * "+t.height:""),t=n.dm()._historyManager;t&&(e+="
Undoes: "+t.getHistories().length+" index: "+t.getHistoryIndex());t=n.getDebugTip();t&&(e+="
"+t),r.innerHTML=e,n._isDebugging&&requestAnimationFrame(i)},requestAnimationFrame(i),n._isDebugging=!0)},t.hideDebugTip=function(){var t=this._debugDiv;t&&(delete this._debugDiv,this.getView().removeChild(t),this._isDebugging=!1)},t.updateDOMAppendMatrix=function(){var t=this.getView();t&&(t.updateAppendMatrix=!0)},t.countFrame=function(){var t,e;this._isDebugging&&(1e3<(t=Date.now())-(e=this._fpsInfo).time?(e.fps=Math.round(1e5*(e.frames+1)/(t-e.time))/100,e.time=t,e.frames=0):e.frames++)}},ms_icons:function(t){t.getRotation=function(t){return t==U?0:t},t._15O=function(){var t=this,e=t.s(Ht);if(e){var i,n=t,r=t.data||t._data,o=t._38o={icons:e,rects:{}};for(i in e){var a=e[i],s=xh(a.shape3d,r,n);if(!(!1===xh(a.visible,r,n)||xh(a.for3d,r,n)&&!t.I3d||s&&!t.I3d)){var h=s?[s]:xh(a.names,r,n),c=h?h.length:0,l=xh(a.position,r,n)||3,u=xh(a.offsetX,r,n)||0,d=xh(a.offsetY,r,n)||0,f=xh(a.direction,r,n)||ft,g=xh(a.gap,r,n),p=g!=U?g:1,_=xh(a.rotation,r,n),g=xh(a.keepOrien,r,n),v=xh(a.rotationFixed,r,n)?_:t.getRotation(_,g,l),y=U,m=o.rects[i]=new Array(c);m.rotation=v;for(var b=0;be.x||t.x===e.x&&t.y>e.y)&&(i=Lo[i],r=-r);o=Fo(i,{x:0,y:0,width:ys(t,e),height:0},o);return o.x+=n,o.y+=r,(o=new oa(T(e.y-t.y,e.x-t.x)).tf(o)).x+=t.x,o.y+=t.y,o},pc=function(t,i,n,e,r){if(t._19Q=!0,!n.getEdgeGroup())return e?n.s("edge.gap"):0;if(En(n.getSourceAgent())||En(n.getTargetAgent()))return 0;var o,a=0,s=0,h=0;if(n.getEdgeGroup().getSiblings().each(function(t){t.each(function(t){var e;i.isVisible(t)&&t.s(Jt)==r&&(e=t.s("edge.gap"),h=(o?s+=h/2+e/2:o=t,e),t===n&&(a=s))})}),e)return s-a+h;e=a-s/2;return o&&n._40I!==o._40I&&(t._19Q=!1),e},_c=function(t,e,i){if("oval"===t){var n=0,r=i.height/i.width,o=r*r,a=i.x+i.width/2,s=i.y+i.height/2;Am(e).forEach(function(t){var e=t.x-a,t=t.y-s,t=e*e+t*t/o;n2*Math.PI&&(n=2*Math.PI),a=-(n/(h=Math.ceil(Math.abs(n)/(Math.PI/4)))),s=-i,0e._key&&i.reverse(),i._key=[i[0]._key,i[1]._key].join("|");e=this._lineMap[i._key];return e||((this._lineMap[i._key]=e=i)._triangles={},i._planes={},this._lineList.push(i)),e};var i=new ha(1,0,0),r=new ha(0,1,0),o=new ha(0,0,1),p=new ha,_=new ha;return x.prototype._addTriangle=function(t,e,i,n,r,o){var a,s=this._findVertex(t,i),h=this._findVertex(t,n),c=this._findVertex(t,r),l=this._findLine(s,h),u=this._findLine(h,c),t=this._findLine(c,s);e?((a=(new ha).fromArray(e,3*i))._key=g(a,o),(n=(new ha).fromArray(e,3*n))._key=g(n,o),(r=(new ha).fromArray(e,3*r))._key=g(r,o),d(l,0,a,h,n,c,r),d(u,0,n,c,r,s,a),d(t,0,r,s,a,h,n)):(_.subVectors(c,h),p.subVectors(h,s),(a=(new ha).crossVectors(p,_))._key=g(a,o),f(l,c,a),f(u,s,a),f(t,h,a))},x.prototype._toLineVS=function(t){for(var e=this._lineList,i=0,n=e.length;i=i){var o=1-(n[r]-i)/(e=this.curves[r]).getLength();return e.getPointAt(o)}r++}return null},Iv.getLength=function(){var t=this.getCurveLengths();return t[t.length-1]},Iv.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;for(var t=[],e=0,i=this.curves.length,n=0;na&&(a=r.x),r.xt&&(t=r.y),r.ye&&(e=r.z),r.zs.y))if(t.y==a.y){if(t.x==a.x)return 1}else{h=c*(t.x-a.x)-h*(t.y-a.y);if(0==h)return 1;h<0||(n=!n)}}else if(t.y==a.y&&(s.x<=t.x&&t.x<=a.x||a.x<=t.x&&t.x<=s.x))return 1}return n}(S.p,_[C].p)||(x!=C&&b.push({froms:x,tos:C,hole:T}),I?(I=!1,p[C].push(S)):m=!0);I&&p[x].push(S)}}0e||t.y>i)},getRect:function(){var t=this.getWidth(),e=this.getHeight(),i=this.getAnchor(),t={x:-t*i.x,y:-e*i.y,width:t,height:e},e=this.getMatrix();return ms([e.tf(t.x,t.y),e.tf(t.x+t.width,t.y),e.tf(t.x+t.width,t.y+t.height),e.tf(t.x,t.y+t.height)])},getAnchorElevation:function(){return this._anchorElevation},getAnchor3d:function(){var t=this.getAnchor(),e=this._anchorElevation;return{x:t.x,y:e,z:t.y}},setAnchorElevation:function(t){var e=this._anchorElevation;return e!==t&&(this._anchorElevation=t,this.fp("anchorElevation",e,t),!0)},setAnchor3d:function(t,e,i,n){var r;"number"==typeof t?r={x:t,y:e,z:i}:(r=t.length?{x:t[0],y:t[1],z:t[2]}:t,n=e);i=this.getDataModel();i&&i.beginTransaction();t=this.getAnchor3d(),e=this.setAnchor(r.x,r.z);return this.setAnchorElevation(r.y)&&(e=!0),e&&n&&!Mi&&(this.getAnchor3d(),n=$s(this),n=Xs([r.x-t.x,r.y-t.y,r.z-t.z],n),this.p3(n)),i&&i.endTransaction(),e},getAnchor:function(){if(this.hasOwnProperty("_anchor"))return this._anchor;var t=Qa(this._image);return t&&t.anchorX!==H?{x:t.anchorX,y:t.anchorY}:this._anchor},setAnchor:function(t,e,i){"number"==typeof t?a={x:t,y:e}:(a=t.length?{x:t[0],y:t[1]}:t,i=e);var n=this.getAnchor();if(n.x===a.x&&n.y===a.y)return!1;var r,o,a,s=this.getDataModel();return s&&s.beginTransaction(),this._anchor=a,this.fp("anchor",n,a),i&&!Mi&&(r=this.getPosition(),o=this.getSize(),t=this.getRotation(),e=this.getScale(),i=-o.width*(n.x-a.x)*e.x,a=-o.height*(n.y-a.y)*e.y,e=Z(t),t=Q(t),this.setPosition(r.x+t*i-e*a,r.y+e*i+t*a)),s&&s.endTransaction(),!0},getScale:function(){return this._scale},setScale:function(t,e){e=2===arguments.length?{x:t,y:e}:t,t=this.getScale();t.x===e.x&&t.y===e.y||(this._scale=e,this.fp("scale",t,e))},getScaleTall:function(){return this._scaleTall},getScale3d:function(){var t=this._scaleTall,e=this.getScale();return[e.x,t,e.y]},getFinalScale3d:function(){var t=this.s3(),e=this._dynamicScale3d,i=this.getScale3d();return t&&(i[0]*=t[0],i[1]*=t[1],i[2]*=t[2]),e&&(i[0]*=e[0],i[1]*=e[1],i[2]*=e[2]),i},getFinalRotation3d:function(){return this._dynamicRotation||this.r3()},setScaleTall:function(t){var e=this._scaleTall;e!==t&&(this._scaleTall=t,this.fp("scaleTall",e,t))},setScale3d:function(t,e,i){t="number"==typeof t?{x:t,y:e,z:i}:t.length?{x:t[0],y:t[1],z:t[2]}:t;this.setScaleTall(t.y),this.setScale(t.x,t.z)},getCorners:function(t,e){t==U&&(t=0),e==U&&(e=t);var i=this.getAnchor(),n=this.getWidth(),r=this.getHeight(),o=-n*i.x-t,i=-r*i.y-e,t=n+2*t,r=r+2*e,e=this.getMatrix();return[e.tf(o,i),e.tf(o,i+r),e.tf(o+t,i+r),e.tf(o+t,i)]},getEditControlPoints:function(t,e,i){e==U&&(e=0),i==U&&(i=e);var n=this.getAnchor(),r=this.getWidth(),o=this.getHeight(),a=-r*n.x-e,n=-o*n.y-i,e=r+2*e,i=o+2*i;if(t)return[{x:a,y:n},{x:a,y:0},{x:a,y:n+i},{x:0,y:n+i},{x:a+e,y:n+i},{x:a+e,y:0},{x:a+e,y:n},{x:0,y:n}];t=this.getMatrix();return[t.tf(a,n),t.tf(a,0),t.tf(a,n+i),t.tf(0,n+i),t.tf(a+e,n+i),t.tf(a+e,0),t.tf(a+e,n),t.tf(0,n)]},rotateAt:function(t,e,i){var n=this._position,r=this._64O,o=new oa(r,n.x,n.y).tf(t,e),e=W(t*t+e*e),n=T(n.y-o.y,n.x-o.x)+i;this.setRotation(r+i),this.p(o.x+e*Q(n),o.y+e*Z(n))},onParentChanged:function(){cl.superClass.onParentChanged.apply(this,arguments),this._8I()},onPropertyChanged:(zv={},"width|height|position|anchor|rotation|scale|s:layout.h|s:layout.v".split("|").forEach(function(t){zv[t]=!0}),function(e){cl.superClass.onPropertyChanged.call(this,e),zv[e.property]&&!this._layoutUpdating&&this.updateLayoutParameters(null,e.property),this._69O&&this._69O.each(function(t){t.handleHostPropertyChange(e)}),this._49I&&this._49I.each(function(t){t.fp("agentChange",!0,!1)}),"a:layout"===e.property.substring(0,8)&&this.updateAttach()}),onHostChanged:function(){this.updateAttach(),this.updateLayoutParameters()},handleHostPropertyChange:function(t){this.updateAttach(t)},onStyleChanged:function(t){cl.superClass.onStyleChanged.apply(this,arguments),$h[t]&&this.updateAttach()},updateAttach:function(t){return Mi?void this.updateLayoutParameters():void(this._51I||(this._51I=1,this._71O(t),delete this._51I))},_71O:function(t){var e,i,n,r,o,a,s,h,c=this,l=c._host,u=t?t.property:U,d=t?t.oldValue:U,f=t?t.newValue:U;l instanceof cl&&((e=Qa(l.getImage()))&&e.layoutAttach&&(r=e.layoutAttach)),(t&&!Kh[u]&&"a:layout"!==u.substring(0,8)||!r||r(l,this))&&(l instanceof Gl.Grid?u===Re?c.setElevation(c._54O+f-d):t&&!Jh[u]||(s=c.s("attach.row.index"),h=c.s("attach.column.index"),(n=l.getCellRect(s,h))&&(i=c.s("attach.row.span"),o=c.s("attach.column.span"),1===i&&1===o||(n=bs(n,l.getCellRect(s+i-1,h+o-1))),ic(n,c,"attach.padding",1),c.setRect(n))):l instanceof yl&&0<=(a=c.s("attach.index"))&&(!t||tc[u])?(r=c.s("attach.thickness"),s=l.getScale(),i=Math.max(s.x,s.y),0e.x&&o.ye.y)return!0;return i.length<=n?(i.push(e),s.length++):i[s.length++]=e,!1}}),An(G,{fetch:function(t,e){var i="GET",n=!1,r=null,o="";e&&(i=e.method||"GET",n=e.sync,o=e.url,r=e.data||null),t.open(i,o,!n),e.responseType?t.responseType=e.responseType:e.overrideMimeType&&t.overrideMimeType&&t.overrideMimeType(e.overrideMimeType),t.send(r)},convertImageSrc:function(t,e){e&&"function"==typeof e||(e=function(){}),e(t)}}),Sl=Gl.Request=function(){this._xhr=new XMLHttpRequest,this._onloadFunc=function(){},this._errorFunc=function(){}},Vs("Request",L,{_responseType:null,_overrideMimeType:"text/plain",send:function(t){var e=this._xhr,i=this.onload,n=this.onerror;this.getResponseType()?t.responseType=this.getResponseType():this.getOverrideMimeType()&&(t.overrideMimeType=this.getOverrideMimeType()),e.onload=i,e.onerror=n,G.fetch(e,t)},onload:function(){},onerror:function(){},getResponseType:function(){return this._responseType},setResponseType:function(t){this._responseType=t},getOverrideMimeType:function(){return this._overrideMimeType},setOverrideMimeType:function(t){this._overrideMimeType=t},getResponseText:function(){var t=this._xhr;return t.response||t.responseText}}),vc.GraphView=function(t){var e=this;e._24I={},e._34I=new Lh,e._25I={},e._56I={},e._view=$n(1,e),e._canvas=er(e._view),e.dm(t||new Nh),this._coreInteractor=new Fl(this),e.setEditable(!1),e.setScrollBarVisible(G.graphViewScrollBarVisible),e._initView()},du("GraphView",L,{ms_v:1,ms_gv:1,ms_bnb:1,ms_tip:1,ms_dm:1,ms_lp:1,ms_fire:1,ms_sm:1,_49o:1,ms_txy:1,_52o:1,_51o:1,ms_ac:[le,ue,he,ce,"resettable","editInteractor",ae,"zoomable","pannable","rectSelectable","autoScrollZone",ye,"movableFunc","editableFunc","pointEditableFunc","rectEditableFunc","rotationEditableFunc","anchorEditableFunc","rectSelectBackground","rectSelectBorderColor","editPointSize","editPointBorderColor","editPointBackground","hoverDelay"],_zoomable:G.graphViewZoomable,_resettable:G.graphViewResettable,_pannable:G.graphViewPannable,_rectSelectable:G.graphViewRectSelectable,_autoScrollZone:G.graphViewAutoScrollZone,_rectSelectBackground:G.graphViewRectSelectBackground,_rectSelectBorderColor:G.graphViewRectSelectBorderColor,_editPointSize:G.graphViewEditPointSize,_editPointBorderColor:G.graphViewEditPointBorderColor,_editPointBackground:G.graphViewEditPointBackground,_scrollBarColor:za,_scrollBarSize:Va,_autoHideScrollBar:xa,_autoMakeVisible:ba,_currentActionType:null,getCoreInteractor:function(){return this._coreInteractor},getLayers:function(){return this._dataModel.getLayers()},setLayers:function(t){this._dataModel.setLayers(t)},setEditable:function(t){var e,i=this,n=i.__interactorMap__;n||(e=vc.XEditInteractor,n=i.__interactorMap__={scrollBar:new Nl(i),select:new kl(i),edit:new(e||Xl)(i),text:new jl(i),move:new lu(i),default:new hu(i),touch:new Ul(i,{editable:!1})}),t?(i._uieditable=!0,i.setInteractors([n.scrollBar,n.select,n.edit,n.text,n.move,n.default,n.touch])):(i._uieditable=!1,i.setInteractors([n.scrollBar,n.select,n.move,n.default,n.touch]))},getCanvas:function(){return this._canvas},_33I:function(t){var e=t.getUIClass();return e?new e(this,t):U},getDataUI:function(t){var e=this._25I[t._id];return e===H&&(e=this._33I(t),this._25I[t._id]=e),e},getNodeRect:function(t){return G.getNodeRect(this,t)},getFullscreenDatas:function(){return this._dataModel.getFullscreenDatas()},getEdgeInfo:function(t){t=this.getDataUI(t);return t?(t._79o(),t._78o):null},getEdgeSourcePosition:function(t){var e=this.getDataUI(t),t=e.s,e=e._data._40I;return sc(this,e,t("edge.source.position"),t("edge.source.offset.x"),t("edge.source.offset.y"),t("edge.source.anchor.x"),t("edge.source.anchor.y"))},getEdgeTargetPosition:function(t){var e=this.getDataUI(t),t=e.s,e=e._data._41I;return sc(this,e,t("edge.target.position"),t("edge.target.offset.x"),t("edge.target.offset.y"),t("edge.target.anchor.x"),t("edge.target.anchor.y"))},invalidateAll:function(t){var e=this;if(t){for(var i in e._25I){var n=e._25I[i];n&&n.dispose()}e._25I={},e._56I={},e._24I={},e._34I.clear(),e.redraw()}else e.dm().each(function(t){e.invalidateData(t)})},invalidateSelection:function(){var e=this;e.sm().each(function(t){e.invalidateData(t)})},invalidateData:function(t){this._24I[t._id]=t,this._21Q(t),this.iv()},_21Q:function(t){var e,i=this._24I;En(t)&&Ni[t.s(Jt)]&&((e=t.getSourceAgent())&&e.getAgentEdges().each(function(t){i[t._id]=t}),(e=t.getTargetAgent())&&e.getAgentEdges().each(function(t){i[t._id]=t}),this.iv())},redraw:function(t){this._32I||(t?this._34I.add(t):(this._32I=1,this._34I.clear()),this.iv())},each:function(e,i){var t,n,r=0,o=this.getLayers(),a=this._dataModel,s=a._datas._as,h=s.length;if(o){for(var c=o.length;ra+f&&s.tx(-(o.x+o.width-f)*l),o.y+o.heightd+b&&s.ty(-(o.y+o.height-b)*l))),delete s._23I),s._83I&&(delete s._83I,delete s._84I),s._98O(),s.countFrame(),zn(s._24I)||$a(s.iv,s)},isValidGuideLineSource:function(){return!0},tryUpdateRootData:function(){if(!this._rootDataUpdating){this._rootDataUpdating=!0;var t,e,i=this.getFullscreenDatas();for(e in i)t=i[e],this.scaleRootData(t);this._rootDataUpdating=!1}},scaleRootData:function(t){var e=t.s("fullscreen");if("uniform"===e||"fill"===e){t.getRotation()&&t.setRotation(0);var i=t.s("fullscreen.gap")||0,n=this.getWidth(),r=this.getHeight();if(n&&r){var o,a,s=n-2*i,h=r-2*i,c=t.getAnchor(),l=t.getScaledSize(),n=l.width,r=l.height,l=t.s("fullscreen.lock");if(l)return"uniform"===e?n/r=La?(delete t._85I,t.iv()):w(function(){t._86I()},La))},getVScrollBar:function(){return this._27I},getHScrollBar:function(){return this._28I},_98O:function(){var t=this._27I,e=this._28I;if(this._79O){if(this._autoHideScrollBar&&!this._85I)return t.style.visibility=te,void(e.style.visibility=te);var i=this.getScrollBarColor(),n=this._zoom,r=this.getScrollBarSize(),o=this.getViewRect(),a=this.getScrollRect(),s=o.height*n,h=a.height*n,c=o.width*n-r-2,l=s*((o.y-a.y)*n/h),u=s/h*s,d=t.style;sl.x||c.x===l.x&&c.y>l.y)&&(t=Lo[t],i=-i),(u=Fo(t,o.rect,n)).x+=e,u.y+=i,(u=o.mat.tf(u)).x+=o.origin.x,u.y+=o.origin.y,u);if(h&&h[re])return h.getPosition?h.getPosition(this,t,e,i,n,r):{x:(c.x+l.x)/2,y:(c.y+l.y)/2};if(s){var u,d=s.size();if(Wh[t]){if(d){if(0===(f=d%2))return gc(s.get(d/2-1),s.get(d/2),t,e,i,n,r);u=s.get((d-f)/2)}else u={x:(c.x+l.x)/2,y:(c.y+l.y)/2};return(u=Fo(t,{x:u.x,y:u.y,width:0,height:0},n)).x+=e,u.y+=i,u}return Hh[t]?gc(c,d?s.get(0):l,t,e,i,n,r):gc(d?s.get(d-1):c,l,t,e,i,n,r)}if(h){var f,h=h.points,d=h.size();return Wh[t]?0===(f=d%2)?gc(h.get(d/2-1),h.get(d/2),t,e,i,n,r):(u=h.get((d-f)/2),(u=Fo(t,{x:u.x,y:u.y,width:0,height:0},n)).x+=e,u.y+=i,u):Hh[t]?gc(h.get(0),h.get(1),t,e,i,n,r):gc(h.get(d-2),h.get(d-1),t,e,i,n,r)}}return Ji},_42:function(t){this._78o&&tu.superClass._42.call(this,t)},drawPath:function(e,t){e.beginPath();var i,n,r,o,a=t.type,s=t.points,h=t.segments,c=t.edgeTypeInfo;!a||s?(i=(r=t.sourcePoint).x,n=r.y,r=(o=t.targetPoint).x,o=o.y,a?h?((a=new Lh({x:i,y:n})).addAll(s),a.add({x:r,y:o}),ao(e,a,h)):(e.moveTo(i,n),s.each(function(t){e.lineTo(t.x,t.y)}),e.lineTo(r,o)):t.looped?e.arc(i,n,t.radius,0,J,!0):t.center?(e.moveTo(t.c1.x,t.c1.y),e.lineTo(i,n),e.lineTo(r,o),e.lineTo(t.c2.x,t.c2.y)):(e.moveTo(i,n),e.lineTo(r,o))):c&&(c.points?ao(e,c.points,c.segments):c[re]&&c[re](e,c))},_80o:function(t){var e=this.s,i=this._78o,n=i.width,r=i.selectWidth,o=i.borderWidth,a=i.repeatImage,s=t.lineJoin,h=t.lineCap,c=i.gray,l=i.pattern;t.lineJoin=i.join,t.lineCap=i.cap,this.drawPath(rh(t,l),i);var u=e("edge.width.absolute");u&&(t.save(),t.setTransform(1,0,0,1,0,0)),r&&(t.strokeStyle=i._97o,t.lineWidth=n+2*(o+r),t.stroke()),o&&(t.strokeStyle=c?G.toGrayColor(i.borderColor):i.borderColor,t.lineWidth=n+2*o,t.stroke());var d,o=c?G.toGrayColor(i.color):i.color;a?po(t,a,o,null,this._data,this.gv):t.strokeStyle=o,t.lineWidth=n,t.stroke(),i.is3d&&(d=c?G.toGrayColor(i._67o):i._67o,ho(t,o,d,n,this.gv._zoom,i._66o)),oh(t,l),e("edge.dash")&&(l=e("edge.dash.pattern"),(d=rh(t,l,this._2Q("edge.dash.offset")))!==t&&this.drawPath(d,i),this._1Q(t,"edge",e("edge.dash.width")||n,l)),u&&t.restore(),t.lineJoin=s,t.lineCap=h},_48O:function(){},_47O:function(){}}),zs(Ml=function(t,e){Bn(Ml,this,[t,e])},iu,{_3O:function(){var e,i,t,n,r,o,a,s,h,c,l=this.s,u=this._data,d=this.gv;this._88I=U,u.isExpanded()&&u.eachChild(function(t){!wn(t)||(t=d.getBoundsForGroup(t))&&((i=i||[]).push(t),e=bs(e,t))}),e?(s=d.getLabel(u),a=l("group.type"),n=(t=l("group.border.width")||0)/2,l("group.border.width.absolute")&&(t/=d._zoom),e=_c(a,i,e),ic(e,u,"group.padding",1),Is(e,t),r=this._88I={type:a,rect:e,_64o:e},a||s==U||(o=this.labelInfo={label:s,color:l("group.title.color"),font:l("group.title.font"),align:l("group.title.align")},u=(h=ar(o,s)).width+t,a=h.height+t,s=l("group.title.align"),(h=l("group.title.orientation"))===ct||h===lt?(e.height+=t,u>e.width&&(e.width=u)):h!==st&&h!==ht||(e.width+=t,u>e.height&&(e.height=u)),s=s===st?e.x:s===ht?e.x+e.width-u:e.x+e.width/2-u/2,h===lt?(r.titleRect={x:e.x,y:e.y+e.height,width:e.width,height:a},r.rect={x:e.x,y:e.y,width:e.width,height:e.height+a},o.rect={x:s,y:e.y+e.height,width:u,height:a}):h===st?(c=r.titleRect={x:e.x-a,y:e.y,width:a,height:e.height},r.rect={x:e.x-a,y:e.y,width:e.width+a,height:e.height},o.rect={x:c.x+a/2-e.height/2,y:c.y+e.height/2-a/2,width:e.height,height:a},o.rotation=-Math.PI/2):h===ht?(c=r.titleRect={x:e.x+e.width,y:e.y,width:a,height:e.height},r.rect={x:e.x,y:e.y,width:e.width+a,height:e.height},o.rect={x:c.x+a/2-e.height/2,y:c.y+e.height/2-a/2,width:e.height,height:a},o.rotation=Math.PI/2):(r.titleRect={x:e.x,y:e.y-a,width:e.width,height:a},r.rect={x:e.x,y:e.y-a,width:e.width,height:e.height+a},o.rect={x:s,y:e.y-a-n,width:u,height:a+t})),this._40O(r,l("group.border.width")/2)):Ml.superClass._3O.call(this)},getPosition:function(t,e,i,n){var r=this._88I;if(r){n=Fo(t,r.rect,n);return n.x+=e,n.y+=i,n}return Ml.superClass.getPosition.apply(this,arguments)},_24O:function(t,e){var i=this._88I;i&&!i.type&&"label2"!==t||Ml.superClass._24O.call(this,t,e)},_80o:function(t){var e=this._88I;if(e){var i=this._data,n=this.s,r=this.gv,o=e.type,a=e.rect,s=e._64o,h=e.titleRect,c=this.getBodyColor(),l=Qa(n("group.image"),c),u=n("group.image.stretch"),d=this.getBodyColor("group.background"),f=Qa(n("group.repeat.image"),c),g=n("group.gradient.pack"),p=n("group.gradient"),_=n("group.gradient.color"),v=n("group.border.width"),y=n("group.border.color"),m=n("group.border.pattern"),b=n("group.title.orientation"),x=n("group.depth"),w=n("group.border.radius"),E=n("group.border.join"),T=n("group.border.cap");n("group.border.width.absolute")&&(v/=r._zoom);var S=y,I=n("group.border.repeat.image");if((I=I&&Qa(I,y))&&(S=_o(t,I,y,null,i,r)),o){var y=t.lineJoin,C=t.lineCap;t.lineJoin=E,t.lineCap=T,l?(t.save(),uo(t,o,a,w),t.clip(),Ka(t,l,u,a.x,a.y,a.width,a.height,i,r,c),t.restore(),0s&&(s=e("shape.dash.width")),(a=e("shape.border.width.absolute")?(s+o+a)/this.gv._zoom/c:s*("square"===i._61o?.71:.5)+o+a/this.gv._zoom/c)&&(a*=c,h=is(h),eo(h,a,i._62o)),this._68o(h),(h=e("clip.percentage"))<1&&(h<0&&(h=0),i.clipRect=Wn(t.getAnchorRect(),e("clip.direction"),h)),(h=e("shape.fill.clip.percentage"))<1&&(h<0&&(h=0),i.shapeClipRect=Wn(t.getAnchorRect(),e("shape.fill.clip.direction"),h)),(h=e("shape.foreground.clip.percentage"))<1&&(h<0&&(h=0),i.shapeForegroundClipRect=Wn(t.getAnchorRect(),e("shape.foreground.clip.direction"),h)))},getPosition:function(t,e,i,n){var r=this._99o;if(r){n=Fo(t,r.rect,n);return n.x+=e,n.y+=i,n}return Ji},_42:function(t){this._99o&&au.superClass._42.call(this,t)},_80o:function(t){function e(t){return b?G.toGrayColor(t):t}var i,n=this,r=n.s,o=n._99o,a=o.position,s=o.scale,h=o.rotation,c=o.borderWidth,l=o.selectWidth/n.gv._zoom,u=o._27Q,d=o.shapeGradientPack,f=o._54o,g=o.clipRect,p=o.shapeClipRect,_=o.points,v=o.segments,y=n._data.isClosePath(),m=o.fillRule,b=o.gray,x=e(o._53o),w=x||u||d;t.save(),pr(t,a.x,a.y),_r(t,h),vr(t,s.x,s.y),g&&(t.beginPath(),t.rect(g.x,g.y,g.width,g.height),t.clip()),w&&p&&(t.save(),t.beginPath(),t.rect(p.x,p.y,p.width,p.height),t.clip()),pr(t,-a.x,-a.y);var E=o._60o,T=rh(t,E),h=t.lineJoin,s=t.lineCap;t.lineJoin=o._62o,t.lineCap=o._61o;g=e(o.bodyColor);w?(ao(t,_,v,y),d?ro(t,d,function(t){return Jr(t,o.bodyColor)}):u?go(t,u,g,null,n._data,n.gv):fo(t,i=g||x,o.shapeGradient,e(o._59o),o.gradientRect),t.fill(m),d&&t.restore(),p&&(t.restore(),pr(t,-a.x,-a.y)),T!==t&&ao(T,_,v,y)):ao(T,_,v,y);d=o.shapeForeground;d&&(t.save(),(p=o.shapeForegroundClipRect)&&(pr(t,a.x,a.y),t.beginPath(),t.rect(p.x,p.y,p.width,p.height),t.clip(),pr(t,-a.x,-a.y)),ao(t,_,v,y),fo(t,d,r("shape.foreground.gradient"),e(r("shape.foreground.gradient.color")),o.gradientRect),t.fill(m),t.restore());var S,m=r("shape.border.width.absolute");m&&(t.save(),t.setTransform(1,0,0,1,0,0)),l&&(t.strokeStyle=o._97o,t.lineWidth=f+2*(c+l),t.stroke()),c&&(t.strokeStyle=e(o.borderColor),t.lineWidth=f+2*c,t.stroke()),f&&(i=e(o._55o),o.shapeBorderRepeatImage?po(t,o.shapeBorderRepeatImage,i,null,n._data,n.gv):(!x&&g&&(i=g),t.strokeStyle=i),t.lineWidth=f,t.stroke(),o._94o&&ho(t,i,e(o._95o),f,n.gv._zoom,o._96o)),oh(t,E),r("shape.dash")&&0<(S=r("shape.dash.width")||f)&&(E=r("shape.dash.pattern"),(T=rh(t,E,n._2Q("shape.dash.offset")))!==t&&ao(T,_,v,y),n._1Q(t,"shape",S,E)),m&&t.restore(),t.lineJoin=h,t.lineCap=s,t.restore()},_48O:function(){},_47O:function(){}}),zs(Al=function(t,e){Bn(Al,this,[t,e])},au,{getRotation:function(t,e,i){t=t||0;var n=this._data.getPoints(),r=n.size();return 1e.x||t.y>e.y},clear:function(t){var e,i,n=this,r=n.gv,o=n.mark;n._57I=U,n.pendingClickThrough=U,n._lastLogicalPoint&&(o&&(0!==o.width&&0!==o.height&&((o=r.getDatasInRect(o,n.intersects())).isEmpty()||(e=r.sm(),i=e.toSelection(),o.each(function(t){e.co(t)?i.remove(t):i.add(t)}),e.ss(i))),As(n.div),delete n.div,delete n.mark,n.redraw(),n.fi({kind:"endRectSelect",event:t}),r.onRectSelectEnded()),n.clearDragging(),delete r._77O)},redraw:function(){var t=this;t._draw||(t._draw=1,w(function(){t.mark&&t._42(),delete t._draw},16))}}),lu=vc.MoveInteractor=function(t){Bn(lu,this,[t])},du("MoveInteractor",ql,{handle_mousedown:function(t){var e,i=this.gv;!cs(t)||i._editing||i._scrolling||Hr()||(!(e=i.getSelectedDataAt(t))||i._39Q(e)&&!i.isMovable(e)?i._focusData=U:(this._data=e,i.handleMouseDown&&i.handleMouseDown(t,e),this.startDragging(t),i.isMovable(e)&&(i._moving=1)))},handleWindowMouseUp:function(t){var e=this.gv;e.handleMouseUp&&e.handleMouseUp(t,this._data),this.clear(t)},handleWindowMouseMove:function(t){var e,i,n,r,o=this,a=o._data,s=o.gv;s._93O&&s._93O(t,a)||!s._moving||(o._logicalPoint||o.fi({kind:"prepareMove",event:t}),e={kind:n=o._logicalPoint?"betweenMove":"beginMove",event:t},i=o._logicalPoint=s.lp(t),"beginMove"!=n||o._alreadyBeginTransaction||(o._alreadyBeginTransaction=!0,s.getDataModel().beginTransaction()),n=(r=o._calcShift(n,t)).x,r=r.y,(a=o.gv.getMoveMode(t,a))&&("x"===a?r=0:"y"===a?n=0:"xy"!==a&&(n=r=0)),s.moveSelection(n,r),o._lastLogicalPoint=i,o.autoScroll(t),o.fi(e))},_calcShift:function(){var t=this._logicalPoint,e=this._lastLogicalPoint;return{x:t.x-e.x,y:t.y-e.y}},clear:function(t){var e=this.gv;this._lastLogicalPoint&&(this._lastLogicalPoint=this._data=e._moving=U,this._logicalPoint&&(this.fi({kind:"endMove",event:t}),e.onMoveEnded()),this.clearDragging()),this._alreadyBeginTransaction&&(this._alreadyBeginTransaction=!1,e.getDataModel().endTransaction())}}),jl=vc.TextEditInteractor=function(t){Bn(jl,this,[t]),this.init()},du("TextEditInteractor",ql,{init:function(){var i=this,t=this.input=d.createElement("input"),e=t.style;t.text="text",e.border="1px solid #d8d8d8",e.position="absolute",e.padding="2px 3px",e.outline="none",e.marginLeft="-90px",e.marginTop="-16px",e.backgroundColor="rgba(255,255,255, 0.9)",e.fontSize="14px",e.width="180px",e.height="32px",e.boxShadow="0 0 13px rgba(16,142,233, 0.5)",e.textAlign="center",e.boxSizing="border-box",g(t,"keyup",function(t){Wr(t)&&i.endTextEdit()}),g(t,"focus",function(){t.select()});var n=this.textarea=d.createElement("textarea"),r=this.wrap=d.createElement("div");r.appendChild(n),(e=n.style).margin=0,e.padding="4px",e.overflow="hidden",e.boxSizing="border-box",e.position="absolute",e.outline="none",e.backgroundColor="transparent",e.resize="none",e.textAlign="center",e.fontSize="14px",e.border="none",e.borderWidth=0,e.width="100%",e.top="50%",(e=r.style).boxSizing="border-box",e.margin=0,e.padding=0,e.position="absolute",e.boxShadow="0 0 13px rgba(16,142,233, 0.5)",e.border="1px solid #d8d8d8",e.backgroundColor="rgba(255,255,255, 0.9)",e.width="180px",e.marginLeft="-90px",g(n,"keydown",function(t){return(gs()||ps())&&Wr(t)?void i.endTextEdit():void i.calculateTextareaHeight(String.fromCharCode(t.keyCode))}),g(n,"focus",function(){n.select()});e=function(t){t.stopPropagation()};g(t,"mousedown",e),g(t,"touchstart",e),g(n,"mousedown",e),g(n,"touchstart",e),i.SIZING_STYLE=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"],i.HIDDEN_TEXTAREA_STYLE="visibility:hidden; min-height:0 !important;max-height:none !important;height:0 !important;visibility:hidden !important;overflow:hidden !important;position:absolute !important;z-index:-1000 !important;top:0 !important;right:0 !important",i.handleWindowClick=function(t){var e=i._editingDOM;e&&(e=e.getBoundingClientRect(),t=_s(t),xs(e,t)||i.endTextEdit())}},handle_mousedown:function(t){var e,i=this.gv;fs(t)&&!i._editing&&(!(e=i.getDataAt(t))||(t=i.getTextEditInfo(e))&&(this._editInfo=t,this._editTarget=e,i._editing=!0,t.isMultiline?this.handleMultilineEdit():this.handleTextEdit()))},handleMultilineEdit:function(){var t=this,e=t.gv,i=t._editTarget,n=t.getTargetValue(),r=t.textarea,o=t.wrap;this.hiddenTextarea||this.createHiddenTextarea(),null!==n&&n!==H||(n=""),r.value=n,t._editingDOM=r,e.getView().appendChild(o),this.layoutHTML(o,i),this.calculateTextareaHeight(),w(function(){r.focus(),g(C,"mousedown",t.handleWindowClick),g(C,"touchstart",t.handleWindowClick)},10)},handleTextEdit:function(){var t=this,e=t.gv,i=t._editTarget,n=t.getTargetValue(),r=t.input;null!==n&&n!==H||(n=""),r.value=n,t._editingDOM=r,e.getView().appendChild(r),this.layoutHTML(r,i),w(function(){r.focus(),g(C,"mousedown",t.handleWindowClick),g(C,"touchstart",t.handleWindowClick)},10)},layoutHTML:function(t,e){var i,n=this.gv,r=n.getZoom();e instanceof Gl.Node?(i=e.getRect(),t.style.left=(i.x+i.width/2)*r+n.tx()+"px",t.style.top=(i.y+i.height/2)*r+n.ty()+"px"):e instanceof Gl.Edge&&(i=n.getDataUI(e)._6I,t.style.left=(i.x+i.width/2)*r+n.tx()+"px",t.style.top=(i.y+i.height/2)*r+n.ty()+"px")},endTextEdit:function(){var t=this,e=t._editInfo.isMultiline?t.wrap:t.input,i=t._editInfo.isMultiline?t.textarea:t.input;t.setTargetValue(i.value),t.gv.getView().removeChild(e),t.gv._editing=!1,delete t._editingDOM,p(C,"mousedown",t.handlelick),p(C,"touchstart",t.handleWindowClick)},setTargetValue:function(t){var e=this._editTarget,i=this._editInfo,n=i.accessType,i=i.name;i&&n||(n="p",i="name"),"p"===n?e[Gl.Default.setter(i)](t):"a"===n?e.a(i,t):e.s(i,t)},getTargetValue:function(){var t=this._editTarget,e=this._editInfo,i=e.accessType,e=e.name;return e&&i||(i="p",e="name"),"p"!==i?"a"===i?t.a(e):t.s(e):t[Gl.Default.getter(e)]()},createHiddenTextarea:function(){this.hiddenTextarea=d.createElement("textarea"),this.hiddenTextarea.setAttribute("style","margin:0; padding:0; position:absolute; overflowY:scroll; resize:none; box-sizing:border-box;"),this.hiddenTextarea.setAttribute("rows","1"),this.gv.getView().appendChild(this.hiddenTextarea)},calculateHTMLStyle:function(t,e){if(e&&this.computedStyleCache)return this.computedStyleCache;var i=C.getComputedStyle(t),n=i.getPropertyValue("box-sizing")||i.getPropertyValue("-moz-box-sizing")||i.getPropertyValue("-webkit-box-sizing"),r=parseFloat(i.getPropertyValue("padding-bottom"))+parseFloat(i.getPropertyValue("padding-top")),t=parseFloat(i.getPropertyValue("border-bottom-width"))+parseFloat(i.getPropertyValue("border-top-width")),n={sizingStyle:this.SIZING_STYLE.map(function(t){return t+":"+i.getPropertyValue(t)}).join(";"),paddingSize:r,borderSize:t,boxSizing:n};return e&&(this.computedStyleCache=n),n},calculateTextareaHeight:function(t){t=t||"";var e=this.textarea,i=this.hiddenTextarea,n=this.wrap,r=this.calculateHTMLStyle(e,!1),o=r.paddingSize,a=r.borderSize,s=r.boxSizing,r=r.sizingStyle;i.setAttribute("style",r+";"+this.HIDDEN_TEXTAREA_STYLE),i.value=e.value+t;i=i.scrollHeight;"border-box"===s?i+=a:"content-box"===s&&(i-=o),e.style.height=i+"px",e.style.marginTop=0-.5*i+"px",n.style.height=Math.max(i,32)+"px",n.style.marginTop=-.5*i+"px"}}),Nl=vc.ScrollBarInteractor=function(t){Bn(Nl,this,[t])},du("ScrollBarInteractor",ql,{_41o:function(){return this.gv.getViewRect().height')+")"+a,r+="cursor:-webkit-image-set(url("+o+")"+devicePixelRatio+"x,url("+o+")1x)"+a),(a=d.createElement("style")).textContent="body."+t+" *, ."+t+"{"+r+"}",d.head.appendChild(a)},(Iv=Hl.Guide.Grid=function(t){this._interactor=t,this._alignmentGuideId=0,this._xAlignmentGuide=[],this._yAlignmentGuide=[]}).prototype={},Iv.prototype.constructor=Iv,L.defineProperties(Iv.prototype,{gridBlockSize:{get:function(){return this._gridBlockSize||this._interactor.getStyle("gridBlockSize")},set:function(t){this._gridBlockSize=t,this._interactor._42()}},gridThickLinesEvery:{get:function(){return this._gridThickLinesEvery||this._interactor.getStyle("gridThickLinesEvery")},set:function(t){this._gridThickLinesEvery=t,this._interactor._42()}},gridEnabled:{get:function(){return this._interactor.gridEnabled&&this.isValidGrid()}}}),Iv.prototype._42=function(){var t=this._interactor;this.gridEnabled&&this.drawGrid(),t.alignmentGuideEnabled&&this.drawAlignmentGuide()},Iv.prototype.makeMatrix=function(){var t=this._interactor.getStyle("gridAngle"),e=this._interactor.getStyle("gridRotation"),i=new Hl.Math.Matrix2d,n=Math.sin(t),t=Math.cos(t);return i.set(1,0,t,n,0,0),i.rotate(e),i},Iv.prototype.isValidGrid=function(){var t=Math.PI,e=this._interactor;if(e.gv._zoom=i.x&&p.y>=i.y&&p.x<=n.x&&p.y<=n.y&&d.push(p))}return d},Iv.prototype.solveTForPoint=function(t){for(var e=this._p1.x-t.x,i=this._p2.x-t.x,n=this._p3.x-t.x,r=this._p4.x-t.x,o=this.getRoots(r-3*n+3*i-e,3*n-6*i+3*e,3*i-3*e,e),a=H,s=1/0,h=0,c=o.length;hMath.PI&&(p-=2*Math.PI);var g=(p/Math.PI*180).toFixed(2)+"°"}else if("resize"===h){var p,_=n.rect,v=_.x,y=_.y,m=_.width,u=_.height,d=n.anchor,b=n.matrix,x=a.s&&a.s("keepAspectRatio")||l.getStyle("keepAspectRatio");gs(t)&&(x=!x);var w,E,T=i._unionPointMode1,f=i._unionPointMode2;!i._inSmartGuide||Gl.Default.isCtrlDown(t)||x||("L"===s||"R"===s?w="x":"T"!==s&&"B"!==s||(w="y"),i._adsorbedToClosest(c,w),o=!0),p=b.tfi(c),"LT"===s?(_=T(p,{x:v+m,y:y+u},m,u,x),E=9):"T"===s?(_=f({x:v,y:p.y},{x:v+m,y:y+u},m,u,x,"v"),E=1):"RT"===s?(_=T(p,{x:v,y:y+u},m,u,x),E=33):"L"===s?(_=f({x:p.x,y:y},{x:v+m,y:y+u},m,u,x,"h"),E=8):"R"===s?(_=f({x:v,y:y},{x:p.x,y:y+u},m,u,x,"h"),E=32):"LB"===s?(_=T(p,{x:v+m,y:y},m,u,x),E=12):"B"===s?(_=f({x:v,y:y},{x:v+m,y:p.y},m,u,x,"v"),E=4):"RB"===s&&(_=T(p,{x:v,y:y},m,u,x),E=36);d=b.tf(_.x+_.width*d.x,_.y+_.height*d.y);a instanceof Gl.Block&&(n.hasOwnProperty("freezeFlag")||(n.freezeFlag=a._freezeSyncFromChildren,a._freezeSyncFromChildren=!0)),a.setPosition(d),a.setSize(_.width,_.height),o&&(r=a.getRect(),l.rectGuide.gatherLines({node:a,x:r.x,y:r.y,w:r.width,h:r.height},w,E)),g=Math.round(_.width)+" * "+Math.round(_.height)}else if("line"===h){if(gs(t)){var h=a.getPoints(),h="P1"===s?h.get(1):h.get(0),S=c.x-h.x,I=c.y-h.y,C=l.getStyle("shiftLineRotateRound"),M=i._shiftDirList;if(!M||i._shiftRotateRound!==C){i._shiftRotateRound=C,i._shiftDirList=M=[];for(var R=0;RMath.abs(P)&&(P=z,A=B)}c={x:h.x+A.x*P,y:h.y+A.y*P},l.rectGuide.clear()}else i._inSmartGuide&&!Gl.Default.isCtrlDown(t)&&(i._adsorbedToClosest(c),o=!0);c=Hl.getDataMatrix(a).applyInverse(c);a.setPoint("P1"===s?0:1,c,!0);s=a.getPoints(),c=s.get(0),s=s.get(1);v=c.x-s.x,y=c.y-s.y,g=" "+Math.round(Math.sqrt(v*v+y*y))+" ",o&&(r=a.getRect(),l.rectGuide.gatherLines({node:a,x:r.x,y:r.y,w:r.width,h:r.height}))}g&&((l=Gl.Default.getLogicalPoint(t,l._canvas)).x+=Hl.Icons.TipShiftX,l.y+=Hl.Icons.TipShiftY,i.tipInfo={helperPos:l,text:g,size:g.length}),i._fireEditEvent("between",t)}},Gv.prototype._unionPointMode1=function(t,e,i,n,r){var o;return r&&i&&n&&(o=t.x-e.x,r=t.y-e.y,Math.abs(o*n)1+n||i.y<-n||i.y>1+n)return!0;n=e.getSize(),e=e.getScale();if(Math.min(Math.abs(n.width*e.x),Math.abs(n.height*e.y))*t.gv._zoomthis.screenInfo.size)){t=this._interactor;return this.selectedTarget=this.getMovableTarget(t.getSubModule("Rect").target),t.setCursor("default"),!0}}},Gv.prototype._42=function(t,e,i){this.screenInfo={};var n=this._interactor;n.editDetail||!this.gatherInfo(e,i)||n.editing&&!this.selectedTarget||Hl.Icons.DrawIcon(n,t,Hl.Icons.MoveDummy,this.screenInfo)},(Gv=Hl.RotateX=function(t){this.catalog="RotateX",this._interactor=t}).prototype={},(Gv.prototype.constructor=Gv).prototype.gatherInfo=function(t,e){if(1!==e.length)return 1Math.PI&&(c-=2*Math.PI),h=(c/Math.PI*180).toFixed(2)+"°",(c=Gl.Default.getLogicalPoint(t,r._canvas)).x+=Hl.Icons.TipShiftX,c.y+=Hl.Icons.TipShiftY,this.tipInfo={helperPos:c,text:h,size:h.length},r.fi({kind:"betweenEditRotation",event:t}))},Gv.prototype._42=function(t,e,i){var n=this;n._clockPainted=!1,n.info={},n.screenInfo={};var r=n._interactor;r.editDetail||n.gatherInfo(e,i)&&n.isVisible()&&(Hl.Icons.DrawIcon(r,t,Hl.Icons.RoundPoint,n.screenInfo.POS),n.tipInfo&&Hl.Icons.DrawIcon(r,t,Hl.Icons.TipHelper,n.tipInfo),n.editing&&n.drawClock(t))},Gv.prototype.drawClock=function(t){t.save();this._clockPainted=!0;var e=this.editing||{},i=e.screenInfo||this.screenInfo,n=i.LEN,r=n+8,o=n+18;t.save(),t.translate(i.CENTER.x,i.CENTER.y),t.beginPath(),t.strokeStyle="rgb(150, 150, 150)";for(var a,s,h,c,l,u=0;u<360;u++)a=u*Math.PI/180,0==u%5&&(s=Q(a)*n,h=Z(a)*n,c=Q(a)*r,l=Z(a)*r,t.moveTo(s,h),t.lineTo(c,l)),0==u%45&&(s=Q(a)*n,h=Z(a)*n,c=Q(a)*o,l=Z(a)*o,t.moveTo(s,h),t.lineTo(c,l));t.stroke(),t.rotate(-I);e=e.lastRotation||this.target.getRotation();t.beginPath(),t.fillStyle="rgba(255, 0, 0, 0.1)",t.strokeStyle="rgb(157, 157, 157)",t.moveTo(0,0),t.arc(0,0,o,0,e,!1),t.fill(),t.beginPath(),t.moveTo(0+o,0),t.arc(0,0,o,0,e,!1),t.stroke(),t.restore()},(du=Hl.Curve=function(t){this.catalog="Curve",this._interactor=t}).prototype={},du.prototype.constructor=du,L.defineProperties(du.prototype,{activing:{get:function(){return this._activing},set:function(t){t?(this._activing=new Hl.CurveActiving(this,t),this._activing._firePointChange()):((t=this._activing)&&t.dispose(),this._activing=null)}}}),du.PointType={Mirrored:0,Straight:1,Disconnected:2,Asymmetric:3},du.prototype.setUp=function(){var t=this._interactor;t&&t.gv.mp(this._onGraphviewPropertyChanged,this)},du.prototype._onGraphviewPropertyChanged=function(t){"zoom"!==t.property&&"translateX"!==t.property&&"translateY"!==t.property||this._handleDataChanged()},du.prototype.tearDown=function(){var t=this._interactor;t&&t.gv.ump(this._onGraphviewPropertyChanged,this)},du.prototype.canEnterEditDetailMode=function(){var t=this._interactor,e=t._getValidSelection();if(1===e.length){var i=e[0],e=i instanceof Gl.Edge;if(i instanceof Gl.Shape||e){if(e){e=i.s("edge.type");if(e&&"points"!==e)return}t=t.gv;if(t.isPointEditable(i)&&t.isEditable(i))return this.target=i,!0}}},du.prototype.canQuitEditDetailMode=function(t){var e=this._interactor._getLogicalPoint(t);return!this._checkEditRealPoint(e)&&this._interactor.gv.getDataAt(t)!==this.target||void 0},du.prototype.preHandleScroll=function(){var t=this.editing;return!(!t||!t.inEdit)||void 0},du.prototype.getCurrentSelectintStatus=function(){var i=this;if(i.activing&&!i.activing.selections){if(i.activing.status!=H)return i.activing.status;var t=function(t){var e=i.activing.status;i.activing.status=t,i._interactor.fp("shapePointStatus",e,t)},e=Hl.Curve.PointType,n=i.activing.point,r=i.activing.pairs;if(!r||1!==r.length)return t(e.Mirrored);var o=r[0],a=o.c1&&o.c1.isNearEnough(n),r=o.c2&&o.c2.isNearEnough(n);if(!o.c1||!o.c2)return t(a||r?e.Straight:e.Disconnected);if(a&&r)return t(e.Straight);if(a||r)return t(e.Asymmetric);r=o.c1.clone().sub(n),n=o.c2.clone().sub(n);return 1e-5o.limit&&"y"===o.dir&&(o.dir="x"),so.limit&&"x"===o.dir&&(o.dir="y"),"x"===(r=o.dir)?(x.y=a.y,o.limit=Math.max(o.limit,s)):"y"===r&&(x.x=a.x,o.limit=Math.max(o.limit,h))),(h=E._isEditEdgeSourceTarget())?(h=E._editEdgeSourceTarget(h,x,c))&&(w=(E.edgeEditResult=h).tipText):c||(_=E._guidingToEdit(x,r),g=c=1/0,(p="realPoint"===i?E._interactor.gridGuide.findClosest(x,r,!0):null)&&(p.x&&(c=p.x),p.y&&(g=p.y)),p=!1,_&&(_.xList&&(Math.abs(_.x)<=Math.abs(c)?(p=!0,c=_.x):delete _.xList),_.yList&&(Math.abs(_.y)<=Math.abs(g)?(p=!0,g=_.y):delete _.yList),p&&(E._guideInfo=_)),isFinite(c)&&(x.x+=c),isFinite(g)&&(x.y+=g),p&&(_.v=x))),l=E.screenInfo.curve,"realPoint"===T.type?((m=T.point).e!==H&&(x.e=m.e),l.moveRealPoint(m,x),T.point=x,E.highlight.point=x,v=n.status,u=n.selections,E.activing={point:x,status:v},u&&(d=x.clone().sub(m),f=0,u.forEach(function(t){var e=t.clone().add(d);l.moveRealPoint(t,e),u[f++]=e}),E.activing.selections=u)):"ctrlPoint"===T.type?(g=n.pairs[T.pairId],l.moveCtrlPoint(g,x,T.ctrlType),((p=n.status)===(_=Hl.Curve.PointType).Mirrored||p===_.Asymmetric)&&g.c1&&g.c2&&(m=new Hl.Math.Vector2(n.point),v="c1"===T.ctrlType?"c2":"c1",p===Hl.Curve.PointType.Mirrored?l.moveCtrlPoint(g,m.clone().multiplyScalar(2).sub(x),v):p===_.Asymmetric&&(y=g[v].clone().sub(m).length(),m=m.clone().sub(g[T.ctrlType]).setLength(y).add(m),isNaN(m.x)||l.moveCtrlPoint(g,m,v))),n._firePointChange()):"elevation"===T.type&&(b=(a=T.startPoint).e+(a.y-x.y)/t._zoom,E._setCurrentPointImpl("e",b),n._firePointChange(),w="E: "+Hl.toFixed(b)),(b=Gl.Default.getLogicalPoint(e,E._interactor._canvas)).x+=Hl.Icons.TipShiftX,b.y+=Hl.Icons.TipShiftY,w||(x=Hl.toWorldPosition(t,x),w=Hl.toFixed(x.x)+", "+Hl.toFixed(x.y)),E.tipInfo={helperPos:b,text:w,size:w.length},E._writeToHt(),E._interactor.fi({kind:"betweenEditPoint",event:e})));E._handlePanning(e)}},du.prototype._setCurrentPointImpl=function(t,e){var i=this._activing;if(!i)return!1;var n=this.target;if(!n)return!1;var r=i.getCurrentEditingPoint();if(!r)return!1;var o,a,s,h,c,l,u=i.editingCtrl;return u||(o=r.clone()),"e"===t?r.e=e:("x"===t||"y"===t?(a=i._lastFirePoint,a="x"===t?{x:e,y:a?a.y:0}:{x:a?a.x:0,y:e}):"object"==typeof t?(a=t).e!==H&&(r.e=t.e):(a={x:t,y:e},arguments[2]!==H&&(r.e=arguments[2])),e=Hl.getDataMatrix(n),a=Hl.toScreenPosition(this._interactor.gv,e.apply(a)),r.x=a.x,r.y=a.y),u||(s=o.multiplyScalar(-1).add(r),r.e&&o.e&&(s.e=r.e-o.e),(h=this.screenInfo.curve).moveCtrlDueToRealPointMovement(r,s),(c=i.selections)&&(l=0,c.forEach(function(t){var e=t.clone().add(s);isFinite(s.e)&&(e.e=(isFinite(t.e)?t.e:n.getElevation()||0)+s.e),h.moveRealPoint(t,e),c[l++]=e}),i.selections=c)),!0},du.prototype.setCurrentPoint=function(t,e){return!!this._setCurrentPointImpl(t,e)&&(this._writeToHt(),!0)},du.prototype._isEditEdgeSourceTarget=function(){if(!(this.target instanceof Gl.Edge))return!1;var t=this.editing.point,e=this.screenInfo.curve._curves;return t===e[0]._p1?"source":t===e[e.length-1]._p4&&"target"},du.prototype._editEdgeSourceTarget=function(e,t,i){var n=this,r=n.target;if(a="source"===e?r.getSource():r.getTarget()){var o,a,s,h,c,l,u=n._interactor.gv,d=Hl.toWorldPosition(u,t),f=n._calcHostAnchor(r,e,d,a);return!(f.index!==H||f.percent!==H?f.distance*u.getZoom()>n._interactor.getStyle("edgeHostEdgeMaxDistance"):!!n._interactor.getStyle("edgeHostDetectPerFrame")||(f.x<0||1g||"y"===e)&&(n=null),(Math.abs(d)>g||"x"===e)&&(r=null),n||r){g=!1,e={};if(n&&(g=!0,e.xList=n,e.x=u),r&&(g=!0,e.yList=r,e.y=d),g)return e}}},du.prototype._46O=function(t){var e=this;e.editing&&(e.editing=null,e._interactor.fi({kind:"endEditPoint",event:t})),e._guideInfo=null,e._edgeHostGuideInfo=null,e._pan&&(e._pan=null,e._interactor.fi({kind:"endPan",event:t})),e._multiSelect&&(e._handleMultiSelect(e._multiSelect),e._multiSelect=null),e.tipInfo=null,e.edgeEditResult=null},du.prototype._handleMultiSelect=function(t){if(t.startPoint&&t.endPoint){var e,i,n,r=this._interactor,o=r.gv,a=Hl.toScreenPosition(o,t.startPoint),t=Hl.toScreenPosition(o,t.endPoint),s=Gl.Default.unionPoint(a,t),h=this.screenInfo.curve._curves,c=[],l=function(t){t.x>=s.x&&t.y>=s.y&&t.x<=s.x+s.width&&t.y<=s.y+s.height&&c.indexOf(t)<0&&c.push(t)};for(f=0,g=h.length;fe.limit&&"y"===e.dir&&(e.dir="x"),ne.limit&&"x"===e.dir&&(e.dir="y");var o=e.dir;return"x"===o?(t.y=i.y,e.limit=Math.max(e.limit,n)):"y"===o&&(t.x=i.x,e.limit=Math.max(e.limit,r)),t},du.prototype._isAttachableLineShape=function(t){if(!t.getSegments)return!1;var e=t.getSegments();if(!e)return!0;e instanceof Gl.List&&(e=e.getArray());for(var i=1,n=e.length;ithis._interactor.getStyle("attachThreshold")?(t.s({"attach.index":-1}),void t.setHost(null)):(t.s("attach.offset.opposite")&&(h=c-h),t.s({"attach.index":l,"attach.offset":t.s("attach.offset.relative")?h/c:h}),{x:0,y:0})}t=i.calculateAttachPoint(r,e);if(t){i=t.point;return n.attach=t.index,this._calcShiftByAddon(i.x-e.x,i.y-e.y)}}),du.prototype._gatherGridInfo=function(t){var e,i,n=this._interactor,r=n._getValidSelection();if(r.length){if(1===r.length){if(!(e=r[0]).getRect)return void(this._target=null)}else if(!(e=Hl.Group.findOrCreateGroup(r)))return void(this._target=null)}else if((r=n.gv.sm().getSelection()).length&&!(e=r.get(0)).getRect)return void(this._target=null);e&&(i=e.getPosition(),r=e.getRect(),this._target={node:e,x:r.x-i.x,y:r.y-i.y,w:r.width,h:r.height,lp:{x:t.x,y:t.y},pos:{x:i.x,y:i.y},shiftGuide:{dir:"x",limit:0},downPosition:new Hl.Math.Vector2(t)},n.rectGuide.gatherRects())},du.prototype.clear=function(){this._edgeHostGuideInfo=null,this._interactor.rectGuide.clear(),this._interactor._42()},du.prototype._42=function(){var t=this._edgeHostGuideInfo;t&&this._interactor._drawHostGuide(t)},fu=L.freeze({DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047}),gv="undefined"!=typeof WebGL2RenderingContext,pv={aliasedLineWidthRange:fu.ALIASED_LINE_WIDTH_RANGE,aliasedPointSizeRange:fu.ALIASED_POINT_SIZE_RANGE,maxCombinedTextureImageUnits:fu.MAX_COMBINED_TEXTURE_IMAGE_UNITS,maxCubeMapTextureSize:fu.MAX_CUBE_MAP_TEXTURE_SIZE,maxFragmentUniformVectors:fu.MAX_FRAGMENT_UNIFORM_VECTORS,maxRenderBufferSize:fu.MAX_RENDERBUFFER_SIZE,maxTextureImageUnits:fu.MAX_TEXTURE_IMAGE_UNITS,maxTextureSize:fu.MAX_TEXTURE_SIZE,maxVaryingVectors:fu.MAX_VARYING_VECTORS,maxVertexAttribs:fu.MAX_VERTEX_ATTRIBS,maxVertexTextureImageUnits:fu.MAX_VERTEX_TEXTURE_IMAGE_UNITS,maxVertexUniformVectors:fu.MAX_VERTEX_UNIFORM_VECTORS,maxViewportDIMs:fu.MAX_VIEWPORT_DIMS},_v={max3DTextureSize:fu.MAX_3D_TEXTURE_SIZE,maxArrayTextureLayers:fu.MAX_ARRAY_TEXTURE_LAYERS,maxColorAttachments:fu.MAX_COLOR_ATTACHMENTS,maxCombinedFragmentUniformComponents:fu.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,maxCombinedUniformBlocks:fu.MAX_COMBINED_UNIFORM_BLOCKS,maxCombinedVertexUniformComponents:fu.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,maxDrawBuffers:fu.MAX_DRAW_BUFFERS,maxElementIndex:fu.MAX_ELEMENT_INDEX,maxElementsIndices:fu.MAX_ELEMENTS_INDICES,maxElementsVertices:fu.MAX_ELEMENTS_VERTICES,maxFragmentInpuComponents:fu.MAX_FRAGMENT_INPUT_COMPONENTS,maxFragmentUniformBlocks:fu.MAX_FRAGMENT_UNIFORM_BLOCKS,maxFragmentUniformComponents:fu.MAX_FRAGMENT_UNIFORM_COMPONENTS,maxProgramTexelOffset:fu.MAX_PROGRAM_TEXEL_OFFSET,maxSamples:fu.MAX_SAMPLES,maxTextureLODBias:fu.MAX_TEXTURE_LOD_BIAS,maxTransformFeedbackInterleavedComponents:fu.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,maxTransformFeedbackSeparateAttribs:fu.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,maxTransformFeedbackSeparateComponents:fu.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,maxUniformBlockSize:fu.MAX_UNIFORM_BLOCK_SIZE,maxUniformBufferBindings:fu.MAX_UNIFORM_BUFFER_BINDINGS,maxVaryingComponents:fu.MAX_VARYING_COMPONENTS,maxVertexOutputComponents:fu.MAX_VERTEX_OUTPUT_COMPONENTS,maxVertexUniformBlocks:fu.MAX_VERTEX_UNIFORM_BLOCKS,maxVertexUniformComponents:fu.MAX_VERTEX_UNIFORM_COMPONENTS,minProgramTexelOffset:fu.MIN_PROGRAM_TEXEL_OFFSET},gu={for:function(t){var e=t._info;return e||(t._info=e=Cm(t,e)),e}},pu=function(){function t(e,i,t){return{def:e,getter:t?function(t){return 1t/Q(u)&&(s.adjust=!0),s},ku=function(t){var e=t[0],i=t[1],n=t[2],r=t[3],o=t[4],a=t[5],s=t[6],h=t[7],c=t[8],l=t[9],u=t[10],d=t[11],f=t[12],g=t[13],p=t[14],_=t[15],v=e*a-i*o,y=e*s-n*o,m=e*h-r*o,b=i*s-n*a,x=i*h-r*a,w=n*h-r*s,E=c*g-l*f,T=c*p-u*f,S=c*_-d*f,I=l*p-u*g,C=l*_-d*g,M=u*_-d*p,R=v*M-y*C+m*I+b*S-x*T+w*E;return R?(R=1/R,t[0]=(a*M-s*C+h*I)*R,t[1]=(n*C-i*M-r*I)*R,t[2]=(g*w-p*x+_*b)*R,t[3]=(u*x-l*w-d*b)*R,t[4]=(s*S-o*M-h*T)*R,t[5]=(e*M-n*S+r*T)*R,t[6]=(p*m-f*w-_*y)*R,t[7]=(c*w-u*m+d*y)*R,t[8]=(o*C-a*S+h*E)*R,t[9]=(i*S-e*C-r*E)*R,t[10]=(f*x-g*m+_*v)*R,t[11]=(l*m-c*x-d*v)*R,t[12]=(a*T-o*I-s*E)*R,t[13]=(e*I-i*T+n*E)*R,t[14]=(g*y-f*b-p*v)*R,void(t[15]=(c*b-l*y+u*v)*R)):U},ju=function(t,e){var i,n;e&&(i=e[0],n=e[1],e=e[2],t[12]=t[0]*i+t[4]*n+t[8]*e+t[12],t[13]=t[1]*i+t[5]*n+t[9]*e+t[13],t[14]=t[2]*i+t[6]*n+t[10]*e+t[14],t[15]=t[3]*i+t[7]*n+t[11]*e+t[15])},Nu=function(t,e){var i,n;e&&(i=e[0],n=e[1],e=e[2],t[0]=t[0]*i,t[1]=t[1]*i,t[2]=t[2]*i,t[3]=t[3]*i,t[4]=t[4]*n,t[5]=t[5]*n,t[6]=t[6]*n,t[7]=t[7]*n,t[8]=t[8]*e,t[9]=t[9]*e,t[10]=t[10]*e,t[11]=t[11]*e)},Uu=function(t,e,i){var n=e[0],r=e[1],o=e[2],a=e[3],s=e[4],h=e[5],c=e[6],l=e[7],u=e[8],d=e[9],f=e[10],g=e[11],p=e[12],_=e[13],v=e[14],y=e[15],m=i[0],b=i[1],x=i[2],e=i[3];return t[0]=m*n+b*s+x*u+e*p,t[1]=m*r+b*h+x*d+e*_,t[2]=m*o+b*c+x*f+e*v,t[3]=m*a+b*l+x*g+e*y,m=i[4],b=i[5],x=i[6],e=i[7],t[4]=m*n+b*s+x*u+e*p,t[5]=m*r+b*h+x*d+e*_,t[6]=m*o+b*c+x*f+e*v,t[7]=m*a+b*l+x*g+e*y,m=i[8],b=i[9],x=i[10],e=i[11],t[8]=m*n+b*s+x*u+e*p,t[9]=m*r+b*h+x*d+e*_,t[10]=m*o+b*c+x*f+e*v,t[11]=m*a+b*l+x*g+e*y,m=i[12],b=i[13],x=i[14],e=i[15],t[12]=m*n+b*s+x*u+e*p,t[13]=m*r+b*h+x*d+e*_,t[14]=m*o+b*c+x*f+e*v,t[15]=m*a+b*l+x*g+e*y,t},Gu=function(t,e,i,n){var r,o=e[0],a=e[1],s=e[2],h=n[0],c=n[1],l=n[2],u=i[0],d=i[1],f=i[2];return X(o-u)l[5]&l[0]>l[10]?(d=2*Math.sqrt(1+l[0]-l[5]-l[10]),c[3]=(l[6]-l[9])/d,c[0]=.25*d,c[1]=(l[1]+l[4])/d,c[2]=(l[8]+l[2])/d):l[5]>l[10]?(d=2*Math.sqrt(1+l[5]-l[0]-l[10]),c[3]=(l[8]-l[2])/d,c[0]=(l[1]+l[4])/d,c[1]=.25*d,c[2]=(l[6]+l[9])/d):(d=2*Math.sqrt(1+l[10]-l[0]-l[5]),c[3]=(l[1]-l[4])/d,c[0]=(l[8]+l[2])/d,c[1]=(l[6]+l[9])/d,c[2]=.25*d),n=i,s=(a=o=r)[0],t=a[1],f=a[2],h=a[3],a=(a=s*s+t*t+f*f+h*h)?1/a:0,o[0]=-s*a,o[1]=-t*a,o[2]=-f*a,o[3]=h*a,u=o,l=e.pos,c=u[0],d=u[1],r=u[2],s=u[3],f=c*(t=c+c),a=c*(h=d+d),u=c*(o=r+r),c=d*h,d*=o,r*=o,t*=s,h*=s,o*=s,n[0]=1-(c+r),n[1]=a+o,n[2]=u-h,n[3]=0,n[4]=a-o,n[5]=1-(f+r),n[6]=d+t,n[7]=0,n[8]=u+h,n[9]=d-t,n[10]=1-(f+c),n[11]=0,n[12]=l[0],n[13]=l[1],n[14]=l[2],n[15]=1,g&&Uu(i,i,g),xd(p,i)):xd(p,e)},Md=function(t,e,i,n,r){var o=t.s,a=t.gv,s=a.getGL(),h=a._prg,c=a._buffer,l=a._1O,u=yu.for(s).directAttribs();Qu(s,Yr,l),Cd(t,i),ad(s,0,o(e+".blend"),o(e+".light"),o(e+".opacity"),o(e+".reverse.flip"),o(e+".reverse.color"),o(e+".reverse.cull")),hd(s,h,l,r,c.uv,_f),u.aPosition=gd(s,c.vs,n,U),u.aNormal=gd(s,c.ns,vf,U),_d(s,c.is,yf),dd(s,0,yf.length),cd(s,0,l),sd(s),md(a)},Rd=function(t,e,i){var n=t.gv,r=t.data,t=t[e]={blend:n.getBodyColor(r)||n.getFaceBlend(r,e),light:n.getFaceLight(r,e),color:n.getFaceColor(r,e),opacity:n.getFaceOpacity(r,e),transparent:n.getFaceTransparent(r,e),reverseFlip:n.getFaceReverseFlip(r,e),reverseColor:n.getFaceReverseColor(r,e),reverseCull:n.getFaceReverseCull(r,e),texture:n.getFaceImage(r,e),blendTexture:n.getFaceBlendImage(r,e),discardSelectable:n.getFaceDiscardSelectable(r,e)};return"csg"!==e&&(t.uv=n.getFaceUv(r,e)||i&&i[e+"Uv"],t.uvScale=n.getFaceUvScale(r,e)||i&&i[e+"UvScale"],t.uvOffset=n.getFaceUvOffset(r,e)||i&&i[e+"UvOffset"],(e=n.getFaceMat(r,e))&&(e=$s(r,e),r.appendAnchorMatrix3d(e),t.mat=e)),t},Ad=function(t,e,i,n,r){var o,a,s,h=t[n];h&&r(h.transparent)&&(s=t.data,a=(o=t.gv)._buffer,r=o.getTexture(h.texture,s,n),t=o.getTexture(h.blendTexture,s),s=(n=yu.for(e)).directUniforms(),n=n.directAttribs(),hd(e,i,r,h.discardSelectable,a.uv,h.tuv,h.uvOffset,h.uvScale,t),ad(e,0,h.blend,h.light,h.opacity,h.reverseFlip,h.reverseColor,h.reverseCull),h.cs&&!o._batchColorDisabled?(s.uBatchColor=!0,n.aBatchColor=gd(e,a.batchColor,h.cs,i.aBatchColor,4)):s.uDiffuse=h.color||F["color.empty"],n.aPosition=gd(e,a.vs,h.vs,U),n.aNormal=gd(e,a.ns,h.ns,U),ud(e,0,h.vs.length/3),h.cs&&!o._batchColorDisabled&&(s.uBatchColor=!1,yd(e,i.aBatchColor)),sd(e),cd(e,0,r))},Pd=function(t,e,i){bn(t)?t.forEach(function(t){Pd(t,e,i)}):pn(t)?Pd(Gf(e,t),e,i):yn(t)&&t.shape3d?Pd(t.shape3d,e,i):i.push(t)},Dd=function(t,e,i,n,r,o){for(var a,s,h,c,l,u,d,f,g,p=[n-e,r-i],_=t?t.length:0,v=0;v<_;v++){for(s=2,h=(a=t[v])[0],c=a[1];s+1!opjujtpQ`mh\v!gjeof$!\v<*1/2!-opjujtpQb)5dfw!+!yjsubNNv!+!yjsubNxpebit!>!esppDxpebit\v!QBNXPEBIT`FTV!gfegj$!\v\v!gjeof$!\v~!fdobutjEfojMw|*itbEv)gj\v!ITBE!gfegj$!\v\v!gjeof$!\v~!ttfouihjsCidubCw|*ttfouihjsCidubCv)gj\v!TTFOUIHJSCIDUBC!gfegj$!\v\v!gjeof$!\v~!eofmCidubCw|*eofmCidubCv)gj\v!EOFMCIDUBC!gfegj$!\v\v!gjeof$!\v~!spmpDidubCw|*spmpDidubCv)gj\v!SPMPDIDUBC!gfegj$!\v~!wVs|*fsvuyfUeofmCv)gj\v~!wVw|*fsvuyfUv)gj<*opjujtpQb)4dfw!>!opjujtpQw~<**1/2!-opjujtpQb)5dfw!+!yjsubNNv)4dfw!>!emspXw<*yfusfw)4dfw!>!yfusfWw<**1/2!-mbnspOb)5dfw!+!yjsubNOv)4dfw!>!mbnspOw|*ldjQva!%%!yjGva)gj<*1/2!-opjujtpQb)5dfw!+!yjsubNWNv!>!yfusfw!5dfw|!*ejpw)ojbn!ejpw\v!gjeof$!\v!spmpDhbsG`mh\v~+!eJ<*wVs!-sfmqnbTeofmCv)E3fsvuyfu!>!spmpDsfmqnbTwv!5dfw|!*fsvuyfUeofmCv)!gj!\v\v!gjeof$!\v~+!chs/eJ!!!|*ttfouihjsCidubCv)gj\v!TTFOUIHJSCIDUBC!gfegj$!\v~+!chs/eJ!!!|*1/2!>a!ttfouihjsCv)gj~~+!b/eJ!!!|*1/2!>a!zujdbqPusbQv)gj~\v!gjeof$!\v~,!chs/eJ<*!spmpDwof!)sbfojMpUmfyfUqbNwof!>!spmpDwof<*!*!{z/dfWudfmgfs!-y/dfWudfmgfs)4dfw!-qbNwoFv!)fcvDfsvuyfu!>!spmpDwof!5dfw<*!mbnspOemspx!-yfusfWpUbsfnbd!)udfmgfs!>!dfWudfmgfs!4dfw<*!yjsubNxfjWv!-O!)opjudfsjEnspgtobsUftsfwoj!>!mbnspOemspx!4dfw<*!opjujtpQbsfnbDv!.!emspXw!)f{jmbnspo!>!yfusfWpUbsfnbd!4dfw|*qbNwoFftVv)!gj\v!QBNWOF`FTV!gfegj$!\v\v!gjeof$!\v<*spudbGhpg!-*x/eJ!-chs/spmpDhpGv)5dfw!-eJ)yjn!>!eJ\v!gjeof$!\v<*iuqfe!-sbGhpGv!-sbfOhpGv)qfutiuppnt!>!spudbGhpg!ubpmg\v!ftmf$!\v<*iuqfe!+!iuqfe!+!zujtofEhpGv!+!zujtofEhpGv!.)qyf!.!1/2!>!spudbGhpg!ubpmg\v!3QYF`HPG!gfegj$!\v<{/yfusfWw.!>!iuqfe!ubpmg\v!HPG!gfegj$!\v\v!gjeof$!\v~~~~,!chs/eJ<*1/1!-*^j]uofopqyFupqTv!-udfggFupqt)xpq)ybn!>!udfggFupqt|*^j]fmhoBupqTv!?!udfggFupqt)gj<*mbnspOm!-^j]opjudfsjEupqTv)upe!>!udfggFupqt!ubpmg<*spudfWm)f{jmbnspo!>!mbnspOm!4dfw|*1/1!?!fhobSm)!gj~<*1/2!-*^j]fhobSupqTv!0!*spudfWm)iuhofm))ojn!.!1/2!>!fhobSm|*1/1!?!^j]fhobSupqTv)!gj<1/2!>!fhobSm!ubpmg<^j]opjujtpQupqTv!.!yfusfWw!>!spudfWm!4dfw|*1/1!>>!x/^j]spmpDupqTv)gj|!*,,j!j!uoj)spg\v!1!?!UPQT`YBN!gj$!\v\v!gjeof$!\v~~~,!chs/eJ|*1/1!?!fhobSm)!gj~<*1/2!-*^j]fhobSuojpQv!0!*spudfWm)iuhofm))ojn!.!1/2!>!fhobSm|*1/1!?!^j]fhobSuojpQv)!gj<1/2!>!fhobSm!ubpmg<^j]opjujtpQuojpQv!.!yfusfWw!>!spudfWm!4dfw|*1/1!>>!x/^j]spmpDuojpQv)gj|!*,,j!j!uoj)spg\v!1!?!UOJPQ`YBN!gj$!\v\v!gjeof$!\v~~,!chs/eJ|*1/1!>>!x/^j]spmpDsjEv)gj|!*,,j!j!uoj)spg\v!1!?!SJE`YBN!gj$!\v~+!chs/eJ\v!gjeof$!\v~+!nsfUusfcnbm!~!!>!fvmbWxpebit!%%!mmvDxpebit)!gj<*esppDxpebit!-tvjebSxpebit!-tbjCxpebit!-f{jTxpebit!-qbNxpebit!)xpebiTufh!.!1/2!>!fvmbWxpebit!ubpmg|!*fwjfdfSxpebit)!gj\v!QBNXPEBIT`FTV!gfegj$!\v~<*1/2!-fhobSuihjmebfIv0*yfusfWw)iuhofm)ojn!.!1/2!!>+!nsfUusfcnbm|*1/1!?!fhobSuihjmebfIv)gj<*1/1!-zujtofuoJuofjcnBuihjmebfIv!,!*zujtofuoJuofjcnBuihjmebfIv!.!1/2)!+!*M.!-O)upe)ybn!>!nsfUusfcnbm!ubpmg|*1/1!>>!x/spmpDuihjmebfIv)gj|*uihjMv)gj~\v!gjeof$!\v~+!eJ|*eofmCv)gj\v!ftmf$!\v~+!eJ|*eofmCv)gj!ftmf~+!chs/eJ|*eofmCidubCv)gj\v!EOFMCIDUBC!gfegj$!\v~\v~>!x/eJ)gj\v!gjeof$!\v!eJ\v!ftmf$!\v~!eJ|ftmf~!eJ|*spmpDidubCv)gj\v!SPMPDIDUBC!gfegj$!\v|ftmf~!eJ|*fsvuyfUv)gj|!ftmf~!eJ|*qjmGftsfwfSva!%%!ldbCtj)gj~!ldbCtj!O|*1/1!=!*O!-F)upe)gj!ldbCtj!mppc!M!4dfw\v!gjeof$!\v<*yfusfWw.)f{jmbnspo!>!F!4dfw\v!ftmf$!\v<*2!-1!-1)4dfw!>!F!4dfw\v!DJIQBSHPIUSP!gfegj$!\v<*mbnspOw)f{jmbnspo!>!O!4dfw|!ftmf~\v!gjeof$!\v~~!eJ|ftmf~>!x/ftvggjEv)gj|!*!fdobutjEitbEv!?!*!fdobutjEqbHitbEv!-fdobutjEfojMw!)epn!%%!itbEv)!gj\v!ITBE!gfegj$!\v\v!gjeof$!\v!eJ\v!ftmf$!\v~!eJ|ftmf~!eJ|*spmpDidubCv)gj\v!SPMPDIDUBC!gfegj$!\v|*yjGv)gj>!b/spmpDhbsG`mh)!gj\v!gjeof$!\v!spmpDhbsG`mh\v!ftmf$!\v~!spmpDhbsG`mh|ftmf~!spmpDhbsG`mh|*spmpDidubCv)gj\v!SPMPDIDUBC!gfegj$!\v|*ldjQv)gj~~!!{/sje!|!*8!=!opjudfsjEqjmDv)!gj!ftmf~!<1/2!>!{/sje!|!*7!=!opjudfsjEqjmDv)!gj!ftmf~!<1/2.!>!z/sje!|!*6!=!opjudfsjEqjmDv)!gj!ftmf~!<1/2!>!z/sje!|!*5!=!opjudfsjEqjmDv)!gj!ftmf~!<1/2.!>!y/sje!|!*4!=!opjudfsjEqjmDv)!gj!ftmf~!<1/2!>!y/sje!|!*3!=!opjudfsjEqjmDv)!gj<*1/1!-1/1!-1/1)4dfw!>!sje!4dfw|!*1!?!opjudfsjEqjmDv)!gj~~~!=!b/spmpDwv)!gj!!!!|!ftmf~~!>!b/spmpDwv)!gj!!!!|!*uofsbqtobsUv)!gj<*wVw!-sfmqnbTv)E3fsvuyfu!>!spmpDwv|**fmcbudfmfTesbdtjEv!%%!ldjQv)a!%%!fsvuyfUv)gj!spmpDhbsG`mh!|!*uvpldbmc)!gj|!*ejpw)ojbn!ejpw!SPUDBG`BNNBH!ubpmg!utopd\v!gjeof$!\v\v~!!!!!!!!\vgjeof$!!!!!!!!!!!!\v<*!qe!-*!z/f{jTmfyfu!-E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!osvufs!!!!!!!!!!!!!!!!\vftmf$!!!!!!!!!!!!\v<*!1/:!0!1/2!)!+!*!!!!!!!!!!!!!!!!\v*!qe!-*!z/f{jTmfyfu!-yyz/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-yyy/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-zyz/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-zyy/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-yzz/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-yzy/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-zzz/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!qe!-*!z/f{jTmfyfu!-zzy/uftggp!,!E4ec!)WVpUfcvd!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v)!osvufs!!!!!!!!!!!!!!!!\v!uftggp!3dfw!!!!!!!!!!!!!!!!\v*!UGPT`GDQ`FQZU`QBNXPEBIT!)efojgfe!}}!*!GDQ`FQZU`QBNXPEBIT!)efojgfe!gj$!!!!!!!!!!!!\v<*!opjujtpQpUuihjm!)f{jmbnspo!>!E4ec!4dfw!!!!!!!!!!!!\v,!qe!!!!!!!!<*!sbfObsfnbDxpebit!.!sbGbsfnbDxpebit!)!0!*!sbfObsfnbDxpebit!.!*!opjujtpQpUuihjm!)iuhofm!)!>!qe!ubpmg!!!!!!!!!!!!\v<{zy/esppDxpebit!>!opjujtpQpUuihjm!4dfw!!!!!!!!!!!!\v<*!*!1/3!-1/5!)3dfw!+!f{jTqbNxpebit!)!0!*!1/2!)3dfw!>!f{jTmfyfu!3dfw!!!!!!!!!!!!\v|!*!sbGbsfnbDxpebit!ubpmg!-sbfObsfnbDxpebit!ubpmg!-esppDxpebit!5dfw!-tvjebSxpebit!ubpmg!-tbjCxpebit!ubpmg!-f{jTqbNxpebit!3dfw!-qbNxpebit!E3sfmqnbt!)xpebiTuojpQufh!ubpmg!!!!!!!!\v~!!!!!!!!\v<*!68/1!-684/1!)3dfw!,!sbobmq!+!*!63/1!-632/1!)3dfw!osvufs!!!!!!!!!!!!\v~!!!!!!!!!!!!\v<1/3!.!Zohjt!+!{/w!>!z/sbobmq!!!!!!!!!!!!!!!!\v<1/3!,!Zohjt!+!1/3!,!y/w!>!y/sbobmq!!!!!!!!!!!!!!!!\v<*!z/w!)ohjt!>!Zohjt!ubpmg!!!!!!!!!!!!!!!!\v|!*!foPutpnmb!>?!z/Wtcb!)!gj!ftmf!~!!!!!!!!!!!!\v!y/sbobmq!!!!!!!!!!!!!!!!\v<*!y/w!)ohjt!>!Yohjt!ubpmg!!!!!!!!!!!!!!!!\v|!*!foPutpnmb!>?!y/Wtcb!)!gj!ftmf!~!!!!!!!!!!!!\v!y/sbobmq!!!!!!!!!!!!!!!!!!!!\v*!1/1!?!{/w!)!gj!!!!!!!!!!!!!!!!\v|!*!foPutpnmb!>?!{/Wtcb!)!gj!!!!!!!!!!!!\v!foPutpnmb!ubpmg!!!!!!!!!!!!\v!mfyfUButpnmb!ubpmg!!!!!!!!!!!!\v!sbobmq!3dfw!!!!!!!!!!!!\v<*!Zf{jTmfyfu!+!1/3!.!1/2!)!+!fcvDpUfmbdt!>+!w!!!!!!!!!!!!\v+!Wtcb!!!!!!!!!!!!\v<*!*!{/Wtcb!-z/Wtcb!)ybn!-y/Wtcb!)ybn!0!1/2!>!fcvDpUfmbdt!ubpmg!!!!!!!!!!!!\v<*!w!)tcb!>!Wtcb!4dfw!!!!!!!!!!!!\v|!*!Zf{jTmfyfu!ubpmg!-w!4dfw!)WVpUfcvd!3dfw!!!!!!!!\v~!!!!!!!!\v!xpebit!!!!!!!!!!!!!!!!\vftmf$!!!!!!!!!!!!\v<*!1/:!0!1/2!)!+!*!!!!!!!!!!!!!!!!\v*!{/esppDxpebit!-*!2ze!-2ye!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!2ze!-1/1!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!2ze!-1ye!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1/1!-2ye!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1/1!-1ye!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1ze!-2ye!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1ze!-1/1!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1ze!-1ye!)3dfw!,!zy/esppDxpebit!-f{jTqbNxpebit!-qbNxpebit!)qsfMxpebiTE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v)!>!xpebit!!!!!!!!!!!!!!!!\v!2ze!ubpmg!!!!!!!!!!!!!!!!\v!2ye!ubpmg!!!!!!!!!!!!!!!!\v!1ze!ubpmg!!!!!!!!!!!!!!!!\v!1ye!ubpmg!!!!!!!!!!!!!!!!\v!f{jTmfyfu!3dfw!!!!!!!!!!!!!!!!\v*!UGPT`GDQ`FQZU`QBNXPEBIT!)efojgfe!gjmf$!!!!!!!!!!!!\v<*!1/:!0!1/2!)!+!*!!!!!!!!!!!!!!!!\v*!{/esppDxpebit!-*!2ze!-2ye!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!2ze!-1/1!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!2ze!-1ye!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1/1!-2ye!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1/1!-1ye!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1ze!-2ye!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1ze!-1/1!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v,!*!{/esppDxpebit!-*!1ze!-1ye!)3dfw!,!zy/esppDxpebit!-qbNxpebit!)fsbqnpDE3fsvuyfu!!!!!!!!!!!!!!!!!!!!\v)!>!xpebit!!!!!!!!!!!!!!!!\v!2ze!ubpmg!!!!!!!!!!!!!!!!\v!2ye!ubpmg!!!!!!!!!!!!!!!!\v!1ze!ubpmg!!!!!!!!!!!!!!!!\v!1ye!ubpmg!!!!!!!!!!!!!!!!\v!f{jTmfyfu!3dfw!!!!!!!!!!!!!!!!\v*!GDQ`FQZU`QBNXPEBIT!)efojgfe!gj$!!!!!!!!!!!!\v|!*!utfUnvutvsg!)!gj!!!!!!!!!!!!\v<*!dfWutfUnvutvsg!)mmb!>!utfUnvutvsg!mppc!!!!!!!!!!!!\v<*!1/2!>=!{/esppDxpebit!-nvutvsGoj!)3dfwc!>!dfWutfUnvutvsg!3dfwc!!!!!!!!!!!!\v<*!dfWnvutvsGoj!)mmb!>!nvutvsGoj!mppc!!!!!!!!!!!!\v<*!1/2!>=!z/esppDxpebit!-1/1!>?!z/esppDxpebit!-1/2!>=!y/esppDxpebit!-1/1!>?!y/esppDxpebit!)!5dfwc!>!dfWnvutvsGoj!5dfwc!!!!!!!!!!!!\v,!{/esppDxpebit!!!!!!!!!!!!\v0!{zy/esppDxpebit!!!!!!!!!!!!\v<1/2!>!xpebit!ubpmg!!!!!!!!!!!!\v|!*!esppDxpebit!5dfw!-tvjebSxpebit!ubpmg!-tbjCxpebit!ubpmg!-f{jTqbNxpebit!3dfw!-qbNxpebit!E3sfmqnbt!)xpebiTufh!ubpmg!!!!!!!!\v~!!!!!!!!\v!d!ubpmg!!!!!!!!!!!!\v<*!z/g!-us!-cs!)yjn!>!c!ubpmg!!!!!!!!!!!!\v<*!z/g!-um!-cm!)yjn!>!b!ubpmg!!!!!!!!!!!!\v<*!6/1!,!f{jt!+!wv!)udbsg!>!g!3dfw!!!!!!!!!!!!\v<*!fsbqnpd!-zz/uftggp!+!f{jTmfyfu!,!WVejpsuofd!-tiuqfe!)fsbqnpDE3fsvuyfu!>!us!ubpmg!!!!!!!!!!!!\v<*!fsbqnpd!-yz/uftggp!+!f{jTmfyfu!,!WVejpsuofd!-tiuqfe!)fsbqnpDE3fsvuyfu!>!cs!ubpmg!!!!!!!!!!!!\v<*!fsbqnpd!-zy/uftggp!+!f{jTmfyfu!,!WVejpsuofd!-tiuqfe!)fsbqnpDE3fsvuyfu!>!um!ubpmg!!!!!!!!!!!!\v<*!fsbqnpd!-yy/uftggp!+!f{jTmfyfu!,!WVejpsuofd!-tiuqfe!)fsbqnpDE3fsvuyfu!>!cm!ubpmg!!!!!!!!!!!!\v!WVejpsuofd!3dfw!!!!!!!!!!!!\v!f{jTmfyfu!3dfw!!!!!!!!!!!!\v<*!1/2!-1/1!)3dfw!>!uftggp!3dfw!utopd!!!!!!!!!!!!\v|!*!fsbqnpd!ubpmg!-wv!3dfw!-f{jt!3dfw!-tiuqfe!E3sfmqnbt!)qsfMxpebiTE3fsvuyfu!ubpmg!!!!!!!!\v~!!!!!!!!\v<*!*!*!wv!-tiuqfe!)E3fsvuyfu!)iuqfEpUBCHSldbqov!-fsbqnpd!)qfut!osvufs!!!!!!!!!!!!\v|!*!fsbqnpd!ubpmg!-wv!3dfw!-tiuqfe!E3sfmqnbt!)fsbqnpDE3fsvuyfu!ubpmg!!!!!!!!\v~!!!!!!!!<*!tspudbGldbqoV!-w!)upe!osvufs|!*!w!5dfw!oj!utopd!)iuqfEpUBCHSldbqov!ubpmg!!!!!!!!\v<*!/2!-tspudbGldbQ!)5dfw!0!fmbdtoxpEldbqoV!>!tspudbGldbqoV!5dfw!utopd!!!!!!!!\v<*!/763!!-/763!+!/763!-/763!+!/763!+!/763!)4dfw!>!tspudbGldbQ!4dfw!utopd!!!!!!!!\v<*2!hojevmdyf)!opjudbsg!?.!2//1!00!!fmbdtoxpEldbqoV!ubpmg!utopd!!!!!!!!\v<*2!hojevmdoj)!2//1!?.!opjudbsg!00!!fmbdtqVldbQ!ubpmg!utopd!!!!!!!!\v=t.byteLength?i.bufferSubData(this.type,e,t):i.bufferData(this.type,t,this.drawType),this.data=t},Jf.prototype.bind=function(){this.gl.bindBuffer(this.type,this.buffer)},Jf.createVertexBuffer=function(t,e,i){return new Jf(t,t.ARRAY_BUFFER,e,i)},Jf.createIndexBuffer=function(t,e,i){return new Jf(t,t.ELEMENT_ARRAY_BUFFER,e,i)},Jf.create=function(t,e,i,n){return new Jf(t,e,n)},Jf.prototype.destroy=function(){this.gl.deleteBuffer(this.buffer)},($f=Zf.Shader=function(t,e,i){this.gl=t,this.program=tg(t,e,i),this.attributes=ng(t,this.program);i=ig(t,this.program);this.uniforms=dg(t,i)}).prototype.bind=function(){this.gl.useProgram(this.program)},$f.prototype.destroy=function(){this.gl},tg=function(t,e,i){var n=eg(t,t.VERTEX_SHADER,e),e=eg(t,t.FRAGMENT_SHADER,i);t.getShaderParameter(e,t.COMPILE_STATUS)||console.error(t.getError());i=t.createProgram();return t.attachShader(i,n),t.attachShader(i,e),t.linkProgram(i),t.getProgramParameter(i,t.LINK_STATUS)||(console.error("Error: Could not initialize shader."),console.error("gl.VALIDATE_STATUS",t.getProgramParameter(i,t.VALIDATE_STATUS)),console.error("gl.getError()",t.getError()),""!==t.getProgramInfoLog(i)&&console.warn("Warning: gl.getProgramInfoLog()",t.getProgramInfoLog(i)),t.deleteProgram(i),i=null),t.deleteShader(n),t.deleteShader(e),i},eg=function(t,e,i){e=t.createShader(e);return t.shaderSource(e,i),t.compileShader(e),t.getShaderParameter(e,t.COMPILE_STATUS)?e:(console.log(t.getShaderInfoLog(e)),null)},ig=function(t,e){for(var i={},n=t.getProgramParameter(e,t.ACTIVE_UNIFORMS),r=0;rG.graph3dMaxVectorCacheTime)return n.redraw(),r._emptyTexture;if(!Ya(a,e))return r._emptyTexture}e&&(1!==e.s("texture.scale")?_=e.s("texture.scale"):1!==e.s("shape3d.texture.scale")&&(_=e.s("shape3d.texture.scale"))),_=_||1;var d=e&&(e.s("fixSizeOnScreen")||e.s("shape3d.fixSizeOnScreen")),f=d?r.NEAREST:r.LINEAR;d?"number"==typeof d&&(_*=d<0?1:d):e&&(e.s("vector.dynamic")||e.s("shape3d.vector.dynamic"))&&(d=(h=h||n.getData3dUI(e)).getVectorDynamicSize());var g=e&&e.s("shape3d");"billboard"===g?v=e.getTall()/e.getWidth():"plane"===g&&(v=e.getHeight()/e.getWidth());var p,_,v,y,m,b=mh(a,e);_=d?(g=c?n._devicePixelRatio||ma:n.getDevicePixelRatio(),p=0Vertices: "+t.vertices+"
Faces: "+t.faces+"
Lines: "+t.lines+"
"+(t.points?"Points: "+t.points+"
":"")+"Buffers: "+e+"
Cache Models: "+L.keys(Vi).length+"
Shape3d Models: "+L.keys(zi).length;return this.vr.isPresenting()&&(i+="
VR fps: "+this.vr.getFps()),t.textureCache&&(e=t.textureCache.count,i+="
2D Dynamic Textures: "+t.textureCache.count,02D Dynamic pixels: "+(1e6<(t=t.textureCache.pixels)?Math.round(t/1e6)+"M":1e3=t)break;n._43Q[n._44Q=e.id]&&!Ci[Ht.length]||(e.render(s,n,r),i())}}}var n=this;n.shadowMap.render(),n._44Q=-1;var r=n._frameState,o=r.renderState,e=o.glState,a=o.directUniforms(),s=n.getGL(),h=n._prg;o.syncLoss(),n._projectMatrix=qu(n),Wu(n,n._7O),n._viewMatrix=qs(n._7O),r.syncEnv(this._picking?this.pickColorMap:H),o.useProgram(h),i(!1,!0),s.clear(s.DEPTH_BUFFER_BIT);var c,l=n._picking,u=this._41Q,d=0,f=u.length;if(t(G.cameraPriority.skybox),l?(c=e.color.clear.slice(0),nd(s,[0,0,0,0])):(nd(s,[0,0,0,0]),e.blend.enabled=!1,e.depth.enabled=!1,e.depth.mask=!1,n.drawSky(s,h),n.drawReflectors(s)&&(n._projectMatrix=qu(n),Wu(n,n._7O),n._viewMatrix=qs(n._7O),r.syncEnv(),i()),e.blend.enabled=!1,e.depth.enabled=!0,e.depth.mask=!0,a.uTransparent=!1,n._31O._42(s,h)),!s.textureBatch||Ci[(ONE_FRAME_TIME-6)/2]){!l&&n.shadowMap.enable&&n.shadowMap.createShadow(a);for(var g=0,p=zh.length;gh?(t.deleteBuffer(n._buf),n._buf=null,r[i]=null):a++);if(a=n||r[1]<=t||r[1]>=n||r[2]<=t||r[2]>=n)&&(n=2*t*n/(t+n)/Math.min(r[0],r[1],r[2]),r=i.getScale3d(),i.setScale3d(r[0]*n,r[1]*n,r[2]*n),e=!0)),e&&this.invalidateData(i))},getSkyBox:function(){return this.getSkybox()},setSkyBox:function(t){return this.setSkybox(t)},getSkybox:function(){return this._skybox},setSkybox:function(t){var e=this._skybox;return e===t?void(t&&this._updateSkybox({property:"forceUpdate"})):(e&&(this._skyboxStyleMap&&e.setStyleMap(this._skyboxStyleMap),this._skyboxStyleMap=null,this._skyboxAnchor3d&&e.setAnchor3d(this._skyboxAnchor3d),this._skyboxAnchor3d=null,this._skyboxP3&&e.p3(this._skyboxP3),this._skyboxP3=null),this._skybox=t,this.ump(this._updateSkybox,this),t&&(t.dm()&&t.dm().remove(t),this._skyboxStyleMap=Gl.Default.clone(t.getStyleMap()),this._skyboxAnchor3d=t.getAnchor3d(),t.setAnchor3d(.5,.5,.5),this._skyboxP3=t.p3().slice(0),t.s({"shape3d.reverse.flip":!0,"shape3d.reverse.cull":!1,"all.reverse.flip":!0,"all.reverse.cull":!1,"front.reverse.flip":!0,"front.reverse.cull":!1,"back.reverse.flip":!0,"back.reverse.cull":!1,"left.reverse.flip":!0,"left.reverse.cull":!1,"right.reverse.flip":!0,"right.reverse.cull":!1,"top.reverse.flip":!0,"top.reverse.cull":!1,"bottom.reverse.flip":!0,"bottom.reverse.cull":!1}),this.mp(this._updateSkybox,this),this._updateSkybox({property:"forceUpdate"})),void this.fp("skybox",e,t))},drawSky:function(t,e){var i,n,r,o,a,s,h,c,l=this,u=l._skybox;u&&(i=yu.for(t).directUniforms(),c=l._headlightIntensity,n=to(l._headlightColor),e=l._prg,1!==c&&(n=[n[0]*c,n[1]*c,n[2]*c]),i.uHeadlightColor=[n[0],n[1],n[2],1],(r=l.getData3dUI(u))&&((a=(o=l.isOrtho())||this._computedProjectMatrix)&&(s=l._projectMatrix,o&&(l._ortho=!1),i.uPMatrix=l._projectMatrix=qu(l,!0)),h=u.p3(),c=this._eye,h[0]===c[0]&&h[1]===c[1]&&h[2]===c[2]||(u._position.x=c[0],u._54O=c[1],u._position.y=c[2]),r.validate(),r._42(t,e,f),a&&(o&&(l._ortho=!0),i.uPMatrix=l._projectMatrix=s)),t.clear(t.DEPTH_BUFFER_BIT),i.uHeadlightColor=[n[0],n[1],n[2],l._headlightDisabled?1:0])},getLogicalPoint:function(t){return Cs(t,this._canvas)},isRectOverlapping:function(t){return this.getData3dUI(t)._rectOverlapping},getHitFaceInfo:function(t){t.target&&(t=this.lp(t));var e=this.getDataInfoAt(t);if(e){t=this.intersectObject(t,e.data);if(t)return{data:e.data,face:t.part}}return U},unproject:function(t,e){var i=this.getWidth(),n=this.getHeight(),r=t.target?this.lp(t):t,o=(r.x-i/2)/i*2,t=-1*(r.y-n/2)/n*2;e=e||0;i=Hs(),r=qu(this),n=Wu(this);Uu(i,r,n),ku(i);i=Qs([o,t,e,1],i);return[i[0]/i[3],i[1]/i[3],i[2]/i[3]]},getDataAt:function(t){t=this.getDataInfoAt(t);return t?t.data:U},getDataInfoAt:function(t,e){return t.target&&(t=this.lp(t)),this._1o.get(dn(t.x,t.y,e),!0)},getDatasInRect:function(t){return this._1o.get(t)},setEditable:function(t){var e=this._editable;this._editable=t,this.fp(Ee,e,t)},isEditable:function(t){return t?!!this._editable&&(!!wn(t)&&(!!t.s("3d.editable")&&(!this._editableFunc||this._editableFunc(t)))):this._editable},isSelectable:function(t){return t.s("3d.selectable")&&this.sm().isSelectable(t)},isMovable:function(t){return(!En(t)||t.getStyle(Jt)===Vt)&&(!!t.s("3d.movable")&&(!this._movableFunc||this._movableFunc(t)))},isSizeEditable:function(t){return!!wn(t)&&(!this._sizeEditableFunc||this._sizeEditableFunc(t))},isRotationEditable:function(t){return!(!wn(t)||!1===t.IRotatable)&&(!this._rotationEditableFunc||this._rotationEditableFunc(t))},handleDelete:function(){this._editable&&this.removeSelection()},zoomIn:function(t){this.setZoom(ja,t)},zoomOut:function(t){this.setZoom(1/ja,t)},setZoom:(J_=new ha,$_=new ha,tv=new ha,ev=new ha,function(t,e){if(1!==t){var i=this;i._14o&&i._14o.stop(!0);var n,r=1/t;J_.copy(i.getCenter()),$_.copy(i.getEye());var o=i._ortho;if(o){if((n=i._orthoWidth)t)&&(this.isOrtho()?(e=this.getOrthoWidth()/2,Math.abs(i[0])<=e&&Math.abs(i[1]*n)<=e):(e=Math.sqrt(i[0]*i[0]+i[1]*i[1]+i[2]*i[2])*Math.tan(this.getFovy()/2),Math.abs(i[1]<=e)&&Math.abs(i[0])<=e*n))},getPVMatrix:function(){var t;return(t=this._18Q)||(t=qu(this),this._18Q=Uu(t,t,Wu(this)),this._18Q._wh=this.getWidth()/2/this.getHeight()),t},getFrustum:(Y_=new fa,Z_=new Ag,K_=new Array(16),function(){for(var t=this.getPVMatrix(),e=!1,i=0;i<16;i++)t[i]!==K_[i]&&(e=!0,K_[i]=t[i]);return e&&Z_.setFromMatrix(Y_.fromArray(t)),Z_}),toViewPosition:function(t){var e=this.getWidth()/2,i=this.getHeight()/2,n=this.getPVMatrix();return{x:e+e*(t=Qs([t[0],t[1],t[2],1],n))[0]/t[3],y:i-i*t[1]/t[3],z:t[2]/t[3]}},getHitPosition:function(t,e,i){var n=this.getWidth(),r=this.getHeight(),o=t.target?this.lp(t):t,a=o.x-n/2,s=o.y-r/2,t=this.getCenterInfo(),o=Wu(this);e=e||[0,0,0],i=i||[0,1,0],a=a/n*t.width,s=-1*s/r*t.height;a=[o[0]*a,o[4]*a,o[8]*a],s=[o[1]*s,o[5]*s,o[9]*s],a=[a[0]+s[0],a[1]+s[1],a[2]+s[2]],s=this.getCenter(),s=zu(this,e,i,[a[0]+s[0],a[1]+s[1],a[2]+s[2]]);return s||[0,0,0]},intersectObject:function(t,e){return this._raycaster.intersectObject(t,e)},intersectObjects:function(t,e,i){return this._raycaster.intersectObjects(t,e,i)},getLineLength:function(t){this.validate();t=this.getData3dUI(t);if(t&&t.getCache){t=t.getCache();if(t)return t[t.length-1].length}return 0},getLineOffset:function(t,e){var i=this.getData3dUI(t);if(i&&i.getCache){var n=i.getCache();if(n){var r=qf(n,e);if(!t.r3)return r;i=t.r3();if(0===i[0]&&0===i[1]&&0===i[2])return r;n=new ha(t.p3()),e=new ha(r.point).sub(n),r=new ha(r.tangent).add(e),t=(new aa).setFromEuler(new pa(i,t.getRotationMode(),!0));return e.applyQuaternion(t),r.applyQuaternion(t),{point:e.add(n),tangent:r.sub(e).normalize()}}}return U},isLabelVisible:function(){return!0},isNoteVisible:function(){return!0},moveCamera:function(t,e,i){var n=this,r=[(r=n.getEye())[0],r[1],r[2]],o=[(o=n.getCenter())[0],o[1],o[2]];if(t=t||r,e=e||o,n._flyAnim&&n._flyAnim.stop(!0),!(i=Rn(i)))return n.setEye(t[0],t[1],t[2]),n.setCenter(e[0],e[1],e[2]),delete n._flyAnim,!0;var a=[t[0]-r[0],t[1]-r[1],t[2]-r[2]],s=[e[0]-o[0],e[1]-o[1],e[2]-o[2]];return i.action=function(t){n.setCenter(o[0]+s[0]*t,o[1]+s[1]*t,o[2]+s[2]*t),n.setEye(r[0]+a[0]*t,r[1]+a[1]*t,r[2]+a[2]*t)},i._37o=function(){delete n._flyAnim},n._flyAnim=rs(i)},flyTo:(N_=new ha,U_=new ha,G_=new ha,H_=new ha,W_=new fa,q_=new Gl.Math.Quaternion,X_=new pa,Q_=new da,function(t,e,i){var n=this;i!==H?e={animation:e,ratio:i}:("boolean"==(h=typeof e)||"object"==h&&e.duration)&&(e={animation:e}),e=e||{},N_.fromArray(n.getEye()),U_.fromArray(n.getCenter());var r,o,a=[],s=e.center,h=e.distance===H;if(s&&G_.fromArray(s),t instanceof Gl.Node)s||G_.fromArray(t.p3()),h&&(Em(a,n,t),r=a.length);else{if(!(t=t||n.dm().getDatas()).length)return;if((h||!s)&&(a=[],t.forEach(function(t){Em(a,n,t)}),!(r=a.length)))return;s||(Q_.setFromPoints(a),G_.copy(Q_.min).add(Q_.max).multiplyScalar(.5))}n.setCenter(G_.x,G_.y,G_.z),H_.subVectors(N_,U_),(e.direction||e.worldDirection)&&(!e.worldDirection&&t instanceof Gl.Node?q_.setFromEuler(X_.set(t.r3(),t.getRotationMode(),!0)):q_.set(0,0,0,1),t=H_.length(),H_.fromArray(e.worldDirection||e.direction).applyQuaternion(q_).setLength(t));var c=0;if(h){var l,u,d,i=e.ratio||.8,f=e.xRatio||i,g=e.yRatio||i;if(n.isOrtho()){var p=-1/0;for(n._eye[0]=H_.x+G_.x,n._eye[1]=H_.y+G_.y,n._eye[2]=H_.z+G_.z,l=qu(n),Uu(l,l,Wu(n)),o=0;o>1);h<=1&&(h=0,t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,n.options.minFilter||t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,n.options.magFilter||t.LINEAR),t.renderbufferStorage(a,t.DEPTH_COMPONENT16,e,i)),r._maxSamplesChecked=!0,r.maxSamples=n.options.samples=h}}else t.renderbufferStorage(a,t.DEPTH_COMPONENT16,e,i);h&&!n._MSAAFbo&&(n._MSAAFbo=t.createFramebuffer(),n._MSAARbO=t.createRenderbuffer()),wu(t,n.frame),t.framebufferTexture2D(s,t.COLOR_ATTACHMENT0,o,n.texture,0),h||t.framebufferRenderbuffer(s,t.DEPTH_ATTACHMENT,a,n.render),Eu(t),h&&(t.bindRenderbuffer(t.RENDERBUFFER,n._MSAARbO),t.renderbufferStorageMultisample(t.RENDERBUFFER,h,t.RGBA8,e,i),wu(t,n._MSAAFbo),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,n._MSAARbO),t.framebufferRenderbuffer(s,t.DEPTH_ATTACHMENT,a,n.render),Eu(t)),$u(t,U),t.bindRenderbuffer(a,U),n.width=e,n.height=i}},toCanvas:function(){var t=this.gv.getGL();wu(t,this.frame);var e=this.width,i=this.height,n=new Uint8Array(4*e*i);t.readPixels(0,0,e,i,t.RGBA,t.UNSIGNED_BYTE,n),Eu(t);var r=d.createElement("canvas");r.width=e,r.height=i;t=r.getContext("2d"),i=t.createImageData(e,i);return i.data.set(n),t.putImageData(i,0,0),r}}),Ag=Bd.Interactor=function(t){this.gv=this.g3d=t},zd("Interactor",L,{ms_listener:1,getView:function(){return this.gv.getView()},setUp:function(){this.addListeners()},tearDown:function(){this.removeListeners()}}),Pg=Bd.DefaultInteractor=function(t){Bn(Pg,this,[t])},zd("DefaultInteractor",Ag,{getDataInfoAt:function(t,e){var i=this.gv,n=i.getDataInfoAt(t);if(!i.isBlockSelectable()||!n||!n.data)return n;if(!e&&i.isSelected(n.data))return n;for(var r=n.data;(r=r.getParent())&&r instanceof Gl.Block&&i.isSelectable(r);){var o=i.isSelected(r);if(o&&e)break;if(n={data:r,part:n},o&&!e)break}return n},handle_contextmenu:function(t){qa(t)},handle_mousewheel:function(t){this.gv.handleScroll(t,t.wheelDelta/40)},handle_DOMMouseScroll:function(t){2===t.axis&&this.gv.handleScroll(t,-t.detail)},handle_keydown:function(t){this.gv.handleKeyDown(t)},handle_mousedown:function(t){this.handle_touchstart(t)},handle_touchstart:function(t){qa(t);var e=this,i=e.gv,n=cs(t),r=e.getDataInfoAt(t),o=r?r.data:U,a=r?r.part:U,s=i.sm(),h=Pr(t),r=ds(t);i.setFocus(t)&&(e._62O=U,e._57I=U,e.pendingClickThrough=U,e.__lastClientPoint__=_s(t),o?ps(t)?s.co(o)?s.rs(o):s.as(o):s.co(o)?o instanceof _l&&o.isClickThroughEnabled()&&cs(t)&&(e.pendingClickThrough=_s(t)):s.ss(o):n&&(ps(t)?i.isRectSelectable()&&(e._62O=oe):e._57I=_s(t)),e._31Q&&(ts(e._31Q),delete e._31Q,delete e._32Q),e._62O||(i.isFirstPersonMode()&&(gs(t)||ls(t)||2X(y)?v:y,o===Wg?t.setRotationX(t.getRotationX()+e):o===qg?t.setRotationY(t.getRotationY()+e):o===Xg&&t.setRotationZ(t.getRotationZ()+e))});else if("move"===o||Kg[o]){if(o===Qg||o===Yg||o===Zg)r._87O||s.beginTransaction(),r.fi({kind:r._87O?"betweenEditScale":"beginEditScale",event:e}),r._87O=1;else{if(!r._moving){if(_e.touchRotateThreshold?(n.thetaStarted=!0,n.theta=u):h=0),p=P*(o+s)/2/i.getHeight(),c=0,(d=n.phi)==U?d=n.phi=p:(c=p-d,n.phiStarted||Math.abs(c)>e.touchRotateThreshold?(n.phiStarted=!0,n.phi=p):c=0),_=Math.sqrt(f.x*f.x+f.y*f.y),(u=n.vlen)?(d=r-g.x,p=o-g.y,f=a-g.x,g=s-g.y,p=Math.sqrt(d*d+p*p),f=Math.sqrt(f*f+g*g),g=u/2,(p=e._sign2(p-g))*(g=e._sign2(f-g))<0||0===p&&0===g?(l=1,n.vlen=_):(l=l||_/u,n.scaleStarted||Math.abs(l-1)>e.touchScaleThreshold?(n.vlen=_,n.scaleStarted=!0):l=1)):(u=n.vlen=_,l=1),1!==l&&i.setZoom(l),(c||h)&&e.rotate(t,h,-c),n.lastCenter={x:(a+r)/2,y:(s+o)/2}):n.pan?e.pan(t,v,y):(n=i.getWidth(),i=i.getHeight(),n&&i&&(n=-J*v/n,i=-J*y/i,e.rotate(t,n,i))))}},_sign2:function(t){return Math.abs(t)>16)/255,(255&t>>8)/255,(255&t)/255,(255&t>>24)/255]},zs(Vg=function(t){this.gv=t,this.gv.pickColorMap={_pickIdUsed:1e3}},L,{_iv:!0,iv:function(){this._iv=!0},get:function(t,e){this.validate();var i=this.gv.getGL();if(!i)return U;var n,r,o=this._resolution,a=Math.round(t.x*o),s=Math.ceil(t.width*o),h=Math.ceil(t.height*o),o=this.height-Math.round(t.y*o)-h,c=k(s/2),l=new Uint8Array(4*s*h),u=0,d=l.length,f=e?U:new Lh,g=e?U:{};if(wu(i,this.frame),i.readPixels(a,o,s,h,i.RGBA,i.UNSIGNED_BYTE,l),Eu(i),e){for(;u<=c;u++)for(var p=c-u,_=c+u,v=p;v<=_;v++)for(var y=p;y<=_;y++)if((v===p||v===_||y===p||y===_)&&(n=this.info(l,4*(v*s+y))))return n}else for(;ul||(n=s.intersectObject(e,t))&&((r=c.distanceToSquared(n.world))S)continue;E=!1}else b[x+"boundingBox"]=w=new Gl.Math.Box3,E=!0;for(f=0,g=_?_.length:p.length/3;f>2)-c,(1&d>>1)-l,(1&d)-u],r),e=i.toViewPosition(e),isNaN(e.x)||isNaN(e.y))return;o=Math.min(o,e.x),s=Math.max(s,e.x),a=Math.min(a,e.y),h=Math.max(h,e.y)}n={x:o,y:a,w:s-o,h:h-a};this._rectOverlapping=i.overlappingBox.isOverlapping(t,n)}else this._rectOverlapping&&(this._rectOverlapping=H)},getVectorDynamicSize:function(){var t=this.s("shape3d"),e=this.data;if("billboard"===t||"plane"===t||(i=e._currentCubeElementId)!=U){var i,n,r,o=this.gv,a=$s(e,o.getMat(e)),s=e.getAnchor3d(),h=.5-s.x,c=.5-s.y,l=.5-s.z,u=Math.min(this.s("vector.dynamic.maxsize"),o._glCapabilities.maxTextureSize)/o.getDevicePixelRatio(),s=function(t,e){t[0]+=h,t[1]+=c,t[2]+=l,e[0]+=h,e[1]+=c,e[2]+=l;var i=o.toViewPosition(Xs(t,a)),t=o.toViewPosition(Xs(e,a)),e=i.x-t.x,t=i.y-t.y;return Math.min(u,Math.sqrt(e*e+t*t))};return"billboard"===t?(n=s([-.5,0,0],[.5,0,0]),r=s([0,-.5,0],[0,.5,0])):"plane"===t?(n=s([-.5,0,0],[.5,0,0]),r=s([0,0,-.5],[0,0,.5])):e._currentCubeElementId!=U&&(t=3*bf[i+1],e=3*bf[i],i=3*bf[i+2],n=s([mf[t],mf[1+t],mf[2+t]],[mf[i],mf[1+i],mf[2+i]]),r=s([mf[t],mf[1+t],mf[2+t]],[mf[e],mf[1+e],mf[2+e]])),[n,r]}},vf:function(t,e){if(this.gv.getFaceVisible(this.data,t)){t=Rd(this,t);t.mat&&(this.faceMat=!0);var i=t.uv;if(i)for(var n=(n=this._cubeUvs)||(this._cubeUvs=new js([0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0])),r=0;r<8;r++)n[e+r]=i[r];return t}},_billboardInView:(a_=[-.5,-.5,0,-.5,.5,0,.5,-.5,0,.5,.5,0],s_=[-.5,0,-.5,-.5,0,.5,.5,0,-.5,.5,0,.5],h_=new da,c_=new ha,l_=new fa,function(t){if(!this.mat)return!0;var e=this.gv.getFrustum(),i="billboard"===t?a_:s_;h_.makeEmpty(),l_.fromArray(this.mat);for(var n=0,r=i.length;n 1. || tUv.y > 1.) discard;","\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), base.a );","}"].join("\n")},zs(ep=function(t,e){Bn(ep,this,[t,e])},tp,{_80o:function(){}}),zs(ip=function(t,e){Bn(ip,this,[t,e])},$g,{_25Q:1,validate:function(t){var e=this;if(!e.s("geometry.cache")||!e.info){var i=e.gv,n=e.data,r=e.s,o=r("edge.width"),a=n._40I,s=n._41I;if(e.shapeModel=e.info=U,a&&s){var h,c,l,u,d,f,g=n.isLooped(),p=r(Jt),_=G.getEdgeType(p);if(_){var v=_(n,pc(e,i,n,g,p),i,e._19Q);if(!v.points||v.points.isEmpty())return;u=e.info={},d=v.segments,f=(l=v.points).size();for(var y=a.getElevation(),m=s.getElevation(),b=0;bp+s!nf!{njbTuu5o!jnppQe`fmmhW!j*f!xfNwbjuusdjfyqj>p!o^N!b4u!s]j^y!<3\v!!]vyojjsgupbsNno!pnjbuud5f!kwpjsfqx!N)b!u>s!jfywt!jfu{jjpToup!mfp{sjq!jodpljDupjmtppsQ<`\vm\vh!!v\vob!uo!psjfutjptmpvQuwjnp!o\v<<\v*!!v1o/j2g!p-senf!ncspppgmt!ovbtsfuT!j){5fdBfsws!b>z!!!jetfQnfssptgqtfodbusjuw!f4Ndbfuws!j\vy~)!!\vnn!]s!p3m!p^D]w!!4\v!|^!!*>s>p!m.p!D2f/t1v<)\v!!g~j\v!\vf!twmpfj!e\v!~n!b\vjq!jsdplmjpoDhw*!!\v|^#!\v\v!~q\vs~f!d\vjb!us!!esjpgmgpvDthfbu>z!f+d!usbpcmmpfDl!jsophm!p%D%f!tvvtgfgDjpem!p\vs|*!!f|t\vm!fe!j~g!g\vvp!!w-f{dz5y)/!swpDmp",zs(sp=function(t,e){Bn(sp,this,[t,e]),this._needRecoverPosition=!0},$g,{_25Q:1,validate:function(t){var e=this,i=e.data,n=e.s,r=i.getPoints(),o=r.size();e.dispatchBoundingBoxChanged();var a=i.p3(),s=e.mat=Hs();ju(s,a),fl(s,i.getFinalRotation3d(),i.getRotationMode());var h,c=i.getScale3d(),l=i._dynamicScale3d;l&&(c[0]*=l[0],c[1]*=l[1],c[2]*=l[2]),Nu(s,c),ju(s,Us(a)),e.s("geometry.cache")&&e.shapeModel||(e.shapeModel=e.info=U,!(1w!fwdV3w!\vw!!.w!f1d/53)!q+p!ty/^#~q\vsp!ob!/isjphmipqD!hgbmspGb`umw!Vswpn,b!ymcpmdv\vs<<*\v!v5osjvgmpcsgnp!eg!m+p!b*u!!ubdqffsssupvdsufdp,b!um!pgdp\vdy!/3w6V6w/!!-0s!p3m6p7D/ug,s!bmdpudj\vp:!3w/f1d.4!))!33d6f7w/!!)+!!,3!6z7y//!w+V!w3!6-7s/p-m!p3D6u7!/)!E+3!f3s6v7u/y-f!u3!6>7,/!!m*pf!qVtobq!b+d!l*E!p5x/o1t.d!b-m1f/!10!!)w3fddf5w)!!)Q!b,d!lzGyb/dwuVpws!t--s!p2m/p!D*ul,S!HmCpBdU\vpu,!!jmop!dw\vfj,p!om!p*d!\v*<<*\v!~5\vsgvmmpcbgup!eq!f+s!t*q!fuddufjswsfpEdfuqdufiqUtpbW!j+f!x*[!):!3d/p1o!t-u:!3j/o1!!g)m3pdbfuw!!j)o!w,D!mzjyq/[w-V!wd!p-ostpum!pjDou!!g)mEp3bfus!voufybfsu-!!>d,p!omtpud!\vj\v,g!mmppbdu\v!-,!!gmbpsdD\vm/!wwVfwd!3-)s!p2m/p1D-u!!b)tEq3ffdsuv!u*y!,)!vmtpfdE\vfp!dhufdufWqjtfbx![+)!!*h!f:u3E/f1q!u-i:)3!/w1V.w!!)*3!d*fm!p)D!ug!p)dEv3tf!s,v!uwyjffux![>!,*!c!gwpfed!3+!!)*!!dumdbfnsqs)p!dgubddfuqptsb!!++!!b*q!f5s/u1v.s!f--1!/.1n!b)y3cdmfvws!-)!!n,b!yzcym/vwsV!w*!!-*ss,!!>m!pwdf\vd<3*!!)8!sdvmmbcngqp)e!!u+f!y*u!vusdff3sEs)p!duuEdffqqutib-!!+w!f*d!3:)3w/V1w./!y--:!32//11!!).3!dwfVww!/)z!*,!!*z/yb/!w+V!wb!q-fsspumvpsDfu-!!).En3bfyscvmuvysf-u!!n>b,y!cmmpvds\v!<**!!*8d!uedpfgqctmbv!s+!!+*!!11//:1!!zeyp/gwcVmwv!s-!s+p!m1p/D8us,5!!m>p!de\vpu!dwffqdt5b)!!+1!/*1!!:*31!!u)f3ydufvws!f)3!E,)!!zuyD/pwmVpws!--!swpVmwp/Dyuz!!)*E<3\vfdspvmu!y,f>u!!u>f,y!umvpsdf\v3v!uuyffyuu!v>s,f!3mEp)d!\vu3!fusfvyuuyvfsuf!3>E,)!!mupDdp\vmE!3uffsyvuuvysffu3!E>),!!umDppdm\vp)!Eu3ffysuvvusyff3uE!)>!,u!Dmppmdp\vs<-*!!w:Vswv/myczg!p,e!!)+!!w*f!du3d)f!s1s/p5d1u-d!f1q/t1b!!*+!!+*!!b8t4q/f1d.u!d-p6s2s/f1d.u!!)*3!d+f!we!p)g!c,m!vzsy!/*wp!Duuf!y)uEv3sffs3vEu)y!fuuD!p>m,p!sm-p!dw\vVm!puDfuy!u)vEs3ff3sEv)u!yufDup!m>p,s!-m!pwdV\vwp!mupfDyuu!v)sEf33fEs)v!uuyDfpum!p>s,-!!mwpVdw\v/m!puDfuy!u)vEs3ff3sEv)u!yufDup!m>p,s!-m!pwdV\vws!pumfpyDuuv!s)fE33Ef)s!vuuDypfmup!s>-,!!wmVpwd/\vy-!supfmypuDvus!f)3EE3)f!suvDupymfpus!->!,w!Vmwp/dy\vz!!-usfpymupvDsuf!3)EE)3!fusDvpumypfsu-!!>w,V!wm/pydz\v!<,*!!)s!vwmfcdg3p)e!!1+/!4*8!-u!d1f/s2s6p!d*u!d+f!qbttbq!f+d!u*d!p1s/s1f!d-u5!/*1!.+!!)e3pdgfcwm!v)s!!,*!-!supfmypuDvus!f)3E",(gp=Gl.graph3d.PostProcessing.HueSaturation=function(r){function o(){u=!0;var t=r.getGL();c=new Bd.RenderTarget(r,t),h=r._postProcessing.createShader(t,gp.hueSaturationShader),a=Zf.Buffer.createIndexBuffer(t,new Uint16Array([0,2,1,1,2,3])),s=Zf.Buffer.createVertexBuffer(t,new Float32Array([0,0,1,0,0,1,1,1]))}var a,s,h,c,l=!1,u=!1,d=[],f=[],g=[];this.serializeProperties={hue:[0,0,0,0,0,0,0],saturation:[0,0,0,0,0,0,0],lightness:[0,0,0,0,0,0,0]},this.resetProperties=function(){var t,e=this.serializeProperties;for(t in e)this[t]=e[t]},this.resetProperties(),L.defineProperties(this,{enable:{get:function(){return l},set:function(t){!!l!=!!t&&((l=t)&&!u&&o(),r.iv())}},hue:{get:function(){return d},set:function(t){if(d!==t&&7===t.length){for(var e=0;e<7;e++)d[e]=t[e]/180;r.iv()}}},saturation:{get:function(){return f},set:function(t){if(f!==t&&7===t.length){for(var e=0;e<7;e++)f[e]=t[e]/100;r.iv()}}},lightness:{get:function(){return g},set:function(t){if(g!==t&&7===t.length){for(var e=0;e<7;e++)g[e]=t[e]/100;r.iv()}}}}),this._42=function(t,e){if(l){u||o();var i=e.width,n=e.height;if(i&&n){c.setSize(t,i,n),wu(t,c.frame),r.setViewport(t,0,0,c.width,c.height),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),h.bind(),t.activeTexture(t.TEXTURE0+0),$u(t,e.texture);e=h.uniforms;return e.image=0,e.hue=d,e.saturation=f,e.lightness=g,a.upload(),s.upload(),h.attributes.pos.pointer(s),t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0),$u(t,null),Eu(t),c}}}}).hueSaturationShader="!!\vb~u!u\vsf!dw3V!ww!V\vw<<*\v1\v/!2w!p-j1e/!1n!b-j1o/)2w!p,j!e1*/!3|!\v+!!hzm/`tQppqt.j!u-j1p/o2!!>.!!w1f/d35!)+q!pyt/^#!!\vq~s!f\vdb!nsqpmmfpsD3hEb!sjGn`bmhhf!<\v\vf!tmtt]iN!B\vY\v`~S!B\vO~H!F\v^<!!gfmhpobbuS!titvffoBumimh-j!mg!m\vpv!ff!h>o!bjSooWpbjmuvbfs!v,u!b)ti!v\vf3!/f1h1>*!!ssffuuovvspod!`wfbvmiv)f!!g,j!!2\v/|1!<*\v,!,fsmftufo!vjpgd!`)fwvbim!v\v!!sffmutofv!psdf`ufvvsio!!uwobjm)v!fst!bfuhvosbbsu!j\vpm!pfbhuo!bjso!W*b7m!v>f?-!!fghmopbbsu)!!tgbju!v\vs~b!u\vj~p!o\vBb!ofhhfo*b!s|!\v\v!|g!m*p6b/u1!!w,b!m*vsff!u>o!vjpodW`bfmvvif)!u+b!p)m2g/!1=!!,i!)t!bgujv!s\vb|u!j*p,o,Bsmfmu!o,v!ptdb`ufvvsib!uv!fs-f!u1o/v1p-d!`2f/v1i*!u!!fmhjohbisu!oufotjt!S\vbp!mmgj!h\vih!iiu!oufbtptmSgb!o\vhu!vmstoi!!j4odWfbwm!v\vfu!vsspom!pjdo!W5bdmfvwf!!\v,|!!)*w)!o+j!b)n2!/e1j!p.w!!j\vo\vW~b!m\vvp!biu!!\vg~3!-\v!!,i!vif!*\v!||!\v*!1j/g1!!)=i!vif)!!=g!j1!/\v1\v*~\v!!\viE!d2!/01!<*\vh!!f.m!tsf)!!j,g!!1)/i5v!f>!!?i!!2\v/|1!*f\vt!mifv!f~!!.\v>7!/i1!!\v+|!!i*vyfb*N!d=!!>2>/!1h*)\v!!gsjf!tf!t>m!fg!2~!!,\v!<)bgu3m!f.E!dg!20*!!*+c!!7./!1h!)+!!>i!vif!<\v\v|!!f*mytbfN!dj!g>!>)!)s3)/!1g!j+!!\vi\vv.!!g13/<3\v)!!f0m!tbfu!mjfgE!d)!);4!/*1o!j+N!di!v,f!*y!b=N!d3)/!10*!\vb!usmfftE!d>!!@g!26!/,1!!)=g!3m!!.>!!gt2!*\v!\v+!!.b!uimvffE*d!!+u!b7p/m1gb!Ngd2)3!smh!c\v)\vwc!*>c!!1-/h1)*o!j|n\v!!-ssh)co!j>n!!w>f!do4j)Nidt!mu/b{p*m!!|c\v!!ugbmppmbgu!!\vg<3hj!gh!!)uibtpmm/g{!!\v=\v!!sg!3u!b>p!migt!m\v/<{1!/+1!!)>2!/m1!!u,b!pimtgm!/\vz<*1m!ttf!\vu!bgp3m!g>!!\vi!!iit!mu/bzp!m.g!!i\vt|m!/*zd!!+4!diftwm)/m{t~!!3\v/<1c!h+s!!iotsmv/u{f!s.!!\vg~3!<\v\v<\v*!*s1h/c4/0s1!/>2!)i!v.f!3ys/hmct)ig!2--3!gg!3--2!gi)tcmh/sy3!f,v!i)!2>/!1c0/4c/h1s*!*\v<<\v*!ys/hmct/ih!!->3!gi!v-f23gs)hc",(pp=Gl.graph3d.PostProcessing.Blur=function(a){function s(){f=!0;var t=a.getGL();d=new Bd.RenderTarget(a,t),l=a._postProcessing.createShader(t,pp.hBlurShader),u=a._postProcessing.createShader(t,pp.vBlurShader),h=Zf.Buffer.createIndexBuffer(t,new Uint16Array([0,2,1,1,2,3])),c=Zf.Buffer.createVertexBuffer(t,new Float32Array([0,0,1,0,0,1,1,1]))}var h,c,l,u,d,i,n=this,r=!1,f=!1;this.serializeProperties={value:0},this.resetProperties=function(){this.value=0},L.defineProperties(n,{enable:{get:function(){return r},set:function(t){!!r!=!!t&&((r=t)&&!f&&s(),a.iv())}},value:{get:function(){return i},set:function(t){i!==t&&(i=t,a.iv())}}}),this.resetProperties(),n._42=function(t,e){return r?n.drawImpl(t,e,i):void 0},n.drawImpl=function(t,e,i,n){f||s();var r=e.width,o=e.height;if(r&&o){n&&(r*=n,o*=n),d.setSize(t,r,o),wu(t,d.frame),a.setViewport(t,0,0,d.width,d.height),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),l.bind(),t.activeTexture(t.TEXTURE0+0),$u(t,e.texture);n=l.uniforms;return n.image=0,n.value=i/r,h.upload(),c.upload(),l.attributes.pos.pointer(c),t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0),Eu(t),wu(t,e.frame),a.setViewport(t,0,0,e.width,e.height),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),u.bind(),t.activeTexture(t.TEXTURE0+0),$u(t,d.texture),(n=u.uniforms).image=0,n.value=i/o,h.upload(),c.upload(),u.attributes.pos.pointer(c),t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0),Eu(t),$u(t,null),d}}}).hBlurShader="!!\vb~u!u\vsf!dw3V!ww!V\vw<<*\v1\v/!2w!p-j1e/!1n!b-j1o/)2w!p,j!e1*/!3|!\v+!!hzm/`tQppqt.j!u-j1p/o2!!>.!!w1f/d35!)+q!pyt/^#!!\vq~s!f\vd!!isjphmipqD!hgbmspGb`um\v,!!wnpvjte!!\vn!!-wffvdm5b)w!!1+/!11!/*4)!3udffywu!v-sffh3bEn)j!!j)nEb3hffs-v!uwyffdu3!)>!,w!Vnwv/ty!!\v.w!!u)f3ydufvws!f-3fEh)b!njjn!b)hEf3-f!swvfudy3f)u!!w>V,w!/nyv!t.!!\v4w!!u)f3ydufvws!f-3fEh)b!njjn!b)hEf3-f!swvfudy3f)u!!w>V,w!/nyv!t.!!\v3)!Eu3ffysuvvusyff3uE!)>!,j!nnbvhtf!-\v!=La?(delete t._58I,t.iv()):w(function(){t._94O()},La))},t._93I=function(){var t,e,i,n,r,o,a,s=this,h=s._27I;s._58I||!s._autoHideScrollBar?(h||or(s._79O,h=s._27I=tr()),t=(a=s._29I).height,e=s._59I,i=s.getScrollBarSize(),n=a.width-i-2,r=t*(-s.ty()/e),o=t*(t/e),a=h.style,t=La?(delete t._95O,t.iv()):w(function(){t._94I()},La))},t._92I=function(){var t,e,i,n,r,o,a,s=this,h=s._28I;s._95O||!s._autoHideScrollBar?(h||or(s._79O,h=s._28I=tr()),t=(a=s._29I).width,e=s._91I,i=s.getScrollBarSize(),n=a.height-i-2,r=t*(-s.tx()/e),o=t*(t/e),a=h.style,t=t.size()?U:t.get(e)},t.onDataDoubleClicked=function(){},t.onDataClicked=function(){},t.adjustTranslateX=function(){return 0},t.adjustTranslateY=function(t){var e=this.getHeight()-this._59I;return te.y+i?this.ty(-r+i-n):ri&&(t._14I=i),t._99I&&o&&t._99I(),(t._40o()||t._41o())&&(t._59I+=t.getScrollBarSize(),t._99I&&o&&(t._91I+=t.getScrollBarSize())),gr(n,t.tx(),t.ty(),1),o?t._12I(n):t._24I&&t._13I(n),t._93I(),t._92I(),n.restore(),t._32I=t._24I=t._96I=U,e&&(t.scrollToIndex(t.getRowIndex(e)),delete t._23I),t.tx(t.tx()),t.ty(t.ty())},t.canHandleSelectMode=function(){return!0}},_a._48o=function(t){t._rootVisible=!0,t._rootData=U,t._35o=function(){this._expandMap={},this._levelMap={}},t.validateModel=function(){var t=this,e=t._rootData;t._rows.clear(),t._levelMap={},t._rowMap={},t._currentLevel=0,e?t._rootVisible?t.isVisible(e)&&t.buildData(e):t.buildChildren(e):t.buildChildren(),delete t._currentLevel},t.buildData=function(t){var e=t._id,i=this._rows;this._rowMap[e]=i.size(),i.add(t),this._levelMap[e]=this._currentLevel,this.isExpanded(t)&&(this._currentLevel++,this.buildChildren(t),this._currentLevel--)},t.buildChildren=function(t){var e=this,i=t?t._children:e._dataModel._roots,n=e.getCurrentSortFunc();n&&e.isChildrenSortable(t)?i.toList(e.isVisible,e).sort(n).each(e.buildData,e):i.each(function(t){e.isVisible(t)&&e.buildData(t)})},t.getLevel=function(t){return this._levelMap[t._id]},t.getToggleIcon=function(t){var e=this._loader,i=this._collapseIcon;return e&&!e.isLoaded(t)?i:t.hasChildren()?this.isExpanded(t)?this._expandIcon:i:U},t.isCheckMode=function(){return this._checkMode!=U},t.isChildrenSortable=function(){return!0},t.handleDataModelChange=function(t){t.kind===Ct?delete this._expandMap[t.data._id]:t.kind===Mt&&(this._expandMap={}),this.ivm()},t.toggle=function(t){this.isExpanded(t)?this.collapse(t):this.expand(t)},t.isExpanded=function(t){return 1===this._expandMap[t._id]},t.expand=function(t){var e=this._loader;this.isExpanded(t)||(e&&!e.isLoaded(t)&&e.load(t),this._expandMap[t._id]=1,this.ivm(),this.onExpanded(t))},t.onExpanded=function(){},t.collapse=function(t){this.isExpanded(t)&&(delete this._expandMap[t._id],this.ivm(),this.onCollapsed(t))},t.onCollapsed=function(){},t.expandAll=function(t){var e;t?(this.expand(t),t.eachChild(function(t){this.expandAll(t)},this)):((e=this)._dataModel.each(function(t){t.hasChildren()&&(e._expandMap[t._id]=1)}),e.ivm())},t.collapseAll=function(){this._expandMap={},this.ivm()},t.makeVisible=function(t){if(t)if(!this._rootData||t.isDescendantOf(this._rootData)){for(var e=t._parent;e;)this.expand(e),e=e._parent;this._23I=t,this.iv()}},t.checkData=function(t){var e,i=this._checkMode,n=this.sm(),r=n.co(t);if(!n.sg()||!r){if(this._32o=1,i===it)r?n.rs(t):n.as(t);else if(i===Ae)(e=new Lh(t)).addAll(t._children);else if("descendant"===i)e=new Lh,xp(t,e);else if("all"===i&&(e=new Lh,xp(t,e),!r))for(var o=t._parent;o;)e.add(o),o=o._parent;e&&(r?n.rs(e):n.as(e)),delete this._32o}},t.drawTree=function(t,e,i,n,r,o,a){var s=this,h=s._indent,c=s._levelMap[e._id],l=s.getIconWidth(e),u=Qa(s.getToggleIcon(e));u?(Za(t,u,(n+=h*c)+h/2,r+a/2,e,s),n+=h):n+=h*(c+1),s._checkMode&&(Za(t,s.getCheckIcon(e),n+h/2,r+a/2,e,s),n+=h),s.drawIcon(t,e,n,r,l,a),s.drawLabel(t,e,n+l,r,a)}},_a._14Q=function(t){t.getIcon=function(t){return t.getIcon()},t.getIconWidth=function(t){return this.getIcon(t)?this._indent:0},t.drawIcon=function(t,e,i,n,r,o){var a,s;r&&(a=this.getBodyColor(e),(s=Qa(this.getIcon(e),a))&&(o-=this.isRowLineVisible()?1:0,Ka(t,s,qe,i,n,r,o,e,this,a),bo(t,this.getBorderColor(e),i,n,r,o)))},t.drawLabel=function(t,e,i,n,r){ss(t,this.getLabel(e),this.getLabelFont(e),this.getLabelColor(e),i,n,0,r)}},_a._50o=function(t){t._98I=function(){var t=this._39o=new Nh;this._60I=new Lh,t.mm(this._17o,this),t.md(this._18o,this),t.mh(this._19o,this)},t.setColumns=function(t){this._39o.clear(),this.addColumns(t)},t.addColumns=function(t){var i=this._39o;t.forEach(function(t){var e;t instanceof Mp||(e=ns(t.className),t=Wa(e||Mp,t)),i.add(t)})},t.onColumnClicked=function(){},t.onCheckColumnClicked=function(){},t._3Q=function(t){for(var e,i=0,n=this._60I,r=n.size();i=n.x&&r.add({column:t,startX:i._91I}),i._91I=e)})},t.drawData=function(n,r,o){var a=this,s=a._rowHeight,h=s*o,c=a.isSelected(r),t=a._29I,e=t.x,t=t.width;a.drawRowBackground(n,r,c,e,h,t,s),a._60I.each(function(t){var e=t.column,i=t.startX,t=e.getWidth();0=f&&n.xs){n.ty(s-E.endY);break}}}n.ty(n.ty())}else if(d||f){n._9o&&(i.x=0,wr(n._8o.getView(),i)),rr(t,_,s);v=fr(t),y=0;if(gr(v,0,n.ty(),1),v.clearRect(0,0,_,s),c.clear(),o._roots.each(function(t){var e;t.isVisible()&&(p&&p.tab===t||(e=n.drawTab(v,t,0,y,_,h,n._tabBackground)),c.add({_75o:e,tab:t,startY:y,endY:y+h,height:h}),y+=h+l)}),n._23Q=N(0,y-l),p&&(x=p.position,n.drawTab(v,p.tab,0,p.startY,_,p.height,n._moveBackground),lo(v,0,x,_,1,n._insertColor)),v.restore(),n._selectionChanged){n._selectionChanged=!1;for(m=n.ty(),b=0;bs){n.ty(s-E.endY);break}}}n.ty(n.ty())}else{n._9o&&(i.y=0,wr(n._8o.getView(),i)),rr(t,a,h);var x,v=fr(t),w=0;if(gr(v,n.tx(),0,1),v.clearRect(0,0,a,h),c.clear(),o._roots.each(function(t){var e,i;t.isVisible()&&(i=n.getTabWidth(t),p&&p.tab===t||(e=n.drawTab(v,t,w,0,i,h,n._tabBackground)),c.add({_75o:e,tab:t,startX:w,endX:w+i,width:i}),w+=i+l)}),n._64I=N(0,w-l),p&&(x=p.position,n.drawTab(v,p.tab,p.startX,0,p.width,h,n._moveBackground),qn(v,n._insertColor,x,0,h)),v.restore(),n._selectionChanged){n._selectionChanged=!1;for(var E,T=n.tx(),b=0;ba){n.tx(a-E.endX);break}}}n.tx(n.tx())}for(var S=[],I=r.children,b=0;b=t.startX&&n<=e&&s._7Q({tab:h.tab,startX:h.startX+r,width:h.width,front:i,insertTab:t.tab,position:i?N(0,t.startX-a):q(s._64I,e+a)})}))):(r=_s(t).y-e.y,!e._25o&&!e.moving&&2=t.startY&&o<=e&&s._7Q({tab:h.tab,startY:h.startY+r,height:h.height,front:i,insertTab:t.tab,position:i?N(0,t.startY-a):q(s._23Q,e+a)})})))},handleWindowMouseUp:function(t){this.handleWindowTouchEnd(t)},handleWindowTouchEnd:function(){var t,e,i,n,r=this,o=r.tv,a=o._tabPosition,s=o.getTabModel(),h=s._roots,c=r._73o;r.moving?((t=o._23o)&&t.insertTab!==t.tab&&(e=t.tab,i=h.remove(e),0<=(n=h.indexOf(t.insertTab))&&(t.front||n++,n<=h.size()&&(h.add(e,n),s._38I(e,i,n)))),o._7Q(U),delete r.moving):!r._25o&&c&&(e=c.tab,(n=r._74o)&&n.tab!==e||(!e.isDisabled()&&xs(c._75o,r.lp)?(c=function(){var t=h.indexOf(e);s.remove(e),o.onTabClosed(e,t)},o.onTabClosing(e,c)&&c()):e.isDisabled()||o._8o===e||s.sm().ss(e))),r._25o=r._73o=r._74o=a===ct||a===lt?r.x=r.lp=r.tx=U:r.y=r.lp=r.ty=U}}),Sp.PropertyView=function(t){var e=this;e._view=$n(1,e),e._canvas=er(e._view),or(e._view,e._79O=tr()),e._rows=new Lh,e._28o=new Lh,e._26o={},e._26Q={};var i=e._propertyModel=new Nh,n=e.ivm;i.mm(n,e),i.md(n,e),i.mh(n,e),e.dm(t||new Nh),new Dp(e)},Ip("PropertyView",L,{ms_ac:[qt,Xt,Wt,Ee,Te,"categorizable",de,we,ye,me,be,le,ue,ce,"selectRowIndex",se,"background",fe,ve,pe,_e,ge],ms_v:1,ms_dm:1,ms_fire:1,ms_sm:1,_49o:1,ms_txy:1,ms_lp:1,ms_vs:1,_45o:1,_47o:1,ms_tip:1,_29I:Ji,_59I:0,_9I:0,_selectRowIndex:-1,_editable:!0,_batchEditable:!0,_categorizable:!0,_indent:Pa,_background:G.propertyViewBackground,_expandIcon:G.propertyViewExpandIcon,_collapseIcon:G.propertyViewCollapseIcon,_scrollBarColor:za,_scrollBarSize:Va,_autoHideScrollBar:xa,_selectBackground:G.propertyViewSelectBackground,_rowHeight:Da,_rowLineVisible:G.propertyViewRowLineVisible,_rowLineColor:G.propertyViewRowLineColor,_10I:.5,_columnLineVisible:G.propertyViewColumnLineVisible,_columnLineColor:G.propertyViewColumnLineColor,_labelColor:G.propertyViewLabelColor,_labelSelectColor:G.propertyViewLabelSelectColor,_labelFont:G.propertyViewLabelFont,getRows:function(){return this._rows},getColumnPosition:function(){return this._10I},setColumnPosition:function(t){t<0&&(t=0),1c&&(t._14I=c);var d=fr(e),f=t._background;gr(d,0,-r,1),d.beginPath(),d.rect(0,r,i,n),d.clip(),d.clearRect(0,r,i,n),t._93db(d),f&&lo(d,0,0,a,u,f);for(var g=t._31I;gl.y+l.height&&(c=s.y+r-l.y-l.height),c&&(e.ty(e.ty()-c),h.y-=c),e.beginEditing({data:o.data,property:a,value:e.getValue(o.data,a),event:t,rect:s,editorRect:h,view:e}))),e.setSelectRowIndex(n)),this.clear()},handleWindowMouseMove:function(t){this.handleWindowTouchMove(t)},handleWindowTouchMove:function(t){var e,i=this.pv,n=this.ty,r=this.cp,o=_s(t),a=this._62O;"p"===a?i.setTranslateY(n+o.y-r.y):"c"===a?16<(e=i.getWidth()-i._indent)&&((t=this.p-(r.x-o.x)/e)<(e=16/e)&&(t=e),1-e=r.startX&&oo.startX&&no.startX&&n 0 && y.getShaderPrecisionFormat(y.FRAGMENT_SHADER, y.HIGH_FLOAT).precision > 0) return "highp"; + o = "mediump" + } + return "mediump" === o && y.getShaderPrecisionFormat(y.VERTEX_SHADER, y.MEDIUM_FLOAT).precision > 0 && y.getShaderPrecisionFormat(y.FRAGMENT_SHADER, y.MEDIUM_FLOAT).precision > 0 ? "mediump" : "lowp" + } + var p; + h = h || {}; + var K = "undefined" != typeof WebGL2RenderingContext && y instanceof WebGL2RenderingContext, + x = h.precision !== Z ? h.precision : "highp", + D = r(x); + D !== x && (console.warn("WebGL:", x, "not supported, using", D, "instead."), x = D); + var c = h.logarithmicDepthBuffer === !0, + F = y.getParameter(y.MAX_TEXTURE_IMAGE_UNITS), + C = y.getParameter(y.MAX_VERTEX_TEXTURE_IMAGE_UNITS), + Y = y.getParameter(y.MAX_TEXTURE_SIZE), + n = y.getParameter(y.MAX_CUBE_MAP_TEXTURE_SIZE), + I = y.getParameter(y.MAX_VERTEX_ATTRIBS), + e = y.getParameter(y.MAX_VERTEX_UNIFORM_VECTORS), + o = y.getParameter(y.MAX_VARYING_VECTORS), + O = y.getParameter(y.MAX_FRAGMENT_UNIFORM_VECTORS), + j = C > 0, + i = K || !!V.get("OES_texture_float"), + s = (K || !!V.get("OES_element_index_uint")) && "undefined" != typeof Uint32Array, + q = j && i, + k = K ? y.getParameter(y.MAX_SAMPLES) : 0; + return { + getMaxAnisotropy: d, + getMaxPrecision: r, + precision: x, + logarithmicDepthBuffer: c, + maxTextures: F, + maxVertexTextures: C, + maxTextureSize: Y, + maxCubemapSize: n, + maxAttributes: I, + maxVertexUniforms: e, + maxVaryings: o, + maxFragmentUniforms: O, + vertexTextures: j, + floatFragmentTextures: i, + elementTypeUint: s, + floatVertexTextures: q, + maxSamples: k + } + } + + function i(J, U) { + return J.z !== U.z ? J.z - U.z : J.id - U.id + } + + function p(q, r) { + return q.z !== r.z ? r.z - q.z : q.id - r.id + } + var Y = "ht"; + if (!x[Y]) { + ! function () { + Date.now && Date.prototype.getTime || (Date.now = function () { + return (new Date).getTime() + }), x.performance && x.performance.now || function () { + var $ = Date.now(); + x.performance || (x.performance = {}), x.performance.now = function () { + return Date.now() - $ + } + }(); + for (var Q = Date.now(), $ = 16, J = ["ms", "moz", "webkit", "o"], n = 0; n < J.length && !x.requestAnimationFrame; ++n) x.requestAnimationFrame = x[J[n] + "RequestAnimationFrame"], x.cancelAnimationFrame = x[J[n] + "CancelAnimationFrame"] || x[J[n] + "CancelRequestAnimationFrame"]; + x.requestAnimationFrame || (x.requestAnimationFrame = function (_) { + var k = Date.now(), + d = $ + Q - k; + return 0 > d && (d = 0), Q = k, x.setTimeout(function () { + Q = Date.now(), _(performance.now()) + }, d) + }), x.cancelAnimationFrame || (x.cancelAnimationFrame = function (G) { + return x.clearTimeout(G) + }), o.assign === Z && (o.assign = function (P) { + if (P === Z || null === P) throw new TypeError("Cannot convert undefined or null to object"); + for (var h = o(P), z = 1; z < arguments.length; z++) { + var f = arguments[z]; + if (f !== Z && null !== f) + for (var s in f) o.prototype.hasOwnProperty.call(f, s) && (h[s] = f[s]) + } + return h + }) + }(); + var U = x.document, + F = null, + O = x[Y] = {}, + M = x[Y + "config"], + u = O.Default = M && M.Default || {}, + z = O.Style = M && M.Style || {}, + I = O.Attr = M && M.Attr || {}, + C = function () { + return !0 + }, + Q = function (R) { + return R + }, + j = function (_) { + return !_ + }, + S = O.Color = M && M.Color || {}, + t = O.IsGetter = M && M.IsGetter || {}; + ! function () { + var h = !1; + try { + var a = o.defineProperty({}, "passive", { + get: function () { + return h = !0, Z + } + }); + x.addEventListener("test", a, a), x.removeEventListener("test", a, a) + } catch (t) { + h = !1 + } + u.passiveSupported = h + }(); + var e, G, H, g, f = u.passiveSupported, + J = u.eventListenerOptionsFalse = f ? { + passive: !1, + capture: !1 + } : !1, + r = u.eventListenerOptionsTrue = f ? { + passive: !1, + capture: !0 + } : !0, + K = function (m, t, W, C) { + m.addEventListener(t, W, C ? r : J) + }, + b = function (l, s, x, H) { + l.removeEventListener(s, x, H ? r : J) + }, + h = Math, + A = h.round, + T = h.floor, + s = h.ceil, + w = h.sqrt, + q = h.max, + V = h.min, + X = h.abs, + k = h.cos, + c = h.acos, + n = h.sin, + P = h.pow, + a = h.asin, + L = h.exp, + W = h.PI, + $ = 2 * W, + N = W / 2, + R = h.tan, + D = h.atan2, + m = h.random, + v = h.log, + _ = !1, + Ad = !1, + Zb = x.parseInt || global.parseInt, + yh = "2021-6-15", + Qe = x.navigator ? x.navigator.platform.indexOf("Win") > -1 : !1, + ds = function (p) { + return p * p + }, + cd = x.setTimeout, + nr = x.clearTimeout, + ge = x.location, + jb = x.navigator ? x.navigator.userAgent.toLowerCase() : "", + Sq = function (W) { + return W.test(jb) + }, + $f = Sq(/msie/), + Uq = Sq(/msie/) || Sq(/trident/), + Xf = Sq(/msie 10/), + Bj = Sq(/edge/), + es = Sq(/firefox/), + eg = Sq(/mac/), + nf = u.isTouchable === Z ? Qe ? !1 : U ? "ontouchend" in U : !1 : u.isTouchable, + lp = "default", + vq = "single", + tb = "multiple", + wg = "front", + Qq = "back", + nq = "left", + fm = "right", + $c = "top", + Kd = "bottom", + sc = "center", + to = "eye", + Sg = "middle", + Yn = "east", + Wg = "west", + Tb = "north", + Jc = "none", + oe = "px", + Ki = "absolute", + Xe = "border", + _d = "triangle", + Tq = "rect", + Eq = "circle", + xk = "cylinder", + bl = "shape", + Uj = "items", + Fk = "normal", + Ce = "remove", + Tg = "clear", + ul = "width", + Hh = "height", + Dm = "ingroup", + tm = "check", + He = "uncheck", + Hp = "radio", + kj = "radioOn", + yb = "radioOff", + _b = "points", + kd = "values", + Kh = "series", + nh = "body", + Bg = "label", + Qk = "label2", + Rm = "note", + Vk = "note2", + ub = "icons", + Vm = "labelFont", + fe = "labelColor", + Uo = "labelSelectColor", + ke = "note.expanded", + Mh = "note2.expanded", + kh = "edge.expanded", + Ei = "edge.points", + ej = "edge.type", + ac = "rotation", + fc = "hidden", + Pd = "visible", + ih = "tuv", + Df = "no", + Ph = "draw", + nj = "select", + Fi = "currentSubGraph", + op = "selectBackground", + Pi = "autoMakeVisible", + Ji = "autoHideScrollBar", + df = "scrollBarColor", + gd = "scrollBarSize", + Vb = "indent", + Jj = "rowHeight", + Gr = "columnLineColor", + Ln = "rowLineColor", + jh = "columnLineVisible", + Yc = "rowLineVisible", + dj = "visibleFunc", + Zi = "expandIcon", + xj = "collapseIcon", + wi = "checkMode", + go = "sortFunc", + Me = "editable", + Zh = "batchEditable", + qh = "tristate", + Sh = "asc", + rj = "desc", + pr = "position", + zl = "__", + pd = "elevation", + Wf = "children", + gq = "translateX", + wb = "translateY", + uk = "dataModel", + Pq = "maxSize", + xq = "enc", + Cp = "state", + Yk = xq + "o" + "de", + Lm = "shape3d", + cp = "shape3d.resolution", + lm = "shape3d.visible", + Rb = "shape3d.from.visible", + xh = "shape3d.to.visible", + Je = "shape3d.top.visible", + Ho = "shape3d.bottom.visible", + Sn = "repeat.uv.length", + No = "serializeValue", + Ij = "deserializeValue", + Mg = "centerUniform", + gs = "uniform", + nb = "rgba(255,255,255,0)", + om = "style", + dr = "attr", + Kb = "field", + Gl = "string", + hm = "boolean", + dg = "color", + fj = "int", + Mo = "number", + Nc = "ew-resize", + zi = "ns-resize", + Zk = "pointer", + iq = "auto", + fp = "mousedown", + rp = "mousemove", + cj = "mouseup", + Si = "mouseout", + Xd = "touchstart", + wj = "touchmove", + Sj = "touchend", + Ze = "keydown", + gn = "keyup", + kg = ["DOMMouseScroll", "mousewheel"], + ad = es ? kg[0] : kg[1], + Xl = zl + Y + zl + Yk, + Vr = [Xd, wj, Sj], + vs = [fp, rp, cj, Si, ad, "wheel", "mouseenter", "mouseleave", "mouseover"], + kr = [Ze, gn, "keypress", "input", "contextmenu", "compositionstart", "compositionupdate", "compositionend"], + Ec = nf ? Vr.concat(kr) : vs.concat(kr), + Xm = F, + xn = F, + sq = F, + Ob = cj.length, + Yp = function () { + sq && (nr(sq.timeout), sq = F) + }, + Xk = function () { + sq && me(sq.e, sq.info) + }; + x.addEventListener && (nf || (K(x, Si, function () { + Yp() + }), K(x, ad, function () { + Um() + })), K(x, gn, function (y) { + 91 === y.keyCode ? pl = {} : delete pl[y.keyCode] + }, !0), K(x, Ze, function (b) { + pl[b.keyCode] = !0 + }, !0), K(x, "blur", function () { + pl = {} + })); + var ug, yo, Qg, aj = 0, + nn = F, + Jl = function (Z, A) { + var T = cd(function () { + delete nn[T], wd(nn) && (nn = F), Z() + }, A); + return T + }, + Gk = F, + vi = F, + Zl = {}, + Oe = {}, + ef = {}, + Zm = {}, + Mq = {}, + pl = {}, + Xh = {}, + $d = {}, + Al = {}, + Dc = {}, + Bm = /.json$/, + Gq = /\.(json|bin)$/, + Ok = /^data:image\/svg\+xml/, + $i = {}, + Pc = [], + Xn = {}, + zs = F, + rq = F, + Mr = function () { }, + jm = function () { + throw "Oops!" + }, + bg = [0, 0, 0], + nl = { + x: 0, + y: 0, + width: 0, + height: 0 + }, + de = F, + rm = F, + Wc = F, + vl = function (Z, y) { + Oe[Z] = y, y && y.comps && !y.uuid && (y.uuid = O.Math.generateUUID()), wk[Z] && (y.cacheRule = wk[Z], delete wk[Z]) + }, + Dd = function (V) { + rm && !V._72O && (Wc || (Wc = {}), Wc[V._72O = xp()] = V), ug != F ? Gg() < .05 && g && !yo && (tf = Yp) : tf = El + }, + sd = function (P, X, v, z) { + rm || (rm = {}); + var Q = rm[P]; + if (Q) { + if (Q.url === X) return; + Q.image ? (Q.image.onload = Mr, Q.image.onerror = Mr) : Q.request && (Q.request.onload = Mr, Q.request.onerror = Mr) + } + if (Bm.test(X)) { + var m = new De; + if (rm[P] = { + request: m, + url: X + }, X = u.beforeLoadURL(X, P), X.data) { + var _ = u.parse(X.data); + Sm(P, _), u.handleImageLoaded(P, _) + } else { + m.onload = function () { + if (200 === this.status || 0 === this.status) { + var p = u.parse(m.getResponseText()); + Sm(P, p), u.handleImageLoaded(P, p) + } else Sm(P, u.handleUnfoundImage(P, X) || F) + }, m.onerror = function () { + Sm(P, u.handleUnfoundImage(P, X) || F) + }; + var x = {}; + x.url = encodeURI(X), x.sync = !1, m.send(x) + } + } else { + var _ = new Image; + rm[P] = { + image: _, + url: X + }, /^data:image/.test(X) || (X = u.beforeLoadURL(X, P), X = u.appendTimeStamp(X), X = encodeURI(X), _.crossOrigin = u.crossOrigin), u.convertImageSrc(X, function (f) { + Uq && (X.toLowerCase().indexOf(".svg") > 0 || Ok.test(X)) ? (U.body.appendChild(_), _.style.visibility = "hidden", _.onload = function () { + cd(function () { + if (v && (_.width = v), z && (_.height = z), !_.width || !_.height) { + var H = _.width || _.clientWidth, + B = _.height || _.clientHeight; + _.width = H, _.height = B + } + u.handleImageLoaded(P, _), Sm(P, _), U.body.removeChild(_), _.style.visibility = "" + }, 180) + }, _.onerror = function () { + Sm(P, u.handleUnfoundImage(P, X) || F), U.body.removeChild(_), _.style.visibility = "" + }) : (_.onload = function () { + v && (_.width = v), z && (_.height = z), u.handleImageLoaded(P, _), Sm(P, _) + }, _.onerror = function () { + Sm(P, u.handleUnfoundImage(P, X) || F) + }), _.src = f + }) + } + }, + Sm = function (S, B) { + if (vl(S, B), delete rm[S], wd(rm) && (rm = F, Wc)) { + for (var z in Wc) { + var A = Wc[z]; + A._2O && A._2O[S] && (A.deleteTexture(S), delete A._2O[S]), A.invalidateAll && A.invalidateAll(Z, "imageLoaded", S), A.redraw && A.redraw(), A.iv(), delete A._72O + } + Wc = F + } + if (B && Wc) + for (var z in Wc) { + var A = Wc[z]; + A.invalidateAll && A.invalidateAll(Z, "imageLoading", S), A.redraw && A.redraw(), A.iv() + } + }, + mm = function () { + return v = h && Date, + function () { + return x.performance && x.performance.now ? x.performance.now() : Date.now() + } + }(), + ee = function (u, g, v) { + return { + width: u, + height: g, + comps: ip(v) ? v : [v] + } + }, + eq = function (S, X) { + return { + type: Eq, + rect: [S, X, 1.6, 1.6], + borderWidth: 1, + borderColor: Ur, + gradient: Nf, + gradientColor: Cn, + background: Ur + } + }, + lj = function (H, J) { + return ee(16, 16, { + type: _d, + rect: [4, 4, 10, 8], + background: H, + rotation: J ? 1.57 : 3.14 + }) + }, + mf = function (O, h) { + return ee(16, 16, { + type: _d, + rect: [4, 4, 8, 7], + background: O, + rotation: h ? 3.14 : 0 + }) + }, + Oj = function (g) { + var O = g._orientation; + return "horizontal" === O || "h" === O + }, + $o = function (B, l) { + var E = F || 4, + h = F || 1, + v = F || 1; + 0 > E ? E = 0 : E > .25 && (E = .25); + var o, D, p, g, s, y, S, M = .5, + q = [], + T = [], + Q = [], + b = $ / v, + m = $ / h, + a = M - E; + for (D = 0; h >= D; D++) + for (g = -W + D * m, y = k(g), s = n(g), o = 0; v >= o; o++) p = o * b, S = a + E * y, q.push(k(p) * S, s * E, -n(p) * S), (G = [B, l]) && T.push(o / v, 1 - D / h); + for (D = 0; h > D; D++) { + var i = D * (v + 1), + O = (D + 1) * (v + 1); + for (o = 0; v > o; o++) Q.push(i + o, O + o + 1, O + o, i + o, i + o + 1, O + o + 1), qg.z = ok.z = [B, l] + } + }, + lh = function ($) { + var i = 2, + E = 0; + for (var s in $) s.length === i && Zb(s, 32) === $r && (zs = rq = $[s]), E++; + return E + }, + Cc = function (Z, l, d, G) { + return d || (d = nf ? 5 : 3, d /= G || 1), { + x: Z - d, + y: l - d, + width: 2 * d, + height: 2 * d + } + }, + Ub = function (_, e, A, d) { + var y = this; + e || (e = nf ? 5 : 3, A = 20, d = 20); + var p = { + x: _, + y: e, + width: A, + height: d + }; + if (A) + for (var N = 0; A > N; N++) + if (3 === A) d = 20; + else + for (var j = 0; d > j; j++) y = x ? x : A; + var q = { + x: W, + y: 2 * W + }; + if (cf(p, q)) { + var T = Hh[0] + $c[0] + Tg[1] + Sh.length, + g = fc[0] + qh[0] + Tg[1] + nh.length; + Xb[to] = [y[T], y[g]], y[T] = tg[to], y[g] = tg[Lm] + } + }, + kp = function (w) { + return (/ble$/.test(w) || /ed$/.test(w) || t[w] ? "is" : "get") + w.charAt(0).toUpperCase() + w.slice(1) + }, + tg = function (p) { + return "set" + p.charAt(0).toUpperCase() + p.slice(1) + }, + dk = function (M) { + return typeof M === Gl || M instanceof String + }, + Bp = function (c) { + return typeof c === Mo + }, + El = function (_) { + return typeof _ === hm + }, + xl = function (q) { + return q && "object" == typeof q + }, + Mf = function (J) { + return "function" == typeof J + }, + ip = function (l) { + return l instanceof Array + }, + Xo = function (E) { + return E instanceof xr + }, + mh = function (y) { + return ip(y) ? new xr(y) : y + }, + Fq = function (U) { + return U instanceof Dp + }, + Bk = function (N) { + return N instanceof Xg + }, + yl = function (K) { + return K instanceof Lc + }, + Th = function (m, I) { + if (!(m instanceof O.Group)) return !1; + if (!I) return m.isExpanded(); + var $ = I.getDataUI(m); + return $ && $._88I ? !0 : !1 + }, + Qb = function (m) { + return m instanceof Br + }, + Db = function (B) { + return B && "IFRAME" === B.tagName + }, + Oo = function (d) { + return d == F || u.numberDigits == F ? d : parseFloat(d.toFixed(u.numberDigits)) + }, + gc = function (s, $, i) { + var E, L = $.length; + if (i) + for (var z = 0; i > z; z++) + if (3 === L) s.push($[0]), s.push($[1]), s.push($[2]); + else + for (E = 0; L > E; E++) s.push($[E]); + else if (3 === L) s.push($[0]), s.push($[1]), s.push($[2]); + else + for (E = 0; L > E; E++) s.push($[E]) + }, + Il = function (p) { + return p ? xl(p) ? p : {} : !1 + }, + Uh = function (L, O, J) { + var j, b = xl(L) ? L : L.prototype; + for (j in O) J && j in b ? b[j] === Z && console.warn("class", b, "has own undefined property", j, ", keep exist!") : b[j] = O[j]; + return L + }, + sg = function (Y, L) { + if (!("wheelDelta" in L)) { + var A = L.deltaMode; + L.wheelDelta = A === L.DOM_DELTA_PIXEL ? -L.deltaY : A === L.DOM_DELTA_LINE ? 40 * -L.deltaY : 120 * -L.deltaY + } + Y.handle_mousewheel(L) + }, + Hc = function (B) { + return String.fromCharCode(B) + }, + fo = function (N) { + for (var s, f = 0, i = ""; f < N.length; f++) s = N[N.length - 1 - f], "%" === s ? s = "'" : "a" === s ? s = '"' : "]" === s && (s = "\\"), i += Hc(s.charCodeAt(0) - 1); + return i + }, + fi = function (G, e, E) { + G.superClass.constructor.apply(e, E) + }, + wd = function (n) { + for (var g in n) return !1; + return !0 + }, + Ro = function (g) { + return g ? 0 === g.length : !0 + }, + jg = function () { + var w = ""; + return [He[0], Ln[0], Bg[0]].forEach(function (O) { + w += tg(O).slice(3) + }), gs = U && U[w] || Mg, + function (z, V) { + return z === V ? !0 : z.x === V.x && z.y === V.y && z.width === V.width && z.height === V.height + } + }(), + re = function (Q, Z, R) { + return Z > Q ? Z : Q > R ? R : Q + }, + he = function (e) { + return 0 > e ? -1 : e > 0 ? 1 : 0 + }, + Gg = function () { + var z = 1e4 * n(Ob++); + return z - T(z) + }, + Rl = function (L, K, J) { + return ti(L.x, L.y, K.x, K.y, J.x, J.y, J.x + J.width, J.y, !0) || ti(L.x, L.y, K.x, K.y, J.x + J.width, J.y, J.x + J.width, J.y + J.height, !0) || ti(L.x, L.y, K.x, K.y, J.x + J.width, J.y + J.height, J.x, J.y + J.height, !0) || ti(L.x, L.y, K.x, K.y, J.x, J.y + J.height, J.x, J.y, !0) + }, + ti = function (D, w, R, T, d, C, u, b, r) { + var B = (u - d) * (w - C) - (b - C) * (D - d), + l = (b - C) * (R - D) - (u - d) * (T - w); + if (0 !== l) { + var O = B / l, + e = D + O * (R - D), + o = w + O * (T - w); + return r && (e + Wp < V(D, R) || e - Wp > q(D, R) || e + Wp < V(d, u) || e - Wp > q(d, u) || o + Wp < V(w, T) || o - Wp > q(w, T) || o + Wp < V(C, b) || o - Wp > q(C, b)) ? F : [e, o] + } + return F + }, + jq = function (U, Q, _) { + if (U && _) + if (Q) { + if (Q === om) return U.getStyle(_); + if (Q === dr) return U.getAttr(_); + if (Q === Kb) return U[_] + } else if (_ = kp(_), U[_]) return U[_](); + return Z + }, + Di = function (c, W, b, h) { + if (c && b) + if (W) { + if (W === om) c.s(b, h); + else if (W === dr) c.a(b, h); + else if (W === Kb) { + var w = c[b]; + c[b] = h, c.fp("f:" + b, w, h) + } + } else b = tg(b), c[b] && c[b](h) + }, + Wh = function (L, W, X) { + return W && "top" !== W ? "bottom" === W ? { + x: L.x, + y: L.y, + width: L.width, + height: L.height * X + } : "right" === W ? { + x: L.x, + y: L.y, + width: L.width * X, + height: L.height + } : "left" === W ? { + x: L.x + L.width * (1 - X), + y: L.y, + width: L.width * X, + height: L.height + } : void 0 : { + x: L.x, + y: L.y + L.height * (1 - X), + width: L.width, + height: L.height * X + } + }, + cs = function (z, f, b, Q, N) { + f && fl(z, b, Q, 1, N, f) + }, + Id = function (w, R, p, n) { + var E = 1 - w; + return E * E * R + 2 * w * E * p + w * w * n + }, + qg = function (C, I, s, m, O) { + var i = 1 - C; + return i * i * i * I + 3 * i * i * C * s + 3 * i * C * C * m + C * C * C * O + }, + tj = function (h) { + var l, G, t, g, x = 0; + return h.forEach(function (s) { + if (l = s.length, l > 0) + for (G = s[0], g = 1; l > g; g++) t = s[g], x += En(G, t), G = t + }), x + }, + ic = function (D, L, q) { + var j = "__" + D, + l = function (i) { + ("mousedown" === D || "mouseup" === D || "touchstart" === D || "touchend" === D) && wm(i), q.disabled || q["handle_" + D](i) + }; + q[j] || (q[j] = l, K(L, D, l)) + }, + ws = function (D, E, B) { + var N = "__" + D, + W = B[N]; + W && (b(E, D, W), delete B[N]) + }, + em = function (P, V) { + var e = "_" + V; + P[kp(V)] = function () { + return this[e] + }, P[tg(V)] = function (q) { + var n = this[e]; + this[e] = q, this.fp(V, n, q) + } + }, + Ci = function (C) { + return o.create(C) + }, + bh = function ($) { + if (!$.element) { + var W, s; + (W = $.textField) ? s = Wn(Vs.TextField, W) : (W = $.textArea) ? s = Wn(Vs.TextArea, W) : (W = $.button) ? s = Wn(Vs.Button, W) : (W = $.comboBox) ? s = Wn(Vs.ComboBox, W) : (W = $.checkBox) ? s = Wn(Vs.CheckBox, W) : (W = $.radioButton) ? s = Wn(Vs.RadioButton, W) : (W = $.slider) ? s = Wn(Vs.Slider, W) : (W = $.colorPicker) ? s = Wn(Vs.ColorPicker, W) : (W = $.image) && (s = Wn(Vs.Image, W)), s && ($.element = s) + } + }, + ve = function (J, c) { + var P = dd(J); + return P._ht = c, P + }, + Iq = x.top === x ? x.top : x || x.document, + dd = function (p, C) { + var i = U.createElement("div"), + L = i.style; + return i.tabIndex = -1, i.onkeydown = Qc, L.msTouchAction = Jc, Yq(i, F, 0), nf && L.setProperty("-webkit-tap-highlight-color", "rgba(0, 0, 0, 0)", F), p && (L.overflow = fc), C && sn(C, i), i + }, + uo = function (W, M) { + var h = U.createElement("canvas"), + v = h.style; + return v.msTouchAction = Jc, M || (v.pointerEvents = Jc), Yq(h, F, 0), W && sn(W, h), h + }, + Yq = function (A, x, r) { + var u = A.style; + u.border = x ? x + " solid 1px" : 0, u.outline = 0, u.padding = r ? "0 " + r + oe : 0, uj(A) + }, + uj = function (B) { + var I = B.style; + I.position = Ki, I.margin = 0, I.setProperty("box-sizing", "border-box", F), I.setProperty("-moz-box-sizing", "border-box", F) + }, + Bn = function (I, w, u, X) { + X || (X = ij), w != F && (I.width = w * X, I.style.width = w + oe), u != F && (I.height = u * X, I.style.height = u + oe) + }, + sn = function (D, t, m) { + D.appendChild(t), m && (t.style.position = Ki) + }, + qr = function (P, S) { + S.split || (S += ""); + for (var m, z = S.split("\n"), T = 0, K = z.length, e = 0; K > e; e++) { + var w = ln(P.font, z[e]); + w.width > T && (T = w.width), m || (m = w.height) + } + return P.ss = z, { + width: T, + height: m * K + } + }, + Om = function (w, G, t, V, Z, j) { + var J = G.length; + if (1 === J) Lp(w, G[0], t, V, Z); + else + for (var k = t.height / J, H = { + x: t.x, + y: t.y, + width: t.width, + height: k + }, m = 0; m < G.length; m++) j ? nd(w, G[m], V, Z, H.x, H.y, H.width, H.height, j) : Lp(w, G[m], H, V, Z), H.y += k + }, + Lp = function (c, V, W, D, G) { + c.font = D ? D : Fh, c.fillStyle = G ? G : Dh, c.textAlign = sc, c.textBaseline = Sg; + var j, M; + W ? W.width === Z ? (j = W.x, M = W.y) : (j = W.x + W.width / 2, M = W.y + W.height / 2) : (j = 0, M = 0), c.fillText(V, A(j), A(M)) + }, + oh = function (h) { + h.getView && (h = h.getView()); + var W = h.offsetWidth || h.scrollWidth; + return !W && h.style.width && (W = Zb(h.style.width)), W + }, + zp = function (f) { + f.getView && (f = f.getView()); + var r = f.offsetHeight || f.scrollHeight; + return !r && f.style.height && (r = Zb(f.style.height)), r + }, + Jg = function (F, k, X) { + var B = k[0].toUpperCase() + k.substring(1, k.length); + F["webkit" + B] = X, F["moz" + B] = X, F["ms" + B] = X, F["o" + B] = X, F[k] = X + }, + lo = function () { + var Z = function (j) { + Qc(j), j.stopPropagation() + }, + o = function (u) { + Qc(u) + }, + h = [Xd, Ze, fp]; + return function (c, H) { + var P = dd(), + J = P.style; + return J.backgroundColor = u.disabledBackground, c && (J.backgroundImage = "url(" + c + ")", J.backgroundPosition = "50% 50%", J.backgroundRepeat = "no-repeat no-repeat"), H === !1 ? h.forEach(function (x) { + K(P, x, o) + }) : h.forEach(function (R) { + K(P, R, Z) + }), P + } + }(), + Wd = function (C) { + var F = C.getContext("2d"); + return F.save(), F.lineCap = ob, F.lineJoin = Wl, F + }, + tf = function (I, s, m, P) { + wh(I, s * ij, m * ij), P *= ij, 1 !== P && I.scale(P, P) + }, + wh = function (s, n, N) { + s.translate(n, N) + }, + jc = function (z, k) { + k && z.rotate(k) + }, + ec = function (v, i, m) { + i === Z && (i = 1), m === Z && (m = 1), (1 !== i || 1 !== m) && v.scale(i, m) + }, + lg = !1, + L = Iq[tm[1] + gq[0]], + hr = function (i) { + var n = U.activeElement; + if (U.activeElement !== i) { + n && n.forceOnblur && n.forceOnblur(); + for (var C = [], c = i.parentNode; c;) C.push([c, c.scrollLeft, c.scrollTop]), c = c.parentNode; + if (!lg) { + var V = [], + J = []; + try { + for (var $ = x.parent, H = x; $ !== H;) V.push([$, $.scrollX, $.scrollY]), H = $, $ = x.parent; + var N = x.frameElement; + if (N) + for (var X = N.parentNode; X;) J.push([X, X.scrollLeft, X.scrollTop]), X = X.parentNode + } catch (d) { + lg = !0 + } + } + if (nf) i.focus(); + else { + var a = hq(), + k = a.target; + i.focus(), k.scrollLeft = a.left, k.scrollTop = a.top + } + C.forEach(function (I) { + I[0].scrollLeft = I[1], I[0].scrollTop = I[2] + }), lg || (V.forEach(function (g) { + g[0].scrollTo(g[1], g[2]) + }), J.forEach(function (a) { + a[0].scrollLeft = a[1], a[0].scrollTop = a[2] + })) + } + }, + Bq = function (r) { + return r && r.getView ? r.getView() : r + }, + qp = function (R, A, i, d, P) { + if (2 === arguments.length && (i = A.y, d = A.width, P = A.height, A = A.x), R.isSelfViewEvent) R.setX(A), R.setY(i), R.setWidth(d), R.setHeight(P); + else { + var W = Bq(R), + p = W.style; + if ((U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement) !== W) A !== Z && (p.left = A + oe), i !== Z && (p.top = i + oe), d !== Z && (p.width = d + oe), P !== Z && (p.height = P + oe); + else { + var e = u.getWindowInfo(); + p.left = (A = e.left) + oe, p.top = (i = e.top) + oe, p.width = (d = e.width) + oe, p.height = (P = e.height) + oe + } + R.endEditing && !nf && R.endEditing(), R.redraw && R.redraw(), R.invalidate && R.invalidate(), R.onLayouted && R.onLayouted(A, i, d, P), R.fireViewEvent && R.fireViewEvent("layout") + } + }, + Xj = function (D) { + if (!D.touches) return D; + var g = D.touches[0]; + return g ? g : D.changedTouches[0] + }, + gr = function (V) { + return li(V) ? Xj(V).target : V.target + }, + li = function (d) { + return d && "object" == typeof d && "touches" in d + }, + ek = function (n) { + u.popup && u.popup.close(), u.popup = n + }, + si = F, + Ed = function ($) { + si.handleWindowTouchMove($) + }, + Zr = function ($) { + si.handleWindowTouchEnd($), b(x, wj, Ed), b(x, Sj, Zr), si = F + }, + Kn = function (z) { + si.handleWindowMouseMove(z) + }, + tc = function (Z) { + si.handleWindowMouseUp(Z), b(x, rp, Kn), b(x, cj, tc), si = F + }, + Bf = function (r) { + return 1 === Qj(r) + }, + sh = function (F, h) { + return h ? h.keyCode === F : pl[F] + }, + Dq = function (N) { + return ik(N) && sh(65, N) + }, + qq = function (L) { + return sh(46, L) || sh(8, L) + }, + jl = function (g) { + return function (M) { + return M ? M.keyCode === g : pl[g] + } + }, + $r = 573, + Fe = [65, 83, 68, 87, 37, 38, 39, 40, 32, 13, 27], + sb = jl(Fe[0]), + Ib = jl(Fe[1]), + Fr = jl(Fe[2]), + $j = jl(Fe[3]), + Wk = jl(Fe[4]), + Nk = jl(Fe[5]), + _i = jl(Fe[6]), + ri = jl(Fe[7]), + Cf = jl(Fe[8]), + hd = jl(Fe[9]), + bj = jl(Fe[10]), + Gj = { + 65: 1, + 83: 1, + 68: 1, + 87: 1, + 37: 1, + 38: 1, + 39: 1, + 40: 1 + }, + Cg = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 5, 5, 5, 5, 5, 7, 4027], + abd ="20t24bt02b28 12c12c11", + xm = F, + Fb = F, + Cr = function (B, M) { + xm || (xm = uo()), Bn(xm, B, M, 1); + var Q = Wd(xm); + return Q.clearRect(0, 0, B, M), Q + }, + nm = function (F, I, q) { + if (I && F) { + if ("override" === q) return I; + if ("override_rgb" === q) { + var z = ns(I); + return F = zd(F), "rgba(" + A(255 * z[0]) + "," + A(255 * z[1]) + "," + A(255 * z[2]) + "," + F[3] / 255 + ")" + } + if ("override_a" === q) { + var z = ns(I); + return F = zd(F), "rgba(" + F[0] + "," + F[1] + "," + F[2] + "," + z[3] + ")" + } + if ("multiply_destinationAtop" === q) { + var d = Pm(ns(F)), + C = d[3], + h = Pm(ns(I)), + m = h[3], + w = Pm(d), + N = w[3], + x = d.map(function (R, S) { + return R * h[S] + }), + E = 1 - C, + s = 1 - m, + H = s * C + m; + return d = d.map(function (i, j) { + return (m * E * h[j] + m * C * x[j] + s * C * i) / H + }), C = H, E = 1 - C, d = d.map(function (v, b) { + return (N * w[b] * E + C * v * N) / N + }), C = N, "rgba(" + A(255 * d[0]) + "," + A(255 * d[1]) + "," + A(255 * d[2]) + "," + C + ")" + } + var z = ns(I); + return F = zd(F), "rgba(" + A(F[0] * z[0]) + "," + A(F[1] * z[1]) + "," + A(F[2] * z[2]) + "," + F[3] / 255 * z[3] + ")" + } + return F + }, + zd = function () { + var m, k = {}; + for (var u in x) { + var T = tb.length; + if (u.length == T && u[0] === tb[2] && u[1] === Jc[1] && u[4] === tb[3] && u[5] === tb[4] && u.substr(T - 2) === Jc[1] + Jc[2]) { + var Z = x[u]; + for (var d in Z) d.length === T && d.substr(0, 3) === fm[3] + Ce[3] + nj[0] && d.substr(T - 2) === tb[0] + Rm[3] && (kg = Z[d]) + } + } + return function (_) { + var O, X = k[_]; + return X || (m || (m = uo(), Bn(m, 1, 1, 1)), O = m.getContext("2d"), O.clearRect(0, 0, 1, 1), fl(O, 0, 0, 1, 1, _), X = O.getImageData(0, 0, 1, 1).data, X = k[_] = [X[0], X[1], X[2], X[3]]), X + } + }(), + ns = function (U) { + if (!dk(U)) return U; + var E = zd(U); + return E.CA || (E.CA = [E[0] / 255, E[1] / 255, E[2] / 255, E[3] / 255]), E.CA + }, + oi = function (X, i, h, Z, O) { + var b = uo(); + b.width = h, b.height = Z; + var V = b.getContext("2d"); + V.drawImage(X, 0, 0, h, Z); + try { + for (var l = V.getImageData(0, 0, h, Z), B = l.data, H = 0, q = B.length; q > H; H += 4) { + var U = B[H + 0], + g = B[H + 1], + t = B[H + 2], + W = B[H + 3]; + "override_a" === O ? B[H + 3] = 255 * i[3] : "override_rgb" === O ? (B[H + 0] = 255 * i[0], B[H + 1] = 255 * i[1], B[H + 2] = 255 * i[2]) : "override" === O ? (B[H + 0] = 255 * i[0], B[H + 1] = 255 * i[1], B[H + 2] = 255 * i[2], B[H + 3] = 255 * i[3]) : (B[H + 0] = i[0] * U, B[H + 1] = i[1] * g, B[H + 2] = i[2] * t, B[H + 3] = i[3] * W) + } + V.putImageData(l, 0, 0) + } catch (M) { + return X + } + return b + }, + Xb = function (_, k, K) { + return k && (k = "miter" === K ? 8 * k + 20 : k + 1, _ && vn(_, k)), k + }, + Rj = function (e, U) { + if (U) { + var h = new In(U), + s = e.width / 2, + g = e.height / 2, + H = ms([h.tf(-s, -g), h.tf(s, -g), h.tf(s, g), h.tf(-s, g)]); + return H.x += e.x + s, H.y += e.y + g, H + } + return e + }, + dc = function (K, O, X, t, Q, g, y, j) { + t *= Math.PI / 180; + var G = { + x: Math.cos(t) * (K.x - y.x) / 2 + Math.sin(t) * (K.y - y.y) / 2, + y: -Math.sin(t) * (K.x - y.x) / 2 + Math.cos(t) * (K.y - y.y) / 2 + }, + H = Math.pow(G.x, 2) / Math.pow(O, 2) + Math.pow(G.y, 2) / Math.pow(X, 2); + H > 1 && (O *= Math.sqrt(H), X *= Math.sqrt(H)); + var b = (Q == g ? -1 : 1) * Math.sqrt((Math.pow(O, 2) * Math.pow(X, 2) - Math.pow(O, 2) * Math.pow(G.y, 2) - Math.pow(X, 2) * Math.pow(G.x, 2)) / (Math.pow(O, 2) * Math.pow(G.y, 2) + Math.pow(X, 2) * Math.pow(G.x, 2))); + isNaN(b) && (b = 0); + var e = { + x: b * O * G.y / X, + y: b * -X * G.x / O + }, + d = { + x: (K.x + y.x) / 2 + Math.cos(t) * e.x - Math.sin(t) * e.y, + y: (K.y + y.y) / 2 + Math.sin(t) * e.x + Math.cos(t) * e.y + }, + C = function (K) { + return Math.sqrt(Math.pow(K[0], 2) + Math.pow(K[1], 2)) + }, + $ = function (B, J) { + return (B[0] * J[0] + B[1] * J[1]) / (C(B) * C(J)) + }, + u = function (J, _) { + return (J[0] * _[1] < J[1] * _[0] ? -1 : 1) * Math.acos($(J, _)) + }, + w = u([1, 0], [(G.x - e.x) / O, (G.y - e.y) / X]), + r = [(G.x - e.x) / O, (G.y - e.y) / X], + T = [(-G.x - e.x) / O, (-G.y - e.y) / X], + n = u(r, T); + $(r, T) <= -1 && (n = Math.PI), $(r, T) >= 1 && (n = 0); + var $ = O > X ? O : X, + E = O > X ? 1 : O / X, + N = O > X ? X / O : 1; + if (null == j) { + var l = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + vn(l, $), l.x *= E, l.width *= E, l.y *= N, l.height *= N; + var f = new In(t); + return l = ms([f.tf(l.x, l.y), f.tf(l.x + l.width, l.y), f.tf(l.x + l.width, l.y + l.height), f.tf(l.x, l.y + l.height)]), l.x += d.x, l.y += d.y, [{ + x: l.x, + y: l.y + }, { + x: l.x + l.width, + y: l.y + }, { + x: l.x + l.width, + y: l.y + l.height + }, { + x: l.x, + y: l.y + l.height + }] + } + j.translate(d.x, d.y), j.rotate(t), j.scale(E, N), j.arc(0, 0, $, w, w + n, 1 - g), j.scale(1 / E, 1 / N), j.rotate(-t), j.translate(-d.x, -d.y) + }, + jp = function (q, I) { + q && q.beginPath(); + for (var N, p, z, v = [], V = function (k) { + for (var m, b = /(\-{0,1}[\d\.]+)/gi, c = []; m = b.exec(k);) c.push(parseFloat(m[0])); + return c + }, u = /([MmLlHhVvCcSsQqTtAa]{1}[\d\.,\s\-Zz]*)/gi, g = { + x: 0, + y: 0 + }; N = u.exec(I);) { + var S = N[0], + J = S.substr(0, 1); + if ("M" === J || "m" === J) { + for (var R = V(S), L = 0; L < R.length; L += 2) { + var b = R[L], + W = R[L + 1]; + "m" === J && (b += g.x, W += g.y), q && q.moveTo(b, W), v.push({ + x: b, + y: W + }), g.x = b, g.y = W + } + p = z = null + } else if ("H" === J || "h" === J) { + for (var R = V(S), L = 0; L < R.length; L += 1) { + var b = R[L]; + "h" === J && (b += g.x), q && q.lineTo(b, g.y), v.push({ + x: b, + y: g.y + }), g.x = b + } + p = z = null + } else if ("C" === J || "c" === J) { + for (var R = V(S), L = 0; L < R.length; L += 6) { + var B = R[L], + c = R[L + 1], + T = R[L + 2], + D = R[L + 3], + b = R[L + 4], + W = R[L + 5]; + "c" === J && (B += g.x, c += g.y, T += g.x, D += g.y, b += g.x, W += g.y), q && q.bezierCurveTo(B, c, T, D, b, W), v.push({ + x: B, + y: c + }), v.push({ + x: T, + y: D + }), v.push({ + x: b, + y: W + }), g.x = b, g.y = W + } + p = [B, c, T, D, b, W], z = null + } else if ("S" === J || "s" === J) { + for (var R = V(S), L = 0; L < R.length; L += 4) { + var B, c; + p ? (B = 2 * p[4] - p[2], c = 2 * p[5] - p[3]) : (B = g.x, c = g.y); + var T = R[L], + D = R[L + 1], + b = R[L + 2], + W = R[L + 3]; + "s" === J && (T += g.x, D += g.y, b += g.x, W += g.y), q && q.bezierCurveTo(B, c, T, D, b, W), v.push({ + x: B, + y: c + }), v.push({ + x: T, + y: D + }), v.push({ + x: b, + y: W + }), g.x = b, g.y = W + } + p = [B, c, T, D, b, W], z = null + } else if ("Q" === J || "q" === J) { + for (var R = V(S), L = 0; L < R.length; L += 4) { + var B = R[L], + c = R[L + 1], + b = R[L + 2], + W = R[L + 3]; + "q" === J && (B += g.x, c += g.y, b += g.x, W += g.y), q && q.quadraticCurveTo(B, c, b, W), v.push({ + x: B, + y: c + }), v.push({ + x: b, + y: W + }), g.x = b, g.y = W + } + p = null, z = [B, c, b, W] + } else if ("T" === J || "t" === J) { + for (var R = V(S), L = 0; L < R.length; L += 2) { + var B, c; + z ? (B = 2 * z[2] - z[0], c = 2 * z[3] - z[1]) : (B = g.x, c = g.y); + var b = R[L], + W = R[L + 1]; + "t" === J && (b += g.x, W += g.y), q && q.quadraticCurveTo(B, c, b, W), v.push({ + x: B, + y: c + }), v.push({ + x: b, + y: W + }), g.x = b, g.y = W + } + p = null, z = [B, c, b, W] + } else if ("V" === J || "v" === J) { + for (var R = V(S), L = 0; L < R.length; L += 1) { + var W = R[L]; + "v" === J && (W += g.y), q && q.lineTo(g.x, W), v.push({ + x: g.x, + y: W + }), g.y = W + } + p = z = null + } else if ("L" === J || "l" === J) { + for (var R = V(S), L = 0; L < R.length; L += 2) { + var b = R[L], + W = R[L + 1]; + "l" === J && (b += g.x, W += g.y), q && q.lineTo(b, W), v.push({ + x: b, + y: W + }), g.x = b, g.y = W + } + p = z = null + } else if ("A" === J || "a" === J) { + for (var R = V(S), L = 0; L < R.length; L += 7) { + var X = R[L], + o = R[L + 1], + H = R[L + 2], + i = R[L + 3], + y = R[L + 4], + b = R[L + 5], + W = R[L + 6]; + "a" === J && (b += g.x, W += g.y); + var _ = dc(g, X, o, H, i, y, { + x: b, + y: W + }, q); + _ && (v = v.concat(_)), g.x = b, g.y = W + } + p = z = null + } + var O = S.substr(S.length - 1); + ("z" === O || "Z" === O) && q && q.closePath() + } + return v + }, + uq = function (q, Y, O) { + var w, K, c = "L" === Y[0], + g = Y.length; + q.save(), c ? (q.transform(Y[5], Y[6], Y[7], Y[8], Y[9], Y[10]), w = q.createLinearGradient(Y[1], Y[2], Y[3], Y[4]), K = 11) : (q.transform(Y[7], Y[8], Y[9], Y[10], Y[11], Y[12]), w = q.createRadialGradient(Y[1], Y[2], Y[3], Y[4], Y[5], Y[6]), K = 13); + for (var v = q.compGray; g > K;) { + var V = Y[K + 1]; + V = O(V), w.addColorStop(Y[K], v ? u.toGrayColor(V) : V), K += 2 + } + q.fillStyle = w + }, + ok = function (e, J) { + var F = e.s("shape.gradient.pack"); + if (F) { + for (var H = F.length, Q = new Array(H), f = 0; H > f; f++) Q[f] = F[f]; + var M, n, q, Y, E, w, B, N, I, U, $, R, A, m = "L" === Q[0]; + M = m ? 5 : 7, n = Q[M], q = Q[M + 1], Y = Q[M + 2], E = Q[M + 3], w = Q[M + 4], B = Q[M + 5], N = J[0], I = J[1], U = J[2], $ = J[3], R = J[4], A = J[5], Q[M] = N * n + U * q, Q[M + 1] = I * n + $ * q, Q[M + 2] = N * Y + U * E, Q[M + 3] = I * Y + $ * E, Q[M + 4] = N * w + U * B + R, Q[M + 5] = I * w + $ * B + A, e.s("shape.gradient.pack", Q) + } + }, + en = function (T, U, F, m) { + var N = !1; + if (T.beginPath ? T.beginPath() : N = !0, Xo(U) && (U = U._as), Xo(F) && (F = F._as), F && F.length) { + for (var A, $, p, W, B = 0, g = 0, y = F.length; y > g; g++) A = F[g], 1 === A ? ($ = U[B++], T.moveTo($.x, N ? -$.y : $.y)) : 2 === A ? ($ = U[B++], T.lineTo($.x, N ? -$.y : $.y)) : 3 === A ? ($ = U[B++], p = U[B++], T.quadraticCurveTo($.x, N ? -$.y : $.y, p.x, N ? -p.y : p.y)) : 4 === A ? ($ = U[B++], p = U[B++], W = U[B++], T.bezierCurveTo($.x, N ? -$.y : $.y, p.x, N ? -p.y : p.y, W.x, N ? -W.y : W.y)) : 5 === A && T.closePath(); + m && 5 !== A && T.closePath() + } else { + var w, M, j, d = U.length; + if (d > 0) { + for (w = U[0], T.moveTo(w.x, N ? -w.y : w.y), M = 1; d > M; M++) j = U[M], T.lineTo(j.x, N ? -j.y : j.y); + m && T.closePath() + } + } + }, + Yo = function (s, P, G, h) { + if (Xo(s) && (s = s._as), Xo(P) && (P = P._as), P && P.length) { + G = G || Nl; + for (var C, U, N, y, W, _, E, q, k = [], w = F, Y = 0, I = 0, v = P.length; v > I; I++) + if (C = P[I], 1 === C) k.push(w = []), w.push(s[Y++]); + else if (2 === C) w.push(s[Y++]); + else if (3 === C) { + for (U = w[w.length - 1], N = s[Y++], y = s[Y++], _ = 1; G > _; _++) E = Id(_ / G, U.x, N.x, y.x), q = Id(_ / G, U.y, N.y, y.y), w.push({ + x: E, + y: q, + b: !0 + }); + w.push(y) + } else if (4 === C) { + for (U = w[w.length - 1], N = s[Y++], y = s[Y++], W = s[Y++], _ = 1; G > _; _++) E = qg(_ / G, U.x, N.x, y.x, W.x), q = qg(_ / G, U.y, N.y, y.y, W.y), w.push({ + x: E, + y: q, + b: !0 + }); + w.push(W) + } else 5 === C && w.push(w[0]); + return h && 5 !== C && w && w.length > 2 && w.push(w[0]), k + } + return h && s.length > 2 && (s = s.slice(), s.push(s[0])), s ? [s] : [] + }, + fr = function (X, D, L, Z, c, g) { + var n, l, Q, x = zd(D), + B = Z, + J = x[0], + R = x[1], + f = x[2]; + if (L) { + var u = zd(L); + n = u[0] - J, l = u[1] - R, Q = u[2] - f + } else n = 255 - J, l = 255 - R, Q = 255 - f; + for (g || (g = Z > 10 ? 1 : .5, g = 1 > c ? V(g / c, 2) : g), X.save(), X.shadowOffsetX = 0, X.shadowOffsetY = 0, X.shadowBlur = 0, X.shadowColor = 0; + (Z -= g) > 0;) { + var d = 1 - Z / B, + M = J + n * d, + P = R + l * d, + $ = f + Q * d; + M = V(s(M), 255), P = V(s(P), 255), $ = V(s($), 255), X.strokeStyle = "rgb(" + M + "," + P + "," + $ + ")", X.lineWidth = Z, X.stroke() + } + X.restore() + }, + mp = function () { + var y = {}; + return function (O, d) { + var p = O + "-" + d, + a = y[p]; + if (a) return a; + var u, T, b, L = zd(O); + return 0 > d ? (d = (100 + d) / 100, u = s(L[0] * d), T = s(L[1] * d), b = s(L[2] * d)) : (d /= 100, u = L[0], T = L[1], b = L[2], u += (255 - u) * d, T += (255 - T) * d, b += (255 - b) * d, u = V(s(u), 255), T = V(s(T), 255), b = V(s(b), 255)), y[p] = "rgb(" + u + "," + T + "," + b + ")" + } + }(), + fl = function (D, e, d, f, k, c) { + c && (D.fillStyle = c), D.beginPath(), D.rect(e, d, f, k), D.fill() + }, + Ej = function (x, j, Q, M, R, t, K) { + x.beginPath(), Eg[j](x, Q.x, Q.y, Q.width, Q.height, M, R, t, K) + }, + Ge = function (M, V, S, Q, T) { + var m = Eg[S]; + M.fillStyle = m ? m(M, V, Q ? Q : Cn, T.x, T.y, T.width, T.height) : V + }, + fg = function (Y, Q, u, v, S, q) { + Y.fillStyle = am(Y, Q, u, v, S, q) + }, + qb = function (t, I, T, M, w, l) { + t.strokeStyle = am(t, I, T, M, w, l) + }, + am = function (k, I, o, x, F, J) { + var f; + try { + if (!I.tagName && I.comps) { + I._cacheImage_ || (I._cacheImage_ = {}); + var y; + y = "override" === x ? "colors_override" : "override_rgb" === x ? "colors_override_rgb" : "override_a" === x ? "colors_override_a" : "colors", I._cacheImage_[y] || (I._cacheImage_[y] = { + __count__: 0 + }); + var H = I._cacheImage_[y][o]; + H || (I._cacheImage_[y].__count__ > u.imageCacheThreshold && (I._cacheImage_[y] = { + __count__: 0 + }), H = O.Default.toCanvas(I, xc(I), oo(I), null, F, J, o, null, x), I._cacheImage_[y][o] = H, I._cacheImage_[y].__count__++), I = H + } + f = k.createPattern(I, "repeat") + } catch (w) { + f = "black" + } + return f + }, + Gh = function (r) { + var z, $, v = [], + n = 0, + U = r.length; + for (z = 0; 65 > z; z++) v[z] = z; + for (z = 0; 65 > z; z++) n = (n + v[z] + r.charCodeAt(z % U)) % 65, $ = v[z], v[z] = v[n], v[n] = $; + for (z = 0; 65 > z; z++) v[z] = Of[v[z]]; + return v.join("") + }, + bn = function (T) { + for (var q = 8 + Rc.randomInt(8), j = Of[8 * Rc.randomInt(8) + (q - 8)], P = "", i = 0; q > i; i++) P += Of[Rc.randomInt(64)]; + var w = Gh(P + Y + zl + Yk); + return j + P + Nq.encode(T, w) + }, + _o = function (N) { + var H = N[0], + P = Of.indexOf(H); + if (0 > P) return ""; + P = 8 + (7 & P); + var h = N.slice(1, 1 + P), + q = Gh(h + Y + zl + Yk); + return Nq.decode(N, q, 1 + P) + }, + Xr = function (X, Z, D, r, O, E, p) { + X.save(), X.translate(Z, D), X.scale(1, p / E), X.arc(0, 0, E, r, O), X.restore() + }, + mo = function (L, t, g, e, y, U, Z, _) { + var I, P, m, b, r, $, D, f, N, M, A; + if (X(y) > 2 * W && (y = 2 * W), r = s(X(y) / (W / 4)), I = y / r, P = -I, m = -e, r > 0) { + $ = t + k(e) * U, D = g + n(-e) * Z, _ ? L.lineTo($, D) : L.moveTo($, D); + for (var i = 0; r > i; i++) m += P, b = m - P / 2, f = t + k(m) * U, N = g + n(m) * Z, M = t + k(b) * (U / k(P / 2)), A = g + n(b) * (Z / k(P / 2)), L.quadraticCurveTo(M, A, f, N) + } + }, + pg = function ($, k, P, r, X, x, c, O, G) { + 6 === arguments.length && (c = x, O = x, G = x); + var M = k + r, + n = P + X, + v = X > r ? 2 * r : 2 * X; + x = v > x ? x : v, c = v > c ? c : v, O = v > O ? O : v, G = v > G ? G : v; + var q = .29 * G, + Y = .58 * G; + $.moveTo(M, n - G), $.quadraticCurveTo(M, n - Y, M - q, n - q), $.quadraticCurveTo(M - Y, n, M - G, n), q = .29 * O, Y = .58 * O, $.lineTo(k + O, n), $.quadraticCurveTo(k + Y, n, k + q, n - q), $.quadraticCurveTo(k, n - Y, k, n - O), q = .29 * x, Y = .58 * x, $.lineTo(k, P + x), $.quadraticCurveTo(k, P + Y, k + q, P + q), $.quadraticCurveTo(k + Y, P, k + x, P), q = .29 * c, Y = .58 * c, $.lineTo(M - c, P), $.quadraticCurveTo(M - Y, P, M - q, P + q), $.quadraticCurveTo(M, P + Y, M, P + c), $.lineTo(M, n - G) + }, + Ie = function (f, g, w, c, v, J, b) { + g && (w = A(w), c = A(c), b || (b = 1), f.fillStyle = g, f.beginPath(), f.rect(w, c, b, J), f.rect(w, c, v, b), J - b > 0 && f.rect(w, c + J - b, v, b), v - b > 0 && f.rect(w + v - b, c, b, J), f.fill()) + }, + Wq = function (o, N, m, K) { + var U = K.x, + M = K.y, + I = K.width, + j = K.height; + if (!(!N || !m || 0 >= I || 0 >= j)) { + var _, t = Ee(N), + q = cn(N), + $ = m > 0; + 1 === m || -1 === m ? (o.fillStyle = $ ? t : q, o.beginPath(), o.rect(U, M, 1, j), o.rect(U, M, I, 1), o.fill(), o.fillStyle = $ ? q : t, o.beginPath(), o.rect(U, M + j - 1, I, 1), o.rect(U + I - 1, M, 1, j), o.fill()) : (m = V(X(m), V(I / 2, j / 2)), _ = o.createLinearGradient(U, M, U + m, M), _.addColorStop(0, $ ? t : q), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U, M), o.lineTo(U + m, M + m), o.lineTo(U + m, M + j - m), o.lineTo(U, M + j), o.lineTo(U, M), o.fill(), _ = o.createLinearGradient(U, M, U, M + m), _.addColorStop(0, $ ? t : q), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U, M), o.lineTo(U + m, M + m), o.lineTo(U + I - m, M + m), o.lineTo(U + I, M), o.lineTo(U, M), o.fill(), _ = o.createLinearGradient(U, M + j, U, M + j - m), _.addColorStop(0, $ ? q : t), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U, M + j), o.lineTo(U + m, M + j - m), o.lineTo(U + I - m, M + j - m), o.lineTo(U + I, M + j), o.lineTo(U, M + j), o.fill(), _ = o.createLinearGradient(U + I, M, U + I - m, M), _.addColorStop(0, $ ? q : t), _.addColorStop(1, N), o.fillStyle = _, o.beginPath(), o.moveTo(U + I, M), o.lineTo(U + I - m, M + m), o.lineTo(U + I - m, M + j - m), o.lineTo(U + I, M + j), o.lineTo(U + I, M), o.fill()) + } + }, + Hf = function (L, m, r, s, h, i, B) { + var A = L.createLinearGradient(s, h, i, B); + return A.addColorStop(0, r), A.addColorStop(1, m), A + }, + Nd = function ($, B, i, W, j, H, t) { + var U = $.createLinearGradient(W, j, H, t); + return U.addColorStop(0, B), U.addColorStop(.5, i), U.addColorStop(1, B), U + }, + Dl = function (W, O, L, u, $, N, y) { + var P = W.createLinearGradient(u, $, N, y); + return P.addColorStop(0, O), P.addColorStop(1 / 3, L), P.addColorStop(2 / 3, O), P.addColorStop(1, L), P + }, + Ni = function (O, i, A, I, D, z, F, X, U) { + var c = O.createRadialGradient(I + z * X, D + F * U, V(z, F) / 24, I + z / 2, D + F / 2, q(z, F) / 2); + return c.addColorStop(0, A), c.addColorStop(1, i), c + }, + og = [0, -1, .22451398828979272, -.30901699437494734, .9510565162951535, -.30901699437494745, .3632712640026804, .11803398874989468, .5877852522924731, .8090169943749473, -1.1102230246251565e-16, .38196601125010515, -.587785252292473, .8090169943749475, -.3632712640026805, .1180339887498949, -.9510565162951536, -.3090169943749473, -.22451398828979285, -.30901699437494734], + Eg = { + polygon: function (L, N, X, t, c, h) { + (h == F || 3 > h) && (h = 6); + for (var l, p, q = V(t, c) / 2, z = N + t / 2, B = X + c / 2, b = 0, K = 2 * W / h, y = 0; h > y; y++) l = z + k(b) * q, p = B + n(b) * q, 0 === y ? L.moveTo(l, p) : L.lineTo(l, p), b += K; + L.closePath() + }, arc: function (j, c, p, k, T, d, K, m, t) { + d == F && (d = W), K == F && (K = $), m == F && (m = !0); + var J = c + k / 2, + E = p + T / 2; + m && j.moveTo(J, E), t ? Xr(j, J, E, d, K, k / 2, T / 2) : j.arc(J, E, V(k, T) / 2, d, K), m && j.closePath() + }, rect: function (A, i, x, G, U) { + A.rect(i, x, G, U) + }, circle: function (n, g, I, i, s) { + n.arc(g + i / 2, I + s / 2, V(i, s) / 2, 0, $, !0) + }, oval: function (y, J, v, I, H) { + Xr(y, J + I / 2, v + H / 2, 0, $, I / 2, H / 2) + }, roundRect: function (E, m, R, Q, y, w) { + w == F && (w = V(V(Q, y) / 4, 8)), pg(E, m, R, Q, y, w) + }, star: function (I, B, F, z, x) { + var L = 2 * z, + t = 2 * x, + E = B + z / 2, + o = F + x / 2; + I.moveTo(E - L / 4, o - t / 12), I.lineTo(B + .306 * z, F + .579 * x), I.lineTo(E - L / 6, o + t / 4), I.lineTo(B + z / 2, F + .733 * x), I.lineTo(E + L / 6, o + t / 4), I.lineTo(B + .693 * z, F + .579 * x), I.lineTo(E + L / 4, o - t / 12), I.lineTo(B + .611 * z, F + .332 * x), I.lineTo(E + 0, o - t / 4), I.lineTo(B + .388 * z, F + .332 * x), I.closePath() + }, pentagram: function (F, T, a, L, U) { + var m = .5 * U, + Q = T + .5 * L, + Z = a + m, + W = .5257311121191336 * L; + W > m && (W = m); + var R = og, + K = 0; + for (F.moveTo(Q + W * R[K++], Z + W * R[K++]); 20 > K;) F.lineTo(Q + W * R[K++], Z + W * R[K++]); + F.closePath() + }, triangle: function (D, j, H, O, T) { + D.moveTo(j + O / 2, H), D.lineTo(j + O, H + T), D.lineTo(j, H + T), D.closePath() + }, hexagon: function (_, i, Z, r, f) { + _.moveTo(i, Z + f / 2), _.lineTo(i + r / 4, Z + f), _.lineTo(i + 3 * r / 4, +Z + f), _.lineTo(i + r, Z + f / 2), _.lineTo(i + 3 * r / 4, Z), _.lineTo(i + r / 4, Z), _.closePath() + }, pentagon: function (i, m, j, p, A) { + var b = 2 * p, + f = 2 * A, + E = m + p / 2, + k = j + A / 2; + i.moveTo(E - b / 4, k - f / 12), i.lineTo(E - b / 6, k + f / 4), i.lineTo(E + b / 6, k + f / 4), i.lineTo(E + b / 4, k - f / 12), i.lineTo(E + 0, k - f / 4), i.closePath() + }, diamond: function (x, l, v, u, n) { + x.moveTo(l + u / 2, v), x.lineTo(l, v + n / 2), x.lineTo(l + u / 2, v + n), x.lineTo(l + u, v + n / 2), x.closePath() + }, rightTriangle: function (N, Z, G, b, L) { + N.moveTo(Z, G), N.lineTo(Z + b, G + L), N.lineTo(Z, G + L), N.closePath() + }, parallelogram: function (Q, g, B, p, k) { + var V = p / 4; + Q.moveTo(g + V, B), Q.lineTo(g + p, B), Q.lineTo(g + p - V, B + k), Q.lineTo(g, B + k), Q.closePath() + }, trapezoid: function (C, D, a, y, m) { + var M = y / 4; + C.moveTo(D + M, a), C.lineTo(D + y - M, a), C.lineTo(D + y, a + m), C.lineTo(D, a + m), C.closePath() + }, "linear.southwest": function (k, R, u, P, i, g, v) { + return Hf(k, R, u, P, i + v, P + g, i) + }, "linear.southeast": function (X, h, r, S, b, e, f) { + return Hf(X, h, r, S + e, b + f, S, b) + }, "linear.northwest": function (e, L, p, K, y, k, U) { + return Hf(e, L, p, K, y, K + k, y + U) + }, "linear.northeast": function (E, D, $, L, V, N, J) { + return Hf(E, D, $, L + N, V, L, V + J) + }, "linear.north": function (t, E, N, q, C, P, J) { + return Hf(t, E, N, q, C, q, C + J) + }, "linear.south": function (w, U, P, m, V, t, L) { + return Hf(w, U, P, m, V + L, m, V) + }, "linear.west": function (H, $, G, d, s, u) { + return Hf(H, $, G, d, s, d + u, s) + }, "linear.east": function (e, l, L, i, t, h) { + return Hf(e, l, L, i + h, t, i, t) + }, "radial.center": function (T, s, S, h, l, Z, U) { + return Ni(T, s, S, h, l, Z, U, .5, .5) + }, "radial.southwest": function (Y, Z, z, n, L, o, a) { + return Ni(Y, Z, z, n, L, o, a, .25, .75) + }, "radial.southeast": function (p, U, m, b, M, d, w) { + return Ni(p, U, m, b, M, d, w, .75, .75) + }, "radial.northwest": function (L, J, G, $, r, w, V) { + return Ni(L, J, G, $, r, w, V, .25, .25) + }, "radial.northeast": function (B, l, J, v, V, f, a) { + return Ni(B, l, J, v, V, f, a, .75, .25) + }, "radial.north": function (F, i, H, n, S, r, K) { + return Ni(F, i, H, n, S, r, K, .5, .25) + }, "radial.south": function (L, h, R, Y, E, a, S) { + return Ni(L, h, R, Y, E, a, S, .5, .75) + }, "radial.west": function (R, V, v, t, C, A, $) { + return Ni(R, V, v, t, C, A, $, .25, .5) + }, "radial.east": function (i, J, r, o, v, j, w) { + return Ni(i, J, r, o, v, j, w, .75, .5) + }, "spread.horizontal": function (H, I, D, z, E, q) { + return Nd(H, I, D, z, E, z + q, E) + }, "spread.vertical": function (I, R, N, o, K, h, P) { + return Nd(I, R, N, o, K, o, K + P) + }, "spread.diagonal": function (A, c, x, B, P, F, d) { + return Nd(A, c, x, B + F, P, B, P + d) + }, "spread.antidiagonal": function (G, C, d, q, p, D, $) { + return Nd(G, C, d, q, p, q + D, p + $) + }, "spread.north": function (A, o, t, z, $, M, c) { + return Dl(A, o, t, z, $ - c / 4, z, $ + c + c / 4) + }, "spread.south": function (E, l, w, N, J, f, r) { + return Dl(E, w, l, N, J - r / 4, N, J + r + r / 4) + }, "spread.west": function (S, P, r, W, G, q) { + return Dl(S, P, r, W - q / 4, G, W + q + q / 4, G) + }, "spread.east": function (D, J, f, w, N, s) { + return Dl(D, f, J, w - s / 4, N, w + s + s / 4, N) + } + }, + Go = function (o, l, _) { + return new In(o).tf(l, _) + }, + zo = function (N) { + var C = N.touches[0], + p = N.touches[1], + B = C.clientX, + b = C.clientY, + z = p.clientX, + J = p.clientY; + return w((B - z) * (B - z) + (b - J) * (b - J)) + }, + ne = function (p) { + var K = p.touches[0], + n = p.touches[1], + T = K.clientX, + e = K.clientY, + O = n.clientX, + x = n.clientY; + return { + x: (T + O) / 2, + y: (e + x) / 2 + } + }, + er = (function () { + for (var Q = 0, F = rj.split(""), L = 0; L < F.length; L++) Q = 10 * Zb(F[L]) + Q; + return $o(x[$r.toString(8 * L) + Bg.substr(L) + 3], x[$r.toString(8 * L) + Bg.substr(L) + 4]), Q + }(), function (M, A, N) { + for (var g = 0; g < N.size(); g++) { + var F = N.get(g); + M.co(F) && A.add(F) + } + for (g = 0; g < N.size(); g++) F = N.get(g), er(M, A, F._children) + }), + no = function (H, N, Y) { + for (var g = 0; g < Y.size(); g++) { + var Z = Y.get(Y.size() - 1 - g); + H.co(Z) && N.add(Z) + } + for (g = 0; g < Y.size(); g++) Z = Y.get(g), no(H, N, Z._children) + }, + ao = function (Z, y, t) { + for (var z = !1, o = 0; o < t.size(); o++) { + var N = t.get(o); + Z.co(N) ? z && y.add(N) : z = 1 + } + for (o = 0; o < t.size(); o++) N = t.get(o), ao(Z, y, N._children) + }, + Tk = function (I, r, Z) { + for (var R = !1, Q = 0; Q < Z.size(); Q++) { + var S = Z.get(Z.size() - 1 - Q); + I.co(S) ? R && r.add(S) : R = !0 + } + for (Q = 0; Q < Z.size(); Q++) S = Z.get(Q), Tk(I, r, S._children) + }, + qc = u.moveDatas = function (j, p, E, o) { + var U = o == F; + if (0 !== p || 0 !== E || !U && 0 !== o) { + var V = !0, + R = []; + if (j.forEach(function (Y) { + V && (Y._69O || yl(Y) || Qb(Y)) && (V = !1) + }), V) R = j; + else { + var O = {}, + l = {}; + j.forEach(function (L) { + O[L._id] = !0 + }); + var y = {}, + g = function (B) { + var H = B._id; + return O[H] ? (R.push(B), y[H] = !0) : y[H] = !1 + }, + a = function (C) { + var W = C._id; + if (l[W]) return g(C); + var N = y[W]; + if (N !== Z) return N; + var q = C._parent; + if (q && (Qb(q) || yl(q)) && a(q)) return y[W] = !0; + var J = C._host; + return J && (l[W] = W, N = a(J), l[W] = Z, N) ? y[W] = !0 : g(C) + }; + j.forEach(function (S) { + a(S) + }) + } + R.forEach(function (k) { + if (Fq(k)) U ? k.translate(p, E) : k.translate3d(p, E, o); + else { + var W = k.s(Ei); + if (!W || W.isEmpty()) return; + var y = new xr; + W.each(function (b) { + b = Pm(b), U ? (b.x += p, b.y += E) : (b.x += p, b.y += o, b.e == F ? b.e = E : b.e += E), y.add(b) + }), k.s(Ei, y) + } + }) + } + }, + Vg = function () { + function n(e, P) { + return P === e.substring(0, P.length) ? !0 : !1 + } + + function f(K) { + return parseFloat(K) || 0 + } + + function b(D, q) { + if (q == Z && (q = new br), n(D, "matrix3d")) { + var m = D.substring(9, D.length - 1).split(","); + m = m.map(f), q.fromArray(m) + } else if (n(D, "matrix")) { + var m = D.substring(7, D.length - 1).split(","); + m = m.map(f), q.el[0] = m[0], q.el[1] = m[1], q.el[2] = 0, q.el[3] = 0, q.el[4] = m[2], q.el[5] = m[3], q.el[6] = 0, q.el[7] = 0, q.el[8] = 0, q.el[9] = 0, q.el[10] = 1, q.el[11] = 0, q.el[12] = m[4], q.el[13] = m[5], q.el[14] = 0, q.el[15] = 1 + } + return q + } + + function j(O, W) { + W == Z && (W = new tl); + var z = O.split(/\s+/); + return z = z.map(f), W.set(z[0] || 0, z[1] || 0, z[2] || 0), W + } + var H, M, w, A, h, R = function (W, c) { + H || (H = new br, M = new tl, w = new br, A = new br, h = new br), c == Z && (c = new br); + var P = getComputedStyle(W); + P.transform && "none" !== P.transform && (b(P.transform, H), j(P.transformOrigin, M), A.setPosition(M), M.negate(), h.setPosition(M), (Uq || "preserve-3d" !== P.transformStyle) && (H.el[8] = 0, H.el[9] = 0, H.el[10] = 1, H.el[11] = 0), c.multiplyMatrices(h, c), c.multiplyMatrices(H, c), c.multiplyMatrices(A, c)), !Uq && P.perspective && "none" !== P.perspective && (w.el[11] = -1 / f(P.perspective), j(P.perspectiveOrigin, M), A.setPosition(M), M.negate(), h.setPosition(M), c.multiplyMatrices(h, c), c.multiplyMatrices(w, c), c.multiplyMatrices(A, c)); + for (var C = W.offsetParent, s = W.offsetLeft, n = W.offsetTop, x = W.parentElement; x && x !== C;) { + var q = getComputedStyle(x); + if ("none" !== q.transform || "none" !== q.perspective) break; + x = x.parentElement + } + return x == Z && W !== W.ownerDocument.documentElement && "fixed" !== P.position && (x = W.ownerDocument.documentElement), C != Z && C !== x && (s -= x.offsetLeft, n -= x.offsetTop), M.set(s, n, 0), A.setPosition(M), c.multiplyMatrices(A, c), x && R(x, c), c + }; + return function (g, a) { + var O = g.parentElement; + if (O) { + var V = O.updateAppendMatrix; + if (V) { + delete O.updateAppendMatrix; + var S = new br; + R(O, S); + var J = new br; + J.getInverse(S), O._matrixAppend = J, O._maxrixPreAppend = S + } + return a ? O._matrixAppend : O._maxrixPreAppend + } + } + }(), + Jm = function (b, p) { + for (; b && !b.hasOwnProperty(p);) b = o.getPrototypeOf(b); + return b && o.getOwnPropertyDescriptor(b, p) + }, + Ug = o.getPrototypeOf ? function (n, p, W) { + var C = Jm(p, W); + C && o.defineProperty(n, W, C) + } : function (v, f, S) { + v[S] = f[S] + }, + cg = { + 1: 29, + 2: 30, + 3: 31, + 4: 32, + 5: 33, + 6: 26, + 7: 27, + 8: 28, + 9: 21, + 10: 22, + 11: 23, + 12: 24, + 13: 25, + 14: 14, + 15: 15, + 16: 16, + 17: 17, + 18: 18, + 19: 19, + 20: 20, + 21: 9, + 22: 10, + 23: 11, + 24: 12, + 25: 13, + 26: 6, + 27: 7, + 28: 8, + 29: 1, + 30: 2, + 31: 3, + 32: 4, + 33: 5, + 34: 36, + 35: 37, + 36: 34, + 37: 35, + 38: 54, + 39: 55, + 40: 52, + 41: 53, + 42: 50, + 43: 51, + 44: 49, + 50: 42, + 51: 43, + 52: 40, + 53: 41, + 54: 38, + 55: 39 + }, + Re = function () { + var Q = { + 1: function (Z, z) { + return { + x: Z.x - z.width / 2, + y: Z.y - z.height / 2 + } + }, 2: function (i, e) { + return { + x: i.x + e.width / 2, + y: i.y - e.height / 2 + } + }, 3: function (k, F) { + return { + x: k.x + k.width / 2, + y: k.y - F.height / 2 + } + }, 4: function (L, F) { + return { + x: L.x + L.width - F.width / 2, + y: L.y - F.height / 2 + } + }, 5: function (g, l) { + return { + x: g.x + g.width + l.width / 2, + y: g.y - l.height / 2 + } + }, 6: function (r) { + return { + x: r.x, + y: r.y + } + }, 7: function (N) { + return { + x: N.x + N.width / 2, + y: N.y + } + }, 8: function (Z) { + return { + x: Z.x + Z.width, + y: Z.y + } + }, 9: function (U, V) { + return { + x: U.x - V.width / 2, + y: U.y + V.height / 2 + } + }, 10: function (n, M) { + return { + x: n.x + M.width / 2, + y: n.y + M.height / 2 + } + }, 11: function (D, w) { + return { + x: D.x + D.width / 2, + y: D.y + w.height / 2 + } + }, 12: function (E, u) { + return { + x: E.x - u.width / 2 + E.width, + y: E.y + u.height / 2 + } + }, 13: function (Y, P) { + return { + x: Y.x + Y.width + P.width / 2, + y: Y.y + P.height / 2 + } + }, 14: function (A, U) { + return { + x: A.x - U.width / 2, + y: A.y + A.height / 2 + } + }, 15: function (b) { + return { + x: b.x, + y: b.y + b.height / 2 + } + }, 16: function (e, p) { + return { + x: e.x + p.width / 2, + y: e.y + e.height / 2 + } + }, 17: function (y) { + return { + x: y.x + y.width / 2, + y: y.y + y.height / 2 + } + }, 18: function (L, s) { + return { + x: L.x + L.width - s.width / 2, + y: L.y + L.height / 2 + } + }, 19: function (y) { + return { + x: y.x + y.width, + y: y.y + y.height / 2 + } + }, 20: function (R, c) { + return { + x: R.x + R.width + c.width / 2, + y: R.y + R.height / 2 + } + }, 21: function (S, s) { + return { + x: S.x - s.width / 2, + y: S.y + S.height - s.height / 2 + } + }, 22: function (W, D) { + return { + x: W.x + D.width / 2, + y: W.y + W.height - D.height / 2 + } + }, 23: function (d, a) { + return { + x: d.x + d.width / 2, + y: d.y + d.height - a.height / 2 + } + }, 24: function (J, O) { + return { + x: J.x + J.width - O.width / 2, + y: J.y + J.height - O.height / 2 + } + }, 25: function (C, k) { + return { + x: C.x + C.width + k.width / 2, + y: C.y + C.height - k.height / 2 + } + }, 26: function (x) { + return { + x: x.x, + y: x.y + x.height + } + }, 27: function (W) { + return { + x: W.x + W.width / 2, + y: W.y + W.height + } + }, 28: function (g) { + return { + x: g.x + g.width, + y: g.y + g.height + } + }, 29: function (k, r) { + return { + x: k.x - r.width / 2, + y: k.y + k.height + r.height / 2 + } + }, 30: function (u, B) { + return { + x: u.x + B.width / 2, + y: u.y + u.height + B.height / 2 + } + }, 31: function (H, w) { + return { + x: H.x + H.width / 2, + y: H.y + H.height + w.height / 2 + } + }, 32: function (N, b) { + return { + x: N.x + N.width - b.width / 2, + y: N.y + N.height + b.height / 2 + } + }, 33: function (l, B) { + return { + x: l.x + l.width + B.width / 2, + y: l.y + l.height + B.height / 2 + } + }, 34: function (q, t) { + return { + x: q.x, + y: q.y - t.height / 2 + } + }, 35: function (Y, x) { + return { + x: Y.x + Y.width, + y: Y.y - x.height / 2 + } + }, 36: function (j, q) { + return { + x: j.x, + y: j.y + j.height + q.height / 2 + } + }, 37: function (i, o) { + return { + x: i.x + i.width, + y: i.y + i.height + o.height / 2 + } + }, 38: function (u, x) { + return { + x: u.x + u.width / 4, + y: u.y - x.height / 2 + } + }, 39: function (N, e) { + return { + x: N.x + 3 * N.width / 4, + y: N.y - e.height / 2 + } + }, 40: function (l) { + return { + x: l.x + l.width / 4, + y: l.y + } + }, 41: function (w) { + return { + x: w.x + 3 * w.width / 4, + y: w.y + } + }, 42: function (x, i) { + return { + x: x.x + x.width / 4, + y: x.y + i.height / 2 + } + }, 43: function (A, t) { + return { + x: A.x + 3 * A.width / 4, + y: A.y + t.height / 2 + } + }, 44: function (M, d) { + return { + x: M.x + M.width / 2, + y: M.y + M.height / 2 - d.height / 2 + } + }, 45: function (N) { + return { + x: N.x + N.width / 4, + y: N.y + N.height / 2 + } + }, 46: function (M, w) { + return { + x: M.x + M.width / 2 - w.width / 2, + y: M.y + M.height / 2 + } + }, 47: function (a, E) { + return { + x: a.x + a.width / 2 + E.width / 2, + y: a.y + a.height / 2 + } + }, 48: function (U) { + return { + x: U.x + 3 * U.width / 4, + y: U.y + U.height / 2 + } + }, 49: function (u, L) { + return { + x: u.x + u.width / 2, + y: u.y + u.height / 2 + L.height / 2 + } + }, 50: function (O, J) { + return { + x: O.x + O.width / 4, + y: O.y + O.height - J.height / 2 + } + }, 51: function (l, S) { + return { + x: l.x + 3 * l.width / 4, + y: l.y + l.height - S.height / 2 + } + }, 52: function (j) { + return { + x: j.x + j.width / 4, + y: j.y + j.height + } + }, 53: function (O) { + return { + x: O.x + 3 * O.width / 4, + y: O.y + O.height + } + }, 54: function (W, G) { + return { + x: W.x + W.width / 4, + y: W.y + W.height + G.height / 2 + } + }, 55: function (A, u) { + return { + x: A.x + 3 * A.width / 4, + y: A.y + A.height + u.height / 2 + } + } + }; + return lh(x) ? function (V, Y, O) { + return Q[V](Y, O ? O : nl) + } : void 0 + }(); + Uh(S, { + highlight: "#1ABC9C", + label: "#000", + labelSelect: "#FFF", + transparent: "rgba(0,0,0,0.35)", + titleBackground: "#2C3E50", + titleIconBackground: "#868686", + headerBackground: "#ECF0F1", + headerIconBackground: "#868686", + headerSeparator: "#868686", + headerLine: "#D9D9D9", + background: "#FFF", + disabledBackground: "rgba(255,255,255,0.65)", + toolTipBackground: "#FFFFE0", + rectSelectBorder: "#45C4F9", + rectSelectBackground: "rgba(0,0,0,0.35)", + editPointBorder: "#2C3E50", + editPointBackground: "#D9D9D9", + dash: "#2C3E50", + groupBackground: "#ECF0F1", + groupTitleBackground: "#2C3E50", + gridBackground: "#D9D9D9", + gridCellBorderColor: "#868686", + gridBlockColor: "#868686", + reverse: "#868686", + contentIconBackground: "#868686", + contentLine: "#D9D9D9", + widgetBackground: "#ECF0F1", + widgetBorder: "#D9D9D9", + widgetIconBackground: "#868686", + widgetIconBorder: "#868686", + widgetIconGradient: "#D9D9D9", + widgetIconHighlight: "#43AFF1", + imageBackground: "#3498DB", + imageGradient: "#FFF", + chart: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"] + }, !0); + var vc = S.reverse, + od = S.transparent, + Vh = S.rectSelectBackground, + dm = S.dash, + Kf = S.titleBackground, + Fj = S.titleIconBackground, + Yl = S.headerBackground, + cb = S.headerIconBackground, + Yb = S.headerSeparator, + qj = S.headerLine, + hk = S.contentIconBackground, + rh = S.contentLine, + Em = (S.widgetIconHighlight, S.widgetIconBorder), + Ur = (S.widgetIconGradient, S.imageBackground), + Cn = S.imageGradient, + Bc = S.highlight, + Un = S.label, + Dg = S.labelSelect; + if (false && !x.shutAlert1) { + var ml = new Date, + qn = yh.split("-"), + $n = new Date(ml.getFullYear(), ml.getMonth(), ml.getDate()), + yh = new Date(Zb(qn[0], 10), Zb(qn[1], 10) - 1, Zb(qn[2], 10)), + Pe = $n.getTime(), + of = yh.getTime(), + Wm = Y + "_try", + xi = x.alert; + try { + var Gd = x.localStorage; + if (Gd && xi) + if (of > Pe && 1728e6 > of - Pe) { + var Oc = (of - Pe) / 864e5; + Gd && Gd[Wm] != Oc && (Gd[Wm] = Oc, x.htWillExpire ? xi(x.htWillExpire.replace("{{day}}", Oc)) : xi("HT for Web free trial license will expire in " + Oc + " days, please apply for a new license!")) + } else Pe >= of && (x.htExpired ? xi(x.htExpired) : xi("Your free trial of HT for Web has expired!")), + Gd && delete Gd[Wm] + } catch (bd) { } + } + Math.sign === Z && (Math.sign = function (M) { + return 0 > M ? -1 : M > 0 ? 1 : +M + }); + var Of = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + Nq = { + encode: function (F, B) { + var p, j, f, G, M, E, i, l = "", + C = 0; + for (F = unescape(encodeURIComponent(F)); C < F.length;) p = F.charCodeAt(C++), j = F.charCodeAt(C++), f = F.charCodeAt(C++), G = p >> 2, M = (3 & p) << 4 | j >> 4, E = (15 & j) << 2 | f >> 6, i = 63 & f, isNaN(j) ? E = i = 64 : isNaN(f) && (i = 64), l = l + B.charAt(G) + B.charAt(M) + B.charAt(E) + B.charAt(i); + return l + }, decode: function (o, I, T) { + for (var u, f, v, i, s, K, V, j = "", y = T || 0; y < o.length;) i = I.indexOf(o.charAt(y++)), s = I.indexOf(o.charAt(y++)), K = I.indexOf(o.charAt(y++)), V = I.indexOf(o.charAt(y++)), u = i << 2 | s >> 4, f = (15 & s) << 4 | K >> 2, v = (3 & K) << 6 | V, j += String.fromCharCode(u), 64 != K && (j += String.fromCharCode(f)), 64 != V && (j += String.fromCharCode(v)); + return j = decodeURIComponent(escape(j)) + }, _utf8_encode: function (a) { + a = a.replace(/\r\n/g, "\n"); + for (var L = "", h = 0; h < a.length; h++) { + var l = a.charCodeAt(h); + 128 > l ? L += String.fromCharCode(l) : l > 127 && 2048 > l ? (L += String.fromCharCode(192 | l >> 6), L += String.fromCharCode(128 | 63 & l)) : (L += String.fromCharCode(224 | l >> 12), L += String.fromCharCode(128 | 63 & l >> 6), L += String.fromCharCode(128 | 63 & l)) + } + return L + }, _utf8_decode: function (k) { + for (var K = "", $ = 0, O = 0, h = 0, B = 0; $ < k.length;) O = k.charCodeAt($), 128 > O ? (K += String.fromCharCode(O), $++) : O > 191 && 224 > O ? (h = k.charCodeAt($ + 1), K += String.fromCharCode((31 & O) << 6 | 63 & h), $ += 2) : (h = k.charCodeAt($ + 1), B = k.charCodeAt($ + 2), K += String.fromCharCode((15 & O) << 12 | (63 & h) << 6 | 63 & B), $ += 3); + return K + } + }, + Xq = [], + Uf = [], + Rc = O.Math = { + generateUUID: function () { + for (var k = [], f = 0; 256 > f; f++) k[f] = (16 > f ? "0" : "") + f.toString(16).toUpperCase(); + return function () { + var r = 0 | 4294967295 * Math.random(), + i = 0 | 4294967295 * Math.random(), + x = 0 | 4294967295 * Math.random(), + z = 0 | 4294967295 * Math.random(); + return k[255 & r] + k[255 & r >> 8] + k[255 & r >> 16] + k[255 & r >> 24] + "-" + k[255 & i] + k[255 & i >> 8] + "-" + k[64 | 15 & i >> 16] + k[255 & i >> 24] + "-" + k[128 | 63 & x] + k[255 & x >> 8] + "-" + k[255 & x >> 16] + k[255 & x >> 24] + k[255 & z] + k[255 & z >> 8] + k[255 & z >> 16] + k[255 & z >> 24] + } + }(), + clamp: function (K, V, v) { + return Math.max(V, Math.min(v, K)) + }, generateIncreasingID: function () { + var e = 0; + return function () { + return ++e + } + }(), + encodeBase64: function (z, g) { + return Nq.encode(z, g || Of) + }, decodeBase64: function (t, z) { + return Nq.decode(t, z || Of) + }, randomArray: function (z, c) { + c = c || z.length; + for (var q = c - 1; q > 0; q--) { + var Y = Math.floor(Math.random() * (q + 1)), + T = z[q]; + z[q] = z[Y], z[Y] = T + } + return z + }, randomInt: function (e, q) { + return q === Z && (q = e, e = 0), e + Math.floor(Math.random() * (q - e)) + }, isPOT: function (H) { + return H > 0 && 0 === (H - 1 & H) + }, nearestPOT: function (A) { + if (!A) return 1; + var p = A; + p--, p |= p >> 1, p |= p >> 2, p |= p >> 4, p |= p >> 8, p |= p >> 16, p++; + var j = p >> 1; + return A - j > p - A ? p : j + }, requestMatrix4: function () { + return Xq.length > 0 ? Xq.pop() : new Rc.Matrix4 + }, releaseMatrix4: function (N) { + Xq.push(N) + }, requestVector3: function () { + return Uf.length > 0 ? Uf.pop() : new Rc.Vector3 + }, releaseVector3: function (b) { + Uf.push(b) + } + }, + Np = O.Matrix = O.Math.Matrix2d = function (W, g, H, G, x) { + this.setFromTransform(W, g, H, G, x) + }, + In = Np; + Np.prototype = {}, Np.prototype.constructor = Np, Np.prototype.set = function (s, d, C, R, K, L) { + return this.a = s, this.b = d, this.c = C, this.d = R, this.tx = K, this.ty = L, this + }, Np.prototype.setFromTransform = function (V, u, T, D, I) { + var Q = this; + if (V === Z) return Q.a = 1, Q.b = 0, Q.c = 0, Q.d = 1, Q.tx = 0, Q.ty = 0, void 0; + V = V || 0; + var U = n(V), + P = k(V); + return D = D || 1, I = I || 1, Q.a = P * D, Q.b = U * D, Q.c = -U * I, Q.d = P * I, Q.tx = u || 0, Q.ty = T || 0, Q + }, Np.prototype.apply = function (h, T) { + T = T || new Xi; + var D = h.x, + j = h.y; + return T.x = this.a * D + this.c * j + this.tx, T.y = this.b * D + this.d * j + this.ty, T + }, Np.prototype.applyInverse = function (p, o) { + o = o || new Xi; + var Q = 1 / (this.a * this.d + this.c * -this.b), + A = p.x, + c = p.y; + return o.x = this.d * Q * A + -this.c * Q * c + (this.ty * this.c - this.tx * this.d) * Q, o.y = this.a * Q * c + -this.b * Q * A + (-this.ty * this.a + this.tx * this.b) * Q, o + }, Np.prototype.translate = function (D, b) { + return this.tx += D, this.ty += b, this + }, Np.prototype.scale = function (b, o) { + return this.a *= b, this.d *= o, this.c *= b, this.b *= o, this.tx *= b, this.ty *= o, this + }, Np.prototype.rotate = function (V) { + var Y = Math.cos(V), + $ = Math.sin(V), + F = this.a, + C = this.c, + b = this.tx; + return this.a = F * Y - this.b * $, this.b = F * $ + this.b * Y, this.c = C * Y - this.d * $, this.d = C * $ + this.d * Y, this.tx = b * Y - this.ty * $, this.ty = b * $ + this.ty * Y, this + }, Np.prototype.appendTranslate = function (c, Y) { + return this.tx += this.a * c + this.c * Y, this.ty += this.b * c + this.d * Y, this + }, Np.prototype.appendScale = function (L, I) { + return this.a *= L, this.d *= I, this.c *= I, this.b *= L, this + }, Np.prototype.appendRotate = function (J) { + if (!J) return this; + var K = Math.cos(J), + X = Math.sin(J), + w = this.a, + h = this.b; + return this.a = w * K + this.c * X, this.b = h * K + this.d * X, this.c = -w * X + this.c * K, this.d = -h * X + this.d * K, this + }, Np.prototype.append = function (X) { + var n = this.a, + W = this.b, + P = this.c, + s = this.d; + return this.a = X.a * n + X.b * P, this.b = X.a * W + X.b * s, this.c = X.c * n + X.d * P, this.d = X.c * W + X.d * s, this.tx = X.tx * n + X.ty * P + this.tx, this.ty = X.tx * W + X.ty * s + this.ty, this + }, Np.prototype.setTransform = function (z, d, q, S, L, n, E, Y, K) { + var J, A, Q, N, P, T, e, a, r, Z; + return P = Math.sin(E), T = Math.cos(E), e = Math.cos(K), a = Math.sin(K), r = -Math.sin(Y), Z = Math.cos(Y), J = T * L, A = P * L, Q = -P * n, N = T * n, this.a = e * J + a * Q, this.b = e * A + a * N, this.c = r * J + Z * Q, this.d = r * A + Z * N, this.tx = z + (q * J + S * Q), this.ty = d + (q * A + S * N), this + }, Np.prototype.prepend = function (d) { + var v = this.tx; + if (1 !== d.a || 0 !== d.b || 0 !== d.c || 1 !== d.d) { + var y = this.a, + w = this.c; + this.a = y * d.a + this.b * d.c, this.b = y * d.b + this.b * d.d, this.c = w * d.a + this.d * d.c, this.d = w * d.b + this.d * d.d + } + return this.tx = v * d.a + this.ty * d.c + d.tx, this.ty = v * d.b + this.ty * d.d + d.ty, this + }, Np.prototype.transform = Np.prototype.prepend, Np.prototype.invert = function () { + var M = this.a, + R = this.b, + Y = this.c, + o = this.d, + a = this.tx, + h = M * o - R * Y; + return this.a = o / h, this.b = -R / h, this.c = -Y / h, this.d = M / h, this.tx = (Y * this.ty - o * a) / h, this.ty = -(M * this.ty - R * a) / h, this + }, Np.prototype.identity = function () { + return this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.tx = 0, this.ty = 0, this + }, Np.prototype.clone = function () { + var o = new Np; + return o.a = this.a, o.b = this.b, o.c = this.c, o.d = this.d, o.tx = this.tx, o.ty = this.ty, o + }, Np.prototype.copy = function (d) { + return d.a = this.a, d.b = this.b, d.c = this.c, d.d = this.d, d.tx = this.tx, d.ty = this.ty, d + }, Np.prototype.tf = function (m, h) { + 1 === arguments.length && (h = m.y, m = m.x); + var J = this; + return { + x: J.a * m + J.c * h + J.tx, + y: J.b * m + J.d * h + J.ty + } + }, Np.prototype.tfi = function (x, q) { + 1 === arguments.length && (q = x.y, x = x.x); + var C = this, + j = 1 / (C.a * C.d + C.c * -C.b); + return { + x: C.d * j * x + -C.c * j * q + (C.ty * C.c - C.tx * C.d) * j, + y: C.a * j * q + -C.b * j * x + (-C.ty * C.a + C.tx * C.b) * j + } + }, Np.IDENTITY = new Np, Np.TEMP_MATRIX = new Np; + var fs = O.Math.Quaternion = function (q, I, f, h) { + this.set(q, I, f, h) + }; + o.assign(fs.prototype, { + set: function (X, R, C, j) { + var f = this; + return f._x = X || 0, f._y = R || 0, f._z = C || 0, f._w = j !== Z ? j : 1, f + }, clone: function () { + return new this.constructor(this._x, this._y, this._z, this._w) + }, copy: function (u) { + var t = this; + return t._x = u._x, t._y = u._y, t._z = u._z, t._w = u._w, t + }, inverse: function () { + return this.conjugate() + }, conjugate: function () { + return this._x *= -1, this._y *= -1, this._z *= -1, this + }, dot: function (N) { + return this._x * N._x + this._y * N._y + this._z * N._z + this._w * N._w + }, lengthSq: function () { + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w + }, length: function () { + return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w) + }, normalize: function () { + var J = this.length(); + return 0 === J ? (this._x = 0, this._y = 0, this._z = 0, this._w = 1) : (J = 1 / J, this._x = this._x * J, this._y = this._y * J, this._z = this._z * J, this._w = this._w * J), this + }, fromArray: function (S, M) { + M === Z && (M = 0); + var g = this; + return g._x = S[M], g._y = S[M + 1], g._z = S[M + 2], g._w = S[M + 3], this + }, slerp: function (W, L) { + if (0 === L) return this; + if (1 === L) return this.copy(W); + var c = this._x, + Z = this._y, + p = this._z, + E = this._w, + O = E * W._w + c * W._x + Z * W._y + p * W._z; + if (0 > O ? (this._w = -W._w, this._x = -W._x, this._y = -W._y, this._z = -W._z, O = -O) : this.copy(W), O >= 1) return this._w = E, this._x = c, this._y = Z, this._z = p, this; + var G = Math.sqrt(1 - O * O); + if (Math.abs(G) < .001) return this._w = .5 * (E + this._w), this._x = .5 * (c + this._x), this._y = .5 * (Z + this._y), this._z = .5 * (p + this._z), this; + var _ = Math.atan2(G, O), + Q = Math.sin((1 - L) * _) / G, + v = Math.sin(L * _) / G; + return this._w = E * Q + this._w * v, this._x = c * Q + this._x * v, this._y = Z * Q + this._y * v, this._z = p * Q + this._z * v, this + }, setFromAxisAngle: function (r, B) { + var W = B / 2, + A = Math.sin(W); + return this._x = r.x * A, this._y = r.y * A, this._z = r.z * A, this._w = Math.cos(W), this + }, setFromEuler: function (m) { + var R = m._x, + C = m._y, + y = m._z, + v = m._order, + B = Math.cos, + g = Math.sin, + E = B(R / 2), + Z = B(C / 2), + w = B(y / 2), + T = g(R / 2), + u = g(C / 2), + r = g(y / 2); + return "XYZ" === v ? (this._x = T * Z * w + E * u * r, this._y = E * u * w - T * Z * r, this._z = E * Z * r + T * u * w, this._w = E * Z * w - T * u * r) : "YXZ" === v ? (this._x = T * Z * w + E * u * r, this._y = E * u * w - T * Z * r, this._z = E * Z * r - T * u * w, this._w = E * Z * w + T * u * r) : "ZXY" === v ? (this._x = T * Z * w - E * u * r, this._y = E * u * w + T * Z * r, this._z = E * Z * r + T * u * w, this._w = E * Z * w - T * u * r) : "ZYX" === v ? (this._x = T * Z * w - E * u * r, this._y = E * u * w + T * Z * r, this._z = E * Z * r - T * u * w, this._w = E * Z * w + T * u * r) : "YZX" === v ? (this._x = T * Z * w + E * u * r, this._y = E * u * w + T * Z * r, this._z = E * Z * r - T * u * w, this._w = E * Z * w - T * u * r) : "XZY" === v && (this._x = T * Z * w - E * u * r, this._y = E * u * w - T * Z * r, this._z = E * Z * r + T * u * w, this._w = E * Z * w + T * u * r), this + }, setFromRotationMatrix: function (m) { + var S, k = m.el, + t = k[0], + Z = k[4], + F = k[8], + G = k[1], + $ = k[5], + W = k[9], + R = k[2], + Q = k[6], + x = k[10], + A = t + $ + x; + return A > 0 ? (S = .5 / Math.sqrt(A + 1), this._w = .25 / S, this._x = (Q - W) * S, this._y = (F - R) * S, this._z = (G - Z) * S) : t > $ && t > x ? (S = 2 * Math.sqrt(1 + t - $ - x), this._w = (Q - W) / S, this._x = .25 * S, this._y = (Z + G) / S, this._z = (F + R) / S) : $ > x ? (S = 2 * Math.sqrt(1 + $ - t - x), this._w = (F - R) / S, this._x = (Z + G) / S, this._y = .25 * S, this._z = (W + Q) / S) : (S = 2 * Math.sqrt(1 + x - t - $), this._w = (G - Z) / S, this._x = (F + R) / S, this._y = (W + Q) / S, this._z = .25 * S), this + }, setFromToVectors: function () { + var a, w; + return function (d, M) { + return a === Z && (a = new tl), w = d.dot(M) + 1, 1e-7 > w ? (w = 0, Math.abs(d.x) > Math.abs(d.z) ? a.set(-d.y, d.x, 0) : a.set(0, -d.z, d.y)) : a.crossVectors(d, M), this._x = a.x, this._y = a.y, this._z = a.z, this._w = w, this.normalize() + } + }(), + setFromUnitVectors: function () { + var P, Q, h = 1e-6; + return function (g, u) { + return P === Z && (P = new tl), Q = g.dot(u) + 1, h > Q ? (Q = 0, Math.abs(g.x) > Math.abs(g.z) ? P.set(-g.y, g.x, 0) : P.set(0, -g.z, g.y)) : P.crossVectors(g, u), this._x = P.x, this._y = P.y, this._z = P.z, this._w = Q, this.normalize() + } + }(), + multiply: function (S) { + return this.multiplyQuaternions(this, S) + }, premultiply: function (k) { + return this.multiplyQuaternions(k, this) + }, multiplyQuaternions: function (y, W) { + var z = y._x, + L = y._y, + r = y._z, + N = y._w, + o = W._x, + p = W._y, + O = W._z, + Y = W._w; + return this._x = z * Y + N * o + L * O - r * p, this._y = L * Y + N * p + r * o - z * O, this._z = r * Y + N * O + z * p - L * o, this._w = N * Y - z * o - L * p - r * O, this + } + }); + var ye = O.Math.Vector4 = function (F, H, L, N) { + this.x = F || 0, this.y = H || 0, this.z = L || 0, this.w = N !== Z ? N : 1 + }; + o.assign(ye.prototype, { + isVector4: !0, + set: function (r, B, R, s) { + return this.x = r, this.y = B, this.z = R, this.w = s, this + }, setScalar: function (R) { + return this.x = R, this.y = R, this.z = R, this.w = R, this + }, setX: function (F) { + return this.x = F, this + }, setY: function (b) { + return this.y = b, this + }, setZ: function (R) { + return this.z = R, this + }, setW: function (r) { + return this.w = r, this + }, setComponent: function (N, V) { + switch (N) { + case 0: + this.x = V; + break; + case 1: + this.y = V; + break; + case 2: + this.z = V; + break; + case 3: + this.w = V; + break; + default: + throw new Error("index is out of range: " + N) + } + return this + }, getComponent: function (y) { + switch (y) { + case 0: + return this.x; + case 1: + return this.y; + case 2: + return this.z; + case 3: + return this.w; + default: + throw new Error("index is out of range: " + y) + } + }, clone: function () { + return new this.constructor(this.x, this.y, this.z, this.w) + }, copy: function (i) { + return this.x = i.x, this.y = i.y, this.z = i.z, this.w = i.w !== Z ? i.w : 1, this + }, add: function (S, $) { + return $ !== Z ? this.addVectors(S, $) : (this.x += S.x, this.y += S.y, this.z += S.z, this.w += S.w, this) + }, addScalar: function (d) { + return this.x += d, this.y += d, this.z += d, this.w += d, this + }, addVectors: function (J, D) { + return this.x = J.x + D.x, this.y = J.y + D.y, this.z = J.z + D.z, this.w = J.w + D.w, this + }, addScaledVector: function (v, d) { + return this.x += v.x * d, this.y += v.y * d, this.z += v.z * d, this.w += v.w * d, this + }, sub: function (k, l) { + return l !== Z ? this.subVectors(k, l) : (this.x -= k.x, this.y -= k.y, this.z -= k.z, this.w -= k.w, this) + }, subScalar: function (f) { + return this.x -= f, this.y -= f, this.z -= f, this.w -= f, this + }, subVectors: function ($, y) { + return this.x = $.x - y.x, this.y = $.y - y.y, this.z = $.z - y.z, this.w = $.w - y.w, this + }, multiplyScalar: function (m) { + return this.x *= m, this.y *= m, this.z *= m, this.w *= m, this + }, applyMatrix4: function (M) { + var r = this.x, + o = this.y, + v = this.z, + X = this.w, + E = M.el; + return this.x = E[0] * r + E[4] * o + E[8] * v + E[12] * X, this.y = E[1] * r + E[5] * o + E[9] * v + E[13] * X, this.z = E[2] * r + E[6] * o + E[10] * v + E[14] * X, this.w = E[3] * r + E[7] * o + E[11] * v + E[15] * X, this + }, divideScalar: function (O) { + return this.multiplyScalar(1 / O) + }, setAxisAngleFromQuaternion: function (p) { + this.w = 2 * Math.acos(p.w); + var z = Math.sqrt(1 - p.w * p.w); + return 1e-4 > z ? (this.x = 1, this.y = 0, this.z = 0) : (this.x = p.x / z, this.y = p.y / z, this.z = p.z / z), this + }, setAxisAngleFromRotationMatrix: function (c) { + var S, z, k, _, i = .01, + I = .1, + u = c.el, + P = u[0], + g = u[4], + L = u[8], + o = u[1], + f = u[5], + X = u[9], + s = u[2], + x = u[6], + q = u[10]; + if (Math.abs(g - o) < i && Math.abs(L - s) < i && Math.abs(X - x) < i) { + if (Math.abs(g + o) < I && Math.abs(L + s) < I && Math.abs(X + x) < I && Math.abs(P + f + q - 3) < I) return this.set(1, 0, 0, 0), this; + S = Math.PI; + var $ = (P + 1) / 2, + W = (f + 1) / 2, + C = (q + 1) / 2, + Y = (g + o) / 4, + H = (L + s) / 4, + T = (X + x) / 4; + return $ > W && $ > C ? i > $ ? (z = 0, k = .707106781, _ = .707106781) : (z = Math.sqrt($), k = Y / z, _ = H / z) : W > C ? i > W ? (z = .707106781, k = 0, _ = .707106781) : (k = Math.sqrt(W), z = Y / k, _ = T / k) : i > C ? (z = .707106781, k = .707106781, _ = 0) : (_ = Math.sqrt(C), z = H / _, k = T / _), this.set(z, k, _, S), this + } + var M = Math.sqrt((x - X) * (x - X) + (L - s) * (L - s) + (o - g) * (o - g)); + return Math.abs(M) < .001 && (M = 1), this.x = (x - X) / M, this.y = (L - s) / M, this.z = (o - g) / M, this.w = Math.acos((P + f + q - 1) / 2), this + }, min: function (Y) { + return this.x = Math.min(this.x, Y.x), this.y = Math.min(this.y, Y.y), this.z = Math.min(this.z, Y.z), this.w = Math.min(this.w, Y.w), this + }, max: function (f) { + return this.x = Math.max(this.x, f.x), this.y = Math.max(this.y, f.y), this.z = Math.max(this.z, f.z), this.w = Math.max(this.w, f.w), this + }, clamp: function (k, j) { + return this.x = Math.max(k.x, Math.min(j.x, this.x)), this.y = Math.max(k.y, Math.min(j.y, this.y)), this.z = Math.max(k.z, Math.min(j.z, this.z)), this.w = Math.max(k.w, Math.min(j.w, this.w)), this + }, clampScalar: function () { + var v, L; + return function (k, m) { + return v === Z && (v = new ye, L = new ye), v.set(k, k, k, k), L.set(m, m, m, m), this.clamp(v, L) + } + }(), + clampLength: function (r, I) { + var R = this.length(); + return this.divideScalar(R || 1).multiplyScalar(Math.max(r, Math.min(I, R))) + }, floor: function () { + return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this.z = Math.floor(this.z), this.w = Math.floor(this.w), this + }, ceil: function () { + return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this.z = Math.ceil(this.z), this.w = Math.ceil(this.w), this + }, round: function () { + return this.x = Math.round(this.x), this.y = Math.round(this.y), this.z = Math.round(this.z), this.w = Math.round(this.w), this + }, roundToZero: function () { + return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x), this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y), this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z), this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w), this + }, negate: function () { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this.w = -this.w, this + }, dot: function (H) { + return this.x * H.x + this.y * H.y + this.z * H.z + this.w * H.w + }, lengthSq: function () { + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w + }, length: function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w) + }, manhattanLength: function () { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w) + }, normalize: function () { + return this.divideScalar(this.length() || 1) + }, setLength: function (h) { + return this.normalize().multiplyScalar(h) + }, lerp: function (I, X) { + return this.x += (I.x - this.x) * X, this.y += (I.y - this.y) * X, this.z += (I.z - this.z) * X, this.w += (I.w - this.w) * X, this + }, lerpVectors: function (W, j, q) { + return this.subVectors(j, W).multiplyScalar(q).add(W) + }, equals: function (O) { + return O.x === this.x && O.y === this.y && O.z === this.z && O.w === this.w + }, fromArray: function (E, c) { + return c === Z && (c = 0), this.x = E[c], this.y = E[c + 1], this.z = E[c + 2], this.w = E[c + 3], this + }, toArray: function (K, E) { + return K === Z && (K = []), E === Z && (E = 0), K[E] = this.x, K[E + 1] = this.y, K[E + 2] = this.z, K[E + 3] = this.w, K + }, fromBufferAttribute: function (O, S) { + return this.x = O.getX(S), this.y = O.getY(S), this.z = O.getZ(S), this.w = O.getW(S), this + } + }); + var tl = O.Math.Vector3 = function (F, m, V) { + F === Z ? (this.x = 0, this.y = 0, this.z = 0) : "object" == typeof F ? this.copy(F) : this.set(F, m == Z ? F : m, V == Z ? F : V) + }; + o.assign(tl.prototype, { + isNaN: function () { + return isNaN(this.x) || isNaN(this.y) || isNaN(this.z) + }, set: function (T, g, X) { + return this.x = T, this.y = g, this.z = X, this + }, equals: function (C) { + return C && this.x === C.x && this.y === C.y && this.z === C.z + }, setScalar: function (A) { + return this.x = A, this.y = A, this.z = A, this + }, setX: function (e) { + return this.x = e, this + }, setY: function (X) { + return this.y = X, this + }, setZ: function (s) { + return this.z = s, this + }, clone: function () { + return new this.constructor(this.x, this.y, this.z) + }, copy: function (U) { + return U.x === Z ? (this.x = U[0], this.y = U[1], this.z = U[2]) : (this.x = U.x, this.y = U.y, this.z = U.z || 0), this + }, add: function (i) { + return this.x += i.x, this.y += i.y, this.z += i.z, this + }, addScalar: function (E) { + return this.x += E, this.y += E, this.z += E, this + }, addVectors: function (n, b) { + return this.x = n.x + b.x, this.y = n.y + b.y, this.z = n.z + b.z, this + }, addScaledVector: function (t, p) { + return this.x += t.x * p, this.y += t.y * p, this.z += t.z * p, this + }, sub: function (k) { + return this.x -= k.x, this.y -= k.y, this.z -= k.z, this + }, subScalar: function (X) { + return this.x -= X, this.y -= X, this.z -= X, this + }, subVectors: function (x, $) { + return this.x = x.x - $.x, this.y = x.y - $.y, this.z = x.z - $.z, this + }, divide: function (A) { + return this.x /= A.x, this.y /= A.y, this.z /= A.z, this + }, multiply: function (K) { + return this.x *= K.x, this.y *= K.y, this.z *= K.z, this + }, multiplyScalar: function (m) { + return this.x *= m, this.y *= m, this.z *= m, this + }, distanceTo: function (i) { + return Math.sqrt(this.distanceToSquared(i)) + }, distanceToSquared: function (m) { + var i = this.x - m.x, + Z = this.y - m.y, + G = this.z - m.z; + return i * i + Z * Z + G * G + }, distanceToSquared2: function (f) { + var h = this.x - f[0], + Z = this.y - f[1], + J = this.z - f[2]; + return h * h + Z * Z + J * J + }, divideVectors: function (X, M) { + return this.x = X.x / M.x, this.y = X.y / M.y, this.z = X.z / M.z, this + }, multiplyVectors: function (Z, H) { + return this.x = Z.x * H.x, this.y = Z.y * H.y, this.z = Z.z * H.z, this + }, transformDirection: function (L) { + var G = this.x, + i = this.y, + Y = this.z, + m = L.el; + return this.x = m[0] * G + m[4] * i + m[8] * Y, this.y = m[1] * G + m[5] * i + m[9] * Y, this.z = m[2] * G + m[6] * i + m[10] * Y, this.normalize() + }, applyAxisAngle: function () { + var i = new fs; + return function (Q, u) { + return this.applyQuaternion(i.setFromAxisAngle(Q, u)) + } + }(), + applyEuler: function () { + var n = new fs; + return function (M) { + return this.applyQuaternion(n.setFromEuler(M)) + } + }(), + applyQuaternion: function (C) { + var X = this.x, + h = this.y, + l = this.z, + P = C._x, + o = C._y, + R = C._z, + d = C._w, + q = d * X + o * l - R * h, + i = d * h + R * X - P * l, + z = d * l + P * h - o * X, + j = -P * X - o * h - R * l; + return this.x = q * d + j * -P + i * -R - z * -o, this.y = i * d + j * -o + z * -P - q * -R, this.z = z * d + j * -R + q * -o - i * -P, this + }, applyMatrix4: function (l) { + var v = this.x, + C = this.y, + W = this.z, + R = l.el, + K = 1 / (R[3] * v + R[7] * C + R[11] * W + R[15]); + return this.x = (R[0] * v + R[4] * C + R[8] * W + R[12]) * K, this.y = (R[1] * v + R[5] * C + R[9] * W + R[13]) * K, this.z = (R[2] * v + R[6] * C + R[10] * W + R[14]) * K, this + }, applyMatrix3: function (q) { + var K = this.x, + I = this.y, + U = this.z, + J = q.el; + return this.x = J[0] * K + J[3] * I + J[6] * U, this.y = J[1] * K + J[4] * I + J[7] * U, this.z = J[2] * K + J[5] * I + J[8] * U, this + }, negate: function () { + return this.x = -this.x, this.y = -this.y, this.z = -this.z, this + }, reflect: function () { + var F = new tl; + return function (w) { + return this.sub(F.copy(w).multiplyScalar(2 * this.dot(w))) + } + }(), + dot: function (P) { + return this.x * P.x + this.y * P.y + this.z * P.z + }, lengthSq: function () { + return this.x * this.x + this.y * this.y + this.z * this.z + }, length: function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z) + }, manhattanLength: function () { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + }, normalize: function () { + var W = this.length(); + return W ? this.multiplyScalar(1 / W) : this + }, setLength: function (G) { + return this.normalize().multiplyScalar(G) + }, fromArray: function (v, O) { + return O === Z && (O = 0), this.x = v[O], this.y = v[O + 1], this.z = v[O + 2], this + }, toArray: function (R, X) { + return R === Z && (R = [0, 0, 0]), X === Z && (X = 0), R[X] = this.x, R[X + 1] = this.y, R[X + 2] = this.z, R + }, cross: function (M) { + return this.crossVectors(this, M) + }, angleTo: function (t) { + var j = this.dot(t) / Math.sqrt(this.lengthSq() * t.lengthSq()); + return j > 1 || -1 > j ? 0 : Math.acos(j) + }, lerp: function (Z, J) { + return this.x += (Z.x - this.x) * J, this.y += (Z.y - this.y) * J, this.z += (Z.z - this.z) * J, this + }, lerpVectors: function (E, K, y) { + return this.subVectors(K, E).multiplyScalar(y).add(E) + }, crossVectors: function (q, O) { + var R = q.x, + H = q.y, + C = q.z, + F = O.x, + z = O.y, + L = O.z; + return this.x = H * L - C * z, this.y = C * F - R * L, this.z = R * z - H * F, this + }, min: function (J) { + return this.x = Math.min(this.x, J.x), this.y = Math.min(this.y, J.y), this.z = Math.min(this.z, J.z), this + }, max: function (W) { + return this.x = Math.max(this.x, W.x), this.y = Math.max(this.y, W.y), this.z = Math.max(this.z, W.z), this + }, setFromMatrixPosition: function (F) { + return this.setFromMatrixColumn(F, 3) + }, setFromMatrixScale: function (K) { + var y = this.setFromMatrixColumn(K, 0).length(), + s = this.setFromMatrixColumn(K, 1).length(), + f = this.setFromMatrixColumn(K, 2).length(); + return this.x = y, this.y = s, this.z = f, this + }, setFromMatrixColumn: function (r, q) { + return this.fromArray(r.el, 4 * q) + } + }); + var Xi = O.Math.Vector2 = function (C, P, G) { + "object" == typeof C && (C.x != Z ? (P = C.y, C = C.x, G = C.e) : (G = C[2], P = C[1], C = C[0])), this.set(C || 0, P || 0, G) + }; + Xi.prototype = {}, Xi.prototype.constructor = Xi, o.defineProperties(Xi.prototype, { + width: { + get: function () { + return this.x + }, set: function (p) { + this.x = p + } + }, + height: { + get: function () { + return this.y + }, set: function (W) { + this.y = W + } + } + }), Xi.prototype.clone = function () { + return new Xi(this.x, this.y, this.e) + }, Xi.prototype.copy = function (I) { + return this.set(I.x, I.y, I.e), this + }, Xi.prototype.equals = function (R) { + return R.x === this.x && R.y === this.y + }, Xi.prototype.set = function (U, w, D) { + return this.x = U || 0, this.y = w || (0 !== w ? this.x : 0), D != Z && (this.e = D), this + }, Xi.prototype.setScalar = function (y) { + return this.x = y, this.y = y, this + }, Xi.prototype.setX = function (b) { + return this.x = b || 0, this + }, Xi.prototype.setY = function (A) { + return this.y = A || 0, this + }, Xi.prototype.add = function (S) { + return this.x += S.x, this.y += S.y, this + }, Xi.prototype.addVectors = function (M, B) { + return this.x = M.x + B.x, this.y = M.y + B.y, this + }, Xi.prototype.addScalar = function (X) { + return this.x += X, this.y += X, this + }, Xi.prototype.addScaledVector = function (o, p) { + return this.x += o.x * p, this.y += o.y * p, this + }, Xi.prototype.sub = function (a) { + return this.x -= a.x, this.y -= a.y, this + }, Xi.prototype.subScalar = function (r) { + return this.x -= r, this.y -= r, this + }, Xi.prototype.subVectors = function (U, H) { + return this.x = U.x - H.x, this.y = U.y - H.y, this + }, Xi.prototype.multiply = function (k) { + return this.x *= k.x, this.y *= k.y, this + }, Xi.prototype.multiplyScalar = function (x) { + return this.x *= x, this.y *= x, this + }, Xi.prototype.divide = function (K) { + return this.x /= K.x, this.y /= K.y, this + }, Xi.prototype.divideScalar = function (H) { + return this.multiplyScalar(1 / H) + }, Xi.prototype.min = function (M) { + return this.x = Math.min(this.x, M.x), this.y = Math.min(this.y, M.y), this + }, Xi.prototype.max = function (Q) { + return this.x = Math.max(this.x, Q.x), this.y = Math.max(this.y, Q.y), this + }, Xi.prototype.fromArray = function (Y, B) { + return B === Z && (B = 0), this.x = Y[B], this.y = Y[B + 1], this + }, Xi.prototype.clamp = function (o, f) { + return this.x = Math.max(o.x, Math.min(f.x, this.x)), this.y = Math.max(o.y, Math.min(f.y, this.y)), this + }, Xi.prototype.clampScalar = function () { + var e, c; + return function (m, _) { + return e === Z && (e = new Xi, c = new Xi), e.set(m, m), c.set(_, _), this.clamp(e, c) + } + }(), Xi.prototype.clampLength = function (e, c) { + var l = this.length(); + return this.multiplyScalar(Math.max(e, Math.min(c, l)) / l) + }, Xi.prototype.dot = function (M) { + return this.x * M.x + this.y * M.y + }, Xi.prototype.lengthSq = function () { + return this.x * this.x + this.y * this.y + }, Xi.prototype.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y) + }, Xi.prototype.normalize = function () { + return this.divideScalar(this.length()) + }, Xi.prototype.angle = function () { + var P = Math.atan2(this.y, this.x); + return 0 > P && (P += 2 * Math.PI), P + }, Xi.prototype.distanceTo = function ($) { + return Math.sqrt(this.distanceToSquared($)) + }, Xi.prototype.distanceToSquared = function (F) { + var o = this.x - F.x, + v = this.y - F.y; + return o * o + v * v + }, Xi.prototype.isNearEnough = function (S) { + return this.distanceToSquared(S) < 1e-8 + }, Xi.prototype.setLength = function (I) { + var l = this.length(); + return l ? this.multiplyScalar(I / l) : this + }, Xi.prototype.lerp = function (u, p) { + return this.x += (u.x - this.x) * p, this.y += (u.y - this.y) * p, this + }, Xi.prototype.lerpVectors = function (E, Y, s) { + return this.subVectors(Y, E).multiplyScalar(s).add(E) + }, Xi.prototype.rotateAround = function (O, L) { + var q = O ? O.x : 0, + A = O ? O.y : 0, + F = Math.cos(L), + N = Math.sin(L), + a = this.x - q, + c = this.y - A; + return this.x = a * F - c * N + q, this.y = a * N + c * F + A, this + }; + var sm = O.Math.Matrix3 = function () { + this.el = [1, 0, 0, 0, 1, 0, 0, 0, 1] + }; + o.assign(sm.prototype, { + isMatrix3: !0, + set: function (W, D, A, V, T, U, f, $, I) { + var S = this.el; + return S[0] = W, S[1] = V, S[2] = f, S[3] = D, S[4] = T, S[5] = $, S[6] = A, S[7] = U, S[8] = I, this + }, identity: function () { + return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1), this + }, clone: function () { + return (new this.constructor).fromArray(this.el) + }, copy: function (S) { + var W = this.el, + H = S.el; + return W[0] = H[0], W[1] = H[1], W[2] = H[2], W[3] = H[3], W[4] = H[4], W[5] = H[5], W[6] = H[6], W[7] = H[7], W[8] = H[8], this + }, setFromMatrix4: function (P) { + var M = P.el; + return this.set(M[0], M[4], M[8], M[1], M[5], M[9], M[2], M[6], M[10]), this + }, applyToBufferAttribute: function () { + var N = new tl; + return function (U) { + for (var b = 0, j = U.count; j > b; b++) N.x = U.getX(b), N.y = U.getY(b), N.z = U.getZ(b), N.applyMatrix3(this), U.setXYZ(b, N.x, N.y, N.z); + return U + } + }(), + multiply: function (A) { + return this.multiplyMatrices(this, A) + }, premultiply: function (K) { + return this.multiplyMatrices(K, this) + }, multiplyMatrices: function (B, t) { + var r = B.el, + A = t.el, + W = this.el, + N = r[0], + C = r[3], + S = r[6], + o = r[1], + l = r[4], + X = r[7], + F = r[2], + P = r[5], + j = r[8], + D = A[0], + T = A[3], + J = A[6], + e = A[1], + k = A[4], + R = A[7], + s = A[2], + Q = A[5], + v = A[8]; + return W[0] = N * D + C * e + S * s, W[3] = N * T + C * k + S * Q, W[6] = N * J + C * R + S * v, W[1] = o * D + l * e + X * s, W[4] = o * T + l * k + X * Q, W[7] = o * J + l * R + X * v, W[2] = F * D + P * e + j * s, W[5] = F * T + P * k + j * Q, W[8] = F * J + P * R + j * v, this + }, multiplyScalar: function (v) { + var p = this.el; + return p[0] *= v, p[3] *= v, p[6] *= v, p[1] *= v, p[4] *= v, p[7] *= v, p[2] *= v, p[5] *= v, p[8] *= v, this + }, determinant: function () { + var j = this.el, + l = j[0], + q = j[1], + B = j[2], + n = j[3], + t = j[4], + s = j[5], + N = j[6], + H = j[7], + m = j[8]; + return l * t * m - l * s * H - q * n * m + q * s * N + B * n * H - B * t * N + }, getInverse: function (t) { + var L = t.el, + M = this.el, + f = L[0], + D = L[1], + i = L[2], + S = L[3], + E = L[4], + Q = L[5], + o = L[6], + j = L[7], + c = L[8], + B = c * E - Q * j, + w = Q * o - c * S, + N = j * S - E * o, + K = f * B + D * w + i * N; + if (0 === K) return this.identity(); + var F = 1 / K; + return M[0] = B * F, M[1] = (i * j - c * D) * F, M[2] = (Q * D - i * E) * F, M[3] = w * F, M[4] = (c * f - i * o) * F, M[5] = (i * S - Q * f) * F, M[6] = N * F, M[7] = (D * o - j * f) * F, M[8] = (E * f - D * S) * F, this + }, transpose: function () { + var H, $ = this.el; + return H = $[1], $[1] = $[3], $[3] = H, H = $[2], $[2] = $[6], $[6] = H, H = $[5], $[5] = $[7], $[7] = H, this + }, getNormalMatrix: function (w) { + return this.setFromMatrix4(w).getInverse(this).transpose() + }, transposeIntoArray: function (v) { + var B = this.el; + return v[0] = B[0], v[1] = B[3], v[2] = B[6], v[3] = B[1], v[4] = B[4], v[5] = B[7], v[6] = B[2], v[7] = B[5], v[8] = B[8], this + }, setUvTransform: function (r, H, h, R, f, K, P) { + var i = Math.cos(f), + Y = Math.sin(f); + this.set(h * i, h * Y, -h * (i * K + Y * P) + K + r, -R * Y, R * i, -R * (-Y * K + i * P) + P + H, 0, 0, 1) + }, scale: function (p, g) { + var H = this.el; + return H[0] *= p, H[3] *= p, H[6] *= p, H[1] *= g, H[4] *= g, H[7] *= g, this + }, rotate: function (W) { + var R = Math.cos(W), + J = Math.sin(W), + r = this.el, + g = r[0], + O = r[3], + Y = r[6], + w = r[1], + c = r[4], + _ = r[7]; + return r[0] = R * g + J * w, r[3] = R * O + J * c, r[6] = R * Y + J * _, r[1] = -J * g + R * w, r[4] = -J * O + R * c, r[7] = -J * Y + R * _, this + }, translate: function (t, M) { + var o = this.el; + return o[0] += t * o[2], o[3] += t * o[5], o[6] += t * o[8], o[1] += M * o[2], o[4] += M * o[5], o[7] += M * o[8], this + }, equals: function (z) { + for (var M = this.el, Q = z.el, V = 0; 9 > V; V++) + if (M[V] !== Q[V]) return !1; + return !0 + }, fromArray: function (X, J) { + J === Z && (J = 0); + for (var j = 0; 9 > j; j++) this.el[j] = X[j + J]; + return this + }, toArray: function (D, A) { + D === Z && (D = []), A === Z && (A = 0); + var P = this.el; + return D[A] = P[0], D[A + 1] = P[1], D[A + 2] = P[2], D[A + 3] = P[3], D[A + 4] = P[4], D[A + 5] = P[5], D[A + 6] = P[6], D[A + 7] = P[7], D[A + 8] = P[8], D + } + }); + var Io = O.Math.Plane = function (s, S) { + this.normal = s !== Z ? s : new tl(1, 0, 0), this.constant = S !== Z ? S : 0 + }; + o.assign(Io.prototype, { + set: function (L, G) { + return this.normal.copy(L), this.constant = G, this + }, setComponents: function (D, S, E, C) { + return this.normal.set(D, S, E), this.constant = C, this + }, setFromNormalAndCoplanarPoint: function (O, e) { + return this.normal.copy(O), this.constant = -e.dot(this.normal), this + }, setFromCoplanarPoints: function () { + var v = new tl, + c = new tl; + return function (Q, e, o) { + var j = v.subVectors(o, e).cross(c.subVectors(Q, e)).normalize(); + return this.setFromNormalAndCoplanarPoint(j, Q), this + } + }(), + clone: function () { + return (new this.constructor).copy(this) + }, copy: function (h) { + return this.normal.copy(h.normal), this.constant = h.constant, this + }, normalize: function () { + var V = 1 / this.normal.length(); + return this.normal.multiplyScalar(V), this.constant *= V, this + }, negate: function () { + return this.constant *= -1, this.normal.negate(), this + }, distanceToPoint: function (Q) { + return this.normal.dot(Q) + this.constant + }, distanceToSphere: function (r) { + return this.distanceToPoint(r.center) - r.radius + }, projectPoint: function (X, R) { + return R === Z && (R = new tl), R.copy(this.normal).multiplyScalar(-this.distanceToPoint(X)).add(X) + }, intersectLine: function () { + var s = new tl; + return function (r, R) { + R === Z && (R = new tl); + var j = r.delta(s), + L = this.normal.dot(j); + if (0 === L) return 0 === this.distanceToPoint(r.start) ? R.copy(r.start) : Z; + var V = -(r.start.dot(this.normal) + this.constant) / L; + return 0 > V || V > 1 ? Z : R.copy(j).multiplyScalar(V).add(r.start) + } + }(), + intersectsLine: function (D) { + var x = this.distanceToPoint(D.start), + r = this.distanceToPoint(D.end); + return 0 > x && r > 0 || 0 > r && x > 0 + }, intersectsBox: function (K) { + return K.intersectsPlane(this) + }, intersectsSphere: function (L) { + return L.intersectsPlane(this) + }, coplanarPoint: function (V) { + return V === Z && (V = new tl), V.copy(this.normal).multiplyScalar(-this.constant) + }, applyMatrix4: function () { + var C = new tl, + i = new sm; + return function (X, N) { + var $ = N || i.getNormalMatrix(X), + R = this.coplanarPoint(C).applyMatrix4(X), + j = this.normal.applyMatrix3($).normalize(); + return this.constant = -R.dot(j), this + } + }(), + translate: function (Y) { + return this.constant -= Y.dot(this.normal), this + }, equals: function (v) { + return v.normal.equals(this.normal) && v.constant === this.constant + } + }); + var Qi = O.Math.Ray = function (I, V) { + this.origin = I !== Z ? I.clone() : new tl, this.direction = V !== Z ? V.clone() : new tl + }; + o.assign(Qi.prototype, { + set: function (K, n) { + return this.origin.copy(K), this.direction.copy(n), this + }, clone: function () { + return (new this.constructor).copy(this) + }, copy: function (T) { + return this.origin.copy(T.origin), this.direction.copy(T.direction), this.maxHitLen = T.maxHitLen, this + }, at: function (n, r) { + var I = r || new tl; + return I.copy(this.direction).multiplyScalar(n).add(this.origin) + }, setMaxHitLength: function ($) { + this.maxHitLen = $ + }, lookAt: function (o) { + return this.direction.copy(o).sub(this.origin).normalize(), this + }, applyMatrix4: function (U) { + var i = this.maxHitLen; + if (i) { + var L = this.direction.clone().multiplyScalar(i).add(this.origin); + L.applyMatrix4(U) + } + return this.origin.applyMatrix4(U), this.direction.transformDirection(U), i && (this.maxHitLen = this.origin.distanceTo(L)), this + }, intersectSphere: function () { + var s = new tl; + return function (h, K) { + s.subVectors(h.center, this.origin); + var m = s.dot(this.direction), + T = s.dot(s) - m * m, + I = h.radius * h.radius; + if (T > I) return null; + var i = Math.sqrt(I - T), + Y = m - i, + y = m + i; + return 0 > Y && 0 > y ? null : 0 > Y ? this.at(y, K) : this.at(Y, K) + } + }(), + intersectEllipsoid: function () { + var P = new tl, + A = new tl; + return function (s, i) { + P.subVectors(s.center, this.origin), P.divide(s.radius), A.divideVectors(this.direction, s.radius); + var J = A.lengthSq(), + I = P.dot(A), + r = P.dot(P) * J - I * I; + if (r > J) return null; + var H = Math.sqrt(J - r), + l = (I - H) / J, + U = (I + H) / J; + return 0 > l && 0 > U ? null : 0 > l ? this.at(U, i) : this.at(l, i) + } + }(), + intersectBox: function (P, y) { + var T, M, t, w, Q, q, e = 1 / this.direction.x, + $ = 1 / this.direction.y, + u = 1 / this.direction.z, + z = this.origin; + if (e >= 0 ? (T = (P.min.x - z.x) * e, M = (P.max.x - z.x) * e) : (T = (P.max.x - z.x) * e, M = (P.min.x - z.x) * e), $ >= 0 ? (t = (P.min.y - z.y) * $, w = (P.max.y - z.y) * $) : (t = (P.max.y - z.y) * $, w = (P.min.y - z.y) * $), T > w || t > M) return null; + if ((t > T || T !== T) && (T = t), (M > w || M !== M) && (M = w), u >= 0 ? (Q = (P.min.z - z.z) * u, q = (P.max.z - z.z) * u) : (Q = (P.max.z - z.z) * u, q = (P.min.z - z.z) * u), T > q || Q > M) return null; + if ((Q > T || T !== T) && (T = Q), (M > q || M !== M) && (M = q), 0 > M) return null; + var c = T >= 0 ? T : M, + o = this.maxHitLen; + return o && c > o ? null : this.at(c, y) + }, intersectTriangle: function () { + var D = new tl, + L = new tl, + n = new tl, + H = new tl; + return function (E, u, s, d, x) { + L.subVectors(u, E), n.subVectors(s, E), H.crossVectors(L, n); + var w, b = this.direction.dot(H); + if (b > 0) { + if (d) return null; + w = 1 + } else { + if (!(0 > b)) return null; + w = -1, b = -b + } + D.subVectors(this.origin, E); + var B = w * this.direction.dot(n.crossVectors(D, n)); + if (0 > B) return null; + var M = w * this.direction.dot(L.cross(D)); + if (0 > M || B + M > b) return null; + var y = -w * D.dot(H); + if (0 > y) return null; + var z = y / b, + p = this.maxHitLen; + return p && z > p ? null : this.at(z, x) + } + }() + }); + var Hi = O.Math.Box3 = function (i, V) { + this.min = i !== Z ? i : new tl(1 / 0, 1 / 0, 1 / 0), this.max = V !== Z ? V : new tl(-1 / 0, -1 / 0, -1 / 0) + }; + o.assign(Hi.prototype, { + set: function (E, p) { + return this.min.copy(E), this.max.copy(p), this + }, setFromArray: function ($) { + for (var n = 1 / 0, P = 1 / 0, L = 1 / 0, V = -1 / 0, l = -1 / 0, Y = -1 / 0, v = 0, D = $.length; D > v; v += 3) { + var u = $[v], + T = $[v + 1], + Q = $[v + 2]; + n > u && (n = u), P > T && (P = T), L > Q && (L = Q), u > V && (V = u), T > l && (l = T), Q > Y && (Y = Q) + } + return this.min.set(n, P, L), this.max.set(V, l, Y), this + }, setFromPoints: function (p) { + this.makeEmpty(); + for (var D = 0, O = p.length; O > D; D++) this.expandByPoint(p[D]); + return this + }, clone: function () { + return (new this.constructor).copy(this) + }, intersectsBox: function (f) { + return f.max.x < this.min.x || f.min.x > this.max.x || f.max.y < this.min.y || f.min.y > this.max.y || f.max.z < this.min.z || f.min.z > this.max.z ? !1 : !0 + }, copy: function (O) { + return this.min.copy(O.min), this.max.copy(O.max), this + }, makeEmpty: function () { + return this.min.x = this.min.y = this.min.z = 1 / 0, this.max.x = this.max.y = this.max.z = -1 / 0, this + }, isEmpty: function () { + return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z + }, expandByPoint: function (Y) { + return this.min.min(Y), this.max.max(Y), this + }, expandByBox: function (p) { + return this.min.min(p.min), this.max.max(p.max), this + }, applyMatrix4: function () { + var w = [new tl, new tl, new tl, new tl, new tl, new tl, new tl, new tl]; + return function (a) { + return this.isEmpty() ? this : (w[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(a), w[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(a), w[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(a), w[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(a), w[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(a), w[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(a), w[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(a), w[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(a), this.setFromPoints(w), this) + } + }() + }); + var Mk = O.Math.Sphere = function (V, v) { + this.center = V !== Z ? V : new tl, this.radius = v !== Z ? v : 0 + }; + o.assign(Mk.prototype, { + set: function (b, z) { + return this.center.copy(b), this.radius = z, this + }, setFromPoints: function () { + var d = new Hi; + return function (T, $) { + var V = this.center; + $ !== Z ? V.copy($) : d.setFromPoints(T).getCenter(V); + for (var M = 0, j = 0, H = T.length; H > j; j++) M = Math.max(M, V.distanceToSquared(T[j])); + return this.radius = Math.sqrt(M), this + } + }(), + clone: function () { + return (new this.constructor).copy(this) + }, copy: function (m) { + return this.center.copy(m.center), this.radius = m.radius, this + }, empty: function () { + return this.radius <= 0 + }, containsPoint: function (Z) { + return Z.distanceToSquared(this.center) <= this.radius * this.radius + }, distanceToPoint: function (s) { + return s.distanceTo(this.center) - this.radius + }, intersectsSphere: function (y) { + var Z = this.radius + y.radius; + return y.center.distanceToSquared(this.center) <= Z * Z + }, intersectsBox: function (Y) { + return Y.intersectsSphere(this) + }, intersectsPlane: function ($) { + return Math.abs($.distanceToPoint(this.center)) <= this.radius + }, clampPoint: function (I, y) { + var L = this.center.distanceToSquared(I); + return y === Z && (y = new tl), y.copy(I), L > this.radius * this.radius && (y.sub(this.center).normalize(), y.multiplyScalar(this.radius).add(this.center)), y + }, getBoundingBox: function (X) { + return X === Z && (X = new Hi), X.set(this.center, this.center), X.expandByScalar(this.radius), X + }, applyMatrix4: function (L) { + return this.center.applyMatrix4(L), this.radius = this.radius * L.getMaxScaleOnAxis(), this + }, translate: function (A) { + return this.center.add(A), this + }, equals: function (j) { + return j.center.equals(this.center) && j.radius === this.radius + } + }); + var Vc = O.Math.Frustum = function (H, F, B, J, r, Q) { + this.planes = [H !== Z ? H : new Io, F !== Z ? F : new Io, B !== Z ? B : new Io, J !== Z ? J : new Io, r !== Z ? r : new Io, Q !== Z ? Q : new Io] + }; + o.assign(Vc.prototype, { + set: function (b, n, w, S, E, Z) { + var d = this.planes; + return d[0].copy(b), d[1].copy(n), d[2].copy(w), d[3].copy(S), d[4].copy(E), d[5].copy(Z), this + }, clone: function () { + return (new this.constructor).copy(this) + }, copy: function (y) { + for (var u = this.planes, g = 0; 6 > g; g++) u[g].copy(y.planes[g]); + return this + }, setFromMatrix: function (L) { + var Q = this.planes, + T = L.el, + u = T[0], + i = T[1], + E = T[2], + A = T[3], + U = T[4], + f = T[5], + c = T[6], + V = T[7], + G = T[8], + q = T[9], + r = T[10], + l = T[11], + J = T[12], + C = T[13], + Z = T[14], + h = T[15]; + return Q[0].setComponents(A - u, V - U, l - G, h - J).normalize(), Q[1].setComponents(A + u, V + U, l + G, h + J).normalize(), Q[2].setComponents(A + i, V + f, l + q, h + C).normalize(), Q[3].setComponents(A - i, V - f, l - q, h - C).normalize(), Q[4].setComponents(A - E, V - c, l - r, h - Z).normalize(), Q[5].setComponents(A + E, V + c, l + r, h + Z).normalize(), this + }, intersectsObject: function () { + var Y = new Mk; + return function (o) { + var K = o.geometry; + return null === K.boundingSphere && K.computeBoundingSphere(), Y.copy(K.boundingSphere).applyMatrix4(o.matrixWorld), this.intersectsSphere(Y) + } + }(), + intersectsSprite: function () { + var K = new Mk; + return function (m) { + return K.center.set(0, 0, 0), K.radius = .7071067811865476, K.applyMatrix4(m.matrixWorld), this.intersectsSphere(K) + } + }(), + intersectsSphere: function (L) { + for (var v = this.planes, O = L.center, Q = -L.radius, s = 0; 6 > s; s++) { + var g = v[s].distanceToPoint(O); + if (Q > g) return !1 + } + return !0 + }, intersectsBox: function () { + var D = new tl; + return function (b) { + for (var Q = this.planes, I = 0; 6 > I; I++) { + var K = Q[I]; + if (D.x = K.normal.x > 0 ? b.max.x : b.min.x, D.y = K.normal.y > 0 ? b.max.y : b.min.y, D.z = K.normal.z > 0 ? b.max.z : b.min.z, K.distanceToPoint(D) < 0) return !1 + } + return !0 + } + }(), + containsPoint: function ($) { + for (var c = this.planes, E = 0; 6 > E; E++) + if (c[E].distanceToPoint($) < 0) return !1; + return !0 + } + }); + var br = O.Math.Matrix4 = function () { + this.el = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + }; + o.assign(br.prototype, { + set: function (j, F, t, K, Y, A, V, O, P, v, k, w, G, H, B, m) { + var x = this.el; + return x[0] = j, x[4] = F, x[8] = t, x[12] = K, x[1] = Y, x[5] = A, x[9] = V, x[13] = O, x[2] = P, x[6] = v, x[10] = k, x[14] = w, x[3] = G, x[7] = H, x[11] = B, x[15] = m, this + }, clone: function () { + return (new br).fromArray(this.el) + }, fromArray: function (c, Q) { + Q === Z && (Q = 0); + for (var n = this.el, v = 0; 16 > v; v++) n[v] = c[v + Q]; + return this + }, getElements: function () { + return this.el + }, scale: function (w) { + var W = this.el, + H = w.x, + C = w.y, + b = w.z; + return W[0] *= H, W[4] *= C, W[8] *= b, W[1] *= H, W[5] *= C, W[9] *= b, W[2] *= H, W[6] *= C, W[10] *= b, W[3] *= H, W[7] *= C, W[11] *= b, this + }, makeRotationFromEuler: function (K) { + var D = this.el, + M = K._x, + R = K._y, + o = K._z, + X = K._order, + z = Math.cos(M), + I = Math.sin(M), + p = Math.cos(R), + l = Math.sin(R), + Z = Math.cos(o), + i = Math.sin(o); + if ("XYZ" === X) { + var m = z * Z, + r = z * i, + t = I * Z, + f = I * i; + D[0] = p * Z, D[4] = -p * i, D[8] = l, D[1] = r + t * l, D[5] = m - f * l, D[9] = -I * p, D[2] = f - m * l, D[6] = t + r * l, D[10] = z * p + } else if ("YXZ" === X) { + var n = p * Z, + b = p * i, + a = l * Z, + V = l * i; + D[0] = n + V * I, D[4] = a * I - b, D[8] = z * l, D[1] = z * i, D[5] = z * Z, D[9] = -I, D[2] = b * I - a, D[6] = V + n * I, D[10] = z * p + } else if ("ZXY" === X) { + var n = p * Z, + b = p * i, + a = l * Z, + V = l * i; + D[0] = n - V * I, D[4] = -z * i, D[8] = a + b * I, D[1] = b + a * I, D[5] = z * Z, D[9] = V - n * I, D[2] = -z * l, D[6] = I, D[10] = z * p + } else if ("ZYX" === X) { + var m = z * Z, + r = z * i, + t = I * Z, + f = I * i; + D[0] = p * Z, D[4] = t * l - r, D[8] = m * l + f, D[1] = p * i, D[5] = f * l + m, D[9] = r * l - t, D[2] = -l, D[6] = I * p, D[10] = z * p + } else if ("YZX" === X) { + var g = z * p, + T = z * l, + j = I * p, + G = I * l; + D[0] = p * Z, D[4] = G - g * i, D[8] = j * i + T, D[1] = i, D[5] = z * Z, D[9] = -I * Z, D[2] = -l * Z, D[6] = T * i + j, D[10] = g - G * i + } else if ("XZY" === X) { + var g = z * p, + T = z * l, + j = I * p, + G = I * l; + D[0] = p * Z, D[4] = -i, D[8] = l * Z, D[1] = g * i + G, D[5] = z * Z, D[9] = T * i - j, D[2] = j * i - T, D[6] = I * Z, D[10] = G * i + g + } + return D[3] = 0, D[7] = 0, D[11] = 0, D[12] = 0, D[13] = 0, D[14] = 0, D[15] = 1, this + }, makeRotationFromQuaternion: function (R) { + var Y = this.el, + U = R._x, + n = R._y, + S = R._z, + G = R._w, + $ = U + U, + K = n + n, + L = S + S, + F = U * $, + e = U * K, + c = U * L, + X = n * K, + q = n * L, + O = S * L, + w = G * $, + j = G * K, + s = G * L; + return Y[0] = 1 - (X + O), Y[4] = e - s, Y[8] = c + j, Y[1] = e + s, Y[5] = 1 - (F + O), Y[9] = q - w, Y[2] = c - j, Y[6] = q + w, Y[10] = 1 - (F + X), Y[3] = 0, Y[7] = 0, Y[11] = 0, Y[12] = 0, Y[13] = 0, Y[14] = 0, Y[15] = 1, this + }, identity: function () { + return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), this + }, getInverse: function (V) { + var D = this.el, + x = V.el, + k = x[0], + H = x[1], + R = x[2], + Y = x[3], + e = x[4], + v = x[5], + i = x[6], + M = x[7], + $ = x[8], + o = x[9], + y = x[10], + U = x[11], + p = x[12], + h = x[13], + Q = x[14], + u = x[15], + q = o * Q * M - h * y * M + h * i * U - v * Q * U - o * i * u + v * y * u, + K = p * y * M - $ * Q * M - p * i * U + e * Q * U + $ * i * u - e * y * u, + f = $ * h * M - p * o * M + p * v * U - e * h * U - $ * v * u + e * o * u, + w = p * o * i - $ * h * i - p * v * y + e * h * y + $ * v * Q - e * o * Q, + l = k * q + H * K + R * f + Y * w; + if (0 === l) return this.identity(); + var r = 1 / l; + return D[0] = q * r, D[1] = (h * y * Y - o * Q * Y - h * R * U + H * Q * U + o * R * u - H * y * u) * r, D[2] = (v * Q * Y - h * i * Y + h * R * M - H * Q * M - v * R * u + H * i * u) * r, D[3] = (o * i * Y - v * y * Y - o * R * M + H * y * M + v * R * U - H * i * U) * r, D[4] = K * r, D[5] = ($ * Q * Y - p * y * Y + p * R * U - k * Q * U - $ * R * u + k * y * u) * r, D[6] = (p * i * Y - e * Q * Y - p * R * M + k * Q * M + e * R * u - k * i * u) * r, D[7] = (e * y * Y - $ * i * Y + $ * R * M - k * y * M - e * R * U + k * i * U) * r, D[8] = f * r, D[9] = (p * o * Y - $ * h * Y - p * H * U + k * h * U + $ * H * u - k * o * u) * r, D[10] = (e * h * Y - p * v * Y + p * H * M - k * h * M - e * H * u + k * v * u) * r, D[11] = ($ * v * Y - e * o * Y - $ * H * M + k * o * M + e * H * U - k * v * U) * r, D[12] = w * r, D[13] = ($ * h * R - p * o * R + p * H * y - k * h * y - $ * H * Q + k * o * Q) * r, D[14] = (p * v * R - e * h * R - p * H * i + k * h * i + e * H * Q - k * v * Q) * r, D[15] = (e * o * R - $ * v * R + $ * H * i - k * o * i - e * H * y + k * v * y) * r, this + }, makeRotationAxis: function (Z, d) { + var a = Math.cos(d), + o = Math.sin(d), + L = 1 - a, + M = Z.x, + j = Z.y, + x = Z.z, + T = L * M, + Y = L * j; + return this.set(T * M + a, T * j - o * x, T * x + o * j, 0, T * j + o * x, Y * j + a, Y * x - o * M, 0, T * x - o * j, Y * x + o * M, L * x * x + a, 0, 0, 0, 0, 1), this + }, multiply: function (X) { + return this.multiplyMatrices(this, X) + }, premultiply: function (S) { + return this.multiplyMatrices(S, this) + }, multiplyMatrices: function (P, F) { + var W = P.el, + C = F.el, + u = this.el, + s = W[0], + A = W[4], + Q = W[8], + o = W[12], + t = W[1], + S = W[5], + _ = W[9], + N = W[13], + T = W[2], + z = W[6], + j = W[10], + c = W[14], + h = W[3], + d = W[7], + x = W[11], + E = W[15], + l = C[0], + D = C[4], + G = C[8], + B = C[12], + I = C[1], + H = C[5], + M = C[9], + K = C[13], + J = C[2], + r = C[6], + Y = C[10], + e = C[14], + X = C[3], + n = C[7], + L = C[11], + v = C[15]; + return u[0] = s * l + A * I + Q * J + o * X, u[4] = s * D + A * H + Q * r + o * n, u[8] = s * G + A * M + Q * Y + o * L, u[12] = s * B + A * K + Q * e + o * v, u[1] = t * l + S * I + _ * J + N * X, u[5] = t * D + S * H + _ * r + N * n, u[9] = t * G + S * M + _ * Y + N * L, u[13] = t * B + S * K + _ * e + N * v, u[2] = T * l + z * I + j * J + c * X, u[6] = T * D + z * H + j * r + c * n, u[10] = T * G + z * M + j * Y + c * L, u[14] = T * B + z * K + j * e + c * v, u[3] = h * l + d * I + x * J + E * X, u[7] = h * D + d * H + x * r + E * n, u[11] = h * G + d * M + x * Y + E * L, u[15] = h * B + d * K + x * e + E * v, this + }, lookAt: function () { + var u = new tl, + e = new tl, + R = new tl; + return function (E, q, z) { + var r = this.el; + return R.subVectors(E, q), 0 === R.lengthSq() && (R.z = 1), R.normalize(), u.crossVectors(z, R), 0 === u.lengthSq() && (1 === Math.abs(z.z) ? R.x += 1e-4 : R.z += 1e-4, R.normalize(), u.crossVectors(z, R)), u.normalize(), e.crossVectors(R, u), r[0] = u.x, r[4] = e.x, r[8] = R.x, r[1] = u.y, r[5] = e.y, r[9] = R.y, r[2] = u.z, r[6] = e.z, r[10] = R.z, this + } + }(), + extractScale: function () { + var f; + return function (I) { + f === Z && (f = new tl), I === Z && (I = new tl); + var l = f.setFromMatrixColumn(this, 0).length(), + Q = f.setFromMatrixColumn(this, 1).length(), + U = f.setFromMatrixColumn(this, 2).length(); + return I.set(l, Q, U), I + } + }(), + extractRotation: function () { + var p; + return function (o) { + p === Z && (p = new tl), o === Z && (o = new br); + var c = this.el, + f = o.el, + r = 1 / p.setFromMatrixColumn(o, 0).length(), + K = 1 / p.setFromMatrixColumn(o, 1).length(), + A = 1 / p.setFromMatrixColumn(o, 2).length(); + return c[0] = f[0] * r, c[1] = f[1] * r, c[2] = f[2] * r, c[4] = f[4] * K, c[5] = f[5] * K, c[6] = f[6] * K, c[8] = f[8] * A, c[9] = f[9] * A, c[10] = f[10] * A, this + } + }(), + multiplyScalar: function (u) { + var v = this.el; + return v[0] *= u, v[4] *= u, v[8] *= u, v[12] *= u, v[1] *= u, v[5] *= u, v[9] *= u, v[13] *= u, v[2] *= u, v[6] *= u, v[10] *= u, v[14] *= u, v[3] *= u, v[7] *= u, v[11] *= u, v[15] *= u, this + }, getPosition: function (j) { + return j === Z && (j = new tl), j.setFromMatrixColumn(this, 3) + }, setPosition: function (S) { + var h = this.el; + return h[12] = S.x, h[13] = S.y, h[14] = S.z, this + }, toArray: function (g, D) { + g === Z && (g = []), D === Z && (D = 0); + var Y = this.el; + return g[D] = Y[0], g[D + 1] = Y[1], g[D + 2] = Y[2], g[D + 3] = Y[3], g[D + 4] = Y[4], g[D + 5] = Y[5], g[D + 6] = Y[6], g[D + 7] = Y[7], g[D + 8] = Y[8], g[D + 9] = Y[9], g[D + 10] = Y[10], g[D + 11] = Y[11], g[D + 12] = Y[12], g[D + 13] = Y[13], g[D + 14] = Y[14], g[D + 15] = Y[15], g + }, determinant: function () { + var C = this.el, + g = C[0], + q = C[4], + H = C[8], + J = C[12], + s = C[1], + I = C[5], + _ = C[9], + j = C[13], + V = C[2], + N = C[6], + u = C[10], + b = C[14], + d = C[3], + n = C[7], + y = C[11], + S = C[15]; + return d * (+J * _ * N - H * j * N - J * I * u + q * j * u + H * I * b - q * _ * b) + n * (+g * _ * b - g * j * u + J * s * u - H * s * b + H * j * V - J * _ * V) + y * (+g * j * N - g * I * b - J * s * N + q * s * b + J * I * V - q * j * V) + S * (-H * I * V - g * _ * N + g * I * u + H * s * N - q * s * u + q * _ * V) + }, copy: function (e) { + var h = this.el, + n = e.el; + return h[0] = n[0], h[1] = n[1], h[2] = n[2], h[3] = n[3], h[4] = n[4], h[5] = n[5], h[6] = n[6], h[7] = n[7], h[8] = n[8], h[9] = n[9], h[10] = n[10], h[11] = n[11], h[12] = n[12], h[13] = n[13], h[14] = n[14], h[15] = n[15], this + }, compose: function (o, f, T) { + var P = this.el, + H = f._x, + m = f._y, + C = f._z, + Z = f._w, + w = H + H, + G = m + m, + R = C + C, + K = H * w, + Q = H * G, + u = H * R, + X = m * G, + F = m * R, + O = C * R, + $ = Z * w, + e = Z * G, + L = Z * R, + B = T.x, + j = T.y, + z = T.z; + return P[0] = (1 - (X + O)) * B, P[1] = (Q + L) * B, P[2] = (u - e) * B, P[3] = 0, P[4] = (Q - L) * j, P[5] = (1 - (K + O)) * j, P[6] = (F + $) * j, P[7] = 0, P[8] = (u + e) * z, P[9] = (F - $) * z, P[10] = (1 - (K + X)) * z, P[11] = 0, P[12] = o.x, P[13] = o.y, P[14] = o.z, P[15] = 1, this + }, decompose: function () { + var N = new tl, + Y = new br; + return function (k, I, H) { + var F = this.el, + i = N.set(F[0], F[1], F[2]).length(), + p = N.set(F[4], F[5], F[6]).length(), + q = N.set(F[8], F[9], F[10]).length(), + W = this.determinant(); + 0 > W && (i = -i), k.x = F[12], k.y = F[13], k.z = F[14], Y.copy(this); + var n = 1 / i, + o = 1 / p, + c = 1 / q; + return Y.el[0] *= n, Y.el[1] *= n, Y.el[2] *= n, Y.el[4] *= o, Y.el[5] *= o, Y.el[6] *= o, Y.el[8] *= c, Y.el[9] *= c, Y.el[10] *= c, I.setFromRotationMatrix(Y), H.x = i, H.y = p, H.z = q, this + } + }() + }); + var pq = O.Math.Triangle = function (i, N, v) { + this.a = i !== Z ? i : new tl, this.b = N !== Z ? N : new tl, this.c = v !== Z ? v : new tl + }; + o.assign(pq, { + barycoordFromPoint: function () { + var b = new tl, + g = new tl, + C = new tl; + return function (j, m, U, N, V) { + b.subVectors(N, m), g.subVectors(U, m), C.subVectors(j, m); + var Y = b.dot(b), + _ = b.dot(g), + X = b.dot(C), + I = g.dot(g), + q = g.dot(C), + W = Y * I - _ * _, + G = V || new tl; + if (0 === W) return G.set(-2, -1, -1); + var Z = 1 / W, + o = (I * X - _ * q) * Z, + c = (Y * q - _ * X) * Z; + return G.set(1 - o - c, c, o) + } + }() + }); + var gg = O.Math.Euler = function (j, s, H, $, I) { + this.set(j, s, H, $, I) + }; + gg.RotationOrders = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"], gg.DefaultOrder = "XYZ", gg.ReverseOrder = function (U) { + return U = U[2] + U[1] + U[0], U.toUpperCase() + }, o.defineProperties(gg.prototype, { + x: { + get: function () { + return this._x + }, set: function (s) { + this._x = s, this.onChangeCallback() + } + }, + y: { + get: function () { + return this._y + }, set: function (F) { + this._y = F, this.onChangeCallback() + } + }, + z: { + get: function () { + return this._z + }, set: function (q) { + this._z = q, this.onChangeCallback() + } + }, + order: { + get: function () { + return this._order + }, set: function (t) { + this._order = t, this.onChangeCallback() + } + } + }), o.assign(gg.prototype, { + set: function (C, d, e, f, y) { + return ip(C) && (y = e, f = d, e = C[2], d = C[1], C = C[0]), f ? y && (f = gg.ReverseOrder(f)) : f = "ZYX", this._x = C || 0, this._y = d || 0, this._z = e || 0, this._order = f || this._order, this.onChangeCallback(), this + }, clone: function () { + return new this.constructor(this._x, this._y, this._z, this._order) + }, copy: function (O) { + return this._x = O._x, this._y = O._y, this._z = O._z, this._order = O._order, this.onChangeCallback(), this + }, setFromRotationMatrix: function (o, H, X) { + var p = O.Math.clamp, + N = o.el || o, + U = N[0], + E = N[4], + x = N[8], + D = N[1], + F = N[5], + h = N[9], + I = N[2], + Q = N[6], + P = N[10]; + return H = H || this._order, "XYZ" === H ? (this._y = Math.asin(p(x, -1, 1)), Math.abs(x) < .99999 ? (this._x = Math.atan2(-h, P), this._z = Math.atan2(-E, U)) : (this._x = Math.atan2(Q, F), this._z = 0)) : "YXZ" === H ? (this._x = Math.asin(-p(h, -1, 1)), Math.abs(h) < .99999 ? (this._y = Math.atan2(x, P), this._z = Math.atan2(D, F)) : (this._y = Math.atan2(-I, U), this._z = 0)) : "ZXY" === H ? (this._x = Math.asin(p(Q, -1, 1)), Math.abs(Q) < .99999 ? (this._y = Math.atan2(-I, P), this._z = Math.atan2(-E, F)) : (this._y = 0, this._z = Math.atan2(D, U))) : "ZYX" === H ? (this._y = Math.asin(-p(I, -1, 1)), Math.abs(I) < .99999 ? (this._x = Math.atan2(Q, P), this._z = Math.atan2(D, U)) : (this._x = 0, this._z = Math.atan2(-E, F))) : "YZX" === H ? (this._z = Math.asin(p(D, -1, 1)), Math.abs(D) < .99999 ? (this._x = Math.atan2(-h, F), this._y = Math.atan2(-I, U)) : (this._x = 0, this._y = Math.atan2(x, P))) : "XZY" === H ? (this._z = Math.asin(-p(E, -1, 1)), Math.abs(E) < .99999 ? (this._x = Math.atan2(Q, F), this._y = Math.atan2(x, U)) : (this._x = Math.atan2(-h, P), this._y = 0)) : console.warn("unsupported order: " + H), this._order = H, X !== !1 && this.onChangeCallback(), this + }, setFromQuaternion: function () { + var S = new br; + return function (A, c, w) { + return S.makeRotationFromQuaternion(A), this.setFromRotationMatrix(S, c, w) + } + }(), + setFromVector3: function (J, I) { + return this.set(J.x, J.y, J.z, I || this._order) + }, reorder: function () { + var S = new fs; + return function (f) { + return S.setFromEuler(this), this.setFromQuaternion(S, f) + } + }(), + equals: function (O) { + return O._x === this._x && O._y === this._y && O._z === this._z && O._order === this._order + }, fromArray: function (S) { + return this._x = S[0], this._y = S[1], this._z = S[2], S[3] !== Z && (this._order = S[3]), this.onChangeCallback(), this + }, toArray: function (q, w) { + return q === Z && (q = []), w === Z && (w = 0), q[w] = this._x, q[w + 1] = this._y, q[w + 2] = this._z, q[w + 3] = this._order, q + }, toVector3: function (a) { + return a ? a.set(this._x, this._y, this._z) : new tl(this._x, this._y, this._z) + }, onChange: function (W) { + return this.onChangeCallback = W, this + }, onChangeCallback: function () { } + }); + var fb = { + ms_ac: function (L, V) { + for (var C = V.ms_ac, W = 0; W < C.length; W++) em(L, C[W]) + }, ms_listener: function (Y) { + Y.addListeners = function () { + var s = this, + Z = Ec; + u.mockTouch && (Z = Vr.concat(vs).concat(kr)), s.__events__ = Z; + for (var T = 0, D = Z.length; D > T; T++) { + var _ = Z[T]; + "wheel" === _ && !s.handle_wheel && s.handle_mousewheel && (s.handle_wheel = function ($) { + sg(s, $) + }), s["handle_" + _] && ic(_, s.getView(), s) + } + }, Y.removeListeners = function () { + var X = this, + z = X.__events__; + if (z) { + X.__events__ = Z; + for (var c = 0, g = z.length; g > c; c++) X["handle_" + z[c]] && ws(z[c], X.getView(), X) + } + } + }, ms_fire: function (R) { + R.mp = function (A, u, V) { + this.addPropertyChangeListener(A, u, V) + }, R.ump = function (Q, p) { + this.removePropertyChangeListener(Q, p) + }, R.fp = function (k, l, d, A, B) { + return this.firePropertyChange(k, l, d, A, B) + }, R.addPropertyChangeListener = function (y, H, s) { + var F = this; + F._62I || (F._62I = new Yj), F._62I.add(y, H, s) + }, R.removePropertyChangeListener = function (n, y) { + this._62I && this._62I.remove(n, y) + }, R.firePropertyChange = function (b, K, H, g, U) { + if (g) { + if (g(K, H)) return !1 + } else if (K === H) return !1; + var f = this, + P = U || {}; + return P.property = b, P.oldValue = K, P.newValue = H, P.source = f, P.data = f, f._62I && f._62I.fire(P), f.onPropertyChanged && f.onPropertyChanged(P), !0 + } + }, ms_attr: function (A) { + A.a = function (D, N) { + var A = this; + if (2 === arguments.length) A.setAttr(D, N); + else { + if (!xl(D)) return A.getAttr(D); + for (var b in D) A.setAttr(b, D[b]) + } + return A + }, A.getAttr = function (m, p) { + if (p === Z && (p = 1), this._attrObject && m in this._attrObject) return this._attrObject[m]; + if (this.getImage) { + var q = this.getImage(); + if (dk(q) && (q = Oe[q]), xl(q) && "dataBindings" in q) + for (var S = q.dataBindings, r = S.length - 1; r >= 0; r--) { + var b = S[r]; + if (b.attr === m) { + if ("defaultValue" in b) return b.defaultValue; + break + } + } + } + return p ? I[m] : Z + }, A.setAttr = function (q, T) { + var F = this; + F._attrObject || (F._attrObject = {}); + var C = F._attrObject[q]; + T === Z ? delete F._attrObject[q] : F._attrObject[q] = T, F.fp && F.fp("a:" + q, C, T) && F.onAttrChanged && F.onAttrChanged(q, C, T) + }, A.getSerializableAttrs = function () { + var B, p = {}; + for (B in this._attrObject) p[B] = 1; + return p + } + }, ms_bnb: function (v) { + v.getBodyColor = function (G) { + return G.s("body.color") + }, v.getBorderColor = function (S) { + return S.s("border.color") + } + }, _51o: function (h) { + h.mi = function (X, g, k) { + this.addInteractorListener(X, g, k) + }, h.umi = function (O, F) { + this.removeInteractorListener(O, F) + }, h.fi = function (I) { + this.fireInteractorEvent(I) + }, h.addInteractorListener = function (M, F, G) { + var r = this; + r._63I || (r._63I = new Yj), r._63I.add(M, F, G) + }, h.removeInteractorListener = function (B, D) { + this._63I && this._63I.remove(B, D) + }, h.fireInteractorEvent = function (W) { + this._63I && this._63I.fire(W) + }, h.setInteractors = function (A) { + var o = this, + C = o._interactors; + C && C.each(function (T) { + T.tearDown() + }), ip(A) && (A = new xr(A)), o._interactors = A, A && A.each(function (v) { + v.setUp() + }), o.fp("interactors", C, A), o.invalidateSelection() + }, h.getInteractors = function () { + return this._interactors + } + }, _49o: function (T) { + T._44O = F, T._45O = F, T.getTopPainters = function () { + return this._44O + }, T.getBottomPainters = function () { + return this._45O + }, T.addTopPainter = function (u) { + var c = this; + c._44O || (c._44O = new xr), c._44O.contains(u) || (c._44O.add(u), c.redraw && c.redraw()) + }, T.removeTopPainter = function (d) { + var k = this; + k._44O && (k._44O.remove(d), k.redraw && k.redraw()) + }, T.addBottomPainter = function (Q) { + var V = this; + V._45O || (V._45O = new xr), V._45O.contains(Q) || (V._45O.add(Q), V.redraw && V.redraw()) + }, T.removeBottomPainter = function (z) { + var N = this; + N._45O && (N._45O.remove(z), N.redraw && N.redraw()) + }, T._93db = function (Y, M) { + var N = this; + N._45O && N._45O.each(function (b) { + b.draw ? b.draw(Y, M) : b.call(N, Y, M) + }) + }, T._92db = function (_, N) { + var A = this; + A._44O && A._44O.each(function (v) { + v.draw ? v.draw(_, N) : v.call(A, _, N) + }) + } + }, ms_sm: function (l) { + l.sm = function () { + return this.getSelectionModel() + }, l.setSelectableFunc = function (W) { + this.sm().setFilterFunc(W) + }, l.getSelectableFunc = function () { + return this.sm().getFilterFunc() + }, l.getSelectionModel = function () { + var s = this; + return s._selectionModel ? s._selectionModel : s.dm().sm() + }, l.isSelectionModelShared = function () { + return !this._selectionModel + }, l.setSelectionModelShared = function (y) { + var X = this, + n = !X._selectionModel, + S = X.handleSelectionChange, + W = X.dm(); + n !== y && (X.invalidateSelection && X.invalidateSelection(), y ? (W.sm().ms(S, X), X._selectionModel.ums(S, X), X._selectionModel.dispose(), X._selectionModel = F) : (W.sm().ums(S, X), X._selectionModel = new Uc(W), X._selectionModel.ms(S, X)), X.onSelectionModelSharedChanged(), X.fp("selectionModelShared", n, y)) + }, l.onSelectionModelSharedChanged = function () { + var D = this; + D.redraw(), D.invalidateSelection && D.invalidateSelection() + }, l.removeSelection = function () { + var w = this.dm(); + w.beginTransaction(), this.sm().toSelection().each(w.remove, w), w.endTransaction() + }, l.selectAll = function () { + var y = this; + y.sm().ss(y.dm().toDatas(function (o) { + return y.isVisible(o) && y.isSelectable(o) + })) + }, l.isSelected = function (T) { + return this.sm().co(T) + }, l.isSelectedById = function (P) { + var D = this.dm().getDataById(P); + return D ? this.isSelected(D) : !1 + }, l.isSelectable = function (y) { + return this.sm().isSelectable(y) + } + }, ms_tx: function (o) { + o._64I = 0, o._65O = 0, o.isScrollable = function () { + return this.getWidth() < this._64I + }, o._40o = function () { + return this.isScrollable() + }, o.getLogicalPoint = function (T) { + return Nm(T, this._canvas || this._view, this.tx(), this.ty ? this.ty() : 0) + }, o.tx = function (A) { + return A === Z ? this.getTranslateX() : (this.setTranslateX(A), void 0) + }, o.getTranslateX = function () { + return this._65O + }, o.setTranslateX = function (D) { + var C = this, + X = C.getWidth() - C._64I; + X > D && (D = X), D > 0 && (D = 0), D = A(D); + var B = C._65O; + C._65O = D, C.fp(gq, B, D) + } + }, ms_ty: function (k) { + k._23Q = 0, k._66O = 0, k._41o = function () { + return this.getHeight() < this._23Q + }, k.getLogicalPoint = function (Z) { + return Nm(Z, this._canvas || this._view, this.tx ? this.tx() : 0, this.ty()) + }, k.ty = function (Q) { + return Q === Z ? this.getTranslateY() : (this.setTranslateY(Q), void 0) + }, k.getTranslateY = function () { + return this._66O + }, k.setTranslateY = function (x) { + var f = this, + H = f.getHeight() - f._23Q; + H > x && (x = H), x > 0 && (x = 0), x = A(x); + var y = f._66O; + f._66O = x, f.fp(wb, y, x) + } + }, ms_txy: function (o) { + o._65O = 0, o._66O = 0, o.tx = function (f) { + return f === Z ? this.getTranslateX() : (this.setTranslateX(f), void 0) + }, o.ty = function (k) { + return k === Z ? this.getTranslateY() : (this.setTranslateY(k), void 0) + }, o.onTranslateEnded = function () { }, o.setTranslate = function (K, l, o) { + var w = this; + if (o = Il(o)) { + w._65I && w._65I.stop(!0); + var j = w.tx(), + I = w.ty(); + o.action = function (E) { + w.setTranslate(j + (K - j) * E, I + (l - I) * E) + }, o._37o = function () { + delete w._66I, delete w._65I, w.onTranslateEnded() + }, w._66I = 1, w._65I = Sf(o) + } else w.tx(K), w.ty(l) + }, o.getTranslateX = function () { + return this._65O + }, o.setTranslateX = function (w) { + var g = this; + w = g.adjustTranslateX(w); + var I = g._65O; + g._65O = w, g.fp(gq, I, w) + }, o.getTranslateY = function () { + return this._66O + }, o.setTranslateY = function (T) { + var G = this; + T = G.adjustTranslateY(T); + var M = G._66O; + G._66O = T, G.fp(wb, M, T) + }, o.adjustTranslateX = function (c) { + return A(c) + }, o.adjustTranslateY = function (D) { + return A(D) + }, o.translate = function (I, d, h) { + this.setTranslate(this.tx() + I, this.ty() + d, h) + }, o.getLogicalPoint = function (D) { + var m = this; + return Nm(D, this._canvas || m._view, m.tx(), m.ty()) + } + }, ms_dm: function (w) { + w.dm = function (a) { + return a ? (this.setDataModel(a), void 0) : this.getDataModel() + }, w.getDataModel = function () { + return this._dataModel + } + }, ms_lp: function (D) { + D.lp = function (D) { + return this.getLogicalPoint(D) + } + }, ms_v: function (Q) { + Q._disabled = !1, Q.setDisabled = function (K, Q) { + var F = this, + B = F._disabled; + B !== K && (B && (yj(F._63O), delete F._63O), K && (sn(F._view, F._63O = lo(Q)), F.iv()), F._disabled = K, F.fp("disabled", B, K)) + }, Q.isDisabled = function () { + return this._disabled + }, Q.getDisabledDiv = function () { + return this._63O + }, Q.getView = function () { + return this._view + }, Q.addToDOM = function (X) { + var u = this, + m = u.getView(), + Y = m.style; + X = X || U.body, X.appendChild(m), Y.left = "0", Y.right = "0", Y.top = "0", Y.bottom = "0", K(x, "resize", function () { + u.iv() + }), u.iv() + }, Q.getWidth = function () { + return this._view.clientWidth + }, Q.getHeight = function () { + return this._view.clientHeight + }, Q.setWidth = function (R) { + var D = this; + D._view.style.width = R + oe, D.iv(), D.fp && D.fp(ul, F, R) + }, Q.setHeight = function (z) { + var Q = this; + Q._view.style.height = z + oe, Q.iv(), Q.fp && Q.fp(Hh, F, z) + }, Q.setFocus = function (V) { + var G = this, + s = G._currentEditor; + return V && s && (s.getView && (s = s.getView()), s.contains(V.target)) ? !1 : (hr(G._view), G.endEditing && G.endEditing(), G.fireViewEvent("focus"), !0) + }, Q.iv = function (x) { + this.invalidate(x) + }, Q.invalidate = function (z) { + var T = this; + T._68I || (T._68I = 1, $e(T.validate, T, F, z), T.onInvalidated && T.onInvalidated(), T.fireViewEvent("invalidate")) + }, Q.validate = function () { + var r = this, + _ = r._view; + if (r._68I && (delete r._68I, _.parentNode)) + if (0 === _.offsetWidth && 0 === _.offsetHeight && r._67I !== F) r._67I === Z && (r._67I = u.reinvalidateCount), r._67I > 0 ? r._67I-- : r._67I = F, r.iv(); + else { + r.fireViewEvent("beginValidate"), r.validateImpl(), r.onValidated && r.onValidated(), r.fireViewEvent("validate"); + var s = r._63O; + s && (_.lastChild !== s && (yj(s), sn(_, s)), qp(s, 0, 0, r.getWidth(), r.getHeight())), Dd(r), Fo(r), Yi(r) + } + }, Q.layout = function (H, T, h, k) { + 1 === arguments.length ? qp(this, H) : qp(this, H, T, h, k) + }, Q.addViewListener = function (l, Z, V) { + var y = this; + y._67O || (y._67O = new Yj), y._67O.add(l, Z, V) + }, Q.removeViewListener = function (p, M) { + this._67O.remove(p, M) + }, Q.fireViewEvent = function (a) { + var m = this; + m._67O && (dk(a) && (a = { + kind: a + }), m._67O.fire(a)), u.viewListener && u.viewListener(m, a) + } + }, ms_tip: function (c) { + c.setToolTipEnabled = function (M) { + var S = this; + M ? nf || S._13o || (S.enableToolTip(), S.fp("toolTipEnabled", !1, !0)) : S._13o && (S.disableToolTip(), S.fp("toolTipEnabled", !0, !1)) + }, c.isToolTipEnabled = function () { + return !!this._13o + }, c.enableToolTip = function () { + var C = this; + if (!nf && !C._13o) { + C._13o = function (i) { + var J = C.getToolTip(i); + J != F ? u.toolTipContinual && u.isToolTipShowing() ? me(i, J) : (Um(), sq = { + timeout: cd(Xk, gj), + e: i, + info: J + }) : Um() + }; + var h = C.getView(); + K(h, rp, C._13o), K(h, "mouseleave", u.hideToolTip) + } + }, c.disableToolTip = function () { + var w = this; + if (w._13o) { + var K = w.getView(); + b(K, rp, w._13o), b(K, "mouseleave", u.hideToolTip), delete w._13o + } + }, c.getToolTip = function (p) { + var J = this; + if (J.getDataAt) { + var H = J.getDataAt(p); + return H ? H.getToolTip() : F + } + return J.getValue ? J.getValue() : void 0 + } + }, _52o: function (X) { + X._zoom = 1, X._29I = nl, X.zoomIn = function (S, C) { + this.setZoom(this._zoom * lq, S, C) + }, X.zoomOut = function (Y, k) { + this.setZoom(this._zoom / lq, Y, k) + }, X.zoomReset = function (w, u) { + this.setZoom(1, w, u) + }, X.scrollZoomIn = function (v) { + this.setZoom(this._zoom * _f, F, v) + }, X.scrollZoomOut = function (J) { + this.setZoom(this._zoom / _f, F, J) + }, X.pinchZoomIn = function (j) { + this.setZoom(this._zoom * db, F, j) + }, X.pinchZoomOut = function (K) { + this.setZoom(this._zoom / db, F, K) + }, X.adjustZoom = function (m) { + return gh > m ? gh : m > us ? us : m + }, X.getZoom = function () { + return this._zoom + }, X.setZoom = function (c, v, K) { + var _ = this; + if (v = Il(v)) { + _._14o && _._14o.stop(!0); + var p = _._zoom; + v.action = function (j) { + _._96O(p + (c - p) * j, K) + }, v._37o = function () { + delete _._zooming, delete _._14o, _.onZoomEnded() + }, _._zooming = 1, _._14o = Sf(v) + } else _._96O(c, K) + }, X._96O = function (X, b) { + var m = this; + if (X = m.adjustZoom(X), X !== m._zoom) { + m.validate(); + var M = m._29I, + _ = m._zoom; + 0 !== M.width && 0 !== M.height && (b = b ? b : { + x: M.x + M.width / 2, + y: M.y + M.height / 2 + }, m.tx((b.x - M.x) * _ - b.x * X), m.ty((b.y - M.y) * _ - b.y * X)), m._zoom = X, m.fp("zoom", _, X) + } + } + }, ms_edge: function (B) { + B._2I = function (z) { + var q = this; + q._44I || (q._44I = new xr), q._42I || (q._42I = new xr), q._44I.add(z), q._42I.add(z), q._20I() + }, B._4I = function (M) { + var F = this; + F._44I || (F._44I = new xr), F._43I || (F._43I = new xr), F._44I.add(M), F._43I.add(M), F._20I() + }, B._16I = function (x) { + var d = this; + d._44I.remove(x), d._42I.remove(x), d._44I.isEmpty() && delete d._44I, d._42I.isEmpty() && delete d._42I, d._20I() + }, B._18I = function (u) { + var d = this; + d._44I.remove(u), d._43I.remove(u), d._44I.isEmpty() && delete d._44I, d._43I.isEmpty() && delete d._43I, d._20I() + }, B._20I = function () { + var y = this; + if (delete y._45I, !y._44I || y._44I.isEmpty()) return delete y._70O, void 0; + var k; + y._44I.each(function (l) { + l.isLooped() && (k || (k = {}), k[l._id] || (y._45I || (y._45I = new xr), y._45I.add(l), k[l._id] = l)) + }), k ? (y._70O = new xr, y._44I.each(function (A) { + k[A._id] ? "A" === k[A._id] || (k[A._id] = "A", y._70O.add(A)) : y._70O.add(A) + })) : y._70O = y._44I + }, B.hasAgentEdges = function () { + return !!this._49I && !this._49I.isEmpty() + }, B.getSourceAgentEdges = function () { + return this._46I + }, B.getTargetAgentEdges = function () { + return this._47I + }, B._1I = function (F) { + var e = this; + e._46I || (e._46I = new xr), e._48I || (e._48I = new xr), e._46I.add(F), e._48I.add(F), e._19I() + }, B._3I = function (T) { + var H = this; + H._47I || (H._47I = new xr), H._48I || (H._48I = new xr), H._47I.add(T), H._48I.add(T), H._19I() + }, B._15I = function (W) { + var Y = this; + Y._46I.remove(W), Y._48I.remove(W), Y._46I.isEmpty() && delete Y._46I, Y._48I.isEmpty() && delete Y._48I, Y._19I() + }, B._17I = function (B) { + var K = this; + K._47I.remove(B), K._48I.remove(B), K._47I.isEmpty() && delete K._47I, K._48I.isEmpty() && delete K._48I, K._19I() + }, B._19I = function () { + var Y = this; + delete Y._49I; + var b = Y._48I; + if (b && !b.isEmpty()) { + var _ = {}; + b.each(function (G) { + _[G._id] ? Y._49I || (Y._49I = new xr) : _[G._id] = G + }), Y._49I ? b.each(function (c) { + _[c._id] && (Y._49I.add(c), delete _[c._id]) + }) : Y._49I = b + } + }, B.getLoopedEdges = function () { + return this._45I + }, B.getEdges = function () { + return this._70O + }, B.getAgentEdges = function () { + return this._49I + }, B.getSourceEdges = function () { + return this._42I + }, B.getTargetEdges = function () { + return this._43I + }, B._8I = function () { + this._70O && this._70O.each(function (k) { + k._7I() + }) + } + }, ms_shadow: function (c) { + _r.PARAMS.forEach(function (u) { + var k = u.replace(/(^|\.)[a-z]/g, function (e) { + return e[e.length - 1].toUpperCase() + }), + R = k.charAt(0).toLowerCase() + k.substr(1); + c["getShadow" + k] = function () { + return this._getShadowParam(R) + }, c["setShadow" + k] = function (f) { + this._setShadowParam(R, f) + } + }), c.enableShadow = function (D) { + this.shadowMap.setShadow(!0, D) + }, c.disableShadow = function () { + this.shadowMap.setShadow(!1) + }, c._getShadowParam = function (Z) { + return this.shadowMap.getShadow()[Z] + }, c._setShadowParam = function (s, b) { + var f = this._getShadowParam(s), + u = {}; + u[s] = b; + var h = this.shadowMap; + h.setShadow(h.enable, u), this.firePropertyChange("shadow" + s.charAt(0).toUpperCase() + s.substr(1), f, b) + } + } + }; + Uh(u, { + getVersion: function () { + return "7.2.1" + } + }, !0), Uh(u, { + numberDigits: 5, + crossOrigin: "", + baseZIndex: Z, + isTouchable: nf, + mockTouch: !0, + devicePixelRatio: x.devicePixelRatio ? x.devicePixelRatio : 1, + reinvalidateCount: 3, + hitMaxArea: 3e3, + imageCacheThreshold: 20, + autoMakeVisible: !0, + autoHideScrollBar: !0, + disabledOpacity: .4, + disabledBackground: S.disabledBackground, + forceHierarchicalSerialization: !0, + hoverDelay: 600, + clickDelay: 200, + toolTipDelay: 800, + toolTipContinual: !1, + getDragger: function () { + return si + }, lineCap: "butt", + lineJoin: "round", + imageGradient: "linear.northeast", + dashPattern: [16, 16], + blockMinSize: 1, + encodeStringKey: null, + doubleClickSpeed: 500, + doubleClickRange: 1, + doubleTouchRange: 20, + touchMoveThreshold: 10, + animDuration: 200, + animEasing: function (W) { + return W * W + }, labelColor: Un, + labelSelectColor: Dg, + labelFont: "12px arial, sans-serif", + widgetIndent: nf ? 30 : 20, + widgetRowHeight: nf ? 30 : 20, + widgetHeaderHeight: nf ? 32 : 22, + widgetTitleHeight: nf ? 34 : 24, + scrollBarColor: od, + scrollBarSize: 7, + scrollBarTimeout: 1e3, + scrollBarMinLength: 20, + scrollBarInteractiveSize: nf ? 32 : 16, + zoomIncrement: 1.3, + scrollZoomIncrement: 1.05, + pinchZoomIncrement: 1.08, + pinchZoomThreshold: 1, + zoomMax: 20, + zoomMin: .01, + segmentResolution: 12, + shapeResolution: 24, + shapeSide: 24, + intersectionLineRect: Rl, + intersectionLineLine: ti, + isEnter: hd, + isEsc: bj, + isDelete: qq, + isSpace: Cf, + isLeft: Wk, + isUp: Nk, + isRight: _i, + isDown: ri, + isTouchEvent: li, + getTarget: gr, + isString: dk, + isNumber: Bp, + isBoolean: El, + isArray: ip, + isSelectAll: Dq, + isFunction: Mf, + isObject: xl, + getPropertyValue: jq, + setPropertyValue: Di, + addMethod: Uh, + isMobile: function () { + var g; + return function () { + return g !== Z ? g : (g = !1, function (k) { + (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(k) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(k.substr(0, 4))) && (g = !0) + }(navigator.userAgent || navigator.vendor || x.opera), g) + } + }(), + createGradient: function (k, b, L, Z, w, d, H, p) { + var N = Eg[b]; + return N(k, L, Z, w, d, H, p) + }, appendToScreen: function (v) { + v = v.getView ? v.getView() : v, (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement || U.body).appendChild(v) + }, encodeString: function (m) { + return O.Math.encodeBase64(m, u.encodeStringKey) + }, decodeString: function (M) { + return O.Math.decodeBase64(M, u.encodeStringKey) + }, findView: function (L) { + var s = function (F, Y) { + var z = Y._ht; + z && F.push(z); + var v = Y.children, + U = v.length; + if (U) + for (var D = 0; U > D; D++) s(F, v[D]) + }, + r = []; + s(r, U.body); + var G = function (h, H) { + for (var m = "2d" === H ? hg.GraphView : Eh.Graph3dView, l = 0, W = h.length; W > l; l++) + if (h[l] instanceof m) return r[l]; + return null + }; + return "all" === L ? r : "2d" === L ? G(r, "2d") : "3d" === L ? G(r, "3d") : G(r, "3d") || G(r, "2d") + }, toggleFullscreen: function (D) { + var Y = D.getView(); + if (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement) U.exitFullscreen ? U.exitFullscreen() : U.msExitFullscreen ? U.msExitFullscreen() : U.mozCancelFullScreen ? U.mozCancelFullScreen() : U.webkitExitFullscreen && U.webkitExitFullscreen(); + else { + var W = !0; + if (D.isSelfViewEvent) { + var i = D.getX(), + s = D.getY(), + E = D.getWidth(), + N = D.getHeight(), + g = Y.style.background, + A = Y.style.backgroundColor; + g || A || (Y.style.backgroundColor = "white"), Y.requestFullscreen ? Y.requestFullscreen() : Y.msRequestFullscreen ? Y.msRequestFullscreen() : Y.mozRequestFullScreen ? Y.mozRequestFullScreen() : Y.webkitRequestFullscreen && Y.webkitRequestFullscreen(); + var p = setInterval(function () { + if (Y !== (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement)) clearInterval(p), D.setX(i), D.setY(s), D.setWidth(E), D.setHeight(N), D._fullscreen = !1, Y.style.oldBackgroundColor = A, D.iv(); + else { + var I = O.Default.getWindowInfo(); + (W || I.width !== D.getWidth() || I.height !== D.getHeight()) && (D.setX(I.left), D.setY(I.top), D.setWidth(I.width), D.setHeight(I.height), D._fullscreen = !0, D.iv(), W = !1) + } + }, 500) + } else { + var j = Y.style.left, + w = Y.style.top, + E = Y.style.width, + N = Y.style.height, + g = Y.style.background, + A = Y.style.backgroundColor; + g || A || (Y.style.backgroundColor = "white"), Y.requestFullscreen ? Y.requestFullscreen() : Y.msRequestFullscreen ? Y.msRequestFullscreen() : Y.mozRequestFullScreen ? Y.mozRequestFullScreen() : Y.webkitRequestFullscreen && Y.webkitRequestFullscreen(); + var p = setInterval(function () { + if (Y !== (U.fullscreenElement || U.mozFullScreenElement || U.webkitFullscreenElement || U.msFullscreenElement)) clearInterval(p), Y.style.left = j, Y.style.top = w, Y.style.width = E, Y.style.height = N, Y.style.oldBackgroundColor = A, D.iv(); + else { + var I = O.Default.getWindowInfo(); + (W || I.width !== D.getWidth() || I.height !== D.getHeight()) && (qp(D), W = !1) + } + }, 500) + } + } + }, appendTimeStamp: function (H) { + return H + }, setCompType: function (O, m) { + Mf(m) || xl(m) ? Xh[O] = m : qs(O) + }, getCompType: function (o) { + var r = Xh[o]; + return r === Z && Bm.test(o) && qs(o), r + }, getCompTypeMap: function () { + return Xh + }, drawCompType: function (j, O, w, $, l, H) { + j(O, w, $, l, H) + }, numberListener: function () { + var r = { + 46: 1, + 8: 1, + 9: 1, + 27: 1, + 13: 1, + 109: 1, + 110: 1, + 189: 1, + 190: 1 + }; + return function (K) { + var T = K.keyCode; + r[T] || 65 === T && u.isCtrlDown(K) || 86 === T && u.isCtrlDown(K) || 67 === T && u.isCtrlDown(K) || 88 === T && u.isCtrlDown(K) || T >= 35 && 40 >= T || (K.shiftKey || 48 > T || T > 57) && (96 > T || T > 105) && K.preventDefault() + } + }(), + ignoreKeyCodes: [122, 123], + preventDefault: function (J) { + var H = J.target.tagName; + ("DIV" === H || "CANVAS" === H) && !(u.ignoreKeyCodes.indexOf(J.keyCode) >= 0) && ("keydown" !== J.type || Wk(J) || _i(J) || Nk(J) || ri(J) || qq(J) || 65 === J.keyCode && (J.metaKey || J.ctrlKey)) && (J.preventDefault(), J.preventManipulation && J.preventManipulation()) + }, getWindowInfo: function () { + var H = U.documentElement, + z = H && (H.scrollLeft || H.scrollTop) ? H : U.body; + return { + target: z, + left: z.scrollLeft, + top: z.scrollTop, + width: x.innerWidth || z.clientWidth, + height: x.innerHeight || z.clientHeight + } + }, isDragging: function () { + return !!si + }, isLeftButton: function (M) { + return li(M) ? !0 : 0 === M.button + }, isMiddleButton: function (I) { + return li(I) ? !1 : I && (1 === I.button || 4 & (I.buttons || 0)) + }, isRightButton: function (G) { + return li(G) ? !1 : G && (2 === G.button || 2 & (G.buttons || 0)) + }, isInput: function (D) { + if (!D) return !1; + var n = D.tagName; + return "INPUT" === n || "TEXTAREA" === n || "SELECT" === n + }, getTouchCount: function (e) { + return li(e) ? e.touches.length : 1 + }, isDoubleClick: function () { + function j(f) { + f.details = 0, f.timeout = null, f.lastPoint = null + } + var T = {}; + return Gk = new v, vi = Gk.getTime(), + function (C) { + if (Qj(C) > 1) return !1; + var I = C.button == F ? "" : C.button, + m = C.type + I, + h = m + "_isDoubleClick", + y = T[m]; + if (y || (y = T[m] = { + details: 0, + timeout: null, + lastPoint: null + }), C[h] === Z) { + C[h] = !0; + var l = lb(C); + y.timeout && (nr(y.timeout), y.timeout = null); + var s = li(C) ? u.doubleTouchRange : u.doubleClickRange; + y.lastPoint && En(y.lastPoint, l) > s && j(y), y.lastPoint = l, y.details++, y.timeout = cd(function () { + j(this) + }.bind(y), u.doubleClickSpeed) + } + return 2 === y.details + } + }(), + isShiftDown: function (z) { + return z ? z.shiftKey : pl["16"] + }, isCtrlDown: function (Q) { + return Q ? eg ? Q.metaKey : Q.ctrlKey : eg ? pl["91"] : pl["17"] + }, getClientPoint: function (r) { + return li(r) && (r = Xj(r)), { + x: r.clientX, + y: r.clientY + } + }, isMouseEvent: function (P) { + return P instanceof MouseEvent || 0 === P.type.indexOf("mouse") + }, getTargetElement: function (z) { + if (u.isMouseEvent(z) || !U.elementFromPoint) return z.target; + var V = Fd(z); + return U.elementFromPoint(V.x, V.y) + }, getPagePoint: function (Q) { + return li(Q) && (Q = Xj(Q)), { + x: Q.pageX, + y: Q.pageY + } + }, createObject: function (E, Y) { + var l = new E; + for (var G in Y) { + var r = Y[G]; + if (Mf(r)) l[G] = r; + else if (0 === G.indexOf("s:")) l.s(G.substr(2), Y[G]); + else if (0 === G.indexOf("a:")) l.a(G.substr(2), Y[G]); + else { + var R = tg(G), + r = Y[G]; + l[R] ? (l[R](r), "setToolTip" === R && l.enableToolTip && l.enableToolTip()) : l[G] = r + } + } + return l + }, setImage: function (v, b, k, U) { + var W = arguments.length; + 4 === W ? sd(v, U, b, k) : 2 === W ? dk(b) ? sd(v, b) : vl(v, b) : 1 === W && sd(v, v) + }, getImage: function (s, I, K) { + var U; + if (s == F) return F; + if (xl(s) ? U = s : (U = Oe[s], s && U === Z && (rm && rm[s] || sd(s, s))), I && U && U.tagName) { + var w; + w = "override" === K ? "colors_override" : "override_rgb" === K ? "colors_override_rgb" : "override_a" === K ? "colors_override_a" : "colors", U[w] || (U[w] = { + __count__: 0 + }); + var G = U[w][I]; + return G || (U[w].__count__ > u.imageCacheThreshold && (U[w] = { + __count__: 0 + }), G = oi(U, ns(I), U.width, U.height, K), U[w][I] = G, U[w].__count__++), G + } + return U + }, isImageComplete: function (k, H, K) { + var r = ii(k); + if (!r) return !1; + if (r.tagName) return r.complete; + for (var x, k, v, D = r.comps, U = !0, p = 0, l = D.length; l > p; p++) + if (x = D[p], v = x.type, "image" === x.type) { + k = x.name, k && k.func && (k = Dj(k, H)); + var R = Dr(k, H, K); + if (!R) { + U = !1; + break + } + } else if (Bm.test(v) && u.getCompType(v) === Z) { + U = !1, qs(v); + break + } + return U + }, getId: function () { + var d = 1; + return function () { + return ++d + } + }(), + callLater: function (Z, p, W, T) { + var f = function () { + Z.apply(p, W) + }; + return T ? cd(f, T) : x.requestAnimationFrame(f) + }, cancelLater: function (K, f) { + f ? nr(K) : x.cancelAnimationFrame(K) + }, clone: function (i) { + if (null == i || "object" != typeof i) return i; + if (i instanceof Date) { + var x = new Date; + return x.setTime(i.getTime()), x + } + if (i instanceof Array) { + for (var x = [], $ = 0, N = i.length; N > $; $++) x[$] = Pm(i[$]); + return x + } + if (i instanceof xr) { + for (var x = new xr, $ = 0, N = i.length; N > $; $++) x.set($, Pm(i.get($))); + return x + } + if (i instanceof Qp) return i; + if (i instanceof o) { + var x = {}; + for (var e in i) i.hasOwnProperty(e) && (x[e] = Pm(i[e])); + return x + } + return i + }, callWhenLoaded: function (t, b) { + b = b || 100; + var k = Jl(t, b); + nn || (nn = {}), nn[k] = { + tick: k, + cb: t, + delay: b + } + }, beforeLoadURL: function (v, I) { + if (nn) { + var V = {}; + for (var I in nn) { + var S = nn[I]; + nr(S.tick); + var z = Jl(S.cb, S.delay); + V[z] = { + tick: z, + delay: S.delay, + cb: S.cb + } + } + nn = V + } + return u.convertURL ? u.convertURL(v, I) : v + }, convertURL: function (Z) { + return Z + }, handleRefGraphLoaded: function () { }, handleCompTypeLoaded: function () { }, handleImageLoaded: function () { }, handleUnfoundImage: function () { + return u.getImage("default_blank") + }, resizeImagePOT: function (F, L) { + if (!F || !F.tagName) return F; + var c = F.width, + $ = F.height; + if (!c || !$) return F; + if (Rc.isPOT(c) && Rc.isPOT($) && (!L || c === $)) return F; + var m, X; + L ? X = m = Rc.nearestPOT(Math.min(c, $)) : (m = Rc.nearestPOT(c), X = Rc.nearestPOT($)); + var l = uo(), + E = l.getContext("2d"); + return Bn(l, m, X, 1), E.drawImage(F, 0, 0, c, $, 0, 0, m, X), l + }, sortFunc: function (G, P) { + if (G === P) return 0; + if (G == F && P != F) return 1; + if (G != F && P == F) return -1; + if (G == F && P == F) return 0; + var j, z = typeof G, + A = typeof P; + return z === Gl && A === Gl ? j = G.localeCompare(P) : z === Mo && A === Mo && (j = G - P), j === Z && (j = ("" + G).localeCompare("" + P)), j > 0 ? 1 : 0 > j ? -1 : 0 + }, getClassMap: function () { + return Zl + }, getClass: function (D) { + if (dk(D)) { + var X, f = Zl[D]; + if (!f) { + X = D.split("."), f = x; + for (var y = 0; y < X.length; y++) f = f[X[y]]; + Zl[D] = f + } + return f + } + return D + }, def: function (C, u, w) { + var p, Y, d, T = function () { }; + if (T.prototype = u.prototype, p = new T, dk(C)) { + if (Zl[C]) throw "'" + C + "' already defined"; + d = gp(C), p.getClassName = function () { + return C + } + } else d = C; if (p.constructor = d, p.getClass = function () { + return d + }, p.getSuperClass = function () { + return u + }, w) + for (Y in w) fb[Y] && fb.hasOwnProperty(Y) ? fb[Y](p, w) : Ug(p, w, Y); + d.prototype = p, d.superClass = u.prototype + }, startAnim: function () { + var E = function (W) { + W.duration && (W.startTime = mm()), W.timeId = $e(W.tick, F, F, W.interval) + }; + return function (R) { + return R = Pm(R), R.easing = R.easing || u.animEasing, R.duration || R.frames || (R.duration = u.animDuration), R.t = 0, R.duration ? R.interval = 0 : (R.frame = 0, R.interval = R.interval || 10), R.tick = function () { + if (R.duration) { + var z = (mm() - R.startTime) / R.duration; + if (z > 1 && (z = 1), R.t = z, R.action(R.easing(z), z), !R.isRunning()) return; + 1 === z ? R.stop() : R._isPaused || (R.timeId = $e(R.tick)) + } else { + if (R.frame++, z = R.t = R.frame / R.frames, R.action(R.easing(z), z), !R.isRunning()) return; + R.frame < R.frames ? R._isPaused || (R.timeId = $e(R.tick, F, F, R.interval)) : R.stop() + } + }, R.resume = function () { + R._isPaused && (delete R._isPaused, R.duration ? R.t < 1 && (R.startTime = mm() - R.duration * R.t, R.timeId = $e(R.tick)) : R.frame < R.frames && (R.timeId = $e(R.tick, F, F, R.interval))) + }, R.pause = function () { + td(R.timeId, !R.duration), R._isPaused = !0 + }, R.isPaused = function () { + return this._isPaused + }, R.stop = function (Y) { + R.isRunning() && (td(R.timeId, !R.duration), delete R.timeId, R.duration ? R.t < 1 && Y && (R.t = 1, R.action(R.easing(1), 1)) : R.frame < R.frames && Y && (R.frame = R.frames, R.action(R.easing(1), 1)), R._37o && R._37o(), R.finishFunc && R.finishFunc()) + }, R.isRunning = function () { + return R.timeId != F + }, R.delay ? $e(E, F, [R], R.delay) : E(R), R + } + }(), + getTextSize: function () { + var p = {}, + x = U ? uo().getContext("2d") : F; + return function (C, Q) { + x.font = C ? C : Fh; + var c = p[x.font]; + return c || (c = 2 * x.measureText("e").width + 4, p[x.font] = c), { + width: x.measureText(Q).width + 4, + height: c + } + } + }(), + drawText: function (v, Q, q, t, a, n, D, K, m, A) { + if (Q != F) { + var H = ln(q, Q), + V = {}; + V.y = A && A !== Sg ? A === $c ? n + H.height / 2 : n + K - H.height / 2 : n + K / 2, V.x = m && m !== nq ? m === fm ? a + D - H.width / 2 : a + D / 2 : a + H.width / 2, Lp(v, Q, V, q, t) + } + }, getDistance: function (x, U) { + var $ = x.length; + return U ? 3 === $ ? w(ds(x[0] - U[0]) + ds(x[1] - U[1]) + ds(x[2] - U[2])) : 2 === $ ? w(ds(x[0] - U[0]) + ds(x[1] - U[1])) : x.z === Z ? w(ds(U.x - x.x) + ds(U.y - x.y)) : w(ds(U.x - x.x) + ds(U.y - x.y) + ds(U.z - x.z)) : 3 === $ ? w(ds(x[0]) + ds(x[1]) + ds(x[2])) : 2 === $ ? w(ds(x[0]) + ds(x[1])) : void 0 + }, brighter: function (V, H) { + return 0 > H && (H = -H), mp(V, H ? H : 40) + }, darker: function (J, S) { + return S > 0 && (S = -S), mp(J, S ? S : -40) + }, unionPoint: function (C, U) { + if (!C) return F; + if (2 === arguments.length) return C && U ? { + x: V(C.x, U.x), + y: V(C.y, U.y), + width: X(C.x - U.x), + height: X(C.y - U.y) + } : F; + var u = C; + if (u._as && (u = u._as), u.length === Z) return F; + var G = u.length; + if (0 >= G) return F; + for (var O = 1, e = u[0], v = { + x: e.x, + y: e.y, + width: 0, + height: 0 + }; G > O; O++) { + e = u[O]; + var h = V(v.x, e.x), + y = q(v.x + v.width, e.x), + p = V(v.y, e.y), + M = q(v.y + v.height, e.y); + v.x = h, v.y = p, v.width = y - h, v.height = M - p + } + return v + }, unionRect: function (E, u) { + if (E && !u) return Pm(E); + if (!E && u) return Pm(u); + if (E && u) { + var l = { + x: V(E.x, u.x), + y: V(E.y, u.y) + }; + return l.width = q(E.x + E.width, u.x + u.width) - l.x, l.height = q(E.y + E.height, u.y + u.height) - l.y, l + } + return F + }, containsPoint: function (p, I, Y, O) { + if (O != F && 1 !== O) { + var u = p.x + p.width / 2, + T = p.y + p.height / 2; + p = { + x: u - p.width / 2 * O, + y: T - p.height / 2 * O, + width: p.width * O, + height: p.height * O + } + } + if (Y) { + var B = p.width / 2, + f = p.height / 2, + r = n(-Y), + q = k(-Y), + C = I.x - p.x - B, + G = I.y - p.y - f; + return I = { + x: q * C - r * G, + y: r * C + q * G + }, cf({ + x: -B, + y: -f, + width: p.width, + height: p.height + }, I) + } + return !(!p || I.x < p.x || I.y < p.y || I.x > p.x + p.width || I.y > p.y + p.height) + }, containsRect: function (G, W) { + if (!G || !W) return !1; + var P = W.x, + R = W.y, + k = W.width, + Z = W.height, + C = G.width, + F = G.height; + if (0 > (C | F | k | Z)) return !1; + var t = G.x, + Y = G.y; + if (t > P || Y > R) return !1; + if (C += t, k += P, P >= k) { + if (C >= t || k > C) return !1 + } else if (C >= t && k > C) return !1; + if (F += Y, Z += R, R >= Z) { + if (F >= Y || Z > F) return !1 + } else if (F >= Y && Z > F) return !1; + return !0 + }, intersectsRect: function (b, k) { + if (!b || !k) return !1; + var y = k.width, + K = k.height, + x = b.width, + M = b.height; + if (0 >= x || 0 >= M || 0 >= y || 0 >= K) return !1; + var O = k.x, + q = k.y, + f = b.x, + W = b.y; + return x += f, M += W, y += O, K += q, x > O && M > q && y > f && K > W + }, intersection: function (G, K) { + if (!G || !K) return F; + var S = K.x, + t = K.y, + b = G.x, + M = G.y, + Y = S, + W = t, + V = b, + L = M; + return Y += K.width, W += K.height, V += G.width, L += G.height, b > S && (S = b), M > t && (t = M), Y > V && (Y = V), W > L && (W = L), Y -= S, W -= t, 0 >= Y || 0 >= W ? F : { + x: S, + y: t, + width: Y, + height: W + } + }, grow: function (_, P, E) { + E === Z && (E = P), _.x -= P, _.y -= E, _.width = _.width + 2 * P, _.height = _.height + 2 * E + }, getScreenPoint: function (v, m, Y, J, q, E, T) { + var y = Y.getBoundingClientRect(), + Q = v * (E || 1) - Y.scrollLeft + (J || 0), + V = m * (T || 1) - Y.scrollTop + (q || 0), + b = Vg(Y, !1); + if (b) { + var P = new tl(Q, V, 0); + return P.applyMatrix4(b), console.log(P), { + x: P.x, + y: P.y + } + } + return { + x: Q + y.left, + y: V + y.top + } + }, getLogicalPoint: function (L, v, q, G, r, A) { + var d, n, o = v.getBoundingClientRect(); + L.target ? (ik(L) ? eg ? pl["91"] = !0 : pl["17"] = !0 : eg ? pl["91"] = !1 : pl["17"] = !1, pl["16"] = Pf(L) ? !0 : !1, L = li(L) ? Xj(L) : L, d = L.clientX, n = L.clientY) : (d = L.x, n = L.y); + var H = Vg(v, !0); + if (H) { + var m = new tl(d, n, 0); + m.applyMatrix4(H); + do { + if (Math.abs(m.z) <= 1e-6) break; + var F = new tl(d, n, 1); + if (F.applyMatrix4(matrix), Math.abs(F.z) <= 1e-6) { + m = F; + break + } + if (F.sub(m), Math.abs(F.z) <= 1e-6) break; + m.addScaledVector(F, -m.z / F.z) + } while (!1); + return { + x: (m.x + v.scrollLeft - (q || 0)) / (r || 1), + y: (m.y + v.scrollTop - (G || 0)) / (A || 1) + } + } + return { + x: (d - o.left + v.scrollLeft - (q || 0)) / (r || 1), + y: (n - o.top + v.scrollTop - (G || 0)) / (A || 1) + } + }, removeHTML: function () { + var W; + return function (J) { + return J && J.getView && (J = J.getView()), J && J.parentNode ? W === J ? !0 : (W = J, J.parentNode.removeChild(J), W = F, !0) : !1 + } + }(), + getToolTipDiv: function () { + if (!Xm) { + Xm = dd(), xn = dd(); + var L = Xm.style; + u.baseZIndex != F && (L.zIndex = Zb(u.baseZIndex) + 3 + ""), L.whiteSpace = "nowrap", L.color = u.toolTipLabelColor, L.background = u.toolTipBackground, L.font = u.toolTipLabelFont, L.padding = "5px", L.boxShadow = "0px 0px 3px " + u.toolTipShadowColor + } + return Xm + }, isToolTipShowing: function () { + return Xm && Xm.parentNode ? !0 : xn && xn.parentNode ? !0 : !1 + }, hideToolTip: function () { + yj(Xm), yj(xn), Yp() + }, showToolTip: function (N, B) { + if (!N || B == F) return Um(), void 0; + u.getToolTipDiv(); + var e, j; + if (B.html ? (B = B.html, e = xn, yj(Xm)) : (e = Xm, yj(xn)), j = e.style, e.innerHTML = B, e.parentNode || O.Default.appendToScreen(e), N.target) { + N = Fd(N); + var f = hq(), + Q = N.x, + a = N.y, + K = nf ? 60 : 12; + if (nf) { + var c = e.getBoundingClientRect(); + j.left = Q - c.width / 2 + oe, j.top = a - c.height - K < f.top ? a + K + oe : a - c.height - K + oe + } else { + j.left = Q + K + oe, j.top = a + K + oe; + var c = e.getBoundingClientRect(); + c.left + c.width > f.width && (j.left = Q - K - c.width + oe), c.top + c.height > f.height && (j.top = a - K - c.height + oe), c.left < 0 && (j.left = Q + K + oe), c.top < 0 && (j.top = a + K + oe) + } + } else j.left = N.x + oe, j.top = N.y + oe; + Yp() + }, startDragging: function (t, A, d) { + d == Z && (d = !0), t !== si && (si ? d && (li(A) ? si.handleWindowTouchEnd(A) : si.handleWindowMouseUp(A)) : li(A) ? (K(x, wj, Ed), K(x, Sj, Zr)) : (K(x, rp, Kn), K(x, cj, tc)), si = t) + }, getImageMap: function () { + return Oe + }, toBoundaries: function (y, n, A, w) { + var T = []; + return Yo(y, n, A, w).forEach(function (b) { + var V = []; + b.forEach(function (I) { + V.push(I.x, I.y) + }), T.push(V) + }), T + }, getCurrentKeyCodeMap: function () { + return pl + }, drawCenterImage: function (G, t, k, z, n, H, O, Q) { + !n && H && H.isSelfViewEvent && (n = H); + var Y = xc(t, n, H), + l = oo(t, n, H); + Yd(G, t, A(k - Y / 2), A(z - l / 2), Y, l, n, H, O, Q) + }, drawStretchImage: function (T, N, I, o, c, M, b, k, X, f, J, d) { + !k && X && X.isSelfViewEvent && (k = X); + var i, g = xc(N, k, X, M), + G = oo(N, k, X, b); + "uniform" === I ? (i = V(M / g, b / G), g *= i, G *= i, o += A((M - g) / 2), c += A((b - G) / 2), M = g, b = G) : "centerUniform" === I && ((g > M || G > b) && (i = V(M / g, b / G), g *= i, G *= i), o += A((M - g) / 2), c += A((b - G) / 2), M = g, b = G); + var u = T.interactiveInfo; + if (u) { + var W; + if (W = "center" === I ? { + x: o + M / 2 - g / 2, + y: c + b / 2 - G / 2, + width: g, + height: G + } : { + x: o, + y: c, + width: M, + height: b + }, u.rect) { + var r = u.compInfos, + S = r.length; + S && (r[S - 1].rect.image = N) + } else u.rect = W + } + if ("center" === I) { + var F = J !== !1 && (g > M || G > b); + F && (T.save(), T.beginPath(), T.rect(o, c, M, b), T.clip()), Yd(T, N, o + M / 2 - g / 2, c + b / 2 - G / 2, g, G, k, X, f, d), F && T.restore() + } else Yd(T, N, o, c, M, b, k, X, f, d) + }, toCanvas: function (A, F, R, z, $, E, x, t, u) { + A = ii(A, x), F = F || xc(A, $), R = R || oo(A, $); + var X = uo(), + D = Wd(X); + return t ? (Bn(X, F, R, t), D.scale(t, t)) : Bn(X, F, R, 1), qk(D, A, z, 0, 0, F, R, $, E, x, u), A && A.clampToEdge && (X.clampToEdge = A.clampToEdge), D.restore(), X + }, toGrayColor: function (M) { + if (!M) return M; + var m = zd(M), + v = A(.299 * m[0] + .587 * m[1] + .114 * m[2]); + return "rgba(" + v + "," + v + "," + v + "," + m[3] / 255 + ")" + }, createGradientImage: function (Y, x, G, H) { + for (var i = ["L", 0, 0, Y, 0, 1, 0, 0, 1, 0, 0], r = 0, e = Math.min(x.length, G.length); e > r; r++) i.push(G[r], x[r]); + var X = O.Default.toCanvas({ + width: Y, + height: Y, + clampToEdge: !0, + comps: [{ + type: "shape", + rotation: H || 0, + points: [0, 0, Y, 0, Y, Y, 0, Y], + background: "#ffffff", + gradientPack: i + }] + }); + return X + }, createElement: function (h, _, X, Y) { + var n = U.createElement(h); + return Yq(n, _ || S.widgetBorder, 2), n.style.font = X ? X : Fh, Y != F && (n.value = Y), u.onElementCreated && u.onElementCreated(n), n + }, containedInView: function (f, R) { + var D = Bq(R).getBoundingClientRect(); + return cf({ + x: D.left, + y: D.top, + width: D.width, + height: D.height + }, lb(f)) + }, isIsolating: function () { + return aj > 0 + }, setIsolating: function (i) { + i ? aj++ : aj-- + }, getMSMap: function () { + return fb + }, stringify: function (E, m, w) { + var r = Date.prototype.toJSON; + Date.prototype.toJSON = function () { + return "__ht__date" + this.getTime() + }, m = w ? 0 : m == F ? 2 : m; + var A = JSON.stringify(E, function (K, $) { + return "function" == typeof $ ? "__ht__" + ($.__ht__ || $.toString()) : Bp($) ? Oo($) : $ instanceof O.List ? "__ht__list" + ($.__ht__list || u.stringify($._as)) : $ + }, m); + return Date.prototype.toJSON = r, w && (A = Xl + bn(A)), A + }, parse: function (M) { + return dk(M) ? M.substr(0, 12) != Xl || (M = _o(M.substr(12)), dk(M)) ? JSON.parse(M, function (l, t) { + if (dk(t)) + if ("__ht__function" == t.substr(0, 14)) { + var P = t.indexOf("{") + 1, + C = t.lastIndexOf("}"), + w = t.indexOf("(") + 1, + j = t.indexOf(")"); + if (P && C && w && j) try { + var K = new Function(t.substring(w, j), t.substring(P, C)); + return K.__ht__ = t.substr(6), K + } catch (v) { + throw console.info("=== SyntaxError ===\n", t), v + } + } else { + if ("__ht__date" == t.substr(0, 10)) return new Date(Zb(t.substr(10))); + if ("__ht__list" === t.substr(0, 10)) return new xr(u.parse(t.substr(10))) + } + return t + }) : M : M + }, loadJS: function (b, x) { + x && b.push(x); + var n = b.shift(); + if (ip(n)) b = n.contact(b), u.loadJS(b); + else if (Mf(n)) n(), u.loadJS(b); + else if (dk(n)) { + var m = U.createElement("script"); + m.onload = function () { + u.loadJS(b) + }, m.setAttribute("src", n), U.getElementsByTagName("head")[0].appendChild(m) + } else b.length && u.loadJS(b) + }, extendClass: function (A, m) { + var d = A.prototype; + for (var Y in m) fb[Y] && fb.hasOwnProperty(Y) ? fb[Y](d, m) : d[Y] = m[Y] + }, toRoundedCorner: function () { + function f(Y, s, m) { + Y.x = s.x, Y.y = s.e || m, Y.z = s.y + } + var n = new tl, + u = new tl, + R = new tl, + A = new tl; + return function (o, h) { + var _, e = 0; + o.getPoints && (e = o.getElevation(), o = o.getPoints()), _ = o instanceof xr ? o : new xr(o); + var t = _.size(); + if (0 >= h) return { + points: _ + }; + var z = new xr, + C = new xr, + T = _.get(0); + f(n, T, e), z.add(T), C.add(1); + for (var S = 1; t > S; S++) + if (t > S + 1) { + var i = _.get(S), + p = _.get(S + 1); + f(u, i, e), f(R, p, e), A.subVectors(n, u).setLength(Math.min(.99 * A.length(), h)).add(u), i.e !== Z || T.e !== Z ? z.add({ + x: A.x, + y: A.z, + e: A.y + }) : z.add({ + x: A.x, + y: A.z + }), z.add(i), A.subVectors(R, u).setLength(Math.min(.99 * A.length(), h)).add(u), i.e !== Z || p.e !== Z ? z.add(T = { + x: A.x, + y: A.z, + e: A.y + }) : z.add(T = { + x: A.x, + y: A.z + }), n.copy(A), C.addAll([2, 3]) + } else z.add(_.get(S)), C.add(2); + return { + points: z, + segments: C + } + } + }(), + toColorData: zd, + setCanvas: Bn, + createDiv: dd, + createDisabledDiv: lo, + createView: ve, + createCanvas: uo, + appendChild: sn, + initContext: Wd, + checkLoadingImage: Dd, + translateAndScale: tf, + layout: qp, + getPosition: Re, + drawPoints: en, + drawRoundRect: pg, + drawBorder: Ie, + setFocus: hr, + getter: kp, + setter: tg, + isEmptyObject: wd, + cameraPriority: function () { + var V = { + skybox: 0, + main: 1e4, + top: 1e7, + infinity: 1 / 0 + }; + return o.seal(o.defineProperties({}, { + skybox: { + configurable: !1, + enumerable: !1, + get: function () { + return V.skybox + }, set: function (q) { + if (q >= V.main) throw new RangeError("Skybox camera must have lower priority than the main camera."); + V.skybox = Number(q) + } + }, + main: { + configurable: !1, + enumerable: !1, + get: function () { + return V.main + }, set: function (T) { + if (T <= V.skybox) throw new RangeError("Main camera must have higher priority than the skybox camera."); + if (T >= V.top) throw new RangeError("Main camera must have lower priority than the top camera."); + V.main = Number(T) + } + }, + top: { + configurable: !1, + enumerable: !1, + get: function () { + return V.top + }, set: function (r) { + if (r <= V.main) throw new RangeError("Top camera must have higher priority than the main camera."); + V.top = Number(r) + } + } + })) + }() + }, !0), Uh(t, { + autoAdjustIndex: 1, + hierarchicalRendering: 1, + adjustChildrenToTop: 1, + autoHideScrollBar: 1, + autoUpdate: 1, + firstPersonMode: 1, + ortho: 1, + strict: 1, + stickToRight: 1, + instant: 1, + closePath: 1, + hierarchical: 1, + doubleClickToToggle: 1, + continuousLayout: 1, + syncSize: 1 + }, !0); + var Nn = u.disabledOpacity, + gj = u.toolTipDelay, + ij = u.devicePixelRatio, + be = u.autoMakeVisible, + jr = u.autoHideScrollBar, + Nf = u.imageGradient, + me = u.showToolTip, + Um = u.hideToolTip, + up = u.dashPattern, + ob = u.lineCap, + Wl = u.lineJoin, + Dh = u.labelColor, + rf = u.labelSelectColor, + Fh = u.labelFont, + kc = u.widgetIndent, + Oi = u.widgetRowHeight, + um = u.widgetHeaderHeight, + Jk = u.widgetTitleHeight, + Ch = u.scrollBarColor, + di = u.scrollBarSize, + Lg = u.scrollBarTimeout, + un = u.scrollBarMinLength, + co = u.scrollBarInteractiveSize, + lq = u.zoomIncrement, + _f = u.scrollZoomIncrement, + db = u.pinchZoomIncrement, + us = u.zoomMax, + gh = u.zoomMin, + Wn = u.createObject, + Qc = u.preventDefault, + _c = u.setImage, + ii = u.getImage, + Dr = u.isImageComplete, + Ii = u.drawCenterImage, + qk = u.drawStretchImage, + xp = u.getId, + $e = u.callLater, + td = u.cancelLater, + Sd = u.sortFunc, + Pm = u.clone, + gp = u.getClass, + Sf = u.startAnim, + Ee = u.brighter, + cn = u.darker, + nd = u.drawText, + ln = u.getTextSize, + jj = u.isLeftButton, + Fm = u.isMiddleButton, + tk = u.isRightButton, + Qj = u.getTouchCount, + wm = u.isDoubleClick, + Pf = u.isShiftDown, + ik = u.isCtrlDown, + lb = u.getClientPoint, + Fd = u.getPagePoint, + En = u.getDistance, + ms = u.unionPoint, + ni = u.unionRect, + cf = u.containsPoint, + $k = u.containsRect, + Kj = u.intersectsRect, + ro = u.intersection, + hq = u.getWindowInfo, + vn = u.grow, + Nm = u.getLogicalPoint, + Qo = u.getScreenPoint, + Ui = u.startDragging, + yj = u.removeHTML, + $g = u.createElement, + Nl = u.segmentResolution, + Cq = u.shapeResolution, + rr = u.shapeSide, + yc = u.def, + ki = function (g, T, b) { + yc(Y + "." + g, T, b) + }, + zj = function (R, Q) { + R.childNodes.forEach(function ($) { + Q($), zj($, Q) + }) + }; + Uh(u, { + toolTipLabelColor: Dh, + toolTipLabelFont: Fh, + toolTipBackground: S.toolTipBackground, + toolTipShadowColor: od, + debugTipLabelFont: Fh, + debugTipLabelColor: Dh, + debugTipBackground: S.toolTipBackground, + drawBreakableText: Om, + setDevicePixelRatio: function (m) { + ij = u.devicePixelRatio = "number" == typeof m ? m : x.devicePixelRatio, zj(U.body, function (U) { + var k = U._ht; + k && k._canvas && (Bn(k._canvas, k.getWidth(), k.getHeight()), k.redraw ? k.redraw() : k.iv()) + }) + } + }, !0); + var Wp = 1e-6, + $m = "undefined" != typeof Uint16Array ? Uint16Array : Array, + fk = "undefined" != typeof Float32Array ? Float32Array : Array, + fn = function (j, $, b) { + var V = [j[0] - $[0], j[1] - $[1], j[2] - $[2]]; + if (b) { + var t = En(V); + t > 0 && (V[0] /= t, V[1] /= t, V[2] /= t) + } + return V + }, + Cj = function () { + var l = "charCodeAt", + $ = 2 * (2 * Ki.length + 1); + for (var J in x) + if (J === Y + nq[0] + (oe.length + 2)) { + var w = x[J]; + if (!w) break; + for (var A = w.length, R = 0; A > R; R++) + if (w[R][l](0) === $ && w[R + 1] != F && w[R + 1] === oe[0] && w[R + 2] != F && w[R + 2][l](0) === $) { + for (var N = R + 3; A > N; N++) + if (w[N][l](0) === $) { + if (0 == w[N + 1]) + for (var h, X = N + 2; A > X; X++) { + if (w[X][l](0) === $) { + 0 == w[X - 1] && h && ($f = h.substr(0, h.length - 1)); + break + } + h == F ? h = w[X] : h += w[X] + } + break + } + break + } + break + } + return function (E) { + return [-E[0], -E[1], -E[2]] + } + }(), + zc = function (u, n) { + return 3 === u.length ? u[0] * n[0] + u[1] * n[1] + u[2] * n[2] : u[0] * n[0] + u[1] * n[1] + }, + kn = function () { + var $ = new Array(16); + return $[0] = 1, $[1] = 0, $[2] = 0, $[3] = 0, $[4] = 0, $[5] = 1, $[6] = 0, $[7] = 0, $[8] = 0, $[9] = 0, $[10] = 1, $[11] = 0, $[12] = 0, $[13] = 0, $[14] = 0, $[15] = 1, $ + }, + Hd = kn(), + Ql = function (q) { + var L = new Array(16); + return L[0] = q[0], L[1] = q[1], L[2] = q[2], L[3] = q[3], L[4] = q[4], L[5] = q[5], L[6] = q[6], L[7] = q[7], L[8] = q[8], L[9] = q[9], L[10] = q[10], L[11] = q[11], L[12] = q[12], L[13] = q[13], L[14] = q[14], L[15] = q[15], L + }, + Vd = function (L, x) { + return L[0] = x[0], L[1] = x[1], L[2] = x[2], L[3] = x[3], L[4] = x[4], L[5] = x[5], L[6] = x[6], L[7] = x[7], L[8] = x[8], L[9] = x[9], L[10] = x[10], L[11] = x[11], L[12] = x[12], L[13] = x[13], L[14] = x[14], L[15] = x[15], L + }, + yi = function (s) { + return s[0] = 1, s[1] = 0, s[2] = 0, s[3] = 0, s[4] = 0, s[5] = 1, s[6] = 0, s[7] = 0, s[8] = 0, s[9] = 0, s[10] = 1, s[11] = 0, s[12] = 0, s[13] = 0, s[14] = 0, s[15] = 1, s + }, + Td = function (e, D) { + var y = e[0], + q = e[1], + g = e[2]; + return e[0] = D[0] * y + D[4] * q + D[8] * g + D[12], e[1] = D[1] * y + D[5] * q + D[9] * g + D[13], e[2] = D[2] * y + D[6] * q + D[10] * g + D[14], e + }, + Ek = function (o, K) { + var A = o[0], + b = o[1], + V = o[2], + r = o[3]; + return o[0] = K[0] * A + K[4] * b + K[8] * V + K[12] * r, o[1] = K[1] * A + K[5] * b + K[9] * V + K[13] * r, o[2] = K[2] * A + K[6] * b + K[10] * V + K[14] * r, o[3] = K[3] * A + K[7] * b + K[11] * V + K[15] * r, o + }, + Og = function () { + var J, V, A, C, k = Hc(Fe[1] + Fe[7]), + Y = Hc(Fe[0] + Fe[3] - Fe[10]), + r = Hc(Fe[8] + 2), + e = function () { + return V = A.charAt(J), J += 1, V + }, + f = function () { + var E = ""; + if (V === r) + for (; e();) { + if (V === r) return e(), E; + E += V + } else e() + }, + h = function () { + for (; V && " " >= V;) e() + }, + W = function () { + var Z, v = {}; + if (V === k) { + if (e(), h(), V === Y) return e(), v; + for (; V;) { + if (Z = f(), h(), e(), v[Z] = C(), h(), V === Y) return e(), v; + e(), h() + } + } + }; + return C = function () { + switch (h(), V) { + case k: + return W(); + default: + return f() + } + }, + function (s) { + if (g = {}, s) { + var n; + if (A = s, J = 0, V = " ", n = C(), h(), !V) return n + } + } + }(), + uh = function (F, D) { + if (D) { + var x = n(D), + e = k(D), + A = F[4], + f = F[5], + $ = F[6], + P = F[7], + d = F[8], + X = F[9], + u = F[10], + g = F[11]; + F[4] = A * e + d * x, F[5] = f * e + X * x, F[6] = $ * e + u * x, F[7] = P * e + g * x, F[8] = d * e - A * x, F[9] = X * e - f * x, F[10] = u * e - $ * x, F[11] = g * e - P * x + } + }, + ah = function (p, v) { + if (v) { + var m = n(v), + t = k(v), + R = p[0], + I = p[1], + f = p[2], + T = p[3], + x = p[8], + l = p[9], + K = p[10], + P = p[11]; + p[0] = R * t - x * m, p[1] = I * t - l * m, p[2] = f * t - K * m, p[3] = T * t - P * m, p[8] = R * m + x * t, p[9] = I * m + l * t, p[10] = f * m + K * t, p[11] = T * m + P * t + } + }, + wo = function (v, W) { + if (W) { + var u = n(W), + y = k(W), + H = v[0], + l = v[1], + K = v[2], + j = v[3], + U = v[4], + C = v[5], + t = v[6], + N = v[7]; + v[0] = H * y + U * u, v[1] = l * y + C * u, v[2] = K * y + t * u, v[3] = j * y + N * u, v[4] = U * y - H * u, v[5] = C * y - l * u, v[6] = t * y - K * u, v[7] = N * y - j * u + } + }, + sj = function (E, G, W) { + return Jn(F, W === !1 ? F : E.getFinalScale3d(), E.getFinalRotation3d(), E.getRotationMode(), E.p3(), F, G) + }, + Jn = function (j, G, c, h, a, B, M) { + return B || (B = kn()), a && bo(B, a), Cl(B, c, h), M && xo(B, B, M), G && Bd(B, G), j && xo(B, B, j), B + }, + pf = function (k, b, l) { + b = Zb(b), l = Zb(l); + var P = this; + P.g = k, P._84O = b, P._85O = l, P._70I = !0, P.F = 0, P._83O = b + l, P.pen = { + x: 0, + y: 0 + } + }, + ph = "lineDashOffset", + Ue = "setLineDash", + xf = function ($) { + for (var N in $) 1 === N.length && (ph = $[N]); + return N ? 1 : 0 + }, + ls = function (W, I, U) { + return Ro(I) ? W : W[Ue] ? (W[Ue](I), U && (W.lineDashOffset = U), W) : new pf(W, I[0], I.length > 1 ? I[1] : I[0]) + }, + _l = function (A, d) { + !Ro(d) && A[Ue] && (A[Ue](Pc), A.lineDashOffset = 0) + }; + if (yc(pf, o, { + _69I: 6, + moveTo: function (V, e) { + var t = this, + D = t.pen; + D.x = V, D.y = e, t.g.moveTo(V, e), t.start || (t.start = { + x: V, + y: e + }) + }, lineTo: function (S, $) { + var O = this, + V = O.pen, + N = S - V.x, + G = $ - V.y, + E = D(G, N), + v = k(E), + R = n(E), + U = O._23O(V.x, V.y, S, $), + y = O._85O, + A = O._84O, + b = O._83O; + if (O.F) { + if (O.F > U) return O._70I ? O._72I(S, $) : O.moveTo(S, $), O.F -= U, void 0; + if (O._70I ? O._72I(V.x + v * O.F, V.y + R * O.F) : O.moveTo(V.x + v * O.F, V.y + R * O.F), U -= O.F, O.F = 0, O._70I = !O._70I, !U) return + } + var r = T(U / b); + if (r) { + for (var B = v * A, e = R * A, K = v * y, w = R * y, z = 0; r > z; z++) O._70I ? (O._72I(V.x + B, V.y + e), O.moveTo(V.x + K, V.y + w)) : (O.moveTo(V.x + K, V.y + w), O._72I(V.x + B, V.y + e)); + U -= b * r + } + O._70I ? U > A ? (O._72I(V.x + v * A, V.y + R * A), O.moveTo(S, $), O.F = y - (U - A), O._70I = !1) : (O._72I(S, $), U === A ? (O.F = 0, O._70I = !O._70I) : (O.F = A - U, O.moveTo(S, $))) : U > y ? (O.moveTo(V.x + v * y, V.y + R * y), O._72I(S, $), O.F = A - (U - y), O._70I = !0) : (O.moveTo(S, $), U === y ? (O.F = 0, O._70I = !O._70I) : O.F = y - U) + }, quadraticCurveTo: function (y, h, r, f) { + var E, x = this, + i = x.pen, + z = i.x, + d = i.y, + w = x._22O(z, d, y, h, r, f), + M = 0, + C = 0, + t = x._85O, + X = x._84O; + if (x.F) { + if (x.F > w) return x._70I ? x._71I(y, h, r, f) : x.moveTo(r, f), x.F -= w, void 0; + if (M = x.F / w, E = x._20O(z, d, y, h, r, f, M), x._70I ? x._71I(E[2], E[3], E[4], E[5]) : x.moveTo(E[4], E[5]), x.F = 0, x._70I = !x._70I, !w) return + } + var e = w - w * M, + P = T(e / x._83O), + G = X / w, + W = t / w; + if (P) + for (var K = 0; P > K; K++) x._70I ? (C = M + G, E = x._21O(z, d, y, h, r, f, M, C), x._71I(E[2], E[3], E[4], E[5]), M = C, C = M + W, E = x._21O(z, d, y, h, r, f, M, C), x.moveTo(E[4], E[5])) : (C = M + W, E = x._21O(z, d, y, h, r, f, M, C), x.moveTo(E[4], E[5]), M = C, C = M + G, E = x._21O(z, d, y, h, r, f, M, C), x._71I(E[2], E[3], E[4], E[5])), M = C; + e = w - w * M, x._70I ? e > X ? (C = M + G, E = x._21O(z, d, y, h, r, f, M, C), x._71I(E[2], E[3], E[4], E[5]), x.moveTo(r, f), x.F = t - (e - X), x._70I = !1) : (E = x._19O(z, d, y, h, r, f, M), x._71I(E[2], E[3], E[4], E[5]), w === X ? (x.F = 0, x._70I = !x._70I) : (x.F = X - e, x.moveTo(r, f))) : e > t ? (C = M + W, E = x._21O(z, d, y, h, r, f, M, C), x.moveTo(E[4], E[5]), E = x._19O(z, d, y, h, r, f, C), x._71I(E[2], E[3], E[4], E[5]), x.F = X - (e - t), x._70I = !0) : (x.moveTo(r, f), e === t ? (x.F = 0, x._70I = !x._70I) : x.F = t - e) + }, bezierCurveTo: function () { + var M = arguments; + this.pen = { + x: M[4], + y: M[5] + }, this.g.bezierCurveTo(M[0], M[1], M[2], M[3], M[4], M[5]) + }, arc: function (M, g, v, C, e, S) { + S || (C = -C, e = -e), mo(this, M, g, C, e - C, v, v, !1) + }, rect: function (G, z, t, $) { + var Q = this; + Q.pen = { + x: G, + y: z + }, Q.moveTo(G, z), Q.lineTo(G, z + $), Q.lineTo(G + t, z + $), Q.lineTo(G + t, z), Q.lineTo(G, z) + }, beginPath: function () { + this.g.beginPath() + }, closePath: function () { + this.lineTo(this.start.x, this.start.y) + }, _23O: function (O, c, l, Z) { + var h = l - O, + b = Z - c; + return w(h * h + b * b) + }, _22O: function (X, t, r, J, o, W, I) { + for (var z, e, q, $, a, A, Z, V = 0, G = X, s = t, m = I > 0 ? I : this._69I, w = 1; m >= w; w++) q = w / m, $ = 1 - q, a = $ * $, A = 2 * q * $, Z = q * q, z = a * X + A * r + Z * o, e = a * t + A * J + Z * W, V += this._23O(G, s, z, e), G = z, s = e; + return V + }, _21O: function (y, E, z, L, g, U, I, f) { + var J = this; + if (0 === I) return J._20O(y, E, z, L, g, U, f); + if (1 === f) return J._19O(y, E, z, L, g, U, I); + var H = J._20O(y, E, z, L, g, U, f); + return H.push(I / f), J._19O.apply(J, H) + }, _20O: function (x, O, o, T, a, m, N) { + if (1 !== N) { + var C = o + (a - o) * N, + g = T + (m - T) * N; + o = x + (o - x) * N, T = O + (T - O) * N, a = o + (C - o) * N, m = T + (g - T) * N + } + return [x, O, o, T, a, m] + }, _19O: function (l, A, I, d, Y, r, h) { + if (1 !== h) { + var w = l + (I - l) * h, + P = A + (d - A) * h; + I += (Y - I) * h, d += (r - d) * h, l = w + (I - w) * h, A = P + (d - P) * h + } + return [l, A, I, d, Y, r] + }, _72I: function (u, $) { + var j = this.pen; + (u !== j.x || $ !== j.y) && (j.x = u, j.y = $, this.g.lineTo(u, $)) + }, _71I: function (u, i, t, y) { + var U = this.pen; + (u !== t || i !== y || t !== U.x || y !== U.y) && (U.x = t, U.y = y, this.g.quadraticCurveTo(u, i, t, y)) + } + }), _ && ge) { + var vk = ge.toString(); + Ad = vk.indexOf(fc.substr(0, 2)) > 0 && vk.indexOf($c + $c.substr(1, 1)) > 1 || vk.indexOf(Kb.substr(0, 2) + fc.substr(2, 2) + nq[0] + fc[4]) > 1 ? !0 : !1 + } + var mc = F, + md = F, + Fo = u.checkLoadingCompType = function (N) { + mc && !N._72O && (md || (md = {}), md[N._72O = xp()] = N) + }, + qs = function (K, s) { + if (s || (s = K), s && (mc || (mc = {}), !mc[K])) { + var z = new De; + if (mc[s] = { + request: z, + url: s + }, s = u.beforeLoadURL(s, K), s.data) { + var M = u.parse(s.data); + Ko(K, M), u.handleCompTypeLoaded(K, M) + } else { + z.onload = function () { + if (200 === this.status || 0 === this.status) { + var O = u.parse(z.getResponseText()); + Ko(K, O), u.handleCompTypeLoaded(K, O) + } else Ko(K, F) + }, z.onerror = function () { + Ko(K, F) + }; + var n = {}; + n.url = encodeURI(s), n.sync = !1, z.send(n) + } + } + }, + Ko = function (J, M) { + if (Xh[J] = M, delete mc[J], wd(mc) && (mc = F, md)) { + for (var e in md) { + var H = md[e]; + H.invalidateAll && H.invalidateAll(Z, "compTypeLoaded", J), H.redraw && H.redraw(), H.iv(), delete H._72O + } + md = F + } + if (M && md) + for (var e in md) { + var H = md[e]; + H.invalidateAll && H.invalidateAll(Z, "compTypeLoading", J), H.redraw && H.redraw(), H.iv() + } + }, + ch = S.chart, + Nh = "", + Jp = !0, + Hn = u.compStack = [], + Yf = /^style@/, + Gn = /^attr@/, + Se = /^field@/, + Tm = { + x: .5, + y: .5 + }, + _m = function () { + Jp = !0 + }, + zm = function () { + return Jp + }, + xc = function (h, H, K, I) { + if (!h) return 0; + if (Dj(h.fitSize, H, K) && I) return I; + var W = Dj(h.width, H, K); + return null == W ? 20 : W + }, + oo = function (w, n, L, E) { + if (!w) return 0; + if (Dj(w.fitSize, n, L) && E) return E; + var J = Dj(w.height, n, L); + return null == J ? 20 : J + }, + Dj = function (g, v, b) { + if (!g || !g.func) return g; + var R, I = g.func, + H = g.value; + return R = Mf(I) ? b && b.vectorDataBindingDisabled && !g.isSafeFunc ? H : I(v, b) : v instanceof Qp || (O.ui ? v instanceof O.ui.View : 0) ? Gn.test(I) ? v.a(Nh + I.slice(5)) : Yf.test(I) ? v.s(Nh + I.slice(6)) : Se.test(I) ? v[I.slice(6)] : v[I] ? v[I](b) : H : H, H !== Z && R == F ? H : R + }, + Yd = u.drawImage = function () { + var f, d, h, s, z, A, v = function (Y, v) { + Y.getValue && Y.getValue.compType === v || (Y.getValue = function (I) { + var u = Q(Y, I); + if (u === Z && v.properties) { + var T = v.properties[I]; + T && (u = T.defaultValue) + } + return u + }, Y.getColor = function (W, S) { + return S === !0 ? b(W) : b(Y.getValue(W)) + }, Y.getValue.compType = v) + }, + Q = function (n, l, s) { + var e, B = !1; + if (n.prefix && d instanceof Qp) { + var c = d.a(Nh + l); + c !== Z && (B = !0, e = c) + } + return e === Z && (e = n[l]), e && e.func && (B = !0, e = Dj(e, d, h)), s && (e = s(e), B || (n[l] = e)), e + }, + b = function (P, B) { + var D; + return D = B ? Q(P, B) : P, f && f.compGray && D ? u.toGrayColor(D) : z && D ? nm(D, z, A) : D + }, + X = function (j) { + if (ip(j)) { + for (var L = new xr, b = j.length, n = 0; b > n; n += 2) L.add({ + x: j[n], + y: j[n + 1] + }); + j = L + } + return j + }, + D = function (G) { + var b = Q(G, "anchorX"), + c = Q(G, "anchorY"); + if (b !== Z || c !== Z) return { + x: b === Z ? Tm.x : b, + y: c === Z ? Tm.y : c + }; + var f = Q(G, "type"), + e = Q(G, "name"); + if ("image" !== f || !e) return Tm; + var J = ii(e); + return J && J.anchorX !== Z && J.anchorY !== Z ? { + x: J.anchorX, + y: J.anchorY + } : Tm + }, + p = function (W, t) { + var y = Q(W, Tq), + E = D(W); + if (ip(y)) { + var x = y.length, + r = Q(W, "relative"), + z = t.width, + T = t.height; + if (4 === x) y = { + x: y[0], + y: y[1], + width: y[2], + height: y[3] + }, r && (y.x *= z, y.y *= T, y.width *= z, y.height *= T); + else if (3 === x) { + var J = y[0]; + y = { + width: y[1], + height: y[2] + }, r && (y.width *= z, y.height *= T), "object" == typeof J ? J.length && (J = { + x: J[0], + y: J[1] + }) : J = Re(J, t, y), y.x = J.x - y.width * E.x, y.y = J.y - y.height * E.y + } + y.x += Q(W, "offsetX") || 0, y.y += Q(W, "offsetY") || 0, !r && t.fitSize && (y = M(W, y, t)) + } + return y + }, + M = function (n, s, T) { + if (s) { + var l, a, q, B = { + x: s.x, + y: s.y, + width: s.width, + height: s.height + }, + u = D(n), + U = Q(n, "layoutH"), + m = Q(n, "layoutV"), + Y = 1, + t = 1, + P = 0, + v = 0, + Z = 1, + f = 1; + switch (U) { + case "left": + break; + case "right": + B.x += T.width - T.rw; + break; + case "center": + B.x += .5 * (T.width - T.rw); + break; + case "scale": + case "leftright": + default: + l = Q(n, ac) || 0, l && (P = Math.abs(v = Math.sin(l)), Z = Math.abs(f = Math.cos(l))), "leftright" !== U ? (Y += Z * (T.widthScale - 1), t += P * (T.widthScale - 1)) : (Y += B.width ? Z * (T.width - T.rw) / B.width : 0, t += B.height ? P * (T.width - T.rw) / B.height : 0, a = -Math.min(-u.x * f + u.y * v, -u.x * f - (1 - u.y) * v, (1 - u.x) * f + u.y * v, (1 - u.x) * f - (1 - u.y) * v)) + } + switch (m) { + case "top": + break; + case "bottom": + B.y += T.height - T.rh; + break; + case "center": + B.y += .5 * (T.height - T.rh); + break; + case "scale": + case "topbottom": + default: + l == F && (l = Q(n, ac), l && (P = Math.abs(v = Math.sin(l)), Z = Math.abs(f = Math.cos(l)))), "topbottom" !== m ? (Y += P * (T.heightScale - 1), t += Z * (T.heightScale - 1)) : (Y += B.width ? P * (T.height - T.rh) / B.width : 0, t += B.height ? Z * (T.height - T.rh) / B.height : 0, q = -Math.min(-u.x * v - u.y * f, -u.x * v + (1 - u.y) * f, (1 - u.x) * v - u.y * f, (1 - u.x) * v + (1 - u.y) * f)) + } + return (1 !== Y || 1 !== t) && ("scale" !== U && U ? "leftright" === U && (B.x += B.width * (1 - Y) * u.x + a * (T.width - T.rw)) : B.x += B.x * (T.widthScale - 1) + u.x * B.width * (T.widthScale - Y), "scale" !== m && m ? "topbottom" === m && (B.y += B.height * (1 - t) * u.y + q * (T.height - T.rh)) : B.y += B.y * (T.heightScale - 1) + u.y * B.height * (T.heightScale - t), B.width *= Y, B.height *= t), B.width < 0 && (B.width = 0), B.height < 0 && (B.height = 0), B + } + }, + y = function (J) { + return ip(J) ? new xr(J) : J + }, + W = function (o, c, I, $, x, R, T) { + var G = f.interactiveInfo, + _ = o.transform; + if (_) return f.save(), f.setTransform(_.a, _.b, _.c, _.d, _.tx, _.ty), G && G.compInfos.push({ + comp: o, + rect: c, + matrix: _.clone(), + prefix: Nh, + refRect: G.refRect + }), !0; + x === Z && (x = 1), R === Z && (R = 1); + var S = Q(o, "clipPercentage"), + W = jg(I, c); + if (W && !$ && 1 === x && 1 === R && !(1 > S)) return G && G.compInfos.push({ + comp: o, + rect: c, + matrix: G.matrix.clone(), + prefix: Nh, + refRect: G.refRect + }), !1; + T = T || Tm; + var N = c.x + c.width * T.x, + M = c.y + c.height * T.y, + p = I.x + I.width * T.x, + j = I.y + I.height * T.y, + E = I.width ? x * (c.width / I.width) : 1, + k = I.height ? R * (c.height / I.height) : 1; + if (f.save(), G && (G.matrix.appendTranslate(N, M).appendRotate($).appendScale(E, k).appendTranslate(-p, -j), G.compInfos.push({ + comp: o, + rect: c, + matrix: G.matrix.clone(), + prefix: Nh, + refRect: G.refRect + })), wh(f, N, M), jc(f, $ || 0), ec(f, E, k), wh(f, -p, -j), 1 > S) { + 0 > S && (S = 0); + var w = Wh(I, Q(o, "clipDirection"), S); + f.beginPath(), f.rect(w.x, w.y, w.width, w.height), f.clip() + } + return !0 + }, + O = function () { + f.restore() + }, + S = function (n, N, G) { + var o = Q(n, "path"), + z = Q(n, ac), + L = Q(n, "scaleX"), + l = Q(n, "scaleY"), + m = D(n), + P = F, + S = jp(null, o); + if (G || (G = n.unionRect, G || (G = ms(S), n.path.func || (n.unionRect = G)), P = G), G) { + P || (P = n.unionRect, P || (P = ms(S), n.path.func || (n.unionRect = P))); + var q = W(n, G, P, z, L, l, m), + c = Q(n, "borderPattern"), + v = ls(f, c), + a = b(n, "background"), + r = b(n, "borderColor"), + H = Q(n, "borderWidth"), + j = Q(n, "gradient"), + B = b(n, "gradientColor"), + y = Q(n, "border3d"), + U = b(n, "border3dColor"), + Y = Q(n, "border3dAccuracy"), + I = f.lineJoin, + X = f.lineCap; + f.lineJoin = Q(n, "borderJoin") || Wl, f.lineCap = Q(n, "borderCap") || ob, a ? (Ge(f, a, j, B, P), jp(f, o), f.fill(), v !== f && jp(f, o)) : jp(f, o); + var M = Q(n, "borderWidthAbsolute"); + if (M && (f.save(), f.setTransform(1, 0, 0, 1, 0, 0)), H && r && (f.lineWidth = H, f.strokeStyle = r, f.stroke(), y && fr(f, r, U, H, s, Y)), _l(f, c), Q(n, "dash")) { + var h = Q(n, "dashWidth") || H; + if (h > 0) { + c = Q(n, "dashPattern") || up; + var v = ls(f, c, Q(n, "dashOffset")), + Z = b(n, "dashColor") || b(dm); + v !== f && jp(f, o), f.strokeStyle = Z, f.lineWidth = h, f.stroke(), Q(n, "dash3d") && fr(f, Z, b(n, "dash3dColor"), h, s, Q(n, "dash3dAccuracy")), _l(f, c) + } + } + M && f.restore(), N === Tq && Wq(f, a, Q(n, "depth"), P), f.lineJoin = I, f.lineCap = X, q && O() + } + }, + N = function ($, e, T, p) { + var x = Q($, _b, X), + G = Q($, ac), + B = D($); + if (x && p.fitSize) { + var m = new xr, + V = ms(x), + Y = M($, V, p), + P = V.x + B.x * V.width, + _ = V.y + B.y * V.height, + K = Y.x + B.x * Y.width, + u = Y.y + B.y * Y.height, + N = V.width ? Y.width / V.width : 1, + c = V.height ? Y.height / V.height : 1; + x.each(function (w) { + m.add({ + x: K + (w.x - P) * N, + y: u + (w.y - _) * c + }) + }), x = m, $.unionRect = null + } + var j = Q($, "scaleX"), + C = Q($, "scaleY"), + v = e === bl, + R = F; + if (!T && v && (T = $.unionRect, T || (T = ms(x), $.points.func || ($.unionRect = T)), R = T), T) { + v ? R || (R = $.unionRect, R || (R = ms(x), $.points.func || ($.unionRect = R))) : R = T; + var i, r, o, n, E = W($, T, R, G, j, C, B), + S = Q($, "borderPattern"), + H = ls(f, S), + w = b($, "background"), + U = ii(Q($, "repeatImage"), z, A), + q = Q($, "gradientPack"), + k = b($, "borderColor"), + g = Q($, "borderWidth"), + I = ii(Q($, "borderRepeatImage"), z, A), + J = Q($, "segments", y), + l = Q($, "gradient"), + t = b($, "gradientColor"), + L = Q($, "border3d"), + a = b($, "border3dColor"), + Z = Q($, "border3dAccuracy"), + Gd = Q($, "closePath"), + gg = Q($, "fillRule") || "nonzero", + kk = f.lineJoin, + Pq = f.lineCap; + if (f.lineJoin = Q($, "borderJoin") || Wl, f.lineCap = Q($, "borderCap") || ob, v) + if (w || U || q) { + var Te = Q($, "fillClipPercentage"); + if (1 > Te) { + 0 > Te && (Te = 0); + var km = Wh(R, Q($, "fillClipDirection"), Te); + f.save(), f.beginPath(), f.rect(km.x, km.y, km.width, km.height), f.clip() + } + en(f, x, J, Gd), q ? uq(f, q, b) : U ? fg(f, U, z, A, d, h) : Ge(f, w, l, t, R), f.fill(gg), q && f.restore(), 1 > Te && f.restore(), H !== f && en(H, x, J, Gd) + } else en(H, x, J, Gd); + else if ("roundRect" === e ? i = Q($, "cornerRadius") : "polygon" === e ? i = Q($, "polygonSide") : "arc" === e && (i = Q($, "arcFrom"), r = Q($, "arcTo"), o = Q($, "arcClose"), n = Q($, "arcOval")), w || U || q) { + var Te = Q($, "fillClipPercentage"); + if (1 > Te) { + 0 > Te && (Te = 0); + var km = Wh(R, Q($, "fillClipDirection"), Te); + f.save(), f.beginPath(), f.rect(km.x, km.y, km.width, km.height), f.clip() + } + Ej(f, e, R, i, r, o, n), q ? uq(f, q, b) : U ? fg(f, U, z, A, d, h) : Ge(f, w, l, t, R), f.fill(gg), q && f.restore(), 1 > Te && f.restore(), f !== H && Ej(H, e, R, i, r, o, n) + } else Ej(H, e, R, i, r, o, n); + var yh = Q($, "borderWidthAbsolute"); + if (yh && (f.save(), f.setTransform(1, 0, 0, 1, 0, 0)), g && (k || I) && (f.lineWidth = g, I ? qb(f, I, z, A, d, h) : f.strokeStyle = k, f.stroke(), L && fr(f, k, a, g, s, Z)), _l(f, S), Q($, "dash")) { + var Yi = Q($, "dashWidth") || g; + if (Yi > 0) { + S = Q($, "dashPattern") || up; + var H = ls(f, S, Q($, "dashOffset")), + Yr = b($, "dashColor") || b(dm); + H !== f && (v ? en(H, x, J, Gd) : Ej(H, e, R, i, r, o, n)), f.strokeStyle = Yr, f.lineWidth = Yi, f.stroke(), Q($, "dash3d") && fr(f, Yr, b($, "dash3dColor"), Yi, s, Q($, "dash3dAccuracy")), _l(f, S) + } + } + yh && f.restore(), e === Tq && Wq(f, w, Q($, "depth"), R), f.lineJoin = kk, f.lineCap = Pq, E && O() + } + }, + K = function (u, U) { + var Z = z || Q(u, dg), + w = A || Q(u, "blendMode"), + D = Q(u, "name"), + o = ii(D, Z, w); + o ? qk(f, o, Q(u, "stretch"), U.x, U.y, U.width, U.height, d, h, Z, null, w) : Jp = !1 + }, + L = function (G, c) { + var g = Q(G, "text"); + g != F && nd(f, g, Q(G, "font"), b(G, dg), c.x, c.y, c.width, c.height, Q(G, "align"), Q(G, "vAlign")) + }, + G = function (A, d) { + Ie(f, b(A, dg), d.x, d.y, d.width, d.height, Q(A, "width")) + }, + P = function (p, W) { + var E = Q(p, kd), + D = 0; + if (E && (E.forEach(function (V) { + D += V + }), D > 0)) { + for (var h = Q(p, "colors") || ch, B = Q(p, "startAngle") || 0, R = Q(p, "hollow"), I = Q(p, Bg), N = Q(p, Vm), M = Q(p, fe), P = I ? new xr : F, t = W.x, v = W.y, m = W.width, z = W.height, Y = t + m / 2, r = v + z / 2, y = V(m, z) / 2, j = 0, l = 0; l < E.length; l++) { + var c = E[l], + x = $ * c / D, + U = B + x; + if (f.fillStyle = h[j++], j === h.length && (j = 0), f.beginPath(), R) { + var q = Y + k(B) * y / 2, + i = r + n(B) * y / 2, + A = Y + k(U) * y, + X = r + n(U) * y; + f.moveTo(q, i), f.arc(Y, r, y / 2, B, U, !1), f.lineTo(A, X), f.arc(Y, r, y, U, B, !0) + } else f.moveTo(Y, r), f.arc(Y, r, y, U, B, !0); + P && (x = (B + U) / 2, P.add({ + text: Mf(I) ? I(c, l, D, d) : c, + x: Y + .75 * k(x) * y, + y: r + .75 * n(x) * y + })), f.closePath(), f.fill(), B = U + } + P && P.each(function (t) { + nd(f, t.text, N, M, t.x, t.y, 0, 0, sc) + }) + } + }, + I = function (X, l) { + var o = Q(X, Kh); + if (o && o.length > 0) { + var P = o.length, + T = Q(X, Bg), + R = Q(X, Vm), + S = Q(X, fe), + b = T ? new xr : F, + w = Q(X, "minValue") || 0, + n = Q(X, "maxValue"); + if (n == F && (n = 0, o.forEach(function (A) { + Q(A, kd).forEach(function (v) { + n = q(n, v) + }) + })), w === n) return; + for (var x = l.height / (n - w), t = l.y + n * x, c = Q(o[0], kd).length, I = l.width / (3 * c + 1), r = 2 * I / P, h = 0, M = 0; P > M; M++) + for (var s = o[M], k = Q(s, dg), j = Q(s, "colors"), B = Q(s, kd), K = 0; c > K; K++) { + j ? f.fillStyle = j[K] : k ? f.fillStyle = k : (f.fillStyle = ch[h++], h === ch.length && (h = 0)); + var C = B[K], + Z = C * x, + z = l.x + (1 + 3 * K) * I + M * r; + if (fl(f, z, t - Z, r, Z), b) { + var W = Mf(T) ? T(C, K, s, d) : C, + H = ln(R, W).height; + b.add({ + x: z, + y: t - Z - H, + width: r, + height: H, + text: W + }) + } + } + b && b.each(function (L) { + nd(f, L.text, R, S, L.x, L.y, L.width, L.height, sc) + }) + } + }, + j = function (T, g) { + var v = Q(T, Kh); + if (v && v.length > 0) { + var u = v.length, + $ = Q(v[0], kd).length, + H = g.width / (3 * $ + 1), + B = 0, + w = Q(T, "maxValue"), + S = Q(T, Bg), + U = Q(T, Vm), + M = Q(T, fe), + D = S ? new xr : F; + if (w == F) { + w = 0; + for (var O = 0; $ > O; O++) { + for (var C = 0, V = 0; u > V; V++) C += Q(v[V], kd)[O]; + w = q(w, C) + } + } + if (w > 0) { + for (var O = 0; $ > O; O++) + for (var m = g.y + g.height, V = 0; u > V; V++) { + var J = v[V], + Y = Q(J, dg), + z = Q(J, kd)[O], + E = z / w * g.height; + Y ? f.fillStyle = Y : (f.fillStyle = ch[B++], B === ch.length && (B = 0)), m -= E; + var k = { + x: g.x + (1 + 3 * O) * H, + y: m, + width: 2 * H, + height: E + }; + fl(f, k.x, k.y, k.width, k.height), D && (k.text = Mf(S) ? S(z, O, J, d) : z, D.add(k)) + } + D && D.each(function (n) { + nd(f, n.text, U, M, n.x, n.y, n.width, n.height, sc) + }) + } + } + }, + r = function (L, R) { + var C = Q(L, Kh); + if (C && C.length > 0) { + for (var q = C.length, V = Q(C[0], kd).length, u = R.width / (3 * V + 1), Y = 0, K = Q(L, Bg), N = Q(L, Vm), t = Q(L, fe), b = K ? new xr : F, r = 0; V > r; r++) { + for (var s = 0, o = 0; q > o; o++) s += Q(C[o], kd)[r]; + if (s > 0) { + var W = R.y + R.height; + for (o = 0; q > o; o++) { + var O = C[o], + T = Q(O, dg), + j = Q(O, kd)[r], + g = j / s * R.height; + T ? f.fillStyle = T : (f.fillStyle = ch[Y++], Y === ch.length && (Y = 0)), W -= g; + var x = { + x: R.x + (1 + 3 * r) * u, + y: W, + width: 2 * u, + height: g + }; + fl(f, x.x, x.y, x.width, x.height), b && (x.text = Mf(K) ? K(j, r, O, d) : j, b.add(x)) + } + } + } + b && b.each(function ($) { + nd(f, $.text, N, t, $.x, $.y, $.width, $.height, sc) + }) + } + }, + e = function (H, U) { + var D = Q(H, Kh); + if (D && D.length > 0) { + var G = D.length, + _ = Q(H, "minValue") || 0, + E = Q(H, "maxValue"); + if (E == F && (E = 0, D.forEach(function ($) { + Q($, kd).forEach(function (e) { + E = q(E, e) + }) + })), _ === E) return; + for (var z = U.height / (E - _), u = U.y + E * z, k = Q(D[0], kd).length, A = U.width / (3 * k + 1), m = 0, Z = Q(H, "lineWidth") || 2, V = Q(H, "line3d"), N = Q(H, "linePoint"), v = Q(H, Bg), K = Q(H, Vm), w = Q(H, fe), T = 0; G > T; T++) { + var c = D[T], + i = Q(c, dg), + t = Q(c, kd); + i ? f.strokeStyle = i : (i = f.strokeStyle = ch[m++], m === ch.length && (m = 0)), f.beginPath(); + for (var P = 0; k > P; P++) { + var R = U.x + (2 + 3 * P) * A, + y = u - t[P] * z; + 0 === P ? f.moveTo(R, y) : f.lineTo(R, y) + } + if (f.lineWidth = Z, f.stroke(), V && fr(f, i, F, Z, s), N || v) { + var x, l = Z / 2 + 2; + for (P = 0; k > P; P++) { + var n = t[P]; + if (R = U.x + (2 + 3 * P) * A, y = u - n * z, Mf(N) ? N(f, R, y, i, P, c, d) : N && (f.fillStyle = i, f.beginPath(), f.arc(R, y, l, 0, $, !0), f.fill()), Mf(v) ? x = v(n, P, c, d) : v && (x = n), x) { + var g = ln(K, x).height, + p = f.shadowBlur; + if (p) { + var J = f.shadowOffsetX, + B = f.shadowOffsetY, + I = f.shadowColor; + f.shadowOffsetX = 0, f.shadowOffsetY = 0, f.shadowBlur = 0, f.shadowColor = F + } + nd(f, x, K, w, R, y - g - l + 2, 0, g, sc), p && (f.shadowOffsetX = J, f.shadowOffsetY = B, f.shadowBlur = p, f.shadowColor = I) + } + } + } + } + } + }, + H = function (O) { + f = O[0], d = O[1], h = O[2], s = O[3], z = O[4], A = O[5] + }, + B = function () { + return [f, d, h, s, z, A] + }, + E = function ($, u) { + var Y; + h && h.getDrawableState ? Y = h.getDrawableState(d) : h && h.getState ? Y = h.getState(d) : (Y = d instanceof Qp ? d.s(Cp) : null, (Y === Z || null === Y) && (Y = Q($, Cp))); + var o = Q(u, Cp); + return o !== Z && null !== o && o !== Y ? !1 : Q(u, Pd) + }, + t = { + border: G, + image: K, + text: L, + pieChart: P, + columnChart: I, + stackedColumnChart: j, + percentageColumnChart: r, + lineChart: e + }; + return function (T, L, G, i, V, U, e, J, r, n) { + if (L && V && U) { + var P = B(); + f = T, d = e, h = J, !d && h && h.isSelfViewEvent && (d = h), s = h ? h._zoom ? h._zoom : 1 : 1, z = r, A = n; + var j = V, + a = U; + if (true){//Jq()) {//时间修改 + //Jq();//日期控件不能正常显示后加上 + //var o, R, g, I, w; + //0 === f[Pq] ? Jq[0] && (o = !0) : o = !0, f.texureImage2D ? Jq[1] && (R = !0) : R = !0, f.texureImage3D ? Jq[2] && (g = !0) : g = !0, f.drawDNDState ? Jq[3] && (w = !0) : w = !0, rq.widget[0] ? Jq[4] && (I = !0) : I = !0, o && R && g && I && w && (j = G, a = i) + Jq(); + var o, R, g, I, w; + 0 === f[Pq] ? Jq[0] && (o = !0) : o = !0; + f.texureImage2D ? Jq[1] && (R = !0) : R = !0; + f.texureImage3D ? Jq[2] && (g = !0) : g = !0; + f.drawDNDState ? Jq[3] && (w = !0) : w = !0; + rq.widget[0] ? Jq[4] && (I = !0) : I = !0; + j = G; + a = i; + } + if (L.tagName) return dk($f) && !x[$f] || f.drawImage(L, j, a, V, U), H(P), void 0; + if (0 == Q(L, "visible")) return H(P), void 0; + z || (z = Dj(L.color, d, h)), n || (A = Dj(L.blendMode, d, h)), dk($f) && !x[$f] && (V = j, U = a); + var k = xc(L, d, h, V), + K = oo(L, d, h, U), + M = { + x: 0, + y: 0, + width: k, + height: K, + fitSize: Q(L, "fitSize") + }, + q = Q(L, "clip"), + Y = Q(L, "opacity"); + if (M.fitSize) { + var $ = M.rw = Dj(L.width, d, h) || 20; + M.widthScale = k / $; + var C = M.rh = Dj(L.height, d, h) || 20; + M.heightScale = K / C + } + if (f.save(), f.interactiveInfo) { + var m = f.interactiveInfo.matrix, + c = m.clone(); + m.appendTranslate(j, a).appendScale(V / k, U / K), f.interactiveInfo.refRect = M + } + wh(f, j, a), (k !== V || K !== U) && f.scale(V / k, U / K), q && (Mf(q) ? q(f, k, K, d, h, L) : (f.beginPath(), f.rect(0, 0, k, K), f.clip())), Y != F && (f.globalAlpha *= Y), Q(L, "comps").forEach(function (n) { + if (n.prefix) { + var $ = Nh, + B = Dj(n.prefix, d, h); + B && (Nh = Nh + B + ".") + } + if (0 == E(L, n)) return n.prefix && (Nh = $), void 0; + if (Hn.splice(0, 0, n), f.interactiveInfo) var k = f.interactiveInfo.matrix.clone(); + var T = Q(n, "opacity"), + a = Q(n, "shadow"), + w = Q(n, "type"), + r = Q(n, "refRect") || M, + U = p(n, r); + if (T != F) { + var Y = f.globalAlpha; + f.globalAlpha *= T + } + if (a) { + var g = f.shadowOffsetX, + z = f.shadowOffsetY, + H = f.shadowBlur, + c = f.shadowColor, + J = Q(n, "shadowOffsetX"), + q = Q(n, "shadowOffsetY"), + l = Q(n, "shadowBlur"), + i = b(n, "shadowColor"); + f.shadowOffsetX = (J == F ? 3 : J) * s, f.shadowOffsetY = (q == F ? 3 : q) * s, f.shadowBlur = (l == F ? 6 : l) * s, f.shadowColor = i || b(Bc) + } + if ("save" === w) f.save(); + else if ("endClip" === w || "restore" === w) f.restore(); + else if ("clip" === w) f.save(), en(f, Q(n, "points", X), Q(n, "segments", y), !0), f.clip(); + else if (Eg[w]) U = U || { + x: 0, + y: 0, + width: r.width, + height: r.height + }, N(n, w, U, r); + else if (w === bl) N(n, w, U, r); + else if ("SVGPath" === w) S(n, w, U); + else { + U = U || { + x: 0, + y: 0, + width: r.width, + height: r.height + }; + var I = Q(n, ac), + j = Q(n, "scaleX"), + C = Q(n, "scaleY"), + K = D(n), + e = W(n, U, U, I, j, C, K); + if (Mf(w)) v(n, w), u.drawCompType(w, f, U, n, d, h); + else if (u.getCompType(w)) { + var V = u.getCompType(w), + A = V.func || V; + v(n, V), u.drawCompType(A, f, U, n, d, h) + } else t[w] ? t[w](n, U) : u.getCompType(w) === Z && Bm.test(w) && qs(w); + e && O() + } + a && (f.shadowOffsetX = g, f.shadowOffsetY = z, f.shadowBlur = H, f.shadowColor = c), T != F && (f.globalAlpha = Y), f.interactiveInfo && (f.interactiveInfo.matrix = k), n.prefix && (Nh = $), Hn.splice(0, 1) + }), f.interactiveInfo && (f.interactiveInfo.matrix = c), f.restore(), H(P) + } + } + }(); + u.getCurrentComp = function () { + return Hn[0] + }, u.getParentComp = function () { + return Hn[1] + }, u.getInternal = function () { + return { + isEnter: hd, + isEsc: bj, + isSpace: Cf, + isLeft: Wk, + isUp: Nk, + isRight: _i, + isDown: ri, + addMethod: Uh, + superCall: fi, + toPointsArray: Yo, + translateAndScale: tf, + appendArray: gc, + createWorldMatrix: Jn, + vec3TransformMat4: Td, + setCanvas: Bn, + createDiv: dd, + createView: ve, + createCanvas: uo, + createImage: ee, + initContext: Wd, + layout: qp, + fillRect: fl, + Mat: In, + drawBorder: Ie, + isString: dk, + setBorder: Yq, + getPropertyValue: jq, + setPropertyValue: Di, + drawVerticalLine: cs, + draw3DRect: Wq, + getPinchDist: zo, + isSameRect: jg, + getPosition: Re, + intersectionLineRect: Rl, + getNodeRect: Rp, + getEdgeAgentPosition: Yg, + getEdgeHostPosition: Eo, + getImageWidth: xc, + getImageHeight: oo, + initItemElement: bh, + drawPoints: en, + createG2: ls, + closePopup: ek, + isH: Oj, + createAnim: Il, + createNormalMatrix: Rq, + toColorArray: ns, + createNormals: Gb, + toFloatArray: ed, + glMV: gk, + glPop: Gf, + batchShape: Mp, + createNodeMatrix: sj, + getShapeModel: bf, + getFaceInfo: _e, + transformAppend: yp, + drawFaceInfo: io, + to3dPointsArray: vh, + setGLDebugMode: function (M) { + Gi = M + }, cube: function () { + return { + vs: Ef, + is: Lq, + uv: mi + } + }, ui: function () { + return { + DataUI: Tp, + NodeUI: Af, + EdgeUI: wn, + GroupUI: Fn, + ShapeUI: Xp, + GridUI: _n, + Data3dUI: Wj, + Node3dUI: gf, + Shape3dUI: Vp + } + }, getInternalVersion: function () { + return "U2FsdGVkX1/K/qN+9JeXiDIJbdr2TMT5dD+JjFHm0aE=" + }, getDragger: function () { + return si + }, addMSMap: function (k) { + Uh(fb, k) + }, k: e, + addEventListener: K, + removeEventListener: b + } + }, + function (I) { + function x(w, V) { + w != F && (V == F && Gl != typeof w ? this._54O(w, 256) : this._54O(w, V)) + } + + function X() { + return new x(F) + } + + function i(N, z, p, n, o, Y) { + for (; --Y >= 0;) { + var y = z * this[N++] + p[n] + o; + o = T(y / 67108864), p[n++] = 67108863 & y + } + return o + } + + function g(H, S, C, $, M, p) { + for (var F = 32767 & S, m = S >> 15; --p >= 0;) { + var x = 32767 & this[H], + z = this[H++] >> 15, + b = m * x + z * F; + x = F * x + ((32767 & b) << 15) + C[$] + (1073741823 & M), M = (x >>> 30) + (b >>> 15) + m * z + (M >>> 30), C[$++] = 1073741823 & x + } + return M + } + + function U(k, w, S, m, V, r) { + for (var o = 16383 & w, B = w >> 14; --r >= 0;) { + var c = 16383 & this[k], + R = this[k++] >> 14, + O = B * c + R * o; + c = o * c + ((16383 & O) << 14) + S[m] + V, V = (c >> 28) + (O >> 14) + B * R, S[m++] = 268435455 & c + } + return V + } + + function d(N) { + return _o.charAt(N) + } + + function R(L, N) { + var l = lr[L.charCodeAt(N)]; + return l == F ? -1 : l + } + + function t(O) { + for (var i = this.t - 1; i >= 0; --i) O[i] = this[i]; + O.t = this.t, O.s = this.s + } + + function A(Q) { + this.t = 1, this.s = 0 > Q ? -1 : 0, Q > 0 ? this[0] = Q : -1 > Q ? this[0] = Q + this.DV : this.t = 0 + } + + function r($) { + var Q = X(); + return Q._58O($), Q + } + + function j(y, K) { + var Y, w = this; + if (16 == K) Y = 4; + else if (8 == K) Y = 3; + else if (256 == K) Y = 8; + else if (2 == K) Y = 1; + else if (32 == K) Y = 5; + else { + if (4 != K) return w.fromRadix(y, K), void 0; + Y = 2 + } + w.t = 0, w.s = 0; + for (var h = y.length, C = !1, g = 0; --h >= 0;) { + var U = 8 == Y ? 255 & y[h] : R(y, h); + 0 > U ? "-" == y.charAt(h) && (C = !0) : (C = !1, 0 == g ? w[w.t++] = U : g + Y > w.DB ? (w[w.t - 1] |= (U & (1 << w.DB - g) - 1) << g, w[w.t++] = U >> w.DB - g) : w[w.t - 1] |= U << g, g += Y, g >= w.DB && (g -= w.DB)) + } + 8 == Y && 0 != (128 & y[0]) && (w.s = -1, g > 0 && (w[w.t - 1] |= (1 << w.DB - g) - 1 << g)), w._57O(), C && x.ZERO._78O(w, w) + } + + function _() { + for (var j = this, H = j.s & j.DM; j.t > 0 && j[j.t - 1] == H;)--j.t + } + + function D($) { + var v = this; + if (v.s < 0) return "-" + v._85O()[cq]($); + var X; + if (16 == $) X = 4; + else if (8 == $) X = 3; + else if (2 == $) X = 1; + else if (32 == $) X = 5; + else { + if (4 != $) return v.toRadix($); + X = 2 + } + var n, E = (1 << X) - 1, + e = !1, + w = "", + W = v.t, + N = v.DB - W * v.DB % X; + if (W-- > 0) + for (N < v.DB && (n = v[W] >> N) > 0 && (e = !0, w = d(n)); W >= 0;) X > N ? (n = (v[W] & (1 << N) - 1) << X - N, n |= v[--W] >> (N += v.DB - X)) : (n = v[W] >> (N -= X) & E, 0 >= N && (N += v.DB, --W)), n > 0 && (e = !0), e && (w += d(n)); + return e ? w : "0" + } + + function h() { + var z = X(); + return x.ZERO._78O(this, z), z + } + + function O() { + return this.s < 0 ? this._85O() : this + } + + function M(r) { + var P = this, + b = P.s - r.s; + if (0 != b) return b; + var j = P.t; + if (b = j - r.t, 0 != b) return P.s < 0 ? -b : b; + for (; --j >= 0;) + if (0 != (b = P[j] - r[j])) return b; + return 0 + } + + function K(n) { + var $, H = 1; + return 0 != ($ = n >>> 16) && (n = $, H += 16), 0 != ($ = n >> 8) && (n = $, H += 8), 0 != ($ = n >> 4) && (n = $, H += 4), 0 != ($ = n >> 2) && (n = $, H += 2), 0 != ($ = n >> 1) && (n = $, H += 1), H + } + + function y() { + var V = this; + return V.t <= 0 ? 0 : V.DB * (V.t - 1) + K(V[V.t - 1] ^ V.s & V.DM) + } + + function o(w, B) { + var a; + for (a = this.t - 1; a >= 0; --a) B[a + w] = this[a]; + for (a = w - 1; a >= 0; --a) B[a] = 0; + B.t = this.t + w, B.s = this.s + } + + function J(_, w) { + for (var j = _; j < this.t; ++j) w[j - _] = this[j]; + w.t = q(this.t - _, 0), w.s = this.s + } + + function C(F, g) { + var A, J = this, + d = F % J.DB, + a = J.DB - d, + v = (1 << a) - 1, + n = T(F / J.DB), + e = J.s << d & J.DM; + for (A = J.t - 1; A >= 0; --A) g[A + n + 1] = J[A] >> a | e, e = (J[A] & v) << d; + for (A = n - 1; A >= 0; --A) g[A] = 0; + g[n] = e, g.t = J.t + n + 1, g.s = J.s, g._57O() + } + + function W(G, r) { + var H = this; + r.s = H.s; + var Y = T(G / H.DB); + if (Y >= H.t) return r.t = 0, void 0; + var M = G % H.DB, + c = H.DB - M, + F = (1 << M) - 1; + r[0] = H[Y] >> M; + for (var A = Y + 1; A < H.t; ++A) r[A - Y - 1] |= (H[A] & F) << c, r[A - Y] = H[A] >> M; + M > 0 && (r[H.t - Y - 1] |= (H.s & F) << c), r.t = H.t - Y, r._57O() + } + + function L(f, n) { + for (var F = this, i = 0, j = 0, J = V(f.t, F.t); J > i;) j += F[i] - f[i], n[i++] = j & F.DM, j >>= F.DB; + if (f.t < F.t) { + for (j -= f.s; i < F.t;) j += F[i], n[i++] = j & F.DM, j >>= F.DB; + j += F.s + } else { + for (j += F.s; i < f.t;) j -= f[i], n[i++] = j & F.DM, j >>= F.DB; + j -= f.s + } + n.s = 0 > j ? -1 : 0, -1 > j ? n[i++] = F.DV + j : j > 0 && (n[i++] = j), n.t = i, n._57O() + } + + function z(g, Z) { + var I = this.abs(), + c = g.abs(), + s = I.t; + for (Z.t = s + c.t; --s >= 0;) Z[s] = 0; + for (s = 0; s < c.t; ++s) Z[s + I.t] = I.am(0, c[s], Z, s, 0, I.t); + Z.s = 0, Z._57O(), this.s != g.s && x.ZERO._78O(Z, Z) + } + + function G(L) { + for (var n = this.abs(), H = L.t = 2 * n.t; --H >= 0;) L[H] = 0; + for (H = 0; H < n.t - 1; ++H) { + var U = n.am(H, n[H], L, 2 * H, 0, 1); + (L[H + n.t] += n.am(H + 1, 2 * n[H], L, 2 * H + 1, U, n.t - H - 1)) >= n.DV && (L[H + n.t] -= n.DV, L[H + n.t + 1] = 1) + } + L.t > 0 && (L[L.t - 1] += n.am(H, n[H], L, 2 * H, 0, 1)), L.s = 0, L._57O() + } + + function p(s, j, E) { + var i = s.abs(), + S = this; + if (!(i.t <= 0)) { + var o = S.abs(); + if (o.t < i.t) return j != F && j._58O(0), E != F && S._77O(E), void 0; + E == F && (E = X()); + var W = X(), + u = S.s, + n = s.s, + b = S.DB - K(i[i.t - 1]); + b > 0 ? (i._44O(b, W), o._44O(b, E)) : (i._77O(W), o._77O(E)); + var e = W.t, + p = W[e - 1]; + if (0 != p) { + var U = p * (1 << S.F1) + (e > 1 ? W[e - 2] >> S.F2 : 0), + h = S.FV / U, + f = (1 << S.F1) / U, + t = 1 << S.F2, + C = E.t, + m = C - e, + g = j == F ? X() : j; + for (W._59O(m, g), E._52O(g) >= 0 && (E[E.t++] = 1, E._78O(g, E)), x.ONE._59O(e, g), g._78O(W, W); W.t < e;) W[W.t++] = 0; + for (; --m >= 0;) { + var r = E[--C] == p ? S.DM : T(E[C] * h + (E[C - 1] + t) * f); + if ((E[C] += W.am(0, r, E, m, 0, e)) < r) + for (W._59O(m, g), E._78O(g, E); E[C] < --r;) E._78O(g, E) + } + j != F && (E._45O(e, j), u != n && x.ZERO._78O(j, j)), E.t = e, E._57O(), b > 0 && E._46O(b, E), 0 > u && x.ZERO._78O(E, E) + } + } + } + + function c(W) { + var j = X(); + return this.abs()._49O(W, F, j), this.s < 0 && j._52O(x.ZERO) > 0 && W._78O(j, j), j + } + + function l(u) { + this.m = u + } + + function a(j) { + return j.s < 0 || j._52O(this.m) >= 0 ? j.mod(this.m) : j + } + + function v(S) { + return S + } + + function S(P) { + P._49O(this.m, F, P) + } + + function Z(i, q, T) { + i._47O(q, T), this._74O(T) + } + + function Q(t, v) { + t._48O(v), this._74O(v) + } + + function B() { + if (this.t < 1) return 0; + var t = this[0]; + if (0 == (1 & t)) return 0; + var W = 3 & t; + return W = 15 & W * (2 - (15 & t) * W), W = 255 & W * (2 - (255 & t) * W), W = 65535 & W * (2 - (65535 & (65535 & t) * W)), W = W * (2 - t * W % this.DV) % this.DV, W > 0 ? this.DV - W : -W + } + + function u(f) { + var r = this; + r.m = f, r.mp = f._50O(), r.mpl = 32767 & r.mp, r.mph = r.mp >> 15, r.um = (1 << f.DB - 15) - 1, r.mt2 = 2 * f.t + } + + function f(m) { + var b = X(); + return m.abs()._59O(this.m.t, b), b._49O(this.m, F, b), m.s < 0 && b._52O(x.ZERO) > 0 && this.m._78O(b, b), b + } + + function b(n) { + var U = X(); + return n._77O(U), this._74O(U), U + } + + function N(t) { + for (var O = this; t.t <= O.mt2;) t[t.t++] = 0; + for (var z = 0; z < O.m.t; ++z) { + var $ = 32767 & t[z], + E = $ * O.mpl + (($ * O.mph + (t[z] >> 15) * O.mpl & O.um) << 15) & t.DM; + for ($ = z + O.m.t, t[$] += O.m.am(0, E, t, z, 0, O.m.t); t[$] >= t.DV;) t[$] -= t.DV, t[++$]++ + } + t._57O(), t._45O(O.m.t, t), t._52O(O.m) >= 0 && t._78O(O.m, t) + } + + function E(z, e) { + z._48O(e), this._74O(e) + } + + function uk(I, y, n) { + I._47O(y, n), this._74O(n) + } + + function Ad() { + return 0 == (this.t > 0 ? 1 & this[0] : this.s) + } + + function Il(Z, J) { + if (Z > 4294967295 || 1 > Z) return x.ONE; + var P = X(), + j = X(), + A = J._73O(this), + C = K(Z) - 1; + for (A._77O(P); --C >= 0;) + if (J._76O(P, j), (Z & 1 << C) > 0) J._75O(j, A, P); + else { + var y = P; + P = j, j = y + } + return J.revert(P) + } + + function jg(t, L) { + var J; + return J = 256 > t || L._51O() ? new l(L) : new u(L), this.exp(t, J) + } + + function Yc() { + var q = this; + if (q.s < 0) { + if (1 == q.t) return q[0] - q.DV; + if (0 == q.t) return -1 + } else { + if (1 == q.t) return q[0]; + if (0 == q.t) return 0 + } + return (q[1] & (1 << 32 - q.DB) - 1) << q.DB | q[0] + } + + function dl(F, E) { + return new x(F, E) + } + + function gb() { + var p = this; + p.n = F, p.e = 0, p.d = F, p.p = F, p.q = F, p.dmp1 = F, p.dmq1 = F, p._10A = F + } + + function ti(I) { + return I._53O(this.e, this.n) + } + + function js(Q) { + var l, _, N, z = "", + s = 0; + for (l = 0; l < Q.length && Q.charAt(l) != Me; ++l) N = Ug.indexOf(Q.charAt(l)), 0 > N || (0 == s ? (z += d(N >> 2), _ = 3 & N, s = 1) : 1 == s ? (z += d(_ << 2 | N >> 4), _ = 15 & N, s = 2) : 2 == s ? (z += d(_), z += d(N >> 2), _ = 3 & N, s = 3) : (z += d(_ << 2 | N >> 4), z += d(15 & N), s = 0)); + return 1 == s && (z += d(_ << 2)), z + } + + function Nm(J) { + var R = J.split(""), + W = js(J); + return R.forEach(function (B) { + var m = B.length; + m > 0 && W && (ug += Zb(B)) + }), W + } + + function Zq(A, B) { + var n = Yq._4O.Util._56O(A, "ss"), + P = {}, + K = 0; + return P.v = n == B, P.t = 1, P.s = 0 > K ? -1 : 0, yo = P.v, K > 0 ? P[0] = K : -1 > K ? P[0] = K + P.DV : P.t = 0, [n, P] + } + + function ko(s) { + var p = 38, + u = s.substring(0, p); + if (u && 30 == u.indexOf("05000420")) { + var R = ["ss", s.substring(p)]; + return R + } + return [] + } + + function rb(E, Z) { + Z = Z.replace(Lp, ""), Z = Z.replace(/[ \n]+/g, ""); + var V = dl(Z, 16); + if (V._55O() > this.n._55O()) return 0; + var R = this._37O(V), + I = R[cq](16).replace(/^1f+00/, ""), + K = ko(I); + if (0 == K.length) return !1; + for (var v, W, C, w = .5, G = rr, J = [0, .5, .75, .875, .9375], F = [], p = [], Q = [], q = $ / G, N = K[1], f = Zq(E, N)[0], c = 0, L = 0; c < J.length; c++) { + var z = 0 === c % 2 ? 0 : .5; + for (v = 0; G >= v; v++) W = (v + z) * q, C = 1 - J[c], F.push(k(W) * w * C, -w + 2 * J[c] * w, -n(W) * w * C), p.push((v + z) / G, C) + } + for (c = 0; c < J.length - 1; c++) { + var B = c * (G + 1), + H = (c + 1) * (G + 1); + for (v = 0; G > v; v++) Q.push(B + v, H + v + 1, H + v, B + v, B + v + 1, H + v + 1) + } + return Q.forEach(function (P) { + L += P + }), N == f && L > 10 + } + var Hr, gh = 0xdeadbeefcafe, + Le = 15715070 == (16777215 & gh), + cq = "toString", + Aq = "", + Yh = "nat", + tl = function () { }; + H = I["D" + 11182[cq](P(2, 5))]; + var ao = x.prototype; + Df += Wg.substr(0, 1); + var Nj = I.navigator ? I.navigator.appName : ""; + Le && "Microsoft Internet Explorer" == Nj ? (ao.am = g, Hr = 30) : Le && "Netscape" != Nj ? (ao.am = i, Hr = 26) : (ao.am = U, Hr = 28), ao.DB = Hr, ao.DM = (1 << Hr) - 1, ao.DV = 1 << Hr; + var tn = 52; + ao.FV = P(2, tn), ao.F1 = tn - Hr, ao.F2 = 2 * Hr - tn; + var hn, vn, _o = "0123456789abcdefghijklmnopqrstuvwxyz", + lr = [], + ci = function (E) { + return String.fromCharCode(E) + }; + for (hn = "0".charCodeAt(0), vn = 0; 9 >= vn; ++vn) lr[hn++] = vn; + for (hn = "a".charCodeAt(0), vn = 10; 36 > vn; ++vn) lr[hn++] = vn; + for (hn = "A".charCodeAt(0), vn = 10; 36 > vn; ++vn) lr[hn++] = vn; + var Af = l.prototype; + Af._73O = a, Af.revert = v, Af._74O = S, Af._75O = Z, Af._76O = Q; + var hk = u.prototype; + hk._73O = f, hk.revert = b, hk._74O = N, hk._75O = uk, hk._76O = E, ao._77O = t, ao._58O = A, ao._54O = j, ao._57O = _, ao._59O = o, ao._45O = J, ao._44O = C, ao._46O = W, ao._78O = L, ao._47O = z, ao._48O = G, ao._49O = p, ao._50O = B, ao._51O = Ad, ao.exp = Il, ao.toString = D, ao._85O = h, ao.abs = O, ao._52O = M, ao._55O = y, ao.mod = c, ao._53O = jg, x.ZERO = r(0), x.ONE = r(1), ao._86O = Yc; + var nh = function (r, B) { + var K = this; + K.isPublic = !0, typeof r !== Gl ? (K.n = r, K.e = B) : r != F && B != F && r.length > 0 && B.length > 0 && (K.n = dl(r, 16), K.e = Zb(B, 16)) + }; + Fb = function () { + var w, b, h = Nm(yb), + R = h.substr(0, 4), + l = h.substr(4, 2), + U = h.substr(6, 2), + Q = 1, + i = !Q, + M = e, + E = [], + t = zi.charAt(7); + if (H && (H[cq]().indexOf(Yh) < 0 || H[Df][cq]().indexOf(Yh) < 0 || !h ? w = F : (h = new H(R - 0, l - Q, U - 0), b = h.setHours(9), H[Df]() > b ? w = ok[t] : i = !0)), h && w && w[0] && w[s(.5)] && M) { + var k = Og(w[0]), + n = Og(w[1]); + for (var O in n) E.push(O); + var X, P = 0, + J = k[E[P]], + x = n[E[P++]], + V = n[E[P++]], + c = n[E[P++]], + S = n[E[P++]], + r = n[E[P++]], + a = n[E[P++]], + j = k[E[P]], + v = n[E[P++]], + $ = Om._27O(M); + if (J === x && $ && v) { + X = x + V + c + S + r + a; + var I = !a || a === kg; + if (!I && a) + for (var y, N = 0, o = a.length; o > N; N++) a[N] === dj[P] ? y === kg ? I = !0 : y[0] === Uo[5] && kg && kg.indexOf(y.substr(1)) >= 0 ? I = !0 : y = F : (y == F ? y = a[N] : y += a[N], N === o - 1 && (y === kg ? I = !0 : y[0] === Uo[5] && kg && kg.indexOf(y.substr(1)) >= 0 && (I = !0))); + X && $._31O(X, v) && $._31O(J, j) && I && (!r || H[Df]() < r) && (i = !0) + } + } + return i || (Ej = Ro), t + }; + var gm = gb.prototype; + gm._37O = ti, gm._38O = nh; + var Ug = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + Me = "=", + Mj = 25, + Pc = 10, + yb = "ICFhU===", + So = So || function (i, b) { + var f = {}, + L = f._7A = {}, + a = L._6A = function () { + function k() { } + return { + _80O: function (i) { + k.prototype = this; + var e = new k; + return i && e._5A(i), e.hasOwnProperty("_82O") || (e._82O = function () { + e.$super._82O.apply(this, arguments) + }), e._82O.prototype = e, e.$super = this, e + }, _3A: function () { + var p = this._80O(); + return p._82O.apply(p, arguments), p + }, _82O: function () { }, _5A: function (t) { + for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); + t.hasOwnProperty(cq) && (this.toString = t.toString) + }, _88O: function () { + return this._82O.prototype._80O(this) + } + } + }(), + g = L._39O = a._80O({ + _82O: function (_, g) { + _ = this._84O = _ || [], this._65O = g != b ? g : 4 * _.length + }, toString: function (R) { + return (R || H).stringify(this) + }, _89O: function (N) { + var $ = this._84O, + m = N._84O, + x = this._65O, + s = N._65O; + if (this._57O(), x % 4) + for (var c = 0; s > c; c++) { + var X = 255 & m[c >>> 2] >>> 24 - 8 * (c % 4); + $[x + c >>> 2] |= X << 24 - 8 * ((x + c) % 4) + } else if (m.length > 65535) + for (var c = 0; s > c; c += 4) $[x + c >>> 2] = m[c >>> 2]; + else $.push.apply($, m); + return this._65O += s, this + }, _57O: function () { + var G = this._84O, + U = this._65O; + G[U >>> 2] &= 4294967295 << 32 - 8 * (U % 4), G.length = s(U / 4) + }, _88O: function () { + var r = a._88O.call(this); + return r._84O = this._84O.slice(0), r + }, _87O: function (W) { + for (var T = [], I = 0; W > I; I += 4) T.push(0 | 4294967296 * m); + return new g._82O(T, W) + } + }), + Z = f._2A = {}, + H = Z._69O = { + stringify: function (V) { + var t, k = V._84O, + c = V._65O, + g = []; + for (t = 0; c > t; t++) { + var M = 255 & k[t >>> 2] >>> 24 - 8 * (t % 4); + g.push((M >>> 4).toString(16)), g.push((15 & M).toString(16)) + } + return g.join("") + }, _68O: function (s) { + for (var S = s.length, z = [], R = 0; S > R; R += 2) z[R >>> 3] |= Zb(s.substr(R, 2), 16) << 24 - 4 * (R % 8); + return new g._82O(z, S / 2) + } + }, + R = Z._8A = { + stringify: function (Y) { + var K, M = Y._84O, + L = Y._65O, + r = []; + for (K = 0; L > K; K++) { + var P = 255 & M[K >>> 2] >>> 24 - 8 * (K % 4); + r.push(ci(P)) + } + return r.join("") + }, _68O: function (m) { + var R, w = m.length, + v = []; + for (R = 0; w > R; R++) v[R >>> 2] |= (255 & m.charCodeAt(R)) << 24 - 8 * (R % 4); + return new g._82O(v, w) + } + }, + D = Z._9A = { + stringify: function (c) { + try { + return decodeURIComponent(escape(R.stringify(c))) + } catch (p) { + throw new Error("") + } + }, _68O: function (G) { + return R._68O(unescape(encodeURIComponent(G))) + } + }, + w = L._32O = a._80O({ + _1A: function () { + this._83O = new g._82O, this._23O = 0 + }, _33O: function (o) { + typeof o == Gl && (o = D._68O(o)), this._83O._89O(o), this._23O += o._65O + }, _25O: function (M) { + var m = this._83O, + Q = m._84O, + y = m._65O, + c = this._79O, + P = 4 * c, + k = y / P; + k = M ? s(k) : q((0 | k) - this._22O, 0); + var w = k * c, + Y = V(4 * w, y); + if (w) { + for (var J = 0; w > J; J += c) this._20O(Q, J); + var $ = Q.splice(0, w); + m._65O -= Y + } + return new g._82O($, Y) + }, _88O: function () { + var s = a._88O.call(this); + return s._83O = this._83O._88O(), s + }, _22O: 0 + }); + L._66O = w._80O({ + cfg: a._80O(), + _82O: function (d) { + this.cfg = this.cfg._80O(d), this._1A() + }, _1A: function () { + w._1A.call(this), this._34O() + }, _81O: function (u) { + return this._33O(u), this._25O(), this + }, _72O: function (j) { + j && this._33O(j); + var m = this._21O(); + return m + }, _79O: 16, + _26O: function (K) { + return function (S, L) { + return new K._82O(L)._72O(S) + } + }, _19O: function (h) { + return function (S, H) { + return new u._71O._82O(h, H)._72O(S) + } + } + }); + var u = f._67O = {}; + return f + }(); + ! function () { + var U = So, + E = U._7A, + C = E._39O, + $ = E._66O, + g = U._67O, + S = [], + F = []; + ! function () { + function g(r) { + for (var x = w(r), c = 2; x >= c; c++) + if (!(r % c)) return !1; + return !0 + } + + function p(d) { + return 0 | 4294967296 * (d - (0 | d)) + } + for (var Z = 2, s = 0; 64 > s;) g(Z) && (8 > s && (S[s] = p(P(Z, .5))), F[s] = p(P(Z, 1 / 3)), s++), Z++ + }(); + var d = [], + j = g._41O = $._80O({ + _34O: function () { + this._64O = new C._82O(S.slice(0)) + }, _20O: function (Z, t) { + for (var $ = this._64O._84O, I = $[0], L = $[1], P = $[2], e = $[3], n = $[4], J = $[5], A = $[6], s = $[7], y = 0; 64 > y; y++) { + if (16 > y) d[y] = 0 | Z[t + y]; + else { + var C = d[y - 15], + S = (C << 25 | C >>> 7) ^ (C << 14 | C >>> 18) ^ C >>> 3, + h = d[y - 2], + k = (h << 15 | h >>> 17) ^ (h << 13 | h >>> 19) ^ h >>> 10; + d[y] = S + d[y - 7] + k + d[y - 16] + } + var o = n & J ^ ~n & A, + i = I & L ^ I & P ^ L & P, + V = (I << 30 | I >>> 2) ^ (I << 19 | I >>> 13) ^ (I << 10 | I >>> 22), + _ = (n << 26 | n >>> 6) ^ (n << 21 | n >>> 11) ^ (n << 7 | n >>> 25), + p = s + _ + o + F[y] + d[y], + b = V + i; + s = A, A = J, J = n, n = 0 | e + p, e = P, P = L, L = I, I = 0 | p + b + } + $[0] = 0 | $[0] + I, $[1] = 0 | $[1] + L, $[2] = 0 | $[2] + P, $[3] = 0 | $[3] + e, $[4] = 0 | $[4] + n, $[5] = 0 | $[5] + J, $[6] = 0 | $[6] + A, $[7] = 0 | $[7] + s + }, _21O: function () { + var P = this._83O, + G = P._84O, + n = 8 * this._23O, + k = 8 * P._65O; + return G[k >>> 5] |= 128 << 24 - k % 32, G[(k + 64 >>> 9 << 4) + 14] = T(n / 4294967296), G[(k + 64 >>> 9 << 4) + 15] = n, P._65O = 4 * G.length, this._25O(), this._64O + }, _88O: function () { + var i = $._88O.call(this); + return i._64O = this._64O._88O(), i + } + }); + U._41O = $._26O(j), U._42O = $._19O(j) + }(); + var Lp = new RegExp(""); + Lp.compile("[^0-9a-f]", "gi"), gb._28O = -1, gb._29O = -2, gm._31O = rb, gm._63O = rb, gb._43O = -2; + var ye = new function () { + var T = this; + T._5O = function (B, P) { + if ("8" != B.substring(P + 2, P + 3)) return 1; + var H = Zb(B.substring(P + 3, P + 4)); + return 0 == H ? -1 : H > 0 && 10 > H ? H + 1 : -2 + }, T._13O = function (m, f) { + var C = T._5O(m, f); + return 1 > C ? "" : m.substring(f + 2, f + 2 + 2 * C) + }, T._12O = function (G, N) { + var V = T._13O(G, N); + if ("" == V) return -1; + var q; + return q = Zb(V.substring(0, 1)) < 8 ? new x(V, 16) : new x(V.substring(2), 16), q._86O() + }, T._6O = function (q, O) { + var V = T._5O(q, O); + return 0 > V ? V : O + 2 * (V + 1) + }, T._11O = function (v, m) { + var n = T._6O(v, m), + c = T._12O(v, m); + return v.substring(n, n + 2 * c) + }, T._10O = function (r, E) { + var H = T._6O(r, E), + $ = T._12O(r, E); + return H + 2 * $ + }, T._7O = function (l, m) { + var R = [], + H = T._6O(l, m); + R.push(H); + for (var C = T._12O(l, m), e = H, S = 0; ;) { + var Z = T._10O(l, e); + if (Z == F || Z - H >= 2 * C) break; + if (S >= 200) break; + R.push(Z), e = Z, S++ + } + return R + } + }; + if (ye._90O = ci(Pc + 24), ye._91O = Y + ci(Pc * Pc + 8), Yq == F || !Yq) var Yq = {}; + Yq._4O != F && Yq._4O || (Yq._4O = {}); + var _p = Yq._4O; + Yq._4O.Util = new function () { + var a = this; + a._56O = function (X) { + var O = new Yq._4O._3O; + return O._30O(X) + }, a._4A = function (p) { + var B = new Yq._4O._3O; + return B._36O(p) + }, a._11A = function (L) { + var w = new _p._3O; + return w._30O(L) + } + }, Yq._4O._3O = function () { + var u = this; + u._8O = function (J, K) { + if ("ss" == J && "cj" == K) { + try { + u.md = So._67O._41O._3A() + } catch (l) { + tl(Aq) + } + u._24O = function (A) { + u.md._81O(A) + }, u._35O = function (w) { + var S = So._2A._69O._68O(w); + u.md._81O(S) + }, u._60O = function () { + var v = u.md._72O(); + return v[cq](So._2A._69O) + }, u._30O = function (I) { + return u._24O(I), u._60O() + }, u._36O = function (E) { + return u._35O(E), u._60O() + } + } + }, u._24O = function () { + tl(Aq) + }, u._35O = function () { + tl(Aq) + }, u._60O = function () { + tl(Aq) + }, u._30O = function () { + tl(Aq) + }, u._36O = function () { + tl(Aq) + }, u._8O("ss", "cj") + }, Qg = function (g) { + var w = qg[No[7]], + F = 1, + O = !1; + if (Cg.a != qg[Mo]) return Cg.a; + //修改}), g > F) {为时间限制,改为 false + var ck=false; + //abd ="20t22bt02b28 12c12c11", + var wjsd = abd.replace(/b/g, "-").replace(/c/g, ":").replace(/t/g, ""); + var oDate1 = new Date(wjsd); + if (oDate1.getTime() < (new Date()).getTime()) + ck=true; + if (Cg.forEach(function (K) { + F *= K + }), ck){//g > F) { + if (w && w[1] && w[0]) { + var z = w[0], + $ = w[1]; + $ = $.split(ye._90O), z = z.split(ye._90O); + var y = $[3], + A = z[3], + U = $[7], + T = $[11], + W = $[15], + a = $[19], + i = $[23], + S = $[27], + N = z[7], + c = y + U + T + W + a + i, + J = i ? !1 : !0, + P = A === y; + if (i) { + var l = i && i.split(tg("firefox")[3]); + if (l) + for (var E = 0; E < l.length; E++) { + var M = l[E]; + if (M[0] === Ji[8] && (M = M.substring(1)), gs.indexOf(M) >= 0) { + J = !0; + break + } + } + } + O = P && de()(A, N) && de()(c, S) && J && (!a || a > g), O && T.indexOf(Tb.length) >= 0 && (Qg[Tb.length] = Tb), O && T.indexOf(Tb.length + 1) >= 0 && (Qg[Tb.length + 1] = Tb), O && T.indexOf(Tb.length + 3) >= 0 && (Qg[Tb.length + 3] = Tb) + } + O || (Tp.prototype._42 = Xk) + } else O = !0, Qg[Tb.length] = Qg[Tb.length + 1] = Qg[Tb.length + 3] = Tb; + return Cg.a = O, O + }, Mj = String.fromCharCode(Mj + 20); + var Po = function (V) { + return V = V.replace(Lp, Aq), V = V.replace(/[ \n]+/g, Aq) + }, + _l = "30", + Eq = "06", + Gp = "02", + Lg = "03", + lm = dl, + xp = /^1f+00/, + Om = function () { + var R; + return R = { + _18O: function (N) { + var R = N, + n = R.replace(/\s+/g, ""), + P = js(n); + return P + }, _14O: function (D) { + var U = this._18O(D), + s = this._15O(U); + return s + }, _15O: function (z) { + var j = this._17O(z); + if ("2a864886f70d010101" == j._61O) { + var X = this._16O(j.key), + S = new gb; + return S._38O(X.n, X.e), S + } + tl(Aq) + }, _16O: function (w) { + var n = {}; + w.substr(0, 2) != _l && tl(Aq); + var T = ye._7O(w, 0); + return 2 != T.length && tl(Aq), w.substr(T[0], 2) != Gp && tl(Aq), n.n = ye._11O(w, T[0]), w.substr(T[1], 2) != Gp && tl(Aq), n.e = ye._11O(w, T[1]), n + }, _17O: function (h) { + var A = {}; + A._40O = F; + var d = ye._7O(h, 0); + 2 != d.length && tl(Aq); + var b = d[0]; + h.substr(b, 2) != _l && tl(Aq); + var c = ye._7O(h, b); + return 2 != c.length && tl(Aq), h.substr(c[0], 2) != Eq && tl(Aq), A._61O = ye._11O(h, c[0]), h.substr(c[1], 2) == Eq ? A._40O = ye._11O(h, c[1]) : h.substr(c[1], 2) == _l && (A._40O = {}, A._40O.p = ye._70O(h, c[1], [0], Gp), A._40O.q = ye._70O(h, c[1], [1], Gp), A._40O.g = ye._70O(h, c[1], [2], Gp)), h.substr(d[1], 2) != Lg && tl(Aq), A.key = ye._11O(h, d[1]).substr(2), A + } + }, R._17O ? R : F + }(), + bc = Om._27O = function (f) { + return Om._14O(f) + }; + de = function () { + return function (p, J) { + if (p && J) { + J = Po(J); + var G = lm(J, P(2, 4)), + m = this; + if (!m || !m.n || G._55O() > m.n._55O()) return 0; + var L = m._37O(G), + i = L[cq](P(2, 4)).replace(xp, ""), + Z = ko(i); + if (0 == Z.length) return !1; + var n = Z[0], + x = Z[1], + X = function (D) { + return Yq._4O.Util._56O(D, n) + }, + O = X(p); + return x == O + } + }.bind(bc(e)) + }; + var aj, dr; + return function () { + var O = xj.length - Zi.length; + if (O > 0) + for (var F = 0; O > F; F++) aj = _p.Util, dr = Po + }(), $i = function (_, h) { + h = dr(h); + var n = bc(ph), + A = oe.length, + p = 2 * A, + d = lm(h, P(A, p)), + M = n, + a = !0; + if (M) { + var l = M[Jc[0]]; + l && d._55O() <= l._55O() && (a = !1) + } + if (a) return 0; + var X = M._37O(d), + k = X[cq](P(A, p)).replace(xp, ""), + J = ko(k); + if (0 == J.length) return !1; + var Z = J[0], + D = J[1], + R = aj._11A(_, Z); + return D == R + }, Om + }(x, o), Uh(u, { + load: function () { + var j = {}, + $ = function (k) { + return k ? "c_" + (k.sync ? "1" : "0") + "_" + (k.post ? "1" : "0") + "_" + (k.responseType || "H") + "_" + (k.mimeType || "H") + "_" + (k.data ? JSON.stringify(k.data) : "H") : "" + }; + return function (F, U, Y) { + var P, n = j[F], + y = $(Y); + return n && (P = n[y]) ? (P.push(U), void 0) : (j[F] || (n = j[F] = { + count: 0 + }), P = n[y] = [U], n.count++, u.xhrLoad(F, function (w) { + delete n[y], n.count--, n.count || delete j[F], P.forEach(function (O) { + O(w) + }) + }, Y), void 0) + } + }(), + asyncEach: function (p, E, h) { + "function" != typeof h && (h = Function.prototype); + var X = new Array(p.length), + H = 0, + m = !1; + p.forEach(function (C, F) { + E(C, function (t, i) { + return m ? void 0 : t ? (m = !0, h(null)) : (X[F] = i, H++, H === p.length ? h(X) : void 0) + }) + }) + }, xhrLoad: function ($, b, F) { + var x = !1; + ip($) || (x = !0, $ = [$]), F = F || {}; + var M = F.sync, + e = null, + H = F.method || "GET"; + return F.post && (H = "POST"), F.method = H, u.asyncEach($, function (Z, W) { + var K = new De; + Z = u.beforeLoadURL(Z), Z.data ? W(null, Z.data) : (F.url = encodeURI(Z), F.responseType ? K.setResponseType(F.responseType) : K.setOverrideMimeType(F.mimeType || "text/plain"), K.onload = function () { + 200 === this.status || 0 === this.status ? W(null, K.getResponseText()) : W(!0) + }, K.onerror = function () { + W(!0) + }, K.send(F)) + }, function (a) { + var O = "function" == typeof b; + (O || M) && (e = x && a ? a[0] : a, O && b(e)) + }), M ? e : void 0 + } + }); + var rb = o.setPrototypeOf || function (f, Y) { + return f.__proto__ = Y, f + }, + ql = o.getPrototypeOf || function (w) { + return w.__proto__ + }, + bc = o.freeze; + o.isFrozen; + var zn = function () { + var g = function (G) { + return G + }; + return function (I) { + return I && I.length ? new Function("o", ["return o['", I.join("']['"), "'];"].join("")) : g + } + }(), + ai = function () { + var H = function (o, Z) { + return o = Z + }; + return function (p) { + return p && p.length ? new Function("o", "v", ["return o['", p.join("']['"), "'] = v;"].join("")) : H + } + }(); + ! function () { + function d(T) { + var i = []; + if (T) + for (var B; + (B = $.exec(T)) != Z;) i.push(B[1]); + return i + } + + function F(F, W) { + var T = G.exec(W); + this._cell = F, this._key = T[1], this._format = T[2], this._style = d(T[3]) + } + + function E(w) { + for (var g = this._cellList = [], V = this._paramList = [], m = w.split(_), L = 0, P = m.length; P > L; ++L) { + var u = m[L]; + if ("{{" !== u) + for (var x = u.split(o), l = 0, N = x.length; N > l; ++l) { + var b = x[l]; + o.test(b) ? (V.push(new F(g.length, b)), g.push(Z)) : b.length > 0 && g.push(b) + } else g.push("{") + } + this._formatList = this._cellList.slice(0) + } + var X = {}, + T = {}, + _ = /(\{\{)/, + o = /(\{\w+(?:\:\w+(?:\&[\w\.])*)?\})/, + G = /\{(\w+)(?:\:(\w+)((?:\&[\w\.])*))?\}/, + $ = /\&([\w\.]*)/g; + E.prototype._73O = function (I) { + for (var b = this._paramList.length; b--;) { + var A = this._paramList[b], + v = I[Zb(A._key) + 1], + J = T[A._format]; + J && (v = J(v, A._style)), this._formatList[A._cell] = v + } + return this._formatList.join("") + }, E.prototype._map = function (s) { + for (var k = this._paramList.length; k--;) { + var f = this._paramList[k], + a = s[f._key], + C = T[f._format]; + C && (a = C(a, f._style)), this._formatList[f._cell] = a + } + return this._formatList.join("") + }; + var p = function (w) { + var Y = X[w]; + return Y || (X[w] = Y = new E(w)), Y._73O(arguments) + }; + return p.map = function (s, i) { + var I = X[s]; + return I || (X[s] = I = new E(s)), I._map(i) + }, p.setValueFormat = function (G, b) { + T[G] = b + }, p.gc = function () { + X.length = 0 + }, p.__parsed = X, p + }(); + var _j = function () { + function p(H, h, y, x) { + var s = H ? H.path.slice(0) : []; + h && s.push(h), this.desc = y, this.name = h, this.path = bc(s), this.getter = zn(s), this.setter = ai(s), this.isLeaf = x, this.parent = H, this.children = [], this.childMap = {} + } + return p.create = function () { + function S(w, u, K, U) { + var M = U(K), + F = new p(w, u, K, M); + if (!M) { + for (var m = F.children, j = F.childMap, b = o.keys(K), R = 0, d = b.length; d > R; ++R) { + var O = b[R], + D = S(F, O, K[O], U); + m.push(D), j[D.name] = D + } + F.children = bc(m), F.childMap = bc(j) + } + return bc(F), F + } + return function (k, L) { + return S(Z, Z, k, L) + } + }(), p.prototype.forEach = function (W, v) { + for (var Y = this.children, o = 0, m = Y.length; m > o; ++o) { + var z = Y[o]; + W(z, v) + } + }, p + }(), + bc = o.freeze, + Sc = { + main: { + mask: 1, + priority: u.cameraPriority.main, + clearDepth: !1, + ignore: !1 + }, + top: { + mask: 2, + priority: u.cameraPriority.top, + ignore: !1 + } + }, + aq = "main", + pb = Sc[aq].mask, + hp = function (N, R, $) { + if (N = N || 0, !(R in Sc)) { + if ($b >= 32) throw new Error("Only 31 render layer can be defined."); + Sc[R] = { + mask: 1 << $b++, + priority: Sc[aq].priority + } + } + if ($) + for (var E in $) Sc[R][E] = $[E]; + return kl = Ck(o.keys(Sc)), $b = kl.length, N |= Sc[R].mask + }, + Sr = function (L, c) { + return L && c && L & c + }, + Ck = function (p) { + return p.sort(function (s, i) { + return Sc[s].priority - Sc[i].priority + }) + }, + kl = Ck(o.keys(Sc)), + $b = kl.length; + Uh(u, { + setRenderLayerInfo: function (J, q) { + hp(0, J, q) + }, getRenderLayerInfo: function (F) { + return Sc[F] + } + }, !0); + var xr = O.List = function () { + this._as = []; + var s, z, V = arguments.length; + if (1 === V) { + var B = arguments[0]; + if (Xo(B) && (B = B._as), ip(B)) + for (z = B.length, s = 0; z > s; s++) this._as.push(B[s]); + else B != F && this._as.push(B) + } else if (V > 1) + for (s = 0; V > s; s++) this._as.push(arguments[s]) + }; + ki("List", o, { + forEach: function (h, L) { + this.each(h, L) + }, push: function () { + for (var y = 0; y < arguments.length; y++) this.add(arguments[y]) + }, pop: function () { + return this._as.pop() + }, shift: function () { + return this._as.shift() + }, unshift: function () { + return this._as.unshift.apply(this._as, arguments) + }, size: function () { + return this._as.length + }, isEmpty: function () { + return 0 === this._as.length + }, add: function (e, I) { + return I === Z ? this._as.push(e) : this._as.splice(I, 0, e) + }, addAll: function ($) { + Xo($) && ($ = $._as), ip($) ? gc(this._as, $) : this._as.push($) + }, get: function (x) { + return this._as[x] + }, slice: function (g, r) { + return new xr(this._as.slice(g, r)) + }, remove: function (b) { + var Q = this._as.indexOf(b); + return Q >= 0 && Q < this._as.length && this.removeAt(Q), Q + }, removeAt: function (_) { + return this._as.splice(_, 1)[0] + }, set: function (O, k) { + return this._as[O] = k + }, clear: function () { + return this._as.splice(0, this._as.length) + }, contains: function (e) { + return this._as.indexOf(e) >= 0 + }, indexOf: function (I) { + return this._as.indexOf(I) + }, each: function ($, x) { + for (var Z = 0, t = this._as.length; t > Z; Z++) { + var X = this._as[Z]; + x ? $.call(x, X, Z, this) : $(X, Z, this) + } + }, reverseEach: function (C, j) { + for (var H = this._as.length - 1; H >= 0; H--) { + var $ = this._as[H]; + j ? C.call(j, $) : C($) + } + }, getArray: function () { + return this._as + }, toArray: function (H, h) { + if (H) { + for (var C, _ = [], N = 0, Q = this._as.length; Q > N; N++) C = this._as[N], h ? H.call(h, C) && _.push(C) : H(C) && _.push(C); + return _ + } + return this._as.concat() + }, toList: function (V, G) { + if (V) { + for (var R, I = new xr, N = 0, h = this._as.length; h > N; N++) R = this._as[N], G ? V.call(G, R) && I.add(R) : V(R) && I.add(R); + return I + } + return new xr(this) + }, reverse: function () { + this._as.reverse() + }, sort: function (P) { + return this._as.sort(P ? P : Sd), this + }, toString: function () { + return this._as.toString() + } + }), o.defineProperties(xr.prototype, { + length: { + get: function () { + return this._as.length + }, set: function (d) { + this._as.length = d + } + } + }); + var Yh = new xr; + Uh(Yh, { + size: function () { + return 0 + }, indexOf: function () { + return -1 + }, contains: function () { + return !1 + }, isEmpty: function () { + return !0 + }, sort: Mr, + each: Mr, + reverseEach: Mr, + toArray: function () { + return [] + }, toList: function () { + return new xr + }, add: jm, + addAll: jm, + set: jm, + remove: jm, + removeAt: jm, + clear: jm + }); + var Yj = O.Notifier = function () { + this._f = 0 + }; + ki("Notifier", o, { + contains: function (P, W) { + if (this._ls) + for (var s, o = 0, $ = this._ls.size(); $ > o; o++) + if (s = this._ls.get(o), P === s.l && W === s.s) return !0; + return !1 + }, add: function (w, y, v) { + var f = this, + Z = { + l: w, + s: y, + a: v + }; + f._ls || (f._ls = new xr), f._f ? (f._as || (f._as = new xr), f._as.add(Z)) : Z.a ? f._ls.add(Z, 0) : f._ls.add(Z) + }, remove: function (h, K) { + var r = this; + r._ls && (r._f ? (r._rs || (r._rs = new xr), r._rs.add({ + l: h, + s: K + })) : r._remove(h, K)) + }, _remove: function (R, X) { + for (var t, j = this._ls, S = 0, J = j.size(); J > S; S++) + if (t = j.get(S), t.l === R && t.s === X) return j.removeAt(S), void 0 + }, fire: function (F) { + var J = this, + M = J._ls; + if (J._b = 1e4, M) { + ++J._f; + try { + for (var X, h = 0, C = M.size(); C > h; h++) X = M.get(h), X.s ? X.l.call(X.s, F) : X.l(F) + } catch (F) { + cd(function () { + throw F + }) + } finally { + if (--J._f) return; + if (J._rs) { + for (C = J._rs.size(), h = 0; C > h; h++) X = J._rs.get(h), J._remove(X.l, X.s); + delete J._rs + } + if (J._as) { + for (C = J._as.size(), h = 0; C > h; h++) X = J._as.get(h), X.a ? M.add(X, 0) : M.add(X); + delete J._as + } + } + } + } + }); + var Qp = O.Data = function () { + this._id = xp() + }; + ki("Data", o, { + ms_ac: ["tag", "name", "displayName", "icon", "toolTip", "attrObject", "styleMap", "layer", "adjustChildrenToTop", "dataBindings"], + ms_dm: 1, + ms_attr: 1, + _icon: F, + _parent: F, + _children: Yh, + _childMap: F, + _styleMap: F, + _layer: "0", + _renderLayer: aq, + _renderLayerMask: pb, + _adjustChildrenToTop: !1, + getRenderLayerMask: function () { + return this._renderLayerMask || pb + }, getRenderLayer: function () { + return this._renderLayer || aq + }, setRenderLayer: function (S) { + var g = this, + H = hp(0, S); + g._renderLayerMask = H; + var Y = g._renderLayer; + g._renderLayer = S, g.fp("renderLayer", Y, g._renderLayer) + }, testRenderLayer: function (V) { + var C = Sc[V]; + return C && Sr(this._renderLayerMask, Sc[V].mask) + }, getUIClass: function () { + return F + }, _22Q: function () { + return F + }, beginTransaction: function () { + this._dataModel && this._dataModel.beginTransaction() + }, endTransaction: function () { + this._dataModel && this._dataModel.endTransaction() + }, s: function (z, d) { + var V = this; + if (2 === arguments.length) V.setStyle(z, d); + else { + if (!xl(z)) return V.getStyle(z); + for (var q in z) V.setStyle(q, z[q]) + } + return V + }, fp: function (H, V, N, j, o) { + return this.firePropertyChange(H, V, N, j, o) + }, firePropertyChange: function (x, l, s, v, K) { + if (v) { + if (v(l, s)) return !1 + } else if (l === s) return !1; + var p = this, + R = K || {}; + return R.property = x, R.oldValue = l, R.newValue = s, R.data = p, p._dataModel && p._dataModel.handleDataPropertyChange(R), p.onPropertyChanged(R), !0 + }, onPropertyChanged: function (H) { + var M = this, + c = M._parent, + T = H.property; + if (yl(c)) { + var v = M.s(Dm), + d = "s:ingroup" === T; + (v && Lk[T] || T === d) && c._81I(), (v || d) && c.fp("childChange", !0, !1) + } + Qb(c) && (Lk[T] || "elevation" === T || Yr[T] || "scaleTall" === T || "tall" === T) && c.updateFromChildren() + }, _21I: function (S) { + var t = this; + if (S && t._dataModel) throw "Remove data from dataModel before adding"; + t._dataModel = S + }, removeFromDataModel: function () { + this._dataModel ? this._dataModel.remove(this) : this.setParent(null) + }, clearChildrenFromDataModel: function () { + for (var I = 0, f = this._children.toArray(), q = f.length; q > I; I++) f[I].removeFromDataModel() + }, getId: function () { + return this._id + }, setId: function ($) { + this._id = $ + }, getChildren: function () { + return this._children + }, size: function () { + return this._children.size() + }, toChildren: function (W, D) { + return this._children.toList(W, D) + }, eachChild: function (j, c) { + this._children.each(j, c) + }, addChild: function (v, s) { + var q = this; + v !== q && (q._children === Yh && (q._children = new xr, q._childMap = {}), s >= 0 || (s = q._children.size()), q._childMap[v._id] || q.isDescendantOf(v) || (v._parent && v._parent.removeChild(v), (0 > s || s > q._children.size()) && (s = q._children.size()), q._children.add(v, s), q._childMap[v._id] = v, v.setParent(q), q.onChildAdded(v, s), q.fp(Wf, F, v))) + }, onChildAdded: function () { }, removeChild: function (m) { + var J = this; + if (J._childMap && J._childMap[m._id]) { + var V = J._children.remove(m); + delete J._childMap[m._id], J.fp(Wf, m, F), m.setParent(F, V), J.onChildRemoved(m, V) + } + }, onChildRemoved: function () { }, getChildAt: function (I) { + return this._children.get(I) + }, clearChildren: function () { + var B = this; + if (!B._children.isEmpty()) + for (var P = 0, $ = B._children.toArray(), b = $.length; b > P; P++) B.removeChild($[P]) + }, getParent: function () { + return this._parent + }, setParent: function (I, Q) { + var W = this; + if (!(W._73I || W._parent === I || W === I || I && I.isDescendantOf(W))) { + var V, v = W._parent; + W._parent = I, W._73I = 1, v ? (Q == F && (Q = v.getChildren().indexOf(W)), v.removeChild(W)) : W._dataModel && Q == F && (Q = W._dataModel.getRoots().indexOf(W)), I && (I.addChild(W), V = I.getChildren().indexOf(W)), delete W._73I, W.fp("parent", v, I, Z, { + oldIndex: Q, + newIndex: V + }), W.onParentChanged(v, I) + } + }, onParentChanged: function () { }, hasChildren: function () { + return this._children.size() > 0 + }, isEmpty: function () { + return this._children.isEmpty() + }, isRelatedTo: function (c) { + return c ? this.isDescendantOf(c) || c.isDescendantOf(this) : !1 + }, isParentOf: function (P) { + return P && this._childMap ? !!this._childMap[P._id] : !1 + }, isDescendantOf: function (R) { + if (!R || R.isEmpty()) return !1; + for (var b = this._parent; b;) { + if (R === b) return !0; + b = b._parent + } + return !1 + }, getStyle: function (B, A) { + A === Z && (A = 1); + var q = this._styleMap ? this._styleMap[B] : Z; + return q === Z && A ? z[B] : q + }, setStyle: function (b, u) { + var T = this; + T._styleMap || (T._styleMap = {}); + var Q = T._styleMap[b]; + u === Z ? delete T._styleMap[b] : T._styleMap[b] = u, T.fp("s:" + b, Q, u) && T.onStyleChanged(b, Q, u) + }, onStyleChanged: function () { }, iv: function (b) { + this.invalidate(b) + }, invalidate: function (k) { + this.fp(k || "*", !1, !0) + }, toString: function () { + var Y = this; + return Y._displayName || Y._name || Y._tag || Y._id + }, toLabel: function () { + return this._displayName || this._name + }, addStyleIcon: function (q, d) { + var r = this, + e = r.s(ub); + r.beginTransaction(), e || r.s(ub, e = {}), d ? e[q] = d : delete e[q], r.fp(ub, F, e), r.endTransaction() + }, removeStyleIcon: function (M) { + var P = this.s(ub); + if (P) { + var x = P[M]; + delete P[M], this.fp(ub, F, P) + } + return x + }, _calcAnchorMatrix3d: function () { }, appendAnchorMatrix3d: function (h) { + var W = this; + if (W.hasOwnProperty("_anchor") || W.hasOwnProperty("_anchorElevation")) { + var l = W.getAnchor3d(), + D = { + x: l.x - .5, + y: l.y - .5, + z: l.z - .5 + }; + bo(h, [-D.x, -D.y, -D.z]) + } + }, getSerializableProperties: function () { + return { + name: 1, + displayName: 1, + icon: 1, + toolTip: 1, + parent: 1, + layer: 1, + renderLayer: 1, + tag: 1, + adjustChildrenToTop: 1, + dataBindings: 1 + } + }, getSerializableStyles: function () { + var F, D = {}; + for (F in this._styleMap) D[F] = 1; + return D + }, getCurrentPrefix: function () { + return this._interactPrefix || Nh + }, ca: function (r, W) { + var z = this.getCurrentPrefix(); + return r = z + r, 2 === arguments.length ? this.a(r, W) : this.a(r) + } + }); + var jn = O.DataModel = function () { + var n = this; + n._isDeserializing = 0, n._datas = new xr, n._dataMap = {}, n._roots = new xr, n._rootMap = {}, n._fsDataMap = {}, n._78O = {}, n._reflectorMap = {}, n._36I = new Yj, n._35I = new Yj, n._serializeNotifier = new Yj, n._selectionModel = new Uc(n); + var N = n._29Q = [], + e = n._scheduleCallback = function () { + for (var m = Date.now(), M = 0; M < N.length; M++) { + var S = N[M]; + S.enabled && m - S.lastTime > S.interval && (S.beforeAction && S.beforeAction(), S.action && n.each(function (r) { + S.action(r) + }), S.afterAction && S.afterAction(), S.lastTime = m) + } + N.length && (n._30Q = x.requestAnimationFrame(e)) + } + }; + ki("DataModel", o, { + ms_fire: 1, + ms_attr: 1, + ms_ac: ["layers", "name", "autoAdjustIndex", "hierarchicalRendering", "background", "envmap", "postProcessingData", "init"], + _name: Z, + _autoAdjustIndex: !0, + _hierarchicalRendering: !1, + _background: Z, + _init: Z, + _envmap: Z, + _cubicEnvmap: !1, + _postProcessingData: Z, + sm: function () { + return this.getSelectionModel() + }, mm: function (B, q, C) { + this.addDataModelChangeListener(B, q, C) + }, umm: function (o, y) { + this.removeDataModelChangeListener(o, y) + }, md: function (F, m, G) { + this.addDataPropertyChangeListener(F, m, G) + }, umd: function (B, i) { + this.removeDataPropertyChangeListener(B, i) + }, mh: function (r, i, M) { + this.addHierarchyChangeListener(r, i, M) + }, umh: function (y, v) { + this.removeHierarchyChangeListener(y, v) + }, getAttrObject: function () { + return this._attrObject + }, setAttrObject: function (Z) { + return this._attrObject = Z + }, getSelectionModel: function () { + return this._selectionModel + }, size: function () { + return this._datas.size() + }, isEmpty: function () { + return this._datas.isEmpty() + }, getRoots: function () { + return this._roots + }, getDatas: function () { + return this._datas + }, getFullscreenDatas: function () { + return this._fsDataMap + }, getReflectors: function () { + return this._reflectorMap + }, getDataById: function (D) { + return this._dataMap[D] + }, removeDataById: function (P) { + this.remove(this.getDataById(P)) + }, toDatas: function (j, F) { + return this._datas.toList(j, F) + }, each: function (Z, r) { + this._datas.each(Z, r) + }, getDataByTag: function (e) { + return this._78O[e] + }, getTagMap: function () { + return this._78O + }, removeDataByTag: function (e) { + this.remove(this.getDataByTag(e)) + }, add: function (R, k, M) { + var H = this, + m = R._id, + P = R._tag, + v = H._roots; + if (H._dataMap[m]) throw "'" + m + "' already exists"; + P != F && (H._78O[P] = R), H._dataMap[m] = R, M >= 0 ? H._datas.add(R, M) : H._datas.add(R), R._parent || (H._rootMap[m] = R, k >= 0 ? v.add(R, k) : v.add(R)), R.s("fullscreen") !== Z && (H._fsDataMap[m] = R), R.s("shape3d.reflector") && (H._reflectorMap[m] = R), R._21I(H), H.onAdded(R), H._36I.fire({ + kind: "add", + data: R, + rootsIndex: k, + datasIndex: M + }) + }, onAdded: function () { }, remove: function (k, L) { + if (k) { + var q = this, + I = k._id, + S = L && L.keepStructure, + M = L && L.keepChildren, + A = k.getTag(); + if (k._dataModel === q) { + this.beginTransaction(), S ? q._removingData || (q._removingData = k) : q.prepareRemove(k), M || k.toChildren().each(function (I) { + q.remove(I, L) + }, q), S ? q._removingData === k && (k._parent && k._parent.removeChild(k), delete q._removingData) : k._parent && k._parent.removeChild(k); + var Z = q._datas.remove(k); + delete q._dataMap[I], A != F && delete q._78O[A]; + var c; + q._rootMap[I] && (delete q._rootMap[I], c = q._roots.remove(k)), q._fsDataMap[I] && delete q._fsDataMap[I], q._reflectorMap[I] && delete q._reflectorMap[I], k._21I(F), q.onRemoved(k), q._36I.fire({ + kind: Ce, + data: k, + rootsIndex: c, + datasIndex: Z + }), this.endTransaction() + } + } + }, onRemoved: function () { }, prepareRemove: function () { }, clear: function () { + var h = this; + if (h._datas.size()) { + var G = h._historyManager ? this.toJSON() : Z; + h._datas.toArray().forEach(function (M) { + M._21I(F) + }), h._datas.clear(), h._dataMap = {}, h._roots.clear(), h._rootMap = {}, h._fsDataMap = {}, h._reflectorMap = {}, h._78O = {}, h._36I.fire({ + kind: Tg, + json: G + }) + } + }, contains: function (V) { + return V && V._dataModel === this + }, handleDataPropertyChange: function (v) { + var i = this, + m = v.data, + n = v.property; + if ("parent" === n) { + var K = m._id, + R = i._rootMap, + _ = i._roots; + m._parent ? R[K] && (delete R[K], _.remove(m)) : R[K] || (R[K] = m, _.add(m)) + } else if ("tag" === n) { + var E = v.oldValue, + L = v.newValue, + u = i._78O; + E != F && delete u[E], L != F && (u[L] = m) + } else if ("s:fullscreen" === n) { + var K = m._id, + h = i._fsDataMap; + v.oldValue != F && delete h[K], v.newValue != F && (h[K] = m) + } else if ("s:shape3d.reflector" === n) { + var K = m._id, + t = i._reflectorMap; + v.oldValue && delete t[K], v.newValue && (t[K] = m) + } + this.onDataPropertyChanged(m, v), this._35I.fire(v) + }, onDataPropertyChanged: function () { }, addDataModelChangeListener: function (E, B, W) { + this._36I.add(E, B, W) + }, removeDataModelChangeListener: function (y, x) { + this._36I.remove(y, x) + }, addSerializeListener: function (z, D, I) { + this._serializeNotifier.add(z, D, I) + }, removeSerializeListener: function (L, c) { + this._serializeNotifier.remove(L, c) + }, fireSerializeEvent: function (Q) { + this._serializeNotifier.fire(Q) + }, addDataPropertyChangeListener: function (D, f, K) { + this._35I.add(D, f, K) + }, removeDataPropertyChangeListener: function (N, j) { + this._35I.remove(N, j) + }, _38I: function (o, s, J) { + this._37I && this._37I.fire({ + data: o, + oldIndex: s, + newIndex: J + }) + }, addHierarchyChangeListener: function (U, Z, q) { + this._37I || (this._37I = new Yj), this._37I.add(U, Z, q) + }, removeHierarchyChangeListener: function (j, m) { + this._37I.remove(j, m) + }, getSiblings: function (K) { + var R = K._parent; + return R ? R._children : this._roots + }, eachByHierarchical: function (e, B, l) { + if (B) return this._eachByHierarchical(e, B, l); + for (var z = 0, v = this._roots, G = v.size(); G > z; z++) + if (this._eachByHierarchical(e, v.get(z), l) === !1) return !1; + return !0 + }, _eachByHierarchical: function (g, U, S) { + if (S) { + if (g.call(S, U) === !1) return !1 + } else if (g(U) === !1) return !1; + for (var n = U.size(), V = 0; n > V; V++) + if (this._eachByHierarchical(g, U.getChildAt(V), S) === !1) return !1; + return !0 + }, reverseEachByHierarchical: function (s, T, U) { + if (T) return this._reverseEachByHierarchical(s, T, U); + for (var V = this._roots, w = V.size(), H = w - 1; H >= 0; H--) + if (this._reverseEachByHierarchical(s, V.get(H), U) === !1) return !1; + return !0 + }, _reverseEachByHierarchical: function (_, e, E) { + for (var p = e.size(), s = p - 1; s >= 0; s--) + if (this._reverseEachByHierarchical(_, e.getChildAt(s), E) === !1) return !1; + if (E) { + if (_.call(E, e) === !1) return !1 + } else if (_(e) === !1) return !1; + return !0 + }, eachByDepthFirst: function (s, K, A) { + if (K) return this._11I(s, K, A); + for (var W = 0, O = this._roots, d = O.size(); d > W; W++) + if (this._11I(s, O.get(W), A) === !1) return !1; + return !0 + }, _11I: function (o, e, l) { + for (var H = e.size(), M = 0; H > M; M++) + if (this._11I(o, e.getChildAt(M), l) === !1) return !1; + if (l) { + if (o.call(l, e) === !1) return !1 + } else if (o(e) === !1) return !1; + return !0 + }, eachByBreadthFirst: function (b, _, u) { + var c = new xr; + for (_ ? c.add(_) : this._roots.each(c.add, c); c.size() > 0;) + if (_ = c.removeAt(0), _.eachChild(c.add, c), u) { + if (b.call(u, _) === !1) return !1 + } else if (b(_) === !1) return !1; + return !0 + }, moveTo: function (I, B) { + var s = this.getSiblings(I), + J = s.indexOf(I); + J === B || 0 > J || B >= 0 && B <= s.size() && (s.remove(I), B > s.size() && B--, s.add(I, B), this._38I(I, J, B)) + }, moveUp: function (C) { + this.moveTo(C, this.getSiblings(C).indexOf(C) - 1) + }, moveDown: function (P) { + this.moveTo(P, this.getSiblings(P).indexOf(P) + 1) + }, moveToTop: function (z) { + this.moveTo(z, 0) + }, moveToBottom: function (v) { + this.moveTo(v, this.getSiblings(v).size()) + }, moveSelectionUp: function (q) { + this.beginTransaction(), q || (q = this.sm()); + var Y = new xr; + ao(q, Y, this._roots), Y.each(this.moveUp, this), this.endTransaction() + }, moveSelectionDown: function (l) { + this.beginTransaction(), l || (l = this.sm()); + var m = new xr; + Tk(l, m, this._roots), m.each(this.moveDown, this), this.endTransaction() + }, moveSelectionToTop: function (A) { + this.beginTransaction(), A || (A = this.sm()); + var m = new xr; + no(A, m, this._roots), m.each(this.moveToTop, this), this.endTransaction() + }, moveSelectionToBottom: function (k) { + this.beginTransaction(), k || (k = this.sm()); + var R = new xr; + er(k, R, this._roots), R.each(this.moveToBottom, this), this.endTransaction() + }, moveToIndex: function (h, E, f) { + var J = this.getDatas(); + null == f && (f = J.indexOf(h)), f === E || 0 > f || E >= 0 && E <= J.size() && (J.remove(h), E > J.size() && E--, J.add(h, E), this._76I(h, f, E)) + }, bringForward: function (r) { + this.moveToIndex(r, this.getDatas().indexOf(r) + 1) + }, bringToFront: function (N) { + this.moveToIndex(N, this.size()) + }, sendBackward: function ($) { + this.moveToIndex($, this.getDatas().indexOf($) - 1) + }, sendToBack: function (p) { + this.moveToIndex(p, 0) + }, bringSelectionForward: function (G) { + this.beginTransaction(), G || (G = this.sm()); + for (var V = new xr, o = this.getDatas(), W = !1, p = 0; p < o.size(); p++) { + var P = o.get(o.size() - 1 - p); + G.contains(P) ? W && V.add(P) : W = !0 + } + V.each(this.bringForward, this), this.endTransaction() + }, bringSelectionToFront: function (c) { + this.beginTransaction(), c || (c = this.sm()); + for (var X = new xr, H = this.getDatas(), B = 0; B < H.size(); B++) { + var d = H.get(B); + c.contains(d) && X.add(d) + } + X.each(this.bringToFront, this), this.endTransaction() + }, sendSelectionBackward: function (X) { + this.beginTransaction(), X || (X = this.sm()); + for (var Q = new xr, f = this.getDatas(), R = !1, g = 0; g < f.size(); g++) { + var J = f.get(g); + X.contains(J) ? R && Q.add(J) : R = !0 + } + Q.each(this.sendBackward, this), this.endTransaction() + }, sendSelectionToBack: function (t) { + this.beginTransaction(), t || (t = this.sm()); + for (var C = new xr, P = this.getDatas(), x = 0; x < P.size(); x++) { + var J = P.get(P.size() - 1 - x); + t.contains(J) && C.add(J) + } + C.each(this.sendToBack, this), this.endTransaction() + }, addScheduleTask: function (c) { + var u = this; + u.removeScheduleTask(c), c.enabled == F && (c.enabled = !0), c.interval == F && (c.interval = 10), c.lastTime = Date.now(), u._29Q.push(c), u._30Q == F && (u._30Q = x.requestAnimationFrame(u._scheduleCallback)) + }, removeScheduleTask: function (G) { + var P = this, + w = P._29Q, + b = w.indexOf(G); + b >= 0 && w.splice(b, 1), w.length || P._30Q == F || (x.cancelAnimationFrame(P._30Q), delete P._30Q) + }, getHistoryManager: function () { + return this._historyManager + }, enableHistoryManager: function (I) { + this._historyManager || new O.HistoryManager(this), null != I && this._historyManager.setMaxHistoryCount(I), this._historyManager.setDisabled(!1) + }, disableHistoryManager: function () { + this._historyManager && this._historyManager.setDisabled(!0) + }, clearHistoryManager: function () { + this._historyManager && this._historyManager.clear() + }, undo: function (d) { + this._historyManager && this._historyManager.undo(d) + }, redo: function (c) { + this._historyManager && this._historyManager.redo(c) + }, beginTransaction: function () { + this._historyManager && this._historyManager.beginTransaction() + }, endTransaction: function () { + this._historyManager && this._historyManager.endTransaction() + }, addHistory: function (t) { + this._historyManager && this._historyManager.addHistory(t) + }, onHistoryManagerChanged: function () { }, isDeserializing: function () { + return this._isDeserializing > 0 + }, setDeserializing: function (d) { + d ? this._isDeserializing++ : this._isDeserializing-- + }, isCubicEnvmap: function () { + return this._cubicEnvmap + }, setCubicEnvmap: function (H) { + var m = this._cubicEnvmap; + this._cubicEnvmap = H, this.fp("cubicEnvmap", m, H) + } + }); + var Uc = O.SelectionModel = function (Q) { + var l = this; + l._68O = tb, l._map = {}, l._73O = new xr, l._74I = new Yj, l._21I(Q) + }; + ki("SelectionModel", o, { + ms_fire: 1, + ms_dm: 1, + ms: function (k, I, B) { + this.addSelectionChangeListener(k, I, B) + }, ums: function (b, R) { + this.removeSelectionChangeListener(b, R) + }, fd: function () { + return this.getFirstData() + }, ld: function () { + return this.getLastData() + }, sg: function () { + return this._68O === vq + }, co: function (O) { + return this._map[O._id] != F + }, ss: function (Q) { + this.setSelection(Q) + }, as: function (q) { + this.appendSelection(q) + }, rs: function (G) { + this.removeSelection(G) + }, cs: function () { + this.clearSelection() + }, sa: function () { + this.selectAll() + }, getSelectionMode: function () { + return this._68O + }, setSelectionMode: function (e) { + var S = this; + if (S._68O !== e && (e === Jc || e === vq || e === tb)) { + S.cs(); + var L = S._68O; + S._68O = e, S.fp("selectionMode", L, e) + } + }, _21I: function (R) { + var F = this, + L = F._dataModel; + L !== R && (L && (F.cs(), L.umm(F.handleDataModelChange, F)), F._dataModel = R, R.mm(F.handleDataModelChange, F, !0), F.fp(uk, L, R)) + }, dispose: function () { + var N = this; + N.cs(), N._dataModel.umm(N.handleDataModelChange, N) + }, handleDataModelChange: function ($) { + var H = this; + if ($.kind === Ce) { + var z = $.data; + H.co(z) && (H._73O.remove(z), delete H._map[z._id], H._75I(Ce, new xr(z))) + } else $.kind === Tg && H.cs() + }, getFilterFunc: function () { + return this._filterFunc + }, setFilterFunc: function (m) { + var x = this; + if (x._filterFunc !== m) { + x.cs(); + var C = x._filterFunc; + x._filterFunc = m, x.fp("filterFunc", C, x._filterFunc) + } + }, _75I: function (r, Y, O, j) { + O && (this._73O.each(function (U) { + j[U._id] ? O.remove(U) : O.add(U) + }), Y = O.toList()), this._74I.fire({ + kind: r, + datas: new xr(Y) + }) + }, addSelectionChangeListener: function (w, J, r) { + this._74I.add(w, J, r) + }, removeSelectionChangeListener: function (B, D) { + this._74I.remove(B, D) + }, _97O: function (E, A) { + for (var C, f = this, v = 0, o = new xr(E); v < o.size(); v++) C = o.get(v), (f._filterFunc && !f._filterFunc(C) || A && f.co(C) || !A && !f.co(C) || !f._dataModel.contains(C)) && (o.removeAt(v), v--); + return o + }, appendSelection: function (S) { + var g = this; + if (g._68O !== Jc) { + var C, B, r = g._73O, + c = g._97O(S, !0); + c.isEmpty() || (g.sg() && (C = new xr(r), B = g._map, r.clear(), g._map = {}, c = new xr(c.get(c.size() - 1))), c.each(function (F) { + r.add(F), g._map[F._id] = F + }), g._75I("append", c, C, B)) + } + }, removeSelection: function (b) { + var U = this, + F = U._97O(b), + G = 0, + K = F.size(); + if (0 !== K) { + for (; K > G; G++) { + var D = F.get(G); + U._73O.remove(D), delete U._map[D._id] + } + U._75I(Ce, F) + } + }, toSelection: function (K, q) { + return this._73O.toList(K, q) + }, getSelection: function () { + return this._73O + }, each: function (Q, i) { + this._73O.each(Q, i) + }, setSelection: function (Z) { + var E = this, + y = E._73O; + if (E._68O !== Jc && !(y.isEmpty() && !Z || 1 === y.size() && E.ld() === Z)) { + var L = new xr(y), + w = E._map; + y.clear(), E._map = {}; + var $ = E._97O(Z, !0); + E.sg() && $.size() > 1 && ($ = new xr($.get($.size() - 1))), $.each(function (Q) { + y.add(Q), E._map[Q._id] = Q + }), E._75I("set", F, L, w) + } + }, clearSelection: function () { + var a = this, + v = a._73O; + if (v.size() > 0) { + var p = v.toList(); + v.clear(), a._map = {}, a._75I(Tg, p) + } + }, selectAll: function () { + var H = this; + if (H._68O !== Jc) { + var x, S, k = H._dataModel.toDatas(); + if (H._filterFunc) + for (x = 0; x < k.size(); x++) S = k.get(x), H._filterFunc(S) || (k.removeAt(x), x--); + var o = H._73O, + r = new xr(o), + f = H._map; + o.clear(), H._map = {}, H.sg() && k.size() > 1 && (k = new xr(k.get(k.size() - 1))); + var _ = k.size(); + for (x = 0; _ > x; x++) S = k.get(x), o.add(S), H._map[S._id] = S; + H._75I("all", F, r, f) + } + }, size: function () { + return this._73O.size() + }, isEmpty: function () { + return this._73O.isEmpty() + }, contains: function (k) { + return this._map[k._id] != F + }, getLastData: function () { + var $ = this._73O; + return $.size() > 0 ? $.get($.size() - 1) : F + }, getFirstData: function () { + var A = this._73O; + return A.size() > 0 ? A.get(0) : F + }, isSelectable: function (n) { + var t = this; + return n && t._68O !== Jc ? t._filterFunc ? t._filterFunc(n) : !0 : !1 + }, getTopSelection: function () { + var d = this, + D = new xr; + return d._73O.each(function (i) { + for (var p = i.getParent(); p;) { + if (d.contains(p)) { + i = F; + break + } + p = p.parent + } + i && D.add(i) + }), D + } + }); + var Rp = function () { + return Ub(0), + function ($, t) { + var k; + if (Th(t)) { + var R = $.getDataUI(t); + R && R._88I && (k = R._88I.rect) + } + return k ? k : t.getRect() + } + }(); + Uh(u, { + edgeGroupAgentFunc: F, + graphViewAutoScrollZone: 16, + graphViewZoomable: !0, + graphViewResettable: !1, + graphViewPannable: !0, + graphViewRectSelectable: !0, + graphViewScrollBarVisible: !0, + graphViewRectSelectBorderColor: S.rectSelectBorder, + graphViewRectSelectBackground: Vh, + graphViewEditPointSize: nf ? 17 : 7, + graphViewEditPointBorderColor: S.editPointBorder, + graphViewEditPointBackground: S.editPointBackground, + setEdgeType: function (b, R, c) { + $d[b] = R, Dc[b] = c + }, getEdgeType: function (F) { + return $d[F] + }, getEdgeTypeMap: function () { + return $d + }, getNodeRect: Rp + }, !0); + var Ve = { + "layout.h": Z, + "layout.v": Z, + "2d.selectable": !0, + "2d.visible": !0, + "2d.movable": !0, + "2d.editable": !0, + "2d.move.mode": Z, + "2d.attachable": !1, + "2d.hostable": !1, + interactive: !1, + preventDefaultWhenInteractive: !0, + "image.stretch": "fill", + icons: Z, + ingroup: !0, + "body.color": Z, + "2d.gray": !1, + fullscreen: Z, + "fullscreen.gap": 2, + "fullscreen.lock": !1, + opacity: Z, + pixelPerfect: !0, + keepAspectRatio: !1, + "attach.points": null, + "attach.style": null, + "attach.close.threshold": 16, + "clip.direction": "top", + "clip.percentage": 1, + "select.color": Bc, + "select.width": 1, + "select.padding": 2, + "select.type": Tq, + shadow: !1, + "shadow.blur": 6, + "shadow.offset.x": 3, + "shadow.offset.y": 3, + shadow2: !1, + "shadow2.color": Bc, + "shadow2.blur": 6, + "shadow2.offset.x": 3, + "shadow2.offset.y": 3, + "border.color": Z, + "border.width": 2, + "border.padding": 2, + "border.type": Tq, + label: Z, + "label.font": Z, + "label.color": Dh, + "label.background": Z, + "label.position": 31, + "label.position.fixed": !1, + "label.offset.x": 0, + "label.offset.y": 2, + "label.rotation": Z, + "label.max": Z, + "label.opacity": Z, + "label.scale": 1, + "label.align": Z, + "label.selectable": !0, + label2: Z, + "label2.font": Z, + "label2.color": Dh, + "label2.background": Z, + "label2.position": 34, + "label2.position.fixed": !1, + "label2.offset.x": 0, + "label2.offset.y": -2, + "label2.rotation": Z, + "label2.max": Z, + "label2.opacity": Z, + "label2.scale": 1, + "label2.align": Z, + "label2.selectable": !0, + note: Z, + "note.expanded": !0, + "note.font": Z, + "note.color": rf, + "note.background": Bc, + "note.position": 8, + "note.offset.x": -3, + "note.offset.y": 3, + "note.max": Z, + "note.toggleable": !0, + "note.border.width": 1, + "note.border.color": Z, + "note.opacity": Z, + "note.scale": 1, + "note.align": Z, + note2: Z, + "note2.expanded": !0, + "note2.font": Z, + "note2.color": rf, + "note2.background": Bc, + "note2.position": 3, + "note2.offset.x": 3, + "note2.offset.y": -3, + "note2.max": Z, + "note2.toggleable": !0, + "note2.border.width": 1, + "note2.border.color": Z, + "note2.opacity": Z, + "note2.scale": 1, + "note2.align": Z, + "group.type": Z, + "group.image": Z, + "group.image.stretch": "fill", + "group.repeat.image": Z, + "group.border.repeat.image": Z, + "group.padding": 8, + "group.padding.left": 0, + "group.padding.right": 0, + "group.padding.top": 0, + "group.padding.bottom": 0, + "group.position": 17, + "group.toggleable": !0, + "group.title.font": Z, + "group.title.color": rf, + "group.title.background": S.groupTitleBackground, + "group.title.align": nq, + "group.title.orientation": $c, + "group.background": S.groupBackground, + "group.depth": 1, + "group.border.width": 1, + "group.border.pattern": Z, + "group.border.color": Ur, + "group.border.radius": Z, + "group.border.cap": ob, + "group.border.join": Wl, + "group.border.width.absolute": !1, + "group.splitLine": !1, + "group.gradient": F, + "group.gradient.color": "#FFF", + shape: Z, + "shape.background": Ur, + "shape.repeat.image": Z, + "shape.border.repeat.image": Z, + "shape.border.width": 0, + "shape.border.width.absolute": !1, + "shape.border.color": Ur, + "shape.border.3d": !1, + "shape.border.3d.color": Z, + "shape.border.3d.accuracy": Z, + "shape.border.cap": ob, + "shape.border.join": Wl, + "shape.border.pattern": Z, + "shape.gradient": F, + "shape.gradient.color": "#FFF", + "shape.depth": 0, + "shape.dash": !1, + "shape.dash.pattern": up, + "shape.dash.offset": 0, + "shape.dash.color": dm, + "shape.dash.width": Z, + "shape.dash.3d": !1, + "shape.dash.3d.color": Z, + "shape.dash.3d.accuracy": Z, + "shape.polygon.side": 6, + "shape.arc.from": W, + "shape.arc.to": $, + "shape.arc.close": !0, + "shape.arc.oval": !1, + "shape.corner.radius": Z, + "shape.gradient.pack": Z, + "shape.fill.rule": "nonzero", + "shape.fill.clip.direction": "top", + "shape.fill.clip.percentage": 1, + "shape.foreground": Z, + "shape.foreground.gradient": F, + "shape.foreground.gradient.color": "#FFF", + "shape.foreground.clip.direction": "top", + "shape.foreground.clip.percentage": 1, + "autolayout.gap": Z, + "autolayout.hgap": Z, + "autolayout.vgap": Z, + "edge.type": Z, + "edge.points": Z, + "edge.segments": Z, + "edge.color": Ur, + "edge.width": 2, + "edge.width.absolute": !1, + "edge.repeat.image": null, + "edge.offset": 0, + "edge.group": 0, + "edge.expanded": !0, + "edge.gap": 12, + "edge.toggleable": !0, + "edge.center": !1, + "edge.3d": !1, + "edge.3d.color": Z, + "edge.3d.accuracy": Z, + "edge.cap": ob, + "edge.join": Wl, + "edge.source.position": 17, + "edge.source.anchor.x": Z, + "edge.source.anchor.y": Z, + "edge.source.offset.x": 0, + "edge.source.offset.y": 0, + "edge.source.index": -1, + "edge.source.percent": 0, + "edge.target.position": 17, + "edge.target.anchor.x": Z, + "edge.target.anchor.y": Z, + "edge.target.offset.x": 0, + "edge.target.offset.y": 0, + "edge.target.index": -1, + "edge.target.percent": 0, + "edge.pattern": Z, + "edge.dash": !1, + "edge.dash.pattern": up, + "edge.dash.offset": 0, + "edge.dash.color": dm, + "edge.dash.width": Z, + "edge.dash.3d": !1, + "edge.dash.3d.color": Z, + "edge.dash.3d.accuracy": Z, + "edge.independent": !1, + "attach.row.index": 0, + "attach.column.index": 0, + "attach.row.span": 1, + "attach.column.span": 1, + "attach.padding": 0, + "attach.padding.left": 0, + "attach.padding.right": 0, + "attach.padding.top": 0, + "attach.padding.bottom": 0, + "attach.index": -1, + "attach.offset": 0, + "attach.offset.relative": !1, + "attach.offset.opposite": !1, + "attach.thickness": Z, + "attach.gap": 0, + "attach.gap.relative": !1, + "grid.row.count": 1, + "grid.column.count": 1, + "grid.row.percents": Z, + "grid.column.percents": Z, + "grid.border": 1, + "grid.border.left": 0, + "grid.border.right": 0, + "grid.border.top": 0, + "grid.border.bottom": 0, + "grid.gap": 1, + "grid.background": S.gridBackground, + "grid.depth": 1, + "grid.cell.depth": -1, + "grid.cell.border.color": S.gridCellBorderColor, + "grid.block": Z, + "grid.block.padding": 3, + "grid.block.width": 1, + "grid.block.color": S.gridBlockColor, + text: "", + "text.align": "left", + "text.vAlign": "middle", + "text.color": Dh, + "text.font": Fh, + "text.shadow": !1, + "text.shadow.color": Bc, + "text.shadow.blur": 6, + "text.shadow.offset.x": 3, + "text.shadow.offset.y": 3, + "text.scale.x": 1, + "text.scale.y": 1, + keepPosition: !0 + }; + Ve[Cp] = Z, Uh(z, Ve, !0), Uh(jn, { + _76I: function (v, N, F) { + this._39I && this._39I.fire({ + data: v, + oldIndex: N, + newIndex: F + }) + }, addIndexChangeListener: function (i, V, m) { + var Z = this; + Z._39I || (Z._39I = new Yj), Z._39I.add(i, V, m) + }, removeIndexChangeListener: function (E, M) { + this._39I.remove(E, M) + }, prepareRemove: function (I) { + Bk(I) && (I.setSource(F), I.setTarget(F)), I._70O && I._70O.toList().each(this.remove, this), I._69O && I._69O.toList().each(function (W) { + W.setHost(F) + }), I._host && I.setHost(F) + }, onAdded: function (x) { + this.isAutoAdjustIndex() && this.adjustIndex(x) + }, onDataPropertyChanged: function (z, h) { + xs[h.property] && this.isAutoAdjustIndex() && this.adjustIndex(z) + }, isAdjustable: function (P) { + return Fq(P) || Bk(P) + }, isAdjustedToBottom: function (Q) { + return yl(Q) ? Q.isExpanded() && ag(Q) : !1 + }, adjustIndex: function (K) { + var Q = this; + this.isHierarchicalRendering() || (Q.isAdjustedToBottom(K) ? (Q.sendToBottom(K), K.eachChild(Q.adjustIndex, Q)) : Q.sendToTop(K)) + }, sendToTop: function (j) { + var U = this; + if (U.contains(j) && U.isAdjustable(j)) { + var y = U._datas; + if (j !== y.get(U.size() - 1)) { + var b = y.indexOf(j); + y.removeAt(b), y.add(j), U._76I(j, b, U.size() - 1) + } + if (Bk(j)) { + var V = j._40I; + V && !U.isAdjustedToBottom(V) && U.sendToTop(V), V = j._41I, V && !U.isAdjustedToBottom(V) && U.sendToTop(V) + } + j._69O && j._69O.each(function (G) { + G.isRelatedTo(j) || Fq(j) && G.isLoopedHostOn(j) || U.sendToTop(G) + }), j.ISubGraph || (!yl(j) || j.isExpanded()) && j._adjustChildrenToTop && j.eachChild(function (X) { + Bk(X) || U.sendToTop(X) + }) + } + }, sendToBottom: function (W, m) { + var H = this; + if (W !== m && H.contains(W) && H.isAdjustable(W) && (!m || H.contains(m))) { + var T = H._datas, + R = T.remove(W), + L = m ? H._datas.indexOf(m) : 0; + if (T.add(W, L), R !== L) { + H._76I(W, R, L); + var J = W._parent; + !J || J.ISubGraph || Bk(J) || H.sendToBottom(W._parent, W) + } + } + } + }), Uh(fb, { + ms_edit: function (i) { + i._46O = function (W) { + var A = this, + l = A.gv.dm(), + g = A._index, + b = A._89I, + Y = A._node, + J = A._shape, + H = A._edge, + Z = A._77I; + Y && b ? (this.fi({ + kind: "endEditRect", + event: W, + data: Y, + direction: b + }), l.endTransaction()) : J && g >= 0 ? (A.fi({ + kind: "endEditPoint", + event: W, + data: J, + index: g + }), l.endTransaction()) : H && g >= 0 ? (A.fi({ + kind: "endEditPoint", + event: W, + data: H, + index: g + }), l.endTransaction()) : Z && (A.fi({ + kind: "endEditRotation", + event: W, + data: Z + }), l.endTransaction()) + }, i._78I = function (t) { + var Q = this; + Q.autoScroll(t); + var j = Q.gv.lp(t), + s = Q._index, + i = Q._89I, + S = Q._node, + m = Q._shape, + V = Q._edge, + q = Q._77I; + if (S && i) Q._80O(j), Q.fi({ + kind: "betweenEditRect", + event: t, + data: S, + direction: i + }); + else if (m && s >= 0) j.e = m.getPoints().get(s).e, m.setPoint(s, j), Q.fi({ + kind: "betweenEditPoint", + event: t, + data: m, + index: s + }); + else if (V && s >= 0) { + var k = V.s(Ei); + j.e = k.get(s).e, k.set(s, j), V.fp(Ei, F, k), Q.fi({ + kind: "betweenEditPoint", + event: t, + data: V, + index: s + }) + } else if (q) { + var Y = q.p(), + z = q.getScale(), + I = N + D(j.y - Y.y, j.x - Y.x); + z.y < 0 && (I += W), X(I) < .04 && (I = 0), q.setRotation(I), Q.fi({ + kind: "betweenEditRotation", + event: t, + data: q + }) + } + }, i._80O = function (O) { + var J = this, + Z = J._node, + N = J._rect, + u = N.x, + T = N.y, + n = N.width, + H = N.height, + $ = J._89I, + h = J._anchor, + F = J._matrix, + O = F.tfi(O); + "northwest" === $ ? N = ms(O, { + x: u + n, + y: T + H + }) : $ === Tb ? N = ms({ + x: u, + y: O.y + }, { + x: u + n, + y: T + H + }) : "northeast" === $ ? N = ms({ + x: u, + y: O.y + }, { + x: O.x, + y: T + H + }) : $ === Wg ? N = ms({ + x: O.x, + y: T + }, { + x: u + n, + y: T + H + }) : $ === Yn ? N = ms({ + x: u, + y: T + }, { + x: O.x, + y: T + H + }) : "southwest" === $ ? N = ms({ + x: O.x, + y: T + }, { + x: u + n, + y: O.y + }) : "south" === $ ? N = ms({ + x: u, + y: T + }, { + x: u + n, + y: O.y + }) : "southeast" === $ && (N = ms({ + x: u, + y: T + }, O)), Z.setPosition(F.tf(N.x + N.width * h.x, N.y + N.height * h.y)), Z.setWidth(N.width), Z.setHeight(N.height) + }, i._80I = function (a, U, L, z) { + var J = this, + V = J.gv._zoom, + t = (J.gv.getEditPointSize() + 2) / V; + return cf({ + x: U - t / 2, + y: L - t / 2, + width: t, + height: t + }, a) ? (J._89I !== z && (J._89I = z), !0) : !1 + }, i._79I = function (K, f, L) { + var O = this, + J = O.gv, + R = f ? J.getDataUI(f) : F, + e = R ? R._55O : F; + if (e) { + var A, H, x, m, B = J._zoom, + d = (J.getEditPointSize() + 2) / B, + W = J.lp(K); + if (Fq(f)) { + if (e._56O && Fq(f) && (H = e._98o, cf({ + x: H.x - d / 2, + y: H.y - d / 2, + width: d, + height: d + }, W))) return O._77I = f, L && O.fi({ + kind: "beginEditRotation", + event: K, + data: f + }), O.setCursor("crosshair"), !0; + if (e._43O && f instanceof Fc) + for (x = f.getPoints(), A = x.size() - 1; A >= 0; A--) + if (H = x.get(A), cf({ + x: H.x - d / 2, + y: H.y - d / 2, + width: d, + height: d + }, W)) return O._index = A, O._shape = f, L && O.fi({ + kind: "beginEditPoint", + event: K, + data: f, + index: A + }), O.setCursor("crosshair"), !0; + if (e._42O) + for (var b = f.getEditControlPoints(), i = ["northwest", -1, -1, Wg, -1, 0, "southwest", -1, 1, "south", 0, 1, "southeast", 1, 1, Yn, 1, 0, "northeast", 1, -1, Tb, 0, -1], A = 0, m = b.length; m > A; A++) { + var y = i[3 * A], + Q = b[A]; + if (O._80I(W, Q.x, Q.y, y)) { + O._node = f; + var q = f.getWidth(), + T = f.getHeight(), + p = f.getAnchor(); + O._rect = { + x: -q * p.x, + y: -T * p.y, + width: q, + height: T + }, O._anchor = p, O._matrix = f.getMatrix(); + var v = f.getRotation(), + s = k(v), + _ = n(v), + Z = i[3 * A + 1] * he(f.getScale().x), + j = i[3 * A + 2] * he(f.getScale().y), + N = Math.atan2(-_ * Z - s * j, s * Z - _ * j), + z = (Math.round(N / (Math.PI / 4)) + 8) % 8, + Y = [Nc, "nesw-resize", zi, "nwse-resize", Nc, "nesw-resize", zi, "nwse-resize"][z]; + return O.setCursor(Y), L && O.fi({ + kind: "beginEditRect", + event: K, + data: f, + direction: O._89I + }), !0 + } + } + } + if (e._43O && Bk(f) && f.s(ej) === _b && (x = f.s(Ei))) + for (A = x.size() - 1; A >= 0; A--) + if (H = x.get(A), cf({ + x: H.x - d / 2, + y: H.y - d / 2, + width: d, + height: d + }, W)) return O._index = A, O._edge = f, L && O.fi({ + kind: "beginEditPoint", + event: K, + data: f, + index: A + }), O.setCursor("crosshair"), !0 + } + return !1 + } + }, ms_gv: function (A) { + A._currentSubGraph = F, A._initView = function () { + this._fpsInfo = { + time: 0, + fps: 0, + frames: 0 + } + }, A.upSubGraph = function () { + this.setCurrentSubGraph(Jr(this._currentSubGraph)) + }, A.isVisible = function (s) { + var j = this; + if (Jr(s) !== j._currentSubGraph) return !1; + if (Bk(s)) { + var k = s._40I, + $ = s._41I; + if (!k || !$) return !1; + if (!(s.s("edge.independent") || j.isVisible(k) && j.isVisible($))) return !1; + if (s.isEdgeGroupHidden()) return !1 + } else + for (var I = s._parent; I && !I.ISubGraph;) { + if (yl(I) && (!I.isExpanded() || !j.isVisible(I))) return !1; + I = I._parent + } + if (s._parent instanceof Br && !j.isVisible(s._parent)) return !1; + if (s._refGraph instanceof Ff && !j.isVisible(s._refGraph)) return !1; + if (j instanceof Hl) { + if (!s.s("3d.visible")) return !1 + } else { + var h = j.getLayersInfo(); + if (h) { + var C = h[s._layer]; + if (C && C.visible === !1) return !1 + } + if (!s.s("2d.visible")) return !1 + } + return j._visibleFunc ? j._visibleFunc(s) : !0 + }, A.handleSelectionChange = function (f) { + var m = this; + f.datas.each(function (z) { + m.invalidateData(z); + var s = z._parent; + yl(s) && Fq(z) && z.s(Dm) && (m.invalidateData(s), s._49I && s._49I.each(function (P) { + m.invalidateData(P) + })) + }), m.onSelectionChanged(f) + }, A.onSelectionChanged = function (D) { + var x = this, + f = x.sm(); + if (1 === f.size() && ("set" === D.kind || "append" === D.kind)) { + var E = f.ld(); + x.isAutoMakeVisible() && x.makeVisible(E), x.adjustIndex && x._dataModel.isAutoAdjustIndex() && x.adjustIndex(E) + } + }, A.makeVisible = function (n) { + if (n) { + var H = this, + Y = H.getDataUI ? H.getDataUI(n) : H.getData3dUI(n); + if (Y) { + var t = n, + $ = Jr(n); + for ($ !== H._currentSubGraph && H.setCurrentSubGraph($); + (t = t._parent) && t !== $;) yl(t) && t.setExpanded(!0); + H._23I = n, H.iv() + } + } + }, A.getLabel = function (b) { + var v = b.getStyle(Bg); + return v === Z ? b.getName() : v + }, A.getLabelBackground = function (V) { + return V.getStyle("label.background") + }, A.getLabelColor = function (j) { + return j.getStyle("label.color") + }, A.getLabel2 = function (D) { + return D.getStyle("label2") + }, A.getLabel2Background = function (F) { + return F.getStyle("label2.background") + }, A.getLabel2Color = function ($) { + return $.getStyle("label2.color") + }, A.getNote = function (Z) { + return Z.getStyle(Rm) + }, A.getNoteBackground = function (n) { + return n.getStyle("note.background") + }, A.getNote2 = function (G) { + return G.getStyle(Vk) + }, A.getNote2Background = function (E) { + return E.getStyle("note2.background") + }, A.handleClick = function (v, t, z) { + var K = this; + t ? (K.fi({ + kind: "clickData", + event: v, + data: t, + part: z + }), K.onDataClicked(t, v)) : (K.fi({ + kind: "clickBackground", + event: v + }), K.onBackgroundClicked(v)) + }, A.handleDoubleClick = function (R, b, P) { + var s = this; + jj(R) && (b ? (s.fi({ + kind: "doubleClickData", + event: R, + data: b, + part: P + }), s.onDataDoubleClicked(b, R, P), s.checkDoubleClickOnNote(R, b, P) || s.checkDoubleClickOnRotation && s.checkDoubleClickOnRotation(R, b, P) || (Bk(b) ? s.onEdgeDoubleClicked(b, R, P) : b.ISubGraph ? s.onSubGraphDoubleClicked(b, R, P) : yl(b) ? s.onGroupDoubleClicked(b, R, P) : b.IDoorWindow ? s.onDoorWindowDoubleClicked(b, R, P) : b.ICSGBox && s.onCSGBoxDoubleClicked(b, R, P))) : (s.fi({ + kind: "doubleClickBackground", + event: R + }), s.onBackgroundDoubleClicked(R))) + }, A.onSubGraphDoubleClicked = function (x) { + this.setCurrentSubGraph(x) + }, A.onEdgeDoubleClicked = function (x, k) { + this.isEditable(x) || (x.ISubGraph && !ik(k) ? this.setCurrentSubGraph(x) : x.s("edge.toggleable") && x.toggle()) + }, A._39Q = function (l) { + return this.isInteractive(l) ? this.preventDefaultWhenInteractive(l) : !1 + }, A.preventDefaultWhenInteractive = function (o) { + return o.s("preventDefaultWhenInteractive") + }, A.onGroupDoubleClicked = function (F) { + F.s("group.toggleable") && F.toggle() + }, A.onDoorWindowDoubleClicked = function (k) { + k.s("dw.toggleable") && k.toggle(!0) + }, A.onCSGBoxDoubleClicked = function (N, L) { + var r = this; + if (r instanceof Hl) { + var a = r.intersectObject(L, N); + a && N.s(a.part + ".toggleable") && N.toggleFace(a.part, !0) + } + }, A.onBackgroundClicked = function () { }, A.onBackgroundDoubleClicked = function () { + this.upSubGraph() + }, A.onDataClicked = function () { }, A.onDataDoubleClicked = function () { }, A.onAutoLayoutEnded = function () { }, A.onMoveEnded = function () { }, A.onPanEnded = function () { }, A.onPinchEnded = function () { }, A.onRectSelectEnded = function () { }, A.onZoomEnded = function () { }, A.serialize = function (g) { + return this.dm().serialize(g) + }, A.toJSON = function () { + return this.dm().toJSON() + }, A.deserialize = function (S, G) { + var i = this; + G = G instanceof Qp ? { + rootParent: G + } : El(G) ? { + setId: G + } : Mf(G) ? { + finishFunc: G + } : G || {}, G.view = i; + var e = i.dm(); + return G.__innerHandler__ = function (k) { + if (El(e.a("toolTipEnable")) && (e.a("toolTipEnable") ? i.enableToolTip() : i.disableToolTip()), i instanceof O.graph.GraphView && (El(e.a("zoomable")) && i.setZoomable && i.setZoomable(e.a("zoomable")), El(e.a("pannable")) && i.setPannable && i.setPannable(e.a("pannable")), El(e.a("rectSelectable")) && i.setRectSelectable && i.setRectSelectable(e.a("rectSelectable")), e.a("fitContent") === !0 && i.fitContent && i.fitContent(!0, 0)), i instanceof O.graph3d.Graph3dView) { + var Y = k.scene; + Y && Y.shadow != F && i.shadowMap.setShadow(Y.shadow, Y.shadowParams); + var $ = e.a("sceneContext"); + $ ? ($.eye && i.setEye($.eye), $.center && i.setCenter($.center), Bp($.far) && i.setFar($.far), Bp($.near) && i.setNear($.near)) : (Bp(e.a("sceneNear")) && i.setNear(e.a("sceneNear")), Bp(e.a("sceneFar")) && i.setFar(e.a("sceneFar")), Y && (Y.eye && i.setEye(Y.eye), Y.center && i.setCenter(Y.center))), El(e.a("sceneShadowEnabled")) && (e.a("sceneShadowEnabled") ? i.enableShadow() : i.disableShadow()), e.a("sceneShadowDegreeX") && i.setShadowDegreeX(e.a("sceneShadowDegreeX")), e.a("sceneShadowDegreeZ") && i.setShadowDegreeZ(e.a("sceneShadowDegreeZ")), e.a("sceneShadowIntensity") && i.setShadowIntensity(e.a("sceneShadowIntensity")), e.a("sceneShadowQuality") && i.setShadowQuality(e.a("sceneShadowQuality")), e.a("sceneShadowType") && i.setShadowType(e.a("sceneShadowType")), e.a("sceneShadowRadius") && i.setShadowRadius(e.a("sceneShadowRadius")), e.a("sceneShadowBias") && i.setShadowBias(e.a("sceneShadowBias")), El(e.a("sceneDashEnable")) && i.setDashDisabled(!e.a("sceneDashEnable")), dk(e.a("sceneHighlightMode")) && i.setHighlightMode(e.a("sceneHighlightMode")), Bp(e.a("sceneHighlightWidth")) && i.setHighlightWidth(e.a("sceneHighlightWidth")), e.a("sceneHighlightColor") && i.setHighlightColor(e.a("sceneHighlightColor")), El(e.a("sceneHeadlightEnable")) && i.setHeadlightDisabled(!e.a("sceneHeadlightEnable")), Bp(e.a("sceneHeadlightRange")) && i.setHeadlightRange(e.a("sceneHeadlightRange")), e.a("sceneHeadlightColor") && i.setHeadlightColor(e.a("sceneHeadlightColor")), Bp(e.a("sceneHeadlightIntensity")) && i.setHeadlightIntensity(e.a("sceneHeadlightIntensity")), Bp(e.a("sceneHeadlightAmbientIntensity")) && i.setHeadlightAmbientIntensity(e.a("sceneHeadlightAmbientIntensity")), El(e.a("sceneFogEnable")) && i.setFogDisabled(!e.a("sceneFogEnable")), e.a("sceneFogMode") && i.setFogMode(e.a("sceneFogMode")), El(e.a("sceneFogDensity")) && i.setFogDensity(!e.a("sceneFogDensity")), e.a("sceneFogColor") && i.setFogColor(e.a("sceneFogColor")), Bp(e.a("sceneFogNear")) && i.setFogNear(e.a("sceneFogNear")), Bp(e.a("sceneFogFar")) && i.setFogFar(e.a("sceneFogFar")), El(e.a("sceneBatchBrightnessDisabled")) && i.setBatchBrightnessDisabled(e.a("sceneBatchBrightnessDisabled")), El(e.a("sceneBatchBlendDisabled")) && i.setBatchBlendDisabled(e.a("sceneBatchBlendDisabled")), El(e.a("sceneBatchColorDisabled")) && i.setBatchColorDisabled(e.a("sceneBatchColorDisabled")), e.a("sceneBatchInfoMap") && i.setBatchInfoMap(e.a("sceneBatchInfoMap")), Bp(e.a("sceneMoveStep")) && i.setMoveStep(e.a("sceneMoveStep")), Bp(e.a("sceneRotateStep")) && i.setRotateStep(e.a("sceneRotateStep")); + var h = e.a("sceneSkyboxType") || "sphere"; + if (h != F) { + var T = {}, + _ = !1; + if ("sphere" === h) { + T.shape3d = h; + var U = e.a("sceneSkyboxImage"); + U && (T["shape3d.image"] = U, _ = !0) + } else T.shape3d = Z, ["front", "back", "left", "right", "top", "bottom"].forEach(function (y) { + var f = y + ".image", + D = y.charAt(0).toUpperCase() + y.slice(1), + p = e.a("sceneSkybox" + D + "Image"); + p && (T[f] = p, _ = !0) + }); if (_) { + var z = new Dp; + z.s3(20, 20, 20), T["body.color"] = e.a("sceneSkyboxBodyColor"), T.envmap = e.a("sceneSkyboxEnvmap"), T.light = !1, T["texture.wrap"] = "clampToEdge", z.s(T), ["X", "Y", "Z"].forEach(function (L) { + var Y = e.a("sceneSkyboxRotation" + L); + Bp(Y) && z["setRotation" + L](Y) + }), i.setSkybox(z) + } + } + } + }, e.deserialize(S, G.rootParent, G) + }, A.isDebugTipShowing = function () { + return !!this._debugDiv + }, A.showDebugTip = function () { + var v = this, + Y = v._debugDiv; + if (!Y) { + Y = v._debugDiv = U.createElement("div"), Y.style.position = "absolute", Y.style.overflow = "hidden", Y.style.font = u.debugTipLabelFont, Y.style.padding = "6px", Y.style.backgroundColor = u.debugTipBackground, Y.style.color = u.debugTipLabelColor; + var F = v.getView(); + v._79O ? F.insertBefore(Y, v._79O) : F.appendChild(Y); + var C = function () { + v.redraw(); + var $ = v._canvas, + S = "FPS: " + v._fpsInfo.fps + "
" + "Datas: " + v.dm().getDatas().length + ($ ? "
Size: " + $.width + " * " + $.height : ""), + x = v.dm()._historyManager; + x && (S += "
Undoes: " + x.getHistories().length + " index: " + x.getHistoryIndex()); + var e = v.getDebugTip(); + e && (S += "
" + e), Y.innerHTML = S, v._isDebugging && requestAnimationFrame(C) + }; + requestAnimationFrame(C), v._isDebugging = !0 + } + }, A.hideDebugTip = function () { + var y = this, + o = y._debugDiv; + o && (delete y._debugDiv, y.getView().removeChild(o), y._isDebugging = !1) + }, A.updateDOMAppendMatrix = function () { + var J = this.getView(); + J && (J.updateAppendMatrix = !0) + }, A.countFrame = function () { + if (this._isDebugging) { + var h = Date.now(), + G = this._fpsInfo; + h - G.time > 1e3 ? (G.fps = Math.round(1e5 * (G.frames + 1) / (h - G.time)) / 100, G.time = h, G.frames = 0) : G.frames++ + } + } + }, ms_icons: function (f) { + f.getRotation = function (m) { + return m == F ? 0 : m + }, f._15O = function () { + var j = this, + l = j.s(ub); + if (l) { + var H = j, + m = j.data || j._data, + B = j._38o = { + icons: l, + rects: {} + }; + for (var Y in l) { + var q = l[Y], + A = Dj(q.shape3d, m, H); + if (!(Dj(q.visible, m, H) === !1 || Dj(q.for3d, m, H) && !j.I3d || A && !j.I3d)) { + var T = A ? [A] : Dj(q.names, m, H), + b = T ? T.length : 0, + s = Dj(q.position, m, H) || 3, + n = Dj(q.offsetX, m, H) || 0, + E = Dj(q.offsetY, m, H) || 0, + R = Dj(q.direction, m, H) || Yn, + x = Dj(q.gap, m, H), + w = x != F ? x : 1, + y = Dj(q.rotation, m, H), + G = Dj(q.keepOrien, m, H), + i = Dj(q.rotationFixed, m, H) ? y : j.getRotation(y, G, s), + v = F, + W = B.rects[Y] = new Array(b); + W.rotation = i; + for (var M = 0; b > M; M++) { + var p, Z, U, z, L = T[M]; + if (A) U = 0, z = 0; + else { + var O = ii(L); + U = Dj(q.width, m, H), z = Dj(q.height, m, H), U == F && (U = xc(O, m)), z == F && (z = oo(O, m)) + } if (v ? R === Yn ? n += U / 2 : R === Wg ? n -= U / 2 : R === Tb ? E -= z / 2 : E += z / 2 : v = { + width: U, + height: z + }, j.I3d) { + var a = -U / 2, + N = -z / 2; + Z = { + width: U, + height: z, + mat: j._16O(Dj(q.autorotate, m, H), s, v, Dj(q.face, m, H) || wg, Dj(q.t3, m, H), Dj(q.r3, m, H), Dj(q.rotationMode, m, H), n, E), + vs: new fk([a, -N, 0, a, -N - z, 0, a + U, -N - z, 0, a + U, -N, 0]) + } + } else p = j.getPosition(s, n, E, v, Dj(q.positionFixed, m, H)), Z = { + x: p.x - U / 2, + y: p.y - z / 2, + width: U, + height: z + }, j._68o(Z, i); + W[M] = Z, R === Yn ? n += U / 2 + w : R === Wg ? n -= U / 2 + w : R === Tb ? E -= z / 2 + w : E += z / 2 + w + } + } + } + } + } + } + }); + var Ym = { + 1: 1, + 2: 1, + 6: 1, + 9: 1, + 10: 1, + 14: 1, + 15: 1, + 16: 1, + 21: 1, + 22: 1, + 26: 1, + 29: 1, + 30: 1, + 34: 1, + 36: 1, + 38: 1, + 40: 1, + 42: 1, + 45: 1, + 50: 1, + 52: 1, + 54: 1 + }, + nk = { + 3: 1, + 7: 1, + 11: 1, + 17: 1, + 23: 1, + 27: 1, + 31: 1, + 44: 1, + 46: 1, + 47: 1, + 49: 1 + }, + Jd = { + translateX: 1, + translateY: 1, + zoom: 1, + scrollBarVisible: 1 + }, + xs = { + sourceAgent: 1, + targetAgent: 1, + expanded: 1, + parent: 1, + host: 1 + }, + Lk = { + position: 1, + width: 1, + height: 1, + expanded: 1, + rotation: 1, + anchor: 1, + scale: 1, + "s:edge.points": 1 + }, + Am = { + "edge.type": 1, + "edge.group": 1 + }, + Yr = { + rotation: 1, + rotationX: 1, + rotationZ: 1 + }, + Zf = { + rotation: 1, + rotationX: 1, + rotationZ: 1, + position: 1, + width: 1, + height: 1, + anchor: 1, + scale: 1 + }, + ir = { + position: 1, + width: 1, + height: 1, + anchor: 1, + scale: 1, + "s:grid.row.count": 1, + "s:grid.column.count": 1, + "s:grid.row.percents": 1, + "s:grid.column.percents": 1, + "s:grid.border": 1, + "s:grid.border.left": 1, + "s:grid.border.right": 1, + "s:grid.border.top": 1, + "s:grid.border.bottom": 1, + "s:grid.gap": 1 + }, + Zj = { + "attach.row.index": 1, + "attach.column.index": 1, + "attach.row.span": 1, + "attach.column.span": 1, + "attach.padding": 1, + "attach.padding.left": 1, + "attach.padding.right": 1, + "attach.padding.top": 1, + "attach.padding.bottom": 1, + "attach.index": 1, + "attach.offset": 1, + "attach.offset.relative": 1, + "attach.offset.opposite": 1, + "attach.gap": 1, + "attach.gap.relative": 1, + "attach.thickness": 1 + }, + zq = { + shape: 1, + thickness: 1, + position: 1, + anchor: 1, + scale: 1 + }, + Jr = function (Q) { + if (!Q) return F; + if (Bk(Q)) { + var s = Q._40I, + l = Q._41I; + if (!s || !l) return F; + var G = Jr(s), + E = Jr(l); + return G === E ? G : F + } + for (var r = Q._parent; Bk(r) && !r.ISubGraph;) r = r._parent; + return r ? r.ISubGraph ? r : Jr(r) : F + }, + ld = function (I, j, F, b) { + var $ = j.getStyle(F) * b; + $ && vn(I, $), $ = j.getStyle(F + ".left") * b, $ && (I.x -= $, I.width += $), $ = j.getStyle(F + ".right") * b, $ && (I.width += $), $ = j.getStyle(F + ".top") * b, $ && (I.y -= $, I.height += $), $ = j.getStyle(F + ".bottom") * b, $ && (I.height += $), I.width < 0 && (I.width = -I.width, I.x -= I.width), I.height < 0 && (I.height = -I.height, I.y -= I.height) + }, + ag = function (U) { + for (var R, j = 0, S = U.size(); S > j; j++) + if (R = U.getChildAt(j), Fq(R) && ag(R)) return !0; + return U.hasAgentEdges() + }, + An = function (z) { + if (!z) return F; + for (var A = z._parent; yl(A);) { + if (!yl(A._parent)) return A.isExpanded() ? z : A; + A.isExpanded() || (z = A), A = A._parent + } + return z + }, + ur = function (y, b) { + if (!y || !b) return F; + var p, H, X, $ = Jr(y), + M = Jr(b); + if ($ !== M) { + for (; M && $ !== M;) M = Jr(M); + if ($ === M) return y; + p = new xr, p.add(y, 0); + for (var f = y._parent; Fq(f) && !b.isDescendantOf(f);) p.add(f, 0), f = f._parent; + for (X = p.size(), H = 0; X > H; H++) { + var r = p.get(H); + if (yl(r) && !r.isExpanded()) return r; + if (r.ISubGraph) return r + } + return y + } + return y + }, + Oq = function (g) { + if (g.isLooped()) return g._source; + var L = An(g._source), + b = An(g._target); + return L === b ? g._source : ur(L, b) + }, + xg = function (y) { + if (y.isLooped()) return y._target; + var m = An(y._source), + L = An(y._target); + return m === L ? y._target : ur(L, m) + }, + Eo = function (r, D, H) { + "target" !== H && (H = "source"); + var L = "target" === H ? D.getTargetAgent() : D.getSourceAgent(), + E = "edge." + H + "."; + if (Bk(L)) { + var T = r.getDataUI(L); + T._79o(); + var i = D.s(E + "index"); + if (i >= 0) { + var e = Kk(T); + return e[Math.max(0, Math.min(i, e.length - 1))] + } + var j = D.s(E + "percent") || 0; + j = Math.max(0, Math.min(j, 1)); + var b = qm(T); + return np(b, 100 * j) + } + return Yg(r, L, D.s(E + "position"), D.s(E + "offset.x"), D.s(E + "offset.y"), D.s(E + "anchor.x"), D.s(E + "anchor.y")) + }, + Yg = function (P, R, S, y, u, e, W) { + if (!R) return F; + var $, M = R.getRotation ? R.getRotation() : 0; + if (e !== Z || W !== Z) { + e = e === Z ? .5 : e, W = W === Z ? .5 : W; + var C = R.getScale(); + if (M && !Th(R, P) || C.x < 0 || C.y < 0) { + var H = R.getPosition(), + m = R.getWidth(), + I = R.getHeight(), + A = R.getAnchor(), + _ = new In(M, H.x, H.y, C.x, C.y); + S = _.tf((e - A.x) * m, (W - A.y) * I) + } else $ = Rp(P, R), S = { + x: $.x + e * $.width, + y: $.y + W * $.height + } + } else S = Re(S, Rp(P, R)); if (M) { + var j = k(M), + U = n(M), + t = y * j - u * U; + u = y * U + u * j, y = t + } + return S.x += y, S.y += u, S + }, + kk = function (Y, h) { + if (!Y || !h) return F; + var w, b, D, p, P, M; + if (Y === h) { + if (p = Y.getLoopedEdges(), !p) return F; + p = new xr(p) + } else { + if (P = Y.getAgentEdges(), M = h.getAgentEdges(), !P || !M) return F; + for (b = P.size(), w = 0; b > w; w++) D = P.get(w), M.contains(D) && (p || (p = new xr), p.add(D)) + } if (p) + for (w = 0; w < p.size(); w++) D = p.get(w), D.getStyle(ej) === _b && (D._22I(F), p.removeAt(w), w--); + return p + }, + gi = function (j, z) { + var e = kk(j, z); + if (e && !e.isEmpty()) { + if (1 === e.size()) return e.get(0)._22I(F), void 0; + var M = new xr, + T = new xr; + e.each(function (e) { + var k = e.s("edge.group"); + M.contains(k) || M.add(k) + }), M.sort(), M.each(function (d) { + T.add(new O.EdgeGroup(e.toList(function (h) { + return d === h.s("edge.group") + }), T)) + }), T.each(function (s) { + s.each(function (T) { + T._22I(s) + }) + }) + } + }, + wq = function (K, L, Y) { + var n = K._canvas; + K._zoom; + var b = Nm(L, n), + X = Nm(Y, n); + return { + x: b.x - X.x, + y: b.y - X.y + } + }, + vp = function (t, q) { + if (q) { + var Z = q.rect, + v = q.color, + S = q.rotation, + r = q.labelWidth, + o = q.background, + k = q.opacity, + l = q.scale, + O = l != F && 1 !== l; + if (k != F) { + var A = t.globalAlpha; + t.globalAlpha *= k + } + if (S || O) { + t.save(); + var j = Z.x + Z.width / 2, + h = Z.y + Z.height / 2; + wh(t, j, h), S && jc(t, S), O && t.scale(l, l), wh(t, -j, -h) + } + if (o && fl(t, Z.x, Z.y, Z.width, Z.height, o), r) { + var L = Z.width, + m = t.createLinearGradient(Z.x, Z.y, Z.x + L, Z.y); + m.addColorStop(0, v), m.addColorStop(.9, v), m.addColorStop(1, nb), v = m, Z.width = r + } + Om(t, q.ss, Z, q.font, v, q.align), r && (Z.width = L), (S || O) && t.restore(), k != F && (t.globalAlpha = A) + } + }, + $q = function (s, Q) { + if (Q) { + var X = Q.rect, + O = X.x, + E = X.y, + h = X.width, + K = X.height, + J = Q.background, + w = Q.backgroundImage, + f = Q.borderWidth, + U = Q.borderColor, + e = Q.labelWidth, + M = Q.opacity, + Y = Q.scale, + n = Y != F && 1 !== Y; + if (M != F) { + var _ = s.globalAlpha; + s.globalAlpha *= M + } + if (n) { + s.save(); + var y = X.x + X.width / 2, + d = X.y + X.height / 2; + wh(s, y, d), s.scale(Y, Y), wh(s, -y, -d) + } + if (Q.expanded) { + var t = V(8, h / 4), + o = E + K - 8; + if (s.fillStyle = J, s.beginPath(), s.moveTo(O, E), s.lineTo(O, o), s.lineTo(O + h / 2, o), s.lineTo(O + h / 2, E + K), s.lineTo(O + h / 2 + t, o), s.lineTo(O + h, o), s.lineTo(O + h, E), s.closePath(), s.fill(), f && (s.lineWidth = f, s.lineJoin = "round", s.lineCap = "round", U ? (s.strokeStyle = U, s.stroke()) : (s.strokeStyle = cn(J), s.beginPath(), s.moveTo(O + h, E), s.lineTo(O + h, o), s.lineTo(O + h / 2 + t, o), s.lineTo(O + h / 2, E + K), s.stroke(), s.strokeStyle = Ee(J), s.beginPath(), s.moveTo(O + h, E), s.lineTo(O, E), s.lineTo(O, o), s.lineTo(O + h / 2, o), s.lineTo(O + h / 2, E + K), s.stroke())), w) qk(s, ii(w), Mg, X.x, X.y, X.width, X.height - 8, Q.data, Q.view); + else { + if (X.height -= 8, J = Q.color, e) { + var S = h, + H = s.createLinearGradient(O, E, O + S, E); + H.addColorStop(0, J), H.addColorStop(.9, J), H.addColorStop(1, nb), J = H, X.width = e + } + Om(s, Q.ss, X, Q.font, J, Q.align), e && (X.width = S), X.height += 8 + } + } else if (Q.icon) Yd(s, ii(Q.icon), O, E, h, K, Q.data, Q.view); + else { + var v = h / 2; + f && (s.lineWidth = f, s.lineJoin = "round", s.lineCap = "round", s.strokeStyle = U ? U : cn(J), s.beginPath(), s.arc(O + v, E + v, v, N, 1.6 * W, !0), s.moveTo(O + v, E + K), s.lineTo(O + h - v / 5, E + v), s.stroke(), s.strokeStyle = U ? U : Ee(J), s.beginPath(), s.arc(O + v, E + v, v, 1.6 * W, N, !0), s.moveTo(O + v, E + K), s.lineTo(O + v / 5, E + v), s.stroke()), s.fillStyle = J, s.beginPath(), s.arc(O + v, E + v, v, 0, $, !0), s.moveTo(O + v, E + K), s.lineTo(O + h - v / 5, E + v), s.lineTo(O + v / 5, E + v), s.closePath(), s.fill(), s.fillStyle = Q.color, s.beginPath(), s.arc(O + v, E + v, v / 3, 0, $, !0), s.fill() + } + n && s.restore(), M != F && (s.globalAlpha = _) + } + }, + cr = function (p, x) { + return x > 2 * p ? p : x / 2 + }, + Mn = function (A, c, m, Z) { + if (!A || !c) return 0; + var L = D(c.y - A.y, c.x - A.x); + return m || (L = c.x < A.x ? L + W : L), L + Z + }, + Md = function (A, v, m, J, i, M, Q) { + Q && (A.x > v.x || A.x === v.x && A.y > v.y) && (m = cg[m], i = -i); + var b = Re(m, { + x: 0, + y: 0, + width: En(A, v), + height: 0 + }, M); + return b.x += J, b.y += i, b = new In(D(v.y - A.y, v.x - A.x)).tf(b), b.x += A.x, b.y += A.y, b + }, + Ml = function (B, l, d, C, M) { + if (B._19Q = !0, !d.getEdgeGroup()) return C ? d.s("edge.gap") : 0; + if (Bk(d.getSourceAgent()) || Bk(d.getTargetAgent())) return 0; + var m, X = 0, + L = 0, + $ = 0; + if (d.getEdgeGroup().getSiblings().each(function (Q) { + Q.each(function (Q) { + if (l.isVisible(Q) && Q.s(ej) == M) { + var Y = Q.s("edge.gap"); + m ? (L += $ / 2 + Y / 2, $ = Y) : (m = Q, $ = Y), Q === d && (X = L) + } + }) + }), C) return L - X + $; + var Z = X - L / 2; + return m && d._40I !== m._40I && (B._19Q = !1), Z + }, + Dk = function () { + var F = function (R) { + var e = []; + return R.forEach(function (I) { + e.push({ + x: I.x, + y: I.y + }), e.push({ + x: I.x + I.width, + y: I.y + I.height + }), e.push({ + x: I.x + I.width, + y: I.y + }), e.push({ + x: I.x, + y: I.y + I.height + }) + }), e + }; + return function (T, N, M) { + if ("oval" === T) { + var j = 0, + t = M.height / M.width, + f = t * t, + n = M.x + M.width / 2, + x = M.y + M.height / 2, + s = F(N); + s.forEach(function (z) { + var C = z.x - n, + k = z.y - x, + R = C * C + k * k / f; + R > j && (j = R) + }), j = w(j); + var O = t * j; + return { + x: n - j, + y: x - O, + width: 2 * j, + height: 2 * O + } + } + if ("circle" === T) { + var r = 0, + n = M.x + M.width / 2, + x = M.y + M.height / 2, + s = F(N); + return s.forEach(function (i) { + var Q = i.x - n, + m = i.y - x, + C = Q * Q + m * m; + C > r && (r = C) + }), r = w(r), { + x: n - r, + y: x - r, + width: 2 * r, + height: 2 * r + } + } + return "roundRect" === T ? (vn(M, V(M.width, M.height) / 16), M) : M + } + }(), + hg = O.graph = {}, + Bb = function (i, v, z) { + yc(Y + ".graph." + i, v, z) + }; + O.layout = {}; + var wk = {}, + lc = function (i, D, P, A, r, c, v, z) { + var X = v._zoom; + if (X !== v._cacheZoom && (v._cacheZoom = X, v._cacheImage = {}), X *= ij, A = Math.ceil(A * X), r = Math.ceil(r * X), A > 2048 || r > 2048) return D; + var w = [D.uuid, A, r, P].join("_"); + D.cacheRule && (w += "_" + Dj(D.cacheRule, c, v)); + var n = v._cacheImage[w]; + return n || (_m(), n = O.Default.toCanvas(D, A, r, P, c, v, z), zm() && (v._cacheImage[w] = n)), n + }; + Uh(u, { + setImageCacheRule: function (h, V) { + var C; + V || "object" != typeof h ? (C = {}, C[h] = V) : C = h; + for (var l in C) { + var g = C[l]; + dk(l) ? (yc = ii(l), yc ? yc.cacheRule = g : wk[l] = g) : l.cacheRule = g + } + } + }); + var zr = { + comps: [{ + type: bl, + points: [85, 50, 70, 115, 100, 71, 86, 107, 88, 49, 43, 117, 100, 48, 57, 106, 108, 57, 69, 55, 101, 53, 78, 114, 65, 55, 97, 112, 56, 70, 68, 49, 67, 97, 115, 122, 67, 43, 113, 110, 114, 54, 69, 61], + borderWidth: 1, + borderColor: F + }] + }; + if (zr[ul] = zr[Hh] = 160, x.Image) { + var fh = new x.Image; + fh.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAALUlEQVRYR+3QQREAAAABQfqXFsNnFTizzXk99+MAAQIECBAgQIAAAQIECBAgMBo/ACHo7lH9AAAAAElFTkSuQmCC", _c("default_blank", fh) + } + _c("node_image", ee(30, 30, [{ + type: Tq, + rect: [4, 5, 22, 16], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [2, 3, 26, 20], + borderWidth: 1, + borderColor: Ur + }, { + type: Tq, + rect: [11, 23, 8, 4], + background: Ur + }, { + type: Tq, + rect: [6, 27, 18, 2], + background: Ur + }])), _c("node_icon", ee(16, 16, [{ + type: Tq, + rect: [2, 2, 12, 10], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Xe, + rect: [2, 2, 12, 10], + width: 1, + color: Ur + }, { + type: Tq, + rect: [6, 12, 4, 2], + background: Ur + }, { + type: Tq, + rect: [4, 14, 8, 1], + background: Ur + }])), _c("block_icon", ee(16, 16, [{ + type: Xe, + rect: [1, 1, 14, 14], + width: 1, + color: Ur + }])), _c("group_image", ee(66, 39, [{ + type: Tq, + rect: [44.3, 18, 18.1, 12.8], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [3.3, 17.8, 18.1, 12.8], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [15.8, 3.2, 33.5, 26.4], + borderWidth: 1, + borderColor: Ur, + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [26.2, 29.4, 12.8, 4.2], + background: Ur + }, { + type: Tq, + rect: [21.3, 33.5, 22.5, 2.3], + background: Ur + }, { + type: Tq, + rect: [5.3, 32.7, 14.1, 2.1], + background: Ur + }, { + type: Tq, + rect: [9, 30.4, 6.7, 2.4], + background: Ur + }, { + type: Tq, + rect: [50, 30.7, 6.7, 2.4], + background: Ur + }, { + type: Tq, + rect: [46.3, 33, 14.1, 2.1], + background: Ur + }])), _c("group_icon", ee(16, 16, [{ + type: Tq, + rect: [4, 12, 4, 2], + background: Ur + }, { + type: Tq, + rect: [2, 13, 8, 1], + background: Ur + }, { + type: Tq, + rect: [12, 12, 2, 1], + background: Ur + }, { + type: Tq, + rect: [11, 13, 4, 1], + background: Ur + }, { + type: Tq, + rect: [10, 7, 6, 5], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [1, 2, 10, 10], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Xe, + rect: [1, 2, 10, 10], + width: 1, + color: Ur + }])), _c("refGraph_icon", ee(16, 16, [{ + type: "shape", + borderWidth: 1, + borderColor: Ur, + borderCap: "round", + rotation: .7854, + points: [12.5502, 6.7981, 12.5502, 6.7981, 12.5502, 4.8181, 12.5502, 3.7981, 12.5502, 2.7781, 11.36687, 1.7981, 10.0502, 1.7981, 8.73354, 1.7981, 7.5502, 2.8181, 7.5502, 3.7981, 7.5502, 4.55989, 7.5502, 7.79805, 7.5502, 7.79805, 7.5502, 7.79805, 7.5502, 9.7981, 10.0502, 9.7981], + segments: [1, 4, 4, 4, 4, 4] + }, { + type: "shape", + borderWidth: 1, + borderColor: Ur, + borderCap: "round", + rotation: -2.35619, + points: [8.4498, 11.2019, 8.4498, 11.2019, 8.4498, 9.2219, 8.4498, 8.2019, 8.4498, 7.1819, 7.26646, 6.2019, 5.9498, 6.2019, 4.63313, 6.2019, 3.4498, 7.2219, 3.4498, 8.2019, 3.4498, 8.9637, 3.4498, 12.20186, 3.4498, 12.20186, 3.4498, 12.20186, 3.4498, 14.2019, 5.9498, 14.2019], + segments: [1, 4, 4, 4, 4, 4] + }])), _c("edge_icon", ee(16, 16, [{ + type: Tq, + rect: [2.1, 6.9, 11.5, 2.6], + rotation: -.79, + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [10.8, 1, 4, 4], + background: Ur + }, { + type: Tq, + rect: [1, 11, 4, 4], + background: Ur + }])), _c("subGraph_image", ee(72, 45, [{ + type: bl, + points: [9, 42, .3, 38.4, 2.4, 28.8, 5.7, 21.6, 11.7, 22.5, 11.7, 15.9, 16.8, 13.8, 21.6, 12, 24.3, 15.9, 27.9, 3, 42.3, 2.1, 59.4, 4.5, 57.3, 18.3, 67.5, 18.9, 69.6, 27.3, 69.9, 38.4, 64.2, 41.4], + segments: [1, 3, 3, 3, 3, 3, 3, 3, 3], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [29.6, 30.7, 3.6, 1.8], + background: Ur + }, { + type: Tq, + rect: [28.4, 32.3, 6, 1.2], + background: Ur + }, { + type: Tq, + rect: [37.3, 32, 10.8, 1.8], + background: Ur + }, { + type: Tq, + rect: [39.1, 29.9, 7.2, 2.3], + background: Ur + }, { + type: Tq, + rect: [26.6, 23.7, 9.6, 7.2], + gradient: Nf, + gradientColor: Cn, + background: Ur + }, { + type: Tq, + rect: [34.3, 16.8, 16.8, 13.2], + borderWidth: 1, + borderColor: Ur, + gradient: Nf, + gradientColor: Cn, + background: Ur + }])), _c("subGraph_icon", ee(17, 17, [{ + type: bl, + points: [2.2, 14.6, .2, 11.9, .8, 8.8, 1.8, 5.9, 5.6, 7.4, 3.8, 1.6, 10.3, 3, 14.5, 4.2, 12.2, 7.5, 18.9, 7.2, 14.5, 14.5], + segments: [1, 3, 3, 3, 3, 3], + gradient: Nf, + gradientColor: Cn, + background: Ur + }])), _c("shape_icon", ee(16, 16, [{ + type: bl, + points: [1.5, 1, 8.4, 1, 8.4, 7.2, 14.6, 7.1, 14.6, 14.9, 1.5, 14.9, 1.5, 1], + background: Ur + }])), _c("polyline_icon", ee(16, 16, [{ + type: bl, + points: [1.5, 1, 8.4, 1, 8.4, 7.2, 14.6, 7.1, 14.6, 14.9, 1.5, 14.9, 1.5, 1], + borderWidth: 1, + borderColor: Ur + }, + eq(7.5, .4), eq(7.5, 6.3), eq(13.6, 6.3), eq(13.6, 14), eq(.7, 13.9), eq(.7, .3)])), _c("grid_icon", ee(16, 16, [{ + type: Tq, + rect: [1, 1, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [6, 1, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [11, 1, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [11, 6, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [6, 6, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [1, 6, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [11, 11, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [6, 11, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }, { + type: Tq, + rect: [1, 11, 4, 4], + background: Ur, + gradient: Nf, + gradientColor: Cn + }])), _c("light_icon", ee(16, 16, [{ + type: "rect", + rect: [6, 9, 5, 5], + borderWidth: 1, + borderColor: Ur + }, { + type: "circle", + rect: [1, 1, 15, 10], + borderWidth: 1, + borderColor: Ur, + gradient: Nf, + gradientColor: Cn, + background: { + func: function (R) { + var M = R ? R.s(ep) : F; + return ip(M) ? "rgb(" + Zb(255 * M[0]) + "," + Zb(255 * M[1]) + "," + Zb(255 * M[2]) + ")" : M || Ur + } + } + }])), _c("text_icon", ee(16, 16, [{ + type: "shape", + points: [3, 3, 13, 3, 8, 3, 8, 14], + segments: [1, 2, 1, 2], + borderWidth: 1, + borderColor: Ur + }])), _c("border_image", { + fitSize: !0, + comps: [{ + type: "border", + relative: !0, + rect: [0, 0, 1, 1], + color: { + func: "style@border_color" + }, + width: { + func: "style@border_width" + } + }] + }), _c("columnChart_image", { + fitSize: !0, + boundExtend: 150, + comps: [{ + type: { + func: "style@chart.type" + }, + relative: !0, + rect: [0, 0, 1, 1], + label: { + func: "style@chart.label" + }, + labelColor: { + func: "style@chart.label.color" + }, + labelFont: { + func: "style@chart.label.font" + }, + series: { + func: "style@chart.series" + }, + minValue: { + func: "style@chart.min.value" + }, + maxValue: { + func: "style@chart.max.value" + } + }] + }), _c("lineChart_image", { + fitSize: !0, + boundExtend: 150, + comps: [{ + type: "lineChart", + relative: !0, + rect: [0, 0, 1, 1], + label: { + func: "style@chart.label" + }, + labelColor: { + func: "style@chart.label.color" + }, + labelFont: { + func: "style@chart.label.font" + }, + series: { + func: "style@chart.series" + }, + minValue: { + func: "style@chart.min.value" + }, + maxValue: { + func: "style@chart.max.value" + }, + linePoint: { + func: "style@chart.line.point" + }, + lineWidth: { + func: "style@chart.line.width" + }, + line3d: { + func: "style@chart.line.3d" + } + }] + }), _c("pieChart_image", { + fitSize: !0, + boundExtend: 150, + comps: [{ + type: "pieChart", + relative: !0, + rect: [0, 0, 1, 1], + label: { + func: "style@chart.label" + }, + labelColor: { + func: "style@chart.label.color" + }, + labelFont: { + func: "style@chart.label.font" + }, + hollow: { + func: "style@chart.hollow" + }, + startAngle: { + func: "style@chart.start.angle" + }, + values: { + func: "style@chart.values" + }, + colors: { + func: "style@chart.colors" + } + }] + }); + var vr = function (G, q, $, t, Y, T) { + var h, N, f, A, M, F, g, X, V, R, r, I = []; + if (Math.abs(t) > 2 * Math.PI && (t = 2 * Math.PI), M = Math.ceil(Math.abs(t) / (Math.PI / 4)), h = t / M, N = -h, f = -$, M > 0) { + F = G + Math.cos($) * Y, g = q + Math.sin(-$) * T, I.push({ + x: F, + y: g + }); + for (var E = 0; M > E; E++) f += N, A = f - N / 2, X = G + Math.cos(f) * Y, V = q + Math.sin(f) * T, R = G + Math.cos(A) * (Y / Math.cos(N / 2)), r = q + Math.sin(A) * (T / Math.cos(N / 2)), I.push({ + x: R, + y: r + }), I.push({ + x: X, + y: V + }) + } + return I + }, + gl = function (J) { + if (J) { + var i = J._data; + if (i instanceof O.Shape) return { + points: i.getPoints(), + segments: i.getSegments() + }; + var I; + if (i instanceof O.Edge && (I = J._78o)) { + var V, k, C = I.type, + T = I.points, + e = I.segments, + l = I.edgeTypeInfo; + if (!C || T) { + var a = I.sourcePoint, + U = a.x, + N = a.y, + _ = I.targetPoint, + S = _.x, + F = _.y; + if (C) e ? (V = new xr({ + x: U, + y: N + }), V.addAll(T), V.add({ + x: S, + y: F + }), k = new xr(e._as)) : (V = new xr({ + x: U, + y: N + }), T.each(function (U) { + V.add(U) + }), V.add({ + x: S, + y: F + })); + else if (I.looped) { + V = new xr(vr(U, N, 0, 2 * Math.PI, I.radius, I.radius)), k = new xr([1]); + for (var B = 0; B < (V.size() - 1) / 2; B++) k.add(3) + } else V = new xr, I.center ? (V.add({ + x: I.c1.x, + y: I.c1.y + }), V.add({ + x: U, + y: N + }), V.add({ + x: S, + y: F + }), V.add({ + x: I.c2.x, + y: I.c2.y + })) : (V.add({ + x: U, + y: N + }), V.add({ + x: S, + y: F + })) + } else l && (V = new xr(l.points._as), l.segments && (k = new xr(l.segments._as))); + return { + points: V, + segments: k + } + } + } + }, + qm = function (H, W, F) { + if (null == W) { + var j = gl(H); + if (!j) return; + W = j.points, F = j.segments + } + if (W) { + if (Array.isArray(W) && (W = new xr(W)), "number" == typeof W.get(0)) { + for (var m = new O.List, $ = 0; $ < W.size(); $ += 2) m.add({ + x: W.get($), + y: W.get($ + 1) + }); + W = m + } + if (!F) { + F = [1]; + for (var G = W.length - 1; G > 0; G--) F.push(2) + } + Array.isArray(F) && (F = new xr(F)); + for (var x = Yo(W._as, F._as, 50), A = x.length, B = [], $ = 0; A > $; $++) { + var d = x[$]; + d.length > 1 && B.push(d) + } + return B + } + }, + Pp = function (Q) { + for (var i = 0, U = Q.length - 1, N = 0; U > N; N++) { + var I = Q[N], + g = Q[N + 1], + F = g.x - I.x, + C = g.y - I.y; + i += Math.sqrt(F * F + C * C) + } + return i + }, + eh = function (F, e) { + for (var x = 0, u = e.length, I = 0; u > I; I++) { + var W = e[I]; + if (x += W, x > F) return I + } + return Math.min(I, u - 1) + }, + tp = function (j, D) { + for (var e = 0, g = 0, _ = 0, c = j.length - 1, U = 0; c > U; U++) { + var v = j[U], + H = j[U + 1], + b = H.x - v.x, + C = H.y - v.y; + if (_ = Math.sqrt(b * b + C * C), e += _, e > D) { + e -= _, g = U; + break + } + } + var I = j[g], + L = j[g + 1], + t = Math.atan2(L.y - I.y, L.x - I.x), + z = D - e, + C = Math.sin(t) * z, + b = Math.cos(t) * z; + return { + x: I.x + b, + y: I.y + C + } + }, + np = function (q, M) { + if (q) { + var r; + if (0 === M) r = q[0][0]; + else if (100 === M) q = q[q.length - 1], r = q[q.length - 1]; + else { + for (var b = 0, I = [], z = q.length, l = 0; z > l; l++) { + var A = q[l], + Q = Pp(A); + b += Q, I.push(Q) + } + for (var m = b * M / 100, p = eh(m, I), o = 0, e = 0; p > e; e++) o += I[e]; + m -= o, r = tp(q[p], m) + } + return r + } + }, + Kk = function (Y) { + var z, O, l, H, E = gl(Y), + b = [], + s = E.points, + o = E.segments, + $ = -1; + for (O = 0, l = o ? o.length : s.length; l > O; O++) { + if (z = o ? o.get(O) : 1, 3 === z) H = 2; + else if (4 === z) H = 3; + else { + if (5 === z) continue; + H = 1 + } + $ += H, b.push(s.get($)) + } + return b + }, + Tn = function (w, j, x, v) { + function P(M) { + if (M >= 0 && 1 >= M) { + G = j(M); + var K = (w.x - G.x) * (w.x - G.x) + (w.y - G.y) * (w.y - G.y); + return F > K ? (F = K, _ = M, !0) : !1 + } + } + x = x || 100, v = v || 1e-5; + for (var F = 1 / 0, _ = 0, G = new Xi, M = 0; x > M; ++M) P(M / x); + for (var Z = 1 / (2 * x); Z > v;) P(_ - Z) || P(_ + Z) || (Z /= 2); + return _ + }; + Uh(u, { + _edgeProtectMethod: { + getStraightLinePoints: qm, + calculateLineLength: Pp, + calcSegmentIndexByDistance: eh, + calculatePointAlongLine: tp, + getPercentPosition: np, + getRealPointsFromDataUI: Kk + } + }); + var Mb = function (g, s) { + for (var J = g.vertices, y = 0; y < J.length; y++) { + var H = J[y], + k = H.y; + H.y = H.z, H.z = -k, s && (H.y += s) + } + }, + ig = function (G) { + for (var k, B, V, H, D, s, n = [], v = [], E = [], X = G.faces, A = 0, O = 0, J = 0, L = X.length; L > A; A++, O += 6, J += 9) { + var o = X[A]; + 1 === o.i ? (k || (k = [], B = [], V = []), yd(o, A, O, J, G, k, V, B)) : 2 === o.i ? (H || (H = [], D = [], s = []), yd(o, A, O, J, G, H, s, D)) : yd(o, A, O, J, G, n, E, v) + } + return { + vs: n, + uv: v, + ns: E, + top_vs: k, + top_uv: B, + top_ns: V, + bottom_vs: H, + bottom_uv: D, + bottom_ns: s + } + }, + yd = function (z, t, w, o, K, X, q, W) { + var c = K.vertices, + e = K.faceVertexUvs, + p = c[z.a], + H = c[z.b], + O = c[z.c]; + X.push(p.x, p.y, p.z, H.x, H.y, H.z, O.x, O.y, O.z); + var D, V, b, Y = z.vertexNormals; + 3 === Y.length ? (D = Y[0], V = Y[1], b = Y[2]) : D = V = b = z.normal, q.push(D.x, D.y, D.z, V.x, V.y, V.z, b.x, b.y, b.z); + var x = e[0][t][0], + M = e[0][t][1], + $ = e[0][t][2]; + W.push(x.x, x.y, M.x, M.y, $.x, $.y) + }, + _h = function () { + function Q(s, y) { + return s.dot(y) > 0 + } + + function q(w, P, v, h, g, Z, k) { + for (var y, O, M = [P, v, h], G = [g, Z, k], L = [], Y = M.length, N = !0; Y-- && N;) { + for (var J = M[Y], f = G.length, j = !1; f--;) + if (J.equals(G[f])) { + G.splice(f, 1), L.push(J), j = !0; + break + } + if (!j) { + if (y) { + N = !1; + break + } + y = J + } + } + return N && 2 === L.length && (O = G[0], W.subVectors(y, L[0]), I.subVectors(O, L[0]), B.subVectors(y, L[1]), W.x * B.y * I.z + B.x * I.y * W.z + I.x * W.y * B.z - I.x * B.y * W.z - I.y * B.z * W.x - I.z * B.x * W.y < 1e-6 && (R.subVectors(O, L[1]), F.subVectors(L[1], L[0]), Q(F, W) && Q(F, I) && (F.negate(), Q(F, B) && Q(F, R)))) ? (w.push(L[1].x, L[1].y, L[1].z), w.push(y.x, y.y, y.z), w.push(y.x, y.y, y.z), w.push(L[0].x, L[0].y, L[0].z), w.push(L[0].x, L[0].y, L[0].z), w.push(O.x, O.y, O.z), w.push(O.x, O.y, O.z), w.push(L[1].x, L[1].y, L[1].z), 2) : (w.push(P.x, P.y, P.z), w.push(v.x, v.y, v.z), w.push(v.x, v.y, v.z), w.push(h.x, h.y, h.z), w.push(h.x, h.y, h.z), w.push(P.x, P.y, P.z), 1) + } + + function J() { + this._vertexMap = {}, this._lineMap = {}, this._lineList = [] + } + + function f(N, f, T, b, F, o, d) { + var v = [T, F]; + N[0] === b && v.reverse(); + var u = [v[0]._key, v[1]._key].join("|"), + O = N._triangles[u]; + O || (N._triangles[u] = O = {}); + var t = [o._key, d._key].join("|"); + O[t] || (O[t] = [o, d]) + } + + function G(c, j, F) { + var L = c._planes[F._key]; + if (!L) + for (var m in c._planes) { + var r = c._planes[m]; + if (r._normal.angleTo(F) < .001) { + L = r; + break + } + } + return L ? (L._vertices.indexOf(j) < 0 && L._vertices.push(j), void 0) : (c._planes[F._key] = { + _normal: F, + _vertices: [j] + }, void 0) + } + + function k(n, h) { + return 0 === h ? "0|0|0" : 1 / 0 === Math.abs(h) ? [n.x, n.y, n.z].join("|") : [Math.round(X.angleTo(n) * h), Math.round(t.angleTo(n) * h), Math.round(_.angleTo(n) * h)].join("|") + } + + function d(Z, G) { + var g = Z._ctlineModel; + if (g || (Z._ctlineModel = g = []), g[0]) return g[0]; + var u; + u = ip(Z) ? Z : [Z]; + var p, R, n, I, l, z, E, d, K, M, A, N, Q, Y, H, $, s, W, e, D = ["", "top_", "bottom_"]; + g = []; + var C = []; + for ($p(u, G, C), p = 0, R = C.length; R > p; p++) + if (M = C[p]) + for (ko(M), n = 0, I = D.length; I > n; n++) + if (K = M[D[n] + "lvs"]) + for (s = g.length, W = K.length, g.length = s + W, e = 0; W > e; ++e, ++s) g[s] = K[e]; + else if (E = M[D[n] + "vs"]) { + d = M[D[n] + "is"], z = d ? d.length : E.length / 3; + for (var l = 0; z - 1 > l;) d ? (A = d[l], N = d[l + 1], Q = d[l + 2], Y = d[l + 3], H = d[l + 4], $ = d[l + 5]) : (A = l, N = l + 1, Q = l + 2, Y = l + 3, H = l + 4, $ = l + 5), S.fromArray(E, 3 * A), L.fromArray(E, 3 * N), O.fromArray(E, 3 * Q), v.fromArray(E, 3 * Y), P.fromArray(E, 3 * H), i.fromArray(E, 3 * $), l += 3 * q(g, S, L, O, v, P, i); + z > l && (d ? (A = d[l], N = d[l + 1], Q = d[l + 2]) : (A = l, N = l + 1, Q = l + 2), S.fromArray(E, 3 * A), L.fromArray(E, 3 * N), O.fromArray(E, 3 * Q), g.push(S.x, S.y, S.z), g.push(L.x, L.y, L.z), g.push(L.x, L.y, L.z), g.push(O.x, O.y, O.z), g.push(O.x, O.y, O.z), g.push(S.x, S.y, S.z)) + } + return Z._ctlineModel[0] = g, g + } + + function e(k, I, W) { + var E = k._ctlineModel; + E || (k._ctlineModel = E = []); + var e = E[1]; + if (e && e.epsilon === W) return e; + e = [], e.epsilon = W; + var S; + S = ip(k) ? k : [k]; + var H, p, f, y, G, F, P, O, r, D, b, o, V = ["", "top_", "bottom_"], + u = new J, + z = []; + for ($p(S, I, z), H = 0, p = z.length; p > H; H++) + if (r = z[H]) + for (ko(r), f = 0, y = V.length; y > f; f++) + if (P = r[V[f] + "vs"]) { + O = r[V[f] + "is"], F = O ? O.length : P.length / 3; + for (var G = 0, G = 0; F > G; G += 3) O ? (D = O[G], b = O[G + 1], o = O[G + 2]) : (D = G, b = G + 1, o = G + 2), u._addTriangle(P, Z, D, b, o, W) + } + return u._toLineVS(e), k._ctlineModel[1] = e, e + } + + function y(K, A, a) { + var T = K._ctlineModel; + T || (K._ctlineModel = T = []); + var S = T[1]; + if (S && S.epsilon === a) return S; + S = [], S.epsilon = a; + var t; + t = ip(K) ? K : [K]; + var B, x, z, G, $, L, V, o, C, h, e, F, m, v = ["", "top_", "bottom_"], + k = new J, + l = []; + for ($p(t, A, l), B = 0, x = l.length; x > B; B++) + if (h = l[B]) + for (ko(h), z = 0, G = v.length; G > z; z++) + if (V = h[v[z] + "vs"]) { + o = h[v[z] + "is"], C = h[v[z] + "ns"], L = o ? o.length : V.length / 3; + for (var $ = 0, $ = 0; L > $; $ += 3) o ? (e = o[$], F = o[$ + 1], m = o[$ + 2]) : (e = $, F = $ + 1, m = $ + 2), k._addTriangle(V, C, e, F, m, a) + } + return k._toLineVS(S), K._ctlineModel[2] = S, S + } + var S = new tl, + L = new tl, + O = new tl, + v = new tl, + P = new tl, + i = new tl, + W = new tl, + B = new tl, + I = new tl, + R = new tl, + F = new tl, + h = new tl; + J.prototype._findVertex = function (J, y) { + h.fromArray(J, 3 * y); + var G = [h.x, h.y, h.z].join(","), + c = this._vertexMap[G]; + if (!c) { + var K = h.clone(); + K._key = G, this._vertexMap[G] = c = K + } + return c + }, J.prototype._findLine = function (H, E) { + var g = [H, E]; + H._key > E._key && g.reverse(), g._key = [g[0]._key, g[1]._key].join("|"); + var v = this._lineMap[g._key]; + return v || (this._lineMap[g._key] = v = g, g._triangles = {}, g._planes = {}, this._lineList.push(g)), v + }; + var X = new tl(1, 0, 0), + t = new tl(0, 1, 0), + _ = new tl(0, 0, 1), + w = new tl, + a = new tl; + return J.prototype._addTriangle = function (Y, g, O, S, x, T) { + var E, s, r, i = this._findVertex(Y, O), + R = this._findVertex(Y, S), + c = this._findVertex(Y, x), + t = this._findLine(i, R), + l = this._findLine(R, c), + P = this._findLine(c, i); + g ? (E = (new tl).fromArray(g, 3 * O), E._key = k(E, T), s = (new tl).fromArray(g, 3 * S), s._key = k(s, T), r = (new tl).fromArray(g, 3 * x), r._key = k(r, T), f(t, i, E, R, s, c, r), f(l, R, s, c, r, i, E), f(P, c, r, i, E, R, s)) : (a.subVectors(c, R), w.subVectors(R, i), E = (new tl).crossVectors(w, a), E._key = k(E, T), G(t, c, E), G(l, i, E), G(P, R, E)) + }, J.prototype._toLineVS = function (z) { + for (var N = this._lineList, H = 0, x = N.length; x > H; ++H) { + var d = N[H], + A = !1; + for (var I in d._triangles) + if (1 == o.keys(d._triangles[I]).length) { + z.push(d[0].x, d[0].y, d[0].z, d[1].x, d[1].y, d[1].z), A = !0; + break + } + if (!A) + for (var Q in d._planes) + if (1 == d._planes[Q]._vertices.length) { + z.push(d[0].x, d[0].y, d[0].z, d[1].x, d[1].y, d[1].z), A = !0; + break + } + } + }, [d, e, y] + }(), + hl = function (A, R) { + var F = A._lineModel; + if (F) return F; + var o; + o = ip(A) ? A : [A]; + var N, v, q, n, m, a, E, h, u, P, L, f, y = ["", "top_", "bottom_"]; + F = []; + var D = []; + for ($p(A, R, D), N = 0, v = D.length; v > N; N++) + if (u = D[N]) + for (q = 0, n = y.length; n > q; q++) + if (E = u[y[q] + "vs"]) { + h = u[y[q] + "is"], a = h ? h.length : E.length / 3; + for (var m = 0; a > m; m += 3) h ? (P = h[m], L = h[m + 1], f = h[m + 2]) : (P = m, L = m + 1, f = m + 2), P *= 3, L *= 3, f *= 3, F.push(E[P], E[P + 1], E[P + 2], E[L], E[L + 1], E[L + 2], E[L], E[L + 1], E[L + 2], E[f], E[f + 1], E[f + 2], E[f], E[f + 1], E[f + 2], E[P], E[P + 1], E[P + 2]) + } + return A._lineModel = F, F + }, + wf = function ($, T, S, W, C, Y, G, b, N) { + S == F && (S = !0), W == F && (W = !0), G == F && (G = 1), b == F && (b = 0); + var u = new af; + return en(u, $, T, N), u = u.toShapes(), ig(new xb(u, { + top: S, + bottom: W, + curveSegments: C, + amount: G, + repeatUVLength: Y + }, -G / 2 + b)) + }, + jd = function (u, l) { + this.x = u || 0, this.y = l || 0 + }; + jd.prototype = { + constructor: jd, + add: function (C) { + return this.x += C.x, this.y += C.y, this + }, sub: function (t) { + return this.x -= t.x, this.y -= t.y, this + }, equals: function (m) { + return m.x === this.x && m.y === this.y + }, multiplyScalar: function (I) { + return this.x *= I, this.y *= I, this + }, distanceTo: function (B) { + return w(this.distanceToSquared(B)) + }, distanceToSquared: function (M) { + var w = this.x - M.x, + c = this.y - M.y; + return w * w + c * c + }, clone: function () { + return new jd(this.x, this.y) + } + }; + var pe = function (T, X, O) { + this.x = T || 0, this.y = X || 0, this.z = O || 0 + }; + pe.prototype = { + constructor: pe, + set: function (g, Y, X) { + return this.x = g, this.y = Y, this.z = X, this + }, setY: function (D) { + return this.y = D, this + }, copy: function (w) { + return this.x = w.x, this.y = w.y, this.z = w.z, this + }, add: function (E) { + return this.x += E.x, this.y += E.y, this.z += E.z, this + }, addVectors: function (K, U) { + return this.x = K.x + U.x, this.y = K.y + U.y, this.z = K.z + U.z, this + }, sub: function (k) { + return this.x -= k.x, this.y -= k.y, this.z -= k.z, this + }, subVectors: function (x, k) { + return this.x = x.x - k.x, this.y = x.y - k.y, this.z = x.z - k.z, this + }, multiplyScalar: function (c) { + return this.x *= c, this.y *= c, this.z *= c, this + }, applyMatrix4: function (L) { + var q = this.x, + j = this.y, + z = this.z, + K = L.elements; + return this.x = K[0] * q + K[4] * j + K[8] * z + K[12], this.y = K[1] * q + K[5] * j + K[9] * z + K[13], this.z = K[2] * q + K[6] * j + K[10] * z + K[14], this + }, divideScalar: function (n) { + if (0 !== n) { + var u = 1 / n; + this.x *= u, this.y *= u, this.z *= u + } else this.x = 0, this.y = 0, this.z = 0; + return this + }, dot: function (N) { + return this.x * N.x + this.y * N.y + this.z * N.z + }, length: function () { + return w(this.x * this.x + this.y * this.y + this.z * this.z) + }, normalize: function () { + return this.divideScalar(this.length()) + }, cross: function (L) { + var n = this.x, + H = this.y, + X = this.z; + return this.x = H * L.z - X * L.y, this.y = X * L.x - n * L.z, this.z = n * L.y - H * L.x, this + }, crossVectors: function (e, o) { + var L = e.x, + G = e.y, + Q = e.z, + i = o.x, + S = o.y, + y = o.z; + return this.x = G * y - Q * S, this.y = Q * i - L * y, this.z = L * S - G * i, this + }, distanceTo: function ($) { + return w(this.distanceToSquared($)) + }, distanceToSquared: function (E) { + var Z = this.x - E.x, + g = this.y - E.y, + t = this.z - E.z; + return Z * Z + g * g + t * t + }, clone: function () { + return new pe(this.x, this.y, this.z) + } + }; + var wl = function () { + this.elements = new Float32Array(16) + }; + wl.prototype = { + constructor: wl, + set: function ($, L, M, H, X, x, N, U, p, Q, B, D, v, o, u, k) { + var K = this.elements; + return K[0] = $, K[4] = L, K[8] = M, K[12] = H, K[1] = X, K[5] = x, K[9] = N, K[13] = U, K[2] = p, K[6] = Q, K[10] = B, K[14] = D, K[3] = v, K[7] = o, K[11] = u, K[15] = k, this + }, makeRotationAxis: function (r, I) { + var L = k(I), + w = n(I), + O = 1 - L, + t = r.x, + j = r.y, + m = r.z, + G = O * t, + S = O * j; + return this.set(G * t + L, G * j - w * m, G * m + w * j, 0, G * j + w * m, S * j + L, S * m - w * t, 0, G * m - w * j, S * m + w * t, O * m * m + L, 0, 0, 0, 0, 1), this + } + }; + var kf = function (o) { + this.repeatUVLength = o + }; + kf.prototype = { + generateTopUV: function (h, g, z, X, e, T, b) { + var R, E, i, l, u = h.vertices, + f = u[X].x, + V = u[X].y, + m = u[e].x, + L = u[e].y, + S = u[T].x, + w = u[T].y, + Q = this.repeatUVLength; + if (Q) R = 0, E = 0, i = Q, l = Q; + else { + this._bb || (this._bb = g.getBoundingBox()); + var y = this._bb; + R = y.minX, E = y.minY, i = y.maxX - R, l = y.maxY - E + } + return b ? [new jd((f - R) / i, (V - E) / l), new jd((m - R) / i, (L - E) / l), new jd((S - R) / i, (w - E) / l)] : [new jd((f - R) / i, 1 - (V - E) / l), new jd((m - R) / i, 1 - (L - E) / l), new jd((S - R) / i, 1 - (w - E) / l)] + }, generateBottomUV: function (e, x, U, g, Y, u) { + return this.generateTopUV(e, x, U, g, Y, u, !0) + }, generateSideWallUV: function (d, B, H, F, h, p, Q, R, c, l, e, E) { + if (!this._cl) { + for (var S, L, U = [], q = 0, n = H.length, O = 0; n > O; O++) { + S = H[O], L = H[(O + 1) % n]; + var V = S.x - L.x, + M = S.y - L.y, + o = w(V * V + M * M); + U.push(q), q += o + } + for (var O = 0; n > O; O++) U[O] /= q; + this._cl = U + } + var U = this._cl, + K = 1 - c / l, + A = 1 - (c + 1) / l, + k = U[e], + Z = U[E]; + return Z > k && (k += 1), [new jd(k, K), new jd(Z, K), new jd(Z, A), new jd(k, A)] + } + }; + var sf = function (K, q, l, p, L, $) { + this.a = K, this.b = q, this.c = l, this.i = $, this.normal = p instanceof pe ? p : new pe, this.vertexNormals = p instanceof Array ? p : [] + }; + sf.prototype = { + constructor: sf + }; + //修改时间限制 new(x[a.substr(3, 3) + Nc[A]])取的字符串"Date" + var lr = [-8, 14, -5, 9, 1, 12, 3, 6, -1], + Jq = function () { + if (Jq[to] != F) return Jq[to]; + for (var g = Xb[to], b = lr, a = Qp.prototype.getClassName(), O = '"', A = 0, m = "", S = !1, P = +new (x[a.substr(3, 3) + Nc[A]]), q = A; q < b.length; q++) { + var C = b.length - q; + m += q % 2 === A ? b[q] + C + "" : b[q] - C + "" + } + for (var q = A; 4 > q; q++) m += A; + if (m = m * m.length / m.length, P > m) { + if (g && g[A] && g[4 / Tq.length]) { + for (var R, k, G, s, V, u, J, p, n = g[0], w = g[1], X = "", B = 0, q = 0; q < w.length; q++) w[q] === O ? p ? (p = !1, 0 !== B % 2 && (R == F ? R = X : k == F ? k = X : G == F ? G = X : s == F ? s = X : V == F ? V = X : u == F ? u = X : J == F && (J = X)), B++, X = "") : p = !0 : p && (X += w[q]); + for (var f, E, h, j = "", l = 0, q = 0; q < n.length; q++) n[q] === O ? f ? (f = !1, 0 !== l % 2 && (E == F ? E = j : h == F && (h = j)), l++, j = "") : f = !0 : f && (j += n[q]); + var D = R + k + G + s + V + u, + c = !u || u === kg; + if (!c && u) + for (var Z, q = 0, M = u.length; M > q; q++) u[q] === go[4] ? Z === kg ? c = Jj : Z[0] === Fi[7] && kg && kg.indexOf(Z.substr(1)) >= 0 ? c = Ln : Z = F : (Z == F ? Z = u[q] : Z += u[q], q === M - 1 && (Z === kg ? c = Jj : Z[0] === Fi[7] && kg && kg.indexOf(Z.substr(1)) >= 0 && (c = Ln))); + (S = $i(D, J) && $i(E, h) && E === R && c && (!V || V > P)) && G.indexOf(bg[0]) >= 0 && (Jq[bg[0]] = 1), S && G.indexOf(1) >= 0 && (Jq[1] = 1), S && G.indexOf(3) >= 0 && (Jq[2] = 1), S && G.indexOf(4) >= 0 && (Jq[3] = 1), S && G.indexOf(7) >= 0 && (Jq[4] = 1) + } + } else S = !0, Jq[bg[0]] = Jq[1] = Jq[2] = Jq[3] = Jq[4] = 1; + return Jq[to] = S, S + }, + hi = function () { }, + ib = hi.prototype; + ib.getPointAt = function (n) { + var y = this.getUtoTmapping(n); + return this.getPoint(y) + }, ib.getPoints = function (X) { + X || (X = 5); + var I, z = []; + for (I = 0; X >= I; I++) z.push(this.getPoint(I / X)); + return z + }, ib.getSpacedPoints = function (K) { + K || (K = 5); + var L, Y = []; + for (L = 0; K >= L; L++) Y.push(this.getPointAt(L / K)); + return Y + }, ib.getLength = function () { + var a = this.getLengths(); + return a[a.length - 1] + }, ib.getLengths = function (r) { + if (r || (r = this.__arcLengthDivisions ? this.__arcLengthDivisions : 200), this.cacheArcLengths && this.cacheArcLengths.length == r + 1 && !this.needsUpdate) return this.cacheArcLengths; + this.needsUpdate = !1; + var G, Y, y = [], + e = this.getPoint(0), + O = 0; + for (y.push(0), Y = 1; r >= Y; Y++) G = this.getPoint(Y / r), O += G.distanceTo(e), y.push(O), e = G; + return this.cacheArcLengths = y, y + }, ib.getUtoTmapping = function (D, x) { + var p, J = this.getLengths(), + O = 0, + q = J.length; + p = x ? x : D * J[q - 1]; + for (var u, F = 0, i = q - 1; i >= F;) + if (O = T(F + (i - F) / 2), u = J[O] - p, 0 > u) F = O + 1; + else { + if (!(u > 0)) { + i = O; + break + } + i = O - 1 + } + if (O = i, J[O] == p) { + var l = O / (q - 1); + return l + } + var W = J[O], + U = J[O + 1], + Q = U - W, + c = (p - W) / Q, + l = (O + c) / (q - 1); + return l + }, ib.getTangent = function (V) { + var J = 1e-4, + U = V - J, + j = V + J; + 0 > U && (U = 0), j > 1 && (j = 1); + var g = this.getPoint(U), + z = this.getPoint(j), + R = z.clone().sub(g); + return R.normalize() + }, ib.getTangentAt = function (k) { + var A = this.getUtoTmapping(k); + return this.getTangent(A) + }, hi.create = function (g, T) { + return g.prototype = Ci(hi.prototype), g.prototype.getPoint = T, g + }; + var Pn = function () { + this.curves = [], this.autoClose = !1 + }, + Ig = Pn.prototype = Ci(ib); + Ig.add = function (e) { + this.curves.push(e) + }, Ig.closePath = function () { + var m = this.curves[0].getPoint(0), + N = this.curves[this.curves.length - 1].getPoint(1); + m.equals(N) || this.curves.push(new Aj(N, m)) + }, Ig.getPoint = function (_) { + for (var Y, c, X = _ * this.getLength(), A = this.getCurveLengths(), V = 0; V < A.length;) { + if (A[V] >= X) { + Y = A[V] - X, c = this.curves[V]; + var z = 1 - Y / c.getLength(); + return c.getPointAt(z) + } + V++ + } + return null + }, Ig.getLength = function () { + var S = this.getCurveLengths(); + return S[S.length - 1] + }, Ig.getCurveLengths = function () { + if (this.cacheLengths && this.cacheLengths.length == this.curves.length) return this.cacheLengths; + var $, i = [], + B = 0, + k = this.curves.length; + for ($ = 0; k > $; $++) B += this.curves[$].getLength(), i.push(B); + return this.cacheLengths = i, i + }, Ig.getTransformedPoints = function (b) { + return this.getPoints(b) + }, Ig.getBoundingBox = function () { + var C, L, h, F, t, A, v = this.getPoints(); + C = L = Number.NEGATIVE_INFINITY, F = t = Number.POSITIVE_INFINITY; + var B, s, D, V, X = v[0] instanceof pe; + for (V = X ? new pe : new jd, s = 0, D = v.length; D > s; s++) B = v[s], B.x > C && (C = B.x), B.x < F && (F = B.x), B.y > L && (L = B.y), B.y < t && (t = B.y), X && (B.z > h && (h = B.z), B.z < A && (A = B.z)), V.add(B); + var r = { + minX: F, + minY: t, + maxX: C, + maxY: L + }; + return X && (r.maxZ = h, r.minZ = A), r + }; + var $h = function (Y) { + Pn.call(this), this.actions = [], Y && this.fromPoints(Y) + }, + Rd = $h.prototype = Ci(Pn.prototype), + as = "moveTo", + js = "lineTo", + al = "quadraticCurveTo", + Xc = "bezierCurveTo", + Ir = "arc", + sr = "ellipse"; + Rd.fromPoints = function (Q) { + this.moveTo(Q[0].x, Q[0].y); + for (var y = 1, C = Q.length; C > y; y++) this.lineTo(Q[y].x, Q[y].y) + }, Rd.moveTo = function () { + var H = Array.prototype.slice.call(arguments); + this.actions.push({ + action: as, + args: H + }) + }, Rd.lineTo = function (A, v) { + var N = Array.prototype.slice.call(arguments), + u = this.actions[this.actions.length - 1].args, + W = u[u.length - 2], + d = u[u.length - 1], + S = new Aj(new jd(W, d), new jd(A, v)); + this.curves.push(S), this.actions.push({ + action: js, + args: N + }) + }, Rd.quadraticCurveTo = function (U, O, B, s) { + var W = Array.prototype.slice.call(arguments), + C = this.actions[this.actions.length - 1].args, + S = C[C.length - 2], + H = C[C.length - 1], + J = new tq(new jd(S, H), new jd(U, O), new jd(B, s)); + this.curves.push(J), this.actions.push({ + action: al, + args: W + }) + }, Rd.bezierCurveTo = function (Y, N, C, X, G, L) { + var W = Array.prototype.slice.call(arguments), + k = this.actions[this.actions.length - 1].args, + Z = k[k.length - 2], + o = k[k.length - 1], + c = new hc(new jd(Z, o), new jd(Y, N), new jd(C, X), new jd(G, L)); + this.curves.push(c), this.actions.push({ + action: Xc, + args: W + }) + }, Rd.arc = function (s, y, p, l, e, Z) { + var h = this.actions[this.actions.length - 1].args, + L = h[h.length - 2], + q = h[h.length - 1]; + this.absarc(s + L, y + q, p, l, e, Z) + }, Rd.absarc = function (X, q, E, T, d, u) { + this.absellipse(X, q, E, E, T, d, u) + }, Rd.ellipse = function (g, I, r, h, o, Y, n) { + var x = this.actions[this.actions.length - 1].args, + j = x[x.length - 2], + J = x[x.length - 1]; + this.absellipse(g + j, I + J, r, h, o, Y, n) + }, Rd.absellipse = function (H, J, Y, t, L, k, R) { + var o = Array.prototype.slice.call(arguments), + x = new Hk(H, J, Y, t, L, k, R); + this.curves.push(x); + var W = x.getPoint(1); + o.push(W.x), o.push(W.y), this.actions.push({ + action: sr, + args: o + }) + }, Rd.getSpacedPoints = function (Z) { + Z || (Z = 40); + for (var w = [], c = 0; Z > c; c++) w.push(this.getPoint(c / Z)); + return w + }, Rd.getPoints = function (b, B) { + b = b || 12; + var v, i, f, A, T, U, G, _, u, p, x, D, I, r, H, g, y, h, a = []; + for (v = 0, i = this.actions.length; i > v; v++) switch (f = this.actions[v], A = f.action, T = f.args, A) { + case as: + a.push(new jd(T[0], T[1])); + break; + case js: + a.push(new jd(T[0], T[1])); + break; + case al: + for (U = T[2], G = T[3], p = T[0], x = T[1], a.length > 0 ? (r = a[a.length - 1], D = r.x, I = r.y) : (r = this.actions[v - 1].args, D = r[r.length - 2], I = r[r.length - 1]), H = 1; b >= H; H++) g = H / b, y = uc.b2(g, D, p, U), h = uc.b2(g, I, x, G), a.push(new jd(y, h)); + break; + case Xc: + for (U = T[4], G = T[5], p = T[0], x = T[1], _ = T[2], u = T[3], a.length > 0 ? (r = a[a.length - 1], D = r.x, I = r.y) : (r = this.actions[v - 1].args, D = r[r.length - 2], I = r[r.length - 1]), H = 1; b >= H; H++) g = H / b, y = uc.b3(g, D, p, _, U), h = uc.b3(g, I, x, u, G), a.push(new jd(y, h)); + break; + case Ir: + var s, Y = T[0], + C = T[1], + m = T[2], + o = T[3], + R = T[4], + Z = !!T[5], + P = R - o, + M = 2 * b; + for (H = 1; M >= H; H++) g = H / M, Z || (g = 1 - g), s = o + g * P, y = Y + m * k(s), h = C + m * n(s), a.push(new jd(y, h)); + break; + case sr: + var s, Y = T[0], + C = T[1], + K = T[2], + J = T[3], + o = T[4], + R = T[5], + Z = !!T[6], + P = R - o, + M = 2 * b; + for (H = 1; M >= H; H++) g = H / M, Z || (g = 1 - g), s = o + g * P, y = Y + K * k(s), h = C + J * n(s), a.push(new jd(y, h)) + } + var $, V, O = z["shape3d.point.epsilon"], + j = !1; + for (i = a.length, v = 0, i = a.length; i > v; v++) $ = a[v], V = v === i - 1 ? a[0] : a[v + 1], $ && V && X($.x - V.x) < O && X($.y - V.y) < O && (j = !0, a[v] = null); + if (j) { + var S = []; + for (v = 0; i > v; v++) a[v] && S.push(a[v]); + a = S + } + return B && a.push(a[0]), a + }, Rd.toShapes = function (w, P) { + function U(W) { + var U, q, E, t, Z, A = [], + V = new $h; + for (U = 0, q = W.length; q > U; U++) E = W[U], Z = E.args, t = E.action, t == as && 0 != V.actions.length && (A.push(V), V = new $h), V[t].apply(V, Z); + return 0 != V.actions.length && A.push(V), A + } + + function u(f) { + for (var m = [], U = 0, o = f.length; o > U; U++) { + var w = f[U], + V = new af; + V.actions = w.actions, V.curves = w.curves, m.push(V) + } + return m + } + + function C(t, C) { + for (var o = 1e-10, k = C.length, l = !1, i = k - 1, P = 0; k > P; i = P++) { + var Y = C[i], + N = C[P], + Z = N.x - Y.x, + M = N.y - Y.y; + if (X(M) > o) { + if (0 > M && (Y = C[P], Z = -Z, N = C[i], M = -M), t.y < Y.y || t.y > N.y) continue; + if (t.y == Y.y) { + if (t.x == Y.x) return !0 + } else { + var d = M * (t.x - Y.x) - Z * (t.y - Y.y); + if (0 == d) return !0; + if (0 > d) continue; + l = !l + } + } else { + if (t.y != Y.y) continue; + if (N.x <= t.x && t.x <= Y.x || Y.x <= t.x && t.x <= N.x) return !0 + } + } + return l + } + var m = U(this.actions); + if (0 == m.length) return []; + if (P === !0) return u(m); + var c, N, L, H = []; + if (1 == m.length) return N = m[0], L = new af, L.actions = N.actions, L.curves = N.curves, H.push(L), H; + var A = !uc.isClockWise(m[0].getPoints()); + A = w ? !A : A; + var B, V = [], + F = [], + D = [], + _ = 0; + F[_] = Z, D[_] = []; + var o, T; + for (o = 0, T = m.length; T > o; o++) N = m[o], B = N.getPoints(), c = uc.isClockWise(B), c = w ? !c : c, c ? (!A && F[_] && _++, F[_] = { + s: new af, + p: B + }, F[_].s.actions = N.actions, F[_].s.curves = N.curves, A && _++, D[_] = []) : D[_].push({ + h: N, + p: B[0] + }); + if (!F[0]) return u(m); + if (F.length > 1) { + for (var Q = !1, J = [], G = 0, y = F.length; y > G; G++) V[G] = []; + for (var G = 0, y = F.length; y > G; G++) { + F[G]; + for (var W = D[G], x = 0; x < W.length; x++) { + for (var M = W[x], t = !0, O = 0; O < F.length; O++) C(M.p, F[O].p) && (G != O && J.push({ + froms: G, + tos: O, + hole: x + }), t ? (t = !1, V[O].push(M)) : Q = !0); + t && V[G].push(M) + } + } + J.length > 0 && (Q || (D = V)) + } + var f, S, h; + for (o = 0, T = F.length; T > o; o++) + for (L = F[o].s, H.push(L), f = D[o], S = 0, h = f.length; h > S; S++) L.holes.push(f[S].h); + return H + }; + var af = function () { + $h.apply(this, arguments), this.holes = [] + }, + Fg = af.prototype = Ci(Rd); + Fg.getPointsHoles = function (e) { + var A, q = this.holes.length, + x = []; + for (A = 0; q > A; A++) x[A] = this.holes[A].getTransformedPoints(e); + return x + }, Fg.extractAllPoints = function (M) { + return { + shape: this.getTransformedPoints(M), + holes: this.getPointsHoles(M) + } + }, Fg.extractPoints = function (Z) { + return this.extractAllPoints(Z) + }; + var uc = { + triangulateShape: function (r, E) { + function J(t, C, c) { + return t.x != C.x ? t.x < C.x ? t.x <= c.x && c.x <= C.x : C.x <= c.x && c.x <= t.x : t.y < C.y ? t.y <= c.y && c.y <= C.y : C.y <= c.y && c.y <= t.y + } + + function B(S, m, y, l, W) { + var Z = 1e-10, + M = m.x - S.x, + o = m.y - S.y, + R = l.x - y.x, + q = l.y - y.y, + i = S.x - y.x, + G = S.y - y.y, + p = o * R - M * q, + Y = o * i - M * G; + if (X(p) > Z) { + var U; + if (p > 0) { + if (0 > Y || Y > p) return []; + if (U = q * i - R * G, 0 > U || U > p) return [] + } else { + if (Y > 0 || p > Y) return []; + if (U = q * i - R * G, U > 0 || p > U) return [] + } if (0 == U) return !W || 0 != Y && Y != p ? [S] : []; + if (U == p) return !W || 0 != Y && Y != p ? [m] : []; + if (0 == Y) return [y]; + if (Y == p) return [l]; + var c = U / p; + return [{ + x: S.x + c * M, + y: S.y + c * o + }] + } + if (0 != Y || q * i != R * G) return []; + var r = 0 == M && 0 == o, + s = 0 == R && 0 == q; + if (r && s) return S.x != y.x || S.y != y.y ? [] : [S]; + if (r) return J(y, l, S) ? [S] : []; + if (s) return J(S, m, y) ? [y] : []; + var N, O, B, V, C, d, I, H; + return 0 != M ? (S.x < m.x ? (N = S, B = S.x, O = m, V = m.x) : (N = m, B = m.x, O = S, V = S.x), y.x < l.x ? (C = y, I = y.x, d = l, H = l.x) : (C = l, I = l.x, d = y, H = y.x)) : (S.y < m.y ? (N = S, B = S.y, O = m, V = m.y) : (N = m, B = m.y, O = S, V = S.y), y.y < l.y ? (C = y, I = y.y, d = l, H = l.y) : (C = l, I = l.y, d = y, H = y.y)), I >= B ? I > V ? [] : V == I ? W ? [] : [C] : H >= V ? [C, O] : [C, d] : B > H ? [] : B == H ? W ? [] : [N] : H >= V ? [N, O] : [N, d] + } + + function n(u, l, y, F) { + var t = 1e-10, + o = l.x - u.x, + E = l.y - u.y, + D = y.x - u.x, + G = y.y - u.y, + g = F.x - u.x, + s = F.y - u.y, + p = o * G - E * D, + K = o * s - E * g; + if (X(p) > t) { + var z = g * G - s * D; + return p > 0 ? K >= 0 && z >= 0 : K >= 0 || z >= 0 + } + return K > 0 + } + + function v(G, W) { + function q(X, w) { + var W = _.length - 1, + M = X - 1; + 0 > M && (M = W); + var v = X + 1; + v > W && (v = 0); + var S = n(_[X], _[M], _[v], Q[w]); + if (!S) return !1; + var O = Q.length - 1, + V = w - 1; + 0 > V && (V = O); + var y = w + 1; + return y > O && (y = 0), S = n(Q[w], Q[V], Q[y], _[X]), S ? !0 : !1 + } + + function N(v, c) { + var z, D, V; + for (z = 0; z < _.length; z++) + if (D = z + 1, D %= _.length, V = B(v, c, _[z], _[D], !0), V.length > 0) return !0; + return !1 + } + + function y(K, b) { + var z, Z, x, p, y; + for (z = 0; z < I.length; z++) + for (Z = W[I[z]], x = 0; x < Z.length; x++) + if (p = x + 1, p %= Z.length, y = B(K, b, Z[x], Z[p], !0), y.length > 0) return !0; + return !1 + } + for (var Q, x, s, r, m, U, v, T, Y, P, g, _ = G.concat(), I = [], J = [], $ = 0, c = W.length; c > $; $++) I.push($); + for (var z = 0, O = 2 * I.length; I.length > 0 && (O--, !(0 > O));) + for (s = z; s < _.length; s++) { + r = _[s], x = -1; + for (var $ = 0; $ < I.length; $++) + if (U = I[$], v = r.x + ":" + r.y + ":" + U, J[v] === Z) { + Q = W[U]; + for (var K = 0; K < Q.length; K++) + if (m = Q[K], q(s, K) && !N(r, m) && !y(r, m)) { + x = K, I.splice($, 1), T = _.slice(0, s + 1), Y = _.slice(s), P = Q.slice(x), g = Q.slice(0, x + 1), _ = T.concat(P).concat(g).concat(Y), z = s; + break + } + if (x >= 0) break; + J[v] = !0 + } + if (x >= 0) break + } + return _ + } + for (var j, T, x, s, F, c, Y = {}, $ = r.concat(), N = 0, b = E.length; b > N; N++) Array.prototype.push.apply($, E[N]); + for (j = 0, T = $.length; T > j; j++) F = $[j].x + ":" + $[j].y, Y[F] !== Z, Y[F] = j; + var w = v(r, E), + D = Pk.Triangulate(w, !1); + for (j = 0, T = D.length; T > j; j++) + for (s = D[j], x = 0; 3 > x; x++) F = s[x].x + ":" + s[x].y, c = Y[F], c !== Z && (s[x] = c); + return D.concat() + }, isClockWise: function (d) { + return Pk.Triangulate.area(d) < 0 + }, b2p0: function (E, K) { + var F = 1 - E; + return F * F * K + }, b2p1: function (y, t) { + return 2 * (1 - y) * y * t + }, b2p2: function (N, R) { + return N * N * R + }, b2: function (c, H, B, u) { + return this.b2p0(c, H) + this.b2p1(c, B) + this.b2p2(c, u) + }, b3p0: function (y, C) { + var n = 1 - y; + return n * n * n * C + }, b3p1: function (y, G) { + var F = 1 - y; + return 3 * F * F * y * G + }, b3p2: function (M, T) { + var G = 1 - M; + return 3 * G * M * M * T + }, b3p3: function (t, C) { + return t * t * t * C + }, b3: function (b, K, k, c, F) { + return this.b3p0(b, K) + this.b3p1(b, k) + this.b3p2(b, c) + this.b3p3(b, F) + } + }, + Pk = { + faces: {}, + face: "", + weight: "normal", + style: "normal", + size: 150, + divisions: 10, + getDefaultFont: function () { + var L = o.keys(this.faces); + return L.length ? L[0] : null + }, getFace: function () { + try { + return this.faces[this.face][this.weight][this.style] + } catch (s) { + throw "The font " + this.face + " with " + this.weight + " weight and " + this.style + " style is missing." + } + }, loadFace: function (e) { + var v = e.familyName.toLowerCase(), + i = this; + return i.faces[v] = i.faces[v] || {}, i.faces[v][e.cssFontWeight] = i.faces[v][e.cssFontWeight] || {}, i.faces[v][e.cssFontWeight][e.cssFontStyle] = e, e + }, drawText: function (v) { + var R, p = this.getFace(), + n = this.size / p.resolution, + N = 0, + U = String(v).split(""), + x = U.length, + E = []; + for (R = 0; x > R; R++) { + var w = new $h, + G = this.extractGlyphPoints(U[R], p, n, N, w); + G && (N += G.offset * this.spacing, E.push(G.path)) + } + var M = N / 2; + return { + paths: E, + offset: M + } + }, extractGlyphPoints: function (o, W, B, d, $) { + var T, Y, K, R, k, U, Q, C, V, j, c, g, Z, f, D, N, n, b, O, h = [], + u = W.glyphs[o] || W.glyphs["?"]; + if (u) { + if (u.o) + for (R = u._cachedOutline || (u._cachedOutline = u.o.split(" ")), U = R.length, Q = B, C = B, T = 0; U > T;) switch (k = R[T++]) { + case "m": + V = R[T++] * Q + d, j = R[T++] * C, $.moveTo(V, j); + break; + case "l": + V = R[T++] * Q + d, j = R[T++] * C, $.lineTo(V, j); + break; + case "q": + if (c = R[T++] * Q + d, g = R[T++] * C, D = R[T++] * Q + d, N = R[T++] * C, $.quadraticCurveTo(D, N, c, g), O = h[h.length - 1]) + for (Z = O.x, f = O.y, Y = 1, K = this.divisions; K >= Y; Y++) { + var J = Y / K; + uc.b2(J, Z, D, c), uc.b2(J, f, N, g) + } + break; + case "b": + if (c = R[T++] * Q + d, g = R[T++] * C, D = R[T++] * Q + d, N = R[T++] * C, n = R[T++] * Q + d, b = R[T++] * C, $.bezierCurveTo(D, N, n, b, c, g), O = h[h.length - 1]) + for (Z = O.x, f = O.y, Y = 1, K = this.divisions; K >= Y; Y++) { + var J = Y / K; + uc.b3(J, Z, D, n, c), uc.b3(J, f, N, b, g) + } + } + return { + offset: u.ha * B, + path: $ + } + } + } + }; + Pk.generateShapes = function (R, Y) { + Y = Y || {}; + var H = Y.font; + if (H === Z && (H = Pk.getDefaultFont(), !H)) return console.log("There's no valid font face, use ht.Default.loadFontFace to load font first."), []; + var r = Y.size !== Z ? Y.size : 1, + l = Y.curveSegments !== Z ? Y.curveSegments : 4, + y = Y.spacing !== Z ? Y.spacing : 1, + m = Y.weight !== Z ? Y.weight : "normal", + J = Y.style !== Z ? Y.style : "normal"; + Pk.size = r, Pk.divisions = l, Pk.face = H, Pk.weight = m, Pk.style = J, Pk.spacing = y; + for (var X = Pk.drawText(R), k = X.paths, Q = [], w = 0, v = k.length; v > w; w++) Array.prototype.push.apply(Q, k[w].toShapes()); + return Q + }, + function (S) { + var d = 1e-10, + j = function (O, r) { + var h = O.length; + if (3 > h) return null; + var X, j, e, s = [], + c = [], + K = []; + if (W(O) > 0) + for (j = 0; h > j; j++) c[j] = j; + else + for (j = 0; h > j; j++) c[j] = h - 1 - j; + var S = h, + n = 2 * S; + for (j = S - 1; S > 2;) { + if (n-- <= 0) return r ? K : s; + if (X = j, X >= S && (X = 0), j = X + 1, j >= S && (j = 0), e = j + 1, e >= S && (e = 0), o(O, X, j, e, S, c)) { + var Y, l, U, x, m; + for (Y = c[X], l = c[j], U = c[e], s.push([O[Y], O[l], O[U]]), K.push([c[X], c[j], c[e]]), x = j, m = j + 1; S > m; x++, m++) c[x] = c[m]; + S--, n = 2 * S + } + } + return r ? K : s + }, + W = function (C) { + for (var m = C.length, F = 0, B = m - 1, E = 0; m > E; B = E++) F += C[B].x * C[E].y - C[E].x * C[B].y; + return .5 * F + }, + o = function (I, s, L, D, t, J) { + var A, Q, c, U, Y, $, E, b, x; + if (Q = I[J[s]].x, c = I[J[s]].y, U = I[J[L]].x, Y = I[J[L]].y, $ = I[J[D]].x, E = I[J[D]].y, d > (U - Q) * (E - c) - (Y - c) * ($ - Q)) return !1; + var e, o, g, P, W, H, m, M, R, f, q, h, S, y, j; + for (e = $ - U, o = E - Y, g = Q - $, P = c - E, W = U - Q, H = Y - c, A = 0; t > A; A++) + if (b = I[J[A]].x, x = I[J[A]].y, !(b === Q && x === c || b === U && x === Y || b === $ && x === E) && (m = b - Q, M = x - c, R = b - U, f = x - Y, q = b - $, h = x - E, j = e * f - o * R, S = W * M - H * m, y = g * h - P * q, j >= -d && y >= -d && S >= -d)) return !1; + return !0 + }; + return S.Triangulate = j, S.Triangulate.area = W, S + }(Pk), x._typeface_js = { + faces: Pk.faces, + loadFace: Pk.loadFace + }; + var wr = function () { + this.vertices = [], this.faces = [], this.faceVertexUvs = [[]] + }, + vo = wr.prototype = { + constructor: wr, + computeFaceNormals: function () { + for (var W = new pe, N = new pe, v = 0, O = this.faces.length; O > v; v++) { + var i = this.faces[v], + s = this.vertices[i.a], + B = this.vertices[i.b], + M = this.vertices[i.c]; + W.subVectors(M, B), N.subVectors(s, B), W.cross(N), W.normalize(), i.normal.copy(W) + } + }, computeVertexNormals: function (z) { + var Y, j, N, M, y, k; + for (k = new Array(this.vertices.length), Y = 0, j = this.vertices.length; j > Y; Y++) k[Y] = new pe; + if (z) { + var I, p, G, D = new pe, + f = new pe; + for (N = 0, M = this.faces.length; M > N; N++) y = this.faces[N], I = this.vertices[y.a], p = this.vertices[y.b], G = this.vertices[y.c], D.subVectors(G, p), f.subVectors(I, p), D.cross(f), k[y.a].add(D), k[y.b].add(D), k[y.c].add(D) + } else + for (N = 0, M = this.faces.length; M > N; N++) y = this.faces[N], k[y.a].add(y.normal), k[y.b].add(y.normal), k[y.c].add(y.normal); + for (Y = 0, j = this.vertices.length; j > Y; Y++) k[Y].normalize(); + for (N = 0, M = this.faces.length; M > N; N++) y = this.faces[N], y.vertexNormals[0] = k[y.a].clone(), y.vertexNormals[1] = k[y.b].clone(), y.vertexNormals[2] = k[y.c].clone() + }, mergeVertices: function () { + var i, s, O, n, J, h, D, u, N = {}, + w = [], + B = [], + F = 4, + j = P(10, F); + for (O = 0, n = this.vertices.length; n > O; O++) i = this.vertices[O], s = A(i.x * j) + "_" + A(i.y * j) + "_" + A(i.z * j), N[s] === Z ? (N[s] = O, w.push(this.vertices[O]), B[O] = w.length - 1) : B[O] = B[N[s]]; + var R = []; + for (O = 0, n = this.faces.length; n > O; O++) { + J = this.faces[O], J.a = B[J.a], J.b = B[J.b], J.c = B[J.c], h = [J.a, J.b, J.c]; + for (var r = 0; 3 > r; r++) + if (h[r] == h[(r + 1) % 3]) { + R.push(O); + break + } + } + for (O = R.length - 1; O >= 0; O--) { + var q = R[O]; + for (this.faces.splice(q, 1), D = 0, u = this.faceVertexUvs.length; u > D; D++) this.faceVertexUvs[D].splice(q, 1) + } + var t = this.vertices.length - w.length; + return this.vertices = w, t + } + }, + Hk = function (n, y, $, E, C, T, Z) { + this.aX = n, this.aY = y, this.xRadius = $, this.yRadius = E, this.aStartAngle = C, this.aEndAngle = T, this.aClockwise = Z + }; + Hk.prototype = Ci(ib), Hk.prototype.getPoint = function (w) { + var o, E = this.aEndAngle - this.aStartAngle; + 0 > E && (E += $), E > $ && (E -= $), o = this.aClockwise === !0 ? this.aEndAngle + (1 - w) * ($ - E) : this.aStartAngle + w * E; + var M = this.aX + this.xRadius * k(o), + K = this.aY + this.yRadius * n(o); + return new jd(M, K) + }; + var Aj = function (C, Q) { + this.v1 = C, this.v2 = Q + }, + Bi = Aj.prototype = Ci(ib); + Bi.getPoint = function (J) { + var f = this.v2.clone().sub(this.v1); + return f.multiplyScalar(J).add(this.v1), f + }, Bi.getPointAt = function (h) { + return this.getPoint(h) + }, Bi.getTangent = function () { + var i = this.v2.clone().sub(this.v1); + return i.normalize() + }; + var tq = function (J, b, w) { + this.v0 = J, this.v1 = b, this.v2 = w + }; + tq.prototype = Ci(ib), tq.prototype.getPoint = function (G) { + var r, Y; + return r = uc.b2(G, this.v0.x, this.v1.x, this.v2.x), Y = uc.b2(G, this.v0.y, this.v1.y, this.v2.y), new jd(r, Y) + }; + var hc = function (j, d, K, F) { + this.v0 = j, this.v1 = d, this.v2 = K, this.v3 = F + }; + hc.prototype = Ci(ib), hc.prototype.getPoint = function (o) { + var $, Y; + return $ = uc.b3(o, this.v0.x, this.v1.x, this.v2.x, this.v3.x), Y = uc.b3(o, this.v0.y, this.v1.y, this.v2.y, this.v3.y), new jd($, Y) + }, hi.create(function (e, E) { + this.v1 = e, this.v2 = E + }, function (C) { + var a = new pe; + return a.subVectors(this.v2, this.v1), a.multiplyScalar(C), a.add(this.v1), a + }); + var Cb = hi.create(function (P, N, H) { + this.v0 = P, this.v1 = N, this.v2 = H + }, function (d) { + var g, f, x; + return g = uc.b2(d, this.v0.x, this.v1.x, this.v2.x), f = uc.b2(d, this.v0.y, this.v1.y, this.v2.y), x = uc.b2(d, this.v0.z, this.v1.z, this.v2.z), new pe(g, f, x) + }), + th = hi.create(function (Y, R, d, B) { + this.v0 = Y, this.v1 = R, this.v2 = d, this.v3 = B + }, function (Q) { + var O, P, d; + return O = uc.b3(Q, this.v0.x, this.v1.x, this.v2.x, this.v3.x), P = uc.b3(Q, this.v0.y, this.v1.y, this.v2.y, this.v3.y), d = uc.b3(Q, this.v0.z, this.v1.z, this.v2.z, this.v3.z), new pe(O, P, d) + }), + rc = function (W, O, H, I, f, R, E, e) { + wr.call(this), I = I !== Z ? I : .5, f = f !== Z ? f : .5, e = e !== Z ? e : 1, W = W || 8, R = R || 0, E = E || $; + var g, i, K = 1, + L = e / 2, + X = [], + u = [], + c = this.vertices, + j = this.faces, + M = this.faceVertexUvs; + for (i = 0; K >= i; i++) { + var F = [], + A = [], + h = i / K, + G = h * (f - I) + I; + for (g = 0; W >= g; g++) { + var v = g / W, + z = new pe, + B = -(v * E + R); + z.z = G * n(B), z.y = -h * e + L, z.x = G * k(B), c.push(z), F.push(c.length - 1), A.push(new jd(v, h)) + } + X.push(F), u.push(A) + } + var S, U, T = (f - I) / e; + for (g = 0; W > g; g++) + for (0 !== I ? (S = c[X[0][g]].clone(), U = c[X[0][g + 1]].clone()) : (S = c[X[1][g]].clone(), U = c[X[1][g + 1]].clone()), S.setY(w(S.x * S.x + S.z * S.z) * T).normalize(), U.setY(w(U.x * U.x + U.z * U.z) * T).normalize(), i = 0; K > i; i++) { + var C = X[i][g], + q = X[i + 1][g], + d = X[i + 1][g + 1], + b = X[i][g + 1], + o = S.clone(), + x = S.clone(), + r = U.clone(), + D = U.clone(), + V = u[i][g].clone(), + t = u[i + 1][g].clone(), + N = u[i + 1][g + 1].clone(), + m = u[i][g + 1].clone(); + j.push(new sf(C, q, b, [o, x, D])), M[0].push([V, t, m]), j.push(new sf(q, d, b, [x.clone(), r, D.clone()])), M[0].push([t.clone(), N, m.clone()]) + } + if (O && I > 0) + for (this.vertices.push(new pe(0, L, 0)), g = 0; W > g; g++) { + var C = X[0][g], + q = X[0][g + 1], + d = this.vertices.length - 1, + o = new pe(0, 1, 0), + x = new pe(0, 1, 0), + r = new pe(0, 1, 0), + V = u[0][g].clone(), + t = u[0][g + 1].clone(), + N = new jd(t.x, 0); + j.push(new sf(C, q, d, [o, x, r], null, 1)); + var p = g / W * $, + s = k(p), + _ = n(p), + a = (g + 1) / W * $, + J = k(a), + Q = n(a); + M[0].push([new jd(.5 + .5 * s, .5 + .5 * _), new jd(.5 + .5 * J, .5 + .5 * Q), new jd(.5, .5)]) + } + if (H && f > 0) + for (this.vertices.push(new pe(0, -L, 0)), g = 0; W > g; g++) { + var C = X[i][g + 1], + q = X[i][g], + d = c.length - 1, + o = new pe(0, -1, 0), + x = new pe(0, -1, 0), + r = new pe(0, -1, 0), + V = u[i][g + 1].clone(), + t = u[i][g].clone(); + j.push(new sf(C, q, d, [o, x, r], null, 2)); + var p = g / W * $, + s = k(p), + _ = n(p), + a = (g + 1) / W * $, + J = k(a), + Q = n(a); + M[0].push([new jd(.5 + .5 * J, .5 - .5 * Q), new jd(.5 + .5 * s, .5 - .5 * _), new jd(.5, .5)]) + } + }; + rc.prototype = Ci(vo); + var To = function (p, C, l, e, R, x, w) { + wr.call(this), w = w || .5, p = p || 16, C = C || 16, l = (l !== Z ? l : 0) - W, e = e !== Z ? e : $, R = R !== Z ? R : 0, x = x !== Z ? x : W; + var F, A, u = [], + y = [], + Q = this.vertices, + b = this.faces, + o = this.faceVertexUvs; + for (A = 0; C >= A; A++) { + var f = [], + q = []; + for (F = 0; p >= F; F++) { + var S = F / p, + G = A / C, + d = new pe; + d.x = -w * k(l + S * e) * n(R + G * x), d.y = w * k(R + G * x), d.z = w * n(l + S * e) * n(R + G * x), Q.push(d), f.push(Q.length - 1), q.push(new jd(S, G)) + } + u.push(f), y.push(q) + } + for (A = 0; C > A; A++) + for (F = 0; p > F; F++) { + var O = u[A][F + 1], + g = u[A][F], + N = u[A + 1][F], + M = u[A + 1][F + 1], + T = Q[O].clone().normalize(), + i = Q[g].clone().normalize(), + v = Q[N].clone().normalize(), + P = Q[M].clone().normalize(), + m = y[A][F + 1].clone(), + J = y[A][F].clone(), + H = y[A + 1][F].clone(), + I = y[A + 1][F + 1].clone(); + X(Q[O].y) === w ? (m.x = (m.x + J.x) / 2, b.push(new sf(O, N, M, [T, v, P])), o[0].push([m, H, I])) : X(Q[N].y) === w ? (H.x = (H.x + I.x) / 2, b.push(new sf(O, g, N, [T, i, v])), o[0].push([m, J, H])) : (b.push(new sf(O, g, M, [T, i, P])), o[0].push([m, J, I]), b.push(new sf(g, N, M, [i.clone(), v, P.clone()])), o[0].push([J.clone(), H, I.clone()])) + } + }; + To.prototype = Ci(vo); + var Kg = function (a, l, u, B, x, R) { + wr.call(this), a = a || .33, l = l || .17, B = B || 8, u = u || 6, x = x || 0, R = R || $; + for (var P = new pe, g = [], o = [], D = 0; B >= D; D++) + for (var J = D / B * $ + W, q = 0; u >= q; q++) { + var s = q / u * R + x; + P.x = a * k(s), P.z = -a * n(s); + var t = new pe, + E = a + l * k(J); + t.x = E * k(s), t.z = -E * n(s), t.y = l * n(J), this.vertices.push(t), g.push(new jd(q / u, 1 - D / B)), o.push(t.clone().sub(P).normalize()) + } + for (var D = 1; B >= D; D++) + for (var q = 1; u >= q; q++) { + var r = (u + 1) * D + q - 1, + w = (u + 1) * (D - 1) + q - 1, + Z = (u + 1) * (D - 1) + q, + C = (u + 1) * D + q, + b = new sf(r, w, C, [o[r].clone(), o[w].clone(), o[C].clone()]); + this.faces.push(b), this.faceVertexUvs[0].push([g[r].clone(), g[w].clone(), g[C].clone()]), b = new sf(w, Z, C, [o[w].clone(), o[Z].clone(), o[C].clone()]), this.faces.push(b), this.faceVertexUvs[0].push([g[w].clone(), g[Z].clone(), g[C].clone()]) + } + this.computeFaceNormals() + }; + Kg.prototype = Ci(vo); + var xb = function (B, Y, q) { + return B ? (wr.call(this), B = B instanceof Array ? B : [B], this.addShapeList(B, Y), Y.convertYZ !== !1 && Mb(this, q), this.computeFaceNormals(), void 0) : (B = [], void 0) + }, + ys = xb.prototype = Ci(wr.prototype); + ys.addShapeList = function (O, t) { + for (var L = O.length, m = 0; L > m; m++) { + var n = O[m]; + this.addShape(n, t) + } + }, ys.addShape = function (H, j) { + function $() { + if (j.bottom) + for (var n = 0; f > n; n++) A = P[n], R(A[2], A[1], A[0], !0); + if (j.top) + for (n = 0; f > n; n++) A = P[n], R(A[0] + Q * o, A[1] + Q * o, A[2] + Q * o, !1) + } + + function _() { + var L = 0; + for (N(k, L), L += k.length, q = 0, E = X.length; E > q; q++) y = X[q], N(y, L), L += y.length + } + + function N(J, E) { + for (var k, D, A = J.length; --A >= 0;) { + k = A, D = A - 1, 0 > D && (D = J.length - 1); + var g = 0, + $ = o; + for (g = 0; $ > g; g++) { + var u = Q * g, + V = Q * (g + 1), + L = E + k + u, + l = E + D + u, + m = E + D + V, + n = E + k + V; + G(L, l, m, n, J, g, $, k, D) + } + } + } + + function i(H, Z, s) { + w.vertices.push(new pe(H, Z, s)) + } + + function R(f, V, S, r) { + f += D, V += D, S += D, w.faces.push(new sf(f, V, S, null, null, r ? 2 : 1)); + var u = r ? n.generateBottomUV(w, H, j, f, V, S) : n.generateTopUV(w, H, j, f, V, S); + w.faceVertexUvs[0].push(u) + } + + function G(q, U, R, v, B, C, b, g, Z) { + q += D, U += D, R += D, v += D, w.faces.push(new sf(q, U, v)), w.faces.push(new sf(U, R, v)); + var p = n.generateSideWallUV(w, H, B, j, q, U, R, v, C, b, g, Z); + w.faceVertexUvs[0].push([p[0], p[1], p[3]]), w.faceVertexUvs[0].push([p[1], p[2], p[3]]) + } + var B, g, a, p, F, T = j.amount, + c = j.curveSegments || Cq, + o = j.steps || 1, + M = j.extrudePath, + d = !1, + n = new kf(j.repeatUVLength); + M && (B = M.getSpacedPoints(o), d = !0, g = j.frames !== Z ? j.frames : new Ri.FrenetFrames(M, o, !1), a = new pe, p = new pe, F = new pe); + var y, q, E, w = this, + D = this.vertices.length, + e = H.extractPoints(c), + l = e.shape, + X = e.holes, + s = !uc.isClockWise(l); + if (s) { + for (l = l.reverse(), q = 0, E = X.length; E > q; q++) y = X[q], uc.isClockWise(y) && (X[q] = y.reverse()); + s = !1 + } + var P = uc.triangulateShape(l, X), + k = l; + for (q = 0, E = X.length; E > q; q++) y = X[q], l = l.concat(y); + for (var x, A, Q = l.length, f = P.length, m = 0; Q > m; m++) x = l[m], d ? (p.copy(g.normals[0]).multiplyScalar(x.x), a.copy(g.binormals[0]).multiplyScalar(x.y), F.copy(B[0]).add(p).add(a), i(F.x, F.y, F.z)) : i(x.x, x.y, 0); + var r; + for (r = 1; o >= r; r++) + for (m = 0; Q > m; m++) x = l[m], d ? (p.copy(g.normals[r]).multiplyScalar(x.x), a.copy(g.binormals[r]).multiplyScalar(x.y), F.copy(B[r]).add(p).add(a), i(F.x, F.y, F.z)) : i(x.x, x.y, T / o * r); + $(), _() + }; + var Ri = function (y, H, p, I, d) { + function J(E, l, A) { + return b.vertices.push(new pe(E, l, A)) - 1 + } + wr.call(this), H = H || 64, p = p || 1, I = I || 8, d = d || !1; + var B, W, G, o, S, f, F, A, c, v, R, l, O, w, t, E, K, j, u, m, Q = [], + b = this, + z = H + 1, + T = new pe, + q = new Ri.FrenetFrames(y, H, d), + M = q.tangents, + s = q.normals, + x = q.binormals; + for (this.tangents = M, this.normals = s, this.binormals = x, c = 0; z > c; c++) + for (Q[c] = [], o = c / (z - 1), A = y.getPointAt(o), B = M[c], W = s[c], G = x[c], v = 0; I > v; v++) S = v / I * $, f = -p * k(S), F = p * n(S), T.copy(A), T.x += f * W.x + F * G.x, T.y += f * W.y + F * G.y, T.z += f * W.z + F * G.z, Q[c][v] = J(T.x, T.y, T.z); + for (c = 0; H > c; c++) + for (v = 0; I > v; v++) R = d ? (c + 1) % H : c + 1, l = (v + 1) % I, O = Q[c][v], w = Q[R][v], t = Q[R][l], E = Q[c][l], K = new jd(c / H, v / I), j = new jd((c + 1) / H, v / I), u = new jd((c + 1) / H, (v + 1) / I), m = new jd(c / H, (v + 1) / I), this.faces.push(new sf(O, w, E)), this.faceVertexUvs[0].push([K, j, m]), this.faces.push(new sf(w, t, E)), this.faceVertexUvs[0].push([j.clone(), u, m.clone()]); + this.computeFaceNormals(), this.computeVertexNormals() + }; + Ri.prototype = Ci(vo), Ri.FrenetFrames = function (v, $, I) { + function Y() { + F[0] = new pe, O[0] = new pe, l = Number.MAX_VALUE, M = X(B[0].x), U = X(B[0].y), j = X(B[0].z), l >= M && (l = M, Z.set(1, 0, 0)), l >= U && (l = U, Z.set(0, 1, 0)), l >= j && Z.set(0, 0, 1), q.crossVectors(B[0], Z).normalize(), F[0].crossVectors(B[0], q), O[0].crossVectors(B[0], F[0]) + } + var C, l, M, U, j, r, J, Z = new pe, + B = [], + F = [], + O = [], + q = new pe, + h = new wl, + o = $ + 1, + Q = 1e-4; + for (this.tangents = B, this.normals = F, this.binormals = O, r = 0; o > r; r++) J = r / (o - 1), B[r] = v.getTangentAt(J), B[r].normalize(); + for (Y(), r = 1; o > r; r++) F[r] = F[r - 1].clone(), O[r] = O[r - 1].clone(), q.crossVectors(B[r - 1], B[r]), q.length() > Q && (q.normalize(), C = c(re(B[r - 1].dot(B[r]), -1, 1)), F[r].applyMatrix4(h.makeRotationAxis(q, C))), O[r].crossVectors(B[r], F[r]); + if (I) + for (C = c(re(F[0].dot(F[o - 1]), -1, 1)), C /= o - 1, B[0].dot(q.crossVectors(F[0], F[o - 1])) > 0 && (C = -C), r = 1; o > r; r++) F[r].applyMatrix4(h.makeRotationAxis(B[r], C * r)), O[r].crossVectors(B[r], F[r]) + }; + var Zd = function (r, U, g, P) { + wr.call(this), U = U || 18, g = g || 0, P = P == F ? $ : P; + for (var d = 1 / (r.length - 1), u = 1 / U, x = 0, I = U; I >= x; x++) + for (var C = g + x * u * P, b = k(C), E = n(C), w = 0, W = r.length; W > w; w++) { + var N = r[w], + i = new pe; + i.x = b * N.x - E * N.y, i.y = E * N.x + b * N.y, i.z = N.z, this.vertices.push(i) + } + for (var l = r.length, x = 0, I = U; I > x; x++) + for (var w = 0, W = r.length - 1; W > w; w++) { + var e = w + l * x, + A = e, + c = e + l, + b = e + 1 + l, + h = e + 1, + B = x * u, + q = w * d, + o = B + u, + X = q + d; + this.faces.push(new sf(A, h, c)), this.faceVertexUvs[0].push([new jd(B, q), new jd(B, X), new jd(o, q)]), this.faces.push(new sf(c, h, b)), this.faceVertexUvs[0].push([new jd(o, q), new jd(B, X), new jd(o, X)]) + } + this.mergeVertices(), Mb(this), this.computeFaceNormals(), this.computeVertexNormals() + }; + Zd.prototype = Ci(vo); + var qf = function (Q, W) { + W = W || {}; + var P = Pk.generateShapes(Q, W); + W.amount = W.amount !== Z ? W.amount : .5, W.convertYZ = !1, W.fill !== !1 && (W.bottom = !0, W.top = !0), xb.call(this, P, W) + }; + qf.prototype = Ci(ys); + var Dp = O.Node = function () { + fi(Dp, this) + }, + Qn = { + X: uh, + Y: ah, + Z: wo + }, + Er = { + X: 0, + Y: 1, + Z: 2 + }, + il = { + xyz: "XYZ", + xzy: "XZY", + yxz: "YXZ", + yzx: "YZX", + zxy: "ZXY", + zyx: "ZYX" + }, + Vn = "xzy", + Cl = function (F, v, $) { + if (v) { + var Z = v[0], + L = v[1], + R = v[2]; + "xzy" === $ ? (ah(F, L), wo(F, R), uh(F, Z)) : "xyz" === $ ? (wo(F, R), ah(F, L), uh(F, Z)) : "yxz" === $ ? (wo(F, R), uh(F, Z), ah(F, L)) : "yzx" === $ ? (uh(F, Z), wo(F, R), ah(F, L)) : "zxy" === $ ? (ah(F, L), uh(F, Z), wo(F, R)) : "zyx" === $ ? (uh(F, Z), ah(F, L), wo(F, R)) : (ah(F, L), wo(F, R), uh(F, Z)) + } + }; + ki("Node", Qp, { + ms_ac: ["rotationMode", "anchorElevation"], + ms_edge: !0, + _adjustChildrenToTop: !0, + _icon: "node_icon", + _image: "node_image", + _rotationMode: Vn, + _64O: 0, + _rotationX: 0, + _53O: 0, + _host: F, + _position: { + x: 0, + y: 0 + }, + _anchor: { + x: .5, + y: .5 + }, + _anchorElevation: .5, + _scale: { + x: 1, + y: 1 + }, + _scaleTall: 1, + _54O: 0, + getUIClass: function () { + return Af + }, _22Q: function () { + return gf + }, getX: function () { + return this.p().x + }, setX: function (u) { + this.p(u, this.p().y) + }, getY: function () { + return this.p().y + }, setY: function (o) { + this.p(this.p().x, o) + }, getAnchorX: function () { + return this.getAnchor().x + }, setAnchorX: function (w) { + this.setAnchor(w, this.getAnchor().y) + }, getAnchorY: function () { + return this.getAnchor().y + }, setAnchorY: function (H) { + this.setAnchor(this.getAnchor().x, H) + }, getScaleX: function () { + return this.getScale().x + }, setScaleX: function (E) { + this.setScale(E, this.getScale().y) + }, getScaleY: function () { + return this.getScale().y + }, setScaleY: function (S) { + this.setScale(this.getScale().x, S) + }, p: function () { + return 0 === arguments.length ? this.getPosition() : (this.setPosition.apply(this, arguments), this) + }, p3: function () { + return 0 === arguments.length ? this.getPosition3d() : (this.setPosition3d.apply(this, arguments), this) + }, s3: function () { + return 0 === arguments.length ? this.getSize3d() : (this.setSize3d.apply(this, arguments), this) + }, r3: function () { + return 0 === arguments.length ? this.getRotation3d() : (this.setRotation3d.apply(this, arguments), this) + }, setQuaternion: function (X) { + var a = (new gg).setFromQuaternion(X, gg.ReverseOrder(this.getRotationMode())); + return this.r3(a.x, a.y, a.z) + }, getQuaternion: function () { + return (new fs).setFromEuler(this.getEuler()) + }, getEuler: function () { + var W = this.r3(); + return (new gg).set(W[0], W[1], W[2], gg.ReverseOrder(this.getRotationMode())) + }, setEuler: function (U) { + return U = U.clone().reorder(gg.ReverseOrder(this.getRotationMode())), this.r3(U.x, U.y, U.z) + }, t3: function () { + return this.translate3d.apply(this, arguments), this + }, translate3dBy: function (u, H) { + Td(u, Jn(F, F, this.r3(), this.getRotationMode())), this.translate3d(u[0] * H, u[1] * H, u[2] * H) + }, translateFront: function (J) { + this.translate3dBy([0, 0, 1], J) + }, translateBack: function (c) { + this.translate3dBy([0, 0, -1], c) + }, translateLeft: function (s) { + this.translate3dBy([-1, 0, 0], s) + }, translateRight: function (g) { + this.translate3dBy([1, 0, 0], g) + }, translateTop: function (D) { + this.translate3dBy([0, 1, 0], D) + }, translateBottom: function (A) { + this.translate3dBy([0, -1, 0], A) + }, getPosition3d: function () { + return [this._position.x, this._54O, this._position.y] + }, setPosition3d: function (y, M, T) { + 1 === arguments.length && (M = y[1], T = y[2], y = y[0]), this.p(y, T), this.setElevation(M) + }, translate3d: function (n, H, E) { + 1 === arguments.length && (H = n[1], E = n[2], n = n[0]), this.translate(n, E), this.setElevation(this._54O + H) + }, getSize3d: function () { + return [this.getWidth(), this.getTall(), this.getHeight()] + }, setSize3d: function (O, B, M) { + 1 === arguments.length && (B = O[1], M = O[2], O = O[0]), this.setSize(O, M), this.setTall(B) + }, getRotation3d: function () { + return [this._rotationX, -this._64O, this._53O] + }, setRotation3d: function (e, F, D) { + 1 === arguments.length && (F = e[1], D = e[2], e = e[0]), this.setRotationX(e), this.setRotation(-F), this.setRotationZ(D) + }, setRotationY: function (x) { + this.setRotation(-x) + }, getRotationY: function () { + return -this._64O + }, lookAtDirection: function (t, m) { + m = m || wg; + var q = this, + v = En(t); + m === wg ? (q.r3([-a(t[1] / v), -D(t[2], t[0]) + N, 0]), q.setRotationMode("xzy")) : m === fm ? (q.r3(0, -D(t[2], t[0]), a(t[1] / v)), q.setRotationMode("zyx")) : m === nq ? (q.r3(0, -D(t[2], t[0]) + W, -a(t[1] / v)), q.setRotationMode("zyx")) : m === $c ? (q.r3([-a(t[1] / v) + N, -D(t[2], t[0]) + N, 0]), q.setRotationMode("xzy")) : m === Kd && (q.r3([-a(t[1] / v) - N, -D(t[2], t[0]) + N, 0]), q.setRotationMode("xzy")), m === Qq && (q.r3([-a(t[1] / v) + W, -D(t[2], t[0]) + N, W]), q.setRotationMode("zxy")) + }, lookAt: function (c, n) { + return this.lookAtDirection(fn(c, this.p3()), n) + }, lookAtX: function () { + var n = new tl, + i = new tl, + V = new tl, + W = new br, + R = new br, + r = new gg; + return function (B, C) { + var A = sj(this); + if (W.fromArray(A), V.copy(this.p3()), n.copy(B).sub(V), !(n.lengthSq() < 1e-6)) { + n.normalize(), C === wg ? i.set(0, 0, 1) : C === Qq ? i.set(0, 0, -1) : C === nq ? i.set(-1, 0, 0) : C === fm ? i.set(1, 0, 0) : C === $c ? i.set(0, 1, 0) : C === Kd && i.set(0, -1, 0), i.applyMatrix4(W).sub(V).normalize(); + var l = Math.acos(n.dot(i)); + if (l) { + var J = n.clone().cross(i); + J.lengthSq() < 1e-6 && (C === $c || C === Kd ? J.set(0, 0, 1).applyMatrix4(W).sub(V) : J.set(0, 1, 0).applyMatrix4(W).sub(V)), J.normalize(), r.set(this.r3(), this.getRotationMode(), !0), W.makeRotationFromEuler(r), R.makeRotationAxis(J, -l), r.setFromRotationMatrix(R.multiply(W)), this.r3([r.x, r.y, r.z]) + } + } + } + }(), + getHost: function () { + return this._host + }, setHost: function (h) { + var w = this; + if (w !== h && w._host !== h) { + var $ = w._host; + $ && $._removeAttach(w), w._host = h, w._host && w._host._addAttach(w), w.fp("host", $, h), w.onHostChanged($, h) + } + }, getAttaches: function () { + return this._69O + }, _addAttach: function (H) { + var L = this; + L._69O || (L._69O = new xr), L._69O.add(H), L.fp("attaches", F, H) + }, _removeAttach: function (M) { + var X = this; + X._69O.remove(M), X._69O.isEmpty() && delete X._69O, X.fp("attaches", M, F) + }, getImage: function () { + if (this._pendingCheckImageJSON) { + var F = u.getImage(this._image); + F && (this._pendingCheckImageJSON = !1, this.getParent() instanceof Ff && this.getParent().checkPendingUpdateInfo()) + } + return this._image + }, setImage: function (J) { + var O = this, + t = O._image, + x = O.getWidth(), + r = O.getHeight(); + O._image = J, O.fp("image", t, J) && (null != J && (xl(J) || dk(J) && /\.json$/i.test(J)) && (this._pendingCheckImageJSON = !0), O.fp(ul, x, O.getWidth()), O.fp(Hh, r, O.getHeight())) + }, getElevation: function () { + return this._54O + }, setElevation: function (A) { + var k = this; + if (!k._50O) { + k._50O = 1; + var Y = k._54O; + k._54O = A, k.fp(pd, Y, A), delete this._50O + } + }, getRotation: function () { + return this._64O + }, setRotation: function (T) { + var v = this; + if (!v._49O) { + v._49O = 1; + var N = v._64O; + v._64O = T, v.fp(ac, N, T), delete v._49O + } + }, getRotationX: function () { + return this._rotationX + }, setRotationX: function (Y) { + var E = this; + if (!E._51O) { + E._51O = 1; + var X = E._rotationX; + E._rotationX = Y, E.fp("rotationX", X, Y), delete E._51O + } + }, getRotationZ: function () { + return this._53O + }, setRotationZ: function (e) { + var H = this; + if (!H._52O) { + H._52O = 1; + var Z = H._53O; + H._53O = e, H.fp("rotationZ", Z, e), delete H._52O + } + }, getPosition: function () { + return this._position + }, setPosition: function (X, w) { + var D = this; + if (!D._50I) { + D._50I = 1; + var P; + if (P = 2 === arguments.length ? { + x: X, + y: w + } : X, P.x !== D._position.x || P.y !== D._position.y) { + var B = D._position; + D._position = P, D.fp(pr, B, P) + } + delete D._50I + } + }, translate: function (x, R) { + var o = this._position; + this.p(o.x + x, o.y + R) + }, getWidth: function () { + var q = this; + if (q._width >= 0) return q._width; + var C = q.getStyle("shape3d"); + if (C) { + var u = vf(C); + if (u && u.rawS3) return u.rawS3[0]; + if ("billboard" === C || "plane" === C) { + var y = ii(q.getStyle("shape3d.image")); + return y ? xc(y, q) : 20 + } + } + var y = ii(q._image); + return y ? xc(y, q) : 20 + }, setWidth: function (y) { + var G = this, + q = G._width; + G._width = y, G.fp(ul, q, y) + }, getHeight: function () { + var u = this; + if (u._height >= 0) return u._height; + var B = u.getStyle("shape3d"); + if (B) { + var Q = vf(B); + if (Q && Q.rawS3) return Q.rawS3[2]; + if ("plane" === B) { + var n = ii(u.getStyle("shape3d.image")); + return n ? oo(n, u) : 20 + } + if ("billboard" === B) return 2 + } + var n = ii(u._image); + return n ? oo(n, u) : 20 + }, setHeight: function (I) { + var A = this, + c = A._height; + A._height = I, A.fp(Hh, c, I) + }, getTall: function () { + var d = this; + if (d._tall >= 0) return d._tall; + var a = d.getStyle("shape3d"); + if (a) { + var $ = vf(a); + if ($ && $.rawS3) return $.rawS3[1]; + if ("billboard" === a) { + var J = ii(d.getStyle("shape3d.image")); + return J ? oo(J, d) : 20 + } + if ("plane" === a) return 2 + } + return 20 + }, setTall: function (l) { + var R = this, + O = R._tall; + R._tall = l, R.fp("tall", O, l) + }, setSize: function (H, r) { + var N = this; + 2 === arguments.length ? (N.setWidth(H), N.setHeight(r)) : (N.setWidth(H.width), N.setHeight(H.height)) + }, getSize: function () { + return { + width: this.getWidth(), + height: this.getHeight() + } + }, setRect: function (L, K, f, V, n) { + var E = this, + o = E.getAnchor(), + Z = E.getScale(); + arguments.length <= 2 && (n = K, K = L.y, f = L.width, V = L.height, L = L.x); + var k = n && Z.x < 0 ? 1 - o.x : o.x, + y = n && Z.y < 0 ? 1 - o.y : o.y; + E.p(L + f * k, K + V * y), n && (f /= Math.abs(Z.x), V /= Math.abs(Z.y)), E.setWidth(f), E.setHeight(V) + }, getMatrix: function () { + var g = this, + T = g._64O, + _ = g._position, + j = g.getScale(); + return new In(T, _.x, _.y, j.x, j.y) + }, getAnchorRect: function () { + var J = this, + W = J.getWidth(), + m = J.getHeight(), + z = J.getAnchor(); + return { + x: -W * z.x, + y: -m * z.y, + width: W, + height: m + } + }, toLocal: function (j) { + return this.getMatrix().tfi(j) + }, toGlobal: function (o) { + return this.getMatrix().tf(o) + }, getAttachPosition: function () { + var F = new In; + return function (y, T, V, e) { + V = V || 0, e = e || 0; + var i = this, + u = i.getAnchor(), + Z = i._64O, + s = i._position, + P = i.getScale(); + return F.setFromTransform(Z, s.x, s.y).tf({ + x: V + P.x * i.getWidth() * (y - u.x), + y: e + P.y * i.getHeight() * (T - u.y) + }) + } + }(), + isInRect: function (P) { + P = this.toLocal(P); + var u = this.getWidth(), + d = this.getHeight(); + return P.x += u * this.getAnchorX(), P.y += d * this.getAnchorY(), !(P.x < 0 || P.y < 0 || P.x > u || P.y > d) + }, getRect: function () { + var R = this, + E = R.getWidth(), + O = R.getHeight(), + e = R.getAnchor(), + z = { + x: -E * e.x, + y: -O * e.y, + width: E, + height: O + }, + y = R.getMatrix(); + return z = ms([y.tf(z.x, z.y), y.tf(z.x + z.width, z.y), y.tf(z.x + z.width, z.y + z.height), y.tf(z.x, z.y + z.height)]) + }, getAnchorElevation: function () { + return this._anchorElevation + }, getAnchor3d: function () { + var T = this, + X = T.getAnchor(), + R = T._anchorElevation; + return { + x: X.x, + y: R, + z: X.y + } + }, setAnchorElevation: function (B) { + var a = this, + t = a._anchorElevation; + return t !== B ? (a._anchorElevation = B, a.fp("anchorElevation", t, B), !0) : !1 + }, setAnchor3d: function (z, X, i, U) { + var K, d = this; + "number" == typeof z ? K = { + x: z, + y: X, + z: i + } : (K = z.length ? { + x: z[0], + y: z[1], + z: z[2] + } : z, U = X); + var a = d.getDataModel(); + a && a.beginTransaction(); + var t = d.getAnchor3d(), + $ = d.setAnchor(K.x, K.z); + if (d.setAnchorElevation(K.y) && ($ = !0), $ && U && !aj) { + d.getAnchor3d(); + var J = sj(d), + Y = Td([K.x - t.x, K.y - t.y, K.z - t.z], J); + d.p3(Y) + } + return a && a.endTransaction(), $ + }, getAnchor: function () { + var U = this; + if (U.hasOwnProperty("_anchor")) return U._anchor; + var q = ii(U._image); + return q && q.anchorX !== Z ? { + x: q.anchorX, + y: q.anchorY + } : U._anchor + }, setAnchor: function (s, E, f) { + var Y, D = this; + "number" == typeof s ? Y = { + x: s, + y: E + } : (Y = s.length ? { + x: s[0], + y: s[1] + } : s, f = E); + var P = D.getAnchor(); + if (P.x !== Y.x || P.y !== Y.y) { + var B = D.getDataModel(); + if (B && B.beginTransaction(), D._anchor = Y, D.fp("anchor", P, Y), f && !aj) { + var m = D.getPosition(), + I = D.getSize(), + N = D.getRotation(), + K = D.getScale(), + c = -I.width * (P.x - Y.x) * K.x, + d = -I.height * (P.y - Y.y) * K.y, + U = n(N), + l = k(N); + D.setPosition(m.x + l * c - U * d, m.y + U * c + l * d) + } + return B && B.endTransaction(), !0 + } + return !1 + }, getScale: function () { + return this._scale + }, setScale: function (p, D) { + var S, R = this; + S = 2 === arguments.length ? { + x: p, + y: D + } : p; + var l = R.getScale(); + (l.x !== S.x || l.y !== S.y) && (R._scale = S, R.fp("scale", l, S)) + }, getScaleTall: function () { + return this._scaleTall + }, getScale3d: function () { + var $ = this, + f = $._scaleTall, + m = $.getScale(); + return [m.x, f, m.y] + }, getFinalScale3d: function () { + var F = this, + G = F.s3(), + S = F._dynamicScale3d, + v = F.getScale3d(); + return G && (v[0] *= G[0], v[1] *= G[1], v[2] *= G[2]), S && (v[0] *= S[0], v[1] *= S[1], v[2] *= S[2]), v + }, getFinalRotation3d: function () { + var Z = this; + return Z._dynamicRotation || Z.r3() + }, setScaleTall: function (N) { + var j = this, + F = j._scaleTall; + F !== N && (j._scaleTall = N, j.fp("scaleTall", F, N)) + }, setScale3d: function (u, d, B) { + var o, Y = this; + o = "number" == typeof u ? { + x: u, + y: d, + z: B + } : u.length ? { + x: u[0], + y: u[1], + z: u[2] + } : u, Y.setScaleTall(o.y), Y.setScale(o.x, o.z) + }, getCorners: function (X, u) { + X == F && (X = 0), u == F && (u = X); + var p = this, + W = p.getAnchor(), + C = p.getWidth(), + Z = p.getHeight(), + y = -C * W.x - X, + L = -Z * W.y - u, + A = C + 2 * X, + z = Z + 2 * u, + q = p.getMatrix(); + return [q.tf(y, L), q.tf(y, L + z), q.tf(y + A, L + z), q.tf(y + A, L)] + }, getEditControlPoints: function (i, l, k) { + l == F && (l = 0), k == F && (k = l); + var q = this, + r = q.getAnchor(), + c = q.getWidth(), + S = q.getHeight(), + m = -c * r.x - l, + p = -S * r.y - k, + u = c + 2 * l, + R = S + 2 * k; + if (i) return [{ + x: m, + y: p + }, { + x: m, + y: 0 + }, { + x: m, + y: p + R + }, { + x: 0, + y: p + R + }, { + x: m + u, + y: p + R + }, { + x: m + u, + y: 0 + }, { + x: m + u, + y: p + }, { + x: 0, + y: p + }]; + var A = q.getMatrix(); + return [A.tf(m, p), A.tf(m, 0), A.tf(m, p + R), A.tf(0, p + R), A.tf(m + u, p + R), A.tf(m + u, 0), A.tf(m + u, p), A.tf(0, p)] + }, rotateAt: function (g, x, t) { + var i = this, + E = i._position, + a = i._64O, + M = new In(a, E.x, E.y).tf(g, x), + Q = w(g * g + x * x), + H = D(E.y - M.y, E.x - M.x) + t; + i.setRotation(a + t), i.p(M.x + Q * k(H), M.y + Q * n(H)) + }, onParentChanged: function () { + Dp.superClass.onParentChanged.apply(this, arguments), this._8I() + }, onPropertyChanged: function () { + var v = {}; + return "width|height|position|anchor|rotation|scale|s:layout.h|s:layout.v".split("|").forEach(function (B) { + v[B] = !0 + }), + function (e) { + var Y = this; + Dp.superClass.onPropertyChanged.call(Y, e), v[e.property] && !Y._layoutUpdating && Y.updateLayoutParameters(null, e.property), Y._69O && Y._69O.each(function (B) { + B.handleHostPropertyChange(e) + }), Y._49I && Y._49I.each(function (F) { + F.fp("agentChange", !0, !1) + }), "a:layout" === e.property.substring(0, 8) && this.updateAttach() + } + }(), + onHostChanged: function () { + this.updateAttach(), this.updateLayoutParameters() + }, handleHostPropertyChange: function (e) { + this.updateAttach(e) + }, onStyleChanged: function (i) { + Dp.superClass.onStyleChanged.apply(this, arguments), Zj[i] && this.updateAttach() + }, updateAttach: function (m) { + var H = this; + return aj ? (H.updateLayoutParameters(), void 0) : (H._51I || (H._51I = 1, H._71O(m), delete H._51I), void 0) + }, _71O: function (U) { + var r, V, w, c, H, G, x, L, m = this, + g = m._host, + E = U ? U.property : F, + W = U ? U.oldValue : F, + S = U ? U.newValue : F; + if (g instanceof Dp && (x = ii(g.getImage()), x && x.layoutAttach && (L = x.layoutAttach)), U && !Zf[E] && "a:layout" !== E.substring(0, 8) || !L || L(g, this)) + if (g instanceof O.Grid) { + if (E === pd) m.setElevation(m._54O + S - W); + else if (!U || ir[E]) { + if (r = m.s("attach.row.index"), V = m.s("attach.column.index"), w = g.getCellRect(r, V), !w) return; + c = m.s("attach.row.span"), H = m.s("attach.column.span"), (1 !== c || 1 !== H) && (w = ni(w, g.getCellRect(r + c - 1, V + H - 1))), ld(w, m, "attach.padding", 1), m.setRect(w) + } + } else if (g instanceof Fc && (G = m.s("attach.index")) >= 0 && (!U || zq[E])) { + var K = m.s("attach.thickness"), + i = g.getScale(), + j = Math.max(i.x, i.y); + K > 0 && m.setHeight(g.getThickness() * K * j); + var s = m.s("attach.offset"), + B = g.getPoints(), + f = B.size(); + if (f > G) { + var u = g.getPointsMatrix2d(), + J = B.get(G), + p = f === G + 1 ? B.get(0) : B.get(G + 1); + J = u.apply(J), p = u.apply(p); + var y = [p.x - J.x, p.y - J.y], + M = En(y); + if (M) { + m.s("attach.offset.relative") && (s *= M), m.s("attach.offset.opposite") && (s = M - s); + var Y = { + x: J.x + y[0] / M * s, + y: J.y + y[1] / M * s + }, + Q = m.s("attach.gap"); + Q && (m.s("attach.gap.relative") && (Q *= g.getThickness() * j), Y = pc(F, Y, p, Q)), m.p(Y), m.setRotation(D(y[1], y[0])) + } + } + } else U && (E === pr ? m.translate(S.x - W.x, S.y - W.y) : E === pd ? m.setElevation(m._54O + S - W) : Yr[E] ? m._11Q(g, E, S - W) : ("anchor" === E || "width" === E || "height" === E || "scale" === E) && m.layout(g)) + }, _11Q: function () { + var R = new O.Math.Euler, + o = O.Math.Euler.ReverseOrder, + p = new O.Math.Vector2, + w = new O.Math.Vector2; + return function (F, C, v) { + var Q = this, + W = F.p3(), + V = F.r3(), + H = Q.p3(), + E = Q.r3(); + if (C === ac && (C = "rotationY", v = -v), (C === ac || "rotationY" === C) && 0 === E[0] && 0 === E[2] && 0 === V[0] && 0 === V[2] && 0 === H[1] && 0 === W[1]) return Q.setRotation(-E[1] - v), p.set(H[0], H[2]).rotateAround(w.set(W[0], W[2]), -v), Q.p(p.x, p.y), void 0; + var q = il[F.getRotationMode()], + x = q[0], + n = q[1], + b = q[2], + Y = Qn[x], + K = Qn[n], + h = Qn[b], + X = kn(); + C === ac + x ? (h(X, V[Er[b]]), K(X, V[Er[n]]), Y(X, v), K(X, -V[Er[n]]), h(X, -V[Er[b]])) : C === ac + n ? (h(X, V[Er[b]]), K(X, v), h(X, -V[Er[b]])) : C === ac + b && h(X, v); + var P = fn(H, W); + Td(P, X), Q.p3(W[0] + P[0], W[1] + P[1], W[2] + P[2]); + var S = Q.getRotationMode(); + Cl(X, Q.r3(), S), R.setFromRotationMatrix(X, o(S)), Q.r3([R.x, R.y, R.z]) + } + }(), + isHostOn: function (X) { + var t = this; + if (t._host && X && X._69O) + for (var z = {}, D = t._host; D && D !== t && !z[D._id];) { + if (D === X) return !0; + z[D._id] = D, D = D._host + } + return !1 + }, isLoopedHostOn: function (k) { + return this.isHostOn(k) && k.isHostOn(this) + }, getScaledSize: function () { + var Y = this.getSize(), + W = this.getScale(); + return Y.width *= Math.abs(W.x), Y.height *= Math.abs(W.y), Y + }, layout: function (d) { + if (d = d || this.getHost()) { + var M = this, + A = M.s("layout.h") || "center", + $ = M.s("layout.v") || "center"; + if ("center" !== A || "center" !== $) { + var N = new O.Math.Vector2, + m = d.getPosition(), + f = d.getAnchor(), + T = d.getScaledSize(); + M.getPosition(); + var a, r, _, i, h, P = 1, + p = 1; + switch (M._layoutUpdating = !0, A) { + case "left": + N.setX(M._layoutHValue - f.x * T.width); + break; + case "right": + N.setX((1 - f.x) * T.width - M._layoutHValue); + break; + case "leftright": + a = T.width - M._layoutHValue[2], _ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_)), P += h * a / M._layoutHValue[3], p += i * a / M._layoutHValue[4], N.setX(M._layoutHValue[1] + (M._layoutHValue[5] - f.x) * T.width); + break; + case "center": + N.setX((.5 - f.x) * T.width - M._layoutHValue); + break; + case "scale": + _ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_)), N.setX((.5 - f.x) * T.width - M._layoutHValue[1] * T.width / M._layoutHValue[0]), r = T.width / M._layoutHValue[2] - 1, P += h * r, p += i * r + } + switch ($) { + case "top": + N.setY(M._layoutVValue - f.y * T.height); + break; + case "bottom": + N.setY((1 - f.y) * T.height - M._layoutVValue); + break; + case "topbottom": + _ || (_ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_))), a = T.height - M._layoutVValue[2], P += i * a / M._layoutVValue[3], p += h * a / M._layoutVValue[4], N.setY(M._layoutVValue[1] + (M._layoutVValue[5] - f.y) * T.height); + break; + case "center": + N.setY((.5 - f.y) * T.height - M._layoutVValue); + break; + case "scale": + _ || (_ = M.getRotation() - d.getRotation(), i = Math.abs(Math.sin(_)), h = Math.abs(Math.cos(_))), N.setY((.5 - f.y) * T.height - M._layoutVValue[1] * T.height / M._layoutVValue[0]), r = T.height / M._layoutVValue[2] - 1, P += i * r, p += h * r + } + if ("leftright" === A || "scale" === A || "topbottom" === $ || "scale" === $) { + var j = this.getScale(), + H = Math.abs(j.x), + n = Math.abs(j.y); + "leftright" === A || "scale" === A ? M.setSize(M._layoutHValue[3] * P / H, M._layoutHValue[4] * p / n) : M.setSize(M._layoutVValue[3] * P / H, M._layoutVValue[4] * p / n) + } + N.rotateAround(null, d.getRotation()), this.setPosition(N.x + m.x, N.y + m.y), M._layoutUpdating = Z + } + } + }, updateLayoutParameters: function (q, B) { + if (q = q || this.getHost()) { + var E = this, + G = E.s("layout.h"), + W = E.s("layout.v"); + if (G || W) { + var o, w, I, Y, H, Q, z = new O.Math.Vector2, + r = q.getPosition(), + y = q.getAnchor(), + k = q.getScaledSize(), + F = E.getPosition(), + U = E.getScaledSize(); + switch (z.set(F.x - r.x, F.y - r.y), z.rotateAround(null, -q.getRotation()), G) { + case "left": + E._layoutHValue = z.x + y.x * k.width; + break; + case "right": + E._layoutHValue = -z.x + (1 - y.x) * k.width; + break; + case "center": + E._layoutHValue = -z.x + (.5 - y.x) * k.width; + break; + case "leftright": + case "scale": + "scale" === G ? o = -z.x + (.5 - y.x) * k.width : (w = E.getAnchor(), I = E.getRotation() - q.getRotation(), Y = Math.cos(I), H = Math.sin(I), Q = -Math.min(-w.x * Y + w.y * H, -w.x * Y - (1 - w.y) * H, (1 - w.x) * Y + w.y * H, (1 - w.x) * Y - (1 - w.y) * H), o = z.x - (Q - y.x) * k.width), "position" === B && "object" == typeof E._layoutHValue ? (E._layoutHValue[0] = k.width, E._layoutHValue[1] = o) : E._layoutHValue = [k.width, o, k.width, U.width, U.height, Q] + } + switch (W) { + case "top": + E._layoutVValue = z.y + y.y * k.height; + break; + case "bottom": + E._layoutVValue = -z.y + (1 - y.y) * k.height; + break; + case "center": + E._layoutVValue = -z.y + (.5 - y.y) * k.height; + break; + case "topbottom": + case "scale": + "scale" === W ? o = -z.y + (.5 - y.y) * k.height : (I || (w = E.getAnchor(), I = E.getRotation() - q.getRotation(), Y = Math.cos(I), H = Math.sin(I)), Q = -Math.min(-w.x * H - w.y * Y, -w.x * H + (1 - w.y) * Y, (1 - w.x) * H - w.y * Y, (1 - w.x) * H + (1 - w.y) * Y), o = z.y - (Q - y.y) * k.height), "position" === B && "object" == typeof E._layoutVValue ? (E._layoutVValue[0] = k.height, E._layoutVValue[1] = o) : E._layoutVValue = [k.height, o, k.height, U.width, U.height, Q] + } + } + } + }, getSerializableProperties: function () { + var g = Dp.superClass.getSerializableProperties.call(this); + return Uh(g, { + image: 1, + host: 1, + rotation: 1, + rotationX: 1, + rotationZ: 1, + rotationMode: 1, + position: 1, + anchor: 1, + anchorElevation: 1, + scale: 1, + scaleTall: 1, + _width: 1, + _height: 1, + _tall: 1, + elevation: 1 + }), g + } + }); + var Xg = O.Edge = function ($, G) { + var S = this; + fi(Xg, S), S.setSource($), S.setTarget(G) + }; + ki("Edge", Qp, { + ms_edge: !0, + _icon: "edge_icon", + getUIClass: function () { + return wn + }, _22Q: function () { + return Ip + }, getSource: function () { + return this._source + }, getTarget: function () { + return this._target + }, getSourceAgent: function () { + return this._40I + }, getTargetAgent: function () { + return this._41I + }, canSetSourceTarget: function (Q) { + if (Q === this) return !1; + if (Fq(Q)) return !0; + for (var X, E, a, B, e, A = [this], f = -1, j = 0; j > f;) + if (f++, X = A[f], E = X._44I) + for (E = E.getArray(), B = 0, e = E.length; e > B; B++) + if (a = E[B], Bk(a) && !(A.indexOf(a) >= 0)) { + if (a === Q) return !1; + A.push(a), j++ + } + return !0 + }, setSource: function (B) { + var h = this; + if (h._source !== B && h.canSetSourceTarget(B)) { + var A = h._source; + h._source = B, A && A._16I(h), B && B._2I(h), h._7I(), h.fp("source", A, B) + } + }, setTarget: function (M) { + var C = this; + if (C._target !== M && C.canSetSourceTarget(M)) { + var D = C._target; + C._target = M, D && D._18I(C), M && M._4I(C), C._7I(), C.fp("target", D, M) + } + }, isLooped: function () { + var p = this; + return p._source === p._target && Fq(p._source) && Fq(p._target) + }, onPropertyChanged: function () { + var $ = this; + $._49I && $._49I.each(function (s) { + s.fp("agentChange", !0, !1) + }) + }, _7I: function () { + var f, y = this, + H = Oq(y); + y._40I !== H && (f = this._40I, f && f._15I(y), y._40I = H, H && H._1I(y), y.fp("sourceAgent", f, H), gi(f, y._41I), gi(H, y._41I)); + var g = xg(y); + y._41I !== g && (f = y._41I, f && f._17I(y), y._41I = g, g && g._3I(y), y.fp("targetAgent", f, g), gi(f, y._40I), gi(g, y._40I)) + }, _22I: function (D) { + this._52I = D, this.fp("edgeGroup", !0, !1) + }, getEdgeGroup: function () { + return this._52I + }, isEdgeGroupHidden: function () { + var J = this; + return J._52I && J._52I.get(0) !== J && !J.getStyle(kh) + }, getEdgeGroupSize: function () { + return this._52I ? this._52I.size() : 1 + }, getEdgeGroupIndex: function () { + return this._52I ? this._52I.indexOf(this) : 0 + }, isEdgeGroupAgent: function () { + var z = this, + O = z._52I; + return O && !z.getStyle(kh) && O.size() > 1 && z === O.get(0) + }, toggle: function () { + this.beginTransaction(); + var c = this._52I, + K = !this.s(kh); + c && c.size() > 1 && (c.each(function (t) { + t.s(kh, K) + }), c.getSiblings().each(function (t) { + t !== c && t.each(function (a) { + a.fp("edgeGroup", F, t) + }) + })), this.endTransaction() + }, setStyle: function (b, F) { + (b === Ei || "edge.segments" === b) && (F = mh(F)), Xg.superClass.setStyle.call(this, b, F) + }, onStyleChanged: function (V) { + Xg.superClass.onStyleChanged.apply(this, arguments), Am[V] && gi(this._41I, this._40I) + }, getSerializableProperties: function () { + var r = Xg.superClass.getSerializableProperties.call(this); + return Uh(r, { + source: 1, + target: 1 + }), r + } + }); + var Lc = O.Group = function () { + fi(Lc, this) + }; + ki("Group", Dp, { + _image: "group_image", + _icon: "group_icon", + _57O: !1, + getUIClass: function () { + return Fn + }, onChildAdded: function () { + Lc.superClass.onChildAdded.apply(this, arguments), this._81I() + }, onChildRemoved: function () { + Lc.superClass.onChildRemoved.apply(this, arguments), this._81I() + }, _81I: function () { + var y = this; + if (!y._54I && !aj) { + var E = y.getChildrenRect(); + E && (y._53I = 1, y.p(Re(y.s("group.position"), E, y.getSize())), delete y._53I) + } + }, getChildrenRect: function () { + var $, F = this; + return F.eachChild(function (e) { + Fq(e) && ($ = ni($, F.getChildRect(e))) + }), $ + }, getChildRect: function (P) { + var a; + return Fq(P) && P.s(Dm) && (yl(P) && P.isExpanded() && P.eachChild(function (k) { + a = ni(a, P.getChildRect(k)) + }), !a && P.getRect && (a = P.getRect())), a + }, setPosition: function (G, N) { + var j = this; + if (!j._54I) { + var A; + A = 2 === arguments.length ? { + x: G, + y: N + } : G, aj || j._53I || (j._54I = 1, qc(j._children, A.x - j._position.x, A.y - j._position.y), delete j._54I), Lc.superClass.setPosition.call(this, A) + } + }, toggle: function () { + this.setExpanded(!this.isExpanded()) + }, isExpanded: function () { + return this._57O + }, setExpanded: function (M) { + var d = this; + if (d._57O !== M) { + var n = d._57O; + d._57O = M, d.fp("expanded", n, d._57O), d._fireInvalidateDeep(), d._8I() + } + }, _fireInvalidateDeep: function () { + this.eachChild(function (H) { + yl(H) ? H._fireInvalidateDeep() : H.iv() + }) + }, _8I: function () { + Lc.superClass._8I.call(this), this.eachChild(function (y) { + Fq(y) && y._8I() + }) + }, onStyleChanged: function (f) { + Lc.superClass.onStyleChanged.apply(this, arguments), "group.position" === f && this._81I() + }, getSerializableProperties: function () { + var B = Lc.superClass.getSerializableProperties.call(this); + return B.expanded = 1, B + } + }); + var Br = O.Block = function () { + fi(Br, this), this.s({ + "shadow.cast": !1, + "shadow.receive": !1 + }) + }; + ki("Block", Dp, { + _icon: "block_icon", + _clickThroughEnabled: !1, + _syncSize: !0, + ms_ac: ["clickThroughEnabled", "syncSize"], + getUIClass: function () { + return Ul + }, _22Q: function () { + return rs + }, onChildAdded: function () { + Br.superClass.onChildAdded.apply(this, arguments), this.updateFromChildren() + }, onChildRemoved: function () { + Br.superClass.onChildRemoved.apply(this, arguments), this.updateFromChildren() + }, _getBoundingBox: function () { + function G(x, Y, A) { + M.fromArray(sj(Y)); + var S = Y.getAnchor3d(); + x.push((new tl).set(0 - S.x, 0 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(0 - S.x, 0 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(0 - S.x, 1 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(0 - S.x, 1 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 0 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 0 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 1 - S.y, 0 - S.z).applyMatrix4(M).applyMatrix4(A)), x.push((new tl).set(1 - S.x, 1 - S.y, 1 - S.z).applyMatrix4(M).applyMatrix4(A)) + } + + function Y(x, N) { + var Q = (new br).makeRotationFromEuler(this.getEuler()).setPosition((new tl).fromArray(this.p3())); + Q.getInverse(Q), x.forEach(function (A) { + Fq(A) && G(N, A, Q) + }) + } + var M = new br; + return function (g, I) { + if (g instanceof Dp && (g = [g]), !g || 0 === g.length) return F; + var I = []; + Y.call(this, g, I); + var E = [1 / 0, 1 / 0, 1 / 0], + l = [-1 / 0, -1 / 0, -1 / 0]; + return I.forEach(function (Q) { + E[0] = Math.min(Q.x, E[0]), E[1] = Math.min(Q.y, E[1]), E[2] = Math.min(Q.z, E[2]), l[0] = Math.max(Q.x, l[0]), l[1] = Math.max(Q.y, l[1]), l[2] = Math.max(Q.z, l[2]) + }), { + min: E, + max: l + } + } + }(), + updateFromChildren: function () { + var i = this; + if (!aj && !i._updatingToChildren && i._syncSize && 0 !== i.size() && !i._freezeSyncFromChildren) { + var f = this._getBoundingBox(i.toChildren(Fq)); + if (f) { + i._updatingFromChildren = 1; + var I = (new tl).fromArray(this.getScale3d()), + Z = (new tl).fromArray(f.min), + T = (new tl).fromArray(f.max), + v = u.blockMinSize, + k = new tl, + r = T.clone().sub(Z); + 0 === r.x && k.setX(.5), 0 === r.y && k.setY(.5), 0 === r.z && k.setZ(.5); + var S = this._width == F || -1 === this._width, + E = new tl(this.getAnchor3d()); + if (S || this._anchorChanged || !this.s("keepPosition")) { + var q = E.clone().multiply(r).add(Z).applyEuler(this.getEuler()).add((new tl).fromArray(this.p3())); + this.p3([q.x, q.y, q.z]) + } else { + var y = I.clone().multiply((new tl).fromArray(this.s3())), + s = r.clone(); + 0 === s.x && s.setX(v), 0 === s.y && s.setY(v), 0 === s.z && s.setZ(v); + var l = E.clone().multiply(y), + z = l.clone().multiplyScalar(-1).sub(Z).divide(s).add(l.divide(s)).add(k); + this.setAnchor3d(z.x, z.y, z.z) + } + var c = new tl(1, 1, 1).divide(I).multiply(r); + this.s3(Math.abs(c.x), Math.abs(c.y), Math.abs(c.z)), delete i._updatingFromChildren + } + } + }, setPosition: function (w, J) { + var c = this; + if (!c._updatingToChildren) { + var x; + x = 2 === arguments.length ? { + x: w, + y: J + } : w, aj || c._updatingFromChildren || (c._updatingToChildren = 1, qc(c._children, x.x - c._position.x, x.y - c._position.y), delete c._updatingToChildren), Br.superClass.setPosition.call(this, x) + } + }, setSize3d: function () { + var Y = this.getDataModel(); + Y && Y.beginTransaction(), Br.superClass.setSize3d.apply(this, arguments), Y && Y.endTransaction() + }, setTall: function (I) { + var z = this; + if (!z._updatingToChildren) { + var O = z.getDataModel(); + O && O.beginTransaction(), I = q(I, u.blockMinSize); + var w = z.getTall(); + if (I !== w && Br.superClass.setTall.call(z, I), !aj && !z._updatingFromChildren) { + z._updatingToChildren = 1; + var B = I / w; + z._adjustChildTallOrScale(B, "size"), delete z._updatingToChildren, z.updateFromChildren() + } + O && O.endTransaction() + } + }, setWidth: function (t) { + return this.setSize(t, this.getHeight()) + }, setHeight: function (O) { + return this.setSize(this.getWidth(), O) + }, setSize: function (G, V) { + var N = u.blockMinSize; + G = q(G, N), V = q(V, N); + var a = this; + if (!a._updatingToChildren) { + 2 !== arguments.length && (V = G.height, G = G.width); + var t = a.getDataModel(); + t && t.beginTransaction(); + var v = a.getWidth(), + I = a.getHeight(); + if (G !== v && Br.superClass.setWidth.call(a, G), V !== I && Br.superClass.setHeight.call(a, V), !aj && !a._updatingFromChildren) { + a._updatingToChildren = 1; + var k = G / v, + r = V / I; + a._adjustChildScaleOrSize(k, r, "size"), delete a._updatingToChildren, a.updateFromChildren() + } + t && t.endTransaction() + } + }, _adjustChildScaleOrSize: function (C, K, Q) { + var $ = this; + if ($._syncSize) { + var p = $.getPosition(), + s = $.getRotation(); + $.getScale(), $.eachChild(function (b) { + if (Fq(b)) { + var g = b.getPosition(), + h = b.getRotation(), + B = b.getWidth(), + S = b.getHeight(), + d = b.getScale(), + q = d.x * B, + o = d.y * S, + t = new In(h, g.x, g.y, q, o); + t.translate(-p.x, -p.y), t.rotate(-s), h = D(t.b * Math.sign(q), t.a * Math.sign(q)), t.scale(C, K); + var E, A, M, L = k(h); + if (Math.abs(L) < .001 ? (E = n(h), A = t.b / E, M = -t.c / E) : (A = t.a / L, M = t.d / L), "scale" === Q) b.setScale(A / B, M / S); + else if ("size" === Q) { + var u = A / d.x, + X = M / d.y; + b.setScale(he(A) * Math.abs(d.x), he(M) * Math.abs(d.y)), b instanceof O.Shape ? (b.setWidthForce(Math.max(Math.abs(u), 1e-5)), b.setHeightForce(Math.max(Math.abs(X), 1e-5))) : b.setSize(Math.max(.01, Math.abs(u)), Math.max(.01, Math.abs(X))) + } + t.rotate(s), t.translate(p.x, p.y), b.setPosition(t.tx, t.ty) + } + }) + } + }, _calcChangeFactor: function (B, g, n, h) { + var d, L, w, G; + return d = X(B), L = X(n), w = d > L ? d / L : L / d, d = X(g), L = X(h), G = d > L ? d / L : L / d, q(w, G) + }, setElevation: function (L) { + var R = this; + if (!R._updatingToChildren) { + var e = R.getElevation(), + $ = L - e; + 0 !== $ && (aj || R._updatingFromChildren || (R._updatingToChildren = 1, qc(R._children, 0, $, 0), delete R._updatingToChildren), Br.superClass.setElevation.apply(R, arguments)) + } + }, setScaleTall: function (I) { + var N = this; + if (!N._updatingToChildren) { + var w = N.getScaleTall(); + if (X(I) < .01 && (I = .01 * (he(I) || he(w))), Br.superClass.setScaleTall.call(N, I), !aj && !N._updatingFromChildren) { + N._updatingToChildren = 1; + var C = I / w; + N._adjustChildTallOrScale(C, "size"), delete N._updatingToChildren, this.updateFromChildren() + } + } + }, _adjustChildTallOrScale: function (E, n) { + var c = this; + if (c._syncSize) { + var b = c.getElevation(); + c.eachChild(function (d) { + if (Fq(d)) + if ("size" === n) { + var G = d.getTall(); + 0 > E && d.setScaleTall(-1 * d.getScaleTall()), d.setTall(Math.max(.01, Math.abs(G * E))), d.setElevation(b + (d.getElevation() - b) * E) + } else { + var q = d.getScaleTall(); + d.setScaleTall(q * E) + } + }) + } + }, setAnchor3d: function () { + if (!this._updatingToChildren) { + var s = this.getDataModel(); + s && s.beginTransaction(); + var $ = Br.superClass.setAnchor3d.apply(this, arguments); + return $ && !aj && !this._updatingFromChildren && this._syncSize && (this._anchorChanged = 1, this.updateFromChildren(), delete this._anchorChanged), s && s.endTransaction(), $ + } + }, setAnchor: function () { + var O = this; + if (!O._updatingToChildren) { + var o = O.getAnchor(), + _ = Br.superClass.setAnchor.apply(O, arguments); + if (aj || O._updatingFromChildren || !O._syncSize) return _; + O._updatingToChildren = 1; + var u = O.getAnchor(); + O.getPosition(); + var G = O.getSize(), + T = O.getScale(), + E = O.getRotation(), + s = -G.width * T.x * (o.x - u.x), + $ = -G.height * T.y * (o.y - u.y), + p = n(E), + F = k(E), + y = F * s - p * $, + P = p * s + F * $; + return O.eachChild(function (S) { + if (Fq(S)) { + var Z = S.getPosition(); + S.setPosition(Z.x - y, Z.y - P) + } + }), delete O._updatingToChildren, _ + } + }, setAnchorElevation: function () { + var Z = this; + if (!Z._updatingToChildren) { + var a = Z.getAnchorElevation(), + F = Br.superClass.setAnchorElevation.apply(Z, arguments); + if (aj || Z._updatingFromChildren || !Z._syncSize) return F; + Z._updatingToChildren = 1; + var _ = Z.getAnchorElevation(), + W = Z.getTall(), + J = Z.getScaleTall(), + G = -W * J * (a - _); + return Z.eachChild(function (J) { + if (Fq(J)) { + var N = J.getElevation(); + J.setElevation(N - G) + } + }), delete Z._updatingToChildren, F + } + }, setRotation: function (G) { + this._updateChildrenRotation3d("rotation", G) + }, setRotationX: function (L) { + this._updateChildrenRotation3d("rotationX", L) + }, setRotationZ: function (_) { + this._updateChildrenRotation3d("rotationZ", _) + }, _updateChildrenRotation3d: function (w, f) { + var E = this; + if (!E._updatingToChildren) { + var p = E[kp(w)](); + if (Br.superClass[tg(w)].call(E, f), !aj && !E._updatingFromChildren) { + E._updatingToChildren = 1; + var c = f - p; + E.eachChild(function (G) { + Fq(G) && G._11Q(E, w, c) + }), delete E._updatingToChildren + } + } + }, setScale: function (p, q) { + var V = this; + if (!V._updatingToChildren) { + null == q && (q = p.y, p = p.x); + var S = V.getScale(); + if (X(p) < .01 && (p = .01 * (he(p) || he(S.x))), X(q) < .01 && (q = .01 * (he(q) || he(S.y))), Br.superClass.setScale.call(V, p, q), !aj && !V._updatingFromChildren) { + V._updatingToChildren = 1; + var Q = p / S.x, + b = q / S.y; + V._adjustChildScaleOrSize(Q, b, "size"), delete V._updatingToChildren, V.updateFromChildren() + } + } + }, getSerializableProperties: function () { + var o = Br.superClass.getSerializableProperties.call(this); + return o.clickThroughEnabled = 1, o.syncSize = 1, o + } + }); + var pi = O.Grid = function () { + fi(O.Grid, this) + }; + ki("Grid", Dp, { + IRotatable: !1, + _icon: "grid_icon", + _image: F, + getUIClass: function () { + return _n + }, setRotation: function () { }, getCellRect: function (E, u) { + var I = this, + S = I.s("grid.row.count"), + Y = I.s("grid.column.count"); + if (0 >= S || 0 >= Y || 0 > E || E >= S || 0 > u || u >= Y) return F; + var G, z, v, g = I.getRect(), + N = I.s("grid.row.percents"), + b = I.s("grid.column.percents"); + if (ld(g, I, "grid.border", -1), N && N._as && (N = N._as), b && b._as && (b = b._as), N && N.length === S) { + for (v = 0, G = 0; E > G; G++) v += g.height * N[G]; + g.y += v, g.height = g.height * N[E] + } else g.height = g.height / S, g.y += g.height * E; if (b && b.length === Y) { + for (z = 0, G = 0; u > G; G++) z += g.width * b[G]; + g.x += z, g.width = g.width * b[u] + } else g.width = g.width / Y, g.x += g.width * u; + return vn(g, -I.s("grid.gap")), g + } + }); + var Lo = O.Text = function () { + fi(Lo, this), this.setSize(100, 50), this.s("text", "TEXT") + }; + ki("Text", Dp, { + _icon: "text_icon", + _image: "__text__", + getUIClass: function () { + return sk + }, setWidth: function (U) { + U || (U = .001), Lo.superClass.setWidth.call(this, U) + }, setHeight: function (J) { + J || (J = .001), Lo.superClass.setHeight.call(this, J) + }, toLabel: function () { + return this._displayName || this._name || this.s("text") + } + }), _c("__text__", { + width: { + value: 100, + isSafeFunc: !0, + func: function (L) { + return L ? L._width : 100 + } + }, + height: { + value: 50, + isSafeFunc: !0, + func: function (T) { + return T ? T._height : 50 + } + }, + comps: [{ + type: "text", + relative: !0, + rect: [0, 0, 1, 1], + text: { + func: "style@text" + }, + align: { + func: "style@text.align" + }, + vAlign: { + func: "style@text.vAlign" + }, + color: { + func: "style@text.color" + }, + font: { + func: "style@text.font" + }, + shadow: { + func: "style@text.shadow" + }, + shadowColor: { + func: "style@text.shadow.color" + }, + shadowBlur: { + func: "style@text.shadow.blur" + }, + shadowOffsetX: { + func: "style@text.shadow.offset.x" + }, + shadowOffsetY: { + func: "style@text.shadow.offset.y" + }, + scaleX: { + func: "style@text.scale.x" + }, + scaleY: { + func: "style@text.scale.y" + } + }] + }); + var Fc = O.Shape = function () { + fi(Fc, this), this._59O = new xr + }; + Fc.__de__ = zr, ki("Shape", Dp, { + ms_ac: ["thickness", "closePath"], + _icon: "shape_icon", + _thickness: 10, + _closePath: !1, + getUIClass: function () { + return Xp + }, _22Q: function () { + return Vp + }, getLength: function (T) { + return tj(Yo(this._59O, this._58O, T, this._closePath)) + }, getSegments: function () { + return this._58O + }, toSegments: function () { + var k = this._58O; + return k ? new xr(k._as.slice(0)) : k + }, setSegments: function (h) { + var P = this._58O; + h = h ? ip(h) ? new xr(h.slice(0)) : new xr(h._as.slice(0)) : null, (P && h && P._as.join(",") !== h._as.join(",") || P !== h) && (this._58O = h, this.fp("segments", P, h)) + }, getPoints: function () { + return this._59O + }, toPoints: function () { + var O = this._59O; + return new xr(O._as.slice(0)) + }, getPointsMatrix2d: function () { + var n = this, + c = new Rc.Matrix2d, + Q = n.getPosition(), + t = n.getScale(), + z = n.getRotation(); + return c.translate(-Q.x, -Q.y).scale(t.x, t.y).rotate(z).translate(Q.x, Q.y), c + }, getPointsMatrix3d: function () { + return function () { + var O = this, + V = new Rc.Matrix4, + p = V.getElements(), + L = O.p3(); + bo(p, L), Cl(p, O.getFinalRotation3d(), O.getRotationMode()); + var H = O.getScale3d(), + Q = O._dynamicScale3d; + return Q && (H[0] *= Q[0], H[1] *= Q[1], H[2] *= Q[2]), Bd(p, H), bo(p, Cj(L)), V + } + }(), + setPoints: function (Z, X) { + var w = this, + c = w._59O; + Z = Z ? ip(Z) ? new xr(Z.slice(0)) : new xr(Z._as.slice(0)) : new xr; + var D, N, q, T, o, n; + X && (D = w.getPosition(), n = new In(w.getRotation(), 0, 0, w.getScale().x, w.getScale().y)), (c && Z && c._as.join(",") !== Z._as.join(",") || c !== Z) && (w._59O = Z, w.fs(), w.fp("points", c, Z)), X && (N = w.getPosition(), q = N.x - D.x, T = N.y - D.y, o = n.tf(q, T), w.setPosition(N.x - q + o.x, N.y - T + o.y)) + }, addPoint: function (J, t, M) { + var z = this.toPoints(); + z.add(J, t), this.setPoints(z, M) + }, setPoint: function (K, u, k) { + var P = this.toPoints(); + P.set(K, u), this.setPoints(P, k) + }, removePointAt: function (t) { + var R = this.toPoints(); + R.removeAt(t), this.setPoints(R) + }, setWidthForce: function (T) { + var U = this; + if (!U._55I && !aj && U.getWidth()) { + U._55I = 1; + var V = U._position.x, + q = T / U.getWidth(), + M = U.toPoints(), + s = new xr; + 1 !== q && (M.each(function (z) { + s.add({ + x: (z.x - V) * q + V, + y: z.y, + e: z.e + }) + }), U.setPoints(s), ok(U, [q, 0, 0, 1, V * (1 - q), 0]), U.fs()), delete U._55I + } + Fc.superClass.setWidth.call(U, T) + }, setWidth: function (W) { + return this.setWidthForce(Wp > W ? Wp : W) + }, setHeightForce: function (i) { + var R = this; + if (!R._55I && !aj && R.getHeight()) { + R._55I = 1; + var o = R._position.y, + g = i / R.getHeight(), + S = R.toPoints(), + h = new xr; + 1 !== g && (S.each(function (D) { + h.add({ + x: D.x, + y: (D.y - o) * g + o, + e: D.e + }) + }), R.setPoints(h), ok(R, [1, 0, 0, g, 0, o * (1 - g)]), R.fs()), delete R._55I + } + Fc.superClass.setHeight.call(R, i) + }, setHeight: function (x) { + return this.setHeightForce(Wp > x ? Wp : x) + }, setAnchorElevation: function (v) { + var M = this; + M._55I = !0; + var o = M._updatingAnchor3d, + x = !aj && !o; + if (x) { + var t, p = v, + Z = M.getAnchorElevation(), + U = M.getTall(); + t = U * (Z - p), 0 !== t && M.shiftPointsElevation(t) + } + var y = Fc.superClass.setAnchorElevation.apply(M, arguments); + return o || delete M._55I, y + }, getShapeElevation: function () { + var J = this, + j = J._54O; + return j - (J.getTall() || 0) * (J._anchorElevation - .5) + }, setAnchor3d: function (c, q, X, J) { + var Z, F = this; + "number" == typeof c ? Z = { + x: c, + y: q, + z: X + } : (Z = c.length ? { + x: c[0], + y: c[1], + z: c[2] + } : c, J = q), F._55I = !0, F._updatingAnchor3d = !0; + var N = F.getDataModel(); + if (N && N.beginTransaction(), !aj) { + var K = F.getAnchor3d(), + z = F.getSize(), + A = F.getTall(), + R = z.width * (K.x - Z.x), + n = z.height * (K.z - Z.z), + C = A * (K.y - Z.y); + J || F.shiftPoints(R, n, C); + var V = F.p3() + } + var H = Fc.superClass.setAnchor3d.apply(F, arguments); + if (!aj && J) { + var s = F.p3(); + F.shiftPoints(s[0] - V[0] + R, s[2] - V[2] + n, s[1] - V[1] + C) + } + return N && N.endTransaction(), delete F._updatingAnchor3d, delete F._55I, H + }, setAnchor: function (f, X, n) { + var j = this; + j._55I = !0; + var A = j._updatingAnchor3d, + d = !aj && !A; + if (d) { + var E, t, Y; + "number" == typeof f ? Y = { + x: f, + y: X + } : (Y = f.length ? { + x: f[0], + y: f[1] + } : f, n = X); + var q = j.getAnchor(), + Z = j.getSize(); + E = Z.width * (q.x - Y.x), t = Z.height * (q.y - Y.y), n || j.shiftPoints(E, t); + var o = j.getPosition() + } + var y = Fc.superClass.setAnchor.apply(j, arguments); + if (d) { + var P = j.getPosition(); + n && j.shiftPoints(P.x - o.x + E, P.y - o.y + t) + } + return A || delete j._55I, y + }, shiftPoints: function (x, m, s) { + if (x || m || s) { + var Y = this, + O = Y.getElevation() || 0, + i = Y.toPoints(), + v = new xr; + i.each(function (t) { + var Q = t.e; + s && (Q = (Q == F ? O : Q) + s), v.add({ + x: t.x + x, + y: t.y + m, + e: Q + }) + }), Y.setPoints(v), Y.fs() + } + }, shiftPointsElevation: function (h) { + return this.shiftPoints(0, 0, h) + }, setPosition: function (T, X) { + var U, y = this; + if (!y._28Q) { + if (y._28Q = 1, !y._55I && !aj) { + U = 2 === arguments.length ? { + x: T, + y: X + } : T; + var f = U.x - y._position.x, + m = U.y - y._position.y; + if (0 === f && 0 === m) return delete y._28Q, void 0; + y._55I = 1, y.shiftPoints(f, m), ok(y, [1, 0, 0, 1, f, m]), delete y._55I + } + Fc.superClass.setPosition.apply(y, arguments), delete y._28Q + } + }, fs: function () { + this.fireShapeChange() + }, _70I: function () { + var y = this; + if (2 !== y._59O.size()) return !1; + var F = y._58O; + return F ? 2 === F.size() && 1 === F.get(0) && 2 === F.get(1) ? !0 : !1 : !0 + }, fireShapeChange: function () { + var W = this; + if (!W._55I && !aj) { + var N = ms(W._59O); + N && (W._55I = 1, W.setRect(N), delete W._55I) + } + W.fp(bl, !1, !0) + }, getSerializableProperties: function () { + var j = Fc.superClass.getSerializableProperties.call(this); + return j.segments = 1, j.points = 1, j.thickness = 1, j.closePath = 1, j + } + }); + var oj = O.Points = function () { + fi(oj, this) + }; + ki("Points", Dp, { + _22Q: function () { + return Co + }, setPoints: function (T) { + this.points = T, this._pointsDirty = !0, this.fp("points", F, this.points) + }, setPoint: function (S, h) { + this.points || (this.points = []), this.points[3 * S] = h[0], this.points[3 * S + 1] = h[1], this.points[3 * S + 2] = h[2], this._pointsDirty = !0, this.fp("points", F, this.points) + }, setPointsColor: function (B) { + this.colors = B, this._colorsDirty = !0, this.fp("colors", F, this.colors) + }, setPointColor: function (i, g) { + this.colors || (this.colors = []), g ? (g = ns(g), this.colors[3 * i] = g[0], this.colors[3 * i + 1] = g[1], this.colors[3 * i + 2] = g[2]) : (this.colors[3 * i] = Z, this.colors[3 * i + 1] = Z, this.colors[3 * i + 2] = Z), this._colorsDirty = !0, this.fp("colors", F, this.colors) + }, setPointsSize: function (U) { + this.sizes = U, this._sizesDirty = !0, this.fp("sizes", F, this.sizes) + }, setPointSize: function (x, q) { + this.sizes || (this.sizes = []), this.sizes[x] = q ? q : Z, this._sizesDirty = !0, this.fp("sizes", F, this.sizes) + }, getPointInfo: function (D) { + var A = 3 * D, + f = this.points; + if (!f || f[A] === Z || f[A + 1] === Z || f[A + 2] === Z) return null; + var d = [f[A], f[A + 1], f[A + 2]], + Y = this.mat || sj(this), + C = [d[0], d[1], d[2]]; + Td(C, Y); + var x = this.colors; + return { + size: this.sizes && this.size[D] || this.s("points.size"), + color: x && x[A] ? [x[A], x[A + 1], x[A + 2]] : this.s("points.color"), + local: d, + world: C + } + }, getSerializableProperties: function () { + var O = oj.superClass.getSerializableProperties.call(this); + return O.points = 1, O.colors = 1, O.sizes = 1, O + } + }); + var hn = O.Polyline = function () { + fi(hn, this), this.s({ + "shape.background": null, + "shape.border.width": 2 + }) + }; + ki("Polyline", Fc, { + _icon: "polyline_icon", + _22Q: function () { + return Ds + }, getUIClass: function () { + return Kr + }, setClosePath: function () { }, setTall: function (m) { + var f = this, + j = f.getDataModel(); + if (j && j.beginTransaction(), !f._55I && !f._24Q && !aj && f.getTall()) { + f._24Q = 1; + var q = f._54O, + S = m / f.getTall(); + if (1 !== S) { + var l = f.toPoints(), + _ = new xr; + l.each(function (Q) { + _.add({ + x: Q.x, + y: Q.y, + e: Q.e == F ? Q.e : (Q.e - q) * S + q + }) + }), f.setPoints(_), f.fs() + } + delete f._24Q + } + hn.superClass.setTall.call(f, m), j && j.endTransaction() + }, setElevation: function (d) { + var C = this, + k = C.getDataModel(); + if (k && k.beginTransaction(), !C._55I && !C._24Q && !aj) { + C._24Q = 1; + var _ = d - C._54O; + 0 !== _ && C.shiftPointsElevation(_), delete C._24Q + } + hn.superClass.setElevation.apply(C, arguments), k && k.endTransaction() + }, fireShapeChange: function () { + var w = this, + s = w._59O; + if (!w._55I && !w._24Q && !aj) { + var U = s.size(); + if (U) { + var Q = 1, + h = s.get(0), + I = w._54O; + h.e == F && (h.e = I); + for (var o = h.e, g = 0; U > Q; Q++) { + h = s.get(Q), h.e == F && (h.e = I); + var C = V(o, h.e), + k = q(o + g, h.e); + o = C, g = k - C + } + w._24Q = 1, w.setTall(g), w.setElevation(o + g * w._anchorElevation), delete w._24Q + } + } + hn.superClass.fireShapeChange.apply(w, arguments) + } + }); + var zh = O.SubGraph = function () { + fi(zh, this) + }; + ki("SubGraph", Dp, { + ISubGraph: 1, + _image: "subGraph_image", + _icon: "subGraph_icon", + _8I: function () { + zh.superClass._8I.call(this), this.eachChild(function (G) { + Fq(G) && G._8I() + }) + } + }), u.loadingRefGraph = 0; + var Ff = O.RefGraph = function () { + fi(Ff, this) + }; + ki("RefGraph", Br, { + _icon: "refGraph_icon", + getRef: function () { + return this._ref + }, setRef: function (f) { + var _ = this._ref; + this._ref = f, this.fp("ref", _, f), this.updateRef() + }, _21I: function () { + Ff.superClass._21I.apply(this, arguments), this.updateRef() + }, updateRef: function () { + var V = this; + if (u.loadingRefGraph++, V.clearChildrenFromDataModel(), u.loadingRefGraph--, V._ref && V._dataModel) { + V._xhrLoadHandler && (V._xhrLoadHandler.cancel = !0); + var a = aj, + x = V._xhrLoadHandler = function (I) { + if (I && V._dataModel) { + u.loadingRefGraph++; + var k = V._pendingUpdateInfo = { + needToRestore: a + }; + a && (k.p3 = V.p3(), k.s3 = V.s3(), k.r3 = V.r3(), k.anchor3d = V.getAnchor3d(), k.scale3d = V.getScale3d()), V.r3(0, 0, 0), V.setScale3d(1, 1, 1), V.setAnchor3d(.5, .5, .5), V.p3(0, 0, 0); + var B = u.parse(I), + J = V._dataModel.deserialize(B, V, { + justDatas: !0 + }); + J.each(function (Y) { + Y._refGraph = V + }), V.checkPendingUpdateInfo(), u.loadingRefGraph--, u.handleRefGraphLoaded(V, J, B) + } + }; + x.xhrLoadCalled = !1, u.load(V._ref, function (V) { + x.cancel || (x.xhrLoadCalled ? x(V) : $e(function () { + x(V) + })) + }), x.xhrLoadCalled = !0 + } + }, checkPendingUpdateInfo: function () { + var D = this, + f = D._pendingUpdateInfo; + if (!f) return D.onPendingUpdated && (u.loadingRefGraph++, D.onPendingUpdated(), u.loadingRefGraph--), void 0; + var X = !0; + this.eachChild(function (Q) { + (Q._pendingCheckImageJSON || Q._pendingUpdateInfo) && (X = !1) + }), X && (u.loadingRefGraph++, D._pendingUpdateInfo = null, D.updateFromChildren(), f.needToRestore && (D.setAnchor3d(f.anchor3d), D.setScale3d(f.scale3d), D.r3(f.r3), D.p3(f.p3)), this.getParent() instanceof Ff && this.getParent().checkPendingUpdateInfo(), D.onPendingUpdated && D.onPendingUpdated(), u.loadingRefGraph--) + }, getSerializableProperties: function () { + var G = Ff.superClass.getSerializableProperties.call(this); + return G.ref = 1, G + } + }), O.EdgeGroup = function (h, V) { + this._70O = h, this._siblings = V; + for (var n, p, d = 0, K = h.size(), y = z[kh]; K > d; d++) + if (n = h.get(d).getStyle(kh, !1), n != F) { + y = n; + break + } + y == F && (y = !0); + var t = u.edgeGroupAgentFunc; + for (t && (p = t(h), p && p !== h.get(0) && (h.remove(p), h.add(p, 0))), d = 0; K > d; d++) h.get(d).s(kh, y) + }, ki("EdgeGroup", o, { + getEdges: function () { + return this._70O + }, size: function () { + return this._70O.size() + }, get: function (N) { + return this._70O.get(N) + }, indexOf: function (v) { + return this._70O.indexOf(v) + }, each: function ($, p) { + this._70O.each($, p) + }, getSiblings: function () { + return this._siblings + }, eachSiblingEdge: function ($, T) { + this._siblings.each(function (W) { + W._70O.each($, T) + }) + } + }); + var Sk = function (A, C, E) { + var y = Al[A] = { + type: A, + action: C + }; + if (E) + for (var O in E) y[O] = E[O] + }; + Uh(u, { + setConnectAction: Sk, + getConnectAction: function (b, Q) { + if (!Q) { + if (!b) return null; + Q = b.getCurrentConnectActionType() + } + return Al[Q] + }, doConnectAction: function (W, d, B, H) { + H = H || W.getCurrentConnectActionType(); + var K = Al[H]; + if (!K) return !1; + var P = K.action; + return P ? (d instanceof se.Group ? W.sm().getSelection().each(function (b) { + P.call(null, W, b, B) + }) : P.call(null, W, d, B), !0) : !1 + }, doDeleteConnectionAction: function (W, V, s) { + s = s || W.getCurrentConnectActionType(); + var X = Al[s]; + if (!X || !X.delete) return !1; + var v = X.delete.action; + return v ? (V instanceof se.Group ? W.sm().getSelection().each(function (H) { + v.call(null, W, H) + }) : v.call(null, W, V), !0) : !1 + } + }); + var dl = O.JSONSerializer = function (I, j) { + this.dm = this._dataModel = I, this._hierarchical = u.forceHierarchicalSerialization ? !0 : j == F ? I.isHierarchicalRendering() : j + }; + ki("JSONSerializer", o, { + ms_ac: ["hierarchical"], + serialize: function (M) { + return u.stringify(this.toJSON(), M) + }, toJSON: function () { + var U = this, + c = U.dm, + x = c.getRoots(), + g = U.json = { + v: u.getVersion(), + p: {}, + a: {}, + d: [] + }, + Y = c.getSerializableAttrs(); + c.getInit() && (g.init = c.getInit()), c.getName() && (g.p.name = c.getName()), c.getBackground() && (g.p.background = c.getBackground()), c.getLayers() && (g.p.layers = c.getLayers()), c.getEnvmap() && (g.p.envmap = c.getEnvmap()), c.isCubicEnvmap() && (g.p.cubicEnvmap = c.isCubicEnvmap()), g.p.autoAdjustIndex = c.isAutoAdjustIndex(), g.p.hierarchicalRendering = c.isHierarchicalRendering(); + for (var H in Y) { + var L = c.a(H); + L !== Z && U[No](H, L, g.a) + } + return wd(g.a) && delete g.a, U._hierarchical ? x.each(U.serializeData, this) : c.each(function (d) { + U.serializeData(d) + }), c.fireSerializeEvent({ + type: "serialize", + json: g + }), c.getPostProcessingData() && (g.p.postProcessingData = c.getPostProcessingData()), g + }, isSerializable: function () { + return !0 + }, getProperties: function (h) { + return h.getSerializableProperties() + }, getStyles: function (H) { + return H.getSerializableStyles() + }, getAttrs: function (i) { + return i.getSerializableAttrs() + }, serializeData: function (v) { + var g = this; + if (g.isSerializable(v) && !v._refGraph) { + var V, R, Z, q, M = gp(v.getClassName()) || v.getClass(), + j = new M, + a = { + c: v.getClassName(), + i: v.getId(), + p: {}, + s: {}, + a: {} + }; + g.json.d.push(a), V = g.getProperties(v); + for (R in V) + if (/^_/.test(R)) { + if (Z = v[R], !("_width" !== R && "_height" !== R || Z != F && -1 !== Z)) { + var x; + ((v.s("layout.h") || v.s("layout.v")) && v.getHost() || v instanceof O.Node && (x = v.getParent()) && x instanceof O.Block || v.s("fullscreen")) && (Z = v[R] = "_width" === R ? v.getWidth() : v.getHeight()) + } + Z !== j[R] && g[No](R.substr(1), Z, a.p) + } else q = kp(R), v[q] && (Z = v[q](), Z !== j[q]() && g[No](R, Z, a.p)); + V = g.getStyles(v); + for (R in V) Z = v.s(R), Z !== j.s(R) && g[No](R, Z, a.s); + V = g.getAttrs(v); + for (R in V) Z = v.a(R), Z !== j.a(R) && g[No](R, Z, a.a); + wd(a.p) && delete a.p, wd(a.s) && delete a.s, wd(a.a) && delete a.a + } + g._hierarchical && v.getChildren().each(g.serializeData, g) + }, serializeValue: function (q, h, V) { + Xo(h) ? h = { + __a: h._as + } : h instanceof Qp && (h = { + __i: h.getId() + }), V[q] = h + }, deserialize: function (X, N, e) { + var v = this; + return dk(X) && /.json$/.test(X) ? (u.xhrLoad(X, function (i) { + v.deserializeImpl(i, N, e) + }), void 0) : v.deserializeImpl(X, N, e) + }, deserializeImpl: function (m, v, q) { + var d = this, + a = d.dm; + a.setDeserializing(!0), q = El(q) ? { + setId: q + } : Mf(q) ? { + finishFunc: q + } : q || {}, m = d.json = dk(m) ? u.parse(m) : m, !q.justDatas && m.a && m.a.onPreDeserialize && !q.disableOnPreDeserialize && m.a.onPreDeserialize(m, a, q.view), a.beginTransaction(), aj++, d._82I = {}; + var M = new xr, + Q = new xr, + G = 0, + Y = m.d.length; + if (q.justDatas || (!q.disableInit && Mf(m.init) && m.init(a), a.setInit(m.init)), !q.justDatas) { + for (var s in m.a) a.a(s, d[Ij](m.a[s])); + for (var j in m.p) a[tg(j)](m.p[j]) + } + for (; Y > G; G++) { + var t = m.d[G], + z = gp(t.c), + O = new z, + U = t.i; + q.setId && U != F && (O._id = U), d._82I[U] = O, M.add(O), Q.add(t) + } + for (G = 0; Y > G; G++) d.deserializeData(M.get(G), Q.get(G)); + return M.each(function (L) { + v && !L.getParent() && L.setParent(v), a.add(L) + }), q.__innerHandler__ && q.__innerHandler__(m, a, q.view, M), a.fireSerializeEvent({ + type: "deserialize", + json: m + }), aj--, a.endTransaction(), !q.justDatas && m.a && m.a.onPostDeserialize && !q.disableOnPostDeserialize && m.a.onPostDeserialize(m, a, q.view, M), q.finishFunc && q.finishFunc(m, a, q.view, M), a.setDeserializing(!1), M + }, deserializeData: function (y, r) { + for (var Z in r.p) y[tg(Z)](this[Ij](r.p[Z])); + for (Z in r.s) y.s(Z, this[Ij](r.s[Z])); + for (Z in r.a) y.a(Z, this[Ij](r.a[Z])) + }, deserializeValue: function (w) { + if (xl(w)) { + var z = w.__i; + if (z != F) return this._82I[z]; + if (z = w.__a, ip(z)) return new xr(z) + } + return w + } + }), Uh(jn, { + serialize: function (A, E) { + return new dl(this, E).serialize(A) + }, toJSON: function (c) { + return new dl(this, c).toJSON() + }, deserialize: function (K, x, U) { + return new dl(this).deserialize(K, x, U) + } + }); + var Rn = O.OverlappingBox = function (U) { + this.gv = U, this.boxes = {} + }; + ki("OverlappingBox", o, { + clear: function () { + var T, G, f = this.boxes; + for (T in f) G = f[T], G.length = 0 + }, isOverlapping: function (C, y) { + var Y, o, X = this, + k = X.boxes, + B = k[C]; + B ? (Y = B.rects, o = B.length) : B = k[C] = { + rects: Y = [], + length: o = 0 + }; + var d, S, y; + for (d = 0; o > d; d++) + if (S = Y[d], S.x < y.x + y.w && S.x + S.w > y.x && S.y < y.y + y.h && S.h + S.y > y.y) return !0; + return Y.length <= o ? (Y.push(y), B.length++) : Y[B.length++] = y, !1 + } + }), Uh(u, { + fetch: function (T, t) { + var F = "GET", + r = !1, + _ = null, + O = ""; + t && (F = t.method || "GET", r = t.sync, O = t.url, _ = t.data || null), T.open(F, O, !r), t.responseType ? T.responseType = t.responseType : t.overrideMimeType && T.overrideMimeType && T.overrideMimeType(t.overrideMimeType), T.send(_) + }, convertImageSrc: function (U, Z) { + Z && "function" == typeof Z || (Z = function () { }), Z(U) + } + }); + var De = O.Request = function () { + this._xhr = new XMLHttpRequest, this._onloadFunc = function () { }, this._errorFunc = function () { } + }; + ki("Request", o, { + _responseType: null, + _overrideMimeType: "text/plain", + send: function (e) { + var O = this._xhr, + j = this.onload, + J = this.onerror; + this.getResponseType() ? e.responseType = this.getResponseType() : this.getOverrideMimeType() && (e.overrideMimeType = this.getOverrideMimeType()), O.onload = j, O.onerror = J, u.fetch(O, e) + }, onload: function () { }, onerror: function () { }, getResponseType: function () { + return this._responseType + }, setResponseType: function (v) { + this._responseType = v + }, getOverrideMimeType: function () { + return this._overrideMimeType + }, setOverrideMimeType: function (N) { + this._overrideMimeType = N + }, getResponseText: function () { + var z = this._xhr; + return z.response || z.responseText + } + }), hg.GraphView = function (c) { + var W = this; + W._24I = {}, W._34I = new xr, W._25I = {}, W._56I = {}, W._view = ve(1, W), W._canvas = uo(W._view), W.dm(c ? c : new jn), this._coreInteractor = new mq(this), W.setEditable(!1), W.setScrollBarVisible(u.graphViewScrollBarVisible), W._initView() + }, Bb("GraphView", o, { + ms_v: 1, + ms_gv: 1, + ms_bnb: 1, + ms_tip: 1, + ms_dm: 1, + ms_lp: 1, + ms_fire: 1, + ms_sm: 1, + _49o: 1, + ms_txy: 1, + _52o: 1, + _51o: 1, + ms_ac: [df, gd, Pi, Ji, "resettable", "editInteractor", Fi, "zoomable", "pannable", "rectSelectable", "autoScrollZone", dj, "movableFunc", "editableFunc", "pointEditableFunc", "rectEditableFunc", "rotationEditableFunc", "anchorEditableFunc", "rectSelectBackground", "rectSelectBorderColor", "editPointSize", "editPointBorderColor", "editPointBackground", "hoverDelay"], + _zoomable: u.graphViewZoomable, + _resettable: u.graphViewResettable, + _pannable: u.graphViewPannable, + _rectSelectable: u.graphViewRectSelectable, + _autoScrollZone: u.graphViewAutoScrollZone, + _rectSelectBackground: u.graphViewRectSelectBackground, + _rectSelectBorderColor: u.graphViewRectSelectBorderColor, + _editPointSize: u.graphViewEditPointSize, + _editPointBorderColor: u.graphViewEditPointBorderColor, + _editPointBackground: u.graphViewEditPointBackground, + _scrollBarColor: Ch, + _scrollBarSize: di, + _autoHideScrollBar: jr, + _autoMakeVisible: be, + _currentActionType: null, + getCoreInteractor: function () { + return this._coreInteractor + }, getLayers: function () { + return this._dataModel.getLayers() + }, setLayers: function (d) { + this._dataModel.setLayers(d) + }, setEditable: function (Y) { + var W = this, + J = W.__interactorMap__; + if (!J) { + var $ = hg.XEditInteractor; + J = W.__interactorMap__ = { + scrollBar: new Vl(W), + select: new ng(W), + edit: $ ? new $(W) : new vm(W), + text: new eb(W), + move: new Wr(W), + "default": new pk(W), + touch: new Jb(W, { + editable: !1 + }) + } + } + Y ? (W._uieditable = !0, W.setInteractors([J.scrollBar, J.select, J.edit, J.text, J.move, J.default, J.touch])) : (W._uieditable = !1, W.setInteractors([J.scrollBar, J.select, J.move, J.default, J.touch])) + }, getCanvas: function () { + return this._canvas + }, _33I: function (e) { + var I = e.getUIClass(); + return I ? new I(this, e) : F + }, getDataUI: function (m) { + var H = this, + M = H._25I[m._id]; + return M === Z && (M = H._33I(m), H._25I[m._id] = M), M + }, getNodeRect: function (m) { + return u.getNodeRect(this, m) + }, getFullscreenDatas: function () { + return this._dataModel.getFullscreenDatas() + }, getEdgeInfo: function (j) { + var J = this.getDataUI(j); + return J ? (J._79o(), J._78o) : null + }, getEdgeSourcePosition: function (l) { + var F = this, + k = F.getDataUI(l), + i = k.s, + r = k._data._40I; + return Yg(F, r, i("edge.source.position"), i("edge.source.offset.x"), i("edge.source.offset.y"), i("edge.source.anchor.x"), i("edge.source.anchor.y")) + }, getEdgeTargetPosition: function (Z) { + var m = this, + R = m.getDataUI(Z), + h = R.s, + V = R._data._41I; + return Yg(m, V, h("edge.target.position"), h("edge.target.offset.x"), h("edge.target.offset.y"), h("edge.target.anchor.x"), h("edge.target.anchor.y")) + }, invalidateAll: function (l) { + var G = this; + if (l) { + for (var e in G._25I) { + var t = G._25I[e]; + t && t.dispose() + } + G._25I = {}, G._56I = {}, G._24I = {}, G._34I.clear(), G.redraw() + } else G.dm().each(function (y) { + G.invalidateData(y) + }) + }, invalidateSelection: function () { + var k = this; + k.sm().each(function (S) { + k.invalidateData(S) + }) + }, invalidateData: function ($) { + var O = this; + O._24I[$._id] = $, O._21Q($), O.iv() + }, _21Q: function (G) { + var o = this, + v = o._24I; + if (Bk(G) && Dc[G.s(ej)]) { + var M = G.getSourceAgent(); + M && M.getAgentEdges().each(function (V) { + v[V._id] = V + }), M = G.getTargetAgent(), M && M.getAgentEdges().each(function (f) { + v[f._id] = f + }), o.iv() + } + }, redraw: function (s) { + var d = this; + d._32I || (s ? d._34I.add(s) : (d._32I = 1, d._34I.clear()), d.iv()) + }, each: function (T, w) { + var X, $, E, f = 0, + A = this.getLayers(), + Z = this._dataModel, + P = Z._datas._as, + q = P.length; + if (A) { + for (var F = A.length; F > f; f++) + if (E = A[f], xl(E) && (E = E.name), Z.isHierarchicalRendering()) { + var D = function (b) { + return b._layer === E ? w ? T.call(w, b) : T(b) : void 0 + }; + if (this._dataModel.eachByHierarchical(D) === !1) return + } else + for (var b = 0; q > b; b++) + if (X = P[b], X._layer === E && ($ = w ? T.call(w, X) : T(X), $ === !1)) return + } else if (Z.isHierarchicalRendering()) this._dataModel.eachByHierarchical(T, null, w); + else + for (; q > f; f++) + if (X = P[f], $ = w ? T.call(w, X) : T(X), $ === !1) return + }, reverseEach: function (L, O) { + var M, P, e, b, t = this._dataModel, + a = t._layers, + V = t._datas._as, + v = V.length; + if (a) { + for (M = a.length - 1; M >= 0; M--) + if (b = a[M], xl(b) && (b = b.name), t.isHierarchicalRendering()) { + var o = function (I) { + return I._layer === b ? O ? L.call(O, I) : L(I) : void 0 + }; + if (t.reverseEachByHierarchical(o) === !1) return + } else + for (var i = v - 1; i >= 0; i--) + if (P = V[i], P._layer === b && (e = O ? L.call(O, P) : L(P), e === !1)) return + } else if (t.isHierarchicalRendering()) t.reverseEachByHierarchical(L, null, O); + else + for (M = v - 1; M >= 0; M--) + if (P = V[M], e = O ? L.call(O, P) : L(P), e === !1) return + }, getViewRect: function () { + return this._29I + }, getContentRect: function () { + var $ = this, + e = $._84I; + if (!e) { + var i = this.dm().a("width"), + p = this.dm().a("height"); + i > 0 && p > 0 ? $._84I = { + x: 0, + y: 0, + width: i, + height: p + } : ($.each(function (u) { + $.isVisible(u) && (e = ni(e, $.getDataUIBounds(u))) + }), $._84I = e ? e : nl) + } + return $._84I + }, getScrollRect: function () { + return ni(this.getContentRect(), this._29I) + }, makeCenter: function (m, V, G) { + var h = this; + if (!h.getWidth() || !h.getHeight()) return G || $e(h.makeCenter, h, [m, V, !0], 500), void 0; + h.makeVisible(m), h.validate(); + var x = h.getDataUIBounds(m); + if (x) { + var s = h.getWidth(), + Q = h.getHeight(), + S = x.x + x.width / 2, + $ = x.y + x.height / 2, + M = -S * h._zoom + s / 2, + W = -$ * h._zoom + Q / 2; + h.setTranslate(M, W, V) + } + }, fitData: function (I, D, R, r, S) { + var P = this; + if (!P.getWidth() || !P.getHeight()) return S || $e(P.fitData, P, [I, D, R, r, !0], 500), void 0; + var N = function () { + P.makeVisible(I), P.validate(); + var x = P.getDataUIBounds(I); + x && (x = Pm(x), vn(x, R == F ? 20 : R), P.fitRect(x, D, r)) + }; + D ? u.callWhenLoaded(N) : N() + }, fitContent: function (A, G, Q, m) { + var B = this; + if (!B.getWidth() || !B.getHeight()) return m || $e(B.fitContent, B, [A, G, Q, !0], 500), void 0; + var R = function () { + B.validate(); + var I = Pm(B.getContentRect()); + vn(I, G == F ? 20 : G), B.fitRect(I, A, Q) + }; + A ? u.callWhenLoaded(R) : R() + }, fitRect: function (i, A, m) { + var l = this, + C = l.getWidth(), + G = l.getHeight(), + w = i.x + i.width / 2, + U = i.y + i.height / 2, + q = V(C / i.width, G / i.height), + _ = l._zoom, + H = -w * _ + C / 2, + d = -U * _ + G / 2; + 0 === q || isNaN(q) || (m && (q = V(1, q)), A ? (l._65I && (delete l._65I.finishFunc, l._65I.stop(!0)), l._14o && l._14o.stop(!0), l.setTranslate(H, d, { + finishFunc: function () { + l.setZoom(q, A) + } + })) : (l.setTranslate(H, d), l.setZoom(q))) + }, fitSelection: function (N, C, q) { + var R = this, + u = R.sm(), + z = null; + u.size() && (u.each(function (G) { + z = ni(R.getDataUIBounds(G), z) + }), N && vn(z, N), R.fitRect(z, C, q)) + }, toCanvas: function (d, H, P) { + H = H || this._zoom, this.validateImpl(); + var p = this, + R = p.getContentRect(); + P && vn(R, P), R.width || (R.width = 10), R.height || (R.height = 10); + var G = uo(), + i = R.x * H, + $ = R.y * H, + n = Math.ceil(R.width * H), + K = Math.ceil(R.height * H); + Bn(G, n, K, 1); + var C = Wd(G); + return d = d || this._dataModel.getBackground(), d && fl(C, 0, 0, n, K, d), wh(C, -i, -$), C.scale(H, H), p._42(C), C.restore(), G + }, toDataURL: function (O, G, a, v) { + return this.toCanvas(O, a, v).toDataURL(G || "image/png", 1) + }, getClipBounds: function () { + return this._74O + }, _42: function (S, z) { + var H = this, + V = H.dm().getBackground(); + if (V) { + var $ = H.dm().a("width"), + N = H.dm().a("height"); + $ > 0 && N > 0 && fl(S, 0, 0, $, N, V) + } + var R = H.__htmlOrderList, + r = [], + K = H._forcedLayoutHTML; + if (H._93db(S, z), H.each(function (A) { + var N = H.getDataUI(A); + if (N) { + var Y = H._56I[A._id], + t = N._htmlView; + if (Y) { + var L = N._79o(); + if (t = N._htmlView, O.HtmlNode && A instanceof O.HtmlNode) N._42(S); + else { + var c = H.getViewRect(), + T = t && t.layoutHTML; + !z || Kj(z, L) ? (T && (t.layoutHTML(), N.__outerLayout && delete N.__outerLayout), N._42(S)) : Kj(c, L) || !T || N.__outerLayout && !K || (t.layoutHTML(), N.__outerLayout = !0) + } + } + t && (r.push(t), t.getView && (t = t.getView()), t.style.display = Y ? "block" : Jc) + } + }), R && r.length > 0) { + var P = !1; + if (R.length !== r.length) P = !0; + else + for (var I = 0; I < r.length; I++) + if (r[I] !== R[I]) { + P = !0; + break + } + P && (r.forEach(function (L) { + L.autoAdjustIndex !== !1 && H.appendHTML(L, !0) + }), this.__htmlOrderList = r) + } else this.__htmlOrderList = r; + H._92db(S, z) + }, validateImpl: function () { + this.tryUpdateRootData(); + var H, D, S, v, X, Q = this, + F = Q.tx(), + z = Q.ty(), + R = Q._zoom, + f = Q._canvas, + i = this.getWidth(), + y = this.getHeight(), + h = Q._29I, + C = { + x: -F / R, + y: -z / R, + width: i / R, + height: y / R + }, + d = {}, + Y = Q._34I, + W = Q._24I, + l = Q._32I, + Z = Q._23I; + Q._24I = {}, (i !== f.clientWidth || y !== f.clientHeight) && (Bn(f, i, y), l = 1, Q._forcedLayoutHTML = 1), l || jg(C, h) || (l = 1, Q._forcedLayoutHTML = 1), Q._29I = C, Q.each(function (l) { + D = l._id; + var n = d[D] = Q.isVisible(l); + n !== Q._56I[D] && (W[D] = l, S = Q.getDataUI(W[D]), S && S._84o(n), Q._84o(l, n)) + }, Q); + for (D in W) S = Q.getDataUI(W[D]), S && (!l && Q._56I[D] && (X = S._79o(), X && Y.add(X)), S.invalidate()), Q._83I = 1; + if (Q._56I = d, !l) + for (D in W) d[D] && (S = Q.getDataUI(W[D]), S && (X = S._79o(), X && Y.add(X))); + if (l ? v = C : (Y.each(function (D) { + Kj(C, D) && (v = ni(v, D)) + }), v && (vn(v, q(1, 1 / R)), v.x = T(v.x * R) / R, v.y = T(v.y * R) / R, v.width = s(v.width * R) / R, v.height = s(v.height * R) / R, v = ro(C, v))), Q._74O = v, v) { + H = Wd(f); + var I = v.x, + k = v.y, + P = v.width, + U = v.height; + I = Math.floor((I * R + F) * ij), k = Math.floor((k * R + z) * ij), P = Math.ceil(P * R * ij) + 1, U = Math.ceil(U * R * ij) + 1, l || (v.x = (I / ij - F) / R, v.y = (k / ij - z) / R, v.width = P / ij / R, v.height = U / ij / R), H.beginPath(), H.rect(I, k, P, U), H.clip(), H.clearRect(I, k, P, U), tf(H, F, z, R), Q._42(H, v), H.restore(), delete Q._74O + } + if (Y.clear(), delete Q._32I, delete Q._forcedLayoutHTML, Z && i > 0 && y > 0) { + var S = Q.getDataUI(Z); + if (S) { + var X = S._79o(), + p = Q._29I, + J = p.x, + O = p.y, + K = p.width, + E = p.height, + R = Q._zoom; + X && !Kj(X, p) && (X.x + X.width < J && Q.tx(-X.x * R), X.x > J + K && Q.tx(-(X.x + X.width - K) * R), X.y + X.height < O && Q.ty(-X.y * R), X.y > O + E && Q.ty(-(X.y + X.height - E) * R)) + } + delete Q._23I + } + Q._83I && (delete Q._83I, delete Q._84I), Q._98O(), Q.countFrame(), wd(Q._24I) || $e(Q.iv, Q) + }, isValidGuideLineSource: function () { + return !0 + }, tryUpdateRootData: function () { + if (!this._rootDataUpdating) { + this._rootDataUpdating = !0; + var z, x = this.getFullscreenDatas(); + for (var s in x) z = x[s], this.scaleRootData(z); + this._rootDataUpdating = !1 + } + }, scaleRootData: function (_) { + var E = _.s("fullscreen"); + if ("uniform" === E || "fill" === E) { + _.getRotation() && _.setRotation(0); + var v = _.s("fullscreen.gap") || 0, + f = this.getWidth(), + X = this.getHeight(); + if (f && X) { + var a, A, L, r = f - 2 * v, + x = X - 2 * v, + z = _.getAnchor(), + u = _.getScaledSize(), + Y = u.width, + O = u.height, + J = _.s("fullscreen.lock"); + if (J) return "uniform" === E ? r / x > Y / O ? (a = x / O, Y = O * r / x) : (a = r / Y, O = Y * x / r) : "v" === J ? (a = x / O, Y = r / a, _.getWidth() !== Y && _.setWidth(Y)) : (a = r / Y, O = x / a, _.getHeight() !== O && _.setHeight(O)), this.setZoom(a), A = v - (_.getX() - z.x * Y) * a, L = v - (_.getY() - z.y * O) * a, A !== this.tx() && this.tx(A), L !== this.ty() && this.ty(L), void 0; + A = this.tx(), L = this.ty(), a = this._zoom; + var P = { + x: (-A + v) / a, + y: (-L + v) / a, + width: r / a, + height: x / a + }; + if ("uniform" === E) { + var w = Y / O, + j = Math.min(P.width, P.height * w), + k = j / w; + P.x += .5 * (P.width - j), P.y += .5 * (P.height - k), P.width = j, P.height = k + } + r = P.width / _.getScaleX(), x = P.height / _.getScaleY(), (_.getWidth() != r || _.getHeight() !== x) && _.setSize(r, x); + var l = P.x + z.x * P.width, + n = P.y + z.y * P.height, + H = _.getPosition(); + (l !== H.x || n !== H.y) && _.setPosition(l, n) + } + } + }, isScrollBarVisible: function () { + return !!this._79O + }, setScrollBarVisible: function (w) { + var m = this; + w !== m.isScrollBarVisible() && (w ? (sn(m._view, m._79O = dd()), sn(m._79O, m._27I = dd()), sn(m._79O, m._28I = dd())) : (yj(m._79O), delete m._79O, delete m._27I, delete m._28I), m.fp("scrollBarVisible", !w, w)) + }, getDebugTip: function () { + return "" + }, showScrollBar: function () { + var c = this; + c._79O && (c._85I || (cd(function () { + c._86I() + }, Lg), c.iv()), c._85I = new Date) + }, _86I: function () { + var i = this; + if (i._85I) { + var C = new Date, + d = C.getTime(); + d - i._85I.getTime() >= Lg ? (delete i._85I, i.iv()) : cd(function () { + i._86I() + }, Lg) + } + }, getVScrollBar: function () { + return this._27I + }, getHScrollBar: function () { + return this._28I + }, _98O: function () { + var K = this, + N = this._27I, + B = this._28I; + if (K._79O) { + if (K._autoHideScrollBar && !K._85I) return N.style.visibility = fc, B.style.visibility = fc, void 0; + var D = K.getScrollBarColor(), + Y = K._zoom, + M = K.getScrollBarSize(), + u = K.getViewRect(), + I = K.getScrollRect(), + Z = u.height * Y, + h = I.height * Y, + T = u.width * Y - M - 2, + F = Z * ((u.y - I.y) * Y / h), + J = Z * (Z / h), + R = N.style; + h - .5 > Z ? (un > J && (F = F + J / 2 - un / 2, 0 > F && (F = 0), F + un > Z && (F = Z - un), J = un), qp(N, T, F, M, J), R.visibility = Pd, R.background = D, R.borderRadius = M / 2 + oe) : R.visibility = fc; + var A = u.width * Y, + o = I.width * Y, + F = u.height * Y - M - 2, + T = A * ((u.x - I.x) * Y / o), + z = A * (A / o), + R = B.style; + o - .5 > A ? (un > z && (T = T + z / 2 - un / 2, 0 > T && (T = 0), T + un > A && (T = A - un), z = un), qp(B, T, F, z, M), R.visibility = Pd, R.background = D, R.borderRadius = M / 2 + oe) : R.visibility = fc + } + }, setDataModel: function (H) { + var d = this, + g = d._dataModel, + f = d._selectionModel; + g !== H && (g && (g.ump(d.handleDataModelPropertyChange, d), g.umm(d.handleDataModelChange, d), g.umd(d.handleDataPropertyChange, d), g.removeIndexChangeListener(d._75O, d), g.removeHierarchyChangeListener(d.handleHierarchyChange, d), f || g.sm().ums(d.handleSelectionChange, d)), d._dataModel = H, H.mp(d.handleDataModelPropertyChange, d), H.mm(d.handleDataModelChange, d), H.md(d.handleDataPropertyChange, d), H.addIndexChangeListener(d._75O, d), H.addHierarchyChangeListener(d.handleHierarchyChange, d), f ? f._21I(H) : H.sm().ms(d.handleSelectionChange, d), d.invalidateAll(!0), d.fp(uk, g, H), d.updateBackground()) + }, getLayersInfo: function () { + if (this._layersInfo === Z) { + var B = this.getLayers(); + B ? (this._layersInfo = {}, B.forEach(function (l) { + var D = xl(l) ? l.name : l; + this._layersInfo[D] = l + }, this)) : this._layersInfo = null + } + return this._layersInfo + }, calculateEdgePosition: function (J, V, Z) { + var p, G, C = this, + e = C.getDataUI(J), + k = qm(e), + W = Tn(V, function (f) { + return np(k, 100 * f) + }, 100, .001), + F = np(k, 100 * W); + if (!Z) { + var L = Kk(e), + g = new Xi(F.x, F.y), + D = 49 / (C._zoom * C._zoom); + for (p = 0, G = L.length; G > p; p++) + if (g.distanceToSquared(L[p]) < D) return { + index: p, + point: L[p], + distance: Math.sqrt((L[p].x - V.x) * (L[p].x - V.x) + (L[p].y - V.y) * (L[p].y - V.y)) + } + } + return { + percent: W, + point: F, + distance: Math.sqrt((F.x - V.x) * (F.x - V.x) + (F.y - V.y) * (F.y - V.y)) + } + }, calculateAttachPoint: function () { + var R = new Xi, + D = new Xi, + B = new Xi; + return function (z, V) { + var u = this.getAttachPoints(z); + if (!u || !u.length) return null; + B.set(V.x, V.y); + for (var W, E, H, s, O, h = 1 / 0, A = 0, $ = u.length; $ > A; A++) H = u[A], D.x = H.x, D.y = H.y, R.x = H.offsetX || 0, R.y = H.offsetY || 0, s = Yg(this, z, 0, R.x, R.y, D.x, D.y), E = B.distanceToSquared(s), h > E && (W = A, h = E, O = s); + h = Math.sqrt(h); + var l = this.getAttachStyle(z); + if ("close" === l) { + var m = z.s("attach.close.threshold") / this._zoom; + if (h > m) return null + } + return { + index: W, + distance: h, + info: u[W], + point: O + } + } + }(), + getAttachPoints: function (J) { + var d = J.s("attach.points"); + if (d) return d; + var b = ii(J._image); + return b ? Dj(b.attachPoints, J, this) || null : void 0 + }, getAttachStyle: function (w) { + var u = w.s("attach.style"); + if (u) return u; + var f = ii(w._image); + return f ? Dj(f.attachStyle, w, this) || "close" : void 0 + }, updateLayers: function () { + this._layersInfo = Z, this.invalidateSelection(), this.redraw() + }, updateBackground: function () { + var g = this.dm().a("width"), + V = this.dm().a("height"); + this._canvas.style.background = g > 0 && V > 0 ? "" : this.dm().getBackground() || "" + }, handleDataModelPropertyChange: function (n) { + if ("background" === n.property) { + var i = this._canvas.style.background, + e = n.newValue || ""; + this.updateBackground(), this.fp("canvasBackground", i, e), this.redraw() + } else "a:width" === n.property || "a:height" === n.property ? (this._83I = 1, this.updateBackground(), this.redraw()) : "layers" === n.property ? this.updateLayers() : "hierarchicalRendering" === n.property && this.redraw() + }, handleDataPropertyChange: function (P) { + this.dm().isHierarchicalRendering() && "parent" === P.property && P.data.hasChildren() && this.redraw(), this.invalidateData(P.data) + }, onPropertyChanged: function (M) { + var L = this, + n = M.property; + if (L.redraw(), "zoom" === n) { + var Y = L.sm().getSelection(); + Y.size() && Y.each(function (N) { + N.invalidate() + }) + } else "dataModel" === n && (L._83I = 1); + Jd[n] ? L.showScrollBar() : n === Fi && L.onCurrentSubGraphChanged(M) + }, onCurrentSubGraphChanged: function () { + this.sm().cs(), this.reset() + }, handleDataModelChange: function (O) { + var T = this, + R = O.kind, + A = O.data; + if (T._83I = 1, "add" === R) T.invalidateData(A), Bk(A) && A.getEdgeGroup() && A.getEdgeGroup().eachSiblingEdge(T.invalidateData, T); + else if (R === Ce) { + T._21Q(A); + var g = A._id, + n = T._25I[g]; + if (n) { + if (T._56I[g]) { + var v = n._79o(); + v && T.redraw(v) + } + n.dispose(), delete T._25I[g], delete T._24I[g], delete T._56I[g] + } + A === T._currentSubGraph && T.setCurrentSubGraph(F) + } else R === Tg && (T.invalidateAll(!0), T.setCurrentSubGraph(F)) + }, _75O: function (n) { + this.invalidateData(n.data) + }, handleHierarchyChange: function (A) { + this.dm().isHierarchicalRendering() && A.data.hasChildren() && this.redraw(), this.invalidateData(A.data) + }, adjustIndex: function (P) { + var $ = this; + if ($.isVisible(P)) { + $.dm().beginTransaction(); + for (var J = P; J._parent && $.isVisible(J._parent);) J = J._parent; + J && J !== P && $._dataModel.adjustIndex(J), $._dataModel.adjustIndex(P), $.dm().endTransaction() + } + }, getImage: function (r) { + return r.getImage ? r.getImage() : Z + }, getSelectWidth: function (Z) { + var j = ii(this.getImage(Z)); + return j && Dj(j.disableSelectedBorder, Z, this) ? 0 : Z.s("select.width") + }, getSelectColor: function (t) { + return t.s("select.color") + }, isSelectable: function (o, d) { + if (this.isSelected(o)) return !0; + if (!d && o.getParent() instanceof Br && this.isSelectable(o.getParent(), !0) && o.getParent().isSyncSize()) return !1; + var y = this.getLayersInfo(); + if (y) { + var L = y[o._layer]; + if (L && L.selectable === !1) return !1 + } + return o.s("2d.selectable") && this.sm().isSelectable(o) + }, isMovable: function (b) { + var O = this; + if (Bk(b) && b.getStyle(ej) !== _b) return !1; + var p = this.getLayersInfo(); + if (p) { + var w = p[b._layer]; + if (w && w.movable === !1) return !1 + } + return b.s("2d.movable") ? O._movableFunc ? O._movableFunc(b) : !0 : !1 + }, isEditable: function (A) { + var H = this; + if (O._uiSerializing) return H._uieditable; + if (!H._editInteractor || !H.isSelected(A)) return !1; + if (yl(A)) { + var W = H.getDataUI(A); + if (!W || W._88I) return !1 + } + if (Bk(A) && A.getStyle(ej) !== _b) return !1; + var t = this.getLayersInfo(); + if (t) { + var w = t[A._layer]; + if (w && w.editable === !1) return !1 + } + return A.s("2d.editable") ? H._editableFunc ? H._editableFunc(A) : !0 : !1 + }, handleDelete: function () { + this._editInteractor && (this._editInteractor.handleDelete ? this._editInteractor.handleDelete() : this.removeSelection()) + }, isPointEditable: function (x) { + return Fq(x) && 0 !== x.getRotation() ? !1 : this._pointEditableFunc ? this._pointEditableFunc(x) : !0 + }, isRectEditable: function (I) { + return this._rectEditableFunc ? this._rectEditableFunc(I) : !0 + }, isAnchorEditable: function (g) { + return this._anchorEditableFunc ? this._anchorEditableFunc(g) : !0 + }, isRotationEditable: function (s) { + return s.setRotation && s.IRotatable !== !1 ? this._rotationEditableFunc ? this._rotationEditableFunc(s) : !0 : !1 + }, isSourceTargetEditable: function () { + return !0 + }, getRotationPoint: function (c) { + var Y = c.getAnchor(), + K = c.getScale(), + w = this._zoom, + M = Go(c.getRotation(), 0, -c.getHeight() * K.y * Y.y - (K.y < 0 ? -1 : 1) * (nf ? 32 : 16) / w), + m = c.p(); + return M.x += m.x, M.y += m.y, M + }, getLogicalPoint: function (P) { + var y = this; + return Nm(P, y._canvas, y.tx(), y.ty(), y._zoom, y._zoom) + }, getScreenPoint: function (_, C) { + var i, s = this; + return "object" == typeof _ ? _.x !== Z ? (i = _.x, C = _.y) : (i = _[0], C = _[1]) : i = _, Qo(i, C, s._canvas, s.tx(), s.ty(), s._zoom, s._zoom) + }, getSelectedDataAt: function (T) { + var A = this; + return this.getDataAt(T, function (w) { + return A.isSelected(w) + }) + }, getDataInfoAt: function (c, o, J) { + var u, b = this.lp(c), + a = this.getDataAt(b, o, J); + if (a) { + var Y = this.getDataUI(a); + u = { + data: a, + ui: Y, + point: b + }; + var e = Y._38o; + if (e) { + var W = e.icons; + for (var T in W) { + var f = W[T], + x = e.rects[T]; + if (x) + for (var P = Dj(f.names, a, this), p = P ? P.length : 0, i = x.rotation, O = p - 1; O >= 0; O--) { + var z = P[O], + B = x[O]; + if (cf(B, b, i)) return u.part = "icons", u.name = T, u.icon = z, u.rect = B, u.index = O, u.rotation = i, u + } + } + } + if (this.isNoteVisible(a)) { + if (Y.note2Info && cf(Y.note2Info.clickRect, b, F, Y.note2Info.scale)) return u.part = "note2", u; + if (Y.noteInfo && cf(Y.noteInfo.clickRect, b, F, Y.noteInfo.scale)) return u.part = "note", u + } + if (this.isLabelVisible(a)) { + if (Y.label2Info && cf(Y.label2Info.rect, b, Y.label2Info.rotation, Y.label2Info.scale)) return u.part = "label2", u; + if (Y.labelInfo && cf(Y.labelInfo.rect, b, Y.labelInfo.rotation, Y.labelInfo.scale)) return u.part = "label", u + } + if (a.isInRect && a.isInRect(b)) return u.part = "body", u + } + return u + }, getDataAt: function (h, o, M) { + h.target && (h = this.lp(h)); + var k, E = this._zoom; + return this.reverseEach(function (z) { + return (o ? o(z) : this.isSelectable(z)) && this.rectIntersects(z, Cc(h.x, h.y, M, E)) ? (k = z, !1) : void 0 + }, this), k + }, getIconInfoAt: function (q, j) { + var C = this; + if (q.target && (q = C.lp(q)), j || (j = C.getDataAt(q)), j) { + var h = C.getDataUI(j); + if (h && h._38o) { + var G, V = h._38o, + x = new xr; + for (G in V.icons) x.add(G); + for (var K = x.size() - 1; K >= 0; K--) { + G = x.get(K); + for (var d = V.rects[G], M = d.rotation, t = d.length - 1; t >= 0; t--) { + var b = d[t], + P = b.width, + Z = b.height, + e = { + x: q.x - b.x - P / 2, + y: q.y - b.y - Z / 2 + }; + M != F && (e = Go(-M, e.x, e.y)); + var b = { + x: -P / 2, + y: -Z / 2, + width: P, + height: Z + }; + if (cf(b, e)) return { + key: G, + index: t, + name: V.icons[G].names[t], + rect: d[t], + point: q, + rotation: M, + relativeRect: b, + relativePoint: e, + data: j + } + } + } + } + } + return F + }, getDatasInRect: function (P, D, N) { + N === Z && (N = 1); + var h = this, + p = new xr; + return h.reverseEach(function ($) { + N && !h.isSelectable($) || (D ? h.rectIntersects($, P) : h.rectContains($, P)) && p.add($) + }), p + }, moveSelection: function (m, a) { + var u = this; + u.dm().beginTransaction(), qc(u.sm().toSelection(u.isMovable, u), m, a), u.dm().endTransaction() + }, moveDatas: function (h, G, p) { + var U = this; + U.dm().beginTransaction(), h instanceof xr || (h = new xr(h)), qc(h, G, p), U.dm().endTransaction() + }, getDataUIBounds: function (w) { + var U = this.getDataUI(w); + return U ? U._79o() : F + }, drawData: function (K, w, X) { + var u = this.getDataUI(w); + if (u) { + var s = u._79o(); + (!X || Kj(X, s)) && (u._42(K), w instanceof O.Block && w.eachChild(function (N) { + this.isVisible(N) && this.drawData(K, N, X) + }, this)) + } + }, getBoundsForGroup: function (n) { + return n.s(Dm) ? this.getDataUIBounds(n) : F + }, isPixelPerfect: function (o) { + return o.s("pixelPerfect") + }, rectIntersects: function (f, r) { + this.validate(); + var P = F; + if (this._56I[f._id]) { + var Y = this._25I[f._id]; + if (Y) { + var a = Y._79o(); + if ($k(r, a)) P = !0; + else if ((r = ro(r, a)) && (Y.rectIntersects && (P = Y.rectIntersects(r)), P == F)) { + if (!this.isPixelPerfect(f)) return !0; + var D = r.x, + O = r.y, + T = r.width, + B = r.height, + U = this._zoom, + y = u.hitMaxArea, + c = T * B * U * U; + if (c > y) { + var i = Math.sqrt(y / c); + U *= i + } + T *= U, B *= U, 2 > T && (T = 2), 2 > B && (B = 2), D *= U, O *= U; + var R = Cr(T, B); + wh(R, -D, -O), R.scale(U, U), this._drawForChecking = !0, this.drawData(R, f, r), this._drawForChecking = !1; + try { + for (var Q = 0, W = R.getImageData(0, 0, T, B).data; Q < W.length; Q += 4) + if (0 !== W[Q + 3]) { + P = !0; + break + } + R.restore() + } catch ($) { + xm = F, P = !1 + } + } + } + } + return P ? !0 : !1 + }, rectContains: function (J, q) { + if (this._56I[J._id]) { + var N = this._25I[J._id]; + if (N) return $k(q, N._79o()) + } + return !1 + }, reset: function () { + this.setZoom(1), this.setTranslate(0, 0) + }, handleKeyDown: function (Y) { + if (!u.isInput(Y.target)) { + var R = this, + J = R._focusData, + m = J && R._25I[J._id], + v = 0, + t = R._dataModel._datas; + if (!(J && J._enabled && J._editable && m && m.onKeyDown && m.onKeyDown(Y) === !0)) + if (9 === Y.keyCode && (J && (v = t.indexOf(J), Pf(Y) ? -1 === --v && (v = 0) : ++v === t.size() && (v = 0)), R._focusData = J = t.get(v), R.sm().setSelection(J)), Dq(Y) ? R.selectAll() : Cf(Y) && R.isResettable() && R.reset(), R.sm().isEmpty()) { + if (R._editing) return; + var $ = R.tx(), + x = R.ty(), + r = !1, + C = Pf() ? 100 : 10; + Wk(Y) && ($ -= C, r = !0), Nk(Y) && (x -= C, r = !0), _i(Y) && ($ += C, r = !0), ri(Y) && (x += C, r = !0), r && R.setTranslate($, x) + } else { + qq(Y) && R.handleDelete(Y); + var d = Pf() ? 10 : 1; + Wk(Y) && (R.moveSelection(-d, 0), R.fi({ + kind: "moveLeft" + })), Nk(Y) && (R.moveSelection(0, -d), R.fi({ + kind: "moveUp" + })), _i(Y) && (R.moveSelection(d, 0), R.fi({ + kind: "moveRight" + })), ri(Y) && (R.moveSelection(0, d), R.fi({ + kind: "moveDown" + })) + } + } + }, handleScroll: function (A, Z) { + if (Qc(A), this.isZoomable()) { + if (!this.getEditInteractor()) { + var o = this.getDataAt(A); + if (o) { + var n = ii(this.getImage(o)); + if (n && Dj(n.scrollable, o, this)) return + } + } + var L = this.lp(A); + Z > 0 ? this.scrollZoomIn(L) : 0 > Z && this.scrollZoomOut(L) + } + }, handlePinch: function (l, P, R) { + this.isZoomable() && (Math.abs(P - R) < u.pinchZoomThreshold || (P > R ? this.pinchZoomIn(l) : this.pinchZoomOut(l))) + }, checkDoubleClickOnNote: function (h, K) { + var N = this, + J = N.lp(h), + E = N.getDataUI(K), + o = E.note2Info; + return o && K.s("note2.toggleable") && cf(o.clickRect, J) ? (K.s(Mh, !K.s(Mh)), N.fi({ + kind: "toggleNote2", + event: h, + data: K + }), !0) : (o = E.noteInfo, o && K.s("note.toggleable") && cf(o.clickRect, J) ? (K.s(ke, !K.s(ke)), N.fi({ + kind: "toggleNote", + event: h, + data: K + }), !0) : !1) + }, _84o: function () { }, isNoteVisible: function () { + return this._zoom > .15 + }, isLabelVisible: function () { + return this._zoom > .15 + }, isEditVisible: function () { + return this._zoom > .15 + }, autoScroll: function (T, r) { + var h = this, + m = h.getAutoScrollZone(), + g = m / h.getZoom(), + z = m / 4, + k = h._29I, + L = h.lp(T), + y = { + x: h.tx(), + y: h.ty() + }; + return L && m > 0 && k && (L.x - k.x < g ? h.translate(z, 0) : k.x + k.width - L.x < g && h.translate(-z, 0), L.y - k.y < g ? h.translate(0, z) : k.y + k.height - L.y < g && h.translate(0, -z)), y.x = h.tx() - y.x, y.y = h.ty() - y.y, r && (r.x += y.x, r.y += y.y), y + }, getMoveMode: function (j, s) { + var L = s.s("2d.move.mode"); + return L ? L : pl["88"] ? "x" : pl["89"] ? "y" : "xy" + }, getSerializableProperties: function () { + return { + scrollBarColor: 1, + scrollBarSize: 1, + autoMakeVisible: 1, + autoHideScrollBar: 1, + editable: 1, + resettable: 1, + pannable: 1, + rectSelectable: 1, + autoScrollZone: 1, + visibleFunc: 1, + movableFunc: 1, + editableFunc: 1, + pointEditableFunc: 1, + rectEditableFunc: 1, + anchorEditableFunc: 1, + rotationEditableFunc: 1, + rectSelectBackground: 1, + rectSelectBorderColor: 1, + editPointSize: 1, + editPointBorderColor: 1, + editPointBackground: 1, + hoverDelay: 1, + dataModel: 1, + selectionModel: 1, + currentSubGraph: 1, + zoom: 1, + translateX: 1, + translateY: 1 + } + }, serializeProperty: function (s, _, k) { + var q = this; + return "currentSubGraph" === _ ? { + __i: s.getId() + } : k.serializeProperty(s, _, q) + }, deserializeProperty: function (a, c, e) { + var H = this; + if ("currentSubGraph" === c) { + var n = H.dm(), + t = n.__idMap; + return t[a.__i] + } + return e.deserializeProperty(a, c, H) + }, setDefaultCursor: function (Y, c) { + this._defaultCursor = Y, c !== !1 && this.setCursor(Y) + }, setCursor: function (V) { + "default" === V && (V = this._defaultCursor || V); + var r = this.getView().style; + r.cursor = V, r.cursor = "-webkit-" + V, r.cursor = "-moz-" + V + }, getCurrentConnectActionType: function () { + return this._currentActionType + }, setCurrentConnectActionType: function (R) { + return R === F || u.getConnectAction(null, R) ? (this._currentActionType = R, this.redraw(), !0) : !1 + }, getEditStyle: function (z) { + var S = this.getEditInteractor(); + return S ? S.getStyle(z) : Z + }, setEditStyle: function (Q, z, t) { + var c = this.getEditInteractor(); + return c ? (c.setStyle(Q, z, t), !0) : !1 + }, isConnectActionVisible: function (g) { + var A = u.getConnectAction(this); + if (!A) return !1; + var w = A.visible; + return Mf(w) && (w = w(this, g)), w + }, isInteractive: function (E) { + if (this._drawForChecking) return !1; + var U = ii(this.getImage(E)); + return U && Dj(U.interactive, E, this) ? !0 : E.s("interactive") + }, appendHTML: function (u, r) { + var A = this.getView(); + if (!(r || u && u.parentNode !== A)) return !1; + var K = u.getView && u.getView(); + if (!r && K && K.parentNode === A) return !1; + (u.getView || u.isSelfViewEvent) && (u = u.getView()); + var h = this.getEditInteractor(); + return h && h._canvas ? A.insertBefore(u, h._canvas) : this.isScrollBarVisible() ? A.insertBefore(u, this.getView().lastChild) : sn(A, u), !0 + }, _layoutHTMLImpl: function ($, O, w) { + if (arguments.length > 1) { + var D, A = this, + j = A._zoom; + if (O.getView && (D = O, O = O.getView()), O.style.position = "absolute", w) { + var Z = $.getRect(); + qp(D || O, A.tx() + Z.x * j, A.ty() + Z.y * j, Z.width * j, Z.height * j) + } else { + var h = new Np, + Z = $.getAnchorRect(), + z = $.getPosition(), + f = $.getScale(), + G = O.style; + qp(D || O, Z), h.appendTranslate(A.tx(), A.ty()), h.appendScale(j, j), h.append(new Np($.getRotation(), z.x, z.y, f.x, f.y)), Jg(G, "transform", "matrix(" + h.a.toFixed(5) + ", " + h.b.toFixed(5) + ", " + h.c.toFixed(5) + ",\n " + h.d.toFixed(5) + ", " + h.tx.toFixed(5) + ", " + h.ty.toFixed(5) + ")"), Jg(G, "transformOrigin", (-Z.x).toFixed(5) + "px " + (-Z.y).toFixed(5) + "px"), O.updateAppendMatrix = !0 + } + } else this._layoutHTML && this._layoutHTML() + }, getTextEditInfo: function (y) { + return y instanceof Lo ? { + name: "text", + accessType: "s", + isMultiline: !1 + } : void 0 + }, getState: function (j) { + var t = "state", + V = j.s(t); + if (V) return V; + var J = ii(j._image); + return J ? Dj(J[t], j, this) || null : void 0 + }, getShape: function (E) { + return E.getStyle(bl) + } + }), o.defineProperties(hg.GraphView.prototype, { + layoutHTML: { + get: function () { + return this._layoutHTMLImplBind || (this._layoutHTMLImplBind = this._layoutHTMLImpl.bind(this)), this._layoutHTMLImplBind + }, set: function (a) { + this._layoutHTML = a + } + } + }); + var Tp = function (B, H) { + var M = this; + M.gv = B, M.s = function (b) { + return H.getStyle(b) + }, M._data = H, M._87I = new xr + }; + yc(Tp, o, { + _6I: F, + ms_icons: 1, + _84o: function () { }, dispose: function () { }, isShadowed: function () { + return this.s("shadow") || this.gv.isSelected(this._data) && "shadow" === this.s("select.type") + }, getSelectWidth: function () { + var _ = this, + h = _.gv.isSelected(_._data); + return !h || _.isShadowed() ? 0 : _.gv.getSelectWidth(_._data) + }, getSelectColor: function () { + return this.gv.getSelectColor(this._data) + }, getBodyColor: function (o) { + var X = this._data, + q = this.gv.getBodyColor(X); + return q ? q : o ? X.getStyle(o) : F + }, _2Q: function (o) { + return this.s(o) + }, _1Q: function (O, S, k, F) { + var Y = this.s, + A = Y("2d.gray"), + $ = Y(S + ".dash.color"); + if (A && ($ = u.toGrayColor($)), O.strokeStyle = $, O.lineWidth = k, O.stroke(), Y(S + ".dash.3d")) { + var w = Y(S + ".dash.3d.color"); + fr(O, $, A ? u.toGrayColor(w) : w, k, this.gv._zoom, Y(S + ".dash.3d.accuracy")) + } + _l(O, F) + }, invalidate: function () { + this._6I = F + }, _79o: function () { + var J = this; + if (!J._6I) { + var u = J._data, + p = J.gv; + J.labelInfo = J.label2Info = J.noteInfo = J.note2Info = J._38o = F, J._87I.clear(), J.interactiveInfo = p.isInteractive(u) ? {} : F, J._3O(), J._55O = p.isEditable(u) ? { + _42O: p.isRectEditable(u), + _43O: p.isPointEditable(u), + _56O: p.isRotationEditable(u) + } : F, J._6I = J._81o() + } + return J._6I + }, _3O: function () { }, getPosition: function () { + return nl + }, _68o: function (b, A) { + b && this._87I.add(Rj(b, A)) + }, _81o: function () { + var E = this, + i = E.s; + E._24O(Bg, "getLabel"), E._24O(Qk, "getLabel2"), E._26O(Rm, "getNote"), E._26O(Vk, "getNote2"), E._15O(), E._55O && E._48O(); + var C; + if (E._87I.each(function (V) { + C = ni(C, V) + }), C) { + var I = E.isShadowed(), + w = i("shadow2"), + X = Pm(C); + w ? (X.x += i("shadow2.offset.x"), X.y += i("shadow2.offset.y"), vn(X, i("shadow2.blur"))) : I && (X.x += i("shadow.offset.x"), X.y += i("shadow.offset.y"), vn(X, i("shadow.blur"))), C = ni(C, X) + } + return E._87I.clear(), C + }, _42: function (v) { + var e = this, + z = e._data, + I = e.gv, + O = e.s, + V = O("opacity"), + d = this.isShadowed(), + q = O("shadow2"); + if (d || q) { + var Z = v.shadowOffsetX, + D = v.shadowOffsetY, + b = v.shadowBlur, + r = v.shadowColor, + j = I.getZoom(), + W = d ? "shadow" : "shadow2"; + v.shadowOffsetX = O(W + ".offset.x") * j, v.shadowOffsetY = O(W + ".offset.y") * j, v.shadowBlur = O(W + ".blur") * j, v.shadowColor = d ? e.getSelectColor() : O(W + ".color") + } + if (V != F) { + var S = v.globalAlpha; + v.globalAlpha = V + } + e._80o(v), I.isLabelVisible(z) && ((!I._drawForChecking || O("label.selectable")) && vp(v, e.labelInfo), (!I._drawForChecking || O("label2.selectable")) && vp(v, e.label2Info)), I.isNoteVisible(z) && ($q(v, e.noteInfo), $q(v, e.note2Info)), e._99O(v), V != F && (v.globalAlpha = S), (d || q) && (v.shadowOffsetX = Z, v.shadowOffsetY = D, v.shadowBlur = b, v.shadowColor = r) + }, _80o: function () { }, _47O: function () { }, _24O: function (C, f) { + var r = this, + e = r._data, + g = r.gv, + p = r.s, + Z = g[f](e); + if (Z != F) { + var T = p(C + ".scale"), + S = p(C + ".max"), + Q = p(C + ".position"), + c = r[C + "Info"] = { + label: Z, + scale: T, + color: g[f + "Color"](e), + font: p(C + ".font"), + opacity: p(C + ".opacity"), + align: p(C + ".align"), + rotation: r.getRotation(p(C + ".rotation"), !1, Q), + background: g[f + "Background"](e) + }, + _ = qr(c, Z); + S > 0 && S < _.width && (c.labelWidth = _.width, _.width = S), 1 !== T && (_.width *= T, _.height *= T); + var t = r.getPosition(Q, p(C + ".offset.x"), p(C + ".offset.y"), _, p(C + ".position.fixed")); + if (_.x = t.x - _.width / 2, _.y = t.y - _.height / 2, r._68o(c.rect = _, c.rotation), 1 !== T) { + var h = _.width / T, + P = _.height / T; + c.rect = { + x: t.x - h / 2, + y: t.y - P / 2, + width: h, + height: P + } + } + } + }, _26O: function (A, n) { + var N = this, + z = N.gv, + X = N._data, + t = N.s, + c = z[n](X); + if (c != F) { + var i, L, r = t(A + ".scale"), + V = N[A + "Info"] = { + note: c, + scale: r, + data: X, + view: z, + expanded: t(A + ".expanded"), + font: t(A + ".font"), + color: t(A + ".color"), + opacity: t(A + ".opacity"), + align: t(A + ".align"), + icon: t(A + ".icon"), + backgroundImage: t(A + ".backgroundImage"), + borderWidth: t(A + ".border.width"), + borderColor: t(A + ".border.color"), + background: z[n + "Background"](X) + }, + R = N.getPosition(t(A + ".position"), t(A + ".offset.x"), t(A + ".offset.y")), + G = R.x, + M = R.y; + if (V.expanded) { + var b, Y = t(A + ".max"), + j = t(A + ".backgroundImage"); + j ? (j = ii(j), b = { + width: xc(j, X), + height: oo(j, X) + }) : b = qr(V, c), b.width += 6, b.height += 2, Y > 0 && Y < b.width && (V.labelWidth = b.width, b.width = Y), i = b.width, L = b.height + 8, V.clickRect = { + x: G - i * r / 2, + y: M - L * r, + width: i * r, + height: L * r * b.height / L + } + } else { + var I = t(A + ".icon"); + I ? (I = ii(I), i = xc(I, X), L = oo(I, X)) : (i = 12, L = 18), V.clickRect = { + x: G - i * r / 2, + y: M - L * r, + width: i * r, + height: L * r + } + } + V.rect = { + x: G - i / 2, + y: M - L * r / 2 - L / 2, + width: i, + height: L + }; + var C = s(V.borderWidth / 2) * r; + N._68o({ + x: G - i * r / 2 - C, + y: M - L * r - C, + width: i * r + 2 * C, + height: L * r + 2 * C + }) + } + }, _48O: function () { }, _99O: function (a) { + var o = this, + B = o._38o; + if (B) { + var m = o.gv, + M = o._data, + t = B.icons, + W = o.interactiveInfo; + W && (W._38o = {}); + for (var e in t) { + var d = t[e], + f = B.rects[e]; + if (f) { + W && (W._38o[e] = []); + var j = Dj(d.opacity, M, m), + A = Dj(d.names, M, m), + $ = A ? A.length : 0, + w = f.rotation; + if (j != F) { + var E = a.globalAlpha; + a.globalAlpha *= j + } + for (var q = 0; $ > q; q++) { + var z = A[q], + x = ii(z), + N = f[q]; + if (w) { + var c = N.x + N.width / 2, + H = N.y + N.height / 2; + a.save(), wh(a, c, H), jc(a, w), wh(a, -c, -H) + } + W && W._38o[e].push(a.interactiveInfo = { + compInfos: [], + matrix: w ? new Np(w, c, H).appendTranslate(-c, -H) : new Np + }), qk(a, x, Dj(d.stretch, M, m), N.x, N.y, N.width, N.height, o._data, o.gv), a.interactiveInfo = F, w && a.restore() + } + j != F && (a.globalAlpha = E) + } + } + } + } + }); + var Af = function (A, s) { + fi(Af, this, [A, s]) + }; + yc(Af, Tp, { + _checkEmptyRect: !0, + _40O: function (U, I) { + var V = this, + n = V.s, + _ = U.rect; + (U.borderColor = V.gv.getBorderColor(V._data)) && (U.borderType = n("border.type"), U.borderWidth = n("border.width"), U.borderPadding = n("border.padding"), I = q(I, U.borderPadding + U.borderWidth / 2)); + var e = V._data.getScale(), + G = q(1, q(X(e.x), X(e.y))); + if (U.selectWidth = V.getSelectWidth()) { + var D = V.gv._zoom; + U.selectType = n("select.type"), U._97o = V.getSelectColor(), U.selectPadding = n("select.padding"), I = q(I, (U.selectPadding + U.selectWidth / 2 / D) / G) + } + I > 0 && (I *= G, _ = Pm(_), vn(_, I)), V._68o(_) + }, _39O: function (W, I) { + var J, u = this, + A = I.rect; + if (I.borderWidth > 0 && (J = I.borderPadding, W.strokeStyle = I.borderColor, W.lineWidth = I.borderWidth, Ej(W, I.borderType, { + x: A.x - J, + y: A.y - J, + width: A.width + 2 * J, + height: A.height + 2 * J + }), W.stroke()), I.selectWidth > 0) { + var z = u.gv._zoom; + if (J = I.selectPadding, W.strokeStyle = I._97o, W.lineWidth = I.selectWidth / z, I.rotation != F) { + W.save(), W.translate(I.position.x, I.position.y), W.rotate(I.rotation); + var Q = u._data, + k = Q.getWidth(), + O = Q.getHeight(), + m = I.scale, + h = I.anchor; + A = { + x: m.x * -k * h.x, + y: m.y * -O * h.y, + width: m.x * k, + height: m.y * O + } + } + Ej(W, I.selectType, { + x: A.x - J, + y: A.y - J, + width: A.width + 2 * J, + height: A.height + 2 * J + }), I.rotation != F && W.restore(), W.stroke() + } + }, dispose: function () { + var X = this, + u = X._htmlView; + Af.superClass._3O.call(X), u && (u.onHTMLRemoved && u.onHTMLRemoved(), yj(u)) + }, _3O: function () { + var N = this, + O = N.s, + k = N._data, + P = N.gv, + i = P.getShape(k), + t = N.getBodyColor(), + n = O("shape.border.color"), + T = N._83o = i ? { + shape: i, + _53o: N.getBodyColor("shape.background"), + _27Q: ii(O("shape.repeat.image"), t), + shapeGradientPack: O("shape.gradient.pack"), + _54o: O("shape.border.width"), + _55o: n, + shapeBorderRepeatImage: ii(O("shape.border.repeat.image"), n), + _56o: O("shape.border.3d"), + _57o: O("shape.border.3d.color"), + _58o: O("shape.border.3d.accuracy"), + shapeGradient: O("shape.gradient"), + _59o: O("shape.gradient.color"), + _60o: O("shape.border.pattern"), + _61o: O("shape.border.cap"), + _62o: O("shape.border.join"), + shapeForeground: O("shape.foreground"), + bodyColor: t, + gray: O("2d.gray") + } : { + img: ii(P.getImage(k), t), + bodyColor: t, + gray: O("2d.gray"), + stretch: O("image.stretch") + }; + if (_ && !Ad); + else { + var y, d = T.img; + d && d.renderHTML ? (N._htmlInfo && N._htmlInfo.img !== d && (N._htmlInfo = F), N._htmlInfo || (N._htmlInfo = { + img: d, + cache: {} + }), y = d.renderHTML(k, P, N._htmlInfo.cache)) : N._htmlInfo = F, N._htmlView && N._htmlView !== y && (N._htmlView.onHTMLRemoved && N._htmlView.onHTMLRemoved(), yj(N._htmlView.getView ? N._htmlView.getView() : N._htmlView)), (N._htmlView = y) && P.appendHTML(y) && (y.onHTMLAddedSync && y.onHTMLAddedSync(), y.onHTMLAdded && $e(y.onHTMLAdded)), T.rect = k.getRect(), T.position = k.p(), T.scale = k.getScale(), T.anchor = k.getAnchor(), T.rotation = k.getRotation(), i === Tq && (T._63o = O("shape.depth")); + var I = 0; + if (i) I = Xb(F, T._54o / 2, T._62o), N.s("shape.dash") && (I = q(I, (N.s("shape.dash.width") || T._54o) / 2)); + else if (d && d.boundExtend) + if (I = Dj(d.boundExtend, k, P), d.boundExtendAbsolute) { + var S = k.getScale(); + I /= P._zoom * q(1, q(X(S.x), X(S.y))) + } else if (!Dj(d.fitSize, k, P)) { + var A = Dj(d.width, k, P), + E = Dj(d.height, k, P); + I *= q(k.getWidth() / A, k.getHeight() / E) + } + N._40O(T, I); + var w = O("clip.percentage"); + if (1 > w && (0 > w && (w = 0), T.clipRect = Wh(k.getAnchorRect(), O("clip.direction"), w)), i) { + var C = O("shape.fill.clip.percentage"); + 1 > C && (0 > C && (C = 0), T.shapeClipRect = Wh(k.getAnchorRect(), O("shape.fill.clip.direction"), C)); + var $ = O("shape.foreground.clip.percentage"); + 1 > $ && (0 > $ && ($ = 0), T.shapeForegroundClipRect = Wh(k.getAnchorRect(), O("shape.foreground.clip.direction"), $)) + } + } + }, getPosition: function (A, s, b, w) { + var a = Re(A, this._83o.rect, w); + return a.x += s, a.y += b, a + }, _80o: function (c) { + var P = this, + E = P.s, + S = P.gv, + M = P._data, + l = P._83o, + j = l.rect, + v = l.position, + U = l.rotation, + K = l.anchor, + X = l.scale, + e = l.shape, + O = l.clipRect; + if (!P._checkEmptyRect || j.width > 0 && j.height > 0) { + var T = M.getSize(); + if (T.x = -T.width * K.x, T.y = -T.height * K.y, c.save(), wh(c, v.x, v.y), jc(c, U), ec(c, X.x, X.y), O && (c.beginPath(), c.rect(O.x, O.y, O.width, O.height), c.clip()), S._drawForChecking && l.img && Dj(l.img.pixelPerfect, M, S) === !1) fl(c, T.x, T.y, T.width, T.height, "#888888"); + else if (P.freeDraw) P.freeDraw(c, T, l); + else if (e) { + var C, o, G, t, N = l._60o, + w = ls(c, N), + Z = l._27Q, + W = l._54o, + s = l.shapeGradientPack, + m = l.gray, + n = c.lineJoin, + q = c.lineCap, + H = function (R) { + return m ? u.toGrayColor(R) : R + }; + "roundRect" === e ? C = E("shape.corner.radius") : "polygon" === e ? C = E("shape.polygon.side") : "arc" === e && (C = E("shape.arc.from"), o = E("shape.arc.to"), G = E("shape.arc.close"), t = E("shape.arc.oval")), c.lineJoin = l._62o, c.lineCap = l._61o; + var x = H(l._53o); + if (x || Z || s) { + var i = l.shapeClipRect; + i && (c.save(), c.beginPath(), c.rect(i.x, i.y, i.width, i.height), c.clip()), Ej(c, e, T, C, o, G, t), s ? uq(c, s, function (j) { + return nm(j, l.bodyColor) + }) : Z ? fg(c, Z, H(l.bodyColor), null, M, S) : Ge(c, x, l.shapeGradient, H(l._59o), T), c.fill(), s && c.restore(), i && c.restore(), c !== w && Ej(w, e, T, C, o, G, t) + } else Ej(w, e, T, C, o, G, t); + var J = l.shapeForeground; + if (J) { + c.save(); + var r = l.shapeForegroundClipRect; + r && (c.beginPath(), c.rect(r.x, r.y, r.width, r.height), c.clip()), Ej(c, e, T, C, o, G, t), Ge(c, J, E("shape.foreground.gradient"), H(E("shape.foreground.gradient.color")), T), c.fill(), c.restore() + } + if (W > 0) { + var L = E("shape.border.width.absolute"); + L && (c.save(), c.setTransform(1, 0, 0, 1, 0, 0)), c.lineWidth = W; + var g = H(l._55o); + l.shapeBorderRepeatImage ? qb(c, l.shapeBorderRepeatImage, g, null, M, S) : c.strokeStyle = g, c.stroke(), L && c.restore(), l._56o && fr(c, g, H(l._57o), W, S._zoom, l._58o) + } + if (_l(c, N), E("shape.dash")) { + var D = E("shape.dash.width") || W; + if (D > 0) { + N = E("shape.dash.pattern"); + var w = ls(c, N, P._2Q("shape.dash.offset")); + w !== c && Ej(w, e, T, C, o, G, t), P._1Q(c, "shape", D, N) + } + } + Wq(c, x, l._63o, T), c.lineJoin = n, c.lineCap = q + } else { + var p = P.interactiveInfo; + p && (c.interactiveInfo = p.bodyInfo = { + compInfos: [], + matrix: new Np(U, v.x, v.y, X.x, X.y) + }), l.gray && (c.compGray = !0); + var f = l.img; + f && f.cacheRule != F && (f = lc(c, f, l.stretch, T.width, T.height, M, S, l.bodyColor)), qk(c, f, l.stretch, T.x, T.y, T.width, T.height, M, S, l.bodyColor), c.compGray = !1, c.interactiveInfo = F + } + c.restore() + } + P._39O(c, l) + }, _48O: function () { }, _47O: function () { } + }); + var wn = function (A, O) { + fi(wn, this, [A, O]) + }, + Fl = function (A, v, C, W) { + var Y = En(A, v); + return C = W ? V(C, Y) : cr(C, Y), Y ? C /= Y : C = 0, { + x: A.x + (v.x - A.x) * C, + y: A.y + (v.y - A.y) * C + } + }; + yc(wn, Tp, { + _3O: function () { + var y, X = this, + g = X._data, + k = X.gv, + i = X.s, + R = i(ej), + r = g.isLooped(), + _ = i("edge.width"), + s = X.getBodyColor("edge.color"), + w = i("edge.center"), + A = i("edge.offset"), + C = k.getBorderColor(g), + I = C ? i("border.width") : 0, + T = X.getSelectWidth(), + p = g._40I, + J = g._41I, + K = X._78o = p && J ? { + looped: r, + type: R, + width: _, + center: w, + color: s, + repeatImage: ii(i("edge.repeat.image"), s), + borderColor: C, + borderWidth: I, + _97o: T ? X.getSelectColor() : F, + selectWidth: T, + pattern: i("edge.pattern"), + cap: i("edge.cap"), + join: i("edge.join"), + is3d: i("edge.3d"), + _67o: i("edge.3d.color"), + _66o: i("edge.3d.accuracy"), + gray: i("2d.gray") + } : F; + if (K) { + var d = u.getEdgeType(R); + if (d) { + var P = d(g, Ml(X, k, g, r, R), k, X._19Q); + P.points && P.points.size() > 1 ? (K.edgeTypeInfo = P, y = ms(K.edgeTypeInfo.points)) : P[Ph] && P.rect && (K.edgeTypeInfo = P, y = P.rect) + } else { + var L = i("edge.source.anchor.x"), + N = i("edge.source.anchor.y"), + h = i("edge.target.anchor.x"), + v = i("edge.target.anchor.y"), + Q = Eo(k, g, "source"), + f = Eo(k, g, "target"); + if (R === _b) { + var n = K.points = i(Ei) || Yh, + j = n.size(); + K.segments = i("edge.segments"); + var m = L !== Z || N !== Z || Bk(p), + B = h !== Z || v !== Z || Bk(J); + if (!w) + if (A) m || (Q = Fl(Q, j ? n.get(0) : f, A, j)), B || (f = Fl(f, j ? n.get(j - 1) : Q, A, j)); + else { + var o; + m || (o = Rl(Q, j ? n.get(0) : f, Rp(k, p)), o && (Q = { + x: o[0], + y: o[1] + })), B || (o = Rl(j ? n.get(j - 1) : Q, f, Rp(k, J)), o && (f = { + x: o[0], + y: o[1] + })) + } + y = ni(ms(K.points), ms(Q, f)) + } else { + var e = Ml(X, k, g, r, R); + if (X._19Q || (e = -e), r) Q = Pm(Q), Q.x = k.getNodeRect(p).x, K.radius = e, y = { + x: Q.x - e, + y: Q.y - e, + width: 2 * e, + height: 2 * e + }; + else { + var b = En(Q, f), + G = cr(A, b), + E = { + x: G, + y: e + }, + U = { + x: b - G, + y: e + }, + V = D(f.y - Q.y, f.x - Q.x), + H = K.mat = new In(V); + if (K.orienAngle = V, K.angle = f.x < Q.x ? V + W : V, K.rect = { + x: E.x, + y: E.y, + width: U.x - E.x, + height: 0 + }, K.origin = Q, E = H.tf(E), E.x += Q.x, E.y += Q.y, U = H.tf(U), U.x += Q.x, U.y += Q.y, w) { + var $ = { + x: b, + y: 0 + }; + $ = H.tf($), $.x += Q.x, $.y += Q.y, y = ms([Q, E, U, $]), K.c1 = Q, K.c2 = $ + } else y = ms(E, U); + Q = E, f = U + } + } + K.sourcePoint = Q, K.targetPoint = f, g._lastSourcePoint = Q, g._lastTargetPoint = f + } + var S = 0; + i("edge.dash") && (S = i("edge.dash.width") || _); + var l = "square" === K.cap ? .71 : .5; + Xb(y, q(S * l, _ * l + I + T), K.join), X._68o(y) + } + }, getRotation: function (h, q, R) { + h = h || 0; + var B = this._78o; + if (B) { + var e, W = B.angle, + E = B.points, + u = B.edgeTypeInfo; + if (W != F) return q ? B.orienAngle + h : W + h; + if (u && u[Ph]) return u.getRotation ? u.getRotation(this, h, q, R) : 0; + if (u && u.points) { + var f = u.points; + return e = f.size(), nk[R] ? e && 0 === e % 2 ? Mn(f.get(e / 2 - 1), f.get(e / 2), q, h) : h : Ym[R] ? Mn(f.get(0), f.get(1), q, h) : Mn(f.get(e - 2), f.get(e - 1), q, h) + } + if (E) return e = E.size(), nk[R] ? e && 0 === e % 2 ? Mn(E.get(e / 2 - 1), E.get(e / 2), q, h) : h : Ym[R] ? Mn(B.sourcePoint, e ? E.get(0) : B.targetPoint, q, h) : Mn(e ? E.get(e - 1) : B.sourcePoint, B.targetPoint, q, h) + } + return h + }, getPosition: function (o, T, l, P, c) { + var C = this._78o; + if (C) { + var t, a = C.type, + e = C.points, + f = C.edgeTypeInfo, + H = C.sourcePoint, + K = C.targetPoint; + if (!a) return C.looped ? { + x: H.x - C.radius + T, + y: H.y + l + } : (c && H && K && (H.x > K.x || H.x === K.x && H.y > K.y) && (o = cg[o], l = -l), t = Re(o, C.rect, P), t.x += T, t.y += l, t = C.mat.tf(t), t.x += C.origin.x, t.y += C.origin.y, t); + if (f && f[Ph]) return f.getPosition ? f.getPosition(this, o, T, l, P, c) : { + x: (H.x + K.x) / 2, + y: (H.y + K.y) / 2 + }; + if (e) { + var t, I = e.size(); + if (nk[o]) { + if (I) { + var h = I % 2; + if (0 === h) return Md(e.get(I / 2 - 1), e.get(I / 2), o, T, l, P, c); + t = e.get((I - h) / 2) + } else t = { + x: (H.x + K.x) / 2, + y: (H.y + K.y) / 2 + }; + return t = Re(o, { + x: t.x, + y: t.y, + width: 0, + height: 0 + }, P), t.x += T, t.y += l, t + } + return Ym[o] ? Md(H, I ? e.get(0) : K, o, T, l, P, c) : Md(I ? e.get(I - 1) : H, K, o, T, l, P, c) + } + if (f) { + var $ = f.points, + I = $.size(); + if (nk[o]) { + var h = I % 2; + return 0 === h ? Md($.get(I / 2 - 1), $.get(I / 2), o, T, l, P, c) : (t = $.get((I - h) / 2), t = Re(o, { + x: t.x, + y: t.y, + width: 0, + height: 0 + }, P), t.x += T, t.y += l, t) + } + return Ym[o] ? Md($.get(0), $.get(1), o, T, l, P, c) : Md($.get(I - 2), $.get(I - 1), o, T, l, P, c) + } + } + return nl + }, _42: function (V) { + this._78o && wn.superClass._42.call(this, V) + }, drawPath: function (c, J) { + c.beginPath(); + var y = J.type, + G = J.points, + I = J.segments, + v = J.edgeTypeInfo; + if (!y || G) { + var Z = J.sourcePoint, + p = Z.x, + j = Z.y, + F = J.targetPoint, + R = F.x, + S = F.y; + if (y) + if (I) { + var W = new xr({ + x: p, + y: j + }); + W.addAll(G), W.add({ + x: R, + y: S + }), en(c, W, I) + } else c.moveTo(p, j), G.each(function (V) { + c.lineTo(V.x, V.y) + }), c.lineTo(R, S); + else J.looped ? c.arc(p, j, J.radius, 0, $, !0) : J.center ? (c.moveTo(J.c1.x, J.c1.y), c.lineTo(p, j), c.lineTo(R, S), c.lineTo(J.c2.x, J.c2.y)) : (c.moveTo(p, j), c.lineTo(R, S)) + } else v && (v.points ? en(c, v.points, v.segments) : v[Ph] && v[Ph](c, v)) + }, _80o: function (P) { + var z = this, + X = z.s, + I = z._78o, + C = I.width, + g = I.selectWidth, + k = I.borderWidth, + D = I.repeatImage, + Q = P.lineJoin, + T = P.lineCap, + R = I.gray, + U = I.pattern; + P.lineJoin = I.join, P.lineCap = I.cap, z.drawPath(ls(P, U), I); + var A = X("edge.width.absolute"); + A && (P.save(), P.setTransform(1, 0, 0, 1, 0, 0)), g && (P.strokeStyle = I._97o, P.lineWidth = C + 2 * (k + g), P.stroke()), k && (P.strokeStyle = R ? u.toGrayColor(I.borderColor) : I.borderColor, P.lineWidth = C + 2 * k, P.stroke()); + var K = R ? u.toGrayColor(I.color) : I.color; + if (D ? qb(P, D, K, null, z._data, z.gv) : P.strokeStyle = K, P.lineWidth = C, P.stroke(), I.is3d) { + var r = R ? u.toGrayColor(I._67o) : I._67o; + fr(P, K, r, C, z.gv._zoom, I._66o) + } + if (_l(P, U), X("edge.dash")) { + U = X("edge.dash.pattern"); + var f = ls(P, U, z._2Q("edge.dash.offset")); + f !== P && z.drawPath(f, I), z._1Q(P, "edge", X("edge.dash.width") || C, U) + } + A && P.restore(), P.lineJoin = Q, P.lineCap = T + }, _48O: function () { }, _47O: function () { } + }); + var Fn = function (n, q) { + fi(Fn, this, [n, q]) + }; + yc(Fn, Af, { + _3O: function () { + var n, e, Z = this, + E = Z.s, + I = Z._data, + i = Z.gv; + if (Z._88I = F, I.isExpanded() && I.eachChild(function (d) { + if (Fq(d)) { + var j = i.getBoundsForGroup(d); + j && (e || (e = []), e.push(j), n = ni(n, j)) + } + }), n) { + var L = i.getLabel(I), + V = E("group.type"), + R = E("group.border.width") || 0, + c = E("group.border.width.absolute"), + B = R / 2; + c && (R /= i._zoom), n = Dk(V, e, n), ld(n, I, "group.padding", 1), vn(n, R); + var r = Z._88I = { + type: V, + rect: n, + _64o: n + }; + if (!V && L != F) { + var o, S = Z.labelInfo = { + label: L, + color: E("group.title.color"), + font: E("group.title.font"), + align: E("group.title.align") + }, + J = qr(S, L), + v = J.width + R, + Q = J.height + R, + w = E("group.title.align"), + l = E("group.title.orientation"); + if (l === $c || l === Kd ? (n.height += R, v > n.width && (n.width = v)) : (l === nq || l === fm) && (n.width += R, v > n.height && (n.height = v)), o = w === nq ? n.x : w === fm ? n.x + n.width - v : n.x + n.width / 2 - v / 2, l === Kd) r.titleRect = { + x: n.x, + y: n.y + n.height, + width: n.width, + height: Q + }, r.rect = { + x: n.x, + y: n.y, + width: n.width, + height: n.height + Q + }, S.rect = { + x: o, + y: n.y + n.height, + width: v, + height: Q + }; + else if (l === nq) { + var q = r.titleRect = { + x: n.x - Q, + y: n.y, + width: Q, + height: n.height + }; + r.rect = { + x: n.x - Q, + y: n.y, + width: n.width + Q, + height: n.height + }, S.rect = { + x: q.x + Q / 2 - n.height / 2, + y: q.y + n.height / 2 - Q / 2, + width: n.height, + height: Q + }, S.rotation = -Math.PI / 2 + } else if (l === fm) { + var q = r.titleRect = { + x: n.x + n.width, + y: n.y, + width: Q, + height: n.height + }; + r.rect = { + x: n.x, + y: n.y, + width: n.width + Q, + height: n.height + }, S.rect = { + x: q.x + Q / 2 - n.height / 2, + y: q.y + n.height / 2 - Q / 2, + width: n.height, + height: Q + }, S.rotation = Math.PI / 2 + } else r.titleRect = { + x: n.x, + y: n.y - Q, + width: n.width, + height: Q + }, r.rect = { + x: n.x, + y: n.y - Q, + width: n.width, + height: n.height + Q + }, S.rect = { + x: o, + y: n.y - Q - B, + width: v, + height: Q + R + } + } + Z._40O(r, E("group.border.width") / 2) + } else Fn.superClass._3O.call(Z) + }, getPosition: function (J, $, O, k) { + var W = this._88I; + if (W) { + var E = Re(J, W.rect, k); + return E.x += $, E.y += O, E + } + return Fn.superClass.getPosition.apply(this, arguments) + }, _24O: function (T, R) { + var Y = this._88I; + (!Y || Y.type || "label2" === T) && Fn.superClass._24O.call(this, T, R) + }, _80o: function (v) { + var P = this, + K = P._88I; + if (K) { + var I = P._data, + Q = P.s, + U = P.gv, + M = K.type, + t = K.rect, + m = K._64o, + F = K.titleRect, + o = P.getBodyColor(), + S = ii(Q("group.image"), o), + J = Q("group.image.stretch"), + i = P.getBodyColor("group.background"), + V = ii(Q("group.repeat.image"), o), + L = Q("group.gradient.pack"), + c = Q("group.gradient"), + N = Q("group.gradient.color"), + g = Q("group.border.width"), + l = Q("group.border.color"), + d = Q("group.border.pattern"), + f = Q("group.title.orientation"), + T = Q("group.depth"), + q = Q("group.border.radius"), + k = Q("group.border.join"), + r = Q("group.border.cap"), + B = Q("group.border.width.absolute"); + B && (g /= U._zoom); + var y = l, + A = Q("group.border.repeat.image"); + if (A && (A = ii(A, l)) && (y = am(v, A, l, null, I, U)), M) { + var R = v.lineJoin, + z = v.lineCap; + if (v.lineJoin = k, v.lineCap = r, S) { + if (v.save(), Ej(v, M, t, q), v.clip(), qk(v, S, J, t.x, t.y, t.width, t.height, I, U, o), v.restore(), g > 0) { + var X = ls(v, d); + Ej(X, M, t, q), v.lineWidth = g, v.strokeStyle = y, v.stroke(), _l(v, d) + } + } else { + var X = ls(v, d); + i || V || L ? (Ej(v, M, t, q), L ? uq(v, L, function (K) { + return nm(K, o) + }) : V ? fg(v, V, o, null, I, U) : Ge(v, i, c, N, t), v.fill(), L && v.restore(), v !== X && Ej(X, M, t, q)) : Ej(X, M, t, q), g > 0 && (v.lineWidth = g, v.strokeStyle = y, v.stroke()), _l(v, d), M === Tq && Wq(v, i, T, t) + } + v.lineJoin = R, v.lineCap = z + } else { + var D = Q("group.title.background"); + if ((!q || 0 > q) && (q = 0), S) qk(v, S, J, m.x, m.y, m.width, m.height, I, U, P.getBodyColor()); + else if (i || V) + if (V ? fg(v, V, o, null, I, U) : Ge(v, i, c, N, m), 0 === g) Ej(v, Tq, m), v.fill(), Wq(v, i, T, m); + else { + switch (v.beginPath(), f) { + case Kd: + pg(v, m.x, m.y, m.width, m.height, q, q, 0, 0); + break; + case nq: + pg(v, m.x, m.y, m.width, m.height, 0, q, 0, q); + break; + case fm: + pg(v, m.x, m.y, m.width, m.height, q, 0, q, 0); + break; + case $c: + pg(v, m.x, m.y, m.width, m.height, 0, 0, q, q) + } + v.fill() + } + if (F && D) + if (0 === g) fl(v, F.x, F.y, F.width, F.height, D), Wq(v, D, T, F); + else { + switch (v.beginPath(), v.fillStyle = D, f) { + case Kd: + pg(v, F.x, F.y, F.width, F.height, 0, 0, q, q); + break; + case nq: + pg(v, F.x, F.y, F.width, F.height, q, 0, q, 0); + break; + case fm: + pg(v, F.x, F.y, F.width, F.height, 0, q, 0, q); + break; + case $c: + pg(v, F.x, F.y, F.width, F.height, q, q, 0, 0) + } + v.fill() + } + if (g > 0) { + var X = ls(v, d); + if (Ej(X, "roundRect", t, q), v.save(), v.lineWidth = g, v.strokeStyle = y, v.lineJoin = k, v.lineCap = r, v.closePath(), v.stroke(), F && Q("group.splitLine")) { + var h = F.x, + e = F.y, + u = F.width, + p = F.height; + v.beginPath(), f === Kd ? (v.moveTo(h, e), v.lineTo(h + u, e)) : f === nq ? (v.moveTo(h + u, e), v.lineTo(h + u, e + p)) : f === fm ? (v.moveTo(h, e), v.lineTo(h, e + p)) : (v.moveTo(h, e + p), v.lineTo(h + u, e + p)) + } + v.stroke(), v.restore(), _l(X, d) + } + } + P._39O(v, K) + } else Fn.superClass._80o.call(P, v) + } + }); + var Ul = function (d, R) { + fi(Ul, this, [d, R]) + }; + yc(Ul, Af, { + _80o: function (b) { + this._39O(b, this._83o) + } + }); + var Xp = function (A, w) { + fi(Xp, this, [A, w]) + }; + yc(Xp, Af, { + _3O: function () { + var g = this, + v = g._data, + V = g.s, + A = g.gv, + p = v.getPoints(), + C = A.getBorderColor(v), + G = C ? V("border.width") : 0, + k = g.getSelectWidth(), + S = V("shape.border.width"), + B = v.getRect(), + D = v.getAnchorRect(), + u = A.getBodyColor(v), + P = V("shape.border.color"), + E = g._99o = p.isEmpty() ? F : { + rect: B, + rotation: v.getRotation(), + fillRule: V("shape.fill.rule"), + scale: v.getScale(), + position: v.p(), + points: p, + segments: v.getSegments(), + bodyColor: u, + borderColor: C, + borderWidth: G, + _94o: V("shape.border.3d"), + _95o: V("shape.border.3d.color"), + _96o: V("shape.border.3d.accuracy"), + _97o: k ? g.getSelectColor() : F, + selectWidth: k, + _53o: V("shape.background"), + _27Q: ii(V("shape.repeat.image"), u), + shapeGradientPack: V("shape.gradient.pack"), + _54o: S, + _55o: P, + shapeBorderRepeatImage: ii(V("shape.border.repeat.image"), P), + shapeGradient: V("shape.gradient"), + _59o: V("shape.gradient.color"), + _60o: V("shape.border.pattern"), + _61o: V("shape.border.cap"), + _62o: V("shape.border.join"), + shapeForeground: V("shape.foreground"), + gray: V("2d.gray") + }; + if (E) { + D.x += E.position.x, D.y += E.position.y, E.gradientRect = D; + var I = v.getScale(), + Z = q(1, q(X(I.x), X(I.y))); + V("shape.dash") && V("shape.dash.width") > S && (S = V("shape.dash.width")); + var Y, n = V("shape.border.width.absolute"); + Y = n ? (S + G + k) / g.gv._zoom / Z : S * ("square" === E._61o ? .71 : .5) + G + k / g.gv._zoom / Z, Y && (Y *= Z, B = Pm(B), Xb(B, Y, E._62o)), g._68o(B); + var t = V("clip.percentage"); + 1 > t && (0 > t && (t = 0), E.clipRect = Wh(v.getAnchorRect(), V("clip.direction"), t)); + var M = V("shape.fill.clip.percentage"); + 1 > M && (0 > M && (M = 0), E.shapeClipRect = Wh(v.getAnchorRect(), V("shape.fill.clip.direction"), M)); + var J = V("shape.foreground.clip.percentage"); + 1 > J && (0 > J && (J = 0), E.shapeForegroundClipRect = Wh(v.getAnchorRect(), V("shape.foreground.clip.direction"), J)) + } + }, getPosition: function (l, m, s, t) { + var L = this._99o; + if (L) { + var Q = Re(l, L.rect, t); + return Q.x += m, Q.y += s, Q + } + return nl + }, _42: function (I) { + this._99o && Xp.superClass._42.call(this, I) + }, _80o: function (l) { + var a, I = this, + F = I.s, + R = I._99o, + J = R.position, + B = R.scale, + Q = R.rotation, + D = R.borderWidth, + s = R.selectWidth / I.gv._zoom, + v = R._27Q, + d = R.shapeGradientPack, + N = R._54o, + w = R.clipRect, + Z = R.shapeClipRect, + m = R.points, + C = R.segments, + n = I._data.isClosePath(), + h = R.fillRule, + f = R.gray, + c = function (c) { + return f ? u.toGrayColor(c) : c + }, + r = c(R._53o), + x = r || v || d; + l.save(), wh(l, J.x, J.y), jc(l, Q), ec(l, B.x, B.y), w && (l.beginPath(), l.rect(w.x, w.y, w.width, w.height), l.clip()), x && Z && (l.save(), l.beginPath(), l.rect(Z.x, Z.y, Z.width, Z.height), l.clip()), wh(l, -J.x, -J.y); + var O = R._60o, + H = ls(l, O), + K = l.lineJoin, + o = l.lineCap; + l.lineJoin = R._62o, l.lineCap = R._61o; + var V = c(R.bodyColor); + x ? (en(l, m, C, n), d ? uq(l, d, function (s) { + return nm(s, R.bodyColor) + }) : v ? fg(l, v, V, null, I._data, I.gv) : (a = V ? V : r, Ge(l, a, R.shapeGradient, c(R._59o), R.gradientRect)), l.fill(h), d && l.restore(), Z && (l.restore(), wh(l, -J.x, -J.y)), H !== l && en(H, m, C, n)) : en(H, m, C, n); + var k = R.shapeForeground; + if (k) { + l.save(); + var G = R.shapeForegroundClipRect; + G && (wh(l, J.x, J.y), l.beginPath(), l.rect(G.x, G.y, G.width, G.height), l.clip(), wh(l, -J.x, -J.y)), en(l, m, C, n), Ge(l, k, F("shape.foreground.gradient"), c(F("shape.foreground.gradient.color")), R.gradientRect), l.fill(h), l.restore() + } + var M = F("shape.border.width.absolute"); + if (M && (l.save(), l.setTransform(1, 0, 0, 1, 0, 0)), s && (l.strokeStyle = R._97o, l.lineWidth = N + 2 * (D + s), l.stroke()), D && (l.strokeStyle = c(R.borderColor), l.lineWidth = N + 2 * D, l.stroke()), N && (a = c(R._55o), R.shapeBorderRepeatImage ? qb(l, R.shapeBorderRepeatImage, a, null, I._data, I.gv) : (!r && V && (a = V), l.strokeStyle = a), l.lineWidth = N, l.stroke(), R._94o && fr(l, a, c(R._95o), N, I.gv._zoom, R._96o)), _l(l, O), F("shape.dash")) { + var z = F("shape.dash.width") || N; + if (z > 0) { + O = F("shape.dash.pattern"); + var H = ls(l, O, I._2Q("shape.dash.offset")); + H !== l && en(H, m, C, n), I._1Q(l, "shape", z, O) + } + } + M && l.restore(), l.lineJoin = K, l.lineCap = o, l.restore() + }, _48O: function () { }, _47O: function () { } + }); + var Kr = function (b, G) { + fi(Kr, this, [b, G]) + }; + yc(Kr, Xp, { + getRotation: function (w, n, K) { + w = w || 0; + var H = this._data.getPoints(), + R = H.size(); + return R > 1 ? nk[K] ? R && 0 === R % 2 ? Mn(H.get(R / 2 - 1), H.get(R / 2), n, w) : w : Ym[K] ? Mn(H.get(0), H.get(1), n, w) : Mn(H.get(R - 2), H.get(R - 1), n, w) : w + }, getPosition: function (F, H, k, C, b) { + var z = this._data.getPoints(), + l = z.size(); + if (l > 1) { + if (nk[F]) { + var t = l % 2; + if (0 === t) return Md(z.get(l / 2 - 1), z.get(l / 2), F, H, k, C, b); + var R = z.get((l - t) / 2), + S = { + x: R.x, + y: R.y, + width: 0, + height: 0 + }; + return R = Re(F, S, C), R.x += H, R.y += k, R + } + return Ym[F] ? Md(z.get(0), z.get(1), F, H, k, C, b) : Md(z.get(l - 2), z.get(l - 1), F, H, k, C, b) + } + return nl + } + }); + var _n = function (t, k) { + fi(_n, this, [t, k]) + }; + yc(_n, Af, { + _3O: function () { + var C = this; + _n.superClass._3O.call(C); + var G = C.s, + z = C._83o; + C._82o = z.img || z.shape ? F : { + background: C.getBodyColor("grid.background"), + depth: G("grid.depth"), + rect: z.rect, + _88o: G("grid.cell.depth"), + cellBorderColor: G("grid.cell.border.color"), + _89o: G("grid.row.count"), + _90o: G("grid.column.count"), + block: G("grid.block"), + _91o: G("grid.block.color"), + _92o: G("grid.block.padding"), + _93o: G("grid.block.width") + } + }, _80o: function (t) { + var w = this, + R = w._82o; + if (!R) return _n.superClass._80o.call(w, t), void 0; + var H, f, E = w._data, + h = R.background, + W = R.rect, + x = R.block, + k = R._91o, + Z = R._92o, + P = R._93o, + V = R._88o, + D = R.cellBorderColor, + s = R._89o, + o = R._90o; + if (h) + if (fl(t, W.x, W.y, W.width, W.height, h), Wq(t, h, R.depth, W), V) + for (H = 0; s > H; H++) + for (f = 0; o > f; f++) W = E.getCellRect(H, f), W && Wq(t, h, V, W); + else if (D) { + for (t.beginPath(), H = 0; s > H; H++) + for (f = 0; o > f; f++) W = E.getCellRect(H, f), W && t.rect(W.x, W.y, W.width, W.height); + t.strokeStyle = D, t.lineWidth = 1, t.stroke() + } + if ("h" === x) + for (H = 0; s > H; H++) W = ni(E.getCellRect(H, 0), E.getCellRect(H, o - 1)), vn(W, Z), Ie(t, k, W.x, W.y, W.width, W.height, P); + else if ("v" === x) + for (f = 0; o > f; f++) W = ni(E.getCellRect(0, f), E.getCellRect(s - 1, f)), vn(W, Z), Ie(t, k, W.x, W.y, W.width, W.height, P); + w._39O(t, w._83o) + } + }); + var sk = function (C, J) { + fi(sk, this, [C, J]) + }; + yc(sk, Af, { + _checkEmptyRect: !1, + _81o: function () { + var t = this._data, + p = sk.superClass._81o.call(this), + O = t.s("text"); + if (O != F) { + var P, Q, V = t.s("text.font"), + o = t.s("text.align"), + U = t.s("text.vAlign"), + f = ln(V, O), + z = f.width, + L = f.height, + j = t.getAnchor(), + e = t.getWidth(), + k = t.getHeight(); + "left" === o ? P = -e * j.x : "center" === o ? P = -e * j.x + (e - z) / 2 : "right" === o && (P = e * (1 - j.x) - f.width), "top" === U ? Q = -k * j.y : "middle" === U ? Q = -k * j.y + (k - L) / 2 : "bottom" === U && (Q = k * (1 - j.y) - f.height); + var T, v = t.getMatrix(); + if (T = ms([v.tf(P, Q), v.tf(P + z, Q), v.tf(P + z, Q + L), v.tf(P, Q + L)]), p = ni(p, T), p && t.s("text.shadow")) { + var N = Pm(p); + N.x += t.s("text.shadow.offset.x"), N.y += t.s("text.shadow.offset.y"), vn(N, t.s("text.shadow.blur")), p = ni(p, N) + } + } + return p + } + }); + var Zp = hg.Interactor = function (S) { + this.gv = this._graphView = S + }; + Bb("Interactor", o, { + ms_listener: 1, + getView: function () { + return this.gv.getView() + }, setUp: function () { + this.addListeners() + }, tearDown: function () { + this.removeListeners(), this.clear() + }, clear: function () { }, fi: function (g) { + this.gv.fi(g) + }, setCursor: function (G) { + nf || this.gv.setCursor(G) + }, startDragging: function ($) { + var V = this; + V._lastClientPoint = lb($), V._lastLogicalPoint = V.gv.lp($), Ui(V, $) + }, clearDragging: function () { + var t = this; + t._lastClientPoint = t._lastLogicalPoint = t._logicalPoint = F + }, autoScroll: function (M) { + return this.gv.autoScroll(M, this._lastClientPoint) + } + }); + var cm = F, + Cd = function (Z) { + cm.handleWindowTouchMove(Z) + }, + sp = function (h) { + cm.handleWindowTouchEnd(h), b(x, wj, Cd), b(x, Sj, sp), cm = F + }, + Ng = function (_) { + cm.handleWindowMouseMove(_) + }, + Vi = function (W) { + cm.handleWindowMouseUp(W), b(x, rp, Ng), b(x, cj, Vi), cm = F + }, + Lj = function (m, h) { + if (m !== cm) { + var T = li(h); + cm ? T ? cm.handleWindowTouchEnd(h) : cm.handleWindowMouseUp(h) : T ? (K(x, wj, Cd), K(x, Sj, sp)) : (K(x, rp, Ng), K(x, cj, Vi)), cm = m + } + }, + mq = function (p) { + var N = this; + N.gv = p, N._is2d = p instanceof hg.GraphView, N._eventListeners = {}, ["mousedown", "mousemove", "mouseleave", "touchstart", "touchmove", ad, "wheel"].forEach(function (K) { + N.addListener(K) + }), N.initImageResource() + }; + yc(mq, Zp, { + enableVR: function (V) { + var l = this; + if (!!l._vrEnable !== V) + if (l._vrEnable = V, V) l.gv.vr.mp(l.onVRControllerChange, l); + else if (l.gv.vr.ump(l.onVRControllerChange, l), l._vrRayPolyline) { + var R = l.gv.dm(); + R.remove(l._vrRayPolyline), R.remove(l._vrRayHitPoint), l._vrRayPolyline = Z, l._vrRayHitPoint = Z + } + }, onVRControllerChange: function (g) { + var Z = this, + V = g.property, + r = g.newValue, + B = Z.gv.vr.getController(r.id), + p = B.getRay(); + p && ("gamepad.button.trigger" === V ? "down" === r._62O ? Z.handle_mousedown(p) : Z.handleWindowMouseUp(p) : "gamepad.pose" === V && (Z.handle_mousemove(p), Z.handleWindowMouseMove(p))) + }, drawVRRay: function (m, Q, V) { + var C, A = this, + J = A.gv, + G = A._vrRayPolyline, + K = !1; + if (G) C = A._vrRayHitPoint; + else { + var W = J.dm(); + A._vrRayPolyline = G = new O.Polyline, A._vrRayHitPoint = C = new O.Node, C.s({ + shape3d: "billboard", + "shape3d.transparent": !0, + "texture.scale": 10, + "shape3d.image": "coreInteractorRayHitImage" + }), C.setAnchor3d(.5, .5, .499); + var k = .2 / J.vr.measureOflength; + C.s3(k, k, k), G.s("intersect", !1), C.s("intersect", !1), W.add(G), W.add(C), K = !0 + } if (Q) { + var L = V.world, + y = V.worldNormal, + t = L.x, + n = L.y, + f = L.z; + G.s("shape.border.color", "red"), G.setPoints([{ + x: m.origin.x, + y: m.origin.z, + e: m.origin.y + }, { + x: t, + y: f, + e: n + }]), C.s("3d.visible", !0), C.p3(t, n, f), C.lookAtDirection([y.x, y.y, y.z], "front") + } else { + G.s("shape.border.color", "blue"); + var S = new O.Math.Vector3; + S.copy(m.direction).setLength(1e3 / A.gv.vr.measureOflength).add(m.origin), G.setPoints([{ + x: m.origin.x, + y: m.origin.z, + e: m.origin.y + }, { + x: S.x, + y: S.z, + e: S.y + }]), C.s("3d.visible", !1) + } + J.fi({ + kind: "vrRayIntersect", + ray: m, + data: Q, + intersect: V, + polyline: G, + hitNode: C, + begin: K + }) + }, setPreventEventDefault: function (x, c) { + var T = this, + f = T._eventListeners[x]; + f ? f._prevent = c : T._eventListeners[x] = f = { + _removal: Z, + _prevent: c + } + }, removeListener: function (L) { + var c = this, + T = c._eventListeners[L]; + T && T._removal && (T._removal(), T._removal = Z) + }, addListener: function (G) { + var s = this, + v = s._eventListeners[G]; + if (v || (s._eventListeners[G] = v = { + _removal: Z, + _prevent: !0 + }), !v || !v._removal) { + var f = function (I) { + v._prevent && u.preventDefault(I), s.disabled || ("wheel" === G ? sg(s, I) : s["handle_" + G](I)) + }; + K(s.gv.getView(), G, f), v._removal = function () { + b(s.gv.getView(), G, f) + } + } + }, handleWindowTouchMove: function (r) { + this.handleWindowMouseMove(r) + }, handleWindowMouseMove: function (v) { + this.downInfo && (this.isDragging ? this.handleDownInfo("onDrag", v) : (this.handleDownInfo("onBeginDrag", v), this.isDragging = !0)) + }, handleWindowTouchEnd: function (j) { + this.handleWindowMouseUp(j) + }, handleWindowMouseUp: function (k) { + if (this.isDragging && (this.handleDownInfo("onEndDrag", k), this.isDragging = !1), this.downInfo) { + var c = this.handle("onUp", k); + if (c && c.data === this.downInfo.data) { + this.handleMissingUp(k); + var J = this, + z = 2 === k.button ? "onContextMenu" : "onClick"; + if (!J._dbclickTimer) return J._dbclickTimer = cd(function () { + delete J._dbclickTimer, J.handleClick(k, z, c), this.downInfo = F + }, u.clickDelay), void 0; + nr(J._dbclickTimer), delete J._dbclickTimer, z = "onDoubleClick", J.handleClick(k, z, c) + } else this.handleDownInfo("onUp", k); + this.downInfo = F + } + }, handle_mouseleave: function (f) { + var e = this, + w = e.gv, + z = e.currentInfo ? e.currentInfo.data : F; + if (z) { + z.s("onLeave") && z.s("onLeave")(f, z, w), e.fire("data", "onLeave", f, z); + var X = e.currentInfo ? e.currentInfo.hits : F; + if (X) + for (var R in X) e.handleLeave(f, R); + e.currentInfo = F + } + }, handle_mousewheel: function (R) { + R.scrollDelta = R.wheelDelta / 40, this.handle("onScroll", R) + }, handle_DOMMouseScroll: function (E) { + E.scrollDelta = 2 === E.axis ? -E.detail : 0, this.handle("onScroll", E) + }, handle_touchstart: function (r) { + this.handle_mousedown(r) + }, handle_touchmove: function (x) { + this.handle("onMove", x) + }, handle_mousedown: function (G) { + this.isDragging && (this.handleDownInfo("onEndDrag", G), this.isDragging = !1), this.downInfo = this.handle("onDown", G), this.downInfo && Lj(this, G) + }, handle_mousemove: function (p) { + var k = this, + $ = k.gv; + k._hoverTimer && (nr(k._hoverTimer), delete k._hoverTimer); + var h, I, T, S = k.handle("onMove", p), + w = this.currentInfo ? this.currentInfo.data : F, + v = this.currentInfo ? this.currentInfo.hits : F; + if (S && (I = S.data, T = S.hits, k._hoverTimer = cd(function () { + nr(k._hoverTimer), delete k._hoverTimer, k.handle("onHover", p, S) + }, $.getHoverDelay() || u.hoverDelay)), I !== w) { + if (w && (w.s("onLeave") && w.s("onLeave")(p, w, $), this.fire("data", "onLeave", p, w)), I && (I.s("onEnter") && I.s("onEnter")(p, I, $), this.fire("data", "onEnter", p, I)), v) + for (h in v) this.handleLeave(p, h); + if (T) + for (h in T) { + var O = T[h], + R = I._interactPrefix = O.prefix, + Y = R && I.a(R + "onEnter") || O.target.onEnter; + Y && Y.call(O.target, p, I, $, O.point, O.width, O.height), this.fire(O.type, "onEnter", O.event, O.data, O.image, O.comp, O.point, O), I._interactPrefix = null + } + } else { + if (v) + for (h in v) T && T[h] || this.handleLeave(p, h); + if (T) + for (h in T) + if (!v || !v[h]) { + var O = T[h], + R = I._interactPrefix = O.prefix, + Y = R && I.a(R + "onEnter") || O.target.onEnter; + Y && Y.call(O.target, p, I, $, O.point, O.width, O.height), this.fire(O.type, "onEnter", O.event, O.data, O.image, O.comp, O.point, O), I._interactPrefix = null + } + } + this.currentInfo = S + }, handle: function (M, r, m) { + var D, j = this, + v = j.gv; + if (j._is2d) { + if (m = m || v.getDataInfoAt(r), !m || !v.isInteractive(m.data)) return; + if (D = m.ui.interactiveInfo) { + var u, f = m.data; + if (f.s(M) && f.s(M)(r, f, v), this.fire("data", M, r, f), "body" === m.part && D.bodyInfo) u = "body", m.hits = this.handleImage(u, v.getImage(f), M, r, f, m.point, D.bodyInfo); + else if ("icons" === m.part && D._38o) { + var J = D._38o[m.name]; + J && J[m.index] && (u = "icons|" + m.name + "|" + m.index, m.hits = this.handleImage(u, m.icon, M, r, f, m.point, J[m.index])) + } + } + return m + } + var f, K; + if (!m) + if (r && r instanceof O.Math.Ray) { + var y = v.vr.intersectWorld(r); + if (f = y.data, K = y.intersect, j.drawVRRay(r, f, K), !f) return; + var n = v.getData3dUI(f); + if (D = n.interactiveInfo, !D) return; + m = { + data: f, + part: K.part, + ui: n + } + } else { + if (m = v.getDataInfoAt(r), !m) return; + m && (m = { + data: m.data, + part: m.part + }) + } + if (v.isInteractive(m.data)) { + if (!K) { + f = m.data; + var n = v.getData3dUI(f); + if (m.ui = n, D = n.interactiveInfo, !D) return m; + if (K = v.intersectObject(r, f), !K) return + } + f.s(M) && f.s(M)(r, f, v), this.fire("data", M, r, f); + var z, B = K.part; + return "body" !== B && (z = f.s(B + ".image") || f.s("shape3d." + B + ".image")), z || (z = f.s("all.image") || f.s("shape3d.image")), z ? (D = "object" == typeof z ? D[z.uuid] : D[z], D && D.bodyInfo ? (m.part = "body", m.interactiveInfo = D, m.point = this._convertUVToPoint(K.uv, D), m.image = z, m.hits = this.handleImage("body", z, M, r, f, m.point, D.bodyInfo), m) : m) : m + } + }, _handleLeaveOrMissing: function (J, E, I) { + var v = "leave" === J ? this.currentInfo : this.downInfo; + if (v) { + var j = v.interactiveInfo || v.ui.interactiveInfo; + if (j) { + var C, $, z = v.data; + if (this._is2d) { + if ($ = this.gv.lp(E), "body" === v.part && j.bodyInfo) C = "body", "leave" === J ? this.handleLeaveImage(I, C, this.gv.getImage(z), E, z, $, j.bodyInfo) : this.handleMissingUpImage(C, this.gv.getImage(z), E, z, $, j.bodyInfo); + else if ("icons" === v.part && j._38o) { + var R = j._38o[v.name]; + R && R[v.index] && (C = "icons|" + v.name + "|" + v.index, "leave" === J ? this.handleLeaveImage(I, C, v.icon, E, z, $, R[v.index]) : this.handleMissingUpImage(C, v.icon, E, z, $, R[v.index])) + } + } else { + if (!j.bodyInfo) return; + var r = this.gv.intersectObject(E, z); + $ = r && r.uv ? this._convertUVToPoint(r.uv, j) : { + x: 1 / 0, + y: 1 / 0 + }, "leave" === J ? this.handleLeaveImage(I, "body", v.image, E, z, $, j.bodyInfo) : this.handleMissingUpImage("body", v.image, E, z, $, j.bodyInfo) + } + } + } + }, handleClick: function (l, h, M) { + var x = this, + B = this.downInfo; + if (B && M) { + var Y, c = M.interactiveInfo || M.ui.interactiveInfo, + W = M.data, + q = this.gv; + if (W.s(h) && W.s(h)(l, W, q), x.fire("data", h, l, W), c) + if (this._is2d) { + if (B.part === M.part) { + var n = q.lp(l); + "body" === M.part && c.bodyInfo && (Y = "body", this.handleClickImage(Y, q.getImage(W), h, l, W, n, c.bodyInfo, M)) + } + } else { + if (!c.bodyInfo) return; + var U = q.intersectObject(l, W); + if (!U) return; + n = this._convertUVToPoint(U.uv, c), this.handleClickImage("body", B.image, h, l, W, n, c.bodyInfo, M) + } + } + }, handleDownInfo: function (T, B) { + if (this.downInfo) { + var w = this.downInfo, + q = this.gv, + d = w.interactiveInfo || w.ui.interactiveInfo; + if (d) { + var W, N = w.data; + if (N.s(T) && N.s(T)(B, N, q), this.fire("data", T, B, N), this._is2d) { + var D = q.lp(B); + if ("body" === w.part && d.bodyInfo) W = "body", this.handleDownInfoImage(W, q.getImage(N), T, B, N, D, d.bodyInfo); + else if ("icons" === w.part && d._38o) { + var t = d._38o[w.name]; + t && t[w.index] && (W = "icons|" + w.name + "|" + w.index, this.handleDownInfoImage(W, w.icon, T, B, N, D, t[w.index])) + } + } else { + if (!d.bodyInfo) return; + var K = q.intersectObject(B, N); + if (!K) return; + D = this._convertUVToPoint(K.uv, d), this.handleDownInfoImage("body", w.image, T, B, N, D, d.bodyInfo) + } + } + } + }, fire: function (N, u, v, H, i, g, U, q) { + this.gv.fi({ + kind: u, + type: N, + event: v, + data: H, + image: i, + comp: g, + view: this.gv, + point: U, + width: q ? q.width : Z, + height: q ? q.height : Z + }) + }, handleImage: function (j, I, E, F, t, W, m) { + var $ = {}; + if (I && (I = ii(I))) { + var B = this.gv, + b = m.rect, + s = this.convertPoint(W, m); + s.inRect && (I[E] && I[E](F, t, B, s, b.width, b.height), this.fire("image", E, F, t, I, Z, s, b), $[j + "|image"] = { + target: I, + type: "image", + image: I, + data: t, + event: F, + point: s, + width: b.width, + height: b.height + }); + for (var l, R = m.compInfos, e = I, L = R.length - 1; L >= 0; L--) { + var q = R[L], + z = q.comp; + if (s = this.convertPoint(W, q, e, z, B, t), s.inRect) { + b = q.rect; + var y = t._interactPrefix = q.prefix, + h = y && t.a(y + E) || z[E]; + if (h && (l = h.call(z, F, t, B, s, b.width, b.height)), this.fire("comp", E, F, t, I, z, s, b), l !== !0 && (I = b.image) && (I[E] && (l = I[E](F, t, B, s, b.width, b.height)), this.fire("image", E, F, t, I, Z, s, b)), t._interactPrefix = null, $[j + "|" + L] = { + target: z, + type: "comp", + comp: z, + image: I, + data: t, + event: F, + point: s, + width: b.width, + height: b.height, + prefix: y + }, I && ($[j + "|" + L + "|image"] = { + target: I, + type: "image", + image: I, + data: t, + event: F, + point: s, + width: b.width, + height: b.height, + prefix: y + }), l === !0) break + } + } + } + return $ + }, handleLeave: function (S, F) { + return this._handleLeaveOrMissing("leave", S, F) + }, handleMissingUp: function (Z) { + return this._handleLeaveOrMissing("missing", Z) + }, handleLeaveImage: function (u, E, B, L, v, b, Q) { + if (B && (B = ii(B))) { + var z = this.gv, + w = Q.rect, + x = this.convertPoint(b, Q); + u === E + "|image" && (B.onLeave && B.onLeave(L, v, z, x, w.width, w.height), this.fire("image", "onLeave", L, v, B, Z, x, w)); + for (var j, f = Q.compInfos, P = B, l = f.length - 1; l >= 0; l--) { + var q = f[l], + M = q.comp; + x = this.convertPoint(b, q, P, M, z, v), w = q.rect; + var D = v._interactPrefix = q.prefix; + if (u === E + "|" + l) { + var t = D && v.a(D + "onLeave") || M.onLeave; + t && (j = t.call(M, L, v, z, x, w.width, w.height)), this.fire("comp", "onLeave", L, v, B, M, x, w) + } + if (j !== !0 && (B = w.image) && u === E + "|" + l + "|image" && (B.onLeave && (j = B.onLeave(L, v, z, x, w.width, w.height)), this.fire("image", "onLeave", L, v, B, Z, x, w)), v._interactPrefix = null, j === !0) break + } + } + }, handleMissingUpImage: function (M, I, $, T, m, g) { + var N = "onUp", + A = this.downInfo.hits; + if (A && I && (I = ii(I))) { + var L = this.gv, + y = g.rect, + W = this.convertPoint(m, g); + !W.inRect && A[M + "|image"] && (I[N] && I[N]($, T, L, W, y.width, y.height), this.fire("image", N, $, T, I, Z, W, y)); + for (var U, j = g.compInfos, G = I, C = j.length - 1; C >= 0; C--) { + var w = j[C], + B = w.comp; + if (W = this.convertPoint(m, w, G, B, L, T), !W.inRect) { + y = w.rect; + var b = T._interactPrefix = w.prefix; + if (A[M + "|" + C]) { + var P = b && T.a(b + N) || B[N]; + P && (U = P.call(B, $, T, L, W, y.width, y.height)), this.fire("comp", N, $, T, I, B, W, y) + } + if (U !== !0 && (I = y.image) && A[M + "|" + C + "|image"] && (I[N] && (U = I[N]($, T, L, W, y.width, y.height)), this.fire("image", N, $, T, I, Z, W, y)), T._interactPrefix = null, U === !0) break + } + } + } + }, handleDownInfoImage: function (H, L, M, E, n, p, l) { + var Y = this.downInfo.hits; + if (Y && L && (L = ii(L))) { + var j = this.gv, + P = l.rect, + D = this.convertPoint(p, l); + Y[H + "|image"] && (L[M] && L[M](E, n, j, D, P.width, P.height), this.fire("image", M, E, n, L, Z, D, P)); + for (var g, V = l.compInfos, S = L, N = V.length - 1; N >= 0; N--) { + var B = V[N], + X = B.comp; + D = this.convertPoint(p, B, S, X, j, n), P = B.rect; + var z = n._interactPrefix = B.prefix; + if (Y[H + "|" + N]) { + var $ = z && n.a(z + M) || X[M]; + $ && (g = $.call(X, E, n, j, D, P.width, P.height)), this.fire("comp", M, E, n, L, X, D, P) + } + if (g !== !0 && (L = P.image) && Y[H + "|" + N + "|image"] && (L[M] && (g = L[M](E, n, j, D, P.width, P.height)), this.fire("image", M, E, n, L, Z, D, P)), n._interactPrefix = null, g === !0) break + } + } + }, handleClickImage: function (d, u, n, v, A, b, c, o) { + var k = this.downInfo.hits, + U = o.hits; + if (k && u && (u = ii(u))) { + var X = this.gv, + F = c.rect, + q = this.convertPoint(b, c); + k[d + "|image"] && (u[n] && u[n](v, A, X, q, F.width, F.height), this.fire("image", n, v, A, u, Z, q, F)); + for (var _, B = c.compInfos, D = u, e = B.length - 1; e >= 0; e--) { + var J = B[e], + g = J.comp; + q = this.convertPoint(b, J, D, g, X, A), F = J.rect; + var P = A._interactPrefix = J.prefix; + if (k[d + "|" + e] && U[d + "|" + e]) { + var j = P && A.a(P + n) || g[n]; + j && (_ = j.call(g, v, A, X, q, F.width, F.height)), this.fire("comp", n, v, A, u, g, q, F) + } + if (_ !== !0 && (u = F.image) && k[d + "|" + e + "|image"] && (u[n] && (_ = u[n](v, A, X, q, F.width, F.height)), this.fire("image", n, v, A, u, Z, q, F)), A._interactPrefix = null, _ === !0) break + } + } + }, initImageResource: function () { + u.setImage("coreInteractorRayHitImage", { + width: 16, + height: 16, + comps: [{ + type: "oval", + background: "rgb(255,0,0)", + borderWidth: 1, + borderColor: "rgb(250,120,120)", + opacity: .3, + rotation: -1.593, + rect: [.73315, .6933, 14.5337, 14.61341] + }, { + type: "oval", + background: "rgb(255,0,0)", + borderWidth: 1, + borderColor: "rgb(250,120,120)", + rotation: -1.593, + rect: [3.56695, 3.75073, 8.8661, 8.49856] + }] + }) + }, _convertUVToPoint: function (w, O) { + if (!w) return { + x: 1 / 0, + y: 1 / 0 + }; + var n = O.bodyInfo.rect, + N = w.clone(), + g = w.multiply({ + x: n.width, + y: n.height + }); + return g.local = N, g + }, convertPoint: function (R, P, t, m, O, S) { + var $ = P.rect, + i = P.matrix.applyInverse(R).sub($), + z = i.x >= 0 && i.y >= 0 && i.x <= $.width && i.y <= $.height; + if (!z) return i; + if (m && Dj(m.pixelPerfect, S, O)) { + var $, k = 1; + this._is2d ? (k = O.getZoom(), $ = Cc(R.x, R.y, Z, k)) : $ = Cc(R.x, R.y); + var N = !1, + B = $.x, + s = $.y, + f = $.width, + V = $.height, + x = u.hitMaxArea, + T = f * V * k * k; + if (T > x) { + var c = Math.sqrt(x / T); + k *= c + } + f *= k, V *= k, 2 > f && (f = 2), 2 > V && (V = 2), B *= k, s *= k; + var I = Cr(f, V), + q = new Np(0, -B, -s, k, k); + q.append(P.matrix), O._drawForChecking = !0, m.transform = q, P.refRect && P.refRect.fitSize && (m.refRect = P.refRect); + var p = t.comps; + t.comps = [m], Yd(I, t, 0, 0, f, V, S, self), t.comps = p, delete m.refRect, delete m.transform, O._drawForChecking = !1; + try { + for (var v = 0, J = I.getImageData(0, 0, f, V).data; v < J.length; v += 4) + if (0 !== J[v + 3]) { + N = !0; + break + } + I.restore() + } catch (o) { + xm = F, N = !1 + } + i.inRect = N + } else i.inRect = !0; + return i + } + }); + var pk = hg.DefaultInteractor = function (C) { + fi(pk, this, [C]) + }; + Bb("DefaultInteractor", Zp, { + handle_mousedown: function (q) { + Qc(q); + var k = this, + R = k.gv, + Q = R.getDataAt(q); + if (R.setFocus(q) && !R._editing && !R._scrolling) { + wm(q) ? R.handleDoubleClick(q, Q) : R.handleClick(q, Q); + var I = Fm(q); + !Cf() && !I && Q && (R.isMovable(Q) || R._39Q(Q)) || !R.isPannable() || !jj(q) && !I || ik(q) || (k._tx = R.tx(), k._ty = R.ty(), k.startDragging(q)) + } + }, handleWindowMouseUp: function (X) { + var e = this, + l = e.gv; + l._panning && (delete l._panning, l.onPanEnded(), e.fi({ + kind: "endPan", + event: X + })), delete e._tx, delete e._ty, e.clearDragging() + }, handle_mousemove: function (F) { + var q = this, + C = q.gv; + q._hoverTimer && (nr(q._hoverTimer), delete q._hoverTimer), q._hoverTimer = cd(function () { + q.fi({ + kind: "hover", + event: F + }), nr(q._hoverTimer), delete q._hoverTimer + }, C.getHoverDelay() || u.hoverDelay) + }, handle_touchmove: function (U) { + this.handle_mousemove(U) + }, handleWindowMouseMove: function (S) { + var I = this, + u = I.gv; + I.fi({ + kind: u._panning ? "betweenPan" : "beginPan", + event: S + }), u._panning = 1; + var g = wq(u, S, I._lastClientPoint); + u.setTranslate(I._tx + g.x, I._ty + g.y) + }, handle_mousewheel: function (P) { + this.gv.handleScroll(P, P.wheelDelta) + }, handle_DOMMouseScroll: function (D) { + 2 === D.axis && this.gv.handleScroll(D, -D.detail) + }, handle_keydown: function (g) { + this.gv.handleKeyDown(g) + } + }); + var ng = hg.SelectInteractor = function (t) { + fi(ng, this, [t]) + }; + Bb("SelectInteractor", Zp, { + _42: function () { + var c = this, + i = c.gv, + B = i.getZoom(), + K = c.mark, + g = c.div; + g || (g = c.div = dd(), sn(c.getView(), g)); + var D = {}; + D.x = K.x * B + i.tx(), D.y = K.y * B + i.ty(), D.width = K.width * B, D.height = K.height * B, qp(g, D), this.intersects() ? (g.style.border = "", g.style.background = i.getRectSelectBackground()) : (g.style.background = "", g.style.border = "1px solid " + i.getRectSelectBorderColor()) + }, handle_mousedown: function (z) { + var v = this, + E = v.gv; + if (v._57I = F, v.pendingClickThrough = F, !(E._editing || E._scrolling || Cf() || Fm(z))) { + var g = E.getDataAt(z), + I = E.sm(); + g ? ik(z) ? I.co(g) ? I.rs(g) : I.as(g) : I.co(g) ? g instanceof Br && g.isClickThroughEnabled() && jj(z) && (v.pendingClickThrough = lb(z)) : I.ss(g) : ik(z) || !E.isPannable() ? jj(z) && (ik(z) || I.cs(), E.isRectSelectable() && (v.startDragging(z), E._77O = 1)) : jj(z) && (v._57I = lb(z)) + } + }, handle_mouseup: function (_) { + var y = this, + S = y.gv, + Z = y._57I; + if (Z && (En(Z, lb(_)) <= 1 && S.sm().cs(), y._57I = F), y.pendingClickThrough) { + if (En(y.pendingClickThrough, lb(_)) <= 1) { + var n = S.getDataAt(_); + if (n instanceof Br && n.isClickThroughEnabled()) { + var h = S.getDataAt(_, function (f) { + var u = f.getParent() === n && S.isSelectable(f, !0); + return u + }); + h && (_.clickThrough = !0, S.sm().ss(h)) + } + } + y.pendingClickThrough = F + } + }, handleWindowMouseUp: function (Y) { + this.clear(Y) + }, handleWindowMouseMove: function (U) { + var K = this, + $ = K.gv; + K._logicalPoint = $.lp(U), K.mark ? (K.fi({ + kind: "betweenRectSelect", + event: U + }), $.isPannable() && K.autoScroll(U), K.redraw()) : K.fi({ + kind: "beginRectSelect", + event: U + }), K.mark = ms(K._lastLogicalPoint, K._logicalPoint), K.redraw() + }, intersects: function () { + var J = this, + v = J._lastLogicalPoint, + b = J._logicalPoint; + return v.x > b.x || v.y > b.y + }, clear: function (w) { + var G = this, + O = G.gv, + Y = G.mark; + if (G._57I = F, G.pendingClickThrough = F, G._lastLogicalPoint) { + if (Y) { + if (0 !== Y.width && 0 !== Y.height) { + var $ = O.getDatasInRect(Y, G.intersects()); + if (!$.isEmpty()) { + var P = O.sm(), + E = P.toSelection(); + $.each(function (h) { + P.co(h) ? E.remove(h) : E.add(h) + }), P.ss(E) + } + } + yj(G.div), delete G.div, delete G.mark, G.redraw(), G.fi({ + kind: "endRectSelect", + event: w + }), O.onRectSelectEnded() + } + G.clearDragging(), delete O._77O + } + }, redraw: function () { + var u = this; + u._draw || (u._draw = 1, cd(function () { + u.mark && u._42(), delete u._draw + }, 16)) + } + }); + var Wr = hg.MoveInteractor = function (l) { + fi(Wr, this, [l]) + }; + Bb("MoveInteractor", Zp, { + handle_mousedown: function (y) { + var n = this, + m = n.gv; + if (jj(y) && !m._editing && !m._scrolling && !Cf()) { + var w = m.getSelectedDataAt(y); + !w || m._39Q(w) && !m.isMovable(w) ? m._focusData = F : (n._data = w, m.handleMouseDown && m.handleMouseDown(y, w), n.startDragging(y), m.isMovable(w) && (m._moving = 1)) + } + }, handleWindowMouseUp: function (J) { + var U = this, + F = U.gv; + F.handleMouseUp && F.handleMouseUp(J, U._data), U.clear(J) + }, handleWindowMouseMove: function (v) { + var E = this, + t = E._data, + U = E.gv; + if ((!U._93O || !U._93O(v, t)) && U._moving) { + E._logicalPoint || E.fi({ + kind: "prepareMove", + event: v + }); + var Y = E._logicalPoint ? "betweenMove" : "beginMove", + W = { + kind: Y, + event: v + }, + $ = E._logicalPoint = U.lp(v); + "beginMove" !== Y || E._alreadyBeginTransaction || (E._alreadyBeginTransaction = !0, U.getDataModel().beginTransaction()); + var R = E._calcShift(Y, v), + O = R.x, + J = R.y, + k = E.gv.getMoveMode(v, t); + k && ("x" === k ? J = 0 : "y" === k ? O = 0 : "xy" !== k && (O = J = 0)), U.moveSelection(O, J), E._lastLogicalPoint = $, E.autoScroll(v), E.fi(W) + } + }, _calcShift: function () { + var m = this, + s = m._logicalPoint, + t = m._lastLogicalPoint, + q = s.x - t.x, + x = s.y - t.y; + return { + x: q, + y: x + } + }, clear: function (u) { + var P = this, + L = P.gv; + P._lastLogicalPoint && (P._lastLogicalPoint = P._data = L._moving = F, P._logicalPoint && (P.fi({ + kind: "endMove", + event: u + }), L.onMoveEnded()), P.clearDragging()), P._alreadyBeginTransaction && (P._alreadyBeginTransaction = !1, L.getDataModel().endTransaction()) + } + }); + var eb = hg.TextEditInteractor = function (C) { + fi(eb, this, [C]), this.init() + }; + Bb("TextEditInteractor", Zp, { + init: function () { + var m = this, + _ = this.input = U.createElement("input"), + V = _.style; + _.text = "text", V.border = "1px solid #d8d8d8", V.position = "absolute", V.padding = "2px 3px", V.outline = "none", V.marginLeft = "-90px", V.marginTop = "-16px", V.backgroundColor = "rgba(255,255,255, 0.9)", V.fontSize = "14px", V.width = "180px", V.height = "32px", V.boxShadow = "0 0 13px rgba(16,142,233, 0.5)", V.textAlign = "center", V.boxSizing = "border-box", K(_, "keyup", function (S) { + hd(S) && m.endTextEdit() + }), K(_, "focus", function () { + _.select() + }); + var F = this.textarea = U.createElement("textarea"), + R = this.wrap = U.createElement("div"); + R.appendChild(F), V = F.style, V.margin = 0, V.padding = "4px", V.overflow = "hidden", V.boxSizing = "border-box", V.position = "absolute", V.outline = "none", V.backgroundColor = "transparent", V.resize = "none", V.textAlign = "center", V.fontSize = "14px", V.border = "none", V.borderWidth = 0, V.width = "100%", V.top = "50%", V = R.style, V.boxSizing = "border-box", V.margin = 0, V.padding = 0, V.position = "absolute", V.boxShadow = "0 0 13px rgba(16,142,233, 0.5)", V.border = "1px solid #d8d8d8", V.backgroundColor = "rgba(255,255,255, 0.9)", V.width = "180px", V.marginLeft = "-90px", K(F, "keydown", function (t) { + return (Pf() || ik()) && hd(t) ? (m.endTextEdit(), void 0) : (m.calculateTextareaHeight(String.fromCharCode(t.keyCode)), void 0) + }), K(F, "focus", function () { + F.select() + }); + var C = function (p) { + p.stopPropagation() + }; + K(_, "mousedown", C), K(_, "touchstart", C), K(F, "mousedown", C), K(F, "touchstart", C), m.SIZING_STYLE = ["letter-spacing", "line-height", "padding-top", "padding-bottom", "font-family", "font-weight", "font-size", "text-rendering", "text-transform", "width", "text-indent", "padding-left", "padding-right", "border-width", "box-sizing"], m.HIDDEN_TEXTAREA_STYLE = "visibility:hidden; min-height:0 !important;max-height:none !important;height:0 !important;visibility:hidden !important;overflow:hidden !important;position:absolute !important;z-index:-1000 !important;top:0 !important;right:0 !important", m.handleWindowClick = function (x) { + var q = m._editingDOM; + if (q) { + var X = q.getBoundingClientRect(), + G = lb(x); + cf(X, G) || m.endTextEdit() + } + } + }, handle_mousedown: function (P) { + var l = this, + $ = l.gv; + if (wm(P) && !$._editing) { + var M = $.getDataAt(P); + if (M) { + var a = $.getTextEditInfo(M); + a && (this._editInfo = a, this._editTarget = M, $._editing = !0, a.isMultiline ? this.handleMultilineEdit() : this.handleTextEdit()) + } + } + }, handleMultilineEdit: function () { + var l = this, + d = l.gv, + F = l._editTarget, + f = l.getTargetValue(), + Y = l.textarea, + R = l.wrap; + this.hiddenTextarea || this.createHiddenTextarea(), (null === f || f === Z) && (f = ""), Y.value = f, l._editingDOM = Y, d.getView().appendChild(R), this.layoutHTML(R, F), this.calculateTextareaHeight(), cd(function () { + Y.focus(), K(x, "mousedown", l.handleWindowClick), K(x, "touchstart", l.handleWindowClick) + }, 10) + }, handleTextEdit: function () { + var o = this, + H = o.gv, + s = o._editTarget, + q = o.getTargetValue(), + N = o.input; + (null === q || q === Z) && (q = ""), N.value = q, o._editingDOM = N, H.getView().appendChild(N), this.layoutHTML(N, s), cd(function () { + N.focus(), K(x, "mousedown", o.handleWindowClick), K(x, "touchstart", o.handleWindowClick) + }, 10) + }, layoutHTML: function (X, z) { + var J = this.gv, + t = J.getZoom(); + if (z instanceof O.Node) { + var Z = z.getRect(); + X.style.left = (Z.x + Z.width / 2) * t + J.tx() + "px", X.style.top = (Z.y + Z.height / 2) * t + J.ty() + "px" + } else if (z instanceof O.Edge) { + var E = J.getDataUI(z), + Z = E._6I; + X.style.left = (Z.x + Z.width / 2) * t + J.tx() + "px", X.style.top = (Z.y + Z.height / 2) * t + J.ty() + "px" + } + }, endTextEdit: function () { + var m = this, + V = m._editInfo.isMultiline ? m.wrap : m.input, + $ = m._editInfo.isMultiline ? m.textarea : m.input; + m.setTargetValue($.value), m.gv.getView().removeChild(V), m.gv._editing = !1, delete m._editingDOM, b(x, "mousedown", m.handlelick), b(x, "touchstart", m.handleWindowClick) + }, setTargetValue: function (X) { + var D = this, + P = D._editTarget, + E = D._editInfo, + V = E.accessType, + g = E.name; + if (g && V || (V = "p", g = "name"), "p" === V) { + var T = O.Default.setter(g); + P[T](X) + } else "a" === V ? P.a(g, X) : P.s(g, X) + }, getTargetValue: function () { + var u = this, + y = u._editTarget, + b = u._editInfo, + W = b.accessType, + j = b.name; + if (j && W || (W = "p", j = "name"), "p" === W) { + var z = O.Default.getter(j); + return y[z]() + } + return "a" === W ? y.a(j) : y.s(j) + }, createHiddenTextarea: function () { + this.hiddenTextarea = U.createElement("textarea"), this.hiddenTextarea.setAttribute("style", "margin:0; padding:0; position:absolute; overflowY:scroll; resize:none; box-sizing:border-box;"), this.hiddenTextarea.setAttribute("rows", "1"), this.gv.getView().appendChild(this.hiddenTextarea) + }, calculateHTMLStyle: function (n, K) { + if (K && this.computedStyleCache) return this.computedStyleCache; + var l = this, + z = x.getComputedStyle(n), + U = z.getPropertyValue("box-sizing") || z.getPropertyValue("-moz-box-sizing") || z.getPropertyValue("-webkit-box-sizing"), + v = parseFloat(z.getPropertyValue("padding-bottom")) + parseFloat(z.getPropertyValue("padding-top")), + G = parseFloat(z.getPropertyValue("border-bottom-width")) + parseFloat(z.getPropertyValue("border-top-width")), + h = l.SIZING_STYLE.map(function (A) { + return A + ":" + z.getPropertyValue(A) + }).join(";"), + R = { + sizingStyle: h, + paddingSize: v, + borderSize: G, + boxSizing: U + }; + return K && (this.computedStyleCache = R), R + }, calculateTextareaHeight: function (P) { + P = P || ""; + var Y = this, + S = Y.textarea, + Z = Y.hiddenTextarea, + t = Y.wrap, + g = 32, + C = Y.calculateHTMLStyle(S, !1), + G = C.paddingSize, + n = C.borderSize, + X = C.boxSizing, + $ = C.sizingStyle; + Z.setAttribute("style", $ + ";" + Y.HIDDEN_TEXTAREA_STYLE), Z.value = S.value + P; + var V = Z.scrollHeight; + "border-box" === X ? V += n : "content-box" === X && (V -= G), S.style.height = V + "px", S.style.marginTop = 0 - .5 * V + "px", t.style.height = Math.max(V, g) + "px", t.style.marginTop = V * -.5 + "px" + } + }); + var Vl = hg.ScrollBarInteractor = function (u) { + fi(Vl, this, [u]) + }; + Bb("ScrollBarInteractor", Zp, { + _41o: function () { + return this.gv.getViewRect().height < this.gv.getScrollRect().height + }, _40o: function () { + return this.gv.getViewRect().width < this.gv.getScrollRect().width + }, isV: function (u) { + var y = this.gv.getViewRect(); + return this._41o() && (y.x + y.width - this.gv.lp(u).x) * this.gv.getZoom() < co + }, isH: function (r) { + var z = this.gv.getViewRect(); + return this._40o() && (z.y + z.height - this.gv.lp(r).y) * this.gv.getZoom() < co + }, handle_mousemove: function (z) { + this.handle_touchmove(z) + }, handle_touchmove: function (x) { + if (!si && jj(x) && this.gv.isScrollBarVisible()) { + var r = this, + _ = r.isV(x), + X = r.isH(x); + (_ || X) && r.gv.showScrollBar(), r.gv._scrolling = _ || X + } + }, handleWindowMouseUp: function (E) { + this.handleWindowTouchEnd(E) + }, handleWindowTouchEnd: function (D) { + this._state = this._cp = this._tx = this._ty = this.gv._scrolling = F, this.fi({ + kind: "endScroll", + event: D + }) + }, handle_mousedown: function (E) { + this.handle_touchstart(E) + }, handle_touchstart: function (w) { + var g = this; + if (g.gv.setFocus(w), Qc(w), g.handle_touchmove(w), !(Qj(w) > 1) && g.gv._scrolling && g.gv.isScrollBarVisible()) { + g._cp = lb(w), g._tx = g.gv.tx(), g._ty = g.gv.ty(); + var n = g.isV(w); + g._state = n ? "vScroll" : "hScroll", Ui(g, w), g.fi({ + kind: "beginScroll", + event: w + }) + } + }, handleWindowMouseMove: function (W) { + this.handleWindowTouchMove(W) + }, handleWindowTouchMove: function (d) { + var g = lb(d), + z = this.gv.getViewRect(), + G = this.gv.getScrollRect(); + "vScroll" === this._state ? this.gv.ty(this._ty + (this._cp.y - g.y) * G.height / z.height) : "hScroll" === this._state && this.gv.tx(this._tx + (this._cp.x - g.x) * G.width / z.width), this.fi({ + kind: "betweenScroll", + event: d + }) + } + }); + var Jb = hg.TouchInteractor = function (y, s) { + s = s || {}, s.selectable === Z && (s.selectable = !0), s.movable === Z && (s.movable = !0), s.pannable === Z && (s.pannable = !0), s.pinchable === Z && (s.pinchable = !0), s.editable === Z && (s.editable = !0), this.params = s, fi(Jb, this, [y]) + }; + Bb("TouchInteractor", Zp, { + ms_edit: 1, + setUp: function () { + var H = this; + Jb.superClass.setUp.call(H), nf && H.params.editable && H.gv.setEditInteractor(H) + }, tearDown: function () { + var _ = this; + Jb.superClass.tearDown.call(_), nf && _.params.editable && _.gv.setEditInteractor(F) + }, clear: function (l) { + var P = this, + k = P.gv; + k._moving && (P.fi({ + kind: "endMove", + event: l + }), delete k._moving, k.onMoveEnded(), k.dm().endTransaction()), k._panning && (P.fi({ + kind: "endPan", + event: l + }), delete k._panning, k.onPanEnded()), k._pinching && (P.fi({ + kind: "endPinch", + event: l + }), delete k._pinching, k.onPinchEnded()), k._editing && (P._46O(l), P._77I = P._node = P._edge = P._shape = P._rect = P._89I = P._index = k._editing = F), P.pendingClickThrough = P._moving = P._panning = P._pinching = P._editing = P._57I = P._data = P._beginHistory = F, P.clearDragging() + }, handle_touchstart: function (g) { + var u = this; + if (!u.gv._editing) { + Qc(g), u._57I = F, u.pendingClickThrough = F; + var j = u.params, + A = u.gv, + Y = A.sm(), + I = A.getDataAt(g), + P = Qj(g); + if (1 === P) { + if (wm(g)) return A.handleDoubleClick(g, I), void 0; + A.handleClick(g, I), I && (A.handleMouseDown && A.handleMouseDown(g, I), u._data = I), j.selectable || (I = F), I && (Y.co(I) ? I instanceof Br && I.isClickThroughEnabled() && (u.pendingClickThrough = lb(g)) : Y.ss(I), j.editable && A.isEditable(I) && u._79I(g, I, !0) ? (u._editing = 1, u.startDragging(g)) : j.movable && A.isMovable(I) && (u._moving = 1, u.startDragging(g))), I && A.isMovable(I) || (u._57I = lb(g), j.pannable && A.isPannable() && (u._panning = 1, u.startDragging(g), u._translate = { + x: A.tx(), + y: A.ty() + })) + } else if (j.pinchable && 2 === P) { + if (I && A._39Q(I)) return; + u._pinching = 1, u.startDragging(g); + var $ = A.getView(), + V = A.getZoom(), + N = $.getBoundingClientRect(), + n = g.touches[0], + C = g.touches[1], + d = { + x: (n.clientX + C.clientX) / 2 - N.left, + y: (n.clientY + C.clientY) / 2 - N.top + }; + d.x -= A.tx(), d.y -= A.ty(), d.x /= V, d.y /= V, u._p = d, u._d = zo(g) + } + } + }, handle_touchend: function (o) { + var E = this, + t = E.gv, + g = E._57I, + j = E._data; + if (g && (En(g, lb(o)) <= 1 && !t.getDataAt(o) && t.sm().cs(), E._57I = F), j && t.handleMouseUp && t.handleMouseUp(o, j), E.pendingClickThrough) { + if (En(E.pendingClickThrough, lb(o)) <= 1) { + var j = t.getDataAt(o); + if (j instanceof Br && j.isClickThroughEnabled()) { + var c = t.getDataAt(o, function (l) { + var A = l.getParent() === j && t.isSelectable(l, !0); + return A + }); + c && (o.clickThrough = !0, t.sm().ss(c)) + } + } + E.pendingClickThrough = F + } + }, handleWindowTouchEnd: function (e) { + this.clear(e) + }, handleWindowTouchMove: function (V) { + var j = this, + N = j.gv, + w = Qj(V); + if (1 === w) { + var S = lb(V), + m = wq(N, S, j._lastClientPoint), + Z = En({ + x: 0, + y: 0 + }, m); + if (j._editing && (j._beginHistory || (j._beginHistory = 1, N.dm().beginTransaction()), N._editing = 1, j._78I(V)), j._moving) { + if (!N._moving && Z < u.touchMoveThreshold) return; + j._beginHistory || (j._beginHistory = 1, N.dm().beginTransaction()), j.handleMove(V) + } else if (j._panning) { + if (!N._panning && Z < u.touchMoveThreshold) return; + N.setTranslate(j._translate.x + m.x, j._translate.y + m.y), j.fi({ + kind: N._panning ? "betweenPan" : "beginPan", + event: V + }), N._panning = 1 + } + } else if (2 === w && j._pinching) { + var C = zo(V); + N.handlePinch(j._p, C, j._d), j._d = C, j.fi({ + kind: N._pinching ? "betweenPinch" : "beginPinch", + event: V + }), N._pinching = 1 + } + }, handleMove: function (a) { + var l = this, + E = l.gv, + q = E.lp(a); + E._93O && E._93O(a, l._data) || (E.moveSelection(q.x - l._lastLogicalPoint.x, q.y - l._lastLogicalPoint.y), l._lastLogicalPoint = q, l.autoScroll(a), l.fi({ + kind: E._moving ? "betweenMove" : "beginMove", + event: a + }), E._moving = 1) + } + }); + var O = x.ht, + se = O.graph._editor = { + Math: O.Math, + Guide: {} + }; + se.getStyle = function (K) { + var _, V = se.StyleMap; + return V && (_ = V[K], _ !== Z) ? _ : se.DefaultStyleMap[K] + }, se.setStyle = function (h, t) { + var V = se.StyleMap; + V || (V = se.StyleMap = {}), V[h] = t + }, se.inEdit = function (A) { + return A._inXEdit === !0 + }, se.startEdit = function (l) { + l._inXEdit = !0, se.Inject.doInject(l) + }, se._46O = function (M) { + M._inXEdit = !1, se.Inject.undoInject(M) + }, se.toScreenPosition = function (J, g) { + var d = J.tx(), + G = J.ty(), + T = J._zoom; + return new se.Math.Vector2(g.x * T + d, g.y * T + G) + }, se.checkHit = function (Y, l, s) { + return Y.distanceTo(l) < s ? !0 : !1 + }, se.toWorldPosition = function (y, $) { + var b = y.tx(), + t = y.ty(), + E = y._zoom; + return { + x: ($.x - b) / E, + y: ($.y - t) / E + } + }, se.setAntialias = function (h, R) { + for (var E, Z = ["imageSmoothingEnabled", "webkitImageSmoothingEnabled", "mozImageSmoothingEnabled", "oImageSmoothingEnabled", "msImageSmoothingEnabled"], r = 0, v = Z.length; v > r && (E = Z[r], !(E in h)); r++); + h[E], h[E] = R + }, se.getTargetCornersOnScreen = function (q, A) { + if (!A) return null; + var f, Y = []; + if (Th(A, q)) { + var J = Rp(q, A); + f = [{ + x: J.x, + y: J.y + }, { + x: J.x + J.width, + y: J.y + }, { + x: J.x + J.width, + y: J.y + J.height + }, { + x: J.x, + y: J.y + J.height + }] + } else { + if (!A.getCorners) return null; + f = A.getCorners() + } + return f.forEach(function (t) { + var S = se.toScreenPosition(q, t); + Y.push(S.x, S.y) + }), Y + }, se.log = function () { }; + var Tl = se.Inject = { + _modules: [] + }; + Tl.registAsModule = function (_, b) { + var l = {}, + K = {}; + for (var s in _) { + var V = b.prototype[s]; + l[s] = V + } + _.getBackup = function (b) { + return l[b] + }, _.getBackups = function () { + return l + }, K.doInject = function () { + for (var l in _) "getBackup" !== l && (b.prototype[l] = _[l]) + }, K.undoInject = function () { + for (var B in _) "getBackup" !== B && (b.prototype[B] = l[B]) + }, Tl._modules.push(K) + }, Tl.doInject = function (A) { + for (var c, K = Tl._modules, H = 0, e = K.length; e > H; H++) c = K[H], c.doInject(A) + }, Tl.undoInject = function (_) { + for (var c, a = Tl._modules, W = 0, o = a.length; o > W; W++) c = a[W], c.undoInject(_) + }; + var Zp = O.graph.EditInteractor = function (m) { + var f = this, + F = U.createElement("canvas"); + F.className = "editCanvas", F.style.position = "absolute", f._styleMap = {}, f._canvas = F, f._context = F.getContext("2d"), Zp.superClass.constructor.call(f, m), this._editDetail = !1, se.setAntialias(f._context, !1), f._subModules = [new se.Anchor(f), new se.RotateX(f), new se.MoveDummy(f), new se.Rect(f), new se.Curve(f), new se.MoveHelper(f)], f._gridGuide = new se.Guide.Grid(f), f._rectGuide = new se.Guide.Rect(f), f._hoverGuide = new se.Guide.Hover(f) + }, + vm = Zp; + O.Default.def(Zp, O.graph.Interactor, { + ms_edit: 1, + ms_fire: 1 + }), o.defineProperties(Zp.prototype, { + editDetail: { + get: function () { + var d = !!this._editDetail; + return d + }, set: function (y) { + var T = this, + c = T._editDetail; + c !== y && (T._editDetail = y, T.gv._editing = y, T.fp("editDetail", c, y), T.fp("pointsEditingMode", c, y), T.fi({ + kind: y ? "beginEditPoints" : "endEditPoints" + })) + } + }, + gvEditing: { + get: function () { + return this.gv._editing + }, set: function (c) { + (!this._editDetail || c) && (this.gv._editing = c, c || (this.editDetail = !1)) + } + }, + editing: { + get: function () { + return this._editing + }, set: function (_) { + this._editing = _, this.gvEditing = _ + } + }, + editingModule: { + get: function () { + return this._editMod + } + }, + pointsEditingMode: { + get: function () { + return this.editDetail + }, set: function (l) { + var K = this; + K.editDetail !== l && (l ? K._tryEnterEditDetailMode() : K._tryQuitEditDetailMode()) + } + }, + gridEnabled: { + get: function () { + var J = this._gridEnabled; + if (!J) return !1; + var E = this.gv; + return E ? !0 : !0 + }, set: function (G) { + G !== this._gridEnabled && (this._gridEnabled = G, this._42()) + } + }, + alignmentGuideEnabled: { + get: function () { + return this._agEnabled + }, set: function (r) { + r !== this._agEnabled && (this._agEnabled = r, this._42()) + } + }, + gridGuide: { + get: function () { + return this._gridGuide + } + }, + rectGuide: { + get: function () { + return this._rectGuide + } + }, + hoverGuide: { + get: function () { + return this._hoverGuide + } + } + }), Zp.prototype.getSubModule = function (r) { + var p, B, Z, v = this._subModules; + for (B = 0, Z = v.length; Z > B; B++) + if (p = v[B], p.catalog === r) return p + }, Zp.prototype.invokeSubModule = function (e, h) { + var Q = this, + b = Q._subModules; + if (b) + for (var f, K, A, I = Array.prototype.slice.call(arguments, 2), E = 0, S = b.length; S > E; E++) + if (f = b[E], K = f[e], K && (A = K.apply(f, I), A != Z && h)) return f + }, Zp.prototype.invokeSubModuleInverse = function (L, Y) { + var q = this, + U = q._subModules; + if (U) + for (var K, T, a, X = Array.prototype.slice.call(arguments, 2), W = U.length - 1; W >= 0; W--) + if (K = U[W], T = K[L], T && (a = T.apply(K, X), a != Z && Y)) return K + }, Zp.prototype.setUp = function () { + se.log("setUp"); + var N = this, + n = N.gv, + L = n.getView(), + h = N._canvas; + Zp.superClass.setUp.call(N), n.setEditInteractor(N), n._79O ? L.insertBefore(h, n._79O) : L.appendChild(h), se.startEdit(n), N.invokeSubModule("setUp"), n.dm().mm(N._onDataModelChanged, N), n.dm().md(N._onDataPropertyChanged, N) + }, Zp.prototype.tearDown = function () { + se.log("tearDown"); + var Y = this, + S = Y.gv, + Z = S.getView(); + Y._resetCustomCursorStyle(), Zp.superClass.tearDown.call(Y), S.dm().umm(Y._onDataModelChanged, Y), S.dm().umd(Y._onDataPropertyChanged, Y), S.setEditInteractor(null), Z.removeChild(Y._canvas), Y._drawTimer && (nr(Y._drawTimer), Y._drawTimer = null), se._46O(S), Y.invokeSubModule("tearDown") + }, Zp.prototype._onDataModelChanged = function (k) { + var c = this; + ("clear" === k.kind || "remove" === k.kind && c.editDetail && k.data === c.getSubModule("Curve").target) && (c.editDetail = !1, c._42()) + }, Zp.prototype._onDataPropertyChanged = function (w) { + var o = this; + if (o.editDetail) { + var L = o.getSubModule("Curve"), + R = w.data; + R === L.target && (R._writing || L._handleDataChanged(w)) + } + }, Zp.prototype.clear = function () { + se.log("clear") + }, Zp.prototype.redraw = function () { + this._42() + }, Zp.prototype._42 = function () { + var m = this; + m._drawTimer || (m._drawTimer = cd(function () { + m._drawTimer = null, m.drawImpl() + }, 0)) + }, Zp.prototype.drawImpl = function () { + var i; + for (i in { + _42: !0 + }) break; + return function () { + var M = this, + f = M._canvas, + C = M.gv, + r = C.getWidth(), + D = C.getHeight(), + t = M._context, + P = O.Default.getInternal(), + Q = x.devicePixelRatio; + (f.width !== r || f.height !== D) && P.setCanvas(f, r, D, Q), t.clearRect(0, 0, f.width, f.height); + var F = M._getValidSelection(); + t.save(), t.scale(Q, Q), M._gridGuide._42(), M.invokeSubModuleInverse(i, !1, t, C, F), M._rectGuide._42(), M._hoverGuide._42(), t.restore() + } + }(), Zp.prototype._getValidSelection = function () { + var i = this, + n = i.gv, + v = n.sm().getSelection(), + K = []; + return v.each(function (N) { + n.isVisible(N) && n.isEditable(N) && K.push(N) + }), K + }, Zp.prototype.handle_touchmove = function (Q) { + return this.handle_mousemove(Q) + }, Zp.prototype.handle_mousemove = function (u) { + if (!O.Default.isDragging()) { + var K = this; + if ((K.editDetail || !Cf() && !Fm(u)) && !K.gv._externalEditing) + if (K.gvEditing = !1, K._checkEdit(u)) K.gvEditing = !0; + else { + if (!K.getStyle("hoverGuideVisible")) return; + K.hoverData = K.gv.getDataAt(u), K._42() + } + } + }, Zp.prototype.handle_touchstart = function (G) { + return this.handle_mousedown(G) + }, Zp.prototype.handle_mousedown = function (E) { + Qc(E); + var b = this; + if ((b.editDetail || !Cf() && !Fm(E)) && !b.gv._externalEditing) { + if (wm(E) && !E.clickThrough) { + if (b.editDetail) { + if (b._tryQuitEditDetailMode(E)) return + } else if (b._tryEnterEditDetailMode()) return; + b.gv.dm().beginTransaction(); + var B = b.invokeSubModule("handleDoubleClick", !0, E); + if (b.gv.dm().endTransaction(), B) return + } + var T = b._checkEdit(E); + T && (b._downPosition = b._getLogicalPoint(E), b.gv.dm().beginTransaction(), T.startEdit(b, E), b.editing = !0) + } + }, Zp.prototype._checkEdit = function (U) { + var P = this, + O = P.gv, + B = P._getLogicalPoint(U), + K = P.invokeSubModule("check", !0, O, U, B) || null; + return P._editMod = K, K + }, Zp.prototype.handleWindowTouchMove = function (f) { + return this.handleWindowMouseMove(f) + }, Zp.prototype.handleWindowMouseMove = function (E) { + var D = this, + l = D._downPosition; + if (l) { + var z = D._getLogicalPoint(E); + if (z.distanceTo(l) < D.getStyle("moveSensitivity")) return; + delete D._downPosition + } + var x = D._editMod; + x && x.handleEdit(D.gv, E) + }, Zp.prototype._getLogicalPoint = function (t) { + var f = this, + e = O.Default.getLogicalPoint(t, f._canvas); + return new se.Math.Vector2(e) + }, Zp.prototype.handleWindowTouchEnd = function (J) { + return this.handleWindowMouseUp(J) + }, Zp.prototype.handleWindowMouseUp = function () { + var e; + for (e in { + _46O: !0 + }) break; + return function (g) { + var W = this; + W.editing = !1, W.setCursor("default"), W.invokeSubModule(e, !1, g), W._42(), W.gv.dm().endTransaction() + } + }(), Zp.prototype.handle_mousewheel = function (B) { + var J = this; + Qc(B), J.invokeSubModule("preHandleScroll", !0) || J.gv.handleScroll(B, B.wheelDelta) + }, Zp.prototype.handleDelete = function () { + var e = this; + if (!e.editDetail) { + e.gv.dm().beginTransaction(); + var u = e.invokeSubModule("handleNormalStateDelete", !0); + return e.gv.dm().endTransaction(), u || e.gv.removeSelection(), void 0 + } + e.gv.dm().beginTransaction(), e.invokeSubModule("handleDelete", !0), e.gv.dm().endTransaction(), e._42() + }, Zp.prototype.handle_keydown = function (X) { + var D = this; + if ((X.metaKey || X.ctrlKey) && D._42(), Cf(X) && !D.editing) return D.gvEditing = !1, D.setCursor("default"), D._42(), void 0; + var x = hd(X); + return D.editDetail ? ((x || bj(X)) && (D.editDetail = !1, D._42()), D.gv.dm().beginTransaction(), D.invokeSubModule("handle_keydown", !0, X), D.gv.dm().endTransaction(), void 0) : (D.gv.dm().beginTransaction(), D.invokeSubModule("handleNormalStateKeyDown", !0, X), D.gv.dm().endTransaction(), x && D._tryEnterEditDetailMode(), void 0) + }, Zp.prototype.handle_keyup = function (g) { + this.gv.dm().beginTransaction(), this.invokeSubModule("handle_keyup", !0, g), this.gv.dm().endTransaction() + }, Zp.prototype._tryEnterEditDetailMode = function () { + var b = this; + return !b.editDetail && b.invokeSubModule("canEnterEditDetailMode", !0) && 1 === b._getValidSelection().length ? (b.editDetail = !0, b._42(), !0) : void 0 + }, Zp.prototype._tryQuitEditDetailMode = function (A) { + var _ = this; + return _.editDetail ? !A || _.invokeSubModule("canQuitEditDetailMode", !0, A) ? (_.editDetail = !1, _._42(), !0) : !1 : !1 + }, Zp.prototype.setStyle = function (J, C, N) { + var v = this; + N ? se.setStyle(J, C) : v._styleMap[J] = C, "baseColor" === J && (ci = C), v.fp("styleChanged", null, { + key: J, + value: C, + base: N + }), v._42() + }, Zp.prototype.getStyle = function (T) { + var P = this, + s = P._styleMap[T]; + return s !== Z ? s : se.getStyle(T) + }, Zp.prototype.setCursor = function (d) { + this._resetCustomCursorStyle(), O.graph.EditInteractor.superClass.setCursor.call(this, d) + }, Zp.prototype._drawHostGuide = function (Y) { + var l = this, + i = l._context, + M = l.gv; + se.Icons.DrawIcon(l, i, se.Icons.NodeHoverGuide, Y.corners); + var w = Y.host; + if (w) { + var D = M.getAttachPoints(w); + if (D && D.length) + for (var X = 0, $ = D.length; $ > X; X++) { + var v = D[X], + j = Yg(M, w, 0, v.offsetX || 0, v.offsetY || 0, v.x, v.y); + j = se.toScreenPosition(M, j), j.isAttach = Y.attach === X, se.Icons.DrawIcon(l, i, se.Icons.AttachPoint, j) + } + } + }, Zp.prototype._resetCustomCursorStyle = function () { + var J = this; + if (J._customStyle) { + var H = this.gv.getView(); + H.classList && H.classList.remove && H.classList.remove(J._customStyle), J._customStyle = null + } + }, Zp.prototype._setRotateCursor = function (M) { + var c = this, + z = c._cursorFactory; + z || (z = c._cursorFactory = new se.CursorFactory(c)); + var B = z.getRotateCursor(M), + J = c.gv.getView(); + c._resetCustomCursorStyle(), c._customStyle = B, J.classList && J.classList.add && J.classList.add(B) + }; + var bb = se.Group = function (G) { + var g = this; + g._entities = G, g._64O = 0, g._position = { + x: 0, + y: 0 + }, g._scale = { + x: 1, + y: 1 + }, g._anchor = { + x: .5, + y: .5 + }, g._anchor2 = { + x: .5, + y: .5 + } + }; + bb.prototype = {}, bb.prototype.constructor = bb; + var Ag = null; + bb.findOrCreateGroup = function (T) { + if (Ag && Ag.checkIsMe(T)) return Ag; + var E = new se.Group(T); + return E.getKeyOb() ? (Ag = E, E) : void 0 + }, bb.prototype.checkIsMe = function (i) { + var O = this._entities; + if (O.length !== i.length) return !1; + var W, R = {}, + l = i.length; + for (W = 0; l > W; W++) R[i[W]._id] = !0; + for (W = 0; l > W; W++) + if (!R[O[W]._id]) return !1; + return !0 + }, bb.prototype.getRotation = function () { + return this._64O + }, bb.prototype.getPosition = function () { + return this._position + }, bb.prototype.getAnchor = function () { + return this._anchor + }, bb.prototype.getWidth = function () { + return this._width + }, bb.prototype.getScale = function () { + return this._scale + }, bb.prototype.getSize = function () { + return { + width: this._width, + height: this._height + } + }, bb.prototype.getHeight = function () { + return this._height + }, bb.prototype.getKeyOb = function () { + for (var W = this._entities, R = W.length - 1; R >= 0; R--) { + var Y = W[R]; + if (this.isNode(Y)) return Y + } + }, bb.prototype.getAnchor2 = function () { + var k = this, + M = k.rotateCenter; + if (M) return M; + var A = k.getKeyOb(); + if (!A) return k._anchor; + var N = k._anchor2, + g = A.getMatrix(); + return g.tf({ + x: A.getWidth() * (N.x - A.getAnchor().x), + y: A.getHeight() * (N.y - A.getAnchor().y) + }) + }, bb.prototype.setAnchor2 = function (B, L) { + var h = this, + C = h.getKeyOb(); + if (C) { + var u, R = C.getMatrix(); + u = "number" == typeof B ? { + x: B, + y: L + } : B; + var M = R.tfi(u); + h._anchor2 = { + x: C.getAnchor().x + M.x / C.getWidth(), + y: C.getAnchor().y + M.y / C.getHeight() + } + } + }, bb.prototype.setRotation = function () { }, bb.prototype.beginRotate = function (n) { + this.rotateCenter = n.pos, this.rotateMode = n.groupRotateMode + }, bb.prototype.endRotate = function () { + delete this.rotateCenter, delete this.rotateMode + }, bb.prototype.addRotation = function (g, r, n) { + return "batch" === r ? this._addRotationInBatchMode(g, n) : "block" === r ? this._addRotationInBlockMode(g, n) : void 0 + }, bb.prototype._addRotationInBlockMode = function (r, q) { + var s = this, + U = s.rotateCenter || s.getPosition(); + s._entities.forEach(function ($) { + if (s.isNode($) && (!q || q($))) { + var l = $.getMatrix(); + l.translate(-U.x, -U.y), l.rotate(r), l.translate(U.x, U.y); + var x = Math.sign($.getScale().x); + $.setRotation(D(l.b * x, l.a * x)), $.setPosition(l.tx, l.ty) + } + }) + }, bb.prototype._addRotationInBatchMode = function (C, s) { + var N = this, + I = N._anchor2; + N._entities.forEach(function (b) { + if (N.isNode(b) && (!s || s(b))) { + var m = b.getAnchor(), + P = b.getMatrix(), + V = P.tf({ + x: b.getWidth() * (I.x - m.x), + y: b.getHeight() * (I.y - m.y) + }), + T = new se.Math.Matrix2d; + T.set(P.a, P.b, P.c, P.d, P.tx, P.ty), T.translate(-V.x, -V.y), T.rotate(C), T.translate(V.x, V.y); + var n = Math.sign(b.getScale().x); + b.setRotation(D(T.b * n, T.a * n)), b.setPosition(T.tx, T.ty) + } + }) + }, bb.prototype.setPosition = function (A) { + var Y, z, U, P, T = this, + c = T._position, + m = A.x - c.x, + V = A.y - c.y, + k = T._entities; + for (z = 0, U = k.length; U > z; z++) Y = k[z], Fq(Y) && (P = Y.getPosition(), Y.setPosition(P.x + m, P.y + V)); + T._position = A + }, bb.prototype.setScale = function (r, E) { + var o = this, + A = r / o._scale.x, + O = E / o._scale.y; + o._adjustChildScaleOrSize(A, O, "size"), o._scale = { + x: r, + y: E + } + }, bb.prototype.getRect = function () { + var C = this, + R = C._position, + Z = C._width, + l = C._height; + return { + x: R.x - Z / 2, + y: R.y - l / 2, + width: Z, + height: l + } + }, bb.prototype.setSize = function (N, b) { + var r = this, + N = Math.max(1, N), + b = Math.max(1, b), + s = N / r._width, + g = b / r._height; + r._adjustChildScaleOrSize(s, g, "size"), r._width = N, r._height = b + }, bb.prototype._adjustChildScaleOrSize = function (B, P, v) { + var l, Y, C, f, p, o, s, u, X, J, m, E, n, K, b = this, + w = b._position, + h = b._entities, + R = new se.Math.Matrix2d; + for (Y = 0, C = h.length; C > Y; Y++) + if (l = h[Y], b.isNode(l)) { + if (f = l.getPosition(), p = l.getRotation(), o = l.getWidth(), s = l.getHeight(), u = l.getScale(), m = u.x * o, E = u.y * s, R.identity().scale(m, E).rotate(p).translate(f.x, f.y).translate(-w.x, -w.y).rotate(-b._64O), p = D(R.b * Math.sign(m), R.a * Math.sign(m)), R.scale(B, P), X = Math.cos(p), J = Math.sin(p), Math.abs(X) < .001 ? (n = R.b / J, K = -R.c / J) : (n = R.a / X, K = R.d / X), "scale" === v) l.setScale(n / o, K / s); + else if ("size" === v) { + var M = n / u.x, + g = K / u.y; + l.setScale(he(n) * Math.abs(u.x), he(K) * Math.abs(u.y)), l.setSize(Math.max(.1, Math.abs(M)), Math.max(.1, Math.abs(g))) + } + R.rotate(b._64O).translate(w.x, w.y), l.setPosition(R.tx, R.ty) + } + }, bb.prototype.getMatrix = function () { + var e = this, + W = e._position, + $ = O.Default.getInternal(), + j = e._scale; + return new $.Mat(e._64O, W.x, W.y, j.x, j.y) + }, bb.prototype.toGlobal = function (M) { + return this.getMatrix().tf(M) + }, bb.prototype.getCorners = function () { + var R = this, + x = R._width, + t = R._height, + O = R._anchor, + k = -x * O.x, + w = -t * O.y, + J = R.getMatrix(); + return [J.tf(k, w), J.tf(k, w + t), J.tf(k + x, w + t), J.tf(k + x, w)] + }, bb.prototype.calcInfo = function () { + var f, L, F, o, u, W, $ = this, + V = [], + b = $._entities, + G = $._64O; + for (o = 0, u = b.length; u > o; o++) W = b[o], $.isNode(W) && W.getCorners && V.push.apply(V, W.getCorners()); + if (V.length) { + var P = Math.cos(-G), + Z = Math.sin(-G), + X = 1 / 0, + M = -1 / 0, + Y = 1 / 0, + J = -1 / 0; + for (o = 0, u = V.length; u > o; o++) F = V[o], f = F.x, L = F.y, F.x = P * f - Z * L, F.y = Z * f + P * L, X = Math.min(X, F.x), M = Math.max(M, F.x), Y = Math.min(Y, F.y), J = Math.max(J, F.y); + $._width = (M - X) / $._scale.x, $._height = (J - Y) / $._scale.y, P = Math.cos(G), Z = Math.sin(G); + var s = $._anchor; + f = X + (M - X) * s.x, L = Y + (J - Y) * s.y, $._position = { + x: P * f - Z * L, + y: Z * f + P * L + } + } + }, bb.prototype.isNode = function (n) { + return Fq(n) ? Th(n) ? n.size() ? !1 : !0 : !0 : !1 + }, bb.prototype._42 = function (N, Z, c) { + var R, u, s, q, X, E, P, $, j = this, + r = j._entities, + S = j.rotateMode; + for ("batch" === S && ($ = j.getKeyOb()), R = 0, u = r.length; u > R; R++) s = r[R], j.isNode(s) && (E = s.getRect(), q = se.toScreenPosition(c, { + x: E.x, + y: E.y + }), X = se.toScreenPosition(c, { + x: E.x + E.width, + y: E.y + E.height + }), P = { + min: q, + max: X + }, s === $ && (P.isKeyOb = !0), se.Icons.DrawIcon(N, Z, se.Icons.GroupSubEntityRect, P)) + }; + var bp = se.CurveActiving = function (T, r) { + this._curve = T, this._interactor = T._interactor, this.silent = !0; + for (var x in r) this[x] = r[x]; + delete this.silent + }; + bp.prototype = {}, bp.prototype.constructor = bp, o.defineProperties(bp.prototype, { + point: { + get: function () { + return this._point + }, set: function (S) { + var f = this; + f._point = S, f.editingCtrl || f.silent || f._firePointChange() + } + }, + pairs: { + get: function () { + return this._pairs + }, set: function (l) { + var J = this; + J._pairs = l, J.editingCtrl && !J.silent && J._firePointChange() + } + } + }), bp.prototype._firePointChange = function () { + var J = this, + j = J.getCurrentEditingPoint(), + i = J._interactor; + if (!j) return i.fi({ + kind: "selectPoint" + }), void 0; + var e = this._curve.target; + if (e) { + var o = se.getDataMatrix(e).invert(), + t = j.e; + j = o.apply(se.toWorldPosition(i.gv, j)), j.e = t; + var q = J._lastFirePoint; + q && Math.abs(j.x - q.x) < 1e-5 && Math.abs(j.y - q.y) < 1e-5 && (j.e == Z && q.e == Z || Math.abs(j.e - q.e) < 1e-5) || (J._lastFirePoint = j, i.fi({ + kind: "selectPoint", + x: j.x, + y: j.y, + e: j.e + })) + } + }, bp.prototype.dispose = function () { + this._interactor.fi({ + kind: "selectPoint" + }) + }, bp.prototype.getCurrentEditingPoint = function () { + var l = this, + d = l.editingCtrl; + if (d) { + var O = l.pairs; + if (O) { + var t = O[d.pairId]; + if (t) { + var S = t[d.type]; + if (S) return S + } + } + } + return l._point + }; + var Rf = se.CursorFactory = function (q) { + var V = this; + V._interactor = q, V._rotateCursorStyles = {} + }; + Rf.prototype = {}, Rf.prototype.constructor = Rf, Rf.prototype.getRotateCursor = function (E) { + var q = this; + 0 > E && (E += 2 * Math.PI); + var D = q._interactor, + o = D.getStyle("rotateCursorSize"), + c = D.getStyle("rotateCursorRound"), + U = Math.round(180 * (E / Math.PI) / c); + U * c >= 360 && (U = 0); + var A = q._rotateCursorStyles, + M = "htCustomRotateStyle_" + o + "_" + c + "_" + U; + return A[M] || (q._produceRotateCursor(M, o, c, U), A[M] = !0), M + }, Rf.prototype._produceRotateCursor = function (A, I, N, M) { + var E = this; + E._interactor; + var j = E._canvas; + j || (j = E._canvas = U.createElement("canvas")), j.width = j.height = I * devicePixelRatio, j.style.width = j.style.height = I + " px"; + var L = j.getContext("2d"); + se.setAntialias(L, !1), L.scale(devicePixelRatio, devicePixelRatio); + var e, o, X, z, B, S = Math.round(I / 2), + x = "" + S + " " + S + ",auto !important;", + D = 4; + e = Math.PI / 180 * M * N, L.clearRect(0, 0, I, I), L.save(), L.scale(I / 32, I / 32), L.translate(16, 15), L.rotate(e + Math.PI / 2), L.beginPath(), L.moveTo(-8, 0), L.lineTo(-8, D), L.lineTo(-8 + D, D), L.moveTo(8, 0), L.lineTo(8, D), L.lineTo(8 - D, D), L.moveTo(-8, D), L.quadraticCurveTo(0, -6, 8, D), L.restore(), L.lineCap = "round", L.lineJoin = "miter", L.strokeStyle = "white", L.lineWidth = 4, L.stroke(), L.strokeStyle = "black", L.lineWidth = 2, L.stroke(), o = JSON.stringify(j.toDataURL()), z = "cursor:url(" + o + ")" + x, 1 !== devicePixelRatio && (X = '', z += "cursor:url(data:image/svg+xml;base64," + btoa(X) + ")" + x, z += "cursor:-webkit-image-set(url(" + o + ")" + devicePixelRatio + "x,url(" + o + ")1x)" + x), B = U.createElement("style"), B.textContent = "body." + A + " *, ." + A + "{" + z + "}", U.head.appendChild(B) + }; + var pi = se.Guide.Grid = function (S) { + var W = this; + W._interactor = S, W._alignmentGuideId = 0, W._xAlignmentGuide = [], W._yAlignmentGuide = [] + }; + pi.prototype = {}, pi.prototype.constructor = pi, o.defineProperties(pi.prototype, { + gridBlockSize: { + get: function () { + var L = this; + return L._gridBlockSize || L._interactor.getStyle("gridBlockSize") + }, set: function (a) { + this._gridBlockSize = a, this._interactor._42() + } + }, + gridThickLinesEvery: { + get: function () { + var b = this; + return b._gridThickLinesEvery || b._interactor.getStyle("gridThickLinesEvery") + }, set: function (p) { + this._gridThickLinesEvery = p, this._interactor._42() + } + }, + gridEnabled: { + get: function () { + var R = this, + t = R._interactor; + return t.gridEnabled && R.isValidGrid() + } + } + }), pi.prototype._42 = function () { + var Q = this, + M = Q._interactor; + Q.gridEnabled && Q.drawGrid(), M.alignmentGuideEnabled && Q.drawAlignmentGuide() + }, pi.prototype.makeMatrix = function () { + var k = this, + i = k._interactor.getStyle("gridAngle"), + v = k._interactor.getStyle("gridRotation"), + R = new se.Math.Matrix2d, + u = Math.sin(i), + $ = Math.cos(i); + return R.set(1, 0, $, u, 0, 0), R.rotate(v), R + }, pi.prototype.isValidGrid = function () { + var d = this, + T = Math.PI, + O = d._interactor, + Y = O.gv; + if (Y._zoom < O.getStyle("gridZoomThreshold")) return !1; + var I = O.getStyle("gridAngle"), + b = Math.abs(180 * (I % T / T)), + C = 1 - 1e-8; + return C > b || b > 180 - C ? !1 : !0 + }, pi.prototype.drawAlignmentGuide = function () { + var $ = this, + C = $._interactor, + l = C.gv, + Q = C._canvas, + k = C._context, + x = Q.width, + M = Q.height, + i = l.tx(), + K = l.ty(), + n = l._zoom; + k.beginPath(), k.strokeStyle = C.getStyle("gridAlignmentGuideColor"), k.lineWidth = 1, $._xAlignmentGuide.forEach(function (r) { + var L = r.p * n + i; + k.moveTo(L, 0), k.lineTo(L, M) + }), $._yAlignmentGuide.forEach(function (M) { + var _ = M.p * n + K; + k.moveTo(0, _), k.lineTo(x, _) + }), k.stroke() + }, pi.prototype.drawGrid = function () { + function g(T, $, F, m) { + var K = se.toScreenPosition(i, v.apply({ + x: T, + y: $ + })), + t = se.toScreenPosition(i, v.apply({ + x: F, + y: m + })); + c.moveTo(K.x, K.y), c.lineTo(t.x, t.y) + } + var Y = this, + s = Y._interactor, + F = Y.gridBlockSize, + P = Y.gridThickLinesEvery, + o = s.getStyle("gridThickColor"), + t = s.getStyle("gridLightColor"), + i = s.gv, + X = s._canvas, + c = s._context, + z = X.width, + h = X.height, + v = Y.makeMatrix(), + Q = v.applyInverse(se.toWorldPosition(i, { + x: 0, + y: 0 + })), + I = v.applyInverse(se.toWorldPosition(i, { + x: z, + y: 0 + })), + n = v.applyInverse(se.toWorldPosition(i, { + x: 0, + y: h + })), + f = v.applyInverse(se.toWorldPosition(i, { + x: z, + y: h + })), + u = Math.min(Q.x, I.x, n.x, f.x), + S = Math.max(Q.x, I.x, n.x, f.x), + a = Math.min(Q.y, I.y, n.y, f.y), + C = Math.max(Q.y, I.y, n.y, f.y); + z = S - u, h = C - a; + var K = Math.ceil(u / F), + d = Math.floor(S / F), + T = Math.ceil(a / F), + $ = Math.floor(C / F); + i.tx(), i.ty(), i._zoom; + var j, D, r; + for (c.save(), c.lineWidth = 1, c.beginPath(), c.strokeStyle = o, r = Math.ceil(K / P) * P; d >= r; r += P) j = r * F, g(j, a, j, C); + for (r = Math.ceil(T / P) * P; $ >= r; r += P) D = r * F, g(u, D, S, D); + for (c.stroke(), c.beginPath(), c.strokeStyle = t, r = K; d >= r; r++) 0 !== r % P && (j = r * F, g(j, a, j, C)); + for (r = T; $ >= r; r++) 0 !== r % P && (D = r * F, g(u, D, S, D)); + c.stroke(), c.restore() + }, pi.prototype.getAlignmentGuides = function () { + var Q = this; + return { + x: Q._xAlignmentGuide, + y: Q._yAlignmentGuide + } + }, pi.prototype.addAlignmentGuide = function (t, g, A) { + var B = this, + y = "x" === t ? B._xAlignmentGuide : B._yAlignmentGuide, + A = A ? A : ++B._alignmentGuideId, + G = { + p: g, + id: A + }; + if (y.length) { + var K = B._findClosestAlignmentGuide(G.p, y); + K.dis < 0 ? y.splice(K.index + 1, 0, G) : y.splice(K.index, 0, G) + } else y.push(G); + return B._interactor._42(), A + }, pi.prototype.findClosest = function (K, n, F) { + var k = this, + U = k._interactor, + i = U.gv; + F && (K = se.toWorldPosition(i, K)); + var H, b, f, X = 1 / 0, + r = 1 / 0, + h = K.x, + u = K.y; + if (k.gridEnabled) { + var S = k.gridBlockSize, + R = k.makeMatrix(), + W = R.applyInverse(K); + W = R.apply({ + x: Math.round(W.x / S) * S, + y: Math.round(W.y / S) * S + }), X = W.x - h, r = W.y - u, f = !0 + } + if (U.alignmentGuideEnabled && (H = k._findClosestAlignmentGuide(h, k._xAlignmentGuide).dis, b = k._findClosestAlignmentGuide(u, k._yAlignmentGuide).dis, Math.abs(H) < Math.abs(X) && (X = H, f = !0), Math.abs(b) < Math.abs(r) && (r = b, f = !0)), f) { + f = !1; + var E = i._zoom, + p = U.getStyle("smartGuideThreshold") / E, + $ = {}; + if (Math.abs(X) < p && "y" !== n && ($.x = F ? X * E : X, f = !0), Math.abs(r) < p && "x" !== n && ($.y = F ? r * E : r, f = !0), f) return $ + } + }, pi.prototype._findClosestAlignmentGuide = function (B, N) { + if (!N.length) return { + dis: 1 / 0 + }; + for (var G, V = 0, b = N.length - 1; b - V > 1;) G = Math.floor((V + b) / 2), N[G].p < B ? V = G : b = G; + var D = N[V].p - B, + l = N[b].p - B; + return Math.abs(D) <= Math.abs(l) ? { + line: N[V], + dis: D, + index: V + } : { + line: N[b], + dis: l, + index: b + } + }, pi.prototype.removeAllAlignmentGuide = function (k) { + var B = this; + "y" !== k && (B._xAlignmentGuide = []), "x" !== k && (B._yAlignmentGuide = []), B._interactor._42() + }, pi.prototype.removeAlignmentGuide = function (c) { + for (var L, A, U, V = this, g = V._xAlignmentGuide, F = 0; 2 > F; F++) + for (g = 0 === F ? V._xAlignmentGuide : V._yAlignmentGuide, L = 0, A = g.length; A > L; L++) + if (U = g[L], U.id === c) return g.splice(L, 1), V._interactor._42(), { + axis: 0 === F ? "x" : "y", + position: U.p + }; + return !1 + }, pi.prototype.adjustAlignmentGuide = function (X, V) { + var D = this, + y = D.removeAlignmentGuide(X); + return y ? (D.addAlignmentGuide(y.axis, V, X), !0) : !1 + }; + var yf = se.Guide.Rect = function (i) { + var $ = this; + $._interactor = i + }; + yf.prototype = {}, yf.prototype.constructor = yf, yf.prototype.gatherRects = function () { + var O, E, l, Q, j = this, + t = j._interactor.gv, + V = [], + s = [], + M = { + x: V, + y: s + }, + m = {}, + K = t.getDataModel(), + F = K.a("width"), + v = K.a("height"); + F && v && (O = 0, E = 0, l = F, Q = v, V.push({ + node: K, + type: 0, + p: O + }, { + node: K, + type: 1, + p: O + l / 2 + }, { + node: K, + type: 2, + p: O + l + }), s.push({ + node: K, + type: 0, + p: E + }, { + node: K, + type: 1, + p: E + Q / 2 + }, { + node: K, + type: 2, + p: E + Q + }), m[K._id || 0] = { + x: O, + y: E, + width: l, + height: Q + }), K.each(function (L) { + if (Fq(L) && !t.isSelected(L) && t.isVisible(L) && t.isValidGuideLineSource(L)) { + var W = !1; + if (t.sm().getSelection().each(function (I) { + W || (L.isHostOn(I) ? W = !0 : L.isDescendantOf(I) && (W = !0)) + }), !W) { + var u = L.getRect(); + O = u.x, E = u.y, l = u.width, Q = u.height, V.push({ + node: L, + type: 0, + p: O + }, { + node: L, + type: 1, + p: O + l / 2 + }, { + node: L, + type: 2, + p: O + l + }), s.push({ + node: L, + type: 0, + p: E + }, { + node: L, + type: 1, + p: E + Q / 2 + }, { + node: L, + type: 2, + p: E + Q + }), m[L._id] = u + } + } + }), V.sort(function (y, i) { + return y.p - i.p + }), s.sort(function (x, r) { + return x.p - r.p + }), j._grid = M, j._87I = m + }, yf.prototype.gatherLines = function (R, $, Q) { + var k, r, u, T, F, G, U, z, X, x, a, y, q = this, + i = [q.findClosest({ + x: R.x, + y: R.y + }, $), q.findClosest({ + x: R.x + R.w / 2, + y: R.y + R.h / 2 + }, $), q.findClosest({ + x: R.x + R.w, + y: R.y + R.h + }, $)], + V = {}, + g = q._87I; + Q = Q || 255; + var N, o; + for (q._guideLine = [], k = 0; 2 > k; k++) + for (V = {}, 0 === k ? (T = "y", z = R.x, X = z + R.w) : (T = "x", z = R.y, X = z + R.h), r = 0; 3 > r; r++) F = i[r], F && isFinite(F[T]) && (N = 1 << 3 * k + r, Q & N && (G = F[T + "Line"], U = G.node, o = U._id || 0, V[o] || (V[o] = !0, y = g[o], "y" === T ? (x = y.x, a = y.x + y.width) : (x = y.y, a = y.y + y.height), u = G.p, q._guideLine.push({ + type: T, + a: z, + b: X, + c: x, + d: a, + p: u, + center: 1 === G.type + })))) + }, yf.prototype._binarySearchClosest = function (N, j) { + if (!j.length) return { + dis: 1 / 0 + }; + for (var $, p = 0, n = j.length - 1; n - p > 1;) $ = Math.floor((p + n) / 2), j[$].p < N ? p = $ : n = $; + var t = j[p].p - N, + D = j[n].p - N; + return Math.abs(t) <= Math.abs(D) ? { + line: j[p], + dis: t + } : { + line: j[n], + dis: D + } + }, yf.prototype.findClosest = function (p, i, f) { + var V = this, + G = V._interactor, + e = G.gv, + L = V._grid; + f && (p = se.toWorldPosition(e, p)); + var b, t = V._binarySearchClosest(p.x, L.x), + m = V._binarySearchClosest(p.y, L.y), + J = t.dis, + C = m.dis, + M = e._zoom, + w = G.getStyle("smartGuideThreshold") / M, + $ = {}; + return Math.abs(J) < w && "y" !== i && ($.x = f ? J * M : J, $.xLine = t.line, b = !0), Math.abs(C) < w && "x" !== i && ($.y = f ? C * M : C, $.yLine = m.line, b = !0), b ? $ : void 0 + }, yf.prototype._42 = function () { + var C = this, + T = C._guideLine; + if (T && !O.Default.isCtrlDown()) { + var $ = C._interactor; + if ($.getStyle("guideLineVisible")) { + var _, I, G, R, E, V, m, o, l, c, P, K, M, H, W, Q, U, B = $.gv, + J = $._context, + k = B.tx(), + p = B.ty(), + A = B._zoom, + r = $.getStyle("guideLineTextSpacing"); + for (_ = 0, I = T.length; I > _; _++) G = T[_], o = G.type, l = G.p, c = G.a, P = G.b, K = G.c, M = G.d, H = Math.min(c, K), W = Math.max(P, M), "x" === o ? (R = l * A + k, E = H * A + p, V = R, m = W * A + p) : (R = H * A + k, E = l * A + p, V = W * A + k, m = E), se.Icons.DrawIcon($, J, se.Icons.MoveLineGuide, { + rect: [R, E, V, m], + center: G.center + }), M >= c && P >= K || (H = c > M ? M : P, W = c > M ? c : K, U = W - H, "x" === o ? (G.center2center || (R -= r, V = R), E = H * A + p, m = W * A + p, Q = se.Icons.MoveLineGuideDistanceV) : "y" === o && (G.center2center || (E -= r, m = E), R = H * A + k, V = W * A + k, Q = se.Icons.MoveLineGuideDistanceH), se.Icons.DrawIcon($, J, Q, { + x0: R, + y0: E, + x1: V, + y1: m, + dis: U + })) + } + } + }, yf.prototype.clear = function () { + this._guideLine = null + }; + var Aq = se.Guide.Hover = function (p) { + var v = this; + v._interactor = p + }; + Aq.prototype = {}, Aq.prototype.constructor = Aq, o.defineProperties(Aq.prototype, {}), Aq.prototype._42 = function () { + var b = this._interactor; + if (b.getStyle("hoverGuideVisible") && !b.gvEditing) { + var g = b.hoverData, + Y = b.gv; + if (!Fq(g) || Y.isSelected(g)) return b.hoverData = null, void 0; + var t = Rp(Y, g), + G = se.toScreenPosition(Y, { + x: t.x, + y: t.y + }), + L = se.toScreenPosition(Y, { + x: t.x + t.width, + y: t.y + t.height + }); + se.Icons.DrawIcon(b, b._context, se.Icons.HoverDataRect, { + min: G, + max: L, + color: b.getStyle("hoverGuideColor") || b.getStyle("baseColor") + }) + } + }, se.DefaultStyleMap = { + baseColor: "rgb(51,153,255)", + pointSize: [24, 9], + checkSize: 7, + rotateCheckSize: 10, + moveSensitivity: 10, + moveDummyThreshold: 32, + moveDummyPosition: [0, 0, -16, -16], + moveDummyLineExtraShift: [-32, 0], + moveDummySensitivity: 16, + keepAspectRatio: !1, + rotateRound: Math.PI / 2, + shiftRotateRound: Math.PI / 12, + rotateSensitivity: Math.PI / 60, + rotateAsClock: !1, + shiftLineRotateRound: Math.PI / 4, + anchorMovable: !0, + anchorVisible: !0, + anchorHideThreshold: 25, + anchorOutsideVisibleThreshold: .25, + anchorRound: .25, + anchorSensitivity: .02, + smartGuideThreshold: 8, + curveIntersectSize: 5, + curvePointIntersectSize: 8, + edgeHostDetectPerFrame: !0, + edgeHostEdgeMaxDistance: 12, + edgeHostEdgeHighlighColor: "#5d5d5d", + edgeHostPointHighlighColor: "red", + edgeHostHighlighPeriod: 1500, + edgeElevationEditable: !1, + attachThreshold: 25, + guideLineVisible: !0, + guideLineTextSpacing: 0, + hoverGuideVisible: !1, + hoverGuideColor: null, + gridBlockSize: 40, + gridThickLinesEvery: 10, + gridThickColor: "#5d5d5d", + gridLightColor: "#d0d0d0", + gridZoomThreshold: .25, + gridAlignmentGuideColor: "#ff0000", + gridAngle: Math.PI / 2, + gridRotation: 0, + groupRotateModeDefault: "block", + groupRotateModeKey: ["ctrlKey", "metaKey"], + rotateCursorSize: 32, + rotateCursorRound: 45, + tipTextColor: "#ffffff", + tipBackground: "#333333", + curveHighlightColor: "#30599e", + rectPointBackground: "white", + rectPointBorderColor: "#666666", + rectPointShadowColor: "rgba(0,0,0,0.35)", + shapeCtrlPointBackground: "white", + shapeCtrlPointBorderColor: null, + shapeCtrlPointHighlightBorder: null, + shapeHighlighPointBackground: "#30599e", + curveElevationVisible: !0, + curveElevationIntersectSize: 8, + curveElevationGuideShift: [20, 0], + curveTipVisible: !0, + connectGuideVisible: !0, + connectGuideShift: [1, .25, 8, 0], + connectGuideIntersectSize: 8, + connectGuideGarbageIntersectsize: 25, + connectGuideGarbageShift: [1, 1, -48, -48] + }; + var Kp = se.Icons = {}, + bs = 1e4, + je = null, + ci = se.DefaultStyleMap.baseColor, + Sb = "rgb(183,232,135)", + yk = "rgb(255,204,153)", + ho = 6; + O.Default.setImage("Icons.RectPoint", { + width: ho, + height: ho, + comps: [{ + type: "rect", + background: "rgb(247,247,247)", + borderWidth: 1, + borderColor: { + func: function () { + return ci + } + }, + rect: [0, 0, ho, ho] + }] + }), Kp.GroupSubEntityRect = { + comps: [{ + type: "shape", + points: { + func: function () { + var Y = Kp.GroupSubEntityRect.data; + if (!Y) return []; + var S = Y.min, + I = Y.max; + return [S.x, S.y, S.x, I.y, I.x, I.y, I.x, S.y] + } + }, + segments: [1, 2, 2, 2, 5], + background: null, + borderWidth: 1, + borderColor: { + func: function () { + return Kp.GroupSubEntityRect.data.isKeyOb ? ci : ci + } + } + }] + }; + var ak = 4; + Kp.HoverDataRect = { + comps: [{ + type: "shape", + points: { + func: function () { + var D = Kp.HoverDataRect.data; + if (!D) return []; + var b = D.min, + G = D.max, + J = ak; + return b.x -= J, b.y -= J, G.x += J, G.y += J, [b.x, b.y, b.x, G.y, G.x, G.y, G.x, b.y] + } + }, + segments: [1, 2, 2, 2, 5], + background: null, + borderWidth: 1, + borderColor: { + func: function () { + return Kp.HoverDataRect.data.color + } + }, + borderCap: "round", + borderPattern: [1, 4] + }] + }, Kp.Line = { + comps: [{ + type: "image", + name: "Icons.RectPoint", + rect: { + func: function () { + return [[Kp.Line.data.P1.x, Kp.Line.data.P1.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rect: { + func: function () { + return [[Kp.Line.data.P2.x, Kp.Line.data.P2.y], ho, ho] + } + } + }] + }, Kp.NodeHoverGuide = { + comps: [{ + type: "shape", + points: { + func: function () { + return Kp.NodeHoverGuide.data + } + }, + segments: [1, 2, 2, 2, 5], + background: null, + borderWidth: 1, + borderColor: "#3399FF" + }] + }, Kp.Rect = { + comps: [{ + type: "shape", + points: { + func: function () { + var n = Kp.Rect.data; + if (!n) return []; + var h = n.LT, + V = n.LB, + o = n.RB, + C = n.RT; + return [h.x, h.y, V.x, V.y, o.x, o.y, C.x, C.y] + } + }, + segments: [1, 2, 2, 2, 5], + background: null, + borderWidth: 1, + borderColor: { + func: function () { + return ci + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.LT.x, Kp.Rect.data.LT.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.LB.x, Kp.Rect.data.LB.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.RB.x, Kp.Rect.data.RB.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.RT.x, Kp.Rect.data.RT.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + visible: { + func: function () { + return Kp.Rect.data.L ? !0 : !1 + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.L.x, Kp.Rect.data.L.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + visible: { + func: function () { + return Kp.Rect.data.R ? !0 : !1 + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.R.x, Kp.Rect.data.R.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + visible: { + func: function () { + return Kp.Rect.data.T ? !0 : !1 + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.T.x, Kp.Rect.data.T.y], ho, ho] + } + } + }, { + type: "image", + name: "Icons.RectPoint", + rotation: { + func: function () { + return Kp.Rect.data.rotation + } + }, + visible: { + func: function () { + return Kp.Rect.data.B ? !0 : !1 + } + }, + rect: { + func: function () { + return [[Kp.Rect.data.B.x, Kp.Rect.data.B.y], ho, ho] + } + } + }] + }; + var Bs = 16; + O.Default.setImage("Icons.Anchor", { + width: 12, + height: 12, + comps: [{ + type: "shape", + borderWidth: 1, + borderColor: { + func: function () { + return ci + } + }, + borderCap: "round", + shadowColor: "#1ABC9C", + points: [.50928, 6, 11.49072, 6, 6, 6, 6, .50928, 6, 11.49072] + }, { + type: "circle", + borderWidth: 1, + borderColor: { + func: function () { + return ci + } + }, + shadowColor: "#1ABC9C", + rect: [2.84391, 2.84391, 6.53697, 6.53697] + }] + }), Kp.Anchor = { + comps: [{ + type: "image", + name: "Icons.Anchor", + rect: { + func: function () { + return [[Kp.Anchor.data.POS.x, Kp.Anchor.data.POS.y], Bs, Bs] + } + } + }] + }, Kp.TipShiftX = 12, Kp.TipShiftY = 12; + var yr = [8, 28]; + Kp.TipHelper = { + comps: [{ + type: "roundRect", + rect: { + func: function () { + return [Kp.TipHelper.data.helperPos.x, Kp.TipHelper.data.helperPos.y, yr[0] * Kp.TipHelper.data.size, yr[1]] + } + }, + background: { + func: function () { + return je.getStyle("tipBackground") + } + }, + opacity: .6 + }, { + type: "text", + text: { + func: function () { + return Kp.TipHelper.data.text + } + }, + rect: { + func: function () { + return [Kp.TipHelper.data.helperPos.x, Kp.TipHelper.data.helperPos.y, yr[0] * Kp.TipHelper.data.size, yr[1]] + } + }, + color: { + func: function () { + return je.getStyle("tipTextColor") + } + }, + font: "bold 12px Arial", + align: "center" + }] + }; + var Ih = 7; + Kp.ShapePoint = { + comps: [{ + type: "circle", + visible: { + func: function () { + return !!Kp.ShapePoint.data.dynamicVisible + } + }, + rect: { + func: function () { + var x = Kp.ShapePoint.data.point, + y = Kp.ShapePoint.data.size || Ih; + return [x, y + 10, y + 10] + } + }, + background: { + func: function () { + var L = Date.now(), + P = Kp.ShapePoint.data.dynamicPeriod || 1500, + p = Math.sin(L % P / P * Math.PI); + return "rgba(27,124,22," + .5 * p + ")" + } + }, + borderWidth: 0 + }, { + type: "circle", + rect: { + func: function () { + var r = Kp.ShapePoint.data.point, + I = Kp.ShapePoint.data.size || Ih; + return [r, I, I] + } + }, + background: { + func: function () { + var l = Kp.ShapePoint.data.isEnd; + return l ? "rgba(27,124,222,0.7)" : "#ffffff" + } + }, + borderWidth: 1, + borderColor: { + func: function () { + return Kp.ShapePoint.data.color || ci + } + } + }, { + type: "rect", + visible: { + func: function () { + return !!Kp.ShapePoint.data.dynamicVisible + } + }, + background: "red", + borderWidth: 0, + rotation: Math.PI / 4, + borderColor: { + func: function () { + return ci + } + }, + rect: { + func: function () { + var I = 5; + return [Kp.ShapePoint.data.point, I, I] + } + } + }] + }, Kp.ShapeBgCurve = { + comps: [{ + type: "shape", + visible: { + func: function () { + return !!Kp.ShapeBgCurve.data.dynamicVisible + } + }, + points: { + func: function () { + return Kp.ShapeBgCurve.data.P + } + }, + segments: { + func: function () { + return Kp.ShapeBgCurve.data.S + } + }, + background: null, + borderWidth: 6, + borderColor: { + func: function () { + var L = Date.now(), + A = Kp.ShapeBgCurve.data.dynamicPeriod || 1500, + J = Math.sin(L % A / A * Math.PI); + return "rgba(27,124,22," + .3 * J + ")" + } + } + }, { + type: "shape", + points: { + func: function () { + return Kp.ShapeBgCurve.data.P + } + }, + segments: { + func: function () { + return Kp.ShapeBgCurve.data.S + } + }, + background: null, + borderWidth: 1, + borderColor: { + func: function () { + return Kp.ShapeBgCurve.data.color || ci + } + } + }] + }; + var Lf = 8; + Kp.ShapeHighlighPoint = { + comps: [{ + type: "circle", + rect: { + func: function () { + var T = Kp.ShapeHighlighPoint.data; + return [[T.x, T.y], Lf, Lf] + } + }, + background: { + func: function () { + return je.getStyle("shapeHighlighPointBackground") + } + }, + borderWidth: 0 + }] + }; + var rn = 10; + Kp.ShapeHighlighRealPoint = { + comps: [{ + type: "circle", + rect: { + func: function () { + var n = Kp.ShapeHighlighRealPoint.data; + return [[n.x, n.y], rn, rn] + } + }, + background: "#ffffff", + borderWidth: 2, + borderColor: { + func: function () { + return ci + } + } + }] + }; + var qi = 8; + Kp.ShapeHighlighCtrlPoint = { + comps: [{ + type: "shape", + points: { + func: function () { + var c = Kp.ShapeHighlighCtrlPoint.data, + m = c.x, + j = c.y, + o = qi / 2; + return [m - o, j - o, m - o, j + o, m + o, j + o, m + o, j - o] + } + }, + segments: [1, 2, 2, 2, 5], + borderWidth: 2, + background: { + func: function () { + return je.getStyle("shapeCtrlPointBackground") + } + }, + borderColor: { + func: function () { + return je.getStyle("shapeCtrlPointBorderColor") || ci + } + } + }] + }; + var or = 3; + Kp.ShapeHighlightCurve = { + comps: [{ + type: "shape", + points: { + func: function () { + return Kp.ShapeHighlightCurve.data + } + }, + segments: [1, 4], + background: null, + borderWidth: or, + borderColor: { + func: function () { + return je.getStyle("curveHighlightColor") + } + } + }] + }, Kp.ShapeGuideLine = { + comps: [{ + type: "shape", + points: { + func: function () { + return Kp.ShapeGuideLine.data + } + }, + background: null, + borderWidth: 1, + borderColor: "rgb(255,204,153)" + }] + }, Kp.MoveLineGuide = { + comps: [{ + type: "shape", + points: { + func: function () { + return Kp.MoveLineGuide.data.rect + } + }, + background: null, + borderWidth: 1, + borderColor: { + func: function () { + return Kp.MoveLineGuide.data.center ? Sb : yk + } + } + }] + }; + var ei = 5; + Kp.MoveLineGuideDistanceH = { + comps: [{ + type: "shape", + points: { + func: function () { + var y = Kp.MoveLineGuideDistanceH.data, + n = y.x0, + v = y.y0; + return [n, v - ei, n, v + ei] + } + }, + rotation: -Math.PI / 4, + segments: [1, 2], + background: null, + borderWidth: 1, + borderColor: yk + }, { + type: "shape", + points: { + func: function () { + var R = Kp.MoveLineGuideDistanceH.data, + c = R.x1, + D = R.y1; + return [c, D - ei, c, D + ei] + } + }, + rotation: -Math.PI / 4, + segments: [1, 2], + background: null, + borderWidth: 1, + borderColor: yk + }, { + type: "text", + text: { + func: function () { + return Math.round(Kp.MoveLineGuideDistanceH.data.dis) + } + }, + rect: { + func: function () { + var T = Kp.MoveLineGuideDistanceH.data; + return [[(T.x0 + T.x1) / 2, T.y0 - 10], 20, 20] + } + }, + color: yk, + font: "12px Arial", + align: "center" + }] + }, Kp.MoveLineGuideDistanceV = { + comps: [{ + type: "shape", + points: { + func: function () { + var p = Kp.MoveLineGuideDistanceV.data, + I = p.x0, + D = p.y0; + return [I - ei, D, I + ei, D] + } + }, + rotation: Math.PI / 4, + segments: [1, 2], + background: null, + borderWidth: 1, + borderColor: yk + }, { + type: "shape", + points: { + func: function () { + var o = Kp.MoveLineGuideDistanceV.data, + g = o.x1, + b = o.y1; + return [g - ei, b, g + ei, b] + } + }, + rotation: Math.PI / 4, + segments: [1, 2], + background: null, + borderWidth: 1, + borderColor: yk + }, { + type: "text", + text: { + func: function () { + return Math.round(Kp.MoveLineGuideDistanceV.data.dis) + } + }, + rect: { + func: function () { + var G = Kp.MoveLineGuideDistanceV.data; + return [[G.x0 - 10, (G.y0 + G.y1) / 2], 20, 20] + } + }, + color: yk, + font: "12px Arial", + align: "center" + }] + }, O.Default.setImage("Icons.EdgeElevationGuideImage", { + width: 16, + height: 16, + comps: [{ + type: "oval", + background: "rgb(255,255,255)", + borderWidth: 1, + borderColor: "rgb(138,138,138)", + rect: [.5, .5, 15, 15] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(44,44,44)", + borderCap: "round", + points: [4, 8, 8, 4, 12, 8, 8, 4, 8, 13], + segments: [1, 2, 2, 1, 2] + }] + }), Kp.EdgeElevationGuide = { + comps: [{ + type: "image", + name: "Icons.EdgeElevationGuideImage", + rect: { + func: function () { + var j = Kp.EdgeElevationGuide.data, + v = j.x, + s = j.y, + M = je.getStyle("curveElevationIntersectSize"), + c = je.getStyle("curveElevationGuideShift"); + return v += c[0], s += c[1], [v - M, s - M, 2 * M, 2 * M] + } + } + }] + }, O.Default.setImage("Icons.ConnectGuideBgImage", { + width: 12, + height: 12, + comps: [{ + type: "shape", + background: "#3399ff", + fillRule: "evenodd", + shadowColor: "#1ABC9C", + rotation: 3.14159, + points: [6.00001, 11.99999, 6.00001, 11.99999, 2.6863, 11.99999, 1e-5, 9.30695, 1e-5, 5.99999, 1e-5, 5.99999, 1e-5, 2.68628, 2.69305, -1e-5, 6.00001, -1e-5, 12.00001, -1e-5, 11.99998, 12.00001, 6.00001, 11.99999], + segments: [1, 2, 4, 2, 4, 2, 2, 2] + }] + }), O.Default.setImage("Icons.ConnectGuideHeaderImage", { + width: 12, + height: 12, + comps: [{ + type: "oval", + background: "#3399FF", + borderColor: "#3399FF", + shadowColor: "#1ABC9C", + rect: [0, 0, 12, 12] + }, { + type: "shape", + borderWidth: 1, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [4.76, 2.56, 8.2, 5.98, 4.76, 9.44] + }] + }), Kp.ConnectGuide = { + comps: [{ + type: "image", + name: "Icons.ConnectGuideBgImage", + rotation: { + func: function () { + return Kp.ConnectGuide.data.rotation + } + }, + rect: { + func: function () { + var N = Kp.ConnectGuide.data.connect; + N.x, N.y; + var i = je.getStyle("connectGuideIntersectSize"); + return [[N.x, N.y], 2 * i, 2 * i] + } + } + }, { + type: "image", + name: "Icons.ConnectGuideHeaderImage", + rect: { + func: function () { + var V = Kp.ConnectGuide.data.cursorPos || Kp.ConnectGuide.data.connect, + r = je.getStyle("connectGuideIntersectSize"); + return [[V.x, V.y], 2 * r - 2, 2 * r - 2] + } + } + }, { + type: "shape", + background: null, + borderColor: "#3399ff", + borderWidth: 2, + segments: [1, 4], + points: { + func: function () { + var E = Kp.ConnectGuide.data.connect, + F = Kp.ConnectGuide.data.cursorPos || E; + return [E.x, E.y, E.x + .5 * (F.x - E.x), E.y, F.x + .5 * (E.x - F.x), F.y, F.x, F.y] + } + } + }] + }, O.Default.setImage("Icons.ConnectGuideGarbageImage", { + width: 48, + height: 48, + comps: [{ + type: "oval", + background: "rgba(0,0,0,0.1)", + borderColor: "#979797", + shadowColor: "#1ABC9C", + rect: [0, 0, 48, 48] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [19.84721, 19.69091, 19.84721, 32.25123] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [24.10371, 19.69091, 24.10371, 32.25123] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [28.15279, 19.69091, 28.15279, 32.25123] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [11.23055, 15.22377, 36.76945, 15.189, 19.12302, 15.17121, 20.94722, 11.5228, 26.41985, 11.5228, 28.24406, 15.17121] + }, { + type: "rect", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + shadowColor: "#1ABC9C", + rect: [15.48702, 15.22377, 17.02595, 21.25344] + }] + }), O.Default.setImage("Icons.ConnectGuideDeletingImage", { + width: 56, + height: 56, + comps: [{ + type: "oval", + background: "rgba(232,0,0,0.75)", + borderColor: "#979797", + shadowColor: "#1ABC9C", + rect: [0, 0, 56, 56] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [22.67939, 27.69091, 22.67939, 40.25123] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [26.93588, 27.69091, 26.93588, 40.25123] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + points: [30.98497, 27.69091, 30.98497, 40.25123] + }, { + type: "shape", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + borderCap: "round", + shadowColor: "#1ABC9C", + anchorX: 0, + anchorY: 1, + rotation: 5.65062, + points: [14.06272, 23.22377, 39.60163, 23.189, 21.9552, 23.17121, 23.7794, 19.5228, 29.25203, 19.5228, 31.07623, 23.17121] + }, { + type: "rect", + borderWidth: 2, + borderColor: "rgb(255,255,255)", + shadowColor: "#1ABC9C", + rect: [18.3192, 23.22377, 17.02595, 21.25344] + }] + }), Kp.ConnectGuideGarbage = { + comps: [{ + type: "image", + name: { + func: function () { + var Q = Kp.ConnectGuideGarbage.data.hover; + return Q ? "Icons.ConnectGuideDeletingImage" : "Icons.ConnectGuideGarbageImage" + } + }, + rect: { + func: function () { + var d = Kp.ConnectGuideGarbage.data, + n = je.getStyle("connectGuideGarbageIntersectsize"); + return d.hover && (n += 5), [[d.x, d.y], 2 * n, 2 * n] + } + } + }] + }; + var ae = 6; + Kp.ShapeActivingCtrl = { + comps: [{ + type: "shape", + visible: { + func: function () { + return Kp.ShapeActivingCtrl.data.c1 ? !0 : !1 + } + }, + points: { + func: function () { + var h = Kp.ShapeActivingCtrl.data; + return [h.point.x, h.point.y, h.c1.x, h.c1.y] + } + }, + segments: [1, 2], + background: null, + borderWidth: 1, + borderColor: { + func: function () { + return ci + } + } + }, { + type: "shape", + visible: { + func: function () { + return Kp.ShapeActivingCtrl.data.c2 ? !0 : !1 + } + }, + points: { + func: function () { + var K = Kp.ShapeActivingCtrl.data; + return [K.point.x, K.point.y, K.c2.x, K.c2.y] + } + }, + segments: [1, 2], + background: null, + borderWidth: 1, + borderColor: { + func: function () { + return ci + } + } + }, { + type: "shape", + visible: { + func: function () { + return Kp.ShapeActivingCtrl.data.c1 ? !0 : !1 + } + }, + points: { + func: function () { + var x = Kp.ShapeActivingCtrl.data.c1, + f = x.x, + Q = x.y, + b = ae / 2; + return "c1" === Kp.ShapeActivingCtrl.data.hl && (b += .5), [f - b, Q - b, f - b, Q + b, f + b, Q + b, f + b, Q - b] + } + }, + segments: [1, 2, 2, 2, 5], + borderWidth: 2, + background: { + func: function () { + return je.getStyle("shapeCtrlPointBackground") + } + }, + borderColor: { + func: function () { + return "c1" === Kp.ShapeActivingCtrl.data.hl ? je.getStyle("shapeCtrlPointHighlightBorder") || ci : je.getStyle("shapeCtrlPointBorderColor") || ci + } + } + }, { + type: "shape", + visible: { + func: function () { + return Kp.ShapeActivingCtrl.data.c2 ? !0 : !1 + } + }, + points: { + func: function () { + var R = Kp.ShapeActivingCtrl.data.c2, + k = R.x, + X = R.y, + N = ae / 2; + return "c2" === Kp.ShapeActivingCtrl.data.hl && (N += .5), [k - N, X - N, k - N, X + N, k + N, X + N, k + N, X - N] + } + }, + segments: [1, 2, 2, 2, 5], + borderWidth: 2, + background: { + func: function () { + return je.getStyle("shapeCtrlPointBackground") + } + }, + borderColor: { + func: function () { + return "c2" === Kp.ShapeActivingCtrl.data.hl ? je.getStyle("shapeCtrlPointHighlightBorder") || ci : je.getStyle("shapeCtrlPointBorderColor") || ci + } + } + }] + }, Kp.RoundPoint = { + comps: [{ + type: "circle", + background: "rgb(247,247,247)", + borderWidth: 1, + borderColor: { + func: function () { + return ci + } + }, + rect: { + func: function () { + return [[Kp.RoundPoint.data.x, Kp.RoundPoint.data.y], ho, ho] + } + } + }] + }, Kp.AttachPoint = { + comps: [{ + type: "rect", + background: { + func: function () { + return Kp.AttachPoint.data.isAttach ? "rgb(51,153,255)" : "rgb(247,247,247)" + } + }, + borderWidth: 1, + rotation: Math.PI / 4, + borderColor: { + func: function () { + return ci + } + }, + rect: { + func: function () { + var i = Kp.AttachPoint.data.isAttach ? ho + 4 : ho; + return [[Kp.AttachPoint.data.x, Kp.AttachPoint.data.y], i, i] + } + } + }] + }, Kp.SimpleRect = { + comps: [{ + type: "rect", + background: null, + borderWidth: { + func: function () { + return Kp.SimpleRect.data.borderWidth || 1 + } + }, + borderColor: { + func: function () { + return Kp.SimpleRect.data.color || ci + } + }, + rect: { + func: function () { + var J = Kp.SimpleRect.data; + return [J.x, J.y, J.width, J.height] + } + } + }] + }, O.Default.setImage("Icons.MoveDummyImage", { + width: 32, + height: 32, + boundExtend: 12, + attachStyle: "close", + comps: [{ + type: "oval", + background: "rgb(255,255,255)", + borderColor: "#979797", + shadow: !0, + shadowColor: "rgba(0,0,0,0.25)", + shadowOffsetX: 0, + rect: [0, 0, 32, 32] + }, { + type: "shape", + background: "rgb(51,153,255)", + pixelPerfect: !0, + points: [8.65079, 11.90713, 9.05502, 11.46921, 9.70629, 11.46921, 10.11052, 11.90713, 10.51476, 12.28891, 10.51476, 12.92895, 10.11052, 13.34441, 8.49359, 14.97258, 12.2889, 14.97258, 12.85034, 14.97258, 13.29949, 15.42172, 13.29949, 15.99439, 13.29949, 16.57828, 12.85034, 17.0162, 12.2889, 17.0162, 8.49359, 17.0162, 10.11052, 18.6556, 10.51476, 19.0486, 10.51476, 19.7111, 10.11052, 20.09288, 9.70629, 20.50834, 9.05502, 20.50834, 8.65079, 20.09288, 5.32709, 16.76917, 5.28217, 16.71303, 4.87794, 16.32002, 4.87794, 15.67998, 5.28217, 15.26452, 8.65079, 11.90713, 8.65079, 11.90713, 8.65079, 11.90713, 13.3444, 10.09931, 13.3444, 10.09931, 12.94017, 10.50354, 12.2889, 10.50354, 11.88467, 10.09931, 11.48043, 9.69507, 11.48043, 9.0438, 11.88467, 8.63957, 15.27574, 5.25973, 15.66874, 4.86672, 16.32001, 4.86672, 16.73547, 5.25973, 16.76917, 5.31586, 20.10409, 8.63957, 20.50832, 9.0438, 20.50832, 9.68385, 20.10409, 10.09931, 19.69986, 10.49231, 19.07105, 10.50354, 18.64436, 10.09931, 17.02742, 8.45991, 17.02742, 12.26646, 17.02742, 12.83912, 16.55581, 13.31072, 15.99438, 13.31072, 15.43295, 13.31072, 14.98379, 12.83912, 14.98379, 12.26646, 14.96134, 8.45991, 13.3444, 10.09931, 13.3444, 10.09931, 13.3444, 10.09931, 21.90069, 13.33318, 21.90069, 13.33318, 21.49646, 12.91771, 21.49646, 12.27768, 21.90069, 11.89591, 22.31615, 11.45798, 22.94497, 11.45798, 23.36043, 11.89591, 26.72904, 15.2533, 27.12205, 15.66876, 27.12205, 16.3088, 26.72904, 16.7018, 26.6729, 16.75794, 23.36043, 20.08165, 22.94497, 20.49711, 22.31615, 20.49711, 21.90069, 20.08165, 21.49646, 19.69987, 21.49646, 19.03737, 21.90069, 18.64437, 23.51763, 17.00498, 19.72231, 17.00498, 19.14965, 17.00498, 18.71173, 16.56705, 18.71173, 15.98316, 18.71173, 15.41049, 19.14965, 14.96135, 19.72231, 14.96135, 23.51763, 14.96135, 21.90069, 13.33318, 21.90069, 13.33318, 21.90069, 13.33318, 11.88467, 23.32675, 11.88467, 23.32675, 11.48043, 22.94498, 11.48043, 22.27125, 11.88467, 21.88948, 12.2889, 21.48523, 12.94017, 21.48523, 13.3444, 21.88948, 14.96134, 23.52887, 14.98379, 19.7111, 14.98379, 19.14966, 15.43295, 18.67805, 15.99438, 18.67805, 16.55581, 18.67805, 17.02742, 19.14966, 17.02742, 19.7111, 17.02742, 23.52887, 18.64436, 21.88948, 19.07105, 21.48523, 19.69986, 21.48523, 20.10409, 21.88948, 20.50832, 22.27125, 20.50832, 22.94498, 20.10409, 23.32675, 16.76917, 26.65045, 16.73547, 26.72905, 16.32001, 27.13329, 15.66874, 27.13329, 15.27574, 26.72905, 11.88467, 23.32675, 11.88467, 23.32675, 11.88467, 23.32675], + segments: [1, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2, 1, 2, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 1, 2, 4, 4, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 2, 2, 1, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 2] + }] + }), Kp.MoveDummy = { + comps: [{ + type: "image", + name: "Icons.MoveDummyImage", + rect: { + func: function () { + var n = Kp.MoveDummy.data; + return [[n.pos.x, n.pos.y], 2 * n.size, 2 * n.size] + } + } + }] + }, se.Icons.DrawIcon = function (z, B, T, h) { + T.width = T.height = bs, T.data = h, je = z, O.Default.drawImage(B, T, 0, 0, bs, bs) + }, se.Icons.MapPoints = function (H, n) { + for (var p = 0, s = H.length; s > p; p++) H[p] /= n + }, se.roundTo = function (b, h, O) { + var U = Math.abs(b % h); + return O > U || O > h - U ? h * Math.round(b / h) : b + }, se.toFixed = function (f) { + return Math.round(100 * f) / 100 + }, se.getDataMatrix = function (q) { + if (q instanceof O.Shape) { + var Y = new O.Math.Matrix2d, + h = q.getPosition(); + return Y.translate(-h.x, -h.y).scale(q.getScale().x, q.getScale().y).rotate(q.getRotation()).translate(h.x, h.y), Y + } + return q.getMatrix ? q.getMatrix() : new O.Math.Matrix2d + }; + var Ao = se.Math.Curve = function () { + this._curves = [] + }; + Ao.prototype = {}, Ao.prototype.constructor = Ao, Ao.prototype.createFromHtShape = function (Y, J, V) { + J instanceof O.List && (J = J.toArray()); + var I, W, L, D, _, G, S, m = this, + C = null, + d = null, + H = 0, + v = se.Math.Vector2, + T = se.Math.CubicBezier, + p = function (H) { + return new v(Y[H], Y[H + 1], V ? V[H / 2] : Z) + }; + for (W = 0, L = J.length; L > W; W++) { + switch (D = J[W], _ = null, D) { + case 1: + d = p(H), C = d, H += 2; + break; + case 2: + I = p(H), H += 2, _ = new T(d, d.clone(), I.clone(), I), d = I; + break; + case 3: + G = p(H), I = p(H + 2), H += 4, _ = new T(d, G.clone().sub(d).multiplyScalar(2 / 3).add(d), G.clone().sub(I).multiplyScalar(2 / 3).add(I), I), d = I; + break; + case 4: + G = p(H), S = p(H + 2), I = p(H + 4), H += 6, _ = new T(d, G, S, I), d = I; + break; + case 5: + if (!C) break; + _ = new T(d, d.clone(), C.clone(), C), d = null, C = null + } + _ && (_._index = m._curves.length, m._curves.push(_)) + } + }, Ao.prototype.checkPoint = function (T, p) { + var G, B, y, o, R, A = this, + g = A._curves; + for (G = 0, B = g.length; B > G; G++) + if (o = g[G], R = o.intersectRect(T, p, p), R.length) return y = 0, R.forEach(function (Q) { + y += Q.t + }), y /= R.length, T = o.getPointAt(y), T.t = y, { + bezier: o, + intersection: T + } + }, Ao.prototype.insertKnot = function (t, I) { + var k = t.insertKnot(I), + m = this, + L = m._curves; + L.splice(t._index, 1, k[0], k[1]) + }, Ao.prototype._isCloseEnough = function (e, g) { + return Math.abs(e.x - g.x) < 1e-6 && Math.abs(e.y - g.y) < 1e-6 + }, Ao.prototype._isSamePoint = function (G, E) { + return G === E + }, Ao.prototype.moveRealPoint = function (R, T) { + var t = this, + A = t._curves, + f = T.clone().sub(R); + A.forEach(function (Y) { + var n = Y._p1; + Y._p2, Y._p3; + var d = Y._p4; + t._isSamePoint(n, R) && (Y._p2.add(f), Y._p1 = T), t._isSamePoint(d, R) && (Y._p3.add(f), Y._p4 = T) + }) + }, Ao.prototype.moveCtrlDueToRealPointMovement = function (r, Z) { + var a = this, + i = a._curves, + c = function (o) { + o.add(Z), o.e && Z.e && (o.e += Z.e) + }; + i.forEach(function (S) { + var x = S._p1; + S._p2, S._p3; + var z = S._p4; + a._isSamePoint(x, r) && c(S._p2), a._isSamePoint(z, r) && c(S._p3) + }) + }, Ao.prototype.moveCtrlPoint = function (o, e, d) { + var m = o[d]; + if (m) { + m.e !== Z && (e.e = m.e); + var H = this, + B = H._curves; + e.clone().sub(m), B.forEach(function (P) { + var $; + "c2" === d ? $ = "_p2" : "c1" === d && ($ = "_p3"), H._isSamePoint(P[$], m) && (P[$] = e) + }), o[d] = e + } + }, Ao.prototype.deleteRealPoint = function (G, l) { + var D, E, w, n, p, s, Y, J = this, + H = J._curves, + W = {}, + Q = [], + O = se.Math.CubicBezier; + for (E = 0, w = H.length; w > E; E++) D = H[E], n = D._p1, p = D._p2, s = D._p3, Y = D._p4, (W[E] || !J._isSamePoint(n, G)) && (J._isSamePoint(Y, G) ? w > E + 1 && J._isSamePoint(H[E + 1]._p1, G) && (l || Q.push(new O(n, p, H[E + 1]._p3, H[E + 1]._p4))) : Q.push(D)); + J._curves = Q + }, Ao.prototype.findPairs = function (R, l) { + var d, j, t, f, I, J, T, o, Y = this, + L = Y._curves, + O = {}, + z = []; + for (j = 0, t = L.length; t > j; j++) d = L[j], f = d._p1, I = d._p2, J = d._p3, T = d._p4, !O[j] && Y._isSamePoint(f, R) && (l ? z.push({ + point: f, + r2: T + }) : z.push({ + point: f, + c2: I + })), Y._isSamePoint(T, R) && (o = l ? { + point: T, + r1: f + } : { + point: T, + c1: J + }, t > j + 1 && Y._isSamePoint(L[j + 1]._p1, R) && (l ? o.r2 = L[j + 1]._p4 : o.c2 = L[j + 1]._p2, O[j + 1] = !0), z.push(o)); + return z + }, Ao.prototype.toHtShape = function () { + var X = this, + R = X._curves, + k = [], + A = [], + e = { + x: 1 / 0, + y: 1 / 0 + }; + return R.forEach(function (R) { + var $ = R._p1, + P = R._p2, + E = R._p3, + F = R._p4; + return X._isCloseEnough($, e) || (k.push(1), A.push($.clone())), e = F, X._isCloseEnough($, P) && X._isCloseEnough(E, F) ? (k.push(2), A.push(F.clone()), void 0) : (k.push(4), A.push(P.clone(), E.clone(), F.clone()), void 0) + }), { + segments: k, + points: A + } + }; + var Po = se.Math.CubicBezier = function (M, V, v, d) { + var I = this; + I._id = se.Math.CubicBezier._globalId++, I._p1 = M, I._p2 = V, I._p3 = v, I._p4 = d + }; + Po._globalId = 1, Po.prototype = {}, Po.prototype.constructor = Po, Po.prototype.toString = function () { + return this._id + }, Po.prototype.intersectRect = function (Q, M, g) { + var z = M / 2, + I = g / 2, + p = Q.x, + F = Q.y, + d = se.Math.Vector2, + j = new d(-z + p, -I + F), + t = new d(z + p, I + F), + m = new d(t.x, j.y), + c = new d(j.x, t.y), + e = this, + $ = e.intersectLine(j, m), + h = e.intersectLine(m, t), + L = e.intersectLine(t, c), + R = e.intersectLine(c, j), + w = $.concat(h).concat(L).concat(R); + return w + }, Po.prototype.intersectLine = function (B, i) { + var U, d, y, a, r, u, l, X, t, C, w, R, Y, F = this, + H = B.clone().min(i), + e = B.clone().max(i); + a = F._p1, r = F._p2, u = F._p3, l = F._p4, U = a.clone().multiplyScalar(-1), d = r.clone().multiplyScalar(3), y = u.clone().multiplyScalar(-3), w = U.add(d).add(y).add(l), U = a.clone().multiplyScalar(3), d = r.clone().multiplyScalar(-6), y = u.clone().multiplyScalar(3), C = U.add(d).add(y), U = a.clone().multiplyScalar(-3), d = r.clone().multiplyScalar(3), t = U.add(d), X = a.clone(), Y = new se.Math.Vector2(B.y - i.y, i.x - B.x), R = B.x * i.y - i.x * B.y; + for (var j = F.getRoots(Y.dot(w), Y.dot(C), Y.dot(t), Y.dot(X) + R), c = new Array, W = 0, k = j.length; k > W; W++) { + var Z = j[W]; + if (!(0 > Z || Z > 1)) { + var T = F.getPointAt(Z); + T.t = Z, B.x == i.x ? H.y <= T.y && T.y <= e.y && c.push(T) : B.y == i.y ? H.x <= T.x && T.x <= e.x && c.push(T) : T.x >= H.x && T.y >= H.y && T.x <= e.x && T.y <= e.y && c.push(T) + } + } + return c + }, Po.prototype.solveTForPoint = function (s) { + var p, A, f, S, q = this; + p = q._p1.x - s.x, A = q._p2.x - s.x, f = q._p3.x - s.x, S = q._p4.x - s.x; + for (var P = q.getRoots(S - 3 * f + 3 * A - p, 3 * f - 6 * A + 3 * p, 3 * A - 3 * p, p), $ = Z, o = 1 / 0, c = 0, L = P.length; L > c; c++) { + var Q = P[c]; + if (!(0 > Q || Q > 1)) { + var m = q.getPointAt(Q); + m.t = Q; + var i = Math.abs(m.y - s.y); + o > i && (o = i, $ = m) + } + } + return $ + }, Po.prototype.getPointAt = function (n) { + var e = this, + O = e._p1, + u = e._p2, + d = e._p3, + Z = e._p4, + o = O.clone().lerp(u, n), + G = u.clone().lerp(d, n), + i = d.clone().lerp(Z, n), + g = o.lerp(G, n), + _ = G.lerp(i, n); + return g.lerp(_, n) + }, Po.prototype.getPointByPercentage = function (l) { + var z = this.length * l, + J = this._cacheLength, + h = J.length; + if (0 === z) return J[0].point; + if (l >= 1) return J[h - 1].point; + for (var q = 0; h > q; q++) { + var m = J[q]; + if (!(m.len < z)) { + var $ = J[q - 1]; + return m.point.clone().sub($.point).setLength(z - $.len).add($.point) + } + } + }, Po.prototype.getTByPercentage = function (j) { + var q = this.length * j, + Z = this._cacheLength, + a = Z.length; + if (0 === q || 0 >= j) return Z[0].t; + if (j >= 1) return Z[a - 1].t; + for (var t = 0; a > t; t++) { + var H = Z[t]; + if (!(H.len < q)) { + var g = Z[t - 1]; + return (q - g.len) / (H.len - g.len) * (H.t - g.t) + g.t + } + } + }, Po.prototype.getRoots = function (Y, s, t, u) { + var T, A, e, F, $, E = new Array; + if (Math.abs(Y) < 1e-6) { + var T = s, + A = t / T, + e = u / T, + F = A * A - 4 * e; + if (F > 0) { + var $ = Math.sqrt(F); + E.push(.5 * (-A + $)), E.push(.5 * (-A - $)) + } else 0 == F && E.push(.5 * -A) + } + s /= Y, t /= Y, u /= Y, T = (3 * t - s * s) / 3, A = (2 * s * s * s - 9 * t * s + 27 * u) / 27; + var M = s / 3, + V = A * A / 4 + T * T * T / 27, + v = A / 2; + if (Math.abs(V) <= 1e-6 && (V = 0), V > 0) { + var w, O, $ = Math.sqrt(V); + w = -v + $, O = w >= 0 ? Math.pow(w, 1 / 3) : -Math.pow(-w, 1 / 3), w = -v - $, w >= 0 ? O += Math.pow(w, 1 / 3) : O -= Math.pow(-w, 1 / 3), E.push(O - M) + } else if (0 > V) { + var r = Math.sqrt(-T / 3), + Q = Math.atan2(Math.sqrt(-V), -v) / 3, + C = Math.cos(Q), + f = Math.sin(Q), + q = Math.sqrt(3); + E.push(2 * r * C - M), E.push(-r * (C + q * f) - M), E.push(-r * (C - q * f) - M) + } else { + var w; + w = v >= 0 ? -Math.pow(v, 1 / 3) : Math.pow(-v, 1 / 3), E.push(2 * w - M), E.push(-w - M) + } + return E + }, Po.prototype._70I = function () { + var i = this; + return i._p1.distanceToSquared(i._p2) < 1e-10 && i._p3.distanceToSquared(i._p4) < 1e-10 + }, Po.prototype.insertKnot = function (K) { + var d = this, + v = d._p1, + g = d._p2, + U = d._p3, + Q = d._p4, + z = v.clone().lerp(g, K), + E = g.clone().lerp(U, K), + f = U.clone().lerp(Q, K), + V = z.clone().lerp(E, K), + I = E.clone().lerp(f, K), + $ = V.clone().lerp(I, K); + return d._70I() ? (v.clone().lerp(Q, K), [new se.Math.CubicBezier(v, v.clone(), $.clone(), $), new se.Math.CubicBezier($, $.clone(), Q.clone(), Q)]) : [new se.Math.CubicBezier(v, z, V, $), new se.Math.CubicBezier($, I, f, Q)] + }, o.defineProperties(Po.prototype, { + length: { + get: function () { + var A = this._cacheLength; + if (!A) { + A = this._cacheLength = []; + for (var Z = this._p1, K = 0, F = 0; 1 >= K;) { + var k = this.getPointAt(K += .001); + F += k.clone().sub(Z).length(), Z = k, A.push({ + len: F, + t: K, + point: k.clone() + }) + } + } + return A[A.length - 1].len + } + }, + p1: { + get: function () { + return this._p1 + }, set: function ($) { + this._p1 = $, this._cacheLength = Z + } + }, + p2: { + get: function () { + return this._p2 + }, set: function (U) { + this._p2 = U, this._cacheLength = Z + } + }, + p3: { + get: function () { + return this._p3 + }, set: function (r) { + this._p3 = r, this._cacheLength = Z + } + }, + p4: { + get: function () { + return this._p4 + }, set: function (K) { + this._p4 = K, this._cacheLength = Z + } + } + }); + var wn = O.Default.getInternal().ui().EdgeUI, + xe = { + _47O: function (j) { + var D = this, + z = xe.getBackups()._47O; + se.inEdit(D.gv) || z.call(D, j) + } + }; + se.Inject.registAsModule(xe, wn); + var Af = O.Default.getInternal().ui().NodeUI, + Zq = { + _47O: function (n) { + var h = this, + X = Zq.getBackups()._47O; + se.inEdit(h.gv) || X.call(h, n) + }, getSelectWidth: function () { + var M = this, + l = M.gv, + O = M._data; + if (l.isEditable(O) && se.inEdit(l)) return 0; + var e = Zq.getBackup("getSelectWidth"); + return e.call(M) + } + }; + se.Inject.registAsModule(Zq, Af); + var Ab = O.graph.GraphView, + Kl = { + _editPointSize: function () { + var f = O.Default.isTouchable, + S = se.getStyle("pointSize"); + return S[f ? 0 : 1] + }(), + isPointEditable: function (J) { + var p = this; + if (se.inEdit(p)) return p._pointEditableFunc ? p._pointEditableFunc(J) : !0; + var W = Kl.getBackup("isPointEditable"); + W.call(p, J) + }, isEditable: function (C) { + var H, A = this, + s = Kl.getBackup("isEditable"); + if (H = C instanceof se.Group ? !0 : s.call(A, C), !se.inEdit(A)) return H; + if (!(C instanceof O.Edge)) return H; + if (!C.s("2d.editable")) return !1; + var g = A.getEditableFunc(); + return g ? g(C) : !0 + }, _42: function (n, d) { + var m = this, + p = Kl.getBackups()._42; + if (p.call(m, n, d), se.inEdit(m)) { + var r = m.getEditInteractor(); + r.drawImpl() + } + } + }; + se.Inject.registAsModule(Kl, Ab); + var Xp = O.Default.getInternal().ui().ShapeUI, + pm = { + _47O: function (d) { + var s = this, + p = pm.getBackups()._47O; + se.inEdit(s.gv) || p.call(s, d) + } + }; + se.Inject.registAsModule(pm, Xp); + var pk = O.graph.DefaultInteractor, + ji = { + handle_mousewheel: function (N) { + var t = this, + l = ji.getBackup("handle_mousewheel"); + se.inEdit(t.gv) || l.call(t, N) + } + }; + se.Inject.registAsModule(ji, pk); + var Wr = O.graph.MoveInteractor, + tn = { + _calcShift: function (h, f) { + var W = this, + I = tn.getBackup("_calcShift"), + D = W.gv; + if (!se.inEdit(D)) return I.call(W, h, f); + var E = D.getEditInteractor(), + d = E.getSubModule("Move").calcShift(h, f, W); + return d || I.call(W, h, f) + }, clear: function (x) { + var Q = this, + P = tn.getBackup("clear"); + P.call(Q, x); + var D = Q.gv; + if (se.inEdit(D)) { + var F = D.getEditInteractor(); + F.getSubModule("Move").clear(x) + } + } + }; + se.Inject.registAsModule(tn, Wr); + var yf = se.Rect = function (P) { + this.catalog = "Rect", this._interactor = P + }; + yf.prototype = {}, yf.prototype.constructor = yf, yf.prototype.gatherInfo = function (w, X) { + var D = this; + if (1 === X.length) { + var $ = X[0]; + return $ instanceof O.Shape && $._70I() ? D.gatherLine(w, $) : Th($, w) ? !1 : D.gatherSingleTarget(w, $) + } + return X.length > 1 ? D.gatherMultiTargets(w, X) : !1 + }, yf.prototype.gatherSingleTarget = function (u, v) { + if (v.getCorners) { + var L, H = this, + a = H.info; + H.target = v, L = H.screenInfo = {}; + var M = v.getCorners(); + a.LT = new se.Math.Vector2(M[0]), a.LB = new se.Math.Vector2(M[1]), a.RB = new se.Math.Vector2(M[2]), a.RT = new se.Math.Vector2(M[3]), a.T = a.LT.clone().add(a.RT).divideScalar(2), a.B = a.LB.clone().add(a.RB).divideScalar(2), a.L = a.LT.clone().add(a.LB).divideScalar(2), a.R = a.RT.clone().add(a.RB).divideScalar(2); + for (var P in a) L[P] = se.toScreenPosition(u, a[P]); + var e = H._interactor, + j = e.getStyle("checkSize"), + k = function (J, $, m) { + var I = $.clone().sub(J).setLength(-j), + x = m.clone().sub(J).setLength(-j), + v = I.add(x).add(J); + return v + }; + return L.rotLT = k(L.LT, L.RT, L.LB), L.rotLB = k(L.LB, L.LT, L.RB), L.rotRB = k(L.RB, L.LB, L.RT), L.rotRT = k(L.RT, L.LT, L.RB), L.rotT = L.rotLT.clone().add(L.rotRT).divideScalar(2), L.rotB = L.rotLB.clone().add(L.rotRB).divideScalar(2), L.rotL = L.rotLT.clone().add(L.rotLB).divideScalar(2), L.rotR = L.rotRT.clone().add(L.rotRB).divideScalar(2), L.rotation = v.getRotation(), H.gatherConnectInfo(), !0 + } + }, yf.prototype.gatherConnectInfo = function () { + var e = this, + Y = e.target, + N = e._interactor, + f = e.screenInfo, + G = N.gv; + if (G.isConnectActionVisible(Y) && N.getStyle("connectGuideVisible")) { + var S; + Y.s && (S = Y.s("connectGuideShift")), S || (S = N.getStyle("connectGuideShift")); + var V = Y.getAnchor(), + F = Y.getSize(), + p = Y.toGlobal({ + x: F.width * (S[0] - V.x), + y: F.height * (S[1] - V.y) + }); + p = se.toScreenPosition(G, p), f.P1 ? p.add(f.P2.clone().sub(f.P1).setLength(S[2])) : (p.add(f.RT.clone().sub(f.LT).setLength(S[2])), p.add(f.LB.clone().sub(f.LT).setLength(S[3]))), f.connect = p + } + }, yf.prototype.gatherMultiTargets = function (F, K) { + var o = se.Group.findOrCreateGroup(K); + if (!o) return !1; + var I = this; + return I.editing && "rotate" !== I.editing.mode || o.calcInfo(), I.gatherSingleTarget(F, o) + }, yf.prototype.gatherLine = function (l, q) { + this.target = q; + var Q = this.screenInfo = {}, + e = q.getPoints(), + D = se.getDataMatrix(q); + return Q.P1 = se.toScreenPosition(l, D.apply(e.get(0))), Q.P2 = se.toScreenPosition(l, D.apply(e.get(1))), this.gatherConnectInfo(), !0 + }, yf.ResizeKeys = ["LT", "RB", "LB", "RT", "L", "R", "B", "T"], yf.ResizeDirection = [{ + x: -1, + y: -1 + }, { + x: 1, + y: 1 + }, { + x: -1, + y: 1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: 0, + y: 1 + }, { + x: 0, + y: -1 + }], yf.RotateKeys = ["rotLT", "rotRB", "rotLB", "rotRT", "rotL", "rotR", "rotB", "rotT"], yf.prototype.check = function (s, h, g) { + if (O.Default.isLeftButton(h)) { + var l = this; + if (l.editing = null, l.tipInfo = null, l.screenInfo) { + var L = l.target, + i = s.isEditable(L), + v = l.screenInfo; + if (i && v.connect) { + var Q = l._checkConnect(g); + if (Q) return Q + } + if (v.P1) return l._checkLine(g); + var z, e, p, Y = null, + D = l._interactor, + $ = D.getStyle("checkSize"); + if (i && s.isRectEditable(L)) + for (e = 0; e < se.Rect.ResizeKeys.length; e++) + if (p = se.Rect.ResizeKeys[e], se.checkHit(g, v[p], $)) { + Y = p, z = "resize"; + break + } + if (!Y && i && s.isRotationEditable(L) && !D.getStyle("rotateAsClock")) { + var f = D.getStyle("rotateCheckSize"); + for (e = 0; e < se.Rect.RotateKeys.length; e++) + if (p = se.Rect.RotateKeys[e], se.checkHit(g, v[p], f)) { + Y = p, z = "rotate"; + break + } + } + if (!Y) return D.setCursor("default"), void 0; + if ("rotate" === z) { + var R, x = s.lp(h); + if (L instanceof se.Group) { + var a = D.getStyle("groupRotateModeKey"); + "string" == typeof a && (a = [a]); + for (var y = !1, A = 0, q = a.length; q > A; A++) + if (h[a[A]]) { + y = !0; + break + } + var Z = D.getStyle("groupRotateModeDefault"); + R = y ? "batch" === Z ? "block" : "batch" : Z + } + var X = "batch" === R ? L.getAnchor2() : L.getPosition(), + E = Math.atan2(x.y - X.y, x.x - X.x); + D._setRotateCursor(E), l.editing = { + mode: z, + key: Y, + pos: X, + flipY: L.getScale().y < 0, + rotation: L.getRotation(), + hitRot: E + }, R && (l.editing.groupRotateMode = R) + } else { + var o = se.Rect.ResizeKeys.indexOf(Y), + H = se.Rect.ResizeDirection[o], + F = Math.cos(L.getRotation()), + r = Math.sin(L.getRotation()), + P = H.x * Math.sign(L.getScale().x), + M = H.y * Math.sign(L.getScale().y), + W = Math.atan2(-r * P - F * M, F * P - r * M), + T = (Math.round(W / (Math.PI / 4)) + 8) % 8, + t = ["ew-resize", "nesw-resize", "ns-resize", "nwse-resize", "ew-resize", "nesw-resize", "ns-resize", "nwse-resize"][T]; + this._interactor.setCursor(t); + var C = L.getWidth(), + G = L.getHeight(), + j = L.getAnchor(); + l.editing = { + mode: z, + key: Y, + rect: { + x: -C * j.x, + y: -G * j.y, + width: C, + height: G + }, + anchor: j, + matrix: L.getMatrix() + } + } + return Y + } + } + }, yf.prototype._checkLine = function (O) { + var I = this; + I.screenInfo; + var d, J = I._interactor.getStyle("checkSize"); + if (se.checkHit(O, I.screenInfo.P1, J)) d = "P1"; + else { + if (!se.checkHit(O, I.screenInfo.P2, J)) return this._interactor.setCursor("default"), void 0; + d = "P2" + } + return I.editing = { + mode: "line", + key: d + }, d + }, yf.prototype._checkConnect = function (K) { + var a = this, + g = a.screenInfo, + P = a._interactor, + d = P.getStyle("connectGuideIntersectSize"), + l = g.connect, + o = K.x, + j = l.x; + if (j > o && d > j - o && Math.abs(l.y - K.y) < d || o >= j && se.checkHit(K, l, d)) { + var S = "connect", + O = u.getConnectAction(P.gv); + if (a.editing = { + mode: S + }, O && O.delete) + if (a.target instanceof se.Group) { + var R = !0; + P.gv.sm().getSelection().each(function (K) { + O.delete.visible.call(null, P.gv, K) || (R = !1) + }), a.editing.hasDeleteAction = R + } else O.delete.visible.call(null, P.gv, a.target) && (a.editing.hasDeleteAction = !0); + return P.setCursor("default"), S + } + }, yf.prototype._fireEditEvent = function (x, j) { + var v = this._interactor, + M = this.editing; + if (M) { + var S = M.mode; + S = "rotate" === S ? "Rotation" : "connect" === S ? "Connection" : "resize" === S ? "Rect" : S[0].toUpperCase() + S.slice(1), v.fi({ + kind: x + "Edit" + S, + event: j + }) + } + }, yf.prototype.startEdit = function (w, n) { + w.startDragging(n); + var L = this; + L._interactor.fi({ + kind: "prepareEdit", + event: n + }); + var r = L.editing, + v = L.target; + if (r) { + if (L._fireEditEvent("begin", n), "rotate" === r.mode) return r.groupRotateMode && v.beginRotate(r), void 0; + if ("connect" !== r.mode) ("line" === r.mode || v && 0 === v.getRotation()) && (L._inSmartGuide = !0, L._interactor.rectGuide.gatherRects()); + else if (r.hasDeleteAction) { + var z = w.gv, + Y = L._interactor.getStyle("connectGuideGarbageShift"); + r.garbageInfo = { + x: z.getWidth() * Y[0] + Y[2], + y: z.getHeight() * Y[1] + Y[3], + size: L._interactor.getStyle("connectGuideGarbageIntersectsize") + }, w._42() + } + } + }, yf.prototype._46O = function ($) { + var q, Y, i = this, + M = i.editing, + d = i.target; + if (M) { + if ("connect" === M.mode && !M.canceled && !M.deleted) try { + M.garbageInfo && M.garbageInfo.hover ? u.doDeleteConnectionAction(i._interactor.gv, d) : u.doConnectAction(i._interactor.gv, d, M.target) + } catch (b) { + console.error(b) + } + Y = M.freezeFlag, q = i.editing.groupRotateMode, i._fireEditEvent("end", $), i.editing = null + } + i.tipInfo = null, i._inSmartGuide && (i._interactor.rectGuide.clear(), i._inSmartGuide = !1), q && d && d.endRotate(), d instanceof O.Block && (Y === Z ? delete d._freezeSyncFromChildren : d._freezeSyncFromChildren = Y, d.updateFromChildren()) + }, yf.prototype.handleNormalStateDelete = function () { + var V = this, + e = V.editing; + if (e && "connect" === e.mode && !e.canceled && !e.deleted) { + if (e.garbageInfo) { + try { + u.doDeleteConnectionAction(V._interactor.gv, V.target) + } catch ($) { + console.error($) + } + e.garbageInfo = null + } + return e.cursorPos = null, e.targetCorners = null, e.deleted = !0, V._interactor._42(), !0 + } + }, yf.prototype.handleNormalStateKeyDown = function (f) { + var j = this, + q = j.editing; + return !q || "connect" !== q.mode || q.canceled || q.deleted ? void 0 : O.Default.isEsc(f) ? (q.cursorPos = null, q.targetCorners = null, q.canceled = !0, j._interactor._42(), !0) : void 0 + }, yf.prototype.handleEdit = function (J, i) { + var Y = this, + C = Y.editing; + if (C) { + var b, R, m, _, D, Z = Y.target, + U = C.key, + s = C.mode, + x = J.lp(i), + w = Y._interactor; + if ("connect" === s) { + if (C.canceled) return; + if (C.deleted) return; + C.cursorPos = w._getLogicalPoint(i); + var u = C.garbageInfo; + return u && se.checkHit(C.cursorPos, u, u.size) ? (u.hover = !0, C.target = null, C.targetCorners = null) : (u && (u.hover = !1), C.target = J.getDataAt(x, function (H) { + return J.isSelectable(H) ? Fq(H) ? !0 : !1 : !1 + }) || null, C.targetCorners = se.getTargetCornersOnScreen(J, C.target)), w._42(), void 0 + } + if ("rotate" === s) { + var p, z, t = C.pos, + e = Math.atan2(x.y - t.y, x.x - t.x); + if (C.groupRotateMode ? z = e - C.hitRot : (p = e - C.hitRot, z = C.rotation + p), z %= 2 * Math.PI, 0 > z && (z += 2 * Math.PI), !O.Default.isCtrlDown(i)) { + var B, q; + Pf(i) ? (B = w.getStyle("shiftRotateRound"), q = B / 2) : (B = w.getStyle("rotateRound"), q = w.getStyle("rotateSensitivity")), z = se.roundTo(z, B, q) + } + C.groupRotateMode ? (p = z - (C.lastRotation || 0), 0 !== p && (Z.addRotation(p, C.groupRotateMode, function (l) { + return J.isRotationEditable(l) + }), C.lastRotation = z)) : Z.setRotation(z), w._setRotateCursor(e), z > Math.PI && (z -= 2 * Math.PI); + var X = 180 * (z / Math.PI); + X = X.toFixed(2), b = "" + X + "°" + } else if ("resize" === s) { + var Q = C.rect; + m = Q.x, _ = Q.y; + var G, g = Q.width, + H = Q.height, + v = C.anchor, + F = C.matrix, + T = Z.s && Z.s("keepAspectRatio") || w.getStyle("keepAspectRatio"); + Pf(i) && (T = !T); + var V = Y._unionPointMode1, + r = Y._unionPointMode2; + if (Y._inSmartGuide && !O.Default.isCtrlDown(i) && !T) { + var K; + "L" === U || "R" === U ? K = "x" : ("T" === U || "B" === U) && (K = "y"), Y._adsorbedToClosest(x, K), D = !0 + } + G = F.tfi(x); + var d; + "LT" === U ? (Q = V(G, { + x: m + g, + y: _ + H + }, g, H, T), d = 9) : "T" === U ? (Q = r({ + x: m, + y: G.y + }, { + x: m + g, + y: _ + H + }, g, H, T, "v"), d = 1) : "RT" === U ? (Q = V(G, { + x: m, + y: _ + H + }, g, H, T), d = 33) : "L" === U ? (Q = r({ + x: G.x, + y: _ + }, { + x: m + g, + y: _ + H + }, g, H, T, "h"), d = 8) : "R" === U ? (Q = r({ + x: m, + y: _ + }, { + x: G.x, + y: _ + H + }, g, H, T, "h"), d = 32) : "LB" === U ? (Q = V(G, { + x: m + g, + y: _ + }, g, H, T), d = 12) : "B" === U ? (Q = r({ + x: m, + y: _ + }, { + x: m + g, + y: G.y + }, g, H, T, "v"), d = 4) : "RB" === U && (Q = V(G, { + x: m, + y: _ + }, g, H, T), d = 36); + var W = F.tf(Q.x + Q.width * v.x, Q.y + Q.height * v.y); + Z instanceof O.Block && (C.hasOwnProperty("freezeFlag") || (C.freezeFlag = Z._freezeSyncFromChildren, Z._freezeSyncFromChildren = !0)), Z.setPosition(W), Z.setSize(Q.width, Q.height), D && (R = Z.getRect(), w.rectGuide.gatherLines({ + node: Z, + x: R.x, + y: R.y, + w: R.width, + h: R.height + }, K, d)), b = "" + Math.round(Q.width) + " * " + Math.round(Q.height) + } else if ("line" === s) { + if (Pf(i)) { + var o = Z.getPoints(), + h = "P1" === U ? o.get(1) : o.get(0), + c = { + x: x.x - h.x, + y: x.y - h.y + }, + E = w.getStyle("shiftLineRotateRound"), + I = Y._shiftDirList; + if (!I || Y._shiftRotateRound !== E) { + Y._shiftRotateRound = E, Y._shiftDirList = I = []; + for (var L = 0; L < Math.PI; L += E) I.push({ + x: n(L), + y: k(L) + }) + } + for (var y, f = 0, l = 0, j = I.length; j > l; l++) { + var $ = I[l], + a = $.x * c.x + $.y * c.y; + Math.abs(a) > Math.abs(f) && (f = a, y = $) + } + x = { + x: h.x + y.x * f, + y: h.y + y.y * f + }, w.rectGuide.clear() + } else Y._inSmartGuide && !O.Default.isCtrlDown(i) && (Y._adsorbedToClosest(x), D = !0); + var A = se.getDataMatrix(Z).applyInverse(x); + Z.setPoint("P1" === U ? 0 : 1, A, !0); + var M = Z.getPoints(), + P = M.get(0), + S = M.get(1); + m = P.x - S.x, _ = P.y - S.y, b = " " + Math.round(Math.sqrt(m * m + _ * _)) + " ", D && (R = Z.getRect(), w.rectGuide.gatherLines({ + node: Z, + x: R.x, + y: R.y, + w: R.width, + h: R.height + })) + } + if (b) { + var N = O.Default.getLogicalPoint(i, w._canvas); + N.x += se.Icons.TipShiftX, N.y += se.Icons.TipShiftY, Y.tipInfo = { + helperPos: N, + text: b, + size: b.length + } + } + Y._fireEditEvent("between", i) + } + }, yf.prototype._unionPointMode1 = function (y, u, c, U, M) { + if (M && c && U) { + var Z = y.x - u.x, + S = y.y - u.y; + Math.abs(Z * U) < Math.abs(S * c) ? (S = Math.sign(S) * Math.abs(Z * U / c), y.y = u.y + S) : (Z = Math.sign(Z) * Math.abs(S * c / U), y.x = u.x + Z) + } + return O.Default.unionPoint(y, u) + }, yf.prototype._unionPointMode2 = function (A, p, e, r, N, R) { + var b = O.Default.unionPoint(A, p); + if (N && e && r) { + var l; + "v" === R ? (l = b.x + b.width / 2, b.width = e * b.height / r, b.x = l - b.width / 2) : (l = b.y + b.height / 2, b.height = r * b.width / e, b.y = l - b.height / 2) + } + return b + }, yf.prototype._adsorbedToClosest = function (y, O) { + var H = this, + V = H._interactor, + h = V.rectGuide.findClosest(y, O), + N = V.gridGuide.findClosest(y, O), + f = 1 / 0, + A = 1 / 0; + h && (isFinite(h.x) && (f = h.x), isFinite(h.y) && (A = h.y)), N && (isFinite(N.x) && Math.abs(N.x) < Math.abs(f) && (f = N.x), isFinite(N.y) && Math.abs(N.y) < Math.abs(A) && (A = N.y)), isFinite(f) && (y.x += f), isFinite(A) && (y.y += A) + }, yf.prototype._42 = function (p, L, O) { + var U = this; + U.info = {}, U.screenInfo = null; + var D = U._interactor; + if (!D.editDetail && U.gatherInfo(L, O)) { + var z = U.editing, + F = z ? z.groupRotateMode : null, + v = U.screenInfo; + if ("block" !== F) { + if (v.P1 ? se.Icons.DrawIcon(D, p, se.Icons.Line, v) : se.Icons.DrawIcon(D, p, se.Icons.Rect, v), v.connect && (se.Icons.DrawIcon(D, p, se.Icons.ConnectGuide, { + rotation: v.rotation, + connect: v.connect, + cursorPos: z ? z.cursorPos : null + }), z)) { + if (z.targetCorners) { + for (var Z = { + x: 1 / 0, + y: 1 / 0 + }, l = { + x: -1 / 0, + y: -1 / 0 + }, B = 0, G = z.targetCorners.length; G > B; B += 2) Z.x = Math.min(Z.x, z.targetCorners[B]), l.x = Math.max(l.x, z.targetCorners[B]), Z.y = Math.min(Z.y, z.targetCorners[B + 1]), l.y = Math.max(l.y, z.targetCorners[B + 1]); + se.Icons.DrawIcon(D, p, se.Icons.HoverDataRect, { + min: Z, + max: l, + color: D.getStyle("hoverGuideColor") || D.getStyle("baseColor") + }) + } + z.garbageInfo && se.Icons.DrawIcon(D, p, se.Icons.ConnectGuideGarbage, z.garbageInfo) + } + U.tipInfo && se.Icons.DrawIcon(D, p, se.Icons.TipHelper, U.tipInfo) + } + U.target instanceof se.Group && U.target._42(D, p, L) + } + }; + var vb = se.Anchor = function (Y) { + this.catalog = "Anchor", this._interactor = Y + }; + vb.prototype = {}, vb.prototype.constructor = vb, vb.prototype.gatherInfo = function (i, q) { + var d = this; + if (1 === q.length) { + var F = q[0]; + if (!F.getAnchor) return; + if (F instanceof O.Shape && F._70I()) return; + if (Th(F, i)) return; + return d.gatherSingleTarget(i, q[0]) + } + return q.length > 1 ? d.gatherMultiTargets(i, q) : !1 + }, vb.prototype.gatherSingleTarget = function (A, E) { + var B = this; + return B.info.POS = E.getPosition(), B.screenInfo.POS = se.toScreenPosition(A, B.info.POS), B.target = E, !0 + }, vb.prototype.gatherMultiTargets = function (b, v) { + var L = this, + W = se.Group.findOrCreateGroup(v); + return W ? (L.screenInfo.POS = se.toScreenPosition(b, W.getAnchor2()), L.target = W, !0) : !1 + }, vb.prototype.isVisible = function () { + var y = this, + F = y._interactor; + if (F.getStyle("anchorVisible") === !1) return !1; + var i = y.target; + if (i) { + if (this.editing) return !0; + var h = i.getAnchor(), + I = F.getStyle("anchorOutsideVisibleThreshold"); + if (h.x < -I || h.x > 1 + I || h.y < -I || h.y > 1 + I) return !0; + var Z = i.getSize(), + u = i.getScale(), + X = Math.min(Math.abs(Z.width * u.x), Math.abs(Z.height * u.y)); + if (X * F.gv._zoom < F.getStyle("anchorHideThreshold")) return !1 + } + return !0 + }, vb.prototype.check = function (H, F, w) { + if (O.Default.isLeftButton(F)) { + var p = this, + n = p._interactor; + if (p.isVisible() && n.getStyle("anchorMovable") !== !1) { + p.editing = null, p.tipInfo = null; + var J = p.target; + if (J && H.isAnchorEditable(J) && H.isEditable(J)) { + var A; + if (p.screenInfo && (A = p.screenInfo.POS) && se.checkHit(w, new se.Math.Vector2(A), n.getStyle("checkSize"))) { + if (J instanceof se.Group) return p.editing = {}, !0; + var I = J.getWidth(), + s = J.getHeight(), + c = J.getAnchor(); + return p.editing = { + rect: { + x: -I * c.x, + y: -s * c.y, + width: I, + height: s + }, + anchor: c, + matrix: J.getMatrix() + }, !0 + } + } + } + } + }, vb.prototype.startEdit = function (H, z) { + H.startDragging(z), H.fi({ + kind: "beginEditAnchor", + event: z + }) + }, vb.prototype._46O = function (F) { + var X = this; + X.editing && (X.editing = null, X._interactor.fi({ + kind: "endEditAnchor", + event: F + })), X.tipInfo = null + }, vb.prototype.handleEdit = function (n, U) { + var k = this, + N = k.target; + if (N) { + var P = k.editing; + if (P) { + var x = n.lp(U), + i = k._interactor; + if (N instanceof se.Group) return N.setAnchor2(x), i._42(), void 0; + var c = P.matrix, + K = c.tfi(x), + S = P.rect, + C = (K.x - S.x) / S.width, + I = (K.y - S.y) / S.height; + if (!O.Default.isCtrlDown(U)) { + var $ = i.getStyle("anchorRound"), + y = i.getStyle("anchorSensitivity"); + C = se.roundTo(C, $, y), I = se.roundTo(I, $, y) + } + N.setAnchor(C, I, !0); + var H = O.Default.getLogicalPoint(U, i._canvas); + H.x += se.Icons.TipShiftX, H.y += se.Icons.TipShiftY; + var z = "" + C.toFixed(2) + ", " + I.toFixed(2); + k.tipInfo = { + helperPos: H, + text: z, + size: z.length + }, i.fi({ + kind: "betweenEditAnchor", + event: U + }) + } + } + }, vb.prototype._42 = function (N, T, C) { + var P = this; + P.info = {}, P.screenInfo = {}; + var R = P._interactor; + R.editDetail || P.gatherInfo(T, C) && P.isVisible() && (se.Icons.DrawIcon(R, N, se.Icons.Anchor, P.screenInfo), P.tipInfo && se.Icons.DrawIcon(R, N, se.Icons.TipHelper, P.tipInfo)) + }; + var Ap = se.MoveDummy = function (S) { + this.catalog = "MoveDummy", this._interactor = S + }; + Ap.prototype = {}, Ap.prototype.constructor = Ap, Ap.prototype.gatherInfo = function () { + var t = this, + h = this._interactor.getSubModule("Rect"); + if (h) { + var I = h.screenInfo; + if (I) { + var f = t._interactor, + S = t.getMovableTarget(h.target); + if (S) { + var X = f.getStyle("moveDummyThreshold"); + if (X !== !1) { + var a = I.LT || I.P1, + K = I.RT || I.P2, + i = I.LB || a; + if (a) { + var _ = I.P1, + A = Math.min(a.distanceTo(i), a.distanceTo(K)); + if (!(X !== !0 && A > X)) { + var G = f.getStyle("moveDummyPosition"), + g = K.clone().sub(a), + s = i.clone().sub(a), + V = G[2], + $ = G[3]; + if (_) { + var U = f.getStyle("moveDummyLineExtraShift"); + U && (V += U[0], $ += U[1]) + } + var O = a.clone().add(g.clone().multiplyScalar(G[0])).add(g.setLength(V)).add(s.clone().multiplyScalar(G[1])).add(s.setLength($)); + return t.screenInfo.pos = O, t.screenInfo.size = f.getStyle("moveDummySensitivity"), !0 + } + } + } + } + } + } + }, Ap.prototype.getMovableTarget = function (I) { + var c = this._interactor.gv; + if (Fq(I)) { + if (c.isMovable(I)) return I + } else if (I instanceof se.Group) + for (var q = I._entities, U = q.length - 1; U >= 0; U--) { + var y = q[U]; + if (Fq(y) && c.isMovable(y)) return y + } + return null + }, Ap.prototype.getMoveInteractor = function () { + for (var m, I, N, S = this._interactor.gv, o = S.getInteractors(), m = 0, I = o.length; I > m; m++) + if (N = o.get(m), N instanceof Wr) return N + }, Ap.prototype.startEdit = function (Q, n) { + Q.startDragging(n); + var d = this.getMoveInteractor(); + if (d) { + var $ = this.selectedTarget, + b = Q.gv; + b._moving = 1, d._data = $, b.handleMouseDown && b.handleMouseDown(n, $) + } + }, Ap.prototype._46O = function (m) { + var S = this, + T = S.getMoveInteractor(); + T && (T.handleWindowMouseUp(m), S.selectedTarget = null) + }, Ap.prototype.handleEdit = function (e, n) { + var i = this.getMoveInteractor(); + i && i.handleWindowMouseMove(n) + }, Ap.prototype.check = function (B, P, r) { + if (this.selectedTarget = null, O.Default.isLeftButton(P) && !B._scrolling && !Cf()) { + var S = this; + if (S.screenInfo) { + var $ = S.screenInfo.pos; + if ($ && !(r.distanceTo($) > S.screenInfo.size)) { + var U = S._interactor; + return S.selectedTarget = S.getMovableTarget(U.getSubModule("Rect").target), U.setCursor("default"), !0 + } + } + } + }, Ap.prototype._42 = function (f, t, b) { + var L = this; + L.screenInfo = {}; + var Q = L._interactor; + Q.editDetail || L.gatherInfo(t, b) && (!Q.editing || L.selectedTarget) && se.Icons.DrawIcon(Q, f, se.Icons.MoveDummy, L.screenInfo) + }; + var ff = se.RotateX = function (l) { + this.catalog = "RotateX", this._interactor = l + }; + ff.prototype = {}, ff.prototype.constructor = ff, ff.prototype.gatherInfo = function (c, p) { + var j = this; + if (1 === p.length) { + var m = p[0]; + return m instanceof O.Shape && m._70I() || Th(m, c) ? !1 : j.gatherSingleTarget(c, m) + } + return p.length > 1 ? j.gatherMultiTargets(c, p) : !1 + }, ff.prototype.gatherSingleTarget = function () { + var v = new O.Math.Vector2, + A = new O.Math.Vector2, + g = new O.Math.Vector2, + w = new O.Math.Vector2, + q = function (n, S) { + var L = n.x - S.x, + M = n.y - S.y; + return L * L + M * M + }; + return function (K, P) { + if (P.getCorners) { + var y = this, + X = P.getCorners(), + U = 15, + t = P.getPosition(); + v.copy(X[0]), g.copy(X[1]), w.copy(X[3]), A.copy(v).add(w).divideScalar(2).add(v.sub(g).setLength(U / K.getZoom())); + var x = Math.max(q(t, X[0]), q(t, X[1]), q(t, X[2]), q(t, X[3])); + return y.info.POS = A.clone(), y.screenInfo.POS = se.toScreenPosition(K, y.info.POS), y.screenInfo.LEN = Math.sqrt(x) * K.getZoom() + U, y.screenInfo.CENTER = se.toScreenPosition(K, t), y.target = P, !0 + } + } + }(), ff.prototype.gatherMultiTargets = function (Q, P) { + var y = this, + u = se.Group.findOrCreateGroup(P); + if (!u) return !1; + var y = this; + return y.gatherSingleTarget(Q, u) + }, ff.prototype.isVisible = function () { + var S = this._interactor; + if (!S.getStyle("rotateAsClock")) return !1; + var R = this.target; + if (!R) return !0; + var l = S.gv; + return l.isEditable(R) && l.isRotationEditable(R) ? !0 : !1 + }, ff.prototype.check = function (r, q, c) { + var j = this, + E = j._checkImpl(r, q, c); + return (E || j._clockPainted) && j._interactor._42(), E + }, ff.prototype._checkImpl = function (l, x, y) { + if (O.Default.isLeftButton(x)) { + var V = this; + V.editing = null, V.tipInfo = null; + var u; + if (V.screenInfo && (u = V.screenInfo.POS) && V.isVisible()) { + var f = V._interactor; + if (se.checkHit(y, u, f.getStyle("checkSize"))) { + var p = V.target, + e = l.lp(x), + o = p.getPosition(), + T = Math.atan2(e.y - o.y, e.x - o.x); + return f._setRotateCursor(T), V.editing = { + pos: o, + rotation: p.getRotation(), + hitRot: T, + groupRotateMode: "block", + screenInfo: { + CENTER: V.screenInfo.CENTER, + LEN: V.screenInfo.LEN + } + }, !0 + } + } + } + }, ff.prototype.startEdit = function (m, V) { + m.startDragging(V), m.fi({ + kind: "beginEditRotation", + event: V + }), this.target instanceof se.Group && this.target.beginRotate(this.editing) + }, ff.prototype._46O = function (I) { + var G = this; + G.editing && (G.editing = null, G._interactor.fi({ + kind: "endEditRotation", + event: I + })), G.target instanceof se.Group && G.target.endRotate(), G.tipInfo = null + }, ff.prototype.handleEdit = function (z, e) { + var L = this, + b = L.editing; + if (b) { + var p, J, y = L.target, + f = z.lp(e), + r = L._interactor, + E = b.pos, + d = Math.atan2(f.y - E.y, f.x - E.x), + n = y instanceof se.Group; + if (n ? J = d - b.hitRot : (p = d - b.hitRot, J = b.rotation + p), J %= 2 * Math.PI, 0 > J && (J += 2 * Math.PI), !O.Default.isCtrlDown(e)) { + var G, A; + Pf(e) ? (G = r.getStyle("shiftRotateRound"), A = G / 2) : (G = r.getStyle("rotateRound"), A = r.getStyle("rotateSensitivity")), J = se.roundTo(J, G, A) + } + n ? (p = J - (b.lastRotation || 0), 0 !== p && (y.addRotation(p, b.groupRotateMode, function (O) { + return z.isRotationEditable(O) + }), b.lastRotation = J)) : y.setRotation(J), r._setRotateCursor(d), J > Math.PI && (J -= 2 * Math.PI); + var u = 180 * (J / Math.PI), + X = "" + u.toFixed(2) + "°", + i = O.Default.getLogicalPoint(e, r._canvas); + i.x += se.Icons.TipShiftX, i.y += se.Icons.TipShiftY, L.tipInfo = { + helperPos: i, + text: X, + size: X.length + }, r.fi({ + kind: "betweenEditRotation", + event: e + }) + } + }, ff.prototype._42 = function (A, t, r) { + var S = this; + S._clockPainted = !1, S.info = {}, S.screenInfo = {}; + var g = S._interactor; + g.editDetail || S.gatherInfo(t, r) && S.isVisible() && (se.Icons.DrawIcon(g, A, se.Icons.RoundPoint, S.screenInfo.POS), S.tipInfo && se.Icons.DrawIcon(g, A, se.Icons.TipHelper, S.tipInfo), S.editing && S.drawClock(A)) + }, ff.prototype.drawClock = function (x) { + x.save(); + var S = this; + S._clockPainted = !0; + var R = S.editing || {}, + w = R.screenInfo || S.screenInfo, + E = w.LEN, + q = E + 8, + t = E + 18; + x.save(), x.translate(w.CENTER.x, w.CENTER.y), x.beginPath(), x.strokeStyle = "rgb(150, 150, 150)"; + for (var e, T, f, y, b, Q = 0; 360 > Q; Q++) e = Q * Math.PI / 180, 0 === Q % 5 && (T = k(e) * E, f = n(e) * E, y = k(e) * q, b = n(e) * q, x.moveTo(T, f), x.lineTo(y, b)), 0 === Q % 45 && (T = k(e) * E, f = n(e) * E, y = k(e) * t, b = n(e) * t, x.moveTo(T, f), x.lineTo(y, b)); + x.stroke(), x.rotate(-N); + var p = R.lastRotation || S.target.getRotation(); + x.beginPath(), x.fillStyle = "rgba(255, 0, 0, 0.1)", x.strokeStyle = "rgb(157, 157, 157)", x.moveTo(0, 0), x.arc(0, 0, t, 0, p, !1), x.fill(), x.beginPath(), x.moveTo(0 + t, 0), x.arc(0, 0, t, 0, p, !1), x.stroke(), x.restore() + }; + var Ao = se.Curve = function (U) { + this.catalog = "Curve", this._interactor = U + }; + Ao.prototype = {}, Ao.prototype.constructor = Ao, o.defineProperties(Ao.prototype, { + activing: { + get: function () { + return this._activing + }, set: function (C) { + var b = this; + if (C) b._activing = new se.CurveActiving(this, C), b._activing._firePointChange(); + else { + var K = b._activing; + K && K.dispose(), b._activing = null + } + } + } + }), Ao.PointType = { + Mirrored: 0, + Straight: 1, + Disconnected: 2, + Asymmetric: 3 + }, Ao.prototype.setUp = function () { + var g = this, + y = g._interactor; + y && y.gv.mp(g._onGraphviewPropertyChanged, g) + }, Ao.prototype._onGraphviewPropertyChanged = function (P) { + ("zoom" === P.property || "translateX" === P.property || "translateY" === P.property) && this._handleDataChanged() + }, Ao.prototype.tearDown = function () { + var X = this, + u = X._interactor; + u && u.gv.ump(X._onGraphviewPropertyChanged, X) + }, Ao.prototype.canEnterEditDetailMode = function () { + var z = this, + e = z._interactor, + M = e._getValidSelection(); + if (1 === M.length) { + var w = M[0], + L = w instanceof O.Edge; + if (w instanceof O.Shape || L) { + if (L) { + var A = w.s("edge.type"); + if (A && "points" !== A) return + } + var S = e.gv; + if (S.isPointEditable(w) && S.isEditable(w)) return z.target = w, !0 + } + } + }, Ao.prototype.canQuitEditDetailMode = function (G) { + var Q = this, + y = Q._interactor._getLogicalPoint(G); + return Q._checkEditRealPoint(y) ? void 0 : Q._interactor.gv.getDataAt(G) !== Q.target ? !0 : void 0 + }, Ao.prototype.preHandleScroll = function () { + var _ = this.editing; + return _ && _.inEdit ? !0 : void 0 + }, Ao.prototype.getCurrentSelectintStatus = function () { + var E = this; + if (E.activing && !E.activing.selections) { + if (E.activing.status != Z) return E.activing.status; + var I = function (V) { + var R = E.activing.status; + E.activing.status = V, E._interactor.fp("shapePointStatus", R, V) + }, + K = se.Curve.PointType, + o = E.activing.point, + j = E.activing.pairs; + if (!j || 1 !== j.length) return I(K.Mirrored); + var b = j[0], + z = b.c1 && b.c1.isNearEnough(o), + k = b.c2 && b.c2.isNearEnough(o); + if (!b.c1 || !b.c2) return z || k ? I(K.Straight) : I(K.Disconnected); + if (z && k) return I(K.Straight); + if (z || k) return I(K.Asymmetric); + var D = b.c1.clone().sub(o), + w = b.c2.clone().sub(o); + return Math.abs(D.x * w.y - D.y * w.x) > 1e-5 || D.x * w.x > 0 ? I(K.Disconnected) : Math.abs(D.length() - w.length()) > 1e-5 ? I(K.Asymmetric) : I(K.Mirrored) + } + }, Ao.prototype.handle_keydown = function (x) { + var p = this; + if (p._interactor.editDetail) { + var g = se.Curve.PointType; + "1" === x.key ? p._setCurrentSelectionStatus(g.Straight) : "2" === x.key ? p._setCurrentSelectionStatus(g.Mirrored) : "3" === x.key ? p._setCurrentSelectionStatus(g.Disconnected) : "4" === x.key && p._setCurrentSelectionStatus(g.Asymmetric) + } + }, Ao.prototype.setCurrentSelectionStatus = function (F) { + var h = this, + z = h._interactor; + if (z) { + var Y = z.gv; + Y.dm().beginTransaction(), this._setCurrentSelectionStatus(F), Y.dm().endTransaction() + } + }, Ao.prototype._setCurrentSelectionStatus = function (L) { + var N = this, + I = N.activing; + if (I) { + var v = N.getCurrentSelectintStatus(); + if (null !== v && v !== L) { + I.status = L; + var b = N.activing.point, + s = N.activing.pairs; + if (s && 1 === s.length) { + var S = s[0], + X = N.screenInfo.curve, + H = se.Curve.PointType, + Q = N._interactor, + r = function () { + N._writeToHt(), Q.fp("shapePointStatus", v, L), N.check(Q.gv, null, new se.Math.Vector2(Q._lastLogicalPoint)) + }; + if (L === H.Straight) return X.moveCtrlPoint(S, b, "c1"), X.moveCtrlPoint(S, b, "c2"), r(), void 0; + if (v === H.Straight) { + var $ = X.findPairs(b, !0), + c = $[0], + C = c.r1 || b, + m = c.r2 || b, + i = m.clone().sub(C).multiplyScalar(.25); + return X.moveCtrlPoint(S, b.clone().sub(i), "c1"), X.moveCtrlPoint(S, b.clone().add(i), "c2"), r(), void 0 + } + var p = S.c1, + T = S.c2; + if (p && T) { + if (L === H.Mirrored) return X.moveCtrlPoint(S, b.clone().multiplyScalar(2).sub(T), "c1"), r(), void 0; + if (L === H.Asymmetric && v === H.Disconnected) { + var x = p.clone().sub(b).length(), + i = b.clone().sub(T).setLength(x).add(b); + return X.moveCtrlPoint(S, i, "c1"), r(), void 0 + } + } + I._firePointChange(), Q.fp("shapePointStatus", v, L), N.check(Q.gv, null, new se.Math.Vector2(Q._lastLogicalPoint)) + } + } + } + }, Ao.prototype._handleDataChanged = function () { + var g = "s:edge.points,s:edge.segments,points,segments,shape,position,rotation,scale".split(","); + return function (P) { + var t = this; + if (t.screenInfo && t.target) { + if (P && g.indexOf(P.property) < 0) return; + var O = t._interactor; + t.gatherSingleTarget(O.gv, t.target, !0), t.check(O.gv, null, new se.Math.Vector2(O._lastLogicalPoint)), O._42() + } + } + }(), Ao.prototype.gatherSingleTarget = function (h, c, P) { + var A, N, Q = this; + Q.screenInfo && Q.screenInfo.curve && (N = Q.screenInfo.curve._curves); + var W = Q.editing; + A = W ? Q.screenInfo : Q.screenInfo = {}; + var U, y, C = c instanceof O.Edge; + C ? (U = c.s("edge.segments"), y = c.s("edge.points") || new O.List) : (U = c._58O, y = c._59O), A.S = U; + var b, w = A.P = [], + p = se.getDataMatrix(c); + if (c instanceof O.Polyline || c instanceof O.Edge && Q._interactor.getStyle("edgeElevationEditable")) b = c.getElevation && c.getElevation() || 0, A.E = []; + else { + var G = !1; + y.each(function (i) { + i.e !== Z && (G = !0) + }), G && (A.E = []) + } if (y.each(function (n) { + A.E && A.E.push(n.e != Z ? n.e : b), n = p.apply(n); + var o = se.toScreenPosition(h, n); + w.push(o.x, o.y) + }), C) { + var K = w.length, + x = se.toScreenPosition(h, c._lastSourcePoint || (K ? { + x: w[0], + y: w[1] + } : { + x: 0, + y: 0 + })), + B = se.toScreenPosition(h, c._lastTargetPoint || (K ? { + x: w[K - 2], + y: w[K - 1] + } : { + x: 0, + y: 0 + })); + w.splice(0, 0, x.x, x.y), w.push(B.x, B.y), A.E && (A.E.splice(0, 0, "head"), A.E.push("tail")) + } + if (!A.S || !A.S.size()) { + A.S = new O.List, A.S.add(1); + for (var j = 0; j < w.length / 2 - 1; j++) A.S.add(2) + } + if ((!W || P) && Q.convertToCubicBezier(N), Q.activing && (P || !Q.editing || "realPoint" === Q.editing.type)) { + var d = A.curve.findPairs(Q.activing.point); + Q.activing.pairs = d + } + }, Ao.prototype._convertToNewPoint = function (Y, a, J, L) { + var G, I, H; + for (G = 0, I = a.length; I > G; G++) { + if (H = a[G], H._p1.isNearEnough(Y) && (!L || L.indexOf(H._p1) < 0)) return H._p1; + if (H._p4.isNearEnough(Y) && (!L || L.indexOf(H._p4) < 0)) return H._p4 + } + if (J) + for (G = 0, I = Math.min(J.length, I); I > G; G++) { + if (H = J[G], H._p1 === Y && (!L || L.indexOf(a[G]._p1) < 0)) return a[G]._p1; + if (H._p4 === Y && (!L || L.indexOf(a[G]._p4) < 0)) return a[G]._p4 + } + }, Ao.prototype.convertToCubicBezier = function (S) { + var X, M, N = this, + Z = new se.Math.Curve, + $ = N.screenInfo; + if (Z.createFromHtShape($.P, $.S, $.E), $.curve = Z, N.activing) { + var A = Z._curves; + X = N.activing.point, M = N._convertToNewPoint(X, A, S); + var I = []; + if (M && (N.activing.point = M, I.push(M)), N.activing.selections) { + var o = -1, + F = N.activing.selections; + F.forEach(function (f) { + o++, M = N._convertToNewPoint(f, A, S, I), M && (F[o] = M, I.push(M)) + }) + } + } + }, Ao.prototype.check = function (C, o, p) { + if (!o || jj(o) || Fm(o)) { + var q = this; + if (q._interactor.setCursor("default"), q.editing = null, q.highlight = null, q.tipInfo = null, q.edgeEditResult = null, q.screenInfo) { + if (Cf() || o && Fm(o)) return q._interactor._42(), !0; + if (q._checkEditCtrlPoint(p)) return q._interactor._42(), !0; + if (q._checkEditRealPoint(p)) return q._interactor._42(), !0; + if (q._checkEditElevation(p)) return q._interactor._42(), !0; + var Z = q.screenInfo.curve, + h = Z.checkPoint(p, q._interactor.getStyle("curveIntersectSize")); + if (h) { + var y = q.highlight = {}; + y.type = "insertKnot", y.bezier = h.bezier, y.point = h.intersection + } + return q._interactor._42(), !0 + } + } + }, Ao.prototype.getAdjacentBeziers = function (z) { + var G = this.screenInfo; + if (G) { + var D, T, W, N = G.curve._curves, + d = [], + C = Z; + for (D = 0, T = N.length; T > D; D++) + if (W = N[D], C === Z) { + if (W._p4.isNearEnough(z)) { + d.push(W), C = D; + continue + } + } else { + if (W._p1.isNearEnough(z)) return d.push(W), d; + if (W._p4.isNearEnough(z)) { + d[0] = W, C = D; + continue + } + } + } + }, Ao.prototype.roundCorner = function (i) { + if (this.activing && this.screenInfo) { + var o = this.screenInfo.curve, + X = o._curves, + G = this.getAdjacentBeziers(this.activing.point), + j = G[1], + m = j._index; + j = j.insertKnot(j.getTByPercentage(i / j.length))[1], X[m] = j; + var U = j.p1, + H = G[0], + d = H._index; + H = H.insertKnot(H.getTByPercentage(1 - i / H.length))[0], X[d] = H; + var Q = H.p4, + h = this.activing.point, + v = new se.Math.CubicBezier(Q, h.clone().sub(Q).multiplyScalar(2 / 3).add(Q), h.clone().sub(U).multiplyScalar(2 / 3).add(U), U); + X.splice(m, 0, v), this._writeToHt(), this.activing = null, this._interactor._42() + } + }, Ao.prototype._checkEditRealPoint = function (f) { + var F, W, J, G, $, j, D = this, + h = D.screenInfo.curve._curves, + N = D._interactor.getStyle("curvePointIntersectSize"), + U = 1 / 0; + for (N *= N, J = 0, G = h.length; G > J; J++) F = h[J], $ = F._p1, j = f.distanceToSquared($), U > j && (U = j, W = $), $ = F._p4, j = f.distanceToSquared($), U > j && (U = j, W = $); + if (U > N) return !1; + var y = D.highlight = {}; + return y.type = "changeRealPoint", y.point = W, D.editing = { + type: "realPoint", + point: W, + shiftGuide: { + point: W.clone(), + dir: "x", + limit: 0 + } + }, D._interactor.setCursor("crosshair"), !0 + }, Ao.prototype._checkEditElevation = function (Z) { + var R = this; + if (!R._interactor.getStyle("curveElevationVisible")) return !1; + var w = R.target; + if (w instanceof O.Edge && !R._interactor.getStyle("edgeElevationEditable")) return !1; + var N = R.activing; + if (!N) return !1; + var y = N.getCurrentEditingPoint(); + if (!y) return !1; + var K = R._interactor, + S = K.getStyle("curveElevationGuideShift"), + q = K.getStyle("curveElevationIntersectSize"), + b = Z.distanceToSquared({ + x: y.x + S[0], + y: y.y + S[1] + }); + if (!(b > q * q)) { + var P = R.highlight = {}; + P.type = "elevation"; + var G = new se.Math.Vector2(Z.x, Z.y, y.e); + return R.editing = { + type: "elevation", + startPoint: G + }, R._interactor.setCursor("crosshair"), !0 + } + }, Ao.prototype._checkEditCtrlPoint = function (l) { + var y = this; + if (y.activing && !y.activing.selections) { + var T = y.getCurrentSelectintStatus(); + if (T !== se.Curve.PointType.Straight) { + var M = y.activing.pairs; + if (M) { + var w = y._interactor.getStyle("curvePointIntersectSize"); + w *= w; + var B, n, m, k, O, U, t, v, p, $ = 1 / 0; + for (t = 0, p = M.length; p > t; t++) + for (k = M[t], v = 0; 2 > v; v++) O = 0 === v ? "c1" : "c2", k[O] && (U = l.distanceToSquared(k[O]), $ > U && ($ = U, B = k, n = t, m = O)); + if ($ > w) return !1; + y.activing.hlpair = B, y.activing.hltype = m; + var P = y.highlight = {}; + return P.type = "changeCtrlPoint", P.point = B[m], y.editing = { + type: "ctrlPoint", + pair: B, + pairId: n, + ctrlType: m, + direction: B[m].clone().sub(y.activing.point).normalize() + }, y._interactor.setCursor("crosshair"), !0 + } + } + } + }, Ao.prototype.startEdit = function (G, V) { + G.startDragging(V); + var U = this; + U.highlight && "insertKnot" === U.highlight.type && (U.insertKnot(), U.gatherSingleTarget(U._interactor.gv, U.target), U.activing = null, U._checkEditRealPoint(U._interactor._getLogicalPoint(V))); + var Y = U._activing; + if (Y) { + var I = U.editing ? U.editing.type : null; + "ctrlPoint" === I ? Y.editingCtrl = { + pairId: U.editing.pairId, + type: Y.hltype + } : "realPoint" === I && (Y.editingCtrl = !1) + } + var m = U.highlight, + l = O.Default.isCtrlDown(V); + if (!m || Cf() || Fm(V)) { + var d = U._interactor.gv; + if (!d.setFocus(V) || d._scrolling) return; + return l ? U._multiSelect = { + startPoint: d.lp(V) + } : d.isPannable() && (jj(V) || Fm(V)) && (U._pan = { + tx: d.tx(), + ty: d.ty() + }, G.fi({ + kind: "beginPan", + event: V + })), void 0 + } + if ("changeRealPoint" === m.type) { + var u, X = U.activing ? U.activing.point : null, + S = U.activing ? U.activing.selections : null; + if (l && U.activing) X === m.point ? (S ? (U.activing = { + point: S[0] + }, S.length > 1 && (S.splice(0, 1), U.activing.selections = S)) : U.activing = null, U.editing = null) : S && (u = S.indexOf(m.point)) >= 0 ? (S.length > 1 ? S.splice(u, 1) : delete U.activing.selections, U.editing = null) : S ? (S.push(X), U.activing = { + point: m.point, + selections: S + }) : U.activing = { + point: m.point, + selections: [X] + }; + else if (S) X === m.point || ((u = S.indexOf(m.point)) >= 0 ? (S.splice(u, 1, X), U.activing = { + point: m.point, + selections: S + }) : U.activing = { + point: m.point + }); + else { + var e; + X === m.point && (e = U.activing.status), U.activing = { + point: m.point + }, e && (U.activing.status = e) + } + G.fi({ + kind: "beginEditPoint", + event: V + }) + } + }, Ao.prototype.insertKnot = function () { + var e = this, + L = e.highlight, + x = e.screenInfo.curve; + x.insertKnot(L.bezier, L.point.t), e._writeToHt() + }, Ao.prototype._writeToHt = function () { + var D, w, m = this, + x = m.screenInfo.curve, + c = x.toHtShape(), + r = c.points, + f = [], + a = c.segments, + E = m._interactor.gv; + E.dm().beginTransaction(); + var T, H, q = m.target, + R = q instanceof O.Edge, + y = se.getDataMatrix(q).invert(); + H = q instanceof O.Polyline || q instanceof O.Edge && m._interactor.getStyle("edgeElevationEditable"), H && (T = q.getElevation && q.getElevation() || 0); + for (var s = 0, Q = r.length; Q > s; s++) D = r[s], w = se.toWorldPosition(E, D), w = y.apply(w), isFinite(D.e) && D.e !== T && (w.e = D.e), f.push(w); + if (q._writing = !0, R) { + q.s("edge.type", "points"), q.setStyle("edge.segments", a), q.setStyle("edge.points", f.slice(1, f.length - 1)), q.setStyle("edge.source.offset.x", 0), q.setStyle("edge.source.offset.y", 0), q.setStyle("edge.target.offset.x", 0), q.setStyle("edge.target.offset.y", 0); + var U = m._nextChangeEdgeHost; + delete m._nextChangeEdgeHost, U && ("source" === U.type ? q.setSource(U.host) : q.setTarget(U.host)), m._writeEdgeHostAnchor("source", f[0]), m._writeEdgeHostAnchor("target", f[f.length - 1]) + } else f.length ? (q.setSegments(a), q.setPoints(f, !0)) : q.removeFromDataModel(); + E.dm().endTransaction(), delete q._writing + }, Ao.prototype._writeEdgeHostAnchor = function (s, C) { + var J = this, + R = J.target, + E = J._calcHostAnchor(R, s, C); + E.index !== Z ? (R.setStyle("edge." + s + ".index", E.index), R.setStyle("edge." + s + ".percent", Z), R.setStyle("edge." + s + ".anchor.x", Z), R.setStyle("edge." + s + ".anchor.y", Z)) : E.percent !== Z ? (R.setStyle("edge." + s + ".percent", E.percent), R.setStyle("edge." + s + ".index", Z), R.setStyle("edge." + s + ".anchor.x", Z), R.setStyle("edge." + s + ".anchor.y", Z)) : (R.s("edge." + s + ".anchor.x", E.x), R.s("edge." + s + ".anchor.y", E.y), E.offsetX || E.offsetY ? (R.s("edge." + s + ".offset.x", E.offsetX), R.s("edge." + s + ".offset.y", E.offsetY)) : (R.s("edge." + s + ".offset.x", 0), R.s("edge." + s + ".offset.y", 0))) + }, Ao.prototype._calcHostAnchor = function (R, o, s, h) { + h || (h = "source" === o ? R.getSource() : R.getTarget()); + var Q = this._interactor.gv, + U = Q.calculateAttachPoint(h, s); + if (U) return U.info; + if (Bk(h)) { + var b = Q.calculateEdgePosition(h, s); + return b + } + var J = h.getRotation(), + u = h.getAnchor(); + Th(h, Q) && (J = 0); + var _ = h.getScale(); + if (J || _.x < 0 || _.y < 0) { + var W = h.getMatrix(), + T = W.tfi(s), + l = h.getSize(); + return { + x: T.x / l.width + u.x, + y: T.y / l.height + u.y + } + } + var f = Rp(Q, h), + m = { + x: (s.x - f.x) / f.width, + y: (s.y - f.y) / f.height + }; + return m + }, Ao.prototype._handlePanning = function (Q) { + var Z = this, + s = Z._pan; + if (s) { + s.started = !0; + var U = Z._interactor, + H = U.gv, + b = U._lastClientPoint, + h = lb(Q), + J = wq(H, h, b); + H.setTranslate(s.tx + J.x, s.ty + J.y), Z.gatherSingleTarget(U.gv, Z.target), U._42(), U.fi({ + kind: "betweenPan", + event: Q + }) + } + }, Ao.prototype.handleEdit = function (c, t) { + var z = this, + m = z.editing; + if (z._pan) return z._handlePanning(t), void 0; + if (z._multiSelect) return z._multiSelect.endPoint = c.lp(t), z._interactor.redraw(), void 0; + if (m) { + m.inEdit = !0; + var K, y, b, N = z._interactor._getLogicalPoint(t), + H = O.Default.isCtrlDown(t), + j = O.Default.isShiftDown(t), + Q = m.type, + k = z.activing; + if (z._guideInfo = null, "ctrlPoint" === Q && j) { + var A = z.editing.direction.clone(); + K = k.point; + var R = A.dot(N.clone().sub(K)); + N = A.setLength(R).add(K) + } else if ("ctrlPoint" === Q || "realPoint" === Q) { + var A; + if ("realPoint" === Q && j) { + var V = z.editing.shiftGuide; + y = V.point; + var F = Math.abs(N.x - y.x), + o = Math.abs(N.y - y.y); + F > o && F > V.limit && "y" === V.dir && (V.dir = "x"), o > F && o > V.limit && "x" === V.dir && (V.dir = "y"), A = V.dir, "x" === A ? (N.y = y.y, V.limit = Math.max(V.limit, F)) : "y" === A && (N.x = y.x, V.limit = Math.max(V.limit, o)) + } + var Y = z._isEditEdgeSourceTarget(); + if (Y) { + var _ = z._editEdgeSourceTarget(Y, N, H); + _ && (z.edgeEditResult = _, b = _.tipText) + } else if (!H) { + var w = z._guidingToEdit(N, A), + G = "realPoint" === Q ? z._interactor.gridGuide.findClosest(N, A, !0) : null, + g = 1 / 0, + $ = 1 / 0; + G && (G.x && (g = G.x), G.y && ($ = G.y)); + var P = !1; + w && (w.xList && (Math.abs(w.x) <= Math.abs(g) ? (P = !0, g = w.x) : delete w.xList), w.yList && (Math.abs(w.y) <= Math.abs($) ? (P = !0, $ = w.y) : delete w.yList), P && (z._guideInfo = w)), isFinite(g) && (N.x += g), isFinite($) && (N.y += $), P && (w.v = N) + } + } + var i = z.screenInfo.curve; + if ("realPoint" === m.type) { + K = m.point, K.e !== Z && (N.e = K.e), i.moveRealPoint(K, N), m.point = N, z.highlight.point = N; + var D = k.status, + x = k.selections; + if (z.activing = { + point: N, + status: D + }, x) { + var q = N.clone().sub(K), + T = 0; + x.forEach(function (p) { + var o = p.clone().add(q); + i.moveRealPoint(p, o), x[T++] = o + }), z.activing.selections = x + } + } else if ("ctrlPoint" === m.type) { + var d = k.pairs, + J = d[m.pairId]; + i.moveCtrlPoint(J, N, m.ctrlType); + var e = k.status, + l = se.Curve.PointType; + if ((e === l.Mirrored || e === l.Asymmetric) && J.c1 && J.c2) { + var K = new se.Math.Vector2(k.point), + L = "c1" === m.ctrlType ? "c2" : "c1"; + if (e === se.Curve.PointType.Mirrored) i.moveCtrlPoint(J, K.clone().multiplyScalar(2).sub(N), L); + else if (e === l.Asymmetric) { + var R = J[L].clone().sub(K).length(), + v = K.clone().sub(J[m.ctrlType]).setLength(R).add(K); + isNaN(v.x) || i.moveCtrlPoint(J, v, L) + } + } + k._firePointChange() + } else if ("elevation" === m.type) { + y = m.startPoint; + var U = y.e + (y.y - N.y) / c._zoom; + z._setCurrentPointImpl("e", U), k._firePointChange(), b = "E: " + se.toFixed(U) + } + var f = O.Default.getLogicalPoint(t, z._interactor._canvas); + if (f.x += se.Icons.TipShiftX, f.y += se.Icons.TipShiftY, !b) { + var E = se.toWorldPosition(c, N); + b = "" + se.toFixed(E.x) + ", " + se.toFixed(E.y) + } + z.tipInfo = { + helperPos: f, + text: b, + size: b.length + }, z._writeToHt(), z._interactor.fi({ + kind: "betweenEditPoint", + event: t + }) + } + }, Ao.prototype._setCurrentPointImpl = function (i, j) { + var E = this, + p = E._activing; + if (!p) return !1; + var t = E.target; + if (!t) return !1; + var U = p.getCurrentEditingPoint(); + if (!U) return !1; + var f = p.editingCtrl; + if (!f) var x = U.clone(); + if ("e" === i) U.e = j; + else { + var N; + if ("x" === i || "y" === i) { + var X = p._lastFirePoint; + N = "x" === i ? { + x: j, + y: X ? X.y : 0 + } : { + x: X ? X.x : 0, + y: j + } + } else "object" == typeof i ? (N = i, i.e !== Z && (U.e = i.e)) : (N = { + x: arguments[0], + y: arguments[1] + }, arguments[2] !== Z && (U.e = arguments[2])); + var T = se.getDataMatrix(t); + N = se.toScreenPosition(E._interactor.gv, T.apply(N)), U.x = N.x, U.y = N.y + } if (!f) { + var K = x.multiplyScalar(-1).add(U); + U.e && x.e && (K.e = U.e - x.e); + var C = E.screenInfo.curve; + C.moveCtrlDueToRealPointMovement(U, K); + var J = p.selections; + if (J) { + var u = 0; + J.forEach(function (D) { + var B = D.clone().add(K); + isFinite(K.e) && (B.e = (isFinite(D.e) ? D.e : t.getElevation() || 0) + K.e), C.moveRealPoint(D, B), J[u++] = B + }), p.selections = J + } + } + return !0 + }, Ao.prototype.setCurrentPoint = function (Q, c) { + return this._setCurrentPointImpl(Q, c) ? (this._writeToHt(), !0) : !1 + }, Ao.prototype._isEditEdgeSourceTarget = function () { + var B = this, + W = B.target; + if (!(W instanceof O.Edge)) return !1; + var r = B.editing.point, + m = B.screenInfo.curve._curves; + return r === m[0]._p1 ? "source" : r === m[m.length - 1]._p4 ? "target" : !1 + }, Ao.prototype._editEdgeSourceTarget = function (O, K, T) { + var p, t = this, + v = t.target; + if (p = "source" === O ? v.getSource() : v.getTarget()) { + var C, R = t._interactor.gv, + P = se.toWorldPosition(R, K), + n = t._calcHostAnchor(v, O, P, p); + if (C = n.index !== Z || n.percent !== Z ? n.distance * R.getZoom() > t._interactor.getStyle("edgeHostEdgeMaxDistance") : t._interactor.getStyle("edgeHostDetectPerFrame") ? !0 : n.x < 0 || n.x > 1 || n.y < 0 || n.y > 1 ? !0 : !1) { + var d = R.getDataAt(P, function (o) { + return R.isSelectable(o) ? R.isSourceTargetEditable(v, o, O) ? v.canSetSourceTarget(o, O) ? !0 : !1 : !1 : !1 + }); + if (d) { + var Q = t._calcHostAnchor(v, O, P, d); + p = d, t._nextChangeEdgeHost = { + type: O, + host: d + }, n = Q + } + } + var W, h, B; + if (T || n.x === Z) (n.percent !== Z || n.index !== Z) && (h = n.point); + else { + var b = t._interactor.getStyle("anchorRound"), + E = t._interactor.getStyle("anchorSensitivity"); + W = R.calculateAttachPoint(p, P), W ? n = W.info : (n.x = se.roundTo(n.x, b, E), n.y = se.roundTo(n.y, b, E)), h = Yg(R, p, 0, n.offsetX || 0, n.offsetY || 0, n.x, n.y) + } + h && (B = se.toScreenPosition(R, h), K.x = B.x, K.y = B.y), t._edgeHostGuideInfo = { + corners: se.getTargetCornersOnScreen(R, p), + attach: W ? W.index : -1, + host: p + }; + var M; + return n.percent !== Z ? M = "percent: " + n.percent.toFixed(2) : n.index !== Z ? M = "index: " + n.index : (M = "" + n.x.toFixed(2) + ", " + n.y.toFixed(2), (n.offsetX || n.offsetY) && (M += " offset: " + n.offsetX.toFixed(2) + ", " + n.offsetY.toFixed(2))), { + host: p, + anchor: n, + tipText: M + } + } + }, Ao.prototype._guidingToEdit = function (h, T) { + var L, u, X = this; + if (L = X.screenInfo.curve) { + u = L._curves; + var j, Y, m, e, t, C, f, q, R = 1 / 0, + l = 1 / 0, + H = []; + for (X.editing && "realPoint" === X.editing.type && (q = X.editing.point), t = 0, C = 2 * u.length; C > t; t++) f = u[Math.floor(t / 2)][t % 2 ? "_p4" : "_p1"], H.indexOf(f) >= 0 || (H.push(f), q && q === f || (m = f.x - h.x, e = f.y - h.y, Math.abs(m) < Math.abs(R) ? (R = m, j = [f]) : m === R && j.push(f), Math.abs(e) < Math.abs(l) ? (l = e, Y = [f]) : e === l && Y.push(f))); + var G = X._interactor.getStyle("smartGuideThreshold"); + if ((Math.abs(R) > G || "y" === T) && (j = null), (Math.abs(l) > G || "x" === T) && (Y = null), j || Y) { + var c = !1, + E = {}; + if (j && (c = !0, E.xList = j, E.x = R), Y && (c = !0, E.yList = Y, E.y = l), c) return E + } + } + }, Ao.prototype._46O = function (v) { + var c = this; + c.editing && (c.editing = null, c._interactor.fi({ + kind: "endEditPoint", + event: v + })), c._guideInfo = null, c._edgeHostGuideInfo = null, c._pan && (c._pan = null, c._interactor.fi({ + kind: "endPan", + event: v + })), c._multiSelect && (c._handleMultiSelect(c._multiSelect), c._multiSelect = null), c.tipInfo = null, c.edgeEditResult = null + }, Ao.prototype._handleMultiSelect = function (N) { + if (N.startPoint && N.endPoint) { + var S, v, T, p, n, m = this, + Q = m._interactor, + B = Q.gv, + _ = se.toScreenPosition(B, N.startPoint), + g = se.toScreenPosition(B, N.endPoint), + R = O.Default.unionPoint(_, g), + G = m.screenInfo.curve._curves, + P = [], + s = function (k) { + k.x >= R.x && k.y >= R.y && k.x <= R.x + R.width && k.y <= R.y + R.height && P.indexOf(k) < 0 && P.push(k) + }; + for (S = 0, v = G.length; v > S; S++) n = G[S], s(n._p1), s(n._p4); + if (P.length) { + var J = m.activing || {}, + d = J.selections || []; + for (J.point && d.push(J.point), S = 0, v = d.length; v > S; S++) T = d[S], p = P.indexOf(T), p >= 0 ? P[p] = Z : P.push(T); + var c = P; + for (P = [], S = 0, v = c.length; v > S; S++) c[S] && P.push(c[S]); + v = P.length, 0 === v ? m.activing = null : 1 === v ? m.activing = { + point: P[0] + } : (T = P[v - 1], m.activing = { + point: T, + selections: P.splice(0, v - 1) + }), Q.redraw() + } + } + }, Ao.prototype._canDeletePoint = function (c, g) { + var Z = this.target; + if (!(Z instanceof O.Edge)) return !0; + var L = c._curves[0], + o = c._curves[c._curves.length - 1]; + return L._p1 === g || o._p4 === g ? !1 : !0 + }, Ao.prototype.handleDelete = function () { + var F = this; + if (F.activing && F.screenInfo) { + var c = O.Default.isShiftDown(), + o = F.screenInfo.curve; + F._canDeletePoint(o, F.activing.point) && o.deleteRealPoint(F.activing.point, c), F.activing.selections && F.activing.selections.forEach(function (u) { + F._canDeletePoint(o, u) && o.deleteRealPoint(u, c) + }), F.activing = null, delete F.editing, delete F.tipInfo, delete F.edgeEditResult, delete F._pan, delete F._multiSelect, F._writeToHt(), F._interactor.fp("deleteShapePoint", !1, !0) + } + }, Ao.prototype.handleDoubleClick = function (T) { + var O = this, + P = O._interactor._getLogicalPoint(T); + if (O.screenInfo && O._checkEditRealPoint(P)) { + var k = O.getCurrentSelectintStatus(), + Z = se.Curve.PointType; + return k = k === Z.Mirrored ? Z.Straight : Z.Mirrored, O._setCurrentSelectionStatus(k), O._interactor._42(), !0 + } + }, Ao.prototype._drawHighlight = function (d) { + var s = this, + x = s.highlight; + if (x) { + var o = x.bezier, + L = s._interactor; + o && se.Icons.DrawIcon(L, d, se.Icons.ShapeHighlightCurve, [o._p1.x, o._p1.y, o._p2.x, o._p2.y, o._p3.x, o._p3.y, o._p4.x, o._p4.y]); + var b = x.point; + b && "insertKnot" === x.type && se.Icons.DrawIcon(L, d, se.Icons.ShapeHighlighPoint, b) + } + }, Ao.prototype._drawGuide = function (V) { + var K = this, + H = K._guideInfo; + if (H) { + var l, y, G, i, c = H.v; + for (l = 0; 2 > l; l++) + if (i = 0 === l ? H.xList : H.yList) + for (y = 0, G = i.length; G > y; y++) se.Icons.DrawIcon(K._interactor, V, se.Icons.ShapeGuideLine, [c.x, c.y, i[y].x, i[y].y]) + } + }, Ao.prototype._drawCurrentPoint = function (M) { + var q = this; + if (q.activing) { + var C = q.activing, + s = q.getCurrentSelectintStatus(), + K = q._interactor; + if (s !== se.Curve.PointType.Straight) { + var Z = C.pairs; + C.hlpair, C.hltype; + var p = C.selections, + F = C.editingCtrl; + if (Z && !p) { + var E, u, S; + for (u = 0, S = Z.length; S > u; u++) E = Z[u], F && u === F.pairId && E[F.type] ? se.Icons.DrawIcon(K, M, se.Icons.ShapeActivingCtrl, { + point: E.point, + c1: E.c1, + c2: E.c2, + hl: F.type + }) : se.Icons.DrawIcon(K, M, se.Icons.ShapeActivingCtrl, E) + } + } + se.Icons.DrawIcon(K, M, se.Icons.ShapeHighlighRealPoint, q.activing.point), p && p.forEach(function (S) { + se.Icons.DrawIcon(K, M, se.Icons.ShapeHighlighRealPoint, S) + }) + } + }, Ao.prototype.clear = function () { + var d = this; + d.editing = null, d._guideInfo = null, d.activing = null, d.highlight = null + }, Ao.prototype._42 = function (C) { + var j = this; + j.info = {}, j.editing || (j.screenInfo = null); + var R = j._interactor; + if (!R.editDetail) return j.clear(), void 0; + var t = R.gv; + if (!j.target || !t.isSelected(j.target) || !t.isVisible(j.target)) return R.editDetail = !1, j.clear(), void 0; + if (j.gatherSingleTarget(t, j.target), se.Icons.DrawIcon(R, C, se.Icons.ShapeBgCurve, j.screenInfo), j._interactor.getStyle("curveElevationVisible") && (j.target instanceof O.Polyline || j.target instanceof O.Edge && j._interactor.getStyle("edgeElevationEditable")) && j.activing) { + var M = j.activing.getCurrentEditingPoint(); + M && "string" != typeof M.e && se.Icons.DrawIcon(R, C, se.Icons.EdgeElevationGuide, M) + } + if (j._drawHighlight(C), j._drawCurrentPoint(C), j._getRealPoint().forEach(function (Q) { + se.Icons.DrawIcon(R, C, se.Icons.ShapePoint, Q) + }), j._drawGuide(C), j.tipInfo && j._interactor.getStyle("curveTipVisible") && se.Icons.DrawIcon(R, C, se.Icons.TipHelper, j.tipInfo), j._edgeHostGuideInfo && R._drawHostGuide(j._edgeHostGuideInfo), j.edgeEditResult && j._drawEdgeHostHighlight(C, j.edgeEditResult.host, j.edgeEditResult.anchor), j._multiSelect && j._multiSelect.endPoint) { + var s = O.Default.unionPoint(se.toScreenPosition(t, j._multiSelect.startPoint), se.toScreenPosition(t, j._multiSelect.endPoint)); + s.color = t.getRectSelectBorderColor(), C.save(), C.setTransform(1, 0, 0, 1, 0, 0); + var L = x.devicePixelRatio, + p = s.borderWidth = Math.round(L); + p /= 2, s.x = Math.round(s.x * L) + p, s.y = Math.round(s.y * L) + p, s.width = Math.round(s.width * L), s.height = Math.round(s.height * L), se.Icons.DrawIcon(R, C, se.Icons.SimpleRect, s), C.restore() + } + }, Ao.prototype._drawEdgeHostHighlight = function (D, j, $) { + this.drawEdgeHostHighlight(D, j, $), this._interactor.redraw() + }, Ao.prototype.drawEdgeHostHighlight = function (m, V, K) { + if (Bk(V)) { + var u, O, $, R, A = this, + k = A._interactor, + b = k.gv, + D = b.getDataUI(V), + C = gl(D), + E = []; + for ($ = 0, R = C.points.length; R > $; $++) O = se.toScreenPosition(b, C.points.get($)), E.push(O.x, O.y); + C.segments && (u = C.segments.toArray()); + var l = k.getStyle("edgeHostHighlighPeriod"), + N = k.getStyle("edgeHostEdgeHighlighColor"); + se.Icons.DrawIcon(k, m, se.Icons.ShapeBgCurve, { + P: E, + S: u, + color: N, + dynamicVisible: K.index === Z, + dynamicPeriod: l + }), N = k.getStyle("edgeHostPointHighlighColor"); + var e = Kk(D); + for ($ = 0, R = e.length; R > $; $++) { + var c = e[$], + y = se.toScreenPosition(b, c); + se.Icons.DrawIcon(k, m, se.Icons.ShapePoint, { + point: { + x: y.x, + y: y.y + }, + color: N, + size: 12, + dynamicVisible: $ === K.index, + dynamicPeriod: l + }) + } + } + }, Ao.prototype._getRealPoint = function () { + var p, n = this.screenInfo, + z = n.P, + _ = n.S, + T = -1, + L = [], + Z = -1, + D = _.length; + return _.each(function (C) { + Z++; + var G = 1; + if (3 === C) G = 2; + else if (4 === C) G = 3; + else if (5 === C) return; + T += G, p = Z + 1 >= D ? !0 : 1 === _.get(Z + 1) ? !0 : !1, L.push({ + point: { + x: z[2 * T], + y: z[2 * T + 1] + }, + segmentIndex: Z, + pointIndex: T, + isEnd: p + }) + }), L + }, Ao.prototype.getEditingPointsInfo = function (V) { + var e = this, + b = e.activing; + if (!b) return !1; + var v = b.point; + if (!v) return !1; + var j = this._getRealPoint(), + z = [{ + screen: v + }]; + b.selections && b.selections.forEach(function (s) { + z.push({ + screen: s + }) + }); + var c, s, y = j.length; + return z.forEach(function (R) { + for (c = 0; y > c; c++) + if (s = j[c], R.screen.isNearEnough(s.point)) { + R.segmentIndex = s.segmentIndex, R.pointIndex = s.pointIndex, R.point = e.target.getPoints().get(s.pointIndex); + break + } + }), V && z.sort(function (O, o) { + return O.segmentIndex - o.segmentIndex + }), z + }; + var If = se.MoveHelper = function (W) { + var x = this; + x.catalog = "Move", x._interactor = W + }; + If.prototype = {}, If.prototype.constructor = If, If.prototype.calcShift = function (e, n, m) { + var T, E, w = this, + r = w._interactor.gv, + c = r.lp(n); + if ("beginMove" === e && w._gatherGridInfo(m._lastLogicalPoint || c), T = w._target) { + var N = T.downPosition; + if (N) { + var K = w._interactor.getStyle("moveSensitivity") / r._zoom; + if (N.distanceTo(c) < K) return { + x: 0, + y: 0 + }; + delete T.downPosition + } + var S; + E = O.Default.isShiftDown(n), E && (c = w._dealShiftDown(c), S = T.shiftGuide.dir); + var o, Z = T.rawPos = { + x: T.pos.x + c.x - T.lp.x, + y: T.pos.y + c.y - T.lp.y + }; + if (O.Default.isCtrlDown(n)) { + if (o = w._calcShiftByAddon(), w._target.node instanceof se.Group) { + var k = w._target.node; + k._position.x += o.x, k._position.y += o.y + } + return o + } + var d = w._interactor.rectGuide; + if (T.node instanceof O.Data && T.node.s("2d.attachable")) { + var H = w._calcAttachNodeShift(T.node, Z); + if (d.clear(), H) return H + } + for (var s, v = T.x + Z.x, I = T.y + Z.y, z = { + x: v, + y: I + }, U = { + x: v + T.w / 2, + y: I + T.h / 2 + }, Y = { + x: v + T.w, + y: I + T.h + }, i = w._interactor.gridGuide, R = [d.findClosest(z, S), d.findClosest(U, S), d.findClosest(Y, S), i.findClosest(z, S), i.findClosest(U, S), i.findClosest(Y, S)], L = 1 / 0, $ = 1 / 0, l = 0, _ = R.length; _ > l; l++) s = R[l], s && (v = s.x, I = s.y, isFinite(v) && Math.abs(v) < Math.abs(L) && (L = v), isFinite(I) && Math.abs(I) < Math.abs($) && ($ = I)); + if (isFinite(L) || (L = 0), isFinite($) || ($ = 0), o = w._calcShiftByAddon(L, $), w._target.node instanceof se.Group) { + var k = w._target.node; + k._position.x += o.x, k._position.y += o.y + } + var Q = T.node; + if (!Th(Q, r)) { + var h = Z.x + L, + x = Z.y + $; + w._interactor.rectGuide.gatherLines({ + node: Q, + x: T.x + h, + y: T.y + x, + w: T.w, + h: T.h + }, S) + } + return o + } + }, If.prototype._calcShiftByAddon = function (V, J) { + var Z = this._target, + g = Z.rawPos, + $ = Z.node.getPosition(); + return V = V || 0, J = J || 0, { + x: g.x - $.x + V, + y: g.y - $.y + J + } + }, If.prototype._dealShiftDown = function (p) { + var m = this, + x = m._target.shiftGuide, + K = m._target.lp, + M = Math.abs(p.x - K.x), + $ = Math.abs(p.y - K.y); + M > $ && M > x.limit && "y" === x.dir && (x.dir = "x"), $ > M && $ > x.limit && "x" === x.dir && (x.dir = "y"); + var j = x.dir; + return "x" === j ? (p.y = K.y, x.limit = Math.max(x.limit, M)) : "y" === j && (p.x = K.x, x.limit = Math.max(x.limit, $)), p + }, If.prototype._isAttachableLineShape = function ($) { + if (!$.getSegments) return !1; + var t = $.getSegments(); + if (!t) return !0; + t instanceof O.List && (t = t.getArray()); + for (var L = 1, G = t.length; G > L; L++) + if (2 !== t[L]) return !1; + return !0 + }, If.prototype._calcAttachNodeShift = function () { + var x = new Xi, + K = new Xi, + l = new Xi, + G = new Xi; + return function (N, U) { + var r = this._interactor.gv, + p = N.getHost(), + O = r.getDataAt(U, function (C) { + return C.s("2d.hostable") ? !0 : !1 + }); + if (O && p !== O && N.setHost(O), !O) return this._edgeHostGuideInfo = null, N.setHost(null); + var k = this._edgeHostGuideInfo = { + corners: se.getTargetCornersOnScreen(r, O), + host: O, + attach: -1 + }; + if (this._isAttachableLineShape(O)) { + for (var u, a, y, P, J, H, h = O.getPoints(), I = h.size(), Z = O.getPointsMatrix2d(), s = 1 / 0, q = 0; I > q && (q !== I - 1 || O.isClosePath()); q++) 0 !== q ? K.copy(l) : Z.apply(h.get(q), K), Z.apply(q === I - 1 ? h.get(0) : h.get(q + 1), l), x.copy(U).sub(K), G.copy(l).sub(K), u = G.length(), G.divideScalar(u), a = x.dot(G), 0 > a ? a = 0 : a > u && (a = u), G.multiplyScalar(a).add(K), y = x.copy(U).sub(G).lengthSq(), s > y && (s = y, H = q, P = a, J = u); + return Math.sqrt(s) * r.getZoom() > this._interactor.getStyle("attachThreshold") ? (N.s({ + "attach.index": -1 + }), N.setHost(null), void 0) : (N.s("attach.offset.opposite") && (P = J - P), N.s({ + "attach.index": H, + "attach.offset": N.s("attach.offset.relative") ? P / J : P + }), { + x: 0, + y: 0 + }) + } + var B = r.calculateAttachPoint(O, U); + if (B) { + var Y = B.point; + return k.attach = B.index, this._calcShiftByAddon(Y.x - U.x, Y.y - U.y) + } + } + }(), If.prototype._gatherGridInfo = function (C) { + var y, D = this, + T = D._interactor, + W = T._getValidSelection(); + if (W.length) { + if (1 === W.length) { + if (y = W[0], !y.getRect) return D._target = null, void 0 + } else if (y = se.Group.findOrCreateGroup(W), !y) return D._target = null, void 0 + } else { + var W = T.gv.sm().getSelection(); + if (W.length && (y = W.get(0), !y.getRect)) return D._target = null, void 0 + } if (y) { + var _ = y.getPosition(), + l = y.getRect(); + D._target = { + node: y, + x: l.x - _.x, + y: l.y - _.y, + w: l.width, + h: l.height, + lp: { + x: C.x, + y: C.y + }, + pos: { + x: _.x, + y: _.y + }, + shiftGuide: { + dir: "x", + limit: 0 + }, + downPosition: new se.Math.Vector2(C) + }, T.rectGuide.gatherRects() + } + }, If.prototype.clear = function () { + var l = this; + l._edgeHostGuideInfo = null, l._interactor.rectGuide.clear(), l._interactor._42() + }, If.prototype._42 = function () { + var j = this._edgeHostGuideInfo; + j && this._interactor._drawHostGuide(j) + }; + var Ah = o.freeze({ + DEPTH_BUFFER_BIT: 256, + STENCIL_BUFFER_BIT: 1024, + COLOR_BUFFER_BIT: 16384, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + ZERO: 0, + ONE: 1, + SRC_COLOR: 768, + ONE_MINUS_SRC_COLOR: 769, + SRC_ALPHA: 770, + ONE_MINUS_SRC_ALPHA: 771, + DST_ALPHA: 772, + ONE_MINUS_DST_ALPHA: 773, + DST_COLOR: 774, + ONE_MINUS_DST_COLOR: 775, + SRC_ALPHA_SATURATE: 776, + FUNC_ADD: 32774, + BLEND_EQUATION: 32777, + BLEND_EQUATION_RGB: 32777, + BLEND_EQUATION_ALPHA: 34877, + FUNC_SUBTRACT: 32778, + FUNC_REVERSE_SUBTRACT: 32779, + BLEND_DST_RGB: 32968, + BLEND_SRC_RGB: 32969, + BLEND_DST_ALPHA: 32970, + BLEND_SRC_ALPHA: 32971, + CONSTANT_COLOR: 32769, + ONE_MINUS_CONSTANT_COLOR: 32770, + CONSTANT_ALPHA: 32771, + ONE_MINUS_CONSTANT_ALPHA: 32772, + BLEND_COLOR: 32773, + ARRAY_BUFFER: 34962, + ELEMENT_ARRAY_BUFFER: 34963, + ARRAY_BUFFER_BINDING: 34964, + ELEMENT_ARRAY_BUFFER_BINDING: 34965, + STREAM_DRAW: 35040, + STATIC_DRAW: 35044, + DYNAMIC_DRAW: 35048, + BUFFER_SIZE: 34660, + BUFFER_USAGE: 34661, + CURRENT_VERTEX_ATTRIB: 34342, + FRONT: 1028, + BACK: 1029, + FRONT_AND_BACK: 1032, + CULL_FACE: 2884, + BLEND: 3042, + DITHER: 3024, + STENCIL_TEST: 2960, + DEPTH_TEST: 2929, + SCISSOR_TEST: 3089, + POLYGON_OFFSET_FILL: 32823, + SAMPLE_ALPHA_TO_COVERAGE: 32926, + SAMPLE_COVERAGE: 32928, + NO_ERROR: 0, + INVALID_ENUM: 1280, + INVALID_VALUE: 1281, + INVALID_OPERATION: 1282, + OUT_OF_MEMORY: 1285, + CW: 2304, + CCW: 2305, + LINE_WIDTH: 2849, + ALIASED_POINT_SIZE_RANGE: 33901, + ALIASED_LINE_WIDTH_RANGE: 33902, + CULL_FACE_MODE: 2885, + FRONT_FACE: 2886, + DEPTH_RANGE: 2928, + DEPTH_WRITEMASK: 2930, + DEPTH_CLEAR_VALUE: 2931, + DEPTH_FUNC: 2932, + STENCIL_CLEAR_VALUE: 2961, + STENCIL_FUNC: 2962, + STENCIL_FAIL: 2964, + STENCIL_PASS_DEPTH_FAIL: 2965, + STENCIL_PASS_DEPTH_PASS: 2966, + STENCIL_REF: 2967, + STENCIL_VALUE_MASK: 2963, + STENCIL_WRITEMASK: 2968, + STENCIL_BACK_FUNC: 34816, + STENCIL_BACK_FAIL: 34817, + STENCIL_BACK_PASS_DEPTH_FAIL: 34818, + STENCIL_BACK_PASS_DEPTH_PASS: 34819, + STENCIL_BACK_REF: 36003, + STENCIL_BACK_VALUE_MASK: 36004, + STENCIL_BACK_WRITEMASK: 36005, + VIEWPORT: 2978, + SCISSOR_BOX: 3088, + COLOR_CLEAR_VALUE: 3106, + COLOR_WRITEMASK: 3107, + UNPACK_ALIGNMENT: 3317, + PACK_ALIGNMENT: 3333, + MAX_TEXTURE_SIZE: 3379, + MAX_VIEWPORT_DIMS: 3386, + SUBPIXEL_BITS: 3408, + RED_BITS: 3410, + GREEN_BITS: 3411, + BLUE_BITS: 3412, + ALPHA_BITS: 3413, + DEPTH_BITS: 3414, + STENCIL_BITS: 3415, + POLYGON_OFFSET_UNITS: 10752, + POLYGON_OFFSET_FACTOR: 32824, + TEXTURE_BINDING_2D: 32873, + SAMPLE_BUFFERS: 32936, + SAMPLES: 32937, + SAMPLE_COVERAGE_VALUE: 32938, + SAMPLE_COVERAGE_INVERT: 32939, + COMPRESSED_TEXTURE_FORMATS: 34467, + DONT_CARE: 4352, + FASTEST: 4353, + NICEST: 4354, + GENERATE_MIPMAP_HINT: 33170, + BYTE: 5120, + UNSIGNED_BYTE: 5121, + SHORT: 5122, + UNSIGNED_SHORT: 5123, + INT: 5124, + UNSIGNED_INT: 5125, + FLOAT: 5126, + DEPTH_COMPONENT: 6402, + ALPHA: 6406, + RGB: 6407, + RGBA: 6408, + LUMINANCE: 6409, + LUMINANCE_ALPHA: 6410, + UNSIGNED_SHORT_4_4_4_4: 32819, + UNSIGNED_SHORT_5_5_5_1: 32820, + UNSIGNED_SHORT_5_6_5: 33635, + FRAGMENT_SHADER: 35632, + VERTEX_SHADER: 35633, + MAX_VERTEX_ATTRIBS: 34921, + MAX_VERTEX_UNIFORM_VECTORS: 36347, + MAX_VARYING_VECTORS: 36348, + MAX_COMBINED_TEXTURE_IMAGE_UNITS: 35661, + MAX_VERTEX_TEXTURE_IMAGE_UNITS: 35660, + MAX_TEXTURE_IMAGE_UNITS: 34930, + MAX_FRAGMENT_UNIFORM_VECTORS: 36349, + SHADER_TYPE: 35663, + DELETE_STATUS: 35712, + LINK_STATUS: 35714, + VALIDATE_STATUS: 35715, + ATTACHED_SHADERS: 35717, + ACTIVE_UNIFORMS: 35718, + ACTIVE_ATTRIBUTES: 35721, + SHADING_LANGUAGE_VERSION: 35724, + CURRENT_PROGRAM: 35725, + NEVER: 512, + LESS: 513, + EQUAL: 514, + LEQUAL: 515, + GREATER: 516, + NOTEQUAL: 517, + GEQUAL: 518, + ALWAYS: 519, + KEEP: 7680, + REPLACE: 7681, + INCR: 7682, + DECR: 7683, + INVERT: 5386, + INCR_WRAP: 34055, + DECR_WRAP: 34056, + VENDOR: 7936, + RENDERER: 7937, + VERSION: 7938, + NEAREST: 9728, + LINEAR: 9729, + NEAREST_MIPMAP_NEAREST: 9984, + LINEAR_MIPMAP_NEAREST: 9985, + NEAREST_MIPMAP_LINEAR: 9986, + LINEAR_MIPMAP_LINEAR: 9987, + TEXTURE_MAG_FILTER: 10240, + TEXTURE_MIN_FILTER: 10241, + TEXTURE_WRAP_S: 10242, + TEXTURE_WRAP_T: 10243, + TEXTURE_2D: 3553, + TEXTURE: 5890, + TEXTURE_CUBE_MAP: 34067, + TEXTURE_BINDING_CUBE_MAP: 34068, + TEXTURE_CUBE_MAP_POSITIVE_X: 34069, + TEXTURE_CUBE_MAP_NEGATIVE_X: 34070, + TEXTURE_CUBE_MAP_POSITIVE_Y: 34071, + TEXTURE_CUBE_MAP_NEGATIVE_Y: 34072, + TEXTURE_CUBE_MAP_POSITIVE_Z: 34073, + TEXTURE_CUBE_MAP_NEGATIVE_Z: 34074, + MAX_CUBE_MAP_TEXTURE_SIZE: 34076, + TEXTURE0: 33984, + TEXTURE1: 33985, + TEXTURE2: 33986, + TEXTURE3: 33987, + TEXTURE4: 33988, + TEXTURE5: 33989, + TEXTURE6: 33990, + TEXTURE7: 33991, + TEXTURE8: 33992, + TEXTURE9: 33993, + TEXTURE10: 33994, + TEXTURE11: 33995, + TEXTURE12: 33996, + TEXTURE13: 33997, + TEXTURE14: 33998, + TEXTURE15: 33999, + TEXTURE16: 34e3, + TEXTURE17: 34001, + TEXTURE18: 34002, + TEXTURE19: 34003, + TEXTURE20: 34004, + TEXTURE21: 34005, + TEXTURE22: 34006, + TEXTURE23: 34007, + TEXTURE24: 34008, + TEXTURE25: 34009, + TEXTURE26: 34010, + TEXTURE27: 34011, + TEXTURE28: 34012, + TEXTURE29: 34013, + TEXTURE30: 34014, + TEXTURE31: 34015, + ACTIVE_TEXTURE: 34016, + REPEAT: 10497, + CLAMP_TO_EDGE: 33071, + MIRRORED_REPEAT: 33648, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + INT_VEC2: 35667, + INT_VEC3: 35668, + INT_VEC4: 35669, + BOOL: 35670, + BOOL_VEC2: 35671, + BOOL_VEC3: 35672, + BOOL_VEC4: 35673, + FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + SAMPLER_2D: 35678, + SAMPLER_CUBE: 35680, + VERTEX_ATTRIB_ARRAY_ENABLED: 34338, + VERTEX_ATTRIB_ARRAY_SIZE: 34339, + VERTEX_ATTRIB_ARRAY_STRIDE: 34340, + VERTEX_ATTRIB_ARRAY_TYPE: 34341, + VERTEX_ATTRIB_ARRAY_NORMALIZED: 34922, + VERTEX_ATTRIB_ARRAY_POINTER: 34373, + VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 34975, + IMPLEMENTATION_COLOR_READ_TYPE: 35738, + IMPLEMENTATION_COLOR_READ_FORMAT: 35739, + COMPILE_STATUS: 35713, + LOW_FLOAT: 36336, + MEDIUM_FLOAT: 36337, + HIGH_FLOAT: 36338, + LOW_INT: 36339, + MEDIUM_INT: 36340, + HIGH_INT: 36341, + FRAMEBUFFER: 36160, + RENDERBUFFER: 36161, + RGBA4: 32854, + RGB5_A1: 32855, + RGB565: 36194, + DEPTH_COMPONENT16: 33189, + STENCIL_INDEX: 6401, + STENCIL_INDEX8: 36168, + DEPTH_STENCIL: 34041, + RENDERBUFFER_WIDTH: 36162, + RENDERBUFFER_HEIGHT: 36163, + RENDERBUFFER_INTERNAL_FORMAT: 36164, + RENDERBUFFER_RED_SIZE: 36176, + RENDERBUFFER_GREEN_SIZE: 36177, + RENDERBUFFER_BLUE_SIZE: 36178, + RENDERBUFFER_ALPHA_SIZE: 36179, + RENDERBUFFER_DEPTH_SIZE: 36180, + RENDERBUFFER_STENCIL_SIZE: 36181, + FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 36048, + FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 36049, + FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 36050, + FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 36051, + COLOR_ATTACHMENT0: 36064, + DEPTH_ATTACHMENT: 36096, + STENCIL_ATTACHMENT: 36128, + DEPTH_STENCIL_ATTACHMENT: 33306, + NONE: 0, + FRAMEBUFFER_COMPLETE: 36053, + FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 36054, + FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 36055, + FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 36057, + FRAMEBUFFER_UNSUPPORTED: 36061, + FRAMEBUFFER_BINDING: 36006, + RENDERBUFFER_BINDING: 36007, + MAX_RENDERBUFFER_SIZE: 34024, + INVALID_FRAMEBUFFER_OPERATION: 1286, + UNPACK_FLIP_Y_WEBGL: 37440, + UNPACK_PREMULTIPLY_ALPHA_WEBGL: 37441, + CONTEXT_LOST_WEBGL: 37442, + UNPACK_COLORSPACE_CONVERSION_WEBGL: 37443, + BROWSER_DEFAULT_WEBGL: 37444, + COMPRESSED_RGB_S3TC_DXT1_EXT: 33776, + COMPRESSED_RGBA_S3TC_DXT1_EXT: 33777, + COMPRESSED_RGBA_S3TC_DXT3_EXT: 33778, + COMPRESSED_RGBA_S3TC_DXT5_EXT: 33779, + COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840, + COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841, + COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842, + COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843, + COMPRESSED_RGB_ETC1_WEBGL: 36196, + HALF_FLOAT_OES: 36193, + DOUBLE: 5130, + READ_BUFFER: 3074, + UNPACK_ROW_LENGTH: 3314, + UNPACK_SKIP_ROWS: 3315, + UNPACK_SKIP_PIXELS: 3316, + PACK_ROW_LENGTH: 3330, + PACK_SKIP_ROWS: 3331, + PACK_SKIP_PIXELS: 3332, + COLOR: 6144, + DEPTH: 6145, + STENCIL: 6146, + RED: 6403, + RGB8: 32849, + RGBA8: 32856, + RGB10_A2: 32857, + TEXTURE_BINDING_3D: 32874, + UNPACK_SKIP_IMAGES: 32877, + UNPACK_IMAGE_HEIGHT: 32878, + TEXTURE_3D: 32879, + TEXTURE_WRAP_R: 32882, + MAX_3D_TEXTURE_SIZE: 32883, + UNSIGNED_INT_2_10_10_10_REV: 33640, + MAX_ELEMENTS_VERTICES: 33e3, + MAX_ELEMENTS_INDICES: 33001, + TEXTURE_MIN_LOD: 33082, + TEXTURE_MAX_LOD: 33083, + TEXTURE_BASE_LEVEL: 33084, + TEXTURE_MAX_LEVEL: 33085, + MIN: 32775, + MAX: 32776, + DEPTH_COMPONENT24: 33190, + MAX_TEXTURE_LOD_BIAS: 34045, + TEXTURE_COMPARE_MODE: 34892, + TEXTURE_COMPARE_FUNC: 34893, + CURRENT_QUERY: 34917, + QUERY_RESULT: 34918, + QUERY_RESULT_AVAILABLE: 34919, + STREAM_READ: 35041, + STREAM_COPY: 35042, + STATIC_READ: 35045, + STATIC_COPY: 35046, + DYNAMIC_READ: 35049, + DYNAMIC_COPY: 35050, + MAX_DRAW_BUFFERS: 34852, + DRAW_BUFFER0: 34853, + DRAW_BUFFER1: 34854, + DRAW_BUFFER2: 34855, + DRAW_BUFFER3: 34856, + DRAW_BUFFER4: 34857, + DRAW_BUFFER5: 34858, + DRAW_BUFFER6: 34859, + DRAW_BUFFER7: 34860, + DRAW_BUFFER8: 34861, + DRAW_BUFFER9: 34862, + DRAW_BUFFER10: 34863, + DRAW_BUFFER11: 34864, + DRAW_BUFFER12: 34865, + DRAW_BUFFER13: 34866, + DRAW_BUFFER14: 34867, + DRAW_BUFFER15: 34868, + MAX_FRAGMENT_UNIFORM_COMPONENTS: 35657, + MAX_VERTEX_UNIFORM_COMPONENTS: 35658, + SAMPLER_3D: 35679, + SAMPLER_2D_SHADOW: 35682, + FRAGMENT_SHADER_DERIVATIVE_HINT: 35723, + PIXEL_PACK_BUFFER: 35051, + PIXEL_UNPACK_BUFFER: 35052, + PIXEL_PACK_BUFFER_BINDING: 35053, + PIXEL_UNPACK_BUFFER_BINDING: 35055, + FLOAT_MAT2x3: 35685, + FLOAT_MAT2x4: 35686, + FLOAT_MAT3x2: 35687, + FLOAT_MAT3x4: 35688, + FLOAT_MAT4x2: 35689, + FLOAT_MAT4x3: 35690, + SRGB: 35904, + SRGB8: 35905, + SRGB8_ALPHA8: 35907, + COMPARE_REF_TO_TEXTURE: 34894, + RGBA32F: 34836, + RGB32F: 34837, + RGBA16F: 34842, + RGB16F: 34843, + VERTEX_ATTRIB_ARRAY_INTEGER: 35069, + MAX_ARRAY_TEXTURE_LAYERS: 35071, + MIN_PROGRAM_TEXEL_OFFSET: 35076, + MAX_PROGRAM_TEXEL_OFFSET: 35077, + MAX_VARYING_COMPONENTS: 35659, + TEXTURE_2D_ARRAY: 35866, + TEXTURE_BINDING_2D_ARRAY: 35869, + R11F_G11F_B10F: 35898, + UNSIGNED_INT_10F_11F_11F_REV: 35899, + RGB9_E5: 35901, + UNSIGNED_INT_5_9_9_9_REV: 35902, + TRANSFORM_FEEDBACK_BUFFER_MODE: 35967, + MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 35968, + TRANSFORM_FEEDBACK_VARYINGS: 35971, + TRANSFORM_FEEDBACK_BUFFER_START: 35972, + TRANSFORM_FEEDBACK_BUFFER_SIZE: 35973, + TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 35976, + RASTERIZER_DISCARD: 35977, + MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 35978, + MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 35979, + INTERLEAVED_ATTRIBS: 35980, + SEPARATE_ATTRIBS: 35981, + TRANSFORM_FEEDBACK_BUFFER: 35982, + TRANSFORM_FEEDBACK_BUFFER_BINDING: 35983, + RGBA32UI: 36208, + RGB32UI: 36209, + RGBA16UI: 36214, + RGB16UI: 36215, + RGBA8UI: 36220, + RGB8UI: 36221, + RGBA32I: 36226, + RGB32I: 36227, + RGBA16I: 36232, + RGB16I: 36233, + RGBA8I: 36238, + RGB8I: 36239, + RED_INTEGER: 36244, + RGB_INTEGER: 36248, + RGBA_INTEGER: 36249, + SAMPLER_2D_ARRAY: 36289, + SAMPLER_2D_ARRAY_SHADOW: 36292, + SAMPLER_CUBE_SHADOW: 36293, + UNSIGNED_INT_VEC2: 36294, + UNSIGNED_INT_VEC3: 36295, + UNSIGNED_INT_VEC4: 36296, + INT_SAMPLER_2D: 36298, + INT_SAMPLER_3D: 36299, + INT_SAMPLER_CUBE: 36300, + INT_SAMPLER_2D_ARRAY: 36303, + UNSIGNED_INT_SAMPLER_2D: 36306, + UNSIGNED_INT_SAMPLER_3D: 36307, + UNSIGNED_INT_SAMPLER_CUBE: 36308, + UNSIGNED_INT_SAMPLER_2D_ARRAY: 36311, + DEPTH_COMPONENT32F: 36012, + DEPTH32F_STENCIL8: 36013, + FLOAT_32_UNSIGNED_INT_24_8_REV: 36269, + FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 33296, + FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 33297, + FRAMEBUFFER_ATTACHMENT_RED_SIZE: 33298, + FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 33299, + FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 33300, + FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 33301, + FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 33302, + FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 33303, + FRAMEBUFFER_DEFAULT: 33304, + UNSIGNED_INT_24_8: 34042, + DEPTH24_STENCIL8: 35056, + UNSIGNED_NORMALIZED: 35863, + DRAW_FRAMEBUFFER_BINDING: 36006, + READ_FRAMEBUFFER: 36008, + DRAW_FRAMEBUFFER: 36009, + READ_FRAMEBUFFER_BINDING: 36010, + RENDERBUFFER_SAMPLES: 36011, + FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 36052, + MAX_COLOR_ATTACHMENTS: 36063, + COLOR_ATTACHMENT1: 36065, + COLOR_ATTACHMENT2: 36066, + COLOR_ATTACHMENT3: 36067, + COLOR_ATTACHMENT4: 36068, + COLOR_ATTACHMENT5: 36069, + COLOR_ATTACHMENT6: 36070, + COLOR_ATTACHMENT7: 36071, + COLOR_ATTACHMENT8: 36072, + COLOR_ATTACHMENT9: 36073, + COLOR_ATTACHMENT10: 36074, + COLOR_ATTACHMENT11: 36075, + COLOR_ATTACHMENT12: 36076, + COLOR_ATTACHMENT13: 36077, + COLOR_ATTACHMENT14: 36078, + COLOR_ATTACHMENT15: 36079, + FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 36182, + MAX_SAMPLES: 36183, + HALF_FLOAT: 5131, + RG: 33319, + RG_INTEGER: 33320, + R8: 33321, + RG8: 33323, + R16F: 33325, + R32F: 33326, + RG16F: 33327, + RG32F: 33328, + R8I: 33329, + R8UI: 33330, + R16I: 33331, + R16UI: 33332, + R32I: 33333, + R32UI: 33334, + RG8I: 33335, + RG8UI: 33336, + RG16I: 33337, + RG16UI: 33338, + RG32I: 33339, + RG32UI: 33340, + VERTEX_ARRAY_BINDING: 34229, + R8_SNORM: 36756, + RG8_SNORM: 36757, + RGB8_SNORM: 36758, + RGBA8_SNORM: 36759, + SIGNED_NORMALIZED: 36764, + COPY_READ_BUFFER: 36662, + COPY_WRITE_BUFFER: 36663, + COPY_READ_BUFFER_BINDING: 36662, + COPY_WRITE_BUFFER_BINDING: 36663, + UNIFORM_BUFFER: 35345, + UNIFORM_BUFFER_BINDING: 35368, + UNIFORM_BUFFER_START: 35369, + UNIFORM_BUFFER_SIZE: 35370, + MAX_VERTEX_UNIFORM_BLOCKS: 35371, + MAX_FRAGMENT_UNIFORM_BLOCKS: 35373, + MAX_COMBINED_UNIFORM_BLOCKS: 35374, + MAX_UNIFORM_BUFFER_BINDINGS: 35375, + MAX_UNIFORM_BLOCK_SIZE: 35376, + MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 35377, + MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 35379, + UNIFORM_BUFFER_OFFSET_ALIGNMENT: 35380, + ACTIVE_UNIFORM_BLOCKS: 35382, + UNIFORM_TYPE: 35383, + UNIFORM_SIZE: 35384, + UNIFORM_BLOCK_INDEX: 35386, + UNIFORM_OFFSET: 35387, + UNIFORM_ARRAY_STRIDE: 35388, + UNIFORM_MATRIX_STRIDE: 35389, + UNIFORM_IS_ROW_MAJOR: 35390, + UNIFORM_BLOCK_BINDING: 35391, + UNIFORM_BLOCK_DATA_SIZE: 35392, + UNIFORM_BLOCK_ACTIVE_UNIFORMS: 35394, + UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 35395, + UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 35396, + UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 35398, + INVALID_INDEX: 4294967295, + MAX_VERTEX_OUTPUT_COMPONENTS: 37154, + MAX_FRAGMENT_INPUT_COMPONENTS: 37157, + MAX_SERVER_WAIT_TIMEOUT: 37137, + OBJECT_TYPE: 37138, + SYNC_CONDITION: 37139, + SYNC_STATUS: 37140, + SYNC_FLAGS: 37141, + SYNC_FENCE: 37142, + SYNC_GPU_COMMANDS_COMPLETE: 37143, + UNSIGNALED: 37144, + SIGNALED: 37145, + ALREADY_SIGNALED: 37146, + TIMEOUT_EXPIRED: 37147, + CONDITION_SATISFIED: 37148, + WAIT_FAILED: 37149, + SYNC_FLUSH_COMMANDS_BIT: 1, + VERTEX_ATTRIB_ARRAY_DIVISOR: 35070, + ANY_SAMPLES_PASSED: 35887, + ANY_SAMPLES_PASSED_CONSERVATIVE: 36202, + SAMPLER_BINDING: 35097, + RGB10_A2UI: 36975, + INT_2_10_10_10_REV: 36255, + TRANSFORM_FEEDBACK: 36386, + TRANSFORM_FEEDBACK_PAUSED: 36387, + TRANSFORM_FEEDBACK_ACTIVE: 36388, + TRANSFORM_FEEDBACK_BINDING: 36389, + COMPRESSED_R11_EAC: 37488, + COMPRESSED_SIGNED_R11_EAC: 37489, + COMPRESSED_RG11_EAC: 37490, + COMPRESSED_SIGNED_RG11_EAC: 37491, + COMPRESSED_RGB8_ETC2: 37492, + COMPRESSED_SRGB8_ETC2: 37493, + COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37494, + COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37495, + COMPRESSED_RGBA8_ETC2_EAC: 37496, + COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 37497, + TEXTURE_IMMUTABLE_FORMAT: 37167, + MAX_ELEMENT_INDEX: 36203, + TEXTURE_IMMUTABLE_LEVELS: 33503, + MAX_TEXTURE_MAX_ANISOTROPY_EXT: 34047 + }), + Do = function () { + function i(G, p) { + var r = Z; + return function () { + return r || (r = G.getExtension(p)), r + } + } + + function q(d, T) { + T == Z && (T = {}), T.version = P && (d instanceof WebGL2RenderingContext || o.prototype.toString.call(d) === k) ? 2 : 1, T.extensions = function () { + for (var _ = {}, A = d.getSupportedExtensions(), a = A.length; a--;) _[name] = i(d, A[a]); + return _ + }(); + for (var z = o.keys(g), H = 0, Q = z.length; Q > H; ++H) { + var h = z[H]; + T[h] = d.getParameter(g[h]) + } + if (T.version > 1) { + z = o.keys(r); + for (var H = 0, Q = z.length; Q > H; ++H) { + var h = z[H]; + T[h] = d.getParameter(r[h]) + } + } + return T + } + var P = "undefined" != typeof WebGL2RenderingContext, + k = "[object WebGL2RenderingContext]", + g = { + aliasedLineWidthRange: Ah.ALIASED_LINE_WIDTH_RANGE, + aliasedPointSizeRange: Ah.ALIASED_POINT_SIZE_RANGE, + maxCombinedTextureImageUnits: Ah.MAX_COMBINED_TEXTURE_IMAGE_UNITS, + maxCubeMapTextureSize: Ah.MAX_CUBE_MAP_TEXTURE_SIZE, + maxFragmentUniformVectors: Ah.MAX_FRAGMENT_UNIFORM_VECTORS, + maxRenderBufferSize: Ah.MAX_RENDERBUFFER_SIZE, + maxTextureImageUnits: Ah.MAX_TEXTURE_IMAGE_UNITS, + maxTextureSize: Ah.MAX_TEXTURE_SIZE, + maxVaryingVectors: Ah.MAX_VARYING_VECTORS, + maxVertexAttribs: Ah.MAX_VERTEX_ATTRIBS, + maxVertexTextureImageUnits: Ah.MAX_VERTEX_TEXTURE_IMAGE_UNITS, + maxVertexUniformVectors: Ah.MAX_VERTEX_UNIFORM_VECTORS, + maxViewportDIMs: Ah.MAX_VIEWPORT_DIMS + }, + r = { + max3DTextureSize: Ah.MAX_3D_TEXTURE_SIZE, + maxArrayTextureLayers: Ah.MAX_ARRAY_TEXTURE_LAYERS, + maxColorAttachments: Ah.MAX_COLOR_ATTACHMENTS, + maxCombinedFragmentUniformComponents: Ah.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, + maxCombinedUniformBlocks: Ah.MAX_COMBINED_UNIFORM_BLOCKS, + maxCombinedVertexUniformComponents: Ah.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, + maxDrawBuffers: Ah.MAX_DRAW_BUFFERS, + maxElementIndex: Ah.MAX_ELEMENT_INDEX, + maxElementsIndices: Ah.MAX_ELEMENTS_INDICES, + maxElementsVertices: Ah.MAX_ELEMENTS_VERTICES, + maxFragmentInpuComponents: Ah.MAX_FRAGMENT_INPUT_COMPONENTS, + maxFragmentUniformBlocks: Ah.MAX_FRAGMENT_UNIFORM_BLOCKS, + maxFragmentUniformComponents: Ah.MAX_FRAGMENT_UNIFORM_COMPONENTS, + maxProgramTexelOffset: Ah.MAX_PROGRAM_TEXEL_OFFSET, + maxSamples: Ah.MAX_SAMPLES, + maxTextureLODBias: Ah.MAX_TEXTURE_LOD_BIAS, + maxTransformFeedbackInterleavedComponents: Ah.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS, + maxTransformFeedbackSeparateAttribs: Ah.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, + maxTransformFeedbackSeparateComponents: Ah.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS, + maxUniformBlockSize: Ah.MAX_UNIFORM_BLOCK_SIZE, + maxUniformBufferBindings: Ah.MAX_UNIFORM_BUFFER_BINDINGS, + maxVaryingComponents: Ah.MAX_VARYING_COMPONENTS, + maxVertexOutputComponents: Ah.MAX_VERTEX_OUTPUT_COMPONENTS, + maxVertexUniformBlocks: Ah.MAX_VERTEX_UNIFORM_BLOCKS, + maxVertexUniformComponents: Ah.MAX_VERTEX_UNIFORM_COMPONENTS, + minProgramTexelOffset: Ah.MIN_PROGRAM_TEXEL_OFFSET + }; + return { + "for": function (z) { + var e = z._info; + return e || (z._info = e = q(z, e)), e + } + } + }(), + vd = function () { + function s(y, m, S) { + return { + def: y, + getter: S ? function (A) { + var P = Do.for(A); + return P.version > 1 ? A.getParameter(m) : y + } : function (s) { + return s.getParameter(m) + }, setter: S ? function (d, D) { + var I = Do.for(d); + I.version > 1 && d.pixelStorei(m, D) + } : function (I, D) { + I.pixelStorei(m, D) + } + } + } + + function W(v) { + return "string" == typeof v ? ns(v) : v.r !== Z ? (I[0] = v.r, I[1] = v.g, I[2] = v.b, I[3] = v.a, I) : v.red !== Z ? (I[0] = v.red, I[1] = v.green, I[2] = v.blue, I[3] = v.alpha, I) : v + } + + function A(s) { + return d(s) ? Array.prototype.slice.call(s, 0) : s + } + + function r(H, e, K) { + this.gl = e, this._record = K || {}, this._branches = {}, this._leafSync = {}, this._struct = H; + for (var G = H.children, M = G.length; M--;) { + var t = G[M], + J = t.name; + t.isLeaf ? (this._leafSync[J] = !1, this._record[J] = A(t.desc.def)) : this._record[J] = {} + } + } + + function K(O) { + function G(B, X) { + r.call(this, O, B, X); + for (var h = u.length; h--;) { + var T = u[h]; + this._branches[T._name] = new T._type(B, this._record[T._name]) + } + } + + function Q(w, x) { + function L(b, U) { + for (var g = W, v = !1; g--;) b[g] !== U[g] && (b[g] = U[g], v = !0); + return v + } + var V = w.name, + N = d(w.desc.def), + W = N && w.desc.def.length; + if (w.isLeaf) { + var $ = w.desc.setter, + y = w.desc.parse; + o.defineProperty(x, V, { + configurable: !1, + enumerable: !0, + get: function () { + return this._record[V] + }, set: N ? function (T) { + y && (T = y(T)), (L(this._record[V], T) || !this._leafSync[V]) && ($(this.gl, this._record[V]), this._leafSync[V] = !0) + } : function (Y) { + this._record[V] === Y && this._leafSync[V] || ($(this.gl, Y), this._record[V] = Y, this._leafSync[V] = !0) + } + }) + } else u.push({ + _name: V, + _type: K(w) + }), o.defineProperty(x, V, { + configurable: !1, + enumerable: !0, + get: function () { + return this._branches[V] + }, set: function (W) { + this._branches[V].apply(W) + } + }) + } + var u = []; + return l(G, r), O.forEach(Q, G.prototype), G + } + var I = "undefined" != typeof Float32Array && new Float32Array(4), + H = { + viewport: { + def: [0, 0, 0 / 0, 0 / 0], + getter: function (a) { + return a.getParameter(a.VIEWPORT) + }, setter: function (G, z) { + var i = z[2] !== z[2] ? G.drawingBufferWidth - z[0] : z[2], + K = z[3] !== z[3] ? G.drawingBufferHeight - z[1] : z[3]; + G.viewport(z[0], z[1], i, K) + } + }, + dither: { + def: !1, + getter: function (O) { + return O.isEnabled(O.DITHER) + }, setter: function (p, Y) { + Y ? p.enable(p.DITHER) : p.disable(p.DITHER) + } + }, + rasterizerDiscard: { + def: !1, + getter: function (w) { + var J = Do.for(w); + return J.version > 1 && w.isEnabled(w.RASTERIZER_DISCARD) + }, setter: function (T, h) { + var f = Do.for(T); + 1 !== f.version && (h ? T.enable(T.RASTERIZER_DISCARD) : T.disable(T.RASTERIZER_DISCARD)) + } + }, + lineWidth: { + def: 1, + getter: function (K) { + return K.lineWidth ? K.getParameter(K.LINE_WIDTH) : 1 + }, setter: function (i, W) { + i.lineWidth && i.lineWidth(W) + } + }, + color: { + clear: { + def: [0, 0, 0, 0], + getter: function (Q) { + return Q.getParameter(Q.COLOR_CLEAR_VALUE) + }, setter: function (x, l) { + x.clearColor(l[0], l[1], l[2], l[3]) + }, parse: W + }, + mask: { + def: [!0, !0, !0, !0], + getter: function (i) { + return i.getParameter(i.COLOR_WRITEMASK) + }, setter: function (r, d) { + r.colorMask(d[0], d[1], d[2], d[3]) + } + } + }, + blend: { + enabled: { + def: !1, + getter: function (q) { + return q.isEnabled(q.BLEND) + }, setter: function (g, P) { + P ? g.enable(g.BLEND) : g.disable(g.BLEND) + } + }, + color: { + def: [0, 0, 0, 0], + getter: function (x) { + return x.getParameter(x.BLEND_COLOR) + }, setter: function (X, q) { + X.blendColor(q[0], q[1], q[2], q[3]) + }, parse: W + }, + equation: { + def: [Ah.FUNC_ADD, Ah.FUNC_ADD], + getter: function (n) { + return [n.getParameter(n.BLEND_EQUATION_RGB), n.getParameter(n.BLEND_EQUATION_ALPHA)] + }, setter: function (G, d) { + G.blendEquationSeparate(d[0], d[1]) + }, parse: function (y) { + var b = y.length; + return b > 1 ? y : 1 === b ? (I[1] = I[0] = y[0], I) : (I[1] = I[0] = y, I) + } + }, + func: { + def: [Ah.ONE, Ah.ZERO, Ah.ONE, Ah.ZERO], + getter: function (T) { + return [T.getParameter(T.BLEND_SRC_RGB), T.getParameter(T.BLEND_DST_RGB), T.getParameter(T.BLEND_SRC_ALPHA), T.getParameter(T.BLEND_DST_ALPHA)] + }, setter: function (T, R) { + T.blendFuncSeparate(R[0], R[1], R[2], R[3]) + }, parse: function (P) { + var w = P.length; + return w > 3 ? P : (I[2] = I[0] = P[0], I[3] = I[1] = P[1], I) + } + } + }, + cullFace: { + enabled: { + def: !1, + getter: function (M) { + return M.isEnabled(M.CULL_FACE) + }, setter: function (Q, G) { + G ? Q.enable(Q.CULL_FACE) : Q.disable(Q.CULL_FACE) + } + }, + mode: { + def: Ah.BACK, + getter: function (M) { + return M.getParameter(M.CULL_FACE_MODE) + }, setter: function (Y, R) { + Y.cullFace(R) + } + }, + frontFace: { + def: Ah.CCW, + getter: function (i) { + return i.getParameter(i.FRONT_FACE) + }, setter: function (u, $) { + u.frontFace($) + } + } + }, + scissor: { + enabled: { + def: !1, + getter: function (S) { + return S.isEnabled(S.SCISSOR_TEST) + }, setter: function (k, t) { + t ? k.enable(k.SCISSOR_TEST) : k.disable(k.SCISSOR_TEST) + } + }, + box: { + def: [0, 0, 0 / 0, 0 / 0], + getter: function (p) { + return p.getParameter(p.SCISSOR_BOX) + }, setter: function (l, C) { + var s = C[2] !== C[2] ? l.drawingBufferWidth - C[0] : C[2], + U = C[3] !== C[3] ? l.drawingBufferHeight - C[1] : C[3]; + l.scissor(C[0], C[1], s, U) + } + } + }, + depth: { + enabled: { + def: !1, + getter: function (_) { + return _.isEnabled(_.DEPTH_TEST) + }, setter: function (U, M) { + M ? U.enable(U.DEPTH_TEST) : U.disable(U.DEPTH_TEST) + } + }, + clear: { + def: 1, + getter: function (M) { + return M.getParameter(M.DEPTH_CLEAR_VALUE) + }, setter: function (Y, c) { + Y.clearDepth(c) + } + }, + mask: { + def: !0, + getter: function (z) { + return z.getParameter(z.DEPTH_WRITEMASK) + }, setter: function (S, k) { + S.depthMask(k) + } + }, + range: { + def: [-1, 1], + getter: function (s) { + return s.getParameter(s.DEPTH_RANGE) + }, setter: function (d, Z) { + d.depthRange(Z[0], Z[1]) + } + }, + func: { + def: Ah.LESS, + getter: function (f) { + return f.getParameter(f.DEPTH_FUNC) + }, setter: function (g, J) { + g.depthFunc(J) + } + } + }, + stencil: { + enabled: { + def: !1, + getter: function (Q) { + return Q.isEnabled(Q.STENCIL_TEST) + }, setter: function (a, G) { + G ? a.enable(a.STENCIL_TEST) : a.disable(a.STENCIL_TEST) + } + }, + clear: { + def: 0, + getter: function (j) { + return j.getParameter(j.STENCIL_CLEAR_VALUE) + }, setter: function (D, r) { + D.clearStencil(r) + } + }, + frontMask: { + def: 255, + getter: function (v) { + return v.getParameter(v.STENCIL_WRITEMASK) + }, setter: function (E, i) { + E.stencilMaskSeparate(E.FRONT, i) + } + }, + frontOp: { + def: [Ah.KEEP, Ah.KEEP, Ah.KEEP], + getter: function (s) { + return [s.getParameter(s.STENCIL_FAIL), s.getParameter(s.STENCIL_PASS_DEPTH_FAIL), s.getParameter(s.STENCIL_PASS_DEPTH_PASS)] + }, setter: function (n, H) { + n.stencilOpSeparate(n.FRONT, H[0], H[1], H[2]) + } + }, + frontFunc: { + def: [Ah.ALWAYS, 0, 255], + getter: function (t) { + return [t.getParameter(t.STENCIL_FUNC), t.getParameter(t.STENCIL_REF), t.getParameter(t.STENCIL_VALUE_MASK)] + }, setter: function (u, f) { + u.stencilFuncSeparate(u.FRONT, f[0], f[1], f[2]) + } + }, + backMask: { + def: 255, + getter: function (y) { + return y.getParameter(y.STENCIL_BACK_WRITEMASK) + }, setter: function (y, P) { + y.stencilMaskSeparate(y.BACK, P) + } + }, + backOp: { + def: [Ah.KEEP, Ah.KEEP, Ah.KEEP], + getter: function (l) { + return [l.getParameter(l.STENCIL_BACK_FAIL), l.getParameter(l.STENCIL_BACK_PASS_DEPTH_FAIL), l.getParameter(l.STENCIL_BACK_PASS_DEPTH_PASS)] + }, setter: function (s, P) { + s.stencilOpSeparate(s.BACK, P[0], P[1], P[2]) + } + }, + backFunc: { + def: [Ah.ALWAYS, 0, 255], + getter: function (J) { + return [J.getParameter(J.STENCIL_BACK_FUNC), J.getParameter(J.STENCIL_BACK_REF), J.getParameter(J.STENCIL_BACK_VALUE_MASK)] + }, setter: function (B, T) { + B.stencilFuncSeparate(B.BACK, T[0], T[1], T[2]) + } + } + }, + hint: { + generateMipmap: { + def: Ah.DONT_CARE, + getter: function (X) { + return X.getParameter(X.GENERATE_MIPMAP_HINT) + }, setter: function (y, K) { + y.hint(y.GENERATE_MIPMAP_HINT, K) + } + }, + fragmentShaderDerivative: { + def: Ah.DONT_CARE, + getter: function (k) { + var q = Do.for(k); + return 1 !== q.version || q.extensions.OES_standard_derivatives ? k.getParameter(Ah.FRAGMENT_SHADER_DERIVATIVE_HINT) : Ah.DONT_CARE + }, setter: function (e, K) { + var x = Do.for(e); + return x.version > 1 || x.extensions.OES_standard_derivatives ? (e.hint(Ah.FRAGMENT_SHADER_DERIVATIVE_HINT, K), void 0) : void 0 + } + } + }, + pixelStore: { + packAlignment: s(4, Ah.PACK_ALIGNMENT, !1), + unpackAlignment: s(4, Ah.UNPACK_ALIGNMENT, !1), + unpackFlipY: s(!1, Ah.UNPACK_FLIP_Y_WEBGL, !1), + unpackPremultiplyAlpha: s(!1, Ah.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1), + unpackColorspaceConversion: s(Ah.BROWSER_DEFAULT_WEBGL, Ah.UNPACK_COLORSPACE_CONVERSION_WEBGL, !1), + packRowLength: s(0, Ah.PACK_ROW_LENGTH, !0), + packSkipPixels: s(0, Ah.PACK_SKIP_PIXELS, !0), + packSkipRows: s(0, Ah.PACK_SKIP_ROWS, !0), + unpackRowLength: s(0, Ah.UNPACK_ROW_LENGTH, !0), + unpackImageHeight: s(0, Ah.UNPACK_IMAGE_HEIGHT, !0), + unpackSkipPixels: s(0, Ah.UNPACK_SKIP_PIXELS, !0), + unpackSkipRows: s(0, Ah.UNPACK_SKIP_ROWS, !0), + unpackSkipImages: s(0, Ah.UNPACK_SKIP_IMAGES, !0) + }, + polygonOffset: { + enabled: { + def: !1, + getter: function (T) { + return T.isEnabled(T.POLYGON_OFFSET_FILL) + }, setter: function (A, j) { + j ? A.enable(A.POLYGON_OFFSET_FILL) : A.disable(A.POLYGON_OFFSET_FILL) + } + }, + value: { + def: [0, 0], + getter: function (q) { + return [q.getParameter(q.POLYGON_OFFSET_FACTOR), q.getParameter(q.POLYGON_OFFSET_UNITS)] + }, setter: function (t, i) { + t.polygonOffset(i[0], i[1]) + } + } + }, + sampleCoverage: { + enabled: { + def: !1, + getter: function (i) { + return i.isEnabled(i.SAMPLE_COVERAGE) + }, setter: function (k, B) { + B ? k.enable(k.SAMPLE_COVERAGE) : k.disable(k.SAMPLE_COVERAGE) + } + }, + alpha: { + def: !1, + getter: function (S) { + return S.isEnabled(S.SAMPLE_ALPHA_TO_COVERAGE) + }, setter: function (u, P) { + P ? u.enable(u.SAMPLE_ALPHA_TO_COVERAGE) : u.disable(u.SAMPLE_ALPHA_TO_COVERAGE) + } + }, + value: { + def: [1, !1], + getter: function (g) { + return [g.getParameter(g.SAMPLE_COVERAGE_VALUE), g.getParameter(g.SAMPLE_COVERAGE_INVERT)] + }, setter: function (B, h) { + B.sampleCoverage(h[0], h[1]) + } + } + } + }, + C = _j.create(H, function (L) { + return "def" in L + }); + r.prototype.reset = function () { + for (var R = this._struct.children, l = R.length; l--;) { + var M = R[l], + T = M.name; + M.isLeaf ? this[T] = M.desc.def : this._branches[T].reset() + } + }, r.prototype.save = function (p) { + p == Z && (p = {}); + for (var z = this._struct.children, F = z.length; F--;) { + var k = z[F], + c = k.name; + if (k.isLeaf) p[c] = A(this._record[c]); + else { + var y = p[c]; + y == Z && (p[c] = y = {}), this._branches[c].save(y) + } + } + return p + }, r.prototype.sync = function (n, b) { + for (var Q = this._struct.children, k = Q.length; k--;) { + var s = Q[k], + o = s.name; + s.isLeaf ? (b || !this._leafSync[o]) && (n ? (this._record[o] = s.desc.getter(this.gl), this._leafSync[o] = !0) : (s.desc.setter(this.gl, this._record[o]), this._leafSync[o] = !0)) : this._branches[o].sync(n, b) + } + }, r.prototype.syncLoss = function () { + for (var E = this._struct.children, P = E.length; P--;) { + var k = E[P]; + k.isLeaf ? this._leafSync[k.name] = !1 : this._branches[k.name].syncLoss() + } + }, r.prototype.apply = function (M) { + for (var P = this._struct.children, L = P.length; L--;) { + var i = P[L], + B = i.name; + B in M && (i.isLeaf ? this[B] = M[B] : this._branches[B].apply(M[B])) + } + }, r.prototype.append = function (s) { + var F = this._struct.childMap; + for (var Y in s) { + var f = F[Y]; + f && (f.isLeaf ? this[Y] = s[Y] : this._branches[Y].append(s[Y])) + } + }; + var h = K(C); + return function (f) { + var C = f._state; + return C || (f._state = C = new h(f)), C + } + }(), + Mj = function () { + function M(m, T, O, s) { + if (m) { + var g = m.length; + if (g != Z) + for (var p = 0; s > p; ++p) T[O + p] = m[p]; + else m.toArray && m.toArray(T, O) + } else + for (var p = 0; s > p; ++p) T[O + p] = 0 + } + + function g(B, L, s) { + var g = B[0]; + if (0 >= g || g > 0) return B; + var t = L * s, + a = h[t]; + if (a == Z && (h[t] = new Float32Array(t)), 0 !== L) { + M(g, a, 0, s); + for (var i = 1, O = 0; i !== L; ++i) O += s, M(B[i], a, O, s) + } + return a + } + + function t(u, S) { + u.uniform1f(this.addr, S) + } + + function k(o, P) { + o.uniform1fv(this.addr, P) + } + + function d(R, M) { + if (M.x != Z) R.uniform2f(this.addr, M.x, M.y); + else { + var X = h[2]; + X.set(M, 0), R.uniform2fv(this.addr, X) + } + } + + function V(u, U) { + u.uniform2fv(this.addr, g(U, this.size, 2)) + } + + function H(n, i) { + if (i.x != Z) n.uniform3f(this.addr, i.x, i.y, i.z); + else if (i.r != Z) n.uniform3f(this.addr, i.r, i.g, i.b); + else if (i.red != Z) n.uniform3f(this.addr, i.red, i.green, i.blue); + else { + var d = h[3]; + d.set(i, 0), n.uniform3fv(this.addr, d) + } + } + + function x(O, B) { + O.uniform3fv(this.addr, g(B, this.size, 3)) + } + + function m(L, f) { + if ("string" == typeof f && (f = ns(f)), f.x != Z) L.uniform4f(this.addr, f.x, f.y, f.z, f.w); + else if (f.r != Z) L.uniform4f(this.addr, f.r, f.g, f.b, f.a); + else if (f.red != Z) L.uniform4f(this.addr, f.red, f.green, f.blue, f.alpha); + else { + var B = h[4]; + B.set(f, 0), L.uniform4fv(this.addr, B) + } + } + + function b(j, N) { + j.uniform4fv(this.addr, g(N, this.size, 4)) + } + + function P(B, r) { + B.uniform1i(this.addr, r) + } + + function T(F, R) { + F.uniform1iv(this.addr, R) + } + + function Y(S, I) { + S.uniform2iv(this.addr, I) + } + + function K(P, b) { + P.uniform3iv(this.addr, b) + } + + function W(C, z) { + C.uniform4iv(this.addr, z) + } + + function L(z, G) { + z.uniform1i(this.addr, s[G ? 1 : 0]) + } + + function q($, i) { + var u = h[4]; + u.set(i, 0), $.uniformMatrix2fv(this.addr, !1, u) + } + + function v(A, Y) { + A.uniformMatrix2fv(this.addr, !1, g(Y, this.size, 4)) + } + + function u(S, U) { + var y = h[9]; + y.set(U, 0), S.uniformMatrix3fv(this.addr, !1, y) + } + + function f(E, Z) { + E.uniformMatrix3fv(this.addr, !1, g(Z, this.size, 9)) + } + + function p(M, g) { + var w = h[16]; + w.set(g, 0), M.uniformMatrix4fv(this.addr, !1, w) + } + + function a(D, S) { + D.uniformMatrix4fv(this.addr, !1, g(S, this.size, 16)) + } + + function e(e, f) { + e.uniform1i(this.addr, this.slots[0]), e.activeTexture(e.TEXTURE0 + this.slots[0]), e.bindTexture(e.TEXTURE_2D, f || e._emptyTexture) + } + + function A(I, W) { + I.uniform1iv(this.addr, this.slots); + for (var $ = this.slots.length; $--;) I.activeTexture(I.TEXTURE0 + this.slots[$]), I.bindTexture(I.TEXTURE_2D, W[$] || I._emptyTexture) + } + + function N(P, k) { + P.uniform1i(this.addr, this.slots[0]), P.activeTexture(P.TEXTURE0 + this.slots[0]), P.bindTexture(P.TEXTURE_CUBE_MAP, k || P._emptyCubeTexture) + } + + function $(F, r) { + F.uniform1iv(this.addr, this.slots); + for (var w = this.slots.length; w--;) F.activeTexture(F.TEXTURE0 + this.slots[w]), F.bindTexture(F.TEXTURE_CUBE_MAP, r[w] || F._emptyCubeTexture) + } + + function C(U, J, d) { + G[U] = [J, d] + } + + function z(L, A, O) { + switch (L.type) { + case 35678: + case 35680: + if ("uSampler" === O) return [0]; + if ("uBlendSampler" === O) return [1]; + for (var q = L.size, Q = new Int32Array(q), T = 0; q > T; ++T) Q[T] = A.usedTextureSlot++; + return Q + } + return Z + } + + function R(B, s, q, e, k) { + this.name = B, this.addr = s, this.size = e ? q.size : 0, this.activeInfo = q, this.setter = G[q.type][e ? 1 : 0], this.slots = z(q, k, B), bc(this) + } + + function O(G, P, H, g) { + var l = G.name, + Q = l.length; + for (X.lastIndex = 0; ;) { + var E = X.exec(l), + M = X.lastIndex, + W = E[1], + d = "]" === E[2], + S = E[3]; + if (d && (W = 0 | W), S === Z || "[" === S && M + 2 === Q) { + H[W] = new R(W, P, G, S !== Z, g); + break + } + var O = H[W]; + O == Z && (H[W] = O = {}), H = O + } + } + + function E(j, E, A) { + this.gl = E, this._program = A, this._leaves = {}, this._branches = {}, this._struct = j + } + + function D(u) { + function i(m, D) { + E.call(this, u, m, D); + for (var r = T.length; r--;) { + var n = T[r]; + this._branches[n._name] = new n._type(m, D) + } + } + + function Z(F, z) { + var S = F.name; + if (F.isLeaf) { + var r = y("d.setter(this.gl, v);", ["v"], ["d"], [F.desc]); + o.defineProperty(z, S, { + configurable: !1, + enumerable: !0, + get: function () { + return r + }, set: r + }) + } else T.push({ + _name: S, + _type: D(F) + }), o.defineProperty(z, S, { + configurable: !1, + enumerable: !0, + get: function () { + return this._branches[S] + }, set: function (J) { + this._branches[S].apply(J) + } + }) + } + var T = []; + return l(i, E), u.forEach(Z, i.prototype), i + } + + function c(W, N) { + for (var M = W.getProgramParameter(N, W.ACTIVE_UNIFORMS), U = {}, Z = { + usedTextureSlot: 2 + }; M--;) { + var P = W.getActiveUniform(N, M), + e = P.name, + J = W.getUniformLocation(N, e); + O(P, J, U, Z) + } + var h = _j.create(U, function (Y) { + return "addr" in Y + }), + p = D(h); + return o.defineProperty(p.prototype, "textureCount", { + configurable: !1, + enumerable: !1, + writable: !1, + value: Z.usedTextureSlot + }), new p(W, N) + } + var h = []; + if ("function" == typeof Float32Array) + for (var S = 1; 17 > S; ++S) h[S] = new Float32Array(S); + var s = new Int32Array([0, 1]), + G = []; + C(Ah.FLOAT, t, k), C(Ah.FLOAT_VEC2, d, V), C(Ah.FLOAT_VEC3, H, x), C(Ah.FLOAT_VEC4, m, b), C(Ah.INT, P, T), C(Ah.INT_VEC2, Y, Y), C(Ah.INT_VEC3, K, K), C(Ah.INT_VEC4, W, W), C(Ah.BOOL, L, T), C(Ah.BOOL_VEC2, Y, Y), C(Ah.BOOL_VEC3, K, K), C(Ah.BOOL_VEC4, W, W), C(Ah.FLOAT_MAT2, q, v), C(Ah.FLOAT_MAT3, u, f), C(Ah.FLOAT_MAT4, p, a), C(Ah.SAMPLER_2D, e, A), C(Ah.SAMPLER_CUBE, N, $); + var X = /([\w\d_]+)(\])?(\[|\.)?/g; + return E.prototype.apply = function (V) { + for (var d = this._struct.children, D = d.length; D--;) { + var l = d[D], + t = l.name; + t in V && (l.isLeaf ? this[t] = V[t] : this._branches[t].apply(V[t])) + } + }, E.prototype.append = function (X) { + var e = this._struct.childMap; + for (var $ in X) { + var y = e[$]; + y && (y.isLeaf ? this[$] = X[$] : this._branches[$].append(X[$])) + } + }, + function (t, T) { + var o = T._uniforms; + return o || (T._uniforms = o = c(t, T)), o + } + }(), + Nb = function () { + function t(n, a, v) { + a.vertexAttrib1f(n.addr, v) + } + + function k(A, l, G) { + if (G.x != Z) l.vertexAttrib2f(A.addr, G.x, G.y); + else { + var p = b[2]; + p.set(G, 0), l.vertexAttrib2fv(A.addr, p) + } + } + + function p(M, n, V) { + if (V.x != Z) n.vertexAttrib3f(M.addr, V.x, V.y, V.z); + else if (V.r != Z) n.vertexAttrib3f(M.addr, V.r, V.g, V.b); + else if (V.red != Z) n.vertexAttrib3f(M.addr, V.red, V.green, V.blue); + else { + var x = b[3]; + x.set(V, 0), n.vertexAttrib3fv(M.addr, x) + } + } + + function S(Q, g, M) { + if ("string" == typeof M && (M = ns(M)), M.x != Z) g.vertexAttrib4f(Q.addr, M.x, M.y, M.z, M.w); + else if (M.r != Z) g.vertexAttrib4f(Q.addr, M.r, M.g, M.b, M.a); + else if (M.red != Z) g.vertexAttrib4f(Q.addr, M.red, M.green, M.blue, M.alpha); + else { + var S = b[4]; + S.set(M, 0), g.vertexAttrib4fv(Q.addr, S) + } + } + + function Y(m, O, A) { + A = A.el || A; + for (var K = 0, x = 0; 2 > K; ++K) O.vertexAttrib2f(m.addr, A[x++], A[x++]) + } + + function d(m, G, n) { + n = n.el || n; + for (var O = 0, A = 0; 3 > O; ++O) G.vertexAttrib3f(m.addr, n[A++], n[A++], n[A++]) + } + + function x(r, l, q) { + q = q.el || q; + for (var i = 0, K = 0; 4 > i; ++i) l.vertexAttrib4f(r.addr, q[K++], q[K++], q[K++], q[K++]) + } + + function K(b, K, E, h, $, S, Z) { + K.bindBuffer(K.ARRAY_BUFFER, E), K.vertexAttribPointer(b.addr, 1, h || K.FLOAT, !!$, S || 0, Z || 0), K.bindBuffer(K.ARRAY_BUFFER, null) + } + + function P(t, J, n, O, f, Z, C) { + J.bindBuffer(J.ARRAY_BUFFER, n), J.vertexAttribPointer(t.addr, 2, O || J.FLOAT, !!f, Z || 0, C || 0), J.bindBuffer(J.ARRAY_BUFFER, null) + } + + function u(Q, g, B, Y, $, q, w) { + g.bindBuffer(g.ARRAY_BUFFER, B), g.vertexAttribPointer(Q.addr, 3, Y || g.FLOAT, !!$, q || 0, w || 0), g.bindBuffer(g.ARRAY_BUFFER, null) + } + + function B(K, h, d, J, Y, n, w) { + h.bindBuffer(h.ARRAY_BUFFER, d), h.vertexAttribPointer(K.addr, 4, J || h.FLOAT, !!Y, n || 0, w || 0), h.bindBuffer(h.ARRAY_BUFFER, null) + } + + function g(I, w, e, i, p, R, h) { + var R = R || 4, + h = h || 0; + w.bindBuffer(w.ARRAY_BUFFER, e), w.vertexAttribPointer(I.addr, 2, i || w.FLOAT, !!p, R, h), w.vertexAttribPointer(I.addr + 1, 2, i || w.FLOAT, !!p, R, h + 2), w.bindBuffer(w.ARRAY_BUFFER, null) + } + + function $(_, k, J, g, c, B, h) { + var B = B || 9, + h = h || 0; + k.bindBuffer(k.ARRAY_BUFFER, J), k.vertexAttribPointer(_.addr, 3, g || k.FLOAT, !!c, B, h), k.vertexAttribPointer(_.addr + 1, 3, g || k.FLOAT, !!c, B, h + 3), k.vertexAttribPointer(_.addr + 2, 3, g || k.FLOAT, !!c, B, h + 6), k.bindBuffer(k.ARRAY_BUFFER, null) + } + + function z(F, z, J, T, q, n, l) { + var n = n || 16, + l = l || 0; + z.bindBuffer(z.ARRAY_BUFFER, J), z.vertexAttribPointer(F.addr, 4, T || z.FLOAT, !!q, n, l), z.vertexAttribPointer(F.addr + 1, 4, T || z.FLOAT, !!q, n, l + 4), z.vertexAttribPointer(F.addr + 2, 4, T || z.FLOAT, !!q, n, l + 8), z.vertexAttribPointer(F.addr + 3, 4, T || z.FLOAT, !!q, n, l + 12), z.bindBuffer(z.ARRAY_BUFFER, null) + } + + function W(i, m, C) { + M[i] = function (I, B, s, c, l, W) { + this.addr == Z || this.addr < 0 || (B == Z || B === !1 ? I.disableVertexAttribArray(this.addr) : ql(B) === R ? (I.enableVertexAttribArray(this.addr), C(this, I, B, s, c, l, W)) : (I.disableVertexAttribArray(this.addr), m(this, I, B))) + } + } + + function v(c, $, g) { + this.name = c, this.addr = $, this.activeInfo = g, this.setter = M[g.type], bc(this) + } + + function L(l, L, f) { + this.gl = L, this.program = f, this._branches = {}, this._struct = l + } + + function E(k) { + function I(d, V) { + L.call(this, k, d, V); + for (var z = O.length; z--;) { + var t = O[z]; + this._branches[t._name] = new t._type(d, V) + } + } + + function T(n, h) { + var G = n.name; + if (n.isLeaf) { + var Q = y("d.setter(this.gl, v);", ["v"], ["d"], [n.desc]); + o.defineProperty(h, G, { + configurable: !1, + enumerable: !0, + get: function () { + return Q + }, set: Q + }) + } else O.push({ + _name: G, + _type: E(n) + }), o.defineProperty(h, G, { + configurable: !1, + enumerable: !0, + get: function () { + return this._branches[G] + }, set: function ($) { + this._branches[G].apply($) + } + }) + } + var O = []; + return l(I, L), k.forEach(T, I.prototype), I + } + + function h(p, F) { + for (var r = p.getProgramParameter(F, p.ACTIVE_ATTRIBUTES), g = {}; r--;) { + var h = p.getActiveAttrib(F, r), + B = h.name, + q = p.getAttribLocation(F, B); + g[B] = new v(B, q, h) + } + var o = _j.create(g, function (X) { + return "addr" in X + }), + N = E(o); + return new N(p, F) + } + var b = []; + if (Float32Array) + for (var X = 1; 17 > X; ++X) b[X] = new Float32Array(X); + var M = [], + R = "undefined" != typeof WebGLBuffer && WebGLBuffer.prototype; + return W(Ah.FLOAT, t, K), W(Ah.FLOAT_VEC2, k, P), W(Ah.FLOAT_VEC3, p, u), W(Ah.FLOAT_VEC4, S, B), W(Ah.FLOAT_MAT2, Y, g), W(Ah.FLOAT_MAT3, d, $), W(Ah.FLOAT_MAT4, x, z), L.prototype.disable = function () { + for (var $ = this._struct.children, F = $.length; F--;) { + var T = $[F], + m = T.name; + T.isLeaf ? this.gl.disableVertexAttribArray(T.desc.addr) : this._branches[m].disable() + } + }, L.prototype.apply = function (b) { + for (var l = this._struct.children, B = l.length; B--;) { + var Z = l[B], + t = Z.name; + t in b && (Z.isLeaf ? this[t] = b[t] : this._branches[t].apply(b[t])) + } + }, L.prototype.append = function (d) { + var O = this._struct.childMap; + for (var X in d) { + var G = O[X]; + G && (G.isLeaf ? this[X] = d[X] : this._branches[X].append(d[X])) + } + }, + function (l, u) { + var y = u._attribs; + return y || (u._attribs = y = h(l, u)), y + } + }(), + ts = function (k) { + var w = this; + o.defineProperties(this, { + gl: { + configurable: !1, + enumerable: !1, + value: k, + writable: !1 + }, + glState: { + configurable: !1, + enumerable: !1, + value: vd(k), + writable: !1 + } + }), w._currProgram = Z, w._currUniforms = Z, w._currAttribs = Z, w._sync = !0 + }; + o.defineProperties(ts.prototype, { + program: { + configurable: !1, + enumerable: !1, + get: function () { + return this._currProgram + }, set: function (g) { + var S = this; + S._sync && g === S._currProgram || (S.gl.useProgram(g), S._currProgram = g, S._currUniforms = Mj(S.gl, g), S._currAttribs = Nb(S.gl, g), S._sync = !0) + } + }, + uniforms: { + configurable: !1, + enumerable: !1, + get: function () { + var I = this; + return I._currProgram && !I._sync && (I.gl.useProgram(I._currProgram), I._sync = !0), I._currUniforms + }, set: function ($) { + var Q = this; + Q._currUniforms && (Q._currProgram && !Q._sync && (Q.gl.useProgram(Q._currProgram), this._sync = !0), Q._currUniforms.apply($)) + } + }, + attribs: { + configurable: !1, + enumerable: !1, + get: function () { + var d = this; + return d._currProgram && !d._sync && (d.gl.useProgram(d._currProgram), d._sync = !0), d._currAttribs + }, set: function (X) { + var C = this; + C._currUniforms && (C._currProgram && !C._sync && (C.gl.useProgram(C._currProgram), this._sync = !0), C._currAttribs.apply(X)) + } + } + }), ts.prototype.useProgram = function (v) { + var Z = this; + Z._sync && v === Z._currProgram || (Z.gl.useProgram(v), Z._currProgram = v, Z._currUniforms = Mj(Z.gl, v), Z._currAttribs = Nb(Z.gl, v), Z._sync = !0) + }, ts.prototype.directState = function () { + return this.glState + }, ts.prototype.directUniforms = function () { + return this._currUniforms + }, ts.prototype.directAttribs = function () { + return this._currAttribs + }, ts.prototype.syncLoss = function () { + this._sync = !1, this.glState.syncLoss() + }, ts.for = function (e) { + var s = e._renderState; + return s || (e._renderState = s = new ts(e)), s + }; + var Tf = "directional", + zg = "point", + Bo = "spot", + ep = "light.color", + Gc = {}, + Qf = function (O, R) { + dk(R) && Gq.test(R) ? Im(O, R) : xl(R) && R.modelType ? Ti(O, R) : R === Z ? delete Zm[O] : Zm[O] = R + }, + Wi = function (Y) { + return Y + }, + vf = function (p) { + p = u.convertShape3dModelName(p); + var N; + if (xl(p)) { + if (p.modelType) { + if (p.uuid) { + if (N = Zm[p.uuid]) return N + } else p.uuid = O.Math.generateUUID(); + return N === Z && (Wb && Wb[p.uuid] || Ti(p.uuid, p)), Z + } + return p + } + return N = Zm[p], p && N === Z && Gq.test(p) && (Wb && Wb[p] || Im(p, p)), N + }, + So = function (E, X) { + E.frameStack ? E.frameStack.push(X) : E.frameStack = [X], E.bindFramebuffer(E.FRAMEBUFFER, X) + }, + Ar = function (l) { + var y = l.frameStack; + if (y) { + if (y.pop(), y.length) return l.bindFramebuffer(l.FRAMEBUFFER, y[y.length - 1]), void 0; + l.frameStack = null + } + l.bindFramebuffer(l.FRAMEBUFFER, null) + }; + Uh(u, { + graph3dViewAttributes: F, + graph3dViewFirstPersonMode: !1, + graph3dViewMouseRoamable: !0, + graph3dViewMoveStep: 15, + graph3dViewRotateStep: W / 60, + graph3dViewBlockSelectable: !0, + graph3dViewEditHelperDisabled: !1, + graph3dViewPannable: !0, + graph3dViewRotatable: !0, + graph3dViewWalkable: !0, + graph3dViewResettable: !0, + graph3dViewZoomable: !0, + graph3dViewRectSelectable: !0, + graph3dViewRectSelectBackground: Vh, + graph3dViewGridVisible: !1, + graph3dViewGridSize: 50, + graph3dViewGridGap: 50, + graph3dViewGridColor: [.4, .75, .85, 1], + graph3dViewRotateMaxPhi: W, + graph3dViewRotateMinPhi: 0, + graph3dViewShadowQuality: "high", + graph3dViewShadowIntensity: .3, + graph3dViewShadowBias: -.005, + graph3dViewShadowRadius: .1, + graph3dViewShadowType: "hard", + graph3dViewShadowDegreeX: 30, + graph3dViewShadowDegreeZ: -10, + graph3dViewOriginAxisVisible: !1, + graph3dViewCenterAxisVisible: !1, + graph3dViewAxisXColor: [1, 0, 0, 1], + graph3dViewAxisYColor: [0, 1, 0, 1], + graph3dViewAxisZColor: [0, 0, 1, 1], + graph3dViewEditSizeColor: [1, 1, 0, 1], + graph3dViewOrtho: !1, + graph3dViewOrthoWidth: 2e3, + graph3dViewFovy: W / 4, + graph3dViewNear: 10, + graph3dViewFar: 1e4, + graph3dViewEye: [0, 300, 1e3], + graph3dViewCenter: [0, 0, 0], + graph3dViewUp: [0, 1, -1e-7], + graph3dViewHeadlightRange: 0, + graph3dViewHeadlightColor: [1, 1, 1, 1], + graph3dViewHeadlightIntensity: 1, + graph3dViewHeadlightDisabled: !1, + graph3dViewHeadlightAmbientIntensity: .7, + graph3dViewFogDisabled: !0, + graph3dViewFogMode: "linear", + graph3dViewFogDensity: 5e-4, + graph3dViewFogColor: "white", + graph3dViewFogNear: 1, + graph3dViewFogFar: 2e3, + graph3dViewPickerResolution: .5, + graph3dViewDashDisabled: !0, + graph3dViewBatchBlendDisabled: !0, + graph3dViewBatchBrightnessDisabled: !0, + graph3dViewBatchColorDisabled: !1, + graph3dMaxVectorCacheTime: 50, + graph3dEnvmapCapabilityRequire: 8, + setShape3dModel: Qf, + getShape3dModel: vf, + convertShape3dModelName: Wi, + getShape3dModelMap: function () { + return Zm + }, getCachedShape3dModelMap: function () { + return Mq + }, createMatrix: function (r, J) { + ip(r) || (r = [r]); + for (var q = r.length - 1; q >= 0; q--) { + var e = r[q]; + J = Jn(e.mat, e.s3, e.r3, e.rotationMode, e.t3, J) + } + return J + }, transformVec: function (x, h) { + return Td(x, h) + }, glBindFrame: So, + glUnbindFrame: Ar, + createBoxModel: function () { + return { + vs: Ef, + ns: mn, + uv: mi, + is: Lq + } + }, createRoundRectModel: function (S, W) { + return Gm.roundRect(S, W) + }, createStarModel: function (G, Z) { + return Gm.star(G, Z) + }, createRectModel: function (y, F) { + return Gm.rect(y, F) + }, createTriangleModel: function (f, t) { + return Gm.triangle(f, t) + }, createRightTriangleModel: function (v, e) { + return Gm.rightTriangle(v, e) + }, createParallelogramModel: function (l, e) { + return Gm.parallelogram(l, e) + }, createTrapezoidModel: function (s, J) { + return Gm.trapezoid(s, J) + }, createSmoothSphereModel: function (C, S, L, W, N, E, B) { + return ig(new To(C, S, L, W, N, E, B)) + }, createSphereModel: function (P, Y, b, H, c, p, y) { + return P ? Mi(P, Y, b, H, c, p, y) : u.createSmoothSphereModel() + }, createSmoothConeModel: function ($, h, o, T, d) { + return ce($, h, o, T, d) + }, createConeModel: function (a, V, I, T, O, B) { + return a ? po(a, V, I, T, O, B) : ce(B) + }, createSmoothCylinderModel: function (Y, V, e, G, Z, M, Q, J) { + return ig(new rc(Y, V, e, G, Z, M, Q, J)) + }, createCylinderModel: function (x, T, w, j, H, S, J, n) { + return x ? Qh(x, T, w, j, H, S, J, n) : mj(S, J) + }, createSmoothTorusModel: function (I, i, p, J, N, H) { + return ig(new Kg(I, i, p, J, N, H)) + }, createTorusModel: function (Q, C, M, X, x, k, P, s) { + return Q ? Tc(Q, C, M, X, x, k, P, s) : Or(k, P) + }, createExtrusionModel: function (y, c, p, C, z, i, K, M) { + return zk(y, c, p, C, z, i, K, M) + }, createSmoothRingModel: function (S, P, f, p, h, U) { + for (var $ = [], n = 0; n < S.length - 1; n += 2) $.push({ + x: S[n], + y: S[n + 1] + }); + for (S = Yo($, P, f)[0], $ = [], n = 0; n < S.length; n++) { + var c = S[n]; + $.push(new pe(c.x, 0, c.y)) + } + return ig(new Zd($, U, p, h)) + }, createTextGeometry: function (q, E) { + return ig(new qf(q, E)) + }, loadFontFace: function (X, T) { + u.xhrLoad(X, function (A) { + if (!A) return T(); + var L; + try { + L = JSON.parse(A) + } catch (P) { + L = JSON.parse(A.substring(65, A.length - 2)) + } + Pk.loadFace(L), T && T(L.familyName.toLowerCase()) + }, T ? null : { + sync: !0 + }) + }, createRingModel: function (m, v, C, U, w, Q, h, c, j, y) { + for (var x = [], J = 0; J < m.length - 1; J += 2) x.push({ + x: m[J], + y: m[J + 1] + }); + Q = Q || u.shapeSide, h = h || 0, c = c || Q; + var d, p, K, e, S, t, T, P, g, M, J, N, O, b, X, I, l, i, W = [], + f = [], + $ = j ? [] : F, + A = j ? [] : F, + z = y ? [] : F, + Z = y ? [] : F, + _ = U ? [] : F, + B = U ? [] : F, + E = w ? [] : F, + o = w ? [] : F, + m = Yo(x, v, C), + V = tj(m), + Y = 0, + r = 2 * Math.PI / Q; + return m.forEach(function (u) { + if (K = u.length, K > 1) { + if (e = u[0], U) + for (t = e.x, P = e.y, J = h; c > J; J++) N = J + 1, O = J * r, b = N * r, X = k(O), I = n(O), l = k(b), i = n(b), _.push(X * t, P, -I * t, l * t, P, -i * t, 0, P, 0), B.push(.5 - .5 * X, .5 - .5 * I, .5 - .5 * l, .5 - .5 * i, .5, .5); + for (M = 0; K > M; M++) { + for (S = u[M], t = e.x, T = S.x, P = e.y, g = S.y, d = Y / V, Y += En(e, S), p = Y / V, J = h; c > J; J++) N = J + 1, O = J * r, b = N * r, X = k(O), I = n(O), l = k(b), i = n(b), W.push(X * T, g, -I * T, l * T, g, -i * T, X * t, P, -I * t, l * T, g, -i * T, l * t, P, -i * t, X * t, P, -I * t), f.push(J / Q, p, N / Q, p, J / Q, d, N / Q, p, N / Q, d, J / Q, d), j && J === h && ($.push(0, P, 0, 0, g, 0, X * T, g, -I * T, X * T, g, -I * T, X * t, P, -I * t, 0, P, 0), A.push(0, .5 - P, 0, .5 - g, 2 * T, .5 - g, 2 * T, .5 - g, 2 * t, .5 - P, 0, .5 - P)), y && N === c && (z.push(0, P, 0, l * T, g, -i * T, 0, g, 0, l * T, g, -i * T, 0, P, 0, l * t, P, -i * t), Z.push(1, .5 - P, 1 - 2 * T, .5 - g, 1, .5 - g, 1 - 2 * T, .5 - g, 1, .5 - P, 1 - 2 * t, .5 - P)); + e = S + } + if (w) + for (t = e.x, P = e.y, J = h; c > J; J++) N = J + 1, O = J * r, b = N * r, X = k(O), I = n(O), l = k(b), i = n(b), E.push(l * t, P, -i * t, X * t, P, -I * t, 0, P, 0), o.push(.5 - .5 * l, .5 + .5 * i, .5 - .5 * X, .5 + .5 * I, .5, .5) + } + }), { + vs: W, + uv: f, + bottom_vs: E, + bottom_uv: o, + top_vs: _, + top_uv: B, + from_vs: $, + from_uv: A, + to_vs: z, + to_uv: Z + } + } + }, !0), Uh(z, { + "3d.move.mode": Z, + "3d.selectable": !0, + "3d.visible": !0, + "3d.movable": !0, + "3d.editable": !0, + "3d.clip.direction": null, + "3d.clip.percentage": 1, + "3d.reflectable": !0, + "shape.border.gradient.color": Z, + "edge.gradient.color": Z, + "edge.source.t3": Z, + "edge.target.t3": Z, + "light.type": zg, + "light.center": [0, 0, 0], + "light.color": [1, 1, 1, 1], + "light.disabled": !1, + "light.angle": W / 4, + "light.range": 0, + "light.exponent": 1, + "light.intensity": 1, + "wf.visible": !1, + "wf.width": 1, + "wf.color": Bc, + "wf.short": !1, + "wf.mat": Z, + "wf.geometry": !1, + "wf.loadQuadWireframe": !1, + "wf.combineTriangle": !0, + batch: Z, + "transparent.mask": !1, + brightness: Z, + "select.brightness": .7, + "repeat.uv.length": Z, + "shadow.cast": !0, + "shadow.receive": !0, + bloom: !1, + envmap: 0, + renderTextureSamples: 4, + alphaTest: .4, + autorotate: !1, + fixSizeOnScreen: !1, + "texture.cache": !1, + "hide.overlapping.group": Z, + "vector.dynamic": !1, + "vector.dynamic.maxsize": 2048, + "texture.scale": 1, + "geometry.cache": !1, + "highlight.mode": !1, + "highlight.visible": !0, + "highlight.width": .8, + "highlight.color": "rgba(190, 210, 250, 1)", + "color.empty": [0, 0, 0, 0], + "label.face": wg, + "label.t3": Z, + "label.r3": Z, + "label.texture.scale": 2, + "label.rotationMode": Vn, + "label.light": !1, + "label.blend": Z, + "label.reverse.flip": !1, + "label.reverse.color": vc, + "label.reverse.cull": !1, + "label.transparent": !1, + "label.autorotate": !1, + "label2.face": wg, + "label2.t3": Z, + "label2.r3": Z, + "label2.texture.scale": 2, + "label2.rotationMode": Vn, + "label2.light": !1, + "label2.blend": Z, + "label2.reverse.flip": !1, + "label2.reverse.color": vc, + "label2.reverse.cull": !1, + "label2.transparent": !1, + "label2.autorotate": !1, + "note.face": wg, + "note.t3": Z, + "note.r3": Z, + "note.texture.scale": 2, + "note.rotationMode": Vn, + "note.light": !1, + "note.blend": Z, + "note.reverse.flip": !1, + "note.reverse.color": vc, + "note.reverse.cull": !1, + "note.transparent": !1, + "note.autorotate": !1, + "note2.face": wg, + "note2.t3": Z, + "note2.r3": Z, + "note2.texture.scale": 2, + "note2.rotationMode": Vn, + "note2.light": !1, + "note2.blend": Z, + "note2.reverse.flip": !1, + "note2.reverse.color": vc, + "note2.reverse.cull": !1, + "note2.transparent": !1, + "note2.autorotate": !1, + shape3d: Z, + "shape3d.color": Ur, + "shape3d.top.color": Z, + "shape3d.bottom.color": Z, + "shape3d.from.color": Z, + "shape3d.to.color": Z, + "shape3d.image": Z, + "shape3d.top.image": Z, + "shape3d.bottom.image": Z, + "shape3d.from.image": Z, + "shape3d.to.image": Z, + "shape3d.light": !0, + "shape3d.side": 0, + "shape3d.side.from": Z, + "shape3d.side.to": Z, + "shape3d.smooth": Z, + "shape3d.visible": !0, + "shape3d.from.visible": !0, + "shape3d.to.visible": !0, + "shape3d.top.visible": !0, + "shape3d.bottom.visible": !0, + "shape3d.torus.radius": .17, + "shape3d.resolution": 0, + "shape3d.blend": Z, + "shape3d.opacity": Z, + "shape3d.reverse.flip": !1, + "shape3d.reverse.color": vc, + "shape3d.reverse.cull": !1, + "shape3d.transparent": !1, + "shape3d.uv.offset": Z, + "shape3d.uv.scale": Z, + "shape3d.top.uv.offset": Z, + "shape3d.top.uv.scale": Z, + "shape3d.bottom.uv.offset": Z, + "shape3d.bottom.uv.scale": Z, + "shape3d.from.uv.offset": Z, + "shape3d.from.uv.scale": Z, + "shape3d.to.uv.offset": Z, + "shape3d.to.uv.scale": Z, + "shape3d.top.cap": Z, + "shape3d.bottom.cap": Z, + "shape3d.start.angle": 0, + "shape3d.sweep.angle": $, + "shape3d.point.epsilon": 1e-6, + "shape3d.discard.selectable": !0, + "shape3d.top.discard.selectable": !0, + "shape3d.bottom.discard.selectable": !0, + "shape3d.from.discard.selectable": !0, + "shape3d.to.discard.selectable": !0, + "shape3d.scaleable": !0, + "shape3d.reflector": !1, + "shape3d.reflector.color": "rgb(128,128,128)", + "shape3d.reflector.blur": 0, + "shape3d.reflector.blur.ratio": 1, + "shape3d.reflector.background": null, + "shape3d.reflector.clip": .003, + "texture.mipmap.max": Z, + "texture.filter": Z, + "texture.filter.min": Z, + "texture.filter.mag": Z, + "texture.wrap": Z, + "points.image": Z, + "points.color": "white", + "points.transparent": !1, + "points.size": 20, + "points.opacity": 1, + "all.light": !0, + "all.visible": !0, + "all.color": Ur, + "all.image": Z, + "all.blend": Z, + "all.opacity": Z, + "all.reverse.flip": !1, + "all.reverse.color": vc, + "all.reverse.cull": !1, + "all.transparent": !1, + "all.uv": Z, + "all.uv.offset": Z, + "all.uv.scale": Z, + "all.discard.selectable": !0, + mat: Z, + "left.mat": Z, + "right.mat": Z, + "top.mat": Z, + "bottom.mat": Z, + "front.mat": Z, + "back.mat": Z, + "edge.source.anchor.elevation": Z, + "edge.target.anchor.elevation": Z + }, !0); + var Gi, dp = !1, + zf = [0, 0, 0, 0], + Kc = function (E) { + return E instanceof lf + }, + bk = function (R) { + return [R.x, R.e || 0, R.y] + }, + Tr = function (Q, f, G) { + for (var f = ns(f || 0), E = f[0], a = f[1], r = f[2]; G--;) Q.push(E, a, r) + }, + Wo = function (T, z, y) { + for (var z = ns(z || 0), S = z[0], $ = z[1], E = z[2], t = z[3]; y--;) T.push(S, $, E, t) + }, + yp = function (F, a, W) { + if (a) + for (var H, N, d, _ = a[0], f = a[1], g = a[2], O = a[4], T = a[5], e = a[6], G = a[8], S = a[9], r = a[10], q = a[12], l = a[13], Y = a[14], x = W.length, w = 0, w = 0; x > w; w += 3) H = W[w], N = W[w + 1], d = W[w + 2], F.push(_ * H + O * N + G * d + q, f * H + T * N + S * d + l, g * H + e * N + r * d + Y); + else gc(F, W) + }, + hh = function (F, W) { + var r = W.s("light.intensity"), + m = ns(W.s(ep)), + t = m[0], + k = m[1], + v = m[2]; + 1 !== r && (t *= r, k *= r, v *= r), F.push(t, k, v, W.s("light.disabled") ? 1 : 0) + }, + nc = function (L, o) { + var U = ts.for(o), + $ = U.directUniforms(); + $.uHeadlightRange = L._headlightRange, $.uHeadlightAmbientIntensity = L._headlightAmbientIntensity; + var W = L._headlightIntensity, + j = ns(L._headlightColor); + 1 !== W && (j = [j[0] * W, j[1] * W, j[2] * W]), $.uHeadlightColor = [j[0], j[1], j[2], L._headlightDisabled ? 1 : 0]; + var P = L._59O, + v = L._spots, + F = L._dirs; + if (P.length) { + var E = [], + N = [], + M = []; + P.forEach(function (t) { + hh(E, t), gc(N, L._transformPointToViewSpace(t.p3())), M.push(t.s("light.range")) + }), $.uPointColor = E, $.uPointRange = M, $.uPointPosition = N + } + if (v.length) { + var I = [], + n = [], + b = [], + c = [], + Q = [], + Z = []; + v.forEach(function (F) { + hh(I, F), gc(n, L._transformPointToViewSpace(F.p3())), gc(Q, L._transformDirectionToViewSpace(F.p3(), F.s("light.center"))), b.push(F.s("light.range")), c.push(k(F.s("light.angle") / 2)), Z.push(F.s("light.exponent")) + }), $.uSpotColor = I, $.uSpotRange = b, $.uSpotAngle = c, $.uSpotExponent = Z, $.uSpotPosition = n, $.uSpotDirection = Q + } + if (F.length) { + var H = [], + O = []; + F.forEach(function (K) { + hh(H, K), gc(O, L._transformDirectionToViewSpace(K.p3())) + }), $.uDirColor = H, $.uDirDirection = O + } + }, + vg = function (s, N) { + return Math.max(s.getRotateMinPhi() + Wp, Math.min(s.getRotateMaxPhi() - Wp, N)) + }, + Hj = function () { + return .05 + m() / 2 + }, + cc = function (n, P, S, h) { + var C, A = n.getEye(); + return n.isOrtho() ? (C = fn(n.getCenter(), A), C[0] += h[0], C[1] += h[1], C[2] += h[2]) : C = A, hf(P, S, h, C) + }, + hf = function (x, j, p, S) { + var w = zc(x, j), + t = fn(S, p, !0), + P = zc(t, j); + if (X(P) < Wp) return F; + var b = (w - zc(p, j)) / P; + return [p[0] + t[0] * b, p[1] + t[1] * b, p[2] + t[2] * b] + }, + $l = function (S, p) { + return { + x: 2 * S.x - p.x, + y: 2 * S.y - p.y + } + }, + pc = function (S, U, O, u) { + var X, G; + if (!S) return X = D(U.y - O.y, O.x - U.x), { + x: U.x + u * n(X), + y: U.y + u * k(X) + }; + if (!O) return X = D(S.y - U.y, U.x - S.x), { + x: U.x + u * n(X), + y: U.y + u * k(X) + }; + var L = fn([S.x, S.y, 0], [U.x, U.y, 0], !0), + b = fn([O.x, O.y, 0], [U.x, U.y, 0], !0), + H = -(L[0] + b[0]) / 2, + V = -(L[1] + b[1]) / 2, + N = w(H * H + V * V); + if (Wp > N) return X = D(S.y - U.y, U.x - S.x), { + x: U.x + u * n(X), + y: U.y + u * k(X) + }; + var g = S.x - U.x, + T = S.y - U.y, + x = O.x - U.x, + I = O.y - U.y, + f = w(g * g + T * T), + i = w(x * x + I * I); + X = c(zc(L, b)) / 2, G = L[1] * b[0] - L[0] * b[1] > 0 ? -1 : 1, H /= N, V /= N; + var $ = u / n(X), + l = q(f, i) / k(X); + N = Math.min($, l); + var F = { + x: U.x + G * N * H, + y: U.y + G * N * V + }; + return O.b && $ > i / k(X) && (F.adjust = !0), F + }, + ss = function (p) { + var O = p[1], + $ = p[2], + W = p[3], + q = p[6], + Y = p[7], + M = p[11]; + p[1] = p[4], p[2] = p[8], p[3] = p[12], p[4] = O, p[6] = p[9], p[7] = p[13], p[8] = $, p[9] = q, p[11] = p[14], p[12] = W, p[13] = Y, p[14] = M + }, + Od = function (G) { + var c = G[0], + R = G[1], + Z = G[2], + L = G[3], + S = G[4], + $ = G[5], + X = G[6], + q = G[7], + K = G[8], + u = G[9], + U = G[10], + P = G[11], + k = G[12], + d = G[13], + Q = G[14], + y = G[15], + V = c * $ - R * S, + o = c * X - Z * S, + m = c * q - L * S, + j = R * X - Z * $, + T = R * q - L * $, + h = Z * q - L * X, + E = K * d - u * k, + Y = K * Q - U * k, + t = K * y - P * k, + s = u * Q - U * d, + B = u * y - P * d, + p = U * y - P * Q, + _ = V * p - o * B + m * s + j * t - T * Y + h * E; + return _ ? (_ = 1 / _, G[0] = ($ * p - X * B + q * s) * _, G[1] = (Z * B - R * p - L * s) * _, G[2] = (d * h - Q * T + y * j) * _, G[3] = (U * T - u * h - P * j) * _, G[4] = (X * t - S * p - q * Y) * _, G[5] = (c * p - Z * t + L * Y) * _, G[6] = (Q * m - k * h - y * o) * _, G[7] = (K * h - U * m + P * o) * _, G[8] = (S * B - $ * t + q * E) * _, G[9] = (R * t - c * B - L * E) * _, G[10] = (k * T - d * m + y * V) * _, G[11] = (u * m - K * T - P * V) * _, G[12] = ($ * Y - S * s - X * E) * _, G[13] = (c * s - R * Y + Z * E) * _, G[14] = (d * o - k * j - Q * V) * _, G[15] = (K * j - u * o + U * V) * _, void 0) : F + }, + bo = function (u, Z) { + if (Z) { + var o = Z[0], + z = Z[1], + s = Z[2]; + u[12] = u[0] * o + u[4] * z + u[8] * s + u[12], u[13] = u[1] * o + u[5] * z + u[9] * s + u[13], u[14] = u[2] * o + u[6] * z + u[10] * s + u[14], u[15] = u[3] * o + u[7] * z + u[11] * s + u[15] + } + }, + Bd = function (A, _) { + if (_) { + var o = _[0], + z = _[1], + O = _[2]; + A[0] = A[0] * o, A[1] = A[1] * o, A[2] = A[2] * o, A[3] = A[3] * o, A[4] = A[4] * z, A[5] = A[5] * z, A[6] = A[6] * z, A[7] = A[7] * z, A[8] = A[8] * O, A[9] = A[9] * O, A[10] = A[10] * O, A[11] = A[11] * O + } + }, + xo = function (l, E, N) { + var o = E[0], + O = E[1], + x = E[2], + Z = E[3], + C = E[4], + y = E[5], + r = E[6], + $ = E[7], + T = E[8], + s = E[9], + j = E[10], + b = E[11], + m = E[12], + u = E[13], + P = E[14], + Q = E[15], + W = N[0], + f = N[1], + w = N[2], + H = N[3]; + return l[0] = W * o + f * C + w * T + H * m, l[1] = W * O + f * y + w * s + H * u, l[2] = W * x + f * r + w * j + H * P, l[3] = W * Z + f * $ + w * b + H * Q, W = N[4], f = N[5], w = N[6], H = N[7], l[4] = W * o + f * C + w * T + H * m, l[5] = W * O + f * y + w * s + H * u, l[6] = W * x + f * r + w * j + H * P, l[7] = W * Z + f * $ + w * b + H * Q, W = N[8], f = N[9], w = N[10], H = N[11], l[8] = W * o + f * C + w * T + H * m, l[9] = W * O + f * y + w * s + H * u, l[10] = W * x + f * r + w * j + H * P, l[11] = W * Z + f * $ + w * b + H * Q, W = N[12], f = N[13], w = N[14], H = N[15], l[12] = W * o + f * C + w * T + H * m, l[13] = W * O + f * y + w * s + H * u, l[14] = W * x + f * r + w * j + H * P, l[15] = W * Z + f * $ + w * b + H * Q, l + }, + _g = function (f, L, d, r) { + var U, M, Z, m, A, G, K, T, j, D, Q = L[0], + l = L[1], + _ = L[2], + a = r[0], + F = r[1], + B = r[2], + W = d[0], + i = d[1], + y = d[2]; + return X(Q - W) < Wp && X(l - i) < Wp && X(_ - y) < Wp ? yi(f) : (K = Q - W, T = l - i, j = _ - y, D = 1 / w(K * K + T * T + j * j), K *= D, T *= D, j *= D, U = F * j - B * T, M = B * K - a * j, Z = a * T - F * K, D = w(U * U + M * M + Z * Z), D ? (D = 1 / D, U *= D, M *= D, Z *= D) : (U = 0, M = 0, Z = 0), m = T * Z - j * M, A = j * U - K * Z, G = K * M - T * U, D = w(m * m + A * A + G * G), D ? (D = 1 / D, m *= D, A *= D, G *= D) : (m = 0, A = 0, G = 0), f[0] = U, f[1] = m, f[2] = K, f[3] = 0, f[4] = M, f[5] = A, f[6] = T, f[7] = 0, f[8] = Z, f[9] = G, f[10] = j, f[11] = 0, f[12] = -(U * Q + M * l + Z * _), f[13] = -(m * Q + A * l + G * _), f[14] = -(K * Q + T * l + j * _), f[15] = 1, f) + }, + We = function (Y, x, L, i, j) { + var E = 1 / R(x / 2), + B = 1 / (i - j); + return Y[0] = E / L, Y[1] = 0, Y[2] = 0, Y[3] = 0, Y[4] = 0, Y[5] = E, Y[6] = 0, Y[7] = 0, Y[8] = 0, Y[9] = 0, Y[10] = (j + i) * B, Y[11] = -1, Y[12] = 0, Y[13] = 0, Y[14] = 2 * j * i * B, Y[15] = 0, Y + }, + lk = function (R, w, r, l, a, K, b) { + var M = 1 / (w - r), + S = 1 / (l - a), + n = 1 / (K - b); + return R[0] = -2 * M, R[1] = 0, R[2] = 0, R[3] = 0, R[4] = 0, R[5] = -2 * S, R[6] = 0, R[7] = 0, R[8] = 0, R[9] = 0, R[10] = 2 * n, R[11] = 0, R[12] = (w + r) * M, R[13] = (a + l) * S, R[14] = (b + K) * n, R[15] = 1, R + }, + _p = function (N, B) { + var l = B[0], + q = B[1], + M = B[2], + k = B[3], + Y = l * l + q * q + M * M + k * k, + Q = Y ? 1 / Y : 0; + return N[0] = -l * Q, N[1] = -q * Q, N[2] = -M * Q, N[3] = k * Q, N + }, + Hg = function (r, f) { + var I = f[0] + f[5] + f[10], + Z = 0; + return I > 0 ? (Z = 2 * Math.sqrt(I + 1), r[3] = .25 * Z, r[0] = (f[6] - f[9]) / Z, r[1] = (f[8] - f[2]) / Z, r[2] = (f[1] - f[4]) / Z) : f[0] > f[5] & f[0] > f[10] ? (Z = 2 * Math.sqrt(1 + f[0] - f[5] - f[10]), r[3] = (f[6] - f[9]) / Z, r[0] = .25 * Z, r[1] = (f[1] + f[4]) / Z, r[2] = (f[8] + f[2]) / Z) : f[5] > f[10] ? (Z = 2 * Math.sqrt(1 + f[5] - f[0] - f[10]), r[3] = (f[8] - f[2]) / Z, r[0] = (f[1] + f[4]) / Z, r[1] = .25 * Z, r[2] = (f[6] + f[9]) / Z) : (Z = 2 * Math.sqrt(1 + f[10] - f[0] - f[5]), r[3] = (f[1] - f[4]) / Z, r[0] = (f[8] + f[2]) / Z, r[1] = (f[6] + f[9]) / Z, r[2] = .25 * Z), r + }, + dq = function (U, H, v) { + var E = H[0], + S = H[1], + V = H[2], + r = H[3], + M = E + E, + f = S + S, + X = V + V, + C = E * M, + J = E * f, + k = E * X, + Q = S * f, + b = S * X, + d = V * X, + y = r * M, + m = r * f, + z = r * X; + return U[0] = 1 - (Q + d), U[1] = J + z, U[2] = k - m, U[3] = 0, U[4] = J - z, U[5] = 1 - (C + d), U[6] = b + y, U[7] = 0, U[8] = k + m, U[9] = b - y, U[10] = 1 - (C + Q), U[11] = 0, U[12] = v[0], U[13] = v[1], U[14] = v[2], U[15] = 1, U + }, + wp = function (F, E) { + if (F.vr.enable) { + var O = F.vr.getViewMatrix(E); + if (O) return O + } + return _g(E ? E : kn(), F._eye, F._center, F._up) + }, + Mc = function (d, i) { + if (d.vr.enable) { + var r = d.vr.getProjectMatrix(); + if (r) return r + } + if (!i && d._computedProjectMatrix) return Ql(d._computedProjectMatrix); + var f = d.getAspect(), + n = d._near, + w = d._far, + E = kn(); + if (d._ortho) { + var J = d._orthoWidth / 2, + q = J / f; + lk(E, -J, J, -q, q, n, w) + } else We(E, d._fovy, f, n, w); + return E + }, + Gb = function (q, i) { + if (!q) return F; + var j = 0, + N = 1, + y = 2, + b = [], + k = 0, + _ = q.length, + o = _ / 3; + if (i) { + for (; _ > k; k++) b[k] = 0; + for (k = 0; k < i.length; k += 3) { + var e = [], + W = [], + f = []; + e[j] = q[3 * i[k + 1] + j] - q[3 * i[k] + j], e[N] = q[3 * i[k + 1] + N] - q[3 * i[k] + N], e[y] = q[3 * i[k + 1] + y] - q[3 * i[k] + y], W[j] = q[3 * i[k + 2] + j] - q[3 * i[k + 1] + j], W[N] = q[3 * i[k + 2] + N] - q[3 * i[k + 1] + N], W[y] = q[3 * i[k + 2] + y] - q[3 * i[k + 1] + y], f[j] = e[N] * W[y] - e[y] * W[N], f[N] = e[y] * W[j] - e[j] * W[y], f[y] = e[j] * W[N] - e[N] * W[j]; + for (var S = 0; 3 > S; S++) b[3 * i[k + S] + j] += f[j], b[3 * i[k + S] + N] += f[N], b[3 * i[k + S] + y] += f[y] + } + } else + for (k = 0; o > k; k += 3) { + var e = [], + W = [], + f = []; + e[j] = q[3 * (k + 1) + j] - q[3 * k + j], e[N] = q[3 * (k + 1) + N] - q[3 * k + N], e[y] = q[3 * (k + 1) + y] - q[3 * k + y], W[j] = q[3 * (k + 2) + j] - q[3 * (k + 1) + j], W[N] = q[3 * (k + 2) + N] - q[3 * (k + 1) + N], W[y] = q[3 * (k + 2) + y] - q[3 * (k + 1) + y], f[j] = e[N] * W[y] - e[y] * W[N], f[N] = e[y] * W[j] - e[j] * W[y], f[y] = e[j] * W[N] - e[N] * W[j]; + for (var S = 0; 3 > S; S++) b[3 * (k + S) + j] = f[j], b[3 * (k + S) + N] = f[N], b[3 * (k + S) + y] = f[y] + } + for (k = 0; _ > k; k += 3) { + var Q = []; + Q[j] = b[k + j], Q[N] = b[k + N], Q[y] = b[k + y]; + var X = w(Q[j] * Q[j] + Q[N] * Q[N] + Q[y] * Q[y]); + 0 === X && (X = Wp), Q[j] = Q[j] / X, Q[N] = Q[N] / X, Q[y] = Q[y] / X, b[k + j] = Q[j], b[k + N] = Q[N], b[k + y] = Q[y] + } + return new fk(b) + }, + rg = function (w, b, M, x) { + if (M || (M = w.createTexture()), b) { + var r = w.TEXTURE_2D, + u = w.REPEAT, + I = w.CLAMP_TO_EDGE, + A = w.TEXTURE_MIN_FILTER; + x = x || Xn; + var V = x.minFilter || x.filter || w.LINEAR, + t = x.magFilter || x.filter || w.LINEAR; + w.activeTexture(w.TEXTURE0), an(w, M), w.texImage2D(r, 0, w.RGBA, w.RGBA, w.UNSIGNED_BYTE, b), Lr(w, w.TEXTURE_MAG_FILTER, t); + var v = b.naturalWidth || b.width, + p = b.naturalHeight || b.height; + Rc.isPOT(v) && Rc.isPOT(p) && !x.clampToEdge && !b.clampToEdge ? (Lr(w, w.TEXTURE_WRAP_S, u), Lr(w, w.TEXTURE_WRAP_T, u), Lr(w, A, V === w.NEAREST ? w.NEAREST_MIPMAP_NEAREST : w.LINEAR_MIPMAP_LINEAR), x.mipmapMaxLevel !== Z && Lr(w, w.TEXTURE_MAX_LEVEL, x.mipmapMaxLevel), w.generateMipmap(r)) : (Lr(w, w.TEXTURE_WRAP_S, I), Lr(w, w.TEXTURE_WRAP_T, I), Lr(w, A, V)), an(w, F) + } + return M + }, + ze = function (j, r) { + var J = new Uint8Array(4); + return r = r || j.createTexture(), j.activeTexture(j.TEXTURE0), an(j, r), Lr(j, j.TEXTURE_MIN_FILTER, j.LINEAR), j.texImage2D(j.TEXTURE_2D, 0, j.RGBA, 1, 1, 0, j.RGBA, j.UNSIGNED_BYTE, J), r + }, + Gp = function (K, W) { + var u = new Uint8Array(4); + return W = W || K.createTexture(), K.activeTexture(K.TEXTURE0), K.bindTexture(K.TEXTURE_CUBE_MAP, W), K.texParameteri(K.TEXTURE_CUBE_MAP, K.TEXTURE_MAG_FILTER, K.LINEAR), K.texParameteri(K.TEXTURE_CUBE_MAP, K.TEXTURE_MIN_FILTER, K.LINEAR), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 0, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 1, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 2, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 3, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 4, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), K.texImage2D(K.TEXTURE_CUBE_MAP_POSITIVE_X + 5, 0, K.RGBA, 1, 1, 0, K.RGBA, K.UNSIGNED_BYTE, u), W + }, + Vo = function (y) { + y._26I && y._prg && (y._26I.deleteProgram(y._prg), y._prg = F) + }, + Pl = function (I, E, $, k) { + var Y = I.createShader($); + return I.shaderSource(Y, k), I.compileShader(Y), I.attachShader(E, Y), Y + }, + el = function (A) { + return A.createBuffer() + }, + an = function (f, m) { + f.bindTexture(f.TEXTURE_2D, m || f._emptyTexture) + }, + Lr = function (K, E, j) { + K.texParameteri(K.TEXTURE_2D, E, j) + }, + Ik = function (O, C) { + var L = ts.for(O).directState(); + L.polygonOffset.enabled = !0, L.polygonOffset.value = C + }, + rd = function (d) { + var L = ts.for(d).directState(); + L.polygonOffset.enabled = !1 + }, + qe = function (n, E) { + if (E) { + var V = ts.for(n).directState(); + V.color.clear = ns(E) + } + }, + _k = function (k) { + var R = ts.for(k), + N = R.directUniforms(), + X = R.directAttribs(); + N.uFix = !0, X.aNormal = !1 + }, + On = function (B) { + var o = ts.for(B), + f = o.directUniforms(); + o.directAttribs(), f.uFix = !1 + }, + Ll = function (R, l, v, i, o, C, e, W) { + var D = ts.for(R), + I = D.directState(), + K = D.directUniforms(); + R._picking || (v ? (K.uBlend = !0, K.uBlendColor = v) : K.uBlend = !1, K.uLight = i == F ? !0 : i, Bp(o) && 1 !== o && (K.uPartOpacity = o), K.uReverseFlip = C == F ? !1 : C, K.uFixPickReverseColor = e || vc), I.cullFace.enabled = W ? !0 : !1 + }, + ol = function (N) { + if (!N._picking) { + var v = ts.for(N), + C = v.directUniforms(); + C.uPartOpacity = 1 + } + }, + bi = function () { + var a = [0, 0, 1, 1]; + return function (i, $, T, l, Y, D, Q, r, o) { + var v = ts.for(i), + L = v.directUniforms(), + z = v.directAttribs(); + return T ? (L.uTexture = !0, L.uDiscardSelectable = El(l) ? l : !0, z.aUv = Sl(i, Y, D, F, 2), o ? (L.uBlendTexture = !0, L.uBlendSampler = o) : (L.uBlendTexture = !1, L.uBlendSampler = i._emptyBlendTexture), L.uSampler = T, Q ? (a[0] = Q[0], a[1] = Q[1]) : (a[0] = 0, a[1] = 0), r ? (a[2] = r[0], a[3] = r[1]) : (a[2] = 1, a[3] = 1), L.uOffsetScale = a, void 0) : (L.uSampler = i._emptyTexture, L.uBlendSampler = i._emptyBlendTexture, void 0) + } + }(), + Jf = function (P, L, W) { + var X = ts.for(P), + M = X.directUniforms(), + s = X.directAttribs(); + P.activeTexture(P.TEXTURE0), an(P, F), P.activeTexture(P.TEXTURE1), an(P, F), W && (s.aUv = !1, M.uTexture = !1, M.uSampler = P._emptyTexture, M.uBlendTexture = !1, M.uBlendSampler = P._emptyBlendTexture) + }, + ck = function (L, w, B, E, g, W) { + var z = ts.for(L), + M = z.directUniforms(), + _ = z.directAttribs(); + !B || Uq || Bj || L.lineWidth(B), E && !L._picking && (M.uFixPickReverseColor = E), g && (_.aPosition = Sl(L, g, W, F)) + }, + ie = function (e, T, V, u) { + Gi && (u = e[Gi]), e.drawArrays(u == F ? e.TRIANGLES : u, T, V); + var p = e._renderInfo; + p && (p.calls++, p.vertices += V, (u == F || u === e.TRIANGLES) && (p.faces += V / 3), u === e.LINES && (p.lines += V / 2), u === e.POINTS && (p.points += V)) + }, + os = function (j, R, O, S, v) { + Gi && (S = j[Gi]), j.drawElements(S == F ? j.TRIANGLES : S, O, v == F ? j.UNSIGNED_SHORT : v, R == F ? 0 : 2 * R); + var H = j._renderInfo; + H && (H.calls++, H.vertices += O, (S == F || S === j.TRIANGLES) && (H.faces += O / 3), S === j.LINES && (H.lines += O / 2), S === j.POINTS && (H.points += O)) + }, + bm = function (m, P, $) { + var r = m.ARRAY_BUFFER; + return m.bindBuffer(r, P), $ && m.bufferData(r, $, m.STATIC_DRAW), P + }, + Sl = function ($, v, N, u, D) { + return N ? rk($, $.ARRAY_BUFFER, v, N) : bm($, v, N, u, D) + }, + eo = function (L, K, X) { + var Q = L.ELEMENT_ARRAY_BUFFER; + L.bindBuffer(Q, K), X && L.bufferData(Q, X, L.STATIC_DRAW) + }, + ym = function (B, U, h) { + rk(B, B.ELEMENT_ARRAY_BUFFER, U, h) + }, + rk = function (f, Y, Q, U) { + var E = U._bufId; + E || (E = U._bufId = O.Math.generateIncreasingID()); + var Q, b = f._bufPool; + return (Q = b[E]) && Q._buf ? f.bindBuffer(Y, Q._buf) : (Q = b[E] = { + _buf: el(f) + }, f.bindBuffer(Y, Q._buf), f.bufferData(Y, U, f.STATIC_DRAW)), Q._fid = f._renderInfo.frame, Q._buf + }, + Pr = function (Z, D) { + D != F && D >= 0 && Z.enableVertexAttribArray(D) + }, + Rg = function (y, P) { + P != F && P >= 0 && y.disableVertexAttribArray(P) + }, + Gf = function (e, i) { + var j = e.getGL(); + e._prg; + var Y = ts.for(j), + U = Y.directUniforms(); + Y.directAttribs(), e._7O = e._8O.pop(), i && (U.uMVMatrix = e._7O, e._6O = i, U.uNMatrix = i) + }, + Rq = function (Q, F) { + return F || (F = kn()), Vd(F, Q), Od(F), ss(F), F + }, + gk = function (I, Y) { + var D = I.getGL(), + g = I._7O, + r = ts.for(D), + N = r.directUniforms(); + Y ? (I._8O.push(Ql(g)), N.uMMatrix = Y, xo(g, g, Y), I._7O = g) : N.uMMatrix = Hd, N.uMVMatrix = g, N.uNMatrix = Rq(g, I._6O) + }, + is = { + body: 0, + label: 1, + label2: 2, + note: 3, + note2: 4, + symbol: 5 + }, + wc = 10, + gm = function (f, Z, n, D, k, _) { + var Y; + if (n) { + var K = D._pickId; + K || (K = D._pickId = Z._pickIdUsed, Z._pickIdUsed += wc); + var c, y = is[k]; + if (null != y) c = K + y; + else { + var t = D._pickExtraPartMap; + t || (t = D._pickExtraPartMap = {}), (c = t[k]) || (c = t[k] = Z._pickIdUsed++) + } + Z[c] || (Z[c] = { + data: D, + part: k + }), Y = rl(c) + } else Y = zf; if (!_) { + var h = ts.for(f), + u = h.directUniforms(); + u.uFixPickReverseColor = Y + } + return Y + }, + Hb = function (_, x, J) { + "target" !== J && (J = "source"); + var y = "target" === J ? x.getTargetAgent() : x.getSourceAgent(), + N = "edge." + J + "."; + if (Fq(y)) { + var B = x.s(N + "anchor.x"), + G = x.s(N + "anchor.elevation"), + M = x.s(N + "anchor.y"), + S = sj(y, _.getMat(y)), + v = y.getAnchor3d(); + return Td([(B === Z ? .5 : B) - v.x, (G === Z ? .5 : G) - v.y, (M === Z ? .5 : M) - v.z], S) + } + var R = x.s(N + "index"), + m = _.getData3dUI(y); + if (!m.info || !m.info.list) return !1; + if (R >= 0) { + var q, b, W, p, h, T = m.info._lastPointsSegments, + L = T.points, + o = T.segments, + c = -1, + Q = -1; + for (W = 0, p = o ? o.length : L.length; p > W; W++) { + if (b = o ? o.get(W) : 1, 3 === b) h = 2; + else if (4 === b) h = 3; + else { + if (5 === b) continue; + h = 1 + } if (c += h, Q++, Q === R) { + q = L.get(c); + break + } + } + return q || (q = L.get(L.length - 1)), [q.x, q.e || 0, q.y] + } + var K = x.s(N + "percent") || .5; + if (K = Math.max(0, Math.min(K, 1)), !m || !m.getCache) return !1; + var w = m.getCache(), + p = w[w.length - 1].length, + T = _.getLineOffset(y, K * p), + t = T.point; + return [t.x, t.y, t.z] + }, + Ep = function () { + var T = { + center: function (U, E, y, B, e) { + var f = -E[1] / 2, + x = { + x: -E[0] / 2, + y: f, + width: E[0], + height: E[1] + }, + u = Re(U, x, y); + return [u.x + B, -u.y - e, Hj()] + }, front: function (n, S, C, h, y) { + var d = -S[1] / 2, + f = { + x: -S[0] / 2, + y: d, + width: S[0], + height: S[1] + }, + m = Re(n, f, C); + return [m.x + h, -m.y - y, S[2] / 2 + Hj()] + }, back: function (m, T, f, X, p) { + var K = -T[0] / 2, + k = -T[1] / 2, + x = { + x: K, + y: k, + width: T[0], + height: T[1] + }, + r = Re(m, x, f); + return [-r.x - X, -r.y - p, -T[2] / 2 - Hj()] + }, left: function (y, U, H, o, W) { + var B = -U[1] / 2, + E = { + x: -U[2] / 2, + y: B, + width: U[2], + height: U[1] + }, + l = Re(y, E, H); + return [-U[0] / 2 - Hj(), -l.y - W, l.x + o] + }, right: function (z, d, T, e, R) { + var B = -d[2] / 2, + K = -d[1] / 2, + o = { + x: B, + y: K, + width: d[2], + height: d[1] + }, + J = Re(z, o, T); + return [d[0] / 2 + Hj(), -J.y - R, -J.x - e] + }, top: function (H, P, V, E, h) { + var o = { + x: -P[0] / 2, + y: -P[2] / 2, + width: P[0], + height: P[2] + }, + W = Re(H, o, V); + return [W.x + E, P[1] / 2 + Hj(), W.y + h] + }, bottom: function (u, y, l, e, L) { + var P = -y[2] / 2, + Z = { + x: -y[0] / 2, + y: P, + width: y[0], + height: y[2] + }, + M = Re(u, Z, l); + return [M.x + e, -y[1] / 2 - Hj(), -M.y - L] + } + }; + return function (w, E, K, b, m, l) { + return T[b](w, E, K, m || 0, l || 0) + } + }(), + Te = function (v, P, z, K, t, d, H, D, S, J) { + if (t && (P[0] += t[0], P[1] += t[1], P[2] += t[2]), bo(v, z), D) { + var b = kn(); + if (Cl(b, S, J), Td(P, b), bo(v, P), v.auto = D, v.pos = Td([0, 0, 0], v), d) { + var E = v.mat2 = kn(); + Cl(E, d, H) + } + } else Cl(v, S, J), bo(v, P), K === nq ? ah(v, -N) : K === fm ? ah(v, N) : K === $c ? uh(v, -N) : K === Kd ? uh(v, N) : K === Qq && ah(v, W), Cl(v, d, H); + return v + }, + yn = function ($, s) { + var J = s.auto, + z = s.mat2, + E = $.gv; + if (J) { + var t, o = kn(), + W = [0, 0, 0, 0]; + t = "string" == typeof J ? [J.indexOf("x") < 0 ? E._eye[0] : E._center[0], J.indexOf("y") < 0 ? E._eye[1] : E._center[1], J.indexOf("z") < 0 ? E._eye[2] : E._center[2]] : E._eye, Hg(W, _g(kn(), t, E._center, E._up)), dq(o, _p(W, W), s.pos), z && xo(o, o, z), gk(E, o) + } else gk(E, s) + }, + ud = function (c, D, C, t, O) { + var A = c.s, + X = c.gv, + Z = X.getGL(), + P = X._prg, + I = X._buffer, + Y = X._1O, + E = ts.for(Z), + y = E.directAttribs(); + rg(Z, xm, Y), yn(c, C), Ll(Z, P, A(D + ".blend"), A(D + ".light"), A(D + ".opacity"), A(D + ".reverse.flip"), A(D + ".reverse.color"), A(D + ".reverse.cull")), bi(Z, P, Y, O, I.uv, Vj), y.aPosition = Sl(Z, I.vs, t, F), y.aNormal = Sl(Z, I.ns, Lh, F), ym(Z, I.is, ar), os(Z, 0, ar.length), Jf(Z, P, Y), ol(Z, P), Gf(X) + }, + _e = function (p, E, F) { + var V = p.gv, + K = p.data, + h = p[E] = { + blend: V.getBodyColor(K) || V.getFaceBlend(K, E), + light: V.getFaceLight(K, E), + color: V.getFaceColor(K, E), + opacity: V.getFaceOpacity(K, E), + transparent: V.getFaceTransparent(K, E), + reverseFlip: V.getFaceReverseFlip(K, E), + reverseColor: V.getFaceReverseColor(K, E), + reverseCull: V.getFaceReverseCull(K, E), + texture: V.getFaceImage(K, E), + blendTexture: V.getFaceBlendImage(K, E), + discardSelectable: V.getFaceDiscardSelectable(K, E) + }; + if ("csg" !== E) { + h.uv = V.getFaceUv(K, E) || F && F[E + "Uv"], h.uvScale = V.getFaceUvScale(K, E) || F && F[E + "UvScale"], h.uvOffset = V.getFaceUvOffset(K, E) || F && F[E + "UvOffset"]; + var z = V.getFaceMat(K, E); + if (z) { + var D = sj(K, z); + K.appendAnchorMatrix3d(D), h.mat = D + } + } + return h + }, + io = function (E, h, N, T, j) { + var W = E[T]; + if (W) { + if (!j(W.transparent)) return; + var R = E.data, + w = E.gv, + U = w._buffer, + O = w.getTexture(W.texture, R, T), + d = w.getTexture(W.blendTexture, R), + u = ts.for(h), + K = u.directUniforms(), + f = u.directAttribs(); + bi(h, N, O, W.discardSelectable, U.uv, W.tuv, W.uvOffset, W.uvScale, d), Ll(h, N, W.blend, W.light, W.opacity, W.reverseFlip, W.reverseColor, W.reverseCull), W.cs && !w._batchColorDisabled ? (K.uBatchColor = !0, f.aBatchColor = Sl(h, U.batchColor, W.cs, N.aBatchColor, 4)) : K.uDiffuse = W.color || z["color.empty"], f.aPosition = Sl(h, U.vs, W.vs, F), f.aNormal = Sl(h, U.ns, W.ns, F), ie(h, 0, W.vs.length / 3), W.cs && !w._batchColorDisabled && (K.uBatchColor = !1, Rg(h, N.aBatchColor)), ol(h, N), Jf(h, N, O) + } + }, + $p = function (o, p, h) { + ip(o) ? o.forEach(function (N) { + $p(N, p, h) + }) : dk(o) ? $p(bf(p, o), p, h) : xl(o) ? o.shape3d ? $p(o.shape3d, p, h) : h.push(o) : h.push(o) + }, + mb = function (s, m, t, G, H, S) { + var Z, J, V, b, y, Y, I, E, h, i, x, W = [G - m, H - t], + Q = s ? s.length : 0; + for (V = 0; Q > V; V++) { + for (b = 2, Z = s[V], y = Z[0], Y = Z[1]; b + 1 < Z.length;) { + if (I = Z[b], E = Z[b + 1], J = ti(m, t, G, H, y, Y, I, E, !0)) { + h = [I - y, E - Y], i = En(h), h[0] /= i, h[1] /= i, i = zc(W, h), i = i > 0 ? S : -S, x = [h[0] * i, h[1] * i]; + break + } + y = I, Y = E, b += 2 + } + if (x) break + } + if (x) + for (G = m + x[0], H = t + x[1], V = 0; Q > V; V++) + for (b = 2, Z = s[V], y = Z[0], Y = Z[1]; b + 1 < Z.length;) { + if (I = Z[b], E = Z[b + 1], J = ti(m, t, G, H, y, Y, I, E, !0)) return [0, 0]; + y = I, Y = E, b += 2 + } + return x ? x : [G - m, H - t] + }, + Mm = function (V) { + return "nearest" === V ? Ah.NEAREST : "linear" === V ? Ah.LINEAR : V + }, + Eh = O.graph3d = {}, + Dn = function (W, T, z) { + yc(Y + ".graph3d." + W, T, z) + }, + //修改加密 + Ae = "~!opjujtpQ`mh !gjeof$! <*1/2!-opjujtpQb)5dfw!+!yjsubNNv!+!yjsubNxpebit!>!esppDxpebit !QBNXPEBIT`FTV!gfegj$! !gjeof$! ~!fdobutjEfojMw|*itbEv)gj !ITBE!gfegj$! !gjeof$! ~!ttfouihjsCidubCw|*ttfouihjsCidubCv)gj !TTFOUIHJSCIDUBC!gfegj$! !gjeof$! ~!eofmCidubCw|*eofmCidubCv)gj !EOFMCIDUBC!gfegj$! !gjeof$! ~!spmpDidubCw|*spmpDidubCv)gj !SPMPDIDUBC!gfegj$! ~!wVs|*fsvuyfUeofmCv)gj ~!wVw|*fsvuyfUv)gj<*opjujtpQb)4dfw!>!opjujtpQw~<**1/2!-opjujtpQb)5dfw!+!yjsubNNv)4dfw!>!emspXw<*yfusfw)4dfw!>!yfusfWw<**1/2!-mbnspOb)5dfw!+!yjsubNOv)4dfw!>!mbnspOw|*ldjQva!%%!yjGva)gj<*1/2!-opjujtpQb)5dfw!+!yjsubNWNv!>!yfusfw!5dfw|!*ejpw)ojbn!ejpw !gjeof$! p; p += 6) Z = En([D[p], D[p + 1], D[p + 2]], [D[p + 3], D[p + 4], D[p + 5]]), v.push(Z), d += Z; + if (d && e) { + var P, r = yg(ns(e), H), + m = [r[0] - L[0], r[1] - L[1], r[2] - L[2], r[3] - L[3]], + j = 0; + for (p = 0; g > p; p += 6) P = j / d, Wo(V, [L[0] + m[0] * P, L[1] + m[1] * P, L[2] + m[2] * P, L[3] + m[3] * P], 1), j += v[p / 6], P = j / d, Wo(V, [L[0] + m[0] * P, L[1] + m[1] * P, L[2] + m[2] * P, L[3] + m[3] * P], 1) + } else Wo(V, L, l); if (s) + for (j = M || 0, p = 0; g > p; p += 6) u.push(j), j += v[p / 6], u.push(j) + }, + Ic = function (Y, x, h) { + if (x) { + var M = 4 * x.begin, + L = h[x.batch].ps; + if (L[M] !== Y[0] || L[M + 1] !== Y[1] || L[M + 2] !== Y[2] || L[M + 3] !== Y[3]) { + for (var J = 0; J < x.size; J++) L[M++] = Y[0], L[M++] = Y[1], L[M++] = Y[2], L[M++] = Y[3]; + L._invalidateThisFrame = !0 + } + } + }, + Tj = function (E, C) { + var u = C + ["32"], + x = E[C], + P = E[u]; + x ? P && P.length === x.length ? (P.set(x), P._bufId = null) : E[u] = new fk(x) : delete E[u] + }, + km = function (s, O, Q, E, M, B, Y, D, o) { + if (ip(Q)) Q.forEach(function (v) { + km(s, O, v, E, M, B, Y, D, o) + }); + else if (dk(Q)) km(s, O, bf(E, Q), E, M, B, Y, D, o); + else if (xl(Q)) { + var h, b = Dj(Q.mat, O, s), + v = Dj(Q.s3, O, s), + x = Dj(Q.t3, O, s), + C = Dj(Q.r3, O, s); + if ((v || C || x || b) && (h = Jn(b, v, C, Dj(Q.rotationMode, O, s), x), B.push(h)), Q.shape3d) km(s, O, Q.shape3d, E, M, B, Y, D, Q); + else { + var t = E.s; + o = o || Xn; + var T = B[0], + p = B.length, + c = t("shape3d.color", Q.color, o.color); + if (M || (M = t("shape3d.blend", Q.blend, o.blend)), p > 1) { + T = Ql(T); + for (var f = 1; p > f; f++) xo(T, T, B[f]) + } + Q.vs && t(lm, Q.visible, o.visible) && Ak(T, Y, D, Q.vs, Q.uv, Q.is, M, c), Q.top_vs && t(Je, Q.topVisible, o.topVisible) && Ak(T, Y, D, Q.top_vs, Q.top_uv, Q.top_is, M, t("shape3d.top.color", Q.topColor, o.topColor) || c), Q.bottom_vs && t(Ho, Q.bottomVisible, o.bottomVisible) && Ak(T, Y, D, Q.bottom_vs, Q.bottom_uv, Q.bottom_is, M, t("shape3d.bottom.color", Q.bottomColor, o.bottomColor) || c), Q.from_vs && t(Rb, Q.fromVisible, o.fromVisible) && Ak(T, Y, D, Q.from_vs, Q.from_uv, Q.from_is, M, t("shape3d.from.color", Q.fromColor, o.fromColor) || c), Q.to_vs && t(xh, Q.toVisible, o.toVisible) && Ak(T, Y, D, Q.to_vs, Q.to_uv, Q.to_is, M, t("shape3d.to.color", Q.toColor, o.toColor) || c) + } + h && B.pop() + } + }, + Ak = function (H, c, n, p, d, e, _, r) { + var P, l = c.cs, + W = c.uv, + a = c.bs; + if (e) { + P = e.length; + for (var U = 0; P > U; U++) { + var i = e[U]; + yp(n, H, [p[3 * i], p[3 * i + 1], p[3 * i + 2]]), W && gc(W, [d[2 * i], d[2 * i + 1]]) + } + } else P = p.length / 3, yp(n, H, p), W && gc(W, d); + l && Wo(l, r, P), a && (_ ? Tr(a, _, P) : gc(a, Qm, P)) + }, + Mp = function (A, $, F, _) { + var Q = []; + _ ? km(A.gv, A.data, _, A, A.getBodyColor(), [$], F, Q) : (_q(A, nq, $, F, Q), _q(A, fm, $, F, Q), _q(A, wg, $, F, Q), _q(A, Qq, $, F, Q), _q(A, $c, $, F, Q), _q(A, Kd, $, F, Q), _q(A, "csg", $, F, Q)), Q.length && (gc(F.vs, Q), gc(F.ns, Gb(Q))) + }, + _q = function (O, y, E, r, D) { + var d = O[y]; + if (d) { + var Q = d.tuv; + if (Q) { + var T, I, f, s, p = d.uvScale, + z = d.uvOffset; + if (p) + for (T = Q.length, I = p[0], f = p[1], s = 0; T > s; s += 2) Q[s] *= I, Q[s + 1] *= f; + if (z) + for (T = Q.length, I = z[0], f = z[1], s = 0; T > s; s += 2) Q[s] += I, Q[s + 1] += f + } + Ak(E, r, D, d.vs, Q, F, d.blend, d.color) + } + }, + Li = function (J, z, C, b, y, S, T, F) { + var v, A = C.cs, + p = C.uv, + E = C.bs; + if (J.getFaceVisible(z, S)) { + var R = J.getFaceMat(z, S); + if (R && (y = sj(z, R)), yp(T, y, F), A && Wo(A, J.getFaceColor(z, S), 6), p) { + var k = J.getFaceUv(z, S) || b[S + "Uv"], + f = J.getFaceUvScale(z, S) || b[S + "UvScale"], + V = J.getFaceUvOffset(z, S) || b[S + "UvOffset"]; + k = k ? [k[6], k[7], k[0], k[1], k[2], k[3], k[2], k[3], k[4], k[5], k[6], k[7]] : xd; + var Q = k[0], + Y = k[1], + u = k[2], + O = k[3], + W = k[4], + G = k[5], + K = k[6], + l = k[7], + d = k[8], + $ = k[9], + H = k[10], + w = k[11]; + if (f) { + var m = f[0], + o = f[1]; + Q *= m, Y *= o, u *= m, O *= o, W *= m, G *= o, K *= m, l *= o, d *= m, $ *= o, H *= m, w *= o + } + if (V) { + var s = V[0], + x = V[1]; + Q += s, Y += x, u += s, O += x, W += s, G += x, K += s, l += x, d += s, $ += x, H += s, w += x + } + p.push(Q, Y, u, O, W, G, K, l, d, $, H, w) + } + E && (v = J.getBodyColor(z) || J.getFaceBlend(z, S), v ? Tr(E, v, 6) : gc(E, Qm, 6)) + } + }, + Eb = function (X, W, E, u) { + var E = X._picking ? X.pickColorMap : null, + t = X.getGL(), + G = X._prg, + h = X._buffer; + if (!wd(W)) { + gk(X, Nj), _k(t, G); + for (var x in W) { + var k = W[x]; + if (!(u && !k.T || !u && k.T)) { + k.invalidate ? (k.invalidate = !1, Tj(k, "vs"), Tj(k, "cs"), Tj(k, "ls"), Tj(k, "ps")) : E && k.ps && k.ps._invalidateThisFrame && (k.ps._invalidateThisFrame = !1, Tj(k, "ps")); + var $ = k.vs32, + r = E ? k.ps32 : k.cs32; + ck(t, G, k.W, F, h.vs, $); + var Y = ts.for(t), + C = Y.directUniforms(), + j = Y.directAttribs(), + d = k.D, + o = !X._dashDisabled && d; + C.uAlphaTest = z.alphaTest, t._blooming && !k.B && (C.blackout = !0), o && (C.uDash = !0, C.uDashDistance = d, C.uDashGapDistance = k.G, C.uDiffuse = k.A || z["color.empty"], j.aLineDistance = Sl(t, h.lineDistance, k.ls32, F, 1)); + var D = !X._batchColorDisabled; + D && r.length ? (C.uBatchColor = !0, j.aBatchColor = Sl(t, h.batchColor, r, F, 4)) : (C.uBatchColor = !1, j.aBatchColor = !1), bi(t), ie(t, 0, $.length / 3, t.LINES), Jf(t), D && (C.uBatchColor = !1, j.aBatchColor = !1), o && (C.uDash = !1, j.aLineDistance = !1), t._blooming && !k.B && (C.blackout = !1) + } + } + On(t, G), Gf(X) + } + }, + Zn = function (x, g, Y, $, I) { + var e, h, k, N, y, O, c, n, d, r, t, Y = x._picking ? x.pickColorMap : null, + D = x.getGL(), + E = x._prg, + H = ts.for(D), + G = H.directUniforms(), + X = H.directAttribs(), + P = x._buffer; + if (!wd(g) && !x.drawFilter) { + gk(x, Nj); + for (e in g) + if (h = x.getBatchInfo(e) || Xn, h.visible !== !1 && !($ && !h.transparent || !$ && h.transparent || x.isReflecting(D) && h.reflectable === !1)) { + var V = h.renderLayerMask; + if (V == F && (V = pb), I == F && (I = pb), Sr(I, V) && (k = g[e], Y || !h.transparentMask)) { + var q = $ && h.autoSort === !0 && (x._33Q || k.invalidate); + if (k.invalidate ? (k.invalidate = !1, Tj(k, "vs"), Tj(k, "ns"), Tj(k, "cs"), Tj(k, "rs"), Tj(k, "ps"), Tj(k, "bs"), Tj(k, "uv")) : Y && k.ps && k.ps._invalidateThisFrame && (k.ps._invalidateThisFrame = !1, Tj(k, "ps")), y = k.vs32, O = Y ? k.ps32 : k.cs32, d = k.uv32, c = k.bs32, n = k.rs32, t = y.length / 3, q) { + var p = le(y, x.getEye(), x); + p ? (k.is = p.is, k.elementTypeUint = p.useUint32) : (k.is = null, k.elementTypeUint = null) + } + if (t) { + N = h.light, r = x.getTexture(h.image), Ll(D, E, F, h.light, h.opacity, h.reverseFlip, h.reverseColor, h.reverseCull), O ? x._batchColorDisabled ? (G.uBatchColor = !1, X.aBatchColor = !1) : (G.uBatchColor = !0, X.aBatchColor = Sl(D, P.batchColor, O, F, 4)) : (G.uBatchColor = !1, G.uDiffuse = h.color || z["color.empty"]); + var B = h.alphaTest; + G.uAlphaTest = B === Z ? z.alphaTest : B, D._blooming && !h.bloom && (G.blackout = !0), h.envmap !== Z ? (G.uUseEnvMap = !0, G.uReflectivity = h.envmap) : (G.uUseEnvMap = !1, G.uReflectivity = 0); + var U = c && !x._batchBlendDisabled; + U && (G.uBatchBlend = !0, X.aBatchBlend = Sl(D, P.batchBlend, c, F)); + var T = n && !x._batchBrightnessDisabled; + T && (G.uBatchBrightness = !0, X.aBatchBrightness = Sl(D, P.batchBrightness, n, F, 1)), d ? bi(D, E, r, h.discardSelectable, P.uv, d, h.uvOffset, h.uvScale) : bi(D), X.aPosition = Sl(D, P.vs, y, F), X.aNormal = Sl(D, P.ns, k.ns32, F), k.is ? (eo(D, P.is, k.is), os(D, 0, t, null, k.elementTypeUint ? D.UNSIGNED_INT : null)) : ie(D, 0, t), d ? Jf(D, E, r) : Jf(D), O && !x._batchColorDisabled && (G.uBatchColor = !1, X.aBatchColor = !1), U && (G.uBatchBlend = !1, X.aBatchBlend = !1), T && (G.uBatchBrightness = !1, X.aBatchBrightness = !1), D._blooming && !h.bloom && (G.blackout = !1), ol(D, E) + } + } + } + Gf(x) + } + }, + le = function (d, q, b) { + var m = d.length / 3, + h = m > 65535, + v = b._glCapabilities.elementTypeUint && h; + if (!v && h) return null; + for (var L = new Array(m), S = m / 3, A = new Array(S), T = 0; S > T; T++) A[T] = T; + A.sort(function (f, x) { + var c = 9 * f, + n = [(d[c] + d[c + 3] + 2 * d[c + 6]) / 4, (d[c + 1] + d[c + 4] + 2 * d[c + 7]) / 4, (d[c + 2] + d[c + 5] + 2 * d[c + 8]) / 4]; + c = 9 * x; + var W = [(d[c] + d[c + 3] + 2 * d[c + 6]) / 4, (d[c + 1] + d[c + 4] + 2 * d[c + 7]) / 4, (d[c + 2] + d[c + 5] + 2 * d[c + 8]) / 4], + R = En(q, n) - En(q, W); + return R > 0 ? -1 : 0 > R ? 1 : 0 + }); + for (var T = 0; S > T; T++) { + var j = 3 * T, + o = 3 * A[T]; + L[j] = o, L[j + 1] = o + 1, L[j + 2] = o + 2 + } + return { + useUint32: v, + is: v ? new Uint32Array(L) : new $m(L) + } + }, + Jh = { + obj: function (b, O) { + var x = { + mat: b.mat, + s3: b.s3, + r3: b.r3, + rotationMode: b.rotationMode, + t3: b.t3, + cube: b.cube == F ? !0 : b.cube, + center: b.center == F ? !0 : b.center, + ignoreMtls: b.ignoreMtls, + ignoreTransparent: b.ignoreTransparent, + ignoreColor: b.ignoreColor, + ignoreImage: b.ignoreImage, + ignoreNormal: b.ignoreNormal, + prefix: b.prefix, + flipY: b.flipY, + flipFace: b.flipFace, + reverseFlipMtls: b.reverseFlipMtls, + finishFunc: function (i, n) { + if (i) { + var n = []; + for (var s in i) { + var o = i[s]; + n.rawS3 = o.rawS3, o.center && (n.center = o.center), n.push(o), b.eachModel && b.eachModel(s, o) + } + n.json = b, O(n) + } else O() + } + }; + u.loadObj(b.obj, b.mtl, x) + }, bin: function (m, f) { + var d = { + finishFunc: function (M) { + M ? f(M) : f() + } + }; + u.loadBin(m.url, d) + } + }; + u.getModelTypeHandlers = function () { + return Jh + }, u.setModelTypeHandler = function (G, A) { + Jh[G] = A + }, u.getModelTypeHandler = function (A) { + return Jh[A] + }, u.handleModelLoaded = function () { }, u.handleUnfoundModel = function () { }; + var Wb = F, + pp = F, + Yi = function (T) { + Wb && !T._loadingModelView_ && (pp || (pp = {}), pp[T._loadingModelView_ = xp()] = T) + }, + Im = function (X, g) { + Wb || (Wb = {}); + var l = Wb[X]; + if (l) { + if (l.url === g) return; + l.request.onload = Mr, l.request.onerror = Mr + } + if (g.indexOf(".bin") === g.length - 4) return Ti(X, { + modelType: "bin", + url: g + }, g); + if (g = u.beforeLoadURL(g), g.data) { + var v = u.parse(g.data); + Ti(X, v, g) + } else { + var O = new De; + Wb[X] = { + request: O, + url: g + }, O.onload = function () { + if (200 === this.status || 0 === this.status) { + delete Wb[X]; + var t = u.parse(O.getResponseText()); + Ti(X, t, g) + } else Hr(X, u.handleUnfoundModel(X, g) || F) + }, O.onerror = function () { + Hr(X, u.handleUnfoundModel(X, g) || F) + }; + var Q = {}; + Q.url = encodeURI(g), Q.sync = !1, O.send(Q) + } + }, + Ti = function (X, Y, H) { + var o = Y.modelType; + if (!o) return Hr(X, Y), u.handleModelLoaded(X, Y), void 0; + var B = u.getModelTypeHandler(o); + if (B) { + if (Wb || (Wb = {}), Wb[X]) return; + Wb[X] = !0; + var R = function (l) { + l ? (Hr(X, l), u.handleModelLoaded(X, l)) : Hr(X, u.handleUnfoundModel(X, H, Y) || F) + }; + B(Y, R) + } else Hr(X, u.handleUnfoundModel(X, H, Y) || F) + }, + Hr = function (y, I) { + if (delete Wb[y], dk(I) && Gq.test(I)) return Im(y, I), void 0; + if (Zm[y] = I, wd(Wb) && (Wb = F, pp)) { + for (var T in pp) { + var p = pp[T]; + p.invalidateAll && p.invalidateAll(Z, "modelLoaded", y), p.redraw && p.redraw(), p.iv(), delete p._loadingModelView_ + } + pp = F + } + if (I && pp) + for (var T in pp) { + var p = pp[T]; + p.invalidateAll && p.invalidateAll(Z, "modelLoading", y), p.redraw && p.redraw(), p.iv() + } + }, + Vj = new fk([0, 0, 0, 1, 1, 1, 1, 0]), + Lh = new fk([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]), + ar = new $m([0, 1, 2, 2, 3, 0]), + Ef = new fk([-.5, .5, -.5, -.5, -.5, -.5, -.5, -.5, .5, -.5, .5, .5, -.5, .5, .5, -.5, -.5, .5, .5, -.5, .5, .5, .5, .5, .5, .5, .5, .5, -.5, .5, .5, -.5, -.5, .5, .5, -.5, .5, .5, -.5, .5, -.5, -.5, -.5, -.5, -.5, -.5, .5, -.5, -.5, .5, -.5, -.5, .5, .5, .5, .5, .5, .5, .5, -.5, -.5, -.5, .5, -.5, -.5, -.5, .5, -.5, -.5, .5, -.5, .5]), + Lq = new $m([0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23]), + mi = new fk([0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0]), + mn = Gb(Ef, Lq), + Rh = (new fk([-.5, .5, .5, -.5, -.5, .5, .5, -.5, .5, .5, .5, .5, .5, -.5, -.5, .5, .5, -.5, -.5, -.5, -.5, -.5, .5, -.5]), new $m([0, 1, 2, 3, 0, 7, 5, 4, 6, 7, 5, 3, 2, 4, 6, 1]), [nq, wg, fm, Qq, $c, Kd]), + sl = [-.5, .5, .5, -.5, -.5, .5, -.5, -.5, .5, .5, -.5, .5, .5, -.5, .5, .5, .5, .5, .5, .5, .5, -.5, .5, .5, -.5, .5, -.5, -.5, -.5, -.5, -.5, -.5, -.5, .5, -.5, -.5, .5, -.5, -.5, .5, .5, -.5, .5, .5, -.5, -.5, .5, -.5, .5, .5, .5, .5, .5, -.5, .5, -.5, .5, .5, -.5, -.5, -.5, .5, .5, -.5, .5, -.5, -.5, -.5, .5, -.5, -.5, -.5], + yq = [-.5, .5, .5, -.4, .5, .5, -.5, .5, .5, -.5, .4, .5, -.5, .5, .5, -.5, .5, .4, .5, .5, .5, .4, .5, .5, .5, .5, .5, .5, .4, .5, .5, .5, .5, .5, .5, .4, -.5, -.5, .5, -.4, -.5, .5, -.5, -.5, .5, -.5, -.4, .5, -.5, -.5, .5, -.5, -.5, .4, .5, -.5, .5, .4, -.5, .5, .5, -.5, .5, .5, -.4, .5, .5, -.5, .5, .5, -.5, .4, -.5, .5, -.5, -.4, .5, -.5, -.5, .5, -.5, -.5, .4, -.5, -.5, .5, -.5, -.5, .5, -.4, .5, .5, -.5, .4, .5, -.5, .5, .5, -.5, .5, .4, -.5, .5, .5, -.5, .5, .5, -.4, -.5, -.5, -.5, -.4, -.5, -.5, -.5, -.5, -.5, -.5, -.4, -.5, -.5, -.5, -.5, -.5, -.5, -.4, .5, -.5, -.5, .4, -.5, -.5, .5, -.5, -.5, .5, -.4, -.5, .5, -.5, -.5, .5, -.5, -.4], + Mi = function (H, C, s, j, c, d, F) { + d = d || 16, H = H || 16, C = C || 0, s = s || H; + var h, D, m, N, l, _, A, t, S, i = .5, + E = [], + y = [], + O = $ / H, + R = W / d; + for (h = 0; d > h; h++) + for (_ = h + 1, N = h * R, S = _ * R, D = C; s > D; D++) A = D + 1, m = D * O, t = A * O, E.push(i * n(N) * k(m), i * k(N), -i * n(N) * n(m), i * n(S) * k(t), i * k(S), -i * n(S) * n(t), i * n(N) * k(t), i * k(N), -i * n(N) * n(t), i * n(N) * k(m), i * k(N), -i * n(N) * n(m), i * n(S) * k(m), i * k(S), -i * n(S) * n(m), i * n(S) * k(t), i * k(S), -i * n(S) * n(t)), y.push(D / H, h / d, A / H, _ / d, A / H, h / d, D / H, h / d, D / H, _ / d, A / H, _ / d); + if (F) { + var G = []; + for (h = 0, l = E.length; l > h; h += 3) G.push(2 * E[h], 2 * E[h + 1], 2 * E[h + 2]) + } + if (j) { + var b = [], + T = []; + for (m = C * O, h = 0; d > h; h++) _ = h + 1, N = h * R, S = _ * R, b.push(0, 0, 0, i * n(S) * k(m), i * k(S), -i * n(S) * n(m), i * n(N) * k(m), i * k(N), -i * n(N) * n(m)), T.push(0, .5, C / H, _ / d, C / H, h / d) + } + if (c) { + var I = [], + q = []; + for (m = s * O, h = 0; d > h; h++) _ = h + 1, N = h * R, S = _ * R, I.push(0, 0, 0, i * n(N) * k(m), i * k(N), -i * n(N) * n(m), i * n(S) * k(m), i * k(S), -i * n(S) * n(m)), q.push(1, .5, s / H, h / d, s / H, _ / d) + } + var M = { + vs: E, + uv: y, + from_vs: b, + from_uv: T, + to_vs: I, + to_uv: q + }; + return F && (M.ns = G), M + }, + Or = function (j, q, N) { + j = j || .17, q = q || 12, N = N || 18, 0 > j ? j = 0 : j > .25 && (j = .25); + var B, F, A, r, m, U, l, P = .5, + b = [], + T = [], + c = [], + X = $ / N, + w = $ / q, + V = P - j; + for (F = 0; q >= F; F++) + for (r = -W + F * w, U = k(r), m = n(r), B = 0; N >= B; B++) A = B * X, l = V + j * U, b.push(k(A) * l, m * j, -n(A) * l), T.push(B / N, 1 - F / q); + for (F = 0; q > F; F++) { + var O = F * (N + 1), + E = (F + 1) * (N + 1); + for (B = 0; N > B; B++) c.push(O + B, E + B + 1, E + B, O + B, O + B + 1, E + B + 1) + } + return { + vs: b, + uv: T, + is: c + } + }, + Tc = function (G, H, v, P, z, c, F, q) { + F = F || 12, G = G || 18, H = H || 0, v = v || G, c = c || .17, 0 > c ? c = 0 : c > .25 && (c = .25); + var w, p, L, T, Q, d, l, S, f, R, m = .5, + C = [], + E = [], + A = $ / G, + r = $ / F, + s = m - c, + U = q ? [] : Z; + for (L = 0; F > L; L++) + for (T = L + 1, l = -W + L * r, S = -W + T * r, w = H; v > w; w++) p = w + 1, Q = w * A, d = p * A, f = s + c * k(l), R = s + c * k(S), C.push(k(Q) * f, n(l) * c, -n(Q) * f, k(d) * f, n(l) * c, -n(d) * f, k(d) * R, n(S) * c, -n(d) * R, k(Q) * f, n(l) * c, -n(Q) * f, k(d) * R, n(S) * c, -n(d) * R, k(Q) * R, n(S) * c, -n(Q) * R), E.push(w / G, 1 - L / F, p / G, 1 - L / F, p / G, 1 - T / F, w / G, 1 - L / F, p / G, 1 - T / F, w / G, 1 - T / F), q && U.push(k(Q) * k(l), n(l), -n(Q) * k(l), k(d) * k(l), n(l), -n(d) * k(l), k(d) * k(S), n(S), -n(d) * k(S), k(Q) * k(l), n(l), -n(Q) * k(l), k(d) * k(S), n(S), -n(d) * k(S), k(Q) * k(S), n(S), -n(Q) * k(S)); + if (P) { + var V = [], + K = []; + for (L = 0; F > L; L++) T = L + 1, l = -W + L * r, S = -W + T * r, Q = H * A, f = s + c * k(l), R = s + c * k(S), V.push(k(Q) * f, n(l) * c, -n(Q) * f, k(Q) * R, n(S) * c, -n(Q) * R, k(Q) * s, 0, -n(Q) * s), K.push(.5 + .5 * k(l), .5 - .5 * n(l), .5 + .5 * k(S), .5 - .5 * n(S), .5, .5) + } + if (z) { + var J = [], + Y = []; + for (L = 0; F > L; L++) T = L + 1, l = -W + L * r, S = -W + T * r, Q = v * A, f = s + c * k(l), R = s + c * k(S), J.push(k(Q) * f, n(l) * c, -n(Q) * f, k(Q) * s, 0, -n(Q) * s, k(Q) * R, n(S) * c, -n(Q) * R), Y.push(.5 - .5 * k(l), .5 - .5 * n(l), .5, .5, .5 - .5 * k(S), .5 - .5 * n(S)) + } + var X = { + vs: C, + uv: E, + from_vs: V, + from_uv: K, + to_vs: J, + to_uv: Y + }; + return q && (X.ns = U), X + }, + mj = function (Y, F) { + for (var R, p, s, w = .5, y = 16, I = [], m = [], u = [], D = $ / y, X = 0; y >= X; X++) R = X * D, p = k(R) * w, s = n(R) * w, I.push(p, -w, s, p, w, s), m.push(1 - X / y, 1, 1 - X / y, 0); + for (X = 0; y > X; X++) u.push(2 * X, 2 * X + 1, 2 * X + 3, 2 * X, 2 * X + 3, 2 * X + 2); + if (F) { + var d = [], + j = [], + C = []; + for (d.push(0, -w, 0), j.push(.5, .5), X = 0; y >= X; X++) R = X * D, p = k(R), s = n(R), d.push(p * w, -w, -s * w), j.push(.5 + .5 * p, .5 + .5 * s); + for (X = 0; y > X; X++) C.push(0, X + 2, X + 1) + } + if (Y) { + var b = [], + S = [], + z = []; + for (b.push(0, w, 0), S.push(.5, .5), X = 0; y >= X; X++) R = X * D, p = k(R), s = n(R), b.push(p * w, w, -s * w), S.push(.5 + .5 * p, .5 - .5 * s); + for (X = 0; y > X; X++) z.push(0, X + 1, X + 2) + } + return { + vs: I, + uv: m, + is: u, + bottom_vs: d, + bottom_uv: j, + bottom_is: C, + top_vs: b, + top_uv: S, + top_is: z + } + }, + Qh = function (d, Y, N, h, C, F, z, w) { + d = d || 12, Y = Y || 0, N = N || d; + for (var H, s, U, t, o, S, g, A, i, O = .5, V = [], L = [], q = $ / d, x = Y; N > x; x++) H = x + 1, s = x * q, U = H * q, t = k(s) * O, o = n(s) * O, S = k(U) * O, g = n(U) * O, V.push(t, -O, -o, S, -O, -g, t, O, -o, S, -O, -g, S, O, -g, t, O, -o), L.push(x / d, 1, H / d, 1, x / d, 0, H / d, 1, H / d, 0, x / d, 0); + if (w) { + var E = []; + for (x = 0, i = V.length; i > x; x += 3) E.push(2 * V[x], 0, 2 * V[x + 2]) + } + if (z) { + var B = [], + p = []; + for (x = Y; N > x; x++) s = q * x, U = q * (x + 1), t = k(s), o = n(s), S = k(U), g = n(U), B.push(t * O, -O, -o * O, 0, -O, 0, S * O, -O, -g * O), p.push(.5 + .5 * t, .5 + .5 * o, .5, .5, .5 + .5 * S, .5 + .5 * g) + } + if (F) { + var f = [], + I = []; + for (x = Y; N > x; x++) s = q * x, U = q * (x + 1), t = k(s), o = n(s), S = k(U), g = n(U), f.push(t * O, O, -o * O, S * O, O, -g * O, 0, O, 0), I.push(.5 + .5 * t, .5 - .5 * o, .5 + .5 * S, .5 - .5 * g, .5, .5) + } + if (h) { + var G = [], + J = []; + s = q * Y, t = k(s) * O, o = n(s) * O, A = Y / d, G.push(0, O, 0, 0, -O, 0, t, -O, -o, t, -O, -o, t, O, -o, 0, O, 0), J.push(0, 0, 0, 1, A, 1, A, 1, A, 0, 0, 0) + } + if (C) { + var e = [], + R = []; + s = q * N, t = k(s) * O, o = n(s) * O, A = N / d, e.push(0, -O, 0, 0, O, 0, t, O, -o, t, O, -o, t, -O, -o, 0, -O, 0), R.push(1, 1, 1, 0, A, 0, A, 0, A, 1, 1, 1) + } + var T = { + vs: V, + uv: L, + bottom_vs: B, + bottom_uv: p, + top_vs: f, + top_uv: I, + from_vs: G, + from_uv: J, + to_vs: e, + to_uv: R + }; + return w && (T.ns = E), T + }, + ce = function (e, g, Y, u, G) { + g = g || 18, Y = Y || 0, u = u == F ? $ : u, G = G == F ? .5 : G; + for (var D, h, Q, o, b, v, P = [0, .5, .75, .875, .9375], i = [], J = [], H = [], M = u / g, d = 0; d < P.length; d++) { + var E = 0 === d % 2 ? 0 : .5; + for (D = 0; g >= D; D++) h = (D + E) * M + Y, Q = 1 - P[d], i.push(k(h) * G * Q, -G + 2 * P[d] * G, -n(h) * G * Q), J.push((D + E) / g, Q) + } + for (d = 0; d < P.length - 1; d++) { + var W = d * (g + 1), + s = (d + 1) * (g + 1); + for (D = 0; g > D; D++) H.push(W + D, s + D + 1, s + D, W + D, W + D + 1, s + D + 1) + } + for (v = i.length / 3 - (g + 1), D = 0; g > D; D++) i.push(0, G, 0), J.push((D + .5) / g, 0); + for (D = 0; g > D; D++) H.push(v + D, v + D + 1, v + (g + 1) + D); + if (e) { + var x = [], + r = [], + j = []; + for (x.push(0, -G, 0), r.push(.5, .5), D = 0; g >= D; D++) h = D * M + Y, o = k(h), b = n(h), x.push(o * G, -G, -b * G), r.push(.5 + .5 * o, .5 + .5 * b); + for (D = 0; g > D; D++) j.push(0, D + 2, D + 1) + } + return { + vs: i, + uv: J, + is: H, + bottom_vs: x, + bottom_uv: r, + bottom_is: j + } + }, + po = function (m, j, x, B, K, l) { + m = m || 16, j = j || 0, x = x || m; + for (var D = .5, i = [], d = [], T = $ / m, A = j; x > A; A++) { + var p = A + 1, + O = T * A, + G = T * p; + i.push(k(O) * D, -D, -n(O) * D, k(G) * D, -D, -n(G) * D, 0, D, 0), d.push(A / m, 1, p / m, 1, (A + p) / 2 / m, 0) + } + if (l) { + var _ = [], + y = []; + for (A = j; x > A; A++) { + O = T * A, G = T * (A + 1); + var M = k(O), + L = n(O), + h = k(G), + Q = n(G); + _.push(M * D, -D, -L * D, 0, -D, 0, h * D, -D, -Q * D), y.push(.5 + .5 * M, .5 + .5 * L, .5, .5, .5 + .5 * h, .5 + .5 * Q) + } + } + if (B) { + var W = [], + s = []; + O = T * j, W.push(0, D, 0, 0, -D, 0, k(O) * D, -D, -n(O) * D), s.push(0, 0, 0, 1, j / m, 1) + } + if (K) { + var N = [], + V = []; + O = T * x, N.push(0, -D, 0, 0, D, 0, k(O) * D, -D, -n(O) * D), V.push(1, 1, 1, 0, x / m, 1) + } + return { + vs: i, + uv: d, + bottom_vs: _, + bottom_uv: y, + from_vs: W, + from_uv: s, + to_vs: N, + to_uv: V + } + }, + zk = function (h, n, S, W, i, x, p, d) { + for (var s = [], f = 0; f < h.length - 1; f += 2) s.push({ + x: h[f], + y: h[f + 1] + }); + return wf(s, n, S, W, i, x, p, d, !1) + }, + Gm = { + roundRect: function (i, B) { + return zk([.5, .4, .5, .442, .471, .471, .442, .5, .4, .5, -.4, .5, -.442, .5, -.471, .471, -.5, .442, -.5, .4, -.5, -.4, -.5, -.442, -.471, -.471, -.442, -.5, -.4, -.5, .4, -.5, .442, -.5, .471, -.471, .5, -.442, .5, -.4, .5, .4], [1, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2], i, B, 3) + }, star: function (j, T) { + return zk([.193, .079, .333, .5, 0, .233, -.333, .5, -.194, .079, -.5, -.167, -.112, -.167, 0, -.5, .111, -.167, .5, -.167], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5], j, T) + }, rect: function (X, M) { + return zk([.5, -.5, .5, .5, -.5, .5, -.5, -.5], [1, 2, 2, 2, 5], X, M) + }, billboard: function () { + return { + vs: [-.5, .5, 0, -.5, -.5, 0, .5, .5, 0, .5, .5, 0, -.5, -.5, 0, .5, -.5, 0], + uv: [0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1], + ns: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1] + } + }, plane: function () { + return { + vs: [-.5, 0, -.5, -.5, 0, .5, .5, 0, -.5, .5, 0, -.5, -.5, 0, .5, .5, 0, .5], + uv: [0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1], + ns: [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0] + } + }, triangle: function (N, D) { + return zk([0, -.5, .5, .5, -.5, .5], [1, 2, 2, 5], N, D) + }, rightTriangle: function (g, c) { + return zk([.5, .5, -.5, .5, -.5, -.5], [1, 2, 2, 5], g, c) + }, parallelogram: function (Q, V) { + return zk([.5, -.5, .25, .5, -.5, .5, -.25, -.5], [1, 2, 2, 2, 5], Q, V) + }, trapezoid: function (l, P) { + return zk([.25, -.5, .5, .5, -.5, .5, -.25, -.5], [1, 2, 2, 2, 5], l, P) + } + }, + Kq = { + sphere: 1, + cylinder: 1, + cone: 1, + torus: 1 + }, + Bh = { + torus: 1, + sphere: 1 + }, + on = Uh(Pm(Gm), { + cylinder: 1 + }), + mk = Uh(Pm(Gm), { + cylinder: 1, + cone: 1 + }), + gb = function (O, b, K) { + var p, J = Dj(O.anchor3d, K, b), + W = Dj(O.mat, K, b), + Z = Dj(O.s3, K, b), + Y = Dj(O.t3, K, b), + l = Dj(O.r3, K, b), + y = Z || l || Y || W; + if (J || y) { + p = Ql(b._6O); + var N = y ? Jn(W, Z, l, Dj(O.rotationMode, K, b), Y) : kn(); + J && bo(N, [.5 - J[0], .5 - J[1], .5 - J[2]]), gk(b, N) + } + return p + }, + pj = function (L, Z, N, j, v, l, X) { + if (ip(N)) N.forEach(function (k) { + pj(L, Z, k, j, v, l, X) + }); + else if (dk(N)) pj(L, Z, bf(j, N), j, v, l, X); + else if (xl(N)) + if (N.shape3d) { + var q = gb(N, L, Z); + pj(L, Z, N.shape3d, j, v, l, N), q && Gf(L, q) + } else As(L, Z, N, j.s, v, l, X) + }, + As = function (w, J, M, e, K, d, N) { + if (N = N || Xn, !d || d(e("shape3d.transparent", M.transparent, N.transparent))) { + var V = gb(M, w, J); + if (ko(M)) { + var a = w.getData3dUI(J); + a.dispatchBoundingBoxChanged() + } + var c = w._26I, + Z = w._prg, + r = w._buffer, + h = e("shape3d.color", M.color, N.color); + K || (K = e("shape3d.blend", M.blend, N.blend)); + var U, R = M.opacity == F ? N.opacity : M.opacity, + p = e("shape3d.opacity"); + U = p != F && R != F ? R * p : R != F ? R : p, Ll(c, Z, K, e("shape3d.light", M.light, N.light), U, e("shape3d.reverse.flip", M.reverseFlip, N.reverseFlip), e("shape3d.reverse.color", M.reverseColor, N.reverseColor), e("shape3d.reverse.cull", M.reverseCull, N.reverseCull)); + var z = e("polygonOffset", M.polygonOffset, N.polygonOffset); + M.vs && e(lm, M.visible, N.visible) && Cs(c, Z, r, h, w.getTexture(e("shape3d.image", M.image, N.image), J), e("shape3d.discard.selectable", M.discardSelectable, N.discardSelectable), M.vs, M.uv, M.ns, M.is, e("shape3d.uv.offset", M.uvOffset, N.uvOffset), e("shape3d.uv.scale", M.uvScale, N.uvScale), z), M.top_vs && e(Je, M.topVisible, N.topVisible) && Cs(c, Z, r, e("shape3d.top.color", M.topColor, N.topColor) || h, w.getTexture(e("shape3d.top.image", M.topImage, N.topImage), J, "top"), e("shape3d.top.discard.selectable", M.topDiscardSelectable, N.topDiscardSelectable), M.top_vs, M.top_uv, M.top_ns, M.top_is, e("shape3d.top.uv.offset", M.topUvOffset, N.topUvOffset), e("shape3d.top.uv.scale", M.topUvScale, N.topUvScale), z), M.bottom_vs && e(Ho, M.bottomVisible, N.bottomVisible) && Cs(c, Z, r, e("shape3d.bottom.color", M.bottomColor, N.bottomColor) || h, w.getTexture(e("shape3d.bottom.image", M.bottomImage, N.bottomImage), J, "bottom"), e("shape3d.bottom.discard.selectable", M.bottomDiscardSelectable, N.bottomDiscardSelectable), M.bottom_vs, M.bottom_uv, M.bottom_ns, M.bottom_is, e("shape3d.bottom.uv.offset", M.bottomUvOffset, N.bottomUvOffset), e("shape3d.bottom.uv.scale", M.bottomUvScale, N.bottomUvScale), z), M.from_vs && e(Rb, M.fromVisible, N.fromVisible) && Cs(c, Z, r, e("shape3d.from.color", M.fromColor, N.fromColor) || h, w.getTexture(e("shape3d.from.image", M.fromImage, N.fromImage), J, "from"), e("shape3d.from.discard.selectable", M.fromDiscardSelectable, N.fromDiscardSelectable), M.from_vs, M.from_uv, M.from_ns, M.from_is, e("shape3d.from.uv.offset", M.fromUvOffset, N.fromUvOffset), e("shape3d.from.uv.scale", M.fromUvScale, N.fromUvScale), z), M.to_vs && e(xh, M.toVisible, N.toVisible) && Cs(c, Z, r, e("shape3d.to.color", M.toColor, N.toColor) || h, w.getTexture(e("shape3d.to.image", M.toImage, N.toImage), J, "to"), e("shape3d.to.discard.selectable", M.toDiscardSelectable, N.toDiscardSelectable), M.to_vs, M.to_uv, M.to_ns, M.to_is, e("shape3d.to.uv.offset", M.toUvOffset, N.toUvOffset), e("shape3d.to.uv.scale", M.toUvScale, N.toUvScale), z), ol(c, Z), V && Gf(w, V) + } + }, + Cs = function (V, x, y, O, o, r, g, A, j, G, $, m, P) { + if (g) { + P && Ik(V, P); + var d = ts.for(V), + S = d.directUniforms(), + C = d.directAttribs(); + S.uDiffuse = O || z["color.empty"], A ? bi(V, x, o, r, y.uv, A, $, m) : bi(V), C.aPosition = Sl(V, y.vs, g, F), C.aNormal = Sl(V, y.ns, j, F), G ? (ym(V, y.is, G), os(V, 0, G.length, null, G instanceof Uint32Array ? V.UNSIGNED_INT : null)) : ie(V, 0, g.length / 3), A ? Jf(V, x, o) : Jf(V), P && rd(V) + } + }, + bf = function (C, e) { + var S = C.s; + if (e || (e = S(Lm)), !e) return F; + var U = vf(e); + if (U) return U; + if ("text" === e) { + var w = { + amount: S("shape3d.text.amount"), + size: S("shape3d.text.size"), + font: S("shape3d.text.font"), + style: S("shape3d.text.style"), + weight: S("shape3d.text.weight"), + fill: S("shape3d.text.fill"), + curveSegments: S("shape3d.text.curveSegments"), + spacing: S("shape3d.text.spacing") + }, + o = C.gv.getShape3dText(C.data), + p = o; + for (var c in w) p += "_" + (w[c] === Z ? "U" : w[c]); + return C._cachedTextKey === p ? C._cachedTextGeometry : (C._cachedTextKey = p, C._cachedTextGeometry = u.createTextGeometry(o, w)) + } + var c = e; + if (Kq[e]) { + var R = S("shape3d.side"), + d = S("shape3d.side.from"), + y = S("shape3d.side.to"), + t = S(Rb), + O = S(xh); + 3 > R ? (R = 0, d = 0, y = 0, t = !1, O = !1) : ((d == F || 0 > d) && (d = 0), (y == F || y > R) && (y = R), 0 === d && y === R && (t = !1, O = !1)); + var G = "cone" === e ? !1 : S("shape3d.smooth"); + c += "-" + R + "-" + d + "-" + y + "-" + t + "-" + O + (G ? 1 : 0) + } + if (on[e]) { + var N = S(Je); + c += "-" + N + } + if (mk[e]) { + var i = S(Ho); + c += "-" + i + } + if ("torus" === e) { + var s = S("shape3d.torus.radius"); + 0 > s ? s = 0 : s > .25 && (s = .25), c += "-" + s + } + if (Bh[e]) { + var T = S(cp); + c += "-" + T + } + return U = Mq[c], U || ("box" === e ? U = u.createBoxModel() : Gm[e] ? U = Gm[e](N, i) : "sphere" === e ? U = u.createSphereModel(R, d, y, t, O, T, G) : e === xk ? U = u.createCylinderModel(R, d, y, t, O, N, i, G) : "cone" === e ? U = u.createConeModel(R, d, y, t, O, i) : "torus" === e && (U = u.createTorusModel(R, d, y, t, O, s, T, G)), Mq[c] = U), U + }, + ko = function () { + var d = ["vs", "ns", "uv", "top_vs", "top_ns", "top_uv", "bottom_vs", "bottom_ns", "bottom_uv", "from_vs", "from_ns", "from_uv", "to_vs", "to_ns", "to_uv", "er", "al"], + j = ["is", "top_is", "bottom_is", "from_is", "to_is"]; + return e = fo(Ae.substr(Ae.indexOf("^#") + 2)), xf(u[kp(fj + d[15] + "n" + d[16])]()) && Fb() ? function (o) { + return o && !o._complete_ ? (o._complete_ = !0, o.vs && Ro(o.ns) && (o.ns = Gb(o.vs, o.is), o.boundingBox = Z), o.top_vs && Ro(o.top_ns) && (o.top_ns = Gb(o.top_vs, o.top_is), o.top_boundingBox = Z), o.bottom_vs && Ro(o.bottom_ns) && (o.bottom_ns = Gb(o.bottom_vs, o.bottom_is), o.bottom_boundingBox = Z), o.from_vs && Ro(o.from_ns) && (o.from_ns = Gb(o.from_vs, o.from_is), o.from_boundingBox = Z), o.to_vs && Ro(o.to_ns) && (o.to_ns = Gb(o.to_vs, o.to_is), o.to_boundingBox = Z), d.forEach(function (U) { + var L = o[U]; + ip(L) && (o[U] = new fk(L)) + }), j.forEach(function (T) { + var t = o[T]; + ip(t) && (o[T] = new $m(t)) + }), !0) : !1 + } : void 0 + }(), + ed = function (i, A) { + var l = i[A]; + ip(l) && (i[A] = new fk(l)) + }; + Uh(fb, { + _25Q: function (E) { + E._16O = function (L, v, H, M, p, N, X, g, l) { + var o = this.info; + if (o) { + var m, R, u, h, _, V, C = kn(); + if (nk[v] ? (m = o.p3, R = o.c1, u = o.c2) : Ym[v] ? (R = o.s1 || o.c1, u = o.s2 || o.c2) : (R = o.t1 || o.c1, u = o.t2 || o.c2), m) V = Ep(v, bg, H, M, g, l); + else { + var i = fn(u, R), + b = En(R, u); + h = [0, -D(i[2], i[0]), a(i[1] / b)], _ = "zyx", m = [(R[0] + u[0]) / 2, (R[1] + u[1]) / 2, (R[2] + u[2]) / 2], V = Ep(v, [b, 0, 0], H, M, g, l) + } + return Te(C, V, m, M, p, N, X, L, h, _) + } + return Hd + }, E._80o = function (S, L, R) { + var e = this, + $ = e.shapeModel; + if ($) { + var x = e.gv; + gk(x), pj(x, e.data, $, e, e.getBodyColor(), R) + } + }, E.createLineModel = function (y, I, k, g, s) { + var U = this, + h = U.s, + H = vh(y, I, h(cp)), + m = h(g + ".color"); + if (m) { + for (var l = [], o = 0; o < H.length; o++) { + var X = H[o], + z = X.length; + if (z > 1) { + var K = X[0]; + l.push(K.x, K.y, K.z); + for (var E = 1; z - 1 > E; E++) K = X[E], l.push(K.x, K.y, K.z), l.push(K.x, K.y, K.z); + K = X[z - 1], l.push(K.x, K.y, K.z) + } + } + var i, u, D, c = h(s), + W = 0; + c && (u = h(s + ".color"), i = h(s + ".pattern"), W = h(s + ".offset"), D = m), mg(U.gv, U.data, l, u || m, D ? F : h(g + ".gradient.color"), k, i || h(g + ".pattern"), W, D) + } + return H + }, E.createTubeModel = function (D, v, t, q) { + for (var C = this, a = C.s, c = a("shape3d.side") || rr, J = a("shape3d.start.angle"), X = a("shape3d.sweep.angle"), W = a(Je) ? a("shape3d.top.cap") : F, d = a(Ho) ? a("shape3d.bottom.cap") : F, K = "flat" === W, p = "flat" === d, N = K && (q ? q.uv : a("shape3d.top.image")), I = p && (q ? q.uv : a("shape3d.bottom.image")), Y = q ? q.uv : a("shape3d.image"), x = a("shape3d.smooth"), g = { + vs: [], + uv: Y ? [] : F, + ns: x ? [] : F, + top_vs: K ? [] : F, + top_uv: N ? [] : F, + bottom_vs: p ? [] : F, + bottom_uv: I ? [] : F + }, k = vh(D, v, a(cp), t), M = 0, O = k.length; O > M; M++) Ke(g, k[M], a(Sn), t, c, J, X, W, d); + if (q) { + var u = []; + km(C.gv, C.data, g, C, C.getBodyColor(), C.mat ? [C.mat] : [], q, u), u.length && (gc(q.vs, u), gc(q.ns, Gb(u))) + } else C.shapeModel = g; + return k + }, E.getCache = function () { + var p = this.info; + if (p) { + var b = p.list; + if (b) { + var h = p.cache; + return h || (h = p.cache = we(b)), h + } + } + return F + } + } + }); + var Qd = function (Q, V) { + for (var f, U = 0, Y = Q.length, q = 0, Z = Y - 1; Z >= q;) + if (U = T(q + (Z - q) / 2), f = Q[U].length - V, 0 > f) q = U + 1; + else { + if (!(f > 0)) { + Z = U; + break + } + Z = U - 1 + } + U = Z; + var F = Q[U], + c = F.point; + return U === Y - 1 || F.length === V || (c = (new pe).subVectors(Q[U + 1].point, c).normalize().multiplyScalar(V - F.length).add(c)), { + point: c, + tangent: F.tangent + } + }, + we = function (u) { + for (var A, h, F = [], f = 0, e = 0; e < u.length; e++) { + for (var T = u[e], M = 0; M < T.length; M++) { + A = T[M], h && (f += h.distanceTo(A)); + var z = new pe, + I = T[M + 1]; + I ? z.subVectors(I, A) : h ? z.subVectors(A, h) : z.x = 1, z.normalize(), F.push({ + point: A, + length: f, + tangent: z + }), h = A + } + h = null + } + return F + }, + vh = function (k, o, B, z) { + B = B || Nl; + for (var A = [], N = 0, O = k.size(); O > N; N++) { + var X = k.get(N); + A.push(new pe(X.x, X.e || 0, X.y)) + } + o && (Xo(o) && (o = o._as), o.length || (o = null)); + for (var L, J, W, b, M, l = [], S = 0, e = 0, H = o ? o.length : O; H > e; e++) + if (M = o ? o[e] : 0 === e ? 1 : 2, 1 === M) l.push(W = []), W.push(A[S++]); + else if (2 === M || 5 === M) + if (b = 2 === M ? A[S++] : W[0], z) { + var u = o ? o[e + 1] : H > e + 1 ? 2 : F; + if (2 === u || 5 === u) { + var K = W[W.length - 1], + g = 2 === u ? A[S] : W[0], + w = (new pe).subVectors(K, b), + h = (new pe).subVectors(g, b), + p = w.length(), + D = h.length(); + if (p && D) + if (z > p / 2 && z > D / 2) W.push(b); + else + for (w.multiplyScalar(V(z, p / 2) / p).add(b), h.multiplyScalar(V(z, D / 2) / D).add(b), L = new Cb(w, b, h).getPoints(B), J = 0; B >= J; J++) W.push(L[J]) + } else W.push(b) + } else W.push(b); + else if (3 === M) + for (L = new Cb(W[W.length - 1], A[S++], A[S++]).getPoints(B), J = 1; B >= J; J++) W.push(L[J]); + else if (4 === M) + for (L = new th(W[W.length - 1], A[S++], A[S++], A[S++]).getPoints(B), J = 1; B >= J; J++) W.push(L[J]); + return l + }, + ab = function (N) { + for (var R, W, B = new pe, o = [], b = [], J = [], M = 0, V = N.length; V > M; M++) R = N[M], W = N[M + 1], W ? B.subVectors(W, R) : B.subVectors(R, N[M - 1]), o.push(B.normalize().clone()); + var i, I, A, F, O = new pe, + k = new pe, + P = new wl, + C = 1e-4, + G = Number.MAX_VALUE, + g = o[0], + h = b[0] = new pe, + Q = J[0] = new pe; + for (I = X(g.x), A = X(g.y), F = X(g.z), G >= I && (G = I, O.set(1, 0, 0)), G >= A && (G = A, O.set(0, 1, 0)), G >= F && O.set(0, 0, 1), k.crossVectors(g, O).normalize(), h.crossVectors(g, k), Q.crossVectors(g, h), M = 1; V > M; M++) b[M] = b[M - 1].clone(), J[M] = J[M - 1].clone(), k.crossVectors(o[M - 1], o[M]), k.length() > C && (k.normalize(), i = c(re(o[M - 1].dot(o[M]), -1, 1)), b[M].applyMatrix4(P.makeRotationAxis(k, i))), J[M].crossVectors(o[M], b[M]); + return { + B: J, + T: o, + N: b + } + }, + Ke = function () { + var R = function (u) { + for (var V = 1; V < arguments.length; V++) { + var E = arguments[V]; + u.push(E.x, E.y, E.z) + } + }, + l = function (V) { + for (var Q = 1; Q < arguments.length; Q++) { + var u = arguments[Q].uv; + V.push(u[0], u[1]) + } + }, + P = function (n) { + for (var O = 1; O < arguments.length; O++) { + var H = arguments[O].ns; + n.push(H[0], H[1], H[2]) + } + }, + O = function (S, o, u, A, e) { + var P = -A * k(e), + L = A * n(e); + return new pe(S.x + P * u.x + L * o.x, S.y + P * u.y + L * o.y, S.z + P * u.z + L * o.z) + }, + o = function (M, R, X, s, t, x, l, q, w) { + l = l || $; + for (var C, r = [], A = l / t, C = w ? new tl : F, T = 0; t >= T; T++) { + var I = O(M, R, X, s, T * A + x); + r.push(I), q != F && (I.uv = [q, 1 - T / t]), w && (I.ns = C.subVectors(I, M).normalize().toArray()) + } + return r + }, + y = function (o, g, A, B, i, N, s, y, Q) { + Q = Q || $; + var u = g ? o.top_vs : o.bottom_vs; + if (u) + for (var e = g ? o.top_uv : o.bottom_uv, r = Q / s, _ = 0; s > _; _++) { + var q, U; + g ? (q = _ * r + y, U = (_ + 1) * r + y) : (U = _ * r + y, q = (_ + 1) * r + y), R(u, O(A, B, i, N, q), O(A, B, i, N, U), A), e && e.push(.5 - .5 * k(q), .5 - .5 * n(q), .5 - .5 * k(U), .5 - .5 * n(U), .5, .5) + } + }; + return function (G, a, q, f, e, L, I, h, z) { + var x = a.length; + if (x > 1) { + var H, B, p, j, O, Q, W, m = ab(a), + C = m.T, + t = m.N, + n = m.B; + "flat" === h && y(G, !0, a[0], n[0], t[0], f, e, L, I), "flat" === z && y(G, !1, a[x - 1], n[x - 1], t[x - 1], f, e, L, I); + var D, J, r = [], + X = s(e / 2), + S = "round" === h, + g = "round" === z, + k = a[0], + $ = C[0], + U = n[0], + v = t[0], + K = a[x - 1], + _ = C[x - 1], + E = n[x - 1], + u = t[x - 1]; + if (S) { + for (p = 1; X >= p; p++) t.splice(0, 0, v), n.splice(0, 0, U), C.splice(0, 0, $), J = -p / X * f, a.splice(0, 0, $.clone().multiplyScalar(J).add(k)), r[X - p] = w(f * f - J * J); + x += X + } + if (g) { + for (p = 1; X >= p; p++) t.push(u), n.push(E), C.push(_), J = p / X * f, a.push(_.clone().multiplyScalar(J).add(K)), r[a.length - 1] = w(f * f - J * J); + x += X + } + if (G.uv) { + var V = 0, + i = 0, + N = []; + for (q && (V = q), O = a[0], N[0] = 0, p = 1; x > p; p++) j = a[p], N[p] = O.distanceTo(j), O = j, q || (V += N[p]); + for (D = [], p = 0; x > p; p++) i += N[p], D[p] = V ? i / V : 0 + } + var c = G.ns ? !0 : !1; + for (p = 0; x > p; p++) { + if (j = a[p], Q = n[p], W = t[p], H = o(j, Q, W, r[p] === Z ? f : r[p], e, L, I, D ? D[p] : F, c), B) + for (var M = 0; e > M; M++) { + var T = B[M], + d = B[M + 1] || B[0], + A = H[M], + Y = H[M + 1] || H[0]; + R(G.vs, d, T, A, A, Y, d), G.uv && l(G.uv, d, T, A, A, Y, d), c && P(G.ns, d, T, A, A, Y, d) + } + B = H + } + } + } + }(); + Uh(u, { + getLineLength: function (v) { + return v[v.length - 1].length + }, getLineOffset: function (Y, E) { + return Qd(Y, E) + }, getLineCacheInfo: function (d, o, f, e) { + return we(vh(d, o, f, e)) + } + }); + var Cm = O.graph3d.RenderLite = {}, + oc = new Array(0), + Pb = Cm.Buffer = function (w, R, v, E) { + this.gl = w, this.buffer = w.createBuffer(), this.type = R || w.ARRAY_BUFFER, this.drawType = E || w.STATIC_DRAW, this.data = oc, v && this.upload(v) + }; + Pb.prototype.upload = function (e, R, o) { + o || this.bind(); + var H = this.gl; + e = e || this.data, R = R || 0, this.data.byteLength >= e.byteLength ? H.bufferSubData(this.type, R, e) : H.bufferData(this.type, e, this.drawType), this.data = e + }, Pb.prototype.bind = function () { + var D = this.gl; + D.bindBuffer(this.type, this.buffer) + }, Pb.createVertexBuffer = function (a, N, S) { + return new Pb(a, a.ARRAY_BUFFER, N, S) + }, Pb.createIndexBuffer = function (v, p, B) { + return new Pb(v, v.ELEMENT_ARRAY_BUFFER, p, B) + }, Pb.create = function (S, m, G, R) { + return new Pb(S, m, R) + }, Pb.prototype.destroy = function () { + this.gl.deleteBuffer(this.buffer) + }; + var ue = Cm.Shader = function (K, I, o) { + this.gl = K, this.program = tr(K, I, o), this.attributes = Ne(K, this.program); + var b = fd(K, this.program); + this.uniforms = jo(K, b) + }; + ue.prototype.bind = function () { + this.gl.useProgram(this.program) + }, ue.prototype.destroy = function () { + this.gl + }; + var tr = function (P, B, Y) { + var l = ks(P, P.VERTEX_SHADER, B), + e = ks(P, P.FRAGMENT_SHADER, Y); + P.getShaderParameter(e, P.COMPILE_STATUS) || console.error(P.getError()); + var c = P.createProgram(); + return P.attachShader(c, l), P.attachShader(c, e), P.linkProgram(c), P.getProgramParameter(c, P.LINK_STATUS) || (console.error("Error: Could not initialize shader."), console.error("gl.VALIDATE_STATUS", P.getProgramParameter(c, P.VALIDATE_STATUS)), console.error("gl.getError()", P.getError()), "" !== P.getProgramInfoLog(c) && console.warn("Warning: gl.getProgramInfoLog()", P.getProgramInfoLog(c)), P.deleteProgram(c), c = null), P.deleteShader(l), P.deleteShader(e), c + }, + ks = function (E, C, A) { + var f = E.createShader(C); + return E.shaderSource(f, A), E.compileShader(f), E.getShaderParameter(f, E.COMPILE_STATUS) ? f : (console.log(E.getShaderInfoLog(f)), null) + }, + fd = function (z, Q) { + for (var t = {}, d = z.getProgramParameter(Q, z.ACTIVE_UNIFORMS), V = 0; d > V; V++) { + var C = z.getActiveUniform(Q, V), + r = C.name.replace(/\[.*?\]/, ""), + L = uf(z, C.type); + t[r] = { + type: L, + size: C.size, + location: z.getUniformLocation(Q, r), + value: bq(L, C.size) + } + } + return t + }, + Ne = function (w, e) { + for (var B = {}, k = w.getProgramParameter(e, w.ACTIVE_ATTRIBUTES), D = 0; k > D; D++) { + var m = w.getActiveAttrib(e, D), + K = uf(w, m.type); + B[m.name] = { + type: K, + size: Ai(K), + gl: w, + location: w.getAttribLocation(e, m.name), + pointer: vj + } + } + return B + }, + vj = function (p, v, T, d, t) { + var D = this.gl; + D.enableVertexAttribArray(this.location), p instanceof Cm.Buffer || (p = Cm.Buffer.createVertexBuffer(D, p)), D.bindBuffer(p.type, p.buffer), D.vertexAttribPointer(this.location, this.size, v || D.FLOAT, T || !1, d || 0, t || 0) + }, + Ai = function (V) { + return Rr[V] + }, + Rr = { + "float": 1, + vec2: 2, + vec3: 3, + vec4: 4, + "int": 1, + ivec2: 2, + ivec3: 3, + ivec4: 4, + bool: 1, + bvec2: 2, + bvec3: 3, + bvec4: 4, + mat2: 4, + mat3: 9, + mat4: 16, + sampler2D: 1 + }, + uf = function (R, H) { + if (!Ld) { + var E = o.keys(Pj); + Ld = {}; + for (var m = 0; m < E.length; ++m) { + var W = E[m]; + Ld[R[W]] = Pj[W] + } + } + return Ld[H] + }, + Ld = null, + Pj = { + FLOAT: "float", + FLOAT_VEC2: "vec2", + FLOAT_VEC3: "vec3", + FLOAT_VEC4: "vec4", + INT: "int", + INT_VEC2: "ivec2", + INT_VEC3: "ivec3", + INT_VEC4: "ivec4", + BOOL: "bool", + BOOL_VEC2: "bvec2", + BOOL_VEC3: "bvec3", + BOOL_VEC4: "bvec4", + FLOAT_MAT2: "mat2", + FLOAT_MAT3: "mat3", + FLOAT_MAT4: "mat4", + SAMPLER_2D: "sampler2D" + }, + bq = function (O, r) { + switch (O) { + case "float": + return 0; + case "vec2": + return new Float32Array(2 * r); + case "vec3": + return new Float32Array(3 * r); + case "vec4": + return new Float32Array(4 * r); + case "int": + case "sampler2D": + return 0; + case "ivec2": + return new Int32Array(2 * r); + case "ivec3": + return new Int32Array(3 * r); + case "ivec4": + return new Int32Array(4 * r); + case "bool": + return !1; + case "bvec2": + return so(2 * r); + case "bvec3": + return so(3 * r); + case "bvec4": + return so(4 * r); + case "mat2": + return new Float32Array([1, 0, 0, 1]); + case "mat3": + return new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + case "mat4": + return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]) + } + }, + so = function (T) { + for (var O = new Array(T), y = 0; y < O.length; y++) O[y] = !1; + return O + }, + jo = function (H, C) { + var k = { + data: {} + }; + k.gl = H; + for (var z = o.keys(C), c = 0; c < z.length; c++) { + var e = z[c], + i = e.split("."), + D = i[i.length - 1], + T = mr(i, k), + F = C[e]; + T.data[D] = F, T.gl = H, o.defineProperty(T, D, { + get: id(D), + set: jk(D, F) + }) + } + return k + }, + id = function (n) { + var U = Op.replace("%%", n); + return new Function(U) + }, + jk = function (o, F) { + var C, D = im.replace(/%%/g, o); + return C = 1 === F.size ? Lb[F.type] : Ac[F.type], C && (D += "\nthis.gl." + C + ";"), new Function("value", D) + }, + mr = function (b, n) { + for (var x = n, S = 0; S < b.length - 1; S++) { + var Q = x[b[S]] || { + data: {} + }; + x[b[S]] = Q, x = Q + } + return x + }, + Op = ["return this.data.%%.value;"].join("\n"), + im = ["this.data.%%.value = value;", "var location = this.data.%%.location;"].join("\n"), + Lb = { + "float": "uniform1f(location, value)", + vec2: "uniform2f(location, value[0], value[1])", + vec3: "uniform3f(location, value[0], value[1], value[2])", + vec4: "uniform4f(location, value[0], value[1], value[2], value[3])", + "int": "uniform1i(location, value)", + ivec2: "uniform2i(location, value[0], value[1])", + ivec3: "uniform3i(location, value[0], value[1], value[2])", + ivec4: "uniform4i(location, value[0], value[1], value[2], value[3])", + bool: "uniform1i(location, value)", + bvec2: "uniform2i(location, value[0], value[1])", + bvec3: "uniform3i(location, value[0], value[1], value[2])", + bvec4: "uniform4i(location, value[0], value[1], value[2], value[3])", + mat2: "uniformMatrix2fv(location, false, value)", + mat3: "uniformMatrix3fv(location, false, value)", + mat4: "uniformMatrix4fv(location, false, value)", + sampler2D: "uniform1i(location, value)" + }, + Ac = { + "float": "uniform1fv(location, value)", + vec2: "uniform2fv(location, value)", + vec3: "uniform3fv(location, value)", + vec4: "uniform4fv(location, value)", + "int": "uniform1iv(location, value)", + ivec2: "uniform2iv(location, value)", + ivec3: "uniform3iv(location, value)", + ivec4: "uniform4iv(location, value)", + bool: "uniform1iv(location, value)", + bvec2: "uniform2iv(location, value)", + bvec3: "uniform3iv(location, value)", + bvec4: "uniform4iv(location, value)", + sampler2D: "uniform1iv(location, value)" + }, + _r = function (g) { + function J(I) { + if ("string" != typeof I) return 0 | I; + switch (I) { + case "low": + return 512; + case "medium": + return 1024; + case "ultra": + return 4096; + default: + return 2048 + } + } + var N = this; + N.enable = !1; + var j, o, P = u.graph3dViewShadowType, + t = u.graph3dViewShadowIntensity, + I = u.graph3dViewShadowBias, + q = u.graph3dViewShadowQuality, + e = u.graph3dViewShadowRadius, + T = u.graph3dViewShadowDegreeX, + B = u.graph3dViewShadowDegreeZ, + L = 1, + U = J(q), + r = !1, + H = new O.Math.Matrix4, + X = new O.Math.Matrix4, + C = N.pvMatrix = new O.Math.Matrix4; + N.render = function () { + if (!g._picking && N.enable) { + var o = g.getGL(); + if (o) { + r && N.setupShadowCamera(), g._glCapabilities && (U = Math.min(U, g._glCapabilities.maxTextureSize)), N.map ? j.setSize(U, U) : j = N.map = new fq(g, g.getGL(), 0, 0, { + samples: 1, + minFilter: Ah.NEAREST, + magFilter: Ah.NEAREST, + width: U, + height: U + }), o._shadowShader || (o._shadowShader = new Cm.Shader(o, _r.shaderSrc.vs, _r.shaderSrc.fs)); + var V = g._frameState, + O = V.renderState.glState; + O.blend.enabled = !1, O.depth.enabled = !0, O.depth.mask = !0; + var l = O.color.clear.slice(0); + qe(o, [1, 1, 1, 1]), V.renderState.useProgram(o._shadowShader.program), R(), qe(o, l) + } + } + }, N.getShadow = function () { + var Z = { + degreeX: T, + degreeZ: B, + intensity: t, + quality: q, + type: P, + radius: e, + bias: I + }; + return 1 !== L && (Z.boundExtend = L), Z + }, N.setShadow = function (l, v) { + l = !!l; + var E = N.enable !== l; + N.enable = l, "object" == typeof v && (v.intensity !== Z && (t = v.intensity), v.bias !== Z && (I = v.bias), v.radius !== Z && (e = v.radius), v.degreeX !== Z && (T = v.degreeX), v.degreeZ !== Z && (B = v.degreeZ), v.quality !== Z && (q = v.quality), v.type !== Z && P !== v.type && (P = v.type, E = !0), U = J(q), v.boundExtend !== Z && (L = v.boundExtend)), l && N.setupShadowCamera(), E && Vo(g), g.iv() + }, N.refresh = function () { + this.enable && (this.setupShadowCamera(), g.iv()) + }, N.tryUpdateBounding = function (i) { + var J = this.boundingSphere; + if (J) { + var h = (new br).fromArray(sj(i, g.getMat(i))), + l = i.getAnchor3d(), + K = new tl; + J.containsPoint(K.set(0 - l.x, 0 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(0 - l.x, 0 - l.y, 1 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(0 - l.x, 1 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(0 - l.x, 1 - l.y, 1 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 0 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 0 - l.y, 1 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 1 - l.y, 0 - l.z).applyMatrix4(h)) && J.containsPoint(K.set(1 - l.x, 1 - l.y, 1 - l.z).applyMatrix4(h)) || N.setupShadowCamera() + } + }, N.createShadow = function (K) { + K || (K = g._frameState.renderState.directUniforms()), K.shadowMatrix = C.toArray(), K.shadowMap = j.texture, K.shadowSize = [j.width, j.height], K.shadowIntensity = t, K.shadowBias = I, K.shadowRadius = e + }, N.genShaderDefine = function () { + var y = "#define USE_SHADOWMAP\n"; + return "hard" === P ? y += "#define SHADOWMAP_TYPE_PCF\n" : "soft" === P && (y += "#define SHADOWMAP_TYPE_PCF_SOFT\n"), y + }; + var D; + N.setupShadowCamera = function () { + o || (o = N.boundingSphere = new O.Math.Sphere), r = !1; + var $, K, F = g.getBoundingBox(g.dm().toDatas(function (V) { + return V.s("shadow.cast") && g.isVisible(V) + })); + F ? ($ = new tl(F.min), K = new tl(F.max)) : ($ = new tl(-256, -256, -256), K = new tl(256, 256, 256), r = !0), o.set($.clone().add(K).multiplyScalar(.5), .5 * $.distanceTo(K) * L); + var y, v = o.radius, + p = g.getBoundingBox(g.dm().toDatas(function (q) { + return (q.s("shadow.cast") || q.s("shadow.receive")) && g.isVisible(q) + })); + if (p) { + $.copy(p.min), K.copy(p.max); + var U = .5 * $.distanceTo(K); + y = U + Math.min(U, v + o.center.distanceTo($.add(K).multiplyScalar(.5))) + } else y = 2 * v; + D = lk(kn(), -v, v, -v, v, y / 1e3, y), C.set(.5, 0, 0, .5, 0, .5, 0, .5, 0, 0, .5, .5, 0, 0, 0, 1), C.multiply(H.fromArray(D)); + var b = Math.tan(-T * Math.PI / 180), + l = Math.tan(-B * Math.PI / 180), + Y = v / Math.sqrt(b * b + l * l + 1), + s = new tl(Y * b, Y, Y * l); + H.lookAt(s, new tl(0, 0, 0), new tl(0, 1, 0)).setPosition(s.add(o.center)), H.getInverse(H), C.multiply(H) + }; + var R = function () { + var P = g.getGL(), + f = U, + M = U; + j.setSize(P, f, M), j.bind(P), P.clear(Ah.COLOR_BUFFER_BIT | Ah.DEPTH_BUFFER_BIT); + var l = g._frameState, + w = l.renderState, + I = w.directUniforms(), + C = w.directAttribs(), + J = w.directState(); + I.projectionMatrix = D; + var Y = g._viewport; + g.setViewport(P, 0, 0, f, M); + var X, i, c, q; + for (X = 0, i = kl.length; i > X; X++) c = kl[X], Sc[c].ignore || (q = g._40Q.get(c), q && (N.renderItems(P, I, C, q.opaque, J), N.renderItems(P, I, C, q.transparent, J))); + j.unbind(P), g.setViewport(P, Y[0], Y[1], Y[2], Y[3]) + }; + N._renderDirect = function (P, z, d, t) { + d && d.length && (z.position = Sl(P, g._buffer.vs, d, F), t ? (ym(P, g._buffer.is, t), os(P, 0, t.length, null, t instanceof Uint32Array ? P.UNSIGNED_INT : null)) : ie(P, 0, d.length / 3)) + }, N.renderShapeModel = function (k, $, g, d) { + var Q, u, j; + if (ip(g)) + for (u = 0, j = g.length; j > u; u++) Q = g[u], Q && N.renderShapeModel(k, $, Q, d); + else dk(g) ? N.renderShapeModel(k, $, bf(d, g), d) : xl(g) && (g.shape3d ? N.renderShapeModel(k, $, g.shape3d, d) : N.renderShapeModelImpl(k, $, g)) + }, N.renderShapeModelImpl = function (w, y, p) { + ko(p), N._renderDirect(w, y, p.vs, p.is), N._renderDirect(w, y, p.top_vs, p.top_is), N._renderDirect(w, y, p.bottom_vs, p.bottom_is), N._renderDirect(w, y, p.from_vs, p.from_is), N._renderDirect(w, y, p.to_vs, p.to_is) + }, N.renderItems = function (Q, F, r, I, $) { + var L, v, B, b, l, K = I.length; + for (L = 0; K > L; L++) v = I[L], b = v.ui, B = v.data, !Kc(B) && B.s("shadow.cast") && g.isVisible(B) && (l = b.shapeModel || bf(b), l || (l = B instanceof O.Node && !(B instanceof O.Shape) ? { + vs: Ef, + is: Lq + } : [b.left, b.front, b.right, b.back, b.top, b.bottom]), F.modelViewMatrix = (b.mat ? X.fromArray(b.mat) : X.identity()).premultiply(H).toArray(), $.cullFace.enabled = !!B.s("shape3d.reverse.cull"), N.renderShapeModel(Q, r, l, b)) + } + }; + _r.shaderSrc = { + vs: ["uniform mat4 modelViewMatrix;", "uniform mat4 projectionMatrix;", "attribute vec3 position;", "void main() {", "vec3 transformed = vec3( position );", "vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );", "gl_Position = projectionMatrix * mvPosition;", "}"].join("\n"), + fs: ["precision highp float;", "const float PackUpscale = 256. / 255.;", "const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );", "const float ShiftRight8 = 1. / 256.;", "vec4 packDepthToRGBA( const in float v ) {", "vec4 r = vec4( fract( v * PackFactors ), v );", "r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;", "}", "void main() {", "gl_FragColor = packDepthToRGBA( gl_FragCoord.z );", "}"].join("\n") + }, _r.PARAMS = ["quality", "intensity", "bias", "radius", "type", "degree.x", "degree.z"]; + var lf = O.Light = function () { + fi(lf, this), this.s(ep, z[ep]), this.s(Lm, "sphere"), this.s("shape3d.reverse.cull", !0), this.s3(20, 20, 20) + }; + ki("Light", Dp, { + _image: "light_icon", + _icon: "light_icon", + onStyleChanged: function (P, w, i) { + lf.superClass.onStyleChanged.apply(this, arguments), P === ep && this.s("shape3d.color", i) + } + }); + var Bl = Eh.FrameState = function (M, O) { + this.renderState = ts.for(O), this.picking = !1, this.envmapReflectivity = .5, this.cameraPosition = Z, this.projectMatrix = Z, this.viewMatrix = Z, this.view = M, this.defaultProgram = Z, this.pickColorMap = Z, this._pvStack = [], this._renderStateStack = [] + }; + Bl.prototype.savePV = function () { + var e = this.view; + this._pvStack.push([Ql(this.projectMatrix), Ql(this.viewMatrix), e._18Q, Ql(e._7O)]) + }, Bl.prototype.restorePV = function () { + var B = this._pvStack.pop(); + if (B) { + var T = this.view; + this.projectMatrix = T._projectMatrix = B[0], this.viewMatrix = T._viewMatrix = B[1], T._18Q = B[2], T._7O = B[3] + } + }, Bl.prototype.setPV = function (s, z) { + var I = this.view, + M = !1; + if (s && (this.projectMatrix = I._projectMatrix = s, M = !0), z && (this.viewMatrix = I._viewMatrix = z, I._7O = Ql(z), M = !0), M) { + var T = I.getWidth(), + n = I.getHeight(), + l = Ql(this.projectMatrix); + I._18Q = xo(l, l, z), I._18Q._wh = T / n + } + }, Bl.prototype.syncEnv = function (x) { + var G = this, + l = G.view; + G.envmapReflectivity = l._envmapReflectivity || .5, G.cameraPosition = l.getEye(), G.projectMatrix = l._projectMatrix, G.viewMatrix = l._viewMatrix, G.pickColorMap = x, G.picking = l.getGL()._picking + }, Bl.prototype.setGLState = function () { + var D = [0, 0, 0, 0], + $ = [!0, !0, !0, !0], + q = [-1, 1], + W = [Ah.FUNC_ADD, Ah.FUNC_ADD], + J = [Ah.SRC_ALPHA, Ah.ONE_MINUS_SRC_ALPHA, Ah.ONE, Ah.ONE_MINUS_SRC_ALPHA]; + return function (T, m) { + var j = this, + E = j.renderState.gl, + X = j.renderState.glState; + X.dither = !1, m ? X.color.mask = $ : X.color.reset(), X.pixelStore.reset(), X.blend.color = D, X.blend.equation = W, X.blend.func = J, X.cullFace.enabled = !1, X.scissor.enabled = !1, X.depth.enabled = !0, X.depth.clear = 1, X.depth.func = E.LEQUAL, X.depth.range = q, X.stencil.enabled = !1, X.polygonOffset.enabled = !1, T ? (X.depth.mask = !1, X.blend.enabled = !0) : (X.depth.mask = !0, X.blend.enabled = !1) + } + }(), Bl.prototype.setUniforms = function (D) { + var o = this, + C = o.view, + r = o.renderState, + c = r.gl, + P = r.uniforms; + P.uBrightness = 1, P.uOpacity = 1, P.uPartOpacity = 1, P.uPick = o.picking, P.uTexture = !1, P.uBlendTexture = !1, P.uAlphaTest = z.alphaTest, P.uTransparent = !!D, P.uFix = !1, P.uBatchColor = !1, P.uBatchBlend = !1, P.uBatchBrightness = !1, P.uReflectivity = o.envmapReflectivity || .5, P.uCameraPosition = o.cameraPosition, P.uPMatrix = o.projectMatrix, P.uViewMatrix = o.viewMatrix, C.bindEnvMap(c), o.picking || (nc(C, c, Z), C._fogDisabled || (P.uFogColor = C._fogColor, P.uFogDensity = C._fogDensity, P.uFogNear = C._fogNear, P.uFogFar = C._fogFar)) + }, Bl.prototype.drawLayer = function (O) { + return this.view.renderLayers(O, !0) + }, Bl.prototype.drawData = function (W, r, b) { + var m = this.view; + if (m.isVisible(W)) { + var Z = this.renderState, + c = Z.uniforms, + J = m.getData3dUI(W); + if (J) { + var l = Z.gl, + d = l._picking, + s = m._picking, + i = W._pickId; + b && (W._pickId = b), c.uPick = l._picking = m._picking = !!b, c.uTransparent = !!r, J._42(Z.gl, Z.program, r ? Q : j), c.uPick = l._picking = d, m._picking = s, W._pickId = i + } + } + }; + var Hl = Eh.Graph3dView = function (Z, I) { + var r = this; + r._webGLVersion = 1, r._attributes = I || u.graph3dViewAttributes, r._25I = {}, r._view = ve(1, r); + var i = r._canvas = uo(r._view); + K(i, "webglcontextlost", function (s) { + s.preventDefault(), Vo(r), r._26I && r._doBufferGC(r._26I, !0), r._26I = F, r._1o.onContextLost(), r._35O = !0 + }), K(i, "webglcontextrestored", function () { + r._35O = !1, r.iv() + }), r._40Q = new Ud, r._43Q = {}, r._44Q = -1, r._batchIndexMap = {}, r._batchModelMap = {}, r._wireframeIndexMap = {}, r._wireframeModelMap = {}, r._wireframeIndexMapSwap = {}, r._wireframeModelMapSwap = {}, r._polylineIndexMap = {}, r._polylineIndexMap = {}, r._polylineIndexMapSwap = {}, r._polylineIndexMapSwap = {}, r._8O = [], r._7O = kn(), r._6O = kn(), r._1o = new qo(r), r._30O = new Rk(r), r._31O = new Le(r), r._32O = new ap(r), r._raycaster = new Vf(r), r._highlightHelper = new ui(r), r._postProcessing = new Hs(r), r._41Q = [], r._42Q = 0, r.vr = new Es(r), r.shadowMap = new _r(r), r._33Q = !0, r._eye = Pm(u.graph3dViewEye), r._center = Pm(u.graph3dViewCenter), r._up = Pm(u.graph3dViewUp), r._lightChanged = !1, r._59O = [], r._spots = [], r._dirs = [], r._frameId = 0, r._batchInfoMap = {}, r.overlappingBox = new Rn(r), r.dm(Z ? Z : new jn), r._coreInteractor = new mq(this), r.setInteractors([new ps(r)]), r._initView() + }, + Jo = { + fogDisabled: 1, + fogMode: 1, + dashDisabled: 1, + batchColorDisabled: 1, + batchBlendDisabled: 1, + batchBrightnessDisabled: 1, + ortho: 1 + }, + qd = 0; + Dn("Graph3dView", o, { + ms_v: 1, + ms_tip: 1, + ms_gv: 1, + ms_dm: 1, + ms_lp: 1, + ms_fire: 1, + ms_sm: 1, + _51o: 1, + ms_shadow: 1, + ms_ac: ["devicePixelRatio", "boundaries", "moveStep", "rotateStep", "editHelperDisabled", "blockSelectable", "sizeEditableFunc", "rotationEditableFunc", "editableFunc", "rotatable", "zoomable", "pannable", "walkable", "resettable", "mouseRoamable", "zoomToCenter", Fi, Pi, "firstPersonMode", dj, "movableFunc", "gridVisible", "gridSize", "gridGap", "gridColor", "originAxisVisible", "centerAxisVisible", "axisXColor", "axisYColor", "axisZColor", "editSizeColor", "rectSelectable", "rectSelectBackground", "headlightRange", "headlightColor", "headlightIntensity", "headlightAmbientIntensity", "headlightDisabled", "ortho", "orthoWidth", "fovy", "near", "far", to, sc, "up", "aspect", "fogDisabled", "fogMode", "fogDensity", "fogColor", "fogNear", "fogFar", "pickerResolution", "dashDisabled", "batchColorDisabled", "batchBlendDisabled", "batchBrightnessDisabled", "hoverDelay", "batchInfoMap", "rotateMinPhi", "rotateMaxPhi"], + _editable: !1, + _editHelperDisabled: u.graph3dViewEditHelperDisabled, + _blockSelectable: u.graph3dViewBlockSelectable, + _devicePixelRatio: Z, + _boundaries: Z, + _moveStep: u.graph3dViewMoveStep, + _rotateStep: u.graph3dViewRotateStep, + _rotateMinPhi: u.graph3dViewMinPhi === Z ? u.graph3dViewRotateMinPhi : u.graph3dViewMinPhi, + _rotateMaxPhi: u.graph3dViewMaxPhi === Z ? u.graph3dViewRotateMaxPhi : u.graph3dViewMaxPhi, + _pannable: u.graph3dViewPannable, + _rotatable: u.graph3dViewRotatable, + _walkable: u.graph3dViewWalkable, + _resettable: u.graph3dViewResettable, + _zoomable: u.graph3dViewZoomable, + _zoomToCenter: !0, + _firstPersonMode: u.graph3dViewFirstPersonMode, + _mouseRoamable: u.graph3dViewMouseRoamable, + _gridVisible: u.graph3dViewGridVisible, + _gridSize: u.graph3dViewGridSize, + _gridGap: u.graph3dViewGridGap, + _gridColor: u.graph3dViewGridColor, + _originAxisVisible: u.graph3dViewOriginAxisVisible, + _centerAxisVisible: u.graph3dViewCenterAxisVisible, + _axisXColor: u.graph3dViewAxisXColor, + _axisYColor: u.graph3dViewAxisYColor, + _axisZColor: u.graph3dViewAxisZColor, + _ortho: u.graph3dViewOrtho, + _orthoWidth: u.graph3dViewOrthoWidth, + _fovy: u.graph3dViewFovy, + _near: u.graph3dViewNear, + _far: u.graph3dViewFar, + _headlightColor: u.graph3dViewHeadlightColor, + _headlightIntensity: u.graph3dViewHeadlightIntensity, + _headlightRange: u.graph3dViewHeadlightRange, + _headlightAmbientIntensity: u.graph3dViewHeadlightAmbientIntensity, + _headlightDisabled: u.graph3dViewHeadlightDisabled, + _rectSelectable: u.graph3dViewRectSelectable, + _rectSelectBackground: u.graph3dViewRectSelectBackground, + _editSizeColor: u.graph3dViewEditSizeColor, + _autoMakeVisible: be, + _fogDisabled: u.graph3dViewFogDisabled, + _fogMode: u.graph3dViewFogMode, + _fogDensity: u.graph3dViewFogDensity, + _fogColor: u.graph3dViewFogColor, + _fogNear: u.graph3dViewFogNear, + _fogFar: u.graph3dViewFogFar, + _pickerResolution: u.graph3dViewPickerResolution, + _dashDisabled: u.graph3dViewDashDisabled, + _batchColorDisabled: u.graph3dViewBatchColorDisabled, + _batchBlendDisabled: u.graph3dViewBatchBlendDisabled, + _batchBrightnessDisabled: u.graph3dViewBatchBrightnessDisabled, + addCamera: function (d) { + var j = this, + P = o.freeze({ + id: j._42Q++, + priority: d.priority || 0, + ignoreInPick: !!d.ignoreInPick, + render: d.render + }); + d.switch3DStatus && (j._43Q[P.id] = !0), j._41Q.push(P), j._41Q.sort(function (n, l) { + return n.priority !== l.priority ? n.priority - l.priority : n.id - l.id + }) + }, setEye: function (H, k, P) { + 1 === arguments.length && (k = H[1], P = H[2], H = H[0]); + var C = this._eye; + C[0] = H, C[1] = k, C[2] = P, this.fp(to, F, C) + }, setCenter: function (E, i, X) { + 1 === arguments.length && (i = E[1], X = E[2], E = E[0]); + var p = this._center; + p[0] = E, p[1] = i, p[2] = X, this.fp(sc, F, p) + }, setUp: function (_, i, c) { + 1 === arguments.length && (i = _[1], c = _[2], _ = _[0]); + var g = this._up; + g[0] = _, g[1] = i, g[2] = c, this.fp("up", F, g) + }, getDevicePixelRatio: function () { + return this._picking ? this._1o._resolution : this._devicePixelRatio || ij + }, isTransparentMask: function (S) { + return S.s("transparent.mask") + }, getCoreInteractor: function () { + return this._coreInteractor + }, getHighlightHelper: function () { + return this._highlightHelper + }, getRaycaster: function () { + return this._raycaster + }, getAspect: function () { + var N = this, + o = N._aspect; + return o ? o : (o = N.getWidth() / N.getHeight(), o || 1.2) + }, getCanvas: function () { + return this._canvas + }, setDataModel: function (L) { + var P = this, + H = P._dataModel, + $ = P._selectionModel; + H !== L && (H && (H.ump(P.handleDataModelPropertyChange, P), H.umm(P.handleDataModelChange, P), H.umd(P.handleDataPropertyChange, P), $ || H.sm().ums(P.handleSelectionChange, P)), P._dataModel = L, L.mp(P.handleDataModelPropertyChange, P), L.mm(P.handleDataModelChange, P), L.md(P.handleDataPropertyChange, P), $ ? $._21I(L) : L.sm().ms(P.handleSelectionChange, P), P._postProcessing.handleDataModleChange(H, L), P.invalidateAll(!0), P.invalidateLight(), P.fp(uk, H, L), P._canvas.style.background = L.getBackground() || "") + }, handleDataModelPropertyChange: function (G) { + if ("background" === G.property) { + var A = this._canvas.style.background, + k = G.newValue || ""; + this._canvas.style.background = k, this.fp("canvasBackground", A, k) + } else "envmap" === G.property ? this.iv() : "cubicEnvmap" === G.property && (this._lastEnvMap = Z, this.iv()) + }, handleDataPropertyChange: function (G) { + var O = G.data; + this.invalidateData(O), Kc(O) && "s:light.type" === G.property ? this.invalidateLight() : "s:shadow.cast" === G.property ? this.shadowMap.tryUpdateBounding(O) : ("s:alwaysOnTop" === G.property || "s:shape3d.alwaysOnTop" === G.property) && (G.newValue ? O.setRenderLayer("top") : O.setRenderLayer(Z)) + }, invalidateLight: function () { + this._lightChanged || (this._lightChanged = !0, this.iv()) + }, onPropertyChanged: function (v) { + var j = this, + h = v.property; + j.iv(), j._18Q = F, "eye" === h ? j._33Q = !0 : "devicePixelRatio" === h ? j._42(F, j.getDevicePixelRatio()) : Jo[h] && Vo(j) + }, _5O: function (C) { + var L = C._22Q(); + return L ? new L(this, C) : F + }, getData3dUI: function (A) { + var g = this._25I[A._id]; + return g === Z && (g = this._5O(A), this._25I[A._id] = g), g + }, invalidateAll: function (W) { + var r = this; + if (W) { + for (var f in r._25I) { + var z = r._25I[f]; + z && z.dispose() + } + r._25I = {}, r.iv(), dn(r) + } else dn(r), r.dm().each(function (L) { + r.invalidateData(L) + }) + }, invalidateSelection: function () { + var R = this; + R.sm().each(function (j) { + R.invalidateData(j) + }) + }, invalidateData: function (d) { + var L = this, + m = L.getData3dUI(d); + m && (m.iv(), L.iv()), dn(L, d) + }, getShape3dText: function (x) { + return x.getStyle("shape3d.text") || this.getLabel(x) + }, invalidateBatch: function (j) { + var z = this, + r = z._40Q; + r.each(function (N) { + z._invalidateBatch(N.batchModelMap, N.batchIndexMap, N.polylineModelMap, N.polylineIndexMap, N.wireframeModelMap, N.wireframeIndexMap, j), N.markBatchInvalid() + }) + }, _invalidateBatch: function (h, L, s, i, U, P, n) { + var o = this, + d = h[n], + R = [], + u = {}; + if (d) { + d.ds.forEach(function (A) { + var B = o.getData3dUI(A); + B && B.iv(), delete L[A._id], R.push(A._id) + }), delete h[n]; + for (var e, p, J, M, x, j, l, I, F, A = [U, s], m = [P, i], T = 0; T < A.length; T++) { + var H = A[T], + O = m[T]; + for (u = {}, I = 0; I < R.length; I++) { + var t = O[R[I]]; + if (t) { + delete O[R[I]], F = t.batch, e = H[F]; + var V = t.begin, + z = t.size, + _ = 3 * V, + S = 3 * z, + E = 4 * V, + W = 4 * z; + for (p = e.ds, J = e.vs, M = e.cs, x = e.ps, j = e.ls, l = t.index, e.invalidate = !0, p[l] = Z, l = _; _ + S > l; l++) J[l] = Z; + for (l = E; E + W > l; l++) M[l] = Z; + for (l = E; E + W > l; l++) x[l] = Z; + if (j) + for (l = _; _ + S > l; l++) j[l] = Z; + u[F] = !0 + } + } + for (F in u) { + e = H[F], p = e.ds, J = e.vs, M = e.cs, x = e.ps, j = e.ls; + var K = []; + for (l = 0; l < p.length; l++) p[l] !== Z && K.push(p[l]); + if (0 === K.length) delete H[F]; + else { + for (e.ds = K, K = [], l = 0; l < J.length; l++) J[l] !== Z && K.push(J[l]); + for (e.vs = K, K = [], l = 0; l < M.length; l++) M[l] !== Z && K.push(M[l]); + for (e.cs = K, K = [], l = 0; l < x.length; l++) x[l] !== Z && K.push(x[l]); + if (e.ps = K, j) { + for (K = [], l = 0; l < j.length; l++) j[l] !== Z && K.push(j[l]); + e.ls = K + } + } + } + } + o.iv() + } + }, handleDataModelChange: function (y) { + var B = this, + J = y.kind, + n = y.data; + if ("add" === J) B.invalidateData(n), Bk(n) && n.getEdgeGroup() && n.getEdgeGroup().eachSiblingEdge(B.invalidateData, B), Kc(n) && B.invalidateLight(); + else if (J === Ce) { + var r = n._id, + L = B._25I[r]; + L && (L.dispose(), delete B._25I[r], B.iv()), n === B._currentSubGraph && B.setCurrentSubGraph(F), dn(B, n), Kc(n) && B.invalidateLight() + } else J === Tg && (B.invalidateAll(!0), B.setCurrentSubGraph(F), dn(B), B.invalidateLight()) + }, toCanvas: function (o, n, C) { + var p = this, + k = p.getGL(); + if (p.validate(), o) { + var r = k.getParameter(k.COLOR_CLEAR_VALUE); + qe(k, o) + } + p._42(F, 1); + var j = p.getWidth() || 1, + I = p.getHeight() || 1, + G = new Uint8Array(4 * j * I), + l = uo(), + Z = l.getContext("2d"); + k.readPixels(0, 0, j, I, k.RGBA, k.UNSIGNED_BYTE, G), Bn(l, j, I, 1); + for (var t = Z.getImageData(0, 0, j, I), e = t.data, B = 0; B < e.length; B += 4) { + var L = B / 4, + i = T(L / j), + J = L - i * j; + L = 4 * ((I - 1 - i) * j + J), e[L] = G[B], e[L + 1] = G[B + 1], e[L + 2] = G[B + 2], e[L + 3] = G[B + 3] + } + if (Z.putImageData(t, 0, 0), o && qe(k, r), p._42(F, p.getDevicePixelRatio()), n && C) { + var d = uo(), + X = d.getContext("2d"); + return Bn(d, n, C, 1), u.drawImage(X, l, 0, 0, n, C), d + } + return l + }, toDataURL: function (X, _) { + var c = this, + v = c.getGL(); + if (c.validate(), X) { + var l = v.getParameter(v.COLOR_CLEAR_VALUE); + qe(v, X) + } + c._42(F, 1); + var z = c._canvas.toDataURL(_ || "image/png", 1); + return X && qe(v, l), c._42(F, c.getDevicePixelRatio()), z + }, getGL: function () { + var D = this._26I; + if (D) return this.acquireProgram(), D; + if (!this._35O) { + var H = this, + A = H._canvas, + O = H._attributes; + if (!O || O.requestWebGL2 !== !1) try { + D = A.getContext("webgl2", O) || A.getContext("experimental-webgl2", O), D && (H._webGLVersion = 2, H._26I = D) + } catch (u) { } + if (!D) try { + D = A.getContext("webgl", O) || A.getContext("experimental-webgl", O) + } catch (u) { + throw new Error("WebGL not supported") + } + if (!D) throw new Error("WebGL not supported"); + H._26I = D; + var q = H._frameState = new Bl(this, D); + H._glExtensions = new E(D), H._glCapabilities = new B(D, H._glExtensions), H._2O = {}, D._emptyCubeTexture = Gp(D), D._compiledShader = {}, D._emptyTexture = ze(D), D._emptyBlendTexture = ze(D), D._bufPool = {}, D._id = ++qd, q.setGLState(), H._buffer = { + vs: el(D), + ns: el(D), + is: el(D), + uv: el(D), + batchColor: el(D), + batchBlend: el(D), + batchBrightness: el(D), + lineDistance: el(D) + }, H._1O = rg(D); + var Y = H._cube = { + vs: el(D), + ns: el(D), + is: el(D), + uv: el(D) + }; + return bm(D, Y.vs, Ef), bm(D, Y.ns, mn), bm(D, Y.uv, mi), eo(D, Y.is, Lq), H.acquireProgram(), D._renderInfo = { + calls: 0, + vertices: 0, + faces: 0, + lines: 0, + points: 0, + frame: 0, + cacheTimeCost: 0 + }, D + } + }, getEnvmap: function () { + return this._glCapabilities && this._glCapabilities.maxVertexTextures < u.graph3dEnvmapCapabilityRequire ? null : this.dm().getEnvmap() + }, acquireProgram: function () { + var D = this, + d = D._26I; + if (d) { + var s = u.getImage(D.getEnvmap()), + G = s && s.tagName ? !0 : !1, + m = D._prg && D._prg.envMapFlag ? !0 : !1; + if (!D._prg || G !== m) { + var _ = D._prg = d.createProgram(); + if (!_) return F; + _.envMapFlag = G; + var e = D._dirs.length, + z = D._spots.length, + l = D._59O.length, + S = ["uPMatrix", "uMVMatrix", "uMMatrix", "uReflectivity", "uViewMatrix", "uUseEnvMap", "uEnvMap", "uCameraPosition", "uNMatrix", "uViewMatrix", "aNormal", "aUv", "uOffsetScale", "uDiffuse", "uBlend", "uBlendColor", "uBrightness", "uPartOpacity", "uAlphaTest", "uTransparent", "uClipDirection", "uClipPercent", "uTexture", "uBlendTexture", "uSampler", "uBlendSampler", "uDiscardSelectable", "uFix", "uPick", "uReverseFlip", "uFixPickReverseColor", "uBatchBrightness", "aBatchBrightness", "uBatchColor", "aBatchColor", "uBatchBlend", "aBatchBlend", "uDash", "aLineDistance", "uDashDistance", "uDashGapDistance", "uLight", "uHeadlightRange", "uHeadlightAmbientIntensity", "uHeadlightColor", "uFogColor", "uFogDensity", "uFogNear", "uFogFar"]; + e && S.push("uDirColor", "uDirDirection"), z && S.push("uSpotColor", "uSpotRange", "uSpotAngle", "uSpotExponent", "uSpotPosition", "uSpotDirection"), l && S.push("uPointColor", "uPointRange", "uPointPosition"), dp || (Ae = fo(Ae.substring(0, Ae.indexOf("^#"))), Sp = fo(Sp), dp = !0); + var c = ["#define MAX_DIR " + e, "#define MAX_SPOT " + z, "#define MAX_POINT " + l, D._fogDisabled ? "" : "#define FOG", "exp2" === D.getFogMode() ? "#define FOG_EXP2" : "", D._dashDisabled ? "" : "#define DASH", G ? "#define USE_ENVMAP" : "", D.isOrtho() ? "#define ORTHOGRAPHIC" : "", D._batchColorDisabled ? "" : "#define BATCHCOLOR", D._batchBlendDisabled ? "" : "#define BATCHBLEND", D._batchBrightnessDisabled ? "" : "#define BATCHBRIGHTNESS", D.shadowMap.enable ? D.shadowMap.genShaderDefine() : "", ""].join("\n"), + O = Pl(d, _, d.VERTEX_SHADER, Ae.replace("PREFIX", c)); + d.getShaderParameter(O, d.COMPILE_STATUS) || console.error("compile vs shader faild, error info : ", d.getShaderInfoLog(O)); + var o = Pl(d, _, d.FRAGMENT_SHADER, Sp.replace("PREFIX", c)); + d.getShaderParameter(o, d.COMPILE_STATUS) || console.error("compile fs shader faild, error info : ", d.getShaderInfoLog(o)), Uq ? S.push("aPosition") : (_.aPosition = 0, d.bindAttribLocation(_, 0, "aPosition")), d.linkProgram(_), S.forEach(function (U) { + _[U] = /^u/.test(U) ? d.getUniformLocation(_, U) : d.getAttribLocation(_, U) + }); + var A = this._frameState; + A.renderState.program = A.defaultProgram = _, d.deleteShader(O), d.deleteShader(o) + } + } + }, getBrightness: function (p) { + var W = p.s("brightness"), + P = this.isSelected(p) ? p.s("select.brightness") : F; + return W == F ? P : P == F ? W : W * P + }, setHighlightMode: function (F) { + var J; + J = "selection" === F || "selected" === F ? ui.Mode.Selection : "mouseover" === F || "hover" === F ? ui.Mode.MouseOver : "style" === F ? ui.Mode.Style : ui.Mode.Disable; + var l = this._highlightHelper.mode; + this._highlightHelper.mode = J, this.firePropertyChange("highlightMode", l, J) + }, getHighlightMode: function () { + var i = this._highlightHelper.mode; + return i === ui.Mode.Selection ? "selected" : i === ui.Mode.MouseOver ? "hover" : i === ui.Mode.Style ? "style" : "disabled" + }, getDataHighlightMode: function (N) { + return N.s("highlight.mode") + }, getHighlightColor: function () { + return this._highlightHelper.color || z["highlight.color"] + }, setHighlightColor: function (x) { + var f = this._highlightHelper.color; + this._highlightHelper.color = x, this.firePropertyChange("highlightColor", f, x) + }, getHighlightWidth: function () { + return this._highlightHelper.width || z["highlight.width"] + }, setHighlightWidth: function (c) { + var E = this._highlightHelper.width; + this._highlightHelper.width = c, this.firePropertyChange("highlightWidth", E, c) + }, bindEnvMap: function (G) { + var V = this, + x = ts.for(G), + v = x.directUniforms(), + D = V.getEnvmap(), + S = u.getImage(D); + if (S && S.tagName) { + if (D !== V._lastEnvMap) { + var K = {}; + if (V.dm().isCubicEnvmap()) { + var k = xc(S), + W = oo(S); + if (0 === k || 0 === W) return; + var U = k / 4, + M = W / 3, + X = { + top: { + x: U, + y: 0 + }, + left: { + x: 0, + y: M + }, + front: { + x: U, + y: M + }, + right: { + x: 2 * U, + y: M + }, + back: { + x: 3 * U, + y: M + }, + bottom: { + x: U, + y: 2 * M + } + }; + ["top", "left", "front", "right", "back", "bottom"].forEach(function (E) { + var h = X[E], + W = K[E] = uo(); + Bn(W, U, M, 1); + var o = Wd(W); + o.drawImage(S, h.x, h.y, U, M, 0, 0, U, M), o.restore(), K[E] = u.resizeImagePOT(W, !0) + }) + } else S = u.resizeImagePOT(S, !0); + V._envMapTexture && G.deleteTexture(V._envMapTexture); + var O = V._envMapTexture = G.createTexture(); + G.activeTexture(G.TEXTURE0), G.bindTexture(G.TEXTURE_CUBE_MAP, O), G.texParameteri(G.TEXTURE_CUBE_MAP, G.TEXTURE_MAG_FILTER, G.LINEAR), G.texParameteri(G.TEXTURE_CUBE_MAP, G.TEXTURE_MIN_FILTER, G.LINEAR), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 0, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.right || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 1, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.left || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 2, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.top || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 3, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.bottom || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 4, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.front || S), G.texImage2D(G.TEXTURE_CUBE_MAP_POSITIVE_X + 5, 0, G.RGBA, G.RGBA, G.UNSIGNED_BYTE, K.back || S), G.bindTexture(G.TEXTURE_CUBE_MAP, G._emptyCubeTexture), V._lastEnvMap = D + } + v.uEnvMap = V._envMapTexture + } + }, getWireframe: function (H) { + var w = H.s("wf.visible"), + G = H.s("wf.width"); + return w === !0 || G > 0 && "selected" === w && this.isSelected(H) ? { + color: H.s("wf.color"), + width: G, + "short": H.s("wf.short"), + mat: H.s("wf.mat") + } : void 0 + }, _transformPointToViewSpace: function (i) { + var M = [i[0], i[1], i[2]]; + return Td(M, this._viewMatrix), M + }, _transformDirectionToViewSpace: function (b, V) { + var H = [b[0], b[1], b[2]]; + Td(H, this._viewMatrix); + var Q = V ? [V[0], V[1], V[2]] : [0, 0, 0]; + Td(Q, this._viewMatrix); + var O = Q[0] - H[0], + X = Q[1] - H[1], + r = Q[2] - H[2], + U = Math.sqrt(O * O + X * X + r * r); + return U ? [O / U, X / U, r / U] : [O, X, r] + }, getWireframeGeometry: function (E) { + return E.s("wf.geometry") ? { + color: E.s("wf.color"), + width: E.s("wf.width"), + mat: E.s("wf.mat"), + geometry: !0 + } : void 0 + }, getBodyColor: function (v) { + return v.s("body.color") + }, getMat: function (v) { + return v.getMat ? v.getMat() : v.s("mat") + }, getFaceMat: function (t, I) { + return t.getFaceMat ? t.getFaceMat(I) : t.s(I + ".mat") + }, getFaceBlend: function (o, g) { + return o.s(g + ".blend") || o.s("all.blend") + }, getFaceColor: function (i, h) { + return i.s(h + ".color") || i.s("all.color") + }, getFaceImage: function (V, O) { + return V.s(O + ".image") || V.s("all.image") + }, getFaceBlendImage: function (A, G) { + return A.s(G + ".blend.image") || A.s("all.blend.image") + }, getFaceDiscardSelectable: function (l, e) { + var o = l.s(e + ".discard.selectable"); + return o == F ? l.s("all.discard.selectable") : o + }, getFaceUv: function (e, $) { + return e.s($ + ".uv") || e.s("all.uv") + }, getFaceUvOffset: function (k, q) { + return k.s(q + ".uv.offset") || k.s("all.uv.offset") + }, getFaceUvScale: function (h, B) { + return h.s(B + ".uv.scale") || h.s("all.uv.scale") + }, getFaceLight: function (o, s) { + var O = o.s(s + ".light"); + return O == F ? o.s("all.light") : O + }, getFaceVisible: function (T, k) { + var O = T.s(k + ".visible"); + return O == F ? T.s("all.visible") : O + }, getFaceOpacity: function (S, J) { + var M = S.s(J + ".opacity"); + return M == F ? S.s("all.opacity") : M + }, getFaceTransparent: function (m, Y) { + var l = m.s(Y + ".transparent"); + return l == F ? m.s("all.transparent") : l + }, getFaceReverseColor: function (o, W) { + return o.s(W + ".reverse.color") || o.s("all.reverse.color") + }, getFaceReverseFlip: function (I, c) { + var d = I.s(c + ".reverse.flip"); + return d == F ? I.s("all.reverse.flip") : d + }, getFaceReverseCull: function (P, t) { + var n = P.s(t + ".reverse.cull"); + return n == F ? P.s("all.reverse.cull") : n + }, getTextureMap: function () { + return this._2O + }, deleteTexture: function (I) { + var T = this, + V = T._2O[I]; + V && (delete T._2O[I], T.getGL().deleteTexture(V)) + }, renderPickScene: function () { + var u = this.getGL(); + this._picking = u._picking = !0, this.renderScene(), this._picking = u._picking = !1 + }, invalidateCachedTexture: function (X) { + var m = this.getData3dUI(X); + m.invalidateCachedTexture(this.getGL()), this.invalidateData(X) + }, invalidateShape3dCachedImage: function (B) { + this.invalidateCachedTexture(B) + }, invalidateCachedGeometry: function (Q) { + var o = this.getData3dUI(Q); + o.invalidateCachedGeometry(), this.invalidateData(Q) + }, isInteractive: function (S) { + return S.s("interactive") + }, getTexture: function ($, g, E) { + if (!$) return F; + var w = this, + p = w.getGL(), + m = w._2O[$]; + if (!m) { + var j = ii($), + C = {}; + if (!j) return p._emptyTexture; + if (g) { + C.mipmapMaxLevel = g.s("texture.mipmap.max"); + var Y = g.s("texture.wrap"); + C.clampToEdge = "clampToEdge" === Y ? !0 : "repeat" === Y ? !1 : Z + } + if (j.uuid || (j.uuid = O.Math.generateUUID()), j.tagName) { + if (j.dynamic) return rg(p, j, w._1O, C); + m = w._2O[$] = rg(p, j, Z, C) + } else { + var L, R = g && (g.s("texture.cache") || g.s("shape3d.image.cache") || j.textureCache), + H = w.vr.isPresenting(); + if (H && (g._textureUpdateFrame === p._renderInfo.frame ? R = !0 : g._textureUpdateFrame = p._renderInfo.frame), R && (L = w.getData3dUI(g), m = L.getCachedTexture(E), m && L.interactiveInfo && m.interactiveInfo && (L.interactiveInfo[m.interactiveInfo.key] = m.interactiveInfo.info)), !m) { + var P = p._renderInfo.textureCache; + if (R) { + if (P.time > u.graph3dMaxVectorCacheTime) return w.redraw(), p._emptyTexture; + if (!Dr(j, g)) return p._emptyTexture + } + var G; + g && (1 !== g.s("texture.scale") ? G = g.s("texture.scale") : 1 !== g.s("shape3d.texture.scale") && (G = g.s("shape3d.texture.scale"))), G || (G = 1); + var o = g && (g.s("fixSizeOnScreen") || g.s("shape3d.fixSizeOnScreen")), + b = o ? p.NEAREST : p.LINEAR; + o ? "number" == typeof o && (G *= 0 > o ? 1 : o) : g && (g.s("vector.dynamic") || g.s("shape3d.vector.dynamic")) && (L || (L = w.getData3dUI(g)), o = L.getVectorDynamicSize()); + var h, s, f, J = g && g.s("shape3d"); + "billboard" === J ? f = g.getTall() / g.getWidth() : "plane" === J && (f = g.getHeight() / g.getWidth()); + var A = xc(j, g); + if (o) { + var i; + i = R ? w._devicePixelRatio || ij : w.getDevicePixelRatio(), h = o[0] > 0 ? o[0] * i : G * A * i, s = o[1] > 0 ? o[1] * i : G * (f ? oo(j, g, w, Math.min(4096, A * f)) : oo(j, g)) * i + } else h = G * A, s = G * (f ? oo(j, g, w, Math.min(4096, A * f)) : oo(j, g)); if (h >= 1 && s >= 1) { + var t = 0; + (R || H) && (t = Date.now()); + var e = w._glCapabilities.maxTextureSize; + h = Math.min(h, e), s = Math.min(s, e); + var N = Cr(h, s); + if (!L && g && (L = w.getData3dUI(g)), L && L.interactiveInfo) { + var _ = $; + "object" == typeof _ && (_ = _.uuid || (_.uuid = O.Math.generateUUID())); + var S = L.interactiveInfo[_] = {}; + N.interactiveInfo = S.bodyInfo = { + compInfos: [], + matrix: new Np, + rect: { + x: 0, + y: 0, + width: h, + height: s + } + } + } + Yd(N, j, 0, 0, h, s, g, w), N.interactiveInfo && (N.interactiveInfo = null), N.restore(), P.count++, P.pixels += h * s, g ? (C.minFilter = Mm(g.s("texture.filter.min") || g.s("texture.filter")) || b, C.magFilter = Mm(g.s("texture.filter.mag") || g.s("texture.filter")) || b) : C.minFilter = C.magFilter = b, R || H ? (m = rg(p, xm, null, C), L.setCachedTexture(m, E), P.time += Date.now() - t, S && (m.interactiveInfo = { + key: _, + info: S + }), xm = null) : m = rg(p, xm, w._1O, C) + } + } + } + } + return m + }, redraw: function () { + this.iv() + }, validateImpl: function () { + var B = this; + if (B._lightChanged) { + B._lightChanged = !1; + var h = [], + v = [], + N = []; + B.dm().each(function (c) { + if (Kc(c)) { + var F = c.s("light.type"); + F === zg ? h.push(c) : F === Bo ? v.push(c) : F === Tf && N.push(c) + } + }), (h.length !== B._59O.length || v.length !== B._spots.length || N.length !== B._dirs.length) && Vo(B), B._59O = h, B._spots = v, B._dirs = N + } + B._42(), B._1o.iv() + }, getRenderInfo: function () { + var X = this.getGL(); + return X ? X._renderInfo : void 0 + }, getDebugTip: function () { + var i = this, + Y = i.getRenderInfo(); + if (Y) { + var M = i.getGL()._validBufCount || 0, + v = "Draw Calls: " + Y.calls + "
" + "Vertices: " + Y.vertices + "
" + "Faces: " + Y.faces + "
" + "Lines: " + Y.lines + "
" + (Y.points ? "Points: " + Y.points + "
" : "") + "Buffers: " + M + "
" + "Cache Models: " + o.keys(Mq).length + "
" + "Shape3d Models: " + o.keys(Zm).length; + if (i.vr.isPresenting() && (v += "
VR fps: " + i.vr.getFps()), Y.textureCache) { + var n = Y.textureCache.count; + if (v += "
2D Dynamic Textures: " + Y.textureCache.count, n > 0) { + var d, f = Y.textureCache.pixels; + d = f > 1e6 ? Math.round(f / 1e6) + "M" : f > 1e3 ? Math.round(f / 1e3) + "K" : Math.round(f), v += "
2D Dynamic pixels: " + d + } + } + return v + } + }, getFrameState: function () { + return this._frameState + }, isBoundingBoxInView: function () { + var R = new O.Math.Box3, + d = new O.Math.Matrix4; + return function (H) { + var p = H; + if (p instanceof O.Data && (p = this.getData3dUI(p)), !p.mat) return !0; + var M = p.getBoundingBox(); + R.copy(M).applyMatrix4(d.fromArray(p.mat)); + var e = this.getFrustum(); + return e.intersectsBox(R) + } + }(), + updateScene: function () { + var O = this; + O._81O = F, O.overlappingBox.clear(), O._40Q.init(); + var l, i, M, C = this.dm().getDatas().getArray(), + m = C.length, + v = this.getGL(), + B = this._40Q; + for (l = 0; m > l; l++) i = C[l], M = this.getData3dUI(i), M && M.update(this, v, B); + O._40Q.onUpdated() + }, renderScene: function () { + function m(M, G) { + Q.setGLState(M, G), Q.setUniforms(M), Q.renderState.attribs.disable(), a = E.directUniforms(), H = E.directAttribs(), H.disable() + } + + function l(P) { + for (; I > p; p++) { + var x = t[p]; + if (!K || !x.ignoreInPick) { + if (x.priority >= P) break; + (!d._43Q[d._44Q = x.id] || Qg[ub.length]) && (x.render(c, d, Q), m()) + } + } + } + var d = this; + d.shadowMap.render(), d._44Q = -1; + var H, Q = d._frameState, + E = Q.renderState, + h = E.glState, + a = E.directUniforms(), + c = d.getGL(), + o = d._prg; + E.syncLoss(), d._projectMatrix = Mc(d), wp(d, d._7O), d._viewMatrix = Ql(d._7O), Q.syncEnv(this._picking ? this.pickColorMap : Z), E.useProgram(o), m(!1, !0), c.clear(c.DEPTH_BUFFER_BIT); + var K = d._picking, + t = this._41Q, + p = 0, + I = t.length; + if (l(u.cameraPriority.skybox), K) { + var B = h.color.clear.slice(0); + qe(c, [0, 0, 0, 0]) + } else qe(c, [0, 0, 0, 0]), h.blend.enabled = !1, h.depth.enabled = !1, h.depth.mask = !1, d.drawSky(c, o), d.drawReflectors(c) && (d._projectMatrix = Mc(d), wp(d, d._7O), d._viewMatrix = Ql(d._7O), Q.syncEnv(), m()), h.blend.enabled = !1, h.depth.enabled = !0, h.depth.mask = !0, a.uTransparent = !1, d._31O._42(c, o); if (!c.textureBatch || Qg[(ONE_FRAME_TIME - 6) / 2]) { + !K && d.shadowMap.enable && d.shadowMap.createShadow(a); + for (var U = 0, g = kl.length; g > U; U++) { + var f = kl[U], + e = Sc[f]; + if (!e.ignore) { + var M = e.priority; + l(M), this.renderLayer(f) + } + } + h.depth.enabled = !1, a.uTransparent = !1, a.shadowReceive = !1, K ? d.drawFilter || d._30O._42(c, o) : (h.blend.enabled = !1, h.depth.mask = !0, d._32O._42(c, o), d._30O._42(c, o), d._highlightHelper._42(c, o)), h.depth.enabled = !0, l(u.cameraPriority.infinity), K && qe(c, B), bm(c, F), eo(c, F), d._44Q = -1 + } + }, renderLayers: function (u, D) { + D && (u = Ck(u)); + for (var m = 0, A = u.length; A > m; m++) this.renderLayer(u[m]) + }, renderLayer: function (T) { + var I = this, + k = I._picking, + l = I._40Q.get(T); + if (l) { + var y, p, L, A = I.getGL(), + W = I._frameState, + q = W.renderState, + Z = q.glState, + v = q.directUniforms(), + d = l.opaque, + F = l.transparent, + x = l.batchModelMap, + B = l.polylineModelMap, + h = l.wireframeModelMap, + A = I.getGL(), + K = I._prg; + k || (Z.blend.enabled = !1, Z.depth.enabled = !0, Z.depth.mask = !0), v.uTransparent = !1, Sc[T].clearDepth !== !1 && A.clear(A.DEPTH_BUFFER_BIT); + var R = this.drawFilter; + if (R) + for (L = d, y = 0, p = L.length; p > y; y++) R(L[y].data) !== !0 && L[y].ui._42(A, K, j); + else { + for (L = d, y = 0, p = L.length; p > y; y++) L[y].ui._42(A, K, j); + if (k) + for (L = F, y = 0, p = L.length; p > y; y++) L[y].ui._46Q(A); + Zn(I, x), Eb(I, B), Eb(I, h) + } if (k || (Z.blend.enabled = !0, Z.depth.mask = !1), I._45Q = v.uTransparent = !0, R) + for (L = F, y = 0, p = L.length; p > y; y++) R(L[y].data) !== !0 && L[y].ui._42(A, K, Q); + else { + for (L = F, y = 0, p = L.length; p > y; y++) L[y].ui._42(A, K, Q); + Zn(I, x, null, !0), Eb(I, B, null, !0), Eb(I, h, null, !0) + } + I._45Q = null + } + }, drawV2: function (P) { + var L = this; + if (!L._35O && (!vi || Qg(vi))) { + var G = L.getWidth(), + x = L.getHeight(); + if (G && x) { + var d = L.getGL(); + if (d) { + var j = L._canvas; + if (P || (P = L.getDevicePixelRatio()), G !== j.clientWidth || x !== j.clientHeight) { + Bn(j, G, x, P); + var R = P; + G && Math.abs(d.drawingBufferWidth - G * P) > 1 && (R = Math.min(R, d.drawingBufferWidth / G)), x && Math.abs(d.drawingBufferHeight - x * P) > 1 && (R = Math.min(R, d.drawingBufferHeight / x)), R !== P && (L.setDevicePixelRatio(P = R), Bn(j, G, x, P)), L._18Q = null + } + d.clear(d.COLOR_BUFFER_BIT); + var r = d._renderInfo; + r.calls = 0, r.vertices = 0, r.faces = 0, r.lines = 0, r.points = 0, r.textureCache = { + time: 0, + count: 0, + pixels: 0 + }, r.frame = ++L._frameId, r.cacheTimeCost = 0, r.reflectDepth = 0, G *= P, x *= P; + do { + if (L.vr.enable && L.vr.render(d, G, x)) break; + if (L.updateScene(), L._postProcessing.render(d, G, x)) break; + L.setViewport(d, 0, 0, G, x), L.renderScene() + } while (!1); + L._33Q = !1, L.countFrame(), L._doBufferGC(d) + } + } + } + }, _42: function (J, _) { + return this.drawV2(_) + }, drawReflectors: function (L) { + L._renderInfo.reflectDepth++; + var V, T, b, n = this, + P = n._dataModel.getReflectors(), + d = !1; + for (V in P) T = P[V], n.isVisible(T) && (b = n.getData3dUI(T), b && b.drawReflector(L) && (d = !0)); + return L._renderInfo.reflectDepth--, d + }, isReflecting: function (M) { + return M._renderInfo.reflectDepth + }, getPostProcessing: function () { + return this._postProcessing + }, enablePostProcessing: function (_, s) { + return this._postProcessing.enableModule(_, s) + }, getPostProcessingModule: function (_) { + return this._postProcessing.getModule(_) + }, getPostProcessingValue: function (H, V) { + var e = this._postProcessing.getModule(H); + return e ? e[V] : Z + }, setPostProcessingValue: function (X, j, d) { + var F = this.getPostProcessingValue(X, j), + Z = this._postProcessing.getModule(X); + Z && F !== d && ("enable" === j ? this.enablePostProcessing(X, d) : Z[j] = d, this.firePropertyChange("postProcessing." + X + "." + j, F, d)) + }, setViewport: function (k, T, n, Y, v) { + this._viewport = [T, n, Y, v], ts.for(k).directState().viewport = this._viewport + }, getViewport: function () { + return this._viewport + }, setBufferGCInterval: function (v) { + this._bufferGCInterval = v + }, _doBufferGC: function (O, k) { + var o, e, y = O._bufPool, + U = 0, + f = 0, + R = O._renderInfo.frame, + K = this._bufferGCInterval || 10; + for (o in y) U++, e = y[o], e && (k || R - e._fid > K ? (O.deleteBuffer(e._buf), e._buf = null, y[o] = null) : f++); + if (U / 2 > f && U > 128) { + var E = {}; + for (o in y) y[o] && (E[o] = y[o]); + O._bufPool = E + } + O._validBufCount = f + }, _swapLineMap: function () { + var Y = this; + jb = Y._polylineModelMap, Y._polylineModelMap = Y._polylineModelMapSwap, Y._polylineModelMapSwap = jb, jb = Y._wireframeModelMap, Y._wireframeModelMap = Y._wireframeModelMapSwap, Y._wireframeModelMapSwap = jb, jb = Y._polylineIndexMap, Y._polylineIndexMap = Y._polylineIndexMapSwap, Y._polylineIndexMapSwap = jb, jb = Y._wireframeIndexMap, Y._wireframeIndexMap = Y._wireframeIndexMapSwap, Y._wireframeIndexMapSwap = jb + }, _updateSkybox: function (c) { + if (this._skybox && c) { + var h = c.property, + S = !1, + M = this._skybox; + if ("eye" === h || "forceUpdate" === h) { + var i = this._eye; + M.p3(i[0], i[1], i[2]), S = !0 + } + if ("near" === h || "far" === h || "forceUpdate" === h) { + var w = this._near, + L = this._far, + k = M.getFinalScale3d(); + if (k[0] /= 2, k[1] /= 2, k[2] /= 2, k[0] <= w || k[0] >= L || k[1] <= w || k[1] >= L || k[2] <= w || k[2] >= L) { + var Y = 2 * w * L / (w + L), + $ = Math.min(k[0], k[1], k[2]), + p = Y / $, + f = M.getScale3d(); + M.setScale3d(f[0] * p, f[1] * p, f[2] * p), S = !0 + } + } + S && this.invalidateData(M) + } + }, getSkyBox: function () { + return this.getSkybox() + }, setSkyBox: function (x) { + return this.setSkybox(x) + }, getSkybox: function () { + return this._skybox + }, setSkybox: function (g) { + var X = this._skybox; + return X === g ? (g && this._updateSkybox({ + property: "forceUpdate" + }), void 0) : (X && (this._skyboxStyleMap && X.setStyleMap(this._skyboxStyleMap), this._skyboxStyleMap = null, this._skyboxAnchor3d && X.setAnchor3d(this._skyboxAnchor3d), this._skyboxAnchor3d = null, this._skyboxP3 && X.p3(this._skyboxP3), this._skyboxP3 = null), this._skybox = g, this.ump(this._updateSkybox, this), g && (g.dm() && g.dm().remove(g), this._skyboxStyleMap = O.Default.clone(g.getStyleMap()), this._skyboxAnchor3d = g.getAnchor3d(), g.setAnchor3d(.5, .5, .5), this._skyboxP3 = g.p3().slice(0), g.s({ + "shape3d.reverse.flip": !0, + "shape3d.reverse.cull": !1, + "all.reverse.flip": !0, + "all.reverse.cull": !1, + "front.reverse.flip": !0, + "front.reverse.cull": !1, + "back.reverse.flip": !0, + "back.reverse.cull": !1, + "left.reverse.flip": !0, + "left.reverse.cull": !1, + "right.reverse.flip": !0, + "right.reverse.cull": !1, + "top.reverse.flip": !0, + "top.reverse.cull": !1, + "bottom.reverse.flip": !0, + "bottom.reverse.cull": !1 + }), this.mp(this._updateSkybox, this), this._updateSkybox({ + property: "forceUpdate" + })), this.fp("skybox", X, g), void 0) + }, drawSky: function (f, M) { + var N = this, + _ = N._skybox; + if (_) { + var A = ts.for(f).directUniforms(), + S = N._headlightIntensity, + E = ns(N._headlightColor), + M = N._prg; + 1 !== S && (E = [E[0] * S, E[1] * S, E[2] * S]), A.uHeadlightColor = [E[0], E[1], E[2], 1]; + var U = N.getData3dUI(_); + if (U) { + var R = N.isOrtho(), + W = R || this._computedProjectMatrix; + if (W) { + var n = N._projectMatrix; + R && (N._ortho = !1), A.uPMatrix = N._projectMatrix = Mc(N, !0) + } + var m = _.p3(), + p = this._eye; + (m[0] !== p[0] || m[1] !== p[1] || m[2] !== p[2]) && (_._position.x = p[0], _._54O = p[1], _._position.y = p[2]), U.validate(), U._42(f, M, C), W && (R && (N._ortho = !0), A.uPMatrix = N._projectMatrix = n) + } + f.clear(f.DEPTH_BUFFER_BIT), A.uHeadlightColor = [E[0], E[1], E[2], N._headlightDisabled ? 1 : 0] + } + }, getLogicalPoint: function (L) { + return Nm(L, this._canvas) + }, isRectOverlapping: function (Y) { + var z = this.getData3dUI(Y); + return z._rectOverlapping + }, getHitFaceInfo: function (Z) { + Z.target && (Z = this.lp(Z)); + var v = this.getDataInfoAt(Z); + if (v) { + var Q = this.intersectObject(Z, v.data); + if (Q) return { + data: v.data, + face: Q.part + } + } + return F + }, unproject: function (Z, N) { + var W = this, + C = W.getWidth(), + F = W.getHeight(), + y = Z.target ? W.lp(Z) : Z, + i = y.x - C / 2, + K = y.y - F / 2, + u = 2 * (i / C), + p = 2 * (-1 * K / F); + N = N || 0; + var j = kn(), + I = Mc(W), + r = wp(W); + xo(j, I, r), Od(j); + var t = Ek([u, p, N, 1], j); + return [t[0] / t[3], t[1] / t[3], t[2] / t[3]] + }, getDataAt: function (N) { + var U = this.getDataInfoAt(N); + return U ? U.data : F + }, getDataInfoAt: function (H, M) { + return H.target && (H = this.lp(H)), this._1o.get(Cc(H.x, H.y, M), !0) + }, getDatasInRect: function (O) { + return this._1o.get(O) + }, setEditable: function (H) { + var K = this, + m = K._editable; + K._editable = H, this.fp(Me, m, H) + }, isEditable: function (v) { + var U = this; + return v ? U._editable ? Fq(v) ? v.s("3d.editable") ? U._editableFunc ? U._editableFunc(v) : !0 : !1 : !1 : !1 : U._editable + }, isSelectable: function (v) { + return v.s("3d.selectable") && this.sm().isSelectable(v) + }, isMovable: function (Y) { + var G = this; + return Bk(Y) && Y.getStyle(ej) !== _b ? !1 : Y.s("3d.movable") ? G._movableFunc ? G._movableFunc(Y) : !0 : !1 + }, isSizeEditable: function (s) { + return Fq(s) ? this._sizeEditableFunc ? this._sizeEditableFunc(s) : !0 : !1 + }, isRotationEditable: function (K) { + return Fq(K) && K.IRotatable !== !1 ? this._rotationEditableFunc ? this._rotationEditableFunc(K) : !0 : !1 + }, handleDelete: function () { + this._editable && this.removeSelection() + }, zoomIn: function (Y) { + this.setZoom(lq, Y) + }, zoomOut: function (J) { + this.setZoom(1 / lq, J) + }, setZoom: function () { + var X = new tl, + k = new tl, + Z = new tl, + c = new tl; + return function (h, V) { + if (1 !== h) { + var R = this; + R._14o && R._14o.stop(!0); + var T, l = 1 / h; + X.copy(R.getCenter()), k.copy(R.getEye()); + var g = R._ortho; + if (g) { + if (T = R._orthoWidth, T < R._moveStep && h > 1) return + } else if (X.distanceTo(k) < R._moveStep && 1 > l) return; + var u = !1; + return R._zoomToCenter === !1 && R._lastZoomLP && (Z.copy(k).sub(X).normalize(), R._81O = null, c.copy(R.getHitPosition(R._lastZoomLP, X.toArray(), Z.toArray())), u = !0, R._lastZoomHit = c), (V = Il(V)) ? (V.action = function (N) { + R.fi({ + kind: R._zooming ? "betweenZoom" : "beginZoom" + }), R._zooming = 1; + var s = (l - 1) * N + 1; + g && R.setOrthoWidth(T * s), u ? (R.setEye(Z.lerpVectors(c, k, s).toArray()), R.setCenter(Z.lerpVectors(c, X, s).toArray())) : g || R.setEye(Z.lerpVectors(X, k, s).toArray()) + }, V._37o = function () { + delete R._14o, delete R._zooming, R.fi({ + kind: "endZoom" + }), R.onZoomEnded() + }, R._14o = Sf(V)) : (g && R.setOrthoWidth(T * l), u ? (R.setEye(Z.lerpVectors(c, k, l).toArray()), R.setCenter(Z.lerpVectors(c, X, l).toArray())) : g || R.setEye(Z.lerpVectors(X, k, l).toArray()), void 0) + } + } + }(), + setOrthoZoom: function (M, F) { + return this.setZoom(M, F) + }, getPositionInfo: function (k) { + var N = this, + l = N._eye, + j = N._center, + H = N.getAspect(), + q = k ? zc(fn(j, l, !0), fn(k, l)) : En(l, j); + if (N._ortho) { + var v = N._orthoWidth; + return { + length: q, + height: v / H, + width: v + } + } + var A = 2 * R(N._fovy / 2) * q; + return { + length: q, + height: A, + width: A * H + } + }, getCenterInfo: function () { + var G = this; + return G._81O || (G._81O = G.getPositionInfo()), Pm(G._81O) + }, rotate: function (p, B, X, O) { + var b = this; + if (p || B) { + O == F && (O = b._firstPersonMode), b._88O && b._88O.stop(!0); + var e = b._center, + N = b._eye, + l = b.getCenterInfo().length, + L = O ? e : N, + Y = O ? N : e, + v = fn(L, Y), + j = D(v[0], v[2]), + R = D(w(v[0] * v[0] + v[2] * v[2]), v[1]), + m = O ? sc : to; + return O && (B = -B), (X = Il(X)) ? (X.action = function (U) { + b.fi({ + kind: b._rotating ? "betweenRotate" : "beginRotate" + }), b._rotating = 1; + var t = j + p * U, + T = R + B * U; + T = O ? W - vg(b, W - T) : vg(b, T), v[0] = l * n(T) * n(t), v[1] = l * k(T), v[2] = l * n(T) * k(t), L[0] = Y[0] + v[0], L[1] = Y[1] + v[1], L[2] = Y[2] + v[2], b.fp(m, F, L) + }, X._37o = function () { + delete b._88O, delete b._rotating, b.fi({ + kind: "endRotate" + }), b.onRotateEnded() + }, b._88O = Sf(X)) : (j += p, R += B, R = O ? W - vg(b, W - R) : vg(b, R), v[0] = l * n(R) * n(j), v[1] = l * k(R), v[2] = l * n(R) * k(j), L[0] = Y[0] + v[0], L[1] = Y[1] + v[1], L[2] = Y[2] + v[2], b.fp(m, F, L), void 0) + } + }, pan: function (I, b, S, j) { + if (I || b) { + var u = this; + j == F && (j = u._firstPersonMode), u._89O && u._89O.stop(!0); + var m = wp(u), + x = [m[0] * I, m[4] * I, m[8] * I], + z = [m[1] * b, m[5] * b, m[9] * b], + $ = x[0] + z[0], + G = x[1] + z[1], + v = x[2] + z[2], + i = u._center, + W = u._eye; + if (j) { + var h = mb(u.getBoundaries(), W[0], W[2], W[0] + $, W[2] + v, w($ * $ + v * v)); + $ = h[0], v = h[1] + } + if (S = Il(S)) { + var r = Pm(W), + C = Pm(i); + return S.action = function (s) { + u.fi({ + kind: u._panning ? "betweenPan" : "beginPan" + }), u._panning = 1, i[0] = C[0] + $ * s, i[1] = C[1] + G * s, i[2] = C[2] + v * s, W[0] = r[0] + $ * s, W[1] = r[1] + G * s, W[2] = r[2] + v * s, u.fp(to, F, W), u.fp(sc, F, i) + }, S._37o = function () { + delete u._89O, delete u._panning, u.fi({ + kind: "endPan" + }), u.onPanEnded() + }, u._89O = Sf(S) + } + i[0] += $, i[1] += G, i[2] += v, W[0] += $, W[1] += G, W[2] += v, u.fp(to, F, W), u.fp(sc, F, i) + } + }, walk: function (_, H, p) { + if (_) { + var y = this; + p == F && (p = y._firstPersonMode), y._90O && y._90O.stop(!0); + var t = y._center, + E = y._eye, + S = fn(t, E, !0); + if (p) { + var D = mb(y.getBoundaries(), E[0], E[2], E[0] + S[0] * _, E[2] + S[2] * _, X(_)); + if (_ = En(D), !_) return; + S = [D[0] / _, 0, D[1] / _] + } + if (H = Il(H)) { + var Z = Pm(E), + R = Pm(t); + return H.action = function (T) { + y.fi({ + kind: y._walking ? "betweenWalk" : "beginWalk" + }), y._walking = 1; + var p = _ * T; + E[0] = Z[0] + S[0] * p, E[1] = Z[1] + S[1] * p, E[2] = Z[2] + S[2] * p, t[0] = R[0] + S[0] * p, t[1] = R[1] + S[1] * p, t[2] = R[2] + S[2] * p, y.fp(to, F, E), y.fp(sc, F, t) + }, H._37o = function () { + delete y._90O, delete y._walking, y.fi({ + kind: "endWalk" + }), y.onWalkEnded() + }, y._90O = Sf(H) + } + E[0] += S[0] * _, E[1] += S[1] * _, E[2] += S[2] * _, t[0] += S[0] * _, t[1] += S[1] * _, t[2] += S[2] * _, y.fp(to, F, E), y.fp(sc, F, t) + } + }, handleScroll: function (i, O) { + i.preventDefault(); + var w = this, + A = w._moveStep, + o = w.getDataInfoAt(i); + if (o) { + var d = o.data; + if (d && w.isInteractive(d)) { + var B = w.intersectObject(i, d); + if (B) { + var _ = B.part, + h = ii(d.s(_ + ".image") || d.s("shape3d." + _ + ".image") || d.s("all.image") || d.s("shape3d.image")); + if (h && Dj(h.scrollable, d, w)) return + } + } + } + return w.isFirstPersonMode() ? (w.isPannable() && w.pan(0, O > 0 ? A : -A), void 0) : (w.isZoomable() && (w._lastZoomLP = w.lp(i), w.setZoom(0 > O ? 1 / _f : _f), w._lastZoomLP = w._lastZoomHit = null), void 0) + }, handlePinch: function (O, Q) { + if (this.isZoomable()) { + if (Math.abs(O - Q) < u.pinchZoomThreshold) return; + this.setZoom(Q > O ? 1 / db : db) + } + }, reset: function () { + this.setCenter(u.graph3dViewCenter), this.setEye(u.graph3dViewEye), this.setUp(u.graph3dViewUp) + }, moveSelection: function (n, q, M) { + var W = this; + W.dm().beginTransaction(), qc(this.sm().toSelection(this.isMovable, this), n, q, M), W.dm().endTransaction() + }, getMoveMode: function (H, s) { + var Q = s.s("3d.move.mode"); + if (Q) return Q; + var W = "88", + V = "89", + p = "90"; + return Pf(H) || pl[W] && pl[V] && pl[p] ? "xyz" : pl[W] && pl[V] ? "xy" : pl[W] && pl[p] ? "xz" : pl[V] && pl[p] ? "yz" : pl[W] ? "x" : pl[V] ? "y" : pl[p] ? "z" : "xz" + }, handleTick: function () { + var C = this, + p = !1, + Y = C._moveStep, + a = Y, + V = !1, + o = !0, + D = C._rotateStep * (o ? -1 : 1); + if (C.isWalkable() || (a = 0), C.isPannable() || (Y = 0), C.isRotatable() || (D = 0), C._32Q) { + var E = (mm() - C._32Q) / 50; + a *= E, Y *= E, D *= E + } + C._31Q && (td(C._31Q), delete C._31Q, delete C._32Q), sb() && (p = !0, C.pan(-Y, 0, V, o)), Fr() && (p = !0, C.pan(Y, 0, V, o)), $j() && (p = !0, Pf() ? C.pan(0, Y, V, o) : C.walk(a, V, o)), Ib() && (p = !0, Pf() ? C.pan(0, -Y, V, o) : C.walk(-a, V, o)), Wk() && (p = !0, C.rotate(-D, 0, V, o)), _i() && (p = !0, C.rotate(D, 0, V, o)), Nk() && (p = !0, C.rotate(0, -D / 2, V, o)), ri() && (p = !0, C.rotate(0, D / 2, V, o)), p && (C._32Q = mm(), C._31Q = $e(C.handleTick, C)) + }, handleKeyDown: function (L) { + var p = this; + !ik(L) && Gj[L.keyCode] ? p.handleTick() : Dq(L) ? p.selectAll() : qq(L) ? p.handleDelete(L) : Cf(L) && this.isResettable() && p.reset() + }, checkDoubleClickOnNote: function (R, b, e) { + var A = this; + if (e === Rm) { + if (b.s("note.toggleable")) return b.s(ke, !b.s(ke)), A.fi({ + kind: "toggleNote", + event: R, + data: b, + part: e + }), !0 + } else if (e === Vk && b.s("note2.toggleable")) return b.s(Mh, !b.s(Mh)), A.fi({ + kind: "toggleNote2", + event: R, + data: b, + part: e + }), !0; + return !1 + }, checkDoubleClickOnRotation: function (W, _, p) { + return p === Pg ? (_.setRotationX(0), !0) : p === hb ? (_.setRotationY(0), !0) : p === pn ? (_.setRotationZ(0), !0) : !1 + }, onRotateEnded: function () { }, onWalkEnded: function () { }, getViewRatio: function (n) { + var U = this; + if (U.isOrtho()) return U.getWidth() / U.getOrthoWidth(); + var l = U.getCenter(), + J = U.getHeight(), + H = U.getEye(), + A = [l[0] - H[0], l[1] - H[1], l[2] - H[2]], + e = [n[0] - H[0], n[1] - H[1], n[2] - H[2]], + i = Math.sqrt(A[0] * A[0] + A[1] * A[1] + A[2] * A[2]), + R = 1 / Math.tan(U.getFovy() / 2); + return J * i * R / (e[0] * A[0] + e[1] * A[1] + e[2] * A[2]) + }, inViewSpace: function (L) { + var T, k = this, + I = k._transformPointToViewSpace(L), + O = k.getAspect(), + S = k.getNear(), + $ = k.getFar(); + return -I[2] < S || -I[2] > $ ? !1 : k.isOrtho() ? (T = k.getOrthoWidth() / 2, Math.abs(I[0]) <= T && Math.abs(I[1] * O) <= T) : (T = Math.sqrt(I[0] * I[0] + I[1] * I[1] + I[2] * I[2]) * Math.tan(k.getFovy() / 2), Math.abs(I[1] <= T) && Math.abs(I[0]) <= T * O) + }, getPVMatrix: function () { + var l, v = this; + return (l = v._18Q) || (l = Mc(v), v._18Q = xo(l, l, wp(v)), v._18Q._wh = v.getWidth() / 2 / v.getHeight()), l + }, getFrustum: function () { + var g = new br, + c = new Vc, + f = new Array(16); + return function () { + for (var e = this.getPVMatrix(), j = !1, $ = 0; 16 > $; $++) e[$] !== f[$] && (j = !0, f[$] = e[$]); + return j && c.setFromMatrix(g.fromArray(e)), c + } + }(), + toViewPosition: function (V) { + var x = this, + g = x.getWidth() / 2, + G = x.getHeight() / 2, + k = x.getPVMatrix(); + return V = Ek([V[0], V[1], V[2], 1], k), { + x: g + g * V[0] / V[3], + y: G - G * V[1] / V[3], + z: V[2] / V[3] + } + }, getHitPosition: function (S, u, Q) { + var X = this, + T = X.getWidth(), + o = X.getHeight(), + h = S.target ? X.lp(S) : S, + i = h.x - T / 2, + x = h.y - o / 2, + z = X.getCenterInfo(), + E = wp(X); + u = u ? u : [0, 0, 0], Q = Q ? Q : [0, 1, 0], i = i / T * z.width, x = -1 * x / o * z.height; + var F = [E[0] * i, E[4] * i, E[8] * i], + q = [E[1] * x, E[5] * x, E[9] * x], + e = [F[0] + q[0], F[1] + q[1], F[2] + q[2]], + w = X.getCenter(), + N = cc(X, u, Q, [e[0] + w[0], e[1] + w[1], e[2] + w[2]]); + return N ? N : [0, 0, 0] + }, intersectObject: function (k, h) { + return this._raycaster.intersectObject(k, h) + }, intersectObjects: function (U, t, g) { + return this._raycaster.intersectObjects(U, t, g) + }, getLineLength: function (j) { + this.validate(); + var Z = this.getData3dUI(j); + if (Z && Z.getCache) { + var K = Z.getCache(); + if (K) return K[K.length - 1].length + } + return 0 + }, getLineOffset: function (V, k) { + var i = this.getData3dUI(V); + if (i && i.getCache) { + var U = i.getCache(); + if (U) { + var J = Qd(U, k); + if (!V.r3) return J; + var u = V.r3(); + if (0 === u[0] && 0 === u[1] && 0 === u[2]) return J; + var x = new tl(V.p3()), + d = new tl(J.point).sub(x), + X = new tl(J.tangent).add(d), + R = (new fs).setFromEuler(new gg(u, V.getRotationMode(), !0)); + return d.applyQuaternion(R), X.applyQuaternion(R), { + point: d.add(x), + tangent: X.sub(d).normalize() + } + } + } + return F + }, isLabelVisible: function () { + return !0 + }, isNoteVisible: function () { + return !0 + }, moveCamera: function (M, i, X) { + var V = this, + h = V.getEye(); + h = [h[0], h[1], h[2]]; + var B = V.getCenter(); + if (B = [B[0], B[1], B[2]], M || (M = h), i || (i = B), V._flyAnim && V._flyAnim.stop(!0), X = Il(X), !X) return V.setEye(M[0], M[1], M[2]), V.setCenter(i[0], i[1], i[2]), delete V._flyAnim, !0; + var H = [M[0] - h[0], M[1] - h[1], M[2] - h[2]], + Q = [i[0] - B[0], i[1] - B[1], i[2] - B[2]]; + return X.action = function (j) { + V.setCenter(B[0] + Q[0] * j, B[1] + Q[1] * j, B[2] + Q[2] * j), V.setEye(h[0] + H[0] * j, h[1] + H[1] * j, h[2] + H[2] * j) + }, X._37o = function () { + delete V._flyAnim + }, V._flyAnim = Sf(X) + }, flyTo: function () { + function u(X, R, C) { + if (C instanceof O.Node) { + v.fromArray(sj(C, R.getMat(C))); + var A = C.getAnchor3d(); + X.push((new tl).set(0 - A.x, 0 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(0 - A.x, 0 - A.y, 1 - A.z).applyMatrix4(v)), X.push((new tl).set(0 - A.x, 1 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(0 - A.x, 1 - A.y, 1 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 0 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 0 - A.y, 1 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 1 - A.y, 0 - A.z).applyMatrix4(v)), X.push((new tl).set(1 - A.x, 1 - A.y, 1 - A.z).applyMatrix4(v)) + } + } + var m = new tl, + D = new tl, + N = new tl, + c = new tl, + v = new br, + q = new O.Math.Quaternion, + d = new gg, + E = new Hi; + return function (W, e, p) { + var $ = this; + if (p !== Z) e = { + animation: e, + ratio: p + }; + else { + var y = typeof e; + ("boolean" === y || "object" === y && e.duration) && (e = { + animation: e + }) + } + e = e || {}, m.fromArray($.getEye()), D.fromArray($.getCenter()); + var g, H, Q = [], + X = e.center, + T = e.distance === Z; + if (X && N.fromArray(X), W instanceof O.Node) X || N.fromArray(W.p3()), T && (u(Q, $, W), g = Q.length); + else { + if (W || (W = $.dm().getDatas()), !W.length) return; + if ((T || !X) && (Q = [], W.forEach(function (_) { + u(Q, $, _) + }), g = Q.length, !g)) return; + X || (E.setFromPoints(Q), N.copy(E.min).add(E.max).multiplyScalar(.5)) + } if ($.setCenter(N.x, N.y, N.z), c.subVectors(m, D), e.direction || e.worldDirection) { + !e.worldDirection && W instanceof O.Node ? q.setFromEuler(d.set(W.r3(), W.getRotationMode(), !0)) : q.set(0, 0, 0, 1); + var C = c.length(); + c.fromArray(e.worldDirection || e.direction).applyQuaternion(q).setLength(C) + } + var B = 0; + if (T) { + var i, j, w, p = e.ratio || .8, + h = e.xRatio || p, + o = e.yRatio || p; + if ($.isOrtho()) { + var P = -1 / 0; + for ($._eye[0] = c.x + N.x, $._eye[1] = c.y + N.y, $._eye[2] = c.z + N.z, i = Mc($), xo(i, i, wp($)), H = 0; g > H; H++) w = Q[H], j = Ek([w.x, w.y, w.z, 1], i), P = Math.max(P, Math.max(Math.abs(j[0]) / h, Math.abs(j[1]) / o)); + B = $.getOrthoWidth() * P, c.add(N) + } else { + for (var s, L, z = $.getNear(), A = 10; A--;) { + for ($._eye[0] = c.x + N.x, $._eye[1] = c.y + N.y, $._eye[2] = c.z + N.z, i = Mc($), xo(i, i, wp($)), s = !0, L = -1 / 0, H = 0; g > H; H++) { + if (w = Q[H], j = Ek([w.x, w.y, w.z, 1], i), j[3] < z && A) { + c.multiplyScalar(2), s = !1; + break + } + L = Math.max(L, Math.max(Math.abs(j[0]) / h, Math.abs(j[1]) / o) - j[3]) + } + if (s) break + } + c.setLength(L + c.length()).add(N) + } + } else c.setLength(e.distance).add(N); + $._flyAnim && $._flyAnim.stop(!0); + var S = Il(e.animation); + if (S) { + $.setEye(m.x, m.y, m.z), $.setCenter(D.x, D.y, D.z); + var k = (new tl).subVectors(c, m), + U = (new tl).subVectors(N, D); + if (B) var f = $.getOrthoWidth(); + var R = new tl, + l = new tl, + I = S.action, + n = S._37o, + V = m.clone(), + M = D.clone(); + return S.action = function (J, O) { + R.copy(V).addScaledVector(k, J), l.copy(M).addScaledVector(U, J), $.setCenter(l.x, l.y, l.z), $.setEye(R.x, R.y, R.z), B && $.setOrthoWidth((B - f) * J + f), I && I(J, O) + }, S._37o = function () { + delete $._flyAnim, n && n() + }, { + lastEye: m, + lastCenter: D, + eye: c, + center: N, + orthoWidth: B, + animation: $._flyAnim = Sf(S) + } + } + return $.setEye(c.x, c.y, c.z), B && $.setOrthoWidth(B), delete $._flyAnim, { + lastEye: m, + lastCenter: D, + eye: c, + center: N, + orthoWidth: B + } + } + }(), + getBoundingBox: function () { + function Y(E, J, g) { + $.fromArray(sj(g, J.getMat(g))); + var A = g.getAnchor3d(); + E.push((new tl).set(0 - A.x, 0 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(0 - A.x, 0 - A.y, 1 - A.z).applyMatrix4($)), E.push((new tl).set(0 - A.x, 1 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(0 - A.x, 1 - A.y, 1 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 0 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 0 - A.y, 1 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 1 - A.y, 0 - A.z).applyMatrix4($)), E.push((new tl).set(1 - A.x, 1 - A.y, 1 - A.z).applyMatrix4($)) + } + var $ = new br; + return function (d) { + if (d = d || this.sm().getSelection(), d instanceof O.Node && (d = [d]), 0 === d.length) return F; + var X = []; + d.forEach(function (Q) { + Fq(Q) && Y(X, this, Q) + }, this); + var N = [1 / 0, 1 / 0, 1 / 0], + Q = [-1 / 0, -1 / 0, -1 / 0]; + return X.forEach(function (U) { + N[0] = Math.min(U.x, N[0]), N[1] = Math.min(U.y, N[1]), N[2] = Math.min(U.z, N[2]), Q[0] = Math.max(U.x, Q[0]), Q[1] = Math.max(U.y, Q[1]), Q[2] = Math.max(U.z, Q[2]) + }), { + min: N, + max: Q + } + } + }(), + setBatchInfo: function (A, T) { + var w = this._batchInfoMap[A]; + this._batchInfoMap[A] = T, this.fp("batchInfo", w, T) + }, getBatchInfo: function (q) { + return this._batchInfoMap[q] || ef[q] + } + }), Eh.RenderEnv = function (I) { + this.gv = I, this.enable = !1 + }, o.defineProperties(Eh.RenderEnv.prototype, { + debugOn: { + get: function () { + return this._debugOn + }, set: function ($) { + this._debugOn = $, this.capture && this.capture() + } + } + }), o.assign(Eh.RenderEnv.prototype, { + renderEnvToCube: function (w, Y, m, N) { + var u = this, + s = u.gv; + if (!w || !Y || !m) return u.enable = !1, u._42 = null, void 0; + u.enable = !0; + var y = Math.floor(N / w * Y), + G = s.getGL(), + Q = u._renderTargets; + Q ? Q.length < m && (Q = u._renderTargets = Q.concat(new Array(m - Q.length))) : Q = u._renderTargets = new Array(m); + for (var U = 0; m > U; U++) Q[U] ? Q[U].setSize(G, N, y) : Q[U] = new Eh.RenderTarget(s, G, N, y); + var M = !1; + u.capture = function () { + M = !0, s._42(), M = !1 + }; + var c = new tl, + O = new tl, + H = new tl, + J = new tl, + V = (new tl).setY(0), + v = 2 * Math.PI / m, + T = w / 2 / Math.tan(Math.PI / m), + I = 2 * Math.atan2(Y / 2, T), + t = w / Y; + u._42 = function (S, R, r, B) { + var G = u._debugOn; + if (!M && !G) return !1; + c.copy(s.getEye()), J.copy(s.getCenter()).sub(c); + var K = Math.atan2(J.z, J.x), + Z = s.getNear(), + L = s.getFovy(), + F = s.getAspect(); + O.copy(s.getCenter()); + for (var Y, x = 0; m > x; x++) + if (Y = Q[x], V.setZ(Math.cos(K)).setX(Math.sin(K)).multiplyScalar(T), K -= v, H.addVectors(c, V), s.setNear(T), s.setCenter([H.x, H.y, H.z]), s.setFovy(I), s.setAspect(t), G) { + var y = Math.round(R / m); + ts.for(S).glState.viewport = [y * x, 0, y, r], B() + } else So(S, Y.frame), ts.for(S).glState.viewport = [0, 0, Y.width, Y.height], S.clear(S.COLOR_BUFFER_BIT), B(), Ar(S), Y.assureTexture(); + return s.setNear(Z), s.setCenter([O.x, O.y, O.z]), s.setFovy(L), s.setAspect(F), !0 + }, u.capture() + }, getTextureInfo: function (G) { + var Q = this._renderTargets; + if (!Q) return null; + var D = this._renderTargets[G]; + return D ? { + index: G, + texture: D.texture, + textureName: D.uuid + } : null + } + }), o.assign(Eh.Graph3dView.prototype, { + renderEnvToCube: function (j, p, N, G) { + var U = this; + U.envRenderer || (U.envRenderer = new Eh.RenderEnv(U)), U.envRenderer.renderEnvToCube(j, p, N, G) + } + }); + var kq = ["left", "front", "right", "back", "top", "bottom"], + Km = Eh._RenderList = function () { + function c() { + J.length = 0, j.length = 0, l = {} + } + + function $(n) { + var q = n.gv, + N = n.data; + if (_ && !Ad) return n._renderParams = null, void 0; + var C, u, G, f, w = n.shapeModel; + if (w) { + var L, m, S, $ = N.s("shape3d.transparent") || N.s("points.transparent"); + for (ip(w) || (L = Dj(w.transparent, N, q), w = [w]), G = 0, f = w.length; f > G; G++) S = w[G], m = Dj(S.transparent, N, q), m === Z && (m = L), m === Z && (m = $), m ? u = !0 : C = !0 + } + for (G = 0, f = kq.length; f > G; G++) { + var k = n[kq[G]]; + k && (k.transparent ? u = !0 : C = !0) + } + q.isLabelVisible(N) && (n.labelInfo && (N.s(Bg + ".transparent") ? u = !0 : C = !0), n.label2Info && (N.s(Qk + ".transparent") ? u = !0 : C = !0)), q.isNoteVisible(N) && (n.noteInfo && (N.s(Rm + ".transparent") ? u = !0 : C = !0), n.note2Info && (N.s(Vk + ".transparent") ? u = !0 : C = !0)), n._38o && (u = C = !0), u || (C = !0), n._renderParams = { + opaque: C, + transparent: u + } + } + + function M(N, x) { + x && $(N); + var r = N.data, + n = r._id; + if (!l[n]) { + l[n] = !0; + var u = N._renderParams; + u && u.visible !== !1 && (N = { + ui: N, + data: r, + z: r._z, + id: n + }, u.opaque && J.push(N), u.transparent && j.push(N)) + } + } + + function D() { + J.length > 1 && J.sort(i), j.length > 1 && j.sort(p) + } + + function S(d) { + d ? (kb(y, h, d), kb(X, W, d), kb(H, f, d)) : (y = this.batchModelMap = {}, h = this.batchIndexMap = {}, X = this.polylineModelMap = {}, W = this.polylineIndexMap = {}, H = this.wireframeModelMap = {}, f = this.wireframeIndexMap = {}), this.markBatchInvalid() + } + + function z(m) { + m ? kb(y, h, m) : (y = this.batchModelMap = {}, h = this.batchIndexMap = {}), this.markBatchInvalid() + } + + function U(V) { + V ? kb(X, W, V) : (X = this.polylineModelMap = {}, W = this.polylineIndexMap = {}), this.markBatchInvalid() + } + + function q(U) { + U ? kb(H, f, U) : (H = this.wireframeModelMap = {}, f = this.wireframeIndexMap = {}), this.markBatchInvalid() + } + + function s() { + return this._batchInvalid + } + + function t() { + this._batchInvalid = !0 + } + + function e() { + this._batchInvalid = null + } + var J = [], + j = [], + y = {}, + h = {}, + X = {}, + W = {}, + H = {}, + f = {}, + l = {}; + return { + opaque: J, + transparent: j, + init: c, + push: M, + batchModelMap: y, + batchIndexMap: h, + polylineModelMap: X, + polylineIndexMap: W, + wireframeModelMap: H, + wireframeIndexMap: f, + ivBatch: S, + ivModelBatch: z, + ivPolylineBatch: U, + ivWireframeBatch: q, + markBatchInvalid: t, + isBatchInvalid: s, + onUpdated: e, + sort: D + } + }, + Ud = Eh._RenderLists = function () { + function B() { + for (var H in t) t[H].init() + } + + function f() { + for (var T in t) t[T].onUpdated() + } + + function X(T, D) { + T = T || "main"; + var Z = t[T]; + return !Z && D && (Z = t[T] = new Km), Z + } + + function u(D, i) { + var b = D.data.getRenderLayer(), + H = X(b, !0); + H.push(D, i) + } + + function q(Z) { + for (var w in t) Z(t[w]) + } + var t = {}; + return { + init: B, + onUpdated: f, + get: X, + push: u, + each: q, + lists: t + } + }, + fq = Eh.RenderTarget = function (T, J, E, F, t) { + var C = this; + t = t || {}, t.samples = Math.min(T._glCapabilities.maxSamples, t.samples && t.samples > 1 && 2 === T._webGLVersion ? t.samples : 0), C.options = t, C.uuid = O.Math.generateUUID(), C.gv = T, C.init(T, J, t), t.samples && !T._glCapabilities._maxSamplesChecked ? C.setSize(J, E || 1, F || 1) : C.setSize(J, E, F) + }; + o.assign(Eh.RenderTarget.prototype, { + bind: function (Z) { + So(Z, this.options.samples ? this._MSAAFbo : this.frame) + }, unbind: function (R) { + Ar(R), this.options.samples && (R.bindFramebuffer(R.READ_FRAMEBUFFER, this._MSAAFbo), R.bindFramebuffer(R.DRAW_FRAMEBUFFER, this.frame), R.blitFramebuffer(0, 0, this.width, this.height, 0, 0, this.width, this.height, R.COLOR_BUFFER_BIT, R.NEAREST), R.bindFramebuffer(R.READ_FRAMEBUFFER, null), R.bindFramebuffer(R.DRAW_FRAMEBUFFER, null)) + }, init: function (y, P, j) { + var Y = this, + E = Y.texture = P.createTexture(); + P.activeTexture(P.TEXTURE0), an(P, E); + var G = j.samples, + D = G ? P.NEAREST : P.LINEAR; + P.texParameteri(P.TEXTURE_2D, P.TEXTURE_MIN_FILTER, j.minFilter || D), P.texParameteri(P.TEXTURE_2D, P.TEXTURE_MAG_FILTER, j.magFilter || D), an(P, null), Y.render = P.createRenderbuffer(), Y.frame = P.createFramebuffer(), y._2O[Y.uuid] = E + }, assureTexture: function () { + var Z = this, + z = Z.uuid, + h = Z.gv._2O; + h[z] || (h[z] = Z.texture) + }, setSize: function (O, D, q) { + var n = this; + if (D && q && (n.width !== D || n.height !== q)) { + var R = O.RGBA, + A = O.TEXTURE_2D, + z = O.RENDERBUFFER, + N = O.FRAMEBUFFER, + B = n.options.samples; + if (O.activeTexture(O.TEXTURE0), an(O, n.texture), O.texImage2D(A, 0, R, D, q, 0, R, O.UNSIGNED_BYTE, F), Rc.isPOT(D) && Rc.isPOT(q) && !n.options.clampToEdge ? (O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_S, O.REPEAT), O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_S, O.REPEAT)) : (O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_S, O.CLAMP_TO_EDGE), O.texParameteri(O.TEXTURE_2D, O.TEXTURE_WRAP_T, O.CLAMP_TO_EDGE)), O.bindRenderbuffer(z, n.render), B) { + var w = n.gv._glCapabilities; + if (w._maxSamplesChecked) O.renderbufferStorageMultisample(z, B, O.DEPTH_COMPONENT16, D, q); + else { + for (O.getError(); B > 1 && (O.renderbufferStorageMultisample(z, B, O.DEPTH_COMPONENT16, D, q), O.getError());) B = Math.floor(B >> 1); + 1 >= B && (B = 0, O.texParameteri(O.TEXTURE_2D, O.TEXTURE_MIN_FILTER, n.options.minFilter || O.LINEAR), O.texParameteri(O.TEXTURE_2D, O.TEXTURE_MAG_FILTER, n.options.magFilter || O.LINEAR), O.renderbufferStorage(z, O.DEPTH_COMPONENT16, D, q)), w._maxSamplesChecked = !0, w.maxSamples = n.options.samples = B + } + } else O.renderbufferStorage(z, O.DEPTH_COMPONENT16, D, q); + B && !n._MSAAFbo && (n._MSAAFbo = O.createFramebuffer(), n._MSAARbO = O.createRenderbuffer()), So(O, n.frame), O.framebufferTexture2D(N, O.COLOR_ATTACHMENT0, A, n.texture, 0), B || O.framebufferRenderbuffer(N, O.DEPTH_ATTACHMENT, z, n.render), Ar(O), B && (O.bindRenderbuffer(O.RENDERBUFFER, n._MSAARbO), O.renderbufferStorageMultisample(O.RENDERBUFFER, B, O.RGBA8, D, q), So(O, n._MSAAFbo), O.framebufferRenderbuffer(O.FRAMEBUFFER, O.COLOR_ATTACHMENT0, O.RENDERBUFFER, n._MSAARbO), O.framebufferRenderbuffer(N, O.DEPTH_ATTACHMENT, z, n.render), Ar(O)), an(O, F), O.bindRenderbuffer(z, F), n.width = D, n.height = q + } + }, toCanvas: function () { + var e = this, + u = e.gv.getGL(); + So(u, e.frame); + var H = e.width, + K = e.height, + C = new Uint8Array(4 * H * K); + u.readPixels(0, 0, H, K, u.RGBA, u.UNSIGNED_BYTE, C), Ar(u); + var N = U.createElement("canvas"); + N.width = H, N.height = K; + var $ = N.getContext("2d"), + l = $.createImageData(H, K); + return l.data.set(C), $.putImageData(l, 0, 0), N + } + }); + var Vq = Eh.Interactor = function (K) { + this.gv = this.g3d = K + }; + Dn("Interactor", o, { + ms_listener: 1, + getView: function () { + return this.gv.getView() + }, setUp: function () { + this.addListeners() + }, tearDown: function () { + this.removeListeners() + } + }); + var ps = Eh.DefaultInteractor = function (U) { + fi(ps, this, [U]) + }; + Dn("DefaultInteractor", Vq, { + getDataInfoAt: function (f, e) { + var j = this.gv, + R = j.getDataInfoAt(f); + if (!j.isBlockSelectable() || !R || !R.data) return R; + if (!e && j.isSelected(R.data)) return R; + for (var d = R.data; + (d = d.getParent()) && d instanceof O.Block && j.isSelectable(d);) { + var o = j.isSelected(d); + if (o && e) break; + if (R = { + data: d, + part: R + }, o && !e) break + } + return R + }, handle_contextmenu: function (y) { + Qc(y) + }, handle_mousewheel: function (H) { + this.gv.handleScroll(H, H.wheelDelta / 40) + }, handle_DOMMouseScroll: function (l) { + 2 === l.axis && this.gv.handleScroll(l, -l.detail) + }, handle_keydown: function (s) { + this.gv.handleKeyDown(s) + }, handle_mousedown: function (J) { + this.handle_touchstart(J) + }, handle_touchstart: function (S) { + Qc(S); + var v = this, + O = v.gv, + f = jj(S), + o = v.getDataInfoAt(S), + d = o ? o.data : F, + K = o ? o.part : F, + $ = O.sm(), + r = Bf(S), + U = Qj(S); + O.setFocus(S) && (v._62O = F, v._57I = F, v.pendingClickThrough = F, v.__lastClientPoint__ = lb(S), d ? ik(S) ? $.co(d) ? $.rs(d) : $.as(d) : $.co(d) ? d instanceof Br && d.isClickThroughEnabled() && jj(S) && (v.pendingClickThrough = lb(S)) : $.ss(d) : f && (ik(S) ? O.isRectSelectable() && (v._62O = nj) : v._57I = lb(S)), v._31Q && (td(v._31Q), delete v._31Q, delete v._32Q), v._62O || (O.isFirstPersonMode() && (Pf(S) || Fm(S) || U > 2 ? v._62O = "pan" : O.isMouseRoamable() || li(S) ? (v._62O = "roaming", v.foward = r && jj(S), v._32Q = mm(), v._31Q = $e(v.tick, v)) : f || (v._62O = "roaming")), v._62O || (f && r && Nr[K] ? (v._62O = K, v.p3 = d.p3()) : f && r && Fq(d) && O.isSelected(d) ? O.isMovable(d) ? (v._62O = "move", v.p3 = d.p3(), v.movedata = d) : O._39Q(d) && (v._62O = "none") : li(S) && (U > 2 ? v._62O = "pan" : 2 === U && (v.dist = zo(S), v._62O = "pinch")))), v.point = O.lp(S), Ui(v, S), wm(S) ? O.handleDoubleClick(S, d, K) : O.handleClick(S, d, K)) + }, tick: function () { + var p = this, + J = p.gv, + y = J._moveStep; + p.point && J.isWalkable() && (p._32Q && (y *= (mm() - p._32Q) / 50), J.walk(p.foward ? y : -y), p._32Q = mm(), p._31Q = $e(p.tick, p)) + }, handle_mouseup: function (h) { + this.handle_touchend(h) + }, handle_touchend: function (m) { + var X = this._57I; + if (X && (En(X, lb(m)) <= 1 && this.gv.sm().cs(), this._57I = F), X = this.pendingClickThrough) { + if (En(X, lb(m)) <= 1) { + var N = this.getDataInfoAt(m); + N && N.data instanceof Br && N.data.isClickThroughEnabled() && (N = this.getDataInfoAt(m, !0), N && (m.clickThrough = !0, this.gv.sm().ss(N.data))) + } + this.pendingClickThrough = null + } + }, handleWindowMouseMove: function (p) { + this.handleWindowTouchMove(p) + }, handleWindowTouchMove: function (b) { + var F, Q, O = this, + m = O.gv, + r = O._62O, + N = O.point, + A = m.dm(), + R = m.lp(b), + s = R.x - N.x, + w = R.y - N.y, + x = m.getWidth(), + t = m.getHeight(); + if (x && t) { + var j = lb(b), + k = wq(m, j, O.__lastClientPoint__), + I = En({ + x: 0, + y: 0 + }, k), + T = -$ * s / x, + M = -$ * w / t; + if ("roaming" === r) O.rotate(b, T / 2, M / 2); + else if (r === Pg || r === hb || r === pn) m._86O || A.beginTransaction(), m.fi({ + kind: m._86O ? "betweenEditRotation" : "beginEditRotation", + event: b + }), m._86O = 1, m.sm().each(function (C) { + if (Fq(C) && m.isRotationEditable(C)) { + var Z = X(T) > X(M) ? T : M; + r === Pg ? C.setRotationX(C.getRotationX() + Z) : r === hb ? C.setRotationY(C.getRotationY() + Z) : r === pn && C.setRotationZ(C.getRotationZ() + Z) + } + }); + else if ("move" === r || Nr[r]) { + if (r === zb || r === Oh || r === dh) m._87O || A.beginTransaction(), m.fi({ + kind: m._87O ? "betweenEditScale" : "beginEditScale", + event: b + }), m._87O = 1; + else { + if (!m._moving) { + if (I < u.touchMoveThreshold) return; + A.beginTransaction() + } + m.fi({ + kind: m._moving ? "betweenMove" : "beginMove", + event: b + }), m._moving = 1 + } + var U, y = O.p3, + n = m.getPositionInfo(y), + C = wp(m); + U = r === Zo ? "x" : r === te ? "y" : r === ll ? "z" : r === zb ? "sx" : r === Oh ? "sy" : r === dh ? "sz" : m.getMoveMode(b, O.movedata), s = s / x * n.width, w = -1 * w / t * n.height; + var V, d, p = [C[0] * s, C[4] * s, C[8] * s], + e = [C[1] * w, C[5] * w, C[9] * w], + W = p[0] + e[0], + g = p[1] + e[1], + v = p[2] + e[2], + J = [y[0] + W, y[1] + g, y[2] + v], + Z = fn(m.getEye(), J, !0); + if ("xyz" === U ? (V = J, m.moveSelection(W, g, v)) : "xz" === U ? (V = cc(m, y, [0, 1, 0], J), V && m.moveSelection(V[0] - y[0], 0, V[2] - y[2])) : "xy" === U ? (V = cc(m, y, [0, 0, 1], J), V && m.moveSelection(V[0] - y[0], V[1] - y[1], 0)) : "yz" === U ? (V = cc(m, y, [1, 0, 0], J), V && m.moveSelection(0, V[1] - y[1], V[2] - y[2])) : "x" === U || "sx" === U ? (Z[0] = 0, V = cc(m, y, Z, J), V && (d = V[0] - y[0], "x" === U ? m.moveSelection(d, 0, 0) : m.sm().each(function (i) { + Fq(i) && m.isSizeEditable(i) && (F = i.getScaleX() + d / 100, Q = F / i.getScaleX(), i.setScaleX(F), Pf(b) && (i.setScaleY(i.getScaleY() * Q), i.setScaleTall(i.getScaleTall() * Q))) + }))) : "y" === U || "sy" === U ? (Z[1] = 0, V = cc(m, y, Z, J), V && (d = V[1] - y[1], "y" === U ? m.moveSelection(0, d, 0) : m.sm().each(function (k) { + Fq(k) && m.isSizeEditable(k) && (F = k.getScaleTall() + d / 100, Q = F / k.getScaleTall(), k.setScaleTall(F), Pf(b) && (k.setScaleY(k.getScaleY() * Q), k.setScaleX(k.getScaleX() * Q))) + }))) : ("z" === U || "sz" === U) && (Z[2] = 0, V = cc(m, y, Z, J), V && (d = V[2] - y[2], "z" === U ? m.moveSelection(0, 0, d) : m.sm().each(function (n) { + Fq(n) && m.isSizeEditable(n) && (F = n.getScaleY() + d / 100, Q = F / n.getScaleY(), n.setScaleY(F), Pf(b) && (n.setScaleX(n.getScaleX() * Q), n.setScaleTall(n.getScaleTall() * Q))) + }))), !V) return; + O.p3 = V + } else if (r === nj) { + var z = O.div; + z || (z = O.div = dd(), sn(O.getView(), z), z.op = N, z.style.background = m.getRectSelectBackground()), m.fi({ + kind: m._rectSelecting ? "betweenRectSelect" : "beginRectSelect", + event: b + }), m._rectSelecting = 1, z.rect = ms(z.op, R), qp(z, z.rect) + } else if ("pinch" === r && 2 === Qj(b)) { + m.fi({ + kind: m._pinching ? "betweenPinch" : "beginPinch", + event: b + }), m._pinching = 1; + var d = zo(b); + m._lastZoomLP || (m._lastZoomLP = ne(b)), m.handlePinch(d, O.dist), O.dist = d + } else "pan" === r || Pf(b) || Fm(b) ? O.pan(b, s, w) : "none" === r || m.isFirstPersonMode() || O.rotate(b, T, M); + O.point = R + } + }, pan: function (r, G, u) { + var B = this.gv; + if (B.isPannable()) { + var H = B.getWidth(), + j = B.getHeight(); + if (!H || !j) return; + var w = B.getCenterInfo(), + e = G / H * w.width, + f = -1 * u / j * w.height; + B.fi({ + kind: B._panning ? "betweenPan" : "beginPan", + event: r + }), B._panning = 1, B.pan(-e, -f) + } + }, rotate: function (I, e, y) { + var H = this.gv; + H.isRotatable() && (H.fi({ + kind: H._rotating ? "betweenRotate" : "beginRotate", + event: I + }), H._rotating = 1, H.rotate(e, y)) + }, handleWindowMouseUp: function (G) { + this.handleWindowTouchEnd(G) + }, handleWindowTouchEnd: function (K) { + var _ = this, + u = _.gv, + g = u.dm(), + H = _.div; + if (H) { + var V = u.getDatasInRect(H.rect); + if (!V.isEmpty()) { + var n = u.sm(), + q = n.toSelection(); + V.each(function (w) { + n.co(w) ? q.remove(w) : q.add(w) + }), n.ss(q) + } + yj(H) + } + u._moving && (delete u._moving, u.fi({ + kind: "endMove", + event: K + }), u.onMoveEnded(), g.endTransaction()), u._panning && (delete u._panning, u.fi({ + kind: "endPan", + event: K + }), u.onPanEnded()), u._rotating && (delete u._rotating, u.fi({ + kind: "endRotate", + event: K + }), u.onRotateEnded()), u._86O && (delete u._86O, u.fi({ + kind: "endEditRotation", + event: K + }), g.endTransaction()), u._87O && (delete u._87O, u.fi({ + kind: "endEditScale", + event: K + }), g.endTransaction()), u._pinching && (delete u._pinching, u.fi({ + kind: "endPinch", + event: K + }), u.onPinchEnded()), u._rectSelecting && (delete u._rectSelecting, u.fi({ + kind: "endRectSelect", + event: K + }), u.onRectSelectEnded()), u._walking && (delete u._walking, u.fi({ + kind: "endWalk", + event: K + }), u.onWalkEnded()), u._lastZoomLP = u._lastZoomHit = null, _.dist = _.point = _._62O = _.p3 = _.movedata = _.div = _._57I = _.pendingClickThrough = _._32Q = _._31Q = _.foward = F, _.__lastClientPoint__ = F + } + }); + var cl = Eh.MapInteractor = function (I) { + fi(cl, this, [I]), this._keepHorizon = !0, this._threshold = 2, this._touchScaleThreshold = .05, this._touchRotateThreshold = .03, this._touchScaleCheckAccuracy = .01, this._panButton = "right", this.maxPhi = 5 * Math.PI / 12 + }; + Dn("MapInteractor", Vq, { + handle_contextmenu: function (K) { + Qc(K) + }, handle_mousewheel: function (i) { + this.gv.handleScroll(i, i.wheelDelta / 40) + }, handle_DOMMouseScroll: function (N) { + 2 === N.axis && this.gv.handleScroll(N, -N.detail) + }, handle_keydown: function (f) { + this.gv.handleKeyDown(f) + }, handle_mousedown: function (S) { + this.handle_touchstart(S) + }, handle_touchstart: function (B) { + Qc(B); + var $ = this, + e = $.gv; + if (e.setFocus(B)) { + var K = e.getDataInfoAt(B), + P = K ? K.data : F, + T = K ? K.part : F, + X = $.editing = { + point: e.lp(B) + }; + li(B) ? X.touch = !0 : (X.touch = !1, X.clickLeft = jj(B), X.pan = Fm(B) ? !0 : "left" === this.panButton === X.clickLeft), P && e._39Q(P) && (X.preventDefault = !0), Ui($, B), wm(B) ? e.handleDoubleClick(B, P, T) : e.handleClick(B, P, T) + } + }, handle_mouseup: function (b) { + this.handle_touchend(b) + }, handle_touchend: function () { }, handleWindowMouseMove: function (X) { + this.handleWindowTouchMove(X) + }, handleWindowTouchMove: function (Z) { + var Y = this, + z = Y.gv, + e = Y.editing; + if (e) { + var V = z.lp(Z), + N = e.point, + s = V.x - N.x, + o = V.y - N.y; + if (!e.moved) { + if (Math.abs(s) < Y.threshold && Math.abs(o) < Y.threshold && !(Z.touches && Z.touches.length > 1)) return; + e.moved = !0 + } + if (!e.preventDefault) + if (e.point = V, e.touch) { + var G = Z.touches.length; + if (2 !== G) Y.pan(Z, s, o); + else { + if (1 >= G) return; + var p = Z.touches, + E = { + x: p[0].clientX, + y: p[0].clientY + }, + w = { + x: p[1].clientX, + y: p[1].clientY + }, + g = { + x: w.x - E.x, + y: w.y - E.y + }, + y = e.lastCenter, + A = Math.atan2(g.y, g.x), + D = e.theta, + v = 0; + D == F ? D = e.theta = A : (v = A - D, e.thetaStarted || Math.abs(v) > Y.touchRotateThreshold ? (e.thetaStarted = !0, e.theta = A) : v = 0); + var n = W * (E.y + w.y) / 2 / z.getHeight(), + q = e.phi, + a = 0; + q == F ? q = e.phi = n : (a = n - q, e.phiStarted || Math.abs(a) > Y.touchRotateThreshold ? (e.phiStarted = !0, e.phi = n) : a = 0); + var I, b = Math.sqrt(g.x * g.x + g.y * g.y), + Q = e.vlen; + if (Q) { + var P = E.x - y.x, + h = E.y - y.y, + f = w.x - y.x, + X = w.y - y.y, + U = Math.sqrt(P * P + h * h), + x = Math.sqrt(f * f + X * X), + d = Q / 2, + R = Y._sign2(U - d), + L = Y._sign2(x - d); + 0 > R * L || 0 === R && 0 === L ? (I = 1, e.vlen = b) : (I || (I = b / Q), e.scaleStarted || Math.abs(I - 1) > Y.touchScaleThreshold ? (e.vlen = b, e.scaleStarted = !0) : I = 1) + } else Q = e.vlen = b, I = 1; + 1 !== I && z.setZoom(I), (a || v) && Y.rotate(Z, v, -a), e.lastCenter = { + x: (w.x + E.x) / 2, + y: (w.y + E.y) / 2 + } + } + } else if (e.pan) Y.pan(Z, s, o); + else { + var r = z.getWidth(), + u = z.getHeight(); + if (!r || !u) return; + var S = -$ * s / r, + l = -$ * o / u; + Y.rotate(Z, S, l) + } + } + }, _sign2: function (s) { + return Math.abs(s) < this._touchScaleCheckAccuracy ? 0 : s > 0 ? 1 : -1 + }, handleWindowMouseUp: function (H) { + this.handleWindowTouchEnd(H) + }, handleWindowTouchEnd: function (A) { + var J = this, + Q = J.editing; + if (J.editing = null, Q) { + var M = J.gv; + if (Q.moved || !Q.clickLeft && !Q.touch) M._panning = null, M._rotating = null, M.fi({ + kind: Q.pan ? "endPan" : "endRotate", + event: A + }); + else { + var u = M.getDataAt(A); + u ? M.sm().setSelection([u]) : M.sm().clearSelection() + } + } + }, pan: function (B, l, g) { + var D = this, + O = D.gv; + if (O.isPannable()) { + var n = O.getWidth(), + C = O.getHeight(); + if (n && C) { + var z = O.getCenterInfo(), + q = -l / n * z.width, + K = 1 * g / C * z.height; + O.fi({ + kind: O._panning ? "betweenPan" : "beginPan", + event: B + }), O._panning = 1; + var G = D.keepHorizon, + L = D.editing.touch; + if ((L && B.touches && B.touches.length > 1 || !L && Pf(B)) && (G = !G), !G) return O.pan(q, K); + if (q || K) { + var S = wp(O), + V = [S[0] * q, S[4] * q, S[8] * q], + P = [S[1], 0, S[9]], + m = Math.sqrt(P[0] * P[0] + P[2] * P[2]); + m && (P = [P[0] / m * K, 0, P[2] / m * K]); + var A = V[0] + P[0], + i = V[1] + P[1], + y = V[2] + P[2], + w = O._center, + r = O._eye; + w[0] += A, w[1] += i, w[2] += y, r[0] += A, r[1] += i, r[2] += y, O.fp(to, F, r), O.fp(sc, F, w) + } + } + } + }, rotate: function (K, y, N) { + var O = this, + i = O.gv; + if (i.isRotatable()) { + var q = i._center, + E = i._eye, + t = fn(E, q), + e = D(w(t[0] * t[0] + t[2] * t[2]), t[1]), + l = vg(i, e + N); + N = l - e, i.fi({ + kind: i._rotating ? "betweenRotate" : "beginRotate", + event: K + }), i._rotating = 1, i.rotate(y, N) + } + } + }), o.defineProperties(cl.prototype, { + panButton: { + get: function () { + return this._panButton + }, set: function (Z) { + this._panButton = Z + } + }, + minPhi: { + get: function () { + return this.gv.getRotateMinPhi() + }, set: function (R) { + this.gv.setRotateMinPhi(R) + } + }, + maxPhi: { + get: function () { + return this.gv.getRotateMaxPhi() + }, set: function (g) { + this.gv.setRotateMaxPhi(g) + } + }, + keepHorizon: { + get: function () { + return this._keepHorizon + }, set: function (g) { + this._keepHorizon = g + } + }, + threshold: { + get: function () { + return this._threshold + }, set: function (x) { + this._threshold = x + } + }, + touchScaleThreshold: { + get: function () { + return this._touchScaleThreshold + }, set: function (i) { + this._touchScaleThreshold = i + } + }, + touchRotateThreshold: { + get: function () { + return this._touchRotateThreshold + }, set: function (K) { + this._touchRotateThreshold = K + } + } + }); + var Ye, cq = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEyUlEQVRYR62XW0xcVRSG/58cmIG2HmstE9N4SX2xtVqBCISoFS/RmDSpKQSvTWNixUStQSqVyBQYJUGttrQVtYkPatuQPmhivMUHqbUBZ2itl1qjTzZpImNUZhDLsUeWWXgOOd2cgcGyk3mYs/de69trr70uxP8YIlJKMi0i9wIgyf0iEiM5PFdxzGeDiBQAuB7AjQBuALCN5NcGQDmANgBfeL8UyYnZ5M8KICJ3AXgAwAlfOMl/VHAQwPtveYAKuQLA2yQ/ngliRgAR2QogA2AvSdcUZAIE50VEYR4BsIDkC7kgQgFE5GIAuwDsJnkk1+aZAPw9IqLX1gjgcZK/m7KmAXjK4wBaSf4ZplxEIgCuA3Cz3gSAfgDHSf6dY/0FAJ4D0G5ChAEcAPBwmHIRqXNd90nLsiocx/k+k8n8oK/Atu2rIpHIStd1v7QsawfJd0Ouywawh6T609Q4B8C788NhZnddt29sbGxBd3f39q6urtNhJ43H48uam5u3lJSUjFiWdV8IxE0Aqki+6M9NAXjefjnJXsOZogBGBgYGttbU1Hw427PS+cHBwbVVVVUJAItJOoa8xwD8RPIT/T4J4L3zfQAeNL1dRMZra2ur+/v7/8pHub+mvr7+wr6+vs8KCgoWGABFAN4EsEHjhA9QBeA2ks8HF6vZk8nkQL4nNwGTyeTa8vLycsuy7jcg1Mk/IpnyAZoBaOQ6FHg+ddlsdqNt201zObm5NpvN7ly0aNHrJN8LyL4FwGqSr/gAOrnej3C60HXdw/F4PJ7L4fKFSiQSl7W0tLQVFRWtCQDoNRwguZ6aWABcorE9sEDf+QjJ1fkqmmmdiHwHoCToXyKiceR0rkhY5TjOq9FoVLPdeY/x8fG+SCSySe/cFKYWCFOyPJ1Or4zFYh3nrR3A8PBwe2lp6TcAfg4DmBYwAFyRTqdXxWKx9nkE+DYUIEyBiFQ6jvNaNBq9Zz4AZruCGIBlJI8ZXpolee18AORwwgoAp/xnqMmjPuilZ8+ePZRIJNo7OztD436+YB0dHZe2trY+W1hYWGsccD/JOh/gKQBHSWpanRwicnc2m91k2/bmfJWFrRsdHd29cOHCXSTfD8i+FcA1JHcEQ/HtJDVnTw3XdfcPDQ0dra6unto8F5hUKrWurKxslWVZG4L7RGQbgA9IDgWT0VsANprJaGJi4kxDQ8OagwcPjsxFeWNj49Le3l6N91qMTA2vmNnr6fovGXkmvxPAlST3hGz4LZVKbausrMzLEnryioqKNpJLzCpJRJ4AcJLkp6rHLEieBjBA8rB5Wtd1942NjS3p6el5qa2t7VSYNdThmpqaWoqLi38xze4dUku4CpLb/f1hJZnWBY+SzJpKRGSdV5LVOI5zIpPJnNQ1tm2viEQiV7uue8SyrJeDDhew8GIAO0me4w9hABdp8ahNBkktyacNr+Qu84pSndfX81VY6e6dXJV3AoiT/CMoMFcyUogeAG+Q/DyX8+VZlqvZHwKw2VQ+zQdCTL4FwBkPZFrJPUtjoildG5PC4J2bOvJpze7QWhHAj4HWbBImpDXTQsPvH5cDeMf39lxWnBXAU6TNqcZu7fn0lyB53GhOdf6ZQHN6bF6a0xxOuJTkrwbA5LdcJ831/V8SOUYQxYGhRwAAAABJRU5ErkJggg==", + Hq = 32, + Zg = Eh.GlobeInteractor = function (J, L) { + fi(Zg, this, [J]); + var S, b = L.radius || 6378137, + x = this, + Y = null; + Ye || (Ye = dd(), Ye.style.border = "", Ye.style.backgroundImage = "url(" + cq + ")"); + var N = new fs, + U = new tl, + Q = new tl, + R = new tl, + H = new Qi, + c = "number" == typeof b ? { + x: b, + y: b, + z: b + } : b, + G = { + center: new tl(0, 0, 0), + radius: c + }, + t = function (S) { + J._81O = null; + var P = J.getHitPosition(S, J.getCenter(), U.copy(J.getEye()).sub(Q.copy(J.getCenter())).toArray()); + return H.origin.copy(J.getEye()), H.direction.copy(P).sub(H.origin).normalize(), H.intersectEllipsoid(G) + }, + h = function (N, M) { + J._81O = null, H.origin.copy(J.getEye()); + for (var V, b, L = J.getCenter(), d = U.copy(J.getEye()).sub(Q.copy(J.getCenter())).toArray(), X = 1, e = 16, K = 0, v = 1, B = { + x: 0, + y: 0 + }; e--;) { + if (B.x = M.x + (N.x - M.x) * X, B.y = M.y + (N.y - M.y) * X, V = J.getHitPosition(B, L, d), H.direction.copy(V).sub(H.origin).normalize(), b = H.intersectEllipsoid(G), b && 1 === X) return { + hit: b + }; + b ? K = X : v = X, X = (K + v) / 2 + } + return { + hit: b, + out: 1 > X + } + }, + s = function (M, S) { + if (Y) { + var n = Date.now(); + Y.deltaTime = Y.lastTime ? n - Y.lastTime : 1e3, Y.lastTime = n, Y.lastAxis = M, Y.lastAngle = S + } + S && (N.setFromAxisAngle(M, S), J.setEye(U.copy(J.getEye()).applyQuaternion(N).toArray()), J.setCenter(U.copy(J.getCenter()).applyQuaternion(N).toArray()), J.setUp(U.copy(J.getUp()).applyQuaternion(N).toArray())) + }; + x._showCrossIcon = function (g) { + sn(x.getView(), Ye), qp(Ye, { + x: g.clientX - Hq / 2, + y: g.clientY - Hq / 2, + width: Hq, + height: Hq + }) + }, x._hideCrossIcon = function () { + yj(Ye) + }, x._scrollImpl = function (p, X) { + Y = { + point: J.lp(p), + screen: lb(p), + hit: t(p), + type: "right" + }, Y.hitNormalize = Y.hit ? Y.hit.clone().normalize() : new tl; + var G = { + clientX: Y.screen.x, + clientY: Y.screen.y + 10 * X + }; + x._handleMoveImpl(G), x._endMoveImpl(G) + }, x._startMoveImpl = function (o) { + S && (S.stop(!0), S = null), Y = { + point: J.lp(o), + screen: lb(o), + hit: t(o) + }, Y.hitNormalize = Y.hit ? Y.hit.clone().normalize() : new tl, li(o) ? 1 === o.touches.length ? Y.hit && (Y.type = "left") : 2 === o.touches.length && (Y.type = "touch2") : (jj(o) ? Y.hit && (Y.type = "left") : tk(o) ? Y.type = "right" : Fm(o) && Y.hit && (Y.type = "middle"), !Y.hit || "right" !== Y.type && "middle" !== Y.type || x._showCrossIcon(o)), Y.type && Ui(x, o) + }, x._handleMoveImpl = function (c) { + if (Y) switch (Y.type) { + case "left": + return x._handleLeft(c); + case "right": + return x._handleRight(c); + case "middle": + return x._handleMiddle(c); + case "touch2": + return x._handleTouch2(c) + } + }, x._endMoveImpl = function () { + if (Y) { + if (this._hideCrossIcon(), "left" === Y.type || "middle" === Y.type) { + var q = 1e3 * (Y.lastAngle / (Y.deltaTime || 30)), + B = Y.lastAxis, + j = Y.lastTime, + m = function () { + var P = Date.now(), + l = (P - j) / 1e3; + return j = P, q *= Math.pow(Math.abs(x.decelerationRate), 3 * l), Math.abs(q) < .01 ? (q = 0, S && S.stop(), void 0) : (s(B, q * l), void 0) + }; + S = Sf({ + action: function () { + m(arguments) + }, duration: 5e3 + }) + } + Y = null + } + }, x._handleLeft = function (c) { + if (!Y.finished) { + var Z = lb(c), + J = h(Z, Y.lastScreen || Y.screen); + if (Y.lastScreen = Z, !J.hit) return Y.finished = !0, x._endMoveImpl(c), void 0; + var d = J.hit; + d.normalize(); + var C = Y.hitNormalize, + I = Math.acos(d.dot(C)), + z = d.cross(C).normalize(); + s(z, I), J.out && (Y.finished = !0, x._endMoveImpl(c)) + } + }, x._handleRight = function (b) { + var k = Y.lastScreen || Y.screen, + E = k.y; + k = Y.lastScreen = lb(b); + var B = k.y, + f = B - E; + if (f) { + var m = Math.min(.5, f * x.scaleSpeed); + U.copy(J.getEye()); + var d = Y.hit; + d || (d = U.clone().divide(c).normalize().multiply(c)), Q.copy(U).lerp(d, m), J.setEye(Q.toArray()), U.copy(J.getUp()), Q.normalize(); + var G = U.clone().cross(Q).normalize(); + if (R.copy(J.getCenter()), R.sub(G.multiplyScalar(R.dot(G))), J.setCenter(R.toArray()), Y.hit) { + var W = t(Y.screen), + g = Y.hitNormalize; + if (W) { + W.normalize(); + var V = Math.acos(W.dot(g)), + T = W.cross(g).normalize(); + V && s(T, V) + } + } + } + }; + var _ = function (C) { + return Math.abs(C) < .01 ? 0 : C > 0 ? 1 : -1 + }; + x._handleTouch2 = function (M) { + var i = M.touches.length; + if (2 === i) { + var f = M.touches, + $ = { + x: f[0].clientX, + y: f[0].clientY + }, + j = { + x: f[1].clientX, + y: f[1].clientY + }, + l = { + x: j.x - $.x, + y: j.y - $.y + }, + v = Y.lastCenter, + g = Math.atan2(l.y, l.x), + n = Y.theta, + z = 0; + n == F ? n = Y.theta = g : (z = g - n, Y.thetaStarted || Math.abs(z) > .03 ? (Y.thetaStarted = !0, Y.theta = g) : z = 0); + var P, D = Math.sqrt(l.x * l.x + l.y * l.y), + p = Y.vlen; + if (p) { + var X = $.x - v.x, + t = $.y - v.y, + c = j.x - v.x, + y = j.y - v.y, + K = Math.sqrt(X * X + t * t), + d = Math.sqrt(c * c + y * y), + L = p / 2, + u = _(K - L), + x = _(d - L); + 0 > u * x || 0 === u && 0 === x ? (P = 1, Y.vlen = D) : (P || (P = D / p), Y.scaleStarted || Math.abs(P - 1) > .05 ? (Y.vlen = D, Y.scaleStarted = !0) : P = 1) + } else p = Y.vlen = D, P = 1; + var l = Q.copy(J.getEye()).clone(); + 1 !== P && J.setEye(l.setLength((l.length() - b) / P + b).toArray()), z && s(l.normalize(), z), Y.lastCenter = { + x: (j.x + $.x) / 2, + y: (j.y + $.y) / 2 + } + } + }, x._handleMiddle = function (M) { + var v = lb(M), + g = Y.screen; + Y.screen = v; + var P = (v.y - g.y) / 180 * Math.PI * x.rollSpeed; + Q.copy(J.getCenter()).sub(U.copy(J.getEye())).normalize(), U.copy(J.getUp()).cross(Q).normalize(), Q.copy(J.getEye()).sub(Y.hit).applyAxisAngle(U, P).add(Y.hit); + var u = Q.clone(); + Q.copy(J.getCenter()).sub(Y.hit).applyAxisAngle(U, P).add(Y.hit); + var Z = Q.clone(), + q = Q.copy(J.getUp()).applyAxisAngle(U, P).clone(), + j = !1; + P > 0 && (R.copy(q), Q.copy(Z).sub(u).normalize(), U.copy(u).multiplyScalar(-1).normalize(), U.dot(R) - Q.dot(R) > 0 && (j = !0)), j || R.copy(Y.hit).sub(u).dot(Y.hitNormalize) >= 0 && (j = !0), j || (J.setEye(u.toArray()), J.setCenter(Z.toArray()), J.setUp(q.toArray())); + var l = -(v.x - g.x) / 180 * Math.PI * x.rotateSpeed; + s(Y.hitNormalize, l) + } + }; + Dn("GlobeInteractor", Vq, { + handle_contextmenu: function (i) { + Qc(i) + }, handle_mousewheel: function (y) { + this._scrollImpl(y, y.wheelDelta / 40) + }, handle_DOMMouseScroll: function (E) { + 2 === E.axis && this._scrollImpl(E, -E.detail) + }, handle_keydown: function (g) { + this.gv.handleKeyDown(g) + }, handle_mousedown: function (A) { + this.handle_touchstart(A) + }, handle_touchstart: function (K) { + Qc(K); + var k = this.gv; + if (k.setFocus(K)) { + var E = k.getDataInfoAt(K), + P = E ? E.data : F; + P && k.isInteractive(P) || this._startMoveImpl(K); + var Y = E ? E.part : F; + wm(K) ? k.handleDoubleClick(K, P, Y) : k.handleClick(K, P, Y) + } + }, handle_mouseup: function (h) { + this.handle_touchend(h) + }, handle_touchend: function () { }, handleWindowMouseMove: function (n) { + this.handleWindowTouchMove(n) + }, handleWindowTouchMove: function (d) { + this._handleMoveImpl(d) + }, handleWindowMouseUp: function (p) { + this.handleWindowTouchEnd(p) + }, handleWindowTouchEnd: function (G) { + this._endMoveImpl(G) + } + }), o.defineProperties(Zg.prototype, { + rotateSpeed: { + get: function () { + return this._rotateSpeed || .3 + }, set: function (u) { + this._rotateSpeed = u + } + }, + rollSpeed: { + get: function () { + return this._rollSpeed || .1 + }, set: function (e) { + this._rollSpeed = e + } + }, + scaleSpeed: { + get: function () { + return this._scaleSpeed || .002 + }, set: function (x) { + this._scaleSpeed = x + } + }, + decelerationRate: { + get: function () { + return this._decelerationRate || .04 + }, set: function (M) { + this._decelerationRate = M + } + } + }); + var rl = function (b) { + var G = 2147483648 | b; + return [(255 & G >> 16) / 255, (255 & G >> 8) / 255, (255 & G) / 255, (255 & G >> 24) / 255] + }, + qo = function (J) { + this.gv = J, this.gv.pickColorMap = { + _pickIdUsed: 1e3 + } + }; + yc(qo, o, { + _iv: !0, + iv: function () { + this._iv = !0 + }, get: function (y, $) { + this.validate(); + var j = this, + l = j.gv.getGL(); + if (!l) return F; + var o, N, d = j._resolution, + U = Math.round(y.x * d), + S = Math.ceil(y.width * d), + M = Math.ceil(y.height * d), + s = j.height - Math.round(y.y * d) - M, + b = T(S / 2), + g = new Uint8Array(4 * S * M), + R = 0, + X = g.length, + J = $ ? F : new xr, + x = $ ? F : {}; + if (So(l, j.frame), l.readPixels(U, s, S, M, l.RGBA, l.UNSIGNED_BYTE, g), Ar(l), $) { + for (; b >= R; R++) + for (var u = b - R, O = b + R, D = u; O >= D; D++) + for (var A = u; O >= A; A++) + if ((D === u || D === O || A === u || A === O) && (o = j.info(g, 4 * (D * S + A)))) return o + } else + for (; X > R; R += 4) o = j.info(g, R), o && (N = o.data, x[N._id] || (J.add(N), x[N._id] = N)); + return J + }, info: function (Q, D) { + return this.gv.pickColorMap[(Q[D] << 16) + (Q[D + 1] << 8) + Q[D + 2] + ((127 & Q[D + 3]) << 24)] + }, getResolution: function () { + return this._resolution + }, onContextLost: function () { + this.texture = null, this.width = this.height = -1 + }, validate: function () { + var U = this, + d = U.gv, + r = d.getGL(); + if (r) { + var I = U._resolution = d._pickerResolution * d.getDevicePixelRatio(), + y = Math.round(I * d.getWidth()), + D = Math.round(I * d.getHeight()), + k = r.RGBA, + X = r.TEXTURE_2D, + H = r.RENDERBUFFER, + K = r.FRAMEBUFFER; + if (U.texture || (U.texture = rg(r), U.render = r.createRenderbuffer(), U.frame = r.createFramebuffer()), (U.width !== y || U.height !== D) && (r.activeTexture(r.TEXTURE0), an(r, U.texture), r.texImage2D(X, 0, k, y, D, 0, k, r.UNSIGNED_BYTE, F), Lr(r, r.TEXTURE_MIN_FILTER, r.LINEAR), r.bindRenderbuffer(H, U.render), r.renderbufferStorage(H, r.DEPTH_COMPONENT16, y, D), So(r, U.frame), r.framebufferTexture2D(K, r.COLOR_ATTACHMENT0, X, U.texture, 0), r.framebufferRenderbuffer(K, r.DEPTH_ATTACHMENT, H, U.render), an(r, F), r.bindRenderbuffer(H, F), Ar(r), U.width = y, U.height = D), U._iv) { + U._iv = !1; + var C = !1; + d._40Q.each(function (a) { + !C && a.isBatchInvalid() && (C = !0) + }), C && d.updateScene(), So(r, U.frame), r.clear(r.COLOR_BUFFER_BIT), d.overlappingBox.clear(), d.setViewport(r, 0, 0, y, D), d.renderPickScene(), Ar(r) + } + } + } + }); + var Le = function (W) { + this.gv = W + }; + yc(Le, o, { + gap: 0, + size: 0, + _42: function (O, r) { + var x = this, + N = x.gv, + t = N._gridGap, + L = N._gridSize; + if (N._gridVisible) { + if (x.gap !== t || x.size !== L) { + for (var i = [], Y = N._gridSize / 2, d = t * Y, o = 0; 2 * Y + 1 > o; o++) { + var s = 6 * o, + B = 6 * (2 * Y + 1) + s; + i[s] = -d, i[s + 1] = 0, i[s + 2] = -d + o * t, i[s + 3] = d, i[s + 4] = 0, i[s + 5] = -d + o * t, i[B] = -d + o * t, i[B + 1] = 0, i[B + 2] = -d, i[B + 3] = -d + o * t, i[B + 4] = 0, i[B + 5] = d + } + x.vs = new fk(i), x.gap = t, x.size = L + } + gk(N), _k(O, r), bi(O), ck(O, r, 1, N._gridColor, N._buffer.vs, x.vs), ie(O, 0, x.vs.length / 3, O.LINES), Jf(O), On(O, r) + } else x.vs = x.gap = x.size = F + } + }); + var ap = function (L) { + this.gv = L + }; + yc(ap, o, { + _42: function (p, U) { + var s = this.gv, + y = s._buffer.vs, + f = s._axisXColor, + o = s._axisYColor, + O = s._axisZColor, + $ = s._originAxisVisible, + n = s._centerAxisVisible; + if ($ || n) { + var B = Uq ? p.TRIANGLES : p.TRIANGLE_FAN, + R = p.LINES; + if (gk(s), _k(p, U), bi(p), $) { + var D = s.getCenterInfo(), + b = V(D.width, D.height) / 5, + t = .8 * b, + W = .05 * b; + ck(p, U, 1.5, f, y, new fk([0, 0, 0, b, 0, 0, t, W, 0, t, 0, W, t, -W, 0, t, 0, -W, t, W, 0, 0, 0, 0, 0, b, 0, W, t, 0, 0, t, W, -W, t, 0, 0, t, -W, W, t, 0, 0, 0, 0, 0, 0, b, W, 0, t, 0, W, t, -W, 0, t, 0, -W, t, W, 0, t])), ie(p, 0, 2, R), ie(p, 1, 6, B), ck(p, U, F, o), ie(p, 7, 2, R), ie(p, 8, 6, B), ck(p, U, F, O), ie(p, 14, 2, R), ie(p, 15, 6, B) + } + if (n) { + var z = s._center, + J = z[0], + Q = z[1], + P = z[2], + D = s.getPositionInfo(z); + b = V(D.width, D.height) / 20, ck(p, U, 1.5, f, y, new fk([J, Q, P, J + b, Q, P, J, Q, P, J, Q + b, P, J, Q, P, J, Q, P + b])), ie(p, 0, 2, R), ck(p, U, F, o), ie(p, 2, 2, R), ck(p, U, F, O), ie(p, 4, 2, R) + } + Jf(p), On(p, U) + } + } + }); + var ui = function (B) { + this.gv = B, this.onMouseOver = this.onMouseOver.bind(this), this.mode = ui.Mode.Style, this.color = Z, this.width = Z + }; + ui.Mode = { + Disable: 0, + Selection: 1, + MouseOver: 2, + Style: 3 + }, yc(ui, o, { + onMouseOver: function (P) { + u.preventDefault(P); + var Q = this.gv.getDataAt(P); + Q !== this.mouseOverData && (this.mouseOverData = Q, this.gv.iv()) + }, setFetchTargetFunc: function (f) { + this.fetchTargetFunc = f + }, _42: function (y, W) { + var D, z, t = this, + H = t._mode, + E = t.gv; + if (!y._renderInfo.reflectDepth && H !== ui.Mode.Disable) { + if (H === ui.Mode.Selection ? D = E.sm().getSelection().toArray(function (c) { + return c.s("highlight.visible") + }) : H === ui.Mode.MouseOver && t.mouseOverData && t.mouseOverData.s("highlight.visible") && (D = [t.mouseOverData]), t.fetchTargetFunc && (D = t.fetchTargetFunc(D)), H === ui.Mode.Style) D = D || [], z = function (V) { + if (D.indexOf(V) >= 0) return !1; + var O = E.getDataHighlightMode(V); + return O === !1 ? !0 : O === !0 ? !1 : "selected" === O ? E.isSelected(V) ? !1 : !0 : "hover" === O ? V === t.mouseOverData ? !1 : !0 : !0 + }; + else { + if (!D || !D.length) return; + z = function (m) { + return D.indexOf(m) < 0 ? !0 : void 0 + } + } + var E = t.gv, + N = E.vr.isPresenting(), + I = E.getWidth(); + if (N) { + var x = E.getWidth; + I /= 2, E.getWidth = function () { + return I + }; + var S = E.getViewport() + } + var O, B = E.getDevicePixelRatio(), + R = I * B, + K = E.getHeight() * B; + (O = t._renderTarget) ? O.setSize(y, R, K) : t._renderTarget = O = new Eh.RenderTarget(E, y, R, K), So(y, O.frame), y.clear(y.COLOR_BUFFER_BIT), E.setViewport(y, 0, 0, R, K); + var A = []; + D.forEach(function (j) { + var S = j.getRenderLayer(); + A.indexOf(S) < 0 && A.push(S) + }), E.drawFilter = z, E.renderPickScene(), E.drawFilter = null, Ar(y), Uq && Rg(y, W.aPosition), Rg(y, W.aNormal), N && (E.getWidth = x, E.setViewport(y, S[0], S[1], S[2], S[3])); + var Z = y._compiledShader.highlight; + Z || (Z = y._compiledShader.highlight = new Cm.Shader(y, hj.vs, hj.fs)), Z.bind(); + var M = ts.for(y), + P = M.directState(); + P.blend.enabled = !0, y.activeTexture(y.TEXTURE0 + 0), an(y, O.texture), Z.uniforms.image = 0, Z.uniforms.textureSize = [R, K], Z.uniforms.edgeWidth = E.getHighlightWidth(); + var d = E.getHighlightColor(); + if (t._lastHighlightColor !== d) { + var g = zd(t._lastHighlightColor = d); + t._highlightColorData = [g[0] / 255, g[1] / 255, g[2] / 255, g[3] / 255] + } + Z.uniforms.edgeColor = t._highlightColorData, t.ibuffer ? (t.ibuffer.upload(), t.vbuffer.upload()) : (t.ibuffer = Cm.Buffer.createIndexBuffer(y, new Uint16Array([0, 2, 1, 1, 2, 3])), t.vbuffer = Cm.Buffer.createVertexBuffer(y, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]))), Z.attributes.pos.pointer(t.vbuffer), y.drawElements(y.TRIANGLES, 6, y.UNSIGNED_SHORT, 0), P.blend.enabled = !1, an(y, null), y.useProgram(W), Uq && Pr(y, W.aPosition) + } + } + }), o.defineProperties(ui.prototype, { + mode: { + get: function () { + return this._mode + }, set: function (d) { + var q = this._mode; + d !== q && (this._mode = d, d === ui.Mode.MouseOver || d === ui.Mode.Style ? K(this.gv.getView(), "mousemove", this.onMouseOver) : (q === ui.Mode.MouseOver || q === ui.Mode.Style) && b(this.gv.getView(), "mousemove", this.onMouseOver)) + } + } + }); + var hj = { + vs: ["attribute vec2 pos;", "varying vec2 vUv;", "void main(void) {", "gl_Position = vec4(pos.x * 2.0 - 1.0, -pos.y * 2.0 + 1.0, 0.0, 1.0);", "vUv = vec2(pos.x, 1.0 - pos.y);", "}"].join("\n"), + fs: ["precision highp float;", "uniform sampler2D image;", "uniform vec2 textureSize;", "uniform float edgeWidth;", "uniform vec4 edgeColor;", "varying vec2 vUv;", "float getCol(vec2 coord) {", "return texture2D(image, coord).a;", "}", "void main() {", "vec2 cc = vUv;", "float center = getCol(cc);", "float dx = edgeWidth / textureSize.x;", "float dy = edgeWidth / textureSize.y;", "vec2 coord;", "float topLeft = getCol(cc+vec2(-dx, -dy));", "float top = getCol(cc+vec2(0.0, -dy));", "float topRight = getCol(cc+vec2(dx, -dy));", "float left = getCol(cc+vec2(-dx, 0.0));", "float right = getCol(cc+vec2(dx, 0.0));", "float bottomLeft = getCol(cc+vec2(-dx, dy));", "float bottom = getCol(cc+vec2(0.0, dy));", "float bottomRight = getCol(cc+vec2(dx, dy));", "float v = -topLeft-2.0*top-topRight+bottomLeft+2.0*bottom+bottomRight;", "float h = -bottomLeft-2.0*left-topLeft+bottomRight+2.0*right+topRight;", "float edge = sqrt(h * h + v * v);", "edge = smoothstep(0.9, 1.0, edge);", "if (edge < 0.5) {", "discard;", "}", "gl_FragColor = edgeColor;", "}"].join("\n") + }, + Rk = function (E) { + this.gv = E + }, + Zo = "edit_tx", + te = "edit_ty", + ll = "edit_tz", + Pg = "edit_rx", + hb = "edit_ry", + pn = "edit_rz", + zb = "edit_sx", + Oh = "edit_sy", + dh = "edit_sz", + Nr = {}; + Nr[Zo] = 101, Nr[te] = 102, Nr[ll] = 103, Nr[Pg] = 104, Nr[hb] = 105, Nr[pn] = 106, Nr[zb] = 107, Nr[Oh] = 108, Nr[dh] = 109, yc(Rk, o, { + _42: function (l, K, m) { + var i = this, + N = i.gv, + a = N.sm().ld(); + if (a && N.isEditable(a) && !N.isEditHelperDisabled() && Fq(a) && (!N.isFirstPersonMode() || !N.isMouseRoamable() && !nf)) { + gk(N); + var F, $, T = N.isMovable(a), + I = N.isRotationEditable(a), + x = N.isSizeEditable(a), + V = N._axisXColor, + W = N._axisYColor, + S = N._axisZColor, + j = N._editSizeColor, + A = a.p3(), + B = En(N.getEye(), A) / 10, + c = B / (m ? 5 : 10), + H = .7 * B, + X = .4 * H, + u = A[0], + d = A[1], + Y = A[2]; + F = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0], T && i._17O(l, K, a, m, Zo, V, F, [u, d - c, Y, u + H, d - c, Y, u + H, d, Y, u + H, d, Y, u, d, Y, u, d - c, Y, u, d - c, Y + c, u + H, d - c, Y + c, u + H, d - c, Y, u + H, d - c, Y, u, d - c, Y, u, d - c, Y + c]), $ = u + H, x && i._17O(l, K, a, m, zb, j, F, [$, d - c, Y, $ + X, d - c, Y, $ + X, d, Y, $ + X, d, Y, $, d, Y, $, d - c, Y, $, d - c, Y + c, $ + X, d - c, Y + c, $ + X, d - c, Y, $ + X, d - c, Y, $, d - c, Y, $, d - c, Y + c]), $ += X, I && i._17O(l, K, a, m, Pg, V, F, [$, d - c, Y, $ + X, d - c, Y, $ + X, d, Y, $ + X, d, Y, $, d, Y, $, d - c, Y, $, d - c, Y + c, $ + X, d - c, Y + c, $ + X, d - c, Y, $ + X, d - c, Y, $, d - c, Y, $, d - c, Y + c]), F = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0], T && i._17O(l, K, a, m, te, W, F, [u, d, Y, u, d + H, Y, u - c, d + H, Y, u - c, d + H, Y, u - c, d, Y, u, d, Y, u, d, Y, u, d, Y - c, u, d + H, Y - c, u, d + H, Y - c, u, d + H, Y, u, d, Y]), $ = d + H, x && i._17O(l, K, a, m, Oh, j, F, [u, $, Y, u, $ + X, Y, u - c, $ + X, Y, u - c, $ + X, Y, u - c, $, Y, u, $, Y, u, $, Y, u, $, Y - c, u, $ + X, Y - c, u, $ + X, Y - c, u, $ + X, Y, u, $, Y]), $ += X, I && i._17O(l, K, a, m, hb, W, F, [u, $, Y, u, $ + X, Y, u - c, $ + X, Y, u - c, $ + X, Y, u - c, $, Y, u, $, Y, u, $, Y, u, $, Y - c, u, $ + X, Y - c, u, $ + X, Y - c, u, $ + X, Y, u, $, Y]), F = [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0], T && i._17O(l, K, a, m, ll, S, F, [u, d, Y, u, d, Y + H, u, d - c, Y + H, u, d - c, Y + H, u, d - c, Y, u, d, Y, u, d - c, Y, u - c, d - c, Y, u - c, d - c, Y + H, u - c, d - c, Y + H, u, d - c, Y + H, u, d - c, Y]), $ = Y + H, x && i._17O(l, K, a, m, dh, j, F, [u, d, $, u, d, $ + X, u, d - c, $ + X, u, d - c, $ + X, u, d - c, $, u, d, $, u, d - c, $, u - c, d - c, $, u - c, d - c, $ + X, u - c, d - c, $ + X, u, d - c, $ + X, u, d - c, $]), $ += X, I && i._17O(l, K, a, m, pn, S, F, [u, d, $, u, d, $ + X, u, d - c, $ + X, u, d - c, $ + X, u, d - c, $, u, d, $, u, d - c, $, u - c, d - c, $, u - c, d - c, $ + X, u - c, d - c, $ + X, u, d - c, $ + X, u, d - c, $]) + } + }, _17O: function (p, n, u, R, w, V, N, t) { + var g = this.gv, + D = g._buffer, + f = ts.for(p), + S = f.directUniforms(), + l = f.directAttribs(); + if (g._picking) { + R = g.pickColorMap; + var k = Nr[w]; + R[k] = { + data: u, + part: w + }, S.uFixPickReverseColor = rl(k) + } + Ll(p, n, F, !0, F, !0, F, !1), S.uDiffuse = V, l.aPosition = bm(p, D.vs, new fk(t), F), l.aNormal = bm(p, D.ns, new fk(N), F), bi(p), ie(p, 0, 12), Jf(p), ol(p, n) + } + }); + var Vf = O.Raycaster = function ($) { + this.gv = $, this.maxTriangleTest = 1 / 0, this.backfaceCulling = !0 + }; + ki("Raycaster", o, { + intersect: function (u) { + var A = this, + x = A.gv, + F = x.getDataAt(u); + return F ? A.intersectObject(u, F) : null + }, intersectObjects: function (F, R, A) { + var X, y, G, i, B = this, + _ = 1 / 0, + q = F.origin || (new tl).fromArray(B.gv.getEye()), + V = B.maxTriangleTest, + E = []; + return R.forEach(function ($) { + A && A($) === !1 || $.s("intersect") !== !1 && E.push($) + }), E.sort(function (o, P) { + return q.distanceToSquared2(o.p3()) - q.distanceToSquared2(P.p3()) + }), B.countTriangles = 0, E.forEach(function (T) { + B.countTriangles > V || (X = B.intersectObject(F, T), X && (y = q.distanceToSquared(X.world), _ > y && (G = T, i = X, _ = y))) + }), B.countTriangles = 0, { + data: G, + intersect: i + } + }, intersectObject: function (e, a) { + if (e instanceof Qi) return this._intersectObjectImpl(e, a); + var U = this, + X = U.gv, + d = X.unproject(e), + S = new tl, + G = X.getEye(), + C = new tl; + if (X.isOrtho()) { + var s = new tl(G); + C.copy(X.getCenter()).sub(s).normalize(); + var p = S.copy(d).sub(s).dot(C); + S.copy(C).setLength(-p).add(s.copy(d)) + } else S.copy(G), C.copy(d).sub(S).normalize(); + var f = new O.Math.Ray(S, C); + return U._intersectObjectImpl(f, a) + }, _intersectObjectImpl: function () { + function M() { + var s = new tl; + return s.subVectors(F, g), I.subVectors(x, g), s.cross(I).normalize(), s + } + + function r(R, U, a, d, r, $, i) { + return pq.barycoordFromPoint(R, U, a, d, c), r.multiplyScalar(c.x), $.multiplyScalar(c.y), i.multiplyScalar(c.z), r.add($).add(i), r.clone() + } + var j = new br, + z = new br, + s = new Qi, + A = new tl, + b = new tl, + w = new tl, + y = new tl, + v = new tl, + x = new tl, + g = new tl, + F = new tl, + $ = new Xi, + h = new Xi, + L = new Xi, + I = new tl, + B = { + vs: Ef, + is: Lq, + uv: mi + }, + c = new tl, + d = Rh.slice(0); + return d.push("csg"), + function (p, c) { + var e = this.gv.getData3dUI(c), + V = c.mat || e.mat; + V ? j.fromArray(V) : j.identity(), z.getInverse(j), s.copy(p).applyMatrix4(z); + var a, n, J, W = "body", + Z = e.shapeModel; + if (Z || (Z = bf(e)), Z || (O.CSGNode && c instanceof O.CSGNode || O.CSGShape && c instanceof O.CSGShape ? (J = !0, Z = [e.left, e.front, e.right, e.back, e.top, e.bottom, e.csg]) : c instanceof O.Node && !(c instanceof O.Shape) ? (a = !0, Z = B) : (n = !0, Z = [e.left, e.front, e.right, e.back, e.top, e.bottom])), !Z) return console.log("Can not find shape model."), null; + ip(Z) || (Z = [Z]); + var P, u, _, q, H, G, E, m, o, Q, D, t, U, R, i, I, S = 1 / 0, + X = ["", "top_", "bottom_"], + k = !1, + C = this.backfaceCulling, + T = []; + for ($p(Z, e, T), P = 0, u = T.length; u > P; P++) + if (U = T[P]) + for (_ = 0, q = X.length; q > _; _++) + if (R = X[_], E = U[R + "vs"], m = U[R + "is"], o = U[R + "uv"] || U[R + "tuv"], E) { + if (i = U[R + "boundingBox"]) { + var D = s.intersectBox(i); + if (!D) continue; + if (s.origin.distanceTo(D) > S) continue; + I = !1 + } else U[R + "boundingBox"] = i = new O.Math.Box3, I = !0; + for (H = 0, G = m ? m.length : E.length / 3; G > H; H += 3) this.countTriangles++, m ? (b.fromArray(E, 3 * m[H]), w.fromArray(E, 3 * m[H + 1]), y.fromArray(E, 3 * m[H + 2])) : (b.fromArray(E, 3 * H), w.fromArray(E, 3 * (H + 1)), y.fromArray(E, 3 * (H + 2))), I && (i.expandByPoint(b), i.expandByPoint(w), i.expandByPoint(y)), Q = s.intersectTriangle(b, w, y, C, A), Q && (t = s.origin.distanceTo(Q), S > t && (S = t, v.copy(Q), x.copy(b), g.copy(w), F.copy(y), "" !== R ? W = R.slice(0, -1) : a ? W = Rh[Math.floor(H / 6)] : n ? W = Rh[P] : J && (W = d[P]), o && (k = !0, m ? ($.fromArray(o, 2 * m[H]), h.fromArray(o, 2 * m[H + 1]), L.fromArray(o, 2 * m[H + 2])) : ($.fromArray(o, 2 * H), h.fromArray(o, 2 * (H + 1)), L.fromArray(o, 2 * (H + 2)))))) + } + if (!isFinite(S)) return null; + var N, f = v.clone().applyMatrix4(j); + k && (N = r(v, x, g, F, $, h, L)); + var K = M(x, g, F), + Y = M(x.applyMatrix4(j), g.applyMatrix4(j), F.applyMatrix4(j)), + l = s.direction.dot(K); + return l > 0 && (K.multiplyScalar(-1), Y.multiplyScalar(-1)), { + world: f, + local: v.clone(), + worldNormal: Y, + normal: K, + uv: N, + part: W + } + } + }() + }); + var Wj = function (H, q) { + this.gv = H, this.s = function (b, u, o) { + return u == F && (u = o), u == F ? q.getStyle(b) : Dj(u, q, H) + }, this.data = q + }; + yc(Wj, o, { + I3d: !0, + ms_icons: 1, + _iv: !0, + _cacheBoundingBox: Z, + iv: function () { + this._iv = !0 + }, update: function (U, e, M) { + var Y = this, + j = Y.data; + if (U || (U = Y.gv, e = U.getGL(), M = e._40Q), !Y.needValidate(e) || !U.isVisible(j)) return M.push(this, !1), void 0; + var l, z, x, s, R, O = j._id, + L = Y.s("autorotate") || Y.s("shape3d.autorotate") || Y.s("fixSizeOnScreen") || Y.s("shape3d.fixSizeOnScreen") ? null : Y.s("batch"), + A = j.getRenderLayer(), + T = M.get(A, !0), + G = T.batchIndexMap, + r = T.batchModelMap, + W = U.getBrightness(j), + V = W != F && 1 !== W; + l = Qr(G, r, j, L, U); + var B = Y.validate(l, L ? U.getBatchInfo(L) || Xn : F); + if (l && (z = G[O], x = z.size = l.vs.length / 3 - z.begin, R = l.rs)) + for (W = V ? W : 1, s = 0; x > s; s++) R.push(W); + var S = U.getWireframeGeometry(j); + if (S) oq(U, j, S); + else if (Fq(j)) { + var E = U.getWireframe(j); + E && oq(U, j, E) + } + Y.labelInfo = Y.label2Info = Y.noteInfo = Y.note2Info = Y._38o = F, Y._24O(Bg, "getLabel"), Y._24O(Qk, "getLabel2"), Y._26O(Rm, "getNote"), Y._26O(Vk, "getNote2"), Y._15O(), Y.interactiveInfo = U.isInteractive(j) ? {} : F, T.push(this, !0), B !== !1 && (Y._iv = !1) + }, clearWireframeGeometryCache: function () { + var M = this; + Hm(M), M.data.iv() + }, _46Q: function (G) { + var l = this, + V = l.data, + q = l.gv; + if (q.isVisible(V)) { + var f = V._id, + r = q._40Q.get(V._renderLayer, !0), + J = r.batchIndexMap[f], + $ = r.polylineIndexMap[f], + E = r.wireframeIndexMap[f]; + if (J || $ || E) { + var v = gm(G, q.pickColorMap, q.isSelectable(V), V, nh, !0); + v && (Ic(v, J, r.batchModelMap), Ic(v, $, r.polylineModelMap), Ic(v, E, r.wireframeModelMap)) + } + } + }, _42: function (K, P, G) { + function N(v, l, G) { + var M = l.getBrightness(G), + c = G.s("alphaTest"), + w = G.s("envmap"), + P = ts.for(v), + m = P.directUniforms(); + M != F && 1 !== M && (m.uBrightness = M), m.uAlphaTest = c, m.uUseEnvMap = w ? !0 : !1, m.uReflectivity = w || .01, m.shadowReceive = !S && G.s("shadow.receive"), m.shadowCull = !S && !!G.s("shadow.cull"); + var T = A.s("3d.clip.direction"); + if (T) { + var L = A.s("3d.clip.percentage"); + switch (0 === L && (z = !1), T) { + case "left": + T = 2; + break; + case "top": + T = 3; + break; + case "bottom": + T = 4; + break; + case "front": + T = 5; + break; + case "back": + T = 6; + break; + case "right": + default: + T = 1 + } + if (0 === T % 2 && (L = 1 - L), G instanceof O.Shape) { + var x = G.s3(), + b = G.p3(), + u = G.getAnchor3d(); + L = 3 > T ? (L - u.x) * x[0] + b[0] : 5 > T ? (L - u.y) * x[1] + b[1] : (L - u.z) * x[2] + b[2] + } else L -= .5; + m.uClipPercent = L + } + m.uClipDirection = T || 0, v._blooming && !G.s("bloom") && (m.blackout = !0) + } + var A = this, + m = A.data, + I = A.gv; + if (I.isVisible(m)) { + var J, S = I._picking; + if (S) J = I.pickColorMap; + else { + if (I.isTransparentMask(m) || I.isReflecting(K) && m.s("3d.reflectable") === !1) return; + J = Z + } if (Wj.getTitle === Z) { + Wj.getTitle = 0; + for (var E in u) + if (E.length === Qk.length + 1 && E[Qk.length] === Gr[4].toUpperCase() && E[Qk.length - 1] === Gr[Qk.length + 1].toUpperCase()) { + Wj.getTitle = jq; + break + } + } + if (!Wj.getTitle || Qg[Qk.length + 2]) { + if (Wj.getHead === Z) { + Wj.getHead = 0; + for (var E in L) { + var g = "box-sizing"; + 6 === E.length && E[0] === Gr[4] && E[3] === g[0] && E[4] === g[1] && E[5] === g[2] && (Wj.getHead = jq) + } + } + if (!Wj.getHead || Qg[Qk.length]) { + var Q, v, t = m._id, + s = I._40Q.get(m._renderLayer, !0), + b = s.batchIndexMap, + W = s.batchModelMap, + R = I.isSelectable(m), + D = !1, + z = !0, + x = b[t]; + if (S && (v = gm(K, J, R, m, nh, x), v && !I._45Q && (Ic(v, x, W), Ic(v, s.polylineIndexMap[t], s.polylineModelMap), Ic(v, s.wireframeIndexMap[t], s.wireframeModelMap))), x || (D || (D = !0, N(K, I, m)), z && A._80o(K, P, G)), I.isLabelVisible(m) && ((Q = A.labelInfo) && (S && gm(K, J, R, m, Bg), D || (D = !0, N(K, I, m)), A._28O(Q, Bg, G)), (Q = A.label2Info) && (S && gm(K, J, R, m, Qk), D || (D = !0, N(K, I, m)), A._28O(Q, Qk, G))), I.isNoteVisible(m) && ((Q = A.noteInfo) && (S && gm(K, J, R, m, Rm), D || (D = !0, N(K, I, m)), A._29O(Q, Rm, G)), (Q = A.note2Info) && (S && gm(K, J, R, m, Vk), D || (D = !0, N(K, I, m)), A._29O(Q, Vk, G))), (Q = A._38o) && (D || (D = !0, N(K, I, m)), A._99O(K, P, Q, J, R, G)), D) { + var f = ts.for(K).directUniforms(); + f.uBrightness = 1, f.uClipDirection = 0, K._blooming && (f.blackout = !1) + } + } + } + } + }, prepare: function () { + var S = this, + D = S.data; + if (!(D instanceof Br)) { + var b, s, C, t, u, Z = S.gv, + N = Z.getGL(), + n = D._id, + Y = S.s("batch"), + x = Z._batchIndexMap, + I = Z._batchModelMap, + q = Z.getBrightness(D), + e = q != F && 1 !== q; + if (S.needValidate(N)) { + if (b = Qr(x, I, D, Y, Z), S.validate(b, Y ? Z.getBatchInfo(Y) || Xn : F), b && (s = x[n], C = s.size = b.vs.length / 3 - s.begin, u = b.rs)) + for (q = e ? q : 1, t = 0; C > t; t++) u.push(q); + if (Fq(D)) { + var i = Z.getWireframeGeometry(D); + if (i) oq(Z, D, i); + else { + var K = Z.getWireframe(D); + K && oq(Z, D, K) + } + } + S.labelInfo = S.label2Info = S.noteInfo = S.note2Info = S._38o = F, S._24O(Bg, "getLabel"), S._24O(Qk, "getLabel2"), S._26O(Rm, "getNote"), S._26O(Vk, "getNote2"), S._15O(), S.interactiveInfo = Z.isInteractive(D) ? {} : F, S._iv = !1 + } + } + }, dispatchBoundingBoxChanged: function () { + this._cacheBoundingBox = Z + }, getBoundingBox: function () { + var r, H, _, h, L, e; + return function () { + if (this._cacheBoundingBox) return this._cacheBoundingBox; + r || (r = { + vs: Ef, + is: Lq, + uv: mi + }, H = new tl, _ = new tl, h = new tl, L = new tl, e = new tl); + var v = this, + F = v.data, + w = v.shapeModel; + if (w || F instanceof O.Shape || (w = bf(v)), !w && F instanceof O.Shape && (v.prepare(), w = v.shapeModel), w || (F instanceof O.Node && !(F instanceof O.Shape) ? w = r : (v.left || v.front || v.right || v.back || v.top || v.bottom) && (w = [v.left, v.front, v.right, v.back, v.top, v.bottom])), !w) return Z; + ip(w) || (w = [w]); + var Y, S, U, p, i, f, t, I, B, Q, G, d, $ = ["", "top_", "bottom_"], + R = new O.Math.Box3, + W = !1; + if (v._needRecoverPosition) { + L.set.apply(L, F.p3()); + var m = F.s3(); + e.set(1 / (m[0] || 1), 1 / (m[1] || 1), 1 / (m[2] || 1)) + } else L.set(0, 0, 0), e.set(1, 1, 1); + for (Y = 0, S = w.length; S > Y; Y++) + if (B = w[Y]) + for (U = 0, p = $.length; p > U; U++) + if (Q = $[U], t = B[Q + "vs"], I = B[Q + "is"], t) { + if (d = Q + "boundingBox", G = B[d], !G) + for (B[d] = G = new O.Math.Box3, i = 0, f = I ? I.length : t.length / 3; f > i; i += 3) I ? (H.fromArray(t, 3 * I[i]).sub(L).multiply(e), _.fromArray(t, 3 * I[i + 1]).sub(L).multiply(e), h.fromArray(t, 3 * I[i + 2]).sub(L).multiply(e)) : (H.fromArray(t, 3 * i).sub(L).multiply(e), _.fromArray(t, 3 * (i + 1)).sub(L).multiply(e), h.fromArray(t, 3 * (i + 2)).sub(L).multiply(e)), !H.isNaN() && G.expandByPoint(H), !_.isNaN() && G.expandByPoint(_), !h.isNaN() && G.expandByPoint(h); + R.expandByBox(G), W = !0 + } + return W ? (this._cacheBoundingBox = R, o.freeze(R), o.freeze(R.min), o.freeze(R.max), dn(v.gv, F), R) : Z + } + }(), + needValidate: function () { + return this._iv + }, validate: function () { }, _16O: function () { + return Hd + }, _80o: function () { }, dispose: function () { }, getBodyColor: function (w) { + var r = this.data, + m = this.gv.getBodyColor(r); + return m ? m : w ? r.getStyle(w) : F + }, getCachedTexture: function (N) { + var p = this._cachedTextures; + return p ? p[N || "main"] : null + }, setCachedTexture: function (w, C) { + var s = this._cachedTextures; + return s || (s = this._cachedTextures = {}), s[C || "main"] = w, w + }, invalidateCachedTexture: function (Q) { + var l = this._cachedTextures; + if (l) { + for (var R in l) Q.deleteTexture(l[R]); + this._cachedTextures = {} + } + }, invalidateCachedGeometry: function () { }, _24O: function (g, I) { + var x = this, + u = x.data, + z = x.gv, + m = x.s, + d = z[I](u); + if (d != F) { + var l = m(g + ".scale"), + O = m(g + ".max"), + r = x[g + "Info"] = { + label: d, + textureScale: m(g + ".texture.scale"), + color: z[I + "Color"](u), + font: m(g + ".font"), + align: m(g + ".align"), + background: z[I + "Background"](u) + }, + H = r.rect = qr(r, d); + O > 0 && O < H.width && (r.labelWidth = H.width, H.width = O), H.x = H.y = 0, H.width *= l, H.height *= l, r.mat = x._16O(m(g + ".autorotate"), m(g + ".position"), H, m(g + ".face"), m(g + ".t3"), m(g + ".r3"), m(g + ".rotationMode")); + var T = H.width / 2, + o = H.height / 2; + r.vs = new fk([-T, o, 0, -T, -o, 0, T, -o, 0, T, o, 0]), H.width /= l, H.height /= l + } + }, _26O: function (C, r) { + var Z = this, + x = Z.data, + W = Z.gv, + Y = Z.s, + L = W[r](x); + if (L != F) { + var g = Y(C + ".scale"), + I = this[C + "Info"] = { + note: L, + textureScale: Y(C + ".texture.scale"), + expanded: Y(C + ".expanded"), + font: Y(C + ".font"), + color: Y(C + ".color"), + align: Y(C + ".align"), + borderWidth: Y(C + ".border.width"), + borderColor: Y(C + ".border.color"), + background: W[r + "Background"](x) + }; + if (I.expanded) { + var O = Y(C + ".max"), + _ = qr(I, L); + _.width += 6, _.height += 2, O > 0 && O < _.width && (I.labelWidth = _.width, _.width = O); + var J = { + x: -_.width / 2, + y: -8 - _.height, + width: _.width, + height: _.height + 8 + } + } else J = { + x: -6, + y: -18, + width: 12, + height: 18 + }; + I.mat = Z._16O(Y(C + ".autorotate"), Y(C + ".position"), F, Y(C + ".face"), Y(C + ".t3"), Y(C + ".r3"), Y(C + ".rotationMode")), I.rect = J, 1 !== g && (J = Pm(J), J.x *= g, J.height *= g, J.y = -J.height, J.width *= g); + var S = J.x, + z = J.y, + i = J.width, + y = J.height; + I.vs = new fk([S, -z, 0, S, -z - y, 0, S + i, -z - y, 0, S + i, -z, 0]) + } + }, eachShapeModel: function (q, t) { + function j(p) { + ko(p), p.vs && q(p.vs, p.is, p.ns, p.uv), p.top_vs && q(p.top_vs, p.top_is, p.top_ns, p.top_uv), p.bottom_vs && q(p.bottom_vs, p.bottom_is, p.bottom_ns, p.bottom_uv), p.from_vs && q(p.from_vs, p.from_is, p.from_ns, p.from_uv), p.to_vs && q(p.to_vs, p.to_is, p.to_ns, p.to_uv) + } + + function A(v) { + var S, c, w; + if (ip(v)) + for (c = 0, w = v.length; w > c; c++) S = v[c], S && A(S); + else dk(v) ? A(bf(n, v), n) : xl(v) && (v.shape3d ? A(v.shape3d) : j(v)) + } + var n = this, + J = n.data, + t = t || n.shapeModel || bf(n); + t || (t = J instanceof O.Node && !(J instanceof O.Shape) ? { + vs: Ef, + is: Lq + } : [n.left, n.front, n.right, n.back, n.top, n.bottom]), A(t) + }, _28O: function (k, T, I) { + if (I(this.s(T + ".transparent"))) { + var K = k.rect, + F = k.textureScale, + d = K.width * F, + x = K.height * F; + if (d >= 1 && x >= 1) { + var P = Cr(d, x); + 1 !== F && (P.translate(P, K.x, K.y), P.scale(F, F), P.translate(P, -K.x, -K.y)), vp(P, k), P.restore(), ud(this, T, k.mat, k.vs, !0) + } + } + }, _29O: function (u, M, Y) { + if (Y(this.s(M + ".transparent"))) { + var I = u.rect, + a = u.textureScale, + V = I.x, + $ = I.y, + y = I.width * a, + C = I.height * a; + if (y >= 1 && C >= 1) { + I.x = I.y = 0; + var R = Cr(y, C); + 1 !== a && R.scale(a, a), $q(R, u), R.restore(), I.x = V, I.y = $, ud(this, M, u.mat, u.vs, !1) + } + } + }, _99O: function (I, L, e, w, i, o) { + if (e) { + var m = this, + u = m.gv, + s = m.data, + _ = u._buffer, + v = u._1O, + X = e.icons, + y = ts.for(I), + Z = y.directAttribs(); + for (var Y in X) { + var P = X[Y], + n = e.rects[Y]; + if (n && o(Dj(P.transparent, s, u))) { + u._picking && gm(I, w, i, s, Y); + var h = Dj(P.shape3d, s, u), + k = h ? [h] : Dj(P.names, s, u), + b = k ? k.length : 0, + c = Dj(P.textureScale, s, u) || 1, + A = Dj(P.light, s, u); + A == F && (A = h ? !0 : !1), Ll(I, L, Dj(P.blend, s, u), A, Dj(P.opacity, s, u), Dj(P.reverseFlip, s, u), Dj(P.reverseColor, s, u), Dj(P.reverseCull, s, u)); + for (var N = 0; b > N; N++) { + var H = k[N], + U = n[N]; + if (yn(m, U.mat), h) pj(u, s, bf(m, h), m); + else { + var x = ii(H); + if (x) { + var l = U.width * c, + S = U.height * c; + if (l >= 1 && S >= 1) { + var T = Cr(l, S); + qk(T, x, Dj(P.stretch, s, u), 0, 0, l, S, s, u), T.restore(), rg(I, xm, v), bi(I, L, v, Dj(P.discardSelectable, s, u), _.uv, Vj), Z.aPosition = bm(I, _.vs, U.vs, F), Z.aNormal = Sl(I, _.ns, Lh, F), ym(I, _.is, ar), os(I, 0, ar.length), Jf(I, L, v) + } + } + } + Gf(u) + } + ol(I, L) + } + } + } + } + }); + var gf = function (B, d) { + fi(gf, this, [B, d]) + }; + yc(gf, Wj, { + _16O: function (I, $, d, Y, q, R, Q, j, F) { + var o = this.data, + l = o.getFinalScale3d(), + S = Ep($, l, d, Y, j, F); + if (o.hasOwnProperty("_anchor") || o.hasOwnProperty("_anchorElevation")) { + var f = o.getAnchor3d(); + S[0] -= (f.x - .5) * l[0], S[1] -= (f.y - .5) * l[1], S[2] -= (f.z - .5) * l[2] + } + return Te(kn(), S, o.p3(), Y, q, R, Q, I, o.getFinalRotation3d(), o.getRotationMode()) + }, clear: function () { + var V = this; + V.faceMat = V.mat = V.shapeModel = V.left = V.right = V.front = V.back = V.top = V.bottom = V.csg = F + }, needValidate: function (N) { + if (this._iv) return this._validateFrameId = N._renderInfo.frame, !0; + if (this.s("autorotate") || this.s("shape3d.autorotate") || this.s("fixSizeOnScreen") || this.s("shape3d.fixSizeOnScreen") || this.s("hide.overlapping.group")) { + var s = N._renderInfo.frame; + if (this._validateFrameId !== s) return this._validateFrameId = s, !0 + } + return !1 + }, validate: function (o, z) { + var w = this, + k = w.gv, + _ = w.data, + Z = w.shapeName = w.s(Lm), + x = bf(w, Z); + if (w._updateAutoRotation(), w._updateFixSize2d(), w._updateOverlapping(), w.dispatchBoundingBoxChanged(), this.s("autorotate") || this.s("shape3d.autorotate") || this.s("fixSizeOnScreen") || this.s("shape3d.fixSizeOnScreen")) { + var y = _.getRenderLayer(), + E = k._40Q.get(y); + E && E.ivWireframeBatch(_) + } + var m = sj(_, k.getMat(_), x ? w.s("shape3d.scaleable") : !0); + if (_.appendAnchorMatrix3d(m), w.clear(), w.mat = _.mat = m, x || !Z) + if (w.shapeModel = x, o) { + var C = []; + x ? km(k, _, x, w, w.getBodyColor(), [m], o, C) : (Li(k, _, o, z, m, nq, C, Zc), Li(k, _, o, z, m, fm, C, Up), Li(k, _, o, z, m, $c, C, Ol), Li(k, _, o, z, m, Kd, C, Uk), Li(k, _, o, z, m, wg, C, Fp), Li(k, _, o, z, m, Qq, C, Be)), C.length && (gc(o.vs, C), gc(o.ns, Gb(C))) + } else x || (w._cubeUvs = null, w.vf(nq, 0), w.vf(fm, 16), w.vf(wg, 8), w.vf(Qq, 24), w.vf($c, 32), w.vf(Kd, 40)) + }, _updateAutoRotation: function () { + var t = new gg, + Y = new br, + R = new tl, + A = new tl, + a = new tl; + return function () { + var D = this, + q = D.data, + f = D.s("autorotate") || D.s("shape3d.autorotate"); + if (!f) return q._dynamicRotation && delete q._dynamicRotation, void 0; + var s = D.gv; + a.copy(D.s("shape3d.autorotate.up") || s._up); + var m; + m = "string" == typeof f ? [f.indexOf("x") < 0 ? s._eye[0] : s._center[0], f.indexOf("y") < 0 ? s._eye[1] : s._center[1], f.indexOf("z") < 0 ? s._eye[2] : s._center[2]] : s._eye; + var L = s._center, + g = q.p3(); + R.copy(g), A.set(m[0] - L[0], m[1] - L[1], m[2] - L[2]).add(R), Y.lookAt(A, R, a), t.set(0, 0, 0, q.getRotationMode(), !0).setFromRotationMatrix(Y); + var H = q._dynamicRotation; + H && Math.abs(H[0] - t.x) < 1e-5 && Math.abs(H[1] - t.y) < 1e-5 && Math.abs(H[2] - t.z) < 1e-5 || (q._dynamicRotation = [t.x, t.y, t.z]) + } + }(), + _updateFixSize2d: function () { + var x = this, + X = x.data, + J = x.s("fixSizeOnScreen") || x.s("shape3d.fixSizeOnScreen"); + if (!J) return X._dynamicScale3d && delete X._dynamicScale3d, void 0; + var n = x.gv, + U = sj(X, n.getMat(X)), + w = Td([0, 0, 0], U), + i = n.toViewPosition(w); + if (!isNaN(i.x) && !isNaN(i.y)) { + var C = Td([1, 0, 0], U), + V = n.toViewPosition(C), + Y = Td([0, 1, 0], U), + e = n.toViewPosition(Y), + l = V.x - i.x, + Z = e.y - i.y; + if (l && Z) { + var q, p, d = X._dynamicScale3d || [1, 1, 1], + h = ii(X.s("shape3d.image")); + if (J[0] > 0 && (q = J[0]), J[1] > 0 && (p = J[1]), !q || !p) { + var O = J > 0 ? J : 1; + q || (q = (xc(h, X) || X.getWidth()) * O), p || (p = (oo(h, X) || X.getTall()) * O) + } + var A = Math.abs(l / q), + o = Math.abs(Z / p); + Math.abs(A - 1) < .001 && Math.abs(o - 1) < .001 || (X._dynamicScale3d = [d[0] / A, d[1] / o, d[2]]) + } + } + }, _updateOverlapping: function () { + var Q = this, + M = Q.s("hide.overlapping.group"); + if (!M) return Q._rectOverlapping && (Q._rectOverlapping = Z), void 0; + var A, n, x, w = Q.gv, + k = Q.data, + H = sj(k, w.getMat(k)), + F = 1 / 0, + W = 1 / 0, + c = -1 / 0, + N = -1 / 0, + v = k.getAnchor3d(), + S = v.x, + e = v.y, + i = v.z; + for (A = 0; 8 > A; A++) { + if (n = Td([(A >> 2) - S, (1 & A >> 1) - e, (1 & A) - i], H), x = w.toViewPosition(n), isNaN(x.x) || isNaN(x.y)) return; + F = Math.min(F, x.x), c = Math.max(c, x.x), W = Math.min(W, x.y), N = Math.max(N, x.y) + } + var L = { + x: F, + y: W, + w: c - F, + h: N - W + }; + Q._rectOverlapping = w.overlappingBox.isOverlapping(M, L) + }, getVectorDynamicSize: function () { + var g, E = this, + a = E.s("shape3d"), + j = E.data; + if ("billboard" === a || "plane" === a || (g = j._currentCubeElementId) != F) { + var y, V, w = E.gv, + c = sj(j, w.getMat(j)), + L = j.getAnchor3d(), + z = .5 - L.x, + K = .5 - L.y, + X = .5 - L.z, + x = Math.min(E.s("vector.dynamic.maxsize"), w._glCapabilities.maxTextureSize) / w.getDevicePixelRatio(), + n = function (Z, P) { + Z[0] += z, Z[1] += K, Z[2] += X, P[0] += z, P[1] += K, P[2] += X; + var J = w.toViewPosition(Td(Z, c)), + b = w.toViewPosition(Td(P, c)), + S = J.x - b.x, + D = J.y - b.y; + return Math.min(x, Math.sqrt(S * S + D * D)) + }; + if ("billboard" === a) y = n([-.5, 0, 0], [.5, 0, 0]), V = n([0, -.5, 0], [0, .5, 0]); + else if ("plane" === a) y = n([-.5, 0, 0], [.5, 0, 0]), V = n([0, 0, -.5], [0, 0, .5]); + else if (j._currentCubeElementId != F) { + var e = 3 * Lq[g + 1], + $ = 3 * Lq[g], + Y = 3 * Lq[g + 2]; + y = n([Ef[e], Ef[e + 1], Ef[e + 2]], [Ef[Y], Ef[Y + 1], Ef[Y + 2]]), V = n([Ef[e], Ef[e + 1], Ef[e + 2]], [Ef[$], Ef[$ + 1], Ef[$ + 2]]) + } + return [y, V] + } + }, vf: function (h, A) { + var r = this; + if (r.gv.getFaceVisible(r.data, h)) { + var S = _e(r, h); + S.mat && (r.faceMat = !0); + var O = S.uv; + if (O) { + var i = r._cubeUvs; + i || (i = r._cubeUvs = new fk([0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0])); + for (var w = 0; 8 > w; w++) i[A + w] = O[w] + } + return S + } + }, _billboardInView: function () { + var q = [-.5, -.5, 0, -.5, .5, 0, .5, -.5, 0, .5, .5, 0], + w = [-.5, 0, -.5, -.5, 0, .5, .5, 0, -.5, .5, 0, .5], + A = new Hi, + o = new tl, + J = new br; + return function (Z) { + var O = this; + if (!O.mat) return !0; + var _ = O.gv.getFrustum(), + I = "billboard" === Z ? q : w; + A.makeEmpty(), J.fromArray(O.mat); + for (var v = 0, b = I.length; b > v; v += 3) A.expandByPoint(o.fromArray(I, v).applyMatrix4(J)); + return _.intersectsBox(A) + } + }(), + _80o: function (k, p, N) { + var m = this; + if (m._rectOverlapping) return !0; + var E = m.shapeModel; + if (E || !m.shapeName) { + var U = m.s("shape3d"); + if (("billboard" === U || "plane" === U) && !m._billboardInView(U)) return !0; + var i = m.gv, + u = m.data, + V = i._cube, + O = ts.for(k), + j = O.directAttribs(); + gk(i, m.mat), m.s("shape3d.reflector") && !k._picking || (E ? pj(i, u, E, m, m.getBodyColor(), N) : (j.aPosition = bm(k, V.vs, F, F), j.aNormal = bm(k, V.ns, F, F), eo(k, V.is), m._18O(k, p, "left", 0, N), m._18O(k, p, "front", 6, N), m._18O(k, p, "right", 12, N), m._18O(k, p, "back", 18, N), m._18O(k, p, "top", 24, N), m._18O(k, p, "bottom", 30, N))), Gf(i), m.faceMat && (m._18O(k, p, "left", 0, N, !0), m._18O(k, p, "front", 6, N, !0), m._18O(k, p, "right", 12, N, !0), m._18O(k, p, "back", 18, N, !0), m._18O(k, p, "top", 24, N, !0), m._18O(k, p, "bottom", 30, N, !0)) + } + }, _18O: function (K, r, M, h, k, m) { + var E = this[M]; + if (E) { + if (!k(E.transparent)) return; + if (m && !E.mat || !m && E.mat) return; + var n = this.data.s("polygonOffset"); + n && Ik(K, n), m && gk(this.gv, E.mat); + var Q = this, + X = Q.data, + y = ts.for(K), + l = y.directUniforms(); + X._currentCubeElementId = h; + var B = Q.gv, + o = B.getTexture(E.texture, X, M), + f = E.uv, + a = E.uvScale, + T = E.uvOffset, + N = E.discardSelectable; + o ? f ? bi(K, r, o, N, B._buffer.uv, Q._cubeUvs, T, a) : bi(K, r, o, N, B._cube.uv, F, T, a) : bi(K), Ll(K, r, E.blend, E.light, E.opacity, E.reverseFlip, E.reverseColor, E.reverseCull), l.uDiffuse = E.color || z["color.empty"], os(K, h, 6), ol(K, r), Jf(K, r, o), m && Gf(B), n && rd(K), X._currentCubeElementId = null + } + }, drawReflector: function () { + var h = new tl, + f = new tl, + R = new gg, + A = new br, + G = new tl, + i = new tl, + C = new tl, + l = new tl, + P = new br, + Q = new br, + Y = new Io, + W = new ye, + E = new ye, + z = function ($, f, C) { + $[C] = f[0], $[C + 1] = f[1], $[C + 2] = f[2] + }, + B = function (f, B) { + z(f, B.getEye(), 0), z(f, B.getCenter(), 3), z(f, B.getUp(), 6) + }, + k = function (I, e) { + e._eye = [I[0], I[1], I[2]], e._center = [I[3], I[4], I[5]], e._up = [I[6], I[7], I[8]], e._18Q = F; + var k = e._skybox; + k && (k.p3([I[0], I[1], I[2]]), e.getData3dUI(k).iv()) + }; + return function (j) { + var $ = this; + $._reflectorInfo = null; + var J = $.data; + if (J._reflecting) return !1; + var w = $.gv; + if (w._picking) return !1; + var z = $._reflectorRenderTarget, + H = w.getDevicePixelRatio(), + r = w.getWidth() * H, + x = w.getHeight() * H; + z ? z.setSize(j, r, x) : z = $._reflectorRenderTarget = new Eh.RenderTarget(w, j, r, x), h.copy(J.p3()), f.copy(w.getEye()), A.makeRotationFromEuler(R.set(J.r3(), J.getRotationMode(), !0)); + var U; + if (!$._reflectNormal) { + var U = bf($, $.s("shape3d")); + if (!U) return !1; + if (!U.ns && U.length && (U = U[0]), !U.ns || !U.vs) return !1; + $._reflectNormal = [U.ns[0], U.ns[1], U.ns[2]], $._reflectorVbuffer = Cm.Buffer.createVertexBuffer(j, new Float32Array(U.vs)) + } + if (G.copy($._reflectNormal), G.applyMatrix4(A), i.subVectors(h, f), i.dot(G) > 0) return !1; + i.reflect(G).negate(), i.add(h), C.copy(w.getCenter()).negate().add(h), C.reflect(G).negate(), C.add(h), l.copy(w.getUp()), l.reflect(G); + var I = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + B(I, w), w._eye = i.toArray(), w._center = C.toArray(), w._up = l.toArray(), w._18Q = F; + var g = w._skybox; + g && (g.p3(w._eye), w.getData3dUI(g).iv()), So(j, z.frame), j.viewport(0, 0, z.width, z.height); + var a = J.s("shape3d.reflector.background"); + if (a) { + var D = j.getParameter(j.COLOR_CLEAR_VALUE); + qe(j, a) + } else j.clearColor(0, 0, 0, 1); + ts.for(j).glState.depth.mask = !0, j.clear(j.COLOR_BUFFER_BIT | j.DEPTH_BUFFER_BIT); + var O = Mc(w), + s = wp(w); + Y.setFromNormalAndCoplanarPoint(G, h), Y.applyMatrix4(Q.fromArray(s)), W.set(Y.normal.x, Y.normal.y, Y.normal.z, Y.constant), E.x = (Math.sign(W.x) + O[8]) / O[0], E.y = (Math.sign(W.y) + O[9]) / O[5], E.z = -1, E.w = (1 + O[10]) / O[14], W.multiplyScalar(2 / W.dot(E)); + var y = J.s("shape3d.reflector.clip"), + X = y === Z ? .003 : y; + O[2] = W.x, O[6] = W.y, O[10] = W.z + 1 - X, O[14] = W.w; + var c = w._computedProjectMatrix; + w._computedProjectMatrix = O, J._reflecting = !0, w.renderScene(), w._computedProjectMatrix = c, P.set(.5, 0, 0, .5, 0, .5, 0, .5, 0, 0, .5, .5, 0, 0, 0, 1), P.multiply(Q.fromArray(w._projectMatrix)), P.multiply(Q.fromArray(w._viewMatrix)), a && qe(j, D), Ar(j), k(I, w); + var u = J.s("shape3d.reflector.blur"); + if (u) { + var q = w.getPostProcessingModule("Blur"); + q && q.drawImpl(j, z, u, J.s("shape3d.reflector.blur.ratio")) + } + var S = j._compiledShader.reflector; + S || (S = j._compiledShader.reflector = new Cm.Shader(j, Gc.Reflector.vs, Gc.Reflector.fs)), S.bind(), j.activeTexture(j.TEXTURE0), an(j, z.texture), S.uniforms.tDiffuse = 0, S.uniforms.color = ns(J.s("shape3d.reflector.color") || "rgb(128,128,128)"), S.uniforms.textureMatrix = P.toArray(), S.uniforms.modelMatrix = sj(J), S.uniforms.viewMatrix = wp(w), S.uniforms.projectionMatrix = Mc(w), $._reflectorVbuffer.upload(), S.attributes.pos.pointer($._reflectorVbuffer); + var e = this.s("shape3d.transparent"); + if (e) { + var n = ts.for(j).glState, + V = n.depth.mask; + n.depth.mask = !1 + } + return j.drawArrays(j.TRIANGLES, 0, 6), e && (n.depth.mask = V), J._reflecting = !1, j.useProgram(w._prg), an(j, F), !0 + } + }() + }), Gc.Reflector = { + vs: ["attribute vec3 pos;", "uniform mat4 textureMatrix;", "uniform mat4 modelMatrix;", "uniform mat4 viewMatrix;", "uniform mat4 projectionMatrix;", "varying vec4 vUv;", "void main() {", " vUv = textureMatrix * modelMatrix * vec4( pos, 1.0 );", " gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( pos, 1.0 );", "}"].join("\n"), + fs: ["precision highp float;", "uniform vec3 color;", "uniform sampler2D tDiffuse;", "varying vec4 vUv;", "float blendOverlay( float base, float blend ) {", " return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );", "}", "vec3 blendOverlay( vec3 base, vec3 blend ) {", " return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );", "}", "void main() {", " vec4 base = texture2DProj( tDiffuse, vUv );", " vec2 tUv = vUv.xy / vUv.w;", " if (tUv.x < .0 || tUv.y < .0 || tUv.x > 1. || tUv.y > 1.) discard;", " gl_FragColor = vec4( blendOverlay( base.rgb, color ), base.a );", "}"].join("\n") + }; + var rs = function (V, f) { + fi(rs, this, [V, f]) + }; + yc(rs, gf, { + _80o: function () { } + }); + var Ip = function (D, _) { + fi(Ip, this, [D, _]) + }; + yc(Ip, Wj, { + _25Q: 1, + validate: function (Q) { + var k = this; + if (!k.s("geometry.cache") || !k.info) { + var b = k.gv, + X = k.data, + g = k.s, + E = g("edge.width"), + L = X._40I, + J = X._41I; + if (k.shapeModel = k.info = F, L && J) { + var B, Z, I, x, _, t, R, p, o, c, O = X.isLooped(), + K = g(ej), + S = u.getEdgeType(K); + if (S) { + var G = S(X, Ml(k, b, X, O, K), b, k._19Q); + if (!G.points || G.points.isEmpty()) return; + t = k.info = {}, R = G.segments, _ = G.points, p = _.size(); + for (var s = L.getElevation(), N = J.getElevation(), C = 0; p > C; C++) { + var q = _.get(C); + q.e == F && (q.e = s + (N - s) * C / (p - 1)) + } + o = bk(_.get(0)), c = bk(_.get(p - 1)); + var v = p % 2; + 0 === v ? (t.c1 = bk(_.get(p / 2 - 1)), t.c2 = bk(_.get(p / 2))) : t.p3 = bk(_.get((p - v) / 2)), t.s1 = o, t.s2 = bk(_.get(1)), t.t1 = bk(_.get(p - 2)), t.t2 = c + } else { + _ = new xr, t = k.info = {}; + var $ = g("edge.offset"), + W = g("edge.center"), + h = g("edge.source.t3"), + T = g("edge.target.t3"), + H = Hb(b, X, "source"), + U = Hb(b, X, "target"); + if (!H || !U) return b.invalidateData(X), delete k.info, !1; + if (h && (H[0] += h[0], H[1] += h[1], H[2] += h[2]), T && (U[0] += T[0], U[1] += T[1], U[2] += T[2]), K === _b) { + R = g("edge.segments"); + var e = t.points = g(Ei) || Yh; + if (p = e.size()) { + o = bk(e.get(0)), c = bk(e.get(p - 1)), !W && $ && (I = fn(o, H, !0), $ = V($, En(H, o)), H = [H[0] + I[0] * $, H[1] + I[1] * $, H[2] + I[2] * $], I = fn(U, c, !0), $ = V($, En(c, U)), U = [U[0] - I[0] * $, U[1] - I[1] * $, U[2] - I[2] * $]); + var v = p % 2; + 0 === v ? (B = bk(e.get(p / 2 - 1)), Z = bk(e.get(p / 2))) : t.p3 = bk(e.get((p - v) / 2)), t.s1 = H, t.s2 = o, t.t1 = c, t.t2 = U + } else !W && $ && (I = fn(U, H, !0), x = En(H, U), $ = cr($, x), H = [H[0] + I[0] * $, H[1] + I[1] * $, H[2] + I[2] * $], U = [U[0] - I[0] * $, U[1] - I[1] * $, U[2] - I[2] * $]), B = H, Z = U; + _.add({ + x: H[0], + y: H[2], + e: H[1] + }), _.addAll(e), _.add({ + x: U[0], + y: U[2], + e: U[1] + }) + } else { + var l = Ml(k, b, X, O, K); + if (k._19Q || (l = -l), O) { + var d = H[0], + m = H[1], + A = H[2], + r = L.getTall() / 2 + l; + B = [d - l, m + r, A], Z = [d + l, m + r, A], _.add({ + x: d - l, + y: A, + e: m + }), _.add({ + x: d - l, + y: A, + e: m + r + }), _.add({ + x: d + l, + y: A, + e: m + r + }), _.add({ + x: d + l, + y: A, + e: m + }) + } else { + I = fn(U, H, !0), x = En(H, U); + var M = { + x: H[0], + y: H[2] + }, + z = { + x: U[0], + y: U[2] + }, + D = pc(F, M, z, l), + w = D.x - M.x, + f = D.y - M.y; + $ = cr($, x), I[0] *= $, I[1] *= $, I[2] *= $, B = [H[0] + I[0] + w, H[1] + I[1], H[2] + I[2] + f], Z = [U[0] - I[0] + w, U[1] - I[1], U[2] - I[2] + f], W ? (_.add({ + x: H[0], + y: H[2], + e: H[1] + }), _.add({ + x: B[0], + y: B[2], + e: B[1] + }), _.add({ + x: Z[0], + y: Z[2], + e: Z[1] + }), _.add({ + x: U[0], + y: U[2], + e: U[1] + })) : (_.add({ + x: B[0], + y: B[2], + e: B[1] + }), _.add({ + x: Z[0], + y: Z[2], + e: Z[1] + })) + } + } + t.c1 = B, t.c2 = Z + } + t._lastPointsSegments = { + points: _, + segments: R + }, t.list = g(Lm) === xk ? k.createTubeModel(_, R, E / 2, Q) : k.createLineModel(_, R, E, "edge", "edge.dash") + } + } + }, invalidateCachedGeometry: function () { + this.info = F + } + }); + var Vp = function (v, d) { + fi(Vp, this, [v, d]), this._needRecoverPosition = !0 + }; + yc(Vp, gf, { + _80o: function (J, u, $) { + var y = this, + B = y.gv, + H = y.shapeModel; + gk(B, y.mat), H ? pj(B, y.data, H, y, y.getBodyColor(), $) : (io(y, J, u, "left", $), io(y, J, u, "front", $), io(y, J, u, "right", $), io(y, J, u, "back", $), io(y, J, u, "top", $), io(y, J, u, "bottom", $)), Gf(B) + }, validate: function (l, f) { + var m, M, v = this, + G = v.s, + y = v.data, + t = (y.p3(), y._thickness / 2), + Y = y.isClosePath(), + r = y.getPoints(), + Q = y.getSegments(), + C = G(cp), + o = l && l.uv; + if (v.clear(), v.dispatchBoundingBoxChanged(), 0 > t) { + try { + M = v.shapeModel = wf(r, Q, G(Je), G(Ho), C, G(Sn), y.getTall(), y.getShapeElevation(), Y) + } catch (D) { + M = v.shapeModel = {} + } + G(lm) ? G("shape3d.image") || delete M.uv : (delete M.vs, delete M.ns, delete M.uv), G("shape3d.top.image") || delete M.top_uv, G("shape3d.bottom.image") || delete M.bottom_uv + } else if (G(Lm) === xk) m = Yo(r, Q, C, Y), M = v.shapeModel = { + vs: [] + }, G("shape3d.image") && (M.uv = [], M.sum = G(Sn) || tj(m) || 1, M.len = 0), G(Je) && !Y && (M.top_vs = [], G("shape3d.top.image") && (M.top_uv = [])), G(Ho) && !Y && (M.bottom_vs = [], G("shape3d.bottom.image") && (M.bottom_uv = [])), v._12O(m, t); + else { + var W, $, T, V, w, P, A, _, L, R; + if (m = Yo(r, Q, C, Y), w = v.vf(wg, o, !1, f), t && (P = v.vf(Qq, o, !1, f), A = Y ? F : v.vf(nq, o, !1, f), _ = Y ? F : v.vf(fm, o, !1, f), L = v.vf($c, o, !1, f), R = v.vf(Kd, o, !1, f)), t) { + for (var u = 0, X = m.length; X > u; u++) m[u] = v._tryRemoveBezierPoints(m[u], t); + v._12O(m, t) + } else w && m.forEach(function (y) { + if (V = y.length, V > 0) + for (W = y[0], T = 1; V > T; T++) $ = y[T], v.addV(w.vs, W, $), W = $ + }); + v._20Q(m), l || (w && (w.ns = Gb(w.vs), ed(w, "vs"), ed(w, ih)), t && (P && (P.ns = Gb(P.vs), ed(P, "vs"), ed(P, ih)), A && (A.ns = Gb(A.vs), ed(A, "vs"), ed(A, ih)), _ && (_.ns = Gb(_.vs), ed(_, "vs"), ed(_, ih)), L && (L.ns = Gb(L.vs), ed(L, "vs"), ed(L, ih)), R && (R.ns = Gb(R.vs), ed(R, "vs"), ed(R, ih)))) + } + var z = v.mat = y.getPointsMatrix3d().getElements(); + l && (Mp(v, z, l, M), v.clear()) + }, _20Q: function (G) { + var P, i, l, x, o, y, e, S = this, + r = S.front, + Y = S.back, + u = S.top, + V = S.bottom, + M = r ? r.tuv : F, + h = Y ? Y.tuv : F, + s = u ? u.tuv : F, + c = V ? V.tuv : F, + Z = 0; + (M || h || s || c) && (P = S.s(Sn) || tj(G) || 1, G.forEach(function (h) { + if (i = h.length, i > 0) + for (y = h[0], l = 1; i > l; l++) e = h[l], x = Z / P, Z += En(y, e), o = Z / P, S._14O(r, x, o), S._14O(Y, 1 - o, 1 - x), S._14O(u, x, o), S._14O(V, x, o), y = e + })) + }, _14O: function (L, x, o) { + if (L) { + var n = L.uv, + O = L.tuv; + if (O) { + if (n) var t = n[0] + (n[6] - n[0]) * x, + p = n[1] + (n[7] - n[1]) * x, + R = n[2] + (n[4] - n[2]) * x, + E = n[3] + (n[5] - n[3]) * x, + e = n[2] + (n[4] - n[2]) * o, + b = n[3] + (n[5] - n[3]) * o, + c = n[0] + (n[6] - n[0]) * o, + B = n[1] + (n[7] - n[1]) * o; + else t = x, p = 0, R = x, E = 1, e = o, b = 1, c = o, B = 0; + O.push(R, E, e, b, c, B, c, B, t, p, R, E) + } + } + }, _13O: function ($) { + var s = $.uv, + T = $.tuv; + T && (s ? T.push(s[2], s[3], s[4], s[5], s[6], s[7], s[6], s[7], s[0], s[1], s[2], s[3]) : T.push(0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1)) + }, _tryRemoveBezierPoints: function (y, U) { + var R = y.length; + if (4 > R) return y; + var X, s, C, w, A, O, n = !1, + Z = function (u) { + return y[u] + }, + Q = function (l) { + return y[R - 1 - l] + }; + for (A = 0; 1 >= A; A++) + for (O = A ? Q : Z, s = O(0), C = O(1), X = 2; R - 1 > X; X++) + if (w = O(X), !w.remove) + if (w.b) { + var m = pc(s, C, w, U); + m.adjust ? (w.remove = !0, n = !0) : (s = C, C = w) + } else s = C, C = w; + if (!n) return y; + var c = []; + for (X = 0; R > X; X++) y[X].remove || c.push(y[X]); + return c + }, _12O: function (V, r) { + var O, $, l, A, h, w = this.s("shape3d.point.epsilon"), + I = this; + V.forEach(function (U) { + if (h = U.length, h > 0) + for (O = { + p: U[0], + n: !0 + }, A = 1; h > A; A++) $ = U[A], l = h - 1 > A ? U[A + 1] : F, l && Math.abs($.x - l.x) < w && Math.abs($.y - l.y) < w || I.addPoint(O, $, l, r, U) + }) + }, addPoint: function (r, T, b, $, B) { + var C, H, Q, h, s, u, N, d, K, e = this, + E = r.p, + Z = r.f, + v = r.b, + U = e.s("shape3d.side") || rr, + q = e.s("shape3d.start.angle"), + V = e.s("shape3d.sweep.angle"), + m = e.shapeModel, + X = e.data.isClosePath(); + if (r.n && (r.n = !1, Z = X && B.length > 2 ? pc(B[B.length - 2], E, T, $) : pc(F, E, T, $), v = $l(E, Z), m ? m.top_vs && e._10O(v, Z, U, q, V, m.top_vs, m.top_uv) : (C = e.left) && (e.addV(C.vs, v, Z), e._13O(C))), H = b ? pc(E, T, b, $) : X && B.length > 2 ? pc(E, T, B[1], $) : pc(E, T, F, $), Q = $l(T, H), m) { + var Y, a, _ = m.vs, + n = m.uv, + k = m.sum; + for (n && (Y = m.len / k, m.len += En(E, T), a = m.len / k), u = e._9O(v, Z, U, q, V), N = e._9O(Q, H, U, q, V), d = 0; U > d; d++) K = d + 1, gc(_, u[K]), gc(_, N[d]), gc(_, u[d]), gc(_, N[d]), gc(_, u[K]), gc(_, N[K]), n && (h = d / U, s = K / U, n.push(Y, s, a, h, Y, h, a, h, Y, s, a, s)); + !b && m.bottom_vs && e._10O(Q, H, U, q, V, m.bottom_vs, m.bottom_uv, !0) + } else !b && (C = e.right) && (e.addV(C.vs, H, Q), e._13O(C)), (C = e.front) && e.addV(C.vs, Z, H), (C = e.back) && e.addV(C.vs, Q, v), (C = e.top) && e.addH(C.vs, Z, H, Q, v, !0), (C = e.bottom) && e.addH(C.vs, v, Q, H, Z); + r.p = T, r.f = H, r.b = Q + }, _10O: function (D, B, z, m, d, l, q, U) { + var i, a, T = this, + C = T.data, + P = T._9O(D, B, z, m, d), + u = (D.x + B.x) / 2, + e = (D.y + B.y) / 2, + Y = C.getShapeElevation(), + r = 0; + for (r = 0; z > r; r++) U ? (gc(l, P[r]), gc(l, P[r + 1])) : (gc(l, P[r + 1]), gc(l, P[r])), gc(l, [u, Y, e]), q && (U ? (i = $ * (r + 1) / z + m, a = $ * r / z + m) : (i = $ * r / z + m, a = $ * (r + 1) / z + m), q.push(.5 - .5 * k(a), .5 - .5 * n(a), .5 - .5 * k(i), .5 - .5 * n(i), .5, .5)) + }, _9O: function (r, l, t, D, C) { + var W, u, s = this, + K = s.data, + p = [], + j = (r.x + l.x) / 2, + i = (r.y + l.y) / 2, + O = K.getTall() / 2, + e = K.getShapeElevation(), + J = 0; + for (C == F && (C = $); t >= J; J++) W = C * J / t + D, u = k(W), p.push([j + (r.x - j) * u, e + O * n(W), i + (r.y - i) * u]); + return p + }, addV: function (b, B, x) { + var c = B.x, + p = B.y, + R = x.x, + T = x.y, + m = this.data, + t = m.getShapeElevation(), + F = m.getTall() / 2; + b.push(c, t - F, p, R, t - F, T, R, t + F, T, R, t + F, T, c, t + F, p, c, t - F, p) + }, addH: function (A, R, U, b, c, p) { + var m = this.data, + H = m.getTall() / 2, + W = m.getShapeElevation() + (p ? H : -H); + A.push(R.x, W, R.y, U.x, W, U.y, b.x, W, b.y, b.x, W, b.y, c.x, W, c.y, R.x, W, R.y) + }, vf: function (S, _, o, H) { + var k, g = this, + U = g.gv.getFaceVisible(g.data, S); + return (o || U) && (k = _e(g, S, H), k.vs = [], k.tuv = U && (k.texture || _) ? [] : F, k.visible = U), k + } + }); + var hs, jf, Co = function (Z, n) { + fi(Co, this, [Z, n]) + }; + yc(Co, gf, { + validate: function () { + var s = this, + V = s.gv, + M = s.data, + r = s.s, + I = ns(r("points.color")); + I = [I[0], I[1], I[2]]; + var C = r("points.size"), + f = r("points.image") || "rect"; + ("rect" === f || "circle" === f) && ("rect" === f ? (hs || (hs = s._createCachedImage(f)), f = hs) : (jf || (jf = s._createCachedImage(f)), f = jf)); + var i = r("points.model"); + if (i) { + if (s._lastShapeModel !== i || !s.shapeModel) { + var G = bf(s, i); + if (!G) return; + var h = [], + P = {}; + s.eachShapeModel(function (t) { + for (var d = 0, S = t.length; S > d; d += 3) { + var o = t[d], + $ = t[d + 1], + D = t[d + 2], + Z = "" + o + "_" + $ + "_" + D; + P[Z] || (P[Z] = !0, h.push(o, $, D)) + } + }, G), s.shapeModel = { + vs: new fk(h) + }, M._pointsDirty = !0, s._lastShapeModel = i + } + } else { + var b = M.points, + u = b.length, + U = u / 3; + if (M._pointsDirty || !s.shapeModel) { + var R = new fk(b); + s.shapeModel = { + vs: R + }, M._pointsDirty = !1, s._lastShapeModel = null + } + } if (s.info = { + mat: sj(M), + size: C, + diffuse: I, + opacity: r("points.opacity"), + texture: f, + alphaTest: r("points.transparent") ? 0 : r("alphaTest") + }, M._colorsDirty) { + for (var q, X, c, v = [], x = !1, S = M.colors, $ = 0; u > $; $ += 3) q = S[$], X = S[$ + 1], c = S[$ + 2], q === Z || X === Z || c === Z ? v.push(I[0], I[1], I[2]) : (x = !0, v.push(q, X, c)); + s.shapeModel.cs = x ? new fk(v) : null, M._colorsDirty = !1 + } + if (M._sizesDirty) { + for (var Y = [], n = !1, N = M.sizes, $ = 0; U > $; $++) N[$] ? (Y.push(N[$]), n = !0) : Y.push(C); + s.shapeModel.ss = n ? new fk(Y) : null, M._sizesDirty = !1 + } + if (s._lastPointNumber !== U) { + var _ = V.pickColorMap, + H = _._pickIdUsed; + _._pickIdUsed = H + U; + for (var J = [], $ = 0; U > $; $++) { + var p = H + $, + D = rl(p); + J.push(D[0], D[1], D[2], D[3]), _[p] || (_[p] = { + data: M, + part: $ + }) + } + s.shapeModel.ps = new fk(J), s._lastPointNumber = U + } + this.dispatchBoundingBoxChanged() + }, _createCachedImage: function (N) { + var W = 128, + K = uo(), + z = K.getContext("2d"); + Bn(K, W, W, 1), Yd(z, { + width: W, + height: W, + comps: [{ + type: N, + background: "white", + borderWidth: 0, + rect: [0, 0, W, W] + }] + }, 0, 0, W, W); + var h = O.Math.generateUUID(); + return Oe[h] = K, h + }, _80o: function (M, d) { + var f = this, + L = f.gv, + b = f.shapeModel, + W = f.info; + if (b && b.vs && b.vs.length) { + var o = ts.for(M); + o.useProgram(f._asureProgram(M)), o.directState(); + var m = o.directUniforms(), + h = o.directAttribs(); + m.modelMatrix = W.mat, m.modelViewMatrix = xo([], L._viewMatrix, W.mat), m.projectionMatrix = L._projectMatrix, m.viewMatrix = L._viewMatrix, m.scale = L.getHeight() / 2, m.size = W.size, m.diffuse = W.diffuse, m.opacity = W.opacity, m.map = L.getTexture(W.texture, f.data), m.alphaTest = W.alphaTest, m.resolution = L.getDevicePixelRatio(), h.position = Sl(M, L._buffer.vs, b.vs, F), L._picking ? (m.picking = !0, h.pickColor = Sl(M, L._buffer.ps, b.ps, F), m.useColor = !1, h.color = null) : (m.picking = !1, h.pickColor = null, b.cs ? (m.useColor = !0, h.color = Sl(M, L._buffer.cs, b.cs, F)) : (m.useColor = !1, h.color = null)), b.ss ? (m.useSizeArray = !0, h.sizeArray = Sl(M, L._buffer.ss, b.ss, F)) : (m.useSizeArray = !1, h.sizeArray = null), ie(M, 0, b.vs.length / 3, M.POINTS), o.useProgram(d) + } + }, _asureProgram: function (b) { + return b._pointsShader || (b._pointsShader = this.gv._postProcessing.createShader(b, Co.shaderSrc)), b._pointsShader.program + } + }), Co.shaderSrc = "! !~v!o jp+s!nf!{njbTuu5o!jnppQe`fmmhW!j*f!xfNwbjuusdjfyqj>p!o^N!b4u!s]j^y!<3 !!]vyojjsgupbsNno!pnjbuud5f!kwpjsfqx!N)b!u>s!jfywt!jfu{jjpToup!mfp{sjq!jodpljDupjmtppsQ<` m h!!v ob!uo!psjfutjptmpvQuwjnp!o << *!!v1o/j2g!p-senf!ncspppgmt!ovbtsfuT!j){5fdBfsws!b>z!!!jetfQnfssptgqtfodbusjuw!f4Ndbfuws!j y~)!! nn!]s!p3m!p^D]w!!4 !|^!!*>s>p!m.p!D2f/t1v<) !!g~j ! f!twmpfj!e !~n!b jq!jsdplmjpoDhw*!! |^#! !~q s~f!d jb!us!!esjpgmgpvDthfbu>z!f+d!usbpcmmpfDl!jsophm!p%D%f!tvvtgfgDjpem!p s|*!!f|t m!fe!j~g!g vp!!w-f{dz5y)/!swpDmp"; + var Ds = function (i, D) { + fi(Ds, this, [i, D]), this._needRecoverPosition = !0 + }; + yc(Ds, Wj, { + _25Q: 1, + validate: function (M) { + var w = this, + k = w.data, + c = w.s, + h = k.getPoints(), + Q = h.size(); + w.dispatchBoundingBoxChanged(); + var P = k.p3(), + v = w.mat = kn(); + bo(v, P), Cl(v, k.getFinalRotation3d(), k.getRotationMode()); + var L = k.getScale3d(), + $ = k._dynamicScale3d; + if ($ && (L[0] *= $[0], L[1] *= $[1], L[2] *= $[2]), Bd(v, L), bo(v, Cj(P)), (!w.s("geometry.cache") || !w.shapeModel) && (w.shapeModel = w.info = F, Q > 1)) { + var t = w.info = {}, + _ = k.getSegments(), + s = k.getThickness(), + g = bk(h.get(0)), + r = bk(h.get(Q - 1)), + u = Q % 2; + 0 === u ? (t.c1 = bk(h.get(Q / 2 - 1)), t.c2 = bk(h.get(Q / 2))) : t.p3 = bk(h.get((Q - u) / 2)), t.s1 = g, t.s2 = bk(h.get(1)), t.t1 = bk(h.get(Q - 2)), t.t2 = r, t.list = c(Lm) === xk ? w.createTubeModel(h, _, s / 2, M) : w.createLineModel(h, _, s, "shape.border", "shape.dash") + } + }, invalidateCachedGeometry: function () { + this.shapeModel = this.info = F + }, _80o: function (d, $, C) { + var h = this, + e = h.shapeModel; + if (e) { + var a = h.gv; + gk(a, h.mat), pj(a, h.data, e, h, h.getBodyColor(), C), Gf(a) + } + } + }); + var Es = O.graph3d.VR = function (G) { + var B = this; + B.gv = G, B._controllers = [], B.switch = new Gs(B), B._enable = !1, B._defaultCallLater = O.Default.callLater, B._defaultCancelLater = td, "undefined" != typeof x && "VRFrameData" in x && (B._frameData = new x.VRFrameData), B.measureOflength = 1, B.eyesOffset = [0, 0, 0], B._orientation = new Rc.Quaternion, B._lastHeadPose = [0, 0, 0], B._offsetToBeAdd = [0, 0, 0], B._originalOrientation = null, B._fpsInfo = { + time: 0, + fps: 0, + frames: 0 + } + }; + yc(Es, o, { + ms_fire: !0, + setOriginalYRotation: function (n) { + var B = this; + if (null == n) return B._originalOrientation = null, void 0; + var i = new Rc.Vector3(0, 1, 0), + P = (new Rc.Quaternion).setFromAxisAngle(i, -n), + F = (new Rc.Matrix4).makeRotationFromQuaternion(P); + return P.setFromAxisAngle(i, n), B._originalOrientation = { + quaternion: P, + matrixInverse: F + }, !0 + }, render: function (F, n, W) { + var c = this, + E = c.gv; + if (c._deviceInAction) { + var j = c._device; + if (j) { + var v = c._measureOflength; + j.depthNear = E.getNear() * v, j.depthFar = E.getFar() * v; + var i = c._offsetToBeAdd; + if (c.eyesOffset[0] += i[0], c.eyesOffset[1] += i[1], c.eyesOffset[2] += i[2], i[0] = 0, i[1] = 0, i[2] = 0, j.isPresenting === !1) return c._controllers.forEach(function (r) { + r && r.update() + }), E.iv(), !1; + var U = c._frameData; + j.getFrameData(U); + var m = U.pose.position; + if (m) { + var r = c.toViewPosition(m); + E.setEye(r), c._orientation.fromArray(U.pose.orientation), c._originalOrientation && c._orientation.premultiply(c._originalOrientation.quaternion); + var S = new Rc.Vector3(0, 0, -10 * c._scaleFactor); + S.applyQuaternion(c._orientation), E.setCenter([r[0] + S.x, r[1] + S.y, r[2] + S.z]) + } + c._controllers.forEach(function (M) { + M && M.update() + }), E.setViewport(F, 0, 0, n / 2, W), c._viewMatrix = c._copyViewMatrix(U.leftViewMatrix), c._projectMatrix = c._copyProjectMatrix(U.leftProjectionMatrix), E.updateScene(), E.renderScene(), E.setViewport(F, n / 2, 0, n / 2, W), c._viewMatrix = c._copyViewMatrix(U.rightViewMatrix), c._projectMatrix = c._copyProjectMatrix(U.rightProjectionMatrix), E.updateScene(), E.renderScene(), c._lastViewMatrix = c._viewMatrix, c._lastProjectMatrix = c._projectMatrix, c._viewMatrix = null, c._projectMatrix = null, c.submitFrame(); + var Y = Date.now(), + x = c._fpsInfo; + return Y - x.time > 1e3 ? (x.fps = Math.round(1e3 * (x.frames + 1) / (Y - x.time)), x.time = Y, x.frames = 0) : x.frames++, !0 + } + } + }, onVRDisplayPresentChange: function () { + var h = this.isPresenting(); + this._injectGraphView(h), this.fp("present", !h, h) + }, getOrientation: function () { + return this._orientation + }, addController: function (i) { + i = i || 0; + var g = this, + s = g.getController(i); + return s ? s : (s = new Fs(g, i), g._controllers.push(s), s) + }, getController: function (K) { + K = K || 0; + for (var I = this._controllers, x = 0, C = I.length; C > x; x++) + if (I[x] && I[x].id === K) return I[x]; + return null + }, removeController: function (x) { + x = x || 0; + for (var d = this._controllers, H = 0, q = d.length; q > H; H++) + if (d[H] && d[H].id === x) return d.splice(H, 1), !0; + return !1 + }, getLastHeadPose: function () { + return this._lastHeadPose + }, toViewPosition: function (z, j) { + var S = this, + _ = S._scaleFactor, + s = S._eyesOffset, + t = S._lastHeadPose; + if (S._originalOrientation) { + var c = S._originalOrientation.quaternion, + V = new Rc.Vector3(z); + V.applyQuaternion(c).multiplyScalar(_).toArray(t) + } else t[0] = z[0] * _, t[1] = z[1] * _, t[2] = z[2] * _; + return j ? (j[0] = t[0] + s[0], j[1] = t[1] + s[1], j[2] = t[2] + s[2], j) : [t[0] + s[0], t[1] + s[1], t[2] + s[2]] + }, addEyesOffset: function (x, P, A) { + var Z = this._offsetToBeAdd; + Z[0] += x, Z[1] += P, Z[2] += A + }, _copyViewMatrix: function (U) { + var d = this, + s = d.dup(U); + if (d._originalOrientation) { + var w = (new Rc.Matrix4).fromArray(s); + w.multiply(d._originalOrientation.matrixInverse).toArray(s) + } + var j = d._scaleFactor; + s[12] *= j, s[13] *= j, s[14] *= j; + var Y = d._eyesOffset; + if (Y && (Y[0] || Y[1] || Y[2])) { + var o = Y[0], + t = Y[1], + m = Y[2]; + s[12] -= s[0] * o + s[4] * t + s[8] * m, s[13] -= s[1] * o + s[5] * t + s[9] * m, s[14] -= s[2] * o + s[6] * t + s[10] * m + } + return s + }, shutdown: function () { + var x = this._device; + x && x.isPresenting && x.exitPresent() + }, isPresenting: function () { + var y = this._device; + return y && y.isPresenting + }, _copyProjectMatrix: function (j) { + var M = this.dup(j), + _ = this._scaleFactor; + return M[14] *= _, M + }, dup: function (y, W) { + for (var d = y.length, R = W || new Array(d); d--;) R[d] = y[d]; + return R + }, getViewMatrix: function (k) { + var R = this._viewMatrix; + return R ? this.dup(R, k) : void 0 + }, getProjectMatrix: function () { + var n = this._projectMatrix; + return n ? this.dup(n) : void 0 + }, submitFrame: function () { + var s = this; + if (s._enable && s._deviceInAction) { + var w = s._device; + w && w.isPresenting && (w.submitFrame(), s.gv.iv()) + } + }, getFps: function () { + return this._fpsInfo.fps + }, intersectWorld: function (b) { + var o = this.gv; + return o.intersectObjects(b, o.dm().getDatas()) + }, setDevice: function (P) { + var U = this; + U._device = P + }, _injectGraphView: function () { + var o, b, H; + return function (J) { + var O = this.gv; + if (!J) return o && (O.getWidth = o, O.getHeight = b, O.getDevicePixelRatio = H), void 0; + var a = this._device, + r = a.getEyeParameters("left"), + j = r.renderWidth, + X = r.renderHeight; + o = O.getWidth, b = O.getHeight, H = O.getDevicePixelRatio, O.getWidth = function () { + return 2 * j + }, O.getHeight = function () { + return X + }, O.getDevicePixelRatio = function () { + return 1 + } + } + }(), + _injectCallLaterFunc: function (B) { + var T = this; + if (!B) return $e = O.Default.callLater = T._defaultCallLater, td = O.Default.cancelLater = T._defaultCancelLater, void 0; + var T = this; + $e = O.Default.callLater = function (V, H, s, J) { + var j = T._device; + return j && j.isPresenting ? J ? cd(function () { + $e(V, H, s) + }, J) : j.requestAnimationFrame(function () { + T._deviceInAction = !0, V.apply(H, s), T._deviceInAction = !1 + }) : T._defaultCallLater(V, H, s, J) + }, td = O.Default.cancelLater = function (f, P) { + var Y = T._device; + return Y && Y.isPresenting ? P ? nr(f) : Y.cancelAnimationFrame(f) : T._defaultCancelLater(f, P) + } + } + }), o.defineProperties(Es.prototype, { + enable: { + get: function () { + return this._enable + }, set: function (Y) { + var N = this; + N._enable !== Y && (N._enable = Y, Y ? (N.switch.showButton(), N._injectCallLaterFunc(!0)) : (N.shutdown(), N.switch.hideButton(), N._injectCallLaterFunc(!1)), N.fp("enable", !Y, Y)) + } + }, + measureOflength: { + get: function () { + return this._measureOflength + }, set: function (X) { + this._measureOflength = X; + var S = this._scaleFactor = 1 / X; + this._controllers.forEach(function (P) { + P && P._setScaleFactor(S) + }) + } + }, + eyesOffset: { + get: function () { + return this._eyesOffset + }, set: function (U) { + this._eyesOffset = U + } + }, + controllerModel: { + get: function () { + return this._controllerModel + }, set: function (c) { + var G; + "object" == typeof c ? (G = c.mtl, c = c.obj) : (G = c + ".mtl", c += ".obj"); + var X = this, + A = X._controllerModel; + A && A.obj === c && A.mtl === G || (A = X._controllerModel = { + obj: c, + mtl: G + }, u.loadObj(c, G, { + finishFunc: function (v, x) { + X._controllerModel === A && u.setShape3dModel("vrControllerModel", x) + } + })) + } + }, + interactive: { + get: function () { + return !!this._interactive + }, set: function (N) { + !!N != !!this._interactive && (this._interactive = N, N && this.addController(0), this.gv.getCoreInteractor().enableVR(N)) + } + } + }); + var Fs = function (q, J) { + function P(S) { + var m = navigator.getGamepads && navigator.getGamepads(); + if (m) + for (var k = 0, M = 0, w = m.length; w > k; k++) { + var c = m[k]; + if (c) { + var Y = c.id; + if ("OpenVR Gamepad" === Y || 0 === Y.indexOf("Oculus Touch") || Y.indexOf("Controller") >= 0) { + if (M === S) return c; + M++ + } + } + } + } + + function $(A, n, D) { + return Math.abs(A[0] - n[0]) < D && Math.abs(A[1] - n[1]) < D && Math.abs(A[2] - n[2]) < D ? !0 : !1 + } + var G = this; + G.vr = q, G.id = J; + var c, z, j = [0, 0], + Y = [{ + id: "thumbpad", + pressed: !1 + }, { + id: "trigger", + pressed: !1 + }, { + id: "grips", + pressed: !1 + }, { + id: "menu", + pressed: !1 + }], + w = new Dp; + w.s("shape3d", "vrControllerModel"), w.isController = !0, w.s("intersect", !1), G.getGamepad = function () { + return z + }, G.isButtonPressed = function ($) { + for (var Z, q = 0, g = Y.length; g > q; q++) + if (Z = Y[q], Z.id === $) return Z.pressed; + return !1 + }, G.getNode = function () { + return w + }; + var I = .003; + G.setRotationEpsilon = function (V) { + I = V + }; + var n = 5e-4, + m = n; + G.setPositionEpsilon = function (C) { + n = C, m = C * G.vr._scaleFactor + }, G._setScaleFactor = function (x) { + w.s3(x, x, x), m = n * x + }, G._setScaleFactor(G.vr._scaleFactor); + var l, f = new fs, + R = new br, + g = [0, 0, 0], + v = [0, 0, 0], + o = new gg, + x = new tl, + N = new Qi; + G.getRay = function () { + return l ? (N.origin.fromArray(g), N.direction.copy(x), l = !1, N) : N + }, G.update = function () { + if (c = z, z = P(J), !z || z.pose === Z) return z = null, w.s("3d.visible", !1), void 0; + if (u.getShape3dModel("vrControllerModel")) { + w.dm() || q.gv.dm().add(w), w.s("3d.visible", !0); + var y = z.pose; + if (null !== y) { + if (y.position && (G.vr.toViewPosition(y.position, g), $(w.p3(), g, m) || (l = !0, w.p3(g))), y.orientation) { + f.fromArray(y.orientation); + var X = G.vr._originalOrientation; + X && f.premultiply(X.quaternion), x.set(0, 0, -1).applyQuaternion(f).normalize(), R.makeRotationFromQuaternion(f), o.set(0, 0, 0, w.getRotationMode(), !0).setFromRotationMatrix(R), v[0] = o.x, v[1] = o.y, v[2] = o.z, $(w.r3(), v, I) || (l = !0, w.r3(v)) + } + l && q.fp("gamepad.pose", null, { + position: g, + rotation: v, + id: J + }); + var U = z.axes; + (j[0] !== U[0] || j[1] !== U[1]) && (j = [U[0], U[1]], q.fp("gamepad.axes", null, { + id: J, + axes: j + })); + var T, V, r, E, t = z.buttons; + for (T = 0, V = t.length; V > T; T++) + if (r = t[T], r && (E = r.pressed, Y[T] || (Y[T] = { + id: "button" + T, + pressed: !1 + }), E !== Y[T].pressed)) { + Y[T].pressed = E; + var H = { + id: J + }, + K = "state"; + H[K] = H._62O = E ? "down" : "up", q.fp("gamepad.button." + Y[T].id, null, H) + } + } + } + } + }, + Gs = function (s) { + this.vr = s, this._button = null + }; + yc(Gs, o, { + showButton: function () { + var T = this.assureButton(); + if (!T.parentNode) { + var Y = this.vr.gv, + b = Y.getView(); + Y._79O ? b.insertBefore(T, Y._79O) : b.appendChild(T) + } + }, hideButton: function () { + var r = this._button; + r && r.parentNode && r.parentNode.removeChild(r) + }, assureButton: function () { + var r = this._button; + return r ? r : this._button = this.createButton(this.vr.gv) + }, createButton: function (F) { + function v(j, C) { + j.textContent = C && C.isPresenting ? "关闭 VR 显示" : "开启 VR 显示" + } + + function _(n) { + h.style.display = "", h.style.cursor = "pointer", h.style.left = "calc(50% - 50px)", h.style.width = "100px", v(h, n), h.onmouseenter = function () { + h.style.opacity = "1.0" + }, h.onmouseleave = function () { + h.style.opacity = "0.5" + }, h.onclick = function () { + n.isPresenting ? n.exitPresent() : n.requestPresent([{ + source: F.getCanvas() + }]) + }, F.vr.setDevice(n) + } + + function q() { + h.style.display = "", h.style.cursor = "auto", h.style.left = "calc(50% - 75px)", h.style.width = "150px", v(h, null), h.onmouseenter = null, h.onmouseleave = null, h.onclick = null, F.vr.setDevice(null) + } + + function S(g) { + g.style.position = "absolute", g.style.bottom = "20px", g.style.padding = "12px 6px", g.style.border = "1px solid #fff", g.style.borderRadius = "4px", g.style.color = "#000", g.style.font = "normal 13px sans-serif", g.style.textAlign = "center", g.style.opacity = "0.5", g.style.outline = "none", g.style.zIndex = "999" + } + if ("getVRDisplays" in navigator) { + var h = this._button = U.createElement("button"); + return h.style.display = "none", S(h), K(x, "vrdisplayconnect", function (j) { + _(j.display) + }), K(x, "vrdisplaydisconnect", function () { + q() + }), K(x, "vrdisplaypresentchange", function (e) { + v(h, e.display), F.vr.onVRDisplayPresentChange() + }), navigator.getVRDisplays().then(function (S) { + S.length > 0 ? _(S[0]) : q() + }), h + } + var o = U.createElement("a"); + return o.href = "https://webvr.info", o.innerHTML = "当前不支持 webvr", o.style.left = "calc(50% - 90px)", o.style.width = "180px", o.style.textDecoration = "none", S(o), o + } + }), o.defineProperties(Gs.prototype, {}); + var Hs = O.graph3d.PostProcessing = function (C) { + function T() { + if (!I) { + var h = C.getGL(); + I = new Eh.RenderTarget(C, h, null, null, { + samples: z.renderTextureSamples || 1 + }), d = new Cm.Shader(h, O.vs, O.fs), V = Cm.Buffer.createIndexBuffer(h, new Uint16Array([0, 2, 1, 1, 2, 3])), i = Cm.Buffer.createVertexBuffer(h, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1])) + } + } + var I, d, V, i, G = this, + q = {}, + s = !1; + ! function () { + o.keys(Hs).forEach(function (G) { + q[G] = new Hs[G](C) + }) + }(), G.getModule = function (E) { + return E ? q[E] : G + }, G.getModuleList = function () { + return o.keys(q) + }, G._serializable = !0, G.handleDataModleChange = function (W, j) { + W && (G._serializable && W.setPostProcessingData(G.serialize()), W.removeSerializeListener(G.onDataModelSerialize, G)), j && (j.addSerializeListener(G.onDataModelSerialize, G), G.deserialize(j)) + }, G.onDataModelSerialize = function (K) { + "serialize" === K.type ? G._serializable && (C.dm()._postProcessingData = G.serialize()) : "deserialize" === K.type && G.deserialize(C.dm()) + }, G.isDeserializeDisabled = function (s) { + return !G._serializable || s.a("sceneBloom") !== Z + }, G.isSerializable = function () { + return G._serializable + }, G.setSerializable = function (L) { + G._serializable = L, L || C.dm().setPostProcessingData(Z) + }, G.serialize = function () { + var a, B, p, Z, S = {}; + for (B in q) + if (p = q[B], Z = p.serializeProperties) { + a = {}, p.enable && (a.enable = !0); + for (var l in Z) { + var T = p[l]; + T != Z[l] && (a[l] = T) + } + o.keys(a).length && (S[B.toLowerCase()] = a) + } + return S + }, G.deserialize = function (k) { + var y, F, R, b, s, U = {}, + z = {}; + for (y in q) { + R = q[y], b = R.serializeProperties; + var c = {}, + E = "scene" + y, + N = k.a(E); + N !== Z && (c.enable = N); + for (var s in b) N = k.a(E + s[0].toUpperCase() + s.slice(1)), N !== Z && N !== b[s] && (c[s] = N); + wd(c) || (z[y[0].toLowerCase() + y.slice(1)] = c) + } + if (wd(z) && (z = k.getPostProcessingData()), z) + for (F in z) + if (F && (y = F[0].toUpperCase() + F.slice(1), R = q[y])) { + U[y] = !0, b = z[F]; + var L = !!b.enable; + G.enableModule(y, L), y = "scene" + y, k.a(y, L), R.resetProperties && R.resetProperties(); + for (s in b) + if ("enable" !== s) { + var N = b[s]; + R[s] = N, k.a(y + s[0].toUpperCase() + s.slice(1), N) + } + } + for (y in q) U[y] || (R = q[y], R.enable = !1, R.resetProperties && R.resetProperties()) + }, G.decodeShader = function (I) { + var y, z, X, T = "", + E = ""; + for (X = 0; X < I.length; X++) y = I[X], "%" === y ? y = "'" : "a" === y ? y = '"' : "]" === y && (y = "\\"), z = String.fromCharCode(y.charCodeAt(0) - 1), X % 2 ? E += z : T = z + T; + return E + T + }, G.createShader = function (_, v, A) { + var e = v.indexOf("^#"), + g = G.decodeShader(v.substr(0, e)), + O = G.decodeShader(v.substr(e + 2)); + if (A) { + var d = A(g, O); + d && d.vs && (g = d.vs), d && d.fs && (O = d.fs) + } + return new Cm.Shader(_, g, O) + }, G.enableModule = function (z, h) { + var u, E, o, U = z.split(","); + for (u = 0, E = U.length; E > u; u++) o = U[u].trim(), q[o] && (q[o].enable = h); + s = !1; + for (o in q) + if (q[o].enable) { + s = !0; + break + } + s && T() + }; + var O = { + vs: ["attribute vec2 pos;", "varying vec2 vUv;", "void main(void) {", "gl_Position = vec4(pos.x * 2.0 - 1.0, -pos.y * 2.0 + 1.0, 0.0, 1.0);", "vUv = vec2(pos.x, 1.0 - pos.y);", "}"].join("\n"), + fs: ["precision highp float;", "uniform sampler2D image;", "varying vec2 vUv;", "void main() {", "gl_FragColor = texture2D(image, vUv);", "}"].join("\n") + }; + G.render = function (h, L, w) { + if (s) { + I.setSize(h, L, w), I.bind(h); + var T = h.getParameter(h.COLOR_CLEAR_VALUE); + T && 0 === T[0] && 0 === T[1] && 0 === T[2] && 0 === T[3] ? T = null : qe(h, [0, 0, 0, 0]), h.clear(h.COLOR_BUFFER_BIT | h.DEPTH_BUFFER_BIT), C.setViewport(h, 0, 0, L, w), C.renderScene(), I.unbind(h); + for (var Y = 0, b = C._glCapabilities.maxAttributes; b > Y; Y++) h.disableVertexAttribArray(Y); + var r, A = I; + for (r in q) A = q[r]._42(h, A) || A; + return C.setViewport(h, 0, 0, L, w), T && qe(h, T), h.clear(h.COLOR_BUFFER_BIT | h.DEPTH_BUFFER_BIT), d.bind(), h.activeTexture(h.TEXTURE0 + 0), an(h, A.texture), d.uniforms.image = 0, V.upload(), i.upload(), d.attributes.pos.pointer(i), h.drawElements(h.TRIANGLES, 6, h.UNSIGNED_SHORT, 0), an(h, null), h.useProgram(C._prg), !0 + } + } + }, + Is = O.graph3d.PostProcessing.Bloom = function (S) { + function H() { + var B = S.getGL(); + if (B) + for (var A = S._postProcessing, K = 0; f > K; K++) Z[K] = A.createShader(B, Is._35Q, function (i, R) { + return { + fs: R.replace(/DEFINE_VALUE/g, $[K]).replace("%OVERRIDE_ALPHA_DEFINE%", I ? "#define OVERRIDE_ALPHA" : "") + } + }) + } + + function k() { + var X = S.getWidth(), + _ = S.getHeight(); + if (X && _) { + B = [X, _], L = !0; + var V, Q = S.getGL(), + r = Math.round(B[0] / 2), + P = Math.round(B[1] / 2); + for (x = new Eh.RenderTarget(S, Q, r, P), V = 0; f > V; V++) u.push(new Eh.RenderTarget(S, Q, r, P)), n.push(new Eh.RenderTarget(S, Q, r, P)), r = Math.round(r / 2), P = Math.round(P / 2); + var T = S._postProcessing; + O = T.createShader(Q, Is._34Q), H(), G = T.createShader(Q, Is._36Q, function (U, P) { + return { + fs: P.replace(/NUM_MIPS/g, f) + } + }), j = T.createShader(Q, Is.finalShader), M = Cm.Buffer.createIndexBuffer(Q, new Uint16Array([0, 2, 1, 1, 2, 3])), e = Cm.Buffer.createVertexBuffer(Q, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1])) + } + } + var F, W, K, I, r, M, e, E, m = this, + s = !1, + L = !1; + this.serializeProperties = { + strength: 1.5, + threshold: .55, + radius: .4, + overrideAlpha: !0, + selective: !1 + }, this.resetProperties = function () { + var m = this.serializeProperties; + for (var R in m) this[R] = m[R] + }, o.defineProperties(m, { + enable: { + get: function () { + return s + }, set: function (d) { + !!s != !!d && (s = d, d && !L && k(), S.iv()) + } + }, + strength: { + get: function () { + return F + }, set: function (Z) { + F !== Z && (F = Z, S.iv()) + } + }, + threshold: { + get: function () { + return W + }, set: function (q) { + W !== q && (W = q, S.iv()) + } + }, + radius: { + get: function () { + return K + }, set: function (C) { + K !== C && (K = C, S.iv()) + } + }, + overrideAlpha: { + get: function () { + return I + }, set: function (t) { + !!I != !!t && (I = t, L && H(), S.iv()) + } + }, + selective: { + get: function () { + return r + }, set: function (n) { + !!r != !!n && (r = !!n, S.iv()) + } + } + }), this.resetProperties(); + var x, O, G, j, B = [256, 256], + u = [], + n = [], + f = 5, + $ = [3, 5, 7, 9, 11], + Z = []; + m._42 = function (_, P) { + function A(b, J, z, $) { + So(_, J.frame), S.setViewport(_, 0, 0, J.width, J.height), $ ? $(_) : _.clear(_.COLOR_BUFFER_BIT | _.DEPTH_BUFFER_BIT), V !== b && b.bind(); + var k = 0; + for (var P in z) { + var a = z[P]; + a instanceof WebGLTexture && (_.activeTexture(_.TEXTURE0 + k), an(_, a), a = k, k++), b.uniforms[P] = a + } + for (V !== b && (M.upload(), e.upload(), b.attributes.pos.pointer(e), V = b), _.drawElements(_.TRIANGLES, 6, _.UNSIGNED_SHORT, 0); k--;) _.activeTexture(_.TEXTURE0 + k), an(_, null); + Ar(_) + } + if (s && (L || (k(), L))) { + var V; + if (r) { + E || (E = new Eh.RenderTarget(S, _)), E.setSize(_, P.width, P.height), E.bind(_); + var z = _.getParameter(_.COLOR_CLEAR_VALUE); + z && 0 === z[0] && 0 === z[1] && 0 === z[2] && 1 === z[3] ? z = null : qe(_, [0, 0, 0, 1]), _.clear(_.COLOR_BUFFER_BIT | _.DEPTH_BUFFER_BIT), S.setViewport(_, 0, 0, P.width, P.height), _._blooming = !0, S.renderScene(), _._blooming = !1, z && qe(_, z), E.unbind(_) + } + A(O, x, { + smoothWidth: .01, + luminosityThreshold: W, + tDiffuse: r ? E.texture : P.texture + }); + var U, d = x, + g = Math.round(B[0] / 2), + h = Math.round(B[1] / 2); + for (U = 0; f > U; U++) A(Z[U], u[U], { + colorTexture: d.texture, + direction: [1, 0], + texSize: [g, h] + }), A(Z[U], n[U], { + colorTexture: u[U].texture, + direction: [0, 1], + texSize: [g, h] + }), g = Math.round(g / 2), h = Math.round(h / 2), d = n[U]; + return A(G, u[0], { + blurTexture1: n[0].texture, + blurTexture2: n[1].texture, + blurTexture3: n[2].texture, + blurTexture4: n[3].texture, + blurTexture5: n[4].texture, + bloomStrength: F, + bloomRadius: K, + bloomTintColor: [1, 1, 1] + }), A(j, P, { + image: u[0].texture + }, function (N) { + ts.for(N).glState.blend.apply({ + enabled: !0, + equation: N.FUNC_ADD, + func: [N.SRC_ALPHA, N.ONE] + }) + }), ts.for(_).glState.blend.apply({ + equation: _.FUNC_ADD, + func: [_.SRC_ALPHA, _.ONE_MINUS_SRC_ALPHA, _.ONE, _.ONE_MINUS_SRC_ALPHA] + }), P + } + } + }; + Is._34Q = "~b uw!fwdV3w! w!!.w!f1d/53)!q+p!ty/^#~q sf!ss3pEm!puDEhjbgsgGv`tmfh< 3!!bwiVqwm1!)u5fdyfuwv!s>f!3sEp)m!puDEujvgqguvvtpf!-5!dwfVww !<**f!ywffud!4))u!p1e/!3>:!:w-!!u1b/p6m9g8 -w!fwdV3w! w!!.w!f1d/53)!q+p!ty/^#~q sgfjdejotfj$p on!qsmpfmsp3DEh!bdspGm`pmshU ffytumvfs$f << *v1o/j2g!p-snnv!Twufidh3j!fuxf0ynTvjT{fftd!3s!pemjpsDfhdbusjGp`om ,$!enfvgTjuoifh!jTfJxH NB,M!QnIvBT`fEtFvGgJgOjFe& |! 3sffmuqvnsbot!!14/d4f:w9 :<5c!h+s!/f*yuqf)t!g.g1P/w6v!!+,!!yw!V+w!!y-0f)s!vtujyhfnUbs!p+m!ptdj!h)nEb3*f*s0vtujyhfnub!<> !~2 fwmpqjneb!tn!b4jdof)w* !<|y !w+f!df3{!jjTowwoTjj!{+f!!o>p!j2u/d1f!s0j!eu!f>y!Tujf{tfgj!Tggm!p-byu))gTeJQHoNbBj*tu!!xx!fujbhpimugT v)!uhbbpvmtgt!j>b!oyQ!eugb)p1m/g1 -|!!g*T!j,h,n!bj*!<< TwVfJdE5B!Su`fMyFuOvSsFfLQ!j=y!!j>!!u!vjs!fu3oEj)!!)dsppmgp sv!n", Is._36Q = "~b uw!fwdV3w! w!!.w!f1d/53)!q+p!ty/^#~q sp!p2m/c3)!5.d!fgwb!d+u!p*s1p!nsSpbmepjDvhtb*s q; q++) A[q] = H[q] / 180; + D.iv() + } + } + }, + saturation: { + get: function () { + return Z + }, set: function (Y) { + if (Z !== Y && 7 === Y.length) { + for (var M = 0; 7 > M; M++) Z[M] = Y[M] / 100; + D.iv() + } + } + }, + lightness: { + get: function () { + return W + }, set: function (Y) { + if (W !== Y && 7 === Y.length) { + for (var Z = 0; 7 > Z; Z++) W[Z] = Y[Z] / 100; + D.iv() + } + } + } + }), T._42 = function (J, N) { + if (q) { + C || g(); + var G = N.width, + O = N.height; + if (G && O) { + w.setSize(J, G, O), So(J, w.frame), D.setViewport(J, 0, 0, w.width, w.height), J.clear(J.COLOR_BUFFER_BIT | J.DEPTH_BUFFER_BIT), t.bind(), J.activeTexture(J.TEXTURE0 + 0), an(J, N.texture); + var _ = t.uniforms; + return _.image = 0, _.hue = A, _.saturation = Z, _.lightness = W, y.upload(), x.upload(), t.attributes.pos.pointer(x), J.drawElements(J.TRIANGLES, 6, J.UNSIGNED_SHORT, 0), an(J, null), Ar(J), w + } + } + } + }; + Ks.hueSaturationShader = "!! b~u!u sf!dw3V!ww!V w<<* 1 /!2w!p-j1e/!1n!b-j1o/)2w!p,j!e1*/!3|! +!!hzm/`tQppqt.j!u-j1p/o2!!>.!!w1f/d35!)+q!pyt/^#!! q~s!f db!nsqpmmfpsD3hEb!sjGn`bmhhf!< f!tmtt]iN!B Y `~S!B O~H!F ^<!!gfmhpobbuS!titvffoBumimh-j!mg!m pv!ff!h>o!bjSooWpbjmuvbfs!v,u!b)ti!v f3!/f1h1>*!!ssffuuovvspod!`wfbvmiv)f!!g,j!!2 /|1!<* ,!,fsmftufo!vjpgd!`)fwvbim!v !!sffmutofv!psdf`ufvvsio!!uwobjm)v!fst!bfuhvosbbsu!j pm!pfbhuo!bjso!W*b7m!v>f?-!!fghmopbbsu)!!tgbju!v s~b!u j~p!o Bb!ofhhfo*b!s|! !|g!m*p6b/u1!!w,b!m*vsff!u>o!vjpodW`bfmvvif)!u+b!p)m2g/!1=!!,i!)t!bgujv!s b|u!j*p,o,Bsmfmu!o,v!ptdb`ufvvsib!uv!fs-f!u1o/v1p-d!`2f/v1i*!u!!fmhjohbisu!oufotjt!S bp!mmgj!h ih!iiu!oufbtptmSgb!o hu!vmstoi!!j4odWfbwm!v fu!vsspom!pjdo!W5bdmfvwf!! ,|!!)*w)!o+j!b)n2!/e1j!p.w!!j o W~b!m vp!biu!! g~3!- !!,i!vif!* !||! *!1j/g1!!)=i!vif)!!=g!j1!/ 1 *~ !! iE!d2!/01!<* h!!f.m!tsf)!!j,g!!1)/i5v!f>!!?i!!2 /|1!*f t!mifv!f~!!. >7!/i1!! +|!!i*vyfb*N!d=!!>2>/!1h*) !!gsjf!tf!t>m!fg!2~!!, !<)bgu3m!f.E!dg!20*!!*+c!!7./!1h!)+!!>i!vif!< |!!f*mytbfN!dj!g>!>)!)s3)/!1g!j+!! i v.!!g13/<3 )!!f0m!tbfu!mjfgE!d)!);4!/*1o!j+N!di!v,f!*y!b=N!d3)/!10*! b!usmfftE!d>!!@g!26!/,1!!)=g!3m!!.>!!gt2!* ! +!!.b!uimvffE*d!!+u!b7p/m1gb!Ngd2)3!smh!c ) wc!*>c!!1-/h1)*o!j|n !!-ssh)co!j>n!!w>f!do4j)Nidt!mu/b{p*m!!|c !!ugbmppmbgu!! g<3hj!gh!!)uibtpmm/g{!! = !!sg!3u!b>p!migt!m /<{1!/+1!!)>2!/m1!!u,b!pimtgm!/ z<*1m!ttf! u!bgp3m!g>!! i!!iit!mu/bzp!m.g!!i t|m!/*zd!!+4!diftwm)/m{t~!!3 /<1c!h+s!!iotsmv/u{f!s.!! g~3!< < *!*s1h/c4/0s1!/>2!)i!v.f!3ys/hmct)ig!2--3!gg!3--2!gi)tcmh/sy3!f,v!i)!2>/!1c0/4c/h1s*!* << *!ys/hmct/ih!!->3!gi!v-f23gs)hc"; + var Ls = O.graph3d.PostProcessing.Blur = function (B) { + function T() { + d = !0; + var V = B.getGL(); + z = new Eh.RenderTarget(B, V), k = B._postProcessing.createShader(V, Ls.hBlurShader), w = B._postProcessing.createShader(V, Ls.vBlurShader), c = Cm.Buffer.createIndexBuffer(V, new Uint16Array([0, 2, 1, 1, 2, 3])), G = Cm.Buffer.createVertexBuffer(V, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1])) + } + var c, G, k, w, z, R, D = this, + C = !1, + d = !1; + this.serializeProperties = { + value: 0 + }, this.resetProperties = function () { + this.value = 0 + }, o.defineProperties(D, { + enable: { + get: function () { + return C + }, set: function (H) { + !!C != !!H && (C = H, H && !d && T(), B.iv()) + } + }, + value: { + get: function () { + return R + }, set: function (h) { + R !== h && (R = h, B.iv()) + } + } + }), this.resetProperties(), D._42 = function (r, m) { + return C ? D.drawImpl(r, m, R) : void 0 + }, D.drawImpl = function (Z, x, L, R) { + d || T(); + var P = x.width, + j = x.height; + if (P && j) { + R && (P *= R, j *= R), z.setSize(Z, P, j), So(Z, z.frame), B.setViewport(Z, 0, 0, z.width, z.height), Z.clear(Z.COLOR_BUFFER_BIT | Z.DEPTH_BUFFER_BIT), k.bind(), Z.activeTexture(Z.TEXTURE0 + 0), an(Z, x.texture); + var A = k.uniforms; + A.image = 0, A.value = L / P, c.upload(), G.upload(), k.attributes.pos.pointer(G), Z.drawElements(Z.TRIANGLES, 6, Z.UNSIGNED_SHORT, 0), Ar(Z), So(Z, x.frame), B.setViewport(Z, 0, 0, x.width, x.height), Z.clear(Z.COLOR_BUFFER_BIT | Z.DEPTH_BUFFER_BIT), w.bind(), Z.activeTexture(Z.TEXTURE0 + 0), an(Z, z.texture); + var A = w.uniforms; + return A.image = 0, A.value = L / j, c.upload(), G.upload(), w.attributes.pos.pointer(G), Z.drawElements(Z.TRIANGLES, 6, Z.UNSIGNED_SHORT, 0), Ar(Z), an(Z, null), z + } + } + }; + Ls.hBlurShader = "!! b~u!u sf!dw3V!ww!V w<<* 1 /!2w!p-j1e/!1n!b-j1o/)2w!p,j!e1*/!3|! +!!hzm/`tQppqt.j!u-j1p/o2!!>.!!w1f/d35!)+q!pyt/^#!! q~s!f d!!isjphmipqD!hgbmspGb`um ,!!wnpvjte!! n!!-wffvdm5b)w!!1+/!11!/*4)!3udffywu!v-sffh3bEn)j!!j)nEb3hffs-v!uwyffdu3!)>!,w!Vnwv/ty!! .w!!u)f3ydufvws!f-3fEh)b!njjn!b)hEf3-f!swvfudy3f)u!!w>V,w!/nyv!t.!! 4w!!u)f3ydufvws!f-3fEh)b!njjn!b)hEf3-f!swvfudy3f)u!!w>V,w!/nyv!t.!! 3)!Eu3ffysuvvusyff3uE!)>!,j!nnbvhtf!- != Z || 0 >= T || (H._90I || (e = H._90I = {}), e[E] || (e[E] = new xr), qp(t, H.tx() + D, H.ty() + $, Z, T), sn(t, M), H._view.insertBefore(t, H._79O), M.onParentAdded && M.onParentAdded(t), e[E].add(t)) + } + }, d._76o = function () { + var t = this, + v = t._90I; + if (v) { + for (var G in v) v[G].each(function ($) { + yj($) + }); + delete t._90I + } + }, d._77o = function (Y) { + var Q = this; + if (Q._90I) { + var C = Q._90I[Y]; + C && (C.each(function (O) { + yj(O) + }), delete Q._90I[Y]) + } + } + }, _47o: function (g) { + g.getValue = function (P, p) { + return p.getValue ? p.getValue(P, p, this) : jq(P, p.getAccessType(), p.getName()) + }, g.setValue = function (f, _, I) { + if (_.isEmptiable(f) || "" !== I || (I = Z), _.isNullable(f) || I != F) { + var b = this, + j = _.getName(f), + k = _.getAccessType(f), + y = _.getValueType(f); + y === fj && dk(I) ? I = Zb(I) : y === Mo && dk(I) ? I = parseFloat(I) : y === hm && dk(I) && (I = "true" === I), b._batchEditable && _._batchEditable && b.isSelected(f) ? b.sm().each(function (x) { + _.setValue ? _.setValue(x, _, I, b) : Di(x, k, j, I) + }) : _.setValue ? _.setValue(f, _, I, b) : Di(f, k, j, I) + } + }, g.setCurrentEditor = function (y) { + this.endEditing(), this._currentEditor = y, this.redraw() + }, g.isEditing = function (c, O) { + var L = this, + D = L._currentEditor; + if (!D) return !1; + if (O) { + var $ = D.info; + return $ ? ($.column || $.property) === O && $.data === c : !1 + } + return !0 + }, g.endEditing = function (J) { + var m = this, + q = m._currentEditor; + q && (delete m._currentEditor, q.commitValue && q.commitValue(q.info, J), m.redraw(), m.getDataModel().endTransaction()) + }, g.beginEditing = function (o) { + this.endEditing(); + var U = this, + g = o.column || o.property; + if (g.beginEditing) g.beginEditing(o); + else { + var b = o.data, + D = o.value, + n = U.getSelectBackground(b), + G = g.getEnumValues(b), + v = g.getSlider(b), + R = g.getColorPicker(b); + if (v) { + var A = Wn(Vs.Slider, v); + return A.setValue(D), A.getView().onblur = function () { + U.endEditing() + }, A.isInstant() && (A.onValueChanged = function () { + U.setValue(b, g, A.getValue()) + }), Ts(A, o), void 0 + } + if (R || g.getValueType(b) === dg) { + var f = Wn(Vs.ColorPicker, R); + return f.setValue(D), f.onClosed = function () { + U.endEditing() + }, f.isInstant() && (f.onValueChanged = function (x, Z) { + U.setValue(b, g, Z) + }), Ts(f, o), f.open(), void 0 + } + if (G) { + if (Vs.ComboBox) { + var Q = new Vs.ComboBox; + Q.setValue(D), Q.setValues(G), Q.setLabels(g.getEnumLabels(b)), Q.setIcons(g.getEnumIcons(b)), Q.setEditable(g.isEnumEditable(b)), Q.setStrict(g.isEnumStrict(b)), Q.setMaxHeight(g.getEnumMaxHeight(b)), Q.setDropDownWidth(g.getEnumDropDownWidth(b)), Q.onClosed = function () { + U.endEditing() + }, Ts(Q, o), Q.open() + } else Us(nj, o, n, G, g); + return + } + var w = g.getValueType(b); + if (w === hm || El(D)) return U.setValue(b, g, !D), void 0; + if (g.getItemEditor(b)) { + var r = gp(g.getItemEditor(b)), + h = new r(b, g, U, o), + J = h.getView(); + return J._17Q = h, h.setValue(D), uj(J), Ts(J, o), h.editBeginning && h.editBeginning(), void 0 + } + Us("input", o, n, F, g) + } + } + }, _44o: function (D) { + D.init = function (R) { + var Q = this, + v = Q.th = new jt(R), + C = Q._view = ve(1, Q); + Q.tv = Q._tableView = R, sn(C, v.getView()), sn(C, R.getView()), v.mp(function (g) { + g.property === Hh && Q.iv() + }), Q.iv() + }, D.getTableView = function () { + return this.tv + }, D.getTableHeader = function () { + return this.th + }, D.getDataModel = function () { + return this.tv.dm() + }, D.getColumnModel = function () { + return this.tv.getColumnModel() + }, D.setColumns = function (D) { + this.tv.setColumns(D) + }, D.addColumns = function (P) { + this.tv.addColumns(P) + }, D.endEditing = function () { + this.tv.endEditing() + }, D.validateImpl = function () { + var W = this, + H = W.th, + P = zp(H), + o = { + x: 0, + y: 0, + width: W.getWidth(), + height: P + }; + qp(H, o), o.y = P, o.height = q(0, W.getHeight() - P), qp(W.tv, o) + } + }, ms_vs: function (y) { + y._41o = function () { + return this._29I.height < this._59I + }, y._43o = function () { + var r = this; + r._41o() && (r._58I || (cd(function () { + r._94O() + }, Lg), r.iv()), r._58I = new Date) + }, y._94O = function () { + var Q = this; + if (Q._58I) { + var o = new Date; + o.getTime() - Q._58I.getTime() >= Lg ? (delete Q._58I, Q.iv()) : cd(function () { + Q._94O() + }, Lg) + } + }, y._93I = function () { + var X = this, + O = X._27I; + if (X._58I || !X._autoHideScrollBar) { + O || sn(X._79O, O = X._27I = dd()); + var J = X._29I, + $ = J.height, + v = X._59I, + m = X.getScrollBarSize(), + U = J.width - m - 2, + e = $ * (-X.ty() / v), + I = $ * ($ / v), + E = O.style; + v > $ ? (un > I && (e = e + I / 2 - un / 2, 0 > e && (e = 0), e + un > $ && (e = $ - un), I = un), E.visibility = Pd, E.background = X.getScrollBarColor(), E.borderRadius = m / 2 + oe, qp(O, U, e, m, I)) : E.visibility = fc + } else O && (O.style.visibility = fc) + } + }, ms_hs: function (e) { + e._40o = function () { + return this._29I.width < this._91I + }, e._42o = function () { + var e = this; + e._40o() && (e._95O || (cd(function () { + e._94I() + }, Lg), e.iv()), e._95O = new Date) + }, e._94I = function () { + var v = this; + if (v._95O) { + var o = new Date; + o.getTime() - v._95O.getTime() >= Lg ? (delete v._95O, v.iv()) : cd(function () { + v._94I() + }, Lg) + } + }, e._92I = function () { + var C = this, + t = C._28I; + if (C._95O || !C._autoHideScrollBar) { + t || sn(C._79O, t = C._28I = dd()); + var a = C._29I, + R = a.width, + E = C._91I, + M = C.getScrollBarSize(), + r = a.height - M - 2, + H = R * (-C.tx() / E), + O = R * (R / E), + X = t.style; + E > R ? (un > O && (H = H + O / 2 - un / 2, 0 > H && (H = 0), H + un > R && (H = R - un), O = un), X.visibility = Pd, X.background = C.getScrollBarColor(), X.borderRadius = M / 2 + oe, qp(t, H, r, O, M)) : X.visibility = fc + } else t && (t.style.visibility = fc) + } + } + }), _c(tm, ee(16, 16, [{ + type: Tq, + rect: [1, 1, 14, 14], + background: Bc + }, { + type: Xe, + rect: [1, 1, 14, 14], + width: 1, + color: Em + }, { + type: bl, + points: [13, 3, 7, 12, 4, 8], + borderWidth: 2, + borderColor: "#FFF" + }])), _c(He, ee(16, 16, { + type: Xe, + rect: [1, 1, 14, 14], + width: 1, + color: Em + })), _c(kj, ee(16, 16, [{ + type: Eq, + rect: [2, 2, 12, 12], + borderWidth: 1, + borderColor: Em, + background: "#FFF" + }, { + type: Eq, + rect: [4, 4, 8, 8], + background: Bc + }])), _c(yb, ee(16, 16, { + type: Eq, + rect: [2, 2, 12, 12], + borderWidth: 1, + borderColor: Em + })), fb._15Q = function (h) { + h._29I = nl, h._59I = 0, h._91I = 0, h._5o = function (m) { + var x = this; + x._30I = new xr, x._rows = new xr, x._rowMap = {}, x._31I = 0, x._14I = 0, x._view = ve(1, x), x._canvas = uo(x._view), sn(x._view, x._79O = dd()), x.dm(m ? m : new jn) + }, h.getCheckIcon = function (s) { + var o = this.sm(), + V = o.co(s); + return o.sg() ? ii(V ? kj : yb) : ii(V ? tm : He) + }, h.checkData = function (V) { + var t = this.sm(), + j = t.co(V); + t.sg() && j || (this._32o = 1, j ? t.rs(V) : t.as(V), delete this._32o) + }, h.getDataAt = function (i) { + i.target && (i = this.lp(i)); + var Z = T(i.y / this._rowHeight), + P = this._rows; + return 0 > Z || Z >= P.size() ? F : P.get(Z) + }, h.onDataDoubleClicked = function () { }, h.onDataClicked = function () { }, h.adjustTranslateX = function () { + return 0 + }, h.adjustTranslateY = function (E) { + var z = this.getHeight() - this._59I; + return z > E && (E = z), E > 0 ? 0 : A(E) + }, h.onPropertyChanged = function (Y) { + var E = this, + o = Y.property; + Ps[o] ? E.ivm() : Os[o] || E.redraw(), o === gq ? E._42o() : o === wb && E._43o() + }, h.getLabel = function (V) { + return V.toLabel() + }, h.getLabelFont = function () { + return this._labelFont + }, h.getLabelColor = function (w) { + var x = this; + if (x.isCheckMode()) { + if (x._focusData === w) return x._labelSelectColor + } else if (x.isSelected(w)) return x._labelSelectColor; + return x._labelColor + }, h.getStartRowIndex = function () { + return this._31I + }, h.getEndRowIndex = function () { + return this._14I + }, h.getRowDatas = function () { + return this._rows + }, h.getRowIndex = function (E) { + return this._rowMap[E._id] + }, h.getRowSize = function () { + return this._rows.size() + }, h.getViewRect = function () { + return Pm(this._29I) + }, h.isVisible = function (T) { + return this._visibleFunc ? this._visibleFunc(T) : !0 + }, h.getCurrentSortFunc = function () { + return this._sortFunc + }, h.setDataModel = function (P) { + var a = this, + O = a._dataModel, + B = a._selectionModel; + O !== P && (O && (O.umm(a.handleDataModelChange, a), O.umd(a.handleDataPropertyChange, a), O.umh(a.handleHierarchyChange, a), B || O.sm().ums(a.handleSelectionChange, a)), a._dataModel = P, P.mm(a.handleDataModelChange, a), P.md(a.handleDataPropertyChange, a), P.mh(a.handleHierarchyChange, a), B ? B._21I(P) : P.sm().ms(a.handleSelectionChange, a), a.fp("dataModel", O, P)) + }, h.validateModel = function () { + var s = this; + s._rows.clear(), s._rowMap = {}, s.buildChildren(s._dataModel._roots); + var V = s._rows = s._rows.toList(s.isVisible, s), + _ = 0, + Q = s.getCurrentSortFunc(), + L = V.size(); + for (Q && V.sort(Q); L > _; _++) s._rowMap[V.get(_)._id] = _ + }, h.buildChildren = function (w) { + var t = this; + w.each(function (v) { + t._rows.add(v), t.buildChildren(v._children) + }) + }, h.handleDataModelChange = function () { + this.ivm() + }, h.handleDataPropertyChange = function (x) { + "parent" === x.property ? this.ivm() : this.invalidateData(x.data) + }, h.handleHierarchyChange = function () { + this.ivm() + }, h.handleSelectionChange = function (s) { + s.datas.each(this.invalidateData, this), this.onSelectionChanged(s) + }, h.onSelectionChanged = function (m) { + var p = this, + X = p.sm(); + !p.isAutoMakeVisible() || 1 !== X.size() || "set" !== m.kind && "append" !== m.kind || p._32o || p.makeVisible(X.ld()) + }, h.handleBackgroundClick = function (I) { + jj(I) && !this.isCheckMode() && this.sm().cs() + }, h.makeVisible = function (e) { + e && (this._23I = e, this.iv()) + }, h.scrollToIndex = function (Q) { + var p = this, + V = p._29I, + T = V.height, + q = p._rowHeight, + y = q * Q; + Q >= 0 && Q < p._rows.size() && T > 0 && (y + q > V.y + T ? p.ty(-y + T - q) : y < V.y && p.ty(-y)) + }, h.autoScroll = function (r, w) { + var t = this, + c = t._rowHeight, + I = c, + O = c / 4, + W = t._29I, + S = t.lp(r), + D = { + x: t.tx(), + y: t.ty() + }; + return c > 0 && W && (S.x - W.x < I ? t.translate(O, 0) : W.x + W.width - S.x < I && t.translate(-O, 0), S.y - W.y < I ? t.translate(0, O) : W.y + W.height - S.y < I && t.translate(0, -O)), D.x = t.tx() - D.x, D.y = t.ty() - D.y, w && (w.x += D.x, w.y += D.y), D + }, h.getTopRowOrderSelection = function () { + var D = this.sm().getTopSelection(), + g = {}, + S = new xr; + return D.each(function (f) { + g[f._id] = f + }), this._rows.each(function (e) { + g[e._id] && S.add(e) + }), S + }, h.getRowOrderSelection = function () { + var H = new xr; + return this._rows.each(function (X) { + this.isSelected(X) && H.add(X) + }, this), H + }, h.ivm = function () { + this.invalidateModel() + }, h.invalidateModel = function () { + var I = this; + I._96I || (I._96I = 1, I._32I = 1, delete I._24I), I.iv() + }, h.redraw = function () { + var F = this; + F._32I || (F._32I = 1, delete F._24I, F.iv()) + }, h.invalidateData = function (A) { + var n = this; + Xf ? n.redraw() : n._32I || (n._24I || (n._24I = {}), n._24I[A._id] = A, n.iv()) + }, h.getFocusData = function () { + return this._focusData + }, h.setFocusDataById = function (h) { + this.setFocusData(this.dm().getDataById(h)) + }, h.setFocusData = function ($) { + var q = this, + J = q._focusData; + J !== $ && (q._focusData = $, q.fp("focusData", J, $), J && q.invalidateData(J), $ && (q.invalidateData($), q.isAutoMakeVisible() && q.makeVisible($))) + }, h.drawRowBackground = function (S, W, w, L, Z, c, j) { + var K = this, + T = K.isCheckMode(); + (W === K._focusData && T || w && !T) && fl(S, L, Z, c, j, K.getSelectBackground(W)) + }, h.drawData = function (q, C, o) { + var y = this, + e = y._rowHeight, + F = e * o, + U = y._29I, + f = U.x, + d = U.width; + q.save(), q.beginPath(), q.rect(f, F, d, e), q.clip(), y._87o(y.drawRow(q, C, y.isSelected(C), f, F, d, e), o, f, F, d, e), q.restore(), y._rowLineVisible && fl(q, f, F + e - 1, d, 1, y._rowLineColor) + }, h._12I = function (t) { + var e = this, + F = e._31I, + y = e._29I, + j = y.x, + T = y.y, + _ = y.width, + c = y.height; + for (t.beginPath(), t.rect(j, T, _, c), t.clip(), t.clearRect(j, T, _, c), e._76o(), e._93db(t); F < e._14I; F++) e.drawData(t, e._rows.get(F), F); + e._92db(t) + }, h._13I = function (g) { + for (var l, n = this, y = n._rowHeight, E = n._29I, p = E.x, D = E.width, W = n._31I, h = n._30I; W < n._14I; W++) l = n._rows.get(W), n._24I[l._id] && h.add({ + data: l, + index: W + }); + h.isEmpty() || (g.beginPath(), h.each(function (T) { + g.rect(p, T.index * y, D, y) + }), g.clip(), h.each(function (n) { + g.clearRect(p, n.index * y, D, y) + }), h.each(function (Y) { + n._77o(Y.index) + }), n._93db(g), h.each(function (U) { + n.drawData(g, U.data, U.index) + }), n._92db(g), h.clear()) + }, h.preValidateModel = function () { + this.endEditing && this.endEditing() + }, h.validateImpl = function () { + var r = this, + c = r._canvas, + p = r.getWidth(), + B = r.getHeight(), + k = r._rowHeight, + v = r._32I; + (p !== c.clientWidth || B !== c.clientHeight) && (Bn(c, p, B), v = 1); + var I = _ && !Ad; + r._96I && !I && (r.preValidateModel(), r.validateModel()); + var W = r._29I, + $ = { + x: -r.tx(), + y: -r.ty(), + width: p, + height: B + }, + V = r._rows.size(), + C = Wd(c), + E = r._23I; + v || jg($, W) || (v = 1), r._29I = $, r._59I = V * k, r._31I = T($.y / k), r._14I = s(($.y + $.height) / k), r._31I < 0 && (r._31I = 0), r._14I > V && (r._14I = V), r._99I && v && r._99I(), (r._40o() || r._41o()) && (r._59I += r.getScrollBarSize(), r._99I && v && (r._91I += r.getScrollBarSize())), tf(C, r.tx(), r.ty(), 1), v ? r._12I(C) : r._24I && r._13I(C), r._93I(), r._92I(), C.restore(), r._32I = r._24I = r._96I = F, E && (r.scrollToIndex(r.getRowIndex(E)), delete r._23I), r.tx(r.tx()), r.ty(r.ty()) + }, h.canHandleSelectMode = function () { + return !0 + } + }, fb._48o = function (L) { + L._rootVisible = !0, L._rootData = F, L._35o = function () { + this._expandMap = {}, this._levelMap = {} + }, L.validateModel = function () { + var $ = this, + U = $._rootData; + $._rows.clear(), $._levelMap = {}, $._rowMap = {}, $._currentLevel = 0, U ? $._rootVisible ? $.isVisible(U) && $.buildData(U) : $.buildChildren(U) : $.buildChildren(), delete $._currentLevel + }, L.buildData = function (K) { + var J = this, + n = K._id, + b = J._rows; + J._rowMap[n] = b.size(), b.add(K), J._levelMap[n] = J._currentLevel, J.isExpanded(K) && (J._currentLevel++, J.buildChildren(K), J._currentLevel--) + }, L.buildChildren = function (u) { + var O = this, + a = u ? u._children : O._dataModel._roots, + k = O.getCurrentSortFunc(); + k && O.isChildrenSortable(u) ? a.toList(O.isVisible, O).sort(k).each(O.buildData, O) : a.each(function (N) { + O.isVisible(N) && O.buildData(N) + }) + }, L.getLevel = function (i) { + return this._levelMap[i._id] + }, L.getToggleIcon = function (s) { + var G = this, + X = G._loader, + q = G._collapseIcon; + return X && !X.isLoaded(s) ? q : s.hasChildren() ? G.isExpanded(s) ? G._expandIcon : q : F + }, L.isCheckMode = function () { + return this._checkMode != F + }, L.isChildrenSortable = function () { + return !0 + }, L.handleDataModelChange = function (p) { + var h = this; + p.kind === Ce ? delete h._expandMap[p.data._id] : p.kind === Tg && (h._expandMap = {}), h.ivm() + }, L.toggle = function (I) { + var C = this; + C.isExpanded(I) ? C.collapse(I) : C.expand(I) + }, L.isExpanded = function (W) { + return 1 === this._expandMap[W._id] + }, L.expand = function (Q) { + var P = this, + H = P._loader; + P.isExpanded(Q) || (H && !H.isLoaded(Q) && H.load(Q), P._expandMap[Q._id] = 1, P.ivm(), P.onExpanded(Q)) + }, L.onExpanded = function () { }, L.collapse = function (u) { + var f = this; + f.isExpanded(u) && (delete f._expandMap[u._id], f.ivm(), f.onCollapsed(u)) + }, L.onCollapsed = function () { }, L.expandAll = function (V) { + if (V) this.expand(V), V.eachChild(function (y) { + this.expandAll(y) + }, this); + else { + var L = this; + L._dataModel.each(function (T) { + T.hasChildren() && (L._expandMap[T._id] = 1) + }), L.ivm() + } + }, L.collapseAll = function () { + this._expandMap = {}, this.ivm() + }, L.makeVisible = function (U) { + if (U) { + var S = this; + if (!S._rootData || U.isDescendantOf(S._rootData)) { + for (var i = U._parent; i;) S.expand(i), i = i._parent; + S._23I = U, S.iv() + } + } + }, L.checkData = function (I) { + var T, V = this, + q = V._checkMode, + S = V.sm(), + J = S.co(I); + if (!S.sg() || !J) { + if (V._32o = 1, q === lp) J ? S.rs(I) : S.as(I); + else if (q === Wf) T = new xr(I), T.addAll(I._children); + else if ("descendant" === q) T = new xr, Rs(I, T); + else if ("all" === q && (T = new xr, Rs(I, T), !J)) + for (var _ = I._parent; _;) T.add(_), _ = _._parent; + T && (J ? S.rs(T) : S.as(T)), delete V._32o + } + }, L.drawTree = function (F, P, w, g, m, B, C) { + var Z = this, + l = Z._indent, + k = Z._levelMap[P._id], + t = Z.getIconWidth(P), + U = ii(Z.getToggleIcon(P)); + U ? (g += l * k, Ii(F, U, g + l / 2, m + C / 2, P, Z), g += l) : g += l * (k + 1), Z._checkMode && (Ii(F, Z.getCheckIcon(P), g + l / 2, m + C / 2, P, Z), g += l), Z.drawIcon(F, P, g, m, t, C), Z.drawLabel(F, P, g + t, m, C) + } + }, fb._14Q = function (p) { + p.getIcon = function (E) { + return E.getIcon() + }, p.getIconWidth = function (K) { + return this.getIcon(K) ? this._indent : 0 + }, p.drawIcon = function (Z, Y, $, S, L, s) { + if (L) { + var p = this, + j = p.getBodyColor(Y), + b = ii(p.getIcon(Y), j); + b && (s -= p.isRowLineVisible() ? 1 : 0, qk(Z, b, Mg, $, S, L, s, Y, p, j), Ie(Z, p.getBorderColor(Y), $, S, L, s)) + } + }, p.drawLabel = function (U, b, B, H, C) { + var s = this; + nd(U, s.getLabel(b), s.getLabelFont(b), s.getLabelColor(b), B, H, 0, C) + } + }, fb._50o = function (r) { + r._98I = function () { + var Z = this, + b = Z._39o = new jn; + Z._60I = new xr, b.mm(Z._17o, Z), b.md(Z._18o, Z), b.mh(Z._19o, Z) + }, r.setColumns = function (n) { + this._39o.clear(), this.addColumns(n) + }, r.addColumns = function (b) { + var U = this._39o; + b.forEach(function (h) { + if (!(h instanceof Ys)) { + var e = gp(h.className); + h = Wn(e ? e : Ys, h) + } + U.add(h) + }) + }, r.onColumnClicked = function () { }, r.onCheckColumnClicked = function () { }, r._3Q = function (s) { + for (var A, i = 0, L = this._60I, Y = L.size(); Y > i; i++) + if (A = L.get(i), A.column === s) return A; + return F + }, r.getColumnAt = function (H) { + var b = this._4Q(H); + return b ? b.column : F + }, r._4Q = function (T) { + for (var X = this, b = T.target ? X.lp(T).x : T.x, o = X._60I, L = 0; L < o.size(); L++) { + var l = o.get(L), + U = l.startX; + if (b >= U && b < U + l.column.getWidth()) return l + } + return F + }, r.getToolTip = function (T) { + var h = this, + t = h.getDataAt(T), + j = h.getColumnAt(T); + return t && j ? j.getToolTip(t, h) : F + }, r.adjustTranslateX = function (Z) { + var h = this.getWidth() - this._91I; + return h > Z && (Z = h), Z > 0 ? 0 : A(Z) + }, r._99I = function () { + var p = this, + Q = p._29I, + e = p._60I; + e.clear(), p._91I = 0, p._39o._roots.each(function (f) { + if (f.isVisible()) { + var L = p._91I + f.getWidth(); + p._91I <= Q.x + Q.width && L >= Q.x && e.add({ + column: f, + startX: p._91I + }), p._91I = L + } + }) + }, r.drawData = function (i, A, $) { + var W = this, + V = W._rowHeight, + e = V * $, + c = W.isSelected(A), + l = W._29I, + y = l.x, + b = l.width; + W.drawRowBackground(i, A, c, y, e, b, V), W._60I.each(function (S) { + var F = S.column, + g = S.startX, + E = F.getWidth(); + E > 0 && !W.isEditing(A, F) && (i.save(), i.beginPath(), i.rect(g, e, E, V), i.clip(), W._87o(W.drawCell(i, A, c, F, g, e, E, V), $, g, e, E, V), W._columnLineVisible && fl(i, g + E - 1, e, 1, V, W._columnLineColor), i.restore()) + }), W._rowLineVisible && fl(i, y, e + V - 1, b, 1, W._rowLineColor) + }, r.drawCell = function (H, O, X, $, b, c, D, a) { + var P = this; + if ($.drawCell) return $.drawCell(H, O, X, $, b, c, D, a, P); + var U = P.getValue(O, $); + Ss(H, U, $, P.getLabelFont(O, $, U), P.getLabelColor(O, $, U), b, c, D, a, O, P) + }, r.getColumnModel = function () { + return this._39o + }, r._17o = function () { + this.redraw() + }, r._18o = function (R) { + var v = this; + R.data === v._sortColumn && Ns[R.property] ? v.ivm() : (v._42o(), v.redraw()) + }, r._19o = function () { + this.redraw() + }, r.getCurrentSortFunc = function () { + var a = this, + I = a._sortColumn; + if (I && I.isSortable()) { + var w = I.getSortFunc(), + u = Sh === I.getSortOrder() ? 1 : -1; + return w || (w = Sd), + function (Q, v) { + return w.call(a, a.getValue(Q, I), a.getValue(v, I), Q, v) * u + } + } + return a._sortFunc + }, r.isCellEditable = function (H, b, m) { + return b.isEditable() && this.isEditable() ? b.isCellEditable ? b.isCellEditable(H, b, m, this) : !0 : !1 + }, r._37O = function (x, a) { + if (jj(a)) + for (var H = this, S = H.lp(a), z = H._60I, J = H._rowHeight, R = H._29I, E = R.x, d = R.y, f = R.width, o = R.height, k = 0; k < z.size(); k++) { + var Q = z.get(k), + B = Q.startX, + y = Q.column, + q = y.getWidth(); + if (y !== H._31o && y !== H._4o && S.x >= B && S.x < B + q && H.isCellEditable(x, y, a)) { + var O = { + x: B, + y: H.getRowIndex(x) * J, + width: q, + height: J + }, + Y = { + x: O.x + H.tx(), + y: O.y + H.ty(), + width: O.width, + height: O.height + }, + c = 0, + l = 0; + return O.x < E ? c = O.x - E : O.x + O.width > E + f && (c = O.x + O.width - E - f), c && (H.tx(H.tx() - c), Y.x -= c), O.y < d ? l = O.y - d : O.y + J > d + o && (l = O.y + J - d - o), l && (H.ty(H.ty() - l), Y.y -= l), H.beginEditing({ + data: x, + column: y, + value: H.getValue(x, y), + event: a, + rect: O, + editorRect: Y, + view: H + }), void 0 + } + } + } + }, Vs.BaseItemEditor = function (x, S, v, m) { + this._data = x, this._column = S, this._master = v, this._editInfo = m + }, Ws("BaseItemEditor", o, { + ms_ac: ["data", "column", "master", "editInfo"], + editBeginning: function () { }, getView: function () { }, getValue: function () { }, setValue: function () { } + }); + var Xs = O.Tab = function () { + fi(Xs, this) + }; + ki("Tab", Qp, { + ms_ac: ["view", "closable", "disabled", "visible"], + _icon: F, + _closable: !1, + _disabled: !1, + _visible: !0, + setParent: jm + }); + var Ys = O.Column = function () { + fi(Ys, this) + }; + ki("Column", Qp, { + _46o: 1, + ms_ac: ["accessType", "valueType", Pd, Me, Zh, ul, "align", dg, "sortOrder", go, "sortable", "clickable", "nullable", "emptiable", "slider", "colorPicker", "itemEditor"], + _visible: !0, + _width: 80, + _sortOrder: Sh, + _sortFunc: F, + _sortable: !0, + _clickable: !0, + setWidth: function (p) { + 16 > p && (p = 16); + var D = this._width; + this._width = p, this.fp(ul, D, p) + }, getToolTip: function (L, R) { + return this.formatValue(R.getValue(L, this)) + } + }); + var Zs = O.Property = function () { + fi(Zs, this) + }; + ki("Property", Qp, { + _46o: 1, + ms_ac: ["accessType", "valueType", Me, Zh, "categoryName", dg, "align", "nullable", "emptiable", "slider", "itemEditor", "colorPicker"], + _categoryName: F, + getToolTip: function (F, t, R) { + var $ = this; + return t ? $.formatValue(R.getValue(F, $)) : R.getPropertyName($) + } + }), Vs.AccordionView = function () { + var X = this; + X._20o = {}, X._21o = new xr, X._10o = F, X._9o = F, X._11o = F, X._view = ve(0, X), X.iv() + }, Ws("AccordionView", o, { + ms_v: 1, + ms_fire: 1, + ms_ac: [Zi, xj, "titleHeight", fe, Vm, "titleBackground", "selectWidth", op, "orientation", "separatorColor"], + _expandIcon: u.accordionViewExpandIcon, + _collapseIcon: u.accordionViewCollapseIcon, + _titleHeight: Jk, + _labelColor: u.accordionViewLabelColor, + _labelFont: u.accordionViewLabelFont, + _titleBackground: u.accordionViewTitleBackground, + _selectBackground: u.accordionViewSelectBackground, + _selectWidth: u.accordionViewSelectWidth, + _orientation: "v", + _separatorColor: u.accordionViewSeparatorColor, + onPropertyChanged: function () { + this.iv() + }, getView: function () { + return this._view + }, getTitles: function () { + return this._21o + }, getCurrentTitle: function () { + return this._10o + }, add: function (x, p, P, g) { + var q = this, + C = dd(), + b = { + content: p, + div: C, + canvas: uo(C), + icon: g + }; + if (q._20o[x]) throw x + " already exists"; + var J = b.downEventFunc = function (Y) { + Qc(Y) + }, + d = b.upEventFunc = function (F) { + Qc(F), jj(F) && (q._10o === x ? q.collapse() : q.expand(x)) + }; + [Xd, fp].forEach(function (m) { + K(C, m, J) + }), [Sj, cj].forEach(function (L) { + K(C, L, d) + }), C.style.cursor = Zk, sn(q._view, C), q._20o[x] = b, q._21o.add(x), P && q.expand(x), q.iv() + }, remove: function (y) { + var i = this, + K = i._20o[y]; + if (K) { + var n = K.div; + yj(n), [Xd, fp].forEach(function (Y) { + b(n, Y, K.downEventFunc) + }), [Sj, cj].forEach(function (p) { + b(n, p, K.upEventFunc) + }), delete i._20o[y], i._21o.remove(y), i.iv() + } + }, clear: function () { + var D = this; + D._21o.toArray().forEach(D.remove, D), D._20o = {}, D._21o.clear(), D.iv() + }, isExpanded: function (N) { + return this._10o === N + }, expand: function (s) { + var R = this; + R._20o[s] && R._10o !== s && (R._10o = s, R.onExpanded(s), R.iv()) + }, onExpanded: function () { }, collapse: function () { + var w = this; + w._10o && (w.onCollapsed(w._10o), delete w._10o, w.iv()) + }, onCollapsed: function () { }, initCanvas: function (X, f, C) { + Bn(X, f, C); + var i = Wd(X); + return tf(i, 0, 0, 1), i.clearRect(0, 0, f, C), i + }, drawTitle: function (V, C, A, f, r) { + var o = this, + i = ii(r.icon), + R = o.isExpanded(C), + w = o._titleHeight, + S = o._titleBackground, + O = o._selectWidth, + u = o._separatorColor, + $ = ii(R ? o._expandIcon : o._collapseIcon), + T = O + 4; + fl(V, 0, 0, A, f, S), R && O && fl(V, 0, 0, O, f, o._selectBackground), (R || o._21o.get(o._21o.size() - 1) !== C) && fl(V, 0, f - 1, A, 1, u ? u : Ee(S)), i && (Ii(V, i, T + xc(i) / 2, w / 2), T += xc(i) + 2), nd(V, C, o.getLabelFont(C), o.getLabelColor(C), T, 0, 0, w), $ && Ii(V, $, A - xc($) / 2 - 4, w / 2) + }, validateImpl: function () { + var Y = this, + m = Y._view, + k = 0, + P = 0, + i = Y.getWidth(), + b = Y.getHeight(), + G = Y._titleHeight, + l = Y._21o.size() * G, + W = Y._11o, + w = Y._9o; + delete Y._11o, delete Y._9o, Y._21o.each(function (t) { + var z, r, e = Y._20o[t], + h = e.content, + T = Y._10o === t; + Oj(Y) ? (qp(e.div, k, 0, G, b), z = Y.initCanvas(e.canvas, G, b), wh(z, 0, b), jc(z, -N), Y.drawTitle(z, t, b, G, e), z.restore(), T ? (r = q(0, i - l), h && (Y._11o = h, Y._9o = Bq(h), qp(h, k + G, 0, r, b)), k += G + r) : k += G) : (qp(e.div, 0, P, i, G), z = Y.initCanvas(e.canvas, i, G), Y.drawTitle(z, t, i, G, e), z.restore(), T ? (r = q(0, b - l), h && (Y._11o = h, Y._9o = Bq(h), qp(h, 0, P + G, i, r)), P += G + r) : P += G) + }); + var C = Y._9o; + W && W !== Y._11o && W.endEditing && W.endEditing(), C && C !== w && sn(m, C), w && w !== C && yj(w) + } + }), Vs.SplitView = function ($, p, E, Q) { + var w = this, + o = w._dividerDiv = dd(), + v = w._60O = uo(), + h = w._61O = uo(), + W = v.style, + s = h.style; + w._view = ve(1, w), sn(w._view, o), W.msTouchAction = iq, W.pointerEvents = iq, W.cursor = Zk, s.msTouchAction = iq, s.pointerEvents = iq, s.cursor = Zk, $ && w.setLeftView($), p && w.setRightView(p), E && w.setOrientation(E), Q != F && w.setPosition(Q), w.setStatus(Fk), new $s(w) + }, Ws("SplitView", o, { + ms_v: 1, + ms_fire: 1, + ms_ac: ["continuousLayout", "dividerSize", "dividerBackground", "toggleIcon", "togglable", "dragOpacity", "orientation", "draggable", "status"], + _continuousLayout: !1, + _position: .5, + _togglable: !0, + _orientation: "h", + _draggable: !0, + _dividerSize: u.splitViewDividerSize, + _dividerBackground: u.splitViewDividerBackground, + _dragOpacity: u.splitViewDragOpacity, + _toggleIcon: u.splitViewToggleIcon, + onPropertyChanged: function () { + this.iv() + }, getDividerDiv: function () { + return this._dividerDiv + }, getPosition: function () { + return this._position + }, setPosition: function (n, t) { + var M = this, + g = M._position; + isNaN(n) || (t || (M._82O = 0 > n ? -1 : n > 1 ? 1 : 0), M._position = n, M.fp(pr, g, n)) + }, getLeftView: function () { + return this._leftView + }, setLeftView: function (r) { + var U = this, + q = U._leftView, + o = U._view; + if (U._leftView !== r) { + if (q && q !== U._rightView) { + var l = Bq(q); + l.parentNode === o && yj(l) + } + if (U._leftView = r, r) { + var V = Bq(r); + V.parentNode !== o && o.insertBefore(V, U._dividerDiv) + } + U.fp("leftView", q, r) + } + }, getRightView: function () { + return this._rightView + }, setRightView: function (C) { + var s = this, + g = s._rightView, + y = s._view; + if (s._rightView !== C) { + if (g && g !== s._leftView) { + var $ = Bq(g); + $.parentNode === y && yj($) + } + if (s._rightView = C, C) { + var A = Bq(C); + A.parentNode !== y && y.insertBefore(A, s._dividerDiv) + } + s.fp("rightView", g, C) + } + }, validateImpl: function () { + var Y = this, + R = Y._draggable, + S = Y._position, + F = Y.getWidth(), + G = Y.getHeight(), + b = Y._dividerSize, + D = Y._dividerBackground, + f = nf ? 18 : 8, + t = Y._dividerDiv, + e = Y._82O, + u = Y._60O, + g = Y._61O, + j = Y._toggleIcon, + p = Y._status, + I = t.style, + o = null, + M = nf ? 20 : 4, + Q = j.comps[0]; + b >= f || 0 === b ? Y._coverDiv && (yj(Y._coverDiv), delete Y._coverDiv) : Y._coverDiv || (Y._coverDiv = dd(), Uq && (Y._coverDiv.style.background = nb), sn(t, Y._coverDiv)), Y._togglable ? u.parentNode || (sn(t, u), sn(t, g)) : (yj(u), yj(g)); + var L = Y._coverDiv, + k = Y._leftView, + v = Y._rightView; + if (Oj(Y)) { + if (b > F && (b = F), p === Fk) + if (1 === e) var X = V(S, F), + w = q(0, F - b - X); + else -1 === e ? (w = V(-S, F), X = q(0, F - b - w)) : (X = A((F - b) * S), w = q(0, F - b - X)); + else "cl" === p ? (X = 0, w = q(0, F - b)) : "cr" === p && (w = 0, X = q(0, F - b)); + k && qp(k, 0, 0, X, G), v && qp(v, X + b, 0, w, G), qp(t, X, 0, b, G), Y._22o = X, L && (qp(L, b / 2 - f / 2, 0, f, G), L.style.cursor = R ? Nc : ""), t.style.cursor = R ? Nc : ""; + var n = t.clientHeight / 2, + i = t.clientWidth; + Bn(u, i, i), qp(u, 0, n - i - M, i, i), o = Wd(u), tf(o, 0, 0, 1), Q.rotation = -N, Yd(o, j, 0, 0, i, i), o.restore(), Bn(g, i, i), qp(g, 0, n + M, i, i), o = Wd(g), tf(o, 0, 0, 1), Q.rotation = N, Yd(o, j, 0, 0, i, i), o.restore() + } else { + if (b > G && (b = G), p === Fk) + if (1 === e) var $ = V(S, G), + P = q(0, G - b - $); + else -1 === e ? (P = V(-S, G), $ = q(0, G - b - P)) : ($ = A((G - b) * S), P = q(0, G - b - $)); + else "cl" === p ? ($ = 0, P = q(0, G - b)) : "cr" === p && (P = 0, $ = q(0, G - b)); + k && qp(k, 0, 0, F, $), v && qp(v, 0, $ + b, F, P), qp(t, 0, $, F, b), Y._22o = $, L && (qp(L, 0, b / 2 - f / 2, F, f), L.style.cursor = R ? zi : ""), I.cursor = R ? zi : ""; + var Z = t.clientWidth / 2, + i = t.clientHeight; + Bn(u, i, i), qp(u, Z - i - M, 0, i, i), o = Wd(u), tf(o, 0, 0, 1), Q.rotation = 0, Yd(o, j, 0, 0, i, i), o.restore(), Bn(g, i, i), qp(g, Z + M, 0, i, i), o = Wd(g), tf(o, 0, 0, 1), Q.rotation = W, Yd(o, j, 0, 0, i, i), o.restore() + } + I.background = D + } + }); + var $s = function (d) { + this.sv = d, this.addListeners() + }; + yc($s, o, { + ms_listener: 1, + getView: function () { + return this.sv.getView() + }, handle_touchstart: function (P) { + var H = this, + k = H.sv, + a = k._dividerDiv, + l = k._60O, + C = k._61O, + b = k._status, + z = P.target; + if (z === l) b === Fk ? k.setStatus("cl") : "cr" === b && k.setStatus(Fk); + else if (z === C) b === Fk ? k.setStatus("cr") : "cl" === b && k.setStatus(Fk); + else if (Bf(P) && (z === a || z === k._coverDiv) && (Qc(P), k.isDraggable())) { + k.getLeftView(), k.getRightView(); + var R = H.maskDiv = dd(); + if (R.style.left = 0, R.style.top = 0, R.style.width = k.getWidth() + "px", R.style.height = k.getHeight() + "px", k.getView().appendChild(R), !k.isContinuousLayout()) { + var Z = H.resizeDiv = dd(); + Z.style.left = a.style.left, Z.style.top = a.style.top, Z.style.width = a.style.width, Z.style.height = a.style.height, Z.style.opacity = k.getDragOpacity(), Z.style.background = k.getDividerBackground(), sn(H.getView(), Z) + } + H._lastAbsPosition = k._22o, H._86o = Oj(k) ? lb(P).x : lb(P).y, Ui(H, P) + } + }, handleWindowTouchMove: function (y) { + Bf(y) && this.update(y, this.sv.isContinuousLayout()) + }, handleWindowTouchEnd: function (d) { + var O = this; + O.update(d, !0), O.sv.setStatus(Fk), O.maskDiv && yj(O.maskDiv), O.resizeDiv && yj(O.resizeDiv), O.maskDiv = O.resizeDiv = F + }, handle_mousedown: function (x) { + jj(x) && this.handle_touchstart(x) + }, handleWindowMouseMove: function (o) { + this.handleWindowTouchMove(o) + }, handleWindowMouseUp: function (C) { + this.handleWindowTouchEnd(C) + }, update: function (k, x) { + var t = this, + q = t.sv, + h = Oj(q) ? q.getWidth() : q.getHeight(), + g = q._dividerSize, + W = t._lastAbsPosition - t._86o; + Oj(q) ? (W += lb(k).x, W > h - g && (W = h - g), 0 > W && (W = 0), t.resizeDiv && (t.resizeDiv.style.left = W + oe)) : (W += lb(k).y, W > h - g && (W = h - g), 0 > W && (W = 0), t.resizeDiv && (t.resizeDiv.style.top = W + oe)), x && h !== g && (1 === q._82O ? q.setPosition(W, 1) : -1 === q._82O ? q.setPosition(W - h + g, 1) : q.setPosition(W / (h - g), 1)) + } + }), Vs.TabView = function () { + var t = this, + P = t._view = ve(1, t), + M = t._91O = dd(1), + D = t._tabModel = new jn, + A = D.sm(), + u = t.invalidate; + t._7o = new xr, t._canvas = uo(M), sn(P, M), sn(P, t._92O = dd(1)), A.setSelectionMode(vq), A.ms(t.handleSelectionChange, t), D.mm(u, t), D.mh(u, t), D.md(u, t), t._interactor = new _s(t), t.iv() + }, Ws("TabView", o, { + ms_v: 1, + ms_fire: 1, + ms_tx: 1, + ms_ty: 1, + ms_lp: 1, + ms_ac: ["movable", "tabGap", "tabHeight", "tabPosition", fe, Vm, "tabHPadding", "tabBackground", "selectWidth", op, "moveBackground", "insertColor"], + _tabHPadding: 0, + _tabPosition: $c, + _tabHeight: Jk, + _tabGap: u.tabViewTabGap, + _labelColor: u.tabViewLabelColor, + _labelFont: u.tabViewLabelFont, + _tabBackground: u.tabViewTabBackground, + _selectWidth: u.tabViewSelectWidth, + _selectBackground: u.tabViewSelectBackground, + _moveBackground: u.tabViewMoveBackground, + _insertColor: u.tabViewInsertColor, + _movable: !0, + handleSelectionChange: function () { + this._selectionChanged = !0, this.invalidate() + }, getContentDiv: function () { + return this._92O + }, getTitleDiv: function () { + return this._91O + }, getTabModel: function () { + return this._tabModel + }, add: function (Q, V, x) { + var b, c = this._tabModel; + return Q instanceof Xs ? (b = Q, V && b.setView(V)) : (b = new Xs, b.setName(Q), b.setView(V)), c.add(b), x && c.sm().ss(b), b + }, getLabel: function (v) { + return v.toLabel() + }, onPropertyChanged: function () { + this.iv() + }, _7Q: function (s) { + this._23o = s, this.iv() + }, get: function (g) { + var a = this, + p = a._tabModel; + if (Bp(g)) return p._roots.get(g); + if (dk(g)) { + var G; + return p.each(function (i) { + g === a.getLabel(i) && (G = i) + }), G + } + return g instanceof Xs ? g : F + }, select: function (I) { + this._tabModel.sm().ss(this.get(I)) + }, remove: function (G) { + var v = this; + if (G = v.get(G)) { + var w = v._tabModel, + s = w._roots.indexOf(G); + v._tabModel.remove(G), v.selectByIndex(--s) + } + }, getCurrentTab: function () { + return this._8o + }, hideTabView: function (B, t) { + t.parentNode === this._92O && (Db(t) ? (t.style.display = Jc, t._tab_ = B) : yj(t), Um()) + }, showTabView: function (t, x) { + Db(x) && (x.style.display = "block", x._tab_ = t), x.parentNode !== this._92O && (sn(this._92O, x), Um()) + }, _24o: function () { + var p, b = this, + E = b._8o, + P = b._9o, + L = b._tabModel.sm().ld(); + L && (p = Bq(L.getView())), p !== P && (P && (E.getView() && E.getView().endEditing && E.getView().endEditing(), b.hideTabView(E, P)), p && b.showTabView(L, p)), b._8o = L, b._9o = p, E !== L && b.onTabChanged(E, L) + }, onTabClosing: function () { + return !0 + }, onTabChanged: function () { }, onTabClosed: function (F, M) { + this.selectByIndex(--M) + }, selectByIndex: function (M) { + var x = this, + C = x._tabModel, + z = C.size(); + if (z && !C.sm().ld()) { + M == F && (M = 0), M >= z && (M = z - 1), 0 > M && (M = 0); + for (var $ = M; $ >= 0; $--) { + var U = x.get($); + if (!U.isDisabled()) return x.select(U), U + } + for ($ = M + 1; z > $; $++) + if (U = x.get($), !U.isDisabled()) return x.select(U), U + } + }, getTabWidth: function (u) { + var E = this.getTabHPadding(), + x = 4 + 2 * E, + C = ii(u.getIcon()); + C && (x += xc(C, u) + 4); + var P = this.getLabel(u); + return P && (x += ln(this.getLabelFont(u), P).width + 4), u.isClosable() && (x += 10), x + }, drawTab: function (f, c, V, $, e, q, H) { + var x, S = this, + b = S._tabPosition, + Q = this.getTabHPadding(), + v = V + 4 + Q, + C = S._selectWidth, + m = ii(c.getIcon()), + z = c.isDisabled(), + i = S.getLabelColor(c), + d = S.getLabelFont(c), + k = S.getLabel(c), + J = S._selectBackground, + t = b === nq + "-vertical", + T = b === fm + "-vertical"; + (t || T) && (v = $ + 4 + Q), z && (f.globalAlpha = Nn), fl(f, V, $, e, q, H), c === S._8o && C && (b === $c ? fl(f, V, $ + q - C, e, C, J) : b === nq ? fl(f, V + e - C, $, C, q, J) : b === fm ? fl(f, V, $, C, q, J) : t ? fl(f, V + e - C, $, C, q, J) : T ? fl(f, V, $, C, q, J) : fl(f, V, $, e, C, J)); + var D = e / 2; + if (t && (wh(f, D, $ + q / 2), jc(f, W), wh(f, -D, -$ - q / 2)), m) { + var j = oo(m, c), + G = xc(m, c); + if (t || T) { + var R = V + e / 2, + M = v + j / 2; + wh(f, R, M), jc(f, N), wh(f, -R, -M), Ii(f, m, V + e / 2, v + j / 2, c, S), wh(f, R, M), jc(f, -N), wh(f, -R, -M), v += j + 4 + } else Ii(f, m, v + G / 2, $ + q / 2, c, S), v += G + 4 + } + return t || T ? (wh(f, e / 2, v + e / 2), jc(f, N), wh(f, -e / 2, -v - e / 2), nd(f, k, d, i, V, v, q, e), wh(f, e / 2, v + e / 2), jc(f, -N), wh(f, -e / 2, -v - e / 2)) : nd(f, k, d, i, v, $, e, q), t && (wh(f, D, $ + q / 2), jc(f, -W), wh(f, -D, -$ - q / 2)), c.isClosable() && (x = T ? { + x: V + e - 12, + y: $ + q - 12, + width: 12, + height: 12 + } : { + x: V + e - 12, + y: $ + 2, + width: 12, + height: 12 + }, this.drawCloseIcon(c, f, i, x)), z && (f.globalAlpha = 1), x + }, drawCloseIcon: function (Z, $, v, P) { + var D = P.x, + J = P.y; + $.strokeStyle = v, $.lineWidth = 1, $.beginPath(), $.moveTo(D + 2, J + 8), $.lineTo(D + 8, J + 2), $.moveTo(D + 8, J + 8), $.lineTo(D + 2, J + 2), $.stroke() + }, getTabAt: function (c) { + var d = this._interactor._8Q(c); + return d ? d.tab : null + }, validateImpl: function () { + var T = this; + T._24o(); + var N, n = T._canvas, + W = T._tabPosition, + i = T._91O, + X = T._92O, + p = T._tabModel, + F = T.getWidth(), + c = T.getHeight(), + b = T._tabHeight, + d = T._7o, + v = T._tabGap, + B = W === $c, + C = W === nq, + L = W === fm, + k = W === nq + "-vertical", + r = W === fm + "-vertical", + g = T._23o, + e = 0; + if ((C || L) && p._roots.each(function (n) { + e = q(T.getTabWidth(n), e) + }), B ? (qp(i, 0, 0, F, b), N = { + x: 0, + y: b, + width: F, + height: q(0, c - b) + }) : C ? (qp(i, 0, 0, e, c), N = { + x: e, + y: 0, + width: q(0, F - e), + height: c + }) : L ? (qp(i, F - e, 0, e, c), N = { + x: 0, + y: 0, + width: q(0, F - e), + height: c + }) : k ? (qp(i, 0, 0, b, c), N = { + x: b, + y: 0, + width: q(0, F - b), + height: c + }) : r ? (qp(i, F - b, 0, b, c), N = { + x: 0, + y: 0, + width: q(0, F - b), + height: c + }) : (qp(i, 0, c - b, F, b), N = { + x: 0, + y: 0, + width: F, + height: q(0, c - b) + }), qp(X, N), k || r) { + T._9o && (N.x = 0, qp(T._8o.getView(), N)), Bn(n, b, c); + var Z = Wd(n), + y = 0; + if (tf(Z, 0, T.ty(), 1), Z.clearRect(0, 0, b, c), d.clear(), p._roots.each(function (h) { + if (h.isVisible()) { + var P, K = T.getTabWidth(h); + g && g.tab === h || (P = T.drawTab(Z, h, 0, y, b, K, T._tabBackground)), d.add({ + _75o: P, + tab: h, + startY: y, + endY: y + K, + height: K + }), y += K + v + } + }), T._23Q = q(0, y - v), g) { + var P = g.position; + T.drawTab(Z, g.tab, 0, g.startY, b, g.height, T._moveBackground), fl(Z, 0, P, b, 1, T._insertColor) + } + if (Z.restore(), T._selectionChanged) { + T._selectionChanged = !1; + for (var H = T.ty(), U = 0; U < d.size(); U++) { + var K = d.get(U); + if (K.tab === T._8o) { + if (K.endY + H < 0) { + T.ty(-K.startY); + break + } + if (K.startY + H > c) { + T.ty(c - K.endY); + break + } + } + } + } + T.ty(T.ty()) + } else if (C || L) { + T._9o && (N.x = 0, qp(T._8o.getView(), N)), Bn(n, e, c); + var Z = Wd(n), + y = 0; + if (tf(Z, 0, T.ty(), 1), Z.clearRect(0, 0, e, c), d.clear(), p._roots.each(function (q) { + if (q.isVisible()) { + var B; + g && g.tab === q || (B = T.drawTab(Z, q, 0, y, e, b, T._tabBackground)), d.add({ + _75o: B, + tab: q, + startY: y, + endY: y + b, + height: b + }), y += b + v + } + }), T._23Q = q(0, y - v), g) { + var P = g.position; + T.drawTab(Z, g.tab, 0, g.startY, e, g.height, T._moveBackground), fl(Z, 0, P, e, 1, T._insertColor) + } + if (Z.restore(), T._selectionChanged) { + T._selectionChanged = !1; + for (var H = T.ty(), U = 0; U < d.size(); U++) { + var K = d.get(U); + if (K.tab === T._8o) { + if (K.endY + H < 0) { + T.ty(-K.startY); + break + } + if (K.startY + H > c) { + T.ty(c - K.endY); + break + } + } + } + } + T.ty(T.ty()) + } else { + T._9o && (N.y = 0, qp(T._8o.getView(), N)), Bn(n, F, b); + var Z = Wd(n), + M = 0; + if (tf(Z, T.tx(), 0, 1), Z.clearRect(0, 0, F, b), d.clear(), p._roots.each(function (J) { + if (J.isVisible()) { + var k, B = T.getTabWidth(J); + g && g.tab === J || (k = T.drawTab(Z, J, M, 0, B, b, T._tabBackground)), d.add({ + _75o: k, + tab: J, + startX: M, + endX: M + B, + width: B + }), M += B + v + } + }), T._64I = q(0, M - v), g) { + var P = g.position; + T.drawTab(Z, g.tab, g.startX, 0, g.width, b, T._moveBackground), cs(Z, T._insertColor, P, 0, b) + } + if (Z.restore(), T._selectionChanged) { + T._selectionChanged = !1; + for (var z = T.tx(), U = 0; U < d.size(); U++) { + var K = d.get(U); + if (K.tab === T._8o) { + if (K.endX + z < 0) { + T.tx(-K.startX); + break + } + if (K.startX + z > F) { + T.tx(F - K.endX); + break + } + } + } + } + T.tx(T.tx()) + } + for (var l = [], w = X.children, U = 0; U < w.length; U++) { + var f = w[U], + j = f._tab_; + j && !p.contains(j) && l.push(f) + } + l.forEach(function (o) { + X.removeChild(o) + }) + } + }); + var _s = function (C) { + this.tv = C, this.addListeners() + }; + yc(_s, o, { + ms_listener: 1, + getView: function () { + return this.tv._91O + }, handle_mousewheel: function (W) { + this.handleScroll(W, 10 * (W.wheelDelta / 40)) + }, handle_DOMMouseScroll: function (x) { + this.handleScroll(x, 10 * -x.detail) + }, handleScroll: function (w, j) { + Qc(w); + var O = this.tv, + T = O._tabPosition; + !O._40o() || T !== $c && T !== Kd || O.tx(this.tv.tx() + j), !O._41o() || T !== nq && T !== fm && T !== nq + "-vertical" && T !== fm + "-vertical" || O.ty(this.tv.ty() + j) + }, _8Q: function (g) { + var P, Z, Q = this.tv, + N = Q._tabPosition, + q = Q._7o; + if (N === $c || N === Kd) { + var s = Q.lp(g).x; + for (P = 0; P < q.size(); P++) + if (Z = q.get(P), Z.startX <= s && s <= Z.endX) return Z + } else if (N === nq || N === fm || N === nq + "-vertical" || N === fm + "-vertical") { + var c = Q.lp(g).y; + for (P = 0; P < q.size(); P++) + if (Z = q.get(P), Z.startY <= c && c <= Z.endY) return Z + } + return F + }, isClickable: function (K) { + var j = this.tv, + p = j._tabPosition, + s = this._73o = this._8Q(K); + return !j._40o() || p !== $c && p !== Kd ? !j._41o() || p !== nq && p !== fm && p !== nq + "-vertical" && p !== fm + "-vertical" ? s && (!s.tab.isDisabled() || j.isMovable()) : !0 : !0 + }, handle_mousemove: function (S) { + var E = this; + si ? E._74o = E._8Q(S) : E.getView().style.cursor = E.isClickable(S) ? Zk : "" + }, handle_mousedown: function (E) { + this.handle_mousemove(E), this.handle_touchstart(E) + }, handle_touchstart: function ($) { + var d = this, + H = d.tv, + S = H._tabPosition; + Qc($), jj($) && d.isClickable($) && (S === $c || S === Kd ? (d.x = lb($).x, d.lp = H.lp($), d.tx = H.tx()) : (d.y = lb($).y, d.lp = H.lp($), d.ty = H.ty()), Ui(d, $)) + }, handleWindowMouseMove: function (P) { + this.handleWindowTouchMove(P) + }, handleWindowTouchMove: function ($) { + var Q, R = this, + O = R.tv, + e = O._tabPosition, + G = R._73o; + if (e === $c || e === Kd) { + if (Q = lb($).x - R.x, !R._25o && !R.moving && X(Q) > 2 && (O._40o() && !ik($) ? R._25o = 1 : G && O.isMovable() && (R.moving = 1)), R._25o) O.tx(R.tx + Q); + else if (R.moving) { + var C = R.lp.x + Q, + u = O._tabGap / 2; + O._7o.each(function (g) { + var i = g.endX, + y = C - g.startX < i - C; + C >= g.startX && i >= C && O._7Q({ + tab: G.tab, + startX: G.startX + Q, + width: G.width, + front: y, + insertTab: g.tab, + position: y ? q(0, g.startX - u) : V(O._64I, i + u) + }) + }) + } + } else if (Q = lb($).y - R.y, !R._25o && !R.moving && X(Q) > 2 && (O._41o() && !ik($) ? R._25o = 1 : G && O.isMovable() && (R.moving = 1)), R._25o) O.ty(R.ty + Q); + else if (R.moving) { + var K = R.lp.y + Q, + u = O._tabGap / 2; + O._7o.each(function (l) { + var j = l.endY, + c = K - l.startY < j - K; + K >= l.startY && j >= K && O._7Q({ + tab: G.tab, + startY: G.startY + Q, + height: G.height, + front: c, + insertTab: l.tab, + position: c ? q(0, l.startY - u) : V(O._23Q, j + u) + }) + }) + } + }, handleWindowMouseUp: function (q) { + this.handleWindowTouchEnd(q) + }, handleWindowTouchEnd: function () { + var n = this, + E = n.tv, + B = E._tabPosition, + T = E.getTabModel(), + b = T._roots, + j = n._73o; + if (n.moving) { + var z = E._23o; + if (z && z.insertTab !== z.tab) { + var p = z.tab, + X = b.remove(p), + x = b.indexOf(z.insertTab); + x >= 0 && (z.front || x++, x <= b.size() && (b.add(p, x), T._38I(p, X, x))) + } + E._7Q(F), delete n.moving + } else if (!n._25o && j) { + p = j.tab; + var o = n._74o; + if (!o || o.tab === p) + if (!p.isDisabled() && cf(j._75o, n.lp)) { + var $ = function () { + var N = b.indexOf(p); + T.remove(p), E.onTabClosed(p, N) + }; + E.onTabClosing(p, $) && $() + } else p.isDisabled() || E._8o === p || T.sm().ss(p) + } + n._25o = n._73o = n._74o = B === $c || B === Kd ? n.x = n.lp = n.tx = F : n.y = n.lp = n.ty = F + } + }), Vs.PropertyView = function (n) { + var g = this; + g._view = ve(1, g), g._canvas = uo(g._view), sn(g._view, g._79O = dd()), g._rows = new xr, g._28o = new xr, g._26o = {}, g._26Q = {}; + var R = g._propertyModel = new jn, + b = g.ivm; + R.mm(b, g), R.md(b, g), R.mh(b, g), g.dm(n ? n : new jn), new at(g) + }, Ws("PropertyView", o, { + ms_ac: [fe, Uo, Vm, Me, Zh, "categorizable", Vb, go, dj, Zi, xj, df, gd, Ji, "selectRowIndex", op, "background", Jj, Yc, Ln, jh, Gr], + ms_v: 1, + ms_dm: 1, + ms_fire: 1, + ms_sm: 1, + _49o: 1, + ms_txy: 1, + ms_lp: 1, + ms_vs: 1, + _45o: 1, + _47o: 1, + ms_tip: 1, + _29I: nl, + _59I: 0, + _9I: 0, + _selectRowIndex: -1, + _editable: !0, + _batchEditable: !0, + _categorizable: !0, + _indent: kc, + _background: u.propertyViewBackground, + _expandIcon: u.propertyViewExpandIcon, + _collapseIcon: u.propertyViewCollapseIcon, + _scrollBarColor: Ch, + _scrollBarSize: di, + _autoHideScrollBar: jr, + _selectBackground: u.propertyViewSelectBackground, + _rowHeight: Oi, + _rowLineVisible: u.propertyViewRowLineVisible, + _rowLineColor: u.propertyViewRowLineColor, + _10I: .5, + _columnLineVisible: u.propertyViewColumnLineVisible, + _columnLineColor: u.propertyViewColumnLineColor, + _labelColor: u.propertyViewLabelColor, + _labelSelectColor: u.propertyViewLabelSelectColor, + _labelFont: u.propertyViewLabelFont, + getRows: function () { + return this._rows + }, getColumnPosition: function () { + return this._10I + }, setColumnPosition: function (H) { + 0 > H && (H = 0), H > 1 && (H = 1); + var v = this, + t = v._10I; + v._10I = H, v.fp("columnPosition", t, H) + }, getPropertyName: function (K) { + return K.toLabel() + }, getLabelFont: function () { + return this._labelFont + }, getLabelColor: function (y, x, D) { + return D === this._selectRowIndex ? this._labelSelectColor : this._labelColor + }, getPropertyFont: function () { + return this._labelFont + }, getPropertyColor: function (h, U) { + return U === this._selectRowIndex ? this._labelSelectColor : h.getColor() || this._labelColor + }, getCategoryFont: function () { + return this._labelFont + }, getCategoryColor: function () { + return this._labelColor + }, adjustTranslateX: function () { + return 0 + }, adjustTranslateY: function (s) { + var U = this.getHeight() - this._59I; + return U > s && (s = U), s > 0 ? 0 : A(s) + }, isExpanded: function (K) { + if (!K) return !0; + var d = this._26o[K]; + return d ? d.isExpanded : !(this._26Q[K] === !1) + }, toggle: function (s) { + var t = this; + t.isExpanded(s) ? t.collapse(s) : t.expand(s) + }, expandAll: function () { + this.validate(); + for (var w in this._26o) this.expand(w) + }, expand: function (V) { + if (V && V !== Jc) { + var A = this, + k = A._26o[V]; + k && !k.isExpanded && (k.isExpanded = !0, A.onExpanded(V), A.ivm()) + } + }, onExpanded: function () { }, collapseAll: function () { + this.validate(); + for (var m in this._26o) this.collapse(m) + }, collapse: function (W) { + if (W && W !== Jc) { + var H = this, + X = H._26o[W]; + X && X.isExpanded && (X.isExpanded = !1, H.onCollapsed(W), H.ivm()) + } + }, onCollapsed: function () { }, getCategoryName: function (Y) { + if (!this.isCategorizable()) return Jc; + var $ = Y.getCategoryName(); + return $ ? $ : Jc + }, getPropertyModel: function () { + return this._propertyModel + }, handleSelectionChange: function () { + this.ivm() + }, setDataModel: function (U) { + var V = this, + Z = V._dataModel; + Z !== U && (Z && (Z.umd(V.handlePropertyChange, V), V._selectionModel || Z.sm().ums(V.handleSelectionChange, V)), V._dataModel = U, U.md(V.handlePropertyChange, V), V._selectionModel ? V._selectionModel._21I(U) : U.sm().ms(V.handleSelectionChange, V), V.fp(uk, Z, U)) + }, isVisible: function (R) { + return this._visibleFunc ? this._visibleFunc(R) : !0 + }, onPropertyChanged: function (i) { + var v = this, + u = i.property; + Qs[u] ? v.ivm() : v.iv(), u === wb && v._43o() + }, getCurrentData: function () { + return this._27o + }, updateCurrentData: function () { + this._27o = this.sm().ld() + }, getRawProperties: function () { + return this._27o ? this._propertyModel._roots : Yh + }, handlePropertyChange: function (a) { + this._27o === a.data && this.iv() + }, ivm: function () { + this.invalidateModel() + }, invalidateModel: function () { + var r = this; + r._96I || (r.setSelectRowIndex(-1), r._96I = 1, r.iv()) + }, redraw: function () { + this.iv() + }, validateModel: function () { + var f = this, + $ = f._rows, + _ = f._28o, + S = {}, + n = new xr, + h = f._27o; + f.updateCurrentData(), h !== f._27o && f.endEditing(), $.clear(), _.clear(), f.getRawProperties().each(function (B) { + if (f.isVisible(B)) { + n.add(B); + var E = f.getCategoryName(B); + S[E] || (_.add(E, E === Jc ? 0 : Z), S[E] = { + isExpanded: f.isExpanded(E), + properties: new xr + }) + } + }), f._sortFunc && n.sort(f._sortFunc); + for (var I in f._26o) f._26Q[I] = f.isExpanded(I); + f._26o = S, _.each(function (V) { + V !== Jc && $.add(V); + var D = S[V]; + D.isExpanded && n.each(function (L) { + f.getCategoryName(L) === V && (D.properties.add(L), $.add({ + property: L, + data: f._27o + })) + }, f) + }) + }, validateImpl: function () { + var B = this; + B._76o(), B._96I && (B.validateModel(), delete B._96I); + var f = B._canvas, + P = B.getWidth(), + Y = B.getHeight(), + $ = -B.ty(), + k = B._rowHeight, + b = B._indent, + l = P - b, + y = B._rows, + r = y.size(), + c = B._9I = b + l * B._10I, + g = B._59I = r * k; + Bn(f, P, Y), B._29I = { + x: 0, + y: $, + width: P, + height: Y + }, B._31I = T($ / k), B._14I = s(($ + Y) / k), B._31I < 0 && (B._31I = 0), B._14I > r && (B._14I = r); + var U, p = Wd(f), + Z = B._background; + tf(p, 0, -$, 1), p.beginPath(), p.rect(0, $, P, Y), p.clip(), p.clearRect(0, $, P, Y), B._93db(p), Z && fl(p, 0, 0, b, g, Z); + for (var S = B._31I; S < B._14I; S++) { + var G = y.get(S), + $ = k * S; + if (dk(G)) Z && fl(p, b, $, l, k, Z), U = ii(B.isExpanded(G) ? B._expandIcon : B._collapseIcon), U && qk(p, U, Mg, 0, $, b, k), p.save(), p.beginPath(), p.rect(b, $, l, k), p.clip(), B.drawCategoryName(p, G, S, b, $, l, k), p.restore(); + else { + var C = G.property, + E = G.data, + U = ii(C.getIcon()), + t = B._selectRowIndex === S ? B.getSelectBackground() : F; + if (U && qk(p, U, Mg, 0, $, b, k), t && fl(p, b, $, l, k, t), p.save(), p.beginPath(), p.rect(b, $, c - b, k), p.clip(), B.drawPropertyName(p, C, S, b, $, c - b, k), p.restore(), !B.isEditing(E, C)) { + var z = c + 1, + q = P - c - 1; + p.save(), p.beginPath(), p.rect(z, $, q, k), p.clip(), B._87o(B.drawPropertyValue(p, C, B.getValue(E, C), S, z, $, q, k, E), S, z, $, q, k), p.restore() + } + } + B._rowLineVisible && fl(p, b, $ + k - 1, l, 1, B._rowLineColor) + } + B._columnLineVisible && (fl(p, c, 0, 1, g, B._columnLineColor), fl(p, P - 1, 0, 1, g)), B._92db(p), B._93I(), p.restore(), B.ty(B.ty()) + }, drawCategoryName: function (d, C, h, X, t, S, O) { + nd(d, C, this.getCategoryFont(C), this.getCategoryColor(C), X, t, S, O) + }, drawPropertyName: function (A, f, Z, O, o, T, i) { + return f.drawPropertyName ? (f.drawPropertyName(A, f, Z, O, o, T, i, this), void 0) : (nd(A, this.getPropertyName(f), this.getPropertyFont(f, Z), this.getPropertyColor(f, Z), O, o, T, i), void 0) + }, drawPropertyValue: function (F, P, p, I, A, W, S, w, k) { + return P.drawPropertyValue ? P.drawPropertyValue(F, P, p, I, A, W, S, w, k, this) : (Ss(F, p, P, this.getLabelFont(P, p, I), this.getLabelColor(P, p, I), A, W, S, w, k, this), void 0) + }, isPropertyEditable: function (e) { + return e.isEditable() && this.isEditable() + }, setProperties: function (M) { + this._propertyModel.clear(), this.addProperties(M) + }, addProperties: function (a) { + if (a) { + var p = this._propertyModel; + a.forEach(function (W) { + if (!(W instanceof Zs)) { + var e = gp(W.className); + W = Wn(e ? e : Zs, W) + } + p.add(W) + }) + } + }, getRowIndexAt: function (N) { + var B = this, + Y = T(B.lp(N).y / B._rowHeight); + return Y >= 0 && Y < B._rows.size() ? Y : -1 + }, getPropertyAt: function (A) { + var x = this, + E = x.getRowIndexAt(A); + return E >= 0 ? x._rows.get(E).property : F + }, getToolTip: function (I) { + var V = this, + S = V.getPropertyAt(I), + P = V._27o; + return S && P ? S.getToolTip(P, V._9I < V.lp(I).x, V) : F + } + }); + var at = function (q) { + this.pv = q, this.addListeners() + }; + yc(at, o, { + ms_listener: 1, + getView: function () { + return this.pv._view + }, setCursor: function (A) { + this.getView().style.cursor = A + }, clear: function () { + var A = this; + A._62O = A.cp = A.ty = A.p = F, A.setCursor(lp) + }, handle_mousedown: function (g) { + this.handle_touchstart(g) + }, handle_touchstart: function (X) { + var i = this, + F = i.pv; + Qc(X), F.setFocus(X) && (jj(X) ? (i.cp = lb(X), i.ty = F.ty(), i.p = F.getColumnPosition(), i.handle_touchmove(X)) : F.setSelectRowIndex(F.getRowIndexAt(X))) + }, handleWindowMouseUp: function () { + this.clear() + }, handleWindowTouchEnd: function () { + this.clear() + }, handle_mouseup: function (J) { + this.handle_touchend(J) + }, handle_touchend: function (k) { + var $ = this; + if ($.cp && !$._62O) { + var p = $.pv, + x = p.lp(k), + F = x.x, + M = x.y, + s = p._indent, + Y = p.getRowIndexAt(k), + b = p._9I; + if (Y >= 0) { + var D = p._rowHeight, + U = D * Y, + r = p._rows.get(Y), + X = r.property; + if (dk(r)) ii(p.isExpanded(r) ? p._expandIcon : p._collapseIcon) && F >= 0 && s >= F && M >= U && U + D >= M ? p.toggle(r) : wm(k) && p.toggle(r); + else if (F > b && p.isPropertyEditable(X, k)) { + var u = { + x: b + 1, + y: U, + width: p.getWidth() - b - 1, + height: D + }, + T = { + x: u.x + p.tx(), + y: u.y + p.ty(), + width: u.width, + height: u.height + }, + i = 0, + W = p._29I; + u.y < W.y ? i = u.y - W.y : u.y + D > W.y + W.height && (i = u.y + D - W.y - W.height), i && (p.ty(p.ty() - i), T.y -= i), p.beginEditing({ + data: r.data, + property: X, + value: p.getValue(r.data, X), + event: k, + rect: u, + editorRect: T, + view: p + }) + } + } + p.setSelectRowIndex(Y) + } + $.clear() + }, handleWindowMouseMove: function (k) { + this.handleWindowTouchMove(k) + }, handleWindowTouchMove: function (M) { + var u = this, + Z = u.pv, + b = u.ty, + x = u.cp, + G = lb(M), + V = u._62O; + if ("p" === V) Z.setTranslateY(b + G.y - x.y); + else if ("c" === V) { + var H = Z.getWidth() - Z._indent; + if (H > 16) { + var h = u.p - (x.x - G.x) / H, + $ = 16 / H; + $ > h && (h = $), h > 1 - $ && (h = 1 - $), Z.setColumnPosition(h) + } + } else "s" === V && Z.setTranslateY(b + (x.y - G.y) * Z._59I / Z._29I.height) + }, handle_mousemove: function (w) { + this.handle_touchmove(w) + }, handle_touchmove: function (I) { + if (!si && jj(I)) { + var Y = this, + x = Y.pv, + P = X(x.lp(I).x - x._9I) <= (nf ? 8 : 3); + Y.cp ? Y._62O || (P ? (Y._62O = "c", Ui(Y, I)) : X(lb(I).y - Y.cp.y) >= 2 && (Y._62O = Y.isV(I) ? "s" : "p", Ui(Y, I))) : (P ? Y.setCursor(Nc) : Y.setCursor(lp), Y.isV(I) && x._43o()) + } + }, isV: function (Z) { + var Y = this.pv, + f = Y._29I; + return Y._41o() && f.x + f.width - Y.lp(Z).x < co + }, handle_mousewheel: function (B) { + this.handleScroll(B, B.wheelDelta / 40) + }, handle_DOMMouseScroll: function (k) { + 2 === k.axis && this.handleScroll(k, -k.detail) + }, handleScroll: function (_, o) { + var b = this.pv; + Qc(_), b.endEditing(), b.translate(0, o * b.getRowHeight()) + }, handle_keydown: function (j) { + var L = this.pv, + Q = L._rows.size(), + R = L._selectRowIndex + (Nk(j) ? -1 : 1); + (Nk(j) || ri(j)) && (0 > R && (R = 0), R >= Q && (R = Q - 1), L.setSelectRowIndex(R)) + } + }), Vs.ListView = function (f) { + this._5o(f), new bt(this) + }, Ws("ListView", o, { + ms_ac: [fe, Uo, Vm, Jj, Vb, Yc, Ln, go, dj, df, gd, Ji, Pi, op], + ms_v: 1, + ms_bnb: 1, + ms_tip: 1, + ms_fire: 1, + ms_sm: 1, + _49o: 1, + ms_txy: 1, + ms_lp: 1, + ms_vs: 1, + ms_hs: 1, + _15Q: 1, + _14Q: 1, + ms_dm: 1, + _45o: 1, + _checkMode: !1, + _indent: kc, + _rowHeight: Oi, + _rowLineVisible: u.listViewRowLineVisible, + _rowLineColor: u.listViewRowLineColor, + _scrollBarColor: Ch, + _scrollBarSize: di, + _autoMakeVisible: be, + _autoHideScrollBar: jr, + _selectBackground: u.listViewSelectBackground, + _labelColor: u.listViewLabelColor, + _labelSelectColor: u.listViewLabelSelectColor, + _labelFont: u.listViewLabelFont, + isCheckMode: function () { + return this._checkMode + }, setCheckMode: function (b) { + var D = this, + t = D._checkMode; + D._checkMode = b, D.fp(wi, t, b) + }, drawRow: function (M, q, h, X, V, i, E) { + var F = this, + m = 0, + H = F._indent, + e = F.getIconWidth(q); + F.drawRowBackground(M, q, h, X, V, i, E), F._checkMode && (Ii(M, ii(F.getCheckIcon(q)), m + H / 2, V + E / 2, q, F), m += H), F.drawIcon(M, q, m, V, e, E), F.drawLabel(M, q, m + e, V, E) + } + }); + var bt = function (W) { + this.list = W, this.addListeners() + }; + yc(bt, o, { + ms_listener: 1, + getView: function () { + return this.list._view + }, clear: function (r) { + var X = this, + f = X.list; + r && "d" === X._62O && !X.dragCancel && f.handleDragAndDrop(r, "end"), f.draggingData && (f.draggingData = null, f.redraw()), X.dragCancel = X._62O = X._isV = X._isH = X.cp = X.tx = X.ty = F + }, handle_mousedown: function (u) { + this.handle_touchstart(u) + }, handle_touchstart: function (F) { + var p = this, + R = p.list; + if (Qc(F), R.setFocus(F)) { + var v = R.getDataAt(F); + p.cp = lb(F), p.tx = R.tx(), p.ty = R.ty(), jj(F) ? v && R.handleDragAndDrop && !p.isV(F) && !p.isH(F) && (R.draggingData = v, R.redraw(), R.handleDragAndDrop(F, "prepare")) : (v ? p._33o(F, v) : this._cancelDataDoubleSelect(), p.clear(F)) + } + }, handleWindowMouseUp: function (x) { + this.clear(x) + }, handleWindowTouchEnd: function (q) { + this.clear(q) + }, handle_mouseup: function (S) { + this.handle_touchend(S) + }, handle_touchend: function (l) { + var Q = this, + g = Q.list; + if (!Q._isV && !Q._isH && Q.cp && !Q._62O) { + var u = g.getDataAt(l); + u ? (g.isCheckMode() ? Q._34o(l, u) : Q._33o(l, u), wm(l) ? g.onDataDoubleClicked(u, l) : g.onDataClicked(u, l)) : (Q._cancelDataDoubleSelect(), g.handleBackgroundClick(l)) + } + Q.clear(l) + }, handleWindowMouseMove: function (D) { + this.handleWindowTouchMove(D) + }, handleWindowTouchMove: function (L) { + var w = this, + z = w.list, + m = w._62O, + F = w.tx, + r = w.ty, + B = w.cp, + Z = lb(L), + R = z._29I; + "p" === m ? z.setTranslate(F + Z.x - B.x, r + Z.y - B.y) : "v" === m ? z.ty(r + (B.y - Z.y) * z._59I / R.height) : "h" === m ? z.tx(F + (B.x - Z.x) * z._91I / R.width) : "d" === m && (w.dragCancel || z.handleDragAndDrop(L, "between")) + }, handle_mousemove: function (e) { + this.handle_touchmove(e) + }, handle_touchmove: function (K) { + if (!si && jj(K)) { + var p = this, + f = p.list; + if (p._isV = p.isV(K), p._isH = p.isH(K), p.cp) { + if (!p._62O) { + if (En(lb(K), p.cp) < 2) return; + p._isV ? p._62O = "v" : p._isH ? p._62O = "h" : f.draggingData && !this.dragCancel ? (p._62O = "d", f.handleDragAndDrop(K, "begin")) : p._62O = "p", p._62O && "d" !== p._62O && f.draggingData && (f.draggingData = null, f.redraw()), Ui(p, K) + } + } else p._isV && f._43o(), p._isH && f._42o() + } + }, isV: function (P) { + var E = this.list, + m = E._29I; + return E._41o() && m.x + m.width - E.lp(P).x < co + }, isH: function (s) { + var U = this.list, + y = U._29I; + return U._40o() && y.y + y.height - U.lp(s).y < co + }, handle_mousewheel: function (u) { + this.handleScroll(u, u.wheelDelta / 40, u.wheelDelta !== u.wheelDeltaX) + }, handle_DOMMouseScroll: function (n) { + this.handleScroll(n, -n.detail, 1) + }, handleScroll: function (w, n, g) { + var T = this.list; + Qc(w), T.endEditing && T.endEditing(), g && T._41o() ? T.translate(0, n * T.getRowHeight()) : T._40o() && T.translate(10 * n, 0) + }, handle_keydown: function (T) { + if (!u.isInput(T.target)) { + var s, V = this.list, + t = V.sm(), + J = V._rows, + x = J.size(); + if (Dq(T)) V.selectAll(); + else if (qq(T)) V.handleDelete && V.handleDelete(T); + else if (bj(T)) "d" !== this._62O || this.dragCancel || (V.handleDragAndDrop(T, "cancel"), this.dragCancel = !0); + else if (Cf(T)) V.isCheckMode() && (s = V.getFocusData(), s && V.checkData(s)); + else if (Nk(T) || ri(T)) { + var y = V.isCheckMode(); + if (s = y ? V.getFocusData() : t.ld()) { + var X = V.getRowIndex(s); + X >= 0 && (Nk(T) ? 0 !== X && (s = J.get(X - 1), y ? V.setFocusData(s) : t.ss(s)) : X !== x - 1 && (s = J.get(X + 1), y ? V.setFocusData(s) : t.ss(s))) + } else x > 0 && (s = J.get(0), y ? V.setFocusData(s) : t.ss(s)) + } + } + }, _34o: function (f, F) { + var a = this.list, + m = a.lp(f).x; + return m >= 0 && m <= a._indent ? (a.checkData(F), void 0) : (a.setFocusData(F), void 0) + }, _33o: function (X, W) { + var z = this.list, + S = z.sm(), + k = S.ld(); + if (!z.canHandleSelectMode(X, W)) return this._cancelDataDoubleSelect(), void 0; + if (ik(X)) z.isSelected(W) ? S.rs(W) : S.as(W); + else if (Pf(X)) + if (k) + for (var Z = z.getRowIndex(k), E = z.getRowIndex(W); Z !== E;) Z += E > Z ? 1 : -1, S.as(z._rows.get(Z)); + else S.ss(W); + else jj(X) ? (S.contains(W) ? z.handleDataDoubleSelect && (this._handleDataDoubleSelect(X, W), wm(X) && this._cancelDataDoubleSelect()) : this._cancelDataDoubleSelect(), S.ss(W)) : S.contains(W) || S.ss(W) + }, _handleDataDoubleSelect: function (e, p) { + this._cancelDataDoubleSelect(), this._doubleSelectTimer = cd(function () { + this.list.handleDataDoubleSelect(e, p), this._doubleSelectTimer = Z + }.bind(this), u.doubleClickSpeed) + }, _cancelDataDoubleSelect: function () { + this._doubleSelectTimer && (nr(this._doubleSelectTimer), this._doubleSelectTimer = Z) + } + }), Vs.TreeView = function (p) { + var G = this; + G._35o(), G._5o(p), new ct(G) + }, Ws("TreeView", o, { + ms_ac: [fe, Uo, Vm, "rootVisible", wi, "rootData", go, dj, df, gd, Ji, Vb, Jj, Yc, Ln, Zi, xj, Pi, op, "loader", "doubleClickToToggle"], + ms_v: 1, + ms_bnb: 1, + ms_tip: 1, + ms_fire: 1, + ms_sm: 1, + _49o: 1, + ms_txy: 1, + ms_lp: 1, + ms_vs: 1, + ms_hs: 1, + _15Q: 1, + ms_dm: 1, + _48o: 1, + _14Q: 1, + _45o: 1, + _checkMode: F, + _indent: kc, + _rowHeight: Oi, + _rowLineVisible: u.treeViewRowLineVisible, + _rowLineColor: u.treeViewRowLineColor, + _scrollBarColor: Ch, + _scrollBarSize: di, + _autoHideScrollBar: jr, + _expandIcon: u.treeViewExpandIcon, + _collapseIcon: u.treeViewCollapseIcon, + _autoMakeVisible: be, + _selectBackground: u.treeViewSelectBackground, + _labelColor: u.treeViewLabelColor, + _labelSelectColor: u.treeViewLabelSelectColor, + _labelFont: u.treeViewLabelFont, + _doubleClickToToggle: u.treeViewDoubleClickToToggle, + drawRow: function (f, b, L, C, m, D, A) { + var B = this; + B.drawRowBackground(f, b, L, C, m, D, A), B.drawTree(f, b, L, 0, m, D, A) + }, isOnToggleIcon: function (P) { + var T = this.getDataAt(P); + if (T) { + var f = this.getIndent(), + e = this.lp(P).x; + if (ii(this.getToggleIcon(T))) { + var N = f * this.getLevel(T); + if (e >= N && N + f >= e) return !0 + } + } + return !1 + } + }); + var ct = function (G) { + fi(ct, this, [G]) + }; + yc(ct, bt, { + toggle: function (Y, u, A, t) { + var P = this.list, + Z = P.lp(Y).x; + if (ii(P.getToggleIcon(u))) { + var M = A * t; + if (Z >= M && M + A >= Z) return P.toggle(u), !0 + } + return P.isDoubleClickToToggle() && wm(Y) ? (P.toggle(u), !0) : !1 + }, _34o: function (B, S) { + var Y = this.list, + N = Y.lp(B).x, + n = Y._levelMap[S._id], + L = Y._indent, + u = L * (n + 1); + return N >= u && u + L >= N ? (Y.checkData(S), void 0) : (this.toggle(B, S, L, n) || Y.setFocusData(S), void 0) + }, _33o: function (Y, O) { + var N = this, + p = N.list; + if (!N.toggle(Y, O, p._indent, p.getLevel(O))) + if (Pf(Y)) { + var J = p.sm(); + if (J.size() > 0) { + for (var b = p._rows, v = null, l = 0, T = b.size(); T > l; l++) + if (p.isSelected(b.get(l))) { + v = l; + break + } + for (var L = null, l = b.size() - 1; l >= 0; l--) + if (p.isSelected(b.get(l))) { + L = l; + break + } + var A, n, s = p.getRowIndex(O); + for (v > s ? (A = s - 1, n = v) : s > L ? (A = L, n = s) : (A = v, n = L); A !== n;) A++, J.as(p._rows.get(A)) + } else J.ss(O) + } else ct.superClass._33o.call(N, Y, O) + }, handle_keydown: function (C) { + if (Wk(C) || _i(C)) { + var j = this.list, + u = j._rows, + _ = j.isCheckMode(), + S = j.sm(), + Y = _ ? j.getFocusData() : S.ld(); + Y ? Y.hasChildren() && (Wk(C) ? j.collapse(Y) : j.expand(Y)) : u.size() > 0 && (Y = u.get(0), _ ? j.setFocusData(Y) : S.ss(Y)) + } else ct.superClass.handle_keydown.call(this, C) + } + }); + var dt = Vs.TableView = function (D) { + this._98I(), this._5o(D), new et(this) + }; + Ws("TableView", o, { + ms_ac: [fe, Uo, Vm, "sortMode", Me, Zh, Jj, Yc, Ln, jh, Gr, "sortColumn", go, dj, df, gd, Ji, Pi, op], + ms_v: 1, + ms_fire: 1, + ms_sm: 1, + _49o: 1, + ms_txy: 1, + ms_lp: 1, + ms_vs: 1, + ms_hs: 1, + _15Q: 1, + ms_dm: 1, + ms_tip: 1, + _50o: 1, + _45o: 1, + _47o: 1, + _sortMode: qh, + _editable: !0, + _batchEditable: !1, + _rowHeight: Oi, + _rowLineVisible: u.tableViewRowLineVisible, + _rowLineColor: u.tableViewRowLineColor, + _columnLineVisible: u.tableViewColumnLineVisible, + _columnLineColor: u.tableViewColumnLineColor, + _scrollBarColor: Ch, + _scrollBarSize: di, + _autoHideScrollBar: jr, + _autoMakeVisible: be, + _selectBackground: u.tableViewSelectBackground, + _labelColor: u.tableViewLabelColor, + _labelSelectColor: u.tableViewLabelSelectColor, + _labelFont: u.tableViewLabelFont, + getCheckColumn: function () { + var s = this; + if (!s._31o) { + var U = s._31o = new Ys; + U.setEditable(!0), U.setWidth(40), U.getValue = s.getCheckColumValue, U.drawCell = s.drawCheckColumnCell + } + return s._31o + }, isCheckMode: function () { + return this._39o.contains(this._31o) + }, setCheckMode: function (i) { + var D = this, + b = D._39o, + V = D.getCheckColumn(); + i !== D.isCheckMode() && (i ? b.add(V, 0) : b.remove(V), D.fp(wi, !i, i)) + }, getCheckColumValue: function (b, W, I) { + return I.isSelected(b) + }, drawCheckColumnCell: function (d, M, C, W, w, e, J, r, y) { + Ii(d, y.getCheckIcon(M), w + J / 2, e + r / 2, M, y) + } + }); + var et = function (c) { + fi(et, this, [c]) + }; + yc(et, bt, { + _34o: function (c, d) { + var g = this.list, + J = g._31o; + if (g.isCellEditable(d, J, c)) { + var G = g._3Q(J), + E = g.lp(c).x; + if (G && E >= G.startX && E < G.startX + J.getWidth()) return g.checkData(d), void 0 + } + g._37O(d, c), g.setFocusData(d) + }, _33o: function (v, L) { + this.list._37O(L, v), et.superClass._33o.apply(this, arguments) + } + }); + var ft = Vs.TreeTableView = function (z) { + var U = this, + N = U._4o = new Ys; + U._35o(), U._98I(), U._5o(z), N.setDisplayName("Name"), N.setEditable(!0), N.setWidth(180), N.drawCell = gt, N.getValue = ht, U._39o.add(N), new it(U) + }, + gt = function (h, r, J, n, a, B, D, G, p) { + p.drawTree(h, r, J, a, B, D, G) + }, + ht = function (C, n, d) { + return d.getLabel(C) + }; + Ws("TreeTableView", o, { + ms_ac: [fe, Uo, Vm, "sortMode", Me, Zh, Vb, wi, "rootData", "rootVisible", go, dj, "sortColumn", Zi, xj, df, gd, Ji, Pi, Ln, Jj, Yc, jh, Gr, op, "loader"], + ms_v: 1, + ms_bnb: 1, + ms_fire: 1, + ms_sm: 1, + _49o: 1, + ms_txy: 1, + ms_lp: 1, + ms_vs: 1, + ms_hs: 1, + _15Q: 1, + ms_dm: 1, + ms_tip: 1, + _50o: 1, + _48o: 1, + _14Q: 1, + _45o: 1, + _47o: 1, + _sortMode: qh, + _checkMode: F, + _editable: !0, + _batchEditable: !1, + _indent: kc, + _rowHeight: Oi, + _rowLineVisible: u.treeTableViewRowLineVisible, + _rowLineColor: u.treeTableViewRowLineColor, + _columnLineVisible: u.treeTableViewColumnLineVisible, + _columnLineColor: u.treeTableViewColumnLineColor, + _expandIcon: u.treeTableViewExpandIcon, + _collapseIcon: u.treeTableViewCollapseIcon, + _scrollBarColor: Ch, + _scrollBarSize: di, + _autoHideScrollBar: jr, + _autoMakeVisible: be, + _selectBackground: u.treeTableViewSelectBackground, + _labelColor: u.treeTableViewLabelColor, + _labelSelectColor: u.treeTableViewLabelSelectColor, + _labelFont: u.treeTableViewLabelFont, + getTreeColumn: function () { + return this._4o + } + }); + var it = function (E) { + fi(it, this, [E]) + }; + yc(it, bt, { + _34o: function (g, u) { + var M = this.list, + h = M._4o, + e = M._3Q(h), + n = M.lp(g).x; + if (e) { + var H = M._indent, + d = e.startX + H * M.getLevel(u); + if (ii(M.getToggleIcon(u)) && n >= d && d + H >= n) return M.toggle(u), void 0; + if (M.isCellEditable(u, h) && (d += H, n >= d && d + H >= n)) return M.checkData(u), void 0 + } + M._37O(u, g), M.setFocusData(u) + }, _33o: function (O, N) { + var j = this.list, + J = j.lp(O).x; + if (ii(j.getToggleIcon(N))) { + var f = j._3Q(j._4o); + if (f) { + var W = j._indent, + Z = f.startX + W * j.getLevel(N); + if (J >= Z && Z + W >= J) return j.toggle(N), void 0 + } + } + j._37O(N, O), it.superClass._33o.apply(this, arguments) + } + }); + var jt = Vs.TableHeader = function (l) { + var v = this, + P = v._view = ve(1, v), + s = v._39o = l.getColumnModel(), + k = v.iv; + v.tv = v._tableView = l, v._60I = new xr, v._canvas = uo(P), P.style.background = u.tableHeaderBackground || "", P.style.height = um + oe, s.mm(k, v), s.md(k, v), s.mh(k, v), l.mp(function (o) { + Ms[o.property] && v.iv() + }, v), new kt(v), v.iv() + }; + Ws("TableHeader", o, { + ms_v: 1, + ms_lp: 1, + ms_fire: 1, + ms_ac: ["checkIcon", "sortDescIcon", "sortAscIcon", fe, Vm, Vb, "moveBackground", "insertColor", jh, Gr, "resizable", "movable"], + _checkIcon: He, + _movable: !0, + _resizable: !0, + _labelColor: u.tableHeaderLabelColor, + _labelFont: u.tableHeaderLabelFont, + _columnLineColor: u.tableHeaderColumnLineColor, + _columnLineVisible: u.tableHeaderColumnLineVisible, + _sortDescIcon: u.tableHeaderSortDescIcon, + _sortAscIcon: u.tableHeaderSortAscIcon, + _moveBackground: u.tableHeaderMoveBackground, + _insertColor: u.tableHeaderInsertColor, + _indent: kc, + getCheckIcon: function () { + return this._checkIcon + }, getTableView: function () { + return this.tv + }, getLabel: function (X) { + return X.toLabel() + }, getLabelFont: function () { + return this._labelFont + }, getLabelColor: function (r) { + return r.getColor() || this._labelColor + }, getLabelAlign: function (F) { + return F._align + }, onPropertyChanged: function () { + this.iv() + }, _5Q: function (V) { + this._61I = V, this.iv() + }, getLogicalPoint: function (r) { + return Nm(r, this._canvas, this.tv.tx()) + }, validateImpl: function () { + var I = this, + V = I._canvas, + E = I.getWidth(), + i = I.getHeight(), + z = I.tv, + K = I._60I, + C = I._61I, + l = -z.tx(), + d = 0; + (E !== V.clientWidth || i !== V.clientHeight) && Bn(V, E, i), K.clear(), I._39o._roots.each(function (f) { + if (f.isVisible()) { + var I = d + f.getWidth(); + l + E >= d && I >= l && K.add({ + column: f, + startX: d + }), d = I + } + }); + var p = Wd(V); + if (tf(p, -l, 0, 1), p.beginPath(), p.rect(l, 0, E, i), p.clip(), p.clearRect(l, 0, E, i), K.each(function (c) { + var F = c.column, + S = c.startX, + _ = F.getWidth(); + _ > 0 && (p.save(), p.beginPath(), p.rect(S, 0, _, i), p.clip(), C && C.column === F || I.drawColumn(p, F, S, 0, _, i), I._columnLineVisible && fl(p, S + _ - 1, 0, 1, i, I._columnLineColor), p.restore()) + }), C) { + var L = C.column, + d = C.startX, + G = C.position, + k = L.getWidth(); + p.save(), p.beginPath(), p.rect(d, 0, k, i), p.clip(), p.fillStyle = I._moveBackground, p.fill(), I.drawColumn(p, L, d, 0, k, i), p.restore(), cs(p, I._insertColor, G, 0, i) + } + p.restore() + }, _6Q: function ($) { + var m = this.tv; + return m._31o === $ && m.sm().getSelectionMode() === tb + }, drawColumn: function (n, C, S, L, c, y) { + var E = this, + h = E.tv, + H = ii(C.getIcon()), + W = E.getLabelAlign(C); + if (E._6Q(C)) { + var R = ii(E._checkIcon); + Ii(n, R, S + c / 2, L + y / 2, C, E) + } else { + var D = E.getLabel(C), + a = E.getLabelFont(C), + Q = E.getLabelColor(C), + N = ln(a, D).width, + k = H ? E._indent : 0; + W === nq ? (H && qk(n, H, Mg, S, L, k, y), nd(n, D, a, Q, S + k, L, c, y, nq)) : W === fm ? (H && qk(n, H, Mg, S + c - N - k, L, k, y), nd(n, D, a, Q, S, L, c, y, fm)) : (H && qk(n, H, Mg, S + (c - N - k) / 2, L, k, y), nd(n, D, a, Q, S + (c - N + k) / 2, L, 0, y, nq)) + } if (C.isSortable() && h.getSortColumn() === C && (H = ii(C.getSortOrder() === Sh ? E._sortAscIcon : E._sortDescIcon))) { + var g = xc(H, C) / 2 + 2; + Ii(n, H, W === fm ? S + g : S + c - g, L + y / 2, C, h) + } + } + }); + var kt = function (J) { + var O = this; + O.th = J, O.tv = J._tableView, O.addListeners() + }; + yc(kt, o, { + ms_listener: 1, + getView: function () { + return this.th.getView() + }, setCursor: function (O) { + this.getView().style.cursor = O + }, handle_mousemove: function (J) { + if (!si) { + var $ = this; + delete $._29o, $.setCursor(lp); + for (var m = $.th, v = m._60I, F = m.lp(J).x, f = v.size() - 1; f >= 0; f--) { + var l = v.get(f), + W = l.column, + E = l.startX + W.getWidth(); + if (m.isResizable() && X(E - F) <= (nf ? 10 : 3)) return $._29o = l, $.setCursor(Nc), void 0; + F > l.startX && E > F && ($._29o = l), (W.isClickable() || W.isSortable() || m.isMovable() || $.tv.getCheckColumn && W === $.tv.getCheckColumn()) && F > l.startX && E > F && $.setCursor(Zk) + } + } + }, handle_mousedown: function (P) { + this.handle_touchstart(P) + }, handle_touchstart: function (d) { + var E = this; + Qc(d), E.tv.endEditing(), E.handle_mousemove(d), E._29o && (E.x = lb(d).x, E.lx = E.th.lp(d).x, E.w = E._29o.column.getWidth(), Ui(E, d)) + }, handleWindowMouseMove: function (o) { + this.handleWindowTouchMove(o) + }, handleWindowTouchMove: function (P) { + var B = this, + t = B.th, + b = B.getView().style.cursor, + o = B._29o, + F = lb(P).x - B.x; + if (B.resizing || B.moving || (b === Nc ? B.resizing = 1 : t.isMovable() && b === Zk && X(F) > 2 && (B.moving = 1)), B.resizing) o.column.setWidth(B.w + F); + else if (B.moving) { + var $ = B.lx + F; + t._60I.each(function (E) { + var S = E.startX, + q = S + E.column.getWidth(); + if ($ >= S && q >= $) { + var h = { + column: o.column, + startX: o.startX + F, + front: q - $ > $ - S, + insertColumn: E.column + }; + h.position = h.front ? S : q, t._5Q(h) + } + }) + } + }, _16Q: function (F, o) { + var S = this, + N = S.tv, + b = S.th, + B = b._checkIcon; + if (b._6Q(F)) { + var g = ii(B), + Z = S.lx, + G = F.getWidth(), + i = xc(g, F); + if (Z >= o + G / 2 - i && o + G / 2 + i >= Z) { + b.setCheckIcon(B === tm ? He : tm); + var y = N.sm(), + U = N._rows; + return B === tm ? y.rs(U) : y.ss(U), N.onCheckColumnClicked(F), !0 + } + } + return !1 + }, handleWindowMouseUp: function (T) { + this.handleWindowTouchEnd(T) + }, handleWindowTouchEnd: function (Z) { + var L = this, + P = L.tv, + g = L.th, + u = L._29o; + if (L.moving) { + var W = g._61I; + if (W && W.insertColumn !== W.column) { + var $ = W.column, + q = P.getColumnModel()._roots, + I = q.remove($), + _ = q.indexOf(W.insertColumn); + _ >= 0 && (W.front || _++, _ <= q.size() && (q.add($, _), P.getColumnModel()._38I($, I, _))) + } + g._5Q(F), delete L.moving + } else if (!L.resizing && u) { + $ = u.column; + var R = g.lp(Z).x, + J = u.startX, + N = !0; + if (g.onColumnClicked) { + var v = g.onColumnClicked($, Z, J); + v === !1 && (N = !1) + } + if (N && R >= J && R <= J + $.getWidth() && !L._16Q($, J)) { + if ($.isSortable()) { + var m = P.getSortMode(), + e = $.getSortOrder(); + m === qh ? P.getSortColumn() === $ ? (e === rj && P.setSortColumn(F), $.setSortOrder(e === Sh ? rj : Sh)) : P.setSortColumn($) : "bistate" === m && (P.getSortColumn() === $ ? $.setSortOrder(e === Sh ? rj : Sh) : P.setSortColumn($)) + } + P.onColumnClicked($, Z, J) + } + } + L._29o = L.resizing = L.x = L.lx = L.w = F + } + }), Vs.TablePane = function (C) { + this.init(new dt(C)) + }, Ws("TablePane", o, { + ms_v: 1, + _44o: 1 + }), Vs.TreeTablePane = function (Z) { + this.init(new ft(Z)) + }, Ws("TreeTablePane", o, { + ms_v: 1, + _44o: 1 + }), Vs.Toolbar = function (O) { + var p = this, + B = p._view = ve(1, p), + r = B.style; + r.background = u.toolbarBackground || "", r.height = Jk + oe, p._canvas = uo(B), p._30o = new xr, p._90I = new xr, p.setItems(O || []), B.handleGroupSelectedChanged = function (O) { + if (O.isSelected()) { + var m = O.getGroupId(); + null != m && p._items.forEach(function (H) { + var F = H.element; + F && F !== O && F.setSelected && F.getGroupId && F.getGroupId() === m && F.setSelected(!1) + }) + } + }, new lt(p) + }, Ws("Toolbar", o, { + ms_v: 1, + ms_fire: 1, + ms_tx: 1, + ms_lp: 1, + ms_tip: 1, + ms_value: 1, + ms_ac: [Uj, fe, Vm, Uo, op, "itemGap", "separatorColor", "currentItem", "stickToRight"], + _labelColor: u.toolbarLabelColor, + _labelSelectColor: u.toolbarLabelSelectColor, + _labelFont: u.toolbarLabelFont, + _selectBackground: u.toolbarSelectBackground, + _itemGap: u.toolbarItemGap, + _separatorColor: u.toolbarSeparatorColor, + _stickToRight: !1, + getSumWidth: function () { + return this._64I + }, getToolTip: function (u) { + var X = this.getItemInfoAt(u); + return X ? X.item.toolTip : F + }, getLabelColor: function (m) { + return m && m.selected && m.type !== tm && m.type !== Hp ? this._labelSelectColor : this._labelColor + }, onPropertyChanged: function (w) { + this.iv(), w.property === Uj && this._items.forEach(function (z) { + bh(z) + }) + }, redraw: function () { + this.iv() + }, addItem: function (Q, d) { + var N = this._items; + d == F ? N.push(Q) : N.splice(d, 0, Q), this.fp(Uj, F, N) + }, removeItem: function (G) { + if (G) + for (var d = this._items, c = 0; c < d.length; c++) G === d[c] && (d.splice(c, 1), this.fp(Uj, F, d)) + }, removeItemById: function (b) { + if (b != F) + for (var K = this._items, q = 0; q < K.length; q++) + if (b === K[q].id) { + var _ = K.splice(q, 1)[0]; + return this.fp(Uj, F, K), _ + } + }, getItemById: function (x) { + if (x != F) + for (var y = this._items, d = 0; d < y.length; d++) { + var H = y[d]; + if (x === H.id) return H + } + }, setItemVisible: function (y, f) { + var z = this.getItemById(y); + z && (z.visible = f) + }, getItemInfos: function () { + return this._30o + }, getItemInfoAt: function (p) { + var R = this, + e = 0, + Y = R._30o, + L = R.lp(p), + r = L.x, + Q = L.y; + if (Q >= 0 && Q <= R.getHeight()) + for (; e < Y.size(); e++) { + var Z = Y.get(e); + if (Z.startX <= r && r <= Z.endX) return Z + } + return F + }, drawItem: function ($, K, x, G, s) { + if (K.visible === !1) return 0; + if (Mf(K.visible) && !K.visible()) return 0; + var q = this, + n = K.disabled; + n && ($.globalAlpha = Nn); + var v = q.drawItemImpl($, K, x, G, s), + o = q._itemGap; + return n && ($.globalAlpha = 1), this._currentItem !== K || "separator" === K || K.separator === !0 || K.unfocusable || Ie($, q._separatorColor, x - o / 2, 0, v + o, G), v + }, drawItemImpl: function (m, B, g, r, R) { + var J = this, + A = J._view, + C = J._itemGap, + _ = r / 2, + M = B.type, + p = B.element, + f = B.label; + dk(p) && (f = p, p = F); + var x, I = J.getLabelFont(B), + v = J.getLabelColor(B), + X = B.selected, + H = ii(B.icon), + E = xc(H, B), + z = 0, + j = E + (f ? ln(I, f).width : 0); + if ("separator" === B || B.separator === !0) return cs(m, J._separatorColor, g, r / 4, _), 1; + if (p) { + H && Ii(m, H, g + E / 2, _, B, J), nd(m, f, I, v, g + E, 0, 0, r); + var Q = Bq(p); + R || J._90I.add(Q), Q.parentNode !== A && sn(A, Q), p.iv && p.iv(), p.validate && p.validate(); + var l = Q.getBoundingClientRect(), + t = l.width, + S = Q.style; + return uj(Q), S.left = J.tx() + g + j + oe, S.top = (r - l.height) / 2 + oe, j + t + } + return M === Hp ? x = ii(X ? kj : yb) : M === tm && (x = ii(X ? tm : He)), x ? (z = xc(x, B), Ii(m, x, g + z / 2, _, B, J), g += z, j += z) : X && fl(m, g - C / 2, 0, j + C, r, J.getSelectBackground(B)), H && Ii(m, H, g + E / 2, _, B, J), nd(m, f, I, v, g + E, 0, 0, r), j + }, validateImpl: function () { + var O = this, + Y = O._canvas, + f = O.getWidth(), + B = O.getHeight(), + b = O._30o, + S = O._items; + Bn(Y, f, B); + var M = Wd(Y), + J = O._itemGap, + N = J / 2; + tf(M, O.tx(), 0, 1), M.clearRect(0, 0, f, B); + var T = O._90I; + O._90I = new xr, b.clear(), S.forEach(function (L) { + var G = O.drawItem(M, L, N, B); + b.add({ + item: L, + startX: N, + endX: N + G, + width: G + }), G && (N += G + J) + }), T.each(function (N) { + O._90I.contains(N) || yj(N) + }); + var p = O._64I; + O._64I = q(0, N), M.restore(), O._stickToRight ? (O._65O = 0, M = Wd(Y), N = f - O._64I + J, tf(M, 0, 0, 1), M.clearRect(0, 0, f, B), b.clear(), S.forEach(function (I) { + var d = O.drawItem(M, I, N, B, !0); + b.add({ + item: I, + startX: N, + endX: N + d, + width: d + }), d && (N += d + J) + }), M.restore()) : O.tx(O.tx()), p !== O._64I && O.onSumWidthChanged(p, O._64I) + }, onSumWidthChanged: function () { }, handleClick: function (i, S) { + var m = this, + l = i.type, + K = i.action, + V = i.groupId, + f = i.selected; + i.disabled || (V != F ? f || (i.selected = !0, this._items.forEach(function (a) { + a.groupId === V && i !== a && (a.selected = !1) + }), K && i.action(i, m, S)) : l === tm || "toggle" === l ? (i.selected = !f, K && i.action(i, m, S)) : K && i.action(i, m, S)), Um(), m.iv() + } + }); + var lt = function (o) { + this.tb = o, this.addListeners() + }; + yc(lt, o, { + ms_listener: 1, + getView: function () { + return this.tb._view + }, handle_mousewheel: function (a) { + this.handleScroll(a, 10 * (a.wheelDelta / 40)) + }, handle_DOMMouseScroll: function (z) { + this.handleScroll(z, 10 * -z.detail) + }, handleScroll: function (L, U) { + Qc(L); + var W = this.tb; + W.isScrollable() && !W._stickToRight && (W.tx(W.tx() + U), ek()) + }, handle_mousemove: function (h) { + var s = this; + si || s.setItem(h) + }, handle_mouseout: function (V) { + var J = this; + V.target === J.getView() ? J.tb.setCurrentItem(F) : J.handle_mousemove(V) + }, handle_mousedown: function (q) { + this.handle_mousemove(q), this.handle_touchstart(q) + }, handle_touchstart: function (b) { + var X = this, + g = X.tb, + c = b.target; + jj(b) && (c === X.getView() || c === g._canvas) && (Qc(b), g.setFocus(b) && (this.setItem(b, !0), (g.isScrollable() || X.info && !X.info.item.disabled) && (X.x = lb(b).x, X.tx = g.tx(), Ui(X, b)))) + }, handleWindowMouseMove: function (A) { + this.handleWindowTouchMove(A) + }, handleWindowTouchMove: function (l) { + var q = this, + W = q.tb; + if (!W._stickToRight) { + var h = lb(l).x - q.x; + !q._25o && X(h) > 2 && W.isScrollable() && (q._25o = 1), q._25o && W.tx(q.tx + h) + } + }, handleWindowMouseUp: function (h) { + this.handleWindowTouchEnd(h) + }, handleWindowTouchEnd: function (v) { + var j = this, + c = j.tb, + P = j.info, + k = j.tb.getItemInfoAt(v); + if (!j._25o && P) { + var W = P.item; + k && k.item === W && c.handleClick(W, v) + } + j._25o = j.x = j.tx = F, j.setItem() + }, setItem: function (i, $) { + var G = this, + Q = G.tb, + u = G.info = i ? Q.getItemInfoAt(i) : F, + V = u ? u.item : F; + Q.setCurrentItem(V), $ && V && Mf(V.onDown) && V.onDown(i) + } + }), Vs.BorderPane = function () { + this._view = ve(1, this), this.iv() + }, Ws("BorderPane", o, { + ms_v: 1, + ms_ac: ["topHeight", "bottomHeight", "leftWidth", "rightWidth"], + ms_fire: 1, + getLeftView: function () { + return this._leftView + }, setLeftView: function (O, B) { + this._12o("leftView", O), B != F && this.setLeftWidth(B) + }, getRightView: function () { + return this._rightView + }, setRightView: function (J, w) { + this._12o("rightView", J), w != F && this.setRightWidth(w) + }, getTopView: function () { + return this._topView + }, setTopView: function (M, S) { + this._12o("topView", M), S != F && this.setTopHeight(S) + }, getBottomView: function () { + return this._bottomView + }, setBottomView: function (Q, R) { + this._12o("bottomView", Q), R != F && this.setBottomHeight(R) + }, getCenterView: function () { + return this._centerView + }, setCenterView: function (j) { + this._12o("centerView", j) + }, _12o: function (k, T) { + var f = this, + g = "_" + k, + Q = f._view, + X = f[g]; + X !== T && (X && (X.getView ? yj(X.getView()) : yj(X)), f[g] = T, T && (T.getView ? sn(Q, T.getView(), 1) : sn(Q, T, 1)), f.fp(k, X, T)) + }, onPropertyChanged: function () { + this.iv() + }, validateImpl: function () { + var u = this, + m = u._topView, + W = u._bottomView, + f = u._leftView, + t = u._rightView, + E = u._centerView, + r = u.getWidth(), + T = u.getHeight(), + z = 0, + e = 0, + n = r, + P = T, + A = 0, + I = 0, + h = 0, + L = 0; + m && (A = u._topHeight == F ? zp(m) : u._topHeight, e = A), W && (I = u._bottomHeight == F ? zp(W) : u._bottomHeight, P = T - I), f && (h = u._leftWidth == F ? oh(f) : u._leftWidth, z = h), t && (L = u._rightWidth == F ? oh(t) : u._rightWidth, n = r - L); + var l = q(0, n - z), + k = q(0, P - e); + m && qp(m, 0, 0, r, A), W && qp(W, 0, P, r, I), f && qp(f, 0, e, h, k), t && qp(t, n, e, L, k), E && qp(E, z, e, l, k) + } + }) + } +}("undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : (0, eval)("this"), Object); \ No newline at end of file diff --git a/src/assets/mapInfo/xzlbr1.png b/src/assets/mapInfo/xzlbr1.png index ff936fb..909edf3 100644 Binary files a/src/assets/mapInfo/xzlbr1.png and b/src/assets/mapInfo/xzlbr1.png differ diff --git a/src/views/land/child/index.vue b/src/views/land/child/index.vue index 17f057a..5389b97 100644 --- a/src/views/land/child/index.vue +++ b/src/views/land/child/index.vue @@ -4478,7 +4478,7 @@ export default { i ].realTimePower.substring( 0, - this.tableData[i].realTimePower.indexOf(".") + 2 + this.tableData[i].realTimePower.indexOf(".") + 3 ); } }); @@ -4500,7 +4500,7 @@ export default { i ].realTimePower.substring( 0, - this.tableData[i].realTimePower.indexOf(".") + 2 + this.tableData[i].realTimePower.indexOf(".") + 3 ); } });