oxygen-cli 1.22.1 → 1.22.2

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.
package/build/lib/cli.js CHANGED
@@ -132,4 +132,4 @@ Web test options:
132
132
  Mobile test options:
133
133
  -s, --server=SERVER_URL Appium server URL. Default is http://localhost:4723/wd/hub.`);
134
134
  }
135
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxyXG4vKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcclxuaW1wb3J0IExhdW5jaGVyIGZyb20gJy4vbGF1bmNoZXInO1xyXG5pbXBvcnQgUmVwb3J0QWdncmVnYXRvciBmcm9tICcuLi9yZXBvcnRlci9SZXBvcnRBZ2dyZWdhdG9yJztcclxuXHJcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGhhbmRsZVNpZ0ludCk7XHJcbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IpO1xyXG59KTtcclxuXHJcbi8vIHBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuY29uc3QgYXJndiA9IHJlcXVpcmUoJ21pbmltaXN0JykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcclxuXHJcbmlmIChhcmd2LnYgfHwgYXJndi52ZXJzaW9uKSB7XHJcbiAgICBjb25zb2xlLmxvZyhyZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uKTtcclxuICAgIHByb2Nlc3MuZXhpdCgwKTtcclxufSBlbHNlIGlmICh0eXBlb2YoYXJndi5fWzBdKSA9PT0gJ3VuZGVmaW5lZCcgfHwgYXJndi5oZWxwKSB7XHJcbiAgICBwcmludFVzYWdlKCk7XHJcbiAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbn1cclxuXHJcbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xyXG4gICAgY29uc3QgZGVsYXkgPSBhcmd2LmQgfHwgYXJndi5kZWxheTtcclxuICAgIGlmICghKHBhcnNlSW50KGRlbGF5KSA+IDApKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xyXG4gICAgICAgIHByaW50VXNhZ2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XHJcbmlmICh0YXJnZXRGaWxlID09IG51bGwpIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcclxuXHJcbmNsaXV0aWwuZ2VuZXJhdGVUZXN0T3B0aW9ucyhjb25maWcsIGFyZ3YpLnRoZW4oXHJcbiAgICAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykudGhlbihcclxuICAgICAgICAgICAgKGNvZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQ6ICcsIGUpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0sXHJcbiAgICAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkIG9uIGdlbmVyYXRlIHN0YXRlOiAnLCBlKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbik7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zLmZyYW1ld29yayA9PT0gJ294eWdlbicgJiYgKCFvcHRpb25zLnN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnN1aXRlcykpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHRlc3QgLSBubyBzdWl0ZXMgYXJlIHNwZWNpZmllZC4nKTtcclxuICAgIH1cclxuICAgIGxldCBjYXBzQXJyID0gb3B0aW9ucy5jYXBhYmlsaXRpZXMgfHwgW3t9XTtcclxuICAgIC8vIGNoZWNrIGlmIGNhcGFiaWxpdGllcyBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSBoYXNodGFibGVcclxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICBjYXBzQXJyID0gW2NhcHNBcnJdO1xyXG4gICAgfVxyXG4gICAgbGV0IGV4aXRDb2RlID0gMDtcclxuICAgIC8vIHN0YXJ0IGxhdW5jaGVyXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBuZXcgTGF1bmNoZXIob3B0aW9ucywgcmVwb3J0ZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxyXG4gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cclxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcblxyXG5XZWIgdGVzdCBvcHRpb25zOlxyXG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXHJcbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxyXG4gICAgICAtLXJlb3Blbj17dHJ1ZXxmYWxzZX0gIFJlb3BlbiBicm93c2VyIG9uIGVhY2ggaXRlcmF0aW9uLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICBcclxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcclxuICAgIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICBBcHBpdW0gc2VydmVyIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViLmApO1xyXG59Il19
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxuLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcbmltcG9ydCBMYXVuY2hlciBmcm9tICcuL2xhdW5jaGVyJztcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xuXG5wcm9jZXNzLm9uKCdTSUdJTlQnLCBoYW5kbGVTaWdJbnQpO1xucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvciA9PiB7XG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XG59KTtcblxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VuaGFuZGxlZFJlamVjdGlvbicsIGVycm9yKTtcbn0pO1xuXG4vLyBwYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG5jb25zdCBhcmd2ID0gcmVxdWlyZSgnbWluaW1pc3QnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xuXG5pZiAoYXJndi52IHx8IGFyZ3YudmVyc2lvbikge1xuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24pO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbn0gZWxzZSBpZiAodHlwZW9mKGFyZ3YuX1swXSkgPT09ICd1bmRlZmluZWQnIHx8IGFyZ3YuaGVscCkge1xuICAgIHByaW50VXNhZ2UoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xuICAgIGNvbnN0IGRlbGF5ID0gYXJndi5kIHx8IGFyZ3YuZGVsYXk7XG4gICAgaWYgKCEocGFyc2VJbnQoZGVsYXkpID4gMCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xuICAgICAgICBwcmludFVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG59XG5cbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XG5pZiAodGFyZ2V0RmlsZSA9PSBudWxsKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcblxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcbiAgICAob3B0aW9ucykgPT4ge1xuICAgICAgICBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkOiAnLCBlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICAoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZCBvbiBnZW5lcmF0ZSBzdGF0ZTogJywgZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4pO1xuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgPT09ICdveHlnZW4nICYmICghb3B0aW9ucy5zdWl0ZXMgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy5zdWl0ZXMpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xuICAgIH1cbiAgICBsZXQgY2Fwc0FyciA9IG9wdGlvbnMuY2FwYWJpbGl0aWVzIHx8IFt7fV07XG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgY2Fwc0FyciA9IFtjYXBzQXJyXTtcbiAgICB9XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICAvLyBzdGFydCBsYXVuY2hlclxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGxhdW5jaGVyID0gbmV3IExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1Rlc3Qgc3RhcnRlZC4uLicpO1xuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XG4gICAgICAgIHJlcG9ydGVyLmdlbmVyYXRlUmVwb3J0cygpO1xuICAgICAgICBleGl0Q29kZSA9IHJlcG9ydGVyLmdldEV4aXRDb2RlKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsIGVycm9yJywgZSk7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpdENvZGU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcbiAgICAvLyBkZWxheSBwcm9jZXNzIGV4aXQgdG8gbGV0IE94eWdlbiB0byBwcm9wZXJseSBkaXNwb3NlXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoMCksIDIwMDApO1xufVxuXG5mdW5jdGlvbiBwcmludFVzYWdlKCkge1xuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXG5cbkZJTEUgLSBQYXRoIHRvIGEgdGVzdCBzY3JpcHQgKC5qcykgb3IgYSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gKC5qc29uKSBmaWxlLlxuXG5HZW5lcmFsIG9wdGlvbnM6XG4gIC1kLCAtLWRlbGF5PVNFQ09ORFMgICAgICAgIERlbGF5IGJldHdlZW4gZWFjaCBjb21tYW5kIGluIHNlY29uZHMuXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cbiAgICAgIC0tcm89UEFUSCAgICAgICAgICAgICAgT3V0cHV0IHBhdGggZm9yIHJlcG9ydCBmaWxlLiBJZiBzcGVjaWZpZWQsIHRoZSByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzIHJlcG9ydHMuXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cbiAgLXAsIC0tcGFyYW09RklMRSAgICAgICAgICAgUGFyYW1ldGVycyBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIGFuIGF0dGVtcHQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBtYWRlIHRvIGxvYWQgcGFyYW1ldGVycyBmcm9tIGEgZmlsZSBuYW1lZCBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZpbmcgZXh0ZW5zaW9uIC0geGxzeCwgeGxzLCBjc3YsIG9yIHR4dC5cbiAgICAgIC0tcG09e3NlcXxyYW5kb218YWxsfSAgT3JkZXIgaW4gd2hpY2ggdG8gcmVhZCB0aGUgcGFyYW1ldGVycyAtIHNlcXVlbnRpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gJ3NlcScgYW5kICdyYW5kb20nIG1vZGVzIHRlc3Qgd2lsbCBydW4gZXhhY3QgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRpbWVzIHNwZWNpZmllZCB3aXRoIHRoZSAtaSBvcHRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVudGlhbGx5LiBUaGlzIG9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaSBvcHRpb24uXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXG4gICAgICAtLXN1aXRlcyAgICAgICAgICAgICAgIEZpbHRlciBvdXQgc3VpdGVzIGJ5IG5hbWVcbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uIGFuZCBleGl0LlxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXG5cbldlYiB0ZXN0IG9wdGlvbnM6XG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXG4gIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICAgIFNlbGVuaXVtIGh1YiBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1Yi5cbiAgICAgIC0tcmVvcGVuPXt0cnVlfGZhbHNlfSAgUmVvcGVuIGJyb3dzZXIgb24gZWFjaCBpdGVyYXRpb24uIERlZmF1bHQgaXMgZmFsc2UuXG4gICAgICBcbk1vYmlsZSB0ZXN0IG9wdGlvbnM6XG4gICAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgIEFwcGl1bSBzZXJ2ZXIgVVJMLiBEZWZhdWx0IGlzIGh0dHA6Ly9sb2NhbGhvc3Q6NDcyMy93ZC9odWIuYCk7XG59Il19
@@ -140,7 +140,32 @@ module.exports = function () {
140
140
  await connection.close();
141
141
  }
142
142
  };
143
+ /**
144
+ * @summary Calls a stored procedure.
145
+ * @function callProcedure
146
+ * @param {String} name - Name of the procedure to call.
147
+ * @param {...Object} args - Procedure arguments. If procedure produces output parameters then these need to be specified using `undefined`.
148
+ * @return {Object} Procedure output if any.
149
+ * @example <caption>[javascript] Usage example</caption>
150
+ * // calls a procedure which expects two input parameters and one output parameter.
151
+ * var result = db.callProcedure('test', 3, 4, undefined);
152
+ * log.info(result);
153
+ */
154
+
155
+
156
+ module.callProcedure = async function (name, ...args) {
157
+ await module._openDbConn();
158
+
159
+ try {
160
+ const querySyncRetval = await connection.callProcedure(null, null, name, [...args]);
161
+ return querySyncRetval;
162
+ } catch (e) {
163
+ throw new _OxygenError.default(errHelper.errorCode.DB_QUERY_ERROR, errHelper.getDbErrorMessage(e));
164
+ } finally {
165
+ await connection.close();
166
+ }
167
+ };
143
168
 
144
169
  return module;
145
170
  };
146
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CQTs7OztBQXBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxVQUFKOztBQUdBLElBQUlDLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLFdBQVAsR0FBcUIsa0JBQWlCO0FBQ2xDLFFBQUksQ0FBQyxLQUFLQyxVQUFWLEVBQXNCO0FBQ2xCLFlBQU0sSUFBSUMsb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CQyxtQkFBaEMsRUFBcUQsK0RBQXJELENBQU47QUFDSDs7QUFFRCxR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QkEsS0FBakIsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPUCxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBSkQsU0FJVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FURDs7QUFXQSxTQUFPeEIsTUFBUDtBQUNILENBeEdEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZGJcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhIEJhc2VzIHRocm91Z2ggT0RCQy5cclxuICogQG5vdGUgQmVmb3JlIHVzaW5nIHRoaXMgbW9kdWxlLCBtYWtlIHN1cmUgdG8gaW5zdGFsbCBgdW5peG9kYmNgOiAgXHJcbiAqICAgKiBXaW5kb3dzIC0gSW5zdGFsbCBgV2luZG93cyBTREtgICBcclxuICogICAqIE9TIFggLSAgYGJyZXcgaW5zdGFsbCB1bml4b2RiY2AgIFxyXG4gKiAgICogTGludXggLSBgc3VkbyBhcHQtZ2V0IGluc3RhbGwgdW5peG9kYmMgdW5peG9kYmMtZGV2YCBvciBgc3VkbyBkbmYgaW5zdGFsbCB1bml4T0RCQyB1bml4T0RCQy1kZXZlbGBcclxuICovXHJcblxyXG52YXIgY29ubmVjdGlvbjtcclxuXHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbnZhciBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgLy8gRklYTUU6IGNoYW5nZSBzZXRDb25uZWN0aW9uU3RyaW5nIHRvIGluaXQgYW5kIGFkZCBoYWRubGluZyBpbiBoZXJlXHJcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuX29wZW5EYkNvbm4gPSBhc3luYyBmdW5jdGlvbigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29ublN0cmluZykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX0NPTk5FQ1RJT05fRVJST1IsICdObyBjb25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQuIFVzZSBkYi5zZXRDb25uZWN0aW9uU3RyaW5nKCkuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBpZ25vcmUgdGhpcyBtb2R1bGUgaWYgb2RiYyB3YXNuJ3QgaW5zdGFsbGVkXHJcbiAgICAgICAgICAgIHZhciBkYjtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRiID0gcmVxdWlyZSgnb2RiYycpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBoYXBwZW4gb25seSBvbiB1bml4IGR1ZSB0byBtaXNzaW5nIHVuaXhvZGJjIGJpbmFyaWVzXHJcbiAgICAgICAgICAgICAgICBjb25zdCBNb2R1bGVVbmF2YWlsYWJsZUVycm9yID0gcmVxdWlyZSgnLi4vZXJyb3JzL01vZHVsZVVuYXZhaWxhYmxlRXJyb3InKTtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBNb2R1bGVVbmF2YWlsYWJsZUVycm9yKCdVbmFibGUgdG8gbG9hZCBEQiBtb2R1bGUuICcrZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29ubmVjdGlvbiA9IGF3YWl0IGRiLmNvbm5lY3QodGhpcy5jb25uU3RyaW5nKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfQ09OTkVDVElPTl9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBAc3VtbWFyeSBTZXRzIERCIGNvbm5lY3Rpb24gc3RyaW5nIHRvIGJlIHVzZWQgYnkgb3RoZXIgbWV0aG9kcy5cclxuICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWV0aG9kIGRvZXNuJ3QgYWN0dWFsbHkgb3BlbiB0aGUgY29ubmVjdGlvbiBhcyBpdCdzIG9wZW5lZC9jbG9zZWRcclxuICAgICogICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYnkgcXVlcnkgbWV0aG9kcy4gIFxyXG4gICAgKiAgICAgICAgICAgICAgRXhhbXBsZSBjb25uZWN0aW9uIHN0cmluZ3M6ICBcclxuICAgICogICAgICAgICAgICAgIC0gYERyaXZlcj17TXlTUUwgT0RCQyA1LjMgVU5JQ09ERSBEcml2ZXJ9O1NlcnZlcj1sb2NhbGhvc3Q7RGF0YWJhc2U9bXlEYXRhYmFzZTtcclxuICAgICogICAgICAgICAgICAgICAgVXNlcj1teVVzZXJuYW1lO1Bhc3N3b3JkPW15UGFzc3dvcmQ7T3B0aW9uPTM7YCAgXHJcbiAgICAqICAgICAgICAgICAgICAtIGBEcml2ZXI9e09yYWNsZSBpbiBpbnN0YW50Y2xpZW50XzExXzJ9O2RicT0xMjcuMC4wLjE6MTUyMS9YRTt1aWQ9bXlVc2VybmFtZTtcclxuICAgICogICAgICAgICAgICAgICAgcHdkPW15UGFzc3dvcmQ7YFxyXG4gICAgKiBAZnVuY3Rpb24gc2V0Q29ubmVjdGlvblN0cmluZ1xyXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gY29ublN0cmluZyAtIE9EQkMgY29ubmVjdGlvbiBzdHJpbmcuXHJcbiAgICAqL1xyXG4gICAgbW9kdWxlLnNldENvbm5lY3Rpb25TdHJpbmcgPSBmdW5jdGlvbihjb25uU3RyaW5nKSB7XHJcbiAgICAgICAgbW9kdWxlLmNvbm5TdHJpbmcgPSBjb25uU3RyaW5nO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBmaXJzdCByb3cgaW4gdGhlIHJlc3VsdCBzZXQuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0U2NhbGFyXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgLSBUaGUgcXVlcnkgdG8gZXhlY3V0ZS5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIGZpcnN0IGNvbHVtbiBvZiB0aGUgZmlyc3Qgcm93IGluIHRoZSByZXN1bHQgc2V0LCBvciBudWxsIGlmIHRoZSByZXN1bHRcclxuICAgICAqICAgICAgICAgICAgICAgICAgc2V0IGlzIGVtcHR5LlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0U2NhbGFyID0gYXN5bmMgZnVuY3Rpb24ocXVlcnkpIHtcclxuICAgICAgICBhd2FpdCBtb2R1bGUuX29wZW5EYkNvbm4oKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0U2V0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShxdWVyeSk7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHRTZXQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZmlyc3RSb3cgPSByZXN1bHRTZXRbMF07XHJcbiAgICAgICAgICAgIHZhciBmaXJzdENvbCA9IGZpcnN0Um93W09iamVjdC5rZXlzKGZpcnN0Um93KVswXV07XHJcbiAgICAgICAgICAgIHJldHVybiBmaXJzdENvbDtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfUVVFUllfRVJST1IsIGVyckhlbHBlci5nZXREYkVycm9yTWVzc2FnZShlKSk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBFeGVjdXRlcyBTUUwgcXVlcnkgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBzZXQuXHJcbiAgICAgKiBAZnVuY3Rpb24gZXhlY3V0ZVF1ZXJ5XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgLSBUaGUgcXVlcnkgdG8gZXhlY3V0ZS5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdCBzZXQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5leGVjdXRlUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlTeW5jUmV0dmFsO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBzdGF0ZW1lbnQuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQW55IHJlc3VsdHMgZnJvbSB0aGUgcXVlcnkgYXJlIGRpc2NhcmRlZC5cclxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlTm9uUXVlcnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZXhlY3V0ZU5vblF1ZXJ5ID0gYXN5bmMgZnVuY3Rpb24ocXVlcnkpIHtcclxuICAgICAgICBhd2FpdCBtb2R1bGUuX29wZW5EYkNvbm4oKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfUVVFUllfRVJST1IsIGVyckhlbHBlci5nZXREYkVycm9yTWVzc2FnZShlKSk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
171
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSIsImNhbGxQcm9jZWR1cmUiLCJuYW1lIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CQTs7OztBQXBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxVQUFKOztBQUdBLElBQUlDLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLFdBQVAsR0FBcUIsa0JBQWlCO0FBQ2xDLFFBQUksQ0FBQyxLQUFLQyxVQUFWLEVBQXNCO0FBQ2xCLFlBQU0sSUFBSUMsb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CQyxtQkFBaEMs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Q0EsWUFBTU4sVUFBVSxDQUFDbUIsS0FBWCxDQUFpQkEsS0FBakIsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPUCxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBSkQsU0FJVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FURDtBQVdBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJeEIsRUFBQUEsTUFBTSxDQUFDNEIsYUFBUCxHQUF1QixnQkFBZUMsSUFBZixFQUFxQixHQUFHQyxJQUF4QixFQUE4QjtBQUNqRCxVQUFNOUIsTUFBTSxDQUFDRyxXQUFQLEVBQU47O0FBRUEsUUFBSTtBQUNBLFlBQU11QixlQUFlLEdBQUcsTUFBTTdCLFVBQVUsQ0FBQytCLGFBQVgsQ0FBeUIsSUFBekIsRUFBK0IsSUFBL0IsRUFBcUNDLElBQXJDLEVBQTJDLENBQUMsR0FBR0MsSUFBSixDQUEzQyxDQUE5QjtBQUNBLGFBQU9KLGVBQVA7QUFDSCxLQUhELENBR0UsT0FBT2pCLENBQVAsRUFBVTtBQUNSLFlBQU0sSUFBSUosb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CaUIsY0FBaEMsRUFBZ0R6QixTQUFTLENBQUNlLGlCQUFWLENBQTRCSixDQUE1QixDQUFoRCxDQUFOO0FBQ0gsS0FMRCxTQUtVO0FBQ04sWUFBTVosVUFBVSxDQUFDMkIsS0FBWCxFQUFOO0FBQ0g7QUFDSixHQVhEOztBQWFBLFNBQU94QixNQUFQO0FBQ0gsQ0FoSUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBkYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIERhdGEgQmFzZXMgdGhyb3VnaCBPREJDLlxyXG4gKiBAbm90ZSBCZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUsIG1ha2Ugc3VyZSB0byBpbnN0YWxsIGB1bml4b2RiY2A6ICBcclxuICogICAqIFdpbmRvd3MgLSBJbnN0YWxsIGBXaW5kb3dzIFNES2AgIFxyXG4gKiAgICogT1MgWCAtICBgYnJldyBpbnN0YWxsIHVuaXhvZGJjYCAgXHJcbiAqICAgKiBMaW51eCAtIGBzdWRvIGFwdC1nZXQgaW5zdGFsbCB1bml4b2RiYyB1bml4b2RiYy1kZXZgIG9yIGBzdWRvIGRuZiBpbnN0YWxsIHVuaXhPREJDIHVuaXhPREJDLWRldmVsYFxyXG4gKi9cclxuXHJcbnZhciBjb25uZWN0aW9uO1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAvLyBGSVhNRTogY2hhbmdlIHNldENvbm5lY3Rpb25TdHJpbmcgdG8gaW5pdCBhbmQgYWRkIGhhZG5saW5nIGluIGhlcmVcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fb3BlbkRiQ29ubiA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb25uU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfQ09OTkVDVElPTl9FUlJPUiwgJ05vIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNpZmllZC4gVXNlIGRiLnNldENvbm5lY3Rpb25TdHJpbmcoKS4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIG1vZHVsZSBpZiBvZGJjIHdhc24ndCBpbnN0YWxsZWRcclxuICAgICAgICAgICAgdmFyIGRiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGIgPSByZXF1aXJlKCdvZGJjJyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhcHBlbiBvbmx5IG9uIHVuaXggZHVlIHRvIG1pc3NpbmcgdW5peG9kYmMgYmluYXJpZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcnMvTW9kdWxlVW5hdmFpbGFibGVFcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IoJ1VuYWJsZSB0byBsb2FkIERCIG1vZHVsZS4gJytlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25uZWN0aW9uID0gYXdhaXQgZGIuY29ubmVjdCh0aGlzLmNvbm5TdHJpbmcpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9DT05ORUNUSU9OX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEBzdW1tYXJ5IFNldHMgREIgY29ubmVjdGlvbiBzdHJpbmcgdG8gYmUgdXNlZCBieSBvdGhlciBtZXRob2RzLlxyXG4gICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgZG9lc24ndCBhY3R1YWxseSBvcGVuIHRoZSBjb25uZWN0aW9uIGFzIGl0J3Mgb3BlbmVkL2Nsb3NlZFxyXG4gICAgKiAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBieSBxdWVyeSBtZXRob2RzLiAgXHJcbiAgICAqICAgICAgICAgICAgICBFeGFtcGxlIGNvbm5lY3Rpb24gc3RyaW5nczogIFxyXG4gICAgKiAgICAgICAgICAgICAgLSBgRHJpdmVyPXtNeVNRTCBPREJDIDUuMyBVTklDT0RFIERyaXZlcn07U2VydmVyPWxvY2FsaG9zdDtEYXRhYmFzZT1teURhdGFiYXNlO1xyXG4gICAgKiAgICAgICAgICAgICAgICBVc2VyPW15VXNlcm5hbWU7UGFzc3dvcmQ9bXlQYXNzd29yZDtPcHRpb249MztgICBcclxuICAgICogICAgICAgICAgICAgIC0gYERyaXZlcj17T3JhY2xlIGluIGluc3RhbnRjbGllbnRfMTFfMn07ZGJxPTEyNy4wLjAuMToxNTIxL1hFO3VpZD1teVVzZXJuYW1lO1xyXG4gICAgKiAgICAgICAgICAgICAgICBwd2Q9bXlQYXNzd29yZDtgXHJcbiAgICAqIEBmdW5jdGlvbiBzZXRDb25uZWN0aW9uU3RyaW5nXHJcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb25uU3RyaW5nIC0gT0RCQyBjb25uZWN0aW9uIHN0cmluZy5cclxuICAgICovXHJcbiAgICBtb2R1bGUuc2V0Q29ubmVjdGlvblN0cmluZyA9IGZ1bmN0aW9uKGNvbm5TdHJpbmcpIHtcclxuICAgICAgICBtb2R1bGUuY29ublN0cmluZyA9IGNvbm5TdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRTY2FsYXJcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgZmlyc3QgY29sdW1uIG9mIHRoZSBmaXJzdCByb3cgaW4gdGhlIHJlc3VsdCBzZXQsIG9yIG51bGwgaWYgdGhlIHJlc3VsdFxyXG4gICAgICogICAgICAgICAgICAgICAgICBzZXQgaXMgZW1wdHkuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRTY2FsYXIgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdFNldC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFJvdyA9IHJlc3VsdFNldFswXTtcclxuICAgICAgICAgICAgdmFyIGZpcnN0Q29sID0gZmlyc3RSb3dbT2JqZWN0LmtleXMoZmlyc3RSb3cpWzBdXTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q29sO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlUXVlcnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0IHNldC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmV4ZWN1dGVRdWVyeSA9IGFzeW5jIGZ1bmN0aW9uKHF1ZXJ5KSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnlTeW5jUmV0dmFsID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShxdWVyeSk7XHJcbiAgICAgICAgICAgIHJldHVybiBxdWVyeVN5bmNSZXR2YWw7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX1FVRVJZX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHN0YXRlbWVudC5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBBbnkgcmVzdWx0cyBmcm9tIHRoZSBxdWVyeSBhcmUgZGlzY2FyZGVkLlxyXG4gICAgICogQGZ1bmN0aW9uIGV4ZWN1dGVOb25RdWVyeVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIGV4ZWN1dGUuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5leGVjdXRlTm9uUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IENhbGxzIGEgc3RvcmVkIHByb2NlZHVyZS5cclxuICAgICAqIEBmdW5jdGlvbiBjYWxsUHJvY2VkdXJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHByb2NlZHVyZSB0byBjYWxsLlxyXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgLSBQcm9jZWR1cmUgYXJndW1lbnRzLiBJZiBwcm9jZWR1cmUgcHJvZHVjZXMgb3V0cHV0IHBhcmFtZXRlcnMgdGhlbiB0aGVzZSBuZWVkIHRvIGJlIHNwZWNpZmllZCB1c2luZyBgdW5kZWZpbmVkYC5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUHJvY2VkdXJlIG91dHB1dCBpZiBhbnkuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGNhbGxzIGEgcHJvY2VkdXJlIHdoaWNoIGV4cGVjdHMgdHdvIGlucHV0IHBhcmFtZXRlcnMgYW5kIG9uZSBvdXRwdXQgcGFyYW1ldGVyLlxyXG4gICAgICogdmFyIHJlc3VsdCA9IGRiLmNhbGxQcm9jZWR1cmUoJ3Rlc3QnLCAzLCA0LCB1bmRlZmluZWQpO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0KTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNhbGxQcm9jZWR1cmUgPSBhc3luYyBmdW5jdGlvbihuYW1lLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24uY2FsbFByb2NlZHVyZShudWxsLCBudWxsLCBuYW1lLCBbLi4uYXJnc10pO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlTeW5jUmV0dmFsO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
@@ -192,7 +192,7 @@ class MobileModule extends _WebDriverModule.default {
192
192
 
193
193
 
194
194
  if (this.options.collectDeviceLogs) {
195
- this.caps["appium:clearDeviceLogsOnStart"] = true;
195
+ this.caps['appium:clearDeviceLogsOnStart'] = true;
196
196
  } // if both browserName and appPackage were specified - remove browserName
197
197
 
198
198
 
@@ -696,4 +696,4 @@ class MobileModule extends _WebDriverModule.default {
696
696
  }
697
697
 
698
698
  exports.default = MobileModule;
699
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1tb2IuanMiXSwibmFtZXMiOlsiTU9EVUxFX05BTUUiLCJERUZBVUxUX0FQUElVTV9VUkwiLCJERUZBVUxUX0JST1dTRVJfTkFNRSIsIk5PX1NDUkVFTlNIT1RfQ09NTUFORFMiLCJBQ1RJT05fQ09NTUFORFMiLCJERUZBVUxUX1dBSVRfVElNRU9VVCIsIk1vYmlsZU1vZHVsZSIsIldlYkRyaXZlck1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsInRyYW5zYWN0aW9ucyIsImxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lIiwibmV0d29ya1JlcXVlc3RzIiwiaGVscGVycyIsImFwcENvbnRleHQiLCJfbG9hZEhlbHBlckZ1bmN0aW9ucyIsIk94RXJyb3IiLCJlcnJIZWxwZXIiLCJ3YWl0Rm9yVGltZW91dCIsIm5hbWUiLCJnZXREcml2ZXIiLCJnZXRDYXBhYmlsaXRpZXMiLCJjYXBzIiwiaW5pdCIsImFwcGl1bVVybCIsImlzSW5pdGlhbGl6ZWQiLCJyZW9wZW5TZXNzaW9uIiwiZGVidWciLCJkcml2ZXIiLCJyZWxvYWRTZXNzaW9uIiwiX2lzSW5pdGlhbGl6ZWQiLCJjdHgiLCJwbGF0Zm9ybU5hbWUiLCJwbGF0Zm9ybVZlcnNpb24iLCJkZXZpY2VOYW1lIiwiYnJvd3Nlck5hbWUiLCJhdXRvbWF0aW9uTmFtZSIsInVkaWQiLCJhcHAiLCJlbmFibGVBcHBpdW1CZWhhdmlvciIsInVzZUFwcGl1bUZvcldlYiIsImNvbGxlY3REZXZpY2VMb2dzIiwiYXBwUGFja2FnZSIsInRvTG93ZXJDYXNlIiwicmVjb3JkSEFSIiwiYnJvd3NlciIsInBlcmZvcm1hbmNlIiwidXJsIiwiVVJMIiwicGFyc2UiLCJwcm90b2NvbCIsInJlcGxhY2UiLCJob3N0IiwiaG9zdG5hbWUiLCJwb3J0IiwicGFyc2VJbnQiLCJwYXRoIiwicGF0aG5hbWUiLCJhdXRoIiwic3BsaXQiLCJ3ZGlvT3B0cyIsInVzZXIiLCJrZXkiLCJjYXBhYmlsaXRpZXMiLCJsb2dMZXZlbCIsInJ1bm5lciIsIndhaXRmb3JUaW1lb3V0IiwiY29ubmVjdGlvblJldHJ5VGltZW91dCIsImNvbm5lY3Rpb25SZXRyeUNvdW50IiwicHJvdmlkZXIiLCJtb2RVdGlscyIsImRldGVybWluZVByb3ZpZGVyIiwiUEVSRkVDVE8iLCJtYXhJbnN0YW5jZXMiLCJvcGVuRGV2aWNlVGltZW91dCIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwid2RpbyIsInJlbW90ZSIsInNlbGVuaXVtQnJvd3NlclRpbWVvdXQiLCJzZWxlbml1bVRpbWVvdXQiLCJwZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQiLCJwZXJmZWN0b1JlcG9ydGluZyIsIlBlcmZlY3RvIiwiUGVyZmVjdG9FeGVjdXRpb25Db250ZXh0Iiwid2ViZHJpdmVyIiwiZXhlY3V0ZVNjcmlwdCIsImNvbW1hbmQiLCJwYXJhbXMiLCJleGVjdXRlIiwicmVwb3J0aW5nQ2xpZW50IiwiUGVyZmVjdG9SZXBvcnRpbmdDbGllbnQiLCJ0ZXN0U3RhcnQiLCJlIiwiZ2V0QXBwaXVtSW5pdEVycm9yIiwiZ2V0Q29udGV4dCIsInNldFdlYlZpZXdDb250ZXh0IiwiQlJPV1NFUlNUQUNLIiwic2V0VGltZW91dCIsImRpc3Bvc2UiLCJzdGF0dXMiLCJzdGVwcyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImZhaWxlZEZpbmRlZCIsImZpbmQiLCJpdGVtIiwidG9VcHBlckNhc2UiLCJ0ZXN0U3RvcCIsIkNvbnN0YW50cyIsInJlc3VsdHMiLCJwYXNzZWQiLCJmYWlsZWQiLCJfc2VuZFJlc3VsdFN0YXR1c1RvQnJvd3NlcnN0YWNrIiwiZGVsZXRlU2Vzc2lvbiIsImluY2x1ZGVzIiwic2VsZW5pdW1TZXNzaW9uVGltZW91dCIsIndhcm4iLCJ0cmFuc2FjdGlvbiIsImdsb2JhbCIsIl9sYXN0VHJhbnNhY3Rpb25OYW1lIiwiX2lzQWN0aW9uIiwiX3Rha2VTY3JlZW5zaG90U2lsZW50IiwiZXJyb3IiLCJ0YWtlU2NyZWVuc2hvdCIsInJldHZhbCIsImNhbGwiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIndhaXRVbnRpbFJldFZhbCIsIndhaXRVbnRpbCIsImltYWdlcyIsInB1c2hJbWFnZVRvSW1hZ2VzIiwiZmV0Y2hUaXRsZSIsImltYWdlIiwidGl0bGUiLCJnZXRUaXRsZSIsInRleHRUb0ltYWdlIiwicmVxdWlyZSIsInRpdGxlSW1hZ2UiLCJnZW5lcmF0ZSIsImZvbnRGYW1pbHkiLCJwdXNoIiwiaXNXZWJWaWV3Q29udGV4dCIsImhhbmRsZXMiLCJnZXRXaW5kb3dIYW5kbGVzIiwiaGFuZGxlIiwic3dpdGNoVG9XaW5kb3ciLCJtZXJnZWRJbWFnZSIsImRpcmVjdGlvbiIsInRpbWVvdXQiLCJ0aGVuIiwiY2F0Y2giLCJlcnIiLCJfYWRqdXN0QXBwaXVtTG9nIiwibG9nIiwic3JjIiwidGltZSIsInRpbWVzdGFtcCIsIm1zZyIsIm1lc3NhZ2UiLCJsZXZlbCIsIl9pdGVyYXRpb25TdGFydCIsIl9pdGVyYXRpb25FbmQiLCJ0eXBlIiwiZXJyb3JIZWxwZXIiLCJlcnJvckNvZGUiLCJTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQiLCJsb2dzIiwiZ2V0RGV2aWNlTG9ncyIsImNvbGxlY3RCcm93c2VyTG9ncyIsImdldEJyb3dzZXJMb2dzIiwiY29sbGVjdEFwcGl1bUxvZ3MiLCJnZXRBcHBpdW1Mb2dzIiwibG9nRW50cnkiLCJfZ2V0V2Rpb0xvY2F0b3IiLCJsb2NhdG9yIiwiU0NSSVBUX0VSUk9SIiwiaW5kZXhPZiIsInBsYXRmb3JtIiwic3Vic3RyIiwiZ2V0V2Rpb0xvY2F0b3IiLCJtYXRjaFBhdHRlcm4iLCJnZXRFbGVtZW50IiwiZ2V0RWxlbWVudHMiLCJnZXRDaGlsZEVsZW1lbnQiLCJnZXRDaGlsZEVsZW1lbnRzIiwic2V0VGltZW91dEltcGxpY2l0IiwicmVzdG9yZVRpbWVvdXRJbXBsaWNpdCIsImFzc2VydEFyZ3VtZW50IiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyIiwiYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsIiwiYXNzZXJ0QXJndW1lbnRUaW1lb3V0IiwiYXNzZXJ0Q29udGV4dCIsImNvbnRleHRMaXN0IiwiZ2V0TG9nVHlwZXMiLCJyZXF1ZXN0Qm9keSIsInNlc3Npb25JZCIsIm1ldGhvZCIsImpzb24iLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJib2R5IiwicmVzIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFHQSxNQUFNQSxXQUFXLEdBQUcsS0FBcEI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyw4QkFBM0I7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxTQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQUMsTUFBRCxFQUFTLGFBQVQsQ0FBL0I7QUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FBQyxNQUFELEVBQVEsS0FBUixFQUFjLE9BQWQsRUFBc0IsT0FBdEIsRUFBOEIsUUFBOUIsRUFBdUMsVUFBdkMsQ0FBeEI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxLQUFLLElBQWxDLEMsQ0FBbUQ7O0FBRXBDLE1BQU1DLFlBQU4s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QUFjRyxZQUFkLENBQTJCLGtCQUEzQixDQUZKO0FBR0osK0JBQW1CO0FBSGY7QUFORixTQUFWO0FBWUg7O0FBRUQsVUFBSTtBQUNBLDhCQUFRM0QsT0FBUixFQUFpQixDQUFDdUosR0FBRCxFQUFNb0QsR0FBTixFQUFXRCxJQUFYLEtBQW9CO0FBQ2pDN0UsVUFBQUEsT0FBTztBQUNWLFNBRkQ7QUFHSCxPQUpELENBSUUsT0FBT3BDLENBQVAsRUFBVTtBQUNSLGFBQUt0RixNQUFMLENBQVlxSCxLQUFaLENBQWtCLG1EQUFtRC9CLENBQUMsQ0FBQ21ILFFBQUYsRUFBckU7QUFDQS9FLFFBQUFBLE9BQU87QUFDVjtBQUNKLEtBM0NNLENBQVA7QUE0Q0g7O0FBcGxCcUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbid1c2Ugc3RyaWN0JztcclxuLyoqXHJcbiAqIEBuYW1lIG1vYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3IgbW9iaWxlIGF1dG9tYXRpb24uXHJcbiAqIEBzYW1wbGUgKipMb2NhdG9yczoqKiAgXHJcbiAqIFxyXG4gKiBOYXRpdmUgYXBwbGljYXRpb24gbG9jYXRvcnMgZm9yIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy9hbmRyb2lkLnBuZykgIFxyXG4gKiAqIGAvWFBBVEhgIC0gTG9jYXRlcyBlbGVtZW50IHVzaW5nIGFuIFhQYXRoIDEuMCBleHByZXNzaW9uLlxyXG4gKiAqIGB+QUNDRVNTSUJJTElUWV9JRGAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIEFjY2Vzc2liaWxpdHkgSWQuXHJcbiAqICogYGlkPUlEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgaWQuXHJcbiAqICogYGNsYXNzPUNMQVNTYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgY2xhc3MuXHJcbiAqICogYHRleHQ9VEVYVGAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIHZpc2libGUgdGV4dC5cclxuICogKiBgdGV4dC1jb250YWlucz1URVhUYCAtIExvY2F0ZXMgZWxlbWVudCB3aG9zZSB2aXNpYmxlIHRleHQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcuXHJcbiAqICogYGRlc2M9REVTQ1JJUFRJT05gIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBkZXNjcmlwdGlvbi5cclxuICogKiBgZGVzYy1jb250YWlucz1ERVNDUklQVElPTmAgLSBMb2NhdGVzIGVsZW1lbnQgd2hvc2UgZGVzY3JpcHRpb24gY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcuXHJcbiAqICogYHNjcm9sbGFibGVgIC0gTG9jYXRlcyBlbGVtZW50cyB0aGF0IGFyZSBzY3JvbGxhYmxlLiAgXHJcbiAqICBcclxuICogTmF0aXZlIGFwcGxpY2F0aW9uIGxvY2F0b3JzIGZvciFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYXBwbGUucG5nKSAgXHJcbiAqICBcclxuICogKiBgL1hQQVRIYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhbiBYUGF0aCAxLjAgZXhwcmVzc2lvbi5cclxuICogKiBgaWQ9SURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBJRC5cclxuICogKiBgfkFDQ0VTU0lCSUxJVFlfSURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBBY2Nlc3NpYmlsaXR5IElkLiAgXHJcbiAqICBcclxuICogSHlicmlkIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy9oeWJyaWQucG5nKSAgYW5kIFdlYiFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvd2ViLnBuZykgIGFwcGxpY2F0aW9uIGxvY2F0b3JzIGZvciFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYW5kcm9pZC5wbmcpICAhW10oLi4vLi4vLmdpdGJvb2svYXNzZXRzL2FwcGxlLnBuZykgIFxyXG4gKiAgXHJcbiAqICogYC9YUEFUSGAgLSBMb2NhdGVzIGVsZW1lbnQgdXNpbmcgYW4gWFBhdGggMS4wIGV4cHJlc3Npb24uXHJcbiAqICogYGlkPUlEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgaWQuXHJcbiAqICogYG5hbWU9TkFNRWAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIG5hbWUgYXR0cmlidXRlLlxyXG4gKiAqIGB0YWc9TkFNRWAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIHRhZyBuYW1lLlxyXG4gKiAqIGBsaW5rPVRFWFRgIC0gTG9jYXRlcyBhbmNob3IgZWxlbWVudCB3aG9zZSB0ZXh0IG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZy5cclxuICogKiBgbGluay1jb250YWlucz1URVhUYCAtIExvY2F0ZXMgYW5jaG9yIGVsZW1lbnQgd2hvc2UgdGV4dCBjb250YWlucyB0aGUgZ2l2ZW4gc3RyaW5nLlxyXG4gKiAqIGBjc3M9Q1NTX1NFTEVDVE9SYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhIENTUyBzZWxlY3Rvci5cclxuICogXHJcbiAqICoqUGF0dGVybiBhcmd1bWVudHM6KipcclxuICogXHJcbiAqIENvbW1hbmRzIHdoaWNoIGV4cGVjdCBhIHN0cmluZyBtYXRjaGluZyBwYXR0ZXJuIGluIHRoZWlyIGFyZ3VtZW50cywgc3VwcG9ydCBmb2xsb3dpbmcgcGF0dGVybnMgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2U6XHJcbiAqIFxyXG4gKiAqIGByZWdleDpQQVRURVJOYCAtIE1hdGNoIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbi5cclxuICogKiBgUEFUVEVSTmAgLSBWZXJiYXRpbSBtYXRjaGluZy5cclxuICogXHJcbiAqL1xyXG5pbXBvcnQgVVJMIGZyb20gJ3VybCc7XHJcbmltcG9ydCAqIGFzIHdkaW8gZnJvbSAnd2ViZHJpdmVyaW8nO1xyXG5pbXBvcnQgV2ViRHJpdmVyTW9kdWxlIGZyb20gJy4uL2NvcmUvV2ViRHJpdmVyTW9kdWxlJztcclxuaW1wb3J0IG1vZFV0aWxzIGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgZXJySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgcGVyZmVjdG9SZXBvcnRpbmcgZnJvbSAncGVyZmVjdG8tcmVwb3J0aW5nJztcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdCc7XHJcbmltcG9ydCBtZXJnZUltYWdlcyBmcm9tICcuLi9saWIvaW1nLW1lcmdlJztcclxuaW1wb3J0IGVycm9ySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5cclxuY29uc3QgTU9EVUxFX05BTUUgPSAnbW9iJztcclxuY29uc3QgREVGQVVMVF9BUFBJVU1fVVJMID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDcyMy93ZC9odWInO1xyXG5jb25zdCBERUZBVUxUX0JST1dTRVJfTkFNRSA9ICdkZWZhdWx0JztcclxuY29uc3QgTk9fU0NSRUVOU0hPVF9DT01NQU5EUyA9IFsnaW5pdCcsICdhc3NlcnRBbGVydCddO1xyXG5jb25zdCBBQ1RJT05fQ09NTUFORFMgPSBbJ29wZW4nLCd0YXAnLCdjbGljaycsJ3N3aXBlJywnc3VibWl0Jywnc2V0VmFsdWUnXTtcclxuY29uc3QgREVGQVVMVF9XQUlUX1RJTUVPVVQgPSA2MCAqIDEwMDA7ICAgICAgICAgICAgLy8gZGVmYXVsdCA2MHMgd2FpdCB0aW1lb3V0XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2JpbGVNb2R1bGUgZXh0ZW5kcyBXZWJEcml2ZXJNb2R1bGUge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcyk7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMgPSB7fTtcclxuICAgICAgICB0aGlzLmxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5ldHdvcmtSZXF1ZXN0cyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzID0ge307XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0ID0gJ05BVElWRV9BUFAnO1xyXG4gICAgICAgIHRoaXMuX2xvYWRIZWxwZXJGdW5jdGlvbnMoKTtcclxuICAgICAgICAvLyBzdXBwb3J0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKHNvbWUgbW9kdWxlIGNvbW1hbmRzIG1pZ2h0IHJlZmVyIHRvIHRoaXMuT3hFcnJvciBhbmQgdGhpcy5lcnJIZWxwZXIpXHJcbiAgICAgICAgdGhpcy5PeEVycm9yID0gT3hFcnJvcjtcclxuICAgICAgICB0aGlzLmVyckhlbHBlciA9IGVyckhlbHBlcjtcclxuICAgICAgICAvLyBob2xkcyBlbGVtZW50IG9wZXJhdGlvbiB0aW1lb3V0IHZhbHVlXHJcbiAgICAgICAgdGhpcy53YWl0Rm9yVGltZW91dCA9IERFRkFVTFRfV0FJVF9USU1FT1VUO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBNT0RVTEVfTkFNRTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBmdW5jdGlvbiBnZXREcml2ZXJcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIHVuZGVybHlpbmcgV0RJTyBkcml2ZXIuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFdESU8gZHJpdmVyLlxyXG4gICAgICovXHJcbiAgICBnZXREcml2ZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldERyaXZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGZ1bmN0aW9uIGdldENhcGFiaWxpdGllc1xyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBjdXJyZW50bHkgZGVmaW5lZCBjYXBhYmlsaXRpZXMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEN1cnJlbnQgY2FwYWJpbGl0aWVzIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgZ2V0Q2FwYWJpbGl0aWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHMgfHwgc3VwZXIuZ2V0Q2FwYWJpbGl0aWVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgQXBwaXVtIHNlc3Npb24uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGNhcHMgLSBEZXNpcmVkIGNhcGFiaWxpdGllcy4gSWYgbm90IHNwZWNpZmllZCBjYXBhYmlsaXRpZXMgd2lsbCBiZSB0YWtlbiBmcm9tIHN1aXRlIGRlZmluaXRpb24uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGFwcGl1bVVybCAtIFJlbW90ZSBBcHBpdW0gc2VydmVyIFVSTCAoZGVmYXVsdDogaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1YikuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGluaXQoY2FwcywgYXBwaXVtVXJsKSB7XHJcbiAgICAgICAgLy8gaWYgcmVvcGVuU2Vzc2lvbiBpcyB0cnVlIC0gcmVpbml0aWxpemUgdGhlIG1vZHVsZVxyXG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZW9wZW5TZXNzaW9uICE9PSBmYWxzZSkgeyAvLyB0cnVlIG9yIGZhbHNlIGlmIGV4cGxpc2l0bHkgc2V0LiB0cnVlIG9uIG51bGwgb3IgdW5kZWZpbmVkLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3Jlb3BlblNlc3Npb24gaXMgdHJ1ZSAtIHJlbG9hZGluZyB0aGUgc2Vzc2lvbi4uLicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIucmVsb2FkU2Vzc2lvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnbW9iLmluaXQgd2FzIGNhbGxlZCBmb3IgYWxyZWFkeSBpbml0aWFsaXplZCBtb2R1bGUuIHJlb3BlblNlc3Npb24gaXMgZmFsc2Ugc28gdGhlIGNhbGwgaXMgaWdub3JlZC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVmYWN0b3JlZFxyXG4gICAgICAgIGlmICh0aGlzLmN0eC5jYXBzICYmIHRoaXMuY3R4LmNhcHNbJ3BlcmZlY3RvTW9iaWxlOm9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICBpZiAoY2Fwcykge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMucGxhdGZvcm1OYW1lO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMucGxhdGZvcm1WZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMuZGV2aWNlTmFtZTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBjYXBzLmJyb3dzZXJOYW1lO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMuYXV0b21hdGlvbk5hbWU7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgY2Fwcy51ZGlkO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjYXBzLmFwcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcHMuZW5hYmxlQXBwaXVtQmVoYXZpb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXBzLnVzZUFwcGl1bUZvcldlYiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2Fwcy5lbmFibGVBcHBpdW1CZWhhdmlvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5jYXBzLnVzZUFwcGl1bUZvcldlYiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5jYXBzLmVuYWJsZUFwcGl1bUJlaGF2aW9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFhcHBpdW1VcmwpIHtcclxuICAgICAgICAgICAgYXBwaXVtVXJsID0gdGhpcy5vcHRpb25zLmFwcGl1bVVybCB8fCBERUZBVUxUX0FQUElVTV9VUkw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBtZXJnZSBjYXBhYmlsaXRpZXMgZnJvbSBjb250ZXh0IGFuZCBmcm9tIGluaXQgZnVuY3Rpb24gYXJndW1lbnQsIGdpdmUgcHJlZmVyZW5jZSB0byBjb250ZXh0LXBhc3NlZCBjYXBhYmlsaXRpZXNcclxuICAgICAgICB0aGlzLmNhcHMgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5jdHguY2Fwcykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHMgPSB7IC4uLnRoaXMuY3R4LmNhcHMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNhcHMpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXBzID0geyAuLi50aGlzLmNhcHMsIC4uLmNhcHMgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBjbGVhciB0aGUgZXhpc3RpbmcgZGV2aWNlIGxvZ3MsIGlmIGNvbGxlY3REZXZpY2VMb2dzIG9wdGlvbiBpcyB0cnVlICh3ZSB3YW50IHRvIGluY2x1ZGUgbG9ncyBvbmx5IHJlbGV2YW50IGZvciB0aGlzIHNlc3Npb24pXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsZWN0RGV2aWNlTG9ncykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHNbXCJhcHBpdW06Y2xlYXJEZXZpY2VMb2dzT25TdGFydFwiXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZiBib3RoIGJyb3dzZXJOYW1lIGFuZCBhcHBQYWNrYWdlIHdlcmUgc3BlY2lmaWVkIC0gcmVtb3ZlIGJyb3dzZXJOYW1lXHJcbiAgICAgICAgaWYgKHRoaXMuY2Fwcy5icm93c2VyTmFtZSAmJiAodGhpcy5jYXBzLmFwcFBhY2thZ2UgfHwgdGhpcy5jYXBzLmFwcCkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2Fwcy5icm93c2VyTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgbm8gYXBwUGFja2FnZSBub3IgYXBwIGNhcGFiaWxpdHksIG5vdCBicm93c2VyTmFtZSBhcmUgZGVmaW5lZCwgYXNzdW1lIHdlIHdhbnQgdG8gcnVuIHRoZSB0ZXN0IGFnYWluc3QgZGVmYXVsdCBicm93c2VyXHJcbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuY2Fwcy5icm93c2VyTmFtZSAmJiAhdGhpcy5jYXBzLmFwcFBhY2thZ2UgJiYgIXRoaXMuY2Fwcy5hcHApIHtcclxuICAgICAgICAgICAgdGhpcy5jYXBzLmJyb3dzZXJOYW1lID0gREVGQVVMVF9CUk9XU0VSX05BTUU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdlYmRyaXZlciBleHBlY3RzIGxvd2VyIGNhc2UgbmFtZXNcclxuICAgICAgICBpZiAodGhpcy5jYXBzLmJyb3dzZXJOYW1lICYmIHR5cGVvZiB0aGlzLmNhcHMuYnJvd3Nlck5hbWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2Fwcy5icm93c2VyTmFtZSA9IHRoaXMuY2Fwcy5icm93c2VyTmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhZGp1c3QgY2FwYWJpbGl0aWVzIHRvIGVuYWJsZSBjb2xsZWN0aW5nIGJyb3dzZXIgYW5kIHBlcmZvcm1hbmNlIHN0YXRzIGluIENocm9tZSBcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlY29yZEhBUiAmJiB0aGlzLmNhcHMuYnJvd3Nlck5hbWUgPT09ICdjaHJvbWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2Fwc1snZ29vZzpsb2dnaW5nUHJlZnMnXSA9IHsgICAgIC8vIGZvciBDaHJvbWVEcml2ZXIgPj0gNzVcclxuICAgICAgICAgICAgICAgIGJyb3dzZXI6ICdBTEwnLFxyXG4gICAgICAgICAgICAgICAgcGVyZm9ybWFuY2U6ICdBTEwnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBwb3B1bGF0ZSBXRElPIG9wdGlvbnNcclxuICAgICAgICBjb25zdCB1cmwgPSBVUkwucGFyc2UoYXBwaXVtVXJsKTtcclxuICAgICAgICBjb25zdCBwcm90b2NvbCA9IHVybC5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKTtcclxuICAgICAgICBjb25zdCBob3N0ID0gdXJsLmhvc3RuYW1lO1xyXG4gICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZUludCh1cmwucG9ydCB8fCAocHJvdG9jb2wgPT09ICdodHRwcycgPyA0NDMgOiA4MCkpO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSB1cmwucGF0aG5hbWU7XHJcblxyXG4gICAgICAgIC8vIGF1dGggaXMgbmVlZGVkIG1vc3RseSBmb3IgY2xvdWQgcHJvdmlkZXJzIHN1Y2ggYXMgTGFtYmRhVGVzdFxyXG4gICAgICAgIGlmICh1cmwuYXV0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBhdXRoID0gdXJsLmF1dGguc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLndkaW9PcHRzID0ge1xyXG4gICAgICAgICAgICAgICAgdXNlcjogYXV0aFswXSxcclxuICAgICAgICAgICAgICAgIGtleTogYXV0aFsxXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHdkaW9PcHRzID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMud2Rpb09wdHMgfHwge30sXHJcbiAgICAgICAgICAgIHByb3RvY29sOiBwcm90b2NvbCxcclxuICAgICAgICAgICAgaG9zdG5hbWU6IGhvc3QsXHJcbiAgICAgICAgICAgIHBvcnQ6IHBvcnQsXHJcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXHJcbiAgICAgICAgICAgIGNhcGFiaWxpdGllczogdGhpcy5jYXBzLFxyXG4gICAgICAgICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXHJcbiAgICAgICAgICAgIHJ1bm5lcjogJ3JlcGwnLFxyXG4gICAgICAgICAgICB3YWl0Zm9yVGltZW91dDogNTAwMCwgLy8gaW5jcmVhc2UgdGhlIGRlZmF1bHQgMzAwMFxyXG4gICAgICAgICAgICBjb25uZWN0aW9uUmV0cnlUaW1lb3V0OiAzMTAqMTAwMCxcclxuICAgICAgICAgICAgY29ubmVjdGlvblJldHJ5Q291bnQ6IDFcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgcHJvdmlkZXIgPSBtb2RVdGlscy5kZXRlcm1pbmVQcm92aWRlcih3ZGlvT3B0cyk7XHJcbiAgICAgICAgbGV0IG5hbWUgPSAnbmFtZSc7XHJcblxyXG4gICAgICAgIGlmIChwcm92aWRlciA9PT0gbW9kVXRpbHMucHJvdmlkZXIuUEVSRkVDVE8pIHtcclxuICAgICAgICAgICAgd2Rpb09wdHMuY2FwYWJpbGl0aWVzLm1heEluc3RhbmNlcyA9IDE7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLnBhdGggPSAnL25leHBlcmllbmNlL3BlcmZlY3RvbW9iaWxlL3dkL2h1Yic7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLnBvcnQgPSA4MDtcclxuICAgICAgICAgICAgd2Rpb09wdHMucHJvdG9jb2wgPSAnaHR0cCc7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLm9wZW5EZXZpY2VUaW1lb3V0ID0gMTU7XHJcblxyXG4gICAgICAgICAgICBkZWxldGUgd2Rpb09wdHMuY2FwYWJpbGl0aWVzLm1hbnVmYWN0dXJlcjtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllcy5tb2RlbDtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllcy5icm93c2VyTmFtZTtcclxuXHJcbiAgICAgICAgICAgIG5hbWUgPSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ3BlcmZlY3RvTW9iaWxlOm9wdGlvbnMnXVsnbmFtZSddO1xyXG4gICAgICAgICAgICBkZWxldGUgd2Rpb09wdHMuY2FwYWJpbGl0aWVzWydwZXJmZWN0b01vYmlsZTpvcHRpb25zJ107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAod2Rpb09wdHMuY2FwYWJpbGl0aWVzWydic3RhY2s6b3B0aW9ucyddICYmIHdkaW9PcHRzLmNhcGFiaWxpdGllc1snYnN0YWNrOm9wdGlvbnMnXVsnbmFtZSddKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2JzdGFjazpvcHRpb25zJ11bJ25hbWUnXTtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllc1snYnN0YWNrOm9wdGlvbnMnXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMud2Rpb09wdHMgPSB3ZGlvT3B0cztcclxuXHJcbiAgICAgICAgLy8gaW5pdCB3ZWJkcml2ZXJcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLmRyaXZlciA9IGF3YWl0IHdkaW8ucmVtb3RlKHdkaW9PcHRzKTtcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIucHJvdmlkZXIgPSBwcm92aWRlcjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2VsZW5pdW1Ccm93c2VyVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIuc2VsZW5pdW1Ccm93c2VyVGltZW91dCA9IHRoaXMub3B0aW9ucy5zZWxlbml1bUJyb3dzZXJUaW1lb3V0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVuaXVtVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIuc2VsZW5pdW1UaW1lb3V0ID0gdGhpcy5vcHRpb25zLnNlbGVuaXVtVGltZW91dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHByb3ZpZGVyID09PSBtb2RVdGlscy5wcm92aWRlci5QRVJGRUNUTykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGVyZmVjdG9FeGVjdXRpb25Db250ZXh0ID0gYXdhaXQgbmV3IHBlcmZlY3RvUmVwb3J0aW5nLlBlcmZlY3RvLlBlcmZlY3RvRXhlY3V0aW9uQ29udGV4dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgd2ViZHJpdmVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVTY3JpcHQ6IGFzeW5jIChjb21tYW5kLCBwYXJhbXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRyaXZlci5leGVjdXRlKGNvbW1hbmQsIHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0aW5nQ2xpZW50ID0gbmV3IHBlcmZlY3RvUmVwb3J0aW5nLlBlcmZlY3RvLlBlcmZlY3RvUmVwb3J0aW5nQ2xpZW50KHBlcmZlY3RvRXhlY3V0aW9uQ29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlcG9ydGluZ0NsaWVudC50ZXN0U3RhcnQobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IGVyckhlbHBlci5nZXRBcHBpdW1Jbml0RXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFwcENvbnRleHQgPSBhd2FpdCB0aGlzLmRyaXZlci5nZXRDb250ZXh0KCk7XHJcblxyXG4gICAgICAgIC8vIGlmIHdlIGFyZSBydW5uaW5nIG9uIEFuZHJvaWQgNysgZW11bGF0b3IsIGFuZCB0aHVzL29yIHVzaW5nIGEgV2ViVmlldyBCcm93c2VyIFRlc3RlciAtXHJcbiAgICAgICAgLy8gcGVyZm9ybSBhbiBhY3R1YWwgYXBwQ29udGV4dCBzd2l0Y2ggdG8gV0VCXHJcbiAgICAgICAgLy8gc28gQXBwaXVtIHdpbGwgZGVsZWdhdGUgY29tbWFuZHMgdG8gQ2hyb21lIERyaXZlciBpbnN0ZWFkIG9mIEFwcGl1bSBEcml2ZXJcclxuICAgICAgICBpZiAodGhpcy5jYXBzLmJyb3dzZXJOYW1lID09PSAgJ2Nocm9taXVtLXdlYnZpZXcnKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0V2ViVmlld0NvbnRleHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChwcm92aWRlciA9PT0gbW9kVXRpbHMucHJvdmlkZXIuQlJPV1NFUlNUQUNLKSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICAvLyBmYWlscyBvbiBicm93c2Vyc3RhY2tcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ2ltcGxpY2l0JzogdGhpcy53YWl0Rm9yVGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3VwZXIuaW5pdCh0aGlzLmRyaXZlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZnVuY3Rpb24gZGlzcG9zZVxyXG4gICAgICogQHN1bW1hcnkgRW5kcyB0aGUgY3VycmVudCBzZXNzaW9uLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBzdGF0dXMgLSBUZXN0IHN0YXR1cywgZWl0aGVyIGBwYXNzZWRgIG9yIGBmYWlsZWRgLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBkaXNwb3NlKHN0YXR1cykge1xyXG4gICAgICAgIGlmICghc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHN0YXR1cyA9ICdwYXNzZWQnO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMucnMuc3RlcHMgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnJzLnN0ZXBzKSAmJiB0aGlzLnJzLnN0ZXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZhaWxlZEZpbmRlZCA9IHRoaXMucnMuc3RlcHMuZmluZCgoaXRlbSkgPT4gaXRlbS5zdGF0dXMgPT09ICdmYWlsZWQnKTtcclxuICAgICAgICAgICAgICAgIGlmIChmYWlsZWRGaW5kZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAnZmFpbGVkJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJpdmVyICYmIHRoaXMuaXNJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICBzdGF0dXMgPSBzdGF0dXMudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyaXZlci5wcm92aWRlciA9PT0gbW9kVXRpbHMucHJvdmlkZXIuUEVSRkVDVE8pIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVwb3J0aW5nQ2xpZW50LnRlc3RTdG9wKHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA9PT0gJ1BBU1NFRCcgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZlY3RvUmVwb3J0aW5nLkNvbnN0YW50cy5yZXN1bHRzLnBhc3NlZCA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZmVjdG9SZXBvcnRpbmcuQ29uc3RhbnRzLnJlc3VsdHMuZmFpbGVkXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyaXZlci5wcm92aWRlciA9PT0gbW9kVXRpbHMucHJvdmlkZXIuQlJPV1NFUlNUQUNLKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9zZW5kUmVzdWx0U3RhdHVzVG9Ccm93c2Vyc3RhY2soc3RhdHVzKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbigpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFbJ0NBTkNFTEVEJywgJ0ZBSUxFRCddLmluY2x1ZGVzKHN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlbml1bVNlc3Npb25UaW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGVTZXNzaW9uIHdpbGwgdGFrZSA1IG1pbiB0byBjYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuZGVsZXRlU2Vzc2lvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybignRXJyb3IgZGlzcG9zaW5nIGRyaXZlcjogJyArIGUpOyAgICAvLyBpZ25vcmUgYW55IGVycm9ycyBhdCBkaXNwb3NhbCBzdGFnZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5sYXN0TmF2aWdhdGlvblN0YXJ0VGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgIHN1cGVyLmRpc3Bvc2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgT3BlbnMgbmV3IHRyYW5zYWN0aW9uLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiB3aWxsIHBlcnNpc3QgdGlsbCBhIG5ldyBvbmUgaXMgb3BlbmVkLiBUcmFuc2FjdGlvbiBuYW1lcyBtdXN0IGJlXHJcbiAgICAgKiAgICAgICAgICAgICAgdW5pcXVlLlxyXG4gICAgICogQGZ1bmN0aW9uIHRyYW5zYWN0aW9uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSB0cmFuc2FjdGlvbiBuYW1lLlxyXG4gICAgICogQGZvciBhbmRyb2lkLCBpb3MsIGh5YnJpZCwgd2ViXHJcbiAgICAgKi9cclxuICAgIHRyYW5zYWN0aW9uKG5hbWUpIHtcclxuICAgICAgICBnbG9iYWwuX2xhc3RUcmFuc2FjdGlvbk5hbWUgPSBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBQcml2YXRlXHJcbiAgICAgKi9cclxuXHJcbiAgICBfaXNBY3Rpb24obmFtZSkge1xyXG4gICAgICAgIHJldHVybiBBQ1RJT05fQ09NTUFORFMuaW5jbHVkZXMobmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgX3Rha2VTY3JlZW5zaG90U2lsZW50KG5hbWUpIHtcclxuICAgICAgICBpZiAoIU5PX1NDUkVFTlNIT1RfQ09NTUFORFMuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgICAgICAgICAgbGV0IGVycm9yO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIudGFrZVNjcmVlbnNob3RcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXR2YWw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FsbCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3YWl0VW50aWxSZXRWYWwgPSB0aGlzLmRyaXZlci53YWl0VW50aWwoYXN5bmMoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHVzaEltYWdlVG9JbWFnZXMgPSBhc3luYyhmZXRjaFRpdGxlID0gdHJ1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBhd2FpdCB0aGlzLmRyaXZlci50YWtlU2NyZWVuc2hvdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZldGNoVGl0bGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldFRpdGxlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRUb0ltYWdlID0gcmVxdWlyZSgndGV4dC10by1pbWFnZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGVJbWFnZSA9IGF3YWl0IHRleHRUb0ltYWdlLmdlbmVyYXRlKHRpdGxlLCB7IGRlYnVnOiBmYWxzZSwgZm9udEZhbWlseTogJ0FyaWFsJyB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlSW1hZ2UgJiYgdHlwZW9mIHRpdGxlSW1hZ2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUltYWdlID0gdGl0bGVJbWFnZS5yZXBsYWNlKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJywgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLnB1c2godGl0bGVJbWFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLnB1c2goaW1hZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNXZWJWaWV3Q29udGV4dCA9IGF3YWl0IHRoaXMuaXNXZWJWaWV3Q29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNXZWJWaWV3Q29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sbGVjdCBhbGwgKHNjcmVlbnNob3QgYW5kIHRpdGxlKSBpbWFnZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZXMgPSBhd2FpdCB0aGlzLmRyaXZlci5nZXRXaW5kb3dIYW5kbGVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaGFuZGxlcykgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaGFuZGxlIG9mIGhhbmRsZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc3dpdGNoVG9XaW5kb3coaGFuZGxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHVzaEltYWdlVG9JbWFnZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBwdXNoSW1hZ2VUb0ltYWdlcyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lcmdlIGFsbCBpbWFnZXMgaW50byBvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVyZ2VkSW1hZ2UgPSBhd2FpdCBtZXJnZUltYWdlcyhpbWFnZXMsIHsgZGlyZWN0aW9uOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VkSW1hZ2UgJiYgdHlwZW9mIG1lcmdlZEltYWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gbWVyZ2VkSW1hZ2UucmVwbGFjZSgnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnLCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdGltZW91dDogMzAqMTAwMCB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FpdFVudGlsUmV0VmFsICYmIHdhaXRVbnRpbFJldFZhbC50aGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdFVudGlsUmV0VmFsLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdDYW5ub3QgZ2V0IHNjcmVlbnNob3QnLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dmFsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IGdldCBzY3JlZW5zaG90JywgZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IGdldCBzY3JlZW5zaG90IGlubmVyIGVycm9yJywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gX2dldExvZ3MobmFtZSkge1xyXG4gICAgLy8gICAgIGlmICghTk9fTE9HU19DT01NQU5EUy5pbmNsdWRlcyhuYW1lKSkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2dzKCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gfVxyXG5cclxuICAgIF9hZGp1c3RBcHBpdW1Mb2cobG9nLCBzcmMpIHtcclxuICAgICAgICBpZiAoIWxvZyB8fCB0eXBlb2YgbG9nICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVE9ETzogY29udmVydCBsb2cudGltZXN0YW1wIGZyb20gdGhlIGRldmljZSB0aW1lIHpvbmUgdG8gdGhlIGxvY2FsIG9uZSAoc28gd2UgY2FuIGxhdGVyIGNvcnJlbGF0ZSBiZXR3ZWVuIHN0ZXBzIGFuZCBsb2dzKSAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGltZTogbG9nLnRpbWVzdGFtcCxcclxuICAgICAgICAgICAgbXNnOiBsb2cubWVzc2FnZSxcclxuICAgICAgICAgICAgbGV2ZWw6IGxvZy5sZXZlbCxcclxuICAgICAgICAgICAgc3JjOiBzcmNcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIF9pdGVyYXRpb25TdGFydCgpIHtcclxuICAgICAgICAvLyBjbGVhciB0cmFuc2FjdGlvbiBuYW1lIHNhdmVkIGluIHByZXZpb3VzIGl0ZXJhdGlvbiBpZiBhbnlcclxuICAgICAgICBnbG9iYWwuX2xhc3RUcmFuc2FjdGlvbk5hbWUgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9pdGVyYXRpb25FbmQoZXJyb3IpIHtcclxuICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IudHlwZSA9PT0gZXJyb3JIZWxwZXIuZXJyb3JDb2RlLlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVuaXVtU2Vzc2lvblRpbWVvdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlbml1bVNlc3Npb25UaW1lb3V0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlnbm9yZSB0aGUgcmVzdCBpZiBtb2IgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZFxyXG4gICAgICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29sbGVjdCBhbGwgdGhlIGRldmljZSBsb2dzIGZvciB0aGlzIHNlc3Npb25cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxlY3REZXZpY2VMb2dzKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dzID0gYXdhaXQgdGhpcy5nZXREZXZpY2VMb2dzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9ncyAmJiBBcnJheS5pc0FycmF5KGxvZ3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbG9nIG9mIGxvZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ycy5sb2dzLnB1c2godGhpcy5fYWRqdXN0QXBwaXVtTG9nKGxvZywgJ2RldmljZScpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnNcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdDYW5ub3QgcmV0cmlldmUgZGV2aWNlIGxvZ3MuJywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbGxlY3QgYWxsIHRoZSBicm93c2VyIGxvZ3MgZm9yIHRoaXMgc2Vzc2lvblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29sbGVjdEJyb3dzZXJMb2dzKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dzID0gYXdhaXQgdGhpcy5nZXRCcm93c2VyTG9ncygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvZ3MgJiYgQXJyYXkuaXNBcnJheShsb2dzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGxvZyBvZiBsb2dzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnMubG9ncy5wdXNoKHRoaXMuX2FkanVzdEFwcGl1bUxvZyhsb2csICdicm93c2VyJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCByZXRyaWV2ZSBicm93c2VyIGxvZ3MuJywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbGxlY3QgYWxsIEFwcGl1bSBsb2dzIGZvciB0aGlzIHNlc3Npb25cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxlY3RBcHBpdW1Mb2dzKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dzID0gdGhpcy5nZXRBcHBpdW1Mb2dzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9ncyAmJiBBcnJheS5pc0FycmF5KGxvZ3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbG9nRW50cnkgb2YgbG9ncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJzLmxvZ3MucHVzaCh0aGlzLl9hZGp1c3RBcHBpdW1Mb2cobG9nRW50cnksICdhcHBpdW0nKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IHJldHJpZXZlIEFwcGl1bSBsb2dzLicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9nZXRXZGlvTG9jYXRvcihsb2NhdG9yKSB7XHJcbiAgICAgICAgaWYgKCFsb2NhdG9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIGxvY2F0b3Igbm90IHNwZWNpZmllZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGxvY2F0b3IgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobG9jYXRvci5pbmRleE9mKCcvJykgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7IC8vIGxlYXZlIHhwYXRoIGxvY2F0b3IgYXMgaXNcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGxhdGZvcm0gPSB0aGlzLmNhcHMgJiYgdGhpcy5jYXBzLnBsYXRmb3JtTmFtZSA/IHRoaXMuY2Fwcy5wbGF0Zm9ybU5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcENvbnRleHQgPT09ICdOQVRJVkVfQVBQJyAmJiBwbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBwcmVwZW5kIHBhY2thZ2UgbmFtZSBpZiBpdCdzIG5vdCBzcGVjaWZpZWRcclxuICAgICAgICAgICAgICAgIC8vIE5PVEU6IGdldEN1cnJlbnRQYWNrYWdlKCkgc2VlbXMgdG8gY3Jhc2ggcG9zc2libHkgZHVlIHRvIGEgd2RpbyBidWcuIFxyXG4gICAgICAgICAgICAgICAgLy8gICAgICAgc28gd2UgZ2V0IHBhY2thZ2UgbmFtZSBmcm9tIGNhcHMgaW5zdGVhZC5cclxuICAgICAgICAgICAgICAgIGxvY2F0b3IgPSBsb2NhdG9yLnN1YnN0cignaWQ9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0b3IuaW5kZXhPZignOmlkLycpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0b3IgPSB0aGlzLmNhcHMuYXBwUGFja2FnZSArICc6aWQvJyArIGxvY2F0b3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FuZHJvaWQ9bmV3IFVpU2VsZWN0b3IoKS5yZXNvdXJjZUlkKFwiJyArIGxvY2F0b3IgKyAnXCIpJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2NsYXNzPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuY2xhc3NOYW1lKFwiJyArIGxvY2F0b3Iuc3Vic3RyKCdjbGFzcz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0ZXh0PScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkudGV4dChcIicgKyBsb2NhdG9yLnN1YnN0cigndGV4dD0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0ZXh0LWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkudGV4dENvbnRhaW5zKFwiJyArIGxvY2F0b3Iuc3Vic3RyKCd0ZXh0LWNvbnRhaW5zPScubGVuZ3RoKSArICdcIiknO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Rlc2M9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FuZHJvaWQ9bmV3IFVpU2VsZWN0b3IoKS5kZXNjcmlwdGlvbihcIicgKyBsb2NhdG9yLnN1YnN0cignZGVzYz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdkZXNjLWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuZGVzY3JpcHRpb25Db250YWlucyhcIicgKyBsb2NhdG9yLnN1YnN0cignZGVzYy1jb250YWlucz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdzY3JvbGxhYmxlJykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FuZHJvaWQ9bmV3IFVpU2VsZWN0b3IoKS5zY3JvbGxhYmxlKHRydWUpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd+JykgPT09IDApICAgIC8vIGFjY2Vzc2liaWxpdHkgaWRcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb250ZXh0ID09PSAnTkFUSVZFX0FQUCcgJiYgcGxhdGZvcm0gPT09ICdpb3MnKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJ34nKSA9PT0gMCkgLy8gYWNjZXNzaWJpbGl0eSBpZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcENvbnRleHQgIT09ICdOQVRJVkVfQVBQJykgeyAgICAgICAgICAgIC8vIEh5YnJpZCBvciBXZWIgYXBwbGljYXRpb25cclxuICAgICAgICAgICAgaWYgKGxvY2F0b3IuaW5kZXhPZignaWQ9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJyMnICsgbG9jYXRvci5zdWJzdHIoJ2lkPScubGVuZ3RoKTsgICAgICAvLyBjb252ZXJ0ICdpZD0nIHRvICcjJ1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ25hbWU9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tuYW1lPScgKyBsb2NhdG9yLnN1YnN0cignbmFtZT0nLmxlbmd0aCkgKyAnXSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbGluaz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnPScgKyBsb2NhdG9yLnN1YnN0cignbGluaz0nLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbGluay1jb250YWlucz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnKj0nICsgbG9jYXRvci5zdWJzdHIoJ2xpbms9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Nzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdG9yLnN1YnN0cignY3NzPScubGVuZ3RoKTsgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgY3NzLCBqdXN0IHJlbW92ZSBjc3M9IHByZWZpeFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgX2xvYWRIZWxwZXJGdW5jdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yID0gdGhpcy5fZ2V0V2Rpb0xvY2F0b3I7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLm1hdGNoUGF0dGVybiA9IG1vZFV0aWxzLm1hdGNoUGF0dGVybjtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuZ2V0RWxlbWVudCA9IG1vZFV0aWxzLmdldEVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldEVsZW1lbnRzID0gbW9kVXRpbHMuZ2V0RWxlbWVudHM7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldENoaWxkRWxlbWVudCA9IG1vZFV0aWxzLmdldENoaWxkRWxlbWVudDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuZ2V0Q2hpbGRFbGVtZW50cyA9IG1vZFV0aWxzLmdldENoaWxkRWxlbWVudHM7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLnNldFRpbWVvdXRJbXBsaWNpdCA9IG1vZFV0aWxzLnNldFRpbWVvdXRJbXBsaWNpdDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdCA9IG1vZFV0aWxzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50ID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlciA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZTtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRCb29sID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnRCb29sO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbCA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudFRpbWVvdXQgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudFRpbWVvdXQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydENvbnRleHQgPSBtb2RVdGlscy5hc3NlcnRDb250ZXh0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5jb250ZXh0TGlzdCA9IG1vZFV0aWxzLmNvbnRleHRMaXN0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRMb2dUeXBlcyA9IG1vZFV0aWxzLmdldExvZ1R5cGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZVNlc3Npb24oKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZHJpdmVyICYmIHRoaXMuZHJpdmVyLmRlbGV0ZVNlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLmRlbGV0ZVNlc3Npb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ2RlbGV0ZVNlc3Npb24gZXJyb3InLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX3NlbmRSZXN1bHRTdGF0dXNUb0Jyb3dzZXJzdGFjayhzdGF0dXMpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzID09PSAnUEFTU0VEJyA/ICdwYXNzZWQnIDogJ2ZhaWxlZCdcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMud2Rpb09wdHMuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vYXBpLmJyb3dzZXJzdGFjay5jb20vYXV0b21hdGUvc2Vzc2lvbnMvJHt0aGlzLmRyaXZlci5zZXNzaW9uSWR9Lmpzb25gLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BVVCcsXHJcbiAgICAgICAgICAgICAgICAgICAganNvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IHJlcXVlc3RCb2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICdhdXRoJzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHRoaXMud2Rpb09wdHMudXNlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MnOiB0aGlzLndkaW9PcHRzLmtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbmRJbW1lZGlhdGVseSc6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vYXBpLWNsb3VkLmJyb3dzZXJzdGFjay5jb20vYXBwLWF1dG9tYXRlL3Nlc3Npb25zLyR7dGhpcy5kcml2ZXIuc2Vzc2lvbklkfS5qc29uYCxcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBib2R5OiByZXF1ZXN0Qm9keSxcclxuICAgICAgICAgICAgICAgICAgICAnYXV0aCc6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXInOiB0aGlzLndkaW9PcHRzLmNhcGFiaWxpdGllc1snYnJvd3NlcnN0YWNrLnVzZXInXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MnOiB0aGlzLndkaW9PcHRzLmNhcGFiaWxpdGllc1snYnJvd3NlcnN0YWNrLmtleSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VuZEltbWVkaWF0ZWx5JzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJlcXVlc3Qob3B0aW9ucywgKGVyciwgcmVzLCBib2R5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdVbmFibGUgdG8gc2VuZCByZXN1bHQgc3RhdHVzIHRvIEJyb3dzZXJzdGFjazogJyArIGUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
699
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1tb2IuanMiXSwibmFtZXMiOlsiTU9EVUxFX05BTUUiLCJERUZBVUxUX0FQUElVTV9VUkwiLCJERUZBVUxUX0JST1dTRVJfTkFNRSIsIk5PX1NDUkVFTlNIT1RfQ09NTUFORFMiLCJBQ1RJT05fQ09NTUFORFMiLCJERUZBVUxUX1dBSVRfVElNRU9VVCIsIk1vYmlsZU1vZHVsZSIsIldlYkRyaXZlck1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsInRyYW5zYWN0aW9ucyIsImxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lIiwibmV0d29ya1JlcXVlc3RzIiwiaGVscGVycyIsImFwcENvbnRleHQiLCJfbG9hZEhlbHBlckZ1bmN0aW9ucyIsIk94RXJyb3IiLCJlcnJIZWxwZXIiLCJ3YWl0Rm9yVGltZW91dCIsIm5hbWUiLCJnZXREcml2ZXIiLCJnZXRDYXBhYmlsaXRpZXMiLCJjYXBzIiwiaW5pdCIsImFwcGl1bVVybCIsImlzSW5pdGlhbGl6ZWQiLCJyZW9wZW5TZXNzaW9uIiwiZGVidWciLCJkcml2ZXIiLCJyZWxvYWRTZXNzaW9uIiwiX2lzSW5pdGlhbGl6ZWQiLCJjdHgiLCJwbGF0Zm9ybU5hbWUiLCJwbGF0Zm9ybVZlcnNpb24iLCJkZXZpY2VOYW1lIiwiYnJvd3Nlck5hbWUiLCJhdXRvbWF0aW9uTmFtZSIsInVkaWQiLCJhcHAiLCJlbmFibGVBcHBpdW1CZWhhdmlvciIsInVzZUFwcGl1bUZvcldlYiIsImNvbGxlY3REZXZpY2VMb2dzIiwiYXBwUGFja2FnZSIsInRvTG93ZXJDYXNlIiwicmVjb3JkSEFSIiwiYnJvd3NlciIsInBlcmZvcm1hbmNlIiwidXJsIiwiVVJMIiwicGFyc2UiLCJwcm90b2NvbCIsInJlcGxhY2UiLCJob3N0IiwiaG9zdG5hbWUiLCJwb3J0IiwicGFyc2VJbnQiLCJwYXRoIiwicGF0aG5hbWUiLCJhdXRoIiwic3BsaXQiLCJ3ZGlvT3B0cyIsInVzZXIiLCJrZXkiLCJjYXBhYmlsaXRpZXMiLCJsb2dMZXZlbCIsInJ1bm5lciIsIndhaXRmb3JUaW1lb3V0IiwiY29ubmVjdGlvblJldHJ5VGltZW91dCIsImNvbm5lY3Rpb25SZXRyeUNvdW50IiwicHJvdmlkZXIiLCJtb2RVdGlscyIsImRldGVybWluZVByb3ZpZGVyIiwiUEVSRkVDVE8iLCJtYXhJbnN0YW5jZXMiLCJvcGVuRGV2aWNlVGltZW91dCIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwid2RpbyIsInJlbW90ZSIsInNlbGVuaXVtQnJvd3NlclRpbWVvdXQiLCJzZWxlbml1bVRpbWVvdXQiLCJwZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQiLCJwZXJmZWN0b1JlcG9ydGluZyIsIlBlcmZlY3RvIiwiUGVyZmVjdG9FeGVjdXRpb25Db250ZXh0Iiwid2ViZHJpdmVyIiwiZXhlY3V0ZVNjcmlwdCIsImNvbW1hbmQiLCJwYXJhbXMiLCJleGVjdXRlIiwicmVwb3J0aW5nQ2xpZW50IiwiUGVyZmVjdG9SZXBvcnRpbmdDbGllbnQiLCJ0ZXN0U3RhcnQiLCJlIiwiZ2V0QXBwaXVtSW5pdEVycm9yIiwiZ2V0Q29udGV4dCIsInNldFdlYlZpZXdDb250ZXh0IiwiQlJPV1NFUlNUQUNLIiwic2V0VGltZW91dCIsImRpc3Bvc2UiLCJzdGF0dXMiLCJzdGVwcyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImZhaWxlZEZpbmRlZCIsImZpbmQiLCJpdGVtIiwidG9VcHBlckNhc2UiLCJ0ZXN0U3RvcCIsIkNvbnN0YW50cyIsInJlc3VsdHMiLCJwYXNzZWQiLCJmYWlsZWQiLCJfc2VuZFJlc3VsdFN0YXR1c1RvQnJvd3NlcnN0YWNrIiwiZGVsZXRlU2Vzc2lvbiIsImluY2x1ZGVzIiwic2VsZW5pdW1TZXNzaW9uVGltZW91dCIsIndhcm4iLCJ0cmFuc2FjdGlvbiIsImdsb2JhbCIsIl9sYXN0VHJhbnNhY3Rpb25OYW1lIiwiX2lzQWN0aW9uIiwiX3Rha2VTY3JlZW5zaG90U2lsZW50IiwiZXJyb3IiLCJ0YWtlU2NyZWVuc2hvdCIsInJldHZhbCIsImNhbGwiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIndhaXRVbnRpbFJldFZhbCIsIndhaXRVbnRpbCIsImltYWdlcyIsInB1c2hJbWFnZVRvSW1hZ2VzIiwiZmV0Y2hUaXRsZSIsImltYWdlIiwidGl0bGUiLCJnZXRUaXRsZSIsInRleHRUb0ltYWdlIiwicmVxdWlyZSIsInRpdGxlSW1hZ2UiLCJnZW5lcmF0ZSIsImZvbnRGYW1pbHkiLCJwdXNoIiwiaXNXZWJWaWV3Q29udGV4dCIsImhhbmRsZXMiLCJnZXRXaW5kb3dIYW5kbGVzIiwiaGFuZGxlIiwic3dpdGNoVG9XaW5kb3ciLCJtZXJnZWRJbWFnZSIsImRpcmVjdGlvbiIsInRpbWVvdXQiLCJ0aGVuIiwiY2F0Y2giLCJlcnIiLCJfYWRqdXN0QXBwaXVtTG9nIiwibG9nIiwic3JjIiwidGltZSIsInRpbWVzdGFtcCIsIm1zZyIsIm1lc3NhZ2UiLCJsZXZlbCIsIl9pdGVyYXRpb25TdGFydCIsIl9pdGVyYXRpb25FbmQiLCJ0eXBlIiwiZXJyb3JIZWxwZXIiLCJlcnJvckNvZGUiLCJTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQiLCJsb2dzIiwiZ2V0RGV2aWNlTG9ncyIsImNvbGxlY3RCcm93c2VyTG9ncyIsImdldEJyb3dzZXJMb2dzIiwiY29sbGVjdEFwcGl1bUxvZ3MiLCJnZXRBcHBpdW1Mb2dzIiwibG9nRW50cnkiLCJfZ2V0V2Rpb0xvY2F0b3IiLCJsb2NhdG9yIiwiU0NSSVBUX0VSUk9SIiwiaW5kZXhPZiIsInBsYXRmb3JtIiwic3Vic3RyIiwiZ2V0V2Rpb0xvY2F0b3IiLCJtYXRjaFBhdHRlcm4iLCJnZXRFbGVtZW50IiwiZ2V0RWxlbWVudHMiLCJnZXRDaGlsZEVsZW1lbnQiLCJnZXRDaGlsZEVsZW1lbnRzIiwic2V0VGltZW91dEltcGxpY2l0IiwicmVzdG9yZVRpbWVvdXRJbXBsaWNpdCIsImFzc2VydEFyZ3VtZW50IiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyIiwiYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsIiwiYXNzZXJ0QXJndW1lbnRUaW1lb3V0IiwiYXNzZXJ0Q29udGV4dCIsImNvbnRleHRMaXN0IiwiZ2V0TG9nVHlwZXMiLCJyZXF1ZXN0Qm9keSIsInNlc3Npb25JZCIsIm1ldGhvZCIsImpzb24iLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJib2R5IiwicmVzIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFHQSxNQUFNQSxXQUFXLEdBQUcsS0FBcEI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyw4QkFBM0I7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxTQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQUMsTUFBRCxFQUFTLGFBQVQsQ0FBL0I7QUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FBQyxNQUFELEVBQVEsS0FBUixFQUFjLE9BQWQsRUFBc0IsT0FBdEIsRUFBOEIsUUFBOUIsRUFBdUMsVUFBdkMsQ0FBeEI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxLQUFLLElBQWxDLEMsQ0FBbUQ7O0FBRXBDLE1BQU1DLFlBQU4s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QUFjRyxZQUFkLENBQTJCLGtCQUEzQixDQUZKO0FBR0osK0JBQW1CO0FBSGY7QUFORixTQUFWO0FBWUg7O0FBRUQsVUFBSTtBQUNBLDhCQUFRM0QsT0FBUixFQUFpQixDQUFDdUosR0FBRCxFQUFNb0QsR0FBTixFQUFXRCxJQUFYLEtBQW9CO0FBQ2pDN0UsVUFBQUEsT0FBTztBQUNWLFNBRkQ7QUFHSCxPQUpELENBSUUsT0FBT3BDLENBQVAsRUFBVTtBQUNSLGFBQUt0RixNQUFMLENBQVlxSCxLQUFaLENBQWtCLG1EQUFtRC9CLENBQUMsQ0FBQ21ILFFBQUYsRUFBckU7QUFDQS9FLFFBQUFBLE9BQU87QUFDVjtBQUNKLEtBM0NNLENBQVA7QUE0Q0g7O0FBcGxCcUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbid1c2Ugc3RyaWN0JztcclxuLyoqXHJcbiAqIEBuYW1lIG1vYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3IgbW9iaWxlIGF1dG9tYXRpb24uXHJcbiAqIEBzYW1wbGUgKipMb2NhdG9yczoqKiAgXHJcbiAqIFxyXG4gKiBOYXRpdmUgYXBwbGljYXRpb24gbG9jYXRvcnMgZm9yIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy9hbmRyb2lkLnBuZykgIFxyXG4gKiAqIGAvWFBBVEhgIC0gTG9jYXRlcyBlbGVtZW50IHVzaW5nIGFuIFhQYXRoIDEuMCBleHByZXNzaW9uLlxyXG4gKiAqIGB+QUNDRVNTSUJJTElUWV9JRGAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIEFjY2Vzc2liaWxpdHkgSWQuXHJcbiAqICogYGlkPUlEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgaWQuXHJcbiAqICogYGNsYXNzPUNMQVNTYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgY2xhc3MuXHJcbiAqICogYHRleHQ9VEVYVGAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIHZpc2libGUgdGV4dC5cclxuICogKiBgdGV4dC1jb250YWlucz1URVhUYCAtIExvY2F0ZXMgZWxlbWVudCB3aG9zZSB2aXNpYmxlIHRleHQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcuXHJcbiAqICogYGRlc2M9REVTQ1JJUFRJT05gIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBkZXNjcmlwdGlvbi5cclxuICogKiBgZGVzYy1jb250YWlucz1ERVNDUklQVElPTmAgLSBMb2NhdGVzIGVsZW1lbnQgd2hvc2UgZGVzY3JpcHRpb24gY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcuXHJcbiAqICogYHNjcm9sbGFibGVgIC0gTG9jYXRlcyBlbGVtZW50cyB0aGF0IGFyZSBzY3JvbGxhYmxlLiAgXHJcbiAqICBcclxuICogTmF0aXZlIGFwcGxpY2F0aW9uIGxvY2F0b3JzIGZvciFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYXBwbGUucG5nKSAgXHJcbiAqICBcclxuICogKiBgL1hQQVRIYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhbiBYUGF0aCAxLjAgZXhwcmVzc2lvbi5cclxuICogKiBgaWQ9SURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBJRC5cclxuICogKiBgfkFDQ0VTU0lCSUxJVFlfSURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBBY2Nlc3NpYmlsaXR5IElkLiAgXHJcbiAqICBcclxuICogSHlicmlkIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy9oeWJyaWQucG5nKSAgYW5kIFdlYiFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvd2ViLnBuZykgIGFwcGxpY2F0aW9uIGxvY2F0b3JzIGZvciFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYW5kcm9pZC5wbmcpICAhW10oLi4vLi4vLmdpdGJvb2svYXNzZXRzL2FwcGxlLnBuZykgIFxyXG4gKiAgXHJcbiAqICogYC9YUEFUSGAgLSBMb2NhdGVzIGVsZW1lbnQgdXNpbmcgYW4gWFBhdGggMS4wIGV4cHJlc3Npb24uXHJcbiAqICogYGlkPUlEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgaWQuXHJcbiAqICogYG5hbWU9TkFNRWAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIG5hbWUgYXR0cmlidXRlLlxyXG4gKiAqIGB0YWc9TkFNRWAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIHRhZyBuYW1lLlxyXG4gKiAqIGBsaW5rPVRFWFRgIC0gTG9jYXRlcyBhbmNob3IgZWxlbWVudCB3aG9zZSB0ZXh0IG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZy5cclxuICogKiBgbGluay1jb250YWlucz1URVhUYCAtIExvY2F0ZXMgYW5jaG9yIGVsZW1lbnQgd2hvc2UgdGV4dCBjb250YWlucyB0aGUgZ2l2ZW4gc3RyaW5nLlxyXG4gKiAqIGBjc3M9Q1NTX1NFTEVDVE9SYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhIENTUyBzZWxlY3Rvci5cclxuICogXHJcbiAqICoqUGF0dGVybiBhcmd1bWVudHM6KipcclxuICogXHJcbiAqIENvbW1hbmRzIHdoaWNoIGV4cGVjdCBhIHN0cmluZyBtYXRjaGluZyBwYXR0ZXJuIGluIHRoZWlyIGFyZ3VtZW50cywgc3VwcG9ydCBmb2xsb3dpbmcgcGF0dGVybnMgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2U6XHJcbiAqIFxyXG4gKiAqIGByZWdleDpQQVRURVJOYCAtIE1hdGNoIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbi5cclxuICogKiBgUEFUVEVSTmAgLSBWZXJiYXRpbSBtYXRjaGluZy5cclxuICogXHJcbiAqL1xyXG5pbXBvcnQgVVJMIGZyb20gJ3VybCc7XHJcbmltcG9ydCAqIGFzIHdkaW8gZnJvbSAnd2ViZHJpdmVyaW8nO1xyXG5pbXBvcnQgV2ViRHJpdmVyTW9kdWxlIGZyb20gJy4uL2NvcmUvV2ViRHJpdmVyTW9kdWxlJztcclxuaW1wb3J0IG1vZFV0aWxzIGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgZXJySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgcGVyZmVjdG9SZXBvcnRpbmcgZnJvbSAncGVyZmVjdG8tcmVwb3J0aW5nJztcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdCc7XHJcbmltcG9ydCBtZXJnZUltYWdlcyBmcm9tICcuLi9saWIvaW1nLW1lcmdlJztcclxuaW1wb3J0IGVycm9ySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5cclxuY29uc3QgTU9EVUxFX05BTUUgPSAnbW9iJztcclxuY29uc3QgREVGQVVMVF9BUFBJVU1fVVJMID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDcyMy93ZC9odWInO1xyXG5jb25zdCBERUZBVUxUX0JST1dTRVJfTkFNRSA9ICdkZWZhdWx0JztcclxuY29uc3QgTk9fU0NSRUVOU0hPVF9DT01NQU5EUyA9IFsnaW5pdCcsICdhc3NlcnRBbGVydCddO1xyXG5jb25zdCBBQ1RJT05fQ09NTUFORFMgPSBbJ29wZW4nLCd0YXAnLCdjbGljaycsJ3N3aXBlJywnc3VibWl0Jywnc2V0VmFsdWUnXTtcclxuY29uc3QgREVGQVVMVF9XQUlUX1RJTUVPVVQgPSA2MCAqIDEwMDA7ICAgICAgICAgICAgLy8gZGVmYXVsdCA2MHMgd2FpdCB0aW1lb3V0XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2JpbGVNb2R1bGUgZXh0ZW5kcyBXZWJEcml2ZXJNb2R1bGUge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcyk7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMgPSB7fTtcclxuICAgICAgICB0aGlzLmxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5ldHdvcmtSZXF1ZXN0cyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzID0ge307XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0ID0gJ05BVElWRV9BUFAnO1xyXG4gICAgICAgIHRoaXMuX2xvYWRIZWxwZXJGdW5jdGlvbnMoKTtcclxuICAgICAgICAvLyBzdXBwb3J0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKHNvbWUgbW9kdWxlIGNvbW1hbmRzIG1pZ2h0IHJlZmVyIHRvIHRoaXMuT3hFcnJvciBhbmQgdGhpcy5lcnJIZWxwZXIpXHJcbiAgICAgICAgdGhpcy5PeEVycm9yID0gT3hFcnJvcjtcclxuICAgICAgICB0aGlzLmVyckhlbHBlciA9IGVyckhlbHBlcjtcclxuICAgICAgICAvLyBob2xkcyBlbGVtZW50IG9wZXJhdGlvbiB0aW1lb3V0IHZhbHVlXHJcbiAgICAgICAgdGhpcy53YWl0Rm9yVGltZW91dCA9IERFRkFVTFRfV0FJVF9USU1FT1VUO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBNT0RVTEVfTkFNRTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBmdW5jdGlvbiBnZXREcml2ZXJcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIHVuZGVybHlpbmcgV0RJTyBkcml2ZXIuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFdESU8gZHJpdmVyLlxyXG4gICAgICovXHJcbiAgICBnZXREcml2ZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldERyaXZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGZ1bmN0aW9uIGdldENhcGFiaWxpdGllc1xyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBjdXJyZW50bHkgZGVmaW5lZCBjYXBhYmlsaXRpZXMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEN1cnJlbnQgY2FwYWJpbGl0aWVzIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgZ2V0Q2FwYWJpbGl0aWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHMgfHwgc3VwZXIuZ2V0Q2FwYWJpbGl0aWVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgQXBwaXVtIHNlc3Npb24uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGNhcHMgLSBEZXNpcmVkIGNhcGFiaWxpdGllcy4gSWYgbm90IHNwZWNpZmllZCBjYXBhYmlsaXRpZXMgd2lsbCBiZSB0YWtlbiBmcm9tIHN1aXRlIGRlZmluaXRpb24uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGFwcGl1bVVybCAtIFJlbW90ZSBBcHBpdW0gc2VydmVyIFVSTCAoZGVmYXVsdDogaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1YikuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGluaXQoY2FwcywgYXBwaXVtVXJsKSB7XHJcbiAgICAgICAgLy8gaWYgcmVvcGVuU2Vzc2lvbiBpcyB0cnVlIC0gcmVpbml0aWxpemUgdGhlIG1vZHVsZVxyXG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZW9wZW5TZXNzaW9uICE9PSBmYWxzZSkgeyAvLyB0cnVlIG9yIGZhbHNlIGlmIGV4cGxpc2l0bHkgc2V0LiB0cnVlIG9uIG51bGwgb3IgdW5kZWZpbmVkLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3Jlb3BlblNlc3Npb24gaXMgdHJ1ZSAtIHJlbG9hZGluZyB0aGUgc2Vzc2lvbi4uLicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIucmVsb2FkU2Vzc2lvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnbW9iLmluaXQgd2FzIGNhbGxlZCBmb3IgYWxyZWFkeSBpbml0aWFsaXplZCBtb2R1bGUuIHJlb3BlblNlc3Npb24gaXMgZmFsc2Ugc28gdGhlIGNhbGwgaXMgaWdub3JlZC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVmYWN0b3JlZFxyXG4gICAgICAgIGlmICh0aGlzLmN0eC5jYXBzICYmIHRoaXMuY3R4LmNhcHNbJ3BlcmZlY3RvTW9iaWxlOm9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICBpZiAoY2Fwcykge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMucGxhdGZvcm1OYW1lO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMucGxhdGZvcm1WZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMuZGV2aWNlTmFtZTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBjYXBzLmJyb3dzZXJOYW1lO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMuYXV0b21hdGlvbk5hbWU7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgY2Fwcy51ZGlkO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjYXBzLmFwcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcHMuZW5hYmxlQXBwaXVtQmVoYXZpb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXBzLnVzZUFwcGl1bUZvcldlYiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2Fwcy5lbmFibGVBcHBpdW1CZWhhdmlvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5jYXBzLnVzZUFwcGl1bUZvcldlYiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5jYXBzLmVuYWJsZUFwcGl1bUJlaGF2aW9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFhcHBpdW1VcmwpIHtcclxuICAgICAgICAgICAgYXBwaXVtVXJsID0gdGhpcy5vcHRpb25zLmFwcGl1bVVybCB8fCBERUZBVUxUX0FQUElVTV9VUkw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBtZXJnZSBjYXBhYmlsaXRpZXMgZnJvbSBjb250ZXh0IGFuZCBmcm9tIGluaXQgZnVuY3Rpb24gYXJndW1lbnQsIGdpdmUgcHJlZmVyZW5jZSB0byBjb250ZXh0LXBhc3NlZCBjYXBhYmlsaXRpZXNcclxuICAgICAgICB0aGlzLmNhcHMgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5jdHguY2Fwcykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHMgPSB7IC4uLnRoaXMuY3R4LmNhcHMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNhcHMpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXBzID0geyAuLi50aGlzLmNhcHMsIC4uLmNhcHMgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBjbGVhciB0aGUgZXhpc3RpbmcgZGV2aWNlIGxvZ3MsIGlmIGNvbGxlY3REZXZpY2VMb2dzIG9wdGlvbiBpcyB0cnVlICh3ZSB3YW50IHRvIGluY2x1ZGUgbG9ncyBvbmx5IHJlbGV2YW50IGZvciB0aGlzIHNlc3Npb24pXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsZWN0RGV2aWNlTG9ncykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHNbJ2FwcGl1bTpjbGVhckRldmljZUxvZ3NPblN0YXJ0J10gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgYm90aCBicm93c2VyTmFtZSBhbmQgYXBwUGFja2FnZSB3ZXJlIHNwZWNpZmllZCAtIHJlbW92ZSBicm93c2VyTmFtZVxyXG4gICAgICAgIGlmICh0aGlzLmNhcHMuYnJvd3Nlck5hbWUgJiYgKHRoaXMuY2Fwcy5hcHBQYWNrYWdlIHx8IHRoaXMuY2Fwcy5hcHApKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNhcHMuYnJvd3Nlck5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIG5vIGFwcFBhY2thZ2Ugbm9yIGFwcCBjYXBhYmlsaXR5LCBub3QgYnJvd3Nlck5hbWUgYXJlIGRlZmluZWQsIGFzc3VtZSB3ZSB3YW50IHRvIHJ1biB0aGUgdGVzdCBhZ2FpbnN0IGRlZmF1bHQgYnJvd3NlclxyXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmNhcHMuYnJvd3Nlck5hbWUgJiYgIXRoaXMuY2Fwcy5hcHBQYWNrYWdlICYmICF0aGlzLmNhcHMuYXBwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2Fwcy5icm93c2VyTmFtZSA9IERFRkFVTFRfQlJPV1NFUl9OQU1FO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB3ZWJkcml2ZXIgZXhwZWN0cyBsb3dlciBjYXNlIG5hbWVzXHJcbiAgICAgICAgaWYgKHRoaXMuY2Fwcy5icm93c2VyTmFtZSAmJiB0eXBlb2YgdGhpcy5jYXBzLmJyb3dzZXJOYW1lID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHMuYnJvd3Nlck5hbWUgPSB0aGlzLmNhcHMuYnJvd3Nlck5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYWRqdXN0IGNhcGFiaWxpdGllcyB0byBlbmFibGUgY29sbGVjdGluZyBicm93c2VyIGFuZCBwZXJmb3JtYW5jZSBzdGF0cyBpbiBDaHJvbWUgXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZWNvcmRIQVIgJiYgdGhpcy5jYXBzLmJyb3dzZXJOYW1lID09PSAnY2hyb21lJykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHNbJ2dvb2c6bG9nZ2luZ1ByZWZzJ10gPSB7ICAgICAvLyBmb3IgQ2hyb21lRHJpdmVyID49IDc1XHJcbiAgICAgICAgICAgICAgICBicm93c2VyOiAnQUxMJyxcclxuICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlOiAnQUxMJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcG9wdWxhdGUgV0RJTyBvcHRpb25zXHJcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLnBhcnNlKGFwcGl1bVVybCk7XHJcbiAgICAgICAgY29uc3QgcHJvdG9jb2wgPSB1cmwucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJyk7XHJcbiAgICAgICAgY29uc3QgaG9zdCA9IHVybC5ob3N0bmFtZTtcclxuICAgICAgICBjb25zdCBwb3J0ID0gcGFyc2VJbnQodXJsLnBvcnQgfHwgKHByb3RvY29sID09PSAnaHR0cHMnID8gNDQzIDogODApKTtcclxuICAgICAgICBjb25zdCBwYXRoID0gdXJsLnBhdGhuYW1lO1xyXG5cclxuICAgICAgICAvLyBhdXRoIGlzIG5lZWRlZCBtb3N0bHkgZm9yIGNsb3VkIHByb3ZpZGVycyBzdWNoIGFzIExhbWJkYVRlc3RcclxuICAgICAgICBpZiAodXJsLmF1dGgpIHtcclxuICAgICAgICAgICAgY29uc3QgYXV0aCA9IHVybC5hdXRoLnNwbGl0KCc6Jyk7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy53ZGlvT3B0cyA9IHtcclxuICAgICAgICAgICAgICAgIHVzZXI6IGF1dGhbMF0sXHJcbiAgICAgICAgICAgICAgICBrZXk6IGF1dGhbMV1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciB3ZGlvT3B0cyA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLndkaW9PcHRzIHx8IHt9LFxyXG4gICAgICAgICAgICBwcm90b2NvbDogcHJvdG9jb2wsXHJcbiAgICAgICAgICAgIGhvc3RuYW1lOiBob3N0LFxyXG4gICAgICAgICAgICBwb3J0OiBwb3J0LFxyXG4gICAgICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgICAgICBjYXBhYmlsaXRpZXM6IHRoaXMuY2FwcyxcclxuICAgICAgICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxyXG4gICAgICAgICAgICBydW5uZXI6ICdyZXBsJyxcclxuICAgICAgICAgICAgd2FpdGZvclRpbWVvdXQ6IDUwMDAsIC8vIGluY3JlYXNlIHRoZSBkZWZhdWx0IDMwMDBcclxuICAgICAgICAgICAgY29ubmVjdGlvblJldHJ5VGltZW91dDogMzEwKjEwMDAsXHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb25SZXRyeUNvdW50OiAxXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgbGV0IHByb3ZpZGVyID0gbW9kVXRpbHMuZGV0ZXJtaW5lUHJvdmlkZXIod2Rpb09wdHMpO1xyXG4gICAgICAgIGxldCBuYW1lID0gJ25hbWUnO1xyXG5cclxuICAgICAgICBpZiAocHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLlBFUkZFQ1RPKSB7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLmNhcGFiaWxpdGllcy5tYXhJbnN0YW5jZXMgPSAxO1xyXG4gICAgICAgICAgICB3ZGlvT3B0cy5wYXRoID0gJy9uZXhwZXJpZW5jZS9wZXJmZWN0b21vYmlsZS93ZC9odWInO1xyXG4gICAgICAgICAgICB3ZGlvT3B0cy5wb3J0ID0gODA7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLnByb3RvY29sID0gJ2h0dHAnO1xyXG4gICAgICAgICAgICB3ZGlvT3B0cy5vcGVuRGV2aWNlVGltZW91dCA9IDE1O1xyXG5cclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllcy5tYW51ZmFjdHVyZXI7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXMubW9kZWw7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWU7XHJcblxyXG4gICAgICAgICAgICBuYW1lID0gd2Rpb09wdHMuY2FwYWJpbGl0aWVzWydwZXJmZWN0b01vYmlsZTpvcHRpb25zJ11bJ25hbWUnXTtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdkaW9PcHRzLmNhcGFiaWxpdGllc1snYnN0YWNrOm9wdGlvbnMnXSAmJiB3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2JzdGFjazpvcHRpb25zJ11bJ25hbWUnXSkge1xyXG4gICAgICAgICAgICBuYW1lID0gd2Rpb09wdHMuY2FwYWJpbGl0aWVzWydic3RhY2s6b3B0aW9ucyddWyduYW1lJ107XHJcbiAgICAgICAgICAgIGRlbGV0ZSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2JzdGFjazpvcHRpb25zJ107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLndkaW9PcHRzID0gd2Rpb09wdHM7XHJcblxyXG4gICAgICAgIC8vIGluaXQgd2ViZHJpdmVyXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIgPSBhd2FpdCB3ZGlvLnJlbW90ZSh3ZGlvT3B0cyk7XHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyLnByb3ZpZGVyID0gcHJvdmlkZXI7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQgPSB0aGlzLm9wdGlvbnMuc2VsZW5pdW1Ccm93c2VyVGltZW91dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZWxlbml1bVRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLnNlbGVuaXVtVGltZW91dCA9IHRoaXMub3B0aW9ucy5zZWxlbml1bVRpbWVvdXQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChwcm92aWRlciA9PT0gbW9kVXRpbHMucHJvdmlkZXIuUEVSRkVDVE8pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBlcmZlY3RvRXhlY3V0aW9uQ29udGV4dCA9IGF3YWl0IG5ldyBwZXJmZWN0b1JlcG9ydGluZy5QZXJmZWN0by5QZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHdlYmRyaXZlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlU2NyaXB0OiBhc3luYyAoY29tbWFuZCwgcGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kcml2ZXIuZXhlY3V0ZShjb21tYW5kLCBwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydGluZ0NsaWVudCA9IG5ldyBwZXJmZWN0b1JlcG9ydGluZy5QZXJmZWN0by5QZXJmZWN0b1JlcG9ydGluZ0NsaWVudChwZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXBvcnRpbmdDbGllbnQudGVzdFN0YXJ0KG5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBlcnJIZWxwZXIuZ2V0QXBwaXVtSW5pdEVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0ID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0Q29udGV4dCgpO1xyXG5cclxuICAgICAgICAvLyBpZiB3ZSBhcmUgcnVubmluZyBvbiBBbmRyb2lkIDcrIGVtdWxhdG9yLCBhbmQgdGh1cy9vciB1c2luZyBhIFdlYlZpZXcgQnJvd3NlciBUZXN0ZXIgLVxyXG4gICAgICAgIC8vIHBlcmZvcm0gYW4gYWN0dWFsIGFwcENvbnRleHQgc3dpdGNoIHRvIFdFQlxyXG4gICAgICAgIC8vIHNvIEFwcGl1bSB3aWxsIGRlbGVnYXRlIGNvbW1hbmRzIHRvIENocm9tZSBEcml2ZXIgaW5zdGVhZCBvZiBBcHBpdW0gRHJpdmVyXHJcbiAgICAgICAgaWYgKHRoaXMuY2Fwcy5icm93c2VyTmFtZSA9PT0gICdjaHJvbWl1bS13ZWJ2aWV3Jykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFdlYlZpZXdDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLkJST1dTRVJTVEFDSykge1xyXG4gICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgLy8gZmFpbHMgb24gYnJvd3NlcnN0YWNrXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc2V0VGltZW91dCh7ICdpbXBsaWNpdCc6IHRoaXMud2FpdEZvclRpbWVvdXQgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1cGVyLmluaXQodGhpcy5kcml2ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGZ1bmN0aW9uIGRpc3Bvc2VcclxuICAgICAqIEBzdW1tYXJ5IEVuZHMgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gc3RhdHVzIC0gVGVzdCBzdGF0dXMsIGVpdGhlciBgcGFzc2VkYCBvciBgZmFpbGVkYC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZGlzcG9zZShzdGF0dXMpIHtcclxuICAgICAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICAgICAgICBzdGF0dXMgPSAncGFzc2VkJztcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJzLnN0ZXBzICYmIEFycmF5LmlzQXJyYXkodGhpcy5ycy5zdGVwcykgJiYgdGhpcy5ycy5zdGVwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWlsZWRGaW5kZWQgPSB0aGlzLnJzLnN0ZXBzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSAnZmFpbGVkJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmFpbGVkRmluZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyaXZlciAmJiB0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgc3RhdHVzID0gc3RhdHVzLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kcml2ZXIucHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLlBFUkZFQ1RPKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlcG9ydGluZ0NsaWVudC50ZXN0U3RvcCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPT09ICdQQVNTRUQnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmZWN0b1JlcG9ydGluZy5Db25zdGFudHMucmVzdWx0cy5wYXNzZWQgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZlY3RvUmVwb3J0aW5nLkNvbnN0YW50cy5yZXN1bHRzLmZhaWxlZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcml2ZXIucHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLkJST1dTRVJTVEFDSykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2VuZFJlc3VsdFN0YXR1c1RvQnJvd3NlcnN0YWNrKHN0YXR1cyk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICghWydDQU5DRUxFRCcsICdGQUlMRUQnXS5pbmNsdWRlcyhzdGF0dXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZW5pdW1TZXNzaW9uVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlU2Vzc2lvbiB3aWxsIHRha2UgNSBtaW4gdG8gY2FsbFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLmRlbGV0ZVNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0Vycm9yIGRpc3Bvc2luZyBkcml2ZXI6ICcgKyBlKTsgICAgLy8gaWdub3JlIGFueSBlcnJvcnMgYXQgZGlzcG9zYWwgc3RhZ2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRyaXZlciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMubGFzdE5hdmlnYXRpb25TdGFydFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICBzdXBlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IE9wZW5zIG5ldyB0cmFuc2FjdGlvbi5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gd2lsbCBwZXJzaXN0IHRpbGwgYSBuZXcgb25lIGlzIG9wZW5lZC4gVHJhbnNhY3Rpb24gbmFtZXMgbXVzdCBiZVxyXG4gICAgICogICAgICAgICAgICAgIHVuaXF1ZS5cclxuICAgICAqIEBmdW5jdGlvbiB0cmFuc2FjdGlvblxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgdHJhbnNhY3Rpb24gbmFtZS5cclxuICAgICAqIEBmb3IgYW5kcm9pZCwgaW9zLCBoeWJyaWQsIHdlYlxyXG4gICAgICovXHJcbiAgICB0cmFuc2FjdGlvbihuYW1lKSB7XHJcbiAgICAgICAgZ2xvYmFsLl9sYXN0VHJhbnNhY3Rpb25OYW1lID0gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogUHJpdmF0ZVxyXG4gICAgICovXHJcblxyXG4gICAgX2lzQWN0aW9uKG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gQUNUSU9OX0NPTU1BTkRTLmluY2x1ZGVzKG5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIF90YWtlU2NyZWVuc2hvdFNpbGVudChuYW1lKSB7XHJcbiAgICAgICAgaWYgKCFOT19TQ1JFRU5TSE9UX0NPTU1BTkRTLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgIGxldCBlcnJvcjtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyaXZlciAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLnRha2VTY3JlZW5zaG90XHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmV0dmFsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2FpdFVudGlsUmV0VmFsID0gdGhpcy5kcml2ZXIud2FpdFVudGlsKGFzeW5jKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWFnZXMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHB1c2hJbWFnZVRvSW1hZ2VzID0gYXN5bmMoZmV0Y2hUaXRsZSA9IHRydWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlID0gYXdhaXQgdGhpcy5kcml2ZXIudGFrZVNjcmVlbnNob3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaFRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBhd2FpdCB0aGlzLmRyaXZlci5nZXRUaXRsZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0VG9JbWFnZSA9IHJlcXVpcmUoJ3RleHQtdG8taW1hZ2UnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlSW1hZ2UgPSBhd2FpdCB0ZXh0VG9JbWFnZS5nZW5lcmF0ZSh0aXRsZSwgeyBkZWJ1ZzogZmFsc2UsIGZvbnRGYW1pbHk6ICdBcmlhbCcgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZUltYWdlICYmIHR5cGVvZiB0aXRsZUltYWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVJbWFnZSA9IHRpdGxlSW1hZ2UucmVwbGFjZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcsICcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKHRpdGxlSW1hZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKGltYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzV2ViVmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLmlzV2ViVmlld0NvbnRleHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2ViVmlld0NvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbGxlY3QgYWxsIChzY3JlZW5zaG90IGFuZCB0aXRsZSkgaW1hZ2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVzID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0V2luZG93SGFuZGxlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGhhbmRsZXMpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhhbmRsZSBvZiBoYW5kbGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnN3aXRjaFRvV2luZG93KGhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHB1c2hJbWFnZVRvSW1hZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHVzaEltYWdlVG9JbWFnZXMoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSBhbGwgaW1hZ2VzIGludG8gb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEltYWdlID0gYXdhaXQgbWVyZ2VJbWFnZXMoaW1hZ2VzLCB7IGRpcmVjdGlvbjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lcmdlZEltYWdlICYmIHR5cGVvZiBtZXJnZWRJbWFnZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IG1lcmdlZEltYWdlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJywgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHRpbWVvdXQ6IDMwKjEwMDAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhaXRVbnRpbFJldFZhbCAmJiB3YWl0VW50aWxSZXRWYWwudGhlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRVbnRpbFJldFZhbC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IGdldCBzY3JlZW5zaG90JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBnZXQgc2NyZWVuc2hvdCcsIGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBnZXQgc2NyZWVuc2hvdCBpbm5lciBlcnJvcicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIF9nZXRMb2dzKG5hbWUpIHtcclxuICAgIC8vICAgICBpZiAoIU5PX0xPR1NfQ09NTUFORFMuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9ncygpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICBfYWRqdXN0QXBwaXVtTG9nKGxvZywgc3JjKSB7XHJcbiAgICAgICAgaWYgKCFsb2cgfHwgdHlwZW9mIGxvZyAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRPRE86IGNvbnZlcnQgbG9nLnRpbWVzdGFtcCBmcm9tIHRoZSBkZXZpY2UgdGltZSB6b25lIHRvIHRoZSBsb2NhbCBvbmUgKHNvIHdlIGNhbiBsYXRlciBjb3JyZWxhdGUgYmV0d2VlbiBzdGVwcyBhbmQgbG9ncykgICAgICAgIFxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpbWU6IGxvZy50aW1lc3RhbXAsXHJcbiAgICAgICAgICAgIG1zZzogbG9nLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGxldmVsOiBsb2cubGV2ZWwsXHJcbiAgICAgICAgICAgIHNyYzogc3JjXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBfaXRlcmF0aW9uU3RhcnQoKSB7XHJcbiAgICAgICAgLy8gY2xlYXIgdHJhbnNhY3Rpb24gbmFtZSBzYXZlZCBpbiBwcmV2aW91cyBpdGVyYXRpb24gaWYgYW55XHJcbiAgICAgICAgZ2xvYmFsLl9sYXN0VHJhbnNhY3Rpb25OYW1lID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfaXRlcmF0aW9uRW5kKGVycm9yKSB7XHJcbiAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLnR5cGUgPT09IGVycm9ySGVscGVyLmVycm9yQ29kZS5TRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlbml1bVNlc3Npb25UaW1lb3V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZW5pdW1TZXNzaW9uVGltZW91dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZ25vcmUgdGhlIHJlc3QgaWYgbW9iIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWRcclxuICAgICAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbGxlY3QgYWxsIHRoZSBkZXZpY2UgbG9ncyBmb3IgdGhpcyBzZXNzaW9uXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsZWN0RGV2aWNlTG9ncykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9ncyA9IGF3YWl0IHRoaXMuZ2V0RGV2aWNlTG9ncygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvZ3MgJiYgQXJyYXkuaXNBcnJheShsb2dzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGxvZyBvZiBsb2dzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnMubG9ncy5wdXNoKHRoaXMuX2FkanVzdEFwcGl1bUxvZyhsb2csICdkZXZpY2UnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IHJldHJpZXZlIGRldmljZSBsb2dzLicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjb2xsZWN0IGFsbCB0aGUgYnJvd3NlciBsb2dzIGZvciB0aGlzIHNlc3Npb25cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxlY3RCcm93c2VyTG9ncykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9ncyA9IGF3YWl0IHRoaXMuZ2V0QnJvd3NlckxvZ3MoKTtcclxuICAgICAgICAgICAgICAgIGlmIChsb2dzICYmIEFycmF5LmlzQXJyYXkobG9ncykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBsb2cgb2YgbG9ncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJzLmxvZ3MucHVzaCh0aGlzLl9hZGp1c3RBcHBpdW1Mb2cobG9nLCAnYnJvd3NlcicpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnNcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdDYW5ub3QgcmV0cmlldmUgYnJvd3NlciBsb2dzLicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjb2xsZWN0IGFsbCBBcHBpdW0gbG9ncyBmb3IgdGhpcyBzZXNzaW9uXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsZWN0QXBwaXVtTG9ncykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9ncyA9IHRoaXMuZ2V0QXBwaXVtTG9ncygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvZ3MgJiYgQXJyYXkuaXNBcnJheShsb2dzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxvZ0VudHJ5IG9mIGxvZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ycy5sb2dzLnB1c2godGhpcy5fYWRqdXN0QXBwaXVtTG9nKGxvZ0VudHJ5LCAnYXBwaXVtJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCByZXRyaWV2ZSBBcHBpdW0gbG9ncy4nLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcikge1xyXG4gICAgICAgIGlmICghbG9jYXRvcikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgJ0ludmFsaWQgYXJndW1lbnQgLSBsb2NhdG9yIG5vdCBzcGVjaWZpZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhdG9yICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2F0b3IuaW5kZXhPZignLycpID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yOyAvLyBsZWF2ZSB4cGF0aCBsb2NhdG9yIGFzIGlzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBsYXRmb3JtID0gdGhpcy5jYXBzICYmIHRoaXMuY2Fwcy5wbGF0Zm9ybU5hbWUgPyB0aGlzLmNhcHMucGxhdGZvcm1OYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBDb250ZXh0ID09PSAnTkFUSVZFX0FQUCcgJiYgcGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xyXG4gICAgICAgICAgICBpZiAobG9jYXRvci5pbmRleE9mKCdpZD0nKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gcHJlcGVuZCBwYWNrYWdlIG5hbWUgaWYgaXQncyBub3Qgc3BlY2lmaWVkXHJcbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBnZXRDdXJyZW50UGFja2FnZSgpIHNlZW1zIHRvIGNyYXNoIHBvc3NpYmx5IGR1ZSB0byBhIHdkaW8gYnVnLiBcclxuICAgICAgICAgICAgICAgIC8vICAgICAgIHNvIHdlIGdldCBwYWNrYWdlIG5hbWUgZnJvbSBjYXBzIGluc3RlYWQuXHJcbiAgICAgICAgICAgICAgICBsb2NhdG9yID0gbG9jYXRvci5zdWJzdHIoJ2lkPScubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJzppZC8nKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhdG9yID0gdGhpcy5jYXBzLmFwcFBhY2thZ2UgKyAnOmlkLycgKyBsb2NhdG9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkucmVzb3VyY2VJZChcIicgKyBsb2NhdG9yICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdjbGFzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLmNsYXNzTmFtZShcIicgKyBsb2NhdG9yLnN1YnN0cignY2xhc3M9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZigndGV4dD0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLnRleHQoXCInICsgbG9jYXRvci5zdWJzdHIoJ3RleHQ9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZigndGV4dC1jb250YWlucz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLnRleHRDb250YWlucyhcIicgKyBsb2NhdG9yLnN1YnN0cigndGV4dC1jb250YWlucz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdkZXNjPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuZGVzY3JpcHRpb24oXCInICsgbG9jYXRvci5zdWJzdHIoJ2Rlc2M9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignZGVzYy1jb250YWlucz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLmRlc2NyaXB0aW9uQ29udGFpbnMoXCInICsgbG9jYXRvci5zdWJzdHIoJ2Rlc2MtY29udGFpbnM9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignc2Nyb2xsYWJsZScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuc2Nyb2xsYWJsZSh0cnVlKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignficpID09PSAwKSAgICAvLyBhY2Nlc3NpYmlsaXR5IGlkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwQ29udGV4dCA9PT0gJ05BVElWRV9BUFAnICYmIHBsYXRmb3JtID09PSAnaW9zJykge1xyXG4gICAgICAgICAgICBpZiAobG9jYXRvci5pbmRleE9mKCd+JykgPT09IDApIC8vIGFjY2Vzc2liaWxpdHkgaWRcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb250ZXh0ICE9PSAnTkFUSVZFX0FQUCcpIHsgICAgICAgICAgICAvLyBIeWJyaWQgb3IgV2ViIGFwcGxpY2F0aW9uXHJcbiAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcjJyArIGxvY2F0b3Iuc3Vic3RyKCdpZD0nLmxlbmd0aCk7ICAgICAgLy8gY29udmVydCAnaWQ9JyB0byAnIydcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCduYW1lPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbmFtZT0nICsgbG9jYXRvci5zdWJzdHIoJ25hbWU9Jy5sZW5ndGgpICsgJ10nO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbms9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJz0nICsgbG9jYXRvci5zdWJzdHIoJ2xpbms9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbmstY29udGFpbnM9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJyo9JyArIGxvY2F0b3Iuc3Vic3RyKCdsaW5rPScubGVuZ3RoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdjc3M9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRvci5zdWJzdHIoJ2Nzcz0nLmxlbmd0aCk7ICAgICAgICAgICAvLyBpbiBjYXNlIG9mIGNzcywganVzdCByZW1vdmUgY3NzPSBwcmVmaXhcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIF9sb2FkSGVscGVyRnVuY3Rpb25zKCkge1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRXZGlvTG9jYXRvciA9IHRoaXMuX2dldFdkaW9Mb2NhdG9yO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5tYXRjaFBhdHRlcm4gPSBtb2RVdGlscy5tYXRjaFBhdHRlcm47XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldEVsZW1lbnQgPSBtb2RVdGlscy5nZXRFbGVtZW50O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRFbGVtZW50cyA9IG1vZFV0aWxzLmdldEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRDaGlsZEVsZW1lbnQgPSBtb2RVdGlscy5nZXRDaGlsZEVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldENoaWxkRWxlbWVudHMgPSBtb2RVdGlscy5nZXRDaGlsZEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5zZXRUaW1lb3V0SW1wbGljaXQgPSBtb2RVdGlscy5zZXRUaW1lb3V0SW1wbGljaXQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQgPSBtb2RVdGlscy5yZXN0b3JlVGltZW91dEltcGxpY2l0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudCA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZztcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXIgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudE51bWJlcjtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmU7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50Qm9vbCA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0ID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRDb250ZXh0ID0gbW9kVXRpbHMuYXNzZXJ0Q29udGV4dDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuY29udGV4dExpc3QgPSBtb2RVdGlscy5jb250ZXh0TGlzdDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuZ2V0TG9nVHlwZXMgPSBtb2RVdGlscy5nZXRMb2dUeXBlcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVTZXNzaW9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyaXZlciAmJiB0aGlzLmRyaXZlci5kZWxldGVTZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5kZWxldGVTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdkZWxldGVTZXNzaW9uIGVycm9yJywgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9zZW5kUmVzdWx0U3RhdHVzVG9Ccm93c2Vyc3RhY2soc3RhdHVzKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA9PT0gJ1BBU1NFRCcgPyAncGFzc2VkJyA6ICdmYWlsZWQnXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBsZXQgb3B0aW9ucztcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLndkaW9PcHRzLmNhcGFiaWxpdGllcy5icm93c2VyTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IGBodHRwczovL2FwaS5icm93c2Vyc3RhY2suY29tL2F1dG9tYXRlL3Nlc3Npb25zLyR7dGhpcy5kcml2ZXIuc2Vzc2lvbklkfS5qc29uYCxcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBib2R5OiByZXF1ZXN0Qm9keSxcclxuICAgICAgICAgICAgICAgICAgICAnYXV0aCc6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXInOiB0aGlzLndkaW9PcHRzLnVzZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzJzogdGhpcy53ZGlvT3B0cy5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW5kSW1tZWRpYXRlbHknOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IGBodHRwczovL2FwaS1jbG91ZC5icm93c2Vyc3RhY2suY29tL2FwcC1hdXRvbWF0ZS9zZXNzaW9ucy8ke3RoaXMuZHJpdmVyLnNlc3Npb25JZH0uanNvbmAsXHJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUFVUJyxcclxuICAgICAgICAgICAgICAgICAgICBqc29uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgYm9keTogcmVxdWVzdEJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgJ2F1dGgnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogdGhpcy53ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJzdGFjay51c2VyJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzJzogdGhpcy53ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJzdGFjay5rZXknXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbmRJbW1lZGlhdGVseSc6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0KG9wdGlvbnMsIChlcnIsIHJlcywgYm9keSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignVW5hYmxlIHRvIHNlbmQgcmVzdWx0IHN0YXR1cyB0byBCcm93c2Vyc3RhY2s6ICcgKyBlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.22.1",
3
+ "version": "1.22.2",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {
@@ -55,15 +55,15 @@
55
55
  "@wdio/cli": "7.9.0",
56
56
  "@wdio/devtools-service": "7.9.0",
57
57
  "@wdio/sync": "7.9.0",
58
- "async": "3.2.0",
58
+ "async": "3.2.3",
59
59
  "chai": "4.3.4",
60
60
  "chrome-har": "0.11.12",
61
61
  "config": "3.3.6",
62
62
  "cross-spawn": "7.0.3",
63
63
  "csv-parse": "4.16.0",
64
64
  "cucumber": "6.0.5",
65
- "deasync": "0.1.21",
66
- "decache": "4.6.0",
65
+ "deasync": "0.1.26",
66
+ "decache": "4.6.1",
67
67
  "easyxml": "2.0.1",
68
68
  "ejs": "3.0.2",
69
69
  "esm": "3.2.25",
@@ -79,9 +79,9 @@
79
79
  "junit-report-builder": "3.0.0",
80
80
  "lodash": "4.17.21",
81
81
  "mailparser": "3.4.0",
82
- "minimist": "1.2.5",
82
+ "minimist": "1.2.6",
83
83
  "mockery": "2.1.0",
84
- "moment": "2.29.1",
84
+ "moment": "2.29.3",
85
85
  "node-addon-api": "3.0.2",
86
86
  "objects-to-csv": "1.3.6",
87
87
  "pdf2json": "1.2.5",
@@ -92,16 +92,16 @@
92
92
  "soap": "0.43.0",
93
93
  "source-map-support": "0.5.21",
94
94
  "stacktrace-parser": "0.1.10",
95
- "testdouble": "3.16.1",
95
+ "testdouble": "3.16.5",
96
96
  "testingbot-api": "1.0.7",
97
97
  "text-to-image": "2.4.4",
98
- "twilio": "3.74.0",
98
+ "twilio": "3.77.1",
99
99
  "webdriverio": "7.9.0",
100
100
  "when": "3.7.8",
101
101
  "xlsx": "0.17.4"
102
102
  },
103
103
  "optionalDependencies": {
104
- "odbc": "2.4.2"
104
+ "odbc": "2.4.4"
105
105
  },
106
106
  "scripts": {
107
107
  "build": "run-s clean compile",