From beb4e2e536833ce4528f71d3a0e899fe971bf6ec Mon Sep 17 00:00:00 2001 From: jos Date: Mon, 9 Feb 2015 21:43:00 +0100 Subject: [PATCH] Released version 1.3.0 --- HISTORY.md | 4 +- NOTICE | 2 +- bin/cli.js | 2 +- bower.json | 2 +- component.json | 2 +- dist/math.js | 4951 ++++++++++------- dist/math.map | 2 +- dist/math.min.js | 22 +- docs/datatypes/bignumbers.md | 34 +- docs/reference/functions/acos.md | 4 +- docs/reference/functions/alphabetical.md | 1 + docs/reference/functions/asin.md | 4 +- docs/reference/functions/atan.md | 4 +- docs/reference/functions/categorical.md | 1 + docs/reference/functions/cos.md | 4 +- docs/reference/functions/cosh.md | 4 +- docs/reference/functions/sech.md | 2 +- docs/reference/functions/sin.md | 4 +- docs/reference/functions/sinh.md | 4 +- docs/reference/functions/tan.md | 4 +- docs/reference/functions/tanh.md | 4 +- lib/expression/docs/function/matrix/concat.js | 2 +- lib/expression/docs/function/matrix/det.js | 2 +- lib/expression/docs/function/matrix/diag.js | 2 +- lib/expression/docs/function/matrix/eye.js | 2 +- lib/expression/docs/function/matrix/inv.js | 2 +- lib/expression/docs/function/matrix/ones.js | 2 +- lib/expression/docs/function/matrix/range.js | 2 +- lib/expression/docs/function/matrix/size.js | 2 +- .../docs/function/matrix/squeeze.js | 2 +- lib/expression/docs/function/matrix/subset.js | 2 +- lib/expression/docs/function/matrix/trace.js | 15 + .../docs/function/matrix/transpose.js | 2 +- lib/expression/docs/function/matrix/zeros.js | 2 +- lib/expression/docs/index.js | 1 + lib/function/matrix/trace.js | 7 +- lib/function/trigonometry/acos.js | 4 +- lib/function/trigonometry/asin.js | 4 +- lib/function/trigonometry/atan.js | 4 +- lib/function/trigonometry/cos.js | 4 +- lib/function/trigonometry/cosh.js | 4 +- lib/function/trigonometry/sinh.js | 4 +- lib/function/trigonometry/tan.js | 4 +- lib/function/trigonometry/tanh.js | 4 +- lib/header.js | 2 +- lib/version.js | 2 +- package.json | 2 +- 47 files changed, 2961 insertions(+), 2185 deletions(-) create mode 100644 lib/expression/docs/function/matrix/trace.js diff --git a/HISTORY.md b/HISTORY.md index 56e5615e4..31da86ff8 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,8 +1,10 @@ # History -## not yet released, version 1.2.1-SNAPSHOT +## 2015-02-09, version 1.3.0 +- Implemented BigNumber implementations of most trigonometric functions: `sin`, + `cos`, `tan`, `asin`, `acos`, `atan`, `cosh`, `sinh`, `tanh`. Thanks @BigFav. - Implemented function `trace`. Thanks @pcorey. - Faster loading of BigNumber configuration with a high precision by lazy loading constants like `pi` and `e`. diff --git a/NOTICE b/NOTICE index 9b4253506..c546c225e 100644 --- a/NOTICE +++ b/NOTICE @@ -1,7 +1,7 @@ math.js https://github.com/josdejong/mathjs -Copyright (C) 2013 Jos de Jong +Copyright (C) 2013-2015 Jos de Jong Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/bin/cli.js b/bin/cli.js index e467bad42..1bcd76a85 100644 --- a/bin/cli.js +++ b/bin/cli.js @@ -24,7 +24,7 @@ * cat script.txt | mathjs > results.txt Run input stream, output to file * * @license - * Copyright (C) 2013-2014 Jos de Jong + * Copyright (C) 2013-2015 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy diff --git a/bower.json b/bower.json index 05248c903..c85630578 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "1.2.1-SNAPSHOT", + "version": "1.3.0", "main": "./dist/math.min.js", "ignore": [ "coverage", diff --git a/component.json b/component.json index 5de6978d7..90b65b459 100644 --- a/component.json +++ b/component.json @@ -2,7 +2,7 @@ "name": "mathjs", "repo": "josdejong/mathjs", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.", - "version": "1.2.1-SNAPSHOT", + "version": "1.3.0", "main": "dist/math.min.js", "keywords": [ "math", diff --git a/dist/math.js b/dist/math.js index 69ad86125..24bd3164c 100644 --- a/dist/math.js +++ b/dist/math.js @@ -6,11 +6,11 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 1.2.1-SNAPSHOT - * @date 2015-01-06 + * @version 1.3.0 + * @date 2015-02-09 * * @license - * Copyright (C) 2013-2014 Jos de Jong + * Copyright (C) 2013-2015 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -90,8 +90,8 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var object = __webpack_require__(3); - var digits = __webpack_require__(4).digits; + var object = __webpack_require__(2); + var digits = __webpack_require__(3).digits; /** * math.js factory function. @@ -156,7 +156,7 @@ return /******/ (function(modules) { // webpackBootstrap // reload the constants (they depend on option number and precision) // this must be done after math.type.BigNumber.config is applied - __webpack_require__(2)(math, _config); + __webpack_require__(4)(math, _config); // TODO: remove deprecated setting some day (deprecated since version 0.17.0) if (options.number && options.number.defaultType) { @@ -203,7 +203,7 @@ return /******/ (function(modules) { // webpackBootstrap math.create = create; // create a new BigNumber factory for this instance of math.js - var BigNumber = __webpack_require__(155).constructor(); + var BigNumber = __webpack_require__(156).constructor(); // extend BigNumber with a function clone if (typeof BigNumber.prototype.clone !== 'function') { @@ -256,9 +256,9 @@ return /******/ (function(modules) { // webpackBootstrap // expression (parse, Parser, nodes, docs) math.expression = {}; - math.expression.node = __webpack_require__(16); - math.expression.parse = __webpack_require__(14); - math.expression.Parser = __webpack_require__(15); + math.expression.node = __webpack_require__(14); + math.expression.parse = __webpack_require__(15); + math.expression.Parser = __webpack_require__(16); math.expression.docs = __webpack_require__(17); // expression parser @@ -348,19 +348,19 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(100)(math, _config); __webpack_require__(101)(math, _config); __webpack_require__(102)(math, _config); + __webpack_require__(103)(math, _config); // functions - probability //require('./function/probability/distribution')(math, _config); // TODO: rethink math.distribution - __webpack_require__(103)(math, _config); __webpack_require__(104)(math, _config); __webpack_require__(105)(math, _config); __webpack_require__(106)(math, _config); __webpack_require__(107)(math, _config); __webpack_require__(108)(math, _config); __webpack_require__(109)(math, _config); + __webpack_require__(110)(math, _config); // functions - relational - __webpack_require__(110)(math, _config); __webpack_require__(111)(math, _config); __webpack_require__(112)(math, _config); __webpack_require__(113)(math, _config); @@ -368,9 +368,9 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(115)(math, _config); __webpack_require__(116)(math, _config); __webpack_require__(117)(math, _config); + __webpack_require__(118)(math, _config); // functions - statistics - __webpack_require__(118)(math, _config); __webpack_require__(119)(math, _config); __webpack_require__(120)(math, _config); __webpack_require__(121)(math, _config); @@ -378,9 +378,9 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(123)(math, _config); __webpack_require__(124)(math, _config); __webpack_require__(125)(math, _config); + __webpack_require__(126)(math, _config); // functions - trigonometry - __webpack_require__(126)(math, _config); __webpack_require__(127)(math, _config); __webpack_require__(128)(math, _config); __webpack_require__(129)(math, _config); @@ -396,12 +396,12 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(139)(math, _config); __webpack_require__(140)(math, _config); __webpack_require__(141)(math, _config); - - // functions - units __webpack_require__(142)(math, _config); - // functions - utils + // functions - units __webpack_require__(143)(math, _config); + + // functions - utils __webpack_require__(144)(math, _config); __webpack_require__(145)(math, _config); __webpack_require__(146)(math, _config); @@ -410,6 +410,7 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(149)(math, _config); __webpack_require__(150)(math, _config); __webpack_require__(151)(math, _config); + __webpack_require__(152)(math, _config); // TODO: deprecated since version 0.25.0, remove some day. math.ifElse = function () { @@ -417,19 +418,21 @@ return /******/ (function(modules) { // webpackBootstrap }; // constants - __webpack_require__(2)(math, _config); + __webpack_require__(4)(math, _config); // attach transform functions (for converting one-based indices to zero-based) - __webpack_require__(18)(math, _config); - __webpack_require__(19)(math, _config); - __webpack_require__(20)(math, _config); - __webpack_require__(21)(math, _config); - __webpack_require__(22)(math, _config); - __webpack_require__(23)(math, _config); - __webpack_require__(24)(math, _config); - __webpack_require__(25)(math, _config); - __webpack_require__(26)(math, _config); - __webpack_require__(27)(math, _config); + math.expression.transform = { + concat: __webpack_require__(18)(math, _config), + filter: __webpack_require__(19)(math, _config), + forEach:__webpack_require__(20)(math, _config), + index: __webpack_require__(21)(math, _config), + map: __webpack_require__(22)(math, _config), + max: __webpack_require__(23)(math, _config), + mean: __webpack_require__(24)(math, _config), + min: __webpack_require__(25)(math, _config), + range: __webpack_require__(26)(math, _config), + subset: __webpack_require__(27)(math, _config) + }; // selector (we initialize after all functions are loaded) math.chaining = {}; @@ -462,49 +465,6 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - module.exports = function (math, config) { - var bignumber = __webpack_require__(152); - var Complex = __webpack_require__(6); - var BigNumber = math.type.BigNumber; - - var big = config.number === 'bignumber'; - - // TODO: in case of support for defineProperty, we can lazy evaluate the BigNumber constants by creating them as properties (calculation of PI is slow for example) - math.pi = big ? bignumber.pi(config.precision) : Math.PI; - math.tau = big ? bignumber.tau(config.precision) : Math.PI * 2; - math.e = big ? bignumber.e(config.precision) : Math.E; - math.phi = big ? bignumber.phi(config.precision) : 1.61803398874989484820458683436563811772030917980576286213545; // golden ratio, (1+sqrt(5))/2 - - math.i = new Complex(0, 1); - - math['Infinity'] = Infinity; - math['NaN'] = NaN; - math['true'] = true; - math['false'] = false; - math['null'] = null; - math['uninitialized'] = __webpack_require__(153).UNINITIALIZED; - - // uppercase constants (for compatibility with built-in Math) - math.E = math.e; - math.LN2 = big ? new BigNumber(2).ln() : Math.LN2; - math.LN10 = big ? new BigNumber(10).ln() : Math.LN10; - math.LOG2E = big ? new BigNumber(1).div(new BigNumber(2).ln()) : Math.LOG2E; - math.LOG10E = big ? new BigNumber(1).div(new BigNumber(10).ln()) : Math.LOG10E; - math.PI = math.pi; - math.SQRT1_2 = big ? new BigNumber(0.5).sqrt() : Math.SQRT1_2; - math.SQRT2 = big ? new BigNumber(2).sqrt() : Math.SQRT2; - - // meta information - math.version = __webpack_require__(154); - }; - - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - /** * Clone an object * @@ -650,9 +610,60 @@ return /******/ (function(modules) { // webpackBootstrap } }; + /** + * Test whether the current JavaScript engine supports Object.defineProperty + * @returns {boolean} returns true if supported + */ + exports.canDefineProperty = function () { + // test needed for broken IE8 implementation + try { + if (Object.defineProperty) { + Object.defineProperty({}, 'x', {}); + return true; + } + } catch (e) {} + + return false; + }; + + /** + * Attach a lazy loading property to a constant. + * The given function `fn` is called once when the property is first requested. + * On older browsers (= values for each precision + var bigBigFacs = []; + + // 0-20! values + var smallBigFacs = [ 1, 1, 2, @@ -14100,20 +14334,19 @@ return /******/ (function(modules) { // webpackBootstrap 355687428096000, 6402373705728000, 121645100408832000, - 2432902008176640000, - new BigNumber('51090942171709440000') + 2432902008176640000 ] }; /***/ }, -/* 104 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -14301,13 +14534,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 105 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(194)(math); + var distribution = __webpack_require__(314)(math); /** * Return a random number larger or equal to `min` and smaller than `max` @@ -14344,13 +14577,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 106 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(194)(math); + var distribution = __webpack_require__(314)(math); /** * Return a random integer number larger or equal to `min` and smaller than `max` @@ -14387,13 +14620,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 107 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var distribution = __webpack_require__(194)(math); + var distribution = __webpack_require__(314)(math); /** * Random pick a value from a one dimensional array. @@ -14419,13 +14652,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 108 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, @@ -14532,13 +14765,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 109 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, collection = __webpack_require__(13), @@ -14629,13 +14862,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 110 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -14759,7 +14992,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 111 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -14844,13 +15077,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 112 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15008,13 +15241,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 113 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15135,13 +15368,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 114 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15263,13 +15496,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 115 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15390,13 +15623,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 116 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15517,13 +15750,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 117 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math, config) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -15680,7 +15913,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 118 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -15775,7 +16008,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 119 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -15870,7 +16103,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 120 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -15881,7 +16114,7 @@ return /******/ (function(modules) { // webpackBootstrap isCollection = collection.isCollection, - size = __webpack_require__(153).size, + size = __webpack_require__(154).size, isArray = Array.isArray; /** @@ -15974,7 +16207,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 121 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -15985,10 +16218,10 @@ return /******/ (function(modules) { // webpackBootstrap BigNumber = math.type.BigNumber, collection = __webpack_require__(13), - isNumber = __webpack_require__(4).isNumber, + isNumber = __webpack_require__(3).isNumber, isCollection = collection.isCollection, - flatten = __webpack_require__(153).flatten; + flatten = __webpack_require__(154).flatten; /** * Compute the median of a matrix or a list with values. The values are @@ -16088,7 +16321,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 122 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16173,7 +16406,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 123 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16233,7 +16466,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 124 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16316,7 +16549,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 125 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -16327,7 +16560,7 @@ return /******/ (function(modules) { // webpackBootstrap collection = __webpack_require__(13), isCollection = collection.isCollection, - isString = __webpack_require__(176).isString, + isString = __webpack_require__(195).isString, DEFAULT_NORMALIZATION = 'unbiased'; @@ -16460,13 +16693,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 126 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -16475,7 +16708,9 @@ return /******/ (function(modules) { // webpackBootstrap isNumber = util.number.isNumber, isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigArcCos = util.bignumber.arccos; /** * Calculate the inverse cosine of a value. @@ -16497,8 +16732,8 @@ return /******/ (function(modules) { // webpackBootstrap * * cos, atan, asin * - * @param {Number | Boolean | Complex | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} The arc cosine of x + * @param {Number | BigNumber Boolean | Complex | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} The arc cosine of x */ math.acos = function acos(x) { if (arguments.length != 1) { @@ -16543,9 +16778,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return acos(x.toNumber()); + return bigArcCos(x); } throw new math.error.UnsupportedTypeError('acos', math['typeof'](x)); @@ -16554,13 +16787,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 127 */ +/* 128 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -16569,7 +16802,9 @@ return /******/ (function(modules) { // webpackBootstrap isNumber = util.number.isNumber, isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigArcSin = util.bignumber.arcsin; /** * Calculate the inverse sine of a value. @@ -16591,8 +16826,8 @@ return /******/ (function(modules) { // webpackBootstrap * * sin, atan, acos * - * @param {Number | Boolean | Complex | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} The arc sine of x + * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} The arc sine of x */ math.asin = function asin(x) { if (arguments.length != 1) { @@ -16635,9 +16870,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return asin(x.toNumber()); + return bigArcSin(x); } throw new math.error.UnsupportedTypeError('asin', math['typeof'](x)); @@ -16646,13 +16879,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 128 */ +/* 129 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -16661,7 +16894,9 @@ return /******/ (function(modules) { // webpackBootstrap isNumber = util.number.isNumber, isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigArcTan = util.bignumber.arctan; /** * Calculate the inverse tangent of a value. @@ -16683,8 +16918,8 @@ return /******/ (function(modules) { // webpackBootstrap * * tan, asin, acos * - * @param {Number | Boolean | Complex | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} The arc tangent of x + * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} The arc tangent of x */ math.atan = function atan(x) { if (arguments.length != 1) { @@ -16722,9 +16957,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return atan(x.toNumber()); + return bigArcTan(x); } throw new math.error.UnsupportedTypeError('atan', math['typeof'](x)); @@ -16733,13 +16966,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 129 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -16817,13 +17050,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 130 */ +/* 131 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = function (math) { - var util = __webpack_require__(160), + module.exports = function (math, config) { + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -16834,7 +17067,9 @@ return /******/ (function(modules) { // webpackBootstrap isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, isUnit = Unit.isUnit, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigCos = util.bignumber.cos_sin; /** * Calculate the cosine of a value. @@ -16859,8 +17094,8 @@ return /******/ (function(modules) { // webpackBootstrap * * cos, tan * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Cosine of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Cosine of x */ math.cos = function cos(x) { if (arguments.length != 1) { @@ -16895,9 +17130,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return cos(x.toNumber()); + return bigCos(x, config.precision, 0); } throw new math.error.UnsupportedTypeError('cos', math['typeof'](x)); @@ -16906,13 +17139,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 131 */ +/* 132 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -16923,7 +17156,9 @@ return /******/ (function(modules) { // webpackBootstrap isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, isUnit = Unit.isUnit, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigCosh = util.bignumber.cosh_sinh; /** * Calculate the hyperbolic cosine of a value, @@ -16943,8 +17178,8 @@ return /******/ (function(modules) { // webpackBootstrap * * sinh, tanh * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Hyperbolic cosine of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Hyperbolic cosine of x */ math.cosh = function cosh(x) { if (arguments.length != 1) { @@ -16977,9 +17212,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return cosh(x.toNumber()); + return bigCosh(x, 0); } throw new math.error.UnsupportedTypeError('cosh', math['typeof'](x)); @@ -16988,13 +17221,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 132 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17074,13 +17307,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 133 */ +/* 134 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17164,13 +17397,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 134 */ +/* 135 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17251,13 +17484,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 135 */ +/* 136 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17342,13 +17575,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 136 */ +/* 137 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17429,13 +17662,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 137 */ +/* 138 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17462,7 +17695,7 @@ return /******/ (function(modules) { // webpackBootstrap * * // sech(x) = 1/ cosh(x) * math.sech(0.5); // returns 0.886818883970074 - * 1 / math.cosh(0.5); // returns 1.9190347513349437 + * 1 / math.cosh(0.5); // returns 0.886818883970074 * * See also: * @@ -17516,13 +17749,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 138 */ +/* 139 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = function (math) { - var util = __webpack_require__(160), + module.exports = function (math, config) { + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17535,7 +17768,7 @@ return /******/ (function(modules) { // webpackBootstrap isUnit = Unit.isUnit, isCollection = collection.isCollection, - bigSin = util.bignumber.sin; + bigSin = util.bignumber.cos_sin; /** * Calculate the sine of a value. @@ -17595,8 +17828,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement better BigNumber support - return bigSin(x); + return bigSin(x, config.precision, 1); } throw new math.error.UnsupportedTypeError('sin', math['typeof'](x)); @@ -17605,13 +17837,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 139 */ +/* 140 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17622,7 +17854,9 @@ return /******/ (function(modules) { // webpackBootstrap isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, isUnit = Unit.isUnit, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigSinh = util.bignumber.cosh_sinh; /** * Calculate the hyperbolic sine of a value, @@ -17642,8 +17876,8 @@ return /******/ (function(modules) { // webpackBootstrap * * cosh, tanh * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Hyperbolic sine of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Hyperbolic sine of x */ math.sinh = function sinh(x) { if (arguments.length != 1) { @@ -17682,9 +17916,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return sinh(x.toNumber()); + return bigSinh(x, 1); } throw new math.error.UnsupportedTypeError('sinh', math['typeof'](x)); @@ -17693,13 +17925,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 140 */ +/* 141 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = function (math) { - var util = __webpack_require__(160), + module.exports = function (math, config) { + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17710,7 +17942,9 @@ return /******/ (function(modules) { // webpackBootstrap isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, isUnit = Unit.isUnit, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigTan = util.bignumber.tan; /** * Calculate the tangent of a value. `tan(x)` is equal to `sin(x) / cos(x)`. @@ -17732,8 +17966,8 @@ return /******/ (function(modules) { // webpackBootstrap * * atan, sin, cos * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Tangent of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Tangent of x */ math.tan = function tan(x) { if (arguments.length != 1) { @@ -17771,9 +18005,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return tan(x.toNumber()); + return bigTan(x, config.precision); } throw new math.error.UnsupportedTypeError('tan', math['typeof'](x)); @@ -17782,13 +18014,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 141 */ +/* 142 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), BigNumber = math.type.BigNumber, Complex = __webpack_require__(6), @@ -17799,7 +18031,9 @@ return /******/ (function(modules) { // webpackBootstrap isBoolean = util['boolean'].isBoolean, isComplex = Complex.isComplex, isUnit = Unit.isUnit, - isCollection = collection.isCollection; + isCollection = collection.isCollection, + + bigTanh = util.bignumber.tanh; /** * Calculate the hyperbolic tangent of a value, @@ -17822,8 +18056,8 @@ return /******/ (function(modules) { // webpackBootstrap * * sinh, cosh, coth * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Hyperbolic tangent of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Hyperbolic tangent of x */ math.tanh = function tanh(x) { if (arguments.length != 1) { @@ -17862,9 +18096,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (x instanceof BigNumber) { - // TODO: implement BigNumber support - // downgrade to Number - return tanh(x.toNumber()); + return bigTanh(x); } throw new math.error.UnsupportedTypeError('tanh', math['typeof'](x)); @@ -17873,13 +18105,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 142 */ +/* 143 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), Unit = __webpack_require__(10), collection = __webpack_require__(13), @@ -17935,13 +18167,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 143 */ +/* 144 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), object = util.object; /** @@ -17973,7 +18205,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 144 */ +/* 145 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18053,13 +18285,13 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 145 */ +/* 146 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), string = util.string; /** @@ -18138,13 +18370,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 146 */ +/* 147 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), Complex = __webpack_require__(6), Unit = __webpack_require__(10), @@ -18217,7 +18449,7 @@ return /******/ (function(modules) { // webpackBootstrap // istanbul ignore else (we cannot unit test the else case in a node.js environment) if (true) { // load the file using require - var _module = __webpack_require__(196)(object); + var _module = __webpack_require__(192)(object); math_import(_module, options); } else { @@ -18263,12 +18495,20 @@ return /******/ (function(modules) { // webpackBootstrap } return value.apply(math, args); }; + if (value && value.transform) { + math[name].transform = value.transform; + } } else { // just create a link to the function or value math[name] = value; } + // register the transform function if any + if (value && value.transform) { + math.expression.transform[name] = value.transform; + } + // create a proxy for the chain math.chaining.Chain.createProxy(name, value); } @@ -18290,7 +18530,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 147 */ +/* 148 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18356,13 +18596,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 148 */ +/* 149 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var util = __webpack_require__(160), + var util = __webpack_require__(161), isString = util.string.isString; @@ -18440,7 +18680,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 149 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18520,13 +18760,13 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 150 */ +/* 151 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; module.exports = function (math) { - var types = __webpack_require__(195), + var types = __webpack_require__(315), Complex = __webpack_require__(6), Matrix = __webpack_require__(9), @@ -18602,7 +18842,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 151 */ +/* 152 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -18664,15 +18904,15 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 152 */ +/* 153 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var BigNumber = __webpack_require__(155); - var isNumber = __webpack_require__(4).isNumber; - var digits = __webpack_require__(4).digits; - var memoize = __webpack_require__(314).memoize; + var BigNumber = __webpack_require__(156); + var isNumber = __webpack_require__(3).isNumber; + var digits = __webpack_require__(3).digits; + var memoize = __webpack_require__(316).memoize; /** * Test whether value is a BigNumber @@ -18684,8 +18924,9 @@ return /******/ (function(modules) { // webpackBootstrap }; - /* BigNumber constants. */ - + /************************************* + * Constants * + *************************************/ /** * Calculate BigNumber e @@ -18720,8 +18961,8 @@ return /******/ (function(modules) { // webpackBootstrap exports.pi = memoize(function (precision) { // we calculate pi with a few decimal places extra to prevent round off issues var Big = BigNumber.constructor({precision: precision + 4}); - var pi4th = new Big(4).times(exports.arctan(new Big(1).div(5))) - .minus(exports.arctan(new Big(1).div(239))); + var pi4th = new Big(4).times(arctan_taylor(new Big(1).div(5))) + .minus(arctan_taylor(new Big(1).div(239))); Big.config({precision: precision}); @@ -18746,8 +18987,9 @@ return /******/ (function(modules) { // webpackBootstrap }); - /* BigNumber functions. */ - + /************************************* + * Bitwise functions * + *************************************/ /* * Special Cases: @@ -18773,7 +19015,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Parameters in function bitAnd must be integer numbers'); } - var BigNumber = x['constructor']; + var BigNumber = x.constructor; if (x.isNaN() || y.isNaN()) { return new BigNumber(NaN); } @@ -18814,33 +19056,6 @@ return /******/ (function(modules) { // webpackBootstrap return bitwise(x, y, function (a, b) { return a & b }); }; - /** - * Calculate the arc tangent of x - * - * arctan(x) = x - x^3/3 + x^5/5 - x^7/7 + x^9/9 - ... - * = x - x^2*x^1/3 + x^2*x^3/5 - x^2*x^5/7 + x^2*x^7/9 - ... - * - * @param {BigNumber} x - * @returns {BigNumber} arc tangent of x - */ - exports.arctan = function (x) { - var y = x; - var yPrev = NaN; - var x2 = x.times(x); - var num = x; - var add = true; - - for (var k = 3; !y.equals(yPrev); k += 2) { - num = num.times(x2); - - yPrev = y; - add = !add; - y = (add) ? y.plus(num.div(k)) : y.minus(num.div(k)); - } - - return y; - }; - /* * Special Cases: * n << -n = N @@ -18862,7 +19077,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Parameters in function leftShift must be integer numbers'); } - var BigNumber = x['constructor']; + var BigNumber = x.constructor; if (x.isNaN() || y.isNaN() || (y.isNegative() && !y.isZero())) { return new BigNumber(NaN); } @@ -18890,14 +19105,14 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Parameter in function bitNot must be integer numbers'); } - var BigNumber = x['constructor']; - var prevPrec = BigNumber['precision']; - BigNumber['precision'] = 1E9; + var BigNumber = x.constructor; + var prevPrec = BigNumber.precision; + BigNumber.config({precision: 1E9}); - var x = x.plus(BigNumber['ONE']); - x['s'] = -x['s'] || null; + var x = x.plus(BigNumber.ONE); + x.s = -x.s || null; - BigNumber['precision'] = prevPrec; + BigNumber.config({precision: prevPrec}); return x; }; @@ -18925,7 +19140,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Parameters in function bitOr must be integer numbers'); } - var BigNumber = x['constructor']; + var BigNumber = x.constructor; if (x.isNaN() || y.isNaN()) { return new BigNumber(NaN); } @@ -18951,69 +19166,6 @@ return /******/ (function(modules) { // webpackBootstrap return bitwise(x, y, function (a, b) { return a | b }); }; - /** - * Calculate the sine of x using Taylor Series. - * - * sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! - ... - * = x - x^2*x^1/3! + x^2*x^3/5! - x^2*x^5/7! + x^2*x^7/9! - ... - * - * TODO: Replace with Chebyshev approximation. - * - * @param {BigNumber} x - * @returns {BigNumber} sine of x - */ - exports.sin = function (x) { - var BigNumber = x['constructor']; - var precision = BigNumber['precision']; - if (x.isNaN() || !x.isFinite()) { - return new BigNumber(NaN); - } - - // sin(-x) == -sin(x) - var isNeg; - if (isNeg = x.isNegative()) { - x['s'] = -x['s']; - } - - // Get offset within the period of sin (-pi, pi] w/ gaurd digits - var pi = exports.pi(precision + ~~(3*Math.log(precision)) + 1); - var tau = pi.times(2); - - // Catch if tau multiple using pi's precision - if (x.div(pi.toDP(x.dp(), 1)).toNumber() % 2 == 0) { - return new BigNumber(0); - } - - var y = x.mod(tau); - // Catch if tau multiple with tau's precision - if (y.toDP(x.dp(), 1).isZero()) { - return new BigNumber(0); - } - if (y.gt(pi)) { - y = y.minus(tau); - } - - var yPrev = NaN; - var y2 = y.times(y); - var num = y; - var den = BigNumber['ONE']; - var add = true; - for (var k = 1; !y.equals(yPrev); k += 2) { - num = num.times(y2); - den = den.times(k+1).times(k+2); - - yPrev = y; - add = !add; - y = (add) ? y.plus(num.div(den)) : y.minus(num.div(den)); - } - - if (isNeg) { - y['s'] = -y['s']; - } - y['constructor']['precision'] = precision; - return y.toDP(precision - 1); - }; - /* * Special Cases: * n >> -n = N @@ -19038,7 +19190,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Parameters in function rightArithShift must be integer numbers'); } - var BigNumber = x['constructor']; + var BigNumber = x.constructor; if (x.isNaN() || y.isNaN() || (y.isNegative() && !y.isZero())) { return new BigNumber(NaN); } @@ -19084,7 +19236,7 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Parameters in function bitXor must be integer numbers'); } - var BigNumber = x['constructor']; + var BigNumber = x.constructor; if (x.isNaN() || y.isNaN()) { return new BigNumber(NaN); } @@ -19118,6 +19270,674 @@ return /******/ (function(modules) { // webpackBootstrap return bitwise(x, y, function (a, b) { return a ^ b }); }; + /* Applies bitwise function to numbers. */ + function bitwise(x, y, func) { + var BigNumber = x.constructor; + + var xBits, yBits; + var xSign = +(x.s < 0); + var ySign = +(y.s < 0); + if (xSign) { + xBits = decCoefficientToBinaryString(exports.not(x)); + for (var i = 0; i < xBits.length; ++i) { + xBits[i] ^= 1; + } + } else { + xBits = decCoefficientToBinaryString(x); + } + if (ySign) { + yBits = decCoefficientToBinaryString(exports.not(y)); + for (var i = 0; i < yBits.length; ++i) { + yBits[i] ^= 1; + } + } else { + yBits = decCoefficientToBinaryString(y); + } + + var minBits, maxBits, minSign; + if (xBits.length <= yBits.length) { + minBits = xBits; + maxBits = yBits; + minSign = xSign; + } else { + minBits = yBits; + maxBits = xBits; + minSign = ySign; + } + + var shortLen = minBits.length; + var longLen = maxBits.length; + var expFuncVal = func(xSign, ySign) ^ 1; + var outVal = new BigNumber(expFuncVal ^ 1); + var twoPower = BigNumber.ONE; + var two = new BigNumber(2); + + var prevPrec = BigNumber.precision; + BigNumber.config({precision: 1E9}); + + while (shortLen > 0) { + if (func(minBits[--shortLen], maxBits[--longLen]) == expFuncVal) { + outVal = outVal.plus(twoPower); + } + twoPower = twoPower.times(two); + } + while (longLen > 0) { + if (func(minSign, maxBits[--longLen]) == expFuncVal) { + outVal = outVal.plus(twoPower); + } + twoPower = twoPower.times(two); + } + + BigNumber.config({precision: prevPrec}); + + if (expFuncVal == 0) { + outVal.s = -outVal.s; + } + return outVal; + } + + /* Extracted from decimal.js, and edited to specialize. */ + function decCoefficientToBinaryString(x) { + // Convert to string + var a = x.c; + var r = a[0] + ''; + + for (var i = 1; i < a.length; ++i) { + var s = a[i] + ''; + for (var z = 7 - s.length; z--; ) { + s = '0' + s; + } + + r += s; + } + + var j; + for (j = r.length - 1; r.charAt(j) == '0'; --j); + + var xe = x.e; + var str = r.slice(0, j + 1 || 1); + var strL = str.length; + if (xe > 0) { + if (++xe > strL) { + // Append zeros. + for (xe -= strL; xe--; str += '0'); + } else if (xe < strL) { + str = str.slice(0, xe) + '.' + str.slice(xe); + } + } + + // Convert from base 10 (decimal) to base 2 + var arr = [0]; + for (var i = 0; i < str.length; ) { + for (var arrL = arr.length; arrL--; arr[arrL] *= 10); + + arr[0] += str.charAt(i++) << 0; // convert to int + for (var j = 0; j < arr.length; ++j) { + if (arr[j] > 1) { + if (arr[j + 1] == null) { + arr[j + 1] = 0; + } + + arr[j + 1] += arr[j] >> 1; + arr[j] &= 1; + } + } + } + + return arr.reverse(); + } + + + /************************************* + * Trigonometric functions * + *************************************/ + + /** + * Calculate the arc cosine of x + * + * acos(x) = 2*atan(sqrt(1-x^2)/(1+x)) + * + * @param {BigNumber} x + * @returns {BigNumber} arc cosine of x + */ + exports.arccos = function (x) { + var Big = x.constructor; + var precision = Big.precision; + if (x.abs().gt(Big.ONE)) { + throw new Error('acos() only has non-complex values for |x| <= 1.'); + } + if (x.eq(-1)) { + return exports.pi(precision); + } + + Big.config({precision: precision + 4}); + var acos = exports.arctan(Big.ONE.minus(x.times(x)).sqrt() + .div(x.plus(Big.ONE))).times(2); + Big.config({precision: precision}); + + return acos.toDP(precision - 1); + }; + + /** + * Calculate the arc sine of x + * + * @param {BigNumber} x + * @returns {BigNumber} arc sine of x + */ + exports.arcsin = function (x) { + var Big = x.constructor; + if (x.isNaN()) { + return new Big(NaN); + } + if (x.isZero()) { + return new Big(0); + } + + var absX = x.abs(); + if (absX.gt(1)) { + throw new Error('asin() only has non-complex values for |x| <= 1.'); + } + + var precision = Big.precision; + + // Get x below 0.58 + if (absX.gt(0.8)) { + Big.config({precision: precision + 4}); + + // arcsin(x) = sign(x)*(Pi/2 - arcsin(sqrt(1 - x^2))) + var sign = x.s; + var halfPi = exports.pi(precision + 4).div(2); + x = halfPi.minus(exports.arcsin(Big.ONE.minus(x.times(x)).sqrt())); + x.s = sign; + + x.constructor = Big; + Big.config({precision: precision}); + return x.toDP(precision - 1); + } + var wasReduced; + if (wasReduced = absX.gt(0.58)) { + Big.config({precision: precision + 8}); + + // arcsin(x) = 2*arcsin(x / (sqrt(2)*sqrt(sqrt(1 - x^2) + 1))) + x = x.div(new Big(2).sqrt().times(Big.ONE.minus(x.times(x)).sqrt() + .plus(Big.ONE).sqrt())); + + Big.config({precision: precision}); + } + + // Avoid overhead of Newton's Method if feasible + var ret = (precision <= 60 || ((x.dp() <= Math.log(precision)) && x.lt(0.05))) + ? arcsin_taylor(x, precision) + : arcsin_newton(x, precision); + + if (wasReduced) { + return ret.times(2); + } + return ret; + }; + + /** + * Calculate the arc tangent of x + * + * @param {BigNumber} x + * @returns {BigNumber} arc tangent of x + */ + exports.arctan = function (x) { + var Big = x.constructor; + if (x.isNaN()) { + return new Big(NaN); + } + if (x.isZero()) { + return new Big(0); + } + var precision = Big.precision; + if (!x.isFinite()) { + var halfPi = exports.pi(precision + 2).div(2).toDP(precision - 1); + halfPi.s = x.s; + + return halfPi; + } + + var absX = x.abs(); + if (absX.lte(0.875)) { + Big.config({precision: precision + 4}); + + var ret = arctan_taylor(x); + + ret.constructor = Big; + Big.config({precision: precision}); + return ret.toDP(Big.precision - 1); + } + if (absX.gte(1.143)) { + Big.config({precision: precision + 4}); + + // arctan(x) = sign(x)*((PI / 2) - arctan(1 / |x|)) + var halfPi = exports.pi(precision + 4).div(2); + var ret = halfPi.minus(arctan_taylor(Big.ONE.div(absX))); + ret.s = x.s; + + ret.constructor = Big; + Big.config({precision: precision}); + return ret.toDP(Big.precision - 1); + } + + // arctan(x) = arcsin(x / [sqrt(1 + x^2)]) + Big.config({precision: precision + 4}); + x = x.div(x.times(x).plus(1).sqrt()); + Big.config({precision: precision}); + + return exports.arcsin(x); + }; + + /** + * Calculate cosine/sine of x using the multiple angle identity: + * + * cos(4x) = 8[cos(x)^4 - cos(x)^2] + 1 + * + * sin(5x) = 16sin(x)^5 - 20sin(x)^3 + 5sin(x) + * http://www.tc.umn.edu/~ringx004/sidebar.html + * + * @param {BigNumber} x + * @param {Number} precision precision as defined in the config file + * @param {Number} mode sine function if 1, cosine function if 0 + * @returns {BigNumber} sine or cosine of x + */ + exports.cos_sin = function (x, precision, mode) { + var Big; + if (x.isNaN() || !x.isFinite()) { + Big = BigNumber.constructor({precision: precision}); + return new Big(NaN); + } + + // Avoid changing the original value + var y = BigNumberCopy(x); + Big = y.constructor; + + // sin(-x) == -sin(x), cos(-x) == cos(x) + var isNeg = y.isNegative(); + if (isNeg) { + y.s = -y.s; + } + + // Apply ~log(precision) guard bits + var precPlusGuardDigits = precision + (Math.log(precision) | 0) + 3; + Big.config({precision: precPlusGuardDigits}); + + y = reduceToPeriod(y, precPlusGuardDigits, mode); // Make this destructive + if (y[1]) { + Big.config({precision: precision}); + return y[0]; + } + + var ret; + y = y[0]; + if (mode) { + ret = cos_sin_taylor(y.div(3125), mode); + Big.config({precision: Math.min(Big.precision, precision + 15)}); + + var five = new Big(5); + var sixteen = new Big(16); + var twenty = new Big(20); + for (var i = 0; i < 5; ++i) { + var ret2 = ret.times(ret); + var ret3 = ret2.times(ret); + var ret5 = ret3.times(ret2); + ret = sixteen.times(ret5).minus( + twenty.times(ret3)).plus( + five.times(ret)); + } + + if (isNeg) { + ret.s = -ret.s; + } + } else { + var div_factor, loops; + if (y.abs().lt(Big.ONE)) { + div_factor = 64; + loops = 3; + } else { + div_factor = 256; + loops = 4; + } + + ret = cos_sin_taylor(y.div(div_factor), mode); + Big.config({precision: Math.min(Big.precision, precision + 8)}); + + var eight = new Big(8); + for (; loops > 0; --loops) { + var ret2 = ret.times(ret); + var ret4 = ret2.times(ret2); + ret = eight.times(ret4.minus(ret2)).plus(Big.ONE); + } + } + + ret.constructor.config({precision: precision}); + return ret.toDP(precision - 1); + }; + + /** + * Calculate the tangent of x + * + * tan(x) = sin(x) / cos(x) + * + * @param {BigNumber} x + * @param {Number} precision precision as defined in the config file + * @returns {BigNumber} tangent of x + */ + exports.tan = function (x, precision) { + var Big = BigNumber.constructor({precision: precision}); + if (x.isNaN()) { + return new Big(NaN); + } + + var pi = exports.pi(precision + 2); + var halfPi = pi.div(2).toDP(precision - 1); + pi = pi.toDP(precision - 1); + + var y = reduceToPeriod(x, precision, 1)[0]; + if (y.abs().eq(pi)) { + return new Big(Infinity); + } + + var sin = exports.cos_sin(y, precision + 2, 1); + var cos = sinToCos(sin); + + sin.constructor.config({precision: precision}); + sin = sin.toDP(precision); + cos = cos.toDP(precision); + + // Make sure sign for cosine is correct + if (y.eq(x)) { + if (y.gt(halfPi)) { + cos.s = -cos.s; + } + } else if (pi.minus(y.abs()).gt(halfPi)) { + cos.s = -cos.s; + } + + sin.constructor.config({precision: precision + 2}); + var tan = sin.div(cos); + + return new Big(tan.toPrecision(precision)); + }; + + /** + * Calculate the hyperbolic cosine/sine of x + * + * cosh(x) = (exp(x) + exp(-x)) / 2 + * = (e^x + 1/e^x) / 2 + * + * sinh(x) = (exp(x) - exp(-x)) / 2 + * = (e^x - 1/e^x) / 2 + * + * @param {BigNumber} x + * @param {Number} mode cosh function if 0, sinh function if 1 + * @returns {BigNumber} cosh or sinh of x + */ + exports.cosh_sinh = function (x, mode) { + var Big = x.constructor; + if (x.isNaN()) { + return new Big(NaN); + } + if (!x.isFinite()) { + return new Big((mode) ? x : Infinity); + } + + var precision = Big.precision; + Big.config({precision: precision + 4}); + + var y = x.exp(); + y = (mode) ? y.minus(Big.ONE.div(y)) : y.plus(Big.ONE.div(y)); + y = y.div(2); + + Big.config({precision: precision}); + return new Big(y.toPrecision(precision)); + }; + + /** + * Calculate the hyperbolic tangent of x + * + * tanh(x) = (exp(x) + exp(-x)) / (exp(x) - exp(-x)) + * = (exp(2x) - 1) / (exp(2x) + 1) + * = (e^x - 1/e^x) / (e^x + 1/e^x) + * + * @param {BigNumber} x + * @returns {BigNumber} tanh of x + */ + exports.tanh = function (x) { + var Big = x.constructor; + if (x.isNaN()) { + return new Big(NaN); + } + if (!x.isFinite()) { + return new Big(x.s); + } + + var precision = Big.precision; + Big.config({precision: precision + 4}); + + var posExp = x.exp(); + var negExp = Big.ONE.div(posExp); + var ret = posExp.minus(negExp); + ret = ret.div(posExp.plus(negExp)); + + Big.config({precision: precision}); + return ret.toDP(precision - 1); + }; + + /** + * Calculate the arc sine of x using Newton's method + * + * f(x) = sin(x) = N => f(x) = sin(x) - N + * f'(x) = cos(x) + * + * Thus we solve each step as follows: + * x_(i+1) = x_i - (sin(x_i) - N)/cos(x_i) + * + * @param {BigNumber} x + * @param {Number} oldPrecision + * @returns {BigNumber} arc sine of x + */ + function arcsin_newton(x, oldPrecision) { + // Calibration variables, adjusted from MAPM + var tolerance = -(oldPrecision + 4); + var maxp = oldPrecision + 8 - x.e; + var localPrecision = 25 - x.e; + var maxIter = Math.max(Math.log(oldPrecision + 2) * 1.442695 | 0 + 5, 5); + + var Big = BigNumber.constructor({precision: oldPrecision}); + var curr = new Big(Math.asin(x.toNumber()) + ''); + + var i = 0; + do { + var tmp0 = exports.cos_sin(curr, localPrecision, 1); + var tmp1 = sinToCos(tmp0); + if (!tmp0.isZero()) { + tmp0.s = curr.s; + } + + var tmp2 = tmp0.minus(x).div(tmp1); + curr = curr.minus(tmp2); + + localPrecision = Math.min(2*localPrecision, maxp); + curr.constructor.config({precision: localPrecision}); + } while ((2*tmp2.e >= tolerance) && !tmp2.isZero() && (++i <= maxIter)) + + if (i == maxIter) { + throw new Error('asin() failed to converge to the requested accuracy.' + + 'Try with a higher precision.'); + } + + curr.constructor.config({precision: oldPrecision}); + return curr.toDP(oldPrecision - 1); + } + + /** + * Calculate the arc sine of x + * + * arcsin(x) = x + (1/2)*x^3/3 + (3/8)*x^5/5 + (15/48)*x^7/7 ... + * = x + (1/2)*x^2*x^1/3 + [(1*3)/(2*4)]*x^2*x^3/5 + [(1*3*5)/(2*4*6)]*x^2*x^5/7 ... + * + * @param {BigNumber} x + * @param {Number} precision + * @returns {BigNumber} arc sine of x + */ + function arcsin_taylor(x, precision) { + var Big = x.constructor; + Big.config({precision: precision + Math.log(precision) | 0 + 4}); + + var one = new Big(1); + var y = x; + var yPrev = NaN; + var x2 = x.times(x); + var polyNum = x; + var constNum = new Big(one); + var constDen = new Big(one); + + var bigK = new Big(one); + for (var k = 3; !y.equals(yPrev); k += 2) { + polyNum = polyNum.times(x2); + + constNum = constNum.times(bigK); + constDen = constDen.times(bigK.plus(one)); + + yPrev = y; + bigK = new Big(k); + y = y.plus(polyNum.times(constNum).div(bigK.times(constDen))); + } + + Big.config({precision: precision}); + return y.toDP(precision - 1); + } + + /** + * Calculate the arc tangent of x using a Taylor expansion + * + * arctan(x) = x - x^3/3 + x^5/5 - x^7/7 + x^9/9 - ... + * = x - x^2*x^1/3 + x^2*x^3/5 - x^2*x^5/7 + x^2*x^7/9 - ... + * + * @param {BigNumber} x + * @returns {BigNumber} arc tangent of x + */ + function arctan_taylor(x) { + var y = x; + var yPrev = NaN; + var x2 = x.times(x); + var num = x; + var add = true; + + for (var k = 3; !y.equals(yPrev); k += 2) { + num = num.times(x2); + + yPrev = y; + add = !add; + y = (add) ? y.plus(num.div(k)) : y.minus(num.div(k)); + } + + return y; + } + + /** + * Calculate the cosine or sine of x using Taylor Series. + * + * cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8! - ... + * = 1 - 1*x^2/2! + x^2*x^2/4! - x^2*x^4/6! + x^2*x^6/8! - ... + * + * sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! - ... + * = x - x^2*x^1/3! + x^2*x^3/5! - x^2*x^5/7! + x^2*x^7/9! - ... + * + * @param {BigNumber} x reduced argument + * @param {Number} mode sine function if 1, cosine function if 0 + * @returns {BigNumber} sine or cosine of x + */ + function cos_sin_taylor(x, mode) { + var one = x.constructor.ONE; + + var y = x; + var yPrev = NaN; + var x2 = x.times(x); + var num = (mode) ? y : y = one; + var den = one; + var add = true; + + for (var k = mode; !y.equals(yPrev); k += 2) { + num = num.times(x2); + den = den.times(k+1).times(k+2); + + yPrev = y; + add = !add; + y = (add) ? y.plus(num.div(den)) : y.minus(num.div(den)); + } + + return y; + } + + /** + * Reduce x within a period of pi (0, pi] with guard digits. + * + * @param {BigNumber} x + * @param {Number} precision + * @param {Number} mode + * @returns {Array} [Reduced x, is tau multiple?] + */ + function reduceToPeriod(x, precision, mode) { + var pi = exports.pi(precision + 2); + var tau = exports.tau(precision); + if (x.abs().lte(pi.toDP(x.dp()))) { + return [x, false]; + } + + var Big = x.constructor; + // Catch if input is tau multiple using pi's precision + if (x.div(pi.toDP(x.dp())).toNumber() % 2 == 0) { + return [new Big(mode ^ 1), true]; + } + + var y = x.mod(tau); + + // Catch if tau multiple with tau's precision + if (y.toDP(x.dp(), 1).isZero()) { + return [new Big(mode ^ 1), true]; + } + + if (y.gt(pi)) { + if (mode) { + // sin(x + pi) = -sin(x) + y = y.minus(pi); + y.s = -y.s; + } else { + // cos(x) = cos(tau - x) + y = tau.minus(y); + } + } + + y.constructor = Big; + return [y, false]; + } + + /** + * Convert from sine to cosine + * + * |cos(x)| = sqrt(1 - sin(x)^2) + * + * @param {BigNumber} sine of x + * @returns {BigNumber} sine as cosine + */ + function sinToCos(sinVal) { + var Big = sinVal.constructor; + var precision = Big.precision; + Big.config({precision: precision + 2}); + + var ret = Big.ONE.minus(sinVal.times(sinVal)).sqrt(); + + Big.config({precision: precision}); + return ret.toDP(precision - 1); + } + + + /************************************ + * Format functions * + ************************************/ /** * Convert a number to a formatted string representation. @@ -19303,144 +20123,29 @@ return /******/ (function(modules) { // webpackBootstrap // undefined default precision instead of 0. }; + /* Helper functions */ + function BigNumberCopy(x) { + var Big = BigNumber.constructor({precision: x.constructor.precision}); + var y = new Big(x); + y.constructor = Big; // Not sure why I have to do this... - /* Private functions. */ - - - function bitwise(x, y, func) { - var BigNumber = x['constructor']; - - var xBits, yBits; - var xSign = +(x['s'] < 0); - var ySign = +(y['s'] < 0); - if (xSign) { - xBits = decToBinary(coefficientToString(exports.not(x))); - for (var i = 0; i < xBits.length; ++i) { - xBits[i] ^= 1; - } - } else { - xBits = decToBinary(coefficientToString(x)); - } - if (ySign) { - yBits = decToBinary(coefficientToString(exports.not(y))); - for (var i = 0; i < yBits.length; ++i) { - yBits[i] ^= 1; - } - } else { - yBits = decToBinary(coefficientToString(y)); - } - - var minBits, maxBits, minSign; - if (xBits.length <= yBits.length) { - minBits = xBits; - maxBits = yBits; - minSign = xSign; - } else { - minBits = yBits; - maxBits = xBits; - minSign = ySign; - } - - var shortLen = minBits.length; - var longLen = maxBits.length; - var expFuncVal = func(xSign, ySign) ^ 1; - var outVal = new BigNumber(expFuncVal ^ 1); - var twoPower = BigNumber['ONE']; - var two = new BigNumber(2); - - var prevPrec = BigNumber['precision']; - BigNumber['precision'] = 1E9; - - while (shortLen > 0) { - if (func(minBits[--shortLen], maxBits[--longLen]) == expFuncVal) { - outVal = outVal.plus(twoPower); - } - twoPower = twoPower.times(two); - } - while (longLen > 0) { - if (func(minSign, maxBits[--longLen]) == expFuncVal) { - outVal = outVal.plus(twoPower); - } - twoPower = twoPower.times(two); - } - - BigNumber['precision'] = prevPrec; - - if (expFuncVal == 0) { - outVal['s'] = -outVal['s']; - } - return outVal; - } - - - /* Private functions extracted from decimal.js, and edited to specialize. */ - - - function coefficientToString(x) { - var a = x['c']; - var r = a[0] + ''; - - for (var i = 1; i < a.length; ++i) { - var s = a[i] + ''; - for (var z = 7 - s.length; z--; ) { - s = '0' + s; - } - - r += s; - } - - var j; - for (j = r.length - 1; r.charAt(j) == '0'; --j); - - var xe = x['e']; - var str = r.slice(0, j + 1 || 1); - var strL = str.length; - if (xe > 0) { - if (++xe > strL) { - // Append zeros. - for (xe -= strL; xe--; str += '0'); - } else if (xe < strL) { - str = str.slice(0, xe) + '.' + str.slice(xe); - } - } - return str; - } - - function decToBinary(str) { - var arr = [0]; - for (var i = 0; i < str.length; ) { - for (var arrL = arr.length; arrL--; arr[arrL] *= 10); - - arr[0] += str.charAt(i++) << 0; // convert to int - for (var j = 0; j < arr.length; ++j) { - if (arr[j] > 1) { - if (arr[j + 1] == null) { - arr[j + 1] = 0; - } - - arr[j + 1] += arr[j] >> 1; - arr[j] &= 1; - } - } - } - - return arr.reverse(); + return y; } /***/ }, -/* 153 */ +/* 154 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var number = __webpack_require__(4), - string = __webpack_require__(176), - object = __webpack_require__(3), - types = __webpack_require__(195), + var number = __webpack_require__(3), + string = __webpack_require__(195), + object = __webpack_require__(2), + types = __webpack_require__(315), - DimensionError = __webpack_require__(157), - IndexError = __webpack_require__(158), + DimensionError = __webpack_require__(158), + IndexError = __webpack_require__(159), isArray = Array.isArray; @@ -19811,16 +20516,16 @@ return /******/ (function(modules) { // webpackBootstrap exports.isArray = isArray; /***/ }, -/* 154 */ +/* 155 */ /***/ function(module, exports, __webpack_require__) { - module.exports = '1.2.1-SNAPSHOT'; + module.exports = '1.3.0'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. /***/ }, -/* 155 */ +/* 156 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! decimal.js v4.0.1 https://github.com/MikeMcl/decimal.js/LICENCE */ @@ -23889,7 +24594,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 156 */ +/* 157 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -23928,7 +24633,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 157 */ +/* 158 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -23968,7 +24673,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 158 */ +/* 159 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -24019,7 +24724,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 159 */ +/* 160 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -24061,32 +24766,32 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = UnsupportedTypeError; -/***/ }, -/* 160 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - exports.array = __webpack_require__(153); - exports['boolean'] = __webpack_require__(175); - exports.number = __webpack_require__(4); - exports.bignumber = __webpack_require__(152); - exports.object = __webpack_require__(3); - exports.string = __webpack_require__(176); - exports.types = __webpack_require__(195); - - /***/ }, /* 161 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(173), - object = __webpack_require__(3), - string = __webpack_require__(176), + exports.array = __webpack_require__(154); + exports['boolean'] = __webpack_require__(194); + exports.number = __webpack_require__(3); + exports.bignumber = __webpack_require__(153); + exports.object = __webpack_require__(2); + exports.string = __webpack_require__(195); + exports.types = __webpack_require__(315); + + +/***/ }, +/* 162 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Node = __webpack_require__(170), + object = __webpack_require__(2), + string = __webpack_require__(195), collection = __webpack_require__(13), - util = __webpack_require__(160), + util = __webpack_require__(161), isArray = Array.isArray, isNode = Node.isNode; @@ -24204,18 +24909,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 162 */ +/* 163 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(173), - ArrayNode = __webpack_require__(161), + var Node = __webpack_require__(170), + ArrayNode = __webpack_require__(162), - keywords = __webpack_require__(315), + keywords = __webpack_require__(317), - latex = __webpack_require__(316), - isString = __webpack_require__(176).isString; + latex = __webpack_require__(318), + isString = __webpack_require__(195).isString; /** * @constructor AssignmentNode @@ -24305,14 +25010,14 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = AssignmentNode; /***/ }, -/* 163 */ +/* 164 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(173); + var Node = __webpack_require__(170); var ResultSet = __webpack_require__(12); - var isBoolean = __webpack_require__(175).isBoolean; + var isBoolean = __webpack_require__(194).isBoolean; /** * @constructor BlockNode @@ -24444,17 +25149,17 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 164 */ +/* 165 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(173); - var latex = __webpack_require__(316); - var BigNumber = __webpack_require__(155); + var Node = __webpack_require__(170); + var latex = __webpack_require__(318); + var BigNumber = __webpack_require__(156); var Complex = __webpack_require__(6); var Unit = __webpack_require__(10); - var util = __webpack_require__(160); + var util = __webpack_require__(161); var isString = util.string.isString; var isNumber = util.number.isNumber; var isBoolean = util['boolean'].isBoolean; @@ -24599,15 +25304,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 165 */ +/* 166 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(173), - BigNumber = __webpack_require__(155), - type = __webpack_require__(195).type, - isString = __webpack_require__(176).isString; + var Node = __webpack_require__(170), + BigNumber = __webpack_require__(156), + type = __webpack_require__(315).type, + isString = __webpack_require__(195).isString; /** * A ConstantNode holds a constant value like a number or string. A ConstantNode @@ -24785,137 +25490,17 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = ConstantNode; -/***/ }, -/* 166 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var Node = __webpack_require__(173); - var keywords = __webpack_require__(315); - var latex = __webpack_require__(316); - var isString = __webpack_require__(176).isString; - var isArray = Array.isArray; - - /** - * @constructor FunctionAssignmentNode - * @extends {Node} - * Function assignment - * - * @param {String} name Function name - * @param {String[]} params Function parameter names - * @param {Node} expr The function expression - */ - function FunctionAssignmentNode(name, params, expr) { - if (!(this instanceof FunctionAssignmentNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // validate input - if (!isString(name)) throw new TypeError('String expected for parameter "name"'); - if (!isArray(params) || !params.every(isString)) throw new TypeError('Array containing strings expected for parameter "params"'); - if (!(expr instanceof Node)) throw new TypeError('Node expected for parameter "expr"'); - if (name in keywords) throw new Error('Illegal function name, "' + name + '" is a reserved keyword'); - - this.name = name; - this.params = params; - this.expr = expr; - } - - FunctionAssignmentNode.prototype = new Node(); - - FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode'; - - /** - * Compile the node to javascript code - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @return {String} js - * @private - */ - FunctionAssignmentNode.prototype._compile = function (defs) { - return 'scope["' + this.name + '"] = ' + - ' (function (scope) {' + - ' scope = Object.create(scope); ' + - ' var fn = function ' + this.name + '(' + this.params.join(',') + ') {' + - ' if (arguments.length != ' + this.params.length + ') {' + - // TODO: use util.error.ArgumentsError here - // TODO: test arguments error - ' throw new SyntaxError("Wrong number of arguments in function ' + this.name + ' (" + arguments.length + " provided, ' + this.params.length + ' expected)");' + - ' }' + - this.params.map(function (variable, index) { - return 'scope["' + variable + '"] = arguments[' + index + '];'; - }).join('') + - ' return ' + this.expr._compile(defs) + '' + - ' };' + - ' fn.syntax = "' + this.name + '(' + this.params.join(', ') + ')";' + - ' return fn;' + - ' })(scope);'; - }; - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - FunctionAssignmentNode.prototype.forEach = function (callback) { - callback(this.expr, 'expr', this); - }; - - /** - * Create a new FunctionAssignmentNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {FunctionAssignmentNode} Returns a transformed copy of the node - */ - FunctionAssignmentNode.prototype.map = function (callback) { - var expr = this._ifNode(callback(this.expr, 'expr', this)); - - return new FunctionAssignmentNode(this.name, this.params.slice(0), expr); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {FunctionAssignmentNode} - */ - FunctionAssignmentNode.prototype.clone = function() { - return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr); - }; - - /** - * get string representation - * @return {String} str - */ - FunctionAssignmentNode.prototype.toString = function() { - return 'function ' + this.name + - '(' + this.params.join(', ') + ') = ' + - this.expr.toString(); - }; - - /** - * get LaTeX representation - * @return {String} str - */ - FunctionAssignmentNode.prototype.toTex = function() { - return this.name + - latex.addBraces(this.params.map(latex.toSymbol).join(', '), true) + '=' + - latex.addBraces(this.expr.toTex()); - }; - - module.exports = FunctionAssignmentNode; - - /***/ }, /* 167 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var Node = __webpack_require__(173); - var RangeNode = __webpack_require__(170); - var SymbolNode = __webpack_require__(171); + var Node = __webpack_require__(170); + var RangeNode = __webpack_require__(172); + var SymbolNode = __webpack_require__(173); - var BigNumber = __webpack_require__(155); + var BigNumber = __webpack_require__(156); var Range = __webpack_require__(7); var isNode = Node.isNode; @@ -25134,35 +25719,40 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Node = __webpack_require__(173), - ConstantNode = __webpack_require__(165), - SymbolNode = __webpack_require__(171), - FunctionNode = __webpack_require__(169), - latex = __webpack_require__(316); + var Node = __webpack_require__(170); + var keywords = __webpack_require__(317); + var latex = __webpack_require__(318); + var isString = __webpack_require__(195).isString; + var isArray = Array.isArray; /** - * @constructor OperatorNode + * @constructor FunctionAssignmentNode * @extends {Node} - * An operator with two arguments, like 2+3 + * Function assignment * - * @param {String} op Operator name, for example '+' - * @param {String} fn Function name, for example 'add' - * @param {Node[]} args Operator arguments + * @param {String} name Function name + * @param {String[]} params Function parameter names + * @param {Node} expr The function expression */ - function OperatorNode (op, fn, args) { - if (!(this instanceof OperatorNode)) { + function FunctionAssignmentNode(name, params, expr) { + if (!(this instanceof FunctionAssignmentNode)) { throw new SyntaxError('Constructor must be called with the new operator'); } - // TODO: validate input - this.op = op; - this.fn = fn; - this.args = args || []; + // validate input + if (!isString(name)) throw new TypeError('String expected for parameter "name"'); + if (!isArray(params) || !params.every(isString)) throw new TypeError('Array containing strings expected for parameter "params"'); + if (!(expr instanceof Node)) throw new TypeError('Node expected for parameter "expr"'); + if (name in keywords) throw new Error('Illegal function name, "' + name + '" is a reserved keyword'); + + this.name = name; + this.params = params; + this.expr = expr; } - OperatorNode.prototype = new Node(); + FunctionAssignmentNode.prototype = new Node(); - OperatorNode.prototype.type = 'OperatorNode'; + FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode'; /** * Compile the node to javascript code @@ -25172,169 +25762,75 @@ return /******/ (function(modules) { // webpackBootstrap * @return {String} js * @private */ - OperatorNode.prototype._compile = function (defs) { - if (!(this.fn in defs.math)) { - throw new Error('Function ' + this.fn + ' missing in provided namespace "math"'); - } - - var args = this.args.map(function (arg) { - return arg._compile(defs); - }); - return 'math.' + this.fn + '(' + args.join(', ') + ')'; + FunctionAssignmentNode.prototype._compile = function (defs) { + return 'scope["' + this.name + '"] = ' + + ' (function (scope) {' + + ' scope = Object.create(scope); ' + + ' var fn = function ' + this.name + '(' + this.params.join(',') + ') {' + + ' if (arguments.length != ' + this.params.length + ') {' + + // TODO: use util.error.ArgumentsError here + // TODO: test arguments error + ' throw new SyntaxError("Wrong number of arguments in function ' + this.name + ' (" + arguments.length + " provided, ' + this.params.length + ' expected)");' + + ' }' + + this.params.map(function (variable, index) { + return 'scope["' + variable + '"] = arguments[' + index + '];'; + }).join('') + + ' return ' + this.expr._compile(defs) + '' + + ' };' + + ' fn.syntax = "' + this.name + '(' + this.params.join(', ') + ')";' + + ' return fn;' + + ' })(scope);'; }; /** * Execute a callback for each of the child nodes of this node * @param {function(child: Node, path: string, parent: Node)} callback */ - OperatorNode.prototype.forEach = function (callback) { - for (var i = 0; i < this.args.length; i++) { - callback(this.args[i], 'args[' + i + ']', this); - } + FunctionAssignmentNode.prototype.forEach = function (callback) { + callback(this.expr, 'expr', this); }; /** - * Create a new OperatorNode having it's childs be the results of calling + * Create a new FunctionAssignmentNode having it's childs be the results of calling * the provided callback function for each of the childs of the original node. * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {OperatorNode} Returns a transformed copy of the node + * @returns {FunctionAssignmentNode} Returns a transformed copy of the node */ - OperatorNode.prototype.map = function (callback) { - var args = []; - for (var i = 0; i < this.args.length; i++) { - args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this)); - } - return new OperatorNode(this.op, this.fn, args); + FunctionAssignmentNode.prototype.map = function (callback) { + var expr = this._ifNode(callback(this.expr, 'expr', this)); + + return new FunctionAssignmentNode(this.name, this.params.slice(0), expr); }; /** * Create a clone of this node, a shallow copy - * @return {OperatorNode} + * @return {FunctionAssignmentNode} */ - OperatorNode.prototype.clone = function() { - return new OperatorNode(this.op, this.fn, this.args.slice(0)); + FunctionAssignmentNode.prototype.clone = function() { + return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr); }; /** - * Get string representation + * get string representation * @return {String} str */ - OperatorNode.prototype.toString = function() { - var args = this.args; - - switch (args.length) { - case 1: - if (this.op == '-') { - // special case: unary minus - return '-' + args[0].toString(); - } - else { - // for example '5!' - return args[0].toString() + this.op; - } - - case 2: // for example '2+3' - var lhs = args[0].toString(); - if (args[0] instanceof OperatorNode) { - lhs = '(' + lhs + ')'; - } - var rhs = args[1].toString(); - if (args[1] instanceof OperatorNode) { - rhs = '(' + rhs + ')'; - } - return lhs + ' ' + this.op + ' ' + rhs; - - default: // this should not occur. format as a function call - return this.op + '(' + this.args.join(', ') + ')'; - } + FunctionAssignmentNode.prototype.toString = function() { + return 'function ' + this.name + + '(' + this.params.join(', ') + ') = ' + + this.expr.toString(); }; /** - * Get LaTeX representation + * get LaTeX representation * @return {String} str */ - OperatorNode.prototype.toTex = function() { - var args = this.args, - mop = latex.toOperator(this.op), - lp = args[0], - rp = args[1]; - - switch (args.length) { - case 1: - if (this.op === '-' || this.op === '+') { - // special case: unary minus - return this.op + lp.toTex(); - } - // for example '5!' - return lp.toTex() + this.op; - - case 2: // for example '2+3' - var lhs = lp.toTex(), - lhb = false, - rhs = rp.toTex(), - rhb = false, - lop = '', - rop = ''; - - switch (this.op) { - case '/': - lop = mop; - mop = ''; - - break; - - case '*': - if (lp instanceof OperatorNode) { - if (lp.op === '+' || lp.op === '-') { - lhb = true; - } - } - - if (rp instanceof OperatorNode) { - if (rp.op === '+' || rp.op === '-') { - rhb = true; - } - else if (rp.op === '*') { - rhb = true; - } - } - - if ((lp instanceof ConstantNode || lp instanceof OperatorNode) && - (rp instanceof ConstantNode || rp instanceof OperatorNode)) { - mop = ' \\cdot '; - } - else { - mop = ' \\, '; - } - - break; - - case '^': - if (lp instanceof OperatorNode || lp instanceof FunctionNode) { - lhb = true; - } - else if (lp instanceof SymbolNode) { - lhb = null; - } - - break; - - case 'to': - rhs = latex.toUnit(rhs, true); - break; - } - - lhs = latex.addBraces(lhs, lhb); - rhs = latex.addBraces(rhs, rhb); - - return lop + lhs + mop + rhs + rop; - - default: // this should not occur. format as a function call - return mop + '(' + this.args.map(latex.toSymbol).join(', ') + ')'; - } + FunctionAssignmentNode.prototype.toTex = function() { + return this.name + + latex.addBraces(this.params.map(latex.toSymbol).join(', '), true) + '=' + + latex.addBraces(this.expr.toTex()); }; - module.exports = OperatorNode; + module.exports = FunctionAssignmentNode; /***/ }, @@ -25343,10 +25839,10 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Node = __webpack_require__(173); - var SymbolNode = __webpack_require__(171); + var Node = __webpack_require__(170); + var SymbolNode = __webpack_require__(173); - var latex = __webpack_require__(316); + var latex = __webpack_require__(318); var isNode = Node.isNode; var isArray = Array.isArray; @@ -25471,341 +25967,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var Node = __webpack_require__(173); - - var isNode = Node.isNode; - - /** - * @constructor RangeNode - * @extends {Node} - * create a range - * @param {Node} start included lower-bound - * @param {Node} end included lower-bound - * @param {Node} [step] optional step - */ - function RangeNode (start, end, step) { - if (!(this instanceof RangeNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // validate inputs - if (!isNode(start)) throw new TypeError('Node expected'); - if (!isNode(end)) throw new TypeError('Node expected'); - if (step && !isNode(step)) throw new TypeError('Node expected'); - if (arguments.length > 3) throw new Error('Too many arguments'); - - this.start = start; // included lower-bound - this.end = end; // included upper-bound - this.step = step || null; // optional step - } - - RangeNode.prototype = new Node(); - - RangeNode.prototype.type = 'RangeNode'; - - /** - * Compile the node to javascript code - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @return {String} js - * @private - */ - RangeNode.prototype._compile = function (defs) { - return 'math.range(' + - this.start._compile(defs) + ', ' + - this.end._compile(defs) + - (this.step ? (', ' + this.step._compile(defs)) : '') + - ')'; - }; - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - RangeNode.prototype.forEach = function (callback) { - callback(this.start, 'start', this); - callback(this.end, 'end', this); - if (this.step) { - callback(this.step, 'step', this); - } - }; - - /** - * Create a new RangeNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {RangeNode} Returns a transformed copy of the node - */ - RangeNode.prototype.map = function (callback) { - return new RangeNode( - this._ifNode(callback(this.start, 'start', this)), - this._ifNode(callback(this.end, 'end', this)), - this.step && this._ifNode(callback(this.step, 'step', this)) - ); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {RangeNode} - */ - RangeNode.prototype.clone = function() { - return new RangeNode(this.start, this.end, this.step && this.step); - }; - - /** - * Get string representation - * @return {String} str - */ - RangeNode.prototype.toString = function() { - // format the range like "start:step:end" - var str = this.start.toString(); - if (this.step) { - str += ':' + this.step.toString(); - } - str += ':' + this.end.toString(); - - return str; - }; - - /** - * Get LaTeX representation - * @return {String} str - */ - RangeNode.prototype.toTex = function() { - var str = this.start.toTex(); - if (this.step) { - str += ':' + this.step.toTex(); - } - str += ':' + this.end.toTex(); - - return str; - }; - - module.exports = RangeNode; - - -/***/ }, -/* 171 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var Node = __webpack_require__(173), - Unit = __webpack_require__(10), - - latex = __webpack_require__(316), - isString = __webpack_require__(176).isString; - - /** - * @constructor SymbolNode - * @extends {Node} - * A symbol node can hold and resolve a symbol - * @param {String} name - * @extends {Node} - */ - function SymbolNode(name) { - if (!(this instanceof SymbolNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - // validate input - if (!isString(name)) throw new TypeError('String expected for parameter "name"'); - - this.name = name; - } - - SymbolNode.prototype = new Node(); - - SymbolNode.prototype.type = 'SymbolNode'; - - /** - * Compile the node to javascript code - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @return {String} js - * @private - */ - SymbolNode.prototype._compile = function (defs) { - // add a function to the definitions - defs['undef'] = undef; - defs['Unit'] = Unit; - - if (this.name in defs.math) { - return '("' + this.name + '" in scope ? scope["' + this.name + '"] : math["' + this.name + '"])'; - } - else { - return '(' + - '"' + this.name + '" in scope ? scope["' + this.name + '"] : ' + - (Unit.isValuelessUnit(this.name) ? - 'new Unit(null, "' + this.name + '")' : - 'undef("' + this.name + '")') + - ')'; - } - }; - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - SymbolNode.prototype.forEach = function (callback) { - // nothing to do, we don't have childs - }; - - /** - * Create a new SymbolNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node) : Node} callback - * @returns {SymbolNode} Returns a clone of the node - */ - SymbolNode.prototype.map = function (callback) { - return this.clone(); - }; - - /** - * Throws an error 'Undefined symbol {name}' - * @param {String} name - */ - function undef (name) { - throw new Error('Undefined symbol ' + name); - } - - /** - * Create a clone of this node, a shallow copy - * @return {SymbolNode} - */ - SymbolNode.prototype.clone = function() { - return new SymbolNode(this.name); - }; - - /** - * Get string representation - * @return {String} str - * @override - */ - SymbolNode.prototype.toString = function() { - return this.name; - }; - - /** - * Get LaTeX representation - * @return {String} str - * @override - */ - SymbolNode.prototype.toTex = function() { - return latex.toSymbol(this.name); - }; - - module.exports = SymbolNode; - - -/***/ }, -/* 172 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var Node = __webpack_require__(173), - IndexNode = __webpack_require__(167); - - /** - * @constructor UpdateNode - * @extends {Node} - * Update a matrix subset, like A[2,3] = 4.5 - * - * @param {IndexNode} index IndexNode containing symbol and ranges - * @param {Node} expr The expression defining the symbol - */ - function UpdateNode(index, expr) { - if (!(this instanceof UpdateNode)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - if (!(index instanceof IndexNode)) { - throw new TypeError('Expected IndexNode for parameter "index"'); - } - if (!(expr instanceof Node)) { - throw new TypeError('Expected Node for parameter "expr"'); - } - - this.index = index; - this.expr = expr; - } - - UpdateNode.prototype = new Node(); - - UpdateNode.prototype.type = 'UpdateNode'; - - /** - * Compile the node to javascript code - * @param {Object} defs Object which can be used to define functions - * or constants globally available for the compiled - * expression - * @return {String} js - * @private - */ - UpdateNode.prototype._compile = function (defs) { - return 'scope["' + this.index.objectName() + '\"] = ' + - this.index.compileSubset(defs, this.expr._compile(defs)); - }; - - /** - * Execute a callback for each of the child nodes of this node - * @param {function(child: Node, path: string, parent: Node)} callback - */ - UpdateNode.prototype.forEach = function (callback) { - callback(this.index, 'index', this); - callback(this.expr, 'expr', this); - }; - - /** - * Create a new UpdateNode having it's childs be the results of calling - * the provided callback function for each of the childs of the original node. - * @param {function(child: Node, path: string, parent: Node): Node} callback - * @returns {UpdateNode} Returns a transformed copy of the node - */ - UpdateNode.prototype.map = function (callback) { - return new UpdateNode( - this._ifNode(callback(this.index, 'index', this)), - this._ifNode(callback(this.expr, 'expr', this)) - ); - }; - - /** - * Create a clone of this node, a shallow copy - * @return {UpdateNode} - */ - UpdateNode.prototype.clone = function() { - return new UpdateNode(this.index, this.expr); - }; - - /** - * Get string representation - * @return {String} - */ - UpdateNode.prototype.toString = function() { - return this.index.toString() + ' = ' + this.expr.toString(); - }; - - /** - * Get LaTeX representation - * @return {String} - */ - UpdateNode.prototype.toTex = function() { - return this.index.toTex() + ' = ' + this.expr.toTex(); - }; - - module.exports = UpdateNode; - - -/***/ }, -/* 173 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - var keywords = __webpack_require__(315); + var keywords = __webpack_require__(317); /** * Node @@ -26067,12 +26229,10 @@ return /******/ (function(modules) { // webpackBootstrap function _transform(math) { var transformed = Object.create(math); - for (var name in math) { - if (math.hasOwnProperty(name)) { - var fn = math[name]; - var transform = fn && fn.transform; - if (transform) { - transformed[name] = transform; + if (math.expression && math.expression.transform) { + for (var name in math.expression.transform) { + if (math.expression.transform.hasOwnProperty(name)) { + transformed[name] = math.expression.transform[name]; } } } @@ -26083,12 +26243,914 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Node; +/***/ }, +/* 171 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Node = __webpack_require__(170), + ConstantNode = __webpack_require__(166), + SymbolNode = __webpack_require__(173), + FunctionNode = __webpack_require__(169), + latex = __webpack_require__(318); + + /** + * @constructor OperatorNode + * @extends {Node} + * An operator with two arguments, like 2+3 + * + * @param {String} op Operator name, for example '+' + * @param {String} fn Function name, for example 'add' + * @param {Node[]} args Operator arguments + */ + function OperatorNode (op, fn, args) { + if (!(this instanceof OperatorNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + // TODO: validate input + this.op = op; + this.fn = fn; + this.args = args || []; + } + + OperatorNode.prototype = new Node(); + + OperatorNode.prototype.type = 'OperatorNode'; + + /** + * Compile the node to javascript code + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @return {String} js + * @private + */ + OperatorNode.prototype._compile = function (defs) { + if (!(this.fn in defs.math)) { + throw new Error('Function ' + this.fn + ' missing in provided namespace "math"'); + } + + var args = this.args.map(function (arg) { + return arg._compile(defs); + }); + return 'math.' + this.fn + '(' + args.join(', ') + ')'; + }; + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + OperatorNode.prototype.forEach = function (callback) { + for (var i = 0; i < this.args.length; i++) { + callback(this.args[i], 'args[' + i + ']', this); + } + }; + + /** + * Create a new OperatorNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {OperatorNode} Returns a transformed copy of the node + */ + OperatorNode.prototype.map = function (callback) { + var args = []; + for (var i = 0; i < this.args.length; i++) { + args[i] = this._ifNode(callback(this.args[i], 'args[' + i + ']', this)); + } + return new OperatorNode(this.op, this.fn, args); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {OperatorNode} + */ + OperatorNode.prototype.clone = function() { + return new OperatorNode(this.op, this.fn, this.args.slice(0)); + }; + + /** + * Get string representation + * @return {String} str + */ + OperatorNode.prototype.toString = function() { + var args = this.args; + + switch (args.length) { + case 1: + if (this.op == '-') { + // special case: unary minus + return '-' + args[0].toString(); + } + else { + // for example '5!' + return args[0].toString() + this.op; + } + + case 2: // for example '2+3' + var lhs = args[0].toString(); + if (args[0] instanceof OperatorNode) { + lhs = '(' + lhs + ')'; + } + var rhs = args[1].toString(); + if (args[1] instanceof OperatorNode) { + rhs = '(' + rhs + ')'; + } + return lhs + ' ' + this.op + ' ' + rhs; + + default: // this should not occur. format as a function call + return this.op + '(' + this.args.join(', ') + ')'; + } + }; + + /** + * Get LaTeX representation + * @return {String} str + */ + OperatorNode.prototype.toTex = function() { + var args = this.args, + mop = latex.toOperator(this.op), + lp = args[0], + rp = args[1]; + + switch (args.length) { + case 1: + if (this.op === '-' || this.op === '+') { + // special case: unary minus + return this.op + lp.toTex(); + } + // for example '5!' + return lp.toTex() + this.op; + + case 2: // for example '2+3' + var lhs = lp.toTex(), + lhb = false, + rhs = rp.toTex(), + rhb = false, + lop = '', + rop = ''; + + switch (this.op) { + case '/': + lop = mop; + mop = ''; + + break; + + case '*': + if (lp instanceof OperatorNode) { + if (lp.op === '+' || lp.op === '-') { + lhb = true; + } + } + + if (rp instanceof OperatorNode) { + if (rp.op === '+' || rp.op === '-') { + rhb = true; + } + else if (rp.op === '*') { + rhb = true; + } + } + + if ((lp instanceof ConstantNode || lp instanceof OperatorNode) && + (rp instanceof ConstantNode || rp instanceof OperatorNode)) { + mop = ' \\cdot '; + } + else { + mop = ' \\, '; + } + + break; + + case '^': + if (lp instanceof OperatorNode || lp instanceof FunctionNode) { + lhb = true; + } + else if (lp instanceof SymbolNode) { + lhb = null; + } + + break; + + case 'to': + rhs = latex.toUnit(rhs, true); + break; + } + + lhs = latex.addBraces(lhs, lhb); + rhs = latex.addBraces(rhs, rhb); + + return lop + lhs + mop + rhs + rop; + + default: // this should not occur. format as a function call + return mop + '(' + this.args.map(latex.toSymbol).join(', ') + ')'; + } + }; + + module.exports = OperatorNode; + + +/***/ }, +/* 172 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Node = __webpack_require__(170); + + var isNode = Node.isNode; + + /** + * @constructor RangeNode + * @extends {Node} + * create a range + * @param {Node} start included lower-bound + * @param {Node} end included lower-bound + * @param {Node} [step] optional step + */ + function RangeNode (start, end, step) { + if (!(this instanceof RangeNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + // validate inputs + if (!isNode(start)) throw new TypeError('Node expected'); + if (!isNode(end)) throw new TypeError('Node expected'); + if (step && !isNode(step)) throw new TypeError('Node expected'); + if (arguments.length > 3) throw new Error('Too many arguments'); + + this.start = start; // included lower-bound + this.end = end; // included upper-bound + this.step = step || null; // optional step + } + + RangeNode.prototype = new Node(); + + RangeNode.prototype.type = 'RangeNode'; + + /** + * Compile the node to javascript code + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @return {String} js + * @private + */ + RangeNode.prototype._compile = function (defs) { + return 'math.range(' + + this.start._compile(defs) + ', ' + + this.end._compile(defs) + + (this.step ? (', ' + this.step._compile(defs)) : '') + + ')'; + }; + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + RangeNode.prototype.forEach = function (callback) { + callback(this.start, 'start', this); + callback(this.end, 'end', this); + if (this.step) { + callback(this.step, 'step', this); + } + }; + + /** + * Create a new RangeNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {RangeNode} Returns a transformed copy of the node + */ + RangeNode.prototype.map = function (callback) { + return new RangeNode( + this._ifNode(callback(this.start, 'start', this)), + this._ifNode(callback(this.end, 'end', this)), + this.step && this._ifNode(callback(this.step, 'step', this)) + ); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {RangeNode} + */ + RangeNode.prototype.clone = function() { + return new RangeNode(this.start, this.end, this.step && this.step); + }; + + /** + * Get string representation + * @return {String} str + */ + RangeNode.prototype.toString = function() { + // format the range like "start:step:end" + var str = this.start.toString(); + if (this.step) { + str += ':' + this.step.toString(); + } + str += ':' + this.end.toString(); + + return str; + }; + + /** + * Get LaTeX representation + * @return {String} str + */ + RangeNode.prototype.toTex = function() { + var str = this.start.toTex(); + if (this.step) { + str += ':' + this.step.toTex(); + } + str += ':' + this.end.toTex(); + + return str; + }; + + module.exports = RangeNode; + + +/***/ }, +/* 173 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var Node = __webpack_require__(170), + Unit = __webpack_require__(10), + + latex = __webpack_require__(318), + isString = __webpack_require__(195).isString; + + /** + * @constructor SymbolNode + * @extends {Node} + * A symbol node can hold and resolve a symbol + * @param {String} name + * @extends {Node} + */ + function SymbolNode(name) { + if (!(this instanceof SymbolNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + // validate input + if (!isString(name)) throw new TypeError('String expected for parameter "name"'); + + this.name = name; + } + + SymbolNode.prototype = new Node(); + + SymbolNode.prototype.type = 'SymbolNode'; + + /** + * Compile the node to javascript code + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @return {String} js + * @private + */ + SymbolNode.prototype._compile = function (defs) { + // add a function to the definitions + defs['undef'] = undef; + defs['Unit'] = Unit; + + if (this.name in defs.math) { + return '("' + this.name + '" in scope ? scope["' + this.name + '"] : math["' + this.name + '"])'; + } + else { + return '(' + + '"' + this.name + '" in scope ? scope["' + this.name + '"] : ' + + (Unit.isValuelessUnit(this.name) ? + 'new Unit(null, "' + this.name + '")' : + 'undef("' + this.name + '")') + + ')'; + } + }; + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + SymbolNode.prototype.forEach = function (callback) { + // nothing to do, we don't have childs + }; + + /** + * Create a new SymbolNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node) : Node} callback + * @returns {SymbolNode} Returns a clone of the node + */ + SymbolNode.prototype.map = function (callback) { + return this.clone(); + }; + + /** + * Throws an error 'Undefined symbol {name}' + * @param {String} name + */ + function undef (name) { + throw new Error('Undefined symbol ' + name); + } + + /** + * Create a clone of this node, a shallow copy + * @return {SymbolNode} + */ + SymbolNode.prototype.clone = function() { + return new SymbolNode(this.name); + }; + + /** + * Get string representation + * @return {String} str + * @override + */ + SymbolNode.prototype.toString = function() { + return this.name; + }; + + /** + * Get LaTeX representation + * @return {String} str + * @override + */ + SymbolNode.prototype.toTex = function() { + return latex.toSymbol(this.name); + }; + + module.exports = SymbolNode; + + /***/ }, /* 174 */ /***/ function(module, exports, __webpack_require__) { - var DimensionError = __webpack_require__(157); - var IndexError = __webpack_require__(158); + 'use strict'; + + var Node = __webpack_require__(170), + IndexNode = __webpack_require__(167); + + /** + * @constructor UpdateNode + * @extends {Node} + * Update a matrix subset, like A[2,3] = 4.5 + * + * @param {IndexNode} index IndexNode containing symbol and ranges + * @param {Node} expr The expression defining the symbol + */ + function UpdateNode(index, expr) { + if (!(this instanceof UpdateNode)) { + throw new SyntaxError('Constructor must be called with the new operator'); + } + + if (!(index instanceof IndexNode)) { + throw new TypeError('Expected IndexNode for parameter "index"'); + } + if (!(expr instanceof Node)) { + throw new TypeError('Expected Node for parameter "expr"'); + } + + this.index = index; + this.expr = expr; + } + + UpdateNode.prototype = new Node(); + + UpdateNode.prototype.type = 'UpdateNode'; + + /** + * Compile the node to javascript code + * @param {Object} defs Object which can be used to define functions + * or constants globally available for the compiled + * expression + * @return {String} js + * @private + */ + UpdateNode.prototype._compile = function (defs) { + return 'scope["' + this.index.objectName() + '\"] = ' + + this.index.compileSubset(defs, this.expr._compile(defs)); + }; + + /** + * Execute a callback for each of the child nodes of this node + * @param {function(child: Node, path: string, parent: Node)} callback + */ + UpdateNode.prototype.forEach = function (callback) { + callback(this.index, 'index', this); + callback(this.expr, 'expr', this); + }; + + /** + * Create a new UpdateNode having it's childs be the results of calling + * the provided callback function for each of the childs of the original node. + * @param {function(child: Node, path: string, parent: Node): Node} callback + * @returns {UpdateNode} Returns a transformed copy of the node + */ + UpdateNode.prototype.map = function (callback) { + return new UpdateNode( + this._ifNode(callback(this.index, 'index', this)), + this._ifNode(callback(this.expr, 'expr', this)) + ); + }; + + /** + * Create a clone of this node, a shallow copy + * @return {UpdateNode} + */ + UpdateNode.prototype.clone = function() { + return new UpdateNode(this.index, this.expr); + }; + + /** + * Get string representation + * @return {String} + */ + UpdateNode.prototype.toString = function() { + return this.index.toString() + ' = ' + this.expr.toString(); + }; + + /** + * Get LaTeX representation + * @return {String} + */ + UpdateNode.prototype.toTex = function() { + return this.index.toTex() + ' = ' + this.expr.toTex(); + }; + + module.exports = UpdateNode; + + +/***/ }, +/* 175 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'e', + 'category': 'Constants', + 'syntax': [ + 'e' + ], + 'description': 'Euler\'s number, the base of the natural logarithm. Approximately equal to 2.71828', + 'examples': [ + 'e', + 'e ^ 2', + 'exp(2)', + 'log(e)' + ], + 'seealso': ['exp'] + }; + + +/***/ }, +/* 176 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'false', + 'category': 'Constants', + 'syntax': [ + 'false' + ], + 'description': 'Boolean value false', + 'examples': [ + 'false' + ], + 'seealso': ['true'] + }; + + +/***/ }, +/* 177 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'i', + 'category': 'Constants', + 'syntax': [ + 'i' + ], + 'description': 'Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.', + 'examples': [ + 'i', + 'i * i', + 'sqrt(-1)' + ], + 'seealso': [] + }; + + +/***/ }, +/* 178 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'Infinity', + 'category': 'Constants', + 'syntax': [ + 'Infinity' + ], + 'description': 'Infinity, a number which is larger than the maximum number that can be handled by a floating point number.', + 'examples': [ + 'Infinity', + '1 / 0' + ], + 'seealso': [] + }; + + +/***/ }, +/* 179 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'LN2', + 'category': 'Constants', + 'syntax': [ + 'LN2' + ], + 'description': 'Returns the natural logarithm of 2, approximately equal to 0.693', + 'examples': [ + 'LN2', + 'log(2)' + ], + 'seealso': [] + }; + + +/***/ }, +/* 180 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'LN10', + 'category': 'Constants', + 'syntax': [ + 'LN10' + ], + 'description': 'Returns the natural logarithm of 10, approximately equal to 2.302', + 'examples': [ + 'LN10', + 'log(10)' + ], + 'seealso': [] + }; + + +/***/ }, +/* 181 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'LOG2E', + 'category': 'Constants', + 'syntax': [ + 'LOG2E' + ], + 'description': 'Returns the base-2 logarithm of E, approximately equal to 1.442', + 'examples': [ + 'LOG2E', + 'log(e, 2)' + ], + 'seealso': [] + }; + + +/***/ }, +/* 182 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'LOG10E', + 'category': 'Constants', + 'syntax': [ + 'LOG10E' + ], + 'description': 'Returns the base-10 logarithm of E, approximately equal to 0.434', + 'examples': [ + 'LOG10E', + 'log(e, 10)' + ], + 'seealso': [] + }; + + +/***/ }, +/* 183 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'NaN', + 'category': 'Constants', + 'syntax': [ + 'NaN' + ], + 'description': 'Not a number', + 'examples': [ + 'NaN', + '0 / 0' + ], + 'seealso': [] + }; + + +/***/ }, +/* 184 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'null', + 'category': 'Constants', + 'syntax': [ + 'null' + ], + 'description': 'Value null', + 'examples': [ + 'null' + ], + 'seealso': ['true', 'false'] + }; + + +/***/ }, +/* 185 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'pi', + 'category': 'Constants', + 'syntax': [ + 'pi' + ], + 'description': 'The number pi is a mathematical constant that is the ratio of a circle\'s circumference to its diameter, and is approximately equal to 3.14159', + 'examples': [ + 'pi', + 'sin(pi/2)' + ], + 'seealso': ['tau'] + }; + + +/***/ }, +/* 186 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'phi', + 'category': 'Constants', + 'syntax': [ + 'phi' + ], + 'description': 'Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...', + 'examples': [ + 'tau' + ], + 'seealso': [] + }; + + +/***/ }, +/* 187 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'SQRT1_2', + 'category': 'Constants', + 'syntax': [ + 'SQRT1_2' + ], + 'description': 'Returns the square root of 1/2, approximately equal to 0.707', + 'examples': [ + 'SQRT1_2', + 'sqrt(1/2)' + ], + 'seealso': [] + }; + + +/***/ }, +/* 188 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'SQRT2', + 'category': 'Constants', + 'syntax': [ + 'SQRT2' + ], + 'description': 'Returns the square root of 2, approximately equal to 1.414', + 'examples': [ + 'SQRT2', + 'sqrt(2)' + ], + 'seealso': [] + }; + + +/***/ }, +/* 189 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'tau', + 'category': 'Constants', + 'syntax': [ + 'tau' + ], + 'description': 'Tau is the ratio constant of a circle\'s circumference to radius, equal to 2 * pi, approximately 6.2832.', + 'examples': [ + 'tau', + '2 * pi' + ], + 'seealso': ['pi'] + }; + + +/***/ }, +/* 190 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'true', + 'category': 'Constants', + 'syntax': [ + 'true' + ], + 'description': 'Boolean value true', + 'examples': [ + 'true' + ], + 'seealso': ['false'] + }; + + +/***/ }, +/* 191 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'version', + 'category': 'Constants', + 'syntax': [ + 'version' + ], + 'description': 'A string with the version number of math.js', + 'examples': [ + 'version' + ], + 'seealso': [] + }; + + +/***/ }, +/* 192 */ +/***/ function(module, exports, __webpack_require__) { + + var map = { + "./clone": 144, + "./clone.js": 144, + "./filter": 145, + "./filter.js": 145, + "./forEach": 152, + "./forEach.js": 152, + "./format": 146, + "./format.js": 146, + "./import": 147, + "./import.js": 147, + "./map": 148, + "./map.js": 148, + "./print": 149, + "./print.js": 149, + "./sort": 150, + "./sort.js": 150, + "./typeof": 151, + "./typeof.js": 151 + }; + function webpackContext(req) { + return __webpack_require__(webpackContextResolve(req)); + }; + function webpackContextResolve(req) { + return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }()); + }; + webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); + }; + webpackContext.resolve = webpackContextResolve; + module.exports = webpackContext; + webpackContext.id = 192; + + +/***/ }, +/* 193 */ +/***/ function(module, exports, __webpack_require__) { + + var DimensionError = __webpack_require__(158); + var IndexError = __webpack_require__(159); /** * Transform zero-based indices to one-based indices in errors @@ -26105,7 +27167,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 175 */ +/* 194 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; @@ -26121,14 +27183,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 176 */ +/* 195 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var number = __webpack_require__(4), - bignumber = __webpack_require__(152), - BigNumber = __webpack_require__(155); + var number = __webpack_require__(3), + bignumber = __webpack_require__(153), + BigNumber = __webpack_require__(156); /** * Test whether value is a String @@ -26235,613 +27297,8 @@ return /******/ (function(modules) { // webpackBootstrap } -/***/ }, -/* 177 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'e', - 'category': 'Constants', - 'syntax': [ - 'e' - ], - 'description': 'Euler\'s number, the base of the natural logarithm. Approximately equal to 2.71828', - 'examples': [ - 'e', - 'e ^ 2', - 'exp(2)', - 'log(e)' - ], - 'seealso': ['exp'] - }; - - -/***/ }, -/* 178 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'false', - 'category': 'Constants', - 'syntax': [ - 'false' - ], - 'description': 'Boolean value false', - 'examples': [ - 'false' - ], - 'seealso': ['true'] - }; - - -/***/ }, -/* 179 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'i', - 'category': 'Constants', - 'syntax': [ - 'i' - ], - 'description': 'Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.', - 'examples': [ - 'i', - 'i * i', - 'sqrt(-1)' - ], - 'seealso': [] - }; - - -/***/ }, -/* 180 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'Infinity', - 'category': 'Constants', - 'syntax': [ - 'Infinity' - ], - 'description': 'Infinity, a number which is larger than the maximum number that can be handled by a floating point number.', - 'examples': [ - 'Infinity', - '1 / 0' - ], - 'seealso': [] - }; - - -/***/ }, -/* 181 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'LN2', - 'category': 'Constants', - 'syntax': [ - 'LN2' - ], - 'description': 'Returns the natural logarithm of 2, approximately equal to 0.693', - 'examples': [ - 'LN2', - 'log(2)' - ], - 'seealso': [] - }; - - -/***/ }, -/* 182 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'LN10', - 'category': 'Constants', - 'syntax': [ - 'LN10' - ], - 'description': 'Returns the natural logarithm of 10, approximately equal to 2.302', - 'examples': [ - 'LN10', - 'log(10)' - ], - 'seealso': [] - }; - - -/***/ }, -/* 183 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'LOG2E', - 'category': 'Constants', - 'syntax': [ - 'LOG2E' - ], - 'description': 'Returns the base-2 logarithm of E, approximately equal to 1.442', - 'examples': [ - 'LOG2E', - 'log(e, 2)' - ], - 'seealso': [] - }; - - -/***/ }, -/* 184 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'LOG10E', - 'category': 'Constants', - 'syntax': [ - 'LOG10E' - ], - 'description': 'Returns the base-10 logarithm of E, approximately equal to 0.434', - 'examples': [ - 'LOG10E', - 'log(e, 10)' - ], - 'seealso': [] - }; - - -/***/ }, -/* 185 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'NaN', - 'category': 'Constants', - 'syntax': [ - 'NaN' - ], - 'description': 'Not a number', - 'examples': [ - 'NaN', - '0 / 0' - ], - 'seealso': [] - }; - - -/***/ }, -/* 186 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'null', - 'category': 'Constants', - 'syntax': [ - 'null' - ], - 'description': 'Value null', - 'examples': [ - 'null' - ], - 'seealso': ['true', 'false'] - }; - - -/***/ }, -/* 187 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'pi', - 'category': 'Constants', - 'syntax': [ - 'pi' - ], - 'description': 'The number pi is a mathematical constant that is the ratio of a circle\'s circumference to its diameter, and is approximately equal to 3.14159', - 'examples': [ - 'pi', - 'sin(pi/2)' - ], - 'seealso': ['tau'] - }; - - -/***/ }, -/* 188 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'phi', - 'category': 'Constants', - 'syntax': [ - 'phi' - ], - 'description': 'Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...', - 'examples': [ - 'tau' - ], - 'seealso': [] - }; - - -/***/ }, -/* 189 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'SQRT1_2', - 'category': 'Constants', - 'syntax': [ - 'SQRT1_2' - ], - 'description': 'Returns the square root of 1/2, approximately equal to 0.707', - 'examples': [ - 'SQRT1_2', - 'sqrt(1/2)' - ], - 'seealso': [] - }; - - -/***/ }, -/* 190 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'SQRT2', - 'category': 'Constants', - 'syntax': [ - 'SQRT2' - ], - 'description': 'Returns the square root of 2, approximately equal to 1.414', - 'examples': [ - 'SQRT2', - 'sqrt(2)' - ], - 'seealso': [] - }; - - -/***/ }, -/* 191 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'tau', - 'category': 'Constants', - 'syntax': [ - 'tau' - ], - 'description': 'Tau is the ratio constant of a circle\'s circumference to radius, equal to 2 * pi, approximately 6.2832.', - 'examples': [ - 'tau', - '2 * pi' - ], - 'seealso': ['pi'] - }; - - -/***/ }, -/* 192 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'true', - 'category': 'Constants', - 'syntax': [ - 'true' - ], - 'description': 'Boolean value true', - 'examples': [ - 'true' - ], - 'seealso': ['false'] - }; - - -/***/ }, -/* 193 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = { - 'name': 'version', - 'category': 'Constants', - 'syntax': [ - 'version' - ], - 'description': 'A string with the version number of math.js', - 'examples': [ - 'version' - ], - 'seealso': [] - }; - - -/***/ }, -/* 194 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - // NOTE: distribution is NOT added to math.distribution but returned by the factory function - // TODO: rethink math.distribution - - module.exports = function (math) { - var Matrix = __webpack_require__(9); - var array = __webpack_require__(153); - var collection = __webpack_require__(13); - var isCollection = collection.isCollection; - - /** - * Create a distribution object with a set of random functions for given - * random distribution. - * - * Syntax: - * - * math.distribution(name) - * - * Examples: - * - * var normalDist = math.distribution('normal'); // create a normal distribution - * normalDist.random(0, 10); // get a random value between 0 and 10 - * - * See also: - * - * random, randomInt, pickRandom - * - * @param {String} name Name of a distribution. Choose from 'uniform', 'normal'. - * @return {Object} Returns a distribution object containing functions: - * `random([size] [, min] [, max])`, - * `randomInt([min] [, max])`, - * `pickRandom(array)` - */ - function distribution(name) { - if (!distributions.hasOwnProperty(name)) - throw new Error('Unknown distribution ' + name); - - var args = Array.prototype.slice.call(arguments, 1), - distribution = distributions[name].apply(this, args); - - return (function(distribution) { - - // This is the public API for all distributions - var randFunctions = { - - random: function(arg1, arg2, arg3) { - var size, min, max; - if (arguments.length > 3) { - throw new math.error.ArgumentsError('random', arguments.length, 0, 3); - - // `random(max)` or `random(size)` - } else if (arguments.length === 1) { - if (isCollection(arg1)) { - size = arg1; - } - else { - max = arg1; - } - // `random(min, max)` or `random(size, max)` - } else if (arguments.length === 2) { - if (isCollection(arg1)) { - size = arg1; - max = arg2; - } - else { - min = arg1; - max = arg2; - } - // `random(size, min, max)` - } else { - size = arg1; - min = arg2; - max = arg3; - } - - // TODO: validate type of min, max, and size - - if (max === undefined) max = 1; - if (min === undefined) min = 0; - if (size !== undefined) { - var res = _randomDataForMatrix(size.valueOf(), min, max, _random); - return (size instanceof Matrix) ? new Matrix(res) : res; - } - else return _random(min, max); - }, - - randomInt: function(arg1, arg2, arg3) { - var size, min, max; - if (arguments.length > 3 || arguments.length < 1) - throw new math.error.ArgumentsError('randomInt', arguments.length, 1, 3); - - // `random(max)` or `random(size)` - else if (arguments.length === 1) - if (isCollection(arg1)) { - size = arg1; - } - else { - max = arg1; - } - // `randomInt(min, max)` or `randomInt(size, max)` - else if (arguments.length === 2) { - if (isCollection(arg1)) { - size = arg1; - max = arg2; - } - else { - min = arg1; - max = arg2; - } - // `randomInt(size, min, max)` - } else { - size = arg1; - min = arg2; - max = arg3; - } - - // TODO: validate type of min, max, and size - - if (min === undefined) min = 0; - if (size !== undefined) { - var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); - return (size instanceof Matrix) ? new Matrix(res) : res; - } - else return _randomInt(min, max); - }, - - pickRandom: function(possibles) { - if (arguments.length !== 1) { - throw new math.error.ArgumentsError('pickRandom', arguments.length, 1); - } - if (possibles instanceof Matrix) { - possibles = possibles.valueOf(); // get Array - } - else if (!Array.isArray(possibles)) { - throw new math.error.UnsupportedTypeError('pickRandom', math['typeof'](possibles)); - } - - if (array.size(possibles).length > 1) { - throw new Error('Only one dimensional vectors supported'); - } - - // TODO: add support for multi dimensional matrices - return possibles[Math.floor(Math.random() * possibles.length)]; - } - - }; - - var _random = function(min, max) { - return min + distribution() * (max - min); - }; - - var _randomInt = function(min, max) { - return Math.floor(min + distribution() * (max - min)); - }; - - // This is a function for generating a random matrix recursively. - var _randomDataForMatrix = function(size, min, max, randFunc) { - var data = [], length, i; - size = size.slice(0); - - if (size.length > 1) { - for (i = 0, length = size.shift(); i < length; i++) - data.push(_randomDataForMatrix(size, min, max, randFunc)); - } else { - for (i = 0, length = size.shift(); i < length; i++) - data.push(randFunc(min, max)); - } - - return data; - }; - - return randFunctions; - - })(distribution); - }; - - // Each distribution is a function that takes no argument and when called returns - // a number between 0 and 1. - var distributions = { - - uniform: function() { - return Math.random; - }, - - // Implementation of normal distribution using Box-Muller transform - // ref : http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform - // We take : mean = 0.5, standard deviation = 1/6 - // so that 99.7% values are in [0, 1]. - normal: function() { - return function() { - var u1, u2, - picked = -1; - // We reject values outside of the interval [0, 1] - // TODO: check if it is ok to do that? - while (picked < 0 || picked > 1) { - u1 = Math.random(); - u2 = Math.random(); - picked = 1/6 * Math.pow(-2 * Math.log(u1), 0.5) * Math.cos(2 * Math.PI * u2) + 0.5; - } - return picked; - } - } - }; - - return distribution; - }; - - -/***/ }, -/* 195 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - /** - * Determine the type of a variable - * - * type(x) - * - * @param {*} x - * @return {String} type Lower case type, for example 'number', 'string', - * 'array', 'date'. - */ - exports.type = function(x) { - var type = typeof x; - - if (type === 'object') { - if (x === null) return 'null'; - if (x instanceof Boolean) return 'boolean'; - if (x instanceof Number) return 'number'; - if (x instanceof String) return 'string'; - if (Array.isArray(x)) return 'array'; - if (x instanceof Date) return 'date'; - if (x instanceof Function)return 'function'; - if (x instanceof RegExp) return 'regexp'; - } - - return type; - }; - - /***/ }, /* 196 */ -/***/ function(module, exports, __webpack_require__) { - - var map = { - "./clone": 143, - "./clone.js": 143, - "./filter": 144, - "./filter.js": 144, - "./forEach": 151, - "./forEach.js": 151, - "./format": 145, - "./format.js": 145, - "./import": 146, - "./import.js": 146, - "./map": 147, - "./map.js": 147, - "./print": 148, - "./print.js": 148, - "./sort": 149, - "./sort.js": 149, - "./typeof": 150, - "./typeof.js": 150 - }; - function webpackContext(req) { - return __webpack_require__(webpackContextResolve(req)); - }; - function webpackContextResolve(req) { - return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }()); - }; - webpackContext.keys = function webpackContextKeys() { - return Object.keys(map); - }; - webpackContext.resolve = webpackContextResolve; - module.exports = webpackContext; - webpackContext.id = 196; - - -/***/ }, -/* 197 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26860,7 +27317,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 198 */ +/* 197 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26885,7 +27342,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 199 */ +/* 198 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26906,7 +27363,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 200 */ +/* 199 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26930,7 +27387,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 201 */ +/* 200 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26956,7 +27413,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 202 */ +/* 201 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -26981,7 +27438,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 203 */ +/* 202 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27006,7 +27463,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 204 */ +/* 203 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27029,7 +27486,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 205 */ +/* 204 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27054,7 +27511,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 206 */ +/* 205 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27076,7 +27533,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 207 */ +/* 206 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27097,7 +27554,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 208 */ +/* 207 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27118,7 +27575,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 209 */ +/* 208 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27138,7 +27595,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 210 */ +/* 209 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27166,7 +27623,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 211 */ +/* 210 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27191,7 +27648,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 212 */ +/* 211 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27217,7 +27674,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 213 */ +/* 212 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27242,7 +27699,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 214 */ +/* 213 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27268,7 +27725,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 215 */ +/* 214 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27294,7 +27751,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 216 */ +/* 215 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27316,7 +27773,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 217 */ +/* 216 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27341,7 +27798,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 218 */ +/* 217 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27364,7 +27821,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 219 */ +/* 218 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27388,7 +27845,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 220 */ +/* 219 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27415,7 +27872,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 221 */ +/* 220 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27440,7 +27897,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 222 */ +/* 221 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27464,7 +27921,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 223 */ +/* 222 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27487,7 +27944,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 224 */ +/* 223 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27507,7 +27964,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 225 */ +/* 224 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27530,7 +27987,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 226 */ +/* 225 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27553,7 +28010,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 227 */ +/* 226 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27575,7 +28032,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 228 */ +/* 227 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27596,7 +28053,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 229 */ +/* 228 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27618,7 +28075,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 230 */ +/* 229 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27641,7 +28098,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 231 */ +/* 230 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27664,7 +28121,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 232 */ +/* 231 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27690,7 +28147,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 233 */ +/* 232 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27716,7 +28173,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 234 */ +/* 233 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27742,7 +28199,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 235 */ +/* 234 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27768,7 +28225,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 236 */ +/* 235 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27793,7 +28250,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 237 */ +/* 236 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27820,7 +28277,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 238 */ +/* 237 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27845,7 +28302,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 239 */ +/* 238 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27876,7 +28333,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 240 */ +/* 239 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27904,7 +28361,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 241 */ +/* 240 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27933,7 +28390,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 242 */ +/* 241 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27957,7 +28414,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 243 */ +/* 242 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -27983,7 +28440,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 244 */ +/* 243 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28003,7 +28460,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 245 */ +/* 244 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28023,7 +28480,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 246 */ +/* 245 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28046,7 +28503,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 247 */ +/* 246 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28071,7 +28528,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 248 */ +/* 247 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28094,7 +28551,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 249 */ +/* 248 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28118,7 +28575,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 250 */ +/* 249 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28137,13 +28594,13 @@ return /******/ (function(modules) { // webpackBootstrap 'concat(A, B, 2)' ], 'seealso': [ - 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 251 */ +/* 250 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28166,7 +28623,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 252 */ +/* 251 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28181,13 +28638,13 @@ return /******/ (function(modules) { // webpackBootstrap 'det([-2, 2, 3; -1, 1, 3; 2, 0, -1])' ], 'seealso': [ - 'concat', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 253 */ +/* 252 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28205,13 +28662,13 @@ return /******/ (function(modules) { // webpackBootstrap 'diag(a)' ], 'seealso': [ - 'concat', 'det', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 254 */ +/* 253 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28235,7 +28692,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 255 */ +/* 254 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28255,13 +28712,13 @@ return /******/ (function(modules) { // webpackBootstrap 'eye(size(a))' ], 'seealso': [ - 'concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 256 */ +/* 255 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28284,7 +28741,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 257 */ +/* 256 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28300,13 +28757,13 @@ return /******/ (function(modules) { // webpackBootstrap '1 / 4' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 258 */ +/* 257 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28330,13 +28787,13 @@ return /******/ (function(modules) { // webpackBootstrap 'ones(size(a))' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 259 */ +/* 258 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28361,13 +28818,13 @@ return /******/ (function(modules) { // webpackBootstrap 'a[1:2, 1:2]' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 260 */ +/* 259 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28392,7 +28849,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 261 */ +/* 260 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28410,13 +28867,13 @@ return /******/ (function(modules) { // webpackBootstrap 'size(1:6)' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 262 */ +/* 261 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28433,13 +28890,13 @@ return /******/ (function(modules) { // webpackBootstrap 'size(squeeze(b))' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'subset', 'trace', 'transpose', 'zeros' ] }; /***/ }, -/* 263 */ +/* 262 */ /***/ function(module, exports, __webpack_require__) { module.exports = { @@ -28464,7 +28921,28 @@ return /******/ (function(modules) { // webpackBootstrap 'f[:, 1]' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros' + ] + }; + + +/***/ }, +/* 263 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = { + 'name': 'trace', + 'category': 'Matrix', + 'syntax': [ + 'trace(A)' + ], + 'description': 'Calculate the trace of a matrix', + 'examples': [ + 'A = [1, 2, 3; -1, 2, 3; 2, 0, 3]', + 'trace(A)' + ], + 'seealso': [ + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' ] }; @@ -28487,7 +28965,7 @@ return /******/ (function(modules) { // webpackBootstrap 'transpose(a)' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros' ] }; @@ -28516,7 +28994,7 @@ return /******/ (function(modules) { // webpackBootstrap 'zeros(size(a))' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose' ] }; @@ -29699,31 +30177,212 @@ return /******/ (function(modules) { // webpackBootstrap /* 314 */ /***/ function(module, exports, __webpack_require__) { - // function utils + 'use strict'; - /* - * Memoize a given function by caching the computed result. - * Very limited, supports only functions with one argument, and only primitive - * values as argument. - * - * @param {function} fn The function to be memoized. Must be a pure function. - * @return {function} Returns the memoized function - */ - exports.memoize = function( fn ) { - if (fn.length === 1) { - function memoize( arg ){ - if (!(arg in memoize.cache)) { - return memoize.cache[arg] = fn(arg); + // NOTE: distribution is NOT added to math.distribution but returned by the factory function + // TODO: rethink math.distribution + + module.exports = function (math) { + var Matrix = __webpack_require__(9); + var array = __webpack_require__(154); + var collection = __webpack_require__(13); + var isCollection = collection.isCollection; + + /** + * Create a distribution object with a set of random functions for given + * random distribution. + * + * Syntax: + * + * math.distribution(name) + * + * Examples: + * + * var normalDist = math.distribution('normal'); // create a normal distribution + * normalDist.random(0, 10); // get a random value between 0 and 10 + * + * See also: + * + * random, randomInt, pickRandom + * + * @param {String} name Name of a distribution. Choose from 'uniform', 'normal'. + * @return {Object} Returns a distribution object containing functions: + * `random([size] [, min] [, max])`, + * `randomInt([min] [, max])`, + * `pickRandom(array)` + */ + function distribution(name) { + if (!distributions.hasOwnProperty(name)) + throw new Error('Unknown distribution ' + name); + + var args = Array.prototype.slice.call(arguments, 1), + distribution = distributions[name].apply(this, args); + + return (function(distribution) { + + // This is the public API for all distributions + var randFunctions = { + + random: function(arg1, arg2, arg3) { + var size, min, max; + if (arguments.length > 3) { + throw new math.error.ArgumentsError('random', arguments.length, 0, 3); + + // `random(max)` or `random(size)` + } else if (arguments.length === 1) { + if (isCollection(arg1)) { + size = arg1; + } + else { + max = arg1; + } + // `random(min, max)` or `random(size, max)` + } else if (arguments.length === 2) { + if (isCollection(arg1)) { + size = arg1; + max = arg2; + } + else { + min = arg1; + max = arg2; + } + // `random(size, min, max)` + } else { + size = arg1; + min = arg2; + max = arg3; + } + + // TODO: validate type of min, max, and size + + if (max === undefined) max = 1; + if (min === undefined) min = 0; + if (size !== undefined) { + var res = _randomDataForMatrix(size.valueOf(), min, max, _random); + return (size instanceof Matrix) ? new Matrix(res) : res; + } + else return _random(min, max); + }, + + randomInt: function(arg1, arg2, arg3) { + var size, min, max; + if (arguments.length > 3 || arguments.length < 1) + throw new math.error.ArgumentsError('randomInt', arguments.length, 1, 3); + + // `random(max)` or `random(size)` + else if (arguments.length === 1) + if (isCollection(arg1)) { + size = arg1; + } + else { + max = arg1; + } + // `randomInt(min, max)` or `randomInt(size, max)` + else if (arguments.length === 2) { + if (isCollection(arg1)) { + size = arg1; + max = arg2; + } + else { + min = arg1; + max = arg2; + } + // `randomInt(size, min, max)` + } else { + size = arg1; + min = arg2; + max = arg3; + } + + // TODO: validate type of min, max, and size + + if (min === undefined) min = 0; + if (size !== undefined) { + var res = _randomDataForMatrix(size.valueOf(), min, max, _randomInt); + return (size instanceof Matrix) ? new Matrix(res) : res; + } + else return _randomInt(min, max); + }, + + pickRandom: function(possibles) { + if (arguments.length !== 1) { + throw new math.error.ArgumentsError('pickRandom', arguments.length, 1); + } + if (possibles instanceof Matrix) { + possibles = possibles.valueOf(); // get Array + } + else if (!Array.isArray(possibles)) { + throw new math.error.UnsupportedTypeError('pickRandom', math['typeof'](possibles)); + } + + if (array.size(possibles).length > 1) { + throw new Error('Only one dimensional vectors supported'); + } + + // TODO: add support for multi dimensional matrices + return possibles[Math.floor(Math.random() * possibles.length)]; + } + + }; + + var _random = function(min, max) { + return min + distribution() * (max - min); + }; + + var _randomInt = function(min, max) { + return Math.floor(min + distribution() * (max - min)); + }; + + // This is a function for generating a random matrix recursively. + var _randomDataForMatrix = function(size, min, max, randFunc) { + var data = [], length, i; + size = size.slice(0); + + if (size.length > 1) { + for (i = 0, length = size.shift(); i < length; i++) + data.push(_randomDataForMatrix(size, min, max, randFunc)); + } else { + for (i = 0, length = size.shift(); i < length; i++) + data.push(randFunc(min, max)); + } + + return data; + }; + + return randFunctions; + + })(distribution); + }; + + // Each distribution is a function that takes no argument and when called returns + // a number between 0 and 1. + var distributions = { + + uniform: function() { + return Math.random; + }, + + // Implementation of normal distribution using Box-Muller transform + // ref : http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform + // We take : mean = 0.5, standard deviation = 1/6 + // so that 99.7% values are in [0, 1]. + normal: function() { + return function() { + var u1, u2, + picked = -1; + // We reject values outside of the interval [0, 1] + // TODO: check if it is ok to do that? + while (picked < 0 || picked > 1) { + u1 = Math.random(); + u2 = Math.random(); + picked = 1/6 * Math.pow(-2 * Math.log(u1), 0.5) * Math.cos(2 * Math.PI * u2) + 0.5; + } + return picked; } - return memoize.cache[arg]; } - memoize.cache = {}; + }; - return memoize; - } - else { - throw new Error('Function must have one argument'); - } + return distribution; }; @@ -29733,6 +30392,68 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; + /** + * Determine the type of a variable + * + * type(x) + * + * @param {*} x + * @return {String} type Lower case type, for example 'number', 'string', + * 'array', 'date'. + */ + exports.type = function(x) { + var type = typeof x; + + if (type === 'object') { + if (x === null) return 'null'; + if (x instanceof Boolean) return 'boolean'; + if (x instanceof Number) return 'number'; + if (x instanceof String) return 'string'; + if (Array.isArray(x)) return 'array'; + if (x instanceof Date) return 'date'; + if (x instanceof Function)return 'function'; + if (x instanceof RegExp) return 'regexp'; + } + + return type; + }; + + +/***/ }, +/* 316 */ +/***/ function(module, exports, __webpack_require__) { + + // function utils + + /* + * Memoize a given function by caching the computed result. + * The cache of a memoized function can be cleared by deleting the `cache` + * property of the function. + * + * @param {function} fn The function to be memoized. Must be a pure function. + * @return {function} Returns the memoized function + */ + exports.memoize = function(fn) { + return function memoize() { + if (typeof memoize.cache !== 'object') { + memoize.cache = {}; + } + + var hash = JSON.stringify(arguments); + if (!(hash in memoize.cache)) { + return memoize.cache[hash] = fn.apply(fn, arguments); + } + return memoize.cache[hash]; + }; + }; + + +/***/ }, +/* 317 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // Reserved keywords not allowed to use in the parser module.exports = { end: true @@ -29740,16 +30461,16 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 316 */ +/* 318 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; // FIXME: remove dependencies on Nodes - var ArrayNode = __webpack_require__(161); - var OperatorNode = __webpack_require__(168); - var SymbolNode = __webpack_require__(171); - var ConstantNode = __webpack_require__(165); + var ArrayNode = __webpack_require__(162); + var OperatorNode = __webpack_require__(171); + var SymbolNode = __webpack_require__(173); + var ConstantNode = __webpack_require__(166); // GREEK LETTERS var greek = { diff --git a/dist/math.map b/dist/math.map index 10b143462..85ecea678 100644 --- a/dist/math.map +++ b/dist/math.map @@ -1 +1 @@ -{"version":3,"file":"math.map","sources":["./dist/math.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","create","config","Object","Error","math","_config","matrix","number","precision","epsilon","options","object","deepExtend","type","BigNumber","defaultType","decimals","clone","constructor","prototype","convert","digits","error","Complex","Range","Index","Matrix","Unit","Help","ResultSet","collection","expression","node","parse","Parser","docs","ifElse","chaining","Chain","Selector","window","mathjs","bignumber","big","pi","Math","PI","tau","e","E","phi","i","Infinity","NaN","UNINITIALIZED","LN2","ln","LN10","LOG2E","div","LOG10E","SQRT1_2","sqrt","SQRT2","version","x","undefined","Array","isArray","map","value","Number","valueOf","String","Boolean","Date","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","deepEqual","len","length","isNumber","isInteger","round","sign","format","isNaN","notation","toFixed","toExponential","lower","upper","exponential","str","abs","valueStr","toPrecision","min","parseFloat","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","y","isFinite","diff","max","ArgumentsError","DimensionError","IndexError","UnsupportedTypeError","re","im","SyntaxError","arg","construct","fromPolar","r","skipWhitespace","next","isDigitDot","isDigit","index","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","util","isUnit","isString","string","isComplex","first","separator","second","substring","hasBase","BASE_UNITS","ANGLE","toNumber","cos","sin","toPolar","atan2","equals","other","strRe","strIm","toString","start","end","step","array","args","split","nums","invalid","some","num","isRange","size","ceil","forEach","callback","obj","toArray","_ranges","_isScalar","ii","push","_createRange","primitive","isIndex","ranges","apply","range","values","dim","isScalar","row","strings","join","data","_data","preprocess","types","_size","_get","get","validateIndex","_getSubmatrix","dims","last","child","_set","submatrix","defaultValue","sSize","iSize","set","outer","unsqueeze","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","resize","elem","isMatrix","subset","replacement","index_i","me","recurse","concat","name","res","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","endsWith","prefixLen","prefixName","prefixes","err","offset","_unnormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","scientific","PREFIXES","NONE","SHORT","da","h","k","M","G","T","P","Z","Y","d","u","n","f","z","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","pow","Ki","Mi","Gi","Ti","Pi","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","LENGTH","MASS","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","rd","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","L","l","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","g","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","gr","dr","oz","lbm","cwt","s","sec","minute","hour","day","rad","deg","grad","cycle","A","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","N","newton","lbf","poundforce","bits","B","bytes","PLURALS","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","seconds","minutes","hours","days","radians","degrees","gradients","cycles","amperes","moles","plural","lt","liter","liters","lb","lbs","doc","isHelp","desc","category","description","syntax","examples","parser","expr","eval","seealso","toJSON","entries","_reduce","mat","ret","val","tran","_switch","j","I","J","tmp","argsToArray","isCollection","deepMap","deepMap2","array1","array2","reduce","deepForEach","extra_nodes","nodes","parseStart","nesting_level","conditional_level","nextPreview","nextNextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","c3","DELIMITERS","isAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","visible","blocks","ConstantNode","parseFunctionAssignment","BlockNode","parseAssignment","valid","parseConditional","SymbolNode","AssignmentNode","IndexNode","UpdateNode","FunctionNode","FunctionAssignmentNode","parseLogicalOr","prev","condition","trueExpr","falseExpr","ConditionalNode","parseLogicalXor","OperatorNode","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","operators","fn","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","RangeNode","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","~","not","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","rows","cols","parseRow","ArrayNode","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","and","xor","or","scope","_parse","compile","remove","clear","Node","add","cube","divide","dotDivide","dotMultiply","dotPow","exp","fix","floor","gcd","lcm","log10","multiply","norm","nthRoot","square","subtract","unaryMinus","unaryPlus","xgcd","bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift","conj","complex","help","cross","det","diag","dot","eye","flatten","inv","ones","squeeze","transpose","zeros","combinations","factorial","gamma","permutations","pickRandom","random","randomInt","compare","larger","largerEq","smaller","smallerEq","unequal","mean","median","prod","std","sum","acos","asin","atan","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","filter","sort","errorTransform","transform","lastIndex","minus","isBoolean","_filter","test","_scope","symbol","sub","eq","rawArgs","_forEachArray","arrayOrig","_mapArray","arrayIn","createProxy","slice","done","search","plus","times","_divideComplex","den","_divide","edivide","emultiply","epow","isNegative","_bigGcd","isInt","zero","isZero","neg","_bigLcm","t","_mod","_multiplyMatrixMatrix","result","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyVectorVector","_multiplyComplex","sizeX","sizeY","RangeError","POSITIVE_INFINITY","v","NEGATIVE_INFINITY","equal","rs","_nthRoot","_root","iMax","delta","_nthRootBig","one","negated","xPrev","powComplex","temp1","temp2","px","roundNumber","toDecimalPlaces","cmp","unary","_xgcd","q","lastx","lasty","_bigXgcd","bigBitAnd","bigBitNot","bigBitOr","bigBitXor","bigLeftShift","bigRightShift","rightShift","bool","lcase","toLowerCase","select","console","_concat","concatDim","prevDim","asMatrix","matrices","shift","_cross","xSize","ySize","_det","compute_mu","mu","fa","vector","asArray","kSuper","kSub","_dot","asBigNumber","minimum","flat","_inv","temp","Ac","Bc","Ar","Br","_range","_rangeInc","_bigRange","gt","_bigRangeInc","lte","gte","includeEnd","pop","_resizeString","defaultChar","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","transposedRow","transposed","isPositiveInteger","fac","twoN","threeN","fourN","fiveN","real","twoPiSqrt","distribution","arity","dividedBy","_deepEqual","largereq","smallereq","_getSmaller","_min","_getLarger","_max","_nmean","_mean","_median","left","right","middle","_prod","variance","_sum","_var","normalization","DEFAULT_NORMALIZATION","temp3","temp4","ep","en","bigSin","cim","sim","entry","_import","override","wrap","isSupportedType","math_import","opts","_module","print","template","original","keys","_compare","bitwise","func","xBits","yBits","xSign","ySign","decToBinary","coefficientToString","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","two","prevPrec","xe","strL","arr","arrL","reverse","memoize","isBigNumber","Big","pi4th","arctan","isNegtive","yPrev","x2","negOne","isNeg","toDP","dp","y2","toExpNeg","toExpPos","toSignificantDigits","_validate","dimNext","_resize","oldLen","newLen","minLen","_squeeze","_unsqueeze","validate","_defaultValue","unshift","__WEBPACK_AMD_DEFINE_RESULT__","global","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","Decimal","outOfRange","parseInt","ifExceptionsThrow","checkArg","MAX_DIGITS","pr","denom","guard","sd","rep","external","rnd","getCoeffLength","more","intPow","c0","x1","xc","xci","out","mathfloor","BASE","convertBase","decimal","crypto","NUMERALS","EXP_LIMIT","INT_POW_LIMIT","yc","base10","inf","sd10","xLTy","half","indexOf","pos","groupSeparator","g1","g2","intPart","fractionPart","intDigits","maxD","d0","d2","frac","n0","n1","d1","yN","toBaseOut","baseIn","baseOut","multiplyInteger","carry","aL","bL","logbase","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","maxOrMin","ltgt","rand","Uint32Array","copy","decimalFactory","parseDecimal","decimalSeparator","groupSize","secondaryGroupSize","fractionGroupSeparator","fractionGroupSize","isValid","trim","isNum","orig","count","stack","actual","expected","relation","splice","every","isNode","_compile","defs","_ifNode","toTex","childNode","keywords","latex","brace","addBraces","toSymbol","block","param","js","testCondition","valueType","SUPPORTED_TYPES","boolean","null","match","variable","compileSubset","someUseEnd","rangesUseEnd","useEnd","objectName","op","lhs","rhs","mop","toOperator","lp","rp","lhb","rhb","lop","rop","toUnit","isRaw","paramsName","toArgs","undef","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","traverse","_traverse","path","parent","find","formatArray","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","webpackContext","req","webpackContextResolve","./clone","./clone.js","./filter","./filter.js","./forEach","./forEach.js","./format","./format.js","./import","./import.js","./map","./map.js","./print","./print.js","./sort","./sort.js","./typeof","./typeof.js","resolve","cache","mapSymbols","symbols","latexIs","latexIsFn","latexToFn","greek","Alpha","alpha","Beta","beta","Gamma","Delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","Nu","nu","Xi","Omicron","omicron","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","dots","ldots","cdots","vdots","ddots","idots","logic","true","false","Inf","infinity","oo","lim","functions","arccos","ker","limsup","arcsin","lg","Pr","sup","hom","var","curlyFunctions","int","Int","integrate","eigenvalues","liminf","units","isSymbol","isFunction","toFunction","isCurlyFunction","toCurlyFunction","isOperator","_toUnit","notSpaced","braces","that","texParams","showFunc","suffix"],"mappings":"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EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAI/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,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4CACfE,UACE,iBACA,eACA,SACA,uBACA,kBAEFI,SACE,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,MACRiQ,SAAY,YACZE,QACE,QACA,UACA,aAEFD,YACI,gEACJE,UACE,QACA,SACA,WACA,4BACA,WACA,YAEFI,SAAY,YAMT,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,WACRiQ,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,gBACA,UACA,YACA,cACA,cAEFI,SACE,YAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,OACRiQ,SAAY,aACZE,QACE,UACA,cAEFD,YAAe,oDACfE,UACE,YACA,aACA,gBACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOC,SAASrf,GAEdA,EAAOD,SACLkP,KAAQ,UACRiQ,SAAY,aACZE,QACE,aACA,oBAEFD,YAAe,qJAGfE,UACE,QACA,iBACA,gBACA,WAEFI,SACE,OACA,SAMC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,MACRiQ,SAAY,YACZE,QACE,QACA,aAEFD,YACI,uCACJE,UACE,UACA,QACA,oBAEFI,SAAa,cAMV,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,QACRiQ,SAAY,aACZE,QACE,WACA,eAEFD,YACI,4LACJE,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFI,SAAY,OAAQ,QAAS,SAM1B,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,OACRiQ,SAAY,aACZE,QACE,WAEFD,YACI,iGACJE,UACE,YACA,aACA,WAEFI,SACE,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,OACRiQ,SAAY,aACZE,QACE,WAEFD,YACI,+EACJE,UACE,WACA,QACA,YAEFI,SACE,SACA,cAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,SACRiQ,SAAY,aACZE,QACE,aAEFD,YACI,2DACJE,UACE,YACA,UACA,MACA,SAEFI,SACE,WACA,MACA,OACA,UAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,WACRiQ,SAAY,YACZE,QACE,QACA,kBA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AOD,SACLkP,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,OACRiQ,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,SACRiQ,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,OACRiQ,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASzf,GAEdA,EAAOD,SACLkP,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,gIACfE,UACE,eACA,oBACA,mCACA,8BACA,2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"} \ No newline at end of file +{"version":3,"file":"math.map","sources":["./dist/math.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","create","config","Object","Error","math","_config","matrix","number","precision","epsilon","options","object","deepExtend","type","BigNumber","defaultType","decimals","clone","constructor","prototype","convert","digits","error","Complex","Range","Index","Matrix","Unit","Help","ResultSet","collection","expression","node","parse","Parser","docs","ifElse","transform","concat","filter","forEach","index","map","max","mean","min","range","subset","chaining","Chain","Selector","window","mathjs","x","undefined","Array","isArray","value","Number","valueOf","String","Boolean","Date","RegExp","TypeError","key","hasOwnProperty","extend","a","b","prop","deepEqual","i","len","length","canDefineProperty","defineProperty","e","lazy","fn","_value","_uninitialized","get","set","isNumber","isInteger","Math","round","sign","format","Infinity","isNaN","notation","toFixed","toExponential","lower","upper","exponential","str","abs","valueStr","toPrecision","parseFloat","replace","arguments","DBL_EPSILON","EPSILON","nearlyEqual","y","isFinite","diff","bignumber","UNINITIALIZED","NaN","pi","tau","phi","ln","div","sqrt","PI","E","LN2","LN10","LOG2E","LOG10E","SQRT1_2","SQRT2","version","ArgumentsError","DimensionError","IndexError","UnsupportedTypeError","re","im","SyntaxError","arg","construct","fromPolar","r","skipWhitespace","next","isDigitDot","isDigit","text","charAt","revert","oldIndex","parseNumber","parseComplex","cnext","util","isUnit","isString","string","isComplex","first","separator","second","substring","hasBase","BASE_UNITS","ANGLE","toNumber","cos","sin","toPolar","atan2","equals","other","strRe","strIm","toString","start","end","step","array","args","split","nums","invalid","some","num","isRange","size","ceil","callback","obj","toArray","_ranges","_isScalar","ii","push","_createRange","primitive","isIndex","ranges","apply","values","dim","isScalar","row","strings","join","data","_data","preprocess","types","_size","_get","validateIndex","_getSubmatrix","dims","last","child","_set","submatrix","defaultValue","sSize","iSize","outer","unsqueeze","_fit","_setSubmatrix","dataIndex","subIndex","newSize","changed","resize","elem","isMatrix","replacement","index_i","me","recurse","name","res","_findUnit","unit","prefix","UNIT_NONE","PREFIX_NONE","_normalize","fixPrefix","parseUnit","unitName","UNITS","endsWith","prefixLen","prefixName","prefixes","err","offset","_unnormalize","prefixValue","isValuelessUnit","base","equalBase","to","valuelessUnit","bestPrefix","_bestPrefix","absValue","bestDiff","log","scientific","PREFIXES","NONE","SHORT","da","h","k","M","G","T","P","Z","Y","d","u","n","f","z","LONG","deca","hecto","kilo","mega","giga","tera","peta","exa","zetta","yotta","deci","centi","milli","micro","nano","pico","femto","atto","zepto","yocto","SQUARED","CUBIC","BINARY_SHORT","pow","Ki","Mi","Gi","Ti","Pi","Ei","Zi","Yi","BINARY_LONG","kibi","mebi","gibi","tebi","pebi","exi","zebi","yobi","LENGTH","MASS","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","FORCE","SURFACE","VOLUME","BIT","BASE_UNIT_NONE","meter","inch","foot","yard","mile","link","rod","chain","angstrom","in","ft","yd","mi","li","rd","ch","mil","m2","sqin","sqft","sqyd","sqmi","sqrd","sqch","sqmil","m3","L","l","litre","cuin","cuft","cuyd","teaspoon","tablespoon","drop","gtt","minim","fluiddram","fluidounce","gill","cc","cup","pint","quart","gallon","beerbarrel","oilbarrel","hogshead","fldr","floz","gi","cp","pt","qt","gal","bbl","obl","g","gram","ton","tonne","grain","dram","ounce","poundmass","hundredweight","stick","gr","dr","oz","lbm","cwt","s","sec","minute","hour","day","rad","deg","grad","cycle","A","ampere","K","degC","degF","degR","kelvin","celsius","fahrenheit","rankine","mol","mole","cd","candela","N","newton","lbf","poundforce","bits","B","bytes","PLURALS","meters","inches","feet","yards","miles","links","rods","chains","angstroms","litres","teaspoons","tablespoons","minims","fluiddrams","fluidounces","gills","cups","pints","quarts","gallons","beerbarrels","oilbarrels","hogsheads","gtts","grams","tons","tonnes","grains","drams","ounces","poundmasses","hundredweights","sticks","seconds","minutes","hours","days","radians","degrees","gradients","cycles","amperes","moles","plural","lt","liter","liters","lb","lbs","doc","isHelp","desc","category","description","syntax","examples","parser","expr","eval","seealso","toJSON","entries","_reduce","mat","ret","val","tran","_switch","j","I","J","tmp","argsToArray","isCollection","deepMap","deepMap2","array1","array2","reduce","deepForEach","ArrayNode","AssignmentNode","BlockNode","ConditionalNode","ConstantNode","IndexNode","FunctionAssignmentNode","FunctionNode","Node","OperatorNode","RangeNode","SymbolNode","UpdateNode","extra_nodes","nodes","parseStart","nesting_level","conditional_level","nextPreview","nextNextPreview","getToken","token_type","TOKENTYPE","NULL","token","DELIMITER","c2","c3","DELIMITERS","isAlpha","NAMED_DELIMITERS","SYMBOL","UNKNOWN","createSyntaxError","NUMBER","getTokenSkipNewline","openParams","closeParams","parseBlock","createError","visible","blocks","parseFunctionAssignment","parseAssignment","valid","parseConditional","parseLogicalOr","prev","condition","trueExpr","falseExpr","parseLogicalXor","parseLogicalAnd","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseRelational","operators","params","parseShift","==","!=","<",">","<=",">=","parseConversion","<<",">>",">>>","parseRange","parseAddSubtract","parseMultiplyDivide","+","-","parseUnary","*",".*","/","./","%","mod","~","not","parsePow","parseLeftHandOperators","parseCustomNodes","!","'","handler","parseSymbol","parseFunctions","parseIndex","parseString","tPrev","parseMatrix","rows","cols","parseRow","parseParentheses","parseEnd","col","message",",","(",")","[","]","\"",";","^",".^","&","|","^|","=",":","?","and","xor","or","scope","_parse","compile","remove","clear","add","cube","divide","dotDivide","dotMultiply","dotPow","exp","fix","floor","gcd","lcm","log10","multiply","norm","nthRoot","square","subtract","unaryMinus","unaryPlus","xgcd","bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift","conj","complex","help","cross","det","diag","dot","eye","flatten","inv","ones","squeeze","trace","transpose","zeros","combinations","factorial","gamma","permutations","pickRandom","random","randomInt","compare","larger","largerEq","smaller","smallerEq","unequal","median","prod","std","sum","acos","asin","atan","cosh","cot","coth","csc","csch","sech","sinh","tan","tanh","sort","errorTransform","lastIndex","minus","isBoolean","_filter","test","_scope","symbol","sub","eq","rawArgs","_forEachArray","arrayOrig","_mapArray","arrayIn","createProxy","slice","done","search","plus","times","_divideComplex","den","_divide","edivide","emultiply","epow","isNegative","_bigGcd","isInt","zero","isZero","neg","_bigLcm","t","_mod","_multiplyMatrixMatrix","result","_multiplyVectorMatrix","_multiplyMatrixVector","_multiplyVectorVector","_multiplyComplex","sizeX","sizeY","RangeError","POSITIVE_INFINITY","v","NEGATIVE_INFINITY","equal","rs","_nthRoot","_root","iMax","delta","_nthRootBig","one","negated","xPrev","powComplex","temp1","temp2","px","roundNumber","toDecimalPlaces","cmp","unary","_xgcd","q","lastx","lasty","_bigXgcd","bigBitAnd","bigBitNot","bigBitOr","bigBitXor","bigLeftShift","bigRightShift","rightShift","bool","lcase","toLowerCase","select","console","_concat","concatDim","prevDim","asMatrix","matrices","shift","_cross","xSize","ySize","_det","compute_mu","mu","fa","vector","asArray","kSuper","kSub","_dot","asBigNumber","minimum","flat","_inv","temp","Ac","Bc","Ar","Br","_range","_rangeInc","_bigRange","gt","_bigRangeInc","lte","gte","includeEnd","pop","_resizeString","defaultChar","_getSubset","_getSubstring","strLen","substr","_setSubset","_setSubstring","chars","_trace","transposedRow","transposed","preciseFacs","isNonNegativeInteger","smallBigFacs","toSD","Big","bigBigFacs","twoN","threeN","fourN","fiveN","real","twoPiSqrt","distribution","arity","isPositiveInteger","dividedBy","_deepEqual","largereq","smallereq","_getSmaller","_min","_getLarger","_max","_nmean","_mean","_median","left","right","middle","_prod","variance","_sum","_var","normalization","DEFAULT_NORMALIZATION","bigArcCos","arccos","temp3","temp4","bigArcSin","arcsin","bigArcTan","arctan","bigCos","cos_sin","bigCosh","cosh_sinh","ep","en","bigSin","bigSinh","cim","sim","bigTan","bigTanh","entry","_import","override","wrap","isSupportedType","math_import","opts","_module","print","template","original","keys","_compare","bitwise","func","xBits","yBits","xSign","ySign","decCoefficientToBinaryString","minBits","maxBits","minSign","shortLen","longLen","expFuncVal","outVal","twoPower","ONE","two","prevPrec","xe","strL","arr","arrL","reverse","arcsin_newton","oldPrecision","tolerance","maxp","localPrecision","maxIter","curr","tmp0","tmp1","sinToCos","tmp2","toDP","arcsin_taylor","yPrev","x2","polyNum","constNum","constDen","bigK","arctan_taylor","cos_sin_taylor","mode","reduceToPeriod","dp","sinVal","BigNumberCopy","memoize","isBigNumber","pi4th","isNegtive","negOne","absX","halfPi","wasReduced","isNeg","precPlusGuardDigits","five","sixteen","twenty","ret2","ret3","ret5","div_factor","loops","eight","ret4","posExp","negExp","toExpNeg","toExpPos","toSignificantDigits","_validate","dimNext","_resize","oldLen","newLen","minLen","_squeeze","_unsqueeze","validate","_defaultValue","unshift","__WEBPACK_AMD_DEFINE_RESULT__","global","coefficientToString","LOGBASE","charCodeAt","checkRoundingDigits","rm","repeating","ci","mathpow","checkRM","method","Decimal","outOfRange","parseInt","ifExceptionsThrow","checkArg","MAX_DIGITS","pr","denom","guard","sd","rep","external","rnd","getCoeffLength","more","intPow","c0","x1","xc","xci","out","mathfloor","BASE","convertBase","decimal","crypto","NUMERALS","EXP_LIMIT","INT_POW_LIMIT","yc","base10","inf","sd10","xLTy","half","indexOf","pos","groupSeparator","g1","g2","intPart","fractionPart","intDigits","maxD","d0","d2","frac","n0","n1","d1","yN","toBaseOut","baseIn","baseOut","multiplyInteger","carry","aL","bL","logbase","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","maxOrMin","ltgt","rand","Uint32Array","copy","decimalFactory","parseDecimal","decimalSeparator","groupSize","secondaryGroupSize","fractionGroupSeparator","fractionGroupSize","isValid","trim","isNum","orig","count","stack","actual","expected","relation","splice","every","isNode","_compile","defs","_ifNode","toTex","childNode","keywords","latex","brace","addBraces","toSymbol","block","param","js","testCondition","valueType","SUPPORTED_TYPES","boolean","null","match","compileSubset","someUseEnd","rangesUseEnd","useEnd","objectName","variable","isRaw","paramsName","toArgs","_validateScope","_transform","transformed","code","defsCode","factoryCode","Function","traverse","_traverse","path","parent","find","op","lhs","rhs","mop","toOperator","lp","rp","lhb","rhb","lop","rop","toUnit","undef","webpackContext","req","webpackContextResolve","./clone","./clone.js","./filter","./filter.js","./forEach","./forEach.js","./format","./format.js","./import","./import.js","./map","./map.js","./print","./print.js","./sort","./sort.js","./typeof","./typeof.js","resolve","formatArray","distributions","randFunctions","arg1","arg2","arg3","_randomDataForMatrix","_random","_randomInt","possibles","randFunc","uniform","normal","u1","u2","picked","cache","hash","JSON","stringify","mapSymbols","symbols","latexIs","latexIsFn","latexToFn","greek","Alpha","alpha","Beta","beta","Gamma","Delta","Epsilon","varepsilon","Zeta","zeta","Eta","eta","Theta","theta","vartheta","Iota","iota","Kappa","kappa","varkappa","Lambda","lambda","Mu","Nu","nu","Xi","Omicron","omicron","varpi","Rho","rho","varrho","Sigma","sigma","varsigma","Tau","Upsilon","upsilon","Phi","varphi","Chi","chi","Psi","psi","Omega","omega","dots","ldots","cdots","vdots","ddots","idots","logic","true","false","Inf","infinity","oo","lim","functions","ker","limsup","lg","Pr","sup","hom","var","curlyFunctions","int","Int","integrate","eigenvalues","liminf","units","isSymbol","isFunction","toFunction","isCurlyFunction","toCurlyFunction","isOperator","_toUnit","notSpaced","braces","that","texParams","showFunc","suffix"],"mappings":"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EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAG9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,IAAIa,EAAMC,GAC9Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAI/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAG/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAC/Bd,EAAoB,KAAKa,EAAMC,GAG/BD,EAAKgC,OAAS,WACZ,KAAM,IAAIjC,OAAM,yEAIlBZ,EAAoB,GAAGa,EAAMC,GAG7BD,EAAK2B,WAAWM,WACdC,OAAQ/C,EAAoB,IAAIa,EAAMC,GACtCkC,OAAQhD,EAAoB,IAAIa,EAAMC,GACtCmC,QAAQjD,EAAoB,IAAIa,EAAMC,GACtCoC,MAAQlD,EAAoB,IAAIa,EAAMC,GACtCqC,IAAQnD,EAAoB,IAAIa,EAAMC,GACtCsC,IAAQpD,EAAoB,IAAIa,EAAMC,GACtCuC,KAAQrD,EAAoB,IAAIa,EAAMC,GACtCwC,IAAQtD,EAAoB,IAAIa,EAAMC,GACtCyC,MAAQvD,EAAoB,IAAIa,EAAMC,GACtC0C,OAAQxD,EAAoB,IAAIa,EAAMC,IAIxCD,EAAK4C,YACL5C,EAAK4C,SAASC,MAAQ1D,EAAoB,IAAIa,EAAMC,GACpDD,EAAK4C,SAASE,SAAW9C,EAAK4C,SAASC,MAGvC7C,EAAKH,OAAOI,GACZD,EAAKH,OAAOA,GAGLG,EAlWT,GAAIO,GAASpB,EAAoB,GAC7B8B,EAAS9B,EAAoB,GAAG8B,OAqWhCjB,EAAOJ,GAEW,oBAAXmD,UACTA,OAAOC,OAAShD,GAIlBlB,EAAOD,QAAUmB,GAMZ,SAASlB,EAAQD,GAEtB,YAaAA,GAAQgC,MAAQ,QAASA,GAAMoC,GAC7B,GAAIxC,SAAcwC,EAGlB,IAAa,WAATxC,GAA8B,WAATA,GAA8B,YAATA,GACpC,OAANwC,GAAoBC,SAAND,EAChB,MAAOA,EAIT,IAAuB,kBAAZA,GAAEpC,MACX,MAAOoC,GAAEpC,OAIX,IAAIsC,MAAMC,QAAQH,GAChB,MAAOA,GAAEX,IAAI,SAAUe,GACrB,MAAOxC,GAAMwC,IAIjB,IAAIJ,YAAaK,QAAS,MAAO,IAAIA,QAAOL,EAAEM,UAC9C,IAAIN,YAAaO,QAAS,MAAO,IAAIA,QAAOP,EAAEM,UAC9C,IAAIN,YAAaQ,SAAS,MAAO,IAAIA,SAAQR,EAAEM,UAC/C,IAAIN,YAAaS,MAAS,MAAO,IAAIA,MAAKT,EAAEM,UAC5C,IAAIN,YAAaU,QAAS,KAAM,IAAIC,WAAU,gBAAkBX,EAGhE,IAAIxD,KACJ,KAAK,GAAIoE,KAAOZ,GACVA,EAAEa,eAAeD,KACnBpE,EAAEoE,GAAOhD,EAAMoC,EAAEY,IAGrB,OAAOpE,IASTZ,EAAQkF,OAAS,SAASC,EAAGC,GAC3B,IAAK,GAAIC,KAAQD,GACXA,EAAEH,eAAeI,KACnBF,EAAEE,GAAQD,EAAEC,GAGhB,OAAOF,IASTnF,EAAQ2B,WAAa,QAASA,GAAYwD,EAAGC,GAE3C,GAAId,MAAMC,QAAQa,GAChB,KAAM,IAAIL,WAAU,yCAGtB,KAAK,GAAIM,KAAQD,GACf,GAAIA,EAAEH,eAAeI,GACnB,GAAID,EAAEC,IAASD,EAAEC,GAAMpD,cAAgBhB,OACrBoD,SAAZc,EAAEE,KACJF,EAAEE,OAEAF,EAAEE,GAAMpD,cAAgBhB,OAC1BU,EAAWwD,EAAEE,GAAOD,EAAEC,IAGtBF,EAAEE,GAAQD,EAAEC,OAET,CAAA,GAAIf,MAAMC,QAAQa,EAAEC,IACzB,KAAM,IAAIN,WAAU,yCAEpBI,GAAEE,GAAQD,EAAEC,GAIlB,MAAOF,IASTnF,EAAQsF,UAAY,SAAoBH,EAAGC,GACzC,GAAIC,GAAME,EAAGC,CACb,IAAIlB,MAAMC,QAAQY,GAAI,CACpB,IAAKb,MAAMC,QAAQa,GACjB,OAAO,CAGT,IAAID,EAAEM,QAAUL,EAAEK,OAChB,OAAO,CAGT,KAAKF,EAAI,EAAGC,EAAML,EAAEM,OAAYD,EAAJD,EAASA,IACnC,IAAKvF,EAAQsF,UAAUH,EAAEI,GAAIH,EAAEG,IAC7B,OAAO,CAGX,QAAO,EAEJ,GAAIJ,YAAalE,QAAQ,CAC5B,GAAIqD,MAAMC,QAAQa,MAAQA,YAAanE,SACrC,OAAO,CAGT,KAAKoE,IAAQF,GAEX,IAAKnF,EAAQsF,UAAUH,EAAEE,GAAOD,EAAEC,IAChC,OAAO,CAGX,KAAKA,IAAQD,GAEX,IAAKpF,EAAQsF,UAAUH,EAAEE,GAAOD,EAAEC,IAChC,OAAO,CAGX,QAAO,EAGP,aAAeF,UAAaC,IAAOD,GAAKC,GAQ5CpF,EAAQ0F,kBAAoB,WAE1B,IACE,GAAIzE,OAAO0E,eAET,MADA1E,QAAO0E,kBAAmB,SACnB,EAET,MAAOC,IAET,OAAO,GAaT5F,EAAQ6F,KAAO,SAAUnE,EAAQ2D,EAAMS,GACrC,GAAI9F,EAAQ0F,oBAAqB,CAC/B,GACIK,GADAC,GAAiB,CAErB/E,QAAO0E,eAAejE,EAAQ2D,GAC5BY,IAAK,WAKH,MAJID,KACFD,EAASD,IACTE,GAAiB,GAEZD,GAGTG,IAAK,SAAU1B,GACbuB,EAASvB,EACTwB,GAAiB,SAMrBtE,GAAO2D,GAAQS,MAOd,SAAS7F,EAAQD,GAEtB,YAOAA,GAAQmG,SAAW,SAAS3B,GAC1B,MAAQA,aAAiBC,SAA4B,gBAATD,IAQ9CxE,EAAQoG,UAAY,SAAS5B,GAC3B,MAAQA,IAAS6B,KAAKC,MAAM9B,IAS9BxE,EAAQuG,KAAO,SAASnC,GACtB,MAAIA,GAAI,EACC,EAEI,EAAJA,EACA,GAGA,GAoEXpE,EAAQwG,OAAS,SAAShC,EAAO/C,GAC/B,GAAuB,kBAAZA,GAET,MAAOA,GAAQ+C,EAIjB,IAAciC,MAAVjC,EACF,MAAO,UAEJ,IAAIA,KAAWiC,IAClB,MAAO,WAEJ,IAAIC,MAAMlC,GACb,MAAO,KAIT,IAAImC,GAAW,OACXpF,EAAY8C,MAkBhB,QAhBI5C,IAEEA,EAAQkF,WACVA,EAAWlF,EAAQkF,UAIjB3G,EAAQmG,SAAS1E,GACnBF,EAAYE,EAELA,EAAQF,YACfA,EAAYE,EAAQF,YAKhBoF,GACN,IAAK,QACH,MAAO3G,GAAQ4G,QAAQpC,EAAOjD,EAEhC,KAAK,cACH,MAAOvB,GAAQ6G,cAAcrC,EAAOjD,EAEtC,KAAK,OAGH,GAAIuF,GAAQ,KACRC,EAAQ,GAWZ,IAVItF,GAAWA,EAAQuF,cACa3C,SAA9B5C,EAAQuF,YAAYF,QACtBA,EAAQrF,EAAQuF,YAAYF,OAEIzC,SAA9B5C,EAAQuF,YAAYD,QACtBA,EAAQtF,EAAQuF,YAAYD,QAKlB,IAAVvC,EAAa,MAAO,GAGxB,IAAIyC,GACAC,EAAMb,KAAKa,IAAI1C,EACnB,IAAI0C,GAAOJ,GAAeC,EAANG,EAAa,CAG/B,GAAIC,GAAW5F,EACXiD,EAAM4C,YAAYf,KAAKzC,IAAIrC,EAAW,KACtCiD,EAAM4C,aACVH,GAAMI,WAAWF,GAAY,OAI7BF,GAAMjH,EAAQ6G,cAAcrC,EAAOjD,EAIrC,OAAO0F,GAAIK,QAAQ,sBAAuB,WACxC,GAAIlF,GAASmF,UAAU,GACnB3B,EAAI2B,UAAU,EAClB,OAAmB,MAAXnF,EAAkBA,EAASwD,EAAIA,GAG3C,SACE,KAAM,IAAI1E,OAAM,qBAAuByF,EAAW,kDAaxD3G,EAAQ6G,cAAgB,SAASrC,EAAOjD,GACtC,MAAkB8C,UAAd9C,EACKiD,EAAMqC,cAAcR,KAAKzC,IAAIrC,EAAY,EAAG,KAG5CiD,EAAMqC,iBAUjB7G,EAAQ4G,QAAU,SAASpC,EAAOjD,GAChC,MAAOiD,GAAMoC,QAAQP,KAAKzC,IAAIrC,EAAW,MAc3CvB,EAAQoC,OAAS,SAASoC,GACxB,MAAOA,GACFqC,gBACAS,QAAQ,OAAQ,IAChBA,QAAS,aAAc,IACvB7B,QAMPzF,EAAQwH,YAAc/C,OAAOgD,SAAW,sBAWxCzH,EAAQ0H,YAAc,SAAStD,EAAGuD,EAAGnG,GAEnC,GAAe,MAAXA,EAAiB,MAAO4C,IAAKuD,CAGjC,IAAIvD,GAAKuD,EAAG,OAAO,CAGnB,IAAIjB,MAAMtC,IAAMsC,MAAMiB,GAAI,OAAO,CAGjC,IAAGC,SAASxD,IAAMwD,SAASD,GAAI,CAE7B,GAAIE,GAAOxB,KAAKa,IAAI9C,EAAIuD,EACxB,OAAIE,GAAO7H,EAAQwH,aACV,EAIAK,GAAQxB,KAAK3C,IAAI2C,KAAKa,IAAI9C,GAAIiC,KAAKa,IAAIS,IAAMnG,EAKxD,OAAO,IAMJ,SAASvB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIU,GAASpB,EAAoB,GAC7BwH,EAAYxH,EAAoB,KAChCgC,EAAUhC,EAAoB,GAC9BuB,EAAYV,EAAKS,KAAKC,SAE1BV,GAAK,SAAc,EACnBA,EAAK,UAAc,EACnBA,EAAK,QAAc,KACnBA,EAAoB,cAAIb,EAAoB,KAAKyH,cAE3B,cAAlB/G,EAAOM,QACTH,EAAe,SAAI,GAAIU,GAAU4E,KACjCtF,EAAU,IAAS,GAAIU,GAAUmG,KAEjCtG,EAAOmE,KAAK1E,EAAM,KAAO,WAAa,MAAO2G,GAAUG,GAAGjH,EAAOO,aACjEG,EAAOmE,KAAK1E,EAAM,MAAO,WAAa,MAAO2G,GAAUI,IAAIlH,EAAOO,aAClEG,EAAOmE,KAAK1E,EAAM,IAAO,WAAa,MAAO2G,GAAUlC,EAAE5E,EAAOO,aAChEG,EAAOmE,KAAK1E,EAAM,MAAO,WAAa,MAAO2G,GAAUK,IAAInH,EAAOO,aAGlEG,EAAOmE,KAAK1E,EAAM,IAAW,WAAa,MAAOA,GAAKyE,IACtDlE,EAAOmE,KAAK1E,EAAM,MAAW,WAAa,MAAO,IAAIU,GAAU,GAAGuG,OAClE1G,EAAOmE,KAAK1E,EAAM,OAAW,WAAa,MAAO,IAAIU,GAAU,IAAIuG,OACnE1G,EAAOmE,KAAK1E,EAAM,QAAW,WAAa,MAAO,IAAIU,GAAU,GAAGwG,IAAI,GAAIxG,GAAU,GAAGuG,QACvF1G,EAAOmE,KAAK1E,EAAM,SAAW,WAAa,MAAO,IAAIU,GAAU,GAAGwG,IAAI,GAAIxG,GAAU,IAAIuG,QACxF1G,EAAOmE,KAAK1E,EAAM,KAAW,WAAa,MAAOA,GAAK8G,KACtDvG,EAAOmE,KAAK1E,EAAM,UAAW,WAAa,MAAO,IAAIU,GAAU,OAAOyG,SACtE5G,EAAOmE,KAAK1E,EAAM,QAAW,WAAa,MAAO,IAAIU,GAAU,GAAGyG,WAGlEnH,EAAe,SAAIsF,IACnBtF,EAAU,IAAS6G,IAEnB7G,EAAK8G,GAAM5B,KAAKkC,GAChBpH,EAAK+G,IAAgB,EAAV7B,KAAKkC,GAChBpH,EAAKyE,EAAMS,KAAKmC,EAChBrH,EAAKgH,IAAM,kBAGXhH,EAAKqH,EAAcrH,EAAKyE,EACxBzE,EAAKsH,IAAcpC,KAAKoC,IACxBtH,EAAKuH,KAAcrC,KAAKqC,KACxBvH,EAAKwH,MAActC,KAAKsC,MACxBxH,EAAKyH,OAAcvC,KAAKuC,OACxBzH,EAAKoH,GAAcpH,EAAK8G,GACxB9G,EAAK0H,QAAcxC,KAAKwC,QACxB1H,EAAK2H,MAAczC,KAAKyC,OAI1B3H,EAAKoE,EAAI,GAAIjD,GAAQ,EAAG,GAGxBnB,EAAK4H,QAAUzI,EAAoB,OAMhC,SAASL,EAAQD,EAASM,GAE/B,YAEAN,GAAQgJ,eAAiB1I,EAAoB,KAC7CN,EAAQiJ,eAAiB3I,EAAoB,KAC7CN,EAAQkJ,WAAa5I,EAAoB,KACzCN,EAAQmJ,qBAAuB7I,EAAoB,MAO9C,SAASL,EAAQD,EAASM,GAE/B,YA6BA,SAASgC,GAAQ8G,EAAIC,GACnB,KAAMjJ,eAAgBkC,IACpB,KAAM,IAAIgH,aAAY,mDAGxB,QAAQ/B,UAAU9B,QAChB,IAAK,GACHrF,KAAKgJ,GAAK,EACVhJ,KAAKiJ,GAAK,CACV,MAEF,KAAK,GACH,GAAIE,GAAMhC,UAAU,EACpB,IAAmB,gBAARgC,GAAkB,CAC3B,GAAG,MAAQA,IAAO,MAAQA,GAAK,CAC7B,GAAIC,GAAY,GAAIlH,GAAQiH,EAAIH,GAAIG,EAAIF,GACxCjJ,MAAKgJ,GAAKI,EAAUJ,GACpBhJ,KAAKiJ,GAAKG,EAAUH,EACpB,OACK,GAAI,KAAOE,IAAO,OAASA,GAAK,CACrC,GAAIC,GAAYlH,EAAQmH,UAAUF,EAAIG,EAAGH,EAAIpB,IAC7C/H,MAAKgJ,GAAKI,EAAUJ,GACpBhJ,KAAKiJ,GAAKG,EAAUH,EACpB,QAGJ,KAAM,IAAIC,aAAY,8DAExB,KAAK,GACH,IAAKnD,EAASiD,KAAQjD,EAASkD,GAC7B,KAAM,IAAItE,WAAU,8CAEtB3E,MAAKgJ,GAAKA,EACVhJ,KAAKiJ,GAAKA,CACV,MAEF,SACE,KAAM,IAAIC,aAAY,gEAgB5B,QAASK,KACP,KAAY,KAAL9I,GAAiB,KAALA,GACjB+I,IAIJ,QAASC,GAAYhJ,GACnB,MAASA,IAAK,KAAY,KAALA,GAAkB,KAALA,EAGpC,QAASiJ,GAASjJ,GAChB,MAASA,IAAK,KAAY,KAALA,EAGvB,QAAS+I,KACPpG,IACA3C,EAAIkJ,EAAKC,OAAOxG,GAGlB,QAASyG,GAAOC,GACd1G,EAAQ0G,EACRrJ,EAAIkJ,EAAKC,OAAOxG,GAGlB,QAAS2G,KACP,GACID,GADA5I,EAAS,EAYb,IAVA4I,EAAW1G,EAEF,KAAL3C,EACF+I,IAEY,KAAL/I,IACPS,GAAUT,EACV+I,MAGGC,EAAWhJ,GAGd,MADAoJ,GAAOC,GACA,IAIT,IAAS,KAALrJ,GAGF,GAFAS,GAAUT,EACV+I,KACKE,EAAQjJ,GAGX,MADAoJ,GAAOC,GACA,SAGN,CACH,KAAOJ,EAAQjJ,IACbS,GAAUT,EACV+I,GAEO,MAAL/I,IACFS,GAAUT,EACV+I,KAGJ,KAAOE,EAAQjJ,IACbS,GAAUT,EACV+I,GAIF,IAAS,KAAL/I,GAAiB,KAALA,EAAU,CAUxB,GATAS,GAAUT,EACV+I,KAES,KAAL/I,GAAiB,KAALA,KACdS,GAAUT,EACV+I,MAIGE,EAAQjJ,GAGX,MADAoJ,GAAOC,GACA,IAGT,MAAOJ,EAAQjJ,IACbS,GAAUT,EACV+I,IAIJ,MAAOtI,GAGT,QAAS8I,KAEP,GAAIC,GAAQN,EAAKC,OAAOxG,EAAQ,EAChC,IAAS,KAAL3C,GAAiB,KAALA,EAEd,MADA+I,KACO,GAEJ,MAAU,KAAL/I,GAAiB,KAALA,GAAuB,KAATwJ,GAAyB,KAATA,GAAe,CACjE,GAAI/I,GAAe,KAALT,EAAY,IAAM,IAGhC,OAFA+I,KACAA,IACOtI,EAGT,MAAO,MA5LT,GAAIgJ,GAAOhK,EAAoB,KAC3BoC,EAAOpC,EAAoB,IAC3BgB,EAASgJ,EAAKhJ,OAEd6E,EAAWmE,EAAKhJ,OAAO6E,SACvBoE,EAAS7H,EAAK6H,OACdC,EAAWF,EAAKG,OAAOD,QAmE3BlI,GAAQoI,UAAY,SAAUlG,GAC5B,MAAQA,aAAiBlC,GAI3B,IAAIyH,GAAMvG,EAAO3C,CAwHjByB,GAAQU,MAAQ,SAAUiE,GAKxB,GAJA8C,EAAO9C,EACPzD,EAAQ,GACR3C,EAAI,IAEC2J,EAAST,GACZ,MAAO,KAGTH,KACAD,GACA,IAAIgB,GAAQR,GACZ,IAAIQ,EAAO,CACT,GAAS,KAAL9J,GAAiB,KAALA,EAId,MAFA+I,KACAD,IACI9I,EAEK,KAGF,GAAIyB,GAAQ,EAAGmC,OAAOkG,GAI7BhB,IACA,IAAIiB,GAAY/J,CAChB,IAAiB,KAAb+J,GAAiC,KAAbA,EAGtB,MADAjB,KACI9I,EAEK,KAGF,GAAIyB,GAAQmC,OAAOkG,GAAQ,EAIlCf,KACAD,GACA,IAAIkB,GAASV,GACb,IAAIU,EAAQ,CACV,GAAS,KAALhK,GAAiB,KAALA,EAEd,MAAO,KAET+I,SAIA,IADAiB,EAAST,KACJS,EAEH,MAAO,KAeX,OAXiB,KAAbD,IAEAC,EADe,KAAbA,EAAO,GACC,IAAMA,EAAOC,UAAU,GAGxB,IAAMD,GAInBjB,IACAD,IACI9I,EAEK,KAGF,GAAIyB,GAAQmC,OAAOkG,GAAQlG,OAAOoG,IAO7C,OADAF,EAAQP,MAENT,IACI9I,EAEK,KAGF,GAAIyB,GAAQ,EAAGmC,OAAOkG,KAI1B,MAcTrI,EAAQmH,UAAY,WAClB,OAAQlC,UAAU9B,QAChB,IAAK,GACH,GAAI8D,GAAMhC,UAAU,EACpB,IAAkB,gBAARgC,GACR,MAAOjH,GAAQmH,UAAUF,EAAIG,EAAGH,EAAIpB,IAEtC,MAAM,IAAIpD,WAAU,iDAEtB,KAAK,GACH,GAAI2E,GAAInC,UAAU,GAChBY,EAAMZ,UAAU,EAClB,IAAGpB,EAASuD,GAAI,CAMd,GALIa,EAAOpC,IAAQA,EAAI4C,QAAQrI,EAAKsI,WAAWC,SAE7C9C,EAAMA,EAAI+C,SAAS,QAGlB/E,EAASgC,GACV,MAAO,IAAI7F,GAAQoH,EAAIrD,KAAK8E,IAAIhD,GAAMuB,EAAIrD,KAAK+E,IAAIjD,GAGrD,MAAM,IAAIpD,WAAU,0CAEpB,KAAM,IAAIA,WAAU,4BAGxB,SACE,KAAM,IAAIuE,aAAY,qDAS5BhH,EAAQJ,UAAUmJ,QAAU,WAC1B,OACE3B,EAAGrD,KAAKiC,KAAKlI,KAAKgJ,GAAKhJ,KAAKgJ,GAAKhJ,KAAKiJ,GAAKjJ,KAAKiJ,IAChDlB,IAAK9B,KAAKiF,MAAMlL,KAAKiJ,GAAIjJ,KAAKgJ,MAQlC9G,EAAQJ,UAAUF,MAAQ,WACxB,MAAO,IAAIM,GAAQlC,KAAKgJ,GAAIhJ,KAAKiJ,KAUnC/G,EAAQJ,UAAUqJ,OAAS,SAAUC,GACnC,MAAQpL,MAAKgJ,KAAOoC,EAAMpC,IAAQhJ,KAAKiJ,KAAOmC,EAAMnC,IAYtD/G,EAAQJ,UAAUsE,OAAS,SAAU/E,GACnC,GAAIwF,GAAM,GACNwE,EAAQnK,EAAOkF,OAAOpG,KAAKgJ,GAAI3H,GAC/BiK,EAAQpK,EAAOkF,OAAOpG,KAAKiJ,GAAI5H,EAsCnC,OAlCEwF,GAFa,GAAX7G,KAAKiJ,GAEDoC,EAEY,GAAXrL,KAAKgJ,GAEG,GAAXhJ,KAAKiJ,GACD,IAEY,IAAXjJ,KAAKiJ,GACN,KAGAqC,EAAQ,IAKZtL,KAAKiJ,GAAK,EACG,GAAXjJ,KAAKiJ,GACDoC,EAAQ,OAGRA,EAAQ,MAAQC,EAAQ,IAIjB,IAAXtL,KAAKiJ,GACDoC,EAAQ,OAGRA,EAAQ,MAAQC,EAAMZ,UAAU,GAAK,KAYnDxI,EAAQJ,UAAUyJ,SAAW,WAC3B,MAAOvL,MAAKoG,UAOdlE,EAAQJ,UAAUwC,QAAUpC,EAAQJ,UAAUyJ,SAG9C1L,EAAOD,QAAUsC,GAKZ,SAASrC,EAAQD,EAASM,GAE/B,YAoCA,SAASiC,GAAMqJ,EAAOC,EAAKC,GACzB,KAAM1L,eAAgBmC,IACpB,KAAM,IAAI+G,aAAY,mDAGxB,IAAa,MAATsC,IAAkBtK,EAAO6E,SAASyF,GACpC,KAAM,IAAI7G,WAAU,mCAEtB,IAAW,MAAP8G,IAAgBvK,EAAO6E,SAAS0F,GAClC,KAAM,IAAI9G,WAAU,iCAEtB,IAAY,MAAR+G,IAAiBxK,EAAO6E,SAAS2F,GACnC,KAAM,IAAI/G,WAAU,kCAGtB3E,MAAKwL,MAAkB,MAATA,EAAiBvE,WAAWuE,GAAS,EACnDxL,KAAKyL,IAAgB,MAAPA,EAAexE,WAAWwE,GAAO,EAC/CzL,KAAK0L,KAAiB,MAARA,EAAgBzE,WAAWyE,GAAQ,EAnDnD,CAAA,GAAIxB,GAAOhK,EAAoB,KAE3BgB,EAASgJ,EAAKhJ,OACdmJ,EAASH,EAAKG,MACNH,GAAKyB,MA0DjBxJ,EAAMS,MAAQ,SAAUiE,GACtB,IAAKwD,EAAOD,SAASvD,GACnB,MAAO,KAGT,IAAI+E,GAAO/E,EAAIgF,MAAM,KACjBC,EAAOF,EAAKvI,IAAI,SAAU8F,GAC5B,MAAOlC,YAAWkC,KAGhB4C,EAAUD,EAAKE,KAAK,SAAUC,GAChC,MAAO3F,OAAM2F,IAEf,IAAGF,EACD,MAAO,KAGT,QAAQD,EAAKzG,QACX,IAAK,GAAG,MAAO,IAAIlD,GAAM2J,EAAK,GAAIA,EAAK,GACvC,KAAK,GAAG,MAAO,IAAI3J,GAAM2J,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAChD,SAAS,MAAO,QAQpB3J,EAAML,UAAUF,MAAQ,WACtB,MAAO,IAAIO,GAAMnC,KAAKwL,MAAOxL,KAAKyL,IAAKzL,KAAK0L,OAQ9CvJ,EAAM+J,QAAU,SAAU5K,GACxB,MAAQA,aAAkBa,IAQ5BA,EAAML,UAAUqK,KAAO,WACrB,GAAI/G,GAAM,EACNoG,EAAQxL,KAAKwL,MACbE,EAAO1L,KAAK0L,KACZD,EAAMzL,KAAKyL,IACXhE,EAAOgE,EAAMD,CAYjB,OAVItK,GAAOiF,KAAKuF,IAASxK,EAAOiF,KAAKsB,GACnCrC,EAAMa,KAAKmG,KAAK,EAASV,GAEV,GAARjE,IACPrC,EAAM,GAGJkB,MAAMlB,KACRA,EAAM,IAEAA,IAOVjD,EAAML,UAAU0B,IAAM,WACpB,GAAI2I,GAAOnM,KAAKmM,OAAO,EAEvB,OAAIA,GAAO,EACLnM,KAAK0L,KAAO,EAEP1L,KAAKwL,MAILxL,KAAKwL,OAASW,EAAO,GAAKnM,KAAK0L,KAIjCzH,QAQX9B,EAAML,UAAUwB,IAAM,WACpB,GAAI6I,GAAOnM,KAAKmM,OAAO,EAEvB,OAAIA,GAAO,EACLnM,KAAK0L,KAAO,EAEP1L,KAAKwL,OAASW,EAAO,GAAKnM,KAAK0L,KAI/B1L,KAAKwL,MAIPvH,QAWX9B,EAAML,UAAUqB,QAAU,SAAUkJ,GAClC,GAAIrI,GAAIhE,KAAKwL,MACTE,EAAO1L,KAAK0L,KACZD,EAAMzL,KAAKyL,IACXtG,EAAI,CAER,IAAIuG,EAAO,EACT,KAAWD,EAAJzH,GACLqI,EAASrI,EAAGmB,EAAGnF,MACfgE,GAAK0H,EACLvG,QAGC,IAAW,EAAPuG,EACP,KAAO1H,EAAIyH,GACTY,EAASrI,EAAGmB,EAAGnF,MACfgE,GAAK0H,EACLvG,KAaNhD,EAAML,UAAUuB,IAAM,SAAUgJ,GAC9B,GAAIV,KAIJ,OAHA3L,MAAKmD,QAAQ,SAAUiB,EAAOhB,EAAOkJ,GACnCX,EAAMvI,GAASiJ,EAASjI,EAAOhB,EAAOkJ,KAEjCX,GAOTxJ,EAAML,UAAUyK,QAAU,WACxB,GAAIZ,KAIJ,OAHA3L,MAAKmD,QAAQ,SAAUiB,EAAOhB,GAC5BuI,EAAMvI,GAASgB,IAEVuH,GAOTxJ,EAAML,UAAUwC,QAAU,WAExB,MAAOtE,MAAKuM,WAYdpK,EAAML,UAAUsE,OAAS,SAAU/E,GACjC,GAAIwF,GAAM3F,EAAOkF,OAAOpG,KAAKwL,MAAOnK,EAMpC,OAJiB,IAAbrB,KAAK0L,OACP7E,GAAO,IAAM3F,EAAOkF,OAAOpG,KAAK0L,KAAMrK,IAExCwF,GAAO,IAAM3F,EAAOkF,OAAOpG,KAAKyL,IAAKpK,IAQvCc,EAAML,UAAUyJ,SAAW,WACzB,MAAOvL,MAAKoG,UAIdvG,EAAOD,QAAUuC,GAKZ,SAAStC,EAAQD,EAASM,GAE/B,YA+BA,SAASkC,KACP,KAAMpC,eAAgBoC,IACpB,KAAM,IAAI8G,aAAY,mDAGxBlJ,MAAKwM,WACLxM,KAAKyM,WAAY,CAEjB,KAAK,GAAItH,GAAI,EAAGuH,EAAKvF,UAAU9B,OAAYqH,EAAJvH,EAAQA,IAAK,CAClD,GAAIgE,GAAMhC,UAAUhC,EAEpB,IAAIgE,YAAehH,GACjBnC,KAAKwM,QAAQG,KAAKxD,GAClBnJ,KAAKyM,WAAY,MAEd,IAAItI,EAAQgF,GACfnJ,KAAKwM,QAAQG,KAAKC,EAAazD,IAC/BnJ,KAAKyM,WAAY,MAEd,IAAI1G,EAASoD,GAChBnJ,KAAKwM,QAAQG,KAAKC,GAAczD,EAAKA,EAAM,SAGxC,CACH,GAAI0D,GAAY1D,EAAI7E,SACpB,KAAIH,EAAQ0I,GAKV,KAAM,IAAIlI,WAAU,4CAJpB3E,MAAKwM,QAAQG,KAAKC,EAAaC,IAC/B7M,KAAKyM,WAAY,IAgBzB,QAASG,GAAazD,GAKpB,IAAK,GADD8C,GAAM9C,EAAI9D,OACLF,EAAI,EAAO8G,EAAJ9G,EAASA,IACvB,IAAKY,EAASoD,EAAIhE,MAAQa,EAAUmD,EAAIhE,IACtC,KAAM,IAAIR,WAAU,2CAIxB,QAAQwE,EAAI9D,QACV,IAAK,GACH,MAAO,IAAIlD,GAAMgH,EAAI,GAAIA,EAAI,GAC/B,KAAK,GACH,MAAO,IAAIhH,GAAMgH,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACvC,SAEE,KAAM,IAAID,aAAY,yDA1F5B,GAAIgB,GAAOhK,EAAoB,KAE3BiC,EAAQjC,EAAoB,GAE5BgB,EAASgJ,EAAKhJ,OAEd6E,EAAW7E,EAAO6E,SAClBC,EAAY9E,EAAO8E,UACnB7B,EAAUD,MAAMC,OA0FpB/B,GAAMN,UAAUF,MAAQ,WACtB,GAAIwB,GAAQ,GAAIhB,EAGhB,OAFAgB,GAAMoJ,QAAUtC,EAAK5I,OAAOM,MAAM5B,KAAKwM,SACvCpJ,EAAMqJ,UAAYzM,KAAKyM,UAChBrJ,GAQThB,EAAM0K,QAAU,SAAUxL,GACxB,MAAQA,aAAkBc,IAS5BA,EAAMzB,OAAS,SAAUoM,GACvB,GAAI3J,GAAQ,GAAIhB,EAEhB,OADAA,GAAM4K,MAAM5J,EAAO2J,GACZ3J,GAOThB,EAAMN,UAAUqK,KAAO,WAGrB,IAAK,GAFDA,MAEKhH,EAAI,EAAGuH,EAAK1M,KAAKwM,QAAQnH,OAAYqH,EAAJvH,EAAQA,IAAK,CACrD,GAAI1B,GAAQzD,KAAKwM,QAAQrH,EAEzBgH,GAAKhH,GAAK1B,EAAM0I,OAAO,GAGzB,MAAOA,IAOT/J,EAAMN,UAAUwB,IAAM,WAGpB,IAAK,GAFD2J,MAEK9H,EAAI,EAAGuH,EAAK1M,KAAKwM,QAAQnH,OAAYqH,EAAJvH,EAAQA,IAAK,CACrD,GAAI1B,GAAQzD,KAAKwM,QAAQrH,EACzB8H,GAAO9H,GAAK1B,EAAMH,MAGpB,MAAO2J,IAOT7K,EAAMN,UAAU0B,IAAM,WAGpB,IAAK,GAFDyJ,MAEK9H,EAAI,EAAGuH,EAAK1M,KAAKwM,QAAQnH,OAAYqH,EAAJvH,EAAQA,IAAK,CACrD,GAAI1B,GAAQzD,KAAKwM,QAAQrH,EAEzB8H,GAAO9H,GAAK1B,EAAMD,MAGpB,MAAOyJ,IAST7K,EAAMN,UAAUqB,QAAU,SAAUkJ,GAClC,IAAK,GAAIlH,GAAI,EAAGuH,EAAK1M,KAAKwM,QAAQnH,OAAYqH,EAAJvH,EAAQA,IAChDkH,EAASrM,KAAKwM,QAAQrH,GAAIA,EAAGnF,OASjCoC,EAAMN,UAAU2B,MAAQ,SAASyJ,GAC/B,MAAOlN,MAAKwM,QAAQU,IAAQ,MAU9B9K,EAAMN,UAAUqL,SAAW,WACzB,MAAOnN,MAAKyM,WAQdrK,EAAMN,UAAUyK,QAAU,WAExB,IAAK,GADDZ,MACKxG,EAAI,EAAGuH,EAAK1M,KAAKwM,QAAQnH,OAAYqH,EAAJvH,EAAQA,IAAK,CACrD,GAAI1B,GAAQzD,KAAKwM,QAAQrH,GACrBiI,KACApJ,EAAIP,EAAM+H,MACVC,EAAMhI,EAAMgI,IACZC,EAAOjI,EAAMiI,IAEjB,IAAIA,EAAO,EACT,KAAWD,EAAJzH,GACLoJ,EAAIT,KAAK3I,GACTA,GAAK0H,MAGJ,IAAW,EAAPA,EACP,KAAO1H,EAAIyH,GACT2B,EAAIT,KAAK3I,GACTA,GAAK0H,CAITC,GAAMgB,KAAKS,GAGb,MAAOzB,IAQTvJ,EAAMN,UAAUwC,QAAUlC,EAAMN,UAAUyK,QAM1CnK,EAAMN,UAAUyJ,SAAW,WAGzB,IAAK,GAFD8B,MAEKlI,EAAI,EAAGuH,EAAK1M,KAAKwM,QAAQnH,OAAYqH,EAAJvH,EAAQA,IAAK,CACrD,GAAI1B,GAAQzD,KAAKwM,QAAQrH,GACrB0B,EAAM3F,EAAOkF,OAAO3C,EAAM+H,MACZ,IAAd/H,EAAMiI,OACR7E,GAAO,IAAM3F,EAAOkF,OAAO3C,EAAMiI,OAEnC7E,GAAO,IAAM3F,EAAOkF,OAAO3C,EAAMgI,KACjC4B,EAAQV,KAAK9F,GAGf,MAAO,IAAMwG,EAAQC,KAAK,MAAQ,KAIpCzN,EAAOD,QAAUwC,GAKZ,SAASvC,EAAQD,EAASM,GAE/B,YAoCA,SAASmC,GAAOkL,GACd,KAAMvN,eAAgBqC,IACpB,KAAM,IAAI6G,aAAY,mDAGxB,IAAIqE,YAAgBlL,GAElBrC,KAAKwN,MAAQD,EAAK3L,QAAQ4L,UAEvB,IAAIrJ,EAAQoJ,GAGfvN,KAAKwN,MAAQC,EAAWF,OAErB,CAAA,GAAY,MAARA,EAEP,KAAM,IAAI5I,WAAU,6BAA+BuF,EAAKwD,MAAMlM,KAAK+L,GAAQ,IAI3EvN,MAAKwN,SAIPxN,KAAK2N,MAAQhC,EAAMQ,KAAKnM,KAAKwN,OA+G/B,QAASI,GAAM3M,EAAQmC,GACrB,KAAMA,YAAiBhB,IACrB,KAAM,IAAIuC,WAAU,gBAGtB,IAAIwI,GAAW/J,EAAM+J,UACrB,IAAIA,EAEF,MAAOlM,GAAO4E,IAAIzC,EAAMI,MAIxB,IAAI2I,GAAO/I,EAAM+I,MACjB,IAAIA,EAAK9G,QAAUpE,EAAO0M,MAAMtI,OAC9B,KAAM,IAAIwD,GAAesD,EAAK9G,OAAQpE,EAAO0M,MAAMtI,OAMrD,KAAK,GAFD7B,GAAMJ,EAAMI,MACZF,EAAMF,EAAME,MACP6B,EAAI,EAAGuH,EAAKzL,EAAO0M,MAAMtI,OAAYqH,EAAJvH,EAAQA,IAChD0I,EAAcrK,EAAI2B,GAAIlE,EAAO0M,MAAMxI,IACnC0I,EAAcvK,EAAI6B,GAAIlE,EAAO0M,MAAMxI,GAKrC,OAAO,IAAI9C,GAAOyL,EAAc7M,EAAOuM,MAAOpK,EAAO+I,EAAK9G,OAAQ,IActE,QAASyI,GAAeP,EAAMnK,EAAO2K,EAAMb,GACzC,GAAIc,GAAQd,GAAOa,EAAO,EACtBtK,EAAQL,EAAMK,MAAMyJ,EAExB,OACSzJ,GAAMJ,IADX2K,EACe,SAAU7I,GACzB,MAAOoI,GAAKpI,IAIG,SAAUA,GACzB,GAAI8I,GAAQV,EAAKpI,EACjB,OAAO2I,GAAcG,EAAO7K,EAAO2K,EAAMb,EAAM,KAgBrD,QAASgB,GAAMjN,EAAQmC,EAAO+K,EAAWC,GACvC,KAAMhL,YAAiBhB,IACrB,KAAM,IAAIuC,WAAU,gBAItB,IAII0J,GAJAC,EAAQlL,EAAM+I,OACdgB,EAAW/J,EAAM+J,UAYrB,IARIgB,YAAqB9L,IACvBgM,EAAQF,EAAUhC,OAClBgC,EAAYA,EAAU7J,WAGtB+J,EAAQ1C,EAAMQ,KAAKgC,GAGjBhB,EAAU,CAIZ,GAAoB,GAAhBkB,EAAMhJ,OACR,KAAM,IAAIV,WAAU,kBAGtB1D,GAAO6E,IAAI1C,EAAMI,MAAO2K,EAAWC,OAEhC,CAIH,GAAIE,EAAMjJ,OAASpE,EAAO0M,MAAMtI,OAC9B,KAAM,IAAIwD,GAAeyF,EAAMjJ,OAAQpE,EAAO0M,MAAMtI,OAAQ,IAG9D,IAAIgJ,EAAMhJ,OAASiJ,EAAMjJ,OAAQ,CAI/B,IAFA,GAAIF,GAAI,EACJoJ,EAAQ,EACQ,IAAbD,EAAMnJ,IAAyB,IAAbkJ,EAAMlJ,IAC7BA,GAEF,MAAoB,IAAbmJ,EAAMnJ,IACXoJ,IACApJ,GAIFgJ,GAAYxC,EAAM6C,UAAUL,EAAWG,EAAMjJ,OAAQkJ,EAAOF,GAI9D,IAAK/M,EAAO4D,UAAUoJ,EAAOD,GAC3B,KAAM,IAAIxF,GAAeyF,EAAOD,EAAO,IAIzC,IAAIlC,GAAO/I,EAAME,MAAMD,IAAI,SAAU8B,GACnC,MAAOA,GAAI,GAEbsJ,GAAKxN,EAAQkL,EAAMiC,EAGnB,IAAIL,GAAOO,EAAMjJ,OACb6H,EAAM,CACVwB,GAAezN,EAAOuM,MAAOpK,EAAO+K,EAAWJ,EAAMb,GAGvD,MAAOjM,GAYT,QAASyN,GAAenB,EAAMnK,EAAO+K,EAAWJ,EAAMb,GACpD,GAAIc,GAAQd,GAAOa,EAAO,EACtBtK,EAAQL,EAAMK,MAAMyJ,EAGtBzJ,GAAMN,QADJ6K,EACY,SAAUW,EAAWC,GACjCf,EAAcc,GACdpB,EAAKoB,GAAaR,EAAUS,IAIhB,SAAUD,EAAWC,GACjCf,EAAcc,GACdD,EAAcnB,EAAKoB,GAAYvL,EAAO+K,EAAUS,GAAWb,EAAMb,EAAM,KA6B7E,QAASuB,GAAKxN,EAAQkL,EAAMiC,GAK1B,IAJA,GAAIS,GAAUvN,EAAOM,MAAMX,EAAO0M,OAC9BmB,GAAU,EAGPD,EAAQxJ,OAAS8G,EAAK9G,QAC3BwJ,EAAQlC,KAAK,GACbmC,GAAU,CAIZ,KAAK,GAAI3J,GAAI,EAAGuH,EAAKP,EAAK9G,OAAYqH,EAAJvH,EAAQA,IACpCgH,EAAKhH,GAAK0J,EAAQ1J,KACpB0J,EAAQ1J,GAAKgH,EAAKhH,GAClB2J,GAAU,EAIVA,IAEF7N,EAAO8N,OAAOF,EAAST,GAmH3B,QAASX,GAAWF,GAClB,IAAK,GAAIpI,GAAI,EAAGuH,EAAKa,EAAKlI,OAAYqH,EAAJvH,EAAQA,IAAK,CAC7C,GAAI6J,GAAOzB,EAAKpI,EACZhB,GAAQ6K,GACVzB,EAAKpI,GAAKsI,EAAWuB,GAEdA,YAAgB3M,KACvBkL,EAAKpI,GAAKsI,EAAWuB,EAAKxB,QAI9B,MAAOD,GA5fT,GAAIrD,GAAOhK,EAAoB,KAC3B2I,EAAiB3I,EAAoB,KAErCkC,EAAQlC,EAAoB,GAG5BmK,GADSH,EAAKhJ,OACLgJ,EAAKG,QACdsB,EAAQzB,EAAKyB,MACbrK,EAAS4I,EAAK5I,OAEd6C,EAAUD,MAAMC,QAChB0J,EAAgBlC,EAAMkC,aAuD1BxL,GAAO4M,SAAW,SAAU3N,GAC1B,MAAQA,aAAkBe,IAgB5BA,EAAOP,UAAU4B,OAAS,SAAUN,EAAO8L,EAAad,GACtD,OAAQjH,UAAU9B,QAChB,IAAK,GACH,MAAOuI,GAAK5N,KAAMoD,EAGpB,KAAK,GACL,IAAK,GACH,MAAO8K,GAAKlO,KAAMoD,EAAO8L,EAAad,EAExC,SACE,KAAM,IAAIlF,aAAY,+BAS5B7G,EAAOP,UAAU+D,IAAM,SAAUzC,GAC/B,IAAKe,EAAQf,GACX,KAAM,IAAIuB,WAAU,iBAEtB,IAAIvB,EAAMiC,QAAUrF,KAAK2N,MAAMtI,OAC7B,KAAM,IAAIwD,GAAezF,EAAMiC,OAAQrF,KAAK2N,MAAMtI,OAIpD,KAAK,GADDkI,GAAOvN,KAAKwN,MACPrI,EAAI,EAAGuH,EAAKtJ,EAAMiC,OAAYqH,EAAJvH,EAAQA,IAAK,CAC9C,GAAIgK,GAAU/L,EAAM+B,EACpB0I,GAAcsB,EAAS5B,EAAKlI,QAC5BkI,EAAOA,EAAK4B,GAGd,MAAO7N,GAAOM,MAAM2L,IAYtBlL,EAAOP,UAAUgE,IAAM,SAAU1C,EAAOgB,EAAOgK,GAC7C,GAAIjJ,GAAGuH,CAGP,KAAKvI,EAAQf,GACX,KAAM,IAAItC,OAAM,iBAElB,IAAIsC,EAAMiC,OAASrF,KAAK2N,MAAMtI,OAC5B,KAAM,IAAIwD,GAAezF,EAAMiC,OAAQrF,KAAK2N,MAAMtI,OAAQ,IAI5D,IAAI8G,GAAO/I,EAAMC,IAAI,SAAU8B,GAC7B,MAAOA,GAAI,GAEbsJ,GAAKzO,KAAMmM,EAAMiC,EAGjB,IAAIb,GAAOvN,KAAKwN,KAChB,KAAKrI,EAAI,EAAGuH,EAAKtJ,EAAMiC,OAAS,EAAOqH,EAAJvH,EAAQA,IAAK,CAC9C,GAAIgK,GAAU/L,EAAM+B,EACpB0I,GAAcsB,EAAS5B,EAAKlI,QAC5BkI,EAAOA,EAAK4B,GAQd,MAJAA,GAAU/L,EAAMA,EAAMiC,OAAS,GAC/BwI,EAAcsB,EAAS5B,EAAKlI,QAC5BkI,EAAK4B,GAAW/K,EAETpE,MA0LTqC,EAAOP,UAAUiN,OAAS,SAAU5C,EAAMiC,GAKxC,MAJApO,MAAK2N,MAAQrM,EAAOM,MAAMuK,GAC1BnM,KAAKwN,MAAQ7B,EAAMoD,OAAO/O,KAAKwN,MAAOxN,KAAK2N,MAAOS,GAG3CpO,MAuCTqC,EAAOP,UAAUF,MAAQ,WACvB,GAAIX,GAAS,GAAIoB,EAGjB,OAFApB,GAAOuM,MAAQlM,EAAOM,MAAM5B,KAAKwN,OACjCvM,EAAO0M,MAAQrM,EAAOM,MAAM5B,KAAK2N,OAC1B1M,GAOToB,EAAOP,UAAUqK,KAAO,WACtB,MAAOnM,MAAK2N,OAWdtL,EAAOP,UAAUuB,IAAM,SAAUgJ,GAC/B,GAAI+C,GAAKpP,KACLiB,EAAS,GAAIoB,GAEbgN,EAAU,SAAUjL,EAAOhB,GAC7B,MAAIe,GAAQC,GACHA,EAAMf,IAAI,SAAU4K,EAAO9I,GAChC,MAAOkK,GAAQpB,EAAO7K,EAAMH,OAAOkC,MAI9BkH,EAASjI,EAAOhB,EAAOgM,GAMlC,OAHAnO,GAAOuM,MAAQ6B,EAAQrP,KAAKwN,UAC5BvM,EAAO0M,MAAQrM,EAAOM,MAAM5B,KAAK2N,OAE1B1M,GASToB,EAAOP,UAAUqB,QAAU,SAAUkJ,GACnC,GAAI+C,GAAKpP,KAELqP,EAAU,SAAUjL,EAAOhB,GACzBe,EAAQC,GACVA,EAAMjB,QAAQ,SAAU8K,EAAO9I,GAC7BkK,EAAQpB,EAAO7K,EAAMH,OAAOkC,MAI9BkH,EAASjI,EAAOhB,EAAOgM,GAG3BC,GAAQrP,KAAKwN,WAOfnL,EAAOP,UAAUyK,QAAU,WACzB,MAAOjL,GAAOM,MAAM5B,KAAKwN,QAO3BnL,EAAOP,UAAUwC,QAAU,WACzB,MAAOtE,MAAKwN,OAWdnL,EAAOP,UAAUsE,OAAS,SAAU/E,GAClC,MAAOgJ,GAAOjE,OAAOpG,KAAKwN,MAAOnM,IAOnCgB,EAAOP,UAAUyJ,SAAW,WAC1B,MAAOlB,GAAOjE,OAAOpG,KAAKwN,QAwB5B3N,EAAOD,QAAUyC,GAKZ,SAASxC,EAAQD,EAASM,GAE/B,YAyBA,SAASoC,GAAK8B,EAAOkL,GACnB,KAAMtP,eAAgBsC,IACpB,KAAM,IAAIxB,OAAM,mDAGlB,IAAamD,QAATG,IAAuB2B,EAAS3B,GAClC,KAAM,IAAIO,WAAU,uDAEtB,IAAYV,QAARqL,KAAuBlF,EAASkF,IAAiB,IAARA,GAC3C,KAAM,IAAI3K,WAAU,wDAGtB,IAAYV,QAARqL,EAAmB,CAErB,GAAIC,GAAMC,EAAUF,EACpB,KAAKC,EACH,KAAM,IAAIrG,aAAY,iBAAmBoG,EAAO,IAElDtP,MAAKyP,KAAOF,EAAIE,KAChBzP,KAAK0P,OAASH,EAAIG,WAGlB1P,MAAKyP,KAAOE,EACZ3P,KAAK0P,OAASE,CAGhB5P,MAAKoE,MAAkBH,QAATG,EAAsBpE,KAAK6P,WAAWzL,GAAS,KAC7DpE,KAAK8P,WAAY,EAQnB,QAASvG,KACP,KAAY,KAAL9I,GAAiB,KAALA,GACjB+I,IAIJ,QAASC,GAAYhJ,GACnB,MAASA,IAAK,KAAY,KAALA,GAAkB,KAALA,EAGpC,QAASiJ,GAASjJ,GAChB,MAASA,IAAK,KAAY,KAALA,EAGvB,QAAS+I,KACPpG,IACA3C,EAAIkJ,EAAKC,OAAOxG,GAGlB,QAASyG,GAAOC,GACd1G,EAAQ0G,EACRrJ,EAAIkJ,EAAKC,OAAOxG,GAGlB,QAAS2G,KACP,GACID,GADA5I,EAAS,EAYb,IAVA4I,EAAW1G,EAEF,KAAL3C,EACF+I,IAEY,KAAL/I,IACPS,GAAUT,EACV+I,MAGGC,EAAWhJ,GAGd,MADAoJ,GAAOC,GACA,IAIT,IAAS,KAALrJ,GAGF,GAFAS,GAAUT,EACV+I,KACKE,EAAQjJ,GAGX,MADAoJ,GAAOC,GACA,SAGN,CACH,KAAOJ,EAAQjJ,IACbS,GAAUT,EACV+I,GAEO,MAAL/I,IACFS,GAAUT,EACV+I,KAGJ,KAAOE,EAAQjJ,IACbS,GAAUT,EACV+I,GAIF,IAAS,KAAL/I,GAAiB,KAALA,EAAU,CAUxB,GATAS,GAAUT,EACV+I,KAES,KAAL/I,GAAiB,KAALA,KACdS,GAAUT,EACV+I,MAIGE,EAAQjJ,GAGX,MADAoJ,GAAOC,GACA,IAGT,MAAOJ,EAAQjJ,IACbS,GAAUT,EACV+I,IAIJ,MAAOtI,GAGT,QAAS6O,KACP,GAAIC,GAAW,EAGf,KADAzG,IACO9I,GAAU,KAALA,GAAiB,KAALA,GACtBuP,GAAYvP,EACZ+I,GAGF,OAAOwG,IAAY,KAwHrB,QAASR,GAAU3I,GACjB,IAAK,GAAIyI,KAAQW,GACf,GAAIA,EAAMpL,eAAeyK,IACnBjF,EAAO6F,SAASrJ,EAAKyI,GAAQ,CAC/B,GAAIG,GAAOQ,EAAMX,GACba,EAAatJ,EAAIxB,OAASiK,EAAKjK,OAC/B+K,EAAavJ,EAAI6D,UAAU,EAAGyF,GAC9BT,EAASD,EAAKY,SAASD,EAC3B,IAAenM,SAAXyL,EAEF,OACED,KAAMA,EACNC,OAAQA,GAOlB,MAAO,MA5ST,GAwDI/F,GAAMvG,EAAO3C,EAxDbyJ,EAAOhK,EAAoB,KAE3BgB,EAASgJ,EAAKhJ,OACdmJ,EAASH,EAAKG,OACdtE,EAAWmE,EAAKhJ,OAAO6E,SACvBqE,EAAWF,EAAKG,OAAOD,QAqK3B9H,GAAKM,MAAQ,SAASiE,GAKpB,GAJA8C,EAAO9C,EACPzD,EAAQ,GACR3C,EAAI,IAEC2J,EAAST,GACZ,MAAO,KAGTH,KACAD,GACA,IACI+F,GADAlL,EAAQ2F,GAEZ,IAAI3F,EAAO,CAKT,GAJAkL,EAAOS,IAEPvG,IACAD,IACI9I,EAEF,MAAO,KAGT,IAAI2D,GAASkL,EACX,IAEE,MAAO,IAAIhN,GAAK+B,OAAOD,GAAQkL,GAEjC,MAAOgB,SAGN,CAKH,GAJAhB,EAAOS,IAEPvG,IACAD,IACI9I,EAEF,MAAO,KAGT,IAAI6O,EACF,IAEE,MAAO,IAAIhN,GAAK,KAAMgN,GAExB,MAAOgB,KAIX,MAAO,OAQThO,EAAK6H,OAAS,SAAS/F,GACrB,MAAQA,aAAiB9B,IAO3BA,EAAKR,UAAUF,MAAQ,WACrB,GAAIA,GAAQ,GAAIU,EAEhB,KAAK,GAAI5B,KAAKV,MACRA,KAAK6E,eAAenE,KACtBkB,EAAMlB,GAAKV,KAAKU,GAIpB,OAAOkB,IASTU,EAAKR,UAAU+N,WAAa,SAASzL,GACnC,OAAQA,EAAQpE,KAAKyP,KAAKc,QAAUvQ,KAAKyP,KAAKrL,MAAQpE,KAAK0P,OAAOtL,OAUpE9B,EAAKR,UAAU0O,aAAe,SAAUpM,EAAOqM,GAC7C,MAAmBxM,SAAfwM,EACKrM,EAAQpE,KAAKyP,KAAKrL,MAAQpE,KAAK0P,OAAOtL,MAAQpE,KAAKyP,KAAKc,OAGxDnM,EAAQpE,KAAKyP,KAAKrL,MAAQqM,EAAczQ,KAAKyP,KAAKc,QAwC7DjO,EAAKoO,gBAAkB,SAAUpB,GAC/B,MAA2B,OAAnBE,EAAUF,IAOpBhN,EAAKR,UAAU6I,QAAU,SAASgG,GAChC,MAAQ3Q,MAAKyP,KAAKkB,OAASA,GAQ7BrO,EAAKR,UAAU8O,UAAY,SAASxF,GAClC,MAAQpL,MAAKyP,KAAKkB,OAASvF,EAAMqE,KAAKkB,MAQxCrO,EAAKR,UAAUqJ,OAAS,SAASC,GAC/B,MAAQpL,MAAK4Q,UAAUxF,IAAUpL,KAAKoE,OAASgH,EAAMhH,OAQvD9B,EAAKR,UAAU+O,GAAK,SAAUC,GAC5B,GAAI1F,GACAhH,EAAsB,MAAdpE,KAAKoE,MAAgBpE,KAAK6P,WAAW,GAAK7P,KAAKoE,KAC3D,IAAIgG,EAAS0G,GAAgB,CAG3B,GAFA1F,EAAQ,GAAI9I,GAAK,KAAMwO,IAElB9Q,KAAK4Q,UAAUxF,GAClB,KAAM,IAAItK,OAAM,qBAKlB,OAFAsK,GAAMhH,MAAQA,EACdgH,EAAM0E,WAAY,EACX1E,EAEJ,GAAI0F,YAAyBxO,GAAM,CACtC,IAAKtC,KAAK4Q,UAAUE,GAClB,KAAM,IAAIhQ,OAAM,qBAElB,IAA4B,OAAxBgQ,EAAc1M,MAChB,KAAM,IAAItD,OAAM,wCAMlB,OAHAsK,GAAQ0F,EAAclP,QACtBwJ,EAAMhH,MAAQA,EACdgH,EAAM0E,WAAY,EACX1E,EAGP,KAAM,IAAItK,OAAM,yCASpBwB,EAAKR,UAAUgJ,SAAW,SAAUgG,GAClC,GAAI1F,GAAQpL,KAAK6Q,GAAGC,EACpB,OAAO1F,GAAMoF,aAAapF,EAAMhH,MAAOgH,EAAMsE,OAAOtL,QAQtD9B,EAAKR,UAAUyJ,SAAW,WACxB,MAAOvL,MAAKoG,UAOd9D,EAAKR,UAAUwC,QAAUhC,EAAKR,UAAUyJ,SAUxCjJ,EAAKR,UAAUsE,OAAS,SAAS/E,GAC/B,GAAI+C,GACAyC,CAEJ,IAAmB,OAAf7G,KAAKoE,OAAmBpE,KAAK8P,UAO/B1L,EAAQpE,KAAKwQ,aAAaxQ,KAAKoE,OAC/ByC,EAAsB,OAAf7G,KAAKoE,MAAmBlD,EAAOkF,OAAOhC,EAAO/C,GAAW,IAAO,GACtEwF,GAAO7G,KAAK0P,OAAOJ,KAAOtP,KAAKyP,KAAKH,SATM,CAC1C,GAAIyB,GAAa/Q,KAAKgR,aACtB5M,GAAQpE,KAAKwQ,aAAaxQ,KAAKoE,MAAO2M,EAAW3M,OACjDyC,EAAM3F,EAAOkF,OAAOhC,EAAO/C,GAAW,IACtCwF,GAAOkK,EAAWzB,KAAOtP,KAAKyP,KAAKH,KAQrC,MAAOzI,IAQTvE,EAAKR,UAAUkP,YAAc,WAK3B,GAAIC,GAAWhL,KAAKa,IAAI9G,KAAKoE,MAAQpE,KAAKyP,KAAKrL,OAC3C2M,EAAanB,EACbsB,EAAWjL,KAAKa,IAChBb,KAAKkL,IAAIF,EAAWF,EAAW3M,OAAS6B,KAAKqC,KAAO,KAEpD+H,EAAWrQ,KAAKyP,KAAKY,QACzB,KAAK,GAAI3P,KAAK2P,GACZ,GAAIA,EAASxL,eAAenE,GAAI,CAC9B,GAAIgP,GAASW,EAAS3P,EACtB,IAAIgP,EAAO0B,WAAY,CACrB,GAAI3J,GAAOxB,KAAKa,IACZb,KAAKkL,IAAIF,EAAWvB,EAAOtL,OAAS6B,KAAKqC,KAAO,IAEzC4I,GAAPzJ,IACFsJ,EAAarB,EACbwB,EAAWzJ,IAMnB,MAAOsJ,GAGT,IAAIM,IACFC,MACE,IAAKhC,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,IAEvCG,OACE,IAAKjC,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,GAErCI,IAAOlC,KAAM,KAAMlL,MAAO,GAAKgN,YAAY,GAC3CK,GAAMnC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCM,GAAMpC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCO,GAAMrC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCQ,GAAMtC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCS,GAAMvC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CU,GAAMxC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1ChJ,GAAMkH,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CW,GAAMzC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CY,GAAM1C,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAE1Ca,GAAM3C,KAAM,IAAKlL,MAAO,GAAMgN,YAAY,GAC1C3Q,GAAM6O,KAAM,IAAKlL,MAAO,IAAMgN,YAAY,GAC1C5Q,GAAM8O,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1Cc,GAAM5C,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1Ce,GAAM7C,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1C1Q,GAAM4O,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CgB,GAAM9C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CrM,GAAMuK,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CiB,GAAM/C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3C7J,GAAM+H,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,IAE7CkB,MACE,IAAKhD,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,GAErCmB,MAASjD,KAAM,OAAQlL,MAAO,GAAKgN,YAAY,GAC/CoB,OAAUlD,KAAM,QAASlL,MAAO,IAAKgN,YAAY,GACjDqB,MAASnD,KAAM,OAAQlL,MAAO,IAAKgN,YAAY,GAC/CsB,MAASpD,KAAM,OAAQlL,MAAO,IAAKgN,YAAY,GAC/CuB,MAASrD,KAAM,OAAQlL,MAAO,IAAKgN,YAAY,GAC/CwB,MAAStD,KAAM,OAAQlL,MAAO,KAAMgN,YAAY,GAChDyB,MAASvD,KAAM,OAAQlL,MAAO,KAAMgN,YAAY,GAChD0B,KAAQxD,KAAM,MAAOlL,MAAO,KAAMgN,YAAY,GAC9C2B,OAAUzD,KAAM,QAASlL,MAAO,KAAMgN,YAAY,GAClD4B,OAAU1D,KAAM,QAASlL,MAAO,KAAMgN,YAAY,GAElD6B,MAAS3D,KAAM,OAAQlL,MAAO,GAAMgN,YAAY,GAChD8B,OAAU5D,KAAM,QAASlL,MAAO,IAAMgN,YAAY,GAClD+B,OAAU7D,KAAM,QAASlL,MAAO,KAAMgN,YAAY,GAClDgC,OAAU9D,KAAM,QAASlL,MAAO,KAAMgN,YAAY,GAClDiC,MAAS/D,KAAM,OAAQlL,MAAO,KAAMgN,YAAY,GAChDkC,MAAShE,KAAM,OAAQlL,MAAO,MAAOgN,YAAY,GACjDmC,OAAUjE,KAAM,QAASlL,MAAO,MAAOgN,YAAY,GACnDoC,MAASlE,KAAM,OAAQlL,MAAO,MAAOgN,YAAY,GACjDqC,OAAUnE,KAAM,QAASlL,MAAO,MAAOgN,YAAY,GACnDsC,OAAUpE,KAAM,QAASlL,MAAO,MAAOgN,YAAY,IAErDuC,SACE,IAAKrE,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,GAErCI,IAAOlC,KAAM,KAAMlL,MAAO,IAAKgN,YAAY,GAC3CK,GAAMnC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCM,GAAMpC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCO,GAAMrC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CQ,GAAMtC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CS,GAAMvC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CU,GAAMxC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1ChJ,GAAMkH,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CW,GAAMzC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CY,GAAM1C,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAE1Ca,GAAM3C,KAAM,IAAKlL,MAAO,IAAMgN,YAAY,GAC1C3Q,GAAM6O,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1C5Q,GAAM8O,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1Cc,GAAM5C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3Ce,GAAM7C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3C1Q,GAAM4O,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CgB,GAAM9C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CrM,GAAMuK,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CiB,GAAM/C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3C7J,GAAM+H,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,IAE7CwC,OACE,IAAKtE,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,GAErCI,IAAOlC,KAAM,KAAMlL,MAAO,IAAKgN,YAAY,GAC3CK,GAAMnC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCM,GAAMpC,KAAM,IAAKlL,MAAO,IAAKgN,YAAY,GACzCO,GAAMrC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CQ,GAAMtC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CS,GAAMvC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CU,GAAMxC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1ChJ,GAAMkH,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CW,GAAMzC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CY,GAAM1C,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAE1Ca,GAAM3C,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1C3Q,GAAM6O,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1C5Q,GAAM8O,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1Cc,GAAM5C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3Ce,GAAM7C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3C1Q,GAAM4O,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CgB,GAAM9C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CrM,GAAMuK,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3CiB,GAAM/C,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,GAC3C7J,GAAM+H,KAAM,IAAKlL,MAAO,MAAOgN,YAAY,IAE7CyC,cACE,IAAKvE,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,GACrCM,GAAMpC,KAAM,IAAKlL,MAAO,KAAMgN,YAAY,GAC1CO,GAAMrC,KAAM,IAAKlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACvDQ,GAAMtC,KAAM,IAAKlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACvDS,GAAMvC,KAAM,IAAKlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACvDU,GAAMxC,KAAM,IAAKlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACvDhJ,GAAMkH,KAAM,IAAKlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACvDW,GAAMzC,KAAM,IAAKlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACvDY,GAAM1C,KAAM,IAAKlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAEvD2C,IAAOzE,KAAM,KAAMlL,MAAO,KAAMgN,YAAY,GAC5C4C,IAAO1E,KAAM,KAAMlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACzD6C,IAAO3E,KAAM,KAAMlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACzD8C,IAAO5E,KAAM,KAAMlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACzD+C,IAAO7E,KAAM,KAAMlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACzDgD,IAAO9E,KAAM,KAAMlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACzDiD,IAAO/E,KAAM,KAAMlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GACzDkD,IAAOhF,KAAM,KAAMlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,IAE3DmD,aACE,IAAKjF,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,GACrCqB,MAASnD,KAAM,OAAQlL,MAAO,KAAMgN,YAAY,GAChDsB,MAASpD,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7DuB,MAASrD,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7DwB,MAAStD,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7DyB,MAASvD,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7D0B,KAAQxD,KAAM,MAAOlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC3D2B,OAAUzD,KAAM,QAASlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC/D4B,OAAU1D,KAAM,QAASlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAE/DoD,MAASlF,KAAM,OAAQlL,MAAO,KAAMgN,YAAY,GAChDqD,MAASnF,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7DsD,MAASpF,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7DuD,MAASrF,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7DwD,MAAStF,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7DyD,KAAQvF,KAAM,MAAOlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC3D0D,MAASxF,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,GAC7D2D,MAASzF,KAAM,OAAQlL,MAAO6B,KAAK6N,IAAI,KAAM,GAAI1C,YAAY,KAI7DxB,GAAeN,KAAM,GAAIlL,MAAO,EAAGgN,YAAY,GAE/CxG,GACF0G,QAEA0D,UACAC,QACAC,QACAC,WACAC,eACAC,sBACAC,uBAEAC,SACAC,WACAC,UACA5K,SACA6K,QAGEC,KAEAhG,GAAaL,KAAM,GAAIqB,KAAMgF,EAAgBvR,MAAO,EAAGmM,OAAQ,GAE/DN,GAEF2F,OAAQtG,KAAM,QAASqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASiB,KAAMlO,MAAO,EAAGmM,OAAQ,GAC3FsF,MAAOvG,KAAM,OAAQqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,MAAQmM,OAAQ,GAC9FuF,MAAOxG,KAAM,OAAQqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,MAAQmM,OAAQ,GAC9FwF,MAAOzG,KAAM,OAAQqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,MAAQmM,OAAQ,GAC9FyF,MAAO1G,KAAM,OAAQqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,SAAUmM,OAAQ,GAChG0F,MAAO3G,KAAM,OAAQqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,QAAUmM,OAAQ,GAChG2F,KAAM5G,KAAM,MAAOqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,QAAUmM,OAAQ,GAC9F4F,OAAQ7G,KAAM,QAASqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,QAASmM,OAAQ,GACjG6F,UAAW9G,KAAM,WAAYqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,MAAOmM,OAAQ,GAErG/P,GAAI8O,KAAM,IAAKqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASE,MAAOnN,MAAO,EAAGmM,OAAQ,GACpF8F,MAAO/G,KAAM,KAAMqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,MAAQmM,OAAQ,GAC5F+F,IAAKhH,KAAM,KAAMqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,MAAQmM,OAAQ,GAC1FgG,IAAKjH,KAAM,KAAMqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,MAAQmM,OAAQ,GAC1FiG,IAAKlH,KAAM,KAAMqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,SAAUmM,OAAQ,GAC5FkG,IAAKnH,KAAM,KAAMqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,QAAUmM,OAAQ,GAC5FmG,IAAKpH,KAAM,KAAMqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,QAAUmM,OAAQ,GAC5FoG,IAAKrH,KAAM,KAAMqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,QAASmM,OAAQ,GAC3FqG,KAAMtH,KAAM,MAAOqB,KAAM/F,EAAWoK,OAAQ3E,SAAUgB,EAASC,KAAMlN,MAAO,OAAWmM,OAAQ,GAG/FsG,IAAKvH,KAAM,KAAMqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASsC,QAASvP,MAAO,EAAGmM,OAAQ,GACzFuG,MAAOxH,KAAM,OAAQqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASC,KAAMlN,MAAO,SAAYmM,OAAQ,GACnGwG,MAAOzH,KAAM,OAAQqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASC,KAAMlN,MAAO,UAAYmM,OAAQ,GACnGyG,MAAO1H,KAAM,OAAQqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASC,KAAMlN,MAAO,UAAYmM,OAAQ,GACnG0G,MAAO3H,KAAM,OAAQqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASC,KAAMlN,MAAO,eAAgBmM,OAAQ,GACvG2G,MAAO5H,KAAM,OAAQqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASC,KAAMlN,MAAO,SAAUmM,OAAQ,GACjG4G,MAAO7H,KAAM,OAAQqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASC,KAAMlN,MAAO,SAAUmM,OAAQ,GACjG6G,OAAQ9H,KAAM,QAASqB,KAAM/F,EAAW4K,QAASnF,SAAUgB,EAASC,KAAMlN,MAAO,WAAYmM,OAAQ,GAGrG8G,IAAK/H,KAAM,KAAMqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASuC,MAAOxP,MAAO,EAAGmM,OAAQ,GACtF+G,GAAIhI,KAAM,IAAKqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASE,MAAOnN,MAAO,KAAOmM,OAAQ,GACxFgH,GAAIjI,KAAM,IAAKqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASE,MAAOnN,MAAO,KAAOmM,OAAQ,GACxFiH,OAAQlI,KAAM,QAASqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASiB,KAAMlO,MAAO,KAAOmM,OAAQ,GAC/FkH,MAAOnI,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,aAAcmM,OAAQ,GACpGmH,MAAOpI,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,cAAgBmM,OAAQ,GACtGoH,MAAOrI,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,cAAgBmM,OAAQ,GACtGqH,UAAWtI,KAAM,WAAYqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,KAAUmM,OAAQ,GACxGsH,YAAavI,KAAM,aAAcqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,MAAUmM,OAAQ,GAE5GuH,MAAOxI,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,KAAMmM,OAAQ,GAC5FwH,KAAMzI,KAAM,MAAOqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,KAAMmM,OAAQ,GAG1FyH,OAAQ1I,KAAM,QAASqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAkBmM,OAAQ,GAC1G0H,WAAY3I,KAAM,YAAaqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,aAAiBmM,OAAQ,GACjH2H,YAAa5I,KAAM,aAAcqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAemM,OAAQ,GACjH4H,MAAO7I,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GACpG6H,IAAK9I,KAAM,KAAMqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,KAAMmM,OAAQ,GACxF8H,KAAM/I,KAAM,MAAOqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GAClG+H,MAAOhJ,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GACpGgI,OAAQjJ,KAAM,QAASqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GACtGiI,QAASlJ,KAAM,SAAUqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,WAAamM,OAAQ,GACvGkI,YAAanJ,KAAM,aAAcqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,SAAWmM,OAAQ,GAC7GmI,WAAYpJ,KAAM,YAAaqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,SAAWmM,OAAQ,GAC3GoI,UAAWrJ,KAAM,WAAYqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,QAAWmM,OAAQ,GAGzGqI,MAAOtJ,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,aAAiBmM,OAAQ,GACvGsI,MAAOvJ,KAAM,OAAQqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAemM,OAAQ,GACrGuI,IAAKxJ,KAAM,KAAMqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GAChGwI,IAAKzJ,KAAM,KAAMqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GAChGyI,IAAK1J,KAAM,KAAMqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GAChG0I,IAAK3J,KAAM,KAAMqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,YAAcmM,OAAQ,GAChG2I,KAAM5J,KAAM,MAAOqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,WAAamM,OAAQ,GACjG4I,KAAM7J,KAAM,MAAOqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,SAAWmM,OAAQ,GAC/F6I,KAAM9J,KAAM,MAAOqB,KAAM/F,EAAW6K,OAAQpF,SAAUgB,EAASC,KAAMlN,MAAO,SAAWmM,OAAQ,GAI/F8I,GAAI/J,KAAM,IAAKqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASE,MAAOnN,MAAO,KAAOmM,OAAQ,GACtF+I,MAAOhK,KAAM,OAAQqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASiB,KAAMlO,MAAO,KAAOmM,OAAQ,GAE3FgJ,KAAMjK,KAAM,MAAOqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASE,MAAOnN,MAAO,UAAWmM,OAAQ,GAC9FiJ,OAAQlK,KAAM,QAASqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASE,MAAOnN,MAAO,IAAMmM,OAAQ,GAE7FkJ,OAAQnK,KAAM,QAASqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,YAAamM,OAAQ,GACnGmJ,MAAOpK,KAAM,OAAQqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,kBAAoBmM,OAAQ,GACxGoJ,OAAQrK,KAAM,QAASqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,cAAiBmM,OAAQ,GACvGqJ,WAAYtK,KAAM,YAAaqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,UAAcmM,OAAQ,GAC5GsJ,eAAgBvK,KAAM,gBAAiBqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,UAAWmM,OAAQ,GACjHuJ,OAAQxK,KAAM,QAASqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,KAAQmM,OAAQ,GAE9FwJ,IAAKzK,KAAM,KAAMqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,YAAamM,OAAQ,GAC7FyJ,IAAK1K,KAAM,KAAMqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,kBAAoBmM,OAAQ,GACpG0J,IAAK3K,KAAM,KAAMqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,cAAiBmM,OAAQ,GACjG2J,KAAM5K,KAAM,MAAOqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,UAAcmM,OAAQ,GAChG4J,KAAM7K,KAAM,MAAOqB,KAAM/F,EAAWqK,KAAM5E,SAAUgB,EAASC,KAAMlN,MAAO,UAAWmM,OAAQ,GAG7F6J,GAAI9K,KAAM,IAAKqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASE,MAAOnN,MAAO,EAAGmM,OAAQ,GAClF/M,KAAM8L,KAAM,MAAOqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASC,KAAMlN,MAAO,GAAImM,OAAQ,GACtFkB,GAAInC,KAAM,IAAKqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASC,KAAMlN,MAAO,KAAMmM,OAAQ,GACpF9F,QAAS6E,KAAM,SAAUqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASiB,KAAMlO,MAAO,EAAGmM,OAAQ,GAC3F8J,KAAM/K,KAAM,MAAOqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASiB,KAAMlO,MAAO,EAAGmM,OAAQ,GACrF+J,QAAShL,KAAM,SAAUqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASC,KAAMlN,MAAO,GAAImM,OAAQ,GAC5FgK,MAAOjL,KAAM,OAAQqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASC,KAAMlN,MAAO,KAAMmM,OAAQ,GAC1FiK,KAAMlL,KAAM,MAAOqB,KAAM/F,EAAWsK,KAAM7E,SAAUgB,EAASC,KAAMlN,MAAO,MAAOmM,OAAQ,GAGzFkK,KAAMnL,KAAM,MAAOqB,KAAM/F,EAAWC,MAAOwF,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,GAEtFmK,KAAMpL,KAAM,MAAOqB,KAAM/F,EAAWC,MAAOwF,SAAUgB,EAASC,KAAMlN,MAAO,oBAAqCmM,OAAQ,GAExHoK,MAAOrL,KAAM,OAAQqB,KAAM/F,EAAWC,MAAOwF,SAAUgB,EAASC,KAAMlN,MAAO,oBAAqCmM,OAAQ,GAE1HqK,OAAQtL,KAAM,QAASqB,KAAM/F,EAAWC,MAAOwF,SAAUgB,EAASC,KAAMlN,MAAO,kBAAmCmM,OAAQ,GAG1HsK,GAAIvL,KAAM,IAAKqB,KAAM/F,EAAWuK,QAAS9E,SAAUgB,EAASE,MAAOnN,MAAO,EAAGmM,OAAQ,GACrFuK,QAASxL,KAAM,SAAUqB,KAAM/F,EAAWuK,QAAS9E,SAAUgB,EAASiB,KAAMlO,MAAO,EAAGmM,OAAQ,GAM9FwK,GAAIzL,KAAM,IAAKqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,GACxFyK,MAAO1L,KAAM,OAAQqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,QAC9F0K,MAAO3L,KAAM,OAAQqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAE,IAAKmM,OAAQ,QAClG2K,MAAO5L,KAAM,OAAQqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAE,IAAKmM,OAAQ,GAClG4K,QAAS7L,KAAM,SAAUqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,GAClG6K,SAAU9L,KAAM,UAAWqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,QACpG8K,YAAa/L,KAAM,aAAcqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAE,IAAKmM,OAAQ,QAC9G+K,SAAUhM,KAAM,UAAWqB,KAAM/F,EAAWwK,YAAa/E,SAAUgB,EAASC,KAAMlN,MAAO,EAAE,IAAKmM,OAAQ,GAGxGgL,KAAMjM,KAAM,MAAOqB,KAAM/F,EAAW0K,oBAAqBjF,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,GACpGiL,MAAOlM,KAAM,OAAQqB,KAAM/F,EAAW0K,oBAAqBjF,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,GAGtGkL,IAAKnM,KAAM,KAAMqB,KAAM/F,EAAWyK,mBAAoBhF,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,GACjGmL,SAAUpM,KAAM,UAAWqB,KAAM/F,EAAWyK,mBAAoBhF,SAAUgB,EAASC,KAAMlN,MAAO,EAAGmM,OAAQ,GAM3GoL,GAAIrM,KAAM,IAAKqB,KAAM/F,EAAW2K,MAAOlF,SAAUgB,EAASE,MAAOnN,MAAO,EAAGmM,OAAQ,GACnFqL,QAAStM,KAAM,SAAUqB,KAAM/F,EAAW2K,MAAOlF,SAAUgB,EAASiB,KAAMlO,MAAO,EAAGmM,OAAQ,GAC5FsL,KAAMvM,KAAM,MAAOqB,KAAM/F,EAAW2K,MAAOlF,SAAUgB,EAASC,KAAMlN,MAAO,gBAAiBmM,OAAQ,GACpGuL,YAAaxM,KAAM,aAAcqB,KAAM/F,EAAW2K,MAAOlF,SAAUgB,EAASC,KAAMlN,MAAO,gBAAiBmM,OAAQ,GAGlHvL,GAAIsK,KAAM,IAAKqB,KAAM/F,EAAW8K,IAAKrF,SAAUgB,EAASwC,aAAczP,MAAO,EAAGmM,OAAQ,GACxFwL,MAAOzM,KAAM,OAAQqB,KAAM/F,EAAW8K,IAAKrF,SAAUgB,EAASkD,YAAanQ,MAAO,EAAGmM,OAAQ,GAC7FyL,GAAI1M,KAAM,IAAKqB,KAAM/F,EAAW8K,IAAKrF,SAAUgB,EAASwC,aAAczP,MAAO,EAAGmM,OAAQ,GACxF0L,OAAQ3M,KAAM,QAASqB,KAAM/F,EAAW8K,IAAKrF,SAAUgB,EAASkD,YAAanQ,MAAO,EAAGmM,OAAQ,IAI7F2L,GACFC,OAAQ,QACRC,OAAQ,OACRC,KAAM,OACNC,MAAO,OACPC,MAAO,OACPC,MAAO,OACPC,KAAM,MACNC,OAAQ,QACRC,UAAW,WAEXC,OAAQ,QACRC,UAAW,WACXC,YAAa,aACbC,OAAQ,QACRC,WAAY,YACZC,YAAa,aACbC,MAAO,OACPC,KAAM,MACNC,MAAO,OACPC,OAAQ,QACRC,QAAS,SACTC,YAAa,aACbC,WAAY,YACZC,UAAW,WACXC,KAAM,MAENC,MAAO,OACPC,KAAM,MACNC,OAAQ,QACRC,OAAQ,QACRC,MAAO,OACPC,OAAQ,QACRC,YAAa,YACbC,eAAgB,gBAChBC,OAAQ,QAERC,QAAS,SACTC,QAAS,SACTC,MAAO,OACPC,KAAM,MAENC,QAAS,MACTC,QAAS,MACTC,UAAW,OACXC,OAAQ,QAERC,QAAS,SACTC,MAAO,OAGT;IAAK,GAAIvP,KAAQ4M,GAEf,GAAIA,EAAQrX,eAAeyK,GAAO,CAChC,GAAIG,GAAOQ,EAAMiM,EAAQ5M,IACrBwP,EAASje,OAAOF,OAAO8O,EAC3BqP,GAAOxP,KAAOA,EACdW,EAAMX,GAAQwP,EAKlB7O,EAAM8O,GAAK9O,EAAMsH,EACjBtH,EAAM+O,MAAQ/O,EAAMuH,MACpBvH,EAAMgP,OAAShP,EAAM2M,OACrB3M,EAAMiP,GAAKjP,EAAMiK,IACjBjK,EAAMkP,IAAMlP,EAAMiK,IAGlB5X,EAAK+O,SAAWA,EAChB/O,EAAKsI,WAAaA,EAClBtI,EAAK2N,MAAQA,EAMbpQ,EAAOD,QAAU0C,GAKZ,SAASzC,EAAQD,EAASM,GAE/B,YAiBA,SAASqC,GAAMxB,EAAMqe,GACnB,KAAMpf,eAAgBuC,IACpB,KAAM,IAAI2G,aAAY,mDAKxBlJ,MAAKe,KAAOA,EACZf,KAAKof,IAAMA,EAvBb,GAAIlV,GAAOhK,EAAoB,KAC3BoB,EAAS4I,EAAK5I,OACd+I,EAASH,EAAKG,MA6BlB9H,GAAK8c,OAAS,SAAUjb,GACtB,MAAQA,aAAiB7B,IAQ3BA,EAAKT,UAAUyJ,SAAW,WACxB,GAAI6T,GAAMpf,KAAKof,QACXE,EAAO,IAcX,IAZIF,EAAI9P,OACNgQ,GAAQ,SAAWF,EAAI9P,KAAO,QAE5B8P,EAAIG,WACND,GAAQ,aAAeF,EAAIG,SAAW,QAEpCH,EAAII,cACNF,GAAQ,qBAAuBF,EAAII,YAAc,QAE/CJ,EAAIK,SACNH,GAAQ,gBAAkBF,EAAIK,OAAOnS,KAAK,UAAY,QAEpD8R,EAAIM,SAAU,CAChB,GAAIC,GAAS3f,KAAKe,KAAK4e,QACvBL,IAAQ,aACR,KAAK,GAAIna,GAAI,EAAGA,EAAIia,EAAIM,SAASra,OAAQF,IAAK,CAC5C,GACIoK,GADAqQ,EAAOR,EAAIM,SAASva,EAExB,KACEoK,EAAMoQ,EAAOE,KAAKD,GAEpB,MAAOpa,GACL+J,EAAM/J,EAER8Z,GAAQ,OAASM,EAAO,KACZ3b,SAARsL,GAAuBA,YAAehN,KACxC+c,GAAQ,WAAajV,EAAOjE,OAAOmJ,GAAMpO,UAAW,KAAO,MAG/Dme,GAAQ,KAMV,MAJIF,GAAIU,UACNR,GAAQ,aAAeF,EAAIU,QAAQxS,KAAK,MAAQ,MAG3CgS,GAQT/c,EAAKT,UAAUie,OAAS,WACtB,MAAOze,GAAOM,MAAM5B,KAAKof,MAM3B7c,EAAKT,UAAUwC,QAAU/B,EAAKT,UAAUyJ,SAGxC1L,EAAOD,QAAU2C,GAKZ,SAAS1C,GAEd,YAOA,SAAS2C,GAAUwd,GACjB,KAAMhgB,eAAgBwC,IACpB,KAAM,IAAI0G,aAAY,mDAGxBlJ,MAAKggB,QAAUA,MAOjBxd,EAAUV,UAAUwC,QAAU,WAC5B,MAAOtE,MAAKggB,SAOdxd,EAAUV,UAAUyJ,SAAW,WAC7B,MAAO,IAAMvL,KAAKggB,QAAQ1S,KAAK,MAAQ,KAGzCzN,EAAOD,QAAU4C,GAKZ,SAAS3C,EAAQD,EAASM,GAG/B,YA6LA,SAAS+f,GAAQC,EAAKhT,EAAKb,GACzB,GAAIlH,GAAGgb,EAAKC,EAAKC,CAElB,IAAQ,GAALnT,EAAO,CACT,GAAK/I,EAAQ+b,EAAI,IAMZ,CAGJ,IAFAG,EAAOC,EAAQJ,GACfC,KACIhb,EAAE,EAAGA,EAAEkb,EAAKhb,OAAQF,IACvBgb,EAAIhb,GAAK8a,EAAQI,EAAKlb,GAAI+H,EAAI,EAAGb,EAElC,OAAO8T,GAVP,IADAC,EAAMF,EAAI,GACN/a,EAAE,EAAGA,EAAE+a,EAAI7a,OAAQF,IACtBib,EAAM/T,EAAS+T,EAAKF,EAAI/a,GAEzB,OAAOib,GAWR,IADAD,KACIhb,EAAE,EAAGA,EAAE+a,EAAI7a,OAAQF,IACtBgb,EAAIhb,GAAK8a,EAAQC,EAAI/a,GAAI+H,EAAI,EAAGb,EAEjC,OAAO8T,GAUT,QAASG,GAAQJ,GACf,GAEI/a,GAAGob,EAFHC,EAAIN,EAAI7a,OACRob,EAAIP,EAAI,GAAG7a,OAEX8a,IACJ,KAAKI,EAAE,EAAKE,EAAFF,EAAKA,IAAK,CAClB,GAAIG,KACJ,KAAKvb,EAAE,EAAKqb,EAAFrb,EAAKA,IACbub,EAAI/T,KAAKuT,EAAI/a,GAAGob,GAElBJ,GAAIxT,KAAK+T,GAEX,MAAOP,GAxOT,CAAA,GAAIjW,GAAOhK,EAAoB,KAE3B4I,EAAa5I,EAAoB,KACjC2I,EAAiB3I,EAAoB,KAErCmC,EAASnC,EAAoB,GAE7ByL,EAAQzB,EAAKyB,MACbxH,EAAU+F,EAAKyB,MAAMxH,OACV+F,GAAKG,OAAOD,SAY3BxK,EAAQ+gB,YAAc,SAAS/U,GAC7B,GAAmB,GAAfA,EAAKvG,OAEP,QAEG,IAAmB,GAAfuG,EAAKvG,OAAa,CAGzB,GAAIsG,GAAQC,EAAK,EAOjB,OANID,aAAiBtJ,KACnBsJ,EAAQA,EAAMrH,WAEXH,EAAQwH,KACXA,GAASA,IAEJA,EAIP,MAAOzB,GAAKyB,MAAMgV,YAAY/U,IAUlChM,EAAQghB,aAAe,SAAS5c,GAC9B,MAAQG,GAAQH,IAAOA,YAAa3B,IAatCzC,EAAQihB,QAAU,QAASA,GAAQlV,EAAOU,GACxC,MAAIV,IAA+B,kBAAdA,GAAMtI,IAClBsI,EAAMtI,IAAI,SAAUW,GACzB,MAAO6c,GAAQ7c,EAAGqI,KAIbA,EAASV,IAepB/L,EAAQkhB,SAAW,QAASA,GAASC,EAAQC,EAAQ3U,GACnD,GAAIkD,GAAKnK,EAAKD,CAEd,IAAIhB,EAAQ4c,GACV,GAAI5c,EAAQ6c,GAAS,CAEnB,GAAID,EAAO1b,QAAU2b,EAAO3b,OAC1B,KAAM,IAAIwD,GAAekY,EAAO1b,OAAQ2b,EAAO3b,OAKjD,KAFAkK,KACAnK,EAAM2b,EAAO1b,OACRF,EAAI,EAAOC,EAAJD,EAASA,IACnBoK,EAAIpK,GAAK2b,EAASC,EAAO5b,GAAI6b,EAAO7b,GAAIkH,OAGvC,CAAA,GAAI2U,YAAkB3e,GAGzB,MADAkN,GAAMuR,EAASC,EAAQC,EAAO1c,UAAW+H,GAClC,GAAIhK,GAAOkN,EAMlB,KAFAA,KACAnK,EAAM2b,EAAO1b,OACRF,EAAI,EAAOC,EAAJD,EAASA,IACnBoK,EAAIpK,GAAK2b,EAASC,EAAO5b,GAAI6b,EAAQ3U,OAItC,CAAA,GAAI0U,YAAkB1e,GACzB,MAAI2e,aAAkB3e,IAEpBkN,EAAMuR,EAASC,EAAOzc,UAAW0c,EAAO1c,UAAW+H,GAC5C,GAAIhK,GAAOkN,KAKlBA,EAAMuR,EAASC,EAAOzc,UAAW0c,EAAQ3U,GAClC,GAAIhK,GAAOkN,GAIpB,IAAIpL,EAAQ6c,GAIV,IAFAzR,KACAnK,EAAM4b,EAAO3b,OACRF,EAAI,EAAOC,EAAJD,EAASA,IACnBoK,EAAIpK,GAAK2b,EAASC,EAAQC,EAAO7b,GAAIkH,OAGpC,CAAA,GAAI2U,YAAkB3e,GAGzB,MADAkN,GAAMuR,EAASC,EAAQC,EAAO1c,UAAW+H,GAClC,GAAIhK,GAAOkN,EAIlBA,GAAMlD,EAAS0U,EAAQC,IAI3B,MAAOzR,IAYT3P,EAAQqhB,OAAS,SAASf,EAAKhT,EAAKb,GAClC,GAAIF,GAAOhI,EAAQ+b,GAAOvU,EAAMQ,KAAK+T,GAAOA,EAAI/T,MAChD,IAAU,EAANe,EAEF,KAAM,IAAIpE,GAAWoE,EAEvB,IAAIA,GAAOf,EAAK9G,OAEd,KAAM,IAAIyD,GAAWoE,EAAKf,EAAK9G,OAGlC,OAAI6a,aAAe7d,GACX,GAAIA,GAAO4d,EAAQC,EAAI5b,UAAW4I,EAAKb,IAEvC4T,EAAQC,EAAKhT,EAAKb,IAmE3BzM,EAAQshB,YAAc,QAASA,GAAavV,EAAOU,GAC7CV,YAAiBtJ,KACnBsJ,EAAQA,EAAMrH,UAGhB,KAAK,GAAIa,GAAI,EAAGuH,EAAKf,EAAMtG,OAAYqH,EAAJvH,EAAQA,IAAK,CAC9C,GAAIf,GAAQuH,EAAMxG,EAEdhB,GAAQC,GACV8c,EAAY9c,EAAOiI,GAGnBA,EAASjI,MAQV,SAASvE,EAAQD,EAASM,GAE/B,YAEAN,GAAQuhB,UAAYjhB,EAAoB,KACxCN,EAAQwhB,eAAiBlhB,EAAoB,KAC7CN,EAAQyhB,UAAYnhB,EAAoB,KACxCN,EAAQ0hB,gBAAkBphB,EAAoB,KAC9CN,EAAQ2hB,aAAerhB,EAAoB,KAC3CN,EAAQ4hB,UAAYthB,EAAoB,KACxCN,EAAQ6hB,uBAAyBvhB,EAAoB,KACrDN,EAAQ8hB,aAAexhB,EAAoB,KAC3CN,EAAQ+hB,KAAOzhB,EAAoB,KACnCN,EAAQgiB,aAAe1hB,EAAoB,KAC3CN,EAAQiiB,UAAY3hB,EAAoB,KACxCN,EAAQkiB,WAAa5hB,EAAoB,KACzCN,EAAQmiB,WAAa7hB,EAAoB,MAKpC,SAASL,EAAQD,EAASM,GAE/B,YA8DA,SAAS0C,GAAOgd,EAAMve,GACpB,GAAwB,GAApB8F,UAAU9B,QAAmC,GAApB8B,UAAU9B,OACrC,KAAM,IAAIuD,GAAe,QAASzB,UAAU9B,OAAQ,EAAG,EAMzD,IAFA2c,GAAe3gB,GAAWA,EAAQ4gB,MAAS5gB,EAAQ4gB,SAE/C7X,EAASwV,GAGX,MADAld,IAAakd,EACNsC,GAEJ,IAAI/d,EAAQyb,IAASA,YAAgBvd,GAExC,MAAOI,GAAWoe,QAAQjB,EAAM,SAAU5Q,GACxC,IAAK5E,EAAS4E,GAAO,KAAM,IAAIrK,WAAU,kBAGzC,OADAjC,IAAasM,EACNkT,KAKT,MAAM,IAAIvd,WAAU,6BAgFxB,QAAS4F,KACPnH,GAAQ,EACR3C,GAAIiC,GAAWkH,OAAO,GACtBuY,GAAgB,EAChBC,GAAoB,KAStB,QAAS5Y,KACPpG,KACA3C,GAAIiC,GAAWkH,OAAOxG,IAQxB,QAASif,KACP,MAAO3f,IAAWkH,OAAOxG,GAAQ,GAQnC,QAASkf,KACP,MAAO5f,IAAWkH,OAAOxG,GAAQ,GAQnC,QAASmf,KAMP,IALAC,GAAaC,GAAUC,KACvBC,GAAQ,GAII,KAALliB,IAAiB,KAALA,IAAmB,MAALA,IAAa0hB,IAE5C3Y,GAIF,IAAS,KAAL/I,GACF,KAAY,MAALA,IAAkB,IAALA,IAClB+I,GAKJ,IAAS,IAAL/I,GAGF,YADA+hB,GAAaC,GAAUG,UAKzB,IAAS,MAALniB,KAAc0hB,GAIhB,MAHAK,IAAaC,GAAUG,UACvBD,GAAQliB,OACR+I,IAKF,IAAIqZ,GAAKpiB,GAAI4hB,IACTS,EAAKD,EAAKP,GACd,IAAiB,GAAbQ,EAAGzd,QAAe0d,GAAWD,GAM/B,MALAN,IAAaC,GAAUG,UACvBD,GAAQG,EACRtZ,IACAA,QACAA,IAKF,IAAiB,GAAbqZ,EAAGxd,QAAe0d,GAAWF,GAK/B,MAJAL,IAAaC,GAAUG,UACvBD,GAAQE,EACRrZ,QACAA,IAKF,IAAIuZ,GAAWtiB,IAIb,MAHA+hB,IAAaC,GAAUG,UACvBD,GAAQliB,OACR+I,IAKF,KAAIC,EAAWhJ,IAAf,CAuDA,GAAIuiB,EAAQviB,IAAI,CACd,KAAOuiB,EAAQviB,KAAMiJ,EAAQjJ,KAC3BkiB,IAASliB,GACT+I,GAUF,aANEgZ,GADES,GAAiBN,IACNF,GAAUG,UAGVH,GAAUS,QAQ3B,IADAV,GAAaC,GAAUU,QACX,IAAL1iB,IACLkiB,IAASliB,GACT+I,GAEF,MAAM4Z,GAAkB,yBAA2BT,GAAQ,KAzEzD,GAHAH,GAAaC,GAAUY,OAGd,KAAL5iB,GACFkiB,IAASliB,GACT+I,IAEKE,EAAQjJ,MAEX+hB,GAAaC,GAAUU,aAGtB,CACH,KAAOzZ,EAAQjJ,KACbkiB,IAASliB,GACT+I,GAEO,MAAL/I,KACFkiB,IAASliB,GACT+I,KAGJ,KAAOE,EAAQjJ,KACbkiB,IAASliB,GACT+I,GAKF,IADAqZ,EAAKR,KACK,KAAL5hB,IAAiB,KAALA,MAAciJ,EAAQmZ,IAAa,KAANA,GAAmB,KAANA,GAezD,IAdAF,IAASliB,GACT+I,KAES,KAAL/I,IAAiB,KAALA,MACdkiB,IAASliB,GACT+I,KAIGE,EAAQjJ,MAEX+hB,GAAaC,GAAUU,SAGlBzZ,EAAQjJ,KACbkiB,IAASliB,GACT+I,IAoCR,QAAS8Z,KACP,EACEf,WAEc,MAATI,IAOT,QAASY,KACPpB,KAOF,QAASqB,KACPrB,KAUF,QAASa,GAASviB,GAChB,MAASA,IAAK,KAAY,KAALA,GAChBA,GAAK,KAAY,KAALA,GACR,KAALA,EASN,QAASgJ,GAAYhJ,GACnB,MAASA,IAAK,KAAY,KAALA,GACZ,KAALA,EASN,QAASiJ,GAASjJ,GAChB,MAASA,IAAK,KAAY,KAALA,EAQvB,QAASyhB,KAEP3X,IAEAgY,GAEA,IAAI5f,GAAO8gB,GAIX,IAAa,IAATd,GACF,KAAIH,KAAcC,GAAUG,UAIpBc,EAAY,uBAAyBf,IAGrCS,EAAkB,oBAAsBT,GAAQ,IAI1D,OAAOhgB,GAUT,QAAS8gB,KACP,GAAI9gB,GAEAghB,EADAC,IAGJ,IAAa,IAATjB,GAEF,MAAO,IAAIpB,IAAa,YAAa,YAQvC,KALa,MAAToB,IAA0B,KAATA,KACnBhgB,EAAOkhB,KAIO,MAATlB,IAA0B,KAATA,IACD,GAAjBiB,EAAOve,QAAe1C,IACxBghB,EAAoB,KAAThB,GACXiB,EAAOjX,MACLhK,KAAMA,EACNghB,QAASA,KAIbpB,IACa,MAATI,IAA0B,KAATA,IAAyB,IAATA,KACnChgB,EAAOkhB,IAEPF,EAAoB,KAAThB,GACXiB,EAAOjX,MACLhK,KAAMA,EACNghB,QAASA,IAKf,OAAIC,GAAOve,OAAS,EACX,GAAIgc,IAAUuC,GAGdjhB,EASX,QAASkhB,KAEP,GAAIrB,IAAcC,GAAUS,QAAmB,YAATP,GACpC,KAAMS,GAAkB,8FAI1B,OAAOU,KAST,QAASA,KACP,GAAIxU,GAAM1D,EAAMgU,EAAMmE,EAElBphB,EAAOqhB,GAEX,IAAa,KAATrB,GAAc,CAChB,GAAIhgB,YAAgBmf,IAKlB,MAHAxS,GAAO3M,EAAK2M,KACZgU,IACA1D,EAAOkE,IACA,GAAI1C,IAAe9R,EAAMsQ,EAE7B,IAAIjd,YAAgB6e,IAIvB,MAFA8B,KACA1D,EAAOkE,IACA,GAAI/B,IAAWpf,EAAMid,EAEzB,IAAIjd,YAAgB+e,MAEvBqC,GAAQ,EACRnY,KAEA0D,EAAO3M,EAAK2M,KACZ3M,EAAKiJ,KAAKzI,QAAQ,SAAUgG,EAAK/F,GAC3B+F,YAAe2Y,IACjBlW,EAAKxI,GAAS+F,EAAImG,KAGlByU,GAAQ,IAIRA,GAGF,MAFAT,KACA1D,EAAOkE,IACA,GAAIrC,IAAuBnS,EAAM1D,EAAMgU,EAIlD,MAAMwD,GAAkB,mDAG1B,MAAOzgB,GAaT,QAASqhB,KAGP,IAFA,GAAIrhB,GAAOshB,IAEK,KAATtB,IAAc,CAGnB,GAAIuB,GAAO9B,EACXA,IAAoBD,GACpBmB,GAEA,IAAIa,GAAYxhB,EACZyhB,EAAWH,GAEf,IAAa,KAATtB,GAAc,KAAMS,GAAkB,gDAE1ChB,IAAoB,KACpBkB,GAEA,IAAIe,GAAYL,GAEhBrhB,GAAO,GAAI2e,IAAgB6C,EAAWC,EAAUC,GAGhDjC,GAAoB8B,EAGtB,MAAOvhB,GAQT,QAASshB,KAGP,IAFA,GAAIthB,GAAO2hB,IAEK,MAAT3B,IACLW,IACA3gB,EAAO,GAAIif,IAAa,KAAM,MAAOjf,EAAM2hB,KAG7C,OAAO3hB,GAQT,QAAS2hB,KAGP,IAFA,GAAI3hB,GAAO4hB,IAEK,OAAT5B,IACLW,IACA3gB,EAAO,GAAIif,IAAa,MAAO,OAAQjf,EAAM4hB,KAG/C,OAAO5hB,GAQT,QAAS4hB,KAGP,IAFA,GAAI5hB,GAAO6hB,IAEK,OAAT7B,IACLW,IACA3gB,EAAO,GAAIif,IAAa,MAAO,OAAQjf,EAAM6hB,KAG/C,OAAO7hB,GAQT,QAAS6hB,KAGP,IAFA,GAAI7hB,GAAO8hB,IAEK,KAAT9B,IACLW,IACA3gB,EAAO,GAAIif,IAAa,IAAK,SAAUjf,EAAM8hB,KAG/C,OAAO9hB,GAQT,QAAS8hB,KAGP,IAFA,GAAI9hB,GAAO+hB,IAEK,MAAT/B,IACLW,IACA3gB,EAAO,GAAIif,IAAa,KAAM,UAAWjf,EAAM+hB,KAGjD,OAAO/hB,GAQT,QAAS+hB,KAGP,IAFA,GAAI/hB,GAAOgiB,IAEK,KAAThC,IACLW,IACA3gB,EAAO,GAAIif,IAAa,IAAK,UAAWjf,EAAMgiB,KAGhD,OAAOhiB,GAQT,QAASgiB,KACP,GAAIhiB,GAAMiiB,EAAWtV,EAAM5J,EAAImf,CAY/B,KAVAliB,EAAOmiB,IAEPF,GACEG,KAAM,QACNC,KAAM,UACNC,IAAK,UACLC,IAAK,SACLC,KAAM,YACNC,KAAM,YAEDzC,KAASiC,IACdtV,EAAOqT,GACPjd,EAAKkf,EAAUtV,GAEfgU,IACAuB,GAAUliB,EAAMmiB,KAChBniB,EAAO,GAAIif,IAAatS,EAAM5J,EAAImf,EAGpC,OAAOliB,GAQT,QAASmiB,KACP,GAAIniB,GAAMiiB,EAAWtV,EAAM5J,EAAImf,CAU/B,KARAliB,EAAO0iB,IAEPT,GACEU,KAAO,YACPC,KAAO,kBACPC,MAAQ,iBAGH7C,KAASiC,IACdtV,EAAOqT,GACPjd,EAAKkf,EAAUtV,GAEfgU,IACAuB,GAAUliB,EAAM0iB,KAChB1iB,EAAO,GAAIif,IAAatS,EAAM5J,EAAImf,EAGpC,OAAOliB,GAQT,QAAS0iB,KACP,GAAI1iB,GAAMiiB,EAAWtV,EAAM5J,EAAImf,CAS/B,KAPAliB,EAAO8iB,IAEPb,GACE/T,GAAO,KACPwF,KAAO,MAGFsM,KAASiC,IACdtV,EAAOqT,GACPjd,EAAKkf,EAAUtV,GAEfgU,IACAuB,GAAUliB,EAAM8iB,KAChB9iB,EAAO,GAAIif,IAAatS,EAAM5J,EAAImf,EAGpC,OAAOliB,GAQT,QAAS8iB,KACP,GAAI9iB,GAAMkiB,IAWV,IAPEliB,EAFW,KAATggB,GAEK,GAAIpB,IAAa,IAAK,UAItBmE,IAGI,KAAT/C,IAAiBP,KAAsBD,GAAgB,CAKzD,IAHA0C,EAAOlY,KAAKhK,GAGI,KAATggB,IAAgBkC,EAAOxf,OAAS,GACrCie,IAIEuB,EAAOlY,KAFI,KAATgW,IAAyB,KAATA,IAAyB,KAATA,IAAyB,IAATA,GAEtC,GAAIb,IAAW,OAIf4D,IAMd/iB,GAFmB,GAAjBkiB,EAAOxf,OAEF,GAAIwc,IAAUgD,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAI3C,GAAIhD,IAAUgD,EAAO,GAAIA,EAAO,IAI3C,MAAOliB,GAQT,QAAS+iB,KACP,GAAI/iB,GAAMiiB,EAAWtV,EAAM5J,EAAImf,CAQ/B,KANAliB,EAAOgjB,IAEPf,GACEgB,IAAK,MACLC,IAAK,YAEAlD,KAASiC,IACdtV,EAAOqT,GACPjd,EAAKkf,EAAUtV,GAEfgU,IACAuB,GAAUliB,EAAMgjB,KAChBhjB,EAAO,GAAIif,IAAatS,EAAM5J,EAAImf,EAGpC,OAAOliB,GAQT,QAASgjB,KACP,GAAIhjB,GAAMiiB,EAAWtV,EAAM5J,EAAImf,CAa/B,IAXAliB,EAAOmjB,IAEPlB,GACEmB,IAAK,WACLC,KAAM,cACNC,IAAK,SACLC,KAAM,YACNC,IAAK,MACLC,IAAO,OAGLzD,KAASiC,GACX,KAAOjC,KAASiC,IACdtV,EAAOqT,GACPjd,EAAKkf,EAAUtV,GAEfgU,IACAuB,GAAUliB,EAAMmjB,KAChBnjB,EAAO,GAAIif,IAAatS,EAAM5J,EAAImf,EAiBtC,QAZKrC,IAAcC,GAAUS,QACf,MAATP,IAAkBhgB,YAAgB4e,KAClCiB,IAAcC,GAAUY,UAAY1gB,YAAgB4e,MAC3C,KAAToB,IAAyB,KAATA,MAMnBhgB,EAAO,GAAIif,IAAa,IAAK,YAAajf,EAAMgjB,OAG3ChjB,EAQT,QAASmjB,KACP,GAAIxW,GAAMuV,EACNnf,GACFmgB,IAAK,aACLD,IAAK,YACLS,IAAK,SACLC,IAAO,OACP3D,GAEF,OAAIjd,IACF4J,EAAOqT,GAEPW,IACAuB,GAAUiB,KAEH,GAAIlE,IAAatS,EAAM5J,EAAImf,IAG7B0B,IAST,QAASA,KACP,GAAI5jB,GAAM2M,EAAM5J,EAAImf,CAapB,OAXAliB,GAAO6jB,KAEM,KAAT7D,IAAyB,MAATA,MAClBrT,EAAOqT,GACPjd,EAAc,KAAR4J,EAAe,MAAQ,SAE7BgU,IACAuB,GAAUliB,EAAMmjB,KAChBnjB,EAAO,GAAIif,IAAatS,EAAM5J,EAAImf,IAG7BliB,EAQT,QAAS6jB,KACP,GAAI7jB,GAAMiiB,EAAWtV,EAAM5J,EAAImf,CAS/B,KAPAliB,EAAO8jB,IAEP7B,GACE8B,IAAK,YACLC,IAAM,aAGDhE,KAASiC,IACdtV,EAAOqT,GACPjd,EAAKkf,EAAUtV,GAEfiT,IACAsC,GAAUliB,GAEVA,EAAO,GAAIif,IAAatS,EAAM5J,EAAImf,EAGpC,OAAOliB,GA+BT,QAAS8jB,KACP,GAAiBG,GAAb/B,IAEJ,IAAIrC,IAAcC,GAAUS,QAAUlB,GAAYW,IAAQ,CAMxD,GALAiE,EAAU5E,GAAYW,IAEtBJ,IAGa,KAATI,GAAc,CAMhB,GALAkC,KAEAtB,IACAhB,IAEa,KAATI,GAIF,IAHAkC,EAAOlY,KAAKqX,KAGI,KAATrB,IACLJ,IACAsC,EAAOlY,KAAKqX,IAIhB,IAAa,KAATrB,GACF,KAAMS,GAAkB,yBAE1BI,KACAjB,IAKF,MAAO,IAAIqE,GAAQ/B,GAGrB,MAAOgC,KAQT,QAASA,KACP,GAAIlkB,GAAM2M,CAEV,OAAIkT,KAAcC,GAAUS,QACvBV,IAAcC,GAAUG,WAAaD,KAASM,KACjD3T,EAAOqT,GAEPJ,IAGA5f,EAAOmkB,EAAexX,GACtB3M,EAAOokB,EAAWpkB,IAIbqkB,IAST,QAASF,GAAgBxX,GACvB,GAAIuV,EAEJ,IAAa,KAATlC,GAAc,CAMhB,GALAkC,KAEAtB,IACAhB,IAEa,KAATI,GAIF,IAHAkC,EAAOlY,KAAKqX,KAGI,KAATrB,IACLJ,IACAsC,EAAOlY,KAAKqX,IAIhB,IAAa,KAATrB,GACF,KAAMS,GAAkB,yBAK1B,OAHAI,KACAjB,IAEO,GAAIb,IAAapS,EAAMuV,GAGhC,MAAO,IAAI/C,IAAWxS,GAWxB,QAASyX,GAAYpkB,GAGnB,IAFA,GAAIkiB,GAEY,KAATlC,IAAc,CAMnB,GALAkC,KAEAtB,IACAhB,IAEa,KAATI,GAIF,IAHAkC,EAAOlY,KAAKqX,KAGI,KAATrB,IACLJ,IACAsC,EAAOlY,KAAKqX,IAIhB,IAAa,KAATrB,GACF,KAAMS,GAAkB,yBAE1BI,KACAjB,IAEA5f,EAAO,GAAI6e,IAAU7e,EAAMkiB,GAG7B,MAAOliB,GAST,QAASqkB,KACP,GAAIrkB,GAAMkE,EAAKogB,CAEf,IAAa,KAATtE,GAAc,CAIhB,IAFA9b,EAAM,GACNogB,EAAQ,GACI,IAALxmB,KAAiB,KAALA,IAAsB,MAATwmB,IAC9BpgB,GAAOpG,GACPwmB,EAAQxmB,GACR+I,GAIF,IADA+Y,IACa,KAATI,GACF,KAAMS,GAAkB,2BAU1B,OARAb,KAGA5f,EAAO,GAAI4e,IAAa1a,EAAK,UAG7BlE,EAAOokB,EAAWpkB,GAKpB,MAAOukB,KAQT,QAASA,KACP,GAAIvb,GAAOkZ,EAAQsC,EAAMC,CAEzB,IAAa,KAATzE,GAAc,CAKhB,GAHAY,IACAhB,IAEa,KAATI,GAAc,CAEhB,GAAIvV,GAAMia,GAEV,IAAa,KAAT1E,GAAc,CAMhB,IAJAwE,EAAO,EACPtC,GAAUzX,GAGM,KAATuV,IACLJ,IAEAsC,EAAOsC,GAAQE,IACfF,GAGF,IAAa,KAATxE,GACF,KAAMS,GAAkB,2BAE1BI,KACAjB,IAGA6E,EAAOvC,EAAO,GAAG5C,MAAM5c,MACvB,KAAK,GAAIiE,GAAI,EAAO6d,EAAJ7d,EAAUA,IACxB,GAAIub,EAAOvb,GAAG2Y,MAAM5c,QAAU+hB,EAC5B,KAAM1D,GAAY,+BACRmB,EAAOvb,GAAG2Y,MAAM5c,OAAS,OAAS+hB,EAAO,IAIvDzb,GAAQ,GAAIwV,IAAU0D,OAEnB,CAEH,GAAa,KAATlC,GACF,KAAMS,GAAkB,2BAE1BI,KACAjB,IAEA5W,EAAQyB,OAKVoW,KACAjB,IACA5W,EAAQ,GAAIwV,OAGd,OAAOxV,GAGT,MAAO5B,KAOT,QAASsd,KAIP,IAHA,GAAIxC,IAAUf,KACV1e,EAAM,EAEM,KAATud,IACLJ,IAGAsC,EAAOzf,GAAO0e,IACd1e,GAGF,OAAO,IAAI+b,IAAU0D,GAQvB,QAAS9a,KACP,GAAI7I,EAEJ,OAAIshB,KAAcC,GAAUY,QAE1BniB,EAASyhB,GACTJ,IAEO,GAAIhB,IAAargB,EAAQ,WAG3BomB,IAQT,QAASA,KACP,GAAI3kB,EAGJ,IAAa,KAATggB,GAAc,CAOhB,GALAY,IACAhB,IAEA5f,EAAOmhB,IAEM,KAATnB,GACF,KAAMS,GAAkB,yBAK1B,OAHAI,KACAjB,IAEO5f,EAGT,MAAO4kB,KAQT,QAASA,KACP,KAEQnE,GAFK,IAATT,GAEsB,+BAEA,kBAoB5B,QAAS6E,KACP,MAAOpkB,IAAQuf,GAAMtd,OAAS,EAShC,QAAS+d,GAAmBqE,GAC1B,GAAIhnB,GAAI+mB,IACJvlB,EAAQ,GAAIiH,aAAYue,EAAU,UAAYhnB,EAAI,IAGtD,OAFAwB,GAAM,QAAUxB,EAETwB,EAST,QAASyhB,GAAa+D,GACpB,GAAIhnB,GAAI+mB,IACJvlB,EAAQ,GAAInB,OAAM2mB,EAAU,UAAYhnB,EAAI,IAGhD,OAFAwB,GAAM,QAAUxB,EAETwB,EA91CT,GAAIiI,GAAOhK,EAAoB,KAE3B0I,EAAiB1I,EAAoB,KAErCkK,EAAWF,EAAKG,OAAOD,SACvBjG,EAAUD,MAAMC,QAKhB9B,GAJO6H,EAAKwD,MAAMlM,KAGRtB,EAAoB,GACrBA,EAAoB,IAE7BuC,GADOvC,EAAoB,IACdA,EAAoB,KAGjCihB,GAAYjhB,EAAoB,KAChCkhB,GAAiBlhB,EAAoB,KACrCmhB,GAAYnhB,EAAoB,KAChCohB,GAAkBphB,EAAoB,KACtCqhB,GAAerhB,EAAoB,KACnCuhB,GAAyBvhB,EAAoB,KAC7CshB,GAAYthB,EAAoB,KAChC0hB,GAAe1hB,EAAoB,KACnCwhB,GAAexhB,EAAoB,KACnC2hB,GAAY3hB,EAAoB,KAChC4hB,GAAa5hB,EAAoB,KACjC6hB,GAAa7hB,EAAoB,KA+DjCuiB,IACFC,KAAO,EACPE,UAAY,EACZS,OAAS,EACTH,OAAS,EACTC,QAAU,GAIRJ,IACF2E,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAM,EACNC,KAAK,EAELpC,KAAK,EACLC,KAAK,EACLE,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,KAAK,EACL8B,KAAK,EACLC,MAAM,EACN7B,KAAK,EACLK,KAAK,EACLyB,KAAK,EACLC,KAAK,EACLC,MAAM,EACN1B,KAAM,EACN2B,KAAK,EACLC,KAAK,EACLC,KAAK,EAELzD,MAAM,EACNC,MAAM,EACNC,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,MAAM,EAENE,MAAM,EACNC,MAAM,EACNC,OAAO,GAILvC,IACFmD,KAAO,EACPvV,IAAM,EACNwF,MAAM,EACNoS,KAAO,EACPC,KAAO,EACPC,IAAM,EACNrC,KAAO,GAGLtE,MACAtf,GAAa,GACbU,GAAQ,EACR3C,GAAI,GACJkiB,GAAQ,GACRH,GAAaC,GAAUC,KACvBP,GAAgB,EAChBC,GAAoB,IAqsCxBviB,GAAOD,QAAUgD,GAKZ,SAAS/C,EAAQD,EAASM,GAE/B,YAqDA,SAAS2C,GAAO9B,GACd,KAAMf,eAAgB6C,IACpB,KAAM,IAAIqG,aACN,mDAGN,MAAMnI,YAAgBF,SACpB,KAAM,IAAI8D,WAAU,oCAGtB3E,MAAKe,KAAOA,EACZf,KAAK4oB,SA9DP,GAAIC,GAAS3oB,EAAoB,GAyEjC2C,GAAOf,UAAUc,MAAQ,WACvB,KAAM,IAAI9B,OAAM,wDAUlB+B,EAAOf,UAAUgnB,QAAU,WACzB,KAAM,IAAIhoB,OAAM,4DASlB+B,EAAOf,UAAU+d,KAAO,SAAUD,GAEhC,MAAOiJ,GAAOjJ,GACTkJ,QAAQ9oB,KAAKe,MACb8e,KAAK7f,KAAK4oB,QASjB/lB,EAAOf,UAAU+D,IAAM,SAAUyJ,GAE/B,MAAOtP,MAAK4oB,MAAMtZ,IAQpBzM,EAAOf,UAAUgE,IAAM,SAAUwJ,EAAMlL,GAErC,MAAOpE,MAAK4oB,MAAMtZ,GAAQlL,GAO5BvB,EAAOf,UAAUinB,OAAS,SAAUzZ,SAE3BtP,MAAK4oB,MAAMtZ,IAMpBzM,EAAOf,UAAUknB,MAAQ,WACvB,IAAK,GAAI1Z,KAAQtP,MAAK4oB,MAChB5oB,KAAK4oB,MAAM/jB,eAAeyK,UACrBtP,MAAK4oB,MAAMtZ,IAKxBzP,EAAOD,QAAUiD,GAKZ,SAAShD,EAAQD,EAASM,GAG/BN,EAAQ4F,EAAItF,EAAoB,KAChCN,EAAQwI,EAAIlI,EAAoB,KAChCN,EAAQ,SAAWM,EAAoB,KACvCN,EAAQuF,EAAIjF,EAAoB,KAChCN,EAAkB,SAAIM,EAAoB,KAC1CN,EAAQyI,IAAMnI,EAAoB,KAClCN,EAAQ0I,KAAOpI,EAAoB,KACnCN,EAAQ2I,MAAQrI,EAAoB,KACpCN,EAAQ4I,OAAStI,EAAoB,KACrCN,EAAQgI,IAAM1H,EAAoB,KAClCN,EAAQ,QAAUM,EAAoB,KACtCN,EAAQiI,GAAK3H,EAAoB,KACjCN,EAAQuI,GAAKjI,EAAoB,KACjCN,EAAQmI,IAAM7H,EAAoB,KAClCN,EAAQ6I,QAAUvI,EAAoB,KACtCN,EAAQ8I,MAAQxI,EAAoB,KACpCN,EAAQkI,IAAM5H,EAAoB,KAClCN,EAAQ,QAAUM,EAAoB,KACtCN,EAAQ+I,QAAUzI,EAAoB,KAGtCN,EAAQkH,IAAM5G,EAAoB,KAClCN,EAAQqpB,IAAM/oB,EAAoB,KAClCN,EAAQwM,KAAOlM,EAAoB,KACnCN,EAAQspB,KAAOhpB,EAAoB,KACnCN,EAAQupB,OAASjpB,EAAoB,KACrCN,EAAQwpB,UAAYlpB,EAAoB,KACxCN,EAAQypB,YAAcnpB,EAAoB,KAC1CN,EAAQ0pB,OAASppB,EAAoB,KACrCN,EAAQ2pB,IAAMrpB,EAAoB,KAClCN,EAAQ4pB,IAAMtpB,EAAoB,KAClCN,EAAQ6pB,MAAQvpB,EAAoB,KACpCN,EAAQ8pB,IAAMxpB,EAAoB,KAClCN,EAAQ+pB,IAAMzpB,EAAoB,KAClCN,EAAQuR,IAAMjR,EAAoB,KAClCN,EAAQgqB,MAAQ1pB,EAAoB,KACpCN,EAAQwmB,IAAMlmB,EAAoB,KAClCN,EAAQiqB,SAAW3pB,EAAoB,KACvCN,EAAQkqB,KAAO5pB,EAAoB,KACnCN,EAAQmqB,QAAU7pB,EAAoB,KACtCN,EAAQkU,IAAM5T,EAAoB,KAClCN,EAAQsG,MAAQhG,EAAoB,KACpCN,EAAQuG,KAAOjG,EAAoB,KACnCN,EAAQsI,KAAOhI,EAAoB,KACnCN,EAAQoqB,OAAS9pB,EAAoB,KACrCN,EAAQqqB,SAAW/pB,EAAoB,KACvCN,EAAQsqB,WAAahqB,EAAoB,KACzCN,EAAQuqB,UAAYjqB,EAAoB,KACxCN,EAAQwqB,KAAOlqB,EAAoB,KAGnCN,EAAQyqB,OAASnqB,EAAoB,KACrCN,EAAQ0qB,OAASpqB,EAAoB,KACrCN,EAAQ2qB,MAAQrqB,EAAoB,KACpCN,EAAQ4qB,OAAStqB,EAAoB,KACrCN,EAAQ6qB,UAAYvqB,EAAoB,KACxCN,EAAQ8qB,gBAAkBxqB,EAAoB,KAC9CN,EAAQ+qB,cAAgBzqB,EAAoB,KAG5CN,EAAQuJ,IAAMjJ,EAAoB,KAClCN,EAAQgrB,KAAO1qB,EAAoB,KACnCN,EAAQoJ,GAAK9I,EAAoB,KACjCN,EAAQqJ,GAAK/I,EAAoB,KAGjCN,EAAQ8H,UAAYxH,EAAoB,KACxCN,EAAQ,WAAaM,EAAoB,KACzCN,EAAQirB,QAAU3qB,EAAoB,KACtCN,EAAQwD,MAAQlD,EAAoB,KACpCN,EAAQqB,OAASf,EAAoB,KACrCN,EAAQsB,OAAShB,EAAoB,KACrCN,EAAQyK,OAASnK,EAAoB,KACrCN,EAAQ6P,KAAOvP,EAAoB,KAGnCN,EAAc,KAAKM,EAAoB,KACvCN,EAAQkrB,KAAQ5qB,EAAoB,KAGpCN,EAAa,IAAIM,EAAoB,KACrCN,EAAa,IAAIM,EAAoB,KACrCN,EAAY,GAAIM,EAAoB,KACpCN,EAAa,IAAIM,EAAoB,KAGrCN,EAAgB,OAAIM,EAAoB,KACxCN,EAAQmrB,MAAQ7qB,EAAoB,KACpCN,EAAQorB,IAAM9qB,EAAoB,KAClCN,EAAQqrB,KAAO/qB,EAAoB,KACnCN,EAAQsrB,IAAMhrB,EAAoB,KAClCN,EAAQurB,IAAMjrB,EAAoB,KAClCN,EAAQwrB,QAAUlrB,EAAoB,KACtCN,EAAQyrB,IAAMnrB,EAAoB,KAClCN,EAAQ0rB,KAAOprB,EAAoB,KACnCN,EAAQ6D,MAAQvD,EAAoB,KACpCN,EAAQmP,OAAS7O,EAAoB,KACrCN,EAAQuM,KAAOjM,EAAoB,KACnCN,EAAQ2rB,QAAUrrB,EAAoB,KACtCN,EAAQ8D,OAASxD,EAAoB,KACrCN,EAAQ4rB,MAAQtrB,EAAoB,KACpCN,EAAQ6rB,UAAYvrB,EAAoB,KACxCN,EAAQ8rB,MAAQxrB,EAAoB,KAGpCN,EAAQ+rB,aAAezrB,EAAoB,KAE3CN,EAAQgsB,UAAY1rB,EAAoB,KACxCN,EAAQisB,MAAQ3rB,EAAoB,KACpCN,EAAQksB,aAAe5rB,EAAoB,KAC3CN,EAAQmsB,WAAa7rB,EAAoB,KACzCN,EAAQosB,OAAS9rB,EAAoB,KACrCN,EAAQqsB,UAAY/rB,EAAoB,KAGxCN,EAAQssB,QAAUhsB,EAAoB,KACtCN,EAAQsF,UAAYhF,EAAoB,KACxCN,EAAe,MAAIM,EAAoB,KACvCN,EAAQusB,OAASjsB,EAAoB,KACrCN,EAAQwsB,SAAWlsB,EAAoB,KACvCN,EAAQysB,QAAUnsB,EAAoB,KACtCN,EAAQ0sB,UAAYpsB,EAAoB,KACxCN,EAAQ2sB,QAAUrsB,EAAoB,KAGtCN,EAAQ0D,IAAMpD,EAAoB,KAClCN,EAAQ2D,KAAOrD,EAAoB,KACnCN,EAAQ4sB,OAAStsB,EAAoB,KACrCN,EAAQ4D,IAAMtD,EAAoB,KAClCN,EAAQ6sB,KAAOvsB,EAAoB,KACnCN,EAAQ8sB,IAAMxsB,EAAoB,KAClCN,EAAQ+sB,IAAMzsB,EAAoB,KAClCN,EAAQ,OAASM,EAAoB,KAGrCN,EAAQgtB,KAAO1sB,EAAoB,KACnCN,EAAQitB,KAAO3sB,EAAoB,KACnCN,EAAQktB,KAAO5sB,EAAoB,KACnCN,EAAQsL,MAAQhL,EAAoB,KACpCN,EAAQmL,IAAM7K,EAAoB,KAClCN,EAAQmtB,KAAO7sB,EAAoB,KACnCN,EAAQotB,IAAM9sB,EAAoB,KAClCN,EAAQqtB,KAAO/sB,EAAoB,KACnCN,EAAQstB,IAAMhtB,EAAoB,KAClCN,EAAQutB,KAAOjtB,EAAoB,KACnCN,EAAQya,IAAMna,EAAoB,KAClCN,EAAQwtB,KAAOltB,EAAoB,KACnCN,EAAQoL,IAAM9K,EAAoB,KAClCN,EAAQytB,KAAOntB,EAAoB,KACnCN,EAAQ0tB,IAAMptB,EAAoB,KAClCN,EAAQ2tB,KAAOrtB,EAAoB,KAGnCN,EAAQiR,GAAK3Q,EAAoB,KAGjCN,EAAQgC,MAAS1B,EAAoB,KACrCN,EAAQyD,IAAOnD,EAAoB,KACnCN,EAAQsD,OAAUhD,EAAoB,KACtCN,EAAQuD,QAAWjD,EAAoB,KACvCN,EAAQwG,OAAUlG,EAAoB,KAEtCN,EAAQ,UAAaM,EAAoB,KACzCN,EAAQ4tB,KAAQttB,EAAoB,KACpCN,EAAQ,UAAaM,EAAoB,MAKpC,SAASL,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChCutB,EAAiBvtB,EAAoB,KAAK8C,UAC1C+C,EAAW7F,EAAoB,GAAG6F,SAClC4a,EAAczgB,EAAoB,KAAKygB,WAU3C9gB,GAAOD,QAAU,SAAUmB,GACzB,GAAIiC,GAAY,WAEd,GAAI4I,GAAO+U,EAAYxZ,WAGnBumB,EAAY9hB,EAAKvG,OAAS,EAC1B2I,EAAOpC,EAAK8hB,EACZ3nB,GAASiI,GACXpC,EAAK8hB,GAAa1f,EAAO,EAElBA,YAAgBvM,KACvBmK,EAAK8hB,GAAa1f,EAAK2f,MAAM,GAG/B,KACE,MAAO5sB,GAAKkC,OAAO+J,MAAMjM,EAAM6K,GAEjC,MAAO0E,GACL,KAAMmd,GAAend,IAMzB,OAFAvP,GAAKkC,OAAOD,UAAYA,EAEjBA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,IAAI4hB,GAAa5hB,EAAoB,KAGjC0I,GAFY1I,EAAoB,KAAK0tB,UACvB1tB,EAAoB,KAAKygB,YACtBzgB,EAAoB,KAUzCL,GAAOD,QAAU,SAAUmB,GACzB,GAAI8sB,GAAU9sB,EAAKmC,OAEfF,EAAY,SAAU4I,EAAM7K,EAAM6nB,GACpC,GAAoB,IAAhBhd,EAAKvG,OACP,KAAM,IAAIuD,GAAe,SAAUzB,UAAU9B,OAAQ,EAGvD,IACIyoB,GADA9pB,EAAI4H,EAAK,GAAGkd,QAAQ/nB,GAAM8e,KAAK+I,EAEnC,IAAIhd,EAAK,YAAckW,GAErBgM,EAAOliB,EAAK,GAAGkd,QAAQ/nB,GAAM8e,KAAK+I,OAE/B,CAIH,GAAImF,GAASnF,MACToF,EAASpiB,EAAK,GACb1I,OAAO,SAAUP,GAChB,MAAQA,aAAgBmf,MAClBnf,EAAK2M,OAAQvO,OACb4B,EAAK2M,OAAQye,MAClB,GAGHE,EAAMptB,OAAOF,OAAOotB,GACpBG,EAAKtiB,EAAK,GAAGkd,QAAQ/nB,EACzB,KAAIitB,EAQF,KAAM,IAAIltB,OAAM,iDAPhB,IAAIwO,GAAO0e,EAAO1e,IAClBwe,GAAO,SAAU9pB,GAEf,MADAiqB,GAAI3e,GAAQtL,EACLkqB,EAAGrO,KAAKoO,IAQrB,MAAOJ,GAAQ7pB,EAAG8pB,GAMpB,OAHA9qB,GAAUmrB,SAAU,EACpBptB,EAAKmC,OAAOF,UAAYA,EAEjBA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,IAAImC,GAASnC,EAAoB,EASjCL,GAAOD,QAAU,SAAUmB,GAezB,QAASqtB,GAAeziB,EAAOU,EAAUgiB,GACvC,GAAIhf,GAAU,SAAUjL,EAAOhB,GACzBc,MAAMC,QAAQC,GAChBA,EAAMjB,QAAQ,SAAU8K,EAAO9I,GAE7BkK,EAAQpB,EAAO7K,EAAMH,OAAOkC,EAAI,MAIlCkH,EAASjI,EAAOhB,EAAOirB,GAG3Bhf,GAAQ1D,MA1BV,GAAI3I,GAAY,SAAUgB,EAAGqI,GAC3B,GAAwB,GAApBlF,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAInB,MAAMC,QAAQH,GAChBoqB,EAAcpqB,EAAGqI,EAAUrI,OACtB,CAAA,KAAIA,YAAa3B,IAGtB,KAAM,IAAItB,GAAKkB,MAAM8G,qBAAqB,UAAWhI,EAAK,UAAUiD,GAFpEoqB,GAAcpqB,EAAEM,UAAW+H,EAAUrI,IAuBzC,OAFAjD,GAAKoC,QAAQH,UAAYA,EAElBA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,EAAA,GAAIuB,GAAYvB,EAAoB,KAChCiC,EAAQjC,EAAoB,GAC5BkC,EAAQlC,EAAoB,GAE5B6F,GADS7F,EAAoB,GAClBA,EAAoB,GAAG6F,SACxB7B,OAAMC,QASpBtE,EAAOD,QAAU,SAAUmB,GACzB,GAAIiC,GAAY,WAEd,IAAK,GADD4I,MACKzG,EAAI,EAAGuH,EAAKvF,UAAU9B,OAAYqH,EAAJvH,EAAQA,IAAK,CAClD,GAAIgE,GAAMhC,UAAUhC,EAGpB,IAAIgE,YAAehH,GACjBgH,EAAIqC,QACJrC,EAAIsC,KAAQtC,EAAIuC,KAAO,EAAI,EAAI,MAE5B,IAAI3F,EAASoD,GAChBA,QAEG,CAAA,KAAIA,YAAe1H,IAItB,KAAM,IAAIkD,WAAU,mCAHpBwE,GAAMA,EAAI2B,WAAa,EAMzBc,EAAKzG,GAAKgE,EAGZ,GAAIoG,GAAM,GAAInN,EAEd,OADAA,GAAM4K,MAAMuC,EAAK3D,GACV2D,EAKT,OAFAxO,GAAKqC,MAAMJ,UAAYA,EAEhBA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,EAAA,GAAImC,GAASnC,EAAoB,EACjBA,GAAoB,KACxBA,EAAoB,GACpBA,EAAoB,GACjBA,EAAoB,GAAG6F,SACxB7B,MAAMC,QASpBtE,EAAOD,QAAU,SAAUmB,GAezB,QAASutB,GAAWC,EAASliB,EAAUgiB,GACrC,GAAIhf,GAAU,SAAUjL,EAAOhB,GAC7B,MAAIc,OAAMC,QAAQC,GACTA,EAAMf,IAAI,SAAU4K,EAAO9I,GAEhC,MAAOkK,GAAQpB,EAAO7K,EAAMH,OAAOkC,EAAI,MAIlCkH,EAASjI,EAAOhB,EAAOirB,GAIlC,OAAOhf,GAAQkf,MA3BjB,GAAIvrB,GAAY,SAAUgB,EAAGqI,GAC3B,GAAwB,GAApBlF,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAInB,MAAMC,QAAQH,GAChB,MAAOsqB,GAAUtqB,EAAGqI,EAAUrI,EACzB,IAAIA,YAAa3B,GACtB,MAAO,IAAIA,GAAOisB,EAAUtqB,EAAEM,UAAW+H,EAAUrI,GAEnD,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,IAsBpE,OAFAjD,GAAKsC,IAAIL,UAAYA,EAEdA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChCutB,EAAiBvtB,EAAoB,KAAK8C,UAC1C+C,EAAW7F,EAAoB,GAAG6F,SAClC6a,EAAe1gB,EAAoB,IAAI0gB,aACvCD,EAAczgB,EAAoB,KAAKygB,WAU3C9gB,GAAOD,QAAU,SAAUmB,GACzB,GAAIiC,GAAY,WACd,GAAI4I,GAAO+U,EAAYxZ,UAGvB,IAAmB,GAAfyE,EAAKvG,QAAeub,EAAahV,EAAK,IAAK,CAC7C,GAAIsB,GAAMtB,EAAK,EACX7F,GAASmH,GACXtB,EAAK,GAAKsB,EAAM,EAETA,YAAezL,KACtBmK,EAAK,GAAKsB,EAAIygB,MAAM,IAIxB,IACE,MAAO5sB,GAAKuC,IAAI0J,MAAMjM,EAAM6K,GAE9B,MAAO0E,GACL,KAAMmd,GAAend,IAMzB,OAFAvP,GAAKuC,IAAIN,UAAYA,EAEdA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChCutB,EAAiBvtB,EAAoB,KAAK8C,UAC1C+C,EAAW7F,EAAoB,GAAG6F,SAClC6a,EAAe1gB,EAAoB,IAAI0gB,aACvCD,EAAczgB,EAAoB,KAAKygB,WAU3C9gB,GAAOD,QAAU,SAAUmB,GACzB,GAAIiC,GAAY,WACd,GAAI4I,GAAO+U,EAAYxZ,UAGvB,IAAmB,GAAfyE,EAAKvG,QAAeub,EAAahV,EAAK,IAAK,CAC7C,GAAIsB,GAAMtB,EAAK,EACX7F,GAASmH,GACXtB,EAAK,GAAKsB,EAAM,EAETA,YAAezL,KACtBmK,EAAK,GAAKsB,EAAIygB,MAAM,IAIxB,IACE,MAAO5sB,GAAKwC,KAAKyJ,MAAMjM,EAAM6K,GAE/B,MAAO0E,GACL,KAAMmd,GAAend,IAMzB,OAFAvP,GAAKwC,KAAKP,UAAYA,EAEfA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,IAAIuB,GAAYvB,EAAoB,KAChCutB,EAAiBvtB,EAAoB,KAAK8C,UAC1C+C,EAAW7F,EAAoB,GAAG6F,SAClC6a,EAAe1gB,EAAoB,IAAI0gB,aACvCD,EAAczgB,EAAoB,KAAKygB,WAU3C9gB,GAAOD,QAAU,SAAUmB,GACzB,GAAIiC,GAAY,WACd,GAAI4I,GAAO+U,EAAYxZ,UAGvB,IAAmB,GAAfyE,EAAKvG,QAAeub,EAAahV,EAAK,IAAK,CAC7C,GAAIsB,GAAMtB,EAAK,EACX7F,GAASmH,GACXtB,EAAK,GAAKsB,EAAM,EAETA,YAAezL,KACtBmK,EAAK,GAAKsB,EAAIygB,MAAM,IAIxB,IACE,MAAO5sB,GAAKyC,IAAIwJ,MAAMjM,EAAM6K,GAE9B,MAAO0E,GACL,KAAMmd,GAAend,IAMzB,OAFAvP,GAAKyC,IAAIR,UAAYA,EAEdA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,IAAI0tB,GAAY1tB,EAAoB,KAAK0tB,UACrCjN,EAAczgB,EAAoB,KAAKygB,WAS3C9gB,GAAOD,QAAU,SAAUmB,GACzB,GAAIiC,GAAY,WACd,GAAI4I,GAAO+U,EAAYxZ,WAEnBumB,EAAY9hB,EAAKvG,OAAS,EAC1B2I,EAAOpC,EAAK8hB,EAKhB,OAJKE,GAAU5f,IACbpC,EAAKe,MAAK,GAGL5L,EAAK0C,MAAMuJ,MAAMjM,EAAM6K,GAKhC,OAFA7K,GAAK0C,MAAMT,UAAYA,EAEhBA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEA,IAAIutB,GAAiBvtB,EAAoB,KAAK8C,UAE1C2d,GADYzgB,EAAoB,KAAK0tB,UACvB1tB,EAAoB,KAAKygB,YAS3C9gB,GAAOD,QAAU,SAAUmB,GACzB,GAAIiC,GAAY,WACd,IACE,MAAOjC,GAAK2C,OAAOsJ,MAAMjM,EAAM4f,EAAYxZ,YAE7C,MAAOmJ,GACL,KAAMmd,GAAend,IAMzB,OAFAvP,GAAK2C,OAAOV,UAAYA,EAEjBA,IAMJ,SAASnD,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAqBzB,QAAS6C,GAAOQ,GACd,KAAMpE,eAAgB4D,IACpB,KAAM,IAAIsF,aAAY,mDAItBlJ,MAAKoE,MADHA,YAAiBR,GACNQ,EAAMA,MAGNA,EAmCjB,QAASoqB,GAAYlf,EAAMlL,GACzB,GAAIqqB,GAAQvqB,MAAMpC,UAAU2sB,KAG1B7qB,GAAM9B,UAAUwN,GAFG,kBAAVlL,GAEe,WACtB,GAAIwH,IAAQ5L,KAAKoE,OAAOnB,OAAOwrB,EAAMluB,KAAK4G,UAAW,GACrD,OAAO,IAAIvD,GAAMQ,EAAM4I,MAAMhN,KAAM4L,KAKb,GAAIhI,GAAMQ,GA3EtC,GAAIiG,GAASnK,EAAoB,IAsCjC0D,GAAM9B,UAAU4sB,KAAO,WACrB,MAAO1uB,MAAKoE,OAQdR,EAAM9B,UAAUwC,QAAU,WACxB,MAAOtE,MAAKoE,OAOdR,EAAM9B,UAAUyJ,SAAW,WACzB,MAAOlB,GAAOjE,OAAOpG,KAAKoE,QAuB5BR,EAAM4qB,YAAcA,CAKpB,KAAK,GAAIvpB,KAAQlE,GACXA,EAAK8D,eAAeI,IACtBupB,EAAYvpB,EAAMlE,EAAKkE,GAI3B,OAAOrB,KAMJ,SAAS/D,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3B2oB,EAAS3oB,EAAoB,IAE7BuC,EAAavC,EAAoB,IAEjCkK,EAAWF,EAAKG,OAAOD,SACvBwW,EAAene,EAAWme,YAoC9B7f,GAAK+nB,QAAU,SAAkBlJ,GAC/B,GAAwB,GAApBzY,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAI+E,EAASwV,GAEX,MAAOiJ,GAAOjJ,GAAMkJ,QAAQ/nB,EAEzB,IAAI6f,EAAahB,GAEpB,MAAOnd,GAAWoe,QAAQjB,EAAM,SAAU5Q,GACxC,MAAO6Z,GAAO7Z,GAAM8Z,QAAQ/nB,IAK9B,MAAM,IAAI4D,WAAU,wCAQrB,SAAS9E,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3B2oB,EAAS3oB,EAAoB,IAE7BuC,EAAavC,EAAoB,IAEjCkK,EAAWF,EAAKG,OAAOD,SACvBwW,EAAene,EAAWme,YA+B9B7f,GAAK8e,KAAO,SAAgBD,EAAMgJ,GAChC,GAAwB,GAApBzhB,UAAU9B,QAAmC,GAApB8B,UAAU9B,OACrC,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAAG,EAMnE,IAFAujB,EAAQA,MAEJxe,EAASwV,GAEX,MAAOiJ,GAAOjJ,GACTkJ,QAAQ/nB,GACR8e,KAAK+I,EAEP,IAAIhI,EAAahB,GAEpB,MAAOnd,GAAWoe,QAAQjB,EAAM,SAAU5Q,GACxC,MAAO6Z,GAAO7Z,GACT8Z,QAAQ/nB,GAAM8e,KAAK+I,IAK1B,MAAM,IAAIjkB,WAAU,wCAQrB,SAAS9E,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAIwB,GAAOrC,EAAoB,GAoB/Ba,GAAK+pB,KAAO,SAAc6D,GACxB,GAAwB,GAApBxnB,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,+CACZ/B,UAAU9B,OAAS,yBAG/B,IAAIsE,GAAO,IACX,IAAKglB,YAAkBpqB,SAA+B,gBAAb,GACvCoF,EAAOglB,MAEJ,CACH,GAAI1pB,EACJ,KAAKA,IAAQlE,GAEX,GAAIA,EAAK8D,eAAeI,IAAU0pB,IAAW5tB,EAAKkE,GAAQ,CACxD0E,EAAO1E,CACP,QAmBN,GAAIma,GAAMre,EAAK2B,WAAWI,KAAK6G,EAC/B,KAAKA,EACH,KAAM,IAAI7I,OAAM,gBAAkB6tB,EAAS,eACtC,KAAKvP,EACV,KAAM,IAAIte,OAAM,8BAAgC6I,EAAO,IAEzD,OAAO,IAAIpH,GAAKxB,EAAMqe,MAOrB,SAASvf,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI8nB,GAAS3oB,EAAoB,GAkCjCa,GAAK6B,MAAQ,WACX,MAAOimB,GAAO7b,MAAM6b,EAAQ1hB,cAQ3B,SAAStH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BuC,GADSvC,EAAoB,GAChBA,EAAoB,KAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA0B9B7f,GAAK+F,IAAM,QAASA,GAAI9C,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAOiC,MAAKa,IAAI9C,EAGlB,IAAIsG,EAAUtG,GACZ,MAAOiC,MAAKiC,KAAKlE,EAAEgF,GAAKhF,EAAEgF,GAAKhF,EAAEiF,GAAKjF,EAAEiF,GAG1C,IAAIjF,YAAavC,GACf,MAAOuC,GAAE8C,KAGX,IAAI8Z,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAG8C,EAG/B,IAAI8mB,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAKa,IAAI9C,EAGlB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BoC,GADSpC,EAAoB,GACtBA,EAAoB,KAC3BuC,EAAavC,EAAoB,IAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B7nB,EAAWmE,EAAKhJ,OAAO6E,SACvBqE,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAgC9B7f,GAAKkoB,IAAM,QAASA,GAAIjlB,EAAGuD,GACzB,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GAEX,MAAOvD,GAAIuD,CAER,IAAI+C,EAAU/C,GAEjB,MAAO,IAAIrF,GACP8B,EAAIuD,EAAEyB,GACNzB,EAAE0B,IAKV,GAAIqB,EAAUtG,GAAI,CAChB,GAAIsG,EAAU/C,GAEZ,MAAO,IAAIrF,GACP8B,EAAEgF,GAAKzB,EAAEyB,GACThF,EAAEiF,GAAK1B,EAAE0B,GAGV,IAAIlD,EAASwB,GAEhB,MAAO,IAAIrF,GACP8B,EAAEgF,GAAKzB,EACPvD,EAAEiF,IAKV,GAAIkB,EAAOnG,IACLmG,EAAO5C,GAAI,CACb,GAAe,MAAXvD,EAAEI,MACJ,KAAM,IAAItD,OAAM,mDAGlB,IAAe,MAAXyG,EAAEnD,MACJ,KAAM,IAAItD,OAAM,mDAGlB,KAAKkD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,qBAGlB,IAAIyO,GAAMvL,EAAEpC,OAGZ,OAFA2N,GAAInL,OAASmD,EAAEnD,MACfmL,EAAIO,WAAY,EACTP,EAIX,GAAIvL,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAE4qB,KAAKrnB,GAIT0hB,EAAIjlB,EAAE8G,WAAYvD,EAE3B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAE4qB,KAAKrnB,GAIT0hB,EAAIjlB,EAAGuD,EAAEuD,WAGlB,IAAI8V,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG0hB,EAGnC,IAAI7e,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAOvD,GAAIuD,CAGb,IAAIqmB,EAAU5pB,IAAY,OAANA,EAClB,MAAOilB,IAAKjlB,EAAGuD,EAEjB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO0hB,GAAIjlB,GAAIuD,EAGjB,MAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOlF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BhN,EAAcne,EAAWme,aACzBtW,EAAYpI,EAAQoI,SA8BxBvJ,GAAKqL,KAAO,QAASA,GAAKpI,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAOiC,MAAKmG,KAAKpI,EAGnB,IAAIsG,EAAUtG,GACZ,MAAO,IAAI9B,GACP+D,KAAKmG,KAAKpI,EAAEgF,IACZ/C,KAAKmG,KAAKpI,EAAEiF,IAIlB,IAAIjF,YAAavC,GACf,MAAOuC,GAAEoI,MAGX,IAAIwU,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGoI,EAG/B,IAAIwhB,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAKmG,KAAKpI,EAGnB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA0B9B7f,GAAKmoB,KAAO,QAASA,GAAKllB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAOA,GAAIA,EAAIA,CAGjB,IAAIsG,EAAUtG,GACZ,MAAOjD,GAAK8oB,SAAS9oB,EAAK8oB,SAAS7lB,EAAGA,GAAIA,EAG5C,IAAIA,YAAavC,GACf,MAAOuC,GAAE6qB,MAAM7qB,GAAG6qB,MAAM7qB,EAG1B,IAAI4c,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGklB,EAG/B,IAAI0E,EAAU5pB,IAAY,OAANA,EAClB,MAAOklB,IAAMllB,EAGf,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAASmB,GA4GxB,QAAS+tB,GAAgB9qB,EAAGuD,GAC1B,GAAIwnB,GAAMxnB,EAAEyB,GAAKzB,EAAEyB,GAAKzB,EAAE0B,GAAK1B,EAAE0B,EACjC,OAAW,IAAP8lB,EACK,GAAI7sB,IACN8B,EAAEgF,GAAKzB,EAAEyB,GAAKhF,EAAEiF,GAAK1B,EAAE0B,IAAM8lB,GAC7B/qB,EAAEiF,GAAK1B,EAAEyB,GAAKhF,EAAEgF,GAAKzB,EAAE0B,IAAM8lB,GAK3B,GAAI7sB,GACE,GAAR8B,EAAEgF,GAAYhF,EAAEgF,GAAK,EAAK,EAClB,GAARhF,EAAEiF,GAAYjF,EAAEiF,GAAK,EAAK,GAvHnC,GAAIiB,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BoC,GADSpC,EAAoB,GACtBA,EAAoB,KAE3B6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,MAelBpJ,GAAKiuB,QAAU,QAASA,GAAQhrB,EAAGuD,GAEjC,GAAIxB,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GAEX,MAAOvD,GAAIuD,CAER,IAAI+C,EAAU/C,GAEjB,MAAOunB,GAAe,GAAI5sB,GAAQ8B,EAAG,GAAIuD,GAI7C,GAAI+C,EAAUtG,GAAI,CAChB,GAAIsG,EAAU/C,GAEZ,MAAOunB,GAAe9qB,EAAGuD,EAEtB,IAAIxB,EAASwB,GAEhB,MAAOunB,GAAe9qB,EAAG,GAAI9B,GAAQqF,EAAG,IAI5C,GAAIvD,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAEiE,IAAIV,GAIRynB,EAAQhrB,EAAE8G,WAAYvD,EAE/B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAEiE,IAAIV,GAIRynB,EAAQhrB,EAAGuD,EAAEuD,WAGtB,IAAIX,EAAOnG,IACL+B,EAASwB,GAAI,CACf,GAAIgI,GAAMvL,EAAEpC,OAEZ,OADA2N,GAAInL,OAAwB,OAAdmL,EAAInL,MAAkBmL,EAAIM,WAAW,GAAKN,EAAInL,OAASmD,EAC9DgI,EAIX,GAAIqe,EAAU5pB,IAAY,OAANA,EAClB,MAAOgrB,IAAShrB,EAAGuD,EAErB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOynB,GAAQhrB,GAAIuD,EAGrB,MAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OA+BrF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAASmB,GACxB,GAAI0B,GAAavC,EAAoB,IACjC0gB,EAAene,EAAWme,YAiC9B7f,GAAKooB,OAAS,SAASnlB,EAAGuD,GACxB,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,OAAIub,GAAa5c,GACX4c,EAAarZ,GAKRxG,EAAK8oB,SAAS7lB,EAAGjD,EAAKsqB,IAAI9jB,IAI1B9E,EAAWqe,SAAS9c,EAAGuD,EAAGxG,EAAKiuB,SAItCpO,EAAarZ,GAERxG,EAAK8oB,SAAS7lB,EAAGjD,EAAKsqB,IAAI9jB,IAI5BxG,EAAKiuB,QAAQhrB,EAAGuD,MAOtB,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI0B,GAAavC,EAAoB,GA4BrCa,GAAKqoB,UAAY,SAAmBplB,EAAGuD,GACrC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAGrE,OAAO5C,GAAWqe,SAAS9c,EAAGuD,EAAGxG,EAAKooB,SAIxCpoB,EAAKkuB,QAAU,WACb,KAAM,IAAInuB,OAAM,+CAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GACI0B,IADOvC,EAAoB,KACdA,EAAoB,IA4BrCa,GAAKsoB,YAAc,SAAqBrlB,EAAGuD,GACzC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,cAAezB,UAAU9B,OAAQ,EAGvE,OAAO5C,GAAWqe,SAAS9c,EAAGuD,EAAGxG,EAAK8oB,WAIxC9oB,EAAKmuB,UAAY,WACf,KAAM,IAAIpuB,OAAM,mDAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GACI0B,IADOvC,EAAoB,KACdA,EAAoB,IAyBrCa,GAAKuoB,OAAS,SAAgBtlB,EAAGuD,GAC/B,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,OAAO5C,GAAWqe,SAAS9c,EAAGuD,EAAGxG,EAAK+S,MAIxC/S,EAAKouB,KAAO,WACV,KAAM,IAAIruB,OAAM,yCAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BuC,GADSvC,EAAoB,GAChBA,EAAoB,KAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA8B9B7f,GAAKwoB,IAAM,QAASA,GAAKvlB,GACvB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAOiC,MAAKsjB,IAAIvlB,EAGlB,IAAIsG,EAAUtG,GAAI,CAChB,GAAIsF,GAAIrD,KAAKsjB,IAAIvlB,EAAEgF,GACnB,OAAO,IAAI9G,GACPoH,EAAIrD,KAAK8E,IAAI/G,EAAEiF,IACfK,EAAIrD,KAAK+E,IAAIhH,EAAEiF,KAIrB,GAAIjF,YAAavC,GACf,MAAOuC,GAAEulB,KAGX,IAAI3I,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGulB,EAG/B,IAAIqE,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAKsjB,IAAIvlB,EAGlB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA6B9B7f,GAAKyoB,IAAM,QAASA,GAAIxlB,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAQA,GAAI,EAAKiC,KAAKwjB,MAAMzlB,GAAKiC,KAAKmG,KAAKpI,EAG7C,IAAIsG,EAAUtG,GACZ,MAAO,IAAI9B,GACN8B,EAAEgF,GAAK,EAAK/C,KAAKwjB,MAAMzlB,EAAEgF,IAAM/C,KAAKmG,KAAKpI,EAAEgF,IAC3ChF,EAAEiF,GAAK,EAAKhD,KAAKwjB,MAAMzlB,EAAEiF,IAAMhD,KAAKmG,KAAKpI,EAAEiF,IAIlD,IAAIjF,YAAavC,GACf,MAAOuC,GAAEorB,aAAeprB,EAAEoI,OAASpI,EAAEylB,OAGvC,IAAI7I,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGwlB,EAG/B,IAAIoE,EAAU5pB,IAAY,OAANA,EAClB,MAAOwlB,IAAKxlB,EAGd,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA6B9B7f,GAAK0oB,MAAQ,QAASA,GAAMzlB,GAC1B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,IAAIU,EAAS/B,GACX,MAAOiC,MAAKwjB,MAAMzlB,EAGpB,IAAIsG,EAAUtG,GACZ,MAAO,IAAI9B,GACP+D,KAAKwjB,MAAMzlB,EAAEgF,IACb/C,KAAKwjB,MAAMzlB,EAAEiF,IAInB,IAAIjF,YAAavC,GACf,MAAOuC,GAAEylB,OAGX,IAAI7I,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGylB,EAG/B,IAAImE,EAAU5pB,IAAY,OAANA,EAClB,MAAOylB,IAAOzlB,EAGhB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUiD,OAOjE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA4HzB,QAASsuB,GAAQtqB,EAAGC,GAClB,IAAKD,EAAEuqB,UAAYtqB,EAAEsqB,QACnB,KAAM,IAAIxuB,OAAM,qDAKlB,KADA,GAAIyuB,GAAO,GAAI9tB,GAAU,IACjBuD,EAAEwqB,UAAU,CAClB,GAAIlmB,GAAIvE,EAAEqhB,IAAIphB,EACdD,GAAIC,EACJA,EAAIsE,EAEN,MAAOvE,GAAEga,GAAGwQ,GAAQxqB,EAAE0qB,MAAQ1qB,EAvIhC,GAAImF,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxB4a,EAAene,EAAWme,YA2B9B7f,GAAK2oB,IAAM,QAASA,KAClB,GAEIpgB,GAFAvE,EAAIoC,UAAU,GACdnC,EAAImC,UAAU,EAGlB,IAAwB,GAApBA,UAAU9B,OAAa,CAEzB,GAAIU,EAAShB,IAAMgB,EAASf,GAAI,CAC9B,IAAKgB,EAAUjB,KAAOiB,EAAUhB,GAC9B,KAAM,IAAIlE,OAAM,qDAIlB,MAAY,GAALkE,GACLsE,EAAIvE,EAAIC,EACRD,EAAIC,EACJA,EAAIsE,CAEN,OAAY,GAAJvE,GAAUA,EAAIA,EAIxB,GAAI6b,EAAa7b,IAAM6b,EAAa5b,GAClC,MAAOvC,GAAWqe,SAAS/b,EAAGC,EAAG0kB,EAGnC,IAAI3kB,YAAatD,GASf,MAPIsE,GAASf,GACXA,EAAIvD,EAAUM,QAAQiD,IAEf4oB,EAAU5oB,IAAY,OAANA,KACvBA,EAAI,GAAIvD,GAAUuD,EAAI,EAAI,IAGxBA,YAAavD,GACR4tB,EAAQtqB,EAAGC,GAIb0kB,EAAI3kB,EAAE+F,WAAY9F,EAE3B,IAAIA,YAAavD,GASf,MAPIsE,GAAShB,GACXA,EAAItD,EAAUM,QAAQgD,IAEf6oB,EAAU7oB,IAAY,OAANA,KACvBA,EAAI,GAAItD,GAAUsD,EAAI,EAAI,IAGxBA,YAAatD,GACR4tB,EAAQtqB,EAAGC,GAIb0kB,EAAI3kB,EAAE+F,WAAY9F,EAG3B,IAAI4oB,EAAU7oB,IAAY,OAANA,EAClB,MAAO2kB,IAAK3kB,EAAGC,EAEjB,IAAI4oB,EAAU5oB,IAAY,OAANA,EAClB,MAAO0kB,GAAI3kB,GAAIC,EAGjB,MAAM,IAAIjE,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUgE,GAAIhE,EAAK,UAAUiE,IAGrF,GAAImC,UAAU9B,OAAS,EAAG,CAExB,IAAK,GAAIF,GAAI,EAAGA,EAAIgC,UAAU9B,OAAQF,IACpCJ,EAAI2kB,EAAI3kB,EAAGoC,UAAUhC,GAEvB,OAAOJ,GAIT,KAAM,IAAImE,aAAY,iDA6BrB,SAASrJ,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAsIzB,QAAS2uB,GAAQ3qB,EAAGC,GAClB,IAAKD,EAAEuqB,UAAYtqB,EAAEsqB,QACnB,KAAM,IAAIxuB,OAAM,qDAGlB,IAAIiE,EAAEyqB,UAAYxqB,EAAEwqB,SAClB,MAAO,IAAI/tB,GAAU,EAMvB,KADA,GAAIgrB,GAAO1nB,EAAE8pB,MAAM7pB,IACXA,EAAEwqB,UAAU,CAClB,GAAIG,GAAI3qB,CACRA,GAAID,EAAEqhB,IAAIuJ,GACV5qB,EAAI4qB,EAEN,MAAOlD,GAAKxkB,IAAIlD,GAAG+B,MAtJrB,GAAIoD,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxB4a,EAAene,EAAWme,YA+B9B7f,GAAK4oB,IAAM,QAASA,KAClB,GAEIgG,GAFA5qB,EAAIoC,UAAU,GACdnC,EAAImC,UAAU,EAGlB,IAAwB,GAApBA,UAAU9B,OAAa,CAEzB,GAAIU,EAAShB,IAAMgB,EAASf,GAAI,CAC9B,IAAKgB,EAAUjB,KAAOiB,EAAUhB,GAC9B,KAAM,IAAIlE,OAAM,qDAGlB,IAAS,GAALiE,GAAe,GAALC,EACZ,MAAO,EAMT,KADA,GAAIynB,GAAO1nB,EAAIC,EACH,GAALA,GACL2qB,EAAI3qB,EACJA,EAAID,EAAI4qB,EACR5qB,EAAI4qB,CAEN,OAAO1pB,MAAKa,IAAI2lB,EAAO1nB,GAIzB,GAAI6b,EAAa7b,IAAM6b,EAAa5b,GAClC,MAAOvC,GAAWqe,SAAS/b,EAAGC,EAAG2kB,EAGnC,IAAI5kB,YAAatD,GASf,MAPIsE,GAASf,GACXA,EAAIvD,EAAUM,QAAQiD,IAEf4oB,EAAU5oB,IAAY,OAANA,KACvBA,EAAI,GAAIvD,GAAUuD,EAAI,EAAI,IAGxBA,YAAavD,GACRiuB,EAAQ3qB,EAAGC,GAIb2kB,EAAI5kB,EAAE+F,WAAY9F,EAE3B,IAAIA,YAAavD,GASf,MAPIsE,GAAShB,GACXA,EAAItD,EAAUM,QAAQgD,IAEf6oB,EAAU7oB,IAAY,OAANA,KACvBA,EAAI,GAAItD,GAAUsD,EAAI,EAAI,IAGxBA,YAAatD,GACRiuB,EAAQ3qB,EAAGC,GAIb2kB,EAAI5kB,EAAE+F,WAAY9F,EAG3B,IAAI4oB,EAAU7oB,IAAY,OAANA,EAClB,MAAO4kB,IAAK5kB,EAAGC,EAEjB,IAAI4oB,EAAU5oB,IAAY,OAANA,EAClB,MAAO2kB,GAAI5kB,GAAIC,EAGjB,MAAM,IAAIjE,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUgE,GAAIhE,EAAK,UAAUiE,IAGrF,GAAImC,UAAU9B,OAAS,EAAG,CAExB,IAAK,GAAIF,GAAI,EAAGA,EAAIgC,UAAU9B,OAAQF,IACpCJ,EAAI4kB,EAAI5kB,EAAGoC,UAAUhC,GAEvB,OAAOJ,GAIT,KAAM,IAAImE,aAAY,iDAkCrB,SAASrJ,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YAoC9B7f,GAAKoQ,IAAM,QAASA,GAAInN,EAAG2M,GACzB,GAAwB,GAApBxJ,UAAU9B,OAAa,CAEzB,GAAIU,EAAS/B,GACX,MAAIA,IAAK,EACAiC,KAAKkL,IAAInN,GAITmN,EAAI,GAAIjP,GAAQ8B,EAAG,GAI9B,IAAIsG,EAAUtG,GACZ,MAAO,IAAI9B,GACP+D,KAAKkL,IAAIlL,KAAKiC,KAAKlE,EAAEgF,GAAKhF,EAAEgF,GAAKhF,EAAEiF,GAAKjF,EAAEiF,KAC1ChD,KAAKiF,MAAMlH,EAAEiF,GAAIjF,EAAEgF,IAIzB,IAAIhF,YAAavC,GACf,MAAIuC,GAAEorB,aAEGje,EAAInN,EAAE8G,YAGN9G,EAAEgE,IAIb,IAAI4Y,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGmN,EAG/B,IAAIyc,EAAU5pB,IAAY,OAANA,EAClB,MAAOmN,IAAKnN,EAGd,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,IAE7D,GAAwB,GAApBmD,UAAU9B,OAEjB,MAAOtE,GAAKooB,OAAOhY,EAAInN,GAAImN,EAAIR,GAG/B,MAAM,IAAI5P,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAAG,MAQjE,SAASxF,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA2B9B7f,GAAK6oB,MAAQ,QAASA,GAAM5lB,GAC1B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,IAAIU,EAAS/B,GACX,MAAIA,IAAK,EACAiC,KAAKkL,IAAInN,GAAKiC,KAAKqC,KAInBshB,EAAM,GAAI1nB,GAAQ8B,EAAG,GAIhC,IAAIA,YAAavC,GACf,MAAIuC,GAAEorB,aAEGxF,EAAM5lB,EAAE8G,YAGR9G,EAAEmN,KAIb,IAAI7G,EAAUtG,GACZ,MAAO,IAAI9B,GACP+D,KAAKkL,IAAIlL,KAAKiC,KAAKlE,EAAEgF,GAAKhF,EAAEgF,GAAKhF,EAAEiF,GAAKjF,EAAEiF,KAAOhD,KAAKqC,KACtDrC,KAAKiF,MAAMlH,EAAEiF,GAAIjF,EAAEgF,IAAM/C,KAAKqC,KAIpC,IAAIsY,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAG4lB,EAG/B,IAAIgE,EAAU5pB,IAAY,OAANA,EAClB,MAAO4lB,IAAO5lB,EAGhB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUiD,OAOjE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmHzB,QAAS6uB,GAAK5rB,EAAGuD,GACf,GAAIA,EAAI,EAIN,MAAOvD,GAAIuD,EAAItB,KAAKwjB,MAAMzlB,EAAIuD,EAE3B,IAAS,GAALA,EACP,MAAOvD,EAIP,MAAM,IAAIlD,OAAM,+CA9HpB,GAAIoJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BhN,EAAene,EAAWme,YAqC9B7f,GAAKqlB,IAAM,QAASA,GAAIpiB,EAAGuD,GACzB,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAK/D,IAAIU,EAAS/B,IACP+B,EAASwB,GAEX,MAAOqoB,GAAK5rB,EAAGuD,EAInB,IAAIvD,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACR8F,EAAEioB,SAAWxrB,EAAIA,EAAEoiB,IAAI7e,GAIzB6e,EAAIpiB,EAAE8G,WAAYvD,EAE3B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACR8F,EAAEioB,SAAWxrB,EAAIA,EAAEoiB,IAAI7e,GAIzB6e,EAAIpiB,EAAGuD,EAAEuD,WAKlB,IAAI8V,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG6e,EAGnC,IAAIwH,EAAU5pB,IAAY,OAANA,EAClB,MAAOoiB,IAAKpiB,EAAGuD,EAEjB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO6e,GAAIpiB,GAAIuD,EAGjB,MAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OA8BlF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAASmB,GAqPxB,QAAS8uB,GAAsB7rB,EAAGuD,GAOhC,IAAK,GALDgI,MACA4X,EAAOnjB,EAAEqB,OACT+hB,EAAO7f,EAAE,GAAGlC,OACZ4G,EAAMjI,EAAE,GAAGqB,OAENiE,EAAI,EAAO6d,EAAJ7d,EAAUA,IAAK,CAC7BiG,EAAIjG,KACJ,KAAK,GAAI7I,GAAI,EAAO2mB,EAAJ3mB,EAAUA,IAAK,CAE7B,IAAK,GADDqvB,GAAS,KACJ3d,EAAI,EAAOlG,EAAJkG,EAASA,IAAK,CAC5B,GAAIzR,GAAIK,EAAK8oB,SAAS7lB,EAAEsF,GAAG6I,GAAI5K,EAAE4K,GAAG1R,GACpCqvB,GAAqB,OAAXA,EAAmBpvB,EAAIK,EAAKkoB,IAAI6G,EAAQpvB,GAEpD6O,EAAIjG,GAAG7I,GAAKqvB,GAIhB,GAAI3iB,GAAoB,IAATga,GAAuB,IAATC,CAC7B,OAAOja,GAAWoC,EAAI,GAAG,GAAKA,EAWhC,QAASwgB,GAAsB/rB,EAAGuD,GAMhC,IAAK,GAJDgI,MACA4X,EAAO5f,EAAElC,OACT+hB,EAAO7f,EAAE,GAAGlC,OAEP5E,EAAI,EAAO2mB,EAAJ3mB,EAAUA,IAAK,CAE7B,IAAK,GADDqvB,GAAS,KACJxmB,EAAI,EAAO6d,EAAJ7d,EAAUA,IAAK,CAC7B,GAAI5I,GAAIK,EAAK8oB,SAAS7lB,EAAEsF,GAAI/B,EAAE+B,GAAG7I,GACjCqvB,GAAgB,IAANxmB,EAAW5I,EAAIK,EAAKkoB,IAAI6G,EAAQpvB,GAE5C6O,EAAI9O,GAAKqvB,EAGX,MAAsB,KAAfvgB,EAAIlK,OAAekK,EAAI,GAAKA,EAWrC,QAASygB,GAAsBhsB,EAAGuD,GAMhC,IAAK,GAJDgI,MACA4X,EAAOnjB,EAAEqB,OACT+hB,EAAOpjB,EAAE,GAAGqB,OAEPiE,EAAI,EAAO6d,EAAJ7d,EAAUA,IAAK,CAE7B,IAAK,GADDwmB,GAAS,KACJrvB,EAAI,EAAO2mB,EAAJ3mB,EAAUA,IAAK,CAC7B,GAAIC,GAAIK,EAAK8oB,SAAS7lB,EAAEsF,GAAG7I,GAAI8G,EAAE9G,GACjCqvB,GAAgB,IAANrvB,EAAWC,EAAIK,EAAKkoB,IAAI6G,EAAQpvB,GAE5C6O,EAAIjG,GAAKwmB,EAGX,MAAsB,KAAfvgB,EAAIlK,OAAekK,EAAI,GAAKA,EAWrC,QAAS0gB,GAAsBjsB,EAAGuD,GAEhC,GAAInC,GAAMpB,EAAEqB,MAEZ,KAAKD,EACH,KAAM,IAAItE,OAAM,oCAIlB,KAAK,GADDoqB,GAAM,EACD/lB,EAAI,EAAOC,EAAJD,EAASA,IACvB+lB,EAAMnqB,EAAKkoB,IAAIiC,EAAKnqB,EAAK8oB,SAAS7lB,EAAEmB,GAAIoC,EAAEpC,IAE5C,OAAO+lB,GAUT,QAASgF,GAAkBlsB,EAAGuD,GAK5B,MAAY,IAARvD,EAAEiF,GAEQ,GAAR1B,EAAE0B,GAEG,GAAI/G,GAAQ8B,EAAEgF,GAAKzB,EAAEyB,GAAI,GAEjB,GAARzB,EAAEyB,GAEF,GAAI9G,GACP,EACA8B,EAAEgF,GAAKzB,EAAE0B,IAKN,GAAI/G,GACP8B,EAAEgF,GAAKzB,EAAEyB,GACThF,EAAEgF,GAAKzB,EAAE0B,IAIA,GAARjF,EAAEgF,GAEG,GAARzB,EAAE0B,GAEG,GAAI/G,GACP,EACA8B,EAAEiF,GAAK1B,EAAEyB,IAGE,GAARzB,EAAEyB,GAEF,GAAI9G,IAAS8B,EAAEiF,GAAK1B,EAAE0B,GAAI,GAI1B,GAAI/G,IACN8B,EAAEiF,GAAK1B,EAAE0B,GACVjF,EAAEiF,GAAK1B,EAAEyB,IAMH,GAARzB,EAAE0B,GAEG,GAAI/G,GACP8B,EAAEgF,GAAKzB,EAAEyB,GACThF,EAAEiF,GAAK1B,EAAEyB,IAGE,GAARzB,EAAEyB,GAEF,GAAI9G,IACN8B,EAAEiF,GAAK1B,EAAE0B,GACVjF,EAAEgF,GAAKzB,EAAE0B,IAKN,GAAI/G,GACP8B,EAAEgF,GAAKzB,EAAEyB,GAAKhF,EAAEiF,GAAK1B,EAAE0B,GACvBjF,EAAEgF,GAAKzB,EAAE0B,GAAKjF,EAAEiF,GAAK1B,EAAEyB,IAhajC,GAAIkB,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAC7BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCyL,EAAQzB,EAAKyB,MACb5F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBnG,EAAUD,MAAMC,QAChBgG,EAAS7H,EAAK6H,MAiClBpJ,GAAK8oB,SAAW,QAASA,GAAS7lB,EAAGuD,GACnC,GAAIgI,EAEJ,IAAwB,GAApBpI,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,WAAYzB,UAAU9B,OAAQ,EAGpE,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GAEX,MAAOvD,GAAIuD,CAER,IAAI+C,EAAU/C,GAEjB,MAAO2oB,GAAkB,GAAIhuB,GAAQ8B,EAAG,GAAIuD,EAEzC,IAAI4C,EAAO5C,GAGd,MAFAgI,GAAMhI,EAAE3F,QACR2N,EAAInL,MAAuB,OAAdmL,EAAInL,MAAkBmL,EAAIM,WAAW7L,GAAMuL,EAAInL,MAAQJ,EAC7DuL;CAIX,GAAIjF,EAAUtG,GAAI,CAChB,GAAI+B,EAASwB,GAEX,MAAO2oB,GAAkBlsB,EAAG,GAAI9B,GAAQqF,EAAG,GAExC,IAAI+C,EAAU/C,GAEjB,MAAO2oB,GAAkBlsB,EAAGuD,GAIhC,GAAIvD,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAE6qB,MAAMtnB,GAIVsiB,EAAS7lB,EAAE8G,WAAYvD,EAEhC,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAE6qB,MAAMtnB,GAIVsiB,EAAS7lB,EAAGuD,EAAEuD,WAGvB,IAAIX,EAAOnG,IACL+B,EAASwB,GAGX,MAFAgI,GAAMvL,EAAEpC,QACR2N,EAAInL,MAAuB,OAAdmL,EAAInL,MAAkBmL,EAAIM,WAAWtI,GAAMgI,EAAInL,MAAQmD,EAC7DgI,CAIX,IAAIpL,EAAQH,GAAI,CACd,GAAIG,EAAQoD,GAAI,CAEd,GAAI4oB,GAAQxkB,EAAMQ,KAAKnI,GACnBosB,EAAQzkB,EAAMQ,KAAK5E,EAEvB,IAAoB,GAAhB4oB,EAAM9qB,OAAa,CACrB,GAAoB,GAAhB+qB,EAAM/qB,OAAa,CAErB,GAAI8qB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,kFAENF,EAAM,GACjB,UAAYC,EAAM,GAAK,KACvBD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAOH,GAAsBjsB,EAAGuD,GAE7B,GAAoB,GAAhB6oB,EAAM/qB,OAAa,CAE1B,GAAI8qB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,gFAENF,EAAM,GACjB,UAAYC,EAAM,GAAK,IAAMA,EAAM,GAAK,KACxCD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAOL,GAAsB/rB,EAAGuD,GAGhC,KAAM,IAAIzG,OAAM,wDACAsvB,EAAM/qB,OAAS,gBAG9B,GAAoB,GAAhB8qB,EAAM9qB,OAAa,CAC1B,GAAoB,GAAhB+qB,EAAM/qB,OAAa,CAErB,GAAI8qB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,mFAENF,EAAM,GAAK,IAAMA,EAAM,GAClC,UAAYC,EAAM,GAAK,KACvBD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAOJ,GAAsBhsB,EAAGuD,GAE7B,GAAoB,GAAhB6oB,EAAM/qB,OAAa,CAE1B,GAAI8qB,EAAM,IAAMC,EAAM,GACpB,KAAM,IAAIC,YAAW,iFAENF,EAAM,GAAK,IAAMA,EAAM,GAClC,UAAYC,EAAM,GAAK,IAAMA,EAAM,GAAK,KACxCD,EAAM,GAAK,OAASC,EAAM,GAAK,IAGrC,OAAOP,GAAsB7rB,EAAGuD,GAGhC,KAAM,IAAIzG,OAAM,wDACAsvB,EAAM/qB,OAAS,gBAIjC,KAAM,IAAIvE,OAAM,wDACAqvB,EAAM9qB,OAAS,gBAG9B,MAAIkC,aAAalF,IAEpBkN,EAAMsa,EAAS7lB,EAAGuD,EAAEjD,WACbH,EAAQoL,GAAO,GAAIlN,GAAOkN,GAAOA,GAIjC9M,EAAWqe,SAAS9c,EAAGuD,EAAGsiB,GAIrC,GAAI7lB,YAAa3B,GACf,MAAIkF,aAAalF,IAEfkN,EAAMsa,EAAS7lB,EAAEM,UAAWiD,EAAEjD,WACvBH,EAAQoL,GAAO,GAAIlN,GAAOkN,GAAOA,IAKxCA,EAAMsa,EAAS7lB,EAAEM,UAAWiD,GACrBpD,EAAQoL,GAAO,GAAIlN,GAAOkN,GAAOA,EAI5C,IAAIpL,EAAQoD,GAEV,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGsiB,EAE9B,IAAItiB,YAAalF,GAEpB,MAAO,IAAIA,GAAOI,EAAWqe,SAAS9c,EAAGuD,EAAEjD,UAAWulB,GAGxD,IAAI+D,EAAU5pB,IAAY,OAANA,EAClB,MAAO6lB,IAAU7lB,EAAGuD,EAEtB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOsiB,GAAS7lB,GAAIuD,EAGtB,MAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,WAAYhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAiMvF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE7ByL,EAAQzL,EAAoB,KAE5BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAG7B6F,GAFa7F,EAAoB,IAEtBgK,EAAKhJ,OAAO6E,UACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBnG,EAAUD,MAAMC,OAwClBpD,GAAK+oB,KAAO,QAASA,GAAK9lB,EAAGtD,GAC3B,GAAIyG,UAAU9B,OAAS,GAAK8B,UAAU9B,OAAS,EAC7C,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAAG,EAGlE,IAAIU,EAAS/B,GAEX,MAAOiC,MAAKa,IAAI9C,EAGlB,IAAIsG,EAAUtG,GAEZ,MAAOiC,MAAKiC,KAAKlE,EAAEgF,GAAKhF,EAAEgF,GAAKhF,EAAEiF,GAAKjF,EAAEiF,GAG1C,IAAIjF,YAAavC,GAEf,MAAOuC,GAAE8C,KAGX,IAAI8mB,EAAU5pB,IAAY,OAANA,EAElB,MAAOiC,MAAKa,IAAI9C,EAGlB,IAAIG,EAAQH,GAAI,CAEd,GAAImsB,GAAQxkB,EAAMQ,KAAKnI,EAKvB,IAHS,MAALtD,IACFA,EAAI,GAEc,GAAhByvB,EAAM9qB,OAAa,CAErB,GAAI3E,IAAM2D,OAAOisB,mBAA2B,QAAN5vB,EAAa,CAEjD,GAAIyR,EAMJ,OALApR,GAAKoC,QAAQa,EAAG,SAAUI,GACxB,GAAImsB,GAAIxvB,EAAK+F,IAAI1C,KACZ+N,GAAKpR,EAAKorB,OAAOoE,EAAGpe,MACvBA,EAAIoe,KAEDpe,EAET,GAAIzR,IAAM2D,OAAOmsB,mBAA2B,SAAN9vB,EAAc,CAElD,GAAIyR,EAMJ,OALApR,GAAKoC,QAAQa,EAAG,SAAUI,GACxB,GAAImsB,GAAIxvB,EAAK+F,IAAI1C,KACZ+N,GAAKpR,EAAKsrB,QAAQkE,EAAGpe,MACxBA,EAAIoe,KAEDpe,EAET,GAAU,QAANzR,EACA,MAAOopB,GAAK9lB,EAChB,IAAI+B,EAASrF,KAAO4F,MAAM5F,GAAI,CAE5B,IAAKK,EAAK0vB,MAAM/vB,EAAG,GAAI,CAErB,GAAIyR,GAAI,CAIR,OAHApR,GAAKoC,QAAQa,EAAG,SAAUI,GACxB+N,EAAIpR,EAAKkoB,IAAIloB,EAAK+S,IAAI/S,EAAK+F,IAAI1C,GAAQ1D,GAAIyR,KAEtCpR,EAAK+S,IAAI3B,EAAG,EAAIzR,GAEzB,MAAO2D,QAAOisB,kBAGhB,KAAM,IAAIxvB,OAAM,+BAEb,GAAoB,GAAhBqvB,EAAM9qB,OAAa,CAE1B,GAAS,GAAL3E,EAAQ,CAIV,IAAK,GAFDD,MAEK0E,EAAI,EAAGA,EAAInB,EAAEqB,OAAQF,IAG5B,IAAK,GAFDmE,GAAItF,EAAEmB,GAEDob,EAAI,EAAGA,EAAIjX,EAAEjE,OAAQkb,IAC5B9f,EAAE8f,GAAKxf,EAAKkoB,IAAIxoB,EAAE8f,IAAM,EAAGxf,EAAK+F,IAAIwC,EAAEiX,IAG1C,OAAOxf,GAAKuC,IAAI7C,GAElB,GAAIC,GAAK2D,OAAOisB,mBAA2B,QAAN5vB,EAAa,CAIhD,IAAK,GAFDyR,GAAI,EAEChN,EAAI,EAAGA,EAAInB,EAAEqB,OAAQF,IAAK,CAIjC,IAAK,GAHDurB,GAAK,EACLpnB,EAAItF,EAAEmB,GAEDob,EAAI,EAAGA,EAAIjX,EAAEjE,OAAQkb,IAC5BmQ,EAAK3vB,EAAKkoB,IAAIyH,EAAI3vB,EAAK+F,IAAIwC,EAAEiX,IAE3Bxf,GAAKorB,OAAOuE,EAAIve,KAClBA,EAAIue,GAER,MAAOve,GAET,GAAU,QAANzR,EAAa,CAEf,GAAIuR,GAAIlR,EAAKkqB,KAAKlqB,EAAK8oB,SAAS9oB,EAAK0qB,UAAUznB,GAAIA,IAC/CoW,EAAI,CAIR,OAHArZ,GAAKoC,QAAQ8O,EAAG,SAAU7N,GACxBgW,EAAIrZ,EAAKkoB,IAAI7kB,EAAOgW,KAEfrZ,EAAKmH,KAAKkS,GAEnB,GAAS,GAAL1Z,EAEF,KAAM,IAAII,OAAM,6FAGlB,MAAM,IAAIA,OAAM,gCAIpB,GAAIkD,YAAa3B,GACf,MAAOynB,GAAK9lB,EAAEM,UAAW5D,EAG3B,MAAM,IAAIK,GAAKkB,MAAM8G,qBAAqB,OAAQ/E,MAOjD,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6HzB,QAAS4vB,GAAS5rB,EAAGrF,GACnB,GAAIkxB,GAAiB3sB,QAARvE,EAAqBA,EAAO,EACrC2rB,EAAc,EAARuF,CAGV,IAFIvF,IAAKuF,GAASA,GAEL,GAATA,EAAY,KAAM,IAAI9vB,OAAM,wBAChC,IAAQ,EAAJiE,GAAUkB,KAAKa,IAAI8pB,GAAS,GAAK,EAAI,KAAM,IAAI9vB,OAAM,uCAGzD,IAAS,GAALiE,EAAQ,MAAO,EACnB,KAAKV,OAAOmD,SAASzC,GACnB,MAAOsmB,GAAM,EAAItmB,CAGnB,IAAI3D,GAAU,MACV4C,EAAI,EACJmB,EAAI,EACJ0rB,EAAO,GACX,GAAG,CACD,GAAIC,IAAS/rB,EAAIkB,KAAK6N,IAAI9P,EAAG4sB,EAAQ,GAAK5sB,GAAK4sB,CAC/C5sB,IAAQ8sB,EACR3rB,UAEKc,KAAKa,IAAIgqB,GAAS1vB,GAAeyvB,EAAJ1rB,EAEpC,OAAOkmB,GAAM,EAAIrnB,EAAIA,EAUvB,QAAS+sB,GAAYhsB,EAAGrF,GACtB,GAAIkxB,GAAiB3sB,QAARvE,EAAqBA,EAAO,GAAI+B,GAAU,GACnD8tB,EAAO,GAAI9tB,GAAU,GACrBuvB,EAAM,GAAIvvB,GAAU,GACpB4pB,EAAMuF,EAAMxB,YAGhB,IAFI/D,IAAKuF,EAAQA,EAAMK,WAEnBL,EAAMpB,SAAU,KAAM,IAAI1uB,OAAM,wBACpC,IAAIiE,EAAEqqB,eAAiBwB,EAAM9pB,MAAMsf,IAAI,GAAGjb,OAAO,GAAI,KAAM,IAAIrK,OAAM,uCAGrE,IAAIiE,EAAEyqB,SAAU,MAAOD,EACvB,KAAKxqB,EAAEyC,WAEL,MAAO6jB,GAAMkE,EAAOxqB,CAGtB,IAAIf,GAAIgtB,EACJ7rB,EAAI,EACJ0rB,EAAO,GACX,GAAG,CACD,GAAIK,GAAQltB,EACR8sB,EAAQ/rB,EAAEkD,IAAIjE,EAAE8P,IAAI8c,EAAMjD,MAAM,KAAKA,MAAM3pB,GAAGiE,IAAI2oB,EACtD5sB,GAAIA,EAAE4qB,KAAKkC,GACX3rB,WAEMnB,EAAEmH,OAAO+lB,IAAcL,EAAJ1rB,EAE3B,OAAOkmB,GAAM2F,EAAI/oB,IAAIjE,GAAKA,EA3L5B,GAAIkG,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BhN,EAAene,EAAWme,YA8B9B7f,GAAKgpB,QAAU,QAASA,GAAShlB,EAAGrF,GAClC,GAAwB,GAApByH,UAAU9B,QAAmC,GAApB8B,UAAU9B,OACrC,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAAG,EAGtE,QAAO8B,UAAU9B,QACf,IAAK,GACH,GAAIU,EAAShB,GACX,MAAO4rB,GAAS5rB,EAEb,IAAIA,YAAatD,GACpB,MAAOsvB,GAAYhsB,EAEhB,IAAI6b,EAAa7b,GACpB,MAAOtC,GAAWoe,QAAQ7c,EAAG+lB,EAG/B,IAAI6D,EAAU7oB,IAAY,OAANA,EAClB,MAAOglB,IAAShlB,EAGlB,MAEF,KAAK,GACH,GAAIgB,EAAShB,GAAI,CACf,GAAIgB,EAASrG,GACX,MAAOixB,GAAS5rB,EAAGrF,EAEhB,IAAIA,YAAgB+B,GAIvB,MAFAsD,GAAItD,EAAUM,QAAQgD,GAElBA,YAAatD,GACRsvB,EAAYhsB,EAAGrF,GAIfixB,EAAS5rB,EAAGrF,EAAKoL,gBAIzB,CAAA,GAAI/F,YAAatD,GAMpB,MAJIsE,GAASrG,KACXA,EAAO+B,EAAUM,QAAQrC,IAGvBA,YAAgB+B,GACXsvB,EAAYhsB,EAAGrF,GAIfixB,EAAS5rB,EAAE+F,WAAYpL,EAG7B,IAAIkhB,EAAa7b,KAAO6b,EAAalhB,GACxC,MAAO+C,GAAWqe,SAAS/b,EAAGrF,EAAMqqB,GAGtC,GAAI6D,EAAU7oB,IAAY,OAANA,EAClB,MAAOglB,IAAShlB,EAAGrF,EAErB,IAAIkuB,EAAUluB,IAAkB,OAATA,EACrB,MAAOqqB,GAAQhlB,GAAIrF,EAGrB,MAEF,SACE,KAAM,IAAIqB,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAAG,GAGxE,GAAIuoB,EAAU5pB,IAAY,OAANA,EAClB,MAA2B,IAApBmD,UAAU9B,OAAc0kB,GAAS/lB,EAAGmO,GAAK4X,GAAS/lB,EAI3D,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,UAAWhI,EAAK,UAAUgE,GAAIhE,EAAK,UAAUrB,OAgFtF,SAASG,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAwKzB,QAASowB,GAAYntB,EAAGuD,GAGtB,GAAI6pB,GAAQrwB,EAAKoQ,IAAInN,GACjBqtB,EAAQtwB,EAAK8oB,SAASuH,EAAO7pB,EACjC,OAAOxG,GAAKwoB,IAAI8H,GA5KlB,GAAInnB,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAG7ByL,GAFazL,EAAoB,IAEzBgK,EAAKyB,OACb5F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BzpB,EAAUD,MAAMC,QAChB6B,EAAYkE,EAAKhJ,OAAO8E,UACxBsE,EAAYpI,EAAQoI,SA6BxBvJ,GAAK+S,IAAM,QAASA,GAAI9P,EAAGuD,GACzB,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GACX,MAAIvB,GAAUuB,IAAMvD,GAAK,EAEhBiC,KAAK6N,IAAI9P,EAAGuD,GAGZ4pB,EAAW,GAAIjvB,GAAQ8B,EAAG,GAAI,GAAI9B,GAAQqF,EAAG,GAGnD,IAAI+C,EAAU/C,GACjB,MAAO4pB,GAAW,GAAIjvB,GAAQ8B,EAAG,GAAIuD,GAIzC,GAAI+C,EAAUtG,GAAI,CAChB,GAAI+B,EAASwB,GACX,MAAO4pB,GAAWntB,EAAG,GAAI9B,GAAQqF,EAAG,GAEjC,IAAI+C,EAAU/C,GACjB,MAAO4pB,GAAWntB,EAAGuD,GAIzB,GAAIvD,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACX8F,EAAEvB,cAAgBhC,EAAEorB,aACfprB,EAAE8P,IAAIvM,GAINuM,EAAI9P,EAAE8G,WAAYvD,EAAEuD,YAKtBgJ,EAAI9P,EAAE8G,WAAYvD,EAI7B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACX8F,EAAEvB,cAAgBhC,EAAEorB,aACfprB,EAAE8P,IAAIvM,GAINuM,EAAI9P,EAAE8G,WAAYvD,EAAEuD,YAKtBgJ,EAAI9P,EAAGuD,EAAEuD,WAIpB,IAAI3G,EAAQH,GAAI,CACd,IAAK+B,EAASwB,KAAOvB,EAAUuB,IAAU,EAAJA,EACnC,KAAM,IAAI5C,WAAU,mDACD4C,EAAI,IAGzB,IAAI6S,GAAIzO,EAAMQ,KAAKnI,EACnB,IAAgB,GAAZoW,EAAE/U,OACJ,KAAM,IAAIvE,OAAM,2CACAsZ,EAAE/U,OAAS,eAE7B,IAAI+U,EAAE,IAAMA,EAAE,GACZ,KAAM,IAAItZ,OAAM,sCACEsZ,EAAE,GAAK,IAAMA,EAAE,GAAK,IAMxC,KAFA,GAAI7K,GAAMxO,EAAKoqB,IAAI/Q,EAAE,IAAI9V,UACrBgtB,EAAKttB,EACFuD,GAAK,GACK,IAAN,EAAJA,KACHgI,EAAMxO,EAAK8oB,SAASyH,EAAI/hB,IAE1BhI,IAAM,EACN+pB,EAAKvwB,EAAK8oB,SAASyH,EAAIA,EAEzB,OAAO/hB,GAEJ,GAAIvL,YAAa3B,GACpB,MAAO,IAAIA,GAAOyR,EAAI9P,EAAEM,UAAWiD,GAGrC,IAAIqmB,EAAU5pB,IAAY,OAANA,EAClB,MAAO8P,IAAK9P,EAAGuD,EAEjB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOuM,GAAI9P,GAAIuD,EAGjB,MAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAsBlF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA+HzB,QAASwwB,GAAantB,EAAOzC,GAC3B,GAAIjB,GAAIuF,KAAK6N,IAAI,GAAInS,EACrB,OAAOsE,MAAKC,MAAM9B,EAAQ1D,GAAKA,EAhIjC,GAAIwJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBC,EAAYkE,EAAKhJ,OAAO8E,UACxB4nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YAiC9B7f,GAAKmF,MAAQ,QAASA,GAAMlC,EAAGmO,GAC7B,GAAwB,GAApBhL,UAAU9B,QAAmC,GAApB8B,UAAU9B,OACrC,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAAG,EAGpE,IAASpB,QAALkO,EAAgB,CAElB,GAAIpM,EAAS/B,GACX,MAAOiC,MAAKC,MAAMlC,EAGpB,IAAIsG,EAAUtG,GACZ,MAAO,IAAI9B,GACP+D,KAAKC,MAAMlC,EAAEgF,IACb/C,KAAKC,MAAMlC,EAAEiF,IAInB,IAAIjF,YAAavC,GACf,MAAOuC,GAAEwtB,gBAAgB,EAG3B,IAAI5Q,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGkC,EAG/B,IAAI0nB,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAKC,MAAMlC,EAGpB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUiD,IAIlE,IAAK+B,EAASoM,KAAOnM,EAAUmM,GAAI,CACjC,KAAIA,YAAa1Q,IAGZ,CAAA,GAAImsB,EAAUzb,IAAY,OAANnO,EACvB,MAAOkC,GAAMlC,GAAImO,EAGjB,MAAM,IAAIxN,WAAU,2DANpBwN,EAAIlL,WAAWkL,EAAE7N,WASrB,GAAQ,EAAJ6N,GAASA,EAAI,GACf,KAAM,IAAIrR,OAAO,mEAGnB,IAAIiF,EAAS/B,GACX,MAAOutB,GAAYvtB,EAAGmO,EAGxB,IAAI7H,EAAUtG,GACZ,MAAO,IAAI9B,GACPqvB,EAAYvtB,EAAEgF,GAAImJ,GAClBof,EAAYvtB,EAAEiF,GAAIkJ,GAIxB,IAAInO,YAAavC,GACf,MAAOuC,GAAEwtB,gBAAgBrf,EAG3B,IAAIyO,EAAa5c,IAAM4c,EAAazO,GAClC,MAAO1P,GAAWqe,SAAS9c,EAAGmO,EAAGjM,EAGnC,IAAI0nB,EAAU5pB,IAAY,OAANA,EAClB,MAAOkC,IAAOlC,EAAGmO,EAGnB,MAAM,IAAIpR,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUoR,OAoBtF,SAAStS,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCgB,EAASgJ,EAAKhJ,OACd6E,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YAgC9B7f,GAAKoF,KAAO,QAASA,GAAKnC,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAO9C,GAAOiF,KAAKnC,EAGrB,IAAIsG,EAAUtG,GAAI,CAChB,GAAI8C,GAAMb,KAAKiC,KAAKlE,EAAEgF,GAAKhF,EAAEgF,GAAKhF,EAAEiF,GAAKjF,EAAEiF,GAC3C,OAAO,IAAI/G,GAAQ8B,EAAEgF,GAAKlC,EAAK9C,EAAEiF,GAAKnC,GAGxC,GAAI9C,YAAavC,GACf,MAAO,IAAIA,GAAUuC,EAAEytB,IAAI,GAG7B,IAAI7Q,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGmC,EAG/B,IAAIynB,EAAU5pB,IAAY,OAANA,EAClB,MAAO9C,GAAOiF,KAAKnC,EAGrB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA0B9B7f,GAAKmH,KAAO,QAASA,GAAMlE,GACzB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAIA,IAAK,EACAiC,KAAKiC,KAAKlE,GAGVkE,EAAK,GAAIhG,GAAQ8B,EAAG,GAI/B,IAAIsG,EAAUtG,GAAI,CAChB,GAEIgF,GAAIC,EAFJK,EAAIrD,KAAKiC,KAAKlE,EAAEgF,GAAKhF,EAAEgF,GAAKhF,EAAEiF,GAAKjF,EAAEiF,GAkBzC,OAbED,GADEhF,EAAEgF,IAAM,EACL,GAAM/C,KAAKiC,KAAK,GAAOoB,EAAItF,EAAEgF,KAG7B/C,KAAKa,IAAI9C,EAAEiF,IAAMhD,KAAKiC,KAAK,GAAKoB,EAAItF,EAAEgF,KAI3CC,EADEjF,EAAEgF,IAAM,EACL,GAAM/C,KAAKiC,KAAK,GAAOoB,EAAItF,EAAEgF,KAG7B/C,KAAKa,IAAI9C,EAAEiF,IAAMhD,KAAKiC,KAAK,GAAKoB,EAAItF,EAAEgF,KAGzChF,EAAEiF,IAAM,EACH,GAAI/G,GAAQ8G,EAAIC,GAGhB,GAAI/G,GAAQ8G,GAAKC,GAI5B,GAAIjF,YAAavC,GACf,MAAIuC,GAAEorB,aAEGlnB,EAAKlE,EAAE8G,YAGP9G,EAAEkE,MAIb,IAAI0Y,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGkE,EAG/B,IAAI0lB,EAAU5pB,IAAY,OAANA,EAClB,MAAOkE,IAAMlE,EAGf,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,YA4B9B7f,GAAKipB,OAAS,QAASA,GAAOhmB,GAC5B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,IAAIU,EAAS/B,GACX,MAAOA,GAAIA,CAGb,IAAIsG,EAAUtG,GACZ,MAAOjD,GAAK8oB,SAAS7lB,EAAGA,EAG1B,IAAIA,YAAavC,GACf,MAAOuC,GAAE6qB,MAAM7qB,EAGjB,IAAI4c,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGgmB,EAG/B,IAAI4D,EAAU5pB,IAAY,OAANA,EAClB,MAAOA,GAAIA,CAGb,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUiD,OAOlE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAE9BoC,GADSpC,EAAoB,GACtBA,EAAoB,KAC3BuC,EAAavC,EAAoB,IAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B7nB,EAAWmE,EAAKhJ,OAAO6E,SACvBuE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAmC9B7f,GAAKkpB,SAAW,QAASA,GAASjmB,EAAGuD,GACnC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,WAAYzB,UAAU9B,OAAQ,EAGpE,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GAEX,MAAOvD,GAAIuD,CAER,IAAI+C,EAAU/C,GAEjB,MAAO,IAAIrF,GACP8B,EAAIuD,EAAEyB,IACJzB,EAAE0B,QAIP,IAAIqB,EAAUtG,GAAI,CACrB,GAAI+B,EAASwB,GAEX,MAAO,IAAIrF,GACP8B,EAAEgF,GAAKzB,EACPvD,EAAEiF,GAGH,IAAIqB,EAAU/C,GAEjB,MAAO,IAAIrF,GACP8B,EAAEgF,GAAKzB,EAAEyB,GACThF,EAAEiF,GAAK1B,EAAE0B,IAKjB,GAAIjF,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAE2pB,MAAMpmB,GAIV0iB,EAASjmB,EAAE8G,WAAYvD,EAEhC,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAE2pB,MAAMpmB,GAIV0iB,EAASjmB,EAAGuD,EAAEuD,WAGvB,IAAIX,EAAOnG,IACLmG,EAAO5C,GAAI,CACb,GAAe,MAAXvD,EAAEI,MACJ,KAAM,IAAItD,OAAM,mDAGlB,IAAe,MAAXyG,EAAEnD,MACJ,KAAM,IAAItD,OAAM,mDAGlB,KAAKkD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,qBAGlB,IAAIyO,GAAMvL,EAAEpC,OAIZ,OAHA2N,GAAInL,OAASmD,EAAEnD,MACfmL,EAAIO,WAAY,EAETP,EAIX,GAAIqR,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG0iB,EAGnC,IAAI2D,EAAU5pB,IAAY,OAANA,EAClB,MAAOimB,IAAUjmB,EAAGuD,EAEtB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO0iB,GAASjmB,GAAIuD,EAGtB,MAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,WAAYhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOvF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAyB9B7f,GAAKmpB,WAAa,QAASA,GAAWlmB,GACpC,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,aAAczB,UAAU9B,OAAQ,EAGtE,IAAIU,EAAS/B,GACX,OAAQA,CAGV,IAAIsG,EAAUtG,GACZ,MAAO,IAAI9B,IACN8B,EAAEgF,IACFhF,EAAEiF,GAIT,IAAIjF,YAAavC,GACf,MAAOuC,GAAEyrB,KAGX,IAAItlB,EAAOnG,GAAI,CACb,GAAIuL,GAAMvL,EAAEpC,OAEZ,OADA2N,GAAInL,OAASJ,EAAEI,MACRmL,EAGT,GAAIqR,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGkmB,EAG/B,IAAI0D,EAAU5pB,IAAMoG,EAASpG,IAAY,OAANA,EAEjC,MAAyB,aAAjBpD,EAAOM,OAAyB,GAAIO,IAAWuC,IAAKA,CAG9D,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,aAAchI,EAAK,UAAUiD,KAIzEjD,EAAK2wB,MAAQ,WACX,KAAM,IAAI5wB,OAAM,4DAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA0B9B7f,GAAKopB,UAAY,QAASA,GAAUnmB,GAClC,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAGrE,IAAIU,EAAS/B,GACX,MAAOA,EAGT,IAAIsG,EAAUtG,GACZ,MAAOA,GAAEpC,OAGX,IAAIoC,YAAavC,GACf,MAAOuC,EAGT,IAAImG,EAAOnG,GACT,MAAOA,GAAEpC,OAGX,IAAIgf,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGmmB,EAG/B,IAAIyD,EAAU5pB,IAAMoG,EAASpG,IAAY,OAANA,EAEjC,MAAyB,aAAjBpD,EAAOM,OAAyB,GAAIO,IAAWuC,IAAKA,CAG9D,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,YAAahI,EAAK,UAAUiD,OAOrE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAkG/B,QAAS+wB,GAAM5sB,EAAGC,GAQhB,IANA,GAAI2qB,GACAiC,EACAtoB,EACAtF,EAAI,EAAG6tB,EAAQ,EACftqB,EAAI,EAAGuqB,EAAQ,EAEZ9sB,GACL4sB,EAAI3rB,KAAKwjB,MAAM1kB,EAAIC,GACnBsE,EAAIvE,EAAIC,EAER2qB,EAAI3rB,EACJA,EAAI6tB,EAAQD,EAAI5tB,EAChB6tB,EAAQlC,EAERA,EAAIpoB,EACJA,EAAIuqB,EAAQF,EAAIrqB,EAChBuqB,EAAQnC,EAER5qB,EAAIC,EACJA,EAAIsE,CAGN,IAAIiG,EAOJ,OALEA,GADM,EAAJxK,IACMA,GAAI8sB,GAAQC,IAGb/sB,EAAGA,EAAI8sB,EAAQ,EAAGC,GAED,UAAlBlxB,EAAOK,OAAsBsO,EAAM,GAAIlN,GAAOkN,GAUxD,QAASwiB,GAAShtB,EAAGC,GASnB,IAPA,GAAI2qB,GACAiC,EACAtoB,EACAimB,EAAO,GAAI9tB,GAAU,GACrBuC,EAAI,GAAIvC,GAAU,GAAIowB,EAAQ,GAAIpwB,GAAU,GAC5C8F,EAAI,GAAI9F,GAAU,GAAIqwB,EAAQ,GAAIrwB,GAAU,IAExCuD,EAAEwqB,UACRoC,EAAI7sB,EAAEkD,IAAIjD,GAAGykB,QACbngB,EAAIvE,EAAEqhB,IAAIphB,GAEV2qB,EAAI3rB,EACJA,EAAI6tB,EAAMlE,MAAMiE,EAAE/C,MAAM7qB,IACxB6tB,EAAQlC,EAERA,EAAIpoB,EACJA,EAAIuqB,EAAMnE,MAAMiE,EAAE/C,MAAMtnB,IACxBuqB,EAAQnC,EAER5qB,EAAIC,EACJA,EAAIsE,CAGN,IAAIiG,EAOJ,OALEA,GADExK,EAAEga,GAAGwQ,IACAxqB,EAAE0qB,MAAOoC,EAAMpC,MAAOqC,EAAMrC,QAG5B1qB,EAAIA,EAAEyqB,SAAmB,EAARqC,EAAWC,GAEX,UAAlBlxB,EAAOK,OAAsBsO,EAAM,GAAIlN,GAAOkN,GA1KxD,GAAIrF,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAC7BuB,EAAYV,EAAKS,KAAKC,UAEtBsE,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,SAyB5BjF,GAAKqpB,KAAO,QAASA,GAAKrlB,EAAGC,GAC3B,GAAwB,GAApBmC,UAAU9B,OAAa,CAEzB,GAAIU,EAAShB,IAAMgB,EAASf,GAAI,CAC9B,IAAKgB,EAAUjB,KAAOiB,EAAUhB,GAC9B,KAAM,IAAIlE,OAAM,sDAGlB,OAAO6wB,GAAM5sB,EAAGC,GAGlB,GAAID,YAAatD,GASf,MAPIsE,GAASf,GACXA,EAAIvD,EAAUM,QAAQiD,IAEf4oB,EAAU5oB,IAAY,OAANA,KACvBA,EAAI,GAAIvD,GAAUuD,EAAI,EAAI,IAGxBA,YAAavD,GACRswB,EAAShtB,EAAGC,GAIdolB,EAAKrlB,EAAE+F,WAAY9F,EAE5B,IAAIA,YAAavD,GASf,MAPIsE,GAAShB,GACXA,EAAItD,EAAUM,QAAQgD,IAEf6oB,EAAU7oB,IAAY,OAANA,KACvBA,EAAI,GAAItD,GAAUsD,EAAI,EAAI,IAGxBA,YAAatD,GACRswB,EAAShtB,EAAGC,GAIdolB,EAAKrlB,EAAE+F,WAAY9F,EAG5B,IAAI4oB,EAAU7oB,IAAY,OAANA,EAClB,MAAOqlB,IAAMrlB,EAAGC,EAElB,IAAI4oB,EAAU5oB,IAAY,OAANA,EAClB,MAAOolB,GAAKrlB,GAAIC,EAGlB,MAAM,IAAIjE,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUgE,GAAIhE,EAAK,UAAUiE,IAItF,KAAM,IAAIkE,aAAY,0CA0FrB,SAASrJ,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtBgB,GAFSvC,EAAoB,GACtBA,EAAoB,IACdA,EAAoB,KAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxBD,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,aAE1BoR,EAAY9nB,EAAKxC,UAAU+gB,GAwB/B1nB,GAAKspB,OAAS,QAASA,GAAOrmB,EAAGuD,GAC/B,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAAI,CAC9B,IAAKvB,EAAUhC,KAAOgC,EAAUuB,GAC9B,KAAM,IAAIzG,OAAM,wDAGlB,OAAOkD,GAAIuD,EAGb,GAAIqZ,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG8iB,EAGnC,IAAIuD,EAAU5pB,IAAY,OAANA,EAClB,MAAOqmB,IAAQrmB,EAAGuD,EAEpB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO8iB,GAAOrmB,GAAIuD,EAGpB,IAAIvD,YAAavC,GAMf,MAJIsE,GAASwB,KACXA,EAAI9F,EAAUM,QAAQwF,IAGpBA,YAAa9F,GACRuwB,EAAUhuB,EAAGuD,GAIf8iB,EAAOrmB,EAAE8G,WAAYvD,EAE9B,IAAIA,YAAa9F,GAMf,MAJIsE,GAAS/B,KACXA,EAAIvC,EAAUM,QAAQiC,IAGpBA,YAAavC,GACRuwB,EAAUhuB,EAAGuD,GAIf8iB,EAAOrmB,EAAGuD,EAAEuD,WAGrB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOrF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtBgB,GAFSvC,EAAoB,GACtBA,EAAoB,IACdA,EAAoB,KAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxBD,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,aAE1BqR,EAAY/nB,EAAKxC,UAAU4e,GAwB/BvlB,GAAKupB,OAAS,QAASA,GAAOtmB,GAC5B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,IAAIU,EAAS/B,GAAI,CACf,IAAKgC,EAAUhC,GACb,KAAM,IAAIlD,OAAM,uDAGlB,QAAQkD,EAGV,GAAIA,YAAavC,GACf,MAAOwwB,GAAUjuB,EAGnB,IAAI4c,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGsmB,EAG/B,IAAIsD,EAAU5pB,IAAY,OAANA,EAClB,MAAOsmB,IAAQtmB,EAGjB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUiD,OAOlE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtBgB,GAFSvC,EAAoB,GACtBA,EAAoB,IACdA,EAAoB,KAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxBD,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,aAE1BsR,EAAWhoB,EAAKxC,UAAUihB,EAyB9B5nB,GAAKwpB,MAAQ,QAASA,GAAMvmB,EAAGuD,GAC7B,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAAI,CAC9B,IAAKvB,EAAUhC,KAAOgC,EAAUuB,GAC9B,KAAM,IAAIzG,OAAM,uDAGlB,OAAOkD,GAAIuD,EAGb,GAAIqZ,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGgjB,EAGnC,IAAIqD,EAAU5pB,IAAY,OAANA,EAClB,MAAOumB,IAAOvmB,EAAGuD,EAEnB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOgjB,GAAMvmB,GAAIuD,EAGnB,IAAIvD,YAAavC,GAMf,MAJIsE,GAASwB,KACXA,EAAI9F,EAAUM,QAAQwF,IAGpBA,YAAa9F,GACRywB,EAASluB,EAAGuD,GAIdgjB,EAAMvmB,EAAE8G,WAAYvD,EAE7B,IAAIA,YAAa9F,GAMf,MAJIsE,GAAS/B,KACXA,EAAIvC,EAAUM,QAAQiC,IAGpBA,YAAavC,GACRywB,EAASluB,EAAGuD,GAIdgjB,EAAMvmB,EAAGuD,EAAEuD,WAGpB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOpF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtBgB,GAFSvC,EAAoB,GACtBA,EAAoB,IACdA,EAAoB,KAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxBD,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,aAE1BuR,EAAYjoB,EAAKxC,UAAUghB,GAwB/B3nB,GAAKypB,OAAS,QAASA,GAAOxmB,EAAGuD,GAC/B,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAAI,CAC9B,IAAKvB,EAAUhC,KAAOgC,EAAUuB,GAC9B,KAAM,IAAIzG,OAAM,wDAGlB,OAAOkD,GAAIuD,EAGb,GAAIqZ,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGijB,EAGnC,IAAIoD,EAAU5pB,IAAY,OAANA,EAClB,MAAOwmB,IAAQxmB,EAAGuD,EAEpB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOijB,GAAOxmB,GAAIuD,EAGpB,IAAIvD,YAAavC,GAMf,MAJIsE,GAASwB,KACXA,EAAI9F,EAAUM,QAAQwF,IAGpBA,YAAa9F,GACR0wB,EAAUnuB,EAAGuD,GAIfijB,EAAOxmB,EAAE8G,WAAYvD,EAE9B,IAAIA,YAAa9F,GAMf,MAJIsE,GAAS/B,KACXA,EAAIvC,EAAUM,QAAQiC,IAGpBA,YAAavC,GACR0wB,EAAUnuB,EAAGuD,GAIfijB,EAAOxmB,EAAGuD,EAAEuD,WAGrB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOrF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtBgB,GAFSvC,EAAoB,GACtBA,EAAoB,IACdA,EAAoB,KAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxBD,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,aAE1BwR,EAAeloB,EAAKxC,UAAU+iB,SAyBlC1pB,GAAK0pB,UAAY,QAASA,GAAUzmB,EAAGuD,GACrC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAGrE,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GAAI,CACf,IAAKvB,EAAUhC,KAAOgC,EAAUuB,GAC9B,KAAM,IAAIzG,OAAM,2DAGlB,OAAOkD,IAAKuD,EAGd,GAAIA,YAAa9F,GACf,MAAO2wB,GAAa3wB,EAAUM,QAAQiC,GAAIuD,GAG9C,GAAIxB,EAASwB,GAAI,CACf,GAAIC,SAASD,KAAOvB,EAAUuB,GAC5B,KAAM,IAAIzG,OAAM,2DAGlB,IAAIkD,YAAavC,GAAW,CAC1B,GAAIuC,EAAEwD,aAAexD,EAAEgC,YACrB,KAAM,IAAIlF,OAAM,2DAGlB,OAAIkD,GAAEsC,SAAWA,MAAMiB,IAAU,EAAJA,EACpB,GAAI9F,GAAUmG,KAGd,GAALL,GAAUvD,EAAEwrB,SACPxrB,EAEAqC,KAALkB,GAAkBvD,EAAEwD,WAKhB,GAAJD,EACKvD,EAAE6qB,MAAM5oB,KAAK6N,IAAI,EAAGvM,GAAK,KAGlCA,EAAI9F,EAAUM,QAAQwF,GACf6qB,EAAapuB,EAAGuD,IATd,GAAI9F,GAAUmG,MAa3B,GAAIgZ,EAAa5c,IAAM+B,EAASwB,GAC9B,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGkjB,EAGnC,IAAImD,EAAU5pB,IAAY,OAANA,EAClB,MAAOymB,IAAWzmB,EAAGuD,EAEvB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOkjB,GAAUzmB,GAAIuD,EAGvB,IAAIvD,YAAavC,GACf,MAAI8F,aAAa9F,GACR2wB,EAAapuB,EAAGuD,GAIlBkjB,EAAUzmB,EAAE8G,WAAYvD,EAEjC,IAAIA,YAAa9F,GAEf,MAAOgpB,GAAUzmB,EAAGuD,EAAEuD,WAGxB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,YAAahI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOxF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtBgB,GAFSvC,EAAoB,GACtBA,EAAoB,IACdA,EAAoB,KAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxBD,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,aAE1ByR,EAAgBnoB,EAAKxC,UAAU4qB,UAyBnCvxB,GAAK2pB,gBAAkB,QAASA,GAAgB1mB,EAAGuD,GACjD,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,kBAAmBzB,UAAU9B,OAAQ,EAG3E,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GAAI,CACf,IAAKvB,EAAUhC,KAAOgC,EAAUuB,GAC9B,KAAM,IAAIzG,OAAM,iEAGlB,OAAOkD,IAAKuD,EAGd,GAAIA,YAAa9F,GACf,MAAO4wB,GAAc5wB,EAAUM,QAAQiC,GAAIuD,GAG/C,GAAIxB,EAASwB,GAAI,CACf,GAAIC,SAASD,KAAOvB,EAAUuB,GAC5B,KAAM,IAAIzG,OAAM,iEAGlB,IAAIkD,YAAavC,GAAW,CAC1B,GAAIuC,EAAEwD,aAAexD,EAAEgC,YACrB,KAAM,IAAIlF,OAAM,iEAGlB,OAAIkD,GAAEsC,SAAWA,MAAMiB,IAAU,EAAJA,EACpB,GAAI9F,GAAUmG,KAEdvB,KAALkB,EAEO,GAAI9F,GADTuC,EAAEorB,aACiB,GAElBprB,EAAEwD,WAGc,EAFEI,KAMjB,GAAJL,EACKvD,EAAEiE,IAAIhC,KAAK6N,IAAI,EAAGvM,GAAK,IAAIkiB,SAGpCliB,EAAI9F,EAAUM,QAAQwF,GACf8qB,EAAcruB,EAAGuD,KAI5B,GAAIqZ,EAAa5c,IAAM+B,EAASwB,GAC9B,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGmjB,EAGnC,IAAIkD,EAAU5pB,IAAY,OAANA,EAClB,MAAO0mB,IAAiB1mB,EAAGuD,EAE7B,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOmjB,GAAgB1mB,GAAIuD,EAG7B,IAAIvD,YAAavC,GACf,MAAI8F,aAAa9F,GACR4wB,EAAcruB,EAAGuD,GAInBmjB,EAAgB1mB,EAAE8G,WAAYvD,EAEvC,IAAIA,YAAa9F,GAEf,MAAOipB,GAAgB1mB,EAAGuD,EAAEuD,WAG9B,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,kBAAmBhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAO9F,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAI3BuC,GAFSvC,EAAoB,GACtBA,EAAoB,IACdA,EAAoB,KAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5B5nB,EAAYkE,EAAKhJ,OAAO8E,UACxBD,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,YAyB9B7f,GAAK4pB,cAAgB,QAASA,GAAc3mB,EAAGuD,GAC7C,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,gBAAiBzB,UAAU9B,OAAQ,EAGzE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAAI,CAC9B,IAAKvB,EAAUhC,KAAOgC,EAAUuB,GAC9B,KAAM,IAAIzG,OAAM,+DAGlB,OAAOkD,KAAMuD,EAGf,GAAIqZ,EAAa5c,IAAM+B,EAASwB,GAC9B,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGojB,EAGnC,IAAIiD,EAAU5pB,IAAY,OAANA,EAClB,MAAO2mB,IAAe3mB,EAAGuD,EAE3B,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAOojB,GAAc3mB,GAAIuD,EAG3B,MAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,gBAAiBhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAO5F,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BhN,EAAene,EAAWme,aAC1BtW,EAAYpI,EAAQoI,SA6BxBvJ,GAAKoI,IAAM,QAASA,GAAInF,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAOiC,MAAKiF,MAAM,EAAGlH,EAGvB,IAAIsG,EAAUtG,GACZ,MAAOiC,MAAKiF,MAAMlH,EAAEiF,GAAIjF,EAAEgF,GAG5B,IAAI4X,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGmF,EAG/B,IAAIykB,EAAU5pB,IAAY,OAANA,EAClB,MAAOmF,IAAKnF,EAGd,IAAIA,YAAavC,GAGf,MAAO0H,GAAInF,EAAE8G,WAGf,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCoB,EAAS4I,EAAK5I,OACdyE,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BhN,EAAcne,EAAWme,aACzBtW,EAAYpI,EAAQoI,SA2BxBvJ,GAAK6pB,KAAO,QAASA,GAAK5mB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,OAAIU,GAAS/B,GACJA,EAGLA,YAAavC,GACR,GAAIA,GAAUuC,GAGnBsG,EAAUtG,GACL,GAAI9B,GAAQ8B,EAAEgF,IAAKhF,EAAEiF,IAG1B2X,EAAa5c,GACRvB,EAAWoe,QAAQ7c,EAAG4mB,GAG3BgD,EAAU5pB,IAAY,OAANA,GACVA,EAIH1C,EAAOM,MAAMoC,MAOnB,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjCoB,EAAS4I,EAAK5I,OACdyE,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BhN,EAAene,EAAWme,aAC1BtW,EAAYpI,EAAQoI,SA6BxBvJ,GAAKiI,GAAK,QAASA,GAAGhF,GACpB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,KAAMzB,UAAU9B,OAAQ,EAG9D,OAAIU,GAAS/B,GACJA,EAGLA,YAAavC,GACR,GAAIA,GAAUuC,GAGnBsG,EAAUtG,GACLA,EAAEgF,GAGP4X,EAAa5c,GACRvB,EAAWoe,QAAQ7c,EAAGgF,GAG3B4kB,EAAU5pB,IAAY,OAANA,GACVA,EAIH1C,EAAOM,MAAMoC,MAOnB,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BhN,EAAcne,EAAWme,aACzBtW,EAAYpI,EAAQoI,SA6BxBvJ,GAAKkI,GAAK,QAASA,GAAGjF,GACpB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,KAAMzB,UAAU9B,OAAQ,EAG9D,OAAIU,GAAS/B,GACJ,EAGLA,YAAavC,GACR,GAAIA,GAAU,GAGnB6I,EAAUtG,GACLA,EAAEiF,GAGP2X,EAAa5c,GACRvB,EAAWoe,QAAQ7c,EAAGiF,IAG3B2kB,EAAU5pB,IAAY,OAANA,EAApB,MAYC,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAG3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC0gB,EAAene,EAAWme,aAC1B7a,EAAWmE,EAAKhJ,OAAO6E,SACvBqE,EAAWF,EAAKG,OAAOD,SACvBwjB,EAAY1jB,EAAK,WAAW0jB,SA2BhC7sB,GAAK2G,UAAY,QAASA,GAAUtD,GAClC,GAAI+C,UAAU9B,OAAS,EACrB,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAAG,EAGxE,IAAKjB,YAAiB3C,IAAcsE,EAAS3B,IAAUgG,EAAShG,GAC9D,MAAO,IAAI3C,GAAU2C,EAGvB,IAAIwpB,EAAUxpB,IAAoB,OAAVA,EACtB,MAAO,IAAI3C,IAAW2C,EAGxB,IAAIwc,EAAaxc,GACf,MAAO3B,GAAWoe,QAAQzc,EAAOsD,EAGnC,IAAwB,GAApBP,UAAU9B,OACZ,MAAO,IAAI5D,GAAU,EAGvB,MAAM,IAAIV,GAAKkB,MAAM8G,qBAAqB,YAAahI,EAAK,UAAUqD,OAOrE,SAASvE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC0gB,EAAene,EAAWme,aAC1B7a,EAAWmE,EAAKhJ,OAAO6E,SACvBqE,EAAWF,EAAKG,OAAOD,QA6B3BrJ,GAAK,WAAa,QAASwxB,GAAMnuB,GAC/B,GAAwB,GAApB+C,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAAG,EAGtE,IAAc,SAAVjB,GAAoBA,KAAU,EAChC,OAAO,CAGT,IAAc,UAAVA,GAAqBA,KAAU,GAAmB,OAAVA,EAC1C,OAAO,CAGT,IAAIA,YAAiBI,SACnB,MAAgB,IAATJ,CAGT,IAAI2B,EAAS3B,GACX,MAAkB,KAAVA,CAGV,IAAIA,YAAiB3C,GACnB,OAAQ2C,EAAMorB,QAGhB,IAAIplB,EAAShG,GAAQ,CAEnB,GAAIouB,GAAQpuB,EAAMquB,aAClB,IAAc,SAAVD,EACF,OAAO,CAEJ,IAAc,UAAVA,EACP,OAAO,CAIT,IAAIvmB,GAAM5H,OAAOD,EACjB,IAAa,IAATA,IAAgBkC,MAAM2F,GACxB,MAAgB,KAARA,EAIZ,GAAI2U,EAAaxc,GACf,MAAO3B,GAAWoe,QAAQzc,EAAOmuB,EAGnC,MAAM,IAAIrpB,aAAY9E,EAAMmH,WAAa,2BAOxC,SAAS1L,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC0gB,EAAene,EAAWme,aAC1B7a,EAAWmE,EAAKhJ,OAAO6E,SACvBqE,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,SAwCxBvJ,GAAK8pB,QAAU,QAASA,KACtB,OAAQ1jB,UAAU9B,QAChB,IAAK,GAEH,MAAO,IAAInD,GAAQ,EAAG,EAExB,KAAK,GAEH,GAAIiH,GAAMhC,UAAU,EAEpB,IAAIpB,EAASoD,GACX,MAAO,IAAIjH,GAAQiH,EAAK,EAG1B,IAAIA,YAAe1H,GAEjB,MAAO,IAAIS,GAAQiH,EAAI2B,WAAY,EAGrC,IAAIR,EAAUnB,GAEZ,MAAOA,GAAIvH,OAGb,IAAIwI,EAASjB,GAAM,CACjB,GAAI1I,GAAIyB,EAAQU,MAAMuG,EACtB,IAAI1I,EACF,MAAOA,EAGP,MAAM,IAAIyI,aAAY,WAAaC,EAAM,gCAI7C,GAAIyX,EAAazX,GACf,MAAO1G,GAAWoe,QAAQ1X,EAAK0hB,EAGjC,IAAmB,gBAAR1hB,GAAkB,CAC3B,GAAG,MAAQA,IAAO,MAAQA,GACxB,MAAO,IAAIjH,GAAQiH,EAAIH,GAAIG,EAAIF,GAC1B,IAAI,KAAOE,IAAO,OAASA,GAChC,MAAOjH,GAAQmH,UAAUF,EAAIG,EAAGH,EAAIpB,KAIxC,KAAM,IAAIpD,WAAU,+EAEtB,KAAK,GAEH,GAAIqE,GAAK7B,UAAU,GACf8B,EAAK9B,UAAU,EAYnB,IATI6B,YAAcvH,KAChBuH,EAAKA,EAAG8B,YAIN7B,YAAcxH,KAChBwH,EAAKA,EAAG6B,YAGN/E,EAASiD,IAAOjD,EAASkD,GAC3B,MAAO,IAAI/G,GAAQ8G,EAAIC,EAGvB,MAAM,IAAItE,WAAU,8DAGxB,SACE,KAAM,IAAI5D,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAAG,OAQvE,SAASxF,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAEIU,IAFOvB,EAAoB,KAEfa,EAAKS,KAAKC,WACtBW,EAAQlC,EAAoB,EAyChCa,GAAKqC,MAAQ,WAEX,GAAIwI,GAAO1H,MAAMpC,UAAU2sB,MAAMzhB,MAAM7F,WAAW9D,IAAI,SAAU8F,GAC9D,MAAIA,aAAe1H,GACV0H,EAAI2B,WAEJ5G,MAAMC,QAAQgF,GACdA,EAAI9F,IAAI,SAAU2L,GACvB,MAAQA,aAAgBvN,GAAauN,EAAKlE,WAAakE,IAIlD7F,IAIPoG,EAAM,GAAInN,EAEd,OADAA,GAAM4K,MAAMuC,EAAK3D,GACV2D,KAON,SAAS1P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GACIsB,IADOnC,EAAoB,KAClBA,EAAoB,GA2BjCa,GAAKE,OAAS,SAAgBsM,GAC5B,GAAIpG,UAAU9B,OAAS,EACrB,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAAG,EAGrE,OAAO,IAAIhD,GAAOkL,MAOjB,SAAS1N,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBa,EAAOvB,EAAKS,KAAKc,KACjBG,EAAavC,EAAoB,IAEjC0gB,EAAene,EAAWme,aAC1B7a,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,QA2B3BrJ,GAAKG,OAAS,QAASA,GAAQkD,EAAO0M,GACpC,OAAQ3J,UAAU9B,QAChB,IAAK,GACH,MAAO,EAET,KAAK,GACH,GAAIub,EAAaxc,GACf,MAAO3B,GAAWoe,QAAQzc,EAAOlD,EAGnC,IAAIkD,YAAiB3C,GACnB,MAAO2C,GAAM0G,UAGf,IAAIV,EAAShG,GAAQ,CACnB,GAAI6H,GAAM5H,OAAOD,EAIjB,IAHIkC,MAAM2F,KACRA,EAAM5H,OAAOD,EAAME,YAEjBgC,MAAM2F,GACR,KAAM,IAAI/C,aAAY9E,EAAMmH,WAAa,sBAE3C,OAAOU,GAGT,GAAI2hB,EAAUxpB,IAAoB,OAAVA,EACtB,OAAQA,CAGV,IAAI2B,EAAS3B,GACX,MAAOA,EAGT,IAAIA,YAAiB9B,GACnB,KAAM,IAAIxB,OAAM,+CAGlB,MAAM,IAAIC,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUqD,GAErE,KAAK,GACH,GAAIA,YAAiB9B,IAAQ8H,EAAS0G,IAAkBA,YAAyBxO,GAC/E,MAAO8B,GAAM0G,SAASgG,EAGxB,MAAM,IAAI/P,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUqD,GAAQrD,EAAK,UAAU+P,GAG5F,SACE,KAAM,IAAI/P,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAAG,OAQtE,SAASxF,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI8B,GAAS3C,EAAoB,GA6CjCa,GAAK4e,OAAS,WACZ,MAAO,IAAI9c,GAAO9B,MAOjB,SAASlB,GAEd,YAEAA,GAAOD,QAAU,SAAUmB,GAoCzBA,EAAKoV,MAAQ,SAAS/R,GAEpB,MAAO,IAAIrD,GAAK4C,SAASC,MAAMQ,IAIjCrD,EAAK2xB,OAAS,SAAStuB,GAUrB,MARIuuB,UAAkC,kBAAhBA,SAAQxhB,KAC5BwhB,QAAQxhB,IAAI,oFAIdpQ,EAAK2xB,OAAS3xB,EAAKoV,MACnBpV,EAAK4C,SAASC,MAAM9B,UAAkB,OAAIf,EAAK2xB,OAExC3xB,EAAKoV,MAAM/R,MAOjB,SAASvE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuC,EAAavC,EAAoB,IAEjCgB,EAASgJ,EAAKhJ,OACd6E,EAAWmE,EAAKhJ,OAAO6E,SACvB6a,EAAene,EAAWme,YA2B9B7f,GAAKsJ,OAAS,QAASA,GAAQjG,GAC7B,OAAQ+C,UAAU9B,QAChB,IAAK,GACH,MAAO,EAET,KAAK,GACH,MAAIU,GAAS3B,GACJlD,EAAOkF,OAAOhC,GAGnBwc,EAAaxc,GACR3B,EAAWoe,QAAQzc,EAAOiG,GAGrB,OAAVjG,EACK,OAGFA,EAAMmH,UAEf,SACE,KAAM,IAAIxK,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAAG,OAQtE,SAASxF,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBa,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC0gB,EAAene,EAAWme,aAC1BxW,EAAWF,EAAKG,OAAOD,QAyB3BrJ,GAAK0O,KAAO,QAASA,GAAK7D,GACxB,OAAOzE,UAAU9B,QACf,IAAK,GAEH,GAAI8D,GAAMhC,UAAU,EAEpB,IAAIgC,YAAe7G,GAEjB,MAAO6G,GAAIvH,OAGb,IAAIwI,EAASjB,GAAM,CACjB,GAAI7G,EAAKoO,gBAAgBvH,GACvB,MAAO,IAAI7G,GAAK,KAAM6G,EAGxB,IAAI+I,GAAI5P,EAAKM,MAAMuG,EACnB,IAAI+I,EACF,MAAOA,EAGT,MAAM,IAAIhJ,aAAY,WAAaC,EAAM,sBAG3C,GAAIyX,EAAahV,GACf,MAAOnJ,GAAWoe,QAAQjV,EAAM6D,EAGlC,MAAM,IAAI9K,WAAU,4DAEtB,KAAK,GAGH,MAAIwC,WAAU,YAAc1F,GAEnB,GAAIa,GAAK6E,UAAU,GAAG2D,WAAY3D,UAAU,IAG5C,GAAI7E,GAAK6E,UAAU,GAAIA,UAAU,GAG5C,SACE,KAAM,IAAIpG,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAAG,OAQpE,SAASxF,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA8B9B7f,GAAK0nB,IAAM,QAASA,GAAIzkB,EAAGuD,GACzB,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,KAAKU,EAAS/B,IAAM4pB,EAAU5pB,IAAY,OAANA,KAC/B+B,EAASwB,IAAMqmB,EAAUrmB,IAAY,OAANA,GAClC,SAAUvD,IAAKuD,EAGjB,IAAI+C,EAAUtG,GACZ,MAAY,IAARA,EAAEgF,IAAmB,GAARhF,EAAEiF,IACV,EAGFwf,GAAI,EAAMlhB,EAEnB,IAAI+C,EAAU/C,GACZ,MAAY,IAARA,EAAEyB,IAAmB,GAARzB,EAAE0B,IACV,EAGFwf,EAAIzkB,GAAG,EAGhB,IAAIA,YAAavC,GACf,MAAIuC,GAAEwrB,UAAYxrB,EAAEsC,SACX,EAGFmiB,GAAI,EAAMlhB,EAEnB,IAAIA,YAAa9F,GACf,MAAI8F,GAAEioB,UAAYjoB,EAAEjB,SACX,EAGFmiB,EAAIzkB,GAAG,EAGhB,IAAImG,EAAOnG,GACT,MAAgB,QAAZA,EAAEI,OAA6B,GAAXJ,EAAEI,OACjB,EAGFqkB,GAAI,EAAMlhB,EAEnB,IAAI4C,EAAO5C,GACT,MAAgB,QAAZA,EAAEnD,OAA6B,GAAXmD,EAAEnD,OACjB,EAGFqkB,EAAIzkB,GAAG,EAGhB,IAAI4c,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGkhB,EAGnC,MAAM,IAAI1nB,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOlF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA2B9B7f,GAAKulB,IAAM,QAASA,GAAItiB,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,IAAM4pB,EAAU5pB,IAAY,OAANA,EACjC,OAAQA,CAGV,IAAIsG,EAAUtG,GACZ,MAAe,IAARA,EAAEgF,IAAmB,GAARhF,EAAEiF,EAGxB,IAAIjF,YAAavC,GACf,MAAOuC,GAAEwrB,UAAYxrB,EAAEsC,OAGzB,IAAI6D,EAAOnG,GACT,MAAmB,QAAZA,EAAEI,OAA6B,GAAXJ,EAAEI,KAG/B,IAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGsiB,EAG/B,MAAM,IAAIvlB,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA8B9B7f,GAAK4nB,GAAK,QAASA,GAAG3kB,EAAGuD,GACvB,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,KAAMzB,UAAU9B,OAAQ,EAG9D,KAAKU,EAAS/B,IAAM4pB,EAAU5pB,IAAY,OAANA,KAC/B+B,EAASwB,IAAMqmB,EAAUrmB,IAAY,OAANA,GAClC,SAAUvD,IAAKuD,EAGjB,IAAI+C,EAAUtG,GACZ,MAAY,IAARA,EAAEgF,IAAmB,GAARhF,EAAEiF,GACV0f,GAAG,EAAOphB,IAEZ,CAET,IAAI+C,EAAU/C,GACZ,MAAY,IAARA,EAAEyB,IAAmB,GAARzB,EAAE0B,GACV0f,EAAG3kB,GAAG,IAER,CAGT,IAAIA,YAAavC,GACf,MAAIuC,GAAEwrB,UAAYxrB,EAAEsC,QACXqiB,GAAG,EAAOphB,IAEZ,CAET,IAAIA,YAAa9F,GACf,MAAI8F,GAAEioB,UAAYjoB,EAAEjB,QACXqiB,EAAG3kB,GAAG,IAER,CAGT,IAAImG,EAAOnG,GACT,MAAgB,QAAZA,EAAEI,OAA6B,GAAXJ,EAAEI,MACjBukB,GAAG,EAAOphB,IAEZ,CAET,IAAI4C,EAAO5C,GACT,MAAgB,QAAZA,EAAEnD,OAA6B,GAAXmD,EAAEnD,MACjBukB,EAAG3kB,GAAG,IAER,CAGT,IAAI4c,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGohB,EAGnC,MAAM,IAAI5nB,GAAKkB,MAAM8G,qBAAqB,KAAMhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOjF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA8B9B7f,GAAK2nB,IAAM,QAASA,GAAI1kB,EAAGuD,GACzB,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,KAAKU,EAAS/B,IAAM4pB,EAAU5pB,IAAY,OAANA,KAC/B+B,EAASwB,IAAMqmB,EAAUrmB,IAAY,OAANA,GAClC,WAAYvD,IAAMuD,EAGpB,IAAI+C,EAAUtG,GACZ,MAAO0kB,KAAc,GAAR1kB,EAAEgF,IAAmB,GAARhF,EAAEiF,IAAU1B,EAExC,IAAI+C,EAAU/C,GACZ,MAAOmhB,GAAI1kB,IAAa,GAARuD,EAAEyB,IAAmB,GAARzB,EAAE0B,IAGjC,IAAIjF,YAAavC,GACf,MAAOinB,KAAM1kB,EAAEwrB,UAAYxrB,EAAEsC,SAAUiB,EAEzC,IAAIA,YAAa9F,GACf,MAAOinB,GAAI1kB,IAAKuD,EAAEioB,UAAYjoB,EAAEjB,SAGlC,IAAI6D,EAAOnG,GACT,MAAO0kB,KAAkB,OAAZ1kB,EAAEI,OAA6B,GAAXJ,EAAEI,OAAamD,EAElD,IAAI4C,EAAO5C,GACT,MAAOmhB,GAAI1kB,IAAiB,OAAZuD,EAAEnD,OAA6B,GAAXmD,EAAEnD,OAGxC,IAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGmhB,EAGnC,MAAM,IAAI3nB,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOlF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmHzB,QAAS6xB,GAAQ7tB,EAAGC,EAAG6tB,EAAW3lB,GAChC,GAAU2lB,EAAN3lB,EAAiB,CAEnB,GAAInI,EAAEM,QAAUL,EAAEK,OAChB,KAAM,IAAItE,GAAKkB,MAAM4G,eAAe9D,EAAEM,OAAQL,EAAEK,OAIlD,KAAK,GADD5E,MACK0E,EAAI,EAAGA,EAAIJ,EAAEM,OAAQF,IAC5B1E,EAAE0E,GAAKytB,EAAQ7tB,EAAEI,GAAIH,EAAEG,GAAI0tB,EAAW3lB,EAAM,EAE9C,OAAOzM,GAIP,MAAOsE,GAAE9B,OAAO+B,GAjIpB,GAAIkF,GAAOhK,EAAoB,KAE3BuB,EAAYvB,EAAoB,KAChCmC,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjCoB,EAAS4I,EAAK5I,OACdqK,EAAQzB,EAAKyB,MACb5F,EAAWmE,EAAKhJ,OAAO6E,SACvBC,EAAYkE,EAAKhJ,OAAO8E,UACxB4a,EAAene,EAAWme,YA8B9B7f,GAAKkC,OAAS,WACZ,GAAIkC,GAGA2tB,EAFA1tB,EAAM+B,UAAU9B,OAChB6H,EAAM,GAEN6lB,GAAW,EACXC,IAEJ,KAAK7tB,EAAI,EAAOC,EAAJD,EAASA,IAAK,CACxB,GAAIgE,GAAMhC,UAAUhC,EAOpB,IAJIgE,YAAe9G,KACjB0wB,GAAW,GAGR5tB,GAAKC,EAAM,IAAOW,EAASoD,IAAQA,YAAe1H,IAAY,CAKjE,GAHAqxB,EAAU5lB,EACVA,EAAM/D,EAAI7E,WAEL0B,EAAUkH,GACb,KAAM,IAAIvI,WAAU,wCAGtB,IAAU,EAANuI,EAEF,KAAM,IAAInM,GAAKkB,MAAM6G,WAAWoE,EAElC,IAAI/H,EAAI,GAAK+H,EAAM4lB,EAEjB,KAAM,IAAI/xB,GAAKkB,MAAM6G,WAAWoE,EAAK4lB,EAAU,OAG9C,CAAA,IAAIlS,EAAazX,GAcpB,KAAM,IAAIpI,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUoI,GAZnE,IAAIlI,GAASK,EAAOM,MAAMuH,GAAK7E,UAC3B6H,EAAOR,EAAMQ,KAAKhD,EAAI7E,UAM1B,IALA0uB,EAAS7tB,GAAKlE,EACd6xB,EAAU5lB,EACVA,EAAMf,EAAK9G,OAAS,EAGhBF,EAAI,GAAK+H,GAAO4lB,EAClB,KAAM,IAAI/xB,GAAKkB,MAAM4G,eAAeiqB,EAAU,EAAG5lB,EAAM,IAQ7D,GAAuB,GAAnB8lB,EAAS3tB,OACX,KAAM,IAAI6D,aAAY,+BAIxB,KADA,GAAIqG,GAAMyjB,EAASC,QACZD,EAAS3tB,QACdkK,EAAMqjB,EAAQrjB,EAAKyjB,EAASC,QAAS/lB,EAAK,EAG5C,OAAO6lB,GAAW,GAAI1wB,GAAOkN,GAAOA,KAoCnC,SAAS1P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAASmB,GA6DxB,QAASmyB,GAAOlvB,EAAGuD,GACjB,GAAI4rB,GAAOxnB,EAAMQ,KAAKnI,GAClBovB,EAAQznB,EAAMQ,KAAK5E,EAEvB,IAAoB,GAAhB4rB,EAAM9tB,QAA+B,GAAhB+tB,EAAM/tB,QAA2B,GAAZ8tB,EAAM,IAAuB,GAAZC,EAAM,GACnE,KAAM,IAAI/C,YAAW,6CACL8C,EAAM7lB,KAAK,MAAQ,WAAa8lB,EAAM9lB,KAAK,MAAQ,KAGrE,QACEvM,EAAKkpB,SAASlpB,EAAK8oB,SAAS7lB,EAAE,GAAIuD,EAAE,IAAKxG,EAAK8oB,SAAS7lB,EAAE,GAAIuD,EAAE,KAC/DxG,EAAKkpB,SAASlpB,EAAK8oB,SAAS7lB,EAAE,GAAIuD,EAAE,IAAKxG,EAAK8oB,SAAS7lB,EAAE,GAAIuD,EAAE,KAC/DxG,EAAKkpB,SAASlpB,EAAK8oB,SAAS7lB,EAAE,GAAIuD,EAAE,IAAKxG,EAAK8oB,SAAS7lB,EAAE,GAAIuD,EAAE,MAxEnE,GAAIoE,GAAQzL,EAAoB,KAC5BmC,EAASnC,EAAoB,EA+BjCa,GAAKgqB,MAAQ,SAAe/mB,EAAGuD,GAC7B,GAAIvD,YAAa3B,GAAQ,CACvB,GAAIkF,YAAalF,GACf,MAAO,IAAIA,GAAO6wB,EAAOlvB,EAAEuI,UAAWhF,EAAEgF,WAErC,IAAIrI,MAAMC,QAAQoD,GACrB,MAAO,IAAIlF,GAAO6wB,EAAOlvB,EAAEuI,UAAWhF,QAGrC,IAAIrD,MAAMC,QAAQH,GAAI,CACzB,GAAIuD,YAAalF,GACf,MAAO,IAAIA,GAAO6wB,EAAOlvB,EAAGuD,EAAEgF,WAE3B,IAAIrI,MAAMC,QAAQoD,GACrB,MAAO2rB,GAAOlvB,EAAGuD,GAIrB,KAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OA8BpF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6FzB,QAASsyB,GAAMpyB,EAAQkmB,GACrB,GAAY,GAARA,EAEF,MAAO7lB,GAAOM,MAAMX,EAAO,GAAG,GAE3B,IAAY,GAARkmB,EAGP,MAAOpmB,GAAKkpB,SACRlpB,EAAK8oB,SAAS5oB,EAAO,GAAG,GAAIA,EAAO,GAAG,IACtCF,EAAK8oB,SAAS5oB,EAAO,GAAG,GAAIA,EAAO,GAAG,IAsC1C,KAAK,GAjCDqyB,GAAa,SAAUryB,GACzB,GAAIkE,GAAGob,EAKHgT,EAAK,GAAIrvB,OAAMjD,EAAOoE,QACtBsnB,EAAM,CACV,KAAKxnB,EAAI,EAAGA,EAAIlE,EAAOoE,OAAQF,IAC7BwnB,EAAM5rB,EAAKkoB,IAAI0D,EAAK1rB,EAAOkE,GAAGA,GAGhC,KAAKA,EAAI,EAAGA,EAAIlE,EAAOoE,OAAQF,IAAK,CAIlC,IAHAouB,EAAGpuB,GAAK,GAAIjB,OAAMjD,EAAOoE,QACzBkuB,EAAGpuB,GAAGA,GAAKpE,EAAKmpB,WAAWyC,GAEtBpM,EAAI,EAAOpb,EAAJob,EAAOA,IACjBgT,EAAGpuB,GAAGob,GAAK,CAGb,KAAKA,EAAIpb,EAAI,EAAGob,EAAItf,EAAOoE,OAAQkb,IACjCgT,EAAGpuB,GAAGob,GAAKtf,EAAOkE,GAAGob,EAGnBpb,GAAE,EAAIlE,EAAOoE,SACfsnB,EAAM5rB,EAAKkpB,SAAS0C,EAAK1rB,EAAOkE,EAAI,GAAGA,EAAI,KAI/C,MAAOouB,IAGLC,EAAKvyB,EACAkE,EAAI,EAAOgiB,EAAO,EAAXhiB,EAAcA,IAC5BquB,EAAKzyB,EAAK8oB,SAASyJ,EAAWE,GAAKvyB,EAGrC,OAAIkmB,GAAO,GAAK,EACPpmB,EAAKmpB,WAAWsJ,EAAG,GAAG,IAEtBA,EAAG,GAAG,GAnJnB,GAAItpB,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACd+I,EAASH,EAAKG,MA2BlBtJ,GAAKiqB,IAAM,SAAchnB,GACvB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAI8G,EAaJ,QAZInI,YAAa3B,GACf8J,EAAOnI,EAAEmI,OAEFnI,YAAaE,QACpBF,EAAI,GAAI3B,GAAO2B,GACfmI,EAAOnI,EAAEmI,QAITA,KAGMA,EAAK9G,QACX,IAAK,GAEH,MAAO/D,GAAOM,MAAMoC,EAEtB,KAAK,GAEH,GAAe,GAAXmI,EAAK,GACP,MAAO7K,GAAOM,MAAMoC,EAAEM,UAAU,GAGhC,MAAM,IAAI+rB,YAAW,gCACLhmB,EAAOjE,OAAO+F,GAAQ,IAG1C;IAAK,GAEH,GAAIgb,GAAOhb,EAAK,GACZib,EAAOjb,EAAK,EAChB,IAAIgb,GAAQC,EACV,MAAOiM,GAAKrvB,EAAEpC,QAAQ0C,UAAW6iB,EAAMC,EAGvC,MAAM,IAAIiJ,YAAW,gCACLhmB,EAAOjE,OAAO+F,GAAQ,IAG1C,SAEE,KAAM,IAAIkkB,YAAW,yCACLhmB,EAAOjE,OAAO+F,GAAQ,SA4EzC,SAAStM,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACd6C,EAAU+F,EAAKyB,MAAMxH,QACrB4B,EAAWmE,EAAKhJ,OAAO6E,SACvBC,EAAYkE,EAAKhJ,OAAO8E,SAmC5BjF,GAAKkqB,KAAO,SAAejnB,EAAG0N,GAC5B,GAAInE,GAAMkmB,EAAQtuB,EAAG0rB,CAErB,IAAwB,GAApB1pB,UAAU9B,QAAmC,GAApB8B,UAAU9B,OACrC,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAAG,EAGnE,IAAIqM,GAIF,GAFIA,YAAajQ,KAAWiQ,EAAIA,EAAE5G,aAE7B/E,EAAS2L,KAAO1L,EAAU0L,GAC7B,KAAM,IAAI/M,WAAW,4DAIvB+M,GAAI,CAEN,IAIIgiB,GAJAC,EAASjiB,EAAI,EAAIA,EAAI,EACrBkiB,EAAW,EAAJliB,GAASA,EAAI,CAIxB,IAAI1N,YAAa3B,GACfqxB,GAAU,MAEP,CAAA,IAAIvvB,EAAQH,GAMf,KAAM,IAAIW,WAAW,6DAJrBX,GAAI,GAAI3B,GAAO2B,GACf0vB,GAAU,EAMZ,GAAItZ,GAAIpW,EAAEmI,MACV,QAAQiO,EAAE/U,QACR,IAAK,GAEHouB,EAASzvB,EAAEM,SACX,IAAIrD,GAAS,GAAIoB,GACb+L,EAAgBqlB,EAAO,YAAchyB,GAAa,GAAIA,GAAU,GAAK,CAIzE,KAHAR,EAAO8N,QAAQ0kB,EAAOpuB,OAASuuB,EAAMH,EAAOpuB,OAASsuB,GAASvlB,GAC9Db,EAAOtM,EAAOqD,UACdusB,EAAO4C,EAAOpuB,OACTF,EAAI,EAAO0rB,EAAJ1rB,EAAUA,IACpBoI,EAAKpI,EAAIyuB,GAAMzuB,EAAIwuB,GAAUryB,EAAOM,MAAM6xB,EAAOtuB,GAEnD,OAAOuuB,GAAUzyB,EAAOqD,UAAYrD,CAEtC,KAAK,GAKH,IAHAwyB,KACAlmB,EAAOvJ,EAAEM,UACTusB,EAAO5qB,KAAKzC,IAAI4W,EAAE,GAAKwZ,EAAMxZ,EAAE,GAAKuZ,GAC/BxuB,EAAI,EAAO0rB,EAAJ1rB,EAAUA,IACpBsuB,EAAOtuB,GAAK7D,EAAOM,MAAM2L,EAAKpI,EAAIyuB,GAAMzuB,EAAIwuB,GAE9C,OAAOD,GAAUD,EAAS,GAAIpxB,GAAOoxB,EAEvC,SACE,KAAM,IAAIpD,YAAW,sDAQxB,SAASxwB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAASmB,GAwDxB,QAAS8yB,GAAK7vB,EAAGuD,GACf,GAAI4rB,GAAOxnB,EAAMQ,KAAKnI,GAClBovB,EAAQznB,EAAMQ,KAAK5E,GACnBnC,EAAM+tB,EAAM,EAEhB,IAAqB,IAAjBA,EAAM9tB,QAAiC,IAAjB+tB,EAAM/tB,OAAc,KAAM,IAAIgrB,YAAW,kBACnE,IAAI8C,EAAM,IAAMC,EAAM,GAAI,KAAM,IAAI/C,YAAW,mCAAqC8C,EAAM,GAAK,OAASC,EAAM,GAAK,IACnH,IAAW,GAAPhuB,EAAU,KAAM,IAAIirB,YAAW,oDAGnC,KAAK,GADD5D,GAAO,EACFtnB,EAAI,EAAOC,EAAJD,EAASA,IACvBsnB,EAAO1rB,EAAKkoB,IAAIwD,EAAM1rB,EAAK8oB,SAAS7lB,EAAEmB,GAAIoC,EAAEpC,IAG9C,OAAOsnB,GArET,GAAI9gB,GAAQzL,EAAoB,KAC5BmC,EAASnC,EAAoB,EAyBjCa,GAAKmqB,IAAM,SAAalnB,EAAGuD,GACzB,GAAIvD,YAAa3B,GAAQ,CACvB,GAAIkF,YAAalF,GACf,MAAOwxB,GAAK7vB,EAAEuI,UAAWhF,EAAEgF,UAExB,IAAIrI,MAAMC,QAAQoD,GACrB,MAAOssB,GAAK7vB,EAAEuI,UAAWhF,OAGxB,IAAIrD,MAAMC,QAAQH,GAAI,CACzB,GAAIuD,YAAalF,GACf,MAAOwxB,GAAK7vB,EAAGuD,EAAEgF,UAEd,IAAIrI,MAAMC,QAAQoD,GACrB,MAAOssB,GAAK7vB,EAAGuD,GAInB,KAAM,IAAIxG,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAgClF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBC,EAAYkE,EAAKhJ,OAAO8E,UACxB7B,EAAUD,MAAMC,OA2BpBpD,GAAKoqB,IAAM,SAAchf,GACvB,GAAIP,GAAOnJ,EAAWke,YAAYxZ,WAC9B4rB,EAAY5mB,YAAgB9J,IAAU,EACrC8B,EAAQgI,IAAQ,EAA2B,WAAlBvL,EAAOK,MAGrC,IAAmB,GAAf2K,EAAKvG,OAEP,MAAO0tB,GAAW,GAAI1wB,KAEnB,IAAmB,GAAfuJ,EAAKvG,OAEZuG,EAAK,GAAKA,EAAK,OAEZ,IAAIA,EAAKvG,OAAS,EAErB,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOgD,EAAKvG,OAAQ,EAAG,EAG7D,IAAI8hB,GAAOvb,EAAK,GACZwb,EAAOxb,EAAK,EAKhB,IAHIub,YAAgB1lB,KAAW0lB,EAAOA,EAAKrc,YACvCsc,YAAgB3lB,KAAW2lB,EAAOA,EAAKtc,aAEtC/E,EAASohB,KAAUnhB,EAAUmhB,IAAgB,EAAPA,EACzC,KAAM,IAAIrmB,OAAM,uDAElB,KAAKiF,EAASqhB,KAAUphB,EAAUohB,IAAgB,EAAPA,EACzC,KAAM,IAAItmB,OAAM,uDAIlB,IAAIgzB,IAAc,CAClBloB,GAAOA,EAAKvI,IAAI,SAAUe,GACxB,MAAIA,aAAiB3C,IACnBqyB,GAAc,EACP1vB,EAAM0G,YAEN1G,GAKX,IAAInD,GAAS,GAAIoB,GACb2uB,EAAM8C,EAAc,GAAIryB,GAAU,GAAK,EACvC2M,EAAe0lB,EAAc,GAAIryB,GAAU,GAAK,CACpDR,GAAO8N,OAAOnD,EAAMwC,EAKpB,KAAK,GAFD2lB,GAAUhzB,EAAKyC,IAAIoI,GACnB2B,EAAOtM,EAAOqD,UACT2N,EAAI,EAAO8hB,EAAJ9hB,EAAaA,IAC3B1E,EAAK0E,GAAGA,GAAK+e,CAGf,OAAO+B,GAAW9xB,EAASA,EAAOqD,aAOjC,SAASzE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACdqK,EAAQzB,EAAKyB,MACbxH,EAAUD,MAAMC,OAoBpBpD,GAAKqqB,QAAU,SAAkBpnB,GAC/B,GAAyB,IAArBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAIrB,YAAa3B,GAAQ,CACvB,GAAIT,GAAQN,EAAOM,MAAMoC,EAAEuI,WACvBynB,EAAOroB,EAAMyf,QAAQxpB,EACzB,OAAO,IAAIS,GAAO2xB,GAGpB,GAAI7vB,EAAQH,GACV,MAAO2H,GAAMyf,QAAQ9pB,EAAOM,MAAMoC,GAGpC,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,UAAWhI,EAAK,UAAUiD,OAOnE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAwFzB,QAASkzB,GAAMhzB,EAAQkmB,EAAMC,GAC3B,GAAI9d,GAAG8Q,EAAGhI,EAAGhO,EAAO8vB,CAEpB,IAAY,GAAR/M,EAAW,CAGb,GADA/iB,EAAQnD,EAAO,GAAG,GACL,GAATmD,EACF,KAAMtD,OAAM,gDAEd,SACEC,EAAKiuB,QAAQ,EAAG5qB,KAGf,GAAY,GAAR+iB,EAAW,CAElB,GAAIlV,GAAIlR,EAAKiqB,IAAI/pB,EACjB,IAAS,GAALgR,EACF,KAAMnR,OAAM,gDAEd,SAEIC,EAAKiuB,QAAQ/tB,EAAO,GAAG,GAAIgR,GAC3BlR,EAAKiuB,QAAQjuB,EAAKmpB,WAAWjpB,EAAO,GAAG,IAAKgR,KAG5ClR,EAAKiuB,QAAQjuB,EAAKmpB,WAAWjpB,EAAO,GAAG,IAAKgR,GAC5ClR,EAAKiuB,QAAQ/tB,EAAO,GAAG,GAAIgR,KAY/B,GAAI4I,GAAI5Z,EAAOgC,QACf,KAAKqG,EAAI,EAAO6d,EAAJ7d,EAAUA,IACpBuR,EAAEvR,GAAKuR,EAAEvR,GAAGrG,QAQd,KAAK,GAHD+Y,GAAIjb,EAAKoqB,IAAIhE,GAAM7iB,UAGd7D,EAAI,EAAO2mB,EAAJ3mB,EAAUA,IAAK,CAI7B,IADA6I,EAAI7I,EACO0mB,EAAJ7d,GAAuB,GAAXuR,EAAEvR,GAAG7I,IACtB6I,GAEF,IAAIA,GAAK6d,GAAmB,GAAXtM,EAAEvR,GAAG7I,GAEpB,KAAMK,OAAM,gDAEVwI,IAAK7I,IACPyzB,EAAOrZ,EAAEpa,GAAIoa,EAAEpa,GAAKoa,EAAEvR,GAAIuR,EAAEvR,GAAK4qB,EACjCA,EAAOlY,EAAEvb,GAAIub,EAAEvb,GAAKub,EAAE1S,GAAI0S,EAAE1S,GAAK4qB,EAInC,IAAIC,GAAKtZ,EAAEpa,GACP2zB,EAAKpY,EAAEvb,EACX,KAAK6I,EAAI,EAAO6d,EAAJ7d,EAAUA,IAAK,CACzB,GAAI+qB,GAAKxZ,EAAEvR,GACPgrB,EAAKtY,EAAE1S,EACX,IAAGA,GAAK7I,GAEN,GAAa,GAAT4zB,EAAG5zB,GAAS,CAKd,IAJA2R,EAAIrR,EAAKiuB,QAAQjuB,EAAKmpB,WAAWmK,EAAG5zB,IAAK0zB,EAAG1zB,IAIvC2Z,EAAI3Z,EAAO2mB,EAAJhN,EAAUA,IACpBia,EAAGja,GAAKrZ,EAAKkoB,IAAIoL,EAAGja,GAAIrZ,EAAK8oB,SAASzX,EAAG+hB,EAAG/Z,IAE9C,KAAKA,EAAI,EAAOgN,EAAJhN,EAAUA,IACpBka,EAAGla,GAAKrZ,EAAKkoB,IAAIqL,EAAGla,GAAKrZ,EAAK8oB,SAASzX,EAAGgiB,EAAGha,UAI9C,CAIH,IADAhI,EAAI+hB,EAAG1zB,GACF2Z,EAAI3Z,EAAO2mB,EAAJhN,EAAUA,IACpBia,EAAGja,GAAKrZ,EAAKiuB,QAAQqF,EAAGja,GAAIhI,EAE9B,KAAKgI,EAAI,EAAOgN,EAAJhN,EAAUA,IACpBka,EAAGla,GAAKrZ,EAAKiuB,QAAQsF,EAAGla,GAAIhI,KAKpC,MAAO4J,GAzLX,GAAI9R,GAAOhK,EAAoB,KAC3BmC,EAASnC,EAAoB,EAsBjCa,GAAKsqB,IAAM,SAAcrnB,GACvB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAE/D,IAAI8G,GAAOpL,EAAKoL,KAAKnI,GAAGM,SACxB,QAAQ6H,EAAK9G,QACX,IAAK,GAEH,MAAOtE,GAAKiuB,QAAQ,EAAGhrB,EAEzB,KAAK,GAEH,GAAe,GAAXmI,EAAK,GACP,MAAInI,aAAa3B,GACR,GAAIA,IACTtB,EAAKiuB,QAAQ,EAAGhrB,EAAEM,UAAU,OAK5BvD,EAAKiuB,QAAQ,EAAGhrB,EAAE,IAKtB,MAAM,IAAIqsB,YAAW,gCACLnmB,EAAKG,OAAOjE,OAAO+F,GAAQ,IAG/C,KAAK,GAEH,GAAIgb,GAAOhb,EAAK,GACZib,EAAOjb,EAAK,EAChB,IAAIgb,GAAQC,EACV,MAAIpjB,aAAa3B,GACR,GAAIA,GACP4xB,EAAKjwB,EAAEM,UAAW6iB,EAAMC,IAKrB6M,EAAKjwB,EAAGmjB,EAAMC,EAIvB,MAAM,IAAIiJ,YAAW,gCACLnmB,EAAKG,OAAOjE,OAAO+F,GAAQ,IAG/C,SAEE,KAAM,IAAIkkB,YAAW,yCACLnmB,EAAKG,OAAOjE,OAAO+F,GAAQ,SAsH9C,SAAStM,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjCyL,EAAQzB,EAAKyB,MAEbxH,EAAUD,MAAMC,OA4BpBpD,GAAKuqB,KAAO,SAAenf,GACzB,GAAIP,GAAOnJ,EAAWke,YAAYxZ,WAC9B4rB,EAAY5mB,YAAgB9J,IAAU,EACrC8B,EAAQgI,IAAQ,EAA2B,WAAlBvL,EAAOK,MAErC,IAAmB,GAAf2K,EAAKvG,OAEP,MAAO0tB,GAAW,GAAI1wB,KAMtB,IAAIyxB,IAAc,CAClBloB,GAAOA,EAAKvI,IAAI,SAAUe,GACxB,MAAIA,aAAiB3C,IACnBqyB,GAAc,EACP1vB,EAAM0G,YAEN1G,GAKX,IAAImL,MACAnB,EAAe0lB,EAAc,GAAIryB,GAAU,GAAK,CAGpD,OAFA8N,GAAM5D,EAAMoD,OAAOQ,EAAK3D,EAAMwC,GAEvB2kB,EAAW,GAAI1wB,GAAOkN,GAAOA,KAQrC,SAAS1P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GA4J/B,QAAS2zB,GAAQ/oB,EAAOC,EAAKC,GAC3B,GAAIC,MACA3H,EAAIwH,CACR,IAAIE,EAAO,EACT,KAAWD,EAAJzH,GACL2H,EAAMgB,KAAK3I,GACXA,GAAK0H,MAGJ,IAAW,EAAPA,EACP,KAAO1H,EAAIyH,GACTE,EAAMgB,KAAK3I,GACXA,GAAK0H,CAIT,OAAOC,GAWT,QAAS6oB,GAAWhpB,EAAOC,EAAKC,GAC9B,GAAIC,MACA3H,EAAIwH,CACR,IAAIE,EAAO,EACT,KAAYD,GAALzH,GACL2H,EAAMgB,KAAK3I,GACXA,GAAK0H,MAGJ,IAAW,EAAPA,EACP,KAAO1H,GAAKyH,GACVE,EAAMgB,KAAK3I,GACXA,GAAK0H,CAIT,OAAOC,GAWT,QAAS8oB,GAAWjpB,EAAOC,EAAKC,GAC9B,GAAIC,MACA3H,EAAIwH,EAAM5J,QACV2tB,EAAO,GAAI9tB,GAAU,EACzB,IAAIiK,EAAKgpB,GAAGnF,GACV,KAAOvrB,EAAE+a,GAAGtT,IACVE,EAAMgB,KAAK3I,GACXA,EAAIA,EAAE4qB,KAAKljB,OAGV,IAAIA,EAAKqT,GAAGwQ,GACf,KAAOvrB,EAAE0wB,GAAGjpB,IACVE,EAAMgB,KAAK3I,GACXA,EAAIA,EAAE4qB,KAAKljB,EAIf,OAAOC,GAWT,QAASgpB,GAAcnpB,EAAOC,EAAKC,GACjC,GAAIC,MACA3H,EAAIwH,EAAM5J,QACV2tB,EAAO,GAAI9tB,GAAU,EACzB,IAAIiK,EAAKgpB,GAAGnF,GACV,KAAOvrB,EAAE4wB,IAAInpB,IACXE,EAAMgB,KAAK3I,GACXA,EAAIA,EAAE4qB,KAAKljB,OAGV,IAAIA,EAAKqT,GAAGwQ,GACf,KAAOvrB,EAAE6wB,IAAIppB,IACXE,EAAMgB,KAAK3I,GACXA,EAAIA,EAAE4qB,KAAKljB,EAIf,OAAOC,GAYT,QAASkd,GAAQhiB,GACf,GAAI+E,GAAO/E,EAAIgF,MAAM,KACjBC,EAAO,IAEX,IAAsB,cAAlBlL,EAAOM,OAET,IACE4K,EAAOF,EAAKvI,IAAI,SAAU8F,GACxB,MAAO,IAAI1H,GAAU0H,KAGzB,MAAOmH,GACL,MAAO,UAGN,CAEHxE,EAAOF,EAAKvI,IAAI,SAAU8F,GAExB,MAAO9E,QAAO8E,IAGhB,IAAI4C,GAAUD,EAAKE,KAAK,SAAUC,GAChC,MAAO3F,OAAM2F,IAEf,IAAGF,EACD,MAAO,MAIX,OAAQD,EAAKzG,QACX,IAAK,GACH,OACEmG,MAAOM,EAAK,GACZL,IAAKK,EAAK,GACVJ,KAAM,EAGV,KAAK,GACH,OACEF,MAAOM,EAAK,GACZL,IAAKK,EAAK,GACVJ,KAAMI,EAAK,GAGf,SACE,MAAO,OAxTb,GAAI5B,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAG7B0tB,GAFa1tB,EAAoB,IAErBgK,EAAK,WAAW0jB,WAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBrE,EAAWmE,EAAKhJ,OAAO6E,QA6C3BhF,GAAK0C,MAAQ,WACX,GACI+H,GACAC,EACAC,EAHAmZ,EAAS3gB,MAAMpC,UAAU2sB,MAAMluB,KAAK4G,WAIpC2tB,GAAa,CAOjB,QAJIlH,EAAU/I,EAAOA,EAAOxf,OAAS,MACnCyvB,EAAajQ,EAAOkQ,OAAQ,GAAO,GAG7BlQ,EAAOxf,QACb,IAAK,GAGH,IAAI+E,EAASya,EAAO,IAWlB,KAAM,IAAIlgB,WAAU,qEAVpB,IAAI2E,GAAIuf,EAAOhE,EAAO,GACtB,KAAKvb,EACH,KAAM,IAAIJ,aAAY,WAAa2b,EAAO,GAAK,sBAGjDrZ,GAAQlC,EAAEkC,MACVC,EAAMnC,EAAEmC,IACRC,EAAOpC,EAAEoC,IAKX,MAEF,KAAK,GAGHF,EAAQqZ,EAAO,GACfpZ,EAAMoZ,EAAO,GACbnZ,EAAO,CACP,MAEF,KAAK,GAEHF,EAAQqZ,EAAO,GACfpZ,EAAMoZ,EAAO,GACbnZ,EAAOmZ,EAAO,EACd,MAEF,KAAK,GACH,KAAM,IAAIlgB,WAAU,yCAEtB,SACE,KAAM,IAAI5D,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAAG,GAItE,KAAKU,EAASyF,IAAYA,YAAiB/J,IACzC,KAAM,IAAIkD,WAAU,mCAEtB,MAAKoB,EAAS0F,IAAUA,YAAehK,IACrC,KAAM,IAAIkD,WAAU,iCAEtB,MAAKoB,EAAS2F,IAAWA,YAAgBjK,IACvC,KAAM,IAAIkD,WAAU,kCAItB,IAAI6G,YAAiB/J,IAAagK,YAAehK,IAAaiK,YAAgBjK,GAAW,CAEvF,GAAIqyB,IAAc,CAGZtoB,aAAiB/J,KAAY+J,EAAQ/J,EAAUM,QAAQyJ,IACvDC,YAAehK,KAAcgK,EAAQhK,EAAUM,QAAQ0J,IACvDC,YAAgBjK,KAAaiK,EAAQjK,EAAUM,QAAQ2J,IAEvDF,YAAiB/J,IAAgBgK,YAAehK,IAAgBiK,YAAgBjK,KAGpFqyB,GAAc,EACVtoB,YAAiB/J,KAAW+J,EAAQA,EAAMV,YAC1CW,YAAehK,KAAagK,EAAQA,EAAIX,YACxCY,YAAgBjK,KAAYiK,EAAQA,EAAKZ,aAKjD,GAAIpF,GAAKouB,EACJgB,EAAaH,EAAeF,EAC5BK,EAAaN,EAAeD,EAC7B5oB,EAAQjG,EAAG8F,EAAOC,EAAKC,EAG3B,OAA0B,UAAlB9K,EAAOK,OAAsB0K,EAAQ,GAAItJ,GAAOsJ,MAiLvD,SAAS9L,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GA6F/B,QAASo0B,GAAcnuB,EAAKsF,EAAM8oB,GAChC,GAAoBhxB,SAAhBgxB,GACF,IAAK7qB,EAAS6qB,IAAuC,IAAvBA,EAAY5vB,OACxC,KAAM,IAAIV,WAAU,iDAItBswB,GAAc,GAGhB,IAAoB,IAAhB9oB,EAAK9G,OACP,KAAM,IAAItE,GAAKkB,MAAM4G,eAAesD,EAAK9G,OAAQ,EAEnD,IAAID,GAAM+G,EAAK,EACf,KAAKpG,EAASX,KAASY,EAAUZ,GAC/B,KAAM,IAAIT,WAAU,uDACJ0F,EAAOjE,OAAO+F,GAAQ,IAGxC,IAAItF,EAAIxB,OAASD,EACf,MAAOyB,GAAI6D,UAAU,EAAGtF,EAErB,IAAIyB,EAAIxB,OAASD,EAAK,CAEzB,IAAK,GADDmK,GAAM1I,EACD1B,EAAI,EAAGuH,EAAKtH,EAAMyB,EAAIxB,OAAYqH,EAAJvH,EAAQA,IAC7CoK,GAAO0lB,CAET,OAAO1lB,GAGP,MAAO1I,GA1HX,GAAIqD,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAE7ByL,EAAQzB,EAAKyB,MACb/J,EAAQsI,EAAK5I,OAAOM,MACpByI,EAASH,EAAKG,OACdD,EAAWF,EAAKG,OAAOD,SACvBrE,EAAWmE,EAAKhJ,OAAO6E,SACvBC,EAAYkE,EAAKhJ,OAAO8E,UACxB7B,EAAUwH,EAAMxH,OA4BpBpD,GAAKgO,OAAS,SAAiB/K,EAAGmI,EAAMiC,GACtC,GAAwB,GAApBjH,UAAU9B,QAAmC,GAApB8B,UAAU9B,OACrC,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAAG,EAGrE,IAAI0tB,GAAY/uB,YAAa3B,IAAU,EAAO8B,EAAQH,IAAK,EAA2B,UAAlBpD,EAAOK,MAgB3E,IAdI+C,YAAa3B,KACf2B,EAAIA,EAAEM,WAEJ6H,YAAgB9J,KAClB8J,EAAOA,EAAK7H,WAGV6H,EAAK9G,QAAU8G,EAAK,YAAc1K,KAEpC0K,EAAOA,EAAK9I,IAAI,SAAUe,GACxB,MAAQA,aAAiB3C,GAAa2C,EAAM0G,WAAa1G,KAIzDgG,EAASpG,GACX,MAAOgxB,GAAchxB,EAAGmI,EAAMiC,EAG9B,IAAmB,GAAfjC,EAAK9G,OAAa,CAEpB,KAAOlB,EAAQH,IACbA,EAAIA,EAAE,EAGR,OAAOpC,GAAMoC,GAIRG,EAAQH,KACXA,GAAKA,IAEPA,EAAIpC,EAAMoC,EAEV,IAAIuL,GAAM5D,EAAMoD,OAAO/K,EAAGmI,EAAMiC,EAChC,OAAO2kB,GAAW,GAAI1wB,GAAOkN,GAAOA,KAkDvC,SAAS1P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BmC,EAASnC,EAAoB,GAE7ByL,EAAQzB,EAAKyB,MACb5F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,MAyBlBpJ,GAAKoL,KAAO,SAAenI,GACzB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIquB,GAA6B,UAAlB9yB,EAAOK,MAEtB,IAAI8E,EAAS/B,IAAMsG,EAAUtG,IAAMmG,EAAOnG,IAAM4pB,EAAU5pB,IACjD,MAALA,GAAaA,YAAavC,GAC5B,MAAOiyB,MAAe,GAAIrxB,MAG5B,IAAI+H,EAASpG,GACX,MAAO0vB,IAAW1vB,EAAEqB,QAAU,GAAIhD,IAAQ2B,EAAEqB,QAG9C,IAAInB,MAAMC,QAAQH,GAChB,MAAO2H,GAAMQ,KAAKnI,EAGpB,IAAIA,YAAa3B,GACf,MAAO,IAAIA,GAAO2B,EAAEmI,OAGtB,MAAM,IAAIpL,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACdqK,EAAQzB,EAAKyB,MACbxH,EAAUD,MAAMC,OA+BpBpD,GAAKwqB,QAAU,SAAkBvnB,GAC/B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAIlB,EAAQH,GACV,MAAO2H,GAAM4f,QAAQjqB,EAAOM,MAAMoC,GAE/B,IAAIA,YAAa3B,GAAQ,CAC5B,GAAIkN,GAAM5D,EAAM4f,QAAQvnB,EAAEuI,UAC1B,OAAOpI,GAAQoL,GAAO,GAAIlN,GAAOkN,GAAOA,EAIxC,MAAOjO,GAAOM,MAAMoC,MAQrB,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmEzB,QAASm0B,GAAW9wB,EAAOhB,GACzB,GAAI5C,GAAGkD,CAEP,IAAIS,EAAQC,GAGV,MAFA5D,GAAI,GAAI6B,GAAO+B,GACfV,EAASlD,EAAEkD,OAAON,GACXM,GAAUA,EAAOY,SAErB,IAAIF,YAAiB/B,GACxB,MAAO+B,GAAMV,OAAON,EAEjB,IAAIgH,EAAShG,GAChB,MAAO+wB,GAAc/wB,EAAOhB,EAG5B,MAAM,IAAIrC,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUqD,IAWvE,QAAS+wB,GAActuB,EAAKzD,GAC1B,KAAMA,YAAiBhB,IAErB,KAAM,IAAIuC,WAAU,iBAEtB,IAA2B,GAAvBvB,EAAM+I,OAAO9G,OACf,KAAM,IAAItE,GAAKkB,MAAM4G,eAAezF,EAAM+I,OAAO9G,OAAQ,EAI3D,IAAI+vB,GAASvuB,EAAIxB,MACjBsG,GAAMkC,cAAczK,EAAMI,MAAM,GAAI4xB,GACpCzpB,EAAMkC,cAAczK,EAAME,MAAM,GAAI8xB,EAEpC,IAAI3xB,GAAQL,EAAMK,MAAM,GAEpB4xB,EAAS,EAKb,OAJA5xB,GAAMN,QAAQ,SAAUotB,GACtB8E,GAAUxuB,EAAI+C,OAAO2mB,KAGhB8E,EAeT,QAASC,GAAWlxB,EAAOhB,EAAO8L,EAAad,GAC7C,GAAI5N,EAEJ,IAAI2D,EAAQC,GAGV,MAFA5D,GAAI,GAAI6B,GAAOtB,EAAKa,MAAMwC,IAC1B5D,EAAEkD,OAAON,EAAO8L,EAAad,GACtB5N,EAAE8D,SAEN,IAAIF,YAAiB/B,GACxB,MAAO+B,GAAMxC,QAAQ8B,OAAON,EAAO8L,EAAad,EAE7C,IAAIhE,EAAShG,GAChB,MAAOmxB,GAAcnxB,EAAOhB,EAAO8L,EAAad,EAGhD,MAAM,IAAIrN,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUqD,IAcvE,QAASmxB,GAAc1uB,EAAKzD,EAAO8L,EAAad,GAC9C,KAAMhL,YAAiBhB,IAErB,KAAM,IAAIuC,WAAU,iBAEtB,IAA2B,GAAvBvB,EAAM+I,OAAO9G,OACf,KAAM,IAAItE,GAAKkB,MAAM4G,eAAezF,EAAM+I,OAAO9G,OAAQ,EAE3D,IAAqBpB,SAAjBmK,GACF,IAAKhE,EAASgE,IAAyC,IAAxBA,EAAa/I,OAC1C,KAAM,IAAIV,WAAU,iDAItByJ,GAAe,GAGjB,IAAI3K,GAAQL,EAAMK,MAAM,GACpB2B,EAAM3B,EAAM0I,OAAO,EAEvB,IAAI/G,GAAO8J,EAAY7J,OACrB,KAAM,IAAItE,GAAKkB,MAAM4G,eAAepF,EAAM0I,OAAO,GAAI+C,EAAY7J,OAInE,IAAI+vB,GAASvuB,EAAIxB,MACjBsG,GAAMkC,cAAczK,EAAMI,MAAM,IAChCmI,EAAMkC,cAAczK,EAAME,MAAM,GAIhC,KAAK,GADDkyB,MACKrwB,EAAI,EAAOiwB,EAAJjwB,EAAYA,IAC1BqwB,EAAMrwB,GAAK0B,EAAI+C,OAAOzE,EAQxB,IALA1B,EAAMN,QAAQ,SAAUotB,EAAGprB,GACzBqwB,EAAMjF,GAAKrhB,EAAYtF,OAAOzE,KAI5BqwB,EAAMnwB,OAAS+vB,EACjB,IAAKjwB,EAAIiwB,EAAS,EAAGhwB,EAAMowB,EAAMnwB,OAAYD,EAAJD,EAASA,IAC3CqwB,EAAMrwB,KACTqwB,EAAMrwB,GAAKiJ,EAKjB,OAAOonB,GAAMloB,KAAK,IA7MpB,GAAIpD,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAC7BkC,EAAQlC,EAAoB,GAE5ByL,EAAQzB,EAAKyB,MACbvB,EAAWF,EAAKG,OAAOD,SACvBjG,EAAUD,MAAMC,OAoCpBpD,GAAK2C,OAAS,WACZ,OAAQyD,UAAU9B,QAChB,IAAK,GACH,MAAO6vB,GAAW/tB,UAAU,GAAIA,UAAU,GAG5C,KAAK,GACL,IAAK,GACH,MAAOmuB,GAAWnuB,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAExE,SACE,KAAM,IAAIpG,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAAG,OA8JtE,SAASxF,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAuFzB,QAAS00B,GAAQx0B,GAEf,IAAK,GADD0rB,GAAM,EACDxnB,EAAI,EAAGA,EAAIlE,EAAOoE,OAAQF,IAC/BwnB,EAAM5rB,EAAKkoB,IAAI0D,EAAK1rB,EAAOkE,GAAGA,GAElC,OAAOwnB,GA3FT,GAAIziB,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACd+I,EAASH,EAAKG,MAuBlBtJ,GAAKyqB,MAAQ,SAAgBxnB,GAC3B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,IAAI8G,EAaJ,QAZInI,YAAa3B,GACf8J,EAAOnI,EAAEmI,OAEFnI,YAAaE,QACpBF,EAAI,GAAI3B,GAAO2B,GACfmI,EAAOnI,EAAEmI,QAITA,KAGMA,EAAK9G,QACX,IAAK,GAEH,MAAO/D,GAAOM,MAAMoC,EAEtB,KAAK,GAEH,GAAe,GAAXmI,EAAK,GACP,MAAO7K,GAAOM,MAAMoC,EAAEM,UAAU,GAGhC,MAAM,IAAI+rB,YAAW,gCACLhmB,EAAOjE,OAAO+F,GAAQ,IAG1C,KAAK,GAEH,GAAIgb,GAAOhb,EAAK,GACZib,EAAOjb,EAAK,EAChB,IAAIgb,GAAQC,EACV,MAAOqO,GAAOzxB,EAAEpC,QAAQ0C,UAGxB,MAAM,IAAI+rB,YAAW,gCACLhmB,EAAOjE,OAAO+F,GAAQ,IAG1C,SAEE,KAAM,IAAIkkB,YAAW,yCACLhmB,EAAOjE,OAAO+F,GAAQ,SAsBzC,SAAStM,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BmC,EAASnC,EAAoB,GAE7BoB,EAAS4I,EAAK5I,OACd+I,EAASH,EAAKG,MAsBlBtJ,GAAK0qB,UAAY,SAAoBznB,GACnC,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAGrE,IAAI8G,GAAOpL,EAAKoL,KAAKnI,GAAGM,SACxB,QAAQ6H,EAAK9G,QACX,IAAK,GAEH,MAAO/D,GAAOM,MAAMoC,EAEtB,KAAK,GAEH,MAAO1C,GAAOM,MAAMoC,EAEtB,KAAK,GAEH,GAKI0xB,GALAvO,EAAOhb,EAAK,GACZib,EAAOjb,EAAK,GACZ4mB,EAAY/uB,YAAa3B,GACzBkL,EAAOvJ,EAAEM,UACTqxB,KAEA/zB,EAAQN,EAAOM,KAEnB,IAAa,IAATulB,EAEF,KAAM,IAAIkJ,YAAW,mDACLhmB,EAAOjE,OAAO+F,GAAQ,IAGxC,KAAK,GAAI7C,GAAI,EAAO6d,EAAJ7d,EAAUA,IAAK,CAC7BosB,EAAgBC,EAAWrsB,KAC3B,KAAK,GAAI7I,GAAI,EAAO2mB,EAAJ3mB,EAAUA,IACxBi1B,EAAcj1B,GAAKmB,EAAM2L,EAAK9M,GAAG6I,IAIrC,MAAOypB,GAAW,GAAI1wB,GAAOszB,GAAcA,CAE7C,SAEE,KAAM,IAAItF,YAAW,yCACLhmB,EAAOjE,OAAO+F,GAAQ,SAQzC,SAAStM,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBY,EAASnC,EAAoB,GAC7BuC,EAAavC,EAAoB,IAEjCyL,EAAQzB,EAAKyB,MACbxH,EAAUD,MAAMC,OA4BpBpD,GAAK2qB,MAAQ,SAAgBvf,GAC3B,GAAIP,GAAOnJ,EAAWke,YAAYxZ,WAC9B4rB,EAAY5mB,YAAgB9J,IAAU,EACrC8B,EAAQgI,IAAQ,EAA2B,WAAlBvL,EAAOK,MAErC,IAAmB,GAAf2K,EAAKvG,OAEP,MAAO0tB,GAAW,GAAI1wB,KAMtB,IAAIyxB,IAAc,CAClBloB,GAAOA,EAAKvI,IAAI,SAAUe,GACxB,MAAIA,aAAiB3C,IACnBqyB,GAAc,EACP1vB,EAAM0G,YAEN1G,GAKX,IAAImL,MACAnB,EAAe0lB,EAAc,GAAIryB,GAAU,GAAK,CAGpD,OAFA8N,GAAM5D,EAAMoD,OAAOQ,EAAK3D,EAAMwC,GAEvB2kB,EAAW,GAAI1wB,GAAOkN,GAAOA,KAQrC,SAAS1P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAE5BhN,GADY1W,EAAKhJ,OAAO8E,UACTvD,EAAWme,aAwB9B7f,GAAK6qB,UAAY,QAASA,GAAWzZ,GACnC,GAAI/N,GAAOmL,EAAKqmB,CAEhB,IAAwB,GAApBzuB,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAGrE,IAAIU,EAASoM,GACX,MAAOA,KAAM9N,OAAOisB,kBAChBvvB,EAAK8qB,MAAM1Z,EAAI,GACflM,KAAKiC,KAAK,EAAEjC,KAAKkC,GAGvB,IAAIgK,YAAa1Q,GAAW,CAC1B,IAAMo0B,EAAqB1jB,GACzB,MAAOA,GAAEid,cAAgBjd,EAAE3K,WACvBzG,EAAK8qB,MAAM1Z,EAAEyc,KAAK,IAClB1kB,EAAKxC,UAAUI,IAAIlH,EAAOO,WAAW+G,MAI3C,IADAiK,EAAIA,EAAErH,WACFqH,EAAI2jB,EAAazwB,OACnB,MAAO5D,GAAUM,QAAQ+zB,EAAa3jB,IAAI4jB,KAAKn1B,EAAOO,UAIxD,IAAIA,GAAYP,EAAOO,WAA2B,EAAd8E,KAAKkL,IAAIgB,IACzC6jB,EAAMv0B,EAAUI,aAAaV,UAAWA,GAI5C,IADAgR,GAAK2jB,EAAazwB,OACduwB,EAAcK,EAAW90B,GAAY,CACvC,GAAIy0B,EAAYzjB,GACd,MAAO,IAAI1Q,GAAUm0B,EAAYzjB,GAAGnL,YAAYpG,EAAOO,WAEzDoO,GAAMqmB,EAAYA,EAAYvwB,OAAO,OAErCuwB,GAAcK,EAAW90B,MACzBoO,EAAM,GAAIymB,GAAIF,EAAaA,EAAazwB,OAAO,IAC5C0wB,KAAK50B,EAGV,IAAI6vB,GAAM,GAAIgF,GAAI,EAClB5xB,GAAQ,GAAI4xB,GAAIJ,EAAYvwB,OAASywB,EAAazwB,OAClD,KAAK,GAAIF,GAAIywB,EAAYvwB,OAAY8M,EAAJhN,IAASA,EACxCywB,EAAYzwB,GAAKoK,EAAMA,EAAIsf,MAAMzqB,GACjCA,EAAQA,EAAMwqB,KAAKoC,EAIrB,OADA4E,GAAYzjB,GAAK5C,EAAIsf,MAAMzqB,GACpB,GAAI3C,GAAUm0B,EAAYzjB,GAAGnL,YAAYpG,EAAOO,YAGzD,GAAIysB,EAAUzb,IAAY,OAANA,EAClB,MAAO,EAGT,IAAIyO,EAAazO,GACf,MAAO1P,GAAWoe,QAAQ1O,EAAGyZ,EAG/B,MAAM,IAAI7qB,GAAKkB,MAAM8G,qBAAqB,YAAahI,EAAK,UAAUoR,IAQxE,IAAI0jB,GAAuB,SAAS1jB,GAClC,MAAOA,GAAEnM,eAAiBmM,EAAEid,cAAgBjd,EAAEqd,WAI5CyG,KAGAH,GACF,EACA,EACA,EACA,EACA,GACA,IACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,kBACA,qBAOC,SAASj2B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC0tB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBvE,EAAWmE,EAAKhJ,OAAO6E,SACvBC,EAAYkE,EAAKhJ,OAAO8E,UACxB4a,EAAene,EAAWme,YAyB9B7f,GAAK8qB,MAAQ,QAASA,GAAO1Z,GAC3B,GAAIwd,GAAG3rB,EACHqV,EAAI,SAER,IAAwB,GAApBlS,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,IAAIU,EAASoM,GAAI,CACf,GAAInM,EAAUmM,GAAI,CAChB,GAAS,GAALA,EACF,MAAO3K,UAAS2K,GACZ9L,IACAuB,GAGN,IAAIuK,EAAI,IACN,MAAO9L,IAKT,KAFA,GAAIjC,GAAQ+N,EAAI,EACZ5C,EAAM4C,EAAI,EACP/N,EAAQ,GACbmL,GAAOnL,EACPA,GAOF,OAJW,IAAPmL,IACFA,EAAM,GAGDA,EAGT,GAAQ,GAAJ4C,EACF,MAAOlM,MAAKkC,IAAMlC,KAAK+E,IAAI/E,KAAKkC,GAAGgK,GAAK0Z,EAAM,EAAE1Z,GAGlD,IAAIA,GAAK,OACP,MAAO9L,IAGT,IAAI8L,EAAI,GAAM,CACZ,GAAI+jB,GAAO/jB,EAAEA,EACTgkB,EAASD,EAAK/jB,EACdikB,EAAQD,EAAOhkB,EACfkkB,EAAQD,EAAMjkB,CAClB,OAAOlM,MAAKiC,KAAK,EAAEjC,KAAKkC,GAAGgK,GAAKlM,KAAK6N,IAAK3B,EAAElM,KAAKmC,EAAI+J,IAClD,EAAI,GAAG,GAAGA,GAAK,GAAG,IAAI+jB,GAAQ,KAAK,MAAMC,GACzC,KAAK,QAAQC,GAAS,QAAQ,UAAUC,GACxC,SAAS,YAAYA,EAAMlkB,MAG9BA,EACFnO,EAAItD,EAAE,EACN,KAAK,GAAIyE,GAAI,EAAGA,EAAIzE,EAAE2E,SAAUF,EAC9BnB,GAAKtD,EAAEyE,IAAMgN,EAAEhN,EAIjB,OADAwqB,GAAIxd,EAAIkH,EAAI,GACLpT,KAAKiC,KAAK,EAAEjC,KAAKkC,IAAMlC,KAAK6N,IAAI6b,EAAGxd,EAAE,IAAOlM,KAAKsjB,KAAKoG,GAAK3rB,EAGpE,GAAIsG,EAAU6H,GAAI,CAChB,GAAY,GAARA,EAAElJ,GACJ,MAAO4iB,GAAM1Z,EAAEnJ,GAGjBmJ,GAAI,GAAIjQ,GAAQiQ,EAAEnJ,GAAK,EAAGmJ,EAAElJ,IAC5BjF,EAAI,GAAI9B,GAAQxB,EAAE,GAAI,EACtB,KAAK,GAAIyE,GAAI,EAAGA,EAAIzE,EAAE2E,SAAUF,EAAG,CACjC,GAAImxB,GAAOnkB,EAAEnJ,GAAK7D,EACd4pB,EAAMuH,EAAKA,EAAOnkB,EAAElJ,GAAGkJ,EAAElJ,EAClB,IAAP8lB,GACF/qB,EAAEgF,IAAMtI,EAAEyE,GAAKmxB,EAAOvH,EACtB/qB,EAAEiF,MAAQvI,EAAEyE,GAAKgN,EAAElJ,IAAM8lB,GAEzB/qB,EAAEgF,GAAKtI,EAAEyE,GAAK,GACTkB,IACAA,IAITspB,EAAI,GAAIztB,GAAQiQ,EAAEnJ,GAAKqQ,EAAI,GAAKlH,EAAElJ,GAClC,IAAIstB,GAAYtwB,KAAKiC,KAAK,EAAEjC,KAAKkC,GAEjCgK,GAAEnJ,IAAM,EACR,IAAI8mB,GAAS/uB,EAAK+S,IAAI6b,EAAGxd,EACR,IAAb2d,EAAO7mB,GACT6mB,EAAO9mB,IAAMutB,EACS,GAAbzG,EAAO9mB,GAChB8mB,EAAO7mB,IAAMstB,GAEbzG,EAAO9mB,IAAMutB,EACbzG,EAAO7mB,IAAMstB,EAGf,IAAIjtB,GAAIrD,KAAKsjB,KAAKoG,EAAE3mB,GAIpB,OAHA2mB,GAAE3mB,GAAKM,EAAIrD,KAAK8E,KAAK4kB,EAAE1mB,IACvB0mB,EAAE1mB,GAAKK,EAAIrD,KAAK+E,KAAK2kB,EAAE1mB,IAEhBlI,EAAK8oB,SAAS9oB,EAAK8oB,SAASiG,EAAQH,GAAI3rB,GAGjD,GAAImO,YAAa1Q,GAAW,CAC1B,GAAI0Q,EAAEnM,YACJ,MAAOmM,GAAEid,cAAgBjd,EAAEqd,SACvB,GAAI/tB,GAAU4E,KACdtF,EAAK6qB,UAAUzZ,EAAEwb,MAAM,GAG7B,KAAKxb,EAAE3K,WACL,MAAO,IAAI/F,GAAU0Q,EAAEid,aACnBxnB,IACAvB,KAIR,GAAIunB,EAAUzb,IAAY,OAANA,EAClB,MAAOA,GACH,EACA9L,GAGN,IAAIua,EAAazO,GACf,MAAO1P,GAAWoe,QAAQ1O,EAAG0Z,EAG/B,MAAM,IAAI9qB,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUoR,IAGpE,IAAIzR,IACD,kBACA,kBACD,mBACC,oBACA,kBACA,qBACA,sBACA,qBACA,sBACA,sBACA,uBACA,qBACA,sBACA,sBACA,yBAQA,SAASb,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAIy1B,GAAet2B,EAAoB,KAAKa,EAgC5CA,GAAKirB,OAASwK,EAAa,WAAWxK,SAMnC,SAASnsB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAIy1B,GAAet2B,EAAoB,KAAKa,EAgC5CA,GAAKkrB,UAAYuK,EAAa,WAAWvK,YAMtC,SAASpsB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAIy1B,GAAet2B,EAAoB,KAAKa,EAqB5CA,GAAKgrB,WAAayK,EAAa,WAAWzK,aAMvC,SAASlsB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAEtBsE,EAAWmE,EAAKhJ,OAAO6E,SACvBC,EAAYkE,EAAKhJ,OAAO8E,SA2B5BjF,GAAK+qB,aAAe,SAAuB3Z,EAAGT,GAC5C,GAAIoe,GAAQ3qB,EAERsxB,EAAQtvB,UAAU9B,MACtB,IAAIoxB,EAAQ,EACV,KAAM,IAAI11B,GAAKkB,MAAM2G,eAAe,eAAgBzB,UAAU9B,OAAQ,EAGxE,IAAIU,EAASoM,GAAI,CACf,IAAKnM,EAAUmM,IAAU,EAAJA,EACnB,KAAM,IAAIxN,WAAU,2DAItB,IAAa,GAAT8xB,EACF,MAAO11B,GAAK6qB,UAAUzZ,EAIxB,IAAa,GAATskB,GACE1wB,EAAS2L,GAAI,CACf,IAAK1L,EAAU0L,IAAU,EAAJA,EACnB,KAAM,IAAI/M,WAAU,2DAEtB,IAAI+M,EAAIS,EACN,KAAM,IAAIxN,WAAU,mEAItB,KADAmrB,EAAS,EACJ3qB,EAAIgN,EAAIT,EAAI,EAAQS,GAALhN,EAAQA,IAC1B2qB,GAAkB3qB,CAEpB,OAAO2qB,IAKb,GAAI3d,YAAa1Q,GAAW,CAC1B,GAAUwC,SAANyN,GAAmBglB,EAAkBvkB,GACvC,MAAOpR,GAAK6qB,UAAUzZ,EAOxB,IAFAT,EAAIjQ,EAAUM,QAAQ2P,KAEhBA,YAAajQ,IAAei1B,EAAkBvkB,IAAOukB,EAAkBhlB,IAC3E,KAAM,IAAI/M,WAAU,2DAEtB,IAAI+M,EAAEgjB,GAAGviB,GACP,KAAM,IAAIxN,WAAU,mEAItB,KADAmrB,EAAS,GAAIruB,GAAU,GAClB0D,EAAIgN,EAAEwb,MAAMjc,GAAGkd,KAAK,GAAIzpB,EAAEyvB,IAAIziB,GAAIhN,EAAIA,EAAEypB,KAAK,GAChDkB,EAASA,EAAOjB,MAAM1pB,EAExB,OAAO2qB,GAGT,KAAM,IAAI/uB,GAAKkB,MAAM8G,qBAAqB,eAAgBhI,EAAK,UAAUoR,IAQ3E,IAAIukB,GAAoB,SAASvkB,GAC/B,MAAOA,GAAEnM,aAAemM,EAAE0iB,IAAI,MAO7B,SAASh1B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UAGtBsE,GAFa7F,EAAoB,IAEtBgK,EAAKhJ,OAAO6E,UACvBC,EAAYkE,EAAKhJ,OAAO8E,SAyB5BjF,GAAK4qB,aAAe,SAAuBxZ,EAAGT,GAC5C,GAAIpO,GAAKwsB,EAAQ3qB,EAAEuH,EAEf+pB,EAAQtvB,UAAU9B,MACtB,IAAa,GAAToxB,EACF,KAAM,IAAI11B,GAAKkB,MAAM2G,eAAe,eAAgBzB,UAAU9B,OAAQ,EAGxE,IAAIU,EAASoM,GAAI,CACf,IAAKnM,EAAUmM,IAAU,EAAJA,EACnB,KAAM,IAAIxN,WAAU,2DAEtB,IAAI+M,EAAIS,EACN,KAAM,IAAIxN,WAAU,oCAKtB,KAFArB,EAAM2C,KAAK3C,IAAIoO,EAAGS,EAAIT,GACtBoe,EAAS,EACJ3qB,EAAI,EAAQgN,EAAI7O,GAAT6B,EAAcA,IACxB2qB,EAASA,GAAUxsB,EAAM6B,GAAKA,CAEhC,OAAO2qB,GAGT,GAAI3d,YAAa1Q,GAAW,CAK1B,GAFAiQ,EAAIjQ,EAAUM,QAAQ2P,KAEhBA,YAAajQ,IAAei1B,EAAkBvkB,IAAOukB,EAAkBhlB,IAC3E,KAAM,IAAI/M,WAAU,2DAEtB,IAAI+M,EAAEgjB,GAAGviB,GACP,KAAM,IAAIxN,WAAU,iDAMtB,KAHArB,EAAM6O,EAAEwb,MAAMjc,GACVA,EAAEqN,GAAGzb,KAAMA,EAAMoO,GACrBoe,EAAS,GAAIruB,GAAU,GAClB0D,EAAI,GAAI1D,GAAU,GAAIiL,EAAKyF,EAAEwb,MAAMrqB,GAAM6B,EAAEyvB,IAAIloB,GAAKvH,EAAIA,EAAEypB,KAAK,GAClEkB,EAASA,EAAOjB,MAAMvrB,EAAIsrB,KAAKzpB,IAAIwxB,UAAUxxB,EAE/C,OAAO2qB,GAGT,KAAM,IAAI/uB,GAAKkB,MAAM8G,qBAAqB,eAAgBhI,EAAK,UAAUoR,IAQ3E,IAAIukB,GAAoB,SAASvkB,GAC/B,MAAOA,GAAEnM,aAAemM,EAAE0iB,IAAI,MAO7B,SAASh1B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBuB,EAAc4C,EAAKhJ,OAAOoG,YAC1BsmB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAmC9B7f,GAAKmrB,QAAU,QAASA,GAAQloB,EAAGuD,GACjC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAC1B,MAAOD,GAAYtD,EAAGuD,EAAG3G,EAAOQ,SAAW,EAAK4C,EAAIuD,EAAI,EAAI,EAG9D,IAAIvD,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACR,GAAIA,GAAUuC,EAAEytB,IAAIlqB,IAItB2kB,EAAQloB,EAAE8G,WAAYvD,EAE/B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACR,GAAIA,GAAUuC,EAAEytB,IAAIlqB,IAItB2kB,EAAQloB,EAAGuD,EAAEuD,WAGtB,IAAKX,EAAOnG,IAAQmG,EAAO5C,GAAK,CAC9B,IAAKvD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,2CAElB,OAAQkD,GAAEI,MAAQmD,EAAEnD,MAAS,EAAMJ,EAAEI,MAAQmD,EAAEnD,MAAS,GAAK,EAG/D,GAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG2kB,EAKnC,IAAI9hB,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAQvD,GAAIuD,EAAK,EAAUA,EAAJvD,EAAS,GAAK,CAGvC,IAAI4pB,EAAU5pB,IAAY,OAANA,EAClB,MAAOkoB,IAASloB,EAAGuD,EAErB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO2kB,GAAQloB,GAAIuD,EAGrB,IAAI+C,EAAUtG,IAAMsG,EAAU/C,GAC5B,KAAM,IAAI5C,WAAU,sDAGtB,MAAM,IAAI5D,GAAKkB,MAAM8G,qBAAqB,UAAWhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOtF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmDzB,QAAS61B,GAAW5yB,EAAGuD,GACrB,GAAIpD,EAAQH,GAAI,CACd,GAAIG,EAAQoD,GAAI,CACd,GAAInC,GAAMpB,EAAEqB,MACZ,IAAID,IAAQmC,EAAElC,OAAQ,OAAO,CAE7B,KAAK,GAAIF,GAAI,EAAOC,EAAJD,EAASA,IACvB,IAAKyxB,EAAW5yB,EAAEmB,GAAIoC,EAAEpC,IAAK,OAAO,CAGtC,QAAO,EAGP,OAAO,EAIT,MAAIhB,GAAQoD,IACH,EAGAxG,EAAK0vB,MAAMzsB,EAAGuD,GAvE3B,GAAI9E,GAAavC,EAAoB,IAEjC0gB,EAAene,EAAWme,aAC1Bzc,EAAUD,MAAMC,OA6BpBpD,GAAKmE,UAAY,SAAmBlB,EAAGuD,GACrC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAGrE,OAAIub,GAAa5c,IAAM4c,EAAarZ,GAC3BqvB,EAAW5yB,EAAEM,UAAWiD,EAAEjD,WAG5BvD,EAAK0vB,MAAMzsB,EAAGuD,MAuCpB,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBuB,EAAc4C,EAAKhJ,OAAOoG,YAC1BsmB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA6C9B7f,GAAK0vB,MAAQ,QAASA,GAAMzsB,EAAGuD,GAC7B,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GACX,MAAOD,GAAYtD,EAAGuD,EAAG3G,EAAOQ,QAE7B,IAAIkJ,EAAU/C,GACjB,MAAOD,GAAYtD,EAAGuD,EAAEyB,GAAIpI,EAAOQ,UAAYkG,EAAYC,EAAE0B,GAAI,EAAGrI,EAAOQ,SAI/E,GAAIkJ,EAAUtG,GAAI,CAChB,GAAI+B,EAASwB,GACX,MAAOD,GAAYtD,EAAEgF,GAAIzB,EAAG3G,EAAOQ,UAAYkG,EAAYtD,EAAEiF,GAAI,EAAGrI,EAAOQ,QAExE,IAAIkJ,EAAU/C,GACjB,MAAOD,GAAYtD,EAAEgF,GAAIzB,EAAEyB,GAAIpI,EAAOQ,UAAYkG,EAAYtD,EAAEiF,GAAI1B,EAAE0B,GAAIrI,EAAOQ,SAIrF,GAAI4C,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,GAEfqmB,EAAUrmB,KACjBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAEkqB,GAAG3mB,GAIPkpB,EAAMzsB,EAAE8G,WAAYvD,EAE7B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,GAEf4pB,EAAU5pB,KACjBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAEkqB,GAAG3mB,GAIPkpB,EAAMzsB,EAAGuD,EAAEuD,WAGpB,IAAKX,EAAOnG,IAAQmG,EAAO5C,GAAK,CAC9B,IAAKvD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,2CAElB,OAAOkD,GAAEI,OAASmD,EAAEnD,MAGtB,GAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGkpB,EAKnC,IAAIrmB,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAOvD,IAAKuD,CAGd,IAAIqmB,EAAU5pB,GACZ,MAAOysB,IAAOzsB,EAAGuD,EAEnB,IAAIqmB,EAAUrmB,GACZ,MAAOkpB,GAAMzsB,GAAIuD,EAGnB,IAAU,OAANvD,EACF,MAAa,QAANuD,CAET,IAAU,OAANA,EACF,MAAa,QAANvD,CAGT,IAAUC,SAAND,EACF,MAAaC,UAANsD,CAET,IAAUtD,SAANsD,EACF,MAAatD,UAAND,CAGT,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOpF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBuB,EAAc4C,EAAKhJ,OAAOoG,YAC1BsmB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAgC9B7f,GAAKorB,OAAS,QAASA,GAAOnoB,EAAGuD,GAC/B,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAC1B,OAAQD,EAAYtD,EAAGuD,EAAG3G,EAAOQ,UAAY4C,EAAIuD,CAGnD,IAAIvD,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAE0wB,GAAGntB,GAIP4kB,EAAOnoB,EAAE8G,WAAYvD,EAE9B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAE0wB,GAAGntB,GAIP4kB,EAAOnoB,EAAGuD,EAAEuD,WAGrB,IAAKX,EAAOnG,IAAQmG,EAAO5C,GAAK,CAC9B,IAAKvD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,2CAElB,OAAOkD,GAAEI,MAAQmD,EAAEnD,MAGrB,GAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG4kB,EAKnC,IAAI/hB,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAOvD,GAAIuD,CAGb,IAAIqmB,EAAU5pB,IAAY,OAANA,EAClB,MAAOmoB,IAAQnoB,EAAGuD,EAEpB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO4kB,GAAOnoB,GAAIuD,EAGpB,IAAI+C,EAAUtG,IAAMsG,EAAU/C,GAC5B,KAAM,IAAI5C,WAAU,sDAGtB,MAAM,IAAI5D,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOrF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBuB,EAAc4C,EAAKhJ,OAAOoG,YAC1BsmB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA4B9B7f,GAAKqrB,SAAW,QAASA,GAASpoB,EAAGuD,GACnC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,WAAYzB,UAAU9B,OAAQ,EAGpE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAC1B,MAAOD,GAAYtD,EAAGuD,EAAG3G,EAAOQ,UAAY4C,EAAIuD,CAGlD,IAAIvD,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAE6wB,IAAIttB,GAIR6kB,EAASpoB,EAAE8G,WAAYvD,EAEhC,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAE6wB,IAAIttB,GAIR6kB,EAASpoB,EAAGuD,EAAEuD,WAGvB,IAAKX,EAAOnG,IAAQmG,EAAO5C,GAAK,CAC9B,IAAKvD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,2CAElB,OAAOkD,GAAEI,OAASmD,EAAEnD,MAGtB,GAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG6kB,EAKnC,IAAIhiB,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAOvD,IAAKuD,CAGd,IAAIqmB,EAAU5pB,IAAY,OAANA,EAClB,MAAOooB,IAAUpoB,EAAGuD,EAEtB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO6kB,GAASpoB,GAAIuD,EAGtB,IAAI+C,EAAUtG,IAAMsG,EAAU/C,GAC5B,KAAM,IAAI5C,WAAU,sDAGtB,MAAM,IAAI5D,GAAKkB,MAAM8G,qBAAqB,WAAYhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,KAI1FxG,EAAK81B,SAAW,WACd,KAAM,IAAI/1B,OAAM,+CAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBuB,EAAc4C,EAAKhJ,OAAOoG,YAC1BsmB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAgC9B7f,GAAKsrB,QAAU,QAASA,GAAQroB,EAAGuD,GACjC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAC1B,OAAQD,EAAYtD,EAAGuD,EAAG3G,EAAOQ,UAAgBmG,EAAJvD,CAG/C,IAAIA,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAE+a,GAAGxX,GAIP8kB,EAAQroB,EAAE8G,WAAYvD,EAE/B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAE+a,GAAGxX,GAIP8kB,EAAQroB,EAAGuD,EAAEuD,WAGtB,IAAKX,EAAOnG,IAAQmG,EAAO5C,GAAK,CAC9B,IAAKvD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,2CAElB,OAAOkD,GAAEI,MAAQmD,EAAEnD,MAGrB,GAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG8kB,EAKnC,IAAIjiB,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAWA,GAAJvD,CAGT,IAAI4pB,EAAU5pB,IAAY,OAANA,EAClB,MAAOqoB,IAASroB,EAAGuD,EAErB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO8kB,GAAQroB,GAAIuD,EAGrB,IAAI+C,EAAUtG,IAAMsG,EAAU/C,GAC5B,KAAM,IAAI5C,WAAU,sDAGtB,MAAM,IAAI5D,GAAKkB,MAAM8G,qBAAqB,UAAWhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOtF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBuB,EAAc4C,EAAKhJ,OAAOoG,YAC1BsmB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA2B9B7f,GAAKurB,UAAY,QAASA,GAAUtoB,EAAGuD,GACrC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,YAAazB,UAAU9B,OAAQ,EAGrE,IAAIU,EAAS/B,IAAM+B,EAASwB,GAC1B,MAAOD,GAAYtD,EAAGuD,EAAG3G,EAAOQ,UAAgBmG,EAAJvD,CAG9C,IAAIA,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,IAEfqmB,EAAUrmB,IAAY,OAANA,KACvBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,GACRuC,EAAE4wB,IAAIrtB,GAIR+kB,EAAUtoB,EAAE8G,WAAYvD,EAEjC,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,IAEf4pB,EAAU5pB,IAAY,OAANA,KACvBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,GACRuC,EAAE4wB,IAAIrtB,GAIR+kB,EAAUtoB,EAAGuD,EAAEuD,WAGxB,IAAKX,EAAOnG,IAAQmG,EAAO5C,GAAK,CAC9B,IAAKvD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,2CAElB,OAAOkD,GAAEI,OAASmD,EAAEnD,MAGtB,GAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAG+kB,EAKnC,IAAIliB,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAYA,IAALvD,CAGT,IAAI4pB,EAAU5pB,IAAY,OAANA,EAClB,MAAOsoB,IAAWtoB,EAAGuD,EAEvB,IAAIqmB,EAAUrmB,IAAY,OAANA,EAClB,MAAO+kB,GAAUtoB,GAAIuD,EAGvB,IAAI+C,EAAUtG,IAAMsG,EAAU/C,GAC5B,KAAM,IAAI5C,WAAU,sDAGtB,MAAM,IAAI5D,GAAKkB,MAAM8G,qBAAqB,YAAahI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,KAI3FxG,EAAK+1B,UAAY,WACf,KAAM,IAAIh2B,OAAM,iDAOf,SAASjB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvBuB,EAAc4C,EAAKhJ,OAAOoG,YAC1BsmB,EAAY1jB,EAAK,WAAW0jB,UAC5BxjB,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA4C9B7f,GAAKwrB,QAAU,QAASA,GAAQvoB,EAAGuD,GACjC,GAAwB,GAApBJ,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAIU,EAAS/B,GAAI,CACf,GAAI+B,EAASwB,GACX,OAAQD,EAAYtD,EAAGuD,EAAG3G,EAAOQ,QAE9B,IAAIkJ,EAAU/C,GACjB,OAAQD,EAAYtD,EAAGuD,EAAEyB,GAAIpI,EAAOQ,WAAakG,EAAYC,EAAE0B,GAAI,EAAGrI,EAAOQ,SAIjF,GAAIkJ,EAAUtG,GAAI,CAChB,GAAI+B,EAASwB,GACX,OAAQD,EAAYtD,EAAEgF,GAAIzB,EAAG3G,EAAOQ,WAAakG,EAAYtD,EAAEiF,GAAI,EAAGrI,EAAOQ,QAE1E,IAAIkJ,EAAU/C,GACjB,OAAQD,EAAYtD,EAAEgF,GAAIzB,EAAEyB,GAAIpI,EAAOQ,WAAakG,EAAYtD,EAAEiF,GAAI1B,EAAE0B,GAAIrI,EAAOQ,SAIvF,GAAI4C,YAAavC,GASf,MAPIsE,GAASwB,GACXA,EAAI9F,EAAUM,QAAQwF,GAEfqmB,EAAUrmB,KACjBA,EAAI,GAAI9F,GAAU8F,EAAI,EAAI,IAGxBA,YAAa9F,IACPuC,EAAEkqB,GAAG3mB,GAIRglB,EAAQvoB,EAAE8G,WAAYvD,EAE/B,IAAIA,YAAa9F,GASf,MAPIsE,GAAS/B,GACXA,EAAIvC,EAAUM,QAAQiC,GAEf4pB,EAAU5pB,KACjBA,EAAI,GAAIvC,GAAUuC,EAAI,EAAI,IAGxBA,YAAavC,IACPuC,EAAEkqB,GAAG3mB,GAIRglB,EAAQvoB,EAAGuD,EAAEuD,WAGtB,IAAKX,EAAOnG,IAAQmG,EAAO5C,GAAK,CAC9B,IAAKvD,EAAE4M,UAAUrJ,GACf,KAAM,IAAIzG,OAAM,2CAElB,OAAOkD,GAAEI,OAASmD,EAAEnD,MAGtB,GAAIwc,EAAa5c,IAAM4c,EAAarZ,GAClC,MAAO9E,GAAWqe,SAAS9c,EAAGuD,EAAGglB,EAKnC,IAAIniB,EAASpG,IAAMoG,EAAS7C,GAC1B,MAAOvD,IAAKuD,CAGd,IAAIqmB,EAAU5pB,GACZ,MAAOuoB,IAASvoB,EAAGuD,EAErB,IAAIqmB,EAAUrmB,GACZ,MAAOglB,GAAQvoB,GAAIuD,EAGrB,IAAU,OAANvD,EACF,MAAa,QAANuD,CAET,IAAU,OAANA,EACF,MAAa,QAANvD,CAGT,IAAUC,SAAND,EACF,MAAaC,UAANsD,CAET,IAAUtD,SAANsD,EACF,MAAatD,UAAND,CAGT,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,UAAWhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUwG,OAOtF,SAAS1H,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6DzB,QAASg2B,GAAY/yB,EAAGuD,GACvB,MAAOxG,GAAKsrB,QAAQroB,EAAGuD,GAAMvD,EAAIuD,EASlC,QAASyvB,GAAKrrB,GACZ,GAAInI,GAAMS,MAQV,IANAxB,EAAWye,YAAYvV,EAAO,SAAUvH,IAC1BH,SAART,GAAqBzC,EAAKsrB,QAAQjoB,EAAOZ,MAC3CA,EAAMY,KAIEH,SAART,EACF,KAAM,IAAI1C,OAAM,yCAGlB,OAAO0C,GAnFT,GACIf,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC0gB,EAAene,EAAWme,YAiC9B7f,GAAKyC,IAAM,SAAaoI,GACtB,GAAwB,GAApBzE,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,4DAGxB,IAAI0X,EAAahV,GAAO,CACtB,GAAwB,GAApBzE,UAAU9B,OAEZ,MAAO2xB,GAAKprB,EAET,IAAwB,GAApBzE,UAAU9B,OAEjB,MAAO5C,GAAWwe,OAAO9Z,UAAU,GAAIA,UAAU,GAAI4vB,EAGrD,MAAM,IAAI7tB,aAAY,8BAKxB,MAAO8tB,GAAK7vB,cAkCb,SAAStH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6DzB,QAASk2B,GAAWjzB,EAAGuD,GACtB,MAAOxG,GAAKorB,OAAOnoB,EAAGuD,GAAKvD,EAAIuD,EAShC,QAAS2vB,GAAKvrB,GACZ,GAAIrI,GAAMW,MAQV,IANAxB,EAAWye,YAAYvV,EAAO,SAAUvH,IAC1BH,SAARX,GAAqBvC,EAAKorB,OAAO/nB,EAAOd,MAC1CA,EAAMc,KAIEH,SAARX,EACF,KAAM,IAAIxC,OAAM,yCAGlB,OAAOwC,GAnFT,GACIb,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC0gB,EAAene,EAAWme,YAiC9B7f,GAAKuC,IAAM,SAAasI,GACtB,GAAwB,GAApBzE,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,4DAGxB,IAAI0X,EAAahV,GAAO,CACtB,GAAwB,GAApBzE,UAAU9B,OAEZ,MAAO6xB,GAAKtrB,EAET,IAAwB,GAApBzE,UAAU9B,OAEjB,MAAO5C,GAAWwe,OAAO9Z,UAAU,GAAIA,UAAU,GAAI8vB,EAGrD,MAAM,IAAI/tB,aAAY,8BAKxB,MAAOguB,GAAK/vB,cAkCb,SAAStH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAoEzB,QAASo2B,GAAOxrB,EAAOuB,GACtB,GAAIyf,GAAMlqB,EAAWwe,OAAOtV,EAAOuB,EAAKnM,EAAKkoB,KACxC7O,EAAIjW,EAAQwH,GAASQ,EAAKR,GAASA,EAAMQ,MAC7C,OAAOpL,GAAKooB,OAAOwD,EAAKvS,EAAElN,IAS5B,QAASkqB,GAAMzrB,GACb,GAAIghB,GAAM,EACN1gB,EAAM,CAOV,IALAxJ,EAAWye,YAAYvV,EAAO,SAAUvH,GACtCuoB,EAAM5rB,EAAKkoB,IAAI0D,EAAKvoB,GACpB6H,MAGU,IAARA,EACF,KAAM,IAAInL,OAAM,0CAGlB,OAAOC,GAAKooB,OAAOwD,EAAK1gB,GA5F1B,GACIxJ,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC0gB,EAAene,EAAWme,aAE1BzU,EAAOjM,EAAoB,KAAKiM,KAChChI,EAAUD,MAAMC,OA6BpBpD,GAAKwC,KAAO,SAAcqI,GACxB,GAAwB,GAApBzE,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,6DAGxB,IAAI0X,EAAahV,GAAO,CACtB,GAAwB,GAApBzE,UAAU9B,OAEZ,MAAO+xB,GAAMxrB,EAEV,IAAwB,GAApBzE,UAAU9B,OAEjB,MAAO8xB,GAAOhwB,UAAU,GAAIA,UAAU,GAGtC,MAAM,IAAI+B,aAAY,8BAKxB,MAAOkuB,GAAMjwB,cA4Cd,SAAStH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAqEzB,QAASs2B,GAAQ1rB,GACf,GAAIqoB,GAAO5I,EAAQzf,EAEnBqoB,GAAKxG,KAAKzsB,EAAKmrB,QAEf,IAAIjgB,GAAM+nB,EAAK3uB,MAEf,IAAW,GAAP4G,EACF,KAAM,IAAInL,OAAM,4CAGlB,IAAImL,EAAM,GAAK,EAAG,CAEhB,GAAIqrB,GAAOtD,EAAK/nB,EAAM,EAAI,GACtBsrB,EAAQvD,EAAK/nB,EAAM,EAEvB,MAAKlG,EAASuxB,IAAWA,YAAgB71B,IAAgB61B,YAAgBh1B,IACvE,KAAM,IAAIvB,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUu2B,GAErE,MAAKvxB,EAASwxB,IAAYA,YAAiB91B,IAAgB81B,YAAiBj1B,IAC1E,KAAM,IAAIvB,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUw2B,GAGrE,OAAOx2B,GAAKooB,OAAOpoB,EAAKkoB,IAAIqO,EAAMC,GAAQ,GAI1C,GAAIC,GAASxD,GAAM/nB,EAAM,GAAK,EAE9B,MAAKlG,EAASyxB,IAAaA,YAAkB/1B,IAAgB+1B,YAAkBl1B,IAC7E,KAAM,IAAIvB,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUy2B,GAGrE,OAAOA,GArGX,GACIl1B,IADSpC,EAAoB,GACtBA,EAAoB,KAC3BuB,EAAYV,EAAKS,KAAKC,UACtBgB,EAAavC,EAAoB,IAEjC6F,EAAW7F,EAAoB,GAAG6F,SAClC6a,EAAene,EAAWme,aAE1BwK,EAAUlrB,EAAoB,KAAKkrB,OA4BvCrqB,GAAKyrB,OAAS,SAAgB5gB,GAC5B,GAAwB,GAApBzE,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,+DAGxB,IAAI0X,EAAahV,GAAO,CACtB,GAAwB,GAApBzE,UAAU9B,OAEZ,MAAOgyB,GAAQzrB,EAAKtH,UAEjB,MAAwB,IAApB6C,UAAU9B,OAGX,GAAIvE,OAAM,uCAIV,GAAIoI,aAAY,8BAKxB,MAAOmuB,GAAQnzB,MAAMpC,UAAU2sB,MAAMluB,KAAK4G,eAmD3C,SAAStH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA+DzB,QAAS02B,GAAM9rB,GACb,GAAI8gB,GAAOxoB,MAMX,IAJAxB,EAAWye,YAAYvV,EAAO,SAAUvH,GACtCqoB,EAAiBxoB,SAATwoB,EAAsBroB,EAAQrD,EAAK8oB,SAAS4C,EAAMroB,KAG/CH,SAATwoB,EACF,KAAM,IAAI3rB,OAAM,0CAGlB,OAAO2rB,GAzET,GACIhqB,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC0gB,EAAene,EAAWme,YA2B9B7f,GAAK0rB,KAAO,SAAc7gB,GACxB,GAAwB,GAApBzE,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,6DAGxB,IAAI0X,EAAahV,GAAO,CACtB,GAAwB,GAApBzE,UAAU9B,OAEZ,MAAOoyB,GAAM7rB,EAEV,MAAwB,IAApBzE,UAAU9B,OAGX,GAAIvE,OAAM,qCAIV,GAAIoI,aAAY,8BAKxB,MAAOuuB,GAAMtwB,cA4Bd,SAAStH,GAEd,YAEAA,GAAOD,QAAU,SAAUmB,GA2CzBA,EAAK2rB,IAAM,WACT,GAAwB,GAApBvlB,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,4DAGxB,IAAIwuB,GAAW32B,EAAK,OAAOiM,MAAM,KAAM7F,UACvC,OAAOpG,GAAKmH,KAAKwvB,MAOhB,SAAS73B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA6DzB,QAAS42B,GAAKhsB,GACZ,GAAIghB,GAAM1oB,MAMV,IAJAxB,EAAWye,YAAYvV,EAAO,SAAUvH,GACtCuoB,EAAe1oB,SAAR0oB,EAAqBvoB,EAAQrD,EAAKkoB,IAAI0D,EAAKvoB,KAGxCH,SAAR0oB,EACF,KAAM,IAAI7rB,OAAM,yCAGlB,OAAO6rB,GAvET,GACIlqB,IADSvC,EAAoB,GAChBA,EAAoB,KAEjC0gB,EAAene,EAAWme,YAyB9B7f,GAAK4rB,IAAM,SAAa/gB,GACtB,GAAwB,GAApBzE,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,4DAGxB,IAAI0X,EAAahV,GAAO,CACtB,GAAwB,GAApBzE,UAAU9B,OAEZ,MAAOsyB,GAAK/rB,EAET,MAAwB,IAApBzE,UAAU9B,OAGX,GAAIvE,OAAM,oCAIV,GAAIoI,aAAY,8BAKxB,MAAOyuB,GAAKxwB,cA4Bb,SAAStH,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAmGzB,QAAS62B,GAAKjsB,EAAOksB,GACnB,GAAIlL,GAAM,EACN1gB,EAAM,CAOV,IAJAxJ,EAAWye,YAAYvV,EAAO,SAAUvH,GACtCuoB,EAAM5rB,EAAKkoB,IAAI0D,EAAKvoB,GACpB6H,MAEU,IAARA,EAAW,KAAM,IAAInL,OAAM,yCAE/B,IAAIyC,GAAOxC,EAAKooB,OAAOwD,EAAK1gB,EAS5B,QANA0gB,EAAM,EACNlqB,EAAWye,YAAYvV,EAAO,SAAUvH,GACtC,GAAIqD,GAAO1G,EAAKkpB,SAAS7lB,EAAOb,EAChCopB,GAAM5rB,EAAKkoB,IAAI0D,EAAK5rB,EAAK8oB,SAASpiB,EAAMA,MAGlCowB,GACN,IAAK,cACH,MAAO92B,GAAKooB,OAAOwD,EAAK1gB,EAE1B,KAAK,SACH,MAAOlL,GAAKooB,OAAOwD,EAAK1gB,EAAM,EAEhC,KAAK,WACH,GAAIsjB,GAAQ5C,YAAelrB,GAAa,GAAIA,GAAU,GAAK,CAC3D,OAAe,IAAPwK,EAAYsjB,EAAOxuB,EAAKooB,OAAOwD,EAAK1gB,EAAM,EAEpD,SACE,KAAM,IAAInL,OAAM,0BAA4B+2B,EAAgB,gEAlIlE,GACIp2B,IADSvB,EAAoB,GACjBa,EAAKS,KAAKC,WACtBgB,EAAavC,EAAoB,IAEjC0gB,EAAene,EAAWme,aAC1BxW,EAAWlK,EAAoB,KAAKkK,SAEpC0tB,EAAwB,UA4C5B/2B,GAAK,OAAS,SAAkB4K,EAAOksB,GACrC,GAAwB,GAApB1wB,UAAU9B,OACZ,KAAM,IAAI6D,aAAY,4DAGxB;GAAI0X,EAAajV,GAAQ,CACvB,GAAwB,GAApBxE,UAAU9B,OAEZ,MAAOuyB,GAAKjsB,EAAOmsB,EAEhB,IAAwB,GAApB3wB,UAAU9B,OAAa,CAG9B,IAAK+E,EAASytB,GACZ,KAAM,IAAI/2B,OAAM,8CAGlB,OAAO82B,GAAKjsB,EAAOksB,GAUnB,KAAM,IAAI3uB,aAAY,8BAKxB,MAAO0uB,GAAKzwB,UAAW2wB,MAwDxB,SAASj4B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,aAE1BmX,EAAY7tB,EAAKxC,UAAUswB,MAyB/Bj3B,GAAK6rB,KAAO,QAASA,GAAK5oB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAIA,IAAK,IAAW,GAALA,EACNiC,KAAK2mB,KAAK5oB,GAGV4oB,EAAK,GAAI1qB,GAAQ8B,EAAG,GAI/B,IAAIsG,EAAUtG,GAAI,CAEhB,GAAIotB,GAAQ,GAAIlvB,GACZ8B,EAAEiF,GAAKjF,EAAEiF,GAAKjF,EAAEgF,GAAKhF,EAAEgF,GAAK,EAC5B,GAAOhF,EAAEgF,GAAKhF,EAAEiF,IAEhBooB,EAAQtwB,EAAKmH,KAAKkpB,GAClB6G,EAAQ,GAAI/1B,GACZmvB,EAAMroB,GAAKhF,EAAEiF,GACbooB,EAAMpoB,GAAKjF,EAAEgF,IAEbkvB,EAAQn3B,EAAKoQ,IAAI8mB,EAGrB,OAAO,IAAI/1B,GACP,mBAAyBg2B,EAAMjvB,GAC/BivB,EAAMlvB,IAIZ,GAAI4X,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAG4oB,EAG/B,IAAIgB,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAK2mB,KAAK5oB,EAGnB,IAAIA,YAAavC,GACf,MAAOs2B,GAAU/zB,EAGnB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,aAE1BuX,EAAYjuB,EAAKxC,UAAU0wB,MAyB/Br3B,GAAK8rB,KAAO,QAASA,GAAK7oB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAIA,IAAK,IAAW,GAALA,EACNiC,KAAK4mB,KAAK7oB,GAGV6oB,EAAK,GAAI3qB,GAAQ8B,EAAG,GAI/B,IAAIsG,EAAUtG,GAAI,CAEhB,GAAIgF,GAAKhF,EAAEgF,GACPC,EAAKjF,EAAEiF,GACPmoB,EAAQ,GAAIlvB,GACZ+G,EAAKA,EAAKD,EAAKA,EAAK,EACpB,GAAOA,EAAKC,GAEZooB,EAAQtwB,EAAKmH,KAAKkpB,GAClB6G,EAAQ,GAAI/1B,GACZmvB,EAAMroB,GAAKC,EACXooB,EAAMpoB,GAAKD,GAEXkvB,EAAQn3B,EAAKoQ,IAAI8mB,EAErB,OAAO,IAAI/1B,GAAQg2B,EAAMjvB,IAAKivB,EAAMlvB,IAGtC,GAAI4X,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAG6oB,EAG/B,IAAIe,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAK4mB,KAAK7oB,EAGnB,IAAIA,YAAavC,GACf,MAAO02B,GAAUn0B,EAGnB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBsW,EAAene,EAAWme,aAE1ByX,EAAYnuB,EAAKxC,UAAU4wB,MAyB/Bv3B,GAAK+rB,KAAO,QAASA,GAAK9oB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAOiC,MAAK6mB,KAAK9oB,EAGnB,IAAIsG,EAAUtG,GAAI,CAEhB,GAAIgF,GAAKhF,EAAEgF,GACPC,EAAKjF,EAAEiF,GACP8lB,EAAM/lB,EAAKA,GAAM,EAAMC,IAAO,EAAMA,GAEpCmoB,EAAQ,GAAIlvB,IACX,EAAM+G,EAAKA,EAAKD,EAAKA,GAAM+lB,EAC3B,GAAO/lB,EAAM+lB,GAEdsC,EAAQtwB,EAAKoQ,IAAIigB,EAErB,OAAO,IAAIlvB,IACN,GAAMmvB,EAAMpoB,GACb,GAAMooB,EAAMroB,IAIlB,GAAI4X,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAG8oB,EAG/B,IAAIc,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAK6mB,KAAK9oB,EAGnB,IAAIA,YAAavC,GACf,MAAO42B,GAAUr0B,EAGnB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAE5BhN,GADY1e,EAAQoI,UACL7H,EAAWme,aA+B9B7f,GAAKmK,MAAQ,QAASA,GAAM3D,EAAGvD,GAC7B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,IAAIU,EAASwB,IACPxB,EAAS/B,GACX,MAAOiC,MAAKiF,MAAM3D,EAAGvD,EAMzB,IAAI4c,EAAarZ,IAAMqZ,EAAa5c,GAClC,MAAOvB,GAAWqe,SAASvZ,EAAGvD,EAAGkH,EAGnC,IAAI0iB,EAAUrmB,IAAY,OAANA,EAClB,MAAO2D,IAAO3D,EAAGvD,EAEnB,IAAI4pB,EAAU5pB,IAAY,OAANA,EAClB,MAAOkH,GAAM3D,GAAIvD,EAInB,IAAIuD,YAAa9F,GACf,MAAOyJ,GAAM3D,EAAEuD,WAAY9G,EAE7B,IAAIA,YAAavC,GACf,MAAOyJ,GAAM3D,EAAGvD,EAAE8G,WAGpB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,QAAShI,EAAK,UAAUwG,GAAIxG,EAAK,UAAUiD,OAOpF,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,aAE1B2X,EAASruB,EAAKxC,UAAU8wB,OA4B5Bz3B,GAAKgK,IAAM,QAASA,GAAI/G,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAOiC,MAAK8E,IAAI/G,EAGlB,IAAIsG,EAAUtG,GAEZ,MAAO,IAAI9B,GACP+D,KAAK8E,IAAI/G,EAAEgF,IAAMjI,EAAKgsB,MAAM/oB,EAAEiF,IAC9BhD,KAAK+E,IAAIhH,EAAEgF,IAAMjI,EAAKssB,MAAMrpB,EAAEiF,IAIpC,IAAIkB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,mCAEvB,OAAOsB,MAAK8E,IAAI/G,EAAEI,OAGpB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAG+G,EAG/B,IAAI6iB,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAK8E,IAAI/G,EAGlB,IAAIA,YAAavC,GACf,MAAO82B,GAAOv0B,EAAGpD,EAAOO,UAAW,EAGrC,MAAM,IAAIJ,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,aAE1B6X,EAAUvuB,EAAKxC,UAAUgxB,SAuB7B33B,GAAKgsB,KAAO,QAASA,GAAK/oB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,OAAQiC,KAAKsjB,IAAIvlB,GAAKiC,KAAKsjB,KAAKvlB,IAAM,CAGxC,IAAIsG,EAAUtG,GAAI,CAChB,GAAI20B,GAAK1yB,KAAKsjB,IAAIvlB,EAAEgF,IAChB4vB,EAAK3yB,KAAKsjB,KAAKvlB,EAAEgF,GACrB,OAAO,IAAI9G,GAAQ+D,KAAK8E,IAAI/G,EAAEiF,KAAO0vB,EAAKC,GAAM,EAAG3yB,KAAK+E,IAAIhH,EAAEiF,KAAO0vB,EAAKC,GAAM,GAGlF,GAAIzuB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,oCAEvB,OAAOooB,GAAK/oB,EAAEI,OAGhB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAG+oB,EAG/B,IAAIa,EAAU5pB,IAAY,OAANA,EAClB,MAAO+oB,GAAK/oB,EAAI,EAAI,EAGtB,IAAIA,YAAavC,GACf,MAAOg3B,GAAQz0B,EAAG,EAGpB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAuB9B7f,GAAKisB,IAAM,QAASA,GAAIhpB,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAO,GAAIiC,KAAKqnB,IAAItpB,EAGtB,IAAIsG,EAAUtG,GAAI,CAChB,GAAI+qB,GAAM9oB,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IACxB,EAAMhD,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IAAMhD,KAAK8E,IAAI,EAAM/G,EAAEgF,IAAM,CAEzD,OAAO,IAAI9G,GACP,EAAM+D,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IAAMhD,KAAK+E,IAAI,EAAMhH,EAAEgF,IAAM+lB,GACpD9oB,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IAAM,GAAO8lB,GAItC,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,mCAEvB,OAAO,GAAIsB,KAAKqnB,IAAItpB,EAAEI,OAGxB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGgpB,EAG/B,IAAIY,EAAU5pB,IAAY,OAANA,EAClB,MAAOgpB,IAAKhpB,EAGd,IAAIA,YAAavC,GAGf,MAAOurB,GAAIhpB,EAAE8G,WAGf,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAyB9B7f,GAAKksB,KAAO,QAASA,GAAKjpB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GAAI,CACf,GAAIwB,GAAIS,KAAKsjB,IAAI,EAAIvlB,EACrB,QAAQwB,EAAI,IAAMA,EAAI,GAGxB,GAAI8E,EAAUtG,GAAI,CAChB,GAAIsF,GAAIrD,KAAKsjB,IAAI,EAAIvlB,EAAEgF,IACnBA,EAAKM,EAAIrD,KAAK8E,IAAI,EAAI/G,EAAEiF,IACxBA,EAAKK,EAAIrD,KAAK+E,IAAI,EAAIhH,EAAEiF,IACxB8lB,GAAO/lB,EAAK,IAAMA,EAAK,GAAKC,EAAKA,CACrC,OAAO,IAAI/G,KACP8G,EAAK,IAAMA,EAAK,GAAKC,EAAKA,GAAM8lB,EAClC,GAAK9lB,EAAK8lB,GAId,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,oCAEvB,OAAOsoB,GAAKjpB,EAAEI,OAGhB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGipB,EAG/B,IAAIW,EAAU5pB,IAAY,OAANA,EAClB,MAAOipB,GAAKjpB,EAAI,EAAI,EAGtB,IAAIA,YAAavC,GAGf,MAAOwrB,GAAKjpB,EAAE8G,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAuB9B7f,GAAKmsB,IAAM,QAASA,GAAIlpB,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAO,GAAIiC,KAAK+E,IAAIhH,EAGtB,IAAIsG,EAAUtG,GAAI,CAEhB,GAAI+qB,GAAM,KAAQ9oB,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IAAMhD,KAAKsjB,IAAI,EAAMvlB,EAAEiF,KACvD,GAAMhD,KAAK8E,IAAI,EAAM/G,EAAEgF,GAE3B,OAAO,IAAI9G,GACP,GAAM+D,KAAK+E,IAAIhH,EAAEgF,KAAO/C,KAAKsjB,KAAKvlB,EAAEiF,IAAMhD,KAAKsjB,IAAIvlB,EAAEiF,KAAO8lB,EAC5D,GAAM9oB,KAAK8E,IAAI/G,EAAEgF,KAAO/C,KAAKsjB,KAAKvlB,EAAEiF,IAAMhD,KAAKsjB,IAAIvlB,EAAEiF,KAAO8lB,GAIlE,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,mCAEvB,OAAO,GAAIsB,KAAK+E,IAAIhH,EAAEI,OAGxB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGkpB,EAG/B,IAAIU,EAAU5pB,IAAY,OAANA,EAClB,MAAOkpB,IAAKlpB,EAGd,IAAIA,YAAavC,GAGf,MAAOyrB,GAAIlpB,EAAE8G,WAGf,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IACjCgB,EAASgJ,EAAKhJ,OAEd6E,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAyB9B7f,GAAKosB,KAAO,QAASA,GAAKnpB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GAEX,MAAS,IAALA,EAAeK,OAAOuD,IAEnB3B,KAAKa,IAAI,GAAKb,KAAKsjB,IAAIvlB,GAAKiC,KAAKsjB,KAAKvlB,KAAO9C,EAAOiF,KAAKnC,EAGlE,IAAIsG,EAAUtG,GAAI,CAChB,GAAI20B,GAAK1yB,KAAKsjB,IAAIvlB,EAAEgF,IAChB4vB,EAAK3yB,KAAKsjB,KAAKvlB,EAAEgF,IACjBA,EAAK/C,KAAK8E,IAAI/G,EAAEiF,KAAO0vB,EAAKC,GAC5B3vB,EAAKhD,KAAK+E,IAAIhH,EAAEiF,KAAO0vB,EAAKC,GAC5B7J,EAAM/lB,EAAKA,EAAKC,EAAKA,CACzB,OAAO,IAAI/G,GAAQ,EAAI8G,EAAK+lB,EAAK,GAAK9lB,EAAI8lB,GAG5C,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,oCAEvB,OAAOwoB,GAAKnpB,EAAEI,OAGhB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGmpB,EAG/B,IAAIS,EAAU5pB,IAAY,OAANA,EAClB,MAAOmpB,GAAKnpB,EAAI,EAAI,EAGtB,IAAIA,YAAavC,GAGf,MAAO0rB,GAAKnpB,EAAE8G,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAuB9B7f,GAAKsZ,IAAM,QAASA,GAAIrW,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAO,GAAIiC,KAAK8E,IAAI/G,EAGtB,IAAIsG,EAAUtG,GAAI,CAEhB,GAAI+qB,GAAM,KAAQ9oB,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IAAMhD,KAAKsjB,IAAI,EAAMvlB,EAAEiF,KACvD,GAAMhD,KAAK8E,IAAI,EAAM/G,EAAEgF,GAE3B,OAAO,IAAI9G,GACP,GAAM+D,KAAK8E,IAAI/G,EAAEgF,KAAO/C,KAAKsjB,KAAKvlB,EAAEiF,IAAMhD,KAAKsjB,IAAKvlB,EAAEiF,KAAO8lB,EAC7D,GAAM9oB,KAAK+E,IAAIhH,EAAEgF,KAAO/C,KAAKsjB,IAAKvlB,EAAEiF,IAAMhD,KAAKsjB,KAAKvlB,EAAEiF,KAAO8lB,GAInE,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,mCAEvB,OAAO,GAAIsB,KAAK8E,IAAI/G,EAAEI,OAGxB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGqW,EAG/B,IAAIuT,EAAU5pB,IAAY,OAANA,EAClB,MAAOqW,IAAKrW,EAGd,IAAIA,YAAavC,GAGf,MAAO4Y,GAAIrW,EAAE8G,WAGf,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YAyB9B7f,GAAKqsB,KAAO,QAASA,GAAKppB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAO,IAAKiC,KAAKsjB,IAAIvlB,GAAKiC,KAAKsjB,KAAKvlB,GAGtC,IAAIsG,EAAUtG,GAAI,CAChB,GAAI20B,GAAK1yB,KAAKsjB,IAAIvlB,EAAEgF,IAChB4vB,EAAK3yB,KAAKsjB,KAAKvlB,EAAEgF,IACjBA,EAAK/C,KAAK8E,IAAI/G,EAAEiF,KAAO0vB,EAAKC,GAC5B3vB,EAAKhD,KAAK+E,IAAIhH,EAAEiF,KAAO0vB,EAAKC,GAC5B7J,EAAM/lB,EAAKA,EAAKC,EAAKA,CACzB,OAAO,IAAI/G,GAAQ,EAAI8G,EAAK+lB,EAAK,GAAK9lB,EAAK8lB,GAG7C,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,oCAEvB,OAAOyoB,GAAKppB,EAAEI,OAGhB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGopB,EAG/B,IAAIQ,EAAU5pB,IAAY,OAANA,EAClB,MAAOopB,GAAKppB,EAAI,EAAI,EAGtB,IAAIA,YAAavC,GAGf,MAAO2rB,GAAKppB,EAAE8G,WAGhB,MAAM,IAAI/J,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,aAE1BiY,EAAS3uB,EAAKxC,UAAU8wB,OA4B5Bz3B,GAAKiK,IAAM,QAASA,GAAIhH,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAOiC,MAAK+E,IAAIhH,EAGlB,IAAIsG,EAAUtG,GACZ,MAAO,IAAI9B,GACP+D,KAAK+E,IAAIhH,EAAEgF,IAAMjI,EAAKgsB,MAAM/oB,EAAEiF,IAC9BhD,KAAK8E,IAAI/G,EAAEgF,IAAMjI,EAAKssB,KAAKrpB,EAAEiF,IAInC,IAAIkB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,mCAEvB,OAAOsB,MAAK+E,IAAIhH,EAAEI,OAGpB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGgH,EAG/B,IAAI4iB,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAK+E,IAAIhH,EAGlB,IAAIA,YAAavC,GACf,MAAOo3B,GAAO70B,EAAGpD,EAAOO,UAAW,EAGrC,MAAM,IAAIJ,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,aAE1BkY,EAAU5uB,EAAKxC,UAAUgxB,SAuB7B33B,GAAKssB,KAAO,QAASA,GAAKrpB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GACX,MAAIiC,MAAKa,IAAI9C,GAAK,EACTA,EAAKA,EAAIA,EAAIA,EAAK,EAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAK,KAE3CiC,KAAKsjB,IAAIvlB,GAAKiC,KAAKsjB,KAAKvlB,IAAM,CAI1C,IAAIsG,EAAUtG,GAAI,CAChB,GAAI+0B,GAAM9yB,KAAK8E,IAAI/G,EAAEiF,IACjB+vB,EAAM/yB,KAAK+E,IAAIhH,EAAEiF,IACjB0vB,EAAK1yB,KAAKsjB,IAAIvlB,EAAEgF,IAChB4vB,EAAK3yB,KAAKsjB,KAAKvlB,EAAEgF,GACrB,OAAO,IAAI9G,GAAQ62B,GAAOJ,EAAKC,GAAM,EAAGI,GAAOL,EAAKC,GAAM,GAG5D,GAAIzuB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,oCAEvB,OAAO0oB,GAAKrpB,EAAEI,OAGhB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGqpB,EAG/B,IAAIO,EAAU5pB,IAAY,OAANA,EAClB,MAAOqpB,GAAKrpB,EAAI,EAAI,EAGtB,IAAIA,YAAavC,GACf,MAAOq3B,GAAQ90B,EAAG,EAGpB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,EAAMH,GAC/B,GAAIsJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,aAE1BqY,EAAS/uB,EAAKxC,UAAU4lB,GAyB5BvsB,GAAKusB,IAAM,QAASA,GAAItpB,GACtB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAIU,EAAS/B,GACX,MAAOiC,MAAKqnB,IAAItpB,EAGlB,IAAIsG,EAAUtG,GAAI,CAChB,GAAI+qB,GAAM9oB,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IACxB,EAAMhD,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IAAMhD,KAAK8E,IAAI,EAAM/G,EAAEgF,IAC/C,CAEJ,OAAO,IAAI9G,GACP,EAAM+D,KAAKsjB,IAAI,GAAOvlB,EAAEiF,IAAMhD,KAAK+E,IAAI,EAAMhH,EAAEgF,IAAM+lB,GACpD,EAAM9oB,KAAKsjB,IAAI,GAAOvlB,EAAEiF,KAAO8lB,GAItC,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,mCAEvB,OAAOsB,MAAKqnB,IAAItpB,EAAEI,OAGpB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGspB,EAG/B,IAAIM,EAAU5pB,IAAY,OAANA,EAClB,MAAOiC,MAAKqnB,IAAItpB,EAGlB,IAAIA,YAAavC,GACf,MAAOw3B,GAAOj1B,EAAGpD,EAAOO,UAG1B,MAAM,IAAIJ,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAO/D,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BuB,EAAYV,EAAKS,KAAKC,UACtBS,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjC6F,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,UAC5BtjB,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,aAE1BsY,EAAUhvB,EAAKxC,UAAU6lB,IA0B7BxsB,GAAKwsB,KAAO,QAASA,GAAKvpB,GACxB,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAGhE,IAAIU,EAAS/B,GAAI,CACf,GAAIwB,GAAIS,KAAKsjB,IAAI,EAAIvlB,EACrB,QAAQwB,EAAI,IAAMA,EAAI,GAGxB,GAAI8E,EAAUtG,GAAI,CAChB,GAAIsF,GAAIrD,KAAKsjB,IAAI,EAAIvlB,EAAEgF,IACnBA,EAAKM,EAAIrD,KAAK8E,IAAI,EAAI/G,EAAEiF,IACxBA,EAAKK,EAAIrD,KAAK+E,IAAI,EAAIhH,EAAEiF,IACxB8lB,GAAO/lB,EAAK,IAAMA,EAAK,GAAKC,EAAKA,CACrC,OAAO,IAAI/G,KACP8G,EAAK,IAAMA,EAAK,GAAKC,EAAKA,GAAM8lB,EAC7B,EAAL9lB,EAAS8lB,GAIb,GAAI5kB,EAAOnG,GAAI,CACb,IAAKA,EAAE2G,QAAQrI,EAAKsI,WAAWC,OAC7B,KAAM,IAAIlG,WAAW,oCAEvB,OAAO4oB,GAAKvpB,EAAEI,OAGhB,GAAIwc,EAAa5c,GACf,MAAOvB,GAAWoe,QAAQ7c,EAAGupB,EAG/B,IAAIK,EAAU5pB,IAAY,OAANA,EAClB,MAAOupB,GAAKvpB,EAAI,EAAI,EAGtB,IAAIA,YAAavC,GACf,MAAOy3B,GAAQl1B,EAGjB,MAAM,IAAIjD,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,OAOhE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BoC,EAAOpC,EAAoB,IAC3BuC,EAAavC,EAAoB,IAEjCkK,EAAWF,EAAKG,OAAOD,SACvBD,EAAS7H,EAAK6H,OACdyW,EAAene,EAAWme,YA0B9B7f,GAAK8P,GAAK,QAASA,GAAG7M,EAAGyL,GACvB,GAAwB,GAApBtI,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,KAAMzB,UAAU9B,OAAQ,EAG9D,IAAI8E,EAAOnG,KACLmG,EAAOsF,IAASrF,EAASqF,IAC3B,MAAOzL,GAAE6M,GAAGpB,EAMhB,IAAImR,EAAa5c,IAAM4c,EAAanR,GAClC,MAAOhN,GAAWqe,SAAS9c,EAAGyL,EAAMoB,EAGtC,MAAM,IAAI9P,GAAKkB,MAAM8G,qBAAqB,KAAMhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAU0O,OAOjF,SAAS5P,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3BoB,EAAS4I,EAAK5I,MAoBlBP,GAAKa,MAAQ,SAAgBoC,GAC3B,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,QAASzB,UAAU9B,OAAQ,EAGjE,OAAO/D,GAAOM,MAAMoC,MAOnB,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAyDzB,QAAS8sB,GAAQ7pB,EAAG8pB,GAClB,GAAoB,kBAATA,GACT,MAAO9pB,GAAEd,OAAO,SAAUi2B,GACxB,MAAOrL,GAAKqL,IAGX,IAAIrL,YAAgBppB,QACvB,MAAOV,GAAEd,OAAO,SAAUi2B,GACxB,MAAOrL,GAAKA,KAAKqL,IAInB,MAAM,IAAIx0B,WAAU,+BApExB,GAAItC,GAASnC,EAAoB,EA6BjCa,GAAKmC,OAAS,SAAUc,EAAG8pB,GACzB,GAAyB,IAArB3mB,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAGlE,IAAIrB,YAAa3B,GAAQ,CACvB,GAAI8J,GAAOnI,EAAEmI,MACb,IAAIA,EAAK9G,OAAS,EAChB,KAAM,IAAIvE,OAAM,0CAElB,OAAO,IAAIuB,GAAOwrB,EAAQ7pB,EAAEuI,UAAWuhB,IAEpC,GAAI5pB,MAAMC,QAAQH,GACrB,MAAO6pB,GAAQ7pB,EAAG8pB,EAGlB,MAAM,IAAI/sB,GAAKkB,MAAM8G,qBAAqB,SAAUhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUmrB,aA8BvF,SAASrsB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAC3BmK,EAASH,EAAKG,MAkElBtJ,GAAKqF,OAAS,SAAiBhC,EAAO/C,GACpC,GAAI4K,GAAM9E,UAAU9B,MACpB,IAAY,IAAR4G,GAAqB,IAARA,EACf,KAAM,IAAIlL,GAAKkB,MAAM2G,eAAe,SAAUqD,EAAK,EAAG,EAGxD,OAAO5B,GAAOjE,OAAOhC,EAAO/C,MAO3B,SAASxB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA2GzB,QAASq4B,GAAQ9pB,EAAMlL,EAAO/C,IACxBA,EAAQg4B,UAA2Bp1B,SAAflD,EAAKuO,MAEvBjO,EAAQi4B,MAAyB,kBAAVl1B,IAEzBrD,EAAKuO,GAAQ,WAEX,IAAK,GADD1D,MACKzG,EAAI,EAAGC,EAAM+B,UAAU9B,OAAYD,EAAJD,EAASA,IAAK,CACpD,GAAIgE,GAAMhC,UAAUhC,EACpByG,GAAKzG,GAAKgE,GAAOA,EAAI7E,UAEvB,MAAOF,GAAM4I,MAAMjM,EAAM6K,IAEvBxH,GAASA,EAAMpB,YACjBjC,EAAKuO,GAAMtM,UAAYoB,EAAMpB,YAK/BjC,EAAKuO,GAAQlL,EAIXA,GAASA,EAAMpB,YACjBjC,EAAK2B,WAAWM,UAAUsM,GAAQlL,EAAMpB,WAI1CjC,EAAK4C,SAASC,MAAM4qB,YAAYlf,EAAMlL,IAU1C,QAASm1B,GAAgBj4B,GACvB,MAAyB,kBAAVA,IACXyE,EAASzE,IAAW8I,EAAS9I,IAC7BgJ,EAAUhJ,IAAW6I,EAAO7I,GAnJlC,GAAI4I,GAAOhK,EAAoB,KAE3BgC,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAE3B6F,EAAWmE,EAAKhJ,OAAO6E,SACvBqE,EAAWF,EAAKG,OAAOD,SACvBE,EAAYpI,EAAQoI,UACpBH,EAAS7H,EAAK6H,MA+ClBpJ,GAAK,UAAY,QAASy4B,GAAYl4B,EAAQD,GAC5C,GAAI4K,GAAM9E,UAAU9B,MACpB,IAAW,GAAP4G,GAAmB,GAAPA,EACd,KAAM,IAAIlL,GAAKkB,MAAM2G,eAAe,SAAUqD,EAAK,EAAG,EAGxD,IAAIqD,GACAmqB,GACFJ,SAAUh4B,GAAWA,EAAQg4B,WAAY,EACzCC,KAAUj4B,GAAWA,EAAQi4B,OAAQ,EAGvC,IAAIlvB,EAAS9I,GAAS,CAMlB,GAAIo4B,GAAUx5B,EAAoB,KAAKoB,EACvCk4B,GAAYE,EAASr4B,OAMpB,CAAA,GAAsB,gBAAXC,GAed,KAAM,IAAIqD,WAAU,iCAbpB,KAAK2K,IAAQhO,GACX,GAAIA,EAAOuD,eAAeyK,GAAO,CAC/B,GAAIlL,GAAQ9C,EAAOgO,EACfiqB,GAAgBn1B,GAClBg1B,EAAQ9pB,EAAMlL,EAAOq1B,GAGrBD,EAAYp1B,EAAO/C,QAkE1B,SAASxB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GA0CzB,QAASutB,GAAWC,EAASliB,GAC3B,GAAIgD,GAAU,SAAUjL,EAAOhB,GAC7B,MAAIc,OAAMC,QAAQC,GACTA,EAAMf,IAAI,SAAU4K,EAAO9I,GAEhC,MAAOkK,GAAQpB,EAAO7K,EAAMH,OAAOkC,MAI9BkH,EAASjI,EAAOhB,EAAOmrB,GAIlC,OAAOlf,GAAQkf,MAtDjB,GAAIlsB,GAASnC,EAAoB,EA2BjCa,GAAKsC,IAAM,SAAUW,EAAGqI,GACtB,GAAwB,GAApBlF,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,MAAOzB,UAAU9B,OAAQ,EAG/D,IAAInB,MAAMC,QAAQH,GAChB,MAAOsqB,GAAUtqB,EAAGqI,EACf,IAAIrI,YAAa3B,GACtB,MAAO2B,GAAEX,IAAIgJ,EAEb,MAAM,IAAItL,GAAKkB,MAAM8G,qBAAqB,MAAOhI,EAAK,UAAUiD,OAwBjE,SAASnE,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAImJ,GAAOhK,EAAoB,KAE3BkK,EAAWF,EAAKG,OAAOD,QAqC3BrJ,GAAK44B,MAAQ,SAAgBC,EAAU3sB,EAAQ9L,GAC7C,GAAI8K,GAAM9E,UAAU9B,MACpB,IAAW,GAAP4G,GAAmB,GAAPA,EACd,KAAM,IAAIlL,GAAKkB,MAAM2G,eAAe,QAASqD,EAAK,EAAG,EAGvD,KAAK7B,EAASwvB,GACZ,KAAM,IAAIj1B,WAAU,wDAEtB,MAAMsI,YAAkBpM,SACtB,KAAM,IAAI8D,WAAU,yDAItB,OAAOi1B,GAAS1yB,QAAQ,eAAgB,SAAU2yB,EAAUj1B,GAGtD,IAFA,GAAIk1B,GAAOl1B,EAAIiH,MAAM,KACjBzH,EAAQ6I,EAAO6sB,EAAK7G,SACjB6G,EAAKz0B,QAAoBpB,SAAVG,GAAqB,CACzC,GAAIsN,GAAIooB,EAAK7G,OACb7uB,GAAQsN,EAAItN,EAAMsN,GAAKtN,EAAQ,IAGjC,MAAcH,UAAVG,EACGgG,EAAShG,GAILA,EAHArD,EAAKqF,OAAOhC,EAAOjD,GAOvB04B,OASZ,SAASh6B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAIsB,GAASnC,EAAoB,EA+BjCa,GAAKysB,KAAO,SAAUxpB,EAAGkoB,GACvB,GAAI6N,GAAW,IAEf,IAAyB,IAArB5yB,UAAU9B,OACZ00B,EAAWh5B,EAAKmrB,YAEb,CAAA,GAAyB,IAArB/kB,UAAU9B,OAiBjB,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,OAAQzB,UAAU9B,OAAQ,EAAG,EAhBjE,IAAuB,kBAAZ6mB,GACT6N,EAAW7N,MAER,IAAgB,QAAZA,EACP6N,EAAWh5B,EAAKmrB,YAEb,CAAA,GAAgB,SAAZA,EAMP,KAAM,IAAInrB,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUmrB,GALpF6N,GAAW,SAAUh1B,EAAGC,GACtB,OAAQjE,EAAKmrB,QAAQnnB,EAAGC,KAW9B,GAAIhB,YAAa3B,GAAQ,CACvB,GAAI8J,GAAOnI,EAAEmI,MACb,IAAIA,EAAK9G,OAAS,EAChB,KAAM,IAAIvE,OAAM,0CAElB,OAAO,IAAIuB,GAAO2B,EAAEuI,UAAUihB,KAAKuM,IAEhC,GAAI71B,MAAMC,QAAQH,GACrB,MAAOA,GAAEwpB,KAAKuM,EAGd,MAAM,IAAIh5B,GAAKkB,MAAM8G,qBAAqB,OAAQhI,EAAK,UAAUiD,GAAIjD,EAAK,UAAUmrB,OAOrF,SAASrsB,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GACzB,GAAI2M,GAAQxN,EAAoB,KAE5BgC,EAAUhC,EAAoB,GAC9BmC,EAASnC,EAAoB,GAC7BoC,EAAOpC,EAAoB,IAC3BkC,EAAQlC,EAAoB,GAC5BiC,EAAQjC,EAAoB,GAC5BqC,EAAOrC,EAAoB,GAyC/Ba,GAAK,UAAY,SAAkBiD,GACjC,GAAwB,GAApBmD,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,SAAUzB,UAAU9B,OAAQ,EAIlE,IAAI7D,GAAOkM,EAAMlM,KAAKwC,EAGtB,IAAa,WAATxC,EAAmB,CACrB,GAAIwC,YAAa9B,GAAS,MAAO,SACjC,IAAI8B,YAAa3B,GAAQ,MAAO,QAChC,IAAI2B,YAAa1B,GAAM,MAAO,MAC9B,IAAI0B,YAAa5B,GAAO,MAAO,OAC/B,IAAI4B,YAAa7B,GAAO,MAAO,OAC/B,IAAI6B,YAAazB,GAAM,MAAO,MAG9B,IAAIyB,YAAajD,GAAKS,KAAKC,UAAW,MAAO,WAC7C,IAAIuC,YAAajD,GAAK4C,SAASC,MAAO,MAAO,QAG/C,MAAOpC,MAON,SAAS3B,EAAQD,EAASM,GAE/B,YAEAL,GAAOD,QAAU,SAAUmB,GAwCzB,QAASqtB,GAAeziB,EAAOU,GAC7B,GAAIgD,GAAU,SAAUjL,EAAOhB,GACzBc,MAAMC,QAAQC,GAChBA,EAAMjB,QAAQ,SAAU8K,EAAO9I,GAE7BkK,EAAQpB,EAAO7K,EAAMH,OAAOkC,MAI9BkH,EAASjI,EAAOhB,EAAOuI,GAG3B0D,GAAQ1D,MAnDV,GAAItJ,GAASnC,EAAoB,EAyBjCa,GAAKoC,QAAU,SAAUa,EAAGqI,GAC1B,GAAwB,GAApBlF,UAAU9B,OACZ,KAAM,IAAItE,GAAKkB,MAAM2G,eAAe,UAAWzB,UAAU9B,OAAQ,EAGnE,IAAInB,MAAMC,QAAQH,GAChB,MAAOoqB,GAAcpqB,EAAGqI,EACnB,IAAIrI,YAAa3B,GACtB,MAAO2B,GAAEb,QAAQkJ,EAEjB,MAAM,IAAItL,GAAKkB,MAAM8G,qBAAqB,UAAWhI,EAAK,UAAUiD,OAsBrE,SAASnE,EAAQD,EAASM,GAE/B,YA4WA,SAAS85B,GAAQh2B,EAAGuD,EAAG0yB,GACrB,GAEIC,GAAOC,EAFP14B,EAAYuC,EAAEnC,YAGdu4B,IAAUp2B,EAAEoW,EAAI,GAChBigB,IAAU9yB,EAAE6S,EAAI,EACpB,IAAIggB,EAAO,CACTF,EAAQI,EAA6B16B,EAAQ0mB,IAAItiB,GACjD,KAAK,GAAImB,GAAI,EAAGA,EAAI+0B,EAAM70B,SAAUF,EAClC+0B,EAAM/0B,IAAM,MAGd+0B,GAAQI,EAA6Bt2B,EAEvC,IAAIq2B,EAAO,CACTF,EAAQG,EAA6B16B,EAAQ0mB,IAAI/e,GACjD,KAAK,GAAIpC,GAAI,EAAGA,EAAIg1B,EAAM90B,SAAUF,EAClCg1B,EAAMh1B,IAAM,MAGdg1B,GAAQG,EAA6B/yB,EAGvC,IAAIgzB,GAASC,EAASC,CAClBP,GAAM70B,QAAU80B,EAAM90B,QACxBk1B,EAAUL,EACVM,EAAUL,EACVM,EAAUL,IAEVG,EAAUJ,EACVK,EAAUN,EACVO,EAAUJ,EAGZ,IAAIK,GAAWH,EAAQl1B,OACnBs1B,EAAUH,EAAQn1B,OAClBu1B,EAAkC,EAArBX,EAAKG,EAAOC,GACzBQ,EAAS,GAAIp5B,GAAuB,EAAbm5B,GACvBE,EAAWr5B,EAAUs5B,IACrBC,EAAM,GAAIv5B,GAAU,GAEpBw5B,EAAWx5B,EAAUN,SAGzB,KAFAM,EAAUb,QAAQO,UAAW,MAEtBu5B,EAAW,GACZT,EAAKM,IAAUG,GAAWF,IAAUG,KAAaC,IACnDC,EAASA,EAAOjM,KAAKkM,IAEvBA,EAAWA,EAASjM,MAAMmM,EAE5B,MAAOL,EAAU,GACXV,EAAKQ,EAASD,IAAUG,KAAaC,IACvCC,EAASA,EAAOjM,KAAKkM,IAEvBA,EAAWA,EAASjM,MAAMmM,EAQ5B,OALAv5B,GAAUb,QAAQO,UAAW85B,IAEX,GAAdL,IACFC,EAAOzgB,GAAKygB,EAAOzgB,GAEdygB,EAIT,QAASP,GAA6Bt2B,GAKpC,IAAK,GAHDe,GAAIf,EAAEvD,EACN6I,EAAIvE,EAAE,GAAK,GAENI,EAAI,EAAGA,EAAIJ,EAAEM,SAAUF,EAAG,CAEjC,IAAK,GADDiV,GAAIrV,EAAEI,GAAK,GACNkN,EAAI,EAAI+H,EAAE/U,OAAQgN,KACzB+H,EAAI,IAAMA,CAGZ9Q,IAAK8Q,EAGP,GAAImG,EACJ,KAAKA,EAAIjX,EAAEjE,OAAS,EAAkB,KAAfiE,EAAEM,OAAO2W,KAAaA,GAE7C,GAAI2a,GAAKl3B,EAAEwB,EACPqB,EAAMyC,EAAEmlB,MAAM,EAAGlO,EAAI,GAAK,GAC1B4a,EAAOt0B,EAAIxB,MACf,IAAI61B,EAAK,EACP,KAAMA,EAAKC,EAET,IAAKD,GAAMC,EAAMD,IAAMr0B,GAAO,SAChBs0B,GAALD,IACTr0B,EAAMA,EAAI4nB,MAAM,EAAGyM,GAAM,IAAMr0B,EAAI4nB,MAAMyM,GAM7C,KAAK,GADDE,IAAO,GACFj2B,EAAI,EAAGA,EAAI0B,EAAIxB,QAAU,CAChC,IAAK,GAAIg2B,GAAOD,EAAI/1B,OAAQg2B,IAAQD,EAAIC,IAAS,IAEjDD,EAAI,IAAMv0B,EAAI+C,OAAOzE,MAAQ,CAC7B,KAAK,GAAIob,GAAI,EAAGA,EAAI6a,EAAI/1B,SAAUkb,EAC5B6a,EAAI7a,GAAK,IACO,MAAd6a,EAAI7a,EAAI,KACV6a,EAAI7a,EAAI,GAAK,GAGf6a,EAAI7a,EAAI,IAAM6a,EAAI7a,IAAM,EACxB6a,EAAI7a,IAAM,GAKhB,MAAO6a,GAAIE,UAkWb,QAASC,GAAcv3B,EAAGw3B,GAExB,GAAIC,KAAcD,EAAe,GAC7BE,EAAOF,EAAe,EAAIx3B,EAAEwB,EAC5Bm2B,EAAiB,GAAK33B,EAAEwB,EACxBo2B,EAAU31B,KAAK3C,IAAiC,SAA7B2C,KAAKkL,IAAIqqB,EAAe,GAAgB,EAAO,GAElExF,EAAMv0B,EAAUI,aAAaV,UAAWq6B,IACxCK,EAAO,GAAI7F,GAAI/vB,KAAK4mB,KAAK7oB,EAAE8G,YAAc,IAEzC3F,EAAI,CACR,GAAG,CACD,GAAI22B,GAAOl8B,EAAQ44B,QAAQqD,EAAMF,EAAgB,GAC7CI,EAAOC,EAASF,EACfA,GAAKtM,WACRsM,EAAK1hB,EAAIyhB,EAAKzhB,EAGhB,IAAI6hB,GAAOH,EAAKnO,MAAM3pB,GAAGiE,IAAI8zB,EAC7BF,GAAOA,EAAKlO,MAAMsO,GAElBN,EAAiB11B,KAAKzC,IAAI,EAAEm4B,EAAgBD,GAC5CG,EAAKh6B,YAAYjB,QAAQO,UAAWw6B,UAC5B,EAAEM,EAAKz2B,GAAKi2B,IAAeQ,EAAKzM,YAAerqB,GAAKy2B,EAE9D,IAAIz2B,GAAKy2B,EACP,KAAM,IAAI96B,OAAM,mFAKlB,OADA+6B,GAAKh6B,YAAYjB,QAAQO,UAAWq6B,IAC7BK,EAAKK,KAAKV,EAAe,GAalC,QAASW,GAAcn4B,EAAG7C,GACxB,GAAI60B,GAAMhyB,EAAEnC,WACZm0B,GAAIp1B,QAAQO,UAAWA,EAAY8E,KAAKkL,IAAIhQ,GAAa,GAWzD,KAAK,GATD6vB,GAAM,GAAIgF,GAAI,GACdzuB,EAAIvD,EACJo4B,EAAQx0B,IACRy0B,EAAKr4B,EAAE6qB,MAAM7qB,GACbs4B,EAAUt4B,EACVu4B,EAAW,GAAIvG,GAAIhF,GACnBwL,EAAW,GAAIxG,GAAIhF,GAEnByL,EAAO,GAAIzG,GAAIhF,GACVtf,EAAI,GAAInK,EAAE4D,OAAOixB,GAAQ1qB,GAAK,EACrC4qB,EAAUA,EAAQzN,MAAMwN,GAExBE,EAAWA,EAAS1N,MAAM4N,GAC1BD,EAAWA,EAAS3N,MAAM4N,EAAK7N,KAAKoC,IAEpCoL,EAAQ70B,EACRk1B,EAAO,GAAIzG,GAAItkB,GACfnK,EAAIA,EAAEqnB,KAAK0N,EAAQzN,MAAM0N,GAAUt0B,IAAIw0B,EAAK5N,MAAM2N,IAIpD,OADAxG,GAAIp1B,QAAQO,UAAWA,IAChBoG,EAAE20B,KAAK/6B,EAAY,GAY5B,QAASu7B,GAAc14B,GAOrB,IAAK,GANDuD,GAAIvD,EACJo4B,EAAQx0B,IACRy0B,EAAKr4B,EAAE6qB,MAAM7qB,GACbiI,EAAMjI,EACNilB,GAAM,EAEDvX,EAAI,GAAInK,EAAE4D,OAAOixB,GAAQ1qB,GAAK,EACrCzF,EAAMA,EAAI4iB,MAAMwN,GAEhBD,EAAQ70B,EACR0hB,GAAOA,EACP1hB,EAAI,EAAQA,EAAEqnB,KAAK3iB,EAAIhE,IAAIyJ,IAAMnK,EAAEomB,MAAM1hB,EAAIhE,IAAIyJ,GAGnD,OAAOnK,GAgBT,QAASo1B,GAAe34B,EAAG44B,GAUzB,IAAK,GATD5L,GAAMhtB,EAAEnC,YAAYk5B,IAEpBxzB,EAAIvD,EACJo4B,EAAQx0B,IACRy0B,EAAKr4B,EAAE6qB,MAAM7qB,GACbiI,EAAM,EAAS1E,EAAIA,EAAIypB,EACvBjC,EAAMiC,EACN/H,GAAM,EAEDvX,EAAIkrB,GAAOr1B,EAAE4D,OAAOixB,GAAQ1qB,GAAK,EACxCzF,EAAMA,EAAI4iB,MAAMwN,GAChBtN,EAAMA,EAAIF,MAAMnd,EAAE,GAAGmd,MAAMnd,EAAE,GAE7B0qB,EAAQ70B,EACR0hB,GAAOA,EACP1hB,EAAI,EAAQA,EAAEqnB,KAAK3iB,EAAIhE,IAAI8mB,IAAQxnB,EAAEomB,MAAM1hB,EAAIhE,IAAI8mB,GAGrD,OAAOxnB,GAWT,QAASs1B,GAAe74B,EAAG7C,EAAWy7B,GACpC,GAAI/0B,GAAKjI,EAAQiI,GAAG1G,EAAY,GAC5B2G,EAAMlI,EAAQkI,IAAI3G,EACtB,IAAI6C,EAAE8C,MAAM8tB,IAAI/sB,EAAGq0B,KAAKl4B,EAAE84B,OACxB,OAAQ94B,GAAG,EAGb,IAAIgyB,GAAMhyB,EAAEnC,WAEZ,IAAImC,EAAEiE,IAAIJ,EAAGq0B,KAAKl4B,EAAE84B,OAAOhyB,WAAa,GAAK,EAC3C,OAAQ,GAAIkrB,GAAW,EAAP4G,IAAW,EAG7B,IAAIr1B,GAAIvD,EAAEoiB,IAAIte,EAGd,OAAIP,GAAE20B,KAAKl4B,EAAE84B,KAAM,GAAGtN,UACZ,GAAIwG,GAAW,EAAP4G,IAAW,IAGzBr1B,EAAEmtB,GAAG7sB,KACH+0B,GAEFr1B,EAAIA,EAAEomB,MAAM9lB,GACZN,EAAE6S,GAAK7S,EAAE6S,GAGT7S,EAAIO,EAAI6lB,MAAMpmB,IAIlBA,EAAE1F,YAAcm0B,GACRzuB,GAAG,IAWb,QAASy0B,GAASe,GAChB,GAAI/G,GAAM+G,EAAOl7B,YACbV,EAAY60B,EAAI70B,SACpB60B,GAAIp1B,QAAQO,UAAWA,EAAY,GAEnC,IAAIgf,GAAM6V,EAAI+E,IAAIpN,MAAMoP,EAAOlO,MAAMkO,IAAS70B,MAG9C,OADA8tB,GAAIp1B,QAAQO,UAAWA,IAChBgf,EAAI+b,KAAK/6B,EAAY,GAiM9B,QAAS67B,GAAch5B,GACrB,GAAIgyB,GAAMv0B,EAAUI,aAAaV,UAAW6C,EAAEnC,YAAYV,YACtDoG,EAAI,GAAIyuB,GAAIhyB,EAGhB,OAFAuD,GAAE1F,YAAcm0B,EAETzuB,EApsCT,GAAI9F,GAAYvB,EAAoB,KAChC6F,EAAW7F,EAAoB,GAAG6F,SAElCk3B,GADS/8B,EAAoB,GAAG8B,OACtB9B,EAAoB,KAAK+8B,QAOvCr9B,GAAQs9B,YAAc,SAAU94B,GAC9B,MAAQA,aAAiB3C,IAa3B7B,EAAQ4F,EAAIy3B,EAAQ,SAAU97B,GAC5B,GAAI60B,GAAMv0B,EAAUI,aAAaV,UAAWA,GAE5C,OAAO,IAAI60B,GAAI,GAAGzM,QAQpB3pB,EAAQmI,IAAMk1B,EAAQ,SAAU97B,GAC9B,GAAI60B,GAAMv0B,EAAUI,aAAaV,UAAWA,GAE5C,OAAO,IAAI60B,GAAI,GAAGpH,KAAK,GAAIoH,GAAI,GAAG9tB,QAAQD,IAAI,KAWhDrI,EAAQiI,GAAKo1B,EAAQ,SAAU97B,GAE7B,GAAI60B,GAAMv0B,EAAUI,aAAaV,UAAWA,EAAY,IACpDg8B,EAAQ,GAAInH,GAAI,GAAGnH,MAAM6N,EAAc,GAAI1G,GAAI,GAAG/tB,IAAI,KACrD0lB,MAAM+O,EAAc,GAAI1G,GAAI,GAAG/tB,IAAI,MAKxC,OAHA+tB,GAAIp1B,QAAQO,UAAWA,IAGhB,GAAI60B,GAAI,GAAGnH,MAAMsO,KAQ1Bv9B,EAAQkI,IAAMm1B,EAAQ,SAAU97B,GAI9B,GAAI0G,GAAKjI,EAAQiI,GAAG1G,EAAY,GAE5B60B,EAAMv0B,EAAUI,aAAaV,UAAWA,GAE5C,OAAO,IAAI60B,GAAI,GAAGnH,MAAMhnB,KA2B1BjI,EAAQ6oB,IAAM,SAASzkB,EAAGuD,GACxB,GAAKvD,EAAEwD,aAAexD,EAAEgC,aAAiBuB,EAAEC,aAAeD,EAAEvB,YAC1D,KAAM,IAAIlF,OAAM,wDAGlB,IAAIW,GAAYuC,EAAEnC,WAClB,IAAImC,EAAEsC,SAAWiB,EAAEjB,QACjB,MAAO,IAAI7E,GAAUmG,IAGvB,IAAI5D,EAAEwrB,UAAYjoB,EAAE2mB,GAAG,KAAOlqB,EAAEkqB,GAAG3mB,GACjC,MAAOvD,EAET,IAAIuD,EAAEioB,UAAYxrB,EAAEkqB,GAAG,IACrB,MAAO3mB,EAGT,KAAKvD,EAAEwD,aAAeD,EAAEC,WAAY,CAClC,IAAKxD,EAAEwD,aAAeD,EAAEC,WACtB,MAAIxD,GAAEorB,cAAgB7nB,EAAE61B,YACfp5B,EAEF,GAAIvC,GAAU,EAEvB,KAAKuC,EAAEwD,WACL,MAAID,GAAE6nB,aACGprB,EAELA,EAAEorB,aACG,GAAI3tB,GAAU,GAEhB8F,CAET,KAAKA,EAAEC,WACL,MAAIxD,GAAEorB,aACG7nB,EAELA,EAAE6nB,aACG,GAAI3tB,GAAU,GAEhBuC,EAGX,MAAOg2B,GAAQh2B,EAAGuD,EAAG,SAAUxC,EAAGC,GAAK,MAAOD,GAAIC,KAmBpDpF,EAAQ6qB,UAAY,SAAUzmB,EAAGuD,GAC/B,GAAKvD,EAAEwD,aAAexD,EAAEgC,aAAiBuB,EAAEC,aAAeD,EAAEvB,YAC1D,KAAM,IAAIlF,OAAM,2DAGlB,IAAIW,GAAYuC,EAAEnC,WAClB,OAAImC,GAAEsC,SAAWiB,EAAEjB,SAAYiB,EAAE6nB,eAAiB7nB,EAAEioB,SAC3C,GAAI/tB,GAAUmG,KAEnB5D,EAAEwrB,UAAYjoB,EAAEioB,SACXxrB,EAEJA,EAAEwD,YAAeD,EAAEC,WAMfxD,EAAE6qB,MADPtnB,EAAEwX,GAAG,IACQ9Y,KAAK6N,IAAI,EAAGvM,EAAEuD,YAAc,GAE9B,GAAIrJ,GAAU,GAAGqS,IAAIvM,IAP3B,GAAI9F,GAAUmG,MAezBhI,EAAQ0mB,IAAM,SAAUtiB,GACtB,GAAIA,EAAEwD,aAAexD,EAAEgC,YACrB,KAAM,IAAIlF,OAAM,uDAGlB,IAAIW,GAAYuC,EAAEnC,YACdo5B,EAAWx5B,EAAUN,SACzBM,GAAUb,QAAQO,UAAW,KAE7B,IAAI6C,GAAIA,EAAE4qB,KAAKntB,EAAUs5B,IAIzB,OAHA/2B,GAAEoW,GAAKpW,EAAEoW,GAAK,KAEd3Y,EAAUb,QAAQO,UAAW85B,IACtBj3B,GAsBTpE,EAAQ+oB,GAAK,SAAU3kB,EAAGuD,GACxB,GAAKvD,EAAEwD,aAAexD,EAAEgC,aAAiBuB,EAAEC,aAAeD,EAAEvB,YAC1D,KAAM,IAAIlF,OAAM,uDAGlB,IAAIW,GAAYuC,EAAEnC,WAClB,IAAImC,EAAEsC,SAAWiB,EAAEjB,QACjB,MAAO,IAAI7E,GAAUmG,IAGvB,IAAIy1B,GAAS,GAAI57B,GAAU,GAC3B,OAAIuC,GAAEwrB,UAAYjoB,EAAE2mB,GAAGmP,IAAWr5B,EAAEkqB,GAAG3mB,GAC9BA,EAELA,EAAEioB,UAAYxrB,EAAEkqB,GAAGmP,GACdr5B,EAGJA,EAAEwD,YAAeD,EAAEC,WAUjBwyB,EAAQh2B,EAAGuD,EAAG,SAAUxC,EAAGC,GAAK,MAAOD,GAAIC,KAT1ChB,EAAEwD,aAAexD,EAAEorB,cAAgB7nB,EAAE6nB,cACnCprB,EAAEorB,eAAiB7nB,EAAE6nB,eAAiB7nB,EAAEC,WACrC61B,EAEPr5B,EAAEorB,cAAgB7nB,EAAE6nB,aACbprB,EAAEwD,WAAaxD,EAAIuD,EAEvBvD,EAAEwD,WAAaD,EAAIvD,GAwB9BpE,EAAQ0yB,WAAa,SAAUtuB,EAAGuD,GAChC,GAAKvD,EAAEwD,aAAexD,EAAEgC,aAAiBuB,EAAEC,aAAeD,EAAEvB,YAC1D,KAAM,IAAIlF,OAAM,iEAGlB,IAAIW,GAAYuC,EAAEnC,WAClB,OAAImC,GAAEsC,SAAWiB,EAAEjB,SAAYiB,EAAE6nB,eAAiB7nB,EAAEioB,SAC3C,GAAI/tB,GAAUmG,KAEnB5D,EAAEwrB,UAAYjoB,EAAEioB,SACXxrB,EAEJuD,EAAEC,WAWHD,EAAEwX,GAAG,IACA/a,EAAEiE,IAAIhC,KAAK6N,IAAI,EAAGvM,EAAEuD,YAAc,IAAI2e,QAExCzlB,EAAEiE,IAAI,GAAIxG,GAAU,GAAGqS,IAAIvM,IAAIkiB,QAZ3B,GAAIhoB,GADTuC,EAAEorB,aACiB,GAElBprB,EAAEwD,WAGc,EAFEI,MA6B3BhI,EAAQ8oB,IAAM,SAAU1kB,EAAGuD,GACzB,GAAKvD,EAAEwD,aAAexD,EAAEgC,aAAiBuB,EAAEC,aAAeD,EAAEvB,YAC1D,KAAM,IAAIlF,OAAM,wDAGlB,IAAIW,GAAYuC,EAAEnC,WAClB,IAAImC,EAAEsC,SAAWiB,EAAEjB,QACjB,MAAO,IAAI7E,GAAUmG,IAEvB,IAAI5D,EAAEwrB,SACJ,MAAOjoB,EAET,IAAIA,EAAEioB,SACJ,MAAOxrB,EAGT,IAAIA,EAAEkqB,GAAG3mB,GACP,MAAO,IAAI9F,GAAU,EAGvB,IAAI47B,GAAS,GAAI57B,GAAU,GAC3B,OAAIuC,GAAEkqB,GAAGmP,GACAz9B,EAAQ0mB,IAAI/e,GAEjBA,EAAE2mB,GAAGmP,GACAz9B,EAAQ0mB,IAAItiB,GAGhBA,EAAEwD,YAAeD,EAAEC,WAQjBwyB,EAAQh2B,EAAGuD,EAAG,SAAUxC,EAAGC,GAAK,MAAOD,GAAIC,IAP3ChB,EAAEwD,YAAeD,EAAEC,WAGjB,GAAI/F,GAAUuC,EAAEorB,cAAgB7nB,EAAE6nB,aACpC/oB,KACAA,KAJIg3B,GA2Ibz9B,EAAQo4B,OAAS,SAAUh0B,GACzB,GAAIgyB,GAAMhyB,EAAEnC,YACRV,EAAY60B,EAAI70B,SACpB,IAAI6C,EAAE8C,MAAM4tB,GAAGsB,EAAI+E,KACjB,KAAM,IAAIj6B,OAAM,mDAElB,IAAIkD,EAAEkqB,GAAG,IACP,MAAOtuB,GAAQiI,GAAG1G,EAGpB60B,GAAIp1B,QAAQO,UAAWA,EAAY,GACnC,IAAIyrB,GAAOhtB,EAAQ04B,OAAOtC,EAAI+E,IAAIpN,MAAM3pB,EAAE6qB,MAAM7qB,IAAIkE,OACrBD,IAAIjE,EAAE4qB,KAAKoH,EAAI+E,OAAOlM,MAAM,EAG3D,OAFAmH,GAAIp1B,QAAQO,UAAWA,IAEhByrB,EAAKsP,KAAK/6B,EAAY,IAS/BvB,EAAQw4B,OAAS,SAAUp0B,GACzB,GAAIgyB,GAAMhyB,EAAEnC,WACZ,IAAImC,EAAEsC,QACJ,MAAO,IAAI0vB,GAAIpuB,IAEjB,IAAI5D,EAAEwrB,SACJ,MAAO,IAAIwG,GAAI,EAGjB,IAAIsH,GAAOt5B,EAAE8C,KACb,IAAIw2B,EAAK5I,GAAG,GACV,KAAM,IAAI5zB,OAAM,mDAGlB,IAAIK,GAAY60B,EAAI70B,SAGpB,IAAIm8B,EAAK5I,GAAG,IAAM,CAChBsB,EAAIp1B,QAAQO,UAAWA,EAAY,GAGnC,IAAIgF,GAAOnC,EAAEoW,EACTmjB,EAAS39B,EAAQiI,GAAG1G,EAAY,GAAG8G,IAAI,EAM3C,OALAjE,GAAIu5B,EAAO5P,MAAM/tB,EAAQw4B,OAAOpC,EAAI+E,IAAIpN,MAAM3pB,EAAE6qB,MAAM7qB,IAAIkE,SAC1DlE,EAAEoW,EAAIjU,EAENnC,EAAEnC,YAAcm0B,EAChBA,EAAIp1B,QAAQO,UAAWA,IAChB6C,EAAEk4B,KAAK/6B,EAAY,GAE5B,GAAIq8B,IACAA,EAAaF,EAAK5I,GAAG,QACvBsB,EAAIp1B,QAAQO,UAAWA,EAAY,IAGnC6C,EAAIA,EAAEiE,IAAI,GAAI+tB,GAAI,GAAG9tB,OAAO2mB,MAAMmH,EAAI+E,IAAIpN,MAAM3pB,EAAE6qB,MAAM7qB,IAAIkE,OACrD0mB,KAAKoH,EAAI+E,KAAK7yB,SAErB8tB,EAAIp1B,QAAQO,UAAWA,IAIzB,IAAIgf,GAAoB,IAAbhf,GAAqB6C,EAAE84B,MAAQ72B,KAAKkL,IAAIhQ,IAAe6C,EAAE+a,GAAG,KACnEod,EAAcn4B,EAAG7C,GACjBo6B,EAAcv3B,EAAG7C,EAErB,OAAIq8B,GACKrd,EAAI0O,MAAM,GAEZ1O,GASTvgB,EAAQ04B,OAAS,SAAUt0B,GACzB,GAAIgyB,GAAMhyB,EAAEnC,WACZ,IAAImC,EAAEsC,QACJ,MAAO,IAAI0vB,GAAIpuB,IAEjB,IAAI5D,EAAEwrB,SACJ,MAAO,IAAIwG,GAAI,EAEjB,IAAI70B,GAAY60B,EAAI70B,SACpB,KAAK6C,EAAEwD,WAAY,CACjB,GAAI+1B,GAAS39B,EAAQiI,GAAG1G,EAAY,GAAG8G,IAAI,GAAGi0B,KAAK/6B,EAAY,EAG/D,OAFAo8B,GAAOnjB,EAAIpW,EAAEoW,EAENmjB,EAGT,GAAID,GAAOt5B,EAAE8C,KACb,IAAIw2B,EAAK1I,IAAI,MAAQ,CACnBoB,EAAIp1B,QAAQO,UAAWA,EAAY,GAEnC,IAAIgf,GAAMuc,EAAc14B,EAIxB,OAFAmc,GAAIte,YAAcm0B,EAClBA,EAAIp1B,QAAQO,UAAWA,IAChBgf,EAAI+b,KAAKlG,EAAI70B,UAAY,GAElC,GAAIm8B,EAAKzI,IAAI,OAAQ,CACnBmB,EAAIp1B,QAAQO,UAAWA,EAAY,GAGnC,IAAIo8B,GAAS39B,EAAQiI,GAAG1G,EAAY,GAAG8G,IAAI,GACvCkY,EAAMod,EAAO5P,MAAM+O,EAAc1G,EAAI+E,IAAI9yB,IAAIq1B,IAKjD,OAJAnd,GAAI/F,EAAIpW,EAAEoW,EAEV+F,EAAIte,YAAcm0B,EAClBA,EAAIp1B,QAAQO,UAAWA,IAChBgf,EAAI+b,KAAKlG,EAAI70B,UAAY,GAQlC,MAJA60B,GAAIp1B,QAAQO,UAAWA,EAAY,IACnC6C,EAAIA,EAAEiE,IAAIjE,EAAE6qB,MAAM7qB,GAAG4qB,KAAK,GAAG1mB,QAC7B8tB,EAAIp1B,QAAQO,UAAWA,IAEhBvB,EAAQw4B,OAAOp0B,IAgBxBpE,EAAQ44B,QAAU,SAAUx0B,EAAG7C,EAAWy7B,GACxC,GAAI5G,EACJ,IAAIhyB,EAAEsC,UAAYtC,EAAEwD,WAElB,MAAO,KADPwuB,EAAMv0B,EAAUI,aAAaV,UAAWA,KACzByG,IAIjB,IAAIL,GAAIy1B,EAAch5B,EACtBgyB,GAAMzuB,EAAE1F,WAGR,IAAI47B,GAAQl2B,EAAE6nB,YACVqO,KACFl2B,EAAE6S,GAAK7S,EAAE6S,EAIX,IAAIsjB,GAAsBv8B,GAAmC,EAAtB8E,KAAKkL,IAAIhQ,IAAkB,CAIlE,IAHA60B,EAAIp1B,QAAQO,UAAWu8B,IAEvBn2B,EAAIs1B,EAAet1B,EAAGm2B,EAAqBd,GACvCr1B,EAAE,GAEJ,MADAyuB,GAAIp1B,QAAQO,UAAWA,IAChBoG,EAAE,EAGX,IAAI4Y,EAEJ,IADA5Y,EAAIA,EAAE,GACFq1B,EAAM,CACRzc,EAAMwc,EAAep1B,EAAEU,IAAI,MAAO20B,GAClC5G,EAAIp1B,QAAQO,UAAW8E,KAAKzC,IAAIwyB,EAAI70B,UAAWA,EAAY,KAK3D,KAAK,GAHDw8B,GAAO,GAAI3H,GAAI,GACf4H,EAAU,GAAI5H,GAAI,IAClB6H,EAAS,GAAI7H,GAAI,IACZ7wB,EAAI,EAAO,EAAJA,IAASA,EAAG,CAC1B,GAAI24B,GAAO3d,EAAI0O,MAAM1O,GACjB4d,EAAOD,EAAKjP,MAAM1O,GAClB6d,EAAOD,EAAKlP,MAAMiP,EACtB3d,GAAMyd,EAAQ/O,MAAMmP,GAAMrQ,MAClBkQ,EAAOhP,MAAMkP,IAAOnP,KAClB+O,EAAK9O,MAAM1O,IAGnBsd,IACFtd,EAAI/F,GAAK+F,EAAI/F,OAEV,CACL,GAAI6jB,GAAYC,CACZ32B,GAAET,MAAMiY,GAAGiX,EAAI+E,MACjBkD,EAAa,GACbC,EAAQ,IAERD,EAAa,IACbC,EAAQ,GAGV/d,EAAMwc,EAAep1B,EAAEU,IAAIg2B,GAAarB,GACxC5G,EAAIp1B,QAAQO,UAAW8E,KAAKzC,IAAIwyB,EAAI70B,UAAWA,EAAY,IAG3D,KADA,GAAIg9B,GAAQ,GAAInI,GAAI,GACbkI,EAAQ,IAAKA,EAAO,CACzB,GAAIJ,GAAO3d,EAAI0O,MAAM1O,GACjBie,EAAON,EAAKjP,MAAMiP,EACtB3d,GAAMge,EAAMtP,MAAMuP,EAAKzQ,MAAMmQ,IAAOlP,KAAKoH,EAAI+E,MAKjD,MADA5a,GAAIte,YAAYjB,QAAQO,UAAWA,IAC5Bgf,EAAI+b,KAAK/6B,EAAY,IAY9BvB,EAAQ0tB,IAAM,SAAUtpB,EAAG7C,GACzB,GAAI60B,GAAMv0B,EAAUI,aAAaV,UAAWA,GAC5C,IAAI6C,EAAEsC,QACJ,MAAO,IAAI0vB,GAAIpuB,IAGjB,IAAIC,GAAKjI,EAAQiI,GAAG1G,EAAY,GAC5Bo8B,EAAS11B,EAAGI,IAAI,GAAGi0B,KAAK/6B,EAAY,EACxC0G,GAAKA,EAAGq0B,KAAK/6B,EAAY,EAEzB,IAAIoG,GAAIs1B,EAAe74B,EAAG7C,EAAW,GAAG,EACxC,IAAIoG,EAAET,MAAMonB,GAAGrmB,GACb,MAAO,IAAImuB,GAAI3vB,IAGjB,IAAI2E,GAAMpL,EAAQ44B,QAAQjxB,EAAGpG,EAAY,EAAG,GACxC4J,EAAMixB,EAAShxB,EAEnBA,GAAInJ,YAAYjB,QAAQO,UAAWA,IACnC6J,EAAMA,EAAIkxB,KAAK/6B,GACf4J,EAAMA,EAAImxB,KAAK/6B,GAGXoG,EAAE2mB,GAAGlqB,GACHuD,EAAEmtB,GAAG6I,KACPxyB,EAAIqP,GAAKrP,EAAIqP,GAENvS,EAAG8lB,MAAMpmB,EAAET,OAAO4tB,GAAG6I,KAC9BxyB,EAAIqP,GAAKrP,EAAIqP,GAGfpP,EAAInJ,YAAYjB,QAAQO,UAAWA,EAAY,GAC/C,IAAImsB,GAAMtiB,EAAI/C,IAAI8C,EAElB,OAAO,IAAIirB,GAAI1I,EAAItmB,YAAY7F,KAgBjCvB,EAAQ84B,UAAY,SAAU10B,EAAG44B,GAC/B,GAAI5G,GAAMhyB,EAAEnC,WACZ,IAAImC,EAAEsC,QACJ,MAAO,IAAI0vB,GAAIpuB,IAEjB,KAAK5D,EAAEwD,WACL,MAAO,IAAIwuB,GAAI,EAAShyB,EAAIqC,IAG9B,IAAIlF,GAAY60B,EAAI70B,SACpB60B,GAAIp1B,QAAQO,UAAWA,EAAY,GAEnC,IAAIoG,GAAIvD,EAAEulB,KAKV,OAJAhiB,GAAI,EAASA,EAAEomB,MAAMqI,EAAI+E,IAAI9yB,IAAIV,IAAMA,EAAEqnB,KAAKoH,EAAI+E,IAAI9yB,IAAIV,IAC1DA,EAAIA,EAAEU,IAAI,GAEV+tB,EAAIp1B,QAAQO,UAAWA,IAChB,GAAI60B,GAAIzuB,EAAEP,YAAY7F,KAa/BvB,EAAQ2tB,KAAO,SAAUvpB,GACvB,GAAIgyB,GAAMhyB,EAAEnC,WACZ,IAAImC,EAAEsC,QACJ,MAAO,IAAI0vB,GAAIpuB,IAEjB,KAAK5D,EAAEwD,WACL,MAAO,IAAIwuB,GAAIhyB,EAAEoW,EAGnB,IAAIjZ,GAAY60B,EAAI70B,SACpB60B,GAAIp1B,QAAQO,UAAWA,EAAY,GAEnC,IAAIk9B,GAASr6B,EAAEulB,MACX+U,EAAStI,EAAI+E,IAAI9yB,IAAIo2B,GACrBle,EAAMke,EAAO1Q,MAAM2Q,EAIvB,OAHAne,GAAMA,EAAIlY,IAAIo2B,EAAOzP,KAAK0P,IAE1BtI,EAAIp1B,QAAQO,UAAWA,IAChBgf,EAAI+b,KAAK/6B,EAAY,IAyR9BvB,EAAQwG,OAAS,SAAShC,EAAO/C,GAC/B,GAAuB,kBAAZA,GAET,MAAOA,GAAQ+C,EAIjB,KAAKA,EAAMoD,WACT,MAAOpD,GAAMkC,QAAU,MAASlC,EAAMswB,GAAG,GAAK,WAAa,WAI7D,IAAInuB,GAAW,OACXpF,EAAY8C,MAkBhB,QAhBgBA,SAAZ5C,IAEEA,EAAQkF,WACVA,EAAWlF,EAAQkF,UAIjBR,EAAS1E,GACXF,EAAYE,EAELA,EAAQF,YACfA,EAAYE,EAAQF,YAKhBoF,GACN,IAAK,QACH,MAAO3G,GAAQ4G,QAAQpC,EAAOjD,EAEhC,KAAK,cACH,MAAOvB,GAAQ6G,cAAcrC,EAAOjD,EAEtC,KAAK,OAGH,GAAIuF,GAAQ,KACRC,EAAQ,GACRtF,IAAWA,EAAQuF,cACa3C,SAA9B5C,EAAQuF,YAAYF,QACtBA,EAAQrF,EAAQuF,YAAYF,OAEIzC,SAA9B5C,EAAQuF,YAAYD,QACtBA,EAAQtF,EAAQuF,YAAYD,OAKhC,IACE43B,SAAUn6B,EAAMvC,YAAY08B,SAC5BC,SAAUp6B,EAAMvC,YAAY28B,WAS9B,GANAp6B,EAAMvC,YAAYjB,QAChB29B,SAAUt4B,KAAKC,MAAMD,KAAKkL,IAAIzK,GAAST,KAAKqC,MAC5Ck2B,SAAUv4B,KAAKC,MAAMD,KAAKkL,IAAIxK,GAASV,KAAKqC,QAI1ClE,EAAMorB,SAAU,MAAO,GAG3B,IAAI3oB,GACAC,EAAM1C,EAAM0C,KAWhB,OARED,GAFEC,EAAI+tB,IAAInuB,IAAUI,EAAIiY,GAAGpY,GAErBvC,EAAMq6B,oBAAoBt9B,GAAWqF,UAIrC5G,EAAQ6G,cAAcrC,EAAOjD,GAI9B0F,EAAIK,QAAQ,sBAAuB,WACxC,GAAIlF,GAASmF,UAAU,GACnB3B,EAAI2B,UAAU,EAClB,OAAmB,MAAXnF,EAAkBA,EAASwD,EAAIA,GAG3C,SACE,KAAM,IAAI1E,OAAM,qBAAuByF,EAAW,kDAaxD3G,EAAQ6G,cAAgB,SAASrC,EAAOjD,GACtC,MAAkB8C,UAAd9C,EACKiD,EAAMqC,cAActF,EAAY,GAGhCiD,EAAMqC,iBAUjB7G,EAAQ4G,QAAU,SAASpC,EAAOjD,GAChC,MAAOiD,GAAMoC,QAAQrF,GAAa,KAiB/B,SAAStB,EAAQD,EAASM,GAE/B,YAkBA,SAASyN,GAAM3J,GAGb,IAFA,GAAImI,MAEGhI,EAAQH,IACbmI,EAAKQ,KAAK3I,EAAEqB,QACZrB,EAAIA,EAAE,EAGR,OAAOmI,GA+BT,QAASuyB,GAAU/yB,EAAOQ,EAAMe,GAC9B,GAAI/H,GACAC,EAAMuG,EAAMtG,MAEhB,IAAID,GAAO+G,EAAKe,GACd,KAAM,IAAIrE,GAAezD,EAAK+G,EAAKe,GAGrC,IAAIA,EAAMf,EAAK9G,OAAS,EAAG,CAEzB,GAAIs5B,GAAUzxB,EAAM,CACpB,KAAK/H,EAAI,EAAOC,EAAJD,EAASA,IAAK,CACxB,GAAI8I,GAAQtC,EAAMxG,EAClB,KAAKhB,EAAQ8J,GACX,KAAM,IAAIpF,GAAesD,EAAK9G,OAAS,EAAG8G,EAAK9G,OAAQ,IAEzDq5B,GAAU/yB,EAAMxG,GAAIgH,EAAMwyB,QAK5B,KAAKx5B,EAAI,EAAOC,EAAJD,EAASA,IACnB,GAAIhB,EAAQwH,EAAMxG,IAChB,KAAM,IAAI0D,GAAesD,EAAK9G,OAAS,EAAG8G,EAAK9G,OAAQ,KA2F/D,QAASu5B,GAASjzB,EAAOQ,EAAMe,EAAKkB,GAClC,GAAIjJ,GACA6J,EACA6vB,EAASlzB,EAAMtG,OACfy5B,EAAS3yB,EAAKe,GACd6xB,EAAS94B,KAAKzC,IAAIq7B,EAAQC,EAK9B,IAFAnzB,EAAMtG,OAASy5B,EAEX5xB,EAAMf,EAAK9G,OAAS,EAAG,CAEzB,GAAIs5B,GAAUzxB,EAAM,CAGpB,KAAK/H,EAAI,EAAO45B,EAAJ55B,EAAYA,IAEtB6J,EAAOrD,EAAMxG,GACRhB,EAAQ6K,KACXA,GAAQA,GACRrD,EAAMxG,GAAK6J,GAEb4vB,EAAQ5vB,EAAM7C,EAAMwyB,EAASvwB,EAI/B,KAAKjJ,EAAI45B,EAAYD,EAAJ35B,EAAYA,IAE3B6J,KACArD,EAAMxG,GAAK6J,EAGX4vB,EAAQ5vB,EAAM7C,EAAMwyB,EAASvwB,OAG5B,CAIH,IAAKjJ,EAAI,EAAO45B,EAAJ55B,EAAYA,IACtB,KAAOhB,EAAQwH,EAAMxG,KACnBwG,EAAMxG,GAAKwG,EAAMxG,GAAG,EAIxB,IAAGiJ,IAAiBxO,EAAQ+H,cAE1B,IAAKxC,EAAI45B,EAAYD,EAAJ35B,EAAYA,IAC3BwG,EAAMxG,GAAK7D,EAAOM,MAAMwM,IA6ChC,QAAS4wB,GAAUrzB,EAAOoC,EAAMb,GAC9B,GAAI/H,GAAGuH,CAEP,IAAUqB,EAANb,EAAY,CACd,GAAI1D,GAAO0D,EAAM,CACjB,KAAK/H,EAAI,EAAGuH,EAAKf,EAAMtG,OAAYqH,EAAJvH,EAAQA,IACrCwG,EAAMxG,GAAK65B,EAASrzB,EAAMxG,GAAI4I,EAAMvE,OAItC,MAAOrF,EAAQwH,IACbA,EAAQA,EAAM,EAIlB,OAAOA,GAwCT,QAASszB,GAAYtzB,EAAOoC,EAAMb,GAChC,GAAI/H,GAAGuH,CAEP,IAAIvI,EAAQwH,GAAQ,CAClB,GAAInC,GAAO0D,EAAM,CACjB,KAAK/H,EAAI,EAAGuH,EAAKf,EAAMtG,OAAYqH,EAAJvH,EAAQA,IACrCwG,EAAMxG,GAAK85B,EAAWtzB,EAAMxG,GAAI4I,EAAMvE,OAIxC,KAAK,GAAIyI,GAAI/E,EAASa,EAAJkE,EAAUA,IAC1BtG,GAASA,EAIb,OAAOA,GA5UT,GAAIzK,GAAShB,EAAoB,GAC7BmK,EAASnK,EAAoB,KAC7BoB,EAASpB,EAAoB,GAG7B2I,GAFQ3I,EAAoB,KAEXA,EAAoB,MACrC4I,EAAa5I,EAAoB,KAEjCiE,EAAUD,MAAMC,OA2BpBvE,GAAQuM,KAAO,SAASnI,GAEtB,GAAIoW,GAAIzM,EAAM3J,EAMd,OAHApE,GAAQs/B,SAASl7B,EAAGoW,GAGbA,GAgDTxa,EAAQs/B,SAAW,SAASvzB,EAAOQ,GACjC,GAAIgB,GAA2B,GAAfhB,EAAK9G,MACrB,IAAI8H,GAEF,GAAIhJ,EAAQwH,GACV,KAAM,IAAI9C,GAAe8C,EAAMtG,OAAQ,OAKzCq5B,GAAU/yB,EAAOQ,EAAM,IAS3BvM,EAAQiO,cAAgB,SAASzK,EAAOiC,GACtC,IAAKnE,EAAO6E,SAAS3C,KAAWlC,EAAO8E,UAAU5C,GAC/C,KAAM,IAAIuB,WAAU,oCAAsCvB,EAAQ,IAEpE,IAAY,EAARA,EACF,KAAM,IAAI0F,GAAW1F,EAEvB,IAAea,SAAXoB,GAAwBjC,GAASiC,EACnC,KAAM,IAAIyD,GAAW1F,EAAOiC,IAKhCzF,EAAQ+H,iBAWR/H,EAAQmP,OAAS,SAASpD,EAAOQ,EAAMiC,GAIrC,IAAKjK,EAAQwH,KAAWxH,EAAQgI,GAC9B,KAAM,IAAIxH,WAAU,iBAEtB,IAAoB,IAAhBwH,EAAK9G,OACP,KAAM,IAAIvE,OAAM,sCAIlBqL,GAAKhJ,QAAQ,SAAUiB,GACrB,IAAKlD,EAAO6E,SAAS3B,KAAWlD,EAAO8E,UAAU5B,IAAkB,EAARA,EACzD,KAAM,IAAIO,WAAU,uDACJ0F,EAAOjE,OAAO+F,GAAQ,MAK1C,IAAIgzB,GAAkCl7B,SAAjBmK,EAA8BA,EAAe,CAGlE,OAFAwwB,GAAQjzB,EAAOQ,EAAM,EAAGgzB,GAEjBxzB,GAyET/L,EAAQ2rB,QAAU,SAAS5f,EAAOQ,GAIhC,IAHA,GAAIiO,GAAIjO,GAAQvM,EAAQuM,KAAKR,GAGtBxH,EAAQwH,IAA2B,IAAjBA,EAAMtG,QAC7BsG,EAAQA,EAAM,GACdyO,EAAE6Y,OAKJ,KADA,GAAIllB,GAAOqM,EAAE/U,OACU,IAAhB+U,EAAErM,EAAO,IACdA,GASF,OALIA,GAAOqM,EAAE/U,SACXsG,EAAQqzB,EAASrzB,EAAOoC,EAAM,GAC9BqM,EAAE/U,OAAS0I,GAGNpC,GAsCT/L,EAAQ4O,UAAY,SAAS7C,EAAOoC,EAAMQ,EAAOpC,GAC/C,GAAIiO,GAAIjO,GAAQvM,EAAQuM,KAAKR,EAG7B,IAAI4C,EACF,IAAK,GAAIpJ,GAAI,EAAOoJ,EAAJpJ,EAAWA,IACzBwG,GAASA,GACTyO,EAAEglB,QAAQ,EAMd,KADAzzB,EAAQszB,EAAWtzB,EAAOoC,EAAM,GACzBqM,EAAE/U,OAAS0I,GAChBqM,EAAEzN,KAAK,EAGT,OAAOhB,IAmCT/L,EAAQwrB,QAAU,SAASzf,GAIzB,IAHA,GAAIqoB,GAAOroB,EACPxH,EAAUD,MAAMC,QAEbA,EAAQ6vB,EAAK,KAAK,CAEvB,IAAK,GADDxqB,MACKrE,EAAI,EAAGuH,EAAKsnB,EAAK3uB,OAAYqH,EAAJvH,EAAQA,IACxCqE,EAAOA,EAAKvG,OAAO+J,MAAMxD,EAAMwqB,EAAK7uB,GAEtC6uB,GAAOxqB,EAGT,MAAOwqB,IAQTp0B,EAAQ+gB,YAAc,SAAS/U,GAE7B,IAAK,GADDD,MACKxG,EAAI,EAAGC,EAAMwG,EAAKvG,OAAYD,EAAJD,EAASA,IAC1CwG,EAAMxG,GAAKyG,EAAKzG,EAElB,OAAOwG,IAQT/L,EAAQuE,QAAUA,GAIb,SAAStE,GAEdA,EAAOD,QAAU,SAOZ,SAASC,EAAQD,EAASM,GAE/B,GAAIm/B,IACH,SAAWC,GACR,YA00DA,SAASC,GAAoBx6B,GAMzB,IALA,GAAIqV,GAAG/H,EACHlN,EAAI,EACJob,EAAIxb,EAAEM,OACNiE,EAAIvE,EAAE,GAAK,GAEHwb,EAAJpb,EAAOA,IAAM,CAGjB,IAFAiV,EAAIrV,EAAEI,GAAK,GAELkN,EAAImtB,EAAUplB,EAAE/U,OAAQgN,KAC1B+H,EAAI,IAAMA,CAGd9Q,IAAK8Q,EAIT,IAAMmG,EAAIjX,EAAEjE,OAA8B,KAAtBiE,EAAEm2B,aAAalf,KAEnC,MAAOjX,GAAEmlB,MAAO,EAAGlO,EAAI,GAAK,GAmBhC,QAASmf,GAAqBj/B,EAAG0E,EAAGw6B,EAAIC,GACpC,GAAIC,GAAInuB,EAAGS,EAAG7I,EAAGoN,CAGjB,KAAMhF,EAAI,EAAGS,EAAI1R,EAAE,GAAI0R,GAAK,GAAIA,GAAK,GAAIT,KAoDzC,MAlDAS,GAAIhN,EAAIuM,EAGC,EAAJS,GACDA,GAAKqtB,EACLK,EAAK,IAELA,EAAK55B,KAAKmG,MAAQ+F,EAAI,GAAMqtB,GAC5BrtB,GAAKqtB,GAGT9tB,EAAIouB,EAAS,GAAIN,EAAUrtB,GAC3BuE,EAAKjW,EAAEo/B,GAAMnuB,EAAI,EAEC,MAAbkuB,EAEQ,EAAJztB,GAES,GAALA,EACDuE,EAAKA,EAAK,IAAM,EACH,GAALvE,IACRuE,EAAKA,EAAK,GAAK,GAGnBpN,EAAS,EAALq2B,GAAgB,OAANjpB,GAAeipB,EAAK,GAAW,OAANjpB,GAAqB,KAANA,GAAqB,GAANA,GAErEpN,GAAW,EAALq2B,GAAUjpB,EAAK,GAAKhF,GAAKiuB,EAAK,GAAKjpB,EAAK,GAAKhF,EAAI,KACjDjR,EAAEo/B,EAAK,GAAKnuB,EAAI,IAAM,IAAOouB,EAAS,GAAI3tB,EAAI,GAAM,IAChDuE,GAAMhF,EAAI,GAAW,GAANgF,IAA4C,IAA7BjW,EAAEo/B,EAAK,GAAKnuB,EAAI,IAAM,GAIzD,EAAJS,GAES,GAALA,EACDuE,EAAKA,EAAK,IAAO,EACJ,GAALvE,EACRuE,EAAKA,EAAK,IAAM,EACH,GAALvE,IACRuE,EAAKA,EAAK,GAAK,GAGnBpN,GAAMs2B,GAAkB,EAALD,IAAkB,MAANjpB,IAAekpB,GAAaD,EAAK,GAAW,MAANjpB,GAErEpN,IAAQs2B,GAAkB,EAALD,IAAYjpB,EAAK,GAAKhF,IACxCkuB,GAAaD,EAAK,GAAOjpB,EAAK,GAAKhF,EAAI,KACpCjR,EAAEo/B,EAAK,GAAKnuB,EAAI,IAAO,IAAOouB,EAAS,GAAI3tB,EAAI,GAAM,EAI5D7I,EAOX,QAASy2B,GAAS/7B,EAAG27B,EAAIK,GACrB,GAAIC,GAAUj8B,EAAe,WAE7B,OAAa,OAAN27B,KAAkBO,EAAkB,EAALP,GAAUA,EAAK,IAC5C,IAAPA,IAAcM,EAAgB,OAAIE,SAAWl5B,YAAa04B,IAAOA,KAC9DS,EAAmBH,EAAS,gBAAiBN,EAAIK,EAAQ,GACtDC,EAAkB,SAAS,EAALN,EAOlC,QAASU,GAAUr8B,EAAGmO,EAAG6tB,EAAQx8B,GAC7B,GAAIy8B,GAAUj8B,EAAe,WAE7B,SAAUk8B,GAAmB18B,GAAO,GAAb2O,GAAoBA,GAAKmuB,EAAa,KAMnD,IAANnuB,IAAa8tB,EAAgB,OAAIE,SAAWl5B,YAAakL,IAAMA,IAC/DiuB,EAAmBH,EAAS,WAAY9tB,EAAG6tB,EAAQ,GA0d3D,QAASzW,GAAKvlB,EAAGu8B,GACb,GAAIC,GAAOC,EAAOlgB,EAAGzM,EAAK4sB,EAAI/T,EAAKgD,EAC/BgR,EAAM,EACNx7B,EAAI,EACJuM,EAAI,EACJuuB,EAAUj8B,EAAe,YACzBgtB,EAAMiP,EAAa,IACnBN,EAAKM,EAAkB,SACvB9+B,EAAY8+B,EAAmB,SAGnC,KAAMj8B,EAAK,IAAMA,EAAK,EAAE,IAAMA,EAAK,EAAI,GAEnC,MAAO,IAAIi8B,GAASj8B,EAAK,EACpBA,EAAK,EAAE,GAAWA,EAAK,EAAI,EAAI,EAAI,EAAI,EAA3BgtB,EACbhtB,EAAK,EAAIA,EAAK,EAAI,EAAI,EAAIA,EAAI4D,IA4BtC,KAzBW,MAAN24B,GAgBDK,GAAW,EACXF,EAAKv/B,GAELu/B,EAAKH,EAGT5Q,EAAI,GAAIsQ,GAAQ,QAGRj8B,EAAK,EAAI,IAGbA,EAAIA,EAAS,MAAE2rB,GACfje,GAAK,CAaT,KANA+uB,EAAQx6B,KAAKkL,IAAK2uB,EAAS,EAAGpuB,IAAQzL,KAAKqC,KAAO,EAAI,EAAI,EAC1Do4B,GAAMD,EAEND,EAAQ1sB,EAAM6Y,EAAM,GAAIsT,GAAQjP,GAChCiP,EAAmB,UAAIS,IAEX,CAKR,GAJA5sB,EAAM+sB,EAAK/sB,EAAW,MAAE9P,GAAI08B,EAAI,GAChCF,EAAQA,EAAa,QAAIr7B,GACzBwqB,EAAIhD,EAAU,KAAG1kB,EAAK6L,EAAK0sB,EAAOE,EAAI,IAEjCnB,EAAqB5P,EAAK,GAAIlB,MAAO,EAAGiS,KACxCnB,EAAqB5S,EAAO,GAAI8B,MAAO,EAAGiS,GAAO,CAGlD,IAFAngB,EAAI7O,EAEI6O,KACJoM,EAAMkU,EAAKlU,EAAW,MAAEA,GAAM+T,EAAI,EAYtC,IAAW,MAANH,EAcD,MAFAN,GAAmB,UAAI9+B,EAEhBwrB,CAZP,MAAW,EAANgU,GAAWjB,EAAqB/S,EAAO,EAAG+T,EAAKD,EAAOd,EAAIgB,IAO3D,MAAOE,GAAKlU,EAAKsT,EAAmB,UAAI9+B,EAAWw+B,EAAIiB,GAAW,EANlEX,GAAmB,UAAIS,GAAM,GAC7BF,EAAQ1sB,EAAM6b,EAAI,GAAIsQ,GAAQjP,GAC9B7rB,EAAI,EACJw7B,IAWZhU,EAAMgD,GAad,QAASvpB,GAAQ+L,EAAGhN,EAAGob,EAAG7O,GACtB,GAAI0I,GAAG/H,EACH4tB,EAAU9tB,EAAe,YACzB3M,GAAM2M,EAAI,GAAI8tB,GAAQ9tB,IAAQ,CAsBlC,IAnBU,MAALhN,EACDob,EAAI,GAEJsgB,EAAK1uB,IAAKhN,EAAGob,GAGbA,EAAI7O,EAAIvM,EAAIA,EAAIgN,EAAK,EAAI3M,GAG7BA,EAAI2M,EAAK,EACTiI,EAAImlB,EAAqBptB,EAAK,GASpB,GAALT,GAAe,GAALA,IAAiBlM,GAALL,GAAUK,GAAKy6B,EAAkB,UAAM,CAG9D,KAAQ7lB,EAAE/U,OAASkb,EAAGnG,GAAK,KAEtBA,EAAE/U,OAAS,IACZ+U,EAAIA,EAAExQ,OAAO,GAAK,IAAMwQ,EAAEqU,MAAM,IAGpCrU,IAAW,EAAJ5U,EAAQ,IAAM,MAASA,MAG3B,CAIH,GAHAkM,EAAI0I,EAAE/U,OAGG,EAAJG,EAAQ,CAIT,IAHA6M,EAAIkO,EAAI7O,IAGElM,EAAG4U,EAAI,IAAMA,GACvBA,EAAI,KAAOA,MAKX,MAAO5U,EAAIkM,EAAI,CAIX,IAHAW,EAAIkO,EAAI/a,EAGFA,GAAKkM,EAAGlM,IAAM4U,GAAK,KAEpB/H,EAAI,IACL+H,GAAK,SAIT/H,GAAIkO,EAAI7O,EAECA,EAAJlM,EACD4U,EAAIA,EAAEqU,MAAO,EAAGjpB,GAAM,IAAM4U,EAAEqU,MAAMjpB,GAC5B6M,EAAI,IACZ+H,GAAK,IAMjB,IAAK/H,EAAI,EAEL,KAAQA,IAAK+H,GAAK,MAI1B,MAAOjI,GAAK,EAAI,GAAKA,EAAK,EAAE,GAAK,IAAMiI,EAAIA,EAI/C,QAAS0mB,GAAergC,GACpB,GAAI8vB,GAAI9vB,EAAE4E,OAAS,EACf8M,EAAIoe,EAAIiP,EAAU,CAEtB,IAAKjP,EAAI9vB,EAAE8vB,GAAK,CAGZ,KAAQA,EAAI,IAAM,EAAGA,GAAK,GAAIpe,KAG9B,IAAMoe,EAAI9vB,EAAE,GAAI8vB,GAAK,GAAIA,GAAK,GAAIpe,MAGtC,MAAOA,GAOX,QAASiuB,GAAmBH,EAASxY,EAASte,EAAK62B,EAAQe,GAEvD,GAAKd,EAAgB,OAAI,CACrB,GAAIh+B,GAAQ,GAAInB,QAASk/B,IACvB,cAAe,MAAO,MAAO,KAAM,KAAM,MAAO,KAAM,MAAO,QAAS,MACtE,OAAQ,QAAS,aAAc,MAAO,SAAU,MAAO,OAAQ,YAAa,YACzE3/B,EAAU,EAALA,GAAUA,EAAKA,EAAc,EAAT,EAAIA,EAAS,EAAI,IAAQ,QACrD,kDAAmD,sBAAuBonB,IACvEA,IAAcyY,EAAa,gBAAkB,kBAChD,kCAAmCa,IAAS,KAAS,KAAO53B,EAK9D;KAHAlH,GAAY,KAAI,gBAChBi+B,EAAa7/B,EAAK,EAEZ4B,GAQd,QAAS++B,GAAQf,EAASj8B,EAAGmB,GACzB,GAAImE,GAAI,GAAI22B,GAASA,EAAa,IAElC,KAAMW,GAAW,EAEJ,EAAJz7B,IACDmE,EAAIA,EAAS,MAAEtF,IAEnBmB,IAAM,EAEAA,GAINnB,EAAIA,EAAS,MAAEA,EAInB,OAFA48B,IAAW,EAEJt3B,EAgBX,QAAStB,GAAIT,EAAGg5B,GACZ,GAAI9/B,GAAGwgC,EAAIT,EAAOh7B,EAAGyG,EAAK00B,EAAKD,EAAI/T,EAAKgD,EAAGuR,EAAI7E,EAC3ClqB,EAAI,EACJsuB,EAAQ,GACRz8B,EAAIuD,EACJ45B,EAAKn9B,EAAK,EACVi8B,EAAUj8B,EAAe,YACzBgtB,EAAMiP,EAAa,IACnBN,EAAKM,EAAkB,SACvB9+B,EAAY8+B,EAAmB,SAGnC,IAAKj8B,EAAK,EAAI,IAAMm9B,IAAOA,EAAG,KAAOn9B,EAAK,GAAc,GAATm9B,EAAG,IAAwB,GAAbA,EAAG97B,OAE5D,MAAO,IAAI46B,GAASkB,IAAOA,EAAG,GAAK,GAAK,EAAc,GAAVn9B,EAAK,EAAS4D,IAAMu5B,EAAK,EAAIn9B,EAe7E,IAZW,MAANu8B,GACDK,GAAW,EACXF,EAAKv/B,GAELu/B,EAAKH,EAGTN,EAAmB,UAAIS,GAAMD,EAE7BhgC,EAAI8+B,EAAoB4B,GACxBF,EAAKxgC,EAAEmJ,OAAO,KAET3D,KAAKa,IAAKtB,EAAIxB,EAAK,GAAM,OAiD1B,MAZAA,GAAI,GAAIi8B,GAASgB,EAAK,IAAMxgC,EAAEguB,MAAM,IAE/BiS,EAAK,EAAIp4B,EAAKjD,QACf+6B,EAAmBH,EAAS,EAAGS,EAAK,EAAG,MAG3C18B,EAAIgE,EAAIhE,EAAG08B,EAAKD,GAAc,KAC1B,GAAIR,GAAS33B,EAAKmmB,MAAO,EAAGiS,EAAK,IAAa,MAAGl7B,EAAI,KAGzDy6B,EAAmB,UAAI9+B,EAEV,MAANo/B,EAAaM,EAAK78B,EAAG7C,EAAWw+B,EAAIiB,GAAW,GAAS58B,CAlC/D,MAAa,EAALi9B,GAAgB,GAANA,GAAiB,GAANA,GAAWxgC,EAAEmJ,OAAO,GAAK,GAClD5F,EAAIA,EAAS,MAAEuD,GACf9G,EAAI8+B,EAAqBv7B,EAAK,GAC9Bi9B,EAAKxgC,EAAEmJ,OAAO,GACduI,GA8CR,KA3CI3M,EAAIxB,EAAK,EAEJi9B,EAAK,GACNj9B,EAAI,GAAIi8B,GAAS,KAAOx/B,GACxB+E,KAEAxB,EAAI,GAAIi8B,GAASgB,EAAK,IAAMxgC,EAAEguB,MAAM,IAyB5CyS,EAAKl9B,EAQL2oB,EAAM1gB,EAAMjI,EAAIiE,EAAKjE,EAAS,MAAEgtB,GAAMhtB,EAAQ,KAAEgtB,GAAM0P,EAAI,GAC1DrE,EAAKwE,EAAK78B,EAAS,MAAEA,GAAI08B,EAAI,GAC7BF,EAAQ,IAEI,CAIR,GAHAv0B,EAAM40B,EAAK50B,EAAW,MAAEowB,GAAKqE,EAAI,GACjC/Q,EAAIhD,EAAU,KAAG1kB,EAAKgE,EAAK,GAAIg0B,GAAQO,GAAQE,EAAI,IAE9CnB,EAAqB5P,EAAK,GAAIlB,MAAO,EAAGiS,KACxCnB,EAAqB5S,EAAO,GAAI8B,MAAO,EAAGiS,GAAO,CA+BlD,GA9BA/T,EAAMA,EAAW,MAAE,GAOR,IAANnnB,IAEIk7B,EAAK,EAAIp4B,EAAKjD,QACf+6B,EAAmBH,EAAS,EAAGS,EAAK,EAAG,MAG3C/T,EAAMA,EAAU,KACZ,GAAIsT,GAAS33B,EAAKmmB,MAAO,EAAGiS,EAAK,IAAa,MAAGl7B,EAAI,MAI7DmnB,EAAM1kB,EAAK0kB,EAAK,GAAIsT,GAAQ9tB,GAAIuuB,EAAI,GAYzB,MAANH,EAcD,MAFAN,GAAmB,UAAI9+B,EAEhBwrB,CAZP,KAAK+S,EAAqB/S,EAAO,EAAG+T,EAAKD,EAAOd,EAAIgB,GAOhD,MAAOE,GAAKlU,EAAKsT,EAAmB,UAAI9+B,EAAWw+B,EAAIiB,GAAW,EANlEX,GAAmB,UAAIS,GAAMD,EAC7B9Q,EAAI1jB,EAAMjI,EAAIiE,EAAKi5B,EAAU,MAAElQ,GAAMkQ,EAAS,KAAElQ,GAAM0P,EAAI,GAC1DrE,EAAKwE,EAAK78B,EAAS,MAAEA,GAAI08B,EAAI,GAC7BF,EAAQG,EAAM,EAY1BhU,EAAMgD,EACN6Q,GAAS,GAQhB,QAASK,GAAK78B,EAAG08B,EAAIf,EAAIr2B,GACtB,GAAItH,GAAQmD,EAAGob,EAAG7O,EAAGS,EAAGuE,EAAIyqB,EAAIC,EAC5BnB,EAAUj8B,EAAe,WAG7Bq9B,GAAK,GAAW,MAANX,EAAa,CAGnB,KAAQS,EAAKn9B,EAAK,GAEd,MAAOA,EAcX,KAAMhC,EAAS,EAAG0P,EAAIyvB,EAAG,GAAIzvB,GAAK,GAAIA,GAAK,GAAI1P,KAK/C,GAHAmD,EAAIu7B,EAAK1+B,EAGA,EAAJmD,EACDA,GAAKq6B,EACLjf,EAAImgB,EACJvuB,EAAIgvB,EAAIC,EAAM,GAGd1qB,EAAKvE,EAAI2tB,EAAS,GAAI99B,EAASue,EAAI,GAAM,GAAK,MAI9C,IAFA6gB,EAAMn7B,KAAKmG,MAAQjH,EAAI,GAAMq6B,GAExB4B,GAAOD,EAAG97B,OAAS,CAEpB,IAAIiE,EAWF,KAAM+3B,EARJ,MAAQF,EAAG97B,QAAU+7B,EAAKD,EAAGx0B,KAAK,IAElCwF,EAAIuE,EAAK,EACT1U,EAAS,EACTmD,GAAKq6B,EACLjf,EAAIpb,EAAIq6B,EAAU,MAKnB,CAIH,IAHArtB,EAAIT,EAAIyvB,EAAGC,GAGLp/B,EAAS,EAAG0P,GAAK,GAAIA,GAAK,GAAI1P,KAGpCmD,GAAKq6B,EAILjf,EAAIpb,EAAIq6B,EAAUx9B,EAIlB0U,EAAS,EAAJ6J,EAAQ,EAAI+gB,EAAWnvB,EAAI2tB,EAAS,GAAI99B,EAASue,EAAI,GAAM,IAqBxE,GAjBAjX,EAAIA,GAAU,EAALo3B,GAEQ,MAAfS,EAAGC,EAAM,KAAoB,EAAJ7gB,EAAQpO,EAAIA,EAAI2tB,EAAS,GAAI99B,EAASue,EAAI,IAQrEjX,EAAS,EAALq2B,GACEjpB,GAAMpN,KAAe,GAANq2B,GAAWA,IAAQ37B,EAAK,EAAI,EAAI,EAAI,IACrD0S,EAAK,GAAW,GAANA,IAAmB,GAANipB,GAAWr2B,GAE5B,GAANq2B,IAAex6B,EAAI,EAAIob,EAAI,EAAIpO,EAAI2tB,EAAS,GAAI99B,EAASue,GAAM,EAAI4gB,EAAGC,EAAM,IAAO,GAAO,GACxFzB,IAAQ37B,EAAK,EAAI,EAAI,EAAI,IAErB,EAAL08B,IAAWS,EAAG,GAiBf,MAhBAA,GAAG97B,OAAS,EAERiE,GAGAo3B,GAAM18B,EAAK,EAAI,EAGfm9B,EAAG,GAAKrB,EAAS,GAAIY,EAAKlB,GAC1Bx7B,EAAK,GAAK08B,GAAM,GAIhBS,EAAG,GAAKn9B,EAAK,EAAI,EAGdA,CAmBX,IAdU,GAALmB,GACDg8B,EAAG97B,OAAS+7B,EACZ1vB,EAAI,EACJ0vB,MAEAD,EAAG97B,OAAS+7B,EAAM,EAClB1vB,EAAIouB,EAAS,GAAIN,EAAUr6B,GAI3Bg8B,EAAGC,GAAO7gB,EAAI,GAAMpO,EAAI2tB,EAAS,GAAI99B,EAASue,GAAMuf,EAAS,GAAIvf,GAAM,GAAM7O,EAAI,GAIjFpI,EAEA,OAAY,CAGR,GAAY,GAAP83B,EAAW,CAGZ,IAAMj8B,EAAI,EAAGob,EAAI4gB,EAAG,GAAI5gB,GAAK,GAAIA,GAAK,GAAIpb,KAI1C,IAFAob,EAAI4gB,EAAG,IAAMzvB,EAEPA,EAAI,EAAG6O,GAAK,GAAIA,GAAK,GAAI7O,KAG1BvM,GAAKuM,IACN1N,EAAK,IAEAm9B,EAAG,IAAMI,IACVJ,EAAG,GAAK,GAIhB,OAIA,GAFAA,EAAGC,IAAQ1vB,EAENyvB,EAAGC,IAAQG,EAEZ,KAGJJ,GAAGC,KAAS,EACZ1vB,EAAI,EAMhB,IAAMvM,EAAIg8B,EAAG97B,OAAoB,IAAZ87B,IAAKh8B,GAAUg8B,EAAGpM,QAmB3C,MAhBI6L,KAGK58B,EAAK,EAAIi8B,EAAc,KAGxBj8B,EAAK,EAAIA,EAAK,EAAI,KAGVA,EAAK,EAAIi8B,EAAc,OAG/Bj8B,EAAK,GAAMA,EAAK,EAAI,KAIrBA,EAx/FX,GAAIw9B,GAAaC,EAMbvB,EALAwB,EAASpC,EAAe,OACxBsB,GAAW,EACXvgC,EAAK,EACLihC,EAAYr7B,KAAKwjB,MACjBqW,EAAU75B,KAAK6N,IAEfvI,EAAW1K,OAAOiB,UAAUyJ,SAC5Bg2B,EAAO,IACP/B,EAAU,EACVmC,EAAW,mEACX7vB,KAMA8vB,EAAY,KAMZtB,EAAa,IAObuB,EAAgB,IAGhBv5B,EAAO,ogCAUXwJ,GAAiB,cAAIA,EAAO,IAAI,WAC5B,GAAI9N,GAAI,GAAIhE,MAAkB,YAAEA,KAMhC,OAJKgE,GAAK,EAAI,IACVA,EAAK,EAAI,GAGN68B,EAAI78B,IASf8N,EAAQ,KAAI,WAER,MAAO+uB,GAAK,GAAI7gC,MAAkB,YAAEA,MAAOA,KAAQ,EAAI,EAAG,IAY9D8R,EAAc,WAAIA,EAAO,IAAI,SAAWvK,EAAGvC,GACvC,GAAID,GACAf,EAAIhE,KACJmhC,EAAKn9B,EAAK,EACV89B,GAAOzhC,GAAMA,EAAIkH,EAAI,GAAIvD,GAAe,YAAGuD,EAAGvC,GAAKuC,EAAK,GACxDpC,EAAInB,EAAK,EACTuc,EAAIhZ,EAAK,EACTmK,EAAI1N,EAAK,EACTuT,EAAIhQ,EAAK,CAGb,KAAMpC,IAAMob,EACR,MAAO,KAOX,IAJAxb,EAAIo8B,IAAOA,EAAG,GACdn8B,EAAI88B,IAAOA,EAAG,GAGT/8B,GAAKC,EACN,MAAOD,GAAIC,EAAI,GAAKub,EAAIpb,CAI5B,IAAKA,GAAKob,EACN,MAAOpb,EAMX,IAHAJ,EAAQ,EAAJI,GAGEg8B,IAAOW,EACT,MAAOpwB,IAAK6F,EAAI,GAAK4pB,EAAKp8B,EAAI,EAAI,EAItC,IAAK2M,GAAK6F,EACN,MAAO7F,GAAI6F,EAAIxS,EAAI,EAAI,EAI3B,KAAMI,EAAI,GACJob,GAAM7O,EAAIyvB,EAAG97B,SAAakS,EAAIuqB,EAAGz8B,QAAWqM,EAAI6F,IAC9CpS,EAAIob,GAER,GAAK4gB,EAAGh8B,IAAM28B,EAAG38B,GACb,MAAOg8B,GAAGh8B,GAAK28B,EAAG38B,GAAKJ,EAAI,EAAI,EAKvC,OAAO2M,IAAK6F,EAAI,EAAI7F,EAAI6F,EAAIxS,EAAI,EAAI,IAQvC+M,EAAiB,cAAIA,EAAM,GAAI,WAC5B,GAAIrR,GAAG8vB,EACHpe,EAAI,IAER,IAAK1R,EAAIT,KAAQ,EAAI,CAGjB,GAFAmS,IAAQoe,EAAI9vB,EAAE4E,OAAS,GAAMi8B,EAAWthC,KAAQ,EAAIw/B,IAAcA,EAE7DjP,EAAI9vB,EAAE8vB,GAGP,KAAQA,EAAI,IAAM,EAAGA,GAAK,GAAIpe,KAGzB,EAAJA,IACDA,EAAI,GAIZ,MAAOA,IAyBXL,EAAa,UAAIA,EAAO,IAAI,SAAWvK,EAAGvC,GAGtC,MAFA3E,GAAK,EAEE4H,EAAKjI,KAAM,GAAIA,MAAkB,YAAGuH,EAAGvC,KAUlD8M,EAAsB,mBAAIA,EAAY,SAAI,SAAWvK,EAAGvC,GACpD,GAAIhB,GAAIhE,KACJigC,EAAUj8B,EAAe,WAG7B,OAFA3D,GAAK,GAEEwgC,EACL54B,EAAKjE,EAAG,GAAIi8B,GAAS14B,EAAGvC,GAAK,EAAG,EAAG,GAAKi7B,EAAmB,UAAGA,EAAkB,WAUtFnuB,EAAU,OAAIA,EAAM,GAAI,SAAWK,EAAGnN,GAGlC,MAFA3E,GAAK,EAE0B,IAAxBL,KAAU,IAAGmS,EAAGnN,IAU3B8M,EAAe,YAAIA,EAAO,IAAI,WAE1B,MAAOyX,GAAIvpB,OASf8R,EAAS,MAAI,WAET,MAAO+uB,GAAK,GAAI7gC,MAAkB,YAAEA,MAAOA,KAAQ,EAAI,EAAG,IAS9D8R,EAAe,YAAIA,EAAM,GAAI,SAAWK,EAAGnN,GAGvC,MAFA3E,GAAK,EAEEL,KAAU,IAAGmS,EAAGnN,GAAM,GASjC8M,EAAwB,qBAAIA,EAAO,IAAI,SAAWK,EAAGnN,GAIjD,MAHA3E,GAAK,EACL2E,EAAIhF,KAAU,IAAGmS,EAAGnN,GAER,GAALA,GAAgB,IAANA,GAQrB8M,EAAY,SAAI,WAEZ,QAAS9R,KAAQ,GAQrB8R,EAAa,UAAIA,EAAS,MAAI,WAE1B,QAAS9R,KAAQ,GAAKshC,EAAWthC,KAAQ,EAAIw/B,GAAYx/B,KAAQ,EAAEqF,OAAS,GAQhFyM,EAAS,MAAI,WAET,OAAQ9R,KAAQ,GAQpB8R,EAAc,WAAIA,EAAS,MAAI,WAE3B,MAAO9R,MAAQ,EAAI,GAQvB8R,EAAU,OAAI,WAEV,QAAS9R,KAAQ,GAAqB,GAAhBA,KAAQ,EAAE,IAQpC8R,EAAY,SAAIA,EAAM,GAAI,SAAWK,EAAGnN,GAGpC,MAFA3E,GAAK,EAEEL,KAAU,IAAGmS,EAAGnN,GAAM,GASjC8M,EAAqB,kBAAIA,EAAO,IAAI,SAAWK,EAAGnN,GAI9C,MAHA3E,GAAK,EACL2E,EAAIhF,KAAU,IAAGmS,EAAGnN,GAER,IAALA,GAAiB,IAANA,GAmCtB8M,EAAa,UAAIA,EAAO,IAAI,SAAWnB,EAAM3L,GACzC,GAAI+8B,GAAQthC,EAAG+/B,EAAOr7B,EAAG68B,EAAK/1B,EAAKy0B,EAAIuB,EAAM34B,EACzCH,EAAMnJ,KACNigC,EAAU92B,EAAiB,YAC3Bo3B,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,SACvBQ,EAAQ,CAGZ,IAAa,MAAR9vB,EACDA,EAAO,GAAIsvB,GAAQ,IACnB8B,GAAS,MACN,CAMH,GALA1hC,EAAK,GACLsQ,EAAO,GAAIsvB,GAAStvB,EAAM3L,GAC1BvE,EAAIkQ,EAAQ,EAGPA,EAAQ,EAAI,IAAMlQ,IAAMA,EAAE,KAAOkQ,EAAQ,GAAa,GAARlQ,EAAE,IAAuB,GAAZA,EAAE4E,OAE9D,MAAO,IAAI46B,GAAQr4B,IAEvBm6B,GAASpxB,EAAS,GAAE,IAKxB,GAHAlQ,EAAI0I,EAAO,EAGNA,EAAO,EAAI,IAAM1I,IAAMA,EAAE,KAAO0I,EAAO,GAAa,GAAR1I,EAAE,IAAuB,GAAZA,EAAE4E,OAE5D,MAAO,IAAI46B,GAASx/B,IAAMA,EAAE,GAAK,GAAK,EAAgB,GAAZ0I,EAAO,EAASvB,IAAMnH,EAAI,EAAI,EAAI,EAqDhF,IA9CAuhC,EAAMD,IAAY58B,EAAI1E,EAAE,GAAIA,EAAE4E,OAAS,GAAU,GAALF,GAAe,IAALA,GAC/C,KAALA,GAAiB,KAALA,GAAiB,KAALA,GAAiB,KAALA,GAAiB,KAALA,GAUlDy7B,GAAW,EACXF,EAAKH,EAAKE,EACVwB,EAAOvB,EAAK,GAEZz0B,EAAMjE,EAAImB,EAAKu3B,GAEXqB,GAEKE,EAAO35B,EAAKjD,QACb+6B,EAAmBH,EAAS,EAAGgC,EAAM,OAEzCzB,EAAQ,GAAIP,GAAS33B,EAAKmmB,MAAO,EAAGwT,KAEpCzB,EAAQx4B,EAAI2I,EAAM+vB,GAItBp3B,EAAIrB,EAAKgE,EAAKu0B,EAAOE,EAAI,GAkBpBhB,EAAqBp2B,EAAK,EAAGnE,EAAIo7B,EAAIZ,GAEtC,EAiBI,IAhBAe,GAAM,GACNz0B,EAAMjE,EAAImB,EAAKu3B,GAEXqB,GACAE,EAAOvB,EAAK,GAEPuB,EAAO35B,EAAKjD,QACb+6B,EAAmBH,EAAS,EAAGgC,EAAM,OAEzCzB,EAAQ,GAAIP,GAAS33B,EAAKmmB,MAAO,EAAGwT,KAEpCzB,EAAQx4B,EAAI2I,EAAM+vB,GAGtBp3B,EAAIrB,EAAKgE,EAAKu0B,EAAOE,EAAI,IAEnBsB,EAAM,EAGFzC,EAAqBj2B,EAAK,GAAImlB,MAAOtpB,EAAI,EAAGA,EAAI,IAAO,GAAK,OAC9DmE,EAAIu3B,EAAKv3B,EAAGi3B,EAAK,EAAG,GAGxB,aAEEb,EAAqBp2B,EAAK,EAAGnE,GAAK,GAAIw6B,GAIpD,OAFAiB,IAAW,EAEJC,EAAKv3B,EAAGi3B,EAAIZ,IAyBvB7tB,EAAS,MAAI,SAAWvK,EAAGvC,GACvB,GAAI2qB,GAAGxqB,EAAGob,EAAG2hB,EACTl+B,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzBe,EAAIf,EAAK,CAOb,IALA3D,EAAK,EACLkH,EAAI,GAAI04B,GAAS14B,EAAGvC,GACpBA,EAAIuC,EAAK,GAGHxC,IAAMC,EAER,MAAO,IAAIi7B,GAAQr4B,IAIvB,IAAK7C,GAAKC,EAGN,MAFAuC,GAAK,GAAKvC,EAEHhB,EAAQ,KAAEuD,EAGrB,IAAI45B,GAAKn9B,EAAK,EACV89B,EAAKv6B,EAAK,EACV/B,EAAI87B,EAAW/5B,EAAK,EAAIi4B,GACxB9tB,EAAI4vB,EAAWt9B,EAAK,EAAIw7B,GACxBe,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QAE3B,KAAMvuB,IAAMlM,EAAI,CAGZ,IAAM27B,IAAOW,EAET,MAAOX,IAAO55B,EAAK,GAAKvC,EAAGuC,GAAM,GAAI04B,GAAS6B,EAAK99B,EAAI4D,IAI3D,KAAMu5B,EAAG,KAAOW,EAAG,GAQf,MALA99B,GAAI89B,EAAG,IAAOv6B,EAAK,GAAKvC,EAAGuC,GAAM,GAAI04B,GAASkB,EAAG,GAAKn9B,EAG9C,GAAN27B,GAAW,EAAI,GAEViB,EAAWC,EAAK78B,EAAGu8B,EAAIZ,GAAO37B,EAQ7C,GAJAm9B,EAAKA,EAAG1S,QACRtpB,EAAIg8B,EAAG97B,OAGFN,EAAI2M,EAAIlM,EAAI,CA2Bb,KAzBK08B,EAAW,EAAJn9B,IACRA,GAAKA,EACL4qB,EAAIwR,EACJh8B,EAAI28B,EAAGz8B,SAEPG,EAAIkM,EACJie,EAAImS,IAGDpwB,EAAIzL,KAAKmG,KAAMm0B,EAAKf,IAAcr6B,IACrCA,EAAIuM,GASH3M,GAAMI,GAAK,KACZJ,EAAII,EACJwqB,EAAEtqB,OAAS,GAGfsqB,EAAE2L,UACIt2B,EAAID,EAAGC,IAAK2qB,EAAEhjB,KAAK,IACzBgjB,EAAE2L,cAQF,MAJK4G,EAAO/8B,GAAMob,EAAIuhB,EAAGz8B,WACrBkb,EAAIpb,GAGFJ,EAAIC,EAAI,EAAOub,EAAJvb,EAAOA,IAEpB,GAAKm8B,EAAGn8B,IAAM88B,EAAG98B,GAAK,CAClBk9B,EAAOf,EAAGn8B,GAAK88B,EAAG98B,EAElB,OAeZ,GATKk9B,IACDvS,EAAIwR,EAAIA,EAAKW,EAAIA,EAAKnS,EACtBpoB,EAAK,GAAKA,EAAK,IAOZvC,KAASub,EAAI4gB,EAAG97B,QAAWy8B,EAAGz8B,SAAa,EAE9C,KAAQL,IAAKm8B,EAAG5gB,KAAO,GAI3B,IAAM7O,EAAI6vB,EAAO,EAAGv8B,EAAI88B,EAAGz8B,OAAQL,EAAID,GAAK,CAExC,GAAKo8B,IAAKn8B,GAAK88B,EAAG98B,GAAK,CAEnB,IAAMG,EAAIH,EAAGG,IAAMg8B,IAAKh8B,GAAIg8B,EAAGh8B,GAAKuM,KAClCyvB,EAAGh8B,GACLg8B,EAAGn8B,IAAMu8B,EAEbJ,EAAGn8B,IAAM88B,EAAG98B,GAIhB,KAAmB,GAAXm8B,IAAK5gB,GAAS4gB,EAAGpM,OAGzB,KAAiB,GAAToM,EAAG,GAASA,EAAGlO,UAAWztB,GAclC,IAZM27B,EAAG,KAGLA,GAAO37B,EAAI,GAGX+B,EAAK,EAAU,GAANo4B,EAAU,GAAK,GAG5Bp4B,EAAK,EAAI45B,EAGHp8B,EAAI,EAAGC,EAAIm8B,EAAG,GAAIn8B,GAAK,GAAIA,GAAK,GAAID,KAG1C,MAFAwC,GAAK,EAAIxC,EAAIS,EAAIg6B,EAAU,EAEpBoB,EAAWC,EAAKt5B,EAAGg5B,EAAIZ,GAAOp4B,GA4BzCuK,EAAU,OAAIA,EAAO,IAAI,SAAWvK,EAAGvC,GACnC,GAAImN,GAAGyf,EACH5tB,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzBxD,EAAIy/B,EAAgB,MAWxB,OATA5/B,GAAK,EACLkH,EAAI,GAAI04B,GAAS14B,EAAGvC,GACpBA,EAAIuC,EAAK,EACT4K,GAAKnO,EAAK,IAAMgB,GAAKuC,EAAK,IAAMA,EAAK,EAAE,GAMlC4K,IAAM5K,EAAK,GAAKvD,EAAK,IAAMA,EAAK,EAAE,GAE5BmO,EACH,GAAI8tB,GAAQr4B,KACZi5B,EAAK,GAAIZ,GAAQj8B,GAAIi8B,EAAmB,UAAGA,EAAkB,WAGrEW,GAAW,EAED,GAALpgC,GAID+G,EAAK,EAAI,EACTqqB,EAAI3pB,EAAKjE,EAAGuD,EAAG,EAAG,EAAG,GACrBA,EAAK,EAAIvC,EACT4sB,EAAK,GAAK5sB,GAEV4sB,EAAI3pB,EAAKjE,EAAGuD,EAAG,EAAG/G,EAAG,GAGzBoxB,EAAIA,EAAS,MAAErqB,GACfq5B,GAAW,EAEJ58B,EAAS,MAAE4tB,KAStB9f,EAAoB,iBAAIA,EAAM,GAAI,WAE9B,MAAO9J,GAAGhI,OASd8R,EAAW,QAAIA,EAAO,IAAI,WACtB,GAAI9N,GAAI,GAAIhE,MAAkB,YAAEA,KAGhC,OAFAgE,GAAK,GAAKA,EAAK,GAAK,KAEb68B,EAAI78B,IAyBf8N,EAAQ,KAAI,SAAWvK,EAAGvC,GACtB,GAAI2qB,GACA3rB,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzBe,EAAIf,EAAK,CAOb,IALA3D,EAAK,GACLkH,EAAI,GAAI04B,GAAS14B,EAAGvC,GACpBA,EAAIuC,EAAK,GAGHxC,IAAMC,EAER,MAAO,IAAIi7B,GAAQr4B,IAIvB,IAAK7C,GAAKC,EAGN,MAFAuC,GAAK,GAAKvC,EAEHhB,EAAS,MAAEuD,EAGtB,IAAI45B,GAAKn9B,EAAK,EACV89B,EAAKv6B,EAAK,EACV/B,EAAI87B,EAAW/5B,EAAK,EAAIi4B,GACxB9tB,EAAI4vB,EAAWt9B,EAAK,EAAIw7B,GACxBe,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QAE3B,KAAMvuB,IAAMlM,EAAI,CAGZ,IAAM27B,IAAOW,EAGT,MAAO,IAAI7B,GAASl7B,EAAI,EAI5B,KAAMo8B,EAAG,KAAOW,EAAG,GAKf,MAFA99B,GAAI89B,EAAG,GAAKv6B,EAAI,GAAI04B,GAASkB,EAAG,GAAKn9B,EAAQ,EAAJe,GAElC67B,EAAWC,EAAK78B,EAAGu8B,EAAIZ,GAAO37B,EAO7C,GAHAm9B,EAAKA,EAAG1S,QAGH1pB,EAAI2M,EAAIlM,EAAI,CAsBb,IApBS,EAAJT,GACDA,GAAKA,EACL4qB,EAAIwR,EACJn8B,EAAI88B,EAAGz8B,SAEPG,EAAIkM,EACJie,EAAImS,EACJ98B,EAAIm8B,EAAG97B,SAGJqM,EAAIzL,KAAKmG,KAAMm0B,EAAKf,IAAcx6B,IACrCA,EAAI0M,GAIH3M,IAAMC,IACPD,EAAIC,EACJ2qB,EAAEtqB,OAAS,GAGTsqB,EAAE2L,UAAWv2B,IAAK4qB,EAAEhjB,KAAK,IAC/BgjB,EAAE2L,UASN,IALK6F,EAAG97B,OAASy8B,EAAGz8B,OAAS,IACzBsqB,EAAImS,EAAIA,EAAKX,EAAIA,EAAKxR,GAIpB5qB,EAAI+8B,EAAGz8B,OAAQL,EAAI,EAAG0M,EAAI6vB,EAAMx8B,EAAGo8B,EAAGp8B,IAAM2M,EAC9C1M,GAAMm8B,IAAKp8B,GAAKo8B,EAAGp8B,GAAK+8B,EAAG/8B,GAAKC,GAAM0M,EAAI,CAS9C,KANI1M,IACAm8B,EAAG/B,QAAQp6B,KACTQ,GAIAT,EAAIo8B,EAAG97B,OAAmB,GAAX87B,IAAKp8B,GAASo8B,EAAGpM,OAOtC,IAHAxtB,EAAK,EAAI45B,EAGHp8B,EAAI,EAAGC,EAAIm8B,EAAG,GAAIn8B,GAAK,GAAIA,GAAK,GAAID,KAG1C,MAFAwC,GAAK,EAAIxC,EAAIS,EAAIg6B,EAAU,EAEpBoB,EAAWC,EAAKt5B,EAAGg5B,EAAIZ,GAAOp4B,GAUzCuK,EAAa,UAAIA,EAAM,GAAI,SAAUO,GACjC,GAAIF,GAAI,KACJnO,EAAIhE,IAmBR,OAjBKqS,IAAKF,GAEDE,MAAQA,GAAW,IAANA,GAAiB,IAANA,GAGzB+tB,EAAmBp8B,EAAe,YAAG,WAAYqO,EAAG,YAAa,GAIpErO,EAAK,IACNmO,EAAI2uB,EAAgB98B,EAAK,GAEpBqO,GAAKrO,EAAK,EAAI,EAAImO,IACnBA,EAAInO,EAAK,EAAI,IAIdmO,GASXL,EAAS,MAAI,WACT,GAAI9N,GAAIhE,KACJigC,EAAUj8B,EAAe,WAE7B,OAAO68B,GAAK,GAAIZ,GAAQj8B,GAAIA,EAAK,EAAI,EAAGi8B,EAAkB,WAgB9DnuB,EAAc,WAAIA,EAAQ,KAAI,WAC1B,GAAItR,GAAG2R,EAAGuuB,EAAIp3B,EAAGq3B,EAAKhR,EAClB3rB,EAAIhE,KACJS,EAAIuD,EAAK,EACToW,EAAIpW,EAAK,EACTwB,EAAIxB,EAAK,EACTi8B,EAAUj8B,EAAe,YACzBm+B,EAAO,GAAIlC,GAAQ,GAGvB,IAAW,IAAN7lB,IAAY3Z,IAAMA,EAAE,GAErB,MAAO,IAAIw/B,IAAU7lB,GAAS,EAAJA,KAAY3Z,GAAKA,EAAE,IAAOmH,IAAMnH,EAAIuD,EAAI,EAAI,EAqC1E,KAlCA48B,GAAW,EAGXxmB,EAAInU,KAAKiC,MAAOlE,GAMN,GAALoW,GAAUA,GAAK,EAAI,GACpBjI,EAAIotB,EAAoB9+B,IAEjB0R,EAAE9M,OAASG,GAAM,GAAK,IACzB2M,GAAK,KAGTiI,EAAInU,KAAKiC,KAAKiK,GACd3M,EAAI87B,GAAa97B,EAAI,GAAM,IAAY,EAAJA,GAASA,EAAI,GAE3C4U,GAAK,EAAI,EACVjI,EAAI,KAAO3M,GAEX2M,EAAIiI,EAAE3T,gBACN0L,EAAIA,EAAEsc,MAAO,EAAGtc,EAAEiwB,QAAQ,KAAO,GAAM58B,GAG3C8D,EAAI,GAAI22B,GAAQ9tB,IAEhB7I,EAAI,GAAI22B,GAAS7lB,EAAE7O,YAGvBm1B,GAAOl7B,EAAIy6B,EAAmB,WAAM,IAOhC,GAHAtQ,EAAIrmB,EACJA,EAAI64B,EAAY,MAAGxS,EAAQ,KAAG1nB,EAAKjE,EAAG2rB,EAAG+Q,EAAK,EAAG,KAE5CnB,EAAqB5P,EAAK,GAAIlB,MAAO,EAAGiS,MACvCvuB,EAAIotB,EAAqBj2B,EAAK,IAAMmlB,MAAO,EAAGiS,GAAO,CAOvD,GANAvuB,EAAIA,EAAEsc,MAAOiS,EAAK,EAAGA,EAAK,GAMhB,QAALvuB,IAAgBwuB,GAAY,QAALxuB,GAiBrB,IAMIA,KAAOA,EAAEsc,MAAM,IAAqB,KAAftc,EAAEvI,OAAO,MAGjCi3B,EAAKv3B,EAAG9D,EAAI,EAAG,GACfhF,GAAK8I,EAAS,MAAEA,GAAO,GAAEtF,GAG7B,OAxBA,IAAM28B,IACFE,EAAKlR,EAAGnqB,EAAI,EAAG,GAEVmqB,EAAS,MAAEA,GAAO,GAAE3rB,IAAK,CAC1BsF,EAAIqmB,CAEJ,OAGR+Q,GAAM,EACNC,EAAM,EAoBlB,MAFAC,IAAW,EAEJC,EAAKv3B,EAAG9D,EAAGy6B,EAAkB,SAAGz/B,IAyB3CsR,EAAS,MAAI,SAAWvK,EAAGvC,GACvB,GAAIvE,GAAG+E,EACHxB,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzBm9B,EAAKn9B,EAAK,EACV89B,GAAOzhC,EAAK,GAAIkH,EAAI,GAAI04B,GAAS14B,EAAGvC,GAAKuC,EAAK,GAC9CpC,EAAIm8B,EAAWt9B,EAAK,EAAIw7B,GACxBjf,EAAI+gB,EAAW/5B,EAAK,EAAIi4B,GACxBz6B,EAAIf,EAAK,CAOb,IALAgB,EAAIuC,EAAK,EAETA,EAAK,EAAIxC,GAAKC,EAAI,EAAI,MAGhBG,GAAQg8B,GAAOA,EAAG,MAAS5gB,GAAQuhB,GAAOA,EAAG,KAG/C,MAAO,IAAI7B,IAAUl7B,IAAMC,GAGzBm8B,IAAOA,EAAG,KAAOW,GAAMA,IAAOA,EAAG,KAAOX,EAGpCv5B,IAGCu5B,GAAOW,EAMG,EAATv6B,EAAK,EAHLA,EAAK,EAAI,EAiBrB,KAXA/B,EAAIL,EAAIob,EACRxb,EAAIo8B,EAAG97B,OACPL,EAAI88B,EAAGz8B,OAEEL,EAAJD,IAGDtE,EAAI0gC,EAAIA,EAAKW,EAAIA,EAAKrhC,EACtB8f,EAAIxb,EAAGA,EAAIC,EAAGA,EAAIub,GAGhBA,EAAIxb,EAAIC,EAAGvE,KAAQ8f,IAAK9f,EAAEkM,KAAK,IAGrC,IAAMxH,EAAIH,EAAI,EAAGG,EAAI,GAAIA,IAAM,CAG3B,IAFAH,EAAI,EAEEub,EAAIxb,EAAII,EAAGob,EAAIpb,GACfH,EAAIvE,EAAE8f,GAAKuhB,EAAG38B,GAAKg8B,EAAG5gB,EAAIpb,EAAI,GAAKH,EACnCvE,EAAE8f,KAAOvb,EAAIu8B,EAAO,EACpBv8B,EAAIA,EAAIu8B,EAAO,CAErB9gC,GAAE8f,IAAO9f,EAAE8f,GAAKvb,GAAMu8B,EAAO,EAYjC,IATIv8B,IACEQ,EACO/E,EAAE,IAGXA,EAAEwyB,QAIA1S,EAAI9f,EAAE4E,QAAS5E,IAAI8f,GAAI9f,EAAEs0B,OAI/B,IAHAxtB,EAAK,EAAI9G,EAGHsE,EAAI,EAAGC,EAAIvE,EAAE,GAAIuE,GAAK,GAAIA,GAAK,GAAID,KAGzC,MAFAwC,GAAK,EAAIxC,EAAIS,EAAIg6B,EAAU,EAEpBoB,EAAWC,EAAKt5B,EAAG04B,EAAmB,UAAGA,EAAkB,UAAM14B,GAmB5EuK,EAAmB,gBAAIA,EAAQ,KAAI,SAAWgrB,EAAI6C,GAC9C,GAAI37B,GAAIhE,IAGR,OAFAgE,GAAI,GAAIA,GAAe,YAAEA,GAEZ,MAAN84B,GAAeuD,EAAUr8B,EAAG84B,EAAI,QAEnC+D,EAAK78B,GAAU,EAAL84B,GAAW94B,EAAK,EAAI,EAAG+7B,EAAS/7B,EAAG27B,EAAI,SADjD37B,GAqBR8N,EAAiB,cAAI,SAAWgrB,EAAI6C,GAChC,GAAI37B,GAAIhE,IAER,OAAOgE,GAAK,EACRoC,EAAQpC,EAAS,MAAN84B,GAAcuD,EAAUr8B,EAAG84B,EAAI,iBAAyB,EAALA,EAAS,KACjE,MAANA,GAAciD,EAAS/7B,EAAG27B,EAAI,iBAAmB,GACjD37B,EAAEuH,YAsBVuG,EAAW,QAAI,SAAWgrB,EAAI6C,GAC1B,GAAI94B,GACA7C,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzByrB,EAAMwQ,EAAkB,SACxBoC,EAAMpC,EAAkB,QAgC5B,OA9BW,OAANnD,IACDA,EAAKuD,EAAUr8B,EAAG84B,EAAIj2B,EAAM,WAAc7C,EAAK,GAAW,EAAL84B,GAAW,KAChE6C,EAAKI,EAAS/7B,EAAG27B,EAAI94B,IAIzBo5B,EAAkB,WAAOA,EAAkB,SAAI,EAAI,GAExC,MAANnD,GAAe94B,EAAK,GAGrB6C,EAAMT,EAAQpC,EAAG84B,EAAI6C,GAIhB37B,EAAK,EAAI,GAAKA,EAAK,IAGdA,EAAK,EAAE,GAID6C,EAAIu7B,QAAQ,KAAO,IAC3Bv7B,EAAM,IAAMA,GAJZA,EAAMA,EAAIK,QAAS,IAAK,MAVhCL,EAAM7C,EAAEuH,WAkBZ00B,EAAkB,SAAIxQ,EACtBwQ,EAAkB,SAAIoC,EAEfx7B,GAwBXiL,EAAY,SAAI,SAAUgrB,EAAI6C,GAC1B,GAAI37B,GAAIhE,IAER,KAAMgE,EAAK,EACP,MAAOA,GAAEuH,UAGb,IAAIpG,GACAs4B,EAAQz5B,EAAK,EAAI,EACjBoO,EAAIpO,EAAe,YAAU,OAC7Bs+B,EAAiBlwB,EAAkB,eACnCmwB,GAAMnwB,EAAa,UACnBowB,GAAMpwB,EAAsB,mBAC5BgpB,EAAMp3B,EAAEwC,QAASs2B,EAAI6C,GAAK9zB,MAAM,KAChC42B,EAAUrH,EAAI,GACdsH,EAAetH,EAAI,GACnBuH,EAAYlF,EAAQgF,EAAQhU,MAAM,GAAKgU,EACvCr9B,EAAMu9B,EAAUt9B,MAMpB,IAJIm9B,IACSr9B,EAAIo9B,EAAIA,EAAKC,EAAtBp9B,GAA0Bo9B,EAAKr9B,GAG9Bo9B,EAAK,GAAKn9B,EAAM,EAAI,CAIrB,IAHAD,EAAIC,EAAMm9B,GAAMA,EAChBE,EAAUE,EAAUtN,OAAQ,EAAGlwB,GAEnBC,EAAJD,EAASA,GAAKo9B,EAClBE,GAAWH,EAAiBK,EAAUtN,OAAQlwB,EAAGo9B,EAGhDC,GAAK,IACNC,GAAWH,EAAiBK,EAAUlU,MAAMtpB,IAG5Cs4B,IACAgF,EAAU,IAAMA,GAIxB,MAAOC,GACHD,EAAUrwB,EAAoB,mBAAQowB,GAAMpwB,EAAqB,mBAC/DswB,EAAax7B,QAAS,GAAIxC,QAAQ,OAAS89B,EAAK,OAAQ,KACxD,KAAOpwB,EAA0B,wBACjCswB,GACFD,GAeR3wB,EAAc,WAAI,SAAU8wB,GACxB,GAAIC,GAAIC,EAAIt9B,EAAGu9B,EAAM5wB,EAAG6wB,EAAItiC,EAAGkxB,EAC3B5tB,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzBi/B,EAAKJ,EAAK,GAAI5C,GAASA,EAAa,KACpCiD,EAAKF,EAAK,GAAI/C,GAAQ,GACtBkB,EAAKn9B,EAAK,EACViO,EAAI,GAAIguB,GAAQiD,EAGpB,KAAM/B,EAEF,MAAOn9B,GAAEuH,UAkCb,KA/BA/F,EAAIyM,EAAK,EAAI6uB,EAAeK,GAAMn9B,EAAK,EAAI,EAC3CiO,EAAK,EAAE,GAAK6tB,EAAS,IAAMp/B,EAAI8E,EAAIg6B,GAAY,EAAIA,EAAU9+B,EAAIA,IAGpD,MAARkiC,MAGKviC,EAAK,GAAI8R,EAAI,GAAI8tB,GAAQ2C,IAAW,IAGrC1C,EAAa/tB,EAAO,IAAE8wB,GAAM,IAAM9wB,EAAK,IAGrC8tB,EAAgB,QAAKqB,EAAWnvB,EAAK,EAAIqtB,GAAYrtB,EAAK,EAAE9M,OAAS,KAIpE+6B,EAAmBH,EAAS,kBAAmB2C,EAAM,aAAc,KAGhEA,EAAOzwB,GAAS,IAAEF,GAAK,KAGlC2wB,EAAOp9B,EAAI,EAAIyM,EAAIgxB,GAGvBrC,GAAW,EACXzuB,EAAI,GAAI8tB,GAASV,EAAoB4B,IACrCzgC,EAAIu/B,EAAmB,UACvBA,EAAmB,UAAIz6B,EAAI27B,EAAG97B,OAASm6B,EAAU,EAG7C5N,EAAI3pB,EAAKkK,EAAGF,EAAG,EAAG,EAAG,GACrB6wB,EAAKD,EAAS,KAAGjR,EAAS,MAAEsR,IAEJ,GAAnBJ,EAAQ,IAAEF,IAIfC,EAAKK,EACLA,EAAKJ,EAELG,EAAKD,EAAS,KAAGpR,EAAS,MAAGkR,EAAKG,IAClCD,EAAKF,EAEL7wB,EAAIE,EAAS,MAAGyf,EAAS,MAAGkR,EAAK7wB,IACjCE,EAAI2wB,CAiBR,OAdAA,GAAK76B,EAAK26B,EAAY,MAAEC,GAAKK,EAAI,EAAG,EAAG,GACvCF,EAAKA,EAAS,KAAGF,EAAU,MAAEG,IAC7BJ,EAAKA,EAAS,KAAGC,EAAU,MAAEI,IAC7BF,EAAM,EAAIC,EAAM,EAAIj/B,EAAK,EAGzB++B,EAAO96B,EAAKg7B,EAAIC,EAAI19B,EAAG,GAAW,MAAExB,GAAQ,MAAS,IAC9CiE,EAAK+6B,EAAIH,EAAIr9B,EAAG,GAAW,MAAExB,GAAQ,OAAQ,GAC9Ci/B,EAAK,GAAIC,EAAK,KACdF,EAAK,GAAIH,EAAK,IAEpBjC,GAAW,EACXX,EAAmB,UAAIv/B,EAEhBqiC,GA2BXjxB,EAAa,UAAI,SAAWK,EAAGwtB,GAC3B,GAAI37B,GAAIhE,KACJigC,EAAUj8B,EAAe,WAuC7B,OArCAA,GAAI,GAAIi8B,GAAQj8B,GAEN,MAALmO,GACDA,EAAI,GAAI8tB,GAASA,EAAa,KAC9BN,EAAKM,EAAkB,WAEvB5/B,EAAK,GACL8R,EAAI,GAAI8tB,GAAQ9tB,GAChBwtB,EAAKI,EAAS/7B,EAAG27B,EAAI,cAIpBxtB,EAAK,EAGDnO,EAAK,IAEDmO,EAAK,EAAE,IACRyuB,GAAW,EACX58B,EAAIiE,EAAKjE,EAAGmO,EAAG,EAAQ,EAALwtB,GAAU,EAAG,EAAG,EAAG,GAAGA,GAAMA,EAAI,GAAW,MAAExtB,GAC/DyuB,GAAW,EACXC,EAAI78B,IAEJA,EAAK,GAAMA,EAAK,EAAI,IAKpBA,EAAK,IAGRmO,EAAK,IACNA,EAAK,EAAInO,EAAK,GAElBA,EAAImO,GAGDnO,GAQX8N,EAAY,SAAI,WACZ,GAAI9N,GAAIhE,IAGR,QAAQgE,IAAOA,EAAK,EAAI,EAAIA,EAAK,EAAI4D,MAmDzCkK,EAAW,QAAIA,EAAO,IAAI,SAAWvK,EAAGvC,GACpC,GAAID,GAAGS,EAAG2M,EAAG7I,EACTtF,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzBoW,EAAIpW,EAAK,EACTm/B,GAAQ9iC,EAAK,KAAIkH,EAAI,GAAI04B,GAAS14B,EAAGvC,KACrCG,EAAS,EAALg+B,GAAUA,EAAKA,EACnB5C,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QAG3B,KAAMj8B,EAAK,IAAMuD,EAAK,IAAO4K,GAAKnO,EAAK,EAAE,MAASuD,EAAK,EAAE,GAGrD,MAAO,IAAI04B,GAASH,EAAS3tB,EAAQ,EAAJiI,GAASpW,EAAGm/B,GAOjD,IAJAn/B,EAAI,GAAIi8B,GAAQj8B,GAChBe,EAAIf,EAAK,EAAEqB,QAGLrB,EAAK,GAAKA,EAAK,EAAE,IAAMA,EAAK,GAAU,GAALe,EAEnC,MAAOf,EAMX,IAHAgB,EAAIuC,EAAK,EAAElC,OAAS,EAGdkC,EAAK,GAAKA,EAAK,EAAE,IAAMA,EAAK,GAAMvC,EAOpC,GAJAQ,EAAI87B,EAAW/5B,EAAK,EAAIi4B,GACxBrtB,EAAI3M,GAAKR,GAGHmN,GAAS,EAAJiI,EACP9Q,EAAI,GAAI22B,GAAQr4B,SACb,CAMH,GAAKuK,GAAuB0vB,EAAlB98B,EAAIy6B,EAAUr6B,GAGpB,GAFAmE,EAAI03B,EAAQf,EAASj8B,EAAGmB,GAEnBoC,EAAK,EAAI,EAEV,MAAO04B,GAAa,IAAO,IAAE32B,OAE9B,CAqBH,GAlBA8Q,EAAQ,EAAJA,GAAsC,EAA7B7S,EAAK,EAAGtB,KAAK3C,IAAKkC,EAAGR,IAAY,GAAK,EAEnDA,EAAI86B,GAAU97B,EAAGm/B,GAQjB39B,EAAS,GAALR,GAAWwC,SAASxC,GAGpB,GAAIi7B,GAASj7B,EAAI,IAAQ,EAFzBs8B,EAAW6B,GAAOl9B,KAAKkL,IAAK,KAAOouB,EAAqBv7B,EAAK,IAC7DiC,KAAKqC,KAAOtE,EAAK,EAAI,IAMpBwB,EAAIy6B,EAAc,KAAI,GAAKz6B,EAAIy6B,EAAc,KAAI,EAElD,MAAO,IAAIA,GAASz6B,EAAI,EAAI4U,EAAI,EAAI,EAGxCwmB,IAAW,EACXX,EAAkB,SAAIj8B,EAAK,EAAI,EAS/BmB,EAAIc,KAAKzC,IAAK,IAAMgC,EAAI,IAAKH,QAG7BiE,EAAIigB,EAAKhiB,EAAS,MAAGS,EAAIhE,EAAGu8B,EAAKp7B,IAAOo7B,GAGxCj3B,EAAIu3B,EAAKv3B,EAAGi3B,EAAK,EAAG,GAMfb,EAAqBp2B,EAAK,EAAGi3B,EAAIZ,KAClCn6B,EAAI+6B,EAAK,GAGTj3B,EAAIu3B,EAAKtX,EAAKhiB,EAAS,MAAGS,EAAIhE,EAAGwB,EAAIL,IAAOK,GAAKA,EAAI,EAAG,IAMlD+5B,EAAqBj2B,EAAK,GAAImlB,MAAO8R,EAAK,EAAGA,EAAK,IAAO,GAAK,OAChEj3B,EAAIu3B,EAAKv3B,EAAGi3B,EAAK,EAAG,KAI5Bj3B,EAAK,EAAI8Q,EACTwmB,GAAW,EACXX,EAAkB,SAAIN,EAG1Br2B,EAAIu3B,EAAKv3B,EAAGi3B,EAAIZ,OAzFpBr2B,GAAIu3B,EAAK78B,EAAGu8B,EAAIZ,EA6FpB,OAAOr2B,IAuBXwI,EAAe,YAAI,SAAW4uB,EAAIf,GAC9B,GAAI37B,GAAIhE,IAER,OAAa,OAAN0gC,GAAcL,EAAUr8B,EAAG08B,EAAI,cAAe,IAAO18B,EAAK,EAC7DoC,EAAQpC,EAAU,IAAL08B,EAAQX,EAAS/7B,EAAG27B,EAAI,eAAiB,GACtD37B,EAAEuH,YAiBVuG,EAAuB,oBAAIA,EAAQ,KAAI,SAAWG,EAAG0tB,GACjD,GAAI37B,GAAIhE,KACJigC,EAAUj8B,EAAe,WAI7B,OAFAA,GAAI,GAAIi8B,GAAQj8B,GAEJ,MAALiO,GAAcouB,EAAUr8B,EAAGiO,EAAG,OAAQ,GAEzC4uB,EAAK78B,EAAO,EAAJiO,EAAO8tB,EAAS/7B,EAAG27B,EAAI,SAD/BkB,EAAK78B,EAAGi8B,EAAmB,UAAGA,EAAkB,WAiBvDnuB,EAAY,SAAI,SAAU9M,GACvB,GAAIkN,GAAGrL,EAAKs0B,EACRn3B,EAAIhE,KACJigC,EAAUj8B,EAAe,YACzBk3B,EAAKl3B,EAAK,CAGd,IAAY,OAAPk3B,EACDr0B,EAAM7C,EAAK,EAAI,WAAa,UAGzB,CAAA,GAAKgB,IAAMkN,IAAOgpB,GAAM+E,EAAkB,UAAK/E,GAAM+E,EAAkB,UAE1E,MAAO75B,GAAQpC,EAAG,KAAMi8B,EAAkB,SAAG,EAK7C,IAHAp5B,EAAM04B,EAAqBv7B,EAAK,GAGtB,EAALk3B,EAAS,CAGV,OAAUA,EAAIr0B,EAAM,IAAMA,GAC1BA,EAAM,KAAOA,MAGV,IAAKs0B,EAAOt0B,EAAIxB,OAAQ61B,EAAK,EAEhC,KAAOA,EAAKC,EAGR,IAAMD,GAAMC,EAAMD,IAAOr0B,GAAO,SAEnBs0B,GAALD,IACRr0B,EAAMA,EAAI4nB,MAAO,EAAGyM,GAAO,IAAMr0B,EAAI4nB,MAAMyM,QAO/C,IAFAhpB,EAAIrL,EAAI+C,OAAO,GAEVuxB,EAAO,EACRt0B,EAAMqL,EAAI,IAAMrL,EAAI4nB,MAAM,OAGvB,IAAU,KAALvc,EAER,MAAOA,EAIf,IAAU,MAALlN,EAED,IAAQk7B,IAAgBl7B,GAAK,GAAS,GAAJA,KAC9BA,IAAU,EAAJA,IAAWi7B,EAAgB,OAYjCG,EAAmBH,EAAS,OAAQj7B,EAAG,WAAY,OARnD,IAHA6B,EAAM26B,EAAavB,EAASp5B,EAAS,EAAJ7B,EAAO,GAAIhB,EAAK,GAGrC,KAAP6C,EAED,MAAOA,GAWvB,MAAO7C,GAAK,EAAI,EAAI,IAAM6C,EAAMA,GAQpCiL,EAAa,UAAIA,EAAS,MAAI,WAE1B,MAAO+uB,GAAK,GAAI7gC,MAAkB,YAAEA,MAAOA,KAAQ,EAAI,EAAG,IAU9D8R,EAAW,QAAIA,EAAU,OAAI,WAEzB,MAAO9R,MAAKuL,YAuKhBi2B,EAAc,WAOV,QAAS4B,GAAWv8B,EAAKw8B,EAAQC,GAO7B,IANA,GAAI/iB,GAEA8a,EADAD,GAAO,GAEPj2B,EAAI,EACJg2B,EAAOt0B,EAAIxB,OAEH81B,EAAJh2B,GAAY,CAChB,IAAMk2B,EAAOD,EAAI/1B,OAAQg2B,IAAQD,EAAIC,IAASgI,GAG9C,IAFAjI,EAAK7a,EAAI,IAAOohB,EAASS,QAASv7B,EAAI+C,OAAQzE,MAEtCob,EAAI6a,EAAI/1B,OAAQkb,IAEf6a,EAAI7a,GAAK+iB,EAAU,IAED,MAAdlI,EAAI7a,EAAI,KACT6a,EAAI7a,EAAI,GAAK,GAEjB6a,EAAI7a,EAAI,IAAM6a,EAAI7a,GAAK+iB,EAAU,EACjClI,EAAI7a,IAAM+iB,GAKtB,MAAOlI,GAAIE,UAGf,MAAO,UAAW2E,EAASp5B,EAAKy8B,EAASD,EAAQl9B,GAC7C,GAAIX,GAAG+a,EAAGjX,EAAGtF,EAAGm9B,EAAI55B,EAChBpC,EAAI0B,EAAIu7B,QAAS,KACjB7B,EAAKN,EAAmB,UACxBN,EAAKM,EAAkB,QA0B3B,KAxBc,GAAToD,IACDx8B,EAAMA,EAAI4rB,eAITttB,GAAK,IACN0B,EAAMA,EAAIK,QAAS,IAAK,IACxBK,EAAI,GAAI04B,GAAQoD,GAChBr/B,EAAIg9B,EAAQf,EAAS14B,EAAGV,EAAIxB,OAASF,GAOrCoC,EAAK,EAAI67B,EAAWp/B,EAAEwC,UAAW,GAAI88B,GACrC/7B,EAAK,EAAIA,EAAK,EAAElC,QAIpB87B,EAAKiC,EAAWv8B,EAAKw8B,EAAQC,GAC7B99B,EAAI+a,EAAI4gB,EAAG97B,OAGQ,GAAX87B,IAAK5gB,GAAS4gB,EAAGpM,OAEzB,IAAMoM,EAAG,GAEL,MAAO,GAsBX,IAnBS,EAAJh8B,EACDK,KAEAxB,EAAK,EAAIm9B,EACTn9B,EAAK,EAAIwB,EAGTxB,EAAK,EAAImC,EACTnC,EAAIiE,EAAKjE,EAAGuD,EAAGg5B,EAAIZ,EAAI,EAAG2D,GAC1BnC,EAAKn9B,EAAK,EACVsF,EAAItF,EAAK,EACTwB,EAAIxB,EAAK,GAIbmB,EAAIg8B,EAAGZ,GACPhgB,EAAI+iB,EAAU,EACdh6B,EAAIA,GAAmB,MAAd63B,EAAGZ,EAAK,GAEP,EAALZ,GACM,MAALx6B,GAAamE,KAAe,GAANq2B,GAAWA,IAAQ37B,EAAK,EAAI,EAAI,EAAI,IAC5DmB,EAAIob,GAAKpb,GAAKob,IAAa,GAANof,GAAWr2B,GAAW,GAANq2B,GAAwB,EAAbwB,EAAGZ,EAAK,IACxDZ,IAAQ37B,EAAK,EAAI,EAAI,EAAI,IAKzB,IAHAm9B,EAAG97B,OAASk7B,IAGJ+C,IAAWnC,IAAKZ,GAAM+C,GAC1BnC,EAAGZ,GAAM,EAEHA,MACA/6B,EACF27B,EAAG/B,QAAQ,QAInB+B,GAAG97B,OAASk7B,CAIhB,KAAMhgB,EAAI4gB,EAAG97B,QAAS87B,IAAK5gB,KAG3B,IAAMpb,EAAI,EAAG0B,EAAM,GAAS0Z,GAALpb,EAAQ0B,GAAO86B,EAAS/3B,OAAQu3B,EAAGh8B,OAG1D,GAAS,EAAJK,EAAQ,CAGT,OAAUA,EAAGqB,EAAM,IAAMA,GAEzBA,EAAM,KAAOA,MAMb,IAFA1B,EAAI0B,EAAIxB,SAEDG,EAAIL,EAGP,IAAMK,GAAKL,EAAGK,IAAMqB,GAAO,SAEf1B,GAAJK,IACRqB,EAAMA,EAAI4nB,MAAO,EAAGjpB,GAAM,IAAMqB,EAAI4nB,MAAMjpB,GAKlD,OAAOqB,MAQf,IAAIoB,GAAM,WAGN,QAASs7B,GAAiBv/B,EAAG0N,EAAGf,GAC5B,GAAIujB,GACAsP,EAAQ,EACRr+B,EAAInB,EAAEqB,MAEV,KAAMrB,EAAIA,EAAEyqB,QAAStpB,KACjB+uB,EAAOlwB,EAAEmB,GAAKuM,EAAI8xB,EAClBx/B,EAAEmB,GAAK+uB,EAAOvjB,EAAO,EACrB6yB,EAAQtP,EAAOvjB,EAAO,CAO1B,OAJI6yB,IACAx/B,EAAEo7B,QAAQoE,GAGPx/B,EAGX,QAASkoB,GAASnnB,EAAGC,EAAGy+B,EAAIC,GACxB,GAAIv+B,GAAGssB,CAEP,IAAKgS,GAAMC,EACPjS,EAAMgS,EAAKC,EAAK,EAAI,OAGpB,KAAMv+B,EAAIssB,EAAM,EAAOgS,EAAJt+B,EAAQA,IAEvB,GAAKJ,EAAEI,IAAMH,EAAEG,GAAK,CAChBssB,EAAM1sB,EAAEI,GAAKH,EAAEG,GAAK,EAAI,EAExB,OAKZ,MAAOssB,GAGX,QAASxH,GAAUllB,EAAGC,EAAGy+B,EAAI9yB,GAIzB,IAHA,GAAIxL,GAAI,EAGAs+B,KACJ1+B,EAAE0+B,IAAOt+B,EACTA,EAAIJ,EAAE0+B,GAAMz+B,EAAEy+B,GAAM,EAAI,EACxB1+B,EAAE0+B,GAAMt+B,EAAIwL,EAAO5L,EAAE0+B,GAAMz+B,EAAEy+B,EAIjC,OAAS1+B,EAAE,IAAMA,EAAEM,OAAS,EAAGN,EAAEkuB,UAIrC,MAAO,UAAWjvB,EAAGuD,EAAGg5B,EAAIZ,EAAI7C,EAAInsB,GAChC,GAAI8gB,GAAKjsB,EAAGL,EAAGw+B,EAAS5C,EAAM5uB,EAAGsa,EAAMmX,EAAOhS,EAAGiS,EAAIC,EAAKC,EAAMC,EAAMrU,EAAGsU,EAAIC,EAAIC,EAC7EC,EAAIC,EACJpE,EAAUj8B,EAAe,YACzBoW,EAAIpW,EAAK,GAAKuD,EAAK,EAAI,EAAI,GAC3B45B,EAAKn9B,EAAK,EACV89B,EAAKv6B,EAAK,CAGd,MAAM45B,GAAOA,EAAG,IAAOW,GAAOA,EAAG,IAE7B,MAAO,IAAI7B,GAGRj8B,EAAK,GAAMuD,EAAK,IAAO45B,GAAKW,GAAMX,EAAG,IAAMW,EAAG,GAAMA,GAGnDX,GAAe,GAATA,EAAG,KAAYW,EAAS,EAAJ1nB,EAAQA,EAAI,EAHoBxS,IAuBlE,KAhBI+I,GACAgzB,EAAU,EACVn+B,EAAIxB,EAAK,EAAIuD,EAAK,IAElBoJ,EAAO4wB,EACPoC,EAAUnE,EACVh6B,EAAI87B,EAAWt9B,EAAK,EAAI2/B,GAAYrC,EAAW/5B,EAAK,EAAIo8B,IAG5DS,EAAKtC,EAAGz8B,OACR6+B,EAAK/C,EAAG97B,OACRusB,EAAI,GAAIqO,GAAQ7lB,GAChBypB,EAAKjS,EAAK,KAIJzsB,EAAI,EAAG28B,EAAG38B,KAAQg8B,EAAGh8B,IAAM,GAAKA,KAetC,GAbK28B,EAAG38B,IAAOg8B,EAAGh8B,IAAM,IACpBK,IAGO,MAAN+6B,GACDnmB,EAAImmB,EAAKN,EAAmB,UAC5BN,EAAKM,EAAkB,UAEvB7lB,EADO0iB,EACHyD,GAAOv8B,EAAK,EAAIuD,EAAK,GAAM,EAE3Bg5B,EAGC,EAAJnmB,EACDypB,EAAGl3B,KAAK,GACRo0B,GAAO,MACJ,CAOH,GAJA3mB,EAAIA,EAAIupB,EAAU,EAAI,EACtBx+B,EAAI,EAGO,GAANi/B,EAAU,CAMX,IALAjyB,EAAI,EACJ2vB,EAAKA,EAAG,GACR1nB,KAGc8pB,EAAJ/+B,GAAUgN,IAAOiI,IAAKjV,IAC5BwqB,EAAIxd,EAAIxB,GAASwwB,EAAGh8B,IAAM,GAC1B0+B,EAAG1+B,GAAKwqB,EAAImS,EAAK,EACjB3vB,EAAIwd,EAAImS,EAAK,CAGjBf,GAAO5uB,GAAS+xB,EAAJ/+B,MAGT,CAiBH,IAdAgN,EAAIxB,GAASmxB,EAAG,GAAK,GAAM,EAEtB3vB,EAAI,IACL2vB,EAAKyB,EAAiBzB,EAAI3vB,EAAGxB,GAC7BwwB,EAAKoC,EAAiBpC,EAAIhvB,EAAGxB,GAC7ByzB,EAAKtC,EAAGz8B,OACR6+B,EAAK/C,EAAG97B,QAGZ4+B,EAAKG,EACLN,EAAM3C,EAAG1S,MAAO,EAAG2V,GACnBL,EAAOD,EAAIz+B,OAGI++B,EAAPL,EAAWD,EAAIC,KAAU,GAEjCM,EAAKvC,EAAGrT,QACR4V,EAAGjF,QAAQ,GACX+E,EAAMrC,EAAG,GAEJA,EAAG,IAAMnxB,EAAO,GACjBwzB,GAGJ,GACIhyB,GAAI,EAGJsf,EAAMvF,EAAS4V,EAAIgC,EAAKM,EAAIL,GAGjB,EAANtS,GAGDuS,EAAOF,EAAI,GAENM,GAAML,IACPC,EAAOA,EAAOrzB,GAASmzB,EAAI,IAAM,IAIrC3xB,EAAI6xB,EAAOG,EAAM,EAYZhyB,EAAI,GAEAA,GAAKxB,IACNwB,EAAIxB,EAAO,GAIf8b,EAAO8W,EAAiBzB,EAAI3vB,EAAGxB,GAC/BizB,EAAQnX,EAAKpnB,OACb0+B,EAAOD,EAAIz+B,OAGXosB,EAAMvF,EAASO,EAAMqX,EAAKF,EAAOG,GAGrB,GAAPtS,IACDtf,IAGA8X,EAAUwC,EAAWmX,EAALQ,EAAaC,EAAKvC,EAAI8B,EAAOjzB,MAOvC,GAALwB,IACDsf,EAAMtf,EAAI,GAEdsa,EAAOqV,EAAGrT,SAEdmV,EAAQnX,EAAKpnB,OAEA0+B,EAARH,GACDnX,EAAK2S,QAAQ,GAIjBnV,EAAU6Z,EAAKrX,EAAMsX,EAAMpzB,GAGf,IAAP8gB,IACDsS,EAAOD,EAAIz+B,OAGXosB,EAAMvF,EAAS4V,EAAIgC,EAAKM,EAAIL,GAGjB,EAANtS,IACDtf,IAGA8X,EAAU6Z,EAAUC,EAALK,EAAYC,EAAKvC,EAAIiC,EAAMpzB,KAIlDozB,EAAOD,EAAIz+B,QAEK,IAARosB,IACRtf,IACA2xB,GAAO,IAIXD,EAAG1+B,KAAOgN,EAGLsf,GAAOqS,EAAI,GACZA,EAAIC,KAAU5C,EAAG8C,IAAO,GAExBH,GAAQ3C,EAAG8C,IACXF,EAAO,UAGHE,IAAOC,GAAgB,MAAVJ,EAAI,KAAgB1pB,IAE7C2mB,GAAiB,MAAV+C,EAAI,GAITD,EAAG,IACLA,EAAG5Q,QAKX,GAAgB,GAAX0Q,EACD/R,EAAK,EAAIpsB,EACTosB,EAAK,GAAKmP,MACP,CAGH,IAAM57B,EAAI,EAAGiV,EAAIypB,EAAG,GAAIzpB,GAAK,GAAIA,GAAK,GAAIjV,KAC1CysB,EAAK,EAAIzsB,EAAIK,EAAIm+B,EAAU,EAE3B9C,EAAKjP,EAAGkL,EAAKyD,EAAK3O,EAAK,EAAI,EAAI2O,EAAIZ,EAAIoB,GAG3C,MAAOnP,MAyoBf6P,GAAU,WA+GN,QAAS7gC,GAAO0L,GACZ,GAAI5L,GAAGwR,EAAGqe,EACN0P,EAAUjgC,KACVS,EAAI,SACJmC,EAAQq9B,EAAgB,OAAIE,SAAWl5B,UAE3C,OAAKqF,IAAO4F,GAAmB,gBAAP5F,KAErB8zB,EAAmBH,EAAS,kBAAmB3zB,EAAK7L,GAE5Cw/B,IAIJ1P,EAAIjkB,EAAK5L,EAAI,eAAmBwR,KAE3BguB,EAAiB,EAAJ3P,GAASA,EAAI+P,IAAgB19B,EAAM2tB,IAAMA,EAM1D6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,GALrCw/B,EAAQv/B,GAAS,EAAJ6vB,IAUdA,EAAIjkB,EAAK5L,EAAI,cAAkBwR,KAE1BguB,EAAiB,EAAJ3P,GAASA,EAAI,IAAO3tB,EAAM2tB,IAAMA,EAMjD6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,GALrCw/B,EAAQv/B,GAAS,EAAJ6vB,IAUdA,EAAIjkB,EAAK5L,EAAI,cAAkBwR,KAE1BguB,GAAkB0B,EAALrR,GAAkBA,EAAI,IAAO3tB,EAAM2tB,IAAMA,EAM1D6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,GALrCw/B,EAAQv/B,GAAK4gC,EAAU/Q,KAUxBA,EAAIjkB,EAAK5L,EAAI,cAAkBwR,KAE1BguB,EAAiB,EAAJ3P,GAASA,EAAIqR,IAAeh/B,EAAM2tB,IAAMA,EAMzD6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,GALrCw/B,EAAQv/B,GAAK4gC,EAAU/Q,KAUxBA,EAAIjkB,EAAK5L,EAAI,UAAcwR,KAEtBguB,GAAkB0B,EAALrR,GAAkBA,EAAI,IAAO3tB,EAAM2tB,IAAMA,EAM1D6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,GALrCw/B,EAAQv/B,GAAK4gC,EAAU/Q,KAUxBA,EAAIjkB,EAAK5L,EAAI,UAAcwR,KAEtBguB,EAAiB,EAAJ3P,GAASA,EAAIqR,IAAeh/B,EAAM2tB,IAAMA,EAMzD6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,GALrCw/B,EAAQv/B,GAAK4gC,EAAU/Q,KAUxBA,EAAIjkB,EAAK5L,EAAI,YAAgBwR,IAE3Bqe,MAAQA,GAAW,IAANA,GAAiB,IAANA,GACzB2P,EAAa7/B,EAAK,EAClB4/B,EAAQv/B,KAAO6vB,GAIf6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,KAKtC8vB,EAAIjkB,EAAK5L,EAAI,YAAgBwR,IAE3Bqe,MAAQA,GAAW,IAANA,GAAiB,IAANA,EACzB0P,EAAQv/B,MAAS6vB,IAAKmR,GAA2B,gBAAVA,IAIvCtB,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,KAKtC8vB,EAAIjkB,EAAK5L,EAAI,YAAgBwR,KAExBguB,EAAiB,EAAJ3P,GAASA,EAAI,IAAO3tB,EAAM2tB,IAAMA,EAMjD6P,EAAmBH,EAASv/B,EAAG6vB,EAAG9vB,EAAG,GALrCw/B,EAAQv/B,GAAS,EAAJ6vB,IAUdjkB,EAAMA,EAAK5L,EAAI,YAAgBwR,IAEf,gBAAP5F,GACR2zB,EAAQv/B,GAAK4L,EAIb8zB,EAAmBH,EAAS,yBAA0B3zB,EAAK7L,IAI5Dw/B,GAmBX,QAAS1W,GAAIpX,GAAK,MAAO,IAAInS,MAAKmS,GAAQ,MAkB1C,QAASnK,GAAGmK,GAAK,MAAO,IAAInS,MAAKmS,GAAO,KAaxC,QAAShB,GAAKnN,EAAGuD,GAAM,MAAO,IAAIvH,MAAKgE,GAAQ,IAAEuD,GAMjD,QAAS+8B,GAAUrE,EAASr0B,EAAM24B,GAC9B,GAAI/jC,GAAG2R,EACHhN,EAAI,CAQR,KANiC,kBAA5BoG,EAAShL,KAAMqL,EAAK,MACrBA,EAAOA,EAAK,IAGhBpL,EAAI,GAAIy/B,GAASr0B,EAAK,MAEZzG,EAAIyG,EAAKvG,QAAU,CAGzB,GAFA8M,EAAI,GAAI8tB,GAASr0B,EAAKzG,KAEhBgN,EAAK,EAAI,CACX3R,EAAI2R,CAEJ,OACQ3R,EAAE+jC,GAAMpyB,KAChB3R,EAAI2R,GAIZ,MAAO3R,GAUX,QAAS8C,KAAQ,MAAOghC,GAAUtkC,KAAMmH,UAAW,MASnD,QAAS3D,KAAQ,MAAO8gC,GAAUtkC,KAAMmH,UAAW,MAyNnD,QAAS2M,GAAK9P,EAAGuD,GAAM,MAAO,IAAIvH,MAAKgE,GAAQ,IAAEuD,GAWjD,QAASykB,GAAO8Q,GACZ,GAAI/3B,GAAGoN,EAAGoe,EACNprB,EAAI,EACJmE,KACA22B,EAAUjgC,KACVwkC,EAAO,GAAIvE,GAASA,EAAa,IAUrC,IARW,MAANnD,GAAeuD,EAAUmE,EAAM1H,EAAI,UAGpCA,GAAM,EAFNA,EAAKmD,EAAmB,UAK5B9tB,EAAIlM,KAAKmG,KAAM0wB,EAAK0C,GAEfS,EAAgB,OAGjB,GAAKyB,GAAUA,EAAwB,gBAInC,IAFA38B,EAAI28B,EAAwB,gBAAG,GAAI+C,aAAYtyB,IAEnCA,EAAJhN,GACJorB,EAAIxrB,EAAEI,GAIDorB,GAAK,MAENxrB,EAAEI,GAAKu8B,EAAwB,gBAAG,GAAI+C,aAAY,IAAK,GAKvDn7B,EAAEnE,KAAOorB,EAAI,QAKlB,IAAKmR,GAAUA,EAAoB,YAAI,CAK1C,IAFA38B,EAAI28B,EAAoB,YAAGvvB,GAAK,GAEpBA,EAAJhN,GAGJorB,EAAIxrB,EAAEI,IAAOJ,EAAEI,EAAI,IAAM,IAAQJ,EAAEI,EAAI,IAAM,MAC1B,IAAXJ,EAAEI,EAAI,KAAe,IAGxBorB,GAAK,MACNmR,EAAoB,YAAE,GAAGgD,KAAM3/B,EAAGI,IAKlCmE,EAAEqD,KAAM4jB,EAAI,KACZprB,GAAK,EAGbA,GAAIgN,EAAI,MAGRiuB,GAAmBH,EAAS,qBAAsByB,EAAQ,SAKlE,KAAKv8B,EAED,KAAYgN,EAAJhN,GACJmE,EAAEnE,KAAuB,IAAhBc,KAAK+lB,SAAiB,CAcvC,KAVA7Z,EAAI7I,IAAInE,GACR23B,GAAM0C,EAGDrtB,GAAK2qB,IACNvM,EAAIuP,EAAS,GAAIN,EAAU1C,GAC3BxzB,EAAEnE,IAAOgN,EAAIoe,EAAI,GAAMA,GAIV,IAATjnB,EAAEnE,GAAUA,IAChBmE,EAAEyrB,KAIN,IAAS,EAAJ5vB,EACDmE,GAAM6I,EAAI,OACP,CAIH,IAHAA,EAAI,GAGa,IAAT7I,EAAE,IACNA,EAAE2pB,QACF9gB,GAAKqtB,CAIT,KAAMr6B,EAAI,EAAGorB,EAAIjnB,EAAE,GAAIinB,GAAK,IACxBA,GAAK,GACLprB,GAIKq6B,GAAJr6B,IACDgN,GAAKqtB,EAAUr6B,GAOvB,MAHAq/B,GAAQ,EAAIryB,EACZqyB,EAAQ,EAAIl7B,EAELk7B,EAkCX,QAASt8B,GAAKiK,GAAK,MAAO,IAAInS,MAAKmS,GAAS,OAyB5C,QAASwyB,GAAer4B,GAUpB,QAAS2zB,GAAS9tB,EAAGnN,GACjB,GAAIhB,GAAIhE,IAGR,MAAQgE,YAAai8B,IAGjB,MAFAG,GAAmBH,EAAS,6BAA8B9tB,GAEnD,GAAI8tB,GAAS9tB,EAAGnN,EAQ3B,IAHAhB,EAAe,YAAIi8B,EAGd9tB,YAAa8tB,GAAU,CAExB,GAAU,MAALj7B,EAMD,MALA3E,GAAK,EACL2D,EAAK,EAAImO,EAAK,EACdnO,EAAK,EAAImO,EAAK,EACdnO,EAAK,GAAMmO,EAAIA,EAAK,GAAMA,EAAEsc,QAAUtc,EAE/BnO,CACJ,IAAU,IAALgB,EAER,MAAO67B,GAAK,GAAIZ,GAAQ9tB,GAAI8tB,EAAmB,UAAGA,EAAkB,SAEpE9tB,IAAK,GAIb,MAAOyyB,GAAc3E,EAASj8B,EAAGmO,EAAGnN,GAiJxC,MAjIAi7B,GAAmB,UAAI,GAmBvBA,EAAkB,SAAI,EAoBtBA,EAAgB,OAAI,EAIpBA,EAAkB,SAAI,GAItBA,EAAkB,SAAI,GAItBA,EAAc,MAAK2B,EAInB3B,EAAc,KAAI2B,EAGlB3B,EAAgB,QAAI,EAGpBA,EAAgB,QAAI,EAGpBA,EAAQ75B,QACJy+B,iBAAkB,IAClBvC,eAAgB,IAChBwC,UAAW,EACXC,mBAAoB,EACpBC,uBAAwB,IACxBC,kBAAmB,GAOvBhF,EAAQn+B,UAAYgQ,EAEpBmuB,EAAa,IAAI,GAAIA,GAAQ,GAS7BA,EAAkB,SAAI,EACtBA,EAAoB,WAAI,EACxBA,EAAoB,WAAI,EACxBA,EAAqB,YAAI,EACzBA,EAAuB,cAAI,EAC3BA,EAAyB,gBAAI,EAC7BA,EAAyB,gBAAI,EAC7BA,EAAyB,gBAAI,EAC7BA,EAA0B,iBAAI,EAG9BA,EAAgB,OAAI,EAepBA,EAAgB,OAAIr/B,EACpBq/B,EAAqB,YAAI0E,EACzB1E,EAAa,IAAI1W,EACjB0W,EAAY,GAAIj4B,EAChBi4B,EAAa,IAAI9uB,EACjB8uB,EAAa,IAAI38B,EACjB28B,EAAa,IAAIz8B,EACjBy8B,EAAa,IAAInsB,EACjBmsB,EAAc,KAAI/3B,EAClB+3B,EAAgB,OAAIjU,EAER,MAAP1f,GACD2zB,EAAgB,OAAE3zB,GAGf2zB,EAzkBX,GAAI2E,GAAe,WACf,GAAIM,GAAU,uCACVC,EAAO5gC,OAAOzC,UAAUqjC,MACtB,WAAc,MAAOnlC,MAAKkH,QAAQ,aAAc,IAEtD,OAAO,UAAW+4B,EAASj8B,EAAGmO,EAAGnN,GAC7B,GAAIiN,GAAGzM,EAAGL,EAAGigC,EAAOC,EAAMthB,CAU1B,IARiB,gBAAL5R,KAGRA,GAAMizB,EAAoB,gBAALjzB,IAAqC,mBAApB5G,EAAShL,KAAK4R,KAC1C,IAANA,GAAmB,EAAR,EAAIA,EAAQ,KAAOA,EAAI,IAE1CkzB,EAAOlzB,EAEG,MAALnN,GAAakgC,EAAQpX,KAAK3b,GAG3BnO,EAAK,EAAwB,KAApBmO,EAAEstB,WAAW,IAActtB,EAAIA,EAAEsc,MAAM,GAAI,IAAO,MAGxD,CAMH,GAAU,IAALzpB,EAED,MAAO67B,GAAK,GAAIZ,GAAQ9tB,GAAI8tB,EAAmB,UAAGA,EAAkB,SAoDxE,IAjDA9tB,EAAIgzB,EAAK5kC,KAAK4R,GAAGjL,QAAS,WAAY,IAEtClD,EAAK,EAAwB,KAApBmO,EAAEstB,WAAW,IAActtB,EAAIA,EAAEjL,QAAS,UAAW,IAAM,IAAO,EAEjE,MAALlC,EAEMA,IAAU,EAAJA,IAAWi7B,EAAgB,SACnCC,IAAgBl7B,GAAK,GAAS,GAAJA,KAiC3Bo7B,EAAmBH,EAAS,OAAQj7B,EAAG,EAAG,GAG1C+e,EAAQmhB,EAAQpX,KAAK3b,KAnCrBF,EAAI,IAAM0vB,EAASlT,MAAO,EAAGzpB,EAAQ,EAAJA,GAAU,KAG3CmN,EAAIA,EAAEjL,QAAS,MAAO,IAAKA,QAAS,MAAO,OAGtC6c,EAAQ,GAAIrf,QACf,IAAMuN,EAAI,SAAWA,EAAI,MAAW,GAAJjN,EAAS,IAAM,IAAK8oB,KAAK3b,KAEnDizB,IAEKjzB,EAAEjL,QAAS,YAAa,IAAK7B,OAAS,IAGvC+6B,EAAmBH,EAAS,EAAGoF,GAInCD,GAASA,GAEbjzB,EAAIqvB,EAAavB,EAAS9tB,EAAG,GAAInN,EAAGhB,EAAK,IAE5B,YAALmO,GAAwB,OAALA,IAG3BiuB,EAAmBH,EAAS,cAAgBj7B,EAAI,UAAWqgC,GAC3DlzB,EAAI,QAYZ4R,EAAQmhB,EAAQpX,KAAK3b,IAGnB4R,EAkBF,MAfA/f,GAAK,EAAIA,EAAK,EAAI,KAGR,YAALmO,IAGS,OAALA,GAGDiuB,EAAmBH,EAAS,eAAgBoF,GAEhDrhC,EAAK,EAAI,MAEb3D,EAAK,EAEE2D,EA0Bf,KArBOwB,EAAI2M,EAAEiwB,QAAQ,MAAS,KAC1BjwB,EAAIA,EAAEjL,QAAS,IAAK,MAIjB/B,EAAIgN,EAAEwc,OAAO,OAAU,GAGjB,EAAJnpB,IACDA,EAAIL,GAERK,IAAM2M,EAAEsc,MAAOtpB,EAAI,GACnBgN,EAAIA,EAAEzH,UAAW,EAAGvF,IAER,EAAJK,IAGRA,EAAI2M,EAAE9M,QAIJF,EAAI,EAAuB,KAApBgN,EAAEstB,WAAWt6B,GAAWA,KAGrC,IAAMH,EAAImN,EAAE9M,OAA8B,KAAtB8M,EAAEstB,aAAaz6B,KAInC,GAFAmN,EAAIA,EAAEsc,MAAOtpB,EAAGH,EAAI,GAEb,CAwBH,GAvBAA,EAAImN,EAAE9M,OAGD+/B,GAASpgC,EAAI,IAGdo7B,EAAmBH,EAAS,EAAGoF,GAGnCrhC,EAAK,EAAIwB,EAAIA,EAAIL,EAAI,EACrBnB,EAAK,KAMLmB,GAAMK,EAAI,GAAMg6B,EAEP,EAAJh6B,IACDL,GAAKq6B,GAIAx6B,EAAJG,EAAQ,CAMT,IAJIA,GACAnB,EAAK,EAAE2I,MAAOwF,EAAEsc,MAAO,EAAGtpB,IAGxBH,GAAKw6B,EAAax6B,EAAJG,GAChBnB,EAAK,EAAE2I,MAAOwF,EAAEsc,MAAOtpB,EAAGA,GAAKq6B,GAGnCrtB,GAAIA,EAAEsc,MAAMtpB,GACZA,EAAIq6B,EAAUrtB,EAAE9M,WAEhBF,IAAKH,CAGT,MAAQG,IAAKgN,GAAK,KAElBnO,EAAK,EAAE2I,MAAOwF,GAEVyuB,IAGK58B,EAAK,EAAIi8B,EAAc,KAGxBj8B,EAAK,EAAIA,EAAK,EAAI,KAGVA,EAAK,EAAIi8B,EAAc,OAG/Bj8B,EAAK,GAAMA,EAAK,EAAI,SAM5BA,GAAK,GAAMA,EAAK,EAAI,EAIxB,OAFA3D,GAAK,EAEE2D,KAqYf,OAAO2gC,QAULtF,EAAgC,WAC9B,MAAOoC,IACTlhC,KAAKX,EAASM,EAAqBN,EAASC,KAA2CoE,SAAlCo7B,IAAgDx/B,EAAOD,QAAUy/B,KAyB7Hr/B,OAKE,SAASH,GAEd,YAWA,SAAS+I,GAAelD,EAAI4/B,EAAO9hC,EAAKF,GACtC,KAAMtD,eAAgB4I,IACpB,KAAM,IAAIM,aAAY,mDAGxBlJ,MAAK0F,GAAKA,EACV1F,KAAKslC,MAAQA,EACbtlC,KAAKwD,IAAMA,EACXxD,KAAKsD,IAAMA,EAEXtD,KAAKynB,QAAU,yCAA2C/hB,EACtD,KAAO4/B,EAAQ,cACf9hC,GAAeS,QAAPX,EAAqB,IAAMA,EAAO,IAAM,aAEpDtD,KAAKulC,OAAQ,GAAKzkC,QAASykC,MAG7B38B,EAAe9G,UAAY,GAAIhB,OAC/B8H,EAAe9G,UAAUD,YAAcf,MACvC8H,EAAe9G,UAAUwN,KAAO,iBAEhCzP,EAAOD,QAAUgJ,GAKZ,SAAS/I,GAEd,YAWA,SAASgJ,GAAe28B,EAAQC,EAAUC,GACxC,KAAM1lC,eAAgB6I,IACpB,KAAM,IAAIK,aAAY,mDAGxBlJ,MAAKwlC,OAAWA,EAChBxlC,KAAKylC,SAAWA,EAChBzlC,KAAK0lC,SAAWA,EAEhB1lC,KAAKynB,QAAU,wBACVvjB,MAAMC,QAAQqhC,GAAW,IAAMA,EAAOl4B,KAAK,MAAQ,IAAOk4B,GAC3D,KAAOxlC,KAAK0lC,UAAY,MAAQ,KAC/BxhC,MAAMC,QAAQshC,GAAa,IAAMA,EAASn4B,KAAK,MAAQ,IAAOm4B,GAC/D,IAEJzlC,KAAKulC,OAAQ,GAAKzkC,QAASykC,MAG7B18B,EAAe/G,UAAY,GAAIuuB,YAC/BxnB,EAAe/G,UAAUD,YAAcwuB,WACvCxnB,EAAe/G,UAAUwN,KAAO,iBAEhCzP,EAAOD,QAAUiJ,GAKZ,SAAShJ,GAEd,YAYA,SAASiJ,GAAW1F,EAAOI,EAAKF,GAC9B,KAAMtD,eAAgB8I,IACpB,KAAM,IAAII,aAAY,mDAGxBlJ,MAAKoD,MAAQA,EACT+D,UAAU9B,OAAS,GACrBrF,KAAKwD,IAAM,EACXxD,KAAKsD,IAAME,IAGXxD,KAAKwD,IAAMA,EACXxD,KAAKsD,IAAMA,GAIXtD,KAAKynB,QADUxjB,SAAbjE,KAAKwD,KAAqBxD,KAAKoD,MAAQpD,KAAKwD,IAC/B,uBAAyBxD,KAAKoD,MAAQ,MAAQpD,KAAKwD,IAAM,IAEpDS,SAAbjE,KAAKsD,KAAqBtD,KAAKoD,OAASpD,KAAKsD,IACrC,uBAAyBtD,KAAKoD,MAAQ,OAASpD,KAAKsD,IAAM,GAAK,IAG/D,uBAAyBtD,KAAKoD,MAAQ,IAGvDpD,KAAKulC,OAAQ,GAAKzkC,QAASykC,MAG7Bz8B,EAAWhH,UAAY,GAAIuuB,YAC3BvnB,EAAWhH,UAAUD,YAAcwuB,WACnCvnB,EAAWhH,UAAUwN,KAAO,aAE5BzP,EAAOD,QAAUkJ,GAKZ,SAASjJ,GAEd,YASA,SAASkJ,GAAqBrD,GAC5B,KAAM1F,eAAgB+I,IACpB,KAAM,IAAIG,aAAY,mDAGxBlJ,MAAK0F,GAAKA,EACV1F,KAAK0N,MAAQxJ,MAAMpC,UAAU6jC,OAAOplC,KAAK4G,UAAW,GAOhDnH,KAAKynB,QALJ/hB,EAIsB,GAArB1F,KAAK0N,MAAMrI,OACE,4CAA8CK,EAG9C,YAAcA,EAAK,IAAM1F,KAAK0N,MAAMJ,KAAK,MAAQ,kBAPnD,+BAWjBtN,KAAKulC,OAAQ,GAAKzkC,QAASykC,MAG7Bx8B,EAAqBjH,UAAY,GAAI6C,WACrCoE,EAAqBjH,UAAUD,YAAc8C,UAC7CoE,EAAqBjH,UAAUwN,KAAO,uBAEtCzP,EAAOD,QAAUmJ,GAKZ,SAASlJ,EAAQD,EAASM,GAE/B,YAEAN,GAAQ+L,MAAQzL,EAAoB,KACpCN,EAAQ,WAAaM,EAAoB,KACzCN,EAAQsB,OAAShB,EAAoB,GACrCN,EAAQ8H,UAAYxH,EAAoB,KACxCN,EAAQ0B,OAASpB,EAAoB,GACrCN,EAAQyK,OAASnK,EAAoB,KACrCN,EAAQ8N,MAAQxN,EAAoB,MAK/B,SAASL,EAAQD,EAASM,GAE/B,YAiBA,SAASihB,GAAUc,GACjB,KAAMjiB,eAAgBmhB,IACpB,KAAM,IAAIjY,aAAY,mDAMxB,IAHAlJ,KAAKiiB,MAAQA,OAGR9d,EAAQnE,KAAKiiB,SAAWjiB,KAAKiiB,MAAM2jB,MAAMC,GAC5C,KAAM,IAAIlhC,WAAU,mCAxBxB,GAAIgd,GAAOzhB,EAAoB,KAE3BmK,GADSnK,EAAoB,GACpBA,EAAoB,MAI7BiE,GAHajE,EAAoB,IAC1BA,EAAoB,KAEjBgE,MAAMC,SAChB0hC,EAASlkB,EAAKkkB,MAqBlB1kB,GAAUrf,UAAY,GAAI6f,GAE1BR,EAAUrf,UAAUN,KAAO,YAS3B2f,EAAUrf,UAAUgkC,SAAW,SAAUC,GACvC,GAAIhT,GAA0C,UAA9BgT,EAAKhlC,KAAKH,SAASK,OAE/BghB,EAAQjiB,KAAKiiB,MAAM5e,IAAI,SAAUV,GACnC,MAAOA,GAAKmjC,SAASC,IAGvB,QAAQhT,EAAW,gBAAkB,KACjC9Q,EAAM3U,KAAK,MACVylB,EAAW,KAAO,MAOzB5R,EAAUrf,UAAUqB,QAAU,SAAUkJ,GACtC,IAAK,GAAIlH,GAAI,EAAGA,EAAInF,KAAKiiB,MAAM5c,OAAQF,IAAK,CAC1C,GAAIxC,GAAO3C,KAAKiiB,MAAM9c,EACtBkH,GAAS1J,EAAM,SAAWwC,EAAI,IAAKnF,QAUvCmhB,EAAUrf,UAAUuB,IAAM,SAAUgJ,GAElC,IAAK,GADD4V,MACK9c,EAAI,EAAGA,EAAInF,KAAKiiB,MAAM5c,OAAQF,IACrC8c,EAAM9c,GAAKnF,KAAKgmC,QAAQ35B,EAASrM,KAAKiiB,MAAM9c,GAAI,SAAWA,EAAI,IAAKnF,MAEtE,OAAO,IAAImhB,GAAUc,IAOvBd,EAAUrf,UAAUF,MAAQ,WAC1B,MAAO,IAAIuf,GAAUnhB,KAAKiiB,MAAMwM,MAAM,KAQxCtN,EAAUrf,UAAUyJ,SAAW,WAC7B,MAAOlB,GAAOjE,OAAOpG,KAAKiiB,QAO5Bd,EAAUrf,UAAUmkC,MAAQ,SAASzkC,GACnCA,EAAOA,GAAQ,SACf,IAAI4Y,GAAI,WAAa5Y,EAAO,GAgB5B,OAdAxB,MAAKiiB,MAAM9e,QAAQ,SAASR,GAExByX,GADEzX,EAAKsf,MACFtf,EAAKsf,MAAM5e,IAAI,SAAS6iC,GAC3B,MAAOA,GAAUD,UAChB34B,KAAK,KAGH3K,EAAKsjC,QAIZ7rB,GAAK,SAEPA,GAAK,SAAW5Y,EAAO,KAIzB3B,EAAOD,QAAUuhB,GAKZ,SAASthB,EAAQD,EAASM,GAE/B,YAkBA,SAASkhB,GAAe9R,EAAMsQ,GAC5B,KAAM5f,eAAgBohB,IACpB,KAAM,IAAIlY,aAAY,mDAIxB,KAAKkB,EAASkF,GAAgB,KAAM,IAAI3K,WAAU,uCAClD,MAAMib,YAAgB+B,IAAQ,KAAM,IAAIhd,WAAU,qCAClD,IAAI2K,IAAQ62B,GAAkB,KAAM,IAAIrlC,OAAM,yBAA4BwO,EAAQ,0BAElFtP,MAAKsP,KAAOA,EACZtP,KAAK4f,KAAOA,EA3Bd,GAAI+B,GAAOzhB,EAAoB,KAC3BihB,EAAYjhB,EAAoB,KAEhCimC,EAAWjmC,EAAoB,KAE/BkmC,EAAQlmC,EAAoB,KAC5BkK,EAAWlK,EAAoB,KAAKkK,QAwBxCgX,GAAetf,UAAY,GAAI6f,GAE/BP,EAAetf,UAAUN,KAAO,iBAShC4f,EAAetf,UAAUgkC,SAAW,SAAUC,GAC5C,MAAO,UAAY/lC,KAAKsP,KAAO,QAAUtP,KAAK4f,KAAKkmB,SAASC,IAQ9D3kB,EAAetf,UAAUqB,QAAU,SAAUkJ,GAC3CA,EAASrM,KAAK4f,KAAM,OAAQ5f,OAS9BohB,EAAetf,UAAUuB,IAAM,SAAUgJ,GACvC,MAAO,IAAI+U,GAAephB,KAAKsP,KAAMtP,KAAKgmC,QAAQ35B,EAASrM,KAAK4f,KAAM,OAAQ5f,SAOhFohB,EAAetf,UAAUF,MAAQ,WAC/B,MAAO,IAAIwf,GAAephB,KAAKsP,KAAMtP,KAAK4f,OAO5CwB,EAAetf,UAAUyJ,SAAW,WAClC,MAAOvL,MAAKsP,KAAO,MAAQtP,KAAK4f,KAAKrU,YAOvC6V,EAAetf,UAAUmkC,MAAQ,WAC/B,GAAII,EAIJ,OAHIrmC,MAAK4f,eAAgBuB,KACvBklB,GAAS,YAAa,MAEjBD,EAAME,UAAUF,EAAMG,SAASvmC,KAAKsP,MAAO+2B,GAAS,IACvDD,EAAME,UAAUtmC,KAAK4f,KAAKqmB,UAGhCpmC,EAAOD,QAAUwhB,GAIZ,SAASvhB,EAAQD,EAASM,GAE/B,YAeA,SAASmhB,GAAUuC,GACjB,KAAM5jB,eAAgBqhB,IACpB,KAAM,IAAInY,aAAY,mDAIxB,KAAKhF,MAAMC,QAAQyf,GAAS,KAAM,IAAI9iB,OAAM,iBAC5Cd,MAAK4jB,OAASA,EAAOvgB,IAAI,SAAUmjC,GACjC,GAAI7jC,GAAU6jC,GAASA,EAAM7jC,KACzBghB,EAAU6iB,GAA2BviC,SAAlBuiC,EAAM7iB,QAAwB6iB,EAAM7iB,SAAU,CAErE,MAAMhhB,YAAgBgf,IAAQ,KAAM,IAAIhd,WAAU,iCAClD,KAAKipB,EAAUjK,GAAe,KAAM,IAAIhf,WAAU,uCAElD,QACEhC,KAAMA,EACNghB,QAASA,KA7Bf,GAAIhC,GAAOzhB,EAAoB,KAC3BsC,EAAYtC,EAAoB,IAChC0tB,EAAY1tB,EAAoB,KAAK0tB,SAgCzCvM,GAAUvf,UAAY,GAAI6f,GAE1BN,EAAUvf,UAAUN,KAAO,YAU3B6f,EAAUvf,UAAUgkC,SAAW,SAAUC,GACvCA,EAAKvjC,UAAYA,CACjB,IAAIohB,GAAS5jB,KAAK4jB,OAAOvgB,IAAI,SAAUojC,GACrC,GAAIC,GAAKD,EAAM9jC,KAAKmjC,SAASC,EAC7B,OAAIU,GAAM9iB,QACD,gBAAkB+iB,EAAK,KAGvBA,EAAK,KAIhB,OAAO,kCAEH9iB,EAAOtW,KAAK,IACZ,sCAQN+T,EAAUvf,UAAUqB,QAAU,SAAUkJ,GACtC,IAAK,GAAIlH,GAAI,EAAGA,EAAInF,KAAK4jB,OAAOve,OAAQF,IACtCkH,EAASrM,KAAK4jB,OAAOze,GAAGxC,KAAM,UAAYwC,EAAI,SAAUnF,OAU5DqhB,EAAUvf,UAAUuB,IAAM,SAAUgJ,GAElC,IAAK,GADDuX,MACKze,EAAI,EAAGA,EAAInF,KAAK4jB,OAAOve,OAAQF,IAAK,CAC3C,GAAIqhC,GAAQxmC,KAAK4jB,OAAOze,GACpBxC,EAAO3C,KAAKgmC,QAAQ35B,EAASm6B,EAAM7jC,KAAM,UAAYwC,EAAI,SAAUnF,MACvE4jB,GAAOze,IACLxC,KAAMA,EACNghB,QAAS6iB,EAAM7iB,SAGnB,MAAO,IAAItC,GAAUuC,IAOvBvC,EAAUvf,UAAUF,MAAQ,WAC1B,GAAIgiB,GAAS5jB,KAAK4jB,OAAOvgB,IAAI,SAASmjC,GACpC,OACE7jC,KAAM6jC,EAAM7jC,KACZghB,QAAS6iB,EAAM7iB,UAInB,OAAO,IAAItC,GAAUuC,IAQvBvC,EAAUvf,UAAUyJ,SAAW,WAC7B,MAAOvL,MAAK4jB,OAAOvgB,IAAI,SAAUojC,GAC/B,MAAOA,GAAM9jC,KAAK4I,YAAck7B,EAAM9iB,QAAU,GAAK,OACpDrW,KAAK,OAOV+T,EAAUvf,UAAUmkC,MAAQ,WAC1B,MAAOjmC,MAAK4jB,OAAOvgB,IAAI,SAAUojC,GAC/B,MAAOA,GAAM9jC,KAAKsjC,SAAWQ,EAAM9iB,QAAU,GAAK,OACjDrW,KAAK,OAGVzN,EAAOD,QAAUyhB,GAKZ,SAASxhB,EAAQD,EAASM,GAE/B,YAsBA,SAASohB,GAAiB6C,EAAWC,EAAUC,GAC7C,KAAMrkB,eAAgBshB,IACpB,KAAM,IAAIpY,aAAY,mDAExB,MAAMib,YAAqBxC,IAAO,KAAM,IAAIhd,WAAU,qCACtD,MAAMyf,YAAoBzC,IAAQ,KAAM,IAAIhd,WAAU,oCACtD,MAAM0f,YAAqB1C,IAAO,KAAM,IAAIhd,WAAU,qCAEtD3E,MAAKmkB,UAAYA,EACjBnkB,KAAKokB,SAAWA,EAChBpkB,KAAKqkB,UAAYA,EA9BnB,GAAI1C,GAAOzhB,EAAoB,KAC3BkmC,EAAQlmC,EAAoB,KAC5BuB,EAAYvB,EAAoB,KAChCgC,EAAUhC,EAAoB,GAC9BoC,EAAOpC,EAAoB,IAC3BgK,EAAOhK,EAAoB,KAC3BkK,EAAWF,EAAKG,OAAOD,SACvBrE,EAAWmE,EAAKhJ,OAAO6E,SACvB6nB,EAAY1jB,EAAK,WAAW0jB,SAyBhCtM,GAAgBxf,UAAY,GAAI6f,GAEhCL,EAAgBxf,UAAUN,KAAO,kBAUjC8f,EAAgBxf,UAAUgkC,SAAW,SAASC,GA8B5C,MAxBAA,GAAKY,cAAgB,SAAUxiB,GAC7B,GAAIpe,EAASoe,IAAcyJ,EAAUzJ,IAAc/Z,EAAS+Z,GAC1D,MAAOA,IAAY,GAAO,CAG5B,IAAIA,YAAqB1iB,GACvB,MAAO0iB,GAAUqL,UAAW,GAAQ,CAGtC,IAAIrL,YAAqBjiB,GACvB,MAAQiiB,GAAUnb,IAAMmb,EAAUlb,IAAM,GAAO,CAGjD,IAAIkb,YAAqB7hB,GACvB,MAAO6hB,GAAU/f,OAAQ,GAAO,CAGlC,IAAkB,OAAd+f,GAAoClgB,SAAdkgB,EACxB,OAAO,CAGT,MAAM,IAAIxf,WAAU,kCAAoCohC,EAAKhlC,KAAK,UAAUojB,GAAa,MAIvF,iBAAmBnkB,KAAKmkB,UAAU2hB,SAASC,GAAQ,SAC5C/lC,KAAKokB,SAAS0hB,SAASC,GAAQ,SAC/B/lC,KAAKqkB,UAAUyhB,SAASC,GAAQ,KAQ7CzkB,EAAgBxf,UAAUqB,QAAU,SAAUkJ,GAC5CA,EAASrM,KAAKmkB,UAAW,YAAankB,MACtCqM,EAASrM,KAAKokB,SAAU,WAAYpkB,MACpCqM,EAASrM,KAAKqkB,UAAW,YAAarkB,OASxCshB,EAAgBxf,UAAUuB,IAAM,SAAUgJ,GACxC,MAAO,IAAIiV,GACPthB,KAAKgmC,QAAQ35B,EAASrM,KAAKmkB,UAAW,YAAankB,OACnDA,KAAKgmC,QAAQ35B,EAASrM,KAAKokB,SAAU,WAAYpkB,OACjDA,KAAKgmC,QAAQ35B,EAASrM,KAAKqkB,UAAW,YAAarkB,SAQzDshB,EAAgBxf,UAAUF,MAAQ,WAChC,MAAO,IAAI0f,GAAgBthB,KAAKmkB,UAAWnkB,KAAKokB,SAAUpkB,KAAKqkB,YAOjE/C,EAAgBxf,UAAUyJ,SAAW,WAEnC,MAAO,IAAMvL,KAAKmkB,UAAU5Y,WAAa,QACrCvL,KAAKokB,SAAS7Y,WAAa,QAC3BvL,KAAKqkB,UAAU9Y,WAAa,KAOlC+V,EAAgBxf,UAAUmkC,MAAQ,WAChC,GAAI7rB,GACAgsB,EAAME,UAAUtmC,KAAKokB,SAAS6hB,SAC9B,YACAG,EAAME,UAAU,gBAAkBtmC,KAAKmkB,UAAU8hB,SAC7C,QACJG,EAAME,UAAUtmC,KAAKqkB,UAAU4hB,SAC/B,YACAG,EAAME,UAAU,qBAGpB,OAAOF,GAAME,UAAUlsB,GACrB,+BACA,0BAIJva,EAAOD,QAAU0hB,GAKZ,SAASzhB,EAAQD,EAASM,GAE/B,YAqCA,SAASqhB,GAAand,EAAOwiC,GAC3B,KAAM5mC,eAAgBuhB,IACpB,KAAM,IAAIrY,aAAY,mDAGxB,IAAI09B,EAAW,CACb,IAAKx8B,EAASw8B,GACZ,KAAM,IAAIjiC,WAAU,4CAEtB,KAAKyF,EAAShG,GACZ,KAAM,IAAIO,WAAU,wCAGtB3E,MAAKoE,MAAQA,EACbpE,KAAK4mC,UAAYA,MAIjB5mC,MAAKoE,MAAQA,EAAQ,GACrBpE,KAAK4mC,UAAYplC,EAAK4C,EAGxB,KAAKyiC,EAAgB7mC,KAAK4mC,WACxB,KAAM,IAAIjiC,WAAU,8BAAgC3E,KAAK4mC,UAAY,KA1DzE,GAAIjlB,GAAOzhB,EAAoB,KAE3BsB,GADYtB,EAAoB,KACzBA,EAAoB,KAAKsB,MAChC4I,EAAWlK,EAAoB,KAAKkK,SA2DpCy8B,GACF3lC,QAAU,EACVmJ,QAAU,EACVy8B,WAAW,EACX7iC,WAAa,EACb8iC,QAAQ,EAGVxlB,GAAazf,UAAY,GAAI6f,GAE7BJ,EAAazf,UAAUN,KAAO,eAU9B+f,EAAazf,UAAUgkC,SAAW,SAAUC,GAC1C,OAAQ/lC,KAAK4mC,WACX,IAAK,SACH,MAAkC,cAA9Bb,EAAKhlC,KAAKH,SAASM,OACd,mBAAqBlB,KAAKoE,MAAQ,KAIlCpE,KAAKoE,MAAM8C,QAAQ,aAAc,SAAU8/B,EAAOtb,GACvD,MAAOsb,GAAMt8B,UAAUghB,EAAMrmB,SAInC,KAAK,SACH,MAAO,IAAMrF,KAAKoE,MAAQ,GAE5B,KAAK,UACH,MAAOpE,MAAKoE,KAEd,KAAK,YACH,MAAOpE,MAAKoE,KAEd,KAAK,OACH,MAAOpE,MAAKoE,KAEd,SAEE,KAAM,IAAIO,WAAU,iCAAmC3E,KAAK4mC,UAAY,OAQ9ErlB,EAAazf,UAAUqB,QAAU,aAWjCoe,EAAazf,UAAUuB,IAAM,WAC3B,MAAOrD,MAAK4B,SAOd2f,EAAazf,UAAUF,MAAQ,WAC7B,MAAO,IAAI2f,GAAavhB,KAAKoE,MAAOpE,KAAK4mC,YAO3CrlB,EAAazf,UAAUyJ,SAAW,WAChC,OAAQvL,KAAK4mC,WACX,IAAK,SACH,MAAO,IAAM5mC,KAAKoE,MAAQ,GAE5B,SACE,MAAOpE,MAAKoE,QAQlBmd,EAAazf,UAAUmkC,MAAQ,WAC7B,GACI7iC,GADAgB,EAAQpE,KAAKoE,KAEjB,QAAQpE,KAAK4mC,WACX,IAAK,SACH,MAAO,UAAYxiC,EAAQ,GAE7B,KAAK,SAEH,MADAhB,GAAQgB,EAAMquB,cAAc2P,QAAQ,KACtB,KAAVh/B,EACKgB,EAAMsG,UAAU,EAAGtH,GAAS,eAC/BgB,EAAMsG,UAAUtH,EAAQ,GAAK,IAE5BgB,CAET,SACE,MAAOA,KAIbvE,EAAOD,QAAU2hB,GAKZ,SAAS1hB,EAAQD,EAASM,GAE/B,YAqBA,SAASshB,GAAWlgB,EAAQyL,GAC1B,KAAM/M,eAAgBwhB,IACpB,KAAM,IAAItY,aAAY,mDAIxB,MAAM5H,YAAkBqgB,IAAO,KAAM,IAAIhd,WAAU,uCACnD,KAAKR,EAAQ4I,KAAYA,EAAO64B,MAAMC,GACpC,KAAM,IAAIlhC,WAAU,yDAGtB3E,MAAKsB,OAASA,EACdtB,KAAK+M,OAASA,EA/BhB,GAAI4U,GAAOzhB,EAAoB,KAC3B2hB,EAAY3hB,EAAoB,KAChC4hB,EAAa5hB,EAAoB,KAEjCuB,EAAYvB,EAAoB,KAChCiC,EAAQjC,EAAoB,GAE5B2lC,EAASlkB,EAAKkkB,OACd1hC,EAAUD,MAAMC,OA0BpBqd,GAAU1f,UAAY,GAAI6f,GAE1BH,EAAU1f,UAAUN,KAAO,YAU3BggB,EAAU1f,UAAUgkC,SAAW,SAAUC,GACvC,MAAO/lC,MAAKinC,cAAclB,IAe5BvkB,EAAU1f,UAAUmlC,cAAgB,SAASlB,EAAM72B,GAEjD,QAAS4e,GAAKnrB,GACZ,MAAQA,aAAgBmf,IAA6B,OAAbnf,EAAK2M,KAG/C,GAAI43B,IAAa,EACbC,EAAennC,KAAK+M,OAAO1J,IAAI,SAAUI,GAC3C,GAAI2jC,GAAS3jC,EAAMP,OAAO4qB,GAAMzoB,OAAS,CAEzC,OADA6hC,GAAaE,EAASA,EAASF,EACxBE,GAITrB,GAAKtiC,MAAQ,SAAU+H,EAAOC,EAAKC,GACjC,MAAO,IAAIvJ,GACHqJ,YAAiB/J,GAAY+J,EAAMV,WAAaU,EAChDC,YAAehK,GAAYgK,EAAIX,WAAaW,EAC5CC,YAAgBjK,GAAYiK,EAAKZ,WAAaY,GAUxD,IAAIqB,GAAS/M,KAAK+M,OAAO1J,IAAI,SAASI,EAAO0B,GAC3C,GAAIiiC,GAASD,EAAahiC,EAC1B,OAAI1B,aAAiBoe,GACfulB,EAEK,4EAEwBjiC,EAAI,wBAEtB1B,EAAM+H,MAAMs6B,SAASC,GAAQ,SAC7BtiC,EAAMgI,IAAIq6B,SAASC,GAAQ,UAC1BtiC,EAAMiI,KAAOjI,EAAMiI,KAAKo6B,SAASC,GAAQ,KACnD,gBAKG,SACHtiC,EAAM+H,MAAMs6B,SAASC,GAAQ,KAC7BtiC,EAAMgI,IAAIq6B,SAASC,GAAQ,MAC1BtiC,EAAMiI,KAAOjI,EAAMiI,KAAKo6B,SAASC,GAAQ,KAC1C,IAIFqB,EAEK,4EAEwBjiC,EAAI,cACjB1B,EAAMqiC,SAASC,GAAQ,aAKlCtiC,EAAMqiC,SAASC,IAM5B,OAAImB,GACK,6BACclnC,KAAKsB,OAAOwkC,SAASC,GAAQ,uFAI1Bh5B,EAAOO,KAAK,MAAQ,SAC9B4B,EAAe,KAAOA,EAAe,IAC/C,WAIG,eACHlP,KAAKsB,OAAOwkC,SAASC,GAAQ,eACbh5B,EAAOO,KAAK,MAAQ,KACnC4B,EAAe,KAAOA,EAAe,IACtC,KAQRsS,EAAU1f,UAAUqB,QAAU,SAAUkJ,GAEtCA,EAASrM,KAAKsB,OAAQ,SAAUtB,KAGhC,KAAK,GAAImF,GAAI,EAAGA,EAAInF,KAAK+M,OAAO1H,OAAQF,IACtCkH,EAASrM,KAAK+M,OAAO5H,GAAI,UAAYA,EAAI,IAAKnF,OAUlDwhB,EAAU1f,UAAUuB,IAAM,SAAUgJ,GAIlC,IAAK,GAHD/K,GAAStB,KAAKgmC,QAAQ35B,EAASrM,KAAKsB,OAAQ,SAAUtB,OAEtD+M,KACK5H,EAAI,EAAGA,EAAInF,KAAK+M,OAAO1H,OAAQF,IACtC4H,EAAO5H,GAAKnF,KAAKgmC,QAAQ35B,EAASrM,KAAK+M,OAAO5H,GAAI,UAAYA,EAAI,IAAKnF,MAGzE,OAAO,IAAIwhB,GAAUlgB,EAAQyL,IAO/ByU,EAAU1f,UAAUulC,WAAa,WAC/B,MAAOrnC,MAAKsB,OAAOgO,MAOrBkS,EAAU1f,UAAUF,MAAQ,WAC1B,MAAO,IAAI4f,GAAUxhB,KAAKsB,OAAQtB,KAAK+M,OAAO0hB,MAAM,KAOtDjN,EAAU1f,UAAUyJ,SAAW,WAE7B,MAAOvL,MAAKsB,OAAOiK,WAAa,IAAMvL,KAAK+M,OAAOO,KAAK,MAAQ,KAOjEkU,EAAU1f,UAAUmkC,MAAQ,WAC1B,MAAOjmC,MAAKsB,OAAO2kC,QAAU,IAAMjmC,KAAK+M,OAAOO,KAAK,MAAQ,KAG9DzN,EAAOD,QAAU4hB,GAIZ,SAAS3hB,EAAQD,EAASM,GAE/B,YAiBA,SAASuhB,GAAuBnS,EAAMuV,EAAQjF,GAC5C,KAAM5f,eAAgByhB,IACpB,KAAM,IAAIvY,aAAY,mDAIxB;IAAKkB,EAASkF,GAAO,KAAM,IAAI3K,WAAU,uCACzC,KAAKR,EAAQ0gB,KAAYA,EAAO+gB,MAAMx7B,GAAY,KAAM,IAAIzF,WAAU,2DACtE,MAAMib,YAAgB+B,IAAO,KAAM,IAAIhd,WAAU,qCACjD,IAAI2K,IAAQ62B,GAAU,KAAM,IAAIrlC,OAAM,2BAA8BwO,EAAQ,0BAE5EtP,MAAKsP,KAAOA,EACZtP,KAAK6kB,OAASA,EACd7kB,KAAK4f,KAAOA,EA5Bd,GAAI+B,GAAOzhB,EAAoB,KAC3BimC,EAAWjmC,EAAoB,KAC/BkmC,EAAQlmC,EAAoB,KAC5BkK,EAAWlK,EAAoB,KAAKkK,SACpCjG,EAAUD,MAAMC,OA2BpBsd,GAAuB3f,UAAY,GAAI6f,GAEvCF,EAAuB3f,UAAUN,KAAO,yBAUxCigB,EAAuB3f,UAAUgkC,SAAW,SAAUC,GACpD,MAAO,UAAY/lC,KAAKsP,KAAO,qFAGAtP,KAAKsP,KAAO,IAAMtP,KAAK6kB,OAAOvX,KAAK,KAAO,oCAClCtN,KAAK6kB,OAAOxf,OAAS,2EAGkBrF,KAAKsP,KAAO,wCAA0CtP,KAAK6kB,OAAOxf,OAAS,uBAErJrF,KAAK6kB,OAAOxhB,IAAI,SAAUikC,EAAUlkC,GAClC,MAAO,UAAYkkC,EAAW,kBAAoBlkC,EAAQ,OACzDkK,KAAK,IACR,gBAAkBtN,KAAK4f,KAAKkmB,SAASC,GACrC,0BACsB/lC,KAAKsP,KAAO,IAAMtP,KAAK6kB,OAAOvX,KAAK,MAAQ,iCASvEmU,EAAuB3f,UAAUqB,QAAU,SAAUkJ,GACnDA,EAASrM,KAAK4f,KAAM,OAAQ5f,OAS9ByhB,EAAuB3f,UAAUuB,IAAM,SAAUgJ,GAC/C,GAAIuT,GAAO5f,KAAKgmC,QAAQ35B,EAASrM,KAAK4f,KAAM,OAAQ5f,MAEpD,OAAO,IAAIyhB,GAAuBzhB,KAAKsP,KAAMtP,KAAK6kB,OAAO4J,MAAM,GAAI7O,IAOrE6B,EAAuB3f,UAAUF,MAAQ,WACvC,MAAO,IAAI6f,GAAuBzhB,KAAKsP,KAAMtP,KAAK6kB,OAAO4J,MAAM,GAAIzuB,KAAK4f,OAO1E6B,EAAuB3f,UAAUyJ,SAAW,WAC1C,MAAO,YAAcvL,KAAKsP,KACtB,IAAMtP,KAAK6kB,OAAOvX,KAAK,MAAQ,OAC/BtN,KAAK4f,KAAKrU,YAOhBkW,EAAuB3f,UAAUmkC,MAAQ,WACvC,MAAOjmC,MAAKsP,KACR82B,EAAME,UAAUtmC,KAAK6kB,OAAOxhB,IAAI+iC,EAAMG,UAAUj5B,KAAK,OAAO,GAAQ,IACpE84B,EAAME,UAAUtmC,KAAK4f,KAAKqmB,UAGhCpmC,EAAOD,QAAU6hB,GAKZ,SAAS5hB,EAAQD,EAASM,GAE/B,YAgBA,SAASwhB,GAAcpS,EAAM1D,GAC3B,KAAM5L,eAAgB0hB,IACpB,KAAM,IAAIxY,aAAY,mDAIxB,IAAoB,gBAAToG,GAAmB,KAAM,IAAI3K,WAAU,uCAClD,KAAKR,EAAQyH,KAAUA,EAAKg6B,MAAMC,GAChC,KAAM,IAAIlhC,WAAU,uDAGtB3E,MAAKsP,KAAOA,EACZtP,KAAK4L,KAAOA,MA1Bd,GAAI+V,GAAOzhB,EAAoB,KAC3B4hB,EAAa5hB,EAAoB,KAEjCkmC,EAAQlmC,EAAoB,KAC5B2lC,EAASlkB,EAAKkkB,OACd1hC,EAAUD,MAAMC,OAwBpBud,GAAa5f,UAAY,GAAI6f,GAE7BD,EAAa5f,UAAUN,KAAO,eAU9BkgB,EAAa5f,UAAUgkC,SAAW,SAAUC,GAC1C,GAAIrgC,GAAKqgC,EAAKhlC,KAAKf,KAAKsP,MACpBi4B,EAAuB,kBAAP7hC,IAAqC,GAAdA,EAAGyoB,QAG1CviB,EAAO5L,KAAK4L,KAAKvI,IAAI,SAAU8F,GACjC,MAAOA,GAAI28B,SAASC,IAGtB,IAAIwB,EAAO,CAET,GAAIC,EACJ,GACEA,GAAa,IAAMvhC,KAAKC,MAAsB,IAAhBD,KAAK+lB,gBAE9Bwb,IAAczB,GAGrB,OAFAA,GAAKyB,GAAcxnC,KAAK4L,KAEjB,KAAO5L,KAAKsP,KAAO,uBACVtP,KAAKsP,KAAO,MAAQ1D,EAAK0B,KAAK,MAAQ,aACvCtN,KAAKsP,KAAO,MAAak4B,EAAa,kBAIrD,GAAIxZ,GAAS,GAAIlM,GAAW9hB,KAAKsP,KACjC,OAAO0e,GAAO8X,SAASC,GAAQ,IAAMn6B,EAAK0B,KAAK,MAAQ,KAQ3DoU,EAAa5f,UAAUqB,QAAU,SAAUkJ,GACzC,IAAK,GAAIlH,GAAI,EAAGA,EAAInF,KAAK4L,KAAKvG,OAAQF,IACpCkH,EAASrM,KAAK4L,KAAKzG,GAAI,QAAUA,EAAI,IAAKnF,OAU9C0hB,EAAa5f,UAAUuB,IAAM,SAAUgJ,GAErC,IAAK,GADDT,MACKzG,EAAI,EAAGA,EAAInF,KAAK4L,KAAKvG,OAAQF,IACpCyG,EAAKzG,GAAKnF,KAAKgmC,QAAQ35B,EAASrM,KAAK4L,KAAKzG,GAAI,QAAUA,EAAI,IAAKnF,MAEnE,OAAO,IAAI0hB,GAAa1hB,KAAKsP,KAAM1D,IAOrC8V,EAAa5f,UAAUF,MAAQ,WAC7B,MAAO,IAAI8f,GAAa1hB,KAAKsP,KAAMtP,KAAK4L,KAAK6iB,MAAM,KAOrD/M,EAAa5f,UAAUyJ,SAAW,WAEhC,MAAOvL,MAAKsP,KAAO,IAAMtP,KAAK4L,KAAK0B,KAAK,MAAQ,KAOlDoU,EAAa5f,UAAUmkC,MAAQ,WAC7B,MAAOG,GAAMqB,OAAOznC,OAGtBH,EAAOD,QAAU8hB,GAKZ,SAAS7hB,EAAQD,EAASM,GAE/B,YAOA,SAASyhB,KACP,KAAM3hB,eAAgB2hB,IACpB,KAAM,IAAIzY,aAAY,oDA2O1B,QAASw+B,GAAgB9e,GACvB,IAAK,GAAIoF,KAAUpF,GACjB,GAAIA,EAAM/jB,eAAempB,IACnBA,IAAUmY,GACZ,KAAM,IAAIrlC,OAAM,sCAAwCktB,EAAS,2BAazE,QAAS2Z,GAAW5mC,GAClB,GAAI6mC,GAAc/mC,OAAOF,OAAOI,EAEhC,IAAIA,EAAK2B,YAAc3B,EAAK2B,WAAWM,UACrC,IAAK,GAAIsM,KAAQvO,GAAK2B,WAAWM,UAC3BjC,EAAK2B,WAAWM,UAAU6B,eAAeyK,KAC3Cs4B,EAAYt4B,GAAQvO,EAAK2B,WAAWM,UAAUsM,GAKpD,OAAOs4B,GA9QT,GAAIzB,GAAWjmC,EAAoB,IAgBnCyhB,GAAK7f,UAAU+d,KAAO,WACpB,KAAM,IAAI/e,OAAM,2EAIlB6gB,EAAK7f,UAAUN,KAAO,OAUtBmgB,EAAK7f,UAAUgnB,QAAU,SAAU/nB,GACjC,KAAMA,YAAgBF,SACpB,KAAM,IAAI8D,WAAU,qCAItB,IAAIohC,IACFhlC,KAAM4mC,EAAW5mC,GACjB2mC,eAAgBA,GAGdG,EAAO7nC,KAAK8lC,SAASC,GAErB+B,EAAWjnC,OAAOi5B,KAAKiM,GAAM1iC,IAAI,SAAUiM,GAC7C,MAAO,WAAaA,EAAO,YAAcA,EAAO,QAG9Cy4B,EACAD,EAASx6B,KAAK,KACV,+GAIgBu6B,EAAO,SAI3BloC,EAAU,GAAIqoC,UAAU,OAAQD,EACpC,OAAOpoC,GAAQomC,IAWjBpkB,EAAK7f,UAAUgkC,SAAW,WAExB,KAAM,IAAIhlC,OAAM,oCAOlB6gB,EAAK7f,UAAUqB,QAAU,WAEvB,KAAM,IAAIrC,OAAM,2CASlB6gB,EAAK7f,UAAUuB,IAAM,WAEnB,KAAM,IAAIvC,OAAM,uCASlB6gB,EAAK7f,UAAUkkC,QAAU,SAAUrjC,GACjC,KAAMA,YAAgBgf,IACpB,KAAM,IAAIhd,WAAU,uCAGtB,OAAOhC,IASTgf,EAAK7f,UAAUmmC,SAAW,SAAU57B,GAKlC,QAAS67B,GAAWvlC,EAAM0J,GACxB1J,EAAKQ,QAAQ,SAAS8K,EAAOk6B,EAAMC,GACjC/7B,EAAS4B,EAAOk6B,EAAMC,GACtBF,EAAUj6B,EAAO5B,KANrBA,EAASrM,KAAM,KAAM,MASrBkoC,EAAUloC,KAAMqM,IAwBlBsV,EAAK7f,UAAUkB,UAAY,SAAUqJ,GAQnC,QAASs7B,GAAYhlC,EAAM0J,GACzB,MAAO1J,GAAKU,IAAI,SAAS4K,EAAOk6B,EAAMC,GACpC,GAAIl5B,GAAc7C,EAAS4B,EAAOk6B,EAAMC,EACxC,OAAQl5B,KAAgBjB,EAASiB,EAAcy4B,EAAW15B,EAAO5B,KATrE,GAAI6C,GAAc7C,EAASrM,KAAM,KAAM,KACvC,OAAIkP,KAAgBlP,KACXkP,EAUFy4B,EAAW3nC,KAAMqM,IAiB1BsV,EAAK7f,UAAUoB,OAAS,SAAUmJ,GAChC,GAAI4V,KAQJ,OANAjiB,MAAKioC,SAAS,SAAUtlC,EAAMwlC,EAAMC,GAC9B/7B,EAAS1J,EAAMwlC,EAAMC,IACvBnmB,EAAMtV,KAAKhK,KAIRsf,GAITN,EAAK7f,UAAUumC,KAAO,WACpB,KAAM,IAAIvnC,OAAM,+DAIlB6gB,EAAK7f,UAAUklC,MAAQ,WACrB,KAAM,IAAIlmC,OAAM,iGAOlB6gB,EAAK7f,UAAUF,MAAQ,WAErB,KAAM,IAAId,OAAM,kCAOlB6gB,EAAK7f,UAAUyJ,SAAW,WACxB,MAAO,IAOToW,EAAK7f,UAAUmkC,MAAQ,WACrB,MAAO,IAQTtkB,EAAKkkB,OAAS,SAASvkC,GACrB,MAAOA,aAAkBqgB,IAuC3B9hB,EAAOD,QAAU+hB,GAKZ,SAAS9hB,EAAQD,EAASM,GAE/B,YAiBA,SAAS0hB,GAAc0mB,EAAI5iC,EAAIkG,GAC7B,KAAM5L,eAAgB4hB,IACpB,KAAM,IAAI1Y,aAAY,mDAIxBlJ,MAAKsoC,GAAKA,EACVtoC,KAAK0F,GAAKA,EACV1F,KAAK4L,KAAOA,MAvBd,GAAI+V,GAAOzhB,EAAoB,KAC3BqhB,EAAerhB,EAAoB,KACnC4hB,EAAa5hB,EAAoB,KACjCwhB,EAAexhB,EAAoB,KACnCkmC,EAAQlmC,EAAoB,IAsBhC0hB,GAAa9f,UAAY,GAAI6f,GAE7BC,EAAa9f,UAAUN,KAAO,eAU9BogB,EAAa9f,UAAUgkC,SAAW,SAAUC,GAC1C,KAAM/lC,KAAK0F,KAAMqgC,GAAKhlC,MACpB,KAAM,IAAID,OAAM,YAAcd,KAAK0F,GAAK,wCAG1C,IAAIkG,GAAO5L,KAAK4L,KAAKvI,IAAI,SAAU8F,GACjC,MAAOA,GAAI28B,SAASC,IAEtB,OAAO,QAAU/lC,KAAK0F,GAAK,IAAMkG,EAAK0B,KAAK,MAAQ,KAOrDsU,EAAa9f,UAAUqB,QAAU,SAAUkJ,GACzC,IAAK,GAAIlH,GAAI,EAAGA,EAAInF,KAAK4L,KAAKvG,OAAQF,IACpCkH,EAASrM,KAAK4L,KAAKzG,GAAI,QAAUA,EAAI,IAAKnF,OAU9C4hB,EAAa9f,UAAUuB,IAAM,SAAUgJ,GAErC,IAAK,GADDT,MACKzG,EAAI,EAAGA,EAAInF,KAAK4L,KAAKvG,OAAQF,IACpCyG,EAAKzG,GAAKnF,KAAKgmC,QAAQ35B,EAASrM,KAAK4L,KAAKzG,GAAI,QAAUA,EAAI,IAAKnF,MAEnE,OAAO,IAAI4hB,GAAa5hB,KAAKsoC,GAAItoC,KAAK0F,GAAIkG,IAO5CgW,EAAa9f,UAAUF,MAAQ,WAC7B,MAAO,IAAIggB,GAAa5hB,KAAKsoC,GAAItoC,KAAK0F,GAAI1F,KAAK4L,KAAK6iB,MAAM,KAO5D7M,EAAa9f,UAAUyJ,SAAW,WAChC,GAAIK,GAAO5L,KAAK4L,IAEhB,QAAQA,EAAKvG,QACX,IAAK,GACH,MAAe,KAAXrF,KAAKsoC,GAEA,IAAM18B,EAAK,GAAGL,WAIdK,EAAK,GAAGL,WAAavL,KAAKsoC,EAGrC,KAAK,GACH,GAAIC,GAAM38B,EAAK,GAAGL,UACdK,GAAK,YAAcgW,KACrB2mB,EAAM,IAAMA,EAAM,IAEpB,IAAIC,GAAM58B,EAAK,GAAGL,UAIlB,OAHIK,GAAK,YAAcgW,KACrB4mB,EAAM,IAAMA,EAAM,KAEbD,EAAM,IAAMvoC,KAAKsoC,GAAK,IAAME,CAErC,SACE,MAAOxoC,MAAKsoC,GAAK,IAAMtoC,KAAK4L,KAAK0B,KAAK,MAAQ,MAQpDsU,EAAa9f,UAAUmkC,MAAQ,WAC7B,GAAIr6B,GAAO5L,KAAK4L,KACZ68B,EAAMrC,EAAMsC,WAAW1oC,KAAKsoC,IAC5BK,EAAK/8B,EAAK,GACVg9B,EAAKh9B,EAAK,EAEd,QAAQA,EAAKvG,QACX,IAAK,GACH,MAAgB,MAAZrF,KAAKsoC,IAA0B,MAAZtoC,KAAKsoC,GAEnBtoC,KAAKsoC,GAAKK,EAAG1C,QAGf0C,EAAG1C,QAAUjmC,KAAKsoC,EAE3B,KAAK,GACH,GAAIC,GAAMI,EAAG1C,QACT4C,GAAM,EACNL,EAAMI,EAAG3C,QACT6C,GAAM,EACNC,EAAM,GACNC,EAAM,EAEV,QAAQhpC,KAAKsoC,IACX,IAAK,IACHS,EAAMN,EACNA,EAAM,EAEN,MAEF,KAAK,IACCE,YAAc/mB,KACF,MAAV+mB,EAAGL,IAAwB,MAAVK,EAAGL,MACtBO,GAAM,GAIND,YAAchnB,KACF,MAAVgnB,EAAGN,IAAwB,MAAVM,EAAGN,GACtBQ,GAAM,EAEW,MAAVF,EAAGN,KACVQ,GAAM,IAMRL,GAFGE,YAAcpnB,IAAgBonB,YAAc/mB,MAC5CgnB,YAAcrnB,IAAgBqnB,YAAchnB,IACzC,WAGA,OAGR,MAEF,KAAK,IACC+mB,YAAc/mB,IAAgB+mB,YAAcjnB,GAC9CmnB,GAAM,EAECF,YAAc7mB,KACrB+mB,EAAM,KAGR,MAEF,KAAK,KACHL,EAAMpC,EAAM6C,OAAOT,GAAK,GAO5B,MAHAD,GAAMnC,EAAME,UAAUiC,EAAKM,GAC3BL,EAAMpC,EAAME,UAAUkC,EAAKM,GAEpBC,EAAMR,EAAME,EAAMD,EAAMQ,CAEjC,SACE,MAAOP,GAAM,IAAMzoC,KAAK4L,KAAKvI,IAAI+iC,EAAMG,UAAUj5B,KAAK,MAAQ,MAIpEzN,EAAOD,QAAUgiB,GAKZ,SAAS/hB,EAAQD,EAASM,GAE/B,YAcA,SAAS2hB,GAAWrW,EAAOC,EAAKC,GAC9B,KAAM1L,eAAgB6hB,IACpB,KAAM,IAAI3Y,aAAY,mDAIxB,KAAK28B,EAAOr6B,GAAQ,KAAM,IAAI7G,WAAU,gBACxC,KAAKkhC,EAAOp6B,GAAM,KAAM,IAAI9G,WAAU,gBACtC,IAAI+G,IAASm6B,EAAOn6B,GAAO,KAAM,IAAI/G,WAAU,gBAC/C,IAAIwC,UAAU9B,OAAS,EAAG,KAAM,IAAIvE,OAAM,qBAE1Cd,MAAKwL,MAAQA,EACbxL,KAAKyL,IAAQA,EACbzL,KAAK0L,KAAQA,GAAQ,KAzBvB,GAAIiW,GAAOzhB,EAAoB,KAE3B2lC,EAASlkB,EAAKkkB,MA0BlBhkB,GAAU/f,UAAY,GAAI6f,GAE1BE,EAAU/f,UAAUN,KAAO,YAU3BqgB,EAAU/f,UAAUgkC,SAAW,SAAUC,GACvC,MAAO,cACH/lC,KAAKwL,MAAMs6B,SAASC,GAAQ,KAC5B/lC,KAAKyL,IAAIq6B,SAASC,IACjB/lC,KAAK0L,KAAQ,KAAO1L,KAAK0L,KAAKo6B,SAASC,GAAS,IACjD,KAONlkB,EAAU/f,UAAUqB,QAAU,SAAUkJ,GACtCA,EAASrM,KAAKwL,MAAO,QAASxL,MAC9BqM,EAASrM,KAAKyL,IAAK,MAAOzL,MACtBA,KAAK0L,MACPW,EAASrM,KAAK0L,KAAM,OAAQ1L,OAUhC6hB,EAAU/f,UAAUuB,IAAM,SAAUgJ,GAClC,MAAO,IAAIwV,GACP7hB,KAAKgmC,QAAQ35B,EAASrM,KAAKwL,MAAO,QAASxL,OAC3CA,KAAKgmC,QAAQ35B,EAASrM,KAAKyL,IAAK,MAAOzL,OACvCA,KAAK0L,MAAQ1L,KAAKgmC,QAAQ35B,EAASrM,KAAK0L,KAAM,OAAQ1L,SAQ5D6hB,EAAU/f,UAAUF,MAAQ,WAC1B,MAAO,IAAIigB,GAAU7hB,KAAKwL,MAAOxL,KAAKyL,IAAKzL,KAAK0L,MAAQ1L,KAAK0L,OAO/DmW,EAAU/f,UAAUyJ,SAAW,WAE7B,GAAI1E,GAAM7G,KAAKwL,MAAMD,UAMrB,OALIvL,MAAK0L,OACP7E,GAAO,IAAM7G,KAAK0L,KAAKH,YAEzB1E,GAAO,IAAM7G,KAAKyL,IAAIF,YASxBsW,EAAU/f,UAAUmkC,MAAQ,WAC1B,GAAIp/B,GAAM7G,KAAKwL,MAAMy6B,OAMrB,OALIjmC,MAAK0L,OACP7E,GAAO,IAAM7G,KAAK0L,KAAKu6B,SAEzBp/B,GAAO,IAAM7G,KAAKyL,IAAIw6B,SAKxBpmC,EAAOD,QAAUiiB,GAKZ,SAAShiB,EAAQD,EAASM,GAE/B,YAeA,SAAS4hB,GAAWxS,GAClB,KAAMtP,eAAgB8hB,IACpB,KAAM,IAAI5Y,aAAY,mDAIxB,KAAKkB,EAASkF,GAAQ,KAAM,IAAI3K,WAAU,uCAE1C3E,MAAKsP,KAAOA,EAuDd,QAAS45B,GAAO55B,GACd,KAAM,IAAIxO,OAAM,oBAAsBwO,GA7ExC,GAAIqS,GAAOzhB,EAAoB,KAC3BoC,EAAOpC,EAAoB,IAE3BkmC,EAAQlmC,EAAoB,KAC5BkK,EAAWlK,EAAoB,KAAKkK,QAoBxC0X,GAAWhgB,UAAY,GAAI6f,GAE3BG,EAAWhgB,UAAUN,KAAO,aAU5BsgB,EAAWhgB,UAAUgkC,SAAW,SAAUC,GAKxC,MAHAA,GAAY,MAAImD,EAChBnD,EAAW,KAAIzjC,EAEXtC,KAAKsP,OAAQy2B,GAAKhlC,KACb,KAAOf,KAAKsP,KAAO,uBAAyBtP,KAAKsP,KAAO,cAAgBtP,KAAKsP,KAAO,MAGpF,KACGtP,KAAKsP,KAAO,uBAAyBtP,KAAKsP,KAAO,SACtDhN,EAAKoO,gBAAgB1Q,KAAKsP,MACvB,mBAAqBtP,KAAKsP,KAAO,KACjC,UAAYtP,KAAKsP,KAAO,MAC5B,KAQRwS,EAAWhgB,UAAUqB,QAAU,aAU/B2e,EAAWhgB,UAAUuB,IAAM,WACzB,MAAOrD,MAAK4B,SAedkgB,EAAWhgB,UAAUF,MAAQ,WAC3B,MAAO,IAAIkgB,GAAW9hB,KAAKsP,OAQ7BwS,EAAWhgB,UAAUyJ,SAAW,WAC9B,MAAOvL,MAAKsP,MAQdwS,EAAWhgB,UAAUmkC,MAAQ,WAC3B,MAAOG,GAAMG,SAASvmC,KAAKsP,OAG7BzP,EAAOD,QAAUkiB,GAKZ,SAASjiB,EAAQD,EAASM,GAE/B,YAaA,SAAS6hB,GAAW3e,EAAOwc,GACzB,KAAM5f,eAAgB+hB,IACpB,KAAM,IAAI7Y,aAAY,mDAGxB,MAAM9F,YAAiBoe,IACrB,KAAM,IAAI7c,WAAU,2CAEtB,MAAMib,YAAgB+B,IACpB,KAAM,IAAIhd,WAAU,qCAGtB3E,MAAKoD,MAAQA,EACbpD,KAAK4f,KAAOA,EAxBd,GAAI+B,GAAOzhB,EAAoB,KAC3BshB,EAAYthB,EAAoB,IA0BpC6hB,GAAWjgB,UAAY,GAAI6f,GAE3BI,EAAWjgB,UAAUN,KAAO,aAU5BugB,EAAWjgB,UAAUgkC,SAAW,SAAUC,GACxC,MAAO,UAAY/lC,KAAKoD,MAAMikC,aAAe,QACzCrnC,KAAKoD,MAAM6jC,cAAclB,EAAO/lC,KAAK4f,KAAKkmB,SAASC,KAOzDhkB,EAAWjgB,UAAUqB,QAAU,SAAUkJ,GACvCA,EAASrM,KAAKoD,MAAO,QAASpD,MAC9BqM,EAASrM,KAAK4f,KAAM,OAAQ5f,OAS9B+hB,EAAWjgB,UAAUuB,IAAM,SAAUgJ,GACnC,MAAO,IAAI0V,GACP/hB,KAAKgmC,QAAQ35B,EAASrM,KAAKoD,MAAO,QAASpD,OAC3CA,KAAKgmC,QAAQ35B,EAASrM,KAAK4f,KAAM,OAAQ5f,SAQ/C+hB,EAAWjgB,UAAUF,MAAQ,WAC3B,MAAO,IAAImgB,GAAW/hB,KAAKoD,MAAOpD,KAAK4f,OAOzCmC,EAAWjgB,UAAUyJ,SAAW,WAC9B,MAAOvL,MAAKoD,MAAMmI,WAAa,MAAQvL,KAAK4f,KAAKrU,YAOnDwW,EAAWjgB,UAAUmkC,MAAQ,WAC3B,MAAOjmC,MAAKoD,MAAM6iC,QAAU,MAAQjmC,KAAK4f,KAAKqmB,SAGhDpmC,EAAOD,QAAUmiB,GAKZ,SAASliB,GAEdA,EAAOD,SACL0P,KAAQ,IACRiQ,SAAY,YACZE,QACE,KAEFD,YAAe,oFACfE,UACE,IACA,QACA,SACA,UAEFI,SAAY,SAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,YACZE,QACE,SAEFD,YAAe,sBACfE,UACE,SAEFI,SAAY,UAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,IACRiQ,SAAY,YACZE,QACE,KAEFD,YAAe,sIACfE,UACE,IACA,QACA,YAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,WACRiQ,SAAY,YACZE,QACE,YAEFD,YAAe,6GACfE,UACE,WACA,SAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,YACZE,QACE,OAEFD,YAAe,mEACfE,UACE,MACA,UAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,YACZE,QACE,QAEFD,YAAe,oEACfE,UACE,OACA,WAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,YACZE,QACE,SAEFD,YAAe,kEACfE,UACE,QACA,aAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,YACZE,QACE,UAEFD,YAAe,mEACfE,UACE,SACA,cAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,YACZE,QACE,OAEFD,YAAe,eACfE,UACE,MACA,SAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,YACZE,QACE,QAEFD,YAAe,aACfE,UACE,QAEFI,SAAY,OAAQ,WAMjB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,KACRiQ,SAAY,YACZE,QACE,MAEFD,YAAe,gJACfE,UACE,KACA,aAEFI,SAAY,SAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,YACZE,QACE,OAEFD,YAAe,mOACfE,UACE,OAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,YACZE,QACE,WAEFD,YAAe,+DACfE,UACE,UACA,aAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,YACZE,QACE,SAEFD,YAAe,6DACfE,UACE,QACA,WAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,YACZE,QACE,OAEFD,YAAe,0GACfE,UACE,MACA,UAEFI,SAAY,QAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,YACZE,QACE,QAEFD,YAAe,qBACfE,UACE,QAEFI,SAAY,WAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,YACZE,QACE,WAEFD,YAAe,8CACfE,UACE,WAEFI,aAMG,SAASjgB,EAAQD,EAASM,GAsB/B,QAASipC,GAAeC,GACvB,MAAOlpC,GAAoBmpC,EAAsBD,IAElD,QAASC,GAAsBD,GAC9B,MAAO/lC,GAAI+lC,IAAS,WAAa,KAAM,IAAItoC,OAAM,uBAAyBsoC,EAAM,SAxBjF,GAAI/lC,IACHimC,UAAW,IACXC,aAAc,IACdC,WAAY,IACZC,cAAe,IACfC,YAAa,IACbC,eAAgB,IAChBC,WAAY,IACZC,cAAe,IACfC,WAAY,IACZC,cAAe,IACfC,QAAS,IACTC,WAAY,IACZC,UAAW,IACXC,aAAc,IACdC,SAAU,IACVC,YAAa,IACbC,WAAY,IACZC,cAAe,IAQhBpB,GAAerP,KAAO,WACrB,MAAOj5B,QAAOi5B,KAAKz2B,IAEpB8lC,EAAeqB,QAAUnB,EACzBxpC,EAAOD,QAAUupC,EACjBA,EAAe9oC,GAAK,KAKf,SAASR,EAAQD,EAASM,GAE/B,GACI4I,IADiB5I,EAAoB,KACxBA,EAAoB,KAOrCN,GAAQoD,UAAY,SAAUsN,GAC5B,MAAIA,aAAexH,GACV,GAAIA,GAAWwH,EAAIlN,MAAQ,EAAGkN,EAAI9M,IAAM,EAAG8M,EAAIhN,IAAM,GAGvDgN,IAMJ,SAASzQ,EAAQD,GAEtB,YAOAA,GAAQguB,UAAY,SAASxpB,GAC3B,MAAQA,aAAiBI,UAA6B,iBAATJ,KAM1C,SAASvE,EAAQD,EAASM,GAE/B,YA4FA,SAASuqC,GAAa9+B,EAAOtK,GAC3B,GAAI6C,MAAMC,QAAQwH,GAAQ,CAGxB,IAAK,GAFD9E,GAAM,IACNzB,EAAMuG,EAAMtG,OACPF,EAAI,EAAOC,EAAJD,EAASA,IACd,GAALA,IACF0B,GAAO,MAETA,GAAO4jC,EAAY9+B,EAAMxG,GAAI9D,EAG/B,OADAwF,IAAO,IAIP,MAAOjH,GAAQwG,OAAOuF,EAAOtK,GAxGjC,GAAIH,GAAShB,EAAoB,GAC7BwH,EAAYxH,EAAoB,KAChCuB,EAAYvB,EAAoB,IAOpCN,GAAQwK,SAAW,SAAShG,GAC1B,MAAQA,aAAiBG,SAA4B,gBAATH,IAQ9CxE,EAAQsQ,SAAW,SAASvG,EAAMglB,GAChC,GAAInjB,GAAQ7B,EAAKtE,OAASspB,EAAOtpB,OAC7BoG,EAAM9B,EAAKtE,MACf,OAAQsE,GAAKe,UAAUc,EAAOC,KAASkjB,GA0BzC/uB,EAAQwG,OAAS,SAAShC,EAAO/C,GAC/B,MAAIH,GAAO6E,SAAS3B,GACXlD,EAAOkF,OAAOhC,EAAO/C,GAG1B+C,YAAiB3C,GACZiG,EAAUtB,OAAOhC,EAAO/C,GAG7B6C,MAAMC,QAAQC,GACTqmC,EAAYrmC,EAAO/C,GAGxBzB,EAAQwK,SAAShG,GACZ,IAAMA,EAAQ,IAGF,kBAAVA,GACFA,EAAMqb,OAASrb,EAAMqb,OAAS,GAAK,WAGxCrb,YAAiBvD,QACS,kBAAjBuD,GAAMgC,OACRhC,EAAMgC,OAAO/E,GAGb+C,EAAMmH,WAIVhH,OAAOH,KAkCX,SAASvE,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,UAEFD,YAAe,8BACfE,UACE,WACA,aAEFI,SAAY,UAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,YACZE,QACE,QACA,aAEFD,YAAe,kBACfE,UACE,gBACA,UACA,SACA,qBACA,iBAEFI,SACE,cAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,WAEFD,YACI,wHACJE,UACE,YACA,YACA,cAEFI,SAAY,QAAS,MAAO,WAMzB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,WAEFD,YAAe,2DACfE,UACE,UACA,MACA,aAEFI,SACE,WACA,SACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,YACZE,QACE,QACA,gBAEFD,YAAe,qBACfE,UACE,YACA,QACA,UACA,YACA,cACA,eAEFI,SACE,cAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,YACZE,QACE,SACA,mBAEFD,YAAe,kCACfE,UACE,yBACA,yBACA,UAEFI,SACE,WACA,cACA,YAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,cACRiQ,SAAY,YACZE,QACE,SACA,qBAEFD,YAAe,oCACfE,UACE,yBACA,yBACA,UAEFI,SACE,WACA,SACA,eAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,YACZE,QACE,SACA,gBAEFD,YACI,+CACJE,UACE,yBACA,UAEFI,SACE,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,UAEFD,YAAe,qCACfE,UACE,WACA,UACA,gBACA,UACA,uDAEFI,SACE,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,UAEFD,YACI,sGACJE,UACE,WACA,WACA,YACA,aAEFI,SAAY,OAAQ,QAAS,WAM1B,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,aACZE,QACE,YAEFD,YACI,yHACJE,UACE,aACA,aACA,eAEFI,SAAY,OAAQ,MAAO,WAMxB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,YACA,qBAEFD,YAAe,uCACfE,UACE,aACA,aACA,oBAEFI,SAAa,MAAO,UAMjB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,aAEFD,YAAe,qCACfE,UACE,YACA,aACA,iBAEFI,SAAa,SAMV,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,SACA,gBAEFD,YAAe,8NACfE,UACE,WACA,eACA,SACA,SACA,iBACA,uBACA,mBACA,SAEFI,SACE,MACA,WAMC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,aACZE,QACE,YAEFD,YAAe,4CACfE,UACE,iBACA,eACA,SACA,uBACA,kBAEFI,SACE,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,YACZE,QACE,QACA,UACA,aAEFD,YACI,gEACJE,UACE,QACA,SACA,WACA,4BACA,WACA,YAEFI,SAAY,YAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,WACRiQ,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,gBACA,UACA,YACA,cACA,cAEFI,SACE,YAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,UACA,cAEFD,YAAe,oDACfE,UACE,YACA,aACA,gBACA,6BACA,8BACA,kBACA,4BACA,gCACA,mCAOC,SAAS7f,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,aACZE,QACE,aACA,oBAEFD,YAAe,qJAGfE,UACE,QACA,iBACA,gBACA,WAEFI,SACE,OACA,SAMC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,YACZE,QACE,QACA,aAEFD,YACI,uCACJE,UACE,UACA,QACA,oBAEFI,SAAa,cAMV,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,aACZE,QACE,WACA,eAEFD,YACI,4LACJE,UACE,aACA,aACA,cACA,cACA,eACA,uBAEFI,SAAY,OAAQ,QAAS,SAM1B,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,WAEFD,YACI,iGACJE,UACE,YACA,aACA,WAEFI,SACE,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,WAEFD,YACI,+EACJE,UACE,WACA,QACA,YAEFI,SACE,SACA,cAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,aACZE,QACE,aAEFD,YACI,2DACJE,UACE,YACA,UACA,MACA,SAEFI,SACE,WACA,MACA,OACA,UAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,WACRiQ,SAAY,YACZE,QACE,QACA,kBAEFD,YAAe,uBACfE,UACE,cACA,QACA,YACA,YACA,iBAEFI,SACE,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,aACRiQ,SAAY,YACZE,QACE,KACA,iBAEFD,YACI,yEACJE,UACE,OACA,UACA,SAEFI,SACE,MAAO,WAAY,eAOlB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,YACZE,QACE,KACA,gBAEFD,YACI,4CACJE,UACE,QACA,QAEFI,SACE,MAAO,WAAY,gBAOlB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,cAEFD,YAAe,gEACfE,UACE,cACA,aACA,sBAEFI,SAAa,MAAO,SAMjB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,UACZE,QACE,QACA,gBAEFD,YAAe,6QACfE,UACE,QACA,kBACA,oBAEFI,SACE,SAAU,QAAS,SAAU,YAAa,kBAAmB,mBAO5D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,UACZE,QACE,KACA,aAEFD,YAAe,8IACfE,UACE,KACA,KACA,sBAEFI,SACE,SAAU,QAAS,SAAU,YAAa,kBAAmB,mBAO5D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,UACZE,QACE,QACA,eAEFD,YAAe,8PACfE,UACE,QACA,uBAEFI,SACE,SAAU,SAAU,SAAU,YAAa,kBAAmB,mBAO7D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,UACZE,QACE,gBAEFD,YAAe,mRACfE,UACE,cACA,wBAEFI,SACE,SAAU,SAAU,QAAS,YAAa,kBAAmB,mBAO5D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,UACZE,QACE,SACA,mBAEFD,YAAe,+DACfE,UACE,SACA,UAEFI,SACE,SAAU,SAAU,QAAS,SAAU,kBAAmB,mBAOzD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,kBACRiQ,SAAY,UACZE,QACE,SACA,mBAEFD,YAAe,mEACfE,UACE,SACA,SACA,YAEFI,SACE,SAAU,SAAU,QAAS,SAAU,YAAa,mBAOnD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,gBACRiQ,SAAY,UACZE,QACE,SACA,mBAEFD,YAAe,gEACfE,UACE,UACA,SACA,aAEFI,SACE,SAAU,SAAU,QAAS,SAAU,YAAa,qBAOnD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,UACZE,QACE,UAEFD,YACI,iGACJE,UACE,cACA,cACA,eAEFI,SACE,KACA,KACA,OACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,UACZE,QACE,WAEFD,YACI,gGACJE,UACE,eACA,eACA,eAEFI,SACE,KACA,KACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,KACRiQ,SAAY,UACZE,QACE,SAEFD,YAAe,yCACfE,UACE,aACA,aACA,YACA,WAEFI,SACE,KACA,OACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,KACRiQ,SAAY,UACZE,QACE,SAEFD,YAAe,8CACfE,UACE,aACA,aACA,YACA,WAEFI,SACE,KACA,OACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,OACZE,QACE,gBAEFD,YACI,+CACJE,UACE,YACA,kCACA,mBACA,uBACA,8BAEFI,SACE,UAAW,UAAW,QAAS,SAAU,SAAU,UAOlD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,OACZE,QACE,IACA,cAEFD,YACI,6CACJE,UACE,aACA,aACA,aACA,kBACA,mBACA,yBAEFI,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO9D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,OACZE,QACE,YACA,kBACA,mBAEFD,YACI,2BACJE,UACE,YACA,gBACA,qBAEFI,SACE,YAAa,UAAW,QAAS,SAAU,SAAU,SAAU,UAO9D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,OACZE,QACE,UACA,cACA,mBACA,yBACA,kCACA,+CAEFD,YACI,yDACJE,UACE,KACA,YACA,yBACA,UACA,eACA,4BAEFI,SACE,YAAa,UAAW,UAAW,UAAW,SAAU,QAAS,SAAU,UAO1E,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,OACZE,QACE,KACA,6BACA,WACA,iBAEFD,YACI,mBACJE,UACE,KACA,YACA,qBACA,WACA,kBAEFI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO/D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,OACZE,QACE,IACA,aAEFD,YACI,gEACJE,UACE,IACA,MACA,OACA,YACA,gBACA,eACA,oCACA,uBAEFI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO/D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,OACZE,QACE,SACA,aAEFD,YACI,iDACJE,UACE,iBACA,cACA,kBAEFI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,UAO/D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,OACZE,QACE,aACA,oBACA,gBAEFD,YACI,iBACJE,UACE,SACA,SACA,wBACA,kBAEFI,SACE,YAAa,UAAW,UAAW,QAAS,SAAU,SAAU,YAO/D,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,mBACA,oCAEFD,YAAe,uDACfE,UACE,gBACA,2BAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,eACA,gBAEFD,YAAe,oDACfE,UACE,aACA,mBAEFI,aAMG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,UACZE,QACE,UACA,aAEFD,YAAe,uFACfE,UACE,iBACA,gBACA,WAEFI,SACE,MAAO,KAAM,SAOZ,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,UACZE,QACE,KACA,QACA,UAEFD,YAAe,0DACfE,UACE,QACA,YACA,KACA,MAEFI,SACE,MAAO,KAAM,SAOZ,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,KACRiQ,SAAY,UACZE,QACE,SACA,YAEFD,YAAe,mFACfE,UACE,gBACA,iBACA,UAEFI,SACE,MAAO,MAAO,SAOb,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,UACZE,QACE,SACA,YAEFD,YAAe,2GACfE,UACE,iBACA,kBACA,gBACA,UAEFI,SACE,MAAO,MAAO,QAOb,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,SACZE,QACE,uBACA,6BAEFD,YAAe,iKACfE,UACE,mBACA,mBACA,eACA,kBACA,mBAEFI,SACE,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOhG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,SACZE,QACE,eAEFD,YAAe,0EACfE,UACE,+BACA,+BACA,gCAEFI,SACE,WACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,SACZE,QACE,UAEFD,YAAe,wCACfE,UACE,oBACA,uCAEFI,SACE,SAAU,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOnG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,SACZE,QACE,UACA,cAEFD,YAAe,4aACfE,UACE,YACA,eACA,kCACA,WAEFI,SACE,SAAU,MAAO,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa;EAOlG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,SACZE,QACE,aAEFD,YAAe,6LAGfE,UACE,4BACA,yBAEFI,SACE,WACA,WAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,SACZE,QACE,SACA,YACA,cACA,OAEFD,YAAe,yGACfE,UACE,SACA,YACA,yBACA,gBAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOnG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,SACZE,QACE,cAEFD,YAAe,uEACfE,UACE,yBACA,UACA,iBACA,WAEFI,SACE,SAAU,SAAU,OAAQ,aAO3B,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,SACZE,QACE,UAEFD,YAAe,oCACfE,UACE,oBACA,SACA,SAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOnG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,SACZE,QACE,UACA,aACA,qBACA,YACA,eACA,uBACA,QAEFD,YAAe,mCACfE,UACE,UACA,aACA,oBACA,yBACA,iBAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,QAAS,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOlG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,OACZE,QACE,YACA,iBACA,oBACA,0BACA,iBAEFD,YACI,iFACJE,UACE,MACA,UACA,cACA,kBACA,gBACA,+BACA,eAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,OAAQ,UAAW,SAAU,QAAS,YAAa,WAOjG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,SACZE,QACE,kBACA,iCAEFD,YAAe,mBACfE,UACE,2BACA,uBACA,2BACA,oBACA,6BAEFI,SACE,OAAQ,SAAU,aAOjB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,SACZE,QACE,WAEFD,YAAe,kCACfE,UACE,YACA,sBACA,yBACA,UACA,aAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,UAAW,SAAU,QAAS,YAAa,WAOlG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,SACZE,QACE,cAEFD,YAAe,6DACfE,UACE,mBACA,mBACA,mBACA,oBAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,SAAU,QAAS,YAAa,WAO/F,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,SACZE,QACE,eACA,6BACA,yBACA,uCAEFD,YAAe,8HAGfE,UACE,mBACA,SACA,qBACA,mBACA,YACA,UACA,WAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,QAAS,YAAa,WAOhG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,SACZE,QACE,YAEFD,YAAe,kCACfE,UACE,mCACA,YAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,YAAa,WAOjG,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,SACZE,QACE,KACA,gBAEFD,YAAe,qBACfE,UACE,yBACA,KACA,gBAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,WAO7F,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,SACZE,QACE,WACA,cACA,sBACA,aACA,gBACA,wBACA,SAEFD,YAAe,oCACfE,UACE,WACA,cACA,yBACA,kBAEFI,SACE,SAAU,MAAO,OAAQ,MAAO,MAAO,OAAQ,QAAS,OAAQ,UAAW,SAAU,QAAS,eAO7F,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,eACRiQ,SAAY,cACZE,QACE,sBAEFD,YAAe,kEACfE,UACE,sBAEFI,SAAY,eAAgB,eAMzB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,cACZE,QACE,KACA,gBAEFD,YAAe,mCACfE,UACE,KACA,oBACA,MAEFI,SAAY,eAAgB,eAAgB,WAMzC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,cACZE,QACE,YAEFD,YAAe,6IACfE,UACE,WACA,KACA,aACA,YAEFI,SAAY,eAMT,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,eACRiQ,SAAY,cACZE,QACE,kBACA,sBAEFD,YAAe,kEACfE,UACE,kBACA,sBAEFI,SAAY,eAAgB,eAMzB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,aACRiQ,SAAY,cACZE,QACE,qBAEFD,YACI,0CACJE,UACE,mBACA,4BAEFI,SAAY,SAAU,eAMnB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,cACZE,QACE,WACA,cACA,mBACA,eACA,oBACA,0BAEFD,YACI,0BACJE,UACE,WACA,iBACA,kBAEFI,SAAY,aAAc,eAMvB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,cACZE,QACE,YACA,eACA,oBACA,gBACA,qBACA,2BAEFD,YACI,iCACJE,UACE,YACA,kBACA,uBAEFI,SAAY,aAAc,YAKvB,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,aACZE,QACE,iBAEFD,YACI,8GACJE,UACE,gBACA,gBACA,gBACA,qBACA,yBAEFI,SACE,QAAS,UAAW,UAAW,YAAa,cAO3C,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,aACZE,QACE,mBAEFD,YACI,+IACJE,UACE,qBACA,oBAEFI,SACE,QAAS,UAAW,UAAW,SAAU,YAAa,WAAY,aAOjE,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,aACZE,QACE,SACA,eAEFD,YACI,wFACJE,UACE,WACA,WACA,UACA,YACA,SACA,gBAEFI,SACE,UAAW,UAAW,SAAU,YAAa,WAAY,UAAW,eAOnE,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,aACZE,QACE,QACA,gBAEFD,YACI,2FACJE,UACE,QACA,UACA,UACA,YACA,UACA,UACA,iBAEFI,SACE,QAAS,UAAW,UAAW,YAAa,WAAY,aAOvD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,WACRiQ,SAAY,aACZE,QACE,SACA,kBAEFD,YACI,yGACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,YAAa,UAAW,WAAY,aAOvD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,aACZE,QACE,QACA,iBAEFD,YACI,mGACJE,UACE,QACA,UACA,UACA,YACA,UACA,iBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,aAOtD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,YACRiQ,SAAY,aACZE,QACE,SACA,mBAEFD,YACI,0GACJE,UACE,UACA,WACA,UACA,YACA,WAEFI,SACE,QAAS,UAAW,SAAU,UAAW,WAAY,aAOpD,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,UACRiQ,SAAY,aACZE,QACE,SACA,iBAEFD,YACI,uGACJE,UACE,WACA,WACA,UACA,YACA,SACA,eACA,kBAEFI,SACE,QAAS,UAAW,SAAU,YAAa,WAAY,UAAW,eAOjE,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,qBACA,UACA,gBAEFD,YAAe,mDACfE,UACE,mBACA,qBACA,qBACA,wBACA,wBACA,8BAEFI,SACE,MACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,SACRiQ,SAAY,aACZE,QACE,uBACA,aAEFD,YAAe,mLACfE,UACE,kBACA,yBAEFI,SACE,MACA,OACA,MACA,OACA,MACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,eAEFD,YAAe,iDACfE,UACE,kBACA,oBACA,oBACA,uBACA,uBACA,gCACA,iCAEFI,SACE,MACA,OACA,SACA,OACA,MACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,aACZE,QACE,qBACA,WAEFD,YAAe,qCACfE,UACE,gBACA,kBACA,sBAEFI,SACE,MACA,OACA,MACA,SACA,MACA,MACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,4KACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,UAEFD,YAAe,iCACfE,UACE,kBACA,oBACA,qBAEFI,SACE,MACA,OACA,SACA,MACA,OACA,MACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,aACZE,QACE,oBACA,SACA,yBAEFD,YAAe,gIACfE,UACE,eACA,oBACA,mCACA,8BACA,2BAEFI,SACE,MACA,OACA,MACA,SACA,MACA,OACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,eACZE,QACE,WAEFD,YAAe,oDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,eACZE,QACE,WAEFD,YAAe,kDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,eACZE,QACE,WAEFD,YAAe,qDACfE,UACE,YACA,kBAEFI,SACE,MACA,OACA,UAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,QACRiQ,SAAY,eACZE,QACE,eAEFD,YACI,qEACJE,UACE,mBACA,wBACA,iBACA,iBACA,eAEFI,SACE,MACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,eACZE,QACE,UAEFD,YAAe,sCACfE,UACE,SACA,kBACA,eACA,cACA,2BAEFI,SACE,OACA,MACA,SAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,OACRiQ,SAAY,eACZE,QACE,WAEFD,YAAe,iDACfE,UACE,aAEFI,SACE,OACA,OACA,UAOC,SAASjgB,GAEdA,EAAOD,SACL0P,KAAQ,MACRiQ,SAAY,eACZE,QACE,UAEFD,YAAe,6DACfE,UACE,SACA,cAEFI,SACE,MACA,MACA,SAOC,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"} \ No newline at end of file diff --git a/dist/math.min.js b/dist/math.min.js index 736353ca0..de2d93776 100644 --- a/dist/math.min.js +++ b/dist/math.min.js @@ -6,11 +6,11 @@ * It features real and complex numbers, units, matrices, a large set of * mathematical functions, and a flexible expression parser. * - * @version 1.2.1-SNAPSHOT - * @date 2015-01-06 + * @version 1.3.0 + * @date 2015-02-09 * * @license - * Copyright (C) 2013-2014 Jos de Jong + * Copyright (C) 2013-2015 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy @@ -24,12 +24,12 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.math=r():e.math=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}var t={};return r.m=e,r.c=t,r.p="",r(0)}([function(e,r,t){e.exports=t(1)},function(e,r,t){"use strict";function n(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r={},a={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};r.config=function(e){if(e){if(i.deepExtend(a,e),e.precision&&r.type.BigNumber.config({precision:e.precision}),t(2)(r,a),e.number&&e.number.defaultType)throw new Error("setting `number.defaultType` is deprecated. Use `number` instead.");if(e.number&&e.number.precision)throw new Error("setting `number.precision` is deprecated. Use `precision` instead.");if(e.matrix&&e.matrix.defaultType)throw new Error("setting `matrix.defaultType` is deprecated. Use `matrix` instead.");if(e.matrix&&e.matrix["default"])throw new Error("setting `matrix.default` is deprecated. Use `matrix` instead.");if(e.decimals)throw new Error("setting `decimals` is deprecated. Use `precision` instead.")}return i.clone(a)},r.create=n;var s=t(155).constructor();if("function"!=typeof s.prototype.clone&&(s.prototype.clone=function(){return this}),"function"==typeof s.convert)throw new Error("Cannot add function convert to BigNumber: function already exists");return s.convert=function(e){return o(e)>15?e:new s(e)},r.error=t(5),r.type={},r.type.Complex=t(6),r.type.Range=t(7),r.type.Index=t(8),r.type.Matrix=t(9),r.type.Unit=t(10),r.type.Help=t(11),r.type.ResultSet=t(12),r.type.BigNumber=s,r.collection=t(13),r.expression={},r.expression.node=t(16),r.expression.parse=t(14),r.expression.Parser=t(15),r.expression.docs=t(17),t(29)(r,a),t(30)(r,a),t(31)(r,a),t(32)(r,a),t(33)(r,a),t(34)(r,a),t(35)(r,a),t(36)(r,a),t(37)(r,a),t(38)(r,a),t(39)(r,a),t(40)(r,a),t(41)(r,a),t(42)(r,a),t(43)(r,a),t(44)(r,a),t(45)(r,a),t(46)(r,a),t(47)(r,a),t(48)(r,a),t(49)(r,a),t(50)(r,a),t(51)(r,a),t(52)(r,a),t(53)(r,a),t(54)(r,a),t(55)(r,a),t(56)(r,a),t(57)(r,a),t(58)(r,a),t(59)(r,a),t(60)(r,a),t(61)(r,a),t(62)(r,a),t(63)(r,a),t(64)(r,a),t(65)(r,a),t(66)(r,a),t(67)(r,a),t(68)(r,a),t(69)(r,a),t(70)(r,a),t(71)(r,a),t(72)(r,a),t(73)(r,a),t(74)(r,a),t(75)(r,a),t(76)(r,a),t(77)(r,a),t(78)(r,a),t(79)(r,a),t(80)(r,a),t(81)(r,a),t(82)(r,a),t(83)(r,a),t(84)(r,a),t(85)(r,a),t(86)(r,a),t(87)(r,a),t(88)(r,a),t(89)(r,a),t(90)(r,a),t(91)(r,a),t(92)(r,a),t(93)(r,a),t(94)(r,a),t(95)(r,a),t(96)(r,a),t(97)(r,a),t(98)(r,a),t(99)(r,a),t(100)(r,a),t(101)(r,a),t(102)(r,a),t(103)(r,a),t(104)(r,a),t(105)(r,a),t(106)(r,a),t(107)(r,a),t(108)(r,a),t(109)(r,a),t(110)(r,a),t(111)(r,a),t(112)(r,a),t(113)(r,a),t(114)(r,a),t(115)(r,a),t(116)(r,a),t(117)(r,a),t(118)(r,a),t(119)(r,a),t(120)(r,a),t(121)(r,a),t(122)(r,a),t(123)(r,a),t(124)(r,a),t(125)(r,a),t(126)(r,a),t(127)(r,a),t(128)(r,a),t(129)(r,a),t(130)(r,a),t(131)(r,a),t(132)(r,a),t(133)(r,a),t(134)(r,a),t(135)(r,a),t(136)(r,a),t(137)(r,a),t(138)(r,a),t(139)(r,a),t(140)(r,a),t(141)(r,a),t(142)(r,a),t(143)(r,a),t(144)(r,a),t(145)(r,a),t(146)(r,a),t(147)(r,a),t(148)(r,a),t(149)(r,a),t(150)(r,a),t(151)(r,a),r.ifElse=function(){throw new Error("Function ifElse is deprecated. Use the conditional operator instead.")},t(2)(r,a),t(18)(r,a),t(19)(r,a),t(20)(r,a),t(21)(r,a),t(22)(r,a),t(23)(r,a),t(24)(r,a),t(25)(r,a),t(26)(r,a),t(27)(r,a),r.chaining={},r.chaining.Chain=t(28)(r,a),r.chaining.Selector=r.chaining.Chain,r.config(a),r.config(e),r}var i=t(3),o=t(4).digits,a=n();"undefined"!=typeof window&&(window.mathjs=a),e.exports=a},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(152),i=t(6),o=e.type.BigNumber,a="bignumber"===r.number;e.pi=a?n.pi(r.precision):Math.PI,e.tau=a?n.tau(r.precision):2*Math.PI,e.e=a?n.e(r.precision):Math.E,e.phi=a?n.phi(r.precision):1.618033988749895,e.i=new i(0,1),e.Infinity=1/0,e.NaN=0/0,e["true"]=!0,e["false"]=!1,e["null"]=null,e.uninitialized=t(153).UNINITIALIZED,e.E=e.e,e.LN2=a?new o(2).ln():Math.LN2,e.LN10=a?new o(10).ln():Math.LN10,e.LOG2E=a?new o(1).div(new o(2).ln()):Math.LOG2E,e.LOG10E=a?new o(1).div(new o(10).ln()):Math.LOG10E,e.PI=e.pi,e.SQRT1_2=a?new o(.5).sqrt():Math.SQRT1_2,e.SQRT2=a?new o(2).sqrt():Math.SQRT2,e.version=t(154)}},function(e,r){"use strict";r.clone=function t(e){var r=typeof e;if("number"===r||"string"===r||"boolean"===r||null===e||void 0===e)return e;if("function"==typeof e.clone)return e.clone();if(Array.isArray(e))return e.map(function(e){return t(e)});if(e instanceof Number)return new Number(e.valueOf());if(e instanceof String)return new String(e.valueOf());if(e instanceof Boolean)return new Boolean(e.valueOf());if(e instanceof Date)return new Date(e.valueOf());if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=t(e[i]));return n},r.extend=function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t]);return e},r.deepExtend=function n(e,r){if(Array.isArray(r))throw new TypeError("Arrays are not supported by deepExtend");for(var t in r)if(r.hasOwnProperty(t))if(r[t]&&r[t].constructor===Object)void 0===e[t]&&(e[t]={}),e[t].constructor===Object?n(e[t],r[t]):e[t]=r[t];else{if(Array.isArray(r[t]))throw new TypeError("Arrays are not supported by deepExtend");e[t]=r[t]}return e},r.deepEqual=function(e,t){var n,i,o;if(Array.isArray(e)){if(!Array.isArray(t))return!1;if(e.length!=t.length)return!1;for(i=0,o=e.length;o>i;i++)if(!r.deepEqual(e[i],t[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(t)||!(t instanceof Object))return!1;for(n in e)if(!r.deepEqual(e[n],t[n]))return!1;for(n in t)if(!r.deepEqual(e[n],t[n]))return!1;return!0}return typeof e==typeof t&&e==t}},function(e,r){"use strict";r.isNumber=function(e){return e instanceof Number||"number"==typeof e},r.isInteger=function(e){return e==Math.round(e)},r.sign=function(e){return e>0?1:0>e?-1:0},r.format=function(e,t){if("function"==typeof t)return t(e);if(1/0===e)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(t&&(t.notation&&(n=t.notation),r.isNumber(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;if(t&&t.exponential&&(void 0!==t.exponential.lower&&(o=t.exponential.lower),void 0!==t.exponential.upper&&(a=t.exponential.upper)),0===e)return"0";var s,u=Math.abs(e);if(u>=o&&a>u){var f=i?e.toPrecision(Math.min(i,21)):e.toPrecision();s=parseFloat(f)+""}else s=r.toExponential(e,i);return s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(Math.min(r-1,20)):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(Math.min(r,20))},r.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},r.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,r.nearlyEqual=function(e,t,n){if(null==n)return e==t;if(e==t)return!0;if(isNaN(e)||isNaN(t))return!1;if(isFinite(e)&&isFinite(t)){var i=Math.abs(e-t);return i="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){x++,y=w.charAt(x)}function u(e){x=e,y=w.charAt(x)}function f(){var e,r="";if(e=x,"+"==y?s():"-"==y&&(r+=y,s()),!o(y))return u(e),null;if("."==y){if(r+=y,s(),!a(y))return u(e),null}else{for(;a(y);)r+=y,s();"."==y&&(r+=y,s())}for(;a(y);)r+=y,s();if("E"==y||"e"==y){if(r+=y,s(),("+"==y||"-"==y)&&(r+=y,s()),!a(y))return u(e),null;for(;a(y);)r+=y,s()}return r}function c(){var e=w.charAt(x+1);if("I"==y||"i"==y)return s(),"1";if(!("+"!=y&&"-"!=y||"I"!=e&&"i"!=e)){var r="+"==y?"1":"-1";return s(),s(),r}return null}var l=t(160),p=t(10),m=l.number,h=l.number.isNumber,g=p.isUnit,d=l.string.isString;n.isComplex=function(e){return e instanceof n};var w,x,y;n.parse=function(e){if(w=e,x=-1,y="",!d(w))return null;s(),i();var r=f();if(r){if("I"==y||"i"==y)return s(),i(),y?null:new n(0,Number(r));i();var t=y;if("+"!=t&&"-"!=t)return i(),y?null:new n(Number(r),0);s(),i();var o=f();if(o){if("I"!=y&&"i"!=y)return null;s()}else if(o=c(),!o)return null;return"-"==t&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),y?null:new n(Number(r),Number(o))}return(r=c())?(i(),y?null:new n(0,Number(r))):null},n.fromPolar=function(){switch(arguments.length){case 1:var e=arguments[0];if("object"==typeof e)return n.fromPolar(e.r,e.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var r=arguments[0],t=arguments[1];if(h(r)){if(g(t)&&t.hasBase(p.BASE_UNITS.ANGLE)&&(t=t.toNumber("rad")),h(t))return new n(r*Math.cos(t),r*Math.sin(t));throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},n.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},n.prototype.clone=function(){return new n(this.re,this.im)},n.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},n.prototype.format=function(e){var r="",t=m.format(this.re,e),n=m.format(this.im,e);return r=0==this.im?t:0==this.re?1==this.im?"i":-1==this.im?"-i":n+"i":this.im>0?1==this.im?t+" + i":t+" + "+n+"i":-1==this.im?t+" - i":t+" - "+n.substring(1)+"i"},n.prototype.toString=function(){return this.format()},n.prototype.valueOf=n.prototype.toString,e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e&&!o.isNumber(e))throw new TypeError("Parameter start must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter end must be a number");if(null!=t&&!o.isNumber(t))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=r?parseFloat(r):0,this.step=null!=t?parseFloat(t):1}{var i=t(160),o=i.number,a=i.string;i.array}n.parse=function(e){if(!a.isString(e))return null;var r=e.split(":"),t=r.map(function(e){return parseFloat(e)}),i=t.some(function(e){return isNaN(e)});if(i)return null;switch(t.length){case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[2],t[1]);default:return null}},n.prototype.clone=function(){return new n(this.start,this.end,this.step)},n.isRange=function(e){return e instanceof n},n.prototype.size=function(){var e=0,r=this.start,t=this.step,n=this.end,i=n-r;return o.sign(t)==o.sign(i)?e=Math.ceil(i/t):0==i&&(e=0),isNaN(e)&&(e=0),[e]},n.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},n.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},n.prototype.forEach=function(e){var r=this.start,t=this.step,n=this.end,i=0;if(t>0)for(;n>r;)e(r,i,this),r+=t,i++;else if(0>t)for(;r>n;)e(r,i,this),r+=t,i++},n.prototype.map=function(e){var r=[];return this.forEach(function(t,n,i){r[n]=e(t,n,i)}),r},n.prototype.toArray=function(){var e=[];return this.forEach(function(r,t){e[t]=r}),e},n.prototype.valueOf=function(){return this.toArray()},n.prototype.format=function(e){var r=o.format(this.start,e);return 1!=this.step&&(r+=":"+o.format(this.step,e)),r+=":"+o.format(this.end,e)},n.prototype.toString=function(){return this.format()},e.exports=n},function(e,r,t){"use strict";function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._ranges=[],this._isScalar=!0;for(var e=0,r=arguments.length;r>e;e++){var t=arguments[e];if(t instanceof a)this._ranges.push(t),this._isScalar=!1;else if(c(t))this._ranges.push(i(t)),this._isScalar=!1;else if(u(t))this._ranges.push(i([t,t+1]));else{var o=t.valueOf();if(!c(o))throw new TypeError("Ranges must be an Array, Number, or Range");this._ranges.push(i(o)),this._isScalar=!1}}}function i(e){for(var r=e.length,t=0;r>t;t++)if(!u(e[t])||!f(e[t]))throw new TypeError("Index parameters must be integer numbers");switch(e.length){case 2:return new a(e[0],e[1]);case 3:return new a(e[0],e[1],e[2]);default:throw new SyntaxError("Wrong number of arguments in Index (2 or 3 expected)")}}var o=t(160),a=t(7),s=o.number,u=s.isNumber,f=s.isInteger,c=Array.isArray;n.prototype.clone=function(){var e=new n;return e._ranges=o.object.clone(this._ranges),e._isScalar=this._isScalar,e},n.isIndex=function(e){return e instanceof n},n.create=function(e){var r=new n;return n.apply(r,e),r},n.prototype.size=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.size()[0]}return e},n.prototype.max=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.max()}return e},n.prototype.min=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.min()}return e},n.prototype.forEach=function(e){for(var r=0,t=this._ranges.length;t>r;r++)e(this._ranges[r],r,this)},n.prototype.range=function(e){return this._ranges[e]||null},n.prototype.isScalar=function(){return this._isScalar},n.prototype.toArray=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=[],o=n.start,a=n.end,s=n.step;if(s>0)for(;a>o;)i.push(o),o+=s;else if(0>s)for(;o>a;)i.push(o),o+=s;e.push(i)}return e},n.prototype.valueOf=n.prototype.toArray,n.prototype.toString=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=s.format(n.start);1!=n.step&&(i+=":"+s.format(n.step)),i+=":"+s.format(n.end),e.push(i)}return"["+e.join(", ")+"]"},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof n)this._data=e.clone()._data;else if(d(e))this._data=f(e);else{if(null!=e)throw new TypeError("Unsupported type of data ("+c.types.type(e)+")");this._data=[]}this._size=h.size(this._data)}function i(e,r){if(!(r instanceof p))throw new TypeError("Invalid index");var t=r.isScalar();if(t)return e.get(r.min());var i=r.size();if(i.length!=e._size.length)throw new l(i.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,f=e._size.length;f>u;u++)w(a[u],e._size[u]),w(s[u],e._size[u]);return new n(o(e._data,r,i.length,0))}function o(e,r,t,n){var i=n==t-1,a=r.range(n);return a.map(i?function(r){return e[r]}:function(i){var a=e[i];return o(a,r,t,n+1)})}function a(e,r,t,i){if(!(r instanceof p))throw new TypeError("Invalid index");var o,a=r.size(),f=r.isScalar();if(t instanceof n?(o=t.size(),t=t.valueOf()):o=h.size(t),f){if(0!=o.length)throw new TypeError("Scalar expected");e.set(r.min(),t,i)}else{if(a.length");var d=r.max().map(function(e){return e+1});u(e,d,i);var w=a.length,x=0;s(e._data,r,t,w,x)}return e}function s(e,r,t,n,i){var o=i==n-1,a=r.range(i);a.forEach(o?function(r,n){w(r),e[r]=t[n]}:function(o,a){w(o),s(e[o],r,t[a],n,i+1)})}function u(e,r,t){for(var n=g.clone(e._size),i=!1;n.lengtho;o++)r[o]>n[o]&&(n[o]=r[o],i=!0);i&&e.resize(n,t)}function f(e){for(var r=0,t=e.length;t>r;r++){var i=e[r];d(i)?e[r]=f(i):i instanceof n&&(e[r]=f(i._data))}return e}var c=t(160),l=t(157),p=t(8),m=(c.number,c.string),h=c.array,g=c.object,d=Array.isArray,w=h.validateIndex;n.isMatrix=function(e){return e instanceof n},n.prototype.subset=function(e,r,t){switch(arguments.length){case 1:return i(this,e);case 2:case 3:return a(this,e,r,t);default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.get=function(e){if(!d(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new l(e.length,this._size.length);for(var r=this._data,t=0,n=e.length;n>t;t++){var i=e[t];w(i,r.length),r=r[i]}return g.clone(r)},n.prototype.set=function(e,r,t){var n,i;if(!d(e))throw new Error("Array expected");if(e.lengthn;n++){var s=e[n];w(s,a.length),a=a[s]}return s=e[e.length-1],w(s,a.length),a[s]=r,this},n.prototype.resize=function(e,r){return this._size=g.clone(e),this._data=h.resize(this._data,this._size,r),this},n.prototype.clone=function(){var e=new n;return e._data=g.clone(this._data),e._size=g.clone(this._size),e},n.prototype.size=function(){return this._size},n.prototype.map=function(e){var r=this,t=new n,i=function(t,n){return d(t)?t.map(function(e,r){return i(e,n.concat(r))}):e(t,n,r)};return t._data=i(this._data,[]),t._size=g.clone(this._size),t},n.prototype.forEach=function(e){var r=this,t=function(n,i){d(n)?n.forEach(function(e,r){t(e,i.concat(r))}):e(n,i,r)};t(this._data,[])},n.prototype.toArray=function(){return g.clone(this._data)},n.prototype.valueOf=function(){return this._data},n.prototype.format=function(e){return m.format(this._data,e)},n.prototype.toString=function(){return m.format(this._data)},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!x(e))throw new TypeError("First parameter in Unit constructor must be a number");if(void 0!=r&&(!y(r)||""==r))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=r){var t=l(r);if(!t)throw new SyntaxError('Unknown unit "'+r+'"');this.unit=t.unit,this.prefix=t.prefix}else this.unit=A,this.prefix=b;this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1}function i(){for(;" "==h||" "==h;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){m++,h=p.charAt(m)}function u(e){m=e,h=p.charAt(m)}function f(){var e,r="";if(e=m,"+"==h?s():"-"==h&&(r+=h,s()),!o(h))return u(e),null;if("."==h){if(r+=h,s(),!a(h))return u(e),null}else{for(;a(h);)r+=h,s();"."==h&&(r+=h,s())}for(;a(h);)r+=h,s();if("E"==h||"e"==h){if(r+=h,s(),("+"==h||"-"==h)&&(r+=h,s()),!a(h))return u(e),null;for(;a(h);)r+=h,s()}return r}function c(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var r in M)if(M.hasOwnProperty(r)&&w.endsWith(e,r)){var t=M[r],n=e.length-r.length,i=e.substring(0,n),o=t.prefixes[i];if(void 0!==o)return{unit:t,prefix:o}}return null}var p,m,h,g=t(160),d=g.number,w=g.string,x=g.number.isNumber,y=g.string.isString;n.parse=function(e){if(p=e,m=-1,h="",!y(p))return null;s(),i();var r,t=f();if(t){if(r=c(),s(),i(),h)return null;if(t&&r)try{return new n(Number(t),r)}catch(o){}}else{if(r=c(),s(),i(),h)return null;if(r)try{return new n(null,r)}catch(o){}}return null},n.isUnit=function(e){return e instanceof n},n.prototype.clone=function(){var e=new n;for(var r in this)this.hasOwnProperty(r)&&(e[r]=this[r]);return e},n.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},n.prototype._unnormalize=function(e,r){return void 0==r?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/r-this.unit.offset},n.isValuelessUnit=function(e){return null!=l(e)},n.prototype.hasBase=function(e){return this.unit.base===e},n.prototype.equalBase=function(e){return this.unit.base===e.unit.base},n.prototype.equals=function(e){return this.equalBase(e)&&this.value==e.value},n.prototype.to=function(e){var r,t=null==this.value?this._normalize(1):this.value;if(y(e)){if(r=new n(null,e),!this.equalBase(r))throw new Error("Units do not match");return r.value=t,r.fixPrefix=!0,r}if(e instanceof n){if(!this.equalBase(e))throw new Error("Units do not match");if(null!==e.value)throw new Error("Cannot convert to a unit with a value");return r=e.clone(),r.value=t,r.fixPrefix=!0,r}throw new Error("String or Unit expected as parameter")},n.prototype.toNumber=function(e){var r=this.to(e);return r._unnormalize(r.value,r.prefix.value)},n.prototype.toString=function(){return this.format()},n.prototype.valueOf=n.prototype.toString,n.prototype.format=function(e){var r,t;if(null===this.value||this.fixPrefix)r=this._unnormalize(this.value),t=null!==this.value?d.format(r,e)+" ":"",t+=this.prefix.name+this.unit.name;else{var n=this._bestPrefix();r=this._unnormalize(this.value,n.value),t=d.format(r,e)+" ",t+=n.name+this.unit.name}return t},n.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),r=b,t=Math.abs(Math.log(e/r.value)/Math.LN10-1.2),n=this.unit.prefixes;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];if(o.scientific){var a=Math.abs(Math.log(e/o.value)/Math.LN10-1.2);t>a&&(r=o,t=a)}}return r};var v={NONE:{"":{name:"",value:1,scientific:!0}},SHORT:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:10,scientific:!1},h:{name:"h",value:100,scientific:!1},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},d:{name:"d",value:.1,scientific:!1},c:{name:"c",value:.01,scientific:!1},m:{name:"m",value:.001,scientific:!0},u:{name:"u",value:1e-6,scientific:!0},n:{name:"n",value:1e-9,scientific:!0},p:{name:"p",value:1e-12,scientific:!0},f:{name:"f",value:1e-15,scientific:!0},a:{name:"a",value:1e-18,scientific:!0},z:{name:"z",value:1e-21,scientific:!0},y:{name:"y",value:1e-24,scientific:!0}},LONG:{"":{name:"",value:1,scientific:!0},deca:{name:"deca",value:10,scientific:!1},hecto:{name:"hecto",value:100,scientific:!1},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},deci:{name:"deci",value:.1,scientific:!1},centi:{name:"centi",value:.01,scientific:!1},milli:{name:"milli",value:.001,scientific:!0},micro:{name:"micro",value:1e-6,scientific:!0},nano:{name:"nano",value:1e-9,scientific:!0},pico:{name:"pico",value:1e-12,scientific:!0},femto:{name:"femto",value:1e-15,scientific:!0},atto:{name:"atto",value:1e-18,scientific:!0},zepto:{name:"zepto",value:1e-21,scientific:!0},yocto:{name:"yocto",value:1e-24,scientific:!0}},SQUARED:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:100,scientific:!1},h:{name:"h",value:1e4,scientific:!1},k:{name:"k",value:1e6,scientific:!0},M:{name:"M",value:1e12,scientific:!0},G:{name:"G",value:1e18,scientific:!0},T:{name:"T",value:1e24,scientific:!0},P:{name:"P",value:1e30,scientific:!0},E:{name:"E",value:1e36,scientific:!0},Z:{name:"Z",value:1e42,scientific:!0},Y:{name:"Y",value:1e48,scientific:!0},d:{name:"d",value:.01,scientific:!1},c:{name:"c",value:1e-4,scientific:!1},m:{name:"m",value:1e-6,scientific:!0},u:{name:"u",value:1e-12,scientific:!0},n:{name:"n",value:1e-18,scientific:!0},p:{name:"p",value:1e-24,scientific:!0},f:{name:"f",value:1e-30,scientific:!0},a:{name:"a",value:1e-36,scientific:!0},z:{name:"z",value:1e-42,scientific:!0},y:{name:"y",value:1e-42,scientific:!0}},CUBIC:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:1e3,scientific:!1},h:{name:"h",value:1e6,scientific:!1},k:{name:"k",value:1e9,scientific:!0},M:{name:"M",value:1e18,scientific:!0},G:{name:"G",value:1e27,scientific:!0},T:{name:"T",value:1e36,scientific:!0},P:{name:"P",value:1e45,scientific:!0},E:{name:"E",value:1e54,scientific:!0},Z:{name:"Z",value:1e63,scientific:!0},Y:{name:"Y",value:1e72,scientific:!0},d:{name:"d",value:.001,scientific:!1},c:{name:"c",value:1e-6,scientific:!1},m:{name:"m",value:1e-9,scientific:!0},u:{name:"u",value:1e-18,scientific:!0},n:{name:"n",value:1e-27,scientific:!0},p:{name:"p",value:1e-36,scientific:!0},f:{name:"f",value:1e-45,scientific:!0},a:{name:"a",value:1e-54,scientific:!0},z:{name:"z",value:1e-63,scientific:!0},y:{name:"y",value:1e-72,scientific:!0}},BINARY_SHORT:{"":{name:"",value:1,scientific:!0},k:{name:"k",value:1024,scientific:!0},M:{name:"M",value:Math.pow(1024,2),scientific:!0},G:{name:"G",value:Math.pow(1024,3),scientific:!0},T:{name:"T",value:Math.pow(1024,4),scientific:!0},P:{name:"P",value:Math.pow(1024,5),scientific:!0},E:{name:"E",value:Math.pow(1024,6),scientific:!0},Z:{name:"Z",value:Math.pow(1024,7),scientific:!0},Y:{name:"Y",value:Math.pow(1024,8),scientific:!0},Ki:{name:"Ki",value:1024,scientific:!0},Mi:{name:"Mi",value:Math.pow(1024,2),scientific:!0},Gi:{name:"Gi",value:Math.pow(1024,3),scientific:!0},Ti:{name:"Ti",value:Math.pow(1024,4),scientific:!0},Pi:{name:"Pi",value:Math.pow(1024,5),scientific:!0},Ei:{name:"Ei",value:Math.pow(1024,6),scientific:!0},Zi:{name:"Zi",value:Math.pow(1024,7),scientific:!0},Yi:{name:"Yi",value:Math.pow(1024,8),scientific:!0}},BINARY_LONG:{"":{name:"",value:1,scientific:!0},kilo:{name:"kilo",value:1024,scientific:!0},mega:{name:"mega",value:Math.pow(1024,2),scientific:!0},giga:{name:"giga",value:Math.pow(1024,3),scientific:!0},tera:{name:"tera",value:Math.pow(1024,4),scientific:!0},peta:{name:"peta",value:Math.pow(1024,5),scientific:!0},exa:{name:"exa",value:Math.pow(1024,6),scientific:!0},zetta:{name:"zetta",value:Math.pow(1024,7),scientific:!0},yotta:{name:"yotta",value:Math.pow(1024,8),scientific:!0},kibi:{name:"kibi",value:1024,scientific:!0},mebi:{name:"mebi",value:Math.pow(1024,2),scientific:!0},gibi:{name:"gibi",value:Math.pow(1024,3),scientific:!0},tebi:{name:"tebi",value:Math.pow(1024,4),scientific:!0},pebi:{name:"pebi",value:Math.pow(1024,5),scientific:!0},exi:{name:"exi",value:Math.pow(1024,6),scientific:!0},zebi:{name:"zebi",value:Math.pow(1024,7),scientific:!0},yobi:{name:"yobi",value:Math.pow(1024,8),scientific:!0}}},b={name:"",value:1,scientific:!0},E={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},N={},A={name:"",base:N,value:1,offset:0},M={meter:{name:"meter",base:E.LENGTH,prefixes:v.LONG,value:1,offset:0},inch:{name:"inch",base:E.LENGTH,prefixes:v.NONE,value:.0254,offset:0},foot:{name:"foot",base:E.LENGTH,prefixes:v.NONE,value:.3048,offset:0},yard:{name:"yard",base:E.LENGTH,prefixes:v.NONE,value:.9144,offset:0},mile:{name:"mile",base:E.LENGTH,prefixes:v.NONE,value:1609.344,offset:0},link:{name:"link",base:E.LENGTH,prefixes:v.NONE,value:.201168,offset:0},rod:{name:"rod",base:E.LENGTH,prefixes:v.NONE,value:5.02921,offset:0},chain:{name:"chain",base:E.LENGTH,prefixes:v.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:E.LENGTH,prefixes:v.NONE,value:1e-10,offset:0},m:{name:"m",base:E.LENGTH,prefixes:v.SHORT,value:1,offset:0},"in":{name:"in",base:E.LENGTH,prefixes:v.NONE,value:.0254,offset:0},ft:{name:"ft",base:E.LENGTH,prefixes:v.NONE,value:.3048,offset:0},yd:{name:"yd",base:E.LENGTH,prefixes:v.NONE,value:.9144,offset:0},mi:{name:"mi",base:E.LENGTH,prefixes:v.NONE,value:1609.344,offset:0},li:{name:"li",base:E.LENGTH,prefixes:v.NONE,value:.201168,offset:0},rd:{name:"rd",base:E.LENGTH,prefixes:v.NONE,value:5.02921,offset:0},ch:{name:"ch",base:E.LENGTH,prefixes:v.NONE,value:20.1168,offset:0},mil:{name:"mil",base:E.LENGTH,prefixes:v.NONE,value:254e-7,offset:0},m2:{name:"m2",base:E.SURFACE,prefixes:v.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:E.SURFACE,prefixes:v.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:E.SURFACE,prefixes:v.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:E.SURFACE,prefixes:v.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:E.SURFACE,prefixes:v.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:E.SURFACE,prefixes:v.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:E.SURFACE,prefixes:v.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:E.SURFACE,prefixes:v.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:E.VOLUME,prefixes:v.CUBIC,value:1,offset:0},L:{name:"L",base:E.VOLUME,prefixes:v.SHORT,value:.001,offset:0},l:{name:"l",base:E.VOLUME,prefixes:v.SHORT,value:.001,offset:0},litre:{name:"litre",base:E.VOLUME,prefixes:v.LONG,value:.001,offset:0},cuin:{name:"cuin",base:E.VOLUME,prefixes:v.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:E.VOLUME,prefixes:v.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:E.VOLUME,prefixes:v.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:E.VOLUME,prefixes:v.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:E.VOLUME,prefixes:v.NONE,value:15e-6,offset:0},drop:{name:"drop",base:E.VOLUME,prefixes:v.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:E.VOLUME,prefixes:v.NONE,value:5e-8,offset:0},minim:{name:"minim",base:E.VOLUME,prefixes:v.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:E.VOLUME,prefixes:v.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:E.VOLUME,prefixes:v.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:E.VOLUME,prefixes:v.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:E.VOLUME,prefixes:v.NONE,value:1e-6,offset:0},cup:{name:"cup",base:E.VOLUME,prefixes:v.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:E.VOLUME,prefixes:v.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:E.VOLUME,prefixes:v.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:E.VOLUME,prefixes:v.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:E.VOLUME,prefixes:v.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:E.VOLUME,prefixes:v.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:E.VOLUME,prefixes:v.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:E.VOLUME,prefixes:v.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:E.VOLUME,prefixes:v.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:E.VOLUME,prefixes:v.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:E.VOLUME,prefixes:v.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:E.VOLUME,prefixes:v.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:E.VOLUME,prefixes:v.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:E.VOLUME,prefixes:v.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:E.VOLUME,prefixes:v.NONE,value:.1173478,offset:0},obl:{name:"obl",base:E.VOLUME,prefixes:v.NONE,value:.1589873,offset:0},g:{name:"g",base:E.MASS,prefixes:v.SHORT,value:.001,offset:0},gram:{name:"gram",base:E.MASS,prefixes:v.LONG,value:.001,offset:0},ton:{name:"ton",base:E.MASS,prefixes:v.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:E.MASS,prefixes:v.SHORT,value:1e3,offset:0},grain:{name:"grain",base:E.MASS,prefixes:v.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:E.MASS,prefixes:v.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:E.MASS,prefixes:v.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:E.MASS,prefixes:v.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:E.MASS,prefixes:v.NONE,value:45.359237,offset:0},stick:{name:"stick",base:E.MASS,prefixes:v.NONE,value:.115,offset:0},gr:{name:"gr",base:E.MASS,prefixes:v.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:E.MASS,prefixes:v.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:E.MASS,prefixes:v.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:E.MASS,prefixes:v.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:E.MASS,prefixes:v.NONE,value:45.359237,offset:0},s:{name:"s",base:E.TIME,prefixes:v.SHORT,value:1,offset:0},min:{name:"min",base:E.TIME,prefixes:v.NONE,value:60,offset:0},h:{name:"h",base:E.TIME,prefixes:v.NONE,value:3600,offset:0},second:{name:"second",base:E.TIME,prefixes:v.LONG,value:1,offset:0},sec:{name:"sec",base:E.TIME,prefixes:v.LONG,value:1,offset:0},minute:{name:"minute",base:E.TIME,prefixes:v.NONE,value:60,offset:0},hour:{name:"hour",base:E.TIME,prefixes:v.NONE,value:3600,offset:0},day:{name:"day",base:E.TIME,prefixes:v.NONE,value:86400,offset:0},rad:{name:"rad",base:E.ANGLE,prefixes:v.NONE,value:1,offset:0},deg:{name:"deg",base:E.ANGLE,prefixes:v.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:E.ANGLE,prefixes:v.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:E.ANGLE,prefixes:v.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:E.CURRENT,prefixes:v.SHORT,value:1,offset:0},ampere:{name:"ampere",base:E.CURRENT,prefixes:v.LONG,value:1,offset:0},K:{name:"K",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:0},degC:{name:"degC",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:273.15},degF:{name:"degF",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:0},celsius:{name:"celsius",base:E.TEMPERATURE,prefixes:v.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:E.TEMPERATURE,prefixes:v.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:E.AMOUNT_OF_SUBSTANCE,prefixes:v.NONE,value:1,offset:0},mole:{name:"mole",base:E.AMOUNT_OF_SUBSTANCE,prefixes:v.NONE,value:1,offset:0},cd:{name:"cd",base:E.LUMINOUS_INTENSITY,prefixes:v.NONE,value:1,offset:0},candela:{name:"candela",base:E.LUMINOUS_INTENSITY,prefixes:v.NONE,value:1,offset:0},N:{name:"N",base:E.FORCE,prefixes:v.SHORT,value:1,offset:0},newton:{name:"newton",base:E.FORCE,prefixes:v.LONG,value:1,offset:0},lbf:{name:"lbf",base:E.FORCE,prefixes:v.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:E.FORCE,prefixes:v.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:E.BIT,prefixes:v.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:E.BIT,prefixes:v.BINARY_LONG,value:1,offset:0},B:{name:"B",base:E.BIT,prefixes:v.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:E.BIT,prefixes:v.BINARY_LONG,value:8,offset:0}},T={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",litres:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fluiddrams:"fluiddram",fluidounces:"fluidounce",gills:"gill",cups:"cup",pints:"pint",quarts:"quart",gallons:"gallon",beerbarrels:"beerbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",seconds:"second",minutes:"minute",hours:"hour",days:"day",radians:"rad",degrees:"deg",gradients:"grad",cycles:"cycle",amperes:"ampere",moles:"mole"}; -for(var S in T)if(T.hasOwnProperty(S)){var O=M[T[S]],C=Object.create(O);C.name=S,M[S]=C}M.lt=M.l,M.liter=M.litre,M.liters=M.litres,M.lb=M.lbm,M.lbs=M.lbm,n.PREFIXES=v,n.BASE_UNITS=E,n.UNITS=M,e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.math=e,this.doc=r}var i=t(160),o=i.object,a=i.string;n.isHelp=function(e){return e instanceof n},n.prototype.toString=function(){var e=this.doc||{},r="\n";if(e.name&&(r+="Name: "+e.name+"\n\n"),e.category&&(r+="Category: "+e.category+"\n\n"),e.description&&(r+="Description:\n "+e.description+"\n\n"),e.syntax&&(r+="Syntax:\n "+e.syntax.join("\n ")+"\n\n"),e.examples){var t=this.math.parser();r+="Examples:\n";for(var i=0;i=r){if(c(e[0])){for(u=i(e),a=[],o=0;ot;t++){var a=[];for(r=0;n>r;r++)a.push(e[r][t]);o.push(a)}return o}{var o=t(160),a=t(158),s=t(157),u=t(9),f=o.array,c=o.array.isArray;o.string.isString}r.argsToArray=function(e){if(0==e.length)return[];if(1==e.length){var r=e[0];return r instanceof u&&(r=r.valueOf()),c(r)||(r=[r]),r}return o.array.argsToArray(e)},r.isCollection=function(e){return c(e)||e instanceof u},r.deepMap=function l(e,r){return e&&"function"==typeof e.map?e.map(function(e){return l(e,r)}):r(e)},r.deepMap2=function p(e,r,t){var n,i,o;if(c(e))if(c(r)){if(e.length!=r.length)throw new s(e.length,r.length);for(n=[],i=e.length,o=0;i>o;o++)n[o]=p(e[o],r[o],t)}else{if(r instanceof u)return n=p(e,r.valueOf(),t),new u(n);for(n=[],i=e.length,o=0;i>o;o++)n[o]=p(e[o],r,t)}else{if(e instanceof u)return r instanceof u?(n=p(e.valueOf(),r.valueOf(),t),new u(n)):(n=p(e.valueOf(),r,t),new u(n));if(c(r))for(n=[],i=r.length,o=0;i>o;o++)n[o]=p(e,r[o],t);else{if(r instanceof u)return n=p(e,r.valueOf(),t),new u(n);n=t(e,r)}}return n},r.reduce=function(e,r,t){var i=c(e)?f.size(e):e.size();if(0>r)throw new a(r);if(r>=i.length)throw new a(r,i.length);return e instanceof u?new u(n(e.valueOf(),r,t)):n(e,r,t)},r.deepForEach=function m(e,r){e instanceof u&&(e=e.valueOf());for(var t=0,n=e.length;n>t;t++){var i=e[t];c(i)?m(i,r):r(i)}}},function(e,r,t){"use strict";function n(e,r){if(1!=arguments.length&&2!=arguments.length)throw new X("parse",arguments.length,1,2);if(gr=r&&r.nodes?r.nodes:{},Q(e))return dr=e,g();if(K(e)||e instanceof $)return J.deepMap(e,function(e){if(!Q(e))throw new TypeError("String expected");return dr=e,g()});throw new TypeError("String or matrix expected")}function i(){wr=0,xr=dr.charAt(0),br=0,Er=null}function o(){wr++,xr=dr.charAt(wr)}function a(){return dr.charAt(wr+1)}function s(){return dr.charAt(wr+2)}function u(){for(vr=pr.NULL,yr="";" "==xr||" "==xr||"\n"==xr&&br;)o();if("#"==xr)for(;"\n"!=xr&&""!=xr;)o();if(""==xr)return void(vr=pr.DELIMITER);if("\n"==xr&&!br)return vr=pr.DELIMITER,yr=xr,void o();var e=xr+a(),r=e+s();if(3==r.length&&mr[r])return vr=pr.DELIMITER,yr=r,o(),o(),void o();if(2==e.length&&mr[e])return vr=pr.DELIMITER,yr=e,o(),void o();if(mr[xr])return vr=pr.DELIMITER,yr=xr,void o();if(!m(xr)){if(p(xr)){for(;p(xr)||h(xr);)yr+=xr,o();return void(vr=hr[yr]?pr.DELIMITER:pr.SYMBOL)}for(vr=pr.UNKNOWN;""!=xr;)yr+=xr,o();throw H('Syntax error in part "'+yr+'"')}if(vr=pr.NUMBER,"."==xr)yr+=xr,o(),h(xr)||(vr=pr.UNKNOWN);else{for(;h(xr);)yr+=xr,o();"."==xr&&(yr+=xr,o())}for(;h(xr);)yr+=xr,o();if(e=a(),("E"==xr||"e"==xr)&&(h(e)||"-"==e||"+"==e))for(yr+=xr,o(),("+"==xr||"-"==xr)&&(yr+=xr,o()),h(xr)||(vr=pr.UNKNOWN);h(xr);)yr+=xr,o()}function f(){do u();while("\n"==yr)}function c(){br++}function l(){br--}function p(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function m(e){return e>="0"&&"9">=e||"."==e}function h(e){return e>="0"&&"9">=e}function g(){i(),u();var e=d();if(""!=yr)throw vr==pr.DELIMITER?Y("Unexpected operator "+yr):H('Unexpected part "'+yr+'"');return e}function d(){var e,r,t=[];if(""==yr)return new ir("undefined","undefined");for("\n"!=yr&&";"!=yr&&(e=w());"\n"==yr||";"==yr;)0==t.length&&e&&(r=";"!=yr,t.push({node:e,visible:r})),u(),"\n"!=yr&&";"!=yr&&""!=yr&&(e=w(),r=";"!=yr,t.push({node:e,visible:r}));return t.length>0?new tr(t):e}function w(){if(vr==pr.SYMBOL&&"function"==yr)throw H('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return x()}function x(){var e,r,t,n,i=y();if("="==yr){if(i instanceof cr)return e=i.name,f(),t=x(),new rr(e,t);if(i instanceof ar)return f(),t=x(),new lr(i,t);if(i instanceof ur&&(n=!0,r=[],e=i.name,i.args.forEach(function(e,t){e instanceof cr?r[t]=e.name:n=!1}),n))return f(),t=x(),new or(e,r,t);throw H("Invalid left hand side of assignment operator =")}return i}function y(){for(var e=v();"?"==yr;){var r=Er;Er=br,f();var t=e,n=v();if(":"!=yr)throw H("False part of conditional expression expected");Er=null,f();var i=y();e=new nr(t,n,i),Er=r}return e}function v(){for(var e=b();"or"==yr;)f(),e=new sr("or","or",[e,b()]);return e}function b(){for(var e=E();"xor"==yr;)f(),e=new sr("xor","xor",[e,E()]);return e}function E(){for(var e=N();"and"==yr;)f(),e=new sr("and","and",[e,N()]);return e}function N(){for(var e=A();"|"==yr;)f(),e=new sr("|","bitOr",[e,A()]);return e}function A(){for(var e=M();"^|"==yr;)f(),e=new sr("^|","bitXor",[e,M()]);return e}function M(){for(var e=T();"&"==yr;)f(),e=new sr("&","bitAnd",[e,T()]);return e}function T(){var e,r,t,n,i;for(e=S(),r={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};yr in r;)t=yr,n=r[t],f(),i=[e,S()],e=new sr(t,n,i);return e}function S(){var e,r,t,n,i;for(e=O(),r={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};yr in r;)t=yr,n=r[t],f(),i=[e,O()],e=new sr(t,n,i);return e}function O(){var e,r,t,n,i;for(e=C(),r={to:"to","in":"to"};yr in r;)t=yr,n=r[t],f(),i=[e,C()],e=new sr(t,n,i);return e}function C(){var e,r=[];if(e=":"==yr?new ir("1","number"):U(),":"==yr&&Er!==br){for(r.push(e);":"==yr&&r.length<3;)f(),r.push(")"==yr||"]"==yr||","==yr||""==yr?new cr("end"):U());e=3==r.length?new fr(r[0],r[2],r[1]):new fr(r[0],r[1])}return e}function U(){var e,r,t,n,i;for(e=B(),r={"+":"add","-":"subtract"};yr in r;)t=yr,n=r[t],f(),i=[e,B()],e=new sr(t,n,i);return e}function B(){var e,r,t,n,i;if(e=q(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},yr in r)for(;yr in r;)t=yr,n=r[t],f(),i=[e,q()],e=new sr(t,n,i);return(vr==pr.SYMBOL||"in"==yr&&e instanceof ir||vr==pr.NUMBER&&!(e instanceof ir)||"("==yr||"["==yr)&&(e=new sr("*","multiply",[e,B()])),e}function q(){var e,r,t={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[yr];return t?(e=yr,f(),r=[q()],new sr(e,t,r)):z()}function z(){var e,r,t,n;return e=I(),("^"==yr||".^"==yr)&&(r=yr,t="^"==r?"pow":"dotPow",f(),n=[e,q()],e=new sr(r,t,n)),e}function I(){var e,r,t,n,i;for(e=_(),r={"!":"factorial","'":"transpose"};yr in r;)t=yr,n=r[t],u(),i=[e],e=new sr(t,n,i);return e}function _(){var e,r=[];if(vr==pr.SYMBOL&&gr[yr]){if(e=gr[yr],u(),"("==yr){if(r=[],c(),u(),")"!=yr)for(r.push(y());","==yr;)u(),r.push(y());if(")"!=yr)throw H("Parenthesis ) expected");l(),u()}return new e(r)}return R()}function R(){var e,r;return vr==pr.SYMBOL||vr==pr.DELIMITER&&yr in hr?(r=yr,u(),e=L(r),e=P(e)):F()}function L(e){var r;if("("==yr){if(r=[],c(),u(),")"!=yr)for(r.push(y());","==yr;)u(),r.push(y());if(")"!=yr)throw H("Parenthesis ) expected");return l(),u(),new ur(e,r)}return new cr(e)}function P(e){for(var r;"["==yr;){if(r=[],c(),u(),"]"!=yr)for(r.push(y());","==yr;)u(),r.push(y());if("]"!=yr)throw H("Parenthesis ] expected");l(),u(),e=new ar(e,r)}return e}function F(){var e,r,t;if('"'==yr){for(r="",t="";""!=xr&&('"'!=xr||"\\"==t);)r+=xr,t=xr,o();if(u(),'"'!=yr)throw H('End of string " expected');return u(),e=new ir(r,"string"),e=P(e)}return k()}function k(){var e,r,t,n;if("["==yr){if(c(),u(),"]"!=yr){var i=j();if(";"==yr){for(t=1,r=[i];";"==yr;)u(),r[t]=j(),t++;if("]"!=yr)throw H("End of matrix ] expected");l(),u(),n=r[0].nodes.length;for(var o=1;t>o;o++)if(r[o].nodes.length!=n)throw Y("Column dimensions mismatch ("+r[o].nodes.length+" != "+n+")");e=new er(r)}else{if("]"!=yr)throw H("End of matrix ] expected");l(),u(),e=i}}else l(),u(),e=new er([]);return e}return D()}function j(){for(var e=[x()],r=1;","==yr;)u(),e[r]=x(),r++;return new er(e)}function D(){var e;return vr==pr.NUMBER?(e=yr,u(),new ir(e,"number")):G()}function G(){var e;if("("==yr){if(c(),u(),e=x(),")"!=yr)throw H("Parenthesis ) expected");return l(),u(),e}return V()}function V(){throw H(""==yr?"Unexpected end of expression":"Value expected")}function Z(){return wr-yr.length+1}function H(e){var r=Z(),t=new SyntaxError(e+" (char "+r+")");return t["char"]=r,t}function Y(e){var r=Z(),t=new Error(e+" (char "+r+")");return t["char"]=r,t}var W=t(160),X=t(156),Q=W.string.isString,K=Array.isArray,$=(W.types.type,t(6),t(9)),J=(t(10),t(13)),er=t(161),rr=t(162),tr=t(163),nr=t(164),ir=t(165),or=t(166),ar=t(167),sr=t(168),ur=t(169),fr=t(170),cr=t(171),lr=t(172),pr={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},mr={",":!0,"(":!0,")":!0,"[":!0,"]":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},hr={mod:!0,to:!0,"in":!0,and:!0,xor:!0,or:!0,not:!0},gr={},dr="",wr=0,xr="",yr="",vr=pr.NULL,br=0,Er=null;e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof Object))throw new TypeError("Object expected as parameter math");this.math=e,this.scope={}}var i=t(14);n.prototype.parse=function(){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},n.prototype.compile=function(){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},n.prototype.eval=function(e){return i(e).compile(this.math).eval(this.scope)},n.prototype.get=function(e){return this.scope[e]},n.prototype.set=function(e,r){return this.scope[e]=r},n.prototype.remove=function(e){delete this.scope[e]},n.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},e.exports=n},function(e,r,t){"use strict";r.ArrayNode=t(161),r.AssignmentNode=t(162),r.BlockNode=t(163),r.ConditionalNode=t(164),r.ConstantNode=t(165),r.IndexNode=t(167),r.FunctionAssignmentNode=t(166),r.FunctionNode=t(169),r.Node=t(173),r.OperatorNode=t(168),r.RangeNode=t(170),r.SymbolNode=t(171),r.UpdateNode=t(172)},function(e,r,t){r.e=t(177),r.E=t(177),r["false"]=t(178),r.i=t(179),r.Infinity=t(180),r.LN2=t(181),r.LN10=t(182),r.LOG2E=t(183),r.LOG10E=t(184),r.NaN=t(185),r["null"]=t(186),r.pi=t(187),r.PI=t(187),r.phi=t(188),r.SQRT1_2=t(189),r.SQRT2=t(190),r.tau=t(191),r["true"]=t(192),r.version=t(193),r.abs=t(197),r.add=t(198),r.ceil=t(199),r.cube=t(200),r.divide=t(201),r.dotDivide=t(202),r.dotMultiply=t(203),r.dotPow=t(204),r.exp=t(205),r.fix=t(206),r.floor=t(207),r.gcd=t(208),r.lcm=t(209),r.log=t(210),r.log10=t(211),r.mod=t(212),r.multiply=t(213),r.norm=t(214),r.nthRoot=t(215),r.pow=t(216),r.round=t(217),r.sign=t(218),r.sqrt=t(219),r.square=t(220),r.subtract=t(221),r.unaryMinus=t(222),r.unaryPlus=t(223),r.xgcd=t(224),r.bitAnd=t(225),r.bitNot=t(226),r.bitOr=t(227),r.bitXor=t(228),r.leftShift=t(229),r.rightArithShift=t(230),r.rightLogShift=t(231),r.arg=t(232),r.conj=t(233),r.re=t(234),r.im=t(235),r.bignumber=t(236),r["boolean"]=t(237),r.complex=t(238),r.index=t(239),r.matrix=t(240),r.number=t(241),r.string=t(242),r.unit=t(243),r.eval=t(244),r.help=t(245),r.and=t(246),r.not=t(247),r.or=t(248),r.xor=t(249),r.concat=t(250),r.cross=t(251),r.det=t(252),r.diag=t(253),r.dot=t(254),r.eye=t(255),r.flatten=t(256),r.inv=t(257),r.ones=t(258),r.range=t(259),r.resize=t(260),r.size=t(261),r.squeeze=t(262),r.subset=t(263),r.transpose=t(264),r.zeros=t(265),r.combinations=t(266),r.factorial=t(267),r.gamma=t(268),r.permutations=t(269),r.pickRandom=t(270),r.random=t(271),r.randomInt=t(272),r.compare=t(273),r.deepEqual=t(274),r.equal=t(275),r.larger=t(276),r.largerEq=t(277),r.smaller=t(278),r.smallerEq=t(279),r.unequal=t(280),r.max=t(281),r.mean=t(282),r.median=t(283),r.min=t(284),r.prod=t(285),r.std=t(286),r.sum=t(287),r["var"]=t(288),r.acos=t(289),r.asin=t(290),r.atan=t(291),r.atan2=t(292),r.cos=t(293),r.cosh=t(294),r.cot=t(295),r.coth=t(296),r.csc=t(297),r.csch=t(298),r.sec=t(299),r.sech=t(300),r.sin=t(301),r.sinh=t(302),r.tan=t(303),r.tanh=t(304),r.to=t(305),r.clone=t(306),r.map=t(307),r.filter=t(308),r.forEach=t(309),r.format=t(310),r["import"]=t(311),r.sort=t(312),r["typeof"]=t(313)},function(e,r,t){"use strict";var n=t(155),i=t(174).transform,o=t(4).isNumber,a=t(153).argsToArray;e.exports=function(e){e.concat.transform=function(){var r=a(arguments),t=r.length-1,s=r[t];o(s)?r[t]=s-1:s instanceof n&&(r[t]=s.minus(1));try{return e.concat.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,t){"use strict";var n=t(171),i=(t(175).isBoolean,t(153).argsToArray,t(156));e.exports=function(e){var r=e.filter;r.transform=function(e,t,o){if(2!==e.length)throw new i("filter",arguments.length,2);var a,s=e[0].compile(t).eval(o);if(e[1]instanceof n)a=e[1].compile(t).eval(o);else{var u=o||{},f=e[1].filter(function(e){return e instanceof n&&!(e.name in t)&&!(e.name in u)})[0],c=Object.create(u),l=e[1].compile(t);if(!f)throw new Error("No undefined variable found in filter equation");var p=f.name;a=function(e){return c[p]=e,l.eval(c)}}return r(s,a)},e.filter.transform.rawArgs=!0}},function(e,r,t){"use strict";var n=t(9);e.exports=function(e){function r(e,r,t){var n=function(e,i){Array.isArray(e)?e.forEach(function(e,r){n(e,i.concat(r+1))}):r(e,i,t)};n(e,[])}e.forEach.transform=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(t))r(t,i,t);else{if(!(t instanceof n))throw new e.error.UnsupportedTypeError("forEach",e["typeof"](t));r(t.valueOf(),i,t)}}}},function(e,r,t){"use strict";{var n=t(155),i=t(7),o=t(8),a=(t(9),t(4).isNumber);Array.isArray}e.exports=function(e){e.index.transform=function(){for(var e=[],r=0,t=arguments.length;t>r;r++){var s=arguments[r];if(s instanceof i)s.start--,s.end-=s.step>0?0:2;else if(a(s))s--;else{if(!(s instanceof n))throw new TypeError("Ranges must be a Number or Range");s=s.toNumber()-1}e[r]=s}var u=new o;return o.apply(u,e),u}}},function(e,r,t){"use strict";{var n=t(9);t(155),t(7),t(8),t(4).isNumber,Array.isArray}e.exports=function(e){function r(e,r,t){var n=function(e,i){return Array.isArray(e)?e.map(function(e,r){return n(e,i.concat(r+1))}):r(e,i,t)};return n(e,[])}e.map.transform=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(t))return r(t,i,t);if(t instanceof n)return new n(r(t.valueOf(),i,t));throw new e.error.UnsupportedTypeError("map",e["typeof"](t))}}},function(e,r,t){"use strict";var n=t(155),i=t(174).transform,o=t(4).isNumber,a=t(13).isCollection,s=t(153).argsToArray;e.exports=function(e){e.max.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var t=r[1];o(t)?r[1]=t-1:t instanceof n&&(r[1]=t.minus(1))}try{return e.max.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,t){"use strict";var n=t(155),i=t(174).transform,o=t(4).isNumber,a=t(13).isCollection,s=t(153).argsToArray;e.exports=function(e){e.mean.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var t=r[1];o(t)?r[1]=t-1:t instanceof n&&(r[1]=t.minus(1))}try{return e.mean.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,t){"use strict";var n=t(155),i=t(174).transform,o=t(4).isNumber,a=t(13).isCollection,s=t(153).argsToArray;e.exports=function(e){e.min.transform=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var t=r[1];o(t)?r[1]=t-1:t instanceof n&&(r[1]=t.minus(1))}try{return e.min.apply(e,r)}catch(u){throw i(u)}}}},function(e,r,t){"use strict";var n=t(175).isBoolean,i=t(153).argsToArray;e.exports=function(e){e.range.transform=function(){var r=i(arguments),t=r.length-1,o=r[t];return n(o)||r.push(!0),e.range.apply(e,r)}}},function(e,r,t){"use strict";var n=t(174).transform,i=(t(175).isBoolean,t(153).argsToArray);e.exports=function(e){e.subset.transform=function(){try{return e.subset.apply(e,i(arguments))}catch(r){throw n(r)}}}},function(e,r,t){"use strict";e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.value=e instanceof r?e.value:e}function n(e,t){var n=Array.prototype.slice;r.prototype[e]="function"==typeof t?function(){var e=[this.value].concat(n.call(arguments,0));return new r(t.apply(this,e))}:new r(t)}var i=t(176);r.prototype.done=function(){return this.value},r.prototype.valueOf=function(){return this.value},r.prototype.toString=function(){return i.format(this.value)},r.createProxy=n;for(var o in e)e.hasOwnProperty(o)&&n(o,e[o]);return r}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(14),i=t(13),o=r.string.isString,a=i.isCollection;e.compile=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("compile",arguments.length,1);if(o(r))return n(r).compile(e);if(a(r))return i.deepMap(r,function(r){return n(r).compile(e)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(14),i=t(13),o=r.string.isString,a=i.isCollection;e.eval=function(r,t){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("eval",arguments.length,1,2);if(t=t||{},o(r))return n(r).compile(e).eval(t);if(a(r))return i.deepMap(r,function(r){return n(r).compile(e).eval(t)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(11);e.help=function(t){if(1!=arguments.length)throw new SyntaxError("Wrong number of arguments in function help ("+arguments.length+" provided, 1 expected)");var n=null;if(t instanceof String||"string"==typeof t)n=t;else{var i;for(i in e)if(e.hasOwnProperty(i)&&t===e[i]){n=i;break}}var o=e.expression.docs[n];if(!n)throw new Error('Cannot find "'+t+'" in math.js');if(!o)throw new Error('No documentation found on "'+n+'"');return new r(e,o)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(14);e.parse=function(){return r.apply(r,arguments)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=(t(9),t(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.abs=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("abs",arguments.length,1);if(a(r))return Math.abs(r);if(u(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof n)return r.abs();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.abs(r);throw new e.error.UnsupportedTypeError("abs",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=(t(9),t(10)),a=t(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=r.string.isString,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.add=function m(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("add",arguments.length,2);if(u(r)){if(u(t))return r+t;if(c(t))return new i(r+t.re,t.im)}if(c(r)){if(c(t))return new i(r.re+t.re,r.im+t.im);if(u(t))return new i(r.re+t,r.im)}if(l(r)&&l(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value+=t.value,o.fixPrefix=!1,o}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.plus(t):m(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.plus(t):m(r,t.toNumber());if(p(r)||p(t))return a.deepMap2(r,t,m);if(f(r)||f(t))return r+t;if(s(r)||null===r)return m(+r,t);if(s(t)||null===t)return m(r,+t);throw new e.error.UnsupportedTypeError("add",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.ceil=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("ceil",arguments.length,1);if(a(r))return Math.ceil(r);if(f(r))return new i(Math.ceil(r.re),Math.ceil(r.im));if(r instanceof n)return r.ceil();if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.ceil(r);throw new e.error.UnsupportedTypeError("ceil",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.cube=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cube",arguments.length,1);if(a(r))return r*r*r;if(u(r))return e.multiply(e.multiply(r,r),r);if(r instanceof n)return r.times(r).times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("cube",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=r.re*r.re+r.im*r.im;return 0!=t?new o((e.re*r.re+e.im*r.im)/t,(e.im*r.re-e.re*r.im)/t):new o(0!=e.re?e.re/0:0,0!=e.im?e.im/0:0)}var n=t(160),i=e.type.BigNumber,o=t(6),a=(t(9),t(10)),s=n.number.isNumber,u=n["boolean"].isBoolean,f=o.isComplex,c=a.isUnit;e._divide=function l(t,n){if(s(t)){if(s(n))return t/n;if(f(n))return r(new o(t,0),n)}if(f(t)){if(f(n))return r(t,n);if(s(n))return r(t,new o(n,0))}if(t instanceof i)return s(n)?n=i.convert(n):(u(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.div(n):l(t.toNumber(),n);if(n instanceof i)return s(t)?t=i.convert(t):(u(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.div(n):l(t,n.toNumber());if(c(t)&&s(n)){var a=t.clone();return a.value=(null===a.value?a._normalize(1):a.value)/n,a}if(u(t)||null===t)return l(+t,n);if(u(n)||null===n)return l(t,+n);throw new e.error.UnsupportedTypeError("divide",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(13),n=r.isCollection;e.divide=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("divide",arguments.length,2);return n(t)?n(i)?e.multiply(t,e.inv(i)):r.deepMap2(t,i,e._divide):n(i)?e.multiply(t,e.inv(i)):e._divide(t,i)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(13);e.dotDivide=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotDivide",arguments.length,2);return r.deepMap2(t,n,e.divide)},e.edivide=function(){throw new Error("Function edivide is renamed to dotDivide")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(160),t(13));e.dotMultiply=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotMultiply",arguments.length,2);return r.deepMap2(t,n,e.multiply)},e.emultiply=function(){throw new Error("Function emultiply is renamed to dotMultiply")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(160),t(13));e.dotPow=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotPow",arguments.length,2);return r.deepMap2(t,n,e.pow)},e.epow=function(){throw new Error("Function epow is renamed to dotPow")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=(t(9),t(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.exp=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("exp",arguments.length,1);if(a(r))return Math.exp(r);if(u(r)){var t=Math.exp(r.re);return new i(t*Math.cos(r.im),t*Math.sin(r.im))}if(r instanceof n)return r.exp();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.exp(r);throw new e.error.UnsupportedTypeError("exp",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.fix=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("fix",arguments.length,1);if(a(r))return r>0?Math.floor(r):Math.ceil(r);if(u(r))return new i(r.re>0?Math.floor(r.re):Math.ceil(r.re),r.im>0?Math.floor(r.im):Math.ceil(r.im));if(r instanceof n)return r.isNegative()?r.ceil():r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("fix",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.floor=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("floor",arguments.length,1);if(a(r))return Math.floor(r);if(u(r))return new i(Math.floor(r.re),Math.floor(r.im));if(r instanceof n)return r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("floor",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(!e.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var t=new i(0);!r.isZero();){var n=e.mod(r);e=r,r=n}return e.lt(t)?e.neg():e}var n=t(160),i=e.type.BigNumber,o=t(13),a=n.number.isNumber,s=n["boolean"].isBoolean,u=n.number.isInteger,f=o.isCollection;e.gcd=function c(){var t,n=arguments[0],l=arguments[1];if(2==arguments.length){if(a(n)&&a(l)){if(!u(n)||!u(l))throw new Error("Parameters in function gcd must be integer numbers");for(;0!=l;)t=n%l,n=l,l=t;return 0>n?-n:n}if(f(n)||f(l))return o.deepMap2(n,l,c);if(n instanceof i)return a(l)?l=i.convert(l):(s(l)||null===l)&&(l=new i(l?1:0)),l instanceof i?r(n,l):c(n.toNumber(),l);if(l instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?r(n,l):c(n.toNumber(),l);if(s(n)||null===n)return c(+n,l);if(s(l)||null===l)return c(n,+l);throw new e.error.UnsupportedTypeError("gcd",e["typeof"](n),e["typeof"](l))}if(arguments.length>2){for(var p=1;p2){for(var m=1;m=0?Math.log(r):c(new i(r,0));if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im)),Math.atan2(r.im,r.re));if(r instanceof n)return r.isNegative()?c(r.toNumber()):r.ln();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log",e["typeof"](r))}if(2==arguments.length)return e.divide(c(r),c(t));throw new e.error.ArgumentsError("log",arguments.length,1,2)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.log10=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("log10",arguments.length,1);if(a(r))return r>=0?Math.log(r)/Math.LN10:c(new i(r,0));if(r instanceof n)return r.isNegative()?c(r.toNumber()):r.log();if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/Math.LN10,Math.atan2(r.im,r.re)/Math.LN10);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log10",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(r>0)return e-r*Math.floor(e/r);if(0==r)return e;throw new Error("Cannot calculate mod for a negative divisor")}var n=t(160),i=e.type.BigNumber,o=t(13),a=n.number.isNumber,s=n["boolean"].isBoolean,u=o.isCollection;e.mod=function f(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("mod",arguments.length,2);if(a(t)&&a(n))return r(t,n);if(t instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isZero()?t:t.mod(n):f(t.toNumber(),n);if(n instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isZero()?t:t.mod(n):f(t,n.toNumber());if(u(t)||u(n))return o.deepMap2(t,n,f);if(s(t)||null===t)return f(+t,n);if(s(n)||null===n)return f(t,+n);throw new e.error.UnsupportedTypeError("mod",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){for(var n=[],i=r.length,o=t[0].length,a=r[0].length,s=0;i>s;s++){n[s]=[];for(var u=0;o>u;u++){for(var f=null,c=0;a>c;c++){var l=e.multiply(r[s][c],t[c][u]);f=null===f?l:e.add(f,l)}n[s][u]=f}}var p=1===i&&1===o;return p?n[0][0]:n}function n(r,t){for(var n=[],i=t.length,o=t[0].length,a=0;o>a;a++){for(var s=null,u=0;i>u;u++){var f=e.multiply(r[u],t[u][a]);s=0===u?f:e.add(s,f)}n[a]=s}return 1===n.length?n[0]:n}function i(r,t){for(var n=[],i=r.length,o=r[0].length,a=0;i>a;a++){for(var s=null,u=0;o>u;u++){var f=e.multiply(r[a][u],t[u]);s=0===u?f:e.add(s,f)}n[a]=s}return 1===n.length?n[0]:n}function o(r,t){var n=r.length;if(!n)throw new Error("Cannot multiply two empty vectors");for(var i=0,o=0;n>o;o++)i=e.add(i,e.multiply(r[o],t[o]));return i}function a(e,r){return 0==e.im?0==r.im?new f(e.re*r.re,0):0==r.re?new f(0,e.re*r.im):new f(e.re*r.re,e.re*r.im):0==e.re?0==r.im?new f(0,e.im*r.re):0==r.re?new f(-e.im*r.im,0):new f(-e.im*r.im,e.im*r.re):0==r.im?new f(e.re*r.re,e.im*r.re):0==r.re?new f(-e.im*r.im,e.re*r.im):new f(e.re*r.re-e.im*r.im,e.re*r.im+e.im*r.re)}var s=t(160),u=e.type.BigNumber,f=t(6),c=t(9),l=t(10),p=t(13),m=s.array,h=s.number.isNumber,g=s["boolean"].isBoolean,d=f.isComplex,w=Array.isArray,x=l.isUnit;e.multiply=function y(t,s){var l;if(2!=arguments.length)throw new e.error.ArgumentsError("multiply",arguments.length,2);if(h(t)){if(h(s))return t*s;if(d(s))return a(new f(t,0),s);if(x(s))return l=s.clone(),l.value=null===l.value?l._normalize(t):l.value*t,l}if(d(t)){if(h(s))return a(t,new f(s,0));if(d(s))return a(t,s)}if(t instanceof u)return h(s)?s=u.convert(s):(g(s)||null===s)&&(s=new u(s?1:0)),s instanceof u?t.times(s):y(t.toNumber(),s); -if(s instanceof u)return h(t)?t=u.convert(t):(g(t)||null===t)&&(t=new u(t?1:0)),t instanceof u?t.times(s):y(t,s.toNumber());if(x(t)&&h(s))return l=t.clone(),l.value=null===l.value?l._normalize(s):l.value*s,l;if(w(t)){if(w(s)){var v=m.size(t),b=m.size(s);if(1==v.length){if(1==b.length){if(v[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match length of B (A is "+v[0]+", B is "+b[0]+", "+v[0]+" != "+b[0]+")");return o(t,s)}if(2==b.length){if(v[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match rows of B (A is "+v[0]+", B is "+b[0]+"x"+b[1]+", "+v[0]+" != "+b[0]+")");return n(t,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)")}if(2==v.length){if(1==b.length){if(v[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+v[0]+"x"+v[0]+", B is "+b[0]+", "+v[1]+" != "+b[0]+")");return i(t,s)}if(2==b.length){if(v[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match rows of B (A is "+v[0]+"x"+v[1]+", B is "+b[0]+"x"+b[1]+", "+v[1]+" != "+b[0]+")");return r(t,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)")}throw new Error("Can only multiply a 1 or 2 dimensional matrix (A has "+v.length+" dimensions)")}return s instanceof c?(l=y(t,s.valueOf()),w(l)?new c(l):l):p.deepMap2(t,s,y)}if(t instanceof c)return s instanceof c?(l=y(t.valueOf(),s.valueOf()),w(l)?new c(l):l):(l=y(t.valueOf(),s),w(l)?new c(l):l);if(w(s))return p.deepMap2(t,s,y);if(s instanceof c)return new c(p.deepMap2(t,s.valueOf(),y));if(g(t)||null===t)return y(+t,s);if(g(s)||null===s)return y(t,+s);throw new e.error.UnsupportedTypeError("multiply",e["typeof"](t),e["typeof"](s))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(153),i=e.type.BigNumber,o=t(6),a=t(9),s=(t(13),r.number.isNumber),u=r["boolean"].isBoolean,f=o.isComplex,c=Array.isArray;e.norm=function l(r,t){if(arguments.length<1||arguments.length>2)throw new e.error.ArgumentsError("abs",arguments.length,1,2);if(s(r))return Math.abs(r);if(f(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof i)return r.abs();if(u(r)||null===r)return Math.abs(r);if(c(r)){var o=n.size(r);if(null==t&&(t=2),1==o.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var p;return e.forEach(r,function(r){var t=e.abs(r);(!p||e.larger(t,p))&&(p=t)}),p}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var p;return e.forEach(r,function(r){var t=e.abs(r);(!p||e.smaller(t,p))&&(p=t)}),p}if("fro"===t)return l(r);if(s(t)&&!isNaN(t)){if(!e.equal(t,0)){var p=0;return e.forEach(r,function(r){p=e.add(e.pow(e.abs(r),t),p)}),e.pow(p,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==o.length){if(1==t){for(var m=[],h=0;ht;if(n&&(t=-t),0==t)throw new Error("Root must be non-zero");if(0>e&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return 0;if(!Number.isFinite(e))return n?0:e;var i=1e-16,o=1,a=0,s=100;do{var u=(e/Math.pow(o,t-1)-o)/t;o+=u,a++}while(Math.abs(u)>i&&s>a);return n?1/o:o}function i(e,r){var t=void 0!=r?r:new a(2),n=new a(0),i=new a(1),o=t.isNegative();if(o&&(t=t.negated()),t.isZero())throw new Error("Root must be non-zero");if(e.isNegative()&&!t.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(e.isZero())return n;if(!e.isFinite())return o?n:e;var s=i,u=0,f=100;do{var c=s,l=e.div(s.pow(t.minus(1))).minus(s).div(t);s=s.plus(l),u++}while(!s.equals(c)&&f>u);return o?i.div(s):s}var o=t(160),a=e.type.BigNumber,s=t(13),u=o.number.isNumber,f=o["boolean"].isBoolean,c=s.isCollection;e.nthRoot=function l(t,o){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2);switch(arguments.length){case 1:if(u(t))return r(t);if(t instanceof a)return i(t);if(c(t))return s.deepMap(x,l);if(f(t)||null===t)return l(+t);break;case 2:if(u(t)){if(u(o))return r(t,o);if(o instanceof a)return t=a.convert(t),t instanceof a?i(t,o):r(t,o.toNumber())}else{if(t instanceof a)return u(o)&&(o=a.convert(o)),o instanceof a?i(t,o):r(t.toNumber(),o);if(c(t)&&!c(o))return s.deepMap2(t,o,l)}if(f(t)||null===t)return l(+t,o);if(f(o)||null===o)return l(t,+o);break;default:throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2)}if(f(x)||null===x)return 2==arguments.length?l(+x,n):l(+x);throw new e.error.UnsupportedTypeError("nthRoot",e["typeof"](t),e["typeof"](o))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=e.log(r),i=e.multiply(n,t);return e.exp(i)}var n=t(160),i=e.type.BigNumber,o=t(6),a=t(9),s=(t(13),n.array),u=n.number.isNumber,f=n["boolean"].isBoolean,c=Array.isArray,l=n.number.isInteger,p=o.isComplex;e.pow=function m(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("pow",arguments.length,2);if(u(t)){if(u(n))return l(n)||t>=0?Math.pow(t,n):r(new o(t,0),new o(n,0));if(p(n))return r(new o(t,0),n)}if(p(t)){if(u(n))return r(t,new o(n,0));if(p(n))return r(t,n)}if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isInteger()||!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isInteger()&&!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t,n.toNumber());if(c(t)){if(!u(n)||!l(n)||0>n)throw new TypeError("For A^b, b must be a positive integer (value is "+n+")");var h=s.size(t);if(2!=h.length)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!=h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");for(var g=e.eye(h[0]).valueOf(),d=t;n>=1;)1==(1&n)&&(g=e.multiply(d,g)),n>>=1,d=e.multiply(d,d);return g}if(t instanceof a)return new a(m(t.valueOf(),n));if(f(t)||null===t)return m(+t,n);if(f(n)||null===n)return m(t,+n);throw new e.error.UnsupportedTypeError("pow",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=Math.pow(10,r);return Math.round(e*t)/t}var n=t(160),i=e.type.BigNumber,o=t(6),a=t(13),s=n.number.isNumber,u=n.number.isInteger,f=n["boolean"].isBoolean,c=o.isComplex,l=a.isCollection;e.round=function p(t,n){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("round",arguments.length,1,2);if(void 0==n){if(s(t))return Math.round(t);if(c(t))return new o(Math.round(t.re),Math.round(t.im));if(t instanceof i)return t.toDecimalPlaces(0);if(l(t))return a.deepMap(t,p);if(f(t)||null===t)return Math.round(t);throw new e.error.UnsupportedTypeError("round",e["typeof"](t))}if(!s(n)||!u(n)){if(!(n instanceof i)){if(f(n)||null===t)return p(t,+n);throw new TypeError("Number of decimals in function round must be an integer")}n=parseFloat(n.valueOf())}if(0>n||n>15)throw new Error("Number of decimals in function round must be in te range of 0-15");if(s(t))return r(t,n);if(c(t))return new o(r(t.re,n),r(t.im,n));if(t instanceof i)return t.toDecimalPlaces(n);if(l(t)||l(n))return a.deepMap2(t,n,p);if(f(t)||null===t)return p(+t,n);throw new e.error.UnsupportedTypeError("round",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number,s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isCollection;e.sign=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sign",arguments.length,1);if(s(r))return a.sign(r);if(f(r)){var t=Math.sqrt(r.re*r.re+r.im*r.im);return new i(r.re/t,r.im/t)}if(r instanceof n)return new n(r.cmp(0));if(c(r))return o.deepMap(r,l);if(u(r)||null===r)return a.sign(r);throw new e.error.UnsupportedTypeError("sign",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.sqrt=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sqrt",arguments.length,1);if(a(r))return r>=0?Math.sqrt(r):c(new i(r,0));if(u(r)){var t,l,p=Math.sqrt(r.re*r.re+r.im*r.im);return t=r.re>=0?.5*Math.sqrt(2*(p+r.re)):Math.abs(r.im)/Math.sqrt(2*(p-r.re)),l=r.re<=0?.5*Math.sqrt(2*(p-r.re)):Math.abs(r.im)/Math.sqrt(2*(p+r.re)),r.im>=0?new i(t,l):new i(t,-l)}if(r instanceof n)return r.isNegative()?c(r.toNumber()):r.sqrt();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("sqrt",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.square=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("square",arguments.length,1);if(a(r))return r*r;if(u(r))return e.multiply(r,r);if(r instanceof n)return r.times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return r*r;throw new e.error.UnsupportedTypeError("square",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=(t(9),t(10)),a=t(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.subtract=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("subtract",arguments.length,2);if(u(r)){if(u(t))return r-t;if(f(t))return new i(r-t.re,-t.im)}else if(f(r)){if(u(t))return new i(r.re-t,r.im);if(f(t))return new i(r.re-t.re,r.im-t.im)}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.minus(t):p(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.minus(t):p(r,t.toNumber());if(c(r)&&c(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value-=t.value,o.fixPrefix=!1,o}if(l(r)||l(t))return a.deepMap2(r,t,p);if(s(r)||null===r)return p(+r,t);if(s(t)||null===t)return p(r,+t);throw new e.error.UnsupportedTypeError("subtract",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n["boolean"].isBoolean,c=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryMinus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryMinus",arguments.length,1);if(u(t))return-t;if(l(t))return new o(-t.re,-t.im);if(t instanceof i)return t.neg();if(p(t)){var n=t.clone();return n.value=-t.value,n}if(m(t))return s.deepMap(t,h);if(f(t)||c(t)||null===t)return"bignumber"==r.number?new i(-t):-t;throw new e.error.UnsupportedTypeError("unaryMinus",e["typeof"](t))},e.unary=function(){throw new Error("Function unary is deprecated. Use unaryMinus instead.")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n["boolean"].isBoolean,c=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryPlus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryPlus",arguments.length,1);if(u(t))return t;if(l(t))return t.clone();if(t instanceof i)return t;if(p(t))return t.clone();if(m(t))return s.deepMap(t,h);if(f(t)||c(t)||null===t)return"bignumber"==r.number?new i(+t):+t;throw new e.error.UnsupportedTypeError("unaryPlus",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(e,t){for(var n,i,o,s=0,u=1,f=1,c=0;t;)i=Math.floor(e/t),o=e%t,n=s,s=u-i*s,u=n,n=f,f=c-i*f,c=n,e=t,t=o;var l;return l=0>e?[-e,-u,-c]:[e,e?u:0,c],"array"===r.matrix?l:new a(l)}function i(e,t){for(var n,i,o,u=new s(0),f=new s(0),c=new s(1),l=new s(1),p=new s(0);!t.isZero();)i=e.div(t).floor(),o=e.mod(t),n=f,f=c.minus(i.times(f)),c=n,n=l,l=p.minus(i.times(l)),p=n,e=t,t=o;var m;return m=e.lt(u)?[e.neg(),c.neg(),p.neg()]:[e,e.isZero()?0:c,p],"array"===r.matrix?m:new a(m)}var o=t(160),a=t(9),s=e.type.BigNumber,u=o.number.isNumber,f=o["boolean"].isBoolean,c=o.number.isInteger;e.xgcd=function l(r,t){if(2==arguments.length){if(u(r)&&u(t)){if(!c(r)||!c(t))throw new Error("Parameters in function xgcd must be integer numbers");return n(r,t)}if(r instanceof s)return u(t)?t=s.convert(t):(f(t)||null===t)&&(t=new s(t?1:0)),t instanceof s?i(r,t):l(r.toNumber(),t);if(t instanceof s)return u(r)?r=s.convert(r):(f(r)||null===r)&&(r=new s(r?1:0)),r instanceof s?i(r,t):l(r.toNumber(),t);if(f(r)||null===r)return l(+r,t);if(f(t)||null===t)return l(r,+t);throw new e.error.UnsupportedTypeError("xgcd",e["typeof"](r),e["typeof"](t))}throw new SyntaxError("Function xgcd expects two arguments")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.and;e.bitAnd=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitAnd",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function bitAnd must be integer numbers");return r&t}if(u(r)||u(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return s(t)&&(t=n.convert(t)),t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return s(r)&&(r=n.convert(r)),r instanceof n?f(r,t):c(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitAnd",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.not;e.bitNot=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("bitNot",arguments.length,1);if(s(r)){if(!a(r))throw new Error("Parameter in function bitNot must be integer numbers");return~r}if(r instanceof n)return f(r);if(u(r))return i.deepMap(r,c);if(o(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("bitNot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.or;e.bitOr=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitOr",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function bitOr must be integer numbers");return r|t}if(u(r)||u(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return s(t)&&(t=n.convert(t)),t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return s(r)&&(r=n.convert(r)),r instanceof n?f(r,t):c(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitOr",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.xor;e.bitXor=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitXor",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function bitXor must be integer numbers");return r^t}if(u(r)||u(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return s(t)&&(t=n.convert(t)),t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return s(r)&&(r=n.convert(r)),r instanceof n?f(r,t):c(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitXor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.leftShift;e.leftShift=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("leftShift",arguments.length,2);if(s(r)){if(s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function leftShift must be integer numbers");return r<t?new n(0/0):0==t||r.isZero()?r:1/0!=t||r.isFinite()?55>t?r.times(Math.pow(2,t)+""):(t=n.convert(t),f(r,t)):new n(0/0)}}if(u(r)&&s(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return c(r,t.toNumber());throw new e.error.UnsupportedTypeError("leftShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.rightShift;e.rightArithShift=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightArithShift",arguments.length,2);if(s(r)){if(s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function rightArithShift must be integer numbers");return r>>t}if(t instanceof n)return f(n.convert(r),t)}if(s(t)){if(isFinite(t)&&!a(t))throw new Error("Parameters in function rightArithShift must be integer numbers");if(r instanceof n){if(r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");return r.isNaN()||isNaN(t)||0>t?new n(0/0):1/0==t?new n(r.isNegative()?-1:r.isFinite()?0:0/0):55>t?r.div(Math.pow(2,t)+"").floor():(t=n.convert(t),f(r,t))}}if(u(r)&&s(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return c(r,t.toNumber());throw new e.error.UnsupportedTypeError("rightArithShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=(t(9),t(10),t(13)),i=r["boolean"].isBoolean,o=r.number.isInteger,a=r.number.isNumber,s=n.isCollection;e.rightLogShift=function u(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightLogShift",arguments.length,2);if(a(r)&&a(t)){if(!o(r)||!o(t))throw new Error("Parameters in function rightLogShift must be integer numbers");return r>>>t}if(s(r)&&a(t))return n.deepMap2(r,t,u);if(i(r)||null===r)return u(+r,t);if(i(t)||null===t)return u(r,+t);throw new e.error.UnsupportedTypeError("rightLogShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.arg=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("arg",arguments.length,1);if(a(r))return Math.atan2(0,r);if(f(r))return Math.atan2(r.im,r.re);if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);if(r instanceof n)return c(r.toNumber());throw new e.error.UnsupportedTypeError("arg",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.conj=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("conj",arguments.length,1);return s(r)?r:r instanceof n?new n(r):c(r)?new i(r.re,-r.im):f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.re=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("re",arguments.length,1);return s(r)?r:r instanceof n?new n(r):c(r)?r.re:f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.im=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("im",arguments.length,1);return a(r)?0:r instanceof n?new n(0):f(r)?r.im:u(r)?o.deepMap(r,c):(s(r)||null===r,0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString,u=r["boolean"].isBoolean;e.bignumber=function f(r){if(arguments.length>1)throw new e.error.ArgumentsError("bignumber",arguments.length,0,1);if(r instanceof n||a(r)||s(r))return new n(r);if(u(r)||null===r)return new n(+r);if(o(r))return i.deepMap(r,f);if(0==arguments.length)return new n(0);throw new e.error.UnsupportedTypeError("bignumber",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString;e["boolean"]=function u(r){if(1!=arguments.length)throw new e.error.ArgumentsError("boolean",arguments.length,0,1);if("true"===r||r===!0)return!0;if("false"===r||r===!1||null===r)return!1;if(r instanceof Boolean)return 1==r;if(a(r))return 0!==r;if(r instanceof n)return!r.isZero();if(s(r)){var t=r.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var f=Number(r);if(""!=r&&!isNaN(f))return 0!==f}if(o(r))return i.deepMap(r,u);throw new SyntaxError(r.toString()+" is no valid boolean")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=o.isCollection,s=r.number.isNumber,u=r.string.isString,f=i.isComplex;e.complex=function c(){switch(arguments.length){case 0:return new i(0,0);case 1:var r=arguments[0];if(s(r))return new i(r,0);if(r instanceof n)return new i(r.toNumber(),0);if(f(r))return r.clone();if(u(r)){var t=i.parse(r);if(t)return t;throw new SyntaxError('String "'+r+'" is no valid complex number')}if(a(r))return o.deepMap(r,c);if("object"==typeof r){if("re"in r&&"im"in r)return new i(r.re,r.im);if("r"in r&&"phi"in r)return i.fromPolar(r.r,r.phi)}throw new TypeError("Two numbers, single string or an fitting object expected in function complex");case 2:var l=arguments[0],p=arguments[1];if(l instanceof n&&(l=l.toNumber()),p instanceof n&&(p=p.toNumber()),s(l)&&s(p))return new i(l,p);throw new TypeError("Two numbers or a single string expected in function complex");default:throw new e.error.ArgumentsError("complex",arguments.length,0,2)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(160),e.type.BigNumber),n=t(8);e.index=function(){var e=Array.prototype.slice.apply(arguments).map(function(e){return e instanceof r?e.toNumber():Array.isArray(e)?e.map(function(e){return e instanceof r?e.toNumber():e}):e}),t=new n;return n.apply(t,e),t}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(160),t(9));e.matrix=function(t){if(arguments.length>1)throw new e.error.ArgumentsError("matrix",arguments.length,0,1);return new r(t)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=e.type.Unit,o=t(13),a=o.isCollection,s=r.number.isNumber,u=r["boolean"].isBoolean,f=r.string.isString;e.number=function c(r,t){switch(arguments.length){case 0:return 0;case 1:if(a(r))return o.deepMap(r,c);if(r instanceof n)return r.toNumber();if(f(r)){var l=Number(r);if(isNaN(l)&&(l=Number(r.valueOf())),isNaN(l))throw new SyntaxError(r.toString()+" is no valid number");return l}if(u(r)||null===r)return+r;if(s(r))return r;if(r instanceof i)throw new Error("Second argument with valueless unit expected");throw new e.error.UnsupportedTypeError("number",e["typeof"](r));case 2:if(r instanceof i&&f(t)||t instanceof i)return r.toNumber(t);throw new e.error.UnsupportedTypeError("number",e["typeof"](r),e["typeof"](t));default:throw new e.error.ArgumentsError("number",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(15);e.parser=function(){return new r(e)}}},function(e){"use strict";e.exports=function(e){e.chain=function(r){return new e.chaining.Chain(r)},e.select=function(r){return console&&"function"==typeof console.log&&console.log('WARNING: Function "select" is renamed to "chain". It will be deprecated in v2.0.'),e.select=e.chain,e.chaining.Chain.prototype.select=e.select,e.chain(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(13),i=r.number,o=r.number.isNumber,a=n.isCollection;e.string=function s(r){switch(arguments.length){case 0:return"";case 1:return o(r)?i.format(r):a(r)?n.deepMap(r,s):null===r?"null":r.toString();default:throw new e.error.ArgumentsError("string",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(10),o=t(13),a=o.isCollection,s=r.string.isString;e.unit=function u(r){switch(arguments.length){case 1:var t=arguments[0];if(t instanceof i)return t.clone();if(s(t)){if(i.isValuelessUnit(t))return new i(null,t);var f=i.parse(t);if(f)return f;throw new SyntaxError('String "'+t+'" is no valid unit')}if(a(r))return o.deepMap(r,u);throw new TypeError("A string or a number and string expected in function unit");case 2:return arguments[0]instanceof n?new i(arguments[0].toNumber(),arguments[1]):new i(arguments[0],arguments[1]);default:throw new e.error.ArgumentsError("unit",arguments.length,1,2)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.and=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("and",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r||!t);if(f(r))return 0==r.re&&0==r.im?!1:p(!0,t);if(f(t))return 0==t.re&&0==t.im?!1:p(r,!0);if(r instanceof n)return r.isZero()||r.isNaN()?!1:p(!0,t);if(t instanceof n)return t.isZero()||t.isNaN()?!1:p(r,!0);if(c(r))return null===r.value||0==r.value?!1:p(!0,t);if(c(t))return null===t.value||0==t.value?!1:p(r,!0);if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("and",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.not=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("not",arguments.length,1);if(s(r)||u(r)||null===r)return!r;if(f(r))return 0==r.re&&0==r.im;if(r instanceof n)return r.isZero()||r.isNaN();if(c(r))return null===r.value||0==r.value;if(l(r))return a.deepMap(r,p);throw new e.error.UnsupportedTypeError("not",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.or=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("or",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r&&!t);if(f(r))return 0==r.re&&0==r.im?p(!1,t):!0;if(f(t))return 0==t.re&&0==t.im?p(r,!1):!0;if(r instanceof n)return r.isZero()||r.isNaN()?p(!1,t):!0;if(t instanceof n)return t.isZero()||t.isNaN()?p(r,!1):!0;if(c(r))return null===r.value||0==r.value?p(!1,t):!0;if(c(t))return null===t.value||0==t.value?p(r,!1):!0;if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("or",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.xor=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("xor",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!!(!!r^!!t);if(f(r))return p(!(0==r.re&&0==r.im),t);if(f(t))return p(r,!(0==t.re&&0==t.im));if(r instanceof n)return p(!(r.isZero()||r.isNaN()),t);if(t instanceof n)return p(r,!(t.isZero()||t.isNaN()));if(c(r))return p(!(null===r.value||0==r.value),t);if(c(t))return p(r,!(null===t.value||0==t.value));if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("xor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n,i,o){if(i>o){if(t.length!=n.length)throw new e.error.DimensionError(t.length,n.length);for(var a=[],s=0;st;t++){var g=arguments[t];if(g instanceof o&&(m=!0),t==a-1&&(f(g)||g instanceof i)){if(n=p,p=g.valueOf(),!c(p))throw new TypeError("Integer number expected for dimension");if(0>p)throw new e.error.IndexError(p);if(t>0&&p>n)throw new e.error.IndexError(p,n+1)}else{if(!l(g))throw new e.error.UnsupportedTypeError("concat",e["typeof"](g));var d=s.clone(g).valueOf(),w=u.size(g.valueOf());if(h[t]=d,n=p,p=w.length-1,t>0&&p!=n)throw new e.error.DimensionError(n+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var x=h.shift();h.length;)x=r(x,h.shift(),p,0);return m?new o(x):x}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t);if(1!=i.length||1!=o.length||3!=i[0]||3!=o[0])throw new RangeError("Vectors with length 3 expected (Size A = ["+i.join(", ")+"], B = ["+o.join(", ")+"])");return[e.subtract(e.multiply(r[1],t[2]),e.multiply(r[2],t[1])),e.subtract(e.multiply(r[2],t[0]),e.multiply(r[0],t[2])),e.subtract(e.multiply(r[0],t[1]),e.multiply(r[1],t[0]))]}var n=t(153),i=t(9);e.cross=function(t,n){if(t instanceof i){if(n instanceof i)return new i(r(t.toArray(),n.toArray()));if(Array.isArray(n))return new i(r(t.toArray(),n))}else if(Array.isArray(t)){if(n instanceof i)return new i(r(t,n.toArray()));if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("cross",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){if(1==t)return o.clone(r[0][0]);if(2==t)return e.subtract(e.multiply(r[0][0],r[1][1]),e.multiply(r[1][0],r[0][1]));for(var n=function(r){var t,n,i=new Array(r.length),o=0;for(t=1;tn;n++)i[t][n]=0;for(n=t+1;na;a++)i=e.multiply(n(i),r);return t%2==0?e.unaryMinus(i[0][0]):i[0][0]}var n=t(160),i=t(9),o=n.object,a=n.string;e.det=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("det",arguments.length,1);var n;switch(t instanceof i?n=t.size():t instanceof Array?(t=new i(t),n=t.size()):n=[],n.length){case 0:return o.clone(t);case 1:if(1==n[0])return o.clone(t.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(n)+")");case 2:var s=n[0],u=n[1];if(s==u)return r(t.clone().valueOf(),s,u);throw new RangeError("Matrix must be square (size: "+a.format(n)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(n)+")") -}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(9),o=r.object,a=r.array.isArray,s=r.number.isNumber,u=r.number.isInteger;e.diag=function(r,t){var f,c,l,p;if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("diag",arguments.length,1,2);if(t){if(t instanceof n&&(t=t.toNumber()),!s(t)||!u(t))throw new TypeError("Second parameter in function diag must be an integer")}else t=0;var m,h=t>0?t:0,g=0>t?-t:0;if(r instanceof i)m=!1;else{if(!a(r))throw new TypeError("First parameter in function diag must be a Matrix or Array");r=new i(r),m=!0}var d=r.size();switch(d.length){case 1:c=r.valueOf();var w=new i,x=c[0]instanceof n?new n(0):0;for(w.resize([c.length+g,c.length+h],x),f=w.valueOf(),p=c.length,l=0;p>l;l++)f[l+g][l+h]=o.clone(c[l]);return m?w.valueOf():w;case 2:for(c=[],f=r.valueOf(),p=Math.min(d[0]-g,d[1]-h),l=0;p>l;l++)c[l]=o.clone(f[l+g][l+h]);return m?c:new i(c);default:throw new RangeError("Matrix for function diag must be 2 dimensional")}}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t),a=i[0];if(1!==i.length||1!==o.length)throw new RangeError("Vector expected");if(i[0]!=o[0])throw new RangeError("Vectors must have equal length ("+i[0]+" != "+o[0]+")");if(0==a)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var s=0,u=0;a>u;u++)s=e.add(s,e.multiply(r[u],t[u]));return s}var n=t(153),i=t(9);e.dot=function(t,n){if(t instanceof i){if(n instanceof i)return r(t.toArray(),n.toArray());if(Array.isArray(n))return r(t.toArray(),n)}else if(Array.isArray(t)){if(n instanceof i)return r(t,n.toArray());if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("dot",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(9),a=t(13),s=n.number.isNumber,u=n.number.isInteger,f=Array.isArray;e.eye=function(t){var n=a.argsToArray(arguments),c=t instanceof o?!0:f(t)?!1:"matrix"===r.matrix;if(0==n.length)return c?new o:[];if(1==n.length)n[1]=n[0];else if(n.length>2)throw new e.error.ArgumentsError("eye",n.length,0,2);var l=n[0],p=n[1];if(l instanceof i&&(l=l.toNumber()),p instanceof i&&(p=p.toNumber()),!s(l)||!u(l)||1>l)throw new Error("Parameters in function eye must be positive integers");if(!s(p)||!u(p)||1>p)throw new Error("Parameters in function eye must be positive integers");var m=!1;n=n.map(function(e){return e instanceof i?(m=!0,e.toNumber()):e});var h=new o,g=m?new i(1):1,d=m?new i(0):0;h.resize(n,d);for(var w=e.min(n),x=h.valueOf(),y=0;w>y;y++)x[y][y]=g;return c?h:h.valueOf()}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(9),i=r.object,o=r.array,a=Array.isArray;e.flatten=function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("flatten",arguments.length,1);if(r instanceof n){var t=i.clone(r.toArray()),s=o.flatten(t);return new n(s)}if(a(r))return o.flatten(i.clone(r));throw new e.error.UnsupportedTypeError("flatten",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){var i,o,a,s,u;if(1==t){if(s=r[0][0],0==s)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(1,s)]]}if(2==t){var f=e.det(r);if(0==f)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(r[1][1],f),e._divide(e.unaryMinus(r[0][1]),f)],[e._divide(e.unaryMinus(r[1][0]),f),e._divide(r[0][0],f)]]}var c=r.concat();for(i=0;t>i;i++)c[i]=c[i].concat();for(var l=e.eye(t).valueOf(),p=0;n>p;p++){for(i=p;t>i&&0==c[i][p];)i++;if(i==t||0==c[i][p])throw Error("Cannot calculate inverse, determinant is zero");i!=p&&(u=c[p],c[p]=c[i],c[i]=u,u=l[p],l[p]=l[i],l[i]=u);var m=c[p],h=l[p];for(i=0;t>i;i++){var g=c[i],d=l[i];if(i!=p){if(0!=g[p]){for(a=e._divide(e.unaryMinus(g[p]),m[p]),o=p;n>o;o++)g[o]=e.add(g[o],e.multiply(a,m[o]));for(o=0;n>o;o++)d[o]=e.add(d[o],e.multiply(a,h[o]))}}else{for(a=m[p],o=p;n>o;o++)g[o]=e._divide(g[o],a);for(o=0;n>o;o++)d[o]=e._divide(d[o],a)}}}return l}var n=t(160),i=t(9);e.inv=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("inv",arguments.length,1);var o=e.size(t).valueOf();switch(o.length){case 0:return e._divide(1,t);case 1:if(1==o[0])return t instanceof i?new i([e._divide(1,t.valueOf()[0])]):[e._divide(1,t[0])];throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");case 2:var a=o[0],s=o[1];if(a==s)return t instanceof i?new i(r(t.valueOf(),a,s)):r(t,a,s);throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+n.string.format(o)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(9),a=t(13),s=n.array,u=Array.isArray;e.ones=function(e){var t=a.argsToArray(arguments),n=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==t.length)return n?new o:[];var f=!1;t=t.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(1):1;return c=s.resize(c,t,l),n?new o(c):c}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(e,r,t){var n=[],i=e;if(t>0)for(;r>i;)n.push(i),i+=t;else if(0>t)for(;i>r;)n.push(i),i+=t;return n}function i(e,r,t){var n=[],i=e;if(t>0)for(;r>=i;)n.push(i),i+=t;else if(0>t)for(;i>=r;)n.push(i),i+=t;return n}function o(e,r,t){var n=[],i=e.clone(),o=new f(0);if(t.gt(o))for(;i.lt(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gt(r);)n.push(i),i=i.plus(t);return n}function a(e,r,t){var n=[],i=e.clone(),o=new f(0);if(t.gt(o))for(;i.lte(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gte(r);)n.push(i),i=i.plus(t);return n}function s(e){var t=e.split(":"),n=null;if("bignumber"===r.number)try{n=t.map(function(e){return new f(e)})}catch(i){return null}else{n=t.map(function(e){return Number(e)});var o=n.some(function(e){return isNaN(e)});if(o)return null}switch(n.length){case 2:return{start:n[0],end:n[1],step:1};case 3:return{start:n[0],end:n[2],step:n[1]};default:return null}}var u=t(160),f=e.type.BigNumber,c=t(9),l=(t(13),u["boolean"].isBoolean),p=u.string.isString,m=u.number.isNumber;e.range=function(){var t,u,h,g=Array.prototype.slice.call(arguments),d=!1;switch(l(g[g.length-1])&&(d=g.pop()?!0:!1),g.length){case 1:if(!p(g[0]))throw new TypeError("Two or three numbers or a single string expected in function range");var w=s(g[0]);if(!w)throw new SyntaxError('String "'+g[0]+'" is no valid range');t=w.start,u=w.end,h=w.step;break;case 2:t=g[0],u=g[1],h=1;break;case 3:t=g[0],u=g[1],h=g[2];break;case 4:throw new TypeError("Parameter includeEnd must be a boolean");default:throw new e.error.ArgumentsError("range",arguments.length,2,4)}if(!(m(t)||t instanceof f))throw new TypeError("Parameter start must be a number");if(!(m(u)||u instanceof f))throw new TypeError("Parameter end must be a number");if(!(m(h)||h instanceof f))throw new TypeError("Parameter step must be a number");if(t instanceof f||u instanceof f||h instanceof f){var x=!0;t instanceof f||(t=f.convert(t)),u instanceof f||(u=f.convert(u)),h instanceof f||(h=f.convert(h)),t instanceof f&&u instanceof f&&h instanceof f||(x=!1,t instanceof f&&(t=t.toNumber()),u instanceof f&&(u=u.toNumber()),h instanceof f&&(h=h.toNumber()))}var y=x?d?a:o:d?i:n,v=y(t,u,h);return"array"===r.matrix?v:new c(v)}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(r,t,n){if(void 0!==n){if(!c(n)||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";if(1!==t.length)throw new e.error.DimensionError(t.length,1);var i=t[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(t)+")");if(r.length>i)return r.substring(0,i);if(r.lengtha;a++)o+=n;return o}return r}var i=t(160),o=e.type.BigNumber,a=t(9),s=i.array,u=i.object.clone,f=i.string,c=i.string.isString,l=i.number.isNumber,p=i.number.isInteger,m=s.isArray;e.resize=function(t,i,f){if(2!=arguments.length&&3!=arguments.length)throw new e.error.ArgumentsError("resize",arguments.length,2,3);var l=t instanceof a?!0:m(t)?!1:"array"!==r.matrix;if(t instanceof a&&(t=t.valueOf()),i instanceof a&&(i=i.valueOf()),i.length&&i[0]instanceof o&&(i=i.map(function(e){return e instanceof o?e.toNumber():e})),c(t))return n(t,i,f);if(0==i.length){for(;m(t);)t=t[0];return u(t)}m(t)||(t=[t]),t=u(t);var p=s.resize(t,i,f);return l?new a(p):p}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(9),u=n.array,f=n.number.isNumber,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit;e.size=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("size",arguments.length,1);var n="array"===r.matrix;if(f(t)||p(t)||m(t)||c(t)||null==t||t instanceof i)return n?[]:new s([]);if(l(t))return n?[t.length]:new s([t.length]);if(Array.isArray(t))return u.size(t);if(t instanceof s)return new s(t.size());throw new e.error.UnsupportedTypeError("size",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(9),i=r.object,o=r.array,a=Array.isArray;e.squeeze=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("squeeze",arguments.length,1);if(a(r))return o.squeeze(i.clone(r));if(r instanceof n){var t=o.squeeze(r.toArray());return a(t)?new n(t):t}return i.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i,o;if(l(r))return i=new s(r),o=i.subset(t),o&&o.valueOf();if(r instanceof s)return r.subset(t);if(c(r))return n(r,t);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function n(r,t){if(!(t instanceof u))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);var n=r.length;f.validateIndex(t.min()[0],n),f.validateIndex(t.max()[0],n);var i=t.range(0),o="";return i.forEach(function(e){o+=r.charAt(e)}),o}function i(r,t,n,i){var a;if(l(r))return a=new s(e.clone(r)),a.subset(t,n,i),a.valueOf();if(r instanceof s)return r.clone().subset(t,n,i);if(c(r))return o(r,t,n,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function o(r,t,n,i){if(!(t instanceof u))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);if(void 0!==i){if(!c(i)||1!==i.length)throw new TypeError("Single character expected as defaultValue")}else i=" ";var o=t.range(0),a=o.size()[0];if(a!=n.length)throw new e.error.DimensionError(o.size()[0],n.length);var s=r.length;f.validateIndex(t.min()[0]),f.validateIndex(t.max()[0]);for(var l=[],p=0;s>p;p++)l[p]=r.charAt(p);if(o.forEach(function(e,r){l[e]=n.charAt(r)}),l.length>s)for(p=s-1,a=l.length;a>p;p++)l[p]||(l[p]=i);return l.join("")}var a=t(160),s=t(9),u=t(8),f=a.array,c=a.string.isString,l=Array.isArray;e.subset=function(){switch(arguments.length){case 2:return r(arguments[0],arguments[1]);case 3:case 4:return i(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw new e.error.ArgumentsError("subset",arguments.length,2,4)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(9),i=r.object,o=r.string;e.transpose=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("transpose",arguments.length,1);var t=e.size(r).valueOf();switch(t.length){case 0:return i.clone(r);case 1:return i.clone(r);case 2:var a,s=t[1],u=t[0],f=r instanceof n,c=r.valueOf(),l=[],p=i.clone;if(0===s)throw new RangeError("Cannot transpose a 2D matrix with no rows(size: "+o.format(t)+")");for(var m=0;s>m;m++){a=l[m]=[];for(var h=0;u>h;h++)a[h]=p(c[h][m])}return f?new n(l):l;default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(t)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(9),a=t(13),s=n.array,u=Array.isArray;e.zeros=function(e){var t=a.argsToArray(arguments),n=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==t.length)return n?new o:[];var f=!1;t=t.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(0):0;return c=s.resize(c,t,l),n?new o(c):c}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(13),o=r.number.isNumber,a=r["boolean"].isBoolean,s=(r.number.isInteger,i.isCollection);e.factorial=function c(r){var t,l;if(1!=arguments.length)throw new e.error.ArgumentsError("factorial",arguments.length,1);if(o(r))return e.gamma(r+1);if(r instanceof n){if(!u(r)&&r.isFinite())return e.gamma(r.plus(1));if(!r.isFinite())return new n(r);if(r=r.toNumber(),rr?new n(f[r]):f[r];var p=new n(1);t=new n(f.length),l=f[f.length-1];for(var m=f.length;r>m;++m)l=l.times(t),t=t.plus(p),f[m]=l;return f[r]=l.times(t)}if(a(r)||null===r)return 1;if(s(r))return i.deepMap(r,c);throw new e.error.UnsupportedTypeError("factorial",e["typeof"](r))};var u=function(e){return e.isInteger()&&(!e.isNegative()||e.isZero())},f=[1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,87178291200,1307674368e3,20922789888e3,355687428096e3,6402373705728e3,0x1b02b9306890000,243290200817664e4,new n("51090942171709440000")]}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r["boolean"].isBoolean,s=i.isComplex,u=r.number.isNumber,f=r.number.isInteger,c=o.isCollection;e.gamma=function p(r){var t,m,h=4.7421875;if(1!=arguments.length)throw new e.error.ArgumentsError("gamma",arguments.length,1);if(u(r)){if(f(r)){if(0>=r)return isFinite(r)?1/0:0/0;if(r>171)return 1/0;for(var g=r-2,d=r-1;g>1;)d*=g,g--;return 0==d&&(d=1),d}if(.5>r)return Math.PI/(Math.sin(Math.PI*r)*p(1-r));if(r>=171.35)return 1/0;if(r>85){var w=r*r,x=w*r,y=x*r,v=y*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*w)-139/(51840*x)-571/(2488320*y)+163879/(209018880*v)+5246819/(75246796800*v*r))}--r,m=l[0];for(var b=1;b2)throw new e.error.ArgumentsError("permutations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value expected in function permutations");if(1==f)return e.factorial(r);if(2==f&&i(t)){if(!o(t)||0>t)throw new TypeError("Positive integer value expected in function permutations");if(t>r)throw new TypeError("second argument k must be less than or equal to first argument n");for(s=1,u=r-t+1;r>=u;u++)s*=u;return s}}if(r instanceof n){if(void 0===t&&a(r))return e.factorial(r);if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function permutations");if(t.gt(r))throw new TypeError("second argument k must be less than or equal to first argument n");for(s=new n(1),u=r.minus(t).plus(1);u.lte(r);u=u.plus(1))s=s.times(u);return s}throw new e.error.UnsupportedTypeError("permutations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=(t(13),r.number.isNumber),o=r.number.isInteger;e.combinations=function(r,t){var s,u,f,c,l=arguments.length;if(2!=l)throw new e.error.ArgumentsError("combinations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value enpected in function combinations");if(t>r)throw new TypeError("k must be less than or equal to n");for(s=Math.max(t,r-t),u=1,f=1;r-s>=f;f++)u=u*(s+f)/f;return u}if(r instanceof n){if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function combinations");if(t.gt(r))throw new TypeError("k must be less than n in function combinations");for(s=r.minus(t),t.lt(s)&&(s=t),u=new n(1),f=new n(1),c=r.minus(s);f.lte(c);f=f.plus(1))u=u.times(s.plus(f)).dividedBy(f);return u}throw new e.error.UnsupportedTypeError("combinations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.compare=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("compare",arguments.length,2);if(u(t)&&u(n))return f(t,n,r.epsilon)?0:t>n?1:-1;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?new i(t.cmp(n)):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?new i(t.cmp(n)):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value?1:t.valuen?1:n>t?-1:0;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("compare",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n){if(o(t)){if(o(n)){var i=t.length;if(i!==n.length)return!1;for(var a=0;i>a;a++)if(!r(t[a],n[a]))return!1;return!0}return!1}return o(n)?!1:e.equal(t,n)}var n=t(13),i=n.isCollection,o=Array.isArray;e.deepEqual=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("deepEqual",arguments.length,2);return i(t)||i(n)?r(t.valueOf(),n.valueOf()):e.equal(t,n)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.equal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("equal",arguments.length,2);if(u(t)){if(u(n))return f(t,n,r.epsilon);if(p(n))return f(t,n.re,r.epsilon)&&f(n.im,0,r.epsilon)}if(p(t)){if(u(n))return f(t.re,n,r.epsilon)&&f(t.im,0,r.epsilon);if(p(n))return f(t.re,n.re,r.epsilon)&&f(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value==n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t==n;if(c(t))return g(+t,n);if(c(n))return g(t,+n);if(null===t)return null===n;if(null===n)return null===t;if(void 0===t)return void 0===n;if(void 0===n)return void 0===t;throw new e.error.UnsupportedTypeError("equal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.larger=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("larger",arguments.length,2);if(u(t)&&u(n))return!f(t,n,r.epsilon)&&t>n;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>n;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("larger",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.largerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("largerEq",arguments.length,2);if(u(t)&&u(n))return f(t,n,r.epsilon)||t>n;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>=n;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("largerEq",e["typeof"](t),e["typeof"](n))},e.largereq=function(){throw new Error("Function largereq is renamed to largerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smaller=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smaller",arguments.length,2);if(u(t)&&u(n))return!f(t,n,r.epsilon)&&n>t;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.valuet;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smaller",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smallerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smallerEq",arguments.length,2);if(u(t)&&u(n))return f(t,n,r.epsilon)||n>t;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value<=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return n>=t;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smallerEq",e["typeof"](t),e["typeof"](n))},e.smallereq=function(){throw new Error("Function smallereq is renamed to smallerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(160),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.unequal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("unequal",arguments.length,2);if(u(t)){if(u(n))return!f(t,n,r.epsilon);if(p(n))return!f(t,n.re,r.epsilon)||!f(n.im,0,r.epsilon)}if(p(t)){if(u(n))return!f(t.re,n,r.epsilon)||!f(t.im,0,r.epsilon);if(p(n))return!f(t.re,n.re,r.epsilon)||!f(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?!t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?!t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value!=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t!=n;if(c(t))return g(+t,n);if(c(n))return g(t,+n);if(null===t)return null!==n;if(null===n)return null!==t;if(void 0===t)return void 0!==n;if(void 0===n)return void 0!==t;throw new e.error.UnsupportedTypeError("unequal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.smaller(r,t)?r:t}function n(r){var t=void 0;if(i.deepForEach(r,function(r){(void 0===t||e.smaller(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var i=(t(9),t(13)),o=i.isCollection;e.min=function(e){if(0==arguments.length)throw new SyntaxError("Function min requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.larger(r,t)?r:t}function n(r){var t=void 0;if(i.deepForEach(r,function(r){(void 0===t||e.larger(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var i=(t(9),t(13)),o=i.isCollection;e.max=function(e){if(0==arguments.length)throw new SyntaxError("Function max requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=i.reduce(r,t,e.add),o=s(r)?a(r):r.size();return e.divide(n,o[t])}function n(r){var t=0,n=0;if(i.deepForEach(r,function(r){t=e.add(t,r),n++}),0===n)throw new Error("Cannot calculate mean of an empty array");return e.divide(t,n)}var i=(t(9),t(13)),o=i.isCollection,a=t(153).size,s=Array.isArray;e.mean=function(e){if(0==arguments.length)throw new SyntaxError("Function mean requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return r(arguments[0],arguments[1]);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=u(r);t.sort(e.compare);var o=t.length;if(0==o)throw new Error("Cannot calculate median of an empty array");if(o%2==0){var s=t[o/2-1],f=t[o/2];if(!(a(s)||s instanceof i||s instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](s));if(!(a(f)||f instanceof i||f instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](f));return e.divide(e.add(s,f),2)}var c=t[(o-1)/2];if(!(a(c)||c instanceof i||c instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](c));return c}var n=(t(9),t(10)),i=e.type.BigNumber,o=t(13),a=t(4).isNumber,s=o.isCollection,u=t(153).flatten;e.median=function(e){if(0==arguments.length)throw new SyntaxError("Function median requires one or more parameters (0 provided)");if(s(e)){if(1==arguments.length)return r(e.valueOf());throw 2==arguments.length?new Error("median(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(Array.prototype.slice.call(arguments))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=void 0;if(n.deepForEach(r,function(r){t=void 0===t?r:e.multiply(t,r)}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}var n=(t(9),t(13)),i=n.isCollection;e.prod=function(e){if(0==arguments.length)throw new SyntaxError("Function prod requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("prod(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e){"use strict";e.exports=function(e){e.std=function(){if(0==arguments.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");var r=e["var"].apply(null,arguments);return e.sqrt(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=void 0;if(n.deepForEach(r,function(r){t=void 0===t?r:e.add(t,r)}),void 0===t)throw new Error("Cannot calculate sum of an empty array");return t}var n=(t(9),t(13)),i=n.isCollection;e.sum=function(e){if(0==arguments.length)throw new SyntaxError("Function sum requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("sum(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var o=0,a=0;if(i.deepForEach(r,function(r){o=e.add(o,r),a++}),0===a)throw new Error("Cannot calculate var of an empty array");var s=e.divide(o,a);switch(o=0,i.deepForEach(r,function(r){var t=e.subtract(r,s);o=e.add(o,e.multiply(t,t))}),t){case"uncorrected":return e.divide(o,a);case"biased":return e.divide(o,a+1);case"unbiased":var u=o instanceof n?new n(0):0;return 1==a?u:e.divide(o,a-1);default:throw new Error('Unknown normalization "'+t+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var n=(t(9),e.type.BigNumber),i=t(13),o=i.isCollection,a=t(176).isString,s="unbiased";e["var"]=function(e,t){if(0==arguments.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return r(e,s);if(2==arguments.length){if(!a(t))throw new Error("String expected for parameter normalization");return r(e,t)}throw new SyntaxError("Wrong number of parameters")}return r(arguments,s)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.acos=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acos",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.acos(r):c(new i(r,0));if(u(r)){var t=new i(r.im*r.im-r.re*r.re+1,-2*r.re*r.im),l=e.sqrt(t),p=new i(l.re-r.im,l.im+r.re),m=e.log(p);return new i(1.5707963267948966-m.im,m.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.acos(r);if(r instanceof n)return c(r.toNumber());throw new e.error.UnsupportedTypeError("acos",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.asin=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asin",arguments.length,1); -if(a(r))return r>=-1&&1>=r?Math.asin(r):c(new i(r,0));if(u(r)){var t=r.re,l=r.im,p=new i(l*l-t*t+1,-2*t*l),m=e.sqrt(p),h=new i(m.re-l,m.im+t),g=e.log(h);return new i(g.im,-g.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.asin(r);if(r instanceof n)return c(r.toNumber());throw new e.error.UnsupportedTypeError("asin",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.atan=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atan",arguments.length,1);if(a(r))return Math.atan(r);if(u(r)){var t=r.re,l=r.im,p=t*t+(1-l)*(1-l),m=new i((1-l*l-t*t)/p,-2*t/p),h=e.log(m);return new i(-.5*h.im,.5*h.re)}if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.atan(r);if(r instanceof n)return c(r.toNumber());throw new e.error.UnsupportedTypeError("atan",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=(i.isComplex,o.isCollection);e.atan2=function f(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("atan2",arguments.length,2);if(a(r)&&a(t))return Math.atan2(r,t);if(u(r)||u(t))return o.deepMap2(r,t,f);if(s(r)||null===r)return f(+r,t);if(s(t)||null===t)return f(r,+t);if(r instanceof n)return f(r.toNumber(),t);if(t instanceof n)return f(r,t.toNumber());throw new e.error.UnsupportedTypeError("atan2",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cos=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cos",arguments.length,1);if(s(r))return Math.cos(r);if(f(r))return new i(Math.cos(r.re)*e.cosh(-r.im),Math.sin(r.re)*e.sinh(-r.im));if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.cos(r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cos",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cosh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cosh",arguments.length,1);if(s(r))return(Math.exp(r)+Math.exp(-r))/2;if(f(r)){var t=Math.exp(r.re),m=Math.exp(-r.re);return new i(Math.cos(r.im)*(t+m)/2,Math.sin(r.im)*(t-m)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cosh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cot=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cot",arguments.length,1);if(s(r))return 1/Math.tan(r);if(f(r)){var t=Math.exp(-4*r.im)-2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new i(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/t,(Math.exp(-4*r.im)-1)/t)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.coth=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("coth",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t+1)/(t-1)}if(f(r)){var m=Math.exp(2*r.re),h=m*Math.cos(2*r.im),g=m*Math.sin(2*r.im),d=(h-1)*(h-1)+g*g;return new i(((h+1)*(h-1)+g*g)/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("coth",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.csc=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csc",arguments.length,1);if(s(r))return 1/Math.sin(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))-.5*Math.cos(2*r.re);return new i(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.cos(r.re)*(Math.exp(-r.im)-Math.exp(r.im))/t)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("csc",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number,u=r.number.isNumber,f=r["boolean"].isBoolean,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.csch=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csch",arguments.length,1);if(u(r))return 0==r?Number.NaN:Math.abs(2/(Math.exp(r)-Math.exp(-r)))*s.sign(r);if(c(r)){var t=Math.exp(r.re),h=Math.exp(-r.re),g=Math.cos(r.im)*(t-h),d=Math.sin(r.im)*(t+h),w=g*g+d*d;return new i(2*g/w,-2*d/w)}if(l(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return m(r.value)}if(p(r))return a.deepMap(r,m);if(f(r)||null===r)return m(r?1:0);if(r instanceof n)return m(r.toNumber());throw new e.error.UnsupportedTypeError("csch",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sec=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sec",arguments.length,1);if(s(r))return 1/Math.cos(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))+.5*Math.cos(2*r.re);return new i(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.sin(r.re)*(Math.exp(r.im)-Math.exp(-r.im))/t)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sec",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sech=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sech",arguments.length,1);if(s(r))return 2/(Math.exp(r)+Math.exp(-r));if(f(r)){var t=Math.exp(r.re),m=Math.exp(-r.re),h=Math.cos(r.im)*(t+m),g=Math.sin(r.im)*(t-m),d=h*h+g*g;return new i(2*h/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sech",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection,p=r.bignumber.sin;e.sin=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sin",arguments.length,1);if(s(r))return Math.sin(r);if(f(r))return new i(Math.sin(r.re)*e.cosh(-r.im),Math.cos(r.re)*e.sinh(r.im));if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return Math.sin(r);if(r instanceof n)return p(r);throw new e.error.UnsupportedTypeError("sin",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sinh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sinh",arguments.length,1);if(s(r))return Math.abs(r)<1?r+r*r*r/6+r*r*r*r*r/120:(Math.exp(r)-Math.exp(-r))/2;if(f(r)){var t=Math.cos(r.im),m=Math.sin(r.im),h=Math.exp(r.re),g=Math.exp(-r.re);return new i(t*(h-g)/2,m*(h+g)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sinh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.tan=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tan",arguments.length,1);if(s(r))return Math.tan(r);if(f(r)){var t=Math.exp(-4*r.im)+2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new i(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/t,(1-Math.exp(-4*r.im))/t)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return Math.tan(r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("tan",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.tanh=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tanh",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t-1)/(t+1)}if(f(r)){var m=Math.exp(2*r.re),h=m*Math.cos(2*r.im),g=m*Math.sin(2*r.im),d=(h+1)*(h+1)+g*g;return new i(((h-1)*(h+1)+g*g)/d,2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("tanh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=t(10),i=t(13),o=r.string.isString,a=n.isUnit,s=i.isCollection;e.to=function u(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("to",arguments.length,2);if(a(r)&&(a(t)||o(t)))return r.to(t);if(s(r)||s(t))return i.deepMap2(r,t,u);throw new e.error.UnsupportedTypeError("to",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=r.object;e.clone=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("clone",arguments.length,1);return n.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if("function"==typeof r)return e.filter(function(e){return r(e)});if(r instanceof RegExp)return e.filter(function(e){return r.test(e)});throw new TypeError("Function or RegExp expected")}var n=t(9);e.filter=function(t,i){if(2!==arguments.length)throw new e.error.ArgumentsError("filter",arguments.length,2);if(t instanceof n){var o=t.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return new n(r(t.toArray(),i))}if(Array.isArray(t))return r(t,i);throw new e.error.UnsupportedTypeError("filter",e["typeof"](t),e["typeof"](compare))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=r.string;e.format=function(r,t){var i=arguments.length;if(1!==i&&2!==i)throw new e.error.ArgumentsError("format",i,1,2);return n.format(r,t)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){(n.override||void 0===e[r])&&(e[r]=n.wrap&&"function"==typeof t?function(){for(var r=[],n=0,i=arguments.length;i>n;n++){var o=arguments[n];r[n]=o&&o.valueOf()}return t.apply(e,r)}:t,e.chaining.Chain.createProxy(r,t))}function n(e){return"function"==typeof e||s(e)||u(e)||f(e)||c(e)}var i=t(160),o=t(6),a=t(10),s=i.number.isNumber,u=i.string.isString,f=o.isComplex,c=a.isUnit;e["import"]=function l(i,o){var a=arguments.length;if(1!=a&&2!=a)throw new e.error.ArgumentsError("import",a,1,2);var s,f={override:o&&o.override||!1,wrap:o&&o.wrap||!1};if(u(i)){var c=t(196)(i);l(c,o)}else{if("object"!=typeof i)throw new TypeError("Object or module name expected");for(s in i)if(i.hasOwnProperty(s)){var p=i[s];n(p)?r(s,p,f):l(p,o)}}}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){return Array.isArray(n)?n.map(function(e,r){return t(e,i.concat(r))}):r(n,i,e)};return t(e,[])}var n=t(9);e.map=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(t))return r(t,i);if(t instanceof n)return t.map(i);throw new e.error.UnsupportedTypeError("map",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(160),n=r.string.isString;e.print=function(r,t,i){var o=arguments.length;if(2!=o&&3!=o)throw new e.error.ArgumentsError("print",o,2,3);if(!n(r))throw new TypeError("String expected as first parameter in function format");if(!(t instanceof Object))throw new TypeError("Object expected as second parameter in function format");return r.replace(/\$([\w\.]+)/g,function(r,o){for(var a=o.split("."),s=t[a.shift()];a.length&&void 0!==s;){var u=a.shift();s=u?s[u]:s+"."}return void 0!==s?n(s)?s:e.format(s,i):r})}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(9);e.sort=function(t,n){var i=null;if(1===arguments.length)i=e.compare;else{if(2!==arguments.length)throw new e.error.ArgumentsError("sort",arguments.length,1,2);if("function"==typeof n)i=n;else if("asc"===n)i=e.compare;else{if("desc"!==n)throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n));i=function(r,t){return-e.compare(r,t)}}}if(t instanceof r){var o=t.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return new r(t.toArray().sort(i))}if(Array.isArray(t))return t.sort(i);throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(195),n=t(6),i=t(9),o=t(10),a=t(8),s=t(7),u=t(11);e["typeof"]=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("typeof",arguments.length,1);var f=r.type(t);if("object"===f){if(t instanceof n)return"complex";if(t instanceof i)return"matrix";if(t instanceof o)return"unit";if(t instanceof a)return"index";if(t instanceof s)return"range";if(t instanceof u)return"help";if(t instanceof e.type.BigNumber)return"bignumber";if(t instanceof e.chaining.Chain)return"chain"}return f}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){Array.isArray(n)?n.forEach(function(e,r){t(e,i.concat(r))}):r(n,i,e)};t(e,[])}var n=t(9);e.forEach=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(t))return r(t,i);if(t instanceof n)return t.forEach(i);throw new e.error.UnsupportedTypeError("forEach",e["typeof"](t))}}},function(e,r,t){"use strict";function n(e,t,n){var a,s,u=e.constructor,f=+(e.s<0),c=+(t.s<0);if(f){a=o(i(r.not(e)));for(var l=0;l0;)n(p[--g],m[--d])==w&&(x=x.plus(y)),y=y.times(v);for(;d>0;)n(h,m[--d])==w&&(x=x.plus(y)),y=y.times(v);return u.precision=b,0==w&&(x.s=-x.s),x}function i(e){for(var r=e.c,t=r[0]+"",n=1;n0)if(++s>f)for(s-=f;s--;u+="0");else f>s&&(u=u.slice(0,s)+"."+u.slice(s));return u}function o(e){for(var r=[0],t=0;t1&&(null==r[i+1]&&(r[i+1]=0),r[i+1]+=r[i]>>1,r[i]&=1)}return r.reverse()}var a=t(155),s=t(4).isNumber,u=(t(4).digits,t(314).memoize);r.isBigNumber=function(e){return e instanceof a},r.e=u(function(e){var r=a.constructor({precision:e});return new r(1).exp()}),r.phi=u(function(e){var r=a.constructor({precision:e});return new r(1).plus(new r(5).sqrt()).div(2)}),r.pi=u(function(e){var t=a.constructor({precision:e+4}),n=new t(4).times(r.arctan(new t(1).div(5))).minus(r.arctan(new t(1).div(239)));return t.config({precision:e}),new t(4).times(n)}),r.tau=u(function(e){var t=r.pi(e+2),n=a.constructor({precision:e});return new n(2).times(t)}),r.and=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitAnd must be integer numbers");var t=e.constructor;if(e.isNaN()||r.isNaN())return new t(0/0);if(e.isZero()||r.eq(-1)||e.eq(r))return e;if(r.isZero()||e.eq(-1))return r;if(!e.isFinite()||!r.isFinite()){if(!e.isFinite()&&!r.isFinite())return e.isNegative()==r.isNegtive()?e:new t(0);if(!e.isFinite())return r.isNegative()?e:e.isNegative()?new t(0):r;if(!r.isFinite())return e.isNegative()?r:r.isNegative()?new t(0):e}return n(e,r,function(e,r){return e&r})},r.arctan=function(e){for(var r=e,t=0/0,n=e.times(e),i=e,o=!0,a=3;!r.equals(t);a+=2)i=i.times(n),t=r,o=!o,r=o?r.plus(i.div(a)):r.minus(i.div(a));return r},r.leftShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function leftShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:e.isFinite()||r.isFinite()?e.times(r.lt(55)?Math.pow(2,r.toNumber())+"":new t(2).pow(r)):new t(0/0)},r.not=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Parameter in function bitNot must be integer numbers");var r=e.constructor,t=r.precision;r.precision=1e9;var e=e.plus(r.ONE);return e.s=-e.s||null,r.precision=t,e},r.or=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitOr must be integer numbers");var t=e.constructor;if(e.isNaN()||r.isNaN())return new t(0/0);var i=new t(-1);return e.isZero()||r.eq(i)||e.eq(r)?r:r.isZero()||e.eq(i)?e:e.isFinite()&&r.isFinite()?n(e,r,function(e,r){return e|r}):!e.isFinite()&&!e.isNegative()&&r.isNegative()||e.isNegative()&&!r.isNegative()&&!r.isFinite()?i:e.isNegative()&&r.isNegative()?e.isFinite()?e:r:e.isFinite()?r:e},r.sin=function(e){var t=e.constructor,n=t.precision;if(e.isNaN()||!e.isFinite())return new t(0/0);var i;(i=e.isNegative())&&(e.s=-e.s);var o=r.pi(n+~~(3*Math.log(n))+1),a=o.times(2);if(e.div(o.toDP(e.dp(),1)).toNumber()%2==0)return new t(0);var s=e.mod(a);if(s.toDP(e.dp(),1).isZero())return new t(0);s.gt(o)&&(s=s.minus(a));for(var u=0/0,f=s.times(s),c=s,l=t.ONE,p=!0,m=1;!s.equals(u);m+=2)c=c.times(f),l=l.times(m+1).times(m+2),u=s,p=!p,s=p?s.plus(c.div(l)):s.minus(c.div(l));return i&&(s.s=-s.s),s.constructor.precision=n,s.toDP(n-1)},r.rightShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:r.isFinite()?r.lt(55)?e.div(Math.pow(2,r.toNumber())+"").floor():e.div(new t(2).pow(r)).floor():new t(e.isNegative()?-1:e.isFinite()?0:0/0)},r.xor=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Parameters in function bitXor must be integer numbers");var i=e.constructor;if(e.isNaN()||t.isNaN())return new i(0/0);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new i(0);var o=new i(-1);return e.eq(o)?r.not(t):t.eq(o)?r.not(e):e.isFinite()&&t.isFinite()?n(e,t,function(e,r){return e^r}):e.isFinite()||t.isFinite()?new i(e.isNegative()==t.isNegative()?1/0:-1/0):o},r.format=function(e,t){if("function"==typeof t)return t(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var n="auto",i=void 0;switch(void 0!==t&&(t.notation&&(n=t.notation),s(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;t&&t.exponential&&(void 0!==t.exponential.lower&&(o=t.exponential.lower),void 0!==t.exponential.upper&&(a=t.exponential.upper));{({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos})}if(e.constructor.config({toExpNeg:Math.round(Math.log(o)/Math.LN10),toExpPos:Math.round(Math.log(a)/Math.LN10)}),e.isZero())return"0";var u,f=e.abs();return u=f.gte(o)&&f.lt(a)?e.toSignificantDigits(i).toFixed():r.toExponential(e,i),u.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(r-1):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(r||0)}},function(e,r,t){"use strict";function n(e){for(var r=[];m(e);)r.push(e.length),e=e[0];return r}function i(e,r,t){var n,o=e.length;if(o!=r[t])throw new l(o,r[t]);if(tn;n++){var s=e[n];if(!m(s))throw new l(r.length-1,r.length,"<");i(e[n],r,a)}}else for(n=0;o>n;n++)if(m(e[n]))throw new l(r.length+1,r.length,">")}function o(e,t,n,i){var a,s,u=e.length,f=t[n],l=Math.min(u,f);if(e.length=f,na;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,t,p,i);for(a=l;f>a;a++)s=[],e[a]=s,o(s,t,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==r.UNINITIALIZED)for(a=l;f>a;a++)e[a]=c.clone(i)}}function a(e,r,t){var n,i;if(r>t){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=a(e[n],r,o)}else for(;m(e);)e=e[0];return e}function s(e,r,t){var n,i;if(m(e)){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=s(e[n],r,o)}else for(var a=t;r>a;a++)e=[e];return e}var u=t(4),f=t(176),c=t(3),l=(t(195),t(157)),p=t(158),m=Array.isArray;r.size=function(e){var t=n(e);return r.validate(e,t),t},r.validate=function(e,r){var t=0==r.length;if(t){if(m(e))throw new l(e.length,0)}else i(e,r,0)},r.validateIndex=function(e,r){if(!u.isNumber(e)||!u.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new p(e);if(void 0!==r&&e>=r)throw new p(e,r)},r.UNINITIALIZED={},r.resize=function(e,r,t){if(!m(e)||!m(r))throw new TypeError("Array expected");if(0===r.length)throw new Error("Resizing to scalar is not supported");r.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(r)+")")});var n=void 0!==t?t:0;return o(e,r,0,n),e},r.squeeze=function(e,t){for(var n=t||r.size(e);m(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return ia;a++)e=[e],o.unshift(1);for(e=s(e,t,0);o.lengthi;i++)n=n.concat.apply(n,r[i]);r=n}return r},r.argsToArray=function(e){for(var r=[],t=0,n=e.length;n>t;t++)r[t]=e[t];return r},r.isArray=m},function(e){e.exports="1.2.1-SNAPSHOT"},function(e,r,t){var n;!function(i){"use strict";function o(e){for(var r,t,n=1,i=e.length,o=e[0]+"";i>n;n++){for(r=e[n]+"",t=T-r.length;t--;)r="0"+r;o+=r}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function a(e,r,t,n){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=r-o,0>a?(a+=T,i=0):(i=Math.ceil((a+1)/T),a%=T),o=N(10,T-a),u=e[i]%o|0,null==n?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>t&&99999==u||t>3&&49999==u||5e4==u||0==u):s=(4>t&&u+1==o||t>3&&u+1==o/2)&&(e[i+1]/o/100|0)==N(10,a-2)-1||(u==o/2||0==u)&&0==(e[i+1]/o/100|0):4>a?(0==a?u=u/1e3|0:1==a?u=u/100|0:2==a&&(u=u/10|0),s=(n||4>t)&&9999==u||!n&&t>3&&4999==u):s=((n||4>t)&&u+1==o||!n&&t>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==N(10,a-3)-1,s}function s(e,r,t){var n=e.constructor;return null==r||((x=0>r||r>8)||0!==r&&(n.errors?parseInt:parseFloat)(r)!=r)&&!p(n,"rounding mode",r,t,0)?n.rounding:0|r}function u(e,r,t,n){var i=e.constructor;return!(x=(n||0)>r||r>=U+1)&&(0===r||(i.errors?parseInt:parseFloat)(r)==r)||p(i,"argument",r,t,0)}function f(e,r){var t,n,i,s,u,f,c,l=0,p=0,m=0,h=e.constructor,d=h.ONE,w=h.rounding,x=h.precision;if(!e.c||!e.c[0]||e.e>17)return new h(e.c?e.c[0]?e.s<0?0:1/0:d:e.s?e.s<0?0:e:0/0);for(null==r?(v=!1,u=x):u=r,c=new h(.03125);e.e>-2;)e=e.times(c),m+=5;for(n=Math.log(N(2,m))/Math.LN10*2+5|0,u+=n,t=s=f=new h(d),h.precision=u;;){if(s=g(s.times(e),u,1),t=t.times(++p),c=f.plus(z(s,t,u,1)),o(c.c).slice(0,u)===o(f.c).slice(0,u)){for(i=m;i--;)f=g(f.times(f),u,1);if(null!=r)return h.precision=x,f;if(!(3>l&&a(f.c,u-n,w,l)))return g(f,h.precision=x,w,v=!0);h.precision=u+=10,t=s=c=new h(d),p=0,l++}f=c}}function c(e,r,t,n){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==r?t=0:(g(e,++r,t),t=n?r:r+e.e-u),u=e.e,i=o(e.c),1==n||2==n&&(u>=r||u<=s.toExpNeg)){for(;i.length1&&(i=i.charAt(0)+"."+i.slice(1)),i+=(0>u?"e":"e+")+u}else{if(n=i.length,0>u){for(a=t-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(a=t-u,u-=n;u--;i+="0");a>0&&(i+=".")}else a=t-n,n>u?i=i.slice(0,u)+"."+i.slice(u):a>0&&(i+=".");if(a>0)for(;a--;i+="0");}return e.s<0&&e.c[0]?"-"+i:i}function l(e){var r=e.length-1,t=r*T+1;if(r=e[r]){for(;r%10==0;r/=10,t--);for(r=e[0];r>=10;r/=10,t++);}return t}function p(e,r,t,n,i){if(e.errors){var o=new Error((n||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][b?0>b?-b:b:0>1/b?1:0])+"() "+(["number type has more than 15 significant digits","LN10 out of digits"][r]||r+([x?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+t);throw o.name="Decimal Error",x=b=0,o}}function m(e,r,t){var n=new e(e.ONE);for(v=!1;1&t&&(n=n.times(r)),t>>=1,t;)r=r.times(r);return v=!0,n}function h(e,r){var t,n,i,s,u,f,c,l,m,d,w,x=1,y=10,b=e,E=b.c,N=b.constructor,A=N.ONE,M=N.rounding,T=N.precision;if(b.s<0||!E||!E[0]||!b.e&&1==E[0]&&1==E.length)return new N(E&&!E[0]?-1/0:1!=b.s?0/0:E?0:b);if(null==r?(v=!1,c=T):c=r,N.precision=c+=y,t=o(E),n=t.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new N(n+"."+t.slice(1)),c+2>q.length&&p(N,1,c+2,"ln"),b=h(b,c-y).plus(new N(q.slice(0,c+2)).times(s+"")),N.precision=T,null==r?g(b,T,M,v=!0):b;for(;7>n&&1!=n||1==n&&t.charAt(1)>3;)b=b.times(e),t=o(b.c),n=t.charAt(0),x++;for(s=b.e,n>1?(b=new N("0."+t),s++):b=new N(n+"."+t.slice(1)),d=b,l=u=b=z(b.minus(A),b.plus(A),c,1),w=g(b.times(b),c,1),i=3;;){if(u=g(u.times(w),c,1),m=l.plus(z(u,new N(i),c,1)),o(m.c).slice(0,c)===o(l.c).slice(0,c)){if(l=l.times(2),0!==s&&(c+2>q.length&&p(N,1,c+2,"ln"),l=l.plus(new N(q.slice(0,c+2)).times(s+""))),l=z(l,new N(x),c,1),null!=r)return N.precision=T,l;if(!a(l.c,c-y,M,f))return g(l,N.precision=T,M,v=!0);N.precision=c+=y,m=u=b=z(d.minus(A),d.plus(A),c,1),w=g(b.times(b),c,1),i=f=1}l=m,i+=2}}function g(e,r,t,n){var i,o,a,s,u,f,c,l,p=e.constructor;e:if(null!=r){if(!(c=e.c))return e;for(i=1,s=c[0];s>=10;s/=10,i++);if(o=r-i,0>o)o+=T,a=r,u=c[l=0],f=u/N(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/T),l>=c.length){if(!n)break e;for(;c.length<=l;c.push(0));u=f=0,i=1,o%=T,a=o-T+1}else{for(u=s=c[l],i=1;s>=10;s/=10,i++);o%=T,a=o-T+i,f=0>a?0:E(u/N(10,i-a-1)%10)}if(n=n||0>r||null!=c[l+1]||(0>a?u:u%N(10,i-a-1)),n=4>t?(f||n)&&(0==t||t==(e.s<0?3:2)):f>5||5==f&&(4==t||n||6==t&&(o>0?a>0?u/N(10,i-a):0:c[l-1])%10&1||t==(e.s<0?8:7)),1>r||!c[0])return c.length=0,n?(r-=e.e+1,c[0]=N(10,r%T),e.e=-r||0):c[0]=e.e=0,e;if(0==o?(c.length=l,s=1,l--):(c.length=l+1,s=N(10,T-o),c[l]=a>0?(u/N(10,i-a)%N(10,a)|0)*s:0),n)for(;;){if(0==l){for(o=1,a=c[0];a>=10;a/=10,o++);for(a=c[0]+=s,s=1;a>=10;a/=10,s++);o!=s&&(e.e++,c[0]==M&&(c[0]=1));break}if(c[l]+=s,c[l]!=M)break;c[l--]=0,s=1}for(o=c.length;0===c[--o];c.pop());}return v&&(e.e>p.maxE?e.c=e.e=null:e.ea,!i||!o)return u==f?0:!i^t?1:-1;if(u!=f)return u>f^t?1:-1;for(a=-1,s=(u=i.length)<(f=o.length)?u:f;++ao[a]^t?1:-1;return u==f?0:u>f^t?1:-1},O.decimalPlaces=O.dp=function(){var e,r,t=null;if(e=this.c){if(t=((r=e.length-1)-E(this.e/T))*T,r=e[r])for(;r%10==0;r/=10,t--);0>t&&(t=0)}return t},O.dividedBy=O.div=function(e,r){return b=2,z(this,new this.constructor(e,r))},O.dividedToIntegerBy=O.divToInt=function(e,r){var t=this,n=t.constructor;return b=18,g(z(t,new n(e,r),0,1,1),n.precision,n.rounding)},O.equals=O.eq=function(e,r){return b=3,0===this.cmp(e,r)},O.exponential=O.exp=function(){return f(this)},O.floor=function(){return g(new this.constructor(this),this.e+1,3)},O.greaterThan=O.gt=function(e,r){return b=4,this.cmp(e,r)>0},O.greaterThanOrEqualTo=O.gte=function(e,r){return b=5,r=this.cmp(e,r),1==r||0===r},O.isFinite=function(){return!!this.c},O.isInteger=O.isInt=function(){return!!this.c&&E(this.e/T)>this.c.length-2},O.isNaN=function(){return!this.s},O.isNegative=O.isNeg=function(){return this.s<0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.lessThan=O.lt=function(e,r){return b=6,this.cmp(e,r)<0},O.lessThanOrEqualTo=O.lte=function(e,r){return b=7,r=this.cmp(e,r),-1==r||0===r},O.logarithm=O.log=function(e,r){var t,n,i,s,u,f,c,l,m,d=this,w=d.constructor,x=w.precision,y=w.rounding,E=5;if(null==e)e=new w(10),t=!0;else{if(b=15,e=new w(e,r),n=e.c,e.s<0||!n||!n[0]||!e.e&&1==n[0]&&1==n.length)return new w(0/0);t=e.eq(10)}if(n=d.c,d.s<0||!n||!n[0]||!d.e&&1==n[0]&&1==n.length)return new w(n&&!n[0]?-1/0:1!=d.s?0/0:n?0:1/0);if(u=t&&(s=n[0],n.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),v=!1,c=x+E,l=c+10,f=h(d,c),t?(l>q.length&&p(w,1,l,"log"),i=new w(q.slice(0,l))):i=h(e,c),m=z(f,i,c,1),a(m.c,s=x,y))do if(c+=10,f=h(d,c),t?(l=c+10,l>q.length&&p(w,1,l,"log"),i=new w(q.slice(0,l))):i=h(e,c),m=z(f,i,c,1),!u){+o(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,x+1,0)); -break}while(a(m.c,s+=10,y));return v=!0,g(m,x,y)},O.minus=function(e,r){var t,n,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,r),r=e.s,!u||!r)return new s(0/0);if(u!=r)return e.s=-r,a.plus(e);var f=a.c,c=e.c,l=E(e.e/T),p=E(a.e/T),m=s.precision,h=s.rounding;if(!p||!l){if(!f||!c)return f?(e.s=-r,e):new s(c?a:0/0);if(!f[0]||!c[0])return a=c[0]?(e.s=-r,e):new s(f[0]?a:3==h?-0:0),v?g(a,m,h):a}if(f=f.slice(),n=f.length,u=p-l){for((o=0>u)?(u=-u,t=f,n=c.length):(l=p,t=c),(p=Math.ceil(m/T))>n&&(n=p),u>(n+=2)&&(u=n,t.length=1),t.reverse(),r=u;r--;t.push(0));t.reverse()}else for((o=n<(i=c.length))&&(i=n),u=r=0;i>r;r++)if(f[r]!=c[r]){o=f[r]0)for(;r--;f[i++]=0);for(p=M-1,r=c.length;r>u;){if(f[--r]=10;r/=10,u++);return e.e=u+l*T-1,v?g(e,m,h):e},O.modulo=O.mod=function(e,r){var t,n,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,r),r=e.s,t=!i.c||!r||e.c&&!e.c[0],t||!e.c||i.c&&!i.c[0]?t?new o(0/0):g(new o(i),o.precision,o.rounding):(v=!1,9==a?(e.s=1,n=z(i,e,0,3,1),e.s=r,n.s*=r):n=z(i,e,0,a,1),n=n.times(e),v=!0,i.minus(n))},O.naturalLogarithm=O.ln=function(){return h(this)},O.negated=O.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},O.plus=function(e,r){var t,n=this,i=n.constructor,o=n.s;if(b=10,e=new i(e,r),r=e.s,!o||!r)return new i(0/0);if(o!=r)return e.s=-r,n.minus(e);var a=n.c,s=e.c,u=E(e.e/T),f=E(n.e/T),c=i.precision,l=i.rounding;if(!f||!u){if(!a||!s)return new i(o/0);if(!a[0]||!s[0])return n=s[0]?e:new i(a[0]?n:0*o),v?g(n,c,l):n}if(a=a.slice(),o=f-u){for(0>o?(o=-o,t=a,r=s.length):(u=f,t=s,r=a.length),(f=Math.ceil(c/T))>r&&(r=f),o>++r&&(o=r,t.length=1),t.reverse();o--;t.push(0));t.reverse()}for(a.length-s.length<0&&(t=s,s=a,a=t),o=s.length,r=0,f=M;o;a[o]%=f)r=(a[--o]=a[o]+s[o]+r)/f|0;for(r&&(a.unshift(r),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,r=a[0];r>=10;r/=10,o++);return e.e=o+u*T-1,v?g(e,c,l):e},O.precision=O.sd=function(e){var r=null,t=this;return e!=r&&e!==!!e&&1!==e&&0!==e&&p(t.constructor,"argument",e,"precision",1),t.c&&(r=l(t.c),e&&t.e+1>r&&(r=t.e+1)),r},O.round=function(){var e=this,r=e.constructor;return g(new r(e),e.e+1,r.rounding)},O.squareRoot=O.sqrt=function(){var e,r,t,n,i,a,s=this,u=s.c,f=s.s,c=s.e,l=s.constructor,p=new l(.5);if(1!==f||!u||!u[0])return new l(!f||0>f&&(!u||u[0])?0/0:u?s:1/0);for(v=!1,f=Math.sqrt(+s),0==f||f==1/0?(r=o(u),(r.length+c)%2==0&&(r+="0"),f=Math.sqrt(r),c=E((c+1)/2)-(0>c||c%2),f==1/0?r="1e"+c:(r=f.toExponential(),r=r.slice(0,r.indexOf("e")+1)+c),n=new l(r)):n=new l(f.toString()),t=(c=l.precision)+3;;)if(a=n,n=p.times(a.plus(z(s,a,t+2,1))),o(a.c).slice(0,t)===(r=o(n.c)).slice(0,t)){if(r=r.slice(t-3,t+1),"9999"!=r&&(i||"4999"!=r)){(!+r||!+r.slice(1)&&"5"==r.charAt(0))&&(g(n,c+1,1),e=!n.times(n).eq(s));break}if(!i&&(g(a,c+1,0),a.times(a).eq(s))){n=a;break}t+=4,i=1}return v=!0,g(n,c,l.rounding,e)},O.times=function(e,r){var t,n,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,r),e.c),u=E(i.e/T),f=E(e.e/T),c=i.s;if(r=e.s,e.s=c==r?1:-1,!((u||a&&a[0])&&(f||s&&s[0])))return new o(!c||!r||a&&!a[0]&&!s||s&&!s[0]&&!a?0/0:a&&s?0*e.s:e.s/0);for(n=u+f,c=a.length,r=s.length,r>c&&(t=a,a=s,s=t,f=c,c=r,r=f),f=c+r,t=[];f--;t.push(0));for(u=r-1;u>-1;u--){for(r=0,f=c+u;f>u;)r=t[f]+s[u]*a[f-u-1]+r,t[f--]=r%M|0,r=r/M|0;t[f]=(t[f]+r)%M|0}for(r?++n:t[0]||t.shift(),f=t.length;!t[--f];t.pop());for(e.c=t,c=1,r=t[0];r>=10;r/=10,c++);return e.e=c+n*T-1,v?g(e,o.precision,o.rounding):e},O.toDecimalPlaces=O.toDP=function(e,r){var t=this;return t=new t.constructor(t),null!=e&&u(t,e,"toDP")?g(t,(0|e)+t.e+1,s(t,r,"toDP")):t},O.toExponential=function(e,r){var t=this;return t.c?c(t,null!=e&&u(t,e,"toExponential")?0|e:null,null!=e&&s(t,r,"toExponential"),1):t.toString()},O.toFixed=function(e,r){var t,n=this,i=n.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(n,e,t="toFixed")?n.e+(0|e):null,r=s(n,r,t)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&n.c?(t=c(n,e,r),n.s<0&&n.c&&(n.c[0]?t.indexOf("-")<0&&(t="-"+t):t=t.replace("-",""))):t=n.toString(),i.toExpNeg=o,i.toExpPos=a,t},O.toFormat=function(e,r){var t=this;if(!t.c)return t.toString();var n,i=t.s<0,o=t.constructor.format,a=o.groupSeparator,s=+o.groupSize,u=+o.secondaryGroupSize,f=t.toFixed(e,r).split("."),c=f[0],l=f[1],p=i?c.slice(1):c,m=p.length;if(u&&(n=s,s=u,m-=u=n),s>0&&m>0){for(n=m%s||s,c=p.substr(0,n);m>n;n+=s)c+=a+p.substr(n,s);u>0&&(c+=a+p.slice(n)),i&&(c="-"+c)}return l?c+o.decimalSeparator+((u=+o.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+o.fractionGroupSeparator):l):c},O.toFraction=function(e){var r,t,n,i,a,s,u,f,c=this,m=c.constructor,h=r=new m(m.ONE),g=s=new m(0),d=c.c,w=new m(g);if(!d)return c.toString();for(n=w.e=l(d)-c.e-1,w.c[0]=N(10,(u=n%T)<0?T+u:u),(null==e||(!(b=12,a=new m(e)).s||(x=a.cmp(h)<0||!a.c)||m.errors&&E(a.e/T)0)&&(e=n>0?w:h),v=!1,a=new m(o(d)),u=m.precision,m.precision=n=d.length*T*2;f=z(a,w,0,1,1),t=r.plus(f.times(g)),1!=t.cmp(e);)r=g,g=t,h=s.plus(f.times(t=h)),s=t,w=a.minus(f.times(t=w)),a=t;return t=z(e.minus(r),g,0,1,1),s=s.plus(t.times(h)),r=r.plus(t.times(g)),s.s=h.s=c.s,i=z(h,g,n,1).minus(c).abs().cmp(z(s,r,n,1).minus(c).abs())<1?[h+"",g+""]:[s+"",r+""],v=!0,m.precision=u,i},O.toNearest=function(e,r){var t=this,n=t.constructor;return t=new n(t),null==e?(e=new n(n.ONE),r=n.rounding):(b=17,e=new n(e),r=s(t,r,"toNearest")),e.c?t.c&&(e.c[0]?(v=!1,t=z(t,e,0,4>r?[4,5,7,8][r]:r,1).times(e),v=!0,g(t)):t.c=[t.e=0]):t.s&&(e.s&&(e.s=t.s),t=e),t},O.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},O.toPower=O.pow=function(e,r){var t,n,i,s,u=this,c=u.constructor,l=u.s,p=(b=13,+(e=new c(e,r))),d=0>p?-p:p,w=c.precision,x=c.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new c(N(i?0*l:+u,p));if(u=new c(u),t=u.c.length,!u.e&&u.c[0]==u.s&&1==t)return u;if(r=e.c.length-1,e.e||e.c[0]!=e.s||r)if(n=E(e.e/T),i=n>=r,!i&&0>l)s=new c(0/0);else{if(i&&B>t*T*d){if(s=m(c,u,d),e.s<0)return c.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(n,r)]?-1:1,r=N(+u,p),n=0!=r&&isFinite(r)?new c(r+"").e:E(p*(Math.log("0."+o(u.c))/Math.LN10+u.e+1)),n>c.maxE+1||n0?l/0:0);v=!1,c.rounding=u.s=1,d=Math.min(12,(n+"").length),s=f(e.times(h(u,w+d)),w),s=g(s,w+5,1),a(s.c,w,x)&&(n=w+10,s=g(f(e.times(h(u,n+d)),n),n+5,1),+o(s.c).slice(w+1,w+15)+1==1e14&&(s=g(s,w+1,0))),s.s=l,v=!0,c.rounding=x}s=g(s,w,x)}else s=g(u,w,x);return s},O.toPrecision=function(e,r){var t=this;return null!=e&&u(t,e,"toPrecision",1)&&t.c?c(t,0|--e,s(t,r,"toPrecision"),2):t.toString()},O.toSignificantDigits=O.toSD=function(e,r){var t=this,n=t.constructor;return t=new n(t),null!=e&&u(t,e,"toSD",1)?g(t,0|e,s(t,r,"toSD")):g(t,n.precision,n.rounding)},O.toString=function(e){var r,t,n,i=this,a=i.constructor,s=i.e;if(null===s)t=i.s?"Infinity":"NaN";else{if(e===r&&(s<=a.toExpNeg||s>=a.toExpPos))return c(i,null,a.rounding,1);if(t=o(i.c),0>s){for(;++s;t="0"+t);t="0."+t}else if(n=t.length,s>0)if(++s>n)for(s-=n;s--;t+="0");else n>s&&(t=t.slice(0,s)+"."+t.slice(s));else if(r=t.charAt(0),n>1)t=r+"."+t.slice(1);else if("0"==r)return r;if(null!=e)if((x=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(t=d(a,t,0|e,10,i.s),"0"==t)return t}return i.s<0?"-"+t:t},O.truncated=O.trunc=function(){return g(new this.constructor(this),this.e+1,1)},O.valueOf=O.toJSON=function(){return this.toString()},d=function(){function e(e,r,t){for(var n,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=r);for(o[n=0]+=S.indexOf(e.charAt(a++));nt-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/t|0,o[n]%=t)}return o.reverse()}return function(r,t,n,i,o){var a,s,u,f,c,l,p=t.indexOf("."),h=r.precision,g=r.rounding;for(37>i&&(t=t.toLowerCase()),p>=0&&(t=t.replace(".",""),l=new r(i),f=m(r,l,t.length-p),l.c=e(f.toFixed(),10,n),l.e=l.c.length),c=e(t,i,n),a=s=c.length;0==c[--s];c.pop());if(!c[0])return"0";if(0>p?a--:(f.c=c,f.e=a,f.s=o,f=z(f,l,h,g,0,n),c=f.c,u=f.r,a=f.e),p=c[h],s=n/2,u=u||null!=c[h+1],4>g?(null!=p||u)&&(0==g||g==(f.s<0?3:2)):p>s||p==s&&(4==g||u||6==g&&1&c[h-1]||g==(f.s<0?8:7)))for(c.length=h,--n;++c[--h]>n;)c[h]=0,h||(++a,c.unshift(1));else c.length=h;for(s=c.length;!c[--s];);for(p=0,t="";s>=p;t+=S.charAt(c[p++]));if(0>a){for(;++a;t="0"+t);t="0."+t}else if(p=t.length,++a>p)for(a-=p;a--;t+="0");else p>a&&(t=t.slice(0,a)+"."+t.slice(a));return t}}();var z=function(){function e(e,r,t){var n,i=0,o=e.length;for(e=e.slice();o--;)n=e[o]*r+i,e[o]=n%t|0,i=n/t|0;return i&&e.unshift(i),e}function r(e,r,t,n){var i,o;if(t!=n)o=t>n?1:-1;else for(i=o=0;t>i;i++)if(e[i]!=r[i]){o=e[i]>r[i]?1:-1;break}return o}function t(e,r,t,n){for(var i=0;t--;)e[t]-=i,i=e[t]1;e.shift());}return function(n,i,o,a,s,u){var f,c,l,p,m,h,d,w,x,y,v,b,N,A,S,O,C,U,B,q=n.constructor,z=n.s==i.s?1:-1,I=n.c,_=i.c;if(!(I&&I[0]&&_&&_[0]))return new q(n.s&&i.s&&(I?!_||I[0]!=_[0]:_)?I&&0==I[0]||!_?0*z:z/0:0/0);for(u?(p=1,c=n.e-i.e):(u=M,p=T,c=E(n.e/p)-E(i.e/p)),U=_.length,O=I.length,x=new q(z),y=x.c=[],l=0;_[l]==(I[l]||0);l++);if(_[l]>(I[l]||0)&&c--,null==o?(z=o=q.precision,a=q.rounding):z=s?o+(n.e-i.e)+1:o,0>z)y.push(1),m=!0;else{if(z=z/p+2|0,l=0,1==U){for(h=0,_=_[0],z++;(O>l||h)&&z--;l++)A=h*u+(I[l]||0),y[l]=A/_|0,h=A%_|0;m=h||O>l}else{for(h=u/(_[0]+1)|0,h>1&&(_=e(_,h,u),I=e(I,h,u),U=_.length,O=I.length),S=U,v=I.slice(0,U),b=v.length;U>b;v[b++]=0);B=_.slice(),B.unshift(0),C=_[0],_[1]>=u/2&&C++;do h=0,f=r(_,v,U,b),0>f?(N=v[0],U!=b&&(N=N*u+(v[1]||0)),h=N/C|0,h>1?(h>=u&&(h=u-1),d=e(_,h,u),w=d.length,b=v.length,f=r(d,v,w,b),1==f&&(h--,t(d,w>U?B:_,w,u))):(0==h&&(f=h=1),d=_.slice()),w=d.length,b>w&&d.unshift(0),t(v,d,b,u),-1==f&&(b=v.length,f=r(_,v,U,b),1>f&&(h++,t(v,b>U?B:_,b,u))),b=v.length):0===f&&(h++,v=[0]),y[l++]=h,f&&v[0]?v[b++]=I[S]||0:(v=[I[S]],b=1);while((S++=10;z/=10,l++);x.e=l+c*p-1,g(x,s?o+x.e+1:o,a,m)}return x}}();w=function(){function e(e){var r,t,n,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==t||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((n=e[r="precision"])!=t&&((x=1>n||n>U)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="rounding"])!=t&&((x=0>n||n>8)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="toExpNeg"])!=t&&((x=-C>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="toExpPos"])!=t&&((x=0>n||n>C)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="minE"])!=t&&((x=-C>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="maxE"])!=t&&((x=0>n||n>C)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="errors"])!=t&&(n===!!n||1===n||0===n?(x=b=0,i[r]=!!n):p(i,r,n,o,1)),(n=e[r="crypto"])!=t&&(n===!!n||1===n||0===n?i[r]=!(!n||!y||"object"!=typeof y):p(i,r,n,o,1)),(n=e[r="modulo"])!=t&&((x=0>n||n>9)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(e=e[r="format"])!=t&&("object"==typeof e?i[r]=e:p(i,"format object expected",e,o)),i)}function r(e){return new this(e).exp()}function t(e){return new this(e).ln()}function n(e,r){return new this(e).log(r)}function i(e,r,t){var n,i,o=0;for("[object Array]"==A.call(r[0])&&(r=r[0]),n=new e(r[0]);++oi;)n=r[i],n>=429e7?r[i]=y.getRandomValues(new Uint32Array(1))[0]:o[i++]=n%1e7;else if(y&&y.randomBytes){for(r=y.randomBytes(t*=4);t>i;)n=r[i]+(r[i+1]<<8)+(r[i+2]<<16)+((127&r[i+3])<<24),n>=214e7?y.randomBytes(4).copy(r,i):(o.push(n%1e7),i+=4);i=t/4}else p(a,"crypto unavailable",y,"random");if(!i)for(;t>i;)o[i++]=1e7*Math.random()|0;for(t=o[--i],e%=T,t&&e&&(n=N(10,T-e),o[i]=(t/n|0)*n);0===o[i];i--)o.pop();if(0>i)o=[t=0];else{for(t=-1;0===o[0];)o.shift(),t-=T;for(i=1,n=o[0];n>=10;)n/=10,i++;T>i&&(t-=T-i)}return s.e=t,s.c=o,s}function c(e){return new this(e).sqrt()}function l(i){function u(e,r){var t=this;if(!(t instanceof u))return p(u,"Decimal called without new",e),new u(e,r);if(t.constructor=u,e instanceof u){if(null==r)return b=0,t.s=e.s,t.e=e.e,t.c=(e=e.c)?e.slice():e,t;if(10==r)return g(new u(e),u.precision,u.rounding);e+=""}return m(u,t,e,r)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-C,u.maxE=C,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=O,u.ONE=new u(1),u.ROUND_UP=0,u.ROUND_DOWN=1,u.ROUND_CEIL=2,u.ROUND_FLOOR=3,u.ROUND_HALF_UP=4,u.ROUND_HALF_DOWN=5,u.ROUND_HALF_EVEN=6,u.ROUND_HALF_CEIL=7,u.ROUND_HALF_FLOOR=8,u.EUCLID=9,u.config=e,u.constructor=l,u.exp=r,u.ln=t,u.log=n,u.max=o,u.min=a,u.pow=s,u.sqrt=c,u.random=f,null!=i&&u.config(i),u}var m=function(){var e=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,r=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(t,n,i,o){var a,s,u,f,c,l;if("string"!=typeof i&&(i=(f="number"==typeof i||"[object Number]"==A.call(i))&&0===i&&0>1/i?"-0":i+""),c=i,null==o&&e.test(i))n.s=45===i.charCodeAt(0)?(i=i.slice(1),-1):1;else{if(10==o)return g(new t(i),t.precision,t.rounding);if(i=r.call(i).replace(/^\+(?!-)/,""),n.s=45===i.charCodeAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,null!=o?o!=(0|o)&&t.errors||(x=!(o>=2&&65>o))?(p(t,"base",o,0,0),l=e.test(i)):(a="["+S.slice(0,o=0|o)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+a+"(?:\\."+a+")?$",37>o?"i":"").test(i))?(f&&(i.replace(/^0\.0*|\./,"").length>15&&p(t,0,c),f=!f),i=d(t,i,10,o,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(t,"not a base "+o+" number",c),i="NaN")):l=e.test(i),!l)return n.c=n.e=null,"Infinity"!=i&&("NaN"!=i&&p(t,"not a number",c),n.s=null),b=0,n}for((s=i.indexOf("."))>-1&&(i=i.replace(".","")),(u=i.search(/e/i))>0?(0>s&&(s=u),s+=+i.slice(u+1),i=i.substring(0,u)):0>s&&(s=i.length),u=0;48===i.charCodeAt(u);u++);for(o=i.length;48===i.charCodeAt(--o););if(i=i.slice(u,o+1)){if(o=i.length,f&&o>15&&p(t,0,c),n.e=s=s-u-1,n.c=[],u=(s+1)%T,0>s&&(u+=T),o>u){for(u&&n.c.push(+i.slice(0,u)),o-=T;o>u;)n.c.push(+i.slice(u,u+=T));i=i.slice(u),u=T-i.length}else u-=o;for(;u--;i+="0");n.c.push(+i),v&&(n.e>t.maxE?n.c=n.e=null:n.e=this.max?"Index out of range ("+this.index+" > "+(this.max-1)+")":"Index out of range ("+this.index+")",this.stack=(new Error).stack}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name="IndexError",e.exports=r},function(e){"use strict";function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.types=Array.prototype.splice.call(arguments,1),this.message=e?0==this.types.length?"Unsupported type of argument in function "+e:"Function "+e+"("+this.types.join(", ")+") not supported":"Unsupported type of argument",this.stack=(new Error).stack}r.prototype=new TypeError,r.prototype.constructor=TypeError,r.prototype.name="UnsupportedTypeError",e.exports=r},function(e,r,t){"use strict";r.array=t(153),r["boolean"]=t(175),r.number=t(4),r.bignumber=t(152),r.object=t(3),r.string=t(176),r.types=t(195)},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(this.nodes=e||[],!a(this.nodes)||!this.nodes.every(s))throw new TypeError("Array containing Nodes expected")}var i=t(173),o=(t(3),t(176)),a=(t(13),t(160),Array.isArray),s=i.isNode;n.prototype=new i,n.prototype.type="ArrayNode",n.prototype._compile=function(e){var r="array"!==e.math.config().matrix,t=this.nodes.map(function(r){return r._compile(e)});return(r?"math.matrix([":"[")+t.join(",")+(r?"])":"]")},n.prototype.forEach=function(e){for(var r=0;r0;return n=r?r:n,r});e.range=function(e,r,t){return new u(e instanceof s?e.toNumber():e,r instanceof s?r.toNumber():r,t instanceof s?t.toNumber():t)};var f=this.ranges.map(function(r,t){var n=i[t];return r instanceof o?n?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+t+"]; return range( "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" );})(scope)":"range("+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+")":n?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+t+"]; return "+r._compile(e)+";})(scope)":r._compile(e)});return n?"(function () { var obj = "+this.object._compile(e)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+f.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+f.join(", ")+")"+(r?", "+r:"")+")"},n.prototype.forEach=function(e){e(this.object,"object",this);for(var r=0;r3)throw new Error("Too many arguments");this.start=e,this.end=r,this.step=t||null}var i=t(173),o=i.isNode;n.prototype=new i,n.prototype.type="RangeNode",n.prototype._compile=function(e){return"math.range("+this.start._compile(e)+", "+this.end._compile(e)+(this.step?", "+this.step._compile(e):"")+")"},n.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this) -},n.prototype.map=function(e){return new n(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},n.prototype.clone=function(){return new n(this.start,this.end,this.step&&this.step)},n.prototype.toString=function(){var e=this.start.toString();return this.step&&(e+=":"+this.step.toString()),e+=":"+this.end.toString()},n.prototype.toTex=function(){var e=this.start.toTex();return this.step&&(e+=":"+this.step.toTex()),e+=":"+this.end.toTex()},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');this.name=e}function i(e){throw new Error("Undefined symbol "+e)}var o=t(173),a=t(10),s=t(316),u=t(176).isString;n.prototype=new o,n.prototype.type="SymbolNode",n.prototype._compile=function(e){return e.undef=i,e.Unit=a,this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(a.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},n.prototype.forEach=function(){},n.prototype.map=function(){return this.clone()},n.prototype.clone=function(){return new n(this.name)},n.prototype.toString=function(){return this.name},n.prototype.toTex=function(){return s.toSymbol(this.name)},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof o))throw new TypeError('Expected IndexNode for parameter "index"');if(!(r instanceof i))throw new TypeError('Expected Node for parameter "expr"');this.index=e,this.expr=r}var i=t(173),o=t(167);n.prototype=new i,n.prototype.type="UpdateNode",n.prototype._compile=function(e){return'scope["'+this.index.objectName()+'"] = '+this.index.compileSubset(e,this.expr._compile(e))},n.prototype.forEach=function(e){e(this.index,"index",this),e(this.expr,"expr",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.index,"index",this)),this._ifNode(e(this.expr,"expr",this)))},n.prototype.clone=function(){return new n(this.index,this.expr)},n.prototype.toString=function(){return this.index.toString()+" = "+this.expr.toString()},n.prototype.toTex=function(){return this.index.toTex()+" = "+this.expr.toTex()},e.exports=n},function(e,r,t){"use strict";function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator")}function i(e){for(var r in e)if(e.hasOwnProperty(r)&&r in a)throw new Error('Scope contains an illegal symbol, "'+r+'" is a reserved keyword')}function o(e){var r=Object.create(e);for(var t in e)if(e.hasOwnProperty(t)){var n=e[t],i=n&&n.transform;i&&(r[t]=i)}return r}var a=t(315);n.prototype.eval=function(){throw new Error("Node.eval is deprecated. Use Node.compile(math).eval([scope]) instead.")},n.prototype.type="Node",n.prototype.compile=function(e){if(!(e instanceof Object))throw new TypeError("Object expected for parameter math");var r={math:o(e),_validateScope:i},t=this._compile(r),n=Object.keys(r).map(function(e){return" var "+e+' = defs["'+e+'"];'}),a=n.join(" ")+'return { "eval": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+t+"; }};",s=new Function("defs",a);return s(r)},n.prototype._compile=function(){throw new Error("Cannot compile a Node interface")},n.prototype.forEach=function(){throw new Error("Cannot run forEach on a Node interface")},n.prototype.map=function(){throw new Error("Cannot run map on a Node interface")},n.prototype._ifNode=function(e){if(!(e instanceof n))throw new TypeError("Callback function must return a Node");return e},n.prototype.traverse=function(e){function r(e,t){e.forEach(function(e,n,i){t(e,n,i),r(e,t)})}e(this,null,null),r(this,e)},n.prototype.transform=function(e){function r(e,t){return e.map(function(e,n,i){var o=t(e,n,i);return o!==e?o:r(e,t)})}var t=e(this,null,null);return t!==this?t:r(this,e)},n.prototype.filter=function(e){var r=[];return this.traverse(function(t,n,i){e(t,n,i)&&r.push(t)}),r},n.prototype.find=function(){throw new Error("Function Node.find is deprecated. Use Node.filter instead.")},n.prototype.match=function(){throw new Error("Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.")},n.prototype.clone=function(){throw new Error("Cannot clone a Node interface")},n.prototype.toString=function(){return""},n.prototype.toTex=function(){return""},n.isNode=function(e){return e instanceof n},e.exports=n},function(e,r,t){var n=(t(157),t(158));r.transform=function(e){return e instanceof n?new n(e.index+1,e.min+1,e.max+1):e}},function(e,r){"use strict";r.isBoolean=function(e){return e instanceof Boolean||"boolean"==typeof e}},function(e,r,t){"use strict";function n(e,t){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=n(e[a],t);return i+="]"}return r.format(e,t)}var i=t(4),o=t(152),a=t(155);r.isString=function(e){return e instanceof String||"string"==typeof e},r.endsWith=function(e,r){var t=e.length-r.length,n=e.length;return e.substring(t,n)===r},r.format=function(e,t){return i.isNumber(e)?i.format(e,t):e instanceof a?o.format(e,t):Array.isArray(e)?n(e,t):r.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(t):e.toString():String(e)}},function(e){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e){e.exports={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e){e.exports={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["tau"],seealso:[]}},function(e){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,r,t){"use strict";e.exports=function(e){function r(r){if(!s.hasOwnProperty(r))throw new Error("Unknown distribution "+r);var t=Array.prototype.slice.call(arguments,1),o=s[r].apply(this,t);return function(r){var t={random:function(r,t,i){var s,f,c;if(arguments.length>3)throw new e.error.ArgumentsError("random",arguments.length,0,3);if(1===arguments.length?a(r)?s=r:c=r:2===arguments.length?a(r)?(s=r,c=t):(f=r,c=t):(s=r,f=t,c=i),void 0===c&&(c=1),void 0===f&&(f=0),void 0!==s){var l=u(s.valueOf(),f,c,o);return s instanceof n?new n(l):l}return o(f,c)},randomInt:function(r,t,i){var o,f,c;if(arguments.length>3||arguments.length<1)throw new e.error.ArgumentsError("randomInt",arguments.length,1,3);if(1===arguments.length?a(r)?o=r:c=r:2===arguments.length?a(r)?(o=r,c=t):(f=r,c=t):(o=r,f=t,c=i),void 0===f&&(f=0),void 0!==o){var l=u(o.valueOf(),f,c,s);return o instanceof n?new n(l):l}return s(f,c)},pickRandom:function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("pickRandom",arguments.length,1);if(r instanceof n)r=r.valueOf();else if(!Array.isArray(r))throw new e.error.UnsupportedTypeError("pickRandom",e["typeof"](r));if(i.size(r).length>1)throw new Error("Only one dimensional vectors supported");return r[Math.floor(Math.random()*r.length)]}},o=function(e,t){return e+r()*(t-e)},s=function(e,t){return Math.floor(e+r()*(t-e))},u=function(e,r,t,n){var i,o,a=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)a.push(u(e,r,t,n));else for(o=0,i=e.shift();i>o;o++)a.push(n(r,t));return a};return t}(o)}var n=t(9),i=t(153),o=t(13),a=o.isCollection,s={uniform:function(){return Math.random},normal:function(){return function(){for(var e,r,t=-1;0>t||t>1;)e=Math.random(),r=Math.random(),t=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*r)+.5;return t}}};return r}},function(e,r){"use strict";r.type=function(e){var r=typeof e;if("object"===r){if(null===e)return"null";if(e instanceof Boolean)return"boolean";if(e instanceof Number)return"number";if(e instanceof String)return"string";if(Array.isArray(e))return"array";if(e instanceof Date)return"date";if(e instanceof Function)return"function";if(e instanceof RegExp)return"regexp"}return r}},function(e,r,t){function n(e){return t(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":143,"./clone.js":143,"./filter":144,"./filter.js":144,"./forEach":151,"./forEach.js":151,"./format":145,"./format.js":145,"./import":146,"./import.js":146,"./map":147,"./map.js":147,"./print":148,"./print.js":148,"./sort":149,"./sort.js":149,"./typeof":150,"./typeof.js":150};n.keys=function(){return Object.keys(o)},n.resolve=i,e.exports=n,n.id=196},function(e){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i",'"hello" + " world"',"3 cm + 2 inch"],seealso:["subtract"]}},function(e){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["pow","log"]}},function(e){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e){e.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log10"]}},function(e){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i))","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)","norm([[1, 2], [3, 4]], 'inf')","norm([[1, 2], [3, 4]], 'fro')"]}},function(e){e.exports={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["sqrt","pow"]}},function(e){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()","matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])"],seealso:["bignumber","boolean","complex","index","number","string","unit"]}},function(e){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e){e.exports={name:"not",category:"Logical",syntax:["!x","not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["!true","not false","!2","!0"],seealso:["and","or","xor"]}},function(e){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e){e.exports={name:"xor",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 or 4"],seealso:["not","and","or"]}},function(e){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze"]}},function(e){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","transpose","zeros"]}},function(e){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","transpose","zeros"]} -},function(e){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","zeros"]}},function(e){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose"]}},function(e){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["random","randomInt"]}},function(e){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e){e.exports={name:"randInt",category:"Probability",syntax:["randInt()","randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt()","randInt(10, 20)","randInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},function(e){e.exports={name:"filter",category:"Utils",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},function(e){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,r){r.memoize=function(e){function r(t){return t in r.cache?r.cache[t]:r.cache[t]=e(t)}if(1===e.length)return r.cache={},r;throw new Error("Function must have one argument")}},function(e){"use strict";e.exports={end:!0}},function(e,r,t){"use strict";function n(){for(var e,r=Array.prototype.slice.call(arguments),t=0,n=r.length;n>t;t++){e=r[t];for(var i in e)e.hasOwnProperty(i)&&(y[i]=e[i])}}function i(e,r){return"undefined"!=typeof e[r]}function o(e){return function(r){return i(e,r)}}function a(e){return function(t){if("boolean"==typeof e[t])t=e[t]===!0?"\\"+t:"\\mathrm{"+t+"}";else if("string"==typeof e[t])t=e[t];else if("string"==typeof t){var n=t.indexOf("_");-1!==n&&(t=r.toSymbol(t.substring(0,n))+"_{"+r.toSymbol(t.substring(n+1))+"}")}return t}}var s=t(161),u=t(168),f=t(171),c=t(165),l={Alpha:"A",alpha:!0,Beta:"B",beta:!0,Gamma:!0,gamma:!0,Delta:!0,delta:!0,Epsilon:"E",epsilon:!0,varepsilon:!0,Zeta:"Z",zeta:!0,Eta:"H",eta:!0,Theta:!0,theta:!0,vartheta:!0,Iota:"I",iota:!0,Kappa:"K",kappa:!0,varkappa:!0,Lambda:!0,lambda:!0,Mu:"M",mu:!0,Nu:"N",nu:!0,Xi:!0,xi:!0,Omicron:"O",omicron:!0,Pi:!0,pi:!0,varpi:!0,Rho:"P",rho:!0,varrho:!0,Sigma:!0,sigma:!0,varsigma:!0,Tau:"T",tau:!0,Upsilon:!0,upsilon:!0,Phi:!0,phi:!0,varphi:!0,Chi:"X",chi:!0,Psi:!0,psi:!0,Omega:!0,omega:!0},p={dots:!0,ldots:!0,cdots:!0,vdots:!0,ddots:!0,idots:!0},m={"true":"\\mathrm{True}","false":"\\mathrm{False}"},h={inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:!0,undefined:"\\mathbf{?}"},g={acos:"\\cos^{-1}",arccos:"\\cos^{-1}",cos:!0,csc:!0,csch:!1,exp:!0,ker:!0,limsup:!0,min:!0,sinh:!0,asin:"\\sin^{-1}",arcsin:"\\sin^{-1}",cosh:!0,deg:!0,gcd:!0,lg:!0,ln:!0,Pr:!0,sup:!0,atan:"\\tan^{-1}",atan2:"\\tan2^{-1}",arctan:"\\tan^{-1}",cot:!0,det:!0,hom:!0,log:!0,log10:"\\log_{10}",sec:!0,sech:!1,tan:!0,arg:!0,coth:!0,dim:!0,inf:!0,max:!0,sin:!0,tanh:!0,fix:!1,lcm:!1,sign:!1,xgcd:!1,unaryMinus:!1,unaryPlus:!1,complex:!1,conj:!1,im:!1,re:!1,diag:!1,resize:!1,size:!1,squeeze:!1,subset:!1,index:!1,ones:!1,zeros:!1,range:!1,random:!1,mean:"\\mu",median:!1,prod:!1,std:"\\sigma","var":"\\sigma^2"},d={sqrt:!0,inv:!0,"int":"\\int",Int:"\\int",integrate:"\\int",eigenvalues:"\\lambda",liminf:!0,lim:!0,exp:"e^",sum:!0,eye:"\\mathbf{I}"},w={"<=":"\\leq",">=":"\\geq","!=":"\\neq","in":!0,"*":"\\cdot","/":"\\frac",mod:"\\bmod",to:"\\rightarrow"},x={deg:"^{\\circ}"},y={};n(g,d,l,p,m,h),r.isSymbol=o(y),r.toSymbol=a(y),r.isFunction=o(g),r.toFunction=a(g),r.isCurlyFunction=o(d),r.toCurlyFunction=a(d),r.isOperator=o(w),r.toOperator=a(w),r.isUnit=o(x),r.toUnit=function(){var e=a(x);return function(t,n){return r.isUnit(t)?e(t):(n?"":"\\,")+"\\mathrm{"+t+"}"}}(),r.addBraces=function(e,r,t){if(null===r)return e;var n=["",""];switch(t=t||"normal","undefined"==typeof r||r===!1?n=["{","}"]:r===!0?(n=["(",")"],t="lr"):n=Array.isArray(r)&&2===r.length?r:[r,r],t){case"normal":case!1:return n[0]+e+n[1];case"lr":return"\\left"+n[0]+"{"+e+"}\\right"+n[1];case"be":return"\\begin{"+n[0]+"}"+e+"\\end{"+n[1]+"}"}return n[0]+e+n[1]},r.toArgs=function(e){var t=e.name,n=e.args,i=r.toSymbol(e.name),o=null,a=null,l=!1,p=!1,m="",h="",g=null;switch(t){case"add":g="+";break;case"subtract":g="-";break;case"larger":g=">";break;case"largerEq":g=">=";break;case"smaller":g="<";break;case"smallerEq":g="<=";break;case"unequal":g="!=";break;case"equal":g="=";break;case"mod":g="mod";break;case"multiply":g="*";break;case"pow":g="^";break;case"concat":g="||";break;case"factorial":g="!";break;case"permutations":if(1!==n.length){var d=n[0].toTex(),w=n[1].toTex();return"\\frac{"+d+"!}{\\left("+d+" - "+w+"\\right)!}"}if(!(n[0]instanceof f||n[0]instanceof c))return"{\\left("+n[0].toTex()+"\\right)!}";g="!";break;case"combinations":g="\\choose";break;case"abs":a="|",l="lr";break;case"norm":if(a="\\|",l="lr",2===n.length){var x=n[1].toTex();"\\text{inf}"===x?x="\\infty":"\\text{-inf}"===x?x="{- \\infty}":"\\text{fro}"===x&&(x="F"),h="_{"+x+"}",n=[n[0]]}break;case"ceil":a=["\\lceil","\\rceil"],l="lr";break;case"floor":a=["\\lfloor","\\rfloor"],l="lr";break;case"round":a=["\\lfloor","\\rceil"],l="lr",2===n.length&&(h="_"+r.addBraces(n[1].toTex()),n=[n[0]]);break;case"inv":h="^{-1}";break;case"transpose":h="^{T}",a=!1;break;case"log":var y="e";2===n.length&&(y=n[1].toTex(),i="\\log_{"+y+"}",n=[n[0]]),"e"===y&&(i="\\ln"),p=!0;break;case"square":h="^{2}";break;case"cube":h="^{3}";break;case"eye":p=!0,a=!1,i+="_";break;case"det":if(e.args[0]instanceof s)return e.args[0].toTex("vmatrix");a="vmatrix",l="be";break;default:p=!0}return null!==g?(a="+"===g||"-"===g,o=new u(g,t,n).toTex()):g=", ",null!==a||r.isCurlyFunction(t)||(a=!0),o=o||n.map(function(e){return"{"+e.toTex()+"}"}).join(g),m+(p?i:"")+r.addBraces(o,a,l)+h}}])}); +!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):"object"==typeof exports?exports.math=r():e.math=r()}(this,function(){return function(e){function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}var t={};return r.m=e,r.c=t,r.p="",r(0)}([function(e,r,t){e.exports=t(1)},function(e,r,t){"use strict";function n(e){if("function"!=typeof Object.create)throw new Error("ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.");var r={},a={matrix:"matrix",number:"number",precision:64,epsilon:1e-14};r.config=function(e){if(e){if(i.deepExtend(a,e),e.precision&&r.type.BigNumber.config({precision:e.precision}),t(4)(r,a),e.number&&e.number.defaultType)throw new Error("setting `number.defaultType` is deprecated. Use `number` instead.");if(e.number&&e.number.precision)throw new Error("setting `number.precision` is deprecated. Use `precision` instead.");if(e.matrix&&e.matrix.defaultType)throw new Error("setting `matrix.defaultType` is deprecated. Use `matrix` instead.");if(e.matrix&&e.matrix["default"])throw new Error("setting `matrix.default` is deprecated. Use `matrix` instead.");if(e.decimals)throw new Error("setting `decimals` is deprecated. Use `precision` instead.")}return i.clone(a)},r.create=n;var s=t(156).constructor();if("function"!=typeof s.prototype.clone&&(s.prototype.clone=function(){return this}),"function"==typeof s.convert)throw new Error("Cannot add function convert to BigNumber: function already exists");return s.convert=function(e){return o(e)>15?e:new s(e)},r.error=t(5),r.type={},r.type.Complex=t(6),r.type.Range=t(7),r.type.Index=t(8),r.type.Matrix=t(9),r.type.Unit=t(10),r.type.Help=t(11),r.type.ResultSet=t(12),r.type.BigNumber=s,r.collection=t(13),r.expression={},r.expression.node=t(14),r.expression.parse=t(15),r.expression.Parser=t(16),r.expression.docs=t(17),t(29)(r,a),t(30)(r,a),t(31)(r,a),t(32)(r,a),t(33)(r,a),t(34)(r,a),t(35)(r,a),t(36)(r,a),t(37)(r,a),t(38)(r,a),t(39)(r,a),t(40)(r,a),t(41)(r,a),t(42)(r,a),t(43)(r,a),t(44)(r,a),t(45)(r,a),t(46)(r,a),t(47)(r,a),t(48)(r,a),t(49)(r,a),t(50)(r,a),t(51)(r,a),t(52)(r,a),t(53)(r,a),t(54)(r,a),t(55)(r,a),t(56)(r,a),t(57)(r,a),t(58)(r,a),t(59)(r,a),t(60)(r,a),t(61)(r,a),t(62)(r,a),t(63)(r,a),t(64)(r,a),t(65)(r,a),t(66)(r,a),t(67)(r,a),t(68)(r,a),t(69)(r,a),t(70)(r,a),t(71)(r,a),t(72)(r,a),t(73)(r,a),t(74)(r,a),t(75)(r,a),t(76)(r,a),t(77)(r,a),t(78)(r,a),t(79)(r,a),t(80)(r,a),t(81)(r,a),t(82)(r,a),t(83)(r,a),t(84)(r,a),t(85)(r,a),t(86)(r,a),t(87)(r,a),t(88)(r,a),t(89)(r,a),t(90)(r,a),t(91)(r,a),t(92)(r,a),t(93)(r,a),t(94)(r,a),t(95)(r,a),t(96)(r,a),t(97)(r,a),t(98)(r,a),t(99)(r,a),t(100)(r,a),t(101)(r,a),t(102)(r,a),t(103)(r,a),t(104)(r,a),t(105)(r,a),t(106)(r,a),t(107)(r,a),t(108)(r,a),t(109)(r,a),t(110)(r,a),t(111)(r,a),t(112)(r,a),t(113)(r,a),t(114)(r,a),t(115)(r,a),t(116)(r,a),t(117)(r,a),t(118)(r,a),t(119)(r,a),t(120)(r,a),t(121)(r,a),t(122)(r,a),t(123)(r,a),t(124)(r,a),t(125)(r,a),t(126)(r,a),t(127)(r,a),t(128)(r,a),t(129)(r,a),t(130)(r,a),t(131)(r,a),t(132)(r,a),t(133)(r,a),t(134)(r,a),t(135)(r,a),t(136)(r,a),t(137)(r,a),t(138)(r,a),t(139)(r,a),t(140)(r,a),t(141)(r,a),t(142)(r,a),t(143)(r,a),t(144)(r,a),t(145)(r,a),t(146)(r,a),t(147)(r,a),t(148)(r,a),t(149)(r,a),t(150)(r,a),t(151)(r,a),t(152)(r,a),r.ifElse=function(){throw new Error("Function ifElse is deprecated. Use the conditional operator instead.")},t(4)(r,a),r.expression.transform={concat:t(18)(r,a),filter:t(19)(r,a),forEach:t(20)(r,a),index:t(21)(r,a),map:t(22)(r,a),max:t(23)(r,a),mean:t(24)(r,a),min:t(25)(r,a),range:t(26)(r,a),subset:t(27)(r,a)},r.chaining={},r.chaining.Chain=t(28)(r,a),r.chaining.Selector=r.chaining.Chain,r.config(a),r.config(e),r}var i=t(2),o=t(3).digits,a=n();"undefined"!=typeof window&&(window.mathjs=a),e.exports=a},function(e,r){"use strict";r.clone=function t(e){var r=typeof e;if("number"===r||"string"===r||"boolean"===r||null===e||void 0===e)return e;if("function"==typeof e.clone)return e.clone();if(Array.isArray(e))return e.map(function(e){return t(e)});if(e instanceof Number)return new Number(e.valueOf());if(e instanceof String)return new String(e.valueOf());if(e instanceof Boolean)return new Boolean(e.valueOf());if(e instanceof Date)return new Date(e.valueOf());if(e instanceof RegExp)throw new TypeError("Cannot clone "+e);var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=t(e[i]));return n},r.extend=function(e,r){for(var t in r)r.hasOwnProperty(t)&&(e[t]=r[t]);return e},r.deepExtend=function n(e,r){if(Array.isArray(r))throw new TypeError("Arrays are not supported by deepExtend");for(var t in r)if(r.hasOwnProperty(t))if(r[t]&&r[t].constructor===Object)void 0===e[t]&&(e[t]={}),e[t].constructor===Object?n(e[t],r[t]):e[t]=r[t];else{if(Array.isArray(r[t]))throw new TypeError("Arrays are not supported by deepExtend");e[t]=r[t]}return e},r.deepEqual=function(e,t){var n,i,o;if(Array.isArray(e)){if(!Array.isArray(t))return!1;if(e.length!=t.length)return!1;for(i=0,o=e.length;o>i;i++)if(!r.deepEqual(e[i],t[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(t)||!(t instanceof Object))return!1;for(n in e)if(!r.deepEqual(e[n],t[n]))return!1;for(n in t)if(!r.deepEqual(e[n],t[n]))return!1;return!0}return typeof e==typeof t&&e==t},r.canDefineProperty=function(){try{if(Object.defineProperty)return Object.defineProperty({},"x",{}),!0}catch(e){}return!1},r.lazy=function(e,t,n){if(r.canDefineProperty()){var i,o=!0;Object.defineProperty(e,t,{get:function(){return o&&(i=n(),o=!1),i},set:function(e){i=e,o=!1}})}else e[t]=n()}},function(e,r){"use strict";r.isNumber=function(e){return e instanceof Number||"number"==typeof e},r.isInteger=function(e){return e==Math.round(e)},r.sign=function(e){return e>0?1:0>e?-1:0},r.format=function(e,t){if("function"==typeof t)return t(e);if(1/0===e)return"Infinity";if(e===-1/0)return"-Infinity";if(isNaN(e))return"NaN";var n="auto",i=void 0;switch(t&&(t.notation&&(n=t.notation),r.isNumber(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;if(t&&t.exponential&&(void 0!==t.exponential.lower&&(o=t.exponential.lower),void 0!==t.exponential.upper&&(a=t.exponential.upper)),0===e)return"0";var s,u=Math.abs(e);if(u>=o&&a>u){var f=i?e.toPrecision(Math.min(i,21)):e.toPrecision();s=parseFloat(f)+""}else s=r.toExponential(e,i);return s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(Math.min(r-1,20)):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(Math.min(r,20))},r.digits=function(e){return e.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length},r.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,r.nearlyEqual=function(e,t,n){if(null==n)return e==t;if(e==t)return!0;if(isNaN(e)||isNaN(t))return!1;if(isFinite(e)&&isFinite(t)){var i=Math.abs(e-t);return i="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){y++,v=w.charAt(y)}function u(e){y=e,v=w.charAt(y)}function f(){var e,r="";if(e=y,"+"==v?s():"-"==v&&(r+=v,s()),!o(v))return u(e),null;if("."==v){if(r+=v,s(),!a(v))return u(e),null}else{for(;a(v);)r+=v,s();"."==v&&(r+=v,s())}for(;a(v);)r+=v,s();if("E"==v||"e"==v){if(r+=v,s(),("+"==v||"-"==v)&&(r+=v,s()),!a(v))return u(e),null;for(;a(v);)r+=v,s()}return r}function c(){var e=w.charAt(y+1);if("I"==v||"i"==v)return s(),"1";if(!("+"!=v&&"-"!=v||"I"!=e&&"i"!=e)){var r="+"==v?"1":"-1";return s(),s(),r}return null}var l=t(161),p=t(10),m=l.number,h=l.number.isNumber,g=p.isUnit,d=l.string.isString;n.isComplex=function(e){return e instanceof n};var w,y,v;n.parse=function(e){if(w=e,y=-1,v="",!d(w))return null;s(),i();var r=f();if(r){if("I"==v||"i"==v)return s(),i(),v?null:new n(0,Number(r));i();var t=v;if("+"!=t&&"-"!=t)return i(),v?null:new n(Number(r),0);s(),i();var o=f();if(o){if("I"!=v&&"i"!=v)return null;s()}else if(o=c(),!o)return null;return"-"==t&&(o="-"==o[0]?"+"+o.substring(1):"-"+o),s(),i(),v?null:new n(Number(r),Number(o))}return(r=c())?(i(),v?null:new n(0,Number(r))):null},n.fromPolar=function(){switch(arguments.length){case 1:var e=arguments[0];if("object"==typeof e)return n.fromPolar(e.r,e.phi);throw new TypeError("Input has to be an object with r and phi keys.");case 2:var r=arguments[0],t=arguments[1];if(h(r)){if(g(t)&&t.hasBase(p.BASE_UNITS.ANGLE)&&(t=t.toNumber("rad")),h(t))return new n(r*Math.cos(t),r*Math.sin(t));throw new TypeError("Phi is not a number nor an angle unit.")}throw new TypeError("Radius r is not a number.");default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}},n.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},n.prototype.clone=function(){return new n(this.re,this.im)},n.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},n.prototype.format=function(e){var r="",t=m.format(this.re,e),n=m.format(this.im,e);return r=0==this.im?t:0==this.re?1==this.im?"i":-1==this.im?"-i":n+"i":this.im>0?1==this.im?t+" + i":t+" + "+n+"i":-1==this.im?t+" - i":t+" - "+n.substring(1)+"i"},n.prototype.toString=function(){return this.format()},n.prototype.valueOf=n.prototype.toString,e.exports=n},function(e,r,t){"use strict";function n(e,r,t){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(null!=e&&!o.isNumber(e))throw new TypeError("Parameter start must be a number");if(null!=r&&!o.isNumber(r))throw new TypeError("Parameter end must be a number");if(null!=t&&!o.isNumber(t))throw new TypeError("Parameter step must be a number");this.start=null!=e?parseFloat(e):0,this.end=null!=r?parseFloat(r):0,this.step=null!=t?parseFloat(t):1}{var i=t(161),o=i.number,a=i.string;i.array}n.parse=function(e){if(!a.isString(e))return null;var r=e.split(":"),t=r.map(function(e){return parseFloat(e)}),i=t.some(function(e){return isNaN(e)});if(i)return null;switch(t.length){case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[2],t[1]);default:return null}},n.prototype.clone=function(){return new n(this.start,this.end,this.step)},n.isRange=function(e){return e instanceof n},n.prototype.size=function(){var e=0,r=this.start,t=this.step,n=this.end,i=n-r;return o.sign(t)==o.sign(i)?e=Math.ceil(i/t):0==i&&(e=0),isNaN(e)&&(e=0),[e]},n.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},n.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},n.prototype.forEach=function(e){var r=this.start,t=this.step,n=this.end,i=0;if(t>0)for(;n>r;)e(r,i,this),r+=t,i++;else if(0>t)for(;r>n;)e(r,i,this),r+=t,i++},n.prototype.map=function(e){var r=[];return this.forEach(function(t,n,i){r[n]=e(t,n,i)}),r},n.prototype.toArray=function(){var e=[];return this.forEach(function(r,t){e[t]=r}),e},n.prototype.valueOf=function(){return this.toArray()},n.prototype.format=function(e){var r=o.format(this.start,e);return 1!=this.step&&(r+=":"+o.format(this.step,e)),r+=":"+o.format(this.end,e)},n.prototype.toString=function(){return this.format()},e.exports=n},function(e,r,t){"use strict";function n(){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this._ranges=[],this._isScalar=!0;for(var e=0,r=arguments.length;r>e;e++){var t=arguments[e];if(t instanceof a)this._ranges.push(t),this._isScalar=!1;else if(c(t))this._ranges.push(i(t)),this._isScalar=!1;else if(u(t))this._ranges.push(i([t,t+1]));else{var o=t.valueOf();if(!c(o))throw new TypeError("Ranges must be an Array, Number, or Range");this._ranges.push(i(o)),this._isScalar=!1}}}function i(e){for(var r=e.length,t=0;r>t;t++)if(!u(e[t])||!f(e[t]))throw new TypeError("Index parameters must be integer numbers");switch(e.length){case 2:return new a(e[0],e[1]);case 3:return new a(e[0],e[1],e[2]);default:throw new SyntaxError("Wrong number of arguments in Index (2 or 3 expected)")}}var o=t(161),a=t(7),s=o.number,u=s.isNumber,f=s.isInteger,c=Array.isArray;n.prototype.clone=function(){var e=new n;return e._ranges=o.object.clone(this._ranges),e._isScalar=this._isScalar,e},n.isIndex=function(e){return e instanceof n},n.create=function(e){var r=new n;return n.apply(r,e),r},n.prototype.size=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.size()[0]}return e},n.prototype.max=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.max()}return e},n.prototype.min=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r];e[r]=n.min()}return e},n.prototype.forEach=function(e){for(var r=0,t=this._ranges.length;t>r;r++)e(this._ranges[r],r,this)},n.prototype.range=function(e){return this._ranges[e]||null},n.prototype.isScalar=function(){return this._isScalar},n.prototype.toArray=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=[],o=n.start,a=n.end,s=n.step;if(s>0)for(;a>o;)i.push(o),o+=s;else if(0>s)for(;o>a;)i.push(o),o+=s;e.push(i)}return e},n.prototype.valueOf=n.prototype.toArray,n.prototype.toString=function(){for(var e=[],r=0,t=this._ranges.length;t>r;r++){var n=this._ranges[r],i=s.format(n.start);1!=n.step&&(i+=":"+s.format(n.step)),i+=":"+s.format(n.end),e.push(i)}return"["+e.join(", ")+"]"},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(e instanceof n)this._data=e.clone()._data;else if(d(e))this._data=f(e);else{if(null!=e)throw new TypeError("Unsupported type of data ("+c.types.type(e)+")");this._data=[]}this._size=h.size(this._data)}function i(e,r){if(!(r instanceof p))throw new TypeError("Invalid index");var t=r.isScalar();if(t)return e.get(r.min());var i=r.size();if(i.length!=e._size.length)throw new l(i.length,e._size.length);for(var a=r.min(),s=r.max(),u=0,f=e._size.length;f>u;u++)w(a[u],e._size[u]),w(s[u],e._size[u]);return new n(o(e._data,r,i.length,0))}function o(e,r,t,n){var i=n==t-1,a=r.range(n);return a.map(i?function(r){return e[r]}:function(i){var a=e[i];return o(a,r,t,n+1)})}function a(e,r,t,i){if(!(r instanceof p))throw new TypeError("Invalid index");var o,a=r.size(),f=r.isScalar();if(t instanceof n?(o=t.size(),t=t.valueOf()):o=h.size(t),f){if(0!=o.length)throw new TypeError("Scalar expected");e.set(r.min(),t,i)}else{if(a.length");var d=r.max().map(function(e){return e+1});u(e,d,i);var w=a.length,y=0;s(e._data,r,t,w,y)}return e}function s(e,r,t,n,i){var o=i==n-1,a=r.range(i);a.forEach(o?function(r,n){w(r),e[r]=t[n]}:function(o,a){w(o),s(e[o],r,t[a],n,i+1)})}function u(e,r,t){for(var n=g.clone(e._size),i=!1;n.lengtho;o++)r[o]>n[o]&&(n[o]=r[o],i=!0);i&&e.resize(n,t)}function f(e){for(var r=0,t=e.length;t>r;r++){var i=e[r];d(i)?e[r]=f(i):i instanceof n&&(e[r]=f(i._data))}return e}var c=t(161),l=t(158),p=t(8),m=(c.number,c.string),h=c.array,g=c.object,d=Array.isArray,w=h.validateIndex;n.isMatrix=function(e){return e instanceof n},n.prototype.subset=function(e,r,t){switch(arguments.length){case 1:return i(this,e);case 2:case 3:return a(this,e,r,t);default:throw new SyntaxError("Wrong number of arguments")}},n.prototype.get=function(e){if(!d(e))throw new TypeError("Array expected");if(e.length!=this._size.length)throw new l(e.length,this._size.length);for(var r=this._data,t=0,n=e.length;n>t;t++){var i=e[t];w(i,r.length),r=r[i]}return g.clone(r)},n.prototype.set=function(e,r,t){var n,i;if(!d(e))throw new Error("Array expected");if(e.lengthn;n++){var s=e[n];w(s,a.length),a=a[s]}return s=e[e.length-1],w(s,a.length),a[s]=r,this},n.prototype.resize=function(e,r){return this._size=g.clone(e),this._data=h.resize(this._data,this._size,r),this},n.prototype.clone=function(){var e=new n;return e._data=g.clone(this._data),e._size=g.clone(this._size),e},n.prototype.size=function(){return this._size},n.prototype.map=function(e){var r=this,t=new n,i=function(t,n){return d(t)?t.map(function(e,r){return i(e,n.concat(r))}):e(t,n,r)};return t._data=i(this._data,[]),t._size=g.clone(this._size),t},n.prototype.forEach=function(e){var r=this,t=function(n,i){d(n)?n.forEach(function(e,r){t(e,i.concat(r))}):e(n,i,r)};t(this._data,[])},n.prototype.toArray=function(){return g.clone(this._data)},n.prototype.valueOf=function(){return this._data},n.prototype.format=function(e){return m.format(this._data,e)},n.prototype.toString=function(){return m.format(this._data)},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new Error("Constructor must be called with the new operator");if(void 0!=e&&!y(e))throw new TypeError("First parameter in Unit constructor must be a number");if(void 0!=r&&(!v(r)||""==r))throw new TypeError("Second parameter in Unit constructor must be a string");if(void 0!=r){var t=l(r);if(!t)throw new SyntaxError('Unknown unit "'+r+'"');this.unit=t.unit,this.prefix=t.prefix}else this.unit=A,this.prefix=b;this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1}function i(){for(;" "==h||" "==h;)s()}function o(e){return e>="0"&&"9">=e||"."==e}function a(e){return e>="0"&&"9">=e}function s(){m++,h=p.charAt(m)}function u(e){m=e,h=p.charAt(m)}function f(){var e,r="";if(e=m,"+"==h?s():"-"==h&&(r+=h,s()),!o(h))return u(e),null;if("."==h){if(r+=h,s(),!a(h))return u(e),null}else{for(;a(h);)r+=h,s();"."==h&&(r+=h,s())}for(;a(h);)r+=h,s();if("E"==h||"e"==h){if(r+=h,s(),("+"==h||"-"==h)&&(r+=h,s()),!a(h))return u(e),null;for(;a(h);)r+=h,s()}return r}function c(){var e="";for(i();h&&" "!=h&&" "!=h;)e+=h,s();return e||null}function l(e){for(var r in M)if(M.hasOwnProperty(r)&&w.endsWith(e,r)){var t=M[r],n=e.length-r.length,i=e.substring(0,n),o=t.prefixes[i];if(void 0!==o)return{unit:t,prefix:o}}return null}var p,m,h,g=t(161),d=g.number,w=g.string,y=g.number.isNumber,v=g.string.isString;n.parse=function(e){if(p=e,m=-1,h="",!v(p))return null;s(),i();var r,t=f();if(t){if(r=c(),s(),i(),h)return null;if(t&&r)try{return new n(Number(t),r)}catch(o){}}else{if(r=c(),s(),i(),h)return null;if(r)try{return new n(null,r)}catch(o){}}return null},n.isUnit=function(e){return e instanceof n},n.prototype.clone=function(){var e=new n;for(var r in this)this.hasOwnProperty(r)&&(e[r]=this[r]);return e},n.prototype._normalize=function(e){return(e+this.unit.offset)*this.unit.value*this.prefix.value},n.prototype._unnormalize=function(e,r){return void 0==r?e/this.unit.value/this.prefix.value-this.unit.offset:e/this.unit.value/r-this.unit.offset},n.isValuelessUnit=function(e){return null!=l(e)},n.prototype.hasBase=function(e){return this.unit.base===e},n.prototype.equalBase=function(e){return this.unit.base===e.unit.base},n.prototype.equals=function(e){return this.equalBase(e)&&this.value==e.value},n.prototype.to=function(e){var r,t=null==this.value?this._normalize(1):this.value;if(v(e)){if(r=new n(null,e),!this.equalBase(r))throw new Error("Units do not match");return r.value=t,r.fixPrefix=!0,r}if(e instanceof n){if(!this.equalBase(e))throw new Error("Units do not match");if(null!==e.value)throw new Error("Cannot convert to a unit with a value");return r=e.clone(),r.value=t,r.fixPrefix=!0,r}throw new Error("String or Unit expected as parameter")},n.prototype.toNumber=function(e){var r=this.to(e);return r._unnormalize(r.value,r.prefix.value)},n.prototype.toString=function(){return this.format()},n.prototype.valueOf=n.prototype.toString,n.prototype.format=function(e){var r,t;if(null===this.value||this.fixPrefix)r=this._unnormalize(this.value),t=null!==this.value?d.format(r,e)+" ":"",t+=this.prefix.name+this.unit.name;else{var n=this._bestPrefix();r=this._unnormalize(this.value,n.value),t=d.format(r,e)+" ",t+=n.name+this.unit.name}return t},n.prototype._bestPrefix=function(){var e=Math.abs(this.value/this.unit.value),r=b,t=Math.abs(Math.log(e/r.value)/Math.LN10-1.2),n=this.unit.prefixes;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];if(o.scientific){var a=Math.abs(Math.log(e/o.value)/Math.LN10-1.2);t>a&&(r=o,t=a)}}return r};var x={NONE:{"":{name:"",value:1,scientific:!0}},SHORT:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:10,scientific:!1},h:{name:"h",value:100,scientific:!1},k:{name:"k",value:1e3,scientific:!0},M:{name:"M",value:1e6,scientific:!0},G:{name:"G",value:1e9,scientific:!0},T:{name:"T",value:1e12,scientific:!0},P:{name:"P",value:1e15,scientific:!0},E:{name:"E",value:1e18,scientific:!0},Z:{name:"Z",value:1e21,scientific:!0},Y:{name:"Y",value:1e24,scientific:!0},d:{name:"d",value:.1,scientific:!1},c:{name:"c",value:.01,scientific:!1},m:{name:"m",value:.001,scientific:!0},u:{name:"u",value:1e-6,scientific:!0},n:{name:"n",value:1e-9,scientific:!0},p:{name:"p",value:1e-12,scientific:!0},f:{name:"f",value:1e-15,scientific:!0},a:{name:"a",value:1e-18,scientific:!0},z:{name:"z",value:1e-21,scientific:!0},y:{name:"y",value:1e-24,scientific:!0}},LONG:{"":{name:"",value:1,scientific:!0},deca:{name:"deca",value:10,scientific:!1},hecto:{name:"hecto",value:100,scientific:!1},kilo:{name:"kilo",value:1e3,scientific:!0},mega:{name:"mega",value:1e6,scientific:!0},giga:{name:"giga",value:1e9,scientific:!0},tera:{name:"tera",value:1e12,scientific:!0},peta:{name:"peta",value:1e15,scientific:!0},exa:{name:"exa",value:1e18,scientific:!0},zetta:{name:"zetta",value:1e21,scientific:!0},yotta:{name:"yotta",value:1e24,scientific:!0},deci:{name:"deci",value:.1,scientific:!1},centi:{name:"centi",value:.01,scientific:!1},milli:{name:"milli",value:.001,scientific:!0},micro:{name:"micro",value:1e-6,scientific:!0},nano:{name:"nano",value:1e-9,scientific:!0},pico:{name:"pico",value:1e-12,scientific:!0},femto:{name:"femto",value:1e-15,scientific:!0},atto:{name:"atto",value:1e-18,scientific:!0},zepto:{name:"zepto",value:1e-21,scientific:!0},yocto:{name:"yocto",value:1e-24,scientific:!0}},SQUARED:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:100,scientific:!1},h:{name:"h",value:1e4,scientific:!1},k:{name:"k",value:1e6,scientific:!0},M:{name:"M",value:1e12,scientific:!0},G:{name:"G",value:1e18,scientific:!0},T:{name:"T",value:1e24,scientific:!0},P:{name:"P",value:1e30,scientific:!0},E:{name:"E",value:1e36,scientific:!0},Z:{name:"Z",value:1e42,scientific:!0},Y:{name:"Y",value:1e48,scientific:!0},d:{name:"d",value:.01,scientific:!1},c:{name:"c",value:1e-4,scientific:!1},m:{name:"m",value:1e-6,scientific:!0},u:{name:"u",value:1e-12,scientific:!0},n:{name:"n",value:1e-18,scientific:!0},p:{name:"p",value:1e-24,scientific:!0},f:{name:"f",value:1e-30,scientific:!0},a:{name:"a",value:1e-36,scientific:!0},z:{name:"z",value:1e-42,scientific:!0},y:{name:"y",value:1e-42,scientific:!0}},CUBIC:{"":{name:"",value:1,scientific:!0},da:{name:"da",value:1e3,scientific:!1},h:{name:"h",value:1e6,scientific:!1},k:{name:"k",value:1e9,scientific:!0},M:{name:"M",value:1e18,scientific:!0},G:{name:"G",value:1e27,scientific:!0},T:{name:"T",value:1e36,scientific:!0},P:{name:"P",value:1e45,scientific:!0},E:{name:"E",value:1e54,scientific:!0},Z:{name:"Z",value:1e63,scientific:!0},Y:{name:"Y",value:1e72,scientific:!0},d:{name:"d",value:.001,scientific:!1},c:{name:"c",value:1e-6,scientific:!1},m:{name:"m",value:1e-9,scientific:!0},u:{name:"u",value:1e-18,scientific:!0},n:{name:"n",value:1e-27,scientific:!0},p:{name:"p",value:1e-36,scientific:!0},f:{name:"f",value:1e-45,scientific:!0},a:{name:"a",value:1e-54,scientific:!0},z:{name:"z",value:1e-63,scientific:!0},y:{name:"y",value:1e-72,scientific:!0}},BINARY_SHORT:{"":{name:"",value:1,scientific:!0},k:{name:"k",value:1024,scientific:!0},M:{name:"M",value:Math.pow(1024,2),scientific:!0},G:{name:"G",value:Math.pow(1024,3),scientific:!0},T:{name:"T",value:Math.pow(1024,4),scientific:!0},P:{name:"P",value:Math.pow(1024,5),scientific:!0},E:{name:"E",value:Math.pow(1024,6),scientific:!0},Z:{name:"Z",value:Math.pow(1024,7),scientific:!0},Y:{name:"Y",value:Math.pow(1024,8),scientific:!0},Ki:{name:"Ki",value:1024,scientific:!0},Mi:{name:"Mi",value:Math.pow(1024,2),scientific:!0},Gi:{name:"Gi",value:Math.pow(1024,3),scientific:!0},Ti:{name:"Ti",value:Math.pow(1024,4),scientific:!0},Pi:{name:"Pi",value:Math.pow(1024,5),scientific:!0},Ei:{name:"Ei",value:Math.pow(1024,6),scientific:!0},Zi:{name:"Zi",value:Math.pow(1024,7),scientific:!0},Yi:{name:"Yi",value:Math.pow(1024,8),scientific:!0}},BINARY_LONG:{"":{name:"",value:1,scientific:!0},kilo:{name:"kilo",value:1024,scientific:!0},mega:{name:"mega",value:Math.pow(1024,2),scientific:!0},giga:{name:"giga",value:Math.pow(1024,3),scientific:!0},tera:{name:"tera",value:Math.pow(1024,4),scientific:!0},peta:{name:"peta",value:Math.pow(1024,5),scientific:!0},exa:{name:"exa",value:Math.pow(1024,6),scientific:!0},zetta:{name:"zetta",value:Math.pow(1024,7),scientific:!0},yotta:{name:"yotta",value:Math.pow(1024,8),scientific:!0},kibi:{name:"kibi",value:1024,scientific:!0},mebi:{name:"mebi",value:Math.pow(1024,2),scientific:!0},gibi:{name:"gibi",value:Math.pow(1024,3),scientific:!0},tebi:{name:"tebi",value:Math.pow(1024,4),scientific:!0},pebi:{name:"pebi",value:Math.pow(1024,5),scientific:!0},exi:{name:"exi",value:Math.pow(1024,6),scientific:!0},zebi:{name:"zebi",value:Math.pow(1024,7),scientific:!0},yobi:{name:"yobi",value:Math.pow(1024,8),scientific:!0}}},b={name:"",value:1,scientific:!0},E={NONE:{},LENGTH:{},MASS:{},TIME:{},CURRENT:{},TEMPERATURE:{},LUMINOUS_INTENSITY:{},AMOUNT_OF_SUBSTANCE:{},FORCE:{},SURFACE:{},VOLUME:{},ANGLE:{},BIT:{}},N={},A={name:"",base:N,value:1,offset:0},M={meter:{name:"meter",base:E.LENGTH,prefixes:x.LONG,value:1,offset:0},inch:{name:"inch",base:E.LENGTH,prefixes:x.NONE,value:.0254,offset:0},foot:{name:"foot",base:E.LENGTH,prefixes:x.NONE,value:.3048,offset:0},yard:{name:"yard",base:E.LENGTH,prefixes:x.NONE,value:.9144,offset:0},mile:{name:"mile",base:E.LENGTH,prefixes:x.NONE,value:1609.344,offset:0},link:{name:"link",base:E.LENGTH,prefixes:x.NONE,value:.201168,offset:0},rod:{name:"rod",base:E.LENGTH,prefixes:x.NONE,value:5.02921,offset:0},chain:{name:"chain",base:E.LENGTH,prefixes:x.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:E.LENGTH,prefixes:x.NONE,value:1e-10,offset:0},m:{name:"m",base:E.LENGTH,prefixes:x.SHORT,value:1,offset:0},"in":{name:"in",base:E.LENGTH,prefixes:x.NONE,value:.0254,offset:0},ft:{name:"ft",base:E.LENGTH,prefixes:x.NONE,value:.3048,offset:0},yd:{name:"yd",base:E.LENGTH,prefixes:x.NONE,value:.9144,offset:0},mi:{name:"mi",base:E.LENGTH,prefixes:x.NONE,value:1609.344,offset:0},li:{name:"li",base:E.LENGTH,prefixes:x.NONE,value:.201168,offset:0},rd:{name:"rd",base:E.LENGTH,prefixes:x.NONE,value:5.02921,offset:0},ch:{name:"ch",base:E.LENGTH,prefixes:x.NONE,value:20.1168,offset:0},mil:{name:"mil",base:E.LENGTH,prefixes:x.NONE,value:254e-7,offset:0},m2:{name:"m2",base:E.SURFACE,prefixes:x.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:E.SURFACE,prefixes:x.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:E.SURFACE,prefixes:x.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:E.SURFACE,prefixes:x.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:E.SURFACE,prefixes:x.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:E.SURFACE,prefixes:x.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:E.SURFACE,prefixes:x.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:E.SURFACE,prefixes:x.NONE,value:6.4516e-10,offset:0},m3:{name:"m3",base:E.VOLUME,prefixes:x.CUBIC,value:1,offset:0},L:{name:"L",base:E.VOLUME,prefixes:x.SHORT,value:.001,offset:0},l:{name:"l",base:E.VOLUME,prefixes:x.SHORT,value:.001,offset:0},litre:{name:"litre",base:E.VOLUME,prefixes:x.LONG,value:.001,offset:0},cuin:{name:"cuin",base:E.VOLUME,prefixes:x.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:E.VOLUME,prefixes:x.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:E.VOLUME,prefixes:x.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:E.VOLUME,prefixes:x.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:E.VOLUME,prefixes:x.NONE,value:15e-6,offset:0},drop:{name:"drop",base:E.VOLUME,prefixes:x.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:E.VOLUME,prefixes:x.NONE,value:5e-8,offset:0},minim:{name:"minim",base:E.VOLUME,prefixes:x.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:E.VOLUME,prefixes:x.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:E.VOLUME,prefixes:x.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:E.VOLUME,prefixes:x.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:E.VOLUME,prefixes:x.NONE,value:1e-6,offset:0},cup:{name:"cup",base:E.VOLUME,prefixes:x.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:E.VOLUME,prefixes:x.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:E.VOLUME,prefixes:x.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:E.VOLUME,prefixes:x.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:E.VOLUME,prefixes:x.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:E.VOLUME,prefixes:x.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:E.VOLUME,prefixes:x.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:E.VOLUME,prefixes:x.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:E.VOLUME,prefixes:x.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:E.VOLUME,prefixes:x.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:E.VOLUME,prefixes:x.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:E.VOLUME,prefixes:x.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:E.VOLUME,prefixes:x.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:E.VOLUME,prefixes:x.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:E.VOLUME,prefixes:x.NONE,value:.1173478,offset:0},obl:{name:"obl",base:E.VOLUME,prefixes:x.NONE,value:.1589873,offset:0},g:{name:"g",base:E.MASS,prefixes:x.SHORT,value:.001,offset:0},gram:{name:"gram",base:E.MASS,prefixes:x.LONG,value:.001,offset:0},ton:{name:"ton",base:E.MASS,prefixes:x.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:E.MASS,prefixes:x.SHORT,value:1e3,offset:0},grain:{name:"grain",base:E.MASS,prefixes:x.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:E.MASS,prefixes:x.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:E.MASS,prefixes:x.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:E.MASS,prefixes:x.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:E.MASS,prefixes:x.NONE,value:45.359237,offset:0},stick:{name:"stick",base:E.MASS,prefixes:x.NONE,value:.115,offset:0},gr:{name:"gr",base:E.MASS,prefixes:x.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:E.MASS,prefixes:x.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:E.MASS,prefixes:x.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:E.MASS,prefixes:x.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:E.MASS,prefixes:x.NONE,value:45.359237,offset:0},s:{name:"s",base:E.TIME,prefixes:x.SHORT,value:1,offset:0},min:{name:"min",base:E.TIME,prefixes:x.NONE,value:60,offset:0},h:{name:"h",base:E.TIME,prefixes:x.NONE,value:3600,offset:0},second:{name:"second",base:E.TIME,prefixes:x.LONG,value:1,offset:0},sec:{name:"sec",base:E.TIME,prefixes:x.LONG,value:1,offset:0},minute:{name:"minute",base:E.TIME,prefixes:x.NONE,value:60,offset:0},hour:{name:"hour",base:E.TIME,prefixes:x.NONE,value:3600,offset:0},day:{name:"day",base:E.TIME,prefixes:x.NONE,value:86400,offset:0},rad:{name:"rad",base:E.ANGLE,prefixes:x.NONE,value:1,offset:0},deg:{name:"deg",base:E.ANGLE,prefixes:x.NONE,value:.017453292519943295,offset:0},grad:{name:"grad",base:E.ANGLE,prefixes:x.NONE,value:.015707963267948967,offset:0},cycle:{name:"cycle",base:E.ANGLE,prefixes:x.NONE,value:6.283185307179586,offset:0},A:{name:"A",base:E.CURRENT,prefixes:x.SHORT,value:1,offset:0},ampere:{name:"ampere",base:E.CURRENT,prefixes:x.LONG,value:1,offset:0},K:{name:"K",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:0},degC:{name:"degC",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:273.15},degF:{name:"degF",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:0},celsius:{name:"celsius",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:E.AMOUNT_OF_SUBSTANCE,prefixes:x.NONE,value:1,offset:0},mole:{name:"mole",base:E.AMOUNT_OF_SUBSTANCE,prefixes:x.NONE,value:1,offset:0},cd:{name:"cd",base:E.LUMINOUS_INTENSITY,prefixes:x.NONE,value:1,offset:0},candela:{name:"candela",base:E.LUMINOUS_INTENSITY,prefixes:x.NONE,value:1,offset:0},N:{name:"N",base:E.FORCE,prefixes:x.SHORT,value:1,offset:0},newton:{name:"newton",base:E.FORCE,prefixes:x.LONG,value:1,offset:0},lbf:{name:"lbf",base:E.FORCE,prefixes:x.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:E.FORCE,prefixes:x.NONE,value:4.4482216152605,offset:0},b:{name:"b",base:E.BIT,prefixes:x.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:E.BIT,prefixes:x.BINARY_LONG,value:1,offset:0},B:{name:"B",base:E.BIT,prefixes:x.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:E.BIT,prefixes:x.BINARY_LONG,value:8,offset:0}},T={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",litres:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fluiddrams:"fluiddram",fluidounces:"fluidounce",gills:"gill",cups:"cup",pints:"pint",quarts:"quart",gallons:"gallon",beerbarrels:"beerbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",seconds:"second",minutes:"minute",hours:"hour",days:"day",radians:"rad",degrees:"deg",gradients:"grad",cycles:"cycle",amperes:"ampere",moles:"mole"}; +for(var S in T)if(T.hasOwnProperty(S)){var O=M[T[S]],C=Object.create(O);C.name=S,M[S]=C}M.lt=M.l,M.liter=M.litre,M.liters=M.litres,M.lb=M.lbm,M.lbs=M.lbm,n.PREFIXES=x,n.BASE_UNITS=E,n.UNITS=M,e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");this.math=e,this.doc=r}var i=t(161),o=i.object,a=i.string;n.isHelp=function(e){return e instanceof n},n.prototype.toString=function(){var e=this.doc||{},r="\n";if(e.name&&(r+="Name: "+e.name+"\n\n"),e.category&&(r+="Category: "+e.category+"\n\n"),e.description&&(r+="Description:\n "+e.description+"\n\n"),e.syntax&&(r+="Syntax:\n "+e.syntax.join("\n ")+"\n\n"),e.examples){var t=this.math.parser();r+="Examples:\n";for(var i=0;i=r){if(c(e[0])){for(u=i(e),a=[],o=0;ot;t++){var a=[];for(r=0;n>r;r++)a.push(e[r][t]);o.push(a)}return o}{var o=t(161),a=t(159),s=t(158),u=t(9),f=o.array,c=o.array.isArray;o.string.isString}r.argsToArray=function(e){if(0==e.length)return[];if(1==e.length){var r=e[0];return r instanceof u&&(r=r.valueOf()),c(r)||(r=[r]),r}return o.array.argsToArray(e)},r.isCollection=function(e){return c(e)||e instanceof u},r.deepMap=function l(e,r){return e&&"function"==typeof e.map?e.map(function(e){return l(e,r)}):r(e)},r.deepMap2=function p(e,r,t){var n,i,o;if(c(e))if(c(r)){if(e.length!=r.length)throw new s(e.length,r.length);for(n=[],i=e.length,o=0;i>o;o++)n[o]=p(e[o],r[o],t)}else{if(r instanceof u)return n=p(e,r.valueOf(),t),new u(n);for(n=[],i=e.length,o=0;i>o;o++)n[o]=p(e[o],r,t)}else{if(e instanceof u)return r instanceof u?(n=p(e.valueOf(),r.valueOf(),t),new u(n)):(n=p(e.valueOf(),r,t),new u(n));if(c(r))for(n=[],i=r.length,o=0;i>o;o++)n[o]=p(e,r[o],t);else{if(r instanceof u)return n=p(e,r.valueOf(),t),new u(n);n=t(e,r)}}return n},r.reduce=function(e,r,t){var i=c(e)?f.size(e):e.size();if(0>r)throw new a(r);if(r>=i.length)throw new a(r,i.length);return e instanceof u?new u(n(e.valueOf(),r,t)):n(e,r,t)},r.deepForEach=function m(e,r){e instanceof u&&(e=e.valueOf());for(var t=0,n=e.length;n>t;t++){var i=e[t];c(i)?m(i,r):r(i)}}},function(e,r,t){"use strict";r.ArrayNode=t(162),r.AssignmentNode=t(163),r.BlockNode=t(164),r.ConditionalNode=t(165),r.ConstantNode=t(166),r.IndexNode=t(167),r.FunctionAssignmentNode=t(168),r.FunctionNode=t(169),r.Node=t(170),r.OperatorNode=t(171),r.RangeNode=t(172),r.SymbolNode=t(173),r.UpdateNode=t(174)},function(e,r,t){"use strict";function n(e,r){if(1!=arguments.length&&2!=arguments.length)throw new X("parse",arguments.length,1,2);if(gr=r&&r.nodes?r.nodes:{},Q(e))return dr=e,g();if(K(e)||e instanceof $)return J.deepMap(e,function(e){if(!Q(e))throw new TypeError("String expected");return dr=e,g()});throw new TypeError("String or matrix expected")}function i(){wr=0,yr=dr.charAt(0),br=0,Er=null}function o(){wr++,yr=dr.charAt(wr)}function a(){return dr.charAt(wr+1)}function s(){return dr.charAt(wr+2)}function u(){for(xr=pr.NULL,vr="";" "==yr||" "==yr||"\n"==yr&&br;)o();if("#"==yr)for(;"\n"!=yr&&""!=yr;)o();if(""==yr)return void(xr=pr.DELIMITER);if("\n"==yr&&!br)return xr=pr.DELIMITER,vr=yr,void o();var e=yr+a(),r=e+s();if(3==r.length&&mr[r])return xr=pr.DELIMITER,vr=r,o(),o(),void o();if(2==e.length&&mr[e])return xr=pr.DELIMITER,vr=e,o(),void o();if(mr[yr])return xr=pr.DELIMITER,vr=yr,void o();if(!m(yr)){if(p(yr)){for(;p(yr)||h(yr);)vr+=yr,o();return void(xr=hr[vr]?pr.DELIMITER:pr.SYMBOL)}for(xr=pr.UNKNOWN;""!=yr;)vr+=yr,o();throw H('Syntax error in part "'+vr+'"')}if(xr=pr.NUMBER,"."==yr)vr+=yr,o(),h(yr)||(xr=pr.UNKNOWN);else{for(;h(yr);)vr+=yr,o();"."==yr&&(vr+=yr,o())}for(;h(yr);)vr+=yr,o();if(e=a(),("E"==yr||"e"==yr)&&(h(e)||"-"==e||"+"==e))for(vr+=yr,o(),("+"==yr||"-"==yr)&&(vr+=yr,o()),h(yr)||(xr=pr.UNKNOWN);h(yr);)vr+=yr,o()}function f(){do u();while("\n"==vr)}function c(){br++}function l(){br--}function p(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"==e}function m(e){return e>="0"&&"9">=e||"."==e}function h(e){return e>="0"&&"9">=e}function g(){i(),u();var e=d();if(""!=vr)throw xr==pr.DELIMITER?Y("Unexpected operator "+vr):H('Unexpected part "'+vr+'"');return e}function d(){var e,r,t=[];if(""==vr)return new ir("undefined","undefined");for("\n"!=vr&&";"!=vr&&(e=w());"\n"==vr||";"==vr;)0==t.length&&e&&(r=";"!=vr,t.push({node:e,visible:r})),u(),"\n"!=vr&&";"!=vr&&""!=vr&&(e=w(),r=";"!=vr,t.push({node:e,visible:r}));return t.length>0?new tr(t):e}function w(){if(xr==pr.SYMBOL&&"function"==vr)throw H('Deprecated keyword "function". Functions can now be assigned without it, like "f(x) = x^2".');return y()}function y(){var e,r,t,n,i=v();if("="==vr){if(i instanceof cr)return e=i.name,f(),t=y(),new rr(e,t);if(i instanceof ar)return f(),t=y(),new lr(i,t);if(i instanceof ur&&(n=!0,r=[],e=i.name,i.args.forEach(function(e,t){e instanceof cr?r[t]=e.name:n=!1}),n))return f(),t=y(),new or(e,r,t);throw H("Invalid left hand side of assignment operator =")}return i}function v(){for(var e=x();"?"==vr;){var r=Er;Er=br,f();var t=e,n=x();if(":"!=vr)throw H("False part of conditional expression expected");Er=null,f();var i=v();e=new nr(t,n,i),Er=r}return e}function x(){for(var e=b();"or"==vr;)f(),e=new sr("or","or",[e,b()]);return e}function b(){for(var e=E();"xor"==vr;)f(),e=new sr("xor","xor",[e,E()]);return e}function E(){for(var e=N();"and"==vr;)f(),e=new sr("and","and",[e,N()]);return e}function N(){for(var e=A();"|"==vr;)f(),e=new sr("|","bitOr",[e,A()]);return e}function A(){for(var e=M();"^|"==vr;)f(),e=new sr("^|","bitXor",[e,M()]);return e}function M(){for(var e=T();"&"==vr;)f(),e=new sr("&","bitAnd",[e,T()]);return e}function T(){var e,r,t,n,i;for(e=S(),r={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};vr in r;)t=vr,n=r[t],f(),i=[e,S()],e=new sr(t,n,i);return e}function S(){var e,r,t,n,i;for(e=O(),r={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};vr in r;)t=vr,n=r[t],f(),i=[e,O()],e=new sr(t,n,i);return e}function O(){var e,r,t,n,i;for(e=C(),r={to:"to","in":"to"};vr in r;)t=vr,n=r[t],f(),i=[e,C()],e=new sr(t,n,i);return e}function C(){var e,r=[];if(e=":"==vr?new ir("1","number"):q(),":"==vr&&Er!==br){for(r.push(e);":"==vr&&r.length<3;)f(),r.push(")"==vr||"]"==vr||","==vr||""==vr?new cr("end"):q());e=3==r.length?new fr(r[0],r[2],r[1]):new fr(r[0],r[1])}return e}function q(){var e,r,t,n,i;for(e=U(),r={"+":"add","-":"subtract"};vr in r;)t=vr,n=r[t],f(),i=[e,U()],e=new sr(t,n,i);return e}function U(){var e,r,t,n,i;if(e=B(),r={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"},vr in r)for(;vr in r;)t=vr,n=r[t],f(),i=[e,B()],e=new sr(t,n,i);return(xr==pr.SYMBOL||"in"==vr&&e instanceof ir||xr==pr.NUMBER&&!(e instanceof ir)||"("==vr||"["==vr)&&(e=new sr("*","multiply",[e,U()])),e}function B(){var e,r,t={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[vr];return t?(e=vr,f(),r=[B()],new sr(e,t,r)):z()}function z(){var e,r,t,n;return e=I(),("^"==vr||".^"==vr)&&(r=vr,t="^"==r?"pow":"dotPow",f(),n=[e,B()],e=new sr(r,t,n)),e}function I(){var e,r,t,n,i;for(e=_(),r={"!":"factorial","'":"transpose"};vr in r;)t=vr,n=r[t],u(),i=[e],e=new sr(t,n,i);return e}function _(){var e,r=[];if(xr==pr.SYMBOL&&gr[vr]){if(e=gr[vr],u(),"("==vr){if(r=[],c(),u(),")"!=vr)for(r.push(v());","==vr;)u(),r.push(v());if(")"!=vr)throw H("Parenthesis ) expected");l(),u()}return new e(r)}return R()}function R(){var e,r;return xr==pr.SYMBOL||xr==pr.DELIMITER&&vr in hr?(r=vr,u(),e=P(r),e=L(e)):F()}function P(e){var r;if("("==vr){if(r=[],c(),u(),")"!=vr)for(r.push(v());","==vr;)u(),r.push(v());if(")"!=vr)throw H("Parenthesis ) expected");return l(),u(),new ur(e,r)}return new cr(e)}function L(e){for(var r;"["==vr;){if(r=[],c(),u(),"]"!=vr)for(r.push(v());","==vr;)u(),r.push(v());if("]"!=vr)throw H("Parenthesis ] expected");l(),u(),e=new ar(e,r)}return e}function F(){var e,r,t;if('"'==vr){for(r="",t="";""!=yr&&('"'!=yr||"\\"==t);)r+=yr,t=yr,o();if(u(),'"'!=vr)throw H('End of string " expected');return u(),e=new ir(r,"string"),e=L(e)}return k()}function k(){var e,r,t,n;if("["==vr){if(c(),u(),"]"!=vr){var i=j();if(";"==vr){for(t=1,r=[i];";"==vr;)u(),r[t]=j(),t++;if("]"!=vr)throw H("End of matrix ] expected");l(),u(),n=r[0].nodes.length;for(var o=1;t>o;o++)if(r[o].nodes.length!=n)throw Y("Column dimensions mismatch ("+r[o].nodes.length+" != "+n+")");e=new er(r)}else{if("]"!=vr)throw H("End of matrix ] expected");l(),u(),e=i}}else l(),u(),e=new er([]);return e}return D()}function j(){for(var e=[y()],r=1;","==vr;)u(),e[r]=y(),r++;return new er(e)}function D(){var e;return xr==pr.NUMBER?(e=vr,u(),new ir(e,"number")):G()}function G(){var e;if("("==vr){if(c(),u(),e=y(),")"!=vr)throw H("Parenthesis ) expected");return l(),u(),e}return Z()}function Z(){throw H(""==vr?"Unexpected end of expression":"Value expected")}function V(){return wr-vr.length+1}function H(e){var r=V(),t=new SyntaxError(e+" (char "+r+")");return t["char"]=r,t}function Y(e){var r=V(),t=new Error(e+" (char "+r+")");return t["char"]=r,t}var W=t(161),X=t(157),Q=W.string.isString,K=Array.isArray,$=(W.types.type,t(6),t(9)),J=(t(10),t(13)),er=t(162),rr=t(163),tr=t(164),nr=t(165),ir=t(166),or=t(168),ar=t(167),sr=t(171),ur=t(169),fr=t(172),cr=t(173),lr=t(174),pr={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},mr={",":!0,"(":!0,")":!0,"[":!0,"]":!0,'"':!0,";":!0,"+":!0,"-":!0,"*":!0,".*":!0,"/":!0,"./":!0,"%":!0,"^":!0,".^":!0,"~":!0,"!":!0,"&":!0,"|":!0,"^|":!0,"'":!0,"=":!0,":":!0,"?":!0,"==":!0,"!=":!0,"<":!0,">":!0,"<=":!0,">=":!0,"<<":!0,">>":!0,">>>":!0},hr={mod:!0,to:!0,"in":!0,and:!0,xor:!0,or:!0,not:!0},gr={},dr="",wr=0,yr="",vr="",xr=pr.NULL,br=0,Er=null;e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof Object))throw new TypeError("Object expected as parameter math");this.math=e,this.scope={}}var i=t(15);n.prototype.parse=function(){throw new Error("Parser.parse is deprecated. Use math.parse instead.")},n.prototype.compile=function(){throw new Error("Parser.compile is deprecated. Use math.compile instead.")},n.prototype.eval=function(e){return i(e).compile(this.math).eval(this.scope)},n.prototype.get=function(e){return this.scope[e]},n.prototype.set=function(e,r){return this.scope[e]=r},n.prototype.remove=function(e){delete this.scope[e]},n.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},e.exports=n},function(e,r,t){r.e=t(175),r.E=t(175),r["false"]=t(176),r.i=t(177),r.Infinity=t(178),r.LN2=t(179),r.LN10=t(180),r.LOG2E=t(181),r.LOG10E=t(182),r.NaN=t(183),r["null"]=t(184),r.pi=t(185),r.PI=t(185),r.phi=t(186),r.SQRT1_2=t(187),r.SQRT2=t(188),r.tau=t(189),r["true"]=t(190),r.version=t(191),r.abs=t(196),r.add=t(197),r.ceil=t(198),r.cube=t(199),r.divide=t(200),r.dotDivide=t(201),r.dotMultiply=t(202),r.dotPow=t(203),r.exp=t(204),r.fix=t(205),r.floor=t(206),r.gcd=t(207),r.lcm=t(208),r.log=t(209),r.log10=t(210),r.mod=t(211),r.multiply=t(212),r.norm=t(213),r.nthRoot=t(214),r.pow=t(215),r.round=t(216),r.sign=t(217),r.sqrt=t(218),r.square=t(219),r.subtract=t(220),r.unaryMinus=t(221),r.unaryPlus=t(222),r.xgcd=t(223),r.bitAnd=t(224),r.bitNot=t(225),r.bitOr=t(226),r.bitXor=t(227),r.leftShift=t(228),r.rightArithShift=t(229),r.rightLogShift=t(230),r.arg=t(231),r.conj=t(232),r.re=t(233),r.im=t(234),r.bignumber=t(235),r["boolean"]=t(236),r.complex=t(237),r.index=t(238),r.matrix=t(239),r.number=t(240),r.string=t(241),r.unit=t(242),r.eval=t(243),r.help=t(244),r.and=t(245),r.not=t(246),r.or=t(247),r.xor=t(248),r.concat=t(249),r.cross=t(250),r.det=t(251),r.diag=t(252),r.dot=t(253),r.eye=t(254),r.flatten=t(255),r.inv=t(256),r.ones=t(257),r.range=t(258),r.resize=t(259),r.size=t(260),r.squeeze=t(261),r.subset=t(262),r.trace=t(263),r.transpose=t(264),r.zeros=t(265),r.combinations=t(266),r.factorial=t(267),r.gamma=t(268),r.permutations=t(269),r.pickRandom=t(270),r.random=t(271),r.randomInt=t(272),r.compare=t(273),r.deepEqual=t(274),r.equal=t(275),r.larger=t(276),r.largerEq=t(277),r.smaller=t(278),r.smallerEq=t(279),r.unequal=t(280),r.max=t(281),r.mean=t(282),r.median=t(283),r.min=t(284),r.prod=t(285),r.std=t(286),r.sum=t(287),r["var"]=t(288),r.acos=t(289),r.asin=t(290),r.atan=t(291),r.atan2=t(292),r.cos=t(293),r.cosh=t(294),r.cot=t(295),r.coth=t(296),r.csc=t(297),r.csch=t(298),r.sec=t(299),r.sech=t(300),r.sin=t(301),r.sinh=t(302),r.tan=t(303),r.tanh=t(304),r.to=t(305),r.clone=t(306),r.map=t(307),r.filter=t(308),r.forEach=t(309),r.format=t(310),r["import"]=t(311),r.sort=t(312),r["typeof"]=t(313)},function(e,r,t){"use strict";var n=t(156),i=t(193).transform,o=t(3).isNumber,a=t(154).argsToArray;e.exports=function(e){var r=function(){var r=a(arguments),t=r.length-1,s=r[t];o(s)?r[t]=s-1:s instanceof n&&(r[t]=s.minus(1));try{return e.concat.apply(e,r)}catch(u){throw i(u)}};return e.concat.transform=r,r}},function(e,r,t){"use strict";var n=t(173),i=(t(194).isBoolean,t(154).argsToArray,t(157));e.exports=function(e){var r=e.filter,t=function(e,t,o){if(2!==e.length)throw new i("filter",arguments.length,2);var a,s=e[0].compile(t).eval(o);if(e[1]instanceof n)a=e[1].compile(t).eval(o);else{var u=o||{},f=e[1].filter(function(e){return e instanceof n&&!(e.name in t)&&!(e.name in u)})[0],c=Object.create(u),l=e[1].compile(t);if(!f)throw new Error("No undefined variable found in filter equation");var p=f.name;a=function(e){return c[p]=e,l.eval(c)}}return r(s,a)};return t.rawArgs=!0,e.filter.transform=t,t}},function(e,r,t){"use strict";var n=t(9);e.exports=function(e){function r(e,r,t){var n=function(e,i){Array.isArray(e)?e.forEach(function(e,r){n(e,i.concat(r+1))}):r(e,i,t)};n(e,[])}var t=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(t))r(t,i,t);else{if(!(t instanceof n))throw new e.error.UnsupportedTypeError("forEach",e["typeof"](t));r(t.valueOf(),i,t)}};return e.forEach.transform=t,t}},function(e,r,t){"use strict";{var n=t(156),i=t(7),o=t(8),a=(t(9),t(3).isNumber);Array.isArray}e.exports=function(e){var r=function(){for(var e=[],r=0,t=arguments.length;t>r;r++){var s=arguments[r];if(s instanceof i)s.start--,s.end-=s.step>0?0:2;else if(a(s))s--;else{if(!(s instanceof n))throw new TypeError("Ranges must be a Number or Range");s=s.toNumber()-1}e[r]=s}var u=new o;return o.apply(u,e),u};return e.index.transform=r,r}},function(e,r,t){"use strict";{var n=t(9);t(156),t(7),t(8),t(3).isNumber,Array.isArray}e.exports=function(e){function r(e,r,t){var n=function(e,i){return Array.isArray(e)?e.map(function(e,r){return n(e,i.concat(r+1))}):r(e,i,t)};return n(e,[])}var t=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(t))return r(t,i,t);if(t instanceof n)return new n(r(t.valueOf(),i,t));throw new e.error.UnsupportedTypeError("map",e["typeof"](t))};return e.map.transform=t,t}},function(e,r,t){"use strict";var n=t(156),i=t(193).transform,o=t(3).isNumber,a=t(13).isCollection,s=t(154).argsToArray;e.exports=function(e){var r=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var t=r[1];o(t)?r[1]=t-1:t instanceof n&&(r[1]=t.minus(1))}try{return e.max.apply(e,r)}catch(u){throw i(u)}};return e.max.transform=r,r}},function(e,r,t){"use strict";var n=t(156),i=t(193).transform,o=t(3).isNumber,a=t(13).isCollection,s=t(154).argsToArray;e.exports=function(e){var r=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var t=r[1];o(t)?r[1]=t-1:t instanceof n&&(r[1]=t.minus(1))}try{return e.mean.apply(e,r)}catch(u){throw i(u)}};return e.mean.transform=r,r}},function(e,r,t){"use strict";var n=t(156),i=t(193).transform,o=t(3).isNumber,a=t(13).isCollection,s=t(154).argsToArray;e.exports=function(e){var r=function(){var r=s(arguments);if(2==r.length&&a(r[0])){var t=r[1];o(t)?r[1]=t-1:t instanceof n&&(r[1]=t.minus(1))}try{return e.min.apply(e,r)}catch(u){throw i(u)}};return e.min.transform=r,r}},function(e,r,t){"use strict";var n=t(194).isBoolean,i=t(154).argsToArray;e.exports=function(e){var r=function(){var r=i(arguments),t=r.length-1,o=r[t];return n(o)||r.push(!0),e.range.apply(e,r)};return e.range.transform=r,r}},function(e,r,t){"use strict";var n=t(193).transform,i=(t(194).isBoolean,t(154).argsToArray);e.exports=function(e){var r=function(){try{return e.subset.apply(e,i(arguments))}catch(r){throw n(r)}};return e.subset.transform=r,r}},function(e,r,t){"use strict";e.exports=function(e){function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.value=e instanceof r?e.value:e}function n(e,t){var n=Array.prototype.slice;r.prototype[e]="function"==typeof t?function(){var e=[this.value].concat(n.call(arguments,0));return new r(t.apply(this,e))}:new r(t)}var i=t(195);r.prototype.done=function(){return this.value},r.prototype.valueOf=function(){return this.value},r.prototype.toString=function(){return i.format(this.value)},r.createProxy=n;for(var o in e)e.hasOwnProperty(o)&&n(o,e[o]);return r}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=t(15),i=t(13),o=r.string.isString,a=i.isCollection;e.compile=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("compile",arguments.length,1);if(o(r))return n(r).compile(e);if(a(r))return i.deepMap(r,function(r){return n(r).compile(e)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=t(15),i=t(13),o=r.string.isString,a=i.isCollection;e.eval=function(r,t){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("eval",arguments.length,1,2);if(t=t||{},o(r))return n(r).compile(e).eval(t);if(a(r))return i.deepMap(r,function(r){return n(r).compile(e).eval(t)});throw new TypeError("String, array, or matrix expected")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(11);e.help=function(t){if(1!=arguments.length)throw new SyntaxError("Wrong number of arguments in function help ("+arguments.length+" provided, 1 expected)");var n=null;if(t instanceof String||"string"==typeof t)n=t;else{var i;for(i in e)if(e.hasOwnProperty(i)&&t===e[i]){n=i;break}}var o=e.expression.docs[n];if(!n)throw new Error('Cannot find "'+t+'" in math.js');if(!o)throw new Error('No documentation found on "'+n+'"');return new r(e,o)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(15);e.parse=function(){return r.apply(r,arguments)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=(t(9),t(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.abs=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("abs",arguments.length,1);if(a(r))return Math.abs(r);if(u(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof n)return r.abs();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.abs(r);throw new e.error.UnsupportedTypeError("abs",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=(t(9),t(10)),a=t(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=r.string.isString,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.add=function m(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("add",arguments.length,2);if(u(r)){if(u(t))return r+t;if(c(t))return new i(r+t.re,t.im)}if(c(r)){if(c(t))return new i(r.re+t.re,r.im+t.im);if(u(t))return new i(r.re+t,r.im)}if(l(r)&&l(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value+=t.value,o.fixPrefix=!1,o}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.plus(t):m(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.plus(t):m(r,t.toNumber());if(p(r)||p(t))return a.deepMap2(r,t,m);if(f(r)||f(t))return r+t;if(s(r)||null===r)return m(+r,t);if(s(t)||null===t)return m(r,+t);throw new e.error.UnsupportedTypeError("add",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.ceil=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("ceil",arguments.length,1);if(a(r))return Math.ceil(r);if(f(r))return new i(Math.ceil(r.re),Math.ceil(r.im));if(r instanceof n)return r.ceil();if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.ceil(r);throw new e.error.UnsupportedTypeError("ceil",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.cube=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cube",arguments.length,1);if(a(r))return r*r*r;if(u(r))return e.multiply(e.multiply(r,r),r);if(r instanceof n)return r.times(r).times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("cube",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=r.re*r.re+r.im*r.im;return 0!=t?new o((e.re*r.re+e.im*r.im)/t,(e.im*r.re-e.re*r.im)/t):new o(0!=e.re?e.re/0:0,0!=e.im?e.im/0:0)}var n=t(161),i=e.type.BigNumber,o=t(6),a=(t(9),t(10)),s=n.number.isNumber,u=n["boolean"].isBoolean,f=o.isComplex,c=a.isUnit;e._divide=function l(t,n){if(s(t)){if(s(n))return t/n;if(f(n))return r(new o(t,0),n)}if(f(t)){if(f(n))return r(t,n);if(s(n))return r(t,new o(n,0))}if(t instanceof i)return s(n)?n=i.convert(n):(u(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.div(n):l(t.toNumber(),n);if(n instanceof i)return s(t)?t=i.convert(t):(u(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.div(n):l(t,n.toNumber());if(c(t)&&s(n)){var a=t.clone();return a.value=(null===a.value?a._normalize(1):a.value)/n,a}if(u(t)||null===t)return l(+t,n);if(u(n)||null===n)return l(t,+n);throw new e.error.UnsupportedTypeError("divide",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(13),n=r.isCollection;e.divide=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("divide",arguments.length,2);return n(t)?n(i)?e.multiply(t,e.inv(i)):r.deepMap2(t,i,e._divide):n(i)?e.multiply(t,e.inv(i)):e._divide(t,i)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(13);e.dotDivide=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotDivide",arguments.length,2);return r.deepMap2(t,n,e.divide)},e.edivide=function(){throw new Error("Function edivide is renamed to dotDivide")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(161),t(13));e.dotMultiply=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotMultiply",arguments.length,2);return r.deepMap2(t,n,e.multiply)},e.emultiply=function(){throw new Error("Function emultiply is renamed to dotMultiply")}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(161),t(13));e.dotPow=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("dotPow",arguments.length,2);return r.deepMap2(t,n,e.pow)},e.epow=function(){throw new Error("Function epow is renamed to dotPow")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=(t(9),t(13)),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.exp=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("exp",arguments.length,1);if(a(r))return Math.exp(r);if(u(r)){var t=Math.exp(r.re);return new i(t*Math.cos(r.im),t*Math.sin(r.im))}if(r instanceof n)return r.exp();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return Math.exp(r);throw new e.error.UnsupportedTypeError("exp",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.fix=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("fix",arguments.length,1);if(a(r))return r>0?Math.floor(r):Math.ceil(r);if(u(r))return new i(r.re>0?Math.floor(r.re):Math.ceil(r.re),r.im>0?Math.floor(r.im):Math.ceil(r.im));if(r instanceof n)return r.isNegative()?r.ceil():r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("fix",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.floor=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("floor",arguments.length,1);if(a(r))return Math.floor(r);if(u(r))return new i(Math.floor(r.re),Math.floor(r.im));if(r instanceof n)return r.floor();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("floor",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(!e.isInt()||!r.isInt())throw new Error("Parameters in function gcd must be integer numbers");for(var t=new i(0);!r.isZero();){var n=e.mod(r);e=r,r=n}return e.lt(t)?e.neg():e}var n=t(161),i=e.type.BigNumber,o=t(13),a=n.number.isNumber,s=n["boolean"].isBoolean,u=n.number.isInteger,f=o.isCollection;e.gcd=function c(){var t,n=arguments[0],l=arguments[1];if(2==arguments.length){if(a(n)&&a(l)){if(!u(n)||!u(l))throw new Error("Parameters in function gcd must be integer numbers");for(;0!=l;)t=n%l,n=l,l=t;return 0>n?-n:n}if(f(n)||f(l))return o.deepMap2(n,l,c);if(n instanceof i)return a(l)?l=i.convert(l):(s(l)||null===l)&&(l=new i(l?1:0)),l instanceof i?r(n,l):c(n.toNumber(),l);if(l instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?r(n,l):c(n.toNumber(),l);if(s(n)||null===n)return c(+n,l);if(s(l)||null===l)return c(n,+l);throw new e.error.UnsupportedTypeError("gcd",e["typeof"](n),e["typeof"](l))}if(arguments.length>2){for(var p=1;p2){for(var m=1;m=0?Math.log(r):c(new i(r,0));if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im)),Math.atan2(r.im,r.re));if(r instanceof n)return r.isNegative()?c(r.toNumber()):r.ln();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log",e["typeof"](r))}if(2==arguments.length)return e.divide(c(r),c(t));throw new e.error.ArgumentsError("log",arguments.length,1,2)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.log10=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("log10",arguments.length,1);if(a(r))return r>=0?Math.log(r)/Math.LN10:c(new i(r,0));if(r instanceof n)return r.isNegative()?c(r.toNumber()):r.log();if(u(r))return new i(Math.log(Math.sqrt(r.re*r.re+r.im*r.im))/Math.LN10,Math.atan2(r.im,r.re)/Math.LN10);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("log10",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if(r>0)return e-r*Math.floor(e/r);if(0==r)return e;throw new Error("Cannot calculate mod for a negative divisor")}var n=t(161),i=e.type.BigNumber,o=t(13),a=n.number.isNumber,s=n["boolean"].isBoolean,u=o.isCollection;e.mod=function f(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("mod",arguments.length,2);if(a(t)&&a(n))return r(t,n);if(t instanceof i)return a(n)?n=i.convert(n):(s(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isZero()?t:t.mod(n):f(t.toNumber(),n);if(n instanceof i)return a(t)?t=i.convert(t):(s(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isZero()?t:t.mod(n):f(t,n.toNumber());if(u(t)||u(n))return o.deepMap2(t,n,f);if(s(t)||null===t)return f(+t,n);if(s(n)||null===n)return f(t,+n);throw new e.error.UnsupportedTypeError("mod",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){for(var n=[],i=r.length,o=t[0].length,a=r[0].length,s=0;i>s;s++){n[s]=[];for(var u=0;o>u;u++){for(var f=null,c=0;a>c;c++){var l=e.multiply(r[s][c],t[c][u]);f=null===f?l:e.add(f,l)}n[s][u]=f}}var p=1===i&&1===o;return p?n[0][0]:n}function n(r,t){for(var n=[],i=t.length,o=t[0].length,a=0;o>a;a++){for(var s=null,u=0;i>u;u++){var f=e.multiply(r[u],t[u][a]);s=0===u?f:e.add(s,f)}n[a]=s}return 1===n.length?n[0]:n}function i(r,t){for(var n=[],i=r.length,o=r[0].length,a=0;i>a;a++){for(var s=null,u=0;o>u;u++){var f=e.multiply(r[a][u],t[u]);s=0===u?f:e.add(s,f)}n[a]=s}return 1===n.length?n[0]:n}function o(r,t){var n=r.length;if(!n)throw new Error("Cannot multiply two empty vectors");for(var i=0,o=0;n>o;o++)i=e.add(i,e.multiply(r[o],t[o]));return i}function a(e,r){return 0==e.im?0==r.im?new f(e.re*r.re,0):0==r.re?new f(0,e.re*r.im):new f(e.re*r.re,e.re*r.im):0==e.re?0==r.im?new f(0,e.im*r.re):0==r.re?new f(-e.im*r.im,0):new f(-e.im*r.im,e.im*r.re):0==r.im?new f(e.re*r.re,e.im*r.re):0==r.re?new f(-e.im*r.im,e.re*r.im):new f(e.re*r.re-e.im*r.im,e.re*r.im+e.im*r.re)}var s=t(161),u=e.type.BigNumber,f=t(6),c=t(9),l=t(10),p=t(13),m=s.array,h=s.number.isNumber,g=s["boolean"].isBoolean,d=f.isComplex,w=Array.isArray,y=l.isUnit;e.multiply=function v(t,s){var l;if(2!=arguments.length)throw new e.error.ArgumentsError("multiply",arguments.length,2);if(h(t)){if(h(s))return t*s;if(d(s))return a(new f(t,0),s);if(y(s))return l=s.clone(),l.value=null===l.value?l._normalize(t):l.value*t,l +}if(d(t)){if(h(s))return a(t,new f(s,0));if(d(s))return a(t,s)}if(t instanceof u)return h(s)?s=u.convert(s):(g(s)||null===s)&&(s=new u(s?1:0)),s instanceof u?t.times(s):v(t.toNumber(),s);if(s instanceof u)return h(t)?t=u.convert(t):(g(t)||null===t)&&(t=new u(t?1:0)),t instanceof u?t.times(s):v(t,s.toNumber());if(y(t)&&h(s))return l=t.clone(),l.value=null===l.value?l._normalize(s):l.value*s,l;if(w(t)){if(w(s)){var x=m.size(t),b=m.size(s);if(1==x.length){if(1==b.length){if(x[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match length of B (A is "+x[0]+", B is "+b[0]+", "+x[0]+" != "+b[0]+")");return o(t,s)}if(2==b.length){if(x[0]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Length of A must match rows of B (A is "+x[0]+", B is "+b[0]+"x"+b[1]+", "+x[0]+" != "+b[0]+")");return n(t,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)")}if(2==x.length){if(1==b.length){if(x[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match length of B (A is "+x[0]+"x"+x[0]+", B is "+b[0]+", "+x[1]+" != "+b[0]+")");return i(t,s)}if(2==b.length){if(x[1]!=b[0])throw new RangeError("Dimension mismatch in multiplication. Columns of A must match rows of B (A is "+x[0]+"x"+x[1]+", B is "+b[0]+"x"+b[1]+", "+x[1]+" != "+b[0]+")");return r(t,s)}throw new Error("Can only multiply a 1 or 2 dimensional matrix (B has "+b.length+" dimensions)")}throw new Error("Can only multiply a 1 or 2 dimensional matrix (A has "+x.length+" dimensions)")}return s instanceof c?(l=v(t,s.valueOf()),w(l)?new c(l):l):p.deepMap2(t,s,v)}if(t instanceof c)return s instanceof c?(l=v(t.valueOf(),s.valueOf()),w(l)?new c(l):l):(l=v(t.valueOf(),s),w(l)?new c(l):l);if(w(s))return p.deepMap2(t,s,v);if(s instanceof c)return new c(p.deepMap2(t,s.valueOf(),v));if(g(t)||null===t)return v(+t,s);if(g(s)||null===s)return v(t,+s);throw new e.error.UnsupportedTypeError("multiply",e["typeof"](t),e["typeof"](s))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=t(154),i=e.type.BigNumber,o=t(6),a=t(9),s=(t(13),r.number.isNumber),u=r["boolean"].isBoolean,f=o.isComplex,c=Array.isArray;e.norm=function l(r,t){if(arguments.length<1||arguments.length>2)throw new e.error.ArgumentsError("abs",arguments.length,1,2);if(s(r))return Math.abs(r);if(f(r))return Math.sqrt(r.re*r.re+r.im*r.im);if(r instanceof i)return r.abs();if(u(r)||null===r)return Math.abs(r);if(c(r)){var o=n.size(r);if(null==t&&(t=2),1==o.length){if(t===Number.POSITIVE_INFINITY||"inf"===t){var p;return e.forEach(r,function(r){var t=e.abs(r);(!p||e.larger(t,p))&&(p=t)}),p}if(t===Number.NEGATIVE_INFINITY||"-inf"===t){var p;return e.forEach(r,function(r){var t=e.abs(r);(!p||e.smaller(t,p))&&(p=t)}),p}if("fro"===t)return l(r);if(s(t)&&!isNaN(t)){if(!e.equal(t,0)){var p=0;return e.forEach(r,function(r){p=e.add(e.pow(e.abs(r),t),p)}),e.pow(p,1/t)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(2==o.length){if(1==t){for(var m=[],h=0;ht;if(n&&(t=-t),0==t)throw new Error("Root must be non-zero");if(0>e&&Math.abs(t)%2!=1)throw new Error("Root must be odd when a is negative.");if(0==e)return 0;if(!Number.isFinite(e))return n?0:e;var i=1e-16,o=1,a=0,s=100;do{var u=(e/Math.pow(o,t-1)-o)/t;o+=u,a++}while(Math.abs(u)>i&&s>a);return n?1/o:o}function i(e,r){var t=void 0!=r?r:new a(2),n=new a(0),i=new a(1),o=t.isNegative();if(o&&(t=t.negated()),t.isZero())throw new Error("Root must be non-zero");if(e.isNegative()&&!t.abs().mod(2).equals(1))throw new Error("Root must be odd when a is negative.");if(e.isZero())return n;if(!e.isFinite())return o?n:e;var s=i,u=0,f=100;do{var c=s,l=e.div(s.pow(t.minus(1))).minus(s).div(t);s=s.plus(l),u++}while(!s.equals(c)&&f>u);return o?i.div(s):s}var o=t(161),a=e.type.BigNumber,s=t(13),u=o.number.isNumber,f=o["boolean"].isBoolean,c=s.isCollection;e.nthRoot=function l(t,o){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2);switch(arguments.length){case 1:if(u(t))return r(t);if(t instanceof a)return i(t);if(c(t))return s.deepMap(x,l);if(f(t)||null===t)return l(+t);break;case 2:if(u(t)){if(u(o))return r(t,o);if(o instanceof a)return t=a.convert(t),t instanceof a?i(t,o):r(t,o.toNumber())}else{if(t instanceof a)return u(o)&&(o=a.convert(o)),o instanceof a?i(t,o):r(t.toNumber(),o);if(c(t)&&!c(o))return s.deepMap2(t,o,l)}if(f(t)||null===t)return l(+t,o);if(f(o)||null===o)return l(t,+o);break;default:throw new e.error.ArgumentsError("nthRoot",arguments.length,1,2)}if(f(x)||null===x)return 2==arguments.length?l(+x,n):l(+x);throw new e.error.UnsupportedTypeError("nthRoot",e["typeof"](t),e["typeof"](o))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=e.log(r),i=e.multiply(n,t);return e.exp(i)}var n=t(161),i=e.type.BigNumber,o=t(6),a=t(9),s=(t(13),n.array),u=n.number.isNumber,f=n["boolean"].isBoolean,c=Array.isArray,l=n.number.isInteger,p=o.isComplex;e.pow=function m(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("pow",arguments.length,2);if(u(t)){if(u(n))return l(n)||t>=0?Math.pow(t,n):r(new o(t,0),new o(n,0));if(p(n))return r(new o(t,0),n)}if(p(t)){if(u(n))return r(t,new o(n,0));if(p(n))return r(t,n)}if(t instanceof i)return u(n)?n=i.convert(n):(f(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?n.isInteger()||!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(f(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?n.isInteger()&&!t.isNegative()?t.pow(n):m(t.toNumber(),n.toNumber()):m(t,n.toNumber());if(c(t)){if(!u(n)||!l(n)||0>n)throw new TypeError("For A^b, b must be a positive integer (value is "+n+")");var h=s.size(t);if(2!=h.length)throw new Error("For A^b, A must be 2 dimensional (A has "+h.length+" dimensions)");if(h[0]!=h[1])throw new Error("For A^b, A must be square (size is "+h[0]+"x"+h[1]+")");for(var g=e.eye(h[0]).valueOf(),d=t;n>=1;)1==(1&n)&&(g=e.multiply(d,g)),n>>=1,d=e.multiply(d,d);return g}if(t instanceof a)return new a(m(t.valueOf(),n));if(f(t)||null===t)return m(+t,n);if(f(n)||null===n)return m(t,+n);throw new e.error.UnsupportedTypeError("pow",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=Math.pow(10,r);return Math.round(e*t)/t}var n=t(161),i=e.type.BigNumber,o=t(6),a=t(13),s=n.number.isNumber,u=n.number.isInteger,f=n["boolean"].isBoolean,c=o.isComplex,l=a.isCollection;e.round=function p(t,n){if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("round",arguments.length,1,2);if(void 0==n){if(s(t))return Math.round(t);if(c(t))return new o(Math.round(t.re),Math.round(t.im));if(t instanceof i)return t.toDecimalPlaces(0);if(l(t))return a.deepMap(t,p);if(f(t)||null===t)return Math.round(t);throw new e.error.UnsupportedTypeError("round",e["typeof"](t))}if(!s(n)||!u(n)){if(!(n instanceof i)){if(f(n)||null===t)return p(t,+n);throw new TypeError("Number of decimals in function round must be an integer")}n=parseFloat(n.valueOf())}if(0>n||n>15)throw new Error("Number of decimals in function round must be in te range of 0-15");if(s(t))return r(t,n);if(c(t))return new o(r(t.re,n),r(t.im,n));if(t instanceof i)return t.toDecimalPlaces(n);if(l(t)||l(n))return a.deepMap2(t,n,p);if(f(t)||null===t)return p(+t,n);throw new e.error.UnsupportedTypeError("round",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number,s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isCollection;e.sign=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sign",arguments.length,1);if(s(r))return a.sign(r);if(f(r)){var t=Math.sqrt(r.re*r.re+r.im*r.im);return new i(r.re/t,r.im/t)}if(r instanceof n)return new n(r.cmp(0));if(c(r))return o.deepMap(r,l);if(u(r)||null===r)return a.sign(r);throw new e.error.UnsupportedTypeError("sign",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.sqrt=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sqrt",arguments.length,1);if(a(r))return r>=0?Math.sqrt(r):c(new i(r,0));if(u(r)){var t,l,p=Math.sqrt(r.re*r.re+r.im*r.im);return t=r.re>=0?.5*Math.sqrt(2*(p+r.re)):Math.abs(r.im)/Math.sqrt(2*(p-r.re)),l=r.re<=0?.5*Math.sqrt(2*(p-r.re)):Math.abs(r.im)/Math.sqrt(2*(p+r.re)),r.im>=0?new i(t,l):new i(t,-l)}if(r instanceof n)return r.isNegative()?c(r.toNumber()):r.sqrt();if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("sqrt",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection;e.square=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("square",arguments.length,1);if(a(r))return r*r;if(u(r))return e.multiply(r,r);if(r instanceof n)return r.times(r);if(f(r))return o.deepMap(r,c);if(s(r)||null===r)return r*r;throw new e.error.UnsupportedTypeError("square",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=(t(9),t(10)),a=t(13),s=r["boolean"].isBoolean,u=r.number.isNumber,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.subtract=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("subtract",arguments.length,2);if(u(r)){if(u(t))return r-t;if(f(t))return new i(r-t.re,-t.im)}else if(f(r)){if(u(t))return new i(r.re-t,r.im);if(f(t))return new i(r.re-t.re,r.im-t.im)}if(r instanceof n)return u(t)?t=n.convert(t):(s(t)||null===t)&&(t=new n(t?1:0)),t instanceof n?r.minus(t):p(r.toNumber(),t);if(t instanceof n)return u(r)?r=n.convert(r):(s(r)||null===r)&&(r=new n(r?1:0)),r instanceof n?r.minus(t):p(r,t.toNumber());if(c(r)&&c(t)){if(null==r.value)throw new Error("Parameter x contains a unit with undefined value");if(null==t.value)throw new Error("Parameter y contains a unit with undefined value");if(!r.equalBase(t))throw new Error("Units do not match");var o=r.clone();return o.value-=t.value,o.fixPrefix=!1,o}if(l(r)||l(t))return a.deepMap2(r,t,p);if(s(r)||null===r)return p(+r,t);if(s(t)||null===t)return p(r,+t);throw new e.error.UnsupportedTypeError("subtract",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n["boolean"].isBoolean,c=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryMinus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryMinus",arguments.length,1);if(u(t))return-t;if(l(t))return new o(-t.re,-t.im);if(t instanceof i)return t.neg();if(p(t)){var n=t.clone();return n.value=-t.value,n}if(m(t))return s.deepMap(t,h);if(f(t)||c(t)||null===t)return"bignumber"==r.number?new i(-t):-t;throw new e.error.UnsupportedTypeError("unaryMinus",e["typeof"](t))},e.unary=function(){throw new Error("Function unary is deprecated. Use unaryMinus instead.")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n["boolean"].isBoolean,c=n.string.isString,l=o.isComplex,p=a.isUnit,m=s.isCollection;e.unaryPlus=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("unaryPlus",arguments.length,1);if(u(t))return t;if(l(t))return t.clone();if(t instanceof i)return t;if(p(t))return t.clone();if(m(t))return s.deepMap(t,h);if(f(t)||c(t)||null===t)return"bignumber"==r.number?new i(+t):+t;throw new e.error.UnsupportedTypeError("unaryPlus",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(e,t){for(var n,i,o,s=0,u=1,f=1,c=0;t;)i=Math.floor(e/t),o=e%t,n=s,s=u-i*s,u=n,n=f,f=c-i*f,c=n,e=t,t=o;var l;return l=0>e?[-e,-u,-c]:[e,e?u:0,c],"array"===r.matrix?l:new a(l)}function i(e,t){for(var n,i,o,u=new s(0),f=new s(0),c=new s(1),l=new s(1),p=new s(0);!t.isZero();)i=e.div(t).floor(),o=e.mod(t),n=f,f=c.minus(i.times(f)),c=n,n=l,l=p.minus(i.times(l)),p=n,e=t,t=o;var m;return m=e.lt(u)?[e.neg(),c.neg(),p.neg()]:[e,e.isZero()?0:c,p],"array"===r.matrix?m:new a(m)}var o=t(161),a=t(9),s=e.type.BigNumber,u=o.number.isNumber,f=o["boolean"].isBoolean,c=o.number.isInteger;e.xgcd=function l(r,t){if(2==arguments.length){if(u(r)&&u(t)){if(!c(r)||!c(t))throw new Error("Parameters in function xgcd must be integer numbers");return n(r,t)}if(r instanceof s)return u(t)?t=s.convert(t):(f(t)||null===t)&&(t=new s(t?1:0)),t instanceof s?i(r,t):l(r.toNumber(),t);if(t instanceof s)return u(r)?r=s.convert(r):(f(r)||null===r)&&(r=new s(r?1:0)),r instanceof s?i(r,t):l(r.toNumber(),t);if(f(r)||null===r)return l(+r,t);if(f(t)||null===t)return l(r,+t);throw new e.error.UnsupportedTypeError("xgcd",e["typeof"](r),e["typeof"](t))}throw new SyntaxError("Function xgcd expects two arguments")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.and;e.bitAnd=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitAnd",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function bitAnd must be integer numbers");return r&t}if(u(r)||u(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return s(t)&&(t=n.convert(t)),t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return s(r)&&(r=n.convert(r)),r instanceof n?f(r,t):c(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitAnd",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.not;e.bitNot=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("bitNot",arguments.length,1);if(s(r)){if(!a(r))throw new Error("Parameter in function bitNot must be integer numbers");return~r}if(r instanceof n)return f(r);if(u(r))return i.deepMap(r,c);if(o(r)||null===r)return c(+r);throw new e.error.UnsupportedTypeError("bitNot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.or;e.bitOr=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitOr",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function bitOr must be integer numbers");return r|t}if(u(r)||u(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return s(t)&&(t=n.convert(t)),t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return s(r)&&(r=n.convert(r)),r instanceof n?f(r,t):c(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitOr",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.xor;e.bitXor=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("bitXor",arguments.length,2);if(s(r)&&s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function bitXor must be integer numbers");return r^t}if(u(r)||u(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return s(t)&&(t=n.convert(t)),t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return s(r)&&(r=n.convert(r)),r instanceof n?f(r,t):c(r,t.toNumber());throw new e.error.UnsupportedTypeError("bitXor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.leftShift;e.leftShift=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("leftShift",arguments.length,2);if(s(r)){if(s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function leftShift must be integer numbers");return r<t?new n(0/0):0==t||r.isZero()?r:1/0!=t||r.isFinite()?55>t?r.times(Math.pow(2,t)+""):(t=n.convert(t),f(r,t)):new n(0/0)}}if(u(r)&&s(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return c(r,t.toNumber());throw new e.error.UnsupportedTypeError("leftShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=(t(9),t(10),t(13)),o=r["boolean"].isBoolean,a=r.number.isInteger,s=r.number.isNumber,u=i.isCollection,f=r.bignumber.rightShift;e.rightArithShift=function c(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightArithShift",arguments.length,2);if(s(r)){if(s(t)){if(!a(r)||!a(t))throw new Error("Parameters in function rightArithShift must be integer numbers");return r>>t}if(t instanceof n)return f(n.convert(r),t)}if(s(t)){if(isFinite(t)&&!a(t))throw new Error("Parameters in function rightArithShift must be integer numbers");if(r instanceof n){if(r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");return r.isNaN()||isNaN(t)||0>t?new n(0/0):1/0==t?new n(r.isNegative()?-1:r.isFinite()?0:0/0):55>t?r.div(Math.pow(2,t)+"").floor():(t=n.convert(t),f(r,t))}}if(u(r)&&s(t))return i.deepMap2(r,t,c);if(o(r)||null===r)return c(+r,t);if(o(t)||null===t)return c(r,+t);if(r instanceof n)return t instanceof n?f(r,t):c(r.toNumber(),t);if(t instanceof n)return c(r,t.toNumber());throw new e.error.UnsupportedTypeError("rightArithShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=(t(9),t(10),t(13)),i=r["boolean"].isBoolean,o=r.number.isInteger,a=r.number.isNumber,s=n.isCollection;e.rightLogShift=function u(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("rightLogShift",arguments.length,2);if(a(r)&&a(t)){if(!o(r)||!o(t))throw new Error("Parameters in function rightLogShift must be integer numbers");return r>>>t}if(s(r)&&a(t))return n.deepMap2(r,t,u);if(i(r)||null===r)return u(+r,t);if(i(t)||null===t)return u(r,+t);throw new e.error.UnsupportedTypeError("rightLogShift",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.arg=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("arg",arguments.length,1);if(a(r))return Math.atan2(0,r);if(f(r))return Math.atan2(r.im,r.re);if(u(r))return o.deepMap(r,c);if(s(r)||null===r)return c(+r);if(r instanceof n)return c(r.toNumber());throw new e.error.UnsupportedTypeError("arg",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.conj=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("conj",arguments.length,1);return s(r)?r:r instanceof n?new n(r):c(r)?new i(r.re,-r.im):f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.object,s=r.number.isNumber,u=r["boolean"].isBoolean,f=o.isCollection,c=i.isComplex;e.re=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("re",arguments.length,1);return s(r)?r:r instanceof n?new n(r):c(r)?r.re:f(r)?o.deepMap(r,l):u(r)||null===r?+r:a.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=o.isCollection,f=i.isComplex;e.im=function c(r){if(1!=arguments.length)throw new e.error.ArgumentsError("im",arguments.length,1);return a(r)?0:r instanceof n?new n(0):f(r)?r.im:u(r)?o.deepMap(r,c):(s(r)||null===r,0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString,u=r["boolean"].isBoolean;e.bignumber=function f(r){if(arguments.length>1)throw new e.error.ArgumentsError("bignumber",arguments.length,0,1);if(r instanceof n||a(r)||s(r))return new n(r);if(u(r)||null===r)return new n(+r);if(o(r))return i.deepMap(r,f);if(0==arguments.length)return new n(0);throw new e.error.UnsupportedTypeError("bignumber",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(13),o=i.isCollection,a=r.number.isNumber,s=r.string.isString;e["boolean"]=function u(r){if(1!=arguments.length)throw new e.error.ArgumentsError("boolean",arguments.length,0,1);if("true"===r||r===!0)return!0;if("false"===r||r===!1||null===r)return!1;if(r instanceof Boolean)return 1==r;if(a(r))return 0!==r;if(r instanceof n)return!r.isZero();if(s(r)){var t=r.toLowerCase();if("true"===t)return!0;if("false"===t)return!1;var f=Number(r);if(""!=r&&!isNaN(f))return 0!==f}if(o(r))return i.deepMap(r,u);throw new SyntaxError(r.toString()+" is no valid boolean")}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=o.isCollection,s=r.number.isNumber,u=r.string.isString,f=i.isComplex;e.complex=function c(){switch(arguments.length){case 0:return new i(0,0);case 1:var r=arguments[0];if(s(r))return new i(r,0);if(r instanceof n)return new i(r.toNumber(),0);if(f(r))return r.clone();if(u(r)){var t=i.parse(r);if(t)return t;throw new SyntaxError('String "'+r+'" is no valid complex number')}if(a(r))return o.deepMap(r,c);if("object"==typeof r){if("re"in r&&"im"in r)return new i(r.re,r.im);if("r"in r&&"phi"in r)return i.fromPolar(r.r,r.phi)}throw new TypeError("Two numbers, single string or an fitting object expected in function complex");case 2:var l=arguments[0],p=arguments[1];if(l instanceof n&&(l=l.toNumber()),p instanceof n&&(p=p.toNumber()),s(l)&&s(p))return new i(l,p);throw new TypeError("Two numbers or a single string expected in function complex");default:throw new e.error.ArgumentsError("complex",arguments.length,0,2)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(161),e.type.BigNumber),n=t(8);e.index=function(){var e=Array.prototype.slice.apply(arguments).map(function(e){return e instanceof r?e.toNumber():Array.isArray(e)?e.map(function(e){return e instanceof r?e.toNumber():e}):e}),t=new n;return n.apply(t,e),t}}},function(e,r,t){"use strict";e.exports=function(e){var r=(t(161),t(9));e.matrix=function(t){if(arguments.length>1)throw new e.error.ArgumentsError("matrix",arguments.length,0,1);return new r(t)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=e.type.Unit,o=t(13),a=o.isCollection,s=r.number.isNumber,u=r["boolean"].isBoolean,f=r.string.isString;e.number=function c(r,t){switch(arguments.length){case 0:return 0;case 1:if(a(r))return o.deepMap(r,c);if(r instanceof n)return r.toNumber();if(f(r)){var l=Number(r);if(isNaN(l)&&(l=Number(r.valueOf())),isNaN(l))throw new SyntaxError(r.toString()+" is no valid number");return l}if(u(r)||null===r)return+r;if(s(r))return r;if(r instanceof i)throw new Error("Second argument with valueless unit expected");throw new e.error.UnsupportedTypeError("number",e["typeof"](r));case 2:if(r instanceof i&&f(t)||t instanceof i)return r.toNumber(t);throw new e.error.UnsupportedTypeError("number",e["typeof"](r),e["typeof"](t));default:throw new e.error.ArgumentsError("number",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(16);e.parser=function(){return new r(e)}}},function(e){"use strict";e.exports=function(e){e.chain=function(r){return new e.chaining.Chain(r)},e.select=function(r){return console&&"function"==typeof console.log&&console.log('WARNING: Function "select" is renamed to "chain". It will be deprecated in v2.0.'),e.select=e.chain,e.chaining.Chain.prototype.select=e.select,e.chain(r)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=t(13),i=r.number,o=r.number.isNumber,a=n.isCollection;e.string=function s(r){switch(arguments.length){case 0:return"";case 1:return o(r)?i.format(r):a(r)?n.deepMap(r,s):null===r?"null":r.toString();default:throw new e.error.ArgumentsError("string",arguments.length,0,1)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(10),o=t(13),a=o.isCollection,s=r.string.isString;e.unit=function u(r){switch(arguments.length){case 1:var t=arguments[0];if(t instanceof i)return t.clone();if(s(t)){if(i.isValuelessUnit(t))return new i(null,t);var f=i.parse(t);if(f)return f;throw new SyntaxError('String "'+t+'" is no valid unit')}if(a(r))return o.deepMap(r,u);throw new TypeError("A string or a number and string expected in function unit");case 2:return arguments[0]instanceof n?new i(arguments[0].toNumber(),arguments[1]):new i(arguments[0],arguments[1]);default:throw new e.error.ArgumentsError("unit",arguments.length,1,2)}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.and=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("and",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r||!t);if(f(r))return 0==r.re&&0==r.im?!1:p(!0,t);if(f(t))return 0==t.re&&0==t.im?!1:p(r,!0);if(r instanceof n)return r.isZero()||r.isNaN()?!1:p(!0,t);if(t instanceof n)return t.isZero()||t.isNaN()?!1:p(r,!0);if(c(r))return null===r.value||0==r.value?!1:p(!0,t);if(c(t))return null===t.value||0==t.value?!1:p(r,!0);if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("and",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.not=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("not",arguments.length,1);if(s(r)||u(r)||null===r)return!r;if(f(r))return 0==r.re&&0==r.im;if(r instanceof n)return r.isZero()||r.isNaN();if(c(r))return null===r.value||0==r.value;if(l(r))return a.deepMap(r,p);throw new e.error.UnsupportedTypeError("not",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.or=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("or",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!(!r&&!t);if(f(r))return 0==r.re&&0==r.im?p(!1,t):!0;if(f(t))return 0==t.re&&0==t.im?p(r,!1):!0;if(r instanceof n)return r.isZero()||r.isNaN()?p(!1,t):!0;if(t instanceof n)return t.isZero()||t.isNaN()?p(r,!1):!0;if(c(r))return null===r.value||0==r.value?p(!1,t):!0;if(c(t))return null===t.value||0==t.value?p(r,!1):!0;if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("or",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.xor=function p(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("xor",arguments.length,2);if((s(r)||u(r)||null===r)&&(s(t)||u(t)||null===t))return!!(!!r^!!t);if(f(r))return p(!(0==r.re&&0==r.im),t);if(f(t))return p(r,!(0==t.re&&0==t.im));if(r instanceof n)return p(!(r.isZero()||r.isNaN()),t);if(t instanceof n)return p(r,!(t.isZero()||t.isNaN()));if(c(r))return p(!(null===r.value||0==r.value),t);if(c(t))return p(r,!(null===t.value||0==t.value));if(l(r)||l(t))return a.deepMap2(r,t,p);throw new e.error.UnsupportedTypeError("xor",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n,i,o){if(i>o){if(t.length!=n.length)throw new e.error.DimensionError(t.length,n.length);for(var a=[],s=0;st;t++){var g=arguments[t];if(g instanceof o&&(m=!0),t==a-1&&(f(g)||g instanceof i)){if(n=p,p=g.valueOf(),!c(p))throw new TypeError("Integer number expected for dimension");if(0>p)throw new e.error.IndexError(p);if(t>0&&p>n)throw new e.error.IndexError(p,n+1)}else{if(!l(g))throw new e.error.UnsupportedTypeError("concat",e["typeof"](g));var d=s.clone(g).valueOf(),w=u.size(g.valueOf());if(h[t]=d,n=p,p=w.length-1,t>0&&p!=n)throw new e.error.DimensionError(n+1,p+1)}}if(0==h.length)throw new SyntaxError("At least one matrix expected");for(var y=h.shift();h.length;)y=r(y,h.shift(),p,0);return m?new o(y):y}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t);if(1!=i.length||1!=o.length||3!=i[0]||3!=o[0])throw new RangeError("Vectors with length 3 expected (Size A = ["+i.join(", ")+"], B = ["+o.join(", ")+"])");return[e.subtract(e.multiply(r[1],t[2]),e.multiply(r[2],t[1])),e.subtract(e.multiply(r[2],t[0]),e.multiply(r[0],t[2])),e.subtract(e.multiply(r[0],t[1]),e.multiply(r[1],t[0]))]}var n=t(154),i=t(9);e.cross=function(t,n){if(t instanceof i){if(n instanceof i)return new i(r(t.toArray(),n.toArray()));if(Array.isArray(n))return new i(r(t.toArray(),n))}else if(Array.isArray(t)){if(n instanceof i)return new i(r(t,n.toArray()));if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("cross",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){if(1==t)return o.clone(r[0][0]);if(2==t)return e.subtract(e.multiply(r[0][0],r[1][1]),e.multiply(r[1][0],r[0][1]));for(var n=function(r){var t,n,i=new Array(r.length),o=0;for(t=1;tn;n++)i[t][n]=0;for(n=t+1;na;a++)i=e.multiply(n(i),r);return t%2==0?e.unaryMinus(i[0][0]):i[0][0]}var n=t(161),i=t(9),o=n.object,a=n.string;e.det=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("det",arguments.length,1);var n;switch(t instanceof i?n=t.size():t instanceof Array?(t=new i(t),n=t.size()):n=[],n.length){case 0:return o.clone(t);case 1:if(1==n[0])return o.clone(t.valueOf()[0]);throw new RangeError("Matrix must be square (size: "+a.format(n)+")"); +case 2:var s=n[0],u=n[1];if(s==u)return r(t.clone().valueOf(),s,u);throw new RangeError("Matrix must be square (size: "+a.format(n)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+a.format(n)+")")}}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(9),o=r.object,a=r.array.isArray,s=r.number.isNumber,u=r.number.isInteger;e.diag=function(r,t){var f,c,l,p;if(1!=arguments.length&&2!=arguments.length)throw new e.error.ArgumentsError("diag",arguments.length,1,2);if(t){if(t instanceof n&&(t=t.toNumber()),!s(t)||!u(t))throw new TypeError("Second parameter in function diag must be an integer")}else t=0;var m,h=t>0?t:0,g=0>t?-t:0;if(r instanceof i)m=!1;else{if(!a(r))throw new TypeError("First parameter in function diag must be a Matrix or Array");r=new i(r),m=!0}var d=r.size();switch(d.length){case 1:c=r.valueOf();var w=new i,y=c[0]instanceof n?new n(0):0;for(w.resize([c.length+g,c.length+h],y),f=w.valueOf(),p=c.length,l=0;p>l;l++)f[l+g][l+h]=o.clone(c[l]);return m?w.valueOf():w;case 2:for(c=[],f=r.valueOf(),p=Math.min(d[0]-g,d[1]-h),l=0;p>l;l++)c[l]=o.clone(f[l+g][l+h]);return m?c:new i(c);default:throw new RangeError("Matrix for function diag must be 2 dimensional")}}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i=n.size(r),o=n.size(t),a=i[0];if(1!==i.length||1!==o.length)throw new RangeError("Vector expected");if(i[0]!=o[0])throw new RangeError("Vectors must have equal length ("+i[0]+" != "+o[0]+")");if(0==a)throw new RangeError("Cannot calculate the dot product of empty vectors");for(var s=0,u=0;a>u;u++)s=e.add(s,e.multiply(r[u],t[u]));return s}var n=t(154),i=t(9);e.dot=function(t,n){if(t instanceof i){if(n instanceof i)return r(t.toArray(),n.toArray());if(Array.isArray(n))return r(t.toArray(),n)}else if(Array.isArray(t)){if(n instanceof i)return r(t,n.toArray());if(Array.isArray(n))return r(t,n)}throw new e.error.UnsupportedTypeError("dot",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(9),a=t(13),s=n.number.isNumber,u=n.number.isInteger,f=Array.isArray;e.eye=function(t){var n=a.argsToArray(arguments),c=t instanceof o?!0:f(t)?!1:"matrix"===r.matrix;if(0==n.length)return c?new o:[];if(1==n.length)n[1]=n[0];else if(n.length>2)throw new e.error.ArgumentsError("eye",n.length,0,2);var l=n[0],p=n[1];if(l instanceof i&&(l=l.toNumber()),p instanceof i&&(p=p.toNumber()),!s(l)||!u(l)||1>l)throw new Error("Parameters in function eye must be positive integers");if(!s(p)||!u(p)||1>p)throw new Error("Parameters in function eye must be positive integers");var m=!1;n=n.map(function(e){return e instanceof i?(m=!0,e.toNumber()):e});var h=new o,g=m?new i(1):1,d=m?new i(0):0;h.resize(n,d);for(var w=e.min(n),y=h.valueOf(),v=0;w>v;v++)y[v][v]=g;return c?h:h.valueOf()}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=t(9),i=r.object,o=r.array,a=Array.isArray;e.flatten=function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("flatten",arguments.length,1);if(r instanceof n){var t=i.clone(r.toArray()),s=o.flatten(t);return new n(s)}if(a(r))return o.flatten(i.clone(r));throw new e.error.UnsupportedTypeError("flatten",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){var i,o,a,s,u;if(1==t){if(s=r[0][0],0==s)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(1,s)]]}if(2==t){var f=e.det(r);if(0==f)throw Error("Cannot calculate inverse, determinant is zero");return[[e._divide(r[1][1],f),e._divide(e.unaryMinus(r[0][1]),f)],[e._divide(e.unaryMinus(r[1][0]),f),e._divide(r[0][0],f)]]}var c=r.concat();for(i=0;t>i;i++)c[i]=c[i].concat();for(var l=e.eye(t).valueOf(),p=0;n>p;p++){for(i=p;t>i&&0==c[i][p];)i++;if(i==t||0==c[i][p])throw Error("Cannot calculate inverse, determinant is zero");i!=p&&(u=c[p],c[p]=c[i],c[i]=u,u=l[p],l[p]=l[i],l[i]=u);var m=c[p],h=l[p];for(i=0;t>i;i++){var g=c[i],d=l[i];if(i!=p){if(0!=g[p]){for(a=e._divide(e.unaryMinus(g[p]),m[p]),o=p;n>o;o++)g[o]=e.add(g[o],e.multiply(a,m[o]));for(o=0;n>o;o++)d[o]=e.add(d[o],e.multiply(a,h[o]))}}else{for(a=m[p],o=p;n>o;o++)g[o]=e._divide(g[o],a);for(o=0;n>o;o++)d[o]=e._divide(d[o],a)}}}return l}var n=t(161),i=t(9);e.inv=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("inv",arguments.length,1);var o=e.size(t).valueOf();switch(o.length){case 0:return e._divide(1,t);case 1:if(1==o[0])return t instanceof i?new i([e._divide(1,t.valueOf()[0])]):[e._divide(1,t[0])];throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");case 2:var a=o[0],s=o[1];if(a==s)return t instanceof i?new i(r(t.valueOf(),a,s)):r(t,a,s);throw new RangeError("Matrix must be square (size: "+n.string.format(o)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+n.string.format(o)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(9),a=t(13),s=n.array,u=Array.isArray;e.ones=function(e){var t=a.argsToArray(arguments),n=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==t.length)return n?new o:[];var f=!1;t=t.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(1):1;return c=s.resize(c,t,l),n?new o(c):c}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(e,r,t){var n=[],i=e;if(t>0)for(;r>i;)n.push(i),i+=t;else if(0>t)for(;i>r;)n.push(i),i+=t;return n}function i(e,r,t){var n=[],i=e;if(t>0)for(;r>=i;)n.push(i),i+=t;else if(0>t)for(;i>=r;)n.push(i),i+=t;return n}function o(e,r,t){var n=[],i=e.clone(),o=new f(0);if(t.gt(o))for(;i.lt(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gt(r);)n.push(i),i=i.plus(t);return n}function a(e,r,t){var n=[],i=e.clone(),o=new f(0);if(t.gt(o))for(;i.lte(r);)n.push(i),i=i.plus(t);else if(t.lt(o))for(;i.gte(r);)n.push(i),i=i.plus(t);return n}function s(e){var t=e.split(":"),n=null;if("bignumber"===r.number)try{n=t.map(function(e){return new f(e)})}catch(i){return null}else{n=t.map(function(e){return Number(e)});var o=n.some(function(e){return isNaN(e)});if(o)return null}switch(n.length){case 2:return{start:n[0],end:n[1],step:1};case 3:return{start:n[0],end:n[2],step:n[1]};default:return null}}var u=t(161),f=e.type.BigNumber,c=t(9),l=(t(13),u["boolean"].isBoolean),p=u.string.isString,m=u.number.isNumber;e.range=function(){var t,u,h,g=Array.prototype.slice.call(arguments),d=!1;switch(l(g[g.length-1])&&(d=g.pop()?!0:!1),g.length){case 1:if(!p(g[0]))throw new TypeError("Two or three numbers or a single string expected in function range");var w=s(g[0]);if(!w)throw new SyntaxError('String "'+g[0]+'" is no valid range');t=w.start,u=w.end,h=w.step;break;case 2:t=g[0],u=g[1],h=1;break;case 3:t=g[0],u=g[1],h=g[2];break;case 4:throw new TypeError("Parameter includeEnd must be a boolean");default:throw new e.error.ArgumentsError("range",arguments.length,2,4)}if(!(m(t)||t instanceof f))throw new TypeError("Parameter start must be a number");if(!(m(u)||u instanceof f))throw new TypeError("Parameter end must be a number");if(!(m(h)||h instanceof f))throw new TypeError("Parameter step must be a number");if(t instanceof f||u instanceof f||h instanceof f){var y=!0;t instanceof f||(t=f.convert(t)),u instanceof f||(u=f.convert(u)),h instanceof f||(h=f.convert(h)),t instanceof f&&u instanceof f&&h instanceof f||(y=!1,t instanceof f&&(t=t.toNumber()),u instanceof f&&(u=u.toNumber()),h instanceof f&&(h=h.toNumber()))}var v=y?d?a:o:d?i:n,x=v(t,u,h);return"array"===r.matrix?x:new c(x)}}},function(e,r,t){"use strict";e.exports=function(e,r){function n(r,t,n){if(void 0!==n){if(!c(n)||1!==n.length)throw new TypeError("Single character expected as defaultValue")}else n=" ";if(1!==t.length)throw new e.error.DimensionError(t.length,1);var i=t[0];if(!l(i)||!p(i))throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(t)+")");if(r.length>i)return r.substring(0,i);if(r.lengtha;a++)o+=n;return o}return r}var i=t(161),o=e.type.BigNumber,a=t(9),s=i.array,u=i.object.clone,f=i.string,c=i.string.isString,l=i.number.isNumber,p=i.number.isInteger,m=s.isArray;e.resize=function(t,i,f){if(2!=arguments.length&&3!=arguments.length)throw new e.error.ArgumentsError("resize",arguments.length,2,3);var l=t instanceof a?!0:m(t)?!1:"array"!==r.matrix;if(t instanceof a&&(t=t.valueOf()),i instanceof a&&(i=i.valueOf()),i.length&&i[0]instanceof o&&(i=i.map(function(e){return e instanceof o?e.toNumber():e})),c(t))return n(t,i,f);if(0==i.length){for(;m(t);)t=t[0];return u(t)}m(t)||(t=[t]),t=u(t);var p=s.resize(t,i,f);return l?new a(p):p}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(9),u=n.array,f=n.number.isNumber,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit;e.size=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("size",arguments.length,1);var n="array"===r.matrix;if(f(t)||p(t)||m(t)||c(t)||null==t||t instanceof i)return n?[]:new s([]);if(l(t))return n?[t.length]:new s([t.length]);if(Array.isArray(t))return u.size(t);if(t instanceof s)return new s(t.size());throw new e.error.UnsupportedTypeError("size",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=t(9),i=r.object,o=r.array,a=Array.isArray;e.squeeze=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("squeeze",arguments.length,1);if(a(r))return o.squeeze(i.clone(r));if(r instanceof n){var t=o.squeeze(r.toArray());return a(t)?new n(t):t}return i.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var i,o;if(l(r))return i=new s(r),o=i.subset(t),o&&o.valueOf();if(r instanceof s)return r.subset(t);if(c(r))return n(r,t);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function n(r,t){if(!(t instanceof u))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);var n=r.length;f.validateIndex(t.min()[0],n),f.validateIndex(t.max()[0],n);var i=t.range(0),o="";return i.forEach(function(e){o+=r.charAt(e)}),o}function i(r,t,n,i){var a;if(l(r))return a=new s(e.clone(r)),a.subset(t,n,i),a.valueOf();if(r instanceof s)return r.clone().subset(t,n,i);if(c(r))return o(r,t,n,i);throw new e.error.UnsupportedTypeError("subset",e["typeof"](r))}function o(r,t,n,i){if(!(t instanceof u))throw new TypeError("Index expected");if(1!=t.size().length)throw new e.error.DimensionError(t.size().length,1);if(void 0!==i){if(!c(i)||1!==i.length)throw new TypeError("Single character expected as defaultValue")}else i=" ";var o=t.range(0),a=o.size()[0];if(a!=n.length)throw new e.error.DimensionError(o.size()[0],n.length);var s=r.length;f.validateIndex(t.min()[0]),f.validateIndex(t.max()[0]);for(var l=[],p=0;s>p;p++)l[p]=r.charAt(p);if(o.forEach(function(e,r){l[e]=n.charAt(r)}),l.length>s)for(p=s-1,a=l.length;a>p;p++)l[p]||(l[p]=i);return l.join("")}var a=t(161),s=t(9),u=t(8),f=a.array,c=a.string.isString,l=Array.isArray;e.subset=function(){switch(arguments.length){case 2:return r(arguments[0],arguments[1]);case 3:case 4:return i(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw new e.error.ArgumentsError("subset",arguments.length,2,4)}}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){for(var t=0,n=0;nm;m++){a=l[m]=[];for(var h=0;u>h;h++)a[h]=p(c[h][m])}return f?new n(l):l;default:throw new RangeError("Matrix must be two dimensional (size: "+o.format(t)+")")}}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(9),a=t(13),s=n.array,u=Array.isArray;e.zeros=function(e){var t=a.argsToArray(arguments),n=e instanceof o?!0:u(e)?!1:"matrix"===r.matrix;if(0==t.length)return n?new o:[];var f=!1;t=t.map(function(e){return e instanceof i?(f=!0,e.toNumber()):e});var c=[],l=f?new i(0):0;return c=s.resize(c,t,l),n?new o(c):c}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(13),a=n.number.isNumber,s=n["boolean"].isBoolean,u=(n.number.isInteger,o.isCollection);e.factorial=function p(t){var m,h,g;if(1!=arguments.length)throw new e.error.ArgumentsError("factorial",arguments.length,1);if(a(t))return t!==Number.POSITIVE_INFINITY?e.gamma(t+1):Math.sqrt(2*Math.PI);if(t instanceof i){if(!f(t))return t.isNegative()||t.isFinite()?e.gamma(t.plus(1)):n.bignumber.tau(r.precision).sqrt();if(t=t.toNumber(),tv;++v)g[v]=h=h.times(m),m=m.plus(y);return g[t]=h.times(m),new i(g[t].toPrecision(r.precision))}if(s(t)||null===t)return 1;if(u(t))return o.deepMap(t,p);throw new e.error.UnsupportedTypeError("factorial",e["typeof"](t))};var f=function(e){return e.isInteger()&&(!e.isNegative()||e.isZero())},c=[],l=[1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,87178291200,1307674368e3,20922789888e3,355687428096e3,6402373705728e3,0x1b02b9306890000,243290200817664e4]}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r["boolean"].isBoolean,s=i.isComplex,u=r.number.isNumber,f=r.number.isInteger,c=o.isCollection;e.gamma=function p(r){var t,m,h=4.7421875;if(1!=arguments.length)throw new e.error.ArgumentsError("gamma",arguments.length,1);if(u(r)){if(f(r)){if(0>=r)return isFinite(r)?1/0:0/0;if(r>171)return 1/0;for(var g=r-2,d=r-1;g>1;)d*=g,g--;return 0==d&&(d=1),d}if(.5>r)return Math.PI/(Math.sin(Math.PI*r)*p(1-r));if(r>=171.35)return 1/0;if(r>85){var w=r*r,y=w*r,v=y*r,x=v*r;return Math.sqrt(2*Math.PI/r)*Math.pow(r/Math.E,r)*(1+1/(12*r)+1/(288*w)-139/(51840*y)-571/(2488320*v)+163879/(209018880*x)+5246819/(75246796800*x*r))}--r,m=l[0];for(var b=1;b2)throw new e.error.ArgumentsError("permutations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value expected in function permutations");if(1==f)return e.factorial(r);if(2==f&&i(t)){if(!o(t)||0>t)throw new TypeError("Positive integer value expected in function permutations");if(t>r)throw new TypeError("second argument k must be less than or equal to first argument n");for(s=1,u=r-t+1;r>=u;u++)s*=u;return s}}if(r instanceof n){if(void 0===t&&a(r))return e.factorial(r);if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function permutations");if(t.gt(r))throw new TypeError("second argument k must be less than or equal to first argument n");for(s=new n(1),u=r.minus(t).plus(1);u.lte(r);u=u.plus(1))s=s.times(u);return s}throw new e.error.UnsupportedTypeError("permutations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=(t(13),r.number.isNumber),o=r.number.isInteger;e.combinations=function(r,t){var s,u,f,c,l=arguments.length;if(2!=l)throw new e.error.ArgumentsError("combinations",arguments.length,2);if(i(r)){if(!o(r)||0>r)throw new TypeError("Positive integer value enpected in function combinations");if(t>r)throw new TypeError("k must be less than or equal to n");for(s=Math.max(t,r-t),u=1,f=1;r-s>=f;f++)u=u*(s+f)/f;return u}if(r instanceof n){if(t=n.convert(t),!(t instanceof n&&a(r)&&a(t)))throw new TypeError("Positive integer value expected in function combinations");if(t.gt(r))throw new TypeError("k must be less than n in function combinations");for(s=r.minus(t),t.lt(s)&&(s=t),u=new n(1),f=new n(1),c=r.minus(s);f.lte(c);f=f.plus(1))u=u.times(s.plus(f)).dividedBy(f);return u}throw new e.error.UnsupportedTypeError("combinations",e["typeof"](r))};var a=function(e){return e.isInteger()&&e.gte(0)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.compare=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("compare",arguments.length,2);if(u(t)&&u(n))return f(t,n,r.epsilon)?0:t>n?1:-1;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?new i(t.cmp(n)):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?new i(t.cmp(n)):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value?1:t.valuen?1:n>t?-1:0;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("compare",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(t,n){if(o(t)){if(o(n)){var i=t.length;if(i!==n.length)return!1;for(var a=0;i>a;a++)if(!r(t[a],n[a]))return!1;return!0}return!1}return o(n)?!1:e.equal(t,n)}var n=t(13),i=n.isCollection,o=Array.isArray;e.deepEqual=function(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("deepEqual",arguments.length,2);return i(t)||i(n)?r(t.valueOf(),n.valueOf()):e.equal(t,n)}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.equal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("equal",arguments.length,2);if(u(t)){if(u(n))return f(t,n,r.epsilon);if(p(n))return f(t,n.re,r.epsilon)&&f(n.im,0,r.epsilon)}if(p(t)){if(u(n))return f(t.re,n,r.epsilon)&&f(t.im,0,r.epsilon);if(p(n))return f(t.re,n.re,r.epsilon)&&f(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value==n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t==n;if(c(t))return g(+t,n);if(c(n))return g(t,+n);if(null===t)return null===n;if(null===n)return null===t;if(void 0===t)return void 0===n;if(void 0===n)return void 0===t;throw new e.error.UnsupportedTypeError("equal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.larger=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("larger",arguments.length,2);if(u(t)&&u(n))return!f(t,n,r.epsilon)&&t>n;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>n;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("larger",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.largerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("largerEq",arguments.length,2);if(u(t)&&u(n))return f(t,n,r.epsilon)||t>n;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.gte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.gte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value>=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t>=n;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("largerEq",e["typeof"](t),e["typeof"](n))},e.largereq=function(){throw new Error("Function largereq is renamed to largerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smaller=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smaller",arguments.length,2);if(u(t)&&u(n))return!f(t,n,r.epsilon)&&n>t;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lt(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lt(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.valuet;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smaller",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.smallerEq=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("smallerEq",arguments.length,2);if(u(t)&&u(n))return f(t,n,r.epsilon)||n>t;if(t instanceof i)return u(n)?n=i.convert(n):(c(n)||null===n)&&(n=new i(n?1:0)),n instanceof i?t.lte(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):(c(t)||null===t)&&(t=new i(t?1:0)),t instanceof i?t.lte(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value<=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return n>=t;if(c(t)||null===t)return g(+t,n);if(c(n)||null===n)return g(t,+n);if(p(t)||p(n))throw new TypeError("No ordering relation is defined for complex numbers");throw new e.error.UnsupportedTypeError("smallerEq",e["typeof"](t),e["typeof"](n))},e.smallereq=function(){throw new Error("Function smallereq is renamed to smallerEq")}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n.number.nearlyEqual,c=n["boolean"].isBoolean,l=n.string.isString,p=o.isComplex,m=a.isUnit,h=s.isCollection;e.unequal=function g(t,n){if(2!=arguments.length)throw new e.error.ArgumentsError("unequal",arguments.length,2);if(u(t)){if(u(n))return!f(t,n,r.epsilon);if(p(n))return!f(t,n.re,r.epsilon)||!f(n.im,0,r.epsilon)}if(p(t)){if(u(n))return!f(t.re,n,r.epsilon)||!f(t.im,0,r.epsilon);if(p(n))return!f(t.re,n.re,r.epsilon)||!f(t.im,n.im,r.epsilon)}if(t instanceof i)return u(n)?n=i.convert(n):c(n)&&(n=new i(n?1:0)),n instanceof i?!t.eq(n):g(t.toNumber(),n);if(n instanceof i)return u(t)?t=i.convert(t):c(t)&&(t=new i(t?1:0)),t instanceof i?!t.eq(n):g(t,n.toNumber());if(m(t)&&m(n)){if(!t.equalBase(n))throw new Error("Cannot compare units with different base");return t.value!=n.value}if(h(t)||h(n))return s.deepMap2(t,n,g);if(l(t)||l(n))return t!=n;if(c(t))return g(+t,n);if(c(n))return g(t,+n);if(null===t)return null!==n;if(null===n)return null!==t;if(void 0===t)return void 0!==n;if(void 0===n)return void 0!==t;throw new e.error.UnsupportedTypeError("unequal",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.smaller(r,t)?r:t}function n(r){var t=void 0;if(i.deepForEach(r,function(r){(void 0===t||e.smaller(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate min of an empty array");return t}var i=(t(9),t(13)),o=i.isCollection;e.min=function(e){if(0==arguments.length)throw new SyntaxError("Function min requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){return e.larger(r,t)?r:t}function n(r){var t=void 0;if(i.deepForEach(r,function(r){(void 0===t||e.larger(r,t))&&(t=r)}),void 0===t)throw new Error("Cannot calculate max of an empty array");return t}var i=(t(9),t(13)),o=i.isCollection;e.max=function(e){if(0==arguments.length)throw new SyntaxError("Function max requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return i.reduce(arguments[0],arguments[1],r);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var n=i.reduce(r,t,e.add),o=s(r)?a(r):r.size();return e.divide(n,o[t])}function n(r){var t=0,n=0;if(i.deepForEach(r,function(r){t=e.add(t,r),n++}),0===n)throw new Error("Cannot calculate mean of an empty array");return e.divide(t,n)}var i=(t(9),t(13)),o=i.isCollection,a=t(154).size,s=Array.isArray;e.mean=function(e){if(0==arguments.length)throw new SyntaxError("Function mean requires one or more parameters (0 provided)");if(o(e)){if(1==arguments.length)return n(e);if(2==arguments.length)return r(arguments[0],arguments[1]);throw new SyntaxError("Wrong number of parameters")}return n(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=u(r);t.sort(e.compare);var o=t.length;if(0==o)throw new Error("Cannot calculate median of an empty array");if(o%2==0){var s=t[o/2-1],f=t[o/2];if(!(a(s)||s instanceof i||s instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](s));if(!(a(f)||f instanceof i||f instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](f));return e.divide(e.add(s,f),2)}var c=t[(o-1)/2];if(!(a(c)||c instanceof i||c instanceof n))throw new e.error.UnsupportedTypeError("median",e["typeof"](c));return c}var n=(t(9),t(10)),i=e.type.BigNumber,o=t(13),a=t(3).isNumber,s=o.isCollection,u=t(154).flatten;e.median=function(e){if(0==arguments.length)throw new SyntaxError("Function median requires one or more parameters (0 provided)");if(s(e)){if(1==arguments.length)return r(e.valueOf());throw 2==arguments.length?new Error("median(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(Array.prototype.slice.call(arguments))}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=void 0;if(n.deepForEach(r,function(r){t=void 0===t?r:e.multiply(t,r)}),void 0===t)throw new Error("Cannot calculate prod of an empty array");return t}var n=(t(9),t(13)),i=n.isCollection;e.prod=function(e){if(0==arguments.length)throw new SyntaxError("Function prod requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("prod(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e){"use strict";e.exports=function(e){e.std=function(){if(0==arguments.length)throw new SyntaxError("Function std requires one or more parameters (0 provided)");var r=e["var"].apply(null,arguments);return e.sqrt(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r){var t=void 0;if(n.deepForEach(r,function(r){t=void 0===t?r:e.add(t,r)}),void 0===t)throw new Error("Cannot calculate sum of an empty array");return t}var n=(t(9),t(13)),i=n.isCollection;e.sum=function(e){if(0==arguments.length)throw new SyntaxError("Function sum requires one or more parameters (0 provided)");if(i(e)){if(1==arguments.length)return r(e);throw 2==arguments.length?new Error("sum(A, dim) is not yet supported"):new SyntaxError("Wrong number of parameters")}return r(arguments)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t){var o=0,a=0;if(i.deepForEach(r,function(r){o=e.add(o,r),a++}),0===a)throw new Error("Cannot calculate var of an empty array");var s=e.divide(o,a);switch(o=0,i.deepForEach(r,function(r){var t=e.subtract(r,s);o=e.add(o,e.multiply(t,t))}),t){case"uncorrected":return e.divide(o,a);case"biased":return e.divide(o,a+1);case"unbiased":var u=o instanceof n?new n(0):0;return 1==a?u:e.divide(o,a-1);default:throw new Error('Unknown normalization "'+t+'". Choose "unbiased" (default), "uncorrected", or "biased".')}}var n=(t(9),e.type.BigNumber),i=t(13),o=i.isCollection,a=t(195).isString,s="unbiased";e["var"]=function(e,t){if(0==arguments.length)throw new SyntaxError("Function var requires one or more parameters (0 provided)"); +if(o(e)){if(1==arguments.length)return r(e,s);if(2==arguments.length){if(!a(t))throw new Error("String expected for parameter normalization");return r(e,t)}throw new SyntaxError("Wrong number of parameters")}return r(arguments,s)}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection,c=r.bignumber.arccos;e.acos=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("acos",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.acos(r):l(new i(r,0));if(u(r)){var t=new i(r.im*r.im-r.re*r.re+1,-2*r.re*r.im),p=e.sqrt(t),m=new i(p.re-r.im,p.im+r.re),h=e.log(m);return new i(1.5707963267948966-h.im,h.re)}if(f(r))return o.deepMap(r,l);if(s(r)||null===r)return Math.acos(r);if(r instanceof n)return c(r);throw new e.error.UnsupportedTypeError("acos",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection,c=r.bignumber.arcsin;e.asin=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("asin",arguments.length,1);if(a(r))return r>=-1&&1>=r?Math.asin(r):l(new i(r,0));if(u(r)){var t=r.re,p=r.im,m=new i(p*p-t*t+1,-2*t*p),h=e.sqrt(m),g=new i(h.re-p,h.im+t),d=e.log(g);return new i(d.im,-d.re)}if(f(r))return o.deepMap(r,l);if(s(r)||null===r)return Math.asin(r);if(r instanceof n)return c(r);throw new e.error.UnsupportedTypeError("asin",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=i.isComplex,f=o.isCollection,c=r.bignumber.arctan;e.atan=function l(r){if(1!=arguments.length)throw new e.error.ArgumentsError("atan",arguments.length,1);if(a(r))return Math.atan(r);if(u(r)){var t=r.re,p=r.im,m=t*t+(1-p)*(1-p),h=new i((1-p*p-t*t)/m,-2*t/m),g=e.log(h);return new i(-.5*g.im,.5*g.re)}if(f(r))return o.deepMap(r,l);if(s(r)||null===r)return Math.atan(r);if(r instanceof n)return c(r);throw new e.error.UnsupportedTypeError("atan",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(13),a=r.number.isNumber,s=r["boolean"].isBoolean,u=(i.isComplex,o.isCollection);e.atan2=function f(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("atan2",arguments.length,2);if(a(r)&&a(t))return Math.atan2(r,t);if(u(r)||u(t))return o.deepMap2(r,t,f);if(s(r)||null===r)return f(+r,t);if(s(t)||null===t)return f(r,+t);if(r instanceof n)return f(r.toNumber(),t);if(t instanceof n)return f(r,t.toNumber());throw new e.error.UnsupportedTypeError("atan2",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n["boolean"].isBoolean,c=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin;e.cos=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("cos",arguments.length,1);if(u(t))return Math.cos(t);if(c(t))return new o(Math.cos(t.re)*e.cosh(-t.im),Math.sin(t.re)*e.sinh(-t.im));if(l(t)){if(!t.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cos is no angle");return Math.cos(t.value)}if(p(t))return s.deepMap(t,h);if(f(t)||null===t)return Math.cos(t);if(t instanceof i)return m(t,r.precision,0);throw new e.error.UnsupportedTypeError("cos",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh;e.cosh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cosh",arguments.length,1);if(s(r))return(Math.exp(r)+Math.exp(-r))/2;if(f(r)){var t=Math.exp(r.re),h=Math.exp(-r.re);return new i(Math.cos(r.im)*(t+h)/2,Math.sin(r.im)*(t-h)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cosh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,0);throw new e.error.UnsupportedTypeError("cosh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.cot=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("cot",arguments.length,1);if(s(r))return 1/Math.tan(r);if(f(r)){var t=Math.exp(-4*r.im)-2*Math.exp(-2*r.im)*Math.cos(2*r.re)+1;return new i(2*Math.exp(-2*r.im)*Math.sin(2*r.re)/t,(Math.exp(-4*r.im)-1)/t)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function cot is no angle");return 1/Math.tan(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("cot",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.coth=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("coth",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t+1)/(t-1)}if(f(r)){var m=Math.exp(2*r.re),h=m*Math.cos(2*r.im),g=m*Math.sin(2*r.im),d=(h-1)*(h-1)+g*g;return new i(((h+1)*(h-1)+g*g)/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function coth is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("coth",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.csc=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csc",arguments.length,1);if(s(r))return 1/Math.sin(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))-.5*Math.cos(2*r.re);return new i(.5*Math.sin(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.cos(r.re)*(Math.exp(-r.im)-Math.exp(r.im))/t)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csc is no angle");return 1/Math.sin(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("csc",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number,u=r.number.isNumber,f=r["boolean"].isBoolean,c=i.isComplex,l=o.isUnit,p=a.isCollection;e.csch=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("csch",arguments.length,1);if(u(r))return 0==r?Number.NaN:Math.abs(2/(Math.exp(r)-Math.exp(-r)))*s.sign(r);if(c(r)){var t=Math.exp(r.re),h=Math.exp(-r.re),g=Math.cos(r.im)*(t-h),d=Math.sin(r.im)*(t+h),w=g*g+d*d;return new i(2*g/w,-2*d/w)}if(l(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function csch is no angle");return m(r.value)}if(p(r))return a.deepMap(r,m);if(f(r)||null===r)return m(r?1:0);if(r instanceof n)return m(r.toNumber());throw new e.error.UnsupportedTypeError("csch",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sec=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sec",arguments.length,1);if(s(r))return 1/Math.cos(r);if(f(r)){var t=.25*(Math.exp(-2*r.im)+Math.exp(2*r.im))+.5*Math.cos(2*r.re);return new i(.5*Math.cos(r.re)*(Math.exp(-r.im)+Math.exp(r.im))/t,.5*Math.sin(r.re)*(Math.exp(r.im)-Math.exp(-r.im))/t)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sec is no angle");return 1/Math.cos(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(+r);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sec",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection;e.sech=function p(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sech",arguments.length,1);if(s(r))return 2/(Math.exp(r)+Math.exp(-r));if(f(r)){var t=Math.exp(r.re),m=Math.exp(-r.re),h=Math.cos(r.im)*(t+m),g=Math.sin(r.im)*(t-m),d=h*h+g*g;return new i(2*h/d,-2*g/d)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sech is no angle");return p(r.value)}if(l(r))return a.deepMap(r,p);if(u(r)||null===r)return p(r?1:0);if(r instanceof n)return p(r.toNumber());throw new e.error.UnsupportedTypeError("sech",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n["boolean"].isBoolean,c=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.cos_sin;e.sin=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("sin",arguments.length,1);if(u(t))return Math.sin(t);if(c(t))return new o(Math.sin(t.re)*e.cosh(-t.im),Math.cos(t.re)*e.sinh(t.im));if(l(t)){if(!t.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sin is no angle");return Math.sin(t.value)}if(p(t))return s.deepMap(t,h);if(f(t)||null===t)return Math.sin(t);if(t instanceof i)return m(t,r.precision,1);throw new e.error.UnsupportedTypeError("sin",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection,p=r.bignumber.cosh_sinh;e.sinh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("sinh",arguments.length,1);if(s(r))return Math.abs(r)<1?r+r*r*r/6+r*r*r*r*r/120:(Math.exp(r)-Math.exp(-r))/2;if(f(r)){var t=Math.cos(r.im),h=Math.sin(r.im),g=Math.exp(r.re),d=Math.exp(-r.re);return new i(t*(g-d)/2,h*(g+d)/2)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function sinh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r,1);throw new e.error.UnsupportedTypeError("sinh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e,r){var n=t(161),i=e.type.BigNumber,o=t(6),a=t(10),s=t(13),u=n.number.isNumber,f=n["boolean"].isBoolean,c=o.isComplex,l=a.isUnit,p=s.isCollection,m=n.bignumber.tan;e.tan=function h(t){if(1!=arguments.length)throw new e.error.ArgumentsError("tan",arguments.length,1);if(u(t))return Math.tan(t);if(c(t)){var n=Math.exp(-4*t.im)+2*Math.exp(-2*t.im)*Math.cos(2*t.re)+1;return new o(2*Math.exp(-2*t.im)*Math.sin(2*t.re)/n,(1-Math.exp(-4*t.im))/n)}if(l(t)){if(!t.hasBase(a.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tan is no angle");return Math.tan(t.value)}if(p(t))return s.deepMap(t,h);if(f(t)||null===t)return Math.tan(t);if(t instanceof i)return m(t,r.precision);throw new e.error.UnsupportedTypeError("tan",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=e.type.BigNumber,i=t(6),o=t(10),a=t(13),s=r.number.isNumber,u=r["boolean"].isBoolean,f=i.isComplex,c=o.isUnit,l=a.isCollection,p=r.bignumber.tanh;e.tanh=function m(r){if(1!=arguments.length)throw new e.error.ArgumentsError("tanh",arguments.length,1);if(s(r)){var t=Math.exp(2*r);return(t-1)/(t+1)}if(f(r)){var h=Math.exp(2*r.re),g=h*Math.cos(2*r.im),d=h*Math.sin(2*r.im),w=(g+1)*(g+1)+d*d;return new i(((g-1)*(g+1)+d*d)/w,2*d/w)}if(c(r)){if(!r.hasBase(o.BASE_UNITS.ANGLE))throw new TypeError("Unit in function tanh is no angle");return m(r.value)}if(l(r))return a.deepMap(r,m);if(u(r)||null===r)return m(r?1:0);if(r instanceof n)return p(r);throw new e.error.UnsupportedTypeError("tanh",e["typeof"](r))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=t(10),i=t(13),o=r.string.isString,a=n.isUnit,s=i.isCollection;e.to=function u(r,t){if(2!=arguments.length)throw new e.error.ArgumentsError("to",arguments.length,2);if(a(r)&&(a(t)||o(t)))return r.to(t);if(s(r)||s(t))return i.deepMap2(r,t,u);throw new e.error.UnsupportedTypeError("to",e["typeof"](r),e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=r.object;e.clone=function(r){if(1!=arguments.length)throw new e.error.ArgumentsError("clone",arguments.length,1);return n.clone(r)}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){if("function"==typeof r)return e.filter(function(e){return r(e)});if(r instanceof RegExp)return e.filter(function(e){return r.test(e)});throw new TypeError("Function or RegExp expected")}var n=t(9);e.filter=function(t,i){if(2!==arguments.length)throw new e.error.ArgumentsError("filter",arguments.length,2);if(t instanceof n){var o=t.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return new n(r(t.toArray(),i))}if(Array.isArray(t))return r(t,i);throw new e.error.UnsupportedTypeError("filter",e["typeof"](t),e["typeof"](compare))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=r.string;e.format=function(r,t){var i=arguments.length;if(1!==i&&2!==i)throw new e.error.ArgumentsError("format",i,1,2);return n.format(r,t)}}},function(e,r,t){"use strict";e.exports=function(e){function r(r,t,n){(n.override||void 0===e[r])&&(n.wrap&&"function"==typeof t?(e[r]=function(){for(var r=[],n=0,i=arguments.length;i>n;n++){var o=arguments[n];r[n]=o&&o.valueOf()}return t.apply(e,r)},t&&t.transform&&(e[r].transform=t.transform)):e[r]=t,t&&t.transform&&(e.expression.transform[r]=t.transform),e.chaining.Chain.createProxy(r,t))}function n(e){return"function"==typeof e||s(e)||u(e)||f(e)||c(e)}var i=t(161),o=t(6),a=t(10),s=i.number.isNumber,u=i.string.isString,f=o.isComplex,c=a.isUnit;e["import"]=function l(i,o){var a=arguments.length;if(1!=a&&2!=a)throw new e.error.ArgumentsError("import",a,1,2);var s,f={override:o&&o.override||!1,wrap:o&&o.wrap||!1};if(u(i)){var c=t(192)(i);l(c,o)}else{if("object"!=typeof i)throw new TypeError("Object or module name expected");for(s in i)if(i.hasOwnProperty(s)){var p=i[s];n(p)?r(s,p,f):l(p,o)}}}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){return Array.isArray(n)?n.map(function(e,r){return t(e,i.concat(r))}):r(n,i,e)};return t(e,[])}var n=t(9);e.map=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("map",arguments.length,2);if(Array.isArray(t))return r(t,i);if(t instanceof n)return t.map(i);throw new e.error.UnsupportedTypeError("map",e["typeof"](t))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(161),n=r.string.isString;e.print=function(r,t,i){var o=arguments.length;if(2!=o&&3!=o)throw new e.error.ArgumentsError("print",o,2,3);if(!n(r))throw new TypeError("String expected as first parameter in function format");if(!(t instanceof Object))throw new TypeError("Object expected as second parameter in function format");return r.replace(/\$([\w\.]+)/g,function(r,o){for(var a=o.split("."),s=t[a.shift()];a.length&&void 0!==s;){var u=a.shift();s=u?s[u]:s+"."}return void 0!==s?n(s)?s:e.format(s,i):r})}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(9);e.sort=function(t,n){var i=null;if(1===arguments.length)i=e.compare;else{if(2!==arguments.length)throw new e.error.ArgumentsError("sort",arguments.length,1,2);if("function"==typeof n)i=n;else if("asc"===n)i=e.compare;else{if("desc"!==n)throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n));i=function(r,t){return-e.compare(r,t)}}}if(t instanceof r){var o=t.size();if(o.length>1)throw new Error("Only one dimensional matrices supported");return new r(t.toArray().sort(i))}if(Array.isArray(t))return t.sort(i);throw new e.error.UnsupportedTypeError("sort",e["typeof"](t),e["typeof"](n))}}},function(e,r,t){"use strict";e.exports=function(e){var r=t(315),n=t(6),i=t(9),o=t(10),a=t(8),s=t(7),u=t(11);e["typeof"]=function(t){if(1!=arguments.length)throw new e.error.ArgumentsError("typeof",arguments.length,1);var f=r.type(t);if("object"===f){if(t instanceof n)return"complex";if(t instanceof i)return"matrix";if(t instanceof o)return"unit";if(t instanceof a)return"index";if(t instanceof s)return"range";if(t instanceof u)return"help";if(t instanceof e.type.BigNumber)return"bignumber";if(t instanceof e.chaining.Chain)return"chain"}return f}}},function(e,r,t){"use strict";e.exports=function(e){function r(e,r){var t=function(n,i){Array.isArray(n)?n.forEach(function(e,r){t(e,i.concat(r))}):r(n,i,e)};t(e,[])}var n=t(9);e.forEach=function(t,i){if(2!=arguments.length)throw new e.error.ArgumentsError("forEach",arguments.length,2);if(Array.isArray(t))return r(t,i);if(t instanceof n)return t.forEach(i);throw new e.error.UnsupportedTypeError("forEach",e["typeof"](t))}}},function(e,r,t){"use strict";function n(e,t,n){var o,a,s=e.constructor,u=+(e.s<0),f=+(t.s<0);if(u){o=i(r.not(e));for(var c=0;c0;)n(l[--h],p[--g])==d&&(w=w.plus(y)),y=y.times(v);for(;g>0;)n(m,p[--g])==d&&(w=w.plus(y)),y=y.times(v);return s.config({precision:x}),0==d&&(w.s=-w.s),w}function i(e){for(var r=e.c,t=r[0]+"",n=1;n0)if(++s>f)for(s-=f;s--;u+="0");else f>s&&(u=u.slice(0,s)+"."+u.slice(s));for(var c=[0],n=0;n1&&(null==c[a+1]&&(c[a+1]=0),c[a+1]+=c[a]>>1,c[a]&=1)}return c.reverse()}function o(e,t){var n=-(t+4),i=t+8-e.e,o=25-e.e,a=Math.max(1.442695*Math.log(t+2)|5,5),s=p.constructor({precision:t}),u=new s(Math.asin(e.toNumber())+""),f=0;do{var l=r.cos_sin(u,o,1),m=c(l);l.isZero()||(l.s=u.s);var h=l.minus(e).div(m);u=u.minus(h),o=Math.min(2*o,i),u.constructor.config({precision:o})}while(2*h.e>=n&&!h.isZero()&&++f<=a);if(f==a)throw new Error("asin() failed to converge to the requested accuracy.Try with a higher precision.");return u.constructor.config({precision:t}),u.toDP(t-1)}function a(e,r){var t=e.constructor;t.config({precision:r+Math.log(r)|4});for(var n=new t(1),i=e,o=0/0,a=e.times(e),s=e,u=new t(n),f=new t(n),c=new t(n),l=3;!i.equals(o);l+=2)s=s.times(a),u=u.times(c),f=f.times(c.plus(n)),o=i,c=new t(l),i=i.plus(s.times(u).div(c.times(f)));return t.config({precision:r}),i.toDP(r-1)}function s(e){for(var r=e,t=0/0,n=e.times(e),i=e,o=!0,a=3;!r.equals(t);a+=2)i=i.times(n),t=r,o=!o,r=o?r.plus(i.div(a)):r.minus(i.div(a));return r}function u(e,r){for(var t=e.constructor.ONE,n=e,i=0/0,o=e.times(e),a=r?n:n=t,s=t,u=!0,f=r;!n.equals(i);f+=2)a=a.times(o),s=s.times(f+1).times(f+2),i=n,u=!u,n=u?n.plus(a.div(s)):n.minus(a.div(s));return n}function f(e,t,n){var i=r.pi(t+2),o=r.tau(t);if(e.abs().lte(i.toDP(e.dp())))return[e,!1];var a=e.constructor;if(e.div(i.toDP(e.dp())).toNumber()%2==0)return[new a(1^n),!0];var s=e.mod(o);return s.toDP(e.dp(),1).isZero()?[new a(1^n),!0]:(s.gt(i)&&(n?(s=s.minus(i),s.s=-s.s):s=o.minus(s)),s.constructor=a,[s,!1])}function c(e){var r=e.constructor,t=r.precision;r.config({precision:t+2});var n=r.ONE.minus(e.times(e)).sqrt();return r.config({precision:t}),n.toDP(t-1)}function l(e){var r=p.constructor({precision:e.constructor.precision}),t=new r(e);return t.constructor=r,t}var p=t(156),m=t(3).isNumber,h=(t(3).digits,t(316).memoize);r.isBigNumber=function(e){return e instanceof p},r.e=h(function(e){var r=p.constructor({precision:e});return new r(1).exp()}),r.phi=h(function(e){var r=p.constructor({precision:e});return new r(1).plus(new r(5).sqrt()).div(2)}),r.pi=h(function(e){var r=p.constructor({precision:e+4}),t=new r(4).times(s(new r(1).div(5))).minus(s(new r(1).div(239)));return r.config({precision:e}),new r(4).times(t)}),r.tau=h(function(e){var t=r.pi(e+2),n=p.constructor({precision:e});return new n(2).times(t)}),r.and=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitAnd must be integer numbers");var t=e.constructor;if(e.isNaN()||r.isNaN())return new t(0/0);if(e.isZero()||r.eq(-1)||e.eq(r))return e;if(r.isZero()||e.eq(-1))return r;if(!e.isFinite()||!r.isFinite()){if(!e.isFinite()&&!r.isFinite())return e.isNegative()==r.isNegtive()?e:new t(0);if(!e.isFinite())return r.isNegative()?e:e.isNegative()?new t(0):r;if(!r.isFinite())return e.isNegative()?r:r.isNegative()?new t(0):e}return n(e,r,function(e,r){return e&r})},r.leftShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function leftShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:e.isFinite()||r.isFinite()?e.times(r.lt(55)?Math.pow(2,r.toNumber())+"":new t(2).pow(r)):new t(0/0)},r.not=function(e){if(e.isFinite()&&!e.isInteger())throw new Error("Parameter in function bitNot must be integer numbers");var r=e.constructor,t=r.precision;r.config({precision:1e9});var e=e.plus(r.ONE);return e.s=-e.s||null,r.config({precision:t}),e},r.or=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function bitOr must be integer numbers");var t=e.constructor;if(e.isNaN()||r.isNaN())return new t(0/0);var i=new t(-1);return e.isZero()||r.eq(i)||e.eq(r)?r:r.isZero()||e.eq(i)?e:e.isFinite()&&r.isFinite()?n(e,r,function(e,r){return e|r}):!e.isFinite()&&!e.isNegative()&&r.isNegative()||e.isNegative()&&!r.isNegative()&&!r.isFinite()?i:e.isNegative()&&r.isNegative()?e.isFinite()?e:r:e.isFinite()?r:e},r.rightShift=function(e,r){if(e.isFinite()&&!e.isInteger()||r.isFinite()&&!r.isInteger())throw new Error("Parameters in function rightArithShift must be integer numbers");var t=e.constructor;return e.isNaN()||r.isNaN()||r.isNegative()&&!r.isZero()?new t(0/0):e.isZero()||r.isZero()?e:r.isFinite()?r.lt(55)?e.div(Math.pow(2,r.toNumber())+"").floor():e.div(new t(2).pow(r)).floor():new t(e.isNegative()?-1:e.isFinite()?0:0/0)},r.xor=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error("Parameters in function bitXor must be integer numbers");var i=e.constructor;if(e.isNaN()||t.isNaN())return new i(0/0);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new i(0);var o=new i(-1);return e.eq(o)?r.not(t):t.eq(o)?r.not(e):e.isFinite()&&t.isFinite()?n(e,t,function(e,r){return e^r}):e.isFinite()||t.isFinite()?new i(e.isNegative()==t.isNegative()?1/0:-1/0):o},r.arccos=function(e){var t=e.constructor,n=t.precision;if(e.abs().gt(t.ONE))throw new Error("acos() only has non-complex values for |x| <= 1.");if(e.eq(-1))return r.pi(n);t.config({precision:n+4});var i=r.arctan(t.ONE.minus(e.times(e)).sqrt().div(e.plus(t.ONE))).times(2);return t.config({precision:n}),i.toDP(n-1)},r.arcsin=function(e){var t=e.constructor;if(e.isNaN())return new t(0/0);if(e.isZero())return new t(0);var n=e.abs();if(n.gt(1))throw new Error("asin() only has non-complex values for |x| <= 1.");var i=t.precision;if(n.gt(.8)){t.config({precision:i+4});var s=e.s,u=r.pi(i+4).div(2);return e=u.minus(r.arcsin(t.ONE.minus(e.times(e)).sqrt())),e.s=s,e.constructor=t,t.config({precision:i}),e.toDP(i-1)}var f;(f=n.gt(.58))&&(t.config({precision:i+8}),e=e.div(new t(2).sqrt().times(t.ONE.minus(e.times(e)).sqrt().plus(t.ONE).sqrt())),t.config({precision:i}));var c=60>=i||e.dp()<=Math.log(i)&&e.lt(.05)?a(e,i):o(e,i);return f?c.times(2):c},r.arctan=function(e){var t=e.constructor;if(e.isNaN())return new t(0/0);if(e.isZero())return new t(0);var n=t.precision;if(!e.isFinite()){var i=r.pi(n+2).div(2).toDP(n-1);return i.s=e.s,i}var o=e.abs();if(o.lte(.875)){t.config({precision:n+4});var a=s(e);return a.constructor=t,t.config({precision:n}),a.toDP(t.precision-1)}if(o.gte(1.143)){t.config({precision:n+4});var i=r.pi(n+4).div(2),a=i.minus(s(t.ONE.div(o)));return a.s=e.s,a.constructor=t,t.config({precision:n}),a.toDP(t.precision-1)}return t.config({precision:n+4}),e=e.div(e.times(e).plus(1).sqrt()),t.config({precision:n}),r.arcsin(e)},r.cos_sin=function(e,r,t){var n;if(e.isNaN()||!e.isFinite())return new(n=p.constructor({precision:r}))(0/0);var i=l(e);n=i.constructor;var o=i.isNegative();o&&(i.s=-i.s);var a=r+(0|Math.log(r))+3;if(n.config({precision:a}),i=f(i,a,t),i[1])return n.config({precision:r}),i[0];var s;if(i=i[0],t){s=u(i.div(3125),t),n.config({precision:Math.min(n.precision,r+15)});for(var c=new n(5),m=new n(16),h=new n(20),g=0;5>g;++g){var d=s.times(s),w=d.times(s),y=w.times(d);s=m.times(y).minus(h.times(w)).plus(c.times(s))}o&&(s.s=-s.s)}else{var v,x;i.abs().lt(n.ONE)?(v=64,x=3):(v=256,x=4),s=u(i.div(v),t),n.config({precision:Math.min(n.precision,r+8)});for(var b=new n(8);x>0;--x){var d=s.times(s),E=d.times(d);s=b.times(E.minus(d)).plus(n.ONE)}}return s.constructor.config({precision:r}),s.toDP(r-1)},r.tan=function(e,t){var n=p.constructor({precision:t});if(e.isNaN())return new n(0/0);var i=r.pi(t+2),o=i.div(2).toDP(t-1);i=i.toDP(t-1);var a=f(e,t,1)[0];if(a.abs().eq(i))return new n(1/0);var s=r.cos_sin(a,t+2,1),u=c(s);s.constructor.config({precision:t}),s=s.toDP(t),u=u.toDP(t),a.eq(e)?a.gt(o)&&(u.s=-u.s):i.minus(a.abs()).gt(o)&&(u.s=-u.s),s.constructor.config({precision:t+2});var l=s.div(u);return new n(l.toPrecision(t))},r.cosh_sinh=function(e,r){var t=e.constructor;if(e.isNaN())return new t(0/0);if(!e.isFinite())return new t(r?e:1/0);var n=t.precision;t.config({precision:n+4});var i=e.exp();return i=r?i.minus(t.ONE.div(i)):i.plus(t.ONE.div(i)),i=i.div(2),t.config({precision:n}),new t(i.toPrecision(n))},r.tanh=function(e){var r=e.constructor;if(e.isNaN())return new r(0/0);if(!e.isFinite())return new r(e.s);var t=r.precision;r.config({precision:t+4});var n=e.exp(),i=r.ONE.div(n),o=n.minus(i);return o=o.div(n.plus(i)),r.config({precision:t}),o.toDP(t-1)},r.format=function(e,t){if("function"==typeof t)return t(e);if(!e.isFinite())return e.isNaN()?"NaN":e.gt(0)?"Infinity":"-Infinity";var n="auto",i=void 0;switch(void 0!==t&&(t.notation&&(n=t.notation),m(t)?i=t:t.precision&&(i=t.precision)),n){case"fixed":return r.toFixed(e,i);case"exponential":return r.toExponential(e,i);case"auto":var o=.001,a=1e5;t&&t.exponential&&(void 0!==t.exponential.lower&&(o=t.exponential.lower),void 0!==t.exponential.upper&&(a=t.exponential.upper));{({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos})}if(e.constructor.config({toExpNeg:Math.round(Math.log(o)/Math.LN10),toExpPos:Math.round(Math.log(a)/Math.LN10)}),e.isZero())return"0";var s,u=e.abs();return s=u.gte(o)&&u.lt(a)?e.toSignificantDigits(i).toFixed():r.toExponential(e,i),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],r=arguments[4];return"."!==e?e+r:r});default:throw new Error('Unknown notation "'+n+'". Choose "auto", "exponential", or "fixed".')}},r.toExponential=function(e,r){return void 0!==r?e.toExponential(r-1):e.toExponential()},r.toFixed=function(e,r){return e.toFixed(r||0)}},function(e,r,t){"use strict";function n(e){for(var r=[];m(e);)r.push(e.length),e=e[0];return r}function i(e,r,t){var n,o=e.length;if(o!=r[t])throw new l(o,r[t]);if(tn;n++){var s=e[n];if(!m(s))throw new l(r.length-1,r.length,"<");i(e[n],r,a)}}else for(n=0;o>n;n++)if(m(e[n]))throw new l(r.length+1,r.length,">")}function o(e,t,n,i){var a,s,u=e.length,f=t[n],l=Math.min(u,f);if(e.length=f,na;a++)s=e[a],m(s)||(s=[s],e[a]=s),o(s,t,p,i);for(a=l;f>a;a++)s=[],e[a]=s,o(s,t,p,i)}else{for(a=0;l>a;a++)for(;m(e[a]);)e[a]=e[a][0];if(i!==r.UNINITIALIZED)for(a=l;f>a;a++)e[a]=c.clone(i)}}function a(e,r,t){var n,i;if(r>t){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=a(e[n],r,o)}else for(;m(e);)e=e[0];return e}function s(e,r,t){var n,i;if(m(e)){var o=t+1;for(n=0,i=e.length;i>n;n++)e[n]=s(e[n],r,o)}else for(var a=t;r>a;a++)e=[e];return e}var u=t(3),f=t(195),c=t(2),l=(t(315),t(158)),p=t(159),m=Array.isArray;r.size=function(e){var t=n(e);return r.validate(e,t),t},r.validate=function(e,r){var t=0==r.length;if(t){if(m(e))throw new l(e.length,0)}else i(e,r,0)},r.validateIndex=function(e,r){if(!u.isNumber(e)||!u.isInteger(e))throw new TypeError("Index must be an integer (value: "+e+")");if(0>e)throw new p(e);if(void 0!==r&&e>=r)throw new p(e,r)},r.UNINITIALIZED={},r.resize=function(e,r,t){if(!m(e)||!m(r))throw new TypeError("Array expected");if(0===r.length)throw new Error("Resizing to scalar is not supported");r.forEach(function(e){if(!u.isNumber(e)||!u.isInteger(e)||0>e)throw new TypeError("Invalid size, must contain positive integers (size: "+f.format(r)+")")});var n=void 0!==t?t:0;return o(e,r,0,n),e},r.squeeze=function(e,t){for(var n=t||r.size(e);m(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return ia;a++)e=[e],o.unshift(1);for(e=s(e,t,0);o.lengthi;i++)n=n.concat.apply(n,r[i]);r=n}return r},r.argsToArray=function(e){for(var r=[],t=0,n=e.length;n>t;t++)r[t]=e[t];return r},r.isArray=m},function(e){e.exports="1.3.0"},function(e,r,t){var n;!function(i){"use strict";function o(e){for(var r,t,n=1,i=e.length,o=e[0]+"";i>n;n++){for(r=e[n]+"",t=T-r.length;t--;)r="0"+r;o+=r}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function a(e,r,t,n){var i,o,a,s,u;for(o=1,a=e[0];a>=10;a/=10,o++);return a=r-o,0>a?(a+=T,i=0):(i=Math.ceil((a+1)/T),a%=T),o=N(10,T-a),u=e[i]%o|0,null==n?3>a?(0==a?u=u/100|0:1==a&&(u=u/10|0),s=4>t&&99999==u||t>3&&49999==u||5e4==u||0==u):s=(4>t&&u+1==o||t>3&&u+1==o/2)&&(e[i+1]/o/100|0)==N(10,a-2)-1||(u==o/2||0==u)&&0==(e[i+1]/o/100|0):4>a?(0==a?u=u/1e3|0:1==a?u=u/100|0:2==a&&(u=u/10|0),s=(n||4>t)&&9999==u||!n&&t>3&&4999==u):s=((n||4>t)&&u+1==o||!n&&t>3&&u+1==o/2)&&(e[i+1]/o/1e3|0)==N(10,a-3)-1,s}function s(e,r,t){var n=e.constructor;return null==r||((y=0>r||r>8)||0!==r&&(n.errors?parseInt:parseFloat)(r)!=r)&&!p(n,"rounding mode",r,t,0)?n.rounding:0|r}function u(e,r,t,n){var i=e.constructor;return!(y=(n||0)>r||r>=q+1)&&(0===r||(i.errors?parseInt:parseFloat)(r)==r)||p(i,"argument",r,t,0)}function f(e,r){var t,n,i,s,u,f,c,l=0,p=0,m=0,h=e.constructor,d=h.ONE,w=h.rounding,y=h.precision;if(!e.c||!e.c[0]||e.e>17)return new h(e.c?e.c[0]?e.s<0?0:1/0:d:e.s?e.s<0?0:e:0/0);for(null==r?(x=!1,u=y):u=r,c=new h(.03125);e.e>-2;)e=e.times(c),m+=5;for(n=Math.log(N(2,m))/Math.LN10*2+5|0,u+=n,t=s=f=new h(d),h.precision=u;;){if(s=g(s.times(e),u,1),t=t.times(++p),c=f.plus(z(s,t,u,1)),o(c.c).slice(0,u)===o(f.c).slice(0,u)){for(i=m;i--;)f=g(f.times(f),u,1);if(null!=r)return h.precision=y,f;if(!(3>l&&a(f.c,u-n,w,l)))return g(f,h.precision=y,w,x=!0);h.precision=u+=10,t=s=c=new h(d),p=0,l++}f=c}}function c(e,r,t,n){var i,a,s=e.constructor,u=(e=new s(e)).e;if(null==r?t=0:(g(e,++r,t),t=n?r:r+e.e-u),u=e.e,i=o(e.c),1==n||2==n&&(u>=r||u<=s.toExpNeg)){for(;i.length1&&(i=i.charAt(0)+"."+i.slice(1)),i+=(0>u?"e":"e+")+u}else{if(n=i.length,0>u){for(a=t-n;++u;i="0"+i);i="0."+i}else if(++u>n){for(a=t-u,u-=n;u--;i+="0");a>0&&(i+=".")}else a=t-n,n>u?i=i.slice(0,u)+"."+i.slice(u):a>0&&(i+=".");if(a>0)for(;a--;i+="0");}return e.s<0&&e.c[0]?"-"+i:i}function l(e){var r=e.length-1,t=r*T+1;if(r=e[r]){for(;r%10==0;r/=10,t--);for(r=e[0];r>=10;r/=10,t++);}return t}function p(e,r,t,n,i){if(e.errors){var o=new Error((n||["new Decimal","cmp","div","eq","gt","gte","lt","lte","minus","mod","plus","times","toFraction","pow","random","log","sqrt","toNearest","divToInt"][b?0>b?-b:b:0>1/b?1:0])+"() "+(["number type has more than 15 significant digits","LN10 out of digits"][r]||r+([y?" out of range":" not an integer"," not a boolean or binary digit"][i]||""))+": "+t); +throw o.name="Decimal Error",y=b=0,o}}function m(e,r,t){var n=new e(e.ONE);for(x=!1;1&t&&(n=n.times(r)),t>>=1,t;)r=r.times(r);return x=!0,n}function h(e,r){var t,n,i,s,u,f,c,l,m,d,w,y=1,v=10,b=e,E=b.c,N=b.constructor,A=N.ONE,M=N.rounding,T=N.precision;if(b.s<0||!E||!E[0]||!b.e&&1==E[0]&&1==E.length)return new N(E&&!E[0]?-1/0:1!=b.s?0/0:E?0:b);if(null==r?(x=!1,c=T):c=r,N.precision=c+=v,t=o(E),n=t.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new N(n+"."+t.slice(1)),c+2>B.length&&p(N,1,c+2,"ln"),b=h(b,c-v).plus(new N(B.slice(0,c+2)).times(s+"")),N.precision=T,null==r?g(b,T,M,x=!0):b;for(;7>n&&1!=n||1==n&&t.charAt(1)>3;)b=b.times(e),t=o(b.c),n=t.charAt(0),y++;for(s=b.e,n>1?(b=new N("0."+t),s++):b=new N(n+"."+t.slice(1)),d=b,l=u=b=z(b.minus(A),b.plus(A),c,1),w=g(b.times(b),c,1),i=3;;){if(u=g(u.times(w),c,1),m=l.plus(z(u,new N(i),c,1)),o(m.c).slice(0,c)===o(l.c).slice(0,c)){if(l=l.times(2),0!==s&&(c+2>B.length&&p(N,1,c+2,"ln"),l=l.plus(new N(B.slice(0,c+2)).times(s+""))),l=z(l,new N(y),c,1),null!=r)return N.precision=T,l;if(!a(l.c,c-v,M,f))return g(l,N.precision=T,M,x=!0);N.precision=c+=v,m=u=b=z(d.minus(A),d.plus(A),c,1),w=g(b.times(b),c,1),i=f=1}l=m,i+=2}}function g(e,r,t,n){var i,o,a,s,u,f,c,l,p=e.constructor;e:if(null!=r){if(!(c=e.c))return e;for(i=1,s=c[0];s>=10;s/=10,i++);if(o=r-i,0>o)o+=T,a=r,u=c[l=0],f=u/N(10,i-a-1)%10|0;else if(l=Math.ceil((o+1)/T),l>=c.length){if(!n)break e;for(;c.length<=l;c.push(0));u=f=0,i=1,o%=T,a=o-T+1}else{for(u=s=c[l],i=1;s>=10;s/=10,i++);o%=T,a=o-T+i,f=0>a?0:E(u/N(10,i-a-1)%10)}if(n=n||0>r||null!=c[l+1]||(0>a?u:u%N(10,i-a-1)),n=4>t?(f||n)&&(0==t||t==(e.s<0?3:2)):f>5||5==f&&(4==t||n||6==t&&(o>0?a>0?u/N(10,i-a):0:c[l-1])%10&1||t==(e.s<0?8:7)),1>r||!c[0])return c.length=0,n?(r-=e.e+1,c[0]=N(10,r%T),e.e=-r||0):c[0]=e.e=0,e;if(0==o?(c.length=l,s=1,l--):(c.length=l+1,s=N(10,T-o),c[l]=a>0?(u/N(10,i-a)%N(10,a)|0)*s:0),n)for(;;){if(0==l){for(o=1,a=c[0];a>=10;a/=10,o++);for(a=c[0]+=s,s=1;a>=10;a/=10,s++);o!=s&&(e.e++,c[0]==M&&(c[0]=1));break}if(c[l]+=s,c[l]!=M)break;c[l--]=0,s=1}for(o=c.length;0===c[--o];c.pop());}return x&&(e.e>p.maxE?e.c=e.e=null:e.ea,!i||!o)return u==f?0:!i^t?1:-1;if(u!=f)return u>f^t?1:-1;for(a=-1,s=(u=i.length)<(f=o.length)?u:f;++ao[a]^t?1:-1;return u==f?0:u>f^t?1:-1},O.decimalPlaces=O.dp=function(){var e,r,t=null;if(e=this.c){if(t=((r=e.length-1)-E(this.e/T))*T,r=e[r])for(;r%10==0;r/=10,t--);0>t&&(t=0)}return t},O.dividedBy=O.div=function(e,r){return b=2,z(this,new this.constructor(e,r))},O.dividedToIntegerBy=O.divToInt=function(e,r){var t=this,n=t.constructor;return b=18,g(z(t,new n(e,r),0,1,1),n.precision,n.rounding)},O.equals=O.eq=function(e,r){return b=3,0===this.cmp(e,r)},O.exponential=O.exp=function(){return f(this)},O.floor=function(){return g(new this.constructor(this),this.e+1,3)},O.greaterThan=O.gt=function(e,r){return b=4,this.cmp(e,r)>0},O.greaterThanOrEqualTo=O.gte=function(e,r){return b=5,r=this.cmp(e,r),1==r||0===r},O.isFinite=function(){return!!this.c},O.isInteger=O.isInt=function(){return!!this.c&&E(this.e/T)>this.c.length-2},O.isNaN=function(){return!this.s},O.isNegative=O.isNeg=function(){return this.s<0},O.isZero=function(){return!!this.c&&0==this.c[0]},O.lessThan=O.lt=function(e,r){return b=6,this.cmp(e,r)<0},O.lessThanOrEqualTo=O.lte=function(e,r){return b=7,r=this.cmp(e,r),-1==r||0===r},O.logarithm=O.log=function(e,r){var t,n,i,s,u,f,c,l,m,d=this,w=d.constructor,y=w.precision,v=w.rounding,E=5;if(null==e)e=new w(10),t=!0;else{if(b=15,e=new w(e,r),n=e.c,e.s<0||!n||!n[0]||!e.e&&1==n[0]&&1==n.length)return new w(0/0);t=e.eq(10)}if(n=d.c,d.s<0||!n||!n[0]||!d.e&&1==n[0]&&1==n.length)return new w(n&&!n[0]?-1/0:1!=d.s?0/0:n?0:1/0);if(u=t&&(s=n[0],n.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),x=!1,c=y+E,l=c+10,f=h(d,c),t?(l>B.length&&p(w,1,l,"log"),i=new w(B.slice(0,l))):i=h(e,c),m=z(f,i,c,1),a(m.c,s=y,v))do if(c+=10,f=h(d,c),t?(l=c+10,l>B.length&&p(w,1,l,"log"),i=new w(B.slice(0,l))):i=h(e,c),m=z(f,i,c,1),!u){+o(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(a(m.c,s+=10,v));return x=!0,g(m,y,v)},O.minus=function(e,r){var t,n,i,o,a=this,s=a.constructor,u=a.s;if(b=8,e=new s(e,r),r=e.s,!u||!r)return new s(0/0);if(u!=r)return e.s=-r,a.plus(e);var f=a.c,c=e.c,l=E(e.e/T),p=E(a.e/T),m=s.precision,h=s.rounding;if(!p||!l){if(!f||!c)return f?(e.s=-r,e):new s(c?a:0/0);if(!f[0]||!c[0])return a=c[0]?(e.s=-r,e):new s(f[0]?a:3==h?-0:0),x?g(a,m,h):a}if(f=f.slice(),n=f.length,u=p-l){for((o=0>u)?(u=-u,t=f,n=c.length):(l=p,t=c),(p=Math.ceil(m/T))>n&&(n=p),u>(n+=2)&&(u=n,t.length=1),t.reverse(),r=u;r--;t.push(0));t.reverse()}else for((o=n<(i=c.length))&&(i=n),u=r=0;i>r;r++)if(f[r]!=c[r]){o=f[r]0)for(;r--;f[i++]=0);for(p=M-1,r=c.length;r>u;){if(f[--r]=10;r/=10,u++);return e.e=u+l*T-1,x?g(e,m,h):e},O.modulo=O.mod=function(e,r){var t,n,i=this,o=i.constructor,a=o.modulo;return b=9,e=new o(e,r),r=e.s,t=!i.c||!r||e.c&&!e.c[0],t||!e.c||i.c&&!i.c[0]?t?new o(0/0):g(new o(i),o.precision,o.rounding):(x=!1,9==a?(e.s=1,n=z(i,e,0,3,1),e.s=r,n.s*=r):n=z(i,e,0,a,1),n=n.times(e),x=!0,i.minus(n))},O.naturalLogarithm=O.ln=function(){return h(this)},O.negated=O.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},O.plus=function(e,r){var t,n=this,i=n.constructor,o=n.s;if(b=10,e=new i(e,r),r=e.s,!o||!r)return new i(0/0);if(o!=r)return e.s=-r,n.minus(e);var a=n.c,s=e.c,u=E(e.e/T),f=E(n.e/T),c=i.precision,l=i.rounding;if(!f||!u){if(!a||!s)return new i(o/0);if(!a[0]||!s[0])return n=s[0]?e:new i(a[0]?n:0*o),x?g(n,c,l):n}if(a=a.slice(),o=f-u){for(0>o?(o=-o,t=a,r=s.length):(u=f,t=s,r=a.length),(f=Math.ceil(c/T))>r&&(r=f),o>++r&&(o=r,t.length=1),t.reverse();o--;t.push(0));t.reverse()}for(a.length-s.length<0&&(t=s,s=a,a=t),o=s.length,r=0,f=M;o;a[o]%=f)r=(a[--o]=a[o]+s[o]+r)/f|0;for(r&&(a.unshift(r),++u),o=a.length;0==a[--o];a.pop());for(e.c=a,o=1,r=a[0];r>=10;r/=10,o++);return e.e=o+u*T-1,x?g(e,c,l):e},O.precision=O.sd=function(e){var r=null,t=this;return e!=r&&e!==!!e&&1!==e&&0!==e&&p(t.constructor,"argument",e,"precision",1),t.c&&(r=l(t.c),e&&t.e+1>r&&(r=t.e+1)),r},O.round=function(){var e=this,r=e.constructor;return g(new r(e),e.e+1,r.rounding)},O.squareRoot=O.sqrt=function(){var e,r,t,n,i,a,s=this,u=s.c,f=s.s,c=s.e,l=s.constructor,p=new l(.5);if(1!==f||!u||!u[0])return new l(!f||0>f&&(!u||u[0])?0/0:u?s:1/0);for(x=!1,f=Math.sqrt(+s),0==f||f==1/0?(r=o(u),(r.length+c)%2==0&&(r+="0"),f=Math.sqrt(r),c=E((c+1)/2)-(0>c||c%2),f==1/0?r="1e"+c:(r=f.toExponential(),r=r.slice(0,r.indexOf("e")+1)+c),n=new l(r)):n=new l(f.toString()),t=(c=l.precision)+3;;)if(a=n,n=p.times(a.plus(z(s,a,t+2,1))),o(a.c).slice(0,t)===(r=o(n.c)).slice(0,t)){if(r=r.slice(t-3,t+1),"9999"!=r&&(i||"4999"!=r)){(!+r||!+r.slice(1)&&"5"==r.charAt(0))&&(g(n,c+1,1),e=!n.times(n).eq(s));break}if(!i&&(g(a,c+1,0),a.times(a).eq(s))){n=a;break}t+=4,i=1}return x=!0,g(n,c,l.rounding,e)},O.times=function(e,r){var t,n,i=this,o=i.constructor,a=i.c,s=(b=11,e=new o(e,r),e.c),u=E(i.e/T),f=E(e.e/T),c=i.s;if(r=e.s,e.s=c==r?1:-1,!((u||a&&a[0])&&(f||s&&s[0])))return new o(!c||!r||a&&!a[0]&&!s||s&&!s[0]&&!a?0/0:a&&s?0*e.s:e.s/0);for(n=u+f,c=a.length,r=s.length,r>c&&(t=a,a=s,s=t,f=c,c=r,r=f),f=c+r,t=[];f--;t.push(0));for(u=r-1;u>-1;u--){for(r=0,f=c+u;f>u;)r=t[f]+s[u]*a[f-u-1]+r,t[f--]=r%M|0,r=r/M|0;t[f]=(t[f]+r)%M|0}for(r?++n:t[0]||t.shift(),f=t.length;!t[--f];t.pop());for(e.c=t,c=1,r=t[0];r>=10;r/=10,c++);return e.e=c+n*T-1,x?g(e,o.precision,o.rounding):e},O.toDecimalPlaces=O.toDP=function(e,r){var t=this;return t=new t.constructor(t),null!=e&&u(t,e,"toDP")?g(t,(0|e)+t.e+1,s(t,r,"toDP")):t},O.toExponential=function(e,r){var t=this;return t.c?c(t,null!=e&&u(t,e,"toExponential")?0|e:null,null!=e&&s(t,r,"toExponential"),1):t.toString()},O.toFixed=function(e,r){var t,n=this,i=n.constructor,o=i.toExpNeg,a=i.toExpPos;return null!=e&&(e=u(n,e,t="toFixed")?n.e+(0|e):null,r=s(n,r,t)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&n.c?(t=c(n,e,r),n.s<0&&n.c&&(n.c[0]?t.indexOf("-")<0&&(t="-"+t):t=t.replace("-",""))):t=n.toString(),i.toExpNeg=o,i.toExpPos=a,t},O.toFormat=function(e,r){var t=this;if(!t.c)return t.toString();var n,i=t.s<0,o=t.constructor.format,a=o.groupSeparator,s=+o.groupSize,u=+o.secondaryGroupSize,f=t.toFixed(e,r).split("."),c=f[0],l=f[1],p=i?c.slice(1):c,m=p.length;if(u&&(n=s,s=u,m-=u=n),s>0&&m>0){for(n=m%s||s,c=p.substr(0,n);m>n;n+=s)c+=a+p.substr(n,s);u>0&&(c+=a+p.slice(n)),i&&(c="-"+c)}return l?c+o.decimalSeparator+((u=+o.fractionGroupSize)?l.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+o.fractionGroupSeparator):l):c},O.toFraction=function(e){var r,t,n,i,a,s,u,f,c=this,m=c.constructor,h=r=new m(m.ONE),g=s=new m(0),d=c.c,w=new m(g);if(!d)return c.toString();for(n=w.e=l(d)-c.e-1,w.c[0]=N(10,(u=n%T)<0?T+u:u),(null==e||(!(b=12,a=new m(e)).s||(y=a.cmp(h)<0||!a.c)||m.errors&&E(a.e/T)0)&&(e=n>0?w:h),x=!1,a=new m(o(d)),u=m.precision,m.precision=n=d.length*T*2;f=z(a,w,0,1,1),t=r.plus(f.times(g)),1!=t.cmp(e);)r=g,g=t,h=s.plus(f.times(t=h)),s=t,w=a.minus(f.times(t=w)),a=t;return t=z(e.minus(r),g,0,1,1),s=s.plus(t.times(h)),r=r.plus(t.times(g)),s.s=h.s=c.s,i=z(h,g,n,1).minus(c).abs().cmp(z(s,r,n,1).minus(c).abs())<1?[h+"",g+""]:[s+"",r+""],x=!0,m.precision=u,i},O.toNearest=function(e,r){var t=this,n=t.constructor;return t=new n(t),null==e?(e=new n(n.ONE),r=n.rounding):(b=17,e=new n(e),r=s(t,r,"toNearest")),e.c?t.c&&(e.c[0]?(x=!1,t=z(t,e,0,4>r?[4,5,7,8][r]:r,1).times(e),x=!0,g(t)):t.c=[t.e=0]):t.s&&(e.s&&(e.s=t.s),t=e),t},O.toNumber=function(){var e=this;return+e||(e.s?0*e.s:0/0)},O.toPower=O.pow=function(e,r){var t,n,i,s,u=this,c=u.constructor,l=u.s,p=(b=13,+(e=new c(e,r))),d=0>p?-p:p,w=c.precision,y=c.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new c(N(i?0*l:+u,p));if(u=new c(u),t=u.c.length,!u.e&&u.c[0]==u.s&&1==t)return u;if(r=e.c.length-1,e.e||e.c[0]!=e.s||r)if(n=E(e.e/T),i=n>=r,!i&&0>l)s=new c(0/0);else{if(i&&U>t*T*d){if(s=m(c,u,d),e.s<0)return c.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(n,r)]?-1:1,r=N(+u,p),n=0!=r&&isFinite(r)?new c(r+"").e:E(p*(Math.log("0."+o(u.c))/Math.LN10+u.e+1)),n>c.maxE+1||n0?l/0:0);x=!1,c.rounding=u.s=1,d=Math.min(12,(n+"").length),s=f(e.times(h(u,w+d)),w),s=g(s,w+5,1),a(s.c,w,y)&&(n=w+10,s=g(f(e.times(h(u,n+d)),n),n+5,1),+o(s.c).slice(w+1,w+15)+1==1e14&&(s=g(s,w+1,0))),s.s=l,x=!0,c.rounding=y}s=g(s,w,y)}else s=g(u,w,y);return s},O.toPrecision=function(e,r){var t=this;return null!=e&&u(t,e,"toPrecision",1)&&t.c?c(t,0|--e,s(t,r,"toPrecision"),2):t.toString()},O.toSignificantDigits=O.toSD=function(e,r){var t=this,n=t.constructor;return t=new n(t),null!=e&&u(t,e,"toSD",1)?g(t,0|e,s(t,r,"toSD")):g(t,n.precision,n.rounding)},O.toString=function(e){var r,t,n,i=this,a=i.constructor,s=i.e;if(null===s)t=i.s?"Infinity":"NaN";else{if(e===r&&(s<=a.toExpNeg||s>=a.toExpPos))return c(i,null,a.rounding,1);if(t=o(i.c),0>s){for(;++s;t="0"+t);t="0."+t}else if(n=t.length,s>0)if(++s>n)for(s-=n;s--;t+="0");else n>s&&(t=t.slice(0,s)+"."+t.slice(s));else if(r=t.charAt(0),n>1)t=r+"."+t.slice(1);else if("0"==r)return r;if(null!=e)if((y=!(e>=2&&65>e))||e!=(0|e)&&a.errors)p(a,"base",e,"toString",0);else if(t=d(a,t,0|e,10,i.s),"0"==t)return t}return i.s<0?"-"+t:t},O.truncated=O.trunc=function(){return g(new this.constructor(this),this.e+1,1)},O.valueOf=O.toJSON=function(){return this.toString()},d=function(){function e(e,r,t){for(var n,i,o=[0],a=0,s=e.length;s>a;){for(i=o.length;i--;o[i]*=r);for(o[n=0]+=S.indexOf(e.charAt(a++));nt-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/t|0,o[n]%=t)}return o.reverse()}return function(r,t,n,i,o){var a,s,u,f,c,l,p=t.indexOf("."),h=r.precision,g=r.rounding;for(37>i&&(t=t.toLowerCase()),p>=0&&(t=t.replace(".",""),l=new r(i),f=m(r,l,t.length-p),l.c=e(f.toFixed(),10,n),l.e=l.c.length),c=e(t,i,n),a=s=c.length;0==c[--s];c.pop());if(!c[0])return"0";if(0>p?a--:(f.c=c,f.e=a,f.s=o,f=z(f,l,h,g,0,n),c=f.c,u=f.r,a=f.e),p=c[h],s=n/2,u=u||null!=c[h+1],4>g?(null!=p||u)&&(0==g||g==(f.s<0?3:2)):p>s||p==s&&(4==g||u||6==g&&1&c[h-1]||g==(f.s<0?8:7)))for(c.length=h,--n;++c[--h]>n;)c[h]=0,h||(++a,c.unshift(1));else c.length=h;for(s=c.length;!c[--s];);for(p=0,t="";s>=p;t+=S.charAt(c[p++]));if(0>a){for(;++a;t="0"+t);t="0."+t}else if(p=t.length,++a>p)for(a-=p;a--;t+="0");else p>a&&(t=t.slice(0,a)+"."+t.slice(a));return t}}();var z=function(){function e(e,r,t){var n,i=0,o=e.length;for(e=e.slice();o--;)n=e[o]*r+i,e[o]=n%t|0,i=n/t|0;return i&&e.unshift(i),e}function r(e,r,t,n){var i,o;if(t!=n)o=t>n?1:-1;else for(i=o=0;t>i;i++)if(e[i]!=r[i]){o=e[i]>r[i]?1:-1;break}return o}function t(e,r,t,n){for(var i=0;t--;)e[t]-=i,i=e[t]1;e.shift());}return function(n,i,o,a,s,u){var f,c,l,p,m,h,d,w,y,v,x,b,N,A,S,O,C,q,U,B=n.constructor,z=n.s==i.s?1:-1,I=n.c,_=i.c;if(!(I&&I[0]&&_&&_[0]))return new B(n.s&&i.s&&(I?!_||I[0]!=_[0]:_)?I&&0==I[0]||!_?0*z:z/0:0/0);for(u?(p=1,c=n.e-i.e):(u=M,p=T,c=E(n.e/p)-E(i.e/p)),q=_.length,O=I.length,y=new B(z),v=y.c=[],l=0;_[l]==(I[l]||0);l++);if(_[l]>(I[l]||0)&&c--,null==o?(z=o=B.precision,a=B.rounding):z=s?o+(n.e-i.e)+1:o,0>z)v.push(1),m=!0;else{if(z=z/p+2|0,l=0,1==q){for(h=0,_=_[0],z++;(O>l||h)&&z--;l++)A=h*u+(I[l]||0),v[l]=A/_|0,h=A%_|0;m=h||O>l}else{for(h=u/(_[0]+1)|0,h>1&&(_=e(_,h,u),I=e(I,h,u),q=_.length,O=I.length),S=q,x=I.slice(0,q),b=x.length;q>b;x[b++]=0);U=_.slice(),U.unshift(0),C=_[0],_[1]>=u/2&&C++;do h=0,f=r(_,x,q,b),0>f?(N=x[0],q!=b&&(N=N*u+(x[1]||0)),h=N/C|0,h>1?(h>=u&&(h=u-1),d=e(_,h,u),w=d.length,b=x.length,f=r(d,x,w,b),1==f&&(h--,t(d,w>q?U:_,w,u))):(0==h&&(f=h=1),d=_.slice()),w=d.length,b>w&&d.unshift(0),t(x,d,b,u),-1==f&&(b=x.length,f=r(_,x,q,b),1>f&&(h++,t(x,b>q?U:_,b,u))),b=x.length):0===f&&(h++,x=[0]),v[l++]=h,f&&x[0]?x[b++]=I[S]||0:(x=[I[S]],b=1);while((S++=10;z/=10,l++);y.e=l+c*p-1,g(y,s?o+y.e+1:o,a,m)}return y}}();w=function(){function e(e){var r,t,n,i=this,o="config",a=i.errors?parseInt:parseFloat;return e==t||"object"!=typeof e&&!p(i,"object expected",e,o)?i:((n=e[r="precision"])!=t&&((y=1>n||n>q)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="rounding"])!=t&&((y=0>n||n>8)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(n=e[r="toExpNeg"])!=t&&((y=-C>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="toExpPos"])!=t&&((y=0>n||n>C)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="minE"])!=t&&((y=-C>n||n>0)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="maxE"])!=t&&((y=0>n||n>C)||a(n)!=n?p(i,r,n,o,0):i[r]=E(n)),(n=e[r="errors"])!=t&&(n===!!n||1===n||0===n?(y=b=0,i[r]=!!n):p(i,r,n,o,1)),(n=e[r="crypto"])!=t&&(n===!!n||1===n||0===n?i[r]=!(!n||!v||"object"!=typeof v):p(i,r,n,o,1)),(n=e[r="modulo"])!=t&&((y=0>n||n>9)||a(n)!=n?p(i,r,n,o,0):i[r]=0|n),(e=e[r="format"])!=t&&("object"==typeof e?i[r]=e:p(i,"format object expected",e,o)),i)}function r(e){return new this(e).exp()}function t(e){return new this(e).ln()}function n(e,r){return new this(e).log(r)}function i(e,r,t){var n,i,o=0;for("[object Array]"==A.call(r[0])&&(r=r[0]),n=new e(r[0]);++oi;)n=r[i],n>=429e7?r[i]=v.getRandomValues(new Uint32Array(1))[0]:o[i++]=n%1e7;else if(v&&v.randomBytes){for(r=v.randomBytes(t*=4);t>i;)n=r[i]+(r[i+1]<<8)+(r[i+2]<<16)+((127&r[i+3])<<24),n>=214e7?v.randomBytes(4).copy(r,i):(o.push(n%1e7),i+=4);i=t/4}else p(a,"crypto unavailable",v,"random");if(!i)for(;t>i;)o[i++]=1e7*Math.random()|0;for(t=o[--i],e%=T,t&&e&&(n=N(10,T-e),o[i]=(t/n|0)*n);0===o[i];i--)o.pop();if(0>i)o=[t=0];else{for(t=-1;0===o[0];)o.shift(),t-=T;for(i=1,n=o[0];n>=10;)n/=10,i++;T>i&&(t-=T-i)}return s.e=t,s.c=o,s}function c(e){return new this(e).sqrt()}function l(i){function u(e,r){var t=this;if(!(t instanceof u))return p(u,"Decimal called without new",e),new u(e,r);if(t.constructor=u,e instanceof u){if(null==r)return b=0,t.s=e.s,t.e=e.e,t.c=(e=e.c)?e.slice():e,t;if(10==r)return g(new u(e),u.precision,u.rounding);e+=""}return m(u,t,e,r)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-C,u.maxE=C,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0},u.prototype=O,u.ONE=new u(1),u.ROUND_UP=0,u.ROUND_DOWN=1,u.ROUND_CEIL=2,u.ROUND_FLOOR=3,u.ROUND_HALF_UP=4,u.ROUND_HALF_DOWN=5,u.ROUND_HALF_EVEN=6,u.ROUND_HALF_CEIL=7,u.ROUND_HALF_FLOOR=8,u.EUCLID=9,u.config=e,u.constructor=l,u.exp=r,u.ln=t,u.log=n,u.max=o,u.min=a,u.pow=s,u.sqrt=c,u.random=f,null!=i&&u.config(i),u}var m=function(){var e=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,r=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")};return function(t,n,i,o){var a,s,u,f,c,l;if("string"!=typeof i&&(i=(f="number"==typeof i||"[object Number]"==A.call(i))&&0===i&&0>1/i?"-0":i+""),c=i,null==o&&e.test(i))n.s=45===i.charCodeAt(0)?(i=i.slice(1),-1):1;else{if(10==o)return g(new t(i),t.precision,t.rounding);if(i=r.call(i).replace(/^\+(?!-)/,""),n.s=45===i.charCodeAt(0)?(i=i.replace(/^-(?!-)/,""),-1):1,null!=o?o!=(0|o)&&t.errors||(y=!(o>=2&&65>o))?(p(t,"base",o,0,0),l=e.test(i)):(a="["+S.slice(0,o=0|o)+"]+",i=i.replace(/\.$/,"").replace(/^\./,"0."),(l=new RegExp("^"+a+"(?:\\."+a+")?$",37>o?"i":"").test(i))?(f&&(i.replace(/^0\.0*|\./,"").length>15&&p(t,0,c),f=!f),i=d(t,i,10,o,n.s)):"Infinity"!=i&&"NaN"!=i&&(p(t,"not a base "+o+" number",c),i="NaN")):l=e.test(i),!l)return n.c=n.e=null,"Infinity"!=i&&("NaN"!=i&&p(t,"not a number",c),n.s=null),b=0,n}for((s=i.indexOf("."))>-1&&(i=i.replace(".","")),(u=i.search(/e/i))>0?(0>s&&(s=u),s+=+i.slice(u+1),i=i.substring(0,u)):0>s&&(s=i.length),u=0;48===i.charCodeAt(u);u++);for(o=i.length;48===i.charCodeAt(--o););if(i=i.slice(u,o+1)){if(o=i.length,f&&o>15&&p(t,0,c),n.e=s=s-u-1,n.c=[],u=(s+1)%T,0>s&&(u+=T),o>u){for(u&&n.c.push(+i.slice(0,u)),o-=T;o>u;)n.c.push(+i.slice(u,u+=T));i=i.slice(u),u=T-i.length}else u-=o;for(;u--;i+="0");n.c.push(+i),x&&(n.e>t.maxE?n.c=n.e=null:n.e=this.max?"Index out of range ("+this.index+" > "+(this.max-1)+")":"Index out of range ("+this.index+")",this.stack=(new Error).stack}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name="IndexError",e.exports=r},function(e){"use strict";function r(e){if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");this.fn=e,this.types=Array.prototype.splice.call(arguments,1),this.message=e?0==this.types.length?"Unsupported type of argument in function "+e:"Function "+e+"("+this.types.join(", ")+") not supported":"Unsupported type of argument",this.stack=(new Error).stack}r.prototype=new TypeError,r.prototype.constructor=TypeError,r.prototype.name="UnsupportedTypeError",e.exports=r},function(e,r,t){"use strict";r.array=t(154),r["boolean"]=t(194),r.number=t(3),r.bignumber=t(153),r.object=t(2),r.string=t(195),r.types=t(315)},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(this.nodes=e||[],!a(this.nodes)||!this.nodes.every(s))throw new TypeError("Array containing Nodes expected")}var i=t(170),o=(t(2),t(195)),a=(t(13),t(161),Array.isArray),s=i.isNode;n.prototype=new i,n.prototype.type="ArrayNode",n.prototype._compile=function(e){var r="array"!==e.math.config().matrix,t=this.nodes.map(function(r){return r._compile(e)});return(r?"math.matrix([":"[")+t.join(",")+(r?"])":"]")},n.prototype.forEach=function(e){for(var r=0;r0;return n=r?r:n,r});e.range=function(e,r,t){return new u(e instanceof s?e.toNumber():e,r instanceof s?r.toNumber():r,t instanceof s?t.toNumber():t)};var f=this.ranges.map(function(r,t){var n=i[t];return r instanceof o?n?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+t+"]; return range( "+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+" );})(scope)":"range("+r.start._compile(e)+", "+r.end._compile(e)+", "+(r.step?r.step._compile(e):"1")+")":n?'(function (scope) { scope = Object.create(scope); scope["end"] = size['+t+"]; return "+r._compile(e)+";})(scope)":r._compile(e)});return n?"(function () { var obj = "+this.object._compile(e)+"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index("+f.join(", ")+") "+(r?", "+r:"")+" );})()":"math.subset("+this.object._compile(e)+",math.index("+f.join(", ")+")"+(r?", "+r:"")+")"},n.prototype.forEach=function(e){e(this.object,"object",this);for(var r=0;r3)throw new Error("Too many arguments");this.start=e,this.end=r,this.step=t||null}var i=t(170),o=i.isNode;n.prototype=new i,n.prototype.type="RangeNode",n.prototype._compile=function(e){return"math.range("+this.start._compile(e)+", "+this.end._compile(e)+(this.step?", "+this.step._compile(e):"")+")"},n.prototype.forEach=function(e){e(this.start,"start",this),e(this.end,"end",this),this.step&&e(this.step,"step",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.start,"start",this)),this._ifNode(e(this.end,"end",this)),this.step&&this._ifNode(e(this.step,"step",this)))},n.prototype.clone=function(){return new n(this.start,this.end,this.step&&this.step)},n.prototype.toString=function(){var e=this.start.toString();return this.step&&(e+=":"+this.step.toString()),e+=":"+this.end.toString()},n.prototype.toTex=function(){var e=this.start.toTex();return this.step&&(e+=":"+this.step.toTex()),e+=":"+this.end.toTex()},e.exports=n},function(e,r,t){"use strict";function n(e){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!u(e))throw new TypeError('String expected for parameter "name"');this.name=e}function i(e){throw new Error("Undefined symbol "+e)}var o=t(170),a=t(10),s=t(318),u=t(195).isString;n.prototype=new o,n.prototype.type="SymbolNode",n.prototype._compile=function(e){return e.undef=i,e.Unit=a,this.name in e.math?'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])':'("'+this.name+'" in scope ? scope["'+this.name+'"] : '+(a.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"},n.prototype.forEach=function(){},n.prototype.map=function(){return this.clone()},n.prototype.clone=function(){return new n(this.name)},n.prototype.toString=function(){return this.name},n.prototype.toTex=function(){return s.toSymbol(this.name)},e.exports=n},function(e,r,t){"use strict";function n(e,r){if(!(this instanceof n))throw new SyntaxError("Constructor must be called with the new operator");if(!(e instanceof o))throw new TypeError('Expected IndexNode for parameter "index"');if(!(r instanceof i))throw new TypeError('Expected Node for parameter "expr"');this.index=e,this.expr=r}var i=t(170),o=t(167);n.prototype=new i,n.prototype.type="UpdateNode",n.prototype._compile=function(e){return'scope["'+this.index.objectName()+'"] = '+this.index.compileSubset(e,this.expr._compile(e))},n.prototype.forEach=function(e){e(this.index,"index",this),e(this.expr,"expr",this)},n.prototype.map=function(e){return new n(this._ifNode(e(this.index,"index",this)),this._ifNode(e(this.expr,"expr",this)))},n.prototype.clone=function(){return new n(this.index,this.expr)},n.prototype.toString=function(){return this.index.toString()+" = "+this.expr.toString()},n.prototype.toTex=function(){return this.index.toTex()+" = "+this.expr.toTex()},e.exports=n},function(e){e.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},function(e){e.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},function(e){e.exports={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},function(e){e.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},function(e){e.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},function(e){e.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},function(e){e.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},function(e){e.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},function(e){e.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},function(e){e.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},function(e){e.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},function(e){e.exports={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["tau"],seealso:[]}},function(e){e.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},function(e){e.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},function(e){e.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},function(e){e.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},function(e){e.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},function(e,r,t){function n(e){return t(i(e))}function i(e){return o[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var o={"./clone":144,"./clone.js":144,"./filter":145,"./filter.js":145,"./forEach":152,"./forEach.js":152,"./format":146,"./format.js":146,"./import":147,"./import.js":147,"./map":148,"./map.js":148,"./print":149,"./print.js":149,"./sort":150,"./sort.js":150,"./typeof":151,"./typeof.js":151};n.keys=function(){return Object.keys(o)},n.resolve=i,e.exports=n,n.id=192},function(e,r,t){var n=(t(158),t(159));r.transform=function(e){return e instanceof n?new n(e.index+1,e.min+1,e.max+1):e}},function(e,r){"use strict";r.isBoolean=function(e){return e instanceof Boolean||"boolean"==typeof e}},function(e,r,t){"use strict";function n(e,t){if(Array.isArray(e)){for(var i="[",o=e.length,a=0;o>a;a++)0!=a&&(i+=", "),i+=n(e[a],t);return i+="]"}return r.format(e,t)}var i=t(3),o=t(153),a=t(156);r.isString=function(e){return e instanceof String||"string"==typeof e},r.endsWith=function(e,r){var t=e.length-r.length,n=e.length;return e.substring(t,n)===r},r.format=function(e,t){return i.isNumber(e)?i.format(e,t):e instanceof a?o.format(e,t):Array.isArray(e)?n(e,t):r.isString(e)?'"'+e+'"':"function"==typeof e?e.syntax?e.syntax+"":"function":e instanceof Object?"function"==typeof e.format?e.format(t):e.toString():String(e)}},function(e){e.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},function(e){e.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i",'"hello" + " world"',"3 cm + 2 inch"],seealso:["subtract"]}},function(e){e.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},function(e){e.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},function(e){e.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},function(e){e.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},function(e){e.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},function(e){e.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},function(e){e.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["pow","log"]}},function(e){e.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},function(e){e.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},function(e){e.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},function(e){e.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},function(e){e.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log10"]}},function(e){e.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},function(e){e.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},function(e){e.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},function(e){e.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i))","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)","norm([[1, 2], [3, 4]], 'inf')","norm([[1, 2], [3, 4]], 'fro')"]}},function(e){e.exports={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["sqrt","pow"]}},function(e){e.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},function(e){e.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},function(e){e.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},function(e){e.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},function(e){e.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},function(e){e.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},function(e){e.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},function(e){e.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},function(e){e.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},function(e){e.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},function(e){e.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},function(e){e.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},function(e){e.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},function(e){e.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},function(e){e.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},function(e){e.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},function(e){e.exports={name:"bignumber",category:"Type",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"boolean",category:"Type",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},function(e){e.exports={name:"complex",category:"Type",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},function(e){e.exports={name:"index",category:"Type",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},function(e){e.exports={name:"matrix",category:"Type",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()","matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])"],seealso:["bignumber","boolean","complex","index","number","string","unit"]}},function(e){e.exports={name:"number",category:"Type",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},function(e){e.exports={name:"string",category:"Type",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},function(e){e.exports={name:"unit",category:"Type",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},function(e){e.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},function(e){e.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},function(e){e.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},function(e){e.exports={name:"not",category:"Logical",syntax:["!x","not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",examples:["!true","not false","!2","!0"],seealso:["and","or","xor"]}},function(e){e.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},function(e){e.exports={name:"xor",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 or 4"],seealso:["not","and","or"]}},function(e){e.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},function(e){e.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]} +},function(e){e.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)"],description:"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},function(e){e.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},function(e){e.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze"]}},function(e){e.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},function(e){e.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},function(e){e.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},function(e){e.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},function(e){e.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},function(e){e.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},function(e){e.exports={name:"factorial",category:"Probability",syntax:["n!","factorial(n)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},function(e){e.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},function(e){e.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},function(e){e.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["random","randomInt"]}},function(e){e.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},function(e){e.exports={name:"randInt",category:"Probability",syntax:["randInt()","randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt()","randInt(10, 20)","randInt([2, 3], 10)"],seealso:["pickRandom","random"]}},function(e){e.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},function(e){e.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},function(e){e.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},function(e){e.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},function(e){e.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},function(e){e.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},function(e){e.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},function(e){e.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},function(e){e.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},function(e){e.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},function(e){e.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},function(e){e.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},function(e){e.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},function(e){e.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},function(e){e.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},function(e){e.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},function(e){e.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},function(e){e.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},function(e){e.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},function(e){e.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},function(e){e.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},function(e){e.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},function(e){e.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},function(e){e.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},function(e){e.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},function(e){e.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},function(e){e.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},function(e){e.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},function(e){e.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},function(e){e.exports={name:"map",category:"Utils",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},function(e){e.exports={name:"filter",category:"Utils",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},function(e){e.exports={name:"forEach",category:"Utils",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},function(e){e.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},function(e){e.exports={name:"import",category:"Utils",syntax:["import(string)"],description:"Import functions from a file.",examples:['import("numbers")','import("./mylib.js")'],seealso:[]}},function(e){e.exports={name:"sort",category:"Utils",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},function(e){e.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},function(e,r,t){"use strict";e.exports=function(e){function r(r){if(!s.hasOwnProperty(r))throw new Error("Unknown distribution "+r);var t=Array.prototype.slice.call(arguments,1),o=s[r].apply(this,t);return function(r){var t={random:function(r,t,i){var s,f,c;if(arguments.length>3)throw new e.error.ArgumentsError("random",arguments.length,0,3);if(1===arguments.length?a(r)?s=r:c=r:2===arguments.length?a(r)?(s=r,c=t):(f=r,c=t):(s=r,f=t,c=i),void 0===c&&(c=1),void 0===f&&(f=0),void 0!==s){var l=u(s.valueOf(),f,c,o);return s instanceof n?new n(l):l}return o(f,c)},randomInt:function(r,t,i){var o,f,c;if(arguments.length>3||arguments.length<1)throw new e.error.ArgumentsError("randomInt",arguments.length,1,3);if(1===arguments.length?a(r)?o=r:c=r:2===arguments.length?a(r)?(o=r,c=t):(f=r,c=t):(o=r,f=t,c=i),void 0===f&&(f=0),void 0!==o){var l=u(o.valueOf(),f,c,s);return o instanceof n?new n(l):l}return s(f,c)},pickRandom:function(r){if(1!==arguments.length)throw new e.error.ArgumentsError("pickRandom",arguments.length,1);if(r instanceof n)r=r.valueOf();else if(!Array.isArray(r))throw new e.error.UnsupportedTypeError("pickRandom",e["typeof"](r));if(i.size(r).length>1)throw new Error("Only one dimensional vectors supported");return r[Math.floor(Math.random()*r.length)]}},o=function(e,t){return e+r()*(t-e)},s=function(e,t){return Math.floor(e+r()*(t-e))},u=function(e,r,t,n){var i,o,a=[];if(e=e.slice(0),e.length>1)for(o=0,i=e.shift();i>o;o++)a.push(u(e,r,t,n));else for(o=0,i=e.shift();i>o;o++)a.push(n(r,t));return a};return t}(o)}var n=t(9),i=t(154),o=t(13),a=o.isCollection,s={uniform:function(){return Math.random},normal:function(){return function(){for(var e,r,t=-1;0>t||t>1;)e=Math.random(),r=Math.random(),t=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*r)+.5;return t}}};return r}},function(e,r){"use strict";r.type=function(e){var r=typeof e;if("object"===r){if(null===e)return"null";if(e instanceof Boolean)return"boolean";if(e instanceof Number)return"number";if(e instanceof String)return"string";if(Array.isArray(e))return"array";if(e instanceof Date)return"date";if(e instanceof Function)return"function";if(e instanceof RegExp)return"regexp"}return r}},function(e,r){r.memoize=function(e){return function r(){"object"!=typeof r.cache&&(r.cache={});var t=JSON.stringify(arguments);return t in r.cache?r.cache[t]:r.cache[t]=e.apply(e,arguments)}}},function(e){"use strict";e.exports={end:!0}},function(e,r,t){"use strict";function n(){for(var e,r=Array.prototype.slice.call(arguments),t=0,n=r.length;n>t;t++){e=r[t];for(var i in e)e.hasOwnProperty(i)&&(v[i]=e[i])}}function i(e,r){return"undefined"!=typeof e[r]}function o(e){return function(r){return i(e,r)}}function a(e){return function(t){if("boolean"==typeof e[t])t=e[t]===!0?"\\"+t:"\\mathrm{"+t+"}";else if("string"==typeof e[t])t=e[t];else if("string"==typeof t){var n=t.indexOf("_");-1!==n&&(t=r.toSymbol(t.substring(0,n))+"_{"+r.toSymbol(t.substring(n+1))+"}")}return t}}var s=t(162),u=t(171),f=t(173),c=t(166),l={Alpha:"A",alpha:!0,Beta:"B",beta:!0,Gamma:!0,gamma:!0,Delta:!0,delta:!0,Epsilon:"E",epsilon:!0,varepsilon:!0,Zeta:"Z",zeta:!0,Eta:"H",eta:!0,Theta:!0,theta:!0,vartheta:!0,Iota:"I",iota:!0,Kappa:"K",kappa:!0,varkappa:!0,Lambda:!0,lambda:!0,Mu:"M",mu:!0,Nu:"N",nu:!0,Xi:!0,xi:!0,Omicron:"O",omicron:!0,Pi:!0,pi:!0,varpi:!0,Rho:"P",rho:!0,varrho:!0,Sigma:!0,sigma:!0,varsigma:!0,Tau:"T",tau:!0,Upsilon:!0,upsilon:!0,Phi:!0,phi:!0,varphi:!0,Chi:"X",chi:!0,Psi:!0,psi:!0,Omega:!0,omega:!0},p={dots:!0,ldots:!0,cdots:!0,vdots:!0,ddots:!0,idots:!0},m={"true":"\\mathrm{True}","false":"\\mathrm{False}"},h={inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:!0,undefined:"\\mathbf{?}"},g={acos:"\\cos^{-1}",arccos:"\\cos^{-1}",cos:!0,csc:!0,csch:!1,exp:!0,ker:!0,limsup:!0,min:!0,sinh:!0,asin:"\\sin^{-1}",arcsin:"\\sin^{-1}",cosh:!0,deg:!0,gcd:!0,lg:!0,ln:!0,Pr:!0,sup:!0,atan:"\\tan^{-1}",atan2:"\\tan2^{-1}",arctan:"\\tan^{-1}",cot:!0,det:!0,hom:!0,log:!0,log10:"\\log_{10}",sec:!0,sech:!1,tan:!0,arg:!0,coth:!0,dim:!0,inf:!0,max:!0,sin:!0,tanh:!0,fix:!1,lcm:!1,sign:!1,xgcd:!1,unaryMinus:!1,unaryPlus:!1,complex:!1,conj:!1,im:!1,re:!1,diag:!1,resize:!1,size:!1,squeeze:!1,subset:!1,index:!1,ones:!1,zeros:!1,range:!1,random:!1,mean:"\\mu",median:!1,prod:!1,std:"\\sigma","var":"\\sigma^2"},d={sqrt:!0,inv:!0,"int":"\\int",Int:"\\int",integrate:"\\int",eigenvalues:"\\lambda",liminf:!0,lim:!0,exp:"e^",sum:!0,eye:"\\mathbf{I}"},w={"<=":"\\leq",">=":"\\geq","!=":"\\neq","in":!0,"*":"\\cdot","/":"\\frac",mod:"\\bmod",to:"\\rightarrow"},y={deg:"^{\\circ}"},v={};n(g,d,l,p,m,h),r.isSymbol=o(v),r.toSymbol=a(v),r.isFunction=o(g),r.toFunction=a(g),r.isCurlyFunction=o(d),r.toCurlyFunction=a(d),r.isOperator=o(w),r.toOperator=a(w),r.isUnit=o(y),r.toUnit=function(){var e=a(y);return function(t,n){return r.isUnit(t)?e(t):(n?"":"\\,")+"\\mathrm{"+t+"}"}}(),r.addBraces=function(e,r,t){if(null===r)return e;var n=["",""];switch(t=t||"normal","undefined"==typeof r||r===!1?n=["{","}"]:r===!0?(n=["(",")"],t="lr"):n=Array.isArray(r)&&2===r.length?r:[r,r],t){case"normal":case!1:return n[0]+e+n[1];case"lr":return"\\left"+n[0]+"{"+e+"}\\right"+n[1];case"be":return"\\begin{"+n[0]+"}"+e+"\\end{"+n[1]+"}"}return n[0]+e+n[1]},r.toArgs=function(e){var t=e.name,n=e.args,i=r.toSymbol(e.name),o=null,a=null,l=!1,p=!1,m="",h="",g=null;switch(t){case"add":g="+";break;case"subtract":g="-";break;case"larger":g=">";break;case"largerEq":g=">=";break;case"smaller":g="<";break;case"smallerEq":g="<=";break;case"unequal":g="!=";break;case"equal":g="=";break;case"mod":g="mod";break;case"multiply":g="*";break;case"pow":g="^";break;case"concat":g="||";break;case"factorial":g="!";break;case"permutations":if(1!==n.length){var d=n[0].toTex(),w=n[1].toTex();return"\\frac{"+d+"!}{\\left("+d+" - "+w+"\\right)!}"}if(!(n[0]instanceof f||n[0]instanceof c))return"{\\left("+n[0].toTex()+"\\right)!}";g="!";break;case"combinations":g="\\choose";break;case"abs":a="|",l="lr";break;case"norm":if(a="\\|",l="lr",2===n.length){var y=n[1].toTex();"\\text{inf}"===y?y="\\infty":"\\text{-inf}"===y?y="{- \\infty}":"\\text{fro}"===y&&(y="F"),h="_{"+y+"}",n=[n[0]]}break;case"ceil":a=["\\lceil","\\rceil"],l="lr";break;case"floor":a=["\\lfloor","\\rfloor"],l="lr";break;case"round":a=["\\lfloor","\\rceil"],l="lr",2===n.length&&(h="_"+r.addBraces(n[1].toTex()),n=[n[0]]);break;case"inv":h="^{-1}";break;case"transpose":h="^{T}",a=!1;break;case"log":var v="e";2===n.length&&(v=n[1].toTex(),i="\\log_{"+v+"}",n=[n[0]]),"e"===v&&(i="\\ln"),p=!0;break;case"square":h="^{2}";break;case"cube":h="^{3}";break;case"eye":p=!0,a=!1,i+="_";break;case"det":if(e.args[0]instanceof s)return e.args[0].toTex("vmatrix");a="vmatrix",l="be";break;default:p=!0}return null!==g?(a="+"===g||"-"===g,o=new u(g,t,n).toTex()):g=", ",null!==a||r.isCurlyFunction(t)||(a=!0),o=o||n.map(function(e){return"{"+e.toTex()+"}"}).join(g),m+(p?i:"")+r.addBraces(o,a,l)+h}}])}); //# sourceMappingURL=math.map \ No newline at end of file diff --git a/docs/datatypes/bignumbers.md b/docs/datatypes/bignumbers.md index 095ad8241..0fbf56b9b 100644 --- a/docs/datatypes/bignumbers.md +++ b/docs/datatypes/bignumbers.md @@ -4,6 +4,8 @@ For calculations with an arbitrary precision, math.js supports a `BigNumber` data type. BigNumber support is powered by [decimal.js](https://github.com/MikeMcl/decimal.js/). +## Usage + A BigNumber can be created using the function `bignumber`: ```js @@ -35,10 +37,13 @@ BigNumber is not supported by the following functions: gcd, lcm, xgcd, arg, random, -acos, asin, atan, atan2, cos, cot, csc, sec, sin, tan, -cosh, coth, csch, sech, sinh, tanh. +atan2, cot, csc, sec, +coth, csch, sech. These functions will downgrade BigNumber to Number, and return a Number.* + +## Round-off errors + Calculations with BigNumber are much slower than calculations with Number, but they can be executed with an arbitrary precision. By using a higher precision, it is less likely that round-off errors occur: @@ -53,6 +58,31 @@ math.add(math.bignumber(0.1), math.bignumber(0.2)); // BigNumber, 0.3 math.divide(math.bignumber(0.3), math.bignumber(0.2)); // BigNumber, 1.5 ``` + +## Limitations + +It's important to realize that BigNumbers do not solve *all* problems related +to precision and round-off errors. Numbers with an infinite number of digits +cannot be represented with a regular number nor a BigNumber. Though a BigNumber +can store a much larger number of digits, the amount of digits remains limited, +if only to keep calculations fast enough to remain practical. + +```js +var one = math.bignumber(1); +var three = math.bignumber(3); +var third = math.divide(one, three); +console.log(third.toString()); +// outputs 0.3333333333333333333333333333333333333333333333333333333333333333 + +var ans = math.multiply(third, three); +console.log(ans.toString()); +// outputs 0.9999999999999999999999999999999999999999999999999999999999999999 +// this should be 1 again, but `third` is rounded to a limited number of digits 3 +``` + + +## Conversion + BigNumbers can be converted to numbers and vice versa using the functions `number` and `bignumber`. When converting a BigNumber to a Number, the high precision of the BigNumber will be lost. When a BigNumber is too large to be represented diff --git a/docs/reference/functions/acos.md b/docs/reference/functions/acos.md index 701fabb27..076acdc40 100644 --- a/docs/reference/functions/acos.md +++ b/docs/reference/functions/acos.md @@ -15,13 +15,13 @@ math.acos(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Array | Matrix | null | Function input +`x` | Number | BigNumber Boolean | Complex | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | The arc cosine of x +Number | BigNumber | Complex | Array | Matrix | The arc cosine of x ## Examples diff --git a/docs/reference/functions/alphabetical.md b/docs/reference/functions/alphabetical.md index 791141809..4f5d8f3f3 100644 --- a/docs/reference/functions/alphabetical.md +++ b/docs/reference/functions/alphabetical.md @@ -113,6 +113,7 @@ - [tan(x)](tan.md) - [tanh(x)](tanh.md) - [to(x, unit)](to.md) +- [trace(x)](trace.md) - [transpose(x)](transpose.md) - [typeof(x)](typeof.md) - [unaryMinus(x)](unaryMinus.md) diff --git a/docs/reference/functions/asin.md b/docs/reference/functions/asin.md index 012149b5d..fa0f9e2d7 100644 --- a/docs/reference/functions/asin.md +++ b/docs/reference/functions/asin.md @@ -15,13 +15,13 @@ math.asin(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | The arc sine of x +Number | BigNumber | Complex | Array | Matrix | The arc sine of x ## Examples diff --git a/docs/reference/functions/atan.md b/docs/reference/functions/atan.md index 45dfc13e4..e809bc80b 100644 --- a/docs/reference/functions/atan.md +++ b/docs/reference/functions/atan.md @@ -15,13 +15,13 @@ math.atan(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | The arc tangent of x +Number | BigNumber | Complex | Array | Matrix | The arc tangent of x ## Examples diff --git a/docs/reference/functions/categorical.md b/docs/reference/functions/categorical.md index 84e0ae0bb..72dcbbed2 100644 --- a/docs/reference/functions/categorical.md +++ b/docs/reference/functions/categorical.md @@ -91,6 +91,7 @@ - [size(x)](size.md) - [squeeze(x)](squeeze.md) - [subset(x, index [, replacement])](subset.md) +- [trace(x)](trace.md) - [transpose(x)](transpose.md) - [zeros(m, n, p, ...)](zeros.md) diff --git a/docs/reference/functions/cos.md b/docs/reference/functions/cos.md index b9db79684..659fe5595 100644 --- a/docs/reference/functions/cos.md +++ b/docs/reference/functions/cos.md @@ -15,13 +15,13 @@ math.cos(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Unit | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | Cosine of x +Number | BigNumber | Complex | Array | Matrix | Cosine of x ## Examples diff --git a/docs/reference/functions/cosh.md b/docs/reference/functions/cosh.md index e84b6be92..2d577357a 100644 --- a/docs/reference/functions/cosh.md +++ b/docs/reference/functions/cosh.md @@ -16,13 +16,13 @@ math.cosh(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Unit | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | Hyperbolic cosine of x +Number | BigNumber | Complex | Array | Matrix | Hyperbolic cosine of x ## Examples diff --git a/docs/reference/functions/sech.md b/docs/reference/functions/sech.md index 67c089e3c..b209a6367 100644 --- a/docs/reference/functions/sech.md +++ b/docs/reference/functions/sech.md @@ -30,7 +30,7 @@ Number | Complex | Array | Matrix | Hyperbolic secant of x ```js // sech(x) = 1/ cosh(x) math.sech(0.5); // returns 0.886818883970074 -1 / math.cosh(0.5); // returns 1.9190347513349437 +1 / math.cosh(0.5); // returns 0.886818883970074 ``` diff --git a/docs/reference/functions/sin.md b/docs/reference/functions/sin.md index 8e3548788..adff08037 100644 --- a/docs/reference/functions/sin.md +++ b/docs/reference/functions/sin.md @@ -15,13 +15,13 @@ math.sin(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Unit | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | Sine of x +Number | BigNumber | Complex | Array | Matrix | Sine of x ## Examples diff --git a/docs/reference/functions/sinh.md b/docs/reference/functions/sinh.md index b4c205b11..18a4b897f 100644 --- a/docs/reference/functions/sinh.md +++ b/docs/reference/functions/sinh.md @@ -16,13 +16,13 @@ math.sinh(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Unit | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | Hyperbolic sine of x +Number | BigNumber | Complex | Array | Matrix | Hyperbolic sine of x ## Examples diff --git a/docs/reference/functions/tan.md b/docs/reference/functions/tan.md index a187c16a3..aa3128149 100644 --- a/docs/reference/functions/tan.md +++ b/docs/reference/functions/tan.md @@ -15,13 +15,13 @@ math.tan(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Unit | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | Tangent of x +Number | BigNumber | Complex | Array | Matrix | Tangent of x ## Examples diff --git a/docs/reference/functions/tanh.md b/docs/reference/functions/tanh.md index 0858d5e29..39789acef 100644 --- a/docs/reference/functions/tanh.md +++ b/docs/reference/functions/tanh.md @@ -16,13 +16,13 @@ math.tanh(x) Parameter | Type | Description --------- | ---- | ----------- -`x` | Number | Boolean | Complex | Unit | Array | Matrix | null | Function input +`x` | Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null | Function input ### Returns Type | Description ---- | ----------- -Number | Complex | Array | Matrix | Hyperbolic tangent of x +Number | BigNumber | Complex | Array | Matrix | Hyperbolic tangent of x ## Examples diff --git a/lib/expression/docs/function/matrix/concat.js b/lib/expression/docs/function/matrix/concat.js index e9b72f723..3abbdb593 100644 --- a/lib/expression/docs/function/matrix/concat.js +++ b/lib/expression/docs/function/matrix/concat.js @@ -14,6 +14,6 @@ module.exports = { 'concat(A, B, 2)' ], 'seealso': [ - 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/det.js b/lib/expression/docs/function/matrix/det.js index 2b1895c6f..aa98f15a0 100644 --- a/lib/expression/docs/function/matrix/det.js +++ b/lib/expression/docs/function/matrix/det.js @@ -10,6 +10,6 @@ module.exports = { 'det([-2, 2, 3; -1, 1, 3; 2, 0, -1])' ], 'seealso': [ - 'concat', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/diag.js b/lib/expression/docs/function/matrix/diag.js index a787f4108..88d29ac35 100644 --- a/lib/expression/docs/function/matrix/diag.js +++ b/lib/expression/docs/function/matrix/diag.js @@ -13,6 +13,6 @@ module.exports = { 'diag(a)' ], 'seealso': [ - 'concat', 'det', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/eye.js b/lib/expression/docs/function/matrix/eye.js index 88b26b053..81fade007 100644 --- a/lib/expression/docs/function/matrix/eye.js +++ b/lib/expression/docs/function/matrix/eye.js @@ -15,6 +15,6 @@ module.exports = { 'eye(size(a))' ], 'seealso': [ - 'concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/inv.js b/lib/expression/docs/function/matrix/inv.js index 5120fdea3..b3a597523 100644 --- a/lib/expression/docs/function/matrix/inv.js +++ b/lib/expression/docs/function/matrix/inv.js @@ -11,6 +11,6 @@ module.exports = { '1 / 4' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/ones.js b/lib/expression/docs/function/matrix/ones.js index b42a61ea7..77f846c28 100644 --- a/lib/expression/docs/function/matrix/ones.js +++ b/lib/expression/docs/function/matrix/ones.js @@ -19,6 +19,6 @@ module.exports = { 'ones(size(a))' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/range.js b/lib/expression/docs/function/matrix/range.js index baeafc107..ec1498fc9 100644 --- a/lib/expression/docs/function/matrix/range.js +++ b/lib/expression/docs/function/matrix/range.js @@ -20,6 +20,6 @@ module.exports = { 'a[1:2, 1:2]' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'size', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/size.js b/lib/expression/docs/function/matrix/size.js index d57965058..96765e5f3 100644 --- a/lib/expression/docs/function/matrix/size.js +++ b/lib/expression/docs/function/matrix/size.js @@ -13,6 +13,6 @@ module.exports = { 'size(1:6)' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'squeeze', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'squeeze', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/squeeze.js b/lib/expression/docs/function/matrix/squeeze.js index 6c91c2d7e..da74c7a97 100644 --- a/lib/expression/docs/function/matrix/squeeze.js +++ b/lib/expression/docs/function/matrix/squeeze.js @@ -12,6 +12,6 @@ module.exports = { 'size(squeeze(b))' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'subset', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'subset', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/subset.js b/lib/expression/docs/function/matrix/subset.js index 9822a97ed..9bc25c197 100644 --- a/lib/expression/docs/function/matrix/subset.js +++ b/lib/expression/docs/function/matrix/subset.js @@ -20,6 +20,6 @@ module.exports = { 'f[:, 1]' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'transpose', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/trace.js b/lib/expression/docs/function/matrix/trace.js new file mode 100644 index 000000000..5f1841f90 --- /dev/null +++ b/lib/expression/docs/function/matrix/trace.js @@ -0,0 +1,15 @@ +module.exports = { + 'name': 'trace', + 'category': 'Matrix', + 'syntax': [ + 'trace(A)' + ], + 'description': 'Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.', + 'examples': [ + 'A = [1, 2, 3; -1, 2, 3; 2, 0, 3]', + 'trace(A)' + ], + 'seealso': [ + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose', 'zeros' + ] +}; diff --git a/lib/expression/docs/function/matrix/transpose.js b/lib/expression/docs/function/matrix/transpose.js index 25ea638c3..1fc78629f 100644 --- a/lib/expression/docs/function/matrix/transpose.js +++ b/lib/expression/docs/function/matrix/transpose.js @@ -12,6 +12,6 @@ module.exports = { 'transpose(a)' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'zeros' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'zeros' ] }; diff --git a/lib/expression/docs/function/matrix/zeros.js b/lib/expression/docs/function/matrix/zeros.js index 62e537798..4f7e36351 100644 --- a/lib/expression/docs/function/matrix/zeros.js +++ b/lib/expression/docs/function/matrix/zeros.js @@ -18,6 +18,6 @@ module.exports = { 'zeros(size(a))' ], 'seealso': [ - 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'transpose' + 'concat', 'det', 'diag', 'eye', 'inv', 'ones', 'range', 'size', 'squeeze', 'subset', 'trace', 'transpose' ] }; diff --git a/lib/expression/docs/index.js b/lib/expression/docs/index.js index 3d037549f..9ab347cb5 100644 --- a/lib/expression/docs/index.js +++ b/lib/expression/docs/index.js @@ -99,6 +99,7 @@ exports.resize = require('./function/matrix/resize'); exports.size = require('./function/matrix/size'); exports.squeeze = require('./function/matrix/squeeze'); exports.subset = require('./function/matrix/subset'); +exports.trace = require('./function/matrix/trace'); exports.transpose = require('./function/matrix/transpose'); exports.zeros = require('./function/matrix/zeros'); diff --git a/lib/function/matrix/trace.js b/lib/function/matrix/trace.js index f75f8baa7..3db671476 100644 --- a/lib/function/matrix/trace.js +++ b/lib/function/matrix/trace.js @@ -9,7 +9,8 @@ module.exports = function (math) { string = util.string; /** - * Calculate the trace of a matrix. + * Calculate the trace of a matrix: the sum of the elements on the main + * diagonal of a square matrix. * * Syntax: * @@ -26,6 +27,10 @@ module.exports = function (math) { * ] * math.trace(A); // returns 6 * + * See also: + * + * diag + * * @param {Array | Matrix} x A matrix * @return {Number} The trace of `x` */ diff --git a/lib/function/trigonometry/acos.js b/lib/function/trigonometry/acos.js index ecaabf2b2..2c619c1e8 100644 --- a/lib/function/trigonometry/acos.js +++ b/lib/function/trigonometry/acos.js @@ -34,8 +34,8 @@ module.exports = function (math) { * * cos, atan, asin * - * @param {Number | Boolean | Complex | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} The arc cosine of x + * @param {Number | BigNumber Boolean | Complex | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} The arc cosine of x */ math.acos = function acos(x) { if (arguments.length != 1) { diff --git a/lib/function/trigonometry/asin.js b/lib/function/trigonometry/asin.js index 75f3e35f8..8a6a5b8c9 100644 --- a/lib/function/trigonometry/asin.js +++ b/lib/function/trigonometry/asin.js @@ -34,8 +34,8 @@ module.exports = function (math) { * * sin, atan, acos * - * @param {Number | Boolean | Complex | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} The arc sine of x + * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} The arc sine of x */ math.asin = function asin(x) { if (arguments.length != 1) { diff --git a/lib/function/trigonometry/atan.js b/lib/function/trigonometry/atan.js index bf729fae4..1317745a2 100644 --- a/lib/function/trigonometry/atan.js +++ b/lib/function/trigonometry/atan.js @@ -34,8 +34,8 @@ module.exports = function (math) { * * tan, asin, acos * - * @param {Number | Boolean | Complex | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} The arc tangent of x + * @param {Number | BigNumber | Boolean | Complex | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} The arc tangent of x */ math.atan = function atan(x) { if (arguments.length != 1) { diff --git a/lib/function/trigonometry/cos.js b/lib/function/trigonometry/cos.js index 577c6c3d0..ffbce6bcf 100644 --- a/lib/function/trigonometry/cos.js +++ b/lib/function/trigonometry/cos.js @@ -39,8 +39,8 @@ module.exports = function (math, config) { * * cos, tan * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Cosine of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Cosine of x */ math.cos = function cos(x) { if (arguments.length != 1) { diff --git a/lib/function/trigonometry/cosh.js b/lib/function/trigonometry/cosh.js index b7fae2bbc..9784aee2e 100644 --- a/lib/function/trigonometry/cosh.js +++ b/lib/function/trigonometry/cosh.js @@ -34,8 +34,8 @@ module.exports = function (math) { * * sinh, tanh * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Hyperbolic cosine of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Hyperbolic cosine of x */ math.cosh = function cosh(x) { if (arguments.length != 1) { diff --git a/lib/function/trigonometry/sinh.js b/lib/function/trigonometry/sinh.js index 56d98df71..00fe6b8a4 100644 --- a/lib/function/trigonometry/sinh.js +++ b/lib/function/trigonometry/sinh.js @@ -34,8 +34,8 @@ module.exports = function (math) { * * cosh, tanh * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Hyperbolic sine of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Hyperbolic sine of x */ math.sinh = function sinh(x) { if (arguments.length != 1) { diff --git a/lib/function/trigonometry/tan.js b/lib/function/trigonometry/tan.js index 5eab0cebe..aa911565f 100644 --- a/lib/function/trigonometry/tan.js +++ b/lib/function/trigonometry/tan.js @@ -36,8 +36,8 @@ module.exports = function (math, config) { * * atan, sin, cos * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Tangent of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Tangent of x */ math.tan = function tan(x) { if (arguments.length != 1) { diff --git a/lib/function/trigonometry/tanh.js b/lib/function/trigonometry/tanh.js index 56d782bd1..9fc774cdf 100644 --- a/lib/function/trigonometry/tanh.js +++ b/lib/function/trigonometry/tanh.js @@ -37,8 +37,8 @@ module.exports = function (math) { * * sinh, cosh, coth * - * @param {Number | Boolean | Complex | Unit | Array | Matrix | null} x Function input - * @return {Number | Complex | Array | Matrix} Hyperbolic tangent of x + * @param {Number | BigNumber | Boolean | Complex | Unit | Array | Matrix | null} x Function input + * @return {Number | BigNumber | Complex | Array | Matrix} Hyperbolic tangent of x */ math.tanh = function tanh(x) { if (arguments.length != 1) { diff --git a/lib/header.js b/lib/header.js index a08f5527a..1b5d70752 100644 --- a/lib/header.js +++ b/lib/header.js @@ -10,7 +10,7 @@ * @date @@date * * @license - * Copyright (C) 2013-2014 Jos de Jong + * Copyright (C) 2013-2015 Jos de Jong * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy diff --git a/lib/version.js b/lib/version.js index 3de76710c..c42af78fa 100644 --- a/lib/version.js +++ b/lib/version.js @@ -1,3 +1,3 @@ -module.exports = '1.2.1-SNAPSHOT'; +module.exports = '1.3.0'; // Note: This file is automatically generated when building math.js. // Changes made in this file will be overwritten. diff --git a/package.json b/package.json index d7c96da14..75e8464c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mathjs", - "version": "1.2.1-SNAPSHOT", + "version": "1.3.0", "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.", "author": "Jos de Jong (https://github.com/josdejong)", "contributors": [