Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@gmod/bam

Package Overview
Dependencies
Maintainers
5
Versions
72
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@gmod/bam - npm Package Compare versions

Comparing version 1.1.5 to 1.1.6

10

CHANGELOG.md

@@ -0,6 +1,12 @@

<a name="1.1.6"></a>
## [1.1.6](https://github.com/GMOD/bam-js/compare/v1.1.5...v1.1.6) (2021-02-20)
- Add qualRaw function on records for getting raw qual score array instead of string
<a name="1.1.5"></a>
## [1.1.5](https://github.com/GMOD/bam-js/compare/v1.1.4...v1.1.5) (2020-12-11)
- Allow getHeaderText to accept cancellation options

@@ -7,0 +13,0 @@

2

dist/record.d.ts

@@ -0,1 +1,2 @@

/// <reference types="node" />
/**

@@ -28,2 +29,3 @@ * Class of each BAM record returned by this API.

qual(): string | undefined;
qualRaw(): Buffer | undefined;
strand(): 1 | -1;

@@ -30,0 +32,0 @@ multi_segment_next_segment_strand(): 1 | -1 | undefined;

@@ -181,2 +181,9 @@ "use strict";

value: function qual() {
var _this$qualRaw;
return (_this$qualRaw = this.qualRaw()) === null || _this$qualRaw === void 0 ? void 0 : _this$qualRaw.join(' ');
}
}, {
key: "qualRaw",
value: function qualRaw() {
if (this.isSegmentUnmapped()) {

@@ -195,3 +202,3 @@ return undefined;

return qseq.join(' ');
return qseq;
}

@@ -456,4 +463,3 @@ }, {

return (//@ts-ignore
(0, _map.default)(_context3 = cigar.match(/\d+\D/g) //@ts-ignore
).call(_context3, function (op) {
(0, _map.default)(_context3 = cigar.match(/\d+\D/g)).call(_context3, function (op) {
return [op.match(/\D/)[0].toUpperCase(), (0, _parseInt2.default)(op, 10)];

@@ -751,2 +757,2 @@ })

exports.default = BamRecord;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWNvcmQudHMiXSwibmFtZXMiOlsiU0VRUkVUX0RFQ09ERVIiLCJzcGxpdCIsInMiLCJjaGFyQ29kZUF0IiwiQ0lHQVJfREVDT0RFUiIsIkJhbVJlY29yZCIsImFyZ3MiLCJ1bmRlZmluZWQiLCJkYXRhIiwiYnl0ZXMiLCJzdGFydCIsImVuZCIsImJ5dGVBcnJheSIsIl9pZCIsImZpbGVPZmZzZXQiLCJfcmVmSUQiLCJyZWFkSW50MzJMRSIsImZsYWdzIiwiZmllbGQiLCJfZ2V0IiwidG9Mb3dlckNhc2UiLCJnZXQiLCJfcGFyc2VUYWciLCJfcGFyc2VBbGxUYWdzIiwidGFncyIsImlzU2VnbWVudFVubWFwcGVkIiwicHVzaCIsImlzUGFpcmVkIiwiX3RhZ0xpc3QiLCJrIiwic2VlbiIsInQiLCJsdCIsIm1xIiwicCIsImxzZXEiLCJxc2VxIiwiQnVmZmVyIiwiYWxsb2NVbnNhZmUiLCJqIiwiam9pbiIsImlzUmV2ZXJzZUNvbXBsZW1lbnRlZCIsImlzTWF0ZVVubWFwcGVkIiwiaXNNYXRlUmV2ZXJzZUNvbXBsZW1lbnRlZCIsIm5sIiwidG9TdHJpbmciLCJ0YWdOYW1lIiwiX2FsbFRhZ3NQYXJzZWQiLCJfdGFnT2Zmc2V0IiwiYmxvY2tFbmQiLCJsY1RhZyIsInRhZyIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInR5cGUiLCJ2YWx1ZSIsInJlYWRVSW50MzJMRSIsInJlYWRJbnQ4IiwicmVhZFVJbnQ4IiwicmVhZEludDE2TEUiLCJyZWFkVUludDE2TEUiLCJyZWFkRmxvYXRMRSIsImNjIiwiQnR5cGUiLCJsaW1pdCIsImNpZ29wIiwibG9wIiwib3AiLCJjb25zb2xlIiwid2FybiIsImNpZ2FyIiwibWF0Y2giLCJ0b1VwcGVyQ2FzZSIsIkNvbnN0YW50cyIsIkJBTV9GUEFJUkVEIiwiQkFNX0ZQUk9QRVJfUEFJUiIsIkJBTV9GVU5NQVAiLCJCQU1fRk1VTk1BUCIsIkJBTV9GUkVWRVJTRSIsIkJBTV9GTVJFVkVSU0UiLCJCQU1fRlJFQUQxIiwiQkFNX0ZSRUFEMiIsIkJBTV9GU0VDT05EQVJZIiwiQkFNX0ZRQ0ZBSUwiLCJCQU1fRkRVUCIsIkJBTV9GU1VQUExFTUVOVEFSWSIsIm51bUNpZ2FyT3BzIiwic2VxTGVuIiwibHJlZiIsImxlbmd0aF9vbl9yZWYiLCJjIiwic2VxIiwic2VxQnl0ZXMiLCJsZW4iLCJidWYiLCJpIiwic2IiLCJfbmV4dF9yZWZpZCIsInMxIiwiczIiLCJvMSIsIm8yIiwiaXNSZWFkMSIsImlzUmVhZDIiLCJ0bXAiLCJpc2l6ZSIsInRlbXBsYXRlX2xlbmd0aCIsImNoYXJBdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUVBLElBQU1BLGNBQWMsR0FBRyxnREFBbUJDLEtBQW5CLENBQXlCLEVBQXpCLGtCQUFpQyxVQUFBQyxDQUFDO0FBQUEsU0FBSUEsQ0FBQyxDQUFDQyxVQUFGLENBQWEsQ0FBYixDQUFKO0FBQUEsQ0FBbEMsQ0FBdkI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsbUJBQW1CSCxLQUFuQixDQUF5QixFQUF6QixDQUF0QjtBQUVBOzs7O0lBR3FCSSxTO0FBU25CLHFCQUFZQyxJQUFaLEVBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0RBSGtCQyxTQUdsQjtBQUFBLG9EQUZNLEVBRU47QUFBQSwwREFERSxLQUNGO0FBQ3JCLFNBQUtDLElBQUwsR0FBWSxFQUFaO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1hDLE1BQUFBLEtBQUssRUFBRUosSUFBSSxDQUFDRyxLQUFMLENBQVdDLEtBRFA7QUFFWEMsTUFBQUEsR0FBRyxFQUFFTCxJQUFJLENBQUNHLEtBQUwsQ0FBV0UsR0FGTDtBQUdYQyxNQUFBQSxTQUFTLEVBQUVOLElBQUksQ0FBQ0csS0FBTCxDQUFXRztBQUhYLEtBQWI7QUFLQSxTQUFLQyxHQUFMLEdBQVdQLElBQUksQ0FBQ1EsVUFBaEI7QUFQcUIsc0JBUVEsS0FBS0wsS0FSYjtBQUFBLFFBUWJDLEtBUmEsZUFRYkEs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O0FBQ1QsYUFBTyxLQUFLRCxLQUFMLENBQVdHLFNBQVgsQ0FBcUJJLFdBQXJCLENBQWlDLEtBQUtQLEtBQUwsQ0FBV0MsS0FBWCxHQUFtQixFQUFwRCxDQUFQO0FBQ0Q7OztpQ0FFWTtBQUNYLGFBQU8sS0FBS0QsS0FBTCxDQUFXRyxTQUFYLENBQXFCSSxXQUFyQixDQUFpQyxLQUFLUCxLQUFMLENBQVdDLEtBQVgsR0FBbUIsRUFBcEQsQ0FBUDtBQUNEOzs7a0NBRWE7QUFDWixhQUFPLEtBQUtELEtBQUwsQ0FBV0csU0FBWCxDQUFxQkksV0FBckIsQ0FBaUMsS0FBS1AsS0FBTCxDQUFXQyxLQUFYLEdBQW1CLEVBQXBELENBQVA7QUFDRDs7O2dDQUVXO0FBQ1YsYUFBTyxLQUFLRCxLQUFMLENBQVdHLFNBQVgsQ0FBcUJJLFdBQXJCLENBQWlDLEtBQUtQLEtBQUwsQ0FBV0MsS0FBWCxHQUFtQixFQUFwRCxDQUFQO0FBQ0Q7OztzQ0FFaUI7QUFDaEIsYUFBTyxLQUFLRCxLQUFMLENBQVdHLFNBQVgsQ0FBcUJJLFdBQXJCLENBQWlDLEtBQUtQLEtBQUwsQ0FBV0MsS0FBWCxHQUFtQixFQUFwRCxDQUFQO0FBQ0Q7Ozs2QkFFUTtBQUFBO0FBQUE7O0FBQ1AsVUFBTUYsSUFBNEIsR0FBRyxFQUFyQztBQUNBLDJEQUFZLElBQVosbUJBQTBCLFVBQUFxQixDQUFDLEVBQUk7QUFDN0IsWUFBSUEsQ0FBQyxDQUFDOEUsTUFBRixDQUFTLENBQVQsTUFBZ0IsR0FBaEIsSUFBdUI5RSxDQUFDLEtBQUssT0FBakMsRUFBMEM7QUFDeEM7QUFDRCxTQUg0QixDQUk3Qjs7O0FBQ0FyQixRQUFBQSxJQUFJLENBQUNxQixDQUFELENBQUosR0FBVSxNQUFJLENBQUNBLENBQUQsQ0FBZDtBQUNELE9BTkQ7QUFRQSxhQUFPckIsSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2NhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uICovXG5pbXBvcnQgQ29uc3RhbnRzIGZyb20gJy4vY29uc3RhbnRzJ1xuXG5jb25zdCBTRVFSRVRfREVDT0RFUiA9ICc9QUNNR1JTVlRXWUhLREJOJy5zcGxpdCgnJykubWFwKHMgPT4gcy5jaGFyQ29kZUF0KDApKVxuY29uc3QgQ0lHQVJfREVDT0RFUiA9ICdNSUROU0hQPVg/Pz8/Pz8/Jy5zcGxpdCgnJylcblxuLyoqXG4gKiBDbGFzcyBvZiBlYWNoIEJBTSByZWNvcmQgcmV0dXJuZWQgYnkgdGhpcyBBUEkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhbVJlY29yZCB7XG4gIHByaXZhdGUgZGF0YTogYW55XG4gIHByaXZhdGUgYnl0ZXM6IGFueVxuICBwcml2YXRlIGZsYWdzOiBhbnlcbiAgcHJpdmF0ZSBfaWQ6IG51bWJlclxuICBwcml2YXRlIF9yZWZJRDogbnVtYmVyXG4gIHByaXZhdGUgX3RhZ09mZnNldDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIHByaXZhdGUgX3RhZ0xpc3Q6IHN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSBfYWxsVGFnc1BhcnNlZCA9IGZhbHNlXG4gIGNvbnN0cnVjdG9yKGFyZ3M6IGFueSkge1xuICAgIHRoaXMuZGF0YSA9IHt9XG4gICAgdGhpcy5ieXRlcyA9IHtcbiAgICAgIHN0YXJ0OiBhcmdzLmJ5dGVzLnN0YXJ0LFxuICAgICAgZW5kOiBhcmdzLmJ5dGVzLmVuZCxcbiAgICAgIGJ5dGVBcnJheTogYXJncy5ieXRlcy5ieXRlQXJyYXksXG4gICAgfVxuICAgIHRoaXMuX2lkID0gYXJncy5maWxlT2Zmc2V0XG4gICAgY29uc3QgeyBzdGFydCwgYnl0ZUFycmF5IH0gPSB0aGlzLmJ5dGVzXG4gICAgdGhpcy5fcmVmSUQgPSBieXRlQXJyYXkucmVhZEludDMyTEUoc3RhcnQgKyA0KVxuICAgIHRoaXMuZGF0YS5zdGFydCA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShzdGFydCArIDgpXG4gICAgdGhpcy5mbGFncyA9IChieXRlQXJyYXkucmVhZEludDMyTEUoc3RhcnQgKyAxNikgJiAweGZmZmYwMDAwKSA+PiAxNlxuICB9XG5cbiAgZ2V0KGZpZWxkOiBzdHJpbmcpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAodGhpc1tmaWVsZF0pIHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMuZGF0YVtmaWVsZF0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVtmaWVsZF1cbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdGhpcy5kYXRhW2ZpZWxkXSA9IHRoaXNbZmllbGRdKClcbiAgICAgIHJldHVybiB0aGlzLmRhdGFbZmllbGRdXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9nZXQoZmllbGQudG9Mb3dlckNhc2UoKSlcbiAgfVxuXG4gIGVuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3N0YXJ0JykgKyAodGhpcy5nZXQoJ2xlbmd0aF9vbl9yZWYnKSB8fCB0aGlzLmdldCgnc2VxX2xlbmd0aCcpIHx8IHVuZGVmaW5lZClcbiAgfVxuXG4gIHNlcV9pZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmSURcbiAgfVxuXG4gIC8vIHNhbWUgYXMgZ2V0KCksIGV4Y2VwdCByZXF1aXJlcyBsb3dlci1jYXNlIGFyZ3VtZW50cy4gIHVzZWRcbiAgLy8gaW50ZXJuYWxseSB0byBzYXZlIGxvdHMgb2YgY2FsbHMgdG8gZmllbGQudG9Mb3dlckNhc2UoKVxuICBfZ2V0KGZpZWxkOiBzdHJpbmcpIHtcbiAgICBpZiAoZmllbGQgaW4gdGhpcy5kYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhW2ZpZWxkXVxuICAgIH1cbiAgICB0aGlzLmRhdGFbZmllbGRdID0gdGhpcy5fcGFyc2VUYWcoZmllbGQpXG4gICAgcmV0dXJuIHRoaXMuZGF0YVtmaWVsZF1cbiAgfVxuXG4gIF90YWdzKCkge1xuICAgIHRoaXMuX3BhcnNlQWxsVGFncygpXG5cbiAgICBsZXQgdGFncyA9IFsnc2VxJ11cblxuICAgIGlmICghdGhpcy5pc1NlZ21lbnRVbm1hcHBlZCgpKSB7XG4gICAgICB0YWdzLnB1c2goXG4gICAgICAgICdzdGFydCcsXG4gICAgICAgICdlbmQnLFxuICAgICAgICAnc3RyYW5kJyxcbiAgICAgICAgJ3Njb3JlJyxcbiAgICAgICAgJ3F1YWwnLFxuICAgICAgICAnTVEnLFxuICAgICAgICAnQ0lHQVInLFxuICAgICAgICAnbGVuZ3RoX29uX3JlZicsXG4gICAgICAgICd0ZW1wbGF0ZV9sZW5ndGgnLFxuICAgICAgKVxuICAgIH1cbiAgICBpZiAodGhpcy5pc1BhaXJlZCgpKSB7XG4gICAgICB0YWdzLnB1c2goJ25leHRfc2VnbWVudF9wb3NpdGlvbicsICdwYWlyX29yaWVudGF0aW9uJylcbiAgICB9XG4gICAgdGFncyA9IHRhZ3MuY29uY2F0KHRoaXMuX3RhZ0xpc3QgfHwgW10pXG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmRhdGEpLmZvckVhY2goayA9PiB7XG4gICAgICBpZiAoa1swXSAhPT0gJ18nICYmIGsgIT09ICduZXh0X3NlcV9pZCcpIHtcbiAgICAgICAgdGFncy5wdXNoKGspXG4gICAgICB9XG4gICAgfSlcblxuICAgIGNvbnN0IHNlZW46IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge31cbiAgICB0YWdzID0gdGFncy5maWx0ZXIodCA9PiB7XG4gICAgICBpZiAoKHQgaW4gdGhpcy5kYXRhICYmIHRoaXMuZGF0YVt0XSA9PT0gdW5kZWZpbmVkKSB8fCB0ID09PSAnQ0cnIHx8IHQgPT09ICdjZycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGx0ID0gdC50b0xvd2VyQ2FzZSgpXG4gICAgICBjb25zdCBzID0gc2VlbltsdF1cbiAgICAgIHNlZW5bbHRdID0gdHJ1ZVxuICAgICAgcmV0dXJuICFzXG4gICAgfSlcblxuICAgIHJldHVybiB0YWdzXG4gIH1cblxuICBwYXJlbnQoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY2hpbGRyZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdzdWJmZWF0dXJlcycpXG4gIH1cblxuICBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWRcbiAgfVxuXG4gIC8vIHNwZWNpYWwgcGFyc2Vyc1xuICAvKipcbiAgICogTWFwcGluZyBxdWFsaXR5IHNjb3JlLlxuICAgKi9cbiAgbXEoKSB7XG4gICAgY29uc3QgbXEgPSAodGhpcy5nZXQoJ19iaW5fbXFfbmwnKSAmIDB4ZmYwMCkgPj4gOFxuICAgIHJldHVybiBtcSA9PT0gMjU1ID8gdW5kZWZpbmVkIDogbXFcbiAgfVxuXG4gIHNjb3JlKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbXEnKVxuICB9XG5cbiAgcXVhbCgpIHtcbiAgICBpZiAodGhpcy5pc1NlZ21lbnRVbm1hcHBlZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgeyBieXRlQXJyYXkgfSA9IHRoaXMuYnl0ZXNcbiAgICBjb25zdCBwID1cbiAgICAgIHRoaXMuYnl0ZXMuc3RhcnQgK1xuICAgICAgMzYgK1xuICAgICAgdGhpcy5nZXQoJ19sX3JlYWRfbmFtZScpICtcbiAgICAgIHRoaXMuZ2V0KCdfbl9jaWdhcl9vcCcpICogNCArXG4gICAgICB0aGlzLmdldCgnX3NlcV9ieXRlcycpXG4gICAgY29uc3QgbHNlcSA9IHRoaXMuZ2V0KCdzZXFfbGVuZ3RoJylcbiAgICBjb25zdCBxc2VxID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxzZXEpXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsc2VxOyArK2opIHtcbiAgICAgIHFzZXFbal0gPSBieXRlQXJyYXlbcCArIGpdXG4gICAgfVxuICAgIHJldHVybiBxc2VxLmpvaW4oJyAnKVxuICB9XG5cbiAgc3RyYW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlzUmV2ZXJzZUNvbXBsZW1lbnRlZCgpID8gLTEgOiAxXG4gIH1cblxuICBtdWx0aV9zZWdtZW50X25leHRfc2VnbWVudF9zdHJhbmQoKSB7XG4gICAgaWYgKHRoaXMuaXNNYXRlVW5tYXBwZWQoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc01hdGVSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAtMSA6IDFcbiAgfVxuXG4gIG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdfcmVhZF9uYW1lJylcbiAgfVxuXG4gIF9yZWFkX25hbWUoKSB7XG4gICAgY29uc3QgbmwgPSB0aGlzLmdldCgnX2xfcmVhZF9uYW1lJylcbiAgICByZXR1cm4gdGhpcy5ieXRlcy5ieXRlQXJyYXkudG9TdHJpbmcoXG4gICAgICAnYXNjaWknLFxuICAgICAgdGhpcy5ieXRlcy5zdGFydCArIDM2LFxuICAgICAgdGhpcy5ieXRlcy5zdGFydCArIDM2ICsgbmwgLSAxLFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIG9mIGEgdGFnLCBwYXJzaW5nIHRoZSB0YWdzIGFzIGZhciBhcyBuZWNlc3NhcnkuXG4gICAqIE9ubHkgY2FsbGVkIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgcGFyc2VkIHRoYXQgZmllbGQuXG4gICAqL1xuICBfcGFyc2VUYWcodGFnTmFtZT86IHN0cmluZykge1xuICAgIC8vIGlmIGFsbCBvZiB0aGUgdGFncyBoYXZlIGJlZW4gcGFyc2VkIGFuZCB3ZSdyZSBzdGlsbCBiZWluZ1xuICAgIC8vIGNhbGxlZCwgd2UgYWxyZWFkeSBrbm93IHRoYXQgd2UgaGF2ZSBubyBzdWNoIHRhZywgYmVjYXVzZVxuICAgIC8vIGl0IHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGNhY2hlZC5cbiAgICBpZiAodGhpcy5fYWxsVGFnc1BhcnNlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHsgYnl0ZUFycmF5IH0gPSB0aGlzLmJ5dGVzXG4gICAgbGV0IHAgPVxuICAgICAgdGhpcy5fdGFnT2Zmc2V0IHx8XG4gICAgICB0aGlzLmJ5dGVzLnN0YXJ0ICtcbiAgICAgICAgMzYgK1xuICAgICAgICB0aGlzLmdldCgnX2xfcmVhZF9uYW1lJykgK1xuICAgICAgICB0aGlzLmdldCgnX25fY2lnYXJfb3AnKSAqIDQgK1xuICAgICAgICB0aGlzLmdldCgnX3NlcV9ieXRlcycpICtcbiAgICAgICAgdGhpcy5nZXQoJ3NlcV9sZW5ndGgnKVxuXG4gICAgY29uc3QgYmxvY2tFbmQgPSB0aGlzLmJ5dGVzLmVuZFxuICAgIGxldCBsY1RhZ1xuICAgIHdoaWxlIChwIDwgYmxvY2tFbmQgJiYgbGNUYWcgIT09IHRhZ05hbWUpIHtcbiAgICAgIGNvbnN0IHRhZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W3BdLCBieXRlQXJyYXlbcCArIDFdKVxuICAgICAgbGNUYWcgPSB0YWcudG9Mb3dlckNhc2UoKVxuICAgICAgY29uc3QgdHlwZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W3AgKyAyXSlcbiAgICAgIHAgKz0gM1xuXG4gICAgICBsZXQgdmFsdWVcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICB2YWx1ZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W3BdKVxuICAgICAgICAgIHAgKz0gMVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2knOlxuICAgICAgICAgIHZhbHVlID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnSSc6XG4gICAgICAgICAgdmFsdWUgPSBieXRlQXJyYXkucmVhZFVJbnQzMkxFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnYyc6XG4gICAgICAgICAgdmFsdWUgPSBieXRlQXJyYXkucmVhZEludDgocClcbiAgICAgICAgICBwICs9IDFcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICB2YWx1ZSA9IGJ5dGVBcnJheS5yZWFkVUludDgocClcbiAgICAgICAgICBwICs9IDFcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICB2YWx1ZSA9IGJ5dGVBcnJheS5yZWFkSW50MTZMRShwKVxuICAgICAgICAgIHAgKz0gMlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgIHZhbHVlID0gYnl0ZUFycmF5LnJlYWRVSW50MTZMRShwKVxuICAgICAgICAgIHAgKz0gMlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2YnOlxuICAgICAgICAgIHZhbHVlID0gYnl0ZUFycmF5LnJlYWRGbG9hdExFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnWic6XG4gICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgIHZhbHVlID0gJydcbiAgICAgICAgICB3aGlsZSAocCA8PSBibG9ja0VuZCkge1xuICAgICAgICAgICAgY29uc3QgY2MgPSBieXRlQXJyYXlbcCsrXVxuICAgICAgICAgICAgaWYgKGNjID09PSAwKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdCJzoge1xuICAgICAgICAgIHZhbHVlID0gJydcbiAgICAgICAgICBjb25zdCBjYyA9IGJ5dGVBcnJheVtwKytdXG4gICAgICAgICAgY29uc3QgQnR5cGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKVxuICAgICAgICAgIGNvbnN0IGxpbWl0ID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnaScpIHtcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdDRycpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2lnb3AgPSBieXRlQXJyYXkucmVhZEludDMyTEUocClcbiAgICAgICAgICAgICAgICBjb25zdCBsb3AgPSBjaWdvcCA+PiA0XG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBDSUdBUl9ERUNPREVSW2NpZ29wICYgMHhmXVxuICAgICAgICAgICAgICAgIHZhbHVlICs9IGxvcCArIG9wXG4gICAgICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGltaXQ7IGsrKykge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgICAgICAgICAgIGlmIChrICsgMSA8IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnSScpIHtcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdDRycpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2lnb3AgPSBieXRlQXJyYXkucmVhZFVJbnQzMkxFKHApXG4gICAgICAgICAgICAgICAgY29uc3QgbG9wID0gY2lnb3AgPj4gNFxuICAgICAgICAgICAgICAgIGNvbnN0IG9wID0gQ0lHQVJfREVDT0RFUltjaWdvcCAmIDB4Zl1cbiAgICAgICAgICAgICAgICB2YWx1ZSArPSBsb3AgKyBvcFxuICAgICAgICAgICAgICAgIHAgKz0gNFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGxpbWl0OyBrKyspIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSBieXRlQXJyYXkucmVhZFVJbnQzMkxFKHApXG4gICAgICAgICAgICAgICAgaWYgKGsgKyAxIDwgbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlICs9ICcsJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwICs9IDRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoQnR5cGUgPT09ICdzJykge1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkSW50MTZMRShwKVxuICAgICAgICAgICAgICBpZiAoayArIDEgPCBsaW1pdCkge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9ICcsJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHAgKz0gMlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoQnR5cGUgPT09ICdTJykge1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkVUludDE2TEUocClcbiAgICAgICAgICAgICAgaWYgKGsgKyAxIDwgbGltaXQpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwICs9IDJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnYycpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGltaXQ7IGsrKykge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBieXRlQXJyYXkucmVhZEludDgocClcbiAgICAgICAgICAgICAgaWYgKGsgKyAxIDwgbGltaXQpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnQycpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGltaXQ7IGsrKykge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBieXRlQXJyYXkucmVhZFVJbnQ4KHApXG4gICAgICAgICAgICAgIGlmIChrICsgMSA8IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJywnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcCArPSAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChCdHlwZSA9PT0gJ2YnKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGxpbWl0OyBrKyspIHtcbiAgICAgICAgICAgICAgdmFsdWUgKz0gYnl0ZUFycmF5LnJlYWRGbG9hdExFKHApXG4gICAgICAgICAgICAgIGlmIChrICsgMSA8IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJywnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gQkFNIHRhZyB0eXBlICcke3R5cGV9JywgdGFncyBtYXkgYmUgaW5jb21wbGV0ZWApXG4gICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWRcbiAgICAgICAgICBwID0gYmxvY2tFbmQgLy8gc3RvcCBwYXJzaW5nIHRhZ3NcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdGFnT2Zmc2V0ID0gcFxuXG4gICAgICB0aGlzLl90YWdMaXN0LnB1c2godGFnKVxuICAgICAgaWYgKGxjVGFnID09PSB0YWdOYW1lKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFbbGNUYWddID0gdmFsdWVcbiAgICB9XG4gICAgdGhpcy5fYWxsVGFnc1BhcnNlZCA9IHRydWVcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBfcGFyc2VBbGxUYWdzKCkge1xuICAgIHRoaXMuX3BhcnNlVGFnKCcnKVxuICB9XG5cbiAgX3BhcnNlQ2lnYXIoY2lnYXI6IHN0cmluZykge1xuICAgIHJldHVybiAoXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGNpZ2FyXG4gICAgICAgIC5tYXRjaCgvXFxkK1xcRC9nKVxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgLm1hcCgob3A6IHN0cmluZykgPT4gW29wLm1hdGNoKC9cXEQvKVswXS50b1VwcGVyQ2FzZSgpLCBwYXJzZUludChvcCwgMTApXSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXMgcGFpcmVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYm90aCBzZWdtZW50cyBhcmUgbWFwcGVkXG4gICAqL1xuICBpc1BhaXJlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlBBSVJFRClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgcmVhZCBpcyBwYWlyZWQsIGFuZCBib3RoIHNlZ21lbnRzIGFyZSBtYXBwZWQgKi9cbiAgaXNQcm9wZXJseVBhaXJlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlBST1BFUl9QQUlSKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSByZWFkIGl0c2VsZiBpcyB1bm1hcHBlZDsgY29uZmxpY3RpdmUgd2l0aCBpc1Byb3Blcmx5UGFpcmVkICovXG4gIGlzU2VnbWVudFVubWFwcGVkKCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GVU5NQVApXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXRzZWxmIGlzIHVubWFwcGVkOyBjb25mbGljdGl2ZSB3aXRoIGlzUHJvcGVybHlQYWlyZWQgKi9cbiAgaXNNYXRlVW5tYXBwZWQoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuZmxhZ3MgJiBDb25zdGFudHMuQkFNX0ZNVU5NQVApXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXMgbWFwcGVkIHRvIHRoZSByZXZlcnNlIHN0cmFuZCAqL1xuICBpc1JldmVyc2VDb21wbGVtZW50ZWQoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuZmxhZ3MgJiBDb25zdGFudHMuQkFNX0ZSRVZFUlNFKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBtYXRlIGlzIG1hcHBlZCB0byB0aGUgcmV2ZXJzZSBzdHJhbmQgKi9cbiAgaXNNYXRlUmV2ZXJzZUNvbXBsZW1lbnRlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRk1SRVZFUlNFKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgcmVhZCBudW1iZXIgMSBpbiBhIHBhaXIgKi9cbiAgaXNSZWFkMSgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlJFQUQxKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgcmVhZCBudW1iZXIgMiBpbiBhIHBhaXIgKi9cbiAgaXNSZWFkMigpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlJFQUQyKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgYSBzZWNvbmRhcnkgYWxpZ25tZW50ICovXG4gIGlzU2Vjb25kYXJ5KCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GU0VDT05EQVJZKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgcmVhZCBoYXMgZmFpbGVkIFFDIGNoZWNrcyAqL1xuICBpc0ZhaWxlZFFjKCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GUUNGQUlMKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSByZWFkIGlzIGFuIG9wdGljYWwgb3IgUENSIGR1cGxpY2F0ZSAqL1xuICBpc0R1cGxpY2F0ZSgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRkRVUClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGlzIGlzIGEgc3VwcGxlbWVudGFyeSBhbGlnbm1lbnQgKi9cbiAgaXNTdXBwbGVtZW50YXJ5KCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GU1VQUExFTUVOVEFSWSlcbiAgfVxuXG4gIGNpZ2FyKCkge1xuICAgIGlmICh0aGlzLmlzU2VnbWVudFVubWFwcGVkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IGJ5dGVBcnJheSwgc3RhcnQgfSA9IHRoaXMuYnl0ZXNcbiAgICBjb25zdCBudW1DaWdhck9wcyA9IHRoaXMuZ2V0KCdfbl9jaWdhcl9vcCcpXG4gICAgbGV0IHAgPSBzdGFydCArIDM2ICsgdGhpcy5nZXQoJ19sX3JlYWRfbmFtZScpXG4gICAgY29uc3Qgc2VxTGVuID0gdGhpcy5nZXQoJ3NlcV9sZW5ndGgnKVxuICAgIGxldCBjaWdhciA9ICcnXG4gICAgbGV0IGxyZWYgPSAwXG5cbiAgICAvLyBjaGVjayBmb3IgQ0cgdGFnIGJ5IGluc3BlY3Rpbmcgd2hldGhlciB0aGUgQ0lHQVIgZmllbGRcbiAgICAvLyBjb250YWlucyBhIGNsaXAgdGhhdCBjb25zdW1lcyBlbnRpcmUgc2VxTGVuXG4gICAgbGV0IGNpZ29wID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgbGV0IGxvcCA9IGNpZ29wID4+IDRcbiAgICBsZXQgb3AgPSBDSUdBUl9ERUNPREVSW2NpZ29wICYgMHhmXVxuICAgIGlmIChvcCA9PT0gJ1MnICYmIGxvcCA9PT0gc2VxTGVuKSB7XG4gICAgICAvLyBpZiB0aGVyZSBpcyBhIENHIHRoZSBzZWNvbmQgQ0lHQVIgZmllbGQgd2lsbFxuICAgICAgLy8gYmUgYSBOIHRhZyB0aGUgcmVwcmVzZW50cyB0aGUgbGVuZ3RoIG9uIHJlZlxuICAgICAgcCArPSA0XG4gICAgICBjaWdvcCA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgbG9wID0gY2lnb3AgPj4gNFxuICAgICAgb3AgPSBDSUdBUl9ERUNPREVSW2NpZ29wICYgMHhmXVxuICAgICAgaWYgKG9wICE9PSAnTicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDRyB0YWcgd2l0aCBubyBOIHRhZycpXG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEubGVuZ3RoX29uX3JlZiA9IGxvcFxuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdDRycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgbnVtQ2lnYXJPcHM7ICsrYykge1xuICAgICAgICBjaWdvcCA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgICBsb3AgPSBjaWdvcCA+PiA0XG4gICAgICAgIG9wID0gQ0lHQVJfREVDT0RFUltjaWdvcCAmIDB4Zl1cbiAgICAgICAgY2lnYXIgKz0gbG9wICsgb3BcblxuICAgICAgICAvLyBzb2Z0IGNsaXAsIGhhcmQgY2xpcCwgYW5kIGluc2VydGlvbiBkb24ndCBjb3VudCB0b3dhcmRcbiAgICAgICAgLy8gdGhlIGxlbmd0aCBvbiB0aGUgcmVmZXJlbmNlXG4gICAgICAgIGlmIChvcCAhPT0gJ0gnICYmIG9wICE9PSAnUycgJiYgb3AgIT09ICdJJykge1xuICAgICAgICAgIGxyZWYgKz0gbG9wXG4gICAgICAgIH1cblxuICAgICAgICBwICs9IDRcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhLmxlbmd0aF9vbl9yZWYgPSBscmVmXG4gICAgICByZXR1cm4gY2lnYXJcbiAgICB9XG4gIH1cblxuICBfZmxhZ3MoKSB7fVxuXG4gIGxlbmd0aF9vbl9yZWYoKSB7XG4gICAgdGhpcy5nZXQoJ2NpZ2FyJykgLy8gdGhlIGxlbmd0aF9vbl9yZWYgaXMgc2V0IGFzIGFcbiAgICAvLyBzaWRlIGVmZmVjdCBvZiB0aGUgQ0lHQVIgcGFyc2luZ1xuICAgIHJldHVybiB0aGlzLmRhdGEubGVuZ3RoX29uX3JlZlxuICB9XG5cbiAgX25fY2lnYXJfb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdfZmxhZ19uYycpICYgMHhmZmZmXG4gIH1cblxuICBfbF9yZWFkX25hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdfYmluX21xX25sJykgJiAweGZmXG4gIH1cblxuICAvKipcbiAgICogbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzZXF1ZW5jZSBmaWVsZFxuICAgKi9cbiAgX3NlcV9ieXRlcygpIHtcbiAgICByZXR1cm4gKHRoaXMuZ2V0KCdzZXFfbGVuZ3RoJykgKyAxKSA+PiAxXG4gIH1cblxuICBnZXRSZWFkQmFzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VxKClcbiAgfVxuXG4gIHNlcSgpIHtcbiAgICBjb25zdCB7IGJ5dGVBcnJheSB9ID0gdGhpcy5ieXRlc1xuICAgIGNvbnN0IHAgPSB0aGlzLmJ5dGVzLnN0YXJ0ICsgMzYgKyB0aGlzLmdldCgnX2xfcmVhZF9uYW1lJykgKyB0aGlzLmdldCgnX25fY2lnYXJfb3AnKSAqIDRcbiAgICBjb25zdCBzZXFCeXRlcyA9IHRoaXMuZ2V0KCdfc2VxX2J5dGVzJylcbiAgICBjb25zdCBsZW4gPSB0aGlzLmdldCgnc2VxX2xlbmd0aCcpXG4gICAgbGV0IGJ1ZiA9ICcnXG4gICAgbGV0IGkgPSAwXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBzZXFCeXRlczsgKytqKSB7XG4gICAgICBjb25zdCBzYiA9IGJ5dGVBcnJheVtwICsgal1cbiAgICAgIGJ1ZiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNFUVJFVF9ERUNPREVSWyhzYiAmIDB4ZjApID4+IDRdKVxuICAgICAgaSsrXG4gICAgICBpZiAoaSA8IGxlbikge1xuICAgICAgICBidWYgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShTRVFSRVRfREVDT0RFUltzYiAmIDB4MGZdKVxuICAgICAgICBpKytcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgLy8gYWRhcHRlZCBmcm9tIGlndi5qc1xuICBnZXRQYWlyT3JpZW50YXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmlzU2VnbWVudFVubWFwcGVkKCkgJiYgIXRoaXMuaXNNYXRlVW5tYXBwZWQoKSAmJiB0aGlzLl9yZWZJRCA9PT0gdGhpcy5fbmV4dF9yZWZpZCgpKSB7XG4gICAgICBjb25zdCBzMSA9IHRoaXMuaXNSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAnUicgOiAnRidcbiAgICAgIGNvbnN0IHMyID0gdGhpcy5pc01hdGVSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAnUicgOiAnRidcbiAgICAgIGxldCBvMSA9ICcgJ1xuICAgICAgbGV0IG8yID0gJyAnXG4gICAgICBpZiAodGhpcy5pc1JlYWQxKCkpIHtcbiAgICAgICAgbzEgPSAnMSdcbiAgICAgICAgbzIgPSAnMidcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JlYWQyKCkpIHtcbiAgICAgICAgbzEgPSAnMidcbiAgICAgICAgbzIgPSAnMSdcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG1wID0gW11cbiAgICAgIGNvbnN0IGlzaXplID0gdGhpcy50ZW1wbGF0ZV9sZW5ndGgoKVxuICAgICAgaWYgKGlzaXplID4gMCkge1xuICAgICAgICB0bXBbMF0gPSBzMVxuICAgICAgICB0bXBbMV0gPSBvMVxuICAgICAgICB0bXBbMl0gPSBzMlxuICAgICAgICB0bXBbM10gPSBvMlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG1wWzJdID0gczFcbiAgICAgICAgdG1wWzNdID0gbzFcbiAgICAgICAgdG1wWzBdID0gczJcbiAgICAgICAgdG1wWzFdID0gbzJcbiAgICAgIH1cbiAgICAgIHJldHVybiB0bXAuam9pbignJylcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIF9iaW5fbXFfbmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnl0ZXMuYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHRoaXMuYnl0ZXMuc3RhcnQgKyAxMilcbiAgfVxuXG4gIF9mbGFnX25jKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMTYpXG4gIH1cblxuICBzZXFfbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMjApXG4gIH1cblxuICBfbmV4dF9yZWZpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ieXRlcy5ieXRlQXJyYXkucmVhZEludDMyTEUodGhpcy5ieXRlcy5zdGFydCArIDI0KVxuICB9XG5cbiAgX25leHRfcG9zKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMjgpXG4gIH1cblxuICB0ZW1wbGF0ZV9sZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnl0ZXMuYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHRoaXMuYnl0ZXMuc3RhcnQgKyAzMilcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgICBPYmplY3Qua2V5cyh0aGlzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgaWYgKGsuY2hhckF0KDApID09PSAnXycgfHwgayA9PT0gJ2J5dGVzJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgZGF0YVtrXSA9IHRoaXNba11cbiAgICB9KVxuXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWNvcmQudHMiXSwibmFtZXMiOlsiU0VRUkVUX0RFQ09ERVIiLCJzcGxpdCIsInMiLCJjaGFyQ29kZUF0IiwiQ0lHQVJfREVDT0RFUiIsIkJhbVJlY29yZCIsImFyZ3MiLCJ1bmRlZmluZWQiLCJkYXRhIiwiYnl0ZXMiLCJzdGFydCIsImVuZCIsImJ5dGVBcnJheSIsIl9pZCIsImZpbGVPZmZzZXQiLCJfcmVmSUQiLCJyZWFkSW50MzJMRSIsImZsYWdzIiwiZmllbGQiLCJfZ2V0IiwidG9Mb3dlckNhc2UiLCJnZXQiLCJfcGFyc2VUYWciLCJfcGFyc2VBbGxUYWdzIiwidGFncyIsImlzU2VnbWVudFVubWFwcGVkIiwicHVzaCIsImlzUGFpcmVkIiwiX3RhZ0xpc3QiLCJrIiwic2VlbiIsInQiLCJsdCIsIm1xIiwicXVhbFJhdyIsImpvaW4iLCJwIiwibHNlcSIsInFzZXEiLCJCdWZmZXIiLCJhbGxvY1Vuc2FmZSIsImoiLCJpc1JldmVyc2VDb21wbGVtZW50ZWQiLCJpc01hdGVVbm1hcHBlZCIsImlzTWF0ZVJldmVyc2VDb21wbGVtZW50ZWQiLCJubCIsInRvU3RyaW5nIiwidGFnTmFtZSIsIl9hbGxUYWdzUGFyc2VkIiwiX3RhZ09mZnNldCIsImJsb2NrRW5kIiwibGNUYWciLCJ0YWciLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJ0eXBlIiwidmFsdWUiLCJyZWFkVUludDMyTEUiLCJyZWFkSW50OCIsInJlYWRVSW50OCIsInJlYWRJbnQxNkxFIiwicmVhZFVJbnQxNkxFIiwicmVhZEZsb2F0TEUiLCJjYyIsIkJ0eXBlIiwibGltaXQiLCJjaWdvcCIsImxvcCIsIm9wIiwiY29uc29sZSIsIndhcm4iLCJjaWdhciIsIm1hdGNoIiwidG9VcHBlckNhc2UiLCJDb25zdGFudHMiLCJCQU1fRlBBSVJFRCIsIkJBTV9GUFJPUEVSX1BBSVIiLCJCQU1fRlVOTUFQIiwiQkFNX0ZNVU5NQVAiLCJCQU1fRlJFVkVSU0UiLCJCQU1fRk1SRVZFUlNFIiwiQkFNX0ZSRUFEMSIsIkJBTV9GUkVBRDIiLCJCQU1fRlNFQ09OREFSWSIsIkJBTV9GUUNGQUlMIiwiQkFNX0ZEVVAiLCJCQU1fRlNVUFBMRU1FTlRBUlkiLCJudW1DaWdhck9wcyIsInNlcUxlbiIsImxyZWYiLCJsZW5ndGhfb25fcmVmIiwiYyIsInNlcSIsInNlcUJ5dGVzIiwibGVuIiwiYnVmIiwiaSIsInNiIiwiX25leHRfcmVmaWQiLCJzMSIsInMyIiwibzEiLCJvMiIsImlzUmVhZDEiLCJpc1JlYWQyIiwidG1wIiwiaXNpemUiLCJ0ZW1wbGF0ZV9sZW5ndGgiLCJjaGFyQXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7QUFFQSxJQUFNQSxjQUFjLEdBQUcsZ0RBQW1CQyxLQUFuQixDQUF5QixFQUF6QixrQkFBaUMsVUFBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUMsQ0FBQ0MsVUFBRixDQUFhLENBQWIsQ0FBSjtBQUFBLENBQWxDLENBQXZCO0FBQ0EsSUFBTUMsYUFBYSxHQUFHLG1CQUFtQkgsS0FBbkIsQ0FBeUIsRUFBekIsQ0FBdEI7QUFFQTs7OztJQUdxQkksUztBQVNuQixxQkFBWUMsSUFBWixFQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHNEQUhrQkMsU0FHbEI7QUFBQSxvREFGTSxFQUVOO0FBQUEsMERBREUsS0FDRjtBQUNyQixTQUFLQyxJQUFMLEdBQVksRUFBWjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUNYQyxNQUFBQSxLQUFLLEVBQUVKLElBQUksQ0FBQ0csS0FBTCxDQUFXQyxLQURQO0FBRVhDLE1BQUFBLEdBQUcsRUFBRUwsSUFBSSxDQUFDRyxLQUFMLENBQVdFLEdBRkw7QUFHWEMsTUFBQUEsU0FBUyxFQUFFTixJQUFJLENBQUNHLEtBQUwsQ0FBV0c7QUFIWCxLQUFiO0FBS0EsU0FBS0MsR0FBTCxHQUFXUCxJQUFJLENBQUNRLFVBQWhCO0FBUHFCLHNCQVFRLEtBQUtMLEtBUmI7QUFBQSxRQVFiQyxL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aXB0LWVzbGludC9jYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiAqL1xuaW1wb3J0IENvbnN0YW50cyBmcm9tICcuL2NvbnN0YW50cydcblxuY29uc3QgU0VRUkVUX0RFQ09ERVIgPSAnPUFDTUdSU1ZUV1lIS0RCTicuc3BsaXQoJycpLm1hcChzID0+IHMuY2hhckNvZGVBdCgwKSlcbmNvbnN0IENJR0FSX0RFQ09ERVIgPSAnTUlETlNIUD1YPz8/Pz8/Pycuc3BsaXQoJycpXG5cbi8qKlxuICogQ2xhc3Mgb2YgZWFjaCBCQU0gcmVjb3JkIHJldHVybmVkIGJ5IHRoaXMgQVBJLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYW1SZWNvcmQge1xuICBwcml2YXRlIGRhdGE6IGFueVxuICBwcml2YXRlIGJ5dGVzOiBhbnlcbiAgcHJpdmF0ZSBmbGFnczogYW55XG4gIHByaXZhdGUgX2lkOiBudW1iZXJcbiAgcHJpdmF0ZSBfcmVmSUQ6IG51bWJlclxuICBwcml2YXRlIF90YWdPZmZzZXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICBwcml2YXRlIF90YWdMaXN0OiBzdHJpbmdbXSA9IFtdXG4gIHByaXZhdGUgX2FsbFRhZ3NQYXJzZWQgPSBmYWxzZVxuICBjb25zdHJ1Y3RvcihhcmdzOiBhbnkpIHtcbiAgICB0aGlzLmRhdGEgPSB7fVxuICAgIHRoaXMuYnl0ZXMgPSB7XG4gICAgICBzdGFydDogYXJncy5ieXRlcy5zdGFydCxcbiAgICAgIGVuZDogYXJncy5ieXRlcy5lbmQsXG4gICAgICBieXRlQXJyYXk6IGFyZ3MuYnl0ZXMuYnl0ZUFycmF5LFxuICAgIH1cbiAgICB0aGlzLl9pZCA9IGFyZ3MuZmlsZU9mZnNldFxuICAgIGNvbnN0IHsgc3RhcnQsIGJ5dGVBcnJheSB9ID0gdGhpcy5ieXRlc1xuICAgIHRoaXMuX3JlZklEID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHN0YXJ0ICsgNClcbiAgICB0aGlzLmRhdGEuc3RhcnQgPSBieXRlQXJyYXkucmVhZEludDMyTEUoc3RhcnQgKyA4KVxuICAgIHRoaXMuZmxhZ3MgPSAoYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHN0YXJ0ICsgMTYpICYgMHhmZmZmMDAwMCkgPj4gMTZcbiAgfVxuXG4gIGdldChmaWVsZDogc3RyaW5nKSB7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgaWYgKHRoaXNbZmllbGRdKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmICh0aGlzLmRhdGFbZmllbGRdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFbZmllbGRdXG4gICAgICB9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHRoaXMuZGF0YVtmaWVsZF0gPSB0aGlzW2ZpZWxkXSgpXG4gICAgICByZXR1cm4gdGhpcy5kYXRhW2ZpZWxkXVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZ2V0KGZpZWxkLnRvTG93ZXJDYXNlKCkpXG4gIH1cblxuICBlbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdzdGFydCcpICsgKHRoaXMuZ2V0KCdsZW5ndGhfb25fcmVmJykgfHwgdGhpcy5nZXQoJ3NlcV9sZW5ndGgnKSB8fCB1bmRlZmluZWQpXG4gIH1cblxuICBzZXFfaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZklEXG4gIH1cblxuICAvLyBzYW1lIGFzIGdldCgpLCBleGNlcHQgcmVxdWlyZXMgbG93ZXItY2FzZSBhcmd1bWVudHMuICB1c2VkXG4gIC8vIGludGVybmFsbHkgdG8gc2F2ZSBsb3RzIG9mIGNhbGxzIHRvIGZpZWxkLnRvTG93ZXJDYXNlKClcbiAgX2dldChmaWVsZDogc3RyaW5nKSB7XG4gICAgaWYgKGZpZWxkIGluIHRoaXMuZGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YVtmaWVsZF1cbiAgICB9XG4gICAgdGhpcy5kYXRhW2ZpZWxkXSA9IHRoaXMuX3BhcnNlVGFnKGZpZWxkKVxuICAgIHJldHVybiB0aGlzLmRhdGFbZmllbGRdXG4gIH1cblxuICBfdGFncygpIHtcbiAgICB0aGlzLl9wYXJzZUFsbFRhZ3MoKVxuXG4gICAgbGV0IHRhZ3MgPSBbJ3NlcSddXG5cbiAgICBpZiAoIXRoaXMuaXNTZWdtZW50VW5tYXBwZWQoKSkge1xuICAgICAgdGFncy5wdXNoKFxuICAgICAgICAnc3RhcnQnLFxuICAgICAgICAnZW5kJyxcbiAgICAgICAgJ3N0cmFuZCcsXG4gICAgICAgICdzY29yZScsXG4gICAgICAgICdxdWFsJyxcbiAgICAgICAgJ01RJyxcbiAgICAgICAgJ0NJR0FSJyxcbiAgICAgICAgJ2xlbmd0aF9vbl9yZWYnLFxuICAgICAgICAndGVtcGxhdGVfbGVuZ3RoJyxcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNQYWlyZWQoKSkge1xuICAgICAgdGFncy5wdXNoKCduZXh0X3NlZ21lbnRfcG9zaXRpb24nLCAncGFpcl9vcmllbnRhdGlvbicpXG4gICAgfVxuICAgIHRhZ3MgPSB0YWdzLmNvbmNhdCh0aGlzLl90YWdMaXN0IHx8IFtdKVxuXG4gICAgT2JqZWN0LmtleXModGhpcy5kYXRhKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgaWYgKGtbMF0gIT09ICdfJyAmJiBrICE9PSAnbmV4dF9zZXFfaWQnKSB7XG4gICAgICAgIHRhZ3MucHVzaChrKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBzZWVuOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9XG4gICAgdGFncyA9IHRhZ3MuZmlsdGVyKHQgPT4ge1xuICAgICAgaWYgKCh0IGluIHRoaXMuZGF0YSAmJiB0aGlzLmRhdGFbdF0gPT09IHVuZGVmaW5lZCkgfHwgdCA9PT0gJ0NHJyB8fCB0ID09PSAnY2cnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBsdCA9IHQudG9Mb3dlckNhc2UoKVxuICAgICAgY29uc3QgcyA9IHNlZW5bbHRdXG4gICAgICBzZWVuW2x0XSA9IHRydWVcbiAgICAgIHJldHVybiAhc1xuICAgIH0pXG5cbiAgICByZXR1cm4gdGFnc1xuICB9XG5cbiAgcGFyZW50KCkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNoaWxkcmVuKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnc3ViZmVhdHVyZXMnKVxuICB9XG5cbiAgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkXG4gIH1cblxuICAvLyBzcGVjaWFsIHBhcnNlcnNcbiAgLyoqXG4gICAqIE1hcHBpbmcgcXVhbGl0eSBzY29yZS5cbiAgICovXG4gIG1xKCkge1xuICAgIGNvbnN0IG1xID0gKHRoaXMuZ2V0KCdfYmluX21xX25sJykgJiAweGZmMDApID4+IDhcbiAgICByZXR1cm4gbXEgPT09IDI1NSA/IHVuZGVmaW5lZCA6IG1xXG4gIH1cblxuICBzY29yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ21xJylcbiAgfVxuXG4gIHF1YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVhbFJhdygpPy5qb2luKCcgJylcbiAgfVxuXG4gIHF1YWxSYXcoKSB7XG4gICAgaWYgKHRoaXMuaXNTZWdtZW50VW5tYXBwZWQoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHsgYnl0ZUFycmF5IH0gPSB0aGlzLmJ5dGVzXG4gICAgY29uc3QgcCA9XG4gICAgICB0aGlzLmJ5dGVzLnN0YXJ0ICtcbiAgICAgIDM2ICtcbiAgICAgIHRoaXMuZ2V0KCdfbF9yZWFkX25hbWUnKSArXG4gICAgICB0aGlzLmdldCgnX25fY2lnYXJfb3AnKSAqIDQgK1xuICAgICAgdGhpcy5nZXQoJ19zZXFfYnl0ZXMnKVxuICAgIGNvbnN0IGxzZXEgPSB0aGlzLmdldCgnc2VxX2xlbmd0aCcpXG4gICAgY29uc3QgcXNlcSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsc2VxKVxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbHNlcTsgKytqKSB7XG4gICAgICBxc2VxW2pdID0gYnl0ZUFycmF5W3AgKyBqXVxuICAgIH1cbiAgICByZXR1cm4gcXNlcVxuICB9XG5cbiAgc3RyYW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlzUmV2ZXJzZUNvbXBsZW1lbnRlZCgpID8gLTEgOiAxXG4gIH1cblxuICBtdWx0aV9zZWdtZW50X25leHRfc2VnbWVudF9zdHJhbmQoKSB7XG4gICAgaWYgKHRoaXMuaXNNYXRlVW5tYXBwZWQoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc01hdGVSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAtMSA6IDFcbiAgfVxuXG4gIG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdfcmVhZF9uYW1lJylcbiAgfVxuXG4gIF9yZWFkX25hbWUoKSB7XG4gICAgY29uc3QgbmwgPSB0aGlzLmdldCgnX2xfcmVhZF9uYW1lJylcbiAgICByZXR1cm4gdGhpcy5ieXRlcy5ieXRlQXJyYXkudG9TdHJpbmcoXG4gICAgICAnYXNjaWknLFxuICAgICAgdGhpcy5ieXRlcy5zdGFydCArIDM2LFxuICAgICAgdGhpcy5ieXRlcy5zdGFydCArIDM2ICsgbmwgLSAxLFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIG9mIGEgdGFnLCBwYXJzaW5nIHRoZSB0YWdzIGFzIGZhciBhcyBuZWNlc3NhcnkuXG4gICAqIE9ubHkgY2FsbGVkIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgcGFyc2VkIHRoYXQgZmllbGQuXG4gICAqL1xuICBfcGFyc2VUYWcodGFnTmFtZT86IHN0cmluZykge1xuICAgIC8vIGlmIGFsbCBvZiB0aGUgdGFncyBoYXZlIGJlZW4gcGFyc2VkIGFuZCB3ZSdyZSBzdGlsbCBiZWluZ1xuICAgIC8vIGNhbGxlZCwgd2UgYWxyZWFkeSBrbm93IHRoYXQgd2UgaGF2ZSBubyBzdWNoIHRhZywgYmVjYXVzZVxuICAgIC8vIGl0IHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGNhY2hlZC5cbiAgICBpZiAodGhpcy5fYWxsVGFnc1BhcnNlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHsgYnl0ZUFycmF5IH0gPSB0aGlzLmJ5dGVzXG4gICAgbGV0IHAgPVxuICAgICAgdGhpcy5fdGFnT2Zmc2V0IHx8XG4gICAgICB0aGlzLmJ5dGVzLnN0YXJ0ICtcbiAgICAgICAgMzYgK1xuICAgICAgICB0aGlzLmdldCgnX2xfcmVhZF9uYW1lJykgK1xuICAgICAgICB0aGlzLmdldCgnX25fY2lnYXJfb3AnKSAqIDQgK1xuICAgICAgICB0aGlzLmdldCgnX3NlcV9ieXRlcycpICtcbiAgICAgICAgdGhpcy5nZXQoJ3NlcV9sZW5ndGgnKVxuXG4gICAgY29uc3QgYmxvY2tFbmQgPSB0aGlzLmJ5dGVzLmVuZFxuICAgIGxldCBsY1RhZ1xuICAgIHdoaWxlIChwIDwgYmxvY2tFbmQgJiYgbGNUYWcgIT09IHRhZ05hbWUpIHtcbiAgICAgIGNvbnN0IHRhZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W3BdLCBieXRlQXJyYXlbcCArIDFdKVxuICAgICAgbGNUYWcgPSB0YWcudG9Mb3dlckNhc2UoKVxuICAgICAgY29uc3QgdHlwZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W3AgKyAyXSlcbiAgICAgIHAgKz0gM1xuXG4gICAgICBsZXQgdmFsdWVcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICB2YWx1ZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W3BdKVxuICAgICAgICAgIHAgKz0gMVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2knOlxuICAgICAgICAgIHZhbHVlID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnSSc6XG4gICAgICAgICAgdmFsdWUgPSBieXRlQXJyYXkucmVhZFVJbnQzMkxFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnYyc6XG4gICAgICAgICAgdmFsdWUgPSBieXRlQXJyYXkucmVhZEludDgocClcbiAgICAgICAgICBwICs9IDFcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICB2YWx1ZSA9IGJ5dGVBcnJheS5yZWFkVUludDgocClcbiAgICAgICAgICBwICs9IDFcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICB2YWx1ZSA9IGJ5dGVBcnJheS5yZWFkSW50MTZMRShwKVxuICAgICAgICAgIHAgKz0gMlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgIHZhbHVlID0gYnl0ZUFycmF5LnJlYWRVSW50MTZMRShwKVxuICAgICAgICAgIHAgKz0gMlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2YnOlxuICAgICAgICAgIHZhbHVlID0gYnl0ZUFycmF5LnJlYWRGbG9hdExFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnWic6XG4gICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgIHZhbHVlID0gJydcbiAgICAgICAgICB3aGlsZSAocCA8PSBibG9ja0VuZCkge1xuICAgICAgICAgICAgY29uc3QgY2MgPSBieXRlQXJyYXlbcCsrXVxuICAgICAgICAgICAgaWYgKGNjID09PSAwKSB7XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdCJzoge1xuICAgICAgICAgIHZhbHVlID0gJydcbiAgICAgICAgICBjb25zdCBjYyA9IGJ5dGVBcnJheVtwKytdXG4gICAgICAgICAgY29uc3QgQnR5cGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKVxuICAgICAgICAgIGNvbnN0IGxpbWl0ID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgICAgICAgcCArPSA0XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnaScpIHtcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdDRycpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2lnb3AgPSBieXRlQXJyYXkucmVhZEludDMyTEUocClcbiAgICAgICAgICAgICAgICBjb25zdCBsb3AgPSBjaWdvcCA+PiA0XG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBDSUdBUl9ERUNPREVSW2NpZ29wICYgMHhmXVxuICAgICAgICAgICAgICAgIHZhbHVlICs9IGxvcCArIG9wXG4gICAgICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGltaXQ7IGsrKykge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgICAgICAgICAgIGlmIChrICsgMSA8IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnSScpIHtcbiAgICAgICAgICAgIGlmICh0YWcgPT09ICdDRycpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2lnb3AgPSBieXRlQXJyYXkucmVhZFVJbnQzMkxFKHApXG4gICAgICAgICAgICAgICAgY29uc3QgbG9wID0gY2lnb3AgPj4gNFxuICAgICAgICAgICAgICAgIGNvbnN0IG9wID0gQ0lHQVJfREVDT0RFUltjaWdvcCAmIDB4Zl1cbiAgICAgICAgICAgICAgICB2YWx1ZSArPSBsb3AgKyBvcFxuICAgICAgICAgICAgICAgIHAgKz0gNFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGxpbWl0OyBrKyspIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSBieXRlQXJyYXkucmVhZFVJbnQzMkxFKHApXG4gICAgICAgICAgICAgICAgaWYgKGsgKyAxIDwgbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlICs9ICcsJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwICs9IDRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoQnR5cGUgPT09ICdzJykge1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkSW50MTZMRShwKVxuICAgICAgICAgICAgICBpZiAoayArIDEgPCBsaW1pdCkge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9ICcsJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHAgKz0gMlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoQnR5cGUgPT09ICdTJykge1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBsaW1pdDsgaysrKSB7XG4gICAgICAgICAgICAgIHZhbHVlICs9IGJ5dGVBcnJheS5yZWFkVUludDE2TEUocClcbiAgICAgICAgICAgICAgaWYgKGsgKyAxIDwgbGltaXQpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwICs9IDJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnYycpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGltaXQ7IGsrKykge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBieXRlQXJyYXkucmVhZEludDgocClcbiAgICAgICAgICAgICAgaWYgKGsgKyAxIDwgbGltaXQpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKEJ0eXBlID09PSAnQycpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbGltaXQ7IGsrKykge1xuICAgICAgICAgICAgICB2YWx1ZSArPSBieXRlQXJyYXkucmVhZFVJbnQ4KHApXG4gICAgICAgICAgICAgIGlmIChrICsgMSA8IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJywnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcCArPSAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChCdHlwZSA9PT0gJ2YnKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGxpbWl0OyBrKyspIHtcbiAgICAgICAgICAgICAgdmFsdWUgKz0gYnl0ZUFycmF5LnJlYWRGbG9hdExFKHApXG4gICAgICAgICAgICAgIGlmIChrICsgMSA8IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJywnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcCArPSA0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gQkFNIHRhZyB0eXBlICcke3R5cGV9JywgdGFncyBtYXkgYmUgaW5jb21wbGV0ZWApXG4gICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWRcbiAgICAgICAgICBwID0gYmxvY2tFbmQgLy8gc3RvcCBwYXJzaW5nIHRhZ3NcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdGFnT2Zmc2V0ID0gcFxuXG4gICAgICB0aGlzLl90YWdMaXN0LnB1c2godGFnKVxuICAgICAgaWYgKGxjVGFnID09PSB0YWdOYW1lKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFbbGNUYWddID0gdmFsdWVcbiAgICB9XG4gICAgdGhpcy5fYWxsVGFnc1BhcnNlZCA9IHRydWVcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBfcGFyc2VBbGxUYWdzKCkge1xuICAgIHRoaXMuX3BhcnNlVGFnKCcnKVxuICB9XG5cbiAgX3BhcnNlQ2lnYXIoY2lnYXI6IHN0cmluZykge1xuICAgIHJldHVybiAoXG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGNpZ2FyLm1hdGNoKC9cXGQrXFxEL2cpLm1hcCgob3A6IHN0cmluZykgPT4gW29wLm1hdGNoKC9cXEQvKVswXS50b1VwcGVyQ2FzZSgpLCBwYXJzZUludChvcCwgMTApXSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXMgcGFpcmVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYm90aCBzZWdtZW50cyBhcmUgbWFwcGVkXG4gICAqL1xuICBpc1BhaXJlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlBBSVJFRClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgcmVhZCBpcyBwYWlyZWQsIGFuZCBib3RoIHNlZ21lbnRzIGFyZSBtYXBwZWQgKi9cbiAgaXNQcm9wZXJseVBhaXJlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlBST1BFUl9QQUlSKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSByZWFkIGl0c2VsZiBpcyB1bm1hcHBlZDsgY29uZmxpY3RpdmUgd2l0aCBpc1Byb3Blcmx5UGFpcmVkICovXG4gIGlzU2VnbWVudFVubWFwcGVkKCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GVU5NQVApXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXRzZWxmIGlzIHVubWFwcGVkOyBjb25mbGljdGl2ZSB3aXRoIGlzUHJvcGVybHlQYWlyZWQgKi9cbiAgaXNNYXRlVW5tYXBwZWQoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuZmxhZ3MgJiBDb25zdGFudHMuQkFNX0ZNVU5NQVApXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHJlYWQgaXMgbWFwcGVkIHRvIHRoZSByZXZlcnNlIHN0cmFuZCAqL1xuICBpc1JldmVyc2VDb21wbGVtZW50ZWQoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuZmxhZ3MgJiBDb25zdGFudHMuQkFNX0ZSRVZFUlNFKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBtYXRlIGlzIG1hcHBlZCB0byB0aGUgcmV2ZXJzZSBzdHJhbmQgKi9cbiAgaXNNYXRlUmV2ZXJzZUNvbXBsZW1lbnRlZCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRk1SRVZFUlNFKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgcmVhZCBudW1iZXIgMSBpbiBhIHBhaXIgKi9cbiAgaXNSZWFkMSgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlJFQUQxKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgcmVhZCBudW1iZXIgMiBpbiBhIHBhaXIgKi9cbiAgaXNSZWFkMigpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRlJFQUQyKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgaXMgYSBzZWNvbmRhcnkgYWxpZ25tZW50ICovXG4gIGlzU2Vjb25kYXJ5KCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GU0VDT05EQVJZKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoaXMgcmVhZCBoYXMgZmFpbGVkIFFDIGNoZWNrcyAqL1xuICBpc0ZhaWxlZFFjKCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GUUNGQUlMKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSByZWFkIGlzIGFuIG9wdGljYWwgb3IgUENSIGR1cGxpY2F0ZSAqL1xuICBpc0R1cGxpY2F0ZSgpIHtcbiAgICByZXR1cm4gISEodGhpcy5mbGFncyAmIENvbnN0YW50cy5CQU1fRkRVUClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGlzIGlzIGEgc3VwcGxlbWVudGFyeSBhbGlnbm1lbnQgKi9cbiAgaXNTdXBwbGVtZW50YXJ5KCkge1xuICAgIHJldHVybiAhISh0aGlzLmZsYWdzICYgQ29uc3RhbnRzLkJBTV9GU1VQUExFTUVOVEFSWSlcbiAgfVxuXG4gIGNpZ2FyKCkge1xuICAgIGlmICh0aGlzLmlzU2VnbWVudFVubWFwcGVkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IGJ5dGVBcnJheSwgc3RhcnQgfSA9IHRoaXMuYnl0ZXNcbiAgICBjb25zdCBudW1DaWdhck9wcyA9IHRoaXMuZ2V0KCdfbl9jaWdhcl9vcCcpXG4gICAgbGV0IHAgPSBzdGFydCArIDM2ICsgdGhpcy5nZXQoJ19sX3JlYWRfbmFtZScpXG4gICAgY29uc3Qgc2VxTGVuID0gdGhpcy5nZXQoJ3NlcV9sZW5ndGgnKVxuICAgIGxldCBjaWdhciA9ICcnXG4gICAgbGV0IGxyZWYgPSAwXG5cbiAgICAvLyBjaGVjayBmb3IgQ0cgdGFnIGJ5IGluc3BlY3Rpbmcgd2hldGhlciB0aGUgQ0lHQVIgZmllbGRcbiAgICAvLyBjb250YWlucyBhIGNsaXAgdGhhdCBjb25zdW1lcyBlbnRpcmUgc2VxTGVuXG4gICAgbGV0IGNpZ29wID0gYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHApXG4gICAgbGV0IGxvcCA9IGNpZ29wID4+IDRcbiAgICBsZXQgb3AgPSBDSUdBUl9ERUNPREVSW2NpZ29wICYgMHhmXVxuICAgIGlmIChvcCA9PT0gJ1MnICYmIGxvcCA9PT0gc2VxTGVuKSB7XG4gICAgICAvLyBpZiB0aGVyZSBpcyBhIENHIHRoZSBzZWNvbmQgQ0lHQVIgZmllbGQgd2lsbFxuICAgICAgLy8gYmUgYSBOIHRhZyB0aGUgcmVwcmVzZW50cyB0aGUgbGVuZ3RoIG9uIHJlZlxuICAgICAgcCArPSA0XG4gICAgICBjaWdvcCA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgbG9wID0gY2lnb3AgPj4gNFxuICAgICAgb3AgPSBDSUdBUl9ERUNPREVSW2NpZ29wICYgMHhmXVxuICAgICAgaWYgKG9wICE9PSAnTicpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDRyB0YWcgd2l0aCBubyBOIHRhZycpXG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEubGVuZ3RoX29uX3JlZiA9IGxvcFxuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdDRycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgbnVtQ2lnYXJPcHM7ICsrYykge1xuICAgICAgICBjaWdvcCA9IGJ5dGVBcnJheS5yZWFkSW50MzJMRShwKVxuICAgICAgICBsb3AgPSBjaWdvcCA+PiA0XG4gICAgICAgIG9wID0gQ0lHQVJfREVDT0RFUltjaWdvcCAmIDB4Zl1cbiAgICAgICAgY2lnYXIgKz0gbG9wICsgb3BcblxuICAgICAgICAvLyBzb2Z0IGNsaXAsIGhhcmQgY2xpcCwgYW5kIGluc2VydGlvbiBkb24ndCBjb3VudCB0b3dhcmRcbiAgICAgICAgLy8gdGhlIGxlbmd0aCBvbiB0aGUgcmVmZXJlbmNlXG4gICAgICAgIGlmIChvcCAhPT0gJ0gnICYmIG9wICE9PSAnUycgJiYgb3AgIT09ICdJJykge1xuICAgICAgICAgIGxyZWYgKz0gbG9wXG4gICAgICAgIH1cblxuICAgICAgICBwICs9IDRcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhLmxlbmd0aF9vbl9yZWYgPSBscmVmXG4gICAgICByZXR1cm4gY2lnYXJcbiAgICB9XG4gIH1cblxuICBfZmxhZ3MoKSB7fVxuXG4gIGxlbmd0aF9vbl9yZWYoKSB7XG4gICAgdGhpcy5nZXQoJ2NpZ2FyJykgLy8gdGhlIGxlbmd0aF9vbl9yZWYgaXMgc2V0IGFzIGFcbiAgICAvLyBzaWRlIGVmZmVjdCBvZiB0aGUgQ0lHQVIgcGFyc2luZ1xuICAgIHJldHVybiB0aGlzLmRhdGEubGVuZ3RoX29uX3JlZlxuICB9XG5cbiAgX25fY2lnYXJfb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdfZmxhZ19uYycpICYgMHhmZmZmXG4gIH1cblxuICBfbF9yZWFkX25hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdfYmluX21xX25sJykgJiAweGZmXG4gIH1cblxuICAvKipcbiAgICogbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzZXF1ZW5jZSBmaWVsZFxuICAgKi9cbiAgX3NlcV9ieXRlcygpIHtcbiAgICByZXR1cm4gKHRoaXMuZ2V0KCdzZXFfbGVuZ3RoJykgKyAxKSA+PiAxXG4gIH1cblxuICBnZXRSZWFkQmFzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VxKClcbiAgfVxuXG4gIHNlcSgpIHtcbiAgICBjb25zdCB7IGJ5dGVBcnJheSB9ID0gdGhpcy5ieXRlc1xuICAgIGNvbnN0IHAgPSB0aGlzLmJ5dGVzLnN0YXJ0ICsgMzYgKyB0aGlzLmdldCgnX2xfcmVhZF9uYW1lJykgKyB0aGlzLmdldCgnX25fY2lnYXJfb3AnKSAqIDRcbiAgICBjb25zdCBzZXFCeXRlcyA9IHRoaXMuZ2V0KCdfc2VxX2J5dGVzJylcbiAgICBjb25zdCBsZW4gPSB0aGlzLmdldCgnc2VxX2xlbmd0aCcpXG4gICAgbGV0IGJ1ZiA9ICcnXG4gICAgbGV0IGkgPSAwXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBzZXFCeXRlczsgKytqKSB7XG4gICAgICBjb25zdCBzYiA9IGJ5dGVBcnJheVtwICsgal1cbiAgICAgIGJ1ZiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFNFUVJFVF9ERUNPREVSWyhzYiAmIDB4ZjApID4+IDRdKVxuICAgICAgaSsrXG4gICAgICBpZiAoaSA8IGxlbikge1xuICAgICAgICBidWYgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShTRVFSRVRfREVDT0RFUltzYiAmIDB4MGZdKVxuICAgICAgICBpKytcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgLy8gYWRhcHRlZCBmcm9tIGlndi5qc1xuICBnZXRQYWlyT3JpZW50YXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmlzU2VnbWVudFVubWFwcGVkKCkgJiYgIXRoaXMuaXNNYXRlVW5tYXBwZWQoKSAmJiB0aGlzLl9yZWZJRCA9PT0gdGhpcy5fbmV4dF9yZWZpZCgpKSB7XG4gICAgICBjb25zdCBzMSA9IHRoaXMuaXNSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAnUicgOiAnRidcbiAgICAgIGNvbnN0IHMyID0gdGhpcy5pc01hdGVSZXZlcnNlQ29tcGxlbWVudGVkKCkgPyAnUicgOiAnRidcbiAgICAgIGxldCBvMSA9ICcgJ1xuICAgICAgbGV0IG8yID0gJyAnXG4gICAgICBpZiAodGhpcy5pc1JlYWQxKCkpIHtcbiAgICAgICAgbzEgPSAnMSdcbiAgICAgICAgbzIgPSAnMidcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1JlYWQyKCkpIHtcbiAgICAgICAgbzEgPSAnMidcbiAgICAgICAgbzIgPSAnMSdcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG1wID0gW11cbiAgICAgIGNvbnN0IGlzaXplID0gdGhpcy50ZW1wbGF0ZV9sZW5ndGgoKVxuICAgICAgaWYgKGlzaXplID4gMCkge1xuICAgICAgICB0bXBbMF0gPSBzMVxuICAgICAgICB0bXBbMV0gPSBvMVxuICAgICAgICB0bXBbMl0gPSBzMlxuICAgICAgICB0bXBbM10gPSBvMlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG1wWzJdID0gczFcbiAgICAgICAgdG1wWzNdID0gbzFcbiAgICAgICAgdG1wWzBdID0gczJcbiAgICAgICAgdG1wWzFdID0gbzJcbiAgICAgIH1cbiAgICAgIHJldHVybiB0bXAuam9pbignJylcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIF9iaW5fbXFfbmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnl0ZXMuYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHRoaXMuYnl0ZXMuc3RhcnQgKyAxMilcbiAgfVxuXG4gIF9mbGFnX25jKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMTYpXG4gIH1cblxuICBzZXFfbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMjApXG4gIH1cblxuICBfbmV4dF9yZWZpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5ieXRlcy5ieXRlQXJyYXkucmVhZEludDMyTEUodGhpcy5ieXRlcy5zdGFydCArIDI0KVxuICB9XG5cbiAgX25leHRfcG9zKCkge1xuICAgIHJldHVybiB0aGlzLmJ5dGVzLmJ5dGVBcnJheS5yZWFkSW50MzJMRSh0aGlzLmJ5dGVzLnN0YXJ0ICsgMjgpXG4gIH1cblxuICB0ZW1wbGF0ZV9sZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnl0ZXMuYnl0ZUFycmF5LnJlYWRJbnQzMkxFKHRoaXMuYnl0ZXMuc3RhcnQgKyAzMilcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgICBPYmplY3Qua2V5cyh0aGlzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgaWYgKGsuY2hhckF0KDApID09PSAnXycgfHwgayA9PT0gJ2J5dGVzJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgZGF0YVtrXSA9IHRoaXNba11cbiAgICB9KVxuXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxufVxuIl19
{
"name": "@gmod/bam",
"version": "1.1.5",
"version": "1.1.6",
"description": "Parser for BAM and BAM index (bai) files",

@@ -5,0 +5,0 @@ "license": "MIT",

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc