@mkrause/react-form
Advanced tools
+5
-3
@@ -229,3 +229,4 @@ "use strict"; | ||
| if (typeof accessor === 'function') { | ||
| return setWithAccessor(accessor(buffer), buffer, value); | ||
| // Idea: use { has, get, set } object instead? | ||
| throw new TypeError('Cannot update buffer given function accessor'); | ||
| } else if (typeof accessor === 'string') { | ||
@@ -276,3 +277,4 @@ return setWithAccessor(accessor.split('.'), buffer, value); | ||
| if (typeof accessor === 'function') { | ||
| return updateWithAccessor(accessor(buffer), buffer, value); | ||
| // Idea: use { has, get, set } object instead? | ||
| throw new TypeError('Cannot update buffer given function accessor'); | ||
| } else if (typeof accessor === 'string') { | ||
@@ -606,2 +608,2 @@ return updateWithAccessor(accessor.split('.'), buffer, value); | ||
| exports.withForm = withForm; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsImFjYyIsImUiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJrZXkiLCJhY2Nlc3NvclJlc3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzcGxpdCIsIlR5cGVFcnJvciIsIiRtc2ciLCJzZWxlY3RXaXRoQWNjZXNzb3IiLCJyZWR1Y2UiLCJzZXRXaXRoQWNjZXNzb3IiLCJ2YWx1ZSIsInBhdGgiLCJidWZmZXJBc09iamVjdCIsInVwZGF0ZWRWYWx1ZSIsImJ1ZmZlckFzQXJyYXkiLCJzcGxpY2UiLCJwcm9wIiwidXBkYXRlV2l0aEFjY2Vzc29yIiwiZ2V0RXJyb3IiLCJtZXRhIiwiZXJyb3JzIiwic3VibWl0dGVkIiwiZmllbGRNZXRhIiwidG91Y2hlZCIsInNob3VsZFNob3dNZXNzYWdlIiwiRmllbGQiLCJjaGlsZHJlbiIsImNvbXBvbmVudCIsIkZpZWxkQ29tcG9uZW50IiwicHJvcHMiLCJ1cGRhdGVCdWZmZXIiLCJ1cGRhdGVNZXRhIiwiZm9ybU1ldGEiLCJmaWVsZEVycm9yIiwiZmllbGRQcm9wcyIsIm9uQ2hhbmdlIiwiZXZ0IiwidGFyZ2V0IiwiY2hlY2tlZCIsIm9uQmx1ciIsIm1ldGFVcGRhdGVkIiwiU3RyaW5nIiwiYWN0aW9ucyIsInVwZGF0ZSIsIkZpZWxkcyIsIlRleHQiLCJFcnJvck1lc3NhZ2UiLCJFcnJvckNvbXBvbmVudCIsIkZyYWdtZW50IiwiZXJyb3IiLCJQcm92aWRlciIsInByaXN0aW5lIiwidmFsaWRhdGUiLCJzZXRTdGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsImZvcm1Qcm9wcyIsInVwZGF0ZWRCdWZmZXIiLCJvblVwZGF0ZSIsInN0YXRlIiwic3VibWl0Iiwia2V5cyIsIm9uU3VibWl0IiwiUHVy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QUNIOztBQUVELFlBQUEsTUFBSSxDQUFDZ0MsS0FBTCxDQUFXaUMsUUFBWDtBQUNILFdBVEQ7QUFVSDtBQTlDYSxPQUFsQjtBQWlEQSwwQkFDSSxvQkFBQyxPQUFELENBQVMsUUFBVDtBQUFrQixRQUFBLEtBQUssRUFBRU47QUFBekIsU0FDSyxPQUFPLEtBQUszQixLQUFMLENBQVdILFFBQWxCLEtBQStCLFVBQS9CLEdBQ0ssS0FBS0csS0FBTCxDQUFXSCxRQUFYLENBQW9COEIsU0FBcEIsQ0FETCxHQUVLLEtBQUszQixLQUFMLENBQVdILFFBSHJCLENBREo7QUFRSDs7OztFQS9GeUJ0QyxLQUFLLENBQUMyRSxhOzs7O0FBa0c3QixJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFBQyxTQUFTLEVBQUk7QUFDakMsTUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQXJDLEtBQUs7QUFBQSx3QkFDbEIsb0JBQUMsT0FBRCxDQUFTLFFBQVQsUUFDSztBQUFBLFVBQUdyQyxNQUFILFNBQUdBLE1BQUg7QUFBQSxVQUFXc0MsWUFBWCxTQUFXQSxZQUFYO0FBQUEsVUFBeUJDLFVBQXpCLFNBQXlCQSxVQUF6QjtBQUFBLDBCQUNHLG9CQUFDLFNBQUQsZUFBZUYsS0FBZjtBQUFzQixRQUFBLE1BQU0sRUFBRXJDLE1BQTlCO0FBQXNDLFFBQUEsWUFBWSxFQUFFc0MsWUFBcEQ7QUFBa0UsUUFBQSxVQUFVLEVBQUVDO0FBQTlFLFNBREg7QUFBQSxLQURMLENBRGtCO0FBQUEsR0FBdEI7O0FBT0EscUNBQXFCbUMsUUFBckIsRUFBK0JELFNBQS9CO0FBRUEsU0FBT0MsUUFBUDtBQUNILENBWE0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCAkbXNnIGZyb20gJ21lc3NhZ2UtdGFnJztcblxuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuXG5leHBvcnQgY29uc3QgQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoKTtcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGJ1ZmZlciBoYXMgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3QgaGFzQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlcikgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbGV0IGFjYztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFjYyA9IGFjY2Vzc29yKGJ1ZmZlcik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFjY2Vzc29yKSkge1xuICAgICAgICBpZiAoYWNjZXNzb3IubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBba2V5LCAuLi5hY2Nlc3NvclJlc3RdID0gYWNjZXNzb3I7XG4gICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIGhhc0FjY2Vzc29yKGFjY2Vzc29yUmVzdCwgYnVmZmVyW2tleV0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gaGFzQWNjZXNzb3IoYWNjZXNzb3Iuc3BsaXQoJy4nKSwgYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gU2VsZWN0IHRoZSB2YWx1ZSBhdCB0aGUgZ2l2ZW4gYWNjZXNzb3JcbmV4cG9ydCBjb25zdCBzZWxlY3RXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlcikgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc29yKGJ1ZmZlcik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3Nvci5zcGxpdCgnLicpXG4gICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChidWZmZXIsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgQ2Fubm90IGFjY2VzcyAke2tleX0gb24gbm9uLW9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYE1pc3Npbmcga2V5ICR7a2V5fSBvbiBvYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1ZmZlclxuICAgICAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgbWF5IG5vdCBhbHJlYWR5IGV4aXN0KVxuZXhwb3J0IGNvbnN0IHNldFdpdGhBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvcihidWZmZXIpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHNldFdpdGhBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnBhdGhdID0gYWNjZXNzb3I7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBidWZmZXJBc09iamVjdCA9IHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmIGJ1ZmZlciAhPT0gbnVsbFxuICAgICAgICAgICAgPyBidWZmZXJcbiAgICAgICAgICAgIDoge307XG4gICAgICAgIFxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gdmFsdWUoYnVmZmVyQXNPYmplY3Rba2V5XSlcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXJBc09iamVjdCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmZXJBc0FycmF5ID0gWy4uLmJ1ZmZlckFzT2JqZWN0XTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCB1cGRhdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJBc0FycmF5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5idWZmZXJBc09iamVjdCwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXJBc09iamVjdCwga2V5KVxuICAgICAgICAgICAgICAgID8gYnVmZmVyQXNPYmplY3Rba2V5XVxuICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmZlckFzT2JqZWN0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlckFzQXJyYXkgPSBbLi4uYnVmZmVyQXNPYmplY3RdOyAvLyBDb3B5IHNvIHdlIGNhbiBtdXRhdGVcbiAgICAgICAgICAgICAgICBidWZmZXJBc0FycmF5LnNwbGljZShrZXksIDEsIHNldFdpdGhBY2Nlc3NvcihwYXRoLCBwcm9wLCB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJBc0FycmF5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5idWZmZXJBc09iamVjdCwgW2tleV06IHNldFdpdGhBY2Nlc3NvcihwYXRoLCBwcm9wLCB2YWx1ZSkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm4gYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBnaXZlbiBidWZmZXIgKHdoZXJlIHRoZSBwcm9wZXJ0eSBpcyBhc3N1bWVkIHRvIGV4aXN0KVxuZXhwb3J0IGNvbnN0IHVwZGF0ZVdpdGhBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvcihidWZmZXIpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnBhdGhdID0gYWNjZXNzb3I7XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgQ2Fubm90IGFjY2VzcyAke2tleX0gb24gbm9uLW9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYE1pc3Npbmcga2V5ICR7a2V5fSBvbiBvYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJba2V5XSlcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyQXNBcnJheSA9IFsuLi5idWZmZXJdOyAvLyBDb3B5IHNvIHdlIGNhbiBtdXRhdGVcbiAgICAgICAgICAgICAgICBidWZmZXJBc0FycmF5LnNwbGljZShrZXksIDEsIHVwZGF0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlckFzQXJyYXkgPSBbLi4uYnVmZmVyXTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCB1cGRhdGVXaXRoQWNjZXNzb3IocGF0aCwgYnVmZmVyW2tleV0sIHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZVdpdGhBY2Nlc3NvcihwYXRoLCBidWZmZXJba2V5XSwgdmFsdWUpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEVycm9yID0gKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpID0+IHtcbiAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSlcbiAgICAgICAgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgIDogeyB0b3VjaGVkOiBmYWxzZSB9O1xuICAgIFxuICAgIC8vIE9ubHkgc2hvdyB0aGUgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIHRoZSBmb3JtL2ZpZWxkIHNvbWVob3dcbiAgICBjb25zdCBzaG91bGRTaG93TWVzc2FnZSA9XG4gICAgICAgIHN1Ym1pdHRlZFxuICAgICAgICB8fCBmaWVsZE1ldGEudG91Y2hlZDtcbiAgICBcbiAgICBpZiAoIXNob3VsZFNob3dNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBlcnJvcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gTm8gZXJyb3JcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZpZWxkID0gKHsgY2hpbGRyZW4sIGNvbXBvbmVudDogRmllbGRDb21wb25lbnQgPSAnaW5wdXQnLCBhY2Nlc3NvciwgLi4ucHJvcHMgfSA9IHt9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIG1ldGEsIHVwZGF0ZU1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBidWZmZXIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmb3JtTWV0YSA9IHtcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSkgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIDoge1xuICAgICAgICAgICAgICAgIHRvdWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRFcnJvciA9IGdldEVycm9yKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZFByb3BzID0ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LnRhcmdldC5oYXNPd25Qcm9wZXJ0eSgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV2dC50YXJnZXQuY2hlY2tlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbkJsdXI6IGV2dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldGFVcGRhdGVkID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTWV0YSA9PiAoeyAuLi4oZmllbGRNZXRhIHx8IHt9KSwgdG91Y2hlZDogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTWV0YShtZXRhVXBkYXRlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gdmFsdWUgdHlwZTogJHt2YWx1ZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IHZhbHVlID0+IHsgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7IH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gY2hpbGRyZW4oeyBmb3JtTWV0YSwgZmllbGRQcm9wcywgZmllbGRNZXRhLCBmaWVsZEVycm9yIH0sIGFjdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZpZWxkQ29tcG9uZW50IHsuLi5maWVsZFByb3BzfS8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjb25zdCBGaWVsZHMgPSB7XG4gICAgVGV4dDogcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyIH0pID0+XG4gICAgICAgICAgICAgICAgPGlucHV0Lz4gLy8gVE9ET1xuICAgICAgICAgICAgfVxuICAgICAgICA8L0NvbnRleHQuQ29uc3VtZXI+LFxufTtcblxuZXhwb3J0IGNvbnN0IEVycm9yTWVzc2FnZSA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEVycm9yQ29tcG9uZW50ID0gUmVhY3QuRnJhZ21lbnQsIGFjY2Vzc29yLCAuLi5wcm9wcyB9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEVycm9yQ29tcG9uZW50IHsuLi5wcm9wc30+e2Vycm9yfTwvRXJyb3JDb21wb25lbnQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlciBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIC8vIHByb3BzIDoge1xuICAgIC8vICAgYnVmZmVyIDogYW55LFxuICAgIC8vICAgb25VcGRhdGUgOiBGdW5jdGlvbixcbiAgICAvLyAgIHZhbGlkYXRlID86IEZ1bmN0aW9uLFxuICAgIC8vICAgb25TdWJtaXQgOiBGdW5jdGlvbixcbiAgICAvLyB9O1xuICAgIFxuICAgIHN0YXRlID0ge1xuICAgICAgICBlcnJvcnM6IHt9LFxuICAgICAgICBwcmlzdGluZTogdHJ1ZSxcbiAgICAgICAgc3VibWl0dGVkOiBmYWxzZSxcbiAgICAgICAgbWV0YToge30sXG4gICAgfTtcbiAgICBcbiAgICB2YWxpZGF0ZSA9IGJ1ZmZlciA9PiB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLnByb3BzLnZhbGlkYXRlKGJ1ZmZlcikgfHwge307XG4gICAgICAgIFxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JzIH0pO1xuICAgIH07XG4gICAgXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUodGhpcy5wcm9wcy5idWZmZXIpO1xuICAgIH1cbiAgICBcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgaWYgKHByZXZQcm9wcy5idWZmZXIgIT09IHRoaXMucHJvcHMuYnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgYnVmZmVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZm9ybVByb3BzID0ge1xuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgdXBkYXRlQnVmZmVyOiAoYWNjZXNzb3IsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEJ1ZmZlciA9IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5wcmlzdGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgcHJpc3RpbmU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIHRoaXMuc3RhdGUubWV0YSkudG91Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHVwZGF0ZWRCdWZmZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcHJpc3RpbmU6IHRoaXMuc3RhdGUucHJpc3RpbmUsXG4gICAgICAgICAgICBzdWJtaXR0ZWQ6IHRoaXMuc3RhdGUuc3VibWl0dGVkLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICBlcnJvcnM6IHRoaXMuc3RhdGUuZXJyb3JzLFxuICAgICAgICAgICAgLy8gdXBkYXRlRXJyb3I6IChhY2Nlc3NvciwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgIC8vICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yczogdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLmVycm9ycywgZXJyb3IpIH0pO1xuICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbWV0YTogdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgdXBkYXRlTWV0YTogbWV0YSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc3VibWl0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHByaXN0aW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc3RhdGUuZXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25TdWJtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2Zvcm1Qcm9wc30+XG4gICAgICAgICAgICAgICAge3R5cGVvZiB0aGlzLnByb3BzLmNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5jaGlsZHJlbihmb3JtUHJvcHMpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5jaGlsZHJlblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoRm9ybSA9IENvbXBvbmVudCA9PiB7XG4gICAgY29uc3QgV2l0aEZvcm0gPSBwcm9wcyA9PlxuICAgICAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgIHsoeyBidWZmZXIsIHVwZGF0ZUJ1ZmZlciwgdXBkYXRlTWV0YSB9KSA9PlxuICAgICAgICAgICAgICAgIDxDb21wb25lbnQgey4uLnByb3BzfSBidWZmZXI9e2J1ZmZlcn0gdXBkYXRlQnVmZmVyPXt1cGRhdGVCdWZmZXJ9IHVwZGF0ZU1ldGE9e3VwZGF0ZU1ldGF9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPjtcbiAgICBcbiAgICBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoRm9ybSwgQ29tcG9uZW50KTtcbiAgICBcbiAgICByZXR1cm4gV2l0aEZvcm07XG59O1xuIl19 | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsImFjYyIsImUiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJrZXkiLCJhY2Nlc3NvclJlc3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzcGxpdCIsIlR5cGVFcnJvciIsIiRtc2ciLCJzZWxlY3RXaXRoQWNjZXNzb3IiLCJyZWR1Y2UiLCJzZXRXaXRoQWNjZXNzb3IiLCJ2YWx1ZSIsInBhdGgiLCJidWZmZXJBc09iamVjdCIsInVwZGF0ZWRWYWx1ZSIsImJ1ZmZlckFzQXJyYXkiLCJzcGxpY2UiLCJwcm9wIiwidXBkYXRlV2l0aEFjY2Vzc29yIiwiZ2V0RXJyb3IiLCJtZXRhIiwiZXJyb3JzIiwic3VibWl0dGVkIiwiZmllbGRNZXRhIiwidG91Y2hlZCIsInNob3VsZFNob3dNZXNzYWdlIiwiRmllbGQiLCJjaGlsZHJlbiIsImNvbXBvbmVudCIsIkZpZWxkQ29tcG9uZW50IiwicHJvcHMiLCJ1cGRhdGVCdWZmZXIiLCJ1cGRhdGVNZXRhIiwiZm9ybU1ldGEiLCJmaWVsZEVycm9yIiwiZmllbGRQcm9wcyIsIm9uQ2hhbmdlIiwiZXZ0IiwidGFyZ2V0IiwiY2hlY2tlZCIsIm9uQmx1ciIsIm1ldGFVcGRhdGVkIiwiU3RyaW5nIiwiYWN0aW9ucyIsInVwZGF0ZSIsIkZpZWxkcyIsIlRleHQiLCJFcnJvck1lc3NhZ2UiLCJFcnJvckNvbXBvbmVudCIsIkZyYWdtZW50IiwiZXJyb3IiLCJQcm92aWRlciIsInByaXN0aW5lIiwidmFsaWRhdGUiLCJzZXRTdGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsImZvcm1Qcm9wcyIsInVwZGF0ZWRCdWZmZXIiLCJvblVwZGF0ZSIsInN0YXRlIiwic3VibWl0Iiwia2V5cyIsIm9uU3VibWl0IiwiUHVy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LDBCQUNJLG9CQUFDLE9BQUQsQ0FBUyxRQUFUO0FBQWtCLFFBQUEsS0FBSyxFQUFFTjtBQUF6QixTQUNLLE9BQU8sS0FBSzNCLEtBQUwsQ0FBV0gsUUFBbEIsS0FBK0IsVUFBL0IsR0FDSyxLQUFLRyxLQUFMLENBQVdILFFBQVgsQ0FBb0I4QixTQUFwQixDQURMLEdBRUssS0FBSzNCLEtBQUwsQ0FBV0gsUUFIckIsQ0FESjtBQVFIOzs7O0VBL0Z5QnRDLEtBQUssQ0FBQzJFLGE7Ozs7QUFrRzdCLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUFDLFNBQVMsRUFBSTtBQUNqQyxNQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFBckMsS0FBSztBQUFBLHdCQUNsQixvQkFBQyxPQUFELENBQVMsUUFBVCxRQUNLO0FBQUEsVUFBR3JDLE1BQUgsU0FBR0EsTUFBSDtBQUFBLFVBQVdzQyxZQUFYLFNBQVdBLFlBQVg7QUFBQSxVQUF5QkMsVUFBekIsU0FBeUJBLFVBQXpCO0FBQUEsMEJBQ0csb0JBQUMsU0FBRCxlQUFlRixLQUFmO0FBQXNCLFFBQUEsTUFBTSxFQUFFckMsTUFBOUI7QUFBc0MsUUFBQSxZQUFZLEVBQUVzQyxZQUFwRDtBQUFrRSxRQUFBLFVBQVUsRUFBRUM7QUFBOUUsU0FESDtBQUFBLEtBREwsQ0FEa0I7QUFBQSxHQUF0Qjs7QUFPQSxxQ0FBcUJtQyxRQUFyQixFQUErQkQsU0FBL0I7QUFFQSxTQUFPQyxRQUFQO0FBQ0gsQ0FYTSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICRtc2cgZnJvbSAnbWVzc2FnZS10YWcnO1xuXG5pbXBvcnQgaG9pc3ROb25SZWFjdFN0YXRpY3MgZnJvbSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5cbmV4cG9ydCBjb25zdCBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCgpO1xuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gYnVmZmVyIGhhcyB0aGUgZ2l2ZW4gYWNjZXNzb3JcbmV4cG9ydCBjb25zdCBoYXNBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsZXQgYWNjO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYWNjID0gYWNjZXNzb3IoYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGlmIChhY2Nlc3Nvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLmFjY2Vzc29yUmVzdF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgIT09ICdvYmplY3QnIHx8IGJ1ZmZlciA9PT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICByZXR1cm4gaGFzQWNjZXNzb3IoYWNjZXNzb3JSZXN0LCBidWZmZXJba2V5XSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBoYXNBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG4vLyBTZWxlY3QgdGhlIHZhbHVlIGF0IHRoZSBnaXZlbiBhY2Nlc3NvclxuZXhwb3J0IGNvbnN0IHNlbGVjdFdpdGhBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3IoYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc29yLnNwbGl0KCcuJylcbiAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGJ1ZmZlciwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BDYW5ub3QgYWNjZXNzICR7a2V5fSBvbiBub24tb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgTWlzc2luZyBrZXkgJHtrZXl9IG9uIG9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnVmZmVyXG4gICAgICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm4gYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBnaXZlbiBidWZmZXIgKHdoZXJlIHRoZSBwcm9wZXJ0eSBtYXkgbm90IGFscmVhZHkgZXhpc3QpXG5leHBvcnQgY29uc3Qgc2V0V2l0aEFjY2Vzc29yID0gKGFjY2Vzc29yLCBidWZmZXIsIHZhbHVlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBJZGVhOiB1c2UgeyBoYXMsIGdldCwgc2V0IH0gb2JqZWN0IGluc3RlYWQ/XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgYnVmZmVyIGdpdmVuIGZ1bmN0aW9uIGFjY2Vzc29yJyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBzZXRXaXRoQWNjZXNzb3IoYWNjZXNzb3Iuc3BsaXQoJy4nKSwgYnVmZmVyLCB2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFjY2Vzc29yKSkge1xuICAgICAgICBjb25zdCBba2V5LCAuLi5wYXRoXSA9IGFjY2Vzc29yO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgYnVmZmVyQXNPYmplY3QgPSB0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiBidWZmZXIgIT09IG51bGxcbiAgICAgICAgICAgID8gYnVmZmVyXG4gICAgICAgICAgICA6IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHZhbHVlKGJ1ZmZlckFzT2JqZWN0W2tleV0pXG4gICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZmVyQXNPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyQXNBcnJheSA9IFsuLi5idWZmZXJBc09iamVjdF07IC8vIENvcHkgc28gd2UgY2FuIG11dGF0ZVxuICAgICAgICAgICAgICAgIGJ1ZmZlckFzQXJyYXkuc3BsaWNlKGtleSwgMSwgdXBkYXRlZFZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyQXNBcnJheTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiB1cGRhdGVkVmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyQXNPYmplY3QsIGtleSlcbiAgICAgICAgICAgICAgICA/IGJ1ZmZlckFzT2JqZWN0W2tleV1cbiAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXJBc09iamVjdCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmZXJBc0FycmF5ID0gWy4uLmJ1ZmZlckFzT2JqZWN0XTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyQXNBcnJheTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBleGlzdClcbmV4cG9ydCBjb25zdCB1cGRhdGVXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIElkZWE6IHVzZSB7IGhhcywgZ2V0LCBzZXQgfSBvYmplY3QgaW5zdGVhZD9cbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IHVwZGF0ZSBidWZmZXIgZ2l2ZW4gZnVuY3Rpb24gYWNjZXNzb3InKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnBhdGhdID0gYWNjZXNzb3I7XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgQ2Fubm90IGFjY2VzcyAke2tleX0gb24gbm9uLW9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYE1pc3Npbmcga2V5ICR7a2V5fSBvbiBvYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJba2V5XSlcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyQXNBcnJheSA9IFsuLi5idWZmZXJdOyAvLyBDb3B5IHNvIHdlIGNhbiBtdXRhdGVcbiAgICAgICAgICAgICAgICBidWZmZXJBc0FycmF5LnNwbGljZShrZXksIDEsIHVwZGF0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlckFzQXJyYXkgPSBbLi4uYnVmZmVyXTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCB1cGRhdGVXaXRoQWNjZXNzb3IocGF0aCwgYnVmZmVyW2tleV0sIHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZVdpdGhBY2Nlc3NvcihwYXRoLCBidWZmZXJba2V5XSwgdmFsdWUpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEVycm9yID0gKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpID0+IHtcbiAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSlcbiAgICAgICAgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgIDogeyB0b3VjaGVkOiBmYWxzZSB9O1xuICAgIFxuICAgIC8vIE9ubHkgc2hvdyB0aGUgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIHRoZSBmb3JtL2ZpZWxkIHNvbWVob3dcbiAgICBjb25zdCBzaG91bGRTaG93TWVzc2FnZSA9XG4gICAgICAgIHN1Ym1pdHRlZFxuICAgICAgICB8fCBmaWVsZE1ldGEudG91Y2hlZDtcbiAgICBcbiAgICBpZiAoIXNob3VsZFNob3dNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBlcnJvcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gTm8gZXJyb3JcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZpZWxkID0gKHsgY2hpbGRyZW4sIGNvbXBvbmVudDogRmllbGRDb21wb25lbnQgPSAnaW5wdXQnLCBhY2Nlc3NvciwgLi4ucHJvcHMgfSA9IHt9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIG1ldGEsIHVwZGF0ZU1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBidWZmZXIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmb3JtTWV0YSA9IHtcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSkgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIDoge1xuICAgICAgICAgICAgICAgIHRvdWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRFcnJvciA9IGdldEVycm9yKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZFByb3BzID0ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LnRhcmdldC5oYXNPd25Qcm9wZXJ0eSgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV2dC50YXJnZXQuY2hlY2tlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbkJsdXI6IGV2dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldGFVcGRhdGVkID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTWV0YSA9PiAoeyAuLi4oZmllbGRNZXRhIHx8IHt9KSwgdG91Y2hlZDogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTWV0YShtZXRhVXBkYXRlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gdmFsdWUgdHlwZTogJHt2YWx1ZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IHZhbHVlID0+IHsgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7IH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gY2hpbGRyZW4oeyBmb3JtTWV0YSwgZmllbGRQcm9wcywgZmllbGRNZXRhLCBmaWVsZEVycm9yIH0sIGFjdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZpZWxkQ29tcG9uZW50IHsuLi5maWVsZFByb3BzfS8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjb25zdCBGaWVsZHMgPSB7XG4gICAgVGV4dDogcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyIH0pID0+XG4gICAgICAgICAgICAgICAgPGlucHV0Lz4gLy8gVE9ET1xuICAgICAgICAgICAgfVxuICAgICAgICA8L0NvbnRleHQuQ29uc3VtZXI+LFxufTtcblxuZXhwb3J0IGNvbnN0IEVycm9yTWVzc2FnZSA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEVycm9yQ29tcG9uZW50ID0gUmVhY3QuRnJhZ21lbnQsIGFjY2Vzc29yLCAuLi5wcm9wcyB9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEVycm9yQ29tcG9uZW50IHsuLi5wcm9wc30+e2Vycm9yfTwvRXJyb3JDb21wb25lbnQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlciBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIC8vIHByb3BzIDoge1xuICAgIC8vICAgYnVmZmVyIDogYW55LFxuICAgIC8vICAgb25VcGRhdGUgOiBGdW5jdGlvbixcbiAgICAvLyAgIHZhbGlkYXRlID86IEZ1bmN0aW9uLFxuICAgIC8vICAgb25TdWJtaXQgOiBGdW5jdGlvbixcbiAgICAvLyB9O1xuICAgIFxuICAgIHN0YXRlID0ge1xuICAgICAgICBlcnJvcnM6IHt9LFxuICAgICAgICBwcmlzdGluZTogdHJ1ZSxcbiAgICAgICAgc3VibWl0dGVkOiBmYWxzZSxcbiAgICAgICAgbWV0YToge30sXG4gICAgfTtcbiAgICBcbiAgICB2YWxpZGF0ZSA9IGJ1ZmZlciA9PiB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLnByb3BzLnZhbGlkYXRlKGJ1ZmZlcikgfHwge307XG4gICAgICAgIFxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JzIH0pO1xuICAgIH07XG4gICAgXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUodGhpcy5wcm9wcy5idWZmZXIpO1xuICAgIH1cbiAgICBcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgaWYgKHByZXZQcm9wcy5idWZmZXIgIT09IHRoaXMucHJvcHMuYnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgYnVmZmVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZm9ybVByb3BzID0ge1xuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgdXBkYXRlQnVmZmVyOiAoYWNjZXNzb3IsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEJ1ZmZlciA9IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5wcmlzdGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgcHJpc3RpbmU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIHRoaXMuc3RhdGUubWV0YSkudG91Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHVwZGF0ZWRCdWZmZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcHJpc3RpbmU6IHRoaXMuc3RhdGUucHJpc3RpbmUsXG4gICAgICAgICAgICBzdWJtaXR0ZWQ6IHRoaXMuc3RhdGUuc3VibWl0dGVkLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICBlcnJvcnM6IHRoaXMuc3RhdGUuZXJyb3JzLFxuICAgICAgICAgICAgLy8gdXBkYXRlRXJyb3I6IChhY2Nlc3NvciwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgIC8vICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yczogdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLmVycm9ycywgZXJyb3IpIH0pO1xuICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbWV0YTogdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgdXBkYXRlTWV0YTogbWV0YSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc3VibWl0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHByaXN0aW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc3RhdGUuZXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25TdWJtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2Zvcm1Qcm9wc30+XG4gICAgICAgICAgICAgICAge3R5cGVvZiB0aGlzLnByb3BzLmNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5jaGlsZHJlbihmb3JtUHJvcHMpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5jaGlsZHJlblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoRm9ybSA9IENvbXBvbmVudCA9PiB7XG4gICAgY29uc3QgV2l0aEZvcm0gPSBwcm9wcyA9PlxuICAgICAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgIHsoeyBidWZmZXIsIHVwZGF0ZUJ1ZmZlciwgdXBkYXRlTWV0YSB9KSA9PlxuICAgICAgICAgICAgICAgIDxDb21wb25lbnQgey4uLnByb3BzfSBidWZmZXI9e2J1ZmZlcn0gdXBkYXRlQnVmZmVyPXt1cGRhdGVCdWZmZXJ9IHVwZGF0ZU1ldGE9e3VwZGF0ZU1ldGF9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPjtcbiAgICBcbiAgICBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoRm9ybSwgQ29tcG9uZW50KTtcbiAgICBcbiAgICByZXR1cm4gV2l0aEZvcm07XG59O1xuIl19 |
+5
-3
@@ -205,3 +205,4 @@ 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); } | ||
| if (typeof accessor === 'function') { | ||
| return setWithAccessor(accessor(buffer), buffer, value); | ||
| // Idea: use { has, get, set } object instead? | ||
| throw new TypeError('Cannot update buffer given function accessor'); | ||
| } else if (typeof accessor === 'string') { | ||
@@ -249,3 +250,4 @@ return setWithAccessor(accessor.split('.'), buffer, value); | ||
| if (typeof accessor === 'function') { | ||
| return updateWithAccessor(accessor(buffer), buffer, value); | ||
| // Idea: use { has, get, set } object instead? | ||
| throw new TypeError('Cannot update buffer given function accessor'); | ||
| } else if (typeof accessor === 'string') { | ||
@@ -561,2 +563,2 @@ return updateWithAccessor(accessor.split('.'), buffer, value); | ||
| }; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyIkbXNnIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJSZWFjdCIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsImFjYyIsImUiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJrZXkiLCJhY2Nlc3NvclJlc3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzcGxpdCIsIlR5cGVFcnJvciIsInNlbGVjdFdpdGhBY2Nlc3NvciIsInJlZHVjZSIsInNldFdpdGhBY2Nlc3NvciIsInZhbHVlIiwicGF0aCIsImJ1ZmZlckFzT2JqZWN0IiwidXBkYXRlZFZhbHVlIiwiYnVmZmVyQXNBcnJheSIsInNwbGljZSIsInByb3AiLCJ1cGRhdGVXaXRoQWNjZXNzb3IiLCJnZXRFcnJvciIsIm1ldGEiLCJlcnJvcnMiLCJzdWJtaXR0ZWQiLCJmaWVsZE1ldGEiLCJ0b3VjaGVkIiwic2hvdWxkU2hvd01lc3NhZ2UiLCJGaWVsZCIsImNoaWxkcmVuIiwiY29tcG9uZW50IiwiRmllbGRDb21wb25lbnQiLCJwcm9wcyIsInVwZGF0ZUJ1ZmZlciIsInVwZGF0ZU1ldGEiLCJmb3JtTWV0YSIsImZpZWxkRXJyb3IiLCJmaWVsZFByb3BzIiwib25DaGFuZ2UiLCJldnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwib25CbHVyIiwibWV0YVVwZGF0ZWQiLCJTdHJpbmciLCJhY3Rpb25zIiwidXBkYXRlIiwiRmllbGRzIiwiVGV4dCIsIkVycm9yTWVzc2FnZSIsIkVycm9yQ29tcG9uZW50IiwiRnJhZ21lbnQiLCJlcnJvciIsIlByb3ZpZGVyIiwicHJpc3RpbmUiLCJ2YWxpZGF0ZSIsInNldFN0YXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwiZm9ybVByb3BzIiwidXBkYXRlZEJ1ZmZlciIsIm9uVXBkYXRlIiwic3RhdGUiLCJzdWJtaXQiLCJrZXlzIiwib25TdWJtaXQiLCJQdXJlQ29tcG9uZW50Iiwid2l0aEZvcm0iLCJDb21wb25lbnQiLCJXaXRoRm9ybSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBT0EsSUFBUCxNQUFpQixhQUFqQjtBQUVBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixPQUF2QjtBQUdBLE9BQU8sSUFBTUMsT0FBTyxHQUFHRCxLQUFLLENBQUNFLGFBQU4sRUFBaEIsQyxDQUVQOztBQUNBLE9BQU8sSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsUUFBRCxFQUFXQyxNQUFYLEVBQXNCO0FBQzdDLE1BQUksT0FBT0QsUUFBUCxLQUFvQixVQUF4QixFQUFvQztBQUNoQyxRQUFJRSxHQUFKOztBQUNBLFFBQUk7QUFDQUEsTUFBQUEsR0FBRyxHQUFHRixRQUFRLENBQUNDLE1BQUQsQ0FBZDtBQUNBLGFBQU8sSUFBUDtBQUNILEtBSEQsQ0FHRSxPQUFPRSxDQUFQLEVBQVU7QUFDUixhQUFPLEtBQVA7QUFDSDtBQUNKLEdBUkQsTUFRTyxJQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0wsUUFBZCxDQUFKLEVBQTZCO0FBQ2hDLFFBQUlBLFFBQVEsQ0FBQ00sTUFBVCxLQUFvQixDQUF4QixFQUEyQjtBQUN2QixhQUFPLElBQVA7QUFDSDs7QUFIK0IsNkJBSUROLFFBSkM7QUFBQSxRQUl6Qk8sR0FKeUI7QUFBQSxRQUlqQkMsWUFKaUI7O0FBS2hDLFFBQUksUUFBT1AsTUFBUCxNQUFrQixRQUFsQixJQUE4QkEsTUFBTSxLQUFLLElBQTdDLEVBQW1EO0FBQUUsYUFBTyxLQUFQO0FBQWU7O0FBQ3BFLFFBQUksQ0FBQ1Es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QUFPQTVDLEVBQUFBLG9CQUFvQixDQUFDK0UsUUFBRCxFQUFXRCxTQUFYLENBQXBCO0FBRUEsU0FBT0MsUUFBUDtBQUNILENBWE0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCAkbXNnIGZyb20gJ21lc3NhZ2UtdGFnJztcblxuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuXG5leHBvcnQgY29uc3QgQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoKTtcblxuLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGJ1ZmZlciBoYXMgdGhlIGdpdmVuIGFjY2Vzc29yXG5leHBvcnQgY29uc3QgaGFzQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlcikgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbGV0IGFjYztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFjYyA9IGFjY2Vzc29yKGJ1ZmZlcik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFjY2Vzc29yKSkge1xuICAgICAgICBpZiAoYWNjZXNzb3IubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBba2V5LCAuLi5hY2Nlc3NvclJlc3RdID0gYWNjZXNzb3I7XG4gICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIGhhc0FjY2Vzc29yKGFjY2Vzc29yUmVzdCwgYnVmZmVyW2tleV0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gaGFzQWNjZXNzb3IoYWNjZXNzb3Iuc3BsaXQoJy4nKSwgYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gU2VsZWN0IHRoZSB2YWx1ZSBhdCB0aGUgZ2l2ZW4gYWNjZXNzb3JcbmV4cG9ydCBjb25zdCBzZWxlY3RXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlcikgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc29yKGJ1ZmZlcik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhY2Nlc3Nvci5zcGxpdCgnLicpXG4gICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChidWZmZXIsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgQ2Fubm90IGFjY2VzcyAke2tleX0gb24gbm9uLW9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYE1pc3Npbmcga2V5ICR7a2V5fSBvbiBvYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1ZmZlclxuICAgICAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgbWF5IG5vdCBhbHJlYWR5IGV4aXN0KVxuZXhwb3J0IGNvbnN0IHNldFdpdGhBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHNldFdpdGhBY2Nlc3NvcihhY2Nlc3NvcihidWZmZXIpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHNldFdpdGhBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnBhdGhdID0gYWNjZXNzb3I7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBidWZmZXJBc09iamVjdCA9IHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmIGJ1ZmZlciAhPT0gbnVsbFxuICAgICAgICAgICAgPyBidWZmZXJcbiAgICAgICAgICAgIDoge307XG4gICAgICAgIFxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gdmFsdWUoYnVmZmVyQXNPYmplY3Rba2V5XSlcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXJBc09iamVjdCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmZXJBc0FycmF5ID0gWy4uLmJ1ZmZlckFzT2JqZWN0XTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCB1cGRhdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJBc0FycmF5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5idWZmZXJBc09iamVjdCwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChidWZmZXJBc09iamVjdCwga2V5KVxuICAgICAgICAgICAgICAgID8gYnVmZmVyQXNPYmplY3Rba2V5XVxuICAgICAgICAgICAgICAgIDoge307XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmZlckFzT2JqZWN0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlckFzQXJyYXkgPSBbLi4uYnVmZmVyQXNPYmplY3RdOyAvLyBDb3B5IHNvIHdlIGNhbiBtdXRhdGVcbiAgICAgICAgICAgICAgICBidWZmZXJBc0FycmF5LnNwbGljZShrZXksIDEsIHNldFdpdGhBY2Nlc3NvcihwYXRoLCBwcm9wLCB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJBc0FycmF5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5idWZmZXJBc09iamVjdCwgW2tleV06IHNldFdpdGhBY2Nlc3NvcihwYXRoLCBwcm9wLCB2YWx1ZSkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm4gYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBnaXZlbiBidWZmZXIgKHdoZXJlIHRoZSBwcm9wZXJ0eSBpcyBhc3N1bWVkIHRvIGV4aXN0KVxuZXhwb3J0IGNvbnN0IHVwZGF0ZVdpdGhBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvcihidWZmZXIpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnBhdGhdID0gYWNjZXNzb3I7XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgQ2Fubm90IGFjY2VzcyAke2tleX0gb24gbm9uLW9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYE1pc3Npbmcga2V5ICR7a2V5fSBvbiBvYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJba2V5XSlcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyQXNBcnJheSA9IFsuLi5idWZmZXJdOyAvLyBDb3B5IHNvIHdlIGNhbiBtdXRhdGVcbiAgICAgICAgICAgICAgICBidWZmZXJBc0FycmF5LnNwbGljZShrZXksIDEsIHVwZGF0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlckFzQXJyYXkgPSBbLi4uYnVmZmVyXTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCB1cGRhdGVXaXRoQWNjZXNzb3IocGF0aCwgYnVmZmVyW2tleV0sIHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZVdpdGhBY2Nlc3NvcihwYXRoLCBidWZmZXJba2V5XSwgdmFsdWUpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEVycm9yID0gKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpID0+IHtcbiAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSlcbiAgICAgICAgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgIDogeyB0b3VjaGVkOiBmYWxzZSB9O1xuICAgIFxuICAgIC8vIE9ubHkgc2hvdyB0aGUgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIHRoZSBmb3JtL2ZpZWxkIHNvbWVob3dcbiAgICBjb25zdCBzaG91bGRTaG93TWVzc2FnZSA9XG4gICAgICAgIHN1Ym1pdHRlZFxuICAgICAgICB8fCBmaWVsZE1ldGEudG91Y2hlZDtcbiAgICBcbiAgICBpZiAoIXNob3VsZFNob3dNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBlcnJvcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gTm8gZXJyb3JcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZpZWxkID0gKHsgY2hpbGRyZW4sIGNvbXBvbmVudDogRmllbGRDb21wb25lbnQgPSAnaW5wdXQnLCBhY2Nlc3NvciwgLi4ucHJvcHMgfSA9IHt9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIG1ldGEsIHVwZGF0ZU1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBidWZmZXIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmb3JtTWV0YSA9IHtcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSkgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIDoge1xuICAgICAgICAgICAgICAgIHRvdWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRFcnJvciA9IGdldEVycm9yKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZFByb3BzID0ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LnRhcmdldC5oYXNPd25Qcm9wZXJ0eSgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV2dC50YXJnZXQuY2hlY2tlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbkJsdXI6IGV2dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldGFVcGRhdGVkID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTWV0YSA9PiAoeyAuLi4oZmllbGRNZXRhIHx8IHt9KSwgdG91Y2hlZDogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTWV0YShtZXRhVXBkYXRlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gdmFsdWUgdHlwZTogJHt2YWx1ZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IHZhbHVlID0+IHsgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7IH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gY2hpbGRyZW4oeyBmb3JtTWV0YSwgZmllbGRQcm9wcywgZmllbGRNZXRhLCBmaWVsZEVycm9yIH0sIGFjdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZpZWxkQ29tcG9uZW50IHsuLi5maWVsZFByb3BzfS8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjb25zdCBGaWVsZHMgPSB7XG4gICAgVGV4dDogcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyIH0pID0+XG4gICAgICAgICAgICAgICAgPGlucHV0Lz4gLy8gVE9ET1xuICAgICAgICAgICAgfVxuICAgICAgICA8L0NvbnRleHQuQ29uc3VtZXI+LFxufTtcblxuZXhwb3J0IGNvbnN0IEVycm9yTWVzc2FnZSA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEVycm9yQ29tcG9uZW50ID0gUmVhY3QuRnJhZ21lbnQsIGFjY2Vzc29yLCAuLi5wcm9wcyB9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEVycm9yQ29tcG9uZW50IHsuLi5wcm9wc30+e2Vycm9yfTwvRXJyb3JDb21wb25lbnQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlciBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIC8vIHByb3BzIDoge1xuICAgIC8vICAgYnVmZmVyIDogYW55LFxuICAgIC8vICAgb25VcGRhdGUgOiBGdW5jdGlvbixcbiAgICAvLyAgIHZhbGlkYXRlID86IEZ1bmN0aW9uLFxuICAgIC8vICAgb25TdWJtaXQgOiBGdW5jdGlvbixcbiAgICAvLyB9O1xuICAgIFxuICAgIHN0YXRlID0ge1xuICAgICAgICBlcnJvcnM6IHt9LFxuICAgICAgICBwcmlzdGluZTogdHJ1ZSxcbiAgICAgICAgc3VibWl0dGVkOiBmYWxzZSxcbiAgICAgICAgbWV0YToge30sXG4gICAgfTtcbiAgICBcbiAgICB2YWxpZGF0ZSA9IGJ1ZmZlciA9PiB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLnByb3BzLnZhbGlkYXRlKGJ1ZmZlcikgfHwge307XG4gICAgICAgIFxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JzIH0pO1xuICAgIH07XG4gICAgXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUodGhpcy5wcm9wcy5idWZmZXIpO1xuICAgIH1cbiAgICBcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgaWYgKHByZXZQcm9wcy5idWZmZXIgIT09IHRoaXMucHJvcHMuYnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgYnVmZmVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZm9ybVByb3BzID0ge1xuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgdXBkYXRlQnVmZmVyOiAoYWNjZXNzb3IsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEJ1ZmZlciA9IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5wcmlzdGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgcHJpc3RpbmU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIHRoaXMuc3RhdGUubWV0YSkudG91Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHVwZGF0ZWRCdWZmZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcHJpc3RpbmU6IHRoaXMuc3RhdGUucHJpc3RpbmUsXG4gICAgICAgICAgICBzdWJtaXR0ZWQ6IHRoaXMuc3RhdGUuc3VibWl0dGVkLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICBlcnJvcnM6IHRoaXMuc3RhdGUuZXJyb3JzLFxuICAgICAgICAgICAgLy8gdXBkYXRlRXJyb3I6IChhY2Nlc3NvciwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgIC8vICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yczogdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLmVycm9ycywgZXJyb3IpIH0pO1xuICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbWV0YTogdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgdXBkYXRlTWV0YTogbWV0YSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc3VibWl0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHByaXN0aW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc3RhdGUuZXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25TdWJtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2Zvcm1Qcm9wc30+XG4gICAgICAgICAgICAgICAge3R5cGVvZiB0aGlzLnByb3BzLmNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5jaGlsZHJlbihmb3JtUHJvcHMpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5jaGlsZHJlblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoRm9ybSA9IENvbXBvbmVudCA9PiB7XG4gICAgY29uc3QgV2l0aEZvcm0gPSBwcm9wcyA9PlxuICAgICAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgIHsoeyBidWZmZXIsIHVwZGF0ZUJ1ZmZlciwgdXBkYXRlTWV0YSB9KSA9PlxuICAgICAgICAgICAgICAgIDxDb21wb25lbnQgey4uLnByb3BzfSBidWZmZXI9e2J1ZmZlcn0gdXBkYXRlQnVmZmVyPXt1cGRhdGVCdWZmZXJ9IHVwZGF0ZU1ldGE9e3VwZGF0ZU1ldGF9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPjtcbiAgICBcbiAgICBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoRm9ybSwgQ29tcG9uZW50KTtcbiAgICBcbiAgICByZXR1cm4gV2l0aEZvcm07XG59O1xuIl19 | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyIkbXNnIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJSZWFjdCIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiaGFzQWNjZXNzb3IiLCJhY2Nlc3NvciIsImJ1ZmZlciIsImFjYyIsImUiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJrZXkiLCJhY2Nlc3NvclJlc3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzcGxpdCIsIlR5cGVFcnJvciIsInNlbGVjdFdpdGhBY2Nlc3NvciIsInJlZHVjZSIsInNldFdpdGhBY2Nlc3NvciIsInZhbHVlIiwicGF0aCIsImJ1ZmZlckFzT2JqZWN0IiwidXBkYXRlZFZhbHVlIiwiYnVmZmVyQXNBcnJheSIsInNwbGljZSIsInByb3AiLCJ1cGRhdGVXaXRoQWNjZXNzb3IiLCJnZXRFcnJvciIsIm1ldGEiLCJlcnJvcnMiLCJzdWJtaXR0ZWQiLCJmaWVsZE1ldGEiLCJ0b3VjaGVkIiwic2hvdWxkU2hvd01lc3NhZ2UiLCJGaWVsZCIsImNoaWxkcmVuIiwiY29tcG9uZW50IiwiRmllbGRDb21wb25lbnQiLCJwcm9wcyIsInVwZGF0ZUJ1ZmZlciIsInVwZGF0ZU1ldGEiLCJmb3JtTWV0YSIsImZpZWxkRXJyb3IiLCJmaWVsZFByb3BzIiwib25DaGFuZ2UiLCJldnQiLCJ0YXJnZXQiLCJjaGVja2VkIiwib25CbHVyIiwibWV0YVVwZGF0ZWQiLCJTdHJpbmciLCJhY3Rpb25zIiwidXBkYXRlIiwiRmllbGRzIiwiVGV4dCIsIkVycm9yTWVzc2FnZSIsIkVycm9yQ29tcG9uZW50IiwiRnJhZ21lbnQiLCJlcnJvciIsIlByb3ZpZGVyIiwicHJpc3RpbmUiLCJ2YWxpZGF0ZSIsInNldFN0YXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwiZm9ybVByb3BzIiwidXBkYXRlZEJ1ZmZlciIsIm9uVXBkYXRlIiwic3RhdGUiLCJzdWJtaXQiLCJrZXlzIiwib25TdWJtaXQiLCJQdXJlQ29tcG9uZW50Iiwid2l0aEZvcm0iLCJDb21wb25lbnQiLCJXaXRoRm9ybSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBT0EsSUFBUCxNQUFpQixhQUFqQjtBQUVBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixPQUF2QjtBQUdBLE9BQU8sSUFBTUMsT0FBTyxHQUFHRCxLQUFLLENBQUNFLGFBQU4sRUFBaEIsQyxDQUVQOztBQUNBLE9BQU8sSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsUUFBRCxFQUFXQyxNQUFYLEVBQXNCO0FBQzdDLE1BQUksT0FBT0QsUUFBUCxLQUFvQixVQUF4QixFQUFvQztBQUNoQyxRQUFJRSxHQUFKOztBQUNBLFFBQUk7QUFDQUEsTUFBQUEsR0FBRyxHQUFHRixRQUFRLENBQUNDLE1BQUQsQ0FBZDtBQUNBLGFBQU8sSUFBUDtBQUNILEtBSEQsQ0FHRSxPQUFPRSxDQUFQLEVBQVU7QUFDUixhQUFPLEtBQVA7QUFDSDtBQUNKLEdBUkQsTUFRTyxJQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0wsUUFBZCxDQUFKLEVBQTZCO0FBQ2hDLFFBQUlBLFFBQVEsQ0FBQ00sTUFBVCxLQUFvQixDQUF4QixFQUEyQjtBQUN2QixhQUFPLElBQVA7QUFDSDs7QUFIK0IsNkJBSUROLFFBSkM7QUFBQSxRQUl6Qk8sR0FKeUI7QUFBQSxRQUlqQkMsWUFKaUI7O0FBS2hDLFFBQUksUUFBT1AsTUFBUCxNQUFrQixRQUFsQixJQUE4QkEsTUFBTSxLQUFLLElBQTdDLEVBQW1EO0FBQUUsYUFBTyxLQUFQO0FBQWU7O0FBQ3BFLFFBQUksQ0FBQ1Es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InNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICRtc2cgZnJvbSAnbWVzc2FnZS10YWcnO1xuXG5pbXBvcnQgaG9pc3ROb25SZWFjdFN0YXRpY3MgZnJvbSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5cbmV4cG9ydCBjb25zdCBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCgpO1xuXG4vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gYnVmZmVyIGhhcyB0aGUgZ2l2ZW4gYWNjZXNzb3JcbmV4cG9ydCBjb25zdCBoYXNBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsZXQgYWNjO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYWNjID0gYWNjZXNzb3IoYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGlmIChhY2Nlc3Nvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLmFjY2Vzc29yUmVzdF0gPSBhY2Nlc3NvcjtcbiAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgIT09ICdvYmplY3QnIHx8IGJ1ZmZlciA9PT0gbnVsbCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICByZXR1cm4gaGFzQWNjZXNzb3IoYWNjZXNzb3JSZXN0LCBidWZmZXJba2V5XSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBoYXNBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG4vLyBTZWxlY3QgdGhlIHZhbHVlIGF0IHRoZSBnaXZlbiBhY2Nlc3NvclxuZXhwb3J0IGNvbnN0IHNlbGVjdFdpdGhBY2Nlc3NvciA9IChhY2Nlc3NvciwgYnVmZmVyKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gYWNjZXNzb3IoYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGFjY2Vzc29yLnNwbGl0KCcuJylcbiAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGJ1ZmZlciwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYnVmZmVyICE9PSAnb2JqZWN0JyB8fCBidWZmZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BDYW5ub3QgYWNjZXNzICR7a2V5fSBvbiBub24tb2JqZWN0ICR7YnVmZmVyfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgTWlzc2luZyBrZXkgJHtrZXl9IG9uIG9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnVmZmVyXG4gICAgICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJG1zZ2BVbmtub3duIGFjY2Vzc29yIHR5cGUgJHthY2Nlc3Nvcn1gKTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm4gYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBnaXZlbiBidWZmZXIgKHdoZXJlIHRoZSBwcm9wZXJ0eSBtYXkgbm90IGFscmVhZHkgZXhpc3QpXG5leHBvcnQgY29uc3Qgc2V0V2l0aEFjY2Vzc29yID0gKGFjY2Vzc29yLCBidWZmZXIsIHZhbHVlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBJZGVhOiB1c2UgeyBoYXMsIGdldCwgc2V0IH0gb2JqZWN0IGluc3RlYWQ/XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCB1cGRhdGUgYnVmZmVyIGdpdmVuIGZ1bmN0aW9uIGFjY2Vzc29yJyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYWNjZXNzb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBzZXRXaXRoQWNjZXNzb3IoYWNjZXNzb3Iuc3BsaXQoJy4nKSwgYnVmZmVyLCB2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFjY2Vzc29yKSkge1xuICAgICAgICBjb25zdCBba2V5LCAuLi5wYXRoXSA9IGFjY2Vzc29yO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgYnVmZmVyQXNPYmplY3QgPSB0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiBidWZmZXIgIT09IG51bGxcbiAgICAgICAgICAgID8gYnVmZmVyXG4gICAgICAgICAgICA6IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHZhbHVlKGJ1ZmZlckFzT2JqZWN0W2tleV0pXG4gICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZmVyQXNPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyQXNBcnJheSA9IFsuLi5idWZmZXJBc09iamVjdF07IC8vIENvcHkgc28gd2UgY2FuIG11dGF0ZVxuICAgICAgICAgICAgICAgIGJ1ZmZlckFzQXJyYXkuc3BsaWNlKGtleSwgMSwgdXBkYXRlZFZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyQXNBcnJheTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiB1cGRhdGVkVmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnVmZmVyQXNPYmplY3QsIGtleSlcbiAgICAgICAgICAgICAgICA/IGJ1ZmZlckFzT2JqZWN0W2tleV1cbiAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXJBc09iamVjdCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmZXJBc0FycmF5ID0gWy4uLmJ1ZmZlckFzT2JqZWN0XTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyQXNBcnJheTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYnVmZmVyQXNPYmplY3QsIFtrZXldOiBzZXRXaXRoQWNjZXNzb3IocGF0aCwgcHJvcCwgdmFsdWUpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyICh3aGVyZSB0aGUgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBleGlzdClcbmV4cG9ydCBjb25zdCB1cGRhdGVXaXRoQWNjZXNzb3IgPSAoYWNjZXNzb3IsIGJ1ZmZlciwgdmFsdWUpID0+IHtcbiAgICBpZiAodHlwZW9mIGFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIElkZWE6IHVzZSB7IGhhcywgZ2V0LCBzZXQgfSBvYmplY3QgaW5zdGVhZD9cbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IHVwZGF0ZSBidWZmZXIgZ2l2ZW4gZnVuY3Rpb24gYWNjZXNzb3InKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3Nvci5zcGxpdCgnLicpLCBidWZmZXIsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXNzb3IpKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnBhdGhdID0gYWNjZXNzb3I7XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcgfHwgYnVmZmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgQ2Fubm90IGFjY2VzcyAke2tleX0gb24gbm9uLW9iamVjdCAke2J1ZmZlcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJ1ZmZlciwga2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYE1pc3Npbmcga2V5ICR7a2V5fSBvbiBvYmplY3QgJHtidWZmZXJ9YCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyB2YWx1ZShidWZmZXJba2V5XSlcbiAgICAgICAgICAgICAgICA6IHZhbHVlO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmZXIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZmVyQXNBcnJheSA9IFsuLi5idWZmZXJdOyAvLyBDb3B5IHNvIHdlIGNhbiBtdXRhdGVcbiAgICAgICAgICAgICAgICBidWZmZXJBc0FycmF5LnNwbGljZShrZXksIDEsIHVwZGF0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZWRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmZlckFzQXJyYXkgPSBbLi4uYnVmZmVyXTsgLy8gQ29weSBzbyB3ZSBjYW4gbXV0YXRlXG4gICAgICAgICAgICAgICAgYnVmZmVyQXNBcnJheS5zcGxpY2Uoa2V5LCAxLCB1cGRhdGVXaXRoQWNjZXNzb3IocGF0aCwgYnVmZmVyW2tleV0sIHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlckFzQXJyYXk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmJ1ZmZlciwgW2tleV06IHVwZGF0ZVdpdGhBY2Nlc3NvcihwYXRoLCBidWZmZXJba2V5XSwgdmFsdWUpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCRtc2dgVW5rbm93biBhY2Nlc3NvciB0eXBlICR7YWNjZXNzb3J9YCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEVycm9yID0gKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpID0+IHtcbiAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSlcbiAgICAgICAgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpXG4gICAgICAgIDogeyB0b3VjaGVkOiBmYWxzZSB9O1xuICAgIFxuICAgIC8vIE9ubHkgc2hvdyB0aGUgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIHRoZSBmb3JtL2ZpZWxkIHNvbWVob3dcbiAgICBjb25zdCBzaG91bGRTaG93TWVzc2FnZSA9XG4gICAgICAgIHN1Ym1pdHRlZFxuICAgICAgICB8fCBmaWVsZE1ldGEudG91Y2hlZDtcbiAgICBcbiAgICBpZiAoIXNob3VsZFNob3dNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBlcnJvcnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gTm8gZXJyb3JcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZpZWxkID0gKHsgY2hpbGRyZW4sIGNvbXBvbmVudDogRmllbGRDb21wb25lbnQgPSAnaW5wdXQnLCBhY2Nlc3NvciwgLi4ucHJvcHMgfSA9IHt9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgYnVmZmVyLCB1cGRhdGVCdWZmZXIsIG1ldGEsIHVwZGF0ZU1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2VsZWN0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBidWZmZXIpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmb3JtTWV0YSA9IHtcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZE1ldGEgPSBoYXNBY2Nlc3NvcihhY2Nlc3NvciwgbWV0YSkgPyBzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIDoge1xuICAgICAgICAgICAgICAgIHRvdWNoZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZmllbGRFcnJvciA9IGdldEVycm9yKHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSwgYWNjZXNzb3IpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBmaWVsZFByb3BzID0ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBldnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBldnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LnRhcmdldC5oYXNPd25Qcm9wZXJ0eSgnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV2dC50YXJnZXQuY2hlY2tlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbkJsdXI6IGV2dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIG1ldGEpLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldGFVcGRhdGVkID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTWV0YSA9PiAoeyAuLi4oZmllbGRNZXRhIHx8IHt9KSwgdG91Y2hlZDogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTWV0YShtZXRhVXBkYXRlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLnByb3BzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLnZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICBmaWVsZFByb3BzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigkbXNnYFVua25vd24gdmFsdWUgdHlwZTogJHt2YWx1ZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IHZhbHVlID0+IHsgdXBkYXRlQnVmZmVyKGFjY2Vzc29yLCB2YWx1ZSk7IH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gY2hpbGRyZW4oeyBmb3JtTWV0YSwgZmllbGRQcm9wcywgZmllbGRNZXRhLCBmaWVsZEVycm9yIH0sIGFjdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogY2hpbGRyZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZpZWxkQ29tcG9uZW50IHsuLi5maWVsZFByb3BzfS8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjb25zdCBGaWVsZHMgPSB7XG4gICAgVGV4dDogcHJvcHMgPT5cbiAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICB7KHsgYnVmZmVyIH0pID0+XG4gICAgICAgICAgICAgICAgPGlucHV0Lz4gLy8gVE9ET1xuICAgICAgICAgICAgfVxuICAgICAgICA8L0NvbnRleHQuQ29uc3VtZXI+LFxufTtcblxuZXhwb3J0IGNvbnN0IEVycm9yTWVzc2FnZSA9ICh7IGNoaWxkcmVuLCBjb21wb25lbnQ6IEVycm9yQ29tcG9uZW50ID0gUmVhY3QuRnJhZ21lbnQsIGFjY2Vzc29yLCAuLi5wcm9wcyB9KSA9PlxuICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgbWV0YSwgZXJyb3JzLCBzdWJtaXR0ZWQgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBnZXRFcnJvcih7IG1ldGEsIGVycm9ycywgc3VibWl0dGVkIH0sIGFjY2Vzc29yKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuKGVycm9yKVxuICAgICAgICAgICAgICAgICAgICA6IGNoaWxkcmVuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEVycm9yQ29tcG9uZW50IHsuLi5wcm9wc30+e2Vycm9yfTwvRXJyb3JDb21wb25lbnQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICB9fVxuICAgIDwvQ29udGV4dC5Db25zdW1lcj47XG5cbmV4cG9ydCBjbGFzcyBQcm92aWRlciBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIC8vIHByb3BzIDoge1xuICAgIC8vICAgYnVmZmVyIDogYW55LFxuICAgIC8vICAgb25VcGRhdGUgOiBGdW5jdGlvbixcbiAgICAvLyAgIHZhbGlkYXRlID86IEZ1bmN0aW9uLFxuICAgIC8vICAgb25TdWJtaXQgOiBGdW5jdGlvbixcbiAgICAvLyB9O1xuICAgIFxuICAgIHN0YXRlID0ge1xuICAgICAgICBlcnJvcnM6IHt9LFxuICAgICAgICBwcmlzdGluZTogdHJ1ZSxcbiAgICAgICAgc3VibWl0dGVkOiBmYWxzZSxcbiAgICAgICAgbWV0YToge30sXG4gICAgfTtcbiAgICBcbiAgICB2YWxpZGF0ZSA9IGJ1ZmZlciA9PiB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLnByb3BzLnZhbGlkYXRlKGJ1ZmZlcikgfHwge307XG4gICAgICAgIFxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JzIH0pO1xuICAgIH07XG4gICAgXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUodGhpcy5wcm9wcy5idWZmZXIpO1xuICAgIH1cbiAgICBcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgaWYgKHByZXZQcm9wcy5idWZmZXIgIT09IHRoaXMucHJvcHMuYnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHRoaXMucHJvcHMuYnVmZmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgYnVmZmVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZm9ybVByb3BzID0ge1xuICAgICAgICAgICAgYnVmZmVyLFxuICAgICAgICAgICAgdXBkYXRlQnVmZmVyOiAoYWNjZXNzb3IsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEJ1ZmZlciA9IHVwZGF0ZVdpdGhBY2Nlc3NvcihhY2Nlc3NvciwgYnVmZmVyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh1cGRhdGVkQnVmZmVyKTtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5wcmlzdGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgcHJpc3RpbmU6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoIWhhc0FjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEpIHx8ICFzZWxlY3RXaXRoQWNjZXNzb3IoYWNjZXNzb3IsIHRoaXMuc3RhdGUubWV0YSkudG91Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0gc2V0V2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLm1ldGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1ldGEgPT4gKHsgLi4uKGZpZWxkTWV0YSB8fCB7fSksIHRvdWNoZWQ6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlKHVwZGF0ZWRCdWZmZXIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcHJpc3RpbmU6IHRoaXMuc3RhdGUucHJpc3RpbmUsXG4gICAgICAgICAgICBzdWJtaXR0ZWQ6IHRoaXMuc3RhdGUuc3VibWl0dGVkLFxuICAgICAgICAgICAgXG4gICAgICAgICAgICBlcnJvcnM6IHRoaXMuc3RhdGUuZXJyb3JzLFxuICAgICAgICAgICAgLy8gdXBkYXRlRXJyb3I6IChhY2Nlc3NvciwgZXJyb3IpID0+IHtcbiAgICAgICAgICAgIC8vICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yczogdXBkYXRlV2l0aEFjY2Vzc29yKGFjY2Vzc29yLCB0aGlzLnN0YXRlLmVycm9ycywgZXJyb3IpIH0pO1xuICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbWV0YTogdGhpcy5zdGF0ZS5tZXRhLFxuICAgICAgICAgICAgdXBkYXRlTWV0YTogbWV0YSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZXRhIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc3VibWl0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHByaXN0aW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuc3RhdGUuZXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25TdWJtaXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2Zvcm1Qcm9wc30+XG4gICAgICAgICAgICAgICAge3R5cGVvZiB0aGlzLnByb3BzLmNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5jaGlsZHJlbihmb3JtUHJvcHMpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5jaGlsZHJlblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoRm9ybSA9IENvbXBvbmVudCA9PiB7XG4gICAgY29uc3QgV2l0aEZvcm0gPSBwcm9wcyA9PlxuICAgICAgICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgIHsoeyBidWZmZXIsIHVwZGF0ZUJ1ZmZlciwgdXBkYXRlTWV0YSB9KSA9PlxuICAgICAgICAgICAgICAgIDxDb21wb25lbnQgey4uLnByb3BzfSBidWZmZXI9e2J1ZmZlcn0gdXBkYXRlQnVmZmVyPXt1cGRhdGVCdWZmZXJ9IHVwZGF0ZU1ldGE9e3VwZGF0ZU1ldGF9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9Db250ZXh0LkNvbnN1bWVyPjtcbiAgICBcbiAgICBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoRm9ybSwgQ29tcG9uZW50KTtcbiAgICBcbiAgICByZXR1cm4gV2l0aEZvcm07XG59O1xuIl19 |
+1
-1
| { | ||
| "name": "@mkrause/react-form", | ||
| "version": "0.1.0", | ||
| "version": "0.1.1", | ||
| "description": "React form component", | ||
@@ -5,0 +5,0 @@ "author": "mkrause", |
+4
-2
@@ -61,3 +61,4 @@ | ||
| if (typeof accessor === 'function') { | ||
| return setWithAccessor(accessor(buffer), buffer, value); | ||
| // Idea: use { has, get, set } object instead? | ||
| throw new TypeError('Cannot update buffer given function accessor'); | ||
| } else if (typeof accessor === 'string') { | ||
@@ -105,3 +106,4 @@ return setWithAccessor(accessor.split('.'), buffer, value); | ||
| if (typeof accessor === 'function') { | ||
| return updateWithAccessor(accessor(buffer), buffer, value); | ||
| // Idea: use { has, get, set } object instead? | ||
| throw new TypeError('Cannot update buffer given function accessor'); | ||
| } else if (typeof accessor === 'string') { | ||
@@ -108,0 +110,0 @@ return updateWithAccessor(accessor.split('.'), buffer, value); |
129295
0.41%1243
0.49%