@getopenpay/openpay-js-react 0.5.17 → 0.5.18

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 (30) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-Ci2cMsNJ-r_pjpkns.js → Resource-HFr7ikKe-BkkXR00c.js} +2 -2
  3. package/dist/SimpleSpanProcessor-CXkHxvZK-CtgJXZxx.js +910 -0
  4. package/dist/detect-resources-CrwG-OzH-B3ZitYTN.js +862 -0
  5. package/dist/diag-api-CjpUap0H-CHa67IYb.js +6 -0
  6. package/dist/{index-BE9m_H38-DZJya01O.js → index-B6cgwvwx-DMnT8m0d.js} +2 -2
  7. package/dist/index-BBPNNneM-kIn-dVHD.js +1012 -0
  8. package/dist/{index-1sGeF-S8-Cf5_9V8Q.js → index-BZ0BoexZ-CUX_5xZE.js} +2 -2
  9. package/dist/{index-925BJ6Jo-FMJz60P8.js → index-BbMdoJGB-BBMW7CtA.js} +6 -6
  10. package/dist/{index-BXyoTbrS-DGGjVY6j.js → index-D8qGXAcL-4qcWCIXD.js} +10 -10
  11. package/dist/{index-C3N5jtkQ-BnMnAIzy.js → index-DAjwRG06-CTho4gsn.js} +2 -2
  12. package/dist/{index-DHKyZPe5-DB9begqh.js → index-DHMgbwEW-n9BBoeYI.js} +23 -23
  13. package/dist/{index-CfmI3mSs-kdYEhELt.js → index-DSODCre4-DXZ7TtVV.js} +2 -2
  14. package/dist/{index-CD5ZzJ0E-BNo61tUq.js → index-DfiR_U2V-CFfpYe6F.js} +15 -15
  15. package/dist/index-Du2j-1vJ.js +9660 -0
  16. package/dist/index.d.ts +59 -0
  17. package/dist/index.js +7 -7
  18. package/dist/{metrics-api-B-98-wmH-CgGZj7qs.js → metrics-api-C4CAQNbw-C50jWnQn.js} +10 -10
  19. package/dist/suppress-tracing-BiiEFr8F-BsLEY_uR.js +17 -0
  20. package/dist/url-C62Jr65Y-DvJVmGJM.js +798 -0
  21. package/dist/{utils-DCVGrgLr-DxhyWIXT.js → utils-CBe9LQu0-rzqmNwAr.js} +9 -9
  22. package/dist/{utils-CKW-Vl9c-CCUGWG5V.js → utils-OFrrLDTb-BD_ZQVMg.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/SimpleSpanProcessor-B0eU7C8A-CjPgIH6s.js +0 -910
  25. package/dist/detect-resources-ChhXDAxq-Btymf6C7.js +0 -862
  26. package/dist/diag-api-DC4dxlqZ-DOFCnxry.js +0 -6
  27. package/dist/index-BRlq-xUA.js +0 -9354
  28. package/dist/index-v1SRbPSI-Ck3VxOS9.js +0 -1012
  29. package/dist/suppress-tracing-BuitcWA2-BFsdq8P_.js +0 -17
  30. package/dist/url-CTAMV9Fr-n8hDYbJZ.js +0 -798
@@ -1,7 +1,7 @@
1
- import { k as s } from "./metrics-api-B-98-wmH-CgGZj7qs.js";
2
- import { M as d } from "./index-BRlq-xUA.js";
3
- import { k as g } from "./utils-DCVGrgLr-DxhyWIXT.js";
4
- import { W as M, U as b, B as h } from "./utils-DCVGrgLr-DxhyWIXT.js";
1
+ import { k as s } from "./metrics-api-C4CAQNbw-C50jWnQn.js";
2
+ import { x as d } from "./index-Du2j-1vJ.js";
3
+ import { k as g } from "./utils-CBe9LQu0-rzqmNwAr.js";
4
+ import { W as x, U as b, B as h } from "./utils-CBe9LQu0-rzqmNwAr.js";
5
5
  function v(r, o, t, n) {
6
6
  for (var i = 0, a = r.length; i < a; i++) {
7
7
  var e = r[i];
@@ -20,9 +20,9 @@ function c(r) {
20
20
  };
21
21
  }
22
22
  export {
23
- M as InstrumentationBase,
23
+ x as InstrumentationBase,
24
24
  b as isWrapped,
25
25
  c as registerInstrumentations,
26
26
  h as safeExecuteInTheMiddle
27
27
  };
28
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtOTI1Qko2Sm8tIX57MDBlfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGsgfSBmcm9tICcuL21ldHJpY3MtYXBpLUItOTgtd21ILSF+ezAwZn1+LmpzJztcbmltcG9ydCB7IE0gYXMgTWUgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGsgYXMgayQxIH0gZnJvbSAnLi91dGlscy1EQ1ZHcmdMci0hfnswMGN9fi5qcyc7XG5leHBvcnQgeyBXIGFzIEluc3RydW1lbnRhdGlvbkJhc2UsIFUgYXMgaXNXcmFwcGVkLCBCIGFzIHNhZmVFeGVjdXRlSW5UaGVNaWRkbGUgfSBmcm9tICcuL3V0aWxzLURDVkdyZ0xyLSF+ezAwY31+LmpzJztcblxuZnVuY3Rpb24gbihyLCBvLCBhLCBpKSB7XG4gIGZvciAodmFyIHQgPSAwLCBzID0gci5sZW5ndGg7IHQgPCBzOyB0KyspIHtcbiAgICB2YXIgZSA9IHJbdF07XG4gICAgbyAmJiBlLnNldFRyYWNlclByb3ZpZGVyKG8pLCBhICYmIGUuc2V0TWV0ZXJQcm92aWRlcihhKSwgaSAmJiBlLnNldExvZ2dlclByb3ZpZGVyICYmIGUuc2V0TG9nZ2VyUHJvdmlkZXIoaSksIGUuZ2V0Q29uZmlnKCkuZW5hYmxlZCB8fCBlLmVuYWJsZSgpO1xuICB9XG59XG5mdW5jdGlvbiBnKHIpIHtcbiAgci5mb3JFYWNoKGZ1bmN0aW9uKG8pIHtcbiAgICByZXR1cm4gby5kaXNhYmxlKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gdShyKSB7XG4gIHZhciBvLCBhLCBpID0gci50cmFjZXJQcm92aWRlciB8fCBNZS5nZXRUcmFjZXJQcm92aWRlcigpLCB0ID0gci5tZXRlclByb3ZpZGVyIHx8IGsuZ2V0TWV0ZXJQcm92aWRlcigpLCBzID0gci5sb2dnZXJQcm92aWRlciB8fCBrJDEuZ2V0TG9nZ2VyUHJvdmlkZXIoKSwgZSA9IChhID0gKG8gPSByLmluc3RydW1lbnRhdGlvbnMpID09PSBudWxsIHx8IG8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG8uZmxhdCgpKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogW107XG4gIHJldHVybiBuKGUsIGksIHQsIHMpLCBmdW5jdGlvbigpIHtcbiAgICBnKGUpO1xuICB9O1xufVxuXG5leHBvcnQgeyB1IGFzIHJlZ2lzdGVySW5zdHJ1bWVudGF0aW9ucyB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBQUEsU0FBUztBQUNsQixTQUFTLEtBQUtDLFNBQVU7QUFDeEIsU0FBUyxLQUFLQyxTQUFXO0FBQ3pCLFNBQWMsS0FBTEMsR0FBK0IsS0FBTEMsR0FBcUIsS0FBTEMsU0FBbUM7QUFFdEYsU0FBU0MsRUFBRSxHQUFHLEdBQUdDLEdBQUdDLEdBQUc7QUFDckIsV0FBU0MsSUFBSSxHQUFHQyxJQUFJLEVBQUUsUUFBUUQsSUFBSUMsR0FBR0QsS0FBSztBQUN4QyxRQUFJLElBQUksRUFBRUEsQ0FBQztBQUNYLFNBQUssRUFBRSxrQkFBa0IsQ0FBQyxHQUFHRixLQUFLLEVBQUUsaUJBQWlCQSxDQUFDLEdBQUdDLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0JBLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTztBQUFBLEVBQ2pKO0FBQ0Y7QUFDQSxTQUFTRyxFQUFFLEdBQUc7QUFDWixJQUFFLFFBQVEsU0FBUyxHQUFHO0FBQ3BCLFdBQU8sRUFBRSxRQUFRO0FBQUEsRUFDbkIsQ0FBQztBQUNIO0FBQ0EsU0FBU0MsRUFBRSxHQUFHO0FBQ1osTUFBSSxHQUFHTCxHQUFHQyxJQUFJLEVBQUUsa0JBQWtCUCxFQUFHLGtCQUFrQixHQUFHUSxJQUFJLEVBQUUsaUJBQWlCVCxFQUFFLGlCQUFpQixHQUFHVSxJQUFJLEVBQUUsa0JBQWtCUixFQUFJLGtCQUFrQixHQUFHLEtBQUtLLEtBQUssSUFBSSxFQUFFLHNCQUFzQixRQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUUsS0FBSyxPQUFPLFFBQVFBLE1BQU0sU0FBU0EsSUFBSSxDQUFDO0FBQ3hRLFNBQU9ELEVBQUUsR0FBR0UsR0FBR0MsR0FBR0MsQ0FBQyxHQUFHLFdBQVc7QUFDL0IsSUFBQUMsRUFBRSxDQUFDO0FBQUEsRUFDTDtBQUNGOyIsCiAgIm5hbWVzIjogWyJrIiwgIk1lIiwgImskMSIsICJXIiwgIlUiLCAiQiIsICJuIiwgImEiLCAiaSIsICJ0IiwgInMiLCAiZyIsICJ1Il0KfQo=
28
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQmJNZG9KR0ItIX57MDBlfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGsgfSBmcm9tICcuL21ldHJpY3MtYXBpLUM0Q0FRTmJ3LSF+ezAwZn1+LmpzJztcbmltcG9ydCB7IHggYXMgeGUgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGsgYXMgayQxIH0gZnJvbSAnLi91dGlscy1DQmU5TFF1MC0hfnswMGN9fi5qcyc7XG5leHBvcnQgeyBXIGFzIEluc3RydW1lbnRhdGlvbkJhc2UsIFUgYXMgaXNXcmFwcGVkLCBCIGFzIHNhZmVFeGVjdXRlSW5UaGVNaWRkbGUgfSBmcm9tICcuL3V0aWxzLUNCZTlMUXUwLSF+ezAwY31+LmpzJztcblxuZnVuY3Rpb24gbihyLCBvLCBhLCBpKSB7XG4gIGZvciAodmFyIHQgPSAwLCBzID0gci5sZW5ndGg7IHQgPCBzOyB0KyspIHtcbiAgICB2YXIgZSA9IHJbdF07XG4gICAgbyAmJiBlLnNldFRyYWNlclByb3ZpZGVyKG8pLCBhICYmIGUuc2V0TWV0ZXJQcm92aWRlcihhKSwgaSAmJiBlLnNldExvZ2dlclByb3ZpZGVyICYmIGUuc2V0TG9nZ2VyUHJvdmlkZXIoaSksIGUuZ2V0Q29uZmlnKCkuZW5hYmxlZCB8fCBlLmVuYWJsZSgpO1xuICB9XG59XG5mdW5jdGlvbiBnKHIpIHtcbiAgci5mb3JFYWNoKGZ1bmN0aW9uKG8pIHtcbiAgICByZXR1cm4gby5kaXNhYmxlKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gdShyKSB7XG4gIHZhciBvLCBhLCBpID0gci50cmFjZXJQcm92aWRlciB8fCB4ZS5nZXRUcmFjZXJQcm92aWRlcigpLCB0ID0gci5tZXRlclByb3ZpZGVyIHx8IGsuZ2V0TWV0ZXJQcm92aWRlcigpLCBzID0gci5sb2dnZXJQcm92aWRlciB8fCBrJDEuZ2V0TG9nZ2VyUHJvdmlkZXIoKSwgZSA9IChhID0gKG8gPSByLmluc3RydW1lbnRhdGlvbnMpID09PSBudWxsIHx8IG8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG8uZmxhdCgpKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogW107XG4gIHJldHVybiBuKGUsIGksIHQsIHMpLCBmdW5jdGlvbigpIHtcbiAgICBnKGUpO1xuICB9O1xufVxuXG5leHBvcnQgeyB1IGFzIHJlZ2lzdGVySW5zdHJ1bWVudGF0aW9ucyB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBQUEsU0FBUztBQUNsQixTQUFTLEtBQUtDLFNBQVU7QUFDeEIsU0FBUyxLQUFLQyxTQUFXO0FBQ3pCLFNBQWMsS0FBTEMsR0FBK0IsS0FBTEMsR0FBcUIsS0FBTEMsU0FBbUM7QUFFdEYsU0FBU0MsRUFBRSxHQUFHLEdBQUdDLEdBQUdDLEdBQUc7QUFDckIsV0FBU0MsSUFBSSxHQUFHQyxJQUFJLEVBQUUsUUFBUUQsSUFBSUMsR0FBR0QsS0FBSztBQUN4QyxRQUFJLElBQUksRUFBRUEsQ0FBQztBQUNYLFNBQUssRUFBRSxrQkFBa0IsQ0FBQyxHQUFHRixLQUFLLEVBQUUsaUJBQWlCQSxDQUFDLEdBQUdDLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0JBLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTztBQUFBLEVBQ2pKO0FBQ0Y7QUFDQSxTQUFTRyxFQUFFLEdBQUc7QUFDWixJQUFFLFFBQVEsU0FBUyxHQUFHO0FBQ3BCLFdBQU8sRUFBRSxRQUFRO0FBQUEsRUFDbkIsQ0FBQztBQUNIO0FBQ0EsU0FBU0MsRUFBRSxHQUFHO0FBQ1osTUFBSSxHQUFHTCxHQUFHQyxJQUFJLEVBQUUsa0JBQWtCUCxFQUFHLGtCQUFrQixHQUFHUSxJQUFJLEVBQUUsaUJBQWlCVCxFQUFFLGlCQUFpQixHQUFHVSxJQUFJLEVBQUUsa0JBQWtCUixFQUFJLGtCQUFrQixHQUFHLEtBQUtLLEtBQUssSUFBSSxFQUFFLHNCQUFzQixRQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUUsS0FBSyxPQUFPLFFBQVFBLE1BQU0sU0FBU0EsSUFBSSxDQUFDO0FBQ3hRLFNBQU9ELEVBQUUsR0FBR0UsR0FBR0MsR0FBR0MsQ0FBQyxHQUFHLFdBQVc7QUFDL0IsSUFBQUMsRUFBRSxDQUFDO0FBQUEsRUFDTDtBQUNGOyIsCiAgIm5hbWVzIjogWyJrIiwgInhlIiwgImskMSIsICJXIiwgIlUiLCAiQiIsICJuIiwgImEiLCAiaSIsICJ0IiwgInMiLCAiZyIsICJ1Il0KfQo=
@@ -1,8 +1,8 @@
1
- import { r as D } from "./diag-api-DC4dxlqZ-DOFCnxry.js";
2
- import { J as B, q as z, Z as $, $ as W, y as v, a as X, x as Z, k as G, p as C, O as I, E as J, h as b } from "./url-CTAMV9Fr-n8hDYbJZ.js";
3
- import { B as V, U as K, W as Q } from "./utils-DCVGrgLr-DxhyWIXT.js";
4
- import { T as E, y as k, C as x, b as Y, V as tt } from "./utils-CKW-Vl9c-CCUGWG5V.js";
5
- import { M as P, T as h, e as et } from "./index-BRlq-xUA.js";
1
+ import { r as B } from "./diag-api-CjpUap0H-CHa67IYb.js";
2
+ import { J as M, q as z, Z as $, $ as W, y as v, a as X, x as Z, k as G, p as C, O as I, E as J, h as b } from "./url-C62Jr65Y-DvJVmGJM.js";
3
+ import { B as V, U as K, W as Q } from "./utils-CBe9LQu0-rzqmNwAr.js";
4
+ import { T as E, y as k, C as x, b as Y, V as tt } from "./utils-OFrrLDTb-BD_ZQVMg.js";
5
+ import { x as P, T as h, r as et } from "./index-Du2j-1vJ.js";
6
6
  var g;
7
7
  (function(o) {
8
8
  o.COMPONENT = "component", o.HTTP_ERROR_NAME = "http.error_name", o.HTTP_STATUS_TEXT = "http.status_text";
@@ -117,7 +117,7 @@ var nt = function(o, i, t, n) {
117
117
  }
118
118
  }
119
119
  return e;
120
- }, N = D.createComponentLogger({
120
+ }, N = B.createComponentLogger({
121
121
  namespace: "@opentelemetry/opentelemetry-instrumentation-fetch/utils"
122
122
  });
123
123
  function st() {
@@ -266,7 +266,7 @@ var O = "0.57.2", lt = /* @__PURE__ */ (function() {
266
266
  k(r, n, this.getConfig().ignoreNetworkEvents), r.end(n[E.RESPONSE_END]);
267
267
  }, i.prototype._addFinalSpanAttributes = function(t, n) {
268
268
  var r = x(n.url);
269
- t.setAttribute(B, n.status), n.statusText != null && t.setAttribute(g.HTTP_STATUS_TEXT, n.statusText), t.setAttribute(z, r.host), t.setAttribute($, r.protocol.replace(":", "")), typeof navigator < "u" && t.setAttribute(W, navigator.userAgent);
269
+ t.setAttribute(M, n.status), n.statusText != null && t.setAttribute(g.HTTP_STATUS_TEXT, n.statusText), t.setAttribute(z, r.host), t.setAttribute($, r.protocol.replace(":", "")), typeof navigator < "u" && t.setAttribute(W, navigator.userAgent);
270
270
  }, i.prototype._addHeaders = function(t, n) {
271
271
  if (!Y(n, this.getConfig().propagateTraceHeaderCorsUrls)) {
272
272
  var r = {};
@@ -366,8 +366,8 @@ var O = "0.57.2", lt = /* @__PURE__ */ (function() {
366
366
  if (A) {
367
367
  var H = A.getReader(), R = function() {
368
368
  H.read().then(function(m) {
369
- var M = m.done;
370
- M ? w(f, L) : R();
369
+ var D = m.done;
370
+ D ? w(f, L) : R();
371
371
  }, function(m) {
372
372
  T(f, m);
373
373
  });
@@ -427,4 +427,4 @@ var O = "0.57.2", lt = /* @__PURE__ */ (function() {
427
427
  export {
428
428
  _t as FetchInstrumentation
429
429
  };
430
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQlh5b1RiclMtIX57MDA5fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHIgfSBmcm9tICcuL2RpYWctYXBpLURDNGR4bHFaLSF+ezAwYX1+LmpzJztcbmltcG9ydCB7IEogYXMgSkEsIHEgYXMgcUEsIFogYXMgWkEsICQgYXMgJEEsIHkgYXMgeV8sIGEgYXMgWmUsIHggYXMgeEEsIGsgYXMga0EsIHAgYXMgcF8sIE8sIEUgYXMgRXIsIGggYXMgaF8gfSBmcm9tICcuL3VybC1DVEFNVjlGci0hfnswMGJ9fi5qcyc7XG5pbXBvcnQgeyBCLCBVIGFzIFUkMSwgVyB9IGZyb20gJy4vdXRpbHMtRENWR3JnTHItIX57MDBjfX4uanMnO1xuaW1wb3J0IHsgVCwgeSBhcyB5JDEsIEMsIGIgYXMgYiQxLCBWIH0gZnJvbSAnLi91dGlscy1DS1ctVmw5Yy0hfnswMDh9fi5qcyc7XG5pbXBvcnQgeyBNIGFzIE1lLCBUIGFzIFRlLCBlIGFzIGV0IH0gZnJvbSAnLi9pbmRleC0hfnswMDd9fi5qcyc7XG5cbnZhciB5O1xuKGZ1bmN0aW9uKGEpIHtcbiAgYS5DT01QT05FTlQgPSBcImNvbXBvbmVudFwiLCBhLkhUVFBfRVJST1JfTkFNRSA9IFwiaHR0cC5lcnJvcl9uYW1lXCIsIGEuSFRUUF9TVEFUVVNfVEVYVCA9IFwiaHR0cC5zdGF0dXNfdGV4dFwiO1xufSkoeSB8fCAoeSA9IHt9KSk7XG52YXIgbmUgPSBmdW5jdGlvbihhLCBvLCBlLCByKSB7XG4gIGZ1bmN0aW9uIG4odCkge1xuICAgIHJldHVybiB0IGluc3RhbmNlb2YgZSA/IHQgOiBuZXcgZShmdW5jdGlvbihpKSB7XG4gICAgICBpKHQpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKGUgfHwgKGUgPSBQcm9taXNlKSkoZnVuY3Rpb24odCwgaSkge1xuICAgIGZ1bmN0aW9uIHMoYykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShyLm5leHQoYykpO1xuICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICBpKGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmKGMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci50aHJvdyhjKSk7XG4gICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgIGkoaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoYykge1xuICAgICAgYy5kb25lID8gdChjLnZhbHVlKSA6IG4oYy52YWx1ZSkudGhlbihzLCBmKTtcbiAgICB9XG4gICAgdSgociA9IHIuYXBwbHkoYSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn0sIGFlID0gZnVuY3Rpb24oYSwgbykge1xuICB2YXIgZSA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTtcbiAgICByZXR1cm4gdFsxXTtcbiAgfSwgdHJ5czogW10sIG9wczogW10gfSwgciwgbiwgdCwgaTtcbiAgcmV0dXJuIGkgPSB7IG5leHQ6IHMoMCksIHRocm93OiBzKDEpLCByZXR1cm46IHMoMikgfSwgdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgKGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgaTtcbiAgZnVuY3Rpb24gcyh1KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGMpIHtcbiAgICAgIHJldHVybiBmKFt1LCBjXSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBmKHUpIHtcbiAgICBpZiAocikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgZm9yICg7IGU7ICkgdHJ5IHtcbiAgICAgIGlmIChyID0gMSwgbiAmJiAodCA9IHVbMF0gJiAyID8gbi5yZXR1cm4gOiB1WzBdID8gbi50aHJvdyB8fCAoKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pLCAwKSA6IG4ubmV4dCkgJiYgISh0ID0gdC5jYWxsKG4sIHVbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgIHN3aXRjaCAobiA9IDAsIHQgJiYgKHUgPSBbdVswXSAmIDIsIHQudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0ID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBlLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBlLmxhYmVsKyssIG4gPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKHQgPSBlLnRyeXMsICEodCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICBlID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIXQgfHwgdVsxXSA+IHRbMF0gJiYgdVsxXSA8IHRbM10pKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiBlLmxhYmVsIDwgdFsxXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHRbMV0sIHQgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0ICYmIGUubGFiZWwgPCB0WzJdKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdFsyXSwgZS5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0WzJdICYmIGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gby5jYWxsKGEsIGUpO1xuICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgIHUgPSBbNiwgY10sIG4gPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByID0gdCA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufSwgaWUgPSBmdW5jdGlvbihhKSB7XG4gIHZhciBvID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBlID0gbyAmJiBhW29dLCByID0gMDtcbiAgaWYgKGUpIHJldHVybiBlLmNhbGwoYSk7XG4gIGlmIChhICYmIHR5cGVvZiBhLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGEgJiYgciA+PSBhLmxlbmd0aCAmJiAoYSA9IHZvaWQgMCksIHsgdmFsdWU6IGEgJiYgYVtyKytdLCBkb25lOiAhYSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihvID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgb2UgPSBmdW5jdGlvbihhLCBvKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgYVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiBhO1xuICB2YXIgciA9IGUuY2FsbChhKSwgbiwgdCA9IFtdLCBpO1xuICB0cnkge1xuICAgIGZvciAoOyAobyA9PT0gdm9pZCAwIHx8IG8tLSA+IDApICYmICEobiA9IHIubmV4dCgpKS5kb25lOyApIHQucHVzaChuLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGkgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG4gJiYgIW4uZG9uZSAmJiAoZSA9IHIucmV0dXJuKSAmJiBlLmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChpKSB0aHJvdyBpLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdDtcbn0sIFUgPSByLmNyZWF0ZUNvbXBvbmVudExvZ2dlcih7XG4gIG5hbWVzcGFjZTogXCJAb3BlbnRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWluc3RydW1lbnRhdGlvbi1mZXRjaC91dGlsc1wiXG59KTtcbmZ1bmN0aW9uIHNlKCkge1xuICBmb3IgKHZhciBhID0gW10sIG8gPSAwOyBvIDwgYXJndW1lbnRzLmxlbmd0aDsgbysrKVxuICAgIGFbb10gPSBhcmd1bWVudHNbb107XG4gIGlmIChhWzBdIGluc3RhbmNlb2YgVVJMIHx8IHR5cGVvZiBhWzBdID09IFwic3RyaW5nXCIpIHtcbiAgICB2YXIgZSA9IGFbMV07XG4gICAgaWYgKCFlPy5ib2R5KVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChlLmJvZHkgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSkge1xuICAgICAgdmFyIHIgPSB1ZShlLmJvZHkpLCBuID0gci5ib2R5LCB0ID0gci5sZW5ndGg7XG4gICAgICByZXR1cm4gZS5ib2R5ID0gbiwgdDtcbiAgICB9IGVsc2VcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmUoZS5ib2R5KSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGkgPSBhWzBdO1xuICAgIHJldHVybiBpPy5ib2R5ID8gaS5jbG9uZSgpLnRleHQoKS50aGVuKGZ1bmN0aW9uKHMpIHtcbiAgICAgIHJldHVybiBiKHMpO1xuICAgIH0pIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHVlKGEpIHtcbiAgaWYgKCFhLnBpcGVUaHJvdWdoKVxuICAgIHJldHVybiBVLndhcm4oXCJQbGF0Zm9ybSBoYXMgUmVhZGFibGVTdHJlYW0gYnV0IG5vdCBwaXBlVGhyb3VnaCFcIiksIHtcbiAgICAgIGJvZHk6IGEsXG4gICAgICBsZW5ndGg6IFByb21pc2UucmVzb2x2ZSh2b2lkIDApXG4gICAgfTtcbiAgdmFyIG8gPSAwLCBlLCByID0gbmV3IFByb21pc2UoZnVuY3Rpb24odCkge1xuICAgIGUgPSB0O1xuICB9KSwgbiA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB9LFxuICAgIHRyYW5zZm9ybTogZnVuY3Rpb24odCwgaSkge1xuICAgICAgcmV0dXJuIG5lKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHM7XG4gICAgICAgIHJldHVybiBhZSh0aGlzLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgc3dpdGNoIChmLmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIHJldHVybiBbNCwgdF07XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHJldHVybiBzID0gZi5zZW50KCksIG8gKz0gcy5ieXRlTGVuZ3RoLCBpLmVucXVldWUodCksIFtcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGZsdXNoOiBmdW5jdGlvbigpIHtcbiAgICAgIGUobyk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBib2R5OiBhLnBpcGVUaHJvdWdoKG4pLFxuICAgIGxlbmd0aDogclxuICB9O1xufVxuZnVuY3Rpb24gZmUoYSkge1xuICBpZiAodHlwZW9mIERvY3VtZW50IDwgXCJ1XCIgJiYgYSBpbnN0YW5jZW9mIERvY3VtZW50KVxuICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvY3VtZW50KS5sZW5ndGg7XG4gIGlmIChhIGluc3RhbmNlb2YgQmxvYilcbiAgICByZXR1cm4gYS5zaXplO1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSB2b2lkIDApXG4gICAgcmV0dXJuIGEuYnl0ZUxlbmd0aDtcbiAgaWYgKGEgaW5zdGFuY2VvZiBGb3JtRGF0YSlcbiAgICByZXR1cm4gbGUoYSk7XG4gIGlmIChhIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zKVxuICAgIHJldHVybiBiKGEudG9TdHJpbmcoKSk7XG4gIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBiKGEpO1xuICBVLndhcm4oXCJ1bmtub3duIGJvZHkgdHlwZVwiKTtcbn1cbnZhciBjZSA9IG5ldyBUZXh0RW5jb2RlcigpO1xuZnVuY3Rpb24gYihhKSB7XG4gIHJldHVybiBjZS5lbmNvZGUoYSkuYnl0ZUxlbmd0aDtcbn1cbmZ1bmN0aW9uIGxlKGEpIHtcbiAgdmFyIG8sIGUsIHIgPSAwO1xuICB0cnkge1xuICAgIGZvciAodmFyIG4gPSBpZShhLmVudHJpZXMoKSksIHQgPSBuLm5leHQoKTsgIXQuZG9uZTsgdCA9IG4ubmV4dCgpKSB7XG4gICAgICB2YXIgaSA9IG9lKHQudmFsdWUsIDIpLCBzID0gaVswXSwgZiA9IGlbMV07XG4gICAgICByICs9IHMubGVuZ3RoLCBmIGluc3RhbmNlb2YgQmxvYiA/IHIgKz0gZi5zaXplIDogciArPSBmLmxlbmd0aDtcbiAgICB9XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICB0ICYmICF0LmRvbmUgJiYgKGUgPSBuLnJldHVybikgJiYgZS5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG52YXIgayA9IFwiMC41Ny4yXCIsIGRlID0gLyogQF9fUFVSRV9fICovIChmdW5jdGlvbigpIHtcbiAgdmFyIGEgPSBmdW5jdGlvbihvLCBlKSB7XG4gICAgcmV0dXJuIGEgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihyLCBuKSB7XG4gICAgICByLl9fcHJvdG9fXyA9IG47XG4gICAgfSB8fCBmdW5jdGlvbihyLCBuKSB7XG4gICAgICBmb3IgKHZhciB0IGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCB0KSAmJiAoclt0XSA9IG5bdF0pO1xuICAgIH0sIGEobywgZSk7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbihvLCBlKSB7XG4gICAgaWYgKHR5cGVvZiBlICE9IFwiZnVuY3Rpb25cIiAmJiBlICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoZSkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGEobywgZSk7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBvO1xuICAgIH1cbiAgICBvLnByb3RvdHlwZSA9IGUgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGUpIDogKHIucHJvdG90eXBlID0gZS5wcm90b3R5cGUsIG5ldyByKCkpO1xuICB9O1xufSkoKSwgaGUgPSBmdW5jdGlvbihhLCBvKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgYVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiBhO1xuICB2YXIgciA9IGUuY2FsbChhKSwgbiwgdCA9IFtdLCBpO1xuICB0cnkge1xuICAgIGZvciAoOyAobyA9PT0gdm9pZCAwIHx8IG8tLSA+IDApICYmICEobiA9IHIubmV4dCgpKS5kb25lOyApIHQucHVzaChuLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGkgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG4gJiYgIW4uZG9uZSAmJiAoZSA9IHIucmV0dXJuKSAmJiBlLmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChpKSB0aHJvdyBpLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdDtcbn0sIHBlID0gZnVuY3Rpb24oYSwgbywgZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgciA9IDAsIG4gPSBvLmxlbmd0aCwgdDsgciA8IG47IHIrKylcbiAgICAodCB8fCAhKHIgaW4gbykpICYmICh0IHx8ICh0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobywgMCwgcikpLCB0W3JdID0gb1tyXSk7XG4gIHJldHVybiBhLmNvbmNhdCh0IHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG8pKTtcbn0sIFMsIHZlID0gMzAwLCBIID0gdHlwZW9mIHByb2Nlc3MgPT0gXCJvYmplY3RcIiAmJiAoKFMgPSBwcm9jZXNzLnJlbGVhc2UpID09PSBudWxsIHx8IFMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IFMubmFtZSkgPT09IFwibm9kZVwiLCBTZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oYSkge1xuICAgIGRlKG8sIGEpO1xuICAgIGZ1bmN0aW9uIG8oZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pO1xuICAgICAgdmFyIHIgPSBhLmNhbGwodGhpcywgXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZmV0Y2hcIiwgaywgZSkgfHwgdGhpcztcbiAgICAgIHJldHVybiByLmNvbXBvbmVudCA9IFwiZmV0Y2hcIiwgci52ZXJzaW9uID0gaywgci5tb2R1bGVOYW1lID0gci5jb21wb25lbnQsIHIuX3VzZWRSZXNvdXJjZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtTZXQoKSwgci5fdGFza3NDb3VudCA9IDAsIHI7XG4gICAgfVxuICAgIHJldHVybiBvLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZENoaWxkU3BhbiA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICAgIHZhciBuID0gdGhpcy50cmFjZXIuc3RhcnRTcGFuKFwiQ09SUyBQcmVmbGlnaHRcIiwge1xuICAgICAgICBzdGFydFRpbWU6IHJbVC5GRVRDSF9TVEFSVF1cbiAgICAgIH0sIE1lLnNldFNwYW4oVGUuYWN0aXZlKCksIGUpKTtcbiAgICAgIHkkMShuLCByLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZU5ldHdvcmtFdmVudHMpLCBuLmVuZChyW1QuUkVTUE9OU0VfRU5EXSk7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZEZpbmFsU3BhbkF0dHJpYnV0ZXMgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgICB2YXIgbiA9IEMoci51cmwpO1xuICAgICAgZS5zZXRBdHRyaWJ1dGUoSkEsIHIuc3RhdHVzKSwgci5zdGF0dXNUZXh0ICE9IG51bGwgJiYgZS5zZXRBdHRyaWJ1dGUoeS5IVFRQX1NUQVRVU19URVhULCByLnN0YXR1c1RleHQpLCBlLnNldEF0dHJpYnV0ZShxQSwgbi5ob3N0KSwgZS5zZXRBdHRyaWJ1dGUoWkEsIG4ucHJvdG9jb2wucmVwbGFjZShcIjpcIiwgXCJcIikpLCB0eXBlb2YgbmF2aWdhdG9yIDwgXCJ1XCIgJiYgZS5zZXRBdHRyaWJ1dGUoJEEsIG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9hZGRIZWFkZXJzID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgaWYgKCFiJDEociwgdGhpcy5nZXRDb25maWcoKS5wcm9wYWdhdGVUcmFjZUhlYWRlckNvcnNVcmxzKSkge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBPYmplY3Qua2V5cyhuKS5sZW5ndGggPiAwICYmIHRoaXMuX2RpYWcuZGVidWcoXCJoZWFkZXJzIGluamVjdCBza2lwcGVkIGR1ZSB0byBDT1JTIHBvbGljeVwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBSZXF1ZXN0KVxuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIGUuaGVhZGVycywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24odCwgaSwgcykge1xuICAgICAgICAgICAgcmV0dXJuIHQuc2V0KGksIHR5cGVvZiBzID09IFwic3RyaW5nXCIgPyBzIDogU3RyaW5nKHMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgZWxzZSBpZiAoZS5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycylcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2UgaWYgKGUuaGVhZGVycyBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBlLmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBuLCBlLmhlYWRlcnMgfHwge30pO1xuICAgICAgfVxuICAgIH0sIG8ucHJvdG90eXBlLl9jbGVhclJlc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fdGFza3NDb3VudCA9PT0gMCAmJiB0aGlzLmdldENvbmZpZygpLmNsZWFyVGltaW5nUmVzb3VyY2VzICYmIChwZXJmb3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9jcmVhdGVTcGFuID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgdmFyIG47XG4gICAgICBpZiAociA9PT0gdm9pZCAwICYmIChyID0ge30pLCBaZShlLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZVVybHMpKSB7XG4gICAgICAgIHRoaXMuX2RpYWcuZGVidWcoXCJpZ25vcmluZyBzcGFuIGFzIHVybCBtYXRjaGVzIGlnbm9yZWQgdXJsXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgdCA9IChyLm1ldGhvZCB8fCBcIkdFVFwiKS50b1VwcGVyQ2FzZSgpLCBpID0gXCJIVFRQIFwiICsgdDtcbiAgICAgIHJldHVybiB0aGlzLnRyYWNlci5zdGFydFNwYW4oaSwge1xuICAgICAgICBraW5kOiBldC5DTElFTlQsXG4gICAgICAgIGF0dHJpYnV0ZXM6IChuID0ge30sIG5beS5DT01QT05FTlRdID0gdGhpcy5tb2R1bGVOYW1lLCBuW3hBXSA9IHQsIG5ba0FdID0gZSwgbilcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9maW5kUmVzb3VyY2VBbmRBZGROZXR3b3JrRXZlbnRzID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSByLmVudHJpZXM7XG4gICAgICBpZiAoIXQubGVuZ3RoKSB7XG4gICAgICAgIGlmICghcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHQgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwicmVzb3VyY2VcIik7XG4gICAgICB9XG4gICAgICB2YXIgaSA9IFYoci5zcGFuVXJsLCByLnN0YXJ0VGltZSwgbiwgdCwgdGhpcy5fdXNlZFJlc291cmNlcywgXCJmZXRjaFwiKTtcbiAgICAgIGlmIChpLm1haW5SZXF1ZXN0KSB7XG4gICAgICAgIHZhciBzID0gaS5tYWluUmVxdWVzdDtcbiAgICAgICAgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKHMpO1xuICAgICAgICB2YXIgZiA9IGkuY29yc1ByZUZsaWdodFJlcXVlc3Q7XG4gICAgICAgIGYgJiYgKHRoaXMuX2FkZENoaWxkU3BhbihlLCBmKSwgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKGYpKSwgeSQxKGUsIHMsIHRoaXMuZ2V0Q29uZmlnKCkuaWdub3JlTmV0d29ya0V2ZW50cyk7XG4gICAgICB9XG4gICAgfSwgby5wcm90b3R5cGUuX21hcmtSZXNvdXJjZUFzVXNlZCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3VzZWRSZXNvdXJjZXMuYWRkKGUpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9lbmRTcGFuID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSB0aGlzLCBpID0gTyhEYXRlLm5vdygpKSwgcyA9IHBfKCk7XG4gICAgICB0aGlzLl9hZGRGaW5hbFNwYW5BdHRyaWJ1dGVzKGUsIG4pLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZjtcbiAgICAgICAgKGYgPSByLm9ic2VydmVyKSA9PT0gbnVsbCB8fCBmID09PSB2b2lkIDAgfHwgZi5kaXNjb25uZWN0KCksIHQuX2ZpbmRSZXNvdXJjZUFuZEFkZE5ldHdvcmtFdmVudHMoZSwgciwgcyksIHQuX3Rhc2tzQ291bnQtLSwgdC5fY2xlYXJSZXNvdXJjZXMoKSwgZS5lbmQoaSk7XG4gICAgICB9LCB2ZSk7XG4gICAgfSwgby5wcm90b3R5cGUuX3BhdGNoQ29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7XG4gICAgICAgIHZhciBuID0gZTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSBbXSwgcyA9IDA7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspXG4gICAgICAgICAgICBpW3NdID0gYXJndW1lbnRzW3NdO1xuICAgICAgICAgIHZhciBmID0gdGhpcywgdSA9IEMoaVswXSBpbnN0YW5jZW9mIFJlcXVlc3QgPyBpWzBdLnVybCA6IFN0cmluZyhpWzBdKSkuaHJlZiwgYyA9IGlbMF0gaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaVswXSA6IGlbMV0gfHwge30sIGggPSBuLl9jcmVhdGVTcGFuKHUsIGMpO1xuICAgICAgICAgIGlmICghaClcbiAgICAgICAgICAgIHJldHVybiByLmFwcGx5KHRoaXMsIGkpO1xuICAgICAgICAgIHZhciBnID0gbi5fcHJlcGFyZVNwYW5EYXRhKHUpO1xuICAgICAgICAgIG4uZ2V0Q29uZmlnKCkubWVhc3VyZVJlcXVlc3RTaXplICYmIHNlLmFwcGx5KHZvaWQgMCwgcGUoW10sIGhlKGkpLCBmYWxzZSkpLnRoZW4oZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbCAmJiBoLnNldEF0dHJpYnV0ZShFciwgbCk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbi5fZGlhZy53YXJuKFwiZ2V0RmV0Y2hCb2R5TGVuZ3RoXCIsIGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZ1bmN0aW9uIEUobCwgZCkge1xuICAgICAgICAgICAgbi5fYXBwbHlBdHRyaWJ1dGVzQWZ0ZXJGZXRjaChsLCBjLCBkKSwgbi5fZW5kU3BhbihsLCBnLCB7XG4gICAgICAgICAgICAgIHN0YXR1czogZC5zdGF0dXMgfHwgMCxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5tZXNzYWdlLFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiB3KGwsIGQpIHtcbiAgICAgICAgICAgIG4uX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2gobCwgYywgZCksIGQuc3RhdHVzID49IDIwMCAmJiBkLnN0YXR1cyA8IDQwMCA/IG4uX2VuZFNwYW4obCwgZywgZCkgOiBuLl9lbmRTcGFuKGwsIGcsIHtcbiAgICAgICAgICAgICAgc3RhdHVzOiBkLnN0YXR1cyxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBNKGwsIGQsIHYpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBqID0gdi5jbG9uZSgpLCBEID0gdi5jbG9uZSgpLCBSID0gai5ib2R5O1xuICAgICAgICAgICAgICBpZiAoUikge1xuICAgICAgICAgICAgICAgIHZhciBCID0gUi5nZXRSZWFkZXIoKSwgQSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgQi5yZWFkKCkudGhlbihmdW5jdGlvbihtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBGID0gbS5kb25lO1xuICAgICAgICAgICAgICAgICAgICBGID8gdyhsLCBEKSA6IEEoKTtcbiAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgRShsLCBtKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgQSgpO1xuICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICB3KGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gTChsLCBkLCB2KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBFKGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGwsIGQpIHtcbiAgICAgICAgICAgIHJldHVybiBUZS53aXRoKE1lLnNldFNwYW4oVGUuYWN0aXZlKCksIGgpLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG4uX2FkZEhlYWRlcnMoYywgdSksIG4uX3Rhc2tzQ291bnQrKywgci5hcHBseShmLCBjIGluc3RhbmNlb2YgUmVxdWVzdCA/IFtjXSA6IFt1LCBjXSkudGhlbihNLmJpbmQoZiwgaCwgbCksIEwuYmluZChmLCBoLCBkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfSwgby5wcm90b3R5cGUuX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2ggPSBmdW5jdGlvbihlLCByLCBuKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIGkgPSB0aGlzLmdldENvbmZpZygpLmFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhbjtcbiAgICAgIGkgJiYgQihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGkoZSwgciwgbik7XG4gICAgICB9LCBmdW5jdGlvbihzKSB7XG4gICAgICAgIHMgJiYgdC5fZGlhZy5lcnJvcihcImFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhblwiLCBzKTtcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9wcmVwYXJlU3BhbkRhdGEgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgciA9IHBfKCksIG4gPSBbXTtcbiAgICAgIGlmICh0eXBlb2YgUGVyZm9ybWFuY2VPYnNlcnZlciAhPSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHJldHVybiB7IGVudHJpZXM6IG4sIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgICAgdmFyIHQgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBzID0gaS5nZXRFbnRyaWVzKCk7XG4gICAgICAgIHMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgICAgZi5pbml0aWF0b3JUeXBlID09PSBcImZldGNoXCIgJiYgZi5uYW1lID09PSBlICYmIG4ucHVzaChmKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0Lm9ic2VydmUoe1xuICAgICAgICBlbnRyeVR5cGVzOiBbXCJyZXNvdXJjZVwiXVxuICAgICAgfSksIHsgZW50cmllczogbiwgb2JzZXJ2ZXI6IHQsIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgIH0sIG8ucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKEgpIHtcbiAgICAgICAgdGhpcy5fZGlhZy53YXJuKFwidGhpcyBpbnN0cnVtZW50YXRpb24gaXMgaW50ZW5kZWQgZm9yIHdlYiB1c2FnZSBvbmx5LCBpdCBkb2VzIG5vdCBpbnN0cnVtZW50IE5vZGUuanMncyBmZXRjaCgpXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBVJDEoZmV0Y2gpICYmICh0aGlzLl91bndyYXAoaF8sIFwiZmV0Y2hcIiksIHRoaXMuX2RpYWcuZGVidWcoXCJyZW1vdmluZyBwcmV2aW91cyBwYXRjaCBmb3IgY29uc3RydWN0b3JcIikpLCB0aGlzLl93cmFwKGhfLCBcImZldGNoXCIsIHRoaXMuX3BhdGNoQ29uc3RydWN0b3IoKSk7XG4gICAgfSwgby5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgSCB8fCAodGhpcy5fdW53cmFwKGhfLCBcImZldGNoXCIpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG87XG4gIH0pKFcpXG4pO1xuXG5leHBvcnQgeyBTZSBhcyBGZXRjaEluc3RydW1lbnRhdGlvbiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBQUEsU0FBUztBQUNsQixTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUFDLEdBQUcsS0FBS0MsR0FBSSxLQUFLQyxTQUFVO0FBQ3JILFNBQVMsS0FBQUMsR0FBRyxLQUFLQyxHQUFLLEtBQUFDLFNBQVM7QUFDL0IsU0FBUyxLQUFBQyxHQUFHLEtBQUtDLEdBQUssS0FBQUMsR0FBRyxLQUFLQyxHQUFLLEtBQUFDLFVBQVM7QUFDNUMsU0FBUyxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBSyxVQUFVO0FBRTFDLElBQUlDO0FBQUEsQ0FDSCxTQUFTQyxHQUFHO0FBQ1gsRUFBQUEsRUFBRSxZQUFZLGFBQWFBLEVBQUUsa0JBQWtCLG1CQUFtQkEsRUFBRSxtQkFBbUI7QUFDekYsR0FBR0QsTUFBTUEsSUFBSSxDQUFDLEVBQUU7QUFDaEIsSUFBSUUsS0FBSyxTQUFTRCxHQUFHRSxHQUFHQyxHQUFHM0IsR0FBRztBQUM1QixXQUFTNEIsRUFBRUMsR0FBRztBQUNaLFdBQU9BLGFBQWFGLElBQUlFLElBQUksSUFBSUYsRUFBRSxTQUFTRyxHQUFHO0FBQzVDLE1BQUFBLEVBQUVELENBQUM7QUFBQSxJQUNMLENBQUM7QUFBQSxFQUNIO0FBQ0EsU0FBTyxLQUFLRixNQUFNQSxJQUFJLFVBQVUsU0FBU0UsR0FBR0MsR0FBRztBQUM3QyxhQUFTQyxFQUFFQyxHQUFHO0FBQ1osVUFBSTtBQUNGLFVBQUVoQyxFQUFFLEtBQUtnQyxDQUFDLENBQUM7QUFBQSxNQUNiLFNBQVNDLEdBQUc7QUFDVixRQUFBSCxFQUFFRyxDQUFDO0FBQUEsTUFDTDtB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QixHQUFHO0FBQ0wsYUFBSyxNQUFNLEtBQUssK0ZBQStGO0FBQy9HO0FBQUEsTUFDRjtBQUNBLE1BQUFyQyxFQUFJLEtBQUssTUFBTSxLQUFLLFFBQVFGLEdBQUksT0FBTyxHQUFHLEtBQUssTUFBTSxNQUFNLHlDQUF5QyxJQUFJLEtBQUssTUFBTUEsR0FBSSxTQUFTLEtBQUssa0JBQWtCLENBQUM7QUFBQSxJQUMxSixHQUFHYyxFQUFFLFVBQVUsVUFBVSxXQUFXO0FBQ2xDLE1BQUF5QixNQUFNLEtBQUssUUFBUXZDLEdBQUksT0FBTyxHQUFHLEtBQUssaUJBQWlDLG9CQUFJLFFBQVE7QUFBQSxJQUNyRixHQUFHYztBQUFBLEVBQ0wsR0FBR1gsQ0FBQztBQUFBOyIsCiAgIm5hbWVzIjogWyJyIiwgIkpBIiwgInFBIiwgIlpBIiwgIiRBIiwgInlfIiwgIlplIiwgInhBIiwgImtBIiwgInBfIiwgIk8iLCAiRXIiLCAiaF8iLCAiQiIsICJVJDEiLCAiVyIsICJUIiwgInkkMSIsICJDIiwgImIkMSIsICJWIiwgIk1lIiwgIlRlIiwgInkiLCAiYSIsICJuZSIsICJvIiwgImUiLCAibiIsICJ0IiwgImkiLCAicyIsICJjIiwgImgiLCAiZiIsICJhZSIsICJpZSIsICJvZSIsICJVIiwgInNlIiwgInVlIiwgImZlIiwgImIiLCAibGUiLCAiY2UiLCAiayIsICJkZSIsICJoZSIsICJwZSIsICJTIiwgInZlIiwgIkgiLCAiU2UiLCAidSIsICJnIiwgImwiLCAiRSIsICJkIiwgIk0iLCAidiIsICJqIiwgIkQiLCAiUiIsICJBIiwgIkYiLCAiTCJdCn0K
430
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRDhxR1hBY0wtIX57MDA5fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHIgfSBmcm9tICcuL2RpYWctYXBpLUNqcFVhcDBILSF+ezAwYX1+LmpzJztcbmltcG9ydCB7IEogYXMgSkEsIHEgYXMgcUEsIFogYXMgWkEsICQgYXMgJEEsIHkgYXMgeV8sIGEgYXMgWmUsIHggYXMgeEEsIGsgYXMga0EsIHAgYXMgcF8sIE8sIEUgYXMgRXIsIGggYXMgaF8gfSBmcm9tICcuL3VybC1DNjJKcjY1WS0hfnswMGJ9fi5qcyc7XG5pbXBvcnQgeyBCLCBVIGFzIFUkMSwgVyB9IGZyb20gJy4vdXRpbHMtQ0JlOUxRdTAtIX57MDBjfX4uanMnO1xuaW1wb3J0IHsgVCwgeSBhcyB5JDEsIEMsIGIgYXMgYiQxLCBWIH0gZnJvbSAnLi91dGlscy1PRnJyTERUYi0hfnswMDh9fi5qcyc7XG5pbXBvcnQgeyB4IGFzIHhlLCBUIGFzIFRlLCByIGFzIHJ0IH0gZnJvbSAnLi9pbmRleC0hfnswMDd9fi5qcyc7XG5cbnZhciB5O1xuKGZ1bmN0aW9uKGEpIHtcbiAgYS5DT01QT05FTlQgPSBcImNvbXBvbmVudFwiLCBhLkhUVFBfRVJST1JfTkFNRSA9IFwiaHR0cC5lcnJvcl9uYW1lXCIsIGEuSFRUUF9TVEFUVVNfVEVYVCA9IFwiaHR0cC5zdGF0dXNfdGV4dFwiO1xufSkoeSB8fCAoeSA9IHt9KSk7XG52YXIgbmUgPSBmdW5jdGlvbihhLCBvLCBlLCByKSB7XG4gIGZ1bmN0aW9uIG4odCkge1xuICAgIHJldHVybiB0IGluc3RhbmNlb2YgZSA/IHQgOiBuZXcgZShmdW5jdGlvbihpKSB7XG4gICAgICBpKHQpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKGUgfHwgKGUgPSBQcm9taXNlKSkoZnVuY3Rpb24odCwgaSkge1xuICAgIGZ1bmN0aW9uIHMoYykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShyLm5leHQoYykpO1xuICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICBpKGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmKGMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci50aHJvdyhjKSk7XG4gICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgIGkoaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoYykge1xuICAgICAgYy5kb25lID8gdChjLnZhbHVlKSA6IG4oYy52YWx1ZSkudGhlbihzLCBmKTtcbiAgICB9XG4gICAgdSgociA9IHIuYXBwbHkoYSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn0sIGFlID0gZnVuY3Rpb24oYSwgbykge1xuICB2YXIgZSA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTtcbiAgICByZXR1cm4gdFsxXTtcbiAgfSwgdHJ5czogW10sIG9wczogW10gfSwgciwgbiwgdCwgaTtcbiAgcmV0dXJuIGkgPSB7IG5leHQ6IHMoMCksIHRocm93OiBzKDEpLCByZXR1cm46IHMoMikgfSwgdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgKGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgaTtcbiAgZnVuY3Rpb24gcyh1KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGMpIHtcbiAgICAgIHJldHVybiBmKFt1LCBjXSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBmKHUpIHtcbiAgICBpZiAocikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgZm9yICg7IGU7ICkgdHJ5IHtcbiAgICAgIGlmIChyID0gMSwgbiAmJiAodCA9IHVbMF0gJiAyID8gbi5yZXR1cm4gOiB1WzBdID8gbi50aHJvdyB8fCAoKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pLCAwKSA6IG4ubmV4dCkgJiYgISh0ID0gdC5jYWxsKG4sIHVbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgIHN3aXRjaCAobiA9IDAsIHQgJiYgKHUgPSBbdVswXSAmIDIsIHQudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0ID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBlLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBlLmxhYmVsKyssIG4gPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKHQgPSBlLnRyeXMsICEodCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICBlID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIXQgfHwgdVsxXSA+IHRbMF0gJiYgdVsxXSA8IHRbM10pKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiBlLmxhYmVsIDwgdFsxXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHRbMV0sIHQgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0ICYmIGUubGFiZWwgPCB0WzJdKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdFsyXSwgZS5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0WzJdICYmIGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gby5jYWxsKGEsIGUpO1xuICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgIHUgPSBbNiwgY10sIG4gPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByID0gdCA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufSwgaWUgPSBmdW5jdGlvbihhKSB7XG4gIHZhciBvID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBlID0gbyAmJiBhW29dLCByID0gMDtcbiAgaWYgKGUpIHJldHVybiBlLmNhbGwoYSk7XG4gIGlmIChhICYmIHR5cGVvZiBhLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGEgJiYgciA+PSBhLmxlbmd0aCAmJiAoYSA9IHZvaWQgMCksIHsgdmFsdWU6IGEgJiYgYVtyKytdLCBkb25lOiAhYSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihvID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgb2UgPSBmdW5jdGlvbihhLCBvKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgYVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiBhO1xuICB2YXIgciA9IGUuY2FsbChhKSwgbiwgdCA9IFtdLCBpO1xuICB0cnkge1xuICAgIGZvciAoOyAobyA9PT0gdm9pZCAwIHx8IG8tLSA+IDApICYmICEobiA9IHIubmV4dCgpKS5kb25lOyApIHQucHVzaChuLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGkgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG4gJiYgIW4uZG9uZSAmJiAoZSA9IHIucmV0dXJuKSAmJiBlLmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChpKSB0aHJvdyBpLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdDtcbn0sIFUgPSByLmNyZWF0ZUNvbXBvbmVudExvZ2dlcih7XG4gIG5hbWVzcGFjZTogXCJAb3BlbnRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWluc3RydW1lbnRhdGlvbi1mZXRjaC91dGlsc1wiXG59KTtcbmZ1bmN0aW9uIHNlKCkge1xuICBmb3IgKHZhciBhID0gW10sIG8gPSAwOyBvIDwgYXJndW1lbnRzLmxlbmd0aDsgbysrKVxuICAgIGFbb10gPSBhcmd1bWVudHNbb107XG4gIGlmIChhWzBdIGluc3RhbmNlb2YgVVJMIHx8IHR5cGVvZiBhWzBdID09IFwic3RyaW5nXCIpIHtcbiAgICB2YXIgZSA9IGFbMV07XG4gICAgaWYgKCFlPy5ib2R5KVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChlLmJvZHkgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSkge1xuICAgICAgdmFyIHIgPSB1ZShlLmJvZHkpLCBuID0gci5ib2R5LCB0ID0gci5sZW5ndGg7XG4gICAgICByZXR1cm4gZS5ib2R5ID0gbiwgdDtcbiAgICB9IGVsc2VcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmUoZS5ib2R5KSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGkgPSBhWzBdO1xuICAgIHJldHVybiBpPy5ib2R5ID8gaS5jbG9uZSgpLnRleHQoKS50aGVuKGZ1bmN0aW9uKHMpIHtcbiAgICAgIHJldHVybiBiKHMpO1xuICAgIH0pIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHVlKGEpIHtcbiAgaWYgKCFhLnBpcGVUaHJvdWdoKVxuICAgIHJldHVybiBVLndhcm4oXCJQbGF0Zm9ybSBoYXMgUmVhZGFibGVTdHJlYW0gYnV0IG5vdCBwaXBlVGhyb3VnaCFcIiksIHtcbiAgICAgIGJvZHk6IGEsXG4gICAgICBsZW5ndGg6IFByb21pc2UucmVzb2x2ZSh2b2lkIDApXG4gICAgfTtcbiAgdmFyIG8gPSAwLCBlLCByID0gbmV3IFByb21pc2UoZnVuY3Rpb24odCkge1xuICAgIGUgPSB0O1xuICB9KSwgbiA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB9LFxuICAgIHRyYW5zZm9ybTogZnVuY3Rpb24odCwgaSkge1xuICAgICAgcmV0dXJuIG5lKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHM7XG4gICAgICAgIHJldHVybiBhZSh0aGlzLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgc3dpdGNoIChmLmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIHJldHVybiBbNCwgdF07XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHJldHVybiBzID0gZi5zZW50KCksIG8gKz0gcy5ieXRlTGVuZ3RoLCBpLmVucXVldWUodCksIFtcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGZsdXNoOiBmdW5jdGlvbigpIHtcbiAgICAgIGUobyk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBib2R5OiBhLnBpcGVUaHJvdWdoKG4pLFxuICAgIGxlbmd0aDogclxuICB9O1xufVxuZnVuY3Rpb24gZmUoYSkge1xuICBpZiAodHlwZW9mIERvY3VtZW50IDwgXCJ1XCIgJiYgYSBpbnN0YW5jZW9mIERvY3VtZW50KVxuICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvY3VtZW50KS5sZW5ndGg7XG4gIGlmIChhIGluc3RhbmNlb2YgQmxvYilcbiAgICByZXR1cm4gYS5zaXplO1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSB2b2lkIDApXG4gICAgcmV0dXJuIGEuYnl0ZUxlbmd0aDtcbiAgaWYgKGEgaW5zdGFuY2VvZiBGb3JtRGF0YSlcbiAgICByZXR1cm4gbGUoYSk7XG4gIGlmIChhIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zKVxuICAgIHJldHVybiBiKGEudG9TdHJpbmcoKSk7XG4gIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBiKGEpO1xuICBVLndhcm4oXCJ1bmtub3duIGJvZHkgdHlwZVwiKTtcbn1cbnZhciBjZSA9IG5ldyBUZXh0RW5jb2RlcigpO1xuZnVuY3Rpb24gYihhKSB7XG4gIHJldHVybiBjZS5lbmNvZGUoYSkuYnl0ZUxlbmd0aDtcbn1cbmZ1bmN0aW9uIGxlKGEpIHtcbiAgdmFyIG8sIGUsIHIgPSAwO1xuICB0cnkge1xuICAgIGZvciAodmFyIG4gPSBpZShhLmVudHJpZXMoKSksIHQgPSBuLm5leHQoKTsgIXQuZG9uZTsgdCA9IG4ubmV4dCgpKSB7XG4gICAgICB2YXIgaSA9IG9lKHQudmFsdWUsIDIpLCBzID0gaVswXSwgZiA9IGlbMV07XG4gICAgICByICs9IHMubGVuZ3RoLCBmIGluc3RhbmNlb2YgQmxvYiA/IHIgKz0gZi5zaXplIDogciArPSBmLmxlbmd0aDtcbiAgICB9XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICB0ICYmICF0LmRvbmUgJiYgKGUgPSBuLnJldHVybikgJiYgZS5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG52YXIgayA9IFwiMC41Ny4yXCIsIGRlID0gLyogQF9fUFVSRV9fICovIChmdW5jdGlvbigpIHtcbiAgdmFyIGEgPSBmdW5jdGlvbihvLCBlKSB7XG4gICAgcmV0dXJuIGEgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihyLCBuKSB7XG4gICAgICByLl9fcHJvdG9fXyA9IG47XG4gICAgfSB8fCBmdW5jdGlvbihyLCBuKSB7XG4gICAgICBmb3IgKHZhciB0IGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCB0KSAmJiAoclt0XSA9IG5bdF0pO1xuICAgIH0sIGEobywgZSk7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbihvLCBlKSB7XG4gICAgaWYgKHR5cGVvZiBlICE9IFwiZnVuY3Rpb25cIiAmJiBlICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoZSkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGEobywgZSk7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBvO1xuICAgIH1cbiAgICBvLnByb3RvdHlwZSA9IGUgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGUpIDogKHIucHJvdG90eXBlID0gZS5wcm90b3R5cGUsIG5ldyByKCkpO1xuICB9O1xufSkoKSwgaGUgPSBmdW5jdGlvbihhLCBvKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgYVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiBhO1xuICB2YXIgciA9IGUuY2FsbChhKSwgbiwgdCA9IFtdLCBpO1xuICB0cnkge1xuICAgIGZvciAoOyAobyA9PT0gdm9pZCAwIHx8IG8tLSA+IDApICYmICEobiA9IHIubmV4dCgpKS5kb25lOyApIHQucHVzaChuLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGkgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG4gJiYgIW4uZG9uZSAmJiAoZSA9IHIucmV0dXJuKSAmJiBlLmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChpKSB0aHJvdyBpLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdDtcbn0sIHBlID0gZnVuY3Rpb24oYSwgbywgZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgciA9IDAsIG4gPSBvLmxlbmd0aCwgdDsgciA8IG47IHIrKylcbiAgICAodCB8fCAhKHIgaW4gbykpICYmICh0IHx8ICh0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobywgMCwgcikpLCB0W3JdID0gb1tyXSk7XG4gIHJldHVybiBhLmNvbmNhdCh0IHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG8pKTtcbn0sIFMsIHZlID0gMzAwLCBIID0gdHlwZW9mIHByb2Nlc3MgPT0gXCJvYmplY3RcIiAmJiAoKFMgPSBwcm9jZXNzLnJlbGVhc2UpID09PSBudWxsIHx8IFMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IFMubmFtZSkgPT09IFwibm9kZVwiLCBTZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oYSkge1xuICAgIGRlKG8sIGEpO1xuICAgIGZ1bmN0aW9uIG8oZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pO1xuICAgICAgdmFyIHIgPSBhLmNhbGwodGhpcywgXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZmV0Y2hcIiwgaywgZSkgfHwgdGhpcztcbiAgICAgIHJldHVybiByLmNvbXBvbmVudCA9IFwiZmV0Y2hcIiwgci52ZXJzaW9uID0gaywgci5tb2R1bGVOYW1lID0gci5jb21wb25lbnQsIHIuX3VzZWRSZXNvdXJjZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtTZXQoKSwgci5fdGFza3NDb3VudCA9IDAsIHI7XG4gICAgfVxuICAgIHJldHVybiBvLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZENoaWxkU3BhbiA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICAgIHZhciBuID0gdGhpcy50cmFjZXIuc3RhcnRTcGFuKFwiQ09SUyBQcmVmbGlnaHRcIiwge1xuICAgICAgICBzdGFydFRpbWU6IHJbVC5GRVRDSF9TVEFSVF1cbiAgICAgIH0sIHhlLnNldFNwYW4oVGUuYWN0aXZlKCksIGUpKTtcbiAgICAgIHkkMShuLCByLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZU5ldHdvcmtFdmVudHMpLCBuLmVuZChyW1QuUkVTUE9OU0VfRU5EXSk7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZEZpbmFsU3BhbkF0dHJpYnV0ZXMgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgICB2YXIgbiA9IEMoci51cmwpO1xuICAgICAgZS5zZXRBdHRyaWJ1dGUoSkEsIHIuc3RhdHVzKSwgci5zdGF0dXNUZXh0ICE9IG51bGwgJiYgZS5zZXRBdHRyaWJ1dGUoeS5IVFRQX1NUQVRVU19URVhULCByLnN0YXR1c1RleHQpLCBlLnNldEF0dHJpYnV0ZShxQSwgbi5ob3N0KSwgZS5zZXRBdHRyaWJ1dGUoWkEsIG4ucHJvdG9jb2wucmVwbGFjZShcIjpcIiwgXCJcIikpLCB0eXBlb2YgbmF2aWdhdG9yIDwgXCJ1XCIgJiYgZS5zZXRBdHRyaWJ1dGUoJEEsIG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9hZGRIZWFkZXJzID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgaWYgKCFiJDEociwgdGhpcy5nZXRDb25maWcoKS5wcm9wYWdhdGVUcmFjZUhlYWRlckNvcnNVcmxzKSkge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBPYmplY3Qua2V5cyhuKS5sZW5ndGggPiAwICYmIHRoaXMuX2RpYWcuZGVidWcoXCJoZWFkZXJzIGluamVjdCBza2lwcGVkIGR1ZSB0byBDT1JTIHBvbGljeVwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBSZXF1ZXN0KVxuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIGUuaGVhZGVycywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24odCwgaSwgcykge1xuICAgICAgICAgICAgcmV0dXJuIHQuc2V0KGksIHR5cGVvZiBzID09IFwic3RyaW5nXCIgPyBzIDogU3RyaW5nKHMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgZWxzZSBpZiAoZS5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycylcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2UgaWYgKGUuaGVhZGVycyBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBlLmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBuLCBlLmhlYWRlcnMgfHwge30pO1xuICAgICAgfVxuICAgIH0sIG8ucHJvdG90eXBlLl9jbGVhclJlc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fdGFza3NDb3VudCA9PT0gMCAmJiB0aGlzLmdldENvbmZpZygpLmNsZWFyVGltaW5nUmVzb3VyY2VzICYmIChwZXJmb3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9jcmVhdGVTcGFuID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgdmFyIG47XG4gICAgICBpZiAociA9PT0gdm9pZCAwICYmIChyID0ge30pLCBaZShlLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZVVybHMpKSB7XG4gICAgICAgIHRoaXMuX2RpYWcuZGVidWcoXCJpZ25vcmluZyBzcGFuIGFzIHVybCBtYXRjaGVzIGlnbm9yZWQgdXJsXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgdCA9IChyLm1ldGhvZCB8fCBcIkdFVFwiKS50b1VwcGVyQ2FzZSgpLCBpID0gXCJIVFRQIFwiICsgdDtcbiAgICAgIHJldHVybiB0aGlzLnRyYWNlci5zdGFydFNwYW4oaSwge1xuICAgICAgICBraW5kOiBydC5DTElFTlQsXG4gICAgICAgIGF0dHJpYnV0ZXM6IChuID0ge30sIG5beS5DT01QT05FTlRdID0gdGhpcy5tb2R1bGVOYW1lLCBuW3hBXSA9IHQsIG5ba0FdID0gZSwgbilcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9maW5kUmVzb3VyY2VBbmRBZGROZXR3b3JrRXZlbnRzID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSByLmVudHJpZXM7XG4gICAgICBpZiAoIXQubGVuZ3RoKSB7XG4gICAgICAgIGlmICghcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHQgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwicmVzb3VyY2VcIik7XG4gICAgICB9XG4gICAgICB2YXIgaSA9IFYoci5zcGFuVXJsLCByLnN0YXJ0VGltZSwgbiwgdCwgdGhpcy5fdXNlZFJlc291cmNlcywgXCJmZXRjaFwiKTtcbiAgICAgIGlmIChpLm1haW5SZXF1ZXN0KSB7XG4gICAgICAgIHZhciBzID0gaS5tYWluUmVxdWVzdDtcbiAgICAgICAgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKHMpO1xuICAgICAgICB2YXIgZiA9IGkuY29yc1ByZUZsaWdodFJlcXVlc3Q7XG4gICAgICAgIGYgJiYgKHRoaXMuX2FkZENoaWxkU3BhbihlLCBmKSwgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKGYpKSwgeSQxKGUsIHMsIHRoaXMuZ2V0Q29uZmlnKCkuaWdub3JlTmV0d29ya0V2ZW50cyk7XG4gICAgICB9XG4gICAgfSwgby5wcm90b3R5cGUuX21hcmtSZXNvdXJjZUFzVXNlZCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3VzZWRSZXNvdXJjZXMuYWRkKGUpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9lbmRTcGFuID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSB0aGlzLCBpID0gTyhEYXRlLm5vdygpKSwgcyA9IHBfKCk7XG4gICAgICB0aGlzLl9hZGRGaW5hbFNwYW5BdHRyaWJ1dGVzKGUsIG4pLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZjtcbiAgICAgICAgKGYgPSByLm9ic2VydmVyKSA9PT0gbnVsbCB8fCBmID09PSB2b2lkIDAgfHwgZi5kaXNjb25uZWN0KCksIHQuX2ZpbmRSZXNvdXJjZUFuZEFkZE5ldHdvcmtFdmVudHMoZSwgciwgcyksIHQuX3Rhc2tzQ291bnQtLSwgdC5fY2xlYXJSZXNvdXJjZXMoKSwgZS5lbmQoaSk7XG4gICAgICB9LCB2ZSk7XG4gICAgfSwgby5wcm90b3R5cGUuX3BhdGNoQ29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7XG4gICAgICAgIHZhciBuID0gZTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSBbXSwgcyA9IDA7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspXG4gICAgICAgICAgICBpW3NdID0gYXJndW1lbnRzW3NdO1xuICAgICAgICAgIHZhciBmID0gdGhpcywgdSA9IEMoaVswXSBpbnN0YW5jZW9mIFJlcXVlc3QgPyBpWzBdLnVybCA6IFN0cmluZyhpWzBdKSkuaHJlZiwgYyA9IGlbMF0gaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaVswXSA6IGlbMV0gfHwge30sIGggPSBuLl9jcmVhdGVTcGFuKHUsIGMpO1xuICAgICAgICAgIGlmICghaClcbiAgICAgICAgICAgIHJldHVybiByLmFwcGx5KHRoaXMsIGkpO1xuICAgICAgICAgIHZhciBnID0gbi5fcHJlcGFyZVNwYW5EYXRhKHUpO1xuICAgICAgICAgIG4uZ2V0Q29uZmlnKCkubWVhc3VyZVJlcXVlc3RTaXplICYmIHNlLmFwcGx5KHZvaWQgMCwgcGUoW10sIGhlKGkpLCBmYWxzZSkpLnRoZW4oZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbCAmJiBoLnNldEF0dHJpYnV0ZShFciwgbCk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbi5fZGlhZy53YXJuKFwiZ2V0RmV0Y2hCb2R5TGVuZ3RoXCIsIGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZ1bmN0aW9uIEUobCwgZCkge1xuICAgICAgICAgICAgbi5fYXBwbHlBdHRyaWJ1dGVzQWZ0ZXJGZXRjaChsLCBjLCBkKSwgbi5fZW5kU3BhbihsLCBnLCB7XG4gICAgICAgICAgICAgIHN0YXR1czogZC5zdGF0dXMgfHwgMCxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5tZXNzYWdlLFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiB3KGwsIGQpIHtcbiAgICAgICAgICAgIG4uX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2gobCwgYywgZCksIGQuc3RhdHVzID49IDIwMCAmJiBkLnN0YXR1cyA8IDQwMCA/IG4uX2VuZFNwYW4obCwgZywgZCkgOiBuLl9lbmRTcGFuKGwsIGcsIHtcbiAgICAgICAgICAgICAgc3RhdHVzOiBkLnN0YXR1cyxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBNKGwsIGQsIHYpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBqID0gdi5jbG9uZSgpLCBEID0gdi5jbG9uZSgpLCBSID0gai5ib2R5O1xuICAgICAgICAgICAgICBpZiAoUikge1xuICAgICAgICAgICAgICAgIHZhciBCID0gUi5nZXRSZWFkZXIoKSwgQSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgQi5yZWFkKCkudGhlbihmdW5jdGlvbihtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBGID0gbS5kb25lO1xuICAgICAgICAgICAgICAgICAgICBGID8gdyhsLCBEKSA6IEEoKTtcbiAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgRShsLCBtKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgQSgpO1xuICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICB3KGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gTChsLCBkLCB2KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBFKGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGwsIGQpIHtcbiAgICAgICAgICAgIHJldHVybiBUZS53aXRoKHhlLnNldFNwYW4oVGUuYWN0aXZlKCksIGgpLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG4uX2FkZEhlYWRlcnMoYywgdSksIG4uX3Rhc2tzQ291bnQrKywgci5hcHBseShmLCBjIGluc3RhbmNlb2YgUmVxdWVzdCA/IFtjXSA6IFt1LCBjXSkudGhlbihNLmJpbmQoZiwgaCwgbCksIEwuYmluZChmLCBoLCBkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfSwgby5wcm90b3R5cGUuX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2ggPSBmdW5jdGlvbihlLCByLCBuKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIGkgPSB0aGlzLmdldENvbmZpZygpLmFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhbjtcbiAgICAgIGkgJiYgQihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGkoZSwgciwgbik7XG4gICAgICB9LCBmdW5jdGlvbihzKSB7XG4gICAgICAgIHMgJiYgdC5fZGlhZy5lcnJvcihcImFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhblwiLCBzKTtcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9wcmVwYXJlU3BhbkRhdGEgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgciA9IHBfKCksIG4gPSBbXTtcbiAgICAgIGlmICh0eXBlb2YgUGVyZm9ybWFuY2VPYnNlcnZlciAhPSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHJldHVybiB7IGVudHJpZXM6IG4sIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgICAgdmFyIHQgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBzID0gaS5nZXRFbnRyaWVzKCk7XG4gICAgICAgIHMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgICAgZi5pbml0aWF0b3JUeXBlID09PSBcImZldGNoXCIgJiYgZi5uYW1lID09PSBlICYmIG4ucHVzaChmKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0Lm9ic2VydmUoe1xuICAgICAgICBlbnRyeVR5cGVzOiBbXCJyZXNvdXJjZVwiXVxuICAgICAgfSksIHsgZW50cmllczogbiwgb2JzZXJ2ZXI6IHQsIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgIH0sIG8ucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKEgpIHtcbiAgICAgICAgdGhpcy5fZGlhZy53YXJuKFwidGhpcyBpbnN0cnVtZW50YXRpb24gaXMgaW50ZW5kZWQgZm9yIHdlYiB1c2FnZSBvbmx5LCBpdCBkb2VzIG5vdCBpbnN0cnVtZW50IE5vZGUuanMncyBmZXRjaCgpXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBVJDEoZmV0Y2gpICYmICh0aGlzLl91bndyYXAoaF8sIFwiZmV0Y2hcIiksIHRoaXMuX2RpYWcuZGVidWcoXCJyZW1vdmluZyBwcmV2aW91cyBwYXRjaCBmb3IgY29uc3RydWN0b3JcIikpLCB0aGlzLl93cmFwKGhfLCBcImZldGNoXCIsIHRoaXMuX3BhdGNoQ29uc3RydWN0b3IoKSk7XG4gICAgfSwgby5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgSCB8fCAodGhpcy5fdW53cmFwKGhfLCBcImZldGNoXCIpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG87XG4gIH0pKFcpXG4pO1xuXG5leHBvcnQgeyBTZSBhcyBGZXRjaEluc3RydW1lbnRhdGlvbiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBQUEsU0FBUztBQUNsQixTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUFDLEdBQUcsS0FBS0MsR0FBSSxLQUFLQyxTQUFVO0FBQ3JILFNBQVMsS0FBQUMsR0FBRyxLQUFLQyxHQUFLLEtBQUFDLFNBQVM7QUFDL0IsU0FBUyxLQUFBQyxHQUFHLEtBQUtDLEdBQUssS0FBQUMsR0FBRyxLQUFLQyxHQUFLLEtBQUFDLFVBQVM7QUFDNUMsU0FBUyxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsVUFBVTtBQUUxQyxJQUFJQztBQUFBLENBQ0gsU0FBU0MsR0FBRztBQUNYLEVBQUFBLEVBQUUsWUFBWSxhQUFhQSxFQUFFLGtCQUFrQixtQkFBbUJBLEVBQUUsbUJBQW1CO0FBQ3pGLEdBQUdELE1BQU1BLElBQUksQ0FBQyxFQUFFO0FBQ2hCLElBQUlFLEtBQUssU0FBU0QsR0FBR0UsR0FBR0MsR0FBRzVCLEdBQUc7QUFDNUIsV0FBUzZCLEVBQUVDLEdBQUc7QUFDWixXQUFPQSxhQUFhRixJQUFJRSxJQUFJLElBQUlGLEVBQUUsU0FBU0csR0FBRztBQUM1QyxNQUFBQSxFQUFFRCxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU8sS0FBS0YsTUFBTUEsSUFBSSxVQUFVLFNBQVNFLEdBQUdDLEdBQUc7QUFDN0MsYUFBU0MsRUFBRUMsR0FBRztBQUNaLFVBQUk7QUFDRixVQUFFakMsRUFBRSxLQUFLaUMsQ0FBQyxDQUFDO0FBQUEsTUFDYixTQUFTQyxHQUFHO0FBQ1YsUUFBQUgsRUFBRUcsQ0FBQztBQUFBLE1BQ0w7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SXlCLEdBQUc7QUFDTCxhQUFLLE1BQU0sS0FBSywrRkFBK0Y7QUFDL0c7QUFBQSxNQUNGO0FBQ0EsTUFBQXRDLEVBQUksS0FBSyxNQUFNLEtBQUssUUFBUUYsR0FBSSxPQUFPLEdBQUcsS0FBSyxNQUFNLE1BQU0seUNBQXlDLElBQUksS0FBSyxNQUFNQSxHQUFJLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQztBQUFBLElBQzFKLEdBQUdlLEVBQUUsVUFBVSxVQUFVLFdBQVc7QUFDbEMsTUFBQXlCLE1BQU0sS0FBSyxRQUFReEMsR0FBSSxPQUFPLEdBQUcsS0FBSyxpQkFBaUMsb0JBQUksUUFBUTtBQUFBLElBQ3JGLEdBQUdlO0FBQUEsRUFDTCxHQUFHWixDQUFDO0FBQUE7IiwKICAibmFtZXMiOiBbInIiLCAiSkEiLCAicUEiLCAiWkEiLCAiJEEiLCAieV8iLCAiWmUiLCAieEEiLCAia0EiLCAicF8iLCAiTyIsICJFciIsICJoXyIsICJCIiwgIlUkMSIsICJXIiwgIlQiLCAieSQxIiwgIkMiLCAiYiQxIiwgIlYiLCAieGUiLCAiVGUiLCAicnQiLCAieSIsICJhIiwgIm5lIiwgIm8iLCAiZSIsICJuIiwgInQiLCAiaSIsICJzIiwgImMiLCAiaCIsICJmIiwgImFlIiwgImllIiwgIm9lIiwgIlUiLCAic2UiLCAidWUiLCAiZmUiLCAiYiIsICJsZSIsICJjZSIsICJrIiwgImRlIiwgImhlIiwgInBlIiwgIlMiLCAidmUiLCAiSCIsICJTZSIsICJ1IiwgImciLCAibCIsICJFIiwgImQiLCAiTSIsICJ2IiwgImoiLCAiRCIsICJSIiwgIkEiLCAiRiIsICJMIl0KfQo=
@@ -1,4 +1,4 @@
1
- import { R as r, g as e, t as o, D as p, e as S, S as n, j as c, B as l, G as t, P as m, r as i, x as d, W as P, z as B } from "./SimpleSpanProcessor-B0eU7C8A-CjPgIH6s.js";
1
+ import { R as r, g as e, t as o, D as p, e as S, S as n, j as c, B as l, G as t, P as m, r as i, x as d, W as P, z as B } from "./SimpleSpanProcessor-CXkHxvZK-CtgJXZxx.js";
2
2
  export {
3
3
  r as AlwaysOffSampler,
4
4
  e as AlwaysOnSampler,
@@ -15,4 +15,4 @@ export {
15
15
  P as TraceIdRatioBasedSampler,
16
16
  B as Tracer
17
17
  };
18
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQzNONWp0a1EtIX57MDAzfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB7IFIgYXMgQWx3YXlzT2ZmU2FtcGxlciwgZyBhcyBBbHdheXNPblNhbXBsZXIsIHQgYXMgQmFzaWNUcmFjZXJQcm92aWRlciwgRCBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIGUgYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgUyBhcyBGb3JjZUZsdXNoU3RhdGUsIGogYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIEIgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBHIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBQIGFzIFNhbXBsaW5nRGVjaXNpb24sIHIgYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgeCBhcyBTcGFuLCBXIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgeiBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItQjBlVTdDOEEtIX57MDA0fX4uanMnOyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQWMsS0FBTEEsR0FBNEIsS0FBTEMsR0FBMkIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBOEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBMkIsS0FBTEMsR0FBNkIsS0FBTEMsR0FBOEIsS0FBTEMsR0FBNkIsS0FBTEMsR0FBNEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBZ0IsS0FBTEMsR0FBb0MsS0FBTEMsU0FBbUI7IiwKICAibmFtZXMiOiBbIlIiLCAiZyIsICJ0IiwgIkQiLCAiZSIsICJTIiwgImoiLCAiQiIsICJHIiwgIlAiLCAiciIsICJ4IiwgIlciLCAieiJdCn0K
18
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtREFqd1JHMDYtIX57MDAzfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB7IFIgYXMgQWx3YXlzT2ZmU2FtcGxlciwgZyBhcyBBbHdheXNPblNhbXBsZXIsIHQgYXMgQmFzaWNUcmFjZXJQcm92aWRlciwgRCBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIGUgYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgUyBhcyBGb3JjZUZsdXNoU3RhdGUsIGogYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIEIgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBHIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBQIGFzIFNhbXBsaW5nRGVjaXNpb24sIHIgYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgeCBhcyBTcGFuLCBXIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgeiBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItQ1hrSHh2WkstIX57MDA0fX4uanMnOyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQWMsS0FBTEEsR0FBNEIsS0FBTEMsR0FBMkIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBOEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBMkIsS0FBTEMsR0FBNkIsS0FBTEMsR0FBOEIsS0FBTEMsR0FBNkIsS0FBTEMsR0FBNEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBZ0IsS0FBTEMsR0FBb0MsS0FBTEMsU0FBbUI7IiwKICAibmFtZXMiOiBbIlIiLCAiZyIsICJ0IiwgIkQiLCAiZSIsICJTIiwgImoiLCAiQiIsICJHIiwgIlAiLCAiciIsICJ4IiwgIlciLCAieiJdCn0K
@@ -1,6 +1,6 @@
1
- import { M as c, h as x, Z as L, H as s, d as I, p as P } from "./index-BRlq-xUA.js";
2
- import { a as S } from "./suppress-tracing-BuitcWA2-BFsdq8P_.js";
3
- var p = L("OpenTelemetry Context Key B3 Debug Flag"), f = "b3", _ = "x-b3-traceid", g = "x-b3-spanid", E = "x-b3-sampled", N = "x-b3-parentspanid", v = "x-b3-flags", m = /* @__PURE__ */ new Set([!0, "true", "True", "1", 1]), j = /* @__PURE__ */ new Set([!1, "false", "False", "0", 0]);
1
+ import { x as c, P as x, n as M, Y as s, g as P, w as I } from "./index-Du2j-1vJ.js";
2
+ import { a as S } from "./suppress-tracing-BiiEFr8F-BsLEY_uR.js";
3
+ var p = M("OpenTelemetry Context Key B3 Debug Flag"), f = "b3", _ = "x-b3-traceid", d = "x-b3-spanid", E = "x-b3-sampled", N = "x-b3-parentspanid", v = "x-b3-flags", m = /* @__PURE__ */ new Set([!0, "true", "True", "1", 1]), j = /* @__PURE__ */ new Set([!1, "false", "False", "0", 0]);
4
4
  function R(t) {
5
5
  return t === s.SAMPLED || t === s.NONE;
6
6
  }
@@ -15,15 +15,15 @@ function T(t, e) {
15
15
  var r = l(t, e, _);
16
16
  return typeof r == "string" ? r.padStart(32, "0") : "";
17
17
  }
18
- function F(t, e) {
19
- var r = l(t, e, g);
18
+ function w(t, e) {
19
+ var r = l(t, e, d);
20
20
  return typeof r == "string" ? r : "";
21
21
  }
22
22
  function b(t, e) {
23
23
  var r = l(t, e, v);
24
24
  return r === "1" ? "1" : void 0;
25
25
  }
26
- function H(t, e) {
26
+ function F(t, e) {
27
27
  var r = l(t, e, E), a = b(t, e);
28
28
  if (a === "1" || m.has(r))
29
29
  return s.SAMPLED;
@@ -39,11 +39,11 @@ var C = (
39
39
  var n = c.getSpanContext(e);
40
40
  if (!(!n || !x(n) || S(e))) {
41
41
  var i = e.getValue(p);
42
- a.set(r, _, n.traceId), a.set(r, g, n.spanId), i === "1" ? a.set(r, v, i) : n.traceFlags !== void 0 && a.set(r, E, (s.SAMPLED & n.traceFlags) === s.SAMPLED ? "1" : "0");
42
+ a.set(r, _, n.traceId), a.set(r, d, n.spanId), i === "1" ? a.set(r, v, i) : n.traceFlags !== void 0 && a.set(r, E, (s.SAMPLED & n.traceFlags) === s.SAMPLED ? "1" : "0");
43
43
  }
44
44
  }, t.prototype.extract = function(e, r, a) {
45
- var n = T(r, a), i = F(r, a), o = H(r, a), u = b(r, a);
46
- return I(n) && P(i) && R(o) ? (e = e.setValue(p, u), c.setSpanContext(e, {
45
+ var n = T(r, a), i = w(r, a), o = F(r, a), u = b(r, a);
46
+ return P(n) && I(i) && R(o) ? (e = e.setValue(p, u), c.setSpanContext(e, {
47
47
  traceId: n,
48
48
  spanId: i,
49
49
  isRemote: !0,
@@ -52,14 +52,14 @@ var C = (
52
52
  }, t.prototype.fields = function() {
53
53
  return [
54
54
  _,
55
- g,
55
+ d,
56
56
  v,
57
57
  E,
58
58
  N
59
59
  ];
60
60
  }, t;
61
61
  })()
62
- ), w = function(t, e) {
62
+ ), H = function(t, e) {
63
63
  var r = typeof Symbol == "function" && t[Symbol.iterator];
64
64
  if (!r) return t;
65
65
  var a = r.call(t), n, i = [], o;
@@ -79,10 +79,10 @@ var C = (
79
79
  function U(t) {
80
80
  return t.length === 32 ? t : "" + O + t;
81
81
  }
82
- function K(t) {
82
+ function Y(t) {
83
83
  return t && V.has(t) ? s.SAMPLED : s.NONE;
84
84
  }
85
- var Z = (
85
+ var K = (
86
86
  /** @class */
87
87
  (function() {
88
88
  function t() {
@@ -100,15 +100,15 @@ var Z = (
100
100
  var o = i.match(X);
101
101
  if (!o)
102
102
  return e;
103
- var u = w(o, 4), D = u[1], h = u[2], d = u[3], A = U(D);
104
- if (!I(A) || !P(h))
103
+ var u = H(o, 4), D = u[1], h = u[2], g = u[3], A = U(D);
104
+ if (!P(A) || !I(h))
105
105
  return e;
106
- var M = K(d);
107
- return d === G && (e = e.setValue(p, d)), c.setSpanContext(e, {
106
+ var L = Y(g);
107
+ return g === G && (e = e.setValue(p, g)), c.setSpanContext(e, {
108
108
  traceId: A,
109
109
  spanId: h,
110
110
  isRemote: !0,
111
- traceFlags: M
111
+ traceFlags: L
112
112
  });
113
113
  }, t.prototype.fields = function() {
114
114
  return [f];
@@ -118,11 +118,11 @@ var Z = (
118
118
  (function(t) {
119
119
  t[t.SINGLE_HEADER = 0] = "SINGLE_HEADER", t[t.MULTI_HEADER = 1] = "MULTI_HEADER";
120
120
  })(y || (y = {}));
121
- var k = (
121
+ var q = (
122
122
  /** @class */
123
123
  (function() {
124
124
  function t(e) {
125
- e === void 0 && (e = {}), this._b3MultiPropagator = new C(), this._b3SinglePropagator = new Z(), e.injectEncoding === y.MULTI_HEADER ? (this._inject = this._b3MultiPropagator.inject, this._fields = this._b3MultiPropagator.fields()) : (this._inject = this._b3SinglePropagator.inject, this._fields = this._b3SinglePropagator.fields());
125
+ e === void 0 && (e = {}), this._b3MultiPropagator = new C(), this._b3SinglePropagator = new K(), e.injectEncoding === y.MULTI_HEADER ? (this._inject = this._b3MultiPropagator.inject, this._fields = this._b3MultiPropagator.fields()) : (this._inject = this._b3SinglePropagator.inject, this._fields = this._b3SinglePropagator.fields());
126
126
  }
127
127
  return t.prototype.inject = function(e, r, a) {
128
128
  S(e) || this._inject(e, r, a);
@@ -136,12 +136,12 @@ var k = (
136
136
  );
137
137
  export {
138
138
  y as B3InjectEncoding,
139
- k as B3Propagator,
139
+ q as B3Propagator,
140
140
  f as B3_CONTEXT_HEADER,
141
141
  v as X_B3_FLAGS,
142
142
  N as X_B3_PARENT_SPAN_ID,
143
143
  E as X_B3_SAMPLED,
144
- g as X_B3_SPAN_ID,
144
+ d as X_B3_SPAN_ID,
145
145
  _ as X_B3_TRACE_ID
146
146
  };
147
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtREhLeVpQZTUtIX57MDBtfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IE0gYXMgTWUsIGggYXMgaG4sIFogYXMgWmksIEggYXMgSHQsIGQgYXMgZHMsIHAgYXMgcHMgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGEgfSBmcm9tICcuL3N1cHByZXNzLXRyYWNpbmctQnVpdGNXQTItIX57MDBufX4uanMnO1xuXG52YXIgbCA9IFppKFwiT3BlblRlbGVtZXRyeSBDb250ZXh0IEtleSBCMyBEZWJ1ZyBGbGFnXCIpLCBmID0gXCJiM1wiLCB2ID0gXCJ4LWIzLXRyYWNlaWRcIiwgZyA9IFwieC1iMy1zcGFuaWRcIiwgYyA9IFwieC1iMy1zYW1wbGVkXCIsIEIgPSBcIngtYjMtcGFyZW50c3BhbmlkXCIsIFMgPSBcIngtYjMtZmxhZ3NcIiwgRiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFt0cnVlLCBcInRydWVcIiwgXCJUcnVlXCIsIFwiMVwiLCAxXSksIE4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbZmFsc2UsIFwiZmFsc2VcIiwgXCJGYWxzZVwiLCBcIjBcIiwgMF0pO1xuZnVuY3Rpb24gVihyKSB7XG4gIHJldHVybiByID09PSBIdC5TQU1QTEVEIHx8IHIgPT09IEh0Lk5PTkU7XG59XG5mdW5jdGlvbiBtKHIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocikgPyByWzBdIDogcjtcbn1cbmZ1bmN0aW9uIGQociwgdCwgYSkge1xuICB2YXIgbiA9IHQuZ2V0KHIsIGEpO1xuICByZXR1cm4gbShuKTtcbn1cbmZ1bmN0aW9uIEMociwgdCkge1xuICB2YXIgYSA9IGQociwgdCwgdik7XG4gIHJldHVybiB0eXBlb2YgYSA9PSBcInN0cmluZ1wiID8gYS5wYWRTdGFydCgzMiwgXCIwXCIpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIHgociwgdCkge1xuICB2YXIgYSA9IGQociwgdCwgZyk7XG4gIHJldHVybiB0eXBlb2YgYSA9PSBcInN0cmluZ1wiID8gYSA6IFwiXCI7XG59XG5mdW5jdGlvbiBoKHIsIHQpIHtcbiAgdmFyIGEgPSBkKHIsIHQsIFMpO1xuICByZXR1cm4gYSA9PT0gXCIxXCIgPyBcIjFcIiA6IHZvaWQgMDtcbn1cbmZ1bmN0aW9uIFIociwgdCkge1xuICB2YXIgYSA9IGQociwgdCwgYyksIG4gPSBoKHIsIHQpO1xuICBpZiAobiA9PT0gXCIxXCIgfHwgRi5oYXMoYSkpXG4gICAgcmV0dXJuIEh0LlNBTVBMRUQ7XG4gIGlmIChhID09PSB2b2lkIDAgfHwgTi5oYXMoYSkpXG4gICAgcmV0dXJuIEh0Lk5PTkU7XG59XG52YXIgVSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHQsIGEkMSwgbikge1xuICAgICAgdmFyIGUgPSBNZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIGlmICghKCFlIHx8ICFobihlKSB8fCBhKHQpKSkge1xuICAgICAgICB2YXIgaSA9IHQuZ2V0VmFsdWUobCk7XG4gICAgICAgIG4uc2V0KGEkMSwgdiwgZS50cmFjZUlkKSwgbi5zZXQoYSQxLCBnLCBlLnNwYW5JZCksIGkgPT09IFwiMVwiID8gbi5zZXQoYSQxLCBTLCBpKSA6IGUudHJhY2VGbGFncyAhPT0gdm9pZCAwICYmIG4uc2V0KGEkMSwgYywgKEh0LlNBTVBMRUQgJiBlLnRyYWNlRmxhZ3MpID09PSBIdC5TQU1QTEVEID8gXCIxXCIgOiBcIjBcIik7XG4gICAgICB9XG4gICAgfSwgci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKHQsIGEsIG4pIHtcbiAgICAgIHZhciBlID0gQyhhLCBuKSwgaSA9IHgoYSwgbiksIHUgPSBSKGEsIG4pLCBzID0gaChhLCBuKTtcbiAgICAgIHJldHVybiBkcyhlKSAmJiBwcyhpKSAmJiBWKHUpID8gKHQgPSB0LnNldFZhbHVlKGwsIHMpLCBNZS5zZXRTcGFuQ29udGV4dCh0LCB7XG4gICAgICAgIHRyYWNlSWQ6IGUsXG4gICAgICAgIHNwYW5JZDogaSxcbiAgICAgICAgaXNSZW1vdGU6IHRydWUsXG4gICAgICAgIHRyYWNlRmxhZ3M6IHVcbiAgICAgIH0pKSA6IHQ7XG4gICAgfSwgci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB2LFxuICAgICAgICBnLFxuICAgICAgICBTLFxuICAgICAgICBjLFxuICAgICAgICBCXG4gICAgICBdO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEcgPSBmdW5jdGlvbihyLCB0KSB7XG4gIHZhciBhID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWEpIHJldHVybiByO1xuICB2YXIgbiA9IGEuY2FsbChyKSwgZSwgaSA9IFtdLCB1O1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEoZSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChlLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIHUgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGUgJiYgIWUuZG9uZSAmJiAoYSA9IG4ucmV0dXJuKSAmJiBhLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh1KSB0aHJvdyB1LmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIEggPSAvKCg/OlswLTlhLWZdezE2fSl7MSwyfSktKFswLTlhLWZdezE2fSkoPzotKFswMWRdKD8hWzAtOWEtZl0pKSk/KD86LShbMC05YS1mXXsxNn0pKT8vLCBYID0gXCIwXCIucmVwZWF0KDE2KSwgaiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcImRcIiwgXCIxXCJdKSwgdyA9IFwiZFwiO1xuZnVuY3Rpb24gTyhyKSB7XG4gIHJldHVybiByLmxlbmd0aCA9PT0gMzIgPyByIDogXCJcIiArIFggKyByO1xufVxuZnVuY3Rpb24gSyhyKSB7XG4gIHJldHVybiByICYmIGouaGFzKHIpID8gSHQuU0FNUExFRCA6IEh0Lk5PTkU7XG59XG52YXIgWSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHQsIGEkMSwgbikge1xuICAgICAgdmFyIGUgPSBNZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIGlmICghKCFlIHx8ICFobihlKSB8fCBhKHQpKSkge1xuICAgICAgICB2YXIgaSA9IHQuZ2V0VmFsdWUobCkgfHwgZS50cmFjZUZsYWdzICYgMSwgdSA9IGUudHJhY2VJZCArIFwiLVwiICsgZS5zcGFuSWQgKyBcIi1cIiArIGk7XG4gICAgICAgIG4uc2V0KGEkMSwgZiwgdSk7XG4gICAgICB9XG4gICAgfSwgci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKHQsIGEsIG4pIHtcbiAgICAgIHZhciBlID0gbi5nZXQoYSwgZiksIGkgPSBBcnJheS5pc0FycmF5KGUpID8gZVswXSA6IGU7XG4gICAgICBpZiAodHlwZW9mIGkgIT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB2YXIgdSA9IGkubWF0Y2goSCk7XG4gICAgICBpZiAoIXUpXG4gICAgICAgIHJldHVybiB0O1xuICAgICAgdmFyIHMgPSBHKHUsIDQpLCBUID0gc1sxXSwgeSA9IHNbMl0sIF8gPSBzWzNdLCBJID0gTyhUKTtcbiAgICAgIGlmICghZHMoSSkgfHwgIXBzKHkpKVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIHZhciBMID0gSyhfKTtcbiAgICAgIHJldHVybiBfID09PSB3ICYmICh0ID0gdC5zZXRWYWx1ZShsLCBfKSksIE1lLnNldFNwYW5Db250ZXh0KHQsIHtcbiAgICAgICAgdHJhY2VJZDogSSxcbiAgICAgICAgc3BhbklkOiB5LFxuICAgICAgICBpc1JlbW90ZTogdHJ1ZSxcbiAgICAgICAgdHJhY2VGbGFnczogTFxuICAgICAgfSk7XG4gICAgfSwgci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW2ZdO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEU7XG4oZnVuY3Rpb24ocikge1xuICByW3IuU0lOR0xFX0hFQURFUiA9IDBdID0gXCJTSU5HTEVfSEVBREVSXCIsIHJbci5NVUxUSV9IRUFERVIgPSAxXSA9IFwiTVVMVElfSEVBREVSXCI7XG59KShFIHx8IChFID0ge30pKTtcbnZhciB6ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHQgPT09IHZvaWQgMCAmJiAodCA9IHt9KSwgdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IgPSBuZXcgVSgpLCB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IgPSBuZXcgWSgpLCB0LmluamVjdEVuY29kaW5nID09PSBFLk1VTFRJX0hFQURFUiA/ICh0aGlzLl9pbmplY3QgPSB0aGlzLl9iM011bHRpUHJvcGFnYXRvci5pbmplY3QsIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmZpZWxkcygpKSA6ICh0aGlzLl9pbmplY3QgPSB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuaW5qZWN0LCB0aGlzLl9maWVsZHMgPSB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuZmllbGRzKCkpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24odCwgYSQxLCBuKSB7XG4gICAgICBhKHQpIHx8IHRoaXMuX2luamVjdCh0LCBhJDEsIG4pO1xuICAgIH0sIHIucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbih0LCBhLCBuKSB7XG4gICAgICB2YXIgZSA9IG4uZ2V0KGEsIGYpLCBpID0gQXJyYXkuaXNBcnJheShlKSA/IGVbMF0gOiBlO1xuICAgICAgcmV0dXJuIGkgPyB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuZXh0cmFjdCh0LCBhLCBuKSA6IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmV4dHJhY3QodCwgYSwgbik7XG4gICAgfSwgci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH0sIHI7XG4gIH0pKClcbik7XG5cbmV4cG9ydCB7IEUgYXMgQjNJbmplY3RFbmNvZGluZywgeiBhcyBCM1Byb3BhZ2F0b3IsIGYgYXMgQjNfQ09OVEVYVF9IRUFERVIsIFMgYXMgWF9CM19GTEFHUywgQiBhcyBYX0IzX1BBUkVOVF9TUEFOX0lELCBjIGFzIFhfQjNfU0FNUExFRCwgZyBhcyBYX0IzX1NQQU5fSUQsIHYgYXMgWF9CM19UUkFDRV9JRCB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLFNBQVU7QUFDckUsU0FBUyxLQUFBQyxTQUFTO0FBRWxCLElBQUlDLElBQUlMLEVBQUcseUNBQXlDLEdBQUcsSUFBSSxNQUFNTSxJQUFJLGdCQUFnQixJQUFJLGVBQWVDLElBQUksZ0JBQWdCQyxJQUFJLHFCQUFxQkMsSUFBSSxjQUFjQyxJQUFvQixvQkFBSSxJQUFJLENBQUMsSUFBTSxRQUFRLFFBQVEsS0FBSyxDQUFDLENBQUMsR0FBR0MsSUFBb0Isb0JBQUksSUFBSSxDQUFDLElBQU8sU0FBUyxTQUFTLEtBQUssQ0FBQyxDQUFDO0FBQ2pTLFNBQVNDLEVBQUVDLEdBQUc7QUFDWixTQUFPQSxNQUFNWixFQUFHLFdBQVdZLE1BQU1aLEVBQUc7QUFDdEM7QUFDQSxTQUFTYSxFQUFFRCxHQUFHO0FBQ1osU0FBTyxNQUFNLFFBQVFBLENBQUMsSUFBSUEsRUFBRSxDQUFDLElBQUlBO0FBQ25DO0FBQ0EsU0FBU0UsRUFBRUYsR0FB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LGFBQVMzQixFQUFFRyxHQUFHO0FBQ1osTUFBQUEsTUFBTSxXQUFXQSxJQUFJLENBQUMsSUFBSSxLQUFLLHFCQUFxQixJQUFJTSxFQUFFLEdBQUcsS0FBSyxzQkFBc0IsSUFBSVcsRUFBRSxHQUFHakIsRUFBRSxtQkFBbUJ1QixFQUFFLGdCQUFnQixLQUFLLFVBQVUsS0FBSyxtQkFBbUIsUUFBUSxLQUFLLFVBQVUsS0FBSyxtQkFBbUIsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLG9CQUFvQixRQUFRLEtBQUssVUFBVSxLQUFLLG9CQUFvQixPQUFPO0FBQUEsSUFDNVU7QUFDQSxXQUFPMUIsRUFBRSxVQUFVLFNBQVMsU0FBU0csR0FBR08sR0FBS04sR0FBRztBQUM5QyxNQUFBYixFQUFFWSxDQUFDLEtBQUssS0FBSyxRQUFRQSxHQUFHTyxHQUFLTixDQUFDO0FBQUEsSUFDaEMsR0FBR0osRUFBRSxVQUFVLFVBQVUsU0FBU0csR0FBR1osR0FBR2EsR0FBRztBQUN6QyxVQUFJTyxJQUFJUCxFQUFFLElBQUliLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxRQUFRb0IsQ0FBQyxJQUFJQSxFQUFFLENBQUMsSUFBSUE7QUFDbkQsYUFBTyxJQUFJLEtBQUssb0JBQW9CLFFBQVFSLEdBQUdaLEdBQUdhLENBQUMsSUFBSSxLQUFLLG1CQUFtQixRQUFRRCxHQUFHWixHQUFHYSxDQUFDO0FBQUEsSUFDaEcsR0FBR0osRUFBRSxVQUFVLFNBQVMsV0FBVztBQUNqQyxhQUFPLEtBQUs7QUFBQSxJQUNkLEdBQUdBO0FBQUEsRUFDTCxHQUFHO0FBQUE7IiwKICAibmFtZXMiOiBbIk1lIiwgImhuIiwgIlppIiwgIkh0IiwgImRzIiwgInBzIiwgImEiLCAibCIsICJ2IiwgImMiLCAiQiIsICJTIiwgIkYiLCAiTiIsICJWIiwgInIiLCAibSIsICJkIiwgInQiLCAibiIsICJDIiwgIngiLCAiaCIsICJSIiwgIlUiLCAiYSQxIiwgImUiLCAidSIsICJzIiwgIkciLCAiSCIsICJYIiwgImoiLCAidyIsICJPIiwgIlkiLCAiVCIsICJ5IiwgIl8iLCAiSSIsICJMIiwgIkUiLCAieiJdCn0K
147
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtREhNZ2J3RVctIX57MDBtfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHggYXMgeGUsIFAgYXMgUG4sIG4gYXMgbnMsIFkgYXMgWXQsIGcgYXMgZ3MsIHcgYXMgd3MgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGEgfSBmcm9tICcuL3N1cHByZXNzLXRyYWNpbmctQmlpRUZyOEYtIX57MDBufX4uanMnO1xuXG52YXIgbCA9IG5zKFwiT3BlblRlbGVtZXRyeSBDb250ZXh0IEtleSBCMyBEZWJ1ZyBGbGFnXCIpLCBmID0gXCJiM1wiLCB2ID0gXCJ4LWIzLXRyYWNlaWRcIiwgZyA9IFwieC1iMy1zcGFuaWRcIiwgYyA9IFwieC1iMy1zYW1wbGVkXCIsIEIgPSBcIngtYjMtcGFyZW50c3BhbmlkXCIsIFMgPSBcIngtYjMtZmxhZ3NcIiwgRiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFt0cnVlLCBcInRydWVcIiwgXCJUcnVlXCIsIFwiMVwiLCAxXSksIE4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbZmFsc2UsIFwiZmFsc2VcIiwgXCJGYWxzZVwiLCBcIjBcIiwgMF0pO1xuZnVuY3Rpb24gVihyKSB7XG4gIHJldHVybiByID09PSBZdC5TQU1QTEVEIHx8IHIgPT09IFl0Lk5PTkU7XG59XG5mdW5jdGlvbiBtKHIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocikgPyByWzBdIDogcjtcbn1cbmZ1bmN0aW9uIGQociwgdCwgYSkge1xuICB2YXIgbiA9IHQuZ2V0KHIsIGEpO1xuICByZXR1cm4gbShuKTtcbn1cbmZ1bmN0aW9uIEMociwgdCkge1xuICB2YXIgYSA9IGQociwgdCwgdik7XG4gIHJldHVybiB0eXBlb2YgYSA9PSBcInN0cmluZ1wiID8gYS5wYWRTdGFydCgzMiwgXCIwXCIpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIHgociwgdCkge1xuICB2YXIgYSA9IGQociwgdCwgZyk7XG4gIHJldHVybiB0eXBlb2YgYSA9PSBcInN0cmluZ1wiID8gYSA6IFwiXCI7XG59XG5mdW5jdGlvbiBoKHIsIHQpIHtcbiAgdmFyIGEgPSBkKHIsIHQsIFMpO1xuICByZXR1cm4gYSA9PT0gXCIxXCIgPyBcIjFcIiA6IHZvaWQgMDtcbn1cbmZ1bmN0aW9uIFIociwgdCkge1xuICB2YXIgYSA9IGQociwgdCwgYyksIG4gPSBoKHIsIHQpO1xuICBpZiAobiA9PT0gXCIxXCIgfHwgRi5oYXMoYSkpXG4gICAgcmV0dXJuIFl0LlNBTVBMRUQ7XG4gIGlmIChhID09PSB2b2lkIDAgfHwgTi5oYXMoYSkpXG4gICAgcmV0dXJuIFl0Lk5PTkU7XG59XG52YXIgVSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHQsIGEkMSwgbikge1xuICAgICAgdmFyIGUgPSB4ZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIGlmICghKCFlIHx8ICFQbihlKSB8fCBhKHQpKSkge1xuICAgICAgICB2YXIgaSA9IHQuZ2V0VmFsdWUobCk7XG4gICAgICAgIG4uc2V0KGEkMSwgdiwgZS50cmFjZUlkKSwgbi5zZXQoYSQxLCBnLCBlLnNwYW5JZCksIGkgPT09IFwiMVwiID8gbi5zZXQoYSQxLCBTLCBpKSA6IGUudHJhY2VGbGFncyAhPT0gdm9pZCAwICYmIG4uc2V0KGEkMSwgYywgKFl0LlNBTVBMRUQgJiBlLnRyYWNlRmxhZ3MpID09PSBZdC5TQU1QTEVEID8gXCIxXCIgOiBcIjBcIik7XG4gICAgICB9XG4gICAgfSwgci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKHQsIGEsIG4pIHtcbiAgICAgIHZhciBlID0gQyhhLCBuKSwgaSA9IHgoYSwgbiksIHUgPSBSKGEsIG4pLCBzID0gaChhLCBuKTtcbiAgICAgIHJldHVybiBncyhlKSAmJiB3cyhpKSAmJiBWKHUpID8gKHQgPSB0LnNldFZhbHVlKGwsIHMpLCB4ZS5zZXRTcGFuQ29udGV4dCh0LCB7XG4gICAgICAgIHRyYWNlSWQ6IGUsXG4gICAgICAgIHNwYW5JZDogaSxcbiAgICAgICAgaXNSZW1vdGU6IHRydWUsXG4gICAgICAgIHRyYWNlRmxhZ3M6IHVcbiAgICAgIH0pKSA6IHQ7XG4gICAgfSwgci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB2LFxuICAgICAgICBnLFxuICAgICAgICBTLFxuICAgICAgICBjLFxuICAgICAgICBCXG4gICAgICBdO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEcgPSBmdW5jdGlvbihyLCB0KSB7XG4gIHZhciBhID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWEpIHJldHVybiByO1xuICB2YXIgbiA9IGEuY2FsbChyKSwgZSwgaSA9IFtdLCB1O1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEoZSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChlLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIHUgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGUgJiYgIWUuZG9uZSAmJiAoYSA9IG4ucmV0dXJuKSAmJiBhLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh1KSB0aHJvdyB1LmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIEggPSAvKCg/OlswLTlhLWZdezE2fSl7MSwyfSktKFswLTlhLWZdezE2fSkoPzotKFswMWRdKD8hWzAtOWEtZl0pKSk/KD86LShbMC05YS1mXXsxNn0pKT8vLCBYID0gXCIwXCIucmVwZWF0KDE2KSwgaiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcImRcIiwgXCIxXCJdKSwgdyA9IFwiZFwiO1xuZnVuY3Rpb24gTyhyKSB7XG4gIHJldHVybiByLmxlbmd0aCA9PT0gMzIgPyByIDogXCJcIiArIFggKyByO1xufVxuZnVuY3Rpb24gSyhyKSB7XG4gIHJldHVybiByICYmIGouaGFzKHIpID8gWXQuU0FNUExFRCA6IFl0Lk5PTkU7XG59XG52YXIgWSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHQsIGEkMSwgbikge1xuICAgICAgdmFyIGUgPSB4ZS5nZXRTcGFuQ29udGV4dCh0KTtcbiAgICAgIGlmICghKCFlIHx8ICFQbihlKSB8fCBhKHQpKSkge1xuICAgICAgICB2YXIgaSA9IHQuZ2V0VmFsdWUobCkgfHwgZS50cmFjZUZsYWdzICYgMSwgdSA9IGUudHJhY2VJZCArIFwiLVwiICsgZS5zcGFuSWQgKyBcIi1cIiArIGk7XG4gICAgICAgIG4uc2V0KGEkMSwgZiwgdSk7XG4gICAgICB9XG4gICAgfSwgci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKHQsIGEsIG4pIHtcbiAgICAgIHZhciBlID0gbi5nZXQoYSwgZiksIGkgPSBBcnJheS5pc0FycmF5KGUpID8gZVswXSA6IGU7XG4gICAgICBpZiAodHlwZW9mIGkgIT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB2YXIgdSA9IGkubWF0Y2goSCk7XG4gICAgICBpZiAoIXUpXG4gICAgICAgIHJldHVybiB0O1xuICAgICAgdmFyIHMgPSBHKHUsIDQpLCBUID0gc1sxXSwgeSA9IHNbMl0sIF8gPSBzWzNdLCBJID0gTyhUKTtcbiAgICAgIGlmICghZ3MoSSkgfHwgIXdzKHkpKVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIHZhciBMID0gSyhfKTtcbiAgICAgIHJldHVybiBfID09PSB3ICYmICh0ID0gdC5zZXRWYWx1ZShsLCBfKSksIHhlLnNldFNwYW5Db250ZXh0KHQsIHtcbiAgICAgICAgdHJhY2VJZDogSSxcbiAgICAgICAgc3BhbklkOiB5LFxuICAgICAgICBpc1JlbW90ZTogdHJ1ZSxcbiAgICAgICAgdHJhY2VGbGFnczogTFxuICAgICAgfSk7XG4gICAgfSwgci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW2ZdO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEU7XG4oZnVuY3Rpb24ocikge1xuICByW3IuU0lOR0xFX0hFQURFUiA9IDBdID0gXCJTSU5HTEVfSEVBREVSXCIsIHJbci5NVUxUSV9IRUFERVIgPSAxXSA9IFwiTVVMVElfSEVBREVSXCI7XG59KShFIHx8IChFID0ge30pKTtcbnZhciB6ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHQgPT09IHZvaWQgMCAmJiAodCA9IHt9KSwgdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IgPSBuZXcgVSgpLCB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IgPSBuZXcgWSgpLCB0LmluamVjdEVuY29kaW5nID09PSBFLk1VTFRJX0hFQURFUiA/ICh0aGlzLl9pbmplY3QgPSB0aGlzLl9iM011bHRpUHJvcGFnYXRvci5pbmplY3QsIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmZpZWxkcygpKSA6ICh0aGlzLl9pbmplY3QgPSB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuaW5qZWN0LCB0aGlzLl9maWVsZHMgPSB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuZmllbGRzKCkpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24odCwgYSQxLCBuKSB7XG4gICAgICBhKHQpIHx8IHRoaXMuX2luamVjdCh0LCBhJDEsIG4pO1xuICAgIH0sIHIucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbih0LCBhLCBuKSB7XG4gICAgICB2YXIgZSA9IG4uZ2V0KGEsIGYpLCBpID0gQXJyYXkuaXNBcnJheShlKSA/IGVbMF0gOiBlO1xuICAgICAgcmV0dXJuIGkgPyB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuZXh0cmFjdCh0LCBhLCBuKSA6IHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmV4dHJhY3QodCwgYSwgbik7XG4gICAgfSwgci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICAgIH0sIHI7XG4gIH0pKClcbik7XG5cbmV4cG9ydCB7IEUgYXMgQjNJbmplY3RFbmNvZGluZywgeiBhcyBCM1Byb3BhZ2F0b3IsIGYgYXMgQjNfQ09OVEVYVF9IRUFERVIsIFMgYXMgWF9CM19GTEFHUywgQiBhcyBYX0IzX1BBUkVOVF9TUEFOX0lELCBjIGFzIFhfQjNfU0FNUExFRCwgZyBhcyBYX0IzX1NQQU5fSUQsIHYgYXMgWF9CM19UUkFDRV9JRCB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLFNBQVU7QUFDckUsU0FBUyxLQUFBQyxTQUFTO0FBRWxCLElBQUlDLElBQUlMLEVBQUcseUNBQXlDLEdBQUcsSUFBSSxNQUFNTSxJQUFJLGdCQUFnQkMsSUFBSSxlQUFlQyxJQUFJLGdCQUFnQkMsSUFBSSxxQkFBcUJDLElBQUksY0FBY0MsSUFBb0Isb0JBQUksSUFBSSxDQUFDLElBQU0sUUFBUSxRQUFRLEtBQUssQ0FBQyxDQUFDLEdBQUdDLElBQW9CLG9CQUFJLElBQUksQ0FBQyxJQUFPLFNBQVMsU0FBUyxLQUFLLENBQUMsQ0FBQztBQUNqUyxTQUFTQyxFQUFFQyxHQUFHO0FBQ1osU0FBT0EsTUFBTWIsRUFBRyxXQUFXYSxNQUFNYixFQUFHO0FBQ3RDO0FBQ0EsU0FBU2MsRUFBRUQsR0FBRztBQUNaLFNBQU8sTUFBTSxRQUFRQSxDQUFDLElBQUlBLEVBQUUsQ0FBQyxJQUFJQTtBQUNuQztBQUNBLFNBQVNFLEVBQUVGLEdB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RCxXQUFXO0FBQ1YsYUFBUzNCLEVBQUVHLEdBQUc7QUFDWixNQUFBQSxNQUFNLFdBQVdBLElBQUksQ0FBQyxJQUFJLEtBQUsscUJBQXFCLElBQUlNLEVBQUUsR0FBRyxLQUFLLHNCQUFzQixJQUFJWSxFQUFFLEdBQUdsQixFQUFFLG1CQUFtQnVCLEVBQUUsZ0JBQWdCLEtBQUssVUFBVSxLQUFLLG1CQUFtQixRQUFRLEtBQUssVUFBVSxLQUFLLG1CQUFtQixPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssb0JBQW9CLFFBQVEsS0FBSyxVQUFVLEtBQUssb0JBQW9CLE9BQU87QUFBQSxJQUM1VTtBQUNBLFdBQU8xQixFQUFFLFVBQVUsU0FBUyxTQUFTRyxHQUFHTyxHQUFLTixHQUFHO0FBQzlDLE1BQUFkLEVBQUVhLENBQUMsS0FBSyxLQUFLLFFBQVFBLEdBQUdPLEdBQUtOLENBQUM7QUFBQSxJQUNoQyxHQUFHSixFQUFFLFVBQVUsVUFBVSxTQUFTRyxHQUFHYixHQUFHYyxHQUFHO0FBQ3pDLFVBQUlPLElBQUlQLEVBQUUsSUFBSWQsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLFFBQVFxQixDQUFDLElBQUlBLEVBQUUsQ0FBQyxJQUFJQTtBQUNuRCxhQUFPLElBQUksS0FBSyxvQkFBb0IsUUFBUVIsR0FBR2IsR0FBR2MsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLFFBQVFELEdBQUdiLEdBQUdjLENBQUM7QUFBQSxJQUNoRyxHQUFHSixFQUFFLFVBQVUsU0FBUyxXQUFXO0FBQ2pDLGFBQU8sS0FBSztBQUFBLElBQ2QsR0FBR0E7QUFBQSxFQUNMLEdBQUc7QUFBQTsiLAogICJuYW1lcyI6IFsieGUiLCAiUG4iLCAibnMiLCAiWXQiLCAiZ3MiLCAid3MiLCAiYSIsICJsIiwgInYiLCAiZyIsICJjIiwgIkIiLCAiUyIsICJGIiwgIk4iLCAiViIsICJyIiwgIm0iLCAiZCIsICJ0IiwgIm4iLCAiQyIsICJ4IiwgImgiLCAiUiIsICJVIiwgImEkMSIsICJlIiwgInUiLCAicyIsICJHIiwgIkgiLCAiWCIsICJqIiwgInciLCAiTyIsICJLIiwgIlkiLCAiVCIsICJ5IiwgIl8iLCAiSSIsICJFIiwgInoiXQp9Cg==