139 lines
17 KiB
JavaScript
139 lines
17 KiB
JavaScript
"use strict";
|
|
require("typings-global");
|
|
var plugins = require("./cflare.plugins");
|
|
var CflareAccount = (function () {
|
|
function CflareAccount() {
|
|
}
|
|
CflareAccount.prototype.authCheck = function () {
|
|
return (this.authEmail && this.authKey); //check if auth is available
|
|
};
|
|
;
|
|
CflareAccount.prototype.auth = function (optionsArg) {
|
|
this.authEmail = optionsArg.email;
|
|
this.authKey = optionsArg.key;
|
|
};
|
|
CflareAccount.prototype.getZoneId = function (domainName) {
|
|
var done = plugins.q.defer();
|
|
this.listZones(domainName)
|
|
.then(function (responseArg) {
|
|
var filteredResponse = responseArg.result.filter(function (zoneArg) {
|
|
return zoneArg.name === domainName;
|
|
});
|
|
if (filteredResponse.length >= 1) {
|
|
done.resolve(filteredResponse[0].id);
|
|
}
|
|
else {
|
|
plugins.beautylog.error("the domain " + domainName.blue + " does not appear to be in this account!");
|
|
done.reject(undefined);
|
|
}
|
|
});
|
|
return done.promise;
|
|
};
|
|
CflareAccount.prototype.getRecord = function (domainNameArg, typeArg) {
|
|
var done = plugins.q.defer();
|
|
this.listRecords(domainNameArg)
|
|
.then(function (responseArg) {
|
|
var filteredResponse = responseArg.result.filter(function (recordArg) {
|
|
return (recordArg.type == typeArg && recordArg.name == domainNameArg);
|
|
});
|
|
});
|
|
return done.promise;
|
|
};
|
|
;
|
|
CflareAccount.prototype.createRecord = function (domainNameArg, typeArg, contentArg) {
|
|
var _this = this;
|
|
var done = plugins.q.defer();
|
|
var domain = new plugins.smartstring.Domain(domainNameArg);
|
|
var zoneName = domain.level2 + "." + domain.level1;
|
|
this.getZoneId(zoneName)
|
|
.then(function (domainIdArg) {
|
|
var dataObject = {
|
|
name: domain.fullName,
|
|
type: typeArg,
|
|
content: contentArg
|
|
};
|
|
_this.request("POST", "/zones/" + domainIdArg + "/dns_records", dataObject)
|
|
.then(function (responseArg) {
|
|
done.resolve(responseArg);
|
|
});
|
|
});
|
|
return done.promise;
|
|
};
|
|
;
|
|
CflareAccount.prototype.removeRecord = function (domainNameArg, typeArg) {
|
|
var done = plugins.q.defer();
|
|
var domain = new plugins.smartstring.Domain(domainNameArg);
|
|
var zoneName = domain.level2 + "." + domain.level1;
|
|
this.listRecords(zoneName)
|
|
.then(function (responseArg) {
|
|
var filteredResponse = responseArg;
|
|
});
|
|
return done.promise;
|
|
};
|
|
;
|
|
CflareAccount.prototype.updateRecord = function (domainNameArg, typeArg, valueArg) {
|
|
var done = plugins.q.defer();
|
|
return done.promise;
|
|
};
|
|
;
|
|
CflareAccount.prototype.listRecords = function (domainNameArg) {
|
|
var _this = this;
|
|
var done = plugins.q.defer();
|
|
this.getZoneId(domainNameArg)
|
|
.then(function (domainIdArg) {
|
|
_this.request("GET", "/zones/" + domainIdArg + "/dns_records?per_page=100")
|
|
.then(function (responseArg) {
|
|
done.resolve(responseArg);
|
|
});
|
|
});
|
|
return done.promise;
|
|
};
|
|
CflareAccount.prototype.listZones = function (domainName) {
|
|
var done = plugins.q.defer();
|
|
var requestRoute = "/zones?per_page=50";
|
|
if (domainName)
|
|
requestRoute = requestRoute + "&name=" + domainName;
|
|
var result = {};
|
|
this.request("GET", requestRoute)
|
|
.then(function (responseArg) {
|
|
result = responseArg;
|
|
done.resolve(result);
|
|
});
|
|
return done.promise;
|
|
};
|
|
;
|
|
CflareAccount.prototype.request = function (methodArg, routeArg, dataArg) {
|
|
if (dataArg === void 0) { dataArg = {}; }
|
|
var done = plugins.q.defer();
|
|
var jsonArg = JSON.stringify(dataArg);
|
|
var options = {
|
|
method: methodArg,
|
|
url: "https://api.cloudflare.com/client/v4" + routeArg,
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"X-Auth-Email": this.authEmail,
|
|
"X-Auth-Key": this.authKey
|
|
},
|
|
body: jsonArg
|
|
};
|
|
plugins.request(options, function (err, res, body) {
|
|
if (!err && res.statusCode == 200) {
|
|
var responseObj = JSON.parse(body);
|
|
done.resolve(responseObj);
|
|
}
|
|
else {
|
|
console.log(err);
|
|
console.log(res);
|
|
done.reject(err);
|
|
}
|
|
;
|
|
});
|
|
return done.promise;
|
|
};
|
|
return CflareAccount;
|
|
}());
|
|
exports.CflareAccount = CflareAccount;
|
|
;
|
|
|
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNmbGFyZS5jbGFzc2VzLmNmbGFyZWFjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFPLE9BQU8sV0FBVyxrQkFBa0IsQ0FBQyxDQUFDO0FBRzdDO0lBTUk7SUFFQSxDQUFDO0lBTE8saUNBQVMsR0FBakI7UUFDSSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtJQUN6RSxDQUFDOztJQUlELDRCQUFJLEdBQUosVUFBSyxVQUFvQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxpQ0FBUyxHQUFULFVBQVUsVUFBaUI7UUFDdkIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQzthQUNyQixJQUFJLENBQUMsVUFBQyxXQUFXO1lBQ2QsSUFBSSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFDLE9BQU87Z0JBQ3JELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztZQUNILEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFDO2dCQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLElB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LENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksT0FBTyxHQUFHO1lBQ1YsTUFBTSxFQUFDLFNBQVM7WUFDaEIsR0FBRyxFQUFDLHNDQUFzQyxHQUFHLFFBQVE7WUFDckQsT0FBTyxFQUFDO2dCQUNKLGNBQWMsRUFBQyxrQkFBa0I7Z0JBQ2pDLGNBQWMsRUFBQyxJQUFJLENBQUMsU0FBUztnQkFDN0IsWUFBWSxFQUFDLElBQUksQ0FBQyxPQUFPO2FBQzVCO1lBQ0QsSUFBSSxFQUFDLE9BQU87U0FDZixDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUMsVUFBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUk7WUFDM0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFBQSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBQ0wsb0JBQUM7QUFBRCxDQXZIQSxBQXVIQyxJQUFBO0FBdkhZLHFCQUFhLGdCQXVIekIsQ0FBQTtBQUFBLENBQUMiLCJmaWxlIjoiY2ZsYXJlLmNsYXNzZXMuY2ZsYXJlYWNjb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XHJcbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vY2ZsYXJlLnBsdWdpbnNcIik7XHJcbmltcG9ydCBoZWxwZXJzID0gcmVxdWlyZShcIi4vY2ZsYXJlLmNsYXNzZXMuaGVscGVyc1wiKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBDZmxhcmVBY2NvdW50IHtcclxuICAgIHByaXZhdGUgYXV0aEVtYWlsOnN0cmluZztcclxuICAgIHByaXZhdGUgYXV0aEtleTpzdHJpbmc7XHJcbiAgICBwcml2YXRlIGF1dGhDaGVjaygpe1xyXG4gICAgICAgIHJldHVybiAodGhpcy5hdXRoRW1haWwgJiYgdGhpcy5hdXRoS2V5KTsgLy9jaGVjayBpZiBhdXRoIGlzIGF2YWlsYWJsZVxyXG4gICAgfVxyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBcclxuICAgIH07XHJcbiAgICBhdXRoKG9wdGlvbnNBcmc6e2VtYWlsOnN0cmluZyxrZXk6c3RyaW5nfSl7XHJcbiAgICAgICAgdGhpcy5hdXRoRW1haWwgPSBvcHRpb25zQXJnLmVtYWlsO1xyXG4gICAgICAgIHRoaXMuYXV0aEtleSA9IG9wdGlvbnNBcmcua2V5OyAgICAgICBcclxuICAgIH1cclxuICAgIGdldFpvbmVJZChkb21haW5OYW1lOnN0cmluZyl7XHJcbiAgICAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgICAgICB0aGlzLmxpc3Rab25lcyhkb21haW5OYW1lKVxyXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2VBcmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZFJlc3BvbnNlID0gcmVzcG9uc2VBcmcucmVzdWx0LmZpbHRlcigoem9uZUFyZyk9PntcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gem9uZUFyZy5uYW1lID09PSBkb21haW5OYW1lO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRSZXNwb25zZS5sZW5ndGggPj0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9uZS5yZXNvbHZlKGZpbHRlcmVkUmVzcG9uc2VbMF0uaWQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5lcnJvcihcInRoZSBkb21haW4gXCIgKyBkb21haW5OYW1lLmJsdWUgKyBcIiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW4gdGhpcyBhY2NvdW50IVwiKTtcclxuICAgICAgICAgICAgICAgICAgICBkb25lLnJlamVjdCh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG4gICAgfVxyXG4gICAgZ2V0UmVjb3JkKGRvbWFpbk5hbWVBcmc6c3RyaW5nLHR5cGVBcmc6c3RyaW5nKXtcclxuICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgIHRoaXMubGlzdFJlY29yZHMoZG9tYWluTmFtZUFyZylcclxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlQXJnKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRSZXNwb25zZSA9IHJlc3BvbnNlQXJnLnJlc3VsdC5maWx0ZXIoKHJlY29yZEFyZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAocmVjb3JkQXJnLnR5cGUgPT0gdHlwZUFyZyAmJiByZWNvcmRBcmcubmFtZSA9PSBkb21haW5OYW1lQXJnKTsgXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgY3JlYXRlUmVjb3JkKGRvbWFpbk5hbWVBcmc6c3RyaW5nLHR5cGVBcmc6c3RyaW5nLGNvbnRlbnRBcmc6c3RyaW5nKXtcclxuICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgIGxldCBkb21haW4gPSBuZXcgcGx1Z2lucy5zbWFydHN0cmluZy5Eb21haW4oZG9tYWluTmFtZUFyZyk7XHJcbiAgICAgICAgbGV0IHpvbmVOYW1lOnN0cmluZyA9IGRvbWFpbi5sZXZlbDIgKyBcIi5cIiArIGRvbWFpbi5sZXZlbDE7XHJcbiAgICAgICAgdGhpcy5nZXRab25lSWQoem9uZU5hbWUpXHJcbiAgICAgICAgICAgIC50aGVuKChkb21haW5JZEFyZyk9PntcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhT2JqZWN0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGRvbWFpbi5mdWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlQXJnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRBcmdcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3QoXCJQT1NUXCIsXCIvem9uZXMvXCIgKyBkb21haW5JZEFyZyArIFwiL2Ruc19yZWNvcmRzXCIsZGF0YU9iamVjdClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihyZXNwb25zZUFyZyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUucmVzb2x2ZShyZXNwb25zZUFyZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgcmVtb3ZlUmVjb3JkKGRvbWFpbk5hbWVBcmc6c3RyaW5nLHR5cGVBcmc6c3RyaW5nKXtcclxuICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgIGxldCBkb21haW4gPSBuZXcgcGx1Z2lucy5zbWFydHN0cmluZy5Eb21haW4oZG9tYWluTmFtZUFyZyk7XHJcbiAgICAgICAgbGV0IHpvbmVOYW1lID0gZG9tYWluLmxldmVsMiArIFwiLlwiICsgZG9tYWluLmxldmVsMTtcclxuICAgICAgICB0aGlzLmxpc3RSZWNvcmRzKHpvbmVOYW1lKVxyXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2VBcmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJlZFJlc3BvbnNlID0gcmVzcG9uc2VBcmc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgdXBkYXRlUmVjb3JkKGRvbWFpbk5hbWVBcmc6c3RyaW5nLHR5cGVBcmc6c3RyaW5nLHZhbHVlQXJnKXtcclxuICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICB9O1xyXG4gICAgbGlzdFJlY29yZHMoZG9tYWluTmFtZUFyZzpzdHJpbmcpe1xyXG4gICAgICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICAgICAgdGhpcy5nZXRab25lSWQoZG9tYWluTmFtZUFyZylcclxuICAgICAgICAgICAgLnRoZW4oKGRvbWFpbklkQXJnKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0KFwiR0VUXCIsXCIvem9uZXMvXCIgKyBkb21haW5JZEFyZyArIFwiL2Ruc19yZWNvcmRzP3Blcl9wYWdlPTEwMFwiKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlQXJnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZS5yZXNvbHZlKHJlc3BvbnNlQXJnKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxuICAgIH1cclxuICAgIGxpc3Rab25lcyhkb21haW5OYW1lPzpzdHJpbmcpeyAvLyBUT0RPOiBoYW5kbGUgcGFnaW5hdGlvblxyXG4gICAgICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XHJcbiAgICAgICAgbGV0IHJlcXVlc3RSb3V0ZSA9IFwiL3pvbmVzP3Blcl9wYWdlPTUwXCJcclxuICAgICAgICBpZihkb21haW5OYW1lKSByZXF1ZXN0Um91dGUgPSByZXF1ZXN0Um91dGUgKyBcIiZuYW1lPVwiICsgZG9tYWluTmFtZTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0ge307IFxyXG4gICAgICAgIHRoaXMucmVxdWVzdChcIkdFVFwiLHJlcXVlc3RSb3V0ZSlcclxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2VBcmcpe1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzcG9uc2VBcmc7XHJcbiAgICAgICAgICAgICAgICBkb25lLnJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxuICAgIH07XHJcbiAgICByZXF1ZXN0KG1ldGhvZEFyZzpzdHJpbmcscm91dGVBcmc6c3RyaW5nLGRhdGFBcmcgPSB7fSl7XHJcbiAgICAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgICAgICBsZXQganNvbkFyZzpzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkYXRhQXJnKTtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgbWV0aG9kOm1ldGhvZEFyZyxcclxuICAgICAgICAgICAgdXJsOlwiaHR0cHM6Ly9hcGkuY2xvdWRmbGFyZS5jb20vY2xpZW50L3Y0XCIgKyByb3V0ZUFyZyxcclxuICAgICAgICAgICAgaGVhZGVyczp7XHJcbiAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOlwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgXCJYLUF1dGgtRW1haWxcIjp0aGlzLmF1dGhFbWFpbCxcclxuICAgICAgICAgICAgICAgIFwiWC1BdXRoLUtleVwiOnRoaXMuYXV0aEtleVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib2R5Ompzb25BcmdcclxuICAgICAgICB9O1xyXG4gICAgICAgIHBsdWdpbnMucmVxdWVzdChvcHRpb25zLGZ1bmN0aW9uKGVyciwgcmVzLCBib2R5KXtcclxuICAgICAgICAgICAgaWYgKCFlcnIgJiYgcmVzLnN0YXR1c0NvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VPYmogPSBKU09OLnBhcnNlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgZG9uZS5yZXNvbHZlKHJlc3BvbnNlT2JqKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgICAgICAgZG9uZS5yZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG4gICAgfVxyXG59OyJdfQ==
|