@getopenpay/openpay-js 0.5.13 → 0.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/{ExportResult-B-YLKMaU.js → ExportResult-BacsqwKA.js} +1 -1
  2. package/dist/{Resource-BZeevyoh.js → Resource-Ds5bbQ3b.js} +4 -4
  3. package/dist/SimpleSpanProcessor-0bSccE1S.js +910 -0
  4. package/dist/_commonjsHelpers-CdLE1o9f.js +30 -0
  5. package/dist/detect-resources-UwRkF4Xd.js +862 -0
  6. package/dist/{diag-api-CHLb_Weo.js → diag-api-CMlZXyyv.js} +2 -2
  7. package/dist/index-1jECpTsg.js +147 -0
  8. package/dist/index-BZEpD-f0.js +6718 -0
  9. package/dist/index-BhZy-TW3.js +430 -0
  10. package/dist/index-BmKZeOoc.js +1619 -0
  11. package/dist/index-CDdbDQxQ.js +6 -0
  12. package/dist/index-CWTkU3J-.js +18 -0
  13. package/dist/index-DFO-DCsT.js +127 -0
  14. package/dist/index-DsxDp11a.js +28 -0
  15. package/dist/index-JNJd_YS1.js +1012 -0
  16. package/dist/index-j7i6AeZa.js +7005 -0
  17. package/dist/index.d.ts +29 -4
  18. package/dist/index.es.js +2 -2
  19. package/dist/index.umd.js +45 -45
  20. package/dist/lifecycle-D1BdEbZs.js +119 -0
  21. package/dist/{metrics-api-ClKmMX3Y.js → metrics-api-C9pRFfr-.js} +2 -2
  22. package/dist/sdk-info-ChuKu8zW.js +285 -0
  23. package/dist/suppress-tracing-B94rObkn.js +17 -0
  24. package/dist/url-CdPstDG9.js +798 -0
  25. package/dist/utils--M6ihaNw.js +101 -0
  26. package/dist/utils-De78ey-v.js +12 -0
  27. package/dist/utils-VJ-0MC7c.js +270 -0
  28. package/package.json +4 -4
  29. package/dist/SimpleSpanProcessor-CwJD-GjM.js +0 -957
  30. package/dist/_commonjsHelpers-f76XedMs.js +0 -25
  31. package/dist/detect-resources-BatabDmW.js +0 -854
  32. package/dist/index-ByaN1AdQ.js +0 -6685
  33. package/dist/index-CU4AI3HW.js +0 -52
  34. package/dist/index-Cb34s3AM.js +0 -1599
  35. package/dist/index-CmtkHZgE.js +0 -330
  36. package/dist/index-CtZ-xuHu.js +0 -7041
  37. package/dist/index-D5OCmVN-.js +0 -19
  38. package/dist/index-DLJd6nUV.js +0 -150
  39. package/dist/index-DjekHBls.js +0 -431
  40. package/dist/index-DoKHV9rR.js +0 -130
  41. package/dist/index-_ZTp3kCj.js +0 -830
  42. package/dist/lifecycle-BjQ-7GLm.js +0 -119
  43. package/dist/sdk-info-DYuuxEVK.js +0 -484
  44. package/dist/url-BAeEv8aD.js +0 -797
  45. package/dist/utils--qqdHZ_b.js +0 -142
  46. package/dist/utils-Bf8wDuNo.js +0 -381
  47. package/dist/utils-CX5YT7yI.js +0 -14
@@ -1,142 +0,0 @@
1
- import { S as C, a as p, h as _, t as O, u as h } from "./url-BAeEv8aD.js";
2
- var T;
3
- (function(t) {
4
- t.CONNECT_END = "connectEnd", t.CONNECT_START = "connectStart", t.DECODED_BODY_SIZE = "decodedBodySize", t.DOM_COMPLETE = "domComplete", t.DOM_CONTENT_LOADED_EVENT_END = "domContentLoadedEventEnd", t.DOM_CONTENT_LOADED_EVENT_START = "domContentLoadedEventStart", t.DOM_INTERACTIVE = "domInteractive", t.DOMAIN_LOOKUP_END = "domainLookupEnd", t.DOMAIN_LOOKUP_START = "domainLookupStart", t.ENCODED_BODY_SIZE = "encodedBodySize", t.FETCH_START = "fetchStart", t.LOAD_EVENT_END = "loadEventEnd", t.LOAD_EVENT_START = "loadEventStart", t.NAVIGATION_START = "navigationStart", t.REDIRECT_END = "redirectEnd", t.REDIRECT_START = "redirectStart", t.REQUEST_START = "requestStart", t.RESPONSE_END = "responseEnd", t.RESPONSE_START = "responseStart", t.SECURE_CONNECTION_START = "secureConnectionStart", t.UNLOAD_EVENT_END = "unloadEventEnd", t.UNLOAD_EVENT_START = "unloadEventStart";
5
- })(T || (T = {}));
6
- var v;
7
- function L() {
8
- return v || (v = document.createElement("a")), v;
9
- }
10
- function D(t, n) {
11
- return n in t;
12
- }
13
- function S(t, n, e, d) {
14
- var E = void 0, o = void 0;
15
- D(e, n) && typeof e[n] == "number" && (E = e[n]);
16
- var a = d || T.FETCH_START;
17
- if (D(e, a) && typeof e[a] == "number" && (o = e[a]), E !== void 0 && o !== void 0 && E >= o)
18
- return t.addEvent(n, E), t;
19
- }
20
- function x(t, n, e) {
21
- e === void 0 && (e = !1), e || (S(t, T.FETCH_START, n), S(t, T.DOMAIN_LOOKUP_START, n), S(t, T.DOMAIN_LOOKUP_END, n), S(t, T.CONNECT_START, n), D(n, "name") && n.name.startsWith("https:") && S(t, T.SECURE_CONNECTION_START, n), S(t, T.CONNECT_END, n), S(t, T.REQUEST_START, n), S(t, T.RESPONSE_START, n), S(t, T.RESPONSE_END, n));
22
- var d = n[T.ENCODED_BODY_SIZE];
23
- d !== void 0 && t.setAttribute(C, d);
24
- var E = n[T.DECODED_BODY_SIZE];
25
- E !== void 0 && d !== E && t.setAttribute(p, E);
26
- }
27
- function I(t) {
28
- return t.slice().sort(function(n, e) {
29
- var d = n[T.FETCH_START], E = e[T.FETCH_START];
30
- return d > E ? 1 : d < E ? -1 : 0;
31
- });
32
- }
33
- function A() {
34
- return typeof location < "u" ? location.origin : void 0;
35
- }
36
- function b(t, n, e, d, E, o) {
37
- E === void 0 && (E = /* @__PURE__ */ new WeakSet());
38
- var a = R(t);
39
- t = a.toString();
40
- var u = c(t, n, e, d, E, o);
41
- if (u.length === 0)
42
- return {
43
- mainRequest: void 0
44
- };
45
- if (u.length === 1)
46
- return {
47
- mainRequest: u[0]
48
- };
49
- var i = I(u);
50
- if (a.origin !== A() && i.length > 1) {
51
- var r = i[0], N = y(i, r[T.RESPONSE_END], e), f = r[T.RESPONSE_END], l = N[T.FETCH_START];
52
- return l < f && (N = r, r = void 0), {
53
- corsPreFlightRequest: r,
54
- mainRequest: N
55
- };
56
- } else
57
- return {
58
- mainRequest: u[0]
59
- };
60
- }
61
- function y(t, n, e) {
62
- for (var d = _(e), E = _(O(n)), o = t[1], a, u = t.length, i = 1; i < u; i++) {
63
- var r = t[i], N = _(O(r[T.FETCH_START])), f = _(O(r[T.RESPONSE_END])), l = d - f;
64
- N >= E && (!a || l < a) && (a = l, o = r);
65
- }
66
- return o;
67
- }
68
- function c(t, n, e, d, E, o) {
69
- var a = _(n), u = _(e), i = d.filter(function(r) {
70
- var N = _(O(r[T.FETCH_START])), f = _(O(r[T.RESPONSE_END]));
71
- return r.initiatorType.toLowerCase() === (o || "xmlhttprequest") && r.name === t && N >= a && f <= u;
72
- });
73
- return i.length > 0 && (i = i.filter(function(r) {
74
- return !E.has(r);
75
- })), i;
76
- }
77
- function R(t) {
78
- if (typeof URL == "function")
79
- return new URL(t, typeof document < "u" ? document.baseURI : typeof location < "u" ? location.href : void 0);
80
- var n = L();
81
- return n.href = t, n;
82
- }
83
- function B(t) {
84
- var n = R(t);
85
- return n.href;
86
- }
87
- function M(t, n) {
88
- if (t.nodeType === Node.DOCUMENT_NODE)
89
- return "/";
90
- var e = H(t, n);
91
- if (n && e.indexOf("@id") > 0)
92
- return e;
93
- var d = "";
94
- return t.parentNode && (d += M(t.parentNode, !1)), d += e, d;
95
- }
96
- function U(t) {
97
- if (!t.parentNode)
98
- return 0;
99
- var n = [t.nodeType];
100
- t.nodeType === Node.CDATA_SECTION_NODE && n.push(Node.TEXT_NODE);
101
- var e = Array.from(t.parentNode.childNodes);
102
- return e = e.filter(function(d) {
103
- var E = d.localName;
104
- return n.indexOf(d.nodeType) >= 0 && E === t.localName;
105
- }), e.length >= 1 ? e.indexOf(t) + 1 : 0;
106
- }
107
- function H(t, n) {
108
- var e = t.nodeType, d = U(t), E = "";
109
- if (e === Node.ELEMENT_NODE) {
110
- var o = t.getAttribute("id");
111
- if (n && o)
112
- return '//*[@id="' + o + '"]';
113
- E = t.localName;
114
- } else if (e === Node.TEXT_NODE || e === Node.CDATA_SECTION_NODE)
115
- E = "text()";
116
- else if (e === Node.COMMENT_NODE)
117
- E = "comment()";
118
- else
119
- return "";
120
- return E && d > 1 ? "/" + E + "[" + d + "]" : "/" + E;
121
- }
122
- function s(t, n) {
123
- var e = n || [];
124
- (typeof e == "string" || e instanceof RegExp) && (e = [e]);
125
- var d = R(t);
126
- return d.origin === A() ? !0 : e.some(function(E) {
127
- return h(t, E);
128
- });
129
- }
130
- export {
131
- T as P,
132
- S as a,
133
- x as b,
134
- b as c,
135
- I as d,
136
- M as g,
137
- D as h,
138
- B as n,
139
- R as p,
140
- s
141
- };
142
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidXRpbHMtIX57MDA4fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFMgYXMgU0VNQVRUUlNfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSCwgYSBhcyBTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCwgaCBhcyBoclRpbWVUb05hbm9zZWNvbmRzLCB0IGFzIHRpbWVJbnB1dFRvSHJUaW1lLCB1IGFzIHVybE1hdGNoZXMgfSBmcm9tICcuL3VybC0hfnswMDl9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcztcbihmdW5jdGlvbiAoUGVyZm9ybWFuY2VUaW1pbmdOYW1lcykge1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJDT05ORUNUX0VORFwiXSA9IFwiY29ubmVjdEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJDT05ORUNUX1NUQVJUXCJdID0gXCJjb25uZWN0U3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiREVDT0RFRF9CT0RZX1NJWkVcIl0gPSBcImRlY29kZWRCb2R5U2l6ZVwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJET01fQ09NUExFVEVcIl0gPSBcImRvbUNvbXBsZXRlXCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkRPTV9DT05URU5UX0xPQURFRF9FVkVOVF9FTkRcIl0gPSBcImRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJET01fQ09OVEVOVF9MT0FERURfRVZFTlRfU1RBUlRcIl0gPSBcImRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkRPTV9JTlRFUkFDVElWRVwiXSA9IFwiZG9tSW50ZXJhY3RpdmVcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiRE9NQUlOX0xPT0tVUF9FTkRcIl0gPSBcImRvbWFpbkxvb2t1cEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJET01BSU5fTE9PS1VQX1NUQVJUXCJdID0gXCJkb21haW5Mb29rdXBTdGFydFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJFTkNPREVEX0JPRFlfU0laRVwiXSA9IFwiZW5jb2RlZEJvZHlTaXplXCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkZFVENIX1NUQVJUXCJdID0gXCJmZXRjaFN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkxPQURfRVZFTlRfRU5EXCJdID0gXCJsb2FkRXZlbnRFbmRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiTE9BRF9FVkVOVF9TVEFSVFwiXSA9IFwibG9hZEV2ZW50U3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiTkFWSUdBVElPTl9TVEFSVFwiXSA9IFwibmF2aWdhdGlvblN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIlJFRElSRUNUX0VORFwiXSA9IFwicmVkaXJlY3RFbmRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiUkVESVJFQ1RfU1RBUlRcIl0gPSBcInJlZGlyZWN0U3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiUkVRVUVTVF9TVEFSVFwiXSA9IFwicmVxdWVzdFN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIlJFU1BPTlNFX0VORFwiXSA9IFwicmVzcG9uc2VFbmRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiUkVTUE9OU0VfU1RBUlRcIl0gPSBcInJlc3BvbnNlU3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiU0VDVVJFX0NPTk5FQ1RJT05fU1RBUlRcIl0gPSBcInNlY3VyZUNvbm5lY3Rpb25TdGFydFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJVTkxPQURfRVZFTlRfRU5EXCJdID0gXCJ1bmxvYWRFdmVudEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJVTkxPQURfRVZFTlRfU1RBUlRcIl0gPSBcInVubG9hZEV2ZW50U3RhcnRcIjtcbn0pKFBlcmZvcm1hbmNlVGltaW5nTmFtZXMgfHwgKFBlcmZvcm1hbmNlVGltaW5nTmFtZXMgPSB7fSkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gVXNlZCB0byBub3JtYWxpemUgcmVsYXRpdmUgVVJMc1xudmFyIHVybE5vcm1hbGl6aW5nQW5jaG9yO1xuZnVuY3Rpb24gZ2V0VXJsTm9ybWFsaXppbmdBbmNob3IoKSB7XG4gICAgaWYgKCF1cmxOb3JtYWxpemluZ0FuY2hvcikge1xuICAgICAgICB1cmxOb3JtYWxpemluZ0FuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybE5vcm1hbGl6aW5nQW5jaG9yO1xufVxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gYmUgYWJsZSB0byB1c2UgZW51bSBhcyB0eXBlZCBrZXkgaW4gdHlwZSBhbmQgaW4gaW50ZXJmYWNlIHdoZW4gdXNpbmcgZm9yRWFjaFxuICogQHBhcmFtIG9ialxuICogQHBhcmFtIGtleVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gaGFzS2V5KG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIGtleSBpbiBvYmo7XG59XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3Igc3RhcnRpbmcgYW4gZXZlbnQgb24gc3BhbiBiYXNlZCBvbiB7QGxpbmsgUGVyZm9ybWFuY2VFbnRyaWVzfVxuICogQHBhcmFtIHNwYW5cbiAqIEBwYXJhbSBwZXJmb3JtYW5jZU5hbWUgbmFtZSBvZiBwZXJmb3JtYW5jZSBlbnRyeSBmb3IgdGltZSBzdGFydFxuICogQHBhcmFtIGVudHJpZXNcbiAqIEBwYXJhbSByZWZQZXJmTmFtZSBuYW1lIG9mIHBlcmZvcm1hbmNlIGVudHJ5IHRvIHVzZSBmb3IgcmVmZXJlbmNlXG4gKi9cbmZ1bmN0aW9uIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgcGVyZm9ybWFuY2VOYW1lLCBlbnRyaWVzLCByZWZQZXJmTmFtZSkge1xuICAgIHZhciBwZXJmVGltZSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgcmVmVGltZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaGFzS2V5KGVudHJpZXMsIHBlcmZvcm1hbmNlTmFtZSkgJiZcbiAgICAgICAgdHlwZW9mIGVudHJpZXNbcGVyZm9ybWFuY2VOYW1lXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcGVyZlRpbWUgPSBlbnRyaWVzW3BlcmZvcm1hbmNlTmFtZV07XG4gICAgfVxuICAgIHZhciByZWZOYW1lID0gcmVmUGVyZk5hbWUgfHwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5GRVRDSF9TVEFSVDtcbiAgICAvLyBVc2UgYSByZWZlcmVuY2UgdGltZSB3aGljaCBpcyB0aGUgZWFybGllc3QgcG9zc2libGUgdmFsdWUgc28gdGhhdCB0aGUgcGVyZm9ybWFuY2UgdGltaW5ncyB0aGF0IGFyZSBlYXJsaWVyIHNob3VsZCBub3QgYmUgYWRkZWRcbiAgICAvLyB1c2luZyBGRVRDSCBTVEFSVCB0aW1lIGluIGNhc2Ugbm8gcmVmZXJlbmNlIGlzIHByb3ZpZGVkXG4gICAgaWYgKGhhc0tleShlbnRyaWVzLCByZWZOYW1lKSAmJiB0eXBlb2YgZW50cmllc1tyZWZOYW1lXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmVmVGltZSA9IGVudHJpZXNbcmVmTmFtZV07XG4gICAgfVxuICAgIGlmIChwZXJmVGltZSAhPT0gdW5kZWZpbmVkICYmIHJlZlRpbWUgIT09IHVuZGVmaW5lZCAmJiBwZXJmVGltZSA+PSByZWZUaW1lKSB7XG4gICAgICAgIHNwYW4uYWRkRXZlbnQocGVyZm9ybWFuY2VOYW1lLCBwZXJmVGltZSk7XG4gICAgICAgIHJldHVybiBzcGFuO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFkZGluZyBuZXR3b3JrIGV2ZW50cyBhbmQgY29udGVudCBsZW5ndGggYXR0cmlidXRlc1xuICogQHBhcmFtIHNwYW5cbiAqIEBwYXJhbSByZXNvdXJjZVxuICogQHBhcmFtIGlnbm9yZU5ldHdvcmtFdmVudHNcbiAqL1xuZnVuY3Rpb24gYWRkU3Bhbk5ldHdvcmtFdmVudHMoc3BhbiwgcmVzb3VyY2UsIGlnbm9yZU5ldHdvcmtFdmVudHMpIHtcbiAgICBpZiAoaWdub3JlTmV0d29ya0V2ZW50cyA9PT0gdm9pZCAwKSB7IGlnbm9yZU5ldHdvcmtFdmVudHMgPSBmYWxzZTsgfVxuICAgIGlmICghaWdub3JlTmV0d29ya0V2ZW50cykge1xuICAgICAgICBhZGRTcGFuTmV0d29ya0V2ZW50KHNwYW4sIFBlcmZvcm1hbmNlVGltaW5nTmFtZXMuRkVUQ0hfU1RBUlQsIHJlc291cmNlKTtcbiAgICAgICAgYWRkU3Bhbk5ldHdvcmtFdmVudChzcGFuLCBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLkRPTUFJTl9MT09LVVBfU1RBUlQsIHJlc291cmNlKTtcbiAgICAgICAgYWRkU3Bhbk5ldHdvcmtFdmVudChzcGFuLCBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLkRPTUFJTl9MT09LVVBfRU5ELCByZXNvdXJjZSk7XG4gICAgICAgIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5DT05ORUNUX1NUQVJULCByZXNvdXJjZSk7XG4gICAgICAgIGlmIChoYXNLZXkocmVzb3VyY2UsICduYW1lJykgJiZcbiAgICAgICAgICAgIHJlc291cmNlWyduYW1lJ10uc3RhcnRzV2l0aCgnaHR0cHM6JykpIHtcbiAgICAgICAgICAgIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5TRUNVUkVfQ09OTkVDVElPTl9TVEFSVCwgcmVzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5DT05ORUNUX0VORCwgcmVzb3VyY2UpO1xuICAgICAgICBhZGRTcGFuTmV0d29ya0V2ZW50KHNwYW4sIFBlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVRVUVTVF9TVEFSVCwgcmVzb3VyY2UpO1xuICAgICAgICBhZGRTcGFuTmV0d29ya0V2ZW50KHNwYW4sIFBlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVTUE9OU0VfU1RBUlQsIHJlc291cmNlKTtcbiAgICAgICAgYWRkU3Bhbk5ldHdvcmtFdmVudChzcGFuLCBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLlJFU1BPTlNFX0VORCwgcmVzb3VyY2UpO1xuICAgIH1cbiAgICB2YXIgZW5jb2RlZExlbmd0aCA9IHJlc291cmNlW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuRU5DT0RFRF9CT0RZX1NJWkVdO1xuICAgIGlmIChlbmNvZGVkTGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoU0VNQVRUUlNfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSCwgZW5jb2RlZExlbmd0aCk7XG4gICAgfVxuICAgIHZhciBkZWNvZGVkTGVuZ3RoID0gcmVzb3VyY2VbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5ERUNPREVEX0JPRFlfU0laRV07XG4gICAgLy8gU3BlYzogTm90IHNldCBpZiB0cmFuc3BvcnQgZW5jb2Rpbmcgbm90IHVzZWQgKGluIHdoaWNoIGNhc2UgZW5jb2RlZCBhbmQgZGVjb2RlZCBzaXplcyBtYXRjaClcbiAgICBpZiAoZGVjb2RlZExlbmd0aCAhPT0gdW5kZWZpbmVkICYmIGVuY29kZWRMZW5ndGggIT09IGRlY29kZWRMZW5ndGgpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoU0VNQVRUUlNfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQsIGRlY29kZWRMZW5ndGgpO1xuICAgIH1cbn1cbi8qKlxuICogc29ydCByZXNvdXJjZXMgYnkgc3RhcnRUaW1lXG4gKiBAcGFyYW0gZmlsdGVyZWRSZXNvdXJjZXNcbiAqL1xuZnVuY3Rpb24gc29ydFJlc291cmNlcyhmaWx0ZXJlZFJlc291cmNlcykge1xuICAgIHJldHVybiBmaWx0ZXJlZFJlc291cmNlcy5zbGljZSgpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgdmFyIHZhbHVlQSA9IGFbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5GRVRDSF9TVEFSVF07XG4gICAgICAgIHZhciB2YWx1ZUIgPSBiW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuRkVUQ0hfU1RBUlRdO1xuICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZUEgPCB2YWx1ZUIpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9KTtcbn1cbi8qKiBSZXR1cm5zIHRoZSBvcmlnaW4gaWYgcHJlc2VudCAoaWYgaW4gYnJvd3NlciBjb250ZXh0KS4gKi9cbmZ1bmN0aW9uIGdldE9yaWdpbigpIHtcbiAgICByZXR1cm4gdHlwZW9mIGxvY2F0aW9uICE9PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLm9yaWdpbiA6IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogR2V0IGNsb3Nlc3QgcGVyZm9ybWFuY2UgcmVzb3VyY2UgaWdub3JpbmcgdGhlIHJlc291cmNlcyB0aGF0IGhhdmUgYmVlblxuICogYWxyZWFkeSB1c2VkLlxuICogQHBhcmFtIHNwYW5VcmxcbiAqIEBwYXJhbSBzdGFydFRpbWVIUlxuICogQHBhcmFtIGVuZFRpbWVIUlxuICogQHBhcmFtIHJlc291cmNlc1xuICogQHBhcmFtIGlnbm9yZWRSZXNvdXJjZXNcbiAqIEBwYXJhbSBpbml0aWF0b3JUeXBlXG4gKi9cbmZ1bmN0aW9uIGdldFJlc291cmNlKHNwYW5VcmwsIHN0YXJ0VGltZUhSLCBlbmRUaW1lSFIsIHJlc291cmNlcywgaWdub3JlZFJlc291cmNlcywgaW5pdGlhdG9yVHlwZSkge1xuICAgIGlmIChpZ25vcmVkUmVzb3VyY2VzID09PSB2b2lkIDApIHsgaWdub3JlZFJlc291cmNlcyA9IG5ldyBXZWFrU2V0KCk7IH1cbiAgICAvLyBkZS1yZWxhdGl2aXplIHRoZSBVUkwgYmVmb3JlIHVzYWdlIChkb2VzIG5vIGhhcm0gdG8gYWJzb2x1dGUgVVJMcylcbiAgICB2YXIgcGFyc2VkU3BhblVybCA9IHBhcnNlVXJsKHNwYW5VcmwpO1xuICAgIHNwYW5VcmwgPSBwYXJzZWRTcGFuVXJsLnRvU3RyaW5nKCk7XG4gICAgdmFyIGZpbHRlcmVkUmVzb3VyY2VzID0gZmlsdGVyUmVzb3VyY2VzRm9yU3BhbihzcGFuVXJsLCBzdGFydFRpbWVIUiwgZW5kVGltZUhSLCByZXNvdXJjZXMsIGlnbm9yZWRSZXNvdXJjZXMsIGluaXRpYXRvclR5cGUpO1xuICAgIGlmIChmaWx0ZXJlZFJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1haW5SZXF1ZXN0OiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChmaWx0ZXJlZFJlc291cmNlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1haW5SZXF1ZXN0OiBmaWx0ZXJlZFJlc291cmNlc1swXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHNvcnRlZCA9IHNvcnRSZXNvdXJjZXMoZmlsdGVyZWRSZXNvdXJjZXMpO1xuICAgIGlmIChwYXJzZWRTcGFuVXJsLm9yaWdpbiAhPT0gZ2V0T3JpZ2luKCkgJiYgc29ydGVkLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdmFyIGNvcnNQcmVGbGlnaHRSZXF1ZXN0ID0gc29ydGVkWzBdO1xuICAgICAgICB2YXIgbWFpblJlcXVlc3QgPSBmaW5kTWFpblJlcXVlc3Qoc29ydGVkLCBjb3JzUHJlRmxpZ2h0UmVxdWVzdFtQZXJmb3JtYW5jZVRpbWluZ05hbWVzLlJFU1BPTlNFX0VORF0sIGVuZFRpbWVIUik7XG4gICAgICAgIHZhciByZXNwb25zZUVuZCA9IGNvcnNQcmVGbGlnaHRSZXF1ZXN0W1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVTUE9OU0VfRU5EXTtcbiAgICAgICAgdmFyIGZldGNoU3RhcnQgPSBtYWluUmVxdWVzdFtQZXJmb3JtYW5jZVRpbWluZ05hbWVzLkZFVENIX1NUQVJUXTtcbiAgICAgICAgLy8gbm8gY29yc1ByZUZsaWdodFJlcXVlc3RcbiAgICAgICAgaWYgKGZldGNoU3RhcnQgPCByZXNwb25zZUVuZCkge1xuICAgICAgICAgICAgbWFpblJlcXVlc3QgPSBjb3JzUHJlRmxpZ2h0UmVxdWVzdDtcbiAgICAgICAgICAgIGNvcnNQcmVGbGlnaHRSZXF1ZXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3JzUHJlRmxpZ2h0UmVxdWVzdDogY29yc1ByZUZsaWdodFJlcXVlc3QsXG4gICAgICAgICAgICBtYWluUmVxdWVzdDogbWFpblJlcXVlc3QsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWFpblJlcXVlc3Q6IGZpbHRlcmVkUmVzb3VyY2VzWzBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbi8qKlxuICogV2lsbCBmaW5kIHRoZSBtYWluIHJlcXVlc3Qgc2tpcHBpbmcgdGhlIGNvcnMgcHJlIGZsaWdodCByZXF1ZXN0c1xuICogQHBhcmFtIHJlc291cmNlc1xuICogQHBhcmFtIGNvcnNQcmVGbGlnaHRSZXF1ZXN0RW5kVGltZVxuICogQHBhcmFtIHNwYW5FbmRUaW1lSFJcbiAqL1xuZnVuY3Rpb24gZmluZE1haW5SZXF1ZXN0KHJlc291cmNlcywgY29yc1ByZUZsaWdodFJlcXVlc3RFbmRUaW1lLCBzcGFuRW5kVGltZUhSKSB7XG4gICAgdmFyIHNwYW5FbmRUaW1lID0gaHJUaW1lVG9OYW5vc2Vjb25kcyhzcGFuRW5kVGltZUhSKTtcbiAgICB2YXIgbWluVGltZSA9IGhyVGltZVRvTmFub3NlY29uZHModGltZUlucHV0VG9IclRpbWUoY29yc1ByZUZsaWdodFJlcXVlc3RFbmRUaW1lKSk7XG4gICAgdmFyIG1haW5SZXF1ZXN0ID0gcmVzb3VyY2VzWzFdO1xuICAgIHZhciBiZXN0R2FwO1xuICAgIHZhciBsZW5ndGggPSByZXNvdXJjZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzW2ldO1xuICAgICAgICB2YXIgcmVzb3VyY2VTdGFydFRpbWUgPSBoclRpbWVUb05hbm9zZWNvbmRzKHRpbWVJbnB1dFRvSHJUaW1lKHJlc291cmNlW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuRkVUQ0hfU1RBUlRdKSk7XG4gICAgICAgIHZhciByZXNvdXJjZUVuZFRpbWUgPSBoclRpbWVUb05hbm9zZWNvbmRzKHRpbWVJbnB1dFRvSHJUaW1lKHJlc291cmNlW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVTUE9OU0VfRU5EXSkpO1xuICAgICAgICB2YXIgY3VycmVudEdhcCA9IHNwYW5FbmRUaW1lIC0gcmVzb3VyY2VFbmRUaW1lO1xuICAgICAgICBpZiAocmVzb3VyY2VTdGFydFRpbWUgPj0gbWluVGltZSAmJiAoIWJlc3RHYXAgfHwgY3VycmVudEdhcCA8IGJlc3RHYXApKSB7XG4gICAgICAgICAgICBiZXN0R2FwID0gY3VycmVudEdhcDtcbiAgICAgICAgICAgIG1haW5SZXF1ZXN0ID0gcmVzb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1haW5SZXF1ZXN0O1xufVxuLyoqXG4gKiBGaWx0ZXIgYWxsIHJlc291cmNlcyB0aGF0IGhhcyBzdGFydGVkIGFuZCBmaW5pc2hlZCBhY2NvcmRpbmcgdG8gc3BhbiBzdGFydCB0aW1lIGFuZCBlbmQgdGltZS5cbiAqICAgICBJdCB3aWxsIHJldHVybiB0aGUgY2xvc2VzdCByZXNvdXJjZSB0byBhIHN0YXJ0IHRpbWVcbiAqIEBwYXJhbSBzcGFuVXJsXG4gKiBAcGFyYW0gc3RhcnRUaW1lSFJcbiAqIEBwYXJhbSBlbmRUaW1lSFJcbiAqIEBwYXJhbSByZXNvdXJjZXNcbiAqIEBwYXJhbSBpZ25vcmVkUmVzb3VyY2VzXG4gKi9cbmZ1bmN0aW9uIGZpbHRlclJlc291cmNlc0ZvclNwYW4oc3BhblVybCwgc3RhcnRUaW1lSFIsIGVuZFRpbWVIUiwgcmVzb3VyY2VzLCBpZ25vcmVkUmVzb3VyY2VzLCBpbml0aWF0b3JUeXBlKSB7XG4gICAgdmFyIHN0YXJ0VGltZSA9IGhyVGltZVRvTmFub3NlY29uZHMoc3RhcnRUaW1lSFIpO1xuICAgIHZhciBlbmRUaW1lID0gaHJUaW1lVG9OYW5vc2Vjb25kcyhlbmRUaW1lSFIpO1xuICAgIHZhciBmaWx0ZXJlZFJlc291cmNlcyA9IHJlc291cmNlcy5maWx0ZXIoZnVuY3Rpb24gKHJlc291cmNlKSB7XG4gICAgICAgIHZhciByZXNvdXJjZVN0YXJ0VGltZSA9IGhyVGltZVRvTmFub3NlY29uZHModGltZUlucHV0VG9IclRpbWUocmVzb3VyY2VbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5GRVRDSF9TVEFSVF0pKTtcbiAgICAgICAgdmFyIHJlc291cmNlRW5kVGltZSA9IGhyVGltZVRvTmFub3NlY29uZHModGltZUlucHV0VG9IclRpbWUocmVzb3VyY2VbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5SRVNQT05TRV9FTkRdKSk7XG4gICAgICAgIHJldHVybiAocmVzb3VyY2UuaW5pdGlhdG9yVHlwZS50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgKGluaXRpYXRvclR5cGUgfHwgJ3htbGh0dHByZXF1ZXN0JykgJiZcbiAgICAgICAgICAgIHJlc291cmNlLm5hbWUgPT09IHNwYW5VcmwgJiZcbiAgICAgICAgICAgIHJlc291cmNlU3RhcnRUaW1lID49IHN0YXJ0VGltZSAmJlxuICAgICAgICAgICAgcmVzb3VyY2VFbmRUaW1lIDw9IGVuZFRpbWUpO1xuICAgIH0pO1xuICAgIGlmIChmaWx0ZXJlZFJlc291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZpbHRlcmVkUmVzb3VyY2VzID0gZmlsdGVyZWRSZXNvdXJjZXMuZmlsdGVyKGZ1bmN0aW9uIChyZXNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuICFpZ25vcmVkUmVzb3VyY2VzLmhhcyhyZXNvdXJjZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRSZXNvdXJjZXM7XG59XG4vKipcbiAqIFBhcnNlcyB1cmwgdXNpbmcgVVJMIGNvbnN0cnVjdG9yIG9yIGZhbGxiYWNrIHRvIGFuY2hvciBlbGVtZW50LlxuICogQHBhcmFtIHVybFxuICovXG5mdW5jdGlvbiBwYXJzZVVybCh1cmwpIHtcbiAgICBpZiAodHlwZW9mIFVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFVSTCh1cmwsIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gZG9jdW1lbnQuYmFzZVVSSVxuICAgICAgICAgICAgOiB0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnIC8vIFNvbWUgSlMgcnVudGltZXMgKGUuZy4gRGVubykgZG9uJ3QgZGVmaW5lIHRoaXNcbiAgICAgICAgICAgICAgICA/IGxvY2F0aW9uLmhyZWZcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHZhciBlbGVtZW50ID0gZ2V0VXJsTm9ybWFsaXppbmdBbmNob3IoKTtcbiAgICBlbGVtZW50LmhyZWYgPSB1cmw7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG4vKipcbiAqIFBhcnNlcyB1cmwgdXNpbmcgVVJMIGNvbnN0cnVjdG9yIG9yIGZhbGxiYWNrIHRvIGFuY2hvciBlbGVtZW50IGFuZCBzZXJpYWxpemVcbiAqIGl0IHRvIGEgc3RyaW5nLlxuICpcbiAqIFBlcmZvcm1zIHRoZSBzdGVwcyBkZXNjcmliZWQgaW4gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdXJscy1hbmQtZmV0Y2hpbmcuaHRtbCNwYXJzZS1hLXVybFxuICpcbiAqIEBwYXJhbSB1cmxcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplVXJsKHVybCkge1xuICAgIHZhciB1cmxMaWtlID0gcGFyc2VVcmwodXJsKTtcbiAgICByZXR1cm4gdXJsTGlrZS5ocmVmO1xufVxuLyoqXG4gKiBHZXQgZWxlbWVudCBYUGF0aFxuICogQHBhcmFtIHRhcmdldCAtIHRhcmdldCBlbGVtZW50XG4gKiBAcGFyYW0gb3B0aW1pc2VkIC0gd2hlbiBpZCBhdHRyaWJ1dGUgb2YgZWxlbWVudCBpcyBwcmVzZW50IHRoZSB4cGF0aCBjYW4gYmVcbiAqIHNpbXBsaWZpZWQgdG8gY29udGFpbiBpZFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuZnVuY3Rpb24gZ2V0RWxlbWVudFhQYXRoKHRhcmdldCwgb3B0aW1pc2VkKSB7XG4gICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7XG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfVxuICAgIHZhciB0YXJnZXRWYWx1ZSA9IGdldE5vZGVWYWx1ZSh0YXJnZXQsIG9wdGltaXNlZCk7XG4gICAgaWYgKG9wdGltaXNlZCAmJiB0YXJnZXRWYWx1ZS5pbmRleE9mKCdAaWQnKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldFZhbHVlO1xuICAgIH1cbiAgICB2YXIgeHBhdGggPSAnJztcbiAgICBpZiAodGFyZ2V0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgeHBhdGggKz0gZ2V0RWxlbWVudFhQYXRoKHRhcmdldC5wYXJlbnROb2RlLCBmYWxzZSk7XG4gICAgfVxuICAgIHhwYXRoICs9IHRhcmdldFZhbHVlO1xuICAgIHJldHVybiB4cGF0aDtcbn1cbi8qKlxuICogZ2V0IG5vZGUgaW5kZXggd2l0aGluIHRoZSBzaWJsaW5nc1xuICogQHBhcmFtIHRhcmdldFxuICovXG5mdW5jdGlvbiBnZXROb2RlSW5kZXgodGFyZ2V0KSB7XG4gICAgaWYgKCF0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgdmFyIGFsbG93ZWRUeXBlcyA9IFt0YXJnZXQubm9kZVR5cGVdO1xuICAgIGlmICh0YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFKSB7XG4gICAgICAgIGFsbG93ZWRUeXBlcy5wdXNoKE5vZGUuVEVYVF9OT0RFKTtcbiAgICB9XG4gICAgdmFyIGVsZW1lbnRzID0gQXJyYXkuZnJvbSh0YXJnZXQucGFyZW50Tm9kZS5jaGlsZE5vZGVzKTtcbiAgICBlbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgbG9jYWxOYW1lID0gZWxlbWVudC5sb2NhbE5hbWU7XG4gICAgICAgIHJldHVybiAoYWxsb3dlZFR5cGVzLmluZGV4T2YoZWxlbWVudC5ub2RlVHlwZSkgPj0gMCAmJlxuICAgICAgICAgICAgbG9jYWxOYW1lID09PSB0YXJnZXQubG9jYWxOYW1lKTtcbiAgICB9KTtcbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmluZGV4T2YodGFyZ2V0KSArIDE7IC8vIHhwYXRoIHN0YXJ0cyBmcm9tIDFcbiAgICB9XG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIG90aGVyIHNpbWlsYXIgY2hpbGQgeHBhdGggZG9lc24ndCBuZWVkIGluZGV4XG4gICAgcmV0dXJuIDA7XG59XG4vKipcbiAqIGdldCBub2RlIHZhbHVlIGZvciB4cGF0aFxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGltaXNlZFxuICovXG5mdW5jdGlvbiBnZXROb2RlVmFsdWUodGFyZ2V0LCBvcHRpbWlzZWQpIHtcbiAgICB2YXIgbm9kZVR5cGUgPSB0YXJnZXQubm9kZVR5cGU7XG4gICAgdmFyIGluZGV4ID0gZ2V0Tm9kZUluZGV4KHRhcmdldCk7XG4gICAgdmFyIG5vZGVWYWx1ZSA9ICcnO1xuICAgIGlmIChub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgdmFyIGlkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgaWYgKG9wdGltaXNlZCAmJiBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiLy8qW0BpZD1cXFwiXCIgKyBpZCArIFwiXFxcIl1cIjtcbiAgICAgICAgfVxuICAgICAgICBub2RlVmFsdWUgPSB0YXJnZXQubG9jYWxOYW1lO1xuICAgIH1cbiAgICBlbHNlIGlmIChub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgfHxcbiAgICAgICAgbm9kZVR5cGUgPT09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFKSB7XG4gICAgICAgIG5vZGVWYWx1ZSA9ICd0ZXh0KCknO1xuICAgIH1cbiAgICBlbHNlIGlmIChub2RlVHlwZSA9PT0gTm9kZS5DT01NRU5UX05PREUpIHtcbiAgICAgICAgbm9kZVZhbHVlID0gJ2NvbW1lbnQoKSc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIC8vIGlmIGluZGV4IGlzIDEgaXQgY2FuIGJlIG9taXR0ZWQgaW4geHBhdGhcbiAgICBpZiAobm9kZVZhbHVlICYmIGluZGV4ID4gMSkge1xuICAgICAgICByZXR1cm4gXCIvXCIgKyBub2RlVmFsdWUgKyBcIltcIiArIGluZGV4ICsgXCJdXCI7XG4gICAgfVxuICAgIHJldHVybiBcIi9cIiArIG5vZGVWYWx1ZTtcbn1cbi8qKlxuICogQ2hlY2tzIGlmIHRyYWNlIGhlYWRlcnMgc2hvdWxkIGJlIHByb3BhZ2F0ZWRcbiAqIEBwYXJhbSBzcGFuVXJsXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBzaG91bGRQcm9wYWdhdGVUcmFjZUhlYWRlcnMoc3BhblVybCwgcHJvcGFnYXRlVHJhY2VIZWFkZXJDb3JzVXJscykge1xuICAgIHZhciBwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMgPSBwcm9wYWdhdGVUcmFjZUhlYWRlckNvcnNVcmxzIHx8IFtdO1xuICAgIGlmICh0eXBlb2YgcHJvcGFnYXRlVHJhY2VIZWFkZXJVcmxzID09PSAnc3RyaW5nJyB8fFxuICAgICAgICBwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcHJvcGFnYXRlVHJhY2VIZWFkZXJVcmxzID0gW3Byb3BhZ2F0ZVRyYWNlSGVhZGVyVXJsc107XG4gICAgfVxuICAgIHZhciBwYXJzZWRTcGFuVXJsID0gcGFyc2VVcmwoc3BhblVybCk7XG4gICAgaWYgKHBhcnNlZFNwYW5Vcmwub3JpZ2luID09PSBnZXRPcmlnaW4oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMuc29tZShmdW5jdGlvbiAocHJvcGFnYXRlVHJhY2VIZWFkZXJVcmwpIHtcbiAgICAgICAgICAgIHJldHVybiB1cmxNYXRjaGVzKHNwYW5VcmwsIHByb3BhZ2F0ZVRyYWNlSGVhZGVyVXJsKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBQZXJmb3JtYW5jZVRpbWluZ05hbWVzIGFzIFAsIGFkZFNwYW5OZXR3b3JrRXZlbnQgYXMgYSwgYWRkU3Bhbk5ldHdvcmtFdmVudHMgYXMgYiwgZ2V0UmVzb3VyY2UgYXMgYywgc29ydFJlc291cmNlcyBhcyBkLCBnZXRFbGVtZW50WFBhdGggYXMgZywgaGFzS2V5IGFzIGgsIG5vcm1hbGl6ZVVybCBhcyBuLCBwYXJzZVVybCBhcyBwLCBzaG91bGRQcm9wYWdhdGVUcmFjZUhlYWRlcnMgYXMgcyB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBdUMsS0FBS0MsR0FBb0QsS0FBS0MsR0FBcUIsS0FBS0MsR0FBbUIsS0FBS0MsU0FBa0I7QUFpQnZMLElBQUlDO0FBQUEsQ0FDSCxTQUFVQSxHQUF3QjtBQUMvQixFQUFBQSxFQUF1QixjQUFpQixjQUN4Q0EsRUFBdUIsZ0JBQW1CLGdCQUMxQ0EsRUFBdUIsb0JBQXVCLG1CQUM5Q0EsRUFBdUIsZUFBa0IsZUFDekNBLEVBQXVCLCtCQUFrQyw0QkFDekRBLEVBQXVCLGlDQUFvQyw4QkFDM0RBLEVBQXVCLGtCQUFxQixrQkFDNUNBLEVBQXVCLG9CQUF1QixtQkFDOUNBLEVBQXVCLHNCQUF5QixxQkFDaERBLEVBQXVCLG9CQUF1QixtQkFDOUNBLEVBQXVCLGNBQWlCLGNBQ3hDQSxFQUF1QixpQkFBb0IsZ0JBQzNDQSxFQUF1QixtQkFBc0Isa0JBQzdDQSxFQUF1QixtQkFBc0IsbUJBQzdDQSxFQUF1QixlQUFrQixlQUN6Q0EsRUFBdUIsaUJBQW9CLGlCQUMzQ0EsRUFBdUIsZ0JBQW1CLGdCQUMxQ0EsRUFBdUIs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QThCO0FBQ3hFLE1BQUlDLElBQTJCRCxLQUFnQyxDQUFDO0FBQ2hFLEdBQUksT0FBT0MsS0FBNkIsWUFDcENBLGFBQW9DLFlBQ3BDQSxJQUEyQixDQUFDQSxDQUF3QjtBQUV4RCxNQUFJeEMsSUFBZ0JDLEVBQVNQLENBQU87QUFDcEMsU0FBSU0sRUFBYyxXQUFXUixFQUFVLElBQzVCLEtBR0FnRCxFQUF5QixLQUFLLFNBQVVDLEdBQXlCO0FBQ3BFLFdBQU8zRSxFQUFXNEIsR0FBUytDLENBQXVCO0FBQUEsRUFDdEQsQ0FBQztBQUVUOyIsCiAgIm5hbWVzIjogWyJTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIIiwgIlNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIiwgImhyVGltZVRvTmFub3NlY29uZHMiLCAidGltZUlucHV0VG9IclRpbWUiLCAidXJsTWF0Y2hlcyIsICJQZXJmb3JtYW5jZVRpbWluZ05hbWVzIiwgInVybE5vcm1hbGl6aW5nQW5jaG9yIiwgImdldFVybE5vcm1hbGl6aW5nQW5jaG9yIiwgImhhc0tleSIsICJvYmoiLCAia2V5IiwgImFkZFNwYW5OZXR3b3JrRXZlbnQiLCAic3BhbiIsICJwZXJmb3JtYW5jZU5hbWUiLCAiZW50cmllcyIsICJyZWZQZXJmTmFtZSIsICJwZXJmVGltZSIsICJyZWZUaW1lIiwgInJlZk5hbWUiLCAiYWRkU3Bhbk5ldHdvcmtFdmVudHMiLCAicmVzb3VyY2UiLCAiaWdub3JlTmV0d29ya0V2ZW50cyIsICJlbmNvZGVkTGVuZ3RoIiwgImRlY29kZWRMZW5ndGgiLCAic29ydFJlc291cmNlcyIsICJmaWx0ZXJlZFJlc291cmNlcyIsICJhIiwgImIiLCAidmFsdWVBIiwgInZhbHVlQiIsICJnZXRPcmlnaW4iLCAiZ2V0UmVzb3VyY2UiLCAic3BhblVybCIsICJzdGFydFRpbWVIUiIsICJlbmRUaW1lSFIiLCAicmVzb3VyY2VzIiwgImlnbm9yZWRSZXNvdXJjZXMiLCAiaW5pdGlhdG9yVHlwZSIsICJwYXJzZWRTcGFuVXJsIiwgInBhcnNlVXJsIiwgImZpbHRlclJlc291cmNlc0ZvclNwYW4iLCAic29ydGVkIiwgImNvcnNQcmVGbGlnaHRSZXF1ZXN0IiwgIm1haW5SZXF1ZXN0IiwgImZpbmRNYWluUmVxdWVzdCIsICJyZXNwb25zZUVuZCIsICJmZXRjaFN0YXJ0IiwgImNvcnNQcmVGbGlnaHRSZXF1ZXN0RW5kVGltZSIsICJzcGFuRW5kVGltZUhSIiwgInNwYW5FbmRUaW1lIiwgIm1pblRpbWUiLCAiYmVzdEdhcCIsICJsZW5ndGgiLCAicmVzb3VyY2VTdGFydFRpbWUiLCAicmVzb3VyY2VFbmRUaW1lIiwgImN1cnJlbnRHYXAiLCAic3RhcnRUaW1lIiwgImVuZFRpbWUiLCAidXJsIiwgImVsZW1lbnQiLCAibm9ybWFsaXplVXJsIiwgInVybExpa2UiLCAiZ2V0RWxlbWVudFhQYXRoIiwgInRhcmdldCIsICJvcHRpbWlzZWQiLCAidGFyZ2V0VmFsdWUiLCAiZ2V0Tm9kZVZhbHVlIiwgInhwYXRoIiwgImdldE5vZGVJbmRleCIsICJhbGxvd2VkVHlwZXMiLCAiZWxlbWVudHMiLCAibG9jYWxOYW1lIiwgIm5vZGVUeXBlIiwgImluZGV4IiwgIm5vZGVWYWx1ZSIsICJpZCIsICJzaG91bGRQcm9wYWdhdGVUcmFjZUhlYWRlcnMiLCAicHJvcGFnYXRlVHJhY2VIZWFkZXJDb3JzVXJscyIsICJwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMiLCAicHJvcGFnYXRlVHJhY2VIZWFkZXJVcmwiXQp9Cg==