find-node-modules
Version:
Return an array of all parent node_modules directories
1,086 lines (1,051 loc) • 33 kB
JavaScript
"use strict";
var cov_1z1of6sg0o = function () {
var path = "/Users/callumacrae/Sites/find-node-modules/cz-cli/src/commitizen/init.js";
var hash = "ee5c8a45745c58e46ccc6a00f57188209e2d638a";
var global = new Function("return this")();
var gcv = "__coverage__";
var coverageData = {
path: "/Users/callumacrae/Sites/find-node-modules/cz-cli/src/commitizen/init.js",
statementMap: {
"0": {
start: {
line: 12,
column: 4
},
end: {
line: 12,
column: 11
}
},
"1": {
start: {
line: 16,
column: 17
},
end: {
line: 16,
column: 63
}
},
"2": {
start: {
line: 35,
column: 27
},
end: {
line: 46,
column: 1
}
},
"3": {
start: {
line: 63,
column: 2
},
end: {
line: 63,
column: 51
}
},
"4": {
start: {
line: 66,
column: 22
},
end: {
line: 66,
column: 49
}
},
"5": {
start: {
line: 69,
column: 23
},
end: {
line: 69,
column: 136
}
},
"6": {
start: {
line: 72,
column: 30
},
end: {
line: 72,
column: 165
}
},
"7": {
start: {
line: 74,
column: 33
},
end: {
line: 74,
column: 164
}
},
"8": {
start: {
line: 77,
column: 2
},
end: {
line: 85,
column: 3
}
},
"9": {
start: {
line: 78,
column: 4
},
end: {
line: 84,
column: 7
}
},
"10": {
start: {
line: 87,
column: 2
},
end: {
line: 95,
column: 3
}
},
"11": {
start: {
line: 88,
column: 4
},
end: {
line: 88,
column: 68
}
},
"12": {
start: {
line: 89,
column: 4
},
end: {
line: 91,
column: 5
}
},
"13": {
start: {
line: 90,
column: 6
},
end: {
line: 90,
column: 73
}
},
"14": {
start: {
line: 92,
column: 4
},
end: {
line: 92,
column: 63
}
},
"15": {
start: {
line: 94,
column: 4
},
end: {
line: 94,
column: 21
}
},
"16": {
start: {
line: 103,
column: 2
},
end: {
line: 105,
column: 3
}
},
"17": {
start: {
line: 104,
column: 4
},
end: {
line: 104,
column: 59
}
},
"18": {
start: {
line: 106,
column: 2
},
end: {
line: 108,
column: 3
}
},
"19": {
start: {
line: 107,
column: 4
},
end: {
line: 107,
column: 77
}
},
"20": {
start: {
line: 116,
column: 15
},
end: {
line: 116,
column: 43
}
},
"21": {
start: {
line: 117,
column: 2
},
end: {
line: 121,
column: 3
}
},
"22": {
start: {
line: 118,
column: 4
},
end: {
line: 118,
column: 18
}
}
},
fnMap: {
"0": {
name: "init",
decl: {
start: {
line: 51,
column: 9
},
end: {
line: 51,
column: 13
}
},
loc: {
start: {
line: 60,
column: 24
},
end: {
line: 96,
column: 1
}
},
line: 60
},
"1": {
name: "checkRequiredArguments",
decl: {
start: {
line: 102,
column: 9
},
end: {
line: 102,
column: 31
}
},
loc: {
start: {
line: 102,
column: 55
},
end: {
line: 109,
column: 1
}
},
line: 102
},
"2": {
name: "loadAdapterConfig",
decl: {
start: {
line: 115,
column: 9
},
end: {
line: 115,
column: 26
}
},
loc: {
start: {
line: 115,
column: 33
},
end: {
line: 122,
column: 1
}
},
line: 115
}
},
branchMap: {
"0": {
loc: {
start: {
line: 51,
column: 41
},
end: {
line: 60,
column: 22
}
},
type: "default-arg",
locations: [{
start: {
line: 60,
column: 4
},
end: {
line: 60,
column: 22
}
}],
line: 51
},
"1": {
loc: {
start: {
line: 52,
column: 2
},
end: {
line: 52,
column: 14
}
},
type: "default-arg",
locations: [{
start: {
line: 52,
column: 9
},
end: {
line: 52,
column: 14
}
}],
line: 52
},
"2": {
loc: {
start: {
line: 53,
column: 2
},
end: {
line: 53,
column: 16
}
},
type: "default-arg",
locations: [{
start: {
line: 53,
column: 12
},
end: {
line: 53,
column: 16
}
}],
line: 53
},
"3": {
loc: {
start: {
line: 54,
column: 2
},
end: {
line: 54,
column: 19
}
},
type: "default-arg",
locations: [{
start: {
line: 54,
column: 14
},
end: {
line: 54,
column: 19
}
}],
line: 54
},
"4": {
loc: {
start: {
line: 55,
column: 2
},
end: {
line: 55,
column: 15
}
},
type: "default-arg",
locations: [{
start: {
line: 55,
column: 10
},
end: {
line: 55,
column: 15
}
}],
line: 55
},
"5": {
loc: {
start: {
line: 56,
column: 2
},
end: {
line: 56,
column: 14
}
},
type: "default-arg",
locations: [{
start: {
line: 56,
column: 9
},
end: {
line: 56,
column: 14
}
}],
line: 56
},
"6": {
loc: {
start: {
line: 57,
column: 2
},
end: {
line: 57,
column: 13
}
},
type: "default-arg",
locations: [{
start: {
line: 57,
column: 8
},
end: {
line: 57,
column: 13
}
}],
line: 57
},
"7": {
loc: {
start: {
line: 58,
column: 2
},
end: {
line: 58,
column: 15
}
},
type: "default-arg",
locations: [{
start: {
line: 58,
column: 10
},
end: {
line: 58,
column: 15
}
}],
line: 58
},
"8": {
loc: {
start: {
line: 59,
column: 2
},
end: {
line: 59,
column: 27
}
},
type: "default-arg",
locations: [{
start: {
line: 59,
column: 22
},
end: {
line: 59,
column: 27
}
}],
line: 59
},
"9": {
loc: {
start: {
line: 69,
column: 23
},
end: {
line: 69,
column: 136
}
},
type: "cond-expr",
locations: [{
start: {
line: 69,
column: 30
},
end: {
line: 69,
column: 73
}
}, {
start: {
line: 69,
column: 76
},
end: {
line: 69,
column: 136
}
}],
line: 69
},
"10": {
loc: {
start: {
line: 72,
column: 30
},
end: {
line: 72,
column: 165
}
},
type: "cond-expr",
locations: [{
start: {
line: 72,
column: 37
},
end: {
line: 72,
column: 98
}
}, {
start: {
line: 72,
column: 101
},
end: {
line: 72,
column: 165
}
}],
line: 72
},
"11": {
loc: {
start: {
line: 74,
column: 33
},
end: {
line: 74,
column: 164
}
},
type: "cond-expr",
locations: [{
start: {
line: 74,
column: 40
},
end: {
line: 74,
column: 99
}
}, {
start: {
line: 74,
column: 102
},
end: {
line: 74,
column: 164
}
}],
line: 74
},
"12": {
loc: {
start: {
line: 77,
column: 2
},
end: {
line: 85,
column: 3
}
},
type: "if",
locations: [{
start: {
line: 77,
column: 2
},
end: {
line: 85,
column: 3
}
}, {
start: {
line: 77,
column: 2
},
end: {
line: 85,
column: 3
}
}],
line: 77
},
"13": {
loc: {
start: {
line: 77,
column: 6
},
end: {
line: 77,
column: 84
}
},
type: "binary-expr",
locations: [{
start: {
line: 77,
column: 6
},
end: {
line: 77,
column: 19
}
}, {
start: {
line: 77,
column: 23
},
end: {
line: 77,
column: 41
}
}, {
start: {
line: 77,
column: 45
},
end: {
line: 77,
column: 74
}
}, {
start: {
line: 77,
column: 78
},
end: {
line: 77,
column: 84
}
}],
line: 77
},
"14": {
loc: {
start: {
line: 89,
column: 4
},
end: {
line: 91,
column: 5
}
},
type: "if",
locations: [{
start: {
line: 89,
column: 4
},
end: {
line: 91,
column: 5
}
}, {
start: {
line: 89,
column: 4
},
end: {
line: 91,
column: 5
}
}],
line: 89
},
"15": {
loc: {
start: {
line: 103,
column: 2
},
end: {
line: 105,
column: 3
}
},
type: "if",
locations: [{
start: {
line: 103,
column: 2
},
end: {
line: 105,
column: 3
}
}, {
start: {
line: 103,
column: 2
},
end: {
line: 105,
column: 3
}
}],
line: 103
},
"16": {
loc: {
start: {
line: 106,
column: 2
},
end: {
line: 108,
column: 3
}
},
type: "if",
locations: [{
start: {
line: 106,
column: 2
},
end: {
line: 108,
column: 3
}
}, {
start: {
line: 106,
column: 2
},
end: {
line: 108,
column: 3
}
}],
line: 106
},
"17": {
loc: {
start: {
line: 117,
column: 2
},
end: {
line: 121,
column: 3
}
},
type: "if",
locations: [{
start: {
line: 117,
column: 2
},
end: {
line: 121,
column: 3
}
}, {
start: {
line: 117,
column: 2
},
end: {
line: 121,
column: 3
}
}],
line: 117
}
},
s: {
"0": 0,
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 0,
"15": 0,
"16": 0,
"17": 0,
"18": 0,
"19": 0,
"20": 0,
"21": 0,
"22": 0
},
f: {
"0": 0,
"1": 0,
"2": 0
},
b: {
"0": [0],
"1": [0],
"2": [0],
"3": [0],
"4": [0],
"5": [0],
"6": [0],
"7": [0],
"8": [0],
"9": [0, 0],
"10": [0, 0],
"11": [0, 0],
"12": [0, 0],
"13": [0, 0, 0, 0],
"14": [0, 0],
"15": [0, 0],
"16": [0, 0],
"17": [0, 0]
},
_coverageSchema: "43e27e138ebf9cfc5966b082cf9a028302ed4184",
hash: "ee5c8a45745c58e46ccc6a00f57188209e2d638a"
};
var coverage = global[gcv] || (global[gcv] = {});
if (coverage[path] && coverage[path].hash === hash) {
return coverage[path];
}
return coverage[path] = coverageData;
}();
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _child_process = _interopRequireDefault(require("child_process"));
var _path = _interopRequireDefault(require("path"));
var configLoader = _interopRequireWildcard(require("./configLoader"));
var adapter = _interopRequireWildcard(require("./adapter"));
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
let {
addPathToAdapterConfig,
generateNpmInstallAdapterCommand,
getNpmInstallStringMappings,
generateYarnAddAdapterCommand,
getYarnAddStringMappings
} = (cov_1z1of6sg0o.s[0]++, adapter);
var _default = init;
exports.default = _default;
const CLI_PATH = (cov_1z1of6sg0o.s[1]++, _path.default.normalize(_path.default.join(__dirname, '../../')));
/**
* CZ INIT
*
* Init is generally responsible for initializing an adapter in
* a user's project. The goal is to be able to run
* `commitizen init` and be prompted for certain fields which
* will help you install the proper adapter for your project.
*
* Init does not actually create the adapter (it defers to adapter
* for this). Instead, it is specifically designed to help gather
* and validate the information needed to install the adapter
* properly without interfering with a previous adapter config.
*/
/**
* The defaults for init
*/
const defaultInitOptions = (cov_1z1of6sg0o.s[2]++, {
save: false,
saveDev: true,
saveExact: false,
force: false,
// for --yarn use
// @see https://github.com/commitizen/cz-cli/issues/527#issuecomment-392653897
yarn: false,
dev: true,
exact: false // should add trailing comma, thus next developer doesn't got blamed for this line
});
/**
* Runs npm install for the adapter then modifies the config.commitizen as needed
*/
function init(repoPath, adapterNpmName, {
save = (cov_1z1of6sg0o.b[1][0]++, false),
saveDev = (cov_1z1of6sg0o.b[2][0]++, true),
saveExact = (cov_1z1of6sg0o.b[3][0]++, false),
force = (cov_1z1of6sg0o.b[4][0]++, false),
yarn = (cov_1z1of6sg0o.b[5][0]++, false),
dev = (cov_1z1of6sg0o.b[6][0]++, false),
exact = (cov_1z1of6sg0o.b[7][0]++, false),
includeCommitizen = (cov_1z1of6sg0o.b[8][0]++, false)
} = (cov_1z1of6sg0o.b[0][0]++, defaultInitOptions)) {
cov_1z1of6sg0o.f[0]++;
cov_1z1of6sg0o.s[3]++;
// Don't let things move forward if required args are missing
checkRequiredArguments(repoPath, adapterNpmName); // Load the current adapter config
let adapterConfig = (cov_1z1of6sg0o.s[4]++, loadAdapterConfig(repoPath)); // Get the npm string mappings based on the arguments provided
let stringMappings = (cov_1z1of6sg0o.s[5]++, yarn ? (cov_1z1of6sg0o.b[9][0]++, getYarnAddStringMappings(dev, exact, force)) : (cov_1z1of6sg0o.b[9][1]++, getNpmInstallStringMappings(save, saveDev, saveExact, force))); // Generate a string that represents the npm install command
let installAdapterCommand = (cov_1z1of6sg0o.s[6]++, yarn ? (cov_1z1of6sg0o.b[10][0]++, generateYarnAddAdapterCommand(stringMappings, adapterNpmName)) : (cov_1z1of6sg0o.b[10][1]++, generateNpmInstallAdapterCommand(stringMappings, adapterNpmName)));
let installCommitizenCommand = (cov_1z1of6sg0o.s[7]++, yarn ? (cov_1z1of6sg0o.b[11][0]++, generateYarnAddAdapterCommand(stringMappings, "commitizen")) : (cov_1z1of6sg0o.b[11][1]++, generateNpmInstallAdapterCommand(stringMappings, "commitizen"))); // Check for previously installed adapters
cov_1z1of6sg0o.s[8]++;
if ((cov_1z1of6sg0o.b[13][0]++, adapterConfig) && (cov_1z1of6sg0o.b[13][1]++, adapterConfig.path) && (cov_1z1of6sg0o.b[13][2]++, adapterConfig.path.length > 0) && (cov_1z1of6sg0o.b[13][3]++, !force)) {
cov_1z1of6sg0o.b[12][0]++;
cov_1z1of6sg0o.s[9]++;
throw new Error(`A previous adapter is already configured. Use --force to override
adapterConfig.path: ${adapterConfig.path}
repoPath: ${repoPath}
CLI_PATH: ${CLI_PATH}
installAdapterCommand: ${installAdapterCommand}
adapterNpmName: ${adapterNpmName}
`);
} else {
cov_1z1of6sg0o.b[12][1]++;
}
cov_1z1of6sg0o.s[10]++;
try {
cov_1z1of6sg0o.s[11]++;
_child_process.default.execSync(installAdapterCommand, {
cwd: repoPath
});
cov_1z1of6sg0o.s[12]++;
if (includeCommitizen) {
cov_1z1of6sg0o.b[14][0]++;
cov_1z1of6sg0o.s[13]++;
_child_process.default.execSync(installCommitizenCommand, {
cwd: repoPath
});
} else {
cov_1z1of6sg0o.b[14][1]++;
}
cov_1z1of6sg0o.s[14]++;
addPathToAdapterConfig(CLI_PATH, repoPath, adapterNpmName);
} catch (e) {
cov_1z1of6sg0o.s[15]++;
console.error(e);
}
}
/**
* Checks to make sure that the required arguments are passed
* Throws an exception if any are not.
*/
function checkRequiredArguments(path, adapterNpmName) {
cov_1z1of6sg0o.f[1]++;
cov_1z1of6sg0o.s[16]++;
if (!path) {
cov_1z1of6sg0o.b[15][0]++;
cov_1z1of6sg0o.s[17]++;
throw new Error("Path is required when running init.");
} else {
cov_1z1of6sg0o.b[15][1]++;
}
cov_1z1of6sg0o.s[18]++;
if (!adapterNpmName) {
cov_1z1of6sg0o.b[16][0]++;
cov_1z1of6sg0o.s[19]++;
throw new Error("The adapter's npm name is required when running init.");
} else {
cov_1z1of6sg0o.b[16][1]++;
}
}
/**
* CONFIG
* Loads and returns the adapter config at key config.commitizen, if it exists
*/
function loadAdapterConfig(cwd) {
cov_1z1of6sg0o.f[2]++;
let config = (cov_1z1of6sg0o.s[20]++, configLoader.load(null, cwd));
cov_1z1of6sg0o.s[21]++;
if (config) {
cov_1z1of6sg0o.b[17][0]++;
cov_1z1of6sg0o.s[22]++;
return config;
} else {
cov_1z1of6sg0o.b[17][1]++;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluaXQuanMiXSwibmFtZXMiOlsiYWRkUGF0aFRvQWRhcHRlckNvbmZpZyIsImdlbmVyYXRlTnBtSW5zdGFsbEFkYXB0ZXJDb21tYW5kIiwiZ2V0TnBtSW5zdGFsbFN0cmluZ01hcHBpbmdzIiwiZ2VuZXJhdGVZYXJuQWRkQWRhcHRlckNvbW1hbmQiLCJnZXRZYXJuQWRkU3RyaW5nTWFwcGluZ3MiLCJhZGFwdGVyIiwiaW5pdCIsIkNMSV9QQVRIIiwicGF0aCIsIm5vcm1hbGl6ZSIsImpvaW4iLCJfX2Rpcm5hbWUiLCJkZWZhdWx0SW5pdE9wdGlvbnMiLCJzYXZlIiwic2F2ZURldiIsInNhdmVFeGFjdCIsImZvcmNlIiwieWFybiIsImRldiIsImV4YWN0IiwicmVwb1BhdGgiLCJhZGFwdGVyTnBtTmFtZSIsImluY2x1ZGVDb21taXRpemVuIiwiY2hlY2tSZXF1aXJlZEFyZ3VtZW50cyIsImFkYXB0ZXJDb25maWciLCJsb2FkQWRhcHRlckNvbmZpZyIsInN0cmluZ01hcHBpbmdzIiwiaW5zdGFsbEFkYXB0ZXJDb21tYW5kIiwiaW5zdGFsbENvbW1pdGl6ZW5Db21tYW5kIiwibGVuZ3RoIiwiRXJyb3IiLCJjaGlsZFByb2Nlc3MiLCJleGVjU3luYyIsImN3ZCIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJjb25maWciLCJjb25maWdMb2FkZXIiLCJsb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QXFCQyxjQUFyQixDQUF0QjtBQUNELEdBTkQsQ0FNRSxPQUFPYSxDQUFQLEVBQVU7QUFBQTtBQUNWQyxJQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBZDtBQUNEO0FBQ0Y7QUFFRDs7Ozs7O0FBSUEsU0FBU1gsc0JBQVQsQ0FBaUNmLElBQWpDLEVBQXVDYSxjQUF2QyxFQUF1RDtBQUFBO0FBQUE7O0FBQ3JELE1BQUksQ0FBQ2IsSUFBTCxFQUFXO0FBQUE7QUFBQTtBQUNULFVBQU0sSUFBSXNCLEtBQUosQ0FBVSxxQ0FBVixDQUFOO0FBQ0QsR0FGRDtBQUFBO0FBQUE7O0FBRHFEOztBQUlyRCxNQUFJLENBQUNULGNBQUwsRUFBcUI7QUFBQTtBQUFBO0FBQ25CLFVBQU0sSUFBSVMsS0FBSixDQUFVLHVEQUFWLENBQU47QUFDRCxHQUZEO0FBQUE7QUFBQTtBQUdEO0FBRUQ7Ozs7OztBQUlBLFNBQVNMLGlCQUFULENBQTRCUSxHQUE1QixFQUFpQztBQUFBO0FBQy9CLE1BQUlJLE1BQU0sNEJBQUdDLFlBQVksQ0FBQ0MsSUFBYixDQUFrQixJQUFsQixFQUF3Qk4sR0FBeEIsQ0FBSCxDQUFWO0FBRCtCOztBQUUvQixNQUFJSSxNQUFKLEVBQVk7QUFBQTtBQUFBO0FBQ1YsV0FBT0EsTUFBUDtBQUNELEdBRkQsTUFFTztBQUFBO0FBRU47QUFDRiIsInNvdXJjZVJvb3QiOiIvVXNlcnMvY2FsbHVtYWNyYWUvU2l0ZXMvZmluZC1ub2RlLW1vZHVsZXMvY3otY2xpL3NyYy9jb21taXRpemVuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoaWxkUHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY29uZmlnTG9hZGVyIGZyb20gJy4vY29uZmlnTG9hZGVyJztcbmltcG9ydCAqIGFzIGFkYXB0ZXIgZnJvbSAnLi9hZGFwdGVyJztcblxubGV0IHtcbiAgYWRkUGF0aFRvQWRhcHRlckNvbmZpZyxcbiAgZ2VuZXJhdGVOcG1JbnN0YWxsQWRhcHRlckNvbW1hbmQsXG4gIGdldE5wbUluc3RhbGxTdHJpbmdNYXBwaW5ncyxcbiAgZ2VuZXJhdGVZYXJuQWRkQWRhcHRlckNvbW1hbmQsXG4gIGdldFlhcm5BZGRTdHJpbmdNYXBwaW5ncyxcbn0gPSBhZGFwdGVyO1xuXG5leHBvcnQgZGVmYXVsdCBpbml0O1xuXG5jb25zdCBDTElfUEFUSCA9IHBhdGgubm9ybWFsaXplKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nKSk7XG5cbi8qKlxuICogQ1ogSU5JVFxuICpcbiAqIEluaXQgaXMgZ2VuZXJhbGx5IHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgYW4gYWRhcHRlciBpblxuICogYSB1c2VyJ3MgcHJvamVjdC4gVGhlIGdvYWwgaXMgdG8gYmUgYWJsZSB0byBydW5cbiAqIGBjb21taXRpemVuIGluaXRgIGFuZCBiZSBwcm9tcHRlZCBmb3IgY2VydGFpbiBmaWVsZHMgd2hpY2hcbiAqIHdpbGwgaGVscCB5b3UgaW5zdGFsbCB0aGUgcHJvcGVyIGFkYXB0ZXIgZm9yIHlvdXIgcHJvamVjdC5cbiAqXG4gKiBJbml0IGRvZXMgbm90IGFjdHVhbGx5IGNyZWF0ZSB0aGUgYWRhcHRlciAoaXQgZGVmZXJzIHRvIGFkYXB0ZXJcbiAqIGZvciB0aGlzKS4gSW5zdGVhZCwgaXQgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGhlbHAgZ2F0aGVyXG4gKiBhbmQgdmFsaWRhdGUgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBpbnN0YWxsIHRoZSBhZGFwdGVyXG4gKiBwcm9wZXJseSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggYSBwcmV2aW91cyBhZGFwdGVyIGNvbmZpZy5cbiAqL1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0cyBmb3IgaW5pdFxuICovXG5jb25zdCBkZWZhdWx0SW5pdE9wdGlvbnMgPSB7XG4gIHNhdmU6IGZhbHNlLFxuICBzYXZlRGV2OiB0cnVlLFxuICBzYXZlRXhhY3Q6IGZhbHNlLFxuICBmb3JjZTogZmFsc2UsXG5cbiAgLy8gZm9yIC0teWFybiB1c2VcbiAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY29tbWl0aXplbi9jei1jbGkvaXNzdWVzLzUyNyNpc3N1ZWNvbW1lbnQtMzkyNjUzODk3XG4gIHlhcm46IGZhbHNlLFxuICBkZXY6IHRydWUsXG4gIGV4YWN0OiBmYWxzZSwgLy8gc2hvdWxkIGFkZCB0cmFpbGluZyBjb21tYSwgdGh1cyBuZXh0IGRldmVsb3BlciBkb2Vzbid0IGdvdCBibGFtZWQgZm9yIHRoaXMgbGluZVxufTtcblxuLyoqXG4gKiBSdW5zIG5wbSBpbnN0YWxsIGZvciB0aGUgYWRhcHRlciB0aGVuIG1vZGlmaWVzIHRoZSBjb25maWcuY29tbWl0aXplbiBhcyBuZWVkZWRcbiAqL1xuZnVuY3Rpb24gaW5pdCAocmVwb1BhdGgsIGFkYXB0ZXJOcG1OYW1lLCB7XG4gIHNhdmUgPSBmYWxzZSxcbiAgc2F2ZURldiA9IHRydWUsXG4gIHNhdmVFeGFjdCA9IGZhbHNlLFxuICBmb3JjZSA9IGZhbHNlLFxuICB5YXJuID0gZmFsc2UsXG4gIGRldiA9IGZhbHNlLFxuICBleGFjdCA9IGZhbHNlLFxuICBpbmNsdWRlQ29tbWl0aXplbiA9IGZhbHNlXG59ID0gZGVmYXVsdEluaXRPcHRpb25zKSB7XG5cbiAgLy8gRG9uJ3QgbGV0IHRoaW5ncyBtb3ZlIGZvcndhcmQgaWYgcmVxdWlyZWQgYXJncyBhcmUgbWlzc2luZ1xuICBjaGVja1JlcXVpcmVkQXJndW1lbnRzKHJlcG9QYXRoLCBhZGFwdGVyTnBtTmFtZSk7XG5cbiAgLy8gTG9hZCB0aGUgY3VycmVudCBhZGFwdGVyIGNvbmZpZ1xuICBsZXQgYWRhcHRlckNvbmZpZyA9IGxvYWRBZGFwdGVyQ29uZmlnKHJlcG9QYXRoKTtcblxuICAvLyBHZXQgdGhlIG5wbSBzdHJpbmcgbWFwcGluZ3MgYmFzZWQgb24gdGhlIGFyZ3VtZW50cyBwcm92aWRlZFxuICBsZXQgc3RyaW5nTWFwcGluZ3MgPSB5YXJuID8gZ2V0WWFybkFkZFN0cmluZ01hcHBpbmdzKGRldiwgZXhhY3QsIGZvcmNlKSA6IGdldE5wbUluc3RhbGxTdHJpbmdNYXBwaW5ncyhzYXZlLCBzYXZlRGV2LCBzYXZlRXhhY3QsIGZvcmNlKTtcblxuICAvLyBHZW5lcmF0ZSBhIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIG5wbSBpbnN0YWxsIGNvbW1hbmRcbiAgbGV0IGluc3RhbGxBZGFwdGVyQ29tbWFuZCA9IHlhcm4gPyBnZW5lcmF0ZVlhcm5BZGRBZGFwdGVyQ29tbWFuZChzdHJpbmdNYXBwaW5ncywgYWRhcHRlck5wbU5hbWUpIDogZ2VuZXJhdGVOcG1JbnN0YWxsQWRhcHRlckNvbW1hbmQoc3RyaW5nTWFwcGluZ3MsIGFkYXB0ZXJOcG1OYW1lKTtcblxuICBsZXQgaW5zdGFsbENvbW1pdGl6ZW5Db21tYW5kID0geWFybiA/IGdlbmVyYXRlWWFybkFkZEFkYXB0ZXJDb21tYW5kKHN0cmluZ01hcHBpbmdzLCBcImNvbW1pdGl6ZW5cIikgOiBnZW5lcmF0ZU5wbUluc3RhbGxBZGFwdGVyQ29tbWFuZChzdHJpbmdNYXBwaW5ncywgXCJjb21taXRpemVuXCIpO1xuXG4gIC8vIENoZWNrIGZvciBwcmV2aW91c2x5IGluc3RhbGxlZCBhZGFwdGVyc1xuICBpZiAoYWRhcHRlckNvbmZpZyAmJiBhZGFwdGVyQ29uZmlnLnBhdGggJiYgYWRhcHRlckNvbmZpZy5wYXRoLmxlbmd0aCA+IDAgJiYgIWZvcmNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBIHByZXZpb3VzIGFkYXB0ZXIgaXMgYWxyZWFkeSBjb25maWd1cmVkLiBVc2UgLS1mb3JjZSB0byBvdmVycmlkZVxuICAgIGFkYXB0ZXJDb25maWcucGF0aDogJHthZGFwdGVyQ29uZmlnLnBhdGh9XG4gICAgcmVwb1BhdGg6ICR7cmVwb1BhdGh9XG4gICAgQ0xJX1BBVEg6ICR7Q0xJX1BBVEh9XG4gICAgaW5zdGFsbEFkYXB0ZXJDb21tYW5kOiAke2luc3RhbGxBZGFwdGVyQ29tbWFuZH1cbiAgICBhZGFwdGVyTnBtTmFtZTogJHthZGFwdGVyTnBtTmFtZX1cbiAgICBgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY2hpbGRQcm9jZXNzLmV4ZWNTeW5jKGluc3RhbGxBZGFwdGVyQ29tbWFuZCwgeyBjd2Q6IHJlcG9QYXRoIH0pO1xuICAgIGlmKGluY2x1ZGVDb21taXRpemVuKSB7XG4gICAgICBjaGlsZFByb2Nlc3MuZXhlY1N5bmMoaW5zdGFsbENvbW1pdGl6ZW5Db21tYW5kLCB7IGN3ZDogcmVwb1BhdGggfSk7XG4gICAgfVxuICAgIGFkZFBhdGhUb0FkYXB0ZXJDb25maWcoQ0xJX1BBVEgsIHJlcG9QYXRoLCBhZGFwdGVyTnBtTmFtZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1aXJlZCBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBhbnkgYXJlIG5vdC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tSZXF1aXJlZEFyZ3VtZW50cyAocGF0aCwgYWRhcHRlck5wbU5hbWUpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBpcyByZXF1aXJlZCB3aGVuIHJ1bm5pbmcgaW5pdC5cIik7XG4gIH1cbiAgaWYgKCFhZGFwdGVyTnBtTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBhZGFwdGVyJ3MgbnBtIG5hbWUgaXMgcmVxdWlyZWQgd2hlbiBydW5uaW5nIGluaXQuXCIpO1xuICB9XG59XG5cbi8qKlxuICogQ09ORklHXG4gKiBMb2FkcyBhbmQgcmV0dXJucyB0aGUgYWRhcHRlciBjb25maWcgYXQga2V5IGNvbmZpZy5jb21taXRpemVuLCBpZiBpdCBleGlzdHNcbiAqL1xuZnVuY3Rpb24gbG9hZEFkYXB0ZXJDb25maWcgKGN3ZCkge1xuICBsZXQgY29uZmlnID0gY29uZmlnTG9hZGVyLmxvYWQobnVsbCwgY3dkKTtcbiAgaWYgKGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWc7XG4gIH0gZWxzZSB7XG5cbiAgfVxufVxuIl19