@mkrause/react-form
Advanced tools
+34
-24
@@ -94,10 +94,2 @@ "use strict"; | ||
| function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } | ||
| function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
| function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | ||
| function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
| function _templateObject4() { | ||
@@ -147,2 +139,10 @@ var data = _taggedTemplateLiteral(["Unknown accessor type ", ""]); | ||
| function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } | ||
| function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
| function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | ||
| function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
| var Context = React.createContext(); // Check if the given buffer has the given accessor | ||
@@ -155,12 +155,22 @@ | ||
| throw new TypeError('TODO'); | ||
| } else if (Array.isArray(accessor)) { | ||
| if (accessor.length === 0) { | ||
| return true; | ||
| } | ||
| var _accessor = _toArray(accessor), | ||
| key = _accessor[0], | ||
| accessorRest = _accessor.slice(1); | ||
| if (_typeof(buffer) !== 'object' || buffer === null) { | ||
| return false; | ||
| } | ||
| if (!Object.prototype.hasOwnProperty.call(buffer, key)) { | ||
| return false; | ||
| } | ||
| return hasAccessor(accessorRest, buffer[key]); | ||
| } else if (typeof accessor === 'string') { | ||
| return accessor.split('.').reduce(function (buffer, key) { | ||
| if (_typeof(buffer) !== 'object' || buffer === null) { | ||
| return false; | ||
| } else if (!Object.prototype.hasOwnProperty.call(buffer, key)) { | ||
| return false; | ||
| } else { | ||
| return true; | ||
| } | ||
| }, buffer); | ||
| return hasAccessor(accessor.split('.'), buffer); | ||
| } else { | ||
@@ -201,5 +211,5 @@ throw new TypeError((0, _messageTag.default)(_templateObject(), accessor)); | ||
| } else if (Array.isArray(accessor)) { | ||
| var _accessor = _toArray(accessor), | ||
| key = _accessor[0], | ||
| path = _accessor.slice(1); | ||
| var _accessor2 = _toArray(accessor), | ||
| key = _accessor2[0], | ||
| path = _accessor2.slice(1); | ||
@@ -229,5 +239,5 @@ var bufferAsObject = _typeof(buffer) === 'object' && buffer !== null ? buffer : {}; | ||
| } else if (Array.isArray(accessor)) { | ||
| var _accessor2 = _toArray(accessor), | ||
| key = _accessor2[0], | ||
| path = _accessor2.slice(1); | ||
| var _accessor3 = _toArray(accessor), | ||
| key = _accessor3[0], | ||
| path = _accessor3.slice(1); | ||
@@ -537,2 +547,2 @@ if (_typeof(buffer) !== 'object' || buffer === null) { | ||
| exports.withForm = withForm; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsIlR5cGVFcnJvciIsInNwbGl0IiwicmVkdWNlIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiJG1zZyIsInNlbGVjdFdpdGhBY2Nlc3NvciIsInNldFdpdGhBY2Nlc3NvciIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwicGF0aCIsImJ1ZmZlckFzT2JqZWN0IiwibGVuZ3RoIiwidXBkYXRlZFZhbHVlIiwicHJvcCIsInVwZGF0ZVdpdGhBY2Nlc3NvciIsImdldEVycm9yIiwibWV0YSIsImVycm9ycyIsInN1Ym1pdHRlZCIsImZpZWxkTWV0YSIsInRvdWNoZWQiLCJzaG91bGRTaG93TWVzc2FnZSIsImUiLCJGaWVsZCIsImNoaWxkcmVuIiwiY29tcG9uZW50IiwiRmllbGRDb21wb25lbnQiLCJwcm9wcyIsInVwZGF0ZUJ1ZmZlciIsInVwZGF0ZU1ldGEiLCJmb3JtTWV0YSIsImZpZWxkRXJyb3IiLCJmaWVsZFByb3BzIiwib25DaGFuZ2UiLCJldnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwib25CbHVyIiwibWV0YVVwZGF0ZWQiLCJTdHJpbmciLCJhY3Rpb25zIiwidXBkYXRlIiwiRmllbGRzIiwiVGV4dCIsIkVycm9yTWVzc2FnZSIsIkVycm9yQ29tcG9uZW50IiwiRnJhZ21lbnQiLCJlcnJvciIsIlByb3ZpZGVyIiwicHJpc3RpbmUiLCJ2YWxpZGF0ZSIsInNldFN0YXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwiZm9ybVByb3BzIiwidXBkYXRlZEJ1ZmZlciIsIm9uVXBkYXRlIiwic3RhdGUiLCJzdWJtaXQiLCJrZXlzIiwib25TdWJtaXQiLCJQdXJlQ29tcG9uZW50Iiwid2l0aEZvcm0iLCJDb21wb25lbnQiLCJXaXRoRm9ybSJd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WUFBWCxTQUFXQSxZQUFYO0FBQUEsVUFBeUJDLFVBQXpCLFNBQXlCQSxVQUF6QjtBQUFBLGFBQ0csb0JBQUMsU0FBRCxlQUFlRixLQUFmO0FBQXNCLFFBQUEsTUFBTSxFQUFFakMsTUFBOUI7QUFBc0MsUUFBQSxZQUFZLEVBQUVrQyxZQUFwRDtBQUFrRSxRQUFBLFVBQVUsRUFBRUM7QUFBOUUsU0FESDtBQUFBLEtBREwsQ0FEa0I7QUFBQSxHQUF0Qjs7QUFPQSxxQ0FBcUJtQyxRQUFyQixFQUErQkQsU0FBL0I7QUFFQSxTQUFPQyxRQUFQO0FBQ0gsQ0FYTSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICRtc2cgZnJvbSAnbWVzc2FnZS10YWcnO1xuXG5pbXBvcnQgaG9pc3ROb25SZWFjdFN0YXRpY3MgZnJvbSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5cbmV4cG9ydCBjb25zdCBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCgpO1xuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gYnVmZmVyIGhhcyB0aGUgZ2l2ZW4gYWNjZXNzb3JcbmV4cG9ydCBjb25zdCBoYXNBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUT0RPJyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3Nvci5zcGxpdCgnLicpXG4gICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChidWZmZXIsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidWZmZXJcbiAgICAgICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFNlbGVjdCB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3Qgc2VsZWN0V2l0aEFjY2Vzc29yID0gKGFjY2Vzc29yLCBidWZmZXIpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3NvcihidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKVxuICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYnVmZmVyLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgIT09ICdvYmplY3QnIHx8IGJ1ZmZlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYENhbm5vdCBhY2Nlc3MgJHtrZXl9IG9uIG5vbi1vYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BNaXNzaW5nIGtleSAke2tleX0gb24gb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcltrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidWZmZXJcbiAgICAgICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFJldHVybiBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlciAod2hlcmUgdGhlIHByb3BlcnR5IG1heSBub3QgYWxyZWFkeSBleGlzdClcbmV4cG9ydCBjb25zdCBzZXRXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGJ1ZmZlckFzT2JqZWN0ID0gdHlwZW9mIGJ1ZmZlciA9PT0gJ29iamVjdCcgJiYgYnVmZmVyICE9PSBudWxsXG4gICAgICAgICAgICA/IGJ1ZmZlclxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJBc09iamVjdFtrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlckFzT2JqZWN0LCBba2V5XTogdXBkYXRlZFZhbHVlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlckFzT2JqZWN0LCBrZXkpXG4gICAgICAgICAgICAgICAgPyBidWZmZXJBc09iamVjdFtrZXldXG4gICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBleGlzdClcbmV4cG9ydCBjb25zdCB1cGRhdGVXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BDYW5ub3QgYWNjZXNzICR7a2V5fSBvbiBub24tb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgTWlzc2luZyBrZXkgJHtrZXl9IG9uIG9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHZhbHVlKGJ1ZmZlcltrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyLCBba2V5XTogdXBkYXRlV2l0aEFjY2Vzc29yKHBhdGgsIGJ1ZmZlcltrZXldLCB2YWx1ZSkgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRFcnJvciA9ICh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKSA9PiB7XG4gICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKVxuICAgICAgICA6IHsgdG91Y2hlZDogZmFsc2UgfTtcbiAgICBcbiAgICAvLyBPbmx5IHNob3cgdGhlIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHVzZXIgaGFzIGludGVyYWN0ZWQgd2l0aCB0aGUgZm9ybS9maWVsZCBzb21laG93XG4gICAgY29uc3Qgc2hvdWxkU2hvd01lc3NhZ2UgPVxuICAgICAgICBzdWJtaXR0ZWRcbiAgICAgICAgfHwgZmllbGRNZXRhLnRvdWNoZWQ7XG4gICAgXG4gICAgaWYgKCFzaG91bGRTaG93TWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgZXJyb3JzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIE5vIGVycm9yXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGaWVsZCA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEZpZWxkQ29tcG9uZW50ID0gJ2lucHV0JywgYWNjZXNzb3IsIC4uLnByb3BzIH0gPSB7fSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IGJ1ZmZlciwgdXBkYXRlQnVmZmVyLCBtZXRhLCB1cGRhdGVNZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZm9ybU1ldGEgPSB7XG4gICAgICAgICAgICAgICAgc3VibWl0dGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSA6IHtcbiAgICAgICAgICAgICAgICB0b3VjaGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkRXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogZXZ0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC50YXJnZXQuaGFzT3duUHJvcGVydHkoJ2NoZWNrZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBldnQudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKS50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhVXBkYXRlZCA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU1ldGEobWV0YVVwZGF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy5jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIHZhbHVlIHR5cGU6ICR7dmFsdWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiB2YWx1ZSA9PiB7IHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpOyB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKHsgZm9ybU1ldGEsIGZpZWxkUHJvcHMsIGZpZWxkTWV0YSwgZmllbGRFcnJvciB9LCBhY3Rpb25zKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGaWVsZENvbXBvbmVudCB7Li4uZmllbGRQcm9wc30vPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY29uc3QgRmllbGRzID0ge1xuICAgIFRleHQ6IHByb3BzID0+XG4gICAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgeyh7IGJ1ZmZlciB9KSA9PlxuICAgICAgICAgICAgICAgIDxpbnB1dC8+IC8vIFRPRE9cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPixcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2UgPSAoeyBjaGlsZHJlbiwgY29tcG9uZW50OiBFcnJvckNvbXBvbmVudCA9IFJlYWN0LkZyYWdtZW50LCBhY2Nlc3NvciwgLi4ucHJvcHMgfSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZ2V0RXJyb3IoeyBtZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9LCBhY2Nlc3Nvcik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgPyBjaGlsZHJlbihlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckNvbXBvbmVudCB7Li4ucHJvcHN9PntlcnJvcn08L0Vycm9yQ29tcG9uZW50PjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXIgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICAvLyBwcm9wcyA6IHtcbiAgICAvLyAgIGJ1ZmZlciA6IGFueSxcbiAgICAvLyAgIG9uVXBkYXRlIDogRnVuY3Rpb24sXG4gICAgLy8gICB2YWxpZGF0ZSA/OiBGdW5jdGlvbixcbiAgICAvLyAgIG9uU3VibWl0IDogRnVuY3Rpb24sXG4gICAgLy8gfTtcbiAgICBcbiAgICBzdGF0ZSA9IHtcbiAgICAgICAgZXJyb3JzOiB7fSxcbiAgICAgICAgcHJpc3RpbmU6IHRydWUsXG4gICAgICAgIHN1Ym1pdHRlZDogZmFsc2UsXG4gICAgICAgIG1ldGE6IHt9LFxuICAgIH07XG4gICAgXG4gICAgdmFsaWRhdGUgPSBidWZmZXIgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5wcm9wcy52YWxpZGF0ZShidWZmZXIpIHx8IHt9O1xuICAgICAgICBcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9ycyB9KTtcbiAgICB9O1xuICAgIFxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICB9XG4gICAgXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGlmIChwcmV2UHJvcHMuYnVmZmVyICE9PSB0aGlzLnByb3BzLmJ1ZmZlcikge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh0aGlzLnByb3BzLmJ1ZmZlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGJ1ZmZlciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGZvcm1Qcm9wcyA9IHtcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcjogKGFjY2Vzc29yLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWZmZXIgPSB1cGRhdGVXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25VcGRhdGUodXBkYXRlZEJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUucHJpc3RpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHByaXN0aW5lOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRNZXRhID0+ICh7IC4uLihmaWVsZE1ldGEgfHwge30pLCB0b3VjaGVkOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHByaXN0aW5lOiB0aGlzLnN0YXRlLnByaXN0aW5lLFxuICAgICAgICAgICAgc3VibWl0dGVkOiB0aGlzLnN0YXRlLnN1Ym1pdHRlZCxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXJyb3JzOiB0aGlzLnN0YXRlLmVycm9ycyxcbiAgICAgICAgICAgIC8vIHVwZGF0ZUVycm9yOiAoYWNjZXNzb3IsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAvLyAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5lcnJvcnMsIGVycm9yKSB9KTtcbiAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIG1ldGE6IHRoaXMuc3RhdGUubWV0YSxcbiAgICAgICAgICAgIHVwZGF0ZU1ldGE6IG1ldGEgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHN1Ym1pdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBwcmlzdGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN0YXRlLmVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtmb3JtUHJvcHN9PlxuICAgICAgICAgICAgICAgIHt0eXBlb2YgdGhpcy5wcm9wcy5jaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJvcHMuY2hpbGRyZW4oZm9ybVByb3BzKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2l0aEZvcm0gPSBDb21wb25lbnQgPT4ge1xuICAgIGNvbnN0IFdpdGhGb3JtID0gcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIHVwZGF0ZU1ldGEgfSkgPT5cbiAgICAgICAgICAgICAgICA8Q29tcG9uZW50IHsuLi5wcm9wc30gYnVmZmVyPXtidWZmZXJ9IHVwZGF0ZUJ1ZmZlcj17dXBkYXRlQnVmZmVyfSB1cGRhdGVNZXRhPXt1cGRhdGVNZXRhfS8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG4gICAgXG4gICAgaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aEZvcm0sIENvbXBvbmVudCk7XG4gICAgXG4gICAgcmV0dXJuIFdpdGhGb3JtO1xufTtcbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsIlR5cGVFcnJvciIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImtleSIsImFjY2Vzc29yUmVzdCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInNwbGl0IiwiJG1zZyIsInNlbGVjdFdpdGhBY2Nlc3NvciIsInJlZHVjZSIsInNldFdpdGhBY2Nlc3NvciIsInZhbHVlIiwicGF0aCIsImJ1ZmZlckFzT2JqZWN0IiwidXBkYXRlZFZhbHVlIiwicHJvcCIsInVwZGF0ZVdpdGhBY2Nlc3NvciIsImdldEVycm9yIiwibWV0YSIsImVycm9ycyIsInN1Ym1pdHRlZCIsImZpZWxkTWV0YSIsInRvdWNoZWQiLCJzaG91bGRTaG93TWVzc2FnZSIsImUiLCJGaWVsZCIsImNoaWxkcmVuIiwiY29tcG9uZW50IiwiRmllbGRDb21wb25lbnQiLCJwcm9wcyIsInVwZGF0ZUJ1ZmZlciIsInVwZGF0ZU1ldGEiLCJmb3JtTWV0YSIsImZpZWxkRXJyb3IiLCJmaWVsZFByb3BzIiwib25DaGFuZ2UiLCJldnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwib25CbHVyIiwibWV0YVVwZGF0ZWQiLCJTdHJpbmciLCJhY3Rpb25zIiwidXBkYXRlIiwiRmllbGRzIiwiVGV4dCIsIkVycm9yTWVzc2FnZSIsIkVycm9yQ29tcG9uZW50IiwiRnJhZ21lbnQiLCJlcnJvciIsIlByb3ZpZGVyIiwicHJpc3RpbmUiLCJ2YWxpZGF0ZSIsInNldFN0YXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwiZm9ybVByb3BzIiwidXBkYXRlZEJ1ZmZlciIsIm9uVXBkYXRlIiwic3RhdGUiLCJzdWJtaXQiLCJrZXlzIiwib25TdWJtaXQiLCJQdXJlQ29tcG9uZW50Iiwid2l0aEZvcm0iLCJDb21wb25l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Q0FESjtBQVFIOzs7O0VBL0Z5Qm5DLEtBQUssQ0FBQ3dFLGE7Ozs7QUFrRzdCLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUFDLFNBQVMsRUFBSTtBQUNqQyxNQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFBckMsS0FBSztBQUFBLFdBQ2xCLG9CQUFDLE9BQUQsQ0FBUyxRQUFULFFBQ0s7QUFBQSxVQUFHbEMsTUFBSCxTQUFHQSxNQUFIO0FBQUEsVUFBV21DLFlBQVgsU0FBV0EsWUFBWDtBQUFBLFVBQXlCQyxVQUF6QixTQUF5QkEsVUFBekI7QUFBQSxhQUNHLG9CQUFDLFNBQUQsZUFBZUYsS0FBZjtBQUFzQixRQUFBLE1BQU0sRUFBRWxDLE1BQTlCO0FBQXNDLFFBQUEsWUFBWSxFQUFFbUMsWUFBcEQ7QUFBa0UsUUFBQSxVQUFVLEVBQUVDO0FBQTlFLFNBREg7QUFBQSxLQURMLENBRGtCO0FBQUEsR0FBdEI7O0FBT0EscUNBQXFCbUMsUUFBckIsRUFBK0JELFNBQS9CO0FBRUEsU0FBT0MsUUFBUDtBQUNILENBWE0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCAkbXNnIGZyb20gJ21lc3NhZ2UtdGFnJztcblxuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuXG5leHBvcnQgY29uc3QgQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoKTtcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGJ1ZmZlciBoYXMgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3QgaGFzQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlcikgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVE9ETycpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgaWYgKGFjY2Vzc29yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2tleSwgLi4uYWNjZXNzb3JSZXN0XSA9IGFjY2Vzc29yO1xuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIHJldHVybiBoYXNBY2Nlc3NvcihhY2Nlc3NvclJlc3QsIGJ1ZmZlcltrZXldKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGhhc0FjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFNlbGVjdCB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3Qgc2VsZWN0V2l0aEFjY2Vzc29yID0gKGFjY2Vzc29yLCBidWZmZXIpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3NvcihidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKVxuICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYnVmZmVyLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgIT09ICdvYmplY3QnIHx8IGJ1ZmZlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYENhbm5vdCBhY2Nlc3MgJHtrZXl9IG9uIG5vbi1vYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BNaXNzaW5nIGtleSAke2tleX0gb24gb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcltrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidWZmZXJcbiAgICAgICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFJldHVybiBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlciAod2hlcmUgdGhlIHByb3BlcnR5IG1heSBub3QgYWxyZWFkeSBleGlzdClcbmV4cG9ydCBjb25zdCBzZXRXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGJ1ZmZlckFzT2JqZWN0ID0gdHlwZW9mIGJ1ZmZlciA9PT0gJ29iamVjdCcgJiYgYnVmZmVyICE9PSBudWxsXG4gICAgICAgICAgICA/IGJ1ZmZlclxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJBc09iamVjdFtrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlckFzT2JqZWN0LCBba2V5XTogdXBkYXRlZFZhbHVlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlckFzT2JqZWN0LCBrZXkpXG4gICAgICAgICAgICAgICAgPyBidWZmZXJBc09iamVjdFtrZXldXG4gICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBleGlzdClcbmV4cG9ydCBjb25zdCB1cGRhdGVXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BDYW5ub3QgYWNjZXNzICR7a2V5fSBvbiBub24tb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgTWlzc2luZyBrZXkgJHtrZXl9IG9uIG9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHZhbHVlKGJ1ZmZlcltrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyLCBba2V5XTogdXBkYXRlV2l0aEFjY2Vzc29yKHBhdGgsIGJ1ZmZlcltrZXldLCB2YWx1ZSkgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRFcnJvciA9ICh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKSA9PiB7XG4gICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKVxuICAgICAgICA6IHsgdG91Y2hlZDogZmFsc2UgfTtcbiAgICBcbiAgICAvLyBPbmx5IHNob3cgdGhlIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHVzZXIgaGFzIGludGVyYWN0ZWQgd2l0aCB0aGUgZm9ybS9maWVsZCBzb21laG93XG4gICAgY29uc3Qgc2hvdWxkU2hvd01lc3NhZ2UgPVxuICAgICAgICBzdWJtaXR0ZWRcbiAgICAgICAgfHwgZmllbGRNZXRhLnRvdWNoZWQ7XG4gICAgXG4gICAgaWYgKCFzaG91bGRTaG93TWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgZXJyb3JzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIE5vIGVycm9yXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGaWVsZCA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEZpZWxkQ29tcG9uZW50ID0gJ2lucHV0JywgYWNjZXNzb3IsIC4uLnByb3BzIH0gPSB7fSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IGJ1ZmZlciwgdXBkYXRlQnVmZmVyLCBtZXRhLCB1cGRhdGVNZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZm9ybU1ldGEgPSB7XG4gICAgICAgICAgICAgICAgc3VibWl0dGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSA6IHtcbiAgICAgICAgICAgICAgICB0b3VjaGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkRXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogZXZ0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC50YXJnZXQuaGFzT3duUHJvcGVydHkoJ2NoZWNrZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBldnQudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKS50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhVXBkYXRlZCA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU1ldGEobWV0YVVwZGF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy5jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIHZhbHVlIHR5cGU6ICR7dmFsdWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiB2YWx1ZSA9PiB7IHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpOyB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKHsgZm9ybU1ldGEsIGZpZWxkUHJvcHMsIGZpZWxkTWV0YSwgZmllbGRFcnJvciB9LCBhY3Rpb25zKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGaWVsZENvbXBvbmVudCB7Li4uZmllbGRQcm9wc30vPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY29uc3QgRmllbGRzID0ge1xuICAgIFRleHQ6IHByb3BzID0+XG4gICAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgeyh7IGJ1ZmZlciB9KSA9PlxuICAgICAgICAgICAgICAgIDxpbnB1dC8+IC8vIFRPRE9cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPixcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2UgPSAoeyBjaGlsZHJlbiwgY29tcG9uZW50OiBFcnJvckNvbXBvbmVudCA9IFJlYWN0LkZyYWdtZW50LCBhY2Nlc3NvciwgLi4ucHJvcHMgfSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZ2V0RXJyb3IoeyBtZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9LCBhY2Nlc3Nvcik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgPyBjaGlsZHJlbihlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckNvbXBvbmVudCB7Li4ucHJvcHN9PntlcnJvcn08L0Vycm9yQ29tcG9uZW50PjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXIgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICAvLyBwcm9wcyA6IHtcbiAgICAvLyAgIGJ1ZmZlciA6IGFueSxcbiAgICAvLyAgIG9uVXBkYXRlIDogRnVuY3Rpb24sXG4gICAgLy8gICB2YWxpZGF0ZSA/OiBGdW5jdGlvbixcbiAgICAvLyAgIG9uU3VibWl0IDogRnVuY3Rpb24sXG4gICAgLy8gfTtcbiAgICBcbiAgICBzdGF0ZSA9IHtcbiAgICAgICAgZXJyb3JzOiB7fSxcbiAgICAgICAgcHJpc3RpbmU6IHRydWUsXG4gICAgICAgIHN1Ym1pdHRlZDogZmFsc2UsXG4gICAgICAgIG1ldGE6IHt9LFxuICAgIH07XG4gICAgXG4gICAgdmFsaWRhdGUgPSBidWZmZXIgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5wcm9wcy52YWxpZGF0ZShidWZmZXIpIHx8IHt9O1xuICAgICAgICBcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9ycyB9KTtcbiAgICB9O1xuICAgIFxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICB9XG4gICAgXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGlmIChwcmV2UHJvcHMuYnVmZmVyICE9PSB0aGlzLnByb3BzLmJ1ZmZlcikge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh0aGlzLnByb3BzLmJ1ZmZlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGJ1ZmZlciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGZvcm1Qcm9wcyA9IHtcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcjogKGFjY2Vzc29yLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWZmZXIgPSB1cGRhdGVXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25VcGRhdGUodXBkYXRlZEJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUucHJpc3RpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHByaXN0aW5lOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRNZXRhID0+ICh7IC4uLihmaWVsZE1ldGEgfHwge30pLCB0b3VjaGVkOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHByaXN0aW5lOiB0aGlzLnN0YXRlLnByaXN0aW5lLFxuICAgICAgICAgICAgc3VibWl0dGVkOiB0aGlzLnN0YXRlLnN1Ym1pdHRlZCxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXJyb3JzOiB0aGlzLnN0YXRlLmVycm9ycyxcbiAgICAgICAgICAgIC8vIHVwZGF0ZUVycm9yOiAoYWNjZXNzb3IsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAvLyAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5lcnJvcnMsIGVycm9yKSB9KTtcbiAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIG1ldGE6IHRoaXMuc3RhdGUubWV0YSxcbiAgICAgICAgICAgIHVwZGF0ZU1ldGE6IG1ldGEgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHN1Ym1pdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBwcmlzdGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN0YXRlLmVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtmb3JtUHJvcHN9PlxuICAgICAgICAgICAgICAgIHt0eXBlb2YgdGhpcy5wcm9wcy5jaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJvcHMuY2hpbGRyZW4oZm9ybVByb3BzKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2l0aEZvcm0gPSBDb21wb25lbnQgPT4ge1xuICAgIGNvbnN0IFdpdGhGb3JtID0gcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIHVwZGF0ZU1ldGEgfSkgPT5cbiAgICAgICAgICAgICAgICA8Q29tcG9uZW50IHsuLi5wcm9wc30gYnVmZmVyPXtidWZmZXJ9IHVwZGF0ZUJ1ZmZlcj17dXBkYXRlQnVmZmVyfSB1cGRhdGVNZXRhPXt1cGRhdGVNZXRhfS8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG4gICAgXG4gICAgaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aEZvcm0sIENvbXBvbmVudCk7XG4gICAgXG4gICAgcmV0dXJuIFdpdGhGb3JtO1xufTtcbiJdfQ== |
+34
-24
@@ -77,10 +77,2 @@ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
| function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } | ||
| function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
| function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | ||
| function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
| function _templateObject4() { | ||
@@ -130,2 +122,10 @@ var data = _taggedTemplateLiteral(["Unknown accessor type ", ""]); | ||
| function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } | ||
| function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
| function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | ||
| function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
| import $msg from 'message-tag'; | ||
@@ -139,12 +139,22 @@ import hoistNonReactStatics from 'hoist-non-react-statics'; | ||
| throw new TypeError('TODO'); | ||
| } else if (Array.isArray(accessor)) { | ||
| if (accessor.length === 0) { | ||
| return true; | ||
| } | ||
| var _accessor = _toArray(accessor), | ||
| key = _accessor[0], | ||
| accessorRest = _accessor.slice(1); | ||
| if (_typeof(buffer) !== 'object' || buffer === null) { | ||
| return false; | ||
| } | ||
| if (!Object.prototype.hasOwnProperty.call(buffer, key)) { | ||
| return false; | ||
| } | ||
| return hasAccessor(accessorRest, buffer[key]); | ||
| } else if (typeof accessor === 'string') { | ||
| return accessor.split('.').reduce(function (buffer, key) { | ||
| if (_typeof(buffer) !== 'object' || buffer === null) { | ||
| return false; | ||
| } else if (!Object.prototype.hasOwnProperty.call(buffer, key)) { | ||
| return false; | ||
| } else { | ||
| return true; | ||
| } | ||
| }, buffer); | ||
| return hasAccessor(accessor.split('.'), buffer); | ||
| } else { | ||
@@ -179,5 +189,5 @@ throw new TypeError($msg(_templateObject(), accessor)); | ||
| } else if (Array.isArray(accessor)) { | ||
| var _accessor = _toArray(accessor), | ||
| key = _accessor[0], | ||
| path = _accessor.slice(1); | ||
| var _accessor2 = _toArray(accessor), | ||
| key = _accessor2[0], | ||
| path = _accessor2.slice(1); | ||
@@ -204,5 +214,5 @@ var bufferAsObject = _typeof(buffer) === 'object' && buffer !== null ? buffer : {}; | ||
| } else if (Array.isArray(accessor)) { | ||
| var _accessor2 = _toArray(accessor), | ||
| key = _accessor2[0], | ||
| path = _accessor2.slice(1); | ||
| var _accessor3 = _toArray(accessor), | ||
| key = _accessor3[0], | ||
| path = _accessor3.slice(1); | ||
@@ -498,2 +508,2 @@ if (_typeof(buffer) !== 'object' || buffer === null) { | ||
| }; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyIkbXNnIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJSZWFjdCIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsIlR5cGVFcnJvciIsInNwbGl0IiwicmVkdWNlIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2VsZWN0V2l0aEFjY2Vzc29yIiwic2V0V2l0aEFjY2Vzc29yIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJwYXRoIiwiYnVmZmVyQXNPYmplY3QiLCJsZW5ndGgiLCJ1cGRhdGVkVmFsdWUiLCJwcm9wIiwidXBkYXRlV2l0aEFjY2Vzc29yIiwiZ2V0RXJyb3IiLCJtZXRhIiwiZXJyb3JzIiwic3VibWl0dGVkIiwiZmllbGRNZXRhIiwidG91Y2hlZCIsInNob3VsZFNob3dNZXNzYWdlIiwiZSIsIkZpZWxkIiwiY2hpbGRyZW4iLCJjb21wb25lbnQiLCJGaWVsZENvbXBvbmVudCIsInByb3BzIiwidXBkYXRlQnVmZmVyIiwidXBkYXRlTWV0YSIsImZvcm1NZXRhIiwiZmllbGRFcnJvciIsImZpZWxkUHJvcHMiLCJvbkNoYW5nZSIsImV2dCIsInRhcmdldCIsImNoZWNrZWQiLCJvbkJsdXIiLCJtZXRhVXBkYXRlZCIsIlN0cmluZyIsImFjdGlvbnMiLCJ1cGRhdGUiLCJGaWVsZHMiLCJUZXh0IiwiRXJyb3JNZXNzYWdlIiwiRXJyb3JDb21wb25lbnQiLCJGcmFnbWVudCIsImVycm9yIiwiUHJvdmlkZXIiLCJwcmlzdGluZSIsInZhbGlkYXRlIiwic2V0U3RhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJmb3JtUHJvcHMiLCJ1cGRhdGVkQnVmZmVyIiwib25VcGRhdGUiLCJzdGF0ZSIsInN1Ym1pdCIsImtleXMiLCJvblN1Ym1pdCIsIlB1cmVDb21wb25lbnQiLCJ3aXRoRm9ybSIs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QixLQUFMLENBQVdILFFBSHJCLENBREo7QUFRSDtBQS9GTDs7QUFBQTtBQUFBLEVBQThCbEMsS0FBSyxDQUFDdUUsYUFBcEM7QUFrR0EsT0FBTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFBQyxTQUFTLEVBQUk7QUFDakMsTUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQXJDLEtBQUs7QUFBQSxXQUNsQixvQkFBQyxPQUFELENBQVMsUUFBVCxRQUNLO0FBQUEsVUFBR2hDLE1BQUgsU0FBR0EsTUFBSDtBQUFBLFVBQVdpQyxZQUFYLFNBQVdBLFlBQVg7QUFBQSxVQUF5QkMsVUFBekIsU0FBeUJBLFVBQXpCO0FBQUEsYUFDRyxvQkFBQyxTQUFELGVBQWVGLEtBQWY7QUFBc0IsUUFBQSxNQUFNLEVBQUVoQyxNQUE5QjtBQUFzQyxRQUFBLFlBQVksRUFBRWlDLFlBQXBEO0FBQWtFLFFBQUEsVUFBVSxFQUFFQztBQUE5RSxTQURIO0FBQUEsS0FETCxDQURrQjtBQUFBLEdBQXRCOztBQU9BeEMsRUFBQUEsb0JBQW9CLENBQUMyRSxRQUFELEVBQVdELFNBQVgsQ0FBcEI7QUFFQSxTQUFPQyxRQUFQO0FBQ0gsQ0FYTSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICRtc2cgZnJvbSAnbWVzc2FnZS10YWcnO1xuXG5pbXBvcnQgaG9pc3ROb25SZWFjdFN0YXRpY3MgZnJvbSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5cbmV4cG9ydCBjb25zdCBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCgpO1xuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gYnVmZmVyIGhhcyB0aGUgZ2l2ZW4gYWNjZXNzb3JcbmV4cG9ydCBjb25zdCBoYXNBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUT0RPJyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3Nvci5zcGxpdCgnLicpXG4gICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChidWZmZXIsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidWZmZXJcbiAgICAgICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFNlbGVjdCB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3Qgc2VsZWN0V2l0aEFjY2Vzc29yID0gKGFjY2Vzc29yLCBidWZmZXIpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3NvcihidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKVxuICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYnVmZmVyLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgIT09ICdvYmplY3QnIHx8IGJ1ZmZlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYENhbm5vdCBhY2Nlc3MgJHtrZXl9IG9uIG5vbi1vYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BNaXNzaW5nIGtleSAke2tleX0gb24gb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcltrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidWZmZXJcbiAgICAgICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFJldHVybiBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlciAod2hlcmUgdGhlIHByb3BlcnR5IG1heSBub3QgYWxyZWFkeSBleGlzdClcbmV4cG9ydCBjb25zdCBzZXRXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGJ1ZmZlckFzT2JqZWN0ID0gdHlwZW9mIGJ1ZmZlciA9PT0gJ29iamVjdCcgJiYgYnVmZmVyICE9PSBudWxsXG4gICAgICAgICAgICA/IGJ1ZmZlclxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJBc09iamVjdFtrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlckFzT2JqZWN0LCBba2V5XTogdXBkYXRlZFZhbHVlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlckFzT2JqZWN0LCBrZXkpXG4gICAgICAgICAgICAgICAgPyBidWZmZXJBc09iamVjdFtrZXldXG4gICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBleGlzdClcbmV4cG9ydCBjb25zdCB1cGRhdGVXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BDYW5ub3QgYWNjZXNzICR7a2V5fSBvbiBub24tb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgTWlzc2luZyBrZXkgJHtrZXl9IG9uIG9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHZhbHVlKGJ1ZmZlcltrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyLCBba2V5XTogdXBkYXRlV2l0aEFjY2Vzc29yKHBhdGgsIGJ1ZmZlcltrZXldLCB2YWx1ZSkgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRFcnJvciA9ICh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKSA9PiB7XG4gICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKVxuICAgICAgICA6IHsgdG91Y2hlZDogZmFsc2UgfTtcbiAgICBcbiAgICAvLyBPbmx5IHNob3cgdGhlIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHVzZXIgaGFzIGludGVyYWN0ZWQgd2l0aCB0aGUgZm9ybS9maWVsZCBzb21laG93XG4gICAgY29uc3Qgc2hvdWxkU2hvd01lc3NhZ2UgPVxuICAgICAgICBzdWJtaXR0ZWRcbiAgICAgICAgfHwgZmllbGRNZXRhLnRvdWNoZWQ7XG4gICAgXG4gICAgaWYgKCFzaG91bGRTaG93TWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgZXJyb3JzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIE5vIGVycm9yXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGaWVsZCA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEZpZWxkQ29tcG9uZW50ID0gJ2lucHV0JywgYWNjZXNzb3IsIC4uLnByb3BzIH0gPSB7fSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IGJ1ZmZlciwgdXBkYXRlQnVmZmVyLCBtZXRhLCB1cGRhdGVNZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZm9ybU1ldGEgPSB7XG4gICAgICAgICAgICAgICAgc3VibWl0dGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSA6IHtcbiAgICAgICAgICAgICAgICB0b3VjaGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkRXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogZXZ0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC50YXJnZXQuaGFzT3duUHJvcGVydHkoJ2NoZWNrZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBldnQudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKS50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhVXBkYXRlZCA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU1ldGEobWV0YVVwZGF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy5jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIHZhbHVlIHR5cGU6ICR7dmFsdWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiB2YWx1ZSA9PiB7IHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpOyB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKHsgZm9ybU1ldGEsIGZpZWxkUHJvcHMsIGZpZWxkTWV0YSwgZmllbGRFcnJvciB9LCBhY3Rpb25zKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGaWVsZENvbXBvbmVudCB7Li4uZmllbGRQcm9wc30vPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY29uc3QgRmllbGRzID0ge1xuICAgIFRleHQ6IHByb3BzID0+XG4gICAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgeyh7IGJ1ZmZlciB9KSA9PlxuICAgICAgICAgICAgICAgIDxpbnB1dC8+IC8vIFRPRE9cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPixcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2UgPSAoeyBjaGlsZHJlbiwgY29tcG9uZW50OiBFcnJvckNvbXBvbmVudCA9IFJlYWN0LkZyYWdtZW50LCBhY2Nlc3NvciwgLi4ucHJvcHMgfSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZ2V0RXJyb3IoeyBtZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9LCBhY2Nlc3Nvcik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgPyBjaGlsZHJlbihlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckNvbXBvbmVudCB7Li4ucHJvcHN9PntlcnJvcn08L0Vycm9yQ29tcG9uZW50PjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXIgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICAvLyBwcm9wcyA6IHtcbiAgICAvLyAgIGJ1ZmZlciA6IGFueSxcbiAgICAvLyAgIG9uVXBkYXRlIDogRnVuY3Rpb24sXG4gICAgLy8gICB2YWxpZGF0ZSA/OiBGdW5jdGlvbixcbiAgICAvLyAgIG9uU3VibWl0IDogRnVuY3Rpb24sXG4gICAgLy8gfTtcbiAgICBcbiAgICBzdGF0ZSA9IHtcbiAgICAgICAgZXJyb3JzOiB7fSxcbiAgICAgICAgcHJpc3RpbmU6IHRydWUsXG4gICAgICAgIHN1Ym1pdHRlZDogZmFsc2UsXG4gICAgICAgIG1ldGE6IHt9LFxuICAgIH07XG4gICAgXG4gICAgdmFsaWRhdGUgPSBidWZmZXIgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5wcm9wcy52YWxpZGF0ZShidWZmZXIpIHx8IHt9O1xuICAgICAgICBcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9ycyB9KTtcbiAgICB9O1xuICAgIFxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICB9XG4gICAgXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGlmIChwcmV2UHJvcHMuYnVmZmVyICE9PSB0aGlzLnByb3BzLmJ1ZmZlcikge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh0aGlzLnByb3BzLmJ1ZmZlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGJ1ZmZlciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGZvcm1Qcm9wcyA9IHtcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcjogKGFjY2Vzc29yLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWZmZXIgPSB1cGRhdGVXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25VcGRhdGUodXBkYXRlZEJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUucHJpc3RpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHByaXN0aW5lOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRNZXRhID0+ICh7IC4uLihmaWVsZE1ldGEgfHwge30pLCB0b3VjaGVkOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHByaXN0aW5lOiB0aGlzLnN0YXRlLnByaXN0aW5lLFxuICAgICAgICAgICAgc3VibWl0dGVkOiB0aGlzLnN0YXRlLnN1Ym1pdHRlZCxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXJyb3JzOiB0aGlzLnN0YXRlLmVycm9ycyxcbiAgICAgICAgICAgIC8vIHVwZGF0ZUVycm9yOiAoYWNjZXNzb3IsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAvLyAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5lcnJvcnMsIGVycm9yKSB9KTtcbiAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIG1ldGE6IHRoaXMuc3RhdGUubWV0YSxcbiAgICAgICAgICAgIHVwZGF0ZU1ldGE6IG1ldGEgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHN1Ym1pdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBwcmlzdGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN0YXRlLmVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtmb3JtUHJvcHN9PlxuICAgICAgICAgICAgICAgIHt0eXBlb2YgdGhpcy5wcm9wcy5jaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJvcHMuY2hpbGRyZW4oZm9ybVByb3BzKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2l0aEZvcm0gPSBDb21wb25lbnQgPT4ge1xuICAgIGNvbnN0IFdpdGhGb3JtID0gcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIHVwZGF0ZU1ldGEgfSkgPT5cbiAgICAgICAgICAgICAgICA8Q29tcG9uZW50IHsuLi5wcm9wc30gYnVmZmVyPXtidWZmZXJ9IHVwZGF0ZUJ1ZmZlcj17dXBkYXRlQnVmZmVyfSB1cGRhdGVNZXRhPXt1cGRhdGVNZXRhfS8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG4gICAgXG4gICAgaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aEZvcm0sIENvbXBvbmVudCk7XG4gICAgXG4gICAgcmV0dXJuIFdpdGhGb3JtO1xufTtcbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyIkbXNnIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJSZWFjdCIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsIlR5cGVFcnJvciIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImtleSIsImFjY2Vzc29yUmVzdCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInNwbGl0Iiwic2VsZWN0V2l0aEFjY2Vzc29yIiwicmVkdWNlIiwic2V0V2l0aEFjY2Vzc29yIiwidmFsdWUiLCJwYXRoIiwiYnVmZmVyQXNPYmplY3QiLCJ1cGRhdGVkVmFsdWUiLCJwcm9wIiwidXBkYXRlV2l0aEFjY2Vzc29yIiwiZ2V0RXJyb3IiLCJtZXRhIiwiZXJyb3JzIiwic3VibWl0dGVkIiwiZmllbGRNZXRhIiwidG91Y2hlZCIsInNob3VsZFNob3dNZXNzYWdlIiwiZSIsIkZpZWxkIiwiY2hpbGRyZW4iLCJjb21wb25lbnQiLCJGaWVsZENvbXBvbmVudCIsInByb3BzIiwidXBkYXRlQnVmZmVyIiwidXBkYXRlTWV0YSIsImZvcm1NZXRhIiwiZmllbGRFcnJvciIsImZpZWxkUHJvcHMiLCJvbkNoYW5nZSIsImV2dCIsInRhcmdldCIsImNoZWNrZWQiLCJvbkJsdXIiLCJtZXRhVXBkYXRlZCIsIlN0cmluZyIsImFjdGlvbnMiLCJ1cGRhdGUiLCJGaWVsZHMiLCJUZXh0IiwiRXJyb3JNZXNzYWdlIiwiRXJyb3JDb21wb25lbnQiLCJGcmFnbWVudCIsImVycm9yIiwiUHJvdmlkZXIiLCJwcmlzdGluZSIsInZhbGlkYXRlIiwic2V0U3RhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJmb3JtUHJvcHMiLCJ1cGRhdGVkQnVmZmVyIiwib25VcGRhdGUiLCJzdGF0ZSIsInN1Ym1pdCIsImtleXMiLCJvblN1Ym1pdCIsIlB1cmVDb21wb25l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QVdpQyxRQUFYO0FBQ0gsV0FURDtBQVVIO0FBOUNhLE9BQWxCO0FBaURBLGFBQ0ksb0JBQUMsT0FBRCxDQUFTLFFBQVQ7QUFBa0IsUUFBQSxLQUFLLEVBQUVOO0FBQXpCLFNBQ0ssT0FBTyxLQUFLM0IsS0FBTCxDQUFXSCxRQUFsQixLQUErQixVQUEvQixHQUNLLEtBQUtHLEtBQUwsQ0FBV0gsUUFBWCxDQUFvQjhCLFNBQXBCLENBREwsR0FFSyxLQUFLM0IsS0FBTCxDQUFXSCxRQUhyQixDQURKO0FBUUg7QUEvRkw7O0FBQUE7QUFBQSxFQUE4Qm5DLEtBQUssQ0FBQ3dFLGFBQXBDO0FBa0dBLE9BQU8sSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQUMsU0FBUyxFQUFJO0FBQ2pDLE1BQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUFyQyxLQUFLO0FBQUEsV0FDbEIsb0JBQUMsT0FBRCxDQUFTLFFBQVQsUUFDSztBQUFBLFVBQUdqQyxNQUFILFNBQUdBLE1BQUg7QUFBQSxVQUFXa0MsWUFBWCxTQUFXQSxZQUFYO0FBQUEsVUFBeUJDLFVBQXpCLFNBQXlCQSxVQUF6QjtBQUFBLGFBQ0csb0JBQUMsU0FBRCxlQUFlRixLQUFmO0FBQXNCLFFBQUEsTUFBTSxFQUFFakMsTUFBOUI7QUFBc0MsUUFBQSxZQUFZLEVBQUVrQyxZQUFwRDtBQUFrRSxRQUFBLFVBQVUsRUFBRUM7QUFBOUUsU0FESDtBQUFBLEtBREwsQ0FEa0I7QUFBQSxHQUF0Qjs7QUFPQXpDLEVBQUFBLG9CQUFvQixDQUFDNEUsUUFBRCxFQUFXRCxTQUFYLENBQXBCO0FBRUEsU0FBT0MsUUFBUDtBQUNILENBWE0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCAkbXNnIGZyb20gJ21lc3NhZ2UtdGFnJztcblxuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuXG5leHBvcnQgY29uc3QgQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoKTtcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGJ1ZmZlciBoYXMgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3QgaGFzQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlcikgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVE9ETycpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgaWYgKGFjY2Vzc29yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW2tleSwgLi4uYWNjZXNzb3JSZXN0XSA9IGFjY2Vzc29yO1xuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIHJldHVybiBoYXNBY2Nlc3NvcihhY2Nlc3NvclJlc3QsIGJ1ZmZlcltrZXldKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGhhc0FjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFNlbGVjdCB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3Qgc2VsZWN0V2l0aEFjY2Vzc29yID0gKGFjY2Vzc29yLCBidWZmZXIpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3NvcihidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3Iuc3BsaXQoJy4nKVxuICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAoYnVmZmVyLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgIT09ICdvYmplY3QnIHx8IGJ1ZmZlciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYENhbm5vdCBhY2Nlc3MgJHtrZXl9IG9uIG5vbi1vYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXIsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BNaXNzaW5nIGtleSAke2tleX0gb24gb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcltrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidWZmZXJcbiAgICAgICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gYWNjZXNzb3IgdHlwZSAke2FjY2Vzc29yfWApO1xuICAgIH1cbn07XG5cbi8vIFJldHVybiBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlciAod2hlcmUgdGhlIHByb3BlcnR5IG1heSBub3QgYWxyZWFkeSBleGlzdClcbmV4cG9ydCBjb25zdCBzZXRXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGJ1ZmZlckFzT2JqZWN0ID0gdHlwZW9mIGJ1ZmZlciA9PT0gJ29iamVjdCcgJiYgYnVmZmVyICE9PSBudWxsXG4gICAgICAgICAgICA/IGJ1ZmZlclxuICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJBc09iamVjdFtrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlckFzT2JqZWN0LCBba2V5XTogdXBkYXRlZFZhbHVlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlckFzT2JqZWN0LCBrZXkpXG4gICAgICAgICAgICAgICAgPyBidWZmZXJBc09iamVjdFtrZXldXG4gICAgICAgICAgICAgICAgOiB7fTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBleGlzdClcbmV4cG9ydCBjb25zdCB1cGRhdGVXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RPRE8nKTsgLy8gSWRlYTogdXNlIHsgaGFzLCBnZXQsIHNldCB9IG9iamVjdCBpbnN0ZWFkP1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLnNwbGl0KCcuJyksIGJ1ZmZlciwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhY2Nlc3NvcikpIHtcbiAgICAgICAgY29uc3QgW2tleSwgLi4ucGF0aF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BDYW5ub3QgYWNjZXNzICR7a2V5fSBvbiBub24tb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgTWlzc2luZyBrZXkgJHtrZXl9IG9uIG9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHZhbHVlKGJ1ZmZlcltrZXldKVxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyLCBba2V5XTogdXBkYXRlV2l0aEFjY2Vzc29yKHBhdGgsIGJ1ZmZlcltrZXldLCB2YWx1ZSkgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRFcnJvciA9ICh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKSA9PiB7XG4gICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKVxuICAgICAgICA6IHsgdG91Y2hlZDogZmFsc2UgfTtcbiAgICBcbiAgICAvLyBPbmx5IHNob3cgdGhlIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHVzZXIgaGFzIGludGVyYWN0ZWQgd2l0aCB0aGUgZm9ybS9maWVsZCBzb21laG93XG4gICAgY29uc3Qgc2hvdWxkU2hvd01lc3NhZ2UgPVxuICAgICAgICBzdWJtaXR0ZWRcbiAgICAgICAgfHwgZmllbGRNZXRhLnRvdWNoZWQ7XG4gICAgXG4gICAgaWYgKCFzaG91bGRTaG93TWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgZXJyb3JzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIE5vIGVycm9yXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGaWVsZCA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEZpZWxkQ29tcG9uZW50ID0gJ2lucHV0JywgYWNjZXNzb3IsIC4uLnByb3BzIH0gPSB7fSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IGJ1ZmZlciwgdXBkYXRlQnVmZmVyLCBtZXRhLCB1cGRhdGVNZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNlbGVjdFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZm9ybU1ldGEgPSB7XG4gICAgICAgICAgICAgICAgc3VibWl0dGVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRNZXRhID0gaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpID8gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSA6IHtcbiAgICAgICAgICAgICAgICB0b3VjaGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkRXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogZXZ0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gZXZ0LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC50YXJnZXQuaGFzT3duUHJvcGVydHkoJ2NoZWNrZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBldnQudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb25CbHVyOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhKS50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhVXBkYXRlZCA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU1ldGEobWV0YVVwZGF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy52YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgZmllbGRQcm9wcy5jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIHZhbHVlIHR5cGU6ICR7dmFsdWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiB2YWx1ZSA9PiB7IHVwZGF0ZUJ1ZmZlcihhY2Nlc3NvciwgdmFsdWUpOyB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKHsgZm9ybU1ldGEsIGZpZWxkUHJvcHMsIGZpZWxkTWV0YSwgZmllbGRFcnJvciB9LCBhY3Rpb25zKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGaWVsZENvbXBvbmVudCB7Li4uZmllbGRQcm9wc30vPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY29uc3QgRmllbGRzID0ge1xuICAgIFRleHQ6IHByb3BzID0+XG4gICAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgeyh7IGJ1ZmZlciB9KSA9PlxuICAgICAgICAgICAgICAgIDxpbnB1dC8+IC8vIFRPRE9cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPixcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2UgPSAoeyBjaGlsZHJlbiwgY29tcG9uZW50OiBFcnJvckNvbXBvbmVudCA9IFJlYWN0LkZyYWdtZW50LCBhY2Nlc3NvciwgLi4ucHJvcHMgfSkgPT5cbiAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyh7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZ2V0RXJyb3IoeyBtZXRhLCBlcnJvcnMsIHN1Ym1pdHRlZCB9LCBhY2Nlc3Nvcik7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgPyBjaGlsZHJlbihlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckNvbXBvbmVudCB7Li4ucHJvcHN9PntlcnJvcn08L0Vycm9yQ29tcG9uZW50PjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICA8L0NvbnRleHQuQ29uc3VtZXI+O1xuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXIgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICAvLyBwcm9wcyA6IHtcbiAgICAvLyAgIGJ1ZmZlciA6IGFueSxcbiAgICAvLyAgIG9uVXBkYXRlIDogRnVuY3Rpb24sXG4gICAgLy8gICB2YWxpZGF0ZSA/OiBGdW5jdGlvbixcbiAgICAvLyAgIG9uU3VibWl0IDogRnVuY3Rpb24sXG4gICAgLy8gfTtcbiAgICBcbiAgICBzdGF0ZSA9IHtcbiAgICAgICAgZXJyb3JzOiB7fSxcbiAgICAgICAgcHJpc3RpbmU6IHRydWUsXG4gICAgICAgIHN1Ym1pdHRlZDogZmFsc2UsXG4gICAgICAgIG1ldGE6IHt9LFxuICAgIH07XG4gICAgXG4gICAgdmFsaWRhdGUgPSBidWZmZXIgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5wcm9wcy52YWxpZGF0ZShidWZmZXIpIHx8IHt9O1xuICAgICAgICBcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9ycyB9KTtcbiAgICB9O1xuICAgIFxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICB9XG4gICAgXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGlmIChwcmV2UHJvcHMuYnVmZmVyICE9PSB0aGlzLnByb3BzLmJ1ZmZlcikge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh0aGlzLnByb3BzLmJ1ZmZlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGJ1ZmZlciB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGZvcm1Qcm9wcyA9IHtcbiAgICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICAgIHVwZGF0ZUJ1ZmZlcjogKGFjY2Vzc29yLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCdWZmZXIgPSB1cGRhdGVXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25VcGRhdGUodXBkYXRlZEJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUucHJpc3RpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHByaXN0aW5lOiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhKSB8fCAhc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRNZXRhID0+ICh7IC4uLihmaWVsZE1ldGEgfHwge30pLCB0b3VjaGVkOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHByaXN0aW5lOiB0aGlzLnN0YXRlLnByaXN0aW5lLFxuICAgICAgICAgICAgc3VibWl0dGVkOiB0aGlzLnN0YXRlLnN1Ym1pdHRlZCxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXJyb3JzOiB0aGlzLnN0YXRlLmVycm9ycyxcbiAgICAgICAgICAgIC8vIHVwZGF0ZUVycm9yOiAoYWNjZXNzb3IsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAvLyAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgdGhpcy5zdGF0ZS5lcnJvcnMsIGVycm9yKSB9KTtcbiAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIG1ldGE6IHRoaXMuc3RhdGUubWV0YSxcbiAgICAgICAgICAgIHVwZGF0ZU1ldGE6IG1ldGEgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWV0YSB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHN1Ym1pdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICBwcmlzdGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnN0YXRlLmVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtmb3JtUHJvcHN9PlxuICAgICAgICAgICAgICAgIHt0eXBlb2YgdGhpcy5wcm9wcy5jaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJvcHMuY2hpbGRyZW4oZm9ybVByb3BzKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2l0aEZvcm0gPSBDb21wb25lbnQgPT4ge1xuICAgIGNvbnN0IFdpdGhGb3JtID0gcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIHVwZGF0ZU1ldGEgfSkgPT5cbiAgICAgICAgICAgICAgICA8Q29tcG9uZW50IHsuLi5wcm9wc30gYnVmZmVyPXtidWZmZXJ9IHVwZGF0ZUJ1ZmZlcj17dXBkYXRlQnVmZmVyfSB1cGRhdGVNZXRhPXt1cGRhdGVNZXRhfS8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG4gICAgXG4gICAgaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aEZvcm0sIENvbXBvbmVudCk7XG4gICAgXG4gICAgcmV0dXJuIFdpdGhGb3JtO1xufTtcbiJdfQ== |
+1
-1
| { | ||
| "name": "@mkrause/react-form", | ||
| "version": "0.0.5", | ||
| "version": "0.0.6", | ||
| "description": "React form component", | ||
@@ -5,0 +5,0 @@ "author": "mkrause", |
+9
-13
@@ -14,16 +14,12 @@ | ||
| throw new TypeError('TODO'); | ||
| } else if (Array.isArray(accessor)) { | ||
| if (accessor.length === 0) { | ||
| return true; | ||
| } | ||
| const [key, ...accessorRest] = accessor; | ||
| if (typeof buffer !== 'object' || buffer === null) { return false; } | ||
| if (!Object.prototype.hasOwnProperty.call(buffer, key)) { return false; } | ||
| return hasAccessor(accessorRest, buffer[key]); | ||
| } else if (typeof accessor === 'string') { | ||
| return accessor.split('.') | ||
| .reduce( | ||
| (buffer, key) => { | ||
| if (typeof buffer !== 'object' || buffer === null) { | ||
| return false; | ||
| } else if (!Object.prototype.hasOwnProperty.call(buffer, key)) { | ||
| return false; | ||
| } else { | ||
| return true; | ||
| } | ||
| }, | ||
| buffer | ||
| ); | ||
| return hasAccessor(accessor.split('.'), buffer); | ||
| } else { | ||
@@ -30,0 +26,0 @@ throw new TypeError($msg`Unknown accessor type ${accessor}`); |
132174
0.6%1124
0.72%