@sailfish-ai/sf-veritas 0.3.0 → 0.3.1
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/README.md +53 -0
- package/dist/contextManager-BsolAr_q.cjs +1 -0
- package/dist/{contextManager-RxrMXs5c.js → contextManager-D2ijKL-E.js} +105 -102
- package/dist/plugins/funcspanEsbuildPlugin.cjs +1 -1
- package/dist/plugins/funcspanEsbuildPlugin.mjs +1 -1
- package/dist/plugins/funcspanRollupPlugin.cjs +1 -1
- package/dist/plugins/funcspanRollupPlugin.mjs +1 -1
- package/dist/plugins/funcspanTscPlugin.cjs +1 -1
- package/dist/plugins/funcspanTscPlugin.mjs +1 -1
- package/dist/plugins/funcspanVitePlugin.cjs +1 -1
- package/dist/plugins/funcspanVitePlugin.mjs +1 -1
- package/dist/plugins/funcspanWebpackPlugin.cjs +1 -1
- package/dist/plugins/funcspanWebpackPlugin.mjs +1 -1
- package/dist/{runtimeConfig-BZ61efqE.js → runtimeConfig-C4mv7SVM.js} +174 -175
- package/dist/{runtimeConfig-CWpFWsmz.cjs → runtimeConfig-XIm4yAFB.cjs} +5 -5
- package/dist/sf-veritas.cjs +13 -13
- package/dist/sf-veritas.mjs +495 -381
- package/dist/types/requestTransmitter.d.ts +45 -0
- package/dist/types/setupConfig.d.ts +21 -0
- package/dist/worker-pool-capture.cjs +1 -1
- package/dist/worker-pool-capture.mjs +1 -1
- package/dist/{workerPoolSpanCapture-Bg5av6gn.cjs → workerPoolSpanCapture-DzCJnMDA.cjs} +1 -1
- package/dist/{workerPoolSpanCapture-BjdZn3LE.js → workerPoolSpanCapture-hyxgVqUF.js} +1 -1
- package/package.json +17 -1
- package/dist/contextManager-0D8uHQ1_.cjs +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
var mn = Object.defineProperty;
|
|
2
2
|
var Zn = (n, I, C) => I in n ? mn(n, I, { enumerable: !0, configurable: !0, writable: !0, value: C }) : n[I] = C;
|
|
3
|
-
var
|
|
3
|
+
var V = (n, I, C) => Zn(n, typeof I != "symbol" ? I + "" : I, C);
|
|
4
4
|
import * as fn from "fs/promises";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import Wn from "http";
|
|
6
|
+
import pn from "https";
|
|
7
7
|
import Gn from "os";
|
|
8
8
|
import { s as yn } from "./source-map-Cr6YkjTd.js";
|
|
9
9
|
import { Worker as Bn } from "worker_threads";
|
|
10
|
-
import { g as m, a as Yn, C as U } from "./contextManager-
|
|
10
|
+
import { g as m, a as Yn, C as U } from "./contextManager-D2ijKL-E.js";
|
|
11
11
|
import { resolve as Vn } from "path";
|
|
12
12
|
function P(n) {
|
|
13
13
|
return typeof n == "string" ? n : n == null ? "" : Array.isArray(n) ? n.map((I) => String(I)).join(`
|
|
@@ -20,21 +20,21 @@ function hn(n) {
|
|
|
20
20
|
return !1;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function En(n) {
|
|
24
24
|
const I = {}, C = [];
|
|
25
|
-
if (n) for (const [g,
|
|
25
|
+
if (n) for (const [g, c] of Object.entries(n)) hn(c) ? I[g] = c : C.push(g);
|
|
26
26
|
return { traitsJson: JSON.stringify(I), excludedFields: C };
|
|
27
27
|
}
|
|
28
28
|
class R {
|
|
29
|
-
constructor({ file: I, line: C, function: g, code:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.file = I, this.line = C, this.function = g, this.code =
|
|
29
|
+
constructor({ file: I, line: C, function: g, code: c, locals: l = {}, offender: t = !1, column: e }) {
|
|
30
|
+
V(this, "file");
|
|
31
|
+
V(this, "line");
|
|
32
|
+
V(this, "function");
|
|
33
|
+
V(this, "code");
|
|
34
|
+
V(this, "locals");
|
|
35
|
+
V(this, "offender");
|
|
36
|
+
V(this, "column");
|
|
37
|
+
this.file = I, this.line = C, this.function = g, this.code = c, this.locals = l, this.offender = t, this.column = e;
|
|
38
38
|
}
|
|
39
39
|
toDict() {
|
|
40
40
|
const I = { file: this.file, line: this.line, function: this.function, code: this.code, locals: Object.fromEntries(Object.entries(this.locals).map(([C, g]) => [C, String(g)])) };
|
|
@@ -44,12 +44,12 @@ class R {
|
|
|
44
44
|
return JSON.stringify(this.toDict());
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
class
|
|
47
|
+
class j {
|
|
48
48
|
static encode(I) {
|
|
49
|
-
return I instanceof R ? I.toDict() : Array.isArray(I) ? I.map((C) =>
|
|
49
|
+
return I instanceof R ? I.toDict() : Array.isArray(I) ? I.map((C) => j.encode(C)) : typeof I == "object" && I !== null ? JSON.stringify(I) : I;
|
|
50
50
|
}
|
|
51
51
|
static stringify(I) {
|
|
52
|
-
return JSON.stringify(
|
|
52
|
+
return JSON.stringify(j.encode(I), (C, g) => g instanceof R ? g.toDict() : g);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
const J = process.env.SF_LOG_LOCATION || "auto";
|
|
@@ -59,7 +59,7 @@ function Nn(n) {
|
|
|
59
59
|
for (let I = 0; I < _.length; I++) if (n.includes(_[I])) return !0;
|
|
60
60
|
return !1;
|
|
61
61
|
}
|
|
62
|
-
function
|
|
62
|
+
function E(n) {
|
|
63
63
|
let I = n;
|
|
64
64
|
I.startsWith("file://") && (I = I.substring(7)), process.platform === "win32" && I.startsWith("/") && I.length > 2 && I[2] === ":" && (I = I.substring(1));
|
|
65
65
|
try {
|
|
@@ -71,31 +71,31 @@ function j(n) {
|
|
|
71
71
|
const Hn = process.env.SF_LOG_LOCATION_WALK_FRAMES === "true";
|
|
72
72
|
function $(n) {
|
|
73
73
|
const I = Error.stackTraceLimit;
|
|
74
|
-
Error.stackTraceLimit = 8, Error.prepareStackTrace = (
|
|
74
|
+
Error.stackTraceLimit = 8, Error.prepareStackTrace = (l, t) => t;
|
|
75
75
|
const C = {};
|
|
76
76
|
Error.captureStackTrace(C, n);
|
|
77
77
|
const g = C.stack;
|
|
78
78
|
if (Error.prepareStackTrace = ln, Error.stackTraceLimit = I, !g || g.length === 0) return [null, null];
|
|
79
|
-
for (let
|
|
80
|
-
const t = g[
|
|
81
|
-
if (t && !Nn(t)) return [
|
|
79
|
+
for (let l = 0; l < g.length; l++) {
|
|
80
|
+
const t = g[l].getFileName();
|
|
81
|
+
if (t && !Nn(t)) return [E(t), g[l].getLineNumber()];
|
|
82
82
|
}
|
|
83
|
-
const
|
|
84
|
-
return
|
|
83
|
+
const c = g[0].getFileName();
|
|
84
|
+
return c ? [E(c), g[0].getLineNumber()] : [null, null];
|
|
85
85
|
}
|
|
86
86
|
function on(n, I, C) {
|
|
87
87
|
if (J === "off") return [null, null];
|
|
88
88
|
if (C && (J === "auto" || J === "build-inject")) {
|
|
89
|
-
const [g,
|
|
89
|
+
const [g, c, l] = (function(t) {
|
|
90
90
|
if (t.length === 0) return [null, null, !1];
|
|
91
|
-
const
|
|
92
|
-
if (typeof
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
95
|
-
const o =
|
|
91
|
+
const e = t[t.length - 1];
|
|
92
|
+
if (typeof e != "string" || !e.startsWith(Cn)) return [null, null, !1];
|
|
93
|
+
const i = e.lastIndexOf(":");
|
|
94
|
+
if (i <= 5) return [null, null, !1];
|
|
95
|
+
const o = e.substring(5, i), s = parseInt(e.substring(i + 1), 10);
|
|
96
96
|
return isNaN(s) ? [null, null, !1] : [o, s, !0];
|
|
97
97
|
})(C);
|
|
98
|
-
if (
|
|
98
|
+
if (l) return [g, c];
|
|
99
99
|
if (J === "build-inject") return [null, null];
|
|
100
100
|
}
|
|
101
101
|
if (J === "native") {
|
|
@@ -103,35 +103,35 @@ function on(n, I, C) {
|
|
|
103
103
|
if (M) return z;
|
|
104
104
|
M = !0;
|
|
105
105
|
try {
|
|
106
|
-
const
|
|
107
|
-
typeof
|
|
106
|
+
const c = require("../native/build/Release/sf_source_location.node");
|
|
107
|
+
typeof c?.getCallerLocation == "function" && (z = c);
|
|
108
108
|
} catch {
|
|
109
109
|
}
|
|
110
110
|
return z;
|
|
111
111
|
})();
|
|
112
112
|
if (g) {
|
|
113
|
-
const [
|
|
114
|
-
if (
|
|
113
|
+
const [c, l] = g.getCallerLocation(n ?? 2);
|
|
114
|
+
if (c) return [c, l];
|
|
115
115
|
}
|
|
116
116
|
if (J === "native" && z) return [null, null];
|
|
117
117
|
}
|
|
118
118
|
return I ? Hn ? $(I) : (function(g) {
|
|
119
|
-
const
|
|
119
|
+
const c = Error.stackTraceLimit;
|
|
120
120
|
Error.stackTraceLimit = 1, Error.prepareStackTrace = (o, s) => s;
|
|
121
|
-
const
|
|
122
|
-
Error.captureStackTrace(
|
|
123
|
-
const t =
|
|
124
|
-
if (Error.prepareStackTrace = ln, Error.stackTraceLimit =
|
|
125
|
-
const
|
|
126
|
-
return
|
|
121
|
+
const l = {};
|
|
122
|
+
Error.captureStackTrace(l, g);
|
|
123
|
+
const t = l.stack;
|
|
124
|
+
if (Error.prepareStackTrace = ln, Error.stackTraceLimit = c, !t || t.length === 0) return [null, null];
|
|
125
|
+
const e = t[0], i = e.getFileName();
|
|
126
|
+
return i ? [E(i), e.getLineNumber()] : [null, null];
|
|
127
127
|
})(I) : $(on);
|
|
128
128
|
}
|
|
129
|
-
function
|
|
129
|
+
function G(n) {
|
|
130
130
|
if (n.length === 0) return n;
|
|
131
131
|
const I = n[n.length - 1];
|
|
132
132
|
return typeof I == "string" && I.startsWith(Cn) ? n.slice(0, -1) : n;
|
|
133
133
|
}
|
|
134
|
-
const O = console.log.bind(console), D = console.error.bind(console), q = console.warn.bind(console), nn = console.info.bind(console), In = console.debug.bind(console),
|
|
134
|
+
const O = console.log.bind(console), D = console.error.bind(console), q = console.warn.bind(console), nn = console.info.bind(console), In = console.debug.bind(console), B = O, gn = D;
|
|
135
135
|
let a = !1;
|
|
136
136
|
const L = 8192;
|
|
137
137
|
function Jn(n) {
|
|
@@ -145,29 +145,29 @@ function Jn(n) {
|
|
|
145
145
|
if (I === "function") return `[Function: ${n.name || "anonymous"}]`;
|
|
146
146
|
if (n instanceof Error) return n.stack || `${n.name}: ${n.message}`;
|
|
147
147
|
try {
|
|
148
|
-
const C = /* @__PURE__ */ new WeakSet(), g = [],
|
|
149
|
-
if (typeof
|
|
150
|
-
if (typeof
|
|
151
|
-
if (typeof
|
|
152
|
-
if (
|
|
153
|
-
if (
|
|
154
|
-
const o =
|
|
148
|
+
const C = /* @__PURE__ */ new WeakSet(), g = [], c = /* @__PURE__ */ new Map(), l = JSON.stringify(n, function(e, i) {
|
|
149
|
+
if (typeof i == "bigint") return i.toString() + "n";
|
|
150
|
+
if (typeof i == "function") return `[Function: ${i.name || "anonymous"}]`;
|
|
151
|
+
if (typeof i == "symbol") return i.toString();
|
|
152
|
+
if (i === void 0) return "[undefined]";
|
|
153
|
+
if (e !== "" && c.has(this)) {
|
|
154
|
+
const o = c.get(this);
|
|
155
155
|
if (o >= 20) return;
|
|
156
|
-
|
|
156
|
+
c.set(this, o + 1);
|
|
157
157
|
}
|
|
158
|
-
if (
|
|
159
|
-
if (C.has(
|
|
158
|
+
if (i !== null && typeof i == "object") {
|
|
159
|
+
if (C.has(i)) return "[Circular]";
|
|
160
160
|
for (; g.length > 0 && g[g.length - 1] !== this; ) g.pop();
|
|
161
|
-
if (g.length >= 3) return Array.isArray(
|
|
162
|
-
C.add(
|
|
161
|
+
if (g.length >= 3) return Array.isArray(i) ? `[Array(${i.length})]` : "[Object]";
|
|
162
|
+
C.add(i), g.push(i), !Array.isArray(i) && Object.keys(i).length > 20 && c.set(i, 0);
|
|
163
163
|
}
|
|
164
|
-
return
|
|
164
|
+
return i;
|
|
165
165
|
});
|
|
166
|
-
if (
|
|
167
|
-
let t =
|
|
168
|
-
if (
|
|
169
|
-
const
|
|
170
|
-
t = t.slice(0, -1) + `,"...":"${
|
|
166
|
+
if (l === void 0) return String(n);
|
|
167
|
+
let t = l;
|
|
168
|
+
if (c.size > 0 && !Array.isArray(n) && c.has(n)) {
|
|
169
|
+
const e = Object.keys(n).length;
|
|
170
|
+
t = t.slice(0, -1) + `,"...":"${e - 20} more keys"}`;
|
|
171
171
|
}
|
|
172
172
|
return t.length > 500 ? t.substring(0, 500) + "...[truncated]" : t;
|
|
173
173
|
} catch {
|
|
@@ -182,82 +182,82 @@ function S(n) {
|
|
|
182
182
|
}
|
|
183
183
|
let I, C = !0;
|
|
184
184
|
for (let g = 0; g < n.length; g++) {
|
|
185
|
-
const
|
|
186
|
-
if (
|
|
185
|
+
const c = typeof n[g];
|
|
186
|
+
if (c === "object" && n[g] !== null || c === "function" || c === "symbol") {
|
|
187
187
|
C = !1;
|
|
188
188
|
break;
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
if (C) {
|
|
192
192
|
const g = new Array(n.length);
|
|
193
|
-
for (let
|
|
194
|
-
const
|
|
195
|
-
g[
|
|
193
|
+
for (let c = 0; c < n.length; c++) {
|
|
194
|
+
const l = n[c];
|
|
195
|
+
g[c] = l === null ? "null" : l === void 0 ? "undefined" : typeof l == "string" ? l : String(l);
|
|
196
196
|
}
|
|
197
197
|
I = g.join(" ");
|
|
198
198
|
} else I = n.map(Jn).join(" ");
|
|
199
199
|
return I.length > L ? I.substring(0, L) + "...[truncated]" : I;
|
|
200
200
|
}
|
|
201
201
|
function On(n) {
|
|
202
|
-
function I(t,
|
|
202
|
+
function I(t, e, i, o) {
|
|
203
203
|
const s = Yn();
|
|
204
|
-
if (s?.logIgnoreRegex && s.logIgnoreRegex.test(
|
|
205
|
-
const [
|
|
206
|
-
n.setOperationName("CollectLogs"), n.doSend([
|
|
204
|
+
if (s?.logIgnoreRegex && s.logIgnoreRegex.test(e)) return;
|
|
205
|
+
const [f, d] = on(2, i, o);
|
|
206
|
+
n.setOperationName("CollectLogs"), n.doSend([e, t, f, d]);
|
|
207
207
|
}
|
|
208
208
|
const C = console.log = (...t) => {
|
|
209
|
-
if (a) O(...
|
|
209
|
+
if (a) O(...G(t));
|
|
210
210
|
else {
|
|
211
211
|
a = !0;
|
|
212
212
|
try {
|
|
213
|
-
const
|
|
214
|
-
I("INFO", S(
|
|
213
|
+
const e = G(t);
|
|
214
|
+
I("INFO", S(e), C, t), O(...e);
|
|
215
215
|
} finally {
|
|
216
216
|
a = !1;
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
219
|
}, g = console.error = (...t) => {
|
|
220
|
-
if (a) D(...
|
|
220
|
+
if (a) D(...G(t));
|
|
221
221
|
else {
|
|
222
222
|
a = !0;
|
|
223
223
|
try {
|
|
224
|
-
const
|
|
225
|
-
I("ERROR", S(
|
|
224
|
+
const e = G(t);
|
|
225
|
+
I("ERROR", S(e), g, t), D(...e);
|
|
226
226
|
} finally {
|
|
227
227
|
a = !1;
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
},
|
|
231
|
-
if (a) q(...
|
|
230
|
+
}, c = console.warn = (...t) => {
|
|
231
|
+
if (a) q(...G(t));
|
|
232
232
|
else {
|
|
233
233
|
a = !0;
|
|
234
234
|
try {
|
|
235
|
-
const
|
|
236
|
-
I("WARN", S(
|
|
235
|
+
const e = G(t);
|
|
236
|
+
I("WARN", S(e), c, t), q(...e);
|
|
237
237
|
} finally {
|
|
238
238
|
a = !1;
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
|
-
},
|
|
242
|
-
if (a) nn(...
|
|
241
|
+
}, l = console.info = (...t) => {
|
|
242
|
+
if (a) nn(...G(t));
|
|
243
243
|
else {
|
|
244
244
|
a = !0;
|
|
245
245
|
try {
|
|
246
|
-
const
|
|
247
|
-
I("INFO", S(
|
|
246
|
+
const e = G(t);
|
|
247
|
+
I("INFO", S(e), l, t), nn(...e);
|
|
248
248
|
} finally {
|
|
249
249
|
a = !1;
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
};
|
|
253
253
|
if (m().logLevel === "DEBUG") {
|
|
254
|
-
const t = console.debug = (...
|
|
255
|
-
if (a) In(...
|
|
254
|
+
const t = console.debug = (...e) => {
|
|
255
|
+
if (a) In(...G(e));
|
|
256
256
|
else {
|
|
257
257
|
a = !0;
|
|
258
258
|
try {
|
|
259
|
-
const
|
|
260
|
-
I("DEBUG", S(
|
|
259
|
+
const i = G(e);
|
|
260
|
+
I("DEBUG", S(i), t, e), In(...i);
|
|
261
261
|
} finally {
|
|
262
262
|
a = !1;
|
|
263
263
|
}
|
|
@@ -265,73 +265,73 @@ function On(n) {
|
|
|
265
265
|
};
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
|
-
let
|
|
268
|
+
let K = 0;
|
|
269
269
|
function Dn(n) {
|
|
270
|
-
m().sfDebug &&
|
|
270
|
+
m().sfDebug && B("Initializing Exception Interceptor...");
|
|
271
271
|
try {
|
|
272
|
-
const
|
|
273
|
-
n?.setSupplementalFields?.({ isFromLocalService:
|
|
274
|
-
if (
|
|
275
|
-
|
|
272
|
+
const e = rn();
|
|
273
|
+
n?.setSupplementalFields?.({ isFromLocalService: e }), (async function(i) {
|
|
274
|
+
if (en) return;
|
|
275
|
+
en = !0;
|
|
276
276
|
const o = process.env || {};
|
|
277
277
|
if (An(o.SF_IS_LOCAL) === void 0)
|
|
278
278
|
try {
|
|
279
279
|
await (async function(s) {
|
|
280
|
-
const
|
|
281
|
-
return (await Promise.allSettled([
|
|
282
|
-
})(150) &&
|
|
280
|
+
const f = T("http://169.254.169.254/latest/meta-data/", {}, s), d = T("http://metadata.google.internal/computeMetadata/v1/instance/", { "Metadata-Flavor": "Google" }, s), b = T("http://169.254.169.254/metadata/instance?api-version=2021-02-01", { Metadata: "true" }, s);
|
|
281
|
+
return (await Promise.allSettled([f, d, b])).some((W) => W.status === "fulfilled" && (W.value === "ok" || W.value === "http_error"));
|
|
282
|
+
})(150) && h && (h = !1, i?.setSupplementalFields?.({ isFromLocalService: !1 }));
|
|
283
283
|
} catch {
|
|
284
284
|
}
|
|
285
285
|
})(n).catch(() => {
|
|
286
286
|
});
|
|
287
287
|
} catch {
|
|
288
288
|
}
|
|
289
|
-
const I = new Bn(new URL("data:application/javascript;base64,Ly8gc3JjL2RlYnVnZ2VyV29ya2VyLnRzCmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICJpbnNwZWN0b3IvcHJvbWlzZXMiOwppbXBvcnQgeyBwYXJlbnRQb3J0LCB3b3JrZXJEYXRhIH0gZnJvbSAid29ya2VyX3RocmVhZHMiOwpnbG9iYWwuc2ZEZWJ1ZyA9IHZvaWQgMDsKZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMgPSB2b2lkIDA7Cmdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSB2b2lkIDA7CnZhciBzY3JpcHRTb3VyY2VDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CnZhciBub25BcHBGcmFtZVBhdHRlcm5zID0gWwogIC9ub2RlOmludGVybmFsLywKICAvaW50ZXJuYWxcLy8sCiAgL25vZGVfbW9kdWxlcy8sCiAgL25vZGU6ZnMvCl07CmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDYWxsRnJhbWVzKHNlc3Npb24sIGNhbGxGcmFtZXMsIGRlc2NyaXB0aW9uTGluZXMpIHsKICBjb25zdCBsaW1pdGVkQ2FsbEZyYW1lcyA9IGNhbGxGcmFtZXMuc2xpY2UoMCwgZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMpOwogIGlmIChsaW1pdGVkQ2FsbEZyYW1lcy5sZW5ndGggPiAwKSB7CiAgICBjb25zdCBmaXJzdFVybCA9IGxpbWl0ZWRDYWxsRnJhbWVzWzBdLnVybCB8fCAiIjsKICAgIGlmIChub25BcHBGcmFtZVBhdHRlcm5zLnNvbWUoKHApID0+IHAudGVzdChmaXJzdFVybCkpKSB7CiAgICAgIHBhcmVudFBvcnQ/LnBvc3RNZXNzYWdlKHsgdHlwZTogImV4Y2VwdGlvbiIsIGZyYW1lczogW10gfSk7CiAgICAgIHJldHVybjsKICAgIH0KICB9CiAgY29uc3QgZnJhbWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoCiAgICBsaW1pdGVkQ2FsbEZyYW1lcy5tYXAoYXN5bmMgKGZyYW1lLCBpbmRleCkgPT4gewogICAgICB0cnkgewogICAgICAgIGNvbnN0IHsgZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgdXJsLCBzY29wZUNoYWluIH0gPSBmcmFtZTsKICAgICAgICBjb25zdCBsb2NhbFNjb3BlID0gc2NvcGVDaGFpbi5maW5kKChzY29wZSkgPT4gc2NvcGUudHlwZSA9PT0gImxvY2FsIik7CiAgICAgICAgbGV0IGNvZGUgPSAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgIGxldCBmaWxlID0gIiI7CiAgICAgICAgaWYgKHVybCAmJiB1cmwudHJpbSgpICE9PSAiIikgewogICAgICAgICAgZmlsZSA9IHVybDsKICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0aW9uTGluZXNbaW5kZXhdKSB7CiAgICAgICAgICBmaWxlID0gZGVzY3JpcHRpb25MaW5lc1tpbmRleF0udHJpbSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmaWxlID0gIjx1bmtub3duPiI7CiAgICAgICAgfQogICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5zY3JpcHRJZCkgewogICAgICAgICAgY29uc3Qgc2NyaXB0SWQgPSBsb2NhdGlvbi5zY3JpcHRJZDsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBzY3JpcHRTb3VyY2UgPSBzY3JpcHRTb3VyY2VDYWNoZS5nZXQoc2NyaXB0SWQpOwogICAgICAgICAgICBpZiAoc2NyaXB0U291cmNlID09PSB2b2lkIDApIHsKICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uLnBvc3QoCiAgICAgICAgICAgICAgICAiRGVidWdnZXIuZ2V0U2NyaXB0U291cmNlIiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgc2NyaXB0SWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIHNjcmlwdFNvdXJjZSA9IHJlc3VsdC5zY3JpcHRTb3VyY2U7CiAgICAgICAgICAgICAgc2NyaXB0U291cmNlQ2FjaGUuc2V0KHNjcmlwdElkLCBzY3JpcHRTb3VyY2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUxpbmVzID0gc2NyaXB0U291cmNlLnNwbGl0KCJcbiIpOwogICAgICAgICAgICBjb2RlID0gc291cmNlTGluZXNbbG9jYXRpb24ubGluZU51bWJlcl0gfHwgIjxub3QgY2FwdHVyZWQ+IjsKICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IHNvdXJjZToiLCBlcnIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnN0IGxvY2FscyA9IGxvY2FsU2NvcGU/Lm9iamVjdD8ub2JqZWN0SWQgPyBhd2FpdCBmZXRjaExvY2FsVmFyaWFibGVzKHNlc3Npb24sIGxvY2FsU2NvcGUub2JqZWN0Lm9iamVjdElkKSA6IHt9OwogICAgICAgIHJldHVybiB7CiAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lIHx8ICI8YW5vbnltb3VzPiIsCiAgICAgICAgICBsb2NhbHMsCiAgICAgICAgICBmaWxlLAogICAgICAgICAgbGluZTogbG9jYXRpb24/LmxpbmVOdW1iZXIgfHwgMCwKICAgICAgICAgIGNvZGUKICAgICAgICB9OwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRXJyb3IgcHJvY2Vzc2luZyBjYWxsIGZyYW1lOiIsIGVycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiAiPGVycm9yPiIsCiAgICAgICAgICBsb2NhbHM6IHt9LAogICAgICAgICAgZmlsZTogIjx1bmtub3duPiIsCiAgICAgICAgICBsaW5lOiAwLAogICAgICAgICAgY29kZTogIjxub3QgY2FwdHVyZWQ+IgogICAgICAgIH07CiAgICAgIH0KICAgIH0pCiAgKTsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJleGNlcHRpb24iLCBmcmFtZXMgfSk7Cn0KYXN5bmMgZnVuY3Rpb24gaGFuZGxlUGF1c2VkKHNlc3Npb24sIHBhcmFtcykgewogIGNvbnN0IHsgcmVhc29uLCBkYXRhLCBjYWxsRnJhbWVzIH0gPSBwYXJhbXM7CiAgaWYgKHJlYXNvbiAhPT0gImV4Y2VwdGlvbiIgJiYgcmVhc29uICE9PSAicHJvbWlzZVJlamVjdGlvbiIpIHsKICAgIHJldHVybjsKICB9CiAgY29uc3Qgbm9uQXBwUGF0dGVybnMgPSBbCiAgICAvbm9kZTppbnRlcm5hbC8sCiAgICAvaW50ZXJuYWxcLy8sCiAgICAvbm9kZV9tb2R1bGVzLywKICAgIC9ub2RlOmZzLwogIF07CiAgbGV0IGZpcnN0RnJhbWVMaW5lID0gIiI7CiAgbGV0IGRlc2NyaXB0aW9uTGluZXMgPSBbXTsKICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YS5kZXNjcmlwdGlvbiA9PT0gInN0cmluZyIpIHsKICAgIGRlc2NyaXB0aW9uTGluZXMgPSBkYXRhLmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkuc3RhcnRzV2l0aCgiYXQgIikpOwogICAgZmlyc3RGcmFtZUxpbmUgPSBkZXNjcmlwdGlvbkxpbmVzWzBdIHx8ICIiOwogICAgaWYgKCFmaXJzdEZyYW1lTGluZSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCBlcnJvckZyb21Ob25BcHAgPSBub25BcHBQYXR0ZXJucy5zb21lKAogICAgICAocGF0dGVybikgPT4gcGF0dGVybi50ZXN0KGZpcnN0RnJhbWVMaW5lLnRyaW0oKSkKICAgICk7CiAgICBjb25zdCBub2RlTW9kdWxlc0xpc3QgPSBBcnJheS5pc0FycmF5KAogICAgICBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uCiAgICApID8gZ2xvYmFsLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbiA6IFtdOwogICAgaWYgKGVycm9yRnJvbU5vbkFwcCkgewogICAgICBpZiAobm9kZU1vZHVsZXNMaXN0LmluY2x1ZGVzKCJfX2FsbF9fIikpIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAiW1dvcmtlcl0gRXJyb3IgaXMgZnJvbSBub24tYXBwIHNvdXJjZSwgYnV0IGNhcHR1cmluZyBkdWUgdG8gX19hbGxfXyBydWxlLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG5vZGVNb2R1bGVzTGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgY29uc3QgaXNGcm9tQWxsb3dlZE5vZGVNb2R1bGUgPSBub2RlTW9kdWxlc0xpc3Quc29tZSgKICAgICAgICAgIChtb2R1bGVOYW1lKSA9PiBmaXJzdEZyYW1lTGluZS5pbmNsdWRlcyhgJHttb2R1bGVOYW1lfWApCiAgICAgICAgKTsKICAgICAgICBpZiAoIWlzRnJvbUFsbG93ZWROb2RlTW9kdWxlKSB7CiAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coCiAgICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICAgKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygKICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogICAgYXdhaXQgcHJvY2Vzc0NhbGxGcmFtZXMoc2Vzc2lvbiwgY2FsbEZyYW1lcywgZGVzY3JpcHRpb25MaW5lcyk7CiAgfSBlbHNlIHsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gc3RhcnREZWJ1Z2dlcigpIHsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJtZXNzYWdlIiwgcmVhZHlUb0dldFBhcmFtZXRlcnM6IHRydWUgfSk7CiAgbGV0IHJlc29sdmVNZXNzYWdlUHJvbWlzZTsKICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICByZXNvbHZlTWVzc2FnZVByb21pc2UgPSByZXNvbHZlOwogIH0pOwogIGxldCBpc1BhdXNlZCA9IGZhbHNlOwogIHBhcmVudFBvcnQ/Lm9uKCJtZXNzYWdlIiwgKG1lc3NhZ2UpID0+IHsKICAgIHRyeSB7CiAgICAgIGlmIChtZXNzYWdlPy50eXBlID09PSAicHJvY2Vzc0V4Y2VwdGlvbiIpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKG1lc3NhZ2U/LnNmRGVidWcgIT09IHZvaWQgMCAmJiBtZXNzYWdlPy5zdGFja0RlcHRoTG9jYWxzICE9PSB2b2lkIDApIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCJVcGRhdGluZyBnbG9iYWwgZGVidWcgdmFyaWFibGVzLi4uIik7CiAgICAgICAgfQogICAgICAgIGdsb2JhbC5zZkRlYnVnID0gbWVzc2FnZS5zZkRlYnVnOwogICAgICAgIGdsb2JhbC5zdGFja0RlcHRoTG9jYWxzID0gbWVzc2FnZS5zdGFja0RlcHRoTG9jYWxzOwogICAgICAgIGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSBtZXNzYWdlLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbjsKICAgICAgICByZXNvbHZlTWVzc2FnZVByb21pc2UoKTsKICAgICAgfQogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigiXHUyNzRDIEVycm9yIGluIG1lc3NhZ2UgaGFuZGxpbmc6IiwgZXJyb3IpOwogICAgICB9CiAgICB9CiAgfSk7CiAgYXdhaXQgbWVzc2FnZVByb21pc2U7CiAgdHJ5IHsKICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU2Vzc2lvbigpOwogICAgc2Vzc2lvbi5jb25uZWN0VG9NYWluVGhyZWFkKCk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5yZXN1bWVkIiwgKCkgPT4gewogICAgICBpc1BhdXNlZCA9IGZhbHNlOwogICAgfSk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICAgaXNQYXVzZWQgPSB0cnVlOwogICAgICBoYW5kbGVQYXVzZWQoc2Vzc2lvbiwgZXZlbnQucGFyYW1zKS50aGVuKAogICAgICAgIGFzeW5jICgpID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYXN5bmMgKF8pID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgKTsKICAgIH0pOwogICAgYXdhaXQgc2Vzc2lvbi5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTsKICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnMiLCB7CiAgICAgIHN0YXRlOiB3b3JrZXJEYXRhPy5jYXB0dXJlQWxsRXhjZXB0aW9ucyA/ICJhbGwiIDogInVuY2F1Z2h0IgogICAgfSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBlcnJvciAiLCBlcnJvcik7CiAgICB9CiAgfQogIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgY29uc29sZS5sb2coIltXb3JrZXJdIERlYnVnZ2VyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwogIH0KfQphc3luYyBmdW5jdGlvbiB1bnJvbGxPYmplY3Qoc2Vzc2lvbiwgb2JqZWN0SWQsIG5hbWUsIHZhcnMpIHsKICBjb25zdCBwcm9wZXJ0aWVzID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICBvYmplY3RJZCwKICAgIG93blByb3BlcnRpZXM6IHRydWUKICB9KTsKICB2YXJzW25hbWVdID0gcHJvcGVydGllcy5yZXN1bHQubWFwKCh2KSA9PiBbdi5uYW1lLCB2LnZhbHVlPy52YWx1ZV0pLnJlZHVjZSgob2JqLCBba2V5LCB2YWxdKSA9PiB7CiAgICBvYmpba2V5XSA9IHZhbDsKICAgIHJldHVybiBvYmo7CiAgfSwge30pOwp9CmFzeW5jIGZ1bmN0aW9uIHVucm9sbEFycmF5KHNlc3Npb24sIG9iamVjdElkLCBuYW1lLCB2YXJzKSB7CiAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlCiAgfSk7CiAgdmFyc1tuYW1lXSA9IHByb3BlcnRpZXMucmVzdWx0LmZpbHRlcigodikgPT4gdi5uYW1lICE9PSAibGVuZ3RoIiAmJiAhaXNOYU4ocGFyc2VJbnQodi5uYW1lLCAxMCkpKS5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhLm5hbWUsIDEwKSAtIHBhcnNlSW50KGIubmFtZSwgMTApKS5tYXAoKHYpID0+IHYudmFsdWU/LnZhbHVlKTsKfQpmdW5jdGlvbiB1bnJvbGxPdGhlcihwcm9wLCB2YXJzKSB7CiAgaWYgKCFwcm9wLnZhbHVlKSB7CiAgICByZXR1cm47CiAgfQogIGlmICgidmFsdWUiIGluIHByb3AudmFsdWUpIHsKICAgIGlmIChwcm9wLnZhbHVlLnZhbHVlID09PSB2b2lkIDAgfHwgcHJvcC52YWx1ZS52YWx1ZSA9PT0gbnVsbCkgewogICAgICB2YXJzW3Byb3AubmFtZV0gPSBgPCR7cHJvcC52YWx1ZS52YWx1ZX0+YDsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyc1twcm9wLm5hbWVdID0gcHJvcC52YWx1ZS52YWx1ZTsKICAgIHJldHVybjsKICB9CiAgaWYgKCJkZXNjcmlwdGlvbiIgaW4gcHJvcC52YWx1ZSAmJiBwcm9wLnZhbHVlLnR5cGUgIT09ICJmdW5jdGlvbiIpIHsKICAgIHZhcnNbcHJvcC5uYW1lXSA9IGA8JHtwcm9wLnZhbHVlLmRlc2NyaXB0aW9ufT5gOwogICAgcmV0dXJuOwogIH0KICBpZiAocHJvcC52YWx1ZS50eXBlID09PSAidW5kZWZpbmVkIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gIjx1bmRlZmluZWQ+IjsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gZmV0Y2hMb2NhbFZhcmlhYmxlcyhzZXNzaW9uLCBvYmplY3RJZCkgewogIGlmICghb2JqZWN0SWQpIHJldHVybiB7fTsKICB0cnkgewogICAgY29uc3QgeyByZXN1bHQgfSA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgICBvYmplY3RJZCwKICAgICAgb3duUHJvcGVydGllczogdHJ1ZQogICAgfSk7CiAgICBjb25zdCBwcm9wZXJ0aWVzID0gcmVzdWx0OwogICAgaWYgKHByb3BlcnRpZXMpIHsKICAgICAgY29uc3QgdmFyaWFibGVzID0ge307CiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgaWYgKHByb3A/LnZhbHVlPy5vYmplY3RJZCAmJiBwcm9wPy52YWx1ZS5jbGFzc05hbWUgPT09ICJBcnJheSIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbEFycmF5KHNlc3Npb24sIGlkLCBwcm9wLm5hbWUsIHZhcmlhYmxlcyk7CiAgICAgICAgfSBlbHNlIGlmIChwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYgcHJvcD8udmFsdWU/LmNsYXNzTmFtZSA9PT0gIk9iamVjdCIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbE9iamVjdChzZXNzaW9uLCBpZCwgcHJvcC5uYW1lLCB2YXJpYWJsZXMpOwogICAgICAgIH0gZWxzZSBpZiAocHJvcD8udmFsdWUpIHsKICAgICAgICAgIHVucm9sbE90aGVyKHByb3AsIHZhcmlhYmxlcyk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB2YXJpYWJsZXM7CiAgICB9CiAgfSBjYXRjaCAoZXJyKSB7CiAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRmFpbGVkIHRvIGZldGNoIGxvY2FsIHZhcmlhYmxlczoiLCBlcnIpOwogICAgfQogICAgcmV0dXJuIHt9OwogIH0KfQpzdGFydERlYnVnZ2VyKCkuY2F0Y2goKGVycm9yKSA9PiB7CiAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gc3RhcnQgZGVidWdnZXI6IiwgZXJyb3IpOwogIH0KfSk7CnNldEludGVydmFsKCgpID0+IHsKfSwgMWU0KTsKZXhwb3J0IHsKICBwcm9jZXNzQ2FsbEZyYW1lcwp9Owo="), { workerData: { captureAllExceptions: process.env.SF_CAPTURE_ALL_EXCEPTIONS === "true" } });
|
|
289
|
+
const I = new Bn(new URL("data:application/javascript;base64,Ly8gc3JjL2RlYnVnZ2VyV29ya2VyLnRzCmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICJpbnNwZWN0b3IvcHJvbWlzZXMiOwppbXBvcnQgeyBwYXJlbnRQb3J0LCB3b3JrZXJEYXRhIH0gZnJvbSAid29ya2VyX3RocmVhZHMiOwpnbG9iYWwuc2ZEZWJ1ZyA9IHZvaWQgMDsKZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMgPSB2b2lkIDA7Cmdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSB2b2lkIDA7CnZhciBzY3JpcHRTb3VyY2VDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CnZhciBub25BcHBGcmFtZVBhdHRlcm5zID0gWwogIC9ub2RlOmludGVybmFsLywKICAvaW50ZXJuYWxcLy8sCiAgL25vZGVfbW9kdWxlcy8sCiAgL25vZGU6ZnMvCl07CmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDYWxsRnJhbWVzKHNlc3Npb24sIGNhbGxGcmFtZXMsIGRlc2NyaXB0aW9uTGluZXMpIHsKICBjb25zdCBsaW1pdGVkQ2FsbEZyYW1lcyA9IGNhbGxGcmFtZXMuc2xpY2UoMCwgZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMpOwogIGlmIChsaW1pdGVkQ2FsbEZyYW1lcy5sZW5ndGggPiAwKSB7CiAgICBjb25zdCBmaXJzdFVybCA9IGxpbWl0ZWRDYWxsRnJhbWVzWzBdLnVybCB8fCAiIjsKICAgIGlmIChub25BcHBGcmFtZVBhdHRlcm5zLnNvbWUoKHApID0+IHAudGVzdChmaXJzdFVybCkpKSB7CiAgICAgIHBhcmVudFBvcnQ/LnBvc3RNZXNzYWdlKHsgdHlwZTogImV4Y2VwdGlvbiIsIGZyYW1lczogW10gfSk7CiAgICAgIHJldHVybjsKICAgIH0KICB9CiAgY29uc3QgZnJhbWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoCiAgICBsaW1pdGVkQ2FsbEZyYW1lcy5tYXAoYXN5bmMgKGZyYW1lLCBpbmRleCkgPT4gewogICAgICB0cnkgewogICAgICAgIGNvbnN0IHsgZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgdXJsLCBzY29wZUNoYWluIH0gPSBmcmFtZTsKICAgICAgICBjb25zdCBsb2NhbFNjb3BlID0gc2NvcGVDaGFpbi5maW5kKChzY29wZSkgPT4gc2NvcGUudHlwZSA9PT0gImxvY2FsIik7CiAgICAgICAgbGV0IGNvZGUgPSAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgIGxldCBmaWxlID0gIiI7CiAgICAgICAgaWYgKHVybCAmJiB1cmwudHJpbSgpICE9PSAiIikgewogICAgICAgICAgZmlsZSA9IHVybDsKICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0aW9uTGluZXNbaW5kZXhdKSB7CiAgICAgICAgICBmaWxlID0gZGVzY3JpcHRpb25MaW5lc1tpbmRleF0udHJpbSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmaWxlID0gIjx1bmtub3duPiI7CiAgICAgICAgfQogICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5zY3JpcHRJZCkgewogICAgICAgICAgY29uc3Qgc2NyaXB0SWQgPSBsb2NhdGlvbi5zY3JpcHRJZDsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBzY3JpcHRTb3VyY2UgPSBzY3JpcHRTb3VyY2VDYWNoZS5nZXQoc2NyaXB0SWQpOwogICAgICAgICAgICBpZiAoc2NyaXB0U291cmNlID09PSB2b2lkIDApIHsKICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uLnBvc3QoCiAgICAgICAgICAgICAgICAiRGVidWdnZXIuZ2V0U2NyaXB0U291cmNlIiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgc2NyaXB0SWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIHNjcmlwdFNvdXJjZSA9IHJlc3VsdC5zY3JpcHRTb3VyY2U7CiAgICAgICAgICAgICAgc2NyaXB0U291cmNlQ2FjaGUuc2V0KHNjcmlwdElkLCBzY3JpcHRTb3VyY2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHNvdXJjZUxpbmVzID0gc2NyaXB0U291cmNlLnNwbGl0KCJcbiIpOwogICAgICAgICAgICBjb2RlID0gc291cmNlTGluZXNbbG9jYXRpb24ubGluZU51bWJlcl0gfHwgIjxub3QgY2FwdHVyZWQ+IjsKICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IHNvdXJjZToiLCBlcnIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvbnN0IGxvY2FscyA9IGxvY2FsU2NvcGU/Lm9iamVjdD8ub2JqZWN0SWQgPyBhd2FpdCBmZXRjaExvY2FsVmFyaWFibGVzKHNlc3Npb24sIGxvY2FsU2NvcGUub2JqZWN0Lm9iamVjdElkKSA6IHt9OwogICAgICAgIHJldHVybiB7CiAgICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lIHx8ICI8YW5vbnltb3VzPiIsCiAgICAgICAgICBsb2NhbHMsCiAgICAgICAgICBmaWxlLAogICAgICAgICAgbGluZTogbG9jYXRpb24/LmxpbmVOdW1iZXIgfHwgMCwKICAgICAgICAgIGNvZGUKICAgICAgICB9OwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRXJyb3IgcHJvY2Vzc2luZyBjYWxsIGZyYW1lOiIsIGVycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiAiPGVycm9yPiIsCiAgICAgICAgICBsb2NhbHM6IHt9LAogICAgICAgICAgZmlsZTogIjx1bmtub3duPiIsCiAgICAgICAgICBsaW5lOiAwLAogICAgICAgICAgY29kZTogIjxub3QgY2FwdHVyZWQ+IgogICAgICAgIH07CiAgICAgIH0KICAgIH0pCiAgKTsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJleGNlcHRpb24iLCBmcmFtZXMgfSk7Cn0KYXN5bmMgZnVuY3Rpb24gaGFuZGxlUGF1c2VkKHNlc3Npb24sIHBhcmFtcykgewogIGNvbnN0IHsgcmVhc29uLCBkYXRhLCBjYWxsRnJhbWVzIH0gPSBwYXJhbXM7CiAgaWYgKHJlYXNvbiAhPT0gImV4Y2VwdGlvbiIgJiYgcmVhc29uICE9PSAicHJvbWlzZVJlamVjdGlvbiIpIHsKICAgIHJldHVybjsKICB9CiAgY29uc3Qgbm9uQXBwUGF0dGVybnMgPSBbCiAgICAvbm9kZTppbnRlcm5hbC8sCiAgICAvaW50ZXJuYWxcLy8sCiAgICAvbm9kZV9tb2R1bGVzLywKICAgIC9ub2RlOmZzLwogIF07CiAgbGV0IGZpcnN0RnJhbWVMaW5lID0gIiI7CiAgbGV0IGRlc2NyaXB0aW9uTGluZXMgPSBbXTsKICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YS5kZXNjcmlwdGlvbiA9PT0gInN0cmluZyIpIHsKICAgIGRlc2NyaXB0aW9uTGluZXMgPSBkYXRhLmRlc2NyaXB0aW9uLnNwbGl0KCJcbiIpLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkuc3RhcnRzV2l0aCgiYXQgIikpOwogICAgZmlyc3RGcmFtZUxpbmUgPSBkZXNjcmlwdGlvbkxpbmVzWzBdIHx8ICIiOwogICAgaWYgKCFmaXJzdEZyYW1lTGluZSkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zdCBlcnJvckZyb21Ob25BcHAgPSBub25BcHBQYXR0ZXJucy5zb21lKAogICAgICAocGF0dGVybikgPT4gcGF0dGVybi50ZXN0KGZpcnN0RnJhbWVMaW5lLnRyaW0oKSkKICAgICk7CiAgICBjb25zdCBub2RlTW9kdWxlc0xpc3QgPSBBcnJheS5pc0FycmF5KAogICAgICBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uCiAgICApID8gZ2xvYmFsLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbiA6IFtdOwogICAgaWYgKGVycm9yRnJvbU5vbkFwcCkgewogICAgICBpZiAobm9kZU1vZHVsZXNMaXN0LmluY2x1ZGVzKCJfX2FsbF9fIikpIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAiW1dvcmtlcl0gRXJyb3IgaXMgZnJvbSBub24tYXBwIHNvdXJjZSwgYnV0IGNhcHR1cmluZyBkdWUgdG8gX19hbGxfXyBydWxlLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG5vZGVNb2R1bGVzTGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgY29uc3QgaXNGcm9tQWxsb3dlZE5vZGVNb2R1bGUgPSBub2RlTW9kdWxlc0xpc3Quc29tZSgKICAgICAgICAgIChtb2R1bGVOYW1lKSA9PiBmaXJzdEZyYW1lTGluZS5pbmNsdWRlcyhgJHttb2R1bGVOYW1lfWApCiAgICAgICAgKTsKICAgICAgICBpZiAoIWlzRnJvbUFsbG93ZWROb2RlTW9kdWxlKSB7CiAgICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coCiAgICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICAgKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygKICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGFwcGVhcnMgdG8gYmUgdHJpZ2dlcmVkIGZyb20gbm9uLWFwcGxpY2F0aW9uIHNvdXJjZXM7IGlnbm9yaW5nLiIKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogICAgYXdhaXQgcHJvY2Vzc0NhbGxGcmFtZXMoc2Vzc2lvbiwgY2FsbEZyYW1lcywgZGVzY3JpcHRpb25MaW5lcyk7CiAgfSBlbHNlIHsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gc3RhcnREZWJ1Z2dlcigpIHsKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJtZXNzYWdlIiwgcmVhZHlUb0dldFBhcmFtZXRlcnM6IHRydWUgfSk7CiAgbGV0IHJlc29sdmVNZXNzYWdlUHJvbWlzZTsKICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICByZXNvbHZlTWVzc2FnZVByb21pc2UgPSByZXNvbHZlOwogIH0pOwogIGxldCBpc1BhdXNlZCA9IGZhbHNlOwogIHBhcmVudFBvcnQ/Lm9uKCJtZXNzYWdlIiwgKG1lc3NhZ2UpID0+IHsKICAgIHRyeSB7CiAgICAgIGlmIChtZXNzYWdlPy50eXBlID09PSAicHJvY2Vzc0V4Y2VwdGlvbiIpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKG1lc3NhZ2U/LnNmRGVidWcgIT09IHZvaWQgMCAmJiBtZXNzYWdlPy5zdGFja0RlcHRoTG9jYWxzICE9PSB2b2lkIDApIHsKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCJVcGRhdGluZyBnbG9iYWwgZGVidWcgdmFyaWFibGVzLi4uIik7CiAgICAgICAgfQogICAgICAgIGdsb2JhbC5zZkRlYnVnID0gbWVzc2FnZS5zZkRlYnVnOwogICAgICAgIGdsb2JhbC5zdGFja0RlcHRoTG9jYWxzID0gbWVzc2FnZS5zdGFja0RlcHRoTG9jYWxzOwogICAgICAgIGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSBtZXNzYWdlLm5vZGVNb2R1bGVzVG9Db2xsZWN0TG9jYWxWYXJpYWJsZXNPbjsKICAgICAgICByZXNvbHZlTWVzc2FnZVByb21pc2UoKTsKICAgICAgfQogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigiXHUyNzRDIEVycm9yIGluIG1lc3NhZ2UgaGFuZGxpbmc6IiwgZXJyb3IpOwogICAgICB9CiAgICB9CiAgfSk7CiAgYXdhaXQgbWVzc2FnZVByb21pc2U7CiAgdHJ5IHsKICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU2Vzc2lvbigpOwogICAgc2Vzc2lvbi5jb25uZWN0VG9NYWluVGhyZWFkKCk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5yZXN1bWVkIiwgKCkgPT4gewogICAgICBpc1BhdXNlZCA9IGZhbHNlOwogICAgfSk7CiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICAgaXNQYXVzZWQgPSB0cnVlOwogICAgICBoYW5kbGVQYXVzZWQoc2Vzc2lvbiwgZXZlbnQucGFyYW1zKS50aGVuKAogICAgICAgIGFzeW5jICgpID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgYXN5bmMgKF8pID0+IHsKICAgICAgICAgIGlmIChpc1BhdXNlZCkgewogICAgICAgICAgICBhd2FpdCBzZXNzaW9uLnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgKTsKICAgIH0pOwogICAgYXdhaXQgc2Vzc2lvbi5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTsKICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIuc2V0UGF1c2VPbkV4Y2VwdGlvbnMiLCB7CiAgICAgIHN0YXRlOiB3b3JrZXJEYXRhPy5jYXB0dXJlQWxsRXhjZXB0aW9ucyA/ICJhbGwiIDogInVuY2F1Z2h0IgogICAgfSk7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBlcnJvciAiLCBlcnJvcik7CiAgICB9CiAgfQogIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgY29uc29sZS5sb2coIltXb3JrZXJdIERlYnVnZ2VyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwogIH0KfQphc3luYyBmdW5jdGlvbiB1bnJvbGxPYmplY3Qoc2Vzc2lvbiwgb2JqZWN0SWQsIG5hbWUsIHZhcnMpIHsKICBjb25zdCBwcm9wZXJ0aWVzID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICBvYmplY3RJZCwKICAgIG93blByb3BlcnRpZXM6IHRydWUKICB9KTsKICB2YXJzW25hbWVdID0gcHJvcGVydGllcy5yZXN1bHQubWFwKCh2KSA9PiBbdi5uYW1lLCB2LnZhbHVlPy52YWx1ZV0pLnJlZHVjZSgob2JqLCBba2V5LCB2YWxdKSA9PiB7CiAgICBvYmpba2V5XSA9IHZhbDsKICAgIHJldHVybiBvYmo7CiAgfSwge30pOwp9CmFzeW5jIGZ1bmN0aW9uIHVucm9sbEFycmF5KHNlc3Npb24sIG9iamVjdElkLCBuYW1lLCB2YXJzKSB7CiAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlCiAgfSk7CiAgdmFyc1tuYW1lXSA9IHByb3BlcnRpZXMucmVzdWx0LmZpbHRlcigodikgPT4gdi5uYW1lICE9PSAibGVuZ3RoIiAmJiAhaXNOYU4ocGFyc2VJbnQodi5uYW1lLCAxMCkpKS5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhLm5hbWUsIDEwKSAtIHBhcnNlSW50KGIubmFtZSwgMTApKS5tYXAoKHYpID0+IHYudmFsdWU/LnZhbHVlKTsKfQpmdW5jdGlvbiB1bnJvbGxPdGhlcihwcm9wLCB2YXJzKSB7CiAgaWYgKCFwcm9wLnZhbHVlKSB7CiAgICByZXR1cm47CiAgfQogIGlmICgidmFsdWUiIGluIHByb3AudmFsdWUpIHsKICAgIGlmIChwcm9wLnZhbHVlLnZhbHVlID09PSB2b2lkIDAgfHwgcHJvcC52YWx1ZS52YWx1ZSA9PT0gbnVsbCkgewogICAgICB2YXJzW3Byb3AubmFtZV0gPSBgPCR7cHJvcC52YWx1ZS52YWx1ZX0+YDsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyc1twcm9wLm5hbWVdID0gcHJvcC52YWx1ZS52YWx1ZTsKICAgIHJldHVybjsKICB9CiAgaWYgKCJkZXNjcmlwdGlvbiIgaW4gcHJvcC52YWx1ZSAmJiBwcm9wLnZhbHVlLnR5cGUgIT09ICJmdW5jdGlvbiIpIHsKICAgIHZhcnNbcHJvcC5uYW1lXSA9IGA8JHtwcm9wLnZhbHVlLmRlc2NyaXB0aW9ufT5gOwogICAgcmV0dXJuOwogIH0KICBpZiAocHJvcC52YWx1ZS50eXBlID09PSAidW5kZWZpbmVkIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gIjx1bmRlZmluZWQ+IjsKICAgIHJldHVybjsKICB9Cn0KYXN5bmMgZnVuY3Rpb24gZmV0Y2hMb2NhbFZhcmlhYmxlcyhzZXNzaW9uLCBvYmplY3RJZCkgewogIGlmICghb2JqZWN0SWQpIHJldHVybiB7fTsKICB0cnkgewogICAgY29uc3QgeyByZXN1bHQgfSA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgICBvYmplY3RJZCwKICAgICAgb3duUHJvcGVydGllczogdHJ1ZQogICAgfSk7CiAgICBjb25zdCBwcm9wZXJ0aWVzID0gcmVzdWx0OwogICAgaWYgKHByb3BlcnRpZXMpIHsKICAgICAgY29uc3QgdmFyaWFibGVzID0ge307CiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgaWYgKHByb3A/LnZhbHVlPy5vYmplY3RJZCAmJiBwcm9wPy52YWx1ZS5jbGFzc05hbWUgPT09ICJBcnJheSIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbEFycmF5KHNlc3Npb24sIGlkLCBwcm9wLm5hbWUsIHZhcmlhYmxlcyk7CiAgICAgICAgfSBlbHNlIGlmIChwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYgcHJvcD8udmFsdWU/LmNsYXNzTmFtZSA9PT0gIk9iamVjdCIpIHsKICAgICAgICAgIGNvbnN0IGlkID0gcHJvcC52YWx1ZS5vYmplY3RJZDsKICAgICAgICAgIGF3YWl0IHVucm9sbE9iamVjdChzZXNzaW9uLCBpZCwgcHJvcC5uYW1lLCB2YXJpYWJsZXMpOwogICAgICAgIH0gZWxzZSBpZiAocHJvcD8udmFsdWUpIHsKICAgICAgICAgIHVucm9sbE90aGVyKHByb3AsIHZhcmlhYmxlcyk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB2YXJpYWJsZXM7CiAgICB9CiAgfSBjYXRjaCAoZXJyKSB7CiAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRmFpbGVkIHRvIGZldGNoIGxvY2FsIHZhcmlhYmxlczoiLCBlcnIpOwogICAgfQogICAgcmV0dXJuIHt9OwogIH0KfQpzdGFydERlYnVnZ2VyKCkuY2F0Y2goKGVycm9yKSA9PiB7CiAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICBjb25zb2xlLmVycm9yKCJbV29ya2VyXSBGYWlsZWQgdG8gc3RhcnQgZGVidWdnZXI6IiwgZXJyb3IpOwogIH0KfSk7CnNldEludGVydmFsKCgpID0+IHsKfSwgMWU0KTsKZXhwb3J0IHsKICBwcm9jZXNzQ2FsbEZyYW1lcwp9Owo="), { workerData: { captureAllExceptions: !0 } });
|
|
290
290
|
let C = null;
|
|
291
291
|
const g = /* @__PURE__ */ new WeakMap();
|
|
292
|
-
I.on("message", async (
|
|
293
|
-
if (typeof
|
|
294
|
-
const { frames:
|
|
292
|
+
I.on("message", async (e) => {
|
|
293
|
+
if (typeof e == "string" && m().sfDebug && B(`[Worker] ${e}`), e.readyToGetParameters && I.postMessage({ sfDebug: m().sfDebug, stackDepthLocals: m().stackDepthLocals, nodeModulesToCollectLocalVariablesOn: m().nodeModulesToCollectLocalVariablesOn }), e.type === "exception") {
|
|
294
|
+
const { frames: i } = e, o = C;
|
|
295
295
|
if (!o) return;
|
|
296
296
|
const s = (function(d) {
|
|
297
297
|
return d ? d.split(`
|
|
298
298
|
`).slice(1).map((b) => {
|
|
299
|
-
const
|
|
300
|
-
if (
|
|
301
|
-
const [, p,
|
|
302
|
-
return new R({ function: p || "<anonymous>", locals: {}, file:
|
|
299
|
+
const W = /at (.+?) \((.+):(\d+):(\d+)\)/.exec(b) || /at (.+):(\d+):(\d+)/.exec(b);
|
|
300
|
+
if (W) {
|
|
301
|
+
const [, p, Y, r, Z] = W;
|
|
302
|
+
return new R({ function: p || "<anonymous>", locals: {}, file: Y || "<unknown>", line: parseInt(r, 10) || 0, code: "<not captured>", column: parseInt(Z) || 0 });
|
|
303
303
|
}
|
|
304
304
|
return new R({ function: "<unknown>", locals: {}, file: "<unknown>", line: 0, code: "<not captured>", column: 0 });
|
|
305
305
|
}) : [];
|
|
306
|
-
})(P(o.stack)),
|
|
307
|
-
const
|
|
308
|
-
let p = -1,
|
|
306
|
+
})(P(o.stack)), f = (function(d, b) {
|
|
307
|
+
const W = [];
|
|
308
|
+
let p = -1, Y = -1;
|
|
309
309
|
for (let r = 0; r < d.length; r++) {
|
|
310
310
|
const Z = Xn(d[r].file);
|
|
311
|
-
if (
|
|
311
|
+
if (Y = r, Z !== "<unknown>") {
|
|
312
312
|
for (let u = 0; u < b.length; u++) {
|
|
313
|
-
const
|
|
314
|
-
if (sn(
|
|
315
|
-
p = u,
|
|
313
|
+
const y = b[u];
|
|
314
|
+
if (sn(y, Z) || typeof y.file == "string" && y.file.includes(Z)) {
|
|
315
|
+
p = u, K = 0, m().sfDebug && B(`✅ Matched Frame Found: ${Z} @ Debugger Frame ${u}`);
|
|
316
316
|
break;
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
if (p !== -1) break;
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
|
-
if (p === -1) return
|
|
323
|
-
m().sfDebug &&
|
|
322
|
+
if (p === -1) return K === 10 ? (K = 0, d) : (++K, m().sfDebug && B(`"❌ No matching frame found. Checking once again, Attempt N ${K}"`), []);
|
|
323
|
+
m().sfDebug && B(`🔄 Merging from matched index ${p} onward...`);
|
|
324
324
|
for (let r = 0; r < b.length; r++) {
|
|
325
|
-
const Z = d[
|
|
326
|
-
|
|
325
|
+
const Z = d[Y + r], u = b[p + r];
|
|
326
|
+
W.push(new R({ function: u?.function || Z?.function || "<anonymous>", locals: u?.locals || Z?.locals || {}, file: Z?.file || u?.file || "<unknown>", line: u?.line || Z?.line || 0, code: u?.code || Z?.code || "<not captured>" }));
|
|
327
327
|
}
|
|
328
|
-
return
|
|
329
|
-
})(s,
|
|
330
|
-
if (
|
|
328
|
+
return W;
|
|
329
|
+
})(s, i || []);
|
|
330
|
+
if (f.length !== 0) {
|
|
331
331
|
C = null;
|
|
332
|
-
const d = m().stackDepthCodeTraceDepth, b = d === -1 ?
|
|
333
|
-
await Promise.all(Array.from({ length:
|
|
334
|
-
const
|
|
332
|
+
const d = m().stackDepthCodeTraceDepth, b = d === -1 ? f : f.slice(0, d + 1), W = Math.min(b.length, s.length);
|
|
333
|
+
await Promise.all(Array.from({ length: W }, async (Z, u) => {
|
|
334
|
+
const y = await (async function(un, bn, an) {
|
|
335
335
|
const N = (function(A) {
|
|
336
336
|
A.startsWith("at ") && (A = A.slice(3).trim());
|
|
337
337
|
const H = A.match(/^(.*?)(:\d+)+(\.map)?$/);
|
|
@@ -340,79 +340,78 @@ function Dn(n) {
|
|
|
340
340
|
if (!N || N === "<unknown>") return null;
|
|
341
341
|
const X = N + ".map";
|
|
342
342
|
try {
|
|
343
|
-
let A =
|
|
343
|
+
let A = v.get(X);
|
|
344
344
|
if (A === void 0) {
|
|
345
345
|
const F = await fn.readFile(X, "utf-8");
|
|
346
|
-
A = F ? JSON.parse(F) : null,
|
|
346
|
+
A = F ? JSON.parse(F) : null, cn(X, A);
|
|
347
347
|
}
|
|
348
348
|
if (!A) return null;
|
|
349
349
|
let H = new yn.SourceMapConsumer(A).originalPositionFor({ line: bn, column: an });
|
|
350
350
|
if (N && H.source) {
|
|
351
351
|
const F = tn(N), Q = A.sources.findIndex((k) => tn(k) === F);
|
|
352
|
-
if (Q === -1) m().sfDebug &&
|
|
352
|
+
if (Q === -1) m().sfDebug && B(`Source file "${N}" not found in the source map.`);
|
|
353
353
|
else {
|
|
354
354
|
const k = A.sourcesContent[Q], dn = A.names.join(",");
|
|
355
355
|
if (k)
|
|
356
356
|
return { content: k.split(`
|
|
357
357
|
`).slice(H.line - 1, H.line + 20).join(`
|
|
358
358
|
`), name: dn, file: H.source };
|
|
359
|
-
m().sfDebug &&
|
|
359
|
+
m().sfDebug && B(`No source content available for file "${N}".`);
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
362
|
return { content: A.sourcesContent[0], name: A.names[0], file: A.file };
|
|
363
363
|
} catch (A) {
|
|
364
|
-
m().sfDebug &&
|
|
364
|
+
m().sfDebug && B(`Cant read/parse "${X}: Error - ".`, A), cn(X, null);
|
|
365
365
|
}
|
|
366
366
|
return null;
|
|
367
367
|
})(b[u].file, s[u].line, s[u].column);
|
|
368
|
-
|
|
368
|
+
y && (y.content != null && (b[u].code = y.content), y.file != null && (b[u].file = y.file));
|
|
369
369
|
})), n.setOperationName("CollectExceptions");
|
|
370
370
|
const p = o.message ? `${o.name}: ${o.message}` : o.name;
|
|
371
|
-
m().sfDebug &&
|
|
372
|
-
const
|
|
373
|
-
r ? (
|
|
374
|
-
|
|
371
|
+
m().sfDebug && B("error message is : ", p);
|
|
372
|
+
const Y = U.getInstance(), r = g.get(o);
|
|
373
|
+
r ? (Y.setTraceIdFor(r, r), Y.runWithSession(r, () => {
|
|
374
|
+
Y.setTraceId(r), n.doSend(p, b);
|
|
375
375
|
})) : n.doSend(p, b);
|
|
376
376
|
}
|
|
377
377
|
}
|
|
378
|
-
}), I.on("error", (
|
|
379
|
-
gn("[Worker Error]",
|
|
380
|
-
}), I.on("exit", (
|
|
381
|
-
gn(`[Worker] Exited with code ${
|
|
378
|
+
}), I.on("error", (e) => {
|
|
379
|
+
gn("[Worker Error]", e);
|
|
380
|
+
}), I.on("exit", (e) => {
|
|
381
|
+
gn(`[Worker] Exited with code ${e}`);
|
|
382
382
|
}), I.unref();
|
|
383
|
-
const
|
|
384
|
-
function t(...
|
|
385
|
-
const
|
|
386
|
-
Reflect.setPrototypeOf(l, t.prototype);
|
|
383
|
+
const c = Error, l = /* @__PURE__ */ new Set();
|
|
384
|
+
function t(...e) {
|
|
385
|
+
const i = new.target ?? t, o = Reflect.construct(c, e, i);
|
|
387
386
|
try {
|
|
388
|
-
const
|
|
389
|
-
g.set(
|
|
387
|
+
const f = U.getInstance().getTraceId();
|
|
388
|
+
g.set(o, f);
|
|
390
389
|
} catch {
|
|
391
390
|
}
|
|
392
|
-
|
|
393
|
-
const
|
|
391
|
+
c.captureStackTrace && c.captureStackTrace(o, i);
|
|
392
|
+
const s = `${o.message}:${P(o.stack).split(`
|
|
394
393
|
`)[1]?.trim()}`;
|
|
395
|
-
if (!
|
|
396
|
-
if (
|
|
397
|
-
const
|
|
398
|
-
|
|
394
|
+
if (!l.has(s)) {
|
|
395
|
+
if (l.add(s), l.size > 1e3) {
|
|
396
|
+
const f = l.values().next().value;
|
|
397
|
+
l.delete(f);
|
|
399
398
|
}
|
|
400
|
-
C =
|
|
399
|
+
C = o, I.postMessage({ type: "processException", error: o.message });
|
|
401
400
|
}
|
|
402
|
-
return
|
|
401
|
+
return o;
|
|
403
402
|
}
|
|
404
|
-
t.prototype =
|
|
403
|
+
t.prototype = c.prototype, Object.setPrototypeOf(t, c), globalThis.Error = t;
|
|
405
404
|
}
|
|
406
405
|
function tn(n) {
|
|
407
406
|
return n = (n = (n = n.replace(/^webpack:\/\/[^\/]+\/\.?\//, "")).replace(/^.*\/pages\//, "pages/")).replace(/\.(js|ts)$/, "");
|
|
408
407
|
}
|
|
409
|
-
const wn = 50,
|
|
410
|
-
function
|
|
411
|
-
if (
|
|
412
|
-
const C =
|
|
413
|
-
|
|
408
|
+
const wn = 50, v = /* @__PURE__ */ new Map();
|
|
409
|
+
function cn(n, I) {
|
|
410
|
+
if (v.size >= wn) {
|
|
411
|
+
const C = v.keys().next().value;
|
|
412
|
+
v.delete(C);
|
|
414
413
|
}
|
|
415
|
-
|
|
414
|
+
v.set(n, I);
|
|
416
415
|
}
|
|
417
416
|
function Xn(n) {
|
|
418
417
|
return n?.split("/").pop() || "<unknown>";
|
|
@@ -423,31 +422,31 @@ function sn(n, I) {
|
|
|
423
422
|
if (typeof C == "string" && C.includes(I) || typeof C == "object" && sn(C, I)) return !0;
|
|
424
423
|
return !1;
|
|
425
424
|
}
|
|
426
|
-
let
|
|
425
|
+
let h, w, x, en = !1;
|
|
427
426
|
function An(n) {
|
|
428
427
|
if (!n) return;
|
|
429
428
|
const I = n.toLowerCase().trim();
|
|
430
429
|
return !!["1", "true", "yes", "on"].includes(I) || !["0", "false", "no", "off"].includes(I) && void 0;
|
|
431
430
|
}
|
|
432
431
|
function rn() {
|
|
433
|
-
if (
|
|
432
|
+
if (h !== void 0) return h;
|
|
434
433
|
const n = process.env || {}, I = An(n.SF_IS_LOCAL);
|
|
435
|
-
if (I !== void 0) return
|
|
434
|
+
if (I !== void 0) return h = I;
|
|
436
435
|
const C = (n.SF_ENV || n.NODE_ENV || "").toLowerCase();
|
|
437
|
-
if (["local", "dev", "development"].includes(C)) return
|
|
438
|
-
if (["KUBERNETES_SERVICE_HOST", "AWS_EXECUTION_ENV", "ECS_CONTAINER_METADATA_URI", "ECS_CONTAINER_METADATA_URI_V4", "GAE_ENV", "K_SERVICE", "GOOGLE_CLOUD_PROJECT", "WEBSITE_INSTANCE_ID", "VERCEL", "NETLIFY", "DYNO", "RENDER", "FLY_APP_NAME", "RAILWAY_STATIC_URL", "CF_PAGES", "CLOUDFLARE"].some((
|
|
436
|
+
if (["local", "dev", "development"].includes(C)) return h = !0;
|
|
437
|
+
if (["KUBERNETES_SERVICE_HOST", "AWS_EXECUTION_ENV", "ECS_CONTAINER_METADATA_URI", "ECS_CONTAINER_METADATA_URI_V4", "GAE_ENV", "K_SERVICE", "GOOGLE_CLOUD_PROJECT", "WEBSITE_INSTANCE_ID", "VERCEL", "NETLIFY", "DYNO", "RENDER", "FLY_APP_NAME", "RAILWAY_STATIC_URL", "CF_PAGES", "CLOUDFLARE"].some((c) => !!n[c])) return h = !1;
|
|
439
438
|
const g = (Gn.hostname?.() || n.HOSTNAME || "").toLowerCase();
|
|
440
|
-
return
|
|
439
|
+
return h = !(g !== "localhost" && !g.endsWith(".local") && !g.includes("local"));
|
|
441
440
|
}
|
|
442
441
|
function T(n, I, C) {
|
|
443
442
|
return new Promise((g) => {
|
|
444
443
|
try {
|
|
445
|
-
const
|
|
444
|
+
const c = new URL(n), l = (c.protocol === "https:" ? pn : Wn).request({ method: "GET", hostname: c.hostname, port: c.port || (c.protocol === "https:" ? 443 : 80), path: c.pathname + (c.search || ""), headers: I }, (t) => {
|
|
446
445
|
t.resume(), t.statusCode && t.statusCode >= 200 && t.statusCode < 400 ? g("ok") : g("http_error");
|
|
447
446
|
});
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
}),
|
|
447
|
+
l.on("error", () => g("error")), l.setTimeout(C, () => {
|
|
448
|
+
l.destroy(), g("timeout");
|
|
449
|
+
}), l.end();
|
|
451
450
|
} catch {
|
|
452
451
|
g("error");
|
|
453
452
|
}
|
|
@@ -465,21 +464,21 @@ function Sn() {
|
|
|
465
464
|
}
|
|
466
465
|
return w = !1, !1;
|
|
467
466
|
}
|
|
468
|
-
function
|
|
467
|
+
function Kn() {
|
|
469
468
|
return x !== void 0 || (x = !rn()), x;
|
|
470
469
|
}
|
|
471
470
|
function Qn() {
|
|
472
|
-
return !!Sn() && (!
|
|
471
|
+
return !!Sn() && (!Kn() || (console.warn("[FuncSpan Runtime] DISABLED in production environment"), !1));
|
|
473
472
|
}
|
|
474
473
|
export {
|
|
475
|
-
|
|
476
|
-
|
|
474
|
+
j as C,
|
|
475
|
+
En as a,
|
|
477
476
|
gn as b,
|
|
478
477
|
P as c,
|
|
479
478
|
On as d,
|
|
480
479
|
Dn as e,
|
|
481
|
-
|
|
480
|
+
Kn as f,
|
|
482
481
|
Sn as g,
|
|
483
|
-
|
|
482
|
+
B as i,
|
|
484
483
|
Qn as s
|
|
485
484
|
};
|