@getopenpay/openpay-js 0.5.14 → 0.5.16
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/{ExportResult-B-YLKMaU.js → ExportResult-BacsqwKA.js} +1 -1
- package/dist/{Resource-qJjZ52YV.js → Resource-CUhg8dEK.js} +6 -6
- package/dist/SimpleSpanProcessor-BtNzab2_.js +910 -0
- package/dist/_commonjsHelpers-CdLE1o9f.js +30 -0
- package/dist/detect-resources-6fNItMfQ.js +862 -0
- package/dist/{diag-api-CCLNzlUs.js → diag-api-BaoBTidT.js} +2 -2
- package/dist/index-2Dpi7rDE.js +127 -0
- package/dist/index-BkFKN09r.js +18 -0
- package/dist/index-BohOdvI5.js +6718 -0
- package/dist/index-Cb6WFqJj.js +1012 -0
- package/dist/index-CfhP31jP.js +147 -0
- package/dist/index-CmjNpx1j.js +1619 -0
- package/dist/index-CsjF5pDg.js +6 -0
- package/dist/index-Dcezwdcs.js +7000 -0
- package/dist/index-DhyFkarT.js +430 -0
- package/dist/index-t_WVTb5S.js +28 -0
- package/dist/index.d.ts +27 -2
- package/dist/index.es.js +2 -2
- package/dist/index.umd.js +40 -40
- package/dist/lifecycle-D1BdEbZs.js +119 -0
- package/dist/{metrics-api-DtBUlvdW.js → metrics-api-CsLzDvjo.js} +28 -28
- package/dist/sdk-info-ChuKu8zW.js +285 -0
- package/dist/suppress-tracing-Cu47NVB2.js +17 -0
- package/dist/url-CgnFZYDI.js +798 -0
- package/dist/utils-BJ1UAbM8.js +101 -0
- package/dist/utils-De78ey-v.js +12 -0
- package/dist/utils-Dius2V8g.js +270 -0
- package/package.json +4 -4
- package/dist/SimpleSpanProcessor-BwonVfHA.js +0 -957
- package/dist/_commonjsHelpers-f76XedMs.js +0 -25
- package/dist/detect-resources-Bi3A_QRE.js +0 -854
- package/dist/index-BIZrcIxl.js +0 -19
- package/dist/index-Bs_K1BID.js +0 -431
- package/dist/index-CRez6biP.js +0 -150
- package/dist/index-Cmp0890G.js +0 -1599
- package/dist/index-DCgcMBKE.js +0 -52
- package/dist/index-DDPV-DRN.js +0 -7040
- package/dist/index-SVnUIdm3.js +0 -130
- package/dist/index-UHBeywOG.js +0 -330
- package/dist/index-sp5MCjj0.js +0 -6685
- package/dist/index-wETKGbBW.js +0 -830
- package/dist/lifecycle-BjQ-7GLm.js +0 -119
- package/dist/sdk-info-Ved2vK62.js +0 -484
- package/dist/url-C-ZmHCbX.js +0 -797
- package/dist/utils-CX5YT7yI.js +0 -14
- package/dist/utils-DwFEBfnB.js +0 -142
- package/dist/utils-wV4fOQ_R.js +0 -381
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { c as M, t as p, i as P, T as o, b as D, d as b } from "./index-Dcezwdcs.js";
|
|
2
|
+
import { i as A } from "./suppress-tracing-Cu47NVB2.js";
|
|
3
|
+
var l = M("OpenTelemetry Context Key B3 Debug Flag"), f = "b3", v = "x-b3-traceid", g = "x-b3-spanid", c = "x-b3-sampled", B = "x-b3-parentspanid", S = "x-b3-flags", F = /* @__PURE__ */ new Set([!0, "true", "True", "1", 1]), N = /* @__PURE__ */ new Set([!1, "false", "False", "0", 0]);
|
|
4
|
+
function V(r) {
|
|
5
|
+
return r === o.SAMPLED || r === o.NONE;
|
|
6
|
+
}
|
|
7
|
+
function m(r) {
|
|
8
|
+
return Array.isArray(r) ? r[0] : r;
|
|
9
|
+
}
|
|
10
|
+
function d(r, t, a) {
|
|
11
|
+
var n = t.get(r, a);
|
|
12
|
+
return m(n);
|
|
13
|
+
}
|
|
14
|
+
function C(r, t) {
|
|
15
|
+
var a = d(r, t, v);
|
|
16
|
+
return typeof a == "string" ? a.padStart(32, "0") : "";
|
|
17
|
+
}
|
|
18
|
+
function x(r, t) {
|
|
19
|
+
var a = d(r, t, g);
|
|
20
|
+
return typeof a == "string" ? a : "";
|
|
21
|
+
}
|
|
22
|
+
function h(r, t) {
|
|
23
|
+
var a = d(r, t, S);
|
|
24
|
+
return a === "1" ? "1" : void 0;
|
|
25
|
+
}
|
|
26
|
+
function R(r, t) {
|
|
27
|
+
var a = d(r, t, c), n = h(r, t);
|
|
28
|
+
if (n === "1" || F.has(a))
|
|
29
|
+
return o.SAMPLED;
|
|
30
|
+
if (a === void 0 || N.has(a))
|
|
31
|
+
return o.NONE;
|
|
32
|
+
}
|
|
33
|
+
var U = (
|
|
34
|
+
/** @class */
|
|
35
|
+
(function() {
|
|
36
|
+
function r() {
|
|
37
|
+
}
|
|
38
|
+
return r.prototype.inject = function(t, a, n) {
|
|
39
|
+
var e = p.getSpanContext(t);
|
|
40
|
+
if (!(!e || !P(e) || A(t))) {
|
|
41
|
+
var i = t.getValue(l);
|
|
42
|
+
n.set(a, v, e.traceId), n.set(a, g, e.spanId), i === "1" ? n.set(a, S, i) : e.traceFlags !== void 0 && n.set(a, c, (o.SAMPLED & e.traceFlags) === o.SAMPLED ? "1" : "0");
|
|
43
|
+
}
|
|
44
|
+
}, r.prototype.extract = function(t, a, n) {
|
|
45
|
+
var e = C(a, n), i = x(a, n), u = R(a, n), s = h(a, n);
|
|
46
|
+
return D(e) && b(i) && V(u) ? (t = t.setValue(l, s), p.setSpanContext(t, {
|
|
47
|
+
traceId: e,
|
|
48
|
+
spanId: i,
|
|
49
|
+
isRemote: !0,
|
|
50
|
+
traceFlags: u
|
|
51
|
+
})) : t;
|
|
52
|
+
}, r.prototype.fields = function() {
|
|
53
|
+
return [
|
|
54
|
+
v,
|
|
55
|
+
g,
|
|
56
|
+
S,
|
|
57
|
+
c,
|
|
58
|
+
B
|
|
59
|
+
];
|
|
60
|
+
}, r;
|
|
61
|
+
})()
|
|
62
|
+
), G = function(r, t) {
|
|
63
|
+
var a = typeof Symbol == "function" && r[Symbol.iterator];
|
|
64
|
+
if (!a) return r;
|
|
65
|
+
var n = a.call(r), e, i = [], u;
|
|
66
|
+
try {
|
|
67
|
+
for (; (t === void 0 || t-- > 0) && !(e = n.next()).done; ) i.push(e.value);
|
|
68
|
+
} catch (s) {
|
|
69
|
+
u = { error: s };
|
|
70
|
+
} finally {
|
|
71
|
+
try {
|
|
72
|
+
e && !e.done && (a = n.return) && a.call(n);
|
|
73
|
+
} finally {
|
|
74
|
+
if (u) throw u.error;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return i;
|
|
78
|
+
}, H = /((?:[0-9a-f]{16}){1,2})-([0-9a-f]{16})(?:-([01d](?![0-9a-f])))?(?:-([0-9a-f]{16}))?/, X = "0".repeat(16), j = /* @__PURE__ */ new Set(["d", "1"]), w = "d";
|
|
79
|
+
function O(r) {
|
|
80
|
+
return r.length === 32 ? r : "" + X + r;
|
|
81
|
+
}
|
|
82
|
+
function K(r) {
|
|
83
|
+
return r && j.has(r) ? o.SAMPLED : o.NONE;
|
|
84
|
+
}
|
|
85
|
+
var Y = (
|
|
86
|
+
/** @class */
|
|
87
|
+
(function() {
|
|
88
|
+
function r() {
|
|
89
|
+
}
|
|
90
|
+
return r.prototype.inject = function(t, a, n) {
|
|
91
|
+
var e = p.getSpanContext(t);
|
|
92
|
+
if (!(!e || !P(e) || A(t))) {
|
|
93
|
+
var i = t.getValue(l) || e.traceFlags & 1, u = e.traceId + "-" + e.spanId + "-" + i;
|
|
94
|
+
n.set(a, f, u);
|
|
95
|
+
}
|
|
96
|
+
}, r.prototype.extract = function(t, a, n) {
|
|
97
|
+
var e = n.get(a, f), i = Array.isArray(e) ? e[0] : e;
|
|
98
|
+
if (typeof i != "string")
|
|
99
|
+
return t;
|
|
100
|
+
var u = i.match(H);
|
|
101
|
+
if (!u)
|
|
102
|
+
return t;
|
|
103
|
+
var s = G(u, 4), T = s[1], y = s[2], _ = s[3], I = O(T);
|
|
104
|
+
if (!D(I) || !b(y))
|
|
105
|
+
return t;
|
|
106
|
+
var L = K(_);
|
|
107
|
+
return _ === w && (t = t.setValue(l, _)), p.setSpanContext(t, {
|
|
108
|
+
traceId: I,
|
|
109
|
+
spanId: y,
|
|
110
|
+
isRemote: !0,
|
|
111
|
+
traceFlags: L
|
|
112
|
+
});
|
|
113
|
+
}, r.prototype.fields = function() {
|
|
114
|
+
return [f];
|
|
115
|
+
}, r;
|
|
116
|
+
})()
|
|
117
|
+
), E;
|
|
118
|
+
(function(r) {
|
|
119
|
+
r[r.SINGLE_HEADER = 0] = "SINGLE_HEADER", r[r.MULTI_HEADER = 1] = "MULTI_HEADER";
|
|
120
|
+
})(E || (E = {}));
|
|
121
|
+
var z = (
|
|
122
|
+
/** @class */
|
|
123
|
+
(function() {
|
|
124
|
+
function r(t) {
|
|
125
|
+
t === void 0 && (t = {}), this._b3MultiPropagator = new U(), this._b3SinglePropagator = new Y(), t.injectEncoding === E.MULTI_HEADER ? (this._inject = this._b3MultiPropagator.inject, this._fields = this._b3MultiPropagator.fields()) : (this._inject = this._b3SinglePropagator.inject, this._fields = this._b3SinglePropagator.fields());
|
|
126
|
+
}
|
|
127
|
+
return r.prototype.inject = function(t, a, n) {
|
|
128
|
+
A(t) || this._inject(t, a, n);
|
|
129
|
+
}, r.prototype.extract = function(t, a, n) {
|
|
130
|
+
var e = n.get(a, f), i = Array.isArray(e) ? e[0] : e;
|
|
131
|
+
return i ? this._b3SinglePropagator.extract(t, a, n) : this._b3MultiPropagator.extract(t, a, n);
|
|
132
|
+
}, r.prototype.fields = function() {
|
|
133
|
+
return this._fields;
|
|
134
|
+
}, r;
|
|
135
|
+
})()
|
|
136
|
+
);
|
|
137
|
+
export {
|
|
138
|
+
E as B3InjectEncoding,
|
|
139
|
+
z as B3Propagator,
|
|
140
|
+
f as B3_CONTEXT_HEADER,
|
|
141
|
+
S as X_B3_FLAGS,
|
|
142
|
+
B as X_B3_PARENT_SPAN_ID,
|
|
143
|
+
c as X_B3_SAMPLED,
|
|
144
|
+
g as X_B3_SPAN_ID,
|
|
145
|
+
v as X_B3_TRACE_ID
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBsfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGMgYXMgY3JlYXRlQ29udGV4dEtleSwgdCBhcyB0cmFjZSwgaSBhcyBpc1NwYW5Db250ZXh0VmFsaWQsIFQgYXMgVHJhY2VGbGFncywgYiBhcyBpc1ZhbGlkVHJhY2VJZCwgZCBhcyBpc1ZhbGlkU3BhbklkIH0gZnJvbSAnLi9pbmRleC0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBpIGFzIGlzVHJhY2luZ1N1cHByZXNzZWQgfSBmcm9tICcuL3N1cHByZXNzLXRyYWNpbmctIX57MDBhfX4uanMnO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqIHNoYXJlZCBjb250ZXh0IGZvciBzdG9yaW5nIGFuIGV4dHJhY3RlZCBiMyBkZWJ1ZyBmbGFnICovXG52YXIgQjNfREVCVUdfRkxBR19LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IENvbnRleHQgS2V5IEIzIERlYnVnIEZsYWcnKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBCMyBzaW5nbGUtaGVhZGVyIGtleSAqL1xudmFyIEIzX0NPTlRFWFRfSEVBREVSID0gJ2IzJztcbi8qIGIzIG11bHRpLWhlYWRlciBrZXlzICovXG52YXIgWF9CM19UUkFDRV9JRCA9ICd4LWIzLXRyYWNlaWQnO1xudmFyIFhfQjNfU1BBTl9JRCA9ICd4LWIzLXNwYW5pZCc7XG52YXIgWF9CM19TQU1QTEVEID0gJ3gtYjMtc2FtcGxlZCc7XG52YXIgWF9CM19QQVJFTlRfU1BBTl9JRCA9ICd4LWIzLXBhcmVudHNwYW5pZCc7XG52YXIgWF9CM19GTEFHUyA9ICd4LWIzLWZsYWdzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBWQUxJRF9TQU1QTEVEX1ZBTFVFUyA9IG5ldyBTZXQoW3RydWUsICd0cnVlJywgJ1RydWUnLCAnMScsIDFdKTtcbnZhciBWQUxJRF9VTlNBTVBMRURfVkFMVUVTID0gbmV3IFNldChbZmFsc2UsICdmYWxzZScsICdGYWxzZScsICcwJywgMF0pO1xuZnVuY3Rpb24gaXNWYWxpZFNhbXBsZWRWYWx1ZShzYW1wbGVkKSB7XG4gICAgcmV0dXJuIHNhbXBsZWQgPT09IFRyYWNlRmxhZ3MuU0FNUExFRCB8fCBzYW1wbGVkID09PSBUcmFjZUZsYWdzLk5PTkU7XG59XG5mdW5jdGlvbiBwYXJzZUhlYWRlcihoZWFkZXIpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xufVxuZnVuY3Rpb24gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBrZXkpIHtcbiAgICB2YXIgaGVhZGVyID0gZ2V0dGVyLmdldChjYXJyaWVyLCBrZXkpO1xuICAgIHJldHVybiBwYXJzZUhlYWRlcihoZWFkZXIpO1xufVxuZnVuY3Rpb24gZ2V0VHJhY2VJZChjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICB2YXIgdHJhY2VJZCA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19UUkFDRV9JRCk7XG4gICAgaWYgKHR5cGVvZiB0cmFjZUlkID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdHJhY2VJZC5wYWRTdGFydCgzMiwgJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZnVuY3Rpb24gZ2V0U3BhbklkKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciBzcGFuSWQgPSBnZXRIZWFkZXJWYWx1ZShjYXJyaWVyLCBnZXR0ZXIsIFhfQjNfU1BBTl9JRCk7XG4gICAgaWYgKHR5cGVvZiBzcGFuSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBzcGFuSWQ7XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbmZ1bmN0aW9uIGdldERlYnVnKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciBkZWJ1ZyA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19GTEFHUyk7XG4gICAgcmV0dXJuIGRlYnVnID09PSAnMScgPyAnMScgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBnZXRUcmFjZUZsYWdzKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciB0cmFjZUZsYWdzID0gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBYX0IzX1NBTVBMRUQpO1xuICAgIHZhciBkZWJ1ZyA9IGdldERlYnVnKGNhcnJpZXIsIGdldHRlcik7XG4gICAgaWYgKGRlYnVnID09PSAnMScgfHwgVkFMSURfU0FNUExFRF9WQUxVRVMuaGFzKHRyYWNlRmxhZ3MpKSB7XG4gICAgICAgIHJldHVybiBUcmFjZUZsYWdzLlNBTVBMRUQ7XG4gICAgfVxuICAgIGlmICh0cmFjZUZsYWdzID09PSB1bmRlZmluZWQgfHwgVkFMSURfVU5TQU1QTEVEX1ZBTFVFUy5oYXModHJhY2VGbGFncykpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuTk9ORTtcbiAgICB9XG4gICAgLy8gVGhpcyBpbmRpY2F0ZXMgdG8gaXNWYWxpZFNhbXBsZWRWYWx1ZSB0aGF0IHRoaXMgaXMgbm90IHZhbGlkXG4gICAgcmV0dXJuO1xufVxuLyoqXG4gKiBQcm9wYWdhdG9yIGZvciB0aGUgQjMgbXVsdGlwbGUtaGVhZGVyIEhUVFAgZm9ybWF0LlxuICogQmFzZWQgb246IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuemlwa2luL2IzLXByb3BhZ2F0aW9uXG4gKi9cbnZhciBCM011bHRpUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCM011bHRpUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgQjNNdWx0aVByb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIHNwYW5Db250ZXh0ID0gdHJhY2UuZ2V0U3BhbkNvbnRleHQoY29udGV4dCk7XG4gICAgICAgIGlmICghc3BhbkNvbnRleHQgfHxcbiAgICAgICAgICAgICFpc1NwYW5Db250ZXh0VmFsaWQoc3BhbkNvbnRleHQpIHx8XG4gICAgICAgICAgICBpc1RyYWNpbmdTdXBwcmVzc2VkKGNvbnRleHQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgZGVidWcgPSBjb250ZXh0LmdldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZKTtcbiAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1RSQUNFX0lELCBzcGFuQ29udGV4dC50cmFjZUlkKTtcbiAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1NQQU5fSUQsIHNwYW5Db250ZXh0LnNwYW5JZCk7XG4gICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQjMgc3BlYywgaWYgdGhlIGRlYnVnIGZsYWcgaXMgc2V0LFxuICAgICAgICAvLyB0aGUgc2FtcGxlZCBmbGFnIHNob3VsZG4ndCBiZSBwcm9wYWdhdGVkIGFzIHdlbGwuXG4gICAgICAgIGlmIChkZWJ1ZyA9PT0gJzEnKSB7XG4gICAgICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIFhfQjNfRkxBR1MsIGRlYnVnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzcGFuQ29udGV4dC50cmFjZUZsYWdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFdlIHNldCB0aGUgaGVhZGVyIG9ubHkgaWYgdGhlcmUgaXMgYW4gZXhpc3Rpbmcgc2FtcGxpbmcgZGVjaXNpb24uXG4gICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Ugd2lsbCBvbWl0IGl0ID0+IEFic2VudC5cbiAgICAgICAgICAgIHNldHRlci5zZXQoY2FycmllciwgWF9CM19TQU1QTEVELCAoVHJhY2VGbGFncy5TQU1QTEVEICYgc3BhbkNvbnRleHQudHJhY2VGbGFncykgPT09IFRyYWNlRmxhZ3MuU0FNUExFRFxuICAgICAgICAgICAgICAgID8gJzEnXG4gICAgICAgICAgICAgICAgOiAnMCcpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBCM011bHRpUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIHRyYWNlSWQgPSBnZXRUcmFjZUlkKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIHZhciBzcGFuSWQgPSBnZXRTcGFuSWQoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgdmFyIHRyYWNlRmxhZ3MgPSBnZXRUcmFjZUZsYWdzKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIHZhciBkZWJ1ZyA9IGdldERlYnVnKGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIGlmIChpc1ZhbGlkVHJhY2VJZCh0cmFjZUlkKSAmJlxuICAgICAgICAgICAgaXNWYWxpZFNwYW5JZChzcGFuSWQpICYmXG4gICAgICAgICAgICBpc1ZhbGlkU2FtcGxlZFZhbHVlKHRyYWNlRmxhZ3MpKSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5zZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSwgZGVidWcpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYWNlLnNldFNwYW5Db250ZXh0KGNvbnRleHQsIHtcbiAgICAgICAgICAgICAgICB0cmFjZUlkOiB0cmFjZUlkLFxuICAgICAgICAgICAgICAgIHNwYW5JZDogc3BhbklkLFxuICAgICAgICAgICAgICAgIGlzUmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHRyYWNlRmxhZ3M6IHRyYWNlRmxhZ3MsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9O1xuICAgIEIzTXVsdGlQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBYX0IzX1RSQUNFX0lELFxuICAgICAgICAgICAgWF9CM19TUEFOX0lELFxuICAgICAgICAgICAgWF9CM19GTEFHUyxcbiAgICAgICAgICAgIFhfQjNfU0FNUExFRCxcbiAgICAgICAgICAgIFhfQjNfUEFSRU5UX1NQQU5fSUQsXG4gICAgICAgIF07XG4gICAgfTtcbiAgICByZXR1cm4gQjNNdWx0aVByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fcmVhZCA9ICh1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBCM19DT05URVhUX1JFR0VYID0gLygoPzpbMC05YS1mXXsxNn0pezEsMn0pLShbMC05YS1mXXsxNn0pKD86LShbMDFkXSg/IVswLTlhLWZdKSkpPyg/Oi0oWzAtOWEtZl17MTZ9KSk/LztcbnZhciBQQURESU5HID0gJzAnLnJlcGVhdCgxNik7XG52YXIgU0FNUExFRF9WQUxVRVMgPSBuZXcgU2V0KFsnZCcsICcxJ10pO1xudmFyIERFQlVHX1NUQVRFID0gJ2QnO1xuZnVuY3Rpb24gY29udmVydFRvVHJhY2VJZDEyOCh0cmFjZUlkKSB7XG4gICAgcmV0dXJuIHRyYWNlSWQubGVuZ3RoID09PSAzMiA/IHRyYWNlSWQgOiBcIlwiICsgUEFERElORyArIHRyYWNlSWQ7XG59XG5mdW5jdGlvbiBjb252ZXJ0VG9UcmFjZUZsYWdzKHNhbXBsaW5nU3RhdGUpIHtcbiAgICBpZiAoc2FtcGxpbmdTdGF0ZSAmJiBTQU1QTEVEX1ZBTFVFUy5oYXMoc2FtcGxpbmdTdGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuU0FNUExFRDtcbiAgICB9XG4gICAgcmV0dXJuIFRyYWNlRmxhZ3MuTk9ORTtcbn1cbi8qKlxuICogUHJvcGFnYXRvciBmb3IgdGhlIEIzIHNpbmdsZS1oZWFkZXIgSFRUUCBmb3JtYXQuXG4gKiBCYXNlZCBvbjogaHR0cHM6Ly9naXRodWIuY29tL29wZW56aXBraW4vYjMtcHJvcGFnYXRpb25cbiAqL1xudmFyIEIzU2luZ2xlUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCM1NpbmdsZVByb3BhZ2F0b3IoKSB7XG4gICAgfVxuICAgIEIzU2luZ2xlUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIHNldHRlcikge1xuICAgICAgICB2YXIgc3BhbkNvbnRleHQgPSB0cmFjZS5nZXRTcGFuQ29udGV4dChjb250ZXh0KTtcbiAgICAgICAgaWYgKCFzcGFuQ29udGV4dCB8fFxuICAgICAgICAgICAgIWlzU3BhbkNvbnRleHRWYWxpZChzcGFuQ29udGV4dCkgfHxcbiAgICAgICAgICAgIGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBzYW1wbGluZ1N0YXRlID0gY29udGV4dC5nZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSkgfHwgc3BhbkNvbnRleHQudHJhY2VGbGFncyAmIDB4MTtcbiAgICAgICAgdmFyIHZhbHVlID0gc3BhbkNvbnRleHQudHJhY2VJZCArIFwiLVwiICsgc3BhbkNvbnRleHQuc3BhbklkICsgXCItXCIgKyBzYW1wbGluZ1N0YXRlO1xuICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIEIzX0NPTlRFWFRfSEVBREVSLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBCM1NpbmdsZVByb3BhZ2F0b3IucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKSB7XG4gICAgICAgIHZhciBoZWFkZXIgPSBnZXR0ZXIuZ2V0KGNhcnJpZXIsIEIzX0NPTlRFWFRfSEVBREVSKTtcbiAgICAgICAgdmFyIGIzQ29udGV4dCA9IEFycmF5LmlzQXJyYXkoaGVhZGVyKSA/IGhlYWRlclswXSA6IGhlYWRlcjtcbiAgICAgICAgaWYgKHR5cGVvZiBiM0NvbnRleHQgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciBtYXRjaCA9IGIzQ29udGV4dC5tYXRjaChCM19DT05URVhUX1JFR0VYKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB2YXIgX2EgPSBfX3JlYWQobWF0Y2gsIDQpLCBleHRyYWN0ZWRUcmFjZUlkID0gX2FbMV0sIHNwYW5JZCA9IF9hWzJdLCBzYW1wbGluZ1N0YXRlID0gX2FbM107XG4gICAgICAgIHZhciB0cmFjZUlkID0gY29udmVydFRvVHJhY2VJZDEyOChleHRyYWN0ZWRUcmFjZUlkKTtcbiAgICAgICAgaWYgKCFpc1ZhbGlkVHJhY2VJZCh0cmFjZUlkKSB8fCAhaXNWYWxpZFNwYW5JZChzcGFuSWQpKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciB0cmFjZUZsYWdzID0gY29udmVydFRvVHJhY2VGbGFncyhzYW1wbGluZ1N0YXRlKTtcbiAgICAgICAgaWYgKHNhbXBsaW5nU3RhdGUgPT09IERFQlVHX1NUQVRFKSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5zZXRWYWx1ZShCM19ERUJVR19GTEFHX0tFWSwgc2FtcGxpbmdTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyYWNlLnNldFNwYW5Db250ZXh0KGNvbnRleHQsIHtcbiAgICAgICAgICAgIHRyYWNlSWQ6IHRyYWNlSWQsXG4gICAgICAgICAgICBzcGFuSWQ6IHNwYW5JZCxcbiAgICAgICAgICAgIGlzUmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgdHJhY2VGbGFnczogdHJhY2VGbGFncyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBCM1NpbmdsZVByb3BhZ2F0b3IucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtCM19DT05URVhUX0hFQURFUl07XG4gICAgfTtcbiAgICByZXR1cm4gQjNTaW5nbGVQcm9wYWdhdG9yO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKiBFbnVtZXJhdGlvbiBvZiBCMyBpbmplY3QgZW5jb2RpbmdzICovXG52YXIgQjNJbmplY3RFbmNvZGluZztcbihmdW5jdGlvbiAoQjNJbmplY3RFbmNvZGluZykge1xuICAgIEIzSW5qZWN0RW5jb2RpbmdbQjNJbmplY3RFbmNvZGluZ1tcIlNJTkdMRV9IRUFERVJcIl0gPSAwXSA9IFwiU0lOR0xFX0hFQURFUlwiO1xuICAgIEIzSW5qZWN0RW5jb2RpbmdbQjNJbmplY3RFbmNvZGluZ1tcIk1VTFRJX0hFQURFUlwiXSA9IDFdID0gXCJNVUxUSV9IRUFERVJcIjtcbn0pKEIzSW5qZWN0RW5jb2RpbmcgfHwgKEIzSW5qZWN0RW5jb2RpbmcgPSB7fSkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBQcm9wYWdhdG9yIHRoYXQgZXh0cmFjdHMgQjMgY29udGV4dCBpbiBib3RoIHNpbmdsZSBhbmQgbXVsdGktaGVhZGVyIHZhcmlhbnRzLFxuICogd2l0aCBjb25maWd1cmFibGUgaW5qZWN0aW9uIGZvcm1hdCBkZWZhdWx0aW5nIHRvIEIzIHNpbmdsZS1oZWFkZXIuIER1ZSB0b1xuICogdGhlIGFzeW1tZXRyeSBpbiBpbmplY3Rpb24gYW5kIGV4dHJhY3Rpb24gZm9ybWF0cyB0aGlzIGlzIG5vdCBzdWl0YWJsZSB0b1xuICogYmUgaW1wbGVtZW50ZWQgYXMgYSBjb21wb3NpdGUgcHJvcGFnYXRvci5cbiAqIEJhc2VkIG9uOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnppcGtpbi9iMy1wcm9wYWdhdGlvblxuICovXG52YXIgQjNQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEIzUHJvcGFnYXRvcihjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yID0gbmV3IEIzTXVsdGlQcm9wYWdhdG9yKCk7XG4gICAgICAgIHRoaXMuX2IzU2luZ2xlUHJvcGFnYXRvciA9IG5ldyBCM1NpbmdsZVByb3BhZ2F0b3IoKTtcbiAgICAgICAgaWYgKGNvbmZpZy5pbmplY3RFbmNvZGluZyA9PT0gQjNJbmplY3RFbmNvZGluZy5NVUxUSV9IRUFERVIpIHtcbiAgICAgICAgICAgIHRoaXMuX2luamVjdCA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmluamVjdDtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5qZWN0ID0gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmluamVjdDtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzU2luZ2xlUHJvcGFnYXRvci5maWVsZHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBCM1Byb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgaWYgKGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbmplY3QoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKTtcbiAgICB9O1xuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIGhlYWRlciA9IGdldHRlci5nZXQoY2FycmllciwgQjNfQ09OVEVYVF9IRUFERVIpO1xuICAgICAgICB2YXIgYjNDb250ZXh0ID0gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xuICAgICAgICBpZiAoYjNDb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmV4dHJhY3QoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9iM011bHRpUHJvcGFnYXRvci5leHRyYWN0KGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH07XG4gICAgcmV0dXJuIEIzUHJvcGFnYXRvcjtcbn0oKSk7XG5cbmV4cG9ydCB7IEIzSW5qZWN0RW5jb2RpbmcsIEIzUHJvcGFnYXRvciwgQjNfQ09OVEVYVF9IRUFERVIsIFhfQjNfRkxBR1MsIFhfQjNfUEFSRU5UX1NQQU5fSUQsIFhfQjNfU0FNUExFRCwgWF9CM19TUEFOX0lELCBYX0IzX1RSQUNFX0lEIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxHQUFr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QUFVLFNBQVMsU0FBVTFCLEdBQVNaLEdBQVNhLEdBQVE7QUFDaEUsTUFBSTVCLEVBQW9CMkIsQ0FBTyxLQUcvQixLQUFLLFFBQVFBLEdBQVNaLEdBQVNhLENBQU07QUFBQSxJQUN6QyxHQUNBeUIsRUFBYSxVQUFVLFVBQVUsU0FBVTFCLEdBQVNaLEdBQVNDLEdBQVE7QUFDakUsVUFBSUgsSUFBU0csRUFBTyxJQUFJRCxHQUFTYixDQUFpQixHQUM5QzhDLElBQVksTUFBTSxRQUFRbkMsQ0FBTSxJQUFJQSxFQUFPLENBQUMsSUFBSUE7QUFDcEQsYUFBSW1DLElBQ08sS0FBSyxvQkFBb0IsUUFBUXJCLEdBQVNaLEdBQVNDLENBQU0sSUFHekQsS0FBSyxtQkFBbUIsUUFBUVcsR0FBU1osR0FBU0MsQ0FBTTtBQUFBLElBRXZFLEdBQ0FxQyxFQUFhLFVBQVUsU0FBUyxXQUFZO0FBQ3hDLGFBQU8sS0FBSztBQUFBLElBQ2hCLEdBQ09BO0FBQUEsRUFDWCxHQUFFO0FBQUE7IiwKICAibmFtZXMiOiBbImNyZWF0ZUNvbnRleHRLZXkiLCAidHJhY2UiLCAiaXNTcGFuQ29udGV4dFZhbGlkIiwgIlRyYWNlRmxhZ3MiLCAiaXNWYWxpZFRyYWNlSWQiLCAiaXNWYWxpZFNwYW5JZCIsICJpc1RyYWNpbmdTdXBwcmVzc2VkIiwgIkIzX0RFQlVHX0ZMQUdfS0VZIiwgIkIzX0NPTlRFWFRfSEVBREVSIiwgIlhfQjNfVFJBQ0VfSUQiLCAiWF9CM19TUEFOX0lEIiwgIlhfQjNfU0FNUExFRCIsICJYX0IzX1BBUkVOVF9TUEFOX0lEIiwgIlhfQjNfRkxBR1MiLCAiVkFMSURfU0FNUExFRF9WQUxVRVMiLCAiVkFMSURfVU5TQU1QTEVEX1ZBTFVFUyIsICJpc1ZhbGlkU2FtcGxlZFZhbHVlIiwgInNhbXBsZWQiLCAicGFyc2VIZWFkZXIiLCAiaGVhZGVyIiwgImdldEhlYWRlclZhbHVlIiwgImNhcnJpZXIiLCAiZ2V0dGVyIiwgImtleSIsICJnZXRUcmFjZUlkIiwgInRyYWNlSWQiLCAiZ2V0U3BhbklkIiwgInNwYW5JZCIsICJnZXREZWJ1ZyIsICJkZWJ1ZyIsICJnZXRUcmFjZUZsYWdzIiwgInRyYWNlRmxhZ3MiLCAiQjNNdWx0aVByb3BhZ2F0b3IiLCAiY29udGV4dCIsICJzZXR0ZXIiLCAic3BhbkNvbnRleHQiLCAiX19yZWFkIiwgIm8iLCAibiIsICJtIiwgImkiLCAiciIsICJhciIsICJlIiwgImVycm9yIiwgIkIzX0NPTlRFWFRfUkVHRVgiLCAiUEFERElORyIsICJTQU1QTEVEX1ZBTFVFUyIsICJERUJVR19TVEFURSIsICJjb252ZXJ0VG9UcmFjZUlkMTI4IiwgImNvbnZlcnRUb1RyYWNlRmxhZ3MiLCAic2FtcGxpbmdTdGF0ZSIsICJCM1NpbmdsZVByb3BhZ2F0b3IiLCAidmFsdWUiLCAiYjNDb250ZXh0IiwgIm1hdGNoIiwgIl9hIiwgImV4dHJhY3RlZFRyYWNlSWQiLCAiQjNJbmplY3RFbmNvZGluZyIsICJCM1Byb3BhZ2F0b3IiLCAiY29uZmlnIl0KfQo=
|