UNPKG

@getopenpay/openpay-js

Version:

Accept payments through OpenPay, right on your site

1,012 lines 182 kB
import { z as Ar, p as g, _ as X, s as Pr, l as Sr, j as Ir, q as vr, y as yr, dK as hr, h as gr, dL as mr, n as Cr, r as Nr, i as Mr, m as Ur, o as Br, t as br, u as Dr } from "./url-c5k5Yl5P.js"; import { i as G, s as Q, u as Xr } from "./suppress-tracing-QycbVyJL.js"; import { d as c } from "./diag-api-iTj0t8NN.js"; import { h as q, E as Gr } from "./ExportResult-BacsqwKA.js"; import { f as u, t as N, i as k, T as M, c as wr, b as Vr, a as K } from "./index-BmfwKlzi.js"; import { a as jr, bm as Hr } from "./sdk-info-ChuKu8zW.js"; var l; (function(r) { r[r.NOT_RECORD = 0] = "NOT_RECORD", r[r.RECORD = 1] = "RECORD", r[r.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED"; })(l || (l = {})); var xr = "=", U = ";", I = ",", m = "baggage", Fr = 180, Kr = 4096, Yr = 8192, zr = function(r, e) { var t = typeof Symbol == "function" && r[Symbol.iterator]; if (!t) return r; var n = t.call(r), a, i = [], o; try { for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value); } catch (_) { o = { error: _ }; } finally { try { a && !a.done && (t = n.return) && t.call(n); } finally { if (o) throw o.error; } } return i; }; function rr(r) { return r.reduce(function(e, t) { var n = "" + e + (e !== "" ? I : "") + t; return n.length > Yr ? e : n; }, ""); } function er(r) { return r.getAllEntries().map(function(e) { var t = zr(e, 2), n = t[0], a = t[1], i = encodeURIComponent(n) + "=" + encodeURIComponent(a.value); return a.metadata !== void 0 && (i += U + a.metadata.toString()), i; }); } function w(r) { var e = r.split(U); if (!(e.length <= 0)) { var t = e.shift(); if (t) { var n = t.indexOf(xr); if (!(n <= 0)) { var a = decodeURIComponent(t.substring(0, n).trim()), i = decodeURIComponent(t.substring(n + 1).trim()), o; return e.length > 0 && (o = Ar(e.join(U))), { key: a, value: i, metadata: o }; } } } } function Wr(r) { return typeof r != "string" || r.length === 0 ? {} : r.split(I).map(function(e) { return w(e); }).filter(function(e) { return e !== void 0 && e.value.length > 0; }).reduce(function(e, t) { return e[t.key] = t.value, e; }, {}); } var Zr = ( /** @class */ (function() { function r() { } return r.prototype.inject = function(e, t, n) { var a = g.getBaggage(e); if (!(!a || G(e))) { var i = er(a).filter(function(_) { return _.length <= Kr; }).slice(0, Fr), o = rr(i); o.length > 0 && n.set(t, m, o); } }, r.prototype.extract = function(e, t, n) { var a = n.get(t, m), i = Array.isArray(a) ? a.join(I) : a; if (!i) return e; var o = {}; if (i.length === 0) return e; var _ = i.split(I); return _.forEach(function(E) { var T = w(E); if (T) { var s = { value: T.value }; T.metadata && (s.metadata = T.metadata), o[T.key] = s; } }), Object.entries(o).length === 0 ? e : g.setBaggage(e, g.createBaggage(o)); }, r.prototype.fields = function() { return [m]; }, r; })() ), $r = ( /** @class */ (function() { function r(e, t) { this._monotonicClock = t, this._epochMillis = e.now(), this._performanceMillis = t.now(); } return r.prototype.now = function() { var e = this._monotonicClock.now() - this._performanceMillis; return this._epochMillis + e; }, r; })() ), tr = function(r) { var e = typeof Symbol == "function" && Symbol.iterator, t = e && r[e], n = 0; if (t) return t.call(r); if (r && typeof r.length == "number") return { next: function() { return r && n >= r.length && (r = void 0), { value: r && r[n++], done: !r }; } }; throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined."); }, Jr = function(r, e) { var t = typeof Symbol == "function" && r[Symbol.iterator]; if (!t) return r; var n = t.call(r), a, i = [], o; try { for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value); } catch (_) { o = { error: _ }; } finally { try { a && !a.done && (t = n.return) && t.call(n); } finally { if (o) throw o.error; } } return i; }; function Qr(r) { var e, t, n = {}; if (typeof r != "object" || r == null) return n; try { for (var a = tr(Object.entries(r)), i = a.next(); !i.done; i = a.next()) { var o = Jr(i.value, 2), _ = o[0], E = o[1]; if (!nr(_)) { c.warn("Invalid attribute key: " + _); continue; } if (!ar(E)) { c.warn("Invalid attribute value set for key: " + _); continue; } Array.isArray(E) ? n[_] = E.slice() : n[_] = E; } } catch (T) { e = { error: T }; } finally { try { i && !i.done && (t = a.return) && t.call(a); } finally { if (e) throw e.error; } } return n; } function nr(r) { return typeof r == "string" && r.length > 0; } function ar(r) { return r == null ? !0 : Array.isArray(r) ? qr(r) : ir(r); } function qr(r) { var e, t, n; try { for (var a = tr(r), i = a.next(); !i.done; i = a.next()) { var o = i.value; if (o != null) { if (!n) { if (ir(o)) { n = typeof o; continue; } return !1; } if (typeof o !== n) return !1; } } } catch (_) { e = { error: _ }; } finally { try { i && !i.done && (t = a.return) && t.call(a); } finally { if (e) throw e.error; } } return !0; } function ir(r) { switch (typeof r) { case "number": case "boolean": case "string": return !0; } return !1; } function or() { return function(r) { c.error(kr(r)); }; } function kr(r) { return typeof r == "string" ? r : JSON.stringify(re(r)); } function re(r) { for (var e = {}, t = r; t !== null; ) Object.getOwnPropertyNames(t).forEach(function(n) { if (!e[n]) { var a = t[n]; a && (e[n] = String(a)); } }), t = Object.getPrototypeOf(t); return e; } var _r = or(); function ee(r) { _r = r; } function Er(r) { try { _r(r); } catch { } } var v; (function(r) { r.AlwaysOff = "always_off", r.AlwaysOn = "always_on", r.ParentBasedAlwaysOff = "parentbased_always_off", r.ParentBasedAlwaysOn = "parentbased_always_on", r.ParentBasedTraceIdRatio = "parentbased_traceidratio", r.TraceIdRatio = "traceidratio"; })(v || (v = {})); var te = ",", ne = ["OTEL_SDK_DISABLED"]; function ae(r) { return ne.indexOf(r) > -1; } var ie = [ "OTEL_BSP_EXPORT_TIMEOUT", "OTEL_BSP_MAX_EXPORT_BATCH_SIZE", "OTEL_BSP_MAX_QUEUE_SIZE", "OTEL_BSP_SCHEDULE_DELAY", "OTEL_BLRP_EXPORT_TIMEOUT", "OTEL_BLRP_MAX_EXPORT_BATCH_SIZE", "OTEL_BLRP_MAX_QUEUE_SIZE", "OTEL_BLRP_SCHEDULE_DELAY", "OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT", "OTEL_ATTRIBUTE_COUNT_LIMIT", "OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT", "OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT", "OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT", "OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT", "OTEL_SPAN_EVENT_COUNT_LIMIT", "OTEL_SPAN_LINK_COUNT_LIMIT", "OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT", "OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT", "OTEL_EXPORTER_OTLP_TIMEOUT", "OTEL_EXPORTER_OTLP_TRACES_TIMEOUT", "OTEL_EXPORTER_OTLP_METRICS_TIMEOUT", "OTEL_EXPORTER_OTLP_LOGS_TIMEOUT", "OTEL_EXPORTER_JAEGER_AGENT_PORT" ]; function oe(r) { return ie.indexOf(r) > -1; } var _e = [ "OTEL_NO_PATCH_MODULES", "OTEL_PROPAGATORS", "OTEL_SEMCONV_STABILITY_OPT_IN" ]; function Ee(r) { return _e.indexOf(r) > -1; } var p = 1 / 0, d = 128, Tr = 128, ur = 128, V = { OTEL_SDK_DISABLED: !1, CONTAINER_NAME: "", ECS_CONTAINER_METADATA_URI_V4: "", ECS_CONTAINER_METADATA_URI: "", HOSTNAME: "", KUBERNETES_SERVICE_HOST: "", NAMESPACE: "", OTEL_BSP_EXPORT_TIMEOUT: 3e4, OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512, OTEL_BSP_MAX_QUEUE_SIZE: 2048, OTEL_BSP_SCHEDULE_DELAY: 5e3, OTEL_BLRP_EXPORT_TIMEOUT: 3e4, OTEL_BLRP_MAX_EXPORT_BATCH_SIZE: 512, OTEL_BLRP_MAX_QUEUE_SIZE: 2048, OTEL_BLRP_SCHEDULE_DELAY: 5e3, OTEL_EXPORTER_JAEGER_AGENT_HOST: "", OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832, OTEL_EXPORTER_JAEGER_ENDPOINT: "", OTEL_EXPORTER_JAEGER_PASSWORD: "", OTEL_EXPORTER_JAEGER_USER: "", OTEL_EXPORTER_OTLP_ENDPOINT: "", OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "", OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "", OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: "", OTEL_EXPORTER_OTLP_HEADERS: "", OTEL_EXPORTER_OTLP_TRACES_HEADERS: "", OTEL_EXPORTER_OTLP_METRICS_HEADERS: "", OTEL_EXPORTER_OTLP_LOGS_HEADERS: "", OTEL_EXPORTER_OTLP_TIMEOUT: 1e4, OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 1e4, OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 1e4, OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: 1e4, OTEL_EXPORTER_ZIPKIN_ENDPOINT: "http://localhost:9411/api/v2/spans", OTEL_LOG_LEVEL: u.INFO, OTEL_NO_PATCH_MODULES: [], OTEL_PROPAGATORS: ["tracecontext", "baggage"], OTEL_RESOURCE_ATTRIBUTES: "", OTEL_SERVICE_NAME: "", OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: p, OTEL_ATTRIBUTE_COUNT_LIMIT: d, OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: p, OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: d, OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT: p, OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: d, OTEL_SPAN_EVENT_COUNT_LIMIT: 128, OTEL_SPAN_LINK_COUNT_LIMIT: 128, OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Tr, OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ur, OTEL_TRACES_EXPORTER: "", OTEL_TRACES_SAMPLER: v.ParentBasedAlwaysOn, OTEL_TRACES_SAMPLER_ARG: "", OTEL_LOGS_EXPORTER: "", OTEL_EXPORTER_OTLP_INSECURE: "", OTEL_EXPORTER_OTLP_TRACES_INSECURE: "", OTEL_EXPORTER_OTLP_METRICS_INSECURE: "", OTEL_EXPORTER_OTLP_LOGS_INSECURE: "", OTEL_EXPORTER_OTLP_CERTIFICATE: "", OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: "", OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: "", OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE: "", OTEL_EXPORTER_OTLP_COMPRESSION: "", OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: "", OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: "", OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: "", OTEL_EXPORTER_OTLP_CLIENT_KEY: "", OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: "", OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: "", OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY: "", OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: "", OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: "", OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: "", OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE: "", OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf", OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "http/protobuf", OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "http/protobuf", OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: "http/protobuf", OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "cumulative", OTEL_SEMCONV_STABILITY_OPT_IN: [] }; function Te(r, e, t) { if (!(typeof t[r] > "u")) { var n = String(t[r]); e[r] = n.toLowerCase() === "true"; } } function ue(r, e, t, n, a) { if (n === void 0 && (n = -1 / 0), a === void 0 && (a = 1 / 0), typeof t[r] < "u") { var i = Number(t[r]); isNaN(i) || (i < n ? e[r] = n : i > a ? e[r] = a : e[r] = i); } } function fe(r, e, t, n) { n === void 0 && (n = te); var a = t[r]; typeof a == "string" && (e[r] = a.split(n).map(function(i) { return i.trim(); })); } var se = { ALL: u.ALL, VERBOSE: u.VERBOSE, DEBUG: u.DEBUG, INFO: u.INFO, WARN: u.WARN, ERROR: u.ERROR, NONE: u.NONE }; function le(r, e, t) { var n = t[r]; if (typeof n == "string") { var a = se[n.toUpperCase()]; a != null && (e[r] = a); } } function j(r) { var e = {}; for (var t in V) { var n = t; switch (n) { case "OTEL_LOG_LEVEL": le(n, e, r); break; default: if (ae(n)) Te(n, e, r); else if (oe(n)) ue(n, e, r); else if (Ee(n)) fe(n, e, r); else { var a = r[n]; typeof a < "u" && a !== null && (e[n] = String(a)); } } } return e; } function Oe() { var r = j(X); return Object.assign({}, V, r); } function ce() { return j(X); } var Re = function(r, e) { var t = typeof Symbol == "function" && r[Symbol.iterator]; if (!t) return r; var n = t.call(r), a, i = [], o; try { for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value); } catch (_) { o = { error: _ }; } finally { try { a && !a.done && (t = n.return) && t.call(n); } finally { if (o) throw o.error; } } return i; }, pe = function(r, e, t) { if (t || arguments.length === 2) for (var n = 0, a = e.length, i; n < a; n++) (i || !(n in e)) && (i || (i = Array.prototype.slice.call(e, 0, n)), i[n] = e[n]); return r.concat(i || Array.prototype.slice.call(e)); }; function de(r) { return btoa(String.fromCharCode.apply(String, pe([], Re(q(r)), !1))); } var Le = 8, Ae = 16, Pe = ( /** @class */ /* @__PURE__ */ (function() { function r() { this.generateTraceId = Y(Ae), this.generateSpanId = Y(Le); } return r; })() ), R = Array(32); function Y(r) { return function() { for (var t = 0; t < r * 2; t++) R[t] = Math.floor(Math.random() * 16) + 48, R[t] >= 58 && (R[t] += 39); return String.fromCharCode.apply(null, R.slice(0, r * 2)); }; } function Se(r) { } var Ie = function(r) { var e = typeof Symbol == "function" && Symbol.iterator, t = e && r[e], n = 0; if (t) return t.call(r); if (r && typeof r.length == "number") return { next: function() { return r && n >= r.length && (r = void 0), { value: r && r[n++], done: !r }; } }; throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined."); }, ve = ( /** @class */ (function() { function r(e) { e === void 0 && (e = {}); var t; this._propagators = (t = e.propagators) !== null && t !== void 0 ? t : [], this._fields = Array.from(new Set(this._propagators.map(function(n) { return typeof n.fields == "function" ? n.fields() : []; }).reduce(function(n, a) { return n.concat(a); }, []))); } return r.prototype.inject = function(e, t, n) { var a, i; try { for (var o = Ie(this._propagators), _ = o.next(); !_.done; _ = o.next()) { var E = _.value; try { E.inject(e, t, n); } catch (T) { c.warn("Failed to inject with " + E.constructor.name + ". Err: " + T.message); } } } catch (T) { a = { error: T }; } finally { try { _ && !_.done && (i = o.return) && i.call(o); } finally { if (a) throw a.error; } } }, r.prototype.extract = function(e, t, n) { return this._propagators.reduce(function(a, i) { try { return i.extract(a, t, n); } catch (o) { c.warn("Failed to extract with " + i.constructor.name + ". Err: " + o.message); } return a; }, e); }, r.prototype.fields = function() { return this._fields.slice(); }, r; })() ), B = "[_0-9a-z-*/]", ye = "[a-z]" + B + "{0,255}", he = "[a-z0-9]" + B + "{0,240}@[a-z]" + B + "{0,13}", ge = new RegExp("^(?:" + ye + "|" + he + ")$"), me = /^[ -~]{0,255}[!-~]$/, Ce = /,|=/; function Ne(r) { return ge.test(r); } function Me(r) { return me.test(r) && !Ce.test(r); } var z = 32, Ue = 512, W = ",", Z = "=", fr = ( /** @class */ (function() { function r(e) { this._internalState = /* @__PURE__ */ new Map(), e && this._parse(e); } return r.prototype.set = function(e, t) { var n = this._clone(); return n._internalState.has(e) && n._internalState.delete(e), n._internalState.set(e, t), n; }, r.prototype.unset = function(e) { var t = this._clone(); return t._internalState.delete(e), t; }, r.prototype.get = function(e) { return this._internalState.get(e); }, r.prototype.serialize = function() { var e = this; return this._keys().reduce(function(t, n) { return t.push(n + Z + e.get(n)), t; }, []).join(W); }, r.prototype._parse = function(e) { e.length > Ue || (this._internalState = e.split(W).reverse().reduce(function(t, n) { var a = n.trim(), i = a.indexOf(Z); if (i !== -1) { var o = a.slice(0, i), _ = a.slice(i + 1, n.length); Ne(o) && Me(_) && t.set(o, _); } return t; }, /* @__PURE__ */ new Map()), this._internalState.size > z && (this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, z)))); }, r.prototype._keys = function() { return Array.from(this._internalState.keys()).reverse(); }, r.prototype._clone = function() { var e = new r(); return e._internalState = new Map(this._internalState), e; }, r; })() ), L = "traceparent", A = "tracestate", Be = "00", be = "(?!ff)[\\da-f]{2}", De = "(?![0]{32})[\\da-f]{32}", Xe = "(?![0]{16})[\\da-f]{16}", Ge = "[\\da-f]{2}", we = new RegExp("^\\s?(" + be + ")-(" + De + ")-(" + Xe + ")-(" + Ge + ")(-.*)?\\s?$"); function sr(r) { var e = we.exec(r); return !e || e[1] === "00" && e[5] ? null : { traceId: e[2], spanId: e[3], traceFlags: parseInt(e[4], 16) }; } var Ve = ( /** @class */ (function() { function r() { } return r.prototype.inject = function(e, t, n) { var a = N.getSpanContext(e); if (!(!a || G(e) || !k(a))) { var i = Be + "-" + a.traceId + "-" + a.spanId + "-0" + Number(a.traceFlags || M.NONE).toString(16); n.set(t, L, i), a.traceState && n.set(t, A, a.traceState.serialize()); } }, r.prototype.extract = function(e, t, n) { var a = n.get(t, L); if (!a) return e; var i = Array.isArray(a) ? a[0] : a; if (typeof i != "string") return e; var o = sr(i); if (!o) return e; o.isRemote = !0; var _ = n.get(t, A); if (_) { var E = Array.isArray(_) ? _.join(",") : _; o.traceState = new fr(typeof E == "string" ? E : void 0); } return N.setSpanContext(e, o); }, r.prototype.fields = function() { return [L, A]; }, r; })() ), H = wr("OpenTelemetry SDK Context Key RPC_METADATA"), b; (function(r) { r.HTTP = "http"; })(b || (b = {})); function je(r, e) { return r.setValue(H, e); } function He(r) { return r.deleteValue(H); } function xe(r) { return r.getValue(H); } var D = ( /** @class */ (function() { function r() { } return r.prototype.shouldSample = function() { return { decision: l.NOT_RECORD }; }, r.prototype.toString = function() { return "AlwaysOffSampler"; }, r; })() ), P = ( /** @class */ (function() { function r() { } return r.prototype.shouldSample = function() { return { decision: l.RECORD_AND_SAMPLED }; }, r.prototype.toString = function() { return "AlwaysOnSampler"; }, r; })() ), Fe = ( /** @class */ (function() { function r(e) { var t, n, a, i; this._root = e.root, this._root || (Er(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new P()), this._remoteParentSampled = (t = e.remoteParentSampled) !== null && t !== void 0 ? t : new P(), this._remoteParentNotSampled = (n = e.remoteParentNotSampled) !== null && n !== void 0 ? n : new D(), this._localParentSampled = (a = e.localParentSampled) !== null && a !== void 0 ? a : new P(), this._localParentNotSampled = (i = e.localParentNotSampled) !== null && i !== void 0 ? i : new D(); } return r.prototype.shouldSample = function(e, t, n, a, i, o) { var _ = N.getSpanContext(e); return !_ || !k(_) ? this._root.shouldSample(e, t, n, a, i, o) : _.isRemote ? _.traceFlags & M.SAMPLED ? this._remoteParentSampled.shouldSample(e, t, n, a, i, o) : this._remoteParentNotSampled.shouldSample(e, t, n, a, i, o) : _.traceFlags & M.SAMPLED ? this._localParentSampled.shouldSample(e, t, n, a, i, o) : this._localParentNotSampled.shouldSample(e, t, n, a, i, o); }, r.prototype.toString = function() { return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}"; }, r; })() ), Ke = ( /** @class */ (function() { function r(e) { e === void 0 && (e = 0), this._ratio = e, this._ratio = this._normalize(e), this._upperBound = Math.floor(this._ratio * 4294967295); } return r.prototype.shouldSample = function(e, t) { return { decision: Vr(t) && this._accumulate(t) < this._upperBound ? l.RECORD_AND_SAMPLED : l.NOT_RECORD }; }, r.prototype.toString = function() { return "TraceIdRatioBased{" + this._ratio + "}"; }, r.prototype._normalize = function(e) { return typeof e != "number" || isNaN(e) ? 0 : e >= 1 ? 1 : e <= 0 ? 0 : e; }, r.prototype._accumulate = function(e) { for (var t = 0, n = 0; n < e.length / 8; n++) { var a = n * 8, i = parseInt(e.slice(a, a + 8), 16); t = (t ^ i) >>> 0; } return t; }, r; })() ), Ye = "[object Object]", ze = "[object Null]", We = "[object Undefined]", Ze = Function.prototype, lr = Ze.toString, $e = lr.call(Object), Je = Qe(Object.getPrototypeOf, Object), Or = Object.prototype, cr = Or.hasOwnProperty, f = Symbol ? Symbol.toStringTag : void 0, Rr = Or.toString; function Qe(r, e) { return function(t) { return r(e(t)); }; } function $(r) { if (!qe(r) || ke(r) !== Ye) return !1; var e = Je(r); if (e === null) return !0; var t = cr.call(e, "constructor") && e.constructor; return typeof t == "function" && t instanceof t && lr.call(t) === $e; } function qe(r) { return r != null && typeof r == "object"; } function ke(r) { return r == null ? r === void 0 ? We : ze : f && f in Object(r) ? rt(r) : et(r); } function rt(r) { var e = cr.call(r, f), t = r[f], n = !1; try { r[f] = void 0, n = !0; } catch { } var a = Rr.call(r); return n && (e ? r[f] = t : delete r[f]), a; } function et(r) { return Rr.call(r); } var tt = 20; function nt() { for (var r = [], e = 0; e < arguments.length; e++) r[e] = arguments[e]; for (var t = r.shift(), n = /* @__PURE__ */ new WeakMap(); r.length > 0; ) t = pr(t, r.shift(), 0, n); return t; } function C(r) { return y(r) ? r.slice() : r; } function pr(r, e, t, n) { t === void 0 && (t = 0); var a; if (!(t > tt)) { if (t++, S(r) || S(e) || dr(e)) a = C(e); else if (y(r)) { if (a = r.slice(), y(e)) for (var i = 0, o = e.length; i < o; i++) a.push(C(e[i])); else if (O(e)) for (var _ = Object.keys(e), i = 0, o = _.length; i < o; i++) { var E = _[i]; a[E] = C(e[E]); } } else if (O(r)) if (O(e)) { if (!at(r, e)) return e; a = Object.assign({}, r); for (var _ = Object.keys(e), i = 0, o = _.length; i < o; i++) { var E = _[i], T = e[E]; if (S(T)) typeof T > "u" ? delete a[E] : a[E] = T; else { var s = a[E], h = T; if (J(r, E, n) || J(e, E, n)) delete a[E]; else { if (O(s) && O(h)) { var x = n.get(s) || [], F = n.get(h) || []; x.push({ obj: r, key: E }), F.push({ obj: e, key: E }), n.set(s, x), n.set(h, F); } a[E] = pr(a[E], T, t, n); } } } } else a = e; return a; } } function J(r, e, t) { for (var n = t.get(r[e]) || [], a = 0, i = n.length; a < i; a++) { var o = n[a]; if (o.key === e && o.obj === r) return !0; } return !1; } function y(r) { return Array.isArray(r); } function dr(r) { return typeof r == "function"; } function O(r) { return !S(r) && !y(r) && !dr(r) && typeof r == "object"; } function S(r) { return typeof r == "string" || typeof r == "number" || typeof r == "boolean" || typeof r > "u" || r instanceof Date || r instanceof RegExp || r === null; } function at(r, e) { return !(!$(r) || !$(e)); } var it = /* @__PURE__ */ (function() { var r = function(e, t) { return r = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, a) { n.__proto__ = a; } || function(n, a) { for (var i in a) Object.prototype.hasOwnProperty.call(a, i) && (n[i] = a[i]); }, r(e, t); }; return function(e, t) { if (typeof t != "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); r(e, t); function n() { this.constructor = e; } e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n()); }; })(), Lr = ( /** @class */ (function(r) { it(e, r); function e(t) { var n = r.call(this, t) || this; return Object.setPrototypeOf(n, e.prototype), n; } return e; })(Error) ); function ot(r, e) { var t, n = new Promise(function(i, o) { t = setTimeout(function() { o(new Lr("Operation timed out.")); }, e); }); return Promise.race([r, n]).then(function(a) { return clearTimeout(t), a; }, function(a) { throw clearTimeout(t), a; }); } function _t(r) { return typeof r == "function" && typeof r.__original == "function" && typeof r.__unwrap == "function" && r.__wrapped === !0; } var Et = ( /** @class */ (function() { function r() { var e = this; this._promise = new Promise(function(t, n) { e._resolve = t, e._reject = n; }); } return Object.defineProperty(r.prototype, "promise", { get: function() { return this._promise; }, enumerable: !1, configurable: !0 }), r.prototype.resolve = function(e) { this._resolve(e); }, r.prototype.reject = function(e) { this._reject(e); }, r; })() ), Tt = function(r, e) { var t = typeof Symbol == "function" && r[Symbol.iterator]; if (!t) return r; var n = t.call(r), a, i = [], o; try { for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value); } catch (_) { o = { error: _ }; } finally { try { a && !a.done && (t = n.return) && t.call(n); } finally { if (o) throw o.error; } } return i; }, ut = function(r, e, t) { if (t || arguments.length === 2) for (var n = 0, a = e.length, i; n < a; n++) (i || !(n in e)) && (i || (i = Array.prototype.slice.call(e, 0, n)), i[n] = e[n]); return r.concat(i || Array.prototype.slice.call(e)); }, ft = ( /** @class */ (function() { function r(e, t) { this._callback = e, this._that = t, this._isCalled = !1, this._deferred = new Et(); } return Object.defineProperty(r.prototype, "isCalled", { get: function() { return this._isCalled; }, enumerable: !1, configurable: !0 }), Object.defineProperty(r.prototype, "promise", { get: function() { return this._deferred.promise; }, enumerable: !1, configurable: !0 }), r.prototype.call = function() { for (var e, t = this, n = [], a = 0; a < arguments.length; a++) n[a] = arguments[a]; if (!this._isCalled) { this._isCalled = !0; try { Promise.resolve((e = this._callback).call.apply(e, ut([this._that], Tt(n), !1))).then(function(i) { return t._deferred.resolve(i); }, function(i) { return t._deferred.reject(i); }); } catch (i) { this._deferred.reject(i); } } return this._deferred.promise; }, r; })() ); function st(r, e) { return new Promise(function(t) { K.with(Q(K.active()), function() { r.export(e, function(n) { t(n); }); }); }); } var lt = { getKeyPairs: er, serializeKeyPairs: rr, parseKeyPairsIntoRecord: Wr, parsePairKeyValue: w }, Ot = { _export: st }; const Pt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, AlwaysOffSampler: D, AlwaysOnSampler: P, AnchoredClock: $r, BindOnceFuture: ft, CompositePropagator: ve, DEFAULT_ATTRIBUTE_COUNT_LIMIT: d, DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: p, DEFAULT_ENVIRONMENT: V, DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Tr, DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ur, get ExportResultCode() { return Gr; }, ParentBasedSampler: Fe, get RPCType() { return b; }, RandomIdGenerator: Pe, SDK_INFO: jr, TRACE_PARENT_HEADER: L, TRACE_STATE_HEADER: A, TimeoutError: Lr, TraceIdRatioBasedSampler: Ke, TraceState: fr, get TracesSamplerValues() { return v; }, VERSION: Hr, W3CBaggagePropagator: Zr, W3CTraceContextPropagator: Ve, _globalThis: X, addHrTimes: Pr, baggageUtils: lt, callWithTimeout: ot, deleteRPCMetadata: He, getEnv: Oe, getEnvWithoutDefaults: ce, getRPCMetadata: xe, getTimeOrigin: Sr, globalErrorHandler: Er, hexToBase64: de, hexToBinary: q, hrTime: Ir, hrTimeDuration: vr, hrTimeToMicroseconds: yr, hrTimeToMilliseconds: hr, hrTimeToNanoseconds: gr, hrTimeToTimeStamp: mr, internal: Ot, isAttributeKey: nr, isAttributeValue: ar, isTimeInput: Cr, isTimeInputHrTime: Nr, isTracingSuppressed: G, isUrlIgnored: Mr, isWrapped: _t, loggingErrorHandler: or, merge: nt, millisToHrTime: Ur, otperformance: Br, parseEnvironment: j, parseTraceParent: sr, sanitizeAttributes: Qr, setGlobalErrorHandler: ee, setRPCMetadata: je, suppressTracing: Q, timeInputToHrTime: br, unrefTimer: Se, unsuppressTracing: Xr, urlMatches: Dr }, Symbol.toStringTag, { value: "Module" })); export { ft as B, ve as C, d as D, l as S, v as T, Ve as W, Oe as a, ce as b, p as c, Zr as d, Ot as e, Pt as f, Er as g, ar as i, nt as m, Qr as s, Se as u }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBtfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHogYXMgYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nLCBwIGFzIHByb3BhZ2F0aW9uLCBfIGFzIF9nbG9iYWxUaGlzLCBzIGFzIGFkZEhyVGltZXMsIGwgYXMgZ2V0VGltZU9yaWdpbiwgaiBhcyBoclRpbWUsIHEgYXMgaHJUaW1lRHVyYXRpb24sIHkgYXMgaHJUaW1lVG9NaWNyb3NlY29uZHMsIGRLIGFzIGhyVGltZVRvTWlsbGlzZWNvbmRzLCBoIGFzIGhyVGltZVRvTmFub3NlY29uZHMsIGRMIGFzIGhyVGltZVRvVGltZVN0YW1wLCBuIGFzIGlzVGltZUlucHV0LCByIGFzIGlzVGltZUlucHV0SHJUaW1lLCBpIGFzIGlzVXJsSWdub3JlZCwgbSBhcyBtaWxsaXNUb0hyVGltZSwgbyBhcyBvdHBlcmZvcm1hbmNlLCB0IGFzIHRpbWVJbnB1dFRvSHJUaW1lLCB1IGFzIHVybE1hdGNoZXMgfSBmcm9tICcuL3VybC0hfnswMGR9fi5qcyc7XG5pbXBvcnQgeyBpIGFzIGlzVHJhY2luZ1N1cHByZXNzZWQsIHMgYXMgc3VwcHJlc3NUcmFjaW5nLCB1IGFzIHVuc3VwcHJlc3NUcmFjaW5nIH0gZnJvbSAnLi9zdXBwcmVzcy10cmFjaW5nLSF+ezAwYX1+LmpzJztcbmltcG9ydCB7IGQgYXMgZGlhZyB9IGZyb20gJy4vZGlhZy1hcGktIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgaCBhcyBoZXhUb0JpbmFyeSwgRSBhcyBFeHBvcnRSZXN1bHRDb2RlIH0gZnJvbSAnLi9FeHBvcnRSZXN1bHQtIX57MDBpfX4uanMnO1xuaW1wb3J0IHsgZiBhcyBEaWFnTG9nTGV2ZWwsIHQgYXMgdHJhY2UsIGkgYXMgaXNTcGFuQ29udGV4dFZhbGlkLCBUIGFzIFRyYWNlRmxhZ3MsIGMgYXMgY3JlYXRlQ29udGV4dEtleSwgYiBhcyBpc1ZhbGlkVHJhY2VJZCwgYSBhcyBjb250ZXh0IH0gZnJvbSAnLi9pbmRleC0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBhIGFzIFNES19JTkZPLCBibSBhcyBWRVJTSU9OJDEgfSBmcm9tICcuL3Nkay1pbmZvLSF+ezAwaH1+LmpzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHRoZSBvbmUgZGVjbGFyZWQgaW4gQG9wZW50ZWxlbWV0cnkvc2RrLXRyYWNlLWJhc2UgaW5zdGVhZC5cbiAqIEEgc2FtcGxpbmcgZGVjaXNpb24gdGhhdCBkZXRlcm1pbmVzIGhvdyBhIHtAbGluayBTcGFufSB3aWxsIGJlIHJlY29yZGVkXG4gKiBhbmQgY29sbGVjdGVkLlxuICovXG52YXIgU2FtcGxpbmdEZWNpc2lvbjtcbihmdW5jdGlvbiAoU2FtcGxpbmdEZWNpc2lvbikge1xuICAgIC8qKlxuICAgICAqIGBTcGFuLmlzUmVjb3JkaW5nKCkgPT09IGZhbHNlYCwgc3BhbiB3aWxsIG5vdCBiZSByZWNvcmRlZCBhbmQgYWxsIGV2ZW50c1xuICAgICAqIGFuZCBhdHRyaWJ1dGVzIHdpbGwgYmUgZHJvcHBlZC5cbiAgICAgKi9cbiAgICBTYW1wbGluZ0RlY2lzaW9uW1NhbXBsaW5nRGVjaXNpb25bXCJOT1RfUkVDT1JEXCJdID0gMF0gPSBcIk5PVF9SRUNPUkRcIjtcbiAgICAvKipcbiAgICAgKiBgU3Bhbi5pc1JlY29yZGluZygpID09PSB0cnVlYCwgYnV0IGBTYW1wbGVkYCBmbGFnIGluIHtAbGluayBUcmFjZUZsYWdzfVxuICAgICAqIE1VU1QgTk9UIGJlIHNldC5cbiAgICAgKi9cbiAgICBTYW1wbGluZ0RlY2lzaW9uW1NhbXBsaW5nRGVjaXNpb25bXCJSRUNPUkRcIl0gPSAxXSA9IFwiUkVDT1JEXCI7XG4gICAgLyoqXG4gICAgICogYFNwYW4uaXNSZWNvcmRpbmcoKSA9PT0gdHJ1ZWAgQU5EIGBTYW1wbGVkYCBmbGFnIGluIHtAbGluayBUcmFjZUZsYWdzfVxuICAgICAqIE1VU1QgYmUgc2V0LlxuICAgICAqL1xuICAgIFNhbXBsaW5nRGVjaXNpb25bU2FtcGxpbmdEZWNpc2lvbltcIlJFQ09SRF9BTkRfU0FNUExFRFwiXSA9IDJdID0gXCJSRUNPUkRfQU5EX1NBTVBMRURcIjtcbn0pKFNhbXBsaW5nRGVjaXNpb24gfHwgKFNhbXBsaW5nRGVjaXNpb24gPSB7fSkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIEJBR0dBR0VfS0VZX1BBSVJfU0VQQVJBVE9SID0gJz0nO1xudmFyIEJBR0dBR0VfUFJPUEVSVElFU19TRVBBUkFUT1IgPSAnOyc7XG52YXIgQkFHR0FHRV9JVEVNU19TRVBBUkFUT1IgPSAnLCc7XG4vLyBOYW1lIG9mIHRoZSBodHRwIGhlYWRlciB1c2VkIHRvIHByb3BhZ2F0ZSB0aGUgYmFnZ2FnZVxudmFyIEJBR0dBR0VfSEVBREVSID0gJ2JhZ2dhZ2UnO1xuLy8gTWF4aW11bSBudW1iZXIgb2YgbmFtZS12YWx1ZSBwYWlycyBhbGxvd2VkIGJ5IHczYyBzcGVjXG52YXIgQkFHR0FHRV9NQVhfTkFNRV9WQUxVRV9QQUlSUyA9IDE4MDtcbi8vIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHBlciBhIHNpbmdsZSBuYW1lLXZhbHVlIHBhaXIgYWxsb3dlZCBieSB3M2Mgc3BlY1xudmFyIEJBR0dBR0VfTUFYX1BFUl9OQU1FX1ZBTFVFX1BBSVJTID0gNDA5Njtcbi8vIE1heGltdW0gdG90YWwgbGVuZ3RoIG9mIGFsbCBuYW1lLXZhbHVlIHBhaXJzIGFsbG93ZWQgYnkgdzNjIHNwZWNcbnZhciBCQUdHQUdFX01BWF9UT1RBTF9MRU5HVEggPSA4MTkyO1xuXG52YXIgX19yZWFkJDMgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5mdW5jdGlvbiBzZXJpYWxpemVLZXlQYWlycyhrZXlQYWlycykge1xuICAgIHJldHVybiBrZXlQYWlycy5yZWR1Y2UoZnVuY3Rpb24gKGhWYWx1ZSwgY3VycmVudCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBcIlwiICsgaFZhbHVlICsgKGhWYWx1ZSAhPT0gJycgPyBCQUdHQUdFX0lURU1TX1NFUEFSQVRPUiA6ICcnKSArIGN1cnJlbnQ7XG4gICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBCQUdHQUdFX01BWF9UT1RBTF9MRU5HVEggPyBoVmFsdWUgOiB2YWx1ZTtcbiAgICB9LCAnJyk7XG59XG5mdW5jdGlvbiBnZXRLZXlQYWlycyhiYWdnYWdlKSB7XG4gICAgcmV0dXJuIGJhZ2dhZ2UuZ2V0QWxsRW50cmllcygpLm1hcChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gX19yZWFkJDMoX2EsIDIpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZS52YWx1ZSk7XG4gICAgICAgIC8vIGluY2x1ZGUgb3BhcXVlIG1ldGFkYXRhIGlmIHByb3ZpZGVkXG4gICAgICAgIC8vIE5PVEU6IHdlIGludGVudGlvbmFsbHkgZG9uJ3QgVVJJLWVuY29kZSB0aGUgbWV0YWRhdGEgLSB0aGF0IHJlc3BvbnNpYmlsaXR5IGZhbGxzIG9uIHRoZSBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvblxuICAgICAgICBpZiAodmFsdWUubWV0YWRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZW50cnkgKz0gQkFHR0FHRV9QUk9QRVJUSUVTX1NFUEFSQVRPUiArIHZhbHVlLm1ldGFkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcGFyc2VQYWlyS2V5VmFsdWUoZW50cnkpIHtcbiAgICB2YXIgdmFsdWVQcm9wcyA9IGVudHJ5LnNwbGl0KEJBR0dBR0VfUFJPUEVSVElFU19TRVBBUkFUT1IpO1xuICAgIGlmICh2YWx1ZVByb3BzLmxlbmd0aCA8PSAwKVxuICAgICAgICByZXR1cm47XG4gICAgdmFyIGtleVBhaXJQYXJ0ID0gdmFsdWVQcm9wcy5zaGlmdCgpO1xuICAgIGlmICgha2V5UGFpclBhcnQpXG4gICAgICAgIHJldHVybjtcbiAgICB2YXIgc2VwYXJhdG9ySW5kZXggPSBrZXlQYWlyUGFydC5pbmRleE9mKEJBR0dBR0VfS0VZX1BBSVJfU0VQQVJBVE9SKTtcbiAgICBpZiAoc2VwYXJhdG9ySW5kZXggPD0gMClcbiAgICAgICAgcmV0dXJuO1xuICAgIHZhciBrZXkgPSBkZWNvZGVVUklDb21wb25lbnQoa2V5UGFpclBhcnQuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KS50cmltKCkpO1xuICAgIHZhciB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChrZXlQYWlyUGFydC5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKS50cmltKCkpO1xuICAgIHZhciBtZXRhZGF0YTtcbiAgICBpZiAodmFsdWVQcm9wcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1ldGFkYXRhID0gYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nKHZhbHVlUHJvcHMuam9pbihCQUdHQUdFX1BST1BFUlRJRVNfU0VQQVJBVE9SKSk7XG4gICAgfVxuICAgIHJldHVybiB7IGtleToga2V5LCB2YWx1ZTogdmFsdWUsIG1ldGFkYXRhOiBtZXRhZGF0YSB9O1xufVxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyBzZXJpYWxpemVkIGluIHRoZSBiYWdnYWdlIEhUVFAgRm9ybWF0ICh3aXRob3V0IG1ldGFkYXRhKTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvYmFnZ2FnZS9ibG9iL21hc3Rlci9iYWdnYWdlL0hUVFBfSEVBREVSX0ZPUk1BVC5tZFxuICovXG5mdW5jdGlvbiBwYXJzZUtleVBhaXJzSW50b1JlY29yZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IHZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAuc3BsaXQoQkFHR0FHRV9JVEVNU19TRVBBUkFUT1IpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiBwYXJzZVBhaXJLZXlWYWx1ZShlbnRyeSk7XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoa2V5UGFpcikgeyByZXR1cm4ga2V5UGFpciAhPT0gdW5kZWZpbmVkICYmIGtleVBhaXIudmFsdWUubGVuZ3RoID4gMDsgfSlcbiAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoaGVhZGVycywga2V5UGFpcikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICBoZWFkZXJzW2tleVBhaXIua2V5XSA9IGtleVBhaXIudmFsdWU7XG4gICAgICAgIHJldHVybiBoZWFkZXJzO1xuICAgIH0sIHt9KTtcbn1cblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogUHJvcGFnYXRlcyB7QGxpbmsgQmFnZ2FnZX0gdGhyb3VnaCBDb250ZXh0IGZvcm1hdCBwcm9wYWdhdGlvbi5cbiAqXG4gKiBCYXNlZCBvbiB0aGUgQmFnZ2FnZSBzcGVjaWZpY2F0aW9uOlxuICogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2JhZ2dhZ2UvXG4gKi9cbnZhciBXM0NCYWdnYWdlUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBXM0NCYWdnYWdlUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgVzNDQmFnZ2FnZVByb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGJhZ2dhZ2UgPSBwcm9wYWdhdGlvbi5nZXRCYWdnYWdlKGNvbnRleHQpO1xuICAgICAgICBpZiAoIWJhZ2dhZ2UgfHwgaXNUcmFjaW5nU3VwcHJlc3NlZChjb250ZXh0KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIGtleVBhaXJzID0gZ2V0S2V5UGFpcnMoYmFnZ2FnZSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHBhaXIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWlyLmxlbmd0aCA8PSBCQUdHQUdFX01BWF9QRVJfTkFNRV9WQUxVRV9QQUlSUztcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5zbGljZSgwLCBCQUdHQUdFX01BWF9OQU1FX1ZBTFVFX1BBSVJTKTtcbiAgICAgICAgdmFyIGhlYWRlclZhbHVlID0gc2VyaWFsaXplS2V5UGFpcnMoa2V5UGFpcnMpO1xuICAgICAgICBpZiAoaGVhZGVyVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBCQUdHQUdFX0hFQURFUiwgaGVhZGVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBXM0NCYWdnYWdlUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIGhlYWRlclZhbHVlID0gZ2V0dGVyLmdldChjYXJyaWVyLCBCQUdHQUdFX0hFQURFUik7XG4gICAgICAgIHZhciBiYWdnYWdlU3RyaW5nID0gQXJyYXkuaXNBcnJheShoZWFkZXJWYWx1ZSlcbiAgICAgICAgICAgID8gaGVhZGVyVmFsdWUuam9pbihCQUdHQUdFX0lURU1TX1NFUEFSQVRPUilcbiAgICAgICAgICAgIDogaGVhZGVyVmFsdWU7XG4gICAgICAgIGlmICghYmFnZ2FnZVN0cmluZylcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB2YXIgYmFnZ2FnZSA9IHt9O1xuICAgICAgICBpZiAoYmFnZ2FnZVN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBwYWlycyA9IGJhZ2dhZ2VTdHJpbmcuc3BsaXQoQkFHR0FHRV9JVEVNU19TRVBBUkFUT1IpO1xuICAgICAgICBwYWlycy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgdmFyIGtleVBhaXIgPSBwYXJzZVBhaXJLZXlWYWx1ZShlbnRyeSk7XG4gICAgICAgICAgICBpZiAoa2V5UGFpcikge1xuICAgICAgICAgICAgICAgIHZhciBiYWdnYWdlRW50cnkgPSB7IHZhbHVlOiBrZXlQYWlyLnZhbHVlIH07XG4gICAgICAgICAgICAgICAgaWYgKGtleVBhaXIubWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFnZ2FnZUVudHJ5Lm1ldGFkYXRhID0ga2V5UGFpci5tZXRhZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYmFnZ2FnZVtrZXlQYWlyLmtleV0gPSBiYWdnYWdlRW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoT2JqZWN0LmVudHJpZXMoYmFnZ2FnZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcGFnYXRpb24uc2V0QmFnZ2FnZShjb250ZXh0LCBwcm9wYWdhdGlvbi5jcmVhdGVCYWdnYWdlKGJhZ2dhZ2UpKTtcbiAgICB9O1xuICAgIFczQ0JhZ2dhZ2VQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbQkFHR0FHRV9IRUFERVJdO1xuICAgIH07XG4gICAgcmV0dXJuIFczQ0JhZ2dhZ2VQcm9wYWdhdG9yO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQSB1dGlsaXR5IGZvciByZXR1cm5pbmcgd2FsbCB0aW1lcyBhbmNob3JlZCB0byBhIGdpdmVuIHBvaW50IGluIHRpbWUuIFdhbGwgdGltZSBtZWFzdXJlbWVudHMgd2lsbFxuICogbm90IGJlIHRha2VuIGZyb20gdGhlIHN5c3RlbSwgYnV0IGluc3RlYWQgYXJlIGNvbXB1dGVkIGJ5IGFkZGluZyBhIG1vbm90b25pYyBjbG9jayB0aW1lXG4gKiB0byB0aGUgYW5jaG9yIHBvaW50LlxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIHN5c3RlbSB0aW1lIGNhbiBjaGFuZ2UgYW5kIHJlc3VsdCBpbiB1bmV4cGVjdGVkIHNpdHVhdGlvbnMgbGlrZVxuICogc3BhbnMgZW5kaW5nIGJlZm9yZSB0aGV5IGFyZSBzdGFydGVkLiBDcmVhdGluZyBhbiBhbmNob3JlZCBjbG9jayBmb3IgZWFjaCBsb2NhbCByb290IHNwYW5cbiAqIGVuc3VyZXMgdGhhdCBzcGFuIHRpbWluZ3MgYW5kIGR1cmF0aW9ucyBhcmUgYWNjdXJhdGUgd2hpbGUgcHJldmVudGluZyBzcGFuIHRpbWVzIGZyb20gZHJpZnRpbmdcbiAqIHRvbyBmYXIgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLlxuICpcbiAqIE9ubHkgY3JlYXRpbmcgYW4gYW5jaG9yZWQgY2xvY2sgb25jZSBwZXIgbG9jYWwgdHJhY2UgZW5zdXJlcyBzcGFuIHRpbWVzIGFyZSBjb3JyZWN0IHJlbGF0aXZlXG4gKiB0byBlYWNoIG90aGVyLiBGb3IgZXhhbXBsZSwgYSBjaGlsZCBzcGFuIHdpbGwgbmV2ZXIgaGF2ZSBhIHN0YXJ0IHRpbWUgYmVmb3JlIGl0cyBwYXJlbnQgZXZlblxuICogaWYgdGhlIHN5c3RlbSBjbG9jayBpcyBjb3JyZWN0ZWQgZHVyaW5nIHRoZSBsb2NhbCB0cmFjZS5cbiAqXG4gKiBIZWF2aWx5IGluc3BpcmVkIGJ5IHRoZSBPVGVsIEphdmEgYW5jaG9yZWQgY2xvY2tcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWphdmEvYmxvYi9tYWluL3Nkay90cmFjZS9zcmMvbWFpbi9qYXZhL2lvL29wZW50ZWxlbWV0cnkvc2RrL3RyYWNlL0FuY2hvcmVkQ2xvY2suamF2YVxuICovXG52YXIgQW5jaG9yZWRDbG9jayA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgQW5jaG9yZWRDbG9jayBhbmNob3JlZCB0byB0aGUgY3VycmVudCB0aW1lIHJldHVybmVkIGJ5IHN5c3RlbUNsb2NrLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN5c3RlbUNsb2NrIHNob3VsZCBiZSBhIGNsb2NrIHRoYXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDEgMTk3MCBzdWNoIGFzIERhdGVcbiAgICAgKiBAcGFyYW0gbW9ub3RvbmljQ2xvY2sgc2hvdWxkIGJlIGEgY2xvY2sgdGhhdCBjb3VudHMgbWlsbGlzZWNvbmRzIG1vbm90b25pY2FsbHkgc3VjaCBhcyB3aW5kb3cucGVyZm9ybWFuY2Ugb3IgcGVyZl9ob29rcy5wZXJmb3JtYW5jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEFuY2hvcmVkQ2xvY2soc3lzdGVtQ2xvY2ssIG1vbm90b25pY0Nsb2NrKSB7XG4gICAgICAgIHRoaXMuX21vbm90b25pY0Nsb2NrID0gbW9ub3RvbmljQ2xvY2s7XG4gICAgICAgIHRoaXMuX2Vwb2NoTWlsbGlzID0gc3lzdGVtQ2xvY2subm93KCk7XG4gICAgICAgIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gbW9ub3RvbmljQ2xvY2subm93KCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlXG4gICAgICogQW5jaG9yZWRDbG9jayB3YXMgY3JlYXRlZCB0byB0aGUgY3JlYXRpb24gZXBvY2ggdGltZVxuICAgICAqL1xuICAgIEFuY2hvcmVkQ2xvY2sucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRlbHRhID0gdGhpcy5fbW9ub3RvbmljQ2xvY2subm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZU1pbGxpcztcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgZGVsdGE7XG4gICAgfTtcbiAgICByZXR1cm4gQW5jaG9yZWRDbG9jaztcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX192YWx1ZXMkMSA9ICh1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkJDIgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5mdW5jdGlvbiBzYW5pdGl6ZUF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciBvdXQgPSB7fTtcbiAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMgIT09ICdvYmplY3QnIHx8IGF0dHJpYnV0ZXMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzJDEoT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQkMihfYy52YWx1ZSwgMiksIGtleSA9IF9kWzBdLCB2YWwgPSBfZFsxXTtcbiAgICAgICAgICAgIGlmICghaXNBdHRyaWJ1dGVLZXkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGRpYWcud2FybihcIkludmFsaWQgYXR0cmlidXRlIGtleTogXCIgKyBrZXkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0F0dHJpYnV0ZVZhbHVlKHZhbCkpIHtcbiAgICAgICAgICAgICAgICBkaWFnLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSB2YWx1ZSBzZXQgZm9yIGtleTogXCIgKyBrZXkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgICAgIG91dFtrZXldID0gdmFsLnNsaWNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXRba2V5XSA9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIGlzQXR0cmlidXRlS2V5KGtleSkge1xuICAgIHJldHVybiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGlzQXR0cmlidXRlVmFsdWUodmFsKSB7XG4gICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH