@getopenpay/openpay-js 0.3.3 → 0.3.5-alpha.15c8455

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.
@@ -0,0 +1,19 @@
1
+ function t(n) {
2
+ return n >= 48 && n <= 57 ? n - 48 : n >= 97 && n <= 102 ? n - 87 : n - 55;
3
+ }
4
+ function A(n) {
5
+ for (var f = new Uint8Array(n.length / 2), u = 0, r = 0; r < n.length; r += 2) {
6
+ var v = t(n.charCodeAt(r)), i = t(n.charCodeAt(r + 1));
7
+ f[u++] = v << 4 | i;
8
+ }
9
+ return f;
10
+ }
11
+ var a;
12
+ (function(n) {
13
+ n[n.SUCCESS = 0] = "SUCCESS", n[n.FAILED = 1] = "FAILED";
14
+ })(a || (a = {}));
15
+ export {
16
+ a as E,
17
+ A as h
18
+ };
19
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiRXhwb3J0UmVzdWx0LSF+ezAwY31+LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZnVuY3Rpb24gaW50VmFsdWUoY2hhckNvZGUpIHtcbiAgICAvLyAwLTlcbiAgICBpZiAoY2hhckNvZGUgPj0gNDggJiYgY2hhckNvZGUgPD0gNTcpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJDb2RlIC0gNDg7XG4gICAgfVxuICAgIC8vIGEtZlxuICAgIGlmIChjaGFyQ29kZSA+PSA5NyAmJiBjaGFyQ29kZSA8PSAxMDIpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJDb2RlIC0gODc7XG4gICAgfVxuICAgIC8vIEEtRlxuICAgIHJldHVybiBjaGFyQ29kZSAtIDU1O1xufVxuZnVuY3Rpb24gaGV4VG9CaW5hcnkoaGV4U3RyKSB7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGhleFN0ci5sZW5ndGggLyAyKTtcbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhleFN0ci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB2YXIgaGkgPSBpbnRWYWx1ZShoZXhTdHIuY2hhckNvZGVBdChpKSk7XG4gICAgICAgIHZhciBsbyA9IGludFZhbHVlKGhleFN0ci5jaGFyQ29kZUF0KGkgKyAxKSk7XG4gICAgICAgIGJ1ZltvZmZzZXQrK10gPSAoaGkgPDwgNCkgfCBsbztcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn1cblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBFeHBvcnRSZXN1bHRDb2RlO1xuKGZ1bmN0aW9uIChFeHBvcnRSZXN1bHRDb2RlKSB7XG4gICAgRXhwb3J0UmVzdWx0Q29kZVtFeHBvcnRSZXN1bHRDb2RlW1wiU1VDQ0VTU1wiXSA9IDBdID0gXCJTVUNDRVNTXCI7XG4gICAgRXhwb3J0UmVzdWx0Q29kZVtFeHBvcnRSZXN1bHRDb2RlW1wiRkFJTEVEXCJdID0gMV0gPSBcIkZBSUxFRFwiO1xufSkoRXhwb3J0UmVzdWx0Q29kZSB8fCAoRXhwb3J0UmVzdWx0Q29kZSA9IHt9KSk7XG5cbmV4cG9ydCB7IEV4cG9ydFJlc3VsdENvZGUgYXMgRSwgaGV4VG9CaW5hcnkgYXMgaCB9OyJdLAogICJtYXBwaW5ncyI6ICJBQWVBLFNBQVNBLEVBQVNDLEdBQVU7QUFFeEIsU0FBSUEsS0FBWSxNQUFNQSxLQUFZLEtBQ3ZCQSxJQUFXLEtBR2xCQSxLQUFZLE1BQU1BLEtBQVksTUFDdkJBLElBQVcsS0FHZkEsSUFBVztBQUN0QjtBQUNBLFNBQVNDLEVBQVlDLEdBQVE7QUFHekIsV0FGSUMsSUFBTSxJQUFJLFdBQVdELEVBQU8sU0FBUyxDQUFDLEdBQ3RDRSxJQUFTLEdBQ0pDLElBQUksR0FBR0EsSUFBSUgsRUFBTyxRQUFRRyxLQUFLLEdBQUc7QUFDdkMsUUFBSUMsSUFBS1AsRUFBU0csRUFBTyxXQUFXRyxDQUFDLENBQUMsR0FDbENFLElBQUtSLEVBQVNHLEVBQU8sV0FBV0csSUFBSSxDQUFDLENBQUM7QUFDMUMsSUFBQUYsRUFBSUMsR0FBUSxJQUFLRSxLQUFNLElBQUtDO0FBQUEsRUFDaEM7QUFDQSxTQUFPSjtBQUNYO0FBaUJBLElBQUlLO0FBQUEsQ0FDSCxTQUFVQSxHQUFrQjtBQUN6QixFQUFBQSxFQUFpQkEsRUFBaUIsVUFBYSxDQUFDLElBQUksV0FDcERBLEVBQWlCQSxFQUFpQixTQUFZLENBQUMsSUFBSTtBQUN2RCxHQUFHQSxNQUFxQkEsSUFBbUIsQ0FBQyxFQUFFOyIsCiAgIm5hbWVzIjogWyJpbnRWYWx1ZSIsICJjaGFyQ29kZSIsICJoZXhUb0JpbmFyeSIsICJoZXhTdHIiLCAiYnVmIiwgIm9mZnNldCIsICJpIiwgImhpIiwgImxvIiwgIkV4cG9ydFJlc3VsdENvZGUiXQp9Cg==
@@ -0,0 +1,176 @@
1
+ import { d as _ } from "./diag-api-B65gCteJ.js";
2
+ import { S as A, a as y, b as d, c as h, d as v } from "./sdk-info-Dx-d5sC4.js";
3
+ function E() {
4
+ return "unknown_service";
5
+ }
6
+ var f = function() {
7
+ return f = Object.assign || function(u) {
8
+ for (var n, e = 1, s = arguments.length; e < s; e++) {
9
+ n = arguments[e];
10
+ for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (u[i] = n[i]);
11
+ }
12
+ return u;
13
+ }, f.apply(this, arguments);
14
+ }, m = function(u, n, e, s) {
15
+ function i(t) {
16
+ return t instanceof e ? t : new e(function(a) {
17
+ a(t);
18
+ });
19
+ }
20
+ return new (e || (e = Promise))(function(t, a) {
21
+ function o(c) {
22
+ try {
23
+ r(s.next(c));
24
+ } catch (b) {
25
+ a(b);
26
+ }
27
+ }
28
+ function l(c) {
29
+ try {
30
+ r(s.throw(c));
31
+ } catch (b) {
32
+ a(b);
33
+ }
34
+ }
35
+ function r(c) {
36
+ c.done ? t(c.value) : i(c.value).then(o, l);
37
+ }
38
+ r((s = s.apply(u, n || [])).next());
39
+ });
40
+ }, S = function(u, n) {
41
+ var e = { label: 0, sent: function() {
42
+ if (t[0] & 1) throw t[1];
43
+ return t[1];
44
+ }, trys: [], ops: [] }, s, i, t, a;
45
+ return a = { next: o(0), throw: o(1), return: o(2) }, typeof Symbol == "function" && (a[Symbol.iterator] = function() {
46
+ return this;
47
+ }), a;
48
+ function o(r) {
49
+ return function(c) {
50
+ return l([r, c]);
51
+ };
52
+ }
53
+ function l(r) {
54
+ if (s) throw new TypeError("Generator is already executing.");
55
+ for (; e; ) try {
56
+ if (s = 1, i && (t = r[0] & 2 ? i.return : r[0] ? i.throw || ((t = i.return) && t.call(i), 0) : i.next) && !(t = t.call(i, r[1])).done) return t;
57
+ switch (i = 0, t && (r = [r[0] & 2, t.value]), r[0]) {
58
+ case 0:
59
+ case 1:
60
+ t = r;
61
+ break;
62
+ case 4:
63
+ return e.label++, { value: r[1], done: !1 };
64
+ case 5:
65
+ e.label++, i = r[1], r = [0];
66
+ continue;
67
+ case 7:
68
+ r = e.ops.pop(), e.trys.pop();
69
+ continue;
70
+ default:
71
+ if (t = e.trys, !(t = t.length > 0 && t[t.length - 1]) && (r[0] === 6 || r[0] === 2)) {
72
+ e = 0;
73
+ continue;
74
+ }
75
+ if (r[0] === 3 && (!t || r[1] > t[0] && r[1] < t[3])) {
76
+ e.label = r[1];
77
+ break;
78
+ }
79
+ if (r[0] === 6 && e.label < t[1]) {
80
+ e.label = t[1], t = r;
81
+ break;
82
+ }
83
+ if (t && e.label < t[2]) {
84
+ e.label = t[2], e.ops.push(r);
85
+ break;
86
+ }
87
+ t[2] && e.ops.pop(), e.trys.pop();
88
+ continue;
89
+ }
90
+ r = n.call(u, e);
91
+ } catch (c) {
92
+ r = [6, c], i = 0;
93
+ } finally {
94
+ s = t = 0;
95
+ }
96
+ if (r[0] & 5) throw r[1];
97
+ return { value: r[0] ? r[1] : void 0, done: !0 };
98
+ }
99
+ }, g = function(u, n) {
100
+ var e = typeof Symbol == "function" && u[Symbol.iterator];
101
+ if (!e) return u;
102
+ var s = e.call(u), i, t = [], a;
103
+ try {
104
+ for (; (n === void 0 || n-- > 0) && !(i = s.next()).done; ) t.push(i.value);
105
+ } catch (o) {
106
+ a = { error: o };
107
+ } finally {
108
+ try {
109
+ i && !i.done && (e = s.return) && e.call(s);
110
+ } finally {
111
+ if (a) throw a.error;
112
+ }
113
+ }
114
+ return t;
115
+ }, R = (
116
+ /** @class */
117
+ function() {
118
+ function u(n, e) {
119
+ var s = this, i;
120
+ this._attributes = n, this.asyncAttributesPending = e != null, this._syncAttributes = (i = this._attributes) !== null && i !== void 0 ? i : {}, this._asyncAttributesPromise = e == null ? void 0 : e.then(function(t) {
121
+ return s._attributes = Object.assign({}, s._attributes, t), s.asyncAttributesPending = !1, t;
122
+ }, function(t) {
123
+ return _.debug("a resource's async attributes promise rejected: %s", t), s.asyncAttributesPending = !1, {};
124
+ });
125
+ }
126
+ return u.empty = function() {
127
+ return u.EMPTY;
128
+ }, u.default = function() {
129
+ var n;
130
+ return new u((n = {}, n[A] = E(), n[y] = d[y], n[h] = d[h], n[v] = d[v], n));
131
+ }, Object.defineProperty(u.prototype, "attributes", {
132
+ get: function() {
133
+ var n;
134
+ return this.asyncAttributesPending && _.error("Accessing resource attributes before async attributes settled"), (n = this._attributes) !== null && n !== void 0 ? n : {};
135
+ },
136
+ enumerable: !1,
137
+ configurable: !0
138
+ }), u.prototype.waitForAsyncAttributes = function() {
139
+ return m(this, void 0, void 0, function() {
140
+ return S(this, function(n) {
141
+ switch (n.label) {
142
+ case 0:
143
+ return this.asyncAttributesPending ? [4, this._asyncAttributesPromise] : [3, 2];
144
+ case 1:
145
+ n.sent(), n.label = 2;
146
+ case 2:
147
+ return [
148
+ 2
149
+ /*return*/
150
+ ];
151
+ }
152
+ });
153
+ });
154
+ }, u.prototype.merge = function(n) {
155
+ var e = this, s;
156
+ if (!n)
157
+ return this;
158
+ var i = f(f({}, this._syncAttributes), (s = n._syncAttributes) !== null && s !== void 0 ? s : n.attributes);
159
+ if (!this._asyncAttributesPromise && !n._asyncAttributesPromise)
160
+ return new u(i);
161
+ var t = Promise.all([
162
+ this._asyncAttributesPromise,
163
+ n._asyncAttributesPromise
164
+ ]).then(function(a) {
165
+ var o, l = g(a, 2), r = l[0], c = l[1];
166
+ return f(f(f(f({}, e._syncAttributes), r), (o = n._syncAttributes) !== null && o !== void 0 ? o : n.attributes), c);
167
+ });
168
+ return new u(i, t);
169
+ }, u.EMPTY = new u({}), u;
170
+ }()
171
+ );
172
+ export {
173
+ R,
174
+ E as d
175
+ };
176
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiUmVzb3VyY2UtIX57MDA5fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGQgYXMgZGlhZyB9IGZyb20gJy4vZGlhZy1hcGktIX57MDA0fX4uanMnO1xuaW1wb3J0IHsgUyBhcyBTRU1SRVNBVFRSU19TRVJWSUNFX05BTUUsIGEgYXMgU0VNUkVTQVRUUlNfVEVMRU1FVFJZX1NES19MQU5HVUFHRSwgYiBhcyBTREtfSU5GTywgYyBhcyBTRU1SRVNBVFRSU19URUxFTUVUUllfU0RLX05BTUUsIGQgYXMgU0VNUkVTQVRUUlNfVEVMRU1FVFJZX1NES19WRVJTSU9OIH0gZnJvbSAnLi9zZGstaW5mby0hfnswMGF9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5mdW5jdGlvbiBkZWZhdWx0U2VydmljZU5hbWUoKSB7XG4gICAgcmV0dXJuICd1bmtub3duX3NlcnZpY2UnO1xufVxuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fYXNzaWduID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19yZWFkID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xuLyoqXG4gKiBBIFJlc291cmNlIGRlc2NyaWJlcyB0aGUgZW50aXR5IGZvciB3aGljaCBhIHNpZ25hbHMgKG1ldHJpY3Mgb3IgdHJhY2UpIGFyZVxuICogY29sbGVjdGVkLlxuICovXG52YXIgUmVzb3VyY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVzb3VyY2UoXG4gICAgLyoqXG4gICAgICogQSBkaWN0aW9uYXJ5IG9mIGF0dHJpYnV0ZXMgd2l0aCBzdHJpbmcga2V5cyBhbmQgdmFsdWVzIHRoYXQgcHJvdmlkZVxuICAgICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlbnRpdHkgYXMgbnVtYmVycywgc3RyaW5ncyBvciBib29sZWFuc1xuICAgICAqIFRPRE86IENvbnNpZGVyIHRvIGFkZCBjaGVjay92YWxpZGF0aW9uIG9uIGF0dHJpYnV0ZXMuXG4gICAgICovXG4gICAgYXR0cmlidXRlcywgYXN5bmNBdHRyaWJ1dGVzUHJvbWlzZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuICAgICAgICB0aGlzLmFzeW5jQXR0cmlidXRlc1BlbmRpbmcgPSBhc3luY0F0dHJpYnV0ZXNQcm9taXNlICE9IG51bGw7XG4gICAgICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVzID0gKF9hID0gdGhpcy5fYXR0cmlidXRlcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge307XG4gICAgICAgIHRoaXMuX2FzeW5jQXR0cmlidXRlc1Byb21pc2UgPSBhc3luY0F0dHJpYnV0ZXNQcm9taXNlID09PSBudWxsIHx8IGFzeW5jQXR0cmlidXRlc1Byb21pc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFzeW5jQXR0cmlidXRlc1Byb21pc2UudGhlbihmdW5jdGlvbiAoYXN5bmNBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBfdGhpcy5fYXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIF90aGlzLl9hdHRyaWJ1dGVzLCBhc3luY0F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgX3RoaXMuYXN5bmNBdHRyaWJ1dGVzUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIGFzeW5jQXR0cmlidXRlcztcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgZGlhZy5kZWJ1ZyhcImEgcmVzb3VyY2UncyBhc3luYyBhdHRyaWJ1dGVzIHByb21pc2UgcmVqZWN0ZWQ6ICVzXCIsIGVycik7XG4gICAgICAgICAgICBfdGhpcy5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGVtcHR5IFJlc291cmNlXG4gICAgICovXG4gICAgUmVzb3VyY2UuZW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZXNvdXJjZS5FTVBUWTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBSZXNvdXJjZSB0aGF0IGlkZW50aWZpZXMgdGhlIFNESyBpbiB1c2UuXG4gICAgICovXG4gICAgUmVzb3VyY2UuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlKChfYSA9IHt9LFxuICAgICAgICAgICAgX2FbU0VNUkVTQVRUUlNfU0VSVklDRV9OQU1FXSA9IGRlZmF1bHRTZXJ2aWNlTmFtZSgpLFxuICAgICAgICAgICAgX2FbU0VNUkVTQVRUUlNfVEVMRU1FVFJZX1NES19MQU5HVUFHRV0gPSBTREtfSU5GT1tTRU1SRVNBVFRSU19URUxFTUVUUllfU0RLX0xBTkdVQUdFXSxcbiAgICAgICAgICAgIF9hW1NFTVJFU0FUVFJTX1RFTEVNRVRSWV9TREtfTkFNRV0gPSBTREtfSU5GT1tTRU1SRVNBVFRSU19URUxFTUVUUllfU0RLX05BTUVdLFxuICAgICAgICAgICAgX2FbU0VNUkVTQVRUUlNfVEVMRU1FVFJZX1NES19WRVJTSU9OXSA9IFNES19JTkZPW1NFTVJFU0FUVFJTX1RFTEVNRVRSWV9TREtfVkVSU0lPTl0sXG4gICAgICAgICAgICBfYSkpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlc291cmNlLnByb3RvdHlwZSwgXCJhdHRyaWJ1dGVzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAodGhpcy5hc3luY0F0dHJpYnV0ZXNQZW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgZGlhZy5lcnJvcignQWNjZXNzaW5nIHJlc291cmNlIGF0dHJpYnV0ZXMgYmVmb3JlIGFzeW5jIGF0dHJpYnV0ZXMgc2V0dGxlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuX2F0dHJpYnV0ZXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHByb21pc2UgdGhhdCB3aWxsIG5ldmVyIGJlIHJlamVjdGVkLiBSZXNvbHZlcyB3aGVuIGFsbCBhc3luYyBhdHRyaWJ1dGVzIGhhdmUgZmluaXNoZWQgYmVpbmcgYWRkZWQgdG9cbiAgICAgKiB0aGlzIFJlc291cmNlJ3MgYXR0cmlidXRlcy4gVGhpcyBpcyB1c2VmdWwgaW4gZXhwb3J0ZXJzIHRvIGJsb2NrIHVudGlsIHJlc291cmNlIGRldGVjdGlvblxuICAgICAqIGhhcyBmaW5pc2hlZC5cbiAgICAgKi9cbiAgICBSZXNvdXJjZS5wcm90b3R5cGUud2FpdEZvckFzeW5jQXR0cmlidXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFzeW5jQXR0cmlidXRlc1BlbmRpbmcpIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdGhpcy5fYXN5bmNBdHRyaWJ1dGVzUHJvbWlzZV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIG5ldywgbWVyZ2VkIHtAbGluayBSZXNvdXJjZX0gYnkgbWVyZ2luZyB0aGUgY3VycmVudCBSZXNvdXJjZVxuICAgICAqIHdpdGggdGhlIG90aGVyIFJlc291cmNlLiBJbiBjYXNlIG9mIGEgY29sbGlzaW9uLCBvdGhlciBSZXNvdXJjZSB0YWtlc1xuICAgICAqIHByZWNlZGVuY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3RoZXIgdGhlIFJlc291cmNlIHRoYXQgd2lsbCBiZSBtZXJnZWQgd2l0aCB0aGlzLlxuICAgICAqIEByZXR1cm5zIHRoZSBuZXdseSBtZXJnZWQgUmVzb3VyY2UuXG4gICAgICovXG4gICAgUmVzb3VyY2UucHJvdG90eXBlLm1lcmdlID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFvdGhlcilcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAvLyBTcGFuQXR0cmlidXRlcyBmcm9tIG90aGVyIHJlc291cmNlIG92ZXJ3cml0ZSBhdHRyaWJ1dGVzIGZyb20gdGhpcyByZXNvdXJjZS5cbiAgICAgICAgdmFyIG1lcmdlZFN5bmNBdHRyaWJ1dGVzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMuX3N5bmNBdHRyaWJ1dGVzKSwgKChfYSA9IG90aGVyLl9zeW5jQXR0cmlidXRlcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogb3RoZXIuYXR0cmlidXRlcykpO1xuICAgICAgICBpZiAoIXRoaXMuX2FzeW5jQXR0cmlidXRlc1Byb21pc2UgJiZcbiAgICAgICAgICAgICFvdGhlci5fYXN5bmNBdHRyaWJ1dGVzUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZShtZXJnZWRTeW5jQXR0cmlidXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1lcmdlZEF0dHJpYnV0ZXNQcm9taXNlID0gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgdGhpcy5fYXN5bmNBdHRyaWJ1dGVzUHJvbWlzZSxcbiAgICAgICAgICAgIG90aGVyLl9hc3luY0F0dHJpYnV0ZXNQcm9taXNlLFxuICAgICAgICBdKS50aGVuKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iO1xuICAgICAgICAgICAgdmFyIF9jID0gX19yZWFkKF9hLCAyKSwgdGhpc0FzeW5jQXR0cmlidXRlcyA9IF9jWzBdLCBvdGhlckFzeW5jQXR0cmlidXRlcyA9IF9jWzFdO1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBfdGhpcy5fc3luY0F0dHJpYnV0ZXMpLCB0aGlzQXN5bmNBdHRyaWJ1dGVzKSwgKChfYiA9IG90aGVyLl9zeW5jQXR0cmlidXRlcykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogb3RoZXIuYXR0cmlidXRlcykpLCBvdGhlckFzeW5jQXR0cmlidXRlcyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlKG1lcmdlZFN5bmNBdHRyaWJ1dGVzLCBtZXJnZWRBdHRyaWJ1dGVzUHJvbWlzZSk7XG4gICAgfTtcbiAgICBSZXNvdXJjZS5FTVBUWSA9IG5ldyBSZXNvdXJjZSh7fSk7XG4gICAgcmV0dXJuIFJlc291cmNlO1xufSgpKTtcblxuZXhwb3J0IHsgUmVzb3VyY2UgYXMgUiwgZGVmYXVsdFNlcnZpY2VOYW1lIGFzIGQgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFNBQVk7QUFDMUIsU0FBUyxLQUFLQyxHQUEwQixLQUFLQyxHQUFvQyxLQUFLQyxHQUFVLEtBQUtDLEdBQWdDLEtBQUtDLFNBQXlDO0FBaUJuTCxTQUFTQyxJQUFxQjtBQUMxQixTQUFPO0FBQ1g7QUFpQkEsSUFBSUMsSUFBZ0QsV0FBWTtBQUM1RCxTQUFBQSxJQUFXLE9BQU8sVUFBVSxTQUFTQyxHQUFHO0FBQ3BDLGFBQVNDLEdBQUdDLElBQUksR0FBR0MsSUFBSSxVQUFVLFFBQVFELElBQUlDLEdBQUdELEtBQUs7QUFDakQsTUFBQUQsSUFBSSxVQUFVQyxDQUFDO0FBQ2YsZUFBU0UsS0FBS0gsRUFBRyxDQUFJLE9BQU8sVUFBVSxlQUFlLEtBQUtBLEdBQUdHLENBQUMsTUFDMURKLEVBQUVJLENBQUMsSUFBSUgsRUFBRUcsQ0FBQztBQUFBLElBQ2xCO0FBQ0EsV0FBT0o7QUFBQSxFQUNYLEdBQ09ELEVBQVMsTUFBTSxNQUFNLFNBQVM7QUFDekMsR0FDSU0sSUFBa0QsU0FBVUMsR0FBU0MsR0FBWUMsR0FBR0MsR0FBVztBQUMvRixXQUFTQyxFQUFNQyxHQUFPO0FBQUUsV0FBT0EsYUFBaUJILElBQUlHLElBQVEsSUFBSUgsRUFBRSxTQUFVSSxHQUFTO0FBQUUsTUFBQUEsRUFBUUQsQ0FBSztBQUFBLElBQUcsQ0FBQztBQUFBLEVBQUc7QUFDM0csU0FBTyxLQUFLSCxNQUFNQSxJQUFJLFVBQVUsU0FBVUksR0FBU0MsR0FBUTtBQUN2RCxhQUFTQyxFQUFVSCxHQUFPO0FBQUUsVUFBSTtBQUFFLFFBQUFJLEVBQUtOLEVBQVUsS0FBS0UsQ0FBSyxDQUFDO0FBQUEsTUFBRyxTQUFTSyxHQUFHO0FBQUUsUUFBQUgsRUFBT0csQ0FBQztBQUFBLE1BQUc7QUFBQSxJQUFFO0FBQzFGLGFBQVNDLEVBQVNOLEdBQU87QUFBRSxVQUFJO0FBQUUsUUFBQUksRUFB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QUksQ0FBQyxHQUFHUSxJQUFzQkQsRUFBRyxDQUFDLEdBQUdFLElBQXVCRixFQUFHLENBQUM7QUFDaEYsZUFBTzlDLEVBQVNBLEVBQVNBLEVBQVNBLEVBQVMsQ0FBQyxHQUFHc0MsRUFBTSxlQUFlLEdBQUdTLENBQW1CLElBQUtGLElBQUtILEVBQU0scUJBQXFCLFFBQVFHLE1BQU8sU0FBU0EsSUFBS0gsRUFBTSxVQUFXLEdBQUdNLENBQW9CO0FBQUEsTUFDeE0sQ0FBQztBQUNELGFBQU8sSUFBSWIsRUFBU1EsR0FBc0JDLENBQXVCO0FBQUEsSUFDckUsR0FDQVQsRUFBUyxRQUFRLElBQUlBLEVBQVMsQ0FBQyxDQUFDLEdBQ3pCQTtBQUFBLEVBQ1gsRUFBRTtBQUFBOyIsCiAgIm5hbWVzIjogWyJkaWFnIiwgIlNFTVJFU0FUVFJTX1NFUlZJQ0VfTkFNRSIsICJTRU1SRVNBVFRSU19URUxFTUVUUllfU0RLX0xBTkdVQUdFIiwgIlNES19JTkZPIiwgIlNFTVJFU0FUVFJTX1RFTEVNRVRSWV9TREtfTkFNRSIsICJTRU1SRVNBVFRSU19URUxFTUVUUllfU0RLX1ZFUlNJT04iLCAiZGVmYXVsdFNlcnZpY2VOYW1lIiwgIl9fYXNzaWduIiwgInQiLCAicyIsICJpIiwgIm4iLCAicCIsICJfX2F3YWl0ZXIiLCAidGhpc0FyZyIsICJfYXJndW1lbnRzIiwgIlAiLCAiZ2VuZXJhdG9yIiwgImFkb3B0IiwgInZhbHVlIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImZ1bGZpbGxlZCIsICJzdGVwIiwgImUiLCAicmVqZWN0ZWQiLCAicmVzdWx0IiwgIl9fZ2VuZXJhdG9yIiwgImJvZHkiLCAiXyIsICJmIiwgInkiLCAiZyIsICJ2ZXJiIiwgInYiLCAib3AiLCAiX19yZWFkIiwgIm8iLCAibSIsICJyIiwgImFyIiwgImVycm9yIiwgIlJlc291cmNlIiwgImF0dHJpYnV0ZXMiLCAiYXN5bmNBdHRyaWJ1dGVzUHJvbWlzZSIsICJfdGhpcyIsICJfYSIsICJhc3luY0F0dHJpYnV0ZXMiLCAiZXJyIiwgIm90aGVyIiwgIm1lcmdlZFN5bmNBdHRyaWJ1dGVzIiwgIm1lcmdlZEF0dHJpYnV0ZXNQcm9taXNlIiwgIl9iIiwgIl9jIiwgInRoaXNBc3luY0F0dHJpYnV0ZXMiLCAib3RoZXJBc3luY0F0dHJpYnV0ZXMiXQp9Cg==