/*! * MotionPathPlugin 3.12.2 * https://greensock.com * * @license Copyright 2023, GreenSock. All rights reserved. * Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership. * @author: Jack Doyle, jack@greensock.com */ !(function (t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e(((t = t || self).window = t.window || {})); })(this, function (t) { "use strict"; function p(t) { return "string" == typeof t; } function x(t) { return Math.round(1e10 * t) / 1e10 || 0; } function y(t, e, n, r) { var a = t[e], o = 1 === r ? 6 : subdivideSegment(a, n, r); if (o && o + n + 2 < a.length) return t.splice(e, 0, a.slice(0, n + o + 2)), a.splice(0, n + o), 1; } function C(t, e) { var n = t.length, r = t[n - 1] || [], a = r.length; n && e[0] === r[a - 2] && e[1] === r[a - 1] && ((e = r.concat(e.slice(2))), n--), (t[n] = e); } var M = /[achlmqstvz]|(-?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi, T = /(?:(-)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi, L = /[\+\-]?\d*\.?\d+e[\+\-]?\d+/gi, r = /(^[#\.][a-z]|[a-y][a-z])/i, V = Math.PI / 180, s = 180 / Math.PI, F = Math.sin, U = Math.cos, H = Math.abs, $ = Math.sqrt, l = Math.atan2, A = 1e8, h = function _isNumber(t) { return "number" == typeof t; }, S = {}, _ = {}, e = 1e5, d = function _wrapProgress(t) { return Math.round(((t + A) % 1) * e) / e || (t < 0 ? 0 : 1); }, N = function _round(t) { return Math.round(t * e) / e || 0; }, m = function _getSampleIndex(t, e, n) { var r = t.length, a = ~~(n * r); if (t[a] > e) { for (; --a && t[a] > e; ); a < 0 && (a = 0); } else for (; t[++a] < e && a < r; ); return a < r ? a : r - 1; }, O = function _copyMetaData(t, e) { return ( (e.totalLength = t.totalLength), t.samples ? ((e.samples = t.samples.slice(0)), (e.lookup = t.lookup.slice(0)), (e.minLength = t.minLength), (e.resolution = t.resolution)) : t.totalPoints && (e.totalPoints = t.totalPoints), e ); }; function getRawPath(t) { var e, n = (t = (p(t) && r.test(t) && document.querySelector(t)) || t) .getAttribute ? t : 0; return n && (t = t.getAttribute("d")) ? (n._gsPath || (n._gsPath = {}), (e = n._gsPath[t]) && !e._dirty ? e : (n._gsPath[t] = stringToRawPath(t))) : t ? p(t) ? stringToRawPath(t) : h(t[0]) ? [t] : t : console.warn("Expecting a element or an SVG path data string"); } function reverseSegment(t) { var e, n = 0; for (t.reverse(); n < t.length; n += 2) (e = t[n]), (t[n] = t[n + 1]), (t[n + 1] = e); t.reversed = !t.reversed; } var B = { rect: "rx,ry,x,y,width,height", circle: "r,cx,cy", ellipse: "rx,ry,cx,cy", line: "x1,x2,y1,y2", }; function convertToPath(t, e) { var n, r, a, o, i, s, l, h, u, g, f, c, p, d, m, v, y, x, w, P, b, M, R = t.tagName.toLowerCase(), L = 0.552284749831; return "path" !== R && t.getBBox ? ((s = (function _createPath(t, e) { var n, r = document.createElementNS("http://www.w3.org/2000/svg", "path"), a = [].slice.call(t.attributes), o = a.length; for (e = "," + e + ","; -1 < --o; ) (n = a[o].nodeName.toLowerCase()), e.indexOf("," + n + ",") < 0 && r.setAttributeNS(null, n, a[o].nodeValue); return r; })(t, "x,y,width,height,cx,cy,rx,ry,r,x1,x2,y1,y2,points")), (M = (function _attrToObj(t, e) { for (var n = e ? e.split(",") : [], r = {}, a = n.length; -1 < --a; ) r[n[a]] = +t.getAttribute(n[a]) || 0; return r; })(t, B[R])), "rect" === R ? ((o = M.rx), (i = M.ry || o), (r = M.x), (a = M.y), (g = M.width - 2 * o), (f = M.height - 2 * i), (n = o || i ? "M" + (v = (d = (p = r + o) + g) + o) + "," + (x = a + i) + " V" + (w = x + f) + " C" + [ v, (P = w + i * L), (m = d + o * L), (b = w + i), d, b, d - (d - p) / 3, b, p + (d - p) / 3, b, p, b, (c = r + o * (1 - L)), b, r, P, r, w, r, w - (w - x) / 3, r, x + (w - x) / 3, r, x, r, (y = a + i * (1 - L)), c, a, p, a, p + (d - p) / 3, a, d - (d - p) / 3, a, d, a, m, a, v, y, v, x, ].join(",") + "z" : "M" + (r + g) + "," + a + " v" + f + " h" + -g + " v" + -f + " h" + g + "z")) : "circle" === R || "ellipse" === R ? ((h = "circle" === R ? (o = i = M.r) * L : ((o = M.rx), (i = M.ry) * L)), (n = "M" + ((r = M.cx) + o) + "," + (a = M.cy) + " C" + [ r + o, a + h, r + (l = o * L), a + i, r, a + i, r - l, a + i, r - o, a + h, r - o, a, r - o, a - h, r - l, a - i, r, a - i, r + l, a - i, r + o, a - h, r + o, a, ].join(",") + "z")) : "line" === R ? (n = "M" + M.x1 + "," + M.y1 + " L" + M.x2 + "," + M.y2) : ("polyline" !== R && "polygon" !== R) || ((n = "M" + (r = (u = (t.getAttribute("points") + "").match(T) || []).shift()) + "," + (a = u.shift()) + " L" + u.join(",")), "polygon" === R && (n += "," + r + "," + a + "z")), s.setAttribute( "d", rawPathToString((s._gsRawPath = stringToRawPath(n))) ), e && t.parentNode && (t.parentNode.insertBefore(s, t), t.parentNode.removeChild(t)), s) : t; } function getRotationAtBezierT(t, e, n) { var r, a = t[e], o = t[e + 2], i = t[e + 4]; return ( (a += (o - a) * n), (a += ((o += (i - o) * n) - a) * n), (r = o + (i + (t[e + 6] - i) * n - o) * n - a), (a = t[e + 1]), (a += ((o = t[e + 3]) - a) * n), (a += ((o += ((i = t[e + 5]) - o) * n) - a) * n), N(l(o + (i + (t[e + 7] - i) * n - o) * n - a, r) * s) ); } function sliceRawPath(t, e, n) { (n = (function _isUndefined(t) { return void 0 === t; })(n) ? 1 : x(n) || 0), (e = x(e) || 0); var r = Math.max(0, ~~(H(n - e) - 1e-8)), a = (function copyRawPath(t) { for (var e = [], n = 0; n < t.length; n++) e[n] = O(t[n], t[n].slice(0)); return O(t, e); })(t); if ( (n < e && ((e = 1 - e), (n = 1 - n), (function _reverseRawPath(t, e) { var n = t.length; for (e || t.reverse(); n--; ) t[n].reversed || reverseSegment(t[n]); })(a), (a.totalLength = 0)), e < 0 || n < 0) ) { var o = Math.abs(~~Math.min(e, n)) + 1; (e += o), (n += o); } a.totalLength || cacheRawPathMeasurements(a); var i, s, l, h, u, g, f, c, p = 1 < n, d = getProgressData(a, e, S, !0), m = getProgressData(a, n, _), v = m.segment, w = d.segment, P = m.segIndex, b = d.segIndex, M = m.i, R = d.i, L = b === P, T = M === R && L; if (p || r) { for ( i = P < b || (L && M < R) || (T && m.t < d.t), y(a, b, R, d.t) && (b++, i || (P++, T ? ((m.t = (m.t - d.t) / (1 - d.t)), (M = 0)) : L && (M -= R))), Math.abs(1 - (n - e)) < 1e-5 ? (P = b - 1) : !m.t && P ? P-- : y(a, P, M, m.t) && i && b++, 1 === d.t && (b = (b + 1) % a.length), u = [], f = 1 + (g = a.length) * r, f += (g - (c = b) + P) % g, h = 0; h < f; h++ ) C(u, a[c++ % g]); a = u; } else if (((l = 1 === m.t ? 6 : subdivideSegment(v, M, m.t)), e !== n)) for ( s = subdivideSegment(w, R, T ? d.t / m.t : d.t), L && (l += s), v.splice(M + l + 2), (s || R) && w.splice(0, R + s), h = a.length; h--; ) (h < b || P < h) && a.splice(h, 1); else (v.angle = getRotationAtBezierT(v, M + l, 0)), (d = v[(M += l)]), (m = v[M + 1]), (v.length = v.totalLength = 0), (v.totalPoints = a.totalPoints = 8), v.push(d, m, d, m, d, m, d, m); return (a.totalLength = 0), a; } function measureSegment(t, e, n) { (e = e || 0), t.samples || ((t.samples = []), (t.lookup = [])); var r, a, o, i, s, l, h, u, g, f, c, p, d, m, v, y, x, w = ~~t.resolution || 12, P = 1 / w, b = n ? e + 6 * n + 1 : t.length, M = t[e], R = t[e + 1], L = e ? (e / 6) * w : 0, T = t.samples, S = t.lookup, C = (e ? t.minLength : A) || A, _ = T[L + n * w - 1], N = e ? T[L - 1] : 0; for (T.length = S.length = 0, a = e + 2; a < b; a += 6) { if ( ((o = t[a + 4] - M), (i = t[a + 2] - M), (s = t[a] - M), (u = t[a + 5] - R), (g = t[a + 3] - R), (f = t[a + 1] - R), (l = h = c = p = 0), H(o) < 0.01 && H(u) < 0.01 && H(s) + H(f) < 0.01) ) 8 < t.length && (t.splice(a, 6), (a -= 6), (b -= 6)); else for (r = 1; r <= w; r++) (l = h - (h = ((m = P * r) * m * o + 3 * (d = 1 - m) * (m * i + d * s)) * m)), (c = p - (p = (m * m * u + 3 * d * (m * g + d * f)) * m)), (y = $(c * c + l * l)) < C && (C = y), (N += y), (T[L++] = N); (M += o), (R += u); } if (_) for (_ -= N; L < T.length; L++) T[L] += _; if (T.length && C) { if ( ((t.totalLength = x = T[T.length - 1] || 0), x / (t.minLength = C) < 9999) ) for (y = v = 0, r = 0; r < x; r += C) S[y++] = T[v] < r ? ++v : v; } else t.totalLength = T[0] = 0; return e ? N - T[e / 2 - 1] : N; } function cacheRawPathMeasurements(t, e) { var n, r, a; for (a = n = r = 0; a < t.length; a++) (t[a].resolution = ~~e || 12), (r += t[a].length), (n += measureSegment(t[a])); return (t.totalPoints = r), (t.totalLength = n), t; } function subdivideSegment(t, e, n) { if (n <= 0 || 1 <= n) return 0; var r = t[e], a = t[e + 1], o = t[e + 2], i = t[e + 3], s = t[e + 4], l = t[e + 5], h = r + (o - r) * n, u = o + (s - o) * n, g = a + (i - a) * n, f = i + (l - i) * n, c = h + (u - h) * n, p = g + (f - g) * n, d = s + (t[e + 6] - s) * n, m = l + (t[e + 7] - l) * n; return ( (u += (d - u) * n), (f += (m - f) * n), t.splice( e + 2, 4, N(h), N(g), N(c), N(p), N(c + (u - c) * n), N(p + (f - p) * n), N(u), N(f), N(d), N(m) ), t.samples && t.samples.splice(((e / 6) * t.resolution) | 0, 0, 0, 0, 0, 0, 0, 0), 6 ); } function getProgressData(t, e, n, r) { (n = n || {}), t.totalLength || cacheRawPathMeasurements(t), (e < 0 || 1 < e) && (e = d(e)); var a, o, i, s, l, h, u, g = 0, f = t[0]; if (e) if (1 === e) (u = 1), (h = (f = t[(g = t.length - 1)]).length - 8); else { if (1 < t.length) { for ( i = t.totalLength * e, l = h = 0; (l += t[h++].totalLength) < i; ) g = h; e = (i - (s = l - (f = t[g]).totalLength)) / (l - s) || 0; } (a = f.samples), (o = f.resolution), (i = f.totalLength * e), (s = (h = f.lookup.length ? f.lookup[~~(i / f.minLength)] || 0 : m(a, i, e)) ? a[h - 1] : 0), (l = a[h]) < i && ((s = l), (l = a[++h])), (u = (1 / o) * ((i - s) / (l - s) + (h % o))), (h = 6 * ~~(h / o)), r && 1 === u && (h + 6 < f.length ? ((h += 6), (u = 0)) : g + 1 < t.length && ((h = u = 0), (f = t[++g]))); } else (u = h = g = 0), (f = t[0]); return ( (n.t = u), (n.i = h), (n.path = t), (n.segment = f), (n.segIndex = g), n ); } function getPositionOnPath(t, e, n, r) { var a, o, i, s, l, h, u, g, f, c = t[0], p = r || {}; if ( ((e < 0 || 1 < e) && (e = d(e)), c.lookup || cacheRawPathMeasurements(t), 1 < t.length) ) { for (i = t.totalLength * e, l = h = 0; (l += t[h++].totalLength) < i; ) c = t[h]; e = (i - (s = l - c.totalLength)) / (l - s) || 0; } return ( (a = c.samples), (o = c.resolution), (i = c.totalLength * e), (s = (h = c.lookup.length ? c.lookup[e < 1 ? ~~(i / c.minLength) : c.lookup.length - 1] || 0 : m(a, i, e)) ? a[h - 1] : 0), (l = a[h]) < i && ((s = l), (l = a[++h])), (f = 1 - (u = (1 / o) * ((i - s) / (l - s) + (h % o)) || 0)), (g = c[(h = 6 * ~~(h / o))]), (p.x = N( (u * u * (c[h + 6] - g) + 3 * f * (u * (c[h + 4] - g) + f * (c[h + 2] - g))) * u + g )), (p.y = N( (u * u * (c[h + 7] - (g = c[h + 1])) + 3 * f * (u * (c[h + 5] - g) + f * (c[h + 3] - g))) * u + g )), n && (p.angle = c.totalLength ? getRotationAtBezierT(c, h, 1 <= u ? 1 - 1e-9 : u || 1e-9) : c.angle || 0), p ); } function transformRawPath(t, e, n, r, a, o, i) { for (var s, l, h, u, g, f = t.length; -1 < --f; ) for (l = (s = t[f]).length, h = 0; h < l; h += 2) (u = s[h]), (g = s[h + 1]), (s[h] = u * e + g * r + o), (s[h + 1] = u * n + g * a + i); return (t._dirty = 1), t; } function arcToSegment(t, e, n, r, a, o, i, s, l) { if (t !== s || e !== l) { (n = H(n)), (r = H(r)); var h = (a % 360) * V, u = U(h), g = F(h), f = Math.PI, c = 2 * f, p = (t - s) / 2, d = (e - l) / 2, m = u * p + g * d, v = -g * p + u * d, y = m * m, x = v * v, w = y / (n * n) + x / (r * r); 1 < w && ((n = $(w) * n), (r = $(w) * r)); var P = n * n, b = r * r, M = (P * b - P * x - b * y) / (P * x + b * y); M < 0 && (M = 0); var R = (o === i ? -1 : 1) * $(M), L = ((n * v) / r) * R, T = ((-r * m) / n) * R, S = u * L - g * T + (t + s) / 2, C = g * L + u * T + (e + l) / 2, _ = (m - L) / n, N = (v - T) / r, A = (-m - L) / n, O = (-v - T) / r, B = _ * _ + N * N, I = (N < 0 ? -1 : 1) * Math.acos(_ / $(B)), D = (_ * O - N * A < 0 ? -1 : 1) * Math.acos((_ * A + N * O) / $(B * (A * A + O * O))); isNaN(D) && (D = f), !i && 0 < D ? (D -= c) : i && D < 0 && (D += c), (I %= c), (D %= c); var E, X = Math.ceil(H(D) / (c / 4)), k = [], z = D / X, G = ((4 / 3) * F(z / 2)) / (1 + U(z / 2)), Z = u * n, q = g * n, Y = g * -r, j = u * r; for (E = 0; E < X; E++) (m = U((a = I + E * z))), (v = F(a)), (_ = U((a += z))), (N = F(a)), k.push(m - G * v, v + G * m, _ + G * N, N - G * _, _, N); for (E = 0; E < k.length; E += 2) (m = k[E]), (v = k[E + 1]), (k[E] = m * Z + v * Y + S), (k[E + 1] = m * q + v * j + C); return (k[E - 2] = s), (k[E - 1] = l), k; } } function stringToRawPath(t) { function Cf(t, e, n, r) { (u = (n - t) / 3), (g = (r - e) / 3), s.push(t + u, e + g, n - u, r - g, n, r); } var e, n, r, a, o, i, s, l, h, u, g, f, c, p, d, m = (t + "") .replace(L, function (t) { var e = +t; return e < 1e-4 && -1e-4 < e ? 0 : e; }) .match(M) || [], v = [], y = 0, x = 0, w = m.length, P = 0, b = "ERROR: malformed path: " + t; if (!t || !isNaN(m[0]) || isNaN(m[1])) return console.log(b), v; for (e = 0; e < w; e++) if ( ((c = o), isNaN(m[e]) ? (i = (o = m[e].toUpperCase()) !== m[e]) : e--, (r = +m[e + 1]), (a = +m[e + 2]), i && ((r += y), (a += x)), e || ((l = r), (h = a)), "M" === o) ) s && (s.length < 8 ? --v.length : (P += s.length)), (y = l = r), (x = h = a), (s = [r, a]), v.push(s), (e += 2), (o = "L"); else if ("C" === o) i || (y = x = 0), (s = s || [0, 0]).push( r, a, y + 1 * m[e + 3], x + 1 * m[e + 4], (y += 1 * m[e + 5]), (x += 1 * m[e + 6]) ), (e += 6); else if ("S" === o) (u = y), (g = x), ("C" !== c && "S" !== c) || ((u += y - s[s.length - 4]), (g += x - s[s.length - 3])), i || (y = x = 0), s.push(u, g, r, a, (y += 1 * m[e + 3]), (x += 1 * m[e + 4])), (e += 4); else if ("Q" === o) (u = y + (2 / 3) * (r - y)), (g = x + (2 / 3) * (a - x)), i || (y = x = 0), (y += 1 * m[e + 3]), (x += 1 * m[e + 4]), s.push(u, g, y + (2 / 3) * (r - y), x + (2 / 3) * (a - x), y, x), (e += 4); else if ("T" === o) (u = y - s[s.length - 4]), (g = x - s[s.length - 3]), s.push( y + u, x + g, r + (2 / 3) * (y + 1.5 * u - r), a + (2 / 3) * (x + 1.5 * g - a), (y = r), (x = a) ), (e += 2); else if ("H" === o) Cf(y, x, (y = r), x), (e += 1); else if ("V" === o) Cf(y, x, y, (x = r + (i ? x - y : 0))), (e += 1); else if ("L" === o || "Z" === o) "Z" === o && ((r = l), (a = h), (s.closed = !0)), ("L" === o || 0.5 < H(y - r) || 0.5 < H(x - a)) && (Cf(y, x, r, a), "L" === o && (e += 2)), (y = r), (x = a); else if ("A" === o) { if ( ((p = m[e + 4]), (d = m[e + 5]), (u = m[e + 6]), (g = m[e + 7]), (n = 7), 1 < p.length && (p.length < 3 ? ((g = u), (u = d), n--) : ((g = d), (u = p.substr(2)), (n -= 2)), (d = p.charAt(1)), (p = p.charAt(0))), (f = arcToSegment( y, x, +m[e + 1], +m[e + 2], +m[e + 3], +p, +d, (i ? y : 0) + 1 * u, (i ? x : 0) + 1 * g )), (e += n), f) ) for (n = 0; n < f.length; n++) s.push(f[n]); (y = s[s.length - 2]), (x = s[s.length - 1]); } else console.log(b); return ( (e = s.length) < 6 ? (v.pop(), (e = 0)) : s[0] === s[e - 2] && s[1] === s[e - 1] && (s.closed = !0), (v.totalPoints = P + e), v ); } function flatPointsToSegment(t, e) { void 0 === e && (e = 1); for (var n = t[0], r = 0, a = [n, r], o = 2; o < t.length; o += 2) a.push(n, r, t[o], (r = ((t[o] - n) * e) / 2), (n = t[o]), -r); return a; } function pointsToSegment(t, e) { H(t[0] - t[2]) < 1e-4 && H(t[1] - t[3]) < 1e-4 && (t = t.slice(2)); var n, r, a, o, i, s, l, h, u, g, f, c, p, d, m = t.length - 2, v = +t[0], y = +t[1], x = +t[2], w = +t[3], P = [v, y, v, y], b = x - v, M = w - y, R = Math.abs(t[m] - v) < 0.001 && Math.abs(t[m + 1] - y) < 0.001; for ( R && (t.push(x, w), (x = v), (w = y), (v = t[m - 2]), (y = t[m - 1]), t.unshift(v, y), (m += 4)), e = e || 0 === e ? +e : 1, a = 2; a < m; a += 2 ) (n = v), (r = y), (v = x), (y = w), (x = +t[a + 2]), (w = +t[a + 3]), (v === x && y === w) || ((o = b), (i = M), (b = x - v), (M = w - y), (h = (((s = $(o * o + i * i)) + (l = $(b * b + M * M))) * e * 0.25) / $(Math.pow(b / l + o / s, 2) + Math.pow(M / l + i / s, 2))), (f = v - ((u = v - (v - n) * (s ? h / s : 0)) + ((((g = v + (x - v) * (l ? h / l : 0)) - u) * ((3 * s) / (s + l) + 0.5)) / 4 || 0))), (d = y - ((c = y - (y - r) * (s ? h / s : 0)) + ((((p = y + (w - y) * (l ? h / l : 0)) - c) * ((3 * s) / (s + l) + 0.5)) / 4 || 0))), (v === n && y === r) || P.push(N(u + f), N(c + d), N(v), N(y), N(g + f), N(p + d))); return ( v !== x || y !== w || P.length < 4 ? P.push(N(x), N(w), N(x), N(w)) : (P.length -= 2), 2 === P.length ? P.push(v, y, v, y, v, y) : R && (P.splice(0, 6), (P.length = P.length - 6)), P ); } function rawPathToString(t) { h(t[0]) && (t = [t]); var e, n, r, a, o = "", i = t.length; for (n = 0; n < i; n++) { for ( a = t[n], o += "M" + N(a[0]) + "," + N(a[1]) + " C", e = a.length, r = 2; r < e; r++ ) o += N(a[r++]) + "," + N(a[r++]) + " " + N(a[r++]) + "," + N(a[r++]) + " " + N(a[r++]) + "," + N(a[r]) + " "; a.closed && (o += "z"); } return o; } function R(t) { var e = t.ownerDocument || t; !(k in t.style) && "msTransform" in t.style && (z = (k = "msTransform") + "Origin"); for (; e.parentNode && (e = e.parentNode); ); if (((v = window), (I = new Y()), e)) { (w = (c = e).documentElement), (P = e.body), ((D = c.createElementNS( "http://www.w3.org/2000/svg", "g" )).style.transform = "none"); var n = e.createElement("div"), r = e.createElement("div"); P.appendChild(n), n.appendChild(r), (n.style.position = "static"), (n.style[k] = "translate3d(0,0,1px)"), (E = r.offsetParent !== n), P.removeChild(n); } return e; } function X(t) { return ( t.ownerSVGElement || ("svg" === (t.tagName + "").toLowerCase() ? t : null) ); } function Z(t, e) { if (t.parentNode && (c || R(t))) { var n = X(t), r = n ? n.getAttribute("xmlns") || "http://www.w3.org/2000/svg" : "http://www.w3.org/1999/xhtml", a = n ? (e ? "rect" : "g") : "div", o = 2 !== e ? 0 : 100, i = 3 === e ? 100 : 0, s = "position:absolute;display:block;pointer-events:none;margin:0;padding:0;", l = c.createElementNS ? c.createElementNS(r.replace(/^https/, "http"), a) : c.createElement(a); return ( e && (n ? ((b = b || Z(t)), l.setAttribute("width", 0.01), l.setAttribute("height", 0.01), l.setAttribute("transform", "translate(" + o + "," + i + ")"), b.appendChild(l)) : (f || ((f = Z(t)).style.cssText = s), (l.style.cssText = s + "width:0.1px;height:0.1px;top:" + i + "px;left:" + o + "px"), f.appendChild(l))), l ); } throw "Need document and parent."; } function aa(t, e) { var n, r, a, o, i, s, l = X(t), h = t === l, u = l ? G : q, g = t.parentNode; if (t === v) return t; if ((u.length || u.push(Z(t, 1), Z(t, 2), Z(t, 3)), (n = l ? b : f), l)) h ? ((o = -(a = (function _getCTM(t) { var e, n = t.getCTM(); return ( n || ((e = t.style[k]), (t.style[k] = "none"), t.appendChild(D), (n = D.getCTM()), t.removeChild(D), e ? (t.style[k] = e) : t.style.removeProperty( k.replace(/([A-Z])/g, "-$1").toLowerCase() )), n || I.clone() ); })(t)).e / a.a), (i = -a.f / a.d), (r = I)) : t.getBBox ? ((a = t.getBBox()), (o = (r = (r = t.transform ? t.transform.baseVal : {}).numberOfItems ? 1 < r.numberOfItems ? (function _consolidate(t) { for (var e = new Y(), n = 0; n < t.numberOfItems; n++) e.multiply(t.getItem(n).matrix); return e; })(r) : r.getItem(0).matrix : I).a * a.x + r.c * a.y), (i = r.b * a.x + r.d * a.y)) : ((r = new Y()), (o = i = 0)), e && "g" === t.tagName.toLowerCase() && (o = i = 0), (h ? l : g).appendChild(n), n.setAttribute( "transform", "matrix(" + r.a + "," + r.b + "," + r.c + "," + r.d + "," + (r.e + o) + "," + (r.f + i) + ")" ); else { if (((o = i = 0), E)) for ( r = t.offsetParent, a = t; (a = a && a.parentNode) && a !== r && a.parentNode; ) 4 < (v.getComputedStyle(a)[k] + "").length && ((o = a.offsetLeft), (i = a.offsetTop), (a = 0)); if ( "absolute" !== (s = v.getComputedStyle(t)).position && "fixed" !== s.position ) for (r = t.offsetParent; g && g !== r; ) (o += g.scrollLeft || 0), (i += g.scrollTop || 0), (g = g.parentNode); ((a = n.style).top = t.offsetTop - i + "px"), (a.left = t.offsetLeft - o + "px"), (a[k] = s[k]), (a[z] = s[z]), (a.position = "fixed" === s.position ? "fixed" : "absolute"), t.parentNode.appendChild(n); } return n; } function ba(t, e, n, r, a, o, i) { return (t.a = e), (t.b = n), (t.c = r), (t.d = a), (t.e = o), (t.f = i), t; } var c, v, w, P, f, b, I, D, E, n, k = "transform", z = k + "Origin", G = [], q = [], Y = (((n = Matrix2D.prototype).inverse = function inverse() { var t = this.a, e = this.b, n = this.c, r = this.d, a = this.e, o = this.f, i = t * r - e * n || 1e-10; return ba( this, r / i, -e / i, -n / i, t / i, (n * o - r * a) / i, -(t * o - e * a) / i ); }), (n.multiply = function multiply(t) { var e = this.a, n = this.b, r = this.c, a = this.d, o = this.e, i = this.f, s = t.a, l = t.c, h = t.b, u = t.d, g = t.e, f = t.f; return ba( this, s * e + h * r, s * n + h * a, l * e + u * r, l * n + u * a, o + g * e + f * r, i + g * n + f * a ); }), (n.clone = function clone() { return new Matrix2D(this.a, this.b, this.c, this.d, this.e, this.f); }), (n.equals = function equals(t) { var e = this.a, n = this.b, r = this.c, a = this.d, o = this.e, i = this.f; return ( e === t.a && n === t.b && r === t.c && a === t.d && o === t.e && i === t.f ); }), (n.apply = function apply(t, e) { void 0 === e && (e = {}); var n = t.x, r = t.y, a = this.a, o = this.b, i = this.c, s = this.d, l = this.e, h = this.f; return ( (e.x = n * a + r * i + l || 0), (e.y = n * o + r * s + h || 0), e ); }), Matrix2D); function Matrix2D(t, e, n, r, a, o) { void 0 === t && (t = 1), void 0 === e && (e = 0), void 0 === n && (n = 0), void 0 === r && (r = 1), void 0 === a && (a = 0), void 0 === o && (o = 0), ba(this, t, e, n, r, a, o); } function getGlobalMatrix(t, e, n, r) { if (!t || !t.parentNode || (c || R(t)).documentElement === t) return new Y(); var a = (function _forceNonZeroScale(t) { for (var e, n; t && t !== P; ) (n = t._gsap) && n.uncache && n.get(t, "x"), n && !n.scaleX && !n.scaleY && n.renderTransform && ((n.scaleX = n.scaleY = 1e-4), n.renderTransform(1, n), e ? e.push(n) : (e = [n])), (t = t.parentNode); return e; })(t), o = X(t) ? G : q, i = aa(t, n), s = o[0].getBoundingClientRect(), l = o[1].getBoundingClientRect(), h = o[2].getBoundingClientRect(), u = i.parentNode, g = !r && (function _isFixed(t) { return ( "fixed" === v.getComputedStyle(t).position || ((t = t.parentNode) && 1 === t.nodeType ? _isFixed(t) : void 0) ); })(t), f = new Y( (l.left - s.left) / 100, (l.top - s.top) / 100, (h.left - s.left) / 100, (h.top - s.top) / 100, s.left + (g ? 0 : (function _getDocScrollLeft() { return ( v.pageXOffset || c.scrollLeft || w.scrollLeft || P.scrollLeft || 0 ); })()), s.top + (g ? 0 : (function _getDocScrollTop() { return ( v.pageYOffset || c.scrollTop || w.scrollTop || P.scrollTop || 0 ); })()) ); if ((u.removeChild(i), a)) for (s = a.length; s--; ) ((l = a[s]).scaleX = l.scaleY = 0), l.renderTransform(1, l); return e ? f.inverse() : f; } function na(t, e, n, r) { for (var a = e.length, o = 2 === r ? 0 : r, i = 0; i < a; i++) (t[o] = parseFloat(e[i][n])), 2 === r && (t[o + 1] = 0), (o += 2); return t; } function oa(t, e, n) { return parseFloat(t._gsap.get(t, e, n || "px")) || 0; } function pa(t) { var e, n = t[0], r = t[1]; for (e = 2; e < t.length; e += 2) (n = t[e] += n), (r = t[e + 1] += r); } function qa(t, e, n, r, a, o, i, s, l) { return ( (e = "cubic" === i.type ? [e] : (!1 !== i.fromCurrent && e.unshift(oa(n, r, s), a ? oa(n, a, l) : 0), i.relative && pa(e), [(a ? pointsToSegment : flatPointsToSegment)(e, i.curviness)])), (e = o(nt(e, n, i))), rt(t, n, r, e, "x", s), a && rt(t, n, a, e, "y", l), cacheRawPathMeasurements(e, i.resolution || (0 === i.curviness ? 20 : 12)) ); } function ra(t) { return t; } function ta(t, e, n) { var r, a = getGlobalMatrix(t), o = 0, i = 0; return ( "svg" === (t.tagName + "").toLowerCase() ? (r = t.viewBox.baseVal).width || (r = { width: +t.getAttribute("width"), height: +t.getAttribute("height"), }) : (r = e && t.getBBox && t.getBBox()), e && "auto" !== e && ((o = e.push ? e[0] * (r ? r.width : t.offsetWidth || 0) : e.x), (i = e.push ? e[1] * (r ? r.height : t.offsetHeight || 0) : e.y)), n.apply(o || i ? a.apply({ x: o, y: i }) : { x: a.e, y: a.f }) ); } function ua(t, e, n, r) { var a, o = getGlobalMatrix(t.parentNode, !0, !0), i = o.clone().multiply(getGlobalMatrix(e)), s = ta(t, n, o), l = ta(e, r, o), h = l.x, u = l.y; return ( (i.e = i.f = 0), "auto" === r && e.getTotalLength && "path" === e.tagName.toLowerCase() && ((a = e.getAttribute("d").match(et) || []), (h += (a = i.apply({ x: +a[0], y: +a[1] })).x), (u += a.y)), a && ((h -= (a = i.apply(e.getBBox())).x), (u -= a.y)), (i.e = h - s.x), (i.f = u - s.y), i ); } var j, g, Q, W, J, o, K = "x,translateX,left,marginLeft,xPercent".split(","), tt = "y,translateY,top,marginTop,yPercent".split(","), i = Math.PI / 180, et = /[-+\.]*\d+\.?(?:e-|e\+)?\d*/g, nt = function _align(t, e, n) { var r, a, o, i = n.align, s = n.matrix, l = n.offsetX, h = n.offsetY, u = n.alignOrigin, g = t[0][0], f = t[0][1], c = oa(e, "x"), p = oa(e, "y"); return t && t.length ? (i && ("self" === i || (r = W(i)[0] || e) === e ? transformRawPath(t, 1, 0, 0, 1, c - g, p - f) : (u && !1 !== u[2] ? j.set(e, { transformOrigin: 100 * u[0] + "% " + 100 * u[1] + "%", }) : (u = [oa(e, "xPercent") / -100, oa(e, "yPercent") / -100]), (o = (a = ua(e, r, u, "auto")).apply({ x: g, y: f })), transformRawPath( t, a.a, a.b, a.c, a.d, c + a.e - (o.x - a.e), p + a.f - (o.y - a.f) ))), s ? transformRawPath(t, s.a, s.b, s.c, s.d, s.e, s.f) : (l || h) && transformRawPath(t, 1, 0, 0, 1, l || 0, h || 0), t) : getRawPath("M0,0L0,0"); }, rt = function _addDimensionalPropTween(t, e, n, r, a, o) { var i = e._gsap, s = i.harness, l = s && s.aliases && s.aliases[n], h = l && l.indexOf(",") < 0 ? l : n, u = (t._pt = new g(t._pt, e, h, 0, 0, ra, 0, i.set(e, h, t))); (u.u = Q(i.get(e, h, o)) || 0), (u.path = r), (u.pp = a), t._props.push(h); }, a = { version: "3.12.2", name: "motionPath", register: function register(t, e, n) { (Q = (j = t).utils.getUnit), (W = j.utils.toArray), (J = j.core.getStyleSaver), (o = j.core.reverting || function () {}), (g = n); }, init: function init(t, e, n) { if (!j) return ( console.warn("Please gsap.registerPlugin(MotionPathPlugin)"), !1 ); ("object" == typeof e && !e.style && e.path) || (e = { path: e }); var r, a, o = [], i = e.path, s = e.autoRotate, l = e.unitX, h = e.unitY, u = e.x, g = e.y, f = i[0], c = (function _sliceModifier(e, n) { return function (t) { return e || 1 !== n ? sliceRawPath(t, e, n) : t; }; })(e.start, "end" in e ? e.end : 1); if ( ((this.rawPaths = o), (this.target = t), (this.tween = n), (this.styles = J && J(t, "transform")), (this.rotate = s || 0 === s) && ((this.rOffset = parseFloat(s) || 0), (this.radians = !!e.useRadians), (this.rProp = e.rotation || "rotation"), (this.rSet = t._gsap.set(t, this.rProp, this)), (this.ru = Q(t._gsap.get(t, this.rProp)) || 0)), !Array.isArray(i) || "closed" in i || "number" == typeof f) ) cacheRawPathMeasurements( (r = c(nt(getRawPath(e.path), t, e))), e.resolution ), o.push(r), rt(this, t, e.x || "x", r, "x", e.unitX || "px"), rt(this, t, e.y || "y", r, "y", e.unitY || "px"); else { for (a in f) !u && ~K.indexOf(a) ? (u = a) : !g && ~tt.indexOf(a) && (g = a); for (a in (u && g ? o.push( qa( this, na(na([], i, u, 0), i, g, 1), t, u, g, c, e, l || Q(i[0][u]), h || Q(i[0][g]) ) ) : (u = g = 0), f)) a !== u && a !== g && o.push(qa(this, na([], i, a, 2), t, a, 0, c, e, Q(i[0][a]))); } }, render: function render(t, e) { var n = e.rawPaths, r = n.length, a = e._pt; if (e.tween._time || !o()) { for (1 < t ? (t = 1) : t < 0 && (t = 0); r--; ) getPositionOnPath(n[r], t, !r && e.rotate, n[r]); for (; a; ) a.set(a.t, a.p, a.path[a.pp] + a.u, a.d, t), (a = a._next); e.rotate && e.rSet( e.target, e.rProp, n[0].angle * (e.radians ? i : 1) + e.rOffset + e.ru, e, t ); } else e.styles.revert(); }, getLength: function getLength(t) { return cacheRawPathMeasurements(getRawPath(t)).totalLength; }, sliceRawPath: sliceRawPath, getRawPath: getRawPath, pointsToSegment: pointsToSegment, stringToRawPath: stringToRawPath, rawPathToString: rawPathToString, transformRawPath: transformRawPath, getGlobalMatrix: getGlobalMatrix, getPositionOnPath: getPositionOnPath, cacheRawPathMeasurements: cacheRawPathMeasurements, convertToPath: function convertToPath$1(t, e) { return W(t).map(function (t) { return convertToPath(t, !1 !== e); }); }, convertCoordinates: function convertCoordinates(t, e, n) { var r = getGlobalMatrix(e, !0, !0).multiply(getGlobalMatrix(t)); return n ? r.apply(n) : r; }, getAlignMatrix: ua, getRelativePosition: function getRelativePosition(t, e, n, r) { var a = ua(t, e, n, r); return { x: a.e, y: a.f }; }, arrayToRawPath: function arrayToRawPath(t, e) { var n = na(na([], t, (e = e || {}).x || "x", 0), t, e.y || "y", 1); return ( e.relative && pa(n), ["cubic" === e.type ? n : pointsToSegment(n, e.curviness)] ); }, }; !(function _getGSAP() { return ( j || ("undefined" != typeof window && (j = window.gsap) && j.registerPlugin && j) ); })() || j.registerPlugin(a), (t.MotionPathPlugin = a), (t.default = a); if (typeof window === "undefined" || window !== t) { Object.defineProperty(t, "__esModule", { value: !0 }); } else { delete t.default; } });