Socket
Socket
Sign inDemoInstall

math.gl

Package Overview
Dependencies
6
Maintainers
2
Versions
100
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.0-alpha.4 to 1.0.0-alpha.5

29

dist-es6/euler.js

@@ -644,2 +644,29 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

// roll, pitch, yaw angle notation
}, {
key: 'roll',
get: function get() {
return this[0];
},
set: function set(value) {
return this[0] = checkNumber(value);
}
}, {
key: 'pitch',
get: function get() {
return this[1];
},
set: function set(value) {
return this[1] = checkNumber(value);
}
}, {
key: 'yaw',
get: function get() {
return this[2];
},
set: function set(value) {
return this[2] = checkNumber(value);
}
// rotation order, in all three angle notations

@@ -661,2 +688,2 @@

export default Euler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ldWxlci5qcyJdLCJuYW1lcyI6WyJNYXRoQXJyYXkiLCJjaGVja051bWJlciIsImNsYW1wIiwiTWF0cml4NCIsIlF1YXRlcm5pb24iLCJWZWN0b3IzIiwiRVJSX1VOS05PV05fT1JERVIiLCJBTE1PU1RfT05FIiwidmFsaWRhdGVPcmRlciIsInZhbHVlIiwiY2hlY2tPcmRlciIsIkVycm9yIiwiRXVsZXIiLCJvcmRlciIsIlJvdGF0aW9uT3JkZXJzIiwiWllYIiwieCIsInkiLCJ6IiwiRGVmYXVsdE9yZGVyIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiZnJvbVZlY3RvcjMiLCJzZXQiLCJhcnJheSIsImkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNoZWNrIiwib2Zmc2V0Iiwib3B0aW9uYWxSZXN1bHQiLCJ2IiwidW5kZWZpbmVkIiwicm9sbCIsInBpdGNoIiwieWF3IiwicSIsIl9mcm9tUm90YXRpb25NYXRyaXgiLCJmcm9tUXVhdGVybmlvbiIsIm0iLCJfZ2V0Um90YXRpb25NYXRyaXgiLCJYWVoiLCJyb3RhdGVYIiwicm90YXRlWSIsInJvdGF0ZVoiLCJZWFoiLCJaWFkiLCJZWlgiLCJYWlkiLCJ0ZSIsImVsZW1lbnRzIiwibTExIiwibTEyIiwibTEzIiwibTIxIiwibTIyIiwibTIzIiwibTMxIiwibTMyIiwibTMzIiwiTWF0aCIsImFzaW4iLCJhYnMiLCJhdGFuMiIsImEiLCJjb3MiLCJjIiwiZSIsImIiLCJzaW4iLCJkIiwiZiIsImFlIiwiYWYiLCJiZSIsImJmIiwiY2UiLCJjZiIsImRlIiwiZGYiLCJhYyIsImFkIiwiYmMiLCJiZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPQSxTQUFQLE1BQXNCLGNBQXRCO0FBQ0EsU0FBUUMsV0FBUixFQUFxQkMsS0FBckIsUUFBaUMsVUFBakM7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLFdBQXBCO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixjQUF2QjtBQUNBLE9B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QWlCLEs7c0JBQzFCQSxLLEVBQU87QUFBRSxhQUFPLEtBQUssQ0FBTCxJQUFVQyxXQUFXRCxLQUFYLENBQWpCO0FBQXFDOzs7O0VBekh2QlQsUzs7ZUFBZFksSyIsImZpbGUiOiJldWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXRoQXJyYXkgZnJvbSAnLi9tYXRoLWFycmF5JztcbmltcG9ydCB7Y2hlY2tOdW1iZXIsIGNsYW1wfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgTWF0cml4NCBmcm9tICcuL21hdHJpeDQnO1xuaW1wb3J0IFF1YXRlcm5pb24gZnJvbSAnLi9xdWF0ZXJuaW9uJztcbmltcG9ydCBWZWN0b3IzIGZyb20gJy4vdmVjdG9yMyc7XG5cbi8vIEludGVybmFsIGNvbnN0YW50c1xuY29uc3QgRVJSX1VOS05PV05fT1JERVIgPSAnVW5rbm93biBFdWxlciBhbmdsZSBvcmRlcic7XG5jb25zdCBBTE1PU1RfT05FID0gMC45OTk5OTtcblxuZnVuY3Rpb24gdmFsaWRhdGVPcmRlcih2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlID49IDAgJiYgdmFsdWUgPCA2KTtcbn1cblxuZnVuY3Rpb24gY2hlY2tPcmRlcih2YWx1ZSkge1xuICBpZiAodmFsdWUgPCAwICYmIHZhbHVlID49IDYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoRVJSX1VOS05PV05fT1JERVIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXVsZXIgZXh0ZW5kcyBNYXRoQXJyYXkge1xuXG4gIC8vIHN0YXRpYyBYWVogPSAwO1xuICAvLyBzdGF0aWMgWVpYID0gMTtcbiAgLy8gc3RhdGljIFpYWSA9IDI7XG4gIC8vIHN0YXRpYyBYWlkgPSAzO1xuICAvLyBzdGF0aWMgWVhaID0gNDtcbiAgLy8gc3RhdGljIFpZWCA9IDU7XG4gIC8vIHN0YXRpYyBSb2xsUGl0Y2hZYXcgPSAwO1xuICAvLyBzdGF0aWMgRGVmYXVsdE9yZGVyID0gMDtcblxuICAvLyBDb25zdGFudHNcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tbXVsdGktc3BhY2VzLCBicmFjZS1zdHlsZSwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuICBzdGF0aWMgZ2V0IFpZWCgpIHsgcmV0dXJuIDA7IH1cbiAgc3RhdGljIGdldCBZWFooKSB7IHJldHVybiAxOyB9XG4gIHN0YXRpYyBnZXQgWFpZKCkgeyByZXR1cm4gMjsgfVxuICBzdGF0aWMgZ2V0IFpYWSgpIHsgcmV0dXJuIDM7IH1cbiAgc3RhdGljIGdldCBZWlgoKSB7IHJldHVybiA0OyB9XG4gIHN0YXRpYyBnZXQgWFlaKCkgeyByZXR1cm4gNTsgfVxuICBzdGF0aWMgZ2V0IFJvbGxQaXRjaFlhdygpIHsgcmV0dXJuIDA7IH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRPcmRlcigpIHsgcmV0dXJuIEV1bGVyLlpZWDsgfVxuICBzdGF0aWMgZ2V0IFJvdGF0aW9uT3JkZXJzKCkge1xuICAgIHJldHVybiBbJ1pZWCcsICdZWFonLCAnWFpZJywgJ1pYWScsICdZWlgnLCAnWFlaJ107XG4gIH1cbiAgc3RhdGljIHJvdGF0aW9uT3JkZXIob3JkZXIpIHsgcmV0dXJuIEV1bGVyLlJvdGF0aW9uT3JkZXJzW29yZGVyXTsgfVxuXG4gIGdldCBFTEVNRU5UUygpIHsgcmV0dXJuIDQ7IH1cbiAgLyogZXNsaW50LWVuYWJsZSBuby1tdWx0aS1zcGFjZXMsIGJyYWNlLXN0eWxlLCBuby1yZXR1cm4tYXNzaWduICovXG5cbiAgLypcbiAgICogTnVtYmVyfE51bWJlcltdLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih4ID0gMCwgeSA9IDAsIHogPSAwLCBvcmRlciA9IEV1bGVyLkRlZmF1bHRPcmRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIEFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSkge1xuICAgICAgdGhpcy5mcm9tVmVjdG9yMyguLi5hcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldCh4LCB5LCB6LCBvcmRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgY29waWVkIGFycmF5IGRvZXMgY29udGFpbiBmb3VydGggZWxlbWVudCwgcHJlc2VydmVzIGN1cnJlbnRseSBzZXQgb3JkZXJcbiAgY29weShhcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gYXJyYXlbaV07XG4gICAgfVxuICAgIHRoaXNbM10gPSBOdW1iZXIuaXNGaW5pdGUoYXJyYXlbM10pIHx8IHRoaXMub3JkZXI7XG4gICAgdGhpcy5jaGVjaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gU2V0cyB0aGUgdGhyZWUgYW5nbGVzLCBhbmQgb3B0aW9uYWxseSBzZXRzIHRoZSByb3RhdGlvbiBvcmRlclxuICAvLyBJZiBvcmRlciBpcyBub3Qgc3BlY2lmaWVkLCBwcmVzZXJ2ZXMgY3VycmVudGx5IHNldCBvcmRlclxuICBzZXQoeCA9IDAsIHkgPSAwLCB6ID0gMCwgb3JkZXIpIHtcbiAgICB0aGlzWzBdID0geDtcbiAgICB0aGlzWzFdID0geTtcbiAgICB0aGlzWzJdID0gejtcbiAgICB0aGlzWzNdID0gTnVtYmVyLmlzRmluaXRlKG9yZGVyKSA/IG9yZGVyIDogdGhpc1szXTtcbiAgICB0aGlzLmNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICByZXR1cm4gdmFsaWRhdGVPcmRlcih0aGlzWzNdKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKHRoaXNbMF0pICYmXG4gICAgICBOdW1iZXIuaXNGaW5pdGUodGhpc1sxXSkgJiZcbiAgICAgIE51bWJlci5pc0Zpbml0ZSh0aGlzWzJdKTtcbiAgfVxuXG4gIC8vIERvZXMgbm90IGNvcHkgdGhlIG9yaWVudGF0aW9uIGVsZW1lbnRcbiAgdG9BcnJheShhcnJheSA9IFtdLCBvZmZzZXQgPSAwKSB7XG4gICAgYXJyYXlbb2Zmc2V0XSA9IHRoaXNbMF07XG4gICAgYXJyYXlbb2Zmc2V0ICsgMV0gPSB0aGlzWzFdO1xuICAgIGFycmF5W29mZnNldCArIDJdID0gdGhpc1syXTtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvLyBDb3BpZXMgdGhlIG9yaWVudGF0aW9uIGVsZW1lbnRcbiAgdG9BcnJheTQoYXJyYXkgPSBbXSwgb2Zmc2V0ID0gMCkge1xuICAgIGFycmF5W29mZnNldF0gPSB0aGlzWzBdO1xuICAgIGFycmF5W29mZnNldCArIDFdID0gdGhpc1sxXTtcbiAgICBhcnJheVtvZmZzZXQgKyAyXSA9IHRoaXNbMl07XG4gICAgYXJyYXlbb2Zmc2V0ICsgM10gPSB0aGlzWzNdO1xuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvVmVjdG9yMyhvcHRpb25hbFJlc3VsdCkge1xuICAgIGlmIChvcHRpb25hbFJlc3VsdCkge1xuICAgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnNldCh0aGlzWzBdLCB0aGlzWzFdLCB0aGlzWzJdKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBWZWN0b3IzKHRoaXNbMF0sIHRoaXNbMV0sIHRoaXNbMl0pO1xuICB9XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tbXVsdGktc3BhY2VzLCBicmFjZS1zdHlsZSwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuICAvLyB4LCB5LCB6IGFuZ2xlIG5vdGF0aW9uIChub3RlOiBvbmx5IGNvcnJlc3BvbmRzIHRvIGF4aXMgaW4gWFlaIG9yaWVudGF0aW9uKVxuICBnZXQgeCgpICAgICAgeyByZXR1cm4gdGhpc1swXTsgfVxuICBzZXQgeCh2YWx1ZSkgeyByZXR1cm4gdGhpc1swXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgeSgpICAgICAgeyByZXR1cm4gdGhpc1sxXTsgfVxuICBzZXQgeSh2YWx1ZSkgeyByZXR1cm4gdGhpc1sxXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgeigpICAgICAgeyByZXR1cm4gdGhpc1syXTsgfVxuICBzZXQgeih2YWx1ZSkgeyByZXR1cm4gdGhpc1syXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuXG4gIC8vIGFscGhhLCBiZXRhLCBnYW1tYSBhbmdsZSBub3RhdGlvblxuICBnZXQgYWxwaGEoKSAgICAgIHsgcmV0dXJuIHRoaXNbMF07IH1cbiAgc2V0IGFscGhhKHZhbHVlKSB7IHJldHVybiB0aGlzWzBdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCBiZXRhKCkgICAgICAgeyByZXR1cm4gdGhpc1sxXTsgfVxuICBzZXQgYmV0YSh2YWx1ZSkgIHsgcmV0dXJuIHRoaXNbMV0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IGdhbW1hKCkgICAgICB7IHJldHVybiB0aGlzWzJdOyB9XG4gIHNldCBnYW1tYSh2YWx1ZSkgeyByZXR1cm4gdGhpc1syXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuXG4gIC8vIHBoaSwgdGhldGEsIHBzaSBhbmdsZSBub3RhdGlvblxuICBnZXQgcGhpKCkgICAgICAgIHsgcmV0dXJuIHRoaXNbMF07IH1cbiAgc2V0IHBoaSh2YWx1ZSkgICB7IHJldHVybiB0aGlzWzBdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCB0aGV0YSgpICAgICAgeyByZXR1cm4gdGhpc1sxXTsgfVxuICBzZXQgdGhldGEodmFsdWUpIHsgcmV0dXJuIHRoaXNbMV0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IHBzaSgpICAgICAgICB7IHJldHVybiB0aGlzWzJdOyB9XG4gIHNldCBwc2kodmFsdWUpICAgeyByZXR1cm4gdGhpc1syXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuXG4gIC8vIHJvdGF0aW9uIG9yZGVyLCBpbiBhbGwgdGhyZWUgYW5nbGUgbm90YXRpb25zXG4gIGdldCBvcmRlcigpICAgICAgeyByZXR1cm4gdGhpc1szXTsgfVxuICBzZXQgb3JkZXIodmFsdWUpIHsgcmV0dXJuIHRoaXNbM10gPSBjaGVja09yZGVyKHZhbHVlKTsgfVxuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1tdWx0aS1zcGFjZXMsIGJyYWNlLXN0eWxlLCBuby1yZXR1cm4tYXNzaWduICovXG5cbiAgLy8gQ29uc3RydWN0b3JzXG4gIGZyb21WZWN0b3IzKHYsIG9yZGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KHZbMF0sIHZbMV0sIHZbMl0sIE51bWJlci5pc0Zpbml0ZShvcmRlcikgPyBvcmRlciA6IHRoaXNbM10pO1xuICB9XG5cbiAgLy8gVE9ETyAtIHdpdGggYW5kIHdpdGhvdXQgNHRoIGVsZW1lbnRcbiAgZnJvbUFycmF5KGFycmF5LCBvZmZzZXQgPSAwKSB7XG4gICAgdGhpc1swXSA9IGFycmF5WzAgKyBvZmZzZXRdO1xuICAgIHRoaXNbMV0gPSBhcnJheVsxICsgb2Zmc2V0XTtcbiAgICB0aGlzWzJdID0gYXJyYXlbMiArIG9mZnNldF07XG4gICAgaWYgKGFycmF5WzNdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXNbM10gPSBhcnJheVszXTtcbiAgICB9XG4gICAgdGhpcy5jaGVjaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gQ29tbW9uIFpZWCByb3RhdGlvbiBvcmRlclxuICBmcm9tUm9sbFBpdGNoWWF3KHJvbGwsIHBpdGNoLCB5YXcpIHtcbiAgICByZXR1cm4gdGhpcy5zZXQocm9sbCwgcGl0Y2gsIHlhdywgRXVsZXIuWllYKTtcbiAgfVxuXG4gIGZyb21RdWF0ZXJuaW9uKHEsIG9yZGVyKSB7XG4gICAgdGhpcy5fZnJvbVJvdGF0aW9uTWF0cml4KE1hdHJpeDQuZnJvbVF1YXRlcm5pb24ocSksIG9yZGVyKTtcbiAgICB0aGlzLmNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmcm9tUm90YXRpb25NYXRyaXgobSwgb3JkZXIgPSBFdWxlci5EZWZhdWx0T3JkZXIpIHtcbiAgICB0aGlzLl9mcm9tUm90YXRpb25NYXRyaXgobSwgb3JkZXIpO1xuICAgIHRoaXMuY2hlY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEFDQ0VTU09SU1xuXG4gIC8vIEByZXR1cm4ge01hdHJpeDR9IGEgcm90YXRpb24gbWF0cml4IGNvcnJlc3BvbmRpbmcgdG8gcm90YXRpb25zXG4gIC8vICAgcGVyIHRoZSBzcGVjaWZpZWQgZXVsZXIgYW5nbGVzXG4gIGdldFJvdGF0aW9uTWF0cml4KG0gPSBuZXcgTWF0cml4NCgpKSB7XG4gICAgdGhpcy5fZ2V0Um90YXRpb25NYXRyaXgobSk7XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICBnZXRRdWF0ZXJuaW9uKCkge1xuICAgIGNvbnN0IHEgPSBuZXcgUXVhdGVybmlvbigpO1xuICAgIHN3aXRjaCAodGhpc1s0XSkge1xuICAgIGNhc2UgRXVsZXIuWFlaOlxuICAgICAgcmV0dXJuIHEucm90YXRlWCh0aGlzWzBdKS5yb3RhdGVZKHRoaXNbMV0pLnJvdGF0ZVoodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5ZWFo6XG4gICAgICByZXR1cm4gcS5yb3RhdGVZKHRoaXNbMF0pLnJvdGF0ZVgodGhpc1sxXSkucm90YXRlWih0aGlzWzJdKTtcbiAgICBjYXNlIEV1bGVyLlpYWTpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVoodGhpc1swXSkucm90YXRlWCh0aGlzWzFdKS5yb3RhdGVZKHRoaXNbMl0pO1xuICAgIGNhc2UgRXVsZXIuWllYOlxuICAgICAgcmV0dXJuIHEucm90YXRlWih0aGlzWzBdKS5yb3RhdGVZKHRoaXNbMV0pLnJvdGF0ZVgodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5ZWlg6XG4gICAgICByZXR1cm4gcS5yb3RhdGVZKHRoaXNbMF0pLnJvdGF0ZVoodGhpc1sxXSkucm90YXRlWCh0aGlzWzJdKTtcbiAgICBjYXNlIEV1bGVyLlhaWTpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVgodGhpc1swXSkucm90YXRlWih0aGlzWzFdKS5yb3RhdGVZKHRoaXNbMl0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJSX1VOS05PV05fT1JERVIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElOVEVSTkFMIE1FVEhPRFNcblxuICAvLyBDb25jZXJzaW9uIGZyb20gRXVsZXIgdG8gcm90YXRpb24gbWF0cml4IGFuZCBmcm9tIG1hdHJpeCB0byBFdWxlclxuICAvLyBBZGFwdGVkIGZyb20gdGhyZWUuanMgdW5kZXIgTUlUIGxpY2Vuc2VcblxuICAvLyAvLyBXQVJOSU5HOiB0aGlzIGRpc2NhcmRzIHJldm9sdXRpb24gaW5mb3JtYXRpb24gLWJob3VzdG9uXG4gIC8vIHJlb3JkZXIobmV3T3JkZXIpIHtcbiAgLy8gICBjb25zdCBxID0gbmV3IFF1YXRlcm5pb24oKS5zZXRGcm9tRXVsZXIodGhpcyk7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2V0RnJvbVF1YXRlcm5pb24ocSwgbmV3T3JkZXIpO1xuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHksIG1heC1zdGF0ZW1lbnRzLCBvbmUtdmFyICovXG4gIF9mcm9tUm90YXRpb25NYXRyaXgobSwgb3JkZXIgPSBFdWxlci5EZWZhdWx0T3JkZXIpIHtcbiAgICAvLyBhc3N1bWVzIHRoZSB1cHBlciAzeDMgb2YgbSBpcyBhIHB1cmUgcm90YXRpb24gbWF0cml4IChpLmUsIHVuc2NhbGVkKVxuXG4gICAgY29uc3QgdGUgPSBtLmVsZW1lbnRzO1xuICAgIGNvbnN0IG0xMSA9IHRlWzBdLCBtMTIgPSB0ZVs0XSwgbTEzID0gdGVbOF07XG4gICAgY29uc3QgbTIxID0gdGVbMV0sIG0yMiA9IHRlWzVdLCBtMjMgPSB0ZVs5XTtcbiAgICBjb25zdCBtMzEgPSB0ZVsyXSwgbTMyID0gdGVbNl0sIG0zMyA9IHRlWzEwXTtcblxuICAgIG9yZGVyID0gb3JkZXIgfHwgdGhpc1szXTtcblxuICAgIHN3aXRjaCAob3JkZXIpIHtcbiAgICBjYXNlIEV1bGVyLlhZWjpcbiAgICAgIHRoaXNbMV0gPSBNYXRoLmFzaW4oY2xhbXAobTEzLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTEzKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1swXSA9IE1hdGguYXRhbjIoLW0yMywgbTMzKTtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIoLW0xMiwgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKG0zMiwgbTIyKTtcbiAgICAgICAgdGhpc1syXSA9IDA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWVhaOlxuICAgICAgdGhpc1swXSA9IE1hdGguYXNpbigtY2xhbXAobTIzLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTIzKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1sxXSA9IE1hdGguYXRhbjIobTEzLCBtMzMpO1xuICAgICAgICB0aGlzWzJdID0gTWF0aC5hdGFuMihtMjEsIG0yMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMigtbTMxLCBtMTEpO1xuICAgICAgICB0aGlzWzJdID0gMDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBFdWxlci5aWFk6XG4gICAgICB0aGlzWzBdID0gTWF0aC5hc2luKGNsYW1wKG0zMiwgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0zMikgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKC1tMzEsIG0zMyk7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKC1tMTIsIG0yMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzFdID0gMDtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIobTIxLCBtMTEpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEV1bGVyLlpZWDpcbiAgICAgIHRoaXNbMV0gPSBNYXRoLmFzaW4oLWNsYW1wKG0zMSwgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0zMSkgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKG0zMiwgbTMzKTtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIobTIxLCBtMTEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1swXSA9IDA7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKC1tMTIsIG0yMik7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWVpYOlxuICAgICAgdGhpc1syXSA9IE1hdGguYXNpbihjbGFtcChtMjEsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMjEpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMigtbTIzLCBtMjIpO1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMigtbTMxLCBtMTEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1swXSA9IDA7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKG0xMywgbTMzKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBFdWxlci5YWlk6XG4gICAgICB0aGlzWzJdID0gTWF0aC5hc2luKC1jbGFtcChtMTIsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMTIpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMihtMzIsIG0yMik7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKG0xMywgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKC1tMjMsIG0zMyk7XG4gICAgICAgIHRoaXNbMV0gPSAwO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUl9VTktOT1dOX09SREVSKTtcbiAgICB9XG5cbiAgICB0aGlzWzNdID0gb3JkZXI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIF9nZXRSb3RhdGlvbk1hdHJpeCgpIHtcbiAgICBjb25zdCB0ZSA9IG5ldyBNYXRyaXg0KCk7XG5cbiAgICBjb25zdCB4ID0gdGhpcy54LCB5ID0gdGhpcy55LCB6ID0gdGhpcy56O1xuICAgIGNvbnN0IGEgPSBNYXRoLmNvcyh4KTtcbiAgICBjb25zdCBjID0gTWF0aC5jb3MoeSk7XG4gICAgY29uc3QgZSA9IE1hdGguY29zKHopO1xuICAgIGNvbnN0IGIgPSBNYXRoLnNpbih4KTtcbiAgICBjb25zdCBkID0gTWF0aC5zaW4oeSk7XG4gICAgY29uc3QgZiA9IE1hdGguc2luKHopO1xuXG4gICAgc3dpdGNoICh0aGlzWzNdKSB7XG4gICAgY2FzZSBFdWxlci5YWVo6IHtcbiAgICAgIGNvbnN0IGFlID0gYSAqIGUsIGFmID0gYSAqIGYsIGJlID0gYiAqIGUsIGJmID0gYiAqIGY7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IC1jICogZjtcbiAgICAgIHRlWzhdID0gZDtcblxuICAgICAgdGVbMV0gPSBhZiArIGJlICogZDtcbiAgICAgIHRlWzVdID0gYWUgLSBiZiAqIGQ7XG4gICAgICB0ZVs5XSA9IC1iICogYztcblxuICAgICAgdGVbMl0gPSBiZiAtIGFlICogZDtcbiAgICAgIHRlWzZdID0gYmUgKyBhZiAqIGQ7XG4gICAgICB0ZVsxMF0gPSBhICogYztcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgRXVsZXIuWVhaOiB7XG4gICAgICBjb25zdCBjZSA9IGMgKiBlLCBjZiA9IGMgKiBmLCBkZSA9IGQgKiBlLCBkZiA9IGQgKiBmO1xuXG4gICAgICB0ZVswXSA9IGNlICsgZGYgKiBiO1xuICAgICAgdGVbNF0gPSBkZSAqIGIgLSBjZjtcbiAgICAgIHRlWzhdID0gYSAqIGQ7XG5cbiAgICAgIHRlWzFdID0gYSAqIGY7XG4gICAgICB0ZVs1XSA9IGEgKiBlO1xuICAgICAgdGVbOV0gPSAtYjtcblxuICAgICAgdGVbMl0gPSBjZiAqIGIgLSBkZTtcbiAgICAgIHRlWzZdID0gZGYgKyBjZSAqIGI7XG4gICAgICB0ZVsxMF0gPSBhICogYztcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgRXVsZXIuWlhZOiB7XG4gICAgICBjb25zdCBjZSA9IGMgKiBlLCBjZiA9IGMgKiBmLCBkZSA9IGQgKiBlLCBkZiA9IGQgKiBmO1xuXG4gICAgICB0ZVswXSA9IGNlIC0gZGYgKiBiO1xuICAgICAgdGVbNF0gPSAtYSAqIGY7XG4gICAgICB0ZVs4XSA9IGRlICsgY2YgKiBiO1xuXG4gICAgICB0ZVsxXSA9IGNmICsgZGUgKiBiO1xuICAgICAgdGVbNV0gPSBhICogZTtcbiAgICAgIHRlWzldID0gZGYgLSBjZSAqIGI7XG5cbiAgICAgIHRlWzJdID0gLWEgKiBkO1xuICAgICAgdGVbNl0gPSBiO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLlpZWDoge1xuICAgICAgY29uc3QgYWUgPSBhICogZSwgYWYgPSBhICogZiwgYmUgPSBiICogZSwgYmYgPSBiICogZjtcblxuICAgICAgdGVbMF0gPSBjICogZTtcbiAgICAgIHRlWzRdID0gYmUgKiBkIC0gYWY7XG4gICAgICB0ZVs4XSA9IGFlICogZCArIGJmO1xuXG4gICAgICB0ZVsxXSA9IGMgKiBmO1xuICAgICAgdGVbNV0gPSBiZiAqIGQgKyBhZTtcbiAgICAgIHRlWzldID0gYWYgKiBkIC0gYmU7XG5cbiAgICAgIHRlWzJdID0gLWQ7XG4gICAgICB0ZVs2XSA9IGIgKiBjO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLllaWDoge1xuICAgICAgY29uc3QgYWMgPSBhICogYywgYWQgPSBhICogZCwgYmMgPSBiICogYywgYmQgPSBiICogZDtcblxuICAgICAgdGVbMF0gPSBjICogZTtcbiAgICAgIHRlWzRdID0gYmQgLSBhYyAqIGY7XG4gICAgICB0ZVs4XSA9IGJjICogZiArIGFkO1xuXG4gICAgICB0ZVsxXSA9IGY7XG4gICAgICB0ZVs1XSA9IGEgKiBlO1xuICAgICAgdGVbOV0gPSAtYiAqIGU7XG5cbiAgICAgIHRlWzJdID0gLWQgKiBlO1xuICAgICAgdGVbNl0gPSBhZCAqIGYgKyBiYztcbiAgICAgIHRlWzEwXSA9IGFjIC0gYmQgKiBmO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBFdWxlci5YWlk6IHtcbiAgICAgIGNvbnN0IGFjID0gYSAqIGMsIGFkID0gYSAqIGQsIGJjID0gYiAqIGMsIGJkID0gYiAqIGQ7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IC1mO1xuICAgICAgdGVbOF0gPSBkICogZTtcblxuICAgICAgdGVbMV0gPSBhYyAqIGYgKyBiZDtcbiAgICAgIHRlWzVdID0gYSAqIGU7XG4gICAgICB0ZVs5XSA9IGFkICogZiAtIGJjO1xuXG4gICAgICB0ZVsyXSA9IGJjICogZiAtIGFkO1xuICAgICAgdGVbNl0gPSBiICogZTtcbiAgICAgIHRlWzEwXSA9IGJkICogZiArIGFjO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihFUlJfVU5LTk9XTl9PUkRFUik7XG4gICAgfVxuXG4gICAgLy8gbGFzdCBjb2x1bW5cbiAgICB0ZVszXSA9IDA7XG4gICAgdGVbN10gPSAwO1xuICAgIHRlWzExXSA9IDA7XG5cbiAgICAvLyBib3R0b20gcm93XG4gICAgdGVbMTJdID0gMDtcbiAgICB0ZVsxM10gPSAwO1xuICAgIHRlWzE0XSA9IDA7XG4gICAgdGVbMTVdID0gMTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSwgbWF4LXN0YXRlbWVudHMsIG9uZS12YXIgKi9cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ldWxlci5qcyJdLCJuYW1lcyI6WyJNYXRoQXJyYXkiLCJjaGVja051bWJlciIsImNsYW1wIiwiTWF0cml4NCIsIlF1YXRlcm5pb24iLCJWZWN0b3IzIiwiRVJSX1VOS05PV05fT1JERVIiLCJBTE1PU1RfT05FIiwidmFsaWRhdGVPcmRlciIsInZhbHVlIiwiY2hlY2tPcmRlciIsIkVycm9yIiwiRXVsZXIiLCJvcmRlciIsIlJvdGF0aW9uT3JkZXJzIiwiWllYIiwieCIsInkiLCJ6IiwiRGVmYXVsdE9yZGVyIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiZnJvbVZlY3RvcjMiLCJzZXQiLCJhcnJheSIsImkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNoZWNrIiwib2Zmc2V0Iiwib3B0aW9uYWxSZXN1bHQiLCJ2IiwidW5kZWZpbmVkIiwicm9sbCIsInBpdGNoIiwieWF3IiwicSIsIl9mcm9tUm90YXRpb25NYXRyaXgiLCJmcm9tUXVhdGVybmlvbiIsIm0iLCJfZ2V0Um90YXRpb25NYXRyaXgiLCJYWVoiLCJyb3RhdGVYIiwicm90YXRlWSIsInJvdGF0ZVoiLCJZWFoiLCJaWFkiLCJZWlgiLCJYWlkiLCJ0ZSIsImVsZW1lbnRzIiwibTExIiwibTEyIiwibTEzIiwibTIxIiwibTIyIiwibTIzIiwibTMxIiwibTMyIiwibTMzIiwiTWF0aCIsImFzaW4iLCJhYnMiLCJhdGFuMiIsImEiLCJjb3MiLCJjIiwiZSIsImIiLCJzaW4iLCJkIiwiZiIsImFlIiwiYWYiLCJiZSIsImJmIiwiY2UiLCJjZiIsImRlIiwiZGYiLCJhYyIsImFkIiwiYmMiLCJiZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPQSxTQUFQLE1BQXNCLGNBQXRCO0FBQ0EsU0FBUUMsV0FBUixFQUFxQkMsS0FBckIsUUFBaUMsVUFBakM7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLFdBQXBCO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixjQUF2QjtBQUNBLE9B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QWlCLEs7c0JBQzNCQSxLLEVBQVE7QUFBRSxhQUFPLEtBQUssQ0FBTCxJQUFVUixZQUFZUSxLQUFaLENBQWpCO0FBQXNDOzs7d0JBQ3hDO0FBQUUsYUFBTyxLQUFLLENBQUwsQ0FBUDtBQUFpQixLO3NCQUMxQkEsSyxFQUFPO0FBQUUsYUFBTyxLQUFLLENBQUwsSUFBVVIsWUFBWVEsS0FBWixDQUFqQjtBQUFzQzs7O3dCQUN4QztBQUFFLGFBQU8sS0FBSyxDQUFMLENBQVA7QUFBaUIsSztzQkFDNUJBLEssRUFBUztBQUFFLGFBQU8sS0FBSyxDQUFMLElBQVVSLFlBQVlRLEtBQVosQ0FBakI7QUFBc0M7O0FBRXpEOzs7O3dCQUNpQjtBQUFFLGFBQU8sS0FBSyxDQUFMLENBQVA7QUFBaUIsSztzQkFDMUJBLEssRUFBTztBQUFFLGFBQU8sS0FBSyxDQUFMLElBQVVDLFdBQVdELEtBQVgsQ0FBakI7QUFBcUM7Ozs7RUFqSXZCVCxTOztlQUFkWSxLIiwiZmlsZSI6ImV1bGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hdGhBcnJheSBmcm9tICcuL21hdGgtYXJyYXknO1xuaW1wb3J0IHtjaGVja051bWJlciwgY2xhbXB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCBNYXRyaXg0IGZyb20gJy4vbWF0cml4NCc7XG5pbXBvcnQgUXVhdGVybmlvbiBmcm9tICcuL3F1YXRlcm5pb24nO1xuaW1wb3J0IFZlY3RvcjMgZnJvbSAnLi92ZWN0b3IzJztcblxuLy8gSW50ZXJuYWwgY29uc3RhbnRzXG5jb25zdCBFUlJfVU5LTk9XTl9PUkRFUiA9ICdVbmtub3duIEV1bGVyIGFuZ2xlIG9yZGVyJztcbmNvbnN0IEFMTU9TVF9PTkUgPSAwLjk5OTk5O1xuXG5mdW5jdGlvbiB2YWxpZGF0ZU9yZGVyKHZhbHVlKSB7XG4gIHJldHVybiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDYpO1xufVxuXG5mdW5jdGlvbiBjaGVja09yZGVyKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA8IDAgJiYgdmFsdWUgPj0gNikge1xuICAgIHRocm93IG5ldyBFcnJvcihFUlJfVU5LTk9XTl9PUkRFUik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFdWxlciBleHRlbmRzIE1hdGhBcnJheSB7XG5cbiAgLy8gc3RhdGljIFhZWiA9IDA7XG4gIC8vIHN0YXRpYyBZWlggPSAxO1xuICAvLyBzdGF0aWMgWlhZID0gMjtcbiAgLy8gc3RhdGljIFhaWSA9IDM7XG4gIC8vIHN0YXRpYyBZWFogPSA0O1xuICAvLyBzdGF0aWMgWllYID0gNTtcbiAgLy8gc3RhdGljIFJvbGxQaXRjaFlhdyA9IDA7XG4gIC8vIHN0YXRpYyBEZWZhdWx0T3JkZXIgPSAwO1xuXG4gIC8vIENvbnN0YW50c1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1tdWx0aS1zcGFjZXMsIGJyYWNlLXN0eWxlLCBuby1yZXR1cm4tYXNzaWduICovXG4gIHN0YXRpYyBnZXQgWllYKCkgeyByZXR1cm4gMDsgfVxuICBzdGF0aWMgZ2V0IFlYWigpIHsgcmV0dXJuIDE7IH1cbiAgc3RhdGljIGdldCBYWlkoKSB7IHJldHVybiAyOyB9XG4gIHN0YXRpYyBnZXQgWlhZKCkgeyByZXR1cm4gMzsgfVxuICBzdGF0aWMgZ2V0IFlaWCgpIHsgcmV0dXJuIDQ7IH1cbiAgc3RhdGljIGdldCBYWVooKSB7IHJldHVybiA1OyB9XG4gIHN0YXRpYyBnZXQgUm9sbFBpdGNoWWF3KCkgeyByZXR1cm4gMDsgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdE9yZGVyKCkgeyByZXR1cm4gRXVsZXIuWllYOyB9XG4gIHN0YXRpYyBnZXQgUm90YXRpb25PcmRlcnMoKSB7XG4gICAgcmV0dXJuIFsnWllYJywgJ1lYWicsICdYWlknLCAnWlhZJywgJ1laWCcsICdYWVonXTtcbiAgfVxuICBzdGF0aWMgcm90YXRpb25PcmRlcihvcmRlcikgeyByZXR1cm4gRXVsZXIuUm90YXRpb25PcmRlcnNbb3JkZXJdOyB9XG5cbiAgZ2V0IEVMRU1FTlRTKCkgeyByZXR1cm4gNDsgfVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLW11bHRpLXNwYWNlcywgYnJhY2Utc3R5bGUsIG5vLXJldHVybi1hc3NpZ24gKi9cblxuICAvKlxuICAgKiBOdW1iZXJ8TnVtYmVyW10sIE51bWJlciwgTnVtYmVyLCBOdW1iZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHggPSAwLCB5ID0gMCwgeiA9IDAsIG9yZGVyID0gRXVsZXIuRGVmYXVsdE9yZGVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKSB7XG4gICAgICB0aGlzLmZyb21WZWN0b3IzKC4uLmFyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0KHgsIHksIHosIG9yZGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiBjb3BpZWQgYXJyYXkgZG9lcyBjb250YWluIGZvdXJ0aCBlbGVtZW50LCBwcmVzZXJ2ZXMgY3VycmVudGx5IHNldCBvcmRlclxuICBjb3B5KGFycmF5KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSBhcnJheVtpXTtcbiAgICB9XG4gICAgdGhpc1szXSA9IE51bWJlci5pc0Zpbml0ZShhcnJheVszXSkgfHwgdGhpcy5vcmRlcjtcbiAgICB0aGlzLmNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBTZXRzIHRoZSB0aHJlZSBhbmdsZXMsIGFuZCBvcHRpb25hbGx5IHNldHMgdGhlIHJvdGF0aW9uIG9yZGVyXG4gIC8vIElmIG9yZGVyIGlzIG5vdCBzcGVjaWZpZWQsIHByZXNlcnZlcyBjdXJyZW50bHkgc2V0IG9yZGVyXG4gIHNldCh4ID0gMCwgeSA9IDAsIHogPSAwLCBvcmRlcikge1xuICAgIHRoaXNbMF0gPSB4O1xuICAgIHRoaXNbMV0gPSB5O1xuICAgIHRoaXNbMl0gPSB6O1xuICAgIHRoaXNbM10gPSBOdW1iZXIuaXNGaW5pdGUob3JkZXIpID8gb3JkZXIgOiB0aGlzWzNdO1xuICAgIHRoaXMuY2hlY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHJldHVybiB2YWxpZGF0ZU9yZGVyKHRoaXNbM10pICYmXG4gICAgICBOdW1iZXIuaXNGaW5pdGUodGhpc1swXSkgJiZcbiAgICAgIE51bWJlci5pc0Zpbml0ZSh0aGlzWzFdKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKHRoaXNbMl0pO1xuICB9XG5cbiAgLy8gRG9lcyBub3QgY29weSB0aGUgb3JpZW50YXRpb24gZWxlbWVudFxuICB0b0FycmF5KGFycmF5ID0gW10sIG9mZnNldCA9IDApIHtcbiAgICBhcnJheVtvZmZzZXRdID0gdGhpc1swXTtcbiAgICBhcnJheVtvZmZzZXQgKyAxXSA9IHRoaXNbMV07XG4gICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSB0aGlzWzJdO1xuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8vIENvcGllcyB0aGUgb3JpZW50YXRpb24gZWxlbWVudFxuICB0b0FycmF5NChhcnJheSA9IFtdLCBvZmZzZXQgPSAwKSB7XG4gICAgYXJyYXlbb2Zmc2V0XSA9IHRoaXNbMF07XG4gICAgYXJyYXlbb2Zmc2V0ICsgMV0gPSB0aGlzWzFdO1xuICAgIGFycmF5W29mZnNldCArIDJdID0gdGhpc1syXTtcbiAgICBhcnJheVtvZmZzZXQgKyAzXSA9IHRoaXNbM107XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgdG9WZWN0b3IzKG9wdGlvbmFsUmVzdWx0KSB7XG4gICAgaWYgKG9wdGlvbmFsUmVzdWx0KSB7XG4gICAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQuc2V0KHRoaXNbMF0sIHRoaXNbMV0sIHRoaXNbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFZlY3RvcjModGhpc1swXSwgdGhpc1sxXSwgdGhpc1syXSk7XG4gIH1cblxuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1tdWx0aS1zcGFjZXMsIGJyYWNlLXN0eWxlLCBuby1yZXR1cm4tYXNzaWduICovXG4gIC8vIHgsIHksIHogYW5nbGUgbm90YXRpb24gKG5vdGU6IG9ubHkgY29ycmVzcG9uZHMgdG8gYXhpcyBpbiBYWVogb3JpZW50YXRpb24pXG4gIGdldCB4KCkgICAgICB7IHJldHVybiB0aGlzWzBdOyB9XG4gIHNldCB4KHZhbHVlKSB7IHJldHVybiB0aGlzWzBdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCB5KCkgICAgICB7IHJldHVybiB0aGlzWzFdOyB9XG4gIHNldCB5KHZhbHVlKSB7IHJldHVybiB0aGlzWzFdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCB6KCkgICAgICB7IHJldHVybiB0aGlzWzJdOyB9XG4gIHNldCB6KHZhbHVlKSB7IHJldHVybiB0aGlzWzJdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG5cbiAgLy8gYWxwaGEsIGJldGEsIGdhbW1hIGFuZ2xlIG5vdGF0aW9uXG4gIGdldCBhbHBoYSgpICAgICAgeyByZXR1cm4gdGhpc1swXTsgfVxuICBzZXQgYWxwaGEodmFsdWUpIHsgcmV0dXJuIHRoaXNbMF0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IGJldGEoKSAgICAgICB7IHJldHVybiB0aGlzWzFdOyB9XG4gIHNldCBiZXRhKHZhbHVlKSAgeyByZXR1cm4gdGhpc1sxXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgZ2FtbWEoKSAgICAgIHsgcmV0dXJuIHRoaXNbMl07IH1cbiAgc2V0IGdhbW1hKHZhbHVlKSB7IHJldHVybiB0aGlzWzJdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG5cbiAgLy8gcGhpLCB0aGV0YSwgcHNpIGFuZ2xlIG5vdGF0aW9uXG4gIGdldCBwaGkoKSAgICAgICAgeyByZXR1cm4gdGhpc1swXTsgfVxuICBzZXQgcGhpKHZhbHVlKSAgIHsgcmV0dXJuIHRoaXNbMF0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IHRoZXRhKCkgICAgICB7IHJldHVybiB0aGlzWzFdOyB9XG4gIHNldCB0aGV0YSh2YWx1ZSkgeyByZXR1cm4gdGhpc1sxXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgcHNpKCkgICAgICAgIHsgcmV0dXJuIHRoaXNbMl07IH1cbiAgc2V0IHBzaSh2YWx1ZSkgICB7IHJldHVybiB0aGlzWzJdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG5cbiAgLy8gcm9sbCwgcGl0Y2gsIHlhdyBhbmdsZSBub3RhdGlvblxuICBnZXQgcm9sbCgpICAgICAgIHsgcmV0dXJuIHRoaXNbMF07IH1cbiAgc2V0IHJvbGwodmFsdWUpICB7IHJldHVybiB0aGlzWzBdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCBwaXRjaCgpICAgICAgeyByZXR1cm4gdGhpc1sxXTsgfVxuICBzZXQgcGl0Y2godmFsdWUpIHsgcmV0dXJuIHRoaXNbMV0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IHlhdygpICAgICAgICB7IHJldHVybiB0aGlzWzJdOyB9XG4gIHNldCB5YXcodmFsdWUpICAgeyByZXR1cm4gdGhpc1syXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuXG4gIC8vIHJvdGF0aW9uIG9yZGVyLCBpbiBhbGwgdGhyZWUgYW5nbGUgbm90YXRpb25zXG4gIGdldCBvcmRlcigpICAgICAgeyByZXR1cm4gdGhpc1szXTsgfVxuICBzZXQgb3JkZXIodmFsdWUpIHsgcmV0dXJuIHRoaXNbM10gPSBjaGVja09yZGVyKHZhbHVlKTsgfVxuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1tdWx0aS1zcGFjZXMsIGJyYWNlLXN0eWxlLCBuby1yZXR1cm4tYXNzaWduICovXG5cbiAgLy8gQ29uc3RydWN0b3JzXG4gIGZyb21WZWN0b3IzKHYsIG9yZGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KHZbMF0sIHZbMV0sIHZbMl0sIE51bWJlci5pc0Zpbml0ZShvcmRlcikgPyBvcmRlciA6IHRoaXNbM10pO1xuICB9XG5cbiAgLy8gVE9ETyAtIHdpdGggYW5kIHdpdGhvdXQgNHRoIGVsZW1lbnRcbiAgZnJvbUFycmF5KGFycmF5LCBvZmZzZXQgPSAwKSB7XG4gICAgdGhpc1swXSA9IGFycmF5WzAgKyBvZmZzZXRdO1xuICAgIHRoaXNbMV0gPSBhcnJheVsxICsgb2Zmc2V0XTtcbiAgICB0aGlzWzJdID0gYXJyYXlbMiArIG9mZnNldF07XG4gICAgaWYgKGFycmF5WzNdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXNbM10gPSBhcnJheVszXTtcbiAgICB9XG4gICAgdGhpcy5jaGVjaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gQ29tbW9uIFpZWCByb3RhdGlvbiBvcmRlclxuICBmcm9tUm9sbFBpdGNoWWF3KHJvbGwsIHBpdGNoLCB5YXcpIHtcbiAgICByZXR1cm4gdGhpcy5zZXQocm9sbCwgcGl0Y2gsIHlhdywgRXVsZXIuWllYKTtcbiAgfVxuXG4gIGZyb21RdWF0ZXJuaW9uKHEsIG9yZGVyKSB7XG4gICAgdGhpcy5fZnJvbVJvdGF0aW9uTWF0cml4KE1hdHJpeDQuZnJvbVF1YXRlcm5pb24ocSksIG9yZGVyKTtcbiAgICB0aGlzLmNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmcm9tUm90YXRpb25NYXRyaXgobSwgb3JkZXIgPSBFdWxlci5EZWZhdWx0T3JkZXIpIHtcbiAgICB0aGlzLl9mcm9tUm90YXRpb25NYXRyaXgobSwgb3JkZXIpO1xuICAgIHRoaXMuY2hlY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEFDQ0VTU09SU1xuXG4gIC8vIEByZXR1cm4ge01hdHJpeDR9IGEgcm90YXRpb24gbWF0cml4IGNvcnJlc3BvbmRpbmcgdG8gcm90YXRpb25zXG4gIC8vICAgcGVyIHRoZSBzcGVjaWZpZWQgZXVsZXIgYW5nbGVzXG4gIGdldFJvdGF0aW9uTWF0cml4KG0gPSBuZXcgTWF0cml4NCgpKSB7XG4gICAgdGhpcy5fZ2V0Um90YXRpb25NYXRyaXgobSk7XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICBnZXRRdWF0ZXJuaW9uKCkge1xuICAgIGNvbnN0IHEgPSBuZXcgUXVhdGVybmlvbigpO1xuICAgIHN3aXRjaCAodGhpc1s0XSkge1xuICAgIGNhc2UgRXVsZXIuWFlaOlxuICAgICAgcmV0dXJuIHEucm90YXRlWCh0aGlzWzBdKS5yb3RhdGVZKHRoaXNbMV0pLnJvdGF0ZVoodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5ZWFo6XG4gICAgICByZXR1cm4gcS5yb3RhdGVZKHRoaXNbMF0pLnJvdGF0ZVgodGhpc1sxXSkucm90YXRlWih0aGlzWzJdKTtcbiAgICBjYXNlIEV1bGVyLlpYWTpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVoodGhpc1swXSkucm90YXRlWCh0aGlzWzFdKS5yb3RhdGVZKHRoaXNbMl0pO1xuICAgIGNhc2UgRXVsZXIuWllYOlxuICAgICAgcmV0dXJuIHEucm90YXRlWih0aGlzWzBdKS5yb3RhdGVZKHRoaXNbMV0pLnJvdGF0ZVgodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5ZWlg6XG4gICAgICByZXR1cm4gcS5yb3RhdGVZKHRoaXNbMF0pLnJvdGF0ZVoodGhpc1sxXSkucm90YXRlWCh0aGlzWzJdKTtcbiAgICBjYXNlIEV1bGVyLlhaWTpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVgodGhpc1swXSkucm90YXRlWih0aGlzWzFdKS5yb3RhdGVZKHRoaXNbMl0pO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJSX1VOS05PV05fT1JERVIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElOVEVSTkFMIE1FVEhPRFNcblxuICAvLyBDb25jZXJzaW9uIGZyb20gRXVsZXIgdG8gcm90YXRpb24gbWF0cml4IGFuZCBmcm9tIG1hdHJpeCB0byBFdWxlclxuICAvLyBBZGFwdGVkIGZyb20gdGhyZWUuanMgdW5kZXIgTUlUIGxpY2Vuc2VcblxuICAvLyAvLyBXQVJOSU5HOiB0aGlzIGRpc2NhcmRzIHJldm9sdXRpb24gaW5mb3JtYXRpb24gLWJob3VzdG9uXG4gIC8vIHJlb3JkZXIobmV3T3JkZXIpIHtcbiAgLy8gICBjb25zdCBxID0gbmV3IFF1YXRlcm5pb24oKS5zZXRGcm9tRXVsZXIodGhpcyk7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2V0RnJvbVF1YXRlcm5pb24ocSwgbmV3T3JkZXIpO1xuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHksIG1heC1zdGF0ZW1lbnRzLCBvbmUtdmFyICovXG4gIF9mcm9tUm90YXRpb25NYXRyaXgobSwgb3JkZXIgPSBFdWxlci5EZWZhdWx0T3JkZXIpIHtcbiAgICAvLyBhc3N1bWVzIHRoZSB1cHBlciAzeDMgb2YgbSBpcyBhIHB1cmUgcm90YXRpb24gbWF0cml4IChpLmUsIHVuc2NhbGVkKVxuXG4gICAgY29uc3QgdGUgPSBtLmVsZW1lbnRzO1xuICAgIGNvbnN0IG0xMSA9IHRlWzBdLCBtMTIgPSB0ZVs0XSwgbTEzID0gdGVbOF07XG4gICAgY29uc3QgbTIxID0gdGVbMV0sIG0yMiA9IHRlWzVdLCBtMjMgPSB0ZVs5XTtcbiAgICBjb25zdCBtMzEgPSB0ZVsyXSwgbTMyID0gdGVbNl0sIG0zMyA9IHRlWzEwXTtcblxuICAgIG9yZGVyID0gb3JkZXIgfHwgdGhpc1szXTtcblxuICAgIHN3aXRjaCAob3JkZXIpIHtcbiAgICBjYXNlIEV1bGVyLlhZWjpcbiAgICAgIHRoaXNbMV0gPSBNYXRoLmFzaW4oY2xhbXAobTEzLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTEzKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1swXSA9IE1hdGguYXRhbjIoLW0yMywgbTMzKTtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIoLW0xMiwgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKG0zMiwgbTIyKTtcbiAgICAgICAgdGhpc1syXSA9IDA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWVhaOlxuICAgICAgdGhpc1swXSA9IE1hdGguYXNpbigtY2xhbXAobTIzLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTIzKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1sxXSA9IE1hdGguYXRhbjIobTEzLCBtMzMpO1xuICAgICAgICB0aGlzWzJdID0gTWF0aC5hdGFuMihtMjEsIG0yMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMigtbTMxLCBtMTEpO1xuICAgICAgICB0aGlzWzJdID0gMDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBFdWxlci5aWFk6XG4gICAgICB0aGlzWzBdID0gTWF0aC5hc2luKGNsYW1wKG0zMiwgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0zMikgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKC1tMzEsIG0zMyk7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKC1tMTIsIG0yMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzFdID0gMDtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIobTIxLCBtMTEpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEV1bGVyLlpZWDpcbiAgICAgIHRoaXNbMV0gPSBNYXRoLmFzaW4oLWNsYW1wKG0zMSwgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0zMSkgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKG0zMiwgbTMzKTtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIobTIxLCBtMTEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1swXSA9IDA7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKC1tMTIsIG0yMik7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWVpYOlxuICAgICAgdGhpc1syXSA9IE1hdGguYXNpbihjbGFtcChtMjEsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMjEpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMigtbTIzLCBtMjIpO1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMigtbTMxLCBtMTEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1swXSA9IDA7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKG0xMywgbTMzKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBFdWxlci5YWlk6XG4gICAgICB0aGlzWzJdID0gTWF0aC5hc2luKC1jbGFtcChtMTIsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMTIpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMihtMzIsIG0yMik7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKG0xMywgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKC1tMjMsIG0zMyk7XG4gICAgICAgIHRoaXNbMV0gPSAwO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUl9VTktOT1dOX09SREVSKTtcbiAgICB9XG5cbiAgICB0aGlzWzNdID0gb3JkZXI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIF9nZXRSb3RhdGlvbk1hdHJpeCgpIHtcbiAgICBjb25zdCB0ZSA9IG5ldyBNYXRyaXg0KCk7XG5cbiAgICBjb25zdCB4ID0gdGhpcy54LCB5ID0gdGhpcy55LCB6ID0gdGhpcy56O1xuICAgIGNvbnN0IGEgPSBNYXRoLmNvcyh4KTtcbiAgICBjb25zdCBjID0gTWF0aC5jb3MoeSk7XG4gICAgY29uc3QgZSA9IE1hdGguY29zKHopO1xuICAgIGNvbnN0IGIgPSBNYXRoLnNpbih4KTtcbiAgICBjb25zdCBkID0gTWF0aC5zaW4oeSk7XG4gICAgY29uc3QgZiA9IE1hdGguc2luKHopO1xuXG4gICAgc3dpdGNoICh0aGlzWzNdKSB7XG4gICAgY2FzZSBFdWxlci5YWVo6IHtcbiAgICAgIGNvbnN0IGFlID0gYSAqIGUsIGFmID0gYSAqIGYsIGJlID0gYiAqIGUsIGJmID0gYiAqIGY7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IC1jICogZjtcbiAgICAgIHRlWzhdID0gZDtcblxuICAgICAgdGVbMV0gPSBhZiArIGJlICogZDtcbiAgICAgIHRlWzVdID0gYWUgLSBiZiAqIGQ7XG4gICAgICB0ZVs5XSA9IC1iICogYztcblxuICAgICAgdGVbMl0gPSBiZiAtIGFlICogZDtcbiAgICAgIHRlWzZdID0gYmUgKyBhZiAqIGQ7XG4gICAgICB0ZVsxMF0gPSBhICogYztcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgRXVsZXIuWVhaOiB7XG4gICAgICBjb25zdCBjZSA9IGMgKiBlLCBjZiA9IGMgKiBmLCBkZSA9IGQgKiBlLCBkZiA9IGQgKiBmO1xuXG4gICAgICB0ZVswXSA9IGNlICsgZGYgKiBiO1xuICAgICAgdGVbNF0gPSBkZSAqIGIgLSBjZjtcbiAgICAgIHRlWzhdID0gYSAqIGQ7XG5cbiAgICAgIHRlWzFdID0gYSAqIGY7XG4gICAgICB0ZVs1XSA9IGEgKiBlO1xuICAgICAgdGVbOV0gPSAtYjtcblxuICAgICAgdGVbMl0gPSBjZiAqIGIgLSBkZTtcbiAgICAgIHRlWzZdID0gZGYgKyBjZSAqIGI7XG4gICAgICB0ZVsxMF0gPSBhICogYztcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgRXVsZXIuWlhZOiB7XG4gICAgICBjb25zdCBjZSA9IGMgKiBlLCBjZiA9IGMgKiBmLCBkZSA9IGQgKiBlLCBkZiA9IGQgKiBmO1xuXG4gICAgICB0ZVswXSA9IGNlIC0gZGYgKiBiO1xuICAgICAgdGVbNF0gPSAtYSAqIGY7XG4gICAgICB0ZVs4XSA9IGRlICsgY2YgKiBiO1xuXG4gICAgICB0ZVsxXSA9IGNmICsgZGUgKiBiO1xuICAgICAgdGVbNV0gPSBhICogZTtcbiAgICAgIHRlWzldID0gZGYgLSBjZSAqIGI7XG5cbiAgICAgIHRlWzJdID0gLWEgKiBkO1xuICAgICAgdGVbNl0gPSBiO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLlpZWDoge1xuICAgICAgY29uc3QgYWUgPSBhICogZSwgYWYgPSBhICogZiwgYmUgPSBiICogZSwgYmYgPSBiICogZjtcblxuICAgICAgdGVbMF0gPSBjICogZTtcbiAgICAgIHRlWzRdID0gYmUgKiBkIC0gYWY7XG4gICAgICB0ZVs4XSA9IGFlICogZCArIGJmO1xuXG4gICAgICB0ZVsxXSA9IGMgKiBmO1xuICAgICAgdGVbNV0gPSBiZiAqIGQgKyBhZTtcbiAgICAgIHRlWzldID0gYWYgKiBkIC0gYmU7XG5cbiAgICAgIHRlWzJdID0gLWQ7XG4gICAgICB0ZVs2XSA9IGIgKiBjO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLllaWDoge1xuICAgICAgY29uc3QgYWMgPSBhICogYywgYWQgPSBhICogZCwgYmMgPSBiICogYywgYmQgPSBiICogZDtcblxuICAgICAgdGVbMF0gPSBjICogZTtcbiAgICAgIHRlWzRdID0gYmQgLSBhYyAqIGY7XG4gICAgICB0ZVs4XSA9IGJjICogZiArIGFkO1xuXG4gICAgICB0ZVsxXSA9IGY7XG4gICAgICB0ZVs1XSA9IGEgKiBlO1xuICAgICAgdGVbOV0gPSAtYiAqIGU7XG5cbiAgICAgIHRlWzJdID0gLWQgKiBlO1xuICAgICAgdGVbNl0gPSBhZCAqIGYgKyBiYztcbiAgICAgIHRlWzEwXSA9IGFjIC0gYmQgKiBmO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBFdWxlci5YWlk6IHtcbiAgICAgIGNvbnN0IGFjID0gYSAqIGMsIGFkID0gYSAqIGQsIGJjID0gYiAqIGMsIGJkID0gYiAqIGQ7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IC1mO1xuICAgICAgdGVbOF0gPSBkICogZTtcblxuICAgICAgdGVbMV0gPSBhYyAqIGYgKyBiZDtcbiAgICAgIHRlWzVdID0gYSAqIGU7XG4gICAgICB0ZVs5XSA9IGFkICogZiAtIGJjO1xuXG4gICAgICB0ZVsyXSA9IGJjICogZiAtIGFkO1xuICAgICAgdGVbNl0gPSBiICogZTtcbiAgICAgIHRlWzEwXSA9IGJkICogZiArIGFjO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihFUlJfVU5LTk9XTl9PUkRFUik7XG4gICAgfVxuXG4gICAgLy8gbGFzdCBjb2x1bW5cbiAgICB0ZVszXSA9IDA7XG4gICAgdGVbN10gPSAwO1xuICAgIHRlWzExXSA9IDA7XG5cbiAgICAvLyBib3R0b20gcm93XG4gICAgdGVbMTJdID0gMDtcbiAgICB0ZVsxM10gPSAwO1xuICAgIHRlWzE0XSA9IDA7XG4gICAgdGVbMTVdID0gMTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSwgbWF4LXN0YXRlbWVudHMsIG9uZS12YXIgKi9cbn1cbiJdfQ==

@@ -664,2 +664,29 @@ 'use strict';

// roll, pitch, yaw angle notation
}, {
key: 'roll',
get: function get() {
return this[0];
},
set: function set(value) {
return this[0] = (0, _common.checkNumber)(value);
}
}, {
key: 'pitch',
get: function get() {
return this[1];
},
set: function set(value) {
return this[1] = (0, _common.checkNumber)(value);
}
}, {
key: 'yaw',
get: function get() {
return this[2];
},
set: function set(value) {
return this[2] = (0, _common.checkNumber)(value);
}
// rotation order, in all three angle notations

@@ -681,2 +708,2 @@

exports.default = Euler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ldWxlci5qcyJdLCJuYW1lcyI6WyJFUlJfVU5LTk9XTl9PUkRFUiIsIkFMTU9TVF9PTkUiLCJ2YWxpZGF0ZU9yZGVyIiwidmFsdWUiLCJjaGVja09yZGVyIiwiRXJyb3IiLCJFdWxlciIsIm9yZGVyIiwiUm90YXRpb25PcmRlcnMiLCJaWVgiLCJ4IiwieSIsInoiLCJEZWZhdWx0T3JkZXIiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJmcm9tVmVjdG9yMyIsInNldCIsImFycmF5IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiY2hlY2siLCJvZmZzZXQiLCJvcHRpb25hbFJlc3VsdCIsInYiLCJ1bmRlZmluZWQiLCJyb2xsIiwicGl0Y2giLCJ5YXciLCJxIiwiX2Zyb21Sb3RhdGlvbk1hdHJpeCIsImZyb21RdWF0ZXJuaW9uIiwibSIsIl9nZXRSb3RhdGlvbk1hdHJpeCIsIlhZWiIsInJvdGF0ZVgiLCJyb3RhdGVZIiwicm90YXRlWiIsIllYWiIsIlpYWSIsIllaWCIsIlhaWSIsInRlIiwiZWxlbWVudHMiLCJtMTEiLCJtMTIiLCJtMTMiLCJtMjEiLCJtMjIiLCJtMjMiLCJtMzEiLCJtMzIiLCJtMzMiLCJNYXRoIiwiYXNpbiIsImFicyIsImF0YW4yIiwiYSIsImNvcyIsImMiLCJlIiwiYiIsInNpbiIsImQiLCJmIiwiYWUiLCJhZiIsImJlIiwiYmYiLCJjZSIsImNmIiwiZGUiLCJkZiIsImFjIiwiYWQiLCJiYyIsImJkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQTtBQUNBLElBQU1BLG9CQUFvQiwyQkFBMUI7QUFDQSxJQUFNQyxhQUFhLE9BQW5COztBQUVBLFNBQVNDLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQThCO0FBQzVCLFNBQVFBLFNBQVMsQ0FBVCxJQUFjQSxRQUFRLENBQTlCO0FBQ0Q7O0FBRUQsU0FBU0MsVUFBVCxDQUFv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QUssQ0FBTCxDQUFQO0FBQWlCLEs7c0JBQzFCQSxLLEVBQU87QUFBRSxhQUFPLEtBQUssQ0FBTCxJQUFVLHlCQUFZQSxLQUFaLENBQWpCO0FBQXNDOzs7d0JBQ3hDO0FBQUUsYUFBTyxLQUFLLENBQUwsQ0FBUDtBQUFpQixLO3NCQUMzQkEsSyxFQUFRO0FBQUUsYUFBTyxLQUFLLENBQUwsSUFBVSx5QkFBWUEsS0FBWixDQUFqQjtBQUFzQzs7O3dCQUN4QztBQUFFLGFBQU8sS0FBSyxDQUFMLENBQVA7QUFBaUIsSztzQkFDMUJBLEssRUFBTztBQUFFLGFBQU8sS0FBSyxDQUFMLElBQVUseUJBQVlBLEtBQVosQ0FBakI7QUFBc0M7O0FBRXpEOzs7O3dCQUNpQjtBQUFFLGFBQU8sS0FBSyxDQUFMLENBQVA7QUFBaUIsSztzQkFDNUJBLEssRUFBUztBQUFFLGFBQU8sS0FBSyxDQUFMLElBQVUseUJBQVlBLEtBQVosQ0FBakI7QUFBc0M7Ozt3QkFDeEM7QUFBRSxhQUFPLEtBQUssQ0FBTCxDQUFQO0FBQWlCLEs7c0JBQzFCQSxLLEVBQU87QUFBRSxhQUFPLEtBQUssQ0FBTCxJQUFVLHlCQUFZQSxLQUFaLENBQWpCO0FBQXNDOzs7d0JBQ3hDO0FBQUUsYUFBTyxLQUFLLENBQUwsQ0FBUDtBQUFpQixLO3NCQUM1QkEsSyxFQUFTO0FBQUUsYUFBTyxLQUFLLENBQUwsSUFBVSx5QkFBWUEsS0FBWixDQUFqQjtBQUFzQzs7QUFFekQ7Ozs7d0JBQ2lCO0FBQUUsYUFBTyxLQUFLLENBQUwsQ0FBUDtBQUFpQixLO3NCQUMxQkEsSyxFQUFPO0FBQUUsYUFBTyxLQUFLLENBQUwsSUFBVUMsV0FBV0QsS0FBWCxDQUFqQjtBQUFxQzs7Ozs7O2tCQXpIckNHLEsiLCJmaWxlIjoiZXVsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWF0aEFycmF5IGZyb20gJy4vbWF0aC1hcnJheSc7XG5pbXBvcnQge2NoZWNrTnVtYmVyLCBjbGFtcH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IE1hdHJpeDQgZnJvbSAnLi9tYXRyaXg0JztcbmltcG9ydCBRdWF0ZXJuaW9uIGZyb20gJy4vcXVhdGVybmlvbic7XG5pbXBvcnQgVmVjdG9yMyBmcm9tICcuL3ZlY3RvcjMnO1xuXG4vLyBJbnRlcm5hbCBjb25zdGFudHNcbmNvbnN0IEVSUl9VTktOT1dOX09SREVSID0gJ1Vua25vd24gRXVsZXIgYW5nbGUgb3JkZXInO1xuY29uc3QgQUxNT1NUX09ORSA9IDAuOTk5OTk7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlT3JkZXIodmFsdWUpIHtcbiAgcmV0dXJuICh2YWx1ZSA+PSAwICYmIHZhbHVlIDwgNik7XG59XG5cbmZ1bmN0aW9uIGNoZWNrT3JkZXIodmFsdWUpIHtcbiAgaWYgKHZhbHVlIDwgMCAmJiB2YWx1ZSA+PSA2KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKEVSUl9VTktOT1dOX09SREVSKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV1bGVyIGV4dGVuZHMgTWF0aEFycmF5IHtcblxuICAvLyBzdGF0aWMgWFlaID0gMDtcbiAgLy8gc3RhdGljIFlaWCA9IDE7XG4gIC8vIHN0YXRpYyBaWFkgPSAyO1xuICAvLyBzdGF0aWMgWFpZID0gMztcbiAgLy8gc3RhdGljIFlYWiA9IDQ7XG4gIC8vIHN0YXRpYyBaWVggPSA1O1xuICAvLyBzdGF0aWMgUm9sbFBpdGNoWWF3ID0gMDtcbiAgLy8gc3RhdGljIERlZmF1bHRPcmRlciA9IDA7XG5cbiAgLy8gQ29uc3RhbnRzXG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLW11bHRpLXNwYWNlcywgYnJhY2Utc3R5bGUsIG5vLXJldHVybi1hc3NpZ24gKi9cbiAgc3RhdGljIGdldCBaWVgoKSB7IHJldHVybiAwOyB9XG4gIHN0YXRpYyBnZXQgWVhaKCkgeyByZXR1cm4gMTsgfVxuICBzdGF0aWMgZ2V0IFhaWSgpIHsgcmV0dXJuIDI7IH1cbiAgc3RhdGljIGdldCBaWFkoKSB7IHJldHVybiAzOyB9XG4gIHN0YXRpYyBnZXQgWVpYKCkgeyByZXR1cm4gNDsgfVxuICBzdGF0aWMgZ2V0IFhZWigpIHsgcmV0dXJuIDU7IH1cbiAgc3RhdGljIGdldCBSb2xsUGl0Y2hZYXcoKSB7IHJldHVybiAwOyB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0T3JkZXIoKSB7IHJldHVybiBFdWxlci5aWVg7IH1cbiAgc3RhdGljIGdldCBSb3RhdGlvbk9yZGVycygpIHtcbiAgICByZXR1cm4gWydaWVgnLCAnWVhaJywgJ1haWScsICdaWFknLCAnWVpYJywgJ1hZWiddO1xuICB9XG4gIHN0YXRpYyByb3RhdGlvbk9yZGVyKG9yZGVyKSB7IHJldHVybiBFdWxlci5Sb3RhdGlvbk9yZGVyc1tvcmRlcl07IH1cblxuICBnZXQgRUxFTUVOVFMoKSB7IHJldHVybiA0OyB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tbXVsdGktc3BhY2VzLCBicmFjZS1zdHlsZSwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuXG4gIC8qXG4gICAqIE51bWJlcnxOdW1iZXJbXSwgTnVtYmVyLCBOdW1iZXIsIE51bWJlclxuICAgKi9cbiAgY29uc3RydWN0b3IoeCA9IDAsIHkgPSAwLCB6ID0gMCwgb3JkZXIgPSBFdWxlci5EZWZhdWx0T3JkZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBBcnJheS5pc0FycmF5KGFyZ3VtZW50c1swXSkpIHtcbiAgICAgIHRoaXMuZnJvbVZlY3RvcjMoLi4uYXJndW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXQoeCwgeSwgeiwgb3JkZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIGNvcGllZCBhcnJheSBkb2VzIGNvbnRhaW4gZm91cnRoIGVsZW1lbnQsIHByZXNlcnZlcyBjdXJyZW50bHkgc2V0IG9yZGVyXG4gIGNvcHkoYXJyYXkpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IGFycmF5W2ldO1xuICAgIH1cbiAgICB0aGlzWzNdID0gTnVtYmVyLmlzRmluaXRlKGFycmF5WzNdKSB8fCB0aGlzLm9yZGVyO1xuICAgIHRoaXMuY2hlY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIFNldHMgdGhlIHRocmVlIGFuZ2xlcywgYW5kIG9wdGlvbmFsbHkgc2V0cyB0aGUgcm90YXRpb24gb3JkZXJcbiAgLy8gSWYgb3JkZXIgaXMgbm90IHNwZWNpZmllZCwgcHJlc2VydmVzIGN1cnJlbnRseSBzZXQgb3JkZXJcbiAgc2V0KHggPSAwLCB5ID0gMCwgeiA9IDAsIG9yZGVyKSB7XG4gICAgdGhpc1swXSA9IHg7XG4gICAgdGhpc1sxXSA9IHk7XG4gICAgdGhpc1syXSA9IHo7XG4gICAgdGhpc1szXSA9IE51bWJlci5pc0Zpbml0ZShvcmRlcikgPyBvcmRlciA6IHRoaXNbM107XG4gICAgdGhpcy5jaGVjaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlT3JkZXIodGhpc1szXSkgJiZcbiAgICAgIE51bWJlci5pc0Zpbml0ZSh0aGlzWzBdKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKHRoaXNbMV0pICYmXG4gICAgICBOdW1iZXIuaXNGaW5pdGUodGhpc1syXSk7XG4gIH1cblxuICAvLyBEb2VzIG5vdCBjb3B5IHRoZSBvcmllbnRhdGlvbiBlbGVtZW50XG4gIHRvQXJyYXkoYXJyYXkgPSBbXSwgb2Zmc2V0ID0gMCkge1xuICAgIGFycmF5W29mZnNldF0gPSB0aGlzWzBdO1xuICAgIGFycmF5W29mZnNldCArIDFdID0gdGhpc1sxXTtcbiAgICBhcnJheVtvZmZzZXQgKyAyXSA9IHRoaXNbMl07XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLy8gQ29waWVzIHRoZSBvcmllbnRhdGlvbiBlbGVtZW50XG4gIHRvQXJyYXk0KGFycmF5ID0gW10sIG9mZnNldCA9IDApIHtcbiAgICBhcnJheVtvZmZzZXRdID0gdGhpc1swXTtcbiAgICBhcnJheVtvZmZzZXQgKyAxXSA9IHRoaXNbMV07XG4gICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSB0aGlzWzJdO1xuICAgIGFycmF5W29mZnNldCArIDNdID0gdGhpc1szXTtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB0b1ZlY3RvcjMob3B0aW9uYWxSZXN1bHQpIHtcbiAgICBpZiAob3B0aW9uYWxSZXN1bHQpIHtcbiAgICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC5zZXQodGhpc1swXSwgdGhpc1sxXSwgdGhpc1syXSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgVmVjdG9yMyh0aGlzWzBdLCB0aGlzWzFdLCB0aGlzWzJdKTtcbiAgfVxuXG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLW11bHRpLXNwYWNlcywgYnJhY2Utc3R5bGUsIG5vLXJldHVybi1hc3NpZ24gKi9cbiAgLy8geCwgeSwgeiBhbmdsZSBub3RhdGlvbiAobm90ZTogb25seSBjb3JyZXNwb25kcyB0byBheGlzIGluIFhZWiBvcmllbnRhdGlvbilcbiAgZ2V0IHgoKSAgICAgIHsgcmV0dXJuIHRoaXNbMF07IH1cbiAgc2V0IHgodmFsdWUpIHsgcmV0dXJuIHRoaXNbMF0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IHkoKSAgICAgIHsgcmV0dXJuIHRoaXNbMV07IH1cbiAgc2V0IHkodmFsdWUpIHsgcmV0dXJuIHRoaXNbMV0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IHooKSAgICAgIHsgcmV0dXJuIHRoaXNbMl07IH1cbiAgc2V0IHoodmFsdWUpIHsgcmV0dXJuIHRoaXNbMl0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cblxuICAvLyBhbHBoYSwgYmV0YSwgZ2FtbWEgYW5nbGUgbm90YXRpb25cbiAgZ2V0IGFscGhhKCkgICAgICB7IHJldHVybiB0aGlzWzBdOyB9XG4gIHNldCBhbHBoYSh2YWx1ZSkgeyByZXR1cm4gdGhpc1swXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgYmV0YSgpICAgICAgIHsgcmV0dXJuIHRoaXNbMV07IH1cbiAgc2V0IGJldGEodmFsdWUpICB7IHJldHVybiB0aGlzWzFdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCBnYW1tYSgpICAgICAgeyByZXR1cm4gdGhpc1syXTsgfVxuICBzZXQgZ2FtbWEodmFsdWUpIHsgcmV0dXJuIHRoaXNbMl0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cblxuICAvLyBwaGksIHRoZXRhLCBwc2kgYW5nbGUgbm90YXRpb25cbiAgZ2V0IHBoaSgpICAgICAgICB7IHJldHVybiB0aGlzWzBdOyB9XG4gIHNldCBwaGkodmFsdWUpICAgeyByZXR1cm4gdGhpc1swXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgdGhldGEoKSAgICAgIHsgcmV0dXJuIHRoaXNbMV07IH1cbiAgc2V0IHRoZXRhKHZhbHVlKSB7IHJldHVybiB0aGlzWzFdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCBwc2koKSAgICAgICAgeyByZXR1cm4gdGhpc1syXTsgfVxuICBzZXQgcHNpKHZhbHVlKSAgIHsgcmV0dXJuIHRoaXNbMl0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cblxuICAvLyByb3RhdGlvbiBvcmRlciwgaW4gYWxsIHRocmVlIGFuZ2xlIG5vdGF0aW9uc1xuICBnZXQgb3JkZXIoKSAgICAgIHsgcmV0dXJuIHRoaXNbM107IH1cbiAgc2V0IG9yZGVyKHZhbHVlKSB7IHJldHVybiB0aGlzWzNdID0gY2hlY2tPcmRlcih2YWx1ZSk7IH1cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tbXVsdGktc3BhY2VzLCBicmFjZS1zdHlsZSwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuXG4gIC8vIENvbnN0cnVjdG9yc1xuICBmcm9tVmVjdG9yMyh2LCBvcmRlcikge1xuICAgIHJldHVybiB0aGlzLnNldCh2WzBdLCB2WzFdLCB2WzJdLCBOdW1iZXIuaXNGaW5pdGUob3JkZXIpID8gb3JkZXIgOiB0aGlzWzNdKTtcbiAgfVxuXG4gIC8vIFRPRE8gLSB3aXRoIGFuZCB3aXRob3V0IDR0aCBlbGVtZW50XG4gIGZyb21BcnJheShhcnJheSwgb2Zmc2V0ID0gMCkge1xuICAgIHRoaXNbMF0gPSBhcnJheVswICsgb2Zmc2V0XTtcbiAgICB0aGlzWzFdID0gYXJyYXlbMSArIG9mZnNldF07XG4gICAgdGhpc1syXSA9IGFycmF5WzIgKyBvZmZzZXRdO1xuICAgIGlmIChhcnJheVszXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzWzNdID0gYXJyYXlbM107XG4gICAgfVxuICAgIHRoaXMuY2hlY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIENvbW1vbiBaWVggcm90YXRpb24gb3JkZXJcbiAgZnJvbVJvbGxQaXRjaFlhdyhyb2xsLCBwaXRjaCwgeWF3KSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KHJvbGwsIHBpdGNoLCB5YXcsIEV1bGVyLlpZWCk7XG4gIH1cblxuICBmcm9tUXVhdGVybmlvbihxLCBvcmRlcikge1xuICAgIHRoaXMuX2Zyb21Sb3RhdGlvbk1hdHJpeChNYXRyaXg0LmZyb21RdWF0ZXJuaW9uKHEpLCBvcmRlcik7XG4gICAgdGhpcy5jaGVjaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZnJvbVJvdGF0aW9uTWF0cml4KG0sIG9yZGVyID0gRXVsZXIuRGVmYXVsdE9yZGVyKSB7XG4gICAgdGhpcy5fZnJvbVJvdGF0aW9uTWF0cml4KG0sIG9yZGVyKTtcbiAgICB0aGlzLmNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBBQ0NFU1NPUlNcblxuICAvLyBAcmV0dXJuIHtNYXRyaXg0fSBhIHJvdGF0aW9uIG1hdHJpeCBjb3JyZXNwb25kaW5nIHRvIHJvdGF0aW9uc1xuICAvLyAgIHBlciB0aGUgc3BlY2lmaWVkIGV1bGVyIGFuZ2xlc1xuICBnZXRSb3RhdGlvbk1hdHJpeChtID0gbmV3IE1hdHJpeDQoKSkge1xuICAgIHRoaXMuX2dldFJvdGF0aW9uTWF0cml4KG0pO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgZ2V0UXVhdGVybmlvbigpIHtcbiAgICBjb25zdCBxID0gbmV3IFF1YXRlcm5pb24oKTtcbiAgICBzd2l0Y2ggKHRoaXNbNF0pIHtcbiAgICBjYXNlIEV1bGVyLlhZWjpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVgodGhpc1swXSkucm90YXRlWSh0aGlzWzFdKS5yb3RhdGVaKHRoaXNbMl0pO1xuICAgIGNhc2UgRXVsZXIuWVhaOlxuICAgICAgcmV0dXJuIHEucm90YXRlWSh0aGlzWzBdKS5yb3RhdGVYKHRoaXNbMV0pLnJvdGF0ZVoodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5aWFk6XG4gICAgICByZXR1cm4gcS5yb3RhdGVaKHRoaXNbMF0pLnJvdGF0ZVgodGhpc1sxXSkucm90YXRlWSh0aGlzWzJdKTtcbiAgICBjYXNlIEV1bGVyLlpZWDpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVoodGhpc1swXSkucm90YXRlWSh0aGlzWzFdKS5yb3RhdGVYKHRoaXNbMl0pO1xuICAgIGNhc2UgRXVsZXIuWVpYOlxuICAgICAgcmV0dXJuIHEucm90YXRlWSh0aGlzWzBdKS5yb3RhdGVaKHRoaXNbMV0pLnJvdGF0ZVgodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5YWlk6XG4gICAgICByZXR1cm4gcS5yb3RhdGVYKHRoaXNbMF0pLnJvdGF0ZVoodGhpc1sxXSkucm90YXRlWSh0aGlzWzJdKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUl9VTktOT1dOX09SREVSKTtcbiAgICB9XG4gIH1cblxuICAvLyBJTlRFUk5BTCBNRVRIT0RTXG5cbiAgLy8gQ29uY2Vyc2lvbiBmcm9tIEV1bGVyIHRvIHJvdGF0aW9uIG1hdHJpeCBhbmQgZnJvbSBtYXRyaXggdG8gRXVsZXJcbiAgLy8gQWRhcHRlZCBmcm9tIHRocmVlLmpzIHVuZGVyIE1JVCBsaWNlbnNlXG5cbiAgLy8gLy8gV0FSTklORzogdGhpcyBkaXNjYXJkcyByZXZvbHV0aW9uIGluZm9ybWF0aW9uIC1iaG91c3RvblxuICAvLyByZW9yZGVyKG5ld09yZGVyKSB7XG4gIC8vICAgY29uc3QgcSA9IG5ldyBRdWF0ZXJuaW9uKCkuc2V0RnJvbUV1bGVyKHRoaXMpO1xuICAvLyAgIHJldHVybiB0aGlzLnNldEZyb21RdWF0ZXJuaW9uKHEsIG5ld09yZGVyKTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5LCBtYXgtc3RhdGVtZW50cywgb25lLXZhciAqL1xuICBfZnJvbVJvdGF0aW9uTWF0cml4KG0sIG9yZGVyID0gRXVsZXIuRGVmYXVsdE9yZGVyKSB7XG4gICAgLy8gYXNzdW1lcyB0aGUgdXBwZXIgM3gzIG9mIG0gaXMgYSBwdXJlIHJvdGF0aW9uIG1hdHJpeCAoaS5lLCB1bnNjYWxlZClcblxuICAgIGNvbnN0IHRlID0gbS5lbGVtZW50cztcbiAgICBjb25zdCBtMTEgPSB0ZVswXSwgbTEyID0gdGVbNF0sIG0xMyA9IHRlWzhdO1xuICAgIGNvbnN0IG0yMSA9IHRlWzFdLCBtMjIgPSB0ZVs1XSwgbTIzID0gdGVbOV07XG4gICAgY29uc3QgbTMxID0gdGVbMl0sIG0zMiA9IHRlWzZdLCBtMzMgPSB0ZVsxMF07XG5cbiAgICBvcmRlciA9IG9yZGVyIHx8IHRoaXNbM107XG5cbiAgICBzd2l0Y2ggKG9yZGVyKSB7XG4gICAgY2FzZSBFdWxlci5YWVo6XG4gICAgICB0aGlzWzFdID0gTWF0aC5hc2luKGNsYW1wKG0xMywgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0xMykgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKC1tMjMsIG0zMyk7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKC1tMTIsIG0xMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMihtMzIsIG0yMik7XG4gICAgICAgIHRoaXNbMl0gPSAwO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEV1bGVyLllYWjpcbiAgICAgIHRoaXNbMF0gPSBNYXRoLmFzaW4oLWNsYW1wKG0yMywgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0yMykgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKG0xMywgbTMzKTtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIobTIxLCBtMjIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1sxXSA9IE1hdGguYXRhbjIoLW0zMSwgbTExKTtcbiAgICAgICAgdGhpc1syXSA9IDA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWlhZOlxuICAgICAgdGhpc1swXSA9IE1hdGguYXNpbihjbGFtcChtMzIsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMzIpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMigtbTMxLCBtMzMpO1xuICAgICAgICB0aGlzWzJdID0gTWF0aC5hdGFuMigtbTEyLCBtMjIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1sxXSA9IDA7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKG0yMSwgbTExKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBFdWxlci5aWVg6XG4gICAgICB0aGlzWzFdID0gTWF0aC5hc2luKC1jbGFtcChtMzEsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMzEpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMihtMzIsIG0zMyk7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKG0yMSwgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSAwO1xuICAgICAgICB0aGlzWzJdID0gTWF0aC5hdGFuMigtbTEyLCBtMjIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEV1bGVyLllaWDpcbiAgICAgIHRoaXNbMl0gPSBNYXRoLmFzaW4oY2xhbXAobTIxLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTIxKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1swXSA9IE1hdGguYXRhbjIoLW0yMywgbTIyKTtcbiAgICAgICAgdGhpc1sxXSA9IE1hdGguYXRhbjIoLW0zMSwgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSAwO1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMihtMTMsIG0zMyk7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWFpZOlxuICAgICAgdGhpc1syXSA9IE1hdGguYXNpbigtY2xhbXAobTEyLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTEyKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1swXSA9IE1hdGguYXRhbjIobTMyLCBtMjIpO1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMihtMTMsIG0xMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMigtbTIzLCBtMzMpO1xuICAgICAgICB0aGlzWzFdID0gMDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihFUlJfVU5LTk9XTl9PUkRFUik7XG4gICAgfVxuXG4gICAgdGhpc1szXSA9IG9yZGVyO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBfZ2V0Um90YXRpb25NYXRyaXgoKSB7XG4gICAgY29uc3QgdGUgPSBuZXcgTWF0cml4NCgpO1xuXG4gICAgY29uc3QgeCA9IHRoaXMueCwgeSA9IHRoaXMueSwgeiA9IHRoaXMuejtcbiAgICBjb25zdCBhID0gTWF0aC5jb3MoeCk7XG4gICAgY29uc3QgYyA9IE1hdGguY29zKHkpO1xuICAgIGNvbnN0IGUgPSBNYXRoLmNvcyh6KTtcbiAgICBjb25zdCBiID0gTWF0aC5zaW4oeCk7XG4gICAgY29uc3QgZCA9IE1hdGguc2luKHkpO1xuICAgIGNvbnN0IGYgPSBNYXRoLnNpbih6KTtcblxuICAgIHN3aXRjaCAodGhpc1szXSkge1xuICAgIGNhc2UgRXVsZXIuWFlaOiB7XG4gICAgICBjb25zdCBhZSA9IGEgKiBlLCBhZiA9IGEgKiBmLCBiZSA9IGIgKiBlLCBiZiA9IGIgKiBmO1xuXG4gICAgICB0ZVswXSA9IGMgKiBlO1xuICAgICAgdGVbNF0gPSAtYyAqIGY7XG4gICAgICB0ZVs4XSA9IGQ7XG5cbiAgICAgIHRlWzFdID0gYWYgKyBiZSAqIGQ7XG4gICAgICB0ZVs1XSA9IGFlIC0gYmYgKiBkO1xuICAgICAgdGVbOV0gPSAtYiAqIGM7XG5cbiAgICAgIHRlWzJdID0gYmYgLSBhZSAqIGQ7XG4gICAgICB0ZVs2XSA9IGJlICsgYWYgKiBkO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLllYWjoge1xuICAgICAgY29uc3QgY2UgPSBjICogZSwgY2YgPSBjICogZiwgZGUgPSBkICogZSwgZGYgPSBkICogZjtcblxuICAgICAgdGVbMF0gPSBjZSArIGRmICogYjtcbiAgICAgIHRlWzRdID0gZGUgKiBiIC0gY2Y7XG4gICAgICB0ZVs4XSA9IGEgKiBkO1xuXG4gICAgICB0ZVsxXSA9IGEgKiBmO1xuICAgICAgdGVbNV0gPSBhICogZTtcbiAgICAgIHRlWzldID0gLWI7XG5cbiAgICAgIHRlWzJdID0gY2YgKiBiIC0gZGU7XG4gICAgICB0ZVs2XSA9IGRmICsgY2UgKiBiO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLlpYWToge1xuICAgICAgY29uc3QgY2UgPSBjICogZSwgY2YgPSBjICogZiwgZGUgPSBkICogZSwgZGYgPSBkICogZjtcblxuICAgICAgdGVbMF0gPSBjZSAtIGRmICogYjtcbiAgICAgIHRlWzRdID0gLWEgKiBmO1xuICAgICAgdGVbOF0gPSBkZSArIGNmICogYjtcblxuICAgICAgdGVbMV0gPSBjZiArIGRlICogYjtcbiAgICAgIHRlWzVdID0gYSAqIGU7XG4gICAgICB0ZVs5XSA9IGRmIC0gY2UgKiBiO1xuXG4gICAgICB0ZVsyXSA9IC1hICogZDtcbiAgICAgIHRlWzZdID0gYjtcbiAgICAgIHRlWzEwXSA9IGEgKiBjO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBFdWxlci5aWVg6IHtcbiAgICAgIGNvbnN0IGFlID0gYSAqIGUsIGFmID0gYSAqIGYsIGJlID0gYiAqIGUsIGJmID0gYiAqIGY7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IGJlICogZCAtIGFmO1xuICAgICAgdGVbOF0gPSBhZSAqIGQgKyBiZjtcblxuICAgICAgdGVbMV0gPSBjICogZjtcbiAgICAgIHRlWzVdID0gYmYgKiBkICsgYWU7XG4gICAgICB0ZVs5XSA9IGFmICogZCAtIGJlO1xuXG4gICAgICB0ZVsyXSA9IC1kO1xuICAgICAgdGVbNl0gPSBiICogYztcbiAgICAgIHRlWzEwXSA9IGEgKiBjO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBFdWxlci5ZWlg6IHtcbiAgICAgIGNvbnN0IGFjID0gYSAqIGMsIGFkID0gYSAqIGQsIGJjID0gYiAqIGMsIGJkID0gYiAqIGQ7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IGJkIC0gYWMgKiBmO1xuICAgICAgdGVbOF0gPSBiYyAqIGYgKyBhZDtcblxuICAgICAgdGVbMV0gPSBmO1xuICAgICAgdGVbNV0gPSBhICogZTtcbiAgICAgIHRlWzldID0gLWIgKiBlO1xuXG4gICAgICB0ZVsyXSA9IC1kICogZTtcbiAgICAgIHRlWzZdID0gYWQgKiBmICsgYmM7XG4gICAgICB0ZVsxMF0gPSBhYyAtIGJkICogZjtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgRXVsZXIuWFpZOiB7XG4gICAgICBjb25zdCBhYyA9IGEgKiBjLCBhZCA9IGEgKiBkLCBiYyA9IGIgKiBjLCBiZCA9IGIgKiBkO1xuXG4gICAgICB0ZVswXSA9IGMgKiBlO1xuICAgICAgdGVbNF0gPSAtZjtcbiAgICAgIHRlWzhdID0gZCAqIGU7XG5cbiAgICAgIHRlWzFdID0gYWMgKiBmICsgYmQ7XG4gICAgICB0ZVs1XSA9IGEgKiBlO1xuICAgICAgdGVbOV0gPSBhZCAqIGYgLSBiYztcblxuICAgICAgdGVbMl0gPSBiYyAqIGYgLSBhZDtcbiAgICAgIHRlWzZdID0gYiAqIGU7XG4gICAgICB0ZVsxMF0gPSBiZCAqIGYgKyBhYztcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJSX1VOS05PV05fT1JERVIpO1xuICAgIH1cblxuICAgIC8vIGxhc3QgY29sdW1uXG4gICAgdGVbM10gPSAwO1xuICAgIHRlWzddID0gMDtcbiAgICB0ZVsxMV0gPSAwO1xuXG4gICAgLy8gYm90dG9tIHJvd1xuICAgIHRlWzEyXSA9IDA7XG4gICAgdGVbMTNdID0gMDtcbiAgICB0ZVsxNF0gPSAwO1xuICAgIHRlWzE1XSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHksIG1heC1zdGF0ZW1lbnRzLCBvbmUtdmFyICovXG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ldWxlci5qcyJdLCJuYW1lcyI6WyJFUlJfVU5LTk9XTl9PUkRFUiIsIkFMTU9TVF9PTkUiLCJ2YWxpZGF0ZU9yZGVyIiwidmFsdWUiLCJjaGVja09yZGVyIiwiRXJyb3IiLCJFdWxlciIsIm9yZGVyIiwiUm90YXRpb25PcmRlcnMiLCJaWVgiLCJ4IiwieSIsInoiLCJEZWZhdWx0T3JkZXIiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJmcm9tVmVjdG9yMyIsInNldCIsImFycmF5IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiY2hlY2siLCJvZmZzZXQiLCJvcHRpb25hbFJlc3VsdCIsInYiLCJ1bmRlZmluZWQiLCJyb2xsIiwicGl0Y2giLCJ5YXciLCJxIiwiX2Zyb21Sb3RhdGlvbk1hdHJpeCIsImZyb21RdWF0ZXJuaW9uIiwibSIsIl9nZXRSb3RhdGlvbk1hdHJpeCIsIlhZWiIsInJvdGF0ZVgiLCJyb3RhdGVZIiwicm90YXRlWiIsIllYWiIsIlpYWSIsIllaWCIsIlhaWSIsInRlIiwiZWxlbWVudHMiLCJtMTEiLCJtMTIiLCJtMTMiLCJtMjEiLCJtMjIiLCJtMjMiLCJtMzEiLCJtMzIiLCJtMzMiLCJNYXRoIiwiYXNpbiIsImFicyIsImF0YW4yIiwiYSIsImNvcyIsImMiLCJlIiwiYiIsInNpbiIsImQiLCJmIiwiYWUiLCJhZiIsImJlIiwiYmYiLCJjZSIsImNmIiwiZGUiLCJkZiIsImFjIiwiYWQiLCJiYyIsImJkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQTtBQUNBLElBQU1BLG9CQUFvQiwyQkFBMUI7QUFDQSxJQUFNQyxhQUFhLE9BQW5COztBQUVBLFNBQVNDLGFBQVQsQ0FBdUJDLEtBQXZCLEVBQThCO0FBQzVCLFNBQVFBLFNBQVMsQ0FBVCxJQUFjQSxRQUFRLENBQTlCO0FBQ0Q7O0FBRUQsU0FBU0MsVUFBVCxDQUFv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QUFBRSxhQUFPLEtBQUssQ0FBTCxJQUFVLHlCQUFZQSxLQUFaLENBQWpCO0FBQXNDOztBQUV6RDs7Ozt3QkFDaUI7QUFBRSxhQUFPLEtBQUssQ0FBTCxDQUFQO0FBQWlCLEs7c0JBQzFCQSxLLEVBQU87QUFBRSxhQUFPLEtBQUssQ0FBTCxJQUFVQyxXQUFXRCxLQUFYLENBQWpCO0FBQXFDOzs7Ozs7a0JBaklyQ0csSyIsImZpbGUiOiJldWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXRoQXJyYXkgZnJvbSAnLi9tYXRoLWFycmF5JztcbmltcG9ydCB7Y2hlY2tOdW1iZXIsIGNsYW1wfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgTWF0cml4NCBmcm9tICcuL21hdHJpeDQnO1xuaW1wb3J0IFF1YXRlcm5pb24gZnJvbSAnLi9xdWF0ZXJuaW9uJztcbmltcG9ydCBWZWN0b3IzIGZyb20gJy4vdmVjdG9yMyc7XG5cbi8vIEludGVybmFsIGNvbnN0YW50c1xuY29uc3QgRVJSX1VOS05PV05fT1JERVIgPSAnVW5rbm93biBFdWxlciBhbmdsZSBvcmRlcic7XG5jb25zdCBBTE1PU1RfT05FID0gMC45OTk5OTtcblxuZnVuY3Rpb24gdmFsaWRhdGVPcmRlcih2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlID49IDAgJiYgdmFsdWUgPCA2KTtcbn1cblxuZnVuY3Rpb24gY2hlY2tPcmRlcih2YWx1ZSkge1xuICBpZiAodmFsdWUgPCAwICYmIHZhbHVlID49IDYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoRVJSX1VOS05PV05fT1JERVIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXVsZXIgZXh0ZW5kcyBNYXRoQXJyYXkge1xuXG4gIC8vIHN0YXRpYyBYWVogPSAwO1xuICAvLyBzdGF0aWMgWVpYID0gMTtcbiAgLy8gc3RhdGljIFpYWSA9IDI7XG4gIC8vIHN0YXRpYyBYWlkgPSAzO1xuICAvLyBzdGF0aWMgWVhaID0gNDtcbiAgLy8gc3RhdGljIFpZWCA9IDU7XG4gIC8vIHN0YXRpYyBSb2xsUGl0Y2hZYXcgPSAwO1xuICAvLyBzdGF0aWMgRGVmYXVsdE9yZGVyID0gMDtcblxuICAvLyBDb25zdGFudHNcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tbXVsdGktc3BhY2VzLCBicmFjZS1zdHlsZSwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuICBzdGF0aWMgZ2V0IFpZWCgpIHsgcmV0dXJuIDA7IH1cbiAgc3RhdGljIGdldCBZWFooKSB7IHJldHVybiAxOyB9XG4gIHN0YXRpYyBnZXQgWFpZKCkgeyByZXR1cm4gMjsgfVxuICBzdGF0aWMgZ2V0IFpYWSgpIHsgcmV0dXJuIDM7IH1cbiAgc3RhdGljIGdldCBZWlgoKSB7IHJldHVybiA0OyB9XG4gIHN0YXRpYyBnZXQgWFlaKCkgeyByZXR1cm4gNTsgfVxuICBzdGF0aWMgZ2V0IFJvbGxQaXRjaFlhdygpIHsgcmV0dXJuIDA7IH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRPcmRlcigpIHsgcmV0dXJuIEV1bGVyLlpZWDsgfVxuICBzdGF0aWMgZ2V0IFJvdGF0aW9uT3JkZXJzKCkge1xuICAgIHJldHVybiBbJ1pZWCcsICdZWFonLCAnWFpZJywgJ1pYWScsICdZWlgnLCAnWFlaJ107XG4gIH1cbiAgc3RhdGljIHJvdGF0aW9uT3JkZXIob3JkZXIpIHsgcmV0dXJuIEV1bGVyLlJvdGF0aW9uT3JkZXJzW29yZGVyXTsgfVxuXG4gIGdldCBFTEVNRU5UUygpIHsgcmV0dXJuIDQ7IH1cbiAgLyogZXNsaW50LWVuYWJsZSBuby1tdWx0aS1zcGFjZXMsIGJyYWNlLXN0eWxlLCBuby1yZXR1cm4tYXNzaWduICovXG5cbiAgLypcbiAgICogTnVtYmVyfE51bWJlcltdLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih4ID0gMCwgeSA9IDAsIHogPSAwLCBvcmRlciA9IEV1bGVyLkRlZmF1bHRPcmRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIEFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSkge1xuICAgICAgdGhpcy5mcm9tVmVjdG9yMyguLi5hcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldCh4LCB5LCB6LCBvcmRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgY29waWVkIGFycmF5IGRvZXMgY29udGFpbiBmb3VydGggZWxlbWVudCwgcHJlc2VydmVzIGN1cnJlbnRseSBzZXQgb3JkZXJcbiAgY29weShhcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gYXJyYXlbaV07XG4gICAgfVxuICAgIHRoaXNbM10gPSBOdW1iZXIuaXNGaW5pdGUoYXJyYXlbM10pIHx8IHRoaXMub3JkZXI7XG4gICAgdGhpcy5jaGVjaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gU2V0cyB0aGUgdGhyZWUgYW5nbGVzLCBhbmQgb3B0aW9uYWxseSBzZXRzIHRoZSByb3RhdGlvbiBvcmRlclxuICAvLyBJZiBvcmRlciBpcyBub3Qgc3BlY2lmaWVkLCBwcmVzZXJ2ZXMgY3VycmVudGx5IHNldCBvcmRlclxuICBzZXQoeCA9IDAsIHkgPSAwLCB6ID0gMCwgb3JkZXIpIHtcbiAgICB0aGlzWzBdID0geDtcbiAgICB0aGlzWzFdID0geTtcbiAgICB0aGlzWzJdID0gejtcbiAgICB0aGlzWzNdID0gTnVtYmVyLmlzRmluaXRlKG9yZGVyKSA/IG9yZGVyIDogdGhpc1szXTtcbiAgICB0aGlzLmNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICByZXR1cm4gdmFsaWRhdGVPcmRlcih0aGlzWzNdKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKHRoaXNbMF0pICYmXG4gICAgICBOdW1iZXIuaXNGaW5pdGUodGhpc1sxXSkgJiZcbiAgICAgIE51bWJlci5pc0Zpbml0ZSh0aGlzWzJdKTtcbiAgfVxuXG4gIC8vIERvZXMgbm90IGNvcHkgdGhlIG9yaWVudGF0aW9uIGVsZW1lbnRcbiAgdG9BcnJheShhcnJheSA9IFtdLCBvZmZzZXQgPSAwKSB7XG4gICAgYXJyYXlbb2Zmc2V0XSA9IHRoaXNbMF07XG4gICAgYXJyYXlbb2Zmc2V0ICsgMV0gPSB0aGlzWzFdO1xuICAgIGFycmF5W29mZnNldCArIDJdID0gdGhpc1syXTtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvLyBDb3BpZXMgdGhlIG9yaWVudGF0aW9uIGVsZW1lbnRcbiAgdG9BcnJheTQoYXJyYXkgPSBbXSwgb2Zmc2V0ID0gMCkge1xuICAgIGFycmF5W29mZnNldF0gPSB0aGlzWzBdO1xuICAgIGFycmF5W29mZnNldCArIDFdID0gdGhpc1sxXTtcbiAgICBhcnJheVtvZmZzZXQgKyAyXSA9IHRoaXNbMl07XG4gICAgYXJyYXlbb2Zmc2V0ICsgM10gPSB0aGlzWzNdO1xuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHRvVmVjdG9yMyhvcHRpb25hbFJlc3VsdCkge1xuICAgIGlmIChvcHRpb25hbFJlc3VsdCkge1xuICAgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnNldCh0aGlzWzBdLCB0aGlzWzFdLCB0aGlzWzJdKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBWZWN0b3IzKHRoaXNbMF0sIHRoaXNbMV0sIHRoaXNbMl0pO1xuICB9XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tbXVsdGktc3BhY2VzLCBicmFjZS1zdHlsZSwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuICAvLyB4LCB5LCB6IGFuZ2xlIG5vdGF0aW9uIChub3RlOiBvbmx5IGNvcnJlc3BvbmRzIHRvIGF4aXMgaW4gWFlaIG9yaWVudGF0aW9uKVxuICBnZXQgeCgpICAgICAgeyByZXR1cm4gdGhpc1swXTsgfVxuICBzZXQgeCh2YWx1ZSkgeyByZXR1cm4gdGhpc1swXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgeSgpICAgICAgeyByZXR1cm4gdGhpc1sxXTsgfVxuICBzZXQgeSh2YWx1ZSkgeyByZXR1cm4gdGhpc1sxXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgeigpICAgICAgeyByZXR1cm4gdGhpc1syXTsgfVxuICBzZXQgeih2YWx1ZSkgeyByZXR1cm4gdGhpc1syXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuXG4gIC8vIGFscGhhLCBiZXRhLCBnYW1tYSBhbmdsZSBub3RhdGlvblxuICBnZXQgYWxwaGEoKSAgICAgIHsgcmV0dXJuIHRoaXNbMF07IH1cbiAgc2V0IGFscGhhKHZhbHVlKSB7IHJldHVybiB0aGlzWzBdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCBiZXRhKCkgICAgICAgeyByZXR1cm4gdGhpc1sxXTsgfVxuICBzZXQgYmV0YSh2YWx1ZSkgIHsgcmV0dXJuIHRoaXNbMV0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IGdhbW1hKCkgICAgICB7IHJldHVybiB0aGlzWzJdOyB9XG4gIHNldCBnYW1tYSh2YWx1ZSkgeyByZXR1cm4gdGhpc1syXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuXG4gIC8vIHBoaSwgdGhldGEsIHBzaSBhbmdsZSBub3RhdGlvblxuICBnZXQgcGhpKCkgICAgICAgIHsgcmV0dXJuIHRoaXNbMF07IH1cbiAgc2V0IHBoaSh2YWx1ZSkgICB7IHJldHVybiB0aGlzWzBdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCB0aGV0YSgpICAgICAgeyByZXR1cm4gdGhpc1sxXTsgfVxuICBzZXQgdGhldGEodmFsdWUpIHsgcmV0dXJuIHRoaXNbMV0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cbiAgZ2V0IHBzaSgpICAgICAgICB7IHJldHVybiB0aGlzWzJdOyB9XG4gIHNldCBwc2kodmFsdWUpICAgeyByZXR1cm4gdGhpc1syXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuXG4gIC8vIHJvbGwsIHBpdGNoLCB5YXcgYW5nbGUgbm90YXRpb25cbiAgZ2V0IHJvbGwoKSAgICAgICB7IHJldHVybiB0aGlzWzBdOyB9XG4gIHNldCByb2xsKHZhbHVlKSAgeyByZXR1cm4gdGhpc1swXSA9IGNoZWNrTnVtYmVyKHZhbHVlKTsgfVxuICBnZXQgcGl0Y2goKSAgICAgIHsgcmV0dXJuIHRoaXNbMV07IH1cbiAgc2V0IHBpdGNoKHZhbHVlKSB7IHJldHVybiB0aGlzWzFdID0gY2hlY2tOdW1iZXIodmFsdWUpOyB9XG4gIGdldCB5YXcoKSAgICAgICAgeyByZXR1cm4gdGhpc1syXTsgfVxuICBzZXQgeWF3KHZhbHVlKSAgIHsgcmV0dXJuIHRoaXNbMl0gPSBjaGVja051bWJlcih2YWx1ZSk7IH1cblxuICAvLyByb3RhdGlvbiBvcmRlciwgaW4gYWxsIHRocmVlIGFuZ2xlIG5vdGF0aW9uc1xuICBnZXQgb3JkZXIoKSAgICAgIHsgcmV0dXJuIHRoaXNbM107IH1cbiAgc2V0IG9yZGVyKHZhbHVlKSB7IHJldHVybiB0aGlzWzNdID0gY2hlY2tPcmRlcih2YWx1ZSk7IH1cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tbXVsdGktc3BhY2VzLCBicmFjZS1zdHlsZSwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuXG4gIC8vIENvbnN0cnVjdG9yc1xuICBmcm9tVmVjdG9yMyh2LCBvcmRlcikge1xuICAgIHJldHVybiB0aGlzLnNldCh2WzBdLCB2WzFdLCB2WzJdLCBOdW1iZXIuaXNGaW5pdGUob3JkZXIpID8gb3JkZXIgOiB0aGlzWzNdKTtcbiAgfVxuXG4gIC8vIFRPRE8gLSB3aXRoIGFuZCB3aXRob3V0IDR0aCBlbGVtZW50XG4gIGZyb21BcnJheShhcnJheSwgb2Zmc2V0ID0gMCkge1xuICAgIHRoaXNbMF0gPSBhcnJheVswICsgb2Zmc2V0XTtcbiAgICB0aGlzWzFdID0gYXJyYXlbMSArIG9mZnNldF07XG4gICAgdGhpc1syXSA9IGFycmF5WzIgKyBvZmZzZXRdO1xuICAgIGlmIChhcnJheVszXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzWzNdID0gYXJyYXlbM107XG4gICAgfVxuICAgIHRoaXMuY2hlY2soKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIENvbW1vbiBaWVggcm90YXRpb24gb3JkZXJcbiAgZnJvbVJvbGxQaXRjaFlhdyhyb2xsLCBwaXRjaCwgeWF3KSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KHJvbGwsIHBpdGNoLCB5YXcsIEV1bGVyLlpZWCk7XG4gIH1cblxuICBmcm9tUXVhdGVybmlvbihxLCBvcmRlcikge1xuICAgIHRoaXMuX2Zyb21Sb3RhdGlvbk1hdHJpeChNYXRyaXg0LmZyb21RdWF0ZXJuaW9uKHEpLCBvcmRlcik7XG4gICAgdGhpcy5jaGVjaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZnJvbVJvdGF0aW9uTWF0cml4KG0sIG9yZGVyID0gRXVsZXIuRGVmYXVsdE9yZGVyKSB7XG4gICAgdGhpcy5fZnJvbVJvdGF0aW9uTWF0cml4KG0sIG9yZGVyKTtcbiAgICB0aGlzLmNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBBQ0NFU1NPUlNcblxuICAvLyBAcmV0dXJuIHtNYXRyaXg0fSBhIHJvdGF0aW9uIG1hdHJpeCBjb3JyZXNwb25kaW5nIHRvIHJvdGF0aW9uc1xuICAvLyAgIHBlciB0aGUgc3BlY2lmaWVkIGV1bGVyIGFuZ2xlc1xuICBnZXRSb3RhdGlvbk1hdHJpeChtID0gbmV3IE1hdHJpeDQoKSkge1xuICAgIHRoaXMuX2dldFJvdGF0aW9uTWF0cml4KG0pO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgZ2V0UXVhdGVybmlvbigpIHtcbiAgICBjb25zdCBxID0gbmV3IFF1YXRlcm5pb24oKTtcbiAgICBzd2l0Y2ggKHRoaXNbNF0pIHtcbiAgICBjYXNlIEV1bGVyLlhZWjpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVgodGhpc1swXSkucm90YXRlWSh0aGlzWzFdKS5yb3RhdGVaKHRoaXNbMl0pO1xuICAgIGNhc2UgRXVsZXIuWVhaOlxuICAgICAgcmV0dXJuIHEucm90YXRlWSh0aGlzWzBdKS5yb3RhdGVYKHRoaXNbMV0pLnJvdGF0ZVoodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5aWFk6XG4gICAgICByZXR1cm4gcS5yb3RhdGVaKHRoaXNbMF0pLnJvdGF0ZVgodGhpc1sxXSkucm90YXRlWSh0aGlzWzJdKTtcbiAgICBjYXNlIEV1bGVyLlpZWDpcbiAgICAgIHJldHVybiBxLnJvdGF0ZVoodGhpc1swXSkucm90YXRlWSh0aGlzWzFdKS5yb3RhdGVYKHRoaXNbMl0pO1xuICAgIGNhc2UgRXVsZXIuWVpYOlxuICAgICAgcmV0dXJuIHEucm90YXRlWSh0aGlzWzBdKS5yb3RhdGVaKHRoaXNbMV0pLnJvdGF0ZVgodGhpc1syXSk7XG4gICAgY2FzZSBFdWxlci5YWlk6XG4gICAgICByZXR1cm4gcS5yb3RhdGVYKHRoaXNbMF0pLnJvdGF0ZVoodGhpc1sxXSkucm90YXRlWSh0aGlzWzJdKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUl9VTktOT1dOX09SREVSKTtcbiAgICB9XG4gIH1cblxuICAvLyBJTlRFUk5BTCBNRVRIT0RTXG5cbiAgLy8gQ29uY2Vyc2lvbiBmcm9tIEV1bGVyIHRvIHJvdGF0aW9uIG1hdHJpeCBhbmQgZnJvbSBtYXRyaXggdG8gRXVsZXJcbiAgLy8gQWRhcHRlZCBmcm9tIHRocmVlLmpzIHVuZGVyIE1JVCBsaWNlbnNlXG5cbiAgLy8gLy8gV0FSTklORzogdGhpcyBkaXNjYXJkcyByZXZvbHV0aW9uIGluZm9ybWF0aW9uIC1iaG91c3RvblxuICAvLyByZW9yZGVyKG5ld09yZGVyKSB7XG4gIC8vICAgY29uc3QgcSA9IG5ldyBRdWF0ZXJuaW9uKCkuc2V0RnJvbUV1bGVyKHRoaXMpO1xuICAvLyAgIHJldHVybiB0aGlzLnNldEZyb21RdWF0ZXJuaW9uKHEsIG5ld09yZGVyKTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5LCBtYXgtc3RhdGVtZW50cywgb25lLXZhciAqL1xuICBfZnJvbVJvdGF0aW9uTWF0cml4KG0sIG9yZGVyID0gRXVsZXIuRGVmYXVsdE9yZGVyKSB7XG4gICAgLy8gYXNzdW1lcyB0aGUgdXBwZXIgM3gzIG9mIG0gaXMgYSBwdXJlIHJvdGF0aW9uIG1hdHJpeCAoaS5lLCB1bnNjYWxlZClcblxuICAgIGNvbnN0IHRlID0gbS5lbGVtZW50cztcbiAgICBjb25zdCBtMTEgPSB0ZVswXSwgbTEyID0gdGVbNF0sIG0xMyA9IHRlWzhdO1xuICAgIGNvbnN0IG0yMSA9IHRlWzFdLCBtMjIgPSB0ZVs1XSwgbTIzID0gdGVbOV07XG4gICAgY29uc3QgbTMxID0gdGVbMl0sIG0zMiA9IHRlWzZdLCBtMzMgPSB0ZVsxMF07XG5cbiAgICBvcmRlciA9IG9yZGVyIHx8IHRoaXNbM107XG5cbiAgICBzd2l0Y2ggKG9yZGVyKSB7XG4gICAgY2FzZSBFdWxlci5YWVo6XG4gICAgICB0aGlzWzFdID0gTWF0aC5hc2luKGNsYW1wKG0xMywgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0xMykgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMF0gPSBNYXRoLmF0YW4yKC1tMjMsIG0zMyk7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKC1tMTIsIG0xMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMihtMzIsIG0yMik7XG4gICAgICAgIHRoaXNbMl0gPSAwO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEV1bGVyLllYWjpcbiAgICAgIHRoaXNbMF0gPSBNYXRoLmFzaW4oLWNsYW1wKG0yMywgLTEsIDEpKTtcblxuICAgICAgaWYgKE1hdGguYWJzKG0yMykgPCBBTE1PU1RfT05FKSB7XG4gICAgICAgIHRoaXNbMV0gPSBNYXRoLmF0YW4yKG0xMywgbTMzKTtcbiAgICAgICAgdGhpc1syXSA9IE1hdGguYXRhbjIobTIxLCBtMjIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1sxXSA9IE1hdGguYXRhbjIoLW0zMSwgbTExKTtcbiAgICAgICAgdGhpc1syXSA9IDA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWlhZOlxuICAgICAgdGhpc1swXSA9IE1hdGguYXNpbihjbGFtcChtMzIsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMzIpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMigtbTMxLCBtMzMpO1xuICAgICAgICB0aGlzWzJdID0gTWF0aC5hdGFuMigtbTEyLCBtMjIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1sxXSA9IDA7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKG0yMSwgbTExKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBFdWxlci5aWVg6XG4gICAgICB0aGlzWzFdID0gTWF0aC5hc2luKC1jbGFtcChtMzEsIC0xLCAxKSk7XG5cbiAgICAgIGlmIChNYXRoLmFicyhtMzEpIDwgQUxNT1NUX09ORSkge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMihtMzIsIG0zMyk7XG4gICAgICAgIHRoaXNbMl0gPSBNYXRoLmF0YW4yKG0yMSwgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSAwO1xuICAgICAgICB0aGlzWzJdID0gTWF0aC5hdGFuMigtbTEyLCBtMjIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIEV1bGVyLllaWDpcbiAgICAgIHRoaXNbMl0gPSBNYXRoLmFzaW4oY2xhbXAobTIxLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTIxKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1swXSA9IE1hdGguYXRhbjIoLW0yMywgbTIyKTtcbiAgICAgICAgdGhpc1sxXSA9IE1hdGguYXRhbjIoLW0zMSwgbTExKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbMF0gPSAwO1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMihtMTMsIG0zMyk7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgRXVsZXIuWFpZOlxuICAgICAgdGhpc1syXSA9IE1hdGguYXNpbigtY2xhbXAobTEyLCAtMSwgMSkpO1xuXG4gICAgICBpZiAoTWF0aC5hYnMobTEyKSA8IEFMTU9TVF9PTkUpIHtcbiAgICAgICAgdGhpc1swXSA9IE1hdGguYXRhbjIobTMyLCBtMjIpO1xuICAgICAgICB0aGlzWzFdID0gTWF0aC5hdGFuMihtMTMsIG0xMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzWzBdID0gTWF0aC5hdGFuMigtbTIzLCBtMzMpO1xuICAgICAgICB0aGlzWzFdID0gMDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihFUlJfVU5LTk9XTl9PUkRFUik7XG4gICAgfVxuXG4gICAgdGhpc1szXSA9IG9yZGVyO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBfZ2V0Um90YXRpb25NYXRyaXgoKSB7XG4gICAgY29uc3QgdGUgPSBuZXcgTWF0cml4NCgpO1xuXG4gICAgY29uc3QgeCA9IHRoaXMueCwgeSA9IHRoaXMueSwgeiA9IHRoaXMuejtcbiAgICBjb25zdCBhID0gTWF0aC5jb3MoeCk7XG4gICAgY29uc3QgYyA9IE1hdGguY29zKHkpO1xuICAgIGNvbnN0IGUgPSBNYXRoLmNvcyh6KTtcbiAgICBjb25zdCBiID0gTWF0aC5zaW4oeCk7XG4gICAgY29uc3QgZCA9IE1hdGguc2luKHkpO1xuICAgIGNvbnN0IGYgPSBNYXRoLnNpbih6KTtcblxuICAgIHN3aXRjaCAodGhpc1szXSkge1xuICAgIGNhc2UgRXVsZXIuWFlaOiB7XG4gICAgICBjb25zdCBhZSA9IGEgKiBlLCBhZiA9IGEgKiBmLCBiZSA9IGIgKiBlLCBiZiA9IGIgKiBmO1xuXG4gICAgICB0ZVswXSA9IGMgKiBlO1xuICAgICAgdGVbNF0gPSAtYyAqIGY7XG4gICAgICB0ZVs4XSA9IGQ7XG5cbiAgICAgIHRlWzFdID0gYWYgKyBiZSAqIGQ7XG4gICAgICB0ZVs1XSA9IGFlIC0gYmYgKiBkO1xuICAgICAgdGVbOV0gPSAtYiAqIGM7XG5cbiAgICAgIHRlWzJdID0gYmYgLSBhZSAqIGQ7XG4gICAgICB0ZVs2XSA9IGJlICsgYWYgKiBkO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLllYWjoge1xuICAgICAgY29uc3QgY2UgPSBjICogZSwgY2YgPSBjICogZiwgZGUgPSBkICogZSwgZGYgPSBkICogZjtcblxuICAgICAgdGVbMF0gPSBjZSArIGRmICogYjtcbiAgICAgIHRlWzRdID0gZGUgKiBiIC0gY2Y7XG4gICAgICB0ZVs4XSA9IGEgKiBkO1xuXG4gICAgICB0ZVsxXSA9IGEgKiBmO1xuICAgICAgdGVbNV0gPSBhICogZTtcbiAgICAgIHRlWzldID0gLWI7XG5cbiAgICAgIHRlWzJdID0gY2YgKiBiIC0gZGU7XG4gICAgICB0ZVs2XSA9IGRmICsgY2UgKiBiO1xuICAgICAgdGVbMTBdID0gYSAqIGM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIEV1bGVyLlpYWToge1xuICAgICAgY29uc3QgY2UgPSBjICogZSwgY2YgPSBjICogZiwgZGUgPSBkICogZSwgZGYgPSBkICogZjtcblxuICAgICAgdGVbMF0gPSBjZSAtIGRmICogYjtcbiAgICAgIHRlWzRdID0gLWEgKiBmO1xuICAgICAgdGVbOF0gPSBkZSArIGNmICogYjtcblxuICAgICAgdGVbMV0gPSBjZiArIGRlICogYjtcbiAgICAgIHRlWzVdID0gYSAqIGU7XG4gICAgICB0ZVs5XSA9IGRmIC0gY2UgKiBiO1xuXG4gICAgICB0ZVsyXSA9IC1hICogZDtcbiAgICAgIHRlWzZdID0gYjtcbiAgICAgIHRlWzEwXSA9IGEgKiBjO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBFdWxlci5aWVg6IHtcbiAgICAgIGNvbnN0IGFlID0gYSAqIGUsIGFmID0gYSAqIGYsIGJlID0gYiAqIGUsIGJmID0gYiAqIGY7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IGJlICogZCAtIGFmO1xuICAgICAgdGVbOF0gPSBhZSAqIGQgKyBiZjtcblxuICAgICAgdGVbMV0gPSBjICogZjtcbiAgICAgIHRlWzVdID0gYmYgKiBkICsgYWU7XG4gICAgICB0ZVs5XSA9IGFmICogZCAtIGJlO1xuXG4gICAgICB0ZVsyXSA9IC1kO1xuICAgICAgdGVbNl0gPSBiICogYztcbiAgICAgIHRlWzEwXSA9IGEgKiBjO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBFdWxlci5ZWlg6IHtcbiAgICAgIGNvbnN0IGFjID0gYSAqIGMsIGFkID0gYSAqIGQsIGJjID0gYiAqIGMsIGJkID0gYiAqIGQ7XG5cbiAgICAgIHRlWzBdID0gYyAqIGU7XG4gICAgICB0ZVs0XSA9IGJkIC0gYWMgKiBmO1xuICAgICAgdGVbOF0gPSBiYyAqIGYgKyBhZDtcblxuICAgICAgdGVbMV0gPSBmO1xuICAgICAgdGVbNV0gPSBhICogZTtcbiAgICAgIHRlWzldID0gLWIgKiBlO1xuXG4gICAgICB0ZVsyXSA9IC1kICogZTtcbiAgICAgIHRlWzZdID0gYWQgKiBmICsgYmM7XG4gICAgICB0ZVsxMF0gPSBhYyAtIGJkICogZjtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgRXVsZXIuWFpZOiB7XG4gICAgICBjb25zdCBhYyA9IGEgKiBjLCBhZCA9IGEgKiBkLCBiYyA9IGIgKiBjLCBiZCA9IGIgKiBkO1xuXG4gICAgICB0ZVswXSA9IGMgKiBlO1xuICAgICAgdGVbNF0gPSAtZjtcbiAgICAgIHRlWzhdID0gZCAqIGU7XG5cbiAgICAgIHRlWzFdID0gYWMgKiBmICsgYmQ7XG4gICAgICB0ZVs1XSA9IGEgKiBlO1xuICAgICAgdGVbOV0gPSBhZCAqIGYgLSBiYztcblxuICAgICAgdGVbMl0gPSBiYyAqIGYgLSBhZDtcbiAgICAgIHRlWzZdID0gYiAqIGU7XG4gICAgICB0ZVsxMF0gPSBiZCAqIGYgKyBhYztcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJSX1VOS05PV05fT1JERVIpO1xuICAgIH1cblxuICAgIC8vIGxhc3QgY29sdW1uXG4gICAgdGVbM10gPSAwO1xuICAgIHRlWzddID0gMDtcbiAgICB0ZVsxMV0gPSAwO1xuXG4gICAgLy8gYm90dG9tIHJvd1xuICAgIHRlWzEyXSA9IDA7XG4gICAgdGVbMTNdID0gMDtcbiAgICB0ZVsxNF0gPSAwO1xuICAgIHRlWzE1XSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHksIG1heC1zdGF0ZW1lbnRzLCBvbmUtdmFyICovXG59XG4iXX0=

2

package.json

@@ -5,3 +5,3 @@ {

"license": "MIT",
"version": "1.0.0-alpha.4",
"version": "1.0.0-alpha.5",
"keywords": [

@@ -8,0 +8,0 @@ "webgl",

@@ -141,2 +141,10 @@ import MathArray from './math-array';

// roll, pitch, yaw angle notation
get roll() { return this[0]; }
set roll(value) { return this[0] = checkNumber(value); }
get pitch() { return this[1]; }
set pitch(value) { return this[1] = checkNumber(value); }
get yaw() { return this[2]; }
set yaw(value) { return this[2] = checkNumber(value); }
// rotation order, in all three angle notations

@@ -143,0 +151,0 @@ get order() { return this[3]; }

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc