Socket
Socket
Sign inDemoInstall

sugarss

Package Overview
Dependencies
9
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.0 to 1.0.1

4

CHANGELOG.md
# Change Log
This project adheres to [Semantic Versioning](http://semver.org/).
## 1.0.1
* Fix nested inline comments parsing.
## 1.0

@@ -4,0 +8,0 @@ * Use PostCSS 6.0.

24

package.json
{
"name": "sugarss",
"version": "1.0.0",
"version": "1.0.1",
"description": "Indent-based CSS syntax for PostCSS",

@@ -17,17 +17,17 @@ "keywords": [

"dependencies": {
"postcss": "^6.0.0"
"postcss": "^6.0.14"
},
"devDependencies": {
"babel-cli": "^6.24.1",
"babel-core": "^6.24.1",
"babel-eslint": "^7.2.3",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-eslint": "^8.0.1",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-precompile-charcodes": "^1.0.0",
"babel-preset-env": "^1.4.0",
"babel-plugin-precompile-charcodes": "^1.1.0",
"babel-preset-env": "^1.6.1",
"babel-preset-stage-0": "^6.24.1",
"eslint": "^3.19.0",
"eslint": "^4.10.0",
"eslint-config-postcss": "^2.0.2",
"jest": "^20.0.0",
"lint-staged": "^3.4.1",
"postcss-parser-tests": "^6.0.0",
"jest": "^21.2.1",
"lint-staged": "^4.3.0",
"postcss-parser-tests": "^6.1.0",
"pre-commit": "^1.2.2"

@@ -37,3 +37,3 @@ },

"lint-staged": "lint-staged",
"prepublish": "npm run build",
"prepack": "npm run build",
"clean": "rm *.js || echo 'Already cleaned'",

@@ -40,0 +40,0 @@ "build": "npm run clean && babel -s inline -d ./ *.es6",

@@ -40,2 +40,3 @@ 'use strict';

this.extraIndent = false;
this.prevIndent = undefined;

@@ -237,4 +238,9 @@ this.step = undefined;

this.wrongIndent(this.prevIndent + this.step, indent, part);
} else if (this.current.last.push) {
this.current = this.current.last;
} else {
this.current = this.current.last;
this.extraIndent = '';
for (var i = 0; i < diff; i++) {
this.extraIndent += ' ';
}
}

@@ -245,3 +251,3 @@ } else if (diff % this.step !== 0) {

} else {
for (var i = 0; i < -diff / this.step; i++) {
for (var _i2 = 0; _i2 < -diff / this.step; _i2++) {
this.current = this.current.parent;

@@ -262,2 +268,6 @@ }

node.raws.before = part.before + part.indent;
if (this.extraIndent) {
node.raws.extraIndent = this.extraIndent;
this.extraIndent = false;
}
node.source = {

@@ -270,12 +280,12 @@ start: { line: part.tokens[0][2], column: part.tokens[0][3] },

Parser.prototype.checkCurly = function checkCurly(tokens) {
for (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
for (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i3 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i2 >= _iterator.length) break;
_ref = _iterator[_i2++];
if (_i3 >= _iterator.length) break;
_ref = _iterator[_i3++];
} else {
_i2 = _iterator.next();
if (_i2.done) break;
_ref = _i2.value;
_i3 = _iterator.next();
if (_i3.done) break;
_ref = _i3.value;
}

@@ -292,12 +302,12 @@

Parser.prototype.checkSemicolon = function checkSemicolon(tokens) {
for (var _iterator2 = tokens, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
for (var _iterator2 = tokens, _isArray2 = Array.isArray(_iterator2), _i4 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i3 >= _iterator2.length) break;
_ref2 = _iterator2[_i3++];
if (_i4 >= _iterator2.length) break;
_ref2 = _iterator2[_i4++];
} else {
_i3 = _iterator2.next();
if (_i3.done) break;
_ref2 = _i3.value;
_i4 = _iterator2.next();
if (_i4.done) break;
_ref2 = _i4.value;
}

@@ -366,5 +376,5 @@

var last = void 0;
for (var _i4 = tokens.length - 1; _i4 >= 0; _i4--) {
if (tokens[_i4].length > 2) {
last = tokens[_i4];
for (var _i5 = tokens.length - 1; _i5 >= 0; _i5--) {
if (tokens[_i5].length > 2) {
last = tokens[_i5];
break;

@@ -445,2 +455,2 @@ }

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJwb3MiLCJyb290IiwiY3VycmVudCIsInNwYWNlcyIsInByZXZJbmRlbnQiLCJ1bmRlZmluZWQiLCJzdGVwIiwic291cmNlIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwibG9vcCIsInBhcnQiLCJwYXJ0cyIsImxlbmd0aCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJjb2xvbiIsIm5leHQiLCJuZXh0Tm9uQ29tbWVudCIsImVuZCIsImRlY2wiLCJtb3JlSW5kZW50IiwiaW5kZW50IiwicnVsZSIsInJhd3MiLCJhZnRlciIsImJlZm9yZSIsImkiLCJ0b2tlbnMiLCJsYXN0IiwidG9rZW4iLCJub2RlIiwiaW5pdCIsImNvbW1lbnRUZXh0IiwiYXR3b3JkIiwicGFyYW1zIiwic2xpY2UiLCJuYW1lIiwidW5uYW1lZEF0cnVsZSIsImxhc3RDb21tYSIsInB1c2giLCJjb25jYXQiLCJhZnRlck5hbWUiLCJmaXJzdFNwYWNlcyIsImtlZXBUcmFpbGluZ1NwYWNlIiwiY2hlY2tTZW1pY29sb24iLCJjaGVja0N1cmx5IiwicmF3IiwiYmV0d2VlbiIsInZhbHVlIiwicHJvcCIsImJhZFByb3AiLCJ1bm5hbWVkRGVjbCIsInBvcCIsInByZXYiLCJ0IiwiaW1wb3J0YW50Iiwic3BsaWNlIiwic2VsZWN0b3IiLCJpc1ByZXYiLCJpbmRlbnRlZEZpcnN0TGluZSIsImRpZmYiLCJ3cm9uZ0luZGVudCIsIm0iLCJwYXJlbnQiLCJub2RlcyIsImVycm9yIiwibGFzdFNwYWNlIiwic3NzQmV0d2VlbiIsInJlc3VsdCIsInNoaWZ0IiwiYWx0TGFzdCIsInR5cGUiLCJjbGVhbiIsInNzcyIsInJlZHVjZSIsImFsbCIsInRyaW0iLCJ0ZXh0IiwiaW5saW5lIiwibWF0Y2giLCJsZWZ0IiwiaW5saW5lUmlnaHQiLCJtc2ciLCJudW1iZXIiLCJleHBlY3RlZCIsInJlYWwiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztB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akI7QUFDQWxELGlCQUFLUCxJQUFMLENBQVUwRCxXQUFWLEdBQXdCLEVBQXhCO0FBQ0g7QUFDSixLOztBQUVEOztxQkFFQWhCLEssa0JBQU1pQixHLEVBQUszRSxJLEVBQU1DLE0sRUFBUTtBQUNyQixjQUFNLEtBQUtYLEtBQUwsQ0FBV29FLEtBQVgsQ0FBaUJpQixHQUFqQixFQUFzQjNFLElBQXRCLEVBQTRCQyxNQUE1QixDQUFOO0FBQ0gsSzs7cUJBRUQ2QixhLDBCQUFjUixLLEVBQU87QUFDakIsYUFBS29DLEtBQUwsQ0FBVyxzQkFBWCxFQUFtQ3BDLE1BQU0sQ0FBTixDQUFuQyxFQUE2Q0EsTUFBTSxDQUFOLENBQTdDO0FBQ0gsSzs7cUJBRURzQixXLHdCQUFZdEIsSyxFQUFPO0FBQ2YsYUFBS29DLEtBQUwsQ0FBVywwQkFBWCxFQUF1Q3BDLE1BQU0sQ0FBTixDQUF2QyxFQUFpREEsTUFBTSxDQUFOLENBQWpEO0FBQ0gsSzs7cUJBRUQ4QixpQiw4QkFBa0JqRCxJLEVBQU07QUFDcEIsYUFBS3VELEtBQUwsQ0FBVyxtQ0FBWCxFQUFnRHZELEtBQUt5RSxNQUFyRCxFQUE2RCxDQUE3RDtBQUNILEs7O3FCQUVEdEIsVyx3QkFBWXVCLFEsRUFBVUMsSSxFQUFNM0UsSSxFQUFNO0FBQzlCLFlBQUl3RSxvQkFBbUJFLFFBQW5CLHlCQUFpREMsSUFBckQ7QUFDQSxhQUFLcEIsS0FBTCxDQUFXaUIsR0FBWCxFQUFnQnhFLEtBQUt5RSxNQUFyQixFQUE2QixDQUE3QjtBQUNILEs7O3FCQUVEakMsTyxvQkFBUXJCLEssRUFBTztBQUNYLGFBQUtvQyxLQUFMLENBQVcsa0NBQVgsRUFBK0NwQyxNQUFNLENBQU4sQ0FBL0MsRUFBeURBLE1BQU0sQ0FBTixDQUF6RDtBQUNILEs7Ozs7O2tCQXJYZ0JqQyxNIiwiZmlsZSI6InBhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEZWNsYXJhdGlvbiBmcm9tICdwb3N0Y3NzL2xpYi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAncG9zdGNzcy9saWIvY29tbWVudCc7XG5pbXBvcnQgQXRSdWxlICAgICAgZnJvbSAncG9zdGNzcy9saWIvYXQtcnVsZSc7XG5pbXBvcnQgUnVsZSAgICAgICAgZnJvbSAncG9zdGNzcy9saWIvcnVsZSc7XG5pbXBvcnQgUm9vdCAgICAgICAgZnJvbSAncG9zdGNzcy9saWIvcm9vdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnNlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dCkge1xuICAgICAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG5cbiAgICAgICAgdGhpcy5wb3MgICAgID0gMDtcbiAgICAgICAgdGhpcy5yb290ICAgID0gbmV3IFJvb3QoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5yb290O1xuICAgICAgICB0aGlzLnNwYWNlcyAgPSAnJztcblxuICAgICAgICB0aGlzLnByZXZJbmRlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3RlcCAgICAgICA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLnJvb3Quc291cmNlID0geyBpbnB1dCwgc3RhcnQ6IHsgbGluZTogMSwgY29sdW1uOiAxIH0gfTtcbiAgICB9XG5cbiAgICBsb29wKCkge1xuICAgICAgICBsZXQgcGFydDtcbiAgICAgICAgd2hpbGUgKCB0aGlzLnBvcyA8IHRoaXMucGFydHMubGVuZ3RoICkge1xuICAgICAgICAgICAgcGFydCA9IHRoaXMucGFydHNbdGhpcy5wb3NdO1xuXG4gICAgICAgICAgICBpZiAoIHBhcnQuY29tbWVudCApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnQocGFydCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBwYXJ0LmF0cnVsZSApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0cnVsZShwYXJ0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHBhcnQuY29sb24gKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSB0aGlzLm5leHROb25Db21tZW50KHRoaXMucG9zKTtcblxuICAgICAgICAgICAgICAgIGlmICggbmV4dC5lbmQgfHwgbmV4dC5hdHJ1bGUgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjbChwYXJ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUluZGVudCA9IG5leHQuaW5kZW50Lmxlbmd0aCA+IHBhcnQuaW5kZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCAhbW9yZUluZGVudCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjbChwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggbW9yZUluZGVudCAmJiBuZXh0LmNvbG9uICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ydWxlKHBhcnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBtb3JlSW5kZW50ICYmICFuZXh0LmNvbG9uICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNsKHBhcnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICggcGFydC5lbmQgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb290LnJhd3MuYWZ0ZXIgPSBwYXJ0LmJlZm9yZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlKHBhcnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSB0aGlzLnRva2Vucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy50b2tlbnNbaV0ubGVuZ3RoID4gMyApIHtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IHRoaXMudG9rZW5zW2ldO1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC5zb3VyY2UuZW5kID0ge1xuICAgICAgICAgICAgICAgICAgICBsaW5lOiAgIGxhc3RbNF0gfHwgbGFzdFsyXSxcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBsYXN0WzVdIHx8IGxhc3RbM11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tbWVudChwYXJ0KSB7XG4gICAgICAgIGxldCB0b2tlbiA9IHBhcnQudG9rZW5zWzBdO1xuICAgICAgICBsZXQgbm9kZSAgPSBuZXcgQ29tbWVudCgpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgcGFydCk7XG4gICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogdG9rZW5bNF0sIGNvbHVtbjogdG9rZW5bNV0gfTtcbiAgICAgICAgdGhpcy5jb21tZW50VGV4dChub2RlLCB0b2tlbik7XG4gICAgfVxuXG4gICAgYXRydWxlKHBhcnQpIHtcbiAgICAgICAgbGV0IGF0d29yZCA9IHBhcnQudG9rZW5zWzBdO1xuICAgICAgICBsZXQgcGFyYW1zID0gcGFydC50b2tlbnMuc2xpY2UoMSk7XG5cbiAgICAgICAgbGV0IG5vZGUgID0gbmV3IEF0UnVsZSgpO1xuICAgICAgICBub2RlLm5hbWUgPSBhdHdvcmRbMV0uc2xpY2UoMSk7XG4gICAgICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KTtcblxuICAgICAgICBpZiAoIG5vZGUubmFtZSA9PT0gJycgKSB0aGlzLnVubmFtZWRBdHJ1bGUoYXR3b3JkKTtcblxuICAgICAgICB3aGlsZSAoICFwYXJ0LmVuZCAmJiBwYXJ0Lmxhc3RDb21tYSApIHtcbiAgICAgICAgICAgIHRoaXMucG9zICs9IDE7XG4gICAgICAgICAgICBwYXJ0ID0gdGhpcy5wYXJ0c1t0aGlzLnBvc107XG4gICAgICAgICAgICBwYXJhbXMucHVzaChbJ3NwYWNlJywgcGFydC5iZWZvcmUgKyBwYXJ0LmluZGVudF0pO1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmNvbmNhdChwYXJ0LnRva2Vucyk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnJhd3MuYWZ0ZXJOYW1lID0gdGhpcy5maXJzdFNwYWNlcyhwYXJhbXMpO1xuICAgICAgICB0aGlzLmtlZXBUcmFpbGluZ1NwYWNlKG5vZGUsIHBhcmFtcyk7XG4gICAgICAgIHRoaXMuY2hlY2tTZW1pY29sb24ocGFyYW1zKTtcbiAgICAgICAgdGhpcy5jaGVja0N1cmx5KHBhcmFtcyk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICdwYXJhbXMnLCBwYXJhbXMsIGF0d29yZCk7XG4gICAgfVxuXG4gICAgZGVjbChwYXJ0KSB7XG4gICAgICAgIGxldCBub2RlID0gbmV3IERlY2xhcmF0aW9uKCk7XG4gICAgICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KTtcblxuICAgICAgICBsZXQgYmV0d2VlbiA9ICcnO1xuICAgICAgICBsZXQgY29sb24gICA9IDA7XG4gICAgICAgIGxldCB2YWx1ZSAgID0gW107XG4gICAgICAgIGxldCBwcm9wICAgID0gJyc7XG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHBhcnQudG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgbGV0IHRva2VuID0gcGFydC50b2tlbnNbaV07XG4gICAgICAgICAgICBpZiAoIHRva2VuWzBdID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgYmV0d2VlbiArPSB0b2tlblsxXTtcbiAgICAgICAgICAgICAgICBjb2xvbiAgICA9IHRva2VuO1xuICAgICAgICAgICAgICAgIHZhbHVlICAgID0gcGFydC50b2tlbnMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdG9rZW5bMF0gPT09ICdjb21tZW50JyB8fCB0b2tlblswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgICAgICBiZXR3ZWVuICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggYmV0d2VlbiAhPT0gJycgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWRQcm9wKHRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJvcCArPSB0b2tlblsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggcHJvcCA9PT0gJycgKSB0aGlzLnVubmFtZWREZWNsKHBhcnQudG9rZW5zWzBdKTtcbiAgICAgICAgbm9kZS5wcm9wID0gcHJvcDtcblxuICAgICAgICBsZXQgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXTtcblxuICAgICAgICB3aGlsZSAoICFuZXh0LmVuZCAmJiAhbmV4dC5hdHJ1bGUgJiYgIW5leHQuY29sb24gJiZcbiAgICAgICAgICAgICAgICBuZXh0LmluZGVudC5sZW5ndGggPiBwYXJ0LmluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICB2YWx1ZS5wdXNoKFsnc3BhY2UnLCBuZXh0LmJlZm9yZSArIG5leHQuaW5kZW50XSk7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNvbmNhdChuZXh0LnRva2Vucyk7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0ID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICggbGFzdCAmJiBsYXN0WzBdID09PSAnY29tbWVudCcgKSB7XG4gICAgICAgICAgICB2YWx1ZS5wb3AoKTtcbiAgICAgICAgICAgIGxldCBjb21tZW50ID0gbmV3IENvbW1lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5wdXNoKGNvbW1lbnQpO1xuICAgICAgICAgICAgY29tbWVudC5zb3VyY2UgPSB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IHRoaXMuaW5wdXQsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHsgbGluZTogbGFzdFsyXSwgY29sdW1uOiBsYXN0WzNdIH0sXG4gICAgICAgICAgICAgICAgZW5kOiAgIHsgbGluZTogbGFzdFs0XSwgY29sdW1uOiBsYXN0WzVdIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgcHJldiA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgaWYgKCBwcmV2ICYmIHByZXZbMF0gPT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUucG9wKCk7XG4gICAgICAgICAgICAgICAgY29tbWVudC5yYXdzLmJlZm9yZSA9IHByZXZbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbW1lbnRUZXh0KGNvbW1lbnQsIGxhc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSB2YWx1ZS5sZW5ndGggLSAxOyBpID4gMDsgaS0tICkge1xuICAgICAgICAgICAgbGV0IHQgPSB2YWx1ZVtpXVswXTtcbiAgICAgICAgICAgIGlmICggdCA9PT0gJ3dvcmQnICYmIHZhbHVlW2ldWzFdID09PSAnIWltcG9ydGFudCcgKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICggaSA+IDAgJiYgdmFsdWVbaSAtIDFdWzBdID09PSAnc3BhY2UnICkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gdmFsdWVbaSAtIDFdWzFdICsgJyFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zcGxpY2UoaSAtIDEsIDIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmF3cy5pbXBvcnRhbnQgPSAnIWltcG9ydGFudCc7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0ICE9PSAnc3BhY2UnICYmIHQgIT09ICduZXdsaW5lJyAmJiB0ICE9PSAnY29tbWVudCcgKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9IGJldHdlZW4gKyB0aGlzLmZpcnN0U3BhY2VzKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGVja1NlbWljb2xvbih2YWx1ZSk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICd2YWx1ZScsIHZhbHVlLCBjb2xvbik7XG4gICAgfVxuXG4gICAgcnVsZShwYXJ0KSB7XG4gICAgICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHBhcnQpO1xuXG4gICAgICAgIGxldCBzZWxlY3RvciA9IHBhcnQudG9rZW5zO1xuICAgICAgICBsZXQgbmV4dCAgICAgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG5cbiAgICAgICAgd2hpbGUgKCAhbmV4dC5lbmQgJiYgbmV4dC5pbmRlbnQubGVuZ3RoID09PSBwYXJ0LmluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICBzZWxlY3Rvci5wdXNoKFsnc3BhY2UnLCBuZXh0LmJlZm9yZSArIG5leHQuaW5kZW50XSk7XG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLmNvbmNhdChuZXh0LnRva2Vucyk7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5wb3MgKyAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMua2VlcFRyYWlsaW5nU3BhY2Uobm9kZSwgc2VsZWN0b3IpO1xuICAgICAgICB0aGlzLmNoZWNrQ3VybHkoc2VsZWN0b3IpO1xuICAgICAgICB0aGlzLnJhdyhub2RlLCAnc2VsZWN0b3InLCBzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgLyogSGVscGVycyAqL1xuXG4gICAgaW5kZW50KHBhcnQpIHtcbiAgICAgICAgbGV0IGluZGVudCA9IHBhcnQuaW5kZW50Lmxlbmd0aDtcbiAgICAgICAgbGV0IGlzUHJldiA9IHR5cGVvZiB0aGlzLnByZXZJbmRlbnQgIT09ICd1bmRlZmluZWQnO1xuXG4gICAgICAgIGlmICggIWlzUHJldiAmJiBpbmRlbnQgKSB0aGlzLmluZGVudGVkRmlyc3RMaW5lKHBhcnQpO1xuXG4gICAgICAgIGlmICggIXRoaXMuc3RlcCAmJiBpbmRlbnQgKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXAgPSBpbmRlbnQ7XG4gICAgICAgICAgICB0aGlzLnJvb3QucmF3cy5pbmRlbnQgPSBwYXJ0LmluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggaXNQcmV2ICYmIHRoaXMucHJldkluZGVudCAhPT0gaW5kZW50ICkge1xuICAgICAgICAgICAgbGV0IGRpZmYgPSBpbmRlbnQgLSB0aGlzLnByZXZJbmRlbnQ7XG4gICAgICAgICAgICBpZiAoIGRpZmYgPiAwICkge1xuICAgICAgICAgICAgICAgIGlmICggZGlmZiAhPT0gdGhpcy5zdGVwICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndyb25nSW5kZW50KHRoaXMucHJldkluZGVudCArIHRoaXMuc3RlcCwgaW5kZW50LCBwYXJ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQubGFzdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBkaWZmICUgdGhpcy5zdGVwICE9PSAwICkge1xuICAgICAgICAgICAgICAgIGxldCBtID0gaW5kZW50ICsgZGlmZiAlIHRoaXMuc3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLndyb25nSW5kZW50KGAkeyBtIH0gb3IgJHsgbSArIHRoaXMuc3RlcCB9YCwgaW5kZW50LCBwYXJ0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgLWRpZmYgLyB0aGlzLnN0ZXA7IGkrKyApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50LnBhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZJbmRlbnQgPSBpbmRlbnQ7XG4gICAgfVxuXG4gICAgaW5pdChub2RlLCBwYXJ0KSB7XG4gICAgICAgIHRoaXMuaW5kZW50KHBhcnQpO1xuXG4gICAgICAgIGlmICggIXRoaXMuY3VycmVudC5ub2RlcyApIHRoaXMuY3VycmVudC5ub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKTtcblxuICAgICAgICBub2RlLnJhd3MuYmVmb3JlID0gcGFydC5iZWZvcmUgKyBwYXJ0LmluZGVudDtcbiAgICAgICAgbm9kZS5zb3VyY2UgPSB7XG4gICAgICAgICAgICBzdGFydDogeyBsaW5lOiBwYXJ0LnRva2Vuc1swXVsyXSwgY29sdW1uOiBwYXJ0LnRva2Vuc1swXVszXSB9LFxuICAgICAgICAgICAgaW5wdXQ6IHRoaXMuaW5wdXRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjaGVja0N1cmx5KHRva2Vucykge1xuICAgICAgICBmb3IgKCBsZXQgdG9rZW4gb2YgdG9rZW5zICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlblswXSA9PT0gJ3snICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoJ1VubmVjZXNzYXJ5IGN1cmx5IGJyYWNrZXQnLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tTZW1pY29sb24odG9rZW5zKSB7XG4gICAgICAgIGZvciAoIGxldCB0b2tlbiBvZiB0b2tlbnMgKSB7XG4gICAgICAgICAgICBpZiAoIHRva2VuWzBdID09PSAnOycgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcignVW5uZWNlc3Nhcnkgc2VtaWNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGtlZXBUcmFpbGluZ1NwYWNlKG5vZGUsIHRva2Vucykge1xuICAgICAgICBsZXQgbGFzdFNwYWNlID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKCBsYXN0U3BhY2UgJiYgbGFzdFNwYWNlWzBdID09PSAnc3BhY2UnICkge1xuICAgICAgICAgICAgdG9rZW5zLnBvcCgpO1xuICAgICAgICAgICAgbm9kZS5yYXdzLnNzc0JldHdlZW4gPSBsYXN0U3BhY2VbMV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaXJzdFNwYWNlcyh0b2tlbnMpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICBpZiAoIHRva2Vuc1tpXVswXSA9PT0gJ3NwYWNlJyB8fCB0b2tlbnNbaV1bMF0gPT09ICduZXdsaW5lJyApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gdG9rZW5zLnNoaWZ0KClbMV07XG4gICAgICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJhdyhub2RlLCBwcm9wLCB0b2tlbnMsIGFsdExhc3QpIHtcbiAgICAgICAgbGV0IHRva2VuLCB0eXBlO1xuICAgICAgICBsZXQgbGVuZ3RoID0gdG9rZW5zLmxlbmd0aDtcbiAgICAgICAgbGV0IHZhbHVlICA9ICcnO1xuICAgICAgICBsZXQgY2xlYW4gID0gdHJ1ZTtcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAgICAgICAgIHR5cGUgID0gdG9rZW5bMF07XG4gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICdjb21tZW50JyB8fCB0eXBlID09PSAnc3BhY2UnICYmIGkgPT09IGxlbmd0aCAtIDEgKSB7XG4gICAgICAgICAgICAgICAgY2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gdG9rZW5bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCAhY2xlYW4gKSB7XG4gICAgICAgICAgICBsZXQgc3NzID0gdG9rZW5zLnJlZHVjZSggKGFsbCwgaSkgPT4gYWxsICsgaVsxXSwgJycpO1xuICAgICAgICAgICAgbGV0IHJhdyA9IHRva2Vucy5yZWR1Y2UoIChhbGwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGlbMF0gPT09ICdjb21tZW50JyAmJiBpWzZdID09PSAnaW5saW5lJyApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbCArICcvKiAnICsgaVsxXS5zbGljZSgyKS50cmltKCkgKyAnICovJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxsICsgaVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAnJyk7XG4gICAgICAgICAgICBub2RlLnJhd3NbcHJvcF0gPSB7IHZhbHVlLCByYXcgfTtcbiAgICAgICAgICAgIGlmICggc3NzICE9PSByYXcgKSBub2RlLnJhd3NbcHJvcF0uc3NzID0gc3NzO1xuICAgICAgICB9XG4gICAgICAgIG5vZGVbcHJvcF0gPSB2YWx1ZTtcblxuICAgICAgICBsZXQgbGFzdDtcbiAgICAgICAgZm9yICggbGV0IGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICBpZiAoIHRva2Vuc1tpXS5sZW5ndGggPiAyICkge1xuICAgICAgICAgICAgICAgIGxhc3QgPSB0b2tlbnNbaV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCAhbGFzdCApIGxhc3QgPSBhbHRMYXN0O1xuXG4gICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHtcbiAgICAgICAgICAgIGxpbmU6ICAgbGFzdFs0XSB8fCBsYXN0WzJdLFxuICAgICAgICAgICAgY29sdW1uOiBsYXN0WzVdIHx8IGxhc3RbM11cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZXh0Tm9uQ29tbWVudChwb3MpIHtcbiAgICAgICAgbGV0IG5leHQgPSBwb3M7XG4gICAgICAgIGxldCBwYXJ0O1xuICAgICAgICB3aGlsZSAoIG5leHQgPCB0aGlzLnBhcnRzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIG5leHQgKz0gMTtcbiAgICAgICAgICAgIHBhcnQgPSB0aGlzLnBhcnRzW25leHRdO1xuICAgICAgICAgICAgaWYgKCBwYXJ0LmVuZCB8fCAhcGFydC5jb21tZW50ICkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfVxuXG4gICAgY29tbWVudFRleHQobm9kZSwgdG9rZW4pIHtcbiAgICAgICAgbGV0IHRleHQgPSB0b2tlblsxXTtcbiAgICAgICAgaWYgKCB0b2tlbls2XSA9PT0gJ2lubGluZScgKSB7XG4gICAgICAgICAgICBub2RlLnJhd3MuaW5saW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMiwgLTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1hdGNoID0gdGV4dC5tYXRjaCgvXihcXHMqKShbXl0qW15cXHNdKShcXHMqKVxcbj8kLyk7XG4gICAgICAgIGlmICggbWF0Y2ggKSB7XG4gICAgICAgICAgICBub2RlLnRleHQgPSBtYXRjaFsyXTtcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ID0gbWF0Y2hbMV07XG4gICAgICAgICAgICBub2RlLnJhd3MuaW5saW5lUmlnaHQgPSBtYXRjaFszXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUudGV4dCA9ICcnO1xuICAgICAgICAgICAgbm9kZS5yYXdzLmxlZnQgPSAnJztcbiAgICAgICAgICAgIG5vZGUucmF3cy5pbmxpbmVSaWdodCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXJyb3JzXG5cbiAgICBlcnJvcihtc2csIGxpbmUsIGNvbHVtbikge1xuICAgICAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKG1zZywgbGluZSwgY29sdW1uKTtcbiAgICB9XG5cbiAgICB1bm5hbWVkQXRydWxlKHRva2VuKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ0F0LXJ1bGUgd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bm5hbWVkRGVjbCh0b2tlbikge1xuICAgICAgICB0aGlzLmVycm9yKCdEZWNsYXJhdGlvbiB3aXRob3V0IG5hbWUnLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgIH1cblxuICAgIGluZGVudGVkRmlyc3RMaW5lKHBhcnQpIHtcbiAgICAgICAgdGhpcy5lcnJvcignRmlyc3QgbGluZSBzaG91bGQgbm90IGhhdmUgaW5kZW50JywgcGFydC5udW1iZXIsIDEpO1xuICAgIH1cblxuICAgIHdyb25nSW5kZW50KGV4cGVjdGVkLCByZWFsLCBwYXJ0KSB7XG4gICAgICAgIGxldCBtc2cgPSBgRXhwZWN0ZWQgJHsgZXhwZWN0ZWQgfSBpbmRlbnQsIGJ1dCBnZXQgJHsgcmVhbCB9YDtcbiAgICAgICAgdGhpcy5lcnJvcihtc2csIHBhcnQubnVtYmVyLCAxKTtcbiAgICB9XG5cbiAgICBiYWRQcm9wKHRva2VuKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ1VuZXhwZWN0ZWQgc2VwYXJhdG9yIGluIHByb3BlcnR5JywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJwb3MiLCJyb290IiwiY3VycmVudCIsInNwYWNlcyIsImV4dHJhSW5kZW50IiwicHJldkluZGVudCIsInVuZGVmaW5lZCIsInN0ZXAiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJsb29wIiwicGFydCIsInBhcnRzIiwibGVuZ3RoIiwiY29tbWVudCIsImF0cnVsZSIsImNvbG9uIiwibmV4dCIsIm5leHROb25Db21tZW50IiwiZW5kIiwiZGVjbCIsIm1vcmVJbmRlbnQiLCJpbmRlbnQiLCJydWxlIiwicmF3cyIsImFmdGVyIiwiYmVmb3JlIiwiaSIsInRva2VucyIsImxhc3QiLCJ0b2tlbiIsIm5vZGUiLCJpbml0IiwiY29tbWVudFRleHQiLCJhdHdvcmQiLCJwYXJhbXMiLCJzbGljZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwibGFzdENvbW1hIiwicHVzaCIsImNvbmNhdCIsImFmdGVyTmFtZSIsImZpcnN0U3BhY2VzIiwia2VlcFRyYWlsaW5nU3BhY2UiLCJjaGVja1NlbWljb2xvbiIsImNoZWNrQ3VybHkiLCJyYXciLCJiZXR3ZWVuIiwidmFsdWUiLCJwcm9wIiwiYmFkUHJvcCIsInVubmFtZWREZWNsIiwicG9wIiwicHJldiIsInQiLCJpbXBvcnRhbnQiLCJzcGxpY2UiLCJzZWxlY3RvciIsImlzUHJldiIsImluZGVudGVkRmlyc3RMaW5lIiwiZGlmZiIsIndyb25nSW5kZW50IiwibSIsInBhcmVudCIsIm5vZGVzIiwiZXJyb3IiLCJsYXN0U3BhY2UiLCJzc3NCZXR3ZWVuIiwicmVzdWx0Iiwic2hpZnQiLCJhbHRMYXN0IiwidHlwZSIsImNsZWFuIiwic3NzIiwicmVkdWNlIiwiYWxsIiwidHJpbSIsInRleHQiLCJpbmxpbmUiLCJtYXRjaCIsImxlZnQiLCJpbmxpbmVSaWdodCIsIm1zZyIsIm51bWJlciIsImV4cGVjdGVkIiwicmVhbCJdLCJtYXBwaW5ncyI6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QUFNO0FBQzlCLFlBQUl3RSxvQkFBbUJFLFFBQW5CLHlCQUFpREMsSUFBckQ7QUFDQSxhQUFLcEIsS0FBTCxDQUFXaUIsR0FBWCxFQUFnQnhFLEtBQUt5RSxNQUFyQixFQUE2QixDQUE3QjtBQUNILEs7O3FCQUVEakMsTyxvQkFBUXJCLEssRUFBTztBQUNYLGFBQUtvQyxLQUFMLENBQVcsa0NBQVgsRUFBK0NwQyxNQUFNLENBQU4sQ0FBL0MsRUFBeURBLE1BQU0sQ0FBTixDQUF6RDtBQUNILEs7Ozs7O2tCQS9YZ0JsQyxNIiwiZmlsZSI6InBhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEZWNsYXJhdGlvbiBmcm9tICdwb3N0Y3NzL2xpYi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAncG9zdGNzcy9saWIvY29tbWVudCc7XG5pbXBvcnQgQXRSdWxlICAgICAgZnJvbSAncG9zdGNzcy9saWIvYXQtcnVsZSc7XG5pbXBvcnQgUnVsZSAgICAgICAgZnJvbSAncG9zdGNzcy9saWIvcnVsZSc7XG5pbXBvcnQgUm9vdCAgICAgICAgZnJvbSAncG9zdGNzcy9saWIvcm9vdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnNlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dCkge1xuICAgICAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG5cbiAgICAgICAgdGhpcy5wb3MgICAgID0gMDtcbiAgICAgICAgdGhpcy5yb290ICAgID0gbmV3IFJvb3QoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5yb290O1xuICAgICAgICB0aGlzLnNwYWNlcyAgPSAnJztcblxuICAgICAgICB0aGlzLmV4dHJhSW5kZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJldkluZGVudCAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3RlcCAgICAgICAgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5yb290LnNvdXJjZSA9IHsgaW5wdXQsIHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMSB9IH07XG4gICAgfVxuXG4gICAgbG9vcCgpIHtcbiAgICAgICAgbGV0IHBhcnQ7XG4gICAgICAgIHdoaWxlICggdGhpcy5wb3MgPCB0aGlzLnBhcnRzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHBhcnQgPSB0aGlzLnBhcnRzW3RoaXMucG9zXTtcblxuICAgICAgICAgICAgaWYgKCBwYXJ0LmNvbW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tZW50KHBhcnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcGFydC5hdHJ1bGUgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHJ1bGUocGFydCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBwYXJ0LmNvbG9uICkge1xuICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gdGhpcy5uZXh0Tm9uQ29tbWVudCh0aGlzLnBvcyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIG5leHQuZW5kIHx8IG5leHQuYXRydWxlICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wocGFydCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVJbmRlbnQgPSBuZXh0LmluZGVudC5sZW5ndGggPiBwYXJ0LmluZGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmICggIW1vcmVJbmRlbnQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wocGFydCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIG1vcmVJbmRlbnQgJiYgbmV4dC5jb2xvbiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZShwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggbW9yZUluZGVudCAmJiAhbmV4dC5jb2xvbiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjbChwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHBhcnQuZW5kICkge1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC5yYXdzLmFmdGVyID0gcGFydC5iZWZvcmU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucnVsZShwYXJ0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wb3MgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGxldCBpID0gdGhpcy50b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICBpZiAoIHRoaXMudG9rZW5zW2ldLmxlbmd0aCA+IDMgKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3QgPSB0aGlzLnRva2Vuc1tpXTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvb3Quc291cmNlLmVuZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGluZTogICBsYXN0WzRdIHx8IGxhc3RbMl0sXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogbGFzdFs1XSB8fCBsYXN0WzNdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbW1lbnQocGFydCkge1xuICAgICAgICBsZXQgdG9rZW4gPSBwYXJ0LnRva2Vuc1swXTtcbiAgICAgICAgbGV0IG5vZGUgID0gbmV3IENvbW1lbnQoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHBhcnQpO1xuICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzRdLCBjb2x1bW46IHRva2VuWzVdIH07XG4gICAgICAgIHRoaXMuY29tbWVudFRleHQobm9kZSwgdG9rZW4pO1xuICAgIH1cblxuICAgIGF0cnVsZShwYXJ0KSB7XG4gICAgICAgIGxldCBhdHdvcmQgPSBwYXJ0LnRva2Vuc1swXTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHBhcnQudG9rZW5zLnNsaWNlKDEpO1xuXG4gICAgICAgIGxldCBub2RlICA9IG5ldyBBdFJ1bGUoKTtcbiAgICAgICAgbm9kZS5uYW1lID0gYXR3b3JkWzFdLnNsaWNlKDEpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgcGFydCk7XG5cbiAgICAgICAgaWYgKCBub2RlLm5hbWUgPT09ICcnICkgdGhpcy51bm5hbWVkQXRydWxlKGF0d29yZCk7XG5cbiAgICAgICAgd2hpbGUgKCAhcGFydC5lbmQgJiYgcGFydC5sYXN0Q29tbWEgKSB7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgcGFydCA9IHRoaXMucGFydHNbdGhpcy5wb3NdO1xuICAgICAgICAgICAgcGFyYW1zLnB1c2goWydzcGFjZScsIHBhcnQuYmVmb3JlICsgcGFydC5pbmRlbnRdKTtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5jb25jYXQocGFydC50b2tlbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmFmdGVyTmFtZSA9IHRoaXMuZmlyc3RTcGFjZXMocGFyYW1zKTtcbiAgICAgICAgdGhpcy5rZWVwVHJhaWxpbmdTcGFjZShub2RlLCBwYXJhbXMpO1xuICAgICAgICB0aGlzLmNoZWNrU2VtaWNvbG9uKHBhcmFtcyk7XG4gICAgICAgIHRoaXMuY2hlY2tDdXJseShwYXJhbXMpO1xuICAgICAgICB0aGlzLnJhdyhub2RlLCAncGFyYW1zJywgcGFyYW1zLCBhdHdvcmQpO1xuICAgIH1cblxuICAgIGRlY2wocGFydCkge1xuICAgICAgICBsZXQgbm9kZSA9IG5ldyBEZWNsYXJhdGlvbigpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgcGFydCk7XG5cbiAgICAgICAgbGV0IGJldHdlZW4gPSAnJztcbiAgICAgICAgbGV0IGNvbG9uICAgPSAwO1xuICAgICAgICBsZXQgdmFsdWUgICA9IFtdO1xuICAgICAgICBsZXQgcHJvcCAgICA9ICcnO1xuICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBwYXJ0LnRva2Vucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCB0b2tlbiA9IHBhcnQudG9rZW5zW2ldO1xuICAgICAgICAgICAgaWYgKCB0b2tlblswXSA9PT0gJzonICkge1xuICAgICAgICAgICAgICAgIGJldHdlZW4gKz0gdG9rZW5bMV07XG4gICAgICAgICAgICAgICAgY29sb24gICAgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB2YWx1ZSAgICA9IHBhcnQudG9rZW5zLnNsaWNlKGkgKyAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHRva2VuWzBdID09PSAnY29tbWVudCcgfHwgdG9rZW5bMF0gPT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgYmV0d2VlbiArPSB0b2tlblsxXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJldHdlZW4gIT09ICcnICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFkUHJvcCh0b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByb3AgKz0gdG9rZW5bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHByb3AgPT09ICcnICkgdGhpcy51bm5hbWVkRGVjbChwYXJ0LnRva2Vuc1swXSk7XG4gICAgICAgIG5vZGUucHJvcCA9IHByb3A7XG5cbiAgICAgICAgbGV0IG5leHQgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG5cbiAgICAgICAgd2hpbGUgKCAhbmV4dC5lbmQgJiYgIW5leHQuYXRydWxlICYmICFuZXh0LmNvbG9uICYmXG4gICAgICAgICAgICAgICAgbmV4dC5pbmRlbnQubGVuZ3RoID4gcGFydC5pbmRlbnQubGVuZ3RoICkge1xuICAgICAgICAgICAgdmFsdWUucHVzaChbJ3NwYWNlJywgbmV4dC5iZWZvcmUgKyBuZXh0LmluZGVudF0pO1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5jb25jYXQobmV4dC50b2tlbnMpO1xuICAgICAgICAgICAgdGhpcy5wb3MgKz0gMTtcbiAgICAgICAgICAgIG5leHQgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdCA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIGxhc3QgJiYgbGFzdFswXSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgdmFsdWUucG9wKCk7XG4gICAgICAgICAgICBsZXQgY29tbWVudCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChjb21tZW50KTtcbiAgICAgICAgICAgIGNvbW1lbnQuc291cmNlID0ge1xuICAgICAgICAgICAgICAgIGlucHV0OiB0aGlzLmlucHV0LFxuICAgICAgICAgICAgICAgIHN0YXJ0OiB7IGxpbmU6IGxhc3RbMl0sIGNvbHVtbjogbGFzdFszXSB9LFxuICAgICAgICAgICAgICAgIGVuZDogICB7IGxpbmU6IGxhc3RbNF0sIGNvbHVtbjogbGFzdFs1XSB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IHByZXYgPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmICggcHJldiAmJiBwcmV2WzBdID09PSAnc3BhY2UnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlLnBvcCgpO1xuICAgICAgICAgICAgICAgIGNvbW1lbnQucmF3cy5iZWZvcmUgPSBwcmV2WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21tZW50VGV4dChjb21tZW50LCBsYXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGxldCBpID0gdmFsdWUubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSApIHtcbiAgICAgICAgICAgIGxldCB0ID0gdmFsdWVbaV1bMF07XG4gICAgICAgICAgICBpZiAoIHQgPT09ICd3b3JkJyAmJiB2YWx1ZVtpXVsxXSA9PT0gJyFpbXBvcnRhbnQnICkge1xuICAgICAgICAgICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIGkgPiAwICYmIHZhbHVlW2kgLSAxXVswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yYXdzLmltcG9ydGFudCA9IHZhbHVlW2kgLSAxXVsxXSArICchaW1wb3J0YW50JztcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuc3BsaWNlKGkgLSAxLCAyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gJyFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdCAhPT0gJ3NwYWNlJyAmJiB0ICE9PSAnbmV3bGluZScgJiYgdCAhPT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSBiZXR3ZWVuICsgdGhpcy5maXJzdFNwYWNlcyh2YWx1ZSk7XG4gICAgICAgIHRoaXMuY2hlY2tTZW1pY29sb24odmFsdWUpO1xuICAgICAgICB0aGlzLnJhdyhub2RlLCAndmFsdWUnLCB2YWx1ZSwgY29sb24pO1xuICAgIH1cblxuICAgIHJ1bGUocGFydCkge1xuICAgICAgICBsZXQgbm9kZSA9IG5ldyBSdWxlKCk7XG4gICAgICAgIHRoaXMuaW5pdChub2RlLCBwYXJ0KTtcblxuICAgICAgICBsZXQgc2VsZWN0b3IgPSBwYXJ0LnRva2VucztcbiAgICAgICAgbGV0IG5leHQgICAgID0gdGhpcy5wYXJ0c1t0aGlzLnBvcyArIDFdO1xuXG4gICAgICAgIHdoaWxlICggIW5leHQuZW5kICYmIG5leHQuaW5kZW50Lmxlbmd0aCA9PT0gcGFydC5pbmRlbnQubGVuZ3RoICkge1xuICAgICAgICAgICAgc2VsZWN0b3IucHVzaChbJ3NwYWNlJywgbmV4dC5iZWZvcmUgKyBuZXh0LmluZGVudF0pO1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5jb25jYXQobmV4dC50b2tlbnMpO1xuICAgICAgICAgICAgdGhpcy5wb3MgKz0gMTtcbiAgICAgICAgICAgIG5leHQgPSB0aGlzLnBhcnRzW3RoaXMucG9zICsgMV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmtlZXBUcmFpbGluZ1NwYWNlKG5vZGUsIHNlbGVjdG9yKTtcbiAgICAgICAgdGhpcy5jaGVja0N1cmx5KHNlbGVjdG9yKTtcbiAgICAgICAgdGhpcy5yYXcobm9kZSwgJ3NlbGVjdG9yJywgc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIC8qIEhlbHBlcnMgKi9cblxuICAgIGluZGVudChwYXJ0KSB7XG4gICAgICAgIGxldCBpbmRlbnQgPSBwYXJ0LmluZGVudC5sZW5ndGg7XG4gICAgICAgIGxldCBpc1ByZXYgPSB0eXBlb2YgdGhpcy5wcmV2SW5kZW50ICE9PSAndW5kZWZpbmVkJztcblxuICAgICAgICBpZiAoICFpc1ByZXYgJiYgaW5kZW50ICkgdGhpcy5pbmRlbnRlZEZpcnN0TGluZShwYXJ0KTtcblxuICAgICAgICBpZiAoICF0aGlzLnN0ZXAgJiYgaW5kZW50ICkge1xuICAgICAgICAgICAgdGhpcy5zdGVwID0gaW5kZW50O1xuICAgICAgICAgICAgdGhpcy5yb290LnJhd3MuaW5kZW50ID0gcGFydC5pbmRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIGlzUHJldiAmJiB0aGlzLnByZXZJbmRlbnQgIT09IGluZGVudCApIHtcbiAgICAgICAgICAgIGxldCBkaWZmID0gaW5kZW50IC0gdGhpcy5wcmV2SW5kZW50O1xuICAgICAgICAgICAgaWYgKCBkaWZmID4gMCApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGRpZmYgIT09IHRoaXMuc3RlcCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cm9uZ0luZGVudCh0aGlzLnByZXZJbmRlbnQgKyB0aGlzLnN0ZXAsIGluZGVudCwgcGFydCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggdGhpcy5jdXJyZW50Lmxhc3QucHVzaCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50Lmxhc3Q7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHRyYUluZGVudCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBkaWZmOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4dHJhSW5kZW50ICs9ICcgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGRpZmYgJSB0aGlzLnN0ZXAgIT09IDAgKSB7XG4gICAgICAgICAgICAgICAgbGV0IG0gPSBpbmRlbnQgKyBkaWZmICUgdGhpcy5zdGVwO1xuICAgICAgICAgICAgICAgIHRoaXMud3JvbmdJbmRlbnQoYCR7IG0gfSBvciAkeyBtICsgdGhpcy5zdGVwIH1gLCBpbmRlbnQsIHBhcnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCAtZGlmZiAvIHRoaXMuc3RlcDsgaSsrICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQucGFyZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldkluZGVudCA9IGluZGVudDtcbiAgICB9XG5cbiAgICBpbml0KG5vZGUsIHBhcnQpIHtcbiAgICAgICAgdGhpcy5pbmRlbnQocGFydCk7XG5cbiAgICAgICAgaWYgKCAhdGhpcy5jdXJyZW50Lm5vZGVzICkgdGhpcy5jdXJyZW50Lm5vZGVzID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudC5wdXNoKG5vZGUpO1xuXG4gICAgICAgIG5vZGUucmF3cy5iZWZvcmUgPSBwYXJ0LmJlZm9yZSArIHBhcnQuaW5kZW50O1xuICAgICAgICBpZiAoIHRoaXMuZXh0cmFJbmRlbnQgKSB7XG4gICAgICAgICAgICBub2RlLnJhd3MuZXh0cmFJbmRlbnQgPSB0aGlzLmV4dHJhSW5kZW50O1xuICAgICAgICAgICAgdGhpcy5leHRyYUluZGVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuc291cmNlID0ge1xuICAgICAgICAgICAgc3RhcnQ6IHsgbGluZTogcGFydC50b2tlbnNbMF1bMl0sIGNvbHVtbjogcGFydC50b2tlbnNbMF1bM10gfSxcbiAgICAgICAgICAgIGlucHV0OiB0aGlzLmlucHV0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY2hlY2tDdXJseSh0b2tlbnMpIHtcbiAgICAgICAgZm9yICggbGV0IHRva2VuIG9mIHRva2VucyApIHtcbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gPT09ICd7JyApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yKCdVbm5lY2Vzc2FyeSBjdXJseSBicmFja2V0JywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrU2VtaWNvbG9uKHRva2Vucykge1xuICAgICAgICBmb3IgKCBsZXQgdG9rZW4gb2YgdG9rZW5zICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlblswXSA9PT0gJzsnICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoJ1VubmVjZXNzYXJ5IHNlbWljb2xvbicsIHRva2VuWzJdLCB0b2tlblszXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBrZWVwVHJhaWxpbmdTcGFjZShub2RlLCB0b2tlbnMpIHtcbiAgICAgICAgbGV0IGxhc3RTcGFjZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICggbGFzdFNwYWNlICYmIGxhc3RTcGFjZVswXSA9PT0gJ3NwYWNlJyApIHtcbiAgICAgICAgICAgIHRva2Vucy5wb3AoKTtcbiAgICAgICAgICAgIG5vZGUucmF3cy5zc3NCZXR3ZWVuID0gbGFzdFNwYWNlWzFdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmlyc3RTcGFjZXModG9rZW5zKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlbnNbaV1bMF0gPT09ICdzcGFjZScgfHwgdG9rZW5zW2ldWzBdID09PSAnbmV3bGluZScgKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHRva2Vucy5zaGlmdCgpWzFdO1xuICAgICAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByYXcobm9kZSwgcHJvcCwgdG9rZW5zLCBhbHRMYXN0KSB7XG4gICAgICAgIGxldCB0b2tlbiwgdHlwZTtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRva2Vucy5sZW5ndGg7XG4gICAgICAgIGxldCB2YWx1ZSAgPSAnJztcbiAgICAgICAgbGV0IGNsZWFuICA9IHRydWU7XG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnY29tbWVudCcgfHwgdHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICggIWNsZWFuICkge1xuICAgICAgICAgICAgbGV0IHNzcyA9IHRva2Vucy5yZWR1Y2UoIChhbGwsIGkpID0+IGFsbCArIGlbMV0sICcnKTtcbiAgICAgICAgICAgIGxldCByYXcgPSB0b2tlbnMucmVkdWNlKCAoYWxsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBpWzBdID09PSAnY29tbWVudCcgJiYgaVs2XSA9PT0gJ2lubGluZScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGwgKyAnLyogJyArIGlbMV0uc2xpY2UoMikudHJpbSgpICsgJyAqLyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbCArIGlbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgJycpO1xuICAgICAgICAgICAgbm9kZS5yYXdzW3Byb3BdID0geyB2YWx1ZSwgcmF3IH07XG4gICAgICAgICAgICBpZiAoIHNzcyAhPT0gcmF3ICkgbm9kZS5yYXdzW3Byb3BdLnNzcyA9IHNzcztcbiAgICAgICAgfVxuICAgICAgICBub2RlW3Byb3BdID0gdmFsdWU7XG5cbiAgICAgICAgbGV0IGxhc3Q7XG4gICAgICAgIGZvciAoIGxldCBpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlbnNbaV0ubGVuZ3RoID4gMiApIHtcbiAgICAgICAgICAgICAgICBsYXN0ID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICggIWxhc3QgKSBsYXN0ID0gYWx0TGFzdDtcblxuICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7XG4gICAgICAgICAgICBsaW5lOiAgIGxhc3RbNF0gfHwgbGFzdFsyXSxcbiAgICAgICAgICAgIGNvbHVtbjogbGFzdFs1XSB8fCBsYXN0WzNdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmV4dE5vbkNvbW1lbnQocG9zKSB7XG4gICAgICAgIGxldCBuZXh0ID0gcG9zO1xuICAgICAgICBsZXQgcGFydDtcbiAgICAgICAgd2hpbGUgKCBuZXh0IDwgdGhpcy5wYXJ0cy5sZW5ndGggKSB7XG4gICAgICAgICAgICBuZXh0ICs9IDE7XG4gICAgICAgICAgICBwYXJ0ID0gdGhpcy5wYXJ0c1tuZXh0XTtcbiAgICAgICAgICAgIGlmICggcGFydC5lbmQgfHwgIXBhcnQuY29tbWVudCApIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJ0O1xuICAgIH1cblxuICAgIGNvbW1lbnRUZXh0KG5vZGUsIHRva2VuKSB7XG4gICAgICAgIGxldCB0ZXh0ID0gdG9rZW5bMV07XG4gICAgICAgIGlmICggdG9rZW5bNl0gPT09ICdpbmxpbmUnICkge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmlubGluZSA9IHRydWU7XG4gICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDIsIC0yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKilcXG4/JC8pO1xuICAgICAgICBpZiAoIG1hdGNoICkge1xuICAgICAgICAgICAgbm9kZS50ZXh0ID0gbWF0Y2hbMl07XG4gICAgICAgICAgICBub2RlLnJhd3MubGVmdCA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgbm9kZS5yYXdzLmlubGluZVJpZ2h0ID0gbWF0Y2hbM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub2RlLnRleHQgPSAnJztcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ID0gJyc7XG4gICAgICAgICAgICBub2RlLnJhd3MuaW5saW5lUmlnaHQgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVycm9yc1xuXG4gICAgZXJyb3IobXNnLCBsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcihtc2csIGxpbmUsIGNvbHVtbik7XG4gICAgfVxuXG4gICAgdW5uYW1lZEF0cnVsZSh0b2tlbikge1xuICAgICAgICB0aGlzLmVycm9yKCdBdC1ydWxlIHdpdGhvdXQgbmFtZScsIHRva2VuWzJdLCB0b2tlblszXSk7XG4gICAgfVxuXG4gICAgdW5uYW1lZERlY2wodG9rZW4pIHtcbiAgICAgICAgdGhpcy5lcnJvcignRGVjbGFyYXRpb24gd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICBpbmRlbnRlZEZpcnN0TGluZShwYXJ0KSB7XG4gICAgICAgIHRoaXMuZXJyb3IoJ0ZpcnN0IGxpbmUgc2hvdWxkIG5vdCBoYXZlIGluZGVudCcsIHBhcnQubnVtYmVyLCAxKTtcbiAgICB9XG5cbiAgICB3cm9uZ0luZGVudChleHBlY3RlZCwgcmVhbCwgcGFydCkge1xuICAgICAgICBsZXQgbXNnID0gYEV4cGVjdGVkICR7IGV4cGVjdGVkIH0gaW5kZW50LCBidXQgZ2V0ICR7IHJlYWwgfWA7XG4gICAgICAgIHRoaXMuZXJyb3IobXNnLCBwYXJ0Lm51bWJlciwgMSk7XG4gICAgfVxuXG4gICAgYmFkUHJvcCh0b2tlbikge1xuICAgICAgICB0aGlzLmVycm9yKCdVbmV4cGVjdGVkIHNlcGFyYXRvciBpbiBwcm9wZXJ0eScsIHRva2VuWzJdLCB0b2tlblszXSk7XG4gICAgfVxuXG59XG4iXX0=

@@ -128,3 +128,3 @@ # SugarSS [![Build Status][ci-img]][ci]

* Sublime: [Syntax Highlighting for PostCSS]
* SublimeText: [Syntax Highlighting for .SSS SugarSS]
* Atom: [language-postcss], [source-preview-postcss] and [build-sugarss]

@@ -137,3 +137,3 @@ * Vim: [vim-sugarss]

[Syntax Highlighting for PostCSS]: https://github.com/hudochenkov/Syntax-highlighting-for-PostCSS
[Syntax Highlighting for .SSS SugarSS]: https://packagecontrol.io/packages/Syntax%20Highlighting%20for%20SSS%20SugarSS
[source-preview-postcss]: https://atom.io/packages/source-preview-postcss

@@ -140,0 +140,0 @@ [language-postcss]: https://atom.io/packages/language-postcss

@@ -41,2 +41,5 @@ 'use strict';

}
if (node.raws.extraIndent) {
this.builder(node.raws.extraIndent);
}
this.builder('//' + left + node.text + right, node);

@@ -125,2 +128,2 @@ } else {

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJkZWZhdWx0UmF3IiwiY29sb24iLCJpbmRlbnQiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsIlN0cmluZ2lmaWVyIiwiYnVpbGRlciIsInN0cmluZ2lmeSIsIm5vZGUiLCJzZW1pY29sb24iLCJ0eXBlIiwicm9vdCIsImJvZHkiLCJyYXdzIiwiYWZ0ZXIiLCJjb21tZW50IiwibGVmdCIsInJpZ2h0IiwiaGFzIiwiaW5saW5lIiwiaW5saW5lUmlnaHQiLCJ0ZXh0IiwiZGVjbCIsImJldHdlZW4iLCJzdHJpbmciLCJwcm9wIiwicmF3VmFsdWUiLCJpbXBvcnRhbnQiLCJydWxlIiwiYmxvY2siLCJhdHJ1bGUiLCJuYW1lIiwicGFyYW1zIiwiYWZ0ZXJOYW1lIiwiaSIsIm5vZGVzIiwibGVuZ3RoIiwiY2hpbGQiLCJiZWZvcmUiLCJyZXBsYWNlIiwiaW5kZXhPZiIsInN0YXJ0Iiwic3NzQmV0d2VlbiIsInN0ZXAiLCJyZXN1bHQiLCJwYXJlbnQiLCJ2YWx1ZSIsInJhdyIsInNzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTUEsYUFBYTtBQUNmQyxXQUFjLElBREM7QUFFZkMsWUFBYyxJQUZDO0FBR2ZDLGlCQUFjLEdBSEM7QUFJZkMsa0JBQWM7QUFKQyxDQUFuQjs7SUFPcUJDLFc7QUFFakIseUJBQVlDLE9BQVosRUFBcUI7QUFBQTs7QUFDakIsYUFBS0EsT0FBTCxHQUFlQSxPQUFmO0FBQ0g7OzBCQUVEQyxTLHNCQUFVQyxJLEVBQU1DLFMsRUFBVztBQUN2QixhQUFLRCxLQUFLRSxJQUFWLEVBQWdCRixJQUFoQixFQUFzQkMsU0FBdEI7QUFDSCxLOzswQkFFREUsSSxpQkFBS0gsSSxFQUFNO0FBQ1AsYUFBS0ksSUFBTCxDQUFVSixJQUFWO0FBQ0EsWUFBS0EsS0FBS0ssSUFBTCxDQUFVQyxLQUFmLEVBQXVCLEtBQUtSLE9BQUwsQ0FBYUUsS0FBS0ssSUFBTCxDQUFVQyxLQUF2QjtBQUMxQixL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QkFBT0QsS0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBeEdnQnpDLFciLCJmaWxlIjoic3RyaW5naWZpZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkZWZhdWx0UmF3ID0ge1xuICAgIGNvbG9uOiAgICAgICAgJzogJyxcbiAgICBpbmRlbnQ6ICAgICAgICcgICcsXG4gICAgY29tbWVudExlZnQ6ICAnICcsXG4gICAgY29tbWVudFJpZ2h0OiAnICdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ2lmaWVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXIpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyID0gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBzdHJpbmdpZnkobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgICAgIHRoaXNbbm9kZS50eXBlXShub2RlLCBzZW1pY29sb24pO1xuICAgIH1cblxuICAgIHJvb3Qobm9kZSkge1xuICAgICAgICB0aGlzLmJvZHkobm9kZSk7XG4gICAgICAgIGlmICggbm9kZS5yYXdzLmFmdGVyICkgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5hZnRlcik7XG4gICAgfVxuXG4gICAgY29tbWVudChub2RlKSB7XG4gICAgICAgIGxldCBsZWZ0ICA9IGRlZmF1bHRSYXcuY29tbWVudExlZnQ7XG4gICAgICAgIGxldCByaWdodCA9IGRlZmF1bHRSYXcuY29tbWVudFJpZ2h0O1xuICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUucmF3cy5sZWZ0KSApIGxlZnQgPSBub2RlLnJhd3MubGVmdDtcblxuICAgICAgICBpZiAoIG5vZGUucmF3cy5pbmxpbmUgKSB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUucmF3cy5pbmxpbmVSaWdodCkgKSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgPSBub2RlLnJhd3MuaW5saW5lUmlnaHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXIoJy8vJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCwgbm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUucmF3cy5yaWdodCkgKSByaWdodCA9IG5vZGUucmF3cy5yaWdodDtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWNsKG5vZGUpIHtcbiAgICAgICAgbGV0IGJldHdlZW4gPSBub2RlLnJhd3MuYmV0d2VlbiB8fCBkZWZhdWx0UmF3LmNvbG9uO1xuICAgICAgICBsZXQgc3RyaW5nICA9IG5vZGUucHJvcCArIGJldHdlZW4gKyB0aGlzLnJhd1ZhbHVlKG5vZGUsICd2YWx1ZScpO1xuXG4gICAgICAgIGlmICggbm9kZS5pbXBvcnRhbnQgKSB7XG4gICAgICAgICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idWlsZGVyKHN0cmluZywgbm9kZSk7XG4gICAgfVxuXG4gICAgcnVsZShub2RlKSB7XG4gICAgICAgIHRoaXMuYmxvY2sobm9kZSwgdGhpcy5yYXdWYWx1ZShub2RlLCAnc2VsZWN0b3InKSk7XG4gICAgfVxuXG4gICAgYXRydWxlKG5vZGUpIHtcbiAgICAgICAgbGV0IG5hbWUgICA9ICdAJyArIG5vZGUubmFtZTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gdGhpcy5yYXdWYWx1ZShub2RlLCAncGFyYW1zJykgOiAnJztcblxuICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUucmF3cy5hZnRlck5hbWUpICkge1xuICAgICAgICAgICAgbmFtZSArPSBub2RlLnJhd3MuYWZ0ZXJOYW1lO1xuICAgICAgICB9IGVsc2UgaWYgKCBwYXJhbXMgKSB7XG4gICAgICAgICAgICBuYW1lICs9ICcgJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmxvY2sobm9kZSwgbmFtZSArIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgYm9keShub2RlKSB7XG4gICAgICAgIGxldCBpbmRlbnQgPSBub2RlLnJvb3QoKS5yYXdzLmluZGVudCB8fCBkZWZhdWx0UmF3LmluZGVudDtcblxuICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBub2RlLm5vZGVzLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgbGV0IGNoaWxkICA9IG5vZGUubm9kZXNbaV07XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gY2hpbGQucmF3cy5iZWZvcmUucmVwbGFjZSgvW15cXG5dKiQvLCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50KG5vZGUsIGluZGVudCk7XG4gICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdjb21tZW50JyAmJlxuICAgICAgICAgICAgICAgICBjaGlsZC5yYXdzLmJlZm9yZS5pbmRleE9mKCdcXG4nKSA9PT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlID0gY2hpbGQucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIGJlZm9yZSApIHRoaXMuYnVpbGRlcihiZWZvcmUpO1xuICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmxvY2sobm9kZSwgc3RhcnQpIHtcbiAgICAgICAgbGV0IGJldHdlZW4gPSBub2RlLnJhd3Muc3NzQmV0d2VlbiB8fCAnJztcbiAgICAgICAgdGhpcy5idWlsZGVyKHN0YXJ0ICsgYmV0d2Vlbiwgbm9kZSwgJ3N0YXJ0Jyk7XG4gICAgICAgIGlmICggdGhpcy5oYXMobm9kZS5ub2RlcykgKSB0aGlzLmJvZHkobm9kZSk7XG4gICAgfVxuXG4gICAgaW5kZW50KG5vZGUsIHN0ZXApIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICB3aGlsZSAoIG5vZGUucGFyZW50ICkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IHN0ZXA7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBoYXModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgfVxuXG4gICAgcmF3VmFsdWUobm9kZSwgcHJvcCkge1xuICAgICAgICBsZXQgdmFsdWUgPSBub2RlW3Byb3BdO1xuICAgICAgICBsZXQgcmF3ICAgPSBub2RlLnJhd3NbcHJvcF07XG4gICAgICAgIGlmICggcmF3ICYmIHJhdy52YWx1ZSA9PT0gdmFsdWUgKSB7XG4gICAgICAgICAgICByZXR1cm4gcmF3LnNzcyB8fCByYXcucmF3O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJkZWZhdWx0UmF3IiwiY29sb24iLCJpbmRlbnQiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsIlN0cmluZ2lmaWVyIiwiYnVpbGRlciIsInN0cmluZ2lmeSIsIm5vZGUiLCJzZW1pY29sb24iLCJ0eXBlIiwicm9vdCIsImJvZHkiLCJyYXdzIiwiYWZ0ZXIiLCJjb21tZW50IiwibGVmdCIsInJpZ2h0IiwiaGFzIiwiaW5saW5lIiwiaW5saW5lUmlnaHQiLCJleHRyYUluZGVudCIsInRleHQiLCJkZWNsIiwiYmV0d2VlbiIsInN0cmluZyIsInByb3AiLCJyYXdWYWx1ZSIsImltcG9ydGFudCIsInJ1bGUiLCJibG9jayIsImF0cnVsZSIsIm5hbWUiLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJpIiwibm9kZXMiLCJsZW5ndGgiLCJjaGlsZCIsImJlZm9yZSIsInJlcGxhY2UiLCJpbmRleE9mIiwic3RhcnQiLCJzc3NCZXR3ZWVuIiwic3RlcCIsInJlc3VsdCIsInBhcmVudCIsInZhbHVlIiwicmF3Iiwic3NzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFNQSxhQUFhO0FBQ2ZDLFdBQWMsSUFEQztBQUVmQyxZQUFjLElBRkM7QUFHZkMsaUJBQWMsR0FIQztBQUlmQyxrQkFBYztBQUpDLENBQW5COztJQU9xQkMsVztBQUVqQix5QkFBWUMsT0FBWixFQUFxQjtBQUFBOztBQUNqQixhQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDSDs7MEJBRURDLFMsc0JBQVVDLEksRUFBTUMsUyxFQUFXO0FBQ3ZCLGFBQUtELEtBQUtFLElBQVYsRUFBZ0JGLElBQWhCLEVBQXNCQyxTQUF0QjtBQUNILEs7OzBCQUVERSxJLGlCQUFLSCxJLEVBQU07QUFDUCxhQUFLSSxJQUFMLENBQVVKLElBQVY7QUFDQSxZQUFLQSxLQUFLSyxJQUFMLENBQVVDLEtBQWYsRUFBdUIsS0FBS1IsT0FBTCxDQUFhRSxLQUFLSyxJQUFMLENBQVVD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QUFDQSxZQUFLc0IsT0FBT0EsSUFBSUQsS0FBSixLQUFjQSxLQUExQixFQUFrQztBQUM5QixtQkFBT0MsSUFBSUMsR0FBSixJQUFXRCxJQUFJQSxHQUF0QjtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPRCxLQUFQO0FBQ0g7QUFDSixLOzs7OztrQkEzR2dCMUMsVyIsImZpbGUiOiJzdHJpbmdpZmllci5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlZmF1bHRSYXcgPSB7XG4gICAgY29sb246ICAgICAgICAnOiAnLFxuICAgIGluZGVudDogICAgICAgJyAgJyxcbiAgICBjb21tZW50TGVmdDogICcgJyxcbiAgICBjb21tZW50UmlnaHQ6ICcgJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5naWZpZXIge1xuXG4gICAgY29uc3RydWN0b3IoYnVpbGRlcikge1xuICAgICAgICB0aGlzLmJ1aWxkZXIgPSBidWlsZGVyO1xuICAgIH1cblxuICAgIHN0cmluZ2lmeShub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgdGhpc1tub2RlLnR5cGVdKG5vZGUsIHNlbWljb2xvbik7XG4gICAgfVxuXG4gICAgcm9vdChub2RlKSB7XG4gICAgICAgIHRoaXMuYm9keShub2RlKTtcbiAgICAgICAgaWYgKCBub2RlLnJhd3MuYWZ0ZXIgKSB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLmFmdGVyKTtcbiAgICB9XG5cbiAgICBjb21tZW50KG5vZGUpIHtcbiAgICAgICAgbGV0IGxlZnQgID0gZGVmYXVsdFJhdy5jb21tZW50TGVmdDtcbiAgICAgICAgbGV0IHJpZ2h0ID0gZGVmYXVsdFJhdy5jb21tZW50UmlnaHQ7XG4gICAgICAgIGlmICggdGhpcy5oYXMobm9kZS5yYXdzLmxlZnQpICkgbGVmdCA9IG5vZGUucmF3cy5sZWZ0O1xuXG4gICAgICAgIGlmICggbm9kZS5yYXdzLmlubGluZSApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy5oYXMobm9kZS5yYXdzLmlubGluZVJpZ2h0KSApIHtcbiAgICAgICAgICAgICAgICByaWdodCA9IG5vZGUucmF3cy5pbmxpbmVSaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmlnaHQgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICggbm9kZS5yYXdzLmV4dHJhSW5kZW50ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlcihub2RlLnJhd3MuZXh0cmFJbmRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5idWlsZGVyKCcvLycgKyBsZWZ0ICsgbm9kZS50ZXh0ICsgcmlnaHQsIG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MucmlnaHQpICkgcmlnaHQgPSBub2RlLnJhd3MucmlnaHQ7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXIoJy8qJyArIGxlZnQgKyBub2RlLnRleHQgKyByaWdodCArICcqLycsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVjbChub2RlKSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLmJldHdlZW4gfHwgZGVmYXVsdFJhdy5jb2xvbjtcbiAgICAgICAgbGV0IHN0cmluZyAgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKTtcblxuICAgICAgICBpZiAoIG5vZGUuaW1wb3J0YW50ICkge1xuICAgICAgICAgICAgc3RyaW5nICs9IG5vZGUucmF3cy5pbXBvcnRhbnQgfHwgJyAhaW1wb3J0YW50JztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpO1xuICAgIH1cblxuICAgIHJ1bGUobm9kZSkge1xuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIHRoaXMucmF3VmFsdWUobm9kZSwgJ3NlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGF0cnVsZShub2RlKSB7XG4gICAgICAgIGxldCBuYW1lICAgPSAnQCcgKyBub2RlLm5hbWU7XG4gICAgICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJyc7XG5cbiAgICAgICAgaWYgKCB0aGlzLmhhcyhub2RlLnJhd3MuYWZ0ZXJOYW1lKSApIHtcbiAgICAgICAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICggcGFyYW1zICkge1xuICAgICAgICAgICAgbmFtZSArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpO1xuICAgIH1cblxuICAgIGJvZHkobm9kZSkge1xuICAgICAgICBsZXQgaW5kZW50ID0gbm9kZS5yb290KCkucmF3cy5pbmRlbnQgfHwgZGVmYXVsdFJhdy5pbmRlbnQ7XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCAgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IGNoaWxkLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxuXSokLywgJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudChub2RlLCBpbmRlbnQpO1xuICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAnY29tbWVudCcgJiZcbiAgICAgICAgICAgICAgICAgY2hpbGQucmF3cy5iZWZvcmUuaW5kZXhPZignXFxuJykgPT09IC0xICkge1xuICAgICAgICAgICAgICAgIGJlZm9yZSA9IGNoaWxkLnJhd3MuYmVmb3JlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCBiZWZvcmUgKSB0aGlzLmJ1aWxkZXIoYmVmb3JlKTtcbiAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKG5vZGUsIHN0YXJ0KSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gbm9kZS5yYXdzLnNzc0JldHdlZW4gfHwgJyc7XG4gICAgICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4sIG5vZGUsICdzdGFydCcpO1xuICAgICAgICBpZiAoIHRoaXMuaGFzKG5vZGUubm9kZXMpICkgdGhpcy5ib2R5KG5vZGUpO1xuICAgIH1cblxuICAgIGluZGVudChub2RlLCBzdGVwKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgd2hpbGUgKCBub2RlLnBhcmVudCApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBzdGVwO1xuICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaGFzKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnO1xuICAgIH1cblxuICAgIHJhd1ZhbHVlKG5vZGUsIHByb3ApIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbm9kZVtwcm9wXTtcbiAgICAgICAgbGV0IHJhdyAgID0gbm9kZS5yYXdzW3Byb3BdO1xuICAgICAgICBpZiAoIHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlICkge1xuICAgICAgICAgICAgcmV0dXJuIHJhdy5zc3MgfHwgcmF3LnJhdztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
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