appium 2.0.0-beta.33 → 2.0.0-beta.34

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.
@@ -252,4 +252,4 @@ async function validateTmpDir(tmpDir) {
252
252
  const rootDir = _support.fs.findRoot(__dirname);
253
253
 
254
254
  exports.rootDir = rootDir;
255
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWcuanMiXSwibmFtZXMiOlsibnBtUGFja2FnZSIsImZzIiwicmVhZFBhY2thZ2VKc29uRnJvbSIsIl9fZGlybmFtZSIsIkFQUElVTV9WRVIiLCJ2ZXJzaW9uIiwiTUlOX05PREVfVkVSU0lPTiIsImVuZ2luZXMiLCJub2RlIiwiR0lUX01FVEFfUk9PVCIsIkdJVF9CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJHSVRIVUJfQVBJIiwiQlVJTERfSU5GTyIsImdldE5vZGVWZXJzaW9uIiwic2VtdmVyIiwiY29lcmNlIiwicHJvY2VzcyIsInVwZGF0ZUJ1aWxkSW5mbyIsInVzZUdpdGh1YkFwaUZhbGxiYWNrIiwic2hhIiwiZ2V0R2l0UmV2IiwiYnVpbHQiLCJnZXRHaXRUaW1lc3RhbXAiLCJmaW5kR2l0Um9vdCIsImN3ZCIsInJvb3REaXIiLCJ0eXBlIiwiZ2l0Um9vdCIsInN0ZG91dCIsInRyaW0iLCJpZ24iLCJyZXNCb2R5T2JqIiwiYXhpb3MiLCJnZXQiLCJoZWFkZXJzIiwiZGF0YSIsIl8iLCJpc0FycmF5IiwibmFtZSIsImNvbW1pdCIsImNvbW1pdFNoYSIsImNvbW1pdHRlciIsImRhdGUiLCJhdXRob3IiLCJnZXRCdWlsZEluZm8iLCJjaGVja05vZGVPayIsInNhdGlzZmllcyIsImxvZ2dlciIsImVycm9yQW5kVGhyb3ciLCJ3YXJuTm9kZURlcHJlY2F0aW9ucyIsInNob3dCdWlsZEluZm8iLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzIiwicGFyc2VkQXJncyIsImZsYXR0ZW4iLCJhcmdzIiwiYXJnU3BlY3MiLCJmbGF0dGVuZWQiLCJyZWR1Y2UiLCJ2YWx1ZXMiLCJhY2MiLCJhcmdTcGVjIiwiaGFzIiwiZGVzdCIsInZhbHVlIiwidHlwZXNEaWZmZXIiLCJkZWZhdWx0c0Zyb21TY2hlbWEiLCJkZWZhdWx0VmFsdWVJc0FycmF5IiwiYXJnc1ZhbHVlSXNBcnJheSIsImFycmF5c0RpZmZlciIsImd0Iiwic2l6ZSIsImRpZmZlcmVuY2UiLCJ2YWx1ZXNEaWZmZXIiLCJkZWZhdWx0SXNEZWZpbmVkIiwiaXNVbmRlZmluZWQiLCJhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXIiLCJvdmVyU29tZSIsIm5lZ2F0ZSIsImRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyIiwib3ZlckV2ZXJ5IiwiaXNOb3REZWZhdWx0IiwicGlja0J5IiwiX18iLCJrZXkiLCJzZXQiLCJjb21wYWN0Q29uZmlnIiwicGFydGlhbCIsIm9taXRCeSIsImlzT2JqZWN0IiwiaXNFbXB0eSIsInNob3dDb25maWciLCJub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncyIsImNvbmZpZ1Jlc3VsdCIsImRlZmF1bHRzIiwiZGlyIiwiY29uZmlnIiwiZmlsZXBhdGgiLCJ2YWxpZGF0ZVRtcERpciIsInRtcERpciIsIm1rZGlycCIsImUiLCJFcnJvciIsImZpbmRSb290Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLFlBQUdDLG1CQUFILENBQXVCQyxTQUF2QixDQUFuQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdKLFVBQVUsQ0FBQ0ssT0FBOUI7O0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUdOLFVBQVUsQ0FBQ08sT0FBWCxDQUFtQkMsSUFBNUM7QUFFQSxNQUFNQyxhQUFhLEdBQUcsTUFBdEI7QUFDQSxNQUFNQyxVQUFVLEdBQUksTUFBS0MsZ0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUExRDtBQUNBLE1BQU1DLFVBQVUsR0FBRyw0Q0FBbkI7QUFLQSxNQUFNQyxVQUFVLEdBQUc7QUFDakJULEVBQUFBLE9BQU8sRUFBRUQ7QUFEUSxDQUFuQjs7QUFJQSxTQUFTVyxjQUFULEdBQTJCO0FBQ3pCLFNBQThDQyxnQkFBT0Ms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Q0QsTUFBSWhCLGdCQUFFeUQsT0FBRixDQUFVRSw2QkFBVixDQUFKLEVBQThDO0FBQzVDNUMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQWEsZ0NBQWI7QUFDRCxHQUZELE1BRU87QUFDTEQsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksK0JBQVo7QUFDQUQsSUFBQUEsT0FBTyxDQUFDK0MsR0FBUixDQUFZVCxhQUFhLENBQUNNLDZCQUFELENBQXpCO0FBQ0Q7O0FBQ0Q1QyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSwwQkFBWjtBQUNBRCxFQUFBQSxPQUFPLENBQUMrQyxHQUFSLENBQVlULGFBQWEsQ0FBQ2pDLFVBQUQsQ0FBekI7QUFDRDs7QUFLRCxlQUFlNkMsY0FBZixDQUErQkMsTUFBL0IsRUFBdUM7QUFDckMsTUFBSTtBQUNGLFVBQU12RyxZQUFHd0csTUFBSCxDQUFVRCxNQUFWLENBQU47QUFDRCxHQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFVO0FBQ1YsVUFBTSxJQUFJQyxLQUFKLENBQVcsc0RBQUQsR0FDQyxJQUFHSCxNQUFPLDRDQURyQixDQUFOO0FBRUQ7QUFDRjs7QUFFRCxNQUFNN0UsT0FBTyxHQUFHMUIsWUFBRzJHLFFBQUgsQ0FBWXpHLFNBQVosQ0FBaEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgc3lzdGVtLCBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBmaW5kVXAgZnJvbSAnZmluZC11cCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0c0ZvclNjaGVtYSwgZ2V0QWxsQXJnU3BlY3MgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG5jb25zdCBucG1QYWNrYWdlID0gZnMucmVhZFBhY2thZ2VKc29uRnJvbShfX2Rpcm5hbWUpO1xuXG5jb25zdCBBUFBJVU1fVkVSID0gbnBtUGFja2FnZS52ZXJzaW9uO1xuY29uc3QgTUlOX05PREVfVkVSU0lPTiA9IG5wbVBhY2thZ2UuZW5naW5lcy5ub2RlO1xuXG5jb25zdCBHSVRfTUVUQV9ST09UID0gJy5naXQnO1xuY29uc3QgR0lUX0JJTkFSWSA9IGBnaXQke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5jb25zdCBHSVRIVUJfQVBJID0gJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXBwaXVtL2FwcGl1bSc7XG5cbi8qKlxuICogQHR5cGUge2ltcG9ydCgnLi4vdHlwZXMvY2xpJykuQnVpbGRJbmZvfVxuICovXG5jb25zdCBCVUlMRF9JTkZPID0ge1xuICB2ZXJzaW9uOiBBUFBJVU1fVkVSLFxufTtcblxuZnVuY3Rpb24gZ2V0Tm9kZVZlcnNpb24gKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtpbXBvcnQoJ3NlbXZlcicpLlNlbVZlcn0gKi8oc2VtdmVyLmNvZXJjZShwcm9jZXNzLnZlcnNpb24pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQnVpbGRJbmZvICh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IHNoYSA9IGF3YWl0IGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmICghc2hhKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIEJVSUxEX0lORk9bJ2dpdC1zaGEnXSA9IHNoYTtcbiAgY29uc3QgYnVpbHQgPSBhd2FpdCBnZXRHaXRUaW1lc3RhbXAoc2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmIChidWlsdCkge1xuICAgIEJVSUxEX0lORk8uYnVpbHQgPSBidWlsdDtcbiAgfVxufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBHaXQgbWV0YWRhdGEgZGlyIChzZWUgYEdJVF9NRVRBX1JPT1RgKVxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgQXBwaXVtIGNhbm5vdCBhc3N1bWUgYHBhY2thZ2UuanNvbmAgYW5kIGAuZ2l0YCBhcmUgaW4gdGhlIHNhbWVcbiAqIGRpcmVjdG9yeS4gIE1vbm9yZXBvcywgc2VlP1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59IFBhdGggdG8gZGlyIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZFxuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kR2l0Um9vdCAoKSB7XG4gIHJldHVybiBhd2FpdCBmaW5kVXAoR0lUX01FVEFfUk9PVCwge2N3ZDogcm9vdERpciwgdHlwZTogJ2RpcmVjdG9yeSd9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0UmV2ICh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L3RhZ3NgLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChfLmlzQXJyYXkocmVzQm9keU9iaikpIHtcbiAgICAgIGZvciAoY29uc3Qge25hbWUsIGNvbW1pdH0gb2YgcmVzQm9keU9iaikge1xuICAgICAgICBpZiAobmFtZSA9PT0gYHYke0FQUElVTV9WRVJ9YCAmJiBjb21taXQgJiYgY29tbWl0LnNoYSkge1xuICAgICAgICAgIHJldHVybiBjb21taXQuc2hhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21taXRTaGFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VzZUdpdGh1YkFwaUZhbGxiYWNrXVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEdpdFRpbWVzdGFtcCAoY29tbWl0U2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydzaG93JywgJy1zJywgJy0tZm9ybWF0PSVjaScsIGNvbW1pdFNoYV0sIHtcbiAgICAgICAgY3dkOiBnaXRSb290XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGlmICghdXNlR2l0aHViQXBpRmFsbGJhY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzQm9keU9iaiA9IChhd2FpdCBheGlvcy5nZXQoYCR7R0lUSFVCX0FQSX0vY29tbWl0cy8ke2NvbW1pdFNoYX1gLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChyZXNCb2R5T2JqICYmIHJlc0JvZHlPYmouY29tbWl0KSB7XG4gICAgICBpZiAocmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyICYmIHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlci5kYXRlKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIuZGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IgJiYgcmVzQm9keU9iai5jb21taXQuYXV0aG9yLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmouY29tbWl0LmF1dGhvci5kYXRlO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7fVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBNdXRhYmxlIG9iamVjdCBjb250YWluaW5nIEFwcGl1bSBidWlsZCBpbmZvcm1hdGlvbi4gQnkgZGVmYXVsdCBpdFxuICogb25seSBjb250YWlucyB0aGUgQXBwaXVtIHZlcnNpb24sIGJ1dCBpcyB1cGRhdGVkIHdpdGggdGhlIGJ1aWxkIHRpbWVzdGFtcFxuICogYW5kIGdpdCBjb21taXQgaGFzaCBhc3luY2hyb25vdXNseSBhcyBzb29uIGFzIGB1cGRhdGVCdWlsZEluZm9gIGlzIGNhbGxlZFxuICogYW5kIHN1Y2NlZWRzLlxuICogQHJldHVybnMge2ltcG9ydCgnLi4vdHlwZXMvY2xpJykuQnVpbGRJbmZvfVxuICovXG5mdW5jdGlvbiBnZXRCdWlsZEluZm8gKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2sgKCkge1xuICBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKHZlcnNpb24sIE1JTl9OT0RFX1ZFUlNJT04pKSB7XG4gICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYE5vZGUgdmVyc2lvbiBtdXN0IGJlICR7TUlOX05PREVfVkVSU0lPTn0uIEN1cnJlbnRseSAke3ZlcnNpb24udmVyc2lvbn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucyAoKSB7XG4gIC8qKlxuICAgKiBVbmNvbW1lbnQgdGhpcyBzZWN0aW9uIHRvIGdldCBub2RlIHZlcnNpb24gZGVwcmVjYXRpb24gd2FybmluZ3NcbiAgICogQWxzbyBhZGQgdGVzdCBjYXNlcyB0byBjb25maWctc3BlY3MuanMgdG8gY292ZXIgdGhlIGNhc2VzIGFkZGVkXG4gICAqKi9cblxuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93QnVpbGRJbmZvICgpIHtcbiAgYXdhaXQgdXBkYXRlQnVpbGRJbmZvKHRydWUpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShnZXRCdWlsZEluZm8oKSkpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGsvdiBwYWlycyBvZiBzZXJ2ZXIgYXJndW1lbnRzIHdoaWNoIGFyZSBfbm90XyB0aGUgZGVmYXVsdHMuXG4gKiBAcGFyYW0ge0FyZ3N9IHBhcnNlZEFyZ3NcbiAqIEByZXR1cm5zIHtBcmdzfVxuICovXG5mdW5jdGlvbiBnZXROb25EZWZhdWx0U2VydmVyQXJncyAocGFyc2VkQXJncykge1xuICAvKipcbiAgICogRmxhdHRlbnMgcGFyc2VkIGFyZ3MgaW50byBhIHNpbmdsZSBsZXZlbCBvYmplY3QgZm9yIGNvbXBhcmlzb24gd2l0aFxuICAgKiBmbGF0dGVuZWQgZGVmYXVsdHMgYWNyb3NzIHNlcnZlciBhcmdzIGFuZCBleHRlbnNpb24gYXJncy5cbiAgICogQHBhcmFtIHtBcmdzfSBhcmdzXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBhbnksIGFyZ1NwZWM6IEFyZ1NwZWMgfT59XG4gICAqL1xuICBjb25zdCBmbGF0dGVuID0gKGFyZ3MpID0+IHtcbiAgICBjb25zdCBhcmdTcGVjcyA9IGdldEFsbEFyZ1NwZWNzKCk7XG4gICAgY29uc3QgZmxhdHRlbmVkID0gXy5yZWR1Y2UoWy4uLmFyZ1NwZWNzLnZhbHVlcygpXSwgKGFjYywgYXJnU3BlYykgPT4ge1xuICAgICAgaWYgKF8uaGFzKGFyZ3MsIGFyZ1NwZWMuZGVzdCkpIHtcbiAgICAgICAgYWNjW2FyZ1NwZWMuZGVzdF0gPSB7dmFsdWU6IF8uZ2V0KGFyZ3MsIGFyZ1NwZWMuZGVzdCksIGFyZ1NwZWN9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueSwgYXJnU3BlYzogQXJnU3BlYyB9Pn0gKi8oe30pKTtcblxuICAgIHJldHVybiBmbGF0dGVuZWQ7XG4gIH07XG5cbiAgY29uc3QgYXJncyA9IGZsYXR0ZW4ocGFyc2VkQXJncyk7XG5cbiAgLy8gaG9wZWZ1bGx5IHRoZXNlIGZ1bmN0aW9uIG5hbWVzIGFyZSBkZXNjcmlwdGl2ZSBlbm91Z2hcbiAgY29uc3QgdHlwZXNEaWZmZXIgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gdHlwZW9mIGFyZ3NbZGVzdF0udmFsdWUgIT09IHR5cGVvZiBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdFZhbHVlSXNBcnJheSA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiBfLmlzQXJyYXkoZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKTtcblxuICBjb25zdCBhcmdzVmFsdWVJc0FycmF5ID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovKGRlc3QpID0+IF8uaXNBcnJheShhcmdzW2Rlc3RdLnZhbHVlKTtcblxuICBjb25zdCBhcnJheXNEaWZmZXIgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gXy5ndChfLnNpemUoXy5kaWZmZXJlbmNlKGFyZ3NbZGVzdF0udmFsdWUsIGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XSkpLCAwKTtcblxuICBjb25zdCB2YWx1ZXNEaWZmZXIgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gYXJnc1tkZXN0XS52YWx1ZSAhPT0gZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdO1xuXG4gIGNvbnN0IGRlZmF1bHRJc0RlZmluZWQgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gIV8uaXNVbmRlZmluZWQoZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKTtcblxuICAvLyBub3RlIHRoYXQgYF8ub3ZlckV2ZXJ5YCBpcyBsaWtlIGFuIFwiQU5EXCIsIGFuZCBgXy5vdmVyU29tZWAgaXMgbGlrZSBhbiBcIk9SXCJcblxuICBjb25zdCBhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXIgPSBfLm92ZXJTb21lKFtcbiAgICBfLm5lZ2F0ZShhcmdzVmFsdWVJc0FycmF5KSxcbiAgICBhcnJheXNEaWZmZXJcbiAgXSk7XG5cbiAgY29uc3QgZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNEaWZmZXIgPSBfLm92ZXJFdmVyeShbXG4gICAgXy5uZWdhdGUoZGVmYXVsdFZhbHVlSXNBcnJheSksIHZhbHVlc0RpZmZlclxuICBdKTtcblxuICAvKipcbiAgICogVGhpcyB1c2VkIHRvIGJlIGEgaGlkZW91cyBjb25kaXRpb25hbCwgYnV0IGl0J3MgYnJva2VuIHVwIGludG8gYSBoaWRlb3VzIGZ1bmN0aW9uIGluc3RlYWQuXG4gICAqIGhvcGVmdWxseSB0aGlzIG1ha2VzIHRoaW5ncyBhIGxpdHRsZSBtb3JlIHVuZGVyc3RhbmRhYmxlLlxuICAgKiAtIGNoZWNrcyBpZiB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBkZWZpbmVkXG4gICAqIC0gaWYgc28sIGFuZCB0aGUgZGVmYXVsdCBpcyBub3QgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSB0eXBlcyBhcmUgdGhlIHNhbWVcbiAgICogICAtIGVuc3VyZXMgdGhlIHZhbHVlcyBhcmUgZXF1YWxcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIGFuIGFycmF5OlxuICAgKiAgIC0gZW5zdXJlcyB0aGUgYXJncyB2YWx1ZSBpcyBhbiBhcnJheVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgYXJncyB2YWx1ZXMgZG8gbm90IGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlc1xuICAgKiBAdHlwZSB7KGRlc3Q6IHN0cmluZykgPT4gYm9vbGVhbn1cbiAgICovXG4gIGNvbnN0IGlzTm90RGVmYXVsdCA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBkZWZhdWx0SXNEZWZpbmVkLFxuICAgIF8ub3ZlclNvbWUoW1xuICAgICAgdHlwZXNEaWZmZXIsXG4gICAgICBfLm92ZXJFdmVyeShbXG4gICAgICAgIGRlZmF1bHRWYWx1ZUlzQXJyYXksXG4gICAgICAgIGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlclxuICAgICAgXSksXG4gICAgICBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc0RpZmZlclxuICAgIF0pXG4gIF0pO1xuXG4gIGNvbnN0IGRlZmF1bHRzRnJvbVNjaGVtYSA9IGdldERlZmF1bHRzRm9yU2NoZW1hKHRydWUpO1xuXG4gIHJldHVybiBfLnJlZHVjZShcbiAgICBfLnBpY2tCeShhcmdzLCAoX18sIGtleSkgPT4gaXNOb3REZWZhdWx0KGtleSkpLFxuICAgIC8vIGV4cGxvZGVzIHRoZSBmbGF0dGVuZWQgb2JqZWN0IGJhY2sgaW50byBuZXN0ZWQgb25lXG4gICAgKGFjYywge3ZhbHVlLCBhcmdTcGVjfSkgPT4gXy5zZXQoYWNjLCBhcmdTcGVjLmRlc3QsIHZhbHVlKSwgLyoqIEB0eXBlIHtBcmdzfSAqLyh7fSlcbiAgKTtcbn1cblxuLyoqXG4gKiBDb21wYWN0cyBhbiBvYmplY3QgZm9yIHtAbGluayBzaG93Q29uZmlnfTpcbiAqIDEuIFJlbW92ZXMgYHN1YmNvbW1hbmRgIGtleS92YWx1ZVxuICogMi4gUmVtb3ZlcyBgdW5kZWZpbmVkYCB2YWx1ZXNcbiAqIDMuIFJlbW92ZXMgZW1wdHkgb2JqZWN0cyAoYnV0IG5vdCBgZmFsc2VgIHZhbHVlcylcbiAqIERvZXMgbm90IG9wZXJhdGUgcmVjdXJzaXZlbHkuXG4gKi9cbmNvbnN0IGNvbXBhY3RDb25maWcgPSBfLnBhcnRpYWwoXG4gIF8ub21pdEJ5LFxuICBfLFxuICAodmFsdWUsIGtleSkgPT4ga2V5ID09PSAnc3ViY29tbWFuZCcgfHwgXy5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKF8uaXNPYmplY3QodmFsdWUpICYmIF8uaXNFbXB0eSh2YWx1ZSkpXG4pO1xuXG4vKipcbiAqIFNob3dzIGEgYnJlYWtkb3duIG9mIHRoZSBjdXJyZW50IGNvbmZpZyBhZnRlciBDTEkgcGFyYW1zLCBjb25maWcgZmlsZSBsb2FkZWQgJiBkZWZhdWx0cyBhcHBsaWVkLlxuICpcbiAqIFRoZSBhY3R1YWwgc2hhcGUgb2YgYHByZUNvbmZpZ1BhcnNlZEFyZ3NgIGFuZCBgZGVmYXVsdHNgIGRvZXMgbm90IG1hdHRlciBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZnVuY3Rpb24sXG4gKiBidXQgaXQncyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgd2l0aCB2YWx1ZXMgb2YgdHlwZSB7QGxpbmsgUGFyc2VkQXJnc30gYW5kIGBEZWZhdWx0VmFsdWVzPHRydWU+YCwgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gbm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MgLSBQYXJzZWQgQ0xJIGFyZ3MgKG9yIHBhcmFtIHRvIGBpbml0KClgKSBiZWZvcmUgY29uZmlnICYgZGVmYXVsdHMgYXBwbGllZFxuICogQHBhcmFtIHtpbXBvcnQoJy4vY29uZmlnLWZpbGUnKS5SZWFkQ29uZmlnRmlsZVJlc3VsdH0gY29uZmlnUmVzdWx0IC0gUmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gbG9hZCBhIGNvbmZpZyBmaWxlLiAgX011c3RfIGJlIG5vcm1hbGl6ZWRcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gZGVmYXVsdHMgLSBDb25maWd1cmF0aW9uIGRlZmF1bHRzIGZyb20gc2NoZW1hc1xuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gRW50aXJlIHBhcnNlZCBhcmdzIG9iamVjdFxuICovXG5mdW5jdGlvbiBzaG93Q29uZmlnIChub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncywgY29uZmlnUmVzdWx0LCBkZWZhdWx0cywgcGFyc2VkQXJncykge1xuICBjb25zb2xlLmxvZygnQXBwaXVtIENvbmZpZ3VyYXRpb25cXG4nKTtcbiAgY29uc29sZS5sb2coJ2Zyb20gZGVmYXVsdHM6XFxuJyk7XG4gIGNvbnNvbGUuZGlyKGNvbXBhY3RDb25maWcoZGVmYXVsdHMpKTtcbiAgaWYgKGNvbmZpZ1Jlc3VsdC5jb25maWcpIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuZnJvbSBjb25maWcgZmlsZSBhdCAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuYCk7XG4gICAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhjb25maWdSZXN1bHQuY29uZmlnKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coYFxcbihubyBjb25maWd1cmF0aW9uIGZpbGUgbG9hZGVkKWApO1xuICB9XG4gIGlmIChfLmlzRW1wdHkobm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MpKSB7XG4gICAgY29uc29sZS5sb2coYFxcbihubyBDTEkgcGFyYW1ldGVycyBwcm92aWRlZClgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZygnXFxudmlhIENMSSBvciBmdW5jdGlvbiBjYWxsOlxcbicpO1xuICAgIGNvbnNvbGUuZGlyKGNvbXBhY3RDb25maWcobm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MpKTtcbiAgfVxuICBjb25zb2xlLmxvZygnXFxuZmluYWwgY29uZmlndXJhdGlvbjpcXG4nKTtcbiAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhwYXJzZWRBcmdzKSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRtcERpclxuICovXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRtcERpciAodG1wRGlyKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMubWtkaXJwKHRtcERpcik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFdlIGNvdWxkIG5vdCBlbnN1cmUgdGhhdCB0aGUgdGVtcCBkaXIgeW91IHNwZWNpZmllZCBgICtcbiAgICAgICAgICAgICAgICAgICAgYCgke3RtcERpcn0pIGV4aXN0cy4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHdyaXRlYWJsZS5gKTtcbiAgfVxufVxuXG5jb25zdCByb290RGlyID0gZnMuZmluZFJvb3QoX19kaXJuYW1lKTtcblxuZXhwb3J0IHtcbiAgZ2V0QnVpbGRJbmZvLCBjaGVja05vZGVPaywgc2hvd0J1aWxkSW5mbyxcbiAgd2Fybk5vZGVEZXByZWNhdGlvbnMsIHZhbGlkYXRlVG1wRGlyLCBnZXROb25EZWZhdWx0U2VydmVyQXJncyxcbiAgZ2V0R2l0UmV2LCBBUFBJVU1fVkVSLCB1cGRhdGVCdWlsZEluZm8sIHNob3dDb25maWcsIHJvb3REaXJcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vdHlwZXMnKS5QYXJzZWRBcmdzfSBQYXJzZWRBcmdzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcycpLkFyZ3N9IEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vc2NoZW1hL2FyZy1zcGVjJykuQXJnU3BlY30gQXJnU3BlY1xuICovXG5cbiJdfQ==
255
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJucG1QYWNrYWdlIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiX19kaXJuYW1lIiwiQVBQSVVNX1ZFUiIsInZlcnNpb24iLCJNSU5fTk9ERV9WRVJTSU9OIiwiZW5naW5lcyIsIm5vZGUiLCJHSVRfTUVUQV9ST09UIiwiR0lUX0JJTkFSWSIsInN5c3RlbSIsImlzV2luZG93cyIsIkdJVEhVQl9BUEkiLCJCVUlMRF9JTkZPIiwiZ2V0Tm9kZVZlcnNpb24iLCJzZW12ZXIiLCJjb2VyY2UiLCJwcm9jZXNzIiwidXBkYXRlQnVpbGRJbmZvIiwidXNlR2l0aHViQXBpRmFsbGJhY2siLCJzaGEiLCJnZXRHaXRSZXYiLCJidWlsdCIsImdldEdpdFRpbWVzdGFtcCIsImZpbmRHaXRSb290IiwiY3dkIiwicm9vdERpciIsInR5cGUiLCJnaXRSb290Iiwic3Rkb3V0IiwidHJpbSIsImlnbiIsInJlc0JvZHlPYmoiLCJheGlvcyIsImdldCIsImhlYWRlcnMiLCJkYXRhIiwiXyIsImlzQXJyYXkiLCJuYW1lIiwiY29tbWl0IiwiY29tbWl0U2hhIiwiY29tbWl0dGVyIiwiZGF0ZSIsImF1dGhvciIsImdldEJ1aWxkSW5mbyIsImNoZWNrTm9kZU9rIiwic2F0aXNmaWVzIiwibG9nZ2VyIiwiZXJyb3JBbmRUaHJvdyIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwic2hvd0J1aWxkSW5mbyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJwYXJzZWRBcmdzIiwiZmxhdHRlbiIsImFyZ3MiLCJhcmdTcGVjcyIsImZsYXR0ZW5lZCIsInJlZHVjZSIsInZhbHVlcyIsImFjYyIsImFyZ1NwZWMiLCJoYXMiLCJkZXN0IiwidmFsdWUiLCJ0eXBlc0RpZmZlciIsImRlZmF1bHRzRnJvbVNjaGVtYSIsImRlZmF1bHRWYWx1ZUlzQXJyYXkiLCJhcmdzVmFsdWVJc0FycmF5IiwiYXJyYXlzRGlmZmVyIiwiZ3QiLCJzaXplIiwiZGlmZmVyZW5jZSIsInZhbHVlc0RpZmZlciIsImRlZmF1bHRJc0RlZmluZWQiLCJpc1VuZGVmaW5lZCIsImFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciIsIm92ZXJTb21lIiwibmVnYXRlIiwiZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNEaWZmZXIiLCJvdmVyRXZlcnkiLCJpc05vdERlZmF1bHQiLCJwaWNrQnkiLCJfXyIsImtleSIsInNldCIsImNvbXBhY3RDb25maWciLCJwYXJ0aWFsIiwib21pdEJ5IiwiaXNPYmplY3QiLCJpc0VtcHR5Iiwic2hvd0NvbmZpZyIsIm5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzIiwiY29uZmlnUmVzdWx0IiwiZGVmYXVsdHMiLCJkaXIiLCJjb25maWciLCJmaWxlcGF0aCIsInZhbGlkYXRlVG1wRGlyIiwidG1wRGlyIiwibWtkaXJwIiwiZSIsIkVycm9yIiwiZmluZFJvb3QiXSwic291cmNlcyI6WyIuLi8uLi9saWIvY29uZmlnLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IGZpbmRVcCBmcm9tICdmaW5kLXVwJztcbmltcG9ydCB7IGdldERlZmF1bHRzRm9yU2NoZW1hLCBnZXRBbGxBcmdTcGVjcyB9IGZyb20gJy4vc2NoZW1hL3NjaGVtYSc7XG5cbmNvbnN0IG5wbVBhY2thZ2UgPSBmcy5yZWFkUGFja2FnZUpzb25Gcm9tKF9fZGlybmFtZSk7XG5cbmNvbnN0IEFQUElVTV9WRVIgPSBucG1QYWNrYWdlLnZlcnNpb247XG5jb25zdCBNSU5fTk9ERV9WRVJTSU9OID0gbnBtUGFja2FnZS5lbmdpbmVzLm5vZGU7XG5cbmNvbnN0IEdJVF9NRVRBX1JPT1QgPSAnLmdpdCc7XG5jb25zdCBHSVRfQklOQVJZID0gYGdpdCR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IEdJVEhVQl9BUEkgPSAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hcHBpdW0vYXBwaXVtJztcblxuLyoqXG4gKiBAdHlwZSB7aW1wb3J0KCcuLi90eXBlcy9jbGknKS5CdWlsZEluZm99XG4gKi9cbmNvbnN0IEJVSUxEX0lORk8gPSB7XG4gIHZlcnNpb246IEFQUElVTV9WRVIsXG59O1xuXG5mdW5jdGlvbiBnZXROb2RlVmVyc2lvbiAoKSB7XG4gIHJldHVybiAvKiogQHR5cGUge2ltcG9ydCgnc2VtdmVyJykuU2VtVmVyfSAqLyhzZW12ZXIuY29lcmNlKHByb2Nlc3MudmVyc2lvbikpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVCdWlsZEluZm8gKHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3Qgc2hhID0gYXdhaXQgZ2V0R2l0UmV2KHVzZUdpdGh1YkFwaUZhbGxiYWNrKTtcbiAgaWYgKCFzaGEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgQlVJTERfSU5GT1snZ2l0LXNoYSddID0gc2hhO1xuICBjb25zdCBidWlsdCA9IGF3YWl0IGdldEdpdFRpbWVzdGFtcChzaGEsIHVzZUdpdGh1YkFwaUZhbGxiYWNrKTtcbiAgaWYgKGJ1aWx0KSB7XG4gICAgQlVJTERfSU5GTy5idWlsdCA9IGJ1aWx0O1xuICB9XG59XG5cbi8qKlxuICogRmluZHMgdGhlIEdpdCBtZXRhZGF0YSBkaXIgKHNlZSBgR0lUX01FVEFfUk9PVGApXG4gKlxuICogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBBcHBpdW0gY2Fubm90IGFzc3VtZSBgcGFja2FnZS5qc29uYCBhbmQgYC5naXRgIGFyZSBpbiB0aGUgc2FtZVxuICogZGlyZWN0b3J5LiAgTW9ub3JlcG9zLCBzZWU/XG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmd8dW5kZWZpbmVkPn0gUGF0aCB0byBkaXIgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmRHaXRSb290ICgpIHtcbiAgcmV0dXJuIGF3YWl0IGZpbmRVcChHSVRfTUVUQV9ST09ULCB7Y3dkOiByb290RGlyLCB0eXBlOiAnZGlyZWN0b3J5J30pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRSZXYgKHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3QgZ2l0Um9vdCA9IGF3YWl0IGZpbmRHaXRSb290KCk7XG4gIGlmIChnaXRSb290KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYyhHSVRfQklOQVJZLCBbJ3Jldi1wYXJzZScsICdIRUFEJ10sIHtcbiAgICAgICAgY3dkOiBnaXRSb290XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGlmICghdXNlR2l0aHViQXBpRmFsbGJhY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzQm9keU9iaiA9IChhd2FpdCBheGlvcy5nZXQoYCR7R0lUSFVCX0FQSX0vdGFnc2AsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1VzZXItQWdlbnQnOiBgQXBwaXVtICR7QVBQSVVNX1ZFUn1gXG4gICAgICB9XG4gICAgfSkpLmRhdGE7XG4gICAgaWYgKF8uaXNBcnJheShyZXNCb2R5T2JqKSkge1xuICAgICAgZm9yIChjb25zdCB7bmFtZSwgY29tbWl0fSBvZiByZXNCb2R5T2JqKSB7XG4gICAgICAgIGlmIChuYW1lID09PSBgdiR7QVBQSVVNX1ZFUn1gICYmIGNvbW1pdCAmJiBjb21taXQuc2hhKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbW1pdC5zaGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1pdFNoYVxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0VGltZXN0YW1wIChjb21taXRTaGEsIHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3QgZ2l0Um9vdCA9IGF3YWl0IGZpbmRHaXRSb290KCk7XG4gIGlmIChnaXRSb290KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYyhHSVRfQklOQVJZLCBbJ3Nob3cnLCAnLXMnLCAnLS1mb3JtYXQ9JWNpJywgY29tbWl0U2hhXSwge1xuICAgICAgICBjd2Q6IGdpdFJvb3RcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNCb2R5T2JqID0gKGF3YWl0IGF4aW9zLmdldChgJHtHSVRIVUJfQVBJfS9jb21taXRzLyR7Y29tbWl0U2hhfWAsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1VzZXItQWdlbnQnOiBgQXBwaXVtICR7QVBQSVVNX1ZFUn1gXG4gICAgICB9XG4gICAgfSkpLmRhdGE7XG4gICAgaWYgKHJlc0JvZHlPYmogJiYgcmVzQm9keU9iai5jb21taXQpIHtcbiAgICAgIGlmIChyZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIgJiYgcmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlci5kYXRlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc0JvZHlPYmouY29tbWl0LmF1dGhvciAmJiByZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IuZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai5jb21taXQuYXV0aG9yLmRhdGU7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIE11dGFibGUgb2JqZWN0IGNvbnRhaW5pbmcgQXBwaXVtIGJ1aWxkIGluZm9ybWF0aW9uLiBCeSBkZWZhdWx0IGl0XG4gKiBvbmx5IGNvbnRhaW5zIHRoZSBBcHBpdW0gdmVyc2lvbiwgYnV0IGlzIHVwZGF0ZWQgd2l0aCB0aGUgYnVpbGQgdGltZXN0YW1wXG4gKiBhbmQgZ2l0IGNvbW1pdCBoYXNoIGFzeW5jaHJvbm91c2x5IGFzIHNvb24gYXMgYHVwZGF0ZUJ1aWxkSW5mb2AgaXMgY2FsbGVkXG4gKiBhbmQgc3VjY2VlZHMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi90eXBlcy9jbGknKS5CdWlsZEluZm99XG4gKi9cbmZ1bmN0aW9uIGdldEJ1aWxkSW5mbyAoKSB7XG4gIHJldHVybiBCVUlMRF9JTkZPO1xufVxuXG5mdW5jdGlvbiBjaGVja05vZGVPayAoKSB7XG4gIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgTUlOX05PREVfVkVSU0lPTikpIHtcbiAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgTm9kZSB2ZXJzaW9uIG11c3QgYmUgJHtNSU5fTk9ERV9WRVJTSU9OfS4gQ3VycmVudGx5ICR7dmVyc2lvbi52ZXJzaW9ufWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdhcm5Ob2RlRGVwcmVjYXRpb25zICgpIHtcbiAgLyoqXG4gICAqIFVuY29tbWVudCB0aGlzIHNlY3Rpb24gdG8gZ2V0IG5vZGUgdmVyc2lvbiBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgKiBBbHNvIGFkZCB0ZXN0IGNhc2VzIHRvIGNvbmZpZy1zcGVjcy5qcyB0byBjb3ZlciB0aGUgY2FzZXMgYWRkZWRcbiAgICoqL1xuXG4gIC8vIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICAvLyBpZiAodmVyc2lvbi5tYWpvciA8IDgpIHtcbiAgLy8gICBsb2dnZXIud2FybihgQXBwaXVtIHN1cHBvcnQgZm9yIHZlcnNpb25zIG9mIG5vZGUgPCAke3ZlcnNpb24ubWFqb3J9IGhhcyBiZWVuIGAgK1xuICAvLyAgICAgICAgICAgICAgICdkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gUGxlYXNlICcgK1xuICAvLyAgICAgICAgICAgICAgICd1cGdyYWRlIScpO1xuICAvLyB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3dCdWlsZEluZm8gKCkge1xuICBhd2FpdCB1cGRhdGVCdWlsZEluZm8odHJ1ZSk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGdldEJ1aWxkSW5mbygpKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxufVxuXG4vKipcbiAqIFJldHVybnMgay92IHBhaXJzIG9mIHNlcnZlciBhcmd1bWVudHMgd2hpY2ggYXJlIF9ub3RfIHRoZSBkZWZhdWx0cy5cbiAqIEBwYXJhbSB7QXJnc30gcGFyc2VkQXJnc1xuICogQHJldHVybnMge0FyZ3N9XG4gKi9cbmZ1bmN0aW9uIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzIChwYXJzZWRBcmdzKSB7XG4gIC8qKlxuICAgKiBGbGF0dGVucyBwYXJzZWQgYXJncyBpbnRvIGEgc2luZ2xlIGxldmVsIG9iamVjdCBmb3IgY29tcGFyaXNvbiB3aXRoXG4gICAqIGZsYXR0ZW5lZCBkZWZhdWx0cyBhY3Jvc3Mgc2VydmVyIGFyZ3MgYW5kIGV4dGVuc2lvbiBhcmdzLlxuICAgKiBAcGFyYW0ge0FyZ3N9IGFyZ3NcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueSwgYXJnU3BlYzogQXJnU3BlYyB9Pn1cbiAgICovXG4gIGNvbnN0IGZsYXR0ZW4gPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGFyZ1NwZWNzID0gZ2V0QWxsQXJnU3BlY3MoKTtcbiAgICBjb25zdCBmbGF0dGVuZWQgPSBfLnJlZHVjZShbLi4uYXJnU3BlY3MudmFsdWVzKCldLCAoYWNjLCBhcmdTcGVjKSA9PiB7XG4gICAgICBpZiAoXy5oYXMoYXJncywgYXJnU3BlYy5kZXN0KSkge1xuICAgICAgICBhY2NbYXJnU3BlYy5kZXN0XSA9IHt2YWx1ZTogXy5nZXQoYXJncywgYXJnU3BlYy5kZXN0KSwgYXJnU3BlY307XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCBhcmdTcGVjOiBBcmdTcGVjIH0+fSAqLyh7fSkpO1xuXG4gICAgcmV0dXJuIGZsYXR0ZW5lZDtcbiAgfTtcblxuICBjb25zdCBhcmdzID0gZmxhdHRlbihwYXJzZWRBcmdzKTtcblxuICAvLyBob3BlZnVsbHkgdGhlc2UgZnVuY3Rpb24gbmFtZXMgYXJlIGRlc2NyaXB0aXZlIGVub3VnaFxuICBjb25zdCB0eXBlc0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiB0eXBlb2YgYXJnc1tkZXN0XS52YWx1ZSAhPT0gdHlwZW9mIGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVJc0FycmF5ID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovKGRlc3QpID0+IF8uaXNBcnJheShkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuXG4gIGNvbnN0IGFyZ3NWYWx1ZUlzQXJyYXkgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gXy5pc0FycmF5KGFyZ3NbZGVzdF0udmFsdWUpO1xuXG4gIGNvbnN0IGFycmF5c0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiBfLmd0KF8uc2l6ZShfLmRpZmZlcmVuY2UoYXJnc1tkZXN0XS52YWx1ZSwgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKSksIDApO1xuXG4gIGNvbnN0IHZhbHVlc0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiBhcmdzW2Rlc3RdLnZhbHVlICE9PSBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdElzRGVmaW5lZCA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiAhXy5pc1VuZGVmaW5lZChkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuXG4gIC8vIG5vdGUgdGhhdCBgXy5vdmVyRXZlcnlgIGlzIGxpa2UgYW4gXCJBTkRcIiwgYW5kIGBfLm92ZXJTb21lYCBpcyBsaWtlIGFuIFwiT1JcIlxuXG4gIGNvbnN0IGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciA9IF8ub3ZlclNvbWUoW1xuICAgIF8ubmVnYXRlKGFyZ3NWYWx1ZUlzQXJyYXkpLFxuICAgIGFycmF5c0RpZmZlclxuICBdKTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc0RpZmZlciA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBfLm5lZ2F0ZShkZWZhdWx0VmFsdWVJc0FycmF5KSwgdmFsdWVzRGlmZmVyXG4gIF0pO1xuXG4gIC8qKlxuICAgKiBUaGlzIHVzZWQgdG8gYmUgYSBoaWRlb3VzIGNvbmRpdGlvbmFsLCBidXQgaXQncyBicm9rZW4gdXAgaW50byBhIGhpZGVvdXMgZnVuY3Rpb24gaW5zdGVhZC5cbiAgICogaG9wZWZ1bGx5IHRoaXMgbWFrZXMgdGhpbmdzIGEgbGl0dGxlIG1vcmUgdW5kZXJzdGFuZGFibGUuXG4gICAqIC0gY2hlY2tzIGlmIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGRlZmluZWRcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIG5vdCBhbiBhcnJheTpcbiAgICogICAtIGVuc3VyZXMgdGhlIHR5cGVzIGFyZSB0aGUgc2FtZVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgdmFsdWVzIGFyZSBlcXVhbFxuICAgKiAtIGlmIHNvLCBhbmQgdGhlIGRlZmF1bHQgaXMgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlIGlzIGFuIGFycmF5XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlcyBkbyBub3QgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAqIEB0eXBlIHsoZGVzdDogc3RyaW5nKSA9PiBib29sZWFufVxuICAgKi9cbiAgY29uc3QgaXNOb3REZWZhdWx0ID0gXy5vdmVyRXZlcnkoW1xuICAgIGRlZmF1bHRJc0RlZmluZWQsXG4gICAgXy5vdmVyU29tZShbXG4gICAgICB0eXBlc0RpZmZlcixcbiAgICAgIF8ub3ZlckV2ZXJ5KFtcbiAgICAgICAgZGVmYXVsdFZhbHVlSXNBcnJheSxcbiAgICAgICAgYXJnVmFsdWVOb3RBcnJheU9yQXJyYXlzRGlmZmVyXG4gICAgICBdKSxcbiAgICAgIGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyXG4gICAgXSlcbiAgXSk7XG5cbiAgY29uc3QgZGVmYXVsdHNGcm9tU2NoZW1hID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEodHJ1ZSk7XG5cbiAgcmV0dXJuIF8ucmVkdWNlKFxuICAgIF8ucGlja0J5KGFyZ3MsIChfXywga2V5KSA9PiBpc05vdERlZmF1bHQoa2V5KSksXG4gICAgLy8gZXhwbG9kZXMgdGhlIGZsYXR0ZW5lZCBvYmplY3QgYmFjayBpbnRvIG5lc3RlZCBvbmVcbiAgICAoYWNjLCB7dmFsdWUsIGFyZ1NwZWN9KSA9PiBfLnNldChhY2MsIGFyZ1NwZWMuZGVzdCwgdmFsdWUpLCAvKiogQHR5cGUge0FyZ3N9ICovKHt9KVxuICApO1xufVxuXG4vKipcbiAqIENvbXBhY3RzIGFuIG9iamVjdCBmb3Ige0BsaW5rIHNob3dDb25maWd9OlxuICogMS4gUmVtb3ZlcyBgc3ViY29tbWFuZGAga2V5L3ZhbHVlXG4gKiAyLiBSZW1vdmVzIGB1bmRlZmluZWRgIHZhbHVlc1xuICogMy4gUmVtb3ZlcyBlbXB0eSBvYmplY3RzIChidXQgbm90IGBmYWxzZWAgdmFsdWVzKVxuICogRG9lcyBub3Qgb3BlcmF0ZSByZWN1cnNpdmVseS5cbiAqL1xuY29uc3QgY29tcGFjdENvbmZpZyA9IF8ucGFydGlhbChcbiAgXy5vbWl0QnksXG4gIF8sXG4gICh2YWx1ZSwga2V5KSA9PiBrZXkgPT09ICdzdWJjb21tYW5kJyB8fCBfLmlzVW5kZWZpbmVkKHZhbHVlKSB8fCAoXy5pc09iamVjdCh2YWx1ZSkgJiYgXy5pc0VtcHR5KHZhbHVlKSlcbik7XG5cbi8qKlxuICogU2hvd3MgYSBicmVha2Rvd24gb2YgdGhlIGN1cnJlbnQgY29uZmlnIGFmdGVyIENMSSBwYXJhbXMsIGNvbmZpZyBmaWxlIGxvYWRlZCAmIGRlZmF1bHRzIGFwcGxpZWQuXG4gKlxuICogVGhlIGFjdHVhbCBzaGFwZSBvZiBgcHJlQ29uZmlnUGFyc2VkQXJnc2AgYW5kIGBkZWZhdWx0c2AgZG9lcyBub3QgbWF0dGVyIGZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBmdW5jdGlvbixcbiAqIGJ1dCBpdCdzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB3aXRoIHZhbHVlcyBvZiB0eXBlIHtAbGluayBQYXJzZWRBcmdzfSBhbmQgYERlZmF1bHRWYWx1ZXM8dHJ1ZT5gLCByZXNwZWN0aXZlbHkuXG4gKlxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncyAtIFBhcnNlZCBDTEkgYXJncyAob3IgcGFyYW0gdG8gYGluaXQoKWApIGJlZm9yZSBjb25maWcgJiBkZWZhdWx0cyBhcHBsaWVkXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9jb25maWctZmlsZScpLlJlYWRDb25maWdGaWxlUmVzdWx0fSBjb25maWdSZXN1bHQgLSBSZXN1bHQgb2YgYXR0ZW1wdGluZyB0byBsb2FkIGEgY29uZmlnIGZpbGUuICBfTXVzdF8gYmUgbm9ybWFsaXplZFxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBkZWZhdWx0cyAtIENvbmZpZ3VyYXRpb24gZGVmYXVsdHMgZnJvbSBzY2hlbWFzXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IHBhcnNlZEFyZ3MgLSBFbnRpcmUgcGFyc2VkIGFyZ3Mgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIHNob3dDb25maWcgKG5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzLCBjb25maWdSZXN1bHQsIGRlZmF1bHRzLCBwYXJzZWRBcmdzKSB7XG4gIGNvbnNvbGUubG9nKCdBcHBpdW0gQ29uZmlndXJhdGlvblxcbicpO1xuICBjb25zb2xlLmxvZygnZnJvbSBkZWZhdWx0czpcXG4nKTtcbiAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhkZWZhdWx0cykpO1xuICBpZiAoY29uZmlnUmVzdWx0LmNvbmZpZykge1xuICAgIGNvbnNvbGUubG9nKGBcXG5mcm9tIGNvbmZpZyBmaWxlIGF0ICR7Y29uZmlnUmVzdWx0LmZpbGVwYXRofTpcXG5gKTtcbiAgICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKGNvbmZpZ1Jlc3VsdC5jb25maWcpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIGNvbmZpZ3VyYXRpb24gZmlsZSBsb2FkZWQpYCk7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIENMSSBwYXJhbWV0ZXJzIHByb3ZpZGVkKWApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCdcXG52aWEgQ0xJIG9yIGZ1bmN0aW9uIGNhbGw6XFxuJyk7XG4gICAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpO1xuICB9XG4gIGNvbnNvbGUubG9nKCdcXG5maW5hbCBjb25maWd1cmF0aW9uOlxcbicpO1xuICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKHBhcnNlZEFyZ3MpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG1wRGlyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG1wRGlyICh0bXBEaXIpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5ta2RpcnAodG1wRGlyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgV2UgY291bGQgbm90IGVuc3VyZSB0aGF0IHRoZSB0ZW1wIGRpciB5b3Ugc3BlY2lmaWVkIGAgK1xuICAgICAgICAgICAgICAgICAgICBgKCR7dG1wRGlyfSkgZXhpc3RzLiBQbGVhc2UgbWFrZSBzdXJlIGl0J3Mgd3JpdGVhYmxlLmApO1xuICB9XG59XG5cbmNvbnN0IHJvb3REaXIgPSBmcy5maW5kUm9vdChfX2Rpcm5hbWUpO1xuXG5leHBvcnQge1xuICBnZXRCdWlsZEluZm8sIGNoZWNrTm9kZU9rLCBzaG93QnVpbGRJbmZvLFxuICB3YXJuTm9kZURlcHJlY2F0aW9ucywgdmFsaWRhdGVUbXBEaXIsIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzLFxuICBnZXRHaXRSZXYsIEFQUElVTV9WRVIsIHVwZGF0ZUJ1aWxkSW5mbywgc2hvd0NvbmZpZywgcm9vdERpclxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3R5cGVzJykuQXJnc30gQXJnc1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi9zY2hlbWEvYXJnLXNwZWMnKS5BcmdTcGVjfSBBcmdTcGVjXG4gKi9cblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFN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
@@ -57,4 +57,4 @@ const EXT_SUBCOMMAND_UPDATE = 'update';
57
57
  exports.EXT_SUBCOMMAND_UPDATE = EXT_SUBCOMMAND_UPDATE;
58
58
  const EXT_SUBCOMMAND_RUN = 'run';
59
59
  exports.EXT_SUBCOMMAND_RUN = EXT_SUBCOMMAND_RUN;
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsIlNFUlZFUl9TVUJDT01NQU5EIiwiVVNFX0FMTF9QTFVHSU5TIiwiS05PV05fUExVR0lOUyIsIk9iamVjdCIsImZyZWV6ZSIsImltYWdlcyIsIktOT1dOX0RSSVZFUlMiLCJ1aWF1dG9tYXRvcjIiLCJ4Y3VpdGVzdCIsInlvdWllbmdpbmUiLCJ3aW5kb3dzIiwibWFjIiwibWFjMiIsImVzcHJlc3NvIiwidGl6ZW4iLCJmbHV0dGVyIiwic2FmYXJpIiwiZ2Vja28iLCJDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCIsInBhdGgiLCJqb2luIiwiUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgiLCJFWFRfU1VCQ09NTUFORF9MSVNUIiwiRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCIsIkVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCIsIkVYVF9TVUJDT01NQU5EX1VQREFURSIsIkVYVF9TVUJDT01NQU5EX1JVTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFLTyxNQUFNQSxXQUFXLEdBQUcsUUFBcEI7O0FBS0EsTUFBTUMsV0FBVyxHQUFHLFFBQXBCOztBQUtBLE1BQU1DLGlCQUFpQixHQUFHLFFBQTFCOztBQUtBLE1BQU1DLGVBQWUsR0FBRyxLQUF4Qjs7QUFNQSxNQUFNQyxhQUFhLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUNMO0FBQ3BCQyxFQUFBQSxNQUFNLEVBQUUsdUJBRFk7QUFFcEIsb0JBQWtCLCtCQUZFO0FBR3BCLGtCQUFnQjtBQUhJLENBREssQ0FBdEI7O0FBWUEsTUFBTUMsYUFBYSxHQUFHSCxNQUFNLENBQUNDLE1BQVAsQ0FDTDtBQUNwQkcsRUFBQUEsWUFBWSxFQUFFLDRCQURNO0FBRXBCQyxFQUFBQSxRQUFRLEVBQUUsd0JBRlU7QUFHcEJDLEVBQUFBLFVBQVUsRUFBRSwwQkFIUTtBQUlwQkMsRUFBQUEsT0FBTyxFQUFFLHVCQUpXO0FBS3BCQyxFQUFBQSxHQUFHLEVBQUUsbUJBTGU7QUFNcEJDLEVBQUFBLElBQUksRUFBRSxvQkFOYztBQU9wQkMsRUFBQUEsUUFBUSxFQUFFLHdCQVBVO0FBUXBCQyxFQUFBQSxLQUFLLEVBQUUscUJBUmE7QUFTcEJDLEVBQUFBLE9BQU8sRUFBRSx1QkFUVztBQVVwQkMsRUFBQUEsTUFBTSxFQUFFLHNCQVZZO0FBV3BCQyxFQUFBQSxLQUFLLEVBQUU7QUFYYSxDQURLLENBQXRCOzs7QUFtQkEsTUFBTUMsdUJBQXVCLEdBQUdDLGNBQUtDLElBQUwsQ0FDckMsY0FEcUMsRUFFckMsUUFGcUMsRUFHckMsUUFIcUMsQ0FBaEM7Ozs7QUFTQSxNQUFNQywwQkFBMEIsR0FBR0YsY0FBS0MsSUFBTCxDQUN4Q0YsdUJBRHdDLEVBRXhDLGNBRndDLENBQW5DOzs7QUFNQSxNQUFNSSxtQkFBbUIsR0FBRyxNQUE1Qjs7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxTQUEvQjs7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxXQUFqQzs7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxRQUE5Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUEzQiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0eXBlIGZvciBkcml2ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEUklWRVJfVFlQRSA9ICdkcml2ZXInO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdHlwZSBmb3IgcGx1Z2luc1xuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1RZUEUgPSAncGx1Z2luJztcblxuLyoqXG4gKiBUaGUgYHNlcnZlcmAgY29tbWFuZCBvZiB0aGUgYGFwcGl1bWAgQ0xJXG4gKi9cbmV4cG9ydCBjb25zdCBTRVJWRVJfU1VCQ09NTUFORCA9ICdzZXJ2ZXInO1xuXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiBgLS11c2UtcGx1Z2luc2AgaWYgX2FsbF8gcGx1Z2lucyBzaG91bGQgYmUgbG9hZGVkXG4gKi9cbmV4cG9ydCBjb25zdCBVU0VfQUxMX1BMVUdJTlMgPSAnYWxsJztcblxuLy8gVGhpcyBpcyBhIG1hcCBvZiBwbHVnaW4gbmFtZXMgdG8gbnBtIHBhY2thZ2VzIHJlcHJlc2VudGluZyB0aG9zZSBwbHVnaW5zLlxuLy8gVGhlIHBsdWdpbnMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBDTEkgc28gdXNlcnMgY2FuIGp1c3Rcbi8vIHR5cGUgJ2FwcGl1bSBwbHVnaW4gaW5zdGFsbCAnbmFtZScnLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgZnVsbFxuLy8gbnBtIHBhY2thZ2UuIEkuZS4sIHRoZXNlIGFyZSB0aGUgb2ZmaWNpYWxseSByZWNvZ25pemVkIHBsdWdpbnMuXG5leHBvcnQgY29uc3QgS05PV05fUExVR0lOUyA9IE9iamVjdC5mcmVlemUoXG4gIC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gICAgaW1hZ2VzOiAnQGFwcGl1bS9pbWFnZXMtcGx1Z2luJyxcbiAgICAnZXhlY3V0ZS1kcml2ZXInOiAnQGFwcGl1bS9leGVjdXRlLWRyaXZlci1wbHVnaW4nLFxuICAgICdyZWxheGVkLWNhcHMnOiAnQGFwcGl1bS9yZWxheGVkLWNhcHMtcGx1Z2luJyxcbiAgfSksXG4pO1xuXG4vLyBUaGlzIGlzIGEgbWFwIG9mIGRyaXZlciBuYW1lcyB0byBucG0gcGFja2FnZXMgcmVwcmVzZW50aW5nIHRob3NlIGRyaXZlcnMuXG4vLyBUaGUgZHJpdmVycyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBhdmFpbGFibGUgdG8gdGhlIENMSSBzbyB1c2VycyBjYW4ganVzdFxuLy8gdHlwZSAnYXBwaXVtIGRyaXZlciBpbnN0YWxsICduYW1lJycsIHJhdGhlciB0aGFuIGhhdmluZyB0byBzcGVjaWZ5IHRoZSBmdWxsXG4vLyBucG0gcGFja2FnZS4gSS5lLiwgdGhlc2UgYXJlIHRoZSBvZmZpY2lhbGx5IHJlY29nbml6ZWQgZHJpdmVycy5cbmV4cG9ydCBjb25zdCBLTk9XTl9EUklWRVJTID0gT2JqZWN0LmZyZWV6ZShcbiAgLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgICB1aWF1dG9tYXRvcjI6ICdhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcicsXG4gICAgeGN1aXRlc3Q6ICdhcHBpdW0teGN1aXRlc3QtZHJpdmVyJyxcbiAgICB5b3VpZW5naW5lOiAnYXBwaXVtLXlvdWllbmdpbmUtZHJpdmVyJyxcbiAgICB3aW5kb3dzOiAnYXBwaXVtLXdpbmRvd3MtZHJpdmVyJyxcbiAgICBtYWM6ICdhcHBpdW0tbWFjLWRyaXZlcicsXG4gICAgbWFjMjogJ2FwcGl1bS1tYWMyLWRyaXZlcicsXG4gICAgZXNwcmVzc286ICdhcHBpdW0tZXNwcmVzc28tZHJpdmVyJyxcbiAgICB0aXplbjogJ2FwcGl1bS10aXplbi1kcml2ZXInLFxuICAgIGZsdXR0ZXI6ICdhcHBpdW0tZmx1dHRlci1kcml2ZXInLFxuICAgIHNhZmFyaTogJ2FwcGl1bS1zYWZhcmktZHJpdmVyJyxcbiAgICBnZWNrbzogJ2FwcGl1bS1nZWNrb2RyaXZlcicsXG4gIH0pLFxuKTtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIGFueSBBcHBpdW0gaW50ZXJuYWwgZmlsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IENBQ0hFX0RJUl9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKFxuICAnbm9kZV9tb2R1bGVzJyxcbiAgJy5jYWNoZScsXG4gICdhcHBpdW0nLFxuKTtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIHRvIGhhc2hmaWxlIChmcm9tIGBBUFBJVU1fSE9NRWApIG9mIGNvbnN1bWluZyBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmAgKGlmIGl0IGV4aXN0cylcbiAqL1xuZXhwb3J0IGNvbnN0IFBLR19IQVNIRklMRV9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKFxuICBDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCxcbiAgJ3BhY2thZ2UuaGFzaCcsXG4pO1xuXG5cbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9MSVNUID0gJ2xpc3QnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX0lOU1RBTEwgPSAnaW5zdGFsbCc7XG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfVU5JTlNUQUxMID0gJ3VuaW5zdGFsbCc7XG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfVVBEQVRFID0gJ3VwZGF0ZSc7XG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfUlVOID0gJ3J1bic7XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJVU0VfQUxMX1BMVUdJTlMiLCJLTk9XTl9QTFVHSU5TIiwiT2JqZWN0IiwiZnJlZXplIiwiaW1hZ2VzIiwiS05PV05fRFJJVkVSUyIsInVpYXV0b21hdG9yMiIsInhjdWl0ZXN0IiwieW91aWVuZ2luZSIsIndpbmRvd3MiLCJtYWMiLCJtYWMyIiwiZXNwcmVzc28iLCJ0aXplbiIsImZsdXR0ZXIiLCJzYWZhcmkiLCJnZWNrbyIsIkNBQ0hFX0RJUl9SRUxBVElWRV9QQVRIIiwicGF0aCIsImpvaW4iLCJQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCIsIkVYVF9TVUJDT01NQU5EX0xJU1QiLCJFWFRfU1VCQ09NTUFORF9JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVU5JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwiRVhUX1NVQkNPTU1BTkRfUlVOIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2NvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdHlwZSBmb3IgZHJpdmVyc1xuICovXG5leHBvcnQgY29uc3QgRFJJVkVSX1RZUEUgPSAnZHJpdmVyJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHR5cGUgZm9yIHBsdWdpbnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9UWVBFID0gJ3BsdWdpbic7XG5cbi8qKlxuICogVGhlIGBzZXJ2ZXJgIGNvbW1hbmQgb2YgdGhlIGBhcHBpdW1gIENMSVxuICovXG5leHBvcnQgY29uc3QgU0VSVkVSX1NVQkNPTU1BTkQgPSAnc2VydmVyJztcblxuLyoqXG4gKiBUaGUgdmFsdWUgb2YgYC0tdXNlLXBsdWdpbnNgIGlmIF9hbGxfIHBsdWdpbnMgc2hvdWxkIGJlIGxvYWRlZFxuICovXG5leHBvcnQgY29uc3QgVVNFX0FMTF9QTFVHSU5TID0gJ2FsbCc7XG5cbi8vIFRoaXMgaXMgYSBtYXAgb2YgcGx1Z2luIG5hbWVzIHRvIG5wbSBwYWNrYWdlcyByZXByZXNlbnRpbmcgdGhvc2UgcGx1Z2lucy5cbi8vIFRoZSBwbHVnaW5zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGF2YWlsYWJsZSB0byB0aGUgQ0xJIHNvIHVzZXJzIGNhbiBqdXN0XG4vLyB0eXBlICdhcHBpdW0gcGx1Z2luIGluc3RhbGwgJ25hbWUnJywgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHNwZWNpZnkgdGhlIGZ1bGxcbi8vIG5wbSBwYWNrYWdlLiBJLmUuLCB0aGVzZSBhcmUgdGhlIG9mZmljaWFsbHkgcmVjb2duaXplZCBwbHVnaW5zLlxuZXhwb3J0IGNvbnN0IEtOT1dOX1BMVUdJTlMgPSBPYmplY3QuZnJlZXplKFxuICAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAgIGltYWdlczogJ0BhcHBpdW0vaW1hZ2VzLXBsdWdpbicsXG4gICAgJ2V4ZWN1dGUtZHJpdmVyJzogJ0BhcHBpdW0vZXhlY3V0ZS1kcml2ZXItcGx1Z2luJyxcbiAgICAncmVsYXhlZC1jYXBzJzogJ0BhcHBpdW0vcmVsYXhlZC1jYXBzLXBsdWdpbicsXG4gIH0pLFxuKTtcblxuLy8gVGhpcyBpcyBhIG1hcCBvZiBkcml2ZXIgbmFtZXMgdG8gbnBtIHBhY2thZ2VzIHJlcHJlc2VudGluZyB0aG9zZSBkcml2ZXJzLlxuLy8gVGhlIGRyaXZlcnMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBDTEkgc28gdXNlcnMgY2FuIGp1c3Rcbi8vIHR5cGUgJ2FwcGl1bSBkcml2ZXIgaW5zdGFsbCAnbmFtZScnLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgZnVsbFxuLy8gbnBtIHBhY2thZ2UuIEkuZS4sIHRoZXNlIGFyZSB0aGUgb2ZmaWNpYWxseSByZWNvZ25pemVkIGRyaXZlcnMuXG5leHBvcnQgY29uc3QgS05PV05fRFJJVkVSUyA9IE9iamVjdC5mcmVlemUoXG4gIC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gICAgdWlhdXRvbWF0b3IyOiAnYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXInLFxuICAgIHhjdWl0ZXN0OiAnYXBwaXVtLXhjdWl0ZXN0LWRyaXZlcicsXG4gICAgeW91aWVuZ2luZTogJ2FwcGl1bS15b3VpZW5naW5lLWRyaXZlcicsXG4gICAgd2luZG93czogJ2FwcGl1bS13aW5kb3dzLWRyaXZlcicsXG4gICAgbWFjOiAnYXBwaXVtLW1hYy1kcml2ZXInLFxuICAgIG1hYzI6ICdhcHBpdW0tbWFjMi1kcml2ZXInLFxuICAgIGVzcHJlc3NvOiAnYXBwaXVtLWVzcHJlc3NvLWRyaXZlcicsXG4gICAgdGl6ZW46ICdhcHBpdW0tdGl6ZW4tZHJpdmVyJyxcbiAgICBmbHV0dGVyOiAnYXBwaXVtLWZsdXR0ZXItZHJpdmVyJyxcbiAgICBzYWZhcmk6ICdhcHBpdW0tc2FmYXJpLWRyaXZlcicsXG4gICAgZ2Vja286ICdhcHBpdW0tZ2Vja29kcml2ZXInLFxuICB9KSxcbik7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyBhbnkgQXBwaXVtIGludGVybmFsIGZpbGVzXG4gKi9cbmV4cG9ydCBjb25zdCBDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgJ25vZGVfbW9kdWxlcycsXG4gICcuY2FjaGUnLFxuICAnYXBwaXVtJyxcbik7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBoYXNoZmlsZSAoZnJvbSBgQVBQSVVNX0hPTUVgKSBvZiBjb25zdW1pbmcgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gIChpZiBpdCBleGlzdHMpXG4gKi9cbmV4cG9ydCBjb25zdCBQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgsXG4gICdwYWNrYWdlLmhhc2gnLFxuKTtcblxuXG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfTElTVCA9ICdsaXN0JztcbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9JTlNUQUxMID0gJ2luc3RhbGwnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCA9ICd1bmluc3RhbGwnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1VQREFURSA9ICd1cGRhdGUnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1JVTiA9ICdydW4nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBOztBQUtPLE1BQU1BLFdBQVcsR0FBRyxRQUFwQjs7QUFLQSxNQUFNQyxXQUFXLEdBQUcsUUFBcEI7O0FBS0EsTUFBTUMsaUJBQWlCLEdBQUcsUUFBMUI7O0FBS0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCOztBQU1BLE1BQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQ0w7RUFDcEJDLE1BQU0sRUFBRSx1QkFEWTtFQUVwQixrQkFBa0IsK0JBRkU7RUFHcEIsZ0JBQWdCO0FBSEksQ0FESyxDQUF0Qjs7QUFZQSxNQUFNQyxhQUFhLEdBQUdILE1BQU0sQ0FBQ0MsTUFBUCxDQUNMO0VBQ3BCRyxZQUFZLEVBQUUsNEJBRE07RUFFcEJDLFFBQVEsRUFBRSx3QkFGVTtFQUdwQkMsVUFBVSxFQUFFLDBCQUhRO0VBSXBCQyxPQUFPLEVBQUUsdUJBSlc7RUFLcEJDLEdBQUcsRUFBRSxtQkFMZTtFQU1wQkMsSUFBSSxFQUFFLG9CQU5jO0VBT3BCQyxRQUFRLEVBQUUsd0JBUFU7RUFRcEJDLEtBQUssRUFBRSxxQkFSYTtFQVNwQkMsT0FBTyxFQUFFLHVCQVRXO0VBVXBCQyxNQUFNLEVBQUUsc0JBVlk7RUFXcEJDLEtBQUssRUFBRTtBQVhhLENBREssQ0FBdEI7OztBQW1CQSxNQUFNQyx1QkFBdUIsR0FBR0MsY0FBS0MsSUFBTCxDQUNyQyxjQURxQyxFQUVyQyxRQUZxQyxFQUdyQyxRQUhxQyxDQUFoQzs7OztBQVNBLE1BQU1DLDBCQUEwQixHQUFHRixjQUFLQyxJQUFMLENBQ3hDRix1QkFEd0MsRUFFeEMsY0FGd0MsQ0FBbkM7OztBQU1BLE1BQU1JLG1CQUFtQixHQUFHLE1BQTVCOztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLFNBQS9COztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLFdBQWpDOztBQUNBLE1BQU1DLHFCQUFxQixHQUFHLFFBQTlCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCIn0=
@@ -187,4 +187,4 @@ class DriverConfig extends _extensionConfig.ExtensionConfig {
187
187
  }
188
188
 
189
189
  exports.DriverConfig = DriverConfig;
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vZHJpdmVyLWNvbmZpZy5qcyJdLCJuYW1lcyI6WyJEcml2ZXJDb25maWciLCJFeHRlbnNpb25Db25maWciLCJrbm93bkF1dG9tYXRpb25OYW1lcyIsIl9pbnN0YW5jZXMiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJtYW5pZmVzdCIsImxvZ0ZuIiwiZXh0RGF0YSIsIkRSSVZFUl9UWVBFIiwiU2V0IiwidmFsaWRhdGUiLCJjcmVhdGUiLCJpbnN0YW5jZSIsImdldEluc3RhbmNlIiwiRXJyb3IiLCJhcHBpdW1Ib21lIiwic2V0IiwiZ2V0IiwiZXh0cyIsImNsZWFyIiwiZ2V0Q29uZmlnUHJvYmxlbXMiLCJwcm9ibGVtcyIsInBsYXRmb3JtTmFtZXMiLCJhdXRvbWF0aW9uTmFtZSIsIl8iLCJpc0FycmF5IiwicHVzaCIsImVyciIsInZhbCIsImlzRW1wdHkiLCJwTmFtZSIsImlzU3RyaW5nIiwiaGFzIiwiYWRkIiwiZXh0ZW5zaW9uRGVzYyIsImRyaXZlck5hbWUiLCJ2ZXJzaW9uIiwiZmluZE1hdGNoaW5nRHJpdmVyIiwicGxhdGZvcm1OYW1lIiwibG9nIiwiaW5mbyIsIm1haW5DbGFzcyIsIl9nZXREcml2ZXJCeVN1cHBvcnQiLCJnZXRJbnN0YWxsUGF0aCIsImRyaXZlciIsInJlcXVpcmUiLCJtc2ciLCJtZXNzYWdlIiwibWF0Y2hBdXRvbWF0aW9uTmFtZSIsIm1hdGNoUGxhdGZvcm1OYW1lIiwiZHJpdmVycyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJkcml2ZXJEYXRhIiwidG9QYWlycyIsImFOYW1lTWF0Y2hlcyIsInRvTG93ZXJDYXNlIiwicE5hbWVNYXRjaGVzIiwiaW5jbHVkZXMiLCJtYXAiLCJ0b0xvd2VyIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLTyxNQUFNQSxZQUFOLFNBQTJCQyxnQ0FBM0IsQ0FBMkM7QUFNaERD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QUFVcUIsVUFBVyw0QkFBdEIsR0FDQSxJQUFHWixjQUFlLCtCQURsQixHQUVBLDZCQUE0QjBCLGlCQUFrQixlQUY5QyxHQUdBLHFCQUhBLEdBSURXLElBQUksQ0FBQ0MsU0FBTCxDQUFldkMsYUFBZixDQUpULENBQU47QUFLRDtBQUNGOztBQUVELFVBQU0sSUFBSVIsS0FBSixDQUFXLHVEQUFYLENBQU47QUFDRDs7QUFqTThDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgRXh0ZW5zaW9uQ29uZmlnIH0gZnJvbSAnLi9leHRlbnNpb24tY29uZmlnJztcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29uZmlnPERyaXZlclR5cGU+fVxuICovXG5leHBvcnQgY2xhc3MgRHJpdmVyQ29uZmlnIGV4dGVuZHMgRXh0ZW5zaW9uQ29uZmlnIHtcblxuICAvKipcbiAgICogQSBzZXQgb2YgdW5pcXVlIGF1dG9tYXRpb24gbmFtZXMgdXNlZCBieSBkcml2ZXJzLlxuICAgKiBAdHlwZSB7U2V0PHN0cmluZz59XG4gICAqL1xuICBrbm93bkF1dG9tYXRpb25OYW1lcztcblxuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2VzIHRvIHtAbGluayBEcml2ZXJDb25maWd9IGluc3RhbmNlcy5cbiAgICpcbiAgICogYE1hbmlmZXN0YCBhbmQgYEV4dGVuc2lvbkNvbmZpZ2AgaGF2ZSBhIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcDsgZWFjaCBgTWFuaWZlc3RgIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggYSBgRHJpdmVyQ29uZmlnYCBhbmQgYSBgUGx1Z2luQ29uZmlnYDsgbm8gbW9yZSwgbm8gbGVzcy5cbiAgICpcbiAgICogVGhpcyB2YXJpYWJsZSB0cmFja3MgdGhlIGBNYW5pZmVzdGAtdG8tYERyaXZlckNvbmZpZ2AgcG9ydGlvbi5cbiAgICpcbiAgICogQHR5cGUge1dlYWtNYXA8TWFuaWZlc3QsRHJpdmVyQ29uZmlnPn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gICBzdGF0aWMgX2luc3RhbmNlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgIC8qKlxuICAgKiBDYWxsIHtAbGluayBEcml2ZXJDb25maWcuY3JlYXRlfSBpbnN0ZWFkLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge2ltcG9ydCgnLi9tYW5pZmVzdCcpLk1hbmlmZXN0fSBtYW5pZmVzdCAtIE1hbmlmZXN0IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7RHJpdmVyQ29uZmlnT3B0aW9uc30gW29wdHNdXG4gICAqL1xuICAgY29uc3RydWN0b3IgKG1hbmlmZXN0LCB7bG9nRm4sIGV4dERhdGF9ID0ge30pIHtcbiAgICAgc3VwZXIoRFJJVkVSX1RZUEUsIG1hbmlmZXN0LCBsb2dGbik7XG5cbiAgICAgdGhpcy5rbm93bkF1dG9tYXRpb25OYW1lcyA9IG5ldyBTZXQoKTtcblxuICAgICBpZiAoZXh0RGF0YSkge1xuICAgICAgIHRoaXMudmFsaWRhdGUoZXh0RGF0YSk7XG4gICAgIH1cbiAgIH1cblxuICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEcml2ZXJDb25maWd9IGluc3RhbmNlIGZvciBhIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2UuXG4gICAgKlxuICAgICogQHBhcmFtIHtNYW5pZmVzdH0gbWFuaWZlc3RcbiAgICAqIEBwYXJhbSB7RHJpdmVyQ29uZmlnT3B0aW9uc30gW29wdHNdXG4gICAgKiBAdGhyb3dzIElmIGBtYW5pZmVzdGAgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSBgRHJpdmVyQ29uZmlnYFxuICAgICogQHJldHVybnMge0RyaXZlckNvbmZpZ31cbiAgICAqL1xuICAgc3RhdGljIGNyZWF0ZSAobWFuaWZlc3QsIHtleHREYXRhLCBsb2dGbn0gPSB7fSkge1xuICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBEcml2ZXJDb25maWcobWFuaWZlc3QsIHtsb2dGbiwgZXh0RGF0YX0pO1xuICAgICBpZiAoRHJpdmVyQ29uZmlnLmdldEluc3RhbmNlKG1hbmlmZXN0KSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcihgTWFuaWZlc3Qgd2l0aCBBUFBJVU1fSE9NRSAke21hbmlmZXN0LmFwcGl1bUhvbWV9IGFscmVhZHkgaGFzIGEgRHJpdmVyQ29uZmlnOyB1c2UgRHJpdmVyQ29uZmlnLmdldEluc3RhbmNlKCkgdG8gcmV0cmlldmUgaXQuYCk7XG4gICAgIH1cbiAgICAgRHJpdmVyQ29uZmlnLl9pbnN0YW5jZXMuc2V0KG1hbmlmZXN0LCBpbnN0YW5jZSk7XG4gICAgIHJldHVybiBpbnN0YW5jZTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBSZXR1cm5zIGEgRHJpdmVyQ29uZmlnIGFzc29jaWF0ZWQgd2l0aCBhIE1hbmlmZXN0XG4gICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgICogQHJldHVybnMge0RyaXZlckNvbmZpZ3x1bmRlZmluZWR9XG4gICAgKi9cbiAgIHN0YXRpYyBnZXRJbnN0YW5jZSAobWFuaWZlc3QpIHtcbiAgICAgcmV0dXJuIERyaXZlckNvbmZpZy5faW5zdGFuY2VzLmdldChtYW5pZmVzdCk7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBDaGVja3MgZXh0ZW5zaW9ucyBmb3IgcHJvYmxlbXNcbiAgICogQHBhcmFtIHtFeHRSZWNvcmQ8RHJpdmVyVHlwZT59IGV4dHNcbiAgICovXG4gICB2YWxpZGF0ZSAoZXh0cykge1xuICAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmNsZWFyKCk7XG4gICAgIHJldHVybiBzdXBlci52YWxpZGF0ZShleHRzKTtcbiAgIH1cblxuICAgLyoqXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RHJpdmVyVHlwZT59IGV4dERhdGFcbiAgICogQHJldHVybnMge2ltcG9ydCgnLi9leHRlbnNpb24tY29uZmlnJykuUHJvYmxlbVtdfVxuICAgKi9cbiAgIGdldENvbmZpZ1Byb2JsZW1zIChleHREYXRhKSB7XG4gICAgIGNvbnN0IHByb2JsZW1zID0gW107XG4gICAgIGNvbnN0IHtwbGF0Zm9ybU5hbWVzLCBhdXRvbWF0aW9uTmFtZX0gPSBleHREYXRhO1xuXG4gICAgIGlmICghXy5pc0FycmF5KHBsYXRmb3JtTmFtZXMpKSB7XG4gICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICBlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBzdXBwb3J0ZWQgcGxhdGZvcm1OYW1lcyBsaXN0LicsXG4gICAgICAgICB2YWw6IHBsYXRmb3JtTmFtZXNcbiAgICAgICB9KTtcbiAgICAgfSBlbHNlIHtcbiAgICAgICBpZiAoXy5pc0VtcHR5KHBsYXRmb3JtTmFtZXMpKSB7XG4gICAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgICAgZXJyOiAnRW1wdHkgcGxhdGZvcm1OYW1lcyBsaXN0LicsXG4gICAgICAgICAgIHZhbDogcGxhdGZvcm1OYW1lc1xuICAgICAgICAgfSk7XG4gICAgICAgfSBlbHNlIHtcbiAgICAgICAgIGZvciAoY29uc3QgcE5hbWUgb2YgcGxhdGZvcm1OYW1lcykge1xuICAgICAgICAgICBpZiAoIV8uaXNTdHJpbmcocE5hbWUpKSB7XG4gICAgICAgICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnSW5jb3JyZWN0bHkgZm9ybWF0dGVkIHBsYXRmb3JtTmFtZS4nLCB2YWw6IHBOYW1lfSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgICB9XG4gICAgIH1cblxuICAgICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgYXV0b21hdGlvbk5hbWUnLCB2YWw6IGF1dG9tYXRpb25OYW1lfSk7XG4gICAgIH1cblxuICAgICBpZiAodGhpcy5rbm93bkF1dG9tYXRpb25OYW1lcy5oYXMoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICBlcnI6ICdNdWx0aXBsZSBkcml2ZXJzIGNsYWltIHN1cHBvcnQgZm9yIHRoZSBzYW1lIGF1dG9tYXRpb25OYW1lJyxcbiAgICAgICAgIHZhbDogYXV0b21hdGlvbk5hbWVcbiAgICAgICB9KTtcbiAgICAgfVxuXG4gICAgIC8vIHNob3VsZCB3ZSByZXRhaW4gdGhlIG5hbWUgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLCBvbmNlIHdlJ3ZlIGNoZWNrZWQgdGhlcmUgYXJlIG5vIHByb2JsZW1zP1xuICAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmFkZChhdXRvbWF0aW9uTmFtZSk7XG5cbiAgICAgcmV0dXJuIHByb2JsZW1zO1xuICAgfVxuXG4gICAvKipcbiAgICogQHBhcmFtIHtFeHROYW1lPERyaXZlclR5cGU+fSBkcml2ZXJOYW1lXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RHJpdmVyVHlwZT59IGV4dERhdGFcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gICBleHRlbnNpb25EZXNjIChkcml2ZXJOYW1lLCB7dmVyc2lvbiwgYXV0b21hdGlvbk5hbWV9KSB7XG4gICAgIHJldHVybiBgJHtkcml2ZXJOYW1lfUAke3ZlcnNpb259IChhdXRvbWF0aW9uTmFtZSAnJHthdXRvbWF0aW9uTmFtZX0nKWA7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBHaXZlbiBjYXBhYmlsaXRpZXMsIGZpbmQgYSBtYXRjaGluZyBkcml2ZXIgd2l0aGluIHRoZSBjb25maWcuIExvYWQgaXRzIGNsYXNzIGFuZCByZXR1cm4gaXQgYWxvbmcgd2l0aCB2ZXJzaW9uIGFuZCBkcml2ZXIgbmFtZS5cbiAgICogQHBhcmFtIHtDYXBhYmlsaXRpZXN9IGNhcHNcbiAgICogQHJldHVybnMge01hdGNoZWREcml2ZXJ9XG4gICAqL1xuICAgZmluZE1hdGNoaW5nRHJpdmVyICh7YXV0b21hdGlvbk5hbWUsIHBsYXRmb3JtTmFtZX0pIHtcbiAgICAgaWYgKCFfLmlzU3RyaW5nKHBsYXRmb3JtTmFtZSkpIHtcbiAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IGluY2x1ZGUgYSBwbGF0Zm9ybU5hbWUgY2FwYWJpbGl0eScpO1xuICAgICB9XG5cbiAgICAgaWYgKCFfLmlzU3RyaW5nKGF1dG9tYXRpb25OYW1lKSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgaW5jbHVkZSBhbiBhdXRvbWF0aW9uTmFtZSBjYXBhYmlsaXR5Jyk7XG4gICAgIH1cblxuICAgICBsb2cuaW5mbyhgQXR0ZW1wdGluZyB0byBmaW5kIG1hdGNoaW5nIGRyaXZlciBmb3IgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgYCcke2F1dG9tYXRpb25OYW1lfScgYW5kIHBsYXRmb3JtTmFtZSAnJHtwbGF0Zm9ybU5hbWV9J2ApO1xuXG4gICAgIHRyeSB7XG4gICAgICAgY29uc3Qge1xuICAgICAgICAgZHJpdmVyTmFtZSxcbiAgICAgICAgIG1haW5DbGFzcyxcbiAgICAgICAgIHZlcnNpb24sXG4gICAgICAgfSA9IHRoaXMuX2dldERyaXZlckJ5U3VwcG9ydChhdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lKTtcbiAgICAgICBsb2cuaW5mbyhgVGhlICcke2RyaXZlck5hbWV9JyBkcml2ZXIgd2FzIGluc3RhbGxlZCBhbmQgbWF0Y2hlZCBjYXBzLmApO1xuICAgICAgIGxvZy5pbmZvKGBXaWxsIHJlcXVpcmUgaXQgYXQgJHt0aGlzLmdldEluc3RhbGxQYXRoKGRyaXZlck5hbWUpfWApO1xuICAgICAgIGNvbnN0IGRyaXZlciA9IHRoaXMucmVxdWlyZShkcml2ZXJOYW1lKTtcbiAgICAgICBpZiAoIWRyaXZlcikge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEcml2ZXIgJyR7ZHJpdmVyTmFtZX0nIGRpZCBub3QgZXhwb3J0IGEgY2xhc3Mgd2l0aCBuYW1lICcke21haW5DbGFzc30nLiBDb250YWN0IHRoZSBhdXRob3Igb2YgdGhlIGRyaXZlciFgKTtcbiAgICAgICB9XG4gICAgICAgcmV0dXJuIHtkcml2ZXIsIHZlcnNpb24sIGRyaXZlck5hbWV9O1xuICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICBjb25zdCBtc2cgPSBgQ291bGQgbm90IGZpbmQgYSBkcml2ZXIgZm9yIGF1dG9tYXRpb25OYW1lIGAgK1xuICAgICAgICAgICAgICAgICAgYCcke2F1dG9tYXRpb25OYW1lfScgYW5kIHBsYXRmb3JtTmFtZSAke3BsYXRmb3JtTmFtZX0nLiBgICtcbiAgICAgICAgICAgICAgICAgIGBIYXZlIHlvdSBpbnN0YWxsZWQgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aG9zZSBgICtcbiAgICAgICAgICAgICAgICAgIGBjYXBhYmlsaXRpZXM/IFJ1biAnYXBwaXVtIGRyaXZlciBsaXN0IC0taW5zdGFsbGVkJyB0byBzZWUuIGAgK1xuICAgICAgICAgICAgICAgICAgYChMb3dlci1sZXZlbCBlcnJvcjogJHtlcnIubWVzc2FnZX0pYDtcbiAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgfVxuICAgfVxuXG4gICAvKipcbiAgICogR2l2ZW4gYW4gYXV0b21hdGlvbiBuYW1lIGFuZCBwbGF0Zm9ybSBuYW1lLCBmaW5kIGEgc3VpdGFibGUgZHJpdmVyIGFuZCByZXR1cm4gaXRzIGV4dGVuc2lvbiBkYXRhLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hBdXRvbWF0aW9uTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hQbGF0Zm9ybU5hbWVcbiAgICogQHJldHVybnMge0V4dE1ldGFkYXRhPERyaXZlclR5cGU+ICYgaW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5JbnRlcm5hbE1ldGFkYXRhICYgaW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkNvbW1vbk1ldGFkYXRhfVxuICAgKi9cbiAgIF9nZXREcml2ZXJCeVN1cHBvcnQgKG1hdGNoQXV0b21hdGlvbk5hbWUsIG1hdGNoUGxhdGZvcm1OYW1lKSB7XG4gICAgIGNvbnN0IGRyaXZlcnMgPSB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnM7XG4gICAgIGZvciAoY29uc3QgW2RyaXZlck5hbWUsIGRyaXZlckRhdGFdIG9mIF8udG9QYWlycyhkcml2ZXJzKSkge1xuICAgICAgIGNvbnN0IHthdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lc30gPSBkcml2ZXJEYXRhO1xuICAgICAgIGNvbnN0IGFOYW1lTWF0Y2hlcyA9IGF1dG9tYXRpb25OYW1lLnRvTG93ZXJDYXNlKCkgPT09IG1hdGNoQXV0b21hdGlvbk5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICBjb25zdCBwTmFtZU1hdGNoZXMgPSBfLmluY2x1ZGVzKHBsYXRmb3JtTmFtZXMubWFwKF8udG9Mb3dlciksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoUGxhdGZvcm1OYW1lLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgaWYgKGFOYW1lTWF0Y2hlcyAmJiBwTmFtZU1hdGNoZXMpIHtcbiAgICAgICAgIHJldHVybiB7ZHJpdmVyTmFtZSwgLi4uZHJpdmVyRGF0YX07XG4gICAgICAgfVxuXG4gICAgICAgaWYgKGFOYW1lTWF0Y2hlcykge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEcml2ZXIgJyR7ZHJpdmVyTmFtZX0nIHN1cHBvcnRzIGF1dG9tYXRpb25OYW1lIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCcke2F1dG9tYXRpb25OYW1lfScsIGJ1dCBBcHBpdW0gY291bGQgbm90IGZpbmQgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgc3VwcG9ydCBmb3IgcGxhdGZvcm1OYW1lICcke21hdGNoUGxhdGZvcm1OYW1lfScuIFN1cHBvcnRlZCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybU5hbWVzIGFyZTogYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShwbGF0Zm9ybU5hbWVzKSk7XG4gICAgICAgfVxuICAgICB9XG5cbiAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBpbnN0YWxsZWQgZHJpdmVyIHRvIHN1cHBvcnQgZ2l2ZW4gY2Fwc2ApO1xuICAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIERyaXZlckNvbmZpZ09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2V4dGVuc2lvbi1jb25maWcnKS5FeHRlbnNpb25Mb2dGbn0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAqIEBwcm9wZXJ0eSB7TWFuaWZlc3REYXRhWydkcml2ZXJzJ119IFtleHREYXRhXSAtIEV4dGVuc2lvbiBkYXRhXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRNZXRhZGF0YTxUPn0gRXh0TWV0YWRhdGFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dE1hbmlmZXN0PFQ+fSBFeHRNYW5pZmVzdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5NYW5pZmVzdERhdGF9IE1hbmlmZXN0RGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRSZWNvcmQ8VD59IEV4dFJlY29yZFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0TmFtZTxUPn0gRXh0TmFtZVxuICovXG5cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgb2Yge0BsaW5rY29kZSBEcml2ZXJDb25maWcuZmluZE1hdGNoaW5nRHJpdmVyfVxuICogQHR5cGVkZWYgTWF0Y2hlZERyaXZlclxuICogQHByb3BlcnR5IHtpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVuc2lvbicpLkRyaXZlckNsYXNzfSBkcml2ZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZHJpdmVyTmFtZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNhcGFiaWxpdGllc30gQ2FwYWJpbGl0aWVzXG4gKi9cbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcml2ZXJDb25maWciLCJFeHRlbnNpb25Db25maWciLCJrbm93bkF1dG9tYXRpb25OYW1lcyIsIl9pbnN0YW5jZXMiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJtYW5pZmVzdCIsImxvZ0ZuIiwiZXh0RGF0YSIsIkRSSVZFUl9UWVBFIiwiU2V0IiwidmFsaWRhdGUiLCJjcmVhdGUiLCJpbnN0YW5jZSIsImdldEluc3RhbmNlIiwiRXJyb3IiLCJhcHBpdW1Ib21lIiwic2V0IiwiZ2V0IiwiZXh0cyIsImNsZWFyIiwiZ2V0Q29uZmlnUHJvYmxlbXMiLCJwcm9ibGVtcyIsInBsYXRmb3JtTmFtZXMiLCJhdXRvbWF0aW9uTmFtZSIsIl8iLCJpc0FycmF5IiwicHVzaCIsImVyciIsInZhbCIsImlzRW1wdHkiLCJwTmFtZSIsImlzU3RyaW5nIiwiaGFzIiwiYWRkIiwiZXh0ZW5zaW9uRGVzYyIsImRyaXZlck5hbWUiLCJ2ZXJzaW9uIiwiZmluZE1hdGNoaW5nRHJpdmVyIiwicGxhdGZvcm1OYW1lIiwibG9nIiwiaW5mbyIsIm1haW5DbGFzcyIsIl9nZXREcml2ZXJCeVN1cHBvcnQiLCJnZXRJbnN0YWxsUGF0aCIsImRyaXZlciIsInJlcXVpcmUiLCJtc2ciLCJtZXNzYWdlIiwibWF0Y2hBdXRvbWF0aW9uTmFtZSIsIm1hdGNoUGxhdGZvcm1OYW1lIiwiZHJpdmVycyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJkcml2ZXJEYXRhIiwidG9QYWlycyIsImFOYW1lTWF0Y2hlcyIsInRvTG93ZXJDYXNlIiwicE5hbWVNYXRjaGVzIiwiaW5jbHVkZXMiLCJtYXAiLCJ0b0xvd2VyIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vZHJpdmVyLWNvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBFeHRlbnNpb25Db25maWcgfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuXG4vKipcbiAqIEBleHRlbmRzIHtFeHRlbnNpb25Db25maWc8RHJpdmVyVHlwZT59XG4gKi9cbmV4cG9ydCBjbGFzcyBEcml2ZXJDb25maWcgZXh0ZW5kcyBFeHRlbnNpb25Db25maWcge1xuXG4gIC8qKlxuICAgKiBBIHNldCBvZiB1bmlxdWUgYXV0b21hdGlvbiBuYW1lcyB1c2VkIGJ5IGRyaXZlcnMuXG4gICAqIEB0eXBlIHtTZXQ8c3RyaW5nPn1cbiAgICovXG4gIGtub3duQXV0b21hdGlvbk5hbWVzO1xuXG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgb2Yge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZXMgdG8ge0BsaW5rIERyaXZlckNvbmZpZ30gaW5zdGFuY2VzLlxuICAgKlxuICAgKiBgTWFuaWZlc3RgIGFuZCBgRXh0ZW5zaW9uQ29uZmlnYCBoYXZlIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwOyBlYWNoIGBNYW5pZmVzdGAgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGBEcml2ZXJDb25maWdgIGFuZCBhIGBQbHVnaW5Db25maWdgOyBubyBtb3JlLCBubyBsZXNzLlxuICAgKlxuICAgKiBUaGlzIHZhcmlhYmxlIHRyYWNrcyB0aGUgYE1hbmlmZXN0YC10by1gRHJpdmVyQ29uZmlnYCBwb3J0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7V2Vha01hcDxNYW5pZmVzdCxEcml2ZXJDb25maWc+fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgIHN0YXRpYyBfaW5zdGFuY2VzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgLyoqXG4gICAqIENhbGwge0BsaW5rIERyaXZlckNvbmZpZy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IG1hbmlmZXN0IC0gTWFuaWZlc3QgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtEcml2ZXJDb25maWdPcHRpb25zfSBbb3B0c11cbiAgICovXG4gICBjb25zdHJ1Y3RvciAobWFuaWZlc3QsIHtsb2dGbiwgZXh0RGF0YX0gPSB7fSkge1xuICAgICBzdXBlcihEUklWRVJfVFlQRSwgbWFuaWZlc3QsIGxvZ0ZuKTtcblxuICAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzID0gbmV3IFNldCgpO1xuXG4gICAgIGlmIChleHREYXRhKSB7XG4gICAgICAgdGhpcy52YWxpZGF0ZShleHREYXRhKTtcbiAgICAgfVxuICAgfVxuXG4gICAvKipcbiAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIERyaXZlckNvbmZpZ30gaW5zdGFuY2UgZm9yIGEge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZS5cbiAgICAqXG4gICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgICogQHBhcmFtIHtEcml2ZXJDb25maWdPcHRpb25zfSBbb3B0c11cbiAgICAqIEB0aHJvd3MgSWYgYG1hbmlmZXN0YCBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBhIGBEcml2ZXJDb25maWdgXG4gICAgKiBAcmV0dXJucyB7RHJpdmVyQ29uZmlnfVxuICAgICovXG4gICBzdGF0aWMgY3JlYXRlIChtYW5pZmVzdCwge2V4dERhdGEsIGxvZ0ZufSA9IHt9KSB7XG4gICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERyaXZlckNvbmZpZyhtYW5pZmVzdCwge2xvZ0ZuLCBleHREYXRhfSk7XG4gICAgIGlmIChEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UobWFuaWZlc3QpKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYW5pZmVzdCB3aXRoIEFQUElVTV9IT01FICR7bWFuaWZlc3QuYXBwaXVtSG9tZX0gYWxyZWFkeSBoYXMgYSBEcml2ZXJDb25maWc7IHVzZSBEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UoKSB0byByZXRyaWV2ZSBpdC5gKTtcbiAgICAgfVxuICAgICBEcml2ZXJDb25maWcuX2luc3RhbmNlcy5zZXQobWFuaWZlc3QsIGluc3RhbmNlKTtcbiAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgfVxuXG4gICAvKipcbiAgICAqIFJldHVybnMgYSBEcml2ZXJDb25maWcgYXNzb2NpYXRlZCB3aXRoIGEgTWFuaWZlc3RcbiAgICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAgKiBAcmV0dXJucyB7RHJpdmVyQ29uZmlnfHVuZGVmaW5lZH1cbiAgICAqL1xuICAgc3RhdGljIGdldEluc3RhbmNlIChtYW5pZmVzdCkge1xuICAgICByZXR1cm4gRHJpdmVyQ29uZmlnLl9pbnN0YW5jZXMuZ2V0KG1hbmlmZXN0KTtcbiAgIH1cblxuICAgLyoqXG4gICAqIENoZWNrcyBleHRlbnNpb25zIGZvciBwcm9ibGVtc1xuICAgKiBAcGFyYW0ge0V4dFJlY29yZDxEcml2ZXJUeXBlPn0gZXh0c1xuICAgKi9cbiAgIHZhbGlkYXRlIChleHRzKSB7XG4gICAgIHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMuY2xlYXIoKTtcbiAgICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRlKGV4dHMpO1xuICAgfVxuXG4gICAvKipcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxEcml2ZXJUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuL2V4dGVuc2lvbi1jb25maWcnKS5Qcm9ibGVtW119XG4gICAqL1xuICAgZ2V0Q29uZmlnUHJvYmxlbXMgKGV4dERhdGEpIHtcbiAgICAgY29uc3QgcHJvYmxlbXMgPSBbXTtcbiAgICAgY29uc3Qge3BsYXRmb3JtTmFtZXMsIGF1dG9tYXRpb25OYW1lfSA9IGV4dERhdGE7XG5cbiAgICAgaWYgKCFfLmlzQXJyYXkocGxhdGZvcm1OYW1lcykpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgIGVycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IHN1cHBvcnRlZCBwbGF0Zm9ybU5hbWVzIGxpc3QuJyxcbiAgICAgICAgIHZhbDogcGxhdGZvcm1OYW1lc1xuICAgICAgIH0pO1xuICAgICB9IGVsc2Uge1xuICAgICAgIGlmIChfLmlzRW1wdHkocGxhdGZvcm1OYW1lcykpIHtcbiAgICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgICBlcnI6ICdFbXB0eSBwbGF0Zm9ybU5hbWVzIGxpc3QuJyxcbiAgICAgICAgICAgdmFsOiBwbGF0Zm9ybU5hbWVzXG4gICAgICAgICB9KTtcbiAgICAgICB9IGVsc2Uge1xuICAgICAgICAgZm9yIChjb25zdCBwTmFtZSBvZiBwbGF0Zm9ybU5hbWVzKSB7XG4gICAgICAgICAgIGlmICghXy5pc1N0cmluZyhwTmFtZSkpIHtcbiAgICAgICAgICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdJbmNvcnJlY3RseSBmb3JtYXR0ZWQgcGxhdGZvcm1OYW1lLicsIHZhbDogcE5hbWV9KTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICAgIH1cbiAgICAgfVxuXG4gICAgIGlmICghXy5pc1N0cmluZyhhdXRvbWF0aW9uTmFtZSkpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBhdXRvbWF0aW9uTmFtZScsIHZhbDogYXV0b21hdGlvbk5hbWV9KTtcbiAgICAgfVxuXG4gICAgIGlmICh0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmhhcyhhdXRvbWF0aW9uTmFtZSkpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgIGVycjogJ011bHRpcGxlIGRyaXZlcnMgY2xhaW0gc3VwcG9ydCBmb3IgdGhlIHNhbWUgYXV0b21hdGlvbk5hbWUnLFxuICAgICAgICAgdmFsOiBhdXRvbWF0aW9uTmFtZVxuICAgICAgIH0pO1xuICAgICB9XG5cbiAgICAgLy8gc2hvdWxkIHdlIHJldGFpbiB0aGUgbmFtZSBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24sIG9uY2Ugd2UndmUgY2hlY2tlZCB0aGVyZSBhcmUgbm8gcHJvYmxlbXM/XG4gICAgIHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMuYWRkKGF1dG9tYXRpb25OYW1lKTtcblxuICAgICByZXR1cm4gcHJvYmxlbXM7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RHJpdmVyVHlwZT59IGRyaXZlck5hbWVcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxEcml2ZXJUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgIGV4dGVuc2lvbkRlc2MgKGRyaXZlck5hbWUsIHt2ZXJzaW9uLCBhdXRvbWF0aW9uTmFtZX0pIHtcbiAgICAgcmV0dXJuIGAke2RyaXZlck5hbWV9QCR7dmVyc2lvbn0gKGF1dG9tYXRpb25OYW1lICcke2F1dG9tYXRpb25OYW1lfScpYDtcbiAgIH1cblxuICAgLyoqXG4gICAqIEdpdmVuIGNhcGFiaWxpdGllcywgZmluZCBhIG1hdGNoaW5nIGRyaXZlciB3aXRoaW4gdGhlIGNvbmZpZy4gTG9hZCBpdHMgY2xhc3MgYW5kIHJldHVybiBpdCBhbG9uZyB3aXRoIHZlcnNpb24gYW5kIGRyaXZlciBuYW1lLlxuICAgKiBAcGFyYW0ge0NhcGFiaWxpdGllc30gY2Fwc1xuICAgKiBAcmV0dXJucyB7TWF0Y2hlZERyaXZlcn1cbiAgICovXG4gICBmaW5kTWF0Y2hpbmdEcml2ZXIgKHthdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lfSkge1xuICAgICBpZiAoIV8uaXNTdHJpbmcocGxhdGZvcm1OYW1lKSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgaW5jbHVkZSBhIHBsYXRmb3JtTmFtZSBjYXBhYmlsaXR5Jyk7XG4gICAgIH1cblxuICAgICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBpbmNsdWRlIGFuIGF1dG9tYXRpb25OYW1lIGNhcGFiaWxpdHknKTtcbiAgICAgfVxuXG4gICAgIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGZpbmQgbWF0Y2hpbmcgZHJpdmVyIGZvciBhdXRvbWF0aW9uTmFtZSBgICtcbiAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICcke3BsYXRmb3JtTmFtZX0nYCk7XG5cbiAgICAgdHJ5IHtcbiAgICAgICBjb25zdCB7XG4gICAgICAgICBkcml2ZXJOYW1lLFxuICAgICAgICAgbWFpbkNsYXNzLFxuICAgICAgICAgdmVyc2lvbixcbiAgICAgICB9ID0gdGhpcy5fZ2V0RHJpdmVyQnlTdXBwb3J0KGF1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWUpO1xuICAgICAgIGxvZy5pbmZvKGBUaGUgJyR7ZHJpdmVyTmFtZX0nIGRyaXZlciB3YXMgaW5zdGFsbGVkIGFuZCBtYXRjaGVkIGNhcHMuYCk7XG4gICAgICAgbG9nLmluZm8oYFdpbGwgcmVxdWlyZSBpdCBhdCAke3RoaXMuZ2V0SW5zdGFsbFBhdGgoZHJpdmVyTmFtZSl9YCk7XG4gICAgICAgY29uc3QgZHJpdmVyID0gdGhpcy5yZXF1aXJlKGRyaXZlck5hbWUpO1xuICAgICAgIGlmICghZHJpdmVyKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERyaXZlciAnJHtkcml2ZXJOYW1lfScgZGlkIG5vdCBleHBvcnQgYSBjbGFzcyB3aXRoIG5hbWUgJyR7bWFpbkNsYXNzfScuIENvbnRhY3QgdGhlIGF1dGhvciBvZiB0aGUgZHJpdmVyIWApO1xuICAgICAgIH1cbiAgICAgICByZXR1cm4ge2RyaXZlciwgdmVyc2lvbiwgZHJpdmVyTmFtZX07XG4gICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgIGNvbnN0IG1zZyA9IGBDb3VsZCBub3QgZmluZCBhIGRyaXZlciBmb3IgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICR7cGxhdGZvcm1OYW1lfScuIGAgK1xuICAgICAgICAgICAgICAgICAgYEhhdmUgeW91IGluc3RhbGxlZCBhIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRob3NlIGAgK1xuICAgICAgICAgICAgICAgICAgYGNhcGFiaWxpdGllcz8gUnVuICdhcHBpdW0gZHJpdmVyIGxpc3QgLS1pbnN0YWxsZWQnIHRvIHNlZS4gYCArXG4gICAgICAgICAgICAgICAgICBgKExvd2VyLWxldmVsIGVycm9yOiAke2Vyci5tZXNzYWdlfSlgO1xuICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICB9XG4gICB9XG5cbiAgIC8qKlxuICAgKiBHaXZlbiBhbiBhdXRvbWF0aW9uIG5hbWUgYW5kIHBsYXRmb3JtIG5hbWUsIGZpbmQgYSBzdWl0YWJsZSBkcml2ZXIgYW5kIHJldHVybiBpdHMgZXh0ZW5zaW9uIGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaEF1dG9tYXRpb25OYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaFBsYXRmb3JtTmFtZVxuICAgKiBAcmV0dXJucyB7RXh0TWV0YWRhdGE8RHJpdmVyVHlwZT4gJiBpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkludGVybmFsTWV0YWRhdGEgJiBpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVybmFsLW1hbmlmZXN0JykuQ29tbW9uTWV0YWRhdGF9XG4gICAqL1xuICAgX2dldERyaXZlckJ5U3VwcG9ydCAobWF0Y2hBdXRvbWF0aW9uTmFtZSwgbWF0Y2hQbGF0Zm9ybU5hbWUpIHtcbiAgICAgY29uc3QgZHJpdmVycyA9IHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucztcbiAgICAgZm9yIChjb25zdCBbZHJpdmVyTmFtZSwgZHJpdmVyRGF0YV0gb2YgXy50b1BhaXJzKGRyaXZlcnMpKSB7XG4gICAgICAgY29uc3Qge2F1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWVzfSA9IGRyaXZlckRhdGE7XG4gICAgICAgY29uc3QgYU5hbWVNYXRjaGVzID0gYXV0b21hdGlvbk5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbWF0Y2hBdXRvbWF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgIGNvbnN0IHBOYW1lTWF0Y2hlcyA9IF8uaW5jbHVkZXMocGxhdGZvcm1OYW1lcy5tYXAoXy50b0xvd2VyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hQbGF0Zm9ybU5hbWUudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICBpZiAoYU5hbWVNYXRjaGVzICYmIHBOYW1lTWF0Y2hlcykge1xuICAgICAgICAgcmV0dXJuIHtkcml2ZXJOYW1lLCAuLi5kcml2ZXJEYXRhfTtcbiAgICAgICB9XG5cbiAgICAgICBpZiAoYU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERyaXZlciAnJHtkcml2ZXJOYW1lfScgc3VwcG9ydHMgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JywgYnV0IEFwcGl1bSBjb3VsZCBub3QgZmluZCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzdXBwb3J0IGZvciBwbGF0Zm9ybU5hbWUgJyR7bWF0Y2hQbGF0Zm9ybU5hbWV9Jy4gU3VwcG9ydGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYHBsYXRmb3JtTmFtZXMgYXJlOiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHBsYXRmb3JtTmFtZXMpKTtcbiAgICAgICB9XG4gICAgIH1cblxuICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGluc3RhbGxlZCBkcml2ZXIgdG8gc3VwcG9ydCBnaXZlbiBjYXBzYCk7XG4gICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRHJpdmVyQ29uZmlnT3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkxvZ0ZufSBbbG9nRm5dIC0gT3B0aW9uYWwgbG9nZ2luZyBmdW5jdGlvblxuICogQHByb3BlcnR5IHtNYW5pZmVzdERhdGFbJ2RyaXZlcnMnXX0gW2V4dERhdGFdIC0gRXh0ZW5zaW9uIGRhdGFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dE1ldGFkYXRhPFQ+fSBFeHRNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLk1hbmlmZXN0RGF0YX0gTWFuaWZlc3REYXRhXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vbWFuaWZlc3QnKS5NYW5pZmVzdH0gTWFuaWZlc3RcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dFJlY29yZDxUPn0gRXh0UmVjb3JkXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHROYW1lPFQ+fSBFeHROYW1lXG4gKi9cblxuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIERyaXZlckNvbmZpZy5maW5kTWF0Y2hpbmdEcml2ZXJ9XG4gKiBAdHlwZWRlZiBNYXRjaGVkRHJpdmVyXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi4vLi4vdHlwZXMvZXh0ZW5zaW9uJykuRHJpdmVyQ2xhc3N9IGRyaXZlclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcnNpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkcml2ZXJOYW1lXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2Fw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
@@ -294,4 +294,4 @@ class ExtensionConfig {
294
294
  }
295
295
 
296
296
  exports.ExtensionConfig = ExtensionConfig;
297
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZy5qcyJdLCJuYW1lcyI6WyJJTlNUQUxMX1RZUEVfTlBNIiwiSU5TVEFMTF9UWVBFX0xPQ0FMIiwiSU5TVEFMTF9UWVBFX0dJVEhVQiIsIklOU1RBTExfVFlQRV9HSVQiLCJJTlNUQUxMX1RZUEVTIiwiU2V0IiwiRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uVHlwZSIsImNvbmZpZ0tleSIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJsb2ciLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yIiwibG9nRm4iLCJsb2dnZXIiLCJfIiwiaXNGdW5jdGlvbiIsImVycm9yIiwiYmluZCIsImdldEV4dGVuc2lvbkRhdGEiLCJtYW5pZmVzdFBhdGgiLCJhcHBpdW1Ib21lIiwidmFsaWRhdGUiLCJleHRzIiwiZm91bmRQcm9ibGVtcyIsImV4dE5hbWUiLCJleHREYXRhIiwidG9QYWlycyIsImdldEdlbmVyaWNDb25maWdQcm9ibGVtcyIsImdldENvbmZpZ1Byb2JsZW1zIiwiZ2V0U2NoZW1hUHJvYmxlbXMiLCJwcm9ibGVtU3VtbWFyaWVzIiwicHJvYmxlbXMiLCJpc0VtcHR5IiwicHVzaCIsInByb2JsZW0iLCJlcnIiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsIiwic3VtbWFyeSIsInNjaGVtYSIsImFyZ1NjaGVtYVBhdGgiLCJleHREYXRhSGFzU2NoZW1hIiwiaXNTdHJpbmciLCJyZWFkRXh0ZW5zaW9uU2NoZW1hIiwibWVzc2FnZSIsIkFMTE9XRURfU0NIRU1BX0VYVEVOU0lPTlMiLCJqb2luIiwiaXNQbGFpbk9iamVjdCIsInZlcnNpb24iLCJwa2dOYW1lIiwiaW5zdGFsbFNwZWMiLCJpbnN0YWxsVHlwZSIsIm1haW5DbGFzcyIsImhhcyIsImFkZEV4dGVuc2lvbiIsIndyaXRlIiwidXBkYXRlRXh0ZW5zaW9uIiwicmVtb3ZlRXh0ZW5zaW9uIiwicHJpbnQiLCJhY3RpdmVOYW1lcyIsImluZm8iLCJleHRlbnNpb25EZXNjIiwiRXJyb3IiLCJnZXRJbnN0YWxsUGF0aCIsInBhdGgiLCJyZXF1aXJlIiwicmVxUGF0aCIsInJlcVJlc29sdmVkIiwicmVzb2x2ZSIsInByb2Nlc3MiLCJlbnYiLCJBUFBJVU1fUkVMT0FEX0VYVEVOU0lPTlMiLCJjYWNoZSIsImRlYnVnIiwiaXNJbnN0YWxsZWQiLCJpbmNsdWRlcyIsIk9iamVjdCIsImtleXMiLCJfcmVhZEV4dGVuc2lvblNjaGVtYSIsImV4dFR5cGUiLCJUeXBlRXJyb3IiLCJtb2R1bGVPYmplY3QiLCJzY2hlbWFQYXRoIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpc09iamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQSxNQUFNQSxnQkFBZ0IsR0FBRyxLQUF6Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxPQUEzQjs7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxRQUE1Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxLQUF6Qjs7QUFHQSxNQUFNQyxhQUFhLEdBQUcsSUFBSUMsR0FBSixDQUFRLENBQzVCRixnQkFENEIsRUFFNUJELG1CQUY0QixFQUc1QkQsa0JBSDRCLEVBSTVCRCxnQkFKNEIsQ0FBUixDQUF0Qjs7O0FBYU8sTUFBTU0sZUFBTixDQUFzQjtBQUUzQkMsRUFBQUEsYUFBYTtBQUdiQyxFQUFBQSxTQUFTO0FBR1RDLEVBQUFBLG1CQUFtQjtBQUduQkMsRUFBQUEsR0FBRztBQUdIQyxFQUFBQSxRQUFROztBQVFSQyxFQUFBQSxXQUFXLENBQUVMLGFBQUYsRUFBaUJJLFFBQWpCLEVBQTJCRSxLQUEzQixFQUFrQztBQUMzQyxVQUFNQyxNQUFNLEdBQUdDLGdCQUFFQyxVQUFGLENBQWFILEtBQWIsSUFBc0JBLEtBQXRCLEdBQThCSCxnQkFBSU8sS0FBSixDQUFVQyxJQUFWLENBQWVSLGVBQWYsQ0FBN0M7QUFDQSxTQUFLSCxhQUFMLEdBQXFCQSxhQUFyQjtBQUNBLFNBQUtDLFNBQUws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RXBCLE9BQUYsRUFBV0MsT0FBWCxFQUFvQjtBQUNyQyxXQUFPcEIsZUFBZSxDQUFDMEUsb0JBQWhCLENBQ0wsS0FBSzNELFVBREEsRUFFTCxLQUFLZCxhQUZBLEVBR0xrQixPQUhLLEVBSUxDLE9BSkssQ0FBUDtBQU1EOztBQTNXMEIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCByZXNvbHZlRnJvbSBmcm9tICdyZXNvbHZlLWZyb20nO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQUxMT1dFRF9TQ0hFTUFfRVhURU5TSU9OUyxcbiAgaXNBbGxvd2VkU2NoZW1hRmlsZUV4dGVuc2lvbixcbiAgcmVnaXN0ZXJTY2hlbWEsXG59IGZyb20gJy4uL3NjaGVtYS9zY2hlbWEnO1xuXG5jb25zdCBJTlNUQUxMX1RZUEVfTlBNID0gJ25wbSc7XG5jb25zdCBJTlNUQUxMX1RZUEVfTE9DQUwgPSAnbG9jYWwnO1xuY29uc3QgSU5TVEFMTF9UWVBFX0dJVEhVQiA9ICdnaXRodWInO1xuY29uc3QgSU5TVEFMTF9UWVBFX0dJVCA9ICdnaXQnO1xuXG4vKiogQHR5cGUge1NldDxJbnN0YWxsVHlwZT59ICovXG5jb25zdCBJTlNUQUxMX1RZUEVTID0gbmV3IFNldChbXG4gIElOU1RBTExfVFlQRV9HSVQsXG4gIElOU1RBTExfVFlQRV9HSVRIVUIsXG4gIElOU1RBTExfVFlQRV9MT0NBTCxcbiAgSU5TVEFMTF9UWVBFX05QTSxcbl0pO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgYWJzdHJhY3QuIEl0IHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LlxuICpcbiAqIFN1YmNsYXNzZXMgc2hvdWxkIHByb3ZpZGUgdGhlIGdlbmVyaWMgcGFyYW1ldGVyIHRvIGltcGxlbWVudC5cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5zaW9uQ29uZmlnIHtcbiAgLyoqIEB0eXBlIHtFeHRUeXBlfSAqL1xuICBleHRlbnNpb25UeXBlO1xuXG4gIC8qKiBAdHlwZSB7YCR7RXh0VHlwZX1zYH0gKi9cbiAgY29uZmlnS2V5O1xuXG4gIC8qKiBAdHlwZSB7RXh0UmVjb3JkPEV4dFR5cGU+fSAqL1xuICBpbnN0YWxsZWRFeHRlbnNpb25zO1xuXG4gIC8qKiBAdHlwZSB7RXh0ZW5zaW9uTG9nRm59ICovXG4gIGxvZztcblxuICAvKiogQHR5cGUge01hbmlmZXN0fSAqL1xuICBtYW5pZmVzdDtcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dGVuc2lvblR5cGUgLSBUeXBlIG9mIGV4dGVuc2lvblxuICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdCAtIGBNYW5pZmVzdGAgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtFeHRlbnNpb25Mb2dGbn0gW2xvZ0ZuXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKGV4dGVuc2lvblR5cGUsIG1hbmlmZXN0LCBsb2dGbikge1xuICAgIGNvbnN0IGxvZ2dlciA9IF8uaXNGdW5jdGlvbihsb2dGbikgPyBsb2dGbiA6IGxvZy5lcnJvci5iaW5kKGxvZyk7XG4gICAgdGhpcy5leHRlbnNpb25UeXBlID0gZXh0ZW5zaW9uVHlwZTtcbiAgICB0aGlzLmNvbmZpZ0tleSA9IGAke2V4dGVuc2lvblR5cGV9c2A7XG4gICAgdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zID0gbWFuaWZlc3QuZ2V0RXh0ZW5zaW9uRGF0YShleHRlbnNpb25UeXBlKTtcbiAgICB0aGlzLmxvZyA9IGxvZ2dlcjtcbiAgICB0aGlzLm1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gIH1cblxuICBnZXQgbWFuaWZlc3RQYXRoICgpIHtcbiAgICByZXR1cm4gdGhpcy5tYW5pZmVzdC5tYW5pZmVzdFBhdGg7XG4gIH1cblxuICBnZXQgYXBwaXVtSG9tZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFuaWZlc3QuYXBwaXVtSG9tZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZXh0ZW5zaW9ucyBmb3IgcHJvYmxlbXNcbiAgICogQHBhcmFtIHtFeHRSZWNvcmQ8RXh0VHlwZT59IGV4dHMgLSBFeHRlbnNpb24gZGF0YVxuICAgKi9cbiAgdmFsaWRhdGUgKGV4dHMpIHtcbiAgICBjb25zdCBmb3VuZFByb2JsZW1zID1cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPEV4dE5hbWU8RXh0VHlwZT4sUHJvYmxlbVtdPn0gKi8gKHt9KTtcbiAgICBmb3IgKGNvbnN0IFtcbiAgICAgIGV4dE5hbWUsXG4gICAgICBleHREYXRhLFxuICAgIF0gb2YgLyoqIEB0eXBlIHtbRXh0TmFtZTxFeHRUeXBlPiwgRXh0TWFuaWZlc3Q8RXh0VHlwZT5dW119ICovIChcbiAgICAgICAgXy50b1BhaXJzKGV4dHMpXG4gICAgICApKSB7XG4gICAgICBmb3VuZFByb2JsZW1zW2V4dE5hbWVdID0gW1xuICAgICAgICAuLi50aGlzLmdldEdlbmVyaWNDb25maWdQcm9ibGVtcyhleHREYXRhLCBleHROYW1lKSxcbiAgICAgICAgLi4udGhpcy5nZXRDb25maWdQcm9ibGVtcyhleHREYXRhKSxcbiAgICAgICAgLi4udGhpcy5nZXRTY2hlbWFQcm9ibGVtcyhleHREYXRhLCBleHROYW1lKSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3QgcHJvYmxlbVN1bW1hcmllcyA9IFtdO1xuICAgIGZvciAoY29uc3QgW2V4dE5hbWUsIHByb2JsZW1zXSBvZiBfLnRvUGFpcnMoZm91bmRQcm9ibGVtcykpIHtcbiAgICAgIGlmIChfLmlzRW1wdHkocHJvYmxlbXMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gcmVtb3ZlIHRoaXMgZXh0ZW5zaW9uIGZyb20gdGhlIGxpc3Qgc2luY2UgaXQncyBub3QgdmFsaWRcbiAgICAgIGRlbGV0ZSBleHRzW2V4dE5hbWVdO1xuICAgICAgcHJvYmxlbVN1bW1hcmllcy5wdXNoKFxuICAgICAgICBgJHt0aGlzLmV4dGVuc2lvblR5cGV9ICR7ZXh0TmFtZX0gaGFkIGVycm9ycyBhbmQgd2lsbCBub3QgYCArXG4gICAgICAgICAgYGJlIGF2YWlsYWJsZS4gRXJyb3JzOmAsXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBwcm9ibGVtIG9mIHByb2JsZW1zKSB7XG4gICAgICAgIHByb2JsZW1TdW1tYXJpZXMucHVzaChcbiAgICAgICAgICBgICAtICR7cHJvYmxlbS5lcnJ9IChBY3R1YWwgdmFsdWU6IGAgK1xuICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkocHJvYmxlbS52YWwpfSlgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghXy5pc0VtcHR5KHByb2JsZW1TdW1tYXJpZXMpKSB7XG4gICAgICB0aGlzLmxvZyhcbiAgICAgICAgYEFwcGl1bSBlbmNvdW50ZXJlZCBvbmUgb3IgbW9yZSBlcnJvcnMgd2hpbGUgdmFsaWRhdGluZyBgICtcbiAgICAgICAgICBgdGhlICR7dGhpcy5jb25maWdLZXl9IGV4dGVuc2lvbiBmaWxlICgke3RoaXMubWFuaWZlc3RQYXRofSk6YCxcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHN1bW1hcnkgb2YgcHJvYmxlbVN1bW1hcmllcykge1xuICAgICAgICB0aGlzLmxvZyhzdW1tYXJ5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXh0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhXG4gICAqIEBwYXJhbSB7RXh0TmFtZTxFeHRUeXBlPn0gZXh0TmFtZVxuICAgKiBAcmV0dXJucyB7UHJvYmxlbVtdfVxuICAgKi9cbiAgZ2V0U2NoZW1hUHJvYmxlbXMgKGV4dERhdGEsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBwcm9ibGVtcyA9IFtdO1xuICAgIGNvbnN0IHtzY2hlbWE6IGFyZ1NjaGVtYVBhdGh9ID0gZXh0RGF0YTtcbiAgICBpZiAoRXh0ZW5zaW9uQ29uZmlnLmV4dERhdGFIYXNTY2hlbWEoZXh0RGF0YSkpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKGFyZ1NjaGVtYVBhdGgpKSB7XG4gICAgICAgIGlmIChpc0FsbG93ZWRTY2hlbWFGaWxlRXh0ZW5zaW9uKGFyZ1NjaGVtYVBhdGgpKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucmVhZEV4dGVuc2lvblNjaGVtYShleHROYW1lLCBleHREYXRhKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgICAgICBlcnI6IGBVbmFibGUgdG8gcmVnaXN0ZXIgc2NoZW1hIGF0IHBhdGggJHthcmdTY2hlbWFQYXRofTsgJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICAgICB2YWw6IGFyZ1NjaGVtYVBhdGgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICAgICBlcnI6IGBTY2hlbWEgZmlsZSBoYXMgdW5zdXBwb3J0ZWQgZXh0ZW5zaW9uLiBBbGxvd2VkOiAke1tcbiAgICAgICAgICAgICAgLi4uQUxMT1dFRF9TQ0hFTUFfRVhURU5TSU9OUyxcbiAgICAgICAgICAgIF0uam9pbignLCAnKX1gLFxuICAgICAgICAgICAgdmFsOiBhcmdTY2hlbWFQYXRoLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChhcmdTY2hlbWFQYXRoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMucmVhZEV4dGVuc2lvblNjaGVtYShleHROYW1lLCBleHREYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICAgICBlcnI6IGBVbmFibGUgdG8gcmVnaXN0ZXIgZW1iZWRkZWQgc2NoZW1hOyAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgICB2YWw6IGFyZ1NjaGVtYVBhdGgsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgIGVycjogJ0luY29ycmVjdGx5IGZvcm1hdHRlZCBzY2hlbWEgZmllbGQ7IG11c3QgYmUgYSBwYXRoIHRvIGEgc2NoZW1hIGZpbGUgb3IgYSBzY2hlbWEgb2JqZWN0LicsXG4gICAgICAgICAgdmFsOiBhcmdTY2hlbWFQYXRoLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByb2JsZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RXh0VHlwZT59IGV4dERhdGFcbiAgICogQHBhcmFtIHtFeHROYW1lPEV4dFR5cGU+fSBleHROYW1lXG4gICAqIEByZXR1cm5zIHtQcm9ibGVtW119XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0R2VuZXJpY0NvbmZpZ1Byb2JsZW1zIChleHREYXRhLCBleHROYW1lKSB7XG4gICAgY29uc3Qge3ZlcnNpb24sIHBrZ05hbWUsIGluc3RhbGxTcGVjLCBpbnN0YWxsVHlwZSwgbWFpbkNsYXNzfSA9XG4gICAgICBleHREYXRhO1xuICAgIGNvbnN0IHByb2JsZW1zID0gW107XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcodmVyc2lvbikpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe2VycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IHZlcnNpb24nLCB2YWw6IHZlcnNpb259KTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcocGtnTmFtZSkpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICBlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBOUE0gcGFja2FnZSBuYW1lJyxcbiAgICAgICAgdmFsOiBwa2dOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKGluc3RhbGxTcGVjKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgIGVycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IGluc3RhbGxhdGlvbiBzcGVjJyxcbiAgICAgICAgdmFsOiBpbnN0YWxsU3BlYyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghSU5TVEFMTF9UWVBFUy5oYXMoaW5zdGFsbFR5cGUpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgaW5zdGFsbCB0eXBlJyxcbiAgICAgICAgdmFsOiBpbnN0YWxsVHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghXy5pc1N0cmluZyhtYWluQ2xhc3MpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgZHJpdmVyIGNsYXNzIG5hbWUnLFxuICAgICAgICB2YWw6IG1haW5DbGFzcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9ibGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxFeHRUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7UHJvYmxlbVtdfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldENvbmZpZ1Byb2JsZW1zIChleHREYXRhKSB7XG4gICAgLy8gc2hvdWQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgc3BlY2lhbCB2YWxpZGF0aW9uIGlzIG5lY2Vzc2FyeSBmb3IgdGhpcyBleHRlbnNpb24gdHlwZVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZVxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uQ29uZmlnTXV0YXRpb25PcHRzfSBbb3B0c11cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBhZGRFeHRlbnNpb24gKGV4dE5hbWUsIGV4dERhdGEsIHt3cml0ZSA9IHRydWV9ID0ge30pIHtcbiAgICB0aGlzLm1hbmlmZXN0LmFkZEV4dGVuc2lvbih0aGlzLmV4dGVuc2lvblR5cGUsIGV4dE5hbWUsIGV4dERhdGEpO1xuICAgIGlmICh3cml0ZSkge1xuICAgICAgYXdhaXQgdGhpcy5tYW5pZmVzdC53cml0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWVcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxFeHRUeXBlPnxpbXBvcnQoJy4uL2NsaS9leHRlbnNpb24tY29tbWFuZCcpLkV4dGVuc2lvbkZpZWxkczxFeHRUeXBlPn0gZXh0RGF0YVxuICAgKiBAcGFyYW0ge0V4dGVuc2lvbkNvbmZpZ011dGF0aW9uT3B0c30gW29wdHNdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgdXBkYXRlRXh0ZW5zaW9uIChleHROYW1lLCBleHREYXRhLCB7d3JpdGUgPSB0cnVlfSA9IHt9KSB7XG4gICAgdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdID0ge1xuICAgICAgLi4udGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdLFxuICAgICAgLi4uZXh0RGF0YSxcbiAgICB9O1xuICAgIGlmICh3cml0ZSkge1xuICAgICAgYXdhaXQgdGhpcy5tYW5pZmVzdC53cml0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25Db25maWdNdXRhdGlvbk9wdHN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHJlbW92ZUV4dGVuc2lvbiAoZXh0TmFtZSwge3dyaXRlID0gdHJ1ZX0gPSB7fSkge1xuICAgIGRlbGV0ZSB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV07XG4gICAgaWYgKHdyaXRlKSB7XG4gICAgICBhd2FpdCB0aGlzLm1hbmlmZXN0LndyaXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXh0TmFtZTxFeHRUeXBlPltdfSBbYWN0aXZlTmFtZXNdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHByaW50IChhY3RpdmVOYW1lcykge1xuICAgIGlmIChfLmlzRW1wdHkodGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBObyAke3RoaXMuY29uZmlnS2V5fSBoYXZlIGJlZW4gaW5zdGFsbGVkIGluICR7dGhpcy5hcHBpdW1Ib21lfS4gVXNlIHRoZSBcImFwcGl1bSAke3RoaXMuZXh0ZW5zaW9uVHlwZX1cIiBgICtcbiAgICAgICAgICAnY29tbWFuZCB0byBpbnN0YWxsIHRoZSBvbmUocykgeW91IHdhbnQgdG8gdXNlLicsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBBdmFpbGFibGUgJHt0aGlzLmNvbmZpZ0tleX06YCk7XG4gICAgZm9yIChjb25zdCBbXG4gICAgICBleHROYW1lLFxuICAgICAgZXh0RGF0YSxcbiAgICBdIG9mIC8qKiBAdHlwZSB7W3N0cmluZywgRXh0TWFuaWZlc3Q8RXh0VHlwZT5dW119ICovIChcbiAgICAgICAgXy50b1BhaXJzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgICkpIHtcbiAgICAgIGxvZy5pbmZvKGAgIC0gJHt0aGlzLmV4dGVuc2lvbkRlc2MoZXh0TmFtZSwgZXh0RGF0YSl9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZXh0ZW5zaW9uLiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50LlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWUgLSBFeHRlbnNpb24gbmFtZVxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhIC0gRXh0ZW5zaW9uIGRhdGFcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogQGFic3RyYWN0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZXh0ZW5zaW9uRGVzYyAoZXh0TmFtZSwgZXh0RGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBtdXN0IGJlIGltcGxlbWVudGVkIGluIGEgc3ViY2xhc3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0SW5zdGFsbFBhdGggKGV4dE5hbWUpIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuYXBwaXVtSG9tZSwgJ25vZGVfbW9kdWxlcycsIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHROYW1lXS5wa2dOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBleHRlbnNpb24gYW5kIHJldHVybnMgaXRzIG1haW4gY2xhc3MgKGNvbnN0cnVjdG9yKVxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWVcbiAgICogQHJldHVybnMge0V4dENsYXNzPEV4dFR5cGU+fVxuICAgKi9cbiAgcmVxdWlyZSAoZXh0TmFtZSkge1xuICAgIGNvbnN0IHttYWluQ2xhc3N9ID0gdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdO1xuICAgIGNvbnN0IHJlcVBhdGggPSB0aGlzLmdldEluc3RhbGxQYXRoKGV4dE5hbWUpO1xuICAgIGNvbnN0IHJlcVJlc29sdmVkID0gcmVxdWlyZS5yZXNvbHZlKHJlcVBhdGgpO1xuICAgIC8vIG5vdGU6IHRoaXMgd2lsbCBvbmx5IHJlbG9hZCB0aGUgZW50cnkgcG9pbnRcbiAgICBpZiAocHJvY2Vzcy5lbnYuQVBQSVVNX1JFTE9BRF9FWFRFTlNJT05TICYmIHJlcXVpcmUuY2FjaGVbcmVxUmVzb2x2ZWRdKSB7XG4gICAgICBsb2cuZGVidWcoYFJlbW92aW5nICR7cmVxUmVzb2x2ZWR9IGZyb20gcmVxdWlyZSBjYWNoZWApO1xuICAgICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbcmVxUmVzb2x2ZWRdO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYFJlcXVpcmluZyAke3RoaXMuZXh0ZW5zaW9uVHlwZX0gYXQgJHtyZXFQYXRofWApO1xuICAgIHJldHVybiByZXF1aXJlKHJlcVBhdGgpW21haW5DbGFzc107XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc0luc3RhbGxlZCAoZXh0TmFtZSkge1xuICAgIHJldHVybiBfLmluY2x1ZGVzKE9iamVjdC5rZXlzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyksIGV4dE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb3JyZXNwb25kaW5nIGluc3RhbmNlIG1ldGhvZHMgb2Ygc3ViY2xhc3MuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHROYW1lPEV4dFR5cGU+fSBleHROYW1lIC0gRXh0ZW5zaW9uIG5hbWUgKHVuaXF1ZSB0byBpdHMgdHlwZSlcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdFdpdGhTY2hlbWE8RXh0VHlwZT59IGV4dERhdGEgLSBFeHRlbnNpb24gY29uZmlnXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJ2FqdicpLlNjaGVtYU9iamVjdHx1bmRlZmluZWR9XG4gICAqL1xuICBzdGF0aWMgX3JlYWRFeHRlbnNpb25TY2hlbWEgKGFwcGl1bUhvbWUsIGV4dFR5cGUsIGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICBjb25zdCB7cGtnTmFtZSwgc2NoZW1hOiBhcmdTY2hlbWFQYXRofSA9IGV4dERhdGE7XG4gICAgaWYgKCFhcmdTY2hlbWFQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgTm8gXFxgc2NoZW1hXFxgIHByb3BlcnR5IGZvdW5kIGluIGNvbmZpZyBmb3IgJHtleHRUeXBlfSAke3BrZ05hbWV9IC0tIHdoeSBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD9gLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IG1vZHVsZU9iamVjdDtcbiAgICBpZiAoXy5pc1N0cmluZyhhcmdTY2hlbWFQYXRoKSkge1xuICAgICAgY29uc3Qgc2NoZW1hUGF0aCA9IHJlc29sdmVGcm9tKGFwcGl1bUhvbWUsIHBhdGguam9pbihwa2dOYW1lLCBhcmdTY2hlbWFQYXRoKSk7XG4gICAgICBtb2R1bGVPYmplY3QgPSByZXF1aXJlKHNjaGVtYVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb2R1bGVPYmplY3QgPSBhcmdTY2hlbWFQYXRoO1xuICAgIH1cbiAgICAvLyB0aGlzIHN1Y2tzLiBkZWZhdWx0IGV4cG9ydHMgc2hvdWxkIGJlIGRlc3Ryb3llZFxuICAgIGNvbnN0IHNjaGVtYSA9IG1vZHVsZU9iamVjdC5fX2VzTW9kdWxlXG4gICAgICA/IG1vZHVsZU9iamVjdC5kZWZhdWx0XG4gICAgICA6IG1vZHVsZU9iamVjdDtcbiAgICByZWdpc3RlclNjaGVtYShleHRUeXBlLCBleHROYW1lLCBzY2hlbWEpO1xuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgYSBzcGVjaWZpYyB7QGxpbmsgRXh0TWFuaWZlc3R9IG9iamVjdCBoYXMgYSBgc2NoZW1hYCBwcm9wLlxuICAgKiBUaGUge0BsaW5rIEV4dE1hbmlmZXN0fSBvYmplY3QgYmVjb21lcyBhIHtAbGluayBFeHRNYW5pZmVzdFdpdGhTY2hlbWF9IG9iamVjdC5cbiAgICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RXh0VHlwZT59IGV4dERhdGFcbiAgICogQHJldHVybnMge2V4dERhdGEgaXMgRXh0TWFuaWZlc3RXaXRoU2NoZW1hPEV4dFR5cGU+fVxuICAgKi9cbiAgc3RhdGljIGV4dERhdGFIYXNTY2hlbWEgKGV4dERhdGEpIHtcbiAgICByZXR1cm4gXy5pc1N0cmluZyhleHREYXRhPy5zY2hlbWEpIHx8IF8uaXNPYmplY3QoZXh0RGF0YT8uc2NoZW1hKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhbiBleHRlbnNpb24gcHJvdmlkZXMgYSBzY2hlbWEsIHRoaXMgd2lsbCBsb2FkIHRoZSBzY2hlbWEgYW5kIGF0dGVtcHQgdG9cbiAgICogcmVnaXN0ZXIgaXQgd2l0aCB0aGUgc2NoZW1hIHJlZ2lzdHJhci5cbiAgICogQHBhcmFtIHtFeHROYW1lPEV4dFR5cGU+fSBleHROYW1lIC0gTmFtZSBvZiBleHRlbnNpb25cbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdFdpdGhTY2hlbWE8RXh0VHlwZT59IGV4dERhdGEgLSBFeHRlbnNpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCdhanYnKS5TY2hlbWFPYmplY3R8dW5kZWZpbmVkfVxuICAgKi9cbiAgcmVhZEV4dGVuc2lvblNjaGVtYSAoZXh0TmFtZSwgZXh0RGF0YSkge1xuICAgIHJldHVybiBFeHRlbnNpb25Db25maWcuX3JlYWRFeHRlbnNpb25TY2hlbWEoXG4gICAgICB0aGlzLmFwcGl1bUhvbWUsXG4gICAgICB0aGlzLmV4dGVuc2lvblR5cGUsXG4gICAgICBleHROYW1lLFxuICAgICAgZXh0RGF0YSxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIElOU1RBTExfVFlQRV9OUE0sXG4gIElOU1RBTExfVFlQRV9HSVQsXG4gIElOU1RBTExfVFlQRV9MT0NBTCxcbiAgSU5TVEFMTF9UWVBFX0dJVEhVQixcbiAgSU5TVEFMTF9UWVBFUyxcbn07XG5cbi8qKlxuICogQ29uZmlnIHByb2JsZW1cbiAqIEB0eXBlZGVmIFByb2JsZW1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBlcnIgLSBFcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge2FueX0gdmFsIC0gQXNzb2NpYXRlZCB2YWx1ZVxuICovXG5cbi8qKlxuICogQW4gb3B0aW9uYWwgbG9nZ2luZyBmdW5jdGlvbiBwcm92aWRlZCB0byBhbiB7QGxpbmsgRXh0ZW5zaW9uQ29uZmlnfSBzdWJjbGFzcy5cbiAqIEBjYWxsYmFjayBFeHRlbnNpb25Mb2dGblxuICogQHBhcmFtIHsuLi5hbnl9IGFyZ3NcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0TWFuaWZlc3RXaXRoU2NoZW1hPFQ+fSBFeHRNYW5pZmVzdFdpdGhTY2hlbWFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5FeHROYW1lPFQ+fSBFeHROYW1lXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvZXh0ZW5zaW9uJykuRXh0Q2xhc3M8VD59IEV4dENsYXNzXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0UmVjb3JkPFQ+fSBFeHRSZWNvcmRcbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHZhcmlvdXMgbWV0aG9kcyBpbiB7QGxpbmsgRXh0ZW5zaW9uQ29uZmlnfVxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29uZmlnTXV0YXRpb25PcHRzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFt3cml0ZT10cnVlXSBXaGV0aGVyIG9yIG5vdCB0byB3cml0ZSB0aGUgbWFuaWZlc3QgdG8gZGlzayBhZnRlciBhIG11dGF0aW9uIG9wZXJhdGlvblxuICovXG5cbi8qKlxuICogQSB2YWxpZCBpbnN0YWxsIHR5cGVcbiAqIEB0eXBlZGVmIHt0eXBlb2YgSU5TVEFMTF9UWVBFX05QTSB8IHR5cGVvZiBJTlNUQUxMX1RZUEVfR0lUIHwgdHlwZW9mIElOU1RBTExfVFlQRV9MT0NBTCB8IHR5cGVvZiBJTlNUQUxMX1RZUEVfR0lUSFVCfSBJbnN0YWxsVHlwZVxuICovXG4iXX0=
297
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlNUQUxMX1RZUEVfTlBNIiwiSU5TVEFMTF9UWVBFX0xPQ0FMIiwiSU5TVEFMTF9UWVBFX0dJVEhVQiIsIklOU1RBTExfVFlQRV9HSVQiLCJJTlNUQUxMX1RZUEVTIiwiU2V0IiwiRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uVHlwZSIsImNvbmZpZ0tleSIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJsb2ciLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yIiwibG9nRm4iLCJsb2dnZXIiLCJfIiwiaXNGdW5jdGlvbiIsImVycm9yIiwiYmluZCIsImdldEV4dGVuc2lvbkRhdGEiLCJtYW5pZmVzdFBhdGgiLCJhcHBpdW1Ib21lIiwidmFsaWRhdGUiLCJleHRzIiwiZm91bmRQcm9ibGVtcyIsImV4dE5hbWUiLCJleHREYXRhIiwidG9QYWlycyIsImdldEdlbmVyaWNDb25maWdQcm9ibGVtcyIsImdldENvbmZpZ1Byb2JsZW1zIiwiZ2V0U2NoZW1hUHJvYmxlbXMiLCJwcm9ibGVtU3VtbWFyaWVzIiwicHJvYmxlbXMiLCJpc0VtcHR5IiwicHVzaCIsInByb2JsZW0iLCJlcnIiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsIiwic3VtbWFyeSIsInNjaGVtYSIsImFyZ1NjaGVtYVBhdGgiLCJleHREYXRhSGFzU2NoZW1hIiwiaXNTdHJpbmciLCJyZWFkRXh0ZW5zaW9uU2NoZW1hIiwibWVzc2FnZSIsIkFMTE9XRURfU0NIRU1BX0VYVEVOU0lPTlMiLCJqb2luIiwiaXNQbGFpbk9iamVjdCIsInZlcnNpb24iLCJwa2dOYW1lIiwiaW5zdGFsbFNwZWMiLCJpbnN0YWxsVHlwZSIsIm1haW5DbGFzcyIsImhhcyIsImFkZEV4dGVuc2lvbiIsIndyaXRlIiwidXBkYXRlRXh0ZW5zaW9uIiwicmVtb3ZlRXh0ZW5zaW9uIiwicHJpbnQiLCJhY3RpdmVOYW1lcyIsImluZm8iLCJleHRlbnNpb25EZXNjIiwiRXJyb3IiLCJnZXRJbnN0YWxsUGF0aCIsInBhdGgiLCJyZXF1aXJlIiwicmVxUGF0aCIsInJlcVJlc29sdmVkIiwicmVzb2x2ZSIsInByb2Nlc3MiLCJlbnYiLCJBUFBJVU1fUkVMT0FEX0VYVEVOU0lPTlMiLCJjYWNoZSIsImRlYnVnIiwiaXNJbnN0YWxsZWQiLCJpbmNsdWRlcyIsIk9iamVjdCIsImtleXMiLCJfcmVhZEV4dGVuc2lvblNjaGVtYSIsImV4dFR5cGUiLCJUeXBlRXJyb3IiLCJtb2R1bGVPYmplY3QiLCJzY2hlbWFQYXRoIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpc09iamVjdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCByZXNvbHZlRnJvbSBmcm9tICdyZXNvbHZlLWZyb20nO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQUxMT1dFRF9TQ0hFTUFfRVhURU5TSU9OUyxcbiAgaXNBbGxvd2VkU2NoZW1hRmlsZUV4dGVuc2lvbixcbiAgcmVnaXN0ZXJTY2hlbWEsXG59IGZyb20gJy4uL3NjaGVtYS9zY2hlbWEnO1xuXG5jb25zdCBJTlNUQUxMX1RZUEVfTlBNID0gJ25wbSc7XG5jb25zdCBJTlNUQUxMX1RZUEVfTE9DQUwgPSAnbG9jYWwnO1xuY29uc3QgSU5TVEFMTF9UWVBFX0dJVEhVQiA9ICdnaXRodWInO1xuY29uc3QgSU5TVEFMTF9UWVBFX0dJVCA9ICdnaXQnO1xuXG4vKiogQHR5cGUge1NldDxJbnN0YWxsVHlwZT59ICovXG5jb25zdCBJTlNUQUxMX1RZUEVTID0gbmV3IFNldChbXG4gIElOU1RBTExfVFlQRV9HSVQsXG4gIElOU1RBTExfVFlQRV9HSVRIVUIsXG4gIElOU1RBTExfVFlQRV9MT0NBTCxcbiAgSU5TVEFMTF9UWVBFX05QTSxcbl0pO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgYWJzdHJhY3QuIEl0IHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LlxuICpcbiAqIFN1YmNsYXNzZXMgc2hvdWxkIHByb3ZpZGUgdGhlIGdlbmVyaWMgcGFyYW1ldGVyIHRvIGltcGxlbWVudC5cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5zaW9uQ29uZmlnIHtcbiAgLyoqIEB0eXBlIHtFeHRUeXBlfSAqL1xuICBleHRlbnNpb25UeXBlO1xuXG4gIC8qKiBAdHlwZSB7YCR7RXh0VHlwZX1zYH0gKi9cbiAgY29uZmlnS2V5O1xuXG4gIC8qKiBAdHlwZSB7RXh0UmVjb3JkPEV4dFR5cGU+fSAqL1xuICBpbnN0YWxsZWRFeHRlbnNpb25zO1xuXG4gIC8qKiBAdHlwZSB7RXh0ZW5zaW9uTG9nRm59ICovXG4gIGxvZztcblxuICAvKiogQHR5cGUge01hbmlmZXN0fSAqL1xuICBtYW5pZmVzdDtcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dGVuc2lvblR5cGUgLSBUeXBlIG9mIGV4dGVuc2lvblxuICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdCAtIGBNYW5pZmVzdGAgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtFeHRlbnNpb25Mb2dGbn0gW2xvZ0ZuXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKGV4dGVuc2lvblR5cGUsIG1hbmlmZXN0LCBsb2dGbikge1xuICAgIGNvbnN0IGxvZ2dlciA9IF8uaXNGdW5jdGlvbihsb2dGbikgPyBsb2dGbiA6IGxvZy5lcnJvci5iaW5kKGxvZyk7XG4gICAgdGhpcy5leHRlbnNpb25UeXBlID0gZXh0ZW5zaW9uVHlwZTtcbiAgICB0aGlzLmNvbmZpZ0tleSA9IGAke2V4dGVuc2lvblR5cGV9c2A7XG4gICAgdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zID0gbWFuaWZlc3QuZ2V0RXh0ZW5zaW9uRGF0YShleHRlbnNpb25UeXBlKTtcbiAgICB0aGlzLmxvZyA9IGxvZ2dlcjtcbiAgICB0aGlzLm1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gIH1cblxuICBnZXQgbWFuaWZlc3RQYXRoICgpIHtcbiAgICByZXR1cm4gdGhpcy5tYW5pZmVzdC5tYW5pZmVzdFBhdGg7XG4gIH1cblxuICBnZXQgYXBwaXVtSG9tZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFuaWZlc3QuYXBwaXVtSG9tZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZXh0ZW5zaW9ucyBmb3IgcHJvYmxlbXNcbiAgICogQHBhcmFtIHtFeHRSZWNvcmQ8RXh0VHlwZT59IGV4dHMgLSBFeHRlbnNpb24gZGF0YVxuICAgKi9cbiAgdmFsaWRhdGUgKGV4dHMpIHtcbiAgICBjb25zdCBmb3VuZFByb2JsZW1zID1cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPEV4dE5hbWU8RXh0VHlwZT4sUHJvYmxlbVtdPn0gKi8gKHt9KTtcbiAgICBmb3IgKGNvbnN0IFtcbiAgICAgIGV4dE5hbWUsXG4gICAgICBleHREYXRhLFxuICAgIF0gb2YgLyoqIEB0eXBlIHtbRXh0TmFtZTxFeHRUeXBlPiwgRXh0TWFuaWZlc3Q8RXh0VHlwZT5dW119ICovIChcbiAgICAgICAgXy50b1BhaXJzKGV4dHMpXG4gICAgICApKSB7XG4gICAgICBmb3VuZFByb2JsZW1zW2V4dE5hbWVdID0gW1xuICAgICAgICAuLi50aGlzLmdldEdlbmVyaWNDb25maWdQcm9ibGVtcyhleHREYXRhLCBleHROYW1lKSxcbiAgICAgICAgLi4udGhpcy5nZXRDb25maWdQcm9ibGVtcyhleHREYXRhKSxcbiAgICAgICAgLi4udGhpcy5nZXRTY2hlbWFQcm9ibGVtcyhleHREYXRhLCBleHROYW1lKSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3QgcHJvYmxlbVN1bW1hcmllcyA9IFtdO1xuICAgIGZvciAoY29uc3QgW2V4dE5hbWUsIHByb2JsZW1zXSBvZiBfLnRvUGFpcnMoZm91bmRQcm9ibGVtcykpIHtcbiAgICAgIGlmIChfLmlzRW1wdHkocHJvYmxlbXMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gcmVtb3ZlIHRoaXMgZXh0ZW5zaW9uIGZyb20gdGhlIGxpc3Qgc2luY2UgaXQncyBub3QgdmFsaWRcbiAgICAgIGRlbGV0ZSBleHRzW2V4dE5hbWVdO1xuICAgICAgcHJvYmxlbVN1bW1hcmllcy5wdXNoKFxuICAgICAgICBgJHt0aGlzLmV4dGVuc2lvblR5cGV9ICR7ZXh0TmFtZX0gaGFkIGVycm9ycyBhbmQgd2lsbCBub3QgYCArXG4gICAgICAgICAgYGJlIGF2YWlsYWJsZS4gRXJyb3JzOmAsXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBwcm9ibGVtIG9mIHByb2JsZW1zKSB7XG4gICAgICAgIHByb2JsZW1TdW1tYXJpZXMucHVzaChcbiAgICAgICAgICBgICAtICR7cHJvYmxlbS5lcnJ9IChBY3R1YWwgdmFsdWU6IGAgK1xuICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkocHJvYmxlbS52YWwpfSlgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghXy5pc0VtcHR5KHByb2JsZW1TdW1tYXJpZXMpKSB7XG4gICAgICB0aGlzLmxvZyhcbiAgICAgICAgYEFwcGl1bSBlbmNvdW50ZXJlZCBvbmUgb3IgbW9yZSBlcnJvcnMgd2hpbGUgdmFsaWRhdGluZyBgICtcbiAgICAgICAgICBgdGhlICR7dGhpcy5jb25maWdLZXl9IGV4dGVuc2lvbiBmaWxlICgke3RoaXMubWFuaWZlc3RQYXRofSk6YCxcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHN1bW1hcnkgb2YgcHJvYmxlbVN1bW1hcmllcykge1xuICAgICAgICB0aGlzLmxvZyhzdW1tYXJ5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXh0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhXG4gICAqIEBwYXJhbSB7RXh0TmFtZTxFeHRUeXBlPn0gZXh0TmFtZVxuICAgKiBAcmV0dXJucyB7UHJvYmxlbVtdfVxuICAgKi9cbiAgZ2V0U2NoZW1hUHJvYmxlbXMgKGV4dERhdGEsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBwcm9ibGVtcyA9IFtdO1xuICAgIGNvbnN0IHtzY2hlbWE6IGFyZ1NjaGVtYVBhdGh9ID0gZXh0RGF0YTtcbiAgICBpZiAoRXh0ZW5zaW9uQ29uZmlnLmV4dERhdGFIYXNTY2hlbWEoZXh0RGF0YSkpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKGFyZ1NjaGVtYVBhdGgpKSB7XG4gICAgICAgIGlmIChpc0FsbG93ZWRTY2hlbWFGaWxlRXh0ZW5zaW9uKGFyZ1NjaGVtYVBhdGgpKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucmVhZEV4dGVuc2lvblNjaGVtYShleHROYW1lLCBleHREYXRhKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgICAgICBlcnI6IGBVbmFibGUgdG8gcmVnaXN0ZXIgc2NoZW1hIGF0IHBhdGggJHthcmdTY2hlbWFQYXRofTsgJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICAgICB2YWw6IGFyZ1NjaGVtYVBhdGgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICAgICBlcnI6IGBTY2hlbWEgZmlsZSBoYXMgdW5zdXBwb3J0ZWQgZXh0ZW5zaW9uLiBBbGxvd2VkOiAke1tcbiAgICAgICAgICAgICAgLi4uQUxMT1dFRF9TQ0hFTUFfRVhURU5TSU9OUyxcbiAgICAgICAgICAgIF0uam9pbignLCAnKX1gLFxuICAgICAgICAgICAgdmFsOiBhcmdTY2hlbWFQYXRoLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChhcmdTY2hlbWFQYXRoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMucmVhZEV4dGVuc2lvblNjaGVtYShleHROYW1lLCBleHREYXRhKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICAgICBlcnI6IGBVbmFibGUgdG8gcmVnaXN0ZXIgZW1iZWRkZWQgc2NoZW1hOyAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgICB2YWw6IGFyZ1NjaGVtYVBhdGgsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgIGVycjogJ0luY29ycmVjdGx5IGZvcm1hdHRlZCBzY2hlbWEgZmllbGQ7IG11c3QgYmUgYSBwYXRoIHRvIGEgc2NoZW1hIGZpbGUgb3IgYSBzY2hlbWEgb2JqZWN0LicsXG4gICAgICAgICAgdmFsOiBhcmdTY2hlbWFQYXRoLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByb2JsZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RXh0VHlwZT59IGV4dERhdGFcbiAgICogQHBhcmFtIHtFeHROYW1lPEV4dFR5cGU+fSBleHROYW1lXG4gICAqIEByZXR1cm5zIHtQcm9ibGVtW119XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0R2VuZXJpY0NvbmZpZ1Byb2JsZW1zIChleHREYXRhLCBleHROYW1lKSB7XG4gICAgY29uc3Qge3ZlcnNpb24sIHBrZ05hbWUsIGluc3RhbGxTcGVjLCBpbnN0YWxsVHlwZSwgbWFpbkNsYXNzfSA9XG4gICAgICBleHREYXRhO1xuICAgIGNvbnN0IHByb2JsZW1zID0gW107XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcodmVyc2lvbikpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe2VycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IHZlcnNpb24nLCB2YWw6IHZlcnNpb259KTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcocGtnTmFtZSkpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICBlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBOUE0gcGFja2FnZSBuYW1lJyxcbiAgICAgICAgdmFsOiBwa2dOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKGluc3RhbGxTcGVjKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgIGVycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IGluc3RhbGxhdGlvbiBzcGVjJyxcbiAgICAgICAgdmFsOiBpbnN0YWxsU3BlYyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghSU5TVEFMTF9UWVBFUy5oYXMoaW5zdGFsbFR5cGUpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgaW5zdGFsbCB0eXBlJyxcbiAgICAgICAgdmFsOiBpbnN0YWxsVHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghXy5pc1N0cmluZyhtYWluQ2xhc3MpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgZHJpdmVyIGNsYXNzIG5hbWUnLFxuICAgICAgICB2YWw6IG1haW5DbGFzcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9ibGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxFeHRUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7UHJvYmxlbVtdfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldENvbmZpZ1Byb2JsZW1zIChleHREYXRhKSB7XG4gICAgLy8gc2hvdWQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgc3BlY2lhbCB2YWxpZGF0aW9uIGlzIG5lY2Vzc2FyeSBmb3IgdGhpcyBleHRlbnNpb24gdHlwZVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZVxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uQ29uZmlnTXV0YXRpb25PcHRzfSBbb3B0c11cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBhZGRFeHRlbnNpb24gKGV4dE5hbWUsIGV4dERhdGEsIHt3cml0ZSA9IHRydWV9ID0ge30pIHtcbiAgICB0aGlzLm1hbmlmZXN0LmFkZEV4dGVuc2lvbih0aGlzLmV4dGVuc2lvblR5cGUsIGV4dE5hbWUsIGV4dERhdGEpO1xuICAgIGlmICh3cml0ZSkge1xuICAgICAgYXdhaXQgdGhpcy5tYW5pZmVzdC53cml0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWVcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxFeHRUeXBlPnxpbXBvcnQoJy4uL2NsaS9leHRlbnNpb24tY29tbWFuZCcpLkV4dGVuc2lvbkZpZWxkczxFeHRUeXBlPn0gZXh0RGF0YVxuICAgKiBAcGFyYW0ge0V4dGVuc2lvbkNvbmZpZ011dGF0aW9uT3B0c30gW29wdHNdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgdXBkYXRlRXh0ZW5zaW9uIChleHROYW1lLCBleHREYXRhLCB7d3JpdGUgPSB0cnVlfSA9IHt9KSB7XG4gICAgdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdID0ge1xuICAgICAgLi4udGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdLFxuICAgICAgLi4uZXh0RGF0YSxcbiAgICB9O1xuICAgIGlmICh3cml0ZSkge1xuICAgICAgYXdhaXQgdGhpcy5tYW5pZmVzdC53cml0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25Db25maWdNdXRhdGlvbk9wdHN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHJlbW92ZUV4dGVuc2lvbiAoZXh0TmFtZSwge3dyaXRlID0gdHJ1ZX0gPSB7fSkge1xuICAgIGRlbGV0ZSB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0TmFtZV07XG4gICAgaWYgKHdyaXRlKSB7XG4gICAgICBhd2FpdCB0aGlzLm1hbmlmZXN0LndyaXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXh0TmFtZTxFeHRUeXBlPltdfSBbYWN0aXZlTmFtZXNdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIHByaW50IChhY3RpdmVOYW1lcykge1xuICAgIGlmIChfLmlzRW1wdHkodGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBObyAke3RoaXMuY29uZmlnS2V5fSBoYXZlIGJlZW4gaW5zdGFsbGVkIGluICR7dGhpcy5hcHBpdW1Ib21lfS4gVXNlIHRoZSBcImFwcGl1bSAke3RoaXMuZXh0ZW5zaW9uVHlwZX1cIiBgICtcbiAgICAgICAgICAnY29tbWFuZCB0byBpbnN0YWxsIHRoZSBvbmUocykgeW91IHdhbnQgdG8gdXNlLicsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBBdmFpbGFibGUgJHt0aGlzLmNvbmZpZ0tleX06YCk7XG4gICAgZm9yIChjb25zdCBbXG4gICAgICBleHROYW1lLFxuICAgICAgZXh0RGF0YSxcbiAgICBdIG9mIC8qKiBAdHlwZSB7W3N0cmluZywgRXh0TWFuaWZlc3Q8RXh0VHlwZT5dW119ICovIChcbiAgICAgICAgXy50b1BhaXJzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgICkpIHtcbiAgICAgIGxvZy5pbmZvKGAgIC0gJHt0aGlzLmV4dGVuc2lvbkRlc2MoZXh0TmFtZSwgZXh0RGF0YSl9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZXh0ZW5zaW9uLiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50LlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWUgLSBFeHRlbnNpb24gbmFtZVxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhIC0gRXh0ZW5zaW9uIGRhdGFcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogQGFic3RyYWN0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZXh0ZW5zaW9uRGVzYyAoZXh0TmFtZSwgZXh0RGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBtdXN0IGJlIGltcGxlbWVudGVkIGluIGEgc3ViY2xhc3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0SW5zdGFsbFBhdGggKGV4dE5hbWUpIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuYXBwaXVtSG9tZSwgJ25vZGVfbW9kdWxlcycsIHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHROYW1lXS5wa2dOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBleHRlbnNpb24gYW5kIHJldHVybnMgaXRzIG1haW4gY2xhc3MgKGNvbnN0cnVjdG9yKVxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RXh0VHlwZT59IGV4dE5hbWVcbiAgICogQHJldHVybnMge0V4dENsYXNzPEV4dFR5cGU+fVxuICAgKi9cbiAgcmVxdWlyZSAoZXh0TmFtZSkge1xuICAgIGNvbnN0IHttYWluQ2xhc3N9ID0gdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zW2V4dE5hbWVdO1xuICAgIGNvbnN0IHJlcVBhdGggPSB0aGlzLmdldEluc3RhbGxQYXRoKGV4dE5hbWUpO1xuICAgIGNvbnN0IHJlcVJlc29sdmVkID0gcmVxdWlyZS5yZXNvbHZlKHJlcVBhdGgpO1xuICAgIC8vIG5vdGU6IHRoaXMgd2lsbCBvbmx5IHJlbG9hZCB0aGUgZW50cnkgcG9pbnRcbiAgICBpZiAocHJvY2Vzcy5lbnYuQVBQSVVNX1JFTE9BRF9FWFRFTlNJT05TICYmIHJlcXVpcmUuY2FjaGVbcmVxUmVzb2x2ZWRdKSB7XG4gICAgICBsb2cuZGVidWcoYFJlbW92aW5nICR7cmVxUmVzb2x2ZWR9IGZyb20gcmVxdWlyZSBjYWNoZWApO1xuICAgICAgZGVsZXRlIHJlcXVpcmUuY2FjaGVbcmVxUmVzb2x2ZWRdO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYFJlcXVpcmluZyAke3RoaXMuZXh0ZW5zaW9uVHlwZX0gYXQgJHtyZXFQYXRofWApO1xuICAgIHJldHVybiByZXF1aXJlKHJlcVBhdGgpW21haW5DbGFzc107XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc0luc3RhbGxlZCAoZXh0TmFtZSkge1xuICAgIHJldHVybiBfLmluY2x1ZGVzKE9iamVjdC5rZXlzKHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucyksIGV4dE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb3JyZXNwb25kaW5nIGluc3RhbmNlIG1ldGhvZHMgb2Ygc3ViY2xhc3MuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHROYW1lPEV4dFR5cGU+fSBleHROYW1lIC0gRXh0ZW5zaW9uIG5hbWUgKHVuaXF1ZSB0byBpdHMgdHlwZSlcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdFdpdGhTY2hlbWE8RXh0VHlwZT59IGV4dERhdGEgLSBFeHRlbnNpb24gY29uZmlnXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJ2FqdicpLlNjaGVtYU9iamVjdHx1bmRlZmluZWR9XG4gICAqL1xuICBzdGF0aWMgX3JlYWRFeHRlbnNpb25TY2hlbWEgKGFwcGl1bUhvbWUsIGV4dFR5cGUsIGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICBjb25zdCB7cGtnTmFtZSwgc2NoZW1hOiBhcmdTY2hlbWFQYXRofSA9IGV4dERhdGE7XG4gICAgaWYgKCFhcmdTY2hlbWFQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgTm8gXFxgc2NoZW1hXFxgIHByb3BlcnR5IGZvdW5kIGluIGNvbmZpZyBmb3IgJHtleHRUeXBlfSAke3BrZ05hbWV9IC0tIHdoeSBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZD9gLFxuICAgICAgKTtcbiAgICB9XG4gICAgbGV0IG1vZHVsZU9iamVjdDtcbiAgICBpZiAoXy5pc1N0cmluZyhhcmdTY2hlbWFQYXRoKSkge1xuICAgICAgY29uc3Qgc2NoZW1hUGF0aCA9IHJlc29sdmVGcm9tKGFwcGl1bUhvbWUsIHBhdGguam9pbihwa2dOYW1lLCBhcmdTY2hlbWFQYXRoKSk7XG4gICAgICBtb2R1bGVPYmplY3QgPSByZXF1aXJlKHNjaGVtYVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb2R1bGVPYmplY3QgPSBhcmdTY2hlbWFQYXRoO1xuICAgIH1cbiAgICAvLyB0aGlzIHN1Y2tzLiBkZWZhdWx0IGV4cG9ydHMgc2hvdWxkIGJlIGRlc3Ryb3llZFxuICAgIGNvbnN0IHNjaGVtYSA9IG1vZHVsZU9iamVjdC5fX2VzTW9kdWxlXG4gICAgICA/IG1vZHVsZU9iamVjdC5kZWZhdWx0XG4gICAgICA6IG1vZHVsZU9iamVjdDtcbiAgICByZWdpc3RlclNjaGVtYShleHRUeXBlLCBleHROYW1lLCBzY2hlbWEpO1xuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgYSBzcGVjaWZpYyB7QGxpbmsgRXh0TWFuaWZlc3R9IG9iamVjdCBoYXMgYSBgc2NoZW1hYCBwcm9wLlxuICAgKiBUaGUge0BsaW5rIEV4dE1hbmlmZXN0fSBvYmplY3QgYmVjb21lcyBhIHtAbGluayBFeHRNYW5pZmVzdFdpdGhTY2hlbWF9IG9iamVjdC5cbiAgICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RXh0VHlwZT59IGV4dERhdGFcbiAgICogQHJldHVybnMge2V4dERhdGEgaXMgRXh0TWFuaWZlc3RXaXRoU2NoZW1hPEV4dFR5cGU+fVxuICAgKi9cbiAgc3RhdGljIGV4dERhdGFIYXNTY2hlbWEgKGV4dERhdGEpIHtcbiAgICByZXR1cm4gXy5pc1N0cmluZyhleHREYXRhPy5zY2hlbWEpIHx8IF8uaXNPYmplY3QoZXh0RGF0YT8uc2NoZW1hKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhbiBleHRlbnNpb24gcHJvdmlkZXMgYSBzY2hlbWEsIHRoaXMgd2lsbCBsb2FkIHRoZSBzY2hlbWEgYW5kIGF0dGVtcHQgdG9cbiAgICogcmVnaXN0ZXIgaXQgd2l0aCB0aGUgc2NoZW1hIHJlZ2lzdHJhci5cbiAgICogQHBhcmFtIHtFeHROYW1lPEV4dFR5cGU+fSBleHROYW1lIC0gTmFtZSBvZiBleHRlbnNpb25cbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdFdpdGhTY2hlbWE8RXh0VHlwZT59IGV4dERhdGEgLSBFeHRlbnNpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCdhanYnKS5TY2hlbWFPYmplY3R8dW5kZWZpbmVkfVxuICAgKi9cbiAgcmVhZEV4dGVuc2lvblNjaGVtYSAoZXh0TmFtZSwgZXh0RGF0YSkge1xuICAgIHJldHVybiBFeHRlbnNpb25Db25maWcuX3JlYWRFeHRlbnNpb25TY2hlbWEoXG4gICAgICB0aGlzLmFwcGl1bUhvbWUsXG4gICAgICB0aGlzLmV4dGVuc2lvblR5cGUsXG4gICAgICBleHROYW1lLFxuICAgICAgZXh0RGF0YSxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIElOU1RBTExfVFlQRV9OUE0sXG4gIElOU1RBTExfVFlQRV9HSVQsXG4gIElOU1RBTExfVFlQRV9MT0NBTCxcbiAgSU5TVEFMTF9UWVBFX0dJVEhVQixcbiAgSU5TVEFMTF9UWVBFUyxcbn07XG5cbi8qKlxuICogQ29uZmlnIHByb2JsZW1cbiAqIEB0eXBlZGVmIFByb2JsZW1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBlcnIgLSBFcnJvciBtZXNzYWdlXG4gKiBAcHJvcGVydHkge2FueX0gdmFsIC0gQXNzb2NpYXRlZCB2YWx1ZVxuICovXG5cbi8qKlxuICogQW4gb3B0aW9uYWwgbG9nZ2luZyBmdW5jdGlvbiBwcm92aWRlZCB0byBhbiB7QGxpbmsgRXh0ZW5zaW9uQ29uZmlnfSBzdWJjbGFzcy5cbiAqIEBjYWxsYmFjayBFeHRlbnNpb25Mb2dGblxuICogQHBhcmFtIHsuLi5hbnl9IGFyZ3NcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0TWFuaWZlc3RXaXRoU2NoZW1hPFQ+fSBFeHRNYW5pZmVzdFdpdGhTY2hlbWFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5FeHROYW1lPFQ+fSBFeHROYW1lXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvZXh0ZW5zaW9uJykuRXh0Q2xhc3M8VD59IEV4dENsYXNzXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0UmVjb3JkPFQ+fSBFeHRSZWNvcmRcbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHZhcmlvdXMgbWV0aG9kcyBpbiB7QGxpbmsgRXh0ZW5zaW9uQ29uZmlnfVxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29uZmlnTXV0YXRpb25PcHRzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFt3cml0ZT10cnVlXSBXaGV0aGVyIG9yIG5vdCB0byB3cml0ZSB0aGUgbWFuaWZlc3QgdG8gZGlzayBhZnRlciBhIG11dGF0aW9uIG9wZXJhdGlvblxuICovXG5cbi8qKlxuICogQSB2YWxpZCBpbnN0YWxsIHR5cGVcbiAqIEB0eXBlZGVmIHt0eXBlb2YgSU5TVEFMTF9UWVBFX05QTSB8IHR5cGVvZiBJTlNUQUxMX1RZUEVfR0lUIHwgdHlwZW9mIElOU1RBTExfVFlQRV9MT0NBTCB8IHR5cGVvZiBJTlNUQUxMX1RZUEVfR0lUSFVCfSBJbnN0YWxsVHlwZVxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBTUEsTUFBTUEsZ0JB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
@@ -74,4 +74,4 @@ function getActiveDrivers(driverConfig, useDrivers = []) {
74
74
  }
75
75
  }));
76
76
  }
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vaW5kZXguanMiXSwibmFtZXMiOlsibG9hZEV4dGVuc2lvbnMiLCJhcHBpdW1Ib21lIiwibWFuaWZlc3QiLCJNYW5pZmVzdCIsImdldEluc3RhbmNlIiwiZHJpdmVycyIsInBsdWdpbnMiLCJyZWFkIiwiZHJpdmVyQ29uZmlnIiwiRHJpdmVyQ29uZmlnIiwiY3JlYXRlIiwiZXh0RGF0YSIsInBsdWdpbkNvbmZpZyIsIlBsdWdpbkNvbmZpZyIsImdldEFjdGl2ZVBsdWdpbnMiLCJ1c2VQbHVnaW5zIiwiXyIsImNvbXBhY3QiLCJPYmplY3QiLCJrZXlzIiwiaW5zdGFsbGVkRXh0ZW5zaW9ucyIsImZpbHRlciIsInBsdWdpbk5hbWUiLCJpbmNsdWRlcyIsImxlbmd0aCIsIlVTRV9BTExfUExVR0lOUyIsIm1hcCIsImxvZyIsImluZm8iLCJQbHVnaW5DbGFzcyIsInJlcXVpcmUiLCJlcnIiLCJlcnJvciIsIm1lc3NhZ2UiLCJkZWJ1ZyIsInN0YWNrIiwiZ2V0QWN0aXZlRHJpdmVycyIsInVzZURyaXZlcnMiLCJkcml2ZXJOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBYU8sZUFBZUEsY0FBZixDQUErQkMsVUFBL0IsRUFBMkM7QUFBQTs7QUFDaEQsUUFBTUMsUUFBUSxHQUFHQyxtQkFBU0MsV0FBVCxDQUFxQkgsVUFBckIsQ0FBakI7O0FBQ0EsUUFBTTtBQUFDSSxJQUFBQSxPQUFEO0FBQVVDLElBQUFBO0FBQVYsTUFBcUIsTUFBTUosUUFBUSxDQUFDSyxJQUFULEVBQWpDO0FBQ0EsUUFBTUMsWUFBWSw0QkFDaEJDLDJCQUFhTCxXQUFiLENBQXlCRixRQUF6QixDQURnQix5RUFFaEJPLDJCQUFhQyxNQUFiLENBQW9CUixRQUFwQixFQUE4QjtBQUFDUyxJQUFBQSxPQUFPLEVBQUVOO0FBQVYsR0FBOUIsQ0FGRjtBQUdBLFFBQU1PLFlBQVksNEJBQ2hCQywyQkFBYVQsV0FBYixDQUF5QkYsUUFBekIsQ0FEZ0IseUVBRWhCVywyQkFBYUgsTUFBYixDQUFvQlIsUUFBcEIsRUFBOEI7QUFBQ1MsSUFBQUEsT0FBTyxFQUFFTDtBQUFWLEdBQTlCLENBRkY7QUFHQSxTQUFPO0FBQUNFLElBQUFBLFlBQUQ7QUFBZUksSUFBQUE7QUFBZixHQUFQO0FBQ0Q7O0FBWU0sU0FBU0UsZ0JBQVQsQ0FBMkJGLFlBQTNCLEVBQXlDRyxVQUFVLEdBQUcsRUFBdEQsRUFBMEQ7QUFDL0QsU0FBT0MsZ0JBQUVDLE9BQUYsQ0FDTEMsTUFBTSxDQUFDQyxJQUFQLENBQVlQLFlBQVksQ0FBQ1EsbUJBQXpCLEVBQ0dDLE1BREgsQ0FFS0MsVUFBRCxJQUNFTixnQkFBRU8sUUFBRixDQUFXUixVQUFYLEVBQXVCTyxVQUF2QixLQUNDUCxVQUFVLENBQUNTLE1BQVgsS0FBc0IsQ0FBdEIsSUFBMkJULFVBQVUsQ0FBQyxDQUFELENBQVYsS0FBa0JVLDBCQUpwRCxFQU1HQyxHQU5ILENBTVFKLFVBQUQsSUFBZ0I7QUFDbkIsUUFBSTtBQUNGSyxzQkFBSUMsSUFBSixDQUFVLDZCQUE0Qk4sVUFBVyxLQUFqRDs7QUFDQSxZQUFNTyxXQUFXLEdBQUdqQixZQUFZLENBQUNrQixPQUFiLENBQXFCUixVQUFyQixDQUFwQjs7QUFFQU8sTUFBQUEsV0FBVyxDQUFDUCxVQUFaLEdBQXlCQSxVQUF6QjtBQUNBLGFBQU9PLFdBQVA7QUFDRCxLQU5ELENBTUUsT0FBT0UsR0FBUCxFQUFZO0FBQ1pKLHNCQUFJSyxLQUFKLENBQ0csMEJBQXlCVixVQUFXLHdDQUFyQyxHQUNHLDhCQUE2QlMsR0FBRyxDQUFDRSxPQUFRLEVBRjlDOztBQUlBTixzQkFBSU8sS0FBSixDQUFVSCxHQUFHLENBQUNJLEtBQWQ7QUFDRDtBQUNGLEdBcEJILENBREssQ0FBUDtBQXVCRDs7QUFVTSxTQUFTQyxnQkFBVCxDQUEyQjVCLFlBQTNCLEVBQXlDNkIsVUFBVSxHQUFHLEVBQXRELEVBQTBEO0FBQy9ELFNBQU9yQixnQkFBRUMsT0FBRixDQUNMQyxNQUFNLENBQUNDLElBQVAsQ0FBWVgsWUFBWSxDQUFDWSxtQkFBekIsRUFDR0MsTUFESCxDQUVLaUIsVUFBRCxJQUNFdEIsZ0JBQUVPLFFBQUYsQ0FBV2MsVUFBWCxFQUF1QkMsVUFBdkIsS0FBc0NELFVBQVUsQ0FBQ2IsTUFBWCxLQUFzQixDQUhsRSxFQUtHRSxHQUxILENBS1FZLFVBQUQsSUFBZ0I7QUFDbkIsUUFBSTtBQUNGWCxzQkFBSUMsSUFBSixDQUFVLDZCQUE0QlUsVUFBVyxLQUFqRDs7QUFDQSxhQUFPOUIsWUFBWSxDQUFDc0IsT0FBYixDQUFxQlEsVUFBckIsQ0FBUDtBQUNELEtBSEQsQ0FHRSxPQUFPUCxHQUFQLEVBQVk7QUFDWkosc0JBQUlLLEtBQUosQ0FDRywwQkFBeUJNLFVBQVcsd0NBQXJDLEdBQ0csOEJBQTZCUCxHQUFHLENBQUNFLE9BQVEsRUFGOUM7O0FBSUFOLHNCQUFJTyxLQUFKLENBQVVILEdBQUcsQ0FBQ0ksS0FBZDtBQUNEO0FBQ0YsR0FoQkgsQ0FESyxDQUFQO0FBbUJEIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVVNFX0FMTF9QTFVHSU5TIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IERyaXZlckNvbmZpZyB9IGZyb20gJy4vZHJpdmVyLWNvbmZpZyc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJy4vbWFuaWZlc3QnO1xuaW1wb3J0IHsgUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi9wbHVnaW4tY29uZmlnJztcblxuLyoqXG4gKiBMb2FkcyBleHRlbnNpb25zIGFuZCBjcmVhdGVzIGBFeHRlbnNpb25Db25maWdgIGluc3RhbmNlcy5cbiAqXG4gKiAtIFJlYWRzIHRoZSBtYW5pZmVzdCBmaWxlLCBjcmVhdGluZyBpZiBuZWNlc3NhcnlcbiAqIC0gVXNpbmcgdGhlIHBhcnNlZCBleHRlbnNpb24gZGF0YSwgY3JlYXRlcy9nZXRzIHRoZSBgRXh0ZW5zaW9uQ29uZmlnYCBzdWJjbGFzcyBpbnN0YW5jZXNcbiAqIC0gUmV0dXJucyB0aGVzZSBpbnN0YW5jZXNcbiAqXG4gKiBJZiBgYXBwaXVtSG9tZWAgaXMgbmVlZGVkLCB1c2UgYHJlc29sdmVBcHBpdW1Ib21lYCBmcm9tIHRoZSBgZW52YCBtb2R1bGUgaW4gYEBhcHBpdW0vc3VwcG9ydGAuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICogQHJldHVybnMge1Byb21pc2U8RXh0ZW5zaW9uQ29uZmlncz59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkRXh0ZW5zaW9ucyAoYXBwaXVtSG9tZSkge1xuICBjb25zdCBtYW5pZmVzdCA9IE1hbmlmZXN0LmdldEluc3RhbmNlKGFwcGl1bUhvbWUpO1xuICBjb25zdCB7ZHJpdmVycywgcGx1Z2luc30gPSBhd2FpdCBtYW5pZmVzdC5yZWFkKCk7XG4gIGNvbnN0IGRyaXZlckNvbmZpZyA9XG4gICAgRHJpdmVyQ29uZmlnLmdldEluc3RhbmNlKG1hbmlmZXN0KSA/P1xuICAgIERyaXZlckNvbmZpZy5jcmVhdGUobWFuaWZlc3QsIHtleHREYXRhOiBkcml2ZXJzfSk7XG4gIGNvbnN0IHBsdWdpbkNvbmZpZyA9XG4gICAgUGx1Z2luQ29uZmlnLmdldEluc3RhbmNlKG1hbmlmZXN0KSA/P1xuICAgIFBsdWdpbkNvbmZpZy5jcmVhdGUobWFuaWZlc3QsIHtleHREYXRhOiBwbHVnaW5zfSk7XG4gIHJldHVybiB7ZHJpdmVyQ29uZmlnLCBwbHVnaW5Db25maWd9O1xufVxuXG4vKipcbiAqIEZpbmQgYW55IHBsdWdpbiBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHdoaWNoIGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgYWN0aXZhdGlvbiBieVxuICogdXNpbmcgdGhlIC0tdXNlLXBsdWdpbnMgZmxhZywgYW5kIHR1cm4gZWFjaCBvbmUgaW50byBpdHMgY2xhc3MsIHNvIHdlIGNhbiBzZW5kIHRoZW0gYXMgb2JqZWN0c1xuICogdG8gdGhlIHNlcnZlciBpbml0LiBXZSBhbHNvIHdhbnQgdG8gc2VuZC9hc3NpZ24gdGhlbSB0byB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbVxuICogdG8gd3JhcCBjb21tYW5kIGV4ZWN1dGlvblxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3BsdWdpbi1jb25maWcnKS5QbHVnaW5Db25maWd9IHBsdWdpbkNvbmZpZyAtIGEgcGx1Z2luIGV4dGVuc2lvbiBjb25maWdcbiAqIEBwYXJhbSB7c3RyaW5nW119IHVzZVBsdWdpbnNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuUGx1Z2luQ2xhc3NbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZVBsdWdpbnMgKHBsdWdpbkNvbmZpZywgdXNlUGx1Z2lucyA9IFtdKSB7XG4gIHJldHVybiBfLmNvbXBhY3QoXG4gICAgT2JqZWN0LmtleXMocGx1Z2luQ29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocGx1Z2luTmFtZSkgPT5cbiAgICAgICAgICBfLmluY2x1ZGVzKHVzZVBsdWdpbnMsIHBsdWdpbk5hbWUpIHx8XG4gICAgICAgICAgKHVzZVBsdWdpbnMubGVuZ3RoID09PSAxICYmIHVzZVBsdWdpbnNbMF0gPT09IFVTRV9BTExfUExVR0lOUyksXG4gICAgICApXG4gICAgICAubWFwKChwbHVnaW5OYW1lKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9nLmluZm8oYEF0dGVtcHRpbmcgdG8gbG9hZCBwbHVnaW4gJHtwbHVnaW5OYW1lfS4uLmApO1xuICAgICAgICAgIGNvbnN0IFBsdWdpbkNsYXNzID0gcGx1Z2luQ29uZmlnLnJlcXVpcmUocGx1Z2luTmFtZSk7XG5cbiAgICAgICAgICBQbHVnaW5DbGFzcy5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTsgLy8gc3RvcmUgdGhlIHBsdWdpbiBuYW1lIG9uIHRoZSBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBsYXRlclxuICAgICAgICAgIHJldHVybiBQbHVnaW5DbGFzcztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYENvdWxkIG5vdCBsb2FkIHBsdWdpbiAnJHtwbHVnaW5OYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgIGBpbiBsb2FkaW5nIHRoZSBwbHVnaW4gd2FzOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb2cuZGVidWcoZXJyLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogRmluZCBhbnkgZHJpdmVyIG5hbWUgd2hpY2ggaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmRcbiAqIHRoZW0gYXMgb2JqZWN0cyB0byB0aGUgc2VydmVyIGluaXQgaW4gY2FzZSB0aGV5IG5lZWQgdG8gYWRkIG1ldGhvZHMvcm91dGVzIG9yIHVwZGF0ZSB0aGUgc2VydmVyLlxuICogSWYgdGhlIC0tZHJpdmVycyBmbGFnIHdhcyBnaXZlbiwgdGhpcyBtZXRob2Qgb25seSBsb2FkcyB0aGUgZ2l2ZW4gZHJpdmVycy5cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9kcml2ZXItY29uZmlnJykuRHJpdmVyQ29uZmlnfSBkcml2ZXJDb25maWcgLSBhIGRyaXZlciBleHRlbnNpb24gY29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBbdXNlRHJpdmVyc10gLSBvcHRpb25hbCBsaXN0IG9mIGRyaXZlcnMgdG8gbG9hZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZlRHJpdmVycyAoZHJpdmVyQ29uZmlnLCB1c2VEcml2ZXJzID0gW10pIHtcbiAgcmV0dXJuIF8uY29tcGFjdChcbiAgICBPYmplY3Qua2V5cyhkcml2ZXJDb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChkcml2ZXJOYW1lKSA9PlxuICAgICAgICAgIF8uaW5jbHVkZXModXNlRHJpdmVycywgZHJpdmVyTmFtZSkgfHwgdXNlRHJpdmVycy5sZW5ndGggPT09IDAsXG4gICAgICApXG4gICAgICAubWFwKChkcml2ZXJOYW1lKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9nLmluZm8oYEF0dGVtcHRpbmcgdG8gbG9hZCBkcml2ZXIgJHtkcml2ZXJOYW1lfS4uLmApO1xuICAgICAgICAgIHJldHVybiBkcml2ZXJDb25maWcucmVxdWlyZShkcml2ZXJOYW1lKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYENvdWxkIG5vdCBsb2FkIGRyaXZlciAnJHtkcml2ZXJOYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgIGBpbiBsb2FkaW5nIHRoZSBkcml2ZXIgd2FzOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb2cuZGVidWcoZXJyLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29uZmlnc1xuICogQHByb3BlcnR5IHtEcml2ZXJDb25maWd9IGRyaXZlckNvbmZpZ1xuICogQHByb3BlcnR5IHtQbHVnaW5Db25maWd9IHBsdWdpbkNvbmZpZ1xuICovXG4iXX0=
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2FkRXh0ZW5zaW9ucyIsImFwcGl1bUhvbWUiLCJtYW5pZmVzdCIsIk1hbmlmZXN0IiwiZ2V0SW5zdGFuY2UiLCJkcml2ZXJzIiwicGx1Z2lucyIsInJlYWQiLCJkcml2ZXJDb25maWciLCJEcml2ZXJDb25maWciLCJjcmVhdGUiLCJleHREYXRhIiwicGx1Z2luQ29uZmlnIiwiUGx1Z2luQ29uZmlnIiwiZ2V0QWN0aXZlUGx1Z2lucyIsInVzZVBsdWdpbnMiLCJfIiwiY29tcGFjdCIsIk9iamVjdCIsImtleXMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiZmlsdGVyIiwicGx1Z2luTmFtZSIsImluY2x1ZGVzIiwibGVuZ3RoIiwiVVNFX0FMTF9QTFVHSU5TIiwibWFwIiwibG9nIiwiaW5mbyIsIlBsdWdpbkNsYXNzIiwicmVxdWlyZSIsImVyciIsImVycm9yIiwibWVzc2FnZSIsImRlYnVnIiwic3RhY2siLCJnZXRBY3RpdmVEcml2ZXJzIiwidXNlRHJpdmVycyIsImRyaXZlck5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9uL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFVTRV9BTExfUExVR0lOUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBEcml2ZXJDb25maWcgfSBmcm9tICcuL2RyaXZlci1jb25maWcnO1xuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tICcuL21hbmlmZXN0JztcbmltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vcGx1Z2luLWNvbmZpZyc7XG5cbi8qKlxuICogTG9hZHMgZXh0ZW5zaW9ucyBhbmQgY3JlYXRlcyBgRXh0ZW5zaW9uQ29uZmlnYCBpbnN0YW5jZXMuXG4gKlxuICogLSBSZWFkcyB0aGUgbWFuaWZlc3QgZmlsZSwgY3JlYXRpbmcgaWYgbmVjZXNzYXJ5XG4gKiAtIFVzaW5nIHRoZSBwYXJzZWQgZXh0ZW5zaW9uIGRhdGEsIGNyZWF0ZXMvZ2V0cyB0aGUgYEV4dGVuc2lvbkNvbmZpZ2Agc3ViY2xhc3MgaW5zdGFuY2VzXG4gKiAtIFJldHVybnMgdGhlc2UgaW5zdGFuY2VzXG4gKlxuICogSWYgYGFwcGl1bUhvbWVgIGlzIG5lZWRlZCwgdXNlIGByZXNvbHZlQXBwaXVtSG9tZWAgZnJvbSB0aGUgYGVudmAgbW9kdWxlIGluIGBAYXBwaXVtL3N1cHBvcnRgLlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcGl1bUhvbWVcbiAqIEByZXR1cm5zIHtQcm9taXNlPEV4dGVuc2lvbkNvbmZpZ3M+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEV4dGVuc2lvbnMgKGFwcGl1bUhvbWUpIHtcbiAgY29uc3QgbWFuaWZlc3QgPSBNYW5pZmVzdC5nZXRJbnN0YW5jZShhcHBpdW1Ib21lKTtcbiAgY29uc3Qge2RyaXZlcnMsIHBsdWdpbnN9ID0gYXdhaXQgbWFuaWZlc3QucmVhZCgpO1xuICBjb25zdCBkcml2ZXJDb25maWcgPVxuICAgIERyaXZlckNvbmZpZy5nZXRJbnN0YW5jZShtYW5pZmVzdCkgPz9cbiAgICBEcml2ZXJDb25maWcuY3JlYXRlKG1hbmlmZXN0LCB7ZXh0RGF0YTogZHJpdmVyc30pO1xuICBjb25zdCBwbHVnaW5Db25maWcgPVxuICAgIFBsdWdpbkNvbmZpZy5nZXRJbnN0YW5jZShtYW5pZmVzdCkgPz9cbiAgICBQbHVnaW5Db25maWcuY3JlYXRlKG1hbmlmZXN0LCB7ZXh0RGF0YTogcGx1Z2luc30pO1xuICByZXR1cm4ge2RyaXZlckNvbmZpZywgcGx1Z2luQ29uZmlnfTtcbn1cblxuLyoqXG4gKiBGaW5kIGFueSBwbHVnaW4gbmFtZSB3aGljaCBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB3aGljaCBoYXMgYmVlbiByZXF1ZXN0ZWQgZm9yIGFjdGl2YXRpb24gYnlcbiAqIHVzaW5nIHRoZSAtLXVzZS1wbHVnaW5zIGZsYWcsIGFuZCB0dXJuIGVhY2ggb25lIGludG8gaXRzIGNsYXNzLCBzbyB3ZSBjYW4gc2VuZCB0aGVtIGFzIG9iamVjdHNcbiAqIHRvIHRoZSBzZXJ2ZXIgaW5pdC4gV2UgYWxzbyB3YW50IHRvIHNlbmQvYXNzaWduIHRoZW0gdG8gdGhlIHVtYnJlbGxhIGRyaXZlciBzbyBpdCBjYW4gdXNlIHRoZW1cbiAqIHRvIHdyYXAgY29tbWFuZCBleGVjdXRpb25cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wbHVnaW4tY29uZmlnJykuUGx1Z2luQ29uZmlnfSBwbHVnaW5Db25maWcgLSBhIHBsdWdpbiBleHRlbnNpb24gY29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSB1c2VQbHVnaW5zXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi8uLi90eXBlcycpLlBsdWdpbkNsYXNzW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3RpdmVQbHVnaW5zIChwbHVnaW5Db25maWcsIHVzZVBsdWdpbnMgPSBbXSkge1xuICByZXR1cm4gXy5jb21wYWN0KFxuICAgIE9iamVjdC5rZXlzKHBsdWdpbkNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHBsdWdpbk5hbWUpID0+XG4gICAgICAgICAgXy5pbmNsdWRlcyh1c2VQbHVnaW5zLCBwbHVnaW5OYW1lKSB8fFxuICAgICAgICAgICh1c2VQbHVnaW5zLmxlbmd0aCA9PT0gMSAmJiB1c2VQbHVnaW5zWzBdID09PSBVU0VfQUxMX1BMVUdJTlMpLFxuICAgICAgKVxuICAgICAgLm1hcCgocGx1Z2luTmFtZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgcGx1Z2luICR7cGx1Z2luTmFtZX0uLi5gKTtcbiAgICAgICAgICBjb25zdCBQbHVnaW5DbGFzcyA9IHBsdWdpbkNvbmZpZy5yZXF1aXJlKHBsdWdpbk5hbWUpO1xuXG4gICAgICAgICAgUGx1Z2luQ2xhc3MucGx1Z2luTmFtZSA9IHBsdWdpbk5hbWU7IC8vIHN0b3JlIHRoZSBwbHVnaW4gbmFtZSBvbiB0aGUgY2xhc3Mgc28gaXQgY2FuIGJlIHVzZWQgbGF0ZXJcbiAgICAgICAgICByZXR1cm4gUGx1Z2luQ2xhc3M7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgIGBDb3VsZCBub3QgbG9hZCBwbHVnaW4gJyR7cGx1Z2luTmFtZX0nLCBzbyBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEVycm9yIGAgK1xuICAgICAgICAgICAgICBgaW4gbG9hZGluZyB0aGUgcGx1Z2luIHdhczogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgbG9nLmRlYnVnKGVyci5zdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICApO1xufVxuXG4vKipcbiAqIEZpbmQgYW55IGRyaXZlciBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHR1cm4gZWFjaCBvbmUgaW50byBpdHMgY2xhc3MsIHNvIHdlIGNhbiBzZW5kXG4gKiB0aGVtIGFzIG9iamVjdHMgdG8gdGhlIHNlcnZlciBpbml0IGluIGNhc2UgdGhleSBuZWVkIHRvIGFkZCBtZXRob2RzL3JvdXRlcyBvciB1cGRhdGUgdGhlIHNlcnZlci5cbiAqIElmIHRoZSAtLWRyaXZlcnMgZmxhZyB3YXMgZ2l2ZW4sIHRoaXMgbWV0aG9kIG9ubHkgbG9hZHMgdGhlIGdpdmVuIGRyaXZlcnMuXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vZHJpdmVyLWNvbmZpZycpLkRyaXZlckNvbmZpZ30gZHJpdmVyQ29uZmlnIC0gYSBkcml2ZXIgZXh0ZW5zaW9uIGNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmdbXX0gW3VzZURyaXZlcnNdIC0gb3B0aW9uYWwgbGlzdCBvZiBkcml2ZXJzIHRvIGxvYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZURyaXZlcnMgKGRyaXZlckNvbmZpZywgdXNlRHJpdmVycyA9IFtdKSB7XG4gIHJldHVybiBfLmNvbXBhY3QoXG4gICAgT2JqZWN0LmtleXMoZHJpdmVyQ29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoZHJpdmVyTmFtZSkgPT5cbiAgICAgICAgICBfLmluY2x1ZGVzKHVzZURyaXZlcnMsIGRyaXZlck5hbWUpIHx8IHVzZURyaXZlcnMubGVuZ3RoID09PSAwLFxuICAgICAgKVxuICAgICAgLm1hcCgoZHJpdmVyTmFtZSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgZHJpdmVyICR7ZHJpdmVyTmFtZX0uLi5gKTtcbiAgICAgICAgICByZXR1cm4gZHJpdmVyQ29uZmlnLnJlcXVpcmUoZHJpdmVyTmFtZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgIGBDb3VsZCBub3QgbG9hZCBkcml2ZXIgJyR7ZHJpdmVyTmFtZX0nLCBzbyBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEVycm9yIGAgK1xuICAgICAgICAgICAgICBgaW4gbG9hZGluZyB0aGUgZHJpdmVyIHdhczogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgbG9nLmRlYnVnKGVyci5zdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICApO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIEV4dGVuc2lvbkNvbmZpZ3NcbiAqIEBwcm9wZXJ0eSB7RHJpdmVyQ29uZmlnfSBkcml2ZXJDb25maWdcbiAqIEBwcm9wZXJ0eSB7UGx1Z2luQ29uZmlnfSBwbHVnaW5Db25maWdcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBYU8sZUFBZUEsY0FBZixDQUErQkMsVUFBL0IsRUFBMkM7RUFBQTs7RUFDaEQsTUFBTUMsUUFBUSxHQUFHQyxtQkFBU0MsV0FBVCxDQUFxQkgsVUFBckIsQ0FBakI7O0VBQ0EsTUFBTTtJQUFDSSxPQUFEO0lBQVVDO0VBQVYsSUFBcUIsTUFBTUosUUFBUSxDQUFDSyxJQUFULEVBQWpDO0VBQ0EsTUFBTUMsWUFBWSw0QkFDaEJDLDJCQUFhTCxXQUFiLENBQXlCRixRQUF6QixDQURnQix5RUFFaEJPLDJCQUFhQyxNQUFiLENBQW9CUixRQUFwQixFQUE4QjtJQUFDUyxPQUFPLEVBQUVOO0VBQVYsQ0FBOUIsQ0FGRjtFQUdBLE1BQU1PLFlBQVksNEJBQ2hCQywyQkFBYVQsV0FBYixDQUF5QkYsUUFBekIsQ0FEZ0IseUVBRWhCVywyQkFBYUgsTUFBYixDQUFvQlIsUUFBcEIsRUFBOEI7SUFBQ1MsT0FBTyxFQUFFTDtFQUFWLENBQTlCLENBRkY7RUFHQSxPQUFPO0lBQUNFLFlBQUQ7SUFBZUk7RUFBZixDQUFQO0FBQ0Q7O0FBWU0sU0FBU0UsZ0JBQVQsQ0FBMkJGLFlBQTNCLEVBQXlDRyxVQUFVLEdBQUcsRUFBdEQsRUFBMEQ7RUFDL0QsT0FBT0MsZ0JBQUVDLE9BQUYsQ0FDTEMsTUFBTSxDQUFDQyxJQUFQLENBQVlQLFlBQVksQ0FBQ1EsbUJBQXpCLEVBQ0dDLE1BREgsQ0FFS0MsVUFBRCxJQUNFTixnQkFBRU8sUUFBRixDQUFXUixVQUFYLEVBQXVCTyxVQUF2QixLQUNDUCxVQUFVLENBQUNTLE1BQVgsS0FBc0IsQ0FBdEIsSUFBMkJULFVBQVUsQ0FBQyxDQUFELENBQVYsS0FBa0JVLDBCQUpwRCxFQU1HQyxHQU5ILENBTVFKLFVBQUQsSUFBZ0I7SUFDbkIsSUFBSTtNQUNGSyxnQkFBSUMsSUFBSixDQUFVLDZCQUE0Qk4sVUFBVyxLQUFqRDs7TUFDQSxNQUFNTyxXQUFXLEdBQUdqQixZQUFZLENBQUNrQixPQUFiLENBQXFCUixVQUFyQixDQUFwQjs7TUFFQU8sV0FBVyxDQUFDUCxVQUFaLEdBQXlCQSxVQUF6QjtNQUNBLE9BQU9PLFdBQVA7SUFDRCxDQU5ELENBTUUsT0FBT0UsR0FBUCxFQUFZO01BQ1pKLGdCQUFJSyxLQUFKLENBQ0csMEJBQXlCVixVQUFXLHdDQUFyQyxHQUNHLDhCQUE2QlMsR0FBRyxDQUFDRSxPQUFRLEVBRjlDOztNQUlBTixnQkFBSU8sS0FBSixDQUFVSCxHQUFHLENBQUNJLEtBQWQ7SUFDRDtFQUNGLENBcEJILENBREssQ0FBUDtBQXVCRDs7QUFVTSxTQUFTQyxnQkFBVCxDQUEyQjVCLFlBQTNCLEVBQXlDNkIsVUFBVSxHQUFHLEVBQXRELEVBQTBEO0VBQy9ELE9BQU9yQixnQkFBRUMsT0FBRixDQUNMQyxNQUFNLENBQUNDLElBQVAsQ0FBWVgsWUFBWSxDQUFDWSxtQkFBekIsRUFDR0MsTUFESCxDQUVLaUIsVUFBRCxJQUNFdEIsZ0JBQUVPLFFBQUYsQ0FBV2MsVUFBWCxFQUF1QkMsVUFBdkIsS0FBc0NELFVBQVUsQ0FBQ2IsTUFBWCxLQUFzQixDQUhsRSxFQUtHRSxHQUxILENBS1FZLFVBQUQsSUFBZ0I7SUFDbkIsSUFBSTtNQUNGWCxnQkFBSUMsSUFBSixDQUFVLDZCQUE0QlUsVUFBVyxLQUFqRDs7TUFDQSxPQUFPOUIsWUFBWSxDQUFDc0IsT0FBYixDQUFxQlEsVUFBckIsQ0FBUDtJQUNELENBSEQsQ0FHRSxPQUFPUCxHQUFQLEVBQVk7TUFDWkosZ0JBQUlLLEtBQUosQ0FDRywwQkFBeUJNLFVBQVcsd0NBQXJDLEdBQ0csOEJBQTZCUCxHQUFHLENBQUNFLE9BQVEsRUFGOUM7O01BSUFOLGdCQUFJTyxLQUFKLENBQVVILEdBQUcsQ0FBQ0ksS0FBZDtJQUNEO0VBQ0YsQ0FoQkgsQ0FESyxDQUFQO0FBbUJEIn0=
@@ -243,4 +243,4 @@ class Manifest {
243
243
  }
244
244
 
245
245
  exports.Manifest = Manifest;
246
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vbWFuaWZlc3QuanMiXSwibmFtZXMiOlsiREVGQVVMVF9TRUFSQ0hfREVQVEgiLCJERUZBVUxUX0ZJTkRfRVhURU5TSU9OU19PUFRTIiwiT2JqZWN0IiwiZnJlZXplIiwiZGVwdGhMaW1pdCIsImZpbHRlciIsImZpbGVwYXRoIiwicGF0aCIsImJhc2VuYW1lIiwic3RhcnRzV2l0aCIsIkNPTkZJR19TQ0hFTUFfUkVWIiwiQ09ORklHX0RBVEFfRFJJVkVSX0tFWSIsIkRSSVZFUl9UWVBFIiwiQ09ORklHX0RBVEFfUExVR0lOX0tFWSIsIlBMVUdJTl9UWVBFIiwiSU5JVElBTF9NQU5JRkVTVF9EQVRBIiwic2NoZW1hUmV2IiwiaXNFeHRlbnNpb24iLCJ2YWx1ZSIsIl8iLCJpc1BsYWluT2JqZWN0IiwiYXBwaXVtIiwiaXNTdHJpbmciLCJuYW1lIiwidmVyc2lvbiIsImlzRHJpdmVyIiwiZ2V0IiwiaXNBcnJheSIsImlzUGx1Z2luIiwiTWFuaWZlc3QiLCJfZGF0YSIsIl9hcHBpdW1Ib21lIiwiX21hbmlmZXN0UGF0aCIsIl93cml0aW5nIiwiX3JlYWRpbmciLCJjb25zdHJ1Y3RvciIsImFwcGl1bUhvbWUiLCJjbG9uZURlZXAiLCJnZXRJbnN0YW5jZSIsIm1lbW9pemUiLCJfZ2V0SW5zdGFuY2UiLCJzeW5jV2l0aEluc3RhbGxlZEV4dGVuc2lvbnMiLCJ3YWxrT3B0cyIsImRlZmF1bHRzIiwiZGlkQ2hhbmdlIiwic3RhdHMiLCJmcyIsIndhbGsiLCJpc0RpcmVjdG9yeSIsInBrZyIsImVudiIsInJlYWRQYWNrYWdlSW5EaXIiLCJhZGRlZCIsImFkZEV4dGVuc2lvbkZyb21QYWNrYWdlIiwiam9pbiIsImhhc0RyaXZlciIsIkJvb2xlYW4iLCJkcml2ZXJzIiwiaGFzUGx1Z2luIiwicGx1Z2lucyIsInBrZ0pzb24iLCJwa2dQYXRoIiwiaW50ZXJuYWwiLCJwa2dOYW1lIiwiaW5zdGFsbFR5cGUiLCJJTlNUQUxMX1RZUEVfTlBNIiwiaW5zdGFsbFNwZWMiLCJkcml2ZXJOYW1lIiwiYWRkRXh0ZW5zaW9uIiwib21pdCIsInBsdWdpbk5hbWUiLCJUeXBlRXJyb3IiLCJkaXJuYW1lIiwiZXh0VHlwZSIsImV4dE5hbWUiLCJleHREYXRhIiwibWFuaWZlc3RQYXRoIiwiZ2V0RXh0ZW5zaW9uRGF0YSIsInJlYWQiLCJkYXRhIiwiaXNOZXdGaWxlIiwiX3NldE1hbmlmZXN0UGF0aCIsImxvZyIsImRlYnVnIiwieWFtbCIsInJlYWRGaWxlIiwiWUFNTCIsInBhcnNlIiwiZXJyIiwiY29kZSIsIkVycm9yIiwibWVzc2FnZSIsImluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkIiwiaGFzQXBwaXVtRGVwZW5kZW5jeSIsIndyaXRlIiwidW5kZWZpbmVkIiwicmVzb2x2ZU1hbmlmZXN0UGF0aCIsInJlbGF0aXZlIiwibWtkaXJwIiwid3JpdGVGaWxlIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU9BLE1BQU1BLG9CQUFvQixHQUFHLENBQTdCO0FBTUEsTUFBTUMsNEJBQTRCLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQ2pEQyxFQUFBQSxVQUFVLEVBQUVKLG9CQURxQztBQUdqREssRUFBQUEsTUFBTSxFQUFHQyxRQUFELElBQWMsQ0FBQ0MsY0FBS0MsUUFBTCxDQUFjRixRQUFkLEVBQXdCRyxVQUF4QixDQUFtQyxHQUFuQztBQUgwQixDQUFkLENBQXJDO0FBU0EsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBMUI7QUFNQSxNQUFNQyxzQkFBc0IsR0FBSSxHQUFFQyxzQkFBWSxHQUE5QztBQU1BLE1BQU1DLHNCQUFzQixHQUFJLEdBQUVDLHNCQUFZLEdBQTlDO0FBS0EsTUFBTUMscUJBQXFCLEdBQUdiLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQzFDLEdBQUNRLHNCQUFELEdBQTBCVCxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFk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LE9BQU8wRCxHQUFQLEVBQVk7QUFDWixjQUFNLElBQUlFLEtBQUosQ0FDSCx5Q0FBd0MsS0FBSzFELGFBQWMsc0JBQXFCLEtBQUtELFdBQVksSUFBbEcsR0FDRyxpREFBZ0R5RCxHQUFHLENBQUNHLE9BQVEsRUFGM0QsQ0FBTjtBQUlEO0FBQ0YsS0F4QmUsR0FBaEI7O0FBeUJBLFFBQUk7QUFDRixhQUFPLE1BQU0sS0FBSzFELFFBQWxCO0FBQ0QsS0FGRCxTQUVVO0FBQ1IsV0FBS0EsUUFBTCxHQUFnQjhELFNBQWhCO0FBQ0Q7QUFDRjs7QUFqVm1CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2R1bGUgY29udGFpbmluZyB7QGxpbmsgTWFuaWZlc3R9IHdoaWNoIGhhbmRsZXMgcmVhZGluZyAmIHdyaXRpbmcgb2YgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlcy5cbiAqL1xuXG5pbXBvcnQgeyBlbnYsIGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBZQU1MIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IElOU1RBTExfVFlQRV9OUE0gfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgcGFja2FnZURpZENoYW5nZSB9IGZyb20gJy4vcGFja2FnZS1jaGFuZ2VkJztcblxuLyoqXG4gKiBEZWZhdWx0IGRlcHRoIHRvIHNlYXJjaCBpbiBkaXJlY3RvcnkgdHJlZSBmb3Igd2hhdGV2ZXIgaXQgaXMgd2UncmUgbG9va2luZyBmb3IuXG4gKlxuICogSXQncyA0IGJlY2F1c2Ugc21hbGxlciBudW1iZXJzIGRpZG4ndCB3b3JrLlxuICovXG5jb25zdCBERUZBVUxUX1NFQVJDSF9ERVBUSCA9IDQ7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciB7QGxpbmsgZmluZEV4dGVuc2lvbnN9LlxuICogQHR5cGUge1JlYWRvbmx5PGltcG9ydCgna2xhdycpLk9wdGlvbnM+fVxuICovXG5jb25zdCBERUZBVUxUX0ZJTkRfRVhURU5TSU9OU19PUFRTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGRlcHRoTGltaXQ6IERFRkFVTFRfU0VBUkNIX0RFUFRILFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBmaWx0ZXI6IChmaWxlcGF0aCkgPT4gIXBhdGguYmFzZW5hbWUoZmlsZXBhdGgpLnN0YXJ0c1dpdGgoJy4nKSxcbn0pO1xuXG4vKipcbiAqIEN1cnJlbnQgY29uZmlndXJhdGlvbiBzY2hlbWEgcmV2aXNpb24hXG4gKi9cbmNvbnN0IENPTkZJR19TQ0hFTUFfUkVWID0gMjtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJvcCAoYGRyaXZlcnNgKSB1c2VkIGluIGBleHRlbnNpb25zLnlhbWxgIGZvciBkcml2ZXJzLlxuICogQHR5cGUge2Ake3R5cGVvZiBEUklWRVJfVFlQRX1zYH1cbiAqL1xuY29uc3QgQ09ORklHX0RBVEFfRFJJVkVSX0tFWSA9IGAke0RSSVZFUl9UWVBFfXNgO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwcm9wIChgcGx1Z2luc2ApIHVzZWQgaW4gYGV4dGVuc2lvbnMueWFtbGAgZm9yIHBsdWdpbnMuXG4gKiBAdHlwZSB7YCR7dHlwZW9mIFBMVUdJTl9UWVBFfXNgfVxuICovXG5jb25zdCBDT05GSUdfREFUQV9QTFVHSU5fS0VZID0gYCR7UExVR0lOX1RZUEV9c2A7XG5cbi8qKlxuICogQHR5cGUge1JlYWRvbmx5PE1hbmlmZXN0RGF0YT59XG4gKi9cbmNvbnN0IElOSVRJQUxfTUFOSUZFU1RfREFUQSA9IE9iamVjdC5mcmVlemUoe1xuICBbQ09ORklHX0RBVEFfRFJJVkVSX0tFWV06IE9iamVjdC5mcmVlemUoe30pLFxuICBbQ09ORklHX0RBVEFfUExVR0lOX0tFWV06IE9iamVjdC5mcmVlemUoe30pLFxuICBzY2hlbWFSZXY6IENPTkZJR19TQ0hFTUFfUkVWLFxufSk7XG5cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCByZXR1cm4gYHRydWVgIGlmIGl0IHJlcHJlc2VudHMgYW4gQXBwaXVtIEV4dGVuc2lvbiAoZWl0aGVyIGEgZHJpdmVyIG9yIHBsdWdpbikuXG4gKlxuICogVGhlIGBwYWNrYWdlLmpzb25gIG11c3QgaGF2ZSBhbiBgYXBwaXVtYCBwcm9wZXJ0eSB3aGljaCBpcyBhbiBvYmplY3QuXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxFeHRlbnNpb25UeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNFeHRlbnNpb24gKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgXy5pc1BsYWluT2JqZWN0KHZhbHVlKSAmJlxuICAgIF8uaXNQbGFpbk9iamVjdCh2YWx1ZS5hcHBpdW0pICYmXG4gICAgXy5pc1N0cmluZyh2YWx1ZS5uYW1lKSAmJlxuICAgIF8uaXNTdHJpbmcodmFsdWUudmVyc2lvbilcbiAgKTtcbn1cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCwgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBEcml2ZXIuXG4gKlxuICogVG8gYmUgY29uc2lkZXJlZCBhIGRyaXZlciwgYSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYSBmaWVsZHNcbiAqIGBhcHBpdW0uZHJpdmVyTmFtZWAsIGBhcHBpdW0uYXV0b21hdGlvbk5hbWVgIGFuZCBgYXBwaXVtLnBsYXRmb3JtTmFtZXNgLlxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge3ZhbHVlIGlzIEV4dFBhY2thZ2VKc29uPERyaXZlclR5cGU+fVxuICovXG5mdW5jdGlvbiBpc0RyaXZlciAodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICBpc0V4dGVuc2lvbih2YWx1ZSkgJiZcbiAgICBfLmlzU3RyaW5nKF8uZ2V0KHZhbHVlLCAnYXBwaXVtLmRyaXZlck5hbWUnKSkgJiZcbiAgICBfLmlzU3RyaW5nKF8uZ2V0KHZhbHVlLCAnYXBwaXVtLmF1dG9tYXRpb25OYW1lJykpICYmXG4gICAgXy5pc0FycmF5KF8uZ2V0KHZhbHVlLCAnYXBwaXVtLnBsYXRmb3JtTmFtZXMnKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIGBwYWNrYWdlLmpzb25gLCByZXR1cm4gYHRydWVgIGlmIGl0IHJlcHJlc2VudHMgYW4gQXBwaXVtIFBsdWdpbi5cbiAqXG4gKiBUbyBiZSBjb25zaWRlcmVkIGEgcGx1Z2luLCBhIGBwYWNrYWdlLmpzb25gIG11c3QgaGF2ZSBhbiBgYXBwaXVtLnBsdWdpbk5hbWVgIGZpZWxkLlxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge3ZhbHVlIGlzIEV4dFBhY2thZ2VKc29uPFBsdWdpblR5cGU+fVxuICovXG5mdW5jdGlvbiBpc1BsdWdpbiAodmFsdWUpIHtcbiAgcmV0dXJuIGlzRXh0ZW5zaW9uKHZhbHVlKSAmJiBfLmlzU3RyaW5nKF8uZ2V0KHZhbHVlLCAnYXBwaXVtLnBsdWdpbk5hbWUnKSk7XG59XG5cbi8qKlxuICogSGFuZGxlcyByZWFkaW5nICYgd3JpdGluZyBvZiBleHRlbnNpb24gY29uZmlnIGZpbGVzLlxuICpcbiAqIE9ubHkgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgZXhpc3RzIHBlciB2YWx1ZSBvZiBgQVBQSVVNX0hPTUVgLlxuICovXG5leHBvcnQgY2xhc3MgTWFuaWZlc3Qge1xuICAvKipcbiAgICogVGhlIGVudGlyZSBjb250ZW50cyBvZiBhIHBhcnNlZCBZQU1MIGV4dGVuc2lvbiBjb25maWcgZmlsZS5cbiAgICpcbiAgICogQ29udGFpbnMgcHJveGllcyBmb3IgYXV0b21hdGljIHBlcnNpc3RlbmNlIG9uIGRpc2tcbiAgICogQHR5cGUge01hbmlmZXN0RGF0YX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9kYXRhO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBBUFBJVU1fSE9NRWAuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtSZWFkb25seTxzdHJpbmc+fVxuICAgKi9cbiAgX2FwcGl1bUhvbWU7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gYGV4dGVuc2lvbnMueWFtbGBcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogTm90IHNldCB1bnRpbCB7QGxpbmsgTWFuaWZlc3QucmVhZH0gaXMgY2FsbGVkLlxuICAgKi9cbiAgX21hbmlmZXN0UGF0aDtcblxuICAvKipcbiAgICogSGVscHMgYXZvaWQgd3JpdGluZyBtdWx0aXBsZSB0aW1lcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdW5kZWZpbmVkYCwgY2FsbGluZyB7QGxpbmsgTWFuaWZlc3Qud3JpdGV9IHdpbGwgY2F1c2UgaXQgdG8gYmVcbiAgICogc2V0IHRvIGEgYFByb21pc2VgLiBXaGVuIHRoZSBjYWxsIHRvIGB3cml0ZSgpYCBpcyBjb21wbGV0ZSwgdGhlIGBQcm9taXNlYFxuICAgKiB3aWxsIHJlc29sdmUgYW5kIHRoZW4gdGhpcyB2YWx1ZSB3aWxsIGJlIHNldCB0byBgdW5kZWZpbmVkYC4gIENvbmN1cnJlbnQgY2FsbHNcbiAgICogbWFkZSB3aGlsZSB0aGlzIHZhbHVlIGlzIGEgYFByb21pc2VgIHdpbGwgcmV0dXJuIHRoZSBgUHJvbWlzZWAgaXRzZWxmLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7UHJvbWlzZTxib29sZWFuPnx1bmRlZmluZWR9XG4gICAqL1xuICBfd3JpdGluZztcblxuICAvKipcbiAgICogSGVscHMgYXZvaWQgcmVhZGluZyBtdWx0aXBsZSB0aW1lcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdW5kZWZpbmVkYCwgY2FsbGluZyB7QGxpbmsgTWFuaWZlc3QucmVhZH0gd2lsbCBjYXVzZSBpdCB0byBiZVxuICAgKiBzZXQgdG8gYSBgUHJvbWlzZWAuIFdoZW4gdGhlIGNhbGwgdG8gYHJlYWQoKWAgaXMgY29tcGxldGUsIHRoZSBgUHJvbWlzZWBcbiAgICogd2lsbCByZXNvbHZlIGFuZCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAuICBDb25jdXJyZW50IGNhbGxzXG4gICAqIG1hZGUgd2hpbGUgdGhpcyB2YWx1ZSBpcyBhIGBQcm9taXNlYCB3aWxsIHJldHVybiB0aGUgYFByb21pc2VgIGl0c2VsZi5cbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge1Byb21pc2U8dm9pZD58dW5kZWZpbmVkfVxuICAgKi9cbiAgX3JlYWRpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgaW50ZXJuYWwgZGF0YSB0byBhIGZyZXNoIGNsb25lIG9mIHtAbGluayBJTklUSUFMX01BTklGRVNUX0RBVEF9XG4gICAqXG4gICAqIFVzZSB7QGxpbmsgTWFuaWZlc3QuZ2V0SW5zdGFuY2V9IGluc3RlYWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoYXBwaXVtSG9tZSkge1xuICAgIHRoaXMuX2FwcGl1bUhvbWUgPSBhcHBpdW1Ib21lO1xuICAgIHRoaXMuX2RhdGEgPSBfLmNsb25lRGVlcChJTklUSUFMX01BTklGRVNUX0RBVEEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZXcgb3IgZXhpc3Rpbmcge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGBhcHBpdW1Ib21lYC5cbiAgICpcbiAgICogTWFpbnRhaW5zIG9uZSBpbnN0YW5jZSBwZXIgdmFsdWUgb2YgYGFwcGl1bUhvbWVgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZSAtIFBhdGggdG8gYEFQUElVTV9IT01FYFxuICAgKiBAcmV0dXJucyB7TWFuaWZlc3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0SW5zdGFuY2UgPSBfLm1lbW9pemUoZnVuY3Rpb24gX2dldEluc3RhbmNlIChcbiAgICBhcHBpdW1Ib21lLFxuICApIHtcbiAgICByZXR1cm4gbmV3IE1hbmlmZXN0KGFwcGl1bUhvbWUpO1xuICB9KTtcblxuICAvKipcbiAgICogU2VhcmNoZXMgYEFQUElVTV9IT01FYCBmb3IgaW5zdGFsbGVkIGV4dGVuc2lvbnMgYW5kIGFkZHMgdGhlbSB0byB0aGUgbWFuaWZlc3QuXG4gICAqIEBwYXJhbSB7U3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zT3B0c30gb3B0c1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gYHRydWVgIGlmIGFueSBleHRlbnNpb25zIHdlcmUgYWRkZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgYXN5bmMgc3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zICh7ZGVwdGhMaW1pdCA9IERFRkFVTFRfU0VBUkNIX0RFUFRIfSA9IHt9KSB7XG4gICAgY29uc3Qgd2Fsa09wdHMgPSBfLmRlZmF1bHRzKHtkZXB0aExpbWl0fSwgREVGQVVMVF9GSU5EX0VYVEVOU0lPTlNfT1BUUyk7XG4gICAgLy8gdGhpcyBjb3VsZCBiZSBwYXJhbGxlbGl6ZWQsIGJ1dCB3ZSBjYW4ndCB1c2UgZnMud2FsayBhcyBhbiBhc3luYyBpdGVyYXRvclxuICAgIGxldCBkaWRDaGFuZ2UgPSBmYWxzZTtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHtzdGF0cywgcGF0aDogZmlsZXBhdGh9IG9mIGZzLndhbGsoXG4gICAgICB0aGlzLl9hcHBpdW1Ib21lLFxuICAgICAgd2Fsa09wdHMsXG4gICAgKSkge1xuICAgICAgaWYgKGZpbGVwYXRoICE9PSB0aGlzLl9hcHBpdW1Ib21lICYmIHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwa2cgPSBhd2FpdCBlbnYucmVhZFBhY2thZ2VJbkRpcihmaWxlcGF0aCk7XG4gICAgICAgICAgaWYgKHBrZyAmJiBpc0V4dGVuc2lvbihwa2cpKSB7XG4gICAgICAgICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBleHRlbnNpb24gYWxyZWFkeSBleGlzdHMgaW4gdGhlIG1hbmlmZXN0LFxuICAgICAgICAgICAgLy8gc28gb25seSB1cGRhdGUgYGRpZENoYW5nZWAgaWYgaXQncyBuZXcuXG4gICAgICAgICAgICBjb25zdCBhZGRlZCA9IHRoaXMuYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UoXG4gICAgICAgICAgICAgIHBrZyxcbiAgICAgICAgICAgICAgcGF0aC5qb2luKGZpbGVwYXRoLCAncGFja2FnZS5qc29uJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZGlkQ2hhbmdlID0gZGlkQ2hhbmdlIHx8IGFkZGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlkQ2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIGRyaXZlciB3aXRoIG5hbWUgYG5hbWVgIGlzIHJlZ2lzdGVyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gRHJpdmVyIG5hbWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBoYXNEcml2ZXIgKG5hbWUpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9kYXRhLmRyaXZlcnNbbmFtZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIHBsdWdpbiB3aXRoIG5hbWUgYG5hbWVgIGlzIHJlZ2lzdGVyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gUGx1Z2luIG5hbWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBoYXNQbHVnaW4gKG5hbWUpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9kYXRhLnBsdWdpbnNbbmFtZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgcGF0aCB0byBhIGBwYWNrYWdlLmpzb25gLCBhZGQgaXQgYXMgZWl0aGVyIGEgZHJpdmVyIG9yIHBsdWdpbiB0byB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIFdpbGwgX25vdF8gb3ZlcndyaXRlIGV4aXN0aW5nIGVudHJpZXMuXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFBhY2thZ2VKc29uPEV4dFR5cGU+fSBwa2dKc29uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwa2dQYXRoXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIGB0cnVlYCB1cG9uIHN1Y2Nlc3MsIGBmYWxzZWAgaWYgdGhlIGV4dGVuc2lvbiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXG4gICAqL1xuICBhZGRFeHRlbnNpb25Gcm9tUGFja2FnZSAocGtnSnNvbiwgcGtnUGF0aCkge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtJbnRlcm5hbE1ldGFkYXRhfVxuICAgICAqL1xuICAgIGNvbnN0IGludGVybmFsID0ge1xuICAgICAgcGtnTmFtZTogcGtnSnNvbi5uYW1lLFxuICAgICAgdmVyc2lvbjogcGtnSnNvbi52ZXJzaW9uLFxuICAgICAgaW5zdGFsbFR5cGU6IElOU1RBTExfVFlQRV9OUE0sXG4gICAgICBpbnN0YWxsU3BlYzogYCR7cGtnSnNvbi5uYW1lfUAke3BrZ0pzb24udmVyc2lvbn1gLFxuICAgIH07XG5cbiAgICBpZiAoaXNEcml2ZXIocGtnSnNvbikpIHtcbiAgICAgIGlmICghdGhpcy5oYXNEcml2ZXIocGtnSnNvbi5hcHBpdW0uZHJpdmVyTmFtZSkpIHtcbiAgICAgICAgdGhpcy5hZGRFeHRlbnNpb24oRFJJVkVSX1RZUEUsIHBrZ0pzb24uYXBwaXVtLmRyaXZlck5hbWUsIHtcbiAgICAgICAgICAuLi5fLm9taXQocGtnSnNvbi5hcHBpdW0sICdkcml2ZXJOYW1lJyksXG4gICAgICAgICAgLi4uaW50ZXJuYWxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoaXNQbHVnaW4ocGtnSnNvbikpIHtcbiAgICAgIGlmICghdGhpcy5oYXNQbHVnaW4ocGtnSnNvbi5hcHBpdW0ucGx1Z2luTmFtZSkpIHtcbiAgICAgICAgdGhpcy5hZGRFeHRlbnNpb24oUExVR0lOX1RZUEUsIHBrZ0pzb24uYXBwaXVtLnBsdWdpbk5hbWUsIHtcbiAgICAgICAgICAuLi5fLm9taXQocGtnSnNvbi5hcHBpdW0sICdwbHVnaW5OYW1lJyksXG4gICAgICAgICAgLi4uaW50ZXJuYWwsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFRoZSBleHRlbnNpb24gaW4gJHtwYXRoLmRpcm5hbWUoXG4gICAgICAgICAgcGtnUGF0aCxcbiAgICAgICAgKX0gaXMgbmVpdGhlciBhIHZhbGlkIGRyaXZlciBub3IgYSB2YWxpZCBwbHVnaW4uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBtYW5pZmVzdCBhcyB3YXMgaW5zdGFsbGVkIGJ5IHRoZSBgYXBwaXVtYCBDTEkuICBUaGVcbiAgICogYGV4dERhdGFgLCBgZXh0VHlwZWAsIGFuZCBgZXh0TmFtZWAgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZXJtaW5lZC5cbiAgICpcbiAgICogU2VlIHtAbGluayBNYW5pZmVzdC5hZGRFeHRlbnNpb25Gcm9tUGFja2FnZX0gZm9yIGFkZGluZyBhbiBleHRlbnNpb24gZnJvbSBhbiBvbi1kaXNrIHBhY2thZ2UuXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGUgLSBgZHJpdmVyYCBvciBgcGx1Z2luYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZSAtIE5hbWUgb2YgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RXh0VHlwZT59IGV4dERhdGEgLSBFeHRlbnNpb24gbWV0YWRhdGFcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhZGRFeHRlbnNpb24gKGV4dFR5cGUsIGV4dE5hbWUsIGV4dERhdGEpIHtcbiAgICB0aGlzLl9kYXRhW2Ake2V4dFR5cGV9c2BdW2V4dE5hbWVdID0gZXh0RGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBUFBJVU1fSE9NRSBwYXRoXG4gICAqL1xuICBnZXQgYXBwaXVtSG9tZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGl1bUhvbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZVxuICAgKi9cbiAgZ2V0IG1hbmlmZXN0UGF0aCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21hbmlmZXN0UGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGV4dGVuc2lvbiBkYXRhIGZvciBhIHBhcnRpY3VsYXIgdHlwZS5cbiAgICpcbiAgICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gICAqIEBwYXJhbSB7RXh0VHlwZX0gZXh0VHlwZVxuICAgKiBAcmV0dXJucyB7RXh0UmVjb3JkPEV4dFR5cGU+fVxuICAgKi9cbiAgZ2V0RXh0ZW5zaW9uRGF0YSAoZXh0VHlwZSkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhWy8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoYCR7ZXh0VHlwZX1zYCldO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIG1hbmlmZXN0IGZyb20gZGlzayBhbmQgX292ZXJ3cml0ZXNfIHRoZSBpbnRlcm5hbCBkYXRhLlxuICAgKlxuICAgKiBJZiB0aGUgbWFuaWZlc3QgZG9lcyBub3QgZXhpc3Qgb24gZGlzaywgYW4ge0BsaW5rIElOSVRJQUxfTUFOSUZFU1RfREFUQSBcImVtcHR5XCJ9IG1hbmlmZXN0IGZpbGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBJZiBgQVBQSVVNX0hPTUVgIGNvbnRhaW5zIGEgYHBhY2thZ2UuanNvbmAgd2l0aCBhbiBgYXBwaXVtYCBkZXBlbmRlbmN5LCB0aGVuIGEgaGFzaCBvZiB0aGUgYHBhY2thZ2UuanNvbmAgd2lsbCBiZSB0YWtlbi4gSWYgdGhpcyBoYXNoIGRpZmZlcnMgZnJvbSB0aGUgbGFzdCBoYXNoLCB0aGUgY29udGVudHMgb2YgYEFQUElVTV9IT01FL25vZGVfbW9kdWxlc2Agd2lsbCBiZSBzY2FubmVkIGZvciBleHRlbnNpb25zIHRoYXQgbWF5IGhhdmUgYmVlbiBpbnN0YWxsZWQgb3V0c2lkZSBvZiB0aGUgYGFwcGl1bWAgQ0xJLiAgQW55IGZvdW5kIGV4dGVuc2lvbnMgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWFuaWZlc3QgZmlsZSwgYW5kIGlmIHNvLCB0aGUgbWFuaWZlc3QgZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gZGlzay5cbiAgICpcbiAgICogT25seSBvbmUgcmVhZCBvcGVyYXRpb24gc2hvdWxkIGhhcHBlbiBhdCBhIHRpbWUuICBUaGlzIGlzIGNvbnRyb2xsZWQgdmlhIHRoZSB7QGxpbmsgTWFuaWZlc3QuX3JlYWRpbmd9IHByb3BlcnR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNYW5pZmVzdERhdGE+fSBUaGUgZGF0YVxuICAgKi9cbiAgYXN5bmMgcmVhZCAoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRpbmcpIHtcbiAgICAgIGF3YWl0IHRoaXMuX3JlYWRpbmc7XG4gICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkaW5nID0gKGFzeW5jICgpID0+IHtcbiAgICAgIC8qKiBAdHlwZSB7TWFuaWZlc3REYXRhfSAqL1xuICAgICAgbGV0IGRhdGE7XG4gICAgICBsZXQgaXNOZXdGaWxlID0gZmFsc2U7XG4gICAgICBhd2FpdCB0aGlzLl9zZXRNYW5pZmVzdFBhdGgoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUmVhZGluZyAke3RoaXMuX21hbmlmZXN0UGF0aH0uLi5gKTtcbiAgICAgICAgY29uc3QgeWFtbCA9IGF3YWl0IGZzLnJlYWRGaWxlKHRoaXMuX21hbmlmZXN0UGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgZGF0YSA9IFlBTUwucGFyc2UoeWFtbCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAgIGRhdGEgPSBfLmNsb25lRGVlcChJTklUSUFMX01BTklGRVNUX0RBVEEpO1xuICAgICAgICAgIGlzTmV3RmlsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuX21hbmlmZXN0UGF0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgQXBwaXVtIGhhZCB0cm91YmxlIGxvYWRpbmcgdGhlIGV4dGVuc2lvbiBpbnN0YWxsYXRpb24gYCArXG4gICAgICAgICAgICAgICAgYGNhY2hlIGZpbGUgKCR7dGhpcy5fbWFuaWZlc3RQYXRofSkuIEl0IG1heSBiZSBpbnZhbGlkIFlBTUwuIFNwZWNpZmljIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBBcHBpdW0gZW5jb3VudGVyZWQgYW4gdW5rbm93biBwcm9ibGVtLiBTcGVjaWZpYyBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgICBsZXQgaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgIGlmIChcbiAgICAgICAgYXdhaXQgZW52Lmhhc0FwcGl1bURlcGVuZGVuY3kodGhpcy5hcHBpdW1Ib21lKSAmJlxuICAgICAgICAoYXdhaXQgcGFja2FnZURpZENoYW5nZSh0aGlzLmFwcGl1bUhvbWUpKVxuICAgICAgKSB7XG4gICAgICAgIGluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkID0gYXdhaXQgdGhpcy5zeW5jV2l0aEluc3RhbGxlZEV4dGVuc2lvbnMoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTmV3RmlsZSB8fCBpbnN0YWxsZWRFeHRlbnNpb25zQ2hhbmdlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlKCk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fcmVhZGluZztcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9yZWFkaW5nID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHtAbGluayBNYW5pZmVzdC5fbWFuaWZlc3RQYXRofSBpcyBzZXQuXG4gICAqXG4gICAqIENyZWF0ZXMgdGhlIGRpcmVjdG9yeSBpZiBuZWNlc3NhcnkuXG4gICAqIEBwcml2YXRlXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBhc3luYyBfc2V0TWFuaWZlc3RQYXRoICgpIHtcbiAgICBpZiAoIXRoaXMuX21hbmlmZXN0UGF0aCkge1xuICAgICAgdGhpcy5fbWFuaWZlc3RQYXRoID0gYXdhaXQgZW52LnJlc29sdmVNYW5pZmVzdFBhdGgodGhpcy5fYXBwaXVtSG9tZSk7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKHBhdGgucmVsYXRpdmUodGhpcy5fYXBwaXVtSG9tZSwgdGhpcy5fbWFuaWZlc3RQYXRoKS5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNaXNtYXRjaCBiZXR3ZWVuIGxvY2F0aW9uIG9mIEFQUElVTV9IT01FIGFuZCBtYW5pZmVzdCBmaWxlLiBBUFBJVU1fSE9NRTogJHt0aGlzLmFwcGl1bUhvbWV9LCBtYW5pZmVzdCBmaWxlOiAke3RoaXMuX21hbmlmZXN0UGF0aH1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tYW5pZmVzdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBkYXRhIGlmIGl0IG5lZWQgcyB3cml0aW5nLlxuICAgKlxuICAgKiBJZiB0aGUgYHNjaGVtYVJldmAgcHJvcCBuZWVkcyB1cGRhdGluZywgdGhlIGZpbGUgd2lsbCBiZSB3cml0dGVuLlxuICAgKlxuICAgKiBAdG9kbyBJZiB0aGlzIGJlY29tZXMgdG9vIG11Y2ggb2YgYSBib3R0bGVuZWNrLCB0aHJvdHRsZSBpdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IFdoZXRoZXIgdGhlIGRhdGEgd2FzIHdyaXR0ZW5cbiAgICovXG4gIGFzeW5jIHdyaXRlICgpIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykge1xuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRpbmc7XG4gICAgfVxuICAgIHRoaXMuX3dyaXRpbmcgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5fc2V0TWFuaWZlc3RQYXRoKCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy5ta2RpcnAocGF0aC5kaXJuYW1lKHRoaXMuX21hbmlmZXN0UGF0aCkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwaXVtIGNvdWxkIG5vdCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIG1hbmlmZXN0IGZpbGU6ICR7cGF0aC5kaXJuYW1lKFxuICAgICAgICAgICAgdGhpcy5fbWFuaWZlc3RQYXRoLFxuICAgICAgICAgICl9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKFxuICAgICAgICAgIHRoaXMuX21hbmlmZXN0UGF0aCxcbiAgICAgICAgICBZQU1MLnN0cmluZ2lmeSh0aGlzLl9kYXRhKSxcbiAgICAgICAgICAndXRmOCcsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwaXVtIGNvdWxkIG5vdCB3cml0ZSB0byBtYW5pZmVzdCBhdCAke3RoaXMuX21hbmlmZXN0UGF0aH0gdXNpbmcgQVBQSVVNX0hPTUUgJHt0aGlzLl9hcHBpdW1Ib21lfS4gYCArXG4gICAgICAgICAgICBgUGxlYXNlIGVuc3VyZSBpdCBpcyB3cml0YWJsZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fd3JpdGluZztcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fd3JpdGluZyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBzdHJpbmcgcmVmZXJyaW5nIHRvIGEgZHJpdmVyICh0eXBpY2FsbHkgYXMgYSBrZXkgb3IgdHlwZSBzdHJpbmcpXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqL1xuXG4vKipcbiAqIFR5cGUgb2YgdGhlIHN0cmluZyByZWZlcnJpbmcgdG8gYSBwbHVnaW4gKHR5cGljYWxseSBhcyBhIGtleSBvciB0eXBlIHN0cmluZylcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgU3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zT3B0c1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtkZXB0aExpbWl0XSAtIE1heGltdW0gZGVwdGggdG8gcmVjdXJzZSBpbnRvIHN1YmRpcmVjdG9yaWVzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5NYW5pZmVzdERhdGF9IE1hbmlmZXN0RGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuSW50ZXJuYWxNZXRhZGF0YX0gSW50ZXJuYWxNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVybmFsLW1hbmlmZXN0JykuRXh0UGFja2FnZUpzb248VD59IEV4dFBhY2thZ2VKc29uXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0UmVjb3JkPFQ+fSBFeHRSZWNvcmRcbiAqL1xuXG4vKipcbiAqIEVpdGhlciBgZHJpdmVyYCBvciBgcGx1Z2luYCByblxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cblxuIl19
246
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1NFQVJDSF9ERVBUSCIsIkRFRkFVTFRfRklORF9FWFRFTlNJT05TX09QVFMiLCJPYmplY3QiLCJmcmVlemUiLCJkZXB0aExpbWl0IiwiZmlsdGVyIiwiZmlsZXBhdGgiLCJwYXRoIiwiYmFzZW5hbWUiLCJzdGFydHNXaXRoIiwiQ09ORklHX1NDSEVNQV9SRVYiLCJDT05GSUdfREFUQV9EUklWRVJfS0VZIiwiRFJJVkVSX1RZUEUiLCJDT05GSUdfREFUQV9QTFVHSU5fS0VZIiwiUExVR0lOX1RZUEUiLCJJTklUSUFMX01BTklGRVNUX0RBVEEiLCJzY2hlbWFSZXYiLCJpc0V4dGVuc2lvbiIsInZhbHVlIiwiXyIsImlzUGxhaW5PYmplY3QiLCJhcHBpdW0iLCJpc1N0cmluZyIsIm5hbWUiLCJ2ZXJzaW9uIiwiaXNEcml2ZXIiLCJnZXQiLCJpc0FycmF5IiwiaXNQbHVnaW4iLCJNYW5pZmVzdCIsIl9kYXRhIiwiX2FwcGl1bUhvbWUiLCJfbWFuaWZlc3RQYXRoIiwiX3dyaXRpbmciLCJfcmVhZGluZyIsImNvbnN0cnVjdG9yIiwiYXBwaXVtSG9tZSIsImNsb25lRGVlcCIsImdldEluc3RhbmNlIiwibWVtb2l6ZSIsIl9nZXRJbnN0YW5jZSIsInN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucyIsIndhbGtPcHRzIiwiZGVmYXVsdHMiLCJkaWRDaGFuZ2UiLCJzdGF0cyIsImZzIiwid2FsayIsImlzRGlyZWN0b3J5IiwicGtnIiwiZW52IiwicmVhZFBhY2thZ2VJbkRpciIsImFkZGVkIiwiYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UiLCJqb2luIiwiaGFzRHJpdmVyIiwiQm9vbGVhbiIsImRyaXZlcnMiLCJoYXNQbHVnaW4iLCJwbHVnaW5zIiwicGtnSnNvbiIsInBrZ1BhdGgiLCJpbnRlcm5hbCIsInBrZ05hbWUiLCJpbnN0YWxsVHlwZSIsIklOU1RBTExfVFlQRV9OUE0iLCJpbnN0YWxsU3BlYyIsImRyaXZlck5hbWUiLCJhZGRFeHRlbnNpb24iLCJvbWl0IiwicGx1Z2luTmFtZSIsIlR5cGVFcnJvciIsImRpcm5hbWUiLCJleHRUeXBlIiwiZXh0TmFtZSIsImV4dERhdGEiLCJtYW5pZmVzdFBhdGgiLCJnZXRFeHRlbnNpb25EYXRhIiwicmVhZCIsImRhdGEiLCJpc05ld0ZpbGUiLCJfc2V0TWFuaWZlc3RQYXRoIiwibG9nIiwiZGVidWciLCJ5YW1sIiwicmVhZEZpbGUiLCJZQU1MIiwicGFyc2UiLCJlcnIiLCJjb2RlIiwiRXJyb3IiLCJtZXNzYWdlIiwiaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQiLCJoYXNBcHBpdW1EZXBlbmRlbmN5Iiwid3JpdGUiLCJ1bmRlZmluZWQiLCJyZXNvbHZlTWFuaWZlc3RQYXRoIiwicmVsYXRpdmUiLCJta2RpcnAiLCJ3cml0ZUZpbGUiLCJzdHJpbmdpZnkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9uL21hbmlmZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIGNvbnRhaW5pbmcge0BsaW5rIE1hbmlmZXN0fSB3aGljaCBoYW5kbGVzIHJlYWRpbmcgJiB3cml0aW5nIG9mIGV4dGVuc2lvbiBjb25maWcgZmlsZXMuXG4gKi9cblxuaW1wb3J0IHsgZW52LCBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgWUFNTCBmcm9tICd5YW1sJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVfTlBNIH0gZnJvbSAnLi9leHRlbnNpb24tY29uZmlnJztcbmltcG9ydCB7IHBhY2thZ2VEaWRDaGFuZ2UgfSBmcm9tICcuL3BhY2thZ2UtY2hhbmdlZCc7XG5cbi8qKlxuICogRGVmYXVsdCBkZXB0aCB0byBzZWFyY2ggaW4gZGlyZWN0b3J5IHRyZWUgZm9yIHdoYXRldmVyIGl0IGlzIHdlJ3JlIGxvb2tpbmcgZm9yLlxuICpcbiAqIEl0J3MgNCBiZWNhdXNlIHNtYWxsZXIgbnVtYmVycyBkaWRuJ3Qgd29yay5cbiAqL1xuY29uc3QgREVGQVVMVF9TRUFSQ0hfREVQVEggPSA0O1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3Ige0BsaW5rIGZpbmRFeHRlbnNpb25zfS5cbiAqIEB0eXBlIHtSZWFkb25seTxpbXBvcnQoJ2tsYXcnKS5PcHRpb25zPn1cbiAqL1xuY29uc3QgREVGQVVMVF9GSU5EX0VYVEVOU0lPTlNfT1BUUyA9IE9iamVjdC5mcmVlemUoe1xuICBkZXB0aExpbWl0OiBERUZBVUxUX1NFQVJDSF9ERVBUSCxcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgZmlsdGVyOiAoZmlsZXBhdGgpID0+ICFwYXRoLmJhc2VuYW1lKGZpbGVwYXRoKS5zdGFydHNXaXRoKCcuJyksXG59KTtcblxuLyoqXG4gKiBDdXJyZW50IGNvbmZpZ3VyYXRpb24gc2NoZW1hIHJldmlzaW9uIVxuICovXG5jb25zdCBDT05GSUdfU0NIRU1BX1JFViA9IDI7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHByb3AgKGBkcml2ZXJzYCkgdXNlZCBpbiBgZXh0ZW5zaW9ucy55YW1sYCBmb3IgZHJpdmVycy5cbiAqIEB0eXBlIHtgJHt0eXBlb2YgRFJJVkVSX1RZUEV9c2B9XG4gKi9cbmNvbnN0IENPTkZJR19EQVRBX0RSSVZFUl9LRVkgPSBgJHtEUklWRVJfVFlQRX1zYDtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJvcCAoYHBsdWdpbnNgKSB1c2VkIGluIGBleHRlbnNpb25zLnlhbWxgIGZvciBwbHVnaW5zLlxuICogQHR5cGUge2Ake3R5cGVvZiBQTFVHSU5fVFlQRX1zYH1cbiAqL1xuY29uc3QgQ09ORklHX0RBVEFfUExVR0lOX0tFWSA9IGAke1BMVUdJTl9UWVBFfXNgO1xuXG4vKipcbiAqIEB0eXBlIHtSZWFkb25seTxNYW5pZmVzdERhdGE+fVxuICovXG5jb25zdCBJTklUSUFMX01BTklGRVNUX0RBVEEgPSBPYmplY3QuZnJlZXplKHtcbiAgW0NPTkZJR19EQVRBX0RSSVZFUl9LRVldOiBPYmplY3QuZnJlZXplKHt9KSxcbiAgW0NPTkZJR19EQVRBX1BMVUdJTl9LRVldOiBPYmplY3QuZnJlZXplKHt9KSxcbiAgc2NoZW1hUmV2OiBDT05GSUdfU0NIRU1BX1JFVixcbn0pO1xuXG4vKipcbiAqIEdpdmVuIGEgYHBhY2thZ2UuanNvbmAgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBFeHRlbnNpb24gKGVpdGhlciBhIGRyaXZlciBvciBwbHVnaW4pLlxuICpcbiAqIFRoZSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYW4gYGFwcGl1bWAgcHJvcGVydHkgd2hpY2ggaXMgYW4gb2JqZWN0LlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgRXh0UGFja2FnZUpzb248RXh0ZW5zaW9uVHlwZT59XG4gKi9cbmZ1bmN0aW9uIGlzRXh0ZW5zaW9uICh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIF8uaXNQbGFpbk9iamVjdCh2YWx1ZSkgJiZcbiAgICBfLmlzUGxhaW5PYmplY3QodmFsdWUuYXBwaXVtKSAmJlxuICAgIF8uaXNTdHJpbmcodmFsdWUubmFtZSkgJiZcbiAgICBfLmlzU3RyaW5nKHZhbHVlLnZlcnNpb24pXG4gICk7XG59XG4vKipcbiAqIEdpdmVuIGEgYHBhY2thZ2UuanNvbmAsIHJldHVybiBgdHJ1ZWAgaWYgaXQgcmVwcmVzZW50cyBhbiBBcHBpdW0gRHJpdmVyLlxuICpcbiAqIFRvIGJlIGNvbnNpZGVyZWQgYSBkcml2ZXIsIGEgYHBhY2thZ2UuanNvbmAgbXVzdCBoYXZlIGEgZmllbGRzXG4gKiBgYXBwaXVtLmRyaXZlck5hbWVgLCBgYXBwaXVtLmF1dG9tYXRpb25OYW1lYCBhbmQgYGFwcGl1bS5wbGF0Zm9ybU5hbWVzYC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxEcml2ZXJUeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNEcml2ZXIgKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgaXNFeHRlbnNpb24odmFsdWUpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5kcml2ZXJOYW1lJykpICYmXG4gICAgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5hdXRvbWF0aW9uTmFtZScpKSAmJlxuICAgIF8uaXNBcnJheShfLmdldCh2YWx1ZSwgJ2FwcGl1bS5wbGF0Zm9ybU5hbWVzJykpXG4gICk7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBgcGFja2FnZS5qc29uYCwgcmV0dXJuIGB0cnVlYCBpZiBpdCByZXByZXNlbnRzIGFuIEFwcGl1bSBQbHVnaW4uXG4gKlxuICogVG8gYmUgY29uc2lkZXJlZCBhIHBsdWdpbiwgYSBgcGFja2FnZS5qc29uYCBtdXN0IGhhdmUgYW4gYGFwcGl1bS5wbHVnaW5OYW1lYCBmaWVsZC5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBFeHRQYWNrYWdlSnNvbjxQbHVnaW5UeXBlPn1cbiAqL1xuZnVuY3Rpb24gaXNQbHVnaW4gKHZhbHVlKSB7XG4gIHJldHVybiBpc0V4dGVuc2lvbih2YWx1ZSkgJiYgXy5pc1N0cmluZyhfLmdldCh2YWx1ZSwgJ2FwcGl1bS5wbHVnaW5OYW1lJykpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgcmVhZGluZyAmIHdyaXRpbmcgb2YgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlcy5cbiAqXG4gKiBPbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGV4aXN0cyBwZXIgdmFsdWUgb2YgYEFQUElVTV9IT01FYC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBwYXJzZWQgWUFNTCBleHRlbnNpb24gY29uZmlnIGZpbGUuXG4gICAqXG4gICAqIENvbnRhaW5zIHByb3hpZXMgZm9yIGF1dG9tYXRpYyBwZXJzaXN0ZW5jZSBvbiBkaXNrXG4gICAqIEB0eXBlIHtNYW5pZmVzdERhdGF9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfZGF0YTtcblxuICAvKipcbiAgICogUGF0aCB0byBgQVBQSVVNX0hPTUVgLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdHlwZSB7UmVhZG9ubHk8c3RyaW5nPn1cbiAgICovXG4gIF9hcHBpdW1Ib21lO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGBleHRlbnNpb25zLnlhbWxgXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIE5vdCBzZXQgdW50aWwge0BsaW5rIE1hbmlmZXN0LnJlYWR9IGlzIGNhbGxlZC5cbiAgICovXG4gIF9tYW5pZmVzdFBhdGg7XG5cbiAgLyoqXG4gICAqIEhlbHBzIGF2b2lkIHdyaXRpbmcgbXVsdGlwbGUgdGltZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHVuZGVmaW5lZGAsIGNhbGxpbmcge0BsaW5rIE1hbmlmZXN0LndyaXRlfSB3aWxsIGNhdXNlIGl0IHRvIGJlXG4gICAqIHNldCB0byBhIGBQcm9taXNlYC4gV2hlbiB0aGUgY2FsbCB0byBgd3JpdGUoKWAgaXMgY29tcGxldGUsIHRoZSBgUHJvbWlzZWBcbiAgICogd2lsbCByZXNvbHZlIGFuZCB0aGVuIHRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAuICBDb25jdXJyZW50IGNhbGxzXG4gICAqIG1hZGUgd2hpbGUgdGhpcyB2YWx1ZSBpcyBhIGBQcm9taXNlYCB3aWxsIHJldHVybiB0aGUgYFByb21pc2VgIGl0c2VsZi5cbiAgICogQHByaXZhdGVcbiAgICogQHR5cGUge1Byb21pc2U8Ym9vbGVhbj58dW5kZWZpbmVkfVxuICAgKi9cbiAgX3dyaXRpbmc7XG5cbiAgLyoqXG4gICAqIEhlbHBzIGF2b2lkIHJlYWRpbmcgbXVsdGlwbGUgdGltZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHVuZGVmaW5lZGAsIGNhbGxpbmcge0BsaW5rIE1hbmlmZXN0LnJlYWR9IHdpbGwgY2F1c2UgaXQgdG8gYmVcbiAgICogc2V0IHRvIGEgYFByb21pc2VgLiBXaGVuIHRoZSBjYWxsIHRvIGByZWFkKClgIGlzIGNvbXBsZXRlLCB0aGUgYFByb21pc2VgXG4gICAqIHdpbGwgcmVzb2x2ZSBhbmQgdGhlbiB0aGlzIHZhbHVlIHdpbGwgYmUgc2V0IHRvIGB1bmRlZmluZWRgLiAgQ29uY3VycmVudCBjYWxsc1xuICAgKiBtYWRlIHdoaWxlIHRoaXMgdmFsdWUgaXMgYSBgUHJvbWlzZWAgd2lsbCByZXR1cm4gdGhlIGBQcm9taXNlYCBpdHNlbGYuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0eXBlIHtQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZH1cbiAgICovXG4gIF9yZWFkaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIGludGVybmFsIGRhdGEgdG8gYSBmcmVzaCBjbG9uZSBvZiB7QGxpbmsgSU5JVElBTF9NQU5JRkVTVF9EQVRBfVxuICAgKlxuICAgKiBVc2Uge0BsaW5rIE1hbmlmZXN0LmdldEluc3RhbmNlfSBpbnN0ZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IgKGFwcGl1bUhvbWUpIHtcbiAgICB0aGlzLl9hcHBpdW1Ib21lID0gYXBwaXVtSG9tZTtcbiAgICB0aGlzLl9kYXRhID0gXy5jbG9uZURlZXAoSU5JVElBTF9NQU5JRkVTVF9EQVRBKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IG9yIGV4aXN0aW5nIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2UsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBgYXBwaXVtSG9tZWAuXG4gICAqXG4gICAqIE1haW50YWlucyBvbmUgaW5zdGFuY2UgcGVyIHZhbHVlIG9mIGBhcHBpdW1Ib21lYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcGl1bUhvbWUgLSBQYXRoIHRvIGBBUFBJVU1fSE9NRWBcbiAgICogQHJldHVybnMge01hbmlmZXN0fVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlID0gXy5tZW1vaXplKGZ1bmN0aW9uIF9nZXRJbnN0YW5jZSAoXG4gICAgYXBwaXVtSG9tZSxcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBNYW5pZmVzdChhcHBpdW1Ib21lKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGBBUFBJVU1fSE9NRWAgZm9yIGluc3RhbGxlZCBleHRlbnNpb25zIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0ge1N5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9uc09wdHN9IG9wdHNcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IGB0cnVlYCBpZiBhbnkgZXh0ZW5zaW9ucyB3ZXJlIGFkZGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIHN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9ucyAoe2RlcHRoTGltaXQgPSBERUZBVUxUX1NFQVJDSF9ERVBUSH0gPSB7fSkge1xuICAgIGNvbnN0IHdhbGtPcHRzID0gXy5kZWZhdWx0cyh7ZGVwdGhMaW1pdH0sIERFRkFVTFRfRklORF9FWFRFTlNJT05TX09QVFMpO1xuICAgIC8vIHRoaXMgY291bGQgYmUgcGFyYWxsZWxpemVkLCBidXQgd2UgY2FuJ3QgdXNlIGZzLndhbGsgYXMgYW4gYXN5bmMgaXRlcmF0b3JcbiAgICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gICAgZm9yIGF3YWl0IChjb25zdCB7c3RhdHMsIHBhdGg6IGZpbGVwYXRofSBvZiBmcy53YWxrKFxuICAgICAgdGhpcy5fYXBwaXVtSG9tZSxcbiAgICAgIHdhbGtPcHRzLFxuICAgICkpIHtcbiAgICAgIGlmIChmaWxlcGF0aCAhPT0gdGhpcy5fYXBwaXVtSG9tZSAmJiBzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGtnID0gYXdhaXQgZW52LnJlYWRQYWNrYWdlSW5EaXIoZmlsZXBhdGgpO1xuICAgICAgICAgIGlmIChwa2cgJiYgaXNFeHRlbnNpb24ocGtnKSkge1xuICAgICAgICAgICAgLy8gaXQncyBwb3NzaWJsZSB0aGF0IHRoaXMgZXh0ZW5zaW9uIGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYW5pZmVzdCxcbiAgICAgICAgICAgIC8vIHNvIG9ubHkgdXBkYXRlIGBkaWRDaGFuZ2VgIGlmIGl0J3MgbmV3LlxuICAgICAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLmFkZEV4dGVuc2lvbkZyb21QYWNrYWdlKFxuICAgICAgICAgICAgICBwa2csXG4gICAgICAgICAgICAgIHBhdGguam9pbihmaWxlcGF0aCwgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRpZENoYW5nZSA9IGRpZENoYW5nZSB8fCBhZGRlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpZENoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBkcml2ZXIgd2l0aCBuYW1lIGBuYW1lYCBpcyByZWdpc3RlcmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIERyaXZlciBuYW1lXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzRHJpdmVyIChuYW1lKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZGF0YS5kcml2ZXJzW25hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBwbHVnaW4gd2l0aCBuYW1lIGBuYW1lYCBpcyByZWdpc3RlcmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFBsdWdpbiBuYW1lXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaGFzUGx1Z2luIChuYW1lKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fZGF0YS5wbHVnaW5zW25hbWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIHBhdGggdG8gYSBgcGFja2FnZS5qc29uYCwgYWRkIGl0IGFzIGVpdGhlciBhIGRyaXZlciBvciBwbHVnaW4gdG8gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBXaWxsIF9ub3RfIG92ZXJ3cml0ZSBleGlzdGluZyBlbnRyaWVzLlxuICAgKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn0gcGtnSnNvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnUGF0aFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBgdHJ1ZWAgdXBvbiBzdWNjZXNzLCBgZmFsc2VgIGlmIHRoZSBleHRlbnNpb24gaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuICAgKi9cbiAgYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2UgKHBrZ0pzb24sIHBrZ1BhdGgpIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7SW50ZXJuYWxNZXRhZGF0YX1cbiAgICAgKi9cbiAgICBjb25zdCBpbnRlcm5hbCA9IHtcbiAgICAgIHBrZ05hbWU6IHBrZ0pzb24ubmFtZSxcbiAgICAgIHZlcnNpb246IHBrZ0pzb24udmVyc2lvbixcbiAgICAgIGluc3RhbGxUeXBlOiBJTlNUQUxMX1RZUEVfTlBNLFxuICAgICAgaW5zdGFsbFNwZWM6IGAke3BrZ0pzb24ubmFtZX1AJHtwa2dKc29uLnZlcnNpb259YCxcbiAgICB9O1xuXG4gICAgaWYgKGlzRHJpdmVyKHBrZ0pzb24pKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzRHJpdmVyKHBrZ0pzb24uYXBwaXVtLmRyaXZlck5hbWUpKSB7XG4gICAgICAgIHRoaXMuYWRkRXh0ZW5zaW9uKERSSVZFUl9UWVBFLCBwa2dKc29uLmFwcGl1bS5kcml2ZXJOYW1lLCB7XG4gICAgICAgICAgLi4uXy5vbWl0KHBrZ0pzb24uYXBwaXVtLCAnZHJpdmVyTmFtZScpLFxuICAgICAgICAgIC4uLmludGVybmFsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGlzUGx1Z2luKHBrZ0pzb24pKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzUGx1Z2luKHBrZ0pzb24uYXBwaXVtLnBsdWdpbk5hbWUpKSB7XG4gICAgICAgIHRoaXMuYWRkRXh0ZW5zaW9uKFBMVUdJTl9UWVBFLCBwa2dKc29uLmFwcGl1bS5wbHVnaW5OYW1lLCB7XG4gICAgICAgICAgLi4uXy5vbWl0KHBrZ0pzb24uYXBwaXVtLCAncGx1Z2luTmFtZScpLFxuICAgICAgICAgIC4uLmludGVybmFsLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBUaGUgZXh0ZW5zaW9uIGluICR7cGF0aC5kaXJuYW1lKFxuICAgICAgICAgIHBrZ1BhdGgsXG4gICAgICAgICl9IGlzIG5laXRoZXIgYSB2YWxpZCBkcml2ZXIgbm9yIGEgdmFsaWQgcGx1Z2luLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV4dGVuc2lvbiB0byB0aGUgbWFuaWZlc3QgYXMgd2FzIGluc3RhbGxlZCBieSB0aGUgYGFwcGl1bWAgQ0xJLiAgVGhlXG4gICAqIGBleHREYXRhYCwgYGV4dFR5cGVgLCBhbmQgYGV4dE5hbWVgIGhhdmUgYWxyZWFkeSBiZWVuIGRldGVybWluZWQuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgTWFuaWZlc3QuYWRkRXh0ZW5zaW9uRnJvbVBhY2thZ2V9IGZvciBhZGRpbmcgYW4gZXh0ZW5zaW9uIGZyb20gYW4gb24tZGlzayBwYWNrYWdlLlxuICAgKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAgICogQHBhcmFtIHtFeHRUeXBlfSBleHRUeXBlIC0gYGRyaXZlcmAgb3IgYHBsdWdpbmBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWUgLSBOYW1lIG9mIGV4dGVuc2lvblxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PEV4dFR5cGU+fSBleHREYXRhIC0gRXh0ZW5zaW9uIG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYWRkRXh0ZW5zaW9uIChleHRUeXBlLCBleHROYW1lLCBleHREYXRhKSB7XG4gICAgdGhpcy5fZGF0YVtgJHtleHRUeXBlfXNgXVtleHROYW1lXSA9IGV4dERhdGE7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQVBQSVVNX0hPTUUgcGF0aFxuICAgKi9cbiAgZ2V0IGFwcGl1bUhvbWUgKCkge1xuICAgIHJldHVybiB0aGlzLl9hcHBpdW1Ib21lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGVcbiAgICovXG4gIGdldCBtYW5pZmVzdFBhdGggKCkge1xuICAgIHJldHVybiB0aGlzLl9tYW5pZmVzdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBleHRlbnNpb24gZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICAgKiBAcGFyYW0ge0V4dFR5cGV9IGV4dFR5cGVcbiAgICogQHJldHVybnMge0V4dFJlY29yZDxFeHRUeXBlPn1cbiAgICovXG4gIGdldEV4dGVuc2lvbkRhdGEgKGV4dFR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke2V4dFR5cGV9c2ApXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBtYW5pZmVzdCBmcm9tIGRpc2sgYW5kIF9vdmVyd3JpdGVzXyB0aGUgaW50ZXJuYWwgZGF0YS5cbiAgICpcbiAgICogSWYgdGhlIG1hbmlmZXN0IGRvZXMgbm90IGV4aXN0IG9uIGRpc2ssIGFuIHtAbGluayBJTklUSUFMX01BTklGRVNUX0RBVEEgXCJlbXB0eVwifSBtYW5pZmVzdCBmaWxlIHdpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogSWYgYEFQUElVTV9IT01FYCBjb250YWlucyBhIGBwYWNrYWdlLmpzb25gIHdpdGggYW4gYGFwcGl1bWAgZGVwZW5kZW5jeSwgdGhlbiBhIGhhc2ggb2YgdGhlIGBwYWNrYWdlLmpzb25gIHdpbGwgYmUgdGFrZW4uIElmIHRoaXMgaGFzaCBkaWZmZXJzIGZyb20gdGhlIGxhc3QgaGFzaCwgdGhlIGNvbnRlbnRzIG9mIGBBUFBJVU1fSE9NRS9ub2RlX21vZHVsZXNgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZXh0ZW5zaW9ucyB0aGF0IG1heSBoYXZlIGJlZW4gaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIGBhcHBpdW1gIENMSS4gIEFueSBmb3VuZCBleHRlbnNpb25zIHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1hbmlmZXN0IGZpbGUsIGFuZCBpZiBzbywgdGhlIG1hbmlmZXN0IGZpbGUgd2lsbCBiZSB3cml0dGVuIHRvIGRpc2suXG4gICAqXG4gICAqIE9ubHkgb25lIHJlYWQgb3BlcmF0aW9uIHNob3VsZCBoYXBwZW4gYXQgYSB0aW1lLiAgVGhpcyBpcyBjb250cm9sbGVkIHZpYSB0aGUge0BsaW5rIE1hbmlmZXN0Ll9yZWFkaW5nfSBwcm9wZXJ0eS5cbiAgICogQHJldHVybnMge1Byb21pc2U8TWFuaWZlc3REYXRhPn0gVGhlIGRhdGFcbiAgICovXG4gIGFzeW5jIHJlYWQgKCkge1xuICAgIGlmICh0aGlzLl9yZWFkaW5nKSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWFkaW5nO1xuICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVhZGluZyA9IChhc3luYyAoKSA9PiB7XG4gICAgICAvKiogQHR5cGUge01hbmlmZXN0RGF0YX0gKi9cbiAgICAgIGxldCBkYXRhO1xuICAgICAgbGV0IGlzTmV3RmlsZSA9IGZhbHNlO1xuICAgICAgYXdhaXQgdGhpcy5fc2V0TWFuaWZlc3RQYXRoKCk7XG4gICAgICB0cnkge1xuICAgICAgICBsb2cuZGVidWcoYFJlYWRpbmcgJHt0aGlzLl9tYW5pZmVzdFBhdGh9Li4uYCk7XG4gICAgICAgIGNvbnN0IHlhbWwgPSBhd2FpdCBmcy5yZWFkRmlsZSh0aGlzLl9tYW5pZmVzdFBhdGgsICd1dGY4Jyk7XG4gICAgICAgIGRhdGEgPSBZQU1MLnBhcnNlKHlhbWwpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICBkYXRhID0gXy5jbG9uZURlZXAoSU5JVElBTF9NQU5JRkVTVF9EQVRBKTtcbiAgICAgICAgICBpc05ld0ZpbGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLl9tYW5pZmVzdFBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYEFwcGl1bSBoYWQgdHJvdWJsZSBsb2FkaW5nIHRoZSBleHRlbnNpb24gaW5zdGFsbGF0aW9uIGAgK1xuICAgICAgICAgICAgICAgIGBjYWNoZSBmaWxlICgke3RoaXMuX21hbmlmZXN0UGF0aH0pLiBJdCBtYXkgYmUgaW52YWxpZCBZQU1MLiBTcGVjaWZpYyBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgQXBwaXVtIGVuY291bnRlcmVkIGFuIHVua25vd24gcHJvYmxlbS4gU3BlY2lmaWMgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgbGV0IGluc3RhbGxlZEV4dGVuc2lvbnNDaGFuZ2VkID0gZmFsc2U7XG4gICAgICBpZiAoXG4gICAgICAgIGF3YWl0IGVudi5oYXNBcHBpdW1EZXBlbmRlbmN5KHRoaXMuYXBwaXVtSG9tZSkgJiZcbiAgICAgICAgKGF3YWl0IHBhY2thZ2VEaWRDaGFuZ2UodGhpcy5hcHBpdW1Ib21lKSlcbiAgICAgICkge1xuICAgICAgICBpbnN0YWxsZWRFeHRlbnNpb25zQ2hhbmdlZCA9IGF3YWl0IHRoaXMuc3luY1dpdGhJbnN0YWxsZWRFeHRlbnNpb25zKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc05ld0ZpbGUgfHwgaW5zdGFsbGVkRXh0ZW5zaW9uc0NoYW5nZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZSgpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3JlYWRpbmc7XG4gICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fcmVhZGluZyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlcyB7QGxpbmsgTWFuaWZlc3QuX21hbmlmZXN0UGF0aH0gaXMgc2V0LlxuICAgKlxuICAgKiBDcmVhdGVzIHRoZSBkaXJlY3RvcnkgaWYgbmVjZXNzYXJ5LlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgX3NldE1hbmlmZXN0UGF0aCAoKSB7XG4gICAgaWYgKCF0aGlzLl9tYW5pZmVzdFBhdGgpIHtcbiAgICAgIHRoaXMuX21hbmlmZXN0UGF0aCA9IGF3YWl0IGVudi5yZXNvbHZlTWFuaWZlc3RQYXRoKHRoaXMuX2FwcGl1bUhvbWUpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChwYXRoLnJlbGF0aXZlKHRoaXMuX2FwcGl1bUhvbWUsIHRoaXMuX21hbmlmZXN0UGF0aCkuc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTWlzbWF0Y2ggYmV0d2VlbiBsb2NhdGlvbiBvZiBBUFBJVU1fSE9NRSBhbmQgbWFuaWZlc3QgZmlsZS4gQVBQSVVNX0hPTUU6ICR7dGhpcy5hcHBpdW1Ib21lfSwgbWFuaWZlc3QgZmlsZTogJHt0aGlzLl9tYW5pZmVzdFBhdGh9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWFuaWZlc3RQYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyB0aGUgZGF0YSBpZiBpdCBuZWVkIHMgd3JpdGluZy5cbiAgICpcbiAgICogSWYgdGhlIGBzY2hlbWFSZXZgIHByb3AgbmVlZHMgdXBkYXRpbmcsIHRoZSBmaWxlIHdpbGwgYmUgd3JpdHRlbi5cbiAgICpcbiAgICogQHRvZG8gSWYgdGhpcyBiZWNvbWVzIHRvbyBtdWNoIG9mIGEgYm90dGxlbmVjaywgdGhyb3R0bGUgaXQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIHRoZSBkYXRhIHdhcyB3cml0dGVuXG4gICAqL1xuICBhc3luYyB3cml0ZSAoKSB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0aW5nO1xuICAgIH1cbiAgICB0aGlzLl93cml0aW5nID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuX3NldE1hbmlmZXN0UGF0aCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZnMubWtkaXJwKHBhdGguZGlybmFtZSh0aGlzLl9tYW5pZmVzdFBhdGgpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcGl1bSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBtYW5pZmVzdCBmaWxlOiAke3BhdGguZGlybmFtZShcbiAgICAgICAgICAgIHRoaXMuX21hbmlmZXN0UGF0aCxcbiAgICAgICAgICApfS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgICAgICB0aGlzLl9tYW5pZmVzdFBhdGgsXG4gICAgICAgICAgWUFNTC5zdHJpbmdpZnkodGhpcy5fZGF0YSksXG4gICAgICAgICAgJ3V0ZjgnLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcGl1bSBjb3VsZCBub3Qgd3JpdGUgdG8gbWFuaWZlc3QgYXQgJHt0aGlzLl9tYW5pZmVzdFBhdGh9IHVzaW5nIEFQUElVTV9IT01FICR7dGhpcy5fYXBwaXVtSG9tZX0uIGAgK1xuICAgICAgICAgICAgYFBsZWFzZSBlbnN1cmUgaXQgaXMgd3JpdGFibGUuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dyaXRpbmc7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3dyaXRpbmcgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVHlwZSBvZiB0aGUgc3RyaW5nIHJlZmVycmluZyB0byBhIGRyaXZlciAodHlwaWNhbGx5IGFzIGEga2V5IG9yIHR5cGUgc3RyaW5nKVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKi9cblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBzdHJpbmcgcmVmZXJyaW5nIHRvIGEgcGx1Z2luICh0eXBpY2FsbHkgYXMgYSBrZXkgb3IgdHlwZSBzdHJpbmcpXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFN5bmNXaXRoSW5zdGFsbGVkRXh0ZW5zaW9uc09wdHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbZGVwdGhMaW1pdF0gLSBNYXhpbXVtIGRlcHRoIHRvIHJlY3Vyc2UgaW50byBzdWJkaXJlY3Rvcmllc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuTWFuaWZlc3REYXRhfSBNYW5pZmVzdERhdGFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkludGVybmFsTWV0YWRhdGF9IEludGVybmFsTWV0YWRhdGFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkV4dFBhY2thZ2VKc29uPFQ+fSBFeHRQYWNrYWdlSnNvblxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkV4dE1hbmlmZXN0PFQ+fSBFeHRNYW5pZmVzdFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkV4dFJlY29yZDxUPn0gRXh0UmVjb3JkXG4gKi9cblxuLyoqXG4gKiBFaXRoZXIgYGRyaXZlcmAgb3IgYHBsdWdpbmAgcm5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0ZW5zaW9uVHlwZX0gRXh0ZW5zaW9uVHlwZVxuICovXG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQTs7QUFDQTs7QUFDQTs7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
@@ -65,4 +65,4 @@ async function packageDidChange(appiumHome) {
65
65
 
66
66
  return isChanged;
67
67
  }
68
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vcGFja2FnZS1jaGFuZ2VkLmpzIl0sIm5hbWVzIjpbInBhY2thZ2VEaWRDaGFuZ2UiLCJhcHBpdW1Ib21lIiwiaGFzaEZpbGVuYW1lIiwicGF0aCIsImpvaW4iLCJQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCIsImlzQ2hhbmdlZCIsIndyaXRlSGFzaCIsImhhc2giLCJvbGRIYXNoIiwiaGFzaEZpbGVuYW1lRGlyIiwiZGlybmFtZSIsImxvZyIsImRlYnVnIiwiZnMiLCJta2RpcnAiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJjd2QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV08sZUFBZUEsZ0JBQWYsQ0FBaUNDLFVBQWpDLEVBQTZDO0FBQ2xELFFBQU1DLFlBQVksR0FBR0MsY0FBS0MsSUFBTCxDQUFVSCxVQUFWLEVBQXNCSSxxQ0FBdEIsQ0FBckI7O0FBS0EsTUFBSUMsU0FBSjtBQUVBLE1BQUlDLFNBQUo7QUFFQSxNQUFJQyxJQUFKO0FBRUEsTUFBSUMsT0FBSjs7QUFHQSxRQUFNQyxlQUFlLEdBQUdQLGNBQUtRLE9BQUwsQ0FBYVQsWUFBYixDQUF4Qjs7QUFDQVUsa0JBQUlDLEtBQUosQ0FBVyxpQ0FBZ0NILGVBQWdCLEVBQTNEOztBQUNBLE1BQUk7QUFDRixVQUFNSSxZQUFHQyxNQUFILENBQVVMLGVBQVYsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPTSxHQUFQLEVBQVk7QUFDWixVQUFNLElBQUlDLEtBQUosQ0FDSCx3REFBdURQLGVBQWdCLHFCQUFvQk0sR0FBRyxDQUFDRSxPQUFRLEVBRHBHLENBQU47QUFHRDs7QUFFRCxNQUFJO0FBQ0YsS0FBQztBQUFDWixNQUFBQSxTQUFEO0FBQVlDLE1BQUFBLFNBQVo7QUFBdUJFLE1BQUFBLE9BQXZCO0FBQWdDRCxNQUFBQTtBQUFoQyxRQUF3QyxNQUFNLHNDQUFpQjtBQUM5RFcsTUFBQUEsR0FBRyxFQUFFbEIsVUFEeUQ7QUFFOURDLE1BQUFBLFlBQVksRUFBRUc7QUFGZ0QsS0FBakIsQ0FBL0M7QUFJRCxHQUxELENBS0UsTUFBTTtBQUNOLFdBQU8sSUFBUDtBQUNEOztBQUVELE1BQUlDLFNBQUosRUFBZTtBQUNiLFFBQUk7QUFBQTs7QUFDRkMsTUFBQUEsU0FBUzs7QUFDVEssc0JBQUlDLEtBQUosQ0FBVyxtQkFBa0JaLFVBQVcsdUJBQTlCLFlBQW9EUSxPQUFwRCwrQ0FBK0QsUUFBUyxRQUFPRCxJQUFLLEVBQTlGO0FBQ0QsS0FIRCxDQUdFLE9BQU9RLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUNILHFDQUFvQ1AsZUFBZ0IscUJBQW9CTSxHQUFHLENBQUNFLE9BQVEsRUFEakYsQ0FBTjtBQUdEO0FBQ0Y7O0FBRUQsU0FBT1osU0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBpc1BhY2thZ2VDaGFuZ2VkIH0gZnJvbSAncGFja2FnZS1jaGFuZ2VkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgZXh0ZW5zaW9ucyBoYXZlIGNoYW5nZWQsIGFuZCB1cGRhdGVzIGEgaGFzaCB0aGUgYHBhY2thZ2UuanNvbmAgaW4gYGFwcGl1bUhvbWVgIGlmIHNvLlxuICpcbiAqIElmIHRoZXkgaGF2ZSwgd2UgbmVlZCB0byBzeW5jIHRoZW0gd2l0aCB0aGUgYGV4dGVuc2lvbnMueWFtbGAgbWFuaWZlc3QuXG4gKlxuICogX1dhcm5pbmc6IHRoaXMgbWFrZXMgYSBibG9ja2luZyBjYWxsIHRvIGB3cml0ZUZpbGVTeW5jYC5fXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IGB0cnVlYCBpZiBgcGFja2FnZS5qc29uYCBgYXBwaXVtSG9tZWAgY2hhbmdlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja2FnZURpZENoYW5nZSAoYXBwaXVtSG9tZSkge1xuICBjb25zdCBoYXNoRmlsZW5hbWUgPSBwYXRoLmpvaW4oYXBwaXVtSG9tZSwgUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgpO1xuXG4gIC8vIFhYWDogdGhlIHR5cGVzIGluIGBwYWNrYWdlLWNoYW5nZWRgIHNlZW0gdG8gYmUgd3JvbmcuXG5cbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgaXNDaGFuZ2VkO1xuICAvKiogQHR5cGUgeygpID0+IHZvaWR9ICovXG4gIGxldCB3cml0ZUhhc2g7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBsZXQgaGFzaDtcbiAgLyoqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfSAqL1xuICBsZXQgb2xkSGFzaDtcblxuICAvLyBmaXJzdCBta2RpcnAgdGhlIHRhcmdldCBkaXIuXG4gIGNvbnN0IGhhc2hGaWxlbmFtZURpciA9IHBhdGguZGlybmFtZShoYXNoRmlsZW5hbWUpO1xuICBsb2cuZGVidWcoYENyZWF0aW5nIGhhc2ggZmlsZSBkaXJlY3Rvcnk6ICR7aGFzaEZpbGVuYW1lRGlyfWApO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlycChoYXNoRmlsZW5hbWVEaXIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQXBwaXVtIGNvdWxkIG5vdCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBmb3IgaGFzaCBmaWxlOiAke2hhc2hGaWxlbmFtZURpcn0uIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgKHtpc0NoYW5nZWQsIHdyaXRlSGFzaCwgb2xkSGFzaCwgaGFzaH0gPSBhd2FpdCBpc1BhY2thZ2VDaGFuZ2VkKHtcbiAgICAgIGN3ZDogYXBwaXVtSG9tZSxcbiAgICAgIGhhc2hGaWxlbmFtZTogUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgsXG4gICAgfSkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0NoYW5nZWQpIHtcbiAgICB0cnkge1xuICAgICAgd3JpdGVIYXNoKCk7XG4gICAgICBsb2cuZGVidWcoYFVwZGF0ZWQgaGFzaCBvZiAke2FwcGl1bUhvbWV9L3BhY2thZ2UuanNvbiBmcm9tOiAke29sZEhhc2ggPz8gJyhub25lKSd9IHRvOiAke2hhc2h9YCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBcHBpdW0gY291bGQgbm90IHdyaXRlIGhhc2ggZmlsZTogJHtoYXNoRmlsZW5hbWVEaXJ9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXNDaGFuZ2VkO1xufVxuIl19
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYWNrYWdlRGlkQ2hhbmdlIiwiYXBwaXVtSG9tZSIsImhhc2hGaWxlbmFtZSIsInBhdGgiLCJqb2luIiwiUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgiLCJpc0NoYW5nZWQiLCJ3cml0ZUhhc2giLCJoYXNoIiwib2xkSGFzaCIsImhhc2hGaWxlbmFtZURpciIsImRpcm5hbWUiLCJsb2ciLCJkZWJ1ZyIsImZzIiwibWtkaXJwIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwiY3dkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2V4dGVuc2lvbi9wYWNrYWdlLWNoYW5nZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBpc1BhY2thZ2VDaGFuZ2VkIH0gZnJvbSAncGFja2FnZS1jaGFuZ2VkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgZXh0ZW5zaW9ucyBoYXZlIGNoYW5nZWQsIGFuZCB1cGRhdGVzIGEgaGFzaCB0aGUgYHBhY2thZ2UuanNvbmAgaW4gYGFwcGl1bUhvbWVgIGlmIHNvLlxuICpcbiAqIElmIHRoZXkgaGF2ZSwgd2UgbmVlZCB0byBzeW5jIHRoZW0gd2l0aCB0aGUgYGV4dGVuc2lvbnMueWFtbGAgbWFuaWZlc3QuXG4gKlxuICogX1dhcm5pbmc6IHRoaXMgbWFrZXMgYSBibG9ja2luZyBjYWxsIHRvIGB3cml0ZUZpbGVTeW5jYC5fXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZVxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IGB0cnVlYCBpZiBgcGFja2FnZS5qc29uYCBgYXBwaXVtSG9tZWAgY2hhbmdlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja2FnZURpZENoYW5nZSAoYXBwaXVtSG9tZSkge1xuICBjb25zdCBoYXNoRmlsZW5hbWUgPSBwYXRoLmpvaW4oYXBwaXVtSG9tZSwgUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgpO1xuXG4gIC8vIFhYWDogdGhlIHR5cGVzIGluIGBwYWNrYWdlLWNoYW5nZWRgIHNlZW0gdG8gYmUgd3JvbmcuXG5cbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgaXNDaGFuZ2VkO1xuICAvKiogQHR5cGUgeygpID0+IHZvaWR9ICovXG4gIGxldCB3cml0ZUhhc2g7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBsZXQgaGFzaDtcbiAgLyoqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfSAqL1xuICBsZXQgb2xkSGFzaDtcblxuICAvLyBmaXJzdCBta2RpcnAgdGhlIHRhcmdldCBkaXIuXG4gIGNvbnN0IGhhc2hGaWxlbmFtZURpciA9IHBhdGguZGlybmFtZShoYXNoRmlsZW5hbWUpO1xuICBsb2cuZGVidWcoYENyZWF0aW5nIGhhc2ggZmlsZSBkaXJlY3Rvcnk6ICR7aGFzaEZpbGVuYW1lRGlyfWApO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlycChoYXNoRmlsZW5hbWVEaXIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQXBwaXVtIGNvdWxkIG5vdCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBmb3IgaGFzaCBmaWxlOiAke2hhc2hGaWxlbmFtZURpcn0uIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgKHtpc0NoYW5nZWQsIHdyaXRlSGFzaCwgb2xkSGFzaCwgaGFzaH0gPSBhd2FpdCBpc1BhY2thZ2VDaGFuZ2VkKHtcbiAgICAgIGN3ZDogYXBwaXVtSG9tZSxcbiAgICAgIGhhc2hGaWxlbmFtZTogUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgsXG4gICAgfSkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0NoYW5nZWQpIHtcbiAgICB0cnkge1xuICAgICAgd3JpdGVIYXNoKCk7XG4gICAgICBsb2cuZGVidWcoYFVwZGF0ZWQgaGFzaCBvZiAke2FwcGl1bUhvbWV9L3BhY2thZ2UuanNvbiBmcm9tOiAke29sZEhhc2ggPz8gJyhub25lKSd9IHRvOiAke2hhc2h9YCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBcHBpdW0gY291bGQgbm90IHdyaXRlIGhhc2ggZmlsZTogJHtoYXNoRmlsZW5hbWVEaXJ9LiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXNDaGFuZ2VkO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVdPLGVBQWVBLGdCQUFmLENBQWlDQyxVQUFqQyxFQUE2QztFQUNsRCxNQUFNQyxZQUFZLEdBQUdDLGNBQUtDLElBQUwsQ0FBVUgsVUFBVixFQUFzQkkscUNBQXRCLENBQXJCOztFQUtBLElBQUlDLFNBQUo7RUFFQSxJQUFJQyxTQUFKO0VBRUEsSUFBSUMsSUFBSjtFQUVBLElBQUlDLE9BQUo7O0VBR0EsTUFBTUMsZUFBZSxHQUFHUCxjQUFLUSxPQUFMLENBQWFULFlBQWIsQ0FBeEI7O0VBQ0FVLGdCQUFJQyxLQUFKLENBQVcsaUNBQWdDSCxlQUFnQixFQUEzRDs7RUFDQSxJQUFJO0lBQ0YsTUFBTUksWUFBR0MsTUFBSCxDQUFVTCxlQUFWLENBQU47RUFDRCxDQUZELENBRUUsT0FBT00sR0FBUCxFQUFZO0lBQ1osTUFBTSxJQUFJQyxLQUFKLENBQ0gsd0RBQXVEUCxlQUFnQixxQkFBb0JNLEdBQUcsQ0FBQ0UsT0FBUSxFQURwRyxDQUFOO0VBR0Q7O0VBRUQsSUFBSTtJQUNGLENBQUM7TUFBQ1osU0FBRDtNQUFZQyxTQUFaO01BQXVCRSxPQUF2QjtNQUFnQ0Q7SUFBaEMsSUFBd0MsTUFBTSxzQ0FBaUI7TUFDOURXLEdBQUcsRUFBRWxCLFVBRHlEO01BRTlEQyxZQUFZLEVBQUVHO0lBRmdELENBQWpCLENBQS9DO0VBSUQsQ0FMRCxDQUtFLE1BQU07SUFDTixPQUFPLElBQVA7RUFDRDs7RUFFRCxJQUFJQyxTQUFKLEVBQWU7SUFDYixJQUFJO01BQUE7O01BQ0ZDLFNBQVM7O01BQ1RLLGdCQUFJQyxLQUFKLENBQVcsbUJBQWtCWixVQUFXLHVCQUE5QixZQUFvRFEsT0FBcEQsK0NBQStELFFBQVMsUUFBT0QsSUFBSyxFQUE5RjtJQUNELENBSEQsQ0FHRSxPQUFPUSxHQUFQLEVBQVk7TUFDWixNQUFNLElBQUlDLEtBQUosQ0FDSCxxQ0FBb0NQLGVBQWdCLHFCQUFvQk0sR0FBRyxDQUFDRSxPQUFRLEVBRGpGLENBQU47SUFHRDtFQUNGOztFQUVELE9BQU9aLFNBQVA7QUFDRCJ9