appium-xcuitest-driver 4.4.2 → 4.4.3
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/README.md +0 -1
- package/build/index.js +1 -1
- package/build/lib/app-utils.js +1 -1
- package/build/lib/build-wda.js +1 -1
- package/build/lib/cert-utils.js +1 -1
- package/build/lib/commands/app-management.js +1 -1
- package/build/lib/commands/appearance.js +1 -1
- package/build/lib/commands/certificate.js +1 -1
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/cookies.js +1 -1
- package/build/lib/commands/deviceInfo.js +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/file-movement.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/gesture.js +1 -1
- package/build/lib/commands/iohid.js +1 -1
- package/build/lib/commands/location.js +1 -1
- package/build/lib/commands/lock.js +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/navigation.js +1 -1
- package/build/lib/commands/notifications.js +1 -1
- package/build/lib/commands/pcap.js +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/permissions.js +1 -1
- package/build/lib/commands/proxy-helper.js +1 -1
- package/build/lib/commands/record-audio.js +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/screenshots.js +1 -1
- package/build/lib/commands/source.js +1 -1
- package/build/lib/commands/web.js +1 -1
- package/build/lib/commands/xctest.js +1 -1
- package/build/lib/cookies.js +1 -1
- package/build/lib/css-converter.js +1 -1
- package/build/lib/desired-caps.js +1 -4
- package/build/lib/device-connections-factory.js +1 -1
- package/build/lib/device-log/ios-crash-log.js +1 -1
- package/build/lib/device-log/ios-device-log.js +1 -1
- package/build/lib/device-log/ios-performance-log.js +1 -1
- package/build/lib/device-log/ios-simulator-log.js +1 -1
- package/build/lib/device-log/rotating-log.js +1 -1
- package/build/lib/device-log/safari-console-log.js +1 -1
- package/build/lib/device-log/safari-network-log.js +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/ios-deploy.js +1 -1
- package/build/lib/ios-fs-helpers.js +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/py-ios-device-client.js +1 -1
- package/build/lib/real-device-management.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/simulator-management.js +1 -1
- package/build/lib/utils.js +1 -1
- package/lib/desired-caps.js +0 -3
- package/npm-shrinkwrap.json +38913 -1525
- package/package.json +1 -9
|
@@ -639,4 +639,4 @@ var _default = commands;
|
|
|
639
639
|
exports.default = _default;require('source-map-support').install();
|
|
640
640
|
|
|
641
641
|
|
|
642
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJuYW1lcyI6WyJOQVRJVkVfV0lOIiwiV0VCVklFV19XSU4iLCJXRUJWSUVXX0JBU0UiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q3VycmVudENvbnRleHQiLCJjdXJDb250ZXh0IiwiZ2V0Q29udGV4dHNBbmRWaWV3cyIsInVzZVVybCIsImxvZyIsImRlYnVnIiwid2Vidmlld3MiLCJsaXN0V2ViRnJhbWVzIiwiY3R4cyIsImlkIiwidmlldyIsImNvbnRleHRzIiwicHVzaCIsInRvU3RyaW5nIiwidXNlTmV3U2FmYXJpIiwicGFyc2VGbG9hdCIsImlvc1Nka1ZlcnNpb24iLCJvcHRzIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNSZWFsRGV2aWNlIiwic2FmYXJpIiwidHlwZUFuZE5hdlRvVXJsIiwiYWRkcmVzcyIsInNldEN1cnJlbnRVcmwiLCJjYXBzIiwic2FmYXJpSW5pdGlhbFVybCIsInBvcnQiLCJ0cmllcyIsIk1BWF9UUklFUyIsIm5hdmlnYXRlIiwib2xkSW1wV2FpdCIsImltcGxpY2l0V2FpdE1zIiwiZWwiLCJmaW5kRWxlbWVudCIsIm5hdGl2ZVRhcCIsIkVMRU1FTlQiLCJlcnIiLCJfIiwiaW5jbHVkZXMiLCJtZXNzYWdlIiwibmV3UGFnZUJ1dHRvbiIsInNldFZhbHVlSW1tZWRpYXRlIiwiZ2V0Q3VycmVudFVybCIsImVycm9yIiwibmF2VG9WaWV3V2l0aFRpdGxlIiwidW5kZWZpbmVkIiwiUmVnRXhwIiwicmVtb3RlIiwicGFnZVVubG9hZCIsIm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMiLCJtc2ciLCJ0aXRsZVJlZ2V4IiwidXJsUmVnRXhwIiwic3RhcnQiLCJEYXRlIiwibm93Iiwic3BpblRpbWUiLCJzcGluSGFuZGxlcyIsInJlcyIsImdldExhdGVzdFdlYnZpZXdDb250ZXh0Rm9yVGl0bGUiLCJFcnJvciIsInN0YWNrIiwibGF0ZXN0V2luZG93Iiwic2V0Q29udGV4dCIsImNhbmNlbFBhZ2VMb2FkIiwid2FybiIsIkIiLCJkZWxheSIsImVsZW1lbnQiLCJmaW5kVUlFbGVtZW50T3JFbGVtZW50cyIsInN0b3BSZW1vdGUiLCJjbG9zZVdpbmRvd0JlZm9yZURpc2Nvbm5lY3RpbmciLCJlcnJvckFuZFRocm93IiwiY2xvc2VXaW5kb3ciLCJkaXNjb25uZWN0IiwiY3VyV2ViRnJhbWVzIiwiY3VyV2ViQ29vcmRzIiwidXJsIiwiX2N1cnJlbnRVcmwiLCJjbG9zZUFsZXJ0QmVmb3JlVGVzdCIsIm5hdlRvSW5pdGlhbFdlYnZpZXciLCJyZWdFeHAiLCJjdXJyZW50VXJsIiwiZmlsdGVyIiwiY3R4IiwidGl0bGUiLCJ0ZXN0IiwiaXNXZWJDb250ZXh0IiwiaXNXZWJ2aWV3IiwiZ2V0TmV3UmVtb3RlRGVidWdnZXIiLCJzb2NrZXRQYXRoIiwiZGV2aWNlIiwiZ2V0V2ViSW5zcGVjdG9yU29ja2V0IiwiYnVuZGxlSWQiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwiYWRkaXRpb25hbFdlYnZpZXdCdW5kbGVJZHMiLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyIsInBhZ2VMb2FkTXMiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJ1dGlsIiwiaGFzVmFsdWUiLCJzYWZhcmlHYXJiYWdlQ29sbGVjdCIsInVkaWQiLCJsb2dBbGxDb21tdW5pY2F0aW9uIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbiIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzb2NrZXRDaHVua1NpemUiLCJzYWZhcmlTb2NrZXRDaHVua1NpemUiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsInNhZmFyaVdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwibmFtZSIsImNhbGxiYWNrIiwic2tpcFJlYWR5Q2hlY2siLCJhbHJlYWR5SW5Db250ZXh0IiwiZGVzaXJlZCIsImN1cnJlbnQiLCJpc05hdGl2ZUNvbnRleHQiLCJjb250ZXh0IiwicmVwbGFjZSIsImlzVW5kZWZpbmVkIiwiZ2V0Q29udGV4dHMiLCJjb250ZXh0SWQiLCJlcnJvcnMiLCJOb1N1Y2hDb250ZXh0RXJyb3IiLCJvbGRDb250ZXh0IiwiY3VyV2luZG93SGFuZGxlIiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJtYXAiLCJzcGxpdCIsInBhcnNlSW50Iiwic2VsZWN0aW5nTmV3UGFnZSIsInNlbGVjdFBhZ2UiLCJlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmciLCJsb2dzIiwicGVyZm9ybWFuY2UiLCJJT1NQZXJmb3JtYW5jZUxvZyIsInN0YXJ0Q2FwdHVyZSIsInNhZmFyaUNvbnNvbGUiLCJzdGFydENvbnNvbGUiLCJhZGRMb2dMaW5lIiwiYmluZCIsInNhZmFyaU5ldHdvcmsiLCJzdGFydE5ldHdvcmsiLCJjb25uZWN0VG9SZW1vdGVEZWJ1Z2dlciIsIm9uIiwiUmVtb3RlRGVidWdnZXIiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIm9uUGFnZUNoYW5nZSIsIkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCIsImlzRW1wdHkiLCJwbHVyYWxpemUiLCJsZW5ndGgiLCJqb2luIiwiY29ubmVjdCIsIndlYnZpZXdDb25uZWN0VGltZW91dCIsInBhZ2VBcnJheSIsImdldFdlYnZpZXdQYWdlcyIsInNlbGVjdEFwcCIsIndlYnZpZXdDb25uZWN0UmV0cmllcyIsImlnbm9yZUFib3V0QmxhbmtVcmwiLCJzZXRDb25uZWN0aW9uS2V5IiwiYWxlcnRFcnJvck1zZyIsIm1hcEZuIiwiZnVsbENvbnRleHRMaXN0IiwibW9iaWxlR2V0Q29udGV4dHMiLCJ3YWl0Rm9yV2Vidmlld01zIiwiaXNOdW1iZXIiLCJpc05hTiIsImN1ck9wdCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsInNldFdpbmRvdyIsIm5vb3AiLCJOb1N1Y2hXaW5kb3dFcnJvciIsImdldFdpbmRvd0hhbmRsZSIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJnZXRXaW5kb3dIYW5kbGVzIiwicGFnZUNoYW5nZU5vdGlmaWNhdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc0Nvbm5lY3RlZCIsIm5ld0lkcyIsIm5ld1BhZ2VzIiwia2V5SWQiLCJpc1VybElnbm9yZWQiLCJzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMiLCJpZ25vcmVkSG9zdHMiLCJiIiwidHJpbSIsImlnbm9yZWRIb3N0IiwiaG9zdG5hbWUiLCJVUkwiLCJpZ24iLCJwYWdlIiwiaXNLZXkiLCJpbmZvIiwiY3VyQXBwSWRLZXkiLCJjdXJQYWdlSWRLZXkiLCJuZXdQYWdlIiwibGFzdCIsIm5lZWRzUGFnZUxvYWQiLCJjb250ZXh0QXJyYXkiLCJpc0VxdWFsIiwiZmluZCIsInBhZ2VMb2FkIiwiY3VycmVudFBhZ2VJZCIsInAiLCJjYXRjaCIsIndpbmRvd0hhbmRsZUNhY2hlIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVtb3RlRGVidWdnZXIsIFJlbW90ZURlYnVnZ2VyIH0gZnJvbSAnYXBwaXVtLXJlbW90ZS1kZWJ1Z2dlcic7XG5pbXBvcnQgeyBlcnJvcnMsIGlzRXJyb3JUeXBlIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IElPU1BlcmZvcm1hbmNlTG9nIGZyb20gJy4uL2RldmljZS1sb2cvaW9zLXBlcmZvcm1hbmNlLWxvZyc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgTkFUSVZFX1dJTiA9ICdOQVRJVkVfQVBQJztcbmNvbnN0IFdFQlZJRVdfV0lOID0gJ1dFQlZJRVcnO1xuY29uc3QgV0VCVklFV19CQVNFID0gYCR7V0VCVklFV19XSU59X2A7XG5cbmNvbnN0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5cbmNvbW1hbmRzLmdldEN1cnJlbnRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudENvbnRleHQgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgaWYgKHRoaXMuY3VyQ29udGV4dCAmJiB0aGlzLmN1ckNvbnRleHQgIT09IE5BVElWRV9XSU4pIHtcbiAgICByZXR1cm4gYCR7V0VCVklFV19CQVNFfSR7dGhpcy5jdXJDb250ZXh0fWA7XG4gIH1cbiAgcmV0dXJuIE5BVElWRV9XSU47XG59O1xuXG5leHRlbnNpb25zLmdldENvbnRleHRzQW5kVmlld3MgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0c0FuZFZpZXdzICh1c2VVcmwgPSB0cnVlKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGNvbnRleHRzIGFuZCB2aWV3cycpO1xuICBsZXQgd2Vidmlld3MgPSBhd2FpdCB0aGlzLmxpc3RXZWJGcmFtZXModXNlVXJsKTtcblxuICBsZXQgY3R4cyA9IFt7aWQ6IE5BVElWRV9XSU4sIHZpZXc6IHt9fV07XG4gIHRoaXMuY29udGV4dHMgPSBbTkFUSVZFX1dJTl07XG4gIGZvciAobGV0IHZpZXcgb2Ygd2Vidmlld3MpIHtcbiAgICBjdHhzLnB1c2goe2lkOiBgJHtXRUJWSUVXX0JBU0V9JHt2aWV3LmlkfWAsIHZpZXd9KTtcbiAgICB0aGlzLmNvbnRleHRzLnB1c2godmlldy5pZC50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gY3R4cztcbn07XG5cbi8vIFJpZ2h0IG5vdyB3ZSBkb24ndCBuZWNlc3NhcmlseSB3YWl0IGZvciB3ZWJ2aWV3XG4vLyBhbmQgZnJhbWUgdG8gbG9hZCwgd2hpY2ggbGVhZHMgdG8gcmFjZSBjb25kaXRpb25zIGFuZCBmbGFraW5lc3MsXG4vLyBsZXQncyBzZWUgaWYgd2UgY2FuIHRyYW5zaXRpb24gdG8gc29tZXRoaW5nIGJldHRlclxuZXh0ZW5zaW9ucy51c2VOZXdTYWZhcmkgPSBmdW5jdGlvbiB1c2VOZXdTYWZhcmkgKCkge1xuICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLmlvc1Nka1ZlcnNpb24pID49IDguMSAmJlxuICAgIHBhcnNlRmxvYXQodGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbikgPj0gOC4xICYmXG4gICAgIXRoaXMuaXNSZWFsRGV2aWNlKCkgJiZcbiAgICB0aGlzLm9wdHMuc2FmYXJpO1xufTtcblxuZXh0ZW5zaW9ucy50eXBlQW5kTmF2VG9VcmwgPSBhc3luYyBmdW5jdGlvbiB0eXBlQW5kTmF2VG9VcmwgKCkge1xuICBsZXQgYWRkcmVzcyA9IHRoaXMub3B0cy5hZGRyZXNzID8gdGhpcy5vcHRzLmFkZHJlc3MgOiAnMTI3LjAuMC4xJztcbiAgdGhpcy5zZXRDdXJyZW50VXJsKHRoaXMuY2Fwcy5zYWZhcmlJbml0aWFsVXJsIHx8IGBodHRwOi8vJHthZGRyZXNzfToke3RoaXMub3B0cy5wb3J0fS93ZWxjb21lYCk7XG5cbiAgbGV0IHRyaWVzID0gMDtcbiAgY29uc3QgTUFYX1RSSUVTID0gMjtcbiAgbGV0IG5hdmlnYXRlID0gYXN5bmMgKCkgPT4ge1xuICAgIGxldCBvbGRJbXBXYWl0ID0gdGhpcy5pbXBsaWNpdFdhaXRNcztcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gNzAwMDtcblxuICAgIC8vIGZpbmQgdGhlIHVybCBiYXIsIGFuZCB0YXAgb24gaXQuIHJldHJ5IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB0cnlcbiAgICAvLyB0b28gc29vbiB3aGlsZSB0aGUgdmlldyBpcyBzdGlsbCBsb2FkaW5nXG4gICAgbGV0IGVsID0gYXdhaXQgcmV0cnlJbnRlcnZhbCgzLCAxMDAwLCBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmZpbmRFbGVtZW50KCdhY2Nlc3NpYmlsaXR5IGlkJywgJ1VSTCcpKTtcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gb2xkSW1wV2FpdDtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChlbC5FTEVNRU5UKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChfLmluY2x1ZGVzKGVyci5tZXNzYWdlLCAnY291bGQgbm90IGJlIHRhcHBlZCcpKSB7XG4gICAgICAgIGlmICh0cmllcysrID49IE1BWF9UUklFUykgdGhyb3cgZXJyOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICAgICAgLy8gZ2VuZXJhbGx5IHRoaXMgbWVhbnMgdGhhdCBTYWZhcmkgaXMgaW4gcGFnZSB2aWV3aW5nIG1vZGVcbiAgICAgICAgLy8gc28gdHJ5IHRvIG9wZW4gYSBuZXcgcGFnZSBhbmQgdGhlbiByZWRvIHRoZSBuYXZpZ2F0aW9uXG4gICAgICAgIGxldCBuZXdQYWdlQnV0dG9uID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgneHBhdGgnLCBcIi8vWENVSUVsZW1lbnRUeXBlQnV0dG9uW2NvbnRhaW5zKEBuYW1lLCdOZXcgcGFnZScpXVwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5uYXRpdmVUYXAobmV3UGFnZUJ1dHRvbi5FTEVNRU5UKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5hdmlnYXRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBsYXN0IGFkZHJlc3MgZWxlbWVudCBhbmQgc2V0IHRoZSB1cmxcbiAgICB0cnkge1xuICAgICAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUZXh0RmllbGQnKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VmFsdWVJbW1lZGlhdGUodGhpcy5nZXRDdXJyZW50VXJsKCksIGVsKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIHRoaXMgaXMgZmxha2V5IG9uIGNlcnRhaW4gc3lzdGVtcyBzbyB3ZSByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZXRoaW5nXG4gICAgICAvLyBpb3Mgc2ltczogc2FmYXJpIG9wZW5zIGJ1dCB0aGUgdGV4dCBmaWVsZCBjYW4ndCBiZSBmb3VuZFxuICAgICAgaWYgKHRyaWVzKysgPj0gTUFYX1RSSUVTKSB0aHJvdyBlcnI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICAgIHJldHVybiBhd2FpdCBuYXZpZ2F0ZSgpO1xuICAgIH1cblxuICAgIC8vIG1ha2UgaXQgaGFwcGVuXG4gICAgdHJ5IHtcbiAgICAgIGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgnYWNjZXNzaWJpbGl0eSBpZCcsICdHbycpO1xuICAgICAgYXdhaXQgdGhpcy5uYXRpdmVUYXAoZWwuRUxFTUVOVCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoXy5pbmNsdWRlcyhlcnIubWVzc2FnZSwgJ2NvdWxkIG5vdCBiZSB0YXBwZWQnKSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcignVW5hYmxlIHRvIHN1Ym1pdCBVUkwgYmVjYXVzZSBcXCdHb1xcJyBidXR0b24gY291bGQgbm90IGJlIHRhcHBlZC4gJyArXG4gICAgICAgICAgJ1BsZWFzZSBtYWtlIHN1cmUgeW91ciBrZXlib2FyZCBpcyB0b2dnbGVkIG9uLicpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSh1bmRlZmluZWQsIG5ldyBSZWdFeHAodGhpcy5nZXRDdXJyZW50VXJsKCksICdpJykpO1xuXG4gICAgLy8gd2FpdCBmb3IgcGFnZSB0byBmaW5pc2ggbG9hZGluZy5cbiAgICBhd2FpdCB0aGlzLnJlbW90ZS5wYWdlVW5sb2FkKCk7XG4gIH07XG4gIGF3YWl0IG5hdmlnYXRlKCk7XG59O1xuXG5leHRlbnNpb25zLm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMgPSBhc3luYyBmdW5jdGlvbiBuYXZUb1ZpZXdUaHJvdWdoRmF2b3JpdGVzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1dlIGFyZSBvbiBpT1M3KyBzaW11bGF0b3I6IGNsaWNraW5nIGFwcGxlIGJ1dHRvbiB0byBnZXQgaW50byBhIHdlYnZpZXcnKTtcbiAgbGV0IG9sZEltcFdhaXQgPSB0aGlzLmltcGxpY2l0V2FpdE1zO1xuICB0aGlzLmltcGxpY2l0V2FpdE1zID0gNzAwMDsgLy8gd2FpdCA3cyBmb3IgYXBwbGUgYnV0dG9uIHRvIGV4aXN0XG5cbiAgbGV0IGVsO1xuICB0cnkge1xuICAgIGVsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudCgneHBhdGgnLCAnLy9YQ1VJRWxlbWVudFR5cGVTY3JvbGxWaWV3WzFdL1hDVUlFbGVtZW50VHlwZUJ1dHRvblsxXScpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsZXQgbXNnID0gJ0NvdWxkIG5vdCBmaW5kIGJ1dHRvbiB0byBjbGljayB0byBnZXQgaW50byB3ZWJ2aWV3LiAnICtcbiAgICAgICAgICAgICAgJ1Byb2NlZWRpbmcgb24gdGhlIGFzc3VtcHRpb24gd2UgaGF2ZSBhIHdvcmtpbmcgb25lLic7XG4gICAgdGhpcy5sb2cuZXJyb3IobXNnKTtcbiAgICB0aGlzLmltcGxpY2l0V2FpdE1zID0gb2xkSW1wV2FpdDtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5uYXZUb1ZpZXdXaXRoVGl0bGUoLy4qL2kpO1xuICB9XG4gIHRoaXMuaW1wbGljaXRXYWl0TXMgPSBvbGRJbXBXYWl0O1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMubmF0aXZlVGFwKGVsLkVMRU1FTlQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsZXQgbXNnID0gJ0NvdWxkIG5vdCBjbGljayBidXR0b24gdG8gZ2V0IGludG8gd2Vidmlldy4gJyArXG4gICAgICAgICAgICAgICdQcm9jZWVkaW5nIG9uIHRoZSBhc3N1bXB0aW9uIHdlIGhhdmUgYSB3b3JraW5nIG9uZS4nO1xuICAgIHRoaXMubG9nLmVycm9yKG1zZyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5uYXZUb1ZpZXdXaXRoVGl0bGUoL2FwcGxlL2kpO1xufTtcblxuZXh0ZW5zaW9ucy5uYXZUb1ZpZXdXaXRoVGl0bGUgPSBhc3luYyBmdW5jdGlvbiBuYXZUb1ZpZXdXaXRoVGl0bGUgKHRpdGxlUmVnZXgsIHVybFJlZ0V4cCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnTmF2aWdhdGluZyB0byBtb3N0IHJlY2VudGx5IG9wZW5lZCB3ZWJ2aWV3Jyk7XG4gIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gIGxldCBzcGluVGltZSA9IDUwMDtcbiAgbGV0IHNwaW5IYW5kbGVzID0gYXN5bmMgKCkgPT4ge1xuICAgIGxldCByZXM7XG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IGF3YWl0IHRoaXMuZ2V0TGF0ZXN0V2Vidmlld0NvbnRleHRGb3JUaXRsZSh0aXRsZVJlZ2V4IHx8IHVybFJlZ0V4cCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb3VsZCBub3QgY29ubmVjdCB0byBhIHZhbGlkIGFwcCBhZnRlcicpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBDb3VsZCBub3QgbmF2aWdhdGUgdG8gd2VidmlldyEgRXJyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICBlcnJvci5zdGFjayArPSBgXFxuQ2F1c2VkIGJ5OiAke2Vyci5zdGFja31gO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdDb3VsZCBub3QgbmF2aWdhdGUgdG8gd2Vidmlldy4gUmV0cnlpbmcgaWYgcG9zc2libGUuJyk7XG4gICAgfVxuICAgIGlmIChyZXMpIHtcbiAgICAgIGxldCBsYXRlc3RXaW5kb3cgPSByZXM7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgUGlja2luZyB3ZWJ2aWV3ICcke2xhdGVzdFdpbmRvd30nYCk7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbnRleHQobGF0ZXN0V2luZG93KTtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLmNhbmNlbFBhZ2VMb2FkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gbm8gd2VidmlldyB3YXMgZm91bmRcbiAgICBpZiAoKERhdGUubm93KCkgLSBzdGFydCkgPj0gOTAwMDApIHtcbiAgICAgIC8vIHRvbyBzbG93LCBnZXQgb3V0XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBuYXZpZ2F0ZSB0byB3ZWJ2aWV3OyB0aGVyZSBhcmUgbm9uZSEnKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy53YXJuKCdDb3VsZCBub3QgZmluZCBhbnkgd2Vidmlld3MgeWV0LCByZWZyZXNoaW5nL3JldHJ5aW5nJyk7XG4gICAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkgfHwgIXRoaXMub3B0cy5zYWZhcmkpIHtcbiAgICAgIC8vIG9uIGEgcmVhbCBkZXZpY2UsIHdoZW4gbm90IHVzaW5nIFNhZmFyaSwgd2UganVzdCB3YW50IHRvIHRyeSBhZ2FpblxuICAgICAgYXdhaXQgQi5kZWxheShzcGluVGltZSk7XG4gICAgICByZXR1cm4gYXdhaXQgc3BpbkhhbmRsZXMoKTtcbiAgICB9XG5cbiAgICAvLyBmaW5kIHRoZSByZWxvYWQgYnV0dG9uIGFuZCB0YXAgaXQsIGlmIHBvc3NpYmxlXG4gICAgbGV0IGVsZW1lbnQ7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdGaW5kaW5nIGFuZCB0YXBwaW5nIHJlbG9hZCBidXR0b24nKTtcbiAgICAgIGVsZW1lbnQgPSBhd2FpdCB0aGlzLmZpbmRVSUVsZW1lbnRPckVsZW1lbnRzKCdhY2Nlc3NpYmlsaXR5IGlkJywgJ1JlbG9hZEJ1dHRvbicsICcnLCBmYWxzZSk7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChlbGVtZW50LkVMRU1FTlQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgZmluZGluZyBhbmQgdGFwcGluZyByZWxvYWQgYnV0dG9uOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgdGhpcy5sb2cud2FybignUmV0cnlpbmcuJyk7XG4gICAgICBhd2FpdCBCLmRlbGF5KHNwaW5UaW1lKTtcbiAgICB9XG5cbiAgICAvLyB0cnkgaXQgYWxsIGFnYWluXG4gICAgcmV0dXJuIGF3YWl0IHNwaW5IYW5kbGVzKCk7XG4gIH07XG4gIGF3YWl0IHNwaW5IYW5kbGVzKCk7XG59O1xuXG5oZWxwZXJzLnN0b3BSZW1vdGUgPSBhc3luYyBmdW5jdGlvbiBzdG9wUmVtb3RlIChjbG9zZVdpbmRvd0JlZm9yZURpc2Nvbm5lY3RpbmcgPSBmYWxzZSkge1xuICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnVHJpZWQgdG8gbGVhdmUgYSB3ZWIgZnJhbWUgYnV0IHdlcmUgbm90IGluIG9uZScpO1xuICB9XG5cbiAgaWYgKGNsb3NlV2luZG93QmVmb3JlRGlzY29ubmVjdGluZykge1xuICAgIGF3YWl0IHRoaXMuY2xvc2VXaW5kb3coKTtcbiAgfVxuICBhd2FpdCB0aGlzLnJlbW90ZS5kaXNjb25uZWN0KCk7XG4gIHRoaXMuY3VyQ29udGV4dCA9IG51bGw7XG4gIHRoaXMuY3VyV2ViRnJhbWVzID0gW107XG4gIHRoaXMuY3VyV2ViQ29vcmRzID0gbnVsbDtcbiAgdGhpcy5yZW1vdGUgPSBudWxsO1xufTtcblxuaGVscGVycy5zZXRDdXJyZW50VXJsID0gZnVuY3Rpb24gc2V0Q3VycmVudFVybCAodXJsKSB7XG4gIHRoaXMuX2N1cnJlbnRVcmwgPSB1cmw7XG59O1xuXG5oZWxwZXJzLmdldEN1cnJlbnRVcmwgPSBmdW5jdGlvbiBnZXRDdXJyZW50VXJsICgpIHtcbiAgcmV0dXJuIHRoaXMuX2N1cnJlbnRVcmw7XG59O1xuXG5leHRlbnNpb25zLmNsb3NlQWxlcnRCZWZvcmVUZXN0ID0gYXN5bmMgZnVuY3Rpb24gY2xvc2VBbGVydEJlZm9yZVRlc3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHRlbnNpb25zLm5hdlRvSW5pdGlhbFdlYnZpZXcgPSBhc3luYyBmdW5jdGlvbiBuYXZUb0luaXRpYWxXZWJ2aWV3ICgpIHtcbiAgaWYgKHRoaXMudXNlTmV3U2FmYXJpKCkpIHtcbiAgICBhd2FpdCB0aGlzLnR5cGVBbmROYXZUb1VybCgpO1xuICB9IGVsc2UgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpICYmIHRoaXMub3B0cy5zYWZhcmkpIHtcbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMoKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSgvLiovKTtcbiAgfVxufTtcblxuZXh0ZW5zaW9ucy5nZXRMYXRlc3RXZWJ2aWV3Q29udGV4dEZvclRpdGxlID0gYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0V2Vidmlld0NvbnRleHRGb3JUaXRsZSAocmVnRXhwKSB7XG4gIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLmdldEN1cnJlbnRVcmwoKTtcblxuICBjb25zdCBjb250ZXh0cyA9IF8uZmlsdGVyKGF3YWl0IHRoaXMuZ2V0Q29udGV4dHNBbmRWaWV3cygpLCAndmlldycpO1xuXG4gIGlmIChjdXJyZW50VXJsKSB7XG4gICAgLy8gZmlyc3QgdHJ5IHRvIG1hdGNoIGJ5IGN1cnJlbnQgdXJsXG4gICAgZm9yIChjb25zdCBjdHggb2YgY29udGV4dHMpIHtcbiAgICAgIGlmICgoY3R4LnZpZXcudXJsIHx8ICcnKSA9PT0gdGhpcy5nZXRDdXJyZW50VXJsKCkpIHtcbiAgICAgICAgcmV0dXJuIGN0eC5pZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3QsIHRyeSB0byBtYXRjaCBieSByZWd1bGFyIGV4cHJlc3Npb25cbiAgZm9yIChjb25zdCBjdHggb2YgY29udGV4dHMpIHtcbiAgICBpZiAoKGN0eC52aWV3LnRpdGxlICYmIHJlZ0V4cC50ZXN0KGN0eC52aWV3LnRpdGxlKSkgfHwgKGN0eC52aWV3LnVybCAmJiByZWdFeHAudGVzdChjdHgudmlldy51cmwpKSkge1xuICAgICAgcmV0dXJuIGN0eC5pZDtcbiAgICB9XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuaXNXZWJDb250ZXh0ID0gZnVuY3Rpb24gaXNXZWJDb250ZXh0ICgpIHtcbiAgcmV0dXJuICEhdGhpcy5jdXJDb250ZXh0ICYmIHRoaXMuY3VyQ29udGV4dCAhPT0gTkFUSVZFX1dJTjtcbn07XG5cbmV4dGVuc2lvbnMuaXNXZWJ2aWV3ID0gZnVuY3Rpb24gaXNXZWJ2aWV3ICgpIHtcbiAgcmV0dXJuIHRoaXMuaXNXZWJDb250ZXh0KCk7XG59O1xuXG5leHRlbnNpb25zLmdldE5ld1JlbW90ZURlYnVnZ2VyID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmV3UmVtb3RlRGVidWdnZXIgKCkge1xuICBsZXQgc29ja2V0UGF0aDtcbiAgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgc29ja2V0UGF0aCA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0V2ViSW5zcGVjdG9yU29ja2V0KCk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVJlbW90ZURlYnVnZ2VyKHtcbiAgICBidW5kbGVJZDogdGhpcy5vcHRzLmJ1bmRsZUlkLFxuICAgIGFkZGl0aW9uYWxCdW5kbGVJZHM6IHRoaXMub3B0cy5hZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcyxcbiAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSgpLFxuICAgIGluY2x1ZGVTYWZhcmk6IHRoaXMub3B0cy5pbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyxcbiAgICB1c2VOZXdTYWZhcmk6IHRoaXMudXNlTmV3U2FmYXJpKCksXG4gICAgcGFnZUxvYWRNczogdGhpcy5wYWdlTG9hZE1zLFxuICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbixcbiAgICBzb2NrZXRQYXRoLFxuICAgIHJlbW90ZURlYnVnUHJveHk6IHRoaXMub3B0cy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgIGdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlOiB1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5zYWZhcmlHYXJiYWdlQ29sbGVjdClcbiAgICAgID8gISF0aGlzLm9wdHMuc2FmYXJpR2FyYmFnZUNvbGxlY3RcbiAgICAgIDogZmFsc2UsXG4gICAgdWRpZDogdGhpcy5vcHRzLnVkaWQsXG4gICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5vcHRzLnNhZmFyaUxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMub3B0cy5zYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICBzb2NrZXRDaHVua1NpemU6IHRoaXMub3B0cy5zYWZhcmlTb2NrZXRDaHVua1NpemUsXG4gICAgd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg6IHRoaXMub3B0cy5zYWZhcmlXZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aFxuICB9LCB0aGlzLmlzUmVhbERldmljZSgpKTtcbn07XG5cbi8qKlxuICogU2V0IGNvbnRleHRcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiBjb250ZXh0IHRvIHNldC4gSXQgY291bGQgYmUgJ251bGwnIGFzIE5BVElWRV9XSU4uXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBjYWxsYmFjayBUaGUgY2FsbGJhY2suIChJdCBpcyBub3QgY2FsbGVkIGluIHRoaXMgbWV0aG9kKVxuICogQHBhcmFtIHtib29sZWFufSBza2lwUmVhZHlDaGVjayAtIFdoZXRoZXIgaXQgd2FpdHMgZm9yIHRoZSBuZXcgY29udGV4dCBpcyByZWFkeVxuICovXG5jb21tYW5kcy5zZXRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gc2V0Q29udGV4dCAobmFtZSwgY2FsbGJhY2ssIHNraXBSZWFkeUNoZWNrKSB7XG4gIGZ1bmN0aW9uIGFscmVhZHlJbkNvbnRleHQgKGRlc2lyZWQsIGN1cnJlbnQpIHtcbiAgICByZXR1cm4gKGRlc2lyZWQgPT09IGN1cnJlbnQgfHxcbiAgICAgIChkZXNpcmVkID09PSBudWxsICYmIGN1cnJlbnQgPT09IE5BVElWRV9XSU4pIHx8XG4gICAgICAoZGVzaXJlZCA9PT0gTkFUSVZFX1dJTiAmJiBjdXJyZW50ID09PSBudWxsKSk7XG4gIH1cbiAgZnVuY3Rpb24gaXNOYXRpdmVDb250ZXh0IChjb250ZXh0KSB7XG4gICAgcmV0dXJuIGNvbnRleHQgPT09IE5BVElWRV9XSU4gfHwgY29udGV4dCA9PT0gbnVsbDtcbiAgfVxuXG4gIC8vIGFsbG93IHRoZSBmdWxsIGNvbnRleHQgbGlzdCB0byBiZSBwYXNzZWQgaW5cbiAgaWYgKG5hbWUgJiYgbmFtZS5pZCkge1xuICAgIG5hbWUgPSBuYW1lLmlkO1xuICB9XG5cbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gc2V0IGNvbnRleHQgdG8gJyR7bmFtZSB8fCBOQVRJVkVfV0lOfScgZnJvbSAnJHt0aGlzLmN1ckNvbnRleHQgPyB0aGlzLmN1ckNvbnRleHQgOiBOQVRJVkVfV0lOfSdgKTtcblxuICBpZiAoYWxyZWFkeUluQ29udGV4dChuYW1lLCB0aGlzLmN1ckNvbnRleHQpIHx8IGFscmVhZHlJbkNvbnRleHQoXy5yZXBsYWNlKG5hbWUsIFdFQlZJRVdfQkFTRSwgJycpLCB0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgLy8gYWxyZWFkeSBpbiB0aGUgbmFtZWQgY29udGV4dCwgbm8gbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgIHRoaXMubG9nLmRlYnVnKGBBbHJlYWR5IGluICcke25hbWUgfHwgTkFUSVZFX1dJTn0nIGNvbnRleHQuIERvaW5nIG5vdGhpbmcuYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChpc05hdGl2ZUNvbnRleHQobmFtZSkpIHtcbiAgICAvLyBzd2l0Y2hpbmcgaW50byB0aGUgbmF0aXZlIGNvbnRleHRcbiAgICB0aGlzLmN1ckNvbnRleHQgPSBudWxsO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIHN3aXRjaGluZyBpbnRvIGEgd2VidmlldyBjb250ZXh0XG5cbiAgLy8gaWYgY29udGV4dHMgaGF2ZSBub3QgYWxyZWFkeSBiZWVuIHJldHJpZXZlZCwgZ2V0IHRoZW1cbiAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5jb250ZXh0cykpIHtcbiAgICBhd2FpdCB0aGlzLmdldENvbnRleHRzKCk7XG4gIH1cblxuICBsZXQgY29udGV4dElkID0gXy5yZXBsYWNlKG5hbWUsIFdFQlZJRVdfQkFTRSwgJycpO1xuICBpZiAoY29udGV4dElkID09PSAnJykge1xuICAgIC8vIGFsbG93IHVzZXIgdG8gcGFzcyBpbiBcIldFQlZJRVdcIiB3aXRob3V0IGFuIGluZGV4XG4gICAgLy8gdGhlIHNlY29uZCBjb250ZXh0IHdpbGwgYmUgdGhlIGZpcnN0IHdlYnZpZXcgYXNcbiAgICAvLyB0aGUgZmlyc3QgaXMgYWx3YXlzIE5BVElWRV9BUFBcbiAgICBjb250ZXh0SWQgPSB0aGlzLmNvbnRleHRzWzFdO1xuICB9XG4gIGlmICghXy5pbmNsdWRlcyh0aGlzLmNvbnRleHRzLCBjb250ZXh0SWQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hDb250ZXh0RXJyb3IoKTtcbiAgfVxuXG4gIGNvbnN0IG9sZENvbnRleHQgPSB0aGlzLmN1ckNvbnRleHQ7XG4gIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuY3VyV2luZG93SGFuZGxlID0gY29udGV4dElkO1xuXG4gIC8vIGBjb250ZXh0SWRgIHdpbGwgYmUgaW4gdGhlIGZvcm0gb2YgYGFwcElkLnBhZ2VJZGAgaW4gdGhpcyBjYXNlXG4gIGNvbnN0IFthcHBJZEtleSwgcGFnZUlkS2V5XSA9IF8ubWFwKGNvbnRleHRJZC5zcGxpdCgnLicpLCAoaWQpID0+IHBhcnNlSW50KGlkLCAxMCkpO1xuICB0cnkge1xuICAgIHRoaXMuc2VsZWN0aW5nTmV3UGFnZSA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5yZW1vdGUuc2VsZWN0UGFnZShhcHBJZEtleSwgcGFnZUlkS2V5LCBza2lwUmVhZHlDaGVjayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuY3VyV2luZG93SGFuZGxlID0gb2xkQ29udGV4dDtcbiAgICB0aHJvdyBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5zZWxlY3RpbmdOZXdQYWdlID0gZmFsc2U7XG4gIH1cblxuICAvLyBhdHRlbXB0IHRvIHN0YXJ0IHBlcmZvcm1hbmNlIGxvZ2dpbmcsIGlmIHJlcXVlc3RlZFxuICBpZiAodGhpcy5vcHRzLmVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZyAmJiB0aGlzLnJlbW90ZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBTdGFydGluZyBwZXJmb3JtYW5jZSBsb2cgb24gJyR7dGhpcy5jdXJDb250ZXh0fSdgKTtcbiAgICB0aGlzLmxvZ3MucGVyZm9ybWFuY2UgPSBuZXcgSU9TUGVyZm9ybWFuY2VMb2codGhpcy5yZW1vdGUpO1xuICAgIGF3YWl0IHRoaXMubG9ncy5wZXJmb3JtYW5jZS5zdGFydENhcHR1cmUoKTtcbiAgfVxuXG4gIC8vIHN0YXJ0IHNhZmFyaSBsb2dnaW5nIGlmIHRoZSBsb2dzIGhhbmRsZXJzIGFyZSBhY3RpdmVcbiAgaWYgKG5hbWUgJiYgbmFtZSAhPT0gTkFUSVZFX1dJTiAmJiB0aGlzLmxvZ3MpIHtcbiAgICBpZiAodGhpcy5sb2dzLnNhZmFyaUNvbnNvbGUpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLnN0YXJ0Q29uc29sZSh0aGlzLmxvZ3Muc2FmYXJpQ29uc29sZS5hZGRMb2dMaW5lLmJpbmQodGhpcy5sb2dzLnNhZmFyaUNvbnNvbGUpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9ncy5zYWZhcmlOZXR3b3JrKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlbW90ZS5zdGFydE5ldHdvcmsodGhpcy5sb2dzLnNhZmFyaU5ldHdvcmsuYWRkTG9nTGluZS5iaW5kKHRoaXMubG9ncy5zYWZhcmlOZXR3b3JrKSk7XG4gICAgfVxuICB9XG59O1xuXG5leHRlbnNpb25zLmNvbm5lY3RUb1JlbW90ZURlYnVnZ2VyID0gYXN5bmMgZnVuY3Rpb24gY29ubmVjdFRvUmVtb3RlRGVidWdnZXIgKCkge1xuICB0aGlzLnJlbW90ZSA9IGF3YWl0IHRoaXMuZ2V0TmV3UmVtb3RlRGVidWdnZXIoKTtcblxuICB0aGlzLnJlbW90ZS5vbihSZW1vdGVEZWJ1Z2dlci5FVkVOVF9QQUdFX0NIQU5HRSwgdGhpcy5vblBhZ2VDaGFuZ2UuYmluZCh0aGlzKSk7XG4gIHRoaXMucmVtb3RlLm9uKFJlbW90ZURlYnVnZ2VyLkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCwgKCkgPT4ge1xuICAgIGlmICghXy5pc0VtcHR5KHRoaXMuY3VyV2ViRnJhbWVzKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYENsZWFyaW5nICR7dXRpbC5wbHVyYWxpemUoJ2ZyYW1lJywgdGhpcy5jdXJXZWJGcmFtZXMubGVuZ3RoLCB0cnVlKX06ICR7dGhpcy5jdXJXZWJGcmFtZXMuam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgdGhpcy5jdXJXZWJGcmFtZXMgPSBbXTtcbiAgfSk7XG5cbiAgYXdhaXQgdGhpcy5yZW1vdGUuY29ubmVjdCh0aGlzLm9wdHMud2Vidmlld0Nvbm5lY3RUaW1lb3V0KTtcbn07XG5cbmV4dGVuc2lvbnMubGlzdFdlYkZyYW1lcyA9IGFzeW5jIGZ1bmN0aW9uIGxpc3RXZWJGcmFtZXMgKHVzZVVybCA9IHRydWUpIHtcbiAgdXNlVXJsID0gdXNlVXJsICYmICF0aGlzLmlzUmVhbERldmljZSgpICYmICEhdGhpcy5nZXRDdXJyZW50VXJsKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBTZWxlY3RpbmcgYnkgdXJsOiAke3VzZVVybH0gJHt1c2VVcmwgPyBgKGV4cGVjdGVkIHVybDogJyR7dGhpcy5nZXRDdXJyZW50VXJsKCl9JylgIDogJyd9YCk7XG5cbiAgY29uc3QgY3VycmVudFVybCA9IHVzZVVybCA/IHRoaXMuZ2V0Q3VycmVudFVybCgpIDogdW5kZWZpbmVkO1xuICBsZXQgcGFnZUFycmF5ID0gW107XG4gIGNvbnN0IGdldFdlYnZpZXdQYWdlcyA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVtb3RlLnNlbGVjdEFwcChjdXJyZW50VXJsLCB0aGlzLm9wdHMud2Vidmlld0Nvbm5lY3RSZXRyaWVzLCB0aGlzLm9wdHMuaWdub3JlQWJvdXRCbGFua1VybCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gYXZhaWxhYmxlIHdlYiBwYWdlczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKHRoaXMucmVtb3RlICYmIHRoaXMucmVtb3RlLmFwcElkS2V5KSB7XG4gICAgLy8gYWxyZWFkeSBjb25uZWN0ZWRcbiAgICBwYWdlQXJyYXkgPSBhd2FpdCBnZXRXZWJ2aWV3UGFnZXMoKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXRoaXMucmVtb3RlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbm5lY3RUb1JlbW90ZURlYnVnZ2VyKCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMucmVtb3RlLnNldENvbm5lY3Rpb25LZXkoKTtcblxuICAgIHBhZ2VBcnJheSA9IGF3YWl0IGdldFdlYnZpZXdQYWdlcygpO1xuXG4gICAgY29uc3QgYWxlcnRFcnJvck1zZyA9ICdDbG9zZSBhbGVydCBmYWlsZWQuIFJldHJ5Lic7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwoNiwgMTAwMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuY2xvc2VBbGVydEJlZm9yZVRlc3QoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihhbGVydEVycm9yTXNnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBpZiB0aGUgbG9vcCB0byBjbG9zZSBhbGVydHMgZmFpbGVkIHRvIGRpc21pc3MsIGlnbm9yZSxcbiAgICAgIC8vIG90aGVyd2lzZSBsb2cgYW5kIHRocm93IHRoZSBlcnJvclxuICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSBhbGVydEVycm9yTXNnKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocGFnZUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIHdlIGhhdmUgbm8gd2ViIGZyYW1lcywgYnV0IGNvbnRpbnVlIGFueXdheVxuICAgIHRoaXMubG9nLmRlYnVnKCdObyB3ZWIgZnJhbWVzIGZvdW5kLicpO1xuICB9XG4gIHJldHVybiBwYWdlQXJyYXk7XG59O1xuXG5jb21tYW5kcy5nZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHRzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ0dldHRpbmcgbGlzdCBvZiBhdmFpbGFibGUgY29udGV4dHMnKTtcbiAgY29uc3QgY29udGV4dHMgPSBhd2FpdCB0aGlzLmdldENvbnRleHRzQW5kVmlld3MoZmFsc2UpO1xuXG4gIGNvbnN0IG1hcEZuID0gdGhpcy5vcHRzLmZ1bGxDb250ZXh0TGlzdFxuICAgID8gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBjb250ZXh0LmlkLnRvU3RyaW5nKCksXG4gICAgICAgIHRpdGxlOiBjb250ZXh0LnZpZXcudGl0bGUsXG4gICAgICAgIHVybDogY29udGV4dC52aWV3LnVybCxcbiAgICAgICAgYnVuZGxlSWQ6IGNvbnRleHQudmlldy5idW5kbGVJZCxcbiAgICAgIH07XG4gICAgfVxuICAgIDogKGNvbnRleHQpID0+IGNvbnRleHQuaWQudG9TdHJpbmcoKTtcbiAgcmV0dXJuIGNvbnRleHRzLm1hcChtYXBGbik7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENvbnRleHRcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWQgLSBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29udGV4dC4gVGhlIG5hdGl2ZSBjb250ZXh0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSAnTkFUSVZFX0FQUCcgYW5kIHRoZSB3ZWJ2aWV3cyB3aWxsIGJlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlZJRVdfeHh4J1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHdlYnZpZXcgY29udGVudFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmwgLSBUaGUgdXJsIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2VidmlldyBjb250ZW50XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGNvbnRleHRzIGF2YWlsYWJsZSwgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXJsIGFuZCB0aXRsZSBvZiBlYWNoXG4gKiB3ZWJ2aWV3XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggY2FuIGluY2x1ZGUgYHdhaXRGb3JXZWJ2aWV3TXNgIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhlIHBlcmlvZCB0byBwb2xsIGZvciBhdmFpbGFibGUgd2Vidmlld3NcbiAqIEByZXR1cm5zIHtBcnJheX0gTGlzdCBvZiBDb250ZXh0IG9iamVjdHNcbiAqL1xuZXh0ZW5zaW9ucy5tb2JpbGVHZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldENvbnRleHRzIChvcHRzID0ge30pIHtcbiAgbGV0IHtcbiAgICB3YWl0Rm9yV2Vidmlld01zID0gMCxcbiAgfSA9IG9wdHM7XG5cbiAgLy8gbWFrZSBzdXJlIGl0IGlzIGEgbnVtYmVyLCBzbyB0aGUgZHVyYXRpb24gY2hlY2sgd29ya3MgcHJvcGVybHlcbiAgaWYgKCFfLmlzTnVtYmVyKHdhaXRGb3JXZWJ2aWV3TXMpKSB7XG4gICAgd2FpdEZvcldlYnZpZXdNcyA9IHBhcnNlSW50KHdhaXRGb3JXZWJ2aWV3TXMsIDEwKTtcbiAgICBpZiAoaXNOYU4od2FpdEZvcldlYnZpZXdNcykpIHtcbiAgICAgIHdhaXRGb3JXZWJ2aWV3TXMgPSAwO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGN1ck9wdCA9IHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3Q7XG4gIHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3QgPSB0cnVlO1xuXG4gIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gIHRyeSB7XG4gICAgbGV0IGNvbnRleHRzO1xuICAgIGRvIHtcbiAgICAgIGNvbnRleHRzID0gYXdhaXQgdGhpcy5nZXRDb250ZXh0cygpO1xuXG4gICAgICBpZiAoY29udGV4dHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYEZvdW5kIHdlYnZpZXcgY29udGV4dCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgICAgICByZXR1cm4gY29udGV4dHM7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gd2Vidmlld3MgZm91bmQgaW4gJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXNgKTtcbiAgICB9IHdoaWxlICh0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzIDwgd2FpdEZvcldlYnZpZXdNcyk7XG4gICAgcmV0dXJuIGNvbnRleHRzO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIHJlc2V0IHRoZSBvcHRpb24gc28gdGhlcmUgYXJlIG5vIHNpZGUgZWZmZWN0c1xuICAgIHRoaXMub3B0cy5mdWxsQ29udGV4dExpc3QgPSBjdXJPcHQ7XG4gIH1cbn07XG5cbmNvbW1hbmRzLnNldFdpbmRvdyA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpbmRvdyAobmFtZSwgc2tpcFJlYWR5Q2hlY2spIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnNldENvbnRleHQobmFtZSwgXy5ub29wLCBza2lwUmVhZHlDaGVjayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIHRyYW5zbGF0ZSB0aGUgZXJyb3IgaW4gdGVybXMgb2Ygd2luZG93c1xuICAgIHRocm93IGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLk5vU3VjaENvbnRleHRFcnJvcilcbiAgICAgID8gbmV3IGVycm9ycy5Ob1N1Y2hXaW5kb3dFcnJvcigpXG4gICAgICA6IGVycjtcbiAgfVxufTtcblxuY29tbWFuZHMuZ2V0V2luZG93SGFuZGxlID0gYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93SGFuZGxlICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKGBHZXR0aW5nIGN1cnJlbnQgd2luZG93IGhhbmRsZWApO1xuICByZXR1cm4gdGhpcy5jdXJDb250ZXh0O1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93SGFuZGxlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd0hhbmRsZXMgKCkge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuICB0aGlzLmxvZy5kZWJ1ZygnR2V0dGluZyBsaXN0IG9mIGF2YWlsYWJsZSB3aW5kb3cgaGFuZGxlcycpO1xuICBjb25zdCBjb250ZXh0cyA9IGF3YWl0IHRoaXMuZ2V0Q29udGV4dHNBbmRWaWV3cyhmYWxzZSk7XG4gIHJldHVybiBjb250ZXh0c1xuICAgIC8vIGdldCByaWQgb2YgdGhlIG5hdGl2ZSBhcHAgY29udGV4dFxuICAgIC5maWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQuaWQgIT09IE5BVElWRV9XSU4pXG4gICAgLy8gZ2V0IHRoZSBgYXBwLmlkYCBmb3JtYXQgZXhwZWN0ZWRcbiAgICAubWFwKChjb250ZXh0KSA9PiBjb250ZXh0LnZpZXcuaWQudG9TdHJpbmcoKSk7XG59O1xuXG5leHRlbnNpb25zLm9uUGFnZUNoYW5nZSA9IGFzeW5jIGZ1bmN0aW9uIG9uUGFnZUNoYW5nZSAocGFnZUNoYW5nZU5vdGlmaWNhdGlvbikge1xuICB0aGlzLmxvZy5kZWJ1ZyhgUmVtb3RlIGRlYnVnZ2VyIG5vdGlmaWVkIHVzIG9mIGEgbmV3IHBhZ2UgbGlzdGluZzogJHtKU09OLnN0cmluZ2lmeShwYWdlQ2hhbmdlTm90aWZpY2F0aW9uKX1gKTtcbiAgaWYgKHRoaXMuc2VsZWN0aW5nTmV3UGFnZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBzZWxlY3RpbmcgYSBwYWdlLCBpZ25vcmluZycpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXRoaXMucmVtb3RlIHx8ICF0aGlzLnJlbW90ZS5pc0Nvbm5lY3RlZCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBoYXZlIG5vdCB5ZXQgY29ubmVjdGVkLCBpZ25vcmluZycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHthcHBJZEtleSwgcGFnZUFycmF5fSA9IHBhZ2VDaGFuZ2VOb3RpZmljYXRpb247XG5cbiAgbGV0IG5ld0lkcyA9IFtdO1xuICBsZXQgbmV3UGFnZXMgPSBbXTtcbiAgbGV0IGtleUlkID0gbnVsbDtcblxuICAvLyBDaGVja3MgaWYgYSBVUkwgaXMgYmxhY2tsaXN0ZWQgaW4gdGhlICdzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMnIGNhcGFiaWxpdHlcbiAgZnVuY3Rpb24gaXNVcmxJZ25vcmVkICh1cmwsIHNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcykge1xuICAgIGNvbnN0IGlnbm9yZWRIb3N0cyA9IChzYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXMgfHwgJycpXG4gICAgICAuc3BsaXQoJywnKVxuICAgICAgLm1hcCgoYikgPT4gYi50cmltKCkpXG4gICAgICAuZmlsdGVyKChiKSA9PiAhXy5pc0VtcHR5KGIpKTtcbiAgICBmb3IgKGNvbnN0IGlnbm9yZWRIb3N0IG9mIGlnbm9yZWRIb3N0cykge1xuICAgICAgaWYgKGlnbm9yZWRIb3N0ID09PSAnYWJvdXQ6YmxhbmsnICYmIHVybCA9PT0gJ2Fib3V0OmJsYW5rJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgaG9zdG5hbWUgPSBuZXcgVVJMKHVybCkuaG9zdG5hbWU7XG4gICAgICAgICAgaWYgKGhvc3RuYW1lID09PSBpZ25vcmVkSG9zdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChpZ24pIHtcbiAgICAgICAgICAvLyBkbyBub3RoaW5nIGlmIGludmFsaWQgVVJMXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBwYWdlIG9mIHBhZ2VBcnJheSkge1xuICAgIGNvbnN0IGlkID0gcGFnZS5pZC50b1N0cmluZygpO1xuICAgIG5ld0lkcy5wdXNoKGlkKTtcbiAgICBpZiAocGFnZS5pc0tleSkge1xuICAgICAga2V5SWQgPSBpZDtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dElkID0gYCR7YXBwSWRLZXl9LiR7aWR9YDtcblxuICAgIC8vIGFkZCBpZiB0aGlzIGlzIGEgbmV3IHBhZ2VcbiAgICBpZiAoIV8uaW5jbHVkZXModGhpcy5jb250ZXh0cywgY29udGV4dElkKSkge1xuICAgICAgaWYgKGlzVXJsSWdub3JlZChwYWdlLnVybCwgdGhpcy5vcHRzLnNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcykpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IHRyYWNraW5nICcke3BhZ2UudXJsfScgcGFnZSBiZWNhdXNlIGl0IGlzIGJsYWNrbGlzdGVkLiBgICtcbiAgICAgICAgICBgJ3NhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcyc9JHt0aGlzLm9wdHMuc2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UGFnZXMucHVzaChpZCk7XG4gICAgICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0SWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICgha2V5SWQpIHtcbiAgICAvLyBpZiB0aGVyZSBpcyBubyBrZXkgaWQsIHB1bGwgdGhlIGZpcnN0IGlkIGZyb20gdGhlIHBhZ2UgYXJyYXkgYW5kIHVzZSB0aGF0XG4gICAgLy8gYXMgYSBzdGFuZCBpblxuICAgIHRoaXMubG9nLmRlYnVnKCdObyBrZXkgaWQgZm91bmQuIENob29zaW5nIGZpcnN0IGlkIGZyb20gcGFnZSBhcnJheScpO1xuICAgIGtleUlkID0gbmV3SWRzWzBdIHx8IG51bGw7XG4gIH1cblxuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5jdXJDb250ZXh0KSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdXZSBkbyBub3QgYXBwZWFyIHRvIGhhdmUgd2luZG93IHNldCB5ZXQsIGlnbm9yaW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2N1ckFwcElkS2V5LCBjdXJQYWdlSWRLZXldID0gdGhpcy5jdXJDb250ZXh0LnNwbGl0KCcuJyk7XG5cbiAgaWYgKGN1ckFwcElkS2V5ICE9PSBhcHBJZEtleSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdQYWdlIGNoYW5nZSBub3QgcmVmZXJyaW5nIHRvIGN1cnJlbnRseSBzZWxlY3RlZCBhcHAsIGlnbm9yaW5nLicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBuZXdQYWdlID0gbnVsbDtcbiAgaWYgKG5ld1BhZ2VzLmxlbmd0aCkge1xuICAgIG5ld1BhZ2UgPSBfLmxhc3QobmV3UGFnZXMpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBXZSBoYXZlIG5ldyBwYWdlcywgc2VsZWN0aW5nIHBhZ2UgJyR7bmV3UGFnZX0nYCk7XG4gIH0gZWxzZSBpZiAoIV8uaW5jbHVkZXMobmV3SWRzLCBjdXJQYWdlSWRLZXkpKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ05ldyBwYWdlIGxpc3RpbmcgZnJvbSByZW1vdGUgZGVidWdnZXIgZG9lcyBub3QgY29udGFpbiAnICtcbiAgICAgICAgICAgICAgICAgJ2N1cnJlbnQgd2luZG93OyBhc3N1bWluZyBpdCBpcyBjbG9zZWQnKTtcbiAgICBpZiAoIXV0aWwuaGFzVmFsdWUoa2V5SWQpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcignRG8gbm90IGhhdmUgb3VyIGN1cnJlbnQgd2luZG93IGFueW1vcmUsIGFuZCB0aGVyZSAnICtcbiAgICAgICAgICAgICAgICAgICAnYXJlIG5vdCBhbnkgbW9yZSB0byBsb2FkISBEb2luZyBub3RoaW5nLi4uJyk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRVcmwodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgRGVidWdnZXIgYWxyZWFkeSBzZWxlY3RlZCBwYWdlICcke2tleUlkfScsIGAgK1xuICAgICAgICAgICAgICAgICBgY29uZmlybWluZyB0aGF0IGNob2ljZS5gKTtcbiAgICB0aGlzLmN1ckNvbnRleHQgPSBgJHthcHBJZEtleX0uJHtrZXlJZH1gO1xuICAgIG5ld1BhZ2UgPSBrZXlJZDtcbiAgfSBlbHNlIHtcbiAgICAvLyBhdCB0aGlzIHBvaW50LCB0aGVyZSBhcmUgbm8gbmV3IHBhZ2VzLCBhbmQgdGhlIGN1cnJlbnQgcGFnZSBzdGlsbCBleGlzdHNcbiAgICB0aGlzLmxvZy5kZWJ1ZygnQ2hlY2tpbmcgaWYgcGFnZSBuZWVkcyB0byBsb2FkJyk7XG4gICAgLy8gSWYgYSB3aW5kb3cgbmF2aWdhdGVzIHRvIGFuIGFuY2hvciBpdCBkb2Vzbid0IGFsd2F5cyBmaXJlIGEgcGFnZVxuICAgIC8vIGNhbGxiYWNrIGV2ZW50LiBMZXQncyBjaGVjayBpZiB3ZSB3b3VuZCB1cCBpbiBzdWNoIGEgc2l0dWF0aW9uLlxuICAgIGNvbnN0IG5lZWRzUGFnZUxvYWQgPSAoKCkgPT4ge1xuICAgICAgLy8gbmVlZCB0byBtYXAgdGhlIHBhZ2UgaWRzIHRvIGNvbnRleHQgaWRzXG4gICAgICBjb25zdCBjb250ZXh0QXJyYXkgPSBfLm1hcChwYWdlQXJyYXksIChwYWdlKSA9PiBgJHthcHBJZEtleX0uJHtwYWdlLmlkfWApO1xuICAgICAgLy8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgY29udGV4dCBleGlzdHMgaW4gYm90aCBvdXIgcmVjb3JkZWQgY29udGV4dHMsXG4gICAgICAvLyBhbmQgdGhlIHBhZ2UgYXJyYXlcbiAgICAgIHJldHVybiAhXy5pc0VxdWFsKF8uZmluZCh0aGlzLmNvbnRleHRzLCB0aGlzLmN1ckNvbnRleHQpLCBfLmZpbmQoY29udGV4dEFycmF5LCB0aGlzLmN1ckNvbnRleHQpKTtcbiAgICB9KSgpO1xuXG4gICAgaWYgKG5lZWRzUGFnZUxvYWQpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdQYWdlIGxvYWQgbmVlZGVkLiBMb2FkaW5nLi4uJyk7XG4gICAgICBhd2FpdCB0aGlzLnJlbW90ZS5wYWdlTG9hZCgpO1xuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKCdOZXcgcGFnZSBsaXN0aW5nIGlzIHNhbWUgYXMgb2xkLCBkb2luZyBub3RoaW5nJyk7XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcGFnZSBsaXN0aW5nIGlzbid0IGluZGljYXRpbmcgYSByZWRpcmVjdFxuICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgbGV0IGN1cnJlbnRQYWdlSWQgPSBwYXJzZUludChfLmxhc3QodGhpcy5jdXJDb250ZXh0LnNwbGl0KCcuJykpLCAxMCk7XG4gICAgbGV0IHBhZ2UgPSBfLmZpbmQocGFnZUFycmF5LCAocCkgPT4gcGFyc2VJbnQocC5pZCwgMTApID09PSBjdXJyZW50UGFnZUlkKTtcbiAgICBpZiAocGFnZSAmJiBwYWdlLnVybCAhPT0gdGhpcy5nZXRDdXJyZW50VXJsKCkpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBSZWRpcmVjdGVkIGZyb20gJyR7dGhpcy5nZXRDdXJyZW50VXJsKCl9JyB0byAnJHtwYWdlLnVybH0nYCk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRVcmwocGFnZS51cmwpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1dGlsLmhhc1ZhbHVlKG5ld1BhZ2UpKSB7XG4gICAgdGhpcy5zZWxlY3RpbmdOZXdQYWdlID0gdHJ1ZTtcbiAgICBjb25zdCBvbGRDb250ZXh0ID0gdGhpcy5jdXJDb250ZXh0O1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IGAke2FwcElkS2V5fS4ke25ld1BhZ2V9YDtcbiAgICAvLyBkbyBub3Qgd2FpdCwgYXMgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSwgYW5kIHRoZSByZXNwb25zZSBpcyBub3QgbmVjZXNzYXJ5XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrcywgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgIHRoaXMucmVtb3RlLnNlbGVjdFBhZ2UoYXBwSWRLZXksIHBhcnNlSW50KG5ld1BhZ2UsIDEwKSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5sb2cud2FybihgRmFpbGVkIHRvIHNlbGVjdCBwYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgdGhpcy5jdXJDb250ZXh0ID0gb2xkQ29udGV4dDtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGluZ05ld1BhZ2UgPSBmYWxzZTtcbiAgfVxuICB0aGlzLndpbmRvd0hhbmRsZUNhY2hlID0gcGFnZUFycmF5O1xufTtcblxuXG5PYmplY3QuYXNzaWduKGNvbW1hbmRzLCBleHRlbnNpb25zLCBoZWxwZXJzKTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1h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
|
|
642
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJuYW1lcyI6WyJOQVRJVkVfV0lOIiwiV0VCVklFV19XSU4iLCJXRUJWSUVXX0JBU0UiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q3VycmVudENvbnRleHQiLCJjdXJDb250ZXh0IiwiZ2V0Q29udGV4dHNBbmRWaWV3cyIsInVzZVVybCIsImxvZyIsImRlYnVnIiwid2Vidmlld3MiLCJsaXN0V2ViRnJhbWVzIiwiY3R4cyIsImlkIiwidmlldyIsImNvbnRleHRzIiwicHVzaCIsInRvU3RyaW5nIiwidXNlTmV3U2FmYXJpIiwicGFyc2VGbG9hdCIsImlvc1Nka1ZlcnNpb24iLCJvcHRzIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNSZWFsRGV2aWNlIiwic2FmYXJpIiwidHlwZUFuZE5hdlRvVXJsIiwiYWRkcmVzcyIsInNldEN1cnJlbnRVcmwiLCJjYXBzIiwic2FmYXJpSW5pdGlhbFVybCIsInBvcnQiLCJ0cmllcyIsIk1BWF9UUklFUyIsIm5hdmlnYXRlIiwib2xkSW1wV2FpdCIsImltcGxpY2l0V2FpdE1zIiwiZWwiLCJyZXRyeUludGVydmFsIiwiZmluZEVsZW1lbnQiLCJuYXRpdmVUYXAiLCJFTEVNRU5UIiwiZXJyIiwiXyIsImluY2x1ZGVzIiwibWVzc2FnZSIsIm5ld1BhZ2VCdXR0b24iLCJzZXRWYWx1ZUltbWVkaWF0ZSIsImdldEN1cnJlbnRVcmwiLCJlcnJvciIsIm5hdlRvVmlld1dpdGhUaXRsZSIsInVuZGVmaW5lZCIsIlJlZ0V4cCIsInJlbW90ZSIsInBhZ2VVbmxvYWQiLCJuYXZUb1ZpZXdUaHJvdWdoRmF2b3JpdGVzIiwibXNnIiwidGl0bGVSZWdleCIsInVybFJlZ0V4cCIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNwaW5UaW1lIiwic3BpbkhhbmRsZXMiLCJyZXMiLCJnZXRMYXRlc3RXZWJ2aWV3Q29udGV4dEZvclRpdGxlIiwiRXJyb3IiLCJzdGFjayIsImxhdGVzdFdpbmRvdyIsInNldENvbnRleHQiLCJjYW5jZWxQYWdlTG9hZCIsIndhcm4iLCJCIiwiZGVsYXkiLCJlbGVtZW50IiwiZmluZFVJRWxlbWVudE9yRWxlbWVudHMiLCJzdG9wUmVtb3RlIiwiY2xvc2VXaW5kb3dCZWZvcmVEaXNjb25uZWN0aW5nIiwiZXJyb3JBbmRUaHJvdyIsImNsb3NlV2luZG93IiwiZGlzY29ubmVjdCIsImN1cldlYkZyYW1lcyIsImN1cldlYkNvb3JkcyIsInVybCIsIl9jdXJyZW50VXJsIiwiY2xvc2VBbGVydEJlZm9yZVRlc3QiLCJuYXZUb0luaXRpYWxXZWJ2aWV3IiwicmVnRXhwIiwiY3VycmVudFVybCIsImZpbHRlciIsImN0eCIsInRpdGxlIiwidGVzdCIsImlzV2ViQ29udGV4dCIsImlzV2VidmlldyIsImdldE5ld1JlbW90ZURlYnVnZ2VyIiwic29ja2V0UGF0aCIsImRldmljZSIsImdldFdlYkluc3BlY3RvclNvY2tldCIsImNyZWF0ZVJlbW90ZURlYnVnZ2VyIiwiYnVuZGxlSWQiLCJhZGRpdGlvbmFsQnVuZGxlSWRzIiwiYWRkaXRpb25hbFdlYnZpZXdCdW5kbGVJZHMiLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyIsInBhZ2VMb2FkTXMiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJ1dGlsIiwiaGFzVmFsdWUiLCJzYWZhcmlHYXJiYWdlQ29sbGVjdCIsInVkaWQiLCJsb2dBbGxDb21tdW5pY2F0aW9uIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbiIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzb2NrZXRDaHVua1NpemUiLCJzYWZhcmlTb2NrZXRDaHVua1NpemUiLCJ3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCIsInNhZmFyaVdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwibmFtZSIsImNhbGxiYWNrIiwic2tpcFJlYWR5Q2hlY2siLCJhbHJlYWR5SW5Db250ZXh0IiwiZGVzaXJlZCIsImN1cnJlbnQiLCJpc05hdGl2ZUNvbnRleHQiLCJjb250ZXh0IiwicmVwbGFjZSIsImlzVW5kZWZpbmVkIiwiZ2V0Q29udGV4dHMiLCJjb250ZXh0SWQiLCJlcnJvcnMiLCJOb1N1Y2hDb250ZXh0RXJyb3IiLCJvbGRDb250ZXh0IiwiY3VyV2luZG93SGFuZGxlIiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJtYXAiLCJzcGxpdCIsInBhcnNlSW50Iiwic2VsZWN0aW5nTmV3UGFnZSIsInNlbGVjdFBhZ2UiLCJlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmciLCJsb2dzIiwicGVyZm9ybWFuY2UiLCJJT1NQZXJmb3JtYW5jZUxvZyIsInN0YXJ0Q2FwdHVyZSIsInNhZmFyaUNvbnNvbGUiLCJzdGFydENvbnNvbGUiLCJhZGRMb2dMaW5lIiwiYmluZCIsInNhZmFyaU5ldHdvcmsiLCJzdGFydE5ldHdvcmsiLCJjb25uZWN0VG9SZW1vdGVEZWJ1Z2dlciIsIm9uIiwiUmVtb3RlRGVidWdnZXIiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIm9uUGFnZUNoYW5nZSIsIkVWRU5UX0ZSQU1FU19ERVRBQ0hFRCIsImlzRW1wdHkiLCJwbHVyYWxpemUiLCJsZW5ndGgiLCJqb2luIiwiY29ubmVjdCIsIndlYnZpZXdDb25uZWN0VGltZW91dCIsInBhZ2VBcnJheSIsImdldFdlYnZpZXdQYWdlcyIsInNlbGVjdEFwcCIsIndlYnZpZXdDb25uZWN0UmV0cmllcyIsImlnbm9yZUFib3V0QmxhbmtVcmwiLCJzZXRDb25uZWN0aW9uS2V5IiwiYWxlcnRFcnJvck1zZyIsIm1hcEZuIiwiZnVsbENvbnRleHRMaXN0IiwibW9iaWxlR2V0Q29udGV4dHMiLCJ3YWl0Rm9yV2Vidmlld01zIiwiaXNOdW1iZXIiLCJpc05hTiIsImN1ck9wdCIsInRpbWVyIiwidGltaW5nIiwiVGltZXIiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsInNldFdpbmRvdyIsIm5vb3AiLCJpc0Vycm9yVHlwZSIsIk5vU3VjaFdpbmRvd0Vycm9yIiwiZ2V0V2luZG93SGFuZGxlIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImdldFdpbmRvd0hhbmRsZXMiLCJwYWdlQ2hhbmdlTm90aWZpY2F0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsImlzQ29ubmVjdGVkIiwibmV3SWRzIiwibmV3UGFnZXMiLCJrZXlJZCIsImlzVXJsSWdub3JlZCIsInNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcyIsImlnbm9yZWRIb3N0cyIsImIiLCJ0cmltIiwiaWdub3JlZEhvc3QiLCJob3N0bmFtZSIsIlVSTCIsImlnbiIsInBhZ2UiLCJpc0tleSIsImluZm8iLCJjdXJBcHBJZEtleSIsImN1clBhZ2VJZEtleSIsIm5ld1BhZ2UiLCJsYXN0IiwibmVlZHNQYWdlTG9hZCIsImNvbnRleHRBcnJheSIsImlzRXF1YWwiLCJmaW5kIiwicGFnZUxvYWQiLCJjdXJyZW50UGFnZUlkIiwicCIsImNhdGNoIiwid2luZG93SGFuZGxlQ2FjaGUiLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZW1vdGVEZWJ1Z2dlciwgUmVtb3RlRGVidWdnZXIgfSBmcm9tICdhcHBpdW0tcmVtb3RlLWRlYnVnZ2VyJztcbmltcG9ydCB7IGVycm9ycywgaXNFcnJvclR5cGUgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCB7IHV0aWwsIHRpbWluZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgSU9TUGVyZm9ybWFuY2VMb2cgZnJvbSAnLi4vZGV2aWNlLWxvZy9pb3MtcGVyZm9ybWFuY2UtbG9nJztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBOQVRJVkVfV0lOID0gJ05BVElWRV9BUFAnO1xuY29uc3QgV0VCVklFV19XSU4gPSAnV0VCVklFVyc7XG5jb25zdCBXRUJWSUVXX0JBU0UgPSBgJHtXRUJWSUVXX1dJTn1fYDtcblxuY29uc3QgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cblxuY29tbWFuZHMuZ2V0Q3VycmVudENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50Q29udGV4dCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICBpZiAodGhpcy5jdXJDb250ZXh0ICYmIHRoaXMuY3VyQ29udGV4dCAhPT0gTkFUSVZFX1dJTikge1xuICAgIHJldHVybiBgJHtXRUJWSUVXX0JBU0V9JHt0aGlzLmN1ckNvbnRleHR9YDtcbiAgfVxuICByZXR1cm4gTkFUSVZFX1dJTjtcbn07XG5cbmV4dGVuc2lvbnMuZ2V0Q29udGV4dHNBbmRWaWV3cyA9IGFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHRzQW5kVmlld3MgKHVzZVVybCA9IHRydWUpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1JldHJpZXZpbmcgY29udGV4dHMgYW5kIHZpZXdzJyk7XG4gIGxldCB3ZWJ2aWV3cyA9IGF3YWl0IHRoaXMubGlzdFdlYkZyYW1lcyh1c2VVcmwpO1xuXG4gIGxldCBjdHhzID0gW3tpZDogTkFUSVZFX1dJTiwgdmlldzoge319XTtcbiAgdGhpcy5jb250ZXh0cyA9IFtOQVRJVkVfV0lOXTtcbiAgZm9yIChsZXQgdmlldyBvZiB3ZWJ2aWV3cykge1xuICAgIGN0eHMucHVzaCh7aWQ6IGAke1dFQlZJRVdfQkFTRX0ke3ZpZXcuaWR9YCwgdmlld30pO1xuICAgIHRoaXMuY29udGV4dHMucHVzaCh2aWV3LmlkLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiBjdHhzO1xufTtcblxuLy8gUmlnaHQgbm93IHdlIGRvbid0IG5lY2Vzc2FyaWx5IHdhaXQgZm9yIHdlYnZpZXdcbi8vIGFuZCBmcmFtZSB0byBsb2FkLCB3aGljaCBsZWFkcyB0byByYWNlIGNvbmRpdGlvbnMgYW5kIGZsYWtpbmVzcyxcbi8vIGxldCdzIHNlZSBpZiB3ZSBjYW4gdHJhbnNpdGlvbiB0byBzb21ldGhpbmcgYmV0dGVyXG5leHRlbnNpb25zLnVzZU5ld1NhZmFyaSA9IGZ1bmN0aW9uIHVzZU5ld1NhZmFyaSAoKSB7XG4gIHJldHVybiBwYXJzZUZsb2F0KHRoaXMuaW9zU2RrVmVyc2lvbikgPj0gOC4xICYmXG4gICAgcGFyc2VGbG9hdCh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uKSA+PSA4LjEgJiZcbiAgICAhdGhpcy5pc1JlYWxEZXZpY2UoKSAmJlxuICAgIHRoaXMub3B0cy5zYWZhcmk7XG59O1xuXG5leHRlbnNpb25zLnR5cGVBbmROYXZUb1VybCA9IGFzeW5jIGZ1bmN0aW9uIHR5cGVBbmROYXZUb1VybCAoKSB7XG4gIGxldCBhZGRyZXNzID0gdGhpcy5vcHRzLmFkZHJlc3MgPyB0aGlzLm9wdHMuYWRkcmVzcyA6ICcxMjcuMC4wLjEnO1xuICB0aGlzLnNldEN1cnJlbnRVcmwodGhpcy5jYXBzLnNhZmFyaUluaXRpYWxVcmwgfHwgYGh0dHA6Ly8ke2FkZHJlc3N9OiR7dGhpcy5vcHRzLnBvcnR9L3dlbGNvbWVgKTtcblxuICBsZXQgdHJpZXMgPSAwO1xuICBjb25zdCBNQVhfVFJJRVMgPSAyO1xuICBsZXQgbmF2aWdhdGUgPSBhc3luYyAoKSA9PiB7XG4gICAgbGV0IG9sZEltcFdhaXQgPSB0aGlzLmltcGxpY2l0V2FpdE1zO1xuICAgIHRoaXMuaW1wbGljaXRXYWl0TXMgPSA3MDAwO1xuXG4gICAgLy8gZmluZCB0aGUgdXJsIGJhciwgYW5kIHRhcCBvbiBpdC4gcmV0cnkgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHRyeVxuICAgIC8vIHRvbyBzb29uIHdoaWxlIHRoZSB2aWV3IGlzIHN0aWxsIGxvYWRpbmdcbiAgICBsZXQgZWwgPSBhd2FpdCByZXRyeUludGVydmFsKDMsIDEwMDAsIGFzeW5jICgpID0+IGF3YWl0IHRoaXMuZmluZEVsZW1lbnQoJ2FjY2Vzc2liaWxpdHkgaWQnLCAnVVJMJykpO1xuICAgIHRoaXMuaW1wbGljaXRXYWl0TXMgPSBvbGRJbXBXYWl0O1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubmF0aXZlVGFwKGVsLkVMRU1FTlQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKF8uaW5jbHVkZXMoZXJyLm1lc3NhZ2UsICdjb3VsZCBub3QgYmUgdGFwcGVkJykpIHtcbiAgICAgICAgaWYgKHRyaWVzKysgPj0gTUFYX1RSSUVTKSB0aHJvdyBlcnI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcblxuICAgICAgICAvLyBnZW5lcmFsbHkgdGhpcyBtZWFucyB0aGF0IFNhZmFyaSBpcyBpbiBwYWdlIHZpZXdpbmcgbW9kZVxuICAgICAgICAvLyBzbyB0cnkgdG8gb3BlbiBhIG5ldyBwYWdlIGFuZCB0aGVuIHJlZG8gdGhlIG5hdmlnYXRpb25cbiAgICAgICAgbGV0IG5ld1BhZ2VCdXR0b24gPSBhd2FpdCB0aGlzLmZpbmRFbGVtZW50KCd4cGF0aCcsIFwiLy9YQ1VJRWxlbWVudFR5cGVCdXR0b25bY29udGFpbnMoQG5hbWUsJ05ldyBwYWdlJyldXCIpO1xuICAgICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChuZXdQYWdlQnV0dG9uLkVMRU1FTlQpO1xuICAgICAgICByZXR1cm4gYXdhaXQgbmF2aWdhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBnZXQgdGhlIGxhc3QgYWRkcmVzcyBlbGVtZW50IGFuZCBzZXQgdGhlIHVybFxuICAgIHRyeSB7XG4gICAgICBsZXQgZWwgPSBhd2FpdCB0aGlzLmZpbmRFbGVtZW50KCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRleHRGaWVsZCcpO1xuICAgICAgYXdhaXQgdGhpcy5zZXRWYWx1ZUltbWVkaWF0ZSh0aGlzLmdldEN1cnJlbnRVcmwoKSwgZWwpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gdGhpcyBpcyBmbGFrZXkgb24gY2VydGFpbiBzeXN0ZW1zIHNvIHdlIHJldHJ5IHVudGlsIHdlIGdldCBzb21ldGhpbmdcbiAgICAgIC8vIGlvcyBzaW1zOiBzYWZhcmkgb3BlbnMgYnV0IHRoZSB0ZXh0IGZpZWxkIGNhbid0IGJlIGZvdW5kXG4gICAgICBpZiAodHJpZXMrKyA+PSBNQVhfVFJJRVMpIHRocm93IGVycjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgICAgcmV0dXJuIGF3YWl0IG5hdmlnYXRlKCk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBpdCBoYXBwZW5cbiAgICB0cnkge1xuICAgICAgZWwgPSBhd2FpdCB0aGlzLmZpbmRFbGVtZW50KCdhY2Nlc3NpYmlsaXR5IGlkJywgJ0dvJyk7XG4gICAgICBhd2FpdCB0aGlzLm5hdGl2ZVRhcChlbC5FTEVNRU5UKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChfLmluY2x1ZGVzKGVyci5tZXNzYWdlLCAnY291bGQgbm90IGJlIHRhcHBlZCcpKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKCdVbmFibGUgdG8gc3VibWl0IFVSTCBiZWNhdXNlIFxcJ0dvXFwnIGJ1dHRvbiBjb3VsZCBub3QgYmUgdGFwcGVkLiAnICtcbiAgICAgICAgICAnUGxlYXNlIG1ha2Ugc3VyZSB5b3VyIGtleWJvYXJkIGlzIHRvZ2dsZWQgb24uJyk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMubmF2VG9WaWV3V2l0aFRpdGxlKHVuZGVmaW5lZCwgbmV3IFJlZ0V4cCh0aGlzLmdldEN1cnJlbnRVcmwoKSwgJ2knKSk7XG5cbiAgICAvLyB3YWl0IGZvciBwYWdlIHRvIGZpbmlzaCBsb2FkaW5nLlxuICAgIGF3YWl0IHRoaXMucmVtb3RlLnBhZ2VVbmxvYWQoKTtcbiAgfTtcbiAgYXdhaXQgbmF2aWdhdGUoKTtcbn07XG5cbmV4dGVuc2lvbnMubmF2VG9WaWV3VGhyb3VnaEZhdm9yaXRlcyA9IGFzeW5jIGZ1bmN0aW9uIG5hdlRvVmlld1Rocm91Z2hGYXZvcml0ZXMgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnV2UgYXJlIG9uIGlPUzcrIHNpbXVsYXRvcjogY2xpY2tpbmcgYXBwbGUgYnV0dG9uIHRvIGdldCBpbnRvIGEgd2VidmlldycpO1xuICBsZXQgb2xkSW1wV2FpdCA9IHRoaXMuaW1wbGljaXRXYWl0TXM7XG4gIHRoaXMuaW1wbGljaXRXYWl0TXMgPSA3MDAwOyAvLyB3YWl0IDdzIGZvciBhcHBsZSBidXR0b24gdG8gZXhpc3RcblxuICBsZXQgZWw7XG4gIHRyeSB7XG4gICAgZWwgPSBhd2FpdCB0aGlzLmZpbmRFbGVtZW50KCd4cGF0aCcsICcvL1hDVUlFbGVtZW50VHlwZVNjcm9sbFZpZXdbMV0vWENVSUVsZW1lbnRUeXBlQnV0dG9uWzFdJyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxldCBtc2cgPSAnQ291bGQgbm90IGZpbmQgYnV0dG9uIHRvIGNsaWNrIHRvIGdldCBpbnRvIHdlYnZpZXcuICcgK1xuICAgICAgICAgICAgICAnUHJvY2VlZGluZyBvbiB0aGUgYXNzdW1wdGlvbiB3ZSBoYXZlIGEgd29ya2luZyBvbmUuJztcbiAgICB0aGlzLmxvZy5lcnJvcihtc2cpO1xuICAgIHRoaXMuaW1wbGljaXRXYWl0TXMgPSBvbGRJbXBXYWl0O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSgvLiovaSk7XG4gIH1cbiAgdGhpcy5pbXBsaWNpdFdhaXRNcyA9IG9sZEltcFdhaXQ7XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5uYXRpdmVUYXAoZWwuRUxFTUVOVCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxldCBtc2cgPSAnQ291bGQgbm90IGNsaWNrIGJ1dHRvbiB0byBnZXQgaW50byB3ZWJ2aWV3LiAnICtcbiAgICAgICAgICAgICAgJ1Byb2NlZWRpbmcgb24gdGhlIGFzc3VtcHRpb24gd2UgaGF2ZSBhIHdvcmtpbmcgb25lLic7XG4gICAgdGhpcy5sb2cuZXJyb3IobXNnKTtcbiAgfVxuICBhd2FpdCB0aGlzLm5hdlRvVmlld1dpdGhUaXRsZSgvYXBwbGUvaSk7XG59O1xuXG5leHRlbnNpb25zLm5hdlRvVmlld1dpdGhUaXRsZSA9IGFzeW5jIGZ1bmN0aW9uIG5hdlRvVmlld1dpdGhUaXRsZSAodGl0bGVSZWdleCwgdXJsUmVnRXhwKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdOYXZpZ2F0aW5nIHRvIG1vc3QgcmVjZW50bHkgb3BlbmVkIHdlYnZpZXcnKTtcbiAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgbGV0IHNwaW5UaW1lID0gNTAwO1xuICBsZXQgc3BpbkhhbmRsZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgbGV0IHJlcztcbiAgICB0cnkge1xuICAgICAgcmVzID0gYXdhaXQgdGhpcy5nZXRMYXRlc3RXZWJ2aWV3Q29udGV4dEZvclRpdGxlKHRpdGxlUmVnZXggfHwgdXJsUmVnRXhwKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICghZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0NvdWxkIG5vdCBjb25uZWN0IHRvIGEgdmFsaWQgYXBwIGFmdGVyJykpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYENvdWxkIG5vdCBuYXZpZ2F0ZSB0byB3ZWJ2aWV3ISBFcnI6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIGVycm9yLnN0YWNrICs9IGBcXG5DYXVzZWQgYnk6ICR7ZXJyLnN0YWNrfWA7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoJ0NvdWxkIG5vdCBuYXZpZ2F0ZSB0byB3ZWJ2aWV3LiBSZXRyeWluZyBpZiBwb3NzaWJsZS4nKTtcbiAgICB9XG4gICAgaWYgKHJlcykge1xuICAgICAgbGV0IGxhdGVzdFdpbmRvdyA9IHJlcztcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBQaWNraW5nIHdlYnZpZXcgJyR7bGF0ZXN0V2luZG93fSdgKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q29udGV4dChsYXRlc3RXaW5kb3cpO1xuICAgICAgYXdhaXQgdGhpcy5yZW1vdGUuY2FuY2VsUGFnZUxvYWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBubyB3ZWJ2aWV3IHdhcyBmb3VuZFxuICAgIGlmICgoRGF0ZS5ub3coKSAtIHN0YXJ0KSA+PSA5MDAwMCkge1xuICAgICAgLy8gdG9vIHNsb3csIGdldCBvdXRcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IG5hdmlnYXRlIHRvIHdlYnZpZXc7IHRoZXJlIGFyZSBub25lIScpO1xuICAgIH1cblxuICAgIHRoaXMubG9nLndhcm4oJ0NvdWxkIG5vdCBmaW5kIGFueSB3ZWJ2aWV3cyB5ZXQsIHJlZnJlc2hpbmcvcmV0cnlpbmcnKTtcbiAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSB8fCAhdGhpcy5vcHRzLnNhZmFyaSkge1xuICAgICAgLy8gb24gYSByZWFsIGRldmljZSwgd2hlbiBub3QgdXNpbmcgU2FmYXJpLCB3ZSBqdXN0IHdhbnQgdG8gdHJ5IGFnYWluXG4gICAgICBhd2FpdCBCLmRlbGF5KHNwaW5UaW1lKTtcbiAgICAgIHJldHVybiBhd2FpdCBzcGluSGFuZGxlcygpO1xuICAgIH1cblxuICAgIC8vIGZpbmQgdGhlIHJlbG9hZCBidXR0b24gYW5kIHRhcCBpdCwgaWYgcG9zc2libGVcbiAgICBsZXQgZWxlbWVudDtcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ0ZpbmRpbmcgYW5kIHRhcHBpbmcgcmVsb2FkIGJ1dHRvbicpO1xuICAgICAgZWxlbWVudCA9IGF3YWl0IHRoaXMuZmluZFVJRWxlbWVudE9yRWxlbWVudHMoJ2FjY2Vzc2liaWxpdHkgaWQnLCAnUmVsb2FkQnV0dG9uJywgJycsIGZhbHNlKTtcbiAgICAgIGF3YWl0IHRoaXMubmF0aXZlVGFwKGVsZW1lbnQuRUxFTUVOVCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKGBFcnJvciBmaW5kaW5nIGFuZCB0YXBwaW5nIHJlbG9hZCBidXR0b246ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB0aGlzLmxvZy53YXJuKCdSZXRyeWluZy4nKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoc3BpblRpbWUpO1xuICAgIH1cblxuICAgIC8vIHRyeSBpdCBhbGwgYWdhaW5cbiAgICByZXR1cm4gYXdhaXQgc3BpbkhhbmRsZXMoKTtcbiAgfTtcbiAgYXdhaXQgc3BpbkhhbmRsZXMoKTtcbn07XG5cbmhlbHBlcnMuc3RvcFJlbW90ZSA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BSZW1vdGUgKGNsb3NlV2luZG93QmVmb3JlRGlzY29ubmVjdGluZyA9IGZhbHNlKSB7XG4gIGlmICghdGhpcy5yZW1vdGUpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdUcmllZCB0byBsZWF2ZSBhIHdlYiBmcmFtZSBidXQgd2VyZSBub3QgaW4gb25lJyk7XG4gIH1cblxuICBpZiAoY2xvc2VXaW5kb3dCZWZvcmVEaXNjb25uZWN0aW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jbG9zZVdpbmRvdygpO1xuICB9XG4gIGF3YWl0IHRoaXMucmVtb3RlLmRpc2Nvbm5lY3QoKTtcbiAgdGhpcy5jdXJDb250ZXh0ID0gbnVsbDtcbiAgdGhpcy5jdXJXZWJGcmFtZXMgPSBbXTtcbiAgdGhpcy5jdXJXZWJDb29yZHMgPSBudWxsO1xuICB0aGlzLnJlbW90ZSA9IG51bGw7XG59O1xuXG5oZWxwZXJzLnNldEN1cnJlbnRVcmwgPSBmdW5jdGlvbiBzZXRDdXJyZW50VXJsICh1cmwpIHtcbiAgdGhpcy5fY3VycmVudFVybCA9IHVybDtcbn07XG5cbmhlbHBlcnMuZ2V0Q3VycmVudFVybCA9IGZ1bmN0aW9uIGdldEN1cnJlbnRVcmwgKCkge1xuICByZXR1cm4gdGhpcy5fY3VycmVudFVybDtcbn07XG5cbmV4dGVuc2lvbnMuY2xvc2VBbGVydEJlZm9yZVRlc3QgPSBhc3luYyBmdW5jdGlvbiBjbG9zZUFsZXJ0QmVmb3JlVGVzdCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4dGVuc2lvbnMubmF2VG9Jbml0aWFsV2VidmlldyA9IGFzeW5jIGZ1bmN0aW9uIG5hdlRvSW5pdGlhbFdlYnZpZXcgKCkge1xuICBpZiAodGhpcy51c2VOZXdTYWZhcmkoKSkge1xuICAgIGF3YWl0IHRoaXMudHlwZUFuZE5hdlRvVXJsKCk7XG4gIH0gZWxzZSBpZiAoIXRoaXMuaXNSZWFsRGV2aWNlKCkgJiYgdGhpcy5vcHRzLnNhZmFyaSkge1xuICAgIGF3YWl0IHRoaXMubmF2VG9WaWV3VGhyb3VnaEZhdm9yaXRlcygpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IHRoaXMubmF2VG9WaWV3V2l0aFRpdGxlKC8uKi8pO1xuICB9XG59O1xuXG5leHRlbnNpb25zLmdldExhdGVzdFdlYnZpZXdDb250ZXh0Rm9yVGl0bGUgPSBhc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RXZWJ2aWV3Q29udGV4dEZvclRpdGxlIChyZWdFeHApIHtcbiAgY29uc3QgY3VycmVudFVybCA9IHRoaXMuZ2V0Q3VycmVudFVybCgpO1xuXG4gIGNvbnN0IGNvbnRleHRzID0gXy5maWx0ZXIoYXdhaXQgdGhpcy5nZXRDb250ZXh0c0FuZFZpZXdzKCksICd2aWV3Jyk7XG5cbiAgaWYgKGN1cnJlbnRVcmwpIHtcbiAgICAvLyBmaXJzdCB0cnkgdG8gbWF0Y2ggYnkgY3VycmVudCB1cmxcbiAgICBmb3IgKGNvbnN0IGN0eCBvZiBjb250ZXh0cykge1xuICAgICAgaWYgKChjdHgudmlldy51cmwgfHwgJycpID09PSB0aGlzLmdldEN1cnJlbnRVcmwoKSkge1xuICAgICAgICByZXR1cm4gY3R4LmlkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGlmIG5vdCwgdHJ5IHRvIG1hdGNoIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvblxuICBmb3IgKGNvbnN0IGN0eCBvZiBjb250ZXh0cykge1xuICAgIGlmICgoY3R4LnZpZXcudGl0bGUgJiYgcmVnRXhwLnRlc3QoY3R4LnZpZXcudGl0bGUpKSB8fCAoY3R4LnZpZXcudXJsICYmIHJlZ0V4cC50ZXN0KGN0eC52aWV3LnVybCkpKSB7XG4gICAgICByZXR1cm4gY3R4LmlkO1xuICAgIH1cbiAgfVxufTtcblxuZXh0ZW5zaW9ucy5pc1dlYkNvbnRleHQgPSBmdW5jdGlvbiBpc1dlYkNvbnRleHQgKCkge1xuICByZXR1cm4gISF0aGlzLmN1ckNvbnRleHQgJiYgdGhpcy5jdXJDb250ZXh0ICE9PSBOQVRJVkVfV0lOO1xufTtcblxuZXh0ZW5zaW9ucy5pc1dlYnZpZXcgPSBmdW5jdGlvbiBpc1dlYnZpZXcgKCkge1xuICByZXR1cm4gdGhpcy5pc1dlYkNvbnRleHQoKTtcbn07XG5cbmV4dGVuc2lvbnMuZ2V0TmV3UmVtb3RlRGVidWdnZXIgPSBhc3luYyBmdW5jdGlvbiBnZXROZXdSZW1vdGVEZWJ1Z2dlciAoKSB7XG4gIGxldCBzb2NrZXRQYXRoO1xuICBpZiAoIXRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICBzb2NrZXRQYXRoID0gYXdhaXQgdGhpcy5vcHRzLmRldmljZS5nZXRXZWJJbnNwZWN0b3JTb2NrZXQoKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlUmVtb3RlRGVidWdnZXIoe1xuICAgIGJ1bmRsZUlkOiB0aGlzLm9wdHMuYnVuZGxlSWQsXG4gICAgYWRkaXRpb25hbEJ1bmRsZUlkczogdGhpcy5vcHRzLmFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzLFxuICAgIGlzU2FmYXJpOiB0aGlzLmlzU2FmYXJpKCksXG4gICAgaW5jbHVkZVNhZmFyaTogdGhpcy5vcHRzLmluY2x1ZGVTYWZhcmlJbldlYnZpZXdzLFxuICAgIHVzZU5ld1NhZmFyaTogdGhpcy51c2VOZXdTYWZhcmkoKSxcbiAgICBwYWdlTG9hZE1zOiB0aGlzLnBhZ2VMb2FkTXMsXG4gICAgcGxhdGZvcm1WZXJzaW9uOiB0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLFxuICAgIHNvY2tldFBhdGgsXG4gICAgcmVtb3RlRGVidWdQcm94eTogdGhpcy5vcHRzLnJlbW90ZURlYnVnUHJveHksXG4gICAgZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU6IHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLnNhZmFyaUdhcmJhZ2VDb2xsZWN0KVxuICAgICAgPyAhIXRoaXMub3B0cy5zYWZhcmlHYXJiYWdlQ29sbGVjdFxuICAgICAgOiBmYWxzZSxcbiAgICB1ZGlkOiB0aGlzLm9wdHMudWRpZCxcbiAgICBsb2dBbGxDb21tdW5pY2F0aW9uOiB0aGlzLm9wdHMuc2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbixcbiAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcDogdGhpcy5vcHRzLnNhZmFyaUxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wLFxuICAgIHNvY2tldENodW5rU2l6ZTogdGhpcy5vcHRzLnNhZmFyaVNvY2tldENodW5rU2l6ZSxcbiAgICB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDogdGhpcy5vcHRzLnNhZmFyaVdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoXG4gIH0sIHRoaXMuaXNSZWFsRGV2aWNlKCkpO1xufTtcblxuLyoqXG4gKiBTZXQgY29udGV4dFxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIGNvbnRleHQgdG8gc2V0LiBJdCBjb3VsZCBiZSAnbnVsbCcgYXMgTkFUSVZFX1dJTi5cbiAqIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIFRoZSBjYWxsYmFjay4gKEl0IGlzIG5vdCBjYWxsZWQgaW4gdGhpcyBtZXRob2QpXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHNraXBSZWFkeUNoZWNrIC0gV2hldGhlciBpdCB3YWl0cyBmb3IgdGhlIG5ldyBjb250ZXh0IGlzIHJlYWR5XG4gKi9cbmNvbW1hbmRzLnNldENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzZXRDb250ZXh0IChuYW1lLCBjYWxsYmFjaywgc2tpcFJlYWR5Q2hlY2spIHtcbiAgZnVuY3Rpb24gYWxyZWFkeUluQ29udGV4dCAoZGVzaXJlZCwgY3VycmVudCkge1xuICAgIHJldHVybiAoZGVzaXJlZCA9PT0gY3VycmVudCB8fFxuICAgICAgKGRlc2lyZWQgPT09IG51bGwgJiYgY3VycmVudCA9PT0gTkFUSVZFX1dJTikgfHxcbiAgICAgIChkZXNpcmVkID09PSBOQVRJVkVfV0lOICYmIGN1cnJlbnQgPT09IG51bGwpKTtcbiAgfVxuICBmdW5jdGlvbiBpc05hdGl2ZUNvbnRleHQgKGNvbnRleHQpIHtcbiAgICByZXR1cm4gY29udGV4dCA9PT0gTkFUSVZFX1dJTiB8fCBjb250ZXh0ID09PSBudWxsO1xuICB9XG5cbiAgLy8gYWxsb3cgdGhlIGZ1bGwgY29udGV4dCBsaXN0IHRvIGJlIHBhc3NlZCBpblxuICBpZiAobmFtZSAmJiBuYW1lLmlkKSB7XG4gICAgbmFtZSA9IG5hbWUuaWQ7XG4gIH1cblxuICB0aGlzLmxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byBzZXQgY29udGV4dCB0byAnJHtuYW1lIHx8IE5BVElWRV9XSU59JyBmcm9tICcke3RoaXMuY3VyQ29udGV4dCA/IHRoaXMuY3VyQ29udGV4dCA6IE5BVElWRV9XSU59J2ApO1xuXG4gIGlmIChhbHJlYWR5SW5Db250ZXh0KG5hbWUsIHRoaXMuY3VyQ29udGV4dCkgfHwgYWxyZWFkeUluQ29udGV4dChfLnJlcGxhY2UobmFtZSwgV0VCVklFV19CQVNFLCAnJyksIHRoaXMuY3VyQ29udGV4dCkpIHtcbiAgICAvLyBhbHJlYWR5IGluIHRoZSBuYW1lZCBjb250ZXh0LCBubyBuZWVkIHRvIGRvIGFueXRoaW5nXG4gICAgdGhpcy5sb2cuZGVidWcoYEFscmVhZHkgaW4gJyR7bmFtZSB8fCBOQVRJVkVfV0lOfScgY29udGV4dC4gRG9pbmcgbm90aGluZy5gKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGlzTmF0aXZlQ29udGV4dChuYW1lKSkge1xuICAgIC8vIHN3aXRjaGluZyBpbnRvIHRoZSBuYXRpdmUgY29udGV4dFxuICAgIHRoaXMuY3VyQ29udGV4dCA9IG51bGw7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gc3dpdGNoaW5nIGludG8gYSB3ZWJ2aWV3IGNvbnRleHRcblxuICAvLyBpZiBjb250ZXh0cyBoYXZlIG5vdCBhbHJlYWR5IGJlZW4gcmV0cmlldmVkLCBnZXQgdGhlbVxuICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmNvbnRleHRzKSkge1xuICAgIGF3YWl0IHRoaXMuZ2V0Q29udGV4dHMoKTtcbiAgfVxuXG4gIGxldCBjb250ZXh0SWQgPSBfLnJlcGxhY2UobmFtZSwgV0VCVklFV19CQVNFLCAnJyk7XG4gIGlmIChjb250ZXh0SWQgPT09ICcnKSB7XG4gICAgLy8gYWxsb3cgdXNlciB0byBwYXNzIGluIFwiV0VCVklFV1wiIHdpdGhvdXQgYW4gaW5kZXhcbiAgICAvLyB0aGUgc2Vjb25kIGNvbnRleHQgd2lsbCBiZSB0aGUgZmlyc3Qgd2VidmlldyBhc1xuICAgIC8vIHRoZSBmaXJzdCBpcyBhbHdheXMgTkFUSVZFX0FQUFxuICAgIGNvbnRleHRJZCA9IHRoaXMuY29udGV4dHNbMV07XG4gIH1cbiAgaWYgKCFfLmluY2x1ZGVzKHRoaXMuY29udGV4dHMsIGNvbnRleHRJZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vU3VjaENvbnRleHRFcnJvcigpO1xuICB9XG5cbiAgY29uc3Qgb2xkQ29udGV4dCA9IHRoaXMuY3VyQ29udGV4dDtcbiAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5jdXJXaW5kb3dIYW5kbGUgPSBjb250ZXh0SWQ7XG5cbiAgLy8gYGNvbnRleHRJZGAgd2lsbCBiZSBpbiB0aGUgZm9ybSBvZiBgYXBwSWQucGFnZUlkYCBpbiB0aGlzIGNhc2VcbiAgY29uc3QgW2FwcElkS2V5LCBwYWdlSWRLZXldID0gXy5tYXAoY29udGV4dElkLnNwbGl0KCcuJyksIChpZCkgPT4gcGFyc2VJbnQoaWQsIDEwKSk7XG4gIHRyeSB7XG4gICAgdGhpcy5zZWxlY3RpbmdOZXdQYWdlID0gdHJ1ZTtcbiAgICBhd2FpdCB0aGlzLnJlbW90ZS5zZWxlY3RQYWdlKGFwcElkS2V5LCBwYWdlSWRLZXksIHNraXBSZWFkeUNoZWNrKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5jdXJXaW5kb3dIYW5kbGUgPSBvbGRDb250ZXh0O1xuICAgIHRocm93IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0aGlzLnNlbGVjdGluZ05ld1BhZ2UgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIGF0dGVtcHQgdG8gc3RhcnQgcGVyZm9ybWFuY2UgbG9nZ2luZywgaWYgcmVxdWVzdGVkXG4gIGlmICh0aGlzLm9wdHMuZW5hYmxlUGVyZm9ybWFuY2VMb2dnaW5nICYmIHRoaXMucmVtb3RlKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoYFN0YXJ0aW5nIHBlcmZvcm1hbmNlIGxvZyBvbiAnJHt0aGlzLmN1ckNvbnRleHR9J2ApO1xuICAgIHRoaXMubG9ncy5wZXJmb3JtYW5jZSA9IG5ldyBJT1NQZXJmb3JtYW5jZUxvZyh0aGlzLnJlbW90ZSk7XG4gICAgYXdhaXQgdGhpcy5sb2dzLnBlcmZvcm1hbmNlLnN0YXJ0Q2FwdHVyZSgpO1xuICB9XG5cbiAgLy8gc3RhcnQgc2FmYXJpIGxvZ2dpbmcgaWYgdGhlIGxvZ3MgaGFuZGxlcnMgYXJlIGFjdGl2ZVxuICBpZiAobmFtZSAmJiBuYW1lICE9PSBOQVRJVkVfV0lOICYmIHRoaXMubG9ncykge1xuICAgIGlmICh0aGlzLmxvZ3Muc2FmYXJpQ29uc29sZSkge1xuICAgICAgYXdhaXQgdGhpcy5yZW1vdGUuc3RhcnRDb25zb2xlKHRoaXMubG9ncy5zYWZhcmlDb25zb2xlLmFkZExvZ0xpbmUuYmluZCh0aGlzLmxvZ3Muc2FmYXJpQ29uc29sZSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5sb2dzLnNhZmFyaU5ldHdvcmspIHtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLnN0YXJ0TmV0d29yayh0aGlzLmxvZ3Muc2FmYXJpTmV0d29yay5hZGRMb2dMaW5lLmJpbmQodGhpcy5sb2dzLnNhZmFyaU5ldHdvcmspKTtcbiAgICB9XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuY29ubmVjdFRvUmVtb3RlRGVidWdnZXIgPSBhc3luYyBmdW5jdGlvbiBjb25uZWN0VG9SZW1vdGVEZWJ1Z2dlciAoKSB7XG4gIHRoaXMucmVtb3RlID0gYXdhaXQgdGhpcy5nZXROZXdSZW1vdGVEZWJ1Z2dlcigpO1xuXG4gIHRoaXMucmVtb3RlLm9uKFJlbW90ZURlYnVnZ2VyLkVWRU5UX1BBR0VfQ0hBTkdFLCB0aGlzLm9uUGFnZUNoYW5nZS5iaW5kKHRoaXMpKTtcbiAgdGhpcy5yZW1vdGUub24oUmVtb3RlRGVidWdnZXIuRVZFTlRfRlJBTUVTX0RFVEFDSEVELCAoKSA9PiB7XG4gICAgaWYgKCFfLmlzRW1wdHkodGhpcy5jdXJXZWJGcmFtZXMpKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2xlYXJpbmcgJHt1dGlsLnBsdXJhbGl6ZSgnZnJhbWUnLCB0aGlzLmN1cldlYkZyYW1lcy5sZW5ndGgsIHRydWUpfTogJHt0aGlzLmN1cldlYkZyYW1lcy5qb2luKCcsICcpfWApO1xuICAgIH1cbiAgICB0aGlzLmN1cldlYkZyYW1lcyA9IFtdO1xuICB9KTtcblxuICBhd2FpdCB0aGlzLnJlbW90ZS5jb25uZWN0KHRoaXMub3B0cy53ZWJ2aWV3Q29ubmVjdFRpbWVvdXQpO1xufTtcblxuZXh0ZW5zaW9ucy5saXN0V2ViRnJhbWVzID0gYXN5bmMgZnVuY3Rpb24gbGlzdFdlYkZyYW1lcyAodXNlVXJsID0gdHJ1ZSkge1xuICB1c2VVcmwgPSB1c2VVcmwgJiYgIXRoaXMuaXNSZWFsRGV2aWNlKCkgJiYgISF0aGlzLmdldEN1cnJlbnRVcmwoKTtcbiAgdGhpcy5sb2cuZGVidWcoYFNlbGVjdGluZyBieSB1cmw6ICR7dXNlVXJsfSAke3VzZVVybCA/IGAoZXhwZWN0ZWQgdXJsOiAnJHt0aGlzLmdldEN1cnJlbnRVcmwoKX0nKWAgOiAnJ31gKTtcblxuICBjb25zdCBjdXJyZW50VXJsID0gdXNlVXJsID8gdGhpcy5nZXRDdXJyZW50VXJsKCkgOiB1bmRlZmluZWQ7XG4gIGxldCBwYWdlQXJyYXkgPSBbXTtcbiAgY29uc3QgZ2V0V2Vidmlld1BhZ2VzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZW1vdGUuc2VsZWN0QXBwKGN1cnJlbnRVcmwsIHRoaXMub3B0cy53ZWJ2aWV3Q29ubmVjdFJldHJpZXMsIHRoaXMub3B0cy5pZ25vcmVBYm91dEJsYW5rVXJsKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBObyBhdmFpbGFibGUgd2ViIHBhZ2VzOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICBpZiAodGhpcy5yZW1vdGUgJiYgdGhpcy5yZW1vdGUuYXBwSWRLZXkpIHtcbiAgICAvLyBhbHJlYWR5IGNvbm5lY3RlZFxuICAgIHBhZ2VBcnJheSA9IGF3YWl0IGdldFdlYnZpZXdQYWdlcygpO1xuICB9IGVsc2Uge1xuICAgIGlmICghdGhpcy5yZW1vdGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdFRvUmVtb3RlRGVidWdnZXIoKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5yZW1vdGUuc2V0Q29ubmVjdGlvbktleSgpO1xuXG4gICAgcGFnZUFycmF5ID0gYXdhaXQgZ2V0V2Vidmlld1BhZ2VzKCk7XG5cbiAgICBjb25zdCBhbGVydEVycm9yTXNnID0gJ0Nsb3NlIGFsZXJ0IGZhaWxlZC4gUmV0cnkuJztcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmV0cnlJbnRlcnZhbCg2LCAxMDAwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICghYXdhaXQgdGhpcy5jbG9zZUFsZXJ0QmVmb3JlVGVzdCgpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGFsZXJ0RXJyb3JNc2cpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGlmIHRoZSBsb29wIHRvIGNsb3NlIGFsZXJ0cyBmYWlsZWQgdG8gZGlzbWlzcywgaWdub3JlLFxuICAgICAgLy8gb3RoZXJ3aXNlIGxvZyBhbmQgdGhyb3cgdGhlIGVycm9yXG4gICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09IGFsZXJ0RXJyb3JNc2cpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChwYWdlQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gd2UgaGF2ZSBubyB3ZWIgZnJhbWVzLCBidXQgY29udGludWUgYW55d2F5XG4gICAgdGhpcy5sb2cuZGVidWcoJ05vIHdlYiBmcmFtZXMgZm91bmQuJyk7XG4gIH1cbiAgcmV0dXJuIHBhZ2VBcnJheTtcbn07XG5cbmNvbW1hbmRzLmdldENvbnRleHRzID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29udGV4dHMgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnR2V0dGluZyBsaXN0IG9mIGF2YWlsYWJsZSBjb250ZXh0cycpO1xuICBjb25zdCBjb250ZXh0cyA9IGF3YWl0IHRoaXMuZ2V0Q29udGV4dHNBbmRWaWV3cyhmYWxzZSk7XG5cbiAgY29uc3QgbWFwRm4gPSB0aGlzLm9wdHMuZnVsbENvbnRleHRMaXN0XG4gICAgPyBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGNvbnRleHQuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgdGl0bGU6IGNvbnRleHQudmlldy50aXRsZSxcbiAgICAgICAgdXJsOiBjb250ZXh0LnZpZXcudXJsLFxuICAgICAgICBidW5kbGVJZDogY29udGV4dC52aWV3LmJ1bmRsZUlkLFxuICAgICAgfTtcbiAgICB9XG4gICAgOiAoY29udGV4dCkgPT4gY29udGV4dC5pZC50b1N0cmluZygpO1xuICByZXR1cm4gY29udGV4dHMubWFwKG1hcEZuKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ29udGV4dFxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZCAtIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb250ZXh0LiBUaGUgbmF0aXZlIGNvbnRleHRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlICdOQVRJVkVfQVBQJyBhbmQgdGhlIHdlYnZpZXdzIHdpbGwgYmVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAnV0VCVklFV194eHgnXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHRpdGxlIC0gVGhlIHRpdGxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgd2VidmlldyBjb250ZW50XG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVybCAtIFRoZSB1cmwgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWJ2aWV3IGNvbnRlbnRcbiAqL1xuXG4vKipcbiAqIEdldCB0aGUgY29udGV4dHMgYXZhaWxhYmxlLCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1cmwgYW5kIHRpdGxlIG9mIGVhY2hcbiAqIHdlYnZpZXdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgc2V0LCB3aGljaCBjYW4gaW5jbHVkZSBgd2FpdEZvcldlYnZpZXdNc2AgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGUgcGVyaW9kIHRvIHBvbGwgZm9yIGF2YWlsYWJsZSB3ZWJ2aWV3c1xuICogQHJldHVybnMge0FycmF5fSBMaXN0IG9mIENvbnRleHQgb2JqZWN0c1xuICovXG5leHRlbnNpb25zLm1vYmlsZUdldENvbnRleHRzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0Q29udGV4dHMgKG9wdHMgPSB7fSkge1xuICBsZXQge1xuICAgIHdhaXRGb3JXZWJ2aWV3TXMgPSAwLFxuICB9ID0gb3B0cztcblxuICAvLyBtYWtlIHN1cmUgaXQgaXMgYSBudW1iZXIsIHNvIHRoZSBkdXJhdGlvbiBjaGVjayB3b3JrcyBwcm9wZXJseVxuICBpZiAoIV8uaXNOdW1iZXIod2FpdEZvcldlYnZpZXdNcykpIHtcbiAgICB3YWl0Rm9yV2Vidmlld01zID0gcGFyc2VJbnQod2FpdEZvcldlYnZpZXdNcywgMTApO1xuICAgIGlmIChpc05hTih3YWl0Rm9yV2Vidmlld01zKSkge1xuICAgICAgd2FpdEZvcldlYnZpZXdNcyA9IDA7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY3VyT3B0ID0gdGhpcy5vcHRzLmZ1bGxDb250ZXh0TGlzdDtcbiAgdGhpcy5vcHRzLmZ1bGxDb250ZXh0TGlzdCA9IHRydWU7XG5cbiAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgdHJ5IHtcbiAgICBsZXQgY29udGV4dHM7XG4gICAgZG8ge1xuICAgICAgY29udGV4dHMgPSBhd2FpdCB0aGlzLmdldENvbnRleHRzKCk7XG5cbiAgICAgIGlmIChjb250ZXh0cy5sZW5ndGggPj0gMikge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgRm91bmQgd2VidmlldyBjb250ZXh0IGFmdGVyICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgICAgIHJldHVybiBjb250ZXh0cztcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKGBObyB3ZWJ2aWV3cyBmb3VuZCBpbiAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIH0gd2hpbGUgKHRpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMgPCB3YWl0Rm9yV2Vidmlld01zKTtcbiAgICByZXR1cm4gY29udGV4dHM7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gcmVzZXQgdGhlIG9wdGlvbiBzbyB0aGVyZSBhcmUgbm8gc2lkZSBlZmZlY3RzXG4gICAgdGhpcy5vcHRzLmZ1bGxDb250ZXh0TGlzdCA9IGN1ck9wdDtcbiAgfVxufTtcblxuY29tbWFuZHMuc2V0V2luZG93ID0gYXN5bmMgZnVuY3Rpb24gc2V0V2luZG93IChuYW1lLCBza2lwUmVhZHlDaGVjaykge1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuc2V0Q29udGV4dChuYW1lLCBfLm5vb3AsIHNraXBSZWFkeUNoZWNrKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gdHJhbnNsYXRlIHRoZSBlcnJvciBpbiB0ZXJtcyBvZiB3aW5kb3dzXG4gICAgdGhyb3cgaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuTm9TdWNoQ29udGV4dEVycm9yKVxuICAgICAgPyBuZXcgZXJyb3JzLk5vU3VjaFdpbmRvd0Vycm9yKClcbiAgICAgIDogZXJyO1xuICB9XG59O1xuXG5jb21tYW5kcy5nZXRXaW5kb3dIYW5kbGUgPSBhc3luYyBmdW5jdGlvbiBnZXRXaW5kb3dIYW5kbGUgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbiAgdGhpcy5sb2cuZGVidWcoYEdldHRpbmcgY3VycmVudCB3aW5kb3cgaGFuZGxlYCk7XG4gIHJldHVybiB0aGlzLmN1ckNvbnRleHQ7XG59O1xuXG5jb21tYW5kcy5nZXRXaW5kb3dIYW5kbGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93SGFuZGxlcyAoKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKCdHZXR0aW5nIGxpc3Qgb2YgYXZhaWxhYmxlIHdpbmRvdyBoYW5kbGVzJyk7XG4gIGNvbnN0IGNvbnRleHRzID0gYXdhaXQgdGhpcy5nZXRDb250ZXh0c0FuZFZpZXdzKGZhbHNlKTtcbiAgcmV0dXJuIGNvbnRleHRzXG4gICAgLy8gZ2V0IHJpZCBvZiB0aGUgbmF0aXZlIGFwcCBjb250ZXh0XG4gICAgLmZpbHRlcigoY29udGV4dCkgPT4gY29udGV4dC5pZCAhPT0gTkFUSVZFX1dJTilcbiAgICAvLyBnZXQgdGhlIGBhcHAuaWRgIGZvcm1hdCBleHBlY3RlZFxuICAgIC5tYXAoKGNvbnRleHQpID0+IGNvbnRleHQudmlldy5pZC50b1N0cmluZygpKTtcbn07XG5cbmV4dGVuc2lvbnMub25QYWdlQ2hhbmdlID0gYXN5bmMgZnVuY3Rpb24gb25QYWdlQ2hhbmdlIChwYWdlQ2hhbmdlTm90aWZpY2F0aW9uKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBSZW1vdGUgZGVidWdnZXIgbm90aWZpZWQgdXMgb2YgYSBuZXcgcGFnZSBsaXN0aW5nOiAke0pTT04uc3RyaW5naWZ5KHBhZ2VDaGFuZ2VOb3RpZmljYXRpb24pfWApO1xuICBpZiAodGhpcy5zZWxlY3RpbmdOZXdQYWdlKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1dlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHNlbGVjdGluZyBhIHBhZ2UsIGlnbm9yaW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghdGhpcy5yZW1vdGUgfHwgIXRoaXMucmVtb3RlLmlzQ29ubmVjdGVkKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1dlIGhhdmUgbm90IHlldCBjb25uZWN0ZWQsIGlnbm9yaW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge2FwcElkS2V5LCBwYWdlQXJyYXl9ID0gcGFnZUNoYW5nZU5vdGlmaWNhdGlvbjtcblxuICBsZXQgbmV3SWRzID0gW107XG4gIGxldCBuZXdQYWdlcyA9IFtdO1xuICBsZXQga2V5SWQgPSBudWxsO1xuXG4gIC8vIENoZWNrcyBpZiBhIFVSTCBpcyBibGFja2xpc3RlZCBpbiB0aGUgJ3NhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcycgY2FwYWJpbGl0eVxuICBmdW5jdGlvbiBpc1VybElnbm9yZWQgKHVybCwgc2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzKSB7XG4gICAgY29uc3QgaWdub3JlZEhvc3RzID0gKHNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lcyB8fCAnJylcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKChiKSA9PiBiLnRyaW0oKSlcbiAgICAgIC5maWx0ZXIoKGIpID0+ICFfLmlzRW1wdHkoYikpO1xuICAgIGZvciAoY29uc3QgaWdub3JlZEhvc3Qgb2YgaWdub3JlZEhvc3RzKSB7XG4gICAgICBpZiAoaWdub3JlZEhvc3QgPT09ICdhYm91dDpibGFuaycgJiYgdXJsID09PSAnYWJvdXQ6YmxhbmsnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBob3N0bmFtZSA9IG5ldyBVUkwodXJsKS5ob3N0bmFtZTtcbiAgICAgICAgICBpZiAoaG9zdG5hbWUgPT09IGlnbm9yZWRIb3N0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgICAgIC8vIGRvIG5vdGhpbmcgaWYgaW52YWxpZCBVUkxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhZ2Ugb2YgcGFnZUFycmF5KSB7XG4gICAgY29uc3QgaWQgPSBwYWdlLmlkLnRvU3RyaW5nKCk7XG4gICAgbmV3SWRzLnB1c2goaWQpO1xuICAgIGlmIChwYWdlLmlzS2V5KSB7XG4gICAgICBrZXlJZCA9IGlkO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0SWQgPSBgJHthcHBJZEtleX0uJHtpZH1gO1xuXG4gICAgLy8gYWRkIGlmIHRoaXMgaXMgYSBuZXcgcGFnZVxuICAgIGlmICghXy5pbmNsdWRlcyh0aGlzLmNvbnRleHRzLCBjb250ZXh0SWQpKSB7XG4gICAgICBpZiAoaXNVcmxJZ25vcmVkKHBhZ2UudXJsLCB0aGlzLm9wdHMuc2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzKSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBOb3QgdHJhY2tpbmcgJyR7cGFnZS51cmx9JyBwYWdlIGJlY2F1c2UgaXQgaXMgYmxhY2tsaXN0ZWQuIGAgK1xuICAgICAgICAgIGAnc2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzJz0ke3RoaXMub3B0cy5zYWZhcmlJZ25vcmVXZWJIb3N0bmFtZXN9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdQYWdlcy5wdXNoKGlkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0cy5wdXNoKGNvbnRleHRJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFrZXlJZCkge1xuICAgIC8vIGlmIHRoZXJlIGlzIG5vIGtleSBpZCwgcHVsbCB0aGUgZmlyc3QgaWQgZnJvbSB0aGUgcGFnZSBhcnJheSBhbmQgdXNlIHRoYXRcbiAgICAvLyBhcyBhIHN0YW5kIGluXG4gICAgdGhpcy5sb2cuZGVidWcoJ05vIGtleSBpZCBmb3VuZC4gQ2hvb3NpbmcgZmlyc3QgaWQgZnJvbSBwYWdlIGFycmF5Jyk7XG4gICAga2V5SWQgPSBuZXdJZHNbMF0gfHwgbnVsbDtcbiAgfVxuXG4gIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLmN1ckNvbnRleHQpKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1dlIGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSB3aW5kb3cgc2V0IHlldCwgaWdub3JpbmcnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBbY3VyQXBwSWRLZXksIGN1clBhZ2VJZEtleV0gPSB0aGlzLmN1ckNvbnRleHQuc3BsaXQoJy4nKTtcblxuICBpZiAoY3VyQXBwSWRLZXkgIT09IGFwcElkS2V5KSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1BhZ2UgY2hhbmdlIG5vdCByZWZlcnJpbmcgdG8gY3VycmVudGx5IHNlbGVjdGVkIGFwcCwgaWdub3JpbmcuJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IG5ld1BhZ2UgPSBudWxsO1xuICBpZiAobmV3UGFnZXMubGVuZ3RoKSB7XG4gICAgbmV3UGFnZSA9IF8ubGFzdChuZXdQYWdlcyk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFdlIGhhdmUgbmV3IHBhZ2VzLCBzZWxlY3RpbmcgcGFnZSAnJHtuZXdQYWdlfSdgKTtcbiAgfSBlbHNlIGlmICghXy5pbmNsdWRlcyhuZXdJZHMsIGN1clBhZ2VJZEtleSkpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnTmV3IHBhZ2UgbGlzdGluZyBmcm9tIHJlbW90ZSBkZWJ1Z2dlciBkb2VzIG5vdCBjb250YWluICcgK1xuICAgICAgICAgICAgICAgICAnY3VycmVudCB3aW5kb3c7IGFzc3VtaW5nIGl0IGlzIGNsb3NlZCcpO1xuICAgIGlmICghdXRpbC5oYXNWYWx1ZShrZXlJZCkpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdEbyBub3QgaGF2ZSBvdXIgY3VycmVudCB3aW5kb3cgYW55bW9yZSwgYW5kIHRoZXJlICcgK1xuICAgICAgICAgICAgICAgICAgICdhcmUgbm90IGFueSBtb3JlIHRvIGxvYWQhIERvaW5nIG5vdGhpbmcuLi4nKTtcbiAgICAgIHRoaXMuc2V0Q3VycmVudFVybCh1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKGBEZWJ1Z2dlciBhbHJlYWR5IHNlbGVjdGVkIHBhZ2UgJyR7a2V5SWR9JywgYCArXG4gICAgICAgICAgICAgICAgIGBjb25maXJtaW5nIHRoYXQgY2hvaWNlLmApO1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IGAke2FwcElkS2V5fS4ke2tleUlkfWA7XG4gICAgbmV3UGFnZSA9IGtleUlkO1xuICB9IGVsc2Uge1xuICAgIC8vIGF0IHRoaXMgcG9pbnQsIHRoZXJlIGFyZSBubyBuZXcgcGFnZXMsIGFuZCB0aGUgY3VycmVudCBwYWdlIHN0aWxsIGV4aXN0c1xuICAgIHRoaXMubG9nLmRlYnVnKCdDaGVja2luZyBpZiBwYWdlIG5lZWRzIHRvIGxvYWQnKTtcbiAgICAvLyBJZiBhIHdpbmRvdyBuYXZpZ2F0ZXMgdG8gYW4gYW5jaG9yIGl0IGRvZXNuJ3QgYWx3YXlzIGZpcmUgYSBwYWdlXG4gICAgLy8gY2FsbGJhY2sgZXZlbnQuIExldCdzIGNoZWNrIGlmIHdlIHdvdW5kIHVwIGluIHN1Y2ggYSBzaXR1YXRpb24uXG4gICAgY29uc3QgbmVlZHNQYWdlTG9hZCA9ICgoKSA9PiB7XG4gICAgICAvLyBuZWVkIHRvIG1hcCB0aGUgcGFnZSBpZHMgdG8gY29udGV4dCBpZHNcbiAgICAgIGNvbnN0IGNvbnRleHRBcnJheSA9IF8ubWFwKHBhZ2VBcnJheSwgKHBhZ2UpID0+IGAke2FwcElkS2V5fS4ke3BhZ2UuaWR9YCk7XG4gICAgICAvLyBjaGVjayBpZiB0aGUgY3VycmVudCBjb250ZXh0IGV4aXN0cyBpbiBib3RoIG91ciByZWNvcmRlZCBjb250ZXh0cyxcbiAgICAgIC8vIGFuZCB0aGUgcGFnZSBhcnJheVxuICAgICAgcmV0dXJuICFfLmlzRXF1YWwoXy5maW5kKHRoaXMuY29udGV4dHMsIHRoaXMuY3VyQ29udGV4dCksIF8uZmluZChjb250ZXh0QXJyYXksIHRoaXMuY3VyQ29udGV4dCkpO1xuICAgIH0pKCk7XG5cbiAgICBpZiAobmVlZHNQYWdlTG9hZCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ1BhZ2UgbG9hZCBuZWVkZWQuIExvYWRpbmcuLi4nKTtcbiAgICAgIGF3YWl0IHRoaXMucmVtb3RlLnBhZ2VMb2FkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2cuZGVidWcoJ05ldyBwYWdlIGxpc3RpbmcgaXMgc2FtZSBhcyBvbGQsIGRvaW5nIG5vdGhpbmcnKTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBwYWdlIGxpc3RpbmcgaXNuJ3QgaW5kaWNhdGluZyBhIHJlZGlyZWN0XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMuY3VyQ29udGV4dCkpIHtcbiAgICBsZXQgY3VycmVudFBhZ2VJZCA9IHBhcnNlSW50KF8ubGFzdCh0aGlzLmN1ckNvbnRleHQuc3BsaXQoJy4nKSksIDEwKTtcbiAgICBsZXQgcGFnZSA9IF8uZmluZChwYWdlQXJyYXksIChwKSA9PiBwYXJzZUludChwLmlkLCAxMCkgPT09IGN1cnJlbnRQYWdlSWQpO1xuICAgIGlmIChwYWdlICYmIHBhZ2UudXJsICE9PSB0aGlzLmdldEN1cnJlbnRVcmwoKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFJlZGlyZWN0ZWQgZnJvbSAnJHt0aGlzLmdldEN1cnJlbnRVcmwoKX0nIHRvICcke3BhZ2UudXJsfSdgKTtcbiAgICAgIHRoaXMuc2V0Q3VycmVudFVybChwYWdlLnVybCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUobmV3UGFnZSkpIHtcbiAgICB0aGlzLnNlbGVjdGluZ05ld1BhZ2UgPSB0cnVlO1xuICAgIGNvbnN0IG9sZENvbnRleHQgPSB0aGlzLmN1ckNvbnRleHQ7XG4gICAgdGhpcy5jdXJDb250ZXh0ID0gYCR7YXBwSWRLZXl9LiR7bmV3UGFnZX1gO1xuICAgIC8vIGRvIG5vdCB3YWl0LCBhcyB0aGlzIGNhbiB0YWtlIGEgbG9uZyB0aW1lLCBhbmQgdGhlIHJlc3BvbnNlIGlzIG5vdCBuZWNlc3NhcnlcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzLCBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuXG4gICAgdGhpcy5yZW1vdGUuc2VsZWN0UGFnZShhcHBJZEtleSwgcGFyc2VJbnQobmV3UGFnZSwgMTApKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICB0aGlzLmxvZy53YXJuKGBGYWlsZWQgdG8gc2VsZWN0IHBhZ2U6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB0aGlzLmN1ckNvbnRleHQgPSBvbGRDb250ZXh0O1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0aW5nTmV3UGFnZSA9IGZhbHNlO1xuICB9XG4gIHRoaXMud2luZG93SGFuZGxlQ2FjaGUgPSBwYWdlQXJyYXk7XG59O1xuXG5cbk9iamVjdC5hc3NpZ24oY29tbWFuZHMsIGV4dGVuc2lvbnMsIGhlbHBlcnMpO1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLFlBQW5CO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFNBQXBCO0FBQ0EsTUFBTUMsWUFBWSxHQUFJLEdBQUVELFdBQVksR0FBcEM7QUFFQSxNQUFNRSxRQUFRLEdBQUcsRUFBakI7QUFBQSxNQUFxQkMsT0FBTyxHQUFHLEVBQS9CO0FBQUEsTUFBbUNDLFVBQVUsR0FBRyxFQUFoRDs7QUFHQUYsUUFBUSxDQUFDRyxpQkFBVCxHQUE2QixlQUFlQSxpQkFBZixHQUFvQztFQUMvRCxJQUFJLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxLQUFvQlAsVUFBM0MsRUFBdUQ7SUFDckQsT0FBUSxHQUFFRSxZQUFhLEdBQUUsS0FBS0ssVUFBVyxFQUF6QztFQUNEOztFQUNELE9BQU9QLFVBQVA7QUFDRCxDQUxEOztBQU9BSyxVQUFVLENBQUNHLG1CQUFYLEdBQWlDLGVBQWVBLG1CQUFmLENBQW9DQyxNQUFNLEdBQUcsSUFBN0MsRUFBbUQ7RUFDbEYsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWUsK0JBQWY7RUFDQSxJQUFJQyxRQUFRLEdBQUcsTUFBTSxLQUFLQyxhQUFMLENBQW1CSixNQUFuQixDQUFyQjtFQUVBLElBQUlLLElBQUksR0FBRyxDQUFDO0lBQUNDLEVBQUUsRUFBRWYsVUFBTDtJQUFpQmdCLElBQUksRUFBRTtFQUF2QixDQUFELENBQVg7RUFDQSxLQUFLQyxRQUFMLEdBQWdCLENBQUNqQixVQUFELENBQWhCOztFQUNBLEtBQUssSUFBSWdCLElBQVQsSUFBaUJKLFFBQWpCLEVBQTJCO0lBQ3pCRSxJQUFJLENBQUNJLElBQUwsQ0FBVTtNQUFDSCxFQUFFLEVBQUcsR0FBRWIsWUFBYSxHQUFFYyxJQUFJLENBQUNELEVBQUcsRUFBL0I7TUFBa0NDO0lBQWxDLENBQVY7SUFDQSxLQUFLQyxRQUFMLENBQWNDLElBQWQsQ0FBbUJGLElBQUksQ0FBQ0QsRUFBTCxDQUFRSSxRQUFSLEVBQW5CO0VBQ0Q7O0VBQ0QsT0FBT0wsSUFBUDtBQUNELENBWEQ7O0FBZ0JBVCxVQUFVLENBQUNlLFlBQVgsR0FBMEIsU0FBU0EsWUFBVCxHQUF5QjtFQUNqRCxPQUFPQyxVQUFVLENBQUMsS0FBS0MsYUFBTixDQUFWLElBQWtDLEdBQWxDLElBQ0xELFVBQVUsQ0FBQyxLQUFLRSxJQUFMLENBQVVDLGVBQVgsQ0FBVixJQUF5QyxHQURwQyxJQUVMLENBQUMsS0FBS0MsWUFBTCxFQUZJLElBR0wsS0FBS0YsSUFBTCxDQUFVRyxNQUhaO0FBSUQsQ0FMRDs7QUFPQXJCLFVBQVUsQ0FBQ3NCLGVBQVgsR0FBNkIsZUFBZUEsZUFBZixHQUFrQztFQUM3RCxJQUFJQyxPQUFPLEdBQUcsS0FBS0wsSUFBTCxDQUFVSyxPQUFWLEdBQW9CLEtBQUtMLElBQUwsQ0FBVUssT0FBOUIsR0FBd0MsV0FBdEQ7RUFDQSxLQUFLQyxhQUFMLENBQW1CLEtBQUtDLElBQUwsQ0FBVUMsZ0JBQVYsSUFBK0IsVUFBU0gsT0FBUSxJQUFHLEtBQUtMLElBQUwsQ0FBVVMsSUFBSyxVQUFyRjtFQUVBLElBQUlDLEtBQUssR0FBRyxDQUFaO0VBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQWxCOztFQUNBLElBQUlDLFFBQVEsR0FBRyxZQUFZO0lBQ3pCLElBQUlDLFVBQVUsR0FBRyxLQUFLQyxjQUF0QjtJQUNBLEtBQUtBLGNBQUwsR0FBc0IsSUFBdEI7SUFJQSxJQUFJQyxFQUFFLEdBQUcsTUFBTSxJQUFBQyx1QkFBQSxFQUFjLENBQWQsRUFBaUIsSUFBakIsRUFBdUIsWUFBWSxNQUFNLEtBQUtDLFdBQUwsQ0FBaUIsa0JBQWpCLEVBQXFDLEtBQXJDLENBQXpDLENBQWY7SUFDQSxLQUFLSCxjQUFMLEdBQXNCRCxVQUF0Qjs7SUFFQSxJQUFJO01BQ0YsTUFBTSxLQUFLSyxTQUFMLENBQWVILEVBQUUsQ0FBQ0ksT0FBbEIsQ0FBTjtJQUNELENBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7TUFDWixJQUFJQyxlQUFBLENBQUVDLFFBQUYsQ0FBV0YsR0FBRyxDQUFDRyxPQUFmLEVBQXdCLHFCQUF4QixDQUFKLEVBQW9EO1FBQ2xELElBQUliLEtBQUssTUFBTUMsU0FBZixFQUEwQixNQUFNUyxHQUFOO1FBSTFCLElBQUlJLGFBQWEsR0FBRyxNQUFNLEtBQUtQLFdBQUwsQ0FBaUIsT0FBakIsRUFBMEIscURBQTFCLENBQTFCO1FBQ0EsTUFBTSxLQUFLQyxTQUFMLENBQWVNLGFBQWEsQ0FBQ0wsT0FBN0IsQ0FBTjtRQUNBLE9BQU8sTUFBTVAsUUFBUSxFQUFyQjtNQUNELENBUkQsTUFRTztRQUNMLE1BQU1RLEdBQU47TUFDRDtJQUNGOztJQUdELElBQUk7TUFDRixJQUFJTCxFQUFFLEdBQUcsTUFBTSxLQUFLRSxXQUFMLENBQWlCLFlBQWpCLEVBQStCLDBCQUEvQixDQUFmO01BQ0EsTUFBTSxLQUFLUSxpQkFBTCxDQUF1QixLQUFLQyxhQUFMLEVBQXZCLEVBQTZDWCxFQUE3QyxDQUFOO0lBQ0QsQ0FIRCxDQUdFLE9BQU9LLEdBQVAsRUFBWTtNQUdaLElBQUlWLEtBQUssTUFBTUMsU0FBZixFQUEwQixNQUFNUyxHQUFOO01BQzFCLE9BQU8sTUFBTVIsUUFBUSxFQUFyQjtJQUNEOztJQUdELElBQUk7TUFDRkcsRUFBRSxHQUFHLE1BQU0sS0FBS0UsV0FBTCxDQUFpQixrQkFBakIsRUFBcUMsSUFBckMsQ0FBWDtNQUNBLE1BQU0sS0FBS0MsU0FBTCxDQUFlSCxFQUFFLENBQUNJLE9BQWxCLENBQU47SUFDRCxDQUhELENBR0UsT0FBT0MsR0FBUCxFQUFZO01BQ1osSUFBSUMsZUFBQSxDQUFFQyxRQUFGLENBQVdGLEdBQUcsQ0FBQ0csT0FBZixFQUF3QixxQkFBeEIsQ0FBSixFQUFvRDtRQUNsRCxLQUFLcEMsR0FBTCxDQUFTd0MsS0FBVCxDQUFlLHFFQUNiLCtDQURGO01BRUQ7O01BQ0QsTUFBTVAsR0FBTjtJQUNEOztJQUNELE1BQU0sS0FBS1Esa0JBQUwsQ0FBd0JDLFNBQXhCLEVBQW1DLElBQUlDLE1BQUosQ0FBVyxLQUFLSixhQUFMLEVBQVgsRUFBaUMsR0FBakMsQ0FBbkMsQ0FBTjtJQUdBLE1BQU0sS0FBS0ssTUFBTCxDQUFZQyxVQUFaLEVBQU47RUFDRCxDQW5ERDs7RUFvREEsTUFBTXBCLFFBQVEsRUFBZDtBQUNELENBM0REOztBQTZEQTlCLFVBQVUsQ0FBQ21ELHlCQUFYLEdBQXVDLGVBQWVBLHlCQUFmLEdBQTRDO0VBQ2pGLEtBQUs5QyxHQUFMLENBQVNDLEtBQVQsQ0FBZSx3RUFBZjtFQUNBLElBQUl5QixVQUFVLEdBQUcsS0FBS0MsY0FBdEI7RUFDQSxLQUFLQSxjQUFMLEdBQXNCLElBQXRCO0VBRUEsSUFBSUMsRUFBSjs7RUFDQSxJQUFJO0lBQ0ZBLEVBQUUsR0FBRyxNQUFNLEtBQUtFLFdBQUwsQ0FBaUIsT0FBakIsRUFBMEIseURBQTFCLENBQVg7RUFDRCxDQUZELENBRUUsT0FBT0csR0FBUCxFQUFZO0lBQ1osSUFBSWMsR0FBRyxHQUFHLHlEQUNBLHFEQURWO0lBRUEsS0FBSy9DLEdBQUwsQ0FBU3dDLEtBQVQsQ0FBZU8sR0FBZjtJQUNBLEtBQUtwQixjQUFMLEdBQXNCRCxVQUF0QjtJQUNBLE9BQU8sTUFBTSxLQUFLZSxrQkFBTCxDQUF3QixLQUF4QixDQUFiO0VBQ0Q7O0VBQ0QsS0FBS2QsY0FBTCxHQUFzQkQsVUFBdEI7O0VBQ0EsSUFBSTtJQUNGLE1BQU0sS0FBS0ssU0FBTCxDQUFlSCxFQUFFLENBQUNJLE9BQWxCLENBQU47RUFDRCxDQUZELENBRUUsT0FBT0MsR0FBUCxFQUFZO0lBQ1osSUFBSWMsR0FBRyxHQUFHLGlEQUNBLHFEQURWO0lBRUEsS0FBSy9DLEdBQUwsQ0FBU3dDLEtBQVQsQ0FBZU8sR0FBZjtFQUNEOztFQUNELE1BQU0sS0FBS04sa0JBQUwsQ0FBd0IsUUFBeEIsQ0FBTjtBQUNELENBeEJEOztBQTBCQTlDLFVBQVUsQ0FBQzhDLGtCQUFYLEdBQWdDLGVBQWVBLGtCQUFmLENBQW1DTyxVQUFuQyxFQUErQ0MsU0FBL0MsRUFBMEQ7RUFDeEYsS0FBS2pELEdBQUwsQ0FBU0MsS0FBVCxDQUFlLDRDQUFmO0VBQ0EsSUFBSWlELEtBQUssR0FBR0MsSUFBSSxDQUFDQyxHQUFMLEVBQVo7RUFDQSxJQUFJQyxRQUFRLEdBQUcsR0FBZjs7RUFDQSxJQUFJQyxXQUFXLEdBQUcsWUFBWTtJQUM1QixJQUFJQyxHQUFKOztJQUNBLElBQUk7TUFDRkEsR0FBRyxHQUFHLE1BQU0sS0FBS0MsK0JBQUwsQ0FBcUNSLFVBQVUsSUFBSUMsU0FBbkQsQ0FBWjtJQUNELENBRkQsQ0FFRSxPQUFPaEIsR0FBUCxFQUFZO01BQ1osSUFBSSxDQUFDQSxHQUFHLENBQUNHLE9BQUosQ0FBWUQsUUFBWixDQUFxQix3Q0FBckIsQ0FBTCxFQUFxRTtRQUNuRSxNQUFNSyxLQUFLLEdBQUcsSUFBSWlCLEtBQUosQ0FBVyx1Q0FBc0N4QixHQUFHLENBQUNHLE9BQVEsRUFBN0QsQ0FBZDtRQUNBSSxLQUFLLENBQUNrQixLQUFOLElBQWdCLGdCQUFlekIsR0FBRyxDQUFDeUIsS0FBTSxFQUF6QztRQUNBLE1BQU1sQixLQUFOO01BQ0Q7O01BQ0QsS0FBS3hDLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLHNEQUFmO0lBQ0Q7O0lBQ0QsSUFBSXNELEdBQUosRUFBUztNQUNQLElBQUlJLFlBQVksR0FBR0osR0FBbkI7TUFDQSxLQUFLdkQsR0FBTCxDQUFTQyxLQUFULENBQWdCLG9CQUFtQjBELFlBQWEsR0FBaEQ7TUFDQSxNQUFNLEtBQUtDLFVBQUwsQ0FBZ0JELFlBQWhCLENBQU47TUFDQSxNQUFNLEtBQUtmLE1BQUwsQ0FBWWlCLGNBQVosRUFBTjtNQUNBO0lBQ0Q7O0lBR0QsSUFBS1YsSUFBSSxDQUFDQyxHQUFMLEtBQWFGLEtBQWQsSUFBd0IsS0FBNUIsRUFBbUM7TUFFakMsTUFBTSxJQUFJTyxLQUFKLENBQVUsZ0RBQVYsQ0FBTjtJQUNEOztJQUVELEtBQUt6RCxHQUFMLENBQVM4RCxJQUFULENBQWMsc0RBQWQ7O0lBQ0EsSUFBSSxLQUFLL0MsWUFBTCxNQUF1QixDQUFDLEtBQUtGLElBQUwsQ0FBVUcsTUFBdEMsRUFBOEM7TUFFNUMsTUFBTStDLGlCQUFBLENBQUVDLEtBQUYsQ0FBUVgsUUFBUixDQUFOO01BQ0EsT0FBTyxNQUFNQyxXQUFXLEVBQXhCO0lBQ0Q7O0lBR0QsSUFBSVcsT0FBSjs7SUFDQSxJQUFJO01BQ0YsS0FBS2pFLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLG1DQUFmO01BQ0FnRSxPQUFPLEdBQUcsTUFBTSxLQUFLQyx1QkFBTCxDQUE2QixrQkFBN0IsRUFBaUQsY0FBakQsRUFBaUUsRUFBakUsRUFBcUUsS0FBckUsQ0FBaEI7TUFDQSxNQUFNLEtBQUtuQyxTQUFMLENBQWVrQyxPQUFPLENBQUNqQyxPQUF2QixDQUFOO0lBQ0QsQ0FKRCxDQUlFLE9BQU9DLEdBQVAsRUFBWTtNQUNaLEtBQUtqQyxHQUFMLENBQVM4RCxJQUFULENBQWUsNENBQTJDN0IsR0FBRyxDQUFDRyxPQUFRLEVBQXRFO01BQ0EsS0FBS3BDLEdBQUwsQ0FBUzhELElBQVQsQ0FBYyxXQUFkO01BQ0EsTUFBTUMsaUJBQUEsQ0FBRUMsS0FBRixDQUFRWCxRQUFSLENBQU47SUFDRDs7SUFHRCxPQUFPLE1BQU1DLFdBQVcsRUFBeEI7RUFDRCxDQS9DRDs7RUFnREEsTUFBTUEsV0FBVyxFQUFqQjtBQUNELENBckREOztBQXVEQTVELE9BQU8sQ0FBQ3lFLFVBQVIsR0FBcUIsZUFBZUEsVUFBZixDQUEyQkMsOEJBQThCLEdBQUcsS0FBNUQsRUFBbUU7RUFDdEYsSUFBSSxDQUFDLEtBQUt4QixNQUFWLEVBQWtCO0lBQ2hCLEtBQUs1QyxHQUFMLENBQVNxRSxhQUFULENBQXVCLGdEQUF2QjtFQUNEOztFQUVELElBQUlELDhCQUFKLEVBQW9DO0lBQ2xDLE1BQU0sS0FBS0UsV0FBTCxFQUFOO0VBQ0Q7O0VBQ0QsTUFBTSxLQUFLMUIsTUFBTCxDQUFZMkIsVUFBWixFQUFOO0VBQ0EsS0FBSzFFLFVBQUwsR0FBa0IsSUFBbEI7RUFDQSxLQUFLMkUsWUFBTCxHQUFvQixFQUFwQjtFQUNBLEtBQUtDLFlBQUwsR0FBb0IsSUFBcEI7RUFDQSxLQUFLN0IsTUFBTCxHQUFjLElBQWQ7QUFDRCxDQWJEOztBQWVBbEQsT0FBTyxDQUFDeUIsYUFBUixHQUF3QixTQUFTQSxhQUFULENBQXdCdUQsR0FBeEIsRUFBNkI7RUFDbkQsS0FBS0MsV0FBTCxHQUFtQkQsR0FBbkI7QUFDRCxDQUZEOztBQUlBaEYsT0FBTyxDQUFDNkMsYUFBUixHQUF3QixTQUFTQSxhQUFULEdBQTBCO0VBQ2hELE9BQU8sS0FBS29DLFdBQVo7QUFDRCxDQUZEOztBQUlBaEYsVUFBVSxDQUFDaUYsb0JBQVgsR0FBa0MsZUFBZUEsb0JBQWYsR0FBdUM7RUFDdkUsT0FBTyxJQUFQO0FBQ0QsQ0FGRDs7QUFJQWpGLFVBQVUsQ0FBQ2tGLG1CQUFYLEdBQWlDLGVBQWVBLG1CQUFmLEdBQXNDO0VBQ3JFLElBQUksS0FBS25FLFlBQUwsRUFBSixFQUF5QjtJQUN2QixNQUFNLEtBQUtPLGVBQUwsRUFBTjtFQUNELENBRkQsTUFFTyxJQUFJLENBQUMsS0FBS0YsWUFBTCxFQUFELElBQXdCLEtBQUtGLElBQUwsQ0FBVUcsTUFBdEMsRUFBOEM7SUFDbkQsTUFBTSxLQUFLOEIseUJBQUwsRUFBTjtFQUNELENBRk0sTUFFQTtJQUNMLE1BQU0sS0FBS0wsa0JBQUwsQ0FBd0IsSUFBeEIsQ0FBTjtFQUNEO0FBQ0YsQ0FSRDs7QUFVQTlDLFVBQVUsQ0FBQzZELCtCQUFYLEdBQTZDLGVBQWVBLCtCQUFmLENBQWdEc0IsTUFBaEQsRUFBd0Q7RUFDbkcsTUFBTUMsVUFBVSxHQUFHLEtBQUt4QyxhQUFMLEVBQW5COztFQUVBLE1BQU1oQyxRQUFRLEdBQUcyQixlQUFBLENBQUU4QyxNQUFGLENBQVMsTUFBTSxLQUFLbEYsbUJBQUwsRUFBZixFQUEyQyxNQUEzQyxDQUFqQjs7RUFFQSxJQUFJaUYsVUFBSixFQUFnQjtJQUVkLEtBQUssTUFBTUUsR0FBWCxJQUFrQjFFLFFBQWxCLEVBQTRCO01BQzFCLElBQUksQ0FBQzBFLEdBQUcsQ0FBQzNFLElBQUosQ0FBU29FLEdBQVQsSUFBZ0IsRUFBakIsTUFBeUIsS0FBS25DLGFBQUwsRUFBN0IsRUFBbUQ7UUFDakQsT0FBTzBDLEdBQUcsQ0FBQzVFLEVBQVg7TUFDRDtJQUNGO0VBQ0Y7O0VBR0QsS0FBSyxNQUFNNEUsR0FBWCxJQUFrQjFFLFFBQWxCLEVBQTRCO0lBQzFCLElBQUswRSxHQUFHLENBQUMzRSxJQUFKLENBQVM0RSxLQUFULElBQWtCSixNQUFNLENBQUNLLElBQVAsQ0FBWUYsR0FBRyxDQUFDM0UsSUFBSixDQUFTNEUsS0FBckIsQ0FBbkIsSUFBb0RELEdBQUcsQ0FBQzNFLElBQUosQ0FBU29FLEdBQVQsSUFBZ0JJLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZRixHQUFHLENBQUMzRSxJQUFKLENBQVNvRSxHQUFyQixDQUF4RSxFQUFvRztNQUNsRyxPQUFPTyxHQUFHLENBQUM1RSxFQUFYO0lBQ0Q7RUFDRjtBQUNGLENBcEJEOztBQXNCQVYsVUFBVSxDQUFDeUYsWUFBWCxHQUEwQixTQUFTQSxZQUFULEdBQXlCO0VBQ2pELE9BQU8sQ0FBQyxDQUFDLEtBQUt2RixVQUFQLElBQXFCLEtBQUtBLFVBQUwsS0FBb0JQLFVBQWhEO0FBQ0QsQ0FGRDs7QUFJQUssVUFBVSxDQUFDMEYsU0FBWCxHQUF1QixTQUFTQSxTQUFULEdBQXNCO0VBQzNDLE9BQU8sS0FBS0QsWUFBTCxFQUFQO0FBQ0QsQ0FGRDs7QUFJQXpGLFVBQVUsQ0FBQzJGLG9CQUFYLEdBQWtDLGVBQWVBLG9CQUFmLEdBQXVDO0VBQ3ZFLElBQUlDLFVBQUo7O0VBQ0EsSUFBSSxDQUFDLEtBQUt4RSxZQUFMLEVBQUwsRUFBMEI7SUFDeEJ3RSxVQUFVLEdBQUcsTUFBTSxLQUFLMUUsSUFBTCxDQUFVMkUsTUFBVixDQUFpQkMscUJBQWpCLEVBQW5CO0VBQ0Q7O0VBQ0QsT0FBTyxJQUFBQywwQ0FBQSxFQUFxQjtJQUMxQkMsUUFBUSxFQUFFLEtBQUs5RSxJQUFMLENBQVU4RSxRQURNO0lBRTFCQyxtQkFBbUIsRUFBRSxLQUFLL0UsSUFBTCxDQUFVZ0YsMEJBRkw7SUFHMUJDLFFBQVEsRUFBRSxLQUFLQSxRQUFMLEVBSGdCO0lBSTFCQyxhQUFhLEVBQUUsS0FBS2xGLElBQUwsQ0FBVW1GLHVCQUpDO0lBSzFCdEYsWUFBWSxFQUFFLEtBQUtBLFlBQUwsRUFMWTtJQU0xQnVGLFVBQVUsRUFBRSxLQUFLQSxVQU5TO0lBTzFCbkYsZUFBZSxFQUFFLEtBQUtELElBQUwsQ0FBVUMsZUFQRDtJQVExQnlFLFVBUjBCO0lBUzFCVyxnQkFBZ0IsRUFBRSxLQUFLckYsSUFBTCxDQUFVcUYsZ0JBVEY7SUFVMUJDLHVCQUF1QixFQUFFQyxhQUFBLENBQUtDLFFBQUwsQ0FBYyxLQUFLeEYsSUFBTCxDQUFVeUYsb0JBQXhCLElBQ3JCLENBQUMsQ0FBQyxLQUFLekYsSUFBTCxDQUFVeUYsb0JBRFMsR0FFckIsS0Fac0I7SUFhMUJDLElBQUksRUFBRSxLQUFLMUYsSUFBTCxDQUFVMEYsSUFiVTtJQWMxQkMsbUJBQW1CLEVBQUUsS0FBSzNGLElBQUwsQ0FBVTRGLHlCQWRMO0lBZTFCQywwQkFBMEIsRUFBRSxLQUFLN0YsSUFBTCxDQUFVOEYsZ0NBZlo7SUFnQjFCQyxlQUFlLEVBQUUsS0FBSy9GLElBQUwsQ0FBVWdHLHFCQWhCRDtJQWlCMUJDLDBCQUEwQixFQUFFLEtBQUtqRyxJQUFMLENBQVVrRztFQWpCWixDQUFyQixFQWtCSixLQUFLaEcsWUFBTCxFQWxCSSxDQUFQO0FBbUJELENBeEJEOztBQWlDQXRCLFFBQVEsQ0FBQ21FLFVBQVQsR0FBc0IsZUFBZUEsVUFBZixDQUEyQm9ELElBQTNCLEVBQWlDQyxRQUFqQyxFQUEyQ0MsY0FBM0MsRUFBMkQ7RUFDL0UsU0FBU0MsZ0JBQVQsQ0FBMkJDLE9BQTNCLEVBQW9DQyxPQUFwQyxFQUE2QztJQUMzQyxPQUFRRCxPQUFPLEtBQUtDLE9BQVosSUFDTEQsT0FBTyxLQUFLLElBQVosSUFBb0JDLE9BQU8sS0FBSy9ILFVBRDNCLElBRUw4SCxPQUFPLEtBQUs5SCxVQUFaLElBQTBCK0gsT0FBTyxLQUFLLElBRnpDO0VBR0Q7O0VBQ0QsU0FBU0MsZUFBVCxDQUEwQkMsT0FBMUIsRUFBbUM7SUFDakMsT0FBT0EsT0FBTyxLQUFLakksVUFBWixJQUEwQmlJLE9BQU8sS0FBSyxJQUE3QztFQUNEOztFQUdELElBQUlQLElBQUksSUFBSUEsSUFBSSxDQUFDM0csRUFBakIsRUFBcUI7SUFDbkIyRyxJQUFJLEdBQUdBLElBQUksQ0FBQzNHLEVBQVo7RUFDRDs7RUFFRCxLQUFLTCxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsaUNBQWdDK0csSUFBSSxJQUFJMUgsVUFBVyxXQUFVLEtBQUtPLFVBQUwsR0FBa0IsS0FBS0EsVUFBdkIsR0FBb0NQLFVBQVcsR0FBNUg7O0VBRUEsSUFBSTZILGdCQUFnQixDQUFDSCxJQUFELEVBQU8sS0FBS25ILFVBQVosQ0FBaEIsSUFBMkNzSCxnQkFBZ0IsQ0FBQ2pGLGVBQUEsQ0FBRXNGLE9BQUYsQ0FBVVIsSUFBVixFQUFnQnhILFlBQWhCLEVBQThCLEVBQTlCLENBQUQsRUFBb0MsS0FBS0ssVUFBekMsQ0FBL0QsRUFBcUg7SUFFbkgsS0FBS0csR0FBTCxDQUFTQyxLQUFULENBQWdCLGVBQWMrRyxJQUFJLElBQUkxSCxVQUFXLDJCQUFqRDtJQUNBO0VBQ0Q7O0VBQ0QsSUFBSWdJLGVBQWUsQ0FBQ04sSUFBRCxDQUFuQixFQUEyQjtJQUV6QixLQUFLbkgsVUFBTCxHQUFrQixJQUFsQjtJQUNBO0VBQ0Q7O0VBS0QsSUFBSXFDLGVBQUEsQ0FBRXVGLFdBQUYsQ0FBYyxLQUFLbEgsUUFBbkIsQ0FBSixFQUFrQztJQUNoQyxNQUFNLEtBQUttSCxXQUFMLEVBQU47RUFDRDs7RUFFRCxJQUFJQyxTQUFTLEdBQUd6RixlQUFBLENBQUVzRixPQUFGLENBQVVSLElBQVYsRUFBZ0J4SCxZQUFoQixFQUE4QixFQUE5QixDQUFoQjs7RUFDQSxJQUFJbUksU0FBUyxLQUFLLEVBQWxCLEVBQXNCO0lBSXBCQSxTQUFTLEdBQUcsS0FBS3BILFFBQUwsQ0FBYyxDQUFkLENBQVo7RUFDRDs7RUFDRCxJQUFJLENBQUMyQixlQUFBLENBQUVDLFFBQUYsQ0FBVyxLQUFLNUIsUUFBaEIsRUFBMEJvSCxTQUExQixDQUFMLEVBQTJDO0lBQ3pDLE1BQU0sSUFBSUMsa0JBQUEsQ0FBT0Msa0JBQVgsRUFBTjtFQUNEOztFQUVELE1BQU1DLFVBQVUsR0FBRyxLQUFLakksVUFBeEI7RUFDQSxLQUFLQSxVQUFMLEdBQWtCLEtBQUtrSSxlQUFMLEdBQXVCSixTQUF6Qzs7RUFHQSxNQUFNLENBQUNLLFFBQUQsRUFBV0MsU0FBWCxJQUF3Qi9GLGVBQUEsQ0FBRWdHLEdBQUYsQ0FBTVAsU0FBUyxDQUFDUSxLQUFWLENBQWdCLEdBQWhCLENBQU4sRUFBNkI5SCxFQUFELElBQVErSCxRQUFRLENBQUMvSCxFQUFELEVBQUssRUFBTCxDQUE1QyxDQUE5Qjs7RUFDQSxJQUFJO0lBQ0YsS0FBS2dJLGdCQUFMLEdBQXdCLElBQXhCO0lBQ0EsTUFBTSxLQUFLekYsTUFBTCxDQUFZMEYsVUFBWixDQUF1Qk4sUUFBdkIsRUFBaUNDLFNBQWpDLEVBQTRDZixjQUE1QyxDQUFOO0VBQ0QsQ0FIRCxDQUdFLE9BQU9qRixHQUFQLEVBQVk7SUFDWixLQUFLcEMsVUFBTCxHQUFrQixLQUFLa0ksZUFBTCxHQUF1QkQsVUFBekM7SUFDQSxNQUFNN0YsR0FBTjtFQUNELENBTkQsU0FNVTtJQUNSLEtBQUtvRyxnQkFBTCxHQUF3QixLQUF4QjtFQUNEOztFQUdELElBQUksS0FBS3hILElBQUwsQ0FBVTBILHdCQUFWLElBQXNDLEtBQUszRixNQUEvQyxFQUF1RDtJQUNyRCxLQUFLNUMsR0FBTCxDQUFTQyxLQUFULENBQWdCLGdDQUErQixLQUFLSixVQUFXLEdBQS9EO0lBQ0EsS0FBSzJJLElBQUwsQ0FBVUMsV0FBVixHQUF3QixJQUFJQywwQkFBSixDQUFzQixLQUFLOUYsTUFBM0IsQ0FBeEI7SUFDQSxNQUFNLEtBQUs0RixJQUFMLENBQVVDLFdBQVYsQ0FBc0JFLFlBQXRCLEVBQU47RUFDRDs7RUFHRCxJQUFJM0IsSUFBSSxJQUFJQSxJQUFJLEtBQUsxSCxVQUFqQixJQUErQixLQUFLa0osSUFBeEMsRUFBOEM7SUFDNUMsSUFBSSxLQUFLQSxJQUFMLENBQVVJLGFBQWQsRUFBNkI7TUFDM0IsTUFBTSxLQUFLaEcsTUFBTCxDQUFZaUcsWUFBWixDQUF5QixLQUFLTCxJQUFMLENBQVVJLGFBQVYsQ0FBd0JFLFVBQXhCLENBQW1DQyxJQUFuQyxDQUF3QyxLQUFLUCxJQUFMLENBQVVJLGFBQWxELENBQXpCLENBQU47SUFDRDs7SUFDRCxJQUFJLEtBQUtKLElBQUwsQ0FBVVEsYUFBZCxFQUE2QjtNQUMzQixNQUFNLEtBQUtwRyxNQUFMLENBQVlxRyxZQUFaLENBQXlCLEtBQUtULElBQUwsQ0FBVVEsYUFBVixDQUF3QkYsVUFBeEIsQ0FBbUNDLElBQW5DLENBQXdDLEtBQUtQLElBQUwsQ0FBVVEsYUFBbEQsQ0FBekIsQ0FBTjtJQUNEO0VBQ0Y7QUFDRixDQTdFRDs7QUErRUFySixVQUFVLENBQUN1Six1QkFBWCxHQUFxQyxlQUFlQSx1QkFBZixHQUEwQztFQUM3RSxLQUFLdEcsTUFBTCxHQUFjLE1BQU0sS0FBSzBDLG9CQUFMLEVBQXBCO0VBRUEsS0FBSzFDLE1BQUwsQ0FBWXVHLEVBQVosQ0FBZUMsb0NBQUEsQ0FBZUMsaUJBQTlCLEVBQWlELEtBQUtDLFlBQUwsQ0FBa0JQLElBQWxCLENBQXVCLElBQXZCLENBQWpEO0VBQ0EsS0FBS25HLE1BQUwsQ0FBWXVHLEVBQVosQ0FBZUMsb0NBQUEsQ0FBZUcscUJBQTlCLEVBQXFELE1BQU07SUFDekQsSUFBSSxDQUFDckgsZUFBQSxDQUFFc0gsT0FBRixDQUFVLEtBQUtoRixZQUFmLENBQUwsRUFBbUM7TUFDakMsS0FBS3hFLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQixZQUFXbUcsYUFBQSxDQUFLcUQsU0FBTCxDQUFlLE9BQWYsRUFBd0IsS0FBS2pGLFlBQUwsQ0FBa0JrRixNQUExQyxFQUFrRCxJQUFsRCxDQUF3RCxLQUFJLEtBQUtsRixZQUFMLENBQWtCbUYsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBNkIsRUFBcEg7SUFDRDs7SUFDRCxLQUFLbkYsWUFBTCxHQUFvQixFQUFwQjtFQUNELENBTEQ7RUFPQSxNQUFNLEtBQUs1QixNQUFMLENBQVlnSCxPQUFaLENBQW9CLEtBQUsvSSxJQUFMLENBQVVnSixxQkFBOUIsQ0FBTjtBQUNELENBWkQ7O0FBY0FsSyxVQUFVLENBQUNRLGFBQVgsR0FBMkIsZUFBZUEsYUFBZixDQUE4QkosTUFBTSxHQUFHLElBQXZDLEVBQTZDO0VBQ3RFQSxNQUFNLEdBQUdBLE1BQU0sSUFBSSxDQUFDLEtBQUtnQixZQUFMLEVBQVgsSUFBa0MsQ0FBQyxDQUFDLEtBQUt3QixhQUFMLEVBQTdDO0VBQ0EsS0FBS3ZDLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQixxQkFBb0JGLE1BQU8sSUFBR0EsTUFBTSxHQUFJLG1CQUFrQixLQUFLd0MsYUFBTCxFQUFxQixJQUEzQyxHQUFpRCxFQUFHLEVBQXhHO0VBRUEsTUFBTXdDLFVBQVUsR0FBR2hGLE1BQU0sR0FBRyxLQUFLd0MsYUFBTCxFQUFILEdBQTBCRyxTQUFuRDtFQUNBLElBQUlvSCxTQUFTLEdBQUcsRUFBaEI7O0VBQ0EsTUFBTUMsZUFBZSxHQUFHLFlBQVk7SUFDbEMsSUFBSTtNQUNGLE9BQU8sTUFBTSxLQUFLbkgsTUFBTCxDQUFZb0gsU0FBWixDQUFzQmpGLFVBQXRCLEVBQWtDLEtBQUtsRSxJQUFMLENBQVVvSixxQkFBNUMsRUFBbUUsS0FBS3BKLElBQUwsQ0FBVXFKLG1CQUE3RSxDQUFiO0lBQ0QsQ0FGRCxDQUVFLE9BQU9qSSxHQUFQLEVBQVk7TUFDWixLQUFLakMsR0FBTCxDQUFTQyxLQUFULENBQWdCLDJCQUEwQmdDLEdBQUcsQ0FBQ0csT0FBUSxFQUF0RDtNQUNBLE9BQU8sRUFBUDtJQUNEO0VBQ0YsQ0FQRDs7RUFTQSxJQUFJLEtBQUtRLE1BQUwsSUFBZSxLQUFLQSxNQUFMLENBQVlvRixRQUEvQixFQUF5QztJQUV2QzhCLFNBQVMsR0FBRyxNQUFNQyxlQUFlLEVBQWpDO0VBQ0QsQ0FIRCxNQUdPO0lBQ0wsSUFBSSxDQUFDLEtBQUtuSCxNQUFWLEVBQWtCO01BQ2hCLE1BQU0sS0FBS3NHLHVCQUFMLEVBQU47SUFDRDs7SUFDRCxNQUFNLEtBQUt0RyxNQUFMLENBQVl1SCxnQkFBWixFQUFOO0lBRUFMLFNBQVMsR0FBRyxNQUFNQyxlQUFlLEVBQWpDO0lBRUEsTUFBTUssYUFBYSxHQUFHLDRCQUF0Qjs7SUFDQSxJQUFJO01BQ0YsTUFBTSxJQUFBdkksdUJBQUEsRUFBYyxDQUFkLEVBQWlCLElBQWpCLEVBQXVCLFlBQVk7UUFDdkMsSUFBSSxFQUFDLE1BQU0sS0FBSytDLG9CQUFMLEVBQVAsQ0FBSixFQUF3QztVQUN0QyxNQUFNLElBQUluQixLQUFKLENBQVUyRyxhQUFWLENBQU47UUFDRDtNQUNGLENBSkssQ0FBTjtJQUtELENBTkQsQ0FNRSxPQUFPbkksR0FBUCxFQUFZO01BR1osSUFBSUEsR0FBRyxDQUFDRyxPQUFKLEtBQWdCZ0ksYUFBcEIsRUFBbUM7UUFDakMsS0FBS3BLLEdBQUwsQ0FBU3FFLGFBQVQsQ0FBdUJwQyxHQUF2QjtNQUNEO0lBQ0Y7RUFDRjs7RUFFRCxJQUFJNkgsU0FBUyxDQUFDSixNQUFWLEtBQXFCLENBQXpCLEVBQTRCO0lBRTFCLEtBQUsxSixHQUFMLENBQVNDLEtBQVQsQ0FBZSxzQkFBZjtFQUNEOztFQUNELE9BQU82SixTQUFQO0FBQ0QsQ0EvQ0Q7O0FBaURBckssUUFBUSxDQUFDaUksV0FBVCxHQUF1QixlQUFlQSxXQUFmLEdBQThCO0VBQ25ELEtBQUsxSCxHQUFMLENBQVNDLEtBQVQsQ0FBZSxvQ0FBZjtFQUNBLE1BQU1NLFFBQVEsR0FBRyxNQUFNLEtBQUtULG1CQUFMLENBQXlCLEtBQXpCLENBQXZCO0VBRUEsTUFBTXVLLEtBQUssR0FBRyxLQUFLeEosSUFBTCxDQUFVeUosZUFBVixHQUNWLFVBQVUvQyxPQUFWLEVBQW1CO0lBQ25CLE9BQU87TUFDTGxILEVBQUUsRUFBRWtILE9BQU8sQ0FBQ2xILEVBQVIsQ0FBV0ksUUFBWCxFQURDO01BRUx5RSxLQUFLLEVBQUVxQyxPQUFPLENBQUNqSCxJQUFSLENBQWE0RSxLQUZmO01BR0xSLEdBQUcsRUFBRTZDLE9BQU8sQ0FBQ2pILElBQVIsQ0FBYW9FLEdBSGI7TUFJTGlCLFFBQVEsRUFBRTRCLE9BQU8sQ0FBQ2pILElBQVIsQ0FBYXFGO0lBSmxCLENBQVA7RUFNRCxDQVJXLEdBU1Q0QixPQUFELElBQWFBLE9BQU8sQ0FBQ2xILEVBQVIsQ0FBV0ksUUFBWCxFQVRqQjtFQVVBLE9BQU9GLFFBQVEsQ0FBQzJILEdBQVQsQ0FBYW1DLEtBQWIsQ0FBUDtBQUNELENBZkQ7O0FBbUNBMUssVUFBVSxDQUFDNEssaUJBQVgsR0FBK0IsZUFBZUEsaUJBQWYsQ0FBa0MxSixJQUFJLEdBQUcsRUFBekMsRUFBNkM7RUFDMUUsSUFBSTtJQUNGMkosZ0JBQWdCLEdBQUc7RUFEakIsSUFFQTNKLElBRko7O0VBS0EsSUFBSSxDQUFDcUIsZUFBQSxDQUFFdUksUUFBRixDQUFXRCxnQkFBWCxDQUFMLEVBQW1DO0lBQ2pDQSxnQkFBZ0IsR0FBR3BDLFFBQVEsQ0FBQ29DLGdCQUFELEVBQW1CLEVBQW5CLENBQTNCOztJQUNBLElBQUlFLEtBQUssQ0FBQ0YsZ0JBQUQsQ0FBVCxFQUE2QjtNQUMzQkEsZ0JBQWdCLEdBQUcsQ0FBbkI7SUFDRDtFQUNGOztFQUVELE1BQU1HLE1BQU0sR0FBRyxLQUFLOUosSUFBTCxDQUFVeUosZUFBekI7RUFDQSxLQUFLekosSUFBTCxDQUFVeUosZUFBVixHQUE0QixJQUE1QjtFQUVBLE1BQU1NLEtBQUssR0FBRyxJQUFJQyxlQUFBLENBQU9DLEtBQVgsR0FBbUI1SCxLQUFuQixFQUFkOztFQUNBLElBQUk7SUFDRixJQUFJM0MsUUFBSjs7SUFDQSxHQUFHO01BQ0RBLFFBQVEsR0FBRyxNQUFNLEtBQUttSCxXQUFMLEVBQWpCOztNQUVBLElBQUluSCxRQUFRLENBQUNtSixNQUFULElBQW1CLENBQXZCLEVBQTBCO1FBQ3hCLEtBQUsxSixHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsK0JBQThCMkssS0FBSyxDQUFDRyxXQUFOLEdBQW9CQyxjQUFwQixDQUFtQ0MsT0FBbkMsQ0FBMkMsQ0FBM0MsQ0FBOEMsSUFBNUY7UUFDQSxPQUFPMUssUUFBUDtNQUNEOztNQUNELEtBQUtQLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQix3QkFBdUIySyxLQUFLLENBQUNHLFdBQU4sR0FBb0JDLGNBQXBCLENBQW1DQyxPQUFuQyxDQUEyQyxDQUEzQyxDQUE4QyxJQUFyRjtJQUNELENBUkQsUUFRU0wsS0FBSyxDQUFDRyxXQUFOLEdBQW9CQyxjQUFwQixHQUFxQ1IsZ0JBUjlDOztJQVNBLE9BQU9qSyxRQUFQO0VBQ0QsQ0FaRCxTQVlVO0lBRVIsS0FBS00sSUFBTCxDQUFVeUosZUFBVixHQUE0QkssTUFBNUI7RUFDRDtBQUNGLENBakNEOztBQW1DQWxMLFFBQVEsQ0FBQ3lMLFNBQVQsR0FBcUIsZUFBZUEsU0FBZixDQUEwQmxFLElBQTFCLEVBQWdDRSxjQUFoQyxFQUFnRDtFQUNuRSxJQUFJO0lBQ0YsTUFBTSxLQUFLdEQsVUFBTCxDQUFnQm9ELElBQWhCLEVBQXNCOUUsZUFBQSxDQUFFaUosSUFBeEIsRUFBOEJqRSxjQUE5QixDQUFOO0VBQ0QsQ0FGRCxDQUVFLE9BQU9qRixHQUFQLEVBQVk7SUFFWixNQUFNLElBQUFtSix1QkFBQSxFQUFZbkosR0FBWixFQUFpQjJGLGtCQUFBLENBQU9DLGtCQUF4QixJQUNGLElBQUlELGtCQUFBLENBQU95RCxpQkFBWCxFQURFLEdBRUZwSixHQUZKO0VBR0Q7QUFDRixDQVREOztBQVdBeEMsUUFBUSxDQUFDNkwsZUFBVCxHQUEyQixlQUFlQSxlQUFmLEdBQWtDO0VBQzNELElBQUksQ0FBQyxLQUFLbEcsWUFBTCxFQUFMLEVBQTBCO0lBQ3hCLE1BQU0sSUFBSXdDLGtCQUFBLENBQU8yRCxtQkFBWCxFQUFOO0VBQ0Q7O0VBQ0QsS0FBS3ZMLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiwrQkFBaEI7RUFDQSxPQUFPLEtBQUtKLFVBQVo7QUFDRCxDQU5EOztBQVFBSixRQUFRLENBQUMrTCxnQkFBVCxHQUE0QixlQUFlQSxnQkFBZixHQUFtQztFQUM3RCxJQUFJLENBQUMsS0FBS3BHLFlBQUwsRUFBTCxFQUEwQjtJQUN4QixNQUFNLElBQUl3QyxrQkFBQSxDQUFPMkQsbUJBQVgsRUFBTjtFQUNEOztFQUNELEtBQUt2TCxHQUFMLENBQVNDLEtBQVQsQ0FBZSwwQ0FBZjtFQUNBLE1BQU1NLFFBQVEsR0FBRyxNQUFNLEtBQUtULG1CQUFMLENBQXlCLEtBQXpCLENBQXZCO0VBQ0EsT0FBT1MsUUFBUSxDQUVaeUUsTUFGSSxDQUVJdUMsT0FBRCxJQUFhQSxPQUFPLENBQUNsSCxFQUFSLEtBQWVmLFVBRi9CLEVBSUo0SSxHQUpJLENBSUNYLE9BQUQsSUFBYUEsT0FBTyxDQUFDakgsSUFBUixDQUFhRCxFQUFiLENBQWdCSSxRQUFoQixFQUpiLENBQVA7QUFLRCxDQVhEOztBQWFBZCxVQUFVLENBQUMySixZQUFYLEdBQTBCLGVBQWVBLFlBQWYsQ0FBNkJtQyxzQkFBN0IsRUFBcUQ7RUFDN0UsS0FBS3pMLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQixzREFBcUR5TCxJQUFJLENBQUNDLFNBQUwsQ0FBZUYsc0JBQWYsQ0FBdUMsRUFBNUc7O0VBQ0EsSUFBSSxLQUFLcEQsZ0JBQVQsRUFBMkI7SUFDekIsS0FBS3JJLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLG9EQUFmO0lBQ0E7RUFDRDs7RUFDRCxJQUFJLENBQUMsS0FBSzJDLE1BQU4sSUFBZ0IsQ0FBQyxLQUFLQSxNQUFMLENBQVlnSixXQUFqQyxFQUE4QztJQUM1QyxLQUFLNUwsR0FBTCxDQUFTQyxLQUFULENBQWUscUNBQWY7SUFDQTtFQUNEOztFQUVELE1BQU07SUFBQytILFFBQUQ7SUFBVzhCO0VBQVgsSUFBd0IyQixzQkFBOUI7RUFFQSxJQUFJSSxNQUFNLEdBQUcsRUFBYjtFQUNBLElBQUlDLFFBQVEsR0FBRyxFQUFmO0VBQ0EsSUFBSUMsS0FBSyxHQUFHLElBQVo7O0VBR0EsU0FBU0MsWUFBVCxDQUF1QnRILEdBQXZCLEVBQTRCdUgsd0JBQTVCLEVBQXNEO0lBQ3BELE1BQU1DLFlBQVksR0FBRyxDQUFDRCx3QkFBd0IsSUFBSSxFQUE3QixFQUNsQjlELEtBRGtCLENBQ1osR0FEWSxFQUVsQkQsR0FGa0IsQ0FFYmlFLENBQUQsSUFBT0EsQ0FBQyxDQUFDQyxJQUFGLEVBRk8sRUFHbEJwSCxNQUhrQixDQUdWbUgsQ0FBRCxJQUFPLENBQUNqSyxlQUFBLENBQUVzSCxPQUFGLENBQVUyQyxDQUFWLENBSEcsQ0FBckI7O0lBSUEsS0FBSyxNQUFNRSxXQUFYLElBQTBCSCxZQUExQixFQUF3QztNQUN0QyxJQUFJRyxXQUFXLEtBQUssYUFBaEIsSUFBaUMzSCxHQUFHLEtBQUssYUFBN0MsRUFBNEQ7UUFDMUQsT0FBTyxJQUFQO01BQ0QsQ0FGRCxNQUVPO1FBQ0wsSUFBSTtVQUNGLE1BQU00SCxRQUFRLEdBQUcsSUFBSUMsR0FBSixDQUFRN0gsR0FBUixFQUFhNEgsUUFBOUI7O1VBQ0EsSUFBSUEsUUFBUSxLQUFLRCxXQUFqQixFQUE4QjtZQUM1QixPQUFPLElBQVA7VUFDRDtRQUNGLENBTEQsQ0FLRSxPQUFPRyxHQUFQLEVBQVksQ0FFYjtNQUNGO0lBQ0Y7O0lBQ0QsT0FBTyxLQUFQO0VBQ0Q7O0VBRUQsS0FBSyxNQUFNQyxJQUFYLElBQW1CM0MsU0FBbkIsRUFBOEI7SUFDNUIsTUFBTXpKLEVBQUUsR0FBR29NLElBQUksQ0FBQ3BNLEVBQUwsQ0FBUUksUUFBUixFQUFYO0lBQ0FvTCxNQUFNLENBQUNyTCxJQUFQLENBQVlILEVBQVo7O0lBQ0EsSUFBSW9NLElBQUksQ0FBQ0MsS0FBVCxFQUFnQjtNQUNkWCxLQUFLLEdBQUcxTCxFQUFSO0lBQ0Q7O0lBQ0QsTUFBTXNILFNBQVMsR0FBSSxHQUFFSyxRQUFTLElBQUczSCxFQUFHLEVBQXBDOztJQUdBLElBQUksQ0FBQzZCLGVBQUEsQ0FBRUMsUUFBRixDQUFXLEtBQUs1QixRQUFoQixFQUEwQm9ILFNBQTFCLENBQUwsRUFBMkM7TUFDekMsSUFBSXFFLFlBQVksQ0FBQ1MsSUFBSSxDQUFDL0gsR0FBTixFQUFXLEtBQUs3RCxJQUFMLENBQVVvTCx3QkFBckIsQ0FBaEIsRUFBZ0U7UUFDOUQsS0FBS2pNLEdBQUwsQ0FBUzJNLElBQVQsQ0FBZSxpQkFBZ0JGLElBQUksQ0FBQy9ILEdBQUksb0NBQTFCLEdBQ1gsOEJBQTZCLEtBQUs3RCxJQUFMLENBQVVvTCx3QkFBeUIsRUFEbkU7TUFFRCxDQUhELE1BR087UUFDTEgsUUFBUSxDQUFDdEwsSUFBVCxDQUFjSCxFQUFkO1FBQ0EsS0FBS0UsUUFBTCxDQUFjQyxJQUFkLENBQW1CbUgsU0FBbkI7TUFDRDtJQUNGO0VBQ0Y7O0VBRUQsSUFBSSxDQUFDb0UsS0FBTCxFQUFZO0lBR1YsS0FBSy9MLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLG9EQUFmO0lBQ0E4TCxLQUFLLEdBQUdGLE1BQU0sQ0FBQyxDQUFELENBQU4sSUFBYSxJQUFyQjtFQUNEOztFQUVELElBQUksQ0FBQ3pGLGFBQUEsQ0FBS0MsUUFBTCxDQUFjLEtBQUt4RyxVQUFuQixDQUFMLEVBQXFDO0lBQ25DLEtBQUtHLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLG1EQUFmO0lBQ0E7RUFDRDs7RUFFRCxNQUFNLENBQUMyTSxXQUFELEVBQWNDLFlBQWQsSUFBOEIsS0FBS2hOLFVBQUwsQ0FBZ0JzSSxLQUFoQixDQUFzQixHQUF0QixDQUFwQzs7RUFFQSxJQUFJeUUsV0FBVyxLQUFLNUUsUUFBcEIsRUFBOEI7SUFDNUIsS0FBS2hJLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLGdFQUFmO0lBQ0E7RUFDRDs7RUFFRCxJQUFJNk0sT0FBTyxHQUFHLElBQWQ7O0VBQ0EsSUFBSWhCLFFBQVEsQ0FBQ3BDLE1BQWIsRUFBcUI7SUFDbkJvRCxPQUFPLEdBQUc1SyxlQUFBLENBQUU2SyxJQUFGLENBQU9qQixRQUFQLENBQVY7SUFDQSxLQUFLOUwsR0FBTCxDQUFTQyxLQUFULENBQWdCLHNDQUFxQzZNLE9BQVEsR0FBN0Q7RUFDRCxDQUhELE1BR08sSUFBSSxDQUFDNUssZUFBQSxDQUFFQyxRQUFGLENBQVcwSixNQUFYLEVBQW1CZ0IsWUFBbkIsQ0FBTCxFQUF1QztJQUM1QyxLQUFLN00sR0FBTCxDQUFTQyxLQUFULENBQWUsNERBQ0YsdUNBRGI7O0lBRUEsSUFBSSxDQUFDbUcsYUFBQSxDQUFLQyxRQUFMLENBQWMwRixLQUFkLENBQUwsRUFBMkI7TUFDekIsS0FBSy9MLEdBQUwsQ0FBU3dDLEtBQVQsQ0FBZSx1REFDRiw0Q0FEYjtNQUVBLEtBQUtyQixhQUFMLENBQW1CdUIsU0FBbkI7TUFDQTtJQUNEOztJQUVELEtBQUsxQyxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsbUNBQWtDOEwsS0FBTSxLQUF6QyxHQUNELHlCQURkO0lBRUEsS0FBS2xNLFVBQUwsR0FBbUIsR0FBRW1JLFFBQVMsSUFBRytELEtBQU0sRUFBdkM7SUFDQWUsT0FBTyxHQUFHZixLQUFWO0VBQ0QsQ0FkTSxNQWNBO0lBRUwsS0FBSy9MLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLGdDQUFmOztJQUdBLE1BQU0rTSxhQUFhLEdBQUcsQ0FBQyxNQUFNO01BRTNCLE1BQU1DLFlBQVksR0FBRy9LLGVBQUEsQ0FBRWdHLEdBQUYsQ0FBTTRCLFNBQU4sRUFBa0IyQyxJQUFELElBQVcsR0FBRXpFLFFBQVMsSUFBR3lFLElBQUksQ0FBQ3BNLEVBQUcsRUFBbEQsQ0FBckI7O01BR0EsT0FBTyxDQUFDNkIsZUFBQSxDQUFFZ0wsT0FBRixDQUFVaEwsZUFBQSxDQUFFaUwsSUFBRixDQUFPLEtBQUs1TSxRQUFaLEVBQXNCLEtBQUtWLFVBQTNCLENBQVYsRUFBa0RxQyxlQUFBLENBQUVpTCxJQUFGLENBQU9GLFlBQVAsRUFBcUIsS0FBS3BOLFVBQTFCLENBQWxELENBQVI7SUFDRCxDQU5xQixHQUF0Qjs7SUFRQSxJQUFJbU4sYUFBSixFQUFtQjtNQUNqQixLQUFLaE4sR0FBTCxDQUFTQyxLQUFULENBQWUsOEJBQWY7TUFDQSxNQUFNLEtBQUsyQyxNQUFMLENBQVl3SyxRQUFaLEVBQU47SUFDRDs7SUFFRCxLQUFLcE4sR0FBTCxDQUFTQyxLQUFULENBQWUsZ0RBQWY7RUFDRDs7RUFHRCxJQUFJbUcsYUFBQSxDQUFLQyxRQUFMLENBQWMsS0FBS3hHLFVBQW5CLENBQUosRUFBb0M7SUFDbEMsSUFBSXdOLGFBQWEsR0FBR2pGLFFBQVEsQ0FBQ2xHLGVBQUEsQ0FBRTZLLElBQUYsQ0FBTyxLQUFLbE4sVUFBTCxDQUFnQnNJLEtBQWhCLENBQXNCLEdBQXRCLENBQVAsQ0FBRCxFQUFxQyxFQUFyQyxDQUE1Qjs7SUFDQSxJQUFJc0UsSUFBSSxHQUFHdkssZUFBQSxDQUFFaUwsSUFBRixDQUFPckQsU0FBUCxFQUFtQndELENBQUQsSUFBT2xGLFFBQVEsQ0FBQ2tGLENBQUMsQ0FBQ2pOLEVBQUgsRUFBTyxFQUFQLENBQVIsS0FBdUJnTixhQUFoRCxDQUFYOztJQUNBLElBQUlaLElBQUksSUFBSUEsSUFBSSxDQUFDL0gsR0FBTCxLQUFhLEtBQUtuQyxhQUFMLEVBQXpCLEVBQStDO01BQzdDLEtBQUt2QyxHQUFMLENBQVNDLEtBQVQsQ0FBZ0Isb0JBQW1CLEtBQUtzQyxhQUFMLEVBQXFCLFNBQVFrSyxJQUFJLENBQUMvSCxHQUFJLEdBQXpFO01BQ0EsS0FBS3ZELGFBQUwsQ0FBbUJzTCxJQUFJLENBQUMvSCxHQUF4QjtJQUNEO0VBQ0Y7O0VBRUQsSUFBSTBCLGFBQUEsQ0FBS0MsUUFBTCxDQUFjeUcsT0FBZCxDQUFKLEVBQTRCO0lBQzFCLEtBQUt6RSxnQkFBTCxHQUF3QixJQUF4QjtJQUNBLE1BQU1QLFVBQVUsR0FBRyxLQUFLakksVUFBeEI7SUFDQSxLQUFLQSxVQUFMLEdBQW1CLEdBQUVtSSxRQUFTLElBQUc4RSxPQUFRLEVBQXpDO0lBR0EsS0FBS2xLLE1BQUwsQ0FBWTBGLFVBQVosQ0FBdUJOLFFBQXZCLEVBQWlDSSxRQUFRLENBQUMwRSxPQUFELEVBQVUsRUFBVixDQUF6QyxFQUF3RFMsS0FBeEQsQ0FBK0R0TCxHQUFELElBQVM7TUFDckUsS0FBS2pDLEdBQUwsQ0FBUzhELElBQVQsQ0FBZSwwQkFBeUI3QixHQUFHLENBQUNHLE9BQVEsRUFBcEQ7TUFDQSxLQUFLdkMsVUFBTCxHQUFrQmlJLFVBQWxCO0lBQ0QsQ0FIRDtJQUlBLEtBQUtPLGdCQUFMLEdBQXdCLEtBQXhCO0VBQ0Q7O0VBQ0QsS0FBS21GLGlCQUFMLEdBQXlCMUQsU0FBekI7QUFDRCxDQTdJRDs7QUFnSkEyRCxNQUFNLENBQUNDLE1BQVAsQ0FBY2pPLFFBQWQsRUFBd0JFLFVBQXhCLEVBQW9DRCxPQUFwQztlQUNlRCxRIn0=
|
|
@@ -82,4 +82,4 @@ var _default = extensions;
|
|
|
82
82
|
exports.default = _default;require('source-map-support').install();
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2Nvb2tpZXMuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q29va2llcyIsImlzV2ViQ29udGV4dCIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJjb29raWVzIiwicmVtb3RlIiwiZGVjb2RlZENvb2tpZVZhbHVlcyIsIm1hcCIsImNvb2tpZSIsImRlY29kZVVSSSIsInZhbHVlIiwiZXJyb3IiLCJsb2ciLCJkZWJ1ZyIsIm5hbWUiLCJ3YXJuIiwidW5kZWZpbmVkIiwiXyIsInppcCIsImZpbHRlciIsImlzVW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwiZGVsZXRlQ29va2llIiwiY29va2llTmFtZSIsImZpbmQiLCJfZGVsZXRlQ29va2llIiwiZGVsZXRlQ29va2llcyIsInVybCIsInNlY3VyZSIsImRvbWFpbiIsInBhdGgiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvY29va2llcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5nZXRDb29raWVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29va2llcyAoKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgLy8gZ2V0IHRoZSBjb29raWVzIGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlciwgb3IgYW4gZW1wdHkgb2JqZWN0XG4gIGNvbnN0IGNvb2tpZXMgPSBhd2FpdCB0aGlzLnJlbW90ZS5nZXRDb29raWVzKCkgfHwge2Nvb2tpZXM6IFtdfTtcblxuICAvLyB0aGUgdmFsdWUgaXMgVVJJIGVuY29kZWQsIHNvIGRlY29kZSBpdCBzYWZlbHlcbiAgY29uc3QgZGVjb2RlZENvb2tpZVZhbHVlcyA9IGNvb2tpZXMuY29va2llcy5tYXAoKGNvb2tpZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJKGNvb2tpZS52YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBDb29raWUgJHtjb29raWUubmFtZX0gd2FzIG5vdCBkZWNvZGVkIHN1Y2Nlc3NmdWxseS4gQ29va2llIHZhbHVlOiAke2Nvb2tpZS52YWx1ZX1gKTtcbiAgICAgIHRoaXMubG9nLndhcm4oZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHppcCBjb29rZXMgd2l0aCBkZWNvZGVkIHZhbHVlLCByZW1vdmluZyB1bmRlZmluZWQgY29va2llIHZhbHVlc1xuICByZXR1cm4gXy56aXAoY29va2llcy5jb29raWVzLCBkZWNvZGVkQ29va2llVmFsdWVzKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gIV8uaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIC5tYXAoKFtjb29raWUsIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgY29va2llLCB7dmFsdWV9KSk7XG59O1xuXG5jb21tYW5kcy5kZWxldGVDb29raWUgPSBhc3luYyBmdW5jdGlvbiBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBjb29raWVzID0gYXdhaXQgdGhpcy5nZXRDb29raWVzKCk7XG4gIGNvbnN0IGNvb2tpZSA9IGNvb2tpZXMuZmluZCgoY29va2llKSA9PiBjb29raWUubmFtZSA9PT0gY29va2llTmFtZSk7XG4gIGlmICghY29va2llKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoYENvb2tpZSAnJHtjb29raWVOYW1lfScgbm90IGZvdW5kLiBJZ25vcmluZy5gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuX2RlbGV0ZUNvb2tpZShjb29raWUpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmNvbW1hbmRzLmRlbGV0ZUNvb2tpZXMgPSBhc3luYyBmdW5jdGlvbiBkZWxldGVDb29raWVzICgpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBjb29raWVzID0gYXdhaXQgdGhpcy5nZXRDb29raWVzKCk7XG4gIGZvciAoY29uc3QgY29va2llIG9mIGNvb2tpZXMpIHtcbiAgICBhd2FpdCB0aGlzLl9kZWxldGVDb29raWUoY29va2llKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmhlbHBlcnMuX2RlbGV0ZUNvb2tpZSA9IGFzeW5jIGZ1bmN0aW9uIF9kZWxldGVDb29raWUgKGNvb2tpZSkge1xuICBjb25zdCB1cmwgPSBgaHR0cCR7Y29va2llLnNlY3VyZSA/
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2Nvb2tpZXMuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q29va2llcyIsImlzV2ViQ29udGV4dCIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJjb29raWVzIiwicmVtb3RlIiwiZGVjb2RlZENvb2tpZVZhbHVlcyIsIm1hcCIsImNvb2tpZSIsImRlY29kZVVSSSIsInZhbHVlIiwiZXJyb3IiLCJsb2ciLCJkZWJ1ZyIsIm5hbWUiLCJ3YXJuIiwidW5kZWZpbmVkIiwiXyIsInppcCIsImZpbHRlciIsImlzVW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIiwiZGVsZXRlQ29va2llIiwiY29va2llTmFtZSIsImZpbmQiLCJfZGVsZXRlQ29va2llIiwiZGVsZXRlQ29va2llcyIsInVybCIsInNlY3VyZSIsImRvbWFpbiIsInBhdGgiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvY29va2llcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5nZXRDb29raWVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29va2llcyAoKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgLy8gZ2V0IHRoZSBjb29raWVzIGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlciwgb3IgYW4gZW1wdHkgb2JqZWN0XG4gIGNvbnN0IGNvb2tpZXMgPSBhd2FpdCB0aGlzLnJlbW90ZS5nZXRDb29raWVzKCkgfHwge2Nvb2tpZXM6IFtdfTtcblxuICAvLyB0aGUgdmFsdWUgaXMgVVJJIGVuY29kZWQsIHNvIGRlY29kZSBpdCBzYWZlbHlcbiAgY29uc3QgZGVjb2RlZENvb2tpZVZhbHVlcyA9IGNvb2tpZXMuY29va2llcy5tYXAoKGNvb2tpZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJKGNvb2tpZS52YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBDb29raWUgJHtjb29raWUubmFtZX0gd2FzIG5vdCBkZWNvZGVkIHN1Y2Nlc3NmdWxseS4gQ29va2llIHZhbHVlOiAke2Nvb2tpZS52YWx1ZX1gKTtcbiAgICAgIHRoaXMubG9nLndhcm4oZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHppcCBjb29rZXMgd2l0aCBkZWNvZGVkIHZhbHVlLCByZW1vdmluZyB1bmRlZmluZWQgY29va2llIHZhbHVlc1xuICByZXR1cm4gXy56aXAoY29va2llcy5jb29raWVzLCBkZWNvZGVkQ29va2llVmFsdWVzKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gIV8uaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIC5tYXAoKFtjb29raWUsIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgY29va2llLCB7dmFsdWV9KSk7XG59O1xuXG5jb21tYW5kcy5kZWxldGVDb29raWUgPSBhc3luYyBmdW5jdGlvbiBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBjb29raWVzID0gYXdhaXQgdGhpcy5nZXRDb29raWVzKCk7XG4gIGNvbnN0IGNvb2tpZSA9IGNvb2tpZXMuZmluZCgoY29va2llKSA9PiBjb29raWUubmFtZSA9PT0gY29va2llTmFtZSk7XG4gIGlmICghY29va2llKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoYENvb2tpZSAnJHtjb29raWVOYW1lfScgbm90IGZvdW5kLiBJZ25vcmluZy5gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuX2RlbGV0ZUNvb2tpZShjb29raWUpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmNvbW1hbmRzLmRlbGV0ZUNvb2tpZXMgPSBhc3luYyBmdW5jdGlvbiBkZWxldGVDb29raWVzICgpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBjb25zdCBjb29raWVzID0gYXdhaXQgdGhpcy5nZXRDb29raWVzKCk7XG4gIGZvciAoY29uc3QgY29va2llIG9mIGNvb2tpZXMpIHtcbiAgICBhd2FpdCB0aGlzLl9kZWxldGVDb29raWUoY29va2llKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmhlbHBlcnMuX2RlbGV0ZUNvb2tpZSA9IGFzeW5jIGZ1bmN0aW9uIF9kZWxldGVDb29raWUgKGNvb2tpZSkge1xuICBjb25zdCB1cmwgPSBgaHR0cCR7Y29va2llLnNlY3VyZSA/ICdzJyA6ICcnfTovLyR7Y29va2llLmRvbWFpbn0ke2Nvb2tpZS5wYXRofWA7XG4gIHJldHVybiBhd2FpdCB0aGlzLnJlbW90ZS5kZWxldGVDb29raWUoY29va2llLm5hbWUsIHVybCk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQUYsUUFB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
|
|
@@ -33,4 +33,4 @@ var _default = extensions;
|
|
|
33
33
|
exports.default = _default;require('source-map-support').install();
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2RldmljZUluZm8uanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiaW5mb0J5V2RhIiwicHJveHlDb21tYW5kIiwiaXNSZWFsRGV2aWNlIiwibG9ja2Rvd25JbmZvIiwidXRpbGl0aWVzIiwiZ2V0RGV2aWNlSW5mbyIsIm9wdHMiLCJkZXZpY2UiLCJ1ZGlkIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2RldmljZUluZm8uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbGl0aWVzIH0gZnJvbSAnYXBwaXVtLWlvcy1kZXZpY2UnO1xuXG5jb25zdCBleHRlbnNpb25zID0ge30sIGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogUmV0dXJucyBkZXZpY2UgaW5mby5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgcmVzcG9uc2Ugb2YgYC93ZGEvZGV2aWNlL2luZm8nYFxuICogQHRocm93cyB7RXJyb3J9IGlmIGFuIGVycm9yIHJhaXNlZCBieSBjb21tYW5kXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZUluZm8gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXREZXZpY2VJbmZvICgpIHtcbiAgY29uc3QgaW5mb0J5V2RhID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2luZm8nLCAnR0VUJyk7XG5cbiAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICBjb25zdCBsb2NrZG93bkluZm8gPSBhd2FpdCB1dGlsaXRpZXMuZ2V0RGV2aWNlSW5mbyh0aGlzLm9wdHMuZGV2aWNlLnVkaWQpO1xuICAgIHJldHVybiB7Li4uaW5mb0J5V2RhLCAuLi57bG9ja2Rvd25JbmZvfX07XG4gIH1cblxuICByZXR1cm4gaW5mb0J5V2RhO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5CO0FBQUEsTUFBdUJDLFFBQVEsR0FBRyxFQUFsQzs7O0FBUUFBLFFBQVEsQ0FBQ0MsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsTUFBTUMsU0FBUyxHQUFHLE1BQU0sS0FBS0MsWUFBTCxDQUFrQixrQkFBbEIsRUFBc0MsS0FBdEMsQ0FBeEI7O0VBRUEsSUFBSSxLQUFLQyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTUMsWUFBWSxHQUFHLE1BQU1DLDBCQUFBLENBQVVDLGFBQVYsQ0FBd0IsS0FBS0MsSUFBTCxDQUFVQyxNQUFWLENBQWlCQyxJQUF6QyxDQUEzQjtJQUNBLE9BQU8sRUFBQyxHQUFHUixTQUFKO01BQWUsR0FBRztRQUFDRztNQUFEO0lBQWxCLENBQVA7RUFDRDs7RUFFRCxPQUFPSCxTQUFQO0FBQ0QsQ0FURDs7QUFXQVMsTUFBTSxDQUFDQyxNQUFQLENBQWNiLFVBQWQsRUFBMEJDLFFBQTFCO2VBRWVELFUifQ==
|
|
@@ -327,4 +327,4 @@ var _default = extensions;
|
|
|
327
327
|
exports.default = _default;require('source-map-support').install();
|
|
328
328
|
|
|
329
329
|
|
|
330
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImV4dGVuc2lvbnMiLCJlbGVtZW50RGlzcGxheWVkIiwiZWwiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImlzV2ViQ29udGV4dCIsImF0b21zRWxlbWVudCIsImdldEF0b21zRWxlbWVudCIsImV4ZWN1dGVBdG9tIiwicHJveHlDb21tYW5kIiwiZWxlbWVudEVuYWJsZWQiLCJlbGVtZW50U2VsZWN0ZWQiLCJnZXROYW1lIiwic2NyaXB0IiwiZ2V0TmF0aXZlQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZ2V0Q29udGVudFNpemUiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiXyIsImlzTnVsbCIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEF0dHJpYnV0ZSIsImdldFByb3BlcnR5IiwicHJvcGVydHkiLCJnZXRUZXh0IiwiZ2V0RWxlbWVudFJlY3QiLCJ4IiwieSIsImdldExvY2F0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJnZXRTaXplIiwiZ2V0TmF0aXZlUmVjdCIsImxvYyIsIm9wdHMiLCJhYnNvbHV0ZVdlYkxvY2F0aW9ucyIsInhPZmZzZXQiLCJ5T2Zmc2V0IiwiZXhlY3V0ZSIsInJlY3QiLCJnZXRMb2NhdGlvbkluVmlldyIsInByZXBhcmVJbnB1dFZhbHVlIiwiaW5wIiwiaXNBcnJheSIsImlzRmluaXRlIiwic29tZSIsImYiLCJFcnJvciIsImpvaW4iLCJtYXAiLCJrIiwic2V0VmFsdWVJbW1lZGlhdGUiLCJsb2ciLCJpbmZvIiwic2V0VmFsdWUiLCJrZXlzIiwiY2xlYXIiLCJlcnJvcnMiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIiwidHlwZSIsImxvY2F0b3IiLCJjb250ZW50SGVpZ2h0IiwiY2hpbGRyZW4iLCJmaW5kRWxPckVscyIsImxlbmd0aCIsImhlYWQiLCJmaXJzdFJlY3QiLCJsYXN0UmVjdCIsImxhc3QiLCJlbHNJblJvdyIsImluaXRpYWxSZWN0cyIsImkiLCJwdXNoIiwic3BhY2VCZXR3ZWVuRWxzIiwibnVtUm93cyIsIk1hdGgiLCJjZWlsIiwic2l6ZSIsIm9yaWdpbiIsInRvcCIsImxlZnQiLCJzY3JvbGxhYmxlT2Zmc2V0IiwiaXNLZXlib2FyZFNob3duIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiaWduIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5lbGVtZW50RGlzcGxheWVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudERpc3BsYXllZCAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnaXNfZGlzcGxheWVkJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS9kaXNwbGF5ZWRgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50RW5hYmxlZCA9IGFzeW5jIGZ1bmN0aW9uIGVsZW1lbnRFbmFibGVkIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdpc19lbmFibGVkJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS9lbmFibGVkYCwgJ0dFVCcpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudFNlbGVjdGVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudFNlbGVjdGVkIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdpc19zZWxlY3RlZCcsIFthdG9tc0VsZW1lbnRdKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vc2VsZWN0ZWRgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXROYW1lID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmFtZSAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICBjb25zdCBzY3JpcHQgPSAncmV0dXJuIGFyZ3VtZW50c1swXS50YWdOYW1lLnRvTG93ZXJDYXNlKCknO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIFthdG9tc0VsZW1lbnRdXSk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L25hbWVgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXROYXRpdmVBdHRyaWJ1dGUgPSBhc3luYyBmdW5jdGlvbiBnZXROYXRpdmVBdHRyaWJ1dGUgKGF0dHJpYnV0ZSwgZWwpIHtcbiAgaWYgKGF0dHJpYnV0ZSA9PT0gJ2NvbnRlbnRTaXplJykge1xuICAgIC8vIGRvbid0IHByb3h5IHJlcXVlc3RzIGZvciB0aGUgY29udGVudCBzaXplIG9mIGEgc2Nyb2xsYWJsZSBlbGVtZW50XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q29udGVudFNpemUoZWwpO1xuICB9XG5cbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuXG4gIC8vIG90aGVyd2lzZSBsZXQgV0RBIGhhbmRsZSBhdHRyaWJ1dGUgcmVxdWVzdHNcbiAgbGV0IHZhbHVlID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2F0dHJpYnV0ZS8ke2F0dHJpYnV0ZX1gLCAnR0VUJyk7XG4gIC8vIFRyYW5zZm9ybSB0aGUgcmVzdWx0IGZvciB0aGUgY2FzZSB3aGVuIFdEQSByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gZm9yIGEgYm9vbGVhbiB2YWx1ZVxuICBpZiAoWzAsIDFdLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgIHZhbHVlID0gISF2YWx1ZTtcbiAgfVxuICAvLyBUaGUgcmV0dXJuZWQgdmFsdWUgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBhY2NvcmRpbmcgdG8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZ2V0LWVsZW1lbnQtYXR0cmlidXRlXG4gIHJldHVybiAoXy5pc051bGwodmFsdWUpIHx8IF8uaXNTdHJpbmcodmFsdWUpKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufTtcblxuY29tbWFuZHMuZ2V0QXR0cmlidXRlID0gYXN5bmMgZnVuY3Rpb24gZ2V0QXR0cmlidXRlIChhdHRyaWJ1dGUsIGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlQXR0cmlidXRlKGF0dHJpYnV0ZSwgZWwpO1xuICB9XG4gIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF9hdHRyaWJ1dGVfdmFsdWUnLCBbYXRvbXNFbGVtZW50LCBhdHRyaWJ1dGVdKTtcbn07XG5cbmNvbW1hbmRzLmdldFByb3BlcnR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0UHJvcGVydHkgKHByb3BlcnR5LCBlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldE5hdGl2ZUF0dHJpYnV0ZShwcm9wZXJ0eSwgZWwpO1xuICB9XG4gIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF9hdHRyaWJ1dGVfdmFsdWUnLCBbYXRvbXNFbGVtZW50LCBwcm9wZXJ0eV0pO1xufTtcblxuY29tbWFuZHMuZ2V0VGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldFRleHQgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS90ZXh0YCwgJ0dFVCcpO1xuICB9XG4gIGxldCBhdG9tc0VsZW1lbnQgPSB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdnZXRfdGV4dCcsIFthdG9tc0VsZW1lbnRdKTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3QgKGVsKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgLy8gTW9iaWxlIHNhZmFyaSBkb2Vzbid0IHN1cHBvcnQgcmVjdFxuICAgIGNvbnN0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShlbCk7XG4gICAgcmV0dXJuIHt4LCB5LCB3aWR0aCwgaGVpZ2h0fTtcbiAgfVxuXG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlUmVjdChlbCk7XG59O1xuXG5leHRlbnNpb25zLmdldE5hdGl2ZVJlY3QgPSBhc3luYyBmdW5jdGlvbiBnZXROYXRpdmVSZWN0IChlbCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L3JlY3RgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXRMb2NhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldExvY2F0aW9uIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gYXdhaXQgdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIGxldCBsb2MgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdnZXRfdG9wX2xlZnRfY29vcmRpbmF0ZXMnLCBbYXRvbXNFbGVtZW50XSk7XG4gICAgaWYgKHRoaXMub3B0cy5hYnNvbHV0ZVdlYkxvY2F0aW9ucykge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gJ3JldHVybiBbJyArXG4gICAgICAgICdNYXRoLm1heCh3aW5kb3cucGFnZVhPZmZzZXQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSwnICtcbiAgICAgICAgJ01hdGgubWF4KHdpbmRvdy5wYWdlWU9mZnNldCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKV07JztcbiAgICAgIGNvbnN0IFt4T2Zmc2V0LCB5T2Zmc2V0XSA9IGF3YWl0IHRoaXMuZXhlY3V0ZShzY3JpcHQpO1xuICAgICAgbG9jLnggKz0geE9mZnNldDtcbiAgICAgIGxvYy55ICs9IHlPZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiBsb2M7XG4gIH1cblxuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChlbCk7XG4gIHJldHVybiB7eDogcmVjdC54LCB5OiByZWN0Lnl9O1xufTtcblxuY29tbWFuZHMuZ2V0TG9jYXRpb25JblZpZXcgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2NhdGlvbkluVmlldyAoZWwpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xufTtcblxuY29tbWFuZHMuZ2V0U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFNpemUgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZ2V0X3NpemUnLCBbdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpXSk7XG4gIH1cblxuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChlbCk7XG4gIHJldHVybiB7d2lkdGg6IHJlY3Qud2lkdGgsIGhlaWdodDogcmVjdC5oZWlnaHR9O1xufTtcblxuLyoqXG4gKiBQcmVwYXJlcyB0aGUgaW5wdXQgdmFsdWUgdG8gYmUgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIFdEQS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBcnJheTxzdHJpbmc+fG51bWJlcn0gaW5wIFRoZSBhY3R1YWwgdGV4dCB0byB0eXBlLlxuICogQWNjZXB0YWJsZSB2YWx1ZXMgb2YgYGlucGA6XG4gKiAgIFsnc29tZSB0ZXh0J11cbiAqICAgWydzJywgJ28nLCAnbScsICdlJywgJyAnLCAndCcsICdlJywgJ3gnLCAndCddXG4gKiAgICdzb21lIHRleHQnXG4gKiAgIDEyMzRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdmFsdWUgaXMgbm90IGFjY2VwdGFibGUgZm9yIGlucHV0XG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gVGhlIHByZXByb2Nlc3NlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBwcmVwYXJlSW5wdXRWYWx1ZSAoaW5wKSB7XG4gIGlmICghW18uaXNBcnJheSwgXy5pc1N0cmluZywgXy5pc0Zpbml0ZV0uc29tZSgoZikgPT4gZihpbnApKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBzdHJpbmdzLCBudW1iZXJzIGFuZCBhcnJheXMgYXJlIHN1cHBvcnRlZCBhcyBpbnB1dCBhcmd1bWVudHMuIGAgK1xuICAgICAgYFJlY2VpdmVkOiAke0pTT04uc3RyaW5naWZ5KGlucCl9YCk7XG4gIH1cblxuICAvLyBtYWtlIGl0IGludG8gYSBzdHJpbmcsIHNvIHRoZW4gd2UgYXNzdXJlXG4gIC8vIHRoZSBhcnJheSBpdGVtcyBhcmUgc2luZ2xlIGNoYXJhY3RlcnNcbiAgaWYgKF8uaXNBcnJheShpbnApKSB7XG4gICAgaW5wID0gaW5wLmpvaW4oJycpO1xuICB9IGVsc2UgaWYgKF8uaXNGaW5pdGUoaW5wKSkge1xuICAgIGlucCA9IGAke2lucH1gO1xuICB9XG4gIC8vIFRoZSBgc3BsaXRgIG1ldGhvZCBtdXN0IG5vdCBiZSB1c2VkIG9uIHRoZSBzdHJpbmdcbiAgLy8gdG8gcHJvcGVybHkgaGFuZGxlIGFsbCBVbmljb2RlIGNvZGUgcG9pbnRzXG4gIHJldHVybiBbLi4uaW5wXS5tYXAoKGspID0+IHtcbiAgICBpZiAoWydcXHVFMDA2JywgJ1xcdUUwMDcnXS5pbmNsdWRlcyhrKSkgeyAvLyBSRVRVUk4gb3IgRU5URVJcbiAgICAgIHJldHVybiAnXFxuJztcbiAgICB9XG4gICAgaWYgKFsnXFx1RTAwMycsICdcXHVlMDE3J10uaW5jbHVkZXMoaykpIHsgLy8gQkFDS1NQQUNFIG9yIERFTEVURVxuICAgICAgcmV0dXJuICdcXGInO1xuICAgIH1cbiAgICByZXR1cm4gaztcbiAgfSk7XG59XG5cbmNvbW1hbmRzLnNldFZhbHVlSW1tZWRpYXRlID0gYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWVJbW1lZGlhdGUgKHZhbHVlLCBlbCkge1xuICAvLyBXREEgZG9lcyBub3QgcHJvdmlkZSBubyB3YXkgdG8gc2V0IHRoZSB2YWx1ZSBkaXJlY3RseVxuICB0aGlzLmxvZy5pbmZvKCdUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGJ5cGFzcyB0eXBpbmcgdXNpbmcgWENVSVRlc3QuIFNldHRpbmcgdmFsdWUgdGhyb3VnaCBrZXlib2FyZCcpO1xuICBhd2FpdCB0aGlzLnNldFZhbHVlKHZhbHVlLCBlbCk7XG59O1xuXG5jb21tYW5kcy5zZXRWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFZhbHVlICh2YWx1ZSwgZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vdmFsdWVgLCAnUE9TVCcsIHtcbiAgICAgIHZhbHVlOiBwcmVwYXJlSW5wdXRWYWx1ZSh2YWx1ZSksXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdjbGljaycsIFthdG9tc0VsZW1lbnRdKTtcbiAgYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgndHlwZScsIFthdG9tc0VsZW1lbnQsIHZhbHVlXSk7XG59O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAodmFsdWUpIHtcbiAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEva2V5cycsICdQT1NUJywge1xuICAgIHZhbHVlOiBwcmVwYXJlSW5wdXRWYWx1ZSh2YWx1ZSksXG4gIH0pO1xufTtcblxuY29tbWFuZHMuY2xlYXIgPSBhc3luYyBmdW5jdGlvbiBjbGVhciAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdjbGVhcicsIFthdG9tc0VsZW1lbnRdKTtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2NsZWFyYCwgJ1BPU1QnKTtcbn07XG5cbmNvbW1hbmRzLmdldENvbnRlbnRTaXplID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29udGVudFNpemUgKGVsKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCdTdXBwb3J0IGZvciBnZXRDb250ZW50U2l6ZSBmb3Igd2ViIGNvbnRleHQgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4gUGxlYXNlIGNvbnRhY3QgYW4gQXBwaXVtIGRldicpO1xuICB9XG5cbiAgY29uc3QgdHlwZSA9IGF3YWl0IHRoaXMuZ2V0QXR0cmlidXRlKCd0eXBlJywgZWwpO1xuXG4gIGlmICh0eXBlICE9PSAnWENVSUVsZW1lbnRUeXBlVGFibGUnICYmXG4gICAgICB0eXBlICE9PSAnWENVSUVsZW1lbnRUeXBlQ29sbGVjdGlvblZpZXcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBnZXQgY29udGVudCBzaXplIGZvciB0eXBlICcke3R5cGV9Jywgb25seSBmb3IgYCArXG4gICAgICAgICAgICAgICAgICAgIGB0YWJsZXMgYW5kIGNvbGxlY3Rpb24gdmlld3NgKTtcbiAgfVxuICBsZXQgbG9jYXRvciA9ICcqJztcbiAgaWYgKHR5cGUgPT09ICdYQ1VJRWxlbWVudFR5cGVUYWJsZScpIHtcbiAgICAvLyBvbmx5IGZpbmQgdGFibGUgY2VsbHMsIG5vdCBqdXN0IGFueSBjaGlsZHJlblxuICAgIGxvY2F0b3IgPSAnWENVSUVsZW1lbnRUeXBlQ2VsbCc7XG4gIH1cblxuICBsZXQgY29udGVudEhlaWdodCA9IDA7XG4gIGNvbnN0IGNoaWxkcmVuID0gYXdhaXQgdGhpcy5maW5kRWxPckVscyhgY2xhc3MgY2hhaW5gLCBsb2NhdG9yLCB0cnVlLCBlbCk7XG4gIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBpZiB3ZSBrbm93IHRoZXJlJ3Mgb25seSBvbmUgZWxlbWVudCwgd2UgY2FuIG9wdGltaXplIHRvIG1ha2UganVzdCBvbmVcbiAgICAvLyBjYWxsIHRvIFdEQVxuICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KF8uaGVhZChjaGlsZHJlbikpO1xuICAgIGNvbnRlbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAvLyBvdGhlcndpc2UgaWYgd2UgaGF2ZSBtdWx0aXBsZSBlbGVtZW50cywgbG9naWMgZGlmZmVycyBiYXNlZCBvbiBlbGVtZW50XG4gICAgLy8gdHlwZVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnWENVSUVsZW1lbnRUeXBlVGFibGUnOiB7XG4gICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoXy5oZWFkKGNoaWxkcmVuKSk7XG4gICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChfLmxhc3QoY2hpbGRyZW4pKTtcbiAgICAgICAgY29udGVudEhlaWdodCA9IGxhc3RSZWN0LnkgKyBsYXN0UmVjdC5oZWlnaHQgLSBmaXJzdFJlY3QueTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdYQ1VJRWxlbWVudFR5cGVDb2xsZWN0aW9uVmlldyc6IHtcbiAgICAgICAgbGV0IGVsc0luUm93ID0gMTsgLy8gd2Uga25vdyB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSByb3dcbiAgICAgICAgbGV0IGZpcnN0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoXy5oZWFkKGNoaWxkcmVuKSk7XG4gICAgICAgIGxldCBpbml0aWFsUmVjdHMgPSBbZmlyc3RSZWN0XTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGNoaWxkcmVuW2ldKTtcbiAgICAgICAgICBpbml0aWFsUmVjdHMucHVzaChyZWN0KTtcbiAgICAgICAgICBpZiAocmVjdC55ICE9PSBmaXJzdFJlY3QueSkge1xuICAgICAgICAgICAgZWxzSW5Sb3cgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNwYWNlQmV0d2VlbkVscyA9IGluaXRpYWxSZWN0c1tlbHNJblJvd10ueSAtIGluaXRpYWxSZWN0c1tlbHNJblJvdyAtIDFdLnkgLSBpbml0aWFsUmVjdHNbZWxzSW5Sb3cgLSAxXS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IG51bVJvd3MgPSBNYXRoLmNlaWwoY2hpbGRyZW4ubGVuZ3RoIC8gZWxzSW5Sb3cpO1xuXG4gICAgICAgIC8vIGFzc3VtZSBhbGwgY2VsbHMgYXJlIHRoZSBzYW1lIGhlaWdodFxuICAgICAgICBjb250ZW50SGVpZ2h0ID0gKG51bVJvd3MgKiBmaXJzdFJlY3QuaGVpZ2h0KSArIChzcGFjZUJldHdlZW5FbHMgKiAobnVtUm93cyAtIDEpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFByb2dyYW1taW5nIGVycm9yOiB0eXBlICcke3R5cGV9JyB3YXMgbm90IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB2YWxpZCBidXQgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHJlamVjdGVkYCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNpemUgPSBhd2FpdCB0aGlzLmdldFNpemUoZWwpO1xuICBjb25zdCBvcmlnaW4gPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGVsKTtcbiAgLy8gYXR0cmlidXRlcyBoYXZlIHRvIGJlIHN0cmluZ3MsIHNvIHN0cmluZ2lmeSB0aGlzIHVwXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgd2lkdGg6IHNpemUud2lkdGgsXG4gICAgaGVpZ2h0OiBzaXplLmhlaWdodCxcbiAgICB0b3A6IG9yaWdpbi55LFxuICAgIGxlZnQ6IG9yaWdpbi54LFxuICAgIHNjcm9sbGFibGVPZmZzZXQ6IGNvbnRlbnRIZWlnaHRcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5pc0tleWJvYXJkU2hvd24gPSBhc3luYyBmdW5jdGlvbiBpc0tleWJvYXJkU2hvd24gKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZUtleWJvYXJkJywgZmFsc2UpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMpO1xuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBQUEsTUFBcUJDLFVBQVUsR0FBRyxFQUFsQzs7O0FBRUFELFFBQVEsQ0FBQ0UsZ0JBQVQsR0FBNEIsZUFBZUEsZ0JBQWYsQ0FBaUNDLEVBQWpDLEVBQXFDO0VBQy9EQSxFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7O0VBQ0EsSUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTUMsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0lBQ0EsT0FBTyxNQUFNLEtBQUtNLFdBQUwsQ0FBaUIsY0FBakIsRUFBaUMsQ0FBQ0YsWUFBRCxDQUFqQyxDQUFiO0VBQ0Q7O0VBRUQsT0FBTyxNQUFNLEtBQUtHLFlBQUwsQ0FBbUIsWUFBV1AsRUFBRyxZQUFqQyxFQUE4QyxLQUE5QyxDQUFiO0FBQ0QsQ0FSRDs7QUFVQUgsUUFBUSxDQUFDVyxjQUFULEdBQTBCLGVBQWVBLGNBQWYsQ0FBK0JSLEVBQS9CLEVBQW1DO0VBQzNEQSxFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7O0VBQ0EsSUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTUMsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0lBQ0EsT0FBTyxNQUFNLEtBQUtNLFdBQUwsQ0FBaUIsWUFBakIsRUFBK0IsQ0FBQ0YsWUFBRCxDQUEvQixDQUFiO0VBQ0Q7O0VBRUQsT0FBTyxNQUFNLEtBQUtHLFlBQUwsQ0FBbUIsWUFBV1AsRUFBRyxVQUFqQyxFQUE0QyxLQUE1QyxDQUFiO0FBQ0QsQ0FSRDs7QUFVQUgsUUFBUSxDQUFDWSxlQUFULEdBQTJCLGVBQWVBLGVBQWYsQ0FBZ0NULEVBQWhDLEVBQW9DO0VBQzdEQSxFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7O0VBQ0EsSUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTUMsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0lBQ0EsT0FBTyxNQUFNLEtBQUtNLFdBQUwsQ0FBaUIsYUFBakIsRUFBZ0MsQ0FBQ0YsWUFBRCxDQUFoQyxDQUFiO0VBQ0Q7O0VBRUQsT0FBTyxNQUFNLEtBQUtHLFlBQUwsQ0FBbUIsWUFBV1AsRUFBRyxXQUFqQyxFQUE2QyxLQUE3QyxDQUFiO0FBQ0QsQ0FSRDs7QUFVQUgsUUFBUSxDQUFDYSxPQUFULEdBQW1CLGVBQWVBLE9BQWYsQ0FBd0JWLEVBQXhCLEVBQTRCO0VBQzdDQSxFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7O0VBQ0EsSUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTUMsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0lBQ0EsTUFBTVcsTUFBTSxHQUFHLDJDQUFmO0lBQ0EsT0FBTyxNQUFNLEtBQUtMLFdBQUwsQ0FBaUIsZ0JBQWpCLEVBQW1DLENBQUNLLE1BQUQsRUFBUyxDQUFDUCxZQUFELENBQVQsQ0FBbkMsQ0FBYjtFQUNEOztFQUVELE9BQU8sTUFBTSxLQUFLRyxZQUFMLENBQW1CLFlBQVdQLEVBQUcsT0FBakMsRUFBeUMsS0FBekMsQ0FBYjtBQUNELENBVEQ7O0FBV0FILFFBQVEsQ0FBQ2Usa0JBQVQsR0FBOEIsZUFBZUEsa0JBQWYsQ0FBbUNDLFNBQW5DLEVBQThDYixFQUE5QyxFQUFrRDtFQUM5RSxJQUFJYSxTQUFTLEtBQUssYUFBbEIsRUFBaUM7SUFFL0IsT0FBTyxNQUFNLEtBQUtDLGNBQUwsQ0FBb0JkLEVBQXBCLENBQWI7RUFDRDs7RUFFREEsRUFBRSxHQUFHQyxjQUFLQyxhQUFMLENBQW1CRixFQUFuQixDQUFMO0VBR0EsSUFBSWUsS0FBSyxHQUFHLE1BQU0sS0FBS1IsWUFBTCxDQUFtQixZQUFXUCxFQUFHLGNBQWFhLFNBQVUsRUFBeEQsRUFBMkQsS0FBM0QsQ0FBbEI7O0VBRUEsSUFBSSxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU9HLFFBQVAsQ0FBZ0JELEtBQWhCLENBQUosRUFBNEI7SUFDMUJBLEtBQUssR0FBRyxDQUFDLENBQUNBLEtBQVY7RUFDRDs7RUFFRCxPQUFRRSxnQkFBRUMsTUFBRixDQUFTSCxLQUFULEtBQW1CRSxnQkFBRUUsUUFBRixDQUFXSixLQUFYLENBQXBCLEdBQXlDQSxLQUF6QyxHQUFpREssSUFBSSxDQUFDQyxTQUFMLENBQWVOLEtBQWYsQ0FBeEQ7QUFDRCxDQWhCRDs7QUFrQkFsQixRQUFRLENBQUN5QixZQUFULEdBQXdCLGVBQWVBLFlBQWYsQ0FBNkJULFNBQTdCLEVBQXdDYixFQUF4QyxFQUE0QztFQUNsRUEsRUFBRSxHQUFHQyxjQUFLQyxhQUFMLENBQW1CRixFQUFuQixDQUFMOztFQUNBLElBQUksQ0FBQyxLQUFLRyxZQUFMLEVBQUwsRUFBMEI7SUFDeEIsT0FBTyxNQUFNLEtBQUtTLGtCQUFMLENBQXdCQyxTQUF4QixFQUFtQ2IsRUFBbkMsQ0FBYjtFQUNEOztFQUNELE1BQU1JLFlBQVksR0FBRyxLQUFLQyxlQUFMLENBQXFCTCxFQUFyQixDQUFyQjtFQUNBLE9BQU8sTUFBTSxLQUFLTSxXQUFMLENBQWlCLHFCQUFqQixFQUF3QyxDQUFDRixZQUFELEVBQWVTLFNBQWYsQ0FBeEMsQ0FBYjtBQUNELENBUEQ7O0FBU0FoQixRQUFRLENBQUMwQixXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDeEIsRUFBdEMsRUFBMEM7RUFDL0RBLEVBQUUsR0FBR0MsY0FBS0MsYUFBTCxDQUFtQkYsRUFBbkIsQ0FBTDs7RUFDQSxJQUFJLENBQUMsS0FBS0csWUFBTCxFQUFMLEVBQTBCO0lBQ3hCLE9BQU8sTUFBTSxLQUFLUyxrQkFBTCxDQUF3QlksUUFBeEIsRUFBa0N4QixFQUFsQyxDQUFiO0VBQ0Q7O0VBQ0QsTUFBTUksWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0VBQ0EsT0FBTyxNQUFNLEtBQUtNLFdBQUwsQ0FBaUIscUJBQWpCLEVBQXdDLENBQUNGLFlBQUQsRUFBZW9CLFFBQWYsQ0FBeEMsQ0FBYjtBQUNELENBUEQ7O0FBU0EzQixRQUFRLENBQUM0QixPQUFULEdBQW1CLGVBQWVBLE9BQWYsQ0FBd0J6QixFQUF4QixFQUE0QjtFQUM3Q0EsRUFBRSxHQUFHQyxjQUFLQyxhQUFMLENBQW1CRixFQUFuQixDQUFMOztFQUNBLElBQUksQ0FBQyxLQUFLRyxZQUFMLEVBQUwsRUFBMEI7SUFDeEIsT0FBTyxNQUFNLEtBQUtJLFlBQUwsQ0FBbUIsWUFBV1AsRUFBRyxPQUFqQyxFQUF5QyxLQUF6QyxDQUFiO0VBQ0Q7O0VBQ0QsSUFBSUksWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQW5CO0VBQ0EsT0FBTyxNQUFNLEtBQUtNLFdBQUwsQ0FBaUIsVUFBakIsRUFBNkIsQ0FBQ0YsWUFBRCxDQUE3QixDQUFiO0FBQ0QsQ0FQRDs7QUFTQVAsUUFBUSxDQUFDNkIsY0FBVCxHQUEwQixlQUFlQSxjQUFmLENBQStCMUIsRUFBL0IsRUFBbUM7RUFDM0QsSUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7SUFFdkIsTUFBTTtNQUFDd0IsQ0FBRDtNQUFJQztJQUFKLElBQVMsTUFBTSxLQUFLQyxXQUFMLENBQWlCN0IsRUFBakIsQ0FBckI7SUFDQSxNQUFNO01BQUM4QixLQUFEO01BQVFDO0lBQVIsSUFBa0IsTUFBTSxLQUFLQyxPQUFMLENBQWFoQyxFQUFiLENBQTlCO0lBQ0EsT0FBTztNQUFDMkIsQ0FBRDtNQUFJQyxDQUFKO01BQU9FLEtBQVA7TUFBY0M7SUFBZCxDQUFQO0VBQ0Q7O0VBRUQvQixFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7RUFDQSxPQUFPLE1BQU0sS0FBS2lDLGFBQUwsQ0FBbUJqQyxFQUFuQixDQUFiO0FBQ0QsQ0FWRDs7QUFZQUYsVUFBVSxDQUFDbUMsYUFBWCxHQUEyQixlQUFlQSxhQUFmLENBQThCakMsRUFBOUIsRUFBa0M7RUFDM0QsT0FBTyxNQUFNLEtBQUtPLFlBQUwsQ0FBbUIsWUFBV1AsRUFBRyxPQUFqQyxFQUF5QyxLQUF6QyxDQUFiO0FBQ0QsQ0FGRDs7QUFJQUgsUUFBUSxDQUFDZ0MsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCN0IsRUFBNUIsRUFBZ0M7RUFDckRBLEVBQUUsR0FBR0MsY0FBS0MsYUFBTCxDQUFtQkYsRUFBbkIsQ0FBTDs7RUFDQSxJQUFJLEtBQUtHLFlBQUwsRUFBSixFQUF5QjtJQUN2QixNQUFNQyxZQUFZLEdBQUcsTUFBTSxLQUFLQyxlQUFMLENBQXFCTCxFQUFyQixDQUEzQjtJQUNBLElBQUlrQyxHQUFHLEdBQUcsTUFBTSxLQUFLNUIsV0FBTCxDQUFpQiwwQkFBakIsRUFBNkMsQ0FBQ0YsWUFBRCxDQUE3QyxDQUFoQjs7SUFDQSxJQUFJLEtBQUsrQixJQUFMLENBQVVDLG9CQUFkLEVBQW9DO01BQ2xDLE1BQU16QixNQUFNLEdBQUcsYUFDYiw0RkFEYSxHQUViLDJGQUZGO01BR0EsTUFBTSxDQUFDMEIsT0FBRCxFQUFVQyxPQUFWLElBQXFCLE1BQU0sS0FBS0MsT0FBTCxDQUFhNUIsTUFBYixDQUFqQztNQUNBdUIsR0FBRyxDQUFDUCxDQUFKLElBQVNVLE9BQVQ7TUFDQUgsR0FBRyxDQUFDTixDQUFKLElBQVNVLE9BQVQ7SUFDRDs7SUFDRCxPQUFPSixHQUFQO0VBQ0Q7O0VBRUQsTUFBTU0sSUFBSSxHQUFHLE1BQU0sS0FBS2QsY0FBTCxDQUFvQjFCLEVBQXBCLENBQW5CO0VBQ0EsT0FBTztJQUFDMkIsQ0FBQyxFQUFFYSxJQUFJLENBQUNiLENBQVQ7SUFBWUMsQ0FBQyxFQUFFWSxJQUFJLENBQUNaO0VBQXBCLENBQVA7QUFDRCxDQWxCRDs7QUFvQkEvQixRQUFRLENBQUM0QyxpQkFBVCxHQUE2QixlQUFlQSxpQkFBZixDQUFrQ3pDLEVBQWxDLEVBQXNDO0VBQ2pFLE9BQU8sTUFBTSxLQUFLNkIsV0FBTCxDQUFpQjdCLEVBQWpCLENBQWI7QUFDRCxDQUZEOztBQUlBSCxRQUFRLENBQUNtQyxPQUFULEdBQW1CLGVBQWVBLE9BQWYsQ0FBd0JoQyxFQUF4QixFQUE0QjtFQUM3Q0EsRUFBRSxHQUFHQyxjQUFLQyxhQUFMLENBQW1CRixFQUFuQixDQUFMOztFQUNBLElBQUksS0FBS0csWUFBTCxFQUFKLEVBQXlCO0lBQ3ZCLE9BQU8sTUFBTSxLQUFLRyxXQUFMLENBQWlCLFVBQWpCLEVBQTZCLENBQUMsS0FBS0QsZUFBTCxDQUFxQkwsRUFBckIsQ0FBRCxDQUE3QixDQUFiO0VBQ0Q7O0VBRUQsTUFBTXdDLElBQUksR0FBRyxNQUFNLEtBQUtkLGNBQUwsQ0FBb0IxQixFQUFwQixDQUFuQjtFQUNBLE9BQU87SUFBQzhCLEtBQUssRUFBRVUsSUFBSSxDQUFDVixLQUFiO0lBQW9CQyxNQUFNLEVBQUVTLElBQUksQ0FBQ1Q7RUFBakMsQ0FBUDtBQUNELENBUkQ7O0FBc0JBLFNBQVNXLGlCQUFULENBQTRCQyxHQUE1QixFQUFpQztFQUMvQixJQUFJLENBQUMsQ0FBQzFCLGdCQUFFMkIsT0FBSCxFQUFZM0IsZ0JBQUVFLFFBQWQsRUFBd0JGLGdCQUFFNEIsUUFBMUIsRUFBb0NDLElBQXBDLENBQTBDQyxDQUFELElBQU9BLENBQUMsQ0FBQ0osR0FBRCxDQUFqRCxDQUFMLEVBQThEO0lBQzVELE1BQU0sSUFBSUssS0FBSixDQUFXLHFFQUFELEdBQ2IsYUFBWTVCLElBQUksQ0FBQ0MsU0FBTCxDQUFlc0IsR0FBZixDQUFvQixFQUQ3QixDQUFOO0VBRUQ7O0VBSUQsSUFBSTFCLGdCQUFFMkIsT0FBRixDQUFVRCxHQUFWLENBQUosRUFBb0I7SUFDbEJBLEdBQUcsR0FBR0EsR0FBRyxDQUFDTSxJQUFKLENBQVMsRUFBVCxDQUFOO0VBQ0QsQ0FGRCxNQUVPLElBQUloQyxnQkFBRTRCLFFBQUYsQ0FBV0YsR0FBWCxDQUFKLEVBQXFCO0lBQzFCQSxHQUFHLEdBQUksR0FBRUEsR0FBSSxFQUFiO0VBQ0Q7O0VBR0QsT0FBTyxDQUFDLEdBQUdBLEdBQUosRUFBU08sR0FBVCxDQUFjQyxDQUFELElBQU87SUFDekIsSUFBSSxDQUFDLFFBQUQsRUFBVyxRQUFYLEVBQXFCbkMsUUFBckIsQ0FBOEJtQyxDQUE5QixDQUFKLEVBQXNDO01BQ3BDLE9BQU8sSUFBUDtJQUNEOztJQUNELElBQUksQ0FBQyxRQUFELEVBQVcsUUFBWCxFQUFxQm5DLFFBQXJCLENBQThCbUMsQ0FBOUIsQ0FBSixFQUFzQztNQUNwQyxPQUFPLElBQVA7SUFDRDs7SUFDRCxPQUFPQSxDQUFQO0VBQ0QsQ0FSTSxDQUFQO0FBU0Q7O0FBRUR0RCxRQUFRLENBQUN1RCxpQkFBVCxHQUE2QixlQUFlQSxpQkFBZixDQUFrQ3JDLEtBQWxDLEVBQXlDZixFQUF6QyxFQUE2QztFQUV4RSxLQUFLcUQsR0FBTCxDQUFTQyxJQUFULENBQWMsMkZBQWQ7RUFDQSxNQUFNLEtBQUtDLFFBQUwsQ0FBY3hDLEtBQWQsRUFBcUJmLEVBQXJCLENBQU47QUFDRCxDQUpEOztBQU1BSCxRQUFRLENBQUMwRCxRQUFULEdBQW9CLGVBQWVBLFFBQWYsQ0FBeUJ4QyxLQUF6QixFQUFnQ2YsRUFBaEMsRUFBb0M7RUFDdERBLEVBQUUsR0FBR0MsY0FBS0MsYUFBTCxDQUFtQkYsRUFBbkIsQ0FBTDs7RUFDQSxJQUFJLENBQUMsS0FBS0csWUFBTCxFQUFMLEVBQTBCO0lBQ3hCLE1BQU0sS0FBS0ksWUFBTCxDQUFtQixZQUFXUCxFQUFHLFFBQWpDLEVBQTBDLE1BQTFDLEVBQWtEO01BQ3REZSxLQUFLLEVBQUUyQixpQkFBaUIsQ0FBQzNCLEtBQUQ7SUFEOEIsQ0FBbEQsQ0FBTjtJQUdBO0VBQ0Q7O0VBRUQsTUFBTVgsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0VBQ0EsTUFBTSxLQUFLTSxXQUFMLENBQWlCLE9BQWpCLEVBQTBCLENBQUNGLFlBQUQsQ0FBMUIsQ0FBTjtFQUNBLE1BQU0sS0FBS0UsV0FBTCxDQUFpQixNQUFqQixFQUF5QixDQUFDRixZQUFELEVBQWVXLEtBQWYsQ0FBekIsQ0FBTjtBQUNELENBWkQ7O0FBY0FsQixRQUFRLENBQUMyRCxJQUFULEdBQWdCLGVBQWVBLElBQWYsQ0FBcUJ6QyxLQUFyQixFQUE0QjtFQUMxQyxNQUFNLEtBQUtSLFlBQUwsQ0FBa0IsV0FBbEIsRUFBK0IsTUFBL0IsRUFBdUM7SUFDM0NRLEtBQUssRUFBRTJCLGlCQUFpQixDQUFDM0IsS0FBRDtFQURtQixDQUF2QyxDQUFOO0FBR0QsQ0FKRDs7QUFNQWxCLFFBQVEsQ0FBQzRELEtBQVQsR0FBaUIsZUFBZUEsS0FBZixDQUFzQnpELEVBQXRCLEVBQTBCO0VBQ3pDQSxFQUFFLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLEVBQW5CLENBQUw7O0VBQ0EsSUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTUMsWUFBWSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJMLEVBQXJCLENBQXJCO0lBQ0EsTUFBTSxLQUFLTSxXQUFMLENBQWlCLE9BQWpCLEVBQTBCLENBQUNGLFlBQUQsQ0FBMUIsQ0FBTjtJQUNBO0VBQ0Q7O0VBQ0QsTUFBTSxLQUFLRyxZQUFMLENBQW1CLFlBQVdQLEVBQUcsUUFBakMsRUFBMEMsTUFBMUMsQ0FBTjtBQUNELENBUkQ7O0FBVUFILFFBQVEsQ0FBQ2lCLGNBQVQsR0FBMEIsZUFBZUEsY0FBZixDQUErQmQsRUFBL0IsRUFBbUM7RUFDM0QsSUFBSSxLQUFLRyxZQUFMLEVBQUosRUFBeUI7SUFDdkIsTUFBTSxJQUFJdUQsbUJBQU9DLHNCQUFYLENBQWtDLGlHQUFsQyxDQUFOO0VBQ0Q7O0VBRUQsTUFBTUMsSUFBSSxHQUFHLE1BQU0sS0FBS3RDLFlBQUwsQ0FBa0IsTUFBbEIsRUFBMEJ0QixFQUExQixDQUFuQjs7RUFFQSxJQUFJNEQsSUFBSSxLQUFLLHNCQUFULElBQ0FBLElBQUksS0FBSywrQkFEYixFQUM4QztJQUM1QyxNQUFNLElBQUlaLEtBQUosQ0FBVyxvQ0FBbUNZLElBQUssY0FBekMsR0FDQyw2QkFEWCxDQUFOO0VBRUQ7O0VBQ0QsSUFBSUMsT0FBTyxHQUFHLEdBQWQ7O0VBQ0EsSUFBSUQsSUFBSSxLQUFLLHNCQUFiLEVBQXFDO0lBRW5DQyxPQUFPLEdBQUcscUJBQVY7RUFDRDs7RUFFRCxJQUFJQyxhQUFhLEdBQUcsQ0FBcEI7RUFDQSxNQUFNQyxRQUFRLEdBQUcsTUFBTSxLQUFLQyxXQUFMLENBQWtCLGFBQWxCLEVBQWdDSCxPQUFoQyxFQUF5QyxJQUF6QyxFQUErQzdELEVBQS9DLENBQXZCOztFQUNBLElBQUkrRCxRQUFRLENBQUNFLE1BQVQsS0FBb0IsQ0FBeEIsRUFBMkI7SUFHekIsTUFBTXpCLElBQUksR0FBRyxNQUFNLEtBQUtkLGNBQUwsQ0FBb0JULGdCQUFFaUQsSUFBRixDQUFPSCxRQUFQLENBQXBCLENBQW5CO0lBQ0FELGFBQWEsR0FBR3RCLElBQUksQ0FBQ1QsTUFBckI7RUFDRCxDQUxELE1BS08sSUFBSWdDLFFBQVEsQ0FBQ0UsTUFBYixFQUFxQjtJQUcxQixRQUFRTCxJQUFSO01BQ0UsS0FBSyxzQkFBTDtRQUE2QjtVQUMzQixNQUFNTyxTQUFTLEdBQUcsTUFBTSxLQUFLekMsY0FBTCxDQUFvQlQsZ0JBQUVpRCxJQUFGLENBQU9ILFFBQVAsQ0FBcEIsQ0FBeEI7VUFDQSxNQUFNSyxRQUFRLEdBQUcsTUFBTSxLQUFLMUMsY0FBTCxDQUFvQlQsZ0JBQUVvRCxJQUFGLENBQU9OLFFBQVAsQ0FBcEIsQ0FBdkI7VUFDQUQsYUFBYSxHQUFHTSxRQUFRLENBQUN4QyxDQUFULEdBQWF3QyxRQUFRLENBQUNyQyxNQUF0QixHQUErQm9DLFNBQVMsQ0FBQ3ZDLENBQXpEO1VBQ0E7UUFDRDs7TUFDRCxLQUFLLCtCQUFMO1FBQXNDO1VBQ3BDLElBQUkwQyxRQUFRLEdBQUcsQ0FBZjtVQUNBLElBQUlILFNBQVMsR0FBRyxNQUFNLEtBQUt6QyxjQUFMLENBQW9CVCxnQkFBRWlELElBQUYsQ0FBT0gsUUFBUCxDQUFwQixDQUF0QjtVQUNBLElBQUlRLFlBQVksR0FBRyxDQUFDSixTQUFELENBQW5COztVQUNBLEtBQUssSUFBSUssQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR1QsUUFBUSxDQUFDRSxNQUE3QixFQUFxQ08sQ0FBQyxFQUF0QyxFQUEwQztZQUN4QyxNQUFNaEMsSUFBSSxHQUFHLE1BQU0sS0FBS2QsY0FBTCxDQUFvQnFDLFFBQVEsQ0FBQ1MsQ0FBRCxDQUE1QixDQUFuQjtZQUNBRCxZQUFZLENBQUNFLElBQWIsQ0FBa0JqQyxJQUFsQjs7WUFDQSxJQUFJQSxJQUFJLENBQUNaLENBQUwsS0FBV3VDLFNBQVMsQ0FBQ3ZDLENBQXpCLEVBQTRCO2NBQzFCMEMsUUFBUSxHQUFHRSxDQUFYO2NBQ0E7WUFDRDtVQUNGOztVQUNELE1BQU1FLGVBQWUsR0FBR0gsWUFBWSxDQUFDRCxRQUFELENBQVosQ0FBdUIxQyxDQUF2QixHQUEyQjJDLFlBQVksQ0FBQ0QsUUFBUSxHQUFHLENBQVosQ0FBWixDQUEyQjFDLENBQXRELEdBQTBEMkMsWUFBWSxDQUFDRCxRQUFRLEdBQUcsQ0FBWixDQUFaLENBQTJCdkMsTUFBN0c7VUFDQSxNQUFNNEMsT0FBTyxHQUFHQyxJQUFJLENBQUNDLElBQUwsQ0FBVWQsUUFBUSxDQUFDRSxNQUFULEdBQWtCSyxRQUE1QixDQUFoQjtVQUdBUixhQUFhLEdBQUlhLE9BQU8sR0FBR1IsU0FBUyxDQUFDcEMsTUFBckIsR0FBZ0MyQyxlQUFlLElBQUlDLE9BQU8sR0FBRyxDQUFkLENBQS9EO1VBQ0E7UUFDRDs7TUFDRDtRQUFTLE1BQU0sSUFBSTNCLEtBQUosQ0FBVyw0QkFBMkJZLElBQUssWUFBakMsR0FDQyw2Q0FEWCxDQUFOO0lBMUJYO0VBNkJEOztFQUNELE1BQU1rQixJQUFJLEdBQUcsTUFBTSxLQUFLOUMsT0FBTCxDQUFhaEMsRUFBYixDQUFuQjtFQUNBLE1BQU0rRSxNQUFNLEdBQUcsTUFBTSxLQUFLdEMsaUJBQUwsQ0FBdUJ6QyxFQUF2QixDQUFyQjtFQUVBLE9BQU9vQixJQUFJLENBQUNDLFNBQUwsQ0FBZTtJQUNwQlMsS0FBSyxFQUFFZ0QsSUFBSSxDQUFDaEQsS0FEUTtJQUVwQkMsTUFBTSxFQUFFK0MsSUFBSSxDQUFDL0MsTUFGTztJQUdwQmlELEdBQUcsRUFBRUQsTUFBTSxDQUFDbkQsQ0FIUTtJQUlwQnFELElBQUksRUFBRUYsTUFBTSxDQUFDcEQsQ0FKTztJQUtwQnVELGdCQUFnQixFQUFFcEI7RUFMRSxDQUFmLENBQVA7QUFPRCxDQXBFRDs7QUFzRUFqRSxRQUFRLENBQUNzRixlQUFULEdBQTJCLGVBQWVBLGVBQWYsR0FBa0M7RUFDM0QsSUFBSTtJQUNGLE1BQU0sS0FBS0MsMkJBQUwsQ0FBaUMsWUFBakMsRUFBK0MseUJBQS9DLEVBQTBFLEtBQTFFLENBQU47SUFDQSxPQUFPLElBQVA7RUFDRCxDQUhELENBR0UsT0FBT0MsR0FBUCxFQUFZO0lBQ1osT0FBTyxLQUFQO0VBQ0Q7QUFDRixDQVBEOztBQVNBQyxNQUFNLENBQUNDLE1BQVAsQ0FBY3pGLFVBQWQsRUFBMEJELFFBQTFCO2VBRWVDLFUifQ==
|
|
330
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImV4dGVuc2lvbnMiLCJlbGVtZW50RGlzcGxheWVkIiwiZWwiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImlzV2ViQ29udGV4dCIsImF0b21zRWxlbWVudCIsImdldEF0b21zRWxlbWVudCIsImV4ZWN1dGVBdG9tIiwicHJveHlDb21tYW5kIiwiZWxlbWVudEVuYWJsZWQiLCJlbGVtZW50U2VsZWN0ZWQiLCJnZXROYW1lIiwic2NyaXB0IiwiZ2V0TmF0aXZlQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZ2V0Q29udGVudFNpemUiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiXyIsImlzTnVsbCIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEF0dHJpYnV0ZSIsImdldFByb3BlcnR5IiwicHJvcGVydHkiLCJnZXRUZXh0IiwiZ2V0RWxlbWVudFJlY3QiLCJ4IiwieSIsImdldExvY2F0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJnZXRTaXplIiwiZ2V0TmF0aXZlUmVjdCIsImxvYyIsIm9wdHMiLCJhYnNvbHV0ZVdlYkxvY2F0aW9ucyIsInhPZmZzZXQiLCJ5T2Zmc2V0IiwiZXhlY3V0ZSIsInJlY3QiLCJnZXRMb2NhdGlvbkluVmlldyIsInByZXBhcmVJbnB1dFZhbHVlIiwiaW5wIiwiaXNBcnJheSIsImlzRmluaXRlIiwic29tZSIsImYiLCJFcnJvciIsImpvaW4iLCJtYXAiLCJrIiwic2V0VmFsdWVJbW1lZGlhdGUiLCJsb2ciLCJpbmZvIiwic2V0VmFsdWUiLCJrZXlzIiwiY2xlYXIiLCJlcnJvcnMiLCJOb3RZZXRJbXBsZW1lbnRlZEVycm9yIiwidHlwZSIsImxvY2F0b3IiLCJjb250ZW50SGVpZ2h0IiwiY2hpbGRyZW4iLCJmaW5kRWxPckVscyIsImxlbmd0aCIsImhlYWQiLCJmaXJzdFJlY3QiLCJsYXN0UmVjdCIsImxhc3QiLCJlbHNJblJvdyIsImluaXRpYWxSZWN0cyIsImkiLCJwdXNoIiwic3BhY2VCZXR3ZWVuRWxzIiwibnVtUm93cyIsIk1hdGgiLCJjZWlsIiwic2l6ZSIsIm9yaWdpbiIsInRvcCIsImxlZnQiLCJzY3JvbGxhYmxlT2Zmc2V0IiwiaXNLZXlib2FyZFNob3duIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiaWduIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5lbGVtZW50RGlzcGxheWVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudERpc3BsYXllZCAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnaXNfZGlzcGxheWVkJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS9kaXNwbGF5ZWRgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50RW5hYmxlZCA9IGFzeW5jIGZ1bmN0aW9uIGVsZW1lbnRFbmFibGVkIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdpc19lbmFibGVkJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS9lbmFibGVkYCwgJ0dFVCcpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudFNlbGVjdGVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudFNlbGVjdGVkIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdpc19zZWxlY3RlZCcsIFthdG9tc0VsZW1lbnRdKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vc2VsZWN0ZWRgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXROYW1lID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmFtZSAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICBjb25zdCBzY3JpcHQgPSAncmV0dXJuIGFyZ3VtZW50c1swXS50YWdOYW1lLnRvTG93ZXJDYXNlKCknO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIFthdG9tc0VsZW1lbnRdXSk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L25hbWVgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXROYXRpdmVBdHRyaWJ1dGUgPSBhc3luYyBmdW5jdGlvbiBnZXROYXRpdmVBdHRyaWJ1dGUgKGF0dHJpYnV0ZSwgZWwpIHtcbiAgaWYgKGF0dHJpYnV0ZSA9PT0gJ2NvbnRlbnRTaXplJykge1xuICAgIC8vIGRvbid0IHByb3h5IHJlcXVlc3RzIGZvciB0aGUgY29udGVudCBzaXplIG9mIGEgc2Nyb2xsYWJsZSBlbGVtZW50XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q29udGVudFNpemUoZWwpO1xuICB9XG5cbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuXG4gIC8vIG90aGVyd2lzZSBsZXQgV0RBIGhhbmRsZSBhdHRyaWJ1dGUgcmVxdWVzdHNcbiAgbGV0IHZhbHVlID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2F0dHJpYnV0ZS8ke2F0dHJpYnV0ZX1gLCAnR0VUJyk7XG4gIC8vIFRyYW5zZm9ybSB0aGUgcmVzdWx0IGZvciB0aGUgY2FzZSB3aGVuIFdEQSByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gZm9yIGEgYm9vbGVhbiB2YWx1ZVxuICBpZiAoWzAsIDFdLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgIHZhbHVlID0gISF2YWx1ZTtcbiAgfVxuICAvLyBUaGUgcmV0dXJuZWQgdmFsdWUgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBhY2NvcmRpbmcgdG8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZ2V0LWVsZW1lbnQtYXR0cmlidXRlXG4gIHJldHVybiAoXy5pc051bGwodmFsdWUpIHx8IF8uaXNTdHJpbmcodmFsdWUpKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufTtcblxuY29tbWFuZHMuZ2V0QXR0cmlidXRlID0gYXN5bmMgZnVuY3Rpb24gZ2V0QXR0cmlidXRlIChhdHRyaWJ1dGUsIGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlQXR0cmlidXRlKGF0dHJpYnV0ZSwgZWwpO1xuICB9XG4gIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF9hdHRyaWJ1dGVfdmFsdWUnLCBbYXRvbXNFbGVtZW50LCBhdHRyaWJ1dGVdKTtcbn07XG5cbmNvbW1hbmRzLmdldFByb3BlcnR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0UHJvcGVydHkgKHByb3BlcnR5LCBlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldE5hdGl2ZUF0dHJpYnV0ZShwcm9wZXJ0eSwgZWwpO1xuICB9XG4gIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2dldF9hdHRyaWJ1dGVfdmFsdWUnLCBbYXRvbXNFbGVtZW50LCBwcm9wZXJ0eV0pO1xufTtcblxuY29tbWFuZHMuZ2V0VGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldFRleHQgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvZWxlbWVudC8ke2VsfS90ZXh0YCwgJ0dFVCcpO1xuICB9XG4gIGxldCBhdG9tc0VsZW1lbnQgPSB0aGlzLmdldEF0b21zRWxlbWVudChlbCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdnZXRfdGV4dCcsIFthdG9tc0VsZW1lbnRdKTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3QgKGVsKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgLy8gTW9iaWxlIHNhZmFyaSBkb2Vzbid0IHN1cHBvcnQgcmVjdFxuICAgIGNvbnN0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShlbCk7XG4gICAgcmV0dXJuIHt4LCB5LCB3aWR0aCwgaGVpZ2h0fTtcbiAgfVxuXG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmF0aXZlUmVjdChlbCk7XG59O1xuXG5leHRlbnNpb25zLmdldE5hdGl2ZVJlY3QgPSBhc3luYyBmdW5jdGlvbiBnZXROYXRpdmVSZWN0IChlbCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L3JlY3RgLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXRMb2NhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldExvY2F0aW9uIChlbCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgY29uc3QgYXRvbXNFbGVtZW50ID0gYXdhaXQgdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICAgIGxldCBsb2MgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdnZXRfdG9wX2xlZnRfY29vcmRpbmF0ZXMnLCBbYXRvbXNFbGVtZW50XSk7XG4gICAgaWYgKHRoaXMub3B0cy5hYnNvbHV0ZVdlYkxvY2F0aW9ucykge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gJ3JldHVybiBbJyArXG4gICAgICAgICdNYXRoLm1heCh3aW5kb3cucGFnZVhPZmZzZXQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSwnICtcbiAgICAgICAgJ01hdGgubWF4KHdpbmRvdy5wYWdlWU9mZnNldCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKV07JztcbiAgICAgIGNvbnN0IFt4T2Zmc2V0LCB5T2Zmc2V0XSA9IGF3YWl0IHRoaXMuZXhlY3V0ZShzY3JpcHQpO1xuICAgICAgbG9jLnggKz0geE9mZnNldDtcbiAgICAgIGxvYy55ICs9IHlPZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiBsb2M7XG4gIH1cblxuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChlbCk7XG4gIHJldHVybiB7eDogcmVjdC54LCB5OiByZWN0Lnl9O1xufTtcblxuY29tbWFuZHMuZ2V0TG9jYXRpb25JblZpZXcgPSBhc3luYyBmdW5jdGlvbiBnZXRMb2NhdGlvbkluVmlldyAoZWwpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xufTtcblxuY29tbWFuZHMuZ2V0U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFNpemUgKGVsKSB7XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZ2V0X3NpemUnLCBbdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpXSk7XG4gIH1cblxuICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChlbCk7XG4gIHJldHVybiB7d2lkdGg6IHJlY3Qud2lkdGgsIGhlaWdodDogcmVjdC5oZWlnaHR9O1xufTtcblxuLyoqXG4gKiBQcmVwYXJlcyB0aGUgaW5wdXQgdmFsdWUgdG8gYmUgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIFdEQS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xBcnJheTxzdHJpbmc+fG51bWJlcn0gaW5wIFRoZSBhY3R1YWwgdGV4dCB0byB0eXBlLlxuICogQWNjZXB0YWJsZSB2YWx1ZXMgb2YgYGlucGA6XG4gKiAgIFsnc29tZSB0ZXh0J11cbiAqICAgWydzJywgJ28nLCAnbScsICdlJywgJyAnLCAndCcsICdlJywgJ3gnLCAndCddXG4gKiAgICdzb21lIHRleHQnXG4gKiAgIDEyMzRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdmFsdWUgaXMgbm90IGFjY2VwdGFibGUgZm9yIGlucHV0XG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gVGhlIHByZXByb2Nlc3NlZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBwcmVwYXJlSW5wdXRWYWx1ZSAoaW5wKSB7XG4gIGlmICghW18uaXNBcnJheSwgXy5pc1N0cmluZywgXy5pc0Zpbml0ZV0uc29tZSgoZikgPT4gZihpbnApKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBzdHJpbmdzLCBudW1iZXJzIGFuZCBhcnJheXMgYXJlIHN1cHBvcnRlZCBhcyBpbnB1dCBhcmd1bWVudHMuIGAgK1xuICAgICAgYFJlY2VpdmVkOiAke0pTT04uc3RyaW5naWZ5KGlucCl9YCk7XG4gIH1cblxuICAvLyBtYWtlIGl0IGludG8gYSBzdHJpbmcsIHNvIHRoZW4gd2UgYXNzdXJlXG4gIC8vIHRoZSBhcnJheSBpdGVtcyBhcmUgc2luZ2xlIGNoYXJhY3RlcnNcbiAgaWYgKF8uaXNBcnJheShpbnApKSB7XG4gICAgaW5wID0gaW5wLmpvaW4oJycpO1xuICB9IGVsc2UgaWYgKF8uaXNGaW5pdGUoaW5wKSkge1xuICAgIGlucCA9IGAke2lucH1gO1xuICB9XG4gIC8vIFRoZSBgc3BsaXRgIG1ldGhvZCBtdXN0IG5vdCBiZSB1c2VkIG9uIHRoZSBzdHJpbmdcbiAgLy8gdG8gcHJvcGVybHkgaGFuZGxlIGFsbCBVbmljb2RlIGNvZGUgcG9pbnRzXG4gIHJldHVybiBbLi4uaW5wXS5tYXAoKGspID0+IHtcbiAgICBpZiAoWydcXHVFMDA2JywgJ1xcdUUwMDcnXS5pbmNsdWRlcyhrKSkgeyAvLyBSRVRVUk4gb3IgRU5URVJcbiAgICAgIHJldHVybiAnXFxuJztcbiAgICB9XG4gICAgaWYgKFsnXFx1RTAwMycsICdcXHVlMDE3J10uaW5jbHVkZXMoaykpIHsgLy8gQkFDS1NQQUNFIG9yIERFTEVURVxuICAgICAgcmV0dXJuICdcXGInO1xuICAgIH1cbiAgICByZXR1cm4gaztcbiAgfSk7XG59XG5cbmNvbW1hbmRzLnNldFZhbHVlSW1tZWRpYXRlID0gYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWVJbW1lZGlhdGUgKHZhbHVlLCBlbCkge1xuICAvLyBXREEgZG9lcyBub3QgcHJvdmlkZSBubyB3YXkgdG8gc2V0IHRoZSB2YWx1ZSBkaXJlY3RseVxuICB0aGlzLmxvZy5pbmZvKCdUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGJ5cGFzcyB0eXBpbmcgdXNpbmcgWENVSVRlc3QuIFNldHRpbmcgdmFsdWUgdGhyb3VnaCBrZXlib2FyZCcpO1xuICBhd2FpdCB0aGlzLnNldFZhbHVlKHZhbHVlLCBlbCk7XG59O1xuXG5jb21tYW5kcy5zZXRWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFZhbHVlICh2YWx1ZSwgZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL2VsZW1lbnQvJHtlbH0vdmFsdWVgLCAnUE9TVCcsIHtcbiAgICAgIHZhbHVlOiBwcmVwYXJlSW5wdXRWYWx1ZSh2YWx1ZSksXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYXRvbXNFbGVtZW50ID0gdGhpcy5nZXRBdG9tc0VsZW1lbnQoZWwpO1xuICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdjbGljaycsIFthdG9tc0VsZW1lbnRdKTtcbiAgYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgndHlwZScsIFthdG9tc0VsZW1lbnQsIHZhbHVlXSk7XG59O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAodmFsdWUpIHtcbiAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEva2V5cycsICdQT1NUJywge1xuICAgIHZhbHVlOiBwcmVwYXJlSW5wdXRWYWx1ZSh2YWx1ZSksXG4gIH0pO1xufTtcblxuY29tbWFuZHMuY2xlYXIgPSBhc3luYyBmdW5jdGlvbiBjbGVhciAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMuZ2V0QXRvbXNFbGVtZW50KGVsKTtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdjbGVhcicsIFthdG9tc0VsZW1lbnRdKTtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC9lbGVtZW50LyR7ZWx9L2NsZWFyYCwgJ1BPU1QnKTtcbn07XG5cbmNvbW1hbmRzLmdldENvbnRlbnRTaXplID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q29udGVudFNpemUgKGVsKSB7XG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCdTdXBwb3J0IGZvciBnZXRDb250ZW50U2l6ZSBmb3Igd2ViIGNvbnRleHQgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4gUGxlYXNlIGNvbnRhY3QgYW4gQXBwaXVtIGRldicpO1xuICB9XG5cbiAgY29uc3QgdHlwZSA9IGF3YWl0IHRoaXMuZ2V0QXR0cmlidXRlKCd0eXBlJywgZWwpO1xuXG4gIGlmICh0eXBlICE9PSAnWENVSUVsZW1lbnRUeXBlVGFibGUnICYmXG4gICAgICB0eXBlICE9PSAnWENVSUVsZW1lbnRUeXBlQ29sbGVjdGlvblZpZXcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBnZXQgY29udGVudCBzaXplIGZvciB0eXBlICcke3R5cGV9Jywgb25seSBmb3IgYCArXG4gICAgICAgICAgICAgICAgICAgIGB0YWJsZXMgYW5kIGNvbGxlY3Rpb24gdmlld3NgKTtcbiAgfVxuICBsZXQgbG9jYXRvciA9ICcqJztcbiAgaWYgKHR5cGUgPT09ICdYQ1VJRWxlbWVudFR5cGVUYWJsZScpIHtcbiAgICAvLyBvbmx5IGZpbmQgdGFibGUgY2VsbHMsIG5vdCBqdXN0IGFueSBjaGlsZHJlblxuICAgIGxvY2F0b3IgPSAnWENVSUVsZW1lbnRUeXBlQ2VsbCc7XG4gIH1cblxuICBsZXQgY29udGVudEhlaWdodCA9IDA7XG4gIGNvbnN0IGNoaWxkcmVuID0gYXdhaXQgdGhpcy5maW5kRWxPckVscyhgY2xhc3MgY2hhaW5gLCBsb2NhdG9yLCB0cnVlLCBlbCk7XG4gIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBpZiB3ZSBrbm93IHRoZXJlJ3Mgb25seSBvbmUgZWxlbWVudCwgd2UgY2FuIG9wdGltaXplIHRvIG1ha2UganVzdCBvbmVcbiAgICAvLyBjYWxsIHRvIFdEQVxuICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KF8uaGVhZChjaGlsZHJlbikpO1xuICAgIGNvbnRlbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAvLyBvdGhlcndpc2UgaWYgd2UgaGF2ZSBtdWx0aXBsZSBlbGVtZW50cywgbG9naWMgZGlmZmVycyBiYXNlZCBvbiBlbGVtZW50XG4gICAgLy8gdHlwZVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnWENVSUVsZW1lbnRUeXBlVGFibGUnOiB7XG4gICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoXy5oZWFkKGNoaWxkcmVuKSk7XG4gICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gYXdhaXQgdGhpcy5nZXRFbGVtZW50UmVjdChfLmxhc3QoY2hpbGRyZW4pKTtcbiAgICAgICAgY29udGVudEhlaWdodCA9IGxhc3RSZWN0LnkgKyBsYXN0UmVjdC5oZWlnaHQgLSBmaXJzdFJlY3QueTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdYQ1VJRWxlbWVudFR5cGVDb2xsZWN0aW9uVmlldyc6IHtcbiAgICAgICAgbGV0IGVsc0luUm93ID0gMTsgLy8gd2Uga25vdyB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHRoZSByb3dcbiAgICAgICAgbGV0IGZpcnN0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0RWxlbWVudFJlY3QoXy5oZWFkKGNoaWxkcmVuKSk7XG4gICAgICAgIGxldCBpbml0aWFsUmVjdHMgPSBbZmlyc3RSZWN0XTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGNoaWxkcmVuW2ldKTtcbiAgICAgICAgICBpbml0aWFsUmVjdHMucHVzaChyZWN0KTtcbiAgICAgICAgICBpZiAocmVjdC55ICE9PSBmaXJzdFJlY3QueSkge1xuICAgICAgICAgICAgZWxzSW5Sb3cgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNwYWNlQmV0d2VlbkVscyA9IGluaXRpYWxSZWN0c1tlbHNJblJvd10ueSAtIGluaXRpYWxSZWN0c1tlbHNJblJvdyAtIDFdLnkgLSBpbml0aWFsUmVjdHNbZWxzSW5Sb3cgLSAxXS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IG51bVJvd3MgPSBNYXRoLmNlaWwoY2hpbGRyZW4ubGVuZ3RoIC8gZWxzSW5Sb3cpO1xuXG4gICAgICAgIC8vIGFzc3VtZSBhbGwgY2VsbHMgYXJlIHRoZSBzYW1lIGhlaWdodFxuICAgICAgICBjb250ZW50SGVpZ2h0ID0gKG51bVJvd3MgKiBmaXJzdFJlY3QuaGVpZ2h0KSArIChzcGFjZUJldHdlZW5FbHMgKiAobnVtUm93cyAtIDEpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFByb2dyYW1taW5nIGVycm9yOiB0eXBlICcke3R5cGV9JyB3YXMgbm90IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB2YWxpZCBidXQgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHJlamVjdGVkYCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNpemUgPSBhd2FpdCB0aGlzLmdldFNpemUoZWwpO1xuICBjb25zdCBvcmlnaW4gPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGVsKTtcbiAgLy8gYXR0cmlidXRlcyBoYXZlIHRvIGJlIHN0cmluZ3MsIHNvIHN0cmluZ2lmeSB0aGlzIHVwXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgd2lkdGg6IHNpemUud2lkdGgsXG4gICAgaGVpZ2h0OiBzaXplLmhlaWdodCxcbiAgICB0b3A6IG9yaWdpbi55LFxuICAgIGxlZnQ6IG9yaWdpbi54LFxuICAgIHNjcm9sbGFibGVPZmZzZXQ6IGNvbnRlbnRIZWlnaHRcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5pc0tleWJvYXJkU2hvd24gPSBhc3luYyBmdW5jdGlvbiBpc0tleWJvYXJkU2hvd24gKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZUtleWJvYXJkJywgZmFsc2UpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMpO1xuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBQUEsTUFBcUJDLFVBQVUsR0FBRyxFQUFsQzs7O0FBRUFE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
|
|
@@ -138,4 +138,4 @@ var _default = extensions;
|
|
|
138
138
|
exports.default = _default;require('source-map-support').install();
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWx1ZSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInV0aWwiLCJoYXNWYWx1ZSIsImFzeW5jUHJvbWlzZSIsIndhcm4iLCJyZWplY3QiLCJtZXNzYWdlIiwiXyIsImlzU3RyaW5nIiwiZXJyb3IiLCJzdGFja3RyYWNlIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiY29udmVydEVsZW1lbnRzRm9yQXRvbXMiLCJyZXN1bHQiLCJleGVjdXRlQXRvbSIsImNhY2hlV2ViRWxlbWVudHMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZXhlY3V0ZUFzeW5jIiwiYXN5bmNXYWl0TXMiLCJwcm9taXNlIiwicmVtb3RlIiwiZXhlY3V0ZUF0b21Bc3luYyIsImN1cldlYkZyYW1lcyIsIndhaXRGb3JBdG9tIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJjb21tYW5kTWFwIiwidGFwIiwic2Nyb2xsIiwic2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsInN3aXBlIiwicGluY2giLCJkb3VibGVUYXAiLCJ0d29GaW5nZXJUYXAiLCJ0YXBXaXRoTnVtYmVyT2ZUYXBzIiwidG91Y2hBbmRIb2xkIiwiZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwicm90YXRlRWxlbWVudCIsImFsZXJ0Iiwic2V0UGFzdGVib2FyZCIsImdldFBhc3RlYm9hcmQiLCJzb3VyY2UiLCJnZXRDb250ZXh0cyIsImluc3RhbGxBcHAiLCJpc0FwcEluc3RhbGxlZCIsInJlbW92ZUFwcCIsImxhdW5jaEFwcCIsInRlcm1pbmF0ZUFwcCIsImtpbGxBcHAiLCJxdWVyeUFwcFN0YXRlIiwiYWN0aXZhdGVBcHAiLCJsaXN0QXBwcyIsInZpZXdwb3J0U2NyZWVuc2hvdCIsInZpZXdwb3J0UmVjdCIsInN0YXJ0UGVyZlJlY29yZCIsInN0b3BQZXJmUmVjb3JkIiwiaW5zdGFsbENlcnRpZmljYXRlIiwic3RhcnRMb2dzQnJvYWRjYXN0Iiwic3RvcExvZ3NCcm9hZGNhc3QiLCJiYXR0ZXJ5SW5mbyIsImRldmljZUluZm8iLCJnZXREZXZpY2VUaW1lIiwiYWN0aXZlQXBwSW5mbyIsImRldmljZVNjcmVlbkluZm8iLCJwcmVzc0J1dHRvbiIsImVucm9sbEJpb21ldHJpYyIsInNlbmRCaW9tZXRyaWNNYXRjaCIsImlzQmlvbWV0cmljRW5yb2xsZWQiLCJjbGVhcktleWNoYWlucyIsImdldFBlcm1pc3Npb24iLCJzZXRQZXJtaXNzaW9uIiwicmVzZXRQZXJtaXNzaW9uIiwiZ2V0QXBwZWFyYW5jZSIsInNldEFwcGVhcmFuY2UiLCJzaXJpQ29tbWFuZCIsImRlbGV0ZUZpbGUiLCJkZWxldGVGb2xkZXIiLCJzdGFydEF1ZGlvUmVjb3JkaW5nIiwic3RvcEF1ZGlvUmVjb3JkaW5nIiwicnVuWENUZXN0IiwiaW5zdGFsbFhDVGVzdEJ1bmRsZSIsImxpc3RYQ1Rlc3RCdW5kbGVzIiwibGlzdFhDVGVzdHNJblRlc3RCdW5kbGUiLCJwdXNoTm90aWZpY2F0aW9uIiwiZXhwZWN0Tm90aWZpY2F0aW9uIiwicGVyZm9ybUlvSGlkRXZlbnQiLCJjb25maWd1cmVMb2NhbGl6YXRpb24iLCJyZXNldExvY2F0aW9uU2VydmljZSIsInN0YXJ0UGNhcCIsInN0b3BQY2FwIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsImtleXMiLCJqb2luIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGVycm9ycywgZXJyb3JGcm9tQ29kZSwgZXJyb3JGcm9tVzNDSnNvbkNvZGVcbn0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgZXh0ZW5zaW9ucyA9IHt9O1xuXG5leHRlbnNpb25zLnJlY2VpdmVBc3luY1Jlc3BvbnNlID0gYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKHN0YXR1cywgdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMubG9nLmRlYnVnKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLmFzeW5jUHJvbWlzZSkpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZSB3aGVuIHdlIHdlcmUgbm90IGV4cGVjdGluZyBvbmUhIGAgK1xuICAgICAgYFJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAvLyBNSlNPTldQXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21Db2RlKHN0YXR1cywgdmFsdWUubWVzc2FnZSkpO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHZhbHVlICYmIF8uaXNTdHJpbmcodmFsdWUuZXJyb3IpKSB7XG4gICAgLy8gVzNDXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21XM0NKc29uQ29kZSh2YWx1ZS5lcnJvciwgdmFsdWUubWVzc2FnZSwgdmFsdWUuc3RhY2t0cmFjZSkpO1xuICB9XG4gIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3NdKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZUFzeW5jID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgdGhpcy5hc3luY1dhaXRNcyA9IHRoaXMuYXN5bmNXYWl0TXMgfHwgMDtcbiAgY29uc3QgcHJvbWlzZSA9IHRoaXMucmVtb3RlLmV4ZWN1dGVBdG9tQXN5bmMoJ2V4ZWN1dGVfYXN5bmNfc2NyaXB0JywgW3NjcmlwdCwgYXJncywgdGhpcy5hc3luY1dhaXRNc10sIHRoaXMuY3VyV2ViRnJhbWVzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2FpdEZvckF0b20ocHJvbWlzZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IHtcbiAgICAvL3JlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgdGFwOiAnbW9iaWxlVGFwJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHNlbGVjdFBpY2tlcldoZWVsVmFsdWU6ICdtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OC1zd2lwZWxlZnQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc0LXN3aXBlcmlnaHQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY3LXN3aXBldXA/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY0LXN3aXBlZG93bj9sYW5ndWFnZT1vYmpjXG4gICAgc3dpcGU6ICdtb2JpbGVTd2lwZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjktcGluY2h3aXRoc2NhbGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHBpbmNoOiAnbW9iaWxlUGluY2gnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjczLWRvdWJsZXRhcD9sYW5ndWFnZT1vYmpjXG4gICAgZG91YmxlVGFwOiAnbW9iaWxlRG91YmxlVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NS10d29maW5nZXJ0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIHR3b0ZpbmdlclRhcDogJ21vYmlsZVR3b0ZpbmdlclRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzEtdGFwd2l0aG51bWJlcm9mdGFwcz9sYW5ndWFnZT1vYmpjXG4gICAgdGFwV2l0aE51bWJlck9mVGFwczogJ21vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjYzLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIHRvdWNoQW5kSG9sZDogJ21vYmlsZVRvdWNoQW5kSG9sZCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzAtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uOiAnbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NS1yb3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHJvdGF0ZUVsZW1lbnQ6ICdtb2JpbGVSb3RhdGVFbGVtZW50JyxcblxuICAgIC8vZW5kcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICBhbGVydDogJ21vYmlsZUhhbmRsZUFsZXJ0JyxcblxuICAgIHNldFBhc3RlYm9hcmQ6ICdtb2JpbGVTZXRQYXN0ZWJvYXJkJyxcbiAgICBnZXRQYXN0ZWJvYXJkOiAnbW9iaWxlR2V0UGFzdGVib2FyZCcsXG5cbiAgICBzb3VyY2U6ICdtb2JpbGVHZXRTb3VyY2UnLFxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgLy9yZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG4gICAgaW5zdGFsbEFwcDogJ21vYmlsZUluc3RhbGxBcHAnLFxuICAgIGlzQXBwSW5zdGFsbGVkOiAnbW9iaWxlSXNBcHBJbnN0YWxsZWQnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgbGF1bmNoQXBwOiAnbW9iaWxlTGF1bmNoQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIGtpbGxBcHA6ICdtb2JpbGVLaWxsQXBwJyxcbiAgICBxdWVyeUFwcFN0YXRlOiAnbW9iaWxlUXVlcnlBcHBTdGF0ZScsXG4gICAgYWN0aXZhdGVBcHA6ICdtb2JpbGVBY3RpdmF0ZUFwcCcsXG4gICAgbGlzdEFwcHM6ICdtb2JpbGVMaXN0QXBwcycsXG4gICAgLy9lbmRyZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG5cbiAgICB2aWV3cG9ydFNjcmVlbnNob3Q6ICdnZXRWaWV3cG9ydFNjcmVlbnNob3QnLFxuICAgIHZpZXdwb3J0UmVjdDogJ2dldFZpZXdwb3J0UmVjdCcsXG5cbiAgICBzdGFydFBlcmZSZWNvcmQ6ICdtb2JpbGVTdGFydFBlcmZSZWNvcmQnLFxuICAgIHN0b3BQZXJmUmVjb3JkOiAnbW9iaWxlU3RvcFBlcmZSZWNvcmQnLFxuXG4gICAgaW5zdGFsbENlcnRpZmljYXRlOiAnbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcbiAgICBkZXZpY2VJbmZvOiAnbW9iaWxlR2V0RGV2aWNlSW5mbycsXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuICAgIGFjdGl2ZUFwcEluZm86ICdtb2JpbGVHZXRBY3RpdmVBcHBJbmZvJyxcbiAgICBkZXZpY2VTY3JlZW5JbmZvOiAnZ2V0U2NyZWVuSW5mbycsXG5cbiAgICBwcmVzc0J1dHRvbjogJ21vYmlsZVByZXNzQnV0dG9uJyxcblxuICAgIGVucm9sbEJpb21ldHJpYzogJ21vYmlsZUVucm9sbEJpb21ldHJpYycsXG4gICAgc2VuZEJpb21ldHJpY01hdGNoOiAnbW9iaWxlU2VuZEJpb21ldHJpY01hdGNoJyxcbiAgICBpc0Jpb21ldHJpY0Vucm9sbGVkOiAnbW9iaWxlSXNCaW9tZXRyaWNFbnJvbGxlZCcsXG5cbiAgICBjbGVhcktleWNoYWluczogJ21vYmlsZUNsZWFyS2V5Y2hhaW5zJyxcblxuICAgIGdldFBlcm1pc3Npb246ICdtb2JpbGVHZXRQZXJtaXNzaW9uJyxcbiAgICBzZXRQZXJtaXNzaW9uOiAnbW9iaWxlU2V0UGVybWlzc2lvbnMnLFxuICAgIHJlc2V0UGVybWlzc2lvbjogJ21vYmlsZVJlc2V0UGVybWlzc2lvbicsXG5cbiAgICBnZXRBcHBlYXJhbmNlOiAnbW9iaWxlR2V0QXBwZWFyYW5jZScsXG4gICAgc2V0QXBwZWFyYW5jZTogJ21vYmlsZVNldEFwcGVhcmFuY2UnLFxuXG4gICAgc2lyaUNvbW1hbmQ6ICdtb2JpbGVTaXJpQ29tbWFuZCcsXG5cbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG4gICAgZGVsZXRlRm9sZGVyOiAnbW9iaWxlRGVsZXRlRm9sZGVyJyxcblxuICAgIHN0YXJ0QXVkaW9SZWNvcmRpbmc6ICdzdGFydEF1ZGlvUmVjb3JkaW5nJyxcbiAgICBzdG9wQXVkaW9SZWNvcmRpbmc6ICdzdG9wQXVkaW9SZWNvcmRpbmcnLFxuXG4gICAgLy8gWENUZXN0XG4gICAgcnVuWENUZXN0OiAnbW9iaWxlUnVuWENUZXN0JyxcbiAgICBpbnN0YWxsWENUZXN0QnVuZGxlOiAnbW9iaWxlSW5zdGFsbFhDVGVzdEJ1bmRsZScsXG4gICAgbGlzdFhDVGVzdEJ1bmRsZXM6ICdtb2JpbGVMaXN0WENUZXN0QnVuZGxlcycsXG4gICAgbGlzdFhDVGVzdHNJblRlc3RCdW5kbGU6ICdtb2JpbGVMaXN0WENUZXN0c0luVGVzdEJ1bmRsZScsXG5cbiAgICBwdXNoTm90aWZpY2F0aW9uOiAnbW9iaWxlUHVzaE5vdGlmaWNhdGlvbicsXG4gICAgZXhwZWN0Tm90aWZpY2F0aW9uOiAnbW9iaWxlRXhwZWN0Tm90aWZpY2F0aW9uJyxcblxuICAgIHBlcmZvcm1Jb0hpZEV2ZW50OiAnbW9iaWxlUGVyZm9ybUlvSGlkRXZlbnQnLFxuXG4gICAgY29uZmlndXJlTG9jYWxpemF0aW9uOiAnbW9iaWxlQ29uZmlndXJlTG9jYWxpemF0aW9uJyxcblxuICAgIHJlc2V0TG9jYXRpb25TZXJ2aWNlOiAnbW9iaWxlUmVzZXRMb2NhdGlvblNlcnZpY2UnLFxuXG4gICAgc3RhcnRQY2FwOiAnbW9iaWxlU3RhcnRQY2FwJyxcbiAgICBzdG9wUGNhcDogJ21vYmlsZVN0b3BQY2FwJyxcbiAgfTtcblxuICBpZiAoIV8uaGFzKGNvbW1hbmRNYXAsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kICcke21vYmlsZUNvbW1hbmR9Jy4gT25seSAke18ua2V5cyhjb21tYW5kTWFwKS5qb2luKCcsICcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW2NvbW1hbmRNYXBbbW9iaWxlQ29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6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
|
|
141
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWx1ZSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInV0aWwiLCJoYXNWYWx1ZSIsImFzeW5jUHJvbWlzZSIsIndhcm4iLCJyZWplY3QiLCJlcnJvckZyb21Db2RlIiwibWVzc2FnZSIsIl8iLCJpc1N0cmluZyIsImVycm9yIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiY29udmVydEVsZW1lbnRzRm9yQXRvbXMiLCJyZXN1bHQiLCJleGVjdXRlQXRvbSIsImNhY2hlV2ViRWxlbWVudHMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZXhlY3V0ZUFzeW5jIiwiYXN5bmNXYWl0TXMiLCJwcm9taXNlIiwicmVtb3RlIiwiZXhlY3V0ZUF0b21Bc3luYyIsImN1cldlYkZyYW1lcyIsIndhaXRGb3JBdG9tIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJjb21tYW5kTWFwIiwidGFwIiwic2Nyb2xsIiwic2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsInN3aXBlIiwicGluY2giLCJkb3VibGVUYXAiLCJ0d29GaW5nZXJUYXAiLCJ0YXBXaXRoTnVtYmVyT2ZUYXBzIiwidG91Y2hBbmRIb2xkIiwiZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwicm90YXRlRWxlbWVudCIsImFsZXJ0Iiwic2V0UGFzdGVib2FyZCIsImdldFBhc3RlYm9hcmQiLCJzb3VyY2UiLCJnZXRDb250ZXh0cyIsImluc3RhbGxBcHAiLCJpc0FwcEluc3RhbGxlZCIsInJlbW92ZUFwcCIsImxhdW5jaEFwcCIsInRlcm1pbmF0ZUFwcCIsImtpbGxBcHAiLCJxdWVyeUFwcFN0YXRlIiwiYWN0aXZhdGVBcHAiLCJsaXN0QXBwcyIsInZpZXdwb3J0U2NyZWVuc2hvdCIsInZpZXdwb3J0UmVjdCIsInN0YXJ0UGVyZlJlY29yZCIsInN0b3BQZXJmUmVjb3JkIiwiaW5zdGFsbENlcnRpZmljYXRlIiwic3RhcnRMb2dzQnJvYWRjYXN0Iiwic3RvcExvZ3NCcm9hZGNhc3QiLCJiYXR0ZXJ5SW5mbyIsImRldmljZUluZm8iLCJnZXREZXZpY2VUaW1lIiwiYWN0aXZlQXBwSW5mbyIsImRldmljZVNjcmVlbkluZm8iLCJwcmVzc0J1dHRvbiIsImVucm9sbEJpb21ldHJpYyIsInNlbmRCaW9tZXRyaWNNYXRjaCIsImlzQmlvbWV0cmljRW5yb2xsZWQiLCJjbGVhcktleWNoYWlucyIsImdldFBlcm1pc3Npb24iLCJzZXRQZXJtaXNzaW9uIiwicmVzZXRQZXJtaXNzaW9uIiwiZ2V0QXBwZWFyYW5jZSIsInNldEFwcGVhcmFuY2UiLCJzaXJpQ29tbWFuZCIsImRlbGV0ZUZpbGUiLCJkZWxldGVGb2xkZXIiLCJzdGFydEF1ZGlvUmVjb3JkaW5nIiwic3RvcEF1ZGlvUmVjb3JkaW5nIiwicnVuWENUZXN0IiwiaW5zdGFsbFhDVGVzdEJ1bmRsZSIsImxpc3RYQ1Rlc3RCdW5kbGVzIiwibGlzdFhDVGVzdHNJblRlc3RCdW5kbGUiLCJwdXNoTm90aWZpY2F0aW9uIiwiZXhwZWN0Tm90aWZpY2F0aW9uIiwicGVyZm9ybUlvSGlkRXZlbnQiLCJjb25maWd1cmVMb2NhbGl6YXRpb24iLCJyZXNldExvY2F0aW9uU2VydmljZSIsInN0YXJ0UGNhcCIsInN0b3BQY2FwIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsImtleXMiLCJqb2luIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGVycm9ycywgZXJyb3JGcm9tQ29kZSwgZXJyb3JGcm9tVzNDSnNvbkNvZGVcbn0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgZXh0ZW5zaW9ucyA9IHt9O1xuXG5leHRlbnNpb25zLnJlY2VpdmVBc3luY1Jlc3BvbnNlID0gYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKHN0YXR1cywgdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMubG9nLmRlYnVnKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLmFzeW5jUHJvbWlzZSkpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZSB3aGVuIHdlIHdlcmUgbm90IGV4cGVjdGluZyBvbmUhIGAgK1xuICAgICAgYFJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAvLyBNSlNPTldQXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21Db2RlKHN0YXR1cywgdmFsdWUubWVzc2FnZSkpO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHZhbHVlICYmIF8uaXNTdHJpbmcodmFsdWUuZXJyb3IpKSB7XG4gICAgLy8gVzNDXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21XM0NKc29uQ29kZSh2YWx1ZS5lcnJvciwgdmFsdWUubWVzc2FnZSwgdmFsdWUuc3RhY2t0cmFjZSkpO1xuICB9XG4gIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3NdKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZUFzeW5jID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgdGhpcy5hc3luY1dhaXRNcyA9IHRoaXMuYXN5bmNXYWl0TXMgfHwgMDtcbiAgY29uc3QgcHJvbWlzZSA9IHRoaXMucmVtb3RlLmV4ZWN1dGVBdG9tQXN5bmMoJ2V4ZWN1dGVfYXN5bmNfc2NyaXB0JywgW3NjcmlwdCwgYXJncywgdGhpcy5hc3luY1dhaXRNc10sIHRoaXMuY3VyV2ViRnJhbWVzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2FpdEZvckF0b20ocHJvbWlzZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IHtcbiAgICAvL3JlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgdGFwOiAnbW9iaWxlVGFwJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHNlbGVjdFBpY2tlcldoZWVsVmFsdWU6ICdtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OC1zd2lwZWxlZnQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc0LXN3aXBlcmlnaHQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY3LXN3aXBldXA/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY0LXN3aXBlZG93bj9sYW5ndWFnZT1vYmpjXG4gICAgc3dpcGU6ICdtb2JpbGVTd2lwZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjktcGluY2h3aXRoc2NhbGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHBpbmNoOiAnbW9iaWxlUGluY2gnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjczLWRvdWJsZXRhcD9sYW5ndWFnZT1vYmpjXG4gICAgZG91YmxlVGFwOiAnbW9iaWxlRG91YmxlVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NS10d29maW5nZXJ0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIHR3b0ZpbmdlclRhcDogJ21vYmlsZVR3b0ZpbmdlclRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzEtdGFwd2l0aG51bWJlcm9mdGFwcz9sYW5ndWFnZT1vYmpjXG4gICAgdGFwV2l0aE51bWJlck9mVGFwczogJ21vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjYzLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIHRvdWNoQW5kSG9sZDogJ21vYmlsZVRvdWNoQW5kSG9sZCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzAtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uOiAnbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NS1yb3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHJvdGF0ZUVsZW1lbnQ6ICdtb2JpbGVSb3RhdGVFbGVtZW50JyxcblxuICAgIC8vZW5kcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICBhbGVydDogJ21vYmlsZUhhbmRsZUFsZXJ0JyxcblxuICAgIHNldFBhc3RlYm9hcmQ6ICdtb2JpbGVTZXRQYXN0ZWJvYXJkJyxcbiAgICBnZXRQYXN0ZWJvYXJkOiAnbW9iaWxlR2V0UGFzdGVib2FyZCcsXG5cbiAgICBzb3VyY2U6ICdtb2JpbGVHZXRTb3VyY2UnLFxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgLy9yZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG4gICAgaW5zdGFsbEFwcDogJ21vYmlsZUluc3RhbGxBcHAnLFxuICAgIGlzQXBwSW5zdGFsbGVkOiAnbW9iaWxlSXNBcHBJbnN0YWxsZWQnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgbGF1bmNoQXBwOiAnbW9iaWxlTGF1bmNoQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIGtpbGxBcHA6ICdtb2JpbGVLaWxsQXBwJyxcbiAgICBxdWVyeUFwcFN0YXRlOiAnbW9iaWxlUXVlcnlBcHBTdGF0ZScsXG4gICAgYWN0aXZhdGVBcHA6ICdtb2JpbGVBY3RpdmF0ZUFwcCcsXG4gICAgbGlzdEFwcHM6ICdtb2JpbGVMaXN0QXBwcycsXG4gICAgLy9lbmRyZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG5cbiAgICB2aWV3cG9ydFNjcmVlbnNob3Q6ICdnZXRWaWV3cG9ydFNjcmVlbnNob3QnLFxuICAgIHZpZXdwb3J0UmVjdDogJ2dldFZpZXdwb3J0UmVjdCcsXG5cbiAgICBzdGFydFBlcmZSZWNvcmQ6ICdtb2JpbGVTdGFydFBlcmZSZWNvcmQnLFxuICAgIHN0b3BQZXJmUmVjb3JkOiAnbW9iaWxlU3RvcFBlcmZSZWNvcmQnLFxuXG4gICAgaW5zdGFsbENlcnRpZmljYXRlOiAnbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcbiAgICBkZXZpY2VJbmZvOiAnbW9iaWxlR2V0RGV2aWNlSW5mbycsXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuICAgIGFjdGl2ZUFwcEluZm86ICdtb2JpbGVHZXRBY3RpdmVBcHBJbmZvJyxcbiAgICBkZXZpY2VTY3JlZW5JbmZvOiAnZ2V0U2NyZWVuSW5mbycsXG5cbiAgICBwcmVzc0J1dHRvbjogJ21vYmlsZVByZXNzQnV0dG9uJyxcblxuICAgIGVucm9sbEJpb21ldHJpYzogJ21vYmlsZUVucm9sbEJpb21ldHJpYycsXG4gICAgc2VuZEJpb21ldHJpY01hdGNoOiAnbW9iaWxlU2VuZEJpb21ldHJpY01hdGNoJyxcbiAgICBpc0Jpb21ldHJpY0Vucm9sbGVkOiAnbW9iaWxlSXNCaW9tZXRyaWNFbnJvbGxlZCcsXG5cbiAgICBjbGVhcktleWNoYWluczogJ21vYmlsZUNsZWFyS2V5Y2hhaW5zJyxcblxuICAgIGdldFBlcm1pc3Npb246ICdtb2JpbGVHZXRQZXJtaXNzaW9uJyxcbiAgICBzZXRQZXJtaXNzaW9uOiAnbW9iaWxlU2V0UGVybWlzc2lvbnMnLFxuICAgIHJlc2V0UGVybWlzc2lvbjogJ21vYmlsZVJlc2V0UGVybWlzc2lvbicsXG5cbiAgICBnZXRBcHBlYXJhbmNlOiAnbW9iaWxlR2V0QXBwZWFyYW5jZScsXG4gICAgc2V0QXBwZWFyYW5jZTogJ21vYmlsZVNldEFwcGVhcmFuY2UnLFxuXG4gICAgc2lyaUNvbW1hbmQ6ICdtb2JpbGVTaXJpQ29tbWFuZCcsXG5cbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG4gICAgZGVsZXRlRm9sZGVyOiAnbW9iaWxlRGVsZXRlRm9sZGVyJyxcblxuICAgIHN0YXJ0QXVkaW9SZWNvcmRpbmc6ICdzdGFydEF1ZGlvUmVjb3JkaW5nJyxcbiAgICBzdG9wQXVkaW9SZWNvcmRpbmc6ICdzdG9wQXVkaW9SZWNvcmRpbmcnLFxuXG4gICAgLy8gWENUZXN0XG4gICAgcnVuWENUZXN0OiAnbW9iaWxlUnVuWENUZXN0JyxcbiAgICBpbnN0YWxsWENUZXN0QnVuZGxlOiAnbW9iaWxlSW5zdGFsbFhDVGVzdEJ1bmRsZScsXG4gICAgbGlzdFhDVGVzdEJ1bmRsZXM6ICdtb2JpbGVMaXN0WENUZXN0QnVuZGxlcycsXG4gICAgbGlzdFhDVGVzdHNJblRlc3RCdW5kbGU6ICdtb2JpbGVMaXN0WENUZXN0c0luVGVzdEJ1bmRsZScsXG5cbiAgICBwdXNoTm90aWZpY2F0aW9uOiAnbW9iaWxlUHVzaE5vdGlmaWNhdGlvbicsXG4gICAgZXhwZWN0Tm90aWZpY2F0aW9uOiAnbW9iaWxlRXhwZWN0Tm90aWZpY2F0aW9uJyxcblxuICAgIHBlcmZvcm1Jb0hpZEV2ZW50OiAnbW9iaWxlUGVyZm9ybUlvSGlkRXZlbnQnLFxuXG4gICAgY29uZmlndXJlTG9jYWxpemF0aW9uOiAnbW9iaWxlQ29uZmlndXJlTG9jYWxpemF0aW9uJyxcblxuICAgIHJlc2V0TG9jYXRpb25TZXJ2aWNlOiAnbW9iaWxlUmVzZXRMb2NhdGlvblNlcnZpY2UnLFxuXG4gICAgc3RhcnRQY2FwOiAnbW9iaWxlU3RhcnRQY2FwJyxcbiAgICBzdG9wUGNhcDogJ21vYmlsZVN0b3BQY2FwJyxcbiAgfTtcblxuICBpZiAoIV8uaGFzKGNvbW1hbmRNYXAsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kICcke21vYmlsZUNvbW1hbmR9Jy4gT25seSAke18ua2V5cyhjb21tYW5kTWFwKS5qb2luKCcsICcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW2NvbW1hbmRNYXBbbW9iaWxlQ29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhw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
|