appium-android-driver 5.0.11 → 5.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,4 +37,4 @@ var _default = commands;
37
37
  exports.default = _default;require('source-map-support').install();
38
38
 
39
39
 
40
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VtdS1jb25zb2xlLmpzIiwibmFtZXMiOlsiRU1VX0NPTlNPTEVfRkVBVFVSRSIsImNvbW1hbmRzIiwibW9iaWxlRXhlY0VtdUNvbnNvbGVDb21tYW5kIiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiY29tbWFuZCIsImV4ZWNUaW1lb3V0IiwiY29ublRpbWVvdXQiLCJpbml0VGltZW91dCIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYWRiIiwiZXhlY0VtdUNvbnNvbGVDb21tYW5kIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2VtdS1jb25zb2xlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBFTVVfQ09OU09MRV9GRUFUVVJFID0gJ2VtdWxhdG9yX2NvbnNvbGUnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEV4ZWNPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFBcnJheTxzdHJpbmc+fHN0cmluZ30gY29tbWFuZCAtIFRoZSBhY3R1YWwgY29tbWFuZCB0byBleGVjdXRlLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9ydW4vZW11bGF0b3ItY29uc29sZSBmb3IgbW9yZSBkZXRhaWxzXG4gKiBvbiBhdmFpbGFibGUgY29tbWFuZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBleGVjVGltZW91dCBbNjAwMDBdIEEgdGltZW91dCB1c2VkIHRvIHdhaXQgZm9yIGEgc2VydmVyXG4gKiByZXBseSB0byB0aGUgZ2l2ZW4gY29tbWFuZCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb25uVGltZW91dCBbNTAwMF0gQ29uc29sZSBjb25uZWN0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5pdFRpbWVvdXQgWzUwMDBdIFRlbG5ldCBjb25zb2xlIGluaXRpYWxpemF0aW9uIHRpbWVvdXRcbiAqIGluIG1pbGxpc2Vjb25kcyAodGhlIHRpbWUgYmV0d2VlbiB0aGUgY29ubmVjdGlvbiBoYXBwZW5zIGFuZCB0aGUgY29tbWFuZCBwcm9tcHRcbiAqIGlzIGF2YWlsYWJsZSlcbiAqL1xuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZCB0aHJvdWdoIGVtdWxhdG9yIHRlbG5ldCBjb25zb2xlIGludGVyZmFjZSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LlxuICogVGhlIGBlbXVsYXRvcl9jb25zb2xlYCBzZXJ2ZXIgZmVhdHVyZSBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gdXNlIHRoaXMgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7RXhlY09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBjb25uZWN0aW5nIHRvIHRoZSBUZWxuZXQgY29uc29sZVxuICogb3IgaWYgdGhlIGdpdmVuIGNvbW1hbmQgcmV0dXJuZWQgbm9uLU9LIHJlc3BvbnNlXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUV4ZWNFbXVDb25zb2xlQ29tbWFuZCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUV4ZWNFbXVDb25zb2xlQ29tbWFuZCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoRU1VX0NPTlNPTEVfRkVBVFVSRSk7XG5cbiAgY29uc3Qge1xuICAgIGNvbW1hbmQsXG4gICAgZXhlY1RpbWVvdXQsXG4gICAgY29ublRpbWVvdXQsXG4gICAgaW5pdFRpbWVvdXQsXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghY29tbWFuZCkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFRoZSAnY29tbWFuZCcgYXJndW1lbnQgaXMgbWFuZGF0b3J5YCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuZXhlY0VtdUNvbnNvbGVDb21tYW5kKGNvbW1hbmQsIHtcbiAgICBleGVjVGltZW91dCxcbiAgICBjb25uVGltZW91dCxcbiAgICBpbml0VGltZW91dCxcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLG1CQUFtQixHQUFHLGtCQUE1QjtBQUVBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjs7O0FBd0JBQSxRQUFRLENBQUNDLDJCQUFULEdBQXVDLGVBQWVBLDJCQUFmLENBQTRDQyxJQUFJLEdBQUcsRUFBbkQsRUFBdUQ7RUFDNUYsS0FBS0Msb0JBQUwsQ0FBMEJKLG1CQUExQjtFQUVBLE1BQU07SUFDSkssT0FESTtJQUVKQyxXQUZJO0lBR0pDLFdBSEk7SUFJSkM7RUFKSSxJQUtGTCxJQUxKOztFQU9BLElBQUksQ0FBQ0UsT0FBTCxFQUFjO0lBQ1osTUFBTSxJQUFJSSxtQkFBT0Msb0JBQVgsQ0FBaUMscUNBQWpDLENBQU47RUFDRDs7RUFFRCxPQUFPLE1BQU0sS0FBS0MsR0FBTCxDQUFTQyxxQkFBVCxDQUErQlAsT0FBL0IsRUFBd0M7SUFDbkRDLFdBRG1EO0lBRW5EQyxXQUZtRDtJQUduREM7RUFIbUQsQ0FBeEMsQ0FBYjtBQUtELENBbkJEOztlQXNCZVAsUSJ9
40
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VtdS1jb25zb2xlLmpzIiwibmFtZXMiOlsiRU1VX0NPTlNPTEVfRkVBVFVSRSIsImNvbW1hbmRzIiwibW9iaWxlRXhlY0VtdUNvbnNvbGVDb21tYW5kIiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiY29tbWFuZCIsImV4ZWNUaW1lb3V0IiwiY29ublRpbWVvdXQiLCJpbml0VGltZW91dCIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYWRiIiwiZXhlY0VtdUNvbnNvbGVDb21tYW5kIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2VtdS1jb25zb2xlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBFTVVfQ09OU09MRV9GRUFUVVJFID0gJ2VtdWxhdG9yX2NvbnNvbGUnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEV4ZWNPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFBcnJheTxzdHJpbmc+fHN0cmluZ30gY29tbWFuZCAtIFRoZSBhY3R1YWwgY29tbWFuZCB0byBleGVjdXRlLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9ydW4vZW11bGF0b3ItY29uc29sZSBmb3IgbW9yZSBkZXRhaWxzXG4gKiBvbiBhdmFpbGFibGUgY29tbWFuZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBleGVjVGltZW91dCBbNjAwMDBdIEEgdGltZW91dCB1c2VkIHRvIHdhaXQgZm9yIGEgc2VydmVyXG4gKiByZXBseSB0byB0aGUgZ2l2ZW4gY29tbWFuZCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb25uVGltZW91dCBbNTAwMF0gQ29uc29sZSBjb25uZWN0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5pdFRpbWVvdXQgWzUwMDBdIFRlbG5ldCBjb25zb2xlIGluaXRpYWxpemF0aW9uIHRpbWVvdXRcbiAqIGluIG1pbGxpc2Vjb25kcyAodGhlIHRpbWUgYmV0d2VlbiB0aGUgY29ubmVjdGlvbiBoYXBwZW5zIGFuZCB0aGUgY29tbWFuZCBwcm9tcHRcbiAqIGlzIGF2YWlsYWJsZSlcbiAqL1xuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZCB0aHJvdWdoIGVtdWxhdG9yIHRlbG5ldCBjb25zb2xlIGludGVyZmFjZSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LlxuICogVGhlIGBlbXVsYXRvcl9jb25zb2xlYCBzZXJ2ZXIgZmVhdHVyZSBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gdXNlIHRoaXMgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7RXhlY09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBjb25uZWN0aW5nIHRvIHRoZSBUZWxuZXQgY29uc29sZVxuICogb3IgaWYgdGhlIGdpdmVuIGNvbW1hbmQgcmV0dXJuZWQgbm9uLU9LIHJlc3BvbnNlXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUV4ZWNFbXVDb25zb2xlQ29tbWFuZCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUV4ZWNFbXVDb25zb2xlQ29tbWFuZCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoRU1VX0NPTlNPTEVfRkVBVFVSRSk7XG5cbiAgY29uc3Qge1xuICAgIGNvbW1hbmQsXG4gICAgZXhlY1RpbWVvdXQsXG4gICAgY29ublRpbWVvdXQsXG4gICAgaW5pdFRpbWVvdXQsXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghY29tbWFuZCkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFRoZSAnY29tbWFuZCcgYXJndW1lbnQgaXMgbWFuZGF0b3J5YCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuZXhlY0VtdUNvbnNvbGVDb21tYW5kKGNvbW1hbmQsIHtcbiAgICBleGVjVGltZW91dCxcbiAgICBjb25uVGltZW91dCxcbiAgICBpbml0VGltZW91dCxcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLG1CQUFtQixHQUFHLGtCQUE1QjtBQUVBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjs7O0FBd0JBQSxRQUFRLENBQUNDLDJCQUFULEdBQXVDLGVBQWVBLDJCQUFmLENBQTRDQyxJQUFJLEdBQUcsRUFBbkQsRUFBdUQ7RUFDNUYsS0FBS0Msb0JBQUwsQ0FBMEJKLG1CQUExQjtFQUVBLE1BQU07SUFDSkssT0FESTtJQUVKQyxXQUZJO0lBR0pDLFdBSEk7SUFJSkM7RUFKSSxJQUtGTCxJQUxKOztFQU9BLElBQUksQ0FBQ0UsT0FBTCxFQUFjO0lBQ1osTUFBTSxJQUFJSSxrQkFBQSxDQUFPQyxvQkFBWCxDQUFpQyxxQ0FBakMsQ0FBTjtFQUNEOztFQUVELE9BQU8sTUFBTSxLQUFLQyxHQUFMLENBQVNDLHFCQUFULENBQStCUCxPQUEvQixFQUF3QztJQUNuREMsV0FEbUQ7SUFFbkRDLFdBRm1EO0lBR25EQztFQUhtRCxDQUF4QyxDQUFiO0FBS0QsQ0FuQkQ7O2VBc0JlUCxRIn0=
@@ -70,4 +70,4 @@ var _default = extensions;
70
70
  exports.default = _default;require('source-map-support').install();
71
71
 
72
72
 
73
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsImxvZyIsImluZm8iLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJfIiwiaXNBcnJheSIsImlzV2ViQ29udGV4dCIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJlbmRwb2ludCIsImNocm9tZWRyaXZlciIsImp3cHJveHkiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJQUk9UT0NPTFMiLCJNSlNPTldQIiwiY29tbWFuZCIsIm1vYmlsZUNvbW1hbmQiLCJvcHRzIiwibW9iaWxlQ29tbWFuZHNNYXBwaW5nIiwic2hlbGwiLCJleGVjRW11Q29uc29sZUNvbW1hbmQiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImNoYW5nZVBlcm1pc3Npb25zIiwiZ2V0UGVybWlzc2lvbnMiLCJwZXJmb3JtRWRpdG9yQWN0aW9uIiwic2Vuc29yU2V0IiwiZ2V0RGV2aWNlVGltZSIsInN0YXJ0U2NyZWVuU3RyZWFtaW5nIiwic3RvcFNjcmVlblN0cmVhbWluZyIsImdldE5vdGlmaWNhdGlvbnMiLCJsaXN0U21zIiwiZGVsZXRlRmlsZSIsImNsZWFyQXBwIiwic3RhcnRTZXJ2aWNlIiwic3RvcFNlcnZpY2UiLCJzdGFydEFjdGl2aXR5IiwiYnJvYWRjYXN0IiwiZ2V0Q29udGV4dHMiLCJ1bmxvY2siLCJyZWZyZXNoR3BzQ2FjaGUiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMsIFBST1RPQ09MUyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBleHRlbnNpb25zID0ge307XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgRXhlY3V0aW5nIG5hdGl2ZSBjb21tYW5kICcke3NjcmlwdH0nYCk7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQXG4gICAgPyAnL2V4ZWN1dGUnXG4gICAgOiAnL2V4ZWN1dGUvc3luYyc7XG4gIHJldHVybiBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHNjcmlwdCxcbiAgICBhcmdzLFxuICB9KTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBtb2JpbGVDb21tYW5kc01hcHBpbmcgPSB7XG4gICAgc2hlbGw6ICdtb2JpbGVTaGVsbCcsXG5cbiAgICBleGVjRW11Q29uc29sZUNvbW1hbmQ6ICdtb2JpbGVFeGVjRW11Q29uc29sZUNvbW1hbmQnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc2Vuc29yU2V0OiAnc2Vuc29yU2V0JyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIHN0YXJ0U2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcnLFxuICAgIHN0b3BTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nJyxcblxuICAgIGdldE5vdGlmaWNhdGlvbnM6ICdtb2JpbGVHZXROb3RpZmljYXRpb25zJyxcblxuICAgIGxpc3RTbXM6ICdtb2JpbGVMaXN0U21zJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcblxuICAgIGNsZWFyQXBwOiAnbW9iaWxlQ2xlYXJBcHAnLFxuXG4gICAgc3RhcnRTZXJ2aWNlOiAnbW9iaWxlU3RhcnRTZXJ2aWNlJyxcbiAgICBzdG9wU2VydmljZTogJ21vYmlsZVN0b3BTZXJ2aWNlJyxcbiAgICBzdGFydEFjdGl2aXR5OiAnbW9iaWxlU3RhcnRBY3Rpdml0eScsXG4gICAgYnJvYWRjYXN0OiAnbW9iaWxlQnJvYWRjYXN0JyxcblxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5COztBQUVBQSxVQUFVLENBQUNDLE9BQVgsR0FBcUIsZUFBZUEsT0FBZixDQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDO0VBQ3pELElBQUlELE1BQU0sQ0FBQ0UsS0FBUCxDQUFhLFVBQWIsQ0FBSixFQUE4QjtJQUM1QixLQUFLQyxHQUFMLENBQVNDLElBQVQsQ0FBZSw2QkFBNEJKLE1BQU8sR0FBbEQ7SUFDQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNLLE9BQVAsQ0FBZSxVQUFmLEVBQTJCLEVBQTNCLEVBQStCQyxJQUEvQixFQUFUO0lBQ0EsT0FBTyxNQUFNLEtBQUtDLGFBQUwsQ0FBbUJQLE1BQW5CLEVBQTJCUSxnQkFBRUMsT0FBRixDQUFVUixJQUFWLElBQWtCQSxJQUFJLENBQUMsQ0FBRCxDQUF0QixHQUE0QkEsSUFBdkQsQ0FBYjtFQUNEOztFQUNELElBQUksQ0FBQyxLQUFLUyxZQUFMLEVBQUwsRUFBMEI7SUFDeEIsTUFBTSxJQUFJQyxtQkFBT0MsbUJBQVgsRUFBTjtFQUNEOztFQUNELE1BQU1DLFFBQVEsR0FBRyxLQUFLQyxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsa0JBQTFCLEtBQWlEQyxzQkFBVUMsT0FBM0QsR0FDYixVQURhLEdBRWIsZUFGSjtFQUdBLE9BQU8sTUFBTSxLQUFLSixZQUFMLENBQWtCQyxPQUFsQixDQUEwQkksT0FBMUIsQ0FBa0NOLFFBQWxDLEVBQTRDLE1BQTVDLEVBQW9EO0lBQy9EYixNQUQrRDtJQUUvREM7RUFGK0QsQ0FBcEQsQ0FBYjtBQUlELENBaEJEOztBQWtCQUgsVUFBVSxDQUFDUyxhQUFYLEdBQTJCLGVBQWVBLGFBQWYsQ0FBOEJhLGFBQTlCLEVBQTZDQyxJQUFJLEdBQUcsRUFBcEQsRUFBd0Q7RUFDakYsTUFBTUMscUJBQXFCLEdBQUc7SUFDNUJDLEtBQUssRUFBRSxhQURxQjtJQUc1QkMscUJBQXFCLEVBQUUsNkJBSEs7SUFLNUJDLGtCQUFrQixFQUFFLDBCQUxRO0lBTTVCQyxpQkFBaUIsRUFBRSx5QkFOUztJQVE1QkMsaUJBQWlCLEVBQUUseUJBUlM7SUFTNUJDLGNBQWMsRUFBRSxzQkFUWTtJQVc1QkMsbUJBQW1CLEVBQUUsMkJBWE87SUFhNUJDLFNBQVMsRUFBRSxXQWJpQjtJQWU1QkMsYUFBYSxFQUFFLHFCQWZhO0lBaUI1QkMsb0JBQW9CLEVBQUUsNEJBakJNO0lBa0I1QkMsbUJBQW1CLEVBQUUsMkJBbEJPO0lBb0I1QkMsZ0JBQWdCLEVBQUUsd0JBcEJVO0lBc0I1QkMsT0FBTyxFQUFFLGVBdEJtQjtJQXdCNUJDLFVBQVUsRUFBRSxrQkF4QmdCO0lBMEI1QkMsUUFBUSxFQUFFLGdCQTFCa0I7SUE0QjVCQyxZQUFZLEVBQUUsb0JBNUJjO0lBNkI1QkMsV0FBVyxFQUFFLG1CQTdCZTtJQThCNUJDLGFBQWEsRUFBRSxxQkE5QmE7SUErQjVCQyxTQUFTLEVBQUUsaUJBL0JpQjtJQWlDNUJDLFdBQVcsRUFBRSxtQkFqQ2U7SUFtQzVCQyxNQUFNLEVBQUUsY0FuQ29CO0lBcUM1QkMsZUFBZSxFQUFFO0VBckNXLENBQTlCOztFQXdDQSxJQUFJLENBQUNwQyxnQkFBRXFDLEdBQUYsQ0FBTXZCLHFCQUFOLEVBQTZCRixhQUE3QixDQUFMLEVBQWtEO0lBQ2hELE1BQU0sSUFBSVQsbUJBQU9tQyxtQkFBWCxDQUFnQywyQkFBMEIxQixhQUFjLEtBQXpDLEdBQ2xDLFFBQU9aLGdCQUFFdUMsSUFBRixDQUFPekIscUJBQVAsQ0FBOEIsMEJBRGxDLENBQU47RUFFRDs7RUFDRCxPQUFPLE1BQU0sS0FBS0EscUJBQXFCLENBQUNGLGFBQUQsQ0FBMUIsRUFBMkNDLElBQTNDLENBQWI7QUFDRCxDQTlDRDs7ZUFnRGV2QixVIn0=
73
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsImxvZyIsImluZm8iLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJfIiwiaXNBcnJheSIsImlzV2ViQ29udGV4dCIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJlbmRwb2ludCIsImNocm9tZWRyaXZlciIsImp3cHJveHkiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJQUk9UT0NPTFMiLCJNSlNPTldQIiwiY29tbWFuZCIsIm1vYmlsZUNvbW1hbmQiLCJvcHRzIiwibW9iaWxlQ29tbWFuZHNNYXBwaW5nIiwic2hlbGwiLCJleGVjRW11Q29uc29sZUNvbW1hbmQiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImNoYW5nZVBlcm1pc3Npb25zIiwiZ2V0UGVybWlzc2lvbnMiLCJwZXJmb3JtRWRpdG9yQWN0aW9uIiwic2Vuc29yU2V0IiwiZ2V0RGV2aWNlVGltZSIsInN0YXJ0U2NyZWVuU3RyZWFtaW5nIiwic3RvcFNjcmVlblN0cmVhbWluZyIsImdldE5vdGlmaWNhdGlvbnMiLCJsaXN0U21zIiwiZGVsZXRlRmlsZSIsImNsZWFyQXBwIiwic3RhcnRTZXJ2aWNlIiwic3RvcFNlcnZpY2UiLCJzdGFydEFjdGl2aXR5IiwiYnJvYWRjYXN0IiwiZ2V0Q29udGV4dHMiLCJ1bmxvY2siLCJyZWZyZXNoR3BzQ2FjaGUiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMsIFBST1RPQ09MUyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBleHRlbnNpb25zID0ge307XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgRXhlY3V0aW5nIG5hdGl2ZSBjb21tYW5kICcke3NjcmlwdH0nYCk7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQXG4gICAgPyAnL2V4ZWN1dGUnXG4gICAgOiAnL2V4ZWN1dGUvc3luYyc7XG4gIHJldHVybiBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHNjcmlwdCxcbiAgICBhcmdzLFxuICB9KTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBtb2JpbGVDb21tYW5kc01hcHBpbmcgPSB7XG4gICAgc2hlbGw6ICdtb2JpbGVTaGVsbCcsXG5cbiAgICBleGVjRW11Q29uc29sZUNvbW1hbmQ6ICdtb2JpbGVFeGVjRW11Q29uc29sZUNvbW1hbmQnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc2Vuc29yU2V0OiAnc2Vuc29yU2V0JyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIHN0YXJ0U2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcnLFxuICAgIHN0b3BTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nJyxcblxuICAgIGdldE5vdGlmaWNhdGlvbnM6ICdtb2JpbGVHZXROb3RpZmljYXRpb25zJyxcblxuICAgIGxpc3RTbXM6ICdtb2JpbGVMaXN0U21zJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcblxuICAgIGNsZWFyQXBwOiAnbW9iaWxlQ2xlYXJBcHAnLFxuXG4gICAgc3RhcnRTZXJ2aWNlOiAnbW9iaWxlU3RhcnRTZXJ2aWNlJyxcbiAgICBzdG9wU2VydmljZTogJ21vYmlsZVN0b3BTZXJ2aWNlJyxcbiAgICBzdGFydEFjdGl2aXR5OiAnbW9iaWxlU3RhcnRBY3Rpdml0eScsXG4gICAgYnJvYWRjYXN0OiAnbW9iaWxlQnJvYWRjYXN0JyxcblxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5COztBQUVBQSxVQUFVLENBQUNDLE9BQVgsR0FBcUIsZUFBZUEsT0FBZixDQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDO0VBQ3pELElBQUlELE1BQU0sQ0FBQ0UsS0FBUCxDQUFhLFVBQWIsQ0FBSixFQUE4QjtJQUM1QixLQUFLQyxHQUFMLENBQVNDLElBQVQsQ0FBZSw2QkFBNEJKLE1BQU8sR0FBbEQ7SUFDQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNLLE9BQVAsQ0FBZSxVQUFmLEVBQTJCLEVBQTNCLEVBQStCQyxJQUEvQixFQUFUO0lBQ0EsT0FBTyxNQUFNLEtBQUtDLGFBQUwsQ0FBbUJQLE1BQW5CLEVBQTJCUSxlQUFBLENBQUVDLE9BQUYsQ0FBVVIsSUFBVixJQUFrQkEsSUFBSSxDQUFDLENBQUQsQ0FBdEIsR0FBNEJBLElBQXZELENBQWI7RUFDRDs7RUFDRCxJQUFJLENBQUMsS0FBS1MsWUFBTCxFQUFMLEVBQTBCO0lBQ3hCLE1BQU0sSUFBSUMsa0JBQUEsQ0FBT0MsbUJBQVgsRUFBTjtFQUNEOztFQUNELE1BQU1DLFFBQVEsR0FBRyxLQUFLQyxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsa0JBQTFCLEtBQWlEQyxxQkFBQSxDQUFVQyxPQUEzRCxHQUNiLFVBRGEsR0FFYixlQUZKO0VBR0EsT0FBTyxNQUFNLEtBQUtKLFlBQUwsQ0FBa0JDLE9BQWxCLENBQTBCSSxPQUExQixDQUFrQ04sUUFBbEMsRUFBNEMsTUFBNUMsRUFBb0Q7SUFDL0RiLE1BRCtEO0lBRS9EQztFQUYrRCxDQUFwRCxDQUFiO0FBSUQsQ0FoQkQ7O0FBa0JBSCxVQUFVLENBQUNTLGFBQVgsR0FBMkIsZUFBZUEsYUFBZixDQUE4QmEsYUFBOUIsRUFBNkNDLElBQUksR0FBRyxFQUFwRCxFQUF3RDtFQUNqRixNQUFNQyxxQkFBcUIsR0FBRztJQUM1QkMsS0FBSyxFQUFFLGFBRHFCO0lBRzVCQyxxQkFBcUIsRUFBRSw2QkFISztJQUs1QkMsa0JBQWtCLEVBQUUsMEJBTFE7SUFNNUJDLGlCQUFpQixFQUFFLHlCQU5TO0lBUTVCQyxpQkFBaUIsRUFBRSx5QkFSUztJQVM1QkMsY0FBYyxFQUFFLHNCQVRZO0lBVzVCQyxtQkFBbUIsRUFBRSwyQkFYTztJQWE1QkMsU0FBUyxFQUFFLFdBYmlCO0lBZTVCQyxhQUFhLEVBQUUscUJBZmE7SUFpQjVCQyxvQkFBb0IsRUFBRSw0QkFqQk07SUFrQjVCQyxtQkFBbUIsRUFBRSwyQkFsQk87SUFvQjVCQyxnQkFBZ0IsRUFBRSx3QkFwQlU7SUFzQjVCQyxPQUFPLEVBQUUsZUF0Qm1CO0lBd0I1QkMsVUFBVSxFQUFFLGtCQXhCZ0I7SUEwQjVCQyxRQUFRLEVBQUUsZ0JBMUJrQjtJQTRCNUJDLFlBQVksRUFBRSxvQkE1QmM7SUE2QjVCQyxXQUFXLEVBQUUsbUJBN0JlO0lBOEI1QkMsYUFBYSxFQUFFLHFCQTlCYTtJQStCNUJDLFNBQVMsRUFBRSxpQkEvQmlCO0lBaUM1QkMsV0FBVyxFQUFFLG1CQWpDZTtJQW1DNUJDLE1BQU0sRUFBRSxjQW5Db0I7SUFxQzVCQyxlQUFlLEVBQUU7RUFyQ1csQ0FBOUI7O0VBd0NBLElBQUksQ0FBQ3BDLGVBQUEsQ0FBRXFDLEdBQUYsQ0FBTXZCLHFCQUFOLEVBQTZCRixhQUE3QixDQUFMLEVBQWtEO0lBQ2hELE1BQU0sSUFBSVQsa0JBQUEsQ0FBT21DLG1CQUFYLENBQWdDLDJCQUEwQjFCLGFBQWMsS0FBekMsR0FDbEMsUUFBT1osZUFBQSxDQUFFdUMsSUFBRixDQUFPekIscUJBQVAsQ0FBOEIsMEJBRGxDLENBQU47RUFFRDs7RUFDRCxPQUFPLE1BQU0sS0FBS0EscUJBQXFCLENBQUNGLGFBQUQsQ0FBMUIsRUFBMkNDLElBQTNDLENBQWI7QUFDRCxDQTlDRDs7ZUFnRGV2QixVIn0=
@@ -232,4 +232,4 @@ var _default = commands;
232
232
  exports.default = _default;require('source-map-support').install();
233
233
 
234
234
 
235
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbGUtYWN0aW9ucy5qcyIsIm5hbWVzIjpbIkNPTlRBSU5FUl9QQVRIX01BUktFUiIsIkNPTlRBSU5FUl9QQVRIX1BBVFRFUk4iLCJSZWdFeHAiLCJBTkRST0lEX01FRElBX1JFU0NBTl9JTlRFTlQiLCJjb21tYW5kcyIsInBhcnNlQ29udGFpbmVyUGF0aCIsInJlbW90ZVBhdGgiLCJtYXRjaCIsImV4ZWMiLCJFcnJvciIsInBhdGgiLCJwb3NpeCIsInJlc29sdmUiLCJzY2FuTWVkaWEiLCJhZGIiLCJsb2ciLCJkZWJ1ZyIsImdldEFwaUxldmVsIiwic2hlbGwiLCJlIiwid2FybiIsInN0ZGVyciIsIm1lc3NhZ2UiLCJlc2NhcGVQYXRoIiwicCIsInJlcGxhY2UiLCJwdWxsRmlsZSIsImVuZHNXaXRoIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJ0bXBEZXN0aW5hdGlvbiIsInN0YXJ0c1dpdGgiLCJwYWNrYWdlSWQiLCJwYXRoSW5Db250YWluZXIiLCJiYXNlbmFtZSIsImVycm9yQW5kVGhyb3ciLCJsb2NhbEZpbGUiLCJ0ZW1wRGlyIiwicHJlZml4Iiwic3VmZml4IiwicHVsbCIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJmcyIsImV4aXN0cyIsInVubGluayIsInB1c2hGaWxlIiwiYmFzZTY0RGF0YSIsIl8iLCJpc0FycmF5IiwiQnVmZmVyIiwiZnJvbSIsImNvbnRlbnQiLCJ3cml0ZUZpbGUiLCJkaXJuYW1lIiwicHVzaCIsInB1bGxGb2xkZXIiLCJsb2NhbEZvbGRlciIsInppcCIsInRvSW5NZW1vcnlaaXAiLCJlbmNvZGVUb0Jhc2U2NCIsImRlbGV0ZUZpbGVPckZvbGRlciIsInBlcmZvcm1SZW1vdGVGc0NoZWNrIiwib3AiLCJydW5BcyIsInBhc3NGbGFnIiwiY2hlY2tDbWQiLCJmdWxsQ21kIiwiaW5jbHVkZXMiLCJpZ24iLCJpc0ZpbGUiLCJpc0RpciIsImlzUHJlc2VudCIsImRzdFBhdGgiLCJwa2dJZCIsImluZm8iLCJleHBlY3RzRmlsZSIsIm1vYmlsZURlbGV0ZUZpbGUiLCJvcHRzIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2ZpbGUtYWN0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHV0aWwsIHppcCwgdGVtcERpciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5cbmNvbnN0IENPTlRBSU5FUl9QQVRIX01BUktFUiA9ICdAJztcbi8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvUExkQjBHLzJcbmNvbnN0IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtDT05UQUlORVJfUEFUSF9NQVJLRVJ9KFteL10rKS8oLispYCk7XG5jb25zdCBBTkRST0lEX01FRElBX1JFU0NBTl9JTlRFTlQgPSAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1NDQU5ORVJfU0NBTl9GSUxFJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIHBhdGggZnJvbSB0aGUgZ2l2ZW4gdmFsdWVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgcHJlZm9ybWF0dGVkIHJlbW90ZSBwYXRoLCB3aGljaCBsb29rcyBsaWtlXG4gKiBgQG15LmFwcC5pZC9teS9wYXRoYFxuICogQHJldHVybnMge0FycmF5PHN0cmluZz59IEFuIGFycmF5LCB3aGVyZSB0aGUgZmlyc3QgaXRlbSBpcyB0aGUgcGFyc2VkIHBhY2thZ2VcbiAqIGlkZW50aWZpZXIgYW5kIHRoZSBzZWNvbmQgb25lIGlzIHRoZSBhY3R1YWwgZGVzdGluYXRpb24gcGF0aCBpbnNpZGUgdGhlIHBhY2thZ2UuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIHN0cmluZyBjYW5ub3QgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQ29udGFpbmVyUGF0aCAocmVtb3RlUGF0aCkge1xuICBjb25zdCBtYXRjaCA9IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4uZXhlYyhyZW1vdGVQYXRoKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCBwYWNrYWdlIGlkZW50aWZpZXIgaXMgc2VwYXJhdGVkIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggd2l0aCBhIHNpbmdsZSBzbGFzaC4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICByZXR1cm4gW21hdGNoWzFdLCBwYXRoLnBvc2l4LnJlc29sdmUoYC9kYXRhL2RhdGEvJHttYXRjaFsxXX1gLCBtYXRjaFsyXSldO1xufVxuXG4vKipcbiAqIFNjYW5zIHRoZSBnaXZlbiBmaWxlL2ZvbGRlciBvbiB0aGUgcmVtb3RlIGRldmljZVxuICogYW5kIGFkZHMgbWF0Y2hpbmcgaXRlbXMgdG8gdGhlIGRldmljZSdzIG1lZGlhIGxpYnJhcnkuXG4gKiBFeGNlcHRpb25zIGFyZSBpZ25vcmVkIGFuZCB3cml0dGVuIGludG8gdGhlIGxvZy5cbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtPYmplY3Q/fSBsb2cgTG9nZ2VyIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZmlsZS9mb2xkZXIgcGF0aCBvbiB0aGUgcmVtb3RlIGRldmljZVxuICovXG5hc3luYyBmdW5jdGlvbiBzY2FuTWVkaWEgKGFkYiwgcmVtb3RlUGF0aCwgbG9nID0gbnVsbCkge1xuICBsb2c/LmRlYnVnKGBQZXJmb3JtaW5nIG1lZGlhIHNjYW4gb2YgJyR7cmVtb3RlUGF0aH0nYCk7XG4gIHRyeSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE2MTg0XG4gICAgaWYgKGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpID49IDI5KSB7XG4gICAgICBhd2FpdCBhZGIuc2Nhbk1lZGlhKHJlbW90ZVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBhZGIuc2hlbGwoW1xuICAgICAgICAnYW0nLCAnYnJvYWRjYXN0JyxcbiAgICAgICAgJy1hJywgQU5EUk9JRF9NRURJQV9SRVNDQU5fSU5URU5ULFxuICAgICAgICAnLWQnLCBgZmlsZTovLyR7cmVtb3RlUGF0aH1gXG4gICAgICBdKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2c/Lndhcm4oYElnbm9yaW5nIGFuIHVuZXhwZWN0ZWQgZXJyb3IgdXBvbiBtZWRpYSBzY2FubmluZyBvZiAnJHtyZW1vdGVQYXRofSc6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59XG5cbi8qKlxuICogQSBzbWFsbCBoZWxwZXIsIHdoaWNoIGVzY2FwZXMgc2luZ2xlIHF1b3RlcyBpbiBwYXRocyxcbiAqIHNvIHRoZXkgYXJlIHNhZmUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZiBzaGVsbCBjb21tYW5kc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwIFRoZSBpbml0aWFsIHJlbW90ZSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZXNjYXBlZCBwYXRoIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVBhdGggKHApIHtcbiAgcmV0dXJuIHAucmVwbGFjZSgvJy9nLCBgXFxcXCdgKTtcbn1cblxuLyoqXG4gKiBQdWxscyBhIHJlbW90ZSBmaWxlIGZyb20gdGhlIGRldmljZS5cbiAqIEl0IGlzIHJlcXVpcmVkLCB0aGF0IGEgcGFja2FnZSBoYXMgZGVidWdnaW5nIGZsYWcgZW5hYmxlZFxuICogaW4gb3JkZXIgdG8gYWNjZXNzIGl0cyBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZW1vdGUgZmlsZVxuICogb3IgYSBzcGVjaWFsbHkgZm9ybWF0dGVkIHBhdGgsIHdoaWNoIHBvaW50cyB0byBhbiBpdGVtIGluc2lkZSBhcHAgYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgZW5jb2RlZCBjb250ZW50IG9mIHRoZSBwdWxsZWQgZmlsZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwdWxsIG9wZXJhdGlvbiBmYWlsZWRcbiAqL1xuY29tbWFuZHMucHVsbEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdWxsRmlsZSAocmVtb3RlUGF0aCkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCByZW1vdGUgcGF0aCBwb2ludHMgdG8gYSBmaWxlIGFuZCBub3QgdG8gYSBmb2xkZXIuIGAgK1xuICAgICAgYCcke3JlbW90ZVBhdGh9JyBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgbGV0IHRtcERlc3RpbmF0aW9uID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gV2lsbCBnZXQgdGhlIGRhdGEgZnJvbSAnJHtwYXRoSW5Db250YWluZXJ9J2ApO1xuICAgIHRtcERlc3RpbmF0aW9uID0gYC9kYXRhL2xvY2FsL3RtcC8ke3BhdGgucG9zaXguYmFzZW5hbWUocGF0aEluQ29udGFpbmVyKX1gO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ3J1bi1hcycsIHBhY2thZ2VJZCwgYGNobW9kIDc3NyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BdKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFtcbiAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgYGNwIC1mICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nICcke2VzY2FwZVBhdGgodG1wRGVzdGluYXRpb24pfSdgXG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGFja2FnZUlkfScgYXBwbGljYXRpb24uIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYElzIHRoZSBhcHBsaWNhdGlvbiBpbnN0YWxsZWQgYW5kIGhhcyAnZGVidWdnYWJsZScgYnVpbGQgb3B0aW9uIHNldCB0byB0cnVlPyBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGxvY2FsRmlsZSA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnYXBwaXVtJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmFkYi5wdWxsKHRtcERlc3RpbmF0aW9uIHx8IHJlbW90ZVBhdGgsIGxvY2FsRmlsZSk7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdXNoZWQgdGhlIGdpdmVuIGRhdGEgdG8gYSBmaWxlIG9uIHRoZSByZW1vdGUgZGV2aWNlXG4gKiBJdCBpcyByZXF1aXJlZCwgdGhhdCBhIHBhY2thZ2UgaGFzIGRlYnVnZ2luZyBmbGFnIGVuYWJsZWRcbiAqIGluIG9yZGVyIHRvIGFjY2VzcyBpdHMgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZpbGUgb3JcbiAqIGEgZmlsZSBpbnNpZGUgYSBwYWNrYWdlIGJ1bmRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NERhdGEgQmFzZTY0IGVuY29kZWQgZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZVxuICogcmVtb3RlIGZpbGUuIFRoZSByZW1vdGUgZmlsZSB3aWxsIGJlIHNpbGVudGx5IG92ZXJyaWRkZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHB1c2hpbmcgdGhlIGRhdGFcbiAqL1xuY29tbWFuZHMucHVzaEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdXNoRmlsZSAocmVtb3RlUGF0aCwgYmFzZTY0RGF0YSkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZpbGUgYW5kIG5vdCB0byBhIGZvbGRlci4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICBjb25zdCBsb2NhbEZpbGUgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy50bXAnfSk7XG4gIGlmIChfLmlzQXJyYXkoYmFzZTY0RGF0YSkpIHtcbiAgICAvLyBzb21lIGNsaWVudHMgKGFoZW0pIGphdmEsIHNlbmQgYSBieXRlIGFycmF5IGVuY29kaW5nIHV0ZjggY2hhcmFjdGVyc1xuICAgIC8vIGluc3RlYWQgb2YgYSBzdHJpbmcsIHdoaWNoIHdvdWxkIGJlIGluZmluaXRlbHkgYmV0dGVyIVxuICAgIGJhc2U2NERhdGEgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhKS50b1N0cmluZygndXRmOCcpO1xuICB9XG4gIGNvbnN0IGNvbnRlbnQgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhLCAnYmFzZTY0Jyk7XG4gIGxldCB0bXBEZXN0aW5hdGlvbiA9IG51bGw7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGxvY2FsRmlsZSwgY29udGVudC50b1N0cmluZygnYmluYXJ5JyksICdiaW5hcnknKTtcbiAgICBpZiAocmVtb3RlUGF0aC5zdGFydHNXaXRoKENPTlRBSU5FUl9QQVRIX01BUktFUikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlSWQsIHBhdGhJbkNvbnRhaW5lcl0gPSBwYXJzZUNvbnRhaW5lclBhdGgocmVtb3RlUGF0aCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gYCArXG4gICAgICAgIGBXaWxsIHB1dCB0aGUgZGF0YSBpbnRvICcke3BhdGhJbkNvbnRhaW5lcn0nYCk7XG4gICAgICB0bXBEZXN0aW5hdGlvbiA9IGAvZGF0YS9sb2NhbC90bXAvJHtwYXRoLnBvc2l4LmJhc2VuYW1lKHBhdGhJbkNvbnRhaW5lcil9YDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFxuICAgICAgICAgIFsncnVuLWFzJywgcGFja2FnZUlkLCBgbWtkaXIgLXAgJyR7ZXNjYXBlUGF0aChwYXRoLnBvc2l4LmRpcm5hbWUocGF0aEluQ29udGFpbmVyKSl9J2BdXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgdG91Y2ggJyR7ZXNjYXBlUGF0aChwYXRoSW5Db250YWluZXIpfSdgXSk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgY2htb2QgNzc3ICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nYF0pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5wdXNoKGxvY2FsRmlsZSwgdG1wRGVzdGluYXRpb24pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbXG4gICAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgICBgY3AgLWYgJyR7ZXNjYXBlUGF0aCh0bXBEZXN0aW5hdGlvbil9JyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BcbiAgICAgICAgXSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENhbm5vdCBhY2Nlc3MgdGhlIGNvbnRhaW5lciBvZiAnJHtwYWNrYWdlSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkYiBwdXNoIGNyZWF0ZXMgZm9sZGVycyBhbmQgb3ZlcndyaXRlcyBleGlzdGluZyBmaWxlcy5cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnB1c2gobG9jYWxGaWxlLCByZW1vdGVQYXRoKTtcblxuICAgICAgLy8gaWYgd2UgaGF2ZSBwdXNoZWQgYSBmaWxlLCBpdCBtaWdodCBiZSBhIG1lZGlhIGZpbGUsIHNvIGVuc3VyZSB0aGF0XG4gICAgICAvLyBhcHBzIGtub3cgYWJvdXQgaXRcbiAgICAgIGF3YWl0IHNjYW5NZWRpYSh0aGlzLmFkYiwgcmVtb3RlUGF0aCwgdGhpcy5sb2cpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdWxscyB0aGUgd2hvbGUgZm9sZGVyIGZyb20gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIGEgZm9sZGVyIG9uIHRoZVxuICogcmVtb3RlIGRldmljZSBvciBhIGZvbGRlciBpbnNpZGUgYW4gYXBwbGljYXRpb24gYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBhbmQgemlwcGVkIGNvbnRlbnQgb2YgdGhlIGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgZ2V0dGluZyB0aGUgZm9sZGVyIGNvbnRlbnRcbiAqL1xuY29tbWFuZHMucHVsbEZvbGRlciA9IGFzeW5jIGZ1bmN0aW9uIHB1bGxGb2xkZXIgKHJlbW90ZVBhdGgpIHtcbiAgbGV0IGxvY2FsRm9sZGVyID0gYXdhaXQgdGVtcERpci5wYXRoKHtwcmVmaXg6ICdhcHBpdW0nfSk7XG4gIGF3YWl0IHRoaXMuYWRiLnB1bGwocmVtb3RlUGF0aCwgbG9jYWxGb2xkZXIpO1xuICByZXR1cm4gKGF3YWl0IHppcC50b0luTWVtb3J5WmlwKGxvY2FsRm9sZGVyLCB7XG4gICAgZW5jb2RlVG9CYXNlNjQ6IHRydWUsXG4gIH0pKS50b1N0cmluZygpO1xufTtcblxuLyoqXG4gKiBEZWxldGVzIHRoZSBnaXZlbiBmb2xkZXIgb3IgZmlsZSBmcm9tIHRoZSByZW1vdGUgZGV2aWNlXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZvbGRlclxuICogb3IgZmlsZSAoZm9sZGVyIG5hbWVzIG11c3QgZW5kIHdpdGggYSBzaW5nbGUgc2xhc2gpXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHByb3ZpZGVkIHJlbW90ZSBwYXRoIGlzIGludmFsaWQgb3JcbiAqIHRoZSBwYWNrYWdlIGNvbnRlbnQgY2Fubm90IGJlIGFjY2Vzc2VkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgaXRlbSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSByZW1vdGUgcGF0aCBpcyB2YWxpZCwgYnV0IHRoZSByZW1vdGUgcGF0aCBkb2VzIG5vdCBleGlzdFxuICogdGhpcyBmdW5jdGlvbiByZXR1cm4gYGZhbHNlYC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlRmlsZU9yRm9sZGVyIChhZGIsIHJlbW90ZVBhdGgpIHtcbiAgY29uc3QgcGVyZm9ybVJlbW90ZUZzQ2hlY2sgPSBhc3luYyAocCwgb3AsIHJ1bkFzID0gbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhc3NGbGFnID0gJ19fUEFTU19fJztcbiAgICBjb25zdCBjaGVja0NtZCA9IGBbIC0ke29wfSAnJHtlc2NhcGVQYXRoKHApfScgXSAmJiBlY2hvICR7cGFzc0ZsYWd9YDtcbiAgICBjb25zdCBmdWxsQ21kID0gcnVuQXMgPyBgcnVuLWFzICR7cnVuQXN9ICR7Y2hlY2tDbWR9YCA6IGNoZWNrQ21kO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gXy5pbmNsdWRlcyhhd2FpdCBhZGIuc2hlbGwoW2Z1bGxDbWRdKSwgcGFzc0ZsYWcpO1xuICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaXNGaWxlID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2YnLCBydW5Bcyk7XG4gIGNvbnN0IGlzRGlyID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2QnLCBydW5Bcyk7XG4gIGNvbnN0IGlzUHJlc2VudCA9IGFzeW5jIChwLCBydW5BcyA9IG51bGwpID0+IGF3YWl0IHBlcmZvcm1SZW1vdGVGc0NoZWNrKHAsICdlJywgcnVuQXMpO1xuXG4gIGxldCBkc3RQYXRoID0gcmVtb3RlUGF0aDtcbiAgbGV0IHBrZ0lkID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9J2ApO1xuICAgIGRzdFBhdGggPSBwYXRoSW5Db250YWluZXI7XG4gICAgcGtnSWQgPSBwYWNrYWdlSWQ7XG4gIH1cblxuICBpZiAocGtnSWQpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYWRiLnNoZWxsKFsncnVuLWFzJywgcGtnSWQsICdscyddKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGtnSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGRvZXMgbm90IGV4aXN0LiBQZXJoYXBzLCBhbHJlYWR5IGRlbGV0ZWQ/YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0c0ZpbGUgPSAhcmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpO1xuICBpZiAoZXhwZWN0c0ZpbGUgJiYgIWF3YWl0IGlzRmlsZShkc3RQYXRoLCBwa2dJZCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgaXRlbSBhdCAnJHtkc3RQYXRofScgaXMgbm90IGEgZmlsZWApO1xuICB9IGVsc2UgaWYgKCFleHBlY3RzRmlsZSAmJiAhYXdhaXQgaXNEaXIoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGlzIG5vdCBhIGZvbGRlcmApO1xuICB9XG5cbiAgaWYgKHBrZ0lkKSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFxuICAgICAgWydydW4tYXMnLCBwa2dJZCwgYHJtIC1mJHtleHBlY3RzRmlsZSA/ICcnIDogJ3InfSAnJHtlc2NhcGVQYXRoKGRzdFBhdGgpfSdgXSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFsncm0nLCBgLWYke2V4cGVjdHNGaWxlID8gJycgOiAncid9YCwgZHN0UGF0aF0pO1xuICB9XG4gIGlmIChhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIHN0aWxsIGV4aXN0cyBhZnRlciBiZWluZyBkZWxldGVkLiBgICtcbiAgICAgIGBJcyBpdCB3cml0YWJsZT9gKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZWxldGVGaWxlT3B0c1xuICogQHByb3BlcnR5IHshc3RyaW5nfSByZW1vdGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHJlbW90ZSBmaWxlXG4gKiBvciBhIGZpbGUgaW5zaWRlIGFuIGFwcGxpY2F0aW9uIGJ1bmRsZSAoZm9yIGV4YW1wbGUgYEBteS5hcHAuaWQvcGF0aC9pbi9idW5kbGVgKVxuICovXG5cbi8qKlxuICogRGVsZXRlcyBhIGZpbGUgb24gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge0RlbGV0ZUZpbGVPcHRzfSBvcHRzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSBwYXRoIHRvIGEgcmVtb3RlIGZpbGUgaXMgdmFsaWQsIGJ1dCB0aGUgZmlsZSBpdHNlbGYgZG9lcyBub3QgZXhpc3RcbiAqIHRoZW4gYGZhbHNlYCBpcyByZXR1cm5lZC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYXJndW1lbnQgaXMgaW52YWxpZCBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGVcbiAqIGRlbGV0aW5nIHRoZSBmaWxlXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURlbGV0ZUZpbGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEZWxldGVGaWxlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge3JlbW90ZVBhdGh9ID0gb3B0cztcbiAgaWYgKCFyZW1vdGVQYXRoKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdyZW1vdGVQYXRoJyBhcmd1bWVudCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZvbGRlciBhbmQgbm90IHRvIGEgZmlsZS4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgZGVsZXRlRmlsZU9yRm9sZGVyKHRoaXMuYWRiLCByZW1vdGVQYXRoKTtcbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxxQkFBcUIsR0FBRyxHQUE5QjtBQUVBLE1BQU1DLHNCQUFzQixHQUFHLElBQUlDLE1BQUosQ0FBWSxJQUFHRixxQkFBc0IsY0FBckMsQ0FBL0I7QUFDQSxNQUFNRywyQkFBMkIsR0FBRywrQ0FBcEM7QUFHQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7OztBQVdBLFNBQVNDLGtCQUFULENBQTZCQyxVQUE3QixFQUF5QztFQUN2QyxNQUFNQyxLQUFLLEdBQUdOLHNCQUFzQixDQUFDTyxJQUF2QixDQUE0QkYsVUFBNUIsQ0FBZDs7RUFDQSxJQUFJLENBQUNDLEtBQUwsRUFBWTtJQUNWLE1BQU0sSUFBSUUsS0FBSixDQUFXLGtHQUFELEdBQ2IsSUFBR0gsVUFBVyxvQkFEWCxDQUFOO0VBRUQ7O0VBQ0QsT0FBTyxDQUFDQyxLQUFLLENBQUMsQ0FBRCxDQUFOLEVBQVdHLGNBQUtDLEtBQUwsQ0FBV0MsT0FBWCxDQUFvQixjQUFhTCxLQUFLLENBQUMsQ0FBRCxDQUFJLEVBQTFDLEVBQTZDQSxLQUFLLENBQUMsQ0FBRCxDQUFsRCxDQUFYLENBQVA7QUFDRDs7QUFXRCxlQUFlTSxTQUFmLENBQTBCQyxHQUExQixFQUErQlIsVUFBL0IsRUFBMkNTLEdBQUcsR0FBRyxJQUFq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
235
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbGUtYWN0aW9ucy5qcyIsIm5hbWVzIjpbIkNPTlRBSU5FUl9QQVRIX01BUktFUiIsIkNPTlRBSU5FUl9QQVRIX1BBVFRFUk4iLCJSZWdFeHAiLCJBTkRST0lEX01FRElBX1JFU0NBTl9JTlRFTlQiLCJjb21tYW5kcyIsInBhcnNlQ29udGFpbmVyUGF0aCIsInJlbW90ZVBhdGgiLCJtYXRjaCIsImV4ZWMiLCJFcnJvciIsInBhdGgiLCJwb3NpeCIsInJlc29sdmUiLCJzY2FuTWVkaWEiLCJhZGIiLCJsb2ciLCJkZWJ1ZyIsImdldEFwaUxldmVsIiwic2hlbGwiLCJlIiwid2FybiIsInN0ZGVyciIsIm1lc3NhZ2UiLCJlc2NhcGVQYXRoIiwicCIsInJlcGxhY2UiLCJwdWxsRmlsZSIsImVuZHNXaXRoIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJ0bXBEZXN0aW5hdGlvbiIsInN0YXJ0c1dpdGgiLCJwYWNrYWdlSWQiLCJwYXRoSW5Db250YWluZXIiLCJiYXNlbmFtZSIsImVycm9yQW5kVGhyb3ciLCJsb2NhbEZpbGUiLCJ0ZW1wRGlyIiwicHJlZml4Iiwic3VmZml4IiwicHVsbCIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJmcyIsImV4aXN0cyIsInVubGluayIsInB1c2hGaWxlIiwiYmFzZTY0RGF0YSIsIl8iLCJpc0FycmF5IiwiQnVmZmVyIiwiZnJvbSIsImNvbnRlbnQiLCJ3cml0ZUZpbGUiLCJkaXJuYW1lIiwicHVzaCIsInB1bGxGb2xkZXIiLCJsb2NhbEZvbGRlciIsInppcCIsInRvSW5NZW1vcnlaaXAiLCJlbmNvZGVUb0Jhc2U2NCIsImRlbGV0ZUZpbGVPckZvbGRlciIsInBlcmZvcm1SZW1vdGVGc0NoZWNrIiwib3AiLCJydW5BcyIsInBhc3NGbGFnIiwiY2hlY2tDbWQiLCJmdWxsQ21kIiwiaW5jbHVkZXMiLCJpZ24iLCJpc0ZpbGUiLCJpc0RpciIsImlzUHJlc2VudCIsImRzdFBhdGgiLCJwa2dJZCIsImluZm8iLCJleHBlY3RzRmlsZSIsIm1vYmlsZURlbGV0ZUZpbGUiLCJvcHRzIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2ZpbGUtYWN0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHV0aWwsIHppcCwgdGVtcERpciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5cbmNvbnN0IENPTlRBSU5FUl9QQVRIX01BUktFUiA9ICdAJztcbi8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvUExkQjBHLzJcbmNvbnN0IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtDT05UQUlORVJfUEFUSF9NQVJLRVJ9KFteL10rKS8oLispYCk7XG5jb25zdCBBTkRST0lEX01FRElBX1JFU0NBTl9JTlRFTlQgPSAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1NDQU5ORVJfU0NBTl9GSUxFJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIHBhdGggZnJvbSB0aGUgZ2l2ZW4gdmFsdWVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgcHJlZm9ybWF0dGVkIHJlbW90ZSBwYXRoLCB3aGljaCBsb29rcyBsaWtlXG4gKiBgQG15LmFwcC5pZC9teS9wYXRoYFxuICogQHJldHVybnMge0FycmF5PHN0cmluZz59IEFuIGFycmF5LCB3aGVyZSB0aGUgZmlyc3QgaXRlbSBpcyB0aGUgcGFyc2VkIHBhY2thZ2VcbiAqIGlkZW50aWZpZXIgYW5kIHRoZSBzZWNvbmQgb25lIGlzIHRoZSBhY3R1YWwgZGVzdGluYXRpb24gcGF0aCBpbnNpZGUgdGhlIHBhY2thZ2UuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIHN0cmluZyBjYW5ub3QgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQ29udGFpbmVyUGF0aCAocmVtb3RlUGF0aCkge1xuICBjb25zdCBtYXRjaCA9IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4uZXhlYyhyZW1vdGVQYXRoKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCBwYWNrYWdlIGlkZW50aWZpZXIgaXMgc2VwYXJhdGVkIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggd2l0aCBhIHNpbmdsZSBzbGFzaC4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICByZXR1cm4gW21hdGNoWzFdLCBwYXRoLnBvc2l4LnJlc29sdmUoYC9kYXRhL2RhdGEvJHttYXRjaFsxXX1gLCBtYXRjaFsyXSldO1xufVxuXG4vKipcbiAqIFNjYW5zIHRoZSBnaXZlbiBmaWxlL2ZvbGRlciBvbiB0aGUgcmVtb3RlIGRldmljZVxuICogYW5kIGFkZHMgbWF0Y2hpbmcgaXRlbXMgdG8gdGhlIGRldmljZSdzIG1lZGlhIGxpYnJhcnkuXG4gKiBFeGNlcHRpb25zIGFyZSBpZ25vcmVkIGFuZCB3cml0dGVuIGludG8gdGhlIGxvZy5cbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtPYmplY3Q/fSBsb2cgTG9nZ2VyIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZmlsZS9mb2xkZXIgcGF0aCBvbiB0aGUgcmVtb3RlIGRldmljZVxuICovXG5hc3luYyBmdW5jdGlvbiBzY2FuTWVkaWEgKGFkYiwgcmVtb3RlUGF0aCwgbG9nID0gbnVsbCkge1xuICBsb2c/LmRlYnVnKGBQZXJmb3JtaW5nIG1lZGlhIHNjYW4gb2YgJyR7cmVtb3RlUGF0aH0nYCk7XG4gIHRyeSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE2MTg0XG4gICAgaWYgKGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpID49IDI5KSB7XG4gICAgICBhd2FpdCBhZGIuc2Nhbk1lZGlhKHJlbW90ZVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBhZGIuc2hlbGwoW1xuICAgICAgICAnYW0nLCAnYnJvYWRjYXN0JyxcbiAgICAgICAgJy1hJywgQU5EUk9JRF9NRURJQV9SRVNDQU5fSU5URU5ULFxuICAgICAgICAnLWQnLCBgZmlsZTovLyR7cmVtb3RlUGF0aH1gXG4gICAgICBdKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2c/Lndhcm4oYElnbm9yaW5nIGFuIHVuZXhwZWN0ZWQgZXJyb3IgdXBvbiBtZWRpYSBzY2FubmluZyBvZiAnJHtyZW1vdGVQYXRofSc6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59XG5cbi8qKlxuICogQSBzbWFsbCBoZWxwZXIsIHdoaWNoIGVzY2FwZXMgc2luZ2xlIHF1b3RlcyBpbiBwYXRocyxcbiAqIHNvIHRoZXkgYXJlIHNhZmUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZiBzaGVsbCBjb21tYW5kc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwIFRoZSBpbml0aWFsIHJlbW90ZSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZXNjYXBlZCBwYXRoIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVBhdGggKHApIHtcbiAgcmV0dXJuIHAucmVwbGFjZSgvJy9nLCBgXFxcXCdgKTtcbn1cblxuLyoqXG4gKiBQdWxscyBhIHJlbW90ZSBmaWxlIGZyb20gdGhlIGRldmljZS5cbiAqIEl0IGlzIHJlcXVpcmVkLCB0aGF0IGEgcGFja2FnZSBoYXMgZGVidWdnaW5nIGZsYWcgZW5hYmxlZFxuICogaW4gb3JkZXIgdG8gYWNjZXNzIGl0cyBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZW1vdGUgZmlsZVxuICogb3IgYSBzcGVjaWFsbHkgZm9ybWF0dGVkIHBhdGgsIHdoaWNoIHBvaW50cyB0byBhbiBpdGVtIGluc2lkZSBhcHAgYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgZW5jb2RlZCBjb250ZW50IG9mIHRoZSBwdWxsZWQgZmlsZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwdWxsIG9wZXJhdGlvbiBmYWlsZWRcbiAqL1xuY29tbWFuZHMucHVsbEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdWxsRmlsZSAocmVtb3RlUGF0aCkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCByZW1vdGUgcGF0aCBwb2ludHMgdG8gYSBmaWxlIGFuZCBub3QgdG8gYSBmb2xkZXIuIGAgK1xuICAgICAgYCcke3JlbW90ZVBhdGh9JyBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgbGV0IHRtcERlc3RpbmF0aW9uID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gV2lsbCBnZXQgdGhlIGRhdGEgZnJvbSAnJHtwYXRoSW5Db250YWluZXJ9J2ApO1xuICAgIHRtcERlc3RpbmF0aW9uID0gYC9kYXRhL2xvY2FsL3RtcC8ke3BhdGgucG9zaXguYmFzZW5hbWUocGF0aEluQ29udGFpbmVyKX1gO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ3J1bi1hcycsIHBhY2thZ2VJZCwgYGNobW9kIDc3NyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BdKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFtcbiAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgYGNwIC1mICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nICcke2VzY2FwZVBhdGgodG1wRGVzdGluYXRpb24pfSdgXG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGFja2FnZUlkfScgYXBwbGljYXRpb24uIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYElzIHRoZSBhcHBsaWNhdGlvbiBpbnN0YWxsZWQgYW5kIGhhcyAnZGVidWdnYWJsZScgYnVpbGQgb3B0aW9uIHNldCB0byB0cnVlPyBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGxvY2FsRmlsZSA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnYXBwaXVtJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmFkYi5wdWxsKHRtcERlc3RpbmF0aW9uIHx8IHJlbW90ZVBhdGgsIGxvY2FsRmlsZSk7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdXNoZWQgdGhlIGdpdmVuIGRhdGEgdG8gYSBmaWxlIG9uIHRoZSByZW1vdGUgZGV2aWNlXG4gKiBJdCBpcyByZXF1aXJlZCwgdGhhdCBhIHBhY2thZ2UgaGFzIGRlYnVnZ2luZyBmbGFnIGVuYWJsZWRcbiAqIGluIG9yZGVyIHRvIGFjY2VzcyBpdHMgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZpbGUgb3JcbiAqIGEgZmlsZSBpbnNpZGUgYSBwYWNrYWdlIGJ1bmRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NERhdGEgQmFzZTY0IGVuY29kZWQgZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZVxuICogcmVtb3RlIGZpbGUuIFRoZSByZW1vdGUgZmlsZSB3aWxsIGJlIHNpbGVudGx5IG92ZXJyaWRkZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHB1c2hpbmcgdGhlIGRhdGFcbiAqL1xuY29tbWFuZHMucHVzaEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdXNoRmlsZSAocmVtb3RlUGF0aCwgYmFzZTY0RGF0YSkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZpbGUgYW5kIG5vdCB0byBhIGZvbGRlci4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICBjb25zdCBsb2NhbEZpbGUgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy50bXAnfSk7XG4gIGlmIChfLmlzQXJyYXkoYmFzZTY0RGF0YSkpIHtcbiAgICAvLyBzb21lIGNsaWVudHMgKGFoZW0pIGphdmEsIHNlbmQgYSBieXRlIGFycmF5IGVuY29kaW5nIHV0ZjggY2hhcmFjdGVyc1xuICAgIC8vIGluc3RlYWQgb2YgYSBzdHJpbmcsIHdoaWNoIHdvdWxkIGJlIGluZmluaXRlbHkgYmV0dGVyIVxuICAgIGJhc2U2NERhdGEgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhKS50b1N0cmluZygndXRmOCcpO1xuICB9XG4gIGNvbnN0IGNvbnRlbnQgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhLCAnYmFzZTY0Jyk7XG4gIGxldCB0bXBEZXN0aW5hdGlvbiA9IG51bGw7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGxvY2FsRmlsZSwgY29udGVudC50b1N0cmluZygnYmluYXJ5JyksICdiaW5hcnknKTtcbiAgICBpZiAocmVtb3RlUGF0aC5zdGFydHNXaXRoKENPTlRBSU5FUl9QQVRIX01BUktFUikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlSWQsIHBhdGhJbkNvbnRhaW5lcl0gPSBwYXJzZUNvbnRhaW5lclBhdGgocmVtb3RlUGF0aCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gYCArXG4gICAgICAgIGBXaWxsIHB1dCB0aGUgZGF0YSBpbnRvICcke3BhdGhJbkNvbnRhaW5lcn0nYCk7XG4gICAgICB0bXBEZXN0aW5hdGlvbiA9IGAvZGF0YS9sb2NhbC90bXAvJHtwYXRoLnBvc2l4LmJhc2VuYW1lKHBhdGhJbkNvbnRhaW5lcil9YDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFxuICAgICAgICAgIFsncnVuLWFzJywgcGFja2FnZUlkLCBgbWtkaXIgLXAgJyR7ZXNjYXBlUGF0aChwYXRoLnBvc2l4LmRpcm5hbWUocGF0aEluQ29udGFpbmVyKSl9J2BdXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgdG91Y2ggJyR7ZXNjYXBlUGF0aChwYXRoSW5Db250YWluZXIpfSdgXSk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgY2htb2QgNzc3ICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nYF0pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5wdXNoKGxvY2FsRmlsZSwgdG1wRGVzdGluYXRpb24pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbXG4gICAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgICBgY3AgLWYgJyR7ZXNjYXBlUGF0aCh0bXBEZXN0aW5hdGlvbil9JyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BcbiAgICAgICAgXSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENhbm5vdCBhY2Nlc3MgdGhlIGNvbnRhaW5lciBvZiAnJHtwYWNrYWdlSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkYiBwdXNoIGNyZWF0ZXMgZm9sZGVycyBhbmQgb3ZlcndyaXRlcyBleGlzdGluZyBmaWxlcy5cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnB1c2gobG9jYWxGaWxlLCByZW1vdGVQYXRoKTtcblxuICAgICAgLy8gaWYgd2UgaGF2ZSBwdXNoZWQgYSBmaWxlLCBpdCBtaWdodCBiZSBhIG1lZGlhIGZpbGUsIHNvIGVuc3VyZSB0aGF0XG4gICAgICAvLyBhcHBzIGtub3cgYWJvdXQgaXRcbiAgICAgIGF3YWl0IHNjYW5NZWRpYSh0aGlzLmFkYiwgcmVtb3RlUGF0aCwgdGhpcy5sb2cpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdWxscyB0aGUgd2hvbGUgZm9sZGVyIGZyb20gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIGEgZm9sZGVyIG9uIHRoZVxuICogcmVtb3RlIGRldmljZSBvciBhIGZvbGRlciBpbnNpZGUgYW4gYXBwbGljYXRpb24gYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBhbmQgemlwcGVkIGNvbnRlbnQgb2YgdGhlIGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgZ2V0dGluZyB0aGUgZm9sZGVyIGNvbnRlbnRcbiAqL1xuY29tbWFuZHMucHVsbEZvbGRlciA9IGFzeW5jIGZ1bmN0aW9uIHB1bGxGb2xkZXIgKHJlbW90ZVBhdGgpIHtcbiAgbGV0IGxvY2FsRm9sZGVyID0gYXdhaXQgdGVtcERpci5wYXRoKHtwcmVmaXg6ICdhcHBpdW0nfSk7XG4gIGF3YWl0IHRoaXMuYWRiLnB1bGwocmVtb3RlUGF0aCwgbG9jYWxGb2xkZXIpO1xuICByZXR1cm4gKGF3YWl0IHppcC50b0luTWVtb3J5WmlwKGxvY2FsRm9sZGVyLCB7XG4gICAgZW5jb2RlVG9CYXNlNjQ6IHRydWUsXG4gIH0pKS50b1N0cmluZygpO1xufTtcblxuLyoqXG4gKiBEZWxldGVzIHRoZSBnaXZlbiBmb2xkZXIgb3IgZmlsZSBmcm9tIHRoZSByZW1vdGUgZGV2aWNlXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZvbGRlclxuICogb3IgZmlsZSAoZm9sZGVyIG5hbWVzIG11c3QgZW5kIHdpdGggYSBzaW5nbGUgc2xhc2gpXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHByb3ZpZGVkIHJlbW90ZSBwYXRoIGlzIGludmFsaWQgb3JcbiAqIHRoZSBwYWNrYWdlIGNvbnRlbnQgY2Fubm90IGJlIGFjY2Vzc2VkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgaXRlbSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSByZW1vdGUgcGF0aCBpcyB2YWxpZCwgYnV0IHRoZSByZW1vdGUgcGF0aCBkb2VzIG5vdCBleGlzdFxuICogdGhpcyBmdW5jdGlvbiByZXR1cm4gYGZhbHNlYC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlRmlsZU9yRm9sZGVyIChhZGIsIHJlbW90ZVBhdGgpIHtcbiAgY29uc3QgcGVyZm9ybVJlbW90ZUZzQ2hlY2sgPSBhc3luYyAocCwgb3AsIHJ1bkFzID0gbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhc3NGbGFnID0gJ19fUEFTU19fJztcbiAgICBjb25zdCBjaGVja0NtZCA9IGBbIC0ke29wfSAnJHtlc2NhcGVQYXRoKHApfScgXSAmJiBlY2hvICR7cGFzc0ZsYWd9YDtcbiAgICBjb25zdCBmdWxsQ21kID0gcnVuQXMgPyBgcnVuLWFzICR7cnVuQXN9ICR7Y2hlY2tDbWR9YCA6IGNoZWNrQ21kO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gXy5pbmNsdWRlcyhhd2FpdCBhZGIuc2hlbGwoW2Z1bGxDbWRdKSwgcGFzc0ZsYWcpO1xuICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaXNGaWxlID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2YnLCBydW5Bcyk7XG4gIGNvbnN0IGlzRGlyID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2QnLCBydW5Bcyk7XG4gIGNvbnN0IGlzUHJlc2VudCA9IGFzeW5jIChwLCBydW5BcyA9IG51bGwpID0+IGF3YWl0IHBlcmZvcm1SZW1vdGVGc0NoZWNrKHAsICdlJywgcnVuQXMpO1xuXG4gIGxldCBkc3RQYXRoID0gcmVtb3RlUGF0aDtcbiAgbGV0IHBrZ0lkID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9J2ApO1xuICAgIGRzdFBhdGggPSBwYXRoSW5Db250YWluZXI7XG4gICAgcGtnSWQgPSBwYWNrYWdlSWQ7XG4gIH1cblxuICBpZiAocGtnSWQpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYWRiLnNoZWxsKFsncnVuLWFzJywgcGtnSWQsICdscyddKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGtnSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGRvZXMgbm90IGV4aXN0LiBQZXJoYXBzLCBhbHJlYWR5IGRlbGV0ZWQ/YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0c0ZpbGUgPSAhcmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpO1xuICBpZiAoZXhwZWN0c0ZpbGUgJiYgIWF3YWl0IGlzRmlsZShkc3RQYXRoLCBwa2dJZCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgaXRlbSBhdCAnJHtkc3RQYXRofScgaXMgbm90IGEgZmlsZWApO1xuICB9IGVsc2UgaWYgKCFleHBlY3RzRmlsZSAmJiAhYXdhaXQgaXNEaXIoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGlzIG5vdCBhIGZvbGRlcmApO1xuICB9XG5cbiAgaWYgKHBrZ0lkKSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFxuICAgICAgWydydW4tYXMnLCBwa2dJZCwgYHJtIC1mJHtleHBlY3RzRmlsZSA/ICcnIDogJ3InfSAnJHtlc2NhcGVQYXRoKGRzdFBhdGgpfSdgXSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFsncm0nLCBgLWYke2V4cGVjdHNGaWxlID8gJycgOiAncid9YCwgZHN0UGF0aF0pO1xuICB9XG4gIGlmIChhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIHN0aWxsIGV4aXN0cyBhZnRlciBiZWluZyBkZWxldGVkLiBgICtcbiAgICAgIGBJcyBpdCB3cml0YWJsZT9gKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZWxldGVGaWxlT3B0c1xuICogQHByb3BlcnR5IHshc3RyaW5nfSByZW1vdGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHJlbW90ZSBmaWxlXG4gKiBvciBhIGZpbGUgaW5zaWRlIGFuIGFwcGxpY2F0aW9uIGJ1bmRsZSAoZm9yIGV4YW1wbGUgYEBteS5hcHAuaWQvcGF0aC9pbi9idW5kbGVgKVxuICovXG5cbi8qKlxuICogRGVsZXRlcyBhIGZpbGUgb24gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge0RlbGV0ZUZpbGVPcHRzfSBvcHRzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSBwYXRoIHRvIGEgcmVtb3RlIGZpbGUgaXMgdmFsaWQsIGJ1dCB0aGUgZmlsZSBpdHNlbGYgZG9lcyBub3QgZXhpc3RcbiAqIHRoZW4gYGZhbHNlYCBpcyByZXR1cm5lZC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYXJndW1lbnQgaXMgaW52YWxpZCBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGVcbiAqIGRlbGV0aW5nIHRoZSBmaWxlXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURlbGV0ZUZpbGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEZWxldGVGaWxlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge3JlbW90ZVBhdGh9ID0gb3B0cztcbiAgaWYgKCFyZW1vdGVQYXRoKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdyZW1vdGVQYXRoJyBhcmd1bWVudCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZvbGRlciBhbmQgbm90IHRvIGEgZmlsZS4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgZGVsZXRlRmlsZU9yRm9sZGVyKHRoaXMuYWRiLCByZW1vdGVQYXRoKTtcbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxxQkFBcUIsR0FBRyxHQUE5QjtBQUVBLE1BQU1DLHNCQUFzQixHQUFHLElBQUlDLE1BQUosQ0FBWSxJQUFHRixxQkFBc0IsY0FBckMsQ0FBL0I7QUFDQSxNQUFNRywyQkFBMkIsR0FBRywrQ0FBcEM7QUFHQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7OztBQVdBLFNBQVNDLGtCQUFULENBQTZCQyxVQUE3QixFQUF5QztFQUN2QyxNQUFNQyxLQUFLLEdBQUdOLHNCQUFzQixDQUFDTyxJQUF2QixDQUE0QkYsVUFBNUIsQ0FBZDs7RUFDQSxJQUFJLENBQUNDLEtBQUwsRUFBWTtJQUNWLE1BQU0sSUFBSUUsS0FBSixDQUFXLGtHQUFELEdBQ2IsSUFBR0gsVUFBVyxvQkFEWCxDQUFOO0VBRUQ7O0VBQ0QsT0FBTyxDQUFDQyxLQUFLLENBQUMsQ0FBRCxDQUFOLEVBQVdHLGFBQUEsQ0FBS0MsS0FBTCxDQUFXQyxPQUFYLENBQW9CLGNBQWFMLEtBQUssQ0FBQyxDQUFELENBQUksRUFBMUMsRUFBNkNBLEtBQUssQ0FBQyxDQUFELENBQWxELENBQVgsQ0FBUDtBQUNEOztBQVdELGVBQWVNLFNBQWYsQ0FBMEJDLEdBQTFCLEVBQStCUixVQUEvQixFQUEyQ1MsR0FBRyxHQUFH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
@@ -78,4 +78,4 @@ var _default = extensions;
78
78
  exports.default = _default;require('source-map-support').install();
79
79
 
80
80
 
81
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJuYW1lcyI6WyJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImRvRmluZEVsZW1lbnRPckVscyIsInBhcmFtcyIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJmaW5kRWxPckVscyIsInN0cmF0ZWd5Iiwic2VsZWN0b3IiLCJtdWx0IiwiY29udGV4dCIsIkVycm9yIiwibXVsdGlwbGUiLCJlbGVtZW50IiwiZG9GaW5kIiwiZXJyIiwiZXJyb3JzIiwiUHJveHlSZXF1ZXN0RXJyb3IiLCJnZXRBY3R1YWxFcnJvciIsIk5vU3VjaEVsZW1lbnRFcnJvciIsIl8iLCJpc0VtcHR5IiwiaW1wbGljaXRXYWl0Rm9yQ29uZGl0aW9uIiwibWVzc2FnZSIsIm1hdGNoIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2ZpbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycywgaXNFcnJvclR5cGUgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuXG5sZXQgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbi8qKlxuICogUmVhc29uIGZvciBpc29sYXRpbmcgZG9GaW5kRWxlbWVudE9yRWxzIGZyb20gZmluZEVsT3JFbHMgaXMgZm9yIHJldXNpbmcgZmluZEVsT3JFbHNcbiAqIGFjcm9zcyBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9GaW5kRWxlbWVudE9yRWxzXG4gKiB0byBmYWNpbGl0YXRlIGZpbmRFbE9yRWxzLlxuICovXG5oZWxwZXJzLmRvRmluZEVsZW1lbnRPckVscyA9IGFzeW5jIGZ1bmN0aW9uIGRvRmluZEVsZW1lbnRPckVscyAocGFyYW1zKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdmaW5kJywgcGFyYW1zKTtcbn07XG5cbi8vIHN0YXRlZ3k6IGxvY2F0b3Igc3RyYXRlZ3lcbi8vIHNlbGVjdG9yOiB0aGUgYWN0dWFsIHNlbGVjdG9yIGZvciBmaW5kaW5nIGFuIGVsZW1lbnRcbi8vIG11bHQ6IG11bHRpcGxlIGVsZW1lbnRzIG9yIGp1c3Qgb25lP1xuLy8gY29udGV4dDogZmluZGluZyBhbiBlbGVtZW50IGZyb20gdGhlIHJvb3QgY29udGV4dD8gb3Igc3RhcnRpbmcgZnJvbSBhbm90aGVyIGVsZW1lbnRcbmhlbHBlcnMuZmluZEVsT3JFbHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxPckVscyAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBtdWx0LCBjb250ZXh0ID0gJycpIHtcbiAgaWYgKCFzZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgc2VsZWN0b3Igd2hlbiBmaW5kaW5nIGVsZW1lbnRzJyk7XG4gIH1cblxuICBsZXQgcGFyYW1zID0ge1xuICAgIHN0cmF0ZWd5LFxuICAgIHNlbGVjdG9yLFxuICAgIGNvbnRleHQsXG4gICAgbXVsdGlwbGU6IG11bHRcbiAgfTtcblxuICBsZXQgZWxlbWVudDtcbiAgbGV0IGRvRmluZCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgZWxlbWVudCA9IGF3YWl0IHRoaXMuZG9GaW5kRWxlbWVudE9yRWxzKHBhcmFtcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG5cbiAgICAgIC8vIGlmIHRoZSBlcnJvciB0aGF0IGNvbWVzIGJhY2sgaXMgZnJvbSBhIHByb3hpZWQgcmVxdWVzdCwgd2UgbmVlZCB0b1xuICAgICAgLy8gdW53cmFwIGl0IHRvIGl0cyBhY3R1YWwgcHJvdG9jb2wgZXJyb3IgZmlyc3RcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgZXJyID0gZXJyLmdldEFjdHVhbEVycm9yKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXgtYXNzaWduXG4gICAgICB9XG5cbiAgICAgIC8vIG5vdyB3ZSBoYXZlIHRvIGluc3BlY3QgdGhlIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCBpcyBhIG5vIHN1Y2hcbiAgICAgIC8vIGVsZW1lbnQgZXJyb3IsIGJhc2VkIG9uIHRoZSBzaGFwZSBvZiB0aGUgZXJyb3Igb2JqZWN0IGZyb21cbiAgICAgIC8vIEBhcHBpdW0vYmFzZS1kcml2ZXJcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IpKSB7XG4gICAgICAgIC8vIHdlIGFyZSBmaW5lIHdpdGggdGhpcywganVzdCBpbmRpY2F0ZSBhIHJldHJ5XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICAvLyB3ZSB3YW50IHRvIHJldHVybiBmYWxzZSBpZiB3ZSB3YW50IHRvIHBvdGVudGlhbGx5IHRyeSBhZ2FpblxuICAgIHJldHVybiAhXy5pc0VtcHR5KGVsZW1lbnQpO1xuICB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5pbXBsaWNpdFdhaXRGb3JDb25kaXRpb24oZG9GaW5kKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLm1hdGNoKC9Db25kaXRpb24gdW5tZXQvKSkge1xuICAgICAgLy8gb25seSBnZXQgaGVyZSBpZiB3ZSBhcmUgbG9va2luZyBmb3IgbXVsdGlwbGUgZWxlbWVudHNcbiAgICAgIC8vIGNvbmRpdGlvbiB3YXMgbm90IG1ldCBzZXR0aW5nIHJlcyB0byBlbXB0eSBhcnJheVxuICAgICAgZWxlbWVudCA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgaWYgKG11bHQpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KGVsZW1lbnQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IoKTtcbiAgfVxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgaGVscGVycyk7XG5leHBvcnQgeyBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLElBQUlBLE9BQU8sR0FBRyxFQUFkO0FBQUEsSUFBa0JDLFVBQVUsR0FBRyxFQUEvQjs7O0FBUUFELE9BQU8sQ0FBQ0Usa0JBQVIsR0FBNkIsZUFBZUEsa0JBQWYsQ0FBbUNDLE1BQW5DLEVBQTJDO0VBQ3RFLE9BQU8sTUFBTSxLQUFLQyxTQUFMLENBQWVDLFVBQWYsQ0FBMEIsTUFBMUIsRUFBa0NGLE1BQWxDLENBQWI7QUFDRCxDQUZEOztBQVFBSCxPQUFPLENBQUNNLFdBQVIsR0FBc0IsZUFBZUEsV0FBZixDQUE0QkMsUUFBNUIsRUFBc0NDLFFBQXRDLEVBQWdEQyxJQUFoRCxFQUFzREMsT0FBTyxHQUFHLEVBQWhFLEVBQW9FO0VBQ3hGLElBQUksQ0FBQ0YsUUFBTCxFQUFlO0lBQ2IsTUFBTSxJQUFJRyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtFQUNEOztFQUVELElBQUlSLE1BQU0sR0FBRztJQUNYSSxRQURXO0lBRVhDLFFBRlc7SUFHWEUsT0FIVztJQUlYRSxRQUFRLEVBQUVIO0VBSkMsQ0FBYjtFQU9BLElBQUlJLE9BQUo7O0VBQ0EsSUFBSUMsTUFBTSxHQUFHLFlBQVk7SUFDdkIsSUFBSTtNQUNGRCxPQUFPLEdBQUcsTUFBTSxLQUFLWCxrQkFBTCxDQUF3QkMsTUFBeEIsQ0FBaEI7SUFDRCxDQUZELENBRUUsT0FBT1ksR0FBUCxFQUFZO01BSVosSUFBSSw2QkFBWUEsR0FBWixFQUFpQkMsbUJBQU9DLGlCQUF4QixDQUFKLEVBQWdEO1FBQzlDRixHQUFHLEdBQUdBLEdBQUcsQ0FBQ0csY0FBSixFQUFOO01BQ0Q7O01BS0QsSUFBSSw2QkFBWUgsR0FBWixFQUFpQkMsbUJBQU9HLGtCQUF4QixDQUFKLEVBQWlEO1FBRS9DLE9BQU8sS0FBUDtNQUNEOztNQUNELE1BQU1KLEdBQU47SUFDRDs7SUFHRCxPQUFPLENBQUNLLGdCQUFFQyxPQUFGLENBQVVSLE9BQVYsQ0FBUjtFQUNELENBdkJEOztFQXlCQSxJQUFJO0lBQ0YsTUFBTSxLQUFLUyx3QkFBTCxDQUE4QlIsTUFBOUIsQ0FBTjtFQUNELENBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7SUFDWixJQUFJQSxHQUFHLENBQUNRLE9BQUosSUFBZVIsR0FBRyxDQUFDUSxPQUFKLENBQVlDLEtBQVosQ0FBa0IsaUJBQWxCLENBQW5CLEVBQXlEO01BR3ZEWCxPQUFPLEdBQUcsRUFBVjtJQUNELENBSkQsTUFJTztNQUNMLE1BQU1FLEdBQU47SUFDRDtFQUNGOztFQUVELElBQUlOLElBQUosRUFBVTtJQUNSLE9BQU9JLE9BQVA7RUFDRDs7RUFDRCxJQUFJTyxnQkFBRUMsT0FBRixDQUFVUixPQUFWLENBQUosRUFBd0I7SUFDdEIsTUFBTSxJQUFJRyxtQkFBT0csa0JBQVgsRUFBTjtFQUNEOztFQUNELE9BQU9OLE9BQVA7QUFDRCxDQXpERDs7QUEyREFZLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjekIsVUFBZCxFQUEwQkQsT0FBMUI7ZUFFZUMsVSJ9
81
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJuYW1lcyI6WyJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImRvRmluZEVsZW1lbnRPckVscyIsInBhcmFtcyIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJmaW5kRWxPckVscyIsInN0cmF0ZWd5Iiwic2VsZWN0b3IiLCJtdWx0IiwiY29udGV4dCIsIkVycm9yIiwibXVsdGlwbGUiLCJlbGVtZW50IiwiZG9GaW5kIiwiZXJyIiwiaXNFcnJvclR5cGUiLCJlcnJvcnMiLCJQcm94eVJlcXVlc3RFcnJvciIsImdldEFjdHVhbEVycm9yIiwiTm9TdWNoRWxlbWVudEVycm9yIiwiXyIsImlzRW1wdHkiLCJpbXBsaWNpdFdhaXRGb3JDb25kaXRpb24iLCJtZXNzYWdlIiwibWF0Y2giLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvZmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzLCBpc0Vycm9yVHlwZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5cbmxldCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuLyoqXG4gKiBSZWFzb24gZm9yIGlzb2xhdGluZyBkb0ZpbmRFbGVtZW50T3JFbHMgZnJvbSBmaW5kRWxPckVscyBpcyBmb3IgcmV1c2luZyBmaW5kRWxPckVsc1xuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi5cbiAqIE90aGVyIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgbmVlZCB0byBvdmVycmlkZSBkb0ZpbmRFbGVtZW50T3JFbHNcbiAqIHRvIGZhY2lsaXRhdGUgZmluZEVsT3JFbHMuXG4gKi9cbmhlbHBlcnMuZG9GaW5kRWxlbWVudE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZG9GaW5kRWxlbWVudE9yRWxzIChwYXJhbXMpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2ZpbmQnLCBwYXJhbXMpO1xufTtcblxuLy8gc3RhdGVneTogbG9jYXRvciBzdHJhdGVneVxuLy8gc2VsZWN0b3I6IHRoZSBhY3R1YWwgc2VsZWN0b3IgZm9yIGZpbmRpbmcgYW4gZWxlbWVudFxuLy8gbXVsdDogbXVsdGlwbGUgZWxlbWVudHMgb3IganVzdCBvbmU/XG4vLyBjb250ZXh0OiBmaW5kaW5nIGFuIGVsZW1lbnQgZnJvbSB0aGUgcm9vdCBjb250ZXh0PyBvciBzdGFydGluZyBmcm9tIGFub3RoZXIgZWxlbWVudFxuaGVscGVycy5maW5kRWxPckVscyA9IGFzeW5jIGZ1bmN0aW9uIGZpbmRFbE9yRWxzIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQgPSAnJykge1xuICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBzZWxlY3RvciB3aGVuIGZpbmRpbmcgZWxlbWVudHMnKTtcbiAgfVxuXG4gIGxldCBwYXJhbXMgPSB7XG4gICAgc3RyYXRlZ3ksXG4gICAgc2VsZWN0b3IsXG4gICAgY29udGV4dCxcbiAgICBtdWx0aXBsZTogbXVsdFxuICB9O1xuXG4gIGxldCBlbGVtZW50O1xuICBsZXQgZG9GaW5kID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBlbGVtZW50ID0gYXdhaXQgdGhpcy5kb0ZpbmRFbGVtZW50T3JFbHMocGFyYW1zKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcblxuICAgICAgLy8gaWYgdGhlIGVycm9yIHRoYXQgY29tZXMgYmFjayBpcyBmcm9tIGEgcHJveGllZCByZXF1ZXN0LCB3ZSBuZWVkIHRvXG4gICAgICAvLyB1bndyYXAgaXQgdG8gaXRzIGFjdHVhbCBwcm90b2NvbCBlcnJvciBmaXJzdFxuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKSkge1xuICAgICAgICBlcnIgPSBlcnIuZ2V0QWN0dWFsRXJyb3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1leC1hc3NpZ25cbiAgICAgIH1cblxuICAgICAgLy8gbm93IHdlIGhhdmUgdG8gaW5zcGVjdCB0aGUgZXJyb3IgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgbm8gc3VjaFxuICAgICAgLy8gZWxlbWVudCBlcnJvciwgYmFzZWQgb24gdGhlIHNoYXBlIG9mIHRoZSBlcnJvciBvYmplY3QgZnJvbVxuICAgICAgLy8gQGFwcGl1bS9iYXNlLWRyaXZlclxuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcikpIHtcbiAgICAgICAgLy8gd2UgYXJlIGZpbmUgd2l0aCB0aGlzLCBqdXN0IGluZGljYXRlIGEgcmV0cnlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIC8vIHdlIHdhbnQgdG8gcmV0dXJuIGZhbHNlIGlmIHdlIHdhbnQgdG8gcG90ZW50aWFsbHkgdHJ5IGFnYWluXG4gICAgcmV0dXJuICFfLmlzRW1wdHkoZWxlbWVudCk7XG4gIH07XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmltcGxpY2l0V2FpdEZvckNvbmRpdGlvbihkb0ZpbmQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UubWF0Y2goL0NvbmRpdGlvbiB1bm1ldC8pKSB7XG4gICAgICAvLyBvbmx5IGdldCBoZXJlIGlmIHdlIGFyZSBsb29raW5nIGZvciBtdWx0aXBsZSBlbGVtZW50c1xuICAgICAgLy8gY29uZGl0aW9uIHdhcyBub3QgbWV0IHNldHRpbmcgcmVzIHRvIGVtcHR5IGFycmF5XG4gICAgICBlbGVtZW50ID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBpZiAobXVsdCkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG4gIGlmIChfLmlzRW1wdHkoZWxlbWVudCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcigpO1xuICB9XG4gIHJldHVybiBlbGVtZW50O1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0EsSUFBSUEsT0FBTyxHQUFHLEVBQWQ7QUFBQSxJQUFrQkMsVUFBVSxHQUFHLEVBQS9COzs7QUFRQUQsT0FBTyxDQUFDRSxrQkFBUixHQUE2QixlQUFlQSxrQkFBZixDQUFtQ0MsTUFBbkMsRUFBMkM7RUFDdEUsT0FBTyxNQUFNLEtBQUtDLFNBQUwsQ0FBZUMsVUFBZixDQUEwQixNQUExQixFQUFrQ0YsTUFBbEMsQ0FBYjtBQUNELENBRkQ7O0FBUUFILE9BQU8sQ0FBQ00sV0FBUixHQUFzQixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQ0MsUUFBdEMsRUFBZ0RDLElBQWhELEVBQXNEQyxPQUFPLEdBQUcsRUFBaEUsRUFBb0U7RUFDeEYsSUFBSSxDQUFDRixRQUFMLEVBQWU7SUFDYixNQUFNLElBQUlHLEtBQUosQ0FBVSwrQ0FBVixDQUFOO0VBQ0Q7O0VBRUQsSUFBSVIsTUFBTSxHQUFHO0lBQ1hJLFFBRFc7SUFFWEMsUUFGVztJQUdYRSxPQUhXO0lBSVhFLFFBQVEsRUFBRUg7RUFKQyxDQUFiO0VBT0EsSUFBSUksT0FBSjs7RUFDQSxJQUFJQyxNQUFNLEdBQUcsWUFBWTtJQUN2QixJQUFJO01BQ0ZELE9BQU8sR0FBRyxNQUFNLEtBQUtYLGtCQUFMLENBQXdCQyxNQUF4QixDQUFoQjtJQUNELENBRkQsQ0FFRSxPQUFPWSxHQUFQLEVBQVk7TUFJWixJQUFJLElBQUFDLHVCQUFBLEVBQVlELEdBQVosRUFBaUJFLGtCQUFBLENBQU9DLGlCQUF4QixDQUFKLEVBQWdEO1FBQzlDSCxHQUFHLEdBQUdBLEdBQUcsQ0FBQ0ksY0FBSixFQUFOO01BQ0Q7O01BS0QsSUFBSSxJQUFBSCx1QkFBQSxFQUFZRCxHQUFaLEVBQWlCRSxrQkFBQSxDQUFPRyxrQkFBeEIsQ0FBSixFQUFpRDtRQUUvQyxPQUFPLEtBQVA7TUFDRDs7TUFDRCxNQUFNTCxHQUFOO0lBQ0Q7O0lBR0QsT0FBTyxDQUFDTSxlQUFBLENBQUVDLE9BQUYsQ0FBVVQsT0FBVixDQUFSO0VBQ0QsQ0F2QkQ7O0VBeUJBLElBQUk7SUFDRixNQUFNLEtBQUtVLHdCQUFMLENBQThCVCxNQUE5QixDQUFOO0VBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWTtJQUNaLElBQUlBLEdBQUcsQ0FBQ1MsT0FBSixJQUFlVCxHQUFHLENBQUNTLE9BQUosQ0FBWUMsS0FBWixDQUFrQixpQkFBbEIsQ0FBbkIsRUFBeUQ7TUFHdkRaLE9BQU8sR0FBRyxFQUFWO0lBQ0QsQ0FKRCxNQUlPO01BQ0wsTUFBTUUsR0FBTjtJQUNEO0VBQ0Y7O0VBRUQsSUFBSU4sSUFBSixFQUFVO0lBQ1IsT0FBT0ksT0FBUDtFQUNEOztFQUNELElBQUlRLGVBQUEsQ0FBRUMsT0FBRixDQUFVVCxPQUFWLENBQUosRUFBd0I7SUFDdEIsTUFBTSxJQUFJSSxrQkFBQSxDQUFPRyxrQkFBWCxFQUFOO0VBQ0Q7O0VBQ0QsT0FBT1AsT0FBUDtBQUNELENBekREOztBQTJEQWEsTUFBTSxDQUFDQyxNQUFQLENBQWMxQixVQUFkLEVBQTBCRCxPQUExQjtlQUVlQyxVIn0=
@@ -419,4 +419,4 @@ var _default = extensions;
419
419
  exports.default = _default;require('source-map-support').install();
420
420
 
421
421
 
422
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiLCJuYW1lcyI6WyJNT01FTlRfRk9STUFUX0lTTzg2MDEiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwia2V5cyIsIl8iLCJpc0FycmF5Iiwiam9pbiIsInBhcmFtcyIsInRleHQiLCJyZXBsYWNlIiwib3B0cyIsInVuaWNvZGVLZXlib2FyZCIsImRvU2VuZEtleXMiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwiZ2V0RGV2aWNlVGltZSIsImZvcm1hdCIsImxvZyIsImRlYnVnIiwiZGV2aWNlVGltZXN0YW1wIiwiYWRiIiwic2hlbGwiLCJ0cmltIiwicGFyc2VkVGltZXN0YW1wIiwibW9tZW50IiwidXRjIiwiaXNWYWxpZCIsIndhcm4iLCJ1dGNPZmZzZXQiLCJfdHptIiwibW9iaWxlR2V0RGV2aWNlVGltZSIsImdldFBhZ2VTb3VyY2UiLCJiYWNrIiwiaXNLZXlib2FyZFNob3duIiwiaXNTb2Z0S2V5Ym9hcmRQcmVzZW50IiwiaGlkZUtleWJvYXJkIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJzZXR0aW5nIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwiZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSIsIndhaXRGb3JOb3RBY3Rpdml0eSIsImdldFdpbmRvd1NpemUiLCJnZXRXaW5kb3dSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJ4IiwieSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImdldEN1cnJlbnRQYWNrYWdlIiwiYmFja2dyb3VuZCIsInNlY29uZHMiLCJnb1RvSG9tZSIsInNsZWVwTXMiLCJ0aHJlc2hvbGRNcyIsImludGVydmFsTXMiLCJtaW4iLCJwYXJzZUludCIsInByb2dyZXNzQ2IiLCJlbGFwc2VkTXMiLCJwcm9ncmVzcyIsIndhaXRTZWNzIiwidG9GaXhlZCIsInByb2dyZXNzUGN0IiwiYXJncyIsIl9jYWNoZWRBY3Rpdml0eUFyZ3MiLCJhY3RpdmF0ZUFwcCIsImlnbiIsImFwcFdhaXRQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5Iiwic3BsaXQiLCJpbmNsdWRlcyIsInBrZyIsImFjdGl2aXR5IiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJ1c2VyIiwidXNlclByb2ZpbGUiLCJ1dGlsIiwiZmlsdGVyT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QXBwIiwiZ2V0U3RyaW5ncyIsImxhbmd1YWdlIiwiZ2V0RGV2aWNlTGFuZ3VhZ2UiLCJpbmZvIiwicHJlcHJvY2Vzc1N0cmluZ3NNYXAiLCJtYXBwaW5nIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJhcGtTdHJpbmdzIiwiYW5kcm9pZEhlbHBlcnMiLCJwdXNoU3RyaW5ncyIsImxhdW5jaEFwcCIsImluaXRBVVQiLCJzdGFydEFVVCIsInN0YXJ0QWN0aXZpdHkiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJoYXNWYWx1ZSIsInJlc2V0IiwicmVzZXRBcHAiLCJPYmplY3QiLCJhc3NpZ24iLCJmYXN0UmVzZXQiLCJzZXRDb250ZXh0IiwiaXNDaHJvbWVTZXNzaW9uIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic2V0VXJsIiwidXJpIiwic3RhcnRVcmkiLCJjbG9zZUFwcCIsImZvcmNlU3RvcCIsImdldERpc3BsYXlEZW5zaXR5Iiwib3V0IiwidmFsIiwiaXNOYU4iLCJlcnJvckFuZFRocm93IiwibW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwicGVyZm9ybUVkaXRvckFjdGlvbiIsIlBFUk1JU1NJT05fQUNUSU9OIiwiR1JBTlQiLCJSRVZPS0UiLCJtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWN0aW9uRnVuYyIsInRvTG93ZXIiLCJwZXJtaXNzaW9uIiwiZ3JhbnRQZXJtaXNzaW9uIiwicmV2b2tlUGVybWlzc2lvbiIsInZhbHVlcyIsIlBFUk1JU1NJT05TX1RZUEUiLCJERU5JRUQiLCJHUkFOVEVEIiwiUkVRVUVTVEVEIiwibW9iaWxlR2V0UGVybWlzc2lvbnMiLCJ0eXBlIiwiZ2V0UmVxUGVybWlzc2lvbnMiLCJnZXRHcmFudGVkUGVybWlzc2lvbnMiLCJnZXREZW5pZWRQZXJtaXNzaW9ucyIsIm1vYmlsZUdldE5vdGlmaWNhdGlvbnMiLCJnZXROb3RpZmljYXRpb25zIiwibW9iaWxlTGlzdFNtcyIsImdldFNtc0xpc3QiLCJtb2JpbGVVbmxvY2siLCJzdHJhdGVneSIsInRpbWVvdXRNcyIsInVubG9jayIsInVubG9ja0tleSIsInVubG9ja1R5cGUiLCJ1bmxvY2tTdHJhdGVneSIsInVubG9ja1N1Y2Nlc3NUaW1lb3V0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBsb25nU2xlZXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTU9NRU5UX0ZPUk1BVF9JU084NjAxID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAoa2V5cykge1xuICAvLyBQcm90b2NvbCBzZW5kcyBhbiBhcnJheTsgcmV0aGluayBhcHByb2FjaFxuICBrZXlzID0gXy5pc0FycmF5KGtleXMpID8ga2V5cy5qb2luKCcnKSA6IGtleXM7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgdGV4dDoga2V5cyxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9O1xuICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCkge1xuICAgIHBhcmFtcy51bmljb2RlS2V5Ym9hcmQgPSB0cnVlO1xuICB9XG4gIGF3YWl0IHRoaXMuZG9TZW5kS2V5cyhwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZG9TZW5kS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIGRvU2VuZEtleXMgKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignc2V0VGV4dCcsIHBhcmFtcyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBkZXZpY2UncyB0aW1lc3RhbXAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCAtIFRoZSBzZXQgb2YgZm9ybWF0IHNwZWNpZmllcnMuIFJlYWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyB0byBnZXQgdGhlIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZSBmb3JtYXQgc3BlY2lmaWVycy4gVGhlIGRlZmF1bHQgZm9ybWF0IGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgYFlZWVktTU0tRERUSEg6bW06c3NaYCwgd2hpY2ggY29tcGxpZXMgdG8gSVNPLTg2MDFcbiAqIEByZXR1cm4ge3N0cmluZ30gRm9ybWF0dGVkIGRhdGV0aW1lIHN0cmluZyBvciB0aGUgcmF3IGNvbW1hbmQgb3V0cHV0IGlmIGZvcm1hdHRpbmcgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVGltZSA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKGZvcm1hdCA9IE1PTUVOVF9GT1JNQVRfSVNPODYwMSkge1xuICB0aGlzLmxvZy5kZWJ1ZygnQXR0ZW1wdGluZyB0byBjYXB0dXJlIGFuZHJvaWQgZGV2aWNlIGRhdGUgYW5kIHRpbWUuICcgK1xuICAgIGBUaGUgZm9ybWF0IHNwZWNpZmllciBpcyAnJHtmb3JtYXR9J2ApO1xuICBjb25zdCBkZXZpY2VUaW1lc3RhbXAgPSAoYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkYXRlJywgJyslWS0lbS0lZFQlVCV6J10pKS50cmltKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBHb3QgZGV2aWNlIHRpbWVzdGFtcDogJHtkZXZpY2VUaW1lc3RhbXB9YCk7XG4gIGNvbnN0IHBhcnNlZFRpbWVzdGFtcCA9IG1vbWVudC51dGMoZGV2aWNlVGltZXN0YW1wLCAnWVlZWS1NTS1ERFRISDptbTpzc1paJyk7XG4gIGlmICghcGFyc2VkVGltZXN0YW1wLmlzVmFsaWQoKSkge1xuICAgIHRoaXMubG9nLndhcm4oJ0Nhbm5vdCBwYXJzZSB0aGUgcmV0dXJuZWQgdGltZXN0YW1wLiBSZXR1cm5pbmcgYXMgaXMnKTtcbiAgICByZXR1cm4gZGV2aWNlVGltZXN0YW1wO1xuICB9XG4gIHJldHVybiBwYXJzZWRUaW1lc3RhbXAudXRjT2Zmc2V0KHBhcnNlZFRpbWVzdGFtcC5fdHptIHx8IDApLmZvcm1hdChmb3JtYXQpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXZpY2VUaW1lT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGZvcm1hdCBbWVlZWS1NTS1ERFRISDptbTpzc1pdIC0gU2VlIGdldERldmljZVRpbWUjZm9ybWF0XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIHRpbWVcbiAqXG4gKiBAcGFyYW0ge0RldmljZVRpbWVPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEZvcm1hdHRlZCBkYXRldGltZSBzdHJpbmcgb3IgdGhlIHJhdyBjb21tYW5kIG91dHB1dCBpZiBmb3JtYXR0aW5nIGZhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZVRpbWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXREZXZpY2VUaW1lIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RGV2aWNlVGltZShvcHRzLmZvcm1hdCk7XG59O1xuXG5jb21tYW5kcy5nZXRQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZVNvdXJjZSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdzb3VyY2UnKTtcbn07XG5cbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiBiYWNrICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3ByZXNzQmFjaycpO1xufTtcblxuY29tbWFuZHMuaXNLZXlib2FyZFNob3duID0gYXN5bmMgZnVuY3Rpb24gaXNLZXlib2FyZFNob3duICgpIHtcbiAgY29uc3Qge2lzS2V5Ym9hcmRTaG93bn0gPSBhd2FpdCB0aGlzLmFkYi5pc1NvZnRLZXlib2FyZFByZXNlbnQoKTtcbiAgcmV0dXJuIGlzS2V5Ym9hcmRTaG93bjtcbn07XG5cbmNvbW1hbmRzLmhpZGVLZXlib2FyZCA9IGFzeW5jIGZ1bmN0aW9uIGhpZGVLZXlib2FyZCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5oaWRlS2V5Ym9hcmQoKTtcbn07XG5cbmNvbW1hbmRzLm9wZW5TZXR0aW5nc0FjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gb3BlblNldHRpbmdzQWN0aXZpdHkgKHNldHRpbmcpIHtcbiAgbGV0IHthcHBQYWNrYWdlLCBhcHBBY3Rpdml0eX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnYW0nLCAnc3RhcnQnLCAnLWEnLCBgYW5kcm9pZC5zZXR0aW5ncy4ke3NldHRpbmd9YF0pO1xuICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1NpemUgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZ2V0RGV2aWNlU2l6ZScpO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1JlY3QgKCkge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRBY3Rpdml0eSAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpKS5hcHBBY3Rpdml0eTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRQYWNrYWdlID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFBhY2thZ2UgKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKSkuYXBwUGFja2FnZTtcbn07XG5cbmNvbW1hbmRzLmJhY2tncm91bmQgPSBhc3luYyBmdW5jdGlvbiBiYWNrZ3JvdW5kIChzZWNvbmRzKSB7XG4gIGlmIChzZWNvbmRzIDwgMCkge1xuICAgIC8vIGlmIHVzZXIgcGFzc2VzIGluIGEgbmVnYXRpdmUgc2Vjb25kcyB2YWx1ZSwgaW50ZXJwcmV0IHRoYXQgYXMgdGhlIGluc3RydWN0aW9uXG4gICAgLy8gdG8gbm90IGJyaW5nIHRoZSBhcHAgYmFjayBhdCBhbGxcbiAgICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCB7YXBwUGFja2FnZSwgYXBwQWN0aXZpdHl9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpO1xuICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuXG4gIC8vIHBlb3BsZSBjYW4gd2FpdCBmb3IgYSBsb25nIHRpbWUsIHNvIHRvIGJlIHNhZmUgbGV0J3MgdXNlIHRoZSBsb25nU2xlZXAgZnVuY3Rpb24gYW5kIGxvZ1xuICAvLyBwcm9ncmVzcyBwZXJpb2RpY2FsbHkuXG4gIGNvbnN0IHNsZWVwTXMgPSBzZWNvbmRzICogMTAwMDtcbiAgY29uc3QgdGhyZXNob2xkTXMgPSAzMCAqIDEwMDA7IC8vIHVzZSB0aGUgc3Bpbi13YWl0IGZvciBhbnl0aGluZyBvdmVyIHRoaXMgdGhyZXNob2xkXG4gIC8vIGZvciBvdXIgc3BpbiBpbnRlcnZhbCwgdXNlIDElIG9mIHRoZSB0b3RhbCB3YWl0IHRpbWUsIGJ1dCBub3RoaW5nIGJpZ2dlciB0aGFuIDMwc1xuICBjb25zdCBpbnRlcnZhbE1zID0gXy5taW4oWzMwICogMTAwMCwgcGFyc2VJbnQoc2xlZXBNcyAvIDEwMCwgMTApXSk7XG4gIGNvbnN0IHByb2dyZXNzQ2IgPSAoe2VsYXBzZWRNcywgcHJvZ3Jlc3N9KSA9PiB7XG4gICAgY29uc3Qgd2FpdFNlY3MgPSAoZWxhcHNlZE1zIC8gMTAwMCkudG9GaXhlZCgwKTtcbiAgICBjb25zdCBwcm9ncmVzc1BjdCA9IChwcm9ncmVzcyAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgV2FpdGVkICR7d2FpdFNlY3N9cyBzbyBmYXIgKCR7cHJvZ3Jlc3NQY3R9JSlgKTtcbiAgfTtcbiAgYXdhaXQgbG9uZ1NsZWVwKHNsZWVwTXMsIHt0aHJlc2hvbGRNcywgaW50ZXJ2YWxNcywgcHJvZ3Jlc3NDYn0pO1xuXG4gIGxldCBhcmdzO1xuICBpZiAodGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzICYmIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdKSB7XG4gICAgLy8gdGhlIGFjdGl2aXR5IHdhcyBzdGFydGVkIHdpdGggYHN0YXJ0QWN0aXZpdHlgLCBzbyB1c2UgdGhvc2UgYXJncyB0byByZXN0YXJ0XG4gICAgYXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWN0aXZhdGluZyBhcHAgJyR7YXBwUGFja2FnZX0nIGluIG9yZGVyIHRvIHJlc3RvcmUgaXRgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVBcHAoYXBwUGFja2FnZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgYXJncyA9ICgoYXBwUGFja2FnZSA9PT0gdGhpcy5vcHRzLmFwcFBhY2thZ2UgJiYgYXBwQWN0aXZpdHkgPT09IHRoaXMub3B0cy5hcHBBY3Rpdml0eSkgfHxcbiAgICAgICAgICAgIChhcHBQYWNrYWdlID09PSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgJiYgKHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHkgfHwgJycpLnNwbGl0KCcsJykuaW5jbHVkZXMoYXBwQWN0aXZpdHkpKSlcbiAgICAgID8gey8vIHRoZSBhY3Rpdml0eSBpcyB0aGUgb3JpZ2luYWwgc2Vzc2lvbiBhY3Rpdml0eSwgc28gdXNlIHRoZSBvcmlnaW5hbCBhcmdzXG4gICAgICAgIHBrZzogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMub3B0cy5pbnRlbnRDYXRlZ29yeSxcbiAgICAgICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyxcbiAgICAgICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgICAgICB3YWl0QWN0aXZpdHk6IHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHksXG4gICAgICAgIHdhaXRGb3JMYXVuY2g6IHRoaXMub3B0cy5hcHBXYWl0Rm9yTGF1bmNoLFxuICAgICAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzOiB0aGlzLm9wdHMub3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsXG4gICAgICAgIHN0b3BBcHA6IGZhbHNlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGV9XG4gICAgICA6IHsvLyB0aGUgYWN0aXZpdHkgd2FzIHN0YXJ0ZWQgc29tZSBvdGhlciB3YXksIHNvIHVzZSBkZWZhdWx0c1xuICAgICAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgd2FpdFBrZzogYXBwUGFja2FnZSxcbiAgICAgICAgd2FpdEFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgc3RvcEFwcDogZmFsc2V9O1xuICB9XG4gIGFyZ3MgPSBhd2FpdCB1dGlsLmZpbHRlck9iamVjdChhcmdzKTtcbiAgdGhpcy5sb2cuZGVidWcoYEJyaW5naW5nIGFwcGxpY2F0aW9uIGJhY2sgdG8gZm9yZWdyb3VuZCB3aXRoIGFyZ3VtZW50czogJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMuZ2V0U3RyaW5ncyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN0cmluZ3MgKGxhbmd1YWdlKSB7XG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICBsYW5ndWFnZSA9IGF3YWl0IHRoaXMuYWRiLmdldERldmljZUxhbmd1YWdlKCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkLCByZXR1cm5pbmcgc3RyaW5ncyBmb3I6ICR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvLyBDbGllbnRzIHJlcXVpcmUgdGhlIHJlc3VsdGluZyBtYXBwaW5nIHRvIGhhdmUgYm90aCBrZXlzXG4gIC8vIGFuZCB2YWx1ZXMgb2YgdHlwZSBzdHJpbmdcbiAgY29uc3QgcHJlcHJvY2Vzc1N0cmluZ3NNYXAgPSAobWFwcGluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhtYXBwaW5nKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlmICh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBzdHJpbmdzXG4gICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pO1xuICB9XG5cbiAgdGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLnB1c2hTdHJpbmdzKGxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgaWYgKHRoaXMuYm9vdHN0cmFwKSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBtdXRhdGluZyB0aGUgY3VycmVudCBsYW5ndWFnZSwgYnV0IGl0J3MgaG93IGFwcGl1bSBjdXJyZW50bHkgd29ya3NcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCd1cGRhdGVTdHJpbmdzJyk7XG4gIH1cblxuICByZXR1cm4gcHJlcHJvY2Vzc1N0cmluZ3NNYXAodGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSk7XG59O1xuXG5jb21tYW5kcy5sYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBsYXVuY2hBcHAgKCkge1xuICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcbiAgYXdhaXQgdGhpcy5zdGFydEFVVCgpO1xufTtcblxuY29tbWFuZHMuc3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWN0aXZpdHkgKGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LFxuICBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5LCBpbnRlbnRBY3Rpb24sIGludGVudENhdGVnb3J5LCBpbnRlbnRGbGFncyxcbiAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsIGRvbnRTdG9wQXBwT25SZXNldCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgU3RhcnRpbmcgcGFja2FnZSAnJHthcHBQYWNrYWdlfScgYW5kIGFjdGl2aXR5ICcke2FwcEFjdGl2aXR5fSdgKTtcblxuICAvLyBkb250U3RvcEFwcE9uUmVzZXQgaXMgYm90aCBhbiBhcmd1bWVudCBoZXJlLCBhbmQgYSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAgLy8gaWYgdGhlIGFyZ3VtZW50IGlzIHNldCwgdXNlIGl0LCBvdGhlcndpc2UgdXNlIHRoZSBjYXBcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKGRvbnRTdG9wQXBwT25SZXNldCkpIHtcbiAgICBkb250U3RvcEFwcE9uUmVzZXQgPSAhIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQ7XG4gIH1cblxuICBsZXQgYXJncyA9IHtcbiAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgYWN0aXZpdHk6IGFwcEFjdGl2aXR5LFxuICAgIHdhaXRQa2c6IGFwcFdhaXRQYWNrYWdlIHx8IGFwcFBhY2thZ2UsXG4gICAgd2FpdEFjdGl2aXR5OiBhcHBXYWl0QWN0aXZpdHkgfHwgYXBwQWN0aXZpdHksXG4gICAgYWN0aW9uOiBpbnRlbnRBY3Rpb24sXG4gICAgY2F0ZWdvcnk6IGludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiBpbnRlbnRGbGFncyxcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhZG9udFN0b3BBcHBPblJlc2V0XG4gIH07XG4gIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyB8fCB7fTtcbiAgdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzW2Ake2FyZ3Mud2FpdFBrZ30vJHthcmdzLndhaXRBY3Rpdml0eX1gXSA9IGFyZ3M7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMucmVzZXQgPSBhc3luYyBmdW5jdGlvbiByZXNldCAoKSB7XG4gIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtmYXN0UmVzZXQ6IHRydWV9KSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuaXNDaHJvbWVTZXNzaW9uID8gdGhpcy5zdGFydENocm9tZVNlc3Npb24oKSA6IHRoaXMuc3RhcnRBVVQoKTtcbn07XG5cbmNvbW1hbmRzLnN0YXJ0QVVUID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRBVVQgKCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydEFwcCh7XG4gICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICBhY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiB0aGlzLm9wdHMuaW50ZW50RmxhZ3MsXG4gICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICB3YWl0Rm9yTGF1bmNoOiB0aGlzLm9wdHMuYXBwV2FpdEZvckxhdW5jaCxcbiAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCxcbiAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gIH0pO1xufTtcblxuLy8gd2Ugb3ZlcnJpZGUgc2V0VXJsIHRvIHRha2UgYW4gYW5kcm9pZCBVUkkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRlZXAtbGlua2luZ1xuLy8gaW5zaWRlIGFuIGFwcCwgc2ltaWxhciB0byBzdGFydGluZyBhbiBpbnRlbnRcbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uIHNldFVybCAodXJpKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVyaSwgdGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xufTtcblxuLy8gY2xvc2luZyBhcHAgdXNpbmcgZm9yY2Ugc3RvcFxuY29tbWFuZHMuY2xvc2VBcHAgPSBhc3luYyBmdW5jdGlvbiBjbG9zZUFwcCAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbn07XG5cbmNvbW1hbmRzLmdldERpc3BsYXlEZW5zaXR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGlzcGxheURlbnNpdHkgKCkge1xuICAvLyBmaXJzdCB0cnkgdGhlIHByb3BlcnR5IGZvciBkZXZpY2VzXG4gIGxldCBvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2dldHByb3AnLCAncm8uc2YubGNkX2RlbnNpdHknXSk7XG4gIGlmIChvdXQpIHtcbiAgICBsZXQgdmFsID0gcGFyc2VJbnQob3V0LCAxMCk7XG4gICAgLy8gaWYgdGhlIHZhbHVlIGlzIE5hTiwgdHJ5IGdldHRpbmcgdGhlIGVtdWxhdG9yIHByb3BlcnR5XG4gICAgaWYgKCFpc05hTih2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIGRlbnNpdHkgdmFsdWUgd2FzIE5hTjogXCIke291dH1cImApO1xuICB9XG4gIC8vIGZhbGxiYWNrIHRvIHRyeWluZyBwcm9wZXJ0eSBmb3IgZW11bGF0b3JzXG4gIG91dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnZ2V0cHJvcCcsICdxZW11LnNmLmxjZF9kZW5zaXR5J10pO1xuICBpZiAob3V0KSB7XG4gICAgbGV0IHZhbCA9IHBhcnNlSW50KG91dCwgMTApO1xuICAgIGlmICghaXNOYU4odmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYFBhcnNlZCBkZW5zaXR5IHZhbHVlIHdhcyBOYU46IFwiJHtvdXR9XCJgKTtcbiAgfVxuICAvLyBjb3VsZG4ndCBnZXQgYW55dGhpbmcsIHNvIGVycm9yIG91dFxuICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGYWlsZWQgdG8gZ2V0IGRpc3BsYXkgZGVuc2l0eSBwcm9wZXJ0eS4nKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FjdGlvbn0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUoYWN0aW9uKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdhY3Rpb24nIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICBhd2FpdCB0aGlzLmFkYi5wZXJmb3JtRWRpdG9yQWN0aW9uKGFjdGlvbik7XG59O1xuXG5jb25zdCBQRVJNSVNTSU9OX0FDVElPTiA9IHtcbiAgR1JBTlQ6ICdncmFudCcsXG4gIFJFVk9LRTogJ3Jldm9rZScsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENoYW5nZVBlcm1pc3Npb25zT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfEFycmF5PHN0cmluZz59IHBlcm1pc3Npb25zIC0gVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcGVybWlzc2lvbiB0byBiZSBjaGFuZ2VkXG4gKiBvciBhIGxpc3Qgb2YgcGVybWlzc2lvbnMuIE1hbmRhdG9yeSBhcmd1bWVudC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFjdGlvbiBbZ3JhbnRdIC0gT25lIG9mIGBQRVJNSVNTSU9OX0FDVElPTmAgdmFsdWVzXG4gKi9cblxuLyoqXG4gKiBDaGFuZ2VzIHBhY2thZ2UgcGVybWlzc2lvbnMgaW4gcnVudGltZS5cbiAqXG4gKiBAcGFyYW0gez9DaGFuZ2VQZXJtaXNzaW9uc09wdGlvbnN9IG9wdHMgLSBBdmFpbGFibGUgb3B0aW9ucyBtYXBwaW5nLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgcGVybWlzc2lvbnNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBwZXJtaXNzaW9ucyxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgYWN0aW9uID0gUEVSTUlTU0lPTl9BQ1RJT04uR1JBTlQsXG4gIH0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUocGVybWlzc2lvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ3Blcm1pc3Npb25zJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgbGV0IGFjdGlvbkZ1bmM7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGFjdGlvbikpIHtcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLkdSQU5UOlxuICAgICAgYWN0aW9uRnVuYyA9IChhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKSA9PiB0aGlzLmFkYi5ncmFudFBlcm1pc3Npb24oYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLlJFVk9LRTpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSwgcGVybWlzc2lvbikgPT4gdGhpcy5hZGIucmV2b2tlUGVybWlzc2lvbihhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBVbmtub3duIGFjdGlvbiAnJHthY3Rpb259Jy4gYCArXG4gICAgICAgIGBPbmx5ICR7SlNPTi5zdHJpbmdpZnkoXy52YWx1ZXMoUEVSTUlTU0lPTl9BQ1RJT04pKX0gYWN0aW9ucyBhcmUgc3VwcG9ydGVkYCk7XG4gIH1cbiAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIChfLmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdKSkge1xuICAgIGF3YWl0IGFjdGlvbkZ1bmMoYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gIH1cbn07XG5cbmNvbnN0IFBFUk1JU1NJT05TX1RZUEUgPSB7XG4gIERFTklFRDogJ2RlbmllZCcsXG4gIEdSQU5URUQ6ICdncmFudGVkJyxcbiAgUkVRVUVTVEVEOiAncmVxdWVzdGVkJyxcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0UGVybWlzc2lvbnNPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBbcmVxdWVzdGVkXSAtIE9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHR5cGVzIHRvIGdldC5cbiAqIENhbiBiZSBhbnkgb2YgYFBFUk1JU1NJT05TX1RZUEVgIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICovXG5cbi8qKlxuICogR2V0cyBydW50aW1lIHBlcm1pc3Npb25zIGxpc3QgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7R2V0UGVybWlzc2lvbnNPcHRpb25zfSBvcHRzIC0gQXZhaWxhYmxlIG9wdGlvbnMgbWFwcGluZy5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiB0eXBlXG4gKiAoY2FuIGFsc28gYmUgZW1wdHkpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHBlcm1pc3Npb25zLlxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRQZXJtaXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldFBlcm1pc3Npb25zIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBQRVJNSVNTSU9OU19UWVBFLlJFUVVFU1RFRCxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gIH0gPSBvcHRzO1xuXG4gIGxldCBhY3Rpb25GdW5jO1xuICBzd2l0Y2ggKF8udG9Mb3dlcih0eXBlKSkge1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5SRVFVRVNURUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldFJlcVBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLkdSQU5URUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldEdyYW50ZWRQZXJtaXNzaW9ucyhhcHBQYWNrYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5ERU5JRUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldERlbmllZFBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gcGVybWlzc2lvbnMgdHlwZSAnJHt0eXBlfScuIGAgK1xuICAgICAgICBgT25seSAke0pTT04uc3RyaW5naWZ5KF8udmFsdWVzKFBFUk1JU1NJT05TX1RZUEUpKX0gdHlwZXMgYXJlIHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBhd2FpdCBhY3Rpb25GdW5jKGFwcFBhY2thZ2UpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcmVjZW50IHN5c3RlbSBub3RpZmljYXRpb25zLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldE5vdGlmaWNhdGlvbnNgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldE5vdGlmaWNhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXROb3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldE5vdGlmaWNhdGlvbnMoKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU21zTGlzdE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXggWzEwMF0gLSBUaGUgbWF4aW11bSBjb3VudCBvZiByZWNlbnQgU01TIG1lc3NhZ2VzXG4gKiB0byByZXRyaWV2ZVxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIHJlY2VudCBTTVMgbWVzc2FnZXMgd2l0aCB0aGVpciBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7U21zTGlzdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldFNtc0xpc3RgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxpc3RTbXMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0U21zIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldFNtc0xpc3Qob3B0cyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFVubG9ja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXkgVGhlIHVubG9jayBrZXkuIFRoZSB2YWx1ZSBvZiB0aGlzIGtleSBkZXBlbmRzXG4gKiBvbiB0aGUgYWN0dWFsIHVubG9jayB0eXBlIGFuZCBjb3VsZCBiZSBhIHBpbi9wYXNzd29yZC9wYXR0ZXJuIHZhbHVlIG9yXG4gKiBhIGJpb21ldHJpYyBmaW5nZXIgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBUaGUgdW5sb2NrIHR5cGUuIFRoZSBmb2xsb3dpbmcgdW5sb2NrIHR5cGVzXG4gKiBhcmUgc3VwcG9ydGVkOiBgcGluYCwgYHBpbldpdGhLZXlFdmVudGAsIGBwYXNzd29yZGAsIGBwYXR0ZXJuYCBhbmQgYGZpbmdlcnByaW50YC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc3RyYXRlZ3kgRWl0aGVyICdsb2Nrc2V0dGluZ3MnIChkZWZhdWx0KSBvciAndWlhdXRvbWF0b3InLlxuICogU2V0dGluZyBpdCB0byAndWlhdXRvbWF0b3InIHdpbGwgZW5mb3JjZSB0aGUgZHJpdmVyIHRvIGF2b2lkIHVzaW5nIHNwZWNpYWxcbiAqIEFEQiBzaG9ydGN1dHMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgdGhlIHVubG9jayBwcm9jZWR1cmUuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRpbWVvdXRNcyBbMjAwMF0gVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAqIHRvIHdhaXQgdW50aWwgdGhlIHNjcmVlbiBnZXRzIHVubG9ja2VkXG4gKi9cblxuLyoqXG4gKiBVbmxvY2tzIHRoZSBkZXZpY2UgaWYgaXQgaXMgbG9ja2VkLiBOb29wIGlmIHRoZSBkZXZpY2UncyBzY3JlZW4gaXMgbm90IGxvY2tlZC5cbiAqXG4gKiBAcGFyYW0gez9VbmxvY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdW5sb2NrIG9wZXJhdGlvbiBmYWlscyBvciB0aGUgcHJvdmlkZWRcbiAqIGFyZ3VtZW50cyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVVubG9jayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsga2V5LCB0eXBlLCBzdHJhdGVneSwgdGltZW91dE1zIH0gPSBvcHRzO1xuICBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHtcbiAgICB1bmxvY2tLZXk6IGtleSxcbiAgICB1bmxvY2tUeXBlOiB0eXBlLFxuICAgIHVubG9ja1N0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICB1bmxvY2tTdWNjZXNzVGltZW91dDogdGltZW91dE1zLFxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsc0JBQTlCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBRixRQUFRLENBQUNHLElBQVQsR0FBZ0IsZUFBZUEsSUFBZixDQUFxQkEsSUFBckIsRUFBMkI7RUFFekNBLElBQUksR0FBR0MsZ0JBQUVDLE9BQUYsQ0FBVUYsSUFBVixJQUFrQkEsSUFBSSxDQUFDRyxJQUFMLENBQVUsRUFBVixDQUFsQixHQUFrQ0gsSUFBekM7RUFDQSxJQUFJSSxNQUFNLEdBQUc7SUFDWEMsSUFBSSxFQUFFTCxJQURLO0lBRVhNLE9BQU8sRUFBRTtFQUZFLENBQWI7O0VBSUEsSUFBSSxLQUFLQyxJQUFMLENBQVVDLGVBQWQsRUFBK0I7SUFDN0JKLE1BQU0sQ0FBQ0ksZUFBUCxHQUF5QixJQUF6QjtFQUNEOztFQUNELE1BQU0sS0FBS0MsVUFBTCxDQUFnQkwsTUFBaEIsQ0FBTjtBQUNELENBWEQ7O0FBYUFQLFFBQVEsQ0FBQ1ksVUFBVCxHQUFzQixlQUFlQSxVQUFmLENBQTJCTCxNQUEzQixFQUFtQztFQUN2RCxPQUFPLE1BQU0sS0FBS00sU0FBTCxDQUFlQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDUCxNQUFyQyxDQUFiO0FBQ0QsQ0FGRDs7QUFhQVAsUUFBUSxDQUFDZSxh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
422
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiLCJuYW1lcyI6WyJNT01FTlRfRk9STUFUX0lTTzg2MDEiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwia2V5cyIsIl8iLCJpc0FycmF5Iiwiam9pbiIsInBhcmFtcyIsInRleHQiLCJyZXBsYWNlIiwib3B0cyIsInVuaWNvZGVLZXlib2FyZCIsImRvU2VuZEtleXMiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwiZ2V0RGV2aWNlVGltZSIsImZvcm1hdCIsImxvZyIsImRlYnVnIiwiZGV2aWNlVGltZXN0YW1wIiwiYWRiIiwic2hlbGwiLCJ0cmltIiwicGFyc2VkVGltZXN0YW1wIiwibW9tZW50IiwidXRjIiwiaXNWYWxpZCIsIndhcm4iLCJ1dGNPZmZzZXQiLCJfdHptIiwibW9iaWxlR2V0RGV2aWNlVGltZSIsImdldFBhZ2VTb3VyY2UiLCJiYWNrIiwiaXNLZXlib2FyZFNob3duIiwiaXNTb2Z0S2V5Ym9hcmRQcmVzZW50IiwiaGlkZUtleWJvYXJkIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJzZXR0aW5nIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwiZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSIsIndhaXRGb3JOb3RBY3Rpdml0eSIsImdldFdpbmRvd1NpemUiLCJnZXRXaW5kb3dSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJ4IiwieSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImdldEN1cnJlbnRQYWNrYWdlIiwiYmFja2dyb3VuZCIsInNlY29uZHMiLCJnb1RvSG9tZSIsInNsZWVwTXMiLCJ0aHJlc2hvbGRNcyIsImludGVydmFsTXMiLCJtaW4iLCJwYXJzZUludCIsInByb2dyZXNzQ2IiLCJlbGFwc2VkTXMiLCJwcm9ncmVzcyIsIndhaXRTZWNzIiwidG9GaXhlZCIsInByb2dyZXNzUGN0IiwibG9uZ1NsZWVwIiwiYXJncyIsIl9jYWNoZWRBY3Rpdml0eUFyZ3MiLCJhY3RpdmF0ZUFwcCIsImlnbiIsImFwcFdhaXRQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5Iiwic3BsaXQiLCJpbmNsdWRlcyIsInBrZyIsImFjdGl2aXR5IiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJ1c2VyIiwidXNlclByb2ZpbGUiLCJ1dGlsIiwiZmlsdGVyT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QXBwIiwiZ2V0U3RyaW5ncyIsImxhbmd1YWdlIiwiZ2V0RGV2aWNlTGFuZ3VhZ2UiLCJpbmZvIiwicHJlcHJvY2Vzc1N0cmluZ3NNYXAiLCJtYXBwaW5nIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJhcGtTdHJpbmdzIiwiYW5kcm9pZEhlbHBlcnMiLCJwdXNoU3RyaW5ncyIsImxhdW5jaEFwcCIsImluaXRBVVQiLCJzdGFydEFVVCIsInN0YXJ0QWN0aXZpdHkiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJoYXNWYWx1ZSIsInJlc2V0IiwicmVzZXRBcHAiLCJPYmplY3QiLCJhc3NpZ24iLCJmYXN0UmVzZXQiLCJzZXRDb250ZXh0IiwiaXNDaHJvbWVTZXNzaW9uIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic2V0VXJsIiwidXJpIiwic3RhcnRVcmkiLCJjbG9zZUFwcCIsImZvcmNlU3RvcCIsImdldERpc3BsYXlEZW5zaXR5Iiwib3V0IiwidmFsIiwiaXNOYU4iLCJlcnJvckFuZFRocm93IiwibW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwicGVyZm9ybUVkaXRvckFjdGlvbiIsIlBFUk1JU1NJT05fQUNUSU9OIiwiR1JBTlQiLCJSRVZPS0UiLCJtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWN0aW9uRnVuYyIsInRvTG93ZXIiLCJwZXJtaXNzaW9uIiwiZ3JhbnRQZXJtaXNzaW9uIiwicmV2b2tlUGVybWlzc2lvbiIsInZhbHVlcyIsIlBFUk1JU1NJT05TX1RZUEUiLCJERU5JRUQiLCJHUkFOVEVEIiwiUkVRVUVTVEVEIiwibW9iaWxlR2V0UGVybWlzc2lvbnMiLCJ0eXBlIiwiZ2V0UmVxUGVybWlzc2lvbnMiLCJnZXRHcmFudGVkUGVybWlzc2lvbnMiLCJnZXREZW5pZWRQZXJtaXNzaW9ucyIsIm1vYmlsZUdldE5vdGlmaWNhdGlvbnMiLCJnZXROb3RpZmljYXRpb25zIiwibW9iaWxlTGlzdFNtcyIsImdldFNtc0xpc3QiLCJtb2JpbGVVbmxvY2siLCJzdHJhdGVneSIsInRpbWVvdXRNcyIsInVubG9jayIsInVubG9ja0tleSIsInVubG9ja1R5cGUiLCJ1bmxvY2tTdHJhdGVneSIsInVubG9ja1N1Y2Nlc3NUaW1lb3V0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBsb25nU2xlZXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTU9NRU5UX0ZPUk1BVF9JU084NjAxID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAoa2V5cykge1xuICAvLyBQcm90b2NvbCBzZW5kcyBhbiBhcnJheTsgcmV0aGluayBhcHByb2FjaFxuICBrZXlzID0gXy5pc0FycmF5KGtleXMpID8ga2V5cy5qb2luKCcnKSA6IGtleXM7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgdGV4dDoga2V5cyxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9O1xuICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCkge1xuICAgIHBhcmFtcy51bmljb2RlS2V5Ym9hcmQgPSB0cnVlO1xuICB9XG4gIGF3YWl0IHRoaXMuZG9TZW5kS2V5cyhwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZG9TZW5kS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIGRvU2VuZEtleXMgKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignc2V0VGV4dCcsIHBhcmFtcyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBkZXZpY2UncyB0aW1lc3RhbXAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCAtIFRoZSBzZXQgb2YgZm9ybWF0IHNwZWNpZmllcnMuIFJlYWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyB0byBnZXQgdGhlIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZSBmb3JtYXQgc3BlY2lmaWVycy4gVGhlIGRlZmF1bHQgZm9ybWF0IGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgYFlZWVktTU0tRERUSEg6bW06c3NaYCwgd2hpY2ggY29tcGxpZXMgdG8gSVNPLTg2MDFcbiAqIEByZXR1cm4ge3N0cmluZ30gRm9ybWF0dGVkIGRhdGV0aW1lIHN0cmluZyBvciB0aGUgcmF3IGNvbW1hbmQgb3V0cHV0IGlmIGZvcm1hdHRpbmcgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVGltZSA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKGZvcm1hdCA9IE1PTUVOVF9GT1JNQVRfSVNPODYwMSkge1xuICB0aGlzLmxvZy5kZWJ1ZygnQXR0ZW1wdGluZyB0byBjYXB0dXJlIGFuZHJvaWQgZGV2aWNlIGRhdGUgYW5kIHRpbWUuICcgK1xuICAgIGBUaGUgZm9ybWF0IHNwZWNpZmllciBpcyAnJHtmb3JtYXR9J2ApO1xuICBjb25zdCBkZXZpY2VUaW1lc3RhbXAgPSAoYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkYXRlJywgJyslWS0lbS0lZFQlVCV6J10pKS50cmltKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBHb3QgZGV2aWNlIHRpbWVzdGFtcDogJHtkZXZpY2VUaW1lc3RhbXB9YCk7XG4gIGNvbnN0IHBhcnNlZFRpbWVzdGFtcCA9IG1vbWVudC51dGMoZGV2aWNlVGltZXN0YW1wLCAnWVlZWS1NTS1ERFRISDptbTpzc1paJyk7XG4gIGlmICghcGFyc2VkVGltZXN0YW1wLmlzVmFsaWQoKSkge1xuICAgIHRoaXMubG9nLndhcm4oJ0Nhbm5vdCBwYXJzZSB0aGUgcmV0dXJuZWQgdGltZXN0YW1wLiBSZXR1cm5pbmcgYXMgaXMnKTtcbiAgICByZXR1cm4gZGV2aWNlVGltZXN0YW1wO1xuICB9XG4gIHJldHVybiBwYXJzZWRUaW1lc3RhbXAudXRjT2Zmc2V0KHBhcnNlZFRpbWVzdGFtcC5fdHptIHx8IDApLmZvcm1hdChmb3JtYXQpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXZpY2VUaW1lT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGZvcm1hdCBbWVlZWS1NTS1ERFRISDptbTpzc1pdIC0gU2VlIGdldERldmljZVRpbWUjZm9ybWF0XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIHRpbWVcbiAqXG4gKiBAcGFyYW0ge0RldmljZVRpbWVPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEZvcm1hdHRlZCBkYXRldGltZSBzdHJpbmcgb3IgdGhlIHJhdyBjb21tYW5kIG91dHB1dCBpZiBmb3JtYXR0aW5nIGZhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZVRpbWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXREZXZpY2VUaW1lIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RGV2aWNlVGltZShvcHRzLmZvcm1hdCk7XG59O1xuXG5jb21tYW5kcy5nZXRQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZVNvdXJjZSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdzb3VyY2UnKTtcbn07XG5cbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiBiYWNrICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3ByZXNzQmFjaycpO1xufTtcblxuY29tbWFuZHMuaXNLZXlib2FyZFNob3duID0gYXN5bmMgZnVuY3Rpb24gaXNLZXlib2FyZFNob3duICgpIHtcbiAgY29uc3Qge2lzS2V5Ym9hcmRTaG93bn0gPSBhd2FpdCB0aGlzLmFkYi5pc1NvZnRLZXlib2FyZFByZXNlbnQoKTtcbiAgcmV0dXJuIGlzS2V5Ym9hcmRTaG93bjtcbn07XG5cbmNvbW1hbmRzLmhpZGVLZXlib2FyZCA9IGFzeW5jIGZ1bmN0aW9uIGhpZGVLZXlib2FyZCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5oaWRlS2V5Ym9hcmQoKTtcbn07XG5cbmNvbW1hbmRzLm9wZW5TZXR0aW5nc0FjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gb3BlblNldHRpbmdzQWN0aXZpdHkgKHNldHRpbmcpIHtcbiAgbGV0IHthcHBQYWNrYWdlLCBhcHBBY3Rpdml0eX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnYW0nLCAnc3RhcnQnLCAnLWEnLCBgYW5kcm9pZC5zZXR0aW5ncy4ke3NldHRpbmd9YF0pO1xuICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1NpemUgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZ2V0RGV2aWNlU2l6ZScpO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1JlY3QgKCkge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRBY3Rpdml0eSAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpKS5hcHBBY3Rpdml0eTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRQYWNrYWdlID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFBhY2thZ2UgKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKSkuYXBwUGFja2FnZTtcbn07XG5cbmNvbW1hbmRzLmJhY2tncm91bmQgPSBhc3luYyBmdW5jdGlvbiBiYWNrZ3JvdW5kIChzZWNvbmRzKSB7XG4gIGlmIChzZWNvbmRzIDwgMCkge1xuICAgIC8vIGlmIHVzZXIgcGFzc2VzIGluIGEgbmVnYXRpdmUgc2Vjb25kcyB2YWx1ZSwgaW50ZXJwcmV0IHRoYXQgYXMgdGhlIGluc3RydWN0aW9uXG4gICAgLy8gdG8gbm90IGJyaW5nIHRoZSBhcHAgYmFjayBhdCBhbGxcbiAgICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCB7YXBwUGFja2FnZSwgYXBwQWN0aXZpdHl9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpO1xuICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuXG4gIC8vIHBlb3BsZSBjYW4gd2FpdCBmb3IgYSBsb25nIHRpbWUsIHNvIHRvIGJlIHNhZmUgbGV0J3MgdXNlIHRoZSBsb25nU2xlZXAgZnVuY3Rpb24gYW5kIGxvZ1xuICAvLyBwcm9ncmVzcyBwZXJpb2RpY2FsbHkuXG4gIGNvbnN0IHNsZWVwTXMgPSBzZWNvbmRzICogMTAwMDtcbiAgY29uc3QgdGhyZXNob2xkTXMgPSAzMCAqIDEwMDA7IC8vIHVzZSB0aGUgc3Bpbi13YWl0IGZvciBhbnl0aGluZyBvdmVyIHRoaXMgdGhyZXNob2xkXG4gIC8vIGZvciBvdXIgc3BpbiBpbnRlcnZhbCwgdXNlIDElIG9mIHRoZSB0b3RhbCB3YWl0IHRpbWUsIGJ1dCBub3RoaW5nIGJpZ2dlciB0aGFuIDMwc1xuICBjb25zdCBpbnRlcnZhbE1zID0gXy5taW4oWzMwICogMTAwMCwgcGFyc2VJbnQoc2xlZXBNcyAvIDEwMCwgMTApXSk7XG4gIGNvbnN0IHByb2dyZXNzQ2IgPSAoe2VsYXBzZWRNcywgcHJvZ3Jlc3N9KSA9PiB7XG4gICAgY29uc3Qgd2FpdFNlY3MgPSAoZWxhcHNlZE1zIC8gMTAwMCkudG9GaXhlZCgwKTtcbiAgICBjb25zdCBwcm9ncmVzc1BjdCA9IChwcm9ncmVzcyAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgV2FpdGVkICR7d2FpdFNlY3N9cyBzbyBmYXIgKCR7cHJvZ3Jlc3NQY3R9JSlgKTtcbiAgfTtcbiAgYXdhaXQgbG9uZ1NsZWVwKHNsZWVwTXMsIHt0aHJlc2hvbGRNcywgaW50ZXJ2YWxNcywgcHJvZ3Jlc3NDYn0pO1xuXG4gIGxldCBhcmdzO1xuICBpZiAodGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzICYmIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdKSB7XG4gICAgLy8gdGhlIGFjdGl2aXR5IHdhcyBzdGFydGVkIHdpdGggYHN0YXJ0QWN0aXZpdHlgLCBzbyB1c2UgdGhvc2UgYXJncyB0byByZXN0YXJ0XG4gICAgYXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWN0aXZhdGluZyBhcHAgJyR7YXBwUGFja2FnZX0nIGluIG9yZGVyIHRvIHJlc3RvcmUgaXRgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVBcHAoYXBwUGFja2FnZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgYXJncyA9ICgoYXBwUGFja2FnZSA9PT0gdGhpcy5vcHRzLmFwcFBhY2thZ2UgJiYgYXBwQWN0aXZpdHkgPT09IHRoaXMub3B0cy5hcHBBY3Rpdml0eSkgfHxcbiAgICAgICAgICAgIChhcHBQYWNrYWdlID09PSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgJiYgKHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHkgfHwgJycpLnNwbGl0KCcsJykuaW5jbHVkZXMoYXBwQWN0aXZpdHkpKSlcbiAgICAgID8gey8vIHRoZSBhY3Rpdml0eSBpcyB0aGUgb3JpZ2luYWwgc2Vzc2lvbiBhY3Rpdml0eSwgc28gdXNlIHRoZSBvcmlnaW5hbCBhcmdzXG4gICAgICAgIHBrZzogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMub3B0cy5pbnRlbnRDYXRlZ29yeSxcbiAgICAgICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyxcbiAgICAgICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgICAgICB3YWl0QWN0aXZpdHk6IHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHksXG4gICAgICAgIHdhaXRGb3JMYXVuY2g6IHRoaXMub3B0cy5hcHBXYWl0Rm9yTGF1bmNoLFxuICAgICAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzOiB0aGlzLm9wdHMub3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsXG4gICAgICAgIHN0b3BBcHA6IGZhbHNlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGV9XG4gICAgICA6IHsvLyB0aGUgYWN0aXZpdHkgd2FzIHN0YXJ0ZWQgc29tZSBvdGhlciB3YXksIHNvIHVzZSBkZWZhdWx0c1xuICAgICAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgd2FpdFBrZzogYXBwUGFja2FnZSxcbiAgICAgICAgd2FpdEFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgc3RvcEFwcDogZmFsc2V9O1xuICB9XG4gIGFyZ3MgPSBhd2FpdCB1dGlsLmZpbHRlck9iamVjdChhcmdzKTtcbiAgdGhpcy5sb2cuZGVidWcoYEJyaW5naW5nIGFwcGxpY2F0aW9uIGJhY2sgdG8gZm9yZWdyb3VuZCB3aXRoIGFyZ3VtZW50czogJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMuZ2V0U3RyaW5ncyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN0cmluZ3MgKGxhbmd1YWdlKSB7XG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICBsYW5ndWFnZSA9IGF3YWl0IHRoaXMuYWRiLmdldERldmljZUxhbmd1YWdlKCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkLCByZXR1cm5pbmcgc3RyaW5ncyBmb3I6ICR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvLyBDbGllbnRzIHJlcXVpcmUgdGhlIHJlc3VsdGluZyBtYXBwaW5nIHRvIGhhdmUgYm90aCBrZXlzXG4gIC8vIGFuZCB2YWx1ZXMgb2YgdHlwZSBzdHJpbmdcbiAgY29uc3QgcHJlcHJvY2Vzc1N0cmluZ3NNYXAgPSAobWFwcGluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhtYXBwaW5nKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlmICh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBzdHJpbmdzXG4gICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pO1xuICB9XG5cbiAgdGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLnB1c2hTdHJpbmdzKGxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgaWYgKHRoaXMuYm9vdHN0cmFwKSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBtdXRhdGluZyB0aGUgY3VycmVudCBsYW5ndWFnZSwgYnV0IGl0J3MgaG93IGFwcGl1bSBjdXJyZW50bHkgd29ya3NcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCd1cGRhdGVTdHJpbmdzJyk7XG4gIH1cblxuICByZXR1cm4gcHJlcHJvY2Vzc1N0cmluZ3NNYXAodGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSk7XG59O1xuXG5jb21tYW5kcy5sYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBsYXVuY2hBcHAgKCkge1xuICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcbiAgYXdhaXQgdGhpcy5zdGFydEFVVCgpO1xufTtcblxuY29tbWFuZHMuc3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWN0aXZpdHkgKGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LFxuICBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5LCBpbnRlbnRBY3Rpb24sIGludGVudENhdGVnb3J5LCBpbnRlbnRGbGFncyxcbiAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsIGRvbnRTdG9wQXBwT25SZXNldCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgU3RhcnRpbmcgcGFja2FnZSAnJHthcHBQYWNrYWdlfScgYW5kIGFjdGl2aXR5ICcke2FwcEFjdGl2aXR5fSdgKTtcblxuICAvLyBkb250U3RvcEFwcE9uUmVzZXQgaXMgYm90aCBhbiBhcmd1bWVudCBoZXJlLCBhbmQgYSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAgLy8gaWYgdGhlIGFyZ3VtZW50IGlzIHNldCwgdXNlIGl0LCBvdGhlcndpc2UgdXNlIHRoZSBjYXBcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKGRvbnRTdG9wQXBwT25SZXNldCkpIHtcbiAgICBkb250U3RvcEFwcE9uUmVzZXQgPSAhIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQ7XG4gIH1cblxuICBsZXQgYXJncyA9IHtcbiAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgYWN0aXZpdHk6IGFwcEFjdGl2aXR5LFxuICAgIHdhaXRQa2c6IGFwcFdhaXRQYWNrYWdlIHx8IGFwcFBhY2thZ2UsXG4gICAgd2FpdEFjdGl2aXR5OiBhcHBXYWl0QWN0aXZpdHkgfHwgYXBwQWN0aXZpdHksXG4gICAgYWN0aW9uOiBpbnRlbnRBY3Rpb24sXG4gICAgY2F0ZWdvcnk6IGludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiBpbnRlbnRGbGFncyxcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhZG9udFN0b3BBcHBPblJlc2V0XG4gIH07XG4gIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyB8fCB7fTtcbiAgdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzW2Ake2FyZ3Mud2FpdFBrZ30vJHthcmdzLndhaXRBY3Rpdml0eX1gXSA9IGFyZ3M7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMucmVzZXQgPSBhc3luYyBmdW5jdGlvbiByZXNldCAoKSB7XG4gIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtmYXN0UmVzZXQ6IHRydWV9KSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuaXNDaHJvbWVTZXNzaW9uID8gdGhpcy5zdGFydENocm9tZVNlc3Npb24oKSA6IHRoaXMuc3RhcnRBVVQoKTtcbn07XG5cbmNvbW1hbmRzLnN0YXJ0QVVUID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRBVVQgKCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydEFwcCh7XG4gICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICBhY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiB0aGlzLm9wdHMuaW50ZW50RmxhZ3MsXG4gICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICB3YWl0Rm9yTGF1bmNoOiB0aGlzLm9wdHMuYXBwV2FpdEZvckxhdW5jaCxcbiAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCxcbiAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gIH0pO1xufTtcblxuLy8gd2Ugb3ZlcnJpZGUgc2V0VXJsIHRvIHRha2UgYW4gYW5kcm9pZCBVUkkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRlZXAtbGlua2luZ1xuLy8gaW5zaWRlIGFuIGFwcCwgc2ltaWxhciB0byBzdGFydGluZyBhbiBpbnRlbnRcbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uIHNldFVybCAodXJpKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVyaSwgdGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xufTtcblxuLy8gY2xvc2luZyBhcHAgdXNpbmcgZm9yY2Ugc3RvcFxuY29tbWFuZHMuY2xvc2VBcHAgPSBhc3luYyBmdW5jdGlvbiBjbG9zZUFwcCAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbn07XG5cbmNvbW1hbmRzLmdldERpc3BsYXlEZW5zaXR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGlzcGxheURlbnNpdHkgKCkge1xuICAvLyBmaXJzdCB0cnkgdGhlIHByb3BlcnR5IGZvciBkZXZpY2VzXG4gIGxldCBvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2dldHByb3AnLCAncm8uc2YubGNkX2RlbnNpdHknXSk7XG4gIGlmIChvdXQpIHtcbiAgICBsZXQgdmFsID0gcGFyc2VJbnQob3V0LCAxMCk7XG4gICAgLy8gaWYgdGhlIHZhbHVlIGlzIE5hTiwgdHJ5IGdldHRpbmcgdGhlIGVtdWxhdG9yIHByb3BlcnR5XG4gICAgaWYgKCFpc05hTih2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIGRlbnNpdHkgdmFsdWUgd2FzIE5hTjogXCIke291dH1cImApO1xuICB9XG4gIC8vIGZhbGxiYWNrIHRvIHRyeWluZyBwcm9wZXJ0eSBmb3IgZW11bGF0b3JzXG4gIG91dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnZ2V0cHJvcCcsICdxZW11LnNmLmxjZF9kZW5zaXR5J10pO1xuICBpZiAob3V0KSB7XG4gICAgbGV0IHZhbCA9IHBhcnNlSW50KG91dCwgMTApO1xuICAgIGlmICghaXNOYU4odmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYFBhcnNlZCBkZW5zaXR5IHZhbHVlIHdhcyBOYU46IFwiJHtvdXR9XCJgKTtcbiAgfVxuICAvLyBjb3VsZG4ndCBnZXQgYW55dGhpbmcsIHNvIGVycm9yIG91dFxuICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGYWlsZWQgdG8gZ2V0IGRpc3BsYXkgZGVuc2l0eSBwcm9wZXJ0eS4nKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FjdGlvbn0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUoYWN0aW9uKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdhY3Rpb24nIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICBhd2FpdCB0aGlzLmFkYi5wZXJmb3JtRWRpdG9yQWN0aW9uKGFjdGlvbik7XG59O1xuXG5jb25zdCBQRVJNSVNTSU9OX0FDVElPTiA9IHtcbiAgR1JBTlQ6ICdncmFudCcsXG4gIFJFVk9LRTogJ3Jldm9rZScsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENoYW5nZVBlcm1pc3Npb25zT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfEFycmF5PHN0cmluZz59IHBlcm1pc3Npb25zIC0gVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcGVybWlzc2lvbiB0byBiZSBjaGFuZ2VkXG4gKiBvciBhIGxpc3Qgb2YgcGVybWlzc2lvbnMuIE1hbmRhdG9yeSBhcmd1bWVudC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFjdGlvbiBbZ3JhbnRdIC0gT25lIG9mIGBQRVJNSVNTSU9OX0FDVElPTmAgdmFsdWVzXG4gKi9cblxuLyoqXG4gKiBDaGFuZ2VzIHBhY2thZ2UgcGVybWlzc2lvbnMgaW4gcnVudGltZS5cbiAqXG4gKiBAcGFyYW0gez9DaGFuZ2VQZXJtaXNzaW9uc09wdGlvbnN9IG9wdHMgLSBBdmFpbGFibGUgb3B0aW9ucyBtYXBwaW5nLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgcGVybWlzc2lvbnNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBwZXJtaXNzaW9ucyxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgYWN0aW9uID0gUEVSTUlTU0lPTl9BQ1RJT04uR1JBTlQsXG4gIH0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUocGVybWlzc2lvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ3Blcm1pc3Npb25zJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgbGV0IGFjdGlvbkZ1bmM7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGFjdGlvbikpIHtcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLkdSQU5UOlxuICAgICAgYWN0aW9uRnVuYyA9IChhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKSA9PiB0aGlzLmFkYi5ncmFudFBlcm1pc3Npb24oYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLlJFVk9LRTpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSwgcGVybWlzc2lvbikgPT4gdGhpcy5hZGIucmV2b2tlUGVybWlzc2lvbihhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBVbmtub3duIGFjdGlvbiAnJHthY3Rpb259Jy4gYCArXG4gICAgICAgIGBPbmx5ICR7SlNPTi5zdHJpbmdpZnkoXy52YWx1ZXMoUEVSTUlTU0lPTl9BQ1RJT04pKX0gYWN0aW9ucyBhcmUgc3VwcG9ydGVkYCk7XG4gIH1cbiAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIChfLmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdKSkge1xuICAgIGF3YWl0IGFjdGlvbkZ1bmMoYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gIH1cbn07XG5cbmNvbnN0IFBFUk1JU1NJT05TX1RZUEUgPSB7XG4gIERFTklFRDogJ2RlbmllZCcsXG4gIEdSQU5URUQ6ICdncmFudGVkJyxcbiAgUkVRVUVTVEVEOiAncmVxdWVzdGVkJyxcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0UGVybWlzc2lvbnNPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBbcmVxdWVzdGVkXSAtIE9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHR5cGVzIHRvIGdldC5cbiAqIENhbiBiZSBhbnkgb2YgYFBFUk1JU1NJT05TX1RZUEVgIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICovXG5cbi8qKlxuICogR2V0cyBydW50aW1lIHBlcm1pc3Npb25zIGxpc3QgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7R2V0UGVybWlzc2lvbnNPcHRpb25zfSBvcHRzIC0gQXZhaWxhYmxlIG9wdGlvbnMgbWFwcGluZy5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiB0eXBlXG4gKiAoY2FuIGFsc28gYmUgZW1wdHkpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHBlcm1pc3Npb25zLlxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRQZXJtaXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldFBlcm1pc3Npb25zIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBQRVJNSVNTSU9OU19UWVBFLlJFUVVFU1RFRCxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gIH0gPSBvcHRzO1xuXG4gIGxldCBhY3Rpb25GdW5jO1xuICBzd2l0Y2ggKF8udG9Mb3dlcih0eXBlKSkge1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5SRVFVRVNURUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldFJlcVBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLkdSQU5URUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldEdyYW50ZWRQZXJtaXNzaW9ucyhhcHBQYWNrYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5ERU5JRUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldERlbmllZFBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gcGVybWlzc2lvbnMgdHlwZSAnJHt0eXBlfScuIGAgK1xuICAgICAgICBgT25seSAke0pTT04uc3RyaW5naWZ5KF8udmFsdWVzKFBFUk1JU1NJT05TX1RZUEUpKX0gdHlwZXMgYXJlIHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBhd2FpdCBhY3Rpb25GdW5jKGFwcFBhY2thZ2UpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcmVjZW50IHN5c3RlbSBub3RpZmljYXRpb25zLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldE5vdGlmaWNhdGlvbnNgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldE5vdGlmaWNhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXROb3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldE5vdGlmaWNhdGlvbnMoKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU21zTGlzdE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXggWzEwMF0gLSBUaGUgbWF4aW11bSBjb3VudCBvZiByZWNlbnQgU01TIG1lc3NhZ2VzXG4gKiB0byByZXRyaWV2ZVxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIHJlY2VudCBTTVMgbWVzc2FnZXMgd2l0aCB0aGVpciBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7U21zTGlzdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldFNtc0xpc3RgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxpc3RTbXMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0U21zIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldFNtc0xpc3Qob3B0cyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFVubG9ja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXkgVGhlIHVubG9jayBrZXkuIFRoZSB2YWx1ZSBvZiB0aGlzIGtleSBkZXBlbmRzXG4gKiBvbiB0aGUgYWN0dWFsIHVubG9jayB0eXBlIGFuZCBjb3VsZCBiZSBhIHBpbi9wYXNzd29yZC9wYXR0ZXJuIHZhbHVlIG9yXG4gKiBhIGJpb21ldHJpYyBmaW5nZXIgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBUaGUgdW5sb2NrIHR5cGUuIFRoZSBmb2xsb3dpbmcgdW5sb2NrIHR5cGVzXG4gKiBhcmUgc3VwcG9ydGVkOiBgcGluYCwgYHBpbldpdGhLZXlFdmVudGAsIGBwYXNzd29yZGAsIGBwYXR0ZXJuYCBhbmQgYGZpbmdlcnByaW50YC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc3RyYXRlZ3kgRWl0aGVyICdsb2Nrc2V0dGluZ3MnIChkZWZhdWx0KSBvciAndWlhdXRvbWF0b3InLlxuICogU2V0dGluZyBpdCB0byAndWlhdXRvbWF0b3InIHdpbGwgZW5mb3JjZSB0aGUgZHJpdmVyIHRvIGF2b2lkIHVzaW5nIHNwZWNpYWxcbiAqIEFEQiBzaG9ydGN1dHMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgdGhlIHVubG9jayBwcm9jZWR1cmUuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRpbWVvdXRNcyBbMjAwMF0gVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAqIHRvIHdhaXQgdW50aWwgdGhlIHNjcmVlbiBnZXRzIHVubG9ja2VkXG4gKi9cblxuLyoqXG4gKiBVbmxvY2tzIHRoZSBkZXZpY2UgaWYgaXQgaXMgbG9ja2VkLiBOb29wIGlmIHRoZSBkZXZpY2UncyBzY3JlZW4gaXMgbm90IGxvY2tlZC5cbiAqXG4gKiBAcGFyYW0gez9VbmxvY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdW5sb2NrIG9wZXJhdGlvbiBmYWlscyBvciB0aGUgcHJvdmlkZWRcbiAqIGFyZ3VtZW50cyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVVubG9jayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsga2V5LCB0eXBlLCBzdHJhdGVneSwgdGltZW91dE1zIH0gPSBvcHRzO1xuICBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHtcbiAgICB1bmxvY2tLZXk6IGtleSxcbiAgICB1bmxvY2tUeXBlOiB0eXBlLFxuICAgIHVubG9ja1N0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICB1bmxvY2tTdWNjZXNzVGltZW91dDogdGltZW91dE1zLFxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsc0JBQTlCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBRixRQUFRLENBQUNHLElBQVQsR0FBZ0IsZUFBZUEsSUFBZixDQUFxQkEsSUFBckIsRUFBMkI7RUFFekNBLElBQUksR0FBR0MsZUFBQSxDQUFFQyxPQUFGLENBQVVGLElBQVYsSUFBa0JBLElBQUksQ0FBQ0csSUFBTCxDQUFVLEVBQVYsQ0FBbEIsR0FBa0NILElBQXpDO0VBQ0EsSUFBSUksTUFBTSxHQUFHO0lBQ1hDLElBQUksRUFBRUwsSUFESztJQUVYTSxPQUFPLEVBQUU7RUFGRSxDQUFiOztFQUlBLElBQUksS0FBS0MsSUFBTCxDQUFVQyxlQUFkLEVBQStCO0lBQzdCSixNQUFNLENBQUNJLGVBQVAsR0FBeUIsSUFBekI7RUFDRDs7RUFDRCxNQUFNLEtBQUtDLFVBQUwsQ0FBZ0JMLE1BQWhCLENBQU47QUFDRCxDQVhEOztBQWFBUCxRQUFRLENBQUNZLFVBQVQsR0FBc0IsZUFBZUEsVUFBZixDQUEyQkwsTUFBM0IsRUFBbUM7RUFDdkQsT0FBTyxNQUFNLEtBQUtNLFNBQUwsQ0FBZUMsVUFBZixDQUEwQixTQUExQixFQUFxQ1AsTUFBckMsQ0FBYjtBQUNELENBRkQ7O0FB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
@@ -56,4 +56,4 @@ var _default = extensions;
56
56
  exports.default = _default;require('source-map-support').install();
57
57
 
58
58
 
59
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ltZS5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJpc0lNRUFjdGl2YXRlZCIsImF2YWlsYWJsZUlNRUVuZ2luZXMiLCJsb2ciLCJkZWJ1ZyIsImVuZ2luZXMiLCJhZGIiLCJhdmFpbGFibGVJTUVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFjdGl2ZUlNRUVuZ2luZSIsImRlZmF1bHRJTUUiLCJhY3RpdmF0ZUlNRUVuZ2luZSIsImltZUlkIiwiYXZhaWxhYmxlRW5naW5lcyIsImluZGV4T2YiLCJlcnJvcnMiLCJJTUVOb3RBdmFpbGFibGVFcnJvciIsImVuYWJsZUlNRSIsInNldElNRSIsImRlYWN0aXZhdGVJTUVFbmdpbmUiLCJjdXJyZW50RW5naW5lIiwiZGlzYWJsZUlNRSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMuaXNJTUVBY3RpdmF0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0lNRUFjdGl2YXRlZCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAvLyBJTUUgaXMgYWx3YXlzIGFjdGl2YXRlZCBvbiBBbmRyb2lkIGRldmljZXNcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb21tYW5kcy5hdmFpbGFibGVJTUVFbmdpbmVzID0gYXN5bmMgZnVuY3Rpb24gYXZhaWxhYmxlSU1FRW5naW5lcyAoKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGF2YWlsYWJsZSBJTUVzJyk7XG4gIGxldCBlbmdpbmVzID0gYXdhaXQgdGhpcy5hZGIuYXZhaWxhYmxlSU1FcygpO1xuICB0aGlzLmxvZy5kZWJ1ZyhgRW5naW5lczogJHtKU09OLnN0cmluZ2lmeShlbmdpbmVzKX1gKTtcbiAgcmV0dXJuIGVuZ2luZXM7XG59O1xuXG5jb21tYW5kcy5nZXRBY3RpdmVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVJTUVFbmdpbmUgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnUmV0cmlldmluZyBjdXJyZW50IGRlZmF1bHQgSU1FJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5kZWZhdWx0SU1FKCk7XG59O1xuXG5jb21tYW5kcy5hY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlSU1FRW5naW5lIChpbWVJZCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byBhY3RpdmF0ZSBJTUUgJHtpbWVJZH1gKTtcbiAgbGV0IGF2YWlsYWJsZUVuZ2luZXMgPSBhd2FpdCB0aGlzLmFkYi5hdmFpbGFibGVJTUVzKCk7XG4gIGlmIChhdmFpbGFibGVFbmdpbmVzLmluZGV4T2YoaW1lSWQpID09PSAtMSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdJTUUgbm90IGZvdW5kLCBmYWlsaW5nJyk7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JTUVOb3RBdmFpbGFibGVFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKCdGb3VuZCBpbnN0YWxsZWQgSU1FLCBhdHRlbXB0aW5nIHRvIGFjdGl2YXRlJyk7XG4gIGF3YWl0IHRoaXMuYWRiLmVuYWJsZUlNRShpbWVJZCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNldElNRShpbWVJZCk7XG59O1xuXG5jb21tYW5kcy5kZWFjdGl2YXRlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gZGVhY3RpdmF0ZUlNRUVuZ2luZSAoKSB7XG4gIGxldCBjdXJyZW50RW5naW5lID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVJTUVFbmdpbmUoKTtcbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gZGVhY3RpdmF0ZSAke2N1cnJlbnRFbmdpbmV9YCk7XG4gIGF3YWl0IHRoaXMuYWRiLmRpc2FibGVJTUUoY3VycmVudEVuZ2luZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csY0FBVCxHQUEwQixlQUFlQSxjQUFmLEdBQWlDO0VBRXpELE9BQU8sSUFBUDtBQUNELENBSEQ7O0FBS0FILFFBQVEsQ0FBQ0ksbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWUsMkJBQWY7RUFDQSxJQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGFBQVQsRUFBcEI7RUFDQSxLQUFLSixHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBV0ksSUFBSSxDQUFDQyxTQUFMLENBQWVKLE9BQWYsQ0FBd0IsRUFBbkQ7RUFDQSxPQUFPQSxPQUFQO0FBQ0QsQ0FMRDs7QUFPQVAsUUFBUSxDQUFDWSxrQkFBVCxHQUE4QixlQUFlQSxrQkFBZixHQUFxQztFQUNqRSxLQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZSxnQ0FBZjtFQUNBLE9BQU8sTUFBTSxLQUFLRSxHQUFMLENBQVNLLFVBQVQsRUFBYjtBQUNELENBSEQ7O0FBS0FiLFFBQVEsQ0FBQ2MsaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsQ0FBa0NDLEtBQWxDLEVBQXlDO0VBQ3BFLEtBQUtWLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw4QkFBNkJTLEtBQU0sRUFBbkQ7RUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxNQUFNLEtBQUtSLEdBQUwsQ0FBU0MsYUFBVCxFQUE3Qjs7RUFDQSxJQUFJTyxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUJGLEtBQXpCLE1BQW9DLENBQUMsQ0FBekMsRUFBNEM7SUFDMUMsS0FBS1YsR0FBTCxDQUFTQyxLQUFULENBQWUsd0JBQWY7SUFDQSxNQUFNLElBQUlZLG1CQUFPQyxvQkFBWCxFQUFOO0VBQ0Q7O0VBQ0QsS0FBS2QsR0FBTCxDQUFTQyxLQUFULENBQWUsNkNBQWY7RUFDQSxNQUFNLEtBQUtFLEdBQUwsQ0FBU1ksU0FBVCxDQUFtQkwsS0FBbkIsQ0FBTjtFQUNBLE1BQU0sS0FBS1AsR0FBTCxDQUFTYSxNQUFULENBQWdCTixLQUFoQixDQUFOO0FBQ0QsQ0FWRDs7QUFZQWYsUUFBUSxDQUFDc0IsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsSUFBSUMsYUFBYSxHQUFHLE1BQU0sS0FBS1gsa0JBQUwsRUFBMUI7RUFDQSxLQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsNEJBQTJCaUIsYUFBYyxFQUF6RDtFQUNBLE1BQU0sS0FBS2YsR0FBTCxDQUFTZ0IsVUFBVCxDQUFvQkQsYUFBcEIsQ0FBTjtBQUNELENBSkQ7O0FBTUFFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjeEIsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUifQ==
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ltZS5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJpc0lNRUFjdGl2YXRlZCIsImF2YWlsYWJsZUlNRUVuZ2luZXMiLCJsb2ciLCJkZWJ1ZyIsImVuZ2luZXMiLCJhZGIiLCJhdmFpbGFibGVJTUVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFjdGl2ZUlNRUVuZ2luZSIsImRlZmF1bHRJTUUiLCJhY3RpdmF0ZUlNRUVuZ2luZSIsImltZUlkIiwiYXZhaWxhYmxlRW5naW5lcyIsImluZGV4T2YiLCJlcnJvcnMiLCJJTUVOb3RBdmFpbGFibGVFcnJvciIsImVuYWJsZUlNRSIsInNldElNRSIsImRlYWN0aXZhdGVJTUVFbmdpbmUiLCJjdXJyZW50RW5naW5lIiwiZGlzYWJsZUlNRSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMuaXNJTUVBY3RpdmF0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0lNRUFjdGl2YXRlZCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAvLyBJTUUgaXMgYWx3YXlzIGFjdGl2YXRlZCBvbiBBbmRyb2lkIGRldmljZXNcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb21tYW5kcy5hdmFpbGFibGVJTUVFbmdpbmVzID0gYXN5bmMgZnVuY3Rpb24gYXZhaWxhYmxlSU1FRW5naW5lcyAoKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGF2YWlsYWJsZSBJTUVzJyk7XG4gIGxldCBlbmdpbmVzID0gYXdhaXQgdGhpcy5hZGIuYXZhaWxhYmxlSU1FcygpO1xuICB0aGlzLmxvZy5kZWJ1ZyhgRW5naW5lczogJHtKU09OLnN0cmluZ2lmeShlbmdpbmVzKX1gKTtcbiAgcmV0dXJuIGVuZ2luZXM7XG59O1xuXG5jb21tYW5kcy5nZXRBY3RpdmVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVJTUVFbmdpbmUgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnUmV0cmlldmluZyBjdXJyZW50IGRlZmF1bHQgSU1FJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5kZWZhdWx0SU1FKCk7XG59O1xuXG5jb21tYW5kcy5hY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlSU1FRW5naW5lIChpbWVJZCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byBhY3RpdmF0ZSBJTUUgJHtpbWVJZH1gKTtcbiAgbGV0IGF2YWlsYWJsZUVuZ2luZXMgPSBhd2FpdCB0aGlzLmFkYi5hdmFpbGFibGVJTUVzKCk7XG4gIGlmIChhdmFpbGFibGVFbmdpbmVzLmluZGV4T2YoaW1lSWQpID09PSAtMSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdJTUUgbm90IGZvdW5kLCBmYWlsaW5nJyk7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JTUVOb3RBdmFpbGFibGVFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKCdGb3VuZCBpbnN0YWxsZWQgSU1FLCBhdHRlbXB0aW5nIHRvIGFjdGl2YXRlJyk7XG4gIGF3YWl0IHRoaXMuYWRiLmVuYWJsZUlNRShpbWVJZCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNldElNRShpbWVJZCk7XG59O1xuXG5jb21tYW5kcy5kZWFjdGl2YXRlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gZGVhY3RpdmF0ZUlNRUVuZ2luZSAoKSB7XG4gIGxldCBjdXJyZW50RW5naW5lID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVJTUVFbmdpbmUoKTtcbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gZGVhY3RpdmF0ZSAke2N1cnJlbnRFbmdpbmV9YCk7XG4gIGF3YWl0IHRoaXMuYWRiLmRpc2FibGVJTUUoY3VycmVudEVuZ2luZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csY0FBVCxHQUEwQixlQUFlQSxjQUFmLEdBQWlDO0VBRXpELE9BQU8sSUFBUDtBQUNELENBSEQ7O0FBS0FILFFBQVEsQ0FBQ0ksbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWUsMkJBQWY7RUFDQSxJQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGFBQVQsRUFBcEI7RUFDQSxLQUFLSixHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBV0ksSUFBSSxDQUFDQyxTQUFMLENBQWVKLE9BQWYsQ0FBd0IsRUFBbkQ7RUFDQSxPQUFPQSxPQUFQO0FBQ0QsQ0FMRDs7QUFPQVAsUUFBUSxDQUFDWSxrQkFBVCxHQUE4QixlQUFlQSxrQkFBZixHQUFxQztFQUNqRSxLQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZSxnQ0FBZjtFQUNBLE9BQU8sTUFBTSxLQUFLRSxHQUFMLENBQVNLLFVBQVQsRUFBYjtBQUNELENBSEQ7O0FBS0FiLFFBQVEsQ0FBQ2MsaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsQ0FBa0NDLEtBQWxDLEVBQXlDO0VBQ3BFLEtBQUtWLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw4QkFBNkJTLEtBQU0sRUFBbkQ7RUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxNQUFNLEtBQUtSLEdBQUwsQ0FBU0MsYUFBVCxFQUE3Qjs7RUFDQSxJQUFJTyxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUJGLEtBQXpCLE1BQW9DLENBQUMsQ0FBekMsRUFBNEM7SUFDMUMsS0FBS1YsR0FBTCxDQUFTQyxLQUFULENBQWUsd0JBQWY7SUFDQSxNQUFNLElBQUlZLGtCQUFBLENBQU9DLG9CQUFYLEVBQU47RUFDRDs7RUFDRCxLQUFLZCxHQUFMLENBQVNDLEtBQVQsQ0FBZSw2Q0FBZjtFQUNBLE1BQU0sS0FBS0UsR0FBTCxDQUFTWSxTQUFULENBQW1CTCxLQUFuQixDQUFOO0VBQ0EsTUFBTSxLQUFLUCxHQUFMLENBQVNhLE1BQVQsQ0FBZ0JOLEtBQWhCLENBQU47QUFDRCxDQVZEOztBQVlBZixRQUFRLENBQUNzQixtQkFBVCxHQUErQixlQUFlQSxtQkFBZixHQUFzQztFQUNuRSxJQUFJQyxhQUFhLEdBQUcsTUFBTSxLQUFLWCxrQkFBTCxFQUExQjtFQUNBLEtBQUtQLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw0QkFBMkJpQixhQUFjLEVBQXpEO0VBQ0EsTUFBTSxLQUFLZixHQUFMLENBQVNnQixVQUFULENBQW9CRCxhQUFwQixDQUFOO0FBQ0QsQ0FKRDs7QUFNQUUsTUFBTSxDQUFDQyxNQUFQLENBQWN4QixVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFFZUMsVSJ9
@@ -208,4 +208,4 @@ var _default = commands;
208
208
  exports.default = _default;require('source-map-support').install();
209
209
 
210
210
 
211
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ludGVudC5qcyIsIm5hbWVzIjpbIk5PX1ZBTFVFX0FSR19UWVBFIiwiU1VQUE9SVEVEX0VYVFJBX1RZUEVTIiwiQVBJX0xFVkVMX0FORFJPSURfOCIsImNvbW1hbmRzIiwicGFyc2VJbnRlbnRTcGVjIiwib3B0cyIsImludGVudCIsImFjdGlvbiIsInVyaSIsIm1pbWVUeXBlIiwiaWRlbnRpZmllciIsImNhdGVnb3JpZXMiLCJjb21wb25lbnQiLCJleHRyYXMiLCJmbGFncyIsInJlc3VsdEFyZ3MiLCJwdXNoIiwiXyIsImlzTmlsIiwiaXNBcnJheSIsImZsYXRNYXAiLCJtYXAiLCJjTmFtZSIsInBhY2thZ2UiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIml0ZW0iLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImlzRW1wdHkiLCJpc1N0cmluZyIsInRyaW0iLCJKU09OIiwic3RyaW5naWZ5IiwiaXNVbmRlZmluZWQiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwidXNlciIsIndhaXQiLCJzdG9wIiwid2luZG93aW5nTW9kZSIsImFjdGl2aXR5VHlwZSIsImRpc3BsYXkiLCJjbWQiLCJhZGIiLCJnZXRBcGlMZXZlbCIsInNoZWxsIiwibW9iaWxlQnJvYWRjYXN0IiwicmVjZWl2ZXJQZXJtaXNzaW9uIiwiYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvaW50ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLElBQTFC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
211
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ludGVudC5qcyIsIm5hbWVzIjpbIk5PX1ZBTFVFX0FSR19UWVBFIiwiU1VQUE9SVEVEX0VYVFJBX1RZUEVTIiwiQVBJX0xFVkVMX0FORFJPSURfOCIsImNvbW1hbmRzIiwicGFyc2VJbnRlbnRTcGVjIiwib3B0cyIsImludGVudCIsImFjdGlvbiIsInVyaSIsIm1pbWVUeXBlIiwiaWRlbnRpZmllciIsImNhdGVnb3JpZXMiLCJjb21wb25lbnQiLCJleHRyYXMiLCJmbGFncyIsInJlc3VsdEFyZ3MiLCJwdXNoIiwiXyIsImlzTmlsIiwiaXNBcnJheSIsImZsYXRNYXAiLCJtYXAiLCJjTmFtZSIsInBhY2thZ2UiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIml0ZW0iLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImlzRW1wdHkiLCJpc1N0cmluZyIsInRyaW0iLCJKU09OIiwic3RyaW5naWZ5IiwiaXNVbmRlZmluZWQiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwidXNlciIsIndhaXQiLCJzdG9wIiwid2luZG93aW5nTW9kZSIsImFjdGl2aXR5VHlwZSIsImRpc3BsYXkiLCJjbWQiLCJhZGIiLCJnZXRBcGlMZXZlbCIsInNoZWxsIiwibW9iaWxlQnJvYWRjYXN0IiwicmVjZWl2ZXJQZXJtaXNzaW9uIiwiYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvaW50ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLElBQTFC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