@pie-lib/math-evaluator 3.0.0-next.0 → 3.1.0-next.0

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,306 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
6
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
7
+ var _index = _interopRequireWildcard(require("../index"));
8
+ var _lodash = _interopRequireDefault(require("lodash"));
9
+ var _templateObject, _templateObject2, _templateObject3;
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
11
+ describe('math-evaluator', function () {
12
+ describe('latexToText', function () {
13
+ var assertLatexToText = function assertLatexToText(input, expected) {
14
+ it("".concat(input, " => ").concat(expected), function () {
15
+ var result = (0, _index.latexToText)(input);
16
+ expect(result).toEqual(expected);
17
+ });
18
+ };
19
+ assertLatexToText('\\frac{ \\frac{1}{3}}{3}', '(1/3)/3');
20
+ assertLatexToText('\\neq', '0 != 0');
21
+ assertLatexToText('10 \\neq 20', '10 != 20');
22
+ assertLatexToText('10 \\neq', '10 != 0');
23
+ assertLatexToText('\\neq 10', '0 != 10');
24
+ assertLatexToText('40%', 'percent(40)');
25
+ assertLatexToText('%', 'percent(0)');
26
+ assertLatexToText('12%', 'percent(12)');
27
+ assertLatexToText('12\\%', 'percent(12)');
28
+ assertLatexToText('-12.5%', '- percent(12.5)');
29
+ assertLatexToText('-12.5\\%', '- percent(12.5)');
30
+ });
31
+ var assert = function assert(isEqual, opts) {
32
+ return function (label) {
33
+ return function () {
34
+ var args = Array.from(arguments);
35
+ var pairs = _lodash["default"].chunk(args, 2);
36
+ describe(label, function () {
37
+ pairs.forEach(function (_ref) {
38
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
39
+ a = _ref2[0],
40
+ b = _ref2[1];
41
+ it("".concat(a, " === ").concat(b, " ? ").concat(isEqual), function () {
42
+ expect((0, _index["default"])(a, b, opts)).toBe(isEqual);
43
+ });
44
+ });
45
+ });
46
+ };
47
+ };
48
+ };
49
+ var assertEqual = assert(true);
50
+ var assertNotEqual = assert(false);
51
+ var assertLatexEqual = assert(true, {
52
+ isLatex: true
53
+ });
54
+ var assertLatexNotEqual = assert(false, {
55
+ isLatex: true
56
+ });
57
+ var _amjs = function _amjs(only) {
58
+ return function (a, b, equal) {
59
+ var fn = only ? it.only : it;
60
+ fn("".concat(a, " === ").concat(b, " => ").concat(equal), function () {
61
+ var as = (0, _index.latexToText)(a);
62
+ var bs = (0, _index.latexToText)(b);
63
+ expect((0, _index.ave)(as, bs)).toEqual(equal);
64
+ });
65
+ };
66
+ };
67
+ var assertThroughMathJs = _amjs(false);
68
+ assertThroughMathJs.only = _amjs(true);
69
+ var _als = function _als(only) {
70
+ return function (input, expected) {
71
+ var fn = only ? it.only : it;
72
+ fn("".concat(input, " => ").concat(expected), function () {
73
+ expect((0, _index.latexToText)(input)).toEqual(expected);
74
+ });
75
+ };
76
+ };
77
+ var assertLatexFromString = _als(false);
78
+ assertLatexFromString.only = _als(true);
79
+ describe('ch6456', function () {
80
+ assertEqual('percent')('-12.5%', '-12.5%');
81
+ assertEqual('percent')('-12.5\\%', '-12.5%');
82
+ assertNotEqual('percent')('-11.5%', '-12.5%');
83
+ });
84
+ describe('ch6456 - latex', function () {
85
+ assertLatexEqual('percent')('\\frac{1}{2} -12.5%', '\\frac{2}{4} -12.5%');
86
+ assertLatexEqual('percent')('\\frac{1}{2} -12.5%', '\\frac{2}{4} -12.5\\%');
87
+ assertLatexNotEqual('percent')('\\frac{4}{2} -12.5%', '\\frac{2}{4} -12.5\\%');
88
+ assertLatexNotEqual('percent')('\\frac{2}{2} -12.5%', '\\frac{2}{4} -12.5\\%');
89
+ });
90
+ describe('PIE-188-math-expressions', function () {
91
+ // it('parses expressions correctly', async () => {
92
+
93
+ // geometry
94
+
95
+ // MULTIPLY WITH VARIABLE BASED
96
+ assertThroughMathJs('\\parallel x', '\\parallel x', true);
97
+ assertThroughMathJs('\\parallel x', '\\parallel x', true);
98
+ assertThroughMathJs('\\parallel x', '\\parallel 0', false);
99
+ assertThroughMathJs('\\overrightarrow{x + 4}', '\\overrightarrow {4 + x}', true);
100
+ assertThroughMathJs('\\overrightarrow{4x^2 + 4}', '\\overrightarrow {4x^2 + 8 - 4}', true);
101
+ assertThroughMathJs('\\overrightarrow{21*2*x}', '\\overrightarrow {42x}', true);
102
+ assertLatexFromString('\\nparallel x', 'nparallel x');
103
+ assertLatexFromString('\\overrightarrow{x}', 'overrightarrow x');
104
+ assertLatexFromString('\\overleftrightarrow{x}', 'overleftrightarrow x');
105
+ assertLatexFromString('\\perp x', 'perp x');
106
+ assertLatexFromString('\\angle x', 'angle x');
107
+ assertLatexFromString('\\overarc x', 'overarc x');
108
+ assertLatexFromString('\\measuredangle x', 'measuredangle x');
109
+ assertLatexFromString('\\triangle x', 'triangle x');
110
+ assertLatexFromString('\\parallelogram x', 'parallelogram x');
111
+ assertLatexFromString('\\odot x', 'odot x');
112
+ assertLatexFromString('\\degree x', 'degree x');
113
+ assertLatexFromString('\\sim x', 'sim x');
114
+ assertLatexFromString('\\cong x', 'cong x');
115
+ assertLatexFromString('\\ncong x', 'ncong x');
116
+ assertLatexFromString('\\napprox x', 'napprox x'); // UNRECOGNIZED BY LEARNOSITY
117
+ assertLatexFromString('\\nim x', 'nim x'); // UNRECOGNIZED BY LEARNOSITY
118
+ assertLatexFromString('\\sim x', 'sim x');
119
+ expect(function () {
120
+ return (0, _index.latexToText)('\\sim 4', {
121
+ unknownCommandBehavior: 'error'
122
+ });
123
+ }).toThrow();
124
+
125
+ // comparisons
126
+
127
+ assertLatexFromString('1 \\lt 2', '1 < 2');
128
+ assertLatexFromString('1 \\gt 2', '1 > 2');
129
+ assertLatexFromString('1 \\le 2', '1 ≤ 2');
130
+ assertLatexFromString('1 \\ge 2', '1 ≥ 2');
131
+
132
+ // exponents
133
+
134
+ assertLatexFromString('2^2', '2^2');
135
+ assertLatexFromString('2^{3}', '2^3');
136
+
137
+ // roots
138
+
139
+ assertLatexFromString('\\sqrt{2}', 'sqrt(2)');
140
+ assertLatexFromString('\\sqrt[{3}]{3}', '3^(1/3)');
141
+
142
+ // fractions
143
+
144
+ assertLatexFromString('\\frac{3}{3}', '3/3');
145
+ assertLatexFromString('\\frac{x}{3}', 'x/3');
146
+ assertLatexFromString('x\\frac{5}{3}', 'x (5/3)');
147
+
148
+ // ACTUAL OPERATOR BASED
149
+ assertLatexFromString('\\overline{x}', 'overline x');
150
+ assertLatexFromString('\\pm', 'pm');
151
+ assertLatexFromString('\\approx x', 'approx x');
152
+
153
+ // logarithms
154
+
155
+ assertLatexFromString("4'", "4'");
156
+ assertLatexFromString('\\log 4', 'log(4)');
157
+ assertLatexFromString('\\log(4x)', 'log(4 x)');
158
+ assertLatexFromString('\\ln 4', 'ln(4)');
159
+ assertLatexFromString('|4|', '|4|');
160
+ assertLatexFromString('(4)', '4');
161
+ assertLatexFromString('(4 + x) * 5', '(4 + x) * 5');
162
+ assertLatexFromString('[4]', '4');
163
+ assertLatexFromString('\\mu', 'μ');
164
+ assertLatexFromString('\\Sigma', 'Σ');
165
+ assertLatexFromString('x^{15}', 'x^15');
166
+ assertLatexFromString('x_{15}', 'x_15');
167
+
168
+ // Trigo
169
+
170
+ assertLatexFromString('\\sin(x)', 'sin(x)');
171
+ assertLatexFromString('\\cos(x)', 'cos(x)');
172
+ assertLatexFromString('\\tan(x)', 'tan(x)');
173
+ assertLatexFromString('\\sec(x)', 'sec(x)');
174
+ assertLatexFromString('\\csc(x)', 'csc(x)');
175
+ assertLatexFromString('\\cot(x)', 'cot(x)');
176
+ });
177
+
178
+ // assertNotEqual('custom latex')('1530', `\\odot`);
179
+ assertNotEqual('evaluates simple expressions correctly')('0', 'x', '3x', '4x');
180
+ assertEqual('evaluates simple expressions correctly')('x', 'x', '2x', '2x');
181
+ describe('bad frac throws error', function () {
182
+ it('throws an error', function () {
183
+ expect(function () {
184
+ return (0, _index["default"])('\\frac12', '\\frac34', {
185
+ isLatex: true
186
+ });
187
+ }).toThrow('Expecting {');
188
+ });
189
+ });
190
+ describe('7119', function () {
191
+ it.each(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n v | isEqual\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n "])), '4.5', true, '3.2 + 1.3', true, '(4 - \\frac{4}{5}) + 1.3', true, '\\frac{9}{2}', true, '4 \\frac{1}{2}', true, '\\frac{10}{2} - 0.5', true, '4.55', false)('$a == $isEqual', function (_ref3) {
192
+ var v = _ref3.v,
193
+ isEqual = _ref3.isEqual;
194
+ var result = (0, _index["default"])('4 \\frac{1}{2}', v, {
195
+ isLatex: true
196
+ });
197
+ expect(result).toEqual(isEqual);
198
+ });
199
+ it('?', function () {
200
+ expect((0, _index.latexToText)('4\\frac{1}{2}')).toEqual('4 + 1/2');
201
+ });
202
+ });
203
+ assertEqual('evaluates simple expressions correctly 2')('100', '100', '50 + 50', '25 * 4', '200 / 2', '20 * 5', '2.5 * 40', '10 * 10');
204
+ assertNotEqual('evaluates simple expressions correctly 2')('100', '0', '0', '50 * 2', '44 + 57', '100', '44 + 57', '50 * 3');
205
+ assertEqual('evaluates simple expressions correctly 3')('50 + 50', '100', '100 / 2 + 50', '100', '2 + 2', '4', '1/2 + .5', '1');
206
+ assertNotEqual('evaluates simple expressions correctly 3')('50 + 51', '100', '25 * 2 + 51', '100', '1/2 + .5', '1.9', '1/2 + .5', '1.1');
207
+ assertEqual('evaluates simple expressions correctly 4')('50 + 50', '100', '100 / 2 + 50', '100', '2 + 2', '4', '1/2 + .5', '1', '13/2', '13/2', '26/4', '13/2', '6 + 1/2', '13/2', '6.5', '13/2');
208
+ assertNotEqual('evaluates simple expressions correctly 4')('50 + 51', '100', '25 * 2 + 51', '100', '1/2 + .5', '1.9', '1/2 + .5', '1.1', '14/2', '13/2', '6.6', '13/2');
209
+ it.each(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n a | b\n ", " | ", "\n "])), '((x^2 + x) / x) - 1', 'x')('$a == $b', function (_ref4) {
210
+ var a = _ref4.a,
211
+ b = _ref4.b;
212
+ expect((0, _index["default"])(a, b)).toBe(true);
213
+ });
214
+ assertEqual('evaluates simple variable expressions correctly')('x', 'x', 'x + 0', 'x', '(x-2) + 2', 'x', '((x^2 + x) / x) - 1', 'x', '2x/2', 'x', '(x + 2)^2', '(x + 2)^2', 'x^2 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+1)', '(x + 2)^2', 'x^2 + 8 ((x+1) / 2)', '(x + 2)^2');
215
+ assertNotEqual('evaluates simple variable expressions correctly')('y', 'x', 'x + 1', 'x', 'x^3 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+2)', '(x + 2)^2');
216
+ assertEqual('evaluates simple variable expressions correctly 2')('(2 + x)^2', '(x + 2)^2', 'x^2 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+1)', '(x + 2)^2', 'x^2 + 8 ((x+1) / 2)', '(x + 2)^2');
217
+ assertEqual('evaluates expressions correctly with variable exponents')('(2 + x)^2x', '(x + 2)^2x', 'y^(2 x)', 'y^(x+x)');
218
+ assertEqual('evaluates function expressions correctly with variable parameters')('sqrt(4x)', 'sqrt(2x+2x)', 'sqrt(x^2)', 'sqrt(((x+1)^2) - ((x+1)^2) + x^2)');
219
+ assertNotEqual('evaluates simple variable expressions correctly 2')('x^3 + 4x + 4', '(x + 2)^2', 'x^2 + 4(x+2)', '(x + 2)^2');
220
+ it('correctly consumes allowDecimals option', function () {
221
+ expect((0, _index["default"])('123', '123', {
222
+ allowDecimals: true
223
+ })).toEqual(true);
224
+ expect((0, _index["default"])('123', '123.0', {
225
+ allowDecimals: true
226
+ })).toEqual(true);
227
+ expect((0, _index["default"])('123,0', '123.0', {
228
+ allowDecimals: true
229
+ })).toEqual(true);
230
+ expect((0, _index["default"])('123,0', '123.0', {
231
+ allowDecimals: false
232
+ })).toEqual(false);
233
+ expect((0, _index["default"])('123', '123.0', {
234
+ allowDecimals: false
235
+ })).toEqual(false);
236
+ expect((0, _index["default"])('123', '123,0', {
237
+ allowDecimals: false
238
+ })).toEqual(false);
239
+ });
240
+ it('correctly consumes allowDecimals option for complex examples too', function () {
241
+ expect((0, _index["default"])('1500000', '1500000', {
242
+ allowDecimals: true
243
+ })).toEqual(true);
244
+ expect((0, _index["default"])('1,500,000', '1,500,000', {
245
+ allowDecimals: true
246
+ })).toEqual(true);
247
+ expect((0, _index["default"])('1500000', '1,500,000', {
248
+ allowDecimals: true
249
+ })).toEqual(true);
250
+ expect((0, _index["default"])('1500000', '1,500,000.00', {
251
+ allowDecimals: true
252
+ })).toEqual(true);
253
+ expect((0, _index["default"])('1500000', '1,500,000.0', {
254
+ allowDecimals: true
255
+ })).toEqual(true);
256
+ expect((0, _index["default"])('1,500,000.0', '1,500,000.00', {
257
+ allowDecimals: true
258
+ })).toEqual(true);
259
+ expect((0, _index["default"])('1500000', '1,500000', {
260
+ allowDecimals: true
261
+ })).toEqual(false);
262
+ expect((0, _index["default"])('1500000', '1500,000', {
263
+ allowDecimals: true
264
+ })).toEqual(false);
265
+ expect((0, _index["default"])('1500000', '1,500,000.01', {
266
+ allowDecimals: true
267
+ })).toEqual(false);
268
+ expect((0, _index["default"])('1500000', '1,500,00,0', {
269
+ allowDecimals: true
270
+ })).toEqual(false);
271
+ expect((0, _index["default"])('1500000', '1500,000', {
272
+ allowDecimals: true
273
+ })).toEqual(false);
274
+ expect((0, _index["default"])('1500000', ',1500,000', {
275
+ allowDecimals: true
276
+ })).toEqual(false);
277
+ });
278
+ it('evaluates simple trigo expressions correctly', function () {
279
+ expect((0, _index["default"])('sin(x)', 'sin(x)')).toEqual(true);
280
+ expect((0, _index["default"])('tan(x)', 'tan(x)')).toEqual(true);
281
+ });
282
+ it('correctly creates math expressions 1', function () {
283
+ expect((0, _index["default"])('f^{-1}\\left(x\\right)=\\sqrt{x-1}+3', 'f^{-1}\\left(x\\right)=\\sqrt{x-1}+3', {
284
+ allowDecimals: true,
285
+ isLatex: true
286
+ })).toEqual(true);
287
+ });
288
+ it('correctly creates math expressions 2', function () {
289
+ expect((0, _index["default"])('72\\div12=6\\text{eggs}', '72\\div12=6\\text{eggs}', {
290
+ allowDecimals: true,
291
+ isLatex: true
292
+ })).toEqual(true);
293
+ });
294
+ describe('PD-3', function () {
295
+ it.each(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n a | b\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", " | ", "\n ", "\n ", "\n "])), '\\left(x\\right)^{ \\frac{1}{\\left(y + 3\\right)}}', '\\sqrt[\\left(y + 3\\right)]{x}', '\\left(x\\right)^{\\frac{1}{3}}', '\\sqrt[3]{x}', '\\left(x\\right)^{\\frac{1}{n}}', '\\sqrt[n]{x}', '\\left(x\\right)^{\\frac{1}{2}}', '\\sqrt{x}', '\\left(x-1\\right)^{\\frac{1}{2}}+3', '\\sqrt{x-1}+3', 'f^{-1}\\left(x\\right)=\\left(x-1\\right)^{\\frac{1}{2}}+3', 'f^{-1}\\left(x\\right)=\\sqrt{x-1}+3')('$a == $b', function (_ref5) {
296
+ var a = _ref5.a,
297
+ b = _ref5.b;
298
+ var opts = {
299
+ allowDecimals: true,
300
+ isLatex: true
301
+ };
302
+ expect((0, _index["default"])(a, b, opts)).toBeTruthy();
303
+ });
304
+ });
305
+ });
306
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjcmliZSIsImFzc2VydExhdGV4VG9UZXh0IiwiaW5wdXQiLCJleHBlY3RlZCIsIml0IiwiY29uY2F0IiwicmVzdWx0IiwibGF0ZXhUb1RleHQiLCJleHBlY3QiLCJ0b0VxdWFsIiwiYXNzZXJ0IiwiaXNFcXVhbCIsIm9wdHMiLCJsYWJlbCIsImFyZ3MiLCJBcnJheSIsImZyb20iLCJhcmd1bWVudHMiLCJwYWlycyIsIl8iLCJjaHVuayIsImZvckVhY2giLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJhIiwiYiIsImFyZVZhbHVlc0VxdWFsIiwidG9CZSIsImFzc2VydEVxdWFsIiwiYXNzZXJ0Tm90RXF1YWwiLCJhc3NlcnRMYXRleEVxdWFsIiwiaXNMYXRleCIsImFzc2VydExhdGV4Tm90RXF1YWwiLCJfYW1qcyIsIm9ubHkiLCJlcXVhbCIsImZuIiwiYXMiLCJicyIsImF2ZSIsImFzc2VydFRocm91Z2hNYXRoSnMiLCJfYWxzIiwiYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nIiwidW5rbm93bkNvbW1hbmRCZWhhdmlvciIsInRvVGhyb3ciLCJlYWNoIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJfcmVmMyIsInYiLCJfcmVmNCIsImFsbG93RGVjaW1hbHMiLCJfcmVmNSIsInRvQmVUcnV0aHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2luZGV4LnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFyZVZhbHVlc0VxdWFsLCB7IGF2ZSwgbGF0ZXhUb1RleHQgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5kZXNjcmliZSgnbWF0aC1ldmFsdWF0b3InLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdsYXRleFRvVGV4dCcsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRMYXRleFRvVGV4dCA9IChpbnB1dCwgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGl0KGAke2lucHV0fSA9PiAke2V4cGVjdGVkfWAsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbGF0ZXhUb1RleHQoaW5wdXQpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJ1xcXFxmcmFjeyBcXFxcZnJhY3sxfXszfX17M30nLCAnKDEvMykvMycpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCdcXFxcbmVxJywgJzAgIT0gMCcpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCcxMCBcXFxcbmVxIDIwJywgJzEwICE9IDIwJyk7XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJzEwIFxcXFxuZXEnLCAnMTAgIT0gMCcpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCdcXFxcbmVxIDEwJywgJzAgIT0gMTAnKTtcbiAgICBhc3NlcnRMYXRleFRvVGV4dCgnNDAlJywgJ3BlcmNlbnQoNDApJyk7XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJyUnLCAncGVyY2VudCgwKScpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCcxMiUnLCAncGVyY2VudCgxMiknKTtcbiAgICBhc3NlcnRMYXRleFRvVGV4dCgnMTJcXFxcJScsICdwZXJjZW50KDEyKScpO1xuICAgIGFzc2VydExhdGV4VG9UZXh0KCctMTIuNSUnLCAnLSBwZXJjZW50KDEyLjUpJyk7XG4gICAgYXNzZXJ0TGF0ZXhUb1RleHQoJy0xMi41XFxcXCUnLCAnLSBwZXJjZW50KDEyLjUpJyk7XG4gIH0pO1xuXG4gIGNvbnN0IGFzc2VydCA9IChpc0VxdWFsLCBvcHRzKSA9PiAobGFiZWwpID0+XG4gICAgZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpO1xuICAgICAgY29uc3QgcGFpcnMgPSBfLmNodW5rKGFyZ3MsIDIpO1xuXG4gICAgICBkZXNjcmliZShsYWJlbCwgKCkgPT4ge1xuICAgICAgICBwYWlycy5mb3JFYWNoKChbYSwgYl0pID0+IHtcbiAgICAgICAgICBpdChgJHthfSA9PT0gJHtifSA/ICR7aXNFcXVhbH1gLCAoKSA9PiB7XG4gICAgICAgICAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoYSwgYiwgb3B0cykpLnRvQmUoaXNFcXVhbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICBjb25zdCBhc3NlcnRFcXVhbCA9IGFzc2VydCh0cnVlKTtcbiAgY29uc3QgYXNzZXJ0Tm90RXF1YWwgPSBhc3NlcnQoZmFsc2UpO1xuXG4gIGNvbnN0IGFzc2VydExhdGV4RXF1YWwgPSBhc3NlcnQodHJ1ZSwgeyBpc0xhdGV4OiB0cnVlIH0pO1xuICBjb25zdCBhc3NlcnRMYXRleE5vdEVxdWFsID0gYXNzZXJ0KGZhbHNlLCB7IGlzTGF0ZXg6IHRydWUgfSk7XG5cbiAgY29uc3QgX2FtanMgPSAob25seSkgPT4gKGEsIGIsIGVxdWFsKSA9PiB7XG4gICAgY29uc3QgZm4gPSBvbmx5ID8gaXQub25seSA6IGl0O1xuICAgIGZuKGAke2F9ID09PSAke2J9ID0+ICR7ZXF1YWx9YCwgKCkgPT4ge1xuICAgICAgY29uc3QgYXMgPSBsYXRleFRvVGV4dChhKTtcbiAgICAgIGNvbnN0IGJzID0gbGF0ZXhUb1RleHQoYik7XG4gICAgICBleHBlY3QoYXZlKGFzLCBicykpLnRvRXF1YWwoZXF1YWwpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGFzc2VydFRocm91Z2hNYXRoSnMgPSBfYW1qcyhmYWxzZSk7XG4gIGFzc2VydFRocm91Z2hNYXRoSnMub25seSA9IF9hbWpzKHRydWUpO1xuXG4gIGNvbnN0IF9hbHMgPSAob25seSkgPT4gKGlucHV0LCBleHBlY3RlZCkgPT4ge1xuICAgIGNvbnN0IGZuID0gb25seSA/IGl0Lm9ubHkgOiBpdDtcbiAgICBmbihgJHtpbnB1dH0gPT4gJHtleHBlY3RlZH1gLCAoKSA9PiB7XG4gICAgICBleHBlY3QobGF0ZXhUb1RleHQoaW5wdXQpKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBhc3NlcnRMYXRleEZyb21TdHJpbmcgPSBfYWxzKGZhbHNlKTtcbiAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nLm9ubHkgPSBfYWxzKHRydWUpO1xuXG4gIGRlc2NyaWJlKCdjaDY0NTYnLCAoKSA9PiB7XG4gICAgYXNzZXJ0RXF1YWwoJ3BlcmNlbnQnKSgnLTEyLjUlJywgJy0xMi41JScpO1xuICAgIGFzc2VydEVxdWFsKCdwZXJjZW50JykoJy0xMi41XFxcXCUnLCAnLTEyLjUlJyk7XG4gICAgYXNzZXJ0Tm90RXF1YWwoJ3BlcmNlbnQnKSgnLTExLjUlJywgJy0xMi41JScpO1xuICB9KTtcblxuICBkZXNjcmliZSgnY2g2NDU2IC0gbGF0ZXgnLCAoKSA9PiB7XG4gICAgYXNzZXJ0TGF0ZXhFcXVhbCgncGVyY2VudCcpKCdcXFxcZnJhY3sxfXsyfSAtMTIuNSUnLCAnXFxcXGZyYWN7Mn17NH0gLTEyLjUlJyk7XG4gICAgYXNzZXJ0TGF0ZXhFcXVhbCgncGVyY2VudCcpKCdcXFxcZnJhY3sxfXsyfSAtMTIuNSUnLCAnXFxcXGZyYWN7Mn17NH0gLTEyLjVcXFxcJScpO1xuICAgIGFzc2VydExhdGV4Tm90RXF1YWwoJ3BlcmNlbnQnKSgnXFxcXGZyYWN7NH17Mn0gLTEyLjUlJywgJ1xcXFxmcmFjezJ9ezR9IC0xMi41XFxcXCUnKTtcbiAgICBhc3NlcnRMYXRleE5vdEVxdWFsKCdwZXJjZW50JykoJ1xcXFxmcmFjezJ9ezJ9IC0xMi41JScsICdcXFxcZnJhY3syfXs0fSAtMTIuNVxcXFwlJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQSUUtMTg4LW1hdGgtZXhwcmVzc2lvbnMnLCAoKSA9PiB7XG4gICAgLy8gaXQoJ3BhcnNlcyBleHByZXNzaW9ucyBjb3JyZWN0bHknLCBhc3luYyAoKSA9PiB7XG5cbiAgICAvLyBnZW9tZXRyeVxuXG4gICAgLy8gTVVMVElQTFkgV0lUSCBWQVJJQUJMRSBCQVNFRFxuICAgIGFzc2VydFRocm91Z2hNYXRoSnMoJ1xcXFxwYXJhbGxlbCB4JywgJ1xcXFxwYXJhbGxlbCB4JywgdHJ1ZSk7XG4gICAgYXNzZXJ0VGhyb3VnaE1hdGhKcygnXFxcXHBhcmFsbGVsIHgnLCAnXFxcXHBhcmFsbGVsICAgeCcsIHRydWUpO1xuICAgIGFzc2VydFRocm91Z2hNYXRoSnMoJ1xcXFxwYXJhbGxlbCB4JywgJ1xcXFxwYXJhbGxlbCAgIDAnLCBmYWxzZSk7XG4gICAgYXNzZXJ0VGhyb3VnaE1hdGhKcygnXFxcXG92ZXJyaWdodGFycm93e3ggKyA0fScsICdcXFxcb3ZlcnJpZ2h0YXJyb3cgezQgKyB4fScsIHRydWUpO1xuICAgIGFzc2VydFRocm91Z2hNYXRoSnMoJ1xcXFxvdmVycmlnaHRhcnJvd3s0eF4yICsgNH0nLCAnXFxcXG92ZXJyaWdodGFycm93IHs0eF4yICsgOCAtIDR9JywgdHJ1ZSk7XG4gICAgYXNzZXJ0VGhyb3VnaE1hdGhKcygnXFxcXG92ZXJyaWdodGFycm93ezIxKjIqeH0nLCAnXFxcXG92ZXJyaWdodGFycm93IHs0Mnh9JywgdHJ1ZSk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcbnBhcmFsbGVsIHgnLCAnbnBhcmFsbGVsIHgnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxvdmVycmlnaHRhcnJvd3t4fScsICdvdmVycmlnaHRhcnJvdyB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcb3ZlcmxlZnRyaWdodGFycm93e3h9JywgJ292ZXJsZWZ0cmlnaHRhcnJvdyB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxccGVycCB4JywgJ3BlcnAgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXGFuZ2xlIHgnLCAnYW5nbGUgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG92ZXJhcmMgeCcsICdvdmVyYXJjIHgnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxtZWFzdXJlZGFuZ2xlIHgnLCAnbWVhc3VyZWRhbmdsZSB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcdHJpYW5nbGUgeCcsICd0cmlhbmdsZSB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxccGFyYWxsZWxvZ3JhbSB4JywgJ3BhcmFsbGVsb2dyYW0geCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG9kb3QgeCcsICdvZG90IHgnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxkZWdyZWUgeCcsICdkZWdyZWUgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNpbSB4JywgJ3NpbSB4Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcY29uZyB4JywgJ2NvbmcgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG5jb25nIHgnLCAnbmNvbmcgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG5hcHByb3ggeCcsICduYXBwcm94IHgnKTsgLy8gVU5SRUNPR05JWkVEIEJZIExFQVJOT1NJVFlcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxuaW0geCcsICduaW0geCcpOyAvLyBVTlJFQ09HTklaRUQgQlkgTEVBUk5PU0lUWVxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNpbSB4JywgJ3NpbSB4Jyk7XG4gICAgZXhwZWN0KCgpID0+IGxhdGV4VG9UZXh0KCdcXFxcc2ltIDQnLCB7IHVua25vd25Db21tYW5kQmVoYXZpb3I6ICdlcnJvcicgfSkpLnRvVGhyb3coKTtcblxuICAgIC8vIGNvbXBhcmlzb25zXG5cbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJzEgXFxcXGx0IDInLCAnMSA8IDInKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnMSBcXFxcZ3QgMicsICcxID4gMicpO1xuXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCcxIFxcXFxsZSAyJywgJzEg4omkIDInKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnMSBcXFxcZ2UgMicsICcxIOKJpSAyJyk7XG5cbiAgICAvLyBleHBvbmVudHNcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnMl4yJywgJzJeMicpO1xuXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCcyXnszfScsICcyXjMnKTtcblxuICAgIC8vIHJvb3RzXG5cbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxzcXJ0ezJ9JywgJ3NxcnQoMiknKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNxcnRbezN9XXszfScsICczXigxLzMpJyk7XG5cbiAgICAvLyBmcmFjdGlvbnNcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXGZyYWN7M317M30nLCAnMy8zJyk7XG5cbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxmcmFje3h9ezN9JywgJ3gvMycpO1xuXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCd4XFxcXGZyYWN7NX17M30nLCAneCAoNS8zKScpO1xuXG4gICAgLy8gQUNUVUFMIE9QRVJBVE9SIEJBU0VEXG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcb3ZlcmxpbmV7eH0nLCAnb3ZlcmxpbmUgeCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHBtJywgJ3BtJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcYXBwcm94IHgnLCAnYXBwcm94IHgnKTtcblxuICAgIC8vIGxvZ2FyaXRobXNcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZyhcIjQnXCIsIFwiNCdcIik7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcbG9nIDQnLCAnbG9nKDQpJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcbG9nKDR4KScsICdsb2coNCB4KScpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXGxuIDQnLCAnbG4oNCknKTtcblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnfDR8JywgJ3w0fCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnKDQpJywgJzQnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJyg0ICsgeCkgKiA1JywgJyg0ICsgeCkgKiA1Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdbNF0nLCAnNCcpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXG11JywgJ868Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcU2lnbWEnLCAnzqMnKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ3heezE1fScsICd4XjE1Jyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCd4X3sxNX0nLCAneF8xNScpO1xuXG4gICAgLy8gVHJpZ29cblxuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNpbih4KScsICdzaW4oeCknKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxjb3MoeCknLCAnY29zKHgpJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcdGFuKHgpJywgJ3Rhbih4KScpO1xuICAgIGFzc2VydExhdGV4RnJvbVN0cmluZygnXFxcXHNlYyh4KScsICdzZWMoeCknKTtcbiAgICBhc3NlcnRMYXRleEZyb21TdHJpbmcoJ1xcXFxjc2MoeCknLCAnY3NjKHgpJyk7XG4gICAgYXNzZXJ0TGF0ZXhGcm9tU3RyaW5nKCdcXFxcY290KHgpJywgJ2NvdCh4KScpO1xuICB9KTtcblxuICAvLyBhc3NlcnROb3RFcXVhbCgnY3VzdG9tIGxhdGV4JykoJzE1MzAnLCBgXFxcXG9kb3RgKTtcbiAgYXNzZXJ0Tm90RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5JykoJzAnLCAneCcsICczeCcsICc0eCcpO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseScpKCd4JywgJ3gnLCAnMngnLCAnMngnKTtcblxuICBkZXNjcmliZSgnYmFkIGZyYWMgdGhyb3dzIGVycm9yJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3MgYW4gZXJyb3InLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4gYXJlVmFsdWVzRXF1YWwoJ1xcXFxmcmFjMTInLCAnXFxcXGZyYWMzNCcsIHsgaXNMYXRleDogdHJ1ZSB9KSkudG9UaHJvdygnRXhwZWN0aW5nIHsnKTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCc3MTE5JywgKCkgPT4ge1xuICAgIGl0LmVhY2hgXG4gICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlzRXF1YWxcbiAgICAgICR7JzQuNSd9ICAgICAgICAgICAgICAgICAgICAgIHwgJHt0cnVlfVxuICAgICAgJHsnMy4yICsgMS4zJ30gICAgICAgICAgICAgICAgfCAke3RydWV9XG4gICAgICAkeycoNCAtIFxcXFxmcmFjezR9ezV9KSArIDEuMyd9IHwgJHt0cnVlfVxuICAgICAgJHsnXFxcXGZyYWN7OX17Mn0nfSAgICAgICAgICAgICB8ICR7dHJ1ZX1cbiAgICAgICR7JzQgXFxcXGZyYWN7MX17Mn0nfSAgICAgICAgICAgfCAke3RydWV9XG4gICAgICAkeydcXFxcZnJhY3sxMH17Mn0gLSAwLjUnfSAgICAgIHwgJHt0cnVlfVxuICAgICAgJHsnNC41NSd9ICAgICAgICAgICAgICAgICAgICAgfCAke2ZhbHNlfVxuICAgIGAoJyRhID09ICRpc0VxdWFsJywgKHsgdiwgaXNFcXVhbCB9KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhcmVWYWx1ZXNFcXVhbCgnNCBcXFxcZnJhY3sxfXsyfScsIHYsIHsgaXNMYXRleDogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoaXNFcXVhbCk7XG4gICAgfSk7XG5cbiAgICBpdCgnPycsICgpID0+IHtcbiAgICAgIGV4cGVjdChsYXRleFRvVGV4dCgnNFxcXFxmcmFjezF9ezJ9JykpLnRvRXF1YWwoJzQgKyAxLzInKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXNzZXJ0RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5IDInKShcbiAgICAnMTAwJyxcbiAgICAnMTAwJyxcbiAgICAnNTAgKyA1MCcsXG4gICAgJzI1ICogNCcsXG4gICAgJzIwMCAvIDInLFxuICAgICcyMCAqIDUnLFxuICAgICcyLjUgKiA0MCcsXG4gICAgJzEwICogMTAnLFxuICApO1xuXG4gIGFzc2VydE5vdEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSAyJykoXG4gICAgJzEwMCcsXG4gICAgJzAnLFxuICAgICcwJyxcbiAgICAnNTAgKiAyJyxcbiAgICAnNDQgKyA1NycsXG4gICAgJzEwMCcsXG4gICAgJzQ0ICsgNTcnLFxuICAgICc1MCAqIDMnLFxuICApO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSAzJykoXG4gICAgJzUwICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcxMDAgLyAyICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcyICsgMicsXG4gICAgJzQnLFxuICAgICcxLzIgKyAuNScsXG4gICAgJzEnLFxuICApO1xuXG4gIGFzc2VydE5vdEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSAzJykoXG4gICAgJzUwICsgNTEnLFxuICAgICcxMDAnLFxuICAgICcyNSAqIDIgKyA1MScsXG4gICAgJzEwMCcsXG4gICAgJzEvMiArIC41JyxcbiAgICAnMS45JyxcbiAgICAnMS8yICsgLjUnLFxuICAgICcxLjEnLFxuICApO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIGV4cHJlc3Npb25zIGNvcnJlY3RseSA0JykoXG4gICAgJzUwICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcxMDAgLyAyICsgNTAnLFxuICAgICcxMDAnLFxuICAgICcyICsgMicsXG4gICAgJzQnLFxuICAgICcxLzIgKyAuNScsXG4gICAgJzEnLFxuICAgICcxMy8yJyxcbiAgICAnMTMvMicsXG4gICAgJzI2LzQnLFxuICAgICcxMy8yJyxcbiAgICAnNiArIDEvMicsXG4gICAgJzEzLzInLFxuICAgICc2LjUnLFxuICAgICcxMy8yJyxcbiAgKTtcblxuICBhc3NlcnROb3RFcXVhbCgnZXZhbHVhdGVzIHNpbXBsZSBleHByZXNzaW9ucyBjb3JyZWN0bHkgNCcpKFxuICAgICc1MCArIDUxJyxcbiAgICAnMTAwJyxcbiAgICAnMjUgKiAyICsgNTEnLFxuICAgICcxMDAnLFxuICAgICcxLzIgKyAuNScsXG4gICAgJzEuOScsXG4gICAgJzEvMiArIC41JyxcbiAgICAnMS4xJyxcbiAgICAnMTQvMicsXG4gICAgJzEzLzInLFxuICAgICc2LjYnLFxuICAgICcxMy8yJyxcbiAgKTtcblxuICBpdC5lYWNoYFxuICAgIGEgICAgICAgICAgICAgICAgICAgICAgICB8IGJcbiAgICAkeycoKHheMiArIHgpIC8geCkgLSAxJ30gfCAkeyd4J31cbiAgYCgnJGEgPT0gJGInLCAoeyBhLCBiIH0pID0+IHtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoYSwgYikpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGFzc2VydEVxdWFsKCdldmFsdWF0ZXMgc2ltcGxlIHZhcmlhYmxlIGV4cHJlc3Npb25zIGNvcnJlY3RseScpKFxuICAgICd4JyxcbiAgICAneCcsXG4gICAgJ3ggKyAwJyxcbiAgICAneCcsXG4gICAgJyh4LTIpICsgMicsXG4gICAgJ3gnLFxuICAgICcoKHheMiArIHgpIC8geCkgLSAxJyxcbiAgICAneCcsXG4gICAgJzJ4LzInLFxuICAgICd4JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNHggKyA0JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNCh4KzEpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgOCAoKHgrMSkgLyAyKScsXG4gICAgJyh4ICsgMileMicsXG4gICk7XG5cbiAgYXNzZXJ0Tm90RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgdmFyaWFibGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5JykoXG4gICAgJ3knLFxuICAgICd4JyxcbiAgICAneCArIDEnLFxuICAgICd4JyxcbiAgICAneF4zICsgNHggKyA0JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNCh4KzIpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgKTtcblxuICBhc3NlcnRFcXVhbCgnZXZhbHVhdGVzIHNpbXBsZSB2YXJpYWJsZSBleHByZXNzaW9ucyBjb3JyZWN0bHkgMicpKFxuICAgICcoMiArIHgpXjInLFxuICAgICcoeCArIDIpXjInLFxuICAgICd4XjIgKyA0eCArIDQnLFxuICAgICcoeCArIDIpXjInLFxuICAgICd4XjIgKyA0KHgrMSknLFxuICAgICcoeCArIDIpXjInLFxuICAgICd4XjIgKyA4ICgoeCsxKSAvIDIpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgKTtcblxuICBhc3NlcnRFcXVhbCgnZXZhbHVhdGVzIGV4cHJlc3Npb25zIGNvcnJlY3RseSB3aXRoIHZhcmlhYmxlIGV4cG9uZW50cycpKFxuICAgICcoMiArIHgpXjJ4JyxcbiAgICAnKHggKyAyKV4yeCcsXG4gICAgJ3leKDIgeCknLFxuICAgICd5Xih4K3gpJyxcbiAgKTtcblxuICBhc3NlcnRFcXVhbCgnZXZhbHVhdGVzIGZ1bmN0aW9uIGV4cHJlc3Npb25zIGNvcnJlY3RseSB3aXRoIHZhcmlhYmxlIHBhcmFtZXRlcnMnKShcbiAgICAnc3FydCg0eCknLFxuICAgICdzcXJ0KDJ4KzJ4KScsXG4gICAgJ3NxcnQoeF4yKScsXG4gICAgJ3NxcnQoKCh4KzEpXjIpIC0gKCh4KzEpXjIpICsgeF4yKScsXG4gICk7XG5cbiAgYXNzZXJ0Tm90RXF1YWwoJ2V2YWx1YXRlcyBzaW1wbGUgdmFyaWFibGUgZXhwcmVzc2lvbnMgY29ycmVjdGx5IDInKShcbiAgICAneF4zICsgNHggKyA0JyxcbiAgICAnKHggKyAyKV4yJyxcbiAgICAneF4yICsgNCh4KzIpJyxcbiAgICAnKHggKyAyKV4yJyxcbiAgKTtcblxuICBpdCgnY29ycmVjdGx5IGNvbnN1bWVzIGFsbG93RGVjaW1hbHMgb3B0aW9uJywgKCkgPT4ge1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTIzJywgJzEyMycsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzEyMycsICcxMjMuMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzEyMywwJywgJzEyMy4wJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTIzLDAnLCAnMTIzLjAnLCB7IGFsbG93RGVjaW1hbHM6IGZhbHNlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzEyMycsICcxMjMuMCcsIHsgYWxsb3dEZWNpbWFsczogZmFsc2UgfSkpLnRvRXF1YWwoZmFsc2UpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTIzJywgJzEyMywwJywgeyBhbGxvd0RlY2ltYWxzOiBmYWxzZSB9KSkudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdjb3JyZWN0bHkgY29uc3VtZXMgYWxsb3dEZWNpbWFscyBvcHRpb24gZm9yIGNvbXBsZXggZXhhbXBsZXMgdG9vJywgKCkgPT4ge1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTUwMDAwMCcsICcxNTAwMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMSw1MDAsMDAwJywgJzEsNTAwLDAwMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnMSw1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTUwMDAwMCcsICcxLDUwMCwwMDAuMDAnLCB7IGFsbG93RGVjaW1hbHM6IHRydWUgfSkpLnRvRXF1YWwodHJ1ZSk7XG4gICAgZXhwZWN0KGFyZVZhbHVlc0VxdWFsKCcxNTAwMDAwJywgJzEsNTAwLDAwMC4wJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMSw1MDAsMDAwLjAnLCAnMSw1MDAsMDAwLjAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnMTUwMDAwMCcsICcxLDUwMDAwMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbChmYWxzZSk7XG4gICAgZXhwZWN0KGFyZVZhbHVlc0VxdWFsKCcxNTAwMDAwJywgJzE1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnMSw1MDAsMDAwLjAxJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnMSw1MDAsMDAsMCcsIHsgYWxsb3dEZWNpbWFsczogdHJ1ZSB9KSkudG9FcXVhbChmYWxzZSk7XG4gICAgZXhwZWN0KGFyZVZhbHVlc0VxdWFsKCcxNTAwMDAwJywgJzE1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QoYXJlVmFsdWVzRXF1YWwoJzE1MDAwMDAnLCAnLDE1MDAsMDAwJywgeyBhbGxvd0RlY2ltYWxzOiB0cnVlIH0pKS50b0VxdWFsKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ2V2YWx1YXRlcyBzaW1wbGUgdHJpZ28gZXhwcmVzc2lvbnMgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgnc2luKHgpJywgJ3Npbih4KScpKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbCgndGFuKHgpJywgJ3Rhbih4KScpKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnY29ycmVjdGx5IGNyZWF0ZXMgbWF0aCBleHByZXNzaW9ucyAxJywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGFyZVZhbHVlc0VxdWFsKCdmXnstMX1cXFxcbGVmdCh4XFxcXHJpZ2h0KT1cXFxcc3FydHt4LTF9KzMnLCAnZl57LTF9XFxcXGxlZnQoeFxcXFxyaWdodCk9XFxcXHNxcnR7eC0xfSszJywge1xuICAgICAgICBhbGxvd0RlY2ltYWxzOiB0cnVlLFxuICAgICAgICBpc0xhdGV4OiB0cnVlLFxuICAgICAgfSksXG4gICAgKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnY29ycmVjdGx5IGNyZWF0ZXMgbWF0aCBleHByZXNzaW9ucyAyJywgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGFyZVZhbHVlc0VxdWFsKCc3MlxcXFxkaXYxMj02XFxcXHRleHR7ZWdnc30nLCAnNzJcXFxcZGl2MTI9NlxcXFx0ZXh0e2VnZ3N9Jywge1xuICAgICAgICBhbGxvd0RlY2ltYWxzOiB0cnVlLFxuICAgICAgICBpc0xhdGV4OiB0cnVlLFxuICAgICAgfSksXG4gICAgKS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBkZXNjcmliZSgnUEQtMycsICgpID0+IHtcbiAgICBpdC5lYWNoYFxuICAgICAgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYlxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodCleeyBcXFxcZnJhY3sxfXtcXFxcbGVmdCh5ICsgM1xcXFxyaWdodCl9fSd9ICAgICAgICB8ICR7J1xcXFxzcXJ0W1xcXFxsZWZ0KHkgKyAzXFxcXHJpZ2h0KV17eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodClee1xcXFxmcmFjezF9ezN9fSd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnRbM117eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodClee1xcXFxmcmFjezF9e259fSd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnRbbl17eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeFxcXFxyaWdodClee1xcXFxmcmFjezF9ezJ9fSd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnR7eH0nfVxuICAgICAgJHsnXFxcXGxlZnQoeC0xXFxcXHJpZ2h0KV57XFxcXGZyYWN7MX17Mn19KzMnfSAgICAgICAgICAgICAgICAgICAgICAgIHwgJHsnXFxcXHNxcnR7eC0xfSszJ31cbiAgICAgICR7J2Zeey0xfVxcXFxsZWZ0KHhcXFxccmlnaHQpPVxcXFxsZWZ0KHgtMVxcXFxyaWdodClee1xcXFxmcmFjezF9ezJ9fSszJ31cbiAgICAgICR7J2Zeey0xfVxcXFxsZWZ0KHhcXFxccmlnaHQpPVxcXFxzcXJ0e3gtMX0rMyd9XG4gICAgYCgnJGEgPT0gJGInLCAoeyBhLCBiIH0pID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSB7IGFsbG93RGVjaW1hbHM6IHRydWUsIGlzTGF0ZXg6IHRydWUgfTtcbiAgICAgIGV4cGVjdChhcmVWYWx1ZXNFcXVhbChhLCBiLCBvcHRzKSkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBdUIsSUFBQUcsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQTtBQUFBLFNBQUFOLHdCQUFBTyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBVCx1QkFBQSxZQUFBQSx3QkFBQU8sQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEs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
package/lib/index.js CHANGED
@@ -153,4 +153,4 @@ var ave = exports.ave = function ave(a, b) {
153
153
  return arm.equals(brm);
154
154
  };
155
155
  var _default = exports["default"] = areValuesEqual;
156
- //# sourceMappingURL=index.js.map
156
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXRoanMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0aEV4cHJlc3Npb25zIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWNpbWFsQ29tbWFSZWdleCIsImRlY2ltYWxSZWdleCIsImRlY2ltYWxXaXRoVGhvdXNhbmRTZXBhcmF0b3JOdW1iZXJSZWdleCIsInJhdGlvbmFsaXplQWxsUG9zc2libGVTdWJOb2RlcyIsImV4cHJlc3Npb24iLCJyYXRpb25hbGl6ZSIsInBhcnNlIiwidHJlZSIsInRyYW5zZm9ybWVkVHJlZSIsInRyYW5zZm9ybSIsIm5vZGUiLCJyYXRpb25hbGl6ZWROb2RlIiwiX3VudXNlZCIsInByZXBhcmVFeHByZXNzaW9uIiwic3RyaW5nIiwiaXNMYXRleCIsInJldHVyblZhbHVlIiwidHJpbSIsInJlcGxhY2UiLCJsYXRleFRvVGV4dCIsImNvbmNhdCIsInRleHRUb01hdGhUZXh0IiwidW5rbm93bkNvbW1hbmRzIiwidG9TdHJpbmciLCJsYXRleFRvQXN0T3B0cyIsIm1pc3NpbmdGYWN0b3IiLCJ0b2tlbiIsImNvbnNvbGUiLCJ3YXJuIiwidG9rZW5fdHlwZSIsInVua25vd25Db21tYW5kQmVoYXZpb3IiLCJhc3RUb1RleHRPcHRzIiwidW5pY29kZV9vcGVyYXRvcnMiLCJuZSIsIm9wZXJhbmRzIiwiam9pbiIsIl8iLCJleHBvcnRzIiwibGF0ZXgiLCJleHRyYU90cHMiLCJ1bmRlZmluZWQiLCJsYSIsIm1lIiwiY29udmVydGVycyIsImxhdGV4VG9Bc3RPYmoiLCJhdCIsImFzdFRvVGV4dE9iaiIsImFzdCIsImNvbnZlcnQiLCJ0ZXh0VG9Bc3RPYmoiLCJzaG91bGRSYXRpb25hbGl6ZUVudGlyZVRyZWUiLCJzaG91bGREb0l0IiwidHJhdmVyc2UiLCJ0eXBlIiwiZm4iLCJleHBvbmVudCIsImFyZ3MiLCJjb21waWxlIiwiZXZhbCIsImZ1bmN0aW9uUGFyYW1ldGVyIiwiX3VudXNlZDIiLCJjb250YWluc0RlY2ltYWwiLCJtYXRjaCIsIlNJTVBMSUZZX1JVTEVTIiwibCIsInNpbXBsaWZ5IiwidiIsInJ1bGVzIiwiYXJlVmFsdWVzRXF1YWwiLCJ2YWx1ZU9uZSIsInZhbHVlVHdvIiwib3B0aW9ucyIsImFsbG93RGVjaW1hbHMiLCJpbnZlcnNlIiwidmFsdWVPbmVUb1VzZSIsInZhbHVlVHdvVG9Vc2UiLCJ0ZXN0IiwicHJlcGFyZWRWYWx1ZU9uZSIsInByZXBhcmVkVmFsdWVUd28iLCJvbmUiLCJ0d28iLCJlcXVhbHMiLCJhdmUiLCJhIiwiYiIsImFtIiwiYm0iLCJhcm0iLCJicm0iLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyBtYXRoanMgZnJvbSAnbWF0aGpzJztcbmltcG9ydCBtZSBmcm9tICdAcGllLWZyYW1ld29yay9tYXRoLWV4cHJlc3Npb25zJztcblxuY29uc3QgZGVjaW1hbENvbW1hUmVnZXggPSAvLC9nO1xuY29uc3QgZGVjaW1hbFJlZ2V4ID0gL1xcLnwsL2c7XG5jb25zdCBkZWNpbWFsV2l0aFRob3VzYW5kU2VwYXJhdG9yTnVtYmVyUmVnZXggPSAvXig/ITArXFwuMDApKD89LnsxLDl9KFxcLnwkKSkoPyEwKD8hXFwuKSlcXGR7MSwzfSgsXFxkezN9KSooXFwuXFxkKyk/JC87XG5cbmNvbnN0IHJhdGlvbmFsaXplQWxsUG9zc2libGVTdWJOb2RlcyA9IChleHByZXNzaW9uKSA9PiByYXRpb25hbGl6ZShtYXRoanMucGFyc2UoZXhwcmVzc2lvbikpO1xuY29uc3QgcmF0aW9uYWxpemUgPSAodHJlZSkgPT4ge1xuICBjb25zdCB0cmFuc2Zvcm1lZFRyZWUgPSB0cmVlLnRyYW5zZm9ybSgobm9kZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXRpb25hbGl6ZWROb2RlID0gbWF0aGpzLnJhdGlvbmFsaXplKG5vZGUpO1xuICAgICAgcmV0dXJuIHJhdGlvbmFsaXplZE5vZGU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gdHJhbnNmb3JtZWRUcmVlO1xufTtcblxuZnVuY3Rpb24gcHJlcGFyZUV4cHJlc3Npb24oc3RyaW5nLCBpc0xhdGV4KSB7XG4gIGxldCByZXR1cm5WYWx1ZSA9IHN0cmluZyA/IHN0cmluZy50cmltKCkgOiAnJztcblxuICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoZGVjaW1hbENvbW1hUmVnZXgsICcuJyk7XG5cbiAgcmV0dXJuVmFsdWUgPSBpc0xhdGV4XG4gICAgPyBsYXRleFRvVGV4dChgJHtyZXR1cm5WYWx1ZX1gKVxuICAgIDogdGV4dFRvTWF0aFRleHQoYCR7cmV0dXJuVmFsdWV9YCwgeyB1bmtub3duQ29tbWFuZHM6ICdwYXNzdGhyb3VnaCcgfSkudG9TdHJpbmcoKTtcblxuICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoJz0nLCAnPT0nKTtcbiAgcmV0dXJuIHJhdGlvbmFsaXplQWxsUG9zc2libGVTdWJOb2RlcyhyZXR1cm5WYWx1ZSk7XG59XG5cbmNvbnN0IGxhdGV4VG9Bc3RPcHRzID0ge1xuICBtaXNzaW5nRmFjdG9yOiAodG9rZW4sIGUpID0+IHtcbiAgICBjb25zb2xlLndhcm4oJ21pc3NpbmcgZmFjdG9yIGZvcjogJywgdG9rZW4udG9rZW5fdHlwZSk7XG4gICAgaWYgKHRva2VuLnRva2VuX3R5cGUgPT09ICdOVU1CRVInKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgdW5rbm93bkNvbW1hbmRCZWhhdmlvcjogJ3Bhc3N0aHJvdWdoJyxcbn07XG5cbmNvbnN0IGFzdFRvVGV4dE9wdHMgPSB7XG4gIHVuaWNvZGVfb3BlcmF0b3JzOiB7XG4gICAgbmU6IGZ1bmN0aW9uKG9wZXJhbmRzKSB7XG4gICAgICByZXR1cm4gb3BlcmFuZHMuam9pbignICE9ICcpO1xuICAgIH0sXG4gICAgJyUnOiBmdW5jdGlvbihvcGVyYW5kcykge1xuICAgICAgcmV0dXJuIGBwZXJjZW50KCR7b3BlcmFuZHNbMF19KWA7XG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBsYXRleFRvVGV4dCA9IChsYXRleCwgZXh0cmFPdHBzID0ge30pID0+IHtcbiAgY29uc3QgbGEgPSBuZXcgbWUuY29udmVydGVycy5sYXRleFRvQXN0T2JqKHsgLi4ubGF0ZXhUb0FzdE9wdHMsIC4uLmV4dHJhT3RwcyB9KTtcblxuICBjb25zdCBhdCA9IG5ldyBtZS5jb252ZXJ0ZXJzLmFzdFRvVGV4dE9iaih7IC4uLmFzdFRvVGV4dE9wdHMsIC4uLmV4dHJhT3RwcyB9KTtcblxuICBjb25zdCBhc3QgPSBsYS5jb252ZXJ0KGxhdGV4KTtcblxuICByZXR1cm4gYXQuY29udmVydChhc3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRleHRUb01hdGhUZXh0ID0gKGxhdGV4LCBleHRyYU90cHMgPSB7fSkgPT4ge1xuICBjb25zdCBsYSA9IG5ldyBtZS5jb252ZXJ0ZXJzLnRleHRUb0FzdE9iaih7IC4uLmxhdGV4VG9Bc3RPcHRzLCAuLi5leHRyYU90cHMgfSk7XG5cbiAgY29uc3QgYXQgPSBuZXcgbWUuY29udmVydGVycy5hc3RUb1RleHRPYmooeyAuLi5hc3RUb1RleHRPcHRzLCAuLi5leHRyYU90cHMgfSk7XG5cbiAgY29uc3QgYXN0ID0gbGEuY29udmVydChsYXRleCk7XG5cbiAgcmV0dXJuIGF0LmNvbnZlcnQoYXN0KTtcbn07XG5cbmZ1bmN0aW9uIHNob3VsZFJhdGlvbmFsaXplRW50aXJlVHJlZSh0cmVlKSB7XG4gIGxldCBzaG91bGREb0l0ID0gdHJ1ZTtcblxuICAvLyB3ZSBuZWVkIHRvIGl0ZXJhdGUgdGhlIGVudGlyZSB0cmVlIHRvIGNoZWNrIGZvciBzb21lIGNvbmRpdGlvbnMgdGhhdCBtaWdodCBtYWtlIHJhdGlvbmFsaXphdGlvbiBpbXBvc3NpYmxlXG4gIHRyeSB7XG4gICAgdHJlZS50cmF2ZXJzZSgobm9kZSkgPT4ge1xuICAgICAgLy8gaWYgd2UgaGF2ZSBhIHZhcmlhYmxlIGFzIGFuIGV4cG9uZW50IGZvciBwb3dlciBvcGVyYXRpb24sIHdlIHNob3VsZCBub3QgcmF0aW9uYWxpemVcbiAgICAgIC8vIHRyeSB0byBzZWUgaWYgdGhlcmUgYXJlIHBvd2VyIG9wZXJhdGlvbnMgd2l0aCB2YXJpYWJsZSBleHBvbmVudHNcbiAgICAgIGlmIChub2RlLnR5cGUgPT09ICdPcGVyYXRvck5vZGUnICYmIG5vZGUuZm4gPT09ICdwb3cnKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50ID0gbm9kZS5hcmdzWzFdO1xuXG4gICAgICAgIC8vIHRyeSB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbXBpbGVkIGFuZCBldmFsdWF0ZWQgLSBpZiBpdCdzIGEgbm9uLW51bWVyaWNhbCB2YWx1ZSwgaXQnbGwgdGhyb3cgYW4gZXJyb3JcbiAgICAgICAgZXhwb25lbnQuY29tcGlsZSgpLmV2YWwoKTtcbiAgICAgIH1cblxuICAgICAgLy8gd2UgY2Fubm90IGhhdmUgdmFyaWFibGVzIGZvciB1bnJlc29sdmVkIGZ1bmN0aW9uIGNhbGxzIGVpdGhlclxuICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0Z1bmN0aW9uTm9kZScpIHtcbiAgICAgICAgLy90cnkgdG8gc2VlIGlmIHRoZSBhcmd1bWVudCB0aGF0IHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBjYW4gYmUgcmVzb2x2ZWQgYXMgbm9uLXZhcmlhYmxlXG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uUGFyYW1ldGVyID0gbm9kZS5hcmdzWzBdO1xuXG4gICAgICAgIC8vIGlmIGl0IGhvbGRzIHZhcmlhYmxlcywgdGhpcyB3aWxsIHRocm93IGFuIGVycm9yXG4gICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVyLmNvbXBpbGUoKS5ldmFsKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBtYXRoanMucmF0aW9uYWxpemUodHJlZSk7XG4gIH0gY2F0Y2gge1xuICAgIHNob3VsZERvSXQgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBzaG91bGREb0l0O1xufVxuXG5mdW5jdGlvbiBjb250YWluc0RlY2ltYWwoZXhwcmVzc2lvbiA9ICcnKSB7XG4gIHJldHVybiBleHByZXNzaW9uLm1hdGNoKGRlY2ltYWxSZWdleCk7XG59XG5jb25zdCBTSU1QTElGWV9SVUxFUyA9IFtcbiAgeyBsOiAnbjFeKDEvbjIpJywgcjogJ250aFJvb3QobjEsIG4yKScgfSxcbiAgeyBsOiAnc3FydChuMSknLCByOiAnbnRoUm9vdChuMSwgMiknIH0sXG5dO1xuXG5jb25zdCBzaW1wbGlmeSA9ICh2KSA9PiBtYXRoanMuc2ltcGxpZnkodiwgU0lNUExJRllfUlVMRVMuY29uY2F0KG1hdGhqcy5zaW1wbGlmeS5ydWxlcykpOyAvLy5jb25jYXQoU0lNUExJRllfUlVMRVMpKTtcblxuY29uc3QgYXJlVmFsdWVzRXF1YWwgPSAodmFsdWVPbmUsIHZhbHVlVHdvLCBvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIC8vIGlmIGV4cGxpY2l0bHkgc2V0IHRvIGZhbHNlLCBoYXZpbmcgYSBkZWNpbWFsIHZhbHVlIGluIGVpdGhlciBzaWRlIHdpbGwgcmVzdWx0IGluIGEgZmFsc2UgZXF1YWxpdHlcbiAgICAvLyByZWdhcmRsZXNzIG9mIG1hdGhlbWF0aWNhbCBjb3JyZWN0bmVzc1xuICAgIGFsbG93RGVjaW1hbHMsXG4gICAgaXNMYXRleCwgLy8gaWYgdGhlIHBhc3NlZCBpbiB2YWx1ZXMgYXJlIGxhdGV4LCB0aGV5IG5lZWQgdG8gYmUgZXNjYXBlZFxuICAgIGludmVyc2UsIC8vIHJldHVybnMgaW52ZXJzZSBmb3IgdGhlIGNvbXBhcmlzb24gcmVzdWx0XG4gIH0gPSBvcHRpb25zO1xuXG4gIGxldCB2YWx1ZU9uZVRvVXNlID0gdmFsdWVPbmU7XG4gIGxldCB2YWx1ZVR3b1RvVXNlID0gdmFsdWVUd287XG5cbiAgaWYgKGFsbG93RGVjaW1hbHMgPT09IGZhbHNlKSB7XG4gICAgaWYgKGNvbnRhaW5zRGVjaW1hbCh2YWx1ZU9uZSkgfHwgY29udGFpbnNEZWNpbWFsKHZhbHVlVHdvKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhbGxvd0RlY2ltYWxzID09PSB0cnVlKSB7XG4gICAgaWYgKGNvbnRhaW5zRGVjaW1hbCh2YWx1ZU9uZSkgJiYgZGVjaW1hbFdpdGhUaG91c2FuZFNlcGFyYXRvck51bWJlclJlZ2V4LnRlc3QodmFsdWVPbmUpKSB7XG4gICAgICB2YWx1ZU9uZVRvVXNlID0gdmFsdWVPbmUucmVwbGFjZShkZWNpbWFsQ29tbWFSZWdleCwgJycpO1xuICAgIH1cblxuICAgIGlmIChjb250YWluc0RlY2ltYWwodmFsdWVUd28pICYmIGRlY2ltYWxXaXRoVGhvdXNhbmRTZXBhcmF0b3JOdW1iZXJSZWdleC50ZXN0KHZhbHVlVHdvKSkge1xuICAgICAgdmFsdWVUd29Ub1VzZSA9IHZhbHVlVHdvLnJlcGxhY2UoZGVjaW1hbENvbW1hUmVnZXgsICcnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcmVwYXJlZFZhbHVlT25lID0gcHJlcGFyZUV4cHJlc3Npb24odmFsdWVPbmVUb1VzZSwgaXNMYXRleCwgYWxsb3dEZWNpbWFscyk7XG4gIGNvbnN0IHByZXBhcmVkVmFsdWVUd28gPSBwcmVwYXJlRXhwcmVzc2lvbih2YWx1ZVR3b1RvVXNlLCBpc0xhdGV4LCBhbGxvd0RlY2ltYWxzKTtcblxuICBsZXQgb25lID0gc2hvdWxkUmF0aW9uYWxpemVFbnRpcmVUcmVlKHByZXBhcmVkVmFsdWVPbmUpID8gbWF0aGpzLnJhdGlvbmFsaXplKHByZXBhcmVkVmFsdWVPbmUpIDogcHJlcGFyZWRWYWx1ZU9uZTtcbiAgbGV0IHR3byA9IHNob3VsZFJhdGlvbmFsaXplRW50aXJlVHJlZShwcmVwYXJlZFZhbHVlVHdvKSA/IG1hdGhqcy5yYXRpb25hbGl6ZShwcmVwYXJlZFZhbHVlVHdvKSA6IHByZXBhcmVkVmFsdWVUd287XG5cbiAgb25lID0gc2ltcGxpZnkob25lKTtcbiAgdHdvID0gc2ltcGxpZnkodHdvKTtcblxuICBjb25zdCBlcXVhbHMgPSBvbmUuZXF1YWxzKHR3byk7XG5cbiAgcmV0dXJuIGludmVyc2UgPyAhZXF1YWxzIDogZXF1YWxzO1xufTtcblxuZXhwb3J0IGNvbnN0IGF2ZSA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IGFtID0gbWF0aGpzLnBhcnNlKGEpO1xuICBjb25zdCBibSA9IG1hdGhqcy5wYXJzZShiKTtcblxuICBjb25zdCBhcm0gPSBzaW1wbGlmeShhbSk7XG4gIGNvbnN0IGJybSA9IHNpbXBsaWZ5KGJtKTtcbiAgcmV0dXJuIGFybS5lcXVhbHMoYnJtKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFyZVZhbHVlc0VxdWFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQWlELFNBQUFELHdCQUFBSSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBTix1QkFBQSxZ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
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "3.0.0-next.0",
6
+ "version": "3.1.0-next.0",
7
7
  "description": "Math evaluator tool for comparing expressions for equality",
8
8
  "keywords": [
9
9
  "math",
@@ -23,16 +23,8 @@
23
23
  "mathjs": "^7.0.1"
24
24
  },
25
25
  "devDependencies": {
26
- "@pie-lib/test-utils": "0.22.2-next.16"
26
+ "@pie-lib/test-utils": "1.1.0-next.0"
27
27
  },
28
28
  "scripts": {},
29
- "gitHead": "f104bab3116a65a39c55efc48387d8701c0c1d84",
30
- "exports": {
31
- ".": {
32
- "require": "./lib/index.js",
33
- "import": "./src/index.js",
34
- "default": "./lib/index.js"
35
- },
36
- "./esm": "./esm/index.js"
37
- }
29
+ "gitHead": "f712381d2cb985998863c1aed041ec05ee7b0249"
38
30
  }