@enegelai/bot-widget 1.16.5 → 1.16.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/enegelaibot.umd.js +317 -293
- package/dist/index.es.js +914 -851
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { css as J, LitElement as Fe, html as u, nothing as Ae, svg as
|
|
2
|
-
import { property as x, customElement as
|
|
1
|
+
import { css as J, LitElement as Fe, html as u, nothing as Ae, svg as pe } from "lit";
|
|
2
|
+
import { property as x, customElement as Z, query as xe, state as Va, queryAll as Na, eventOptions as na } from "lit/decorators.js";
|
|
3
3
|
import { when as W } from "lit/directives/when.js";
|
|
4
|
-
import { unsafeHTML as
|
|
5
|
-
import { registerIconLibrary as
|
|
4
|
+
import { unsafeHTML as G } from "lit-html/directives/unsafe-html.js";
|
|
5
|
+
import { registerIconLibrary as qi } from "@shoelace-style/shoelace";
|
|
6
6
|
import "@shoelace-style/shoelace/dist/components/button/button.js";
|
|
7
7
|
import "@shoelace-style/shoelace/dist/components/avatar/avatar.js";
|
|
8
8
|
import "@shoelace-style/shoelace/dist/components/input/input.js";
|
|
@@ -22,30 +22,30 @@ import "@shoelace-style/shoelace/dist/components/alert/alert.js";
|
|
|
22
22
|
import "@shoelace-style/shoelace/dist/components/progress-bar/progress-bar.js";
|
|
23
23
|
import "@shoelace-style/shoelace/dist/components/badge/badge.js";
|
|
24
24
|
import { repeat as et } from "lit/directives/repeat.js";
|
|
25
|
-
import { until as
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
25
|
+
import { until as Pt } from "lit-html/directives/until.js";
|
|
26
|
+
import Di from "markdown-it";
|
|
27
|
+
import Fi from "markdown-it-link-attributes";
|
|
28
|
+
import Wt from "highlight.js";
|
|
29
29
|
import "@shoelace-style/shoelace/dist/components/popup/popup.js";
|
|
30
30
|
import "@shoelace-style/shoelace/dist/components/rating/rating.js";
|
|
31
|
-
import { createRef as
|
|
31
|
+
import { createRef as ji, ref as At } from "lit/directives/ref.js";
|
|
32
32
|
function Ua(a) {
|
|
33
33
|
return typeof a == "function" ? a() : a;
|
|
34
34
|
}
|
|
35
|
-
const
|
|
35
|
+
const Ht = class Ht extends Event {
|
|
36
36
|
/**
|
|
37
37
|
* @param {string} key of the state that has changed
|
|
38
38
|
* @param {unknown} value for the changed key
|
|
39
39
|
*/
|
|
40
40
|
constructor(e, t, i) {
|
|
41
|
-
super(
|
|
41
|
+
super(Ht.eventName, {
|
|
42
42
|
cancelable: !1
|
|
43
43
|
}), this.key = e, this.value = t, this.state = i;
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
|
|
47
|
-
let at =
|
|
48
|
-
const
|
|
46
|
+
Ht.eventName = "lit-state-changed";
|
|
47
|
+
let at = Ht;
|
|
48
|
+
const Hi = (a, e) => e !== a && (e === e || a === a), ba = class ba extends EventTarget {
|
|
49
49
|
static initPropertyMap() {
|
|
50
50
|
this.propertyMap || (this.propertyMap = /* @__PURE__ */ new Map());
|
|
51
51
|
}
|
|
@@ -78,7 +78,7 @@ const ji = (a, e) => e !== a && (e === e || a === a), ha = class ha extends Even
|
|
|
78
78
|
Object.defineProperty(this.prototype, e, s);
|
|
79
79
|
}
|
|
80
80
|
static getPropertyDescriptor(e, t, i) {
|
|
81
|
-
const s = i?.hasChanged ||
|
|
81
|
+
const s = i?.hasChanged || Hi;
|
|
82
82
|
return {
|
|
83
83
|
get() {
|
|
84
84
|
return this[t];
|
|
@@ -119,8 +119,8 @@ const ji = (a, e) => e !== a && (e === e || a === a), ha = class ha extends Even
|
|
|
119
119
|
this.dispatchEvent(new at(e, t, i));
|
|
120
120
|
}
|
|
121
121
|
};
|
|
122
|
-
|
|
123
|
-
let
|
|
122
|
+
ba.finalized = !1;
|
|
123
|
+
let Jt = ba;
|
|
124
124
|
class it {
|
|
125
125
|
constructor(e, t, i) {
|
|
126
126
|
this.host = e, this.state = t, this.callback = i || (() => this.host.requestUpdate()), this.host.addController(this);
|
|
@@ -146,7 +146,7 @@ function z(a) {
|
|
|
146
146
|
}), i.createProperty(t, a), s ? Object.getOwnPropertyDescriptor(e, t) : void 0;
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function Vi(a, e) {
|
|
150
150
|
if (a !== null && (e === Boolean || e === Number || e === Array || e === Object))
|
|
151
151
|
try {
|
|
152
152
|
a = JSON.parse(a);
|
|
@@ -156,18 +156,18 @@ function Hi(a, e) {
|
|
|
156
156
|
return a;
|
|
157
157
|
}
|
|
158
158
|
new URL(location.href);
|
|
159
|
-
const
|
|
159
|
+
const Ni = {
|
|
160
160
|
prefix: "_ls"
|
|
161
161
|
};
|
|
162
162
|
function ce(a) {
|
|
163
|
-
return a = { ...
|
|
163
|
+
return a = { ...Ni, ...a }, (e, t) => {
|
|
164
164
|
const i = Object.getOwnPropertyDescriptor(e, t);
|
|
165
165
|
if (!i)
|
|
166
166
|
throw new Error("@local-storage decorator need to be called after @property");
|
|
167
167
|
const s = `${a?.prefix || ""}_${a?.key || String(t)}`, r = e.constructor, o = r.propertyMap.get(t), f = o?.type;
|
|
168
168
|
if (o) {
|
|
169
169
|
const w = o.initialValue;
|
|
170
|
-
o.initialValue = () =>
|
|
170
|
+
o.initialValue = () => Vi(localStorage.getItem(s), f) ?? Ua(w), r.propertyMap.set(t, { ...o, ...a });
|
|
171
171
|
}
|
|
172
172
|
const p = i?.set, k = {
|
|
173
173
|
...i,
|
|
@@ -178,12 +178,12 @@ function ce(a) {
|
|
|
178
178
|
Object.defineProperty(r.prototype, t, k);
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
|
-
function
|
|
181
|
+
function Wa(a) {
|
|
182
182
|
return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a;
|
|
183
183
|
}
|
|
184
|
-
var
|
|
185
|
-
function
|
|
186
|
-
return
|
|
184
|
+
var Lt = { exports: {} }, Ui = Lt.exports, _a;
|
|
185
|
+
function Wi() {
|
|
186
|
+
return _a || (_a = 1, (function(a) {
|
|
187
187
|
(function(e, t) {
|
|
188
188
|
a.exports ? a.exports = t() : e.log = t();
|
|
189
189
|
})(Ui, function() {
|
|
@@ -230,7 +230,7 @@ function Ni() {
|
|
|
230
230
|
return v(M) || w.apply(this, arguments);
|
|
231
231
|
}
|
|
232
232
|
function P(M, L) {
|
|
233
|
-
var C = this,
|
|
233
|
+
var C = this, K, U, X, te = "loglevel";
|
|
234
234
|
typeof M == "string" ? te += ":" + M : typeof M == "symbol" && (te = void 0);
|
|
235
235
|
function He(j) {
|
|
236
236
|
var V = (s[j] || "silent").toUpperCase();
|
|
@@ -276,7 +276,7 @@ function Ni() {
|
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
|
-
function
|
|
279
|
+
function ge(j) {
|
|
280
280
|
var V = j;
|
|
281
281
|
if (typeof V == "string" && C.levels[V.toUpperCase()] !== void 0 && (V = C.levels[V.toUpperCase()]), typeof V == "number" && V >= 0 && V <= C.levels.SILENT)
|
|
282
282
|
return V;
|
|
@@ -290,26 +290,26 @@ function Ni() {
|
|
|
290
290
|
ERROR: 4,
|
|
291
291
|
SILENT: 5
|
|
292
292
|
}, C.methodFactory = L || _, C.getLevel = function() {
|
|
293
|
-
return
|
|
293
|
+
return X ?? U ?? K;
|
|
294
294
|
}, C.setLevel = function(j, V) {
|
|
295
|
-
return
|
|
295
|
+
return X = ge(j), V !== !1 && He(X), k.call(C);
|
|
296
296
|
}, C.setDefaultLevel = function(j) {
|
|
297
|
-
|
|
297
|
+
U = ge(j), ae() || C.setLevel(j, !1);
|
|
298
298
|
}, C.resetLevel = function() {
|
|
299
|
-
|
|
299
|
+
X = null, he(), k.call(C);
|
|
300
300
|
}, C.enableAll = function(j) {
|
|
301
301
|
C.setLevel(C.levels.TRACE, j);
|
|
302
302
|
}, C.disableAll = function(j) {
|
|
303
303
|
C.setLevel(C.levels.SILENT, j);
|
|
304
304
|
}, C.rebuild = function() {
|
|
305
|
-
if (o !== C && (
|
|
305
|
+
if (o !== C && (K = ge(o.getLevel())), k.call(C), o === C)
|
|
306
306
|
for (var j in r)
|
|
307
307
|
r[j].rebuild();
|
|
308
|
-
},
|
|
308
|
+
}, K = ge(
|
|
309
309
|
o ? o.getLevel() : "WARN"
|
|
310
310
|
);
|
|
311
311
|
var F = ae();
|
|
312
|
-
F != null && (
|
|
312
|
+
F != null && (X = ge(F)), k.call(C);
|
|
313
313
|
}
|
|
314
314
|
o = new P(), o.getLogger = function(L) {
|
|
315
315
|
if (typeof L != "symbol" && typeof L != "string" || L === "")
|
|
@@ -320,17 +320,17 @@ function Ni() {
|
|
|
320
320
|
o.methodFactory
|
|
321
321
|
)), C;
|
|
322
322
|
};
|
|
323
|
-
var
|
|
323
|
+
var E = typeof window !== t ? window.log : void 0;
|
|
324
324
|
return o.noConflict = function() {
|
|
325
|
-
return typeof window !== t && window.log === o && (window.log =
|
|
325
|
+
return typeof window !== t && window.log === o && (window.log = E), o;
|
|
326
326
|
}, o.getLoggers = function() {
|
|
327
327
|
return r;
|
|
328
328
|
}, o.default = o, o;
|
|
329
329
|
});
|
|
330
|
-
})(
|
|
330
|
+
})(Lt)), Lt.exports;
|
|
331
331
|
}
|
|
332
|
-
var
|
|
333
|
-
const Je = /* @__PURE__ */
|
|
332
|
+
var Gi = Wi();
|
|
333
|
+
const Je = /* @__PURE__ */ Wa(Gi), Xi = J`
|
|
334
334
|
:host {
|
|
335
335
|
--enegelai-bot-width: 420px;
|
|
336
336
|
--enegelai-bot-base-font-size: 16px;
|
|
@@ -638,7 +638,7 @@ const Je = /* @__PURE__ */ Na(Wi), Gi = J`
|
|
|
638
638
|
}
|
|
639
639
|
|
|
640
640
|
|
|
641
|
-
`,
|
|
641
|
+
`, Ga = J`
|
|
642
642
|
${ke}
|
|
643
643
|
|
|
644
644
|
:host {
|
|
@@ -663,30 +663,30 @@ const Je = /* @__PURE__ */ Na(Wi), Gi = J`
|
|
|
663
663
|
color: white;
|
|
664
664
|
}
|
|
665
665
|
`;
|
|
666
|
-
var
|
|
667
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
666
|
+
var Yi = Object.defineProperty, Ji = Object.getOwnPropertyDescriptor, ra = (a, e, t, i) => {
|
|
667
|
+
for (var s = i > 1 ? void 0 : i ? Ji(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
668
668
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
669
|
-
return i && s &&
|
|
669
|
+
return i && s && Yi(e, t, s), s;
|
|
670
670
|
};
|
|
671
671
|
let ut = class extends Fe {
|
|
672
672
|
constructor() {
|
|
673
673
|
super(...arguments), this.color = "primary", this.svg = "";
|
|
674
674
|
}
|
|
675
675
|
render() {
|
|
676
|
-
return u`<span class="cb-icon" part="base">${
|
|
676
|
+
return u`<span class="cb-icon" part="base">${G(this.svg)}</span>`;
|
|
677
677
|
}
|
|
678
678
|
};
|
|
679
|
-
ut.styles =
|
|
680
|
-
|
|
679
|
+
ut.styles = Ga;
|
|
680
|
+
ra([
|
|
681
681
|
x({ type: String })
|
|
682
682
|
], ut.prototype, "color", 2);
|
|
683
|
-
|
|
683
|
+
ra([
|
|
684
684
|
x({ type: String })
|
|
685
685
|
], ut.prototype, "svg", 2);
|
|
686
|
-
ut =
|
|
687
|
-
|
|
686
|
+
ut = ra([
|
|
687
|
+
Z("cb-icon")
|
|
688
688
|
], ut);
|
|
689
|
-
let
|
|
689
|
+
let Zi = (a) => crypto.getRandomValues(new Uint8Array(a)), Ki = (a, e, t) => {
|
|
690
690
|
let i = (2 << Math.log2(a.length - 1)) - 1, s = -~(1.6 * i * e / a.length);
|
|
691
691
|
return (r = e) => {
|
|
692
692
|
let o = "";
|
|
@@ -696,12 +696,12 @@ let Ji = (a) => crypto.getRandomValues(new Uint8Array(a)), Ki = (a, e, t) => {
|
|
|
696
696
|
if (o += a[f[p] & i] || "", o.length >= r) return o;
|
|
697
697
|
}
|
|
698
698
|
};
|
|
699
|
-
},
|
|
700
|
-
const
|
|
699
|
+
}, Qi = (a, e = 21) => Ki(a, e | 0, Zi);
|
|
700
|
+
const es = Qi("1234567890abcdefghijklmnopqrstuvwxyz", 10);
|
|
701
701
|
function fe(a = 10) {
|
|
702
|
-
return
|
|
702
|
+
return es(a);
|
|
703
703
|
}
|
|
704
|
-
function
|
|
704
|
+
function ts(a) {
|
|
705
705
|
return new Promise((e, t) => {
|
|
706
706
|
try {
|
|
707
707
|
navigator.clipboard.writeText(a).then(() => {
|
|
@@ -712,7 +712,7 @@ function es(a) {
|
|
|
712
712
|
}
|
|
713
713
|
});
|
|
714
714
|
}
|
|
715
|
-
function
|
|
715
|
+
function Xa(a = !0, e = null) {
|
|
716
716
|
return new Promise((t) => {
|
|
717
717
|
const i = document.createElement("input");
|
|
718
718
|
i.type = "file", a && (i.multiple = !0), i.accept = e || ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3", i.style.display = "none", i.addEventListener("change", () => {
|
|
@@ -721,10 +721,13 @@ function Ga(a = !0, e = null) {
|
|
|
721
721
|
}), i.click();
|
|
722
722
|
});
|
|
723
723
|
}
|
|
724
|
+
function Vt(a) {
|
|
725
|
+
return !a || typeof a != "string" ? "" : a.replace(/&(?!lt;|gt;)/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
726
|
+
}
|
|
724
727
|
const se = Je.noConflict();
|
|
725
728
|
se.setLevel("info");
|
|
726
|
-
const
|
|
727
|
-
class
|
|
729
|
+
const Sa = 3e4;
|
|
730
|
+
class as {
|
|
728
731
|
constructor(e = {}) {
|
|
729
732
|
this.id = 0, this.url = e?.url || null, this.orgId = e?.orgId || null, this.botId = e?.botId || null, this.convId = e?.convId || null, this._options = e || {}, this._ws = null, this.started = !1, this.connected = !1, this.connecting = !1, this.suspendDetected = !1, this.onMessage = e?.onMessage || null, this.onConnecting = e?.onConnecting || null, this.onConnectError = e?.onConnectError || null, this.onClose = e?.onClose || null, this.queue = e?.queue || [], this.pause = (t) => new Promise((i) => setTimeout(i, t)), this.lastTickTs = 0, this.lastAckTs = 0, this.tickInterval = null, se.info(`WSC: Created, url: ${this.url}`);
|
|
730
733
|
}
|
|
@@ -792,7 +795,7 @@ class ts {
|
|
|
792
795
|
async start() {
|
|
793
796
|
this.started = !0, this.connect(), this.lastTickTs = Date.now(), this.tickInterval = setInterval(() => {
|
|
794
797
|
this.tick();
|
|
795
|
-
},
|
|
798
|
+
}, Sa);
|
|
796
799
|
}
|
|
797
800
|
async stop() {
|
|
798
801
|
this.started = !1, this.disconnect(), this.tickInterval && (clearInterval(this.tickInterval), this.tickInterval = null);
|
|
@@ -835,7 +838,7 @@ class ts {
|
|
|
835
838
|
const e = Date.now();
|
|
836
839
|
let t = !1;
|
|
837
840
|
const i = e - this.lastAckTs;
|
|
838
|
-
i >
|
|
841
|
+
i > Sa + 5e3 && (t = !0, se.info(`WSC: checkConnection: connection loss detected - last ack delay ${i} msec, reconnecting`)), t && this.disconnect();
|
|
839
842
|
}
|
|
840
843
|
sendMessage(e) {
|
|
841
844
|
if (this.checkConnection(), !this.connected) {
|
|
@@ -885,7 +888,7 @@ class ts {
|
|
|
885
888
|
});
|
|
886
889
|
}*/
|
|
887
890
|
}
|
|
888
|
-
class
|
|
891
|
+
class is {
|
|
889
892
|
constructor(e = {}) {
|
|
890
893
|
this.name = e.name || "EventEmitter", this.events = {};
|
|
891
894
|
}
|
|
@@ -923,7 +926,7 @@ class as {
|
|
|
923
926
|
}
|
|
924
927
|
}
|
|
925
928
|
}
|
|
926
|
-
class
|
|
929
|
+
class Ze {
|
|
927
930
|
/**
|
|
928
931
|
* Converts Float32Array of amplitude data to ArrayBuffer in Int16Array format
|
|
929
932
|
* @param {Float32Array} float32Array
|
|
@@ -1018,8 +1021,8 @@ class Ke {
|
|
|
1018
1021
|
};
|
|
1019
1022
|
}
|
|
1020
1023
|
}
|
|
1021
|
-
globalThis.WavPacker =
|
|
1022
|
-
const
|
|
1024
|
+
globalThis.WavPacker = Ze;
|
|
1025
|
+
const Ca = [
|
|
1023
1026
|
4186.01,
|
|
1024
1027
|
4434.92,
|
|
1025
1028
|
4698.63,
|
|
@@ -1032,7 +1035,7 @@ const Sa = [
|
|
|
1032
1035
|
7040,
|
|
1033
1036
|
7458.62,
|
|
1034
1037
|
7902.13
|
|
1035
|
-
],
|
|
1038
|
+
], ss = [
|
|
1036
1039
|
"C",
|
|
1037
1040
|
"C#",
|
|
1038
1041
|
"D",
|
|
@@ -1045,13 +1048,13 @@ const Sa = [
|
|
|
1045
1048
|
"A",
|
|
1046
1049
|
"A#",
|
|
1047
1050
|
"B"
|
|
1048
|
-
], We = [],
|
|
1051
|
+
], We = [], oa = [];
|
|
1049
1052
|
for (let a = 1; a <= 8; a++)
|
|
1050
|
-
for (let e = 0; e <
|
|
1051
|
-
const t =
|
|
1052
|
-
We.push(t / Math.pow(2, 8 - a)),
|
|
1053
|
+
for (let e = 0; e < Ca.length; e++) {
|
|
1054
|
+
const t = Ca[e];
|
|
1055
|
+
We.push(t / Math.pow(2, 8 - a)), oa.push(ss[e] + a);
|
|
1053
1056
|
}
|
|
1054
|
-
const
|
|
1057
|
+
const zt = [32, 2e3], Aa = We.filter((a, e) => We[e] > zt[0] && We[e] < zt[1]), ns = oa.filter((a, e) => We[e] > zt[0] && We[e] < zt[1]);
|
|
1055
1058
|
class lt {
|
|
1056
1059
|
/**
|
|
1057
1060
|
* Retrieves frequency domain data from an AnalyserNode adjusted to a decibel range
|
|
@@ -1069,21 +1072,21 @@ class lt {
|
|
|
1069
1072
|
const f = t / 2, p = 1 / i.length * f;
|
|
1070
1073
|
let v, k, w;
|
|
1071
1074
|
if (s === "music" || s === "voice") {
|
|
1072
|
-
const
|
|
1075
|
+
const E = s === "voice" ? Aa : We, M = Array(E.length).fill(r);
|
|
1073
1076
|
for (let L = 0; L < i.length; L++) {
|
|
1074
|
-
const C = L * p,
|
|
1075
|
-
for (let
|
|
1076
|
-
if (C >
|
|
1077
|
-
M[
|
|
1077
|
+
const C = L * p, K = i[L];
|
|
1078
|
+
for (let U = E.length - 1; U >= 0; U--)
|
|
1079
|
+
if (C > E[U]) {
|
|
1080
|
+
M[U] = Math.max(M[U], K);
|
|
1078
1081
|
break;
|
|
1079
1082
|
}
|
|
1080
1083
|
}
|
|
1081
|
-
v = M, k = s === "voice" ?
|
|
1084
|
+
v = M, k = s === "voice" ? Aa : We, w = s === "voice" ? ns : oa;
|
|
1082
1085
|
} else
|
|
1083
|
-
v = Array.from(i), k = v.map((
|
|
1084
|
-
const _ = v.map((
|
|
1086
|
+
v = Array.from(i), k = v.map((E, M) => p * M), w = k.map((E) => `${E.toFixed(2)} Hz`);
|
|
1087
|
+
const _ = v.map((E) => Math.max(
|
|
1085
1088
|
0,
|
|
1086
|
-
Math.min((
|
|
1089
|
+
Math.min((E - r) / (o - r), 1)
|
|
1087
1090
|
));
|
|
1088
1091
|
return {
|
|
1089
1092
|
values: new Float32Array(_),
|
|
@@ -1154,7 +1157,7 @@ class lt {
|
|
|
1154
1157
|
}
|
|
1155
1158
|
}
|
|
1156
1159
|
globalThis.AudioAnalysis = lt;
|
|
1157
|
-
const
|
|
1160
|
+
const rs = `
|
|
1158
1161
|
class StreamProcessor extends AudioWorkletProcessor {
|
|
1159
1162
|
constructor() {
|
|
1160
1163
|
super();
|
|
@@ -1243,17 +1246,17 @@ class StreamProcessor extends AudioWorkletProcessor {
|
|
|
1243
1246
|
}
|
|
1244
1247
|
|
|
1245
1248
|
registerProcessor('stream_processor', StreamProcessor);
|
|
1246
|
-
`,
|
|
1249
|
+
`, os = new Blob([rs], {
|
|
1247
1250
|
type: "application/javascript"
|
|
1248
|
-
}),
|
|
1249
|
-
class
|
|
1251
|
+
}), cs = URL.createObjectURL(os), ls = cs;
|
|
1252
|
+
class ds {
|
|
1250
1253
|
/**
|
|
1251
1254
|
* Creates a new WavStreamPlayer instance
|
|
1252
1255
|
* @param {{sampleRate?: number}} options
|
|
1253
1256
|
* @returns {WavStreamPlayer}
|
|
1254
1257
|
*/
|
|
1255
1258
|
constructor({ sampleRate: e = 44100, onPlaybackEnded: t = null } = {}) {
|
|
1256
|
-
this.scriptSrc =
|
|
1259
|
+
this.scriptSrc = ls, this.sampleRate = e, this.context = null, this.stream = null, this.analyser = null, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this.onPlaybackEnded = t && typeof t == "function" ? t : null;
|
|
1257
1260
|
}
|
|
1258
1261
|
/**
|
|
1259
1262
|
* Connects the audio context and enables output to speakers
|
|
@@ -1348,8 +1351,8 @@ class ls {
|
|
|
1348
1351
|
return this.getTrackSampleOffset(!0);
|
|
1349
1352
|
}
|
|
1350
1353
|
}
|
|
1351
|
-
globalThis.WavStreamPlayer =
|
|
1352
|
-
const
|
|
1354
|
+
globalThis.WavStreamPlayer = ds;
|
|
1355
|
+
const fs = URL.createObjectURL(
|
|
1353
1356
|
new Blob([`
|
|
1354
1357
|
class UpsampleStreamPCM extends AudioWorkletProcessor {
|
|
1355
1358
|
constructor(options) {
|
|
@@ -1521,7 +1524,7 @@ class UpsampleStreamPCM extends AudioWorkletProcessor {
|
|
|
1521
1524
|
registerProcessor('upsample-stream-pcm', UpsampleStreamPCM);
|
|
1522
1525
|
`], { type: "application/javascript" })
|
|
1523
1526
|
);
|
|
1524
|
-
class
|
|
1527
|
+
class Ya {
|
|
1525
1528
|
/**
|
|
1526
1529
|
* @param {{
|
|
1527
1530
|
* inputSampleRate?: number,
|
|
@@ -1546,10 +1549,10 @@ class Xa {
|
|
|
1546
1549
|
this.inputSampleRate = e, this.onPlaybackEnded = typeof t == "function" ? t : null, this.debug = !!i;
|
|
1547
1550
|
const p = navigator.userAgent || "", v = /iP(hone|ad|od)/.test(p), k = /CriOS/.test(p), w = /FxiOS/.test(p), _ = /EdgiOS/.test(p), P = /Safari/.test(p) && !/Chrome|Chromium|Edg/.test(p);
|
|
1548
1551
|
this._isSafariMobile = v && P && !k && !w && !_;
|
|
1549
|
-
const
|
|
1550
|
-
const
|
|
1551
|
-
return /iPad/.test(p) ||
|
|
1552
|
-
})(), C =
|
|
1552
|
+
const E = !!(navigator.userAgentData && typeof navigator.userAgentData.mobile == "boolean" && navigator.userAgentData.mobile), M = /Android|iPhone|iPod|Mobile/.test(p), L = (() => {
|
|
1553
|
+
const K = navigator.platform || "";
|
|
1554
|
+
return /iPad/.test(p) || K === "MacIntel" && navigator.maxTouchPoints > 1;
|
|
1555
|
+
})(), C = E || M || L;
|
|
1553
1556
|
this._firstTurnRampInMs = s ?? (this._isSafariMobile ? 140 : 0), this._primeMs = r ?? (this._isSafariMobile ? 220 : 0), this._requireGestureToUnlock = o != null ? !!o : !!this._isSafariMobile, this._enableLoopbackRef = f != null ? !!f : !!C, this.context = null, this.analyser = null, this._worklet = null, this._audibleGain = null, this._renderDest = null, this._pcSend = null, this._pcRecv = null, this._firstTurn = !0, this._unlocked = !this._requireGestureToUnlock, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this._onGestureUnlock = this._onGestureUnlock.bind(this);
|
|
1554
1557
|
}
|
|
1555
1558
|
_log(...e) {
|
|
@@ -1566,7 +1569,7 @@ class Xa {
|
|
|
1566
1569
|
/** Build the WebAudio graph. Always audible via direct path; loopback ref is optional and non-critical. */
|
|
1567
1570
|
async connect() {
|
|
1568
1571
|
if (this.context) return !0;
|
|
1569
|
-
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(
|
|
1572
|
+
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(fs), this._worklet = new AudioWorkletNode(this.context, "upsample-stream-pcm", {
|
|
1570
1573
|
processorOptions: {
|
|
1571
1574
|
sourceSampleRate: this.inputSampleRate,
|
|
1572
1575
|
prerollSrc: Math.round(this.inputSampleRate * 0.02)
|
|
@@ -1694,8 +1697,8 @@ class Xa {
|
|
|
1694
1697
|
return this.connect();
|
|
1695
1698
|
}
|
|
1696
1699
|
}
|
|
1697
|
-
globalThis.WavStreamPlayerV2 =
|
|
1698
|
-
const
|
|
1700
|
+
globalThis.WavStreamPlayerV2 = Ya;
|
|
1701
|
+
const hs = `
|
|
1699
1702
|
class AudioProcessor extends AudioWorkletProcessor {
|
|
1700
1703
|
|
|
1701
1704
|
constructor() {
|
|
@@ -1902,17 +1905,17 @@ class AudioProcessor extends AudioWorkletProcessor {
|
|
|
1902
1905
|
}
|
|
1903
1906
|
|
|
1904
1907
|
registerProcessor('audio_processor', AudioProcessor);
|
|
1905
|
-
`,
|
|
1908
|
+
`, bs = new Blob([hs], {
|
|
1906
1909
|
type: "application/javascript"
|
|
1907
|
-
}),
|
|
1908
|
-
class
|
|
1910
|
+
}), us = URL.createObjectURL(bs), ps = us;
|
|
1911
|
+
class gs {
|
|
1909
1912
|
/**
|
|
1910
1913
|
* Create a new WavRecorder instance
|
|
1911
1914
|
* @param {{sampleRate?: number, outputToSpeakers?: boolean, debug?: boolean}} [options]
|
|
1912
1915
|
* @returns {WavRecorder}
|
|
1913
1916
|
*/
|
|
1914
1917
|
constructor({ sampleRate: e = 44100, outputToSpeakers: t = !1, debug: i = !1 } = {}) {
|
|
1915
|
-
this.scriptSrc =
|
|
1918
|
+
this.scriptSrc = ps, this.sampleRate = e, this.outputToSpeakers = t, this.debug = !!i, this._deviceChangeCallback = null, this._devices = [], this.stream = null, this.processor = null, this.source = null, this.node = null, this.recording = !1, this._lastEventId = 0, this.eventReceipts = {}, this.eventTimeout = 5e3, this._chunkProcessor = () => {
|
|
1916
1919
|
}, this._chunkProcessorSize = void 0, this._chunkProcessorBuffer = {
|
|
1917
1920
|
raw: new ArrayBuffer(0),
|
|
1918
1921
|
mono: new ArrayBuffer(0)
|
|
@@ -1952,13 +1955,13 @@ class ps {
|
|
|
1952
1955
|
throw new Error('Must specify "fromSampleRate" when reading from Float32Array, In16Array or Array');
|
|
1953
1956
|
if (i < 3e3)
|
|
1954
1957
|
throw new Error('Minimum "fromSampleRate" is 3000 (3kHz)');
|
|
1955
|
-
w || (w =
|
|
1958
|
+
w || (w = Ze.floatTo16BitPCM(k));
|
|
1956
1959
|
const _ = {
|
|
1957
1960
|
bitsPerSample: 16,
|
|
1958
1961
|
channels: [k],
|
|
1959
1962
|
data: w
|
|
1960
1963
|
};
|
|
1961
|
-
o = new
|
|
1964
|
+
o = new Ze().pack(i, _).blob, r = await o.arrayBuffer();
|
|
1962
1965
|
}
|
|
1963
1966
|
const f = await s.decodeAudioData(r), p = f.getChannelData(0), v = URL.createObjectURL(o);
|
|
1964
1967
|
return {
|
|
@@ -2131,8 +2134,8 @@ class ps {
|
|
|
2131
2134
|
if (this._chunkProcessorSize) {
|
|
2132
2135
|
const w = this._chunkProcessorBuffer;
|
|
2133
2136
|
this._chunkProcessorBuffer = {
|
|
2134
|
-
raw:
|
|
2135
|
-
mono:
|
|
2137
|
+
raw: Ze.mergeBuffers(w.raw, k.raw),
|
|
2138
|
+
mono: Ze.mergeBuffers(w.mono, k.mono)
|
|
2136
2139
|
}, this._chunkProcessorBuffer.mono.byteLength >= this._chunkProcessorSize && (this._chunkProcessor(this._chunkProcessorBuffer), this._chunkProcessorBuffer = {
|
|
2137
2140
|
raw: new ArrayBuffer(0),
|
|
2138
2141
|
mono: new ArrayBuffer(0)
|
|
@@ -2218,7 +2221,7 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2218
2221
|
throw new Error("Currently recording: please call .pause() first, or call .save(true) to force");
|
|
2219
2222
|
this.log("Exporting ...");
|
|
2220
2223
|
const t = await this._event("export");
|
|
2221
|
-
return new
|
|
2224
|
+
return new Ze().pack(this.sampleRate, t.audio);
|
|
2222
2225
|
}
|
|
2223
2226
|
/**
|
|
2224
2227
|
* Ends the current recording session and saves the result
|
|
@@ -2230,7 +2233,7 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2230
2233
|
const e = this.processor;
|
|
2231
2234
|
this.log("Stopping ..."), await this._event("stop"), this.recording = !1, this.stream.getTracks().forEach((o) => o.stop()), this.log("Exporting ...");
|
|
2232
2235
|
const i = await this._event("export", {}, e);
|
|
2233
|
-
return this.processor.disconnect(), this.source.disconnect(), this.node.disconnect(), this.analyser.disconnect(), this.stream = null, this.processor = null, this.source = null, this.node = null, new
|
|
2236
|
+
return this.processor.disconnect(), this.source.disconnect(), this.node.disconnect(), this.analyser.disconnect(), this.stream = null, this.processor = null, this.source = null, this.node = null, new Ze().pack(this.sampleRate, i.audio);
|
|
2234
2237
|
}
|
|
2235
2238
|
/**
|
|
2236
2239
|
* Performs a full cleanup of WavRecorder instance
|
|
@@ -2241,8 +2244,8 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2241
2244
|
return this.listenForDeviceChange(null), this.processor && await this.end(), !0;
|
|
2242
2245
|
}
|
|
2243
2246
|
}
|
|
2244
|
-
globalThis.WavRecorder =
|
|
2245
|
-
const
|
|
2247
|
+
globalThis.WavRecorder = gs;
|
|
2248
|
+
const ms = URL.createObjectURL(
|
|
2246
2249
|
new Blob([`
|
|
2247
2250
|
class DownsampleRecorder extends AudioWorkletProcessor {
|
|
2248
2251
|
constructor(options) {
|
|
@@ -2463,7 +2466,7 @@ class ot {
|
|
|
2463
2466
|
echoCancellationType: this.captureInfo.trackSettings?.echoCancellationType ?? null
|
|
2464
2467
|
}, this._log("Granted track settings:", this.captureInfo.trackSettings), this.audioCtx = new (window.AudioContext || window.webkitAudioContext)({
|
|
2465
2468
|
latencyHint: "interactive"
|
|
2466
|
-
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(
|
|
2469
|
+
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(ms);
|
|
2467
2470
|
const s = Math.round(this.targetSampleRate * this.chunkMs / 1e3);
|
|
2468
2471
|
return this.node = new AudioWorkletNode(this.audioCtx, "downsample-recorder", {
|
|
2469
2472
|
processorOptions: {
|
|
@@ -2539,11 +2542,11 @@ class ot {
|
|
|
2539
2542
|
}
|
|
2540
2543
|
}
|
|
2541
2544
|
globalThis.WavRecorderV2 = ot;
|
|
2542
|
-
class
|
|
2545
|
+
class ys {
|
|
2543
2546
|
constructor(e = {}) {
|
|
2544
|
-
this.sr = Math.max(8e3, e.sampleRate || 24e3), this.floor =
|
|
2547
|
+
this.sr = Math.max(8e3, e.sampleRate || 24e3), this.floor = Ma(e.floor ?? 0.12), this.attackSamples = Ce(e.attackMs ?? 12, this.sr), this.releaseSamples = Ce(e.releaseMs ?? 150, this.sr), this.escapeAttackSamples = Ce(e.escapeAttackMs ?? 10, this.sr), this.defaultGuardSamples = Ce(e.defaultGuardMs ?? 0, this.sr), this.gain = 1, this.target = 1, this.rampRemain = 0, this._step = 0, this.duckActive = !1, this.guardRemain = 0, this.vadEnabled = e.vadEnabled !== !1;
|
|
2545
2548
|
const t = Math.max(2, e.vadFastMs ?? 10), i = Math.max(t + 20, e.vadSlowMs ?? 250);
|
|
2546
|
-
this.alphaFast =
|
|
2549
|
+
this.alphaFast = Ia(t, this.sr), this.alphaSlow = Ia(i, this.sr), this.vadFast = 0, this.vadSlow = 1e-12, this.vadRatio = Ta(e.vadTriggerDb ?? 9), this.vadAttackSamples = Ce(e.vadAttackMs ?? 18, this.sr), this.vadHangSamples = Ce(e.vadHangMs ?? 120, this.sr), this._speechCount = 0, this._hangRemain = 0, this._speaking = !1, this._nextShield = null, this._shieldActive = !1, this._shieldFloor = this.floor, this._shieldHardMute = !1, this._eps = 1e-12;
|
|
2547
2550
|
}
|
|
2548
2551
|
/** Arm a one‑shot, VAD‑escapable shield for the NEXT TTS start. */
|
|
2549
2552
|
armFirstTurnShield({
|
|
@@ -2557,8 +2560,8 @@ class ms {
|
|
|
2557
2560
|
vadAttackMs: r,
|
|
2558
2561
|
vadHangMs: o
|
|
2559
2562
|
} = {}) {
|
|
2560
|
-
const p = { durationSamp: Ce(e, this.sr), floor:
|
|
2561
|
-
s != null && (p.vadRatio =
|
|
2563
|
+
const p = { durationSamp: Ce(e, this.sr), floor: Ma(t), hardMute: !!i };
|
|
2564
|
+
s != null && (p.vadRatio = Ta(s)), r != null && (p.vadAttackSamples = Ce(r, this.sr)), o != null && (p.vadHangSamples = Ce(o, this.sr)), this._nextShield = p;
|
|
2562
2565
|
}
|
|
2563
2566
|
onTTSStart(e) {
|
|
2564
2567
|
if (this.duckActive = !0, this._nextShield) {
|
|
@@ -2579,19 +2582,19 @@ class ms {
|
|
|
2579
2582
|
const i = new Int16Array(t);
|
|
2580
2583
|
let s = this.gain, r = this._step, o = this.rampRemain, f = this.vadFast, p = this.vadSlow, v = this._speechCount, k = this._hangRemain, w = this._speaking;
|
|
2581
2584
|
const _ = this._eps, P = this.vadRatio;
|
|
2582
|
-
for (let
|
|
2585
|
+
for (let E = 0; E < t; E++) {
|
|
2583
2586
|
this.guardRemain > 0 && this.guardRemain--;
|
|
2584
|
-
const M = e[
|
|
2587
|
+
const M = e[E] / 32768, L = M * M;
|
|
2585
2588
|
f = f + (1 - this.alphaFast) * (L - f), p = p + (1 - this.alphaSlow) * (L - p), this.vadEnabled && (f / (p + _) >= P ? v < this.vadAttackSamples && v++ : v = 0, v >= this.vadAttackSamples ? (w = !0, k = this.vadHangSamples) : k > 0 ? (w = !0, k--) : w = !1), w && this._shieldActive && (this._shieldActive = !1, this.target = 1, o = this.escapeAttackSamples, r = o > 0 ? (1 - s) / o : 0);
|
|
2586
|
-
let C = 1,
|
|
2589
|
+
let C = 1, K = 0, U = !1;
|
|
2587
2590
|
if (this.duckActive) {
|
|
2588
2591
|
const te = this.guardRemain > 0;
|
|
2589
|
-
te && this._shieldActive && !w ? (
|
|
2592
|
+
te && this._shieldActive && !w ? (U = this._shieldHardMute, C = this._shieldHardMute ? 0 : this._shieldFloor, K = this.attackSamples, this.guardRemain === 0 && (this._shieldActive = !1, this._shieldHardMute = !1)) : w ? (C = 1, K = this.escapeAttackSamples) : te ? (C = this.floor, K = this.attackSamples) : (C = 1, K = this.releaseSamples);
|
|
2590
2593
|
} else
|
|
2591
|
-
C = 1,
|
|
2592
|
-
Math.abs(C - this.target) > 1e-4 && (this.target = C, o =
|
|
2593
|
-
let
|
|
2594
|
-
|
|
2594
|
+
C = 1, K = this.releaseSamples;
|
|
2595
|
+
Math.abs(C - this.target) > 1e-4 && (this.target = C, o = K, r = o > 0 ? (C - s) / o : 0, o === 0 && (s = C)), o > 0 && (s += r, o--, o === 0 && (s = this.target, r = 0));
|
|
2596
|
+
let X;
|
|
2597
|
+
U && !w ? X = 0 : (X = e[E] * s, X > 32767 ? X = 32767 : X < -32768 && (X = -32768)), i[E] = X | 0;
|
|
2595
2598
|
}
|
|
2596
2599
|
return this.gain = s, this._step = r, this.rampRemain = o, this.vadFast = f, this.vadSlow = p, this._speechCount = v, this._hangRemain = k, this._speaking = w, i;
|
|
2597
2600
|
}
|
|
@@ -2599,20 +2602,20 @@ class ms {
|
|
|
2599
2602
|
this.target = e, this.rampRemain = t, this.rampRemain <= 0 ? (this.gain = this.target, this._step = 0) : this._step = (this.target - this.gain) / this.rampRemain;
|
|
2600
2603
|
}
|
|
2601
2604
|
}
|
|
2602
|
-
function
|
|
2605
|
+
function Ma(a) {
|
|
2603
2606
|
return Math.max(0, Math.min(1, a));
|
|
2604
2607
|
}
|
|
2605
2608
|
function Ce(a, e) {
|
|
2606
2609
|
return Math.max(0, Math.round(a * e / 1e3));
|
|
2607
2610
|
}
|
|
2608
|
-
function
|
|
2611
|
+
function Ta(a) {
|
|
2609
2612
|
return Math.pow(10, a / 10);
|
|
2610
2613
|
}
|
|
2611
|
-
function
|
|
2614
|
+
function Ia(a, e) {
|
|
2612
2615
|
const t = Math.max(1, a * e / 1e3);
|
|
2613
2616
|
return Math.exp(-1 / t);
|
|
2614
2617
|
}
|
|
2615
|
-
class
|
|
2618
|
+
class vs {
|
|
2616
2619
|
/**
|
|
2617
2620
|
* @param {object} opts
|
|
2618
2621
|
* @param {number} opts.sampleRate - Hz of your PCM (e.g., 24000)
|
|
@@ -2688,24 +2691,24 @@ class ys {
|
|
|
2688
2691
|
if (k <= 0)
|
|
2689
2692
|
return this._float32ToInt16(t);
|
|
2690
2693
|
const w = this.preEmphasis > 0, _ = w ? this._preEmphasize(r, this.preEmphasis, "mic") : r, P = w ? this._preEmphasize(p, this.preEmphasis, "pb") : p;
|
|
2691
|
-
let
|
|
2694
|
+
let E = 0;
|
|
2692
2695
|
for (let ae = 0; ae < o; ae++) {
|
|
2693
2696
|
const he = _[ae];
|
|
2694
|
-
|
|
2697
|
+
E += he * he;
|
|
2695
2698
|
}
|
|
2696
|
-
|
|
2697
|
-
const M = this.sr / this.ds, L = (this.baseLatencySec + this.outputLatencySec) * 1e3 + this.latencyCompMs, C = Math.max(0, Math.round(L * M / 1e3)),
|
|
2698
|
-
let
|
|
2699
|
-
C > 0 && (
|
|
2699
|
+
E = Math.sqrt(E) + 1e-12;
|
|
2700
|
+
const M = this.sr / this.ds, L = (this.baseLatencySec + this.outputLatencySec) * 1e3 + this.latencyCompMs, C = Math.max(0, Math.round(L * M / 1e3)), K = Math.max(1, Math.round(this.windowMs * M / 1e3));
|
|
2701
|
+
let U = 0, X = k;
|
|
2702
|
+
C > 0 && (U = Math.max(0, Math.min(k, C - K)), X = Math.max(U, Math.min(k, C + K)));
|
|
2700
2703
|
const te = Math.max(1, Math.floor(this.hop / this.ds));
|
|
2701
2704
|
let He = -1;
|
|
2702
|
-
for (let ae =
|
|
2703
|
-
let he = 0,
|
|
2705
|
+
for (let ae = U; ae <= X; ae += te) {
|
|
2706
|
+
let he = 0, ge = 0;
|
|
2704
2707
|
for (let V = 0; V < o; V++) {
|
|
2705
2708
|
const $e = _[V], Pe = P[ae + V];
|
|
2706
|
-
he += $e * Pe,
|
|
2709
|
+
he += $e * Pe, ge += Pe * Pe;
|
|
2707
2710
|
}
|
|
2708
|
-
const F =
|
|
2711
|
+
const F = E * (Math.sqrt(ge) + 1e-12), j = F > 0 ? he / F : 0;
|
|
2709
2712
|
if (j > He && (He = j), He > Math.min(0.98, this.threshold + 0.25)) break;
|
|
2710
2713
|
}
|
|
2711
2714
|
if (He >= this.threshold) {
|
|
@@ -2767,7 +2770,7 @@ class ys {
|
|
|
2767
2770
|
return o;
|
|
2768
2771
|
}
|
|
2769
2772
|
}
|
|
2770
|
-
class
|
|
2773
|
+
class ws {
|
|
2771
2774
|
/**
|
|
2772
2775
|
* @param {object} opts
|
|
2773
2776
|
* @param {number} opts.sampleRate - PCM sample rate (e.g., 24000)
|
|
@@ -2856,8 +2859,8 @@ class vs {
|
|
|
2856
2859
|
let p = -1;
|
|
2857
2860
|
for (let v = 0; v <= r; v += f) {
|
|
2858
2861
|
let k = 0, w = 0;
|
|
2859
|
-
for (let
|
|
2860
|
-
const M = t[
|
|
2862
|
+
for (let E = 0; E < i; E++) {
|
|
2863
|
+
const M = t[E], L = s[v + E];
|
|
2861
2864
|
k += M * L, w += L * L;
|
|
2862
2865
|
}
|
|
2863
2866
|
const _ = o * (Math.sqrt(w) + 1e-12), P = _ > 0 ? k / _ : 0;
|
|
@@ -2904,7 +2907,7 @@ class vs {
|
|
|
2904
2907
|
return o;
|
|
2905
2908
|
}
|
|
2906
2909
|
}
|
|
2907
|
-
class
|
|
2910
|
+
class xs {
|
|
2908
2911
|
/**
|
|
2909
2912
|
* @param {object} opts
|
|
2910
2913
|
* @param {number} opts.sampleRate - Mic PCM sample rate (e.g., 24000)
|
|
@@ -2947,28 +2950,28 @@ class ws {
|
|
|
2947
2950
|
}
|
|
2948
2951
|
}
|
|
2949
2952
|
}
|
|
2950
|
-
const
|
|
2951
|
-
|
|
2952
|
-
class pt extends
|
|
2953
|
+
const Ue = Je.noConflict();
|
|
2954
|
+
Ue.setLevel("info");
|
|
2955
|
+
class pt extends is {
|
|
2953
2956
|
constructor(e = {}) {
|
|
2954
2957
|
super({ name: "WebAudioProcessorV2" }), this.options = e, this.muted = !1, this.audioRecorder = new ot({
|
|
2955
2958
|
targetSampleRate: 24e3,
|
|
2956
2959
|
debug: !!e.debug
|
|
2957
|
-
}), this.audioPlayer = new
|
|
2960
|
+
}), this.audioPlayer = new Ya({
|
|
2958
2961
|
inputSampleRate: 24e3,
|
|
2959
2962
|
onPlaybackEnded: this.handleOnPlaybackEnded.bind(this),
|
|
2960
2963
|
firstTurnRampInMs: 200,
|
|
2961
2964
|
primeMs: 200,
|
|
2962
2965
|
// keep or remove; it’s harmless
|
|
2963
2966
|
debug: !!e.debug
|
|
2964
|
-
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new
|
|
2967
|
+
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new xs({
|
|
2965
2968
|
sampleRate: 24e3,
|
|
2966
2969
|
windowMs: this.firstTurnDropMs,
|
|
2967
2970
|
partialPass: !0,
|
|
2968
2971
|
// pass remainder of crossing frame
|
|
2969
2972
|
hardDrop: !0
|
|
2970
2973
|
// set true if you prefer simpler "drop whole frame"
|
|
2971
|
-
}), this.ducker = new
|
|
2974
|
+
}), this.ducker = new ys({
|
|
2972
2975
|
sampleRate: 24e3,
|
|
2973
2976
|
floor: 0.12,
|
|
2974
2977
|
attackMs: 12,
|
|
@@ -2983,7 +2986,7 @@ class pt extends as {
|
|
|
2983
2986
|
vadSlowMs: 250,
|
|
2984
2987
|
vadAttackMs: 18,
|
|
2985
2988
|
vadHangMs: 120
|
|
2986
|
-
}), this.mixMinus = new
|
|
2989
|
+
}), this.mixMinus = new vs({
|
|
2987
2990
|
sampleRate: 24e3,
|
|
2988
2991
|
bufferMs: 1e3,
|
|
2989
2992
|
threshold: 0.3,
|
|
@@ -2992,7 +2995,7 @@ class pt extends as {
|
|
|
2992
2995
|
hop: 64,
|
|
2993
2996
|
downsampleFactor: 3,
|
|
2994
2997
|
minCorrLenMs: 15
|
|
2995
|
-
}), this.mixMinusSmooth = new
|
|
2998
|
+
}), this.mixMinusSmooth = new ws({
|
|
2996
2999
|
sampleRate: 24e3,
|
|
2997
3000
|
bufferMs: 800,
|
|
2998
3001
|
lowThresh: 0.25,
|
|
@@ -3027,13 +3030,13 @@ class pt extends as {
|
|
|
3027
3030
|
e(), this._latencyTimer = setInterval(e, 1e3);
|
|
3028
3031
|
try {
|
|
3029
3032
|
const t = this.audioRecorder.captureInfo?.aecGranted;
|
|
3030
|
-
t &&
|
|
3033
|
+
t && Ue.info("AEC granted:", t);
|
|
3031
3034
|
} catch {
|
|
3032
3035
|
}
|
|
3033
|
-
|
|
3036
|
+
Ue.info("WebAudioProcessorV2 started");
|
|
3034
3037
|
}
|
|
3035
3038
|
async stop() {
|
|
3036
|
-
this._stopRecWatchdog(), this.audioRecorder.getStatus() !== "ended" && (await this.audioRecorder.end(), this.audioRecorder = null), this.audioRecorderAnalyzer = null, this.audioPlayer?.context && (await this.audioPlayer.disconnect(), this.audioPlayer = null), this._latencyTimer && (clearInterval(this._latencyTimer), this._latencyTimer = null), this._didPlayOnce = !1,
|
|
3039
|
+
this._stopRecWatchdog(), this.audioRecorder.getStatus() !== "ended" && (await this.audioRecorder.end(), this.audioRecorder = null), this.audioRecorderAnalyzer = null, this.audioPlayer?.context && (await this.audioPlayer.disconnect(), this.audioPlayer = null), this._latencyTimer && (clearInterval(this._latencyTimer), this._latencyTimer = null), this._didPlayOnce = !1, Ue.info("WebAudioProcessorV2 stopped");
|
|
3037
3040
|
}
|
|
3038
3041
|
get started() {
|
|
3039
3042
|
return !!(this.audioRecorder && this.audioRecorder.getStatus() !== "ended");
|
|
@@ -3055,7 +3058,7 @@ class pt extends as {
|
|
|
3055
3058
|
}
|
|
3056
3059
|
async _checkRecordingHealth(e) {
|
|
3057
3060
|
const i = Date.now() - this._lastMicCaptureTime;
|
|
3058
|
-
i > 2e3 && (
|
|
3061
|
+
i > 2e3 && (Ue.warn(`WebAudioProcessorV2: large gap between mic frames: ${i} ms detected, possible lock or suspend - terminating audio`), this.emit("terminate").catch(() => {
|
|
3059
3062
|
}));
|
|
3060
3063
|
}
|
|
3061
3064
|
// ---- Capture ----
|
|
@@ -3064,7 +3067,7 @@ class pt extends as {
|
|
|
3064
3067
|
* Your existing 'audio' event is preserved: payload includes base64 of Int16 PCM.
|
|
3065
3068
|
*/
|
|
3066
3069
|
async beginAudioCapture() {
|
|
3067
|
-
!this.started || this.recording || (
|
|
3070
|
+
!this.started || this.recording || (Ue.info("WebAudioProcessorV2: beginAudioCapture"), this._lastMicCaptureTime = Date.now(), this._startRecWatchdog(), await this.audioRecorder.record((e) => {
|
|
3068
3071
|
if (e?.mono && e.mono?.byteLength) {
|
|
3069
3072
|
this._lastMicCaptureTime = Date.now();
|
|
3070
3073
|
let t = new Int16Array(e.mono);
|
|
@@ -3074,12 +3077,12 @@ class pt extends as {
|
|
|
3074
3077
|
const i = this.useAdaptiveSuppressor ? this.mixMinusSmooth.filterMicFrame(t) : this.mixMinus.filterMicFrame(t) || new Int16Array(0);
|
|
3075
3078
|
if (i.length === 0) return;
|
|
3076
3079
|
const s = pt.arrayBufferToBase64(i);
|
|
3077
|
-
|
|
3080
|
+
Ue.info(`Audio: mono ${e.mono.byteLength} bytes, base64 ${s.length} bytes`), this.emit("audio", { audio: s });
|
|
3078
3081
|
}
|
|
3079
3082
|
}));
|
|
3080
3083
|
}
|
|
3081
3084
|
async endAudioCapture() {
|
|
3082
|
-
!this.started || !this.recording || (
|
|
3085
|
+
!this.started || !this.recording || (Ue.info("WebAudioProcessorV2: endAudioCapture"), this._stopRecWatchdog(), await this.audioRecorder.pause());
|
|
3083
3086
|
}
|
|
3084
3087
|
// ---- Playback ----
|
|
3085
3088
|
/**
|
|
@@ -3167,17 +3170,17 @@ class pt extends as {
|
|
|
3167
3170
|
}
|
|
3168
3171
|
}
|
|
3169
3172
|
globalThis.WebAudioProcessorV2 = pt;
|
|
3170
|
-
var
|
|
3171
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
3173
|
+
var ks = Object.defineProperty, _s = Object.getOwnPropertyDescriptor, st = (a, e, t, i) => {
|
|
3174
|
+
for (var s = i > 1 ? void 0 : i ? _s(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
3172
3175
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
3173
|
-
return i && s &&
|
|
3176
|
+
return i && s && ks(e, t, s), s;
|
|
3174
3177
|
};
|
|
3175
|
-
const Mt = "cb-toast-outlet",
|
|
3176
|
-
function
|
|
3178
|
+
const Mt = "cb-toast-outlet", Ea = "cb-toast-outlet-style";
|
|
3179
|
+
function Ss() {
|
|
3177
3180
|
let a = document.getElementById(Mt);
|
|
3178
|
-
if (a || (a = document.createElement("div"), a.id = Mt, document.body.appendChild(a)), !document.getElementById(
|
|
3181
|
+
if (a || (a = document.createElement("div"), a.id = Mt, document.body.appendChild(a)), !document.getElementById(Ea)) {
|
|
3179
3182
|
const e = document.createElement("style");
|
|
3180
|
-
e.id =
|
|
3183
|
+
e.id = Ea, e.textContent = `
|
|
3181
3184
|
/* Global outlet that holds all toasts */
|
|
3182
3185
|
#${Mt} {
|
|
3183
3186
|
position: fixed;
|
|
@@ -3201,8 +3204,8 @@ function _s() {
|
|
|
3201
3204
|
}
|
|
3202
3205
|
return a;
|
|
3203
3206
|
}
|
|
3204
|
-
function
|
|
3205
|
-
const e =
|
|
3207
|
+
function Ja(a) {
|
|
3208
|
+
const e = Ss(), t = document.createElement("cb-toast");
|
|
3206
3209
|
return t.message = a.message, t.variant = a.variant ?? "success", t.duration = typeof a.duration == "number" ? a.duration : 3e3, t.closeable = !!a.closeable, t.icon = a.icon ?? "", t.ariaLive = a.ariaLive ?? "polite", e.appendChild(t), t;
|
|
3207
3210
|
}
|
|
3208
3211
|
let qe = class extends Fe {
|
|
@@ -3249,7 +3252,7 @@ let qe = class extends Fe {
|
|
|
3249
3252
|
this._timer && (clearTimeout(this._timer), this._timer = void 0);
|
|
3250
3253
|
}
|
|
3251
3254
|
_renderIcon(a) {
|
|
3252
|
-
return a.trim().startsWith("<") ? u`${
|
|
3255
|
+
return a.trim().startsWith("<") ? u`${G(a)}` : a;
|
|
3253
3256
|
}
|
|
3254
3257
|
};
|
|
3255
3258
|
qe.styles = J`
|
|
@@ -3379,7 +3382,7 @@ st([
|
|
|
3379
3382
|
x({ type: String })
|
|
3380
3383
|
], qe.prototype, "ariaLive", 2);
|
|
3381
3384
|
qe = st([
|
|
3382
|
-
|
|
3385
|
+
Z("cb-toast")
|
|
3383
3386
|
], qe);
|
|
3384
3387
|
function Q(a) {
|
|
3385
3388
|
return a != null && typeof a == "object" && a["@@functional/placeholder"] === !0;
|
|
@@ -3389,7 +3392,7 @@ function tt(a) {
|
|
|
3389
3392
|
return arguments.length === 0 || Q(t) ? e : a.apply(this, arguments);
|
|
3390
3393
|
};
|
|
3391
3394
|
}
|
|
3392
|
-
function
|
|
3395
|
+
function Ke(a) {
|
|
3393
3396
|
return function e(t, i) {
|
|
3394
3397
|
switch (arguments.length) {
|
|
3395
3398
|
case 0:
|
|
@@ -3407,29 +3410,29 @@ function Ze(a) {
|
|
|
3407
3410
|
}
|
|
3408
3411
|
};
|
|
3409
3412
|
}
|
|
3410
|
-
function
|
|
3413
|
+
function Cs(a) {
|
|
3411
3414
|
return function e(t, i, s) {
|
|
3412
3415
|
switch (arguments.length) {
|
|
3413
3416
|
case 0:
|
|
3414
3417
|
return e;
|
|
3415
3418
|
case 1:
|
|
3416
|
-
return Q(t) ? e :
|
|
3419
|
+
return Q(t) ? e : Ke(function(r, o) {
|
|
3417
3420
|
return a(t, r, o);
|
|
3418
3421
|
});
|
|
3419
3422
|
case 2:
|
|
3420
|
-
return Q(t) && Q(i) ? e : Q(t) ?
|
|
3423
|
+
return Q(t) && Q(i) ? e : Q(t) ? Ke(function(r, o) {
|
|
3421
3424
|
return a(r, i, o);
|
|
3422
|
-
}) : Q(i) ?
|
|
3425
|
+
}) : Q(i) ? Ke(function(r, o) {
|
|
3423
3426
|
return a(t, r, o);
|
|
3424
3427
|
}) : tt(function(r) {
|
|
3425
3428
|
return a(t, i, r);
|
|
3426
3429
|
});
|
|
3427
3430
|
default:
|
|
3428
|
-
return Q(t) && Q(i) && Q(s) ? e : Q(t) && Q(i) ?
|
|
3431
|
+
return Q(t) && Q(i) && Q(s) ? e : Q(t) && Q(i) ? Ke(function(r, o) {
|
|
3429
3432
|
return a(r, o, s);
|
|
3430
|
-
}) : Q(t) && Q(s) ?
|
|
3433
|
+
}) : Q(t) && Q(s) ? Ke(function(r, o) {
|
|
3431
3434
|
return a(r, i, o);
|
|
3432
|
-
}) : Q(i) && Q(s) ?
|
|
3435
|
+
}) : Q(i) && Q(s) ? Ke(function(r, o) {
|
|
3433
3436
|
return a(t, r, o);
|
|
3434
3437
|
}) : Q(t) ? tt(function(r) {
|
|
3435
3438
|
return a(r, i, s);
|
|
@@ -3441,45 +3444,45 @@ function Ss(a) {
|
|
|
3441
3444
|
}
|
|
3442
3445
|
};
|
|
3443
3446
|
}
|
|
3444
|
-
const
|
|
3447
|
+
const As = Number.isInteger || function(e) {
|
|
3445
3448
|
return e << 0 === e;
|
|
3446
3449
|
};
|
|
3447
|
-
function
|
|
3450
|
+
function Ms(a, e) {
|
|
3448
3451
|
var t = a < 0 ? e.length + a : a;
|
|
3449
3452
|
return e[t];
|
|
3450
3453
|
}
|
|
3451
|
-
var
|
|
3454
|
+
var Ts = /* @__PURE__ */ Ke(function(e, t) {
|
|
3452
3455
|
return t == null || t !== t ? e : t;
|
|
3453
3456
|
});
|
|
3454
|
-
function
|
|
3457
|
+
function Is(a, e) {
|
|
3455
3458
|
for (var t = e, i = 0; i < a.length; i += 1) {
|
|
3456
3459
|
if (t == null)
|
|
3457
3460
|
return;
|
|
3458
3461
|
var s = a[i];
|
|
3459
|
-
|
|
3462
|
+
As(s) ? t = Ms(s, t) : t = t[s];
|
|
3460
3463
|
}
|
|
3461
3464
|
return t;
|
|
3462
3465
|
}
|
|
3463
|
-
var
|
|
3464
|
-
return
|
|
3466
|
+
var Gt = /* @__PURE__ */ Cs(function(e, t, i) {
|
|
3467
|
+
return Ts(e, Is(t, i));
|
|
3465
3468
|
});
|
|
3466
|
-
const Is = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3467
|
-
var
|
|
3469
|
+
const Es = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3470
|
+
var $s = Object.defineProperty, O = (a, e, t, i) => {
|
|
3468
3471
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
3469
3472
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
3470
|
-
return s &&
|
|
3473
|
+
return s && $s(e, t, s), s;
|
|
3471
3474
|
};
|
|
3472
|
-
const
|
|
3473
|
-
|
|
3474
|
-
const ne = "cb_",
|
|
3475
|
-
class R extends
|
|
3475
|
+
const T = Je.noConflict();
|
|
3476
|
+
T.setLevel("info");
|
|
3477
|
+
const ne = "cb_", Ps = (a) => new Promise((e) => setTimeout(e, a));
|
|
3478
|
+
class R extends Jt {
|
|
3476
3479
|
constructor() {
|
|
3477
3480
|
super(), this.actionIdCounter = 0, this.currentLoadContext = {}, this.prefilledFormValues = {}, this.wsClient = null, this.webAudioProcessor = null, this.webAudioTrackId = null, this.webAudioCurrentMark = null, this.replyMessage = null, this.streamingResponseInProgress = !1, this.streamingResponseLastText = null, this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null, this.tabsBroadcastChannel = new BroadcastChannel("c7o-bot-tabs"), this.tabId = "c7o-bot-tab-" + (self.crypto?.randomUUID?.() || Math.random().toString(36).slice(2)), this.tabsBroadcastChannel.addEventListener("message", this.handleBroadcastMessage.bind(this)), console.log(`c7o: AppState: created, tabId=${this.tabId}`);
|
|
3478
3481
|
}
|
|
3479
3482
|
// this is called at startup
|
|
3480
3483
|
setSetting(e) {
|
|
3481
|
-
|
|
3482
|
-
|
|
3484
|
+
T.info("appState: Startup: setSetting", e), this.setting = e, this.initBot().catch((t) => {
|
|
3485
|
+
T.info(`Exception during bot initialization: ${t.message}`);
|
|
3483
3486
|
});
|
|
3484
3487
|
}
|
|
3485
3488
|
// set language
|
|
@@ -3494,7 +3497,7 @@ class R extends Yt {
|
|
|
3494
3497
|
async initBot() {
|
|
3495
3498
|
if (!this.botSettingsInitialized) {
|
|
3496
3499
|
const i = `${this.setting.url.startsWith("localhost") ? "http" : "https"}://${this.setting.url}/api/bot/settings/${this.setting.orgId}/${this.setting.botId}`;
|
|
3497
|
-
|
|
3500
|
+
T.info(`Getting bot settings at ${i} ...`);
|
|
3498
3501
|
let s = null, r = null;
|
|
3499
3502
|
try {
|
|
3500
3503
|
s = await fetch(i, {
|
|
@@ -3504,13 +3507,13 @@ class R extends Yt {
|
|
|
3504
3507
|
"X-Enegel-Signature": this.setting.botId
|
|
3505
3508
|
//"ngrok-skip-browser-warning": "1",
|
|
3506
3509
|
}
|
|
3507
|
-
}), !s.ok || s.status !== 200 ?
|
|
3510
|
+
}), !s.ok || s.status !== 200 ? T.error(`Failed to get bot ${this.setting.botId} settings: ${s.status} ${s.statusText}`) : r = await s.json();
|
|
3508
3511
|
} catch (o) {
|
|
3509
|
-
|
|
3512
|
+
T.error(`Failed to get bot ${this.setting.botId} settings: ${o.message}`), r = null;
|
|
3510
3513
|
}
|
|
3511
3514
|
if (this.botSettingsInitialized = !0, this.botSettings = r, !r) {
|
|
3512
|
-
if (
|
|
3513
|
-
|
|
3515
|
+
if (T.error(`Unable to retrieve bot settings - bot disabled. Retry in ${this.botSettingsRetryTimeout} seconds.`), this.disabled = !0, this.botSettingsRetryTimeout > 80) {
|
|
3516
|
+
T.error("Failed to retrieve bot settings - bot disabled. Retries exhausted. Refresh page to attempt again.");
|
|
3514
3517
|
return;
|
|
3515
3518
|
}
|
|
3516
3519
|
this.botSettingsInitialized = !1, setTimeout(async () => {
|
|
@@ -3518,17 +3521,17 @@ class R extends Yt {
|
|
|
3518
3521
|
}, this.botSettingsRetryTimeout * 1e3), this.botSettingsRetryTimeout = this.botSettingsRetryTimeout * 2;
|
|
3519
3522
|
return;
|
|
3520
3523
|
}
|
|
3521
|
-
|
|
3524
|
+
T.info("Got bot settings - bot is enabled", r), this.disabled = !1, this.setting.welcomeMessage = r?.welcomeMessage || "How can I help ?", this.setting.disclaimerMessage = r?.disclaimerMessage && r.disclaimerMessage !== "" ? r.disclaimerMessage : null, this.setting.engageMessage = r?.engageMessage || "How can I help ?", this.setting.engageTimeout = r?.engageTimeout || 5, this.setting.splitMessagesAtBreak = "splitMessagesAtBreak" in r ? r.splitMessagesAtBreak : !1, this.setting.feedbackEnabled = "feedbackEnabled" in r ? r.feedbackEnabled : !1, this.setting.uploadImages = "uploadImages" in r ? r.uploadImages : !1, this.setting.newConversationTimeoutInSec = r?.newConversationTimeoutInSec || 86400, this.setting.enableNotificationSound = "enableNotificationSound" in r ? r.enableNotificationSound : !0, this.setting.botAdvancedSettings = r?.botAdvancedSettings ?? {}, this.setting.startFeedbackFromMessage = "startFeedbackFromMessage" in this.setting.botAdvancedSettings ? this.setting.botAdvancedSettings.startFeedbackFromMessage : 1, this.setting.enableMultiModalConnection = this.setting.botAdvancedSettings?.enableMultiModalConnection ?? !1, this.setting.enablePassContextOnConnect = this.setting.botAdvancedSettings?.enablePassContextOnConnect ?? !1, this.setting.enableShowFullDisclaimerMessage = this.setting.botAdvancedSettings?.enableShowFullDisclaimerMessage ?? !1, this.setting.fileUploadEnabledExtensions = this.setting.botAdvancedSettings?.fileUploadEnabledExtensions || ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3", this.setting.fileUploadMaxFileSizeMB = this.setting.botAdvancedSettings?.fileUploadMaxFileSizeMB || 30, this.setting.enableAgentDisconnectedMessage = this.setting.botAdvancedSettings?.enableAgentDisconnectedMessage ?? !1, this.setting.showNewConversationOnAgentDisconnected = this.setting.botAdvancedSettings?.showNewConversationOnAgentDisconnected ?? !1, this.setting.enableMultiModalConnection ? this.setting.enableAudio = !0 : this.setting.enableAudio = !1, this.initConversation(), this.shouldEngage === "true" && setTimeout(() => {
|
|
3522
3525
|
this.showEngagePopup();
|
|
3523
3526
|
}, this.setting.engageTimeout * 1e3);
|
|
3524
3527
|
}
|
|
3525
3528
|
const e = new URLSearchParams(window.location.search);
|
|
3526
3529
|
if (e.has("c7o_bot_open")) {
|
|
3527
3530
|
const t = e.get("c7o_bot_open");
|
|
3528
|
-
this.open = t !== "false" && t !== "no" && t !== "0",
|
|
3531
|
+
this.open = t !== "false" && t !== "no" && t !== "0", T.info(`C7O-BOT:INIT: Force open=${this.open} from query parameter c7o_bot_open=${e.get("c7o_bot_open")}`);
|
|
3529
3532
|
}
|
|
3530
|
-
this.connectWs === "true" && (
|
|
3531
|
-
|
|
3533
|
+
this.connectWs === "true" && (T.info("appState: connectWs is true"), this.getWsClient().catch((t) => {
|
|
3534
|
+
T.error(`Exception during ws client startup: ${t.message}`);
|
|
3532
3535
|
})), setTimeout(() => {
|
|
3533
3536
|
window.dispatchEvent(
|
|
3534
3537
|
new CustomEvent("c7o:bot:stateEvent", {
|
|
@@ -3560,17 +3563,34 @@ class R extends Yt {
|
|
|
3560
3563
|
}), this.initStartupForm();
|
|
3561
3564
|
}
|
|
3562
3565
|
// AGENT // ////////////////////////////////////////////////////
|
|
3566
|
+
async handleAgentConnected(e) {
|
|
3567
|
+
T.info("c7o: Agent Connected", e);
|
|
3568
|
+
const t = e?.userName || "Agent";
|
|
3569
|
+
this.addMessage({
|
|
3570
|
+
id: e?.id || null,
|
|
3571
|
+
author: "system",
|
|
3572
|
+
type: "info",
|
|
3573
|
+
data: {
|
|
3574
|
+
text: `**${t}** joined chat`,
|
|
3575
|
+
...e.userName && { userName: e.userName },
|
|
3576
|
+
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3577
|
+
}
|
|
3578
|
+
});
|
|
3579
|
+
}
|
|
3563
3580
|
async handleAgentDisconnected(e) {
|
|
3564
|
-
|
|
3581
|
+
if (T.info("c7o: Agent disconnected", e), !this.setting.enableAgentDisconnectedMessage)
|
|
3582
|
+
return;
|
|
3583
|
+
const t = e?.userName || "Agent";
|
|
3584
|
+
this.addMessage({
|
|
3565
3585
|
id: e?.id || null,
|
|
3566
|
-
author: "
|
|
3567
|
-
type: "
|
|
3586
|
+
author: "system",
|
|
3587
|
+
type: "info",
|
|
3568
3588
|
data: {
|
|
3569
|
-
text:
|
|
3589
|
+
text: `**${t}** left chat`,
|
|
3570
3590
|
...e.userName && { userName: e.userName },
|
|
3571
3591
|
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3572
3592
|
}
|
|
3573
|
-
}), this.showNewConversation = !0;
|
|
3593
|
+
}), this.setting.showNewConversationOnAgentDisconnected && (this.showNewConversation = !0);
|
|
3574
3594
|
}
|
|
3575
3595
|
// BROADCAST // ///////////////////////////////////////////////////
|
|
3576
3596
|
async handleBroadcastMessage(e) {
|
|
@@ -3639,7 +3659,7 @@ class R extends Yt {
|
|
|
3639
3659
|
}
|
|
3640
3660
|
// When finished playing audio, clear trackId and send mark message
|
|
3641
3661
|
async onPlaybackEnded() {
|
|
3642
|
-
this.webAudioCurrentMark && (
|
|
3662
|
+
this.webAudioCurrentMark && (T.info(`c7o: mark ${this.webAudioCurrentMark} completed`), await this.sendEvent({
|
|
3643
3663
|
id: fe(),
|
|
3644
3664
|
type: "mediaMark",
|
|
3645
3665
|
mark: {
|
|
@@ -3648,7 +3668,7 @@ class R extends Yt {
|
|
|
3648
3668
|
}), this.webAudioCurrentMark = null, this.webAudioTrackId = null);
|
|
3649
3669
|
}
|
|
3650
3670
|
async onWebAudioTerminate() {
|
|
3651
|
-
|
|
3671
|
+
T.info("c7o: terminating audio"), await this.stopAudio();
|
|
3652
3672
|
}
|
|
3653
3673
|
// Confirmation from server that media started
|
|
3654
3674
|
// {"type":"mediaStarted","mediaType":"audio","mediaTransport":"webmedia","webmedia":{"mimeType":"audio/L16","mediaSpec":{"sampleRate":24000,"channels":1}}}
|
|
@@ -3667,16 +3687,16 @@ class R extends Yt {
|
|
|
3667
3687
|
if (!e || e?.type !== "media" || !e?.media || e?.mediaType !== "audio" || !e?.media?.payload || !this.webAudioProcessor || !this.webAudioStarted)
|
|
3668
3688
|
return;
|
|
3669
3689
|
const t = e.media.payload;
|
|
3670
|
-
this.webAudioTrackId || (this.webAudioTrackId = fe()),
|
|
3690
|
+
this.webAudioTrackId || (this.webAudioTrackId = fe()), T.info(`${Date.now()}: Playing audio: ${t.length} bytes, trackId: ${this.webAudioTrackId}`), await this.webAudioProcessor.playAudio(t, this.webAudioTrackId);
|
|
3671
3691
|
}
|
|
3672
3692
|
// {"type": "mediaMark","mark": {"name": "1757277902935"}}
|
|
3673
3693
|
async handleMediaMark(e) {
|
|
3674
|
-
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null,
|
|
3694
|
+
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null, T.info(`c7o: Current media mark set to ${this.webAudioCurrentMark}`, e));
|
|
3675
3695
|
}
|
|
3676
3696
|
// Confirmation from server that media stopped
|
|
3677
3697
|
//{"type":"mediaClear","mediaType":"audio"}
|
|
3678
3698
|
async handleMediaClear(e) {
|
|
3679
|
-
|
|
3699
|
+
T.info("c7o: Got mediaClear, clearing buffered media", e), this.mediaStartedAudio = !1, !(!this.webAudioProcessor || !this.webAudioStarted) && (this.webAudioTrackId = null, await this.webAudioProcessor.interruptAudio());
|
|
3680
3700
|
}
|
|
3681
3701
|
// ////////////////////////////////////////////////////////////
|
|
3682
3702
|
setPrefilledFormFields(e) {
|
|
@@ -3699,7 +3719,7 @@ class R extends Yt {
|
|
|
3699
3719
|
return;
|
|
3700
3720
|
const e = await this.getWsClient();
|
|
3701
3721
|
if (!e) {
|
|
3702
|
-
|
|
3722
|
+
T.error("Error - failed to obtain ws client");
|
|
3703
3723
|
return;
|
|
3704
3724
|
}
|
|
3705
3725
|
const t = {
|
|
@@ -3707,7 +3727,7 @@ class R extends Yt {
|
|
|
3707
3727
|
type: "setContext",
|
|
3708
3728
|
contextData: this.context
|
|
3709
3729
|
};
|
|
3710
|
-
e.sendMessage(t),
|
|
3730
|
+
e.sendMessage(t), T.info("Sent context:", this.context);
|
|
3711
3731
|
}
|
|
3712
3732
|
getContext() {
|
|
3713
3733
|
return this.context;
|
|
@@ -3720,20 +3740,20 @@ class R extends Yt {
|
|
|
3720
3740
|
this.initForm(this.form);
|
|
3721
3741
|
return;
|
|
3722
3742
|
}
|
|
3723
|
-
const e =
|
|
3743
|
+
const e = Gt(null, ["startupForm"], this.botSettings);
|
|
3724
3744
|
if (!e || !e?.name) {
|
|
3725
|
-
|
|
3745
|
+
T.info("Startup form not present");
|
|
3726
3746
|
return;
|
|
3727
3747
|
}
|
|
3728
3748
|
this.initForm(e);
|
|
3729
3749
|
}
|
|
3730
3750
|
initForm(e = null) {
|
|
3731
|
-
const t = e, i =
|
|
3751
|
+
const t = e, i = Gt(null, ["name"], e);
|
|
3732
3752
|
if (!t || !i)
|
|
3733
3753
|
return;
|
|
3734
|
-
const s =
|
|
3754
|
+
const s = Gt(null, ["fields"], e);
|
|
3735
3755
|
if (!Array.isArray(s) || s.length <= 0) {
|
|
3736
|
-
|
|
3756
|
+
T.info("form has no fields", e);
|
|
3737
3757
|
return;
|
|
3738
3758
|
}
|
|
3739
3759
|
const r = `${ne}${this.setting.botId}.${this.conversationId}.form.${i}`, o = localStorage.getItem(r);
|
|
@@ -3742,11 +3762,11 @@ class R extends Yt {
|
|
|
3742
3762
|
try {
|
|
3743
3763
|
f = JSON.parse(o);
|
|
3744
3764
|
} catch (p) {
|
|
3745
|
-
|
|
3765
|
+
T.error(`Failed to parse stored form data: ${p.message}`), f = null;
|
|
3746
3766
|
}
|
|
3747
3767
|
if (f) {
|
|
3748
3768
|
this.sendFormData(i, f).catch((p) => {
|
|
3749
|
-
|
|
3769
|
+
T.error(`Error when submitting form: ${p.message}`);
|
|
3750
3770
|
});
|
|
3751
3771
|
return;
|
|
3752
3772
|
}
|
|
@@ -3757,7 +3777,7 @@ class R extends Yt {
|
|
|
3757
3777
|
this.engage = !1, this.shouldEngage = "false";
|
|
3758
3778
|
}
|
|
3759
3779
|
showEngagePopup() {
|
|
3760
|
-
this.open || (
|
|
3780
|
+
this.open || (T.info("Engaging User !"), this.engage = !0, this.playAudioNotification());
|
|
3761
3781
|
}
|
|
3762
3782
|
playAudioNotification() {
|
|
3763
3783
|
if (!this.setting.enableNotificationSound)
|
|
@@ -3768,7 +3788,7 @@ class R extends Yt {
|
|
|
3768
3788
|
o[f] = parseInt(r.substr(f * 2, 2), 16);
|
|
3769
3789
|
return o;
|
|
3770
3790
|
};
|
|
3771
|
-
let t = new Blob([e(
|
|
3791
|
+
let t = new Blob([e(Es)], { type: "application/octet-stream" });
|
|
3772
3792
|
const i = URL.createObjectURL(t);
|
|
3773
3793
|
new Audio(i).play();
|
|
3774
3794
|
}
|
|
@@ -3781,7 +3801,15 @@ class R extends Yt {
|
|
|
3781
3801
|
if (this.wsClient)
|
|
3782
3802
|
return this.wsClient;
|
|
3783
3803
|
let t = `${this.setting.url.startsWith("localhost") ? "ws" : "wss"}://${this.setting.url}/api/bot/connect/${this.setting.orgId}/${this.setting.botId}/${this.conversationId}`;
|
|
3784
|
-
|
|
3804
|
+
const i = new URL(t);
|
|
3805
|
+
if (this.setting.enableMultiModalConnection && (i.searchParams.set("multiModal", "true"), T.info("MultiModal connection enabled - adding multiModal=true parameter")), this.setting.enablePassContextOnConnect && this.context && typeof this.context == "object")
|
|
3806
|
+
try {
|
|
3807
|
+
const s = JSON.stringify(this.context);
|
|
3808
|
+
i.searchParams.set("context", s), T.info("Adding context to connect URL");
|
|
3809
|
+
} catch (s) {
|
|
3810
|
+
T.error(`Failed to stringify context: ${s.message}`);
|
|
3811
|
+
}
|
|
3812
|
+
return t = i.toString(), T.info(`Initiating ws connection to ${t} ...`), this.wsClient = new as({
|
|
3785
3813
|
url: t,
|
|
3786
3814
|
orgId: this.setting.orgId,
|
|
3787
3815
|
botId: this.setting.botId,
|
|
@@ -3801,11 +3829,11 @@ class R extends Yt {
|
|
|
3801
3829
|
}), await this.wsClient.start(), this.connectWs = "true", this.wsClient;
|
|
3802
3830
|
}
|
|
3803
3831
|
handleWscClose(e) {
|
|
3804
|
-
|
|
3832
|
+
T.info(`WSC: connection closed, connected: ${this.wsClient?.connected}`, e), this.stopWebAudio().catch((t) => {
|
|
3805
3833
|
}), this.connected = !1;
|
|
3806
3834
|
}
|
|
3807
3835
|
async handleWscConnectError(e) {
|
|
3808
|
-
|
|
3836
|
+
T.info("WSC: connect error - resetting conversation", e);
|
|
3809
3837
|
const t = this.wsClient?.url || null;
|
|
3810
3838
|
if (this.wsClient)
|
|
3811
3839
|
try {
|
|
@@ -3831,13 +3859,13 @@ class R extends Yt {
|
|
|
3831
3859
|
const s = t.includes("?"), [r, o] = s ? t.split("?") : [t, ""], f = r.split("/");
|
|
3832
3860
|
f[f.length - 1] = this.conversationId;
|
|
3833
3861
|
const p = f.join("/"), v = o ? `${p}?${o}` : p;
|
|
3834
|
-
this.wsClient.url = v, await
|
|
3862
|
+
this.wsClient.url = v, await Ps(1e3), await this.wsClient.start(), T.info(`WSC: started new conversation, conversationId=${this.conversationId}`);
|
|
3835
3863
|
} catch (i) {
|
|
3836
|
-
|
|
3864
|
+
T.error(`WSC: failed to reset conversation: ${i.message}`, i);
|
|
3837
3865
|
}
|
|
3838
3866
|
}
|
|
3839
3867
|
handleWscConnecting(e) {
|
|
3840
|
-
|
|
3868
|
+
T.info(`WSC: on connecting(${e}), connected: ${this.wsClient?.connected}`), this.connecting = e, !this.connecting && this.wsClient?.connected ? (this.connected = !0, this.context && typeof this.context == "object" && Object.keys(this.context).length > 0 && this.wsClient.queueMessage(
|
|
3841
3869
|
{
|
|
3842
3870
|
id: fe(),
|
|
3843
3871
|
type: "setContext",
|
|
@@ -3854,7 +3882,7 @@ class R extends Yt {
|
|
|
3854
3882
|
}
|
|
3855
3883
|
// Update typing state based on received message
|
|
3856
3884
|
updateTypingState(e) {
|
|
3857
|
-
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1,
|
|
3885
|
+
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1, T.info("c7o: typing stopped")) : e && e?.type === "typing" && (this.typingActive = !0, T.info("c7o: typing started"));
|
|
3858
3886
|
}
|
|
3859
3887
|
handleWscMessage(e) {
|
|
3860
3888
|
if (e?.type === "ack")
|
|
@@ -3914,15 +3942,7 @@ class R extends Yt {
|
|
|
3914
3942
|
break;
|
|
3915
3943
|
}
|
|
3916
3944
|
case "agent-connected": {
|
|
3917
|
-
this.
|
|
3918
|
-
id: e?.id || null,
|
|
3919
|
-
author: "assistant",
|
|
3920
|
-
type: "text",
|
|
3921
|
-
data: {
|
|
3922
|
-
text: "_Joined chat_",
|
|
3923
|
-
...e.userName && { userName: e.userName },
|
|
3924
|
-
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3925
|
-
}
|
|
3945
|
+
this.handleAgentConnected(e).catch((i) => {
|
|
3926
3946
|
});
|
|
3927
3947
|
break;
|
|
3928
3948
|
}
|
|
@@ -3934,7 +3954,7 @@ class R extends Yt {
|
|
|
3934
3954
|
//{"type":"agent-connected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
3935
3955
|
//{"type":"agent-disconnected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
3936
3956
|
case "form": {
|
|
3937
|
-
if (
|
|
3957
|
+
if (T.info("Got form:", e), this.replyMessage && this.replyMessage.id) {
|
|
3938
3958
|
const i = this.replyMessage.data?.text || "";
|
|
3939
3959
|
(this.replyMessage.isThinking || i.trim() === "") && (this.removeMessage(this.replyMessage.id), this.replyMessage = null);
|
|
3940
3960
|
}
|
|
@@ -3980,7 +4000,7 @@ class R extends Yt {
|
|
|
3980
4000
|
if (e !== -1)
|
|
3981
4001
|
if (this.setting.splitMessagesAtBreak) {
|
|
3982
4002
|
const t = this.streamingResponseBuffer.substring(0, e).trim(), i = this.streamingResponseBuffer.substring(e + 4).trim();
|
|
3983
|
-
(t !== "" || this.replyMessage?.data?.text !== "") && (
|
|
4003
|
+
(t !== "" || this.replyMessage?.data?.text !== "") && (T.info(`BREAK: Splitting the message: ${this.streamingResponseBuffer} >>> prev: ${t} next: ${i}`), this.replyMessage = this.updateMessage(this.replyMessage, t), this.replyMessage = { author: "assistant", type: "text", isThinking: !1, data: { text: i } }, this.addMessage(this.replyMessage));
|
|
3984
4004
|
} else
|
|
3985
4005
|
this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer);
|
|
3986
4006
|
this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null;
|
|
@@ -3989,11 +4009,11 @@ class R extends Yt {
|
|
|
3989
4009
|
if (!this.streamingResponseBuffer || !this.replyMessage)
|
|
3990
4010
|
return;
|
|
3991
4011
|
if (this.streamingResponseBuffer.indexOf("![") === -1) {
|
|
3992
|
-
|
|
4012
|
+
T.info(`NOT IMG TAG: ${this.streamingResponseBuffer}`), this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null;
|
|
3993
4013
|
return;
|
|
3994
4014
|
}
|
|
3995
4015
|
const e = this.streamingResponseBuffer.lastIndexOf("]"), t = this.streamingResponseBuffer.lastIndexOf(")");
|
|
3996
|
-
e === -1 || t === -1 || e > t || (
|
|
4016
|
+
e === -1 || t === -1 || e > t || (T.info(`IMG TAG END: ${this.streamingResponseBuffer}`), this.isValidImageLink(this.streamingResponseBuffer) && (this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer)), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null);
|
|
3997
4017
|
}
|
|
3998
4018
|
isValidImageLink(e = "") {
|
|
3999
4019
|
return !(e.indexOf("example.com") !== -1 || e.indexOf("imgur.com") !== -1 || e.indexOf("attachment:") !== -1);
|
|
@@ -4013,7 +4033,7 @@ class R extends Yt {
|
|
|
4013
4033
|
this.streamingResponseBuffer = e, this.streamingResponseTagStartPos = e.indexOf("<"), this.streamingResponseCurrentTag = "br";
|
|
4014
4034
|
return;
|
|
4015
4035
|
} else if (e.indexOf("![") !== -1 || e.endsWith("!")) {
|
|
4016
|
-
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img",
|
|
4036
|
+
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img", T.info(`IMG TAG START: ${this.streamingResponseBuffer}`);
|
|
4017
4037
|
return;
|
|
4018
4038
|
}
|
|
4019
4039
|
this.streamingResponseLastText = t, this.replyMessage = this.updateMessage(this.replyMessage, t);
|
|
@@ -4069,7 +4089,7 @@ class R extends Yt {
|
|
|
4069
4089
|
detail: f
|
|
4070
4090
|
})
|
|
4071
4091
|
), this.sendActionCompleted(f).catch((p) => {
|
|
4072
|
-
|
|
4092
|
+
T.error(`Error: failed to send action completed: ${p.message}`);
|
|
4073
4093
|
});
|
|
4074
4094
|
}
|
|
4075
4095
|
this.actions.splice(s, 1);
|
|
@@ -4087,10 +4107,10 @@ class R extends Yt {
|
|
|
4087
4107
|
}
|
|
4088
4108
|
}
|
|
4089
4109
|
async sendMessage(e) {
|
|
4090
|
-
e = this.formatMessage(e),
|
|
4110
|
+
e = this.formatMessage(e), T.info("Send Message:", e), this.showNewConversation && (this.showNewConversation = !1), this.messages = this.messages.concat([e]), this.lastConversationUpdate = Date.now();
|
|
4091
4111
|
const t = await this.getWsClient();
|
|
4092
4112
|
if (!t) {
|
|
4093
|
-
|
|
4113
|
+
T.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
4094
4114
|
return;
|
|
4095
4115
|
}
|
|
4096
4116
|
t.sendMessage({
|
|
@@ -4136,7 +4156,7 @@ class R extends Yt {
|
|
|
4136
4156
|
// Submit current form data
|
|
4137
4157
|
async submitForm(e) {
|
|
4138
4158
|
if (!this.form) {
|
|
4139
|
-
|
|
4159
|
+
T.info("submitForm: No form is active - ignored");
|
|
4140
4160
|
return;
|
|
4141
4161
|
}
|
|
4142
4162
|
const t = `${ne}${this.setting.botId}.${this.conversationId}.form.${this.form.name}`;
|
|
@@ -4145,7 +4165,7 @@ class R extends Yt {
|
|
|
4145
4165
|
async sendFormData(e, t) {
|
|
4146
4166
|
const i = await this.getWsClient();
|
|
4147
4167
|
if (!i) {
|
|
4148
|
-
|
|
4168
|
+
T.error("Error - failed to obtain ws client");
|
|
4149
4169
|
return;
|
|
4150
4170
|
}
|
|
4151
4171
|
i.sendMessage({
|
|
@@ -4157,7 +4177,7 @@ class R extends Yt {
|
|
|
4157
4177
|
async sendActionCompleted(e) {
|
|
4158
4178
|
const t = await this.getWsClient();
|
|
4159
4179
|
if (!t) {
|
|
4160
|
-
|
|
4180
|
+
T.error("Error - failed to obtain ws client");
|
|
4161
4181
|
return;
|
|
4162
4182
|
}
|
|
4163
4183
|
t.sendMessage({
|
|
@@ -4168,7 +4188,7 @@ class R extends Yt {
|
|
|
4168
4188
|
async sendEvent(e) {
|
|
4169
4189
|
const t = await this.getWsClient();
|
|
4170
4190
|
if (!t) {
|
|
4171
|
-
|
|
4191
|
+
T.error("Error - failed to obtain ws client");
|
|
4172
4192
|
return;
|
|
4173
4193
|
}
|
|
4174
4194
|
t.sendMessage(e);
|
|
@@ -4181,10 +4201,10 @@ class R extends Yt {
|
|
|
4181
4201
|
this.feedbackMessages.push(t), this.feedbackUserMessage = this.messages.findLast((i) => i.id === t.replyId)?.data?.text || "", this.feedbackAnswer = t?.data.text || "", this.feedbackAnswerMessageId = t?.id || "", this.feedbackAnswerUserName = t?.data.userName || "", this.feedback = !0;
|
|
4182
4202
|
}
|
|
4183
4203
|
async submitFeedback(e, t, i) {
|
|
4184
|
-
|
|
4204
|
+
T.info(`submitFeedback: ${this.feedbackScore}`), this.feedbackName = e, this.feedbackEmail = t;
|
|
4185
4205
|
const s = await this.getWsClient();
|
|
4186
4206
|
if (!s) {
|
|
4187
|
-
|
|
4207
|
+
T.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
4188
4208
|
return;
|
|
4189
4209
|
}
|
|
4190
4210
|
s.sendMessage({
|
|
@@ -4227,9 +4247,9 @@ class R extends Yt {
|
|
|
4227
4247
|
if (!e?.length) return;
|
|
4228
4248
|
const t = b.setting.fileUploadMaxFileSizeMB || 30, i = t * 1024 * 1024, s = e?.find((v) => v.size > i);
|
|
4229
4249
|
if (s) {
|
|
4230
|
-
|
|
4250
|
+
T.error(
|
|
4231
4251
|
`File "${s.name}" exceeds the ${t} MB limit and will not be uploaded.`
|
|
4232
|
-
),
|
|
4252
|
+
), Ja({
|
|
4233
4253
|
message: `File is larger than ${t} MB`,
|
|
4234
4254
|
variant: "danger",
|
|
4235
4255
|
duration: 3800,
|
|
@@ -4238,10 +4258,10 @@ class R extends Yt {
|
|
|
4238
4258
|
return;
|
|
4239
4259
|
}
|
|
4240
4260
|
const r = await this.filesToBase64(e);
|
|
4241
|
-
|
|
4261
|
+
T.info("Uploading files:", r);
|
|
4242
4262
|
const o = await this.getWsClient();
|
|
4243
4263
|
if (!o) {
|
|
4244
|
-
|
|
4264
|
+
T.error("Error - failed to obtain ws client");
|
|
4245
4265
|
return;
|
|
4246
4266
|
}
|
|
4247
4267
|
const f = fe();
|
|
@@ -4269,42 +4289,42 @@ class R extends Yt {
|
|
|
4269
4289
|
});
|
|
4270
4290
|
}
|
|
4271
4291
|
}
|
|
4272
|
-
|
|
4292
|
+
O([
|
|
4273
4293
|
ce({ prefix: ne }),
|
|
4274
4294
|
z({ value: "en" })
|
|
4275
4295
|
], R.prototype, "language");
|
|
4276
|
-
|
|
4296
|
+
O([
|
|
4277
4297
|
ce({ prefix: ne }),
|
|
4278
4298
|
z({ value: "light" })
|
|
4279
4299
|
], R.prototype, "theme");
|
|
4280
|
-
|
|
4300
|
+
O([
|
|
4281
4301
|
ce({ prefix: ne }),
|
|
4282
4302
|
z({ type: Boolean, value: !1 })
|
|
4283
4303
|
], R.prototype, "open");
|
|
4284
|
-
|
|
4304
|
+
O([
|
|
4285
4305
|
z({ type: Boolean, value: !1 })
|
|
4286
4306
|
], R.prototype, "alwaysOpen");
|
|
4287
|
-
|
|
4307
|
+
O([
|
|
4288
4308
|
ce({ prefix: ne }),
|
|
4289
4309
|
z({ value: "false" })
|
|
4290
4310
|
], R.prototype, "connectWs");
|
|
4291
|
-
|
|
4311
|
+
O([
|
|
4292
4312
|
ce({ prefix: ne }),
|
|
4293
4313
|
z({ value: fe() })
|
|
4294
4314
|
], R.prototype, "conversationId");
|
|
4295
|
-
|
|
4315
|
+
O([
|
|
4296
4316
|
ce({ prefix: ne }),
|
|
4297
4317
|
z({ value: 0 })
|
|
4298
4318
|
], R.prototype, "lastConversationUpdate");
|
|
4299
|
-
|
|
4319
|
+
O([
|
|
4300
4320
|
ce({ prefix: ne }),
|
|
4301
4321
|
z({ type: Array, value: [] })
|
|
4302
4322
|
], R.prototype, "messages");
|
|
4303
|
-
|
|
4323
|
+
O([
|
|
4304
4324
|
ce({ prefix: ne }),
|
|
4305
4325
|
z({ value: 0 })
|
|
4306
4326
|
], R.prototype, "unreadMessages");
|
|
4307
|
-
|
|
4327
|
+
O([
|
|
4308
4328
|
ce({ prefix: ne }),
|
|
4309
4329
|
z({
|
|
4310
4330
|
type: Array,
|
|
@@ -4349,43 +4369,43 @@ B([
|
|
|
4349
4369
|
],*/
|
|
4350
4370
|
})
|
|
4351
4371
|
], R.prototype, "actions");
|
|
4352
|
-
|
|
4372
|
+
O([
|
|
4353
4373
|
ce({ prefix: ne }),
|
|
4354
4374
|
z({ type: Object, value: null })
|
|
4355
4375
|
], R.prototype, "form");
|
|
4356
|
-
|
|
4376
|
+
O([
|
|
4357
4377
|
z({ type: Boolean, value: !1 })
|
|
4358
4378
|
], R.prototype, "botSettingsInitialized");
|
|
4359
|
-
|
|
4379
|
+
O([
|
|
4360
4380
|
z({ type: Number, value: 5 })
|
|
4361
4381
|
], R.prototype, "botSettingsRetryTimeout");
|
|
4362
|
-
|
|
4382
|
+
O([
|
|
4363
4383
|
z({ type: Object, value: null })
|
|
4364
4384
|
], R.prototype, "botSettings");
|
|
4365
|
-
|
|
4385
|
+
O([
|
|
4366
4386
|
z({ type: Boolean, value: !0 })
|
|
4367
4387
|
], R.prototype, "disabled");
|
|
4368
|
-
|
|
4388
|
+
O([
|
|
4369
4389
|
z({ type: Boolean, value: !1 })
|
|
4370
4390
|
], R.prototype, "connecting");
|
|
4371
|
-
|
|
4391
|
+
O([
|
|
4372
4392
|
z({ type: Boolean, value: !1 })
|
|
4373
4393
|
], R.prototype, "connected");
|
|
4374
|
-
|
|
4394
|
+
O([
|
|
4375
4395
|
ce({ prefix: ne }),
|
|
4376
4396
|
z({ value: "true" })
|
|
4377
4397
|
], R.prototype, "shouldEngage");
|
|
4378
|
-
|
|
4398
|
+
O([
|
|
4379
4399
|
z({ type: Boolean, value: !1 })
|
|
4380
4400
|
], R.prototype, "engage");
|
|
4381
|
-
|
|
4401
|
+
O([
|
|
4382
4402
|
ce({ prefix: ne }),
|
|
4383
4403
|
z({ type: Boolean, value: !1 })
|
|
4384
4404
|
], R.prototype, "showNewConversation");
|
|
4385
|
-
|
|
4405
|
+
O([
|
|
4386
4406
|
z({ type: Boolean, value: !1 })
|
|
4387
4407
|
], R.prototype, "typingActive");
|
|
4388
|
-
|
|
4408
|
+
O([
|
|
4389
4409
|
ce({ prefix: ne }),
|
|
4390
4410
|
z({
|
|
4391
4411
|
type: Object,
|
|
@@ -4395,6 +4415,7 @@ B([
|
|
|
4395
4415
|
url: null,
|
|
4396
4416
|
welcomeMessage: null,
|
|
4397
4417
|
disclaimerMessage: null,
|
|
4418
|
+
enableShowFullDisclaimerMessage: !1,
|
|
4398
4419
|
splitMessagesAtBreak: !1,
|
|
4399
4420
|
feedbackEnabled: !1,
|
|
4400
4421
|
startFeedbackFromMessage: 1,
|
|
@@ -4403,66 +4424,69 @@ B([
|
|
|
4403
4424
|
enableNotificationSound: !0,
|
|
4404
4425
|
botAdvancedOptions: null,
|
|
4405
4426
|
enableMultiModalConnection: !1,
|
|
4427
|
+
enablePassContextOnConnect: !1,
|
|
4406
4428
|
fileUploadEnabledExtensions: ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3",
|
|
4407
|
-
fileUploadMaxFileSizeMB: 30
|
|
4429
|
+
fileUploadMaxFileSizeMB: 30,
|
|
4430
|
+
enableAgentDisconnectedMessage: !1,
|
|
4431
|
+
showNewConversationOnAgentDisconnected: !1
|
|
4408
4432
|
}
|
|
4409
4433
|
})
|
|
4410
4434
|
], R.prototype, "setting");
|
|
4411
|
-
|
|
4435
|
+
O([
|
|
4412
4436
|
ce({ prefix: ne }),
|
|
4413
4437
|
z({ type: Object, value: {} })
|
|
4414
4438
|
], R.prototype, "context");
|
|
4415
|
-
|
|
4439
|
+
O([
|
|
4416
4440
|
z({ type: String, value: "top-end" })
|
|
4417
4441
|
], R.prototype, "appearanceAnchorPopupPosition");
|
|
4418
|
-
|
|
4442
|
+
O([
|
|
4419
4443
|
z({ type: String, value: "danger" })
|
|
4420
4444
|
], R.prototype, "appearanceAnchorBadgeVariant");
|
|
4421
|
-
|
|
4445
|
+
O([
|
|
4422
4446
|
z({ type: String, value: "right" })
|
|
4423
4447
|
], R.prototype, "appearanceUserMessageAvatarPosition");
|
|
4424
|
-
|
|
4448
|
+
O([
|
|
4425
4449
|
z({ type: Boolean, value: !1 })
|
|
4426
4450
|
], R.prototype, "feedback");
|
|
4427
|
-
|
|
4451
|
+
O([
|
|
4428
4452
|
z({ type: Number, value: 5 })
|
|
4429
4453
|
], R.prototype, "feedbackScore");
|
|
4430
|
-
|
|
4454
|
+
O([
|
|
4431
4455
|
z({ type: String, value: "" })
|
|
4432
4456
|
], R.prototype, "feedbackUserMessage");
|
|
4433
|
-
|
|
4457
|
+
O([
|
|
4434
4458
|
z({ type: String, value: "" })
|
|
4435
4459
|
], R.prototype, "feedbackAnswerMessageId");
|
|
4436
|
-
|
|
4460
|
+
O([
|
|
4437
4461
|
z({ type: String, value: "" })
|
|
4438
4462
|
], R.prototype, "feedbackAnswer");
|
|
4439
|
-
|
|
4463
|
+
O([
|
|
4440
4464
|
z({ type: String, value: "" })
|
|
4441
4465
|
], R.prototype, "feedbackAnswerUserName");
|
|
4442
|
-
|
|
4466
|
+
O([
|
|
4443
4467
|
z({ type: Array, value: [] })
|
|
4444
4468
|
], R.prototype, "feedbackMessages");
|
|
4445
|
-
|
|
4469
|
+
O([
|
|
4446
4470
|
ce({ prefix: ne }),
|
|
4447
4471
|
z({ type: String, value: "" })
|
|
4448
4472
|
], R.prototype, "feedbackName");
|
|
4449
|
-
|
|
4473
|
+
O([
|
|
4450
4474
|
ce({ prefix: ne }),
|
|
4451
4475
|
z({ type: String, value: "" })
|
|
4452
4476
|
], R.prototype, "feedbackEmail");
|
|
4453
|
-
|
|
4477
|
+
O([
|
|
4454
4478
|
z({ type: Boolean, value: !1 })
|
|
4455
4479
|
], R.prototype, "mediaStartAudioRequested");
|
|
4456
|
-
|
|
4480
|
+
O([
|
|
4457
4481
|
z({ type: Boolean, value: !1 })
|
|
4458
4482
|
], R.prototype, "mediaStartedAudio");
|
|
4459
|
-
|
|
4483
|
+
O([
|
|
4460
4484
|
z({ type: Boolean, value: !1 })
|
|
4461
4485
|
], R.prototype, "webAudioStarted");
|
|
4462
|
-
|
|
4486
|
+
O([
|
|
4463
4487
|
z({ type: Boolean, value: !1 })
|
|
4464
4488
|
], R.prototype, "webAudioMuted");
|
|
4465
|
-
const b = new R(),
|
|
4489
|
+
const b = new R(), Ls = J`
|
|
4466
4490
|
${ke}
|
|
4467
4491
|
:host {
|
|
4468
4492
|
position: relative;
|
|
@@ -4537,12 +4561,12 @@ const b = new R(), Ps = J`
|
|
|
4537
4561
|
display: inline;
|
|
4538
4562
|
}
|
|
4539
4563
|
`;
|
|
4540
|
-
var
|
|
4564
|
+
var Rs = Object.defineProperty, zs = (a, e, t, i) => {
|
|
4541
4565
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
4542
4566
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
4543
|
-
return s &&
|
|
4567
|
+
return s && Rs(e, t, s), s;
|
|
4544
4568
|
};
|
|
4545
|
-
|
|
4569
|
+
qi("system", {
|
|
4546
4570
|
resolver: (a) => ""
|
|
4547
4571
|
});
|
|
4548
4572
|
(() => {
|
|
@@ -4579,16 +4603,16 @@ class re extends Fe {
|
|
|
4579
4603
|
return this.dispatchEvent(i), i;
|
|
4580
4604
|
}
|
|
4581
4605
|
}
|
|
4582
|
-
|
|
4606
|
+
zs([
|
|
4583
4607
|
x({ type: String })
|
|
4584
4608
|
], re.prototype, "lang");
|
|
4585
|
-
var
|
|
4609
|
+
var Os = Object.defineProperty, Bs = Object.getOwnPropertyDescriptor, Za = (a, e, t, i) => {
|
|
4586
4610
|
for (var s = i > 1 ? void 0 : i ? Bs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4587
4611
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
4588
|
-
return i && s &&
|
|
4612
|
+
return i && s && Os(e, t, s), s;
|
|
4589
4613
|
};
|
|
4590
|
-
const
|
|
4591
|
-
let
|
|
4614
|
+
const qs = '<svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"></path></svg>';
|
|
4615
|
+
let Ot = class extends re {
|
|
4592
4616
|
constructor() {
|
|
4593
4617
|
super(...arguments), this.title = "ChatBot";
|
|
4594
4618
|
}
|
|
@@ -4602,13 +4626,13 @@ let zt = class extends re {
|
|
|
4602
4626
|
${W(
|
|
4603
4627
|
b.setting.logoUrl !== "",
|
|
4604
4628
|
() => u`<img class="cb-header-logo" part="header-logo" src="${b.setting.logoUrl}" />`,
|
|
4605
|
-
() => u`<div class="cb-header-logo" part="header-logo">${
|
|
4629
|
+
() => u`<div class="cb-header-logo" part="header-logo">${G(b.setting.logoSvg)}</div>`
|
|
4606
4630
|
)}
|
|
4607
|
-
<div class="cb-header-title" part="header-title">${this.title}</div>
|
|
4631
|
+
<div class="cb-header-title" part="header-title">${Vt(this.title)}</div>
|
|
4608
4632
|
${W(
|
|
4609
4633
|
b.alwaysOpen,
|
|
4610
4634
|
() => u``,
|
|
4611
|
-
() => u`<div class="cb-header-close" part="header-close">${
|
|
4635
|
+
() => u`<div class="cb-header-close" part="header-close">${G(qs)}</div>`
|
|
4612
4636
|
)}
|
|
4613
4637
|
</header>`;
|
|
4614
4638
|
}
|
|
@@ -4617,13 +4641,13 @@ let zt = class extends re {
|
|
|
4617
4641
|
${W(
|
|
4618
4642
|
b.setting.logoUrl !== "",
|
|
4619
4643
|
() => u`<img class="cb-header-img" part="header-logo" src="${b.setting.logoUrl}" />`,
|
|
4620
|
-
() => u`<div class="cb-header-logo" part="header-logo">${
|
|
4644
|
+
() => u`<div class="cb-header-logo" part="header-logo">${G(b.setting.logoSvg)}</div>`
|
|
4621
4645
|
)}
|
|
4622
4646
|
<div class="cb-header-title" part="header-title">${this.title}</div>
|
|
4623
4647
|
${W(
|
|
4624
4648
|
b.alwaysOpen,
|
|
4625
4649
|
() => u`<div></div>`,
|
|
4626
|
-
() => u`<div @click=${this._clickCloseHandler} class="cb-header-close" part="header-close">${
|
|
4650
|
+
() => u`<div @click=${this._clickCloseHandler} class="cb-header-close" part="header-close">${G(b.setting.closeSvg)}</div>`
|
|
4627
4651
|
)}
|
|
4628
4652
|
</header>`;
|
|
4629
4653
|
}
|
|
@@ -4650,14 +4674,14 @@ let zt = class extends re {
|
|
|
4650
4674
|
});
|
|
4651
4675
|
}
|
|
4652
4676
|
};
|
|
4653
|
-
|
|
4654
|
-
|
|
4677
|
+
Ot.styles = Ls;
|
|
4678
|
+
Za([
|
|
4655
4679
|
x({ type: String, attribute: "title" })
|
|
4656
|
-
],
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
],
|
|
4660
|
-
const
|
|
4680
|
+
], Ot.prototype, "title", 2);
|
|
4681
|
+
Ot = Za([
|
|
4682
|
+
Z("cb-header")
|
|
4683
|
+
], Ot);
|
|
4684
|
+
const Ds = J`
|
|
4661
4685
|
${ke}
|
|
4662
4686
|
.cb-footer {
|
|
4663
4687
|
line-height: 60px;
|
|
@@ -4672,12 +4696,12 @@ const qs = J`
|
|
|
4672
4696
|
color: var(--primary-color);
|
|
4673
4697
|
}
|
|
4674
4698
|
`;
|
|
4675
|
-
var
|
|
4676
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
4699
|
+
var Fs = Object.getOwnPropertyDescriptor, js = (a, e, t, i) => {
|
|
4700
|
+
for (var s = i > 1 ? void 0 : i ? Fs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4677
4701
|
(o = a[r]) && (s = o(s) || s);
|
|
4678
4702
|
return s;
|
|
4679
4703
|
};
|
|
4680
|
-
let
|
|
4704
|
+
let Zt = class extends re {
|
|
4681
4705
|
constructor() {
|
|
4682
4706
|
super(...arguments), this.year = (/* @__PURE__ */ new Date()).getFullYear();
|
|
4683
4707
|
}
|
|
@@ -4712,11 +4736,11 @@ let Jt = class extends re {
|
|
|
4712
4736
|
`;
|
|
4713
4737
|
}
|
|
4714
4738
|
};
|
|
4715
|
-
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
],
|
|
4719
|
-
const
|
|
4739
|
+
Zt.styles = Ds;
|
|
4740
|
+
Zt = js([
|
|
4741
|
+
Z("cb-footer")
|
|
4742
|
+
], Zt);
|
|
4743
|
+
const Hs = J`
|
|
4720
4744
|
${ke}
|
|
4721
4745
|
|
|
4722
4746
|
:host {
|
|
@@ -5071,7 +5095,7 @@ const js = J`
|
|
|
5071
5095
|
.card-btn[aria-disabled="true"]:focus-visible {
|
|
5072
5096
|
box-shadow: none;
|
|
5073
5097
|
}
|
|
5074
|
-
`,
|
|
5098
|
+
`, Qa = J`
|
|
5075
5099
|
:host {
|
|
5076
5100
|
--primary-color: var(--sl-color-primary-600);
|
|
5077
5101
|
}
|
|
@@ -5162,10 +5186,10 @@ const js = J`
|
|
|
5162
5186
|
}
|
|
5163
5187
|
.split-btn[aria-expanded="true"] .split-btn__caret { transform: rotate(180deg); }
|
|
5164
5188
|
`;
|
|
5165
|
-
var
|
|
5166
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5189
|
+
var Vs = Object.defineProperty, Ns = Object.getOwnPropertyDescriptor, je = (a, e, t, i) => {
|
|
5190
|
+
for (var s = i > 1 ? void 0 : i ? Ns(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5167
5191
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5168
|
-
return i && s &&
|
|
5192
|
+
return i && s && Vs(e, t, s), s;
|
|
5169
5193
|
};
|
|
5170
5194
|
let gt = class extends Fe {
|
|
5171
5195
|
constructor() {
|
|
@@ -5259,7 +5283,7 @@ je([
|
|
|
5259
5283
|
x({ type: Number })
|
|
5260
5284
|
], gt.prototype, "minWidth", 2);
|
|
5261
5285
|
gt = je([
|
|
5262
|
-
|
|
5286
|
+
Z("cb-split-menu")
|
|
5263
5287
|
], gt);
|
|
5264
5288
|
let Ge = class extends Fe {
|
|
5265
5289
|
constructor() {
|
|
@@ -5346,7 +5370,7 @@ let Ge = class extends Fe {
|
|
|
5346
5370
|
this._onDocPointerDown && (document.removeEventListener("pointerdown", this._onDocPointerDown, { capture: !0 }), this._onDocPointerDown = void 0), this._onKeydown && (document.removeEventListener("keydown", this._onKeydown, { capture: !0 }), this._onKeydown = void 0);
|
|
5347
5371
|
}
|
|
5348
5372
|
};
|
|
5349
|
-
Ge.styles =
|
|
5373
|
+
Ge.styles = Qa;
|
|
5350
5374
|
je([
|
|
5351
5375
|
x({ type: String })
|
|
5352
5376
|
], Ge.prototype, "variant", 2);
|
|
@@ -5363,14 +5387,14 @@ je([
|
|
|
5363
5387
|
xe(".split-btn")
|
|
5364
5388
|
], Ge.prototype, "_btn", 2);
|
|
5365
5389
|
Ge = je([
|
|
5366
|
-
|
|
5390
|
+
Z("cb-split-button")
|
|
5367
5391
|
], Ge);
|
|
5368
|
-
var Us = Object.defineProperty,
|
|
5369
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5392
|
+
var Us = Object.defineProperty, Ws = Object.getOwnPropertyDescriptor, wt = (a, e, t, i) => {
|
|
5393
|
+
for (var s = i > 1 ? void 0 : i ? Ws(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5370
5394
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5371
5395
|
return i && s && Us(e, t, s), s;
|
|
5372
5396
|
};
|
|
5373
|
-
const Tt = Je.noConflict(),
|
|
5397
|
+
const Tt = Je.noConflict(), $a = "M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z", Gs = J`
|
|
5374
5398
|
:host { display: block; width: 100%; color: var(--cb-fg, #111827); }
|
|
5375
5399
|
|
|
5376
5400
|
/* CARD */
|
|
@@ -5478,16 +5502,16 @@ let Me = class extends Fe {
|
|
|
5478
5502
|
}
|
|
5479
5503
|
/* ----------------- CARD ----------------- */
|
|
5480
5504
|
renderCard(a) {
|
|
5481
|
-
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(), p = o.length > 0, v = a.info?.text, k = typeof a.info?.rating == "number" ? a.info.rating : typeof a.rating == "number" ? a.rating : void 0, w = !!v, _ = typeof k == "number", P = ["card__info", w && _ ? "card__info--between" : ""].filter(Boolean).join(" "),
|
|
5505
|
+
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(), p = o.length > 0, v = a.info?.text, k = typeof a.info?.rating == "number" ? a.info.rating : typeof a.rating == "number" ? a.rating : void 0, w = !!v, _ = typeof k == "number", P = ["card__info", w && _ ? "card__info--between" : ""].filter(Boolean).join(" "), E = r.some((U) => (U.type ?? "").toLowerCase() === "primary"), M = r.some((U) => (U.type ?? "").toLowerCase() === "secondary"), L = ["card__actions", E && M ? "card__actions--between" : ""].filter(Boolean).join(" "), C = () => {
|
|
5482
5506
|
if (!i) return Ae;
|
|
5483
|
-
const
|
|
5484
|
-
return p ? u`<a class="card__image-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false" aria-label=${e ? `Open: ${e}` : "Open"}>${
|
|
5485
|
-
},
|
|
5507
|
+
const U = u`<img class="card__image" src=${i} alt=${s ?? e ?? "Image"} draggable="false" />`;
|
|
5508
|
+
return p ? u`<a class="card__image-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false" aria-label=${e ? `Open: ${e}` : "Open"}>${U}</a>` : U;
|
|
5509
|
+
}, K = () => e ? p && !i ? u`<h3 class="card__title"><a class="card__title-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false">${e}</a></h3>` : u`<h3 class="card__title">${e}</h3>` : Ae;
|
|
5486
5510
|
return u`
|
|
5487
5511
|
<div class="card" role="group" aria-label=${e ? `Card: ${e}` : "Card"}>
|
|
5488
5512
|
${C()}
|
|
5489
5513
|
<div class="card__content">
|
|
5490
|
-
${
|
|
5514
|
+
${K()}
|
|
5491
5515
|
${t ? u`<div class="card__subtitle">${t}</div>` : Ae}
|
|
5492
5516
|
${w || _ ? u`
|
|
5493
5517
|
<div class=${P}>
|
|
@@ -5496,7 +5520,7 @@ let Me = class extends Fe {
|
|
|
5496
5520
|
</div>` : Ae}
|
|
5497
5521
|
${r.length ? u`
|
|
5498
5522
|
<div class=${L}>
|
|
5499
|
-
${r.map((
|
|
5523
|
+
${r.map((U, X) => this.renderAnyButton(U, X))}
|
|
5500
5524
|
</div>` : Ae}
|
|
5501
5525
|
</div>
|
|
5502
5526
|
</div>
|
|
@@ -5557,9 +5581,9 @@ let Me = class extends Fe {
|
|
|
5557
5581
|
`;
|
|
5558
5582
|
return u`
|
|
5559
5583
|
<span class="star" role="img" aria-label="${e.toFixed(2)} filled">
|
|
5560
|
-
<svg class="star__base" viewBox="0 0 16 16" aria-hidden="true"><path d="${
|
|
5584
|
+
<svg class="star__base" viewBox="0 0 16 16" aria-hidden="true"><path d="${$a}"/></svg>
|
|
5561
5585
|
<div class="star__fill" style="${s}">
|
|
5562
|
-
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="${
|
|
5586
|
+
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="${$a}"/></svg>
|
|
5563
5587
|
</div>
|
|
5564
5588
|
</span>
|
|
5565
5589
|
`;
|
|
@@ -5690,7 +5714,7 @@ let Me = class extends Fe {
|
|
|
5690
5714
|
body: JSON.stringify(r)
|
|
5691
5715
|
});
|
|
5692
5716
|
if (!o.ok) {
|
|
5693
|
-
Tt.error("c7o: cart/add.js failed"),
|
|
5717
|
+
Tt.error("c7o: cart/add.js failed"), Ja({
|
|
5694
5718
|
message: "Unable to add item to cart.",
|
|
5695
5719
|
variant: "danger",
|
|
5696
5720
|
duration: 2800,
|
|
@@ -5701,7 +5725,7 @@ let Me = class extends Fe {
|
|
|
5701
5725
|
await o.json(), Tt.info("c7o: cart/add.js - cart updated"), Tt.info("c7o: reloading window after cart update"), window.location.reload();
|
|
5702
5726
|
}
|
|
5703
5727
|
};
|
|
5704
|
-
Me.styles = [
|
|
5728
|
+
Me.styles = [Gs, Ka, Qa];
|
|
5705
5729
|
Me.DRAG_THRESHOLD_PX = 10;
|
|
5706
5730
|
wt([
|
|
5707
5731
|
x({ type: Object })
|
|
@@ -5710,18 +5734,18 @@ wt([
|
|
|
5710
5734
|
xe(".horizontal-carousel")
|
|
5711
5735
|
], Me.prototype, "_hCarousel", 2);
|
|
5712
5736
|
wt([
|
|
5713
|
-
|
|
5737
|
+
Va()
|
|
5714
5738
|
], Me.prototype, "_canPrev", 2);
|
|
5715
5739
|
wt([
|
|
5716
|
-
|
|
5740
|
+
Va()
|
|
5717
5741
|
], Me.prototype, "_canNext", 2);
|
|
5718
5742
|
Me = wt([
|
|
5719
|
-
|
|
5743
|
+
Z("cb-block")
|
|
5720
5744
|
], Me);
|
|
5721
|
-
var
|
|
5722
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5745
|
+
var Xs = Object.defineProperty, Ys = Object.getOwnPropertyDescriptor, ei = (a, e, t, i) => {
|
|
5746
|
+
for (var s = i > 1 ? void 0 : i ? Ys(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5723
5747
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5724
|
-
return i && s &&
|
|
5748
|
+
return i && s && Xs(e, t, s), s;
|
|
5725
5749
|
};
|
|
5726
5750
|
let Bt = class extends Fe {
|
|
5727
5751
|
constructor() {
|
|
@@ -5746,18 +5770,18 @@ Bt.styles = J`
|
|
|
5746
5770
|
gap: 0.75em; /* vertical rhythm between blocks */
|
|
5747
5771
|
}
|
|
5748
5772
|
`;
|
|
5749
|
-
|
|
5773
|
+
ei([
|
|
5750
5774
|
x({ type: Array })
|
|
5751
5775
|
], Bt.prototype, "blocks", 2);
|
|
5752
|
-
Bt =
|
|
5753
|
-
|
|
5776
|
+
Bt = ei([
|
|
5777
|
+
Z("cb-blocks")
|
|
5754
5778
|
], Bt);
|
|
5755
|
-
var
|
|
5756
|
-
function
|
|
5757
|
-
return
|
|
5779
|
+
var Rt = { exports: {} }, Js = Rt.exports, Pa;
|
|
5780
|
+
function Zs() {
|
|
5781
|
+
return Pa || (Pa = 1, (function(a, e) {
|
|
5758
5782
|
(function(t, i) {
|
|
5759
5783
|
a.exports = i();
|
|
5760
|
-
})(
|
|
5784
|
+
})(Js, (function() {
|
|
5761
5785
|
function t(n, c) {
|
|
5762
5786
|
if (!(n instanceof c)) throw new TypeError("Cannot call a class as a function");
|
|
5763
5787
|
}
|
|
@@ -5803,7 +5827,7 @@ function Js() {
|
|
|
5803
5827
|
return n;
|
|
5804
5828
|
}
|
|
5805
5829
|
function v(n, c) {
|
|
5806
|
-
if ((V(n) || n === window || n === document) && (n = [n]), Pe(n) || Ve(n) || (n = [n]),
|
|
5830
|
+
if ((V(n) || n === window || n === document) && (n = [n]), Pe(n) || Ve(n) || (n = [n]), ua(n) != 0) {
|
|
5807
5831
|
if (Pe(n) && !Ve(n)) for (var l = n.length, d = 0; d < l && c.call(n[d], n[d], d, n) !== !1; d++) ;
|
|
5808
5832
|
else if (Ve(n)) {
|
|
5809
5833
|
for (var h in n) if (ie(n, h) && c.call(n[h], n[h], h, n) === !1) break;
|
|
@@ -5812,24 +5836,24 @@ function Js() {
|
|
|
5812
5836
|
}
|
|
5813
5837
|
function k(n) {
|
|
5814
5838
|
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null, l = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null, d = n[f] = n[f] || [], h = { all: d, evt: null, found: null };
|
|
5815
|
-
return c && l &&
|
|
5839
|
+
return c && l && ua(d) > 0 && v(d, (function(m, g) {
|
|
5816
5840
|
if (m.eventName == c && m.fn.toString() == l.toString()) return h.found = !0, h.evt = g, !1;
|
|
5817
5841
|
})), h;
|
|
5818
5842
|
}
|
|
5819
5843
|
function w(n) {
|
|
5820
|
-
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A,
|
|
5821
|
-
function
|
|
5822
|
-
F(d) && d.call(
|
|
5844
|
+
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A, I = arguments.length > 2 ? arguments[2] : void 0, $ = l || [];
|
|
5845
|
+
function B(q) {
|
|
5846
|
+
F(d) && d.call(I, q, this), y && B.destroy();
|
|
5823
5847
|
}
|
|
5824
|
-
return j($) && ($ = document.querySelectorAll($)),
|
|
5848
|
+
return j($) && ($ = document.querySelectorAll($)), B.destroy = function() {
|
|
5825
5849
|
v($, (function(q) {
|
|
5826
|
-
var D = k(q, n,
|
|
5827
|
-
D.found && D.all.splice(D.evt, 1), q.removeEventListener && q.removeEventListener(n,
|
|
5850
|
+
var D = k(q, n, B);
|
|
5851
|
+
D.found && D.all.splice(D.evt, 1), q.removeEventListener && q.removeEventListener(n, B, S);
|
|
5828
5852
|
}));
|
|
5829
5853
|
}, v($, (function(q) {
|
|
5830
|
-
var D = k(q, n,
|
|
5831
|
-
(q.addEventListener && m && !D.found || !m) && (q.addEventListener(n,
|
|
5832
|
-
})),
|
|
5854
|
+
var D = k(q, n, B);
|
|
5855
|
+
(q.addEventListener && m && !D.found || !m) && (q.addEventListener(n, B, S), D.all.push({ eventName: n, fn: B }));
|
|
5856
|
+
})), B;
|
|
5833
5857
|
}
|
|
5834
5858
|
function _(n, c) {
|
|
5835
5859
|
v(c.split(" "), (function(l) {
|
|
@@ -5841,7 +5865,7 @@ function Js() {
|
|
|
5841
5865
|
return n.classList.remove(l);
|
|
5842
5866
|
}));
|
|
5843
5867
|
}
|
|
5844
|
-
function
|
|
5868
|
+
function E(n, c) {
|
|
5845
5869
|
return n.classList.contains(c);
|
|
5846
5870
|
}
|
|
5847
5871
|
function M(n, c) {
|
|
@@ -5868,13 +5892,13 @@ function Js() {
|
|
|
5868
5892
|
if (c === "") return n.style.webkitTransform = "", n.style.MozTransform = "", n.style.msTransform = "", n.style.OTransform = "", n.style.transform = "", !1;
|
|
5869
5893
|
n.style.webkitTransform = c, n.style.MozTransform = c, n.style.msTransform = c, n.style.OTransform = c, n.style.transform = c;
|
|
5870
5894
|
}
|
|
5871
|
-
function
|
|
5895
|
+
function K(n) {
|
|
5872
5896
|
n.style.display = "block";
|
|
5873
5897
|
}
|
|
5874
|
-
function
|
|
5898
|
+
function U(n) {
|
|
5875
5899
|
n.style.display = "none";
|
|
5876
5900
|
}
|
|
5877
|
-
function
|
|
5901
|
+
function X(n) {
|
|
5878
5902
|
var c = document.createDocumentFragment(), l = document.createElement("div");
|
|
5879
5903
|
for (l.innerHTML = n; l.firstChild; ) c.appendChild(l.firstChild);
|
|
5880
5904
|
return c;
|
|
@@ -5930,7 +5954,7 @@ function Js() {
|
|
|
5930
5954
|
}
|
|
5931
5955
|
}
|
|
5932
5956
|
}
|
|
5933
|
-
function
|
|
5957
|
+
function ge() {
|
|
5934
5958
|
return "navigator" in window && window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i);
|
|
5935
5959
|
}
|
|
5936
5960
|
function F(n) {
|
|
@@ -5957,7 +5981,7 @@ function Js() {
|
|
|
5957
5981
|
function ie(n, c) {
|
|
5958
5982
|
return n !== null && hasOwnProperty.call(n, c);
|
|
5959
5983
|
}
|
|
5960
|
-
function
|
|
5984
|
+
function ua(n) {
|
|
5961
5985
|
if (Ve(n)) {
|
|
5962
5986
|
if (n.keys) return n.keys().length;
|
|
5963
5987
|
var c = 0;
|
|
@@ -5969,7 +5993,7 @@ function Js() {
|
|
|
5969
5993
|
function xt(n) {
|
|
5970
5994
|
return !isNaN(parseFloat(n)) && isFinite(n);
|
|
5971
5995
|
}
|
|
5972
|
-
function
|
|
5996
|
+
function pa() {
|
|
5973
5997
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : -1, c = document.querySelectorAll(".gbtn[data-taborder]:not(.disabled)");
|
|
5974
5998
|
if (!c.length) return !1;
|
|
5975
5999
|
if (c.length == 1) return c[0];
|
|
@@ -5987,7 +6011,7 @@ function Js() {
|
|
|
5987
6011
|
})), g = m.sort()[0];
|
|
5988
6012
|
return document.querySelector('.gbtn[data-taborder="'.concat(g, '"]'));
|
|
5989
6013
|
}
|
|
5990
|
-
function
|
|
6014
|
+
function wi(n) {
|
|
5991
6015
|
if (n.events.hasOwnProperty("keyboard")) return !1;
|
|
5992
6016
|
n.events.keyboard = w("keydown", { onElement: window, withCallback: function(c, l) {
|
|
5993
6017
|
var d = (c = c || window.event).keyCode;
|
|
@@ -6001,16 +6025,16 @@ function Js() {
|
|
|
6001
6025
|
var g = document.querySelectorAll(".gbtn[data-taborder]");
|
|
6002
6026
|
if (!g || g.length <= 0) return;
|
|
6003
6027
|
if (!h) {
|
|
6004
|
-
var y =
|
|
6028
|
+
var y = pa();
|
|
6005
6029
|
return void (y && (y.focus(), _(y, "focused")));
|
|
6006
6030
|
}
|
|
6007
|
-
var A =
|
|
6031
|
+
var A = pa(h.getAttribute("data-taborder"));
|
|
6008
6032
|
P(h, "focused"), A && (A.focus(), _(A, "focused"));
|
|
6009
6033
|
}
|
|
6010
6034
|
d == 39 && n.nextSlide(), d == 37 && n.prevSlide(), d == 27 && n.close();
|
|
6011
6035
|
} });
|
|
6012
6036
|
}
|
|
6013
|
-
var
|
|
6037
|
+
var xi = s((function n(c, l) {
|
|
6014
6038
|
var d = this, h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
|
|
6015
6039
|
if (t(this, n), this.img = c, this.slide = l, this.onclose = h, this.img.setZoomEvents) return !1;
|
|
6016
6040
|
this.active = !1, this.zoomedIn = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.img.addEventListener("mousedown", (function(m) {
|
|
@@ -6052,16 +6076,16 @@ function Js() {
|
|
|
6052
6076
|
n.style.transform = "translate3d(" + c + "px, " + l + "px, 0)";
|
|
6053
6077
|
} }, { key: "widowWidth", value: function() {
|
|
6054
6078
|
return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
|
|
6055
|
-
} }]),
|
|
6079
|
+
} }]), ga = s((function n() {
|
|
6056
6080
|
var c = this, l = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6057
6081
|
t(this, n);
|
|
6058
|
-
var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A,
|
|
6059
|
-
this.el = d, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = m, this.toleranceY = y, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = S, this.instance = $, this.el.addEventListener("mousedown", (function(
|
|
6060
|
-
return c.dragStart(
|
|
6061
|
-
}), !1), this.el.addEventListener("mouseup", (function(
|
|
6062
|
-
return c.dragEnd(
|
|
6063
|
-
}), !1), this.el.addEventListener("mousemove", (function(
|
|
6064
|
-
return c.drag(
|
|
6082
|
+
var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A, I = l.instance, $ = I === void 0 ? null : I;
|
|
6083
|
+
this.el = d, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = m, this.toleranceY = y, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = S, this.instance = $, this.el.addEventListener("mousedown", (function(B) {
|
|
6084
|
+
return c.dragStart(B);
|
|
6085
|
+
}), !1), this.el.addEventListener("mouseup", (function(B) {
|
|
6086
|
+
return c.dragEnd(B);
|
|
6087
|
+
}), !1), this.el.addEventListener("mousemove", (function(B) {
|
|
6088
|
+
return c.drag(B);
|
|
6065
6089
|
}), !1);
|
|
6066
6090
|
}), [{ key: "dragStart", value: function(n) {
|
|
6067
6091
|
if (this.slide.classList.contains("zoomed")) this.active = !1;
|
|
@@ -6104,68 +6128,68 @@ function Js() {
|
|
|
6104
6128
|
var d = arguments.length > 3 && arguments[3] !== void 0 && arguments[3];
|
|
6105
6129
|
n.style.transition = d ? "all .2s ease" : "", n.style.transform = "translate3d(".concat(c, "px, ").concat(l, "px, 0)");
|
|
6106
6130
|
} }]);
|
|
6107
|
-
function
|
|
6131
|
+
function ki(n, c, l, d) {
|
|
6108
6132
|
var h = n.querySelector(".gslide-media"), m = new Image(), g = "gSlideTitle_" + l, y = "gSlideDesc_" + l;
|
|
6109
6133
|
m.addEventListener("load", (function() {
|
|
6110
6134
|
F(d) && d();
|
|
6111
6135
|
}), !1), m.src = c.href, c.sizes != "" && c.srcset != "" && (m.sizes = c.sizes, m.srcset = c.srcset), m.alt = "", be(c.alt) || c.alt === "" || (m.alt = c.alt), c.title !== "" && m.setAttribute("aria-labelledby", g), c.description !== "" && m.setAttribute("aria-describedby", y), c.hasOwnProperty("_hasCustomWidth") && c._hasCustomWidth && (m.style.width = c.width), c.hasOwnProperty("_hasCustomHeight") && c._hasCustomHeight && (m.style.height = c.height), h.insertBefore(m, h.firstChild);
|
|
6112
6136
|
}
|
|
6113
|
-
function
|
|
6137
|
+
function _i(n, c, l, d) {
|
|
6114
6138
|
var h = this, m = n.querySelector(".ginner-container"), g = "gvideo" + l, y = n.querySelector(".gslide-media"), A = this.getAllPlayers();
|
|
6115
|
-
_(m, "gvideo-container"), y.insertBefore(
|
|
6139
|
+
_(m, "gvideo-container"), y.insertBefore(X('<div class="gvideo-wrapper"></div>'), y.firstChild);
|
|
6116
6140
|
var S = n.querySelector(".gvideo-wrapper");
|
|
6117
6141
|
he(this.settings.plyr.css, "Plyr");
|
|
6118
|
-
var
|
|
6142
|
+
var I = c.href, $ = c?.videoProvider, B = !1;
|
|
6119
6143
|
y.style.maxWidth = c.width, he(this.settings.plyr.js, "Plyr", (function() {
|
|
6120
|
-
if (!$ &&
|
|
6144
|
+
if (!$ && I.match(/vimeo\.com\/([0-9]*)/) && ($ = "vimeo"), !$ && (I.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || I.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || I.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/) || I.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)) && ($ = "youtube"), $ === "local" || !$) {
|
|
6121
6145
|
$ = "local";
|
|
6122
6146
|
var q = '<video id="' + g + '" ';
|
|
6123
|
-
q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(
|
|
6147
|
+
q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(I, '">'), B = X(q += "</video>");
|
|
6124
6148
|
}
|
|
6125
|
-
var D =
|
|
6149
|
+
var D = B || X('<div id="'.concat(g, '" data-plyr-provider="').concat($, '" data-plyr-embed-id="').concat(I, '"></div>'));
|
|
6126
6150
|
_(S, "".concat($, "-video gvideo")), S.appendChild(D), S.setAttribute("data-id", g), S.setAttribute("data-index", l);
|
|
6127
|
-
var ee = ie(h.settings.plyr, "config") ? h.settings.plyr.config : {},
|
|
6128
|
-
|
|
6151
|
+
var ee = ie(h.settings.plyr, "config") ? h.settings.plyr.config : {}, me = new Plyr("#" + g, ee);
|
|
6152
|
+
me.on("ready", (function(ue) {
|
|
6129
6153
|
A[g] = ue.detail.plyr, F(d) && d();
|
|
6130
6154
|
})), ae((function() {
|
|
6131
6155
|
return n.querySelector("iframe") && n.querySelector("iframe").dataset.ready == "true";
|
|
6132
6156
|
}), (function() {
|
|
6133
6157
|
h.resize(n);
|
|
6134
|
-
})),
|
|
6158
|
+
})), me.on("enterfullscreen", ma), me.on("exitfullscreen", ma);
|
|
6135
6159
|
}));
|
|
6136
6160
|
}
|
|
6137
|
-
function
|
|
6161
|
+
function ma(n) {
|
|
6138
6162
|
var c = M(n.target, ".gslide-media");
|
|
6139
6163
|
n.type === "enterfullscreen" && _(c, "fullscreen"), n.type === "exitfullscreen" && P(c, "fullscreen");
|
|
6140
6164
|
}
|
|
6141
|
-
function
|
|
6165
|
+
function Si(n, c, l, d) {
|
|
6142
6166
|
var h, m = this, g = n.querySelector(".gslide-media"), y = !(!ie(c, "href") || !c.href) && c.href.split("#").pop().trim(), A = !(!ie(c, "content") || !c.content) && c.content;
|
|
6143
|
-
if (A && (j(A) && (h =
|
|
6167
|
+
if (A && (j(A) && (h = X('<div class="ginlined-content">'.concat(A, "</div>"))), V(A))) {
|
|
6144
6168
|
A.style.display == "none" && (A.style.display = "block");
|
|
6145
6169
|
var S = document.createElement("div");
|
|
6146
6170
|
S.className = "ginlined-content", S.appendChild(A), h = S;
|
|
6147
6171
|
}
|
|
6148
6172
|
if (y) {
|
|
6149
|
-
var
|
|
6150
|
-
if (!
|
|
6151
|
-
var $ =
|
|
6173
|
+
var I = document.getElementById(y);
|
|
6174
|
+
if (!I) return !1;
|
|
6175
|
+
var $ = I.cloneNode(!0);
|
|
6152
6176
|
$.style.height = c.height, $.style.maxWidth = c.width, _($, "ginlined-content"), h = $;
|
|
6153
6177
|
}
|
|
6154
6178
|
if (!h) return console.error("Unable to append inline slide content", c), !1;
|
|
6155
|
-
g.style.height = c.height, g.style.width = c.width, g.appendChild(h), this.events["inlineclose" + y] = w("click", { onElement: g.querySelectorAll(".gtrigger-close"), withCallback: function(
|
|
6156
|
-
|
|
6179
|
+
g.style.height = c.height, g.style.width = c.width, g.appendChild(h), this.events["inlineclose" + y] = w("click", { onElement: g.querySelectorAll(".gtrigger-close"), withCallback: function(B) {
|
|
6180
|
+
B.preventDefault(), m.close();
|
|
6157
6181
|
} }), F(d) && d();
|
|
6158
6182
|
}
|
|
6159
|
-
function
|
|
6183
|
+
function Ci(n, c, l, d) {
|
|
6160
6184
|
var h = n.querySelector(".gslide-media"), m = (function(g) {
|
|
6161
|
-
var y = g.url, A = g.allow, S = g.callback,
|
|
6185
|
+
var y = g.url, A = g.allow, S = g.callback, I = g.appendTo, $ = document.createElement("iframe");
|
|
6162
6186
|
return $.className = "vimeo-video gvideo", $.src = y, $.style.width = "100%", $.style.height = "100%", A && $.setAttribute("allow", A), $.onload = function() {
|
|
6163
6187
|
$.onload = null, _($, "node-ready"), F(S) && S();
|
|
6164
|
-
},
|
|
6188
|
+
}, I && I.appendChild($), $;
|
|
6165
6189
|
})({ url: c.href, callback: d });
|
|
6166
6190
|
h.parentNode.style.maxWidth = c.width, h.parentNode.style.height = c.height, h.appendChild(m);
|
|
6167
6191
|
}
|
|
6168
|
-
var
|
|
6192
|
+
var Ai = s((function n() {
|
|
6169
6193
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6170
6194
|
t(this, n), this.defaults = { href: "", sizes: "", srcset: "", title: "", type: "", videoProvider: "", description: "", alt: "", descPosition: "bottom", effect: "", width: "", height: "", content: !1, zoomable: !0, draggable: !0 }, Ve(c) && (this.defaults = p(this.defaults, c));
|
|
6171
6195
|
}), [{ key: "sourceType", value: function(n) {
|
|
@@ -6193,11 +6217,11 @@ function Js() {
|
|
|
6193
6217
|
be(S) || S === "" || (d.title = S);
|
|
6194
6218
|
}
|
|
6195
6219
|
} else {
|
|
6196
|
-
var
|
|
6220
|
+
var I = [];
|
|
6197
6221
|
v(d, (function(q, D) {
|
|
6198
|
-
|
|
6199
|
-
})),
|
|
6200
|
-
var ee = g,
|
|
6222
|
+
I.push(";\\s?" + D);
|
|
6223
|
+
})), I = I.join("\\s?:|"), g.trim() !== "" && v(d, (function(q, D) {
|
|
6224
|
+
var ee = g, me = new RegExp("s?" + D + "s?:s?(.*?)(" + I + "s?:|$)"), ue = ee.match(me);
|
|
6201
6225
|
if (ue && ue.length && ue[1]) {
|
|
6202
6226
|
var Le = ue[1].trim().replace(/;\s*$/, "");
|
|
6203
6227
|
d[D] = l.sanitizeValue(Le);
|
|
@@ -6214,8 +6238,8 @@ function Js() {
|
|
|
6214
6238
|
$ && (d.description = $);
|
|
6215
6239
|
}
|
|
6216
6240
|
if (!d.description) {
|
|
6217
|
-
var
|
|
6218
|
-
|
|
6241
|
+
var B = n.querySelector(".glightbox-desc");
|
|
6242
|
+
B && (d.description = B.innerHTML);
|
|
6219
6243
|
}
|
|
6220
6244
|
return this.setSize(d, c, n), this.slideConfig = d, d;
|
|
6221
6245
|
} }, { key: "setSize", value: function(n, c) {
|
|
@@ -6229,21 +6253,21 @@ function Js() {
|
|
|
6229
6253
|
t(this, n), this.element = c, this.instance = l, this.index = d;
|
|
6230
6254
|
}), [{ key: "setContent", value: function() {
|
|
6231
6255
|
var n = this, c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null, l = arguments.length > 1 && arguments[1] !== void 0 && arguments[1];
|
|
6232
|
-
if (
|
|
6233
|
-
var d = this.instance.settings, h = this.slideConfig, m =
|
|
6256
|
+
if (E(c, "loaded")) return !1;
|
|
6257
|
+
var d = this.instance.settings, h = this.slideConfig, m = ge();
|
|
6234
6258
|
F(d.beforeSlideLoad) && d.beforeSlideLoad({ index: this.index, slide: c, player: !1 });
|
|
6235
|
-
var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"),
|
|
6236
|
-
if (F(d.afterSlideLoad) && (
|
|
6259
|
+
var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"), I = c.querySelector(".gslide-desc"), $ = c.querySelector(".gdesc-inner"), B = l, q = "gSlideTitle_" + this.index, D = "gSlideDesc_" + this.index;
|
|
6260
|
+
if (F(d.afterSlideLoad) && (B = function() {
|
|
6237
6261
|
F(l) && l(), d.afterSlideLoad({ index: n.index, slide: c, player: n.instance.getSlidePlayerInstance(n.index) });
|
|
6238
|
-
}), h.title == "" && h.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && h.title !== "" ? (S.id = q, S.innerHTML = h.title) : S.parentNode.removeChild(S),
|
|
6239
|
-
if (g !== "external") return g === "inline" ? (
|
|
6262
|
+
}), h.title == "" && h.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && h.title !== "" ? (S.id = q, S.innerHTML = h.title) : S.parentNode.removeChild(S), I && h.description !== "" ? (I.id = D, m && d.moreLength > 0 ? (h.smallDescription = this.slideShortDesc(h.description, d.moreLength, d.moreText), I.innerHTML = h.smallDescription, this.descriptionEvents(I, h)) : I.innerHTML = h.description) : I.parentNode.removeChild(I), _(A.parentNode, "desc-".concat(y)), _($.parentNode, "description-".concat(y))), _(A, "gslide-".concat(g)), _(c, "loaded"), g !== "video") {
|
|
6263
|
+
if (g !== "external") return g === "inline" ? (Si.apply(this.instance, [c, h, this.index, B]), void (h.draggable && new ga({ dragEl: c.querySelector(".gslide-inline"), toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: this.instance }))) : void (g !== "image" ? F(B) && B() : ki(c, h, this.index, (function() {
|
|
6240
6264
|
var ee = c.querySelector("img");
|
|
6241
|
-
h.draggable && new
|
|
6265
|
+
h.draggable && new ga({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), h.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new xi(ee, c, (function() {
|
|
6242
6266
|
n.instance.resize();
|
|
6243
|
-
}))), F(
|
|
6267
|
+
}))), F(B) && B();
|
|
6244
6268
|
})));
|
|
6245
|
-
|
|
6246
|
-
} else
|
|
6269
|
+
Ci.apply(this, [c, h, this.index, B]);
|
|
6270
|
+
} else _i.apply(this.instance, [c, h, this.index, B]);
|
|
6247
6271
|
} }, { key: "slideShortDesc", value: function(n) {
|
|
6248
6272
|
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 50, l = arguments.length > 2 && arguments[2] !== void 0 && arguments[2], d = document.createElement("div");
|
|
6249
6273
|
d.innerHTML = n;
|
|
@@ -6259,23 +6283,23 @@ function Js() {
|
|
|
6259
6283
|
var g = document.body, y = M(m, ".gslide-desc");
|
|
6260
6284
|
if (!y) return !1;
|
|
6261
6285
|
y.innerHTML = c.description, _(g, "gdesc-open");
|
|
6262
|
-
var A = w("click", { onElement: [g, M(y, ".gslide-description")], withCallback: function(S,
|
|
6286
|
+
var A = w("click", { onElement: [g, M(y, ".gslide-description")], withCallback: function(S, I) {
|
|
6263
6287
|
S.target.nodeName.toLowerCase() !== "a" && (P(g, "gdesc-open"), _(g, "gdesc-closed"), y.innerHTML = c.smallDescription, l.descriptionEvents(y, c), setTimeout((function() {
|
|
6264
6288
|
P(g, "gdesc-closed");
|
|
6265
6289
|
}), 400), A.destroy());
|
|
6266
6290
|
} });
|
|
6267
6291
|
} });
|
|
6268
6292
|
} }, { key: "create", value: function() {
|
|
6269
|
-
return
|
|
6293
|
+
return X(this.instance.settings.slideHTML);
|
|
6270
6294
|
} }, { key: "getConfig", value: function() {
|
|
6271
6295
|
V(this.element) || this.element.hasOwnProperty("draggable") || (this.element.draggable = this.instance.settings.draggable);
|
|
6272
|
-
var n = new
|
|
6296
|
+
var n = new Ai(this.instance.settings.slideExtraAttributes);
|
|
6273
6297
|
return this.slideConfig = n.parseConfig(this.element, this.instance.settings), this.slideConfig;
|
|
6274
6298
|
} }]);
|
|
6275
6299
|
function _t(n) {
|
|
6276
6300
|
return Math.sqrt(n.x * n.x + n.y * n.y);
|
|
6277
6301
|
}
|
|
6278
|
-
function
|
|
6302
|
+
function Mi(n, c) {
|
|
6279
6303
|
var l = (function(d, h) {
|
|
6280
6304
|
var m = _t(d) * _t(h);
|
|
6281
6305
|
if (m === 0) return 0;
|
|
@@ -6288,7 +6312,7 @@ function Js() {
|
|
|
6288
6312
|
return d.x * h.y - h.x * d.y;
|
|
6289
6313
|
})(n, c) > 0 && (l *= -1), 180 * l / Math.PI;
|
|
6290
6314
|
}
|
|
6291
|
-
var
|
|
6315
|
+
var Ti = s((function n(c) {
|
|
6292
6316
|
t(this, n), this.handlers = [], this.el = c;
|
|
6293
6317
|
}), [{ key: "add", value: function(n) {
|
|
6294
6318
|
this.handlers.push(n);
|
|
@@ -6302,10 +6326,10 @@ function Js() {
|
|
|
6302
6326
|
}
|
|
6303
6327
|
} }]);
|
|
6304
6328
|
function le(n, c) {
|
|
6305
|
-
var l = new
|
|
6329
|
+
var l = new Ti(n);
|
|
6306
6330
|
return l.add(c), l;
|
|
6307
6331
|
}
|
|
6308
|
-
var
|
|
6332
|
+
var Ii = s((function n(c, l) {
|
|
6309
6333
|
t(this, n), this.element = typeof c == "string" ? document.querySelector(c) : c, this.start = this.start.bind(this), this.move = this.move.bind(this), this.end = this.end.bind(this), this.cancel = this.cancel.bind(this), this.element.addEventListener("touchstart", this.start, !1), this.element.addEventListener("touchmove", this.move, !1), this.element.addEventListener("touchend", this.end, !1), this.element.addEventListener("touchcancel", this.cancel, !1), this.preV = { x: null, y: null }, this.pinchStartLen = null, this.zoom = 1, this.isDoubleTap = !1;
|
|
6310
6334
|
var d = function() {
|
|
6311
6335
|
};
|
|
@@ -6329,7 +6353,7 @@ function Js() {
|
|
|
6329
6353
|
var c = this.preV, l = n.touches.length, d = n.touches[0].pageX, h = n.touches[0].pageY;
|
|
6330
6354
|
if (this.isDoubleTap = !1, l > 1) {
|
|
6331
6355
|
var m = n.touches[1].pageX, g = n.touches[1].pageY, y = { x: n.touches[1].pageX - d, y: n.touches[1].pageY - h };
|
|
6332
|
-
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle =
|
|
6356
|
+
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle = Mi(y, c), this.rotate.dispatch(n, this.element)), c.x = y.x, c.y = y.y, this.x2 !== null && this.sx2 !== null ? (n.deltaX = (d - this.x2 + m - this.sx2) / 2, n.deltaY = (h - this.y2 + g - this.sy2) / 2) : (n.deltaX = 0, n.deltaY = 0), this.twoFingerPressMove.dispatch(n, this.element), this.sx2 = m, this.sy2 = g;
|
|
6333
6357
|
} else {
|
|
6334
6358
|
if (this.x2 !== null) {
|
|
6335
6359
|
n.deltaX = d - this.x2, n.deltaY = h - this.y2;
|
|
@@ -6369,38 +6393,38 @@ function Js() {
|
|
|
6369
6393
|
} }, { key: "destroy", value: function() {
|
|
6370
6394
|
return this.singleTapTimeout && clearTimeout(this.singleTapTimeout), this.tapTimeout && clearTimeout(this.tapTimeout), this.longTapTimeout && clearTimeout(this.longTapTimeout), this.swipeTimeout && clearTimeout(this.swipeTimeout), this.element.removeEventListener("touchstart", this.start), this.element.removeEventListener("touchmove", this.move), this.element.removeEventListener("touchend", this.end), this.element.removeEventListener("touchcancel", this.cancel), this.rotate.del(), this.touchStart.del(), this.multipointStart.del(), this.multipointEnd.del(), this.pinch.del(), this.swipe.del(), this.tap.del(), this.doubleTap.del(), this.longTap.del(), this.singleTap.del(), this.pressMove.del(), this.twoFingerPressMove.del(), this.touchMove.del(), this.touchEnd.del(), this.touchCancel.del(), this.preV = this.pinchStartLen = this.zoom = this.isDoubleTap = this.delta = this.last = this.now = this.tapTimeout = this.singleTapTimeout = this.longTapTimeout = this.swipeTimeout = this.x1 = this.x2 = this.y1 = this.y2 = this.preTapPosition = this.rotate = this.touchStart = this.multipointStart = this.multipointEnd = this.pinch = this.swipe = this.tap = this.doubleTap = this.longTap = this.singleTap = this.pressMove = this.touchMove = this.touchEnd = this.touchCancel = this.twoFingerPressMove = null, window.removeEventListener("scroll", this._cancelAllHandler), null;
|
|
6371
6395
|
} }]);
|
|
6372
|
-
function
|
|
6396
|
+
function Ut(n) {
|
|
6373
6397
|
var c = (function() {
|
|
6374
6398
|
var g, y = document.createElement("fakeelement"), A = { transition: "transitionend", OTransition: "oTransitionEnd", MozTransition: "transitionend", WebkitTransition: "webkitTransitionEnd" };
|
|
6375
6399
|
for (g in A) if (y.style[g] !== void 0) return A[g];
|
|
6376
|
-
})(), l = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, d =
|
|
6400
|
+
})(), l = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, d = E(n, "gslide-media") ? n : n.querySelector(".gslide-media"), h = M(d, ".ginner-container"), m = n.querySelector(".gslide-description");
|
|
6377
6401
|
l > 769 && (d = h), _(d, "greset"), C(d, "translate3d(0, 0, 0)"), w(c, { onElement: d, once: !0, withCallback: function(g, y) {
|
|
6378
6402
|
P(d, "greset");
|
|
6379
6403
|
} }), d.style.opacity = "", m && (m.style.opacity = "");
|
|
6380
6404
|
}
|
|
6381
|
-
function
|
|
6405
|
+
function Ei(n) {
|
|
6382
6406
|
if (n.events.hasOwnProperty("touch")) return !1;
|
|
6383
|
-
var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null,
|
|
6384
|
-
if (y = !0, (
|
|
6385
|
-
if (Se =
|
|
6386
|
-
|
|
6407
|
+
var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null, I = null, $ = !1, B = 1, q = 1, D = !1, ee = !1, me = null, ue = null, Le = null, oe = null, Re = 0, ze = 0, ht = !1, rt = !1, _e = {}, Se = {}, xa = 0, ka = 0, Li = document.getElementById("glightbox-slider"), St = document.querySelector(".goverlay"), Ri = new Ii(Li, { touchStart: function(Y) {
|
|
6408
|
+
if (y = !0, (E(Y.targetTouches[0].target, "ginner-container") || M(Y.targetTouches[0].target, ".gslide-desc") || Y.targetTouches[0].target.nodeName.toLowerCase() == "a") && (y = !1), M(Y.targetTouches[0].target, ".gslide-inline") && !E(Y.targetTouches[0].target.parentNode, "gslide-inline") && (y = !1), y) {
|
|
6409
|
+
if (Se = Y.targetTouches[0], _e.pageX = Y.targetTouches[0].pageX, _e.pageY = Y.targetTouches[0].pageY, xa = Y.targetTouches[0].clientX, ka = Y.targetTouches[0].clientY, A = n.activeSlide, S = A.querySelector(".gslide-media"), d = A.querySelector(".gslide-inline"), I = null, E(S, "gslide-image") && (I = S.querySelector("img")), (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) > 769 && (S = A.querySelector(".ginner-container")), P(St, "greset"), Y.pageX > 20 && Y.pageX < window.innerWidth - 20) return;
|
|
6410
|
+
Y.preventDefault();
|
|
6387
6411
|
}
|
|
6388
|
-
}, touchMove: function(
|
|
6389
|
-
if (y && (Se =
|
|
6412
|
+
}, touchMove: function(Y) {
|
|
6413
|
+
if (y && (Se = Y.targetTouches[0], !D && !ee)) {
|
|
6390
6414
|
if (d && d.offsetHeight > g) {
|
|
6391
6415
|
var de = _e.pageX - Se.pageX;
|
|
6392
6416
|
if (Math.abs(de) <= 13) return !1;
|
|
6393
6417
|
}
|
|
6394
6418
|
$ = !0;
|
|
6395
|
-
var
|
|
6396
|
-
if (Math.abs(
|
|
6419
|
+
var Ne, Ct = Y.targetTouches[0].clientX, zi = Y.targetTouches[0].clientY, Oi = xa - Ct, Bi = ka - zi;
|
|
6420
|
+
if (Math.abs(Oi) > Math.abs(Bi) ? (ht = !1, rt = !0) : (rt = !1, ht = !0), c = Se.pageX - _e.pageX, Re = 100 * c / m, l = Se.pageY - _e.pageY, ze = 100 * l / g, ht && I && (Ne = 1 - Math.abs(l) / g, St.style.opacity = Ne, n.settings.touchFollowAxis && (Re = 0)), rt && (Ne = 1 - Math.abs(c) / m, S.style.opacity = Ne, n.settings.touchFollowAxis && (ze = 0)), !I) return C(S, "translate3d(".concat(Re, "%, 0, 0)"));
|
|
6397
6421
|
C(S, "translate3d(".concat(Re, "%, ").concat(ze, "%, 0)"));
|
|
6398
6422
|
}
|
|
6399
6423
|
}, touchEnd: function() {
|
|
6400
6424
|
if (y) {
|
|
6401
|
-
if ($ = !1, ee || D) return Le =
|
|
6402
|
-
var
|
|
6403
|
-
if (!(
|
|
6425
|
+
if ($ = !1, ee || D) return Le = me, void (oe = ue);
|
|
6426
|
+
var Y = Math.abs(parseInt(ze)), de = Math.abs(parseInt(Re));
|
|
6427
|
+
if (!(Y > 29 && I)) return Y < 29 && de < 25 ? (_(St, "greset"), St.style.opacity = 1, Ut(S)) : void 0;
|
|
6404
6428
|
n.close();
|
|
6405
6429
|
}
|
|
6406
6430
|
}, multipointEnd: function() {
|
|
@@ -6408,36 +6432,36 @@ function Js() {
|
|
|
6408
6432
|
D = !1;
|
|
6409
6433
|
}), 50);
|
|
6410
6434
|
}, multipointStart: function() {
|
|
6411
|
-
D = !0,
|
|
6412
|
-
}, pinch: function(
|
|
6413
|
-
if (!
|
|
6414
|
-
D = !0,
|
|
6415
|
-
var de =
|
|
6416
|
-
if (ee = !0, de <= 1) return ee = !1, de = 1, oe = null, Le = null,
|
|
6417
|
-
de > 4.5 && (de = 4.5),
|
|
6418
|
-
}, pressMove: function(
|
|
6435
|
+
D = !0, B = q || 1;
|
|
6436
|
+
}, pinch: function(Y) {
|
|
6437
|
+
if (!I || $) return !1;
|
|
6438
|
+
D = !0, I.scaleX = I.scaleY = B * Y.zoom;
|
|
6439
|
+
var de = B * Y.zoom;
|
|
6440
|
+
if (ee = !0, de <= 1) return ee = !1, de = 1, oe = null, Le = null, me = null, ue = null, void I.setAttribute("style", "");
|
|
6441
|
+
de > 4.5 && (de = 4.5), I.style.transform = "scale3d(".concat(de, ", ").concat(de, ", 1)"), q = de;
|
|
6442
|
+
}, pressMove: function(Y) {
|
|
6419
6443
|
if (ee && !D) {
|
|
6420
|
-
var de = Se.pageX - _e.pageX,
|
|
6421
|
-
Le && (de += Le), oe && (
|
|
6422
|
-
var Ct = "translate3d(".concat(de, "px, ").concat(
|
|
6423
|
-
q && (Ct += " scale3d(".concat(q, ", ").concat(q, ", 1)")), C(
|
|
6444
|
+
var de = Se.pageX - _e.pageX, Ne = Se.pageY - _e.pageY;
|
|
6445
|
+
Le && (de += Le), oe && (Ne += oe), me = de, ue = Ne;
|
|
6446
|
+
var Ct = "translate3d(".concat(de, "px, ").concat(Ne, "px, 0)");
|
|
6447
|
+
q && (Ct += " scale3d(".concat(q, ", ").concat(q, ", 1)")), C(I, Ct);
|
|
6424
6448
|
}
|
|
6425
|
-
}, swipe: function(
|
|
6449
|
+
}, swipe: function(Y) {
|
|
6426
6450
|
if (!ee) if (D) D = !1;
|
|
6427
6451
|
else {
|
|
6428
|
-
if (
|
|
6429
|
-
if (n.index == n.elements.length - 1) return
|
|
6452
|
+
if (Y.direction == "Left") {
|
|
6453
|
+
if (n.index == n.elements.length - 1) return Ut(S);
|
|
6430
6454
|
n.nextSlide();
|
|
6431
6455
|
}
|
|
6432
|
-
if (
|
|
6433
|
-
if (n.index == 0) return
|
|
6456
|
+
if (Y.direction == "Right") {
|
|
6457
|
+
if (n.index == 0) return Ut(S);
|
|
6434
6458
|
n.prevSlide();
|
|
6435
6459
|
}
|
|
6436
6460
|
}
|
|
6437
6461
|
} });
|
|
6438
|
-
n.events.touch =
|
|
6462
|
+
n.events.touch = Ri;
|
|
6439
6463
|
}
|
|
6440
|
-
var
|
|
6464
|
+
var ya = ge(), va = ge() !== null || document.createTouch !== void 0 || "ontouchstart" in window || "onmsgesturechange" in window || navigator.msMaxTouchPoints, wa = document.getElementsByTagName("html")[0], $i = { selector: ".glightbox", elements: null, skin: "clean", theme: "clean", closeButton: !0, startAt: null, autoplayVideos: !0, autofocusVideos: !0, descPosition: "bottom", width: "900px", height: "506px", videosWidth: "960px", beforeSlideChange: null, afterSlideChange: null, beforeSlideLoad: null, afterSlideLoad: null, slideInserted: null, slideRemoved: null, slideExtraAttributes: null, onOpen: null, onClose: null, loop: !1, zoomable: !0, draggable: !0, dragAutoSnap: !1, dragToleranceX: 40, dragToleranceY: 65, preload: !0, oneSlidePerOpen: !1, touchNavigation: !0, touchFollowAxis: !0, keyboardNavigation: !0, closeOnOutsideClick: !0, plugins: !1, plyr: { css: "https://cdn.plyr.io/3.6.12/plyr.css", js: "https://cdn.plyr.io/3.6.12/plyr.js", config: { ratio: "16:9", fullscreen: { enabled: !0, iosNative: !0 }, youtube: { noCookie: !0, rel: 0, showinfo: 0, iv_load_policy: 3 }, vimeo: { byline: !1, portrait: !1, title: !1, transparent: !1 } } }, openEffect: "zoom", closeEffect: "zoom", slideEffect: "slide", moreText: "See more", moreLength: 60, cssEfects: { fade: { in: "fadeIn", out: "fadeOut" }, zoom: { in: "zoomIn", out: "zoomOut" }, slide: { in: "slideInRight", out: "slideOutLeft" }, slideBack: { in: "slideInLeft", out: "slideOutRight" }, none: { in: "none", out: "none" } }, svg: { close: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>', next: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>', prev: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>' }, slideHTML: `<div class="gslide">
|
|
6441
6465
|
<div class="gslide-inner-content">
|
|
6442
6466
|
<div class="ginner-container">
|
|
6443
6467
|
<div class="gslide-media">
|
|
@@ -6459,9 +6483,9 @@ function Js() {
|
|
|
6459
6483
|
<button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>
|
|
6460
6484
|
<button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>
|
|
6461
6485
|
</div>
|
|
6462
|
-
</div>` },
|
|
6486
|
+
</div>` }, Pi = s((function n() {
|
|
6463
6487
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6464
|
-
t(this, n), this.customOptions = c, this.settings = p(
|
|
6488
|
+
t(this, n), this.customOptions = c, this.settings = p($i, c), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;
|
|
6465
6489
|
}), [{ key: "init", value: function() {
|
|
6466
6490
|
var n = this, c = this.getSelector();
|
|
6467
6491
|
c && (this.baseEvents = w("click", { onElement: c, withCallback: function(l, d) {
|
|
@@ -6482,30 +6506,30 @@ function Js() {
|
|
|
6482
6506
|
var g = document.createElement("style");
|
|
6483
6507
|
g.type = "text/css", g.className = "gcss-styles", g.innerText = ".gscrollbar-fixer {margin-right: ".concat(m, "px}"), document.head.appendChild(g), _(h, "gscrollbar-fixer");
|
|
6484
6508
|
}
|
|
6485
|
-
_(h, "glightbox-open"), _(
|
|
6509
|
+
_(h, "glightbox-open"), _(wa, "glightbox-open"), ya && (_(document.body, "glightbox-mobile"), this.settings.slideEffect = "slide"), this.showSlide(l, !0), this.elements.length === 1 ? (_(this.prevButton, "glightbox-button-hidden"), _(this.nextButton, "glightbox-button-hidden")) : (P(this.prevButton, "glightbox-button-hidden"), P(this.nextButton, "glightbox-button-hidden")), this.lightboxOpen = !0, this.trigger("open"), F(this.settings.onOpen) && this.settings.onOpen(), va && this.settings.touchNavigation && Ei(this), this.settings.keyboardNavigation && wi(this);
|
|
6486
6510
|
} }, { key: "openAt", value: function() {
|
|
6487
6511
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
|
|
6488
6512
|
this.open(null, n);
|
|
6489
6513
|
} }, { key: "showSlide", value: function() {
|
|
6490
6514
|
var n = this, c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0, l = arguments.length > 1 && arguments[1] !== void 0 && arguments[1];
|
|
6491
|
-
|
|
6515
|
+
K(this.loader), this.index = parseInt(c);
|
|
6492
6516
|
var d = this.slidesContainer.querySelector(".current");
|
|
6493
6517
|
d && P(d, "current"), this.slideAnimateOut();
|
|
6494
6518
|
var h = this.slidesContainer.querySelectorAll(".gslide")[c];
|
|
6495
|
-
if (
|
|
6519
|
+
if (E(h, "loaded")) this.slideAnimateIn(h, l), U(this.loader);
|
|
6496
6520
|
else {
|
|
6497
|
-
|
|
6521
|
+
K(this.loader);
|
|
6498
6522
|
var m = this.elements[c], g = { index: this.index, slide: h, slideNode: h, slideConfig: m.slideConfig, slideIndex: this.index, trigger: m.node, player: null };
|
|
6499
6523
|
this.trigger("slide_before_load", g), m.instance.setContent(h, (function() {
|
|
6500
|
-
|
|
6524
|
+
U(n.loader), n.resize(), n.slideAnimateIn(h, l), n.trigger("slide_after_load", g);
|
|
6501
6525
|
}));
|
|
6502
6526
|
}
|
|
6503
|
-
this.slideDescription = h.querySelector(".gslide-description"), this.slideDescriptionContained = this.slideDescription &&
|
|
6527
|
+
this.slideDescription = h.querySelector(".gslide-description"), this.slideDescriptionContained = this.slideDescription && E(this.slideDescription.parentNode, "gslide-media"), this.settings.preload && (this.preloadSlide(c + 1), this.preloadSlide(c - 1)), this.updateNavigationClasses(), this.activeSlide = h;
|
|
6504
6528
|
} }, { key: "preloadSlide", value: function(n) {
|
|
6505
6529
|
var c = this;
|
|
6506
6530
|
if (n < 0 || n > this.elements.length - 1 || be(this.elements[n])) return !1;
|
|
6507
6531
|
var l = this.slidesContainer.querySelectorAll(".gslide")[n];
|
|
6508
|
-
if (
|
|
6532
|
+
if (E(l, "loaded")) return !1;
|
|
6509
6533
|
var d = this.elements[n], h = d.type, m = { index: n, slide: l, slideNode: l, slideConfig: d.slideConfig, slideIndex: n, trigger: d.node, player: null };
|
|
6510
6534
|
this.trigger("slide_before_load", m), h === "video" || h === "external" ? setTimeout((function() {
|
|
6511
6535
|
d.instance.setContent(l, (function() {
|
|
@@ -6544,7 +6568,7 @@ function Js() {
|
|
|
6544
6568
|
c && (this.getActiveSlideIndex() == n && (n == this.elements.length - 1 ? this.prevSlide() : this.nextSlide()), c.parentNode.removeChild(c)), this.elements.splice(n, 1), this.trigger("slide_removed", n), F(this.settings.slideRemoved) && this.settings.slideRemoved(n);
|
|
6545
6569
|
} }, { key: "slideAnimateIn", value: function(n, c) {
|
|
6546
6570
|
var l = this, d = n.querySelector(".gslide-media"), h = n.querySelector(".gslide-description"), m = { index: this.prevActiveSlideIndex, slide: this.prevActiveSlide, slideNode: this.prevActiveSlide, slideIndex: this.prevActiveSlide, slideConfig: be(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig, trigger: be(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node, player: this.getSlidePlayerInstance(this.prevActiveSlideIndex) }, g = { index: this.index, slide: this.activeSlide, slideNode: this.activeSlide, slideConfig: this.elements[this.index].slideConfig, slideIndex: this.index, trigger: this.elements[this.index].node, player: this.getSlidePlayerInstance(this.index) };
|
|
6547
|
-
if (d.offsetWidth > 0 && h && (
|
|
6571
|
+
if (d.offsetWidth > 0 && h && (U(h), h.style.display = ""), P(n, this.effectsClasses), c) L(n, this.settings.cssEfects[this.settings.openEffect].in, (function() {
|
|
6548
6572
|
l.settings.autoplayVideos && l.slidePlayerPlay(n), l.trigger("slide_changed", { prev: m, current: g }), F(l.settings.afterSlideChange) && l.settings.afterSlideChange.apply(l, [m, g]);
|
|
6549
6573
|
}));
|
|
6550
6574
|
else {
|
|
@@ -6595,7 +6619,7 @@ function Js() {
|
|
|
6595
6619
|
l && !l.playing && l.play();
|
|
6596
6620
|
} }, { key: "slidePlayerPlay", value: function(n) {
|
|
6597
6621
|
var c;
|
|
6598
|
-
if (!
|
|
6622
|
+
if (!ya || (c = this.settings.plyr.config) !== null && c !== void 0 && c.muted) {
|
|
6599
6623
|
if (V(n)) {
|
|
6600
6624
|
var l = n.querySelector(".gvideo-wrapper");
|
|
6601
6625
|
l && (n = l.getAttribute("data-index"));
|
|
@@ -6611,7 +6635,7 @@ function Js() {
|
|
|
6611
6635
|
var m = new kt(d, c, h), g = m.getConfig(), y = p({}, g);
|
|
6612
6636
|
y.slideConfig = g, y.instance = m, y.index = h, l.push(y);
|
|
6613
6637
|
})), this.elements = l, this.lightboxOpen && (this.slidesContainer.innerHTML = "", this.elements.length && (v(this.elements, (function() {
|
|
6614
|
-
var d =
|
|
6638
|
+
var d = X(c.settings.slideHTML);
|
|
6615
6639
|
c.slidesContainer.appendChild(d);
|
|
6616
6640
|
})), this.showSlide(0, !0)));
|
|
6617
6641
|
} }, { key: "getElementIndex", value: function(n) {
|
|
@@ -6655,41 +6679,41 @@ function Js() {
|
|
|
6655
6679
|
S.parentNode == document.body && S.nodeName.charAt(0) !== "#" && S.hasAttribute && !S.hasAttribute("aria-hidden") && (l.push(S), S.setAttribute("aria-hidden", "true"));
|
|
6656
6680
|
}));
|
|
6657
6681
|
var d = ie(this.settings.svg, "next") ? this.settings.svg.next : "", h = ie(this.settings.svg, "prev") ? this.settings.svg.prev : "", m = ie(this.settings.svg, "close") ? this.settings.svg.close : "", g = this.settings.lightboxHTML;
|
|
6658
|
-
g =
|
|
6682
|
+
g = X(g = (g = (g = g.replace(/{nextSVG}/g, d)).replace(/{prevSVG}/g, h)).replace(/{closeSVG}/g, m)), document.body.appendChild(g);
|
|
6659
6683
|
var y = document.getElementById("glightbox-body");
|
|
6660
6684
|
this.modal = y;
|
|
6661
6685
|
var A = y.querySelector(".gclose");
|
|
6662
|
-
this.prevButton = y.querySelector(".gprev"), this.nextButton = y.querySelector(".gnext"), this.overlay = y.querySelector(".goverlay"), this.loader = y.querySelector(".gloader"), this.slidesContainer = document.getElementById("glightbox-slider"), this.bodyHiddenChildElms = l, this.events = {}, _(this.modal, "glightbox-" + this.settings.skin), this.settings.closeButton && A && (this.events.close = w("click", { onElement: A, withCallback: function(S,
|
|
6686
|
+
this.prevButton = y.querySelector(".gprev"), this.nextButton = y.querySelector(".gnext"), this.overlay = y.querySelector(".goverlay"), this.loader = y.querySelector(".gloader"), this.slidesContainer = document.getElementById("glightbox-slider"), this.bodyHiddenChildElms = l, this.events = {}, _(this.modal, "glightbox-" + this.settings.skin), this.settings.closeButton && A && (this.events.close = w("click", { onElement: A, withCallback: function(S, I) {
|
|
6663
6687
|
S.preventDefault(), n.close();
|
|
6664
|
-
} })), A && !this.settings.closeButton && A.parentNode.removeChild(A), this.nextButton && (this.events.next = w("click", { onElement: this.nextButton, withCallback: function(S,
|
|
6688
|
+
} })), A && !this.settings.closeButton && A.parentNode.removeChild(A), this.nextButton && (this.events.next = w("click", { onElement: this.nextButton, withCallback: function(S, I) {
|
|
6665
6689
|
S.preventDefault(), n.nextSlide();
|
|
6666
|
-
} })), this.prevButton && (this.events.prev = w("click", { onElement: this.prevButton, withCallback: function(S,
|
|
6690
|
+
} })), this.prevButton && (this.events.prev = w("click", { onElement: this.prevButton, withCallback: function(S, I) {
|
|
6667
6691
|
S.preventDefault(), n.prevSlide();
|
|
6668
|
-
} })), this.settings.closeOnOutsideClick && (this.events.outClose = w("click", { onElement: y, withCallback: function(S,
|
|
6669
|
-
n.preventOutsideClick ||
|
|
6670
|
-
} })), v(this.elements, (function(S,
|
|
6671
|
-
n.slidesContainer.appendChild(S.instance.create()), S.slideNode = n.slidesContainer.querySelectorAll(".gslide")[
|
|
6672
|
-
})),
|
|
6692
|
+
} })), this.settings.closeOnOutsideClick && (this.events.outClose = w("click", { onElement: y, withCallback: function(S, I) {
|
|
6693
|
+
n.preventOutsideClick || E(document.body, "glightbox-mobile") || M(S.target, ".ginner-container") || M(S.target, ".gbtn") || E(S.target, "gnext") || E(S.target, "gprev") || n.close();
|
|
6694
|
+
} })), v(this.elements, (function(S, I) {
|
|
6695
|
+
n.slidesContainer.appendChild(S.instance.create()), S.slideNode = n.slidesContainer.querySelectorAll(".gslide")[I];
|
|
6696
|
+
})), va && _(document.body, "glightbox-touch"), this.events.resize = w("resize", { onElement: window, withCallback: function() {
|
|
6673
6697
|
n.resize();
|
|
6674
6698
|
} }), this.built = !0;
|
|
6675
6699
|
} }, { key: "resize", value: function() {
|
|
6676
6700
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
|
|
6677
|
-
if ((n = n || this.activeSlide) && !
|
|
6701
|
+
if ((n = n || this.activeSlide) && !E(n, "zoomed")) {
|
|
6678
6702
|
var c = te(), l = n.querySelector(".gvideo-wrapper"), d = n.querySelector(".gslide-image"), h = this.slideDescription, m = c.width, g = c.height;
|
|
6679
6703
|
if (m <= 768 ? _(document.body, "glightbox-mobile") : P(document.body, "glightbox-mobile"), l || d) {
|
|
6680
6704
|
var y = !1;
|
|
6681
|
-
if (h && (
|
|
6705
|
+
if (h && (E(h, "description-bottom") || E(h, "description-top")) && !E(h, "gabsolute") && (y = !0), d) {
|
|
6682
6706
|
if (m <= 768) d.querySelector("img");
|
|
6683
6707
|
else if (y) {
|
|
6684
|
-
var A, S,
|
|
6685
|
-
|
|
6708
|
+
var A, S, I = h.offsetHeight, $ = d.querySelector("img"), B = (A = this.elements[this.index]) === null || A === void 0 ? void 0 : A.node, q = "100vh";
|
|
6709
|
+
B && (q = (S = B.getAttribute("data-height")) !== null && S !== void 0 ? S : q), $.setAttribute("style", "max-height: calc(".concat(q, " - ").concat(I, "px)")), h.setAttribute("style", "max-width: ".concat($.offsetWidth, "px;"));
|
|
6686
6710
|
}
|
|
6687
6711
|
}
|
|
6688
6712
|
if (l) {
|
|
6689
6713
|
var D = ie(this.settings.plyr.config, "ratio") ? this.settings.plyr.config.ratio : "";
|
|
6690
6714
|
if (!D) {
|
|
6691
|
-
var ee = l.clientWidth,
|
|
6692
|
-
D = "".concat(ee / ue, ":").concat(
|
|
6715
|
+
var ee = l.clientWidth, me = l.clientHeight, ue = ee / me;
|
|
6716
|
+
D = "".concat(ee / ue, ":").concat(me / ue);
|
|
6693
6717
|
}
|
|
6694
6718
|
var Le = D.split(":"), oe = this.settings.videosWidth, Re = this.settings.videosWidth, ze = (Re = xt(oe) || oe.indexOf("px") !== -1 ? parseInt(oe) : oe.indexOf("vw") !== -1 ? m * parseInt(oe) / 100 : oe.indexOf("vh") !== -1 ? g * parseInt(oe) / 100 : oe.indexOf("%") !== -1 ? m * parseInt(oe) / 100 : parseInt(l.clientWidth)) / (parseInt(Le[0]) / parseInt(Le[1]));
|
|
6695
6719
|
if (ze = Math.floor(ze), y && (g -= h.offsetHeight), Re > m || ze > g || g < ze && m > Re) {
|
|
@@ -6725,7 +6749,7 @@ function Js() {
|
|
|
6725
6749
|
n.events = null;
|
|
6726
6750
|
}
|
|
6727
6751
|
var d = document.body;
|
|
6728
|
-
P(
|
|
6752
|
+
P(wa, "glightbox-open"), P(d, "glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer"), n.modal.parentNode.removeChild(n.modal), n.trigger("close"), F(n.settings.onClose) && n.settings.onClose();
|
|
6729
6753
|
var h = document.querySelector(".gcss-styles");
|
|
6730
6754
|
h && h.parentNode.removeChild(h), n.lightboxOpen = !1, n.closing = null;
|
|
6731
6755
|
}));
|
|
@@ -6751,16 +6775,16 @@ function Js() {
|
|
|
6751
6775
|
return "3.3.1";
|
|
6752
6776
|
} }]);
|
|
6753
6777
|
return function() {
|
|
6754
|
-
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new
|
|
6778
|
+
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new Pi(n);
|
|
6755
6779
|
return c.init(), c;
|
|
6756
6780
|
};
|
|
6757
6781
|
}));
|
|
6758
|
-
})(
|
|
6782
|
+
})(Rt)), Rt.exports;
|
|
6759
6783
|
}
|
|
6760
|
-
var Ks =
|
|
6761
|
-
const
|
|
6762
|
-
var
|
|
6763
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
6784
|
+
var Ks = Zs();
|
|
6785
|
+
const Qs = /* @__PURE__ */ Wa(Ks);
|
|
6786
|
+
var en = Object.getOwnPropertyDescriptor, tn = (a, e, t, i) => {
|
|
6787
|
+
for (var s = i > 1 ? void 0 : i ? en(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6764
6788
|
(o = a[r]) && (s = o(s) || s);
|
|
6765
6789
|
return s;
|
|
6766
6790
|
};
|
|
@@ -6807,15 +6831,15 @@ Kt.styles = J`
|
|
|
6807
6831
|
}
|
|
6808
6832
|
}
|
|
6809
6833
|
`;
|
|
6810
|
-
Kt =
|
|
6811
|
-
|
|
6834
|
+
Kt = tn([
|
|
6835
|
+
Z("cb-thinking")
|
|
6812
6836
|
], Kt);
|
|
6813
|
-
var
|
|
6814
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
6837
|
+
var an = Object.defineProperty, sn = Object.getOwnPropertyDescriptor, ti = (a, e, t, i) => {
|
|
6838
|
+
for (var s = i > 1 ? void 0 : i ? sn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6815
6839
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
6816
|
-
return i && s &&
|
|
6840
|
+
return i && s && an(e, t, s), s;
|
|
6817
6841
|
};
|
|
6818
|
-
let
|
|
6842
|
+
let qt = class extends re {
|
|
6819
6843
|
constructor() {
|
|
6820
6844
|
super(...arguments), this.files = [];
|
|
6821
6845
|
}
|
|
@@ -6831,7 +6855,7 @@ let Ot = class extends re {
|
|
|
6831
6855
|
</div>`;
|
|
6832
6856
|
}
|
|
6833
6857
|
};
|
|
6834
|
-
|
|
6858
|
+
qt.styles = J`
|
|
6835
6859
|
.cb-uploading {
|
|
6836
6860
|
text-align: left;
|
|
6837
6861
|
}
|
|
@@ -6849,13 +6873,13 @@ Ot.styles = J`
|
|
|
6849
6873
|
margin-right: 5px;
|
|
6850
6874
|
}
|
|
6851
6875
|
`;
|
|
6852
|
-
|
|
6876
|
+
ti([
|
|
6853
6877
|
x({ type: Array })
|
|
6854
|
-
],
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
|
-
],
|
|
6858
|
-
const
|
|
6878
|
+
], qt.prototype, "files", 2);
|
|
6879
|
+
qt = ti([
|
|
6880
|
+
Z("cb-uploading")
|
|
6881
|
+
], qt);
|
|
6882
|
+
const nn = J`
|
|
6859
6883
|
${ke}
|
|
6860
6884
|
:host {
|
|
6861
6885
|
}
|
|
@@ -6876,10 +6900,10 @@ const sn = J`
|
|
|
6876
6900
|
margin-right: 0.2em;
|
|
6877
6901
|
}
|
|
6878
6902
|
`;
|
|
6879
|
-
var
|
|
6880
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
6903
|
+
var rn = Object.defineProperty, on = Object.getOwnPropertyDescriptor, ca = (a, e, t, i) => {
|
|
6904
|
+
for (var s = i > 1 ? void 0 : i ? on(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6881
6905
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
6882
|
-
return i && s &&
|
|
6906
|
+
return i && s && rn(e, t, s), s;
|
|
6883
6907
|
};
|
|
6884
6908
|
let mt = class extends Fe {
|
|
6885
6909
|
constructor() {
|
|
@@ -6926,29 +6950,29 @@ mt.styles = J`
|
|
|
6926
6950
|
text-decoration: underline;
|
|
6927
6951
|
}
|
|
6928
6952
|
`;
|
|
6929
|
-
|
|
6953
|
+
ca([
|
|
6930
6954
|
x({ type: String })
|
|
6931
6955
|
], mt.prototype, "url", 2);
|
|
6932
|
-
|
|
6956
|
+
ca([
|
|
6933
6957
|
x({ type: Boolean })
|
|
6934
6958
|
], mt.prototype, "inverse", 2);
|
|
6935
|
-
mt =
|
|
6936
|
-
|
|
6959
|
+
mt = ca([
|
|
6960
|
+
Z("cb-external-link")
|
|
6937
6961
|
], mt);
|
|
6938
|
-
const
|
|
6939
|
-
var
|
|
6940
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
6962
|
+
const cn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-2v-1h2a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.928 15.849v-3.337h1.136v-.662H0v.662h1.134v3.337zm4.689-3.999h-.894L4.9 13.289h-.035l-.832-1.439h-.932l1.228 1.983l-1.24 2.016h.862l.853-1.415h.035l.85 1.415h.907l-1.253-1.992zm1.93.662v3.337h-.794v-3.337H6.619v-.662h3.064v.662H8.546Z"/></svg>', ln = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173q.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38a.57.57 0 0 1-.238.241a.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181q.185.183.185.522m1.217-1.333v3.999h1.46q.602 0 .998-.237a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084q0-.63-.196-1.075a1.43 1.43 0 0 0-.589-.68q-.396-.234-1.005-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592a1.1 1.1 0 0 1-.196.422a.8.8 0 0 1-.334.252a1.3 1.3 0 0 1-.483.082h-.563zm3.743 1.763v1.591h-.79V11.85h2.548v.653H7.896v1.117h1.606v.638z"/></svg>', dn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H9v-1h3a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM.706 13.189v2.66H0V11.85h.806l1.14 2.596h.026l1.14-2.596h.8v3.999h-.716v-2.66h-.038l-.946 2.159h-.516l-.952-2.16H.706Zm3.919 2.66V11.85h1.459q.609 0 1.005.234t.589.68q.195.445.196 1.075q0 .634-.196 1.084q-.197.451-.595.689q-.396.237-1 .237H4.626Zm1.353-3.354h-.562v2.707h.562q.279 0 .484-.082a.8.8 0 0 0 .334-.252a1.1 1.1 0 0 0 .196-.422q.067-.252.067-.592a2.1 2.1 0 0 0-.117-.753a.9.9 0 0 0-.354-.454q-.238-.152-.61-.152"/></svg>', fn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM3.517 14.841a1.13 1.13 0 0 0 .401.823q.195.162.478.252q.284.091.665.091q.507 0 .859-.158q.354-.158.539-.44q.187-.284.187-.656q0-.336-.134-.56a1 1 0 0 0-.375-.357a2 2 0 0 0-.566-.21l-.621-.144a1 1 0 0 1-.404-.176a.37.37 0 0 1-.144-.299q0-.234.185-.384q.188-.152.512-.152q.214 0 .37.068a.6.6 0 0 1 .246.181a.56.56 0 0 1 .12.258h.75a1.1 1.1 0 0 0-.2-.566a1.2 1.2 0 0 0-.5-.41a1.8 1.8 0 0 0-.78-.152q-.439 0-.776.15q-.337.149-.527.421q-.19.273-.19.639q0 .302.122.524q.124.223.352.367q.228.143.539.213l.618.144q.31.073.463.193a.39.39 0 0 1 .152.326a.5.5 0 0 1-.085.29a.56.56 0 0 1-.255.193q-.167.07-.413.07q-.175 0-.32-.04a.8.8 0 0 1-.248-.115a.58.58 0 0 1-.255-.384zM.806 13.693q0-.373.102-.633a.87.87 0 0 1 .302-.399a.8.8 0 0 1 .475-.137q.225 0 .398.097a.7.7 0 0 1 .272.26a.85.85 0 0 1 .12.381h.765v-.072a1.33 1.33 0 0 0-.466-.964a1.4 1.4 0 0 0-.489-.272a1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223q-.375.222-.572.632q-.195.41-.196.979v.498q0 .568.193.976q.197.407.572.626q.375.217.914.217q.439 0 .785-.164t.55-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.764a.8.8 0 0 1-.118.363a.7.7 0 0 1-.272.25a.9.9 0 0 1-.401.087a.85.85 0 0 1-.478-.132a.83.83 0 0 1-.299-.392a1.7 1.7 0 0 1-.102-.627zm8.239 2.238h-.953l-1.338-3.999h.917l.896 3.138h.038l.888-3.138h.879z"/></svg>', hn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zM1.6 11.85H0v3.999h.791v-1.342h.803q.43 0 .732-.173q.305-.175.463-.474a1.4 1.4 0 0 0 .161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38a.57.57 0 0 1-.238.241a.8.8 0 0 1-.375.082H.788V12.48h.66q.327 0 .512.181q.185.183.185.522m2.817-1.333h-1.6v3.999h.791v-1.342h.803q.43 0 .732-.173q.305-.175.463-.474q.162-.302.161-.677q0-.375-.158-.677a1.2 1.2 0 0 0-.46-.477q-.3-.18-.732-.179m.545 1.333a.8.8 0 0 1-.085.38a.57.57 0 0 1-.238.241a.8.8 0 0 1-.375.082H4.15V12.48h.66q.327 0 .512.181q.185.183.185.522m2.767-.67v3.336H7.48v-3.337H6.346v-.662h3.065v.662z"/></svg>', bn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-7.839 9.166v.522q0 .384-.117.641a.86.86 0 0 1-.322.387a.9.9 0 0 1-.469.126a.9.9 0 0 1-.471-.126a.87.87 0 0 1-.32-.386a1.55 1.55 0 0 1-.117-.642v-.522q0-.386.117-.641a.87.87 0 0 1 .32-.387a.87.87 0 0 1 .471-.129q.264 0 .469.13a.86.86 0 0 1 .322.386q.117.255.117.641m.803.519v-.513q0-.565-.205-.972a1.46 1.46 0 0 0-.589-.63q-.381-.22-.917-.22q-.533 0-.92.22a1.44 1.44 0 0 0-.589.627q-.204.406-.205.975v.513q0 .563.205.973q.205.406.59.627q.386.216.92.216q.535 0 .916-.216q.383-.22.59-.627q.204-.41.204-.973M0 11.926v4h1.459q.603 0 .999-.238a1.45 1.45 0 0 0 .595-.689q.196-.45.196-1.084q0-.63-.196-1.075a1.43 1.43 0 0 0-.59-.68q-.395-.234-1.004-.234zm.791.645h.563q.371 0 .609.152a.9.9 0 0 1 .354.454q.118.302.118.753a2.3 2.3 0 0 1-.068.592a1.1 1.1 0 0 1-.196.422a.8.8 0 0 1-.334.252a1.3 1.3 0 0 1-.483.082H.79V12.57Zm7.422.483a1.7 1.7 0 0 0-.103.633v.495q0 .369.103.627a.83.83 0 0 0 .298.393a.85.85 0 0 0 .478.131a.9.9 0 0 0 .401-.088a.7.7 0 0 0 .273-.248a.8.8 0 0 0 .117-.364h.765v.076a1.27 1.27 0 0 1-.226.674q-.205.29-.55.454a1.8 1.8 0 0 1-.786.164q-.54 0-.914-.216a1.4 1.4 0 0 1-.571-.627q-.194-.408-.194-.976v-.498q0-.568.197-.978q.195-.411.571-.633q.378-.223.911-.223q.328 0 .607.097q.28.093.489.272a1.33 1.33 0 0 1 .466.964v.073H9.78a.85.85 0 0 0-.12-.38a.7.7 0 0 0-.273-.261a.8.8 0 0 0-.398-.097a.8.8 0 0 0-.475.138a.87.87 0 0 0-.301.398"/></svg>', un = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5zm-6.839 9.688v-.522a1.5 1.5 0 0 0-.117-.641a.86.86 0 0 0-.322-.387a.86.86 0 0 0-.469-.129a.87.87 0 0 0-.471.13a.87.87 0 0 0-.32.386a1.5 1.5 0 0 0-.117.641v.522q0 .384.117.641a.87.87 0 0 0 .32.387a.9.9 0 0 0 .471.126a.9.9 0 0 0 .469-.126a.86.86 0 0 0 .322-.386a1.55 1.55 0 0 0 .117-.642m.803-.516v.513q0 .563-.205.973a1.47 1.47 0 0 1-.589.627q-.381.216-.917.216a1.86 1.86 0 0 1-.92-.216a1.46 1.46 0 0 1-.589-.627a2.15 2.15 0 0 1-.205-.973v-.513q0-.569.205-.975q.205-.411.59-.627q.386-.22.92-.22q.535 0 .916.22q.383.219.59.63q.204.406.204.972M1 15.925v-3.999h1.459q.609 0 1.005.235q.396.233.589.68q.196.445.196 1.074q0 .634-.196 1.084q-.197.451-.595.689q-.396.237-.999.237zm1.354-3.354H1.79v2.707h.563q.277 0 .483-.082a.8.8 0 0 0 .334-.252q.132-.17.196-.422a2.3 2.3 0 0 0 .068-.592q0-.45-.118-.753a.9.9 0 0 0-.354-.454q-.237-.152-.61-.152Zm6.756 1.116q0-.373.103-.633a.87.87 0 0 1 .301-.398a.8.8 0 0 1 .475-.138q.225 0 .398.097a.7.7 0 0 1 .273.26a.85.85 0 0 1 .12.381h.765v-.073a1.33 1.33 0 0 0-.466-.964a1.4 1.4 0 0 0-.49-.272a1.8 1.8 0 0 0-.606-.097q-.534 0-.911.223q-.375.222-.571.633q-.197.41-.197.978v.498q0 .568.194.976q.195.406.571.627q.375.216.914.216q.44 0 .785-.164t.551-.454a1.27 1.27 0 0 0 .226-.674v-.076h-.765a.8.8 0 0 1-.117.364a.7.7 0 0 1-.273.248a.9.9 0 0 1-.401.088a.85.85 0 0 1-.478-.131a.83.83 0 0 1-.298-.393a1.7 1.7 0 0 1-.103-.627zm5.092-1.76h.894l-1.275 2.006l1.254 1.992h-.908l-.85-1.415h-.035l-.852 1.415h-.862l1.24-2.015l-1.228-1.984h.932l.832 1.439h.035z"/></svg>';
|
|
6963
|
+
var pn = Object.defineProperty, gn = Object.getOwnPropertyDescriptor, la = (a, e, t, i) => {
|
|
6964
|
+
for (var s = i > 1 ? void 0 : i ? gn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6941
6965
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
6942
|
-
return i && s &&
|
|
6966
|
+
return i && s && pn(e, t, s), s;
|
|
6943
6967
|
};
|
|
6944
|
-
const
|
|
6945
|
-
pdf:
|
|
6946
|
-
txt:
|
|
6947
|
-
md:
|
|
6948
|
-
csv:
|
|
6949
|
-
ppd:
|
|
6950
|
-
doc:
|
|
6951
|
-
docx:
|
|
6968
|
+
const La = {
|
|
6969
|
+
pdf: ln,
|
|
6970
|
+
txt: cn,
|
|
6971
|
+
md: dn,
|
|
6972
|
+
csv: fn,
|
|
6973
|
+
ppd: hn,
|
|
6974
|
+
doc: bn,
|
|
6975
|
+
docx: un
|
|
6952
6976
|
};
|
|
6953
6977
|
let yt = class extends re {
|
|
6954
6978
|
constructor() {
|
|
@@ -6974,22 +6998,22 @@ let yt = class extends re {
|
|
|
6974
6998
|
return u`
|
|
6975
6999
|
<cb-icon
|
|
6976
7000
|
class="cb-file-icon"
|
|
6977
|
-
svg="${
|
|
7001
|
+
svg="${La[this.type] || La.txt}"
|
|
6978
7002
|
></cb-icon>
|
|
6979
7003
|
`;
|
|
6980
7004
|
}
|
|
6981
7005
|
};
|
|
6982
|
-
yt.styles =
|
|
6983
|
-
|
|
7006
|
+
yt.styles = nn;
|
|
7007
|
+
la([
|
|
6984
7008
|
x({ type: String })
|
|
6985
7009
|
], yt.prototype, "filename", 2);
|
|
6986
|
-
|
|
7010
|
+
la([
|
|
6987
7011
|
x({ type: String })
|
|
6988
7012
|
], yt.prototype, "url", 2);
|
|
6989
|
-
yt =
|
|
6990
|
-
|
|
7013
|
+
yt = la([
|
|
7014
|
+
Z("cb-file")
|
|
6991
7015
|
], yt);
|
|
6992
|
-
const
|
|
7016
|
+
const mn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></g></svg>', Ra = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 8a3 3 0 1 0 0-6a3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0a2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1s1-4 6-4s6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/></svg>', ai = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M5 9v12H1V9zm4 12a2 2 0 0 1-2-2V9c0-.55.22-1.05.59-1.41L14.17 1l1.06 1.06c.27.27.44.64.44 1.05l-.03.32L14.69 8H21a2 2 0 0 1 2 2v2c0 .26-.05.5-.14.73l-3.02 7.05C19.54 20.5 18.83 21 18 21zm0-2h9.03L21 12v-2h-8.79l1.13-5.32L9 9.03z"/></svg>', ii = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M19 15V3h4v12zM15 3a2 2 0 0 1 2 2v10c0 .55-.22 1.05-.59 1.41L9.83 23l-1.06-1.06c-.27-.27-.44-.64-.44-1.06l.03-.31l.95-4.57H3a2 2 0 0 1-2-2v-2c0-.26.05-.5.14-.73l3.02-7.05C4.46 3.5 5.17 3 6 3zm0 2H5.97L3 12v2h8.78l-1.13 5.32L15 14.97z"/></svg>', yn = J`
|
|
6993
7017
|
pre code.hljs {
|
|
6994
7018
|
display: block;
|
|
6995
7019
|
overflow-x: auto;
|
|
@@ -8204,9 +8228,9 @@ const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8204
8228
|
white-space: pre-wrap;
|
|
8205
8229
|
color: var(--n-text-color);
|
|
8206
8230
|
}
|
|
8207
|
-
`,
|
|
8231
|
+
`, vn = J`
|
|
8208
8232
|
${ke}
|
|
8209
|
-
${
|
|
8233
|
+
${yn}
|
|
8210
8234
|
|
|
8211
8235
|
.cb-message-row {
|
|
8212
8236
|
width: 100%;
|
|
@@ -8281,6 +8305,15 @@ const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8281
8305
|
border-radius: 4px;
|
|
8282
8306
|
}
|
|
8283
8307
|
|
|
8308
|
+
.info-avatar {
|
|
8309
|
+
margin-right: 2px;
|
|
8310
|
+
color: rgba(0, 0, 0, 0.2);
|
|
8311
|
+
}
|
|
8312
|
+
|
|
8313
|
+
.info-avatar img {
|
|
8314
|
+
border-radius: 4px;
|
|
8315
|
+
}
|
|
8316
|
+
|
|
8284
8317
|
.user-message,
|
|
8285
8318
|
.assistant-message,
|
|
8286
8319
|
.system-message {
|
|
@@ -8361,7 +8394,7 @@ const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8361
8394
|
margin-top: 2px;
|
|
8362
8395
|
//color: rgba(34, 34, 34, 0.6);
|
|
8363
8396
|
color: var(--enegelai-bot-message-system-color, rgba(34, 34, 34, 0.6));
|
|
8364
|
-
background-color: var(--enegelai-bot-message-system-background, rgba(254, 243, 199, 0.5));
|
|
8397
|
+
//background-color: var(--enegelai-bot-message-system-background, rgba(254, 243, 199, 0.5));
|
|
8365
8398
|
padding: 4px 12px 6px 12px;
|
|
8366
8399
|
}
|
|
8367
8400
|
|
|
@@ -8438,36 +8471,36 @@ const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="curr
|
|
|
8438
8471
|
filter: alpha(opacity=80);
|
|
8439
8472
|
}
|
|
8440
8473
|
`;
|
|
8441
|
-
function
|
|
8474
|
+
function za(a, e) {
|
|
8442
8475
|
return `<pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">${e}</span><span class="code-block-header__copy">Copy</span></div><code class="hljs code-block-body ${e}">${a}</code></pre>`;
|
|
8443
8476
|
}
|
|
8444
|
-
function
|
|
8445
|
-
const a = new
|
|
8477
|
+
function wn() {
|
|
8478
|
+
const a = new Di({
|
|
8446
8479
|
html: !0,
|
|
8447
8480
|
breaks: !0,
|
|
8448
8481
|
linkify: !0,
|
|
8449
8482
|
highlight(e, t) {
|
|
8450
|
-
if (!!(t &&
|
|
8483
|
+
if (!!(t && Wt.getLanguage(t))) {
|
|
8451
8484
|
const s = t ?? "";
|
|
8452
|
-
return
|
|
8485
|
+
return za(Wt.highlight(e, { language: s }).value, s);
|
|
8453
8486
|
}
|
|
8454
|
-
return
|
|
8487
|
+
return za(Wt.highlightAuto(e).value, "");
|
|
8455
8488
|
}
|
|
8456
8489
|
});
|
|
8457
|
-
return a.use(
|
|
8490
|
+
return a.use(Fi, { attrs: { target: "_blank", rel: "noopener" } }), a;
|
|
8458
8491
|
}
|
|
8459
|
-
async function
|
|
8460
|
-
const t =
|
|
8461
|
-
return u`${
|
|
8492
|
+
async function Qt(a) {
|
|
8493
|
+
const t = wn().render(a);
|
|
8494
|
+
return u`${G(t)}`;
|
|
8462
8495
|
}
|
|
8463
|
-
var
|
|
8464
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
8496
|
+
var xn = Object.defineProperty, kn = Object.getOwnPropertyDescriptor, nt = (a, e, t, i) => {
|
|
8497
|
+
for (var s = i > 1 ? void 0 : i ? kn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
8465
8498
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
8466
|
-
return i && s &&
|
|
8499
|
+
return i && s && xn(e, t, s), s;
|
|
8467
8500
|
};
|
|
8468
8501
|
let De = class extends re {
|
|
8469
8502
|
constructor() {
|
|
8470
|
-
super(...arguments), this.store = new it(this, b), this.type = "assistant", this.suppressFeedback = !1, this.lightbox =
|
|
8503
|
+
super(...arguments), this.store = new it(this, b), this.type = "assistant", this.suppressFeedback = !1, this.lightbox = Qs({
|
|
8471
8504
|
touchNavigation: !0,
|
|
8472
8505
|
loop: !0,
|
|
8473
8506
|
autoplayVideos: !0,
|
|
@@ -8532,7 +8565,7 @@ let De = class extends re {
|
|
|
8532
8565
|
this.copyBtns.forEach((a) => {
|
|
8533
8566
|
a.addEventListener("click", () => {
|
|
8534
8567
|
const e = a.parentElement?.nextElementSibling?.textContent;
|
|
8535
|
-
e &&
|
|
8568
|
+
e && ts(e).then(() => {
|
|
8536
8569
|
a.textContent = "Success", setTimeout(() => {
|
|
8537
8570
|
a.textContent = "Copy";
|
|
8538
8571
|
}, 500);
|
|
@@ -8547,6 +8580,8 @@ let De = class extends re {
|
|
|
8547
8580
|
});
|
|
8548
8581
|
}
|
|
8549
8582
|
render() {
|
|
8583
|
+
if (this.message?.type === "info")
|
|
8584
|
+
return this.renderInfoMessage(this.message);
|
|
8550
8585
|
if (this.message?.type === "blocks") {
|
|
8551
8586
|
const a = this.message?.data?.blocks ?? [];
|
|
8552
8587
|
return u`<cb-blocks .blocks=${a}></cb-blocks>`;
|
|
@@ -8570,10 +8605,34 @@ let De = class extends re {
|
|
|
8570
8605
|
return u`<div class="cb-message__buttons ${a}">
|
|
8571
8606
|
<!-- delete button -->
|
|
8572
8607
|
<sl-button class="cb-message__delete-button" name="trash" @click=${this._removeMessageHandler} circle variant="text" size="small">
|
|
8573
|
-
<cb-icon svg="${
|
|
8608
|
+
<cb-icon svg="${mn}" style="font-size: 1em !important;"></cb-icon>
|
|
8574
8609
|
</sl-button>
|
|
8575
8610
|
</div>`;
|
|
8576
8611
|
}
|
|
8612
|
+
renderInfoMessage(a) {
|
|
8613
|
+
return u`
|
|
8614
|
+
<div class="cb-message cb-bot-message-wrapper" part="cb-message">
|
|
8615
|
+
<div class="avatar info-avatar xsmall" part="info-avatar" style="margin-top:4px;">${this.renderInfoMessageAvatar(a)}</div>
|
|
8616
|
+
<div
|
|
8617
|
+
class="cb-message__content
|
|
8618
|
+
${a.author}-message
|
|
8619
|
+
message-type-${a.type}"
|
|
8620
|
+
style="display: flex;"
|
|
8621
|
+
part="info-message-content"
|
|
8622
|
+
>
|
|
8623
|
+
<div class="cb-message-text">
|
|
8624
|
+
${Pt(
|
|
8625
|
+
this._getMessageText(a).then((e) => u`${e}`)
|
|
8626
|
+
)}
|
|
8627
|
+
</div>
|
|
8628
|
+
</div>
|
|
8629
|
+
</div>
|
|
8630
|
+
`;
|
|
8631
|
+
}
|
|
8632
|
+
renderInfoMessageAvatar(a) {
|
|
8633
|
+
const e = a.data?.userAvatar || "";
|
|
8634
|
+
return e !== "" ? u` <img src="${e}" style="width: 24px;height: 24px;" /> ` : pe`${G(b.setting.infoIconSvg)}`;
|
|
8635
|
+
}
|
|
8577
8636
|
renderMessage(a, e = "bot-message-content") {
|
|
8578
8637
|
return u`
|
|
8579
8638
|
<div
|
|
@@ -8589,7 +8648,7 @@ let De = class extends re {
|
|
|
8589
8648
|
`;
|
|
8590
8649
|
}
|
|
8591
8650
|
async _getMessageText(a) {
|
|
8592
|
-
return
|
|
8651
|
+
return Qt(Vt(a.data.text));
|
|
8593
8652
|
}
|
|
8594
8653
|
renderMessageContent(a) {
|
|
8595
8654
|
return a.isThinking ? u`<cb-thinking></cb-thinking>` : a.isUploading ? u`<cb-uploading .files="${a.data.files || []}"></cb-uploading>` : a.type === "text" ? u`<div class="cb-message-text">
|
|
@@ -8598,7 +8657,7 @@ let De = class extends re {
|
|
|
8598
8657
|
() => u`<div class="assistant-message-user-name">${a.data.userName}</div>`,
|
|
8599
8658
|
() => null
|
|
8600
8659
|
)}
|
|
8601
|
-
${
|
|
8660
|
+
${Pt(
|
|
8602
8661
|
this._getMessageText(a).then((e) => u`${e}`)
|
|
8603
8662
|
)}
|
|
8604
8663
|
</div>` : a.type === "file" ? u`${et(
|
|
@@ -8610,8 +8669,8 @@ let De = class extends re {
|
|
|
8610
8669
|
(e) => e.name,
|
|
8611
8670
|
(e) => u`<div>${e.name}</div>`
|
|
8612
8671
|
)}` : u`<div class="cb-message-text">
|
|
8613
|
-
${
|
|
8614
|
-
|
|
8672
|
+
${Pt(
|
|
8673
|
+
Qt(a.data.text?.toString() || "").then((e) => u`${e}`)
|
|
8615
8674
|
)}
|
|
8616
8675
|
</div>`;
|
|
8617
8676
|
}
|
|
@@ -8628,9 +8687,9 @@ let De = class extends re {
|
|
|
8628
8687
|
renderBotMessageAvatar(a) {
|
|
8629
8688
|
if (a.data.userName && a.data.userName !== "") {
|
|
8630
8689
|
const e = a.data?.userAvatar || "";
|
|
8631
|
-
return e !== "" ? u` <img src="${e}" style="width: 24px;height: 24px;" /> ` :
|
|
8690
|
+
return e !== "" ? u` <img src="${e}" style="width: 24px;height: 24px;" /> ` : pe`${G(b.setting.agentIconSvg)}`;
|
|
8632
8691
|
}
|
|
8633
|
-
return a.author === "system" ?
|
|
8692
|
+
return a.author === "system" ? pe`${G(b.setting.systemIconSvg)}` : pe`${G(b.setting.botIconSvg)}`;
|
|
8634
8693
|
}
|
|
8635
8694
|
renderBotMessage(a) {
|
|
8636
8695
|
return u`
|
|
@@ -8644,8 +8703,8 @@ let De = class extends re {
|
|
|
8644
8703
|
renderBotMessageFeedback(a) {
|
|
8645
8704
|
return this.suppressFeedback || !b.setting.feedbackEnabled || this.index < b.setting.startFeedbackFromMessage * 2 ? null : u`
|
|
8646
8705
|
<div class="cb-message-feedback-tools" part="feedback-wrapper">
|
|
8647
|
-
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${
|
|
8648
|
-
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${
|
|
8706
|
+
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${pe`${G(ai)}`}</div>
|
|
8707
|
+
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${pe`${G(ii)}`}</div>
|
|
8649
8708
|
</div>
|
|
8650
8709
|
`;
|
|
8651
8710
|
}
|
|
@@ -8656,18 +8715,18 @@ let De = class extends re {
|
|
|
8656
8715
|
return u`
|
|
8657
8716
|
<div class="cb-message" part="cb-message" style="display: flex; justify-content: end;align-items: start;">
|
|
8658
8717
|
<!--<sl-avatar class="avatar user-avatar small" label="User">
|
|
8659
|
-
<cb-icon slot="icon" svg="${
|
|
8718
|
+
<cb-icon slot="icon" svg="${Ra}" color="white"></cb-icon>
|
|
8660
8719
|
//appState.appearanceUserMessageAvatarPosition
|
|
8661
8720
|
</sl-avatar>-->
|
|
8662
8721
|
${W(
|
|
8663
8722
|
b.appearanceUserMessageAvatarPosition === "left",
|
|
8664
8723
|
() => u`
|
|
8665
|
-
<div class="avatar user-avatar" part="user-avatar">${
|
|
8724
|
+
<div class="avatar user-avatar" part="user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8666
8725
|
${this.renderMessage(a, "user-message-content")}
|
|
8667
8726
|
`,
|
|
8668
8727
|
() => u`
|
|
8669
8728
|
${this.renderMessage(a, "user-message-content")}
|
|
8670
|
-
<div class="avatar user-avatar" part="user-avatar">${
|
|
8729
|
+
<div class="avatar user-avatar" part="user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8671
8730
|
`
|
|
8672
8731
|
)}
|
|
8673
8732
|
</div>
|
|
@@ -8679,25 +8738,25 @@ let De = class extends re {
|
|
|
8679
8738
|
return u`
|
|
8680
8739
|
<div class="cb-message" part="cb-message" style="display: flex; justify-content: end;align-items: start;">
|
|
8681
8740
|
<!--<sl-avatar class="avatar user-avatar small" label="User">
|
|
8682
|
-
<cb-icon slot="icon" svg="${
|
|
8741
|
+
<cb-icon slot="icon" svg="${Ra}" color="white"></cb-icon>
|
|
8683
8742
|
//appState.appearanceUserMessageAvatarPosition
|
|
8684
8743
|
</sl-avatar>-->
|
|
8685
8744
|
${W(
|
|
8686
8745
|
b.appearanceUserMessageAvatarPosition === "left",
|
|
8687
8746
|
() => u`
|
|
8688
|
-
<div class="avatar user-avatar">${
|
|
8747
|
+
<div class="avatar user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8689
8748
|
${this.renderMessage(a, "user-message-content")}
|
|
8690
8749
|
`,
|
|
8691
8750
|
() => u`
|
|
8692
8751
|
${this.renderMessage(a, "user-message-content")}
|
|
8693
|
-
<div class="avatar user-avatar">${
|
|
8752
|
+
<div class="avatar user-avatar">${G(b.setting.userIconSvg)}</div>
|
|
8694
8753
|
`
|
|
8695
8754
|
)}
|
|
8696
8755
|
</div>
|
|
8697
8756
|
`;
|
|
8698
8757
|
}
|
|
8699
8758
|
};
|
|
8700
|
-
De.styles =
|
|
8759
|
+
De.styles = vn;
|
|
8701
8760
|
nt([
|
|
8702
8761
|
x({ type: Object })
|
|
8703
8762
|
], De.prototype, "message", 2);
|
|
@@ -8711,21 +8770,21 @@ nt([
|
|
|
8711
8770
|
x({ type: Boolean })
|
|
8712
8771
|
], De.prototype, "suppressFeedback", 2);
|
|
8713
8772
|
nt([
|
|
8714
|
-
|
|
8773
|
+
Na(".code-block-header__copy")
|
|
8715
8774
|
], De.prototype, "copyBtns", 2);
|
|
8716
8775
|
nt([
|
|
8717
|
-
|
|
8776
|
+
Na("img")
|
|
8718
8777
|
], De.prototype, "glightboxImages", 2);
|
|
8719
8778
|
De = nt([
|
|
8720
|
-
|
|
8779
|
+
Z("cb-message")
|
|
8721
8780
|
], De);
|
|
8722
|
-
var
|
|
8723
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
8781
|
+
var _n = Object.defineProperty, Sn = Object.getOwnPropertyDescriptor, Te = (a, e, t, i) => {
|
|
8782
|
+
for (var s = i > 1 ? void 0 : i ? Sn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
8724
8783
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
8725
|
-
return i && s &&
|
|
8784
|
+
return i && s && _n(e, t, s), s;
|
|
8726
8785
|
};
|
|
8727
|
-
const
|
|
8728
|
-
|
|
8786
|
+
const Oe = Je.noConflict();
|
|
8787
|
+
Oe.setLevel("info");
|
|
8729
8788
|
let ye = class extends re {
|
|
8730
8789
|
constructor() {
|
|
8731
8790
|
super(...arguments), this.messages = [], this.actions = [], this.form = null, this.suppressFeedback = !1, this.calendlyInjected = !1, this.activeCalendlyAction = -1, this.hubspotMeetingInjected = !1, this.activeHubspotMeetingAction = -1, this._lastScrollTop = 0, this._scrollThrottle = !1, this._userInterruptedAutoScroll = !1, this._userInterruptedMessagesLength = 0;
|
|
@@ -8769,10 +8828,10 @@ let ye = class extends re {
|
|
|
8769
8828
|
}
|
|
8770
8829
|
renderDisclaimerMessage() {
|
|
8771
8830
|
return !b.setting.disclaimerMessage || !b.isConversationStart() ? null : u`
|
|
8772
|
-
<details class="cb-disclaimer-wrapper" part="disclaimer-wrapper">
|
|
8831
|
+
<details class="cb-disclaimer-wrapper" part="disclaimer-wrapper" ?open=${b.setting.enableShowFullDisclaimerMessage}>
|
|
8773
8832
|
<summary class="cb-disclaimer-message" part="disclaimer-message">
|
|
8774
|
-
${
|
|
8775
|
-
|
|
8833
|
+
${Pt(
|
|
8834
|
+
Qt(b.setting.disclaimerMessage).then((a) => u`${a}`)
|
|
8776
8835
|
)}
|
|
8777
8836
|
</summary>
|
|
8778
8837
|
</details>
|
|
@@ -8861,13 +8920,13 @@ let ye = class extends re {
|
|
|
8861
8920
|
}
|
|
8862
8921
|
}
|
|
8863
8922
|
b.submitForm(e).then(() => {
|
|
8864
|
-
|
|
8923
|
+
Oe.info("Form submitted", e), this.emit("form:submit", {
|
|
8865
8924
|
detail: {
|
|
8866
8925
|
formData: e
|
|
8867
8926
|
}
|
|
8868
8927
|
});
|
|
8869
8928
|
}).catch((t) => {
|
|
8870
|
-
|
|
8929
|
+
Oe.error(`Error when submitting form: ${t.message}`);
|
|
8871
8930
|
});
|
|
8872
8931
|
}
|
|
8873
8932
|
/* Form sample
|
|
@@ -8912,7 +8971,7 @@ let ye = class extends re {
|
|
|
8912
8971
|
return null;
|
|
8913
8972
|
}
|
|
8914
8973
|
handleCalendlyEvent(a) {
|
|
8915
|
-
switch (
|
|
8974
|
+
switch (Oe.info("Got Calendly Event:", a.data), a.data.event) {
|
|
8916
8975
|
case "calendly.event_scheduled": {
|
|
8917
8976
|
const e = this.activeCalendlyAction;
|
|
8918
8977
|
e >= 0 && (b.removeAction(e, !0, a.data), b.addSystemMessage("Your meeting has been scheduled!"), this.activeCalendlyAction = -1);
|
|
@@ -8920,10 +8979,10 @@ let ye = class extends re {
|
|
|
8920
8979
|
}
|
|
8921
8980
|
}
|
|
8922
8981
|
invokeLinkAction(a = {}) {
|
|
8923
|
-
|
|
8982
|
+
Oe.info("invokeLinkAction:", a), window.open(a.url, "_blank");
|
|
8924
8983
|
}
|
|
8925
8984
|
invokeCalendlyAction(a = {}) {
|
|
8926
|
-
return
|
|
8985
|
+
return Oe.info("invokeCalendlyAction:", a), "Calendly" in window && (this.activeCalendlyAction = a.internalId, window.Calendly.initPopupWidget({ url: a.url })), !1;
|
|
8927
8986
|
}
|
|
8928
8987
|
renderCalendlyAction(a) {
|
|
8929
8988
|
if (!("Calendly" in window) && !this.calendlyInjected) {
|
|
@@ -8969,10 +9028,10 @@ let ye = class extends re {
|
|
|
8969
9028
|
invokeHubspotMeetingAction(a = {}) {
|
|
8970
9029
|
const e = Date.now();
|
|
8971
9030
|
if (this.activeHubspotMeetingAction !== -1) {
|
|
8972
|
-
|
|
9031
|
+
Oe.info(`invokeHubspotMeetingAction: action ${this.activeHubspotMeetingAction} is already active - ignored`);
|
|
8973
9032
|
return;
|
|
8974
9033
|
}
|
|
8975
|
-
if (
|
|
9034
|
+
if (Oe.info("invokeHubspotMeetingAction:", a), "hbspt" in window && typeof window.hbspt?.meetings?.create == "function") {
|
|
8976
9035
|
const t = document.getElementById("enegelai-bot-hubspot-meeting-container"), i = document.querySelector(".enegelai-bot-hubspot-meeting-widget");
|
|
8977
9036
|
if (t && i) {
|
|
8978
9037
|
const s = a.url + "?embed=true";
|
|
@@ -8984,7 +9043,7 @@ let ye = class extends re {
|
|
|
8984
9043
|
return !1;
|
|
8985
9044
|
}
|
|
8986
9045
|
handleHubspotEvent(a) {
|
|
8987
|
-
if (
|
|
9046
|
+
if (Oe.info("Got Hubspot Event:", a.data), !(a?.data?.meetingBookSucceeded || !1))
|
|
8988
9047
|
return;
|
|
8989
9048
|
const t = this.activeHubspotMeetingAction;
|
|
8990
9049
|
if (t >= 0) {
|
|
@@ -9036,7 +9095,7 @@ let ye = class extends re {
|
|
|
9036
9095
|
`;
|
|
9037
9096
|
}
|
|
9038
9097
|
};
|
|
9039
|
-
ye.styles =
|
|
9098
|
+
ye.styles = Hs;
|
|
9040
9099
|
Te([
|
|
9041
9100
|
x({ type: Array })
|
|
9042
9101
|
], ye.prototype, "messages", 2);
|
|
@@ -9056,18 +9115,18 @@ Te([
|
|
|
9056
9115
|
xe(".cb-input-form")
|
|
9057
9116
|
], ye.prototype, "_inputForm", 2);
|
|
9058
9117
|
Te([
|
|
9059
|
-
|
|
9118
|
+
na({ capture: !1, passive: !0 })
|
|
9060
9119
|
], ye.prototype, "invokeLinkAction", 1);
|
|
9061
9120
|
Te([
|
|
9062
|
-
|
|
9121
|
+
na({ capture: !1, passive: !0 })
|
|
9063
9122
|
], ye.prototype, "invokeCalendlyAction", 1);
|
|
9064
9123
|
Te([
|
|
9065
|
-
|
|
9124
|
+
na({ capture: !1, passive: !0 })
|
|
9066
9125
|
], ye.prototype, "invokeHubspotMeetingAction", 1);
|
|
9067
9126
|
ye = Te([
|
|
9068
|
-
|
|
9127
|
+
Z("cb-message-list")
|
|
9069
9128
|
], ye);
|
|
9070
|
-
const
|
|
9129
|
+
const Cn = J`
|
|
9071
9130
|
${ke}
|
|
9072
9131
|
|
|
9073
9132
|
:host {
|
|
@@ -9109,11 +9168,11 @@ const Sn = J`
|
|
|
9109
9168
|
align-items: center;
|
|
9110
9169
|
margin: 6px 2px;
|
|
9111
9170
|
}
|
|
9112
|
-
`,
|
|
9113
|
-
var
|
|
9114
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9171
|
+
`, si = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/></svg>', ni = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0z"/></svg>', ri = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72z"/></svg>', da = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z"/></svg>';
|
|
9172
|
+
var An = Object.defineProperty, Mn = Object.getOwnPropertyDescriptor, Ie = (a, e, t, i) => {
|
|
9173
|
+
for (var s = i > 1 ? void 0 : i ? Mn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9115
9174
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9116
|
-
return i && s &&
|
|
9175
|
+
return i && s && An(e, t, s), s;
|
|
9117
9176
|
};
|
|
9118
9177
|
let ve = class extends re {
|
|
9119
9178
|
constructor() {
|
|
@@ -9150,7 +9209,7 @@ let ve = class extends re {
|
|
|
9150
9209
|
});
|
|
9151
9210
|
}
|
|
9152
9211
|
async _sendFileHandler() {
|
|
9153
|
-
const a = await
|
|
9212
|
+
const a = await Xa(!1, b.setting.fileUploadEnabledExtensions);
|
|
9154
9213
|
this.emit("message:send:file", {
|
|
9155
9214
|
detail: {
|
|
9156
9215
|
files: a
|
|
@@ -9189,7 +9248,7 @@ let ve = class extends re {
|
|
|
9189
9248
|
${W(
|
|
9190
9249
|
b.setting.sendIconSvg !== "",
|
|
9191
9250
|
() => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
|
|
9192
|
-
() => u`<cb-icon part="user-input-send-icon" svg="${
|
|
9251
|
+
() => u`<cb-icon part="user-input-send-icon" svg="${si}"></cb-icon>`
|
|
9193
9252
|
)}
|
|
9194
9253
|
</sl-button>
|
|
9195
9254
|
${W(
|
|
@@ -9199,7 +9258,7 @@ let ve = class extends re {
|
|
|
9199
9258
|
${W(
|
|
9200
9259
|
b.setting.attachIconSvg !== "",
|
|
9201
9260
|
() => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
|
|
9202
|
-
() => u`<cb-icon part="user-input-attach-icon" svg="${
|
|
9261
|
+
() => u`<cb-icon part="user-input-attach-icon" svg="${ni}"></cb-icon>`
|
|
9203
9262
|
)}
|
|
9204
9263
|
<!-- select file input -->
|
|
9205
9264
|
<input type="file" id="file" name="file" class="file-input" />
|
|
@@ -9213,8 +9272,8 @@ let ve = class extends re {
|
|
|
9213
9272
|
<sl-button @click=${this._toggleAudioHandler} name="paperclip" label="Audio" size="small" class="audio-button" variant="text" circle>
|
|
9214
9273
|
${W(
|
|
9215
9274
|
b.webAudioStarted,
|
|
9216
|
-
() => u`<cb-icon svg="${
|
|
9217
|
-
() => u`<cb-icon svg="${
|
|
9275
|
+
() => u`<cb-icon svg="${da}"></cb-icon>`,
|
|
9276
|
+
() => u`<cb-icon svg="${ri}"></cb-icon>`
|
|
9218
9277
|
)}
|
|
9219
9278
|
</sl-button>
|
|
9220
9279
|
`,
|
|
@@ -9228,7 +9287,7 @@ let ve = class extends re {
|
|
|
9228
9287
|
a.key === "Enter" && !a.shiftKey && this._sendHandler();
|
|
9229
9288
|
}
|
|
9230
9289
|
};
|
|
9231
|
-
ve.styles =
|
|
9290
|
+
ve.styles = Cn;
|
|
9232
9291
|
Ie([
|
|
9233
9292
|
x({ type: String, attribute: "placeholder" })
|
|
9234
9293
|
], ve.prototype, "placeholder", 2);
|
|
@@ -9257,9 +9316,9 @@ Ie([
|
|
|
9257
9316
|
xe("sl-textarea")
|
|
9258
9317
|
], ve.prototype, "inputElement", 2);
|
|
9259
9318
|
ve = Ie([
|
|
9260
|
-
|
|
9319
|
+
Z("cb-user-input")
|
|
9261
9320
|
], ve);
|
|
9262
|
-
const
|
|
9321
|
+
const Tn = J`
|
|
9263
9322
|
${ke}
|
|
9264
9323
|
|
|
9265
9324
|
:host {
|
|
@@ -9317,11 +9376,11 @@ const Mn = J`
|
|
|
9317
9376
|
border-radius: 40px;
|
|
9318
9377
|
outline: none !important;
|
|
9319
9378
|
}
|
|
9320
|
-
`,
|
|
9321
|
-
var
|
|
9322
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9379
|
+
`, In = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4"/></svg>', En = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M8 18c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1m4 4c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1s-1 .45-1 1v18c0 .55.45 1 1 1m-8-8c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1v2c0 .55.45 1 1 1m12 4c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1m3-7v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1"/></svg>', Oa = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="m4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"/></svg>';
|
|
9380
|
+
var $n = Object.defineProperty, Pn = Object.getOwnPropertyDescriptor, Ee = (a, e, t, i) => {
|
|
9381
|
+
for (var s = i > 1 ? void 0 : i ? Pn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9323
9382
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9324
|
-
return i && s &&
|
|
9383
|
+
return i && s && $n(e, t, s), s;
|
|
9325
9384
|
};
|
|
9326
9385
|
let we = class extends re {
|
|
9327
9386
|
constructor() {
|
|
@@ -9364,7 +9423,7 @@ let we = class extends re {
|
|
|
9364
9423
|
});
|
|
9365
9424
|
}
|
|
9366
9425
|
async _sendFileHandler() {
|
|
9367
|
-
const a = await
|
|
9426
|
+
const a = await Xa(!1, b.setting.fileUploadEnabledExtensions);
|
|
9368
9427
|
this.emit("message:send:file", {
|
|
9369
9428
|
detail: {
|
|
9370
9429
|
files: a
|
|
@@ -9396,7 +9455,7 @@ let we = class extends re {
|
|
|
9396
9455
|
await b.toggleAudio();
|
|
9397
9456
|
}
|
|
9398
9457
|
getCtrlIconSvg() {
|
|
9399
|
-
return this.value && this.value !== "" || b.webAudioStarted ?
|
|
9458
|
+
return this.value && this.value !== "" || b.webAudioStarted ? Oa : En;
|
|
9400
9459
|
}
|
|
9401
9460
|
getCtrlClass() {
|
|
9402
9461
|
return this.value && this.value !== "" ? "" : b.webAudioStarted || b.mediaStartAudioRequested ? "disabled" : "";
|
|
@@ -9414,7 +9473,7 @@ let we = class extends re {
|
|
|
9414
9473
|
this.enableFileUpload,
|
|
9415
9474
|
() => u`
|
|
9416
9475
|
<button type="button" class="circle-btn" part="upload-button" title="Upload" @click=${this._sendFileHandler}>
|
|
9417
|
-
${
|
|
9476
|
+
${G(In)}
|
|
9418
9477
|
</button>
|
|
9419
9478
|
`,
|
|
9420
9479
|
() => u``
|
|
@@ -9434,7 +9493,7 @@ let we = class extends re {
|
|
|
9434
9493
|
@keydown=${this._keyDownHandler}
|
|
9435
9494
|
></sl-textarea>
|
|
9436
9495
|
<button type="button" class="circle-btn ${this.getCtrlClass()}" part="control-button" @click=${this._ctrlHandler}>
|
|
9437
|
-
${
|
|
9496
|
+
${G(this.getCtrlIconSvg())}
|
|
9438
9497
|
</button>
|
|
9439
9498
|
</div>
|
|
9440
9499
|
</div>
|
|
@@ -9469,7 +9528,7 @@ let we = class extends re {
|
|
|
9469
9528
|
${W(
|
|
9470
9529
|
b.setting.sendIconSvg !== "",
|
|
9471
9530
|
() => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
|
|
9472
|
-
() => u`<cb-icon part="user-input-send-icon" svg="${
|
|
9531
|
+
() => u`<cb-icon part="user-input-send-icon" svg="${si}"></cb-icon>`
|
|
9473
9532
|
)}
|
|
9474
9533
|
</sl-button>
|
|
9475
9534
|
${W(
|
|
@@ -9479,7 +9538,7 @@ let we = class extends re {
|
|
|
9479
9538
|
${W(
|
|
9480
9539
|
b.setting.attachIconSvg !== "",
|
|
9481
9540
|
() => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
|
|
9482
|
-
() => u`<cb-icon part="user-input-attach-icon" svg="${
|
|
9541
|
+
() => u`<cb-icon part="user-input-attach-icon" svg="${ni}"></cb-icon>`
|
|
9483
9542
|
)}
|
|
9484
9543
|
<!-- select file input -->
|
|
9485
9544
|
<input type="file" id="file" name="file" class="file-input" />
|
|
@@ -9493,8 +9552,8 @@ let we = class extends re {
|
|
|
9493
9552
|
<sl-button @click=${this._toggleAudioHandler} name="paperclip" label="Audio" size="small" class="audio-button" variant="text" circle>
|
|
9494
9553
|
${W(
|
|
9495
9554
|
b.webAudioStarted,
|
|
9496
|
-
() => u`<cb-icon svg="${
|
|
9497
|
-
() => u`<cb-icon svg="${
|
|
9555
|
+
() => u`<cb-icon svg="${da}"></cb-icon>`,
|
|
9556
|
+
() => u`<cb-icon svg="${ri}"></cb-icon>`
|
|
9498
9557
|
)}
|
|
9499
9558
|
</sl-button>
|
|
9500
9559
|
`,
|
|
@@ -9508,7 +9567,7 @@ let we = class extends re {
|
|
|
9508
9567
|
a.key === "Enter" && !a.shiftKey && this._sendHandler();
|
|
9509
9568
|
}
|
|
9510
9569
|
};
|
|
9511
|
-
we.styles =
|
|
9570
|
+
we.styles = Tn;
|
|
9512
9571
|
Ee([
|
|
9513
9572
|
x({ type: String, attribute: "placeholder" })
|
|
9514
9573
|
], we.prototype, "placeholder", 2);
|
|
@@ -9537,9 +9596,9 @@ Ee([
|
|
|
9537
9596
|
xe("sl-textarea")
|
|
9538
9597
|
], we.prototype, "inputElement", 2);
|
|
9539
9598
|
we = Ee([
|
|
9540
|
-
|
|
9599
|
+
Z("cb-user-input-mm")
|
|
9541
9600
|
], we);
|
|
9542
|
-
const
|
|
9601
|
+
const oi = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></svg>', Ln = J`
|
|
9543
9602
|
${ke}
|
|
9544
9603
|
|
|
9545
9604
|
sl-dialog::part(base) {
|
|
@@ -9574,10 +9633,10 @@ const ri = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="c
|
|
|
9574
9633
|
gap: 8px;
|
|
9575
9634
|
}
|
|
9576
9635
|
`;
|
|
9577
|
-
var
|
|
9578
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9636
|
+
var Rn = Object.defineProperty, zn = Object.getOwnPropertyDescriptor, Nt = (a, e, t, i) => {
|
|
9637
|
+
for (var s = i > 1 ? void 0 : i ? zn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9579
9638
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9580
|
-
return i && s &&
|
|
9639
|
+
return i && s && Rn(e, t, s), s;
|
|
9581
9640
|
};
|
|
9582
9641
|
let ct = class extends re {
|
|
9583
9642
|
constructor() {
|
|
@@ -9610,7 +9669,7 @@ let ct = class extends re {
|
|
|
9610
9669
|
<cb-icon
|
|
9611
9670
|
color="default"
|
|
9612
9671
|
style="font-size: 1em;"
|
|
9613
|
-
svg="${
|
|
9672
|
+
svg="${oi}"
|
|
9614
9673
|
></cb-icon>
|
|
9615
9674
|
</sl-button>
|
|
9616
9675
|
</header>
|
|
@@ -9623,25 +9682,25 @@ let ct = class extends re {
|
|
|
9623
9682
|
</sl-dialog>`;
|
|
9624
9683
|
}
|
|
9625
9684
|
};
|
|
9626
|
-
ct.styles =
|
|
9627
|
-
|
|
9685
|
+
ct.styles = Ln;
|
|
9686
|
+
Nt([
|
|
9628
9687
|
x({ type: Boolean })
|
|
9629
9688
|
], ct.prototype, "open", 2);
|
|
9630
|
-
|
|
9689
|
+
Nt([
|
|
9631
9690
|
x({ type: String, attribute: "label" })
|
|
9632
9691
|
], ct.prototype, "label", 2);
|
|
9633
|
-
|
|
9692
|
+
Nt([
|
|
9634
9693
|
x({ type: Number })
|
|
9635
9694
|
], ct.prototype, "zindex", 2);
|
|
9636
|
-
ct =
|
|
9637
|
-
|
|
9695
|
+
ct = Nt([
|
|
9696
|
+
Z("cb-dialog")
|
|
9638
9697
|
], ct);
|
|
9639
|
-
var
|
|
9698
|
+
var On = Object.defineProperty, Bn = Object.getOwnPropertyDescriptor, ci = (a, e, t, i) => {
|
|
9640
9699
|
for (var s = i > 1 ? void 0 : i ? Bn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9641
9700
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9642
|
-
return i && s &&
|
|
9701
|
+
return i && s && On(e, t, s), s;
|
|
9643
9702
|
};
|
|
9644
|
-
let
|
|
9703
|
+
let Dt = class extends re {
|
|
9645
9704
|
constructor() {
|
|
9646
9705
|
super(...arguments), this.open = !1;
|
|
9647
9706
|
}
|
|
@@ -9675,7 +9734,7 @@ let qt = class extends re {
|
|
|
9675
9734
|
this.emit("cancel");
|
|
9676
9735
|
}
|
|
9677
9736
|
};
|
|
9678
|
-
|
|
9737
|
+
Dt.styles = J`
|
|
9679
9738
|
.cb-clear-message-dialog {
|
|
9680
9739
|
}
|
|
9681
9740
|
|
|
@@ -9683,13 +9742,13 @@ qt.styles = J`
|
|
|
9683
9742
|
z-index: 1000;
|
|
9684
9743
|
}
|
|
9685
9744
|
`;
|
|
9686
|
-
|
|
9745
|
+
ci([
|
|
9687
9746
|
x({ type: Boolean })
|
|
9688
|
-
],
|
|
9689
|
-
|
|
9690
|
-
|
|
9691
|
-
],
|
|
9692
|
-
const
|
|
9747
|
+
], Dt.prototype, "open", 2);
|
|
9748
|
+
Dt = ci([
|
|
9749
|
+
Z("cb-clear-message-dialog")
|
|
9750
|
+
], Dt);
|
|
9751
|
+
const qn = J`
|
|
9693
9752
|
:host {
|
|
9694
9753
|
// width: 380px;
|
|
9695
9754
|
|
|
@@ -9749,10 +9808,10 @@ const On = J`
|
|
|
9749
9808
|
grid-column-start: 2;
|
|
9750
9809
|
}
|
|
9751
9810
|
`;
|
|
9752
|
-
var
|
|
9753
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
9811
|
+
var Dn = Object.defineProperty, Fn = Object.getOwnPropertyDescriptor, dt = (a, e, t, i) => {
|
|
9812
|
+
for (var s = i > 1 ? void 0 : i ? Fn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9754
9813
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9755
|
-
return i && s &&
|
|
9814
|
+
return i && s && Dn(e, t, s), s;
|
|
9756
9815
|
};
|
|
9757
9816
|
let Xe = class extends re {
|
|
9758
9817
|
constructor() {
|
|
@@ -9873,7 +9932,7 @@ let Xe = class extends re {
|
|
|
9873
9932
|
});
|
|
9874
9933
|
}
|
|
9875
9934
|
};
|
|
9876
|
-
Xe.styles =
|
|
9935
|
+
Xe.styles = qn;
|
|
9877
9936
|
dt([
|
|
9878
9937
|
x({ type: Boolean })
|
|
9879
9938
|
], Xe.prototype, "open", 2);
|
|
@@ -9890,9 +9949,9 @@ dt([
|
|
|
9890
9949
|
x({ type: Boolean })
|
|
9891
9950
|
], Xe.prototype, "customRequest", 2);
|
|
9892
9951
|
Xe = dt([
|
|
9893
|
-
|
|
9952
|
+
Z("cb-setting")
|
|
9894
9953
|
], Xe);
|
|
9895
|
-
const
|
|
9954
|
+
const jn = J`
|
|
9896
9955
|
${ke}
|
|
9897
9956
|
:host {
|
|
9898
9957
|
--primary-color: var(--sl-color-primary-600);
|
|
@@ -10006,12 +10065,12 @@ const Fn = J`
|
|
|
10006
10065
|
margin: 4px 4px 0px 0px;
|
|
10007
10066
|
}
|
|
10008
10067
|
`;
|
|
10009
|
-
var
|
|
10010
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10068
|
+
var Hn = Object.defineProperty, Vn = Object.getOwnPropertyDescriptor, li = (a, e, t, i) => {
|
|
10069
|
+
for (var s = i > 1 ? void 0 : i ? Vn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10011
10070
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10012
|
-
return i && s &&
|
|
10071
|
+
return i && s && Hn(e, t, s), s;
|
|
10013
10072
|
};
|
|
10014
|
-
let
|
|
10073
|
+
let Ft = class extends re {
|
|
10015
10074
|
constructor() {
|
|
10016
10075
|
super(...arguments), this.store = new it(this, b), this.open = !1;
|
|
10017
10076
|
}
|
|
@@ -10043,7 +10102,7 @@ let Dt = class extends re {
|
|
|
10043
10102
|
return a = b.appearanceAnchorBadgeVariant, a;
|
|
10044
10103
|
}
|
|
10045
10104
|
renderPopupLogo() {
|
|
10046
|
-
return b.setting.popupLogoUrl !== "" ? u`<img class="cb-engage-popup-img" src="${b.setting.popupLogoUrl}" />` : b.setting.popupLogoSvg !== "" ? u`<div class="cb-engage-popup-logo">${
|
|
10105
|
+
return b.setting.popupLogoUrl !== "" ? u`<img class="cb-engage-popup-img" src="${b.setting.popupLogoUrl}" />` : b.setting.popupLogoSvg !== "" ? u`<div class="cb-engage-popup-logo">${pe`${G(b.setting.popupLogoSvg)}`}</div>` : b.setting.logoUrl !== "" ? u`<img class="cb-engage-popup-img" src="${b.setting.logoUrl}" />` : b.setting.logoSvg !== "" ? u`<div class="cb-engage-popup-logo">${pe`${G(b.setting.logoSvg)}`}</div>` : null;
|
|
10047
10106
|
}
|
|
10048
10107
|
render() {
|
|
10049
10108
|
return u`
|
|
@@ -10052,8 +10111,8 @@ let Dt = class extends re {
|
|
|
10052
10111
|
<sl-button slot="anchor" label="Start" size="large" variant="primary" class="anchor-button" circle>
|
|
10053
10112
|
${W(
|
|
10054
10113
|
this.open,
|
|
10055
|
-
() => u`<div class="cb-anchor-icon" part="anchor-icon">${
|
|
10056
|
-
() => u`<div class="cb-anchor-icon" part="anchor-icon">${
|
|
10114
|
+
() => u`<div class="cb-anchor-icon" part="anchor-icon">${pe`${G(b.setting.anchorCloseSvg)}`}</div>`,
|
|
10115
|
+
() => u`<div class="cb-anchor-icon" part="anchor-icon">${pe`${G(b.setting.anchorOpenSvg)}`}</div>`
|
|
10057
10116
|
)}
|
|
10058
10117
|
${W(
|
|
10059
10118
|
!this.open && b.unreadMessages > 0,
|
|
@@ -10062,7 +10121,7 @@ let Dt = class extends re {
|
|
|
10062
10121
|
)}
|
|
10063
10122
|
</sl-button>
|
|
10064
10123
|
<div class="cb-engage-popup">
|
|
10065
|
-
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${
|
|
10124
|
+
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${pe`${G(oi)}`}</div>
|
|
10066
10125
|
<div class="cb-engage-popup-content">
|
|
10067
10126
|
${this.renderPopupLogo()}
|
|
10068
10127
|
<div>${b.setting.engageMessage}</div>
|
|
@@ -10073,22 +10132,22 @@ let Dt = class extends re {
|
|
|
10073
10132
|
`;
|
|
10074
10133
|
}
|
|
10075
10134
|
};
|
|
10076
|
-
|
|
10077
|
-
|
|
10135
|
+
Ft.styles = jn;
|
|
10136
|
+
li([
|
|
10078
10137
|
x({ type: Boolean })
|
|
10079
|
-
],
|
|
10080
|
-
|
|
10081
|
-
|
|
10082
|
-
],
|
|
10083
|
-
const
|
|
10138
|
+
], Ft.prototype, "open", 2);
|
|
10139
|
+
Ft = li([
|
|
10140
|
+
Z("cb-anchor")
|
|
10141
|
+
], Ft);
|
|
10142
|
+
const Nn = J`
|
|
10084
10143
|
${ke}
|
|
10085
|
-
`, Ba = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1L1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Un = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016a.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06a.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017a.2.2 0 0 1-.054-.06a.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/><path d="M7.002 12a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>',
|
|
10086
|
-
var
|
|
10087
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10144
|
+
`, Ba = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1L1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Un = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016a.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06a.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017a.2.2 0 0 1-.054-.06a.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/><path d="M7.002 12a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Wn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764a.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0a5.5 5.5 0 1 1-11 0"/><path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293L5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/></g></svg>', Gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m8.93 6.588l-2.29.287l-.082.38l.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319c.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246c-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0a1 1 0 0 1 2 0"/></g></svg>';
|
|
10145
|
+
var Xn = Object.defineProperty, Yn = Object.getOwnPropertyDescriptor, di = (a, e, t, i) => {
|
|
10146
|
+
for (var s = i > 1 ? void 0 : i ? Yn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10088
10147
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10089
|
-
return i && s &&
|
|
10148
|
+
return i && s && Xn(e, t, s), s;
|
|
10090
10149
|
};
|
|
10091
|
-
const
|
|
10150
|
+
const qa = {
|
|
10092
10151
|
error: {
|
|
10093
10152
|
variant: "danger",
|
|
10094
10153
|
icon: Ba
|
|
@@ -10103,35 +10162,35 @@ const Oa = {
|
|
|
10103
10162
|
},
|
|
10104
10163
|
success: {
|
|
10105
10164
|
variant: "success",
|
|
10106
|
-
icon:
|
|
10165
|
+
icon: Wn
|
|
10107
10166
|
},
|
|
10108
10167
|
info: {
|
|
10109
10168
|
variant: "primary",
|
|
10110
|
-
icon:
|
|
10169
|
+
icon: Gn
|
|
10111
10170
|
}
|
|
10112
10171
|
};
|
|
10113
|
-
let
|
|
10172
|
+
let jt = class extends re {
|
|
10114
10173
|
constructor() {
|
|
10115
10174
|
super(...arguments), this.status = "info";
|
|
10116
10175
|
}
|
|
10117
10176
|
render() {
|
|
10118
|
-
const { variant: a, icon: e } =
|
|
10177
|
+
const { variant: a, icon: e } = qa[this.status] || qa.info;
|
|
10119
10178
|
return u`<cb-icon svg=${e} color="${a}"></cb-icon>`;
|
|
10120
10179
|
}
|
|
10121
10180
|
};
|
|
10122
|
-
|
|
10123
|
-
|
|
10181
|
+
jt.styles = Ga;
|
|
10182
|
+
di([
|
|
10124
10183
|
x({ type: String })
|
|
10125
|
-
],
|
|
10126
|
-
|
|
10127
|
-
|
|
10128
|
-
],
|
|
10129
|
-
var
|
|
10130
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10184
|
+
], jt.prototype, "status", 2);
|
|
10185
|
+
jt = di([
|
|
10186
|
+
Z("cb-status-icon")
|
|
10187
|
+
], jt);
|
|
10188
|
+
var Jn = Object.getOwnPropertyDescriptor, Zn = (a, e, t, i) => {
|
|
10189
|
+
for (var s = i > 1 ? void 0 : i ? Jn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10131
10190
|
(o = a[r]) && (s = o(s) || s);
|
|
10132
10191
|
return s;
|
|
10133
10192
|
};
|
|
10134
|
-
let
|
|
10193
|
+
let ea = class extends re {
|
|
10135
10194
|
render() {
|
|
10136
10195
|
return u` <sl-alert variant="danger" open>
|
|
10137
10196
|
<cb-status-icon status="error" slot="icon"></cb-status-icon>
|
|
@@ -10147,10 +10206,10 @@ let Qt = class extends re {
|
|
|
10147
10206
|
this.emit("setting:show");
|
|
10148
10207
|
}
|
|
10149
10208
|
};
|
|
10150
|
-
|
|
10151
|
-
|
|
10152
|
-
|
|
10153
|
-
],
|
|
10209
|
+
ea.styles = Nn;
|
|
10210
|
+
ea = Zn([
|
|
10211
|
+
Z("cb-auth-alert")
|
|
10212
|
+
], ea);
|
|
10154
10213
|
const Kn = J`
|
|
10155
10214
|
sl-dialog::part(base) {
|
|
10156
10215
|
z-index: 1000;
|
|
@@ -10235,25 +10294,25 @@ const Kn = J`
|
|
|
10235
10294
|
filter: alpha(opacity=80);
|
|
10236
10295
|
}
|
|
10237
10296
|
`;
|
|
10238
|
-
var
|
|
10239
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10297
|
+
var Qn = Object.defineProperty, er = Object.getOwnPropertyDescriptor, ft = (a, e, t, i) => {
|
|
10298
|
+
for (var s = i > 1 ? void 0 : i ? er(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10240
10299
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10241
|
-
return i && s &&
|
|
10300
|
+
return i && s && Qn(e, t, s), s;
|
|
10242
10301
|
};
|
|
10243
|
-
const
|
|
10302
|
+
const Da = Je.noConflict(), tr = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16"><path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/></svg>';
|
|
10244
10303
|
let Ye = class extends re {
|
|
10245
10304
|
constructor() {
|
|
10246
10305
|
super(...arguments), this.store = new it(this, b), this.zindex = 100;
|
|
10247
10306
|
}
|
|
10248
10307
|
connectedCallback() {
|
|
10249
|
-
super.connectedCallback(),
|
|
10308
|
+
super.connectedCallback(), Da.info("connectedCallback");
|
|
10250
10309
|
}
|
|
10251
10310
|
firstUpdated() {
|
|
10252
|
-
this._rating.getSymbol = () =>
|
|
10311
|
+
this._rating.getSymbol = () => tr;
|
|
10253
10312
|
}
|
|
10254
10313
|
_stateEventHandler(a) {
|
|
10255
10314
|
const e = a.detail, t = e?.type || null;
|
|
10256
|
-
|
|
10315
|
+
Da.info(`FEEDBACK: stateEvent: ${t}`, e);
|
|
10257
10316
|
}
|
|
10258
10317
|
_cancelHandler() {
|
|
10259
10318
|
b.feedback && (console.log("Feedback dialog cancelled"), b.feedback = !1);
|
|
@@ -10274,7 +10333,7 @@ let Ye = class extends re {
|
|
|
10274
10333
|
b.feedbackScore = 0;
|
|
10275
10334
|
}}"
|
|
10276
10335
|
>
|
|
10277
|
-
${
|
|
10336
|
+
${pe`${G(ii)}`}
|
|
10278
10337
|
</div>
|
|
10279
10338
|
<sl-rating id="cb-feedback-rating-el" class="cb-feedback-rating" @sl-change="${this._ratingChangeHandler}" label="Rating" precision="1" .value=${b.feedbackScore}></sl-rating>
|
|
10280
10339
|
<div
|
|
@@ -10283,7 +10342,7 @@ let Ye = class extends re {
|
|
|
10283
10342
|
b.feedbackScore = 5;
|
|
10284
10343
|
}}"
|
|
10285
10344
|
>
|
|
10286
|
-
${
|
|
10345
|
+
${pe`${G(ai)}`}
|
|
10287
10346
|
</div>
|
|
10288
10347
|
</div>
|
|
10289
10348
|
<div style="display: flex">
|
|
@@ -10300,7 +10359,7 @@ let Ye = class extends re {
|
|
|
10300
10359
|
b.feedbackScore = this._rating.value;
|
|
10301
10360
|
}
|
|
10302
10361
|
async _submitHandler() {
|
|
10303
|
-
const a = this._name?.value || "", e = this._email?.value || "", t = this._comments?.value || "";
|
|
10362
|
+
const a = this._name?.value || "", e = this._email?.value || "", t = Vt(this._comments?.value || "");
|
|
10304
10363
|
this._comments.value = "", await b.submitFeedback(a, e, t);
|
|
10305
10364
|
}
|
|
10306
10365
|
};
|
|
@@ -10321,9 +10380,9 @@ ft([
|
|
|
10321
10380
|
xe("#cb-feedback-email-el")
|
|
10322
10381
|
], Ye.prototype, "_email", 2);
|
|
10323
10382
|
Ye = ft([
|
|
10324
|
-
|
|
10383
|
+
Z("cb-dialog-feedback")
|
|
10325
10384
|
], Ye);
|
|
10326
|
-
const
|
|
10385
|
+
const ar = J`
|
|
10327
10386
|
${ke}
|
|
10328
10387
|
:host {
|
|
10329
10388
|
display: block;
|
|
@@ -10406,7 +10465,7 @@ const tr = J`
|
|
|
10406
10465
|
display: inline;
|
|
10407
10466
|
}
|
|
10408
10467
|
`;
|
|
10409
|
-
class
|
|
10468
|
+
class ir extends HTMLElement {
|
|
10410
10469
|
static get observedAttributes() {
|
|
10411
10470
|
return ["audio-selector", "max-additional-height", "disabled", "fft-size"];
|
|
10412
10471
|
}
|
|
@@ -10629,9 +10688,9 @@ class ar extends HTMLElement {
|
|
|
10629
10688
|
this._animationId && (cancelAnimationFrame(this._animationId), this._animationId = null);
|
|
10630
10689
|
}
|
|
10631
10690
|
}
|
|
10632
|
-
customElements.get("volume-visualizer") || customElements.define("volume-visualizer",
|
|
10633
|
-
const
|
|
10634
|
-
class
|
|
10691
|
+
customElements.get("volume-visualizer") || customElements.define("volume-visualizer", ir);
|
|
10692
|
+
const fa = 1, Fa = 2;
|
|
10693
|
+
class fi extends HTMLElement {
|
|
10635
10694
|
constructor() {
|
|
10636
10695
|
super(), this.attachShadow({ mode: "open" }), this._analyserInput = null, this._dataArrayInput = null, this._analyserOutput = null, this._dataArrayOutput = null, this._thinking = !1, this._muted = !1, this._fftSize = 512, this._smoothingTimeConstant = 0.55, this._canvas = null, this._context = null, this._lastTime = 0, this._render();
|
|
10637
10696
|
}
|
|
@@ -10670,7 +10729,7 @@ class di extends HTMLElement {
|
|
|
10670
10729
|
}
|
|
10671
10730
|
return r;
|
|
10672
10731
|
};
|
|
10673
|
-
return this._analyserOutput && (this._analyserOutput.getByteFrequencyData(this._dataArrayOutput), e(this._dataArrayOutput)) ? { data: t(this._dataArrayOutput), source:
|
|
10732
|
+
return this._analyserOutput && (this._analyserOutput.getByteFrequencyData(this._dataArrayOutput), e(this._dataArrayOutput)) ? { data: t(this._dataArrayOutput), source: Fa, hasActivity: !0 } : this._analyserInput && !this._muted && (this._analyserInput.getByteFrequencyData(this._dataArrayInput), e(this._dataArrayInput)) ? { data: t(this._dataArrayInput), source: fa, hasActivity: !0 } : this._analyserOutput ? { data: t(this._dataArrayOutput), source: Fa, hasActivity: !1 } : { data: [], source: null, hasActivity: !1 };
|
|
10674
10733
|
}
|
|
10675
10734
|
_render() {
|
|
10676
10735
|
const e = `
|
|
@@ -10713,7 +10772,7 @@ class di extends HTMLElement {
|
|
|
10713
10772
|
this._stop(), this._analyserInput = null, this._analyserOutput = null;
|
|
10714
10773
|
}
|
|
10715
10774
|
}
|
|
10716
|
-
class
|
|
10775
|
+
class sr extends fi {
|
|
10717
10776
|
constructor() {
|
|
10718
10777
|
super(), this._ribbons = [], this._lastTime = 0, this._ribbons.push(
|
|
10719
10778
|
new It(
|
|
@@ -10757,7 +10816,7 @@ class ir extends di {
|
|
|
10757
10816
|
f.update(s, i, this._thinking), f.draw(e, t, r, this._thinking);
|
|
10758
10817
|
}
|
|
10759
10818
|
}
|
|
10760
|
-
customElements.get("volume-visualizer-liquid") || customElements.define("volume-visualizer-liquid",
|
|
10819
|
+
customElements.get("volume-visualizer-liquid") || customElements.define("volume-visualizer-liquid", sr);
|
|
10761
10820
|
class It {
|
|
10762
10821
|
constructor(e, t, i, s) {
|
|
10763
10822
|
this.inputColorRGB = t, this.outputColorRGB = i, this.currentColorRGB = { ...i }, this.options = s, this.segments = e, this.renderPoints = Array(e).fill(0), this.targetPoints = Array(e).fill(0), this.velocity = Array(e).fill(0), this.springStrength = s.springStrength || 10, this.damping = s.damping || 0.5, this.phase = s.phase || 0, this.scale = s.scale || 1, this.thinkingPhase = 0;
|
|
@@ -10784,11 +10843,11 @@ class It {
|
|
|
10784
10843
|
if (v === 0)
|
|
10785
10844
|
e.moveTo(k, w);
|
|
10786
10845
|
else {
|
|
10787
|
-
const _ = (v - 1) * o, P = this.renderPoints[v - 1] * i * 0.8,
|
|
10788
|
-
e.bezierCurveTo(
|
|
10846
|
+
const _ = (v - 1) * o, P = this.renderPoints[v - 1] * i * 0.8, E = _ + o * 0.5, M = P, L = k - o * 0.5, C = w;
|
|
10847
|
+
e.bezierCurveTo(E, M, L, C, k, w);
|
|
10789
10848
|
}
|
|
10790
10849
|
}
|
|
10791
|
-
e.lineTo(t, 0), e.lineTo(0, 0), s ===
|
|
10850
|
+
e.lineTo(t, 0), e.lineTo(0, 0), s === fa && !r ? this.currentColorRGB = this._lerpColor(this.currentColorRGB, this.inputColorRGB, 0.02) : this.currentColorRGB = this._lerpColor(this.currentColorRGB, this.outputColorRGB, 0.02);
|
|
10792
10851
|
const f = e.createLinearGradient(0, 0, 0, i);
|
|
10793
10852
|
f.addColorStop(0, this._rgbToString(this.currentColorRGB, 0.5)), f.addColorStop(0.5, this._rgbToString(this.currentColorRGB, 0.75)), f.addColorStop(1, this._rgbToString(this.currentColorRGB, 0.25));
|
|
10794
10853
|
const p = e.createLinearGradient(0, 0, t, 0);
|
|
@@ -10816,7 +10875,7 @@ class It {
|
|
|
10816
10875
|
}
|
|
10817
10876
|
}
|
|
10818
10877
|
}
|
|
10819
|
-
class
|
|
10878
|
+
class nr extends fi {
|
|
10820
10879
|
constructor() {
|
|
10821
10880
|
super(), this._numBars = 32, this._renderHeights = Array(this._numBars).fill(0), this._targetHeights = Array(this._numBars).fill(0), this._velocity = Array(this._numBars).fill(0), this._springStrength = 25, this._damping = 0.75, this._inputColor = { r: 255, g: 126, b: 103 }, this._outputColor = { r: 99, g: 193, b: 208 }, this._currentColor = { ...this._outputColor }, this._thinkingPhase = 0;
|
|
10822
10881
|
}
|
|
@@ -10833,7 +10892,7 @@ class sr extends di {
|
|
|
10833
10892
|
_draw(e, t, i) {
|
|
10834
10893
|
e.clearRect(0, 0, t.width, t.height);
|
|
10835
10894
|
const { data: s, source: r, hasActivity: o } = this._getAudioFrequencyData();
|
|
10836
|
-
if (r ===
|
|
10895
|
+
if (r === fa && !this._thinking ? this._currentColor = this._lerpColor(this._currentColor, this._inputColor, 0.1) : this._currentColor = this._lerpColor(this._currentColor, this._outputColor, 0.1), this._thinking) {
|
|
10837
10896
|
this._thinkingPhase -= i * 4;
|
|
10838
10897
|
for (let w = 0; w < this._numBars; w++) {
|
|
10839
10898
|
const _ = w / this._numBars;
|
|
@@ -10858,27 +10917,27 @@ class sr extends di {
|
|
|
10858
10917
|
for (let w = 0; w < this._numBars; w++) {
|
|
10859
10918
|
const _ = this._renderHeights[w] * t.height * 0.9, P = p - (w + 1) * (f * 1.2);
|
|
10860
10919
|
e.fillRect(P, v - _ / 2, f, _);
|
|
10861
|
-
const
|
|
10862
|
-
e.fillRect(
|
|
10920
|
+
const E = p + w * (f * 1.2);
|
|
10921
|
+
e.fillRect(E, v - _ / 2, f, _);
|
|
10863
10922
|
}
|
|
10864
10923
|
e.restore();
|
|
10865
10924
|
}
|
|
10866
10925
|
}
|
|
10867
|
-
customElements.get("volume-visualizer-bars") || customElements.define("volume-visualizer-bars",
|
|
10868
|
-
const
|
|
10869
|
-
var
|
|
10870
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
10926
|
+
customElements.get("volume-visualizer-bars") || customElements.define("volume-visualizer-bars", nr);
|
|
10927
|
+
const rr = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M19 11h-1.7c0 .74-.16 1.43-.43 2.05l1.23 1.23c.56-.98.9-2.09.9-3.28m-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9 3.34 9 5v.18zM4.27 3L3 4.27l6.01 6.01V11c0 1.66 1.33 3 2.99 3c.22 0 .44-.03.65-.08l1.66 1.66c-.71.33-1.5.52-2.31.52c-2.76 0-5.3-2.1-5.3-5.1H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c.91-.13 1.77-.45 2.54-.9L19.73 21L21 19.73z"/></svg>';
|
|
10928
|
+
var or = Object.getOwnPropertyDescriptor, cr = (a, e, t, i) => {
|
|
10929
|
+
for (var s = i > 1 ? void 0 : i ? or(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10871
10930
|
(o = a[r]) && (s = o(s) || s);
|
|
10872
10931
|
return s;
|
|
10873
10932
|
};
|
|
10874
10933
|
const bt = Je.noConflict();
|
|
10875
10934
|
bt.setLevel("info");
|
|
10876
|
-
let
|
|
10935
|
+
let ta = class extends re {
|
|
10877
10936
|
constructor() {
|
|
10878
10937
|
super(...arguments), this.store = new it(this, b), this.unsubscribeTypingActive = b.subscribe(
|
|
10879
10938
|
this._handleTypingActiveChanged.bind(this),
|
|
10880
10939
|
["typingActive"]
|
|
10881
|
-
), this.volumeVisualizerRef =
|
|
10940
|
+
), this.volumeVisualizerRef = ji(), this.volumeVisualizerInitialized = !1;
|
|
10882
10941
|
}
|
|
10883
10942
|
/*
|
|
10884
10943
|
createRenderRoot() {
|
|
@@ -10908,7 +10967,7 @@ let ea = class extends re {
|
|
|
10908
10967
|
!0,
|
|
10909
10968
|
() => u`
|
|
10910
10969
|
<button type="button" part="${b.webAudioMuted ? "audio-unmute-button" : "audio-mute-button"}" class="circle-btn ${b.webAudioMuted ? "danger" : "clear"}" title="${b.webAudioMuted ? "Unmute" : "Mute"}" @click=${this._toggleMute}>
|
|
10911
|
-
${
|
|
10970
|
+
${G(rr)}
|
|
10912
10971
|
</button>
|
|
10913
10972
|
`,
|
|
10914
10973
|
() => u``
|
|
@@ -10917,7 +10976,7 @@ let ea = class extends re {
|
|
|
10917
10976
|
${this.renderVisualizer()}
|
|
10918
10977
|
</div>
|
|
10919
10978
|
<button type="button" part="audio-end-button" class="circle-btn clear" title="End" @click=${this._toggleHangup}>
|
|
10920
|
-
${
|
|
10979
|
+
${G(da)}
|
|
10921
10980
|
</button>
|
|
10922
10981
|
</div>
|
|
10923
10982
|
</div>` : null;
|
|
@@ -10973,11 +11032,11 @@ let ea = class extends re {
|
|
|
10973
11032
|
b.webAudioStarted && (bt.info(`Typing state changed: ${e}`), this.volumeVisualizerRef.value && this.volumeVisualizerRef.value.setThinking(e));
|
|
10974
11033
|
}
|
|
10975
11034
|
};
|
|
10976
|
-
|
|
10977
|
-
|
|
10978
|
-
|
|
10979
|
-
],
|
|
10980
|
-
class
|
|
11035
|
+
ta.styles = ar;
|
|
11036
|
+
ta = cr([
|
|
11037
|
+
Z("cb-audio-controls")
|
|
11038
|
+
], ta);
|
|
11039
|
+
class aa extends Error {
|
|
10981
11040
|
response;
|
|
10982
11041
|
request;
|
|
10983
11042
|
options;
|
|
@@ -10986,7 +11045,7 @@ class ta extends Error {
|
|
|
10986
11045
|
super(`Request failed with ${f}: ${t.method} ${t.url}`), this.name = "HTTPError", this.response = e, this.request = t, this.options = i;
|
|
10987
11046
|
}
|
|
10988
11047
|
}
|
|
10989
|
-
class
|
|
11048
|
+
class hi extends Error {
|
|
10990
11049
|
name = "NonError";
|
|
10991
11050
|
value;
|
|
10992
11051
|
constructor(e) {
|
|
@@ -10998,17 +11057,17 @@ class fi extends Error {
|
|
|
10998
11057
|
super(t), this.value = e;
|
|
10999
11058
|
}
|
|
11000
11059
|
}
|
|
11001
|
-
class
|
|
11060
|
+
class Xt extends Error {
|
|
11002
11061
|
name = "ForceRetryError";
|
|
11003
11062
|
customDelay;
|
|
11004
11063
|
code;
|
|
11005
11064
|
customRequest;
|
|
11006
11065
|
constructor(e) {
|
|
11007
|
-
const t = e?.cause ? e.cause instanceof Error ? e.cause : new
|
|
11066
|
+
const t = e?.cause ? e.cause instanceof Error ? e.cause : new hi(e.cause) : void 0;
|
|
11008
11067
|
super(e?.code ? `Forced retry: ${e.code}` : "Forced retry", t ? { cause: t } : void 0), this.customDelay = e?.delay, this.code = e?.code, this.customRequest = e?.request;
|
|
11009
11068
|
}
|
|
11010
11069
|
}
|
|
11011
|
-
const
|
|
11070
|
+
const ja = (() => {
|
|
11012
11071
|
let a = !1, e = !1;
|
|
11013
11072
|
const t = typeof globalThis.ReadableStream == "function", i = typeof globalThis.Request == "function";
|
|
11014
11073
|
if (t && i)
|
|
@@ -11027,7 +11086,7 @@ const Fa = (() => {
|
|
|
11027
11086
|
throw s;
|
|
11028
11087
|
}
|
|
11029
11088
|
return a && !e;
|
|
11030
|
-
})(),
|
|
11089
|
+
})(), lr = typeof globalThis.AbortController == "function", bi = typeof globalThis.AbortSignal == "function" && typeof globalThis.AbortSignal.any == "function", dr = typeof globalThis.ReadableStream == "function", fr = typeof globalThis.FormData == "function", ui = ["get", "post", "put", "patch", "head", "delete"], hr = {
|
|
11031
11090
|
json: "application/json",
|
|
11032
11091
|
text: "text/*",
|
|
11033
11092
|
formData: "multipart/form-data",
|
|
@@ -11036,14 +11095,14 @@ const Fa = (() => {
|
|
|
11036
11095
|
// Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).
|
|
11037
11096
|
// We still feature-check at runtime before exposing the shortcut.
|
|
11038
11097
|
bytes: "*/*"
|
|
11039
|
-
},
|
|
11040
|
-
class
|
|
11098
|
+
}, Yt = 2147483647, br = new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length, pi = Symbol("stop");
|
|
11099
|
+
class gi {
|
|
11041
11100
|
options;
|
|
11042
11101
|
constructor(e) {
|
|
11043
11102
|
this.options = e;
|
|
11044
11103
|
}
|
|
11045
11104
|
}
|
|
11046
|
-
const
|
|
11105
|
+
const ur = (a) => new gi(a), pr = {
|
|
11047
11106
|
json: !0,
|
|
11048
11107
|
parseJson: !0,
|
|
11049
11108
|
stringifyJson: !0,
|
|
@@ -11057,10 +11116,10 @@ const br = (a) => new pi(a), ur = {
|
|
|
11057
11116
|
onUploadProgress: !0,
|
|
11058
11117
|
fetch: !0,
|
|
11059
11118
|
context: !0
|
|
11060
|
-
},
|
|
11119
|
+
}, gr = {
|
|
11061
11120
|
next: !0
|
|
11062
11121
|
// Next.js cache revalidation (revalidate, tags)
|
|
11063
|
-
},
|
|
11122
|
+
}, mr = {
|
|
11064
11123
|
method: !0,
|
|
11065
11124
|
headers: !0,
|
|
11066
11125
|
body: !0,
|
|
@@ -11075,13 +11134,13 @@ const br = (a) => new pi(a), ur = {
|
|
|
11075
11134
|
signal: !0,
|
|
11076
11135
|
window: !0,
|
|
11077
11136
|
duplex: !0
|
|
11078
|
-
},
|
|
11137
|
+
}, yr = (a) => {
|
|
11079
11138
|
if (!a)
|
|
11080
11139
|
return 0;
|
|
11081
11140
|
if (a instanceof FormData) {
|
|
11082
11141
|
let e = 0;
|
|
11083
11142
|
for (const [t, i] of a)
|
|
11084
|
-
e +=
|
|
11143
|
+
e += br, e += new TextEncoder().encode(`Content-Disposition: form-data; name="${t}"`).length, e += typeof i == "string" ? new TextEncoder().encode(i).length : i.size;
|
|
11085
11144
|
return e;
|
|
11086
11145
|
}
|
|
11087
11146
|
if (a instanceof Blob)
|
|
@@ -11102,7 +11161,7 @@ const br = (a) => new pi(a), ur = {
|
|
|
11102
11161
|
return 0;
|
|
11103
11162
|
}
|
|
11104
11163
|
return 0;
|
|
11105
|
-
},
|
|
11164
|
+
}, mi = (a, e, t) => {
|
|
11106
11165
|
let i, s = 0;
|
|
11107
11166
|
return a.pipeThrough(new TransformStream({
|
|
11108
11167
|
transform(r, o) {
|
|
@@ -11117,7 +11176,7 @@ const br = (a) => new pi(a), ur = {
|
|
|
11117
11176
|
i && (s += i.byteLength, t?.({ percent: 1, totalBytes: Math.max(e, s), transferredBytes: s }, i));
|
|
11118
11177
|
}
|
|
11119
11178
|
}));
|
|
11120
|
-
},
|
|
11179
|
+
}, vr = (a, e) => {
|
|
11121
11180
|
if (!a.body)
|
|
11122
11181
|
return a;
|
|
11123
11182
|
if (a.status === 204)
|
|
@@ -11127,40 +11186,40 @@ const br = (a) => new pi(a), ur = {
|
|
|
11127
11186
|
headers: a.headers
|
|
11128
11187
|
});
|
|
11129
11188
|
const t = Math.max(0, Number(a.headers.get("content-length")) || 0);
|
|
11130
|
-
return new Response(
|
|
11189
|
+
return new Response(mi(a.body, t, e), {
|
|
11131
11190
|
status: a.status,
|
|
11132
11191
|
statusText: a.statusText,
|
|
11133
11192
|
headers: a.headers
|
|
11134
11193
|
});
|
|
11135
|
-
},
|
|
11194
|
+
}, wr = (a, e, t) => {
|
|
11136
11195
|
if (!a.body)
|
|
11137
11196
|
return a;
|
|
11138
|
-
const i =
|
|
11197
|
+
const i = yr(t ?? a.body);
|
|
11139
11198
|
return new Request(a, {
|
|
11140
11199
|
// @ts-expect-error - Types are outdated.
|
|
11141
11200
|
duplex: "half",
|
|
11142
|
-
body:
|
|
11201
|
+
body: mi(a.body, i, e)
|
|
11143
11202
|
});
|
|
11144
11203
|
}, Qe = (a) => a !== null && typeof a == "object", Et = (...a) => {
|
|
11145
11204
|
for (const e of a)
|
|
11146
11205
|
if ((!Qe(e) || Array.isArray(e)) && e !== void 0)
|
|
11147
11206
|
throw new TypeError("The `options` argument must be an object");
|
|
11148
|
-
return
|
|
11149
|
-
},
|
|
11207
|
+
return ha({}, ...a);
|
|
11208
|
+
}, yi = (a = {}, e = {}) => {
|
|
11150
11209
|
const t = new globalThis.Headers(a), i = e instanceof globalThis.Headers, s = new globalThis.Headers(e);
|
|
11151
11210
|
for (const [r, o] of s.entries())
|
|
11152
11211
|
i && o === "undefined" || o === void 0 ? t.delete(r) : t.set(r, o);
|
|
11153
11212
|
return t;
|
|
11154
11213
|
};
|
|
11155
11214
|
function $t(a, e, t) {
|
|
11156
|
-
return Object.hasOwn(e, t) && e[t] === void 0 ? [] :
|
|
11215
|
+
return Object.hasOwn(e, t) && e[t] === void 0 ? [] : ha(a[t] ?? [], e[t] ?? []);
|
|
11157
11216
|
}
|
|
11158
|
-
const
|
|
11217
|
+
const vi = (a = {}, e = {}) => ({
|
|
11159
11218
|
beforeRequest: $t(a, e, "beforeRequest"),
|
|
11160
11219
|
beforeRetry: $t(a, e, "beforeRetry"),
|
|
11161
11220
|
afterResponse: $t(a, e, "afterResponse"),
|
|
11162
11221
|
beforeError: $t(a, e, "beforeError")
|
|
11163
|
-
}),
|
|
11222
|
+
}), xr = (a, e) => {
|
|
11164
11223
|
const t = new URLSearchParams();
|
|
11165
11224
|
for (const i of [a, e])
|
|
11166
11225
|
if (i !== void 0)
|
|
@@ -11182,7 +11241,7 @@ const yi = (a = {}, e = {}) => ({
|
|
|
11182
11241
|
t.append(r, o);
|
|
11183
11242
|
}
|
|
11184
11243
|
return t;
|
|
11185
|
-
},
|
|
11244
|
+
}, ha = (...a) => {
|
|
11186
11245
|
let e = {}, t = {}, i = {}, s;
|
|
11187
11246
|
const r = [];
|
|
11188
11247
|
for (const o of a)
|
|
@@ -11204,28 +11263,28 @@ const yi = (a = {}, e = {}) => ({
|
|
|
11204
11263
|
continue;
|
|
11205
11264
|
}
|
|
11206
11265
|
if (f === "searchParams") {
|
|
11207
|
-
p == null ? s = void 0 : s = s === void 0 ? p :
|
|
11266
|
+
p == null ? s = void 0 : s = s === void 0 ? p : xr(s, p);
|
|
11208
11267
|
continue;
|
|
11209
11268
|
}
|
|
11210
|
-
Qe(p) && f in e && (p =
|
|
11269
|
+
Qe(p) && f in e && (p = ha(e[f], p)), e = { ...e, [f]: p };
|
|
11211
11270
|
}
|
|
11212
|
-
Qe(o.hooks) && (i =
|
|
11271
|
+
Qe(o.hooks) && (i = vi(i, o.hooks), e.hooks = i), Qe(o.headers) && (t = yi(t, o.headers), e.headers = t);
|
|
11213
11272
|
}
|
|
11214
|
-
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] :
|
|
11215
|
-
},
|
|
11273
|
+
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] : bi ? e.signal = AbortSignal.any(r) : e.signal = r.at(-1)), e.context === void 0 && (e.context = {}), e;
|
|
11274
|
+
}, kr = (a) => ui.includes(a) ? a.toUpperCase() : a, _r = ["get", "put", "head", "delete", "options", "trace"], Sr = [408, 413, 429, 500, 502, 503, 504], Cr = [413, 429, 503], Ha = {
|
|
11216
11275
|
limit: 2,
|
|
11217
|
-
methods:
|
|
11218
|
-
statusCodes:
|
|
11219
|
-
afterStatusCodes:
|
|
11276
|
+
methods: _r,
|
|
11277
|
+
statusCodes: Sr,
|
|
11278
|
+
afterStatusCodes: Cr,
|
|
11220
11279
|
maxRetryAfter: Number.POSITIVE_INFINITY,
|
|
11221
11280
|
backoffLimit: Number.POSITIVE_INFINITY,
|
|
11222
11281
|
delay: (a) => 0.3 * 2 ** (a - 1) * 1e3,
|
|
11223
11282
|
jitter: void 0,
|
|
11224
11283
|
retryOnTimeout: !1
|
|
11225
|
-
},
|
|
11284
|
+
}, Ar = (a = {}) => {
|
|
11226
11285
|
if (typeof a == "number")
|
|
11227
11286
|
return {
|
|
11228
|
-
...
|
|
11287
|
+
...Ha,
|
|
11229
11288
|
limit: a
|
|
11230
11289
|
};
|
|
11231
11290
|
if (a.methods && !Array.isArray(a.methods))
|
|
@@ -11233,27 +11292,27 @@ const yi = (a = {}, e = {}) => ({
|
|
|
11233
11292
|
if (a.statusCodes && !Array.isArray(a.statusCodes))
|
|
11234
11293
|
throw new Error("retry.statusCodes must be an array");
|
|
11235
11294
|
return {
|
|
11236
|
-
...
|
|
11295
|
+
...Ha,
|
|
11237
11296
|
...a
|
|
11238
11297
|
};
|
|
11239
11298
|
};
|
|
11240
|
-
class
|
|
11299
|
+
class ia extends Error {
|
|
11241
11300
|
request;
|
|
11242
11301
|
constructor(e) {
|
|
11243
11302
|
super(`Request timed out: ${e.method} ${e.url}`), this.name = "TimeoutError", this.request = e;
|
|
11244
11303
|
}
|
|
11245
11304
|
}
|
|
11246
|
-
async function
|
|
11305
|
+
async function Mr(a, e, t, i) {
|
|
11247
11306
|
return new Promise((s, r) => {
|
|
11248
11307
|
const o = setTimeout(() => {
|
|
11249
|
-
t && t.abort(), r(new
|
|
11308
|
+
t && t.abort(), r(new ia(a));
|
|
11250
11309
|
}, i.timeout);
|
|
11251
11310
|
i.fetch(a, e).then(s).catch(r).then(() => {
|
|
11252
11311
|
clearTimeout(o);
|
|
11253
11312
|
});
|
|
11254
11313
|
});
|
|
11255
11314
|
}
|
|
11256
|
-
async function
|
|
11315
|
+
async function Tr(a, { signal: e }) {
|
|
11257
11316
|
return new Promise((t, i) => {
|
|
11258
11317
|
e && (e.throwIfAborted(), e.addEventListener("abort", s, { once: !0 }));
|
|
11259
11318
|
function s() {
|
|
@@ -11264,35 +11323,35 @@ async function Mr(a, { signal: e }) {
|
|
|
11264
11323
|
}, a);
|
|
11265
11324
|
});
|
|
11266
11325
|
}
|
|
11267
|
-
const
|
|
11326
|
+
const Ir = (a, e) => {
|
|
11268
11327
|
const t = {};
|
|
11269
11328
|
for (const i in e)
|
|
11270
|
-
Object.hasOwn(e, i) && !(i in
|
|
11329
|
+
Object.hasOwn(e, i) && !(i in mr) && !(i in pr) && (!(i in a) || i in gr) && (t[i] = e[i]);
|
|
11271
11330
|
return t;
|
|
11272
|
-
},
|
|
11273
|
-
function Er(a) {
|
|
11274
|
-
return a instanceof ta || a?.name === ta.name;
|
|
11275
|
-
}
|
|
11331
|
+
}, Er = (a) => a === void 0 ? !1 : Array.isArray(a) ? a.length > 0 : a instanceof URLSearchParams ? a.size > 0 : typeof a == "object" ? Object.keys(a).length > 0 : typeof a == "string" ? a.trim().length > 0 : !!a;
|
|
11276
11332
|
function $r(a) {
|
|
11277
11333
|
return a instanceof aa || a?.name === aa.name;
|
|
11278
11334
|
}
|
|
11335
|
+
function Pr(a) {
|
|
11336
|
+
return a instanceof ia || a?.name === ia.name;
|
|
11337
|
+
}
|
|
11279
11338
|
class vt {
|
|
11280
11339
|
static create(e, t) {
|
|
11281
11340
|
const i = new vt(e, t), s = async () => {
|
|
11282
|
-
if (typeof i.#e.timeout == "number" && i.#e.timeout >
|
|
11283
|
-
throw new RangeError(`The \`timeout\` option cannot be greater than ${
|
|
11341
|
+
if (typeof i.#e.timeout == "number" && i.#e.timeout > Yt)
|
|
11342
|
+
throw new RangeError(`The \`timeout\` option cannot be greater than ${Yt}`);
|
|
11284
11343
|
await Promise.resolve();
|
|
11285
11344
|
let o = await i.#p();
|
|
11286
11345
|
for (const f of i.#e.hooks.afterResponse) {
|
|
11287
11346
|
const p = i.#d(o.clone()), v = await f(i.request, i.#o(), p, { retryCount: i.#a });
|
|
11288
|
-
if (v instanceof globalThis.Response && (o = v), v instanceof
|
|
11347
|
+
if (v instanceof globalThis.Response && (o = v), v instanceof gi)
|
|
11289
11348
|
throw await Promise.all([
|
|
11290
11349
|
p.body?.cancel(),
|
|
11291
11350
|
o.body?.cancel()
|
|
11292
|
-
]), new
|
|
11351
|
+
]), new Xt(v.options);
|
|
11293
11352
|
}
|
|
11294
11353
|
if (i.#d(o), !o.ok && (typeof i.#e.throwHttpErrors == "function" ? i.#e.throwHttpErrors(o.status) : i.#e.throwHttpErrors)) {
|
|
11295
|
-
let f = new
|
|
11354
|
+
let f = new aa(o, i.request, i.#o());
|
|
11296
11355
|
for (const p of i.#e.hooks.beforeError)
|
|
11297
11356
|
f = await p(f, { retryCount: i.#a });
|
|
11298
11357
|
throw f;
|
|
@@ -11300,16 +11359,16 @@ class vt {
|
|
|
11300
11359
|
if (i.#e.onDownloadProgress) {
|
|
11301
11360
|
if (typeof i.#e.onDownloadProgress != "function")
|
|
11302
11361
|
throw new TypeError("The `onDownloadProgress` option must be a function");
|
|
11303
|
-
if (!
|
|
11362
|
+
if (!dr)
|
|
11304
11363
|
throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");
|
|
11305
|
-
return
|
|
11364
|
+
return vr(o.clone(), i.#e.onDownloadProgress);
|
|
11306
11365
|
}
|
|
11307
11366
|
return o;
|
|
11308
11367
|
}, r = i.#f(s).finally(async () => {
|
|
11309
11368
|
const o = i.#n, f = [];
|
|
11310
11369
|
o && !o.bodyUsed && f.push(o.body?.cancel()), i.request.bodyUsed || f.push(i.request.body?.cancel()), await Promise.all(f);
|
|
11311
11370
|
});
|
|
11312
|
-
for (const [o, f] of Object.entries(
|
|
11371
|
+
for (const [o, f] of Object.entries(hr))
|
|
11313
11372
|
o === "bytes" && typeof globalThis.Response?.prototype?.bytes != "function" || (r[o] = async () => {
|
|
11314
11373
|
i.request.headers.set("accept", i.request.headers.get("accept") || f);
|
|
11315
11374
|
const p = await r;
|
|
@@ -11340,17 +11399,17 @@ class vt {
|
|
|
11340
11399
|
constructor(e, t = {}) {
|
|
11341
11400
|
if (this.#t = e, this.#e = {
|
|
11342
11401
|
...t,
|
|
11343
|
-
headers:
|
|
11344
|
-
hooks:
|
|
11402
|
+
headers: yi(this.#t.headers, t.headers),
|
|
11403
|
+
hooks: vi({
|
|
11345
11404
|
beforeRequest: [],
|
|
11346
11405
|
beforeRetry: [],
|
|
11347
11406
|
beforeError: [],
|
|
11348
11407
|
afterResponse: []
|
|
11349
11408
|
}, t.hooks),
|
|
11350
|
-
method:
|
|
11409
|
+
method: kr(t.method ?? this.#t.method ?? "GET"),
|
|
11351
11410
|
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
11352
11411
|
prefixUrl: String(t.prefixUrl || ""),
|
|
11353
|
-
retry:
|
|
11412
|
+
retry: Ar(t.retry),
|
|
11354
11413
|
throwHttpErrors: t.throwHttpErrors ?? !0,
|
|
11355
11414
|
timeout: t.timeout ?? 1e4,
|
|
11356
11415
|
fetch: t.fetch ?? globalThis.fetch.bind(globalThis),
|
|
@@ -11362,16 +11421,16 @@ class vt {
|
|
|
11362
11421
|
throw new Error("`input` must not begin with a slash when using `prefixUrl`");
|
|
11363
11422
|
this.#e.prefixUrl.endsWith("/") || (this.#e.prefixUrl += "/"), this.#t = this.#e.prefixUrl + this.#t;
|
|
11364
11423
|
}
|
|
11365
|
-
|
|
11424
|
+
lr && bi && (this.#s = this.#e.signal ?? this.#t.signal, this.#i = new globalThis.AbortController(), this.#e.signal = this.#s ? AbortSignal.any([this.#s, this.#i.signal]) : this.#i.signal), ja && (this.#e.duplex = "half"), this.#e.json !== void 0 && (this.#e.body = this.#e.stringifyJson?.(this.#e.json) ?? JSON.stringify(this.#e.json), this.#e.headers.set("content-type", this.#e.headers.get("content-type") ?? "application/json"));
|
|
11366
11425
|
const i = t.headers && new globalThis.Headers(t.headers).has("content-type");
|
|
11367
|
-
if (this.#t instanceof globalThis.Request && (
|
|
11426
|
+
if (this.#t instanceof globalThis.Request && (fr && this.#e.body instanceof globalThis.FormData || this.#e.body instanceof URLSearchParams) && !i && this.#e.headers.delete("content-type"), this.request = new globalThis.Request(this.#t, this.#e), Er(this.#e.searchParams)) {
|
|
11368
11427
|
const r = "?" + (typeof this.#e.searchParams == "string" ? this.#e.searchParams.replace(/^\?/, "") : new URLSearchParams(vt.#b(this.#e.searchParams)).toString()), o = this.request.url.replace(/(?:\?.*?)?(?=#|$)/, r);
|
|
11369
11428
|
this.request = new globalThis.Request(o, this.#e);
|
|
11370
11429
|
}
|
|
11371
11430
|
if (this.#e.onUploadProgress) {
|
|
11372
11431
|
if (typeof this.#e.onUploadProgress != "function")
|
|
11373
11432
|
throw new TypeError("The `onUploadProgress` option must be a function");
|
|
11374
|
-
if (!
|
|
11433
|
+
if (!ja)
|
|
11375
11434
|
throw new Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");
|
|
11376
11435
|
this.request = this.#h(this.request, this.#e.body ?? void 0);
|
|
11377
11436
|
}
|
|
@@ -11384,8 +11443,8 @@ class vt {
|
|
|
11384
11443
|
async #u(e) {
|
|
11385
11444
|
if (this.#a++, this.#a > this.#e.retry.limit)
|
|
11386
11445
|
throw e;
|
|
11387
|
-
const t = e instanceof Error ? e : new
|
|
11388
|
-
if (t instanceof
|
|
11446
|
+
const t = e instanceof Error ? e : new hi(e);
|
|
11447
|
+
if (t instanceof Xt)
|
|
11389
11448
|
return t.customDelay ?? this.#c();
|
|
11390
11449
|
if (!this.#e.retry.methods.includes(this.request.method.toLowerCase()))
|
|
11391
11450
|
throw e;
|
|
@@ -11396,9 +11455,9 @@ class vt {
|
|
|
11396
11455
|
if (i === !0)
|
|
11397
11456
|
return this.#c();
|
|
11398
11457
|
}
|
|
11399
|
-
if (
|
|
11458
|
+
if (Pr(e) && !this.#e.retry.retryOnTimeout)
|
|
11400
11459
|
throw e;
|
|
11401
|
-
if (
|
|
11460
|
+
if ($r(e)) {
|
|
11402
11461
|
if (!this.#e.retry.statusCodes.includes(e.response.status))
|
|
11403
11462
|
throw e;
|
|
11404
11463
|
const i = e.response.headers.get("Retry-After") ?? e.response.headers.get("RateLimit-Reset") ?? e.response.headers.get("X-RateLimit-Retry-After") ?? e.response.headers.get("X-RateLimit-Reset") ?? e.response.headers.get("X-Rate-Limit-Reset");
|
|
@@ -11420,10 +11479,10 @@ class vt {
|
|
|
11420
11479
|
try {
|
|
11421
11480
|
return await e();
|
|
11422
11481
|
} catch (t) {
|
|
11423
|
-
const i = Math.min(await this.#u(t),
|
|
11482
|
+
const i = Math.min(await this.#u(t), Yt);
|
|
11424
11483
|
if (this.#a < 1)
|
|
11425
11484
|
throw t;
|
|
11426
|
-
if (await
|
|
11485
|
+
if (await Tr(i, this.#s ? { signal: this.#s } : {}), t instanceof Xt && t.customRequest) {
|
|
11427
11486
|
const s = this.#e.signal ? new globalThis.Request(t.customRequest, { signal: this.#e.signal }) : new globalThis.Request(t.customRequest);
|
|
11428
11487
|
this.#l(s);
|
|
11429
11488
|
}
|
|
@@ -11440,7 +11499,7 @@ class vt {
|
|
|
11440
11499
|
}
|
|
11441
11500
|
if (r instanceof globalThis.Response)
|
|
11442
11501
|
return r;
|
|
11443
|
-
if (r ===
|
|
11502
|
+
if (r === pi)
|
|
11444
11503
|
return;
|
|
11445
11504
|
}
|
|
11446
11505
|
return this.#f(e);
|
|
@@ -11457,8 +11516,8 @@ class vt {
|
|
|
11457
11516
|
break;
|
|
11458
11517
|
}
|
|
11459
11518
|
}
|
|
11460
|
-
const e =
|
|
11461
|
-
return this.#n = this.request, this.request = this.#n.clone(), this.#e.timeout === !1 ? this.#e.fetch(this.#n, e) :
|
|
11519
|
+
const e = Ir(this.request, this.#e);
|
|
11520
|
+
return this.#n = this.request, this.request = this.#n.clone(), this.#e.timeout === !1 ? this.#e.fetch(this.#n, e) : Mr(this.#n, e, this.#i, this.#e);
|
|
11462
11521
|
}
|
|
11463
11522
|
#o() {
|
|
11464
11523
|
if (!this.#r) {
|
|
@@ -11471,16 +11530,16 @@ class vt {
|
|
|
11471
11530
|
this.#r = void 0, this.request = this.#h(e);
|
|
11472
11531
|
}
|
|
11473
11532
|
#h(e, t) {
|
|
11474
|
-
return !this.#e.onUploadProgress || !e.body ? e :
|
|
11533
|
+
return !this.#e.onUploadProgress || !e.body ? e : wr(e, this.#e.onUploadProgress, t ?? this.#e.body ?? void 0);
|
|
11475
11534
|
}
|
|
11476
11535
|
}
|
|
11477
|
-
const
|
|
11536
|
+
const sa = (a) => {
|
|
11478
11537
|
const e = (t, i) => vt.create(t, Et(a, i));
|
|
11479
|
-
for (const t of
|
|
11538
|
+
for (const t of ui)
|
|
11480
11539
|
e[t] = (i, s) => vt.create(i, Et(a, s, { method: t }));
|
|
11481
|
-
return e.create = (t) =>
|
|
11482
|
-
},
|
|
11483
|
-
|
|
11540
|
+
return e.create = (t) => sa(Et(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), sa(Et(a, t))), e.stop = pi, e.retry = ur, e;
|
|
11541
|
+
}, Lr = sa();
|
|
11542
|
+
Lr.extend({
|
|
11484
11543
|
hooks: {
|
|
11485
11544
|
beforeRequest: [
|
|
11486
11545
|
() => {
|
|
@@ -11488,7 +11547,7 @@ Pr.extend({
|
|
|
11488
11547
|
]
|
|
11489
11548
|
}
|
|
11490
11549
|
});
|
|
11491
|
-
async function
|
|
11550
|
+
async function Rr(a, e) {
|
|
11492
11551
|
const { onmessage: t, onclose: i, ...s } = e, r = async (o, f) => {
|
|
11493
11552
|
const { value: p, done: v } = await f.read();
|
|
11494
11553
|
v ? (o.close(), i?.()) : (t?.(p), o.enqueue(p), r(o, f));
|
|
@@ -11509,13 +11568,13 @@ async function Lr(a, e) {
|
|
|
11509
11568
|
}).text()
|
|
11510
11569
|
);
|
|
11511
11570
|
}
|
|
11512
|
-
var
|
|
11513
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
11571
|
+
var zr = Object.defineProperty, Or = Object.getOwnPropertyDescriptor, N = (a, e, t, i) => {
|
|
11572
|
+
for (var s = i > 1 ? void 0 : i ? Or(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
11514
11573
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
11515
|
-
return i && s &&
|
|
11574
|
+
return i && s && zr(e, t, s), s;
|
|
11516
11575
|
};
|
|
11517
|
-
const
|
|
11518
|
-
|
|
11576
|
+
const Be = Je.noConflict();
|
|
11577
|
+
Be.setLevel("info");
|
|
11519
11578
|
let H = class extends re {
|
|
11520
11579
|
constructor() {
|
|
11521
11580
|
super(...arguments), this.store = new it(this, b), this.displayLicense = !1, this.name = "ChatBot", this.orgId = "", this.botId = "", this.url = "ws://localhost:3070", this.logoUrl = "", this.logoSvg = `<svg width="24" height="24" viewBox="0 0 203 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
@@ -11536,7 +11595,7 @@ let H = class extends re {
|
|
|
11536
11595
|
<rect width="400" height="400" fill="white"/>
|
|
11537
11596
|
</clipPath>
|
|
11538
11597
|
</defs>
|
|
11539
|
-
</svg>`, this.popupLogoSvg = "", this.popupLogoUrl = "", this.botIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z" /></svg>', this.userIconSvg = '<svg fill="currentColor" viewBox="0 0 24 24" width="24" height="24"> <path d="M12 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c4.42 0 8 1.79 8 4v2H4v-2c0-2.21 3.58-4 8-4Z" /></svg>', this.systemIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"/></svg>', this.agentIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M18.72,14.76C19.07,13.91 19.26,13 19.26,12C19.26,11.28 19.15,10.59 18.96,9.95C18.31,10.1 17.63,10.18 16.92,10.18C13.86,10.18 11.15,8.67 9.5,6.34C8.61,8.5 6.91,10.26 4.77,11.22C4.73,11.47 4.73,11.74 4.73,12A7.27,7.27 0 0,0 12,19.27C13.05,19.27 14.06,19.04 14.97,18.63C15.54,19.72 15.8,20.26 15.78,20.26C14.14,20.81 12.87,21.08 12,21.08C9.58,21.08 7.27,20.13 5.57,18.42C4.53,17.38 3.76,16.11 3.33,14.73H2V10.18H3.09C3.93,6.04 7.6,2.92 12,2.92C14.4,2.92 16.71,3.87 18.42,5.58C19.69,6.84 20.54,8.45 20.89,10.18H22V14.67H22V14.69L22,14.73H21.94L18.38,18L13.08,17.4V15.73H17.91L18.72,14.76M9.27,11.77C9.57,11.77 9.86,11.89 10.07,12.11C10.28,12.32 10.4,12.61 10.4,12.91C10.4,13.21 10.28,13.5 10.07,13.71C9.86,13.92 9.57,14.04 9.27,14.04C8.64,14.04 8.13,13.54 8.13,12.91C8.13,12.28 8.64,11.77 9.27,11.77M14.72,11.77C15.35,11.77 15.85,12.28 15.85,12.91C15.85,13.54 15.35,14.04 14.72,14.04C14.09,14.04 13.58,13.54 13.58,12.91A1.14,1.14 0 0,1 14.72,11.77Z" /></svg>', this.anchorOpenSvg = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234c-.2.032-.352-.176-.273-.362c.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0a1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0a1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2a1 1 0 0 0 0 2"/></svg>', this.anchorCloseSvg = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></svg>', this.sendIconSvg = "", this.attachIconSvg = "", this.stream = !1, this.customRequest = !1, this.enableFileUpload = !1, this.uploadFileUrl = "", this.open = !1, this.alwaysOpen = !1, this.prefilledFormFields = "{}", this.loading = !1, this.showSetting = !1, this.showAuthAlert = !1, this.handleAddMessage = (a) => {
|
|
11598
|
+
</svg>`, this.popupLogoSvg = "", this.popupLogoUrl = "", this.botIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M16 17V19H2V17S2 13 9 13 16 17 16 17M12.5 7.5A3.5 3.5 0 1 0 9 11A3.5 3.5 0 0 0 12.5 7.5M15.94 13A5.32 5.32 0 0 1 18 17V19H22V17S22 13.37 15.94 13M15 4A3.39 3.39 0 0 0 13.07 4.59A5 5 0 0 1 13.07 10.41A3.39 3.39 0 0 0 15 11A3.5 3.5 0 0 0 15 4Z" /></svg>', this.userIconSvg = '<svg fill="currentColor" viewBox="0 0 24 24" width="24" height="24"> <path d="M12 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c4.42 0 8 1.79 8 4v2H4v-2c0-2.21 3.58-4 8-4Z" /></svg>', this.systemIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"/></svg>', this.agentIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M18.72,14.76C19.07,13.91 19.26,13 19.26,12C19.26,11.28 19.15,10.59 18.96,9.95C18.31,10.1 17.63,10.18 16.92,10.18C13.86,10.18 11.15,8.67 9.5,6.34C8.61,8.5 6.91,10.26 4.77,11.22C4.73,11.47 4.73,11.74 4.73,12A7.27,7.27 0 0,0 12,19.27C13.05,19.27 14.06,19.04 14.97,18.63C15.54,19.72 15.8,20.26 15.78,20.26C14.14,20.81 12.87,21.08 12,21.08C9.58,21.08 7.27,20.13 5.57,18.42C4.53,17.38 3.76,16.11 3.33,14.73H2V10.18H3.09C3.93,6.04 7.6,2.92 12,2.92C14.4,2.92 16.71,3.87 18.42,5.58C19.69,6.84 20.54,8.45 20.89,10.18H22V14.67H22V14.69L22,14.73H21.94L18.38,18L13.08,17.4V15.73H17.91L18.72,14.76M9.27,11.77C9.57,11.77 9.86,11.89 10.07,12.11C10.28,12.32 10.4,12.61 10.4,12.91C10.4,13.21 10.28,13.5 10.07,13.71C9.86,13.92 9.57,14.04 9.27,14.04C8.64,14.04 8.13,13.54 8.13,12.91C8.13,12.28 8.64,11.77 9.27,11.77M14.72,11.77C15.35,11.77 15.85,12.28 15.85,12.91C15.85,13.54 15.35,14.04 14.72,14.04C14.09,14.04 13.58,13.54 13.58,12.91A1.14,1.14 0 0,1 14.72,11.77Z" /></svg>', this.infoIconSvg = '<svg fill="currentColor" width="24" height="24" viewBox="0 0 24 24"> <path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" /></svg>', this.anchorOpenSvg = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234c-.2.032-.352-.176-.273-.362c.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0a1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0a1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2a1 1 0 0 0 0 2"/></svg>', this.anchorCloseSvg = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></svg>', this.sendIconSvg = "", this.attachIconSvg = "", this.stream = !1, this.customRequest = !1, this.enableFileUpload = !1, this.uploadFileUrl = "", this.open = !1, this.alwaysOpen = !1, this.prefilledFormFields = "{}", this.loading = !1, this.showSetting = !1, this.showAuthAlert = !1, this.handleAddMessage = (a) => {
|
|
11540
11599
|
this._addMessageHandler(a);
|
|
11541
11600
|
}, this.handleStateEvent = (a) => {
|
|
11542
11601
|
this._stateEventHandler(a);
|
|
@@ -11544,7 +11603,7 @@ let H = class extends re {
|
|
|
11544
11603
|
this._chatbotToggleHandler(a);
|
|
11545
11604
|
}, this.handleFormSubmitEvent = (a) => {
|
|
11546
11605
|
this._formSubmitHandler(a);
|
|
11547
|
-
}, this.fetchStream =
|
|
11606
|
+
}, this.fetchStream = Rr;
|
|
11548
11607
|
}
|
|
11549
11608
|
/**
|
|
11550
11609
|
* decodeStreamData
|
|
@@ -11579,7 +11638,7 @@ let H = class extends re {
|
|
|
11579
11638
|
b.addActions(a);
|
|
11580
11639
|
}
|
|
11581
11640
|
render() {
|
|
11582
|
-
return b.disabled && !this.alwaysOpen ? (
|
|
11641
|
+
return b.disabled && !this.alwaysOpen ? (Be.info("Bot is disabled until settings are loaded"), null) : u`
|
|
11583
11642
|
<div class="cb-wrapper${b.open ? " cb-open" : ""}" part="wrapper${b.open ? " open" : ""}" exportparts="new-conversation-wrapper new-conversation-button wrapper${b.open ? " open" : ""}">
|
|
11584
11643
|
<cb-header title="${this.name}" exportparts="header, header-logo, header-title, header-close"></cb-header>
|
|
11585
11644
|
<cb-message-list
|
|
@@ -11629,7 +11688,7 @@ let H = class extends re {
|
|
|
11629
11688
|
></cb-user-input>`;
|
|
11630
11689
|
}
|
|
11631
11690
|
connectedCallback() {
|
|
11632
|
-
super.connectedCallback(),
|
|
11691
|
+
super.connectedCallback(), Be.info("connectedCallback"), this.initCssVariables(), addEventListener("c7o:bot:stateEvent", this.handleStateEvent), addEventListener("message:send", this.handleAddMessage), addEventListener("chatbot:toggle", this.handleToggleEvent), addEventListener("form:submit", this.handleFormSubmitEvent), addEventListener("message:send:file", this._uploadFileHandler), addEventListener("audio:toggle", this._audioToggleHandler);
|
|
11633
11692
|
}
|
|
11634
11693
|
extractCssVariable(a, e, t) {
|
|
11635
11694
|
let i = a.getPropertyValue(e).trim();
|
|
@@ -11658,26 +11717,26 @@ let H = class extends re {
|
|
|
11658
11717
|
|
|
11659
11718
|
*/
|
|
11660
11719
|
disconnectedCallback() {
|
|
11661
|
-
|
|
11720
|
+
Be.info("disconnectedCallback"), super.disconnectedCallback(), window.removeEventListener("c7o:bot:stateEvent", this.handleStateEvent), window.removeEventListener("message:send", this.handleAddMessage), window.removeEventListener("chatbot:toggle", this.handleToggleEvent), window.removeEventListener("form:submit", this.handleFormSubmitEvent), window.removeEventListener("message:send:file", this._uploadFileHandler), window.removeEventListener("audio:toggle", this._audioToggleHandler);
|
|
11662
11721
|
}
|
|
11663
11722
|
// This is called when component is loaded, with all the settings (props) values
|
|
11664
11723
|
// Use to initialize
|
|
11665
11724
|
// This is also called when state changes - ??? - i.e. when message added to the array
|
|
11666
11725
|
updated(a) {
|
|
11667
|
-
super.updated(a), a.size > 0 && (
|
|
11726
|
+
super.updated(a), a.size > 0 && (Be.info("updated,_changedProperties:", a), this._initSetting()), !this._scrollToBottomTimeout && (this._scrollToBottomTimeout = setTimeout(() => {
|
|
11668
11727
|
this._scrollToBottom(), this._scrollToBottomTimeout = void 0;
|
|
11669
11728
|
}, 200));
|
|
11670
11729
|
}
|
|
11671
11730
|
// initialize setting
|
|
11672
11731
|
_initSetting() {
|
|
11673
|
-
|
|
11732
|
+
Be.info("_initSetting");
|
|
11674
11733
|
const a = b.setting;
|
|
11675
|
-
a.orgId = this.orgId, a.botId = this.botId, a.url = this.url, a.logoUrl = this.logoUrl, a.logoSvg = this.logoSvg, a.closeSvg = this.closeSvg, a.popupLogoSvg = this.popupLogoSvg, a.popupLogoUrl = this.popupLogoUrl, a.botIconSvg = this.botIconSvg, a.userIconSvg = this.userIconSvg, a.systemIconSvg = this.systemIconSvg, a.agentIconSvg = this.agentIconSvg, a.anchorOpenSvg = this.anchorOpenSvg, a.anchorCloseSvg = this.anchorCloseSvg, a.sendIconSvg = this.sendIconSvg, a.attachIconSvg = this.attachIconSvg, b.setSetting(a);
|
|
11734
|
+
a.orgId = this.orgId, a.botId = this.botId, a.url = this.url, a.logoUrl = this.logoUrl, a.logoSvg = this.logoSvg, a.closeSvg = this.closeSvg, a.popupLogoSvg = this.popupLogoSvg, a.popupLogoUrl = this.popupLogoUrl, a.botIconSvg = this.botIconSvg, a.userIconSvg = this.userIconSvg, a.systemIconSvg = this.systemIconSvg, a.agentIconSvg = this.agentIconSvg, a.infoIconSvg = this.infoIconSvg, a.anchorOpenSvg = this.anchorOpenSvg, a.anchorCloseSvg = this.anchorCloseSvg, a.sendIconSvg = this.sendIconSvg, a.attachIconSvg = this.attachIconSvg, b.setSetting(a);
|
|
11676
11735
|
let e = {};
|
|
11677
11736
|
try {
|
|
11678
11737
|
e = JSON.parse(this.prefilledFormFields);
|
|
11679
11738
|
} catch (t) {
|
|
11680
|
-
|
|
11739
|
+
Be.error(`Failed to parse prefilled-form-fields attribute value, error: ${t?.message || ""}`), e = {};
|
|
11681
11740
|
}
|
|
11682
11741
|
b.setPrefilledFormFields(e), this.open && (b.open = !0), this.alwaysOpen && (b.open = !0, b.alwaysOpen = !0);
|
|
11683
11742
|
}
|
|
@@ -11712,7 +11771,7 @@ let H = class extends re {
|
|
|
11712
11771
|
// for example, user profile, current product user is viewing on the web page, etc.
|
|
11713
11772
|
setContext(a = {}) {
|
|
11714
11773
|
b.setContext(a).catch((e) => {
|
|
11715
|
-
|
|
11774
|
+
Be.error(`Failed to set context, error: ${e?.message || ""}`);
|
|
11716
11775
|
});
|
|
11717
11776
|
}
|
|
11718
11777
|
getContext() {
|
|
@@ -11759,9 +11818,6 @@ let H = class extends re {
|
|
|
11759
11818
|
}
|
|
11760
11819
|
}
|
|
11761
11820
|
}
|
|
11762
|
-
sanitizeInputText(a) {
|
|
11763
|
-
return !a || typeof a != "string" ? "" : a.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
11764
|
-
}
|
|
11765
11821
|
sendMessage(a) {
|
|
11766
11822
|
if (!a || typeof a != "string" || a.trim() === "") {
|
|
11767
11823
|
console.log("sendMessage: input text is empty or not string, ignored", a);
|
|
@@ -11778,6 +11834,10 @@ let H = class extends re {
|
|
|
11778
11834
|
return this._processSendMessage(e);
|
|
11779
11835
|
}
|
|
11780
11836
|
// [sv2] for testing only
|
|
11837
|
+
processAgentConnected(a) {
|
|
11838
|
+
b.handleAgentConnected(a).catch((e) => {
|
|
11839
|
+
});
|
|
11840
|
+
}
|
|
11781
11841
|
processAgentDisconnected(a) {
|
|
11782
11842
|
b.handleAgentDisconnected(a).catch((e) => {
|
|
11783
11843
|
});
|
|
@@ -11787,7 +11847,7 @@ let H = class extends re {
|
|
|
11787
11847
|
console.log("_processSendMessage: input text is empty, ignored", a);
|
|
11788
11848
|
return;
|
|
11789
11849
|
}
|
|
11790
|
-
a.data.text =
|
|
11850
|
+
a.data.text = Vt(a.data.text.trim()), b.isConversationStart() && (console.log("Start of conversation detected, emitting c7o:bot:conversationStart", a), a.conversationId = b.conversationId, this.emitExt("c7o:bot:conversationStart", {
|
|
11791
11851
|
detail: a
|
|
11792
11852
|
})), b.sendMessage(a), setTimeout(() => {
|
|
11793
11853
|
this._scrollToBottom();
|
|
@@ -11815,7 +11875,7 @@ let H = class extends re {
|
|
|
11815
11875
|
await b.uploadFiles(e.files);
|
|
11816
11876
|
}
|
|
11817
11877
|
async _audioToggleHandler(a) {
|
|
11818
|
-
|
|
11878
|
+
Be.info("_audioToggleHandler called"), await b.toggleAudio();
|
|
11819
11879
|
}
|
|
11820
11880
|
// setting confirm handler
|
|
11821
11881
|
_settingConfirmHandler(a) {
|
|
@@ -11833,96 +11893,99 @@ let H = class extends re {
|
|
|
11833
11893
|
this._messageList?.scrollToBottom();
|
|
11834
11894
|
}
|
|
11835
11895
|
};
|
|
11836
|
-
H.styles = [
|
|
11837
|
-
|
|
11896
|
+
H.styles = [Xi, Ka];
|
|
11897
|
+
N([
|
|
11838
11898
|
x({ type: Boolean, attribute: "display-license" })
|
|
11839
11899
|
], H.prototype, "displayLicense", 2);
|
|
11840
|
-
|
|
11900
|
+
N([
|
|
11841
11901
|
x({ type: String, attribute: "name" })
|
|
11842
11902
|
], H.prototype, "name", 2);
|
|
11843
|
-
|
|
11903
|
+
N([
|
|
11844
11904
|
x({ type: String, attribute: "org-id" })
|
|
11845
11905
|
], H.prototype, "orgId", 2);
|
|
11846
|
-
|
|
11906
|
+
N([
|
|
11847
11907
|
x({ type: String, attribute: "bot-id" })
|
|
11848
11908
|
], H.prototype, "botId", 2);
|
|
11849
|
-
|
|
11909
|
+
N([
|
|
11850
11910
|
x({ type: String, attribute: "url" })
|
|
11851
11911
|
], H.prototype, "url", 2);
|
|
11852
|
-
|
|
11912
|
+
N([
|
|
11853
11913
|
x({ type: String, attribute: "logo-url" })
|
|
11854
11914
|
], H.prototype, "logoUrl", 2);
|
|
11855
|
-
|
|
11915
|
+
N([
|
|
11856
11916
|
x({ type: String, attribute: "logo-svg" })
|
|
11857
11917
|
], H.prototype, "logoSvg", 2);
|
|
11858
|
-
|
|
11918
|
+
N([
|
|
11859
11919
|
x({ type: String, attribute: "close-svg" })
|
|
11860
11920
|
], H.prototype, "closeSvg", 2);
|
|
11861
|
-
|
|
11921
|
+
N([
|
|
11862
11922
|
x({ type: String, attribute: "popup-logo-svg" })
|
|
11863
11923
|
], H.prototype, "popupLogoSvg", 2);
|
|
11864
|
-
|
|
11924
|
+
N([
|
|
11865
11925
|
x({ type: String, attribute: "popup-logo-url" })
|
|
11866
11926
|
], H.prototype, "popupLogoUrl", 2);
|
|
11867
|
-
|
|
11927
|
+
N([
|
|
11868
11928
|
x({ type: String, attribute: "bot-icon-svg" })
|
|
11869
11929
|
], H.prototype, "botIconSvg", 2);
|
|
11870
|
-
|
|
11930
|
+
N([
|
|
11871
11931
|
x({ type: String, attribute: "user-icon-svg" })
|
|
11872
11932
|
], H.prototype, "userIconSvg", 2);
|
|
11873
|
-
|
|
11933
|
+
N([
|
|
11874
11934
|
x({ type: String, attribute: "system-icon-svg" })
|
|
11875
11935
|
], H.prototype, "systemIconSvg", 2);
|
|
11876
|
-
|
|
11936
|
+
N([
|
|
11877
11937
|
x({ type: String, attribute: "agent-icon-svg" })
|
|
11878
11938
|
], H.prototype, "agentIconSvg", 2);
|
|
11879
|
-
|
|
11939
|
+
N([
|
|
11940
|
+
x({ type: String, attribute: "info-icon-svg" })
|
|
11941
|
+
], H.prototype, "infoIconSvg", 2);
|
|
11942
|
+
N([
|
|
11880
11943
|
x({ type: String, attribute: "anchor-open-svg" })
|
|
11881
11944
|
], H.prototype, "anchorOpenSvg", 2);
|
|
11882
|
-
|
|
11945
|
+
N([
|
|
11883
11946
|
x({ type: String, attribute: "anchor-close-svg" })
|
|
11884
11947
|
], H.prototype, "anchorCloseSvg", 2);
|
|
11885
|
-
|
|
11948
|
+
N([
|
|
11886
11949
|
x({ type: String, attribute: "send-icon-svg" })
|
|
11887
11950
|
], H.prototype, "sendIconSvg", 2);
|
|
11888
|
-
|
|
11951
|
+
N([
|
|
11889
11952
|
x({ type: String, attribute: "attach-icon-svg" })
|
|
11890
11953
|
], H.prototype, "attachIconSvg", 2);
|
|
11891
|
-
|
|
11954
|
+
N([
|
|
11892
11955
|
x({ type: Boolean, attribute: "stream" })
|
|
11893
11956
|
], H.prototype, "stream", 2);
|
|
11894
|
-
|
|
11957
|
+
N([
|
|
11895
11958
|
x({ type: Boolean, attribute: "custom-request" })
|
|
11896
11959
|
], H.prototype, "customRequest", 2);
|
|
11897
|
-
|
|
11960
|
+
N([
|
|
11898
11961
|
x({ type: Boolean, attribute: "enable-file-upload" })
|
|
11899
11962
|
], H.prototype, "enableFileUpload", 2);
|
|
11900
|
-
|
|
11963
|
+
N([
|
|
11901
11964
|
x({ type: String, attribute: "upload-file-url" })
|
|
11902
11965
|
], H.prototype, "uploadFileUrl", 2);
|
|
11903
|
-
|
|
11966
|
+
N([
|
|
11904
11967
|
x({ type: Boolean, attribute: "open" })
|
|
11905
11968
|
], H.prototype, "open", 2);
|
|
11906
|
-
|
|
11969
|
+
N([
|
|
11907
11970
|
x({ type: Boolean, attribute: "always-open" })
|
|
11908
11971
|
], H.prototype, "alwaysOpen", 2);
|
|
11909
|
-
|
|
11972
|
+
N([
|
|
11910
11973
|
x({ type: String, attribute: "prefilled-form-fields" })
|
|
11911
11974
|
], H.prototype, "prefilledFormFields", 2);
|
|
11912
|
-
|
|
11975
|
+
N([
|
|
11913
11976
|
x({ type: Boolean })
|
|
11914
11977
|
], H.prototype, "loading", 2);
|
|
11915
|
-
|
|
11978
|
+
N([
|
|
11916
11979
|
x({ type: Boolean })
|
|
11917
11980
|
], H.prototype, "showSetting", 2);
|
|
11918
|
-
|
|
11981
|
+
N([
|
|
11919
11982
|
x({ type: Boolean })
|
|
11920
11983
|
], H.prototype, "showAuthAlert", 2);
|
|
11921
|
-
|
|
11984
|
+
N([
|
|
11922
11985
|
xe("cb-message-list")
|
|
11923
11986
|
], H.prototype, "_messageList", 2);
|
|
11924
|
-
H =
|
|
11925
|
-
|
|
11987
|
+
H = N([
|
|
11988
|
+
Z("enegelai-bot")
|
|
11926
11989
|
], H);
|
|
11927
11990
|
export {
|
|
11928
11991
|
H as default
|