@getopenpay/openpay-js
Version:
Accept payments through OpenPay, right on your site
798 lines • 304 kB
JavaScript
import { D as P, c as O_, C as s_, r as P_, u as R_, g as D_ } from "./index-DC5j54sB.js";
import { c as A } from "./utils-De78ey-v.js";
var C_ = function(S, E) {
var T = typeof Symbol == "function" && S[Symbol.iterator];
if (!T) return S;
var a = T.call(S), _, r = [], N;
try {
for (; (E === void 0 || E-- > 0) && !(_ = a.next()).done; ) r.push(_.value);
} catch (M) {
N = { error: M };
} finally {
try {
_ && !_.done && (T = a.return) && T.call(a);
} finally {
if (N) throw N.error;
}
}
return r;
}, v_ = function(S) {
var E = typeof Symbol == "function" && Symbol.iterator, T = E && S[E], a = 0;
if (T) return T.call(S);
if (S && typeof S.length == "number") return {
next: function() {
return S && a >= S.length && (S = void 0), { value: S && S[a++], done: !S };
}
};
throw new TypeError(E ? "Object is not iterable." : "Symbol.iterator is not defined.");
}, t_ = (
/** @class */
(function() {
function S(E) {
this._entries = E ? new Map(E) : /* @__PURE__ */ new Map();
}
return S.prototype.getEntry = function(E) {
var T = this._entries.get(E);
if (T)
return Object.assign({}, T);
}, S.prototype.getAllEntries = function() {
return Array.from(this._entries.entries()).map(function(E) {
var T = C_(E, 2), a = T[0], _ = T[1];
return [a, _];
});
}, S.prototype.setEntry = function(E, T) {
var a = new S(this._entries);
return a._entries.set(E, T), a;
}, S.prototype.removeEntry = function(E) {
var T = new S(this._entries);
return T._entries.delete(E), T;
}, S.prototype.removeEntries = function() {
for (var E, T, a = [], _ = 0; _ < arguments.length; _++)
a[_] = arguments[_];
var r = new S(this._entries);
try {
for (var N = v_(a), M = N.next(); !M.done; M = N.next()) {
var M_ = M.value;
r._entries.delete(M_);
}
} catch (e_) {
E = { error: e_ };
} finally {
try {
M && !M.done && (T = N.return) && T.call(N);
} finally {
if (E) throw E.error;
}
}
return r;
}, S.prototype.clear = function() {
return new S();
}, S;
})()
), n_ = Symbol("BaggageEntryMetadata"), I_ = P.instance();
function L_(S) {
return S === void 0 && (S = {}), new t_(new Map(Object.entries(S)));
}
function f_(S) {
return typeof S != "string" && (I_.error("Cannot create baggage metadata from unknown type: " + typeof S), S = ""), {
__TYPE__: n_,
toString: function() {
return S;
}
};
}
var U_ = {
get: function(S, E) {
if (S != null)
return S[E];
},
keys: function(S) {
return S == null ? [] : Object.keys(S);
}
}, o_ = {
set: function(S, E, T) {
S != null && (S[E] = T);
}
}, V_ = (
/** @class */
(function() {
function S() {
}
return S.prototype.inject = function(E, T) {
}, S.prototype.extract = function(E, T) {
return E;
}, S.prototype.fields = function() {
return [];
}, S;
})()
), D = O_("OpenTelemetry Baggage Key");
function C(S) {
return S.getValue(D) || void 0;
}
function i_() {
return C(s_.getInstance().active());
}
function B_(S, E) {
return S.setValue(D, E);
}
function c_(S) {
return S.deleteValue(D);
}
var s = "propagation", d_ = new V_(), Y_ = (
/** @class */
(function() {
function S() {
this.createBaggage = L_, this.getBaggage = C, this.getActiveBaggage = i_, this.setBaggage = B_, this.deleteBaggage = c_;
}
return S.getInstance = function() {
return this._instance || (this._instance = new S()), this._instance;
}, S.prototype.setGlobalPropagator = function(E) {
return P_(s, E, P.instance());
}, S.prototype.inject = function(E, T, a) {
return a === void 0 && (a = o_), this._getGlobalPropagator().inject(E, T, a);
}, S.prototype.extract = function(E, T, a) {
return a === void 0 && (a = U_), this._getGlobalPropagator().extract(E, T, a);
}, S.prototype.fields = function() {
return this._getGlobalPropagator().fields();
}, S.prototype.disable = function() {
R_(s, P.instance());
}, S.prototype._getGlobalPropagator = function() {
return D_(s) || d_;
}, S;
})()
), y_ = Y_.getInstance(), h_ = typeof globalThis == "object" ? globalThis : typeof self == "object" ? self : typeof window == "object" ? window : typeof global == "object" ? global : {}, R = performance, v = "aws.lambda.invoked_arn", t = "db.system", n = "db.connection_string", I = "db.user", L = "db.jdbc.driver_classname", U = "db.name", o = "db.statement", V = "db.operation", i = "db.mssql.instance_name", B = "db.cassandra.keyspace", c = "db.cassandra.page_size", d = "db.cassandra.consistency_level", Y = "db.cassandra.table", G = "db.cassandra.idempotence", u = "db.cassandra.speculative_execution_count", p = "db.cassandra.coordinator.id", b = "db.cassandra.coordinator.dc", H = "db.hbase.namespace", g = "db.redis.database_index", l = "db.mongodb.collection", m = "db.sql.table", f = "exception.type", y = "exception.message", h = "exception.stacktrace", F = "exception.escaped", K = "faas.trigger", W = "faas.execution", w = "faas.document.collection", X = "faas.document.operation", Q = "faas.document.time", x = "faas.document.name", k = "faas.time", j = "faas.cron", q = "faas.coldstart", Z = "faas.invoked_name", J = "faas.invoked_provider", z = "faas.invoked_region", $ = "net.transport", SS = "net.peer.ip", ES = "net.peer.port", TS = "net.peer.name", aS = "net.host.ip", _S = "net.host.port", AS = "net.host.name", rS = "net.host.connection.type", NS = "net.host.connection.subtype", MS = "net.host.carrier.name", eS = "net.host.carrier.mcc", OS = "net.host.carrier.mnc", sS = "net.host.carrier.icc", PS = "peer.service", RS = "enduser.id", DS = "enduser.role", CS = "enduser.scope", vS = "thread.id", tS = "thread.name", nS = "code.function", IS = "code.namespace", LS = "code.filepath", US = "code.lineno", oS = "http.method", VS = "http.url", iS = "http.target", BS = "http.host", cS = "http.scheme", dS = "http.status_code", YS = "http.flavor", GS = "http.user_agent", uS = "http.request_content_length", pS = "http.request_content_length_uncompressed", bS = "http.response_content_length", HS = "http.response_content_length_uncompressed", gS = "http.server_name", lS = "http.route", mS = "http.client_ip", fS = "aws.dynamodb.table_names", yS = "aws.dynamodb.consumed_capacity", hS = "aws.dynamodb.item_collection_metrics", FS = "aws.dynamodb.provisioned_read_capacity", KS = "aws.dynamodb.provisioned_write_capacity", WS = "aws.dynamodb.consistent_read", wS = "aws.dynamodb.projection", XS = "aws.dynamodb.limit", QS = "aws.dynamodb.attributes_to_get", xS = "aws.dynamodb.index_name", kS = "aws.dynamodb.select", jS = "aws.dynamodb.global_secondary_indexes", qS = "aws.dynamodb.local_secondary_indexes", ZS = "aws.dynamodb.exclusive_start_table", JS = "aws.dynamodb.table_count", zS = "aws.dynamodb.scan_forward", $S = "aws.dynamodb.segment", SE = "aws.dynamodb.total_segments", EE = "aws.dynamodb.count", TE = "aws.dynamodb.scanned_count", aE = "aws.dynamodb.attribute_definitions", _E = "aws.dynamodb.global_secondary_index_updates", AE = "messaging.system", rE = "messaging.destination", NE = "messaging.destination_kind", ME = "messaging.temp_destination", eE = "messaging.protocol", OE = "messaging.protocol_version", sE = "messaging.url", PE = "messaging.message_id", RE = "messaging.conversation_id", DE = "messaging.message_payload_size_bytes", CE = "messaging.message_payload_compressed_size_bytes", vE = "messaging.operation", tE = "messaging.consumer_id", nE = "messaging.rabbitmq.routing_key", IE = "messaging.kafka.message_key", LE = "messaging.kafka.consumer_group", UE = "messaging.kafka.client_id", oE = "messaging.kafka.partition", VE = "messaging.kafka.tombstone", iE = "rpc.system", BE = "rpc.service", cE = "rpc.method", dE = "rpc.grpc.status_code", YE = "rpc.jsonrpc.version", GE = "rpc.jsonrpc.request_id", uE = "rpc.jsonrpc.error_code", pE = "rpc.jsonrpc.error_message", bE = "message.type", HE = "message.id", gE = "message.compressed_size", lE = "message.uncompressed_size", F_ = v, K_ = t, W_ = n, w_ = I, X_ = L, Q_ = U, x_ = o, k_ = V, j_ = i, q_ = B, Z_ = c, J_ = d, z_ = Y, $_ = G, SA = u, EA = p, TA = b, aA = H, _A = g, AA = l, rA = m, NA = f, MA = y, eA = h, OA = F, sA = K, PA = W, RA = w, DA = X, CA = Q, vA = x, tA = k, nA = j, IA = q, LA = Z, UA = J, oA = z, VA = $, iA = SS, BA = ES, cA = TS, dA = aS, YA = _S, GA = AS, uA = rS, pA = NS, bA = MS, HA = eS, gA = OS, lA = sS, mA = PS, fA = RS, yA = DS, hA = CS, FA = vS, KA = tS, WA = nS, wA = IS, XA = LS, QA = US, xA = oS, kA = VS, jA = iS, qA = BS, ZA = cS, JA = dS, zA = YS, $A = GS, Sr = uS, Er = pS, Tr = bS, ar = HS, _r = gS, Ar = lS, rr = mS, Nr = fS, Mr = yS, er = hS, Or = FS, sr = KS, Pr = WS, Rr = wS, Dr = XS, Cr = QS, vr = xS, tr = kS, nr = jS, Ir = qS, Lr = ZS, Ur = JS, or = zS, Vr = $S, ir = SE, Br = EE, cr = TE, dr = aE, Yr = _E, Gr = AE, ur = rE, pr = NE, br = ME, Hr = eE, gr = OE, lr = sE, mr = PE, fr = RE, yr = DE, hr = CE, Fr = vE, Kr = tE, Wr = nE, wr = IE, Xr = LE, Qr = UE, xr = oE, kr = VE, jr = iE, qr = BE, Zr = cE, Jr = dE, zr = YE, $r = GE, SN = uE, EN = pE, TN = bE, aN = HE, _N = gE, AN = lE, rN = /* @__PURE__ */ A([
v,
t,
n,
I,
L,
U,
o,
V,
i,
B,
c,
d,
Y,
G,
u,
p,
b,
H,
g,
l,
m,
f,
y,
h,
F,
K,
W,
w,
X,
Q,
x,
k,
j,
q,
Z,
J,
z,
$,
SS,
ES,
TS,
aS,
_S,
AS,
rS,
NS,
MS,
eS,
OS,
sS,
PS,
RS,
DS,
CS,
vS,
tS,
nS,
IS,
LS,
US,
oS,
VS,
iS,
BS,
cS,
dS,
YS,
GS,
uS,
pS,
bS,
HS,
gS,
lS,
mS,
fS,
yS,
hS,
FS,
KS,
WS,
wS,
XS,
QS,
xS,
kS,
jS,
qS,
ZS,
JS,
zS,
$S,
SE,
EE,
TE,
aE,
_E,
AE,
rE,
NE,
ME,
eE,
OE,
sE,
PE,
RE,
DE,
CE,
vE,
tE,
nE,
IE,
LE,
UE,
oE,
VE,
iE,
BE,
cE,
dE,
YE,
GE,
uE,
pE,
bE,
HE,
gE,
lE
]), mE = "other_sql", fE = "mssql", yE = "mysql", hE = "oracle", FE = "db2", KE = "postgresql", WE = "redshift", wE = "hive", XE = "cloudscape", QE = "hsqldb", xE = "progress", kE = "maxdb", jE = "hanadb", qE = "ingres", ZE = "firstsql", JE = "edb", zE = "cache", $E = "adabas", ST = "firebird", ET = "derby", TT = "filemaker", aT = "informix", _T = "instantdb", AT = "interbase", rT = "mariadb", NT = "netezza", MT = "pervasive", eT = "pointbase", OT = "sqlite", sT = "sybase", PT = "teradata", RT = "vertica", DT = "h2", CT = "coldfusion", vT = "cassandra", tT = "hbase", nT = "mongodb", IT = "redis", LT = "couchbase", UT = "couchdb", oT = "cosmosdb", VT = "dynamodb", iT = "neo4j", BT = "geode", cT = "elasticsearch", dT = "memcached", YT = "cockroachdb", NN = mE, MN = fE, eN = yE, ON = hE, sN = FE, PN = KE, RN = WE, DN = wE, CN = XE, vN = QE, tN = xE, nN = kE, IN = jE, LN = qE, UN = ZE, oN = JE, VN = zE, iN = $E, BN = ST, cN = ET, dN = TT, YN = aT, GN = _T, uN = AT, pN = rT, bN = NT, HN = MT, gN = eT, lN = OT, mN = sT, fN = PT, yN = RT, hN = DT, FN = CT, KN = vT, WN = tT, wN = nT, XN = IT, QN = LT, xN = UT, kN = oT, jN = VT, qN = iT, ZN = BT, JN = cT, zN = dT, $N = YT, SM = /* @__PURE__ */ A([
mE,
fE,
yE,
hE,
FE,
KE,
WE,
wE,
XE,
QE,
xE,
kE,
jE,
qE,
ZE,
JE,
zE,
$E,
ST,
ET,
TT,
aT,
_T,
AT,
rT,
NT,
MT,
eT,
OT,
sT,
PT,
RT,
DT,
CT,
vT,
tT,
nT,
IT,
LT,
UT,
oT,
VT,
iT,
BT,
cT,
dT,
YT
]), GT = "all", uT = "each_quorum", pT = "quorum", bT = "local_quorum", HT = "one", gT = "two", lT = "three", mT = "local_one", fT = "any", yT = "serial", hT = "local_serial", EM = GT, TM = uT, aM = pT, _M = bT, AM = HT, rM = gT, NM = lT, MM = mT, eM = fT, OM = yT, sM = hT, PM = /* @__PURE__ */ A([
GT,
uT,
pT,
bT,
HT,
gT,
lT,
mT,
fT,
yT,
hT
]), FT = "datasource", KT = "http", WT = "pubsub", wT = "timer", XT = "other", RM = FT, DM = KT, CM = WT, vM = wT, tM = XT, nM = /* @__PURE__ */ A([
FT,
KT,
WT,
wT,
XT
]), QT = "insert", xT = "edit", kT = "delete", IM = QT, LM = xT, UM = kT, oM = /* @__PURE__ */ A([
QT,
xT,
kT
]), jT = "alibaba_cloud", qT = "aws", ZT = "azure", JT = "gcp", VM = jT, iM = qT, BM = ZT, cM = JT, dM = /* @__PURE__ */ A([
jT,
qT,
ZT,
JT
]), zT = "ip_tcp", $T = "ip_udp", Sa = "ip", Ea = "unix", Ta = "pipe", aa = "inproc", _a = "other", YM = zT, GM = $T, uM = Sa, pM = Ea, bM = Ta, HM = aa, gM = _a, lM = /* @__PURE__ */ A([
zT,
$T,
Sa,
Ea,
Ta,
aa,
_a
]), Aa = "wifi", ra = "wired", Na = "cell", Ma = "unavailable", ea = "unknown", mM = Aa, fM = ra, yM = Na, hM = Ma, FM = ea, KM = /* @__PURE__ */ A([
Aa,
ra,
Na,
Ma,
ea
]), Oa = "gprs", sa = "edge", Pa = "umts", Ra = "cdma", Da = "evdo_0", Ca = "evdo_a", va = "cdma2000_1xrtt", ta = "hsdpa", na = "hsupa", Ia = "hspa", La = "iden", Ua = "evdo_b", oa = "lte", Va = "ehrpd", ia = "hspap", Ba = "gsm", ca = "td_scdma", da = "iwlan", Ya = "nr", Ga = "nrnsa", ua = "lte_ca", WM = Oa, wM = sa, XM = Pa, QM = Ra, xM = Da, kM = Ca, jM = va, qM = ta, ZM = na, JM = Ia, zM = La, $M = Ua, Se = oa, Ee = Va, Te = ia, ae = Ba, _e = ca, Ae = da, re = Ya, Ne = Ga, Me = ua, ee = /* @__PURE__ */ A([
Oa,
sa,
Pa,
Ra,
Da,
Ca,
va,
ta,
na,
Ia,
La,
Ua,
oa,
Va,
ia,
Ba,
ca,
da,
Ya,
Ga,
ua
]), pa = "1.0", ba = "1.1", Ha = "2.0", ga = "SPDY", la = "QUIC", Oe = pa, se = ba, Pe = Ha, Re = ga, De = la, Ce = {
HTTP_1_0: pa,
HTTP_1_1: ba,
HTTP_2_0: Ha,
SPDY: ga,
QUIC: la
}, ma = "queue", fa = "topic", ve = ma, te = fa, ne = /* @__PURE__ */ A([
ma,
fa
]), ya = "receive", ha = "process", Ie = ya, Le = ha, Ue = /* @__PURE__ */ A([
ya,
ha
]), Fa = 0, Ka = 1, Wa = 2, wa = 3, Xa = 4, Qa = 5, xa = 6, ka = 7, ja = 8, qa = 9, Za = 10, Ja = 11, za = 12, $a = 13, S_ = 14, E_ = 15, T_ = 16, oe = Fa, Ve = Ka, ie = Wa, Be = wa, ce = Xa, de = Qa, Ye = xa, Ge = ka, ue = ja, pe = qa, be = Za, He = Ja, ge = za, le = $a, me = S_, fe = E_, ye = T_, he = {
OK: Fa,
CANCELLED: Ka,
UNKNOWN: Wa,
INVALID_ARGUMENT: wa,
DEADLINE_EXCEEDED: Xa,
NOT_FOUND: Qa,
ALREADY_EXISTS: xa,
PERMISSION_DENIED: ka,
RESOURCE_EXHAUSTED: ja,
FAILED_PRECONDITION: qa,
ABORTED: Za,
OUT_OF_RANGE: Ja,
UNIMPLEMENTED: za,
INTERNAL: $a,
UNAVAILABLE: S_,
DATA_LOSS: E_,
UNAUTHENTICATED: T_
}, a_ = "SENT", __ = "RECEIVED", Fe = a_, Ke = __, We = /* @__PURE__ */ A([
a_,
__
]), A_ = 9, G_ = 6, u_ = Math.pow(10, G_), e = Math.pow(10, A_);
function O(S) {
var E = S / 1e3, T = Math.trunc(E), a = Math.round(S % 1e3 * u_);
return [T, a];
}
function r_() {
var S = R.timeOrigin;
if (typeof S != "number") {
var E = R;
S = E.timing && E.timing.fetchStart;
}
return S;
}
function p_(S) {
var E = O(r_()), T = O(typeof S == "number" ? S : R.now());
return b_(E, T);
}
function we(S) {
if (N_(S))
return S;
if (typeof S == "number")
return S < r_() ? p_(S) : O(S);
if (S instanceof Date)
return O(S.getTime());
throw TypeError("Invalid input type");
}
function Xe(S, E) {
var T = E[0] - S[0], a = E[1] - S[1];
return a < 0 && (T -= 1, a += e), [T, a];
}
function Qe(S) {
var E = A_, T = "" + "0".repeat(E) + S[1] + "Z", a = T.substring(T.length - E - 1), _ = new Date(S[0] * 1e3).toISOString();
return _.replace("000Z", a);
}
function xe(S) {
return S[0] * e + S[1];
}
function ke(S) {
return S[0] * 1e3 + S[1] / 1e6;
}
function je(S) {
return S[0] * 1e6 + S[1] / 1e3;
}
function N_(S) {
return Array.isArray(S) && S.length === 2 && typeof S[0] == "number" && typeof S[1] == "number";
}
function qe(S) {
return N_(S) || typeof S == "number" || S instanceof Date;
}
function b_(S, E) {
var T = [S[0] + E[0], S[1] + E[1]];
return T[1] >= e && (T[1] -= e, T[0] += 1), T;
}
var H_ = function(S) {
var E = typeof Symbol == "function" && Symbol.iterator, T = E && S[E], a = 0;
if (T) return T.call(S);
if (S && typeof S.length == "number") return {
next: function() {
return S && a >= S.length && (S = void 0), { value: S && S[a++], done: !S };
}
};
throw new TypeError(E ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
function g_(S, E) {
return typeof E == "string" ? S === E : !!S.match(E);
}
function Ze(S, E) {
var T, a;
if (!E)
return !1;
try {
for (var _ = H_(E), r = _.next(); !r.done; r = _.next()) {
var N = r.value;
if (g_(S, N))
return !0;
}
} catch (M) {
T = { error: M };
} finally {
try {
r && !r.done && (a = _.return) && a.call(_);
} finally {
if (T) throw T.error;
}
}
return !1;
}
export {
oN as $,
U_ as A,
o_ as B,
eM as C,
EM as D,
TM as E,
MM as F,
_M as G,
sM as H,
AM as I,
aM as J,
OM as K,
NM as L,
rM as M,
iN as N,
VN as O,
KN as P,
CN as Q,
$N as R,
Tr as S,
FN as T,
kN as U,
QN as V,
xN as W,
sN as X,
cN as Y,
jN as Z,
h_ as _,
ar as a,
We as a$,
JN as a0,
dN as a1,
BN as a2,
UN as a3,
ZN as a4,
hN as a5,
IN as a6,
WN as a7,
DN as a8,
vN as a9,
UM as aA,
LM as aB,
IM as aC,
VM as aD,
iM as aE,
BM as aF,
cM as aG,
RM as aH,
DM as aI,
tM as aJ,
CM as aK,
vM as aL,
oM as aM,
dM as aN,
nM as aO,
Oe as aP,
se as aQ,
Pe as aR,
De as aS,
Re as aT,
Ce as aU,
Ke as aV,
Fe as aW,
ve as aX,
te as aY,
Le as aZ,
Ie as a_,
YN as aa,
LN as ab,
GN as ac,
uN as ad,
pN as ae,
nN as af,
zN as ag,
wN as ah,
MN as ai,
eN as aj,
qN as ak,
bN as al,
ON as am,
NN as an,
HN as ao,
gN as ap,
PN as aq,
tN as ar,
XN as as,
RN as at,
lN as au,
mN as av,
fN as aw,
yN as ax,
PM as ay,
SM as az,
JA as b,
Yr as b$,
ne as b0,
Ue as b1,
QM as b2,
jM as b3,
wM as b4,
Ee as b5,
xM as b6,
kM as b7,
$M as b8,
WM as b9,
KM as bA,
lM as bB,
be as bC,
Ye as bD,
Ve as bE,
fe as bF,
ce as bG,
pe as bH,
le as bI,
Be as bJ,
de as bK,
oe as bL,
He as bM,
Ge as bN,
ue as bO,
ye as bP,
me as bQ,
ge as bR,
ie as bS,
he as bT,
Cr as bU,
dr as bV,
Pr as bW,
Mr as bX,
Br as bY,
Lr as bZ,
nr as b_,
ae as ba,
qM as bb,
JM as bc,
Te as bd,
ZM as be,
zM as bf,
Ae as bg,
Se as bh,
Me as bi,
re as bj,
Ne as bk,
_e as bl,
XM as bm,
yM as bn,
hM as bo,
FM as bp,
mM as bq,
fM as br,
HM as bs,
uM as bt,
YM as bu,
GM as bv,
gM as bw,
bM as bx,
pM as by,
ee as bz,
qA as c,
TN as c$,
vr as c0,
er as c1,
Dr as c2,
Ir as c3,
Rr as c4,
Or as c5,
sr as c6,
cr as c7,
or as c8,
Vr as c9,
x_ as cA,
K_ as cB,
w_ as cC,
fA as cD,
yA as cE,
hA as cF,
OA as cG,
IA as cH,
nA as cI,
RA as cJ,
vA as cK,
DA as cL,
CA as cM,
PA as cN,
LA as cO,
UA as cP,
oA as cQ,
tA as cR,
sA as cS,
rr as cT,
zA as cU,
Sr as cV,
Ar as cW,
_r as cX,
jA as cY,
_N as cZ,
aN as c_,
tr as ca,
Ur as cb,
Nr as cc,
ir as cd,
F_ as ce,
XA as cf,
WA as cg,
QA as ch,
wA as ci,
J_ as cj,
TA as ck,
EA as cl,
$_ as cm,
q_ as cn,
Z_ as co,
SA as cp,
z_ as cq,
W_ as cr,
aA as cs,
X_ as ct,
AA as cu,
j_ as cv,
Q_ as cw,
k_ as cx,
_A as cy,
rA as cz,
ZA as d,
AN as d0,
Kr as d1,
fr as d2,
ur as d3,
pr as d4,
Qr as d5,
Xr as d6,
wr as d7,
xr as d8,
kr as d9,
SN as dA,
EN as dB,
$r as dC,
zr as dD,
Zr as dE,
qr as dF,
jr as dG,
FA as dH,
KA as dI,
rN as dJ,
ke as dK,
Qe as dL,
mr as da,
hr as db,
yr as dc,
Fr as dd,
Hr as de,
gr as df,
Wr as dg,
Gr as dh,
br as di,
lr as dj,
lA as dk,
HA as dl,
gA as dm,
bA as dn,
pA as dp,
uA as dq,
dA as dr,
GA as ds,
YA as dt,
iA as du,
cA as dv,
BA as dw,
VA as dx,
mA as dy,
Jr as dz,
$A as e,
xA as f,
kA as g,
xe as h,
Ze as i,
p_ as j,
Er as k,
r_ as l,
O as m,
qe as n,
R as o,
y_ as p,
Xe as q,
N_ as r,
b_ as s,
we as t,
g_ as u,
NA as v,
MA as w,
eA as x,
je as y,
f_ as z
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidXJsLSF+ezAwZH1+LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBEIGFzIERpYWdBUEksIGMgYXMgY3JlYXRlQ29udGV4dEtleSwgQyBhcyBDb250ZXh0QVBJLCByIGFzIHJlZ2lzdGVyR2xvYmFsLCB1IGFzIHVucmVnaXN0ZXJHbG9iYWwsIGcgYXMgZ2V0R2xvYmFsIH0gZnJvbSAnLi9pbmRleC0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBjIGFzIGNyZWF0ZUNvbnN0TWFwIH0gZnJvbSAnLi91dGlscy0hfnswMDd9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19yZWFkID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fdmFsdWVzJDEgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xudmFyIEJhZ2dhZ2VJbXBsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJhZ2dhZ2VJbXBsKGVudHJpZXMpIHtcbiAgICAgICAgdGhpcy5fZW50cmllcyA9IGVudHJpZXMgPyBuZXcgTWFwKGVudHJpZXMpIDogbmV3IE1hcCgpO1xuICAgIH1cbiAgICBCYWdnYWdlSW1wbC5wcm90b3R5cGUuZ2V0RW50cnkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX2VudHJpZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGVudHJ5KTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5nZXRBbGxFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmVudHJpZXMoKSkubWFwKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwgayA9IF9iWzBdLCB2ID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gW2ssIHZdO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5zZXRFbnRyeSA9IGZ1bmN0aW9uIChrZXksIGVudHJ5KSB7XG4gICAgICAgIHZhciBuZXdCYWdnYWdlID0gbmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO1xuICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLnNldChrZXksIGVudHJ5KTtcbiAgICAgICAgcmV0dXJuIG5ld0JhZ2dhZ2U7XG4gICAgfTtcbiAgICBCYWdnYWdlSW1wbC5wcm90b3R5cGUucmVtb3ZlRW50cnkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBuZXdCYWdnYWdlID0gbmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO1xuICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm4gbmV3QmFnZ2FnZTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5yZW1vdmVFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIGtleXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGtleXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV3QmFnZ2FnZSA9IG5ldyBCYWdnYWdlSW1wbCh0aGlzLl9lbnRyaWVzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleXNfMSA9IF9fdmFsdWVzJDEoa2V5cyksIGtleXNfMV8xID0ga2V5c18xLm5leHQoKTsgIWtleXNfMV8xLmRvbmU7IGtleXNfMV8xID0ga2V5c18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5c18xXzEgJiYgIWtleXNfMV8xLmRvbmUgJiYgKF9hID0ga2V5c18xLnJldHVybikpIF9hLmNhbGwoa2V5c18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3QmFnZ2FnZTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYWdnYWdlSW1wbCgpO1xuICAgIH07XG4gICAgcmV0dXJuIEJhZ2dhZ2VJbXBsO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogU3ltYm9sIHVzZWQgdG8gbWFrZSBCYWdnYWdlRW50cnlNZXRhZGF0YSBhbiBvcGFxdWUgdHlwZVxuICovXG52YXIgYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wgPSBTeW1ib2woJ0JhZ2dhZ2VFbnRyeU1ldGFkYXRhJyk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgZGlhZyA9IERpYWdBUEkuaW5zdGFuY2UoKTtcbi8qKlxuICogQ3JlYXRlIGEgbmV3IEJhZ2dhZ2Ugd2l0aCBvcHRpb25hbCBlbnRyaWVzXG4gKlxuICogQHBhcmFtIGVudHJpZXMgQW4gYXJyYXkgb2YgYmFnZ2FnZSBlbnRyaWVzIHRoZSBuZXcgYmFnZ2FnZSBzaG91bGQgY29udGFpblxuICovXG5mdW5jdGlvbiBjcmVhdGVCYWdnYWdlKGVudHJpZXMpIHtcbiAgICBpZiAoZW50cmllcyA9PT0gdm9pZCAwKSB7IGVudHJpZXMgPSB7fTsgfVxuICAgIHJldHVybiBuZXcgQmFnZ2FnZUltcGwobmV3IE1hcChPYmplY3QuZW50cmllcyhlbnRyaWVzKSkpO1xufVxuLyoqXG4gKiBDcmVhdGUgYSBzZXJpYWxpemFibGUgQmFnZ2FnZUVudHJ5TWV0YWRhdGEgb2JqZWN0IGZyb20gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciBzdHJpbmcgbWV0YWRhdGEuIEZvcm1hdCBpcyBjdXJyZW50bHkgbm90IGRlZmluZWQgYnkgdGhlIHNwZWMgYW5kIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcuXG4gKlxuICovXG5mdW5jdGlvbiBiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmcoc3RyKSB7XG4gICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpYWcuZXJyb3IoXCJDYW5ub3QgY3JlYXRlIGJhZ2dhZ2UgbWV0YWRhdGEgZnJvbSB1bmtub3duIHR5cGU6IFwiICsgdHlwZW9mIHN0cik7XG4gICAgICAgIHN0ciA9ICcnO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBfX1RZUEVfXzogYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wsXG4gICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9LFxuICAgIH07XG59XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgZGVmYXVsdFRleHRNYXBHZXR0ZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoY2Fycmllciwga2V5KSB7XG4gICAgICAgIGlmIChjYXJyaWVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhcnJpZXJba2V5XTtcbiAgICB9LFxuICAgIGtleXM6IGZ1bmN0aW9uIChjYXJyaWVyKSB7XG4gICAgICAgIGlmIChjYXJyaWVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY2Fycmllcik7XG4gICAgfSxcbn07XG52YXIgZGVmYXVsdFRleHRNYXBTZXR0ZXIgPSB7XG4gICAgc2V0OiBmdW5jdGlvbiAoY2Fycmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoY2FycmllciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2FycmllcltrZXldID0gdmFsdWU7XG4gICAgfSxcbn07XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIE5vLW9wIGltcGxlbWVudGF0aW9ucyBvZiB7QGxpbmsgVGV4dE1hcFByb3BhZ2F0b3J9LlxuICovXG52YXIgTm9vcFRleHRNYXBQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BUZXh0TWFwUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgLyoqIE5vb3AgaW5qZWN0IGZ1bmN0aW9uIGRvZXMgbm90aGluZyAqL1xuICAgIE5vb3BUZXh0TWFwUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKF9jb250ZXh0LCBfY2FycmllcikgeyB9O1xuICAgIC8qKiBOb29wIGV4dHJhY3QgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGFuZCByZXR1cm5zIHRoZSBpbnB1dCBjb250ZXh0ICovXG4gICAgTm9vcFRleHRNYXBQcm9wYWdhdG9yLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIF9jYXJyaWVyKSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH07XG4gICAgTm9vcFRleHRNYXBQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9O1xuICAgIHJldHVybiBOb29wVGV4dE1hcFByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBCYWdnYWdlIGtleVxuICovXG52YXIgQkFHR0FHRV9LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IEJhZ2dhZ2UgS2V5Jyk7XG4vKipcbiAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGJhZ2dhZ2UgZnJvbSB0aGUgZ2l2ZW4gY29udGV4dFxuICpcbiAqIEBwYXJhbSB7Q29udGV4dH0gQ29udGV4dCB0aGF0IG1hbmFnZSBhbGwgY29udGV4dCB2YWx1ZXNcbiAqIEByZXR1cm5zIHtCYWdnYWdlfSBFeHRyYWN0ZWQgYmFnZ2FnZSBmcm9tIHRoZSBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEJhZ2dhZ2UoY29udGV4dCkge1xuICAgIHJldHVybiBjb250ZXh0LmdldFZhbHVlKEJBR0dBR0VfS0VZKSB8fCB1bmRlZmluZWQ7XG59XG4vKipcbiAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGJhZ2dhZ2UgZnJvbSB0aGUgYWN0aXZlL2N1cnJlbnQgY29udGV4dFxuICpcbiAqIEByZXR1cm5zIHtCYWdnYWdlfSBFeHRyYWN0ZWQgYmFnZ2FnZSBmcm9tIHRoZSBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEFjdGl2ZUJhZ2dhZ2UoKSB7XG4gICAgcmV0dXJuIGdldEJhZ2dhZ2UoQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpLmFjdGl2ZSgpKTtcbn1cbi8qKlxuICogU3RvcmUgYSBiYWdnYWdlIGluIHRoZSBnaXZlbiBjb250ZXh0XG4gKlxuICogQHBhcmFtIHtDb250ZXh0fSBDb250ZXh0IHRoYXQgbWFuYWdlIGFsbCBjb250ZXh0IHZhbHVlc1xuICogQHBhcmFtIHtCYWdnYWdlfSBiYWdnYWdlIHRoYXQgd2lsbCBiZSBzZXQgaW4gdGhlIGFjdHVhbCBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIHNldEJhZ2dhZ2UoY29udGV4dCwgYmFnZ2FnZSkge1xuICAgIHJldHVybiBjb250ZXh0LnNldFZhbHVlKEJBR0dBR0VfS0VZLCBiYWdnYWdlKTtcbn1cbi8qKlxuICogRGVsZXRlIHRoZSBiYWdnYWdlIHN0b3JlZCBpbiB0aGUgZ2l2ZW4gY29udGV4dFxuICpcbiAqIEBwYXJhbSB7Q29udGV4dH0gQ29udGV4dCB0aGF0IG1hbmFnZSBhbGwgY29udGV4dCB2YWx1ZXNcbiAqL1xuZnVuY3Rpb24gZGVsZXRlQmFnZ2FnZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGNvbnRleHQuZGVsZXRlVmFsdWUoQkFHR0FHRV9LRVkpO1xufVxuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIEFQSV9OQU1FID0gJ3Byb3BhZ2F0aW9uJztcbnZhciBOT09QX1RFWFRfTUFQX1BST1BBR0FUT1IgPSBuZXcgTm9vcFRleHRNYXBQcm9wYWdhdG9yKCk7XG4vKipcbiAqIFNpbmdsZXRvbiBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyB0aGUgZW50cnkgcG9pbnQgdG8gdGhlIE9wZW5UZWxlbWV0cnkgUHJvcGFnYXRpb24gQVBJXG4gKi9cbnZhciBQcm9wYWdhdGlvbkFQSSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKiogRW1wdHkgcHJpdmF0ZSBjb25zdHJ1Y3RvciBwcmV2ZW50cyBlbmQgdXNlcnMgZnJvbSBjb25zdHJ1Y3RpbmcgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEFQSSAqL1xuICAgIGZ1bmN0aW9uIFByb3BhZ2F0aW9uQVBJKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUJhZ2dhZ2UgPSBjcmVhdGVCYWdnYWdlO1xuICAgICAgICB0aGlzLmdldEJhZ2dhZ2UgPSBnZXRCYWdnYWdlO1xuICAgICAgICB0aGlzLmdldEFjdGl2ZUJhZ2dhZ2UgPSBnZXRBY3RpdmVCYWdnYWdlO1xuICAgICAgICB0aGlzLnNldEJhZ2dhZ2UgPSBzZXRCYWdnYWdlO1xuICAgICAgICB0aGlzLmRlbGV0ZUJhZ2dhZ2UgPSBkZWxldGVCYWdnYWdlO1xuICAgIH1cbiAgICAvKiogR2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIFByb3BhZ2F0b3IgQVBJICovXG4gICAgUHJvcGFnYXRpb25BUEkuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IFByb3BhZ2F0aW9uQVBJKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBjdXJyZW50IHByb3BhZ2F0b3IuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wYWdhdG9yIHdhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCwgZWxzZSBmYWxzZVxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5zZXRHbG9iYWxQcm9wYWdhdG9yID0gZnVuY3Rpb24gKHByb3BhZ2F0b3IpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyR2xvYmFsKEFQSV9OQU1FLCBwcm9wYWdhdG9yLCBEaWFnQVBJLmluc3RhbmNlKCkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSW5qZWN0IGNvbnRleHQgaW50byBhIGNhcnJpZXIgdG8gYmUgcHJvcGFnYXRlZCBpbnRlci1wcm9jZXNzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IGNhcnJ5aW5nIHRyYWNpbmcgZGF0YSB0byBpbmplY3RcbiAgICAgKiBAcGFyYW0gY2FycmllciBjYXJyaWVyIHRvIGluamVjdCBjb250ZXh0IGludG9cbiAgICAgKiBAcGFyYW0gc2V0dGVyIEZ1bmN0aW9uIHVzZWQgdG8gc2V0IHZhbHVlcyBvbiB0aGUgY2FycmllclxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKSB7XG4gICAgICAgIGlmIChzZXR0ZXIgPT09IHZvaWQgMCkgeyBzZXR0ZXIgPSBkZWZhdWx0VGV4dE1hcFNldHRlcjsgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmluamVjdChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRXh0cmFjdCBjb250ZXh0IGZyb20gYSBjYXJyaWVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHdoaWNoIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRleHQgd2lsbCBpbmhlcml0IGZyb21cbiAgICAgKiBAcGFyYW0gY2FycmllciBDYXJyaWVyIHRvIGV4dHJhY3QgY29udGV4dCBmcm9tXG4gICAgICogQHBhcmFtIGdldHRlciBGdW5jdGlvbiB1c2VkIHRvIGV4dHJhY3Qga2V5cyBmcm9tIGEgY2FycmllclxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcikge1xuICAgICAgICBpZiAoZ2V0dGVyID09PSB2b2lkIDApIHsgZ2V0dGVyID0gZGVmYXVsdFRleHRNYXBHZXR0ZXI7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5leHRyYWN0KGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBmaWVsZHMgd2hpY2ggbWF5IGJlIHVzZWQgYnkgdGhlIHByb3BhZ2F0b3IuXG4gICAgICovXG4gICAgUHJvcGFnYXRpb25BUEkucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5maWVsZHMoKTtcbiAgICB9O1xuICAgIC8qKiBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wYWdhdG9yICovXG4gICAgUHJvcGFnYXRpb25BUEkucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHVucmVnaXN0ZXJHbG9iYWwoQVBJX05BTUUsIERpYWdBUEkuaW5zdGFuY2UoKSk7XG4gICAgfTtcbiAgICBQcm9wYWdhdGlvbkFQSS5wcm90b3R5cGUuX2dldEdsb2JhbFByb3BhZ2F0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBnZXRHbG9iYWwoQVBJX05BTUUpIHx8IE5PT1BfVEVYVF9NQVBfUFJPUEFHQVRPUjtcbiAgICB9O1xuICAgIHJldHVybiBQcm9wYWdhdGlvbkFQSTtcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBTcGxpdCBtb2R1bGUtbGV2ZWwgdmFyaWFibGUgZGVmaW5pdGlvbiBpbnRvIHNlcGFyYXRlIGZpbGVzIHRvIGFsbG93XG4vLyB0cmVlLXNoYWtpbmcgb24gZWFjaCBhcGkgaW5zdGFuY2UuXG4vKiogRW50cnlwb2ludCBmb3IgcHJvcGFnYXRpb24gQVBJICovXG52YXIgcHJvcGFnYXRpb24gPSBQcm9wYWdhdGlvbkFQSS5nZXRJbnN0YW5jZSgpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gVXBkYXRlcyB0byB0aGlzIGZpbGUgc2hvdWxkIGFsc28gYmUgcmVwbGljYXRlZCB0byBAb3BlbnRlbGVtZXRyeS9hcGkgdG9vLlxuLyoqXG4gKiAtIGdsb2JhbFRoaXMgKE5ldyBzdGFuZGFyZClcbiAqIC0gc2VsZiAoV2lsbCByZXR1cm4gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlIGZvciBzdXBwb3J0ZWQgYnJvd3NlcnMpXG4gKiAtIHdpbmRvdyAoZmFsbGJhY2sgZm9yIG9sZGVyIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zKVxuICogLSBnbG9iYWwgKE5vZGVKUyBpbXBsZW1lbnRhdGlvbilcbiAqIC0gPG9iamVjdD4gKFdoZW4gYWxsIGVsc2UgZmFpbHMpXG4gKi9cbi8qKiBvbmx5IGdsb2JhbHMgdGhhdCBjb21tb24gdG8gbm9kZSBhbmQgYnJvd3NlcnMgYXJlIGFsbG93ZWQgKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBub2RlL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL2VzLWJ1aWx0aW5zLCBuby11bmRlZlxudmFyIF9nbG9iYWxUaGlzID0gdHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnXG4gICAgPyBnbG9iYWxUaGlzXG4gICAgOiB0eXBlb2Ygc2VsZiA9PT0gJ29iamVjdCdcbiAgICAgICAgPyBzZWxmXG4gICAgICAgIDogdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgID8gd2luZG93XG4gICAgICAgICAgICA6IHR5cGVvZiBnbG9iYWwgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgPyBnbG9iYWxcbiAgICAgICAgICAgICAgICA6IHt9O1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIG90cGVyZm9ybWFuY2UgPSBwZXJmb3JtYW5jZTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRE8gTk9UIEVESVQsIHRoaXMgaXMgYW4gQXV0by1nZW5lcmF0ZWQgZmlsZSBmcm9tIHNjcmlwdHMvc2VtY29udi90ZW1wbGF0ZXMvL3RlbXBsYXRlcy9TZW1hbnRpY0F0dHJpYnV0ZXMudHMuajJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb25zdGFudCB2YWx1ZXMgZm9yIFNlbWFudGljQXR0cmlidXRlc1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9BV1NfTEFNQkRBX0lOVk9LRURfQVJOID0gJ2F3cy5sYW1iZGEuaW52b2tlZF9hcm4nO1xudmFyIFRNUF9EQl9TWVNURU0gPSAnZGIuc3lzdGVtJztcbnZhciBUTVBfREJfQ09OTkVDVElPTl9TVFJJTkcgPSAnZGIuY29ubmVjdGlvbl9zdHJpbmcnO1xudmFyIFRNUF9EQl9VU0VSID0gJ2RiLnVzZXInO1xudmFyIFRNUF9EQl9KREJDX0RSSVZFUl9DTEFTU05BTUUgPSAnZGIuamRiYy5kcml2ZXJfY2xhc3NuYW1lJztcbnZhciBUTVBfREJfTkFNRSA9ICdkYi5uYW1lJztcbnZhciBUTVBfREJfU1RBVEVNRU5UID0gJ2RiLnN0YXRlbWVudCc7XG52YXIgVE1QX0RCX09QRVJBVElPTiA9ICdkYi5vcGVyYXRpb24nO1xudmFyIFRNUF9EQl9NU1NRTF9JTlNUQU5DRV9OQU1FID0gJ2RiLm1zc3FsLmluc3RhbmNlX25hbWUnO1xudmFyIFRNUF9EQl9DQVNTQU5EUkFfS0VZU1BBQ0UgPSAnZGIuY2Fzc2FuZHJhLmtleXNwYWNlJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX1BBR0VfU0laRSA9ICdkYi5jYXNzYW5kcmEucGFnZV9zaXplJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMID0gJ2RiLmNhc3NhbmRyYS5jb25zaXN0ZW5jeV9sZXZlbCc7XG52YXIgVE1QX0RCX0NBU1NBTkRSQV9UQUJMRSA9ICdkYi5jYXNzYW5kcmEudGFibGUnO1xudmFyIFRNUF9EQl9DQVNTQU5EUkFfSURFTVBPVEVOQ0UgPSAnZGIuY2Fzc2FuZHJhLmlkZW1wb3RlbmNlJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVCA9ICdkYi5jYXNzYW5kcmEuc3BlY3VsYXRpdmVfZXhlY3V0aW9uX2NvdW50JztcbnZhciBUTVBfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0lEID0gJ2RiLmNhc3NhbmRyYS5jb29yZGluYXRvci5pZCc7XG52YXIgVE1QX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9EQyA9ICdkYi5jYXNzYW5kcmEuY29vcmRpbmF0b3IuZGMnO1xudmFyIFRNUF9EQl9IQkFTRV9OQU1FU1BBQ0UgPSAnZGIuaGJhc2UubmFtZXNwYWNlJztcbnZhciBUTVBfREJfUkVESVNfREFUQUJBU0VfSU5ERVggPSAnZGIucmVkaXMuZGF0YWJhc2VfaW5kZXgnO1xudmFyIFRNUF9EQl9NT05HT0RCX0NPTExFQ1RJT04gPSAnZGIubW9uZ29kYi5jb2xsZWN0aW9uJztcbnZhciBUTVBfREJfU1FMX1RBQkxFID0gJ2RiLnNxbC50YWJsZSc7XG52YXIgVE1QX0VYQ0VQVElPTl9UWVBFID0gJ2V4Y2VwdGlvbi50eXBlJztcbnZhciBUTVBfRVhDRVBUSU9OX01FU1NBR0UgPSAnZXhjZXB0aW9uLm1lc3NhZ2UnO1xudmFyIFRNUF9FWENFUFRJT05fU1RBQ0tUUkFDRSA9ICdleGNlcHRpb24uc3RhY2t0cmFjZSc7XG52YXIgVE1QX0VYQ0VQVElPTl9FU0NBUEVEID0gJ2V4Y2VwdGlvbi5lc2NhcGVkJztcbnZhciBUTVBfRkFBU19UUklHR0VSID0gJ2ZhYXMudHJpZ2dlcic7XG52YXIgVE1QX0ZBQVNfRVhFQ1VUSU9OID0gJ2ZhYXMuZXhlY3V0aW9uJztcbnZhciBUTVBfRkFBU19ET0NVTUVOVF9DT0xMRUNUSU9OID0gJ2ZhYXMuZG9jdW1lbnQuY29sbGVjdGlvbic7XG52YXIgVE1QX0ZBQVNfRE9DVU1FTlRfT1BFUkFUSU9OID0gJ2ZhYXMuZG9jdW1lbnQub3BlcmF0aW9uJztcbnZhciBUTVBfRkFBU19ET0NVTUVOVF9USU1FID0gJ2ZhYXMuZG9jdW1lbnQudGltZSc7XG52YXIgVE1QX0ZBQVNfRE9DVU1FTlRfTkFNRSA9ICdmYWFzLmRvY3VtZW50Lm5hbWUnO1xudmFyIFRNUF9GQUFTX1RJTUUgPSAnZmFhcy50aW1lJztcbnZhciBUTVBfRkFBU19DUk9OID0gJ2ZhYXMuY3Jvbic7XG52YXIgVE1QX0ZBQVNfQ09MRFNUQVJUID0gJ2ZhYXMuY29sZHN0YXJ0JztcbnZhciBUTVBfRkFBU19JTlZPS0VEX05BTUUgPSAnZmFhcy5pbnZva2VkX25hbWUnO1xudmFyIFRNUF9GQUFTX0lOVk9LRURfUFJPVklERVIgPSAnZmFhcy5pbnZva2VkX3Byb3ZpZGVyJztcbnZhciBUTVBfRkFBU19JTlZPS0VEX1JFR0lPTiA9ICdmYWFzLmludm9rZWRfcmVnaW9uJztcbnZhciBUTVBfTkVUX1RSQU5TUE9SVCA9ICduZXQudHJhbnNwb3J0JztcbnZhciBUTVBfTkVUX1BFRVJfSVAgPSAnbmV0LnBlZXIuaXAnO1xudmFyIFRNUF9ORVRfUEVFUl9QT1JUID0gJ25ldC5wZWVyLnBvcnQnO1xudmFyIFRNUF9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xudmFyIFRNUF9ORVRfSE9TVF9JUCA9ICduZXQuaG9zdC5pcCc7XG52YXIgVE1QX05FVF9IT1NUX1BPUlQgPSAnbmV0Lmhvc3QucG9ydCc7XG52YXIgVE1QX05FVF9IT1NUX05BTUUgPSAnbmV0Lmhvc3QubmFtZSc7XG52YXIgVE1QX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSA9ICduZXQuaG9zdC5jb25uZWN0aW9uLnR5cGUnO1xudmFyIFRNUF9ORVRfSE9TVF9DT05ORUNUSU9OX1NVQlRZUEUgPSAnbmV0Lmhvc3QuY29ubmVjdGlvbi5zdWJ0eXBlJztcbnZhciBUTVBfTkVUX0hPU1RfQ0FSUklFUl9OQU1FID0gJ25ldC5ob3N0LmNhcnJpZXIubmFtZSc7XG52YXIgVE1QX05FVF9IT1NUX0NBUlJJRVJfTUNDID0gJ25ldC5ob3N0LmNhcnJpZXIubWNjJztcbnZhciBUTVBfTkVUX0hPU1RfQ0FSUklFUl9NTkMgPSAnbmV0Lmhvc3QuY2Fycmllci5tbmMnO1xudmFyIFRNUF9ORVRfSE9TVF9DQVJSSUVSX0lDQyA9ICduZXQuaG9zdC5jYXJyaWVyLmljYyc7XG52YXIgVE1QX1BFRVJfU0VSVklDRSA9ICdwZWVyLnNlcnZpY2UnO1xudmFyIFRNUF9FTkRVU0VSX0lEID0gJ2VuZHVzZXIuaWQnO1xudmFyIFRNUF9FTkRVU0VSX1JPTEUgPSAnZW5kdXNlci5yb2xlJztcbnZhciBUTVBfRU5EVVNFUl9TQ09QRSA9ICdlbmR1c2VyLnNjb3BlJztcbnZhciBUTVBfVEhSRUFEX0lEID0gJ3RocmVhZC5pZCc7XG52YXIgVE1QX1RIUkVBRF9OQU1FID0gJ3RocmVhZC5uYW1lJztcbnZhciBUTVBfQ09ERV9GVU5DVElPTiA9ICdjb2RlLmZ1bmN0aW9uJztcbnZhciBUTVBfQ09ERV9OQU1FU1BBQ0UgPSAnY29kZS5uYW1lc3BhY2UnO1xudmFyIFRNUF9DT0RFX0ZJTEVQQVRIID0gJ2NvZGUuZmlsZXBhdGgnO1xudmFyIFRNUF9DT0RFX0xJTkVOTyA9ICdjb2RlLmxpbmVubyc7XG52YXIgVE1QX0hUVFBfTUVUSE9EID0gJ2h0dHAubWV0aG9kJztcbnZhciBUTVBfSFRUUF9VUkwgPSAnaHR0cC51cmwnO1xudmFyIFRNUF9IVFRQX1RBUkdFVCA9ICdodHRwLnRhcmdldCc7XG52YXIgVE1QX0hUVFBfSE9TVCA9ICdodHRwLmhvc3QnO1xudmFyIFRNUF9IVFRQX1NDSEVNRSA9ICdodHRwLnNjaGVtZSc7XG52YXIgVE1QX0hUVFBfU1RBVFVTX0NPREUgPSAnaHR0cC5zdGF0dXNfY29kZSc7XG52YXIgVE1QX0hUVFBfRkxBVk9SID0gJ2h0dHAuZmxhdm9yJztcbnZhciBUTVBfSFRUUF9VU0VSX0FHRU5UID0gJ2h0dHAudXNlcl9hZ2VudCc7XG52YXIgVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCA9ICdodHRwLnJlcXVlc3RfY29udGVudF9sZW5ndGgnO1xudmFyIFRNUF9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEID0gJ2h0dHAucmVxdWVzdF9jb250ZW50X2xlbmd0aF91bmNvbXByZXNzZWQnO1xudmFyIFRNUF9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIID0gJ2h0dHAucmVzcG9uc2VfY29udGVudF9sZW5ndGgnO1xudmFyIFRNUF9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCA9ICdodHRwLnJlc3BvbnNlX2NvbnRlbnRfbGVuZ3RoX3VuY29tcHJlc3NlZCc7XG52YXIgVE1QX0hUVFBfU0VSVkVSX05BTUUgPSAnaHR0cC5zZXJ2ZXJfbmFtZSc7XG52YXIgVE1QX0hUVFBfUk9VVEUgPSAnaHR0cC5yb3V0ZSc7XG52YXIgVE1QX0hUVFBfQ0xJRU5UX0lQID0gJ2h0dHAuY2xpZW50X2lwJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1RBQkxFX05BTUVTID0gJ2F3cy5keW5hbW9kYi50YWJsZV9uYW1lcyc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9DT05TVU1FRF9DQVBBQ0lUWSA9ICdhd3MuZHluYW1vZGIuY29uc3VtZWRfY2FwYWNpdHknO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfSVRFTV9DT0xMRUNUSU9OX01FVFJJQ1MgPSAnYXdzLmR5bmFtb2RiLml0ZW1fY29sbGVjdGlvbl9tZXRyaWNzJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1JFQURfQ0FQQUNJVFkgPSAnYXdzLmR5bmFtb2RiLnByb3Zpc2lvbmVkX3JlYWRfY2FwYWNpdHknO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkgPSAnYXdzLmR5bmFtb2RiLnByb3Zpc2lvbmVkX3dyaXRlX2NhcGFjaXR5JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCA9ICdhd3MuZHluYW1vZGIuY29uc2lzdGVudF9yZWFkJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04gPSAnYXdzLmR5bmFtb2RiLnByb2plY3Rpb24nO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfTElNSVQgPSAnYXdzLmR5bmFtb2RiLmxpbWl0JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUID0gJ2F3cy5keW5hbW9kYi5hdHRyaWJ1dGVzX3RvX2dldCc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FID0gJ2F3cy5keW5hbW9kYi5pbmRleF9uY