@phenixrts/sdk 2024.2.1 → 2024.2.2-beta.289

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.
Files changed (44) hide show
  1. package/channels/debug/channels.js +62 -58
  2. package/channels/debug/package.json +1 -1
  3. package/channels/debug/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  4. package/channels/debug.private/channels.js +60 -56
  5. package/channels/debug.private/package.json +1 -1
  6. package/channels/debug.private/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  7. package/channels/es5.debug.private/channels.js +56 -52
  8. package/channels/es5.debug.private/package.json +1 -1
  9. package/channels/min/378.js.map +1 -1
  10. package/channels/min/channels.js +1 -1
  11. package/channels/min/channels.js.map +1 -1
  12. package/channels/min/package.json +1 -1
  13. package/channels/min.private/378.js.map +1 -1
  14. package/channels/min.private/channels.js +1 -1
  15. package/channels/min.private/channels.js.map +1 -1
  16. package/channels/min.private/package.json +1 -1
  17. package/channels/package.json +1 -1
  18. package/full/debug/full.js +69 -65
  19. package/full/debug/package.json +1 -1
  20. package/full/debug/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  21. package/full/debug.private/full.js +67 -63
  22. package/full/debug.private/package.json +1 -1
  23. package/full/debug.private/src_sdk_transformation_WorkerTransformStream_ts.js +3 -3
  24. package/full/min/378.js.map +1 -1
  25. package/full/min/full.js +1 -1
  26. package/full/min/full.js.map +1 -1
  27. package/full/min/package.json +1 -1
  28. package/full/min.private/378.js.map +1 -1
  29. package/full/min.private/full.js +1 -1
  30. package/full/min.private/full.js.map +1 -1
  31. package/full/min.private/package.json +1 -1
  32. package/full/package.json +1 -1
  33. package/package.json +1 -1
  34. package/publish/debug/package.json +1 -1
  35. package/publish/debug/publish.js +45 -45
  36. package/publish/debug.private/package.json +1 -1
  37. package/publish/debug.private/publish.js +45 -45
  38. package/publish/min/package.json +1 -1
  39. package/publish/min/publish.js +1 -1
  40. package/publish/min/publish.js.map +1 -1
  41. package/publish/min.private/package.json +1 -1
  42. package/publish/min.private/publish.js +1 -1
  43. package/publish/min.private/publish.js.map +1 -1
  44. package/publish/package.json +1 -1
@@ -2184,7 +2184,7 @@ var MetricsService = /*#__PURE__*/function () {
2184
2184
  }, {
2185
2185
  key: "sendMetrics",
2186
2186
  value: function () {
2187
- var _sendMetrics = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee(metricsMessages) {
2187
+ var _sendMetrics = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee(metricsMessages) {
2188
2188
  var formData;
2189
2189
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee$(_context) {
2190
2190
  while (1) switch (_context.prev = _context.next) {
@@ -2214,7 +2214,7 @@ var MetricsService = /*#__PURE__*/function () {
2214
2214
  }, {
2215
2215
  key: "sendMetricsIfAble",
2216
2216
  value: function () {
2217
- var _sendMetricsIfAble = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee2() {
2217
+ var _sendMetricsIfAble = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee2() {
2218
2218
  var _this = this;
2219
2219
  var metricsMessages;
2220
2220
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee2$(_context2) {
@@ -2755,7 +2755,7 @@ var PeerConnectionService = /*#__PURE__*/function () {
2755
2755
  }, {
2756
2756
  key: "precacheCreatePeerConnectionOffer",
2757
2757
  value: function () {
2758
- var _precacheCreatePeerConnectionOffer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee() {
2758
+ var _precacheCreatePeerConnectionOffer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee() {
2759
2759
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
2760
2760
  while (1) switch (_context.prev = _context.next) {
2761
2761
  case 0:
@@ -2780,7 +2780,7 @@ var PeerConnectionService = /*#__PURE__*/function () {
2780
2780
  }, {
2781
2781
  key: "createPeerConnectionOffer",
2782
2782
  value: function () {
2783
- var _createPeerConnectionOffer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee3() {
2783
+ var _createPeerConnectionOffer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee3() {
2784
2784
  var direction,
2785
2785
  encodedInsertableStreams,
2786
2786
  value,
@@ -2802,8 +2802,8 @@ var PeerConnectionService = /*#__PURE__*/function () {
2802
2802
  configuration = _environment_FeatureEnablement__WEBPACK_IMPORTED_MODULE_7__["default"].isEncodedInsertableStreamsSupported ? {
2803
2803
  encodedInsertableStreams: encodedInsertableStreams
2804
2804
  } : undefined;
2805
- return _context3.abrupt("return", PeerConnectionService._peerConnectionFactory.value.createPeerConnection(configuration).then( /*#__PURE__*/function () {
2806
- var _ref = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2(peerConnection) {
2805
+ return _context3.abrupt("return", PeerConnectionService._peerConnectionFactory.value.createPeerConnection(configuration).then(/*#__PURE__*/function () {
2806
+ var _ref = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2(peerConnection) {
2807
2807
  var supportsAddTransceiver, videoTransceiver, audioTransceiver, options;
2808
2808
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee2$(_context2) {
2809
2809
  while (1) switch (_context2.prev = _context2.next) {
@@ -3007,7 +3007,7 @@ var RtcConnectionMonitor = /*#__PURE__*/function () {
3007
3007
  }, {
3008
3008
  key: "updateStatistic",
3009
3009
  value: function () {
3010
- var _updateStatistic = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee() {
3010
+ var _updateStatistic = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee() {
3011
3011
  var _this = this;
3012
3012
  var _ignored, getKindForSafari11, ignored;
3013
3013
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
@@ -3114,7 +3114,7 @@ var RtcConnectionMonitor = /*#__PURE__*/function () {
3114
3114
  }, {
3115
3115
  key: "updateStatisticLegacy",
3116
3116
  value: function () {
3117
- var _updateStatisticLegacy = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
3117
+ var _updateStatisticLegacy = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
3118
3118
  var _this2 = this;
3119
3119
  var ignored;
3120
3120
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee2$(_context2) {
@@ -3363,7 +3363,7 @@ var VanillaPeerConnection = /*#__PURE__*/function () {
3363
3363
  }, {
3364
3364
  key: "createOffer",
3365
3365
  value: function () {
3366
- var _createOffer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(options) {
3366
+ var _createOffer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(options) {
3367
3367
  var _this = this;
3368
3368
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
3369
3369
  while (1) switch (_context.prev = _context.next) {
@@ -3391,7 +3391,7 @@ var VanillaPeerConnection = /*#__PURE__*/function () {
3391
3391
  }, {
3392
3392
  key: "createAnswer",
3393
3393
  value: function () {
3394
- var _createAnswer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2(options) {
3394
+ var _createAnswer = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2(options) {
3395
3395
  var _this2 = this;
3396
3396
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee2$(_context2) {
3397
3397
  while (1) switch (_context2.prev = _context2.next) {
@@ -3419,7 +3419,7 @@ var VanillaPeerConnection = /*#__PURE__*/function () {
3419
3419
  }, {
3420
3420
  key: "setLocalDescription",
3421
3421
  value: function () {
3422
- var _setLocalDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee3(description) {
3422
+ var _setLocalDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee3(description) {
3423
3423
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee3$(_context3) {
3424
3424
  while (1) switch (_context3.prev = _context3.next) {
3425
3425
  case 0:
@@ -3438,7 +3438,7 @@ var VanillaPeerConnection = /*#__PURE__*/function () {
3438
3438
  }, {
3439
3439
  key: "setRemoteDescription",
3440
3440
  value: function () {
3441
- var _setRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee4(description) {
3441
+ var _setRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee4(description) {
3442
3442
  var _description$sdp;
3443
3443
  var hasCrypto;
3444
3444
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee4$(_context4) {
@@ -3602,7 +3602,7 @@ var VanillaPeerConnectionFactory = /*#__PURE__*/function () {
3602
3602
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_2___default()(VanillaPeerConnectionFactory, [{
3603
3603
  key: "createPeerConnection",
3604
3604
  value: function () {
3605
- var _createPeerConnection = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee(configuration) {
3605
+ var _createPeerConnection = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee(configuration) {
3606
3606
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {
3607
3607
  while (1) switch (_context.prev = _context.next) {
3608
3608
  case 0:
@@ -4728,7 +4728,7 @@ var Channel = /*#__PURE__*/function () {
4728
4728
  }, {
4729
4729
  key: "stop",
4730
4730
  value: function () {
4731
- var _stop = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(reason) {
4731
+ var _stop = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(reason) {
4732
4732
  var _this3 = this;
4733
4733
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
4734
4734
  while (1) switch (_context.prev = _context.next) {
@@ -4771,7 +4771,7 @@ var Channel = /*#__PURE__*/function () {
4771
4771
  }, {
4772
4772
  key: "resume",
4773
4773
  value: function () {
4774
- var _resume = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
4774
+ var _resume = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
4775
4775
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee2$(_context2) {
4776
4776
  while (1) switch (_context2.prev = _context2.next) {
4777
4777
  case 0:
@@ -4812,7 +4812,7 @@ var Channel = /*#__PURE__*/function () {
4812
4812
  }, {
4813
4813
  key: "dispose",
4814
4814
  value: function () {
4815
- var _dispose = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee3() {
4815
+ var _dispose = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee3() {
4816
4816
  var _this4 = this;
4817
4817
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee3$(_context3) {
4818
4818
  while (1) switch (_context3.prev = _context3.next) {
@@ -4845,7 +4845,7 @@ var Channel = /*#__PURE__*/function () {
4845
4845
  }, {
4846
4846
  key: "start",
4847
4847
  value: function () {
4848
- var _start = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee4() {
4848
+ var _start = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee4() {
4849
4849
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee4$(_context4) {
4850
4850
  while (1) switch (_context4.prev = _context4.next) {
4851
4851
  case 0:
@@ -4878,7 +4878,7 @@ var Channel = /*#__PURE__*/function () {
4878
4878
  }, {
4879
4879
  key: "processStart",
4880
4880
  value: function () {
4881
- var _processStart = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee5() {
4881
+ var _processStart = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee5() {
4882
4882
  var _this5 = this;
4883
4883
  var token, listenOnStreamSetup, _StreamTrackTransform, valid, validationResult, _StreamTrackTransform2, _valid, _validationResult, _EncodedStreamSink$va, _valid2, _validationResult2, _EncodedStreamSink$va2, _valid3, _validationResult3, hasTransformStreamCallback, hasEncodedStreamSink, uri, handleStreamFailureCallback, streamPlayer;
4884
4884
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee5$(_context5) {
@@ -5113,7 +5113,7 @@ var Channel = /*#__PURE__*/function () {
5113
5113
  }, {
5114
5114
  key: "restartAfterStop",
5115
5115
  value: function () {
5116
- var _restartAfterStop = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee6() {
5116
+ var _restartAfterStop = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee6() {
5117
5117
  var ignored;
5118
5118
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee6$(_context6) {
5119
5119
  while (1) switch (_context6.prev = _context6.next) {
@@ -5147,7 +5147,7 @@ var Channel = /*#__PURE__*/function () {
5147
5147
  }, {
5148
5148
  key: "play",
5149
5149
  value: function () {
5150
- var _play = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee7() {
5150
+ var _play = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee7() {
5151
5151
  var mediaStream;
5152
5152
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee7$(_context7) {
5153
5153
  while (1) switch (_context7.prev = _context7.next) {
@@ -5202,7 +5202,7 @@ var Channel = /*#__PURE__*/function () {
5202
5202
  }, {
5203
5203
  key: "handleStreamFailure",
5204
5204
  value: function () {
5205
- var _handleStreamFailure = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee8() {
5205
+ var _handleStreamFailure = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee8() {
5206
5206
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee8$(_context8) {
5207
5207
  while (1) switch (_context8.prev = _context8.next) {
5208
5208
  case 0:
@@ -5303,7 +5303,7 @@ var Channel = /*#__PURE__*/function () {
5303
5303
  }, {
5304
5304
  key: "playMediaStreamInVideoElement",
5305
5305
  value: function () {
5306
- var _playMediaStreamInVideoElement = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee9(mediaStream) {
5306
+ var _playMediaStreamInVideoElement = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee9(mediaStream) {
5307
5307
  var _this7 = this;
5308
5308
  var videoElement, playPromise;
5309
5309
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee9$(_context9) {
@@ -5956,7 +5956,7 @@ var Discovery = /*#__PURE__*/function () {
5956
5956
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_2___default()(Discovery, null, [{
5957
5957
  key: "precacheClosestEndPointDiscovery",
5958
5958
  value: function () {
5959
- var _precacheClosestEndPointDiscovery = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee() {
5959
+ var _precacheClosestEndPointDiscovery = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee() {
5960
5960
  var uri;
5961
5961
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
5962
5962
  while (1) switch (_context.prev = _context.next) {
@@ -5977,7 +5977,7 @@ var Discovery = /*#__PURE__*/function () {
5977
5977
  }, {
5978
5978
  key: "discoverClosestEndPointWithCaching",
5979
5979
  value: function () {
5980
- var _discoverClosestEndPointWithCaching = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2(uri) {
5980
+ var _discoverClosestEndPointWithCaching = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2(uri) {
5981
5981
  var url, discoveryService, cachedValue, ignored;
5982
5982
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee2$(_context2) {
5983
5983
  while (1) switch (_context2.prev = _context2.next) {
@@ -6085,7 +6085,7 @@ var DiscoveryService = /*#__PURE__*/function () {
6085
6085
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_2___default()(DiscoveryService, [{
6086
6086
  key: "discoverNearbyEndPoints",
6087
6087
  value: function () {
6088
- var _discoverNearbyEndPoints = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(uri, timeout) {
6088
+ var _discoverNearbyEndPoints = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(uri, timeout) {
6089
6089
  var url, response, asString, endPoints;
6090
6090
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
6091
6091
  while (1) switch (_context.prev = _context.next) {
@@ -6142,7 +6142,7 @@ var DiscoveryService = /*#__PURE__*/function () {
6142
6142
  }, {
6143
6143
  key: "discoverClosestEndPoint",
6144
6144
  value: function () {
6145
- var _discoverClosestEndPoint = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
6145
+ var _discoverClosestEndPoint = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
6146
6146
  var _this = this;
6147
6147
  var timeout,
6148
6148
  url,
@@ -6342,7 +6342,7 @@ var EndPoint = /*#__PURE__*/function () {
6342
6342
  }, {
6343
6343
  key: "ping",
6344
6344
  value: function () {
6345
- var _ping = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee() {
6345
+ var _ping = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee() {
6346
6346
  var _this = this;
6347
6347
  var url, start, response, finished;
6348
6348
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee$(_context) {
@@ -6384,7 +6384,7 @@ var EndPoint = /*#__PURE__*/function () {
6384
6384
  }, {
6385
6385
  key: "subscribe",
6386
6386
  value: function () {
6387
- var _subscribe = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee2(token, localSessionDescription, failureCount) {
6387
+ var _subscribe = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee2(token, localSessionDescription, failureCount) {
6388
6388
  var _this2 = this;
6389
6389
  var tenancy, url, formData, clientVersion, bodyWithOffer, bodyWithoutOffer, start, httpResponse, timeout, status, finished, subscribeResponse;
6390
6390
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee2$(_context2) {
@@ -6496,7 +6496,7 @@ var EndPoint = /*#__PURE__*/function () {
6496
6496
  }, {
6497
6497
  key: "publish",
6498
6498
  value: function () {
6499
- var _publish = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee3(name, token, localSessionDescription, failureCount) {
6499
+ var _publish = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee3(name, token, localSessionDescription, failureCount) {
6500
6500
  var _this3 = this;
6501
6501
  var tenancy, url, formData, clientVersion, bodyWithOffer, bodyWithoutOffer, start, httpResponse, timeout, status, finished, subscribeResponse;
6502
6502
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee3$(_context3) {
@@ -6612,7 +6612,7 @@ var EndPoint = /*#__PURE__*/function () {
6612
6612
  }, {
6613
6613
  key: "setRemoteDescription",
6614
6614
  value: function () {
6615
- var _setRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee4(stream, sessionDescription) {
6615
+ var _setRemoteDescription = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee4(stream, sessionDescription) {
6616
6616
  var _this4 = this;
6617
6617
  var url, formData, body, start, httpResponse, timeout, status, finished, setRemoteDescriptionResponse;
6618
6618
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee4$(_context4) {
@@ -6690,7 +6690,7 @@ var EndPoint = /*#__PURE__*/function () {
6690
6690
  }, {
6691
6691
  key: "limitBitrate",
6692
6692
  value: function () {
6693
- var _limitBitrate = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee5(stream, elapsedInMilliseconds, bitrateInBitsPerSecond, bitrateState, bitrateMode) {
6693
+ var _limitBitrate = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee5(stream, elapsedInMilliseconds, bitrateInBitsPerSecond, bitrateState, bitrateMode) {
6694
6694
  var _this5 = this;
6695
6695
  var url, formData, body, start, httpResponse, timeout, status, finished;
6696
6696
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee5$(_context5) {
@@ -6758,7 +6758,7 @@ var EndPoint = /*#__PURE__*/function () {
6758
6758
  }, {
6759
6759
  key: "addIceCandidates",
6760
6760
  value: function () {
6761
- var _addIceCandidates = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee6(stream, candidates, discoveryCompleted) {
6761
+ var _addIceCandidates = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee6(stream, candidates, discoveryCompleted) {
6762
6762
  var _this6 = this;
6763
6763
  var options,
6764
6764
  url,
@@ -6846,7 +6846,7 @@ var EndPoint = /*#__PURE__*/function () {
6846
6846
  }, {
6847
6847
  key: "destroyStream",
6848
6848
  value: function () {
6849
- var _destroyStream = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee7(stream, reason) {
6849
+ var _destroyStream = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee7(stream, reason) {
6850
6850
  var _this7 = this;
6851
6851
  var url, formData, body, start, httpResponse, timeout, status, finished, destroyStreamResponse;
6852
6852
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee7$(_context7) {
@@ -6923,7 +6923,7 @@ var EndPoint = /*#__PURE__*/function () {
6923
6923
  }, {
6924
6924
  key: "destroyStreamOnUnmount",
6925
6925
  value: function () {
6926
- var _destroyStreamOnUnmount = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee8(stream, reason) {
6926
+ var _destroyStreamOnUnmount = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee8(stream, reason) {
6927
6927
  var _navigator;
6928
6928
  var ignored, url, formData, body;
6929
6929
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee8$(_context8) {
@@ -7121,7 +7121,7 @@ var EndPoint = /*#__PURE__*/function () {
7121
7121
  }, {
7122
7122
  key: "convertHttpResponseToSubscribeResponse",
7123
7123
  value: function () {
7124
- var _convertHttpResponseToSubscribeResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee9(tenancy, response) {
7124
+ var _convertHttpResponseToSubscribeResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee9(tenancy, response) {
7125
7125
  var data, subscribeResponse;
7126
7126
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee9$(_context9) {
7127
7127
  while (1) switch (_context9.prev = _context9.next) {
@@ -7174,7 +7174,7 @@ var EndPoint = /*#__PURE__*/function () {
7174
7174
  }, {
7175
7175
  key: "convertHttpResponseToPublishResponse",
7176
7176
  value: function () {
7177
- var _convertHttpResponseToPublishResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee10(tenancy, response) {
7177
+ var _convertHttpResponseToPublishResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee10(tenancy, response) {
7178
7178
  var data, publishResponse;
7179
7179
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee10$(_context10) {
7180
7180
  while (1) switch (_context10.prev = _context10.next) {
@@ -7257,7 +7257,7 @@ var EndPoint = /*#__PURE__*/function () {
7257
7257
  }, {
7258
7258
  key: "convertHttpResponseToSetRemoteDescriptionResponse",
7259
7259
  value: function () {
7260
- var _convertHttpResponseToSetRemoteDescriptionResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee11(response) {
7260
+ var _convertHttpResponseToSetRemoteDescriptionResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee11(response) {
7261
7261
  var data, setRemoteDescriptionResponse;
7262
7262
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee11$(_context11) {
7263
7263
  while (1) switch (_context11.prev = _context11.next) {
@@ -7287,7 +7287,7 @@ var EndPoint = /*#__PURE__*/function () {
7287
7287
  }, {
7288
7288
  key: "convertHttpResponseToAddIceCandidatesResponse",
7289
7289
  value: function () {
7290
- var _convertHttpResponseToAddIceCandidatesResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee12(response) {
7290
+ var _convertHttpResponseToAddIceCandidatesResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee12(response) {
7291
7291
  var data, addIceCandidatesResponse;
7292
7292
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee12$(_context12) {
7293
7293
  while (1) switch (_context12.prev = _context12.next) {
@@ -7320,7 +7320,7 @@ var EndPoint = /*#__PURE__*/function () {
7320
7320
  }, {
7321
7321
  key: "convertHttpResponseToDestroyStreamResponse",
7322
7322
  value: function () {
7323
- var _convertHttpResponseToDestroyStreamResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee13(response) {
7323
+ var _convertHttpResponseToDestroyStreamResponse = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee13(response) {
7324
7324
  var data, destroyStream;
7325
7325
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee13$(_context13) {
7326
7326
  while (1) switch (_context13.prev = _context13.next) {
@@ -7704,7 +7704,11 @@ var RealTimeStream = /*#__PURE__*/function () {
7704
7704
  _this._channelContext.rtcVideoStatistic = statistics.video;
7705
7705
  }
7706
7706
  }
7707
- if ((videoTrackFailed || audioTrackFailed) && navigator.onLine) {
7707
+ if (!navigator.onLine) {
7708
+ _this._channelContext.state.value = _channels_ChannelState__WEBPACK_IMPORTED_MODULE_12__["default"].Offline;
7709
+ return;
7710
+ }
7711
+ if (videoTrackFailed || audioTrackFailed) {
7708
7712
  var retryCallback = function retryCallback() {
7709
7713
  _this._channelContext.state.value = _channels_ChannelState__WEBPACK_IMPORTED_MODULE_12__["default"].ConnectionError;
7710
7714
  if (_this._channelContext.videoElement.value) {
@@ -7721,7 +7725,7 @@ var RealTimeStream = /*#__PURE__*/function () {
7721
7725
  _this.reconnectPeerConnection(peerConnection, retryCallback);
7722
7726
  } else {
7723
7727
  _this._peerConnectionContext.peerConnectionReconnectAttempts = 0;
7724
- if (_this._channelContext.state.value !== _channels_ChannelState__WEBPACK_IMPORTED_MODULE_12__["default"].Reconnecting) {
7728
+ if (_this._channelContext.state.value !== _channels_ChannelState__WEBPACK_IMPORTED_MODULE_12__["default"].Reconnecting && _this._channelContext.state.value !== _channels_ChannelState__WEBPACK_IMPORTED_MODULE_12__["default"].Offline) {
7725
7729
  return;
7726
7730
  }
7727
7731
  _this._channelContext.state.value = _this._channelContext.playing.value ? _channels_ChannelState__WEBPACK_IMPORTED_MODULE_12__["default"].Playing : _channels_ChannelState__WEBPACK_IMPORTED_MODULE_12__["default"].Paused;
@@ -7745,7 +7749,7 @@ var RealTimeStream = /*#__PURE__*/function () {
7745
7749
  }, {
7746
7750
  key: "applyRtcConfiguration",
7747
7751
  value: function () {
7748
- var _applyRtcConfiguration = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee(optionalPeerConnection, rtcConfiguration) {
7752
+ var _applyRtcConfiguration = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().mark(function _callee(optionalPeerConnection, rtcConfiguration) {
7749
7753
  var newRtcConfiguration;
7750
7754
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_5___default().wrap(function _callee$(_context) {
7751
7755
  while (1) switch (_context.prev = _context.next) {
@@ -8005,7 +8009,7 @@ var InsertableStreams = /*#__PURE__*/function () {
8005
8009
  type: undefined
8006
8010
  });
8007
8011
  worker.onmessage = /*#__PURE__*/function () {
8008
- var _ref = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee(event) {
8012
+ var _ref = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee(event) {
8009
8013
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {
8010
8014
  while (1) switch (_context.prev = _context.next) {
8011
8015
  case 0:
@@ -8039,7 +8043,7 @@ var InsertableStreams = /*#__PURE__*/function () {
8039
8043
  break;
8040
8044
  }
8041
8045
  var encodedStreamTransformCallback = /*#__PURE__*/function () {
8042
- var _ref2 = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee2(chunk, controller) {
8046
+ var _ref2 = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee2(chunk, controller) {
8043
8047
  var surrogate;
8044
8048
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee2$(_context2) {
8045
8049
  while (1) switch (_context2.prev = _context2.next) {
@@ -8101,7 +8105,7 @@ var InsertableStreams = /*#__PURE__*/function () {
8101
8105
  type: undefined
8102
8106
  });
8103
8107
  _worker.onmessage = /*#__PURE__*/function () {
8104
- var _ref3 = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee3(event) {
8108
+ var _ref3 = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee3(event) {
8105
8109
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee3$(_context3) {
8106
8110
  while (1) switch (_context3.prev = _context3.next) {
8107
8111
  case 0:
@@ -8140,7 +8144,7 @@ var InsertableStreams = /*#__PURE__*/function () {
8140
8144
  break;
8141
8145
  }
8142
8146
  var _encodedStreamTransformCallback = /*#__PURE__*/function () {
8143
- var _ref4 = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee4(chunk, controller) {
8147
+ var _ref4 = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee4(chunk, controller) {
8144
8148
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee4$(_context4) {
8145
8149
  while (1) switch (_context4.prev = _context4.next) {
8146
8150
  case 0:
@@ -8557,7 +8561,7 @@ var VersionManager = /*#__PURE__*/function () {
8557
8561
  key: "sdkVersion",
8558
8562
  get: function get() {
8559
8563
  try {
8560
- return "2024-08-14T22:48:47.741Z (2024.2.1)";
8564
+ return "2024-10-30T18:22:42.569Z (2024.2.2-beta.289)";
8561
8565
  } catch (e) {
8562
8566
  return this._defaultVersion;
8563
8567
  }
@@ -8780,7 +8784,7 @@ var TelemetryService = /*#__PURE__*/function () {
8780
8784
  }, {
8781
8785
  key: "sendLogs",
8782
8786
  value: function () {
8783
- var _sendLogs = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(logMessages) {
8787
+ var _sendLogs = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee(logMessages) {
8784
8788
  var formData;
8785
8789
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee$(_context) {
8786
8790
  while (1) switch (_context.prev = _context.next) {
@@ -8810,7 +8814,7 @@ var TelemetryService = /*#__PURE__*/function () {
8810
8814
  }, {
8811
8815
  key: "sendLogsIfAble",
8812
8816
  value: function () {
8813
- var _sendLogsIfAble = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()( /*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
8817
+ var _sendLogsIfAble = _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0___default()(/*#__PURE__*/_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee2() {
8814
8818
  var _this = this;
8815
8819
  var numberOfLogsToSend, sizeOfLogsToSend, getItemSize, getLogSize, logMessages;
8816
8820
  return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_regenerator_index_js__WEBPACK_IMPORTED_MODULE_4___default().wrap(function _callee2$(_context2) {
@@ -9572,9 +9576,9 @@ module.exports = _defineProperty, module.exports.__esModule = true, module.expor
9572
9576
  /***/ ((module) => {
9573
9577
 
9574
9578
  function _getPrototypeOf(t) {
9575
- return (module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
9579
+ return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
9576
9580
  return t.__proto__ || Object.getPrototypeOf(t);
9577
- }, module.exports.__esModule = true, module.exports["default"] = module.exports), _getPrototypeOf(t);
9581
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _getPrototypeOf(t);
9578
9582
  }
9579
9583
  module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
9580
9584
 
@@ -10017,9 +10021,9 @@ module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.e
10017
10021
  /***/ ((module) => {
10018
10022
 
10019
10023
  function _setPrototypeOf(t, e) {
10020
- return (module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
10024
+ return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
10021
10025
  return t.__proto__ = e, t;
10022
- }, module.exports.__esModule = true, module.exports["default"] = module.exports), _setPrototypeOf(t, e);
10026
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _setPrototypeOf(t, e);
10023
10027
  }
10024
10028
  module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
10025
10029
 
@@ -10105,11 +10109,11 @@ module.exports = toPropertyKey, module.exports.__esModule = true, module.exports
10105
10109
  function _typeof(o) {
10106
10110
  "@babel/helpers - typeof";
10107
10111
 
10108
- return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
10112
+ return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
10109
10113
  return typeof o;
10110
10114
  } : function (o) {
10111
10115
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
10112
- }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
10116
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
10113
10117
  }
10114
10118
  module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
10115
10119
 
@@ -10304,4 +10308,4 @@ __webpack_require__.r(__webpack_exports__);
10304
10308
  /******/ })()
10305
10309
  ;
10306
10310
  });
10307
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVkE7QUFDQTtBQUNBO0FBQzRDO0FBQ1I7QUFDZ0I7QUFDQTtBQUVwRCxJQUFNSSxtQ0FBbUMsR0FBRyxJQUFJO0FBQUMsSUFFNUJDLDBCQUEwQjtFQU83QyxTQUFBQSwyQkFBQSxFQUFjO0lBQUFDLDJJQUFBLE9BQUFELDBCQUFBO0lBQUFFLDJJQUFBLHVCQU5rQyxJQUFJSiw0REFBYyxDQUFDLENBQUM7SUFBQUksMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUEsb0NBR3hCQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0lBQUFGLDJJQUFBO0lBSXBELElBQUksQ0FBQ0csYUFBYSxHQUFHLElBQUlULG1EQUFPLENBQVUsSUFBSSxDQUFDO0lBQy9DLElBQUksQ0FBQ1UscUJBQXFCLEdBQUcsSUFBSVQsMkRBQWUsQ0FBQyxJQUFJLENBQUNRLGFBQWEsQ0FBQztJQUNwRSxJQUFJLENBQUNFLG9CQUFvQixDQUFDLENBQUM7RUFDN0I7RUFBQyxPQUFBQyx3SUFBQSxDQUFBUiwwQkFBQTtJQUFBUyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZDO01BQzNDLE9BQU8sSUFBSSxDQUFDSixxQkFBcUI7SUFDbkM7RUFBQztJQUFBRyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBQyxzQkFBc0JBLENBQUEsRUFBVztNQUMvQixPQUFPVCxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDUyx5QkFBeUI7SUFDcEQ7RUFBQztJQUFBSixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBRyxPQUFPQSxDQUFBLEVBQVM7TUFDZCxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDN0I7RUFBQztJQUFBTCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRSixvQkFBb0JBLENBQUEsRUFBUztNQUFBLElBQUFTLEtBQUE7TUFDbkMsSUFBSUMsTUFBTTtNQUNWLElBQUlDLGdCQUFnQjtNQUVwQixJQUFJLFFBQU9DLFFBQVEsaUNBQUFDLG1JQUFBLENBQVJELFFBQVEsT0FBSyxRQUFRLEVBQUU7UUFDaEM7TUFDRjs7TUFFQTtNQUNBO01BQ0E7TUFDQTtNQUNBLElBQUksT0FBT0EsUUFBUSxDQUFDRSxRQUFRLEtBQUssV0FBVyxFQUFFO1FBQzVDSixNQUFNLEdBQUcsVUFBVTtRQUNuQkMsZ0JBQWdCLEdBQUcsb0JBQW9CO1FBQ3ZDO01BQ0YsQ0FBQyxNQUFNLElBQUksT0FBT0MsUUFBUSxDQUFDRyxZQUFZLEtBQUssV0FBVyxFQUFFO1FBQ3ZETCxNQUFNLEdBQUcsY0FBYztRQUN2QkMsZ0JBQWdCLEdBQUcsd0JBQXdCO01BQzdDLENBQUMsTUFBTSxJQUFJLE9BQU9DLFFBQVEsQ0FBQ0YsTUFBTSxLQUFLLFdBQVcsRUFBRTtRQUFFO1FBQ25EQSxNQUFNLEdBQUcsUUFBUTtRQUNqQkMsZ0JBQWdCLEdBQUcsa0JBQWtCO01BQ3ZDO01BQ0E7O01BRUEsSUFBTUssc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBQSxFQUFlO1FBQ3pDLElBQU1DLFlBQVksR0FBRyxDQUFDTCxRQUFRLENBQUNGLE1BQU0sQ0FBQztRQUV0Q0QsS0FBSSxDQUFDUyxhQUFhLENBQUNELFlBQVksQ0FBQztNQUNsQyxDQUFDO01BRUQsSUFBSSxPQUFPTCxRQUFRLENBQUNPLGdCQUFnQixLQUFLLFdBQVcsSUFBSSxPQUFPUCxRQUFRLENBQUNGLE1BQU0sQ0FBQyxLQUFLLFdBQVcsRUFBRTtRQUMvRkUsUUFBUSxDQUFDTyxnQkFBZ0IsQ0FBQ1IsZ0JBQWdCLEVBQUVLLHNCQUFzQixFQUFFLEtBQUssQ0FBQztRQUUxRSxJQUFJLENBQUNSLFlBQVksQ0FBQ1ksR0FBRyxDQUFDLElBQUloQyx3REFBVSxDQUFDLFlBQU07VUFDekN3QixRQUFRLENBQUNTLG1CQUFtQixDQUFDVixnQkFBZ0IsRUFBRUssc0JBQXNCLEVBQUUsS0FBSyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO01BQ0wsQ0FBQyxNQUFNO1FBQ0wsSUFBSSxDQUFDTSxzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQztNQUN4QztJQUNGO0VBQUM7SUFBQXJCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFrQixzQkFBc0JBLENBQUEsRUFBUztNQUFBLElBQUFFLE1BQUE7TUFDckMsSUFBSSxDQUFDQyxzQkFBc0IsR0FBR0MsTUFBTSxDQUFDQyxXQUFXLENBQUMsWUFBTTtRQUNyRCxJQUFNVixZQUFZLEdBQUdMLFFBQVEsQ0FBQ2dCLFFBQVEsQ0FBQyxDQUFDO1FBRXhDSixNQUFJLENBQUNOLGFBQWEsQ0FBQ0QsWUFBWSxDQUFDO01BQ2xDLENBQUMsRUFBRXpCLG1DQUFtQyxDQUFDO01BRXZDLElBQUksQ0FBQ2dCLFlBQVksQ0FBQ1ksR0FBRyxDQUFDLElBQUloQyx3REFBVSxDQUFDLFlBQU07UUFDekMsSUFBSW9DLE1BQUksQ0FBQ0Msc0JBQXNCLEVBQUU7VUFDL0JJLGFBQWEsQ0FBQ0wsTUFBSSxDQUFDQyxzQkFBc0IsQ0FBQztRQUM1QztRQUVBRCxNQUFJLENBQUNDLHNCQUFzQixHQUFHLElBQUk7TUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTDtFQUFDO0lBQUF2QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRYyxhQUFhQSxDQUFDRCxZQUFZLEVBQVE7TUFDeEMsSUFBSSxJQUFJLENBQUNuQixhQUFhLEtBQUttQixZQUFZLEVBQUU7UUFDdkM7TUFDRjtNQUVBLElBQUksQ0FBQ25CLGFBQWEsQ0FBQ00sS0FBSyxHQUFHYSxZQUFZO0lBQ3pDO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25HSDtBQUNBO0FBQ0E7QUFGQSxJQUdxQmMsZUFBZTtFQUFBLFNBQUFBLGdCQUFBO0lBQUFyQywySUFBQSxPQUFBcUMsZUFBQTtFQUFBO0VBQUEsT0FBQTlCLHdJQUFBLENBQUE4QixlQUFBO0lBQUE3QixHQUFBO0lBQUFDLEdBQUEsRUFrQmxDLFNBQUFBLElBQUEsRUFBMkM7TUFDekMsT0FBTzRCLGVBQWUsQ0FBQ0Msc0JBQXNCO0lBQy9DO0VBQUM7SUFBQTlCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBTyxJQUFJLENBQUM4QixZQUFZO0lBQzFCO0VBQUM7SUFBQS9CLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBeUM7TUFDdkMsT0FBTyxJQUFJLENBQUMrQixvQkFBb0I7SUFDbEM7RUFBQztJQUFBaEMsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnQztNQUM5QixPQUFPNEIsZUFBZSxDQUFDSSxVQUFVO0lBQ25DO0VBQUM7SUFBQWpDLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBTzRCLGVBQWUsQ0FBQ0ssV0FBVztJQUNwQztFQUFDO0lBQUFsQyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU80QixlQUFlLENBQUNNLFdBQVc7SUFDcEM7RUFBQztJQUFBbkMsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPNEIsZUFBZSxDQUFDTyxXQUFXO0lBQ3BDO0VBQUM7SUFBQXBDLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBTzRCLGVBQWUsQ0FBQ1EsV0FBVztJQUNwQztFQUFDO0lBQUFyQyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU80QixlQUFlLENBQUNTLFdBQVc7SUFDcEM7RUFBQztJQUFBdEMsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFpQztNQUMvQixPQUFPNEIsZUFBZSxDQUFDVSxXQUFXO0lBQ3BDO0VBQUM7SUFBQXZDLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUM7TUFDL0IsT0FBTzRCLGVBQWUsQ0FBQ1csV0FBVztJQUNwQztFQUFDO0lBQUF4QyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWlDO01BQy9CLE9BQU80QixlQUFlLENBQUNZLFdBQVc7SUFDcEM7RUFBQztJQUFBekMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT3dDLFFBQVFBLENBQUEsRUFBWTtNQUN6QixPQUFPYixlQUFlLENBQUNjLFNBQVM7SUFDbEM7RUFBQztJQUFBM0MsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZTBDLDBCQUEwQkEsQ0FBQSxFQUFXO01BQ2xELElBQUksQ0FBQ0MsU0FBUyxJQUFJLENBQUNBLFNBQVMsQ0FBQ0MsU0FBUyxFQUFFO1FBQ3RDLE9BQU8sRUFBRTtNQUNYO01BRUEsSUFBTUMscUJBQXFCLEdBQUdGLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDRSxLQUFLLENBQUNuQixlQUFlLENBQUNvQiwyQkFBMkIsQ0FBQztNQUVwRyxJQUFJRixxQkFBcUIsSUFBSUEscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDckQsT0FBT0EscUJBQXFCLENBQUMsQ0FBQyxDQUFDO01BQ2pDO01BRUEsT0FBT2xCLGVBQWUsQ0FBQ3FCLCtCQUErQixDQUFDLENBQUM7SUFDMUQ7RUFBQztJQUFBbEQsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZWlELGdCQUFnQkEsQ0FBQSxFQUFXO01BQ3hDLElBQUksQ0FBQ3RCLGVBQWUsQ0FBQ0Msc0JBQXNCLEVBQUU7UUFDM0MsT0FBTyxFQUFFO01BQ1g7TUFFQSxJQUFNc0IsZUFBZSxHQUFHdkIsZUFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VCLEtBQUssQ0FBQyxHQUFHLENBQUM7TUFFekUsSUFBSSxDQUFDRCxlQUFlLElBQUksQ0FBQ0EsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNDLE9BQU8sRUFBRTtNQUNYO01BRUEsT0FBT0EsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUMzQjtFQUFDO0lBQUFwRCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlb0Qsd0JBQXdCQSxDQUFBLEVBQVc7TUFDaEQsSUFBSSxDQUFDekIsZUFBZSxDQUFDQyxzQkFBc0IsRUFBRTtRQUMzQyxPQUFPLENBQUM7TUFDVjtNQUVBLElBQU15QixrQkFBa0IsR0FBRzFCLGVBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QixLQUFLLENBQUMsR0FBRyxDQUFDO01BRTVFLElBQUksQ0FBQ0Usa0JBQWtCLElBQUksQ0FBQ0Esa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDakQsT0FBTyxDQUFDO01BQ1Y7TUFFQSxJQUFNQyxXQUFXLEdBQUdELGtCQUFrQixDQUFDLENBQUMsQ0FBQztNQUV6QyxJQUFJLENBQUNDLFdBQVcsRUFBRTtRQUNoQixPQUFPLENBQUM7TUFDVjtNQUVBLE9BQU9DLE1BQU0sQ0FBQ0QsV0FBVyxDQUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9DO0VBQUM7SUFBQXJELEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWVnRCwrQkFBK0JBLENBQUEsRUFBVztNQUN2RCxJQUFJLENBQUNMLFNBQVMsSUFBSSxDQUFDQSxTQUFTLENBQUNDLFNBQVMsRUFBRTtRQUN0QyxPQUFPLEVBQUU7TUFDWDtNQUVBLElBQU1BLFNBQVMsR0FBR0QsU0FBUyxDQUFDQyxTQUFTO01BQ3JDLElBQU1ZLElBQUksR0FBR1osU0FBUyxDQUFDYSxPQUFPLENBQUMsT0FBTyxDQUFDO01BRXZDLElBQUlELElBQUksR0FBRyxDQUFDLEVBQUU7UUFDWjtRQUNBLGFBQUFFLE1BQUEsQ0FBYUMsUUFBUSxDQUFDZixTQUFTLENBQUNnQixTQUFTLENBQUNKLElBQUksR0FBRyxDQUFDLEVBQUVaLFNBQVMsQ0FBQ2EsT0FBTyxDQUFDLEdBQUcsRUFBRUQsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDeEY7TUFFQSxJQUFNSyxPQUFPLEdBQUdqQixTQUFTLENBQUNhLE9BQU8sQ0FBQyxVQUFVLENBQUM7TUFFN0MsSUFBSUksT0FBTyxHQUFHLENBQUMsRUFBRTtRQUNmO1FBQ0EsSUFBTUMsT0FBTyxHQUFHbEIsU0FBUyxDQUFDYSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRXhDLGFBQUFDLE1BQUEsQ0FBYUMsUUFBUSxDQUFDZixTQUFTLENBQUNnQixTQUFTLENBQUNFLE9BQU8sR0FBRyxDQUFDLEVBQUVsQixTQUFTLENBQUNhLE9BQU8sQ0FBQyxHQUFHLEVBQUVLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO01BQzlGO01BRUEsT0FBTyxFQUFFO0lBQ1g7RUFBQztBQUFBO0FBQUFDLGdCQUFBLEdBN0lrQnBDLGVBQWU7QUFBQXBDLDJJQUFBLENBQWZvQyxlQUFlLGlDQUNvQiw0SkFBNEo7QUFBQXBDLDJJQUFBLENBRC9Mb0MsZUFBZSw0QkFFZUEsZ0JBQWUsQ0FBQ2UsMEJBQTBCLENBQUMsQ0FBQztBQUFBbkQsMklBQUEsQ0FGMUVvQyxlQUFlLGtCQUdLQSxnQkFBZSxDQUFDc0IsZ0JBQWdCLENBQUMsQ0FBQztBQUFBMUQsMklBQUEsQ0FIdERvQyxlQUFlLDBCQUlhQSxnQkFBZSxDQUFDeUIsd0JBQXdCLENBQUMsQ0FBQztBQUFBN0QsMklBQUEsQ0FKdEVvQyxlQUFlLGVBTUcsaURBQWlELENBQUVxQyxJQUFJLEVBQUFDLFVBQUEsR0FBQ3RCLFNBQVMsY0FBQXNCLFVBQUEsdUJBQVRBLFVBQUEsQ0FBV3JCLFNBQVMsQ0FBQztBQUFBckQsMklBQUEsQ0FOL0ZvQyxlQUFlLGdCQU9JLFVBQVUsQ0FBRXFDLElBQUksRUFBQUUsV0FBQSxHQUFDdkIsU0FBUyxjQUFBdUIsV0FBQSx1QkFBVEEsV0FBQSxDQUFXdEIsU0FBUyxDQUFDO0FBQUFyRCwySUFBQSxDQVB6RG9DLGVBQWUsaUJBU0lBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBNUUsMklBQUEsQ0FUaEZvQyxlQUFlLGlCQVVJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFBQTVFLDJJQUFBLENBVmhGb0MsZUFBZSxpQkFXSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUE1RSwySUFBQSxDQVhoRm9DLGVBQWUsaUJBWUlBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBNUUsMklBQUEsQ0FaaEZvQyxlQUFlLGlCQWFJQSxnQkFBZSxDQUFDQyxzQkFBc0IsQ0FBQ3VDLFFBQVEsQ0FBQyxZQUFZLENBQUM7QUFBQTVFLDJJQUFBLENBYmhGb0MsZUFBZSxpQkFjSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUE1RSwySUFBQSxDQWRoRm9DLGVBQWUsaUJBZUlBLGdCQUFlLENBQUNDLHNCQUFzQixDQUFDdUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBNUUsMklBQUEsQ0FmaEZvQyxlQUFlLGlCQWdCSUEsZ0JBQWUsQ0FBQ0Msc0JBQXNCLENBQUN1QyxRQUFRLENBQUMsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkJyRztBQUNBO0FBQ0E7QUFDc0U7QUFDWDtBQUNLO0FBQ1Y7O0FBRXREO0FBQUEsSUFDcUJLLGlDQUFpQztFQUFBLFNBQUFBLGtDQUFBO0lBQUFsRiwySUFBQSxPQUFBa0YsaUNBQUE7RUFBQTtFQUFBLE9BQUEzRSx3SUFBQSxDQUFBMkUsaUNBQUE7SUFBQTFFLEdBQUE7SUFBQUUsS0FBQSxFQUNwRCxTQUFBeUUsY0FBY0EsQ0FBQ0MsSUFBWSxFQUFVO01BQ25DLE9BQU8sSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ0QsSUFBSSxDQUFDO0lBQ3RDO0VBQUM7SUFBQTVFLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUE0RSxlQUFlQSxDQUFDRixJQUFZLEVBQVc7TUFDckMsT0FBTyxJQUFJLENBQUNHLG1CQUFtQixDQUFDSCxJQUFJLENBQUM7SUFDdkM7RUFBQztJQUFBNUUsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE2RDtNQUMzRCxPQUFPO1FBQ0wsc0JBQXNCLEVBQUVxRSx1RUFBcUIsQ0FBQ1UseUNBQXlDLENBQUNULGlFQUFnQixDQUFDVSxxQkFBcUIsQ0FBQztRQUMvSCxzQkFBc0IsRUFBRVQsbUVBQW1CLENBQUNVLHFDQUFxQyxDQUFDVCw4REFBYyxDQUFDVSxtQkFBbUIsQ0FBQztRQUNySCw4QkFBOEIsRUFBRVgsbUVBQW1CLENBQUNVLHFDQUFxQyxDQUFDVCw4REFBYyxDQUFDVywwQkFBMEIsQ0FBQztRQUNwSSxnQ0FBZ0MsRUFBRVosbUVBQW1CLENBQUNVLHFDQUFxQyxDQUFDVCw4REFBYyxDQUFDWSw0QkFBNEIsQ0FBQztRQUN4SSxzQkFBc0IsRUFBRSxFQUFFO1FBQzFCLFlBQVksRUFBRSxFQUFFO1FBQ2hCLGlCQUFpQixFQUFFO01BQ3JCLENBQUM7SUFDSDtFQUFDO0lBQUFyRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStEO01BQzdELE9BQU87UUFDTCx1Q0FBdUMsRUFBRSxJQUFJO1FBQzdDLGdEQUFnRCxFQUFFLElBQUk7UUFDdEQsNENBQTRDLEVBQUUsSUFBSTtRQUNsRCxrREFBa0QsRUFBRTtNQUN0RCxDQUFDO0lBQ0g7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckNIO0FBQ0E7QUFDQTtBQUNpRTtBQUFBLElBRTVDc0YsdUJBQXVCO0VBOEIxQyxTQUFBQSx3QkFBQSxFQUFzQjtJQUFBL0YsMklBQUEsT0FBQStGLHVCQUFBO0lBQ3BCLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHdFQUF3RSxDQUFDO0VBQzNGO0VBQUMsT0FBQXpGLHdJQUFBLENBQUF3Rix1QkFBQTtJQUFBdkYsR0FBQTtJQUFBRSxLQUFBLEVBL0JELFNBQU91RixzQkFBc0JBLENBQUEsRUFBUztNQUNwQyxJQUFJSCxzRUFBaUIsQ0FBQ0ksdUNBQXVDLEVBQUU7UUFDN0QsSUFBSSxDQUFDQyw0QkFBNEIsQ0FBQyxDQUFDO01BQ3JDO0lBQ0Y7RUFBQztJQUFBM0YsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZXlGLDRCQUE0QkEsQ0FBQSxFQUFTO01BQUEsSUFBQXBGLEtBQUE7TUFDbEQsSUFBSStFLHNFQUFpQixDQUFDTSx5QkFBeUIsRUFBRTtRQUMvQ0MsY0FBYyxDQUFDLFlBQU07VUFDbkJ0RixLQUFJLENBQUN1Rix1Q0FBdUMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztNQUNKLENBQUMsTUFBTTtRQUNMQyxVQUFVLENBQUMsWUFBTTtVQUNmeEYsS0FBSSxDQUFDdUYsdUNBQXVDLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUM7TUFDSjtJQUNGO0VBQUM7SUFBQTlGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWU0Rix1Q0FBdUNBLENBQUEsRUFBUztNQUM3RCxJQUFJRSxHQUFHLEdBQUd0RixRQUFRLENBQUN1RixhQUFhLENBQUMsS0FBSyxDQUFDO01BRXZDRCxHQUFHLENBQUNFLEdBQUcsR0FBRzFFLE1BQU0sQ0FBQzJFLEdBQUcsQ0FBQ0MsZUFBZSxDQUFDLElBQUlDLElBQUksQ0FBQyxDQUFDLElBQUlDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQzFFTixHQUFHLENBQUNPLE9BQU8sR0FBRyxZQUFXO1FBQ3ZCL0UsTUFBTSxDQUFDMkUsR0FBRyxDQUFDSyxlQUFlLENBQUMsSUFBSSxDQUFDTixHQUFHLENBQUM7UUFFcENGLEdBQUcsR0FBRyxJQUFJO01BQ1osQ0FBQztJQUNIO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakNIO0FBQ0E7QUFDQTs7QUFHNEM7QUFDUjtBQUNnQjtBQUFBLElBRS9CUyxjQUFjO0VBT2pDLFNBQUFBLGVBQUEsRUFBYztJQUFBakgsMklBQUEsT0FBQWlILGNBQUE7SUFBQWhILDJJQUFBLHVCQU5rQyxJQUFJSiw0REFBYyxDQUFDLENBQUM7SUFBQUksMklBQUEsdUJBQ3BDb0QsU0FBUyxJQUFJQSxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQUFwRCwySUFBQSxlQUMzQixJQUFJTixtREFBTyxDQUFDdUgsU0FBUyxDQUFDO0lBQUFqSCwySUFBQSx5QkFDWixJQUFJTixtREFBTyxDQUFDdUgsU0FBUyxDQUFDO0lBQUFqSCwySUFBQSxzQ0FDVCxJQUFJTixtREFBTyxDQUFDdUgsU0FBUyxDQUFDO0lBR3BGLElBQUksQ0FBQyxJQUFJLENBQUNDLFdBQVcsRUFBRTtNQUNyQjtJQUNGO0lBRUEsSUFBSSxDQUFDQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ2xDLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQztFQUN6QjtFQUFDLE9BQUE5Ryx3SUFBQSxDQUFBMEcsY0FBQTtJQUFBekcsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyQjtNQUN6QixPQUFPLElBQUksQ0FBQzZHLFlBQVk7SUFDMUI7RUFBQztJQUFBOUcsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyQjtNQUN6QixPQUFPLElBQUksQ0FBQzhHLElBQUk7SUFDbEI7RUFBQztJQUFBL0csR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFxQztNQUNuQyxPQUFPLElBQUksQ0FBQytHLGNBQWM7SUFDNUI7RUFBQztJQUFBaEgsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFrRDtNQUNoRCxPQUFPLElBQUksQ0FBQ2dILDJCQUEyQjtJQUN6QztFQUFDO0lBQUFqSCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBRyxPQUFPQSxDQUFBLEVBQVM7TUFDZCxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDN0I7RUFBQztJQUFBTCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRZ0gsNkJBQTZCQSxDQUFBLEVBQVc7TUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQ1AsV0FBVyxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDO01BQ1g7TUFFQSxPQUFPOUQsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDc0UsUUFBUSxJQUFJdEUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDdUUsV0FBVztJQUNoRjtFQUFDO0lBQUFwSCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRbUgsZ0JBQWdCQSxDQUFBLEVBQVc7TUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQ1YsV0FBVyxFQUFFO1FBQ3JCLE9BQU8sU0FBUztNQUNsQjtNQUVBLE9BQU85RCxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUN5RSxhQUFhLElBQUl6RSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMwRSxJQUFJO0lBQzlFO0VBQUM7SUFBQXZILEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFzSCxnQkFBZ0JBLENBQUEsRUFBVztNQUNqQyxPQUFPM0UsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDNEUsR0FBRztJQUNwQztFQUFDO0lBQUF6SCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRMEcsMkJBQTJCQSxDQUFBLEVBQVM7TUFBQSxJQUFBckcsS0FBQTtNQUMxQyxJQUFNbUgsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUEsRUFBZTtRQUMzQm5ILEtBQUksQ0FBQ3NHLGdCQUFnQixDQUFDLENBQUM7TUFDekIsQ0FBQztNQUVEaEUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDNUIsZ0JBQWdCLENBQUMsUUFBUSxFQUFFeUcsUUFBUSxDQUFDO01BRTVELElBQUksQ0FBQ3BILFlBQVksQ0FBQ1ksR0FBRyxDQUFDLElBQUloQyx3REFBVSxDQUFDLFlBQU07UUFDekMyRCxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMxQixtQkFBbUIsQ0FBQyxRQUFRLEVBQUV1RyxRQUFRLENBQUM7TUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTDtFQUFDO0lBQUExSCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRMkcsZ0JBQWdCQSxDQUFBLEVBQVM7TUFDL0IsSUFBSSxDQUFDRSxJQUFJLENBQUM3RyxLQUFLLEdBQUcsSUFBSSxDQUFDc0gsZ0JBQWdCLENBQUMsQ0FBQztNQUN6QyxJQUFJLENBQUNSLGNBQWMsQ0FBQzlHLEtBQUssR0FBRyxJQUFJLENBQUNtSCxnQkFBZ0IsQ0FBQyxDQUFDO01BQ25ELElBQUksQ0FBQ0osMkJBQTJCLENBQUMvRyxLQUFLLEdBQUcsSUFBSSxDQUFDZ0gsNkJBQTZCLENBQUMsQ0FBQztJQUMvRTtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakZIO0FBQ0E7QUFDQTtBQUNpRDtBQUNGO0FBQ047QUFFWjtBQUN1QjtBQUU3QyxJQUFNYyxtQkFBbUI7RUFPOUIsU0FBQUEsb0JBQVlDLFlBQW9CLEVBQUU7SUFBQXpJLDJJQUFBLE9BQUF3SSxtQkFBQTtJQUFBdkksMklBQUEsa0JBTkVzSSw2REFBYSxDQUFDRyxTQUFTLENBQUMscUJBQXFCLENBQUM7SUFBQXpJLDJJQUFBLHlCQUNoRHFJLGdEQUFHLENBQUNLLGNBQWM7SUFBQTFJLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBLDJCQUd6QixLQUFLO0lBRzlCLElBQUksQ0FBQzJJLFVBQVUsR0FBRzFJLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSSxDQUFDMEksYUFBYSxHQUFHSixZQUFZO0VBQ25DO0VBQUMsT0FBQWxJLHdJQUFBLENBQUFpSSxtQkFBQTtJQUFBaEksR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQW9JLE9BQU9BLENBQUNDLFFBQVEsRUFBUTtNQUN0QixJQUFJLENBQUNDLGtCQUFrQixDQUFDYiw0REFBVyxDQUFDYyxjQUFjLEVBQUVGLFFBQVEsQ0FBQztJQUMvRDtFQUFDO0lBQUF2SSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBd0ksSUFBSUEsQ0FBQSxFQUFTO01BQ1gsSUFBSSxDQUFDRixrQkFBa0IsQ0FBQ2IsNERBQVcsQ0FBQ2dCLFdBQVcsQ0FBQztJQUNsRDtFQUFDO0lBQUEzSSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRc0ksa0JBQWtCQSxDQUFDSSxVQUF1QixFQUFFTCxRQUFpQixFQUFRO01BQzNFLElBQUksSUFBSSxDQUFDTSxnQkFBZ0IsRUFBRTtRQUN6QjtNQUNGO01BRUEsSUFBSSxDQUFDQSxnQkFBZ0IsR0FBRyxJQUFJO01BRTVCLElBQU1sSixHQUFHLEdBQUdELElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFDdEIsSUFBTW1KLFNBQVMsR0FBR25KLEdBQUcsR0FBRyxJQUFJLENBQUN5SSxVQUFVO01BQ3ZDLElBQU1XLFVBQVUsR0FBRyxJQUFJbkIsMkRBQVUsQ0FBQ2dCLFVBQVUsQ0FBQyxDQUFDSSxPQUFPLENBQUMsQ0FBQztNQUV2RCxJQUFJLENBQUNiLGNBQWMsQ0FBQ2MsSUFBSSxDQUFDO1FBQ3ZCTCxVQUFVLEVBQVZBLFVBQVU7UUFDVk0sT0FBTyxFQUFFLENBQUN2SixHQUFHLEdBQUcsSUFBSSxDQUFDMEksYUFBYSxJQUFJLElBQUk7UUFDMUNuSSxLQUFLLEVBQUU7VUFBQ2lKLE1BQU0sRUFBRUw7UUFBUyxDQUFDO1FBQzFCUCxRQUFRLEVBQVJBO01BQ0YsQ0FBQyxDQUFDO01BRUYsSUFBSSxDQUFDYSxPQUFPLENBQUNDLElBQUksQ0FDZixzQ0FBc0MsRUFDdEMsSUFBSXhCLHNEQUFTLENBQUNsSSxHQUFHLEdBQUcsSUFBSSxDQUFDMEksYUFBYSxDQUFDLENBQUNpQixXQUFXLENBQUMsQ0FBQyxFQUNyRGYsUUFBUSxFQUNSUSxVQUFVLEVBQ1YsSUFBSWxCLHNEQUFTLENBQUNpQixTQUFTLENBQUMsQ0FBQ1EsV0FBVyxDQUFDLENBQ3ZDLENBQUM7SUFDSDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2REg7QUFDQTtBQUNBO0FBQ29EO0FBRWhCO0FBR3BDLElBQU1FLG1CQUFtQixHQUFHLFNBQVM7QUFBQyxJQUVqQkMsY0FBYztFQUFBLFNBQUFBLGVBQUE7SUFBQWpLLDJJQUFBLE9BQUFpSyxjQUFBO0VBQUE7RUFBQSxPQUFBMUosd0lBQUEsQ0FBQTBKLGNBQUE7SUFBQXpKLEdBQUE7SUFBQUUsS0FBQSxFQUdqQyxTQUFPd0osVUFBVUEsQ0FBQ0MsS0FBdUIsRUFBYTtNQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDQyx1QkFBdUIsQ0FBQ0QsS0FBSyxDQUFDLEVBQUU7UUFDeENGLGNBQWMsQ0FBQ0wsT0FBTyxDQUFDUyxLQUFLLENBQUMseUJBQXlCLEVBQUVGLEtBQUssQ0FBQztRQUU5RCxPQUFPLElBQUlKLGtEQUFTLENBQUMsSUFBSSxDQUFDO01BQzVCO01BRUEsSUFBSTtRQUNGLElBQU1PLFlBQVksR0FBR0MsSUFBSSxDQUFDSixLQUFLLENBQUNLLE1BQU0sQ0FBQ1IsbUJBQW1CLENBQUNTLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLElBQU1DLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNOLFlBQVksQ0FBQztRQUUxQ0ksU0FBUyxDQUFDUCxLQUFLLEdBQUdRLElBQUksQ0FBQ0MsS0FBSyxDQUFDRixTQUFTLENBQUNQLEtBQUssQ0FBQztRQUU3QyxPQUFPLElBQUlKLGtEQUFTLENBQUNXLFNBQVMsQ0FBQztNQUNqQyxDQUFDLENBQUMsT0FBT0csQ0FBQyxFQUFFO1FBQ1ZaLGNBQWMsQ0FBQ0wsT0FBTyxDQUFDUyxLQUFLLENBQUMsMEJBQTBCLEVBQUVRLENBQUMsQ0FBQztRQUUzRCxPQUFPLElBQUlkLGtEQUFTLENBQUMsSUFBSSxDQUFDO01BQzVCO0lBQ0Y7RUFBQztJQUFBdkosR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzBKLHVCQUF1QkEsQ0FBQ0QsS0FBdUIsRUFBVztNQUMvRCxPQUFPLENBQUMsQ0FBQ0EsS0FBSyxJQUFJQSxLQUFLLENBQUNXLFVBQVUsQ0FBQ2QsbUJBQW1CLENBQUM7SUFDekQ7RUFBQztBQUFBO0FBQUEvSiwySUFBQSxDQTFCa0JnSyxjQUFjLGFBQ0MxQiw2REFBYSxDQUFDRyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1g3RTtBQUNBO0FBQ0E7QUFGQSxJQWFxQnFCLFNBQVM7RUFJNUIsU0FBQUEsVUFBWVcsU0FBcUIsRUFBRTtJQUFBLElBQUFLLGdCQUFBLEVBQUFDLGlCQUFBO0lBQUFoTCwySUFBQSxPQUFBK0osU0FBQTtJQUFBOUosMklBQUE7SUFBQUEsMklBQUE7SUFDakMsSUFBSSxDQUFDZ0wsY0FBYyxHQUFHLENBQUFQLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFUSxhQUFhLEtBQUksRUFBRTtJQUNwRCxJQUFJLENBQUNDLE1BQU0sR0FBRztNQUNaQyxHQUFHLEVBQUVWLFNBQVMsYUFBVEEsU0FBUyxnQkFBQUssZ0JBQUEsR0FBVEwsU0FBUyxDQUFFUCxLQUFLLGNBQUFZLGdCQUFBLGVBQWhCQSxnQkFBQSxDQUFrQkssR0FBRyxHQUFHLElBQUl6RSxHQUFHLENBQUMrRCxTQUFTLENBQUNQLEtBQUssQ0FBQ2lCLEdBQUcsQ0FBQyxHQUFHLElBQUk7TUFDaEVDLFlBQVksRUFBRSxDQUFBWCxTQUFTLGFBQVRBLFNBQVMsd0JBQUFNLGlCQUFBLEdBQVROLFNBQVMsQ0FBRVAsS0FBSyxjQUFBYSxpQkFBQSx1QkFBaEJBLGlCQUFBLENBQWtCSyxZQUFZLEtBQUk7SUFDbEQsQ0FBQztFQUNIO0VBQUMsT0FBQTlLLHdJQUFBLENBQUF3SixTQUFBO0lBQUF2SixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNCO01BQ3BCLE9BQU8sSUFBSSxDQUFDMEssTUFBTSxDQUFDQyxHQUFHO0lBQ3hCO0VBQUM7SUFBQTVLLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNkI7TUFDM0IsT0FBTyxJQUFJLENBQUMwSyxNQUFNLENBQUNFLFlBQVk7SUFDakM7RUFBQztJQUFBN0ssR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQjtNQUNwQixPQUFPLElBQUksQ0FBQ3dLLGNBQWM7SUFDNUI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQ0g7QUFDQTtBQUNBO0FBRkEsSUFhcUJLLGFBQWE7RUFBQSxTQUFBQSxjQUFBO0lBQUF0TCwySUFBQSxPQUFBc0wsYUFBQTtFQUFBO0VBQUEsT0FBQS9LLHdJQUFBLENBQUErSyxhQUFBO0lBQUE5SyxHQUFBO0lBQUFDLEdBQUEsRUFNaEMsU0FBQUEsSUFBQSxFQUEwQztNQUN4QyxPQUFPLElBQUksQ0FBQzhLLG9CQUFvQjtJQUNsQztFQUFDO0lBQUEvSyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdDO01BQ3RDLE9BQU8sSUFBSSxDQUFDK0ssU0FBUztJQUN2QjtFQUFDO0lBQUFoTCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZDO01BQzNDLE9BQU8sSUFBSSxDQUFDZ0wsWUFBWTtJQUMxQjtFQUFDO0lBQUFqTCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTRDO01BQzFDLE9BQU8sSUFBSSxDQUFDaUwsYUFBYTtJQUMzQjtFQUFDO0lBQUFsTCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPaUwsYUFBYUEsQ0FBQSxFQUFTO01BQzNCLElBQUk7UUFDRixJQUFNQyxRQUFRLEdBQUdDLDZGQUFZO1FBRTdCLElBQUksQ0FBQ04sb0JBQW9CLEdBQUcscUJBQXFCLElBQUlLLFFBQVEsR0FBR0EsUUFBUSxDQUFDRSxtQkFBbUIsR0FBRyxJQUFJO1FBQ25HLElBQUksQ0FBQ04sU0FBUyxHQUFHLFVBQVUsSUFBSUksUUFBUSxHQUFHQSxRQUFRLENBQUNHLFFBQVEsR0FBRyxLQUFLO1FBQ25FLElBQUksQ0FBQ04sWUFBWSxHQUFHLGFBQWEsSUFBSUcsUUFBUSxHQUFHQSxRQUFRLENBQUNJLFdBQVcsR0FBRyxLQUFLO1FBQzVFLElBQUksQ0FBQ04sYUFBYSxHQUFHLGNBQWMsSUFBSUUsUUFBUSxHQUFHQSxRQUFRLENBQUNLLFlBQVksR0FBRyxLQUFLO01BQ2pGLENBQUMsQ0FBQyxPQUFPcEIsQ0FBQyxFQUFFO1FBQ1YsSUFBSSxDQUFDVSxvQkFBb0IsR0FBRyxJQUFJO1FBQ2hDLElBQUksQ0FBQ0MsU0FBUyxHQUFHLEtBQUs7UUFDdEIsSUFBSSxDQUFDQyxZQUFZLEdBQUcsS0FBSztRQUN6QixJQUFJLENBQUNDLGFBQWEsR0FBRyxLQUFLO01BQzVCO0lBQ0Y7RUFBQztBQUFBO0FBQUF6TCwySUFBQSxDQXBDa0JxTCxhQUFhO0FBQUFyTCwySUFBQSxDQUFicUwsYUFBYTtBQUFBckwsMklBQUEsQ0FBYnFMLGFBQWE7QUFBQXJMLDJJQUFBLENBQWJxTCxhQUFhO0FBQUE7QUF1Q2xDQSxhQUFhLENBQUNLLGFBQWEsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwRDdCO0FBQ0E7QUFDQTtBQUNxRDtBQUFBLElBRWhDN0YsaUJBQWlCO0VBQUEsU0FBQUEsa0JBQUE7SUFBQTlGLDJJQUFBLE9BQUE4RixpQkFBQTtFQUFBO0VBQUEsT0FBQXZGLHdJQUFBLENBQUF1RixpQkFBQTtJQUFBdEYsR0FBQTtJQUFBQyxHQUFBLEVBQ3BDLFNBQUFBLElBQUEsRUFBMEM7TUFDeEM7TUFDQSxPQUFPNEIsNERBQWUsQ0FBQzZKLFVBQVUsSUFDL0I3Siw0REFBZSxDQUFDOEosVUFBVSxJQUMxQjlKLDREQUFlLENBQUMrSixVQUFVLElBQzFCL0osNERBQWUsQ0FBQ2dLLFVBQVU7SUFDOUI7RUFBQztJQUFBN0wsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQztNQUNBLE9BQU80Qiw0REFBZSxDQUFDaUssVUFBVSxJQUMvQmpLLDREQUFlLENBQUNrSyxVQUFVLElBQzFCbEssNERBQWUsQ0FBQ21LLFVBQVUsSUFDMUJuSyw0REFBZSxDQUFDb0ssVUFBVTtJQUM5QjtFQUFDO0lBQUFqTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1EO01BQ2pELE9BQU80Qiw0REFBZSxDQUFDcUssV0FBVyxLQUFLLFFBQVEsSUFBSXJLLDREQUFlLENBQUNzSyxtQkFBbUIsSUFBSSxFQUFFO0lBQzlGO0VBQUM7SUFBQW5NLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBOEM7TUFDNUMsT0FBTzRCLDREQUFlLENBQUNxSyxXQUFXLEtBQUssUUFBUSxJQUFJckssNERBQWUsQ0FBQ3NLLG1CQUFtQixJQUFJLEVBQUUsSUFDMUZ0Syw0REFBZSxDQUFDcUssV0FBVyxLQUFLLFNBQVMsSUFBSXJLLDREQUFlLENBQUNzSyxtQkFBbUIsSUFBSSxFQUFFO0lBQzFGO0VBQUM7SUFBQW5NLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0M7TUFDcEMsT0FBTzRCLDREQUFlLENBQUNxSyxXQUFXLEtBQUssUUFBUSxJQUFJckssNERBQWUsQ0FBQ3NLLG1CQUFtQixJQUFJLEVBQUUsSUFDMUZ0Syw0REFBZSxDQUFDcUssV0FBVyxLQUFLLFNBQVMsSUFBSXJLLDREQUFlLENBQUNzSyxtQkFBbUIsSUFBSSxFQUFFO0lBQzFGO0VBQUM7SUFBQW5NLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBcUQ7TUFDbkQsT0FBTzRCLDREQUFlLENBQUNxSyxXQUFXLEtBQUssUUFBUSxJQUFJckssNERBQWUsQ0FBQ3NLLG1CQUFtQixJQUFJLEVBQUU7SUFDOUY7RUFBQztJQUFBbk0sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFvRDtNQUNsRCxPQUFPNEIsNERBQWUsQ0FBQ3FLLFdBQVcsS0FBSyxTQUFTLElBQUlySyw0REFBZSxDQUFDc0ssbUJBQW1CLElBQUksRUFBRTtJQUMvRjtFQUFDO0lBQUFuTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXlDO01BQ3ZDLE9BQU80Qiw0REFBZSxDQUFDcUssV0FBVyxLQUFLLFFBQVEsSUFDN0NySyw0REFBZSxDQUFDcUssV0FBVyxLQUFLLGdCQUFnQjtJQUNwRDtFQUFDO0lBQUFsTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBDO01BQ3hDLE9BQU80Qiw0REFBZSxDQUFDcUssV0FBVyxLQUFLLElBQUk7SUFDN0M7RUFBQztJQUFBbE0sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4RDtNQUFBLElBQUFtTSxTQUFBO01BQzVELE9BQU92Syw0REFBZSxDQUFDcUssV0FBVyxLQUFLLFFBQVEsSUFBSSxTQUFBRSxTQUFBLEdBQU8xTCxRQUFRLGNBQUEwTCxTQUFBLHVCQUFSQSxTQUFBLENBQVVuRyxhQUFhLE1BQUssVUFBVTtJQUNsRztFQUFDO0lBQUFqRyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWdEO01BQzlDLE9BQU80Qiw0REFBZSxDQUFDcUssV0FBVyxLQUFLLFFBQVEsSUFBSXJLLDREQUFlLENBQUNzSyxtQkFBbUIsSUFBSSxFQUFFLElBQzFGdEssNERBQWUsQ0FBQ3FLLFdBQVcsS0FBSyxTQUFTLElBQUlySyw0REFBZSxDQUFDc0ssbUJBQW1CLElBQUksRUFBRSxJQUN0RnRLLDREQUFlLENBQUNxSyxXQUFXLEtBQUssUUFBUTtJQUM1QztFQUFDO0lBQUFsTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQStCO01BQzdCLE9BQU80Qiw0REFBZSxDQUFDYSxRQUFRLENBQUMsQ0FBQztJQUNuQztFQUFDO0lBQUExQyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1EO01BQ2pELE9BQU8sRUFBRSxPQUFPb00seUJBQXlCLEtBQUssV0FBVyxJQUN2RCxPQUFPQyx5QkFBeUIsS0FBSyxXQUFXLENBQUM7SUFDckQ7RUFBQztJQUFBdE0sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEwRDtNQUN4RCxPQUFPLE9BQU9zTSxjQUFjLEtBQUssV0FBVyxJQUFJLE9BQU9BLGNBQWMsQ0FBQ0MsU0FBUyxDQUFDQyxvQkFBb0IsS0FBSyxXQUFXO0lBQ3RIO0VBQUM7SUFBQXpNLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUQ7TUFDckQsT0FBTyxPQUFPeU0scUJBQXFCLEtBQUssV0FBVztJQUNyRDtFQUFDO0lBQUExTSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW9EO01BQ2xELE9BQU80Qiw0REFBZSxDQUFDcUssV0FBVyxLQUFLLFNBQVMsSUFBSXJLLDREQUFlLENBQUNxSyxXQUFXLEtBQUssUUFBUTtJQUM5RjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xGSDtBQUNBO0FBQ0E7QUFGQSxJQVdxQlMsVUFBVTtFQUFBLFNBQUFBLFdBQUE7SUFBQW5OLDJJQUFBLE9BQUFtTixVQUFBO0VBQUE7RUFBQSxPQUFBNU0sd0lBQUEsQ0FBQTRNLFVBQUE7SUFBQTNNLEdBQUE7SUFBQUMsR0FBQSxFQUc3QixTQUFBQSxJQUFBLEVBQXNEO01BQ3BELE9BQU8sSUFBSSxDQUFDMk0sb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQTVNLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8yTSxlQUFlQSxDQUFBLEVBQVM7TUFDN0IsSUFBSTtRQUNGLElBQU1DLFVBQVUsR0FBR0MsMkNBQWM7UUFFakMsSUFBSSxDQUFDSCxvQkFBb0IsR0FBRyxXQUFXLElBQUlFLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxTQUFTLEdBQUc7VUFBQ0MsVUFBVSxFQUFFO1FBQUUsQ0FBQztNQUNqRyxDQUFDLENBQUMsT0FBTzVDLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQ3VDLG9CQUFvQixHQUFHO1VBQUNLLFVBQVUsRUFBRTtRQUFFLENBQUM7TUFDOUM7SUFDRjtFQUFDO0FBQUE7QUFBQXhOLDJJQUFBLENBZmtCa04sVUFBVTtBQUFBO0FBa0IvQkEsVUFBVSxDQUFDRSxlQUFlLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QjVCO0FBQ0E7QUFDQTtBQUZBLElBS3FCM04sVUFBVTtFQUk3QixTQUFBQSxXQUFZZ08sVUFBc0IsRUFBRTtJQUFBMU4sMklBQUEsT0FBQU4sVUFBQTtJQUFBTywySUFBQTtJQUFBQSwySUFBQTtJQUNsQyxJQUFJLENBQUMwTixTQUFTLEdBQUcsS0FBSztJQUN0QixJQUFJLENBQUNDLFdBQVcsR0FBR0YsVUFBVTtFQUMvQjtFQUFDLE9BQUFuTix3SUFBQSxDQUFBYixVQUFBO0lBQUFjLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksSUFBSSxDQUFDOE0sU0FBUyxFQUFFO1FBQ2xCO01BQ0Y7TUFFQSxJQUFJLENBQUNBLFNBQVMsR0FBRyxJQUFJO01BRXJCLE9BQU8sSUFBSSxDQUFDQyxXQUFXLENBQUMvTCxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3BDO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJIO0FBQ0E7QUFDQTtBQUZBLElBS3FCaEMsY0FBYztFQUFBLFNBQUFBLGVBQUE7SUFBQUcsMklBQUEsT0FBQUgsY0FBQTtJQUFBSSwySUFBQSxnQkFDTyxFQUFFO0VBQUE7RUFBQSxPQUFBTSx3SUFBQSxDQUFBVixjQUFBO0lBQUFXLEdBQUE7SUFBQUUsS0FBQSxFQUUxQyxTQUFBZ0IsR0FBR0EsQ0FBQ2dNLFVBQXVCLEVBQVE7TUFDakMsSUFBSSxDQUFDRyxLQUFLLENBQUNwRSxJQUFJLENBQUNpRSxVQUFVLENBQUM7SUFDN0I7RUFBQztJQUFBbE4sR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQUcsT0FBT0EsQ0FBQSxFQUFTO01BQ2QsSUFBSSxDQUFDZ04sS0FBSyxDQUFDQyxPQUFPLENBQUMsVUFBQUosVUFBVTtRQUFBLE9BQUlBLFVBQVUsQ0FBQzdNLE9BQU8sQ0FBQyxDQUFDO01BQUEsRUFBQztNQUN0RCxJQUFJLENBQUNnTixLQUFLLENBQUNwRCxNQUFNLEdBQUcsQ0FBQztJQUN2QjtFQUFDO0lBQUFqSyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBcU4sUUFBUUEsQ0FBQSxFQUFXO01BQ2pCLHFDQUFBM0osTUFBQSxDQUFxQyxJQUFJLENBQUN5SixLQUFLLENBQUNwRCxNQUFNO0lBQ3hEO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkJIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTXVELHdCQUF3QixHQUFHLEVBQUU7QUFBQyxJQUVmQyxPQUFPO0VBNEMxQixTQUFBQSxRQUFBLEVBQXNCO0lBQUFqTywySUFBQSxPQUFBaU8sT0FBQTtJQUNwQixNQUFNLElBQUlqSSxLQUFLLENBQUMsd0RBQXdELENBQUM7RUFDM0U7RUFBQyxPQUFBekYsd0lBQUEsQ0FBQTBOLE9BQUE7SUFBQXpOLEdBQUE7SUFBQUUsS0FBQSxFQTdDRCxTQUFPd04saUJBQWlCQSxDQUFDeE4sS0FBYSxFQUFVO01BQzlDLElBQUl5Tix5QkFBeUIsR0FBRyxDQUFDO01BQ2pDLElBQUlDLE1BQU0sR0FBRzFOLEtBQUs7TUFFbEIsSUFBSTBOLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDZEEsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNaRCx5QkFBeUIsRUFBRTtNQUM3QjtNQUVBLE9BQU9GLE9BQU8sQ0FBQ0ksd0JBQXdCLENBQUNELE1BQU0sQ0FBQyxHQUFHRCx5QkFBeUIsSUFBSUMsTUFBTSxLQUFLRSxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxDQUFDLEdBQUdILE9BQU8sQ0FBQ08sdUJBQXVCLENBQUNKLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaks7RUFBQztJQUFBNU4sR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZStOLFdBQVdBLENBQUMvTixLQUFhLEVBQUVnTyxTQUFpQixFQUFVO01BQ25FLElBQU1DLEtBQUssR0FBR0wsSUFBSSxDQUFDTSxHQUFHLENBQUMsRUFBRSxFQUFFRixTQUFTLENBQUM7TUFFckMsT0FBT0osSUFBSSxDQUFDTyxLQUFLLENBQUNuTyxLQUFLLEdBQUdpTyxLQUFLLENBQUMsR0FBR0EsS0FBSztJQUMxQztFQUFDO0lBQUFuTyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlMk4sd0JBQXdCQSxDQUFDM04sS0FBYSxFQUFVO01BQzdELElBQUlvTyxtQkFBbUIsR0FBRyxDQUFDO01BQzNCLElBQUlWLE1BQU0sR0FBRzFOLEtBQUs7TUFFbEIsT0FBTzBOLE1BQU0sSUFBSSxFQUFFLEVBQUU7UUFDbkJBLE1BQU0sR0FBR0EsTUFBTSxHQUFHLEVBQUU7UUFDcEJVLG1CQUFtQixFQUFFO01BQ3ZCO01BRUEsT0FBT0EsbUJBQW1CO0lBQzVCO0VBQUM7SUFBQXRPLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWU4Tix1QkFBdUJBLENBQUM5TixLQUFhLEVBQVU7TUFDNUQsSUFBTXFPLGFBQWEsR0FBR3JPLEtBQUs7TUFDM0IsSUFBSXNPLGFBQWEsR0FBR1YsSUFBSSxDQUFDQyxLQUFLLENBQUM3TixLQUFLLENBQUM7TUFDckMsSUFBSXVPLEtBQUssR0FBRyxDQUFDO01BRWIsT0FBT0QsYUFBYSxLQUFLRCxhQUFhLElBQUlFLEtBQUssR0FBR2pCLHdCQUF3QixFQUFFO1FBQzFFaUIsS0FBSyxFQUFFO1FBQ1BELGFBQWEsR0FBR2YsT0FBTyxDQUFDUSxXQUFXLENBQUNNLGFBQWEsRUFBRUUsS0FBSyxDQUFDO01BQzNEO01BRUEsT0FBT0EsS0FBSztJQUNkO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaERIO0FBQ0E7QUFDQTtBQUZBLElBR3FCQyxPQUFPO0VBYTFCLFNBQUFBLFFBQUEsRUFBc0I7SUFBQWxQLDJJQUFBLE9BQUFrUCxPQUFBO0lBQ3BCLE1BQU0sSUFBSWxKLEtBQUssQ0FBQyx3REFBd0QsQ0FBQztFQUMzRTtFQUFDLE9BQUF6Rix3SUFBQSxDQUFBMk8sT0FBQTtJQUFBMU8sR0FBQTtJQUFBRSxLQUFBLEVBZEQsU0FBT3lPLE1BQU1BLENBQUMxRSxNQUFjLEVBQVU7TUFDcEMsSUFBTTJFLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUEsRUFBaUI7UUFDdkMsT0FBT2QsSUFBSSxDQUFDYSxNQUFNLENBQUMsQ0FBQyxDQUFDcEIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDekosU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDcEQsQ0FBQztNQUVELElBQU0rSyxLQUFhLEdBQUdmLElBQUksQ0FBQ2dCLElBQUksQ0FBQzdFLE1BQU0sR0FBRyxFQUFFLENBQUM7TUFFNUMsT0FBTyxJQUFJOEUsS0FBSyxDQUFDRixLQUFLLENBQUMsQ0FBQ0csSUFBSSxDQUFDSixrQkFBa0IsQ0FBQyxDQUFDSyxNQUFNLENBQUMsVUFBQ0MsTUFBTSxFQUFFQyxJQUFJLEVBQUs7UUFDeEUsT0FBT0QsTUFBTSxHQUFHQyxJQUFJLENBQUMsQ0FBQztNQUN4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUNyTCxTQUFTLENBQUMsQ0FBQyxFQUFFbUcsTUFBTSxDQUFDO0lBQzdCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7OztBQ2RIO0FBQ0E7QUFDQTtBQUNPLFNBQVNtRixpQkFBaUJBLENBQUNDLENBQVEsRUFBUztFQUNqRCxNQUFNLElBQUk3SixLQUFLLHNCQUFBNUIsTUFBQSxDQUFzQnlMLENBQUMsb0NBQWlDLENBQUM7QUFDMUU7QUFFQSwrREFBZUQsaUJBQWlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1BoQztBQUNBO0FBQ0E7QUFGQSxJQUtxQkUsU0FBUztFQUFBLFNBQUFBLFVBQUE7SUFBQTlQLDJJQUFBLE9BQUE4UCxTQUFBO0lBQUE3UCwySUFBQSxxQkFDVyxFQUFFO0VBQUE7RUFBQSxPQUFBTSx3SUFBQSxDQUFBdVAsU0FBQTtJQUFBdFAsR0FBQTtJQUFBQyxHQUFBLEVBRXpDLFNBQUFBLElBQUEsRUFBOEI7TUFDNUIsT0FBTyxJQUFJLENBQUNzUCxVQUFVO0lBQ3hCO0VBQUM7SUFBQXZQLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFnQixHQUFHQSxDQUFDc08sUUFBbUIsRUFBUTtNQUM3QixJQUFJLENBQUNELFVBQVUsQ0FBQ3RHLElBQUksQ0FBQ3VHLFFBQVEsQ0FBQztJQUNoQztFQUFDO0lBQUF4UCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBdVAsTUFBTUEsQ0FBQ0QsUUFBUSxFQUFRO01BQ3JCLElBQUksQ0FBQ0QsVUFBVSxHQUFHLElBQUksQ0FBQ0EsVUFBVSxDQUFDTixNQUFNLENBQUMsVUFBQ1MsS0FBSyxFQUFFQyxJQUFJLEVBQUs7UUFDeEQsSUFBSSxFQUFFQSxJQUFJLEtBQUtILFFBQVEsQ0FBQyxFQUFFO1VBQ3hCRSxLQUFLLENBQUN6RyxJQUFJLENBQUMwRyxJQUFJLENBQUM7UUFDbEI7UUFFQSxPQUFPRCxLQUFLO01BQ2QsQ0FBQyxFQUFFLEVBQXNCLENBQUM7SUFDNUI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEJIO0FBQ0E7QUFDQTs7QUFFc0M7QUFBQSxJQUVqQkcsZUFBZTtFQW1CbEMsU0FBQUEsZ0JBQVlDLFNBQXVCLEVBQUU7SUFBQXRRLDJJQUFBLE9BQUFxUSxlQUFBO0lBQUFwUSwySUFBQTtJQUNuQyxJQUFJLENBQUNzUSxVQUFVLEdBQUdELFNBQVM7RUFDN0I7RUFBQyxPQUFBL1Asd0lBQUEsQ0FBQThQLGVBQUE7SUFBQTdQLEdBQUE7SUFBQUUsS0FBQSxFQWxCRCxTQUFBOFAsR0FBR0EsQ0FBQ0MsUUFBc0IsRUFBRUMsT0FBZSxFQUFFQyxRQUFnQixFQUFFQyxJQUFVLEVBQVE7TUFDL0UsSUFBSUgsUUFBUSxHQUFHLElBQUksQ0FBQ0YsVUFBVSxFQUFFO1FBQzlCO01BQ0Y7TUFFQSxJQUFNTSxXQUFXLE1BQUF6TSxNQUFBLENBQU13TSxJQUFJLENBQUNFLFdBQVcsQ0FBQyxDQUFDLFFBQUExTSxNQUFBLENBQUt1TSxRQUFRLFNBQUF2TSxNQUFBLENBQU1nTSxpREFBWSxDQUFDSyxRQUFRLENBQUMsUUFBQXJNLE1BQUEsQ0FBS3NNLE9BQU8sQ0FBRTtNQUVoRyxJQUFJRCxRQUFRLEdBQUdMLGlEQUFZLENBQUNXLElBQUksRUFBRTtRQUNoQ0MsT0FBTyxDQUFDUixHQUFHLENBQUNLLFdBQVcsQ0FBQztRQUV4QjtNQUNGO01BRUFHLE9BQU8sQ0FBQzNHLEtBQUssQ0FBQ3dHLFdBQVcsQ0FBQztJQUM1QjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkJIO0FBQ0E7QUFDQTtBQUNBOztBQUlpRTtBQUUxRCxJQUFLVCxZQUFZLDBCQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBQSxPQUFaQSxZQUFZO0FBQUE7QUFTdkIsSUFJb0JhLE1BQU07RUFrTXpCLFNBQUFBLE9BQVlOLFFBQWdCLEVBQUVPLFNBQW9CLEVBQUVaLFNBQTJCLEVBQUU7SUFBQXRRLDJJQUFBLE9BQUFpUixNQUFBO0lBQUFoUiwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUMvRSxJQUFJLENBQUNrUixTQUFTLEdBQUdSLFFBQVE7SUFDekIsSUFBSSxDQUFDWixVQUFVLEdBQUdtQixTQUFTO0lBQzNCLElBQUksQ0FBQ1gsVUFBVSxHQUFHRCxTQUFTO0VBQzdCO0VBQUMsT0FBQS9QLHdJQUFBLENBQUEwUSxNQUFBO0lBQUF6USxHQUFBO0lBQUFDLEdBQUEsRUFqTUQsU0FBQUEsSUFBQSxFQUF1QjtNQUNyQixPQUFPLElBQUksQ0FBQzBRLFNBQVM7SUFDdkI7RUFBQztJQUFBM1EsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyQjtNQUN6QixPQUFPLElBQUksQ0FBQ3NQLFVBQVU7SUFDeEI7RUFBQztJQUFBdlAsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFrQztNQUNoQyxPQUFPLElBQUksQ0FBQzhQLFVBQVU7SUFDeEI7RUFBQztJQUFBL1AsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTBRLEtBQUtBLENBQUEsRUFBcUI7TUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQ2IsVUFBVSxDQUFDN1AsS0FBSyxJQUFJLElBQUksQ0FBQzZQLFVBQVUsQ0FBQzdQLEtBQUssR0FBRzBQLFlBQVksQ0FBQ2lCLEtBQUssRUFBRTtRQUN4RTtNQUNGO01BQUMsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUE5RyxNQUFBLEVBSE0rRyxJQUFJLE9BQUFqQyxLQUFBLENBQUErQixJQUFBLEdBQUFHLElBQUEsTUFBQUEsSUFBQSxHQUFBSCxJQUFBLEVBQUFHLElBQUE7UUFBSkQsSUFBSSxDQUFBQyxJQUFBLElBQUFGLFNBQUEsQ0FBQUUsSUFBQTtNQUFBO01BS1gsSUFBSSxDQUFDakIsR0FBRyxDQUFDSixZQUFZLENBQUNpQixLQUFLLEVBQUVHLElBQUksQ0FBQztJQUNwQztFQUFDO0lBQUFoUixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBZ1IsS0FBS0EsQ0FBQSxFQUFxQjtNQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDbkIsVUFBVSxDQUFDN1AsS0FBSyxJQUFJLElBQUksQ0FBQzZQLFVBQVUsQ0FBQzdQLEtBQUssR0FBRzBQLFlBQVksQ0FBQ3VCLEtBQUssRUFBRTtRQUN4RTtNQUNGO01BQUMsU0FBQUMsS0FBQSxHQUFBTCxTQUFBLENBQUE5RyxNQUFBLEVBSE0rRyxJQUFJLE9BQUFqQyxLQUFBLENBQUFxQyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSkwsSUFBSSxDQUFBSyxLQUFBLElBQUFOLFNBQUEsQ0FBQU0sS0FBQTtNQUFBO01BS1gsSUFBSSxDQUFDckIsR0FBRyxDQUFDSixZQUFZLENBQUN1QixLQUFLLEVBQUVILElBQUksQ0FBQztJQUNwQztFQUFDO0lBQUFoUixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbUosSUFBSUEsQ0FBQSxFQUFxQjtNQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDMEcsVUFBVSxDQUFDN1AsS0FBSyxJQUFJLElBQUksQ0FBQzZQLFVBQVUsQ0FBQzdQLEtBQUssR0FBRzBQLFlBQVksQ0FBQzBCLElBQUksRUFBRTtRQUN2RTtNQUNGO01BQUMsU0FBQUMsS0FBQSxHQUFBUixTQUFBLENBQUE5RyxNQUFBLEVBSEsrRyxJQUFJLE9BQUFqQyxLQUFBLENBQUF3QyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSlIsSUFBSSxDQUFBUSxLQUFBLElBQUFULFNBQUEsQ0FBQVMsS0FBQTtNQUFBO01BS1YsSUFBSSxDQUFDeEIsR0FBRyxDQUFDSixZQUFZLENBQUMwQixJQUFJLEVBQUVOLElBQUksQ0FBQztJQUNuQztFQUFDO0lBQUFoUixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBdVIsSUFBSUEsQ0FBQSxFQUFxQjtNQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDMUIsVUFBVSxDQUFDN1AsS0FBSyxJQUFJLElBQUksQ0FBQzZQLFVBQVUsQ0FBQzdQLEtBQUssR0FBRzBQLFlBQVksQ0FBQ1csSUFBSSxFQUFFO1FBQ3ZFO01BQ0Y7TUFBQyxTQUFBbUIsS0FBQSxHQUFBWCxTQUFBLENBQUE5RyxNQUFBLEVBSEsrRyxJQUFJLE9BQUFqQyxLQUFBLENBQUEyQyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSlgsSUFBSSxDQUFBVyxLQUFBLElBQUFaLFNBQUEsQ0FBQVksS0FBQTtNQUFBO01BS1YsSUFBSSxDQUFDM0IsR0FBRyxDQUFDSixZQUFZLENBQUNXLElBQUksRUFBRVMsSUFBSSxDQUFDO0lBQ25DO0VBQUM7SUFBQWhSLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUEySixLQUFLQSxDQUFBLEVBQXFCO01BQ3hCLElBQUksQ0FBQyxJQUFJLENBQUNrRyxVQUFVLENBQUM3UCxLQUFLLElBQUksSUFBSSxDQUFDNlAsVUFBVSxDQUFDN1AsS0FBSyxHQUFHMFAsWUFBWSxDQUFDcEssS0FBSyxFQUFFO1FBQ3hFO01BQ0Y7TUFBQyxTQUFBb00sS0FBQSxHQUFBYixTQUFBLENBQUE5RyxNQUFBLEVBSE0rRyxJQUFJLE9BQUFqQyxLQUFBLENBQUE2QyxLQUFBLEdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSmIsSUFBSSxDQUFBYSxLQUFBLElBQUFkLFNBQUEsQ0FBQWMsS0FBQTtNQUFBO01BS1gsSUFBSSxDQUFDN0IsR0FBRyxDQUFDSixZQUFZLENBQUNwSyxLQUFLLEVBQUV3TCxJQUFJLENBQUM7SUFDcEM7RUFBQztJQUFBaFIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTRSLEtBQUtBLENBQUEsRUFBcUI7TUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQy9CLFVBQVUsQ0FBQzdQLEtBQUssSUFBSSxJQUFJLENBQUM2UCxVQUFVLENBQUM3UCxLQUFLLEdBQUcwUCxZQUFZLENBQUNtQyxLQUFLLEVBQUU7UUFDeEU7TUFDRjtNQUFDLFNBQUFDLEtBQUEsR0FBQWpCLFNBQUEsQ0FBQTlHLE1BQUEsRUFITStHLElBQUksT0FBQWpDLEtBQUEsQ0FBQWlELEtBQUEsR0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtRQUFKakIsSUFBSSxDQUFBaUIsS0FBQSxJQUFBbEIsU0FBQSxDQUFBa0IsS0FBQTtNQUFBO01BS1gsSUFBSSxDQUFDakMsR0FBRyxDQUFDSixZQUFZLENBQUNtQyxLQUFLLEVBQUVmLElBQUksQ0FBQztJQUNwQztFQUFDO0lBQUFoUixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFROFAsR0FBR0EsQ0FBQ2tDLEtBQWEsRUFBRWxCLElBQVMsRUFBUTtNQUFBLElBQUF6USxLQUFBO01BQzFDLElBQU02UCxJQUFJLEdBQUcsSUFBSTFRLElBQUksQ0FBQyxDQUFDO01BQ3ZCLElBQU13USxPQUFPLEdBQUcsSUFBSSxDQUFDaUMsbUJBQW1CLENBQUNuQixJQUFJLENBQUM7TUFFOUMsSUFBSSxDQUFDekIsVUFBVSxDQUFDclAsS0FBSyxDQUFDb04sT0FBTyxDQUFDLFVBQUNrQyxRQUFtQixFQUFLO1FBQ3JEQSxRQUFRLENBQUNRLEdBQUcsQ0FBQ2tDLEtBQUssRUFBRWhDLE9BQU8sRUFBRTNQLEtBQUksQ0FBQzRQLFFBQVEsRUFBRUMsSUFBSSxDQUFDO01BQ25ELENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQXBRLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFpUyxtQkFBbUJBLENBQUNuQixJQUFTLEVBQVU7TUFBQSxJQUFBMVAsTUFBQTtNQUM3QyxJQUFJOFEseUJBQXlCLEdBQUdwQixJQUFJLENBQUMsQ0FBQyxDQUFDO01BQ3ZDLElBQUlxQixLQUFLLEdBQUcsQ0FBQztNQUViLE9BQU9ELHlCQUF5QixDQUFDek8sT0FBTyxJQUFJcU4sSUFBSSxDQUFDL0csTUFBTSxHQUFHLENBQUMsSUFBSW9JLEtBQUssSUFBSSxDQUFDLEVBQUU7UUFDekVBLEtBQUssR0FBR0QseUJBQXlCLENBQUN6TyxPQUFPLENBQUMsR0FBRyxFQUFFME8sS0FBSyxDQUFDO1FBRXJELElBQUlBLEtBQUssR0FBRyxDQUFDLEVBQUU7VUFDYixJQUFNOUssSUFBSSxHQUFHNksseUJBQXlCLENBQUN0TyxTQUFTLENBQUN1TyxLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1VBRXRFLFFBQVE5SyxJQUFJO1lBQ1YsS0FBSyxHQUFHO2NBQ047Y0FDQTZLLHlCQUF5QixHQUFHQSx5QkFBeUIsQ0FBQ3RPLFNBQVMsQ0FBQyxDQUFDLEVBQUV1TyxLQUFLLENBQUMsR0FBR0QseUJBQXlCLENBQUN0TyxTQUFTLENBQUN1TyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2NBQzFIQSxLQUFLLEVBQUU7Y0FFUDtZQUNGLEtBQUssR0FBRztZQUNSLEtBQUssR0FBRztjQUNOO2NBQ0FyQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdvQix5QkFBeUIsR0FBRyxJQUFJLENBQUNFLGVBQWUsQ0FDeEQsSUFBSSxDQUFDL0UsUUFBUSxDQUFDeUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3RCb0IseUJBQXlCLEVBQ3pCQyxLQUNGLENBQUM7Y0FDRHJCLElBQUksQ0FBQ3VCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2NBRWpCO1lBQ0YsS0FBSyxHQUFHO2NBQ047Y0FDQXZCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR29CLHlCQUF5QixHQUFHLElBQUksQ0FBQ0UsZUFBZSxDQUN4RCxJQUFJLENBQUNFLFNBQVMsQ0FBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN2Qm9CLHlCQUF5QixFQUN6QkMsS0FDRixDQUFDO2NBRURyQixJQUFJLENBQUN1QixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztjQUVqQjtZQUNGO2NBQ0UsT0FBT3ZCLElBQUksQ0FBQ3pELFFBQVEsQ0FBQyxDQUFDO1VBQzFCO1FBQ0Y7TUFDRjtNQUVBLElBQUl5RCxJQUFJLENBQUMvRyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25CK0csSUFBSSxHQUFHQSxJQUFJLENBQUMvQixNQUFNLENBQUMsVUFBQ3dELFdBQVcsRUFBRUMsWUFBWSxFQUFFTCxLQUFLLEVBQUVNLEtBQUssRUFBSztVQUM5RCxJQUFJTixLQUFLLEdBQUcsQ0FBQyxLQUFLTSxLQUFLLENBQUMxSSxNQUFNLElBQUl5SSxZQUFZLFlBQVlsTixLQUFLLEVBQUU7WUFDL0QsSUFBSUYsc0VBQWlCLENBQUNzTiw2QkFBNkIsRUFBRTtjQUNuRCxPQUFPSCxXQUFXLEdBQUcsSUFBSSxHQUFHblIsTUFBSSxDQUFDaU0sUUFBUSxDQUFDbUYsWUFBWSxDQUFDRyxLQUFLLENBQUM7WUFDL0Q7WUFFQSxPQUFPSixXQUFXLEdBQUcsSUFBSSxHQUFHblIsTUFBSSxDQUFDaU0sUUFBUSxDQUFDbUYsWUFBWSxDQUFDeEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHNU8sTUFBSSxDQUFDaU0sUUFBUSxDQUFDbUYsWUFBWSxDQUFDRyxLQUFLLENBQUM7VUFDNUc7VUFFQSxPQUFPSixXQUFXLE9BQUE3TyxNQUFBLENBQU90QyxNQUFJLENBQUNpTSxRQUFRLENBQUNtRixZQUFZLENBQUMsTUFBRztRQUN6RCxDQUFDLENBQUM7TUFDSjtNQUVBLE9BQU8xQixJQUFJLENBQUN6RCxRQUFRLENBQUMsQ0FBQztJQUN4QjtFQUFDO0lBQUF2TixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRc1MsU0FBU0EsQ0FBQ00sR0FBUSxFQUFVO01BQ2xDLElBQU1DLEtBQUssR0FBRyxFQUFFO01BRWhCLElBQUk7UUFDRixPQUFPNUksSUFBSSxDQUFDcUksU0FBUyxDQUNuQk0sR0FBRyxZQUFZdE4sS0FBSyxHQUFHLElBQUksQ0FBQytILFFBQVEsQ0FBQ3VGLEdBQUcsQ0FBQyxHQUFHQSxHQUFHLEVBQy9DLFVBQUM5UyxHQUFHLEVBQUVFLEtBQUssRUFBSztVQUNkLElBQUksQ0FBQyxDQUFDQSxLQUFLLElBQUlBLEtBQUssWUFBWThTLE1BQU0sRUFBRTtZQUN0QyxJQUFJRCxLQUFLLENBQUMxTyxRQUFRLENBQUNuRSxLQUFLLENBQUMsRUFBRTtjQUN6QixPQUFPLGFBQWE7WUFDdEI7WUFFQTZTLEtBQUssQ0FBQzlKLElBQUksQ0FBQy9JLEtBQUssQ0FBQztVQUNuQjtVQUVBLE9BQU9BLEtBQUs7UUFDZCxDQUFDLEVBQ0QsQ0FDRixDQUFDO01BQ0gsQ0FBQyxDQUFDLE9BQU9tSyxDQUFDLEVBQUU7UUFDVixPQUFPLGlDQUFpQztNQUMxQztJQUNGO0VBQUM7SUFBQXJLLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFvUyxlQUFlQSxDQUFDVyxRQUFhLEVBQUViLHlCQUFpQyxFQUFFQyxLQUFhLEVBQVU7TUFDL0YsT0FBT0QseUJBQXlCLENBQUN0TyxTQUFTLENBQUMsQ0FBQyxFQUFFdU8sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDOUUsUUFBUSxDQUFDMEYsUUFBUSxDQUFDLEdBQUdiLHlCQUF5QixDQUFDdE8sU0FBUyxDQUFDdU8sS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqSTtFQUFDO0lBQUFyUyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRcU4sUUFBUUEsQ0FBQzJGLElBQVMsRUFBVTtNQUNsQyxJQUFJLE9BQU9BLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsT0FBT0EsSUFBSTtNQUNiO01BRUEsSUFBSSxPQUFPQSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQzdCLE9BQU9BLElBQUksR0FBRyxNQUFNLEdBQUcsT0FBTztNQUNoQztNQUVBLElBQUksT0FBT0EsSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixPQUFPQSxJQUFJLENBQUMzRixRQUFRLENBQUMsQ0FBQztNQUN4QjtNQUVBLElBQUk0RixXQUFXLEdBQUcsRUFBRTtNQUVwQixJQUFJRCxJQUFJLEVBQUU7UUFDUixJQUFJLE9BQU9BLElBQUksS0FBSyxVQUFVLEVBQUU7VUFDOUJDLFdBQVcsR0FBR0QsSUFBSSxDQUFDM0YsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxNQUFNLElBQUkyRixJQUFJLFlBQVlGLE1BQU0sRUFBRTtVQUNqQyxJQUFJO1lBQ0ZHLFdBQVcsR0FBR0QsSUFBSSxDQUFDM0YsUUFBUSxDQUFDLENBQUM7VUFDL0IsQ0FBQyxDQUFDLE9BQU9sRCxDQUFDLEVBQUU7WUFDVjhJLFdBQVcsR0FBRyw2QkFBNkI7VUFDN0M7UUFDRjtNQUNGO01BRUEsT0FBT0EsV0FBVztJQUNwQjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdE5IO0FBQ0E7QUFDQTtBQUN5RDtBQUNYO0FBQUEsSUFFekIxTyxjQUFjO0VBQUEsU0FBQUEsZUFBQTtJQUFBakYsMklBQUEsT0FBQWlGLGNBQUE7RUFBQTtFQUFBLE9BQUExRSx3SUFBQSxDQUFBMEUsY0FBQTtJQUFBekUsR0FBQTtJQUFBQyxHQUFBLEVBQ2pDLFNBQUFBLElBQUEsRUFBK0M7TUFDN0MsT0FBTzJQLHdEQUFZLENBQUM5RSxrRUFBYSxDQUFDUyxRQUFRLENBQUM7SUFDN0M7RUFBQztJQUFBdkwsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzRDtNQUNwRCxPQUFPMlAsd0RBQVksQ0FBQzlFLGtFQUFhLENBQUNXLFlBQVksQ0FBQztJQUNqRDtFQUFDO0lBQUF6TCxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdEO01BQ3RELE9BQU8yUCx3REFBWSxDQUFDMEIsSUFBSTtJQUMxQjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakJIO0FBQ0E7QUFDQTs7QUFFOEM7QUFDVjtBQUNjO0FBQ0Y7QUFDYztBQUNXO0FBQ007QUFFakM7QUFBQSxJQUV6QnZKLGFBQWE7RUE2RGhDLFNBQUFBLGNBQUEsRUFBc0I7SUFBQXZJLDJJQUFBLE9BQUF1SSxhQUFBO0lBQ3BCLE1BQU0sSUFBSXZDLEtBQUssQ0FBQyw4REFBOEQsQ0FBQztFQUNqRjtFQUFDLE9BQUF6Rix3SUFBQSxDQUFBZ0ksYUFBQTtJQUFBL0gsR0FBQTtJQUFBQyxHQUFBLEVBeERELFNBQUFBLElBQUEsRUFBNEQ7TUFDMUQsT0FBTzhILGFBQWEsQ0FBQ3lMLHVCQUF1QjtJQUM5QztFQUFDO0lBQUF4VCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPZ0ksU0FBU0EsQ0FBQ2lJLFFBQWdCLEVBQVc7TUFDMUMsSUFBSSxPQUFPQSxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ2hDQSxRQUFRLEdBQUcsS0FBSztNQUNsQjtNQUVBLElBQU1zRCxNQUFNLEdBQUcxTCxhQUFhLENBQUMyTCxRQUFRLENBQUN2RCxRQUFRLENBQUM7TUFFL0MsSUFBSXNELE1BQU0sRUFBRTtRQUNWLE9BQU9BLE1BQU07TUFDZjtNQUVBLE9BQU8xTCxhQUFhLENBQUMyTCxRQUFRLENBQUN2RCxRQUFRLENBQUMsR0FBRyxJQUFJTSwrQ0FBTSxDQUFDTixRQUFRLEVBQUUsSUFBSSxDQUFDWixVQUFVLEVBQUUsSUFBSSxDQUFDUSxVQUFVLENBQUM7SUFDbEc7RUFBQztJQUFBL1AsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT3lULDJDQUEyQ0EsQ0FBQSxFQUFTO01BQ3pENUwsYUFBYSxDQUFDNkwsaUJBQWlCLENBQUMsQ0FBQztNQUNqQzdMLGFBQWEsQ0FBQzhMLHlCQUF5QixDQUFDLFNBQVMsRUFBRTlMLGFBQWEsQ0FBQytMLGtCQUFrQixDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7TUFDL0ZoTSxhQUFhLENBQUM4TCx5QkFBeUIsQ0FBQyxXQUFXLEVBQUU5TCxhQUFhLENBQUNpTSxvQkFBb0IsQ0FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JHO0VBQUM7SUFBQS9ULEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWUwVCxpQkFBaUJBLENBQUEsRUFBUztNQUN2QyxJQUFNSyxjQUFjLEdBQUcsSUFBSSxDQUFDQyw2QkFBNkIsQ0FBQ3ZQLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQztNQUVoRyxJQUFJaUwsaURBQVksQ0FBQ3FFLGNBQWMsQ0FBQyxFQUFFO1FBQ2hDLElBQUksQ0FBQ2xFLFVBQVUsQ0FBQ29FLFlBQVksQ0FBQ3ZFLGlEQUFZLENBQUNxRSxjQUFjLENBQUMsQ0FBQztNQUM1RDtNQUVBO0lBQ0Y7RUFBQztJQUFBalUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZTJULHlCQUF5QkEsQ0FBQ2pQLElBQVksRUFBRXdQLGFBQTRDLEVBQVE7TUFDekcsSUFBTUgsY0FBYyxHQUFHLElBQUksQ0FBQ0MsNkJBQTZCLENBQUN2UCxjQUFjLFdBQUFmLE1BQUEsQ0FBV2dCLElBQUksbUJBQWdCLENBQUM7TUFFeEcsSUFBSXFQLGNBQWMsS0FBSyxLQUFLLEVBQUU7UUFDNUI7TUFDRjtNQUVBRyxhQUFhLENBQUN4RSxpREFBWSxDQUFDcUUsY0FBYyxDQUFDLENBQUM7SUFDN0M7RUFBQztJQUFBalUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBZTRULGtCQUFrQkEsQ0FBQzVCLEtBQW1CLEVBQVE7TUFDM0QsSUFBSSxDQUFDM0MsVUFBVSxDQUFDck8sR0FBRyxDQUFDLElBQUkyTyx3REFBZSxDQUFDcUMsS0FBSyxJQUFJek4sd0RBQWMsQ0FBQ1csMEJBQTBCLENBQUMsQ0FBQztJQUM5RjtFQUFDO0lBQUFwRixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFlOFQsb0JBQW9CQSxDQUFDOUIsS0FBbUIsRUFBUTtNQUM3RCxJQUFJLENBQUNzQix1QkFBdUIsQ0FBQzFELFNBQVMsR0FBR29DLEtBQUssSUFBSXpOLHdEQUFjLENBQUNZLDRCQUE0QjtNQUU3RixJQUFJLENBQUNrSyxVQUFVLENBQUNyTyxHQUFHLENBQUMsSUFBSW1TLG1FQUFpQixDQUFDLElBQUksQ0FBQ0csdUJBQXVCLENBQUMsQ0FBQztJQUMxRTtFQUFDO0FBQUE7QUFBQS9ULDJJQUFBLENBM0RrQnNJLGFBQWEsbUNBQzhDLElBQUl3TCx5RUFBNEIsQ0FBQyxDQUFDO0FBQUE5VCwySUFBQSxDQUQ3RnNJLGFBQWEsY0FFeUIsQ0FBQyxDQUFDO0FBQUF0SSwySUFBQSxDQUZ4Q3NJLGFBQWEsZ0JBR08sSUFBSXVILGtEQUFTLENBQUMsQ0FBQztBQUFBN1AsMklBQUEsQ0FIbkNzSSxhQUFhLGdCQUljLElBQUlxTCx5REFBZ0IsQ0FBQyxDQUFDO0FBQUEzVCwySUFBQSxDQUpqRHNJLGFBQWEsNkJBS2lDLElBQUl1TCx5RUFBc0IsQ0FBQyxDQUFDO0FBTDdEO0FBa0VsQ3ZMLGFBQWEsQ0FBQzRMLDJDQUEyQyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRjNEO0FBQ0E7QUFDQTtBQUMwRDtBQUNGO0FBQUEsSUFFbkNuUCxtQkFBbUI7RUFBQSxTQUFBQSxvQkFBQTtJQUFBaEYsMklBQUEsT0FBQWdGLG1CQUFBO0VBQUE7RUFBQSxPQUFBekUsd0lBQUEsQ0FBQXlFLG1CQUFBO0lBQUF4RSxHQUFBO0lBQUFFLEtBQUEsRUFDdEMsU0FBT2dGLHFDQUFxQ0EsQ0FBQ21QLFlBQTBCLEVBQW9CO01BQ3pGLFFBQVFBLFlBQVk7UUFDbEIsS0FBS3pFLGlEQUFZLENBQUMwRSxHQUFHO1VBQ25CLE9BQU8sS0FBSztRQUNkLEtBQUsxRSxpREFBWSxDQUFDaUIsS0FBSztVQUNyQixPQUFPLE9BQU87UUFDaEIsS0FBS2pCLGlEQUFZLENBQUN1QixLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQixLQUFLdkIsaURBQVksQ0FBQzBCLElBQUk7VUFDcEIsT0FBTyxPQUFPO1FBQ2hCLEtBQUsxQixpREFBWSxDQUFDVyxJQUFJO1VBQ3BCLE9BQU8sTUFBTTtRQUNmLEtBQUtYLGlEQUFZLENBQUNwSyxLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQixLQUFLb0ssaURBQVksQ0FBQ21DLEtBQUs7VUFDckIsT0FBTyxPQUFPO1FBQ2hCLEtBQUtuQyxpREFBWSxDQUFDMkUsR0FBRztVQUNuQixPQUFPLEtBQUs7UUFDZDtVQUNFbkYsbUVBQWlCLENBQUNpRixZQUFZLENBQUM7TUFDbkM7SUFDRjtFQUFDO0lBQUFyVSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPc1UscUNBQXFDQSxDQUFDQyxnQkFBa0MsRUFBZ0I7TUFDN0YsUUFBUUEsZ0JBQWdCO1FBQ3RCLEtBQUssS0FBSztVQUNSLE9BQU83RSxpREFBWSxDQUFDMEUsR0FBRztRQUN6QixLQUFLLE9BQU87VUFDVixPQUFPMUUsaURBQVksQ0FBQ2lCLEtBQUs7UUFDM0IsS0FBSyxPQUFPO1VBQ1YsT0FBT2pCLGlEQUFZLENBQUN1QixLQUFLO1FBQzNCLEtBQUssTUFBTTtVQUNULE9BQU92QixpREFBWSxDQUFDMEIsSUFBSTtRQUMxQixLQUFLLE1BQU07VUFDVCxPQUFPMUIsaURBQVksQ0FBQ1csSUFBSTtRQUMxQixLQUFLLE9BQU87VUFDVixPQUFPWCxpREFBWSxDQUFDcEssS0FBSztRQUMzQixLQUFLLE9BQU87VUFDVixPQUFPb0ssaURBQVksQ0FBQ21DLEtBQUs7UUFDM0IsS0FBSyxLQUFLO1VBQ1IsT0FBT25DLGlEQUFZLENBQUMyRSxHQUFHO1FBQ3pCO1VBQ0VuRixtRUFBaUIsQ0FBQ3FGLGdCQUFnQixDQUFDO01BQ3ZDO0lBQ0Y7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkRIO0FBQ0E7QUFDQTtBQUM4QztBQUFBLElBR3pCckIsZ0JBQWdCO0VBQUEsU0FBQUEsaUJBQUE7SUFBQTVULDJJQUFBLE9BQUE0VCxnQkFBQTtJQUFBM1QsMklBQUEscUJBQ0FnRix1REFBYyxDQUFDVSxtQkFBbUI7RUFBQTtFQUFBLE9BQUFwRix3SUFBQSxDQUFBcVQsZ0JBQUE7SUFBQXBULEdBQUE7SUFBQUMsR0FBQSxFQUVyRSxTQUFBQSxJQUFBLEVBQTBCO01BQ3hCLE9BQU8sSUFBSSxDQUFDOFAsVUFBVTtJQUN4QjtFQUFDO0lBQUEvUCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBaVUsWUFBWUEsQ0FBQ3JFLFNBQXVCLEVBQVE7TUFDMUMsSUFBSSxDQUFDQyxVQUFVLEdBQUdELFNBQVM7SUFDN0I7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmSDtBQUNBO0FBQ0E7QUFDc0Q7QUFDSTtBQUNsQjtBQUFBLElBRW5CbEksVUFBVTtFQUc3QixTQUFBQSxXQUFZK00sT0FBb0IsRUFBRTtJQUFBblYsMklBQUEsT0FBQW9JLFVBQUE7SUFBQW5JLDJJQUFBO0lBQ2hDLElBQUksQ0FBQ21WLFFBQVEsR0FBR0QsT0FBTztFQUN6QjtFQUFDLE9BQUE1VSx3SUFBQSxDQUFBNkgsVUFBQTtJQUFBNUgsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQThJLE9BQU9BLENBQUEsRUFBVztNQUNoQixPQUFPckIsb0RBQVcsQ0FBQyxJQUFJLENBQUNpTixRQUFRLENBQUM7SUFDbkM7RUFBQztJQUFBNVUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTJVLGlCQUFpQkEsQ0FBQSxFQUFtQjtNQUNsQyxRQUFRLElBQUksQ0FBQ0QsUUFBUTtRQUNuQixLQUFLak4sb0RBQVcsQ0FBQ21OLGdCQUFnQjtVQUMvQixPQUFPSixpRUFBYyxDQUFDSyxTQUFTO1FBQ2pDLEtBQUtwTixvREFBVyxDQUFDcU4sK0JBQStCO1VBQzlDLE9BQU9OLGlFQUFjLENBQUNLLFNBQVM7UUFDakMsS0FBS3BOLG9EQUFXLENBQUNzTixPQUFPO1VBQ3RCLE9BQU9QLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBSzVNLG9EQUFXLENBQUN1TixTQUFTO1VBQ3hCLE9BQU9SLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBSzVNLG9EQUFXLENBQUNjLGNBQWM7VUFDN0IsT0FBT2lNLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBSzVNLG9EQUFXLENBQUNnQixXQUFXO1VBQzFCLE9BQU8rTCxpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUs1TSxvREFBVyxDQUFDd04sYUFBYTtVQUM1QixPQUFPVCxpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUs1TSxvREFBVyxDQUFDeU4sMEJBQTBCO1VBQ3pDLE9BQU9WLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBSzVNLG9EQUFXLENBQUMwTixXQUFXO1VBQzFCLE9BQU9YLGlFQUFjLENBQUNILEdBQUc7UUFDM0IsS0FBSzVNLG9EQUFXLENBQUMyTixpQkFBaUI7VUFDaEMsT0FBT1osaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQixLQUFLNU0sb0RBQVcsQ0FBQzROLHFCQUFxQjtVQUNwQyxPQUFPYixpRUFBYyxDQUFDSCxHQUFHO1FBQzNCLEtBQUs1TSxvREFBVyxDQUFDNk4scUJBQXFCO1VBQ3BDLE9BQU9kLGlFQUFjLENBQUNILEdBQUc7UUFDM0I7VUFDRW5GLG1FQUFpQixDQUFDLElBQUksQ0FBQ3dGLFFBQVEsQ0FBQztNQUNwQztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQ0g7QUFDQTtBQUNBO0FBQ2tEO0FBRTNDLElBQUtGLGNBQWMsMEJBQWRBLGNBQWM7RUFBZEEsY0FBYyxDQUFkQSxjQUFjO0VBQWRBLGNBQWMsQ0FBZEEsY0FBYztFQUFkQSxjQUFjLENBQWRBLGNBQWM7RUFBQSxPQUFkQSxjQUFjO0FBQUE7QUFJekIsSUFJb0JlLG9CQUFvQjtFQUFBLFNBQUFBLHFCQUFBO0lBQUFqVywySUFBQSxPQUFBaVcsb0JBQUE7SUFBQWhXLDJJQUFBLGVBQ3hCLG1EQUFtRDtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQSxxQkFJN0I4RSx5REFBZ0IsQ0FBQ1UscUJBQXFCO0VBQUE7RUFBQSxPQUFBbEYsd0lBQUEsQ0FBQTBWLG9CQUFBO0lBQUF6VixHQUFBO0lBQUFDLEdBQUEsRUFFM0UsU0FBQUEsSUFBQSxFQUFrQjtNQUNoQixPQUFPLElBQUksQ0FBQ3lWLElBQUk7SUFDbEIsQ0FBQztJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBUUMsR0FBVyxFQUFFO01BQ25CLElBQU1DLFVBQVUsR0FBRyxJQUFJMVAsR0FBRyxDQUFDeVAsR0FBRyxDQUFDO01BRS9CQyxVQUFVLENBQUNDLFFBQVEsR0FBR0QsVUFBVSxDQUFDQyxRQUFRLEdBQUcsVUFBVTtNQUV0RCxJQUFJLENBQUNKLElBQUksR0FBR0csVUFBVSxDQUFDdEksUUFBUSxDQUFDLENBQUM7SUFDbkM7RUFBQztJQUFBdk4sR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEwQjtNQUN4QixPQUFPLElBQUksQ0FBQzhWLFlBQVk7SUFDMUIsQ0FBQztJQUFBSixHQUFBLEVBRUQsU0FBQUEsSUFBZ0JLLFdBQW1CLEVBQUU7TUFDbkMsSUFBSSxDQUFDRCxZQUFZLEdBQUdDLFdBQVc7SUFDakM7RUFBQztJQUFBaFcsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQjtNQUNwQixPQUFPLElBQUksQ0FBQ2dXLFFBQVE7SUFDdEIsQ0FBQztJQUFBTixHQUFBLEVBRUQsU0FBQUEsSUFBWU8sT0FBZSxFQUFFO01BQzNCLElBQUksQ0FBQ0QsUUFBUSxHQUFHQyxPQUFPO0lBQ3pCO0VBQUM7SUFBQWxXLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0I7TUFDdEIsT0FBTyxJQUFJLENBQUNrVyxVQUFVO0lBQ3hCLENBQUM7SUFBQVIsR0FBQSxFQUVELFNBQUFBLElBQWNTLFNBQWlCLEVBQUU7TUFDL0IsSUFBSSxDQUFDRCxVQUFVLEdBQUdDLFNBQVM7SUFDN0I7RUFBQztJQUFBcFcsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnQztNQUM5QixPQUFPLElBQUksQ0FBQzhQLFVBQVU7SUFDeEIsQ0FBQztJQUFBNEYsR0FBQSxFQUVELFNBQUFBLElBQWM3RixTQUF5QixFQUFFO01BQ3ZDLElBQUksQ0FBQ0MsVUFBVSxHQUFHRCxTQUFTO0lBQzdCO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOURIO0FBQ0E7QUFDQTs7QUFFOEM7QUFDOEI7QUFDL0M7QUFDa0I7QUFDRjtBQUNnQjtBQUFBLElBRXhDMEcsY0FBYztFQXNDakMsU0FBQUEsZUFBQSxFQUFzQjtJQUFBaFgsMklBQUEsT0FBQWdYLGNBQUE7SUFDcEIsTUFBTSxJQUFJaFIsS0FBSyxDQUFDLDhEQUE4RCxDQUFDO0VBQ2pGO0VBQUMsT0FBQXpGLHdJQUFBLENBQUF5VyxjQUFBO0lBQUF4VyxHQUFBO0lBQUFFLEtBQUEsRUFyQ0QsU0FBT3VXLGlCQUFpQkEsQ0FBQ2IsR0FBVyxFQUFrQjtNQUNwRCxJQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLEVBQUU7UUFDM0IsTUFBTSxJQUFJcFEsS0FBSyxDQUFDLElBQUksQ0FBQztNQUN2QjtNQUVBLElBQU1rUixlQUFlLEdBQUdGLGNBQWMsQ0FBQ0csZ0JBQWdCLENBQUNmLEdBQUcsQ0FBQztNQUU1RCxJQUFJYyxlQUFlLEVBQUU7UUFDbkIsT0FBT0EsZUFBZTtNQUN4QjtNQUVBLElBQU1FLG9CQUFvQixHQUFHLElBQUluQiw2REFBb0IsQ0FBQyxDQUFDO01BRXZEbUIsb0JBQW9CLENBQUNSLFNBQVMsR0FBR3RPLGdEQUFHLENBQUMrTyxlQUFlO01BQ3BERCxvQkFBb0IsQ0FBQ1YsT0FBTyxHQUFHcE8sZ0RBQUcsQ0FBQ29PLE9BQU8sQ0FBQ2hXLEtBQUs7TUFDaEQwVyxvQkFBb0IsQ0FBQ2hCLEdBQUcsR0FBR1UseURBQVksQ0FBQ1EsZUFBZSxDQUFDbEIsR0FBRyxDQUFDO01BQzVEZ0Isb0JBQW9CLENBQUNaLFdBQVcsR0FBR08sd0RBQVcsQ0FBQ1EscUJBQXFCLENBQUNuQixHQUFHLENBQUM7TUFFekVnQixvQkFBb0IsQ0FBQzlHLFNBQVMsR0FBR3hMLCtEQUFxQixDQUFDMFMseUNBQXlDLENBQUNsUCxnREFBRyxDQUFDbVAsY0FBYyxDQUFDO01BRXBILE9BQU9ULGNBQWMsQ0FBQ0csZ0JBQWdCLENBQUNmLEdBQUcsQ0FBQyxHQUFHLElBQUlTLHVEQUFjLENBQUNPLG9CQUFvQixDQUFDO0lBQ3hGO0VBQUM7SUFBQTVXLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9nWCxpQkFBaUJBLENBQUNELGNBQThCLEVBQVE7TUFDN0QsSUFBTVAsZUFBZSxHQUFHMUQsTUFBTSxDQUFDbUUsTUFBTSxDQUFDWCxjQUFjLENBQUNHLGdCQUFnQixDQUFDO01BRXRFLElBQUlELGVBQWUsSUFBSUEsZUFBZSxDQUFDek0sTUFBTSxFQUFFO1FBQzdDeU0sZUFBZSxDQUFDcEosT0FBTyxDQUFDLFVBQUFuRixjQUFjLEVBQUk7VUFDeEMsSUFBTXlPLG9CQUFvQixHQUFHek8sY0FBYyxDQUFDeU8sb0JBQW9CO1VBRWhFQSxvQkFBb0IsQ0FBQzlHLFNBQVMsR0FBR21ILGNBQWM7UUFDakQsQ0FBQyxDQUFDO01BQ0o7SUFDRjtFQUFDO0FBQUE7QUFBQXhYLDJJQUFBLENBcENrQitXLGNBQWMsc0JBQ3VDLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1o1RTtBQUNBO0FBQ0E7O0FBRW9EO0FBQ1E7QUFDRDtBQUVyQjtBQUd0QyxJQUFNYyxnQkFBZ0IsR0FBRyxJQUFJO0FBQzdCLElBQU1DLGtCQUFrQixHQUFHLElBQUk7QUFBQyxJQWtDWGxCLGNBQWM7RUFTakMsU0FBQUEsZUFBWU8sb0JBQTBDLEVBQUU7SUFBQXBYLDJJQUFBLE9BQUE2VyxjQUFBO0lBQUE1VywySUFBQSxrQkFScEJzSSw2REFBYSxDQUFDRyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFBQXpJLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBLG1CQUdwQyxFQUFFO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBLHdCQUVuQixDQUFDO0lBQUFBLDJJQUFBLGtCQUNQK1gsUUFBUSxDQUFDQyxRQUFRO0lBR2pDLElBQUksQ0FBQ0MscUJBQXFCLEdBQUdkLG9CQUFvQjtJQUNqRCxJQUFJLENBQUNlLG1CQUFtQixHQUFHLElBQUlQLGdFQUFrQixDQUFDLENBQUM7RUFDckQ7RUFBQyxPQUFBclgsd0lBQUEsQ0FBQXNXLGNBQUE7SUFBQXJXLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBaUQ7TUFDL0MsT0FBTyxJQUFJLENBQUN5WCxxQkFBcUI7SUFDbkM7RUFBQztJQUFBMVgsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQStJLElBQUlBLENBQUMyTyxNQUFlLEVBQVE7TUFDMUIsSUFBT3JQLFFBQVEsR0FBbURxUCxNQUFNLENBQWpFclAsUUFBUTtRQUFFckksS0FBSyxHQUE0QzBYLE1BQU0sQ0FBdkQxWCxLQUFLO1FBQUUyWCxhQUFhLEdBQTZCRCxNQUFNLENBQWhEQyxhQUFhO1FBQUUzTyxPQUFPLEdBQW9CME8sTUFBTSxDQUFqQzFPLE9BQU87UUFBRTRPLFFBQVEsR0FBVUYsTUFBTSxDQUF4QkUsUUFBUTtRQUFFQyxJQUFJLEdBQUlILE1BQU0sQ0FBZEcsSUFBSTtNQUM5RCxJQUFNblAsVUFBVSxHQUFHLElBQUloQixtREFBVSxDQUFDZ1EsTUFBTSxDQUFDaFAsVUFBVSxDQUFDO01BRXBELElBQUksSUFBSSxDQUFDOE8scUJBQXFCLENBQUM1SCxTQUFTLEdBQUdsSCxVQUFVLENBQUNpTSxpQkFBaUIsQ0FBQyxDQUFDLEVBQUU7UUFDekU7TUFDRjtNQUVBLElBQU1tRCxZQUFZLEdBQUc7UUFDbkJDLFNBQVMsRUFBRSxJQUFJdlksSUFBSSxDQUFDLENBQUMsQ0FBQzRRLFdBQVcsQ0FBQyxDQUFDO1FBQ25DNEYsT0FBTyxFQUFFLElBQUksQ0FBQ3dCLHFCQUFxQixDQUFDeEIsT0FBTztRQUMzQ0UsU0FBUyxFQUFFLElBQUksQ0FBQ3NCLHFCQUFxQixDQUFDdEIsU0FBUztRQUMvQzdOLFFBQVEsRUFBUkEsUUFBUTtRQUNScVAsTUFBTSxFQUFFaFAsVUFBVSxDQUFDSSxPQUFPLENBQUMsQ0FBQztRQUM1QjlJLEtBQUssRUFBTEEsS0FBSztRQUNMMlgsYUFBYSxFQUFiQSxhQUFhO1FBQ2JLLGlCQUFpQixFQUFFLElBQUksQ0FBQ0MsT0FBTztRQUMvQm5DLFdBQVcsRUFBRSxJQUFJLENBQUMwQixxQkFBcUIsQ0FBQzFCLFdBQVc7UUFDbkRoUyxPQUFPLEVBQUVxVCxtRUFBYyxDQUFDZSxVQUFVO1FBQ2xDbFAsT0FBTyxFQUFQQSxPQUFPO1FBQ1A0TyxRQUFRLEVBQVJBLFFBQVE7UUFDUkMsSUFBSSxFQUFKQTtNQUNGLENBQUM7TUFFRCxJQUFJLENBQUNuRCxRQUFRLENBQUMzTCxJQUFJLENBQUMrTyxZQUFZLENBQUM7TUFFaEMsSUFBTUssT0FBTyxHQUFHLElBQUksQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUMxQztFQUFDO0lBQUF0WSxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBK0ssWUFBQSxHQUFBc04sNklBQUEsZUFBQUMsMklBQUEsQ0FFRCxTQUFBRSxRQUEwQkMsZUFBcUM7UUFBQSxJQUFBQyxRQUFBO1FBQUEsT0FBQUosMklBQUEsVUFBQU0sU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1lBQUE7Y0FDdkRMLFFBQVEsR0FBRyxJQUFJTSxRQUFRLENBQUMsQ0FBQztjQUUvQk4sUUFBUSxDQUFDTyxNQUFNLENBQUMsVUFBVSxFQUFFaFAsSUFBSSxDQUFDcUksU0FBUyxDQUFDO2dCQUFDNEcsT0FBTyxFQUFFVDtjQUFlLENBQUMsQ0FBQyxDQUFDO2NBQUNJLFFBQUEsQ0FBQUUsSUFBQTtjQUFBLE9BRTNESSxLQUFLLENBQUMsSUFBSSxDQUFDM0IscUJBQXFCLENBQUM5QixHQUFHLEVBQUU7Z0JBQ2pEMEQsTUFBTSxFQUFFLE1BQU07Z0JBQ2RDLElBQUksRUFBRVg7Y0FDUixDQUFDLENBQUM7WUFBQTtjQUFBLE9BQUFHLFFBQUEsQ0FBQVMsTUFBQSxXQUFBVCxRQUFBLENBQUFVLElBQUE7WUFBQTtZQUFBO2NBQUEsT0FBQVYsUUFBQSxDQUFBVyxJQUFBO1VBQUE7UUFBQSxHQUFBaEIsT0FBQTtNQUFBLENBQ0g7TUFBQSxTQVRhbE4sV0FBV0EsQ0FBQW1PLEVBQUE7UUFBQSxPQUFBMU8sWUFBQSxDQUFBMk8sS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBWHZGLFdBQVc7SUFBQTtFQUFBO0lBQUF4TCxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMlosa0JBQUEsR0FBQXRCLDZJQUFBLGVBQUFDLDJJQUFBLENBV3pCLFNBQUFzQixTQUFBO1FBQUEsSUFBQXZaLEtBQUE7UUFBQSxJQUFBb1ksZUFBQTtRQUFBLE9BQUFILDJJQUFBLFVBQUF1QixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWhCLElBQUEsR0FBQWdCLFNBQUEsQ0FBQWYsSUFBQTtZQUFBO2NBQUEsTUFDTSxJQUFJLENBQUNyRSxRQUFRLENBQUMzSyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQ2dRLFVBQVU7Z0JBQUFELFNBQUEsQ0FBQWYsSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWUsU0FBQSxDQUFBUixNQUFBO1lBQUE7Y0FJaEQsSUFBSSxDQUFDUyxVQUFVLEdBQUcsSUFBSTtjQUVoQnRCLGVBQWUsR0FBRyxJQUFJLENBQUMvRCxRQUFRLENBQUNzRixLQUFLLENBQUMsQ0FBQyxFQUFFNUMsZ0JBQWdCLENBQUM7Y0FFaEUsSUFBSSxDQUFDMUMsUUFBUSxHQUFHLElBQUksQ0FBQ0EsUUFBUSxDQUFDc0YsS0FBSyxDQUFDNUMsZ0JBQWdCLENBQUM7Y0FBQyxPQUFBMEMsU0FBQSxDQUFBUixNQUFBLFdBRS9DLElBQUksQ0FBQ2hPLFdBQVcsQ0FBQ21OLGVBQWUsQ0FBQyxDQUFDd0IsSUFBSSxDQUFDLFVBQUFDLFFBQVEsRUFBSTtnQkFDeEQsSUFBSTdaLEtBQUksQ0FBQzhaLDZCQUE2QixDQUFDRCxRQUFRLENBQUMsRUFBRTtrQkFDaEQsSUFBSTdaLEtBQUksQ0FBQ3FVLFFBQVEsQ0FBQzNLLE1BQU0sSUFBSXNOLGtCQUFrQixFQUFFO29CQUM5Q2hYLEtBQUksQ0FBQytaLGFBQWEsRUFBRTtvQkFFcEJ2VSxVQUFVLENBQUMsWUFBTTtzQkFDZnhGLEtBQUksQ0FBQ3FVLFFBQVEsTUFBQWhSLE1BQUEsQ0FBQTJXLDhJQUFBLENBQU81QixlQUFlLEdBQUE0Qiw4SUFBQSxDQUFLaGEsS0FBSSxDQUFDcVUsUUFBUSxFQUFDO3NCQUV0RHJVLEtBQUksQ0FBQzBaLFVBQVUsR0FBRyxLQUFLO3NCQUV2QixJQUFNNUIsT0FBTyxHQUFHOVgsS0FBSSxDQUFDK1gsaUJBQWlCLENBQUMsQ0FBQztvQkFDMUMsQ0FBQyxFQUFFL1gsS0FBSSxDQUFDb1gsbUJBQW1CLENBQUM2QywyQ0FBMkMsQ0FBQ2phLEtBQUksQ0FBQytaLGFBQWEsQ0FBQyxDQUFDO29CQUU1RjtrQkFDRjtrQkFFQS9aLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDREQUE0RCxFQUFFdEosS0FBSSxDQUFDcVUsUUFBUSxDQUFDM0ssTUFBTSxFQUFFME8sZUFBZSxDQUFDMU8sTUFBTSxDQUFDO2dCQUNoSTtnQkFFQTFKLEtBQUksQ0FBQzBaLFVBQVUsR0FBRyxLQUFLO2dCQUN2QjFaLEtBQUksQ0FBQytaLGFBQWEsR0FBRyxDQUFDO2dCQUV0QixJQUFNakMsT0FBTyxHQUFHOVgsS0FBSSxDQUFDK1gsaUJBQWlCLENBQUMsQ0FBQztnQkFFeEMsT0FBTzhCLFFBQVE7Y0FDakIsQ0FBQyxDQUFDLENBQUNLLEtBQUssQ0FBQyxZQUFNO2dCQUNibGEsS0FBSSxDQUFDMFosVUFBVSxHQUFHLEtBQUs7Z0JBRXZCLElBQU01QixPQUFPLEdBQUc5WCxLQUFJLENBQUMrWCxpQkFBaUIsQ0FBQyxDQUFDO2NBQzFDLENBQUMsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBMEIsU0FBQSxDQUFBTixJQUFBO1VBQUE7UUFBQSxHQUFBSSxRQUFBO01BQUEsQ0FDSDtNQUFBLFNBekNheEIsaUJBQWlCQSxDQUFBO1FBQUEsT0FBQXVCLGtCQUFBLENBQUFELEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQWpCdUgsaUJBQWlCO0lBQUE7RUFBQTtJQUFBdFksR0FBQTtJQUFBRSxLQUFBLEVBMkMvQixTQUFRbWEsNkJBQTZCQSxDQUFBSyxJQUFBLEVBQThCO01BQUEsSUFBNUJDLE1BQU0sR0FBQUQsSUFBQSxDQUFOQyxNQUFNO01BQzNDLE9BQU8sVUFBVSxDQUFDelcsSUFBSSxDQUFDeVcsTUFBTSxDQUFDcE4sUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzQztFQUFDO0FBQUE7Ozs7Ozs7Ozs7OztBQ3JKSDtBQUNBO0FBQ0E7QUFGQSxJQUdLNUYsV0FBVywwQkFBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFBLE9BQVhBLFdBQVc7QUFBQSxFQUFYQSxXQUFXO0FBZWhCLCtEQUFlQSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEIxQjtBQUNBO0FBQ0E7QUFDMEU7QUFDaEI7QUFBQSxJQUVyQ3JELHFCQUFxQjtFQUFBLFNBQUFBLHNCQUFBO0lBQUE5RSwySUFBQSxPQUFBOEUscUJBQUE7RUFBQTtFQUFBLE9BQUF2RSx3SUFBQSxDQUFBdUUscUJBQUE7SUFBQXRFLEdBQUE7SUFBQUUsS0FBQSxFQUN4QyxTQUFPOEUseUNBQXlDQSxDQUFDaVMsY0FBOEIsRUFBc0I7TUFDbkcsUUFBUUEsY0FBYztRQUNwQixLQUFLdkMsaUVBQWMsQ0FBQ0osR0FBRztVQUNyQixPQUFPLEtBQUs7UUFDZCxLQUFLSSxpRUFBYyxDQUFDSyxTQUFTO1VBQzNCLE9BQU8sV0FBVztRQUNwQixLQUFLTCxpRUFBYyxDQUFDSCxHQUFHO1VBQ3JCLE9BQU8sS0FBSztRQUNkO1VBQ0VuRixtRUFBaUIsQ0FBQzZILGNBQWMsQ0FBQztNQUNyQztJQUNGO0VBQUM7SUFBQWpYLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU84Vyx5Q0FBeUNBLENBQUM0RCxrQkFBc0MsRUFBa0I7TUFDdkcsUUFBUUEsa0JBQWtCO1FBQ3hCLEtBQUssS0FBSztVQUNSLE9BQU9sRyxpRUFBYyxDQUFDSixHQUFHO1FBQzNCLEtBQUssV0FBVztVQUNkLE9BQU9JLGlFQUFjLENBQUNLLFNBQVM7UUFDakMsS0FBSyxLQUFLO1VBQ1IsT0FBT0wsaUVBQWMsQ0FBQ0gsR0FBRztRQUMzQjtVQUNFbkYsbUVBQWlCLENBQUN3TCxrQkFBa0IsQ0FBQztNQUN6QztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvQkg7QUFDQTtBQUNBO0FBQ3lEO0FBQ007QUFBQSxJQUUxQ3JXLGdCQUFnQjtFQUFBLFNBQUFBLGlCQUFBO0lBQUEvRSwySUFBQSxPQUFBK0UsZ0JBQUE7RUFBQTtFQUFBLE9BQUF4RSx3SUFBQSxDQUFBd0UsZ0JBQUE7SUFBQXZFLEdBQUE7SUFBQUMsR0FBQSxFQUNuQyxTQUFBQSxJQUFBLEVBQW1EO01BQ2pELE9BQU95VSx5RUFBYyxDQUFDNUosa0VBQWEsQ0FBQ1UsV0FBVyxDQUFDO0lBQ2xEO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1RIO0FBQ0E7QUFDQTtBQUM4QztBQUFBLElBRXhDc1AsT0FBTztFQVNYLFNBQUFBLFFBQVlDLFFBQVEsRUFBRTtJQUFBdmIsMklBQUEsT0FBQXNiLE9BQUE7SUFBQXJiLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQ3BCLElBQUksRUFBRSxJQUFJLFlBQVlxYixPQUFPLENBQUMsRUFBRTtNQUM5QixNQUFNLElBQUlFLFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQztJQUM3RDtJQUVBLElBQUksT0FBT0QsUUFBUSxLQUFLLFVBQVUsRUFBRTtNQUNsQyxNQUFNLElBQUlDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN2QztJQUVBLElBQUksQ0FBQ0MsTUFBTSxHQUFHLENBQUM7SUFDZixJQUFJLENBQUNDLFFBQVEsR0FBRyxLQUFLO0lBQ3JCLElBQUksQ0FBQ0MsTUFBTSxHQUFHelUsU0FBUztJQUN2QixJQUFJLENBQUMwVSxVQUFVLEdBQUcsRUFBRTtJQUVwQixJQUFJLENBQUNDLFNBQVMsQ0FBQ04sUUFBUSxDQUFDO0VBQzFCO0VBQUMsT0FBQWhiLHdJQUFBLENBQUErYSxPQUFBO0lBQUE5YSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbWIsU0FBU0EsQ0FBQ04sUUFBa0IsRUFBUTtNQUFBLElBQUF4YSxLQUFBO01BQ2xDLElBQUkrYSxJQUFJLEdBQUcsS0FBSztNQUVoQixJQUFJO1FBQ0ZQLFFBQVEsQ0FDTixVQUFBN2EsS0FBSyxFQUFJO1VBQ1AsSUFBSW9iLElBQUksRUFBRTtZQUNSO1VBQ0Y7VUFFQUEsSUFBSSxHQUFHLElBQUk7VUFDWC9hLEtBQUksQ0FBQ2diLGNBQWMsQ0FBQ3JiLEtBQUssQ0FBQztRQUM1QixDQUFDLEVBQ0QsVUFBQXNiLE1BQU0sRUFBSTtVQUNSLElBQUlGLElBQUksRUFBRTtZQUNSO1VBQ0Y7VUFFQUEsSUFBSSxHQUFHLElBQUk7VUFDWC9hLEtBQUksQ0FBQ2tiLGFBQWEsQ0FBQ0QsTUFBTSxDQUFDO1FBQzVCLENBQ0YsQ0FBQztNQUNILENBQUMsQ0FBQyxPQUFPM1IsS0FBSyxFQUFFO1FBQ2QsSUFBSXlSLElBQUksRUFBRTtVQUNSO1FBQ0Y7UUFFQUEsSUFBSSxHQUFHLElBQUk7UUFDWCxJQUFJLENBQUNHLGFBQWEsQ0FBQzVSLEtBQUssQ0FBQztNQUMzQjtJQUNGO0VBQUM7SUFBQTdKLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFxYixjQUFjQSxDQUFDRyxRQUE2QixFQUFRO01BQ2xELElBQU1DLE9BQU8sR0FBRyxJQUFlO01BRS9CLElBQUk7UUFDRjtRQUNBLElBQUlELFFBQVEsS0FBS0MsT0FBTyxFQUFFO1VBQ3hCLE1BQU0sSUFBSVgsU0FBUyxDQUFDLDRDQUE0QyxDQUFDO1FBQ25FO1FBRUEsSUFBSVUsUUFBUSxLQUFLL2EsbUlBQUEsQ0FBTythLFFBQVEsTUFBSyxRQUFRLElBQUksT0FBT0EsUUFBUSxLQUFLLFVBQVUsQ0FBQyxFQUFFO1VBQ2hGLElBQU12QixLQUFJLEdBQUd1QixRQUFRLENBQUN2QixJQUFJO1VBRTFCLElBQUl1QixRQUFRLFlBQVlaLE9BQU8sRUFBRTtZQUMvQmEsT0FBTyxDQUFDVixNQUFNLEdBQUcsQ0FBQztZQUNsQlUsT0FBTyxDQUFDUixNQUFNLEdBQUdPLFFBQVE7WUFDekJDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7WUFFaEI7VUFDRixDQUFDLE1BQU0sSUFBSSxPQUFPekIsS0FBSSxLQUFLLFVBQVUsRUFBRTtZQUNyQ3dCLE9BQU8sQ0FBQ04sU0FBUyxDQUFDLFlBQWlCO2NBQ2pDO2NBQ0FsQixLQUFJLENBQUNQLEtBQUssQ0FBQzhCLFFBQVEsRUFBRTNLLFNBQVMsQ0FBQztZQUNqQyxDQUFDLENBQUM7WUFFRjtVQUNGO1FBQ0Y7UUFFQTRLLE9BQU8sQ0FBQ1YsTUFBTSxHQUFHLENBQUM7UUFDbEJVLE9BQU8sQ0FBQ1IsTUFBTSxHQUFHTyxRQUFRO1FBQ3pCQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO01BQ2xCLENBQUMsQ0FBQyxPQUFPdlIsQ0FBQyxFQUFFO1FBQ1ZzUixPQUFPLENBQUNGLGFBQWEsQ0FBQ3BSLENBQUMsQ0FBQztNQUMxQjtJQUNGO0VBQUM7SUFBQXJLLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUF1YixhQUFhQSxDQUFDQyxRQUE2QixFQUFRO01BQ2pELElBQUksQ0FBQ1QsTUFBTSxHQUFHLENBQUM7TUFDZixJQUFJLENBQUNFLE1BQU0sR0FBR08sUUFBUTtNQUN0QixJQUFJLENBQUNFLE1BQU0sQ0FBQyxDQUFDO0lBQ2Y7RUFBQztJQUFBNWIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTBiLE1BQU1BLENBQUEsRUFBUztNQUFBLElBQUF0YSxNQUFBO01BQ2IsSUFBSSxJQUFJLENBQUMyWixNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQ0csVUFBVSxDQUFDblIsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNyRDZRLE9BQU8sQ0FBQ2UsVUFBVSxDQUFDLFlBQU07VUFDdkIsSUFBSSxDQUFDdmEsTUFBSSxDQUFDNFosUUFBUSxFQUFFO1lBQ2xCSixPQUFPLENBQUNnQixtQkFBbUIsQ0FBQ3hhLE1BQUksQ0FBQzZaLE1BQU0sQ0FBQztVQUMxQztRQUNGLENBQUMsQ0FBQztNQUNKO01BRUEsS0FBSyxJQUFJWSxDQUFDLEdBQUcsQ0FBQyxFQUFFQyxHQUFHLEdBQUcsSUFBSSxDQUFDWixVQUFVLENBQUNuUixNQUFNLEVBQUU4UixDQUFDLEdBQUdDLEdBQUcsRUFBRUQsQ0FBQyxFQUFFLEVBQUU7UUFDMUQsSUFBSSxDQUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDYixVQUFVLENBQUNXLENBQUMsQ0FBQyxDQUFDO01BQ2pDO01BRUEsSUFBSSxDQUFDWCxVQUFVLEdBQUcsSUFBSTtJQUN4QjtFQUFDO0lBQUFwYixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBK2IsTUFBTUEsQ0FBQ0MsUUFBd0IsRUFBUTtNQUNyQyxJQUFJUCxPQUFPLEdBQUcsSUFBZTtNQUU3QixPQUFPQSxPQUFPLENBQUNWLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDM0JVLE9BQU8sR0FBR0EsT0FBTyxDQUFDUixNQUFNO01BQzFCO01BRUEsSUFBSVEsT0FBTyxDQUFDVixNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3hCVSxPQUFPLENBQUNQLFVBQVUsQ0FBQ25TLElBQUksQ0FBQ2lULFFBQVEsQ0FBQztRQUVqQztNQUNGO01BRUFQLE9BQU8sQ0FBQ1QsUUFBUSxHQUFHLElBQUk7TUFDdkJKLE9BQU8sQ0FBQ2UsVUFBVSxDQUFDLFlBQU07UUFDdkIsSUFBTWQsUUFBUSxHQUFHWSxPQUFPLENBQUNWLE1BQU0sS0FBSyxDQUFDLEdBQUdpQixRQUFRLENBQUNDLFdBQVcsR0FBR0QsUUFBUSxDQUFDRSxVQUFVO1FBRWxGLElBQUlyQixRQUFRLEtBQUssSUFBSSxFQUFFO1VBQ3JCLElBQUlZLE9BQU8sQ0FBQ1YsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QmlCLFFBQVEsQ0FBQ1AsT0FBTyxDQUFDSixjQUFjLENBQUNJLE9BQU8sQ0FBQ1IsTUFBTSxDQUFDO1VBQ2pELENBQUMsTUFBTTtZQUNMZSxRQUFRLENBQUNQLE9BQU8sQ0FBQ0YsYUFBYSxDQUFDRSxPQUFPLENBQUNSLE1BQU0sQ0FBQztVQUNoRDtVQUVBO1FBQ0Y7UUFFQSxJQUFJa0IsTUFBTTtRQUVWLElBQUk7VUFDRkEsTUFBTSxHQUFHdEIsUUFBUSxDQUFDWSxPQUFPLENBQUNSLE1BQU0sQ0FBQztRQUNuQyxDQUFDLENBQUMsT0FBTzlRLENBQUMsRUFBRTtVQUNWNlIsUUFBUSxDQUFDUCxPQUFPLENBQUNGLGFBQWEsQ0FBQ3BSLENBQUMsQ0FBQztVQUVqQztRQUNGO1FBRUE2UixRQUFRLENBQUNQLE9BQU8sQ0FBQ0osY0FBYyxDQUFDYyxNQUFNLENBQUM7TUFDekMsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBcmMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT29jLEdBQUdBLENBQUNDLEdBQW1CLEVBQVc7TUFDdkMsT0FBTyxJQUFJekIsT0FBTyxDQUFDLFVBQUMwQixPQUFPLEVBQUVDLE1BQU0sRUFBSztRQUN0QyxJQUFJLENBQUMxTixLQUFLLENBQUMyTixPQUFPLENBQUNILEdBQUcsQ0FBQyxFQUFFO1VBQ3ZCLE9BQU9FLE1BQU0sQ0FBQyxJQUFJekIsU0FBUyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDOUQ7UUFFQSxJQUFNaEssSUFBSSxHQUFHakMsS0FBSyxDQUFDdkMsU0FBUyxDQUFDME4sS0FBSyxDQUFDN1ksSUFBSSxDQUFDa2IsR0FBRyxDQUFDO1FBRTVDLElBQUl2TCxJQUFJLENBQUMvRyxNQUFNLEtBQUssQ0FBQyxFQUFFO1VBQ3JCLE9BQU91UyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BCO1FBRUEsSUFBSUcsU0FBUyxHQUFHM0wsSUFBSSxDQUFDL0csTUFBTTtRQUMzQixJQUFNMlMsZUFBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJYixDQUFDLEVBQUU3YixLQUFLLEVBQVc7VUFDekMsSUFBSTtZQUNGLElBQUlBLEtBQUssS0FBS1MsbUlBQUEsQ0FBT1QsS0FBSyxNQUFLLFFBQVEsSUFBSSxPQUFPQSxLQUFLLEtBQUssVUFBVSxDQUFDLEVBQUU7Y0FDdkUsSUFBTWlhLE1BQUksR0FBR2phLEtBQUssQ0FBQ2lhLElBQUk7Y0FFdkIsSUFBSSxPQUFPQSxNQUFJLEtBQUssVUFBVSxFQUFFO2dCQUM5QkEsTUFBSSxDQUFDOVksSUFBSSxDQUNQbkIsS0FBSyxFQUNMLFVBQUFBLEtBQUs7a0JBQUEsT0FBSTBjLGVBQWMsQ0FBQ2IsQ0FBQyxFQUFFN2IsS0FBSyxDQUFDO2dCQUFBLEdBQ2pDdWMsTUFDRixDQUFDO2dCQUVEO2NBQ0Y7WUFDRjtZQUVBekwsSUFBSSxDQUFDK0ssQ0FBQyxDQUFDLEdBQUc3YixLQUFLO1lBRWYsSUFBSSxFQUFFeWMsU0FBUyxLQUFLLENBQUMsRUFBRTtjQUNyQkgsT0FBTyxDQUFDeEwsSUFBSSxDQUFDO1lBQ2Y7VUFDRixDQUFDLENBQUMsT0FBT25ILEtBQUssRUFBRTtZQUNkNFMsTUFBTSxDQUFDNVMsS0FBSyxDQUFDO1VBQ2Y7UUFDRixDQUFDO1FBRUQsS0FBSyxJQUFJa1MsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHL0ssSUFBSSxDQUFDL0csTUFBTSxFQUFFOFIsQ0FBQyxFQUFFLEVBQUU7VUFDcENhLGVBQWMsQ0FBQ2IsQ0FBQyxFQUFFL0ssSUFBSSxDQUFDK0ssQ0FBQyxDQUFDLENBQUM7UUFDNUI7TUFDRixDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUEvYixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPc2MsT0FBT0EsQ0FBQ3RjLEtBQUssRUFBVztNQUM3QixJQUFJQSxLQUFLLElBQUlTLG1JQUFBLENBQU9ULEtBQUssTUFBSyxRQUFRLElBQUlBLEtBQUssQ0FBQzJjLFdBQVcsS0FBSy9CLE9BQU8sRUFBRTtRQUN2RSxPQUFPNWEsS0FBSztNQUNkO01BRUEsT0FBTyxJQUFJNGEsT0FBTyxDQUFDLFVBQUEwQixPQUFPO1FBQUEsT0FBSUEsT0FBTyxDQUFDdGMsS0FBSyxDQUFDO01BQUEsRUFBQztJQUMvQztFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU91YyxNQUFNQSxDQUFDdmMsS0FBSyxFQUFXO01BQzVCLE9BQU8sSUFBSTRhLE9BQU8sQ0FBQyxVQUFDZ0MsQ0FBQyxFQUFFTCxNQUFNO1FBQUEsT0FBS0EsTUFBTSxDQUFDdmMsS0FBSyxDQUFDO01BQUEsRUFBQztJQUNsRDtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU82YyxJQUFJQSxDQUFDUixHQUFtQixFQUFXO01BQ3hDLE9BQU8sSUFBSXpCLE9BQU8sQ0FBQyxVQUFDMEIsT0FBTyxFQUFFQyxNQUFNLEVBQUs7UUFDdEMsSUFBSSxDQUFDMU4sS0FBSyxDQUFDMk4sT0FBTyxDQUFDSCxHQUFHLENBQUMsRUFBRTtVQUN2QixPQUFPRSxNQUFNLENBQUMsSUFBSXpCLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQy9EO1FBRUEsS0FBSyxJQUFJZSxDQUFDLEdBQUcsQ0FBQyxFQUFFQyxHQUFHLEdBQUdPLEdBQUcsQ0FBQ3RTLE1BQU0sRUFBRThSLENBQUMsR0FBR0MsR0FBRyxFQUFFRCxDQUFDLEVBQUUsRUFBRTtVQUM5Q2pCLE9BQU8sQ0FBQzBCLE9BQU8sQ0FBQ0QsR0FBRyxDQUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDNUIsSUFBSSxDQUFDcUMsT0FBTyxFQUFFQyxNQUFNLENBQUM7UUFDL0M7TUFDRixDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUF6YyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPMmIsVUFBVUEsQ0FBQ2QsUUFBa0IsRUFBUTtNQUMxQyxJQUFNMUMsT0FBTyxHQUFHdFMsVUFBVSxDQUFDZ1YsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QztFQUFDO0lBQUEvYSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPNGIsbUJBQW1CQSxDQUFDalMsS0FBSyxFQUFRO01BQ3RDLElBQUksT0FBTzJHLE9BQU8sS0FBSyxXQUFXLElBQUlBLE9BQU8sRUFBRTtRQUM3Q0EsT0FBTyxDQUFDaUIsSUFBSSxDQUFDLHVDQUF1QyxFQUFFNUgsS0FBSyxDQUFDLENBQUMsQ0FBQztNQUNoRTtJQUNGO0VBQUM7QUFBQTtBQUdIaVIsT0FBTyxDQUFDdE8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFVBQVM0UCxVQUFvQixFQUFrQjtFQUMxRSxPQUFPLElBQUksQ0FBQ2pDLElBQUksQ0FBQyxJQUFJLEVBQUVpQyxVQUFVLENBQUM7QUFDcEMsQ0FBQztBQUVEdEIsT0FBTyxDQUFDdE8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVMyUCxXQUFxQixFQUFFQyxVQUFvQixFQUFrQjtFQUNoRyxJQUFNVCxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUNrQixXQUFXLENBQUM7SUFBQSxPQUFNLElBQUk7RUFBQSxFQUFDO0VBRWhELElBQUksQ0FBQ1osTUFBTSxDQUFDLElBQUlwQix1REFBYyxDQUFDc0IsV0FBVyxFQUFFQyxVQUFVLEVBQUVULE9BQU8sQ0FBQyxDQUFDO0VBRWpFLE9BQU9BLE9BQU87QUFDaEIsQ0FBQztBQUVEYixPQUFPLENBQUN0TyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBU3VPLFFBQWtCLEVBQWtCO0VBQzFFLElBQU04QixXQUFXLEdBQUcsSUFBSSxDQUFDQSxXQUFXO0VBRXBDLE9BQU8sSUFBSSxDQUFDMUMsSUFBSSxDQUNkLFVBQUFqYSxLQUFLO0lBQUEsT0FBSTJjLFdBQVcsQ0FBQ0wsT0FBTyxDQUFDekIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDWixJQUFJLENBQUM7TUFBQSxPQUFNamEsS0FBSztJQUFBLEVBQUM7RUFBQSxHQUMxRCxVQUFBc2IsTUFBTTtJQUFBLE9BQUlxQixXQUFXLENBQUNMLE9BQU8sQ0FBQ3pCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ1osSUFBSSxDQUFDO01BQUEsT0FBTTBDLFdBQVcsQ0FBQ0osTUFBTSxDQUFDakIsTUFBTSxDQUFDO0lBQUEsRUFBQztFQUFBLENBQ2xGLENBQUM7QUFDSCxDQUFDO0FBRUQsK0RBQWVWLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdlF0QjtBQUNBO0FBQ0E7QUFGQSxJQUtxQkQsY0FBYyxnQkFBQTlhLHdJQUFBLENBS2pDLFNBQUE4YSxlQUFZc0IsV0FBVyxFQUFFQyxVQUFVLEVBQUVULE9BQU8sRUFBRTtFQUFBbmMsMklBQUEsT0FBQXFiLGNBQUE7RUFBQXBiLDJJQUFBO0VBQUFBLDJJQUFBO0VBQUFBLDJJQUFBO0VBQzVDLElBQUksQ0FBQzBjLFdBQVcsR0FBRyxPQUFPQSxXQUFXLEtBQUssVUFBVSxHQUFHQSxXQUFXLEdBQUcsSUFBSTtFQUN6RSxJQUFJLENBQUNDLFVBQVUsR0FBRyxPQUFPQSxVQUFVLEtBQUssVUFBVSxHQUFHQSxVQUFVLEdBQUcsSUFBSTtFQUN0RSxJQUFJLENBQUNULE9BQU8sR0FBR0EsT0FBTztBQUN4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZEg7QUFDQTtBQUNBO0FBQ29EO0FBRWhCO0FBQzZCO0FBR1M7QUFBQSxJQVNyRHNCLHFCQUFxQjtFQXVFeEMsU0FBQUEsc0JBQUEsRUFBc0I7SUFBQXpkLDJJQUFBLE9BQUF5ZCxxQkFBQTtJQUNwQixNQUFNLElBQUl6WCxLQUFLLENBQUMsc0VBQXNFLENBQUM7RUFDekY7RUFBQyxPQUFBekYsd0lBQUEsQ0FBQWtkLHFCQUFBO0lBQUFqZCxHQUFBO0lBQUFDLEdBQUEsRUFqRUQsU0FBQUEsSUFBQSxFQUFvRTtNQUNsRSxPQUFPZ2QscUJBQXFCLENBQUNDLHNCQUFzQjtJQUNyRDtFQUFDO0lBQUFsZCxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPaWQseUJBQXlCQSxDQUFBLEVBQVM7TUFDdkMsSUFBSTdYLHNFQUFpQixDQUFDOFgsbUJBQW1CLEVBQUU7UUFDekMsSUFBTS9FLE9BQU8sR0FBRzRFLHFCQUFxQixDQUFDSSxpQ0FBaUMsQ0FBQyxDQUFDLENBQ3RFNUMsS0FBSyxDQUFDLFVBQUFwUSxDQUFDO1VBQUEsT0FBSTRTLHFCQUFxQixDQUFDN1QsT0FBTyxDQUFDUyxLQUFLLENBQUMsMkNBQTJDLEVBQUVRLENBQUMsQ0FBQztRQUFBLEVBQUM7TUFDcEc7SUFDRjtFQUFDO0lBQUFySyxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBb2Qsa0NBQUEsR0FBQS9FLDZJQUFBLGVBQUFDLDJJQUFBLENBRUQsU0FBQUUsUUFBQTtRQUFBLE9BQUFGLDJJQUFBLFVBQUFNLFNBQUFDLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtZQUFBO2NBQUEsT0FBQUYsUUFBQSxDQUFBUyxNQUFBLFdBQ1N5RCxxQkFBcUIsQ0FBQ00sT0FBTyxHQUFHO2dCQUNyQ0MsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCQyxjQUFjLEVBQUVSLHFCQUFxQixDQUFDUyx5QkFBeUIsQ0FBQyxDQUFDLENBQzlEakQsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7a0JBQ1Y0UyxxQkFBcUIsQ0FBQ00sT0FBTyxHQUFHLElBQUk7a0JBRXBDLE1BQU1sVCxDQUFDO2dCQUNULENBQUM7Y0FDTCxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUEwTyxRQUFBLENBQUFXLElBQUE7VUFBQTtRQUFBLEdBQUFoQixPQUFBO01BQUEsQ0FDRjtNQUFBLFNBVlkyRSxpQ0FBaUNBLENBQUE7UUFBQSxPQUFBQyxrQ0FBQSxDQUFBMUQsS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBakNzTSxpQ0FBaUM7SUFBQTtFQUFBO0lBQUFyZCxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBeWQsMEJBQUEsR0FBQXBGLDZJQUFBLGVBQUFDLDJJQUFBLENBWTlDLFNBQUFvRixTQUFBO1FBQUEsSUFBQUosU0FBQTtVQUFBSyx3QkFBQTtVQUFBM2QsS0FBQTtVQUFBNGQsYUFBQTtVQUFBQyxNQUFBLEdBQUFoTixTQUFBO1FBQUEsT0FBQXlILDJJQUFBLFVBQUF3RixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWpGLElBQUEsR0FBQWlGLFNBQUEsQ0FBQWhGLElBQUE7WUFBQTtjQUF1Q3VFLFNBQXFDLEdBQUFPLE1BQUEsQ0FBQTlULE1BQUEsUUFBQThULE1BQUEsUUFBQXJYLFNBQUEsR0FBQXFYLE1BQUEsTUFBRyxVQUFVO2NBQUVGLHdCQUF3QixHQUFBRSxNQUFBLENBQUE5VCxNQUFBLFFBQUE4VCxNQUFBLFFBQUFyWCxTQUFBLEdBQUFxWCxNQUFBLE1BQUcsS0FBSztjQUFBLE1BQ3JIZCxxQkFBcUIsQ0FBQ00sT0FBTyxJQUFJTixxQkFBcUIsQ0FBQ00sT0FBTyxDQUFDQyxTQUFTLEtBQUtBLFNBQVMsSUFBSSxDQUFDSyx3QkFBd0I7Z0JBQUFJLFNBQUEsQ0FBQWhGLElBQUE7Z0JBQUE7Y0FBQTtjQUMvRy9ZLEtBQUssR0FBRytjLHFCQUFxQixDQUFDTSxPQUFPLENBQUNFLGNBQWM7Y0FFMURSLHFCQUFxQixDQUFDTSxPQUFPLEdBQUcsSUFBSTtjQUFDLE9BQUFVLFNBQUEsQ0FBQXpFLE1BQUEsV0FFOUJ0WixLQUFLO1lBQUE7Y0FHUjRkLGFBQStCLEdBQUd4WSxzRUFBaUIsQ0FBQzRZLG1DQUFtQyxHQUFHO2dCQUFDTCx3QkFBd0IsRUFBeEJBO2NBQXdCLENBQUMsR0FBR25YLFNBQVM7Y0FBQSxPQUFBdVgsU0FBQSxDQUFBekUsTUFBQSxXQUUvSHlELHFCQUFxQixDQUFDQyxzQkFBc0IsQ0FBQ2hkLEtBQUssQ0FBQ2llLG9CQUFvQixDQUFDTCxhQUFhLENBQUMsQ0FDMUYzRCxJQUFJO2dCQUFBLElBQUFPLElBQUEsR0FBQW5DLDZJQUFBLGVBQUFDLDJJQUFBLENBQUMsU0FBQXNCLFNBQU0yRCxjQUFjO2tCQUFBLElBQUFXLHNCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLE9BQUE7a0JBQUEsT0FBQS9GLDJJQUFBLFVBQUF1QixVQUFBQyxTQUFBO29CQUFBLGtCQUFBQSxTQUFBLENBQUFoQixJQUFBLEdBQUFnQixTQUFBLENBQUFmLElBQUE7c0JBQUE7d0JBQ2xCbUYsc0JBQXNCLEdBQUdYLGNBQWMsQ0FBQ1csc0JBQXNCO3dCQUFBLEtBR2hFQSxzQkFBc0I7MEJBQUFwRSxTQUFBLENBQUFmLElBQUE7MEJBQUE7d0JBQUE7d0JBQ3hCcUYsZ0JBQWdCLEdBQUdiLGNBQWMsQ0FBQ2UsY0FBYyxDQUFDLE9BQU8sRUFBRTswQkFBQ2hCLFNBQVMsRUFBVEE7d0JBQVMsQ0FBQyxDQUFDO3dCQUN0RWEsZ0JBQWdCLEdBQUdaLGNBQWMsQ0FBQ2UsY0FBYyxDQUFDLE9BQU8sRUFBRTswQkFBQ2hCLFNBQVMsRUFBVEE7d0JBQVMsQ0FBQyxDQUFDO3dCQUFDeEQsU0FBQSxDQUFBeUUsRUFBQSxHQUdyRUgsZ0JBQWdCO3dCQUFBdEUsU0FBQSxDQUFBMEUsRUFBQSxHQUNoQkwsZ0JBQWdCO3dCQUFBckUsU0FBQSxDQUFBMkUsRUFBQSxHQUNBbEIsY0FBYzt3QkFBQXpELFNBQUEsQ0FBQWYsSUFBQTt3QkFBQSxPQUNad0UsY0FBYyxDQUFDbUIsV0FBVyxDQUFDbFksU0FBUyxDQUFDO3NCQUFBO3dCQUFBc1QsU0FBQSxDQUFBNkUsRUFBQSxHQUFBN0UsU0FBQSxDQUFBUCxJQUFBO3dCQUFBLE9BQUFPLFNBQUEsQ0FBQVIsTUFBQTswQkFIdkQ4RSxnQkFBZ0IsRUFBQXRFLFNBQUEsQ0FBQXlFLEVBQUE7MEJBQ2hCSixnQkFBZ0IsRUFBQXJFLFNBQUEsQ0FBQTBFLEVBQUE7MEJBQ2hCakIsY0FBYyxFQUFBekQsU0FBQSxDQUFBMkUsRUFBQTswQkFDZEcsVUFBVSxFQUFBOUUsU0FBQSxDQUFBNkU7d0JBQUE7c0JBQUE7d0JBSVJOLE9BQU8sR0FBR2YsU0FBUyxLQUFLLFVBQVUsR0FBRzswQkFDekN1QixtQkFBbUIsRUFBRSxJQUFJOzBCQUN6QkMsbUJBQW1CLEVBQUU7d0JBQ3ZCLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQUFoRixTQUFBLENBQUFpRixFQUFBLEdBR1l4QixjQUFjO3dCQUFBekQsU0FBQSxDQUFBZixJQUFBO3dCQUFBLE9BQ1p3RSxjQUFjLENBQUNtQixXQUFXLENBQUNMLE9BQU8sQ0FBQztzQkFBQTt3QkFBQXZFLFNBQUEsQ0FBQWtGLEVBQUEsR0FBQWxGLFNBQUEsQ0FBQVAsSUFBQTt3QkFBQSxPQUFBTyxTQUFBLENBQUFSLE1BQUE7MEJBRHJEaUUsY0FBYyxFQUFBekQsU0FBQSxDQUFBaUYsRUFBQTswQkFDZEgsVUFBVSxFQUFBOUUsU0FBQSxDQUFBa0Y7d0JBQUE7c0JBQUE7c0JBQUE7d0JBQUEsT0FBQWxGLFNBQUEsQ0FBQU4sSUFBQTtvQkFBQTtrQkFBQSxHQUFBSSxRQUFBO2dCQUFBLENBRWI7Z0JBQUEsaUJBQUFILEVBQUE7a0JBQUEsT0FBQWUsSUFBQSxDQUFBZCxLQUFBLE9BQUE3SSxTQUFBO2dCQUFBO2NBQUEsSUFBQztZQUFBO1lBQUE7Y0FBQSxPQUFBa04sU0FBQSxDQUFBdkUsSUFBQTtVQUFBO1FBQUEsR0FBQWtFLFFBQUE7TUFBQSxDQUNMO01BQUEsU0F0Q1lGLHlCQUF5QkEsQ0FBQTtRQUFBLE9BQUFDLDBCQUFBLENBQUEvRCxLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUF6QjJNLHlCQUF5QjtJQUFBO0VBQUE7QUFBQTtBQUFBamUsMklBQUEsQ0EvQm5Cd2QscUJBQXFCLGFBQ05sViw2REFBYSxDQUFDRyxTQUFTLENBQUMsdUJBQXVCLENBQUM7QUFBQXpJLDJJQUFBLENBRC9Ed2QscUJBQXFCLDRCQUUwQyxJQUFJOWQsbURBQU8sQ0FBeUIsSUFBSTZkLHFFQUE0QixDQUFDLENBQUMsQ0FBQztBQUFBdmQsMklBQUEsQ0FGdEl3ZCxxQkFBcUI7QUFBQTtBQTRFMUNBLHFCQUFxQixDQUFDRSx5QkFBeUIsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlGakQ7QUFDQTtBQUNBO0FBRkEsSUFHcUJnQyx1QkFBdUI7RUEyQjFDLFNBQUFBLHdCQUFBLEVBQXNCO0lBQUEzZiwySUFBQSxPQUFBMmYsdUJBQUE7SUFDcEIsTUFBTSxJQUFJM1osS0FBSyxDQUFDLHdFQUF3RSxDQUFDO0VBQzNGO0VBQUMsT0FBQXpGLHdJQUFBLENBQUFvZix1QkFBQTtJQUFBbmYsR0FBQTtJQUFBRSxLQUFBLEVBNUJELFNBQU9rZixrQkFBa0JBLENBQUN0QixhQUErQixFQUFvQjtNQUMzRSxJQUFNdUIsVUFBMEIsR0FBRyxFQUFFO01BRXJDLEtBQUssSUFBSXRELENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRytCLGFBQWEsQ0FBQ3VCLFVBQVUsQ0FBQ3BWLE1BQU0sRUFBRThSLENBQUMsRUFBRSxFQUFFO1FBQ3hELElBQU11RCxJQUFjLEdBQUcsRUFBRTtRQUV6QixLQUFLLElBQUlqTixLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEVBQUUsRUFBRTtVQUN0QyxJQUFNdUQsR0FBRyxHQUFHa0ksYUFBYSxDQUFDdUIsVUFBVSxDQUFDdEQsQ0FBQyxDQUFDLENBQUN1RCxJQUFJLENBQUNqTixLQUFLLENBQUM7VUFFbkQsSUFBSXVELEdBQUcsRUFBRTtZQUNQMEosSUFBSSxDQUFDclcsSUFBSSxDQUFDNlUsYUFBYSxDQUFDdUIsVUFBVSxDQUFDdEQsQ0FBQyxDQUFDLENBQUN1RCxJQUFJLENBQUNqTixLQUFLLENBQUMsQ0FBQztVQUNwRDtRQUNGO1FBRUFnTixVQUFVLENBQUNwVyxJQUFJLENBQUM7VUFDZHFXLElBQUksRUFBRUEsSUFBSTtVQUNWQyxRQUFRLEVBQUV6QixhQUFhLENBQUN1QixVQUFVLENBQUN0RCxDQUFDLENBQUMsQ0FBQ3dELFFBQVE7VUFDOUNDLFVBQVUsRUFBRTFCLGFBQWEsQ0FBQ3VCLFVBQVUsQ0FBQ3RELENBQUMsQ0FBQyxDQUFDeUQ7UUFDMUMsQ0FBQyxDQUFDO01BQ0o7TUFFQTFCLGFBQWEsQ0FBQ3VCLFVBQVUsR0FBR0EsVUFBVTtNQUVyQyxPQUFPdkIsYUFBYTtJQUN0QjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVCSDtBQUNBO0FBQ0E7O0FBRW9DO0FBQzZCO0FBQzdCO0FBZ0NwQyxJQUFNNEIsc0JBQXNCLEdBQUcsSUFBSTtBQUFDLElBRWZDLG9CQUFvQjtFQVV2QyxTQUFBQSxxQkFBWWxDLGNBQStCLEVBQUVtQyxXQUF3QixFQUFFQyxzQkFBOEIsRUFBRTtJQUFBcmdCLDJJQUFBLE9BQUFtZ0Isb0JBQUE7SUFBQWxnQiwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQSx3QkFOdkMsSUFBSU4sbURBQU8sQ0FBdUIsQ0FBQyxDQUFDLENBQUM7SUFBQU0sMklBQUE7SUFBQUEsMklBQUEsNEJBRXpFLElBQUk7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFLOUIsSUFBSSxDQUFDcWdCLGVBQWUsR0FBR3JDLGNBQWM7SUFDckMsSUFBSSxDQUFDc0MsdUJBQXVCLEdBQUdGLHNCQUFzQjtJQUNyRCxJQUFJLENBQUNHLGdCQUFnQixHQUFHSixXQUFXLENBQUNLLFNBQVMsQ0FBQyxDQUFDLENBQUNDLEdBQUcsQ0FBQyxVQUFBQyxLQUFLO01BQUEsT0FBSUEsS0FBSyxDQUFDcEksSUFBSTtJQUFBLEVBQUMsSUFBSSxFQUFFO0lBRTlFLElBQUksSUFBSSxDQUFDK0gsZUFBZSxFQUFFO01BQ3hCLElBQUksQ0FBQ3hhLHNFQUFpQixDQUFDOGEsdUJBQXVCLEVBQUU7UUFDOUMsSUFBTUMsU0FBUyxHQUFHLElBQUlaLGtEQUFTLENBQUMsSUFBSSxDQUFDSyxlQUFlLENBQUNRLHdCQUF3QixDQUFDQyxHQUFHLENBQUM7UUFFbEYsSUFBSSxDQUFDQyxvQkFBb0IsR0FBR0gsU0FBUyxDQUFDSSxVQUFVO1FBQ2hELElBQUksQ0FBQ0Msb0JBQW9CLEdBQUdMLFNBQVMsQ0FBQ00sVUFBVTtNQUNsRDtNQUVBLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQUM7SUFDeEI7RUFDRjtFQUFDLE9BQUE3Z0Isd0lBQUEsQ0FBQTRmLG9CQUFBO0lBQUEzZixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWtEO01BQ2hELE9BQU8sSUFBSSxDQUFDNGdCLGFBQWE7SUFDM0I7RUFBQztJQUFBN2dCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksQ0FBQ3lnQixpQkFBaUIsR0FBRyxLQUFLO01BQzlCLElBQUksQ0FBQ2hCLGVBQWUsR0FBRyxJQUFJO01BRTNCLElBQUksSUFBSSxDQUFDaUIsY0FBYyxFQUFFO1FBQ3ZCQyxZQUFZLENBQUMsSUFBSSxDQUFDRCxjQUFjLENBQUM7UUFDakMsSUFBSSxDQUFDQSxjQUFjLEdBQUcsSUFBSTtNQUM1QjtJQUNGO0VBQUM7SUFBQS9nQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBK2dCLGdCQUFBLEdBQUExSSw2SUFBQSxlQUFBQywySUFBQSxDQUVELFNBQUFFLFFBQUE7UUFBQSxJQUFBblksS0FBQTtRQUFBLElBQUEyZ0IsUUFBQSxFQUFBQyxrQkFBQSxFQUFBOUksT0FBQTtRQUFBLE9BQUFHLDJJQUFBLFVBQUFNLFNBQUFDLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtZQUFBO2NBQUEsS0FDTTNULHNFQUFpQixDQUFDOGIsNEJBQTRCO2dCQUFBckksUUFBQSxDQUFBRSxJQUFBO2dCQUFBO2NBQUE7Y0FBQUYsUUFBQSxDQUFBRSxJQUFBO2NBQUEsT0FDMUIsSUFBSSxDQUFDb0kscUJBQXFCLENBQUMsQ0FBQztZQUFBO2NBQTVDaEosUUFBTyxHQUFBVSxRQUFBLENBQUFVLElBQUE7Y0FBQSxPQUFBVixRQUFBLENBQUFTLE1BQUE7WUFBQTtjQUtmO2NBQ00ySCxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJeFIsSUFBSTtnQkFBQSxPQUFhQSxJQUFJLENBQUMyUixFQUFFLENBQUNqZCxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxHQUFHc0wsSUFBSSxDQUFDMlIsRUFBRSxDQUFDamQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxFQUFFO2NBQUE7Y0FBQTBVLFFBQUEsQ0FBQUUsSUFBQTtjQUFBLE9BQ3JHLElBQUksQ0FBQzZHLGVBQWUsQ0FBQ3lCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDdERwSCxJQUFJLENBQUMsVUFBQXFILEtBQUssRUFBSTtnQkFDYixJQUFNQyxhQUFtQyxHQUFHLENBQUMsQ0FBQztnQkFFOUMsSUFBSUQsS0FBSyxFQUFFO2tCQUNULElBQUlFLGFBQWEsR0FBR25oQixLQUFJLENBQUN3Zix1QkFBdUI7a0JBQ2hELElBQUk0QiwyQkFBMkI7a0JBRS9CSCxLQUFLLENBQUNsVSxPQUFPLENBQUMsVUFBQXNVLE1BQU0sRUFBSTtvQkFDdEIsSUFBSUEsTUFBTSxDQUFDcmEsSUFBSSxLQUFLLGdCQUFnQixJQUFJcWEsTUFBTSxDQUFDQyxvQkFBb0IsRUFBRTtzQkFDbkVILGFBQWEsR0FBR0UsTUFBTSxDQUFDQyxvQkFBb0IsR0FBRyxJQUFJO3NCQUVsRCxJQUFJSixhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQzFCQSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUNDLGFBQWEsR0FBR0EsYUFBYTtzQkFDdEQ7c0JBRUEsSUFBSUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUMxQkEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDQyxhQUFhLEdBQUdBLGFBQWE7c0JBQ3REO29CQUNGO29CQUVBLElBQUlFLE1BQU0sQ0FBQ3JhLElBQUksS0FBSyxnQkFBZ0IsSUFBSXFhLE1BQU0sQ0FBQ0QsMkJBQTJCLEVBQUU7c0JBQzFFQSwyQkFBMkIsR0FBR0MsTUFBTSxDQUFDRCwyQkFBMkI7c0JBRWhFLElBQUlGLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDMUJBLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQ0UsMkJBQTJCLEdBQUdBLDJCQUEyQjtzQkFDbEY7c0JBRUEsSUFBSUYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUMxQkEsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDRSwyQkFBMkIsR0FBR0EsMkJBQTJCO3NCQUNsRjtvQkFDRjtvQkFFQSxJQUFJQyxNQUFNLENBQUNyYSxJQUFJLEtBQUssYUFBYSxFQUFFO3NCQUNqQyxJQUFNd1EsS0FBSSxHQUFHNkosTUFBTSxDQUFDN0osSUFBSSxJQUFJNkosTUFBTSxDQUFDRSxTQUFTLElBQUlYLGtCQUFrQixDQUFDUyxNQUFNLENBQUM7c0JBQzFFLElBQUlHLEtBQUssR0FBRyxFQUFFO3NCQUVkUCxLQUFLLENBQUNsVSxPQUFPLENBQUMsVUFBQXFDLElBQUksRUFBSTt3QkFDcEIsSUFBSUEsSUFBSSxDQUFDMlIsRUFBRSxLQUFLTSxNQUFNLENBQUNJLE9BQU8sRUFBRTswQkFDOUJELEtBQUssR0FBR3BTLElBQUksQ0FBQ3NTLFFBQVE7d0JBQ3ZCO3NCQUNGLENBQUMsQ0FBQztzQkFFRixJQUFJbEssS0FBSSxJQUFJeFgsS0FBSSxDQUFDeWYsZ0JBQWdCLENBQUMzYixRQUFRLENBQUMwVCxLQUFJLENBQUMsRUFBRTt3QkFBQSxJQUFBbUsscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7d0JBQ2hELElBQU1DLEtBQUssR0FBR1gsTUFBTSxDQUFDWSxhQUFhLElBQUksQ0FBQzt3QkFDdkMsSUFBTUMscUJBQXFCLElBQUFQLHFCQUFBLElBQUFDLHNCQUFBLEdBQUc1aEIsS0FBSSxDQUFDc2dCLGFBQWEsQ0FBQzNnQixLQUFLLGNBQUFpaUIsc0JBQUEsd0JBQUFDLHNCQUFBLEdBQXhCRCxzQkFBQSxDQUEyQnBLLEtBQUksQ0FBQyxjQUFBcUssc0JBQUEsdUJBQWhDQSxzQkFBQSxDQUFrQ0ksYUFBYSxjQUFBTixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLENBQUM7d0JBQ2xGLElBQU1RLFVBQVUsR0FBR0gsS0FBSyxHQUFHRSxxQkFBcUI7d0JBQ2hELElBQU1FLFNBQVMsR0FBR2YsTUFBTSxDQUFDM0osU0FBUyxLQUFBb0ssc0JBQUEsR0FBRzloQixLQUFJLENBQUNzZ0IsYUFBYSxDQUFDM2dCLEtBQUssY0FBQW1pQixzQkFBQSx3QkFBQUMsc0JBQUEsR0FBeEJELHNCQUFBLENBQTJCdEssS0FBSSxDQUFDLGNBQUF1SyxzQkFBQSx1QkFBaENBLHNCQUFBLENBQWtDckssU0FBUzt3QkFDaEYsSUFBTTJLLE9BQU8sR0FBR0YsVUFBVSxJQUFJQyxTQUFTLEdBQUc3VSxJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDLEdBQUcyVSxVQUFVLEdBQ2pFQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzt3QkFFdkJsQixhQUFhLENBQUMxSixLQUFJLENBQUMsR0FBRzswQkFDcEI4SyxJQUFJLEVBQUVqQixNQUFNLENBQUNpQixJQUFJOzBCQUNqQmYsU0FBUyxFQUFFL0osS0FBSTswQkFDZkUsU0FBUyxFQUFFMkosTUFBTSxDQUFDM0osU0FBUzswQkFDM0IySyxPQUFPLEVBQVBBLE9BQU87MEJBQ1BKLGFBQWEsRUFBRVosTUFBTSxDQUFDWSxhQUFhOzBCQUNuQ00sV0FBVyxFQUFFbEIsTUFBTSxDQUFDa0IsV0FBVzswQkFDL0JDLGVBQWUsRUFBRW5CLE1BQU0sQ0FBQ21CLGVBQWU7MEJBQ3ZDaEIsS0FBSyxFQUFFQSxLQUFLLElBQUl4aEIsS0FBSSxDQUFDeWlCLGNBQWMsQ0FBQ2pMLEtBQUksQ0FBQzswQkFDekMySixhQUFhLEVBQWJBO3dCQUNGLENBQUM7d0JBRUQsSUFBSUUsTUFBTSxDQUFDRCwyQkFBMkIsSUFBSUEsMkJBQTJCLEVBQUU7MEJBQ3JFRixhQUFhLENBQUMxSixLQUFJLENBQUMsQ0FBQzRKLDJCQUEyQixHQUFHQyxNQUFNLENBQUNELDJCQUEyQixJQUFJQSwyQkFBMkI7d0JBQ3JIO3dCQUVBLElBQUk1SixLQUFJLEtBQUssT0FBTyxJQUFJeFgsS0FBSSxDQUFDc2dCLGFBQWEsQ0FBQzNnQixLQUFLLElBQUlLLEtBQUksQ0FBQ3NnQixhQUFhLENBQUMzZ0IsS0FBSyxDQUFDK2lCLEtBQUssRUFBRTswQkFDbEZ4QixhQUFhLENBQUMxSixLQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRzZKLE1BQU0sQ0FBQ3NCLGFBQWE7MEJBRTNELElBQU1DLEdBQUcsR0FBRyxDQUFDdkIsTUFBTSxDQUFDc0IsYUFBYSxHQUFHM2lCLEtBQUksQ0FBQ3NnQixhQUFhLENBQUMzZ0IsS0FBSyxDQUFDK2lCLEtBQUssQ0FBQ0MsYUFBYSxLQUM3RXpCLGFBQWEsQ0FBQzFKLEtBQUksQ0FBQyxDQUFDRSxTQUFTLEdBQUcxWCxLQUFJLENBQUNzZ0IsYUFBYSxDQUFDM2dCLEtBQUssQ0FBQytpQixLQUFLLENBQUNoTCxTQUFTLENBQUMsR0FDMUUsSUFBSTswQkFFTndKLGFBQWEsQ0FBQzFKLEtBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHb0wsR0FBRyxHQUFHclYsSUFBSSxDQUFDTyxLQUFLLENBQUM4VSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7d0JBQ3BFO3NCQUNGO29CQUNGO2tCQUNGLENBQUMsQ0FBQztnQkFDSjtnQkFFQTVpQixLQUFJLENBQUNzZ0IsYUFBYSxDQUFDM2dCLEtBQUssR0FBR3VoQixhQUFhO2NBQzFDLENBQUMsQ0FBQyxDQUFDdEgsSUFBSSxDQUFDLFlBQU07Z0JBQ1osSUFBSTVaLEtBQUksQ0FBQ3VnQixpQkFBaUIsRUFBRTtrQkFDMUJ2Z0IsS0FBSSxDQUFDd2dCLGNBQWMsR0FBR3ZmLE1BQU0sQ0FBQ3VFLFVBQVUsQ0FBQztvQkFBQSxPQUFNeEYsS0FBSSxDQUFDcWdCLGVBQWUsQ0FBQyxDQUFDO2tCQUFBLEdBQUVsQixzQkFBc0IsQ0FBQztnQkFDL0Y7Y0FDRixDQUFDLENBQUM7WUFBQTtjQXRGRXJILE9BQU8sR0FBQVUsUUFBQSxDQUFBVSxJQUFBO1lBQUE7WUFBQTtjQUFBLE9BQUFWLFFBQUEsQ0FBQVcsSUFBQTtVQUFBO1FBQUEsR0FBQWhCLE9BQUE7TUFBQSxDQXVGZDtNQUFBLFNBaEdha0ksZUFBZUEsQ0FBQTtRQUFBLE9BQUFLLGdCQUFBLENBQUFySCxLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFmNlAsZUFBZTtJQUFBO0VBQUE7SUFBQTVnQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBa2pCLHNCQUFBLEdBQUE3Syw2SUFBQSxlQUFBQywySUFBQSxDQWtHN0IsU0FBQXNCLFNBQUE7UUFBQSxJQUFBeFksTUFBQTtRQUFBLElBQUErVyxPQUFBO1FBQUEsT0FBQUcsMklBQUEsVUFBQXVCLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBaEIsSUFBQSxHQUFBZ0IsU0FBQSxDQUFBZixJQUFBO1lBQUE7Y0FBQWUsU0FBQSxDQUFBZixJQUFBO2NBQUEsT0FDd0IsSUFBSSxDQUFDNkcsZUFBZSxDQUFDdUQsY0FBYyxDQUFDLENBQUMsQ0FBQ2xKLElBQUksQ0FBQyxVQUFBcUgsS0FBSyxFQUFJO2dCQUN4RSxJQUFNQyxhQUFtQyxHQUFHLENBQUMsQ0FBQztnQkFDOUMsSUFBSUMsYUFBYSxHQUFHcGdCLE1BQUksQ0FBQ3llLHVCQUF1QjtnQkFFaER5QixLQUFLLENBQUNuRixNQUFNLENBQUMsQ0FBQyxDQUFDL08sT0FBTyxDQUFDLFVBQUFzVSxNQUFNLEVBQUk7a0JBQy9CQSxNQUFNLENBQUMwQixLQUFLLENBQUMsQ0FBQyxDQUFDaFcsT0FBTyxDQUFDLFVBQUExSSxJQUFJLEVBQUk7b0JBQzdCLElBQUlBLElBQUksS0FBSyxTQUFTLEVBQUU7c0JBQ3RCOGMsYUFBYSxHQUFHRSxNQUFNLENBQUMyQixJQUFJLENBQUMzZSxJQUFJLENBQUM7b0JBQ25DO2tCQUNGLENBQUMsQ0FBQztrQkFFRixJQUFJZ2QsTUFBTSxDQUFDcmEsSUFBSSxLQUFLLE1BQU0sRUFBRTtvQkFDMUIsSUFBTXVhLFNBQVMsR0FBR0YsTUFBTSxDQUFDMkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDaFcsUUFBUSxDQUFDLENBQUM7b0JBRXJEa1UsYUFBYSxDQUFDSyxTQUFTLENBQUMsR0FBRztzQkFBQzdKLFNBQVMsRUFBRXZZLElBQUksQ0FBQ0MsR0FBRyxDQUFDO29CQUFDLENBQUM7b0JBQ2xEOGhCLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUdGLE1BQU0sQ0FBQzJCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQ2hXLFFBQVEsQ0FBQyxDQUFDO29CQUNqRWtVLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUdBLFNBQVM7b0JBQ2pETCxhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHRixNQUFNLENBQUMyQixJQUFJLENBQUMsZUFBZSxDQUFDO29CQUN4RTlCLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUdGLE1BQU0sQ0FBQzJCLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ3BFOUIsYUFBYSxDQUFDSyxTQUFTLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHRixNQUFNLENBQUMyQixJQUFJLENBQUMsaUJBQWlCLENBQUM7b0JBQzVFOUIsYUFBYSxDQUFDSyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBR0YsTUFBTSxDQUFDMkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDaFcsUUFBUSxDQUFDLENBQUMsSUFBSWpNLE1BQUksQ0FBQzBoQixjQUFjLENBQUNsQixTQUFTLENBQUM7b0JBQzdHTCxhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHSixhQUFhO29CQUV6RCxJQUFJSSxTQUFTLEtBQUssT0FBTyxJQUFJeGdCLE1BQUksQ0FBQ3VmLGFBQWEsQ0FBQzNnQixLQUFLLElBQUlvQixNQUFJLENBQUN1ZixhQUFhLENBQUMzZ0IsS0FBSyxDQUFDK2lCLEtBQUssRUFBRTtzQkFDdkZ4QixhQUFhLENBQUNLLFNBQVMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHRixNQUFNLENBQUMyQixJQUFJLENBQUMsZUFBZSxDQUFDO3NCQUN4RTlCLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQ0wsYUFBYSxDQUFDSyxTQUFTLENBQUMsQ0FBQ29CLGFBQWEsR0FBRzVoQixNQUFJLENBQUN1ZixhQUFhLENBQUMzZ0IsS0FBSyxDQUFDK2lCLEtBQUssQ0FBQ0MsYUFBYSxLQUNySHpCLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDLENBQUM3SixTQUFTLEdBQUczVyxNQUFJLENBQUN1ZixhQUFhLENBQUMzZ0IsS0FBSyxDQUFDK2lCLEtBQUssQ0FBQ2hMLFNBQVMsQ0FBQyxHQUNqRixJQUFJLElBQUksQ0FBQztvQkFDWDtrQkFDRjtnQkFDRixDQUFDLENBQUM7Z0JBQ0YzVyxNQUFJLENBQUN1ZixhQUFhLENBQUMzZ0IsS0FBSyxHQUFHdWhCLGFBQWE7Y0FDMUMsQ0FBQyxDQUFDLENBQUN0SCxJQUFJLENBQUMsWUFBTTtnQkFDWixJQUFJN1ksTUFBSSxDQUFDd2YsaUJBQWlCLEVBQUU7a0JBQzFCeGYsTUFBSSxDQUFDeWYsY0FBYyxHQUFHdmYsTUFBTSxDQUFDdUUsVUFBVSxDQUFDO29CQUFBLE9BQU16RSxNQUFJLENBQUNzZixlQUFlLENBQUMsQ0FBQztrQkFBQSxHQUFFbEIsc0JBQXNCLENBQUM7Z0JBQy9GO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FwQ0lySCxPQUFPLEdBQUEyQixTQUFBLENBQUFQLElBQUE7WUFBQTtZQUFBO2NBQUEsT0FBQU8sU0FBQSxDQUFBTixJQUFBO1VBQUE7UUFBQSxHQUFBSSxRQUFBO01BQUEsQ0FxQ2Q7TUFBQSxTQXRDYXVILHFCQUFxQkEsQ0FBQTtRQUFBLE9BQUErQixzQkFBQSxDQUFBeEosS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBckJzUSxxQkFBcUI7SUFBQTtFQUFBO0lBQUFyaEIsR0FBQTtJQUFBRSxLQUFBLEVBd0NuQyxTQUFROGlCLGNBQWNBLENBQUN6YixJQUFZLEVBQVU7TUFDM0MsUUFBUUEsSUFBSTtRQUNWLEtBQUssT0FBTztVQUNWLE9BQU8sSUFBSSxDQUFDaVosb0JBQW9CO1FBQ2xDLEtBQUssT0FBTztVQUNWLE9BQU8sSUFBSSxDQUFDRSxvQkFBb0I7UUFDbEM7VUFDRSxPQUFPLFNBQVM7TUFDcEI7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BPSDtBQUNBO0FBQ0E7QUFGQSxJQUlxQmpCLFNBQVM7RUFPNUIsU0FBQUEsVUFBWWMsR0FBVyxFQUFFO0lBQUEvZ0IsMklBQUEsT0FBQWlnQixTQUFBO0lBQUFoZ0IsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFDdkIsSUFBSSxDQUFDK2pCLElBQUksR0FBR2pELEdBQUc7SUFFZixJQUFNa0QsZUFBZSxHQUFHLElBQUksQ0FBQ0QsSUFBSSxDQUFDbmdCLEtBQUssQ0FBQyxjQUFjLENBQUM7SUFDdkQsSUFBTXFnQixnQkFBZ0IsR0FBRyxJQUFJLENBQUNGLElBQUksQ0FBQ25nQixLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFFMUQsSUFBSSxDQUFDc2dCLFdBQVcsR0FBRyxJQUFJLENBQUNDLFVBQVUsQ0FBQyxPQUFPLEVBQUVILGVBQWUsQ0FBQztJQUM1RCxJQUFJLENBQUNJLFdBQVcsR0FBRyxJQUFJLENBQUNELFVBQVUsQ0FBQyxPQUFPLEVBQUVILGVBQWUsQ0FBQztJQUM1RCxJQUFJLENBQUNLLG9CQUFvQixHQUFHLElBQUksQ0FBQ0Msb0JBQW9CLENBQUMsT0FBTyxFQUFFTCxnQkFBZ0IsQ0FBQztJQUNoRixJQUFJLENBQUNNLG9CQUFvQixHQUFHLElBQUksQ0FBQ0Qsb0JBQW9CLENBQUMsT0FBTyxFQUFFTCxnQkFBZ0IsQ0FBQztFQUNsRjtFQUFDLE9BQUEzakIsd0lBQUEsQ0FBQTBmLFNBQUE7SUFBQXpmLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBeUI7TUFDdkIsT0FBTyxJQUFJLENBQUMwakIsV0FBVztJQUN6QjtFQUFDO0lBQUEzakIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF5QjtNQUN2QixPQUFPLElBQUksQ0FBQzRqQixXQUFXO0lBQ3pCO0VBQUM7SUFBQTdqQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1DO01BQ2pDLE9BQU8sSUFBSSxDQUFDNmpCLG9CQUFvQjtJQUNsQztFQUFDO0lBQUE5akIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtQztNQUNqQyxPQUFPLElBQUksQ0FBQytqQixvQkFBb0I7SUFDbEM7RUFBQztJQUFBaGtCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVE2akIsb0JBQW9CQSxDQUFDeGMsSUFBWSxFQUFFbWMsZ0JBQTBCLEVBQVc7TUFDOUUsSUFBTU8saUJBQWlCLEdBQUdQLGdCQUFnQixDQUFDUSxJQUFJLENBQUMsVUFBQUMsUUFBUTtRQUFBLE9BQUlBLFFBQVEsQ0FBQzdaLFVBQVUsQ0FBQy9DLElBQUksQ0FBQztNQUFBLEVBQUM7TUFFdEYsSUFBSSxDQUFDMGMsaUJBQWlCLEVBQUU7UUFDdEIsT0FBTyxLQUFLO01BQ2Q7TUFFQSxPQUFPLENBQUNBLGlCQUFpQixDQUFDNWYsUUFBUSxhQUFhLENBQUM7SUFDbEQ7RUFBQztJQUFBckUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTBqQixVQUFVQSxDQUFDcmMsSUFBWSxFQUFFa2MsZUFBMEIsRUFBVTtNQUNuRSxJQUFNVyxhQUFhLEdBQUdYLGVBQWUsQ0FBQ1MsSUFBSSxDQUFDLFVBQUFHLE9BQU87UUFBQSxPQUFJQSxPQUFPLENBQUNoZ0IsUUFBUSxhQUFBVCxNQUFBLENBQWE2ZixlQUFlLENBQUNTLElBQUksQ0FBQyxVQUFBbkksQ0FBQztVQUFBLE9BQUlBLENBQUMsQ0FBQzFYLFFBQVEsTUFBQVQsTUFBQSxDQUFNMkQsSUFBSSxDQUFFLENBQUM7UUFBQSxFQUFDLENBQUNsRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztNQUFBLEVBQUM7TUFDdkosSUFBTWloQixTQUFTLEdBQUdGLGFBQWEsQ0FBQy9nQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQzdDLElBQU1raEIsU0FBUyxHQUFHRCxTQUFTLENBQUNqaEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUV6QyxPQUFPa2hCLFNBQVM7SUFDbEI7RUFBQztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2REg7QUFDQTtBQUNBO0FBQ29EO0FBR2E7QUFBQSxJQUczREMscUJBQXFCO0VBSXpCLFNBQUFBLHNCQUFZMUcsYUFBZ0MsRUFBRTtJQUFBdGUsMklBQUEsT0FBQWdsQixxQkFBQTtJQUFBL2tCLDJJQUFBLGtCQUhWc0ksNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLHVCQUF1QixDQUFDO0lBQUF6SSwySUFBQTtJQUlsRixJQUFJNkYsc0VBQWlCLENBQUNtZiw4QkFBOEIsRUFBRTtNQUNwRDtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsSUFBSSxDQUFDM0UsZUFBZSxHQUFHLElBQUk0RSx1QkFBdUIsQ0FBQzVHLGFBQWEsQ0FBQztNQUVqRTtJQUNGO0lBRUEsSUFBSSxDQUFDZ0MsZUFBZSxHQUFHLElBQUk2RSxpQkFBaUIsQ0FBQzdHLGFBQWEsQ0FBQztFQUM3RDtFQUFDLE9BQUEvZCx3SUFBQSxDQUFBeWtCLHFCQUFBO0lBQUF4a0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF1QztNQUNyQyxPQUFPLElBQUksQ0FBQzZmLGVBQWU7SUFDN0I7RUFBQztJQUFBOWYsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0RDtNQUMxRCxPQUFPLElBQUksQ0FBQzZmLGVBQWUsQ0FBQzhFLHVCQUF1QjtJQUNyRDtFQUFDO0lBQUE1a0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE2RDtNQUMzRCxPQUFPLElBQUksQ0FBQzZmLGVBQWUsQ0FBQ1Esd0JBQXdCO0lBQ3REO0VBQUM7SUFBQXRnQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDNmYsZUFBZSxDQUFDK0UsZUFBZTtJQUM3QztFQUFDO0lBQUE3a0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnRDtNQUM5QyxPQUFPLElBQUksQ0FBQzZmLGVBQWUsQ0FBQ2dGLGtCQUFrQjtJQUNoRDtFQUFDO0lBQUE5a0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUN0QyxPQUFPLE9BQU8sSUFBSSxDQUFDNmYsZUFBZSxDQUFDaUYsZ0JBQWdCLEtBQUssVUFBVTtJQUNwRTtFQUFDO0lBQUEva0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUN0QyxPQUFPLE9BQU8sSUFBSSxDQUFDNmYsZUFBZSxDQUFDa0YsZ0JBQWdCLEtBQUssVUFBVTtJQUNwRTtFQUFDO0lBQUFobEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQztNQUNwQyxPQUFPLENBQUNxRixzRUFBaUIsQ0FBQzJmLHFCQUFxQixJQUFJLE9BQU8sSUFBSSxDQUFDbkYsZUFBZSxDQUFDdEIsY0FBYyxLQUFLLFVBQVU7SUFDOUc7RUFBQztJQUFBeGUsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQWdsQixZQUFBLEdBQUEzTSw2SUFBQSxlQUFBQywySUFBQSxDQUVELFNBQUFFLFFBQWtCNkYsT0FBeUI7UUFBQSxJQUFBaGUsS0FBQTtRQUFBLE9BQUFpWSwySUFBQSxVQUFBTSxTQUFBQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7WUFBQTtjQUFBLEtBQ3JDM1Qsc0VBQWlCLENBQUM2Ziw2QkFBNkI7Z0JBQUFwTSxRQUFBLENBQUFFLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUFGLFFBQUEsQ0FBQVMsTUFBQSxXQUsxQyxJQUFJc0IsT0FBTyxDQUFDLFVBQUMwQixPQUFPLEVBQUVDLE1BQU07Z0JBQUEsT0FBS2xjLEtBQUksQ0FBQ3VmLGVBQWUsQ0FBQ2xCLFdBQVcsQ0FBQ3BDLE9BQU8sRUFBRUMsTUFBTSxFQUFFOEIsT0FBTyxDQUFDO2NBQUEsRUFBQztZQUFBO2NBQUEsT0FBQXhGLFFBQUEsQ0FBQVMsTUFBQSxXQUc5RixJQUFJLENBQUNzRyxlQUFlLENBQUNsQixXQUFXLENBQUNMLE9BQU8sQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBeEYsUUFBQSxDQUFBVyxJQUFBO1VBQUE7UUFBQSxHQUFBaEIsT0FBQTtNQUFBLENBQ2pEO01BQUEsU0FWS2tHLFdBQVdBLENBQUFqRixFQUFBO1FBQUEsT0FBQXVMLFlBQUEsQ0FBQXRMLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQVg2TixXQUFXO0lBQUE7RUFBQTtJQUFBNWUsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQWtsQixhQUFBLEdBQUE3TSw2SUFBQSxlQUFBQywySUFBQSxDQVlqQixTQUFBc0IsU0FBbUJ5RSxPQUEwQjtRQUFBLElBQUFqZCxNQUFBO1FBQUEsT0FBQWtYLDJJQUFBLFVBQUF1QixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWhCLElBQUEsR0FBQWdCLFNBQUEsQ0FBQWYsSUFBQTtZQUFBO2NBQUEsS0FDdkMzVCxzRUFBaUIsQ0FBQzZmLDZCQUE2QjtnQkFBQW5MLFNBQUEsQ0FBQWYsSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWUsU0FBQSxDQUFBUixNQUFBLFdBSzFDLElBQUlzQixPQUFPLENBQUMsVUFBQzBCLE9BQU8sRUFBRUMsTUFBTTtnQkFBQSxPQUFLbmIsTUFBSSxDQUFDd2UsZUFBZSxDQUFDdUYsWUFBWSxDQUFDN0ksT0FBTyxFQUFFQyxNQUFNLEVBQUU4QixPQUFPLENBQUM7Y0FBQSxFQUFDO1lBQUE7Y0FBQSxPQUFBdkUsU0FBQSxDQUFBUixNQUFBLFdBRy9GLElBQUksQ0FBQ3NHLGVBQWUsQ0FBQ3VGLFlBQVksQ0FBQzlHLE9BQU8sQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBdkUsU0FBQSxDQUFBTixJQUFBO1VBQUE7UUFBQSxHQUFBSSxRQUFBO01BQUEsQ0FDbEQ7TUFBQSxTQVZLdUwsWUFBWUEsQ0FBQUMsR0FBQTtRQUFBLE9BQUFGLGFBQUEsQ0FBQXhMLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQVpzVSxZQUFZO0lBQUE7RUFBQTtJQUFBcmxCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFxbEIsb0JBQUEsR0FBQWhOLDZJQUFBLGVBQUFDLDJJQUFBLENBWWxCLFNBQUFvRixTQUEwQjRILFdBQXNDO1FBQUEsT0FBQWhOLDJJQUFBLFVBQUF3RixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWpGLElBQUEsR0FBQWlGLFNBQUEsQ0FBQWhGLElBQUE7WUFBQTtjQUFBLE9BQUFnRixTQUFBLENBQUF6RSxNQUFBLFdBQ3ZELElBQUksQ0FBQ3NHLGVBQWUsQ0FBQzJGLG1CQUFtQixDQUFDbmdCLHNFQUFpQixDQUFDNmYsNkJBQTZCLEdBQzdGLElBQUlPLHFCQUFxQixDQUFDRixXQUFXLENBQUMsR0FBR0EsV0FBVyxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUF2SCxTQUFBLENBQUF2RSxJQUFBO1VBQUE7UUFBQSxHQUFBa0UsUUFBQTtNQUFBLENBQ3hEO01BQUEsU0FISzZILG1CQUFtQkEsQ0FBQUUsR0FBQTtRQUFBLE9BQUFKLG9CQUFBLENBQUEzTCxLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFuQjBVLG1CQUFtQjtJQUFBO0VBQUE7SUFBQXpsQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMGxCLHFCQUFBLEdBQUFyTiw2SUFBQSxlQUFBQywySUFBQSxDQUt6QixTQUFBcU4sU0FBMkJMLFdBQXNDO1FBQUEsSUFBQU0sZ0JBQUE7UUFBQSxJQUFBQyxTQUFBO1FBQUEsT0FBQXZOLDJJQUFBLFVBQUF3TixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWpOLElBQUEsR0FBQWlOLFNBQUEsQ0FBQWhOLElBQUE7WUFBQTtjQUN6RDhNLFNBQVMsSUFBQUQsZ0JBQUEsR0FBR04sV0FBVyxDQUFDakYsR0FBRyxjQUFBdUYsZ0JBQUEsdUJBQWZBLGdCQUFBLENBQWlCOWlCLEtBQUssQ0FBQyxZQUFZLENBQUM7Y0FFdEQsSUFBSStpQixTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDM2MsT0FBTyxDQUFDcUksSUFBSSxDQUFDLCtCQUErQixDQUFDO2NBQ3BEO2NBQUMsT0FBQXdVLFNBQUEsQ0FBQXpNLE1BQUEsV0FFTSxJQUFJLENBQUNzRyxlQUFlLENBQUNvRyxvQkFBb0IsQ0FBQzVnQixzRUFBaUIsQ0FBQzZmLDZCQUE2QixHQUM5RixJQUFJTyxxQkFBcUIsQ0FBQ0YsV0FBVyxDQUFDLEdBQUdBLFdBQVcsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBUyxTQUFBLENBQUF2TSxJQUFBO1VBQUE7UUFBQSxHQUFBbU0sUUFBQTtNQUFBLENBQ3hEO01BQUEsU0FUS0ssb0JBQW9CQSxDQUFBQyxHQUFBO1FBQUEsT0FBQVAscUJBQUEsQ0FBQWhNLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQXBCbVYsb0JBQW9CO0lBQUE7RUFBQTtJQUFBbG1CLEdBQUE7SUFBQUUsS0FBQSxFQVcxQixTQUFBa21CLFVBQVVBLENBQUEsRUFBbUI7TUFDM0IsT0FBTyxJQUFJLENBQUN0RyxlQUFlLENBQUNzRyxVQUFVLENBQUMsQ0FBQztJQUMxQztFQUFDO0lBQUFwbUIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQW1tQixZQUFZQSxDQUFBLEVBQXFCO01BQy9CLE9BQU8sSUFBSSxDQUFDdkcsZUFBZSxDQUFDdUcsWUFBWSxDQUFDLENBQUM7SUFDNUM7RUFBQztJQUFBcm1CLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFxaEIsUUFBUUEsQ0FBQytFLFFBQWtDLEVBQTJCO01BQ3BFLE9BQU8sSUFBSSxDQUFDeEcsZUFBZSxDQUFDeUIsUUFBUSxDQUFDK0UsUUFBUSxDQUFDO0lBQ2hEO0VBQUM7SUFBQXRtQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBbWpCLGNBQWNBLENBQUEsRUFBbUM7TUFBQSxJQUFBa0QsTUFBQTtNQUMvQyxPQUFPLElBQUl6TCxPQUFPLENBQUMsVUFBQTBCLE9BQU8sRUFBSTtRQUM1QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxJQUFNbkUsT0FBTyxHQUFHa08sTUFBSSxDQUFDekcsZUFBZSxDQUFDeUIsUUFBUSxDQUFDL0UsT0FBTyxDQUFDO01BQ3hELENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQXhjLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFlLGdCQUFnQkEsQ0FBQ3NHLElBQTBCLEVBQUVHLFFBQTRDLEVBQUU2VyxPQUEyQyxFQUFRO01BQzVJLElBQUksQ0FBQ3VCLGVBQWUsQ0FBQzdlLGdCQUFnQixDQUFDc0csSUFBSSxFQUFFRyxRQUFRLEVBQUU2VyxPQUFPLENBQUM7SUFDaEU7RUFBQztJQUFBdmUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQWlCLG1CQUFtQkEsQ0FBQ29HLElBQTBCLEVBQUVHLFFBQTRDLEVBQUU2VyxPQUF3QyxFQUFRO01BQzVJLElBQUksQ0FBQ3VCLGVBQWUsQ0FBQzNlLG1CQUFtQixDQUFDb0csSUFBSSxFQUFFRyxRQUFRLEVBQUU2VyxPQUFPLENBQUM7SUFDbkU7RUFBQztJQUFBdmUsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXNlLGNBQWNBLENBQUM1WixJQUFZLEVBQUUyWixPQUE4QixFQUFxQjtNQUM5RSxPQUFPLElBQUksQ0FBQ3VCLGVBQWUsQ0FBQ3RCLGNBQWMsQ0FBQzVaLElBQUksRUFBRTJaLE9BQU8sQ0FBQztJQUMzRDtFQUFDO0lBQUF2ZSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBc21CLFNBQVNBLENBQUM1RyxXQUF3QixFQUFRO01BQUEsSUFBQTZHLE1BQUE7TUFDeEM3RyxXQUFXLENBQUNLLFNBQVMsQ0FBQyxDQUFDLENBQUMzUyxPQUFPLENBQUMsVUFBQTZTLEtBQUssRUFBSTtRQUN2Q3NHLE1BQUksQ0FBQzNHLGVBQWUsQ0FBQzRHLFFBQVEsQ0FBQ3ZHLEtBQUssQ0FBQztNQUN0QyxDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUFuZ0IsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTZrQixnQkFBZ0JBLENBQUEsRUFBcUI7TUFDbkMsT0FBTyxJQUFJLENBQUNqRixlQUFlLENBQUNpRixnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hEO0VBQUM7SUFBQS9rQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBOGtCLGdCQUFnQkEsQ0FBQ2xILGFBQStCLEVBQVE7TUFDdEQsSUFBSSxDQUFDZ0MsZUFBZSxDQUFDa0YsZ0JBQWdCLENBQUNsSCxhQUFhLENBQUM7SUFDdEQ7RUFBQztJQUFBOWQsR0FBQTtJQUFBQyxHQUFBLEVBTUQsU0FBQUEsSUFBQSxFQUFnRjtNQUM5RSxPQUFPLElBQUksQ0FBQzZmLGVBQWUsQ0FBQzZHLE9BQU87SUFDckMsQ0FBQztJQUFBaFIsR0FBQSxFQU5ELFNBQUFBLElBQVlpUixPQUF5RSxFQUFFO01BQ3JGLElBQUksQ0FBQzlHLGVBQWUsQ0FBQzZHLE9BQU8sR0FBR0MsT0FBTztJQUN4QztFQUFDO0lBQUE1bUIsR0FBQTtJQUFBQyxHQUFBLEVBVUQsU0FBQUEsSUFBQSxFQUFtRztNQUNqRyxPQUFPLElBQUksQ0FBQzZmLGVBQWUsQ0FBQytHLGNBQWM7SUFDNUMsQ0FBQztJQUFBbFIsR0FBQSxFQU5ELFNBQUFBLElBQW1CaVIsT0FBcUYsRUFBRTtNQUN4RyxJQUFJLENBQUM5RyxlQUFlLENBQUMrRyxjQUFjLEdBQUdELE9BQU87SUFDL0M7RUFBQztJQUFBNW1CLEdBQUE7SUFBQUMsR0FBQSxFQVVELFNBQUFBLElBQUEsRUFBNEc7TUFDMUcsT0FBTyxJQUFJLENBQUM2ZixlQUFlLENBQUNnSCx1QkFBdUI7SUFDckQsQ0FBQztJQUFBblIsR0FBQSxFQU5ELFNBQUFBLElBQTRCaVIsT0FBcUYsRUFBRTtNQUNqSCxJQUFJLENBQUM5RyxlQUFlLENBQUNnSCx1QkFBdUIsR0FBR0YsT0FBTztJQUN4RDtFQUFDO0lBQUE1bUIsR0FBQTtJQUFBQyxHQUFBLEVBVUQsU0FBQUEsSUFBQSxFQUEyRjtNQUN6RixPQUFPLElBQUksQ0FBQzZmLGVBQWUsQ0FBQ2lILDBCQUEwQjtJQUN4RCxDQUFDO0lBQUFwUixHQUFBLEVBTkQsU0FBQUEsSUFBK0JpUixPQUFpRSxFQUFFO01BQ2hHLElBQUksQ0FBQzlHLGVBQWUsQ0FBQ2lILDBCQUEwQixHQUFHSCxPQUFPO0lBQzNEO0VBQUM7SUFBQTVtQixHQUFBO0lBQUFFLEtBQUEsRUFNRCxTQUFBOG1CLEtBQUtBLENBQUEsRUFBUztNQUNaLElBQUksQ0FBQ2xILGVBQWUsQ0FBQ2tILEtBQUssQ0FBQyxDQUFDO0lBQzlCO0VBQUM7SUFBQWhuQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBRyxPQUFPQSxDQUFBLEVBQVM7TUFDZCxJQUFJLENBQUN5ZixlQUFlLEdBQUcsSUFBSTtJQUM3QjtFQUFDO0FBQUE7QUFHSCwrREFBZTBFLHFCQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0xwQztBQUNBO0FBQ0E7O0FBSTREO0FBQUEsSUFFdER4SCw0QkFBNEI7RUFBQSxTQUFBQSw2QkFBQTtJQUFBeGQsMklBQUEsT0FBQXdkLDRCQUFBO0VBQUE7RUFBQSxPQUFBamQsd0lBQUEsQ0FBQWlkLDRCQUFBO0lBQUFoZCxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBK21CLHFCQUFBLEdBQUExTyw2SUFBQSxlQUFBQywySUFBQSxDQUNoQyxTQUFBRSxRQUEyQm9GLGFBQWdDO1FBQUEsT0FBQXRGLDJJQUFBLFVBQUFNLFNBQUFDLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtZQUFBO2NBQUEsT0FBQUYsUUFBQSxDQUFBUyxNQUFBLFdBQ2xELElBQUlnTCw4REFBcUIsQ0FBQzFHLGFBQWEsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBL0UsUUFBQSxDQUFBVyxJQUFBO1VBQUE7UUFBQSxHQUFBaEIsT0FBQTtNQUFBLENBQ2hEO01BQUEsU0FGS3lGLG9CQUFvQkEsQ0FBQXhFLEVBQUE7UUFBQSxPQUFBc04scUJBQUEsQ0FBQXJOLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQXBCb04sb0JBQW9CO0lBQUE7RUFBQTtBQUFBO0FBSzVCLCtEQUFlbkIsNEJBQTRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2QzQztBQUNBO0FBQ0E7QUFGQSxJQU9xQjVkLGVBQWU7RUFHbEMsU0FBQUEsZ0JBQVk4bkIsT0FBbUIsRUFBRTtJQUFBMW5CLDJJQUFBLE9BQUFKLGVBQUE7SUFBQUssMklBQUE7SUFDL0IsSUFBSSxDQUFDMG5CLFFBQVEsR0FBR0QsT0FBTztFQUN6QjtFQUFDLE9BQUFubkIsd0lBQUEsQ0FBQVgsZUFBQTtJQUFBWSxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQWU7TUFDYixPQUFPLElBQUksQ0FBQ2tuQixRQUFRLENBQUNqbkIsS0FBSztJQUM1QjtFQUFDO0lBQUFGLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFrbkIsU0FBU0EsQ0FBQzFmLFFBQXFCLEVBQWU7TUFDNUMsT0FBTyxJQUFJLENBQUN5ZixRQUFRLENBQUNDLFNBQVMsQ0FBQzFmLFFBQVEsQ0FBQztJQUMxQztFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCSDtBQUNBO0FBQ0E7O0FBRzRDO0FBQUEsSUFHdEMyZixrQkFBa0IsMEJBQUFDLFdBQUE7RUFDdEIsU0FBQUQsbUJBQVlFLFNBQW1CLEVBQUU3ZixRQUFXLEVBQUU7SUFBQWxJLDJJQUFBLE9BQUE2bkIsa0JBQUE7SUFBQSxPQUFBRyxVQUFBLE9BQUFILGtCQUFBLEdBQ3RDLFlBQU07TUFDVixJQUFNSSxHQUFHLEdBQUdGLFNBQVMsQ0FBQzVqQixPQUFPLENBQUMrRCxRQUFRLENBQUM7TUFFdkMsSUFBSStmLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDWkYsU0FBUyxDQUFDaFYsTUFBTSxDQUFDa1YsR0FBRyxFQUFFLENBQUMsQ0FBQztNQUMxQjtJQUNGLENBQUM7RUFDSDtFQUFDQyxxSUFBQSxDQUFBTCxrQkFBQSxFQUFBQyxXQUFBO0VBQUEsT0FBQXZuQix3SUFBQSxDQUFBc25CLGtCQUFBO0FBQUEsRUFUaUNub0Isd0RBQVU7QUFBQSxJQVl6QkMsT0FBTztFQUkxQixTQUFBQSxRQUFZZSxLQUFRLEVBQUU7SUFBQVYsMklBQUEsT0FBQUwsT0FBQTtJQUFBTSwySUFBQTtJQUFBQSwySUFBQTtJQUNwQixJQUFJLENBQUNrb0IsVUFBVSxHQUFHLEVBQUU7SUFDcEIsSUFBSSxDQUFDeE0sTUFBTSxHQUFHamIsS0FBSztFQUNyQjtFQUFDLE9BQUFILHdJQUFBLENBQUFaLE9BQUE7SUFBQWEsR0FBQTtJQUFBQyxHQUFBLEVBd0JELFNBQUFBLElBQUEsRUFBZTtNQUNiLE9BQU8sSUFBSSxDQUFDa2IsTUFBTTtJQUNwQixDQUFDO0lBQUF4RixHQUFBLEVBeEJELFNBQUFBLElBQVV6VixLQUFRLEVBQUU7TUFDbEIsSUFBSTBuQixPQUFPLEdBQUcsSUFBSSxDQUFDek0sTUFBTSxLQUFLamIsS0FBSztNQUVuQyxJQUFJMG5CLE9BQU8sSUFBSTFuQixLQUFLLEVBQUU7UUFDcEIsSUFBTTJuQixVQUFVLEdBQUczbkIsS0FBa0M7UUFFckQsSUFBSSxPQUFPMm5CLFVBQVUsQ0FBQ0MsTUFBTSxLQUFLLFVBQVUsRUFBRTtVQUMzQ0YsT0FBTyxHQUFHLENBQUNDLFVBQVUsQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQzNNLE1BQU0sQ0FBQztRQUMzQztNQUNGO01BRUEsSUFBSSxDQUFDeU0sT0FBTyxFQUFFO1FBQ1o7TUFDRjtNQUVBLElBQUksQ0FBQ3pNLE1BQU0sR0FBR2piLEtBQUs7TUFFbkIsSUFBSSxDQUFDeW5CLFVBQVUsQ0FBQ3JhLE9BQU8sQ0FBQyxVQUFBNUYsUUFBUSxFQUFJO1FBQ2xDQSxRQUFRLENBQUN4SCxLQUFLLENBQUM7TUFDakIsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUEsRUFNRCxTQUFBa25CLFNBQVNBLENBQUMxZixRQUFxQixFQUFlO01BQzVDLElBQUksQ0FBQ2lnQixVQUFVLENBQUMxZSxJQUFJLENBQUN2QixRQUFRLENBQUM7TUFFOUJBLFFBQVEsQ0FBQyxJQUFJLENBQUN5VCxNQUFNLENBQUM7TUFFckIsT0FBTyxJQUFJa00sa0JBQWtCLENBQWMsSUFBSSxDQUFDTSxVQUFVLEVBQUVqZ0IsUUFBUSxDQUFDO0lBQ3ZFO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0RIO0FBQ0E7QUFDQTtBQUZBLElBSXFCNk8sV0FBVztFQUFBLFNBQUFBLFlBQUE7SUFBQS9XLDJJQUFBLE9BQUErVyxXQUFBO0VBQUE7RUFBQSxPQUFBeFcsd0lBQUEsQ0FBQXdXLFdBQUE7SUFBQXZXLEdBQUE7SUFBQUUsS0FBQSxFQUM5QixTQUFPNlcscUJBQXFCQSxDQUFDbkIsR0FBVyxFQUFVO01BQ2hELElBQUk7UUFDRixJQUFNbVMsT0FBTyxHQUFHLElBQUk1aEIsR0FBRyxDQUFDeVAsR0FBRyxDQUFDO1FBRTVCLE9BQU9tUyxPQUFPLENBQUNDLE1BQU07TUFDdkIsQ0FBQyxDQUFDLE9BQU8zZCxDQUFDLEVBQUU7UUFDVixPQUFPLEVBQUU7TUFDWDtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2JIO0FBQ0E7QUFDQTtBQUNvRDtBQUNkO0FBQ0Y7QUFDZ0I7QUFDSTtBQUVRO0FBQ1I7QUFDTTtBQUNpQjtBQUMwQjtBQUVuQztBQUNOO0FBQ1A7QUFDSjtBQUVzQjtBQUVWO0FBQ3ZCO0FBQ0Y7QUFFWTtBQUNHO0FBQ0k7QUFFM0QsSUFBTXBDLFlBQVksR0FBR3pHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSTlCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7QUFBQyxJQWV6RW1JLEdBQUc7RUFxVXRCLFNBQUFBLElBQUEsRUFBc0I7SUFBQXRJLDJJQUFBLE9BQUFzSSxHQUFBO0lBQ3BCLE1BQU0sSUFBSXRDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQztFQUN2RTtFQUFDLE9BQUF6Rix3SUFBQSxDQUFBK0gsR0FBQTtJQUFBOUgsR0FBQTtJQUFBQyxHQUFBLEVBM1NELFNBQUFBLElBQUEsRUFBa0M7TUFDaEMsT0FBT2dJLFlBQVk7SUFDckI7RUFBQztJQUFBakksR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFtRDtNQUNqRCxPQUFPLElBQUksQ0FBQzhLLG9CQUFvQjtJQUNsQztFQUFDO0lBQUEvSyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNDO01BQ3BDLE9BQU8sSUFBSSxDQUFDZ1csUUFBUTtJQUN0QjtFQUFDO0lBQUFqVyxHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXFDO01BQ25DLE9BQU82SCxHQUFHLENBQUNvZ0IsZ0JBQWdCO0lBQzdCO0VBQUM7SUFBQWxvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1DO01BQ2pDLE9BQU82SCxHQUFHLENBQUNxZ0IsZ0JBQWdCO0lBQzdCO0VBQUM7SUFBQW5vQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1EO01BQ2pELE9BQU82SCxHQUFHLENBQUNzZ0Isb0JBQW9CO0lBQ2pDO0VBQUM7SUFBQXBvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1EO01BQ2pELE9BQU82SCxHQUFHLENBQUN1Z0IscUJBQXFCO0lBQ2xDO0VBQUM7SUFBQXJvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTRFO01BQzFFLE9BQU82SCxHQUFHLENBQUN3Z0IsOEJBQThCO0lBQzNDO0VBQUM7SUFBQXRvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU82SCxHQUFHLENBQUN5Z0IsNEJBQTRCO0lBQ3pDO0VBQUM7SUFBQXZvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJEO01BQ3pELE9BQU82SCxHQUFHLENBQUMwZ0IscUNBQXFDO0lBQ2xEO0VBQUM7SUFBQXhvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW1EO01BQ2pELE9BQU82SCxHQUFHLENBQUMyZ0IsNkJBQTZCO0lBQzFDO0VBQUM7SUFBQXpvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTBEO01BQ3hELE9BQU82SCxHQUFHLENBQUM0Z0Isb0NBQW9DO0lBQ2pEO0VBQUM7SUFBQTFvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXNEO01BQ3BELE9BQU8sSUFBSSxDQUFDMG9CLGdDQUFnQztJQUM5QztFQUFDO0lBQUEzb0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyRDtNQUN6RCxPQUFPLElBQUksQ0FBQzJvQixxQ0FBcUM7SUFDbkQ7RUFBQztJQUFBNW9CLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBc0Q7TUFDcEQsT0FBTyxJQUFJLENBQUM0b0IsZ0JBQWdCO0lBQzlCO0VBQUM7SUFBQTdvQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQW9EO01BQ2xELE9BQU8sSUFBSSxDQUFDNm9CLGtCQUFrQjtJQUNoQztFQUFDO0lBQUE5b0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFrRDtNQUNoRCxPQUFPLElBQUksQ0FBQzhvQixZQUFZO0lBQzFCO0VBQUM7SUFBQS9vQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTRDO01BQzFDLE9BQU82SCxHQUFHLENBQUNraEIsZUFBZTtJQUM1QjtFQUFDO0lBQUFocEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFvRTtNQUNsRSxPQUFPLElBQUksQ0FBQ2dwQiwyQkFBMkI7SUFDekM7RUFBQztJQUFBanBCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkM7TUFDekMsT0FBTyxJQUFJLENBQUNpcEIsYUFBYTtJQUMzQjtFQUFDO0lBQUFscEIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFvRTtNQUNsRSxPQUFPLElBQUksQ0FBQ2twQiwrQ0FBK0M7SUFDN0QsQ0FBQztJQUFBeFQsR0FBQSxFQUVELFNBQUFBLElBQTBEeVQsYUFBcUIsRUFBRTtNQUMvRSxJQUFJLENBQUNELCtDQUErQyxHQUFHQyxhQUFhO0lBQ3RFO0VBQUM7SUFBQXBwQixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTRDO01BQzFDLE9BQU91RSxvRUFBbUIsQ0FBQ1UscUNBQXFDLENBQUMsSUFBSSxDQUFDa0UsT0FBTyxDQUFDMEcsU0FBUyxDQUFDNVAsS0FBSyxDQUFDO0lBQ2hHO0VBQUM7SUFBQUYsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFnRDtNQUM5QyxPQUFPcUUsd0VBQXFCLENBQUNVLHlDQUF5QyxDQUFDOEMsR0FBRyxDQUFDdWhCLGVBQWUsQ0FBQ25wQixLQUFLLENBQUM7SUFDbkc7RUFBQztJQUFBRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU80Qiw2REFBZTtJQUN4QjtFQUFDO0lBQUE3QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPb3BCLDJCQUEyQkEsQ0FBQSxFQUFTO01BQUEsSUFBQS9vQixLQUFBO01BQ3pDLElBQU1ncEIsc0JBQXNCLEdBQUd4aEIsNkRBQWEsQ0FBQ3doQixzQkFBc0I7TUFFbkVBLHNCQUFzQixDQUFDblQsU0FBUyxHQUFHdE8sR0FBRyxDQUFDK08sZUFBZTtNQUN0RDBTLHNCQUFzQixDQUFDdGhCLFlBQVksR0FBR0gsR0FBRyxDQUFDRyxZQUFZO01BRXRELElBQU11aEIsa0JBQWtCLEdBQUcxaEIsR0FBRyxDQUFDaU8sWUFBWSxDQUFDcVIsU0FBUyxDQUFDLFVBQUFwUixXQUFXLEVBQUk7UUFDbkV1VCxzQkFBc0IsQ0FBQ3ZULFdBQVcsR0FBR0EsV0FBVztNQUNsRCxDQUFDLENBQUM7TUFDRixJQUFNeVQsbUJBQW1CLEdBQUczaEIsR0FBRyxDQUFDNGhCLFlBQVksQ0FBQ3RDLFNBQVMsQ0FBQyxVQUFBbG5CLEtBQUssRUFBSTtRQUM5RCxJQUFNeXBCLGlCQUFpQixHQUFHcHBCLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ3NILFNBQVMsQ0FBQ3hRLEtBQUssQ0FBQ2drQixJQUFJLENBQUMsVUFBQTFVLFFBQVE7VUFBQSxPQUFJQSxRQUFRLFlBQVk2RCxvRUFBaUI7UUFBQSxFQUFDO1FBRTlHLElBQUlzVyxpQkFBaUIsRUFBRTtVQUNyQkosc0JBQXNCLENBQUMzVCxHQUFHLEdBQUcxVixLQUFLO1VBRWxDSyxLQUFJLENBQUM2SSxPQUFPLENBQUNzSCxTQUFTLENBQUNqQixNQUFNLENBQUNrYSxpQkFBaUIsQ0FBQztVQUNoRHBwQixLQUFJLENBQUM2SSxPQUFPLENBQUNzSCxTQUFTLENBQUN4UCxHQUFHLENBQUMsSUFBSW1TLG9FQUFpQixDQUFDa1csc0JBQXNCLENBQUMsQ0FBQztVQUN6RWhwQixLQUFJLENBQUM2SSxPQUFPLENBQUNDLElBQUksQ0FBQywrQkFBK0IsRUFBRWtnQixzQkFBc0IsQ0FBQzNULEdBQUcsQ0FBQztRQUNoRjtNQUNGLENBQUMsQ0FBQztNQUNGLElBQU1nVSxjQUFjLEdBQUc5aEIsR0FBRyxDQUFDbU8sUUFBUSxDQUFDbVIsU0FBUyxDQUFDLFVBQUFsUixPQUFPLEVBQUk7UUFDdkQsSUFBTXlULGlCQUFpQixHQUFHcHBCLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ3NILFNBQVMsQ0FBQ3hRLEtBQUssQ0FBQ2drQixJQUFJLENBQUMsVUFBQTFVLFFBQVE7VUFBQSxPQUFJQSxRQUFRLFlBQVk2RCxvRUFBaUI7UUFBQSxFQUFDO1FBRTlHLElBQUlzVyxpQkFBaUIsSUFBSXpULE9BQU8sRUFBRTtVQUNoQ3FULHNCQUFzQixDQUFDclQsT0FBTyxHQUFHQSxPQUFPO1VBRXhDM1YsS0FBSSxDQUFDNkksT0FBTyxDQUFDc0gsU0FBUyxDQUFDakIsTUFBTSxDQUFDa2EsaUJBQWlCLENBQUM7VUFDaERwcEIsS0FBSSxDQUFDNkksT0FBTyxDQUFDc0gsU0FBUyxDQUFDeFAsR0FBRyxDQUFDLElBQUltUyxvRUFBaUIsQ0FBQ2tXLHNCQUFzQixDQUFDLENBQUM7VUFDekVocEIsS0FBSSxDQUFDNkksT0FBTyxDQUFDQyxJQUFJLENBQUMsbUNBQW1DLEVBQUVrZ0Isc0JBQXNCLENBQUNyVCxPQUFPLENBQUM7UUFDeEY7TUFDRixDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUFsVyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPMnBCLHlCQUF5QkEsQ0FBQSxFQUFTO01BQ3ZDL2hCLEdBQUcsQ0FBQ2toQixlQUFlLEdBQUd4UyxnRUFBYyxDQUFDQyxpQkFBaUIsQ0FBQ3dSLGdFQUFZLENBQUNyZCxHQUFHLENBQUMxSyxLQUFLLENBQUM7TUFDOUU0SCxHQUFHLENBQUM0UCxxQkFBcUIsR0FBRzVQLEdBQUcsQ0FBQ2toQixlQUFlLENBQUNwUyxvQkFBb0I7TUFFcEU5TyxHQUFHLENBQUM0UCxxQkFBcUIsQ0FBQ3RCLFNBQVMsR0FBR3RPLEdBQUcsQ0FBQytPLGVBQWU7TUFFekQsSUFBTTJTLGtCQUFrQixHQUFHMWhCLEdBQUcsQ0FBQ2lPLFlBQVksQ0FBQ3FSLFNBQVMsQ0FBQyxVQUFBcFIsV0FBVyxFQUFJO1FBQ25FbE8sR0FBRyxDQUFDNFAscUJBQXFCLENBQUMxQixXQUFXLEdBQUdBLFdBQVc7TUFDckQsQ0FBQyxDQUFDO01BQ0YsSUFBTXlULG1CQUFtQixHQUFHM2hCLEdBQUcsQ0FBQzRoQixZQUFZLENBQUN0QyxTQUFTLENBQUMsVUFBQWxuQixLQUFLLEVBQUk7UUFDOUQ0SCxHQUFHLENBQUM0UCxxQkFBcUIsQ0FBQzlCLEdBQUcsR0FBRzFWLEtBQUs7TUFDdkMsQ0FBQyxDQUFDO01BQ0YsSUFBTTBwQixjQUFjLEdBQUc5aEIsR0FBRyxDQUFDbU8sUUFBUSxDQUFDbVIsU0FBUyxDQUFDLFVBQUFsUixPQUFPLEVBQUk7UUFDdkRwTyxHQUFHLENBQUM0UCxxQkFBcUIsQ0FBQ3hCLE9BQU8sR0FBR0EsT0FBTztNQUM3QyxDQUFDLENBQUM7TUFDRixJQUFNaFcsS0FBSyxHQUFHLElBQUksQ0FBQ2dVLDZCQUE2QixDQUFDdlAsY0FBYyxDQUFDLHNCQUFzQixDQUFDO01BRXZGLElBQUl6RSxLQUFLLEVBQUU7UUFDVHNXLGdFQUFjLENBQUNVLGlCQUFpQixDQUFDeEMsMEVBQWMsQ0FBQ3hVLEtBQUssQ0FBQyxDQUFDO01BQ3pEO01BRUEsSUFBTTRwQixxQkFBcUIsR0FBR2hpQixHQUFHLENBQUN1aEIsZUFBZSxDQUFDakMsU0FBUyxDQUFDLFVBQUFuUSxjQUFjLEVBQUk7UUFDNUVULGdFQUFjLENBQUNVLGlCQUFpQixDQUFDRCxjQUFjLENBQUM7TUFDbEQsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBalgsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzZwQiwwREFBMERBLENBQUEsRUFBUztNQUN4RSxJQUFJLENBQUN4Qiw0QkFBNEIsR0FBRyxJQUFJLENBQUNyVSw2QkFBNkIsQ0FBQ3BQLGVBQWUsQ0FBQyx1Q0FBdUMsQ0FBQztNQUMvSCxJQUFJLENBQUNzRSxPQUFPLENBQUNDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLENBQUNrZiw0QkFBNEIsQ0FBQztNQUV0RztJQUNGO0VBQUM7SUFBQXZvQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPOHBCLG1FQUFtRUEsQ0FBQSxFQUFTO01BQ2pGLElBQUksQ0FBQ3hCLHFDQUFxQyxHQUFHLElBQUksQ0FBQ3RVLDZCQUE2QixDQUFDcFAsZUFBZSxDQUFDLGdEQUFnRCxDQUFDO01BQ2pKLElBQUksQ0FBQ3NFLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLElBQUksQ0FBQ21mLHFDQUFxQyxDQUFDO01BRXhIO0lBQ0Y7RUFBQztJQUFBeG9CLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8rcEIsOERBQThEQSxDQUFBLEVBQVM7TUFDNUUsSUFBSSxDQUFDdEIsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDelUsNkJBQTZCLENBQUNwUCxlQUFlLENBQUMsNENBQTRDLENBQUM7TUFDeEksSUFBSSxDQUFDc0UsT0FBTyxDQUFDQyxJQUFJLENBQUMscURBQXFELEVBQUUsSUFBSSxDQUFDc2YsZ0NBQWdDLENBQUM7TUFFL0c7SUFDRjtFQUFDO0lBQUEzb0IsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT2dxQixtRUFBbUVBLENBQUEsRUFBUztNQUNqRixJQUFJLENBQUN0QixxQ0FBcUMsR0FBRyxJQUFJLENBQUMxVSw2QkFBNkIsQ0FBQ3BQLGVBQWUsQ0FBQyxrREFBa0QsQ0FBQztNQUNuSixJQUFJLENBQUNzRSxPQUFPLENBQUNDLElBQUksQ0FBQyxzRUFBc0UsRUFBRSxJQUFJLENBQUN1ZixxQ0FBcUMsQ0FBQztNQUVySTtJQUNGO0VBQUM7SUFBQTVvQixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPaXFCLGtEQUFrREEsQ0FBQSxFQUFTO01BQ2hFcmlCLEdBQUcsQ0FBQ3NpQixZQUFZLENBQUNoRCxTQUFTLENBQUMsVUFBQWxuQixLQUFLLEVBQUk7UUFDbEM0SCxHQUFHLENBQUM0aEIsWUFBWSxDQUFDeHBCLEtBQUssR0FBRzRILEdBQUcsQ0FBQ2dQLGVBQWUsQ0FBQzVXLEtBQUssQ0FBQztRQUNuRDRILEdBQUcsQ0FBQ2lPLFlBQVksQ0FBQzdWLEtBQUssR0FBR3FXLHFEQUFXLENBQUNRLHFCQUFxQixDQUFDN1csS0FBSyxDQUFDO01BQ25FLENBQUMsQ0FBQztNQUVGLElBQU1tcUIsWUFBWSxHQUFHLElBQUksQ0FBQ25XLDZCQUE2QixDQUFDdlAsY0FBYyxDQUFDLHNCQUFzQixDQUFDO01BRTlGLElBQUkwbEIsWUFBWSxFQUFFO1FBQ2hCLElBQU1uZ0IsU0FBUyxHQUFHVCxnRUFBYyxDQUFDQyxVQUFVLENBQUMyZ0IsWUFBWSxDQUFDO1FBRXpEdmlCLEdBQUcsQ0FBQ21PLFFBQVEsQ0FBQy9WLEtBQUssR0FBR2dLLFNBQVMsQ0FBQ2dNLE9BQU87UUFDdEMrUixnRUFBWSxDQUFDcmQsR0FBRyxDQUFDMUssS0FBSyxHQUFHLENBQUNnSyxTQUFTLENBQUNVLEdBQUcsSUFBSTlDLEdBQUcsQ0FBQ3NpQixZQUFZLENBQUNscUIsS0FBSyxFQUFFcU4sUUFBUSxDQUFDLENBQUM7UUFFN0UsSUFBSSxDQUFDbkUsT0FBTyxDQUFDQyxJQUFJLENBQUMsd0RBQXdELEVBQUV2QixHQUFHLENBQUNzaUIsWUFBWSxDQUFDbHFCLEtBQUssQ0FBQztRQUVuRztNQUNGO01BRUEsSUFBTW9xQixRQUFRLEdBQUcsSUFBSSxDQUFDcFcsNkJBQTZCLENBQUN2UCxjQUFjLENBQUMsWUFBWSxDQUFDO01BRWhGLElBQUkybEIsUUFBUSxFQUFFO1FBQ1pyQyxnRUFBWSxDQUFDcmQsR0FBRyxDQUFDMUssS0FBSyxHQUFHb3FCLFFBQVE7UUFDakMsSUFBSSxDQUFDbGhCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHlFQUF5RSxFQUFFdkIsR0FBRyxDQUFDc2lCLFlBQVksQ0FBQ2xxQixLQUFLLENBQUM7UUFFcEg7TUFDRjtNQUVBLElBQU1xcUIsWUFBWSxHQUFHLElBQUksQ0FBQ3JXLDZCQUE2QixDQUFDdlAsY0FBYyxDQUFDLGlCQUFpQixDQUFDO01BRXpGLElBQUk0bEIsWUFBWSxFQUFFO1FBQ2hCLElBQU0zZixHQUFHLEdBQUcsSUFBSXpFLEdBQUcsQ0FBQ29rQixZQUFZLENBQUM7UUFFakMzZixHQUFHLENBQUNrTCxRQUFRLEdBQUcsa0JBQWtCO1FBQ2pDbVMsZ0VBQVksQ0FBQ3JkLEdBQUcsQ0FBQzFLLEtBQUssR0FBRzBLLEdBQUcsQ0FBQzJDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQ25FLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDhFQUE4RSxFQUFFdkIsR0FBRyxDQUFDc2lCLFlBQVksQ0FBQ2xxQixLQUFLLENBQUM7UUFFekg7TUFDRjtJQUNGO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT3NxQixJQUFJQSxDQUFDak0sT0FBc0IsRUFBUTtNQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDa00sWUFBWSxDQUFDdnFCLEtBQUssRUFBRTtRQUM1QixJQUFJLENBQUMrb0IsMkJBQTJCLEdBQUcsSUFBSTFwQix3RUFBMEIsQ0FBQyxDQUFDO01BQ3JFO01BRUEsSUFBSWdmLE9BQU8sRUFBRTtRQUNYLElBQUlBLE9BQU8sQ0FBQzZMLFlBQVksRUFBRTtVQUN4Qm5DLGdFQUFZLENBQUNyZCxHQUFHLENBQUMxSyxLQUFLLEdBQUdxZSxPQUFPLENBQUM2TCxZQUFZO1FBQy9DO1FBRUEsSUFBSTdMLE9BQU8sQ0FBQ21NLHFCQUFxQixFQUFFO1VBQ2pDek4sbUVBQXFCLENBQUN5TixxQkFBcUIsQ0FBQ3hxQixLQUFLLEdBQUdxZSxPQUFPLENBQUNtTSxxQkFBcUI7UUFDbkY7UUFFQSxJQUFJbk0sT0FBTyxDQUFDdEgsY0FBYyxJQUFJdkMsMEVBQWMsQ0FBQzZKLE9BQU8sQ0FBQ3RILGNBQWMsQ0FBQyxFQUFFO1VBQ3BFblAsR0FBRyxDQUFDdWhCLGVBQWUsQ0FBQ25wQixLQUFLLEdBQUdvRSx3RUFBcUIsQ0FBQzBTLHlDQUF5QyxDQUFDdUgsT0FBTyxDQUFDdEgsY0FBYyxDQUFDO1FBQ3JIO1FBRUEsSUFBSXNILE9BQU8sQ0FBQ2xLLFlBQVksSUFBSXpFLHdEQUFZLENBQUMyTyxPQUFPLENBQUNsSyxZQUFZLENBQUMsRUFBRTtVQUM5RCxJQUFJLENBQUNqTCxPQUFPLENBQUMwRyxTQUFTLENBQUNxRSxZQUFZLENBQUMzUCxvRUFBbUIsQ0FBQ2dRLHFDQUFxQyxDQUFDK0osT0FBTyxDQUFDbEssWUFBWSxDQUFDLENBQUM7UUFDdEg7UUFFQSxJQUFJa0ssT0FBTyxDQUFDb00sbUJBQW1CLElBQzdCL2Esd0RBQVksQ0FBQzJPLE9BQU8sQ0FBQ29NLG1CQUFtQixDQUFDLEVBQUU7VUFDM0MsSUFBTUMsZUFBZSxHQUFHLElBQUksQ0FBQ3hoQixPQUFPLENBQUNzSCxTQUFTLENBQUN4USxLQUFLLENBQUNna0IsSUFBSSxDQUFDLFVBQUExVSxRQUFRO1lBQUEsT0FBSUEsUUFBUSxZQUFZSywrREFBZTtVQUFBLEVBQUM7VUFFMUcsSUFBSSthLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUN4aEIsT0FBTyxDQUFDc0gsU0FBUyxDQUFDakIsTUFBTSxDQUFDbWIsZUFBZSxDQUFDO1VBQ2hEO1VBRUEsSUFBSXJNLE9BQU8sQ0FBQ29NLG1CQUFtQixLQUFLLEtBQUssRUFBRTtZQUN6QyxJQUFJLENBQUN2aEIsT0FBTyxDQUFDc0gsU0FBUyxDQUFDeFAsR0FBRyxDQUFDLElBQUkyTywrREFBZSxDQUFDckwsb0VBQW1CLENBQUNnUSxxQ0FBcUMsQ0FBQytKLE9BQU8sQ0FBQ29NLG1CQUFtQixDQUFDLENBQUMsQ0FBQztVQUN6STtRQUNGO1FBRUEsSUFBSSxPQUFPcE0sT0FBTyxDQUFDc00sNEJBQTRCLEtBQUssU0FBUyxFQUFFO1VBQzdELElBQUksQ0FBQ3BDLDZCQUE2QixHQUFHbEssT0FBTyxDQUFDc00sNEJBQTRCO1FBQzNFO1FBRUEsSUFBSSxPQUFPdE0sT0FBTyxDQUFDdU0sbUNBQW1DLEtBQUssU0FBUyxFQUFFO1VBQ3BFLElBQUksQ0FBQ3BDLG9DQUFvQyxHQUFHbkssT0FBTyxDQUFDdU0sbUNBQW1DO1FBQ3pGO1FBRUEsSUFBSXZNLE9BQU8sQ0FBQ3dNLGVBQWUsRUFBRTtVQUMzQixJQUFJLENBQUNsQyxnQkFBZ0IsR0FBR3RLLE9BQU8sQ0FBQ3dNLGVBQWU7UUFDakQ7UUFFQSxJQUFJeE0sT0FBTyxDQUFDeU0saUJBQWlCLEVBQUU7VUFDN0IsSUFBSSxDQUFDbEMsa0JBQWtCLEdBQUd2SyxPQUFPLENBQUN5TSxpQkFBaUI7UUFDckQ7UUFFQSxJQUFJek0sT0FBTyxDQUFDME0sV0FBVyxFQUFFO1VBQ3ZCLElBQUksQ0FBQ2xDLFlBQVksR0FBR3hLLE9BQU8sQ0FBQzBNLFdBQVc7UUFDekM7TUFDRjtNQUVBbmpCLEdBQUcsQ0FBQzJpQixZQUFZLENBQUN2cUIsS0FBSyxHQUFHLElBQUk7SUFDL0I7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPRyxPQUFPQSxDQUFBLEVBQVM7TUFDckJ5SCxHQUFHLENBQUMyaUIsWUFBWSxDQUFDdnFCLEtBQUssR0FBRyxLQUFLO01BQzlCLElBQUksQ0FBQytvQiwyQkFBMkIsQ0FBQzVvQixPQUFPLENBQUMsQ0FBQztNQUMxQyxJQUFJLENBQUM0b0IsMkJBQTJCLEdBQUcsSUFBSTtJQUN6QztFQUFDO0lBQUFqcEIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzRXLGVBQWVBLENBQUNsQixHQUFXLEVBQVU7TUFDMUMsT0FBT1Usc0RBQVksQ0FBQ1EsZUFBZSxDQUFDbEIsR0FBRyxDQUFDO0lBQzFDO0VBQUM7QUFBQTtBQUFBc1YsSUFBQSxHQW5Va0JwakIsR0FBRztBQUFBckksMklBQUEsQ0FBSHFJLEdBQUcsa0NBQ3dCLElBQUk7QUFBQXJJLDJJQUFBLENBRC9CcUksR0FBRywyQ0FFaUMsSUFBSTtBQUFBckksMklBQUEsQ0FGeENxSSxHQUFHLG1DQUd5QixJQUFJO0FBQUFySSwySUFBQSxDQUhoQ3FJLEdBQUcsMENBSWdDLElBQUk7QUFBQXJJLDJJQUFBLENBSnZDcUksR0FBRyxzQ0FLNEIsSUFBSTtBQUFBckksMklBQUEsQ0FMbkNxSSxHQUFHLDJDQU1pQyxJQUFJO0FBQUFySSwySUFBQSxDQU54Q3FJLEdBQUcsc0JBT1ksSUFBSTtBQUFBckksMklBQUEsQ0FQbkJxSSxHQUFHLHdCQVFjLElBQUk7QUFBQXJJLDJJQUFBLENBUnJCcUksR0FBRyxrQkFTUSxJQUFJO0FBQUFySSwySUFBQSxDQVRmcUksR0FBRyxtQ0FVd0QsSUFBSXlMLDBFQUE0QixDQUFDLENBQUM7QUFBQTlULDJJQUFBLENBVjdGcUksR0FBRztBQUFBckksMklBQUEsQ0FBSHFJLEdBQUcsa0JBWXlCLElBQUkzSSxtREFBTyxDQUFTLEVBQUUsQ0FBQztBQUFBTSwySUFBQSxDQVpuRHFJLEdBQUcsbUJBYTBCLElBQUkzSSxtREFBTyxDQUFTLDJDQUEyQyxDQUFDO0FBQUFNLDJJQUFBLENBYjdGcUksR0FBRyxxREFjMkMsQ0FBQztBQUFBckksMklBQUEsQ0FkL0NxSSxHQUFHLHFCQWVvQyxJQUFJM0ksbURBQU8sQ0FBaUJvRixrRUFBZ0IsQ0FBQ1UscUJBQXFCLENBQUM7QUFBQXhGLDJJQUFBLENBZjFHcUksR0FBRztBQUFBckksMklBQUEsQ0FBSHFJLEdBQUc7QUFBQXJJLDJJQUFBLENBQUhxSSxHQUFHLDBCQWtCMkMsSUFBSTNJLG1EQUFPLENBQUMyTCxtRUFBYSxDQUFDUSxtQkFBbUIsQ0FBQztBQUFBN0wsMklBQUEsQ0FsQjVGcUksR0FBRyxjQW1COEIsSUFBSTNJLG1EQUFPLENBQVMsRUFBRSxDQUFDO0FBQUFNLDJJQUFBLENBbkJ4RHFJLEdBQUcsc0JBb0I2QjRHLHFEQUFPLENBQUNDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFBQWxQLDJJQUFBLENBcEJsRHFJLEdBQUcsc0JBcUIyQixJQUFJcEksSUFBSSxDQUFDLENBQUM7QUFBQUQsMklBQUEsQ0FyQnhDcUksR0FBRyxhQXNCcUJDLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFBQXpJLDJJQUFBLENBdEJ0RHFJLEdBQUcsa0JBdUJtQyxJQUFJM0ksbURBQU8sQ0FBVSxLQUFLLENBQUM7QUFBQU0sMklBQUEsQ0F2QmpFcUksR0FBRywwQkF3Qm1ELElBQUkxSSwyREFBZSxDQUFVMEksSUFBRyxDQUFDMmlCLFlBQVksQ0FBQztBQUFBaHJCLDJJQUFBLENBeEJwR3FJLEdBQUcsMkJBeUJtRCxJQUFJMUksMkRBQWUsQ0FBUzZvQixnRUFBWSxDQUFDcmQsR0FBRyxDQUFDO0FBQUFuTCwySUFBQSxDQXpCbkdxSSxHQUFHLG9DQTBCNEUsSUFBSTFJLDJEQUFlLENBQXlCNmQsbUVBQXFCLENBQUN5TixxQkFBcUIsQ0FBQztBQTFCcEs7QUEwVXhCbHBCLE1BQU0sQ0FBQ1AsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFlBQU07RUFDdEM2RyxHQUFHLENBQUN6SCxPQUFPLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGeUgsR0FBRyxDQUFDcWlCLGtEQUFrRCxDQUFDLENBQUM7QUFDeERyaUIsR0FBRyxDQUFDK2hCLHlCQUF5QixDQUFDLENBQUM7QUFDL0IvaEIsR0FBRyxDQUFDd2hCLDJCQUEyQixDQUFDLENBQUM7QUFDakN4aEIsR0FBRyxDQUFDaWlCLDBEQUEwRCxDQUFDLENBQUM7QUFDaEVqaUIsR0FBRyxDQUFDa2lCLG1FQUFtRSxDQUFDLENBQUM7QUFDekVsaUIsR0FBRyxDQUFDbWlCLDhEQUE4RCxDQUFDLENBQUM7QUFDcEVuaUIsR0FBRyxDQUFDb2lCLG1FQUFtRSxDQUFDLENBQUM7QUFDekVwaUIsR0FBRyxDQUFDMGlCLElBQUksQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xZVjtBQUNBO0FBQ0E7QUFGQSxJQUlxQmxVLFlBQVk7RUFBQSxTQUFBQSxhQUFBO0lBQUE5VywySUFBQSxPQUFBOFcsWUFBQTtFQUFBO0VBQUEsT0FBQXZXLHdJQUFBLENBQUF1VyxZQUFBO0lBQUF0VyxHQUFBO0lBQUFFLEtBQUEsRUFDL0IsU0FBTzRXLGVBQWVBLENBQUNsQixHQUFXLEVBQVU7TUFDMUMsSUFBSTtRQUNGLElBQU1tUyxPQUFPLEdBQUcsSUFBSTVoQixHQUFHLENBQUN5UCxHQUFHLENBQUM7UUFDNUIsSUFBTXVWLFFBQVEsR0FBR3BELE9BQU8sQ0FBQ3RRLFFBQVEsQ0FBQ3BVLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFNUMsUUFBUTBrQixPQUFPLENBQUNxRCxRQUFRO1VBQ3RCLEtBQUssS0FBSztZQUNSckQsT0FBTyxDQUFDcUQsUUFBUSxHQUFHLE9BQU87WUFFMUI7VUFDRixLQUFLLE1BQU07WUFDVHJELE9BQU8sQ0FBQ3FELFFBQVEsR0FBRyxRQUFRO1lBRTNCO1VBRUY7WUFDRTtRQUNKO1FBRUEsSUFBSUQsUUFBUSxDQUFDbGhCLE1BQU0sS0FBSyxDQUFDLElBQ3BCa2hCLFFBQVEsQ0FBQ2xoQixNQUFNLEtBQUssQ0FBQyxJQUFJa2hCLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDbGhCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSWtoQixRQUFRLENBQUNBLFFBQVEsQ0FBQ2xoQixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUNBLE1BQU0sSUFBSSxDQUFFLEVBQ25IO1VBQ0FraEIsUUFBUSxDQUFDRSxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQy9CLENBQUMsTUFBTSxJQUFJRixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM3Z0IsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJNmdCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJSCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM5bUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJOG1CLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7VUFDbklBLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlO1FBQy9CLENBQUMsTUFBTSxJQUFJQSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM3Z0IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJNmdCLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1VBQzVFO1FBQUEsQ0FDRCxNQUFNO1VBQ0xILFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXO1FBQzNCO1FBRUFwRCxPQUFPLENBQUN0USxRQUFRLEdBQUcwVCxRQUFRLENBQUNJLElBQUksQ0FBQyxHQUFHLENBQUM7UUFFckMsVUFBQTNuQixNQUFBLENBQVVta0IsT0FBTyxDQUFDQyxNQUFNO01BQzFCLENBQUMsQ0FBQyxPQUFPM2QsQ0FBQyxFQUFFO1FBQ1YsT0FBT3VMLEdBQUc7TUFDWjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztBQzFDSDtBQUNBO0FBQ0E7O0FBS08sSUFBSzRWLFlBQVksMEJBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFBLE9BQVpBLFlBQVk7QUFBQTtBQUtqQixJQUFLQyxXQUFXLDBCQUFYQSxXQUFXO0VBQVhBLFdBQVcsQ0FBWEEsV0FBVztFQUFYQSxXQUFXLENBQVhBLFdBQVc7RUFBWEEsV0FBVyxDQUFYQSxXQUFXO0VBQUEsT0FBWEEsV0FBVztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWnZCO0FBQ0E7QUFDQTtBQUN1RDtBQUVBO0FBQ1Q7QUFDaUI7QUFFdEM7QUFDK0M7QUFFOUI7QUFDbUI7QUFDZDtBQUVTO0FBQ0k7QUFFZ0I7QUFDakI7QUFHUjtBQUM2QjtBQUNVO0FBQ1M7QUFDSztBQUNuQztBQUNsQjtBQUNJO0FBQ1I7QUFDTTtBQUNLO0FBRVU7QUFFcEUsSUFBTWMsOEJBQThCLEdBQUcsb0JBQW9CO0FBQzNELElBQU1DLHlDQUF5QyxHQUFHLElBQUk7QUFDdEQsSUFBTUMsb0NBQW9DLEdBQUcsS0FBSztBQUFDLElBVTlCQyxPQUFPO0VBb0MxQixTQUFBQSxRQUFZQyxZQUE4QixFQUFFaGpCLEtBQXVCLEVBQUU0VSxPQUF3QixFQUFFO0lBQUEsSUFBQWhlLEtBQUE7SUFBQWYsMklBQUEsT0FBQWt0QixPQUFBO0lBQUFqdEIsMklBQUEsa0JBbkMzRHNJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFBQXpJLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBQUFBLDJJQUFBO0lBb0NwRSxJQUFNeUssU0FBUyxHQUFHVCxpRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQztJQUNsRCxJQUFNaWpCLHFCQUE0QyxHQUFHO01BQUNDLFNBQVMsRUFBRXRPLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFc087SUFBUyxDQUFDO0lBQ3BGLElBQU1DLDZCQUE0RCxHQUFHO01BQ25FQyxvQkFBb0IsRUFBRTdpQixTQUFTLENBQUNXLFlBQVksQ0FBQ3hHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztNQUMzRTJvQiwyQkFBMkIsRUFBRTlpQixTQUFTLENBQUNXLFlBQVksQ0FBQ3hHLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQztNQUMxRjRvQiw0QkFBNEIsRUFBRTFPLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFME8sNEJBQTRCO01BQ25FQyw0QkFBNEIsRUFBRTNPLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFMk8sNEJBQTRCO01BQ25FQyxzQkFBc0IsRUFBRTVPLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFNE8sc0JBQXNCO01BQ3ZEQyxzQkFBc0IsRUFBRTdPLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFNk87SUFDbkMsQ0FBQztJQUVELElBQUksQ0FBQ0MsYUFBYSxHQUFHLElBQUl2Qiw4REFBWSxDQUFDbmlCLEtBQUssQ0FBQztJQUM1QyxJQUFJLENBQUMyakIsZUFBZSxHQUFHLElBQUl2QixnRUFBYyxDQUFDYSxxQkFBcUIsQ0FBQztJQUNoRSxJQUFJLENBQUNXLHNCQUFzQixHQUFHLElBQUlwQix1RUFBcUIsQ0FBQyxDQUFDO0lBQ3pELElBQUksQ0FBQ3FCLHVCQUF1QixHQUFHLElBQUl0Qix3RUFBc0IsQ0FBQ1ksNkJBQTZCLENBQUM7SUFDeEYsSUFBSSxDQUFDVyxhQUFhLEdBQUcsSUFBSXJCLDhEQUFZLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUN6VSxtQkFBbUIsR0FBRyxJQUFJUCxnRUFBa0IsQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQ3NXLGlCQUFpQixHQUFHaHVCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDZ3VCLHFCQUFxQixHQUFHLElBQUl2dUIsMkRBQWUsQ0FBbUIsSUFBSSxDQUFDa3VCLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDO0lBQ3JHLElBQUksQ0FBQ2lCLGNBQWMsR0FBRyxJQUFJeHVCLDJEQUFlLENBQVMsSUFBSSxDQUFDaXVCLGFBQWEsQ0FBQzFqQixLQUFLLENBQUM7SUFDM0UsSUFBSSxDQUFDa2tCLHVCQUF1QixHQUFHLElBQUl6dUIsMkRBQWUsQ0FBa0IsSUFBSSxDQUFDbXVCLHNCQUFzQixDQUFDOVAsY0FBYyxDQUFDO0lBQy9HLElBQUksQ0FBQ3FRLGNBQWMsR0FBRyxJQUFJMXVCLDJEQUFlLENBQWUsSUFBSSxDQUFDa3VCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDO0lBQ25GLElBQUksQ0FBQ0Msa0JBQWtCLEdBQUcsSUFBSTV1QiwyREFBZSxDQUFVLElBQUksQ0FBQ2t1QixlQUFlLENBQUNXLFNBQVMsQ0FBQztJQUN0RixJQUFJLENBQUNDLG1CQUFtQixHQUFHLElBQUk5dUIsMkRBQWUsQ0FBVSxJQUFJLENBQUNrdUIsZUFBZSxDQUFDYSxVQUFVLENBQUM7SUFDeEYsSUFBSSxDQUFDQyxzQkFBc0IsR0FBRyxJQUFJaHZCLDJEQUFlLENBQVUsSUFBSSxDQUFDaXVCLGFBQWEsQ0FBQ2dCLGFBQWEsQ0FBQztJQUM1RixJQUFJLENBQUNDLG1CQUFtQixHQUFHLElBQUlsdkIsMkRBQWUsQ0FBVSxJQUFJLENBQUNrdUIsZUFBZSxDQUFDaUIsVUFBVSxDQUFDO0lBQ3hGLElBQUksQ0FBQ0MsZUFBZSxHQUFHLElBQUlwdkIsMkRBQWUsQ0FBVSxJQUFJLENBQUNrdUIsZUFBZSxDQUFDbUIsTUFBTSxDQUFDO0lBQ2hGLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUcsSUFBSXR2QiwyREFBZSxDQUFVLElBQUksQ0FBQ2t1QixlQUFlLENBQUNxQixPQUFPLENBQUM7SUFDbEYsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxJQUFJeHZCLDJEQUFlLENBQVUsSUFBSSxDQUFDa3VCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQztJQUNsRixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUkxdkIsMkRBQWUsQ0FBVSxJQUFJLENBQUNrdUIsZUFBZSxDQUFDeUIsT0FBTyxDQUFDO0lBQ2xGLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUcsSUFBSTV2QiwyREFBZSxDQUFVLElBQUksQ0FBQ2t1QixlQUFlLENBQUMyQixPQUFPLENBQUM7SUFDbEYsSUFBSSxDQUFDQyxrQkFBa0IsR0FBRyxJQUFJOXZCLDJEQUFlLENBQVMsSUFBSSxDQUFDa3VCLGVBQWUsQ0FBQ1QsU0FBUyxDQUFDO0lBQ3JGLElBQUksQ0FBQ3NDLFlBQVksR0FBRyxJQUFJL3ZCLDJEQUFlLENBQVMsSUFBSSxDQUFDa3VCLGVBQWUsQ0FBQzhCLEdBQUcsQ0FBQztJQUN6RSxJQUFJLENBQUNDLHFCQUFxQixHQUFHLElBQUlqd0IsMkRBQWUsQ0FBUyxJQUFJLENBQUNrdUIsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDO0lBQzNGLElBQUksQ0FBQ0MsbUJBQW1CLEdBQUcsSUFBSW53QiwyREFBZSxDQUFZLElBQUksQ0FBQ2t1QixlQUFlLENBQUNrQyxVQUFVLENBQUM7SUFDMUYsSUFBSSxDQUFDQyxxQkFBcUIsR0FBRyxJQUFJcndCLDJEQUFlLENBQVMsSUFBSSxDQUFDa3VCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQztJQUMzRixJQUFJLENBQUNDLGlCQUFpQixHQUFHLElBQUl2d0IsMkRBQWUsQ0FBVyxJQUFJLENBQUNrdUIsZUFBZSxDQUFDc0MsUUFBUSxDQUFDO0lBQ3JGLElBQUksQ0FBQ0MsZUFBZSxHQUFHLElBQUl6d0IsMkRBQWUsQ0FBVSxJQUFJLENBQUNrdUIsZUFBZSxDQUFDd0MsTUFBTSxDQUFDO0lBQ2hGLElBQUksQ0FBQ0Msc0JBQXNCLEdBQUcsSUFBSTN3QiwyREFBZSxDQUF1QixJQUFJLENBQUNrdUIsZUFBZSxDQUFDN0wsYUFBYSxDQUFDO0lBQzNHLElBQUksQ0FBQ3VPLG9CQUFvQixHQUFHLElBQUk1d0IsMkRBQWUsQ0FBYyxJQUFJLENBQUNtdUIsc0JBQXNCLENBQUMzTixXQUFXLENBQUM7SUFFckcsSUFBTXdLLFlBQVksR0FBRyxDQUFDbGdCLFNBQVMsQ0FBQ1UsR0FBRyxJQUFJOUMsNENBQUcsQ0FBQ3NpQixZQUFZLENBQUNscUIsS0FBSyxFQUFFcU4sUUFBUSxDQUFDLENBQUM7SUFFekV6Riw0Q0FBRyxDQUFDb08sT0FBTyxDQUFDaFcsS0FBSyxHQUFHZ0ssU0FBUyxDQUFDZ00sT0FBTyxJQUFJcE8sNENBQUcsQ0FBQ29PLE9BQU8sQ0FBQ2hXLEtBQUs7SUFDMUQrbkIsZ0VBQVksQ0FBQ3JkLEdBQUcsQ0FBQzFLLEtBQUssR0FBR2txQixZQUFZO0lBQ3JDLElBQUksQ0FBQ3BCLGVBQWUsR0FBR3hTLGdFQUFjLENBQUNDLGlCQUFpQixDQUFDMlQsWUFBWSxDQUFDO0lBQ3JFLElBQUksQ0FBQzZGLGlCQUFpQixHQUFHLElBQUlwRSxnRUFBZ0IsQ0FBQy9qQiw0Q0FBRyxDQUFDRyxZQUFZLEVBQUUsSUFBSSxDQUFDK2dCLGVBQWUsQ0FBQztJQUNyRixJQUFJLENBQUNzRSxlQUFlLENBQUM0QyxrQkFBa0IsQ0FBQ2h2QixHQUFHLENBQUMsSUFBSSxDQUFDK3VCLGlCQUFpQixDQUFDO0lBQ25FLElBQUksQ0FBQ0UsNEJBQTRCLEdBQUcsSUFBSSxDQUFDQywwQkFBMEIsQ0FBQ3JjLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUUsSUFBSSxDQUFDNFksWUFBWSxHQUFHQSxZQUFZO0lBRWhDLElBQUksQ0FBQ1csZUFBZSxDQUFDNEMsa0JBQWtCLENBQUNodkIsR0FBRyxDQUN6QyxJQUFJLENBQUNvc0IsZUFBZSxDQUFDWCxZQUFZLENBQUN2RixTQUFTLENBQUMsVUFBQXVGLFlBQVksRUFBSTtNQUMxRHBzQixLQUFJLENBQUMrc0IsZUFBZSxDQUFDK0MsbUJBQW1CLENBQUNod0IsT0FBTyxDQUFDLENBQUM7TUFFbEQsSUFBSSxDQUFDc3NCLFlBQVksRUFBRTtRQUNqQjtNQUNGO01BRUFwc0IsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQytDLG1CQUFtQixDQUFDbnZCLEdBQUcsQ0FBQ1gsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQzFJLFNBQVMsQ0FBQyxVQUFBMEksTUFBTSxFQUFJO1FBQzNGLElBQUl2dkIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2dELGNBQWMsRUFBRTtVQUN2Qy92QixLQUFJLENBQUMrc0IsZUFBZSxDQUFDZ0QsY0FBYyxDQUFDandCLE9BQU8sQ0FBQyxDQUFDO1FBQy9DO1FBRUEsSUFBSSxDQUFDeXZCLE1BQU0sRUFBRTtVQUNYO1FBQ0Y7UUFFQSxJQUFJLENBQUN2dkIsS0FBSSxDQUFDb3NCLFlBQVksRUFBRTtVQUN0QjtRQUNGO1FBRUEsSUFBSXBzQixLQUFJLENBQUNvc0IsWUFBWSxDQUFDNEQsT0FBTyxFQUFFO1VBQzdCaHdCLEtBQUksQ0FBQ29zQixZQUFZLENBQUM0RCxPQUFPLENBQUNuYSxTQUFTLEdBQUd0Tyw0Q0FBRyxDQUFDK08sZUFBZTtVQUN6RHRXLEtBQUksQ0FBQ29zQixZQUFZLENBQUM0RCxPQUFPLENBQUNob0IsUUFBUSxHQUFHaEksS0FBSSxDQUFDZ0ksUUFBUTtRQUNwRDtRQUVBaEksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2dELGNBQWMsR0FBRyxJQUFJMUUsOERBQWMsQ0FBQ3JyQixLQUFJLENBQUNnSSxRQUFRLEVBQUVULDRDQUFHLENBQUNHLFlBQVksRUFBRTFILEtBQUksQ0FBQ210QixpQkFBaUIsRUFBRW50QixLQUFJLENBQUN5b0IsZUFBZSxDQUFDO1FBQ3ZJem9CLEtBQUksQ0FBQytzQixlQUFlLENBQUNnRCxjQUFjLENBQUNFLCtCQUErQixDQUFDandCLEtBQUksQ0FBQ29zQixZQUFZLENBQUM7UUFDdEZwc0IsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2dELGNBQWMsQ0FBQ0csMkJBQTJCLENBQUNsd0IsS0FBSSxDQUFDb3NCLFlBQVksQ0FBQztRQUVsRixJQUFJcHNCLEtBQUksQ0FBQytzQixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEtBQUt5ckIsc0RBQVksQ0FBQytFLE9BQU8sRUFBRTtVQUM3RCxJQUFNclksT0FBTyxHQUFHOVgsS0FBSSxDQUFDb3dCLGdCQUFnQixDQUFDLENBQUM7UUFDekM7TUFDRixDQUFDLENBQUMsQ0FBQztNQUVIcHdCLEtBQUksQ0FBQytzQixlQUFlLENBQUM0QyxrQkFBa0IsQ0FBQ2h2QixHQUFHLENBQUNYLEtBQUksQ0FBQytzQixlQUFlLENBQUMrQyxtQkFBbUIsQ0FBQztJQUN2RixDQUFDLENBQUMsQ0FBQztJQUNMLElBQUksQ0FBQy9DLGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDaHZCLEdBQUcsQ0FDekMsSUFBSSxDQUFDb3NCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDM0csU0FBUyxDQUFDLFVBQUEyRyxLQUFLLEVBQUk7TUFDNUMsSUFBSXh0QixLQUFJLENBQUMrc0IsZUFBZSxDQUFDc0Qsd0JBQXdCLEVBQUU7UUFDakQ1UCxZQUFZLENBQUN6Z0IsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3NELHdCQUF3QixDQUFDO01BQzdEO01BRUEsSUFBSSxDQUFDcndCLEtBQUksQ0FBQytzQixlQUFlLENBQUNvQyxZQUFZLENBQUN4dkIsS0FBSyxFQUFFO1FBQzVDO01BQ0Y7TUFFQSxJQUFJNnRCLEtBQUssS0FBS3BDLHNEQUFZLENBQUNrRixPQUFPLEVBQUU7UUFDbEM7TUFDRjtNQUVBdHdCLEtBQUksQ0FBQytzQixlQUFlLENBQUNzRCx3QkFBd0IsR0FBR3B2QixNQUFNLENBQUN1RSxVQUFVLENBQUMsWUFBTTtRQUN0RXhGLEtBQUksQ0FBQytzQixlQUFlLENBQUNvQyxZQUFZLENBQUN4dkIsS0FBSyxHQUFHLENBQUM7TUFDN0MsQ0FBQyxFQUFFc3NCLHlDQUF5QyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsSUFBSSxDQUFDYyxlQUFlLENBQUM0QyxrQkFBa0IsQ0FBQ2h2QixHQUFHLENBQ3pDLElBQUksQ0FBQ29zQixlQUFlLENBQUNrQyxVQUFVLENBQUNwSSxTQUFTLENBQUMsVUFBQW9JLFVBQVUsRUFBSTtNQUN0RCxJQUFJanZCLEtBQUksQ0FBQytzQixlQUFlLENBQUNnRCxjQUFjLEVBQUU7UUFDdkMvdkIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2dELGNBQWMsQ0FBQ1Esd0JBQXdCLENBQUN0QixVQUFVLENBQUNqaUIsUUFBUSxDQUFDLENBQUMsQ0FBQztNQUNyRjtJQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsSUFBSSxDQUFDK2YsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUNodkIsR0FBRyxDQUN6QyxJQUFJLENBQUNvc0IsZUFBZSxDQUFDZ0MsWUFBWSxDQUFDbEksU0FBUyxDQUFDLFVBQUFrSSxZQUFZLEVBQUk7TUFDMUQsSUFBSUEsWUFBWSxJQUFJL3VCLEtBQUksQ0FBQytzQixlQUFlLENBQUNzQyxRQUFRLENBQUMxdkIsS0FBSyxJQUFJSyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDd0MsTUFBTSxDQUFDNXZCLEtBQUssRUFBRTtRQUM1RixJQUFNNndCLHFCQUFxQixHQUFHcnhCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsR0FBR1ksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQzBELHFCQUFxQixDQUFDQyxPQUFPLENBQUMsQ0FBQztRQUMvRixJQUFNNVksT0FBTyxHQUFHOVgsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzF2QixLQUFLLENBQUNneEIsWUFBWSxDQUM5RDN3QixLQUFJLENBQUMrc0IsZUFBZSxDQUFDd0MsTUFBTSxDQUFDNXZCLEtBQUssRUFDakM2d0IscUJBQXFCLEVBQ3JCekIsWUFBWSxFQUNaOUQsMEVBQVksQ0FBQzJGLElBQUksRUFDakIxRix5RUFBVyxDQUFDMkYsTUFDZCxDQUFDLENBQ0UzVyxLQUFLLENBQUMsVUFBQXBRLENBQUMsRUFBSTtVQUNWOUosS0FBSSxDQUFDNkksT0FBTyxDQUFDUyxLQUFLLENBQUMsbUNBQW1DLEVBQUVRLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUM7TUFDTjtJQUNGLENBQUMsQ0FDSCxDQUFDO0lBRUQsSUFBTWduQixzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFBLEVBQVM7TUFDbkMsSUFBSTl3QixLQUFJLENBQUMrc0IsZUFBZSxDQUFDd0MsTUFBTSxDQUFDNXZCLEtBQUssSUFBSUssS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzF2QixLQUFLLEVBQUU7UUFDNUUsSUFBTW1ZLE9BQU8sR0FBRzlYLEtBQUksQ0FBQytzQixlQUFlLENBQUNzQyxRQUFRLENBQUMxdkIsS0FBSyxDQUFDbXhCLHNCQUFzQixDQUFDOXdCLEtBQUksQ0FBQytzQixlQUFlLENBQUN3QyxNQUFNLENBQUM1dkIsS0FBSyxFQUFFLHFDQUFxQyxDQUFDO01BQ3RKO0lBQ0YsQ0FBQztJQUVEc0IsTUFBTSxDQUFDUCxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUVvd0Isc0JBQXNCLENBQUM7SUFFL0QsSUFBSSxDQUFDL0QsZUFBZSxDQUFDNEMsa0JBQWtCLENBQUNodkIsR0FBRyxDQUFDLElBQUloQyx5REFBVSxDQUFDLFlBQU07TUFDL0RzQyxNQUFNLENBQUNMLG1CQUFtQixDQUFDLGNBQWMsRUFBRWt3QixzQkFBc0IsQ0FBQztJQUNwRSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQ0MsS0FBSyxDQUFDLENBQUM7RUFDZDtFQUFDLE9BQUF2eEIsd0lBQUEsQ0FBQTJzQixPQUFBO0lBQUExc0IsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFxQztNQUNuQyxPQUFPLElBQUksQ0FBQ3F0QixlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLO0lBQ2hELENBQUM7SUFBQXlWLEdBQUEsRUFFRCxTQUFBQSxJQUFpQmdYLFlBQThCLEVBQUU7TUFDL0MsSUFBSSxJQUFJLENBQUNXLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssRUFBRTtRQUMzQyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxDQUFDaUIsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQ2d2Qiw0QkFBNEIsQ0FBQztRQUM1RyxJQUFJLENBQUM3QyxlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLLENBQUNpQixtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUNndkIsNEJBQTRCLENBQUM7UUFDaEgsSUFBSSxDQUFDN0MsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxDQUFDaUIsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQ2d2Qiw0QkFBNEIsQ0FBQztRQUV4RyxJQUFJLElBQUksQ0FBQzdDLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssQ0FBQ3F3QixPQUFPLEVBQUU7VUFDbkQsSUFBSSxDQUFDakQsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxDQUFDcXdCLE9BQU8sQ0FBQ25hLFNBQVMsR0FBRyxFQUFFO1VBQzlELElBQUksQ0FBQ2tYLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssQ0FBQ3F3QixPQUFPLENBQUNob0IsUUFBUSxHQUFHLEVBQUU7UUFDL0Q7UUFFQSxJQUFJLENBQUMra0IsZUFBZSxDQUFDK0MsbUJBQW1CLENBQUNod0IsT0FBTyxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDaXRCLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssQ0FBQ3F4QixLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUNqRSxlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLLENBQUNzeEIsU0FBUyxHQUFHLElBQUk7TUFDMUQ7TUFFQSxJQUFJLENBQUNsRSxlQUFlLENBQUNXLFNBQVMsQ0FBQy90QixLQUFLLEdBQUcsS0FBSztNQUM1QyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDYSxVQUFVLENBQUNqdUIsS0FBSyxHQUFHLEtBQUs7TUFDN0MsSUFBSSxDQUFDb3RCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3p1QixLQUFLLEdBQUcsS0FBSztNQUMxQyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDdUIsT0FBTyxDQUFDM3VCLEtBQUssR0FBRyxLQUFLO01BQzFDLElBQUksQ0FBQ290QixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsc0RBQVksQ0FBQytFLE9BQU87TUFFdkQsSUFBSSxDQUFDcEQsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxHQUFHeXNCLFlBQVk7TUFFdEQsSUFBSSxJQUFJLENBQUNXLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssRUFBRTtRQUMzQyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxDQUFDZSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDa3ZCLDRCQUE0QixDQUFDO1FBQ3pHLElBQUksQ0FBQzdDLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssQ0FBQ2UsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDa3ZCLDRCQUE0QixDQUFDO1FBQzdHLElBQUksQ0FBQzdDLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssQ0FBQ2UsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQ2t2Qiw0QkFBNEIsQ0FBQztNQUN2RztJQUNGO0VBQUM7SUFBQW53QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRa3dCLDBCQUEwQkEsQ0FBQSxFQUFTO01BQ3pDLElBQU16RCxZQUFZLEdBQUcsSUFBSSxDQUFDVyxlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLO01BRTVELElBQUl5c0IsWUFBWSxFQUFFO1FBQ2hCLElBQUksSUFBSSxDQUFDNkMsVUFBVSxDQUFDdHZCLEtBQUssQ0FBQ3V4QixLQUFLLEtBQUs5RSxZQUFZLENBQUMrRSxVQUFVLElBQUksSUFBSSxDQUFDbEMsVUFBVSxDQUFDdHZCLEtBQUssQ0FBQ3l4QixNQUFNLEtBQUtoRixZQUFZLENBQUNpRixXQUFXLEVBQUU7VUFDeEgsSUFBSSxDQUFDdEUsZUFBZSxDQUFDa0MsVUFBVSxDQUFDdHZCLEtBQUssR0FBRyxJQUFJd3JCLHdEQUFTLENBQUNpQixZQUFZLENBQUMrRSxVQUFVLEVBQUUvRSxZQUFZLENBQUNpRixXQUFXLENBQUM7UUFDMUc7TUFDRixDQUFDLE1BQU07UUFDTCxJQUFJLENBQUN0RSxlQUFlLENBQUNrQyxVQUFVLENBQUN0dkIsS0FBSyxHQUFHd3JCLHdEQUFTLENBQUNtRyxLQUFLO01BQ3pEO0lBQ0Y7RUFBQztJQUFBN3hCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBOEI7TUFDNUIsT0FBTyxJQUFJLENBQUNvdEIsYUFBYSxDQUFDMWpCLEtBQUssQ0FBQ3pKLEtBQUs7SUFDdkMsQ0FBQztJQUFBeVYsR0FBQSxFQUVELFNBQUFBLElBQVVoTSxLQUF1QixFQUFFO01BQ2pDLElBQUksQ0FBQzJqQixlQUFlLENBQUN3RSxXQUFXLENBQUN6eEIsT0FBTyxDQUFDLENBQUM7TUFFMUMsSUFBSSxDQUFDZ3RCLGFBQWEsQ0FBQzFqQixLQUFLLENBQUN6SixLQUFLLEdBQUd5SixLQUFLO01BQ3RDLElBQUksQ0FBQzBqQixhQUFhLENBQUNnQixhQUFhLENBQUNudUIsS0FBSyxHQUFHLEtBQUs7TUFFOUMsSUFBTWdLLFNBQVMsR0FBR1QsaUVBQWMsQ0FBQ0MsVUFBVSxDQUFDLElBQUksQ0FBQzJqQixhQUFhLENBQUMxakIsS0FBSyxDQUFDekosS0FBSyxDQUFDO01BQzNFLElBQU1rcUIsWUFBWSxHQUFHLENBQUNsZ0IsU0FBUyxDQUFDVSxHQUFHLElBQUk5Qyw0Q0FBRyxDQUFDc2lCLFlBQVksQ0FBQ2xxQixLQUFLLEVBQUVxTixRQUFRLENBQUMsQ0FBQztNQUV6RXpGLDRDQUFHLENBQUNvTyxPQUFPLENBQUNoVyxLQUFLLEdBQUdnSyxTQUFTLENBQUNnTSxPQUFPLElBQUlwTyw0Q0FBRyxDQUFDb08sT0FBTyxDQUFDaFcsS0FBSztNQUMxRCtuQixnRUFBWSxDQUFDcmQsR0FBRyxDQUFDMUssS0FBSyxHQUFHa3FCLFlBQVk7TUFFckMsSUFBSSxDQUFDcEIsZUFBZSxHQUFHeFMsZ0VBQWMsQ0FBQ0MsaUJBQWlCLENBQUMyVCxZQUFZLENBQUM7TUFFckUsSUFBSSxDQUFDb0QsdUJBQXVCLENBQUNULG9CQUFvQixDQUFDN3NCLEtBQUssR0FBR2dLLFNBQVMsQ0FBQ1csWUFBWSxDQUFDeEcsUUFBUSxDQUFDLG9CQUFvQixDQUFDO01BQy9HLElBQUksQ0FBQ21wQix1QkFBdUIsQ0FBQ1IsMkJBQTJCLENBQUM5c0IsS0FBSyxHQUFHZ0ssU0FBUyxDQUFDVyxZQUFZLENBQUN4RyxRQUFRLENBQUMsNEJBQTRCLENBQUM7TUFFOUgsSUFBSSxDQUFDaXRCLEtBQUssQ0FBQyxDQUFDO0lBQ2Q7RUFBQztJQUFBdHhCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUQ7TUFDckQsT0FBTyxJQUFJLENBQUM0dEIsdUJBQXVCO0lBQ3JDO0VBQUM7SUFBQTd0QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJDO01BQ3pDLE9BQU8sSUFBSSxDQUFDNnRCLGNBQWM7SUFDNUI7RUFBQztJQUFBOXRCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMEM7TUFDeEMsT0FBTyxJQUFJLENBQUMrdEIsa0JBQWtCO0lBQ2hDO0VBQUM7SUFBQWh1QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJDO01BQ3pDLE9BQU8sSUFBSSxDQUFDaXVCLG1CQUFtQjtJQUNqQztFQUFDO0lBQUFsdUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE4QztNQUM1QyxPQUFPLElBQUksQ0FBQ211QixzQkFBc0I7SUFDcEM7RUFBQztJQUFBcHVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMkM7TUFDekMsT0FBTyxJQUFJLENBQUNxdUIsbUJBQW1CO0lBQ2pDO0VBQUM7SUFBQXR1QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDdXVCLGVBQWU7SUFDN0I7RUFBQztJQUFBeHVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFDdEMsT0FBTyxJQUFJLENBQUN5dUIsZ0JBQWdCO0lBQzlCO0VBQUM7SUFBQTF1QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXdDO01BQ3RDLE9BQU8sSUFBSSxDQUFDMnVCLGdCQUFnQjtJQUM5QjtFQUFDO0lBQUE1dUIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUN0QyxPQUFPLElBQUksQ0FBQzZ1QixnQkFBZ0I7SUFDOUI7RUFBQztJQUFBOXVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBd0M7TUFDdEMsT0FBTyxJQUFJLENBQUMrdUIsZ0JBQWdCO0lBQzlCO0VBQUM7SUFBQWh2QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQThDO01BQzVDLE9BQU8sSUFBSSxDQUFDaXZCLGtCQUFrQjtJQUNoQztFQUFDO0lBQUFsdkIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUF3QztNQUN0QyxPQUFPLElBQUksQ0FBQ2t2QixZQUFZO0lBQzFCO0VBQUM7SUFBQW52QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJCO01BQ3pCLE9BQU8sSUFBSSxDQUFDb3ZCLHFCQUFxQixDQUFDbnZCLEtBQUs7SUFDekM7RUFBQztJQUFBRixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTZDO01BQzNDLE9BQU8sSUFBSSxDQUFDc3ZCLG1CQUFtQjtJQUNqQztFQUFDO0lBQUF2dkIsR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUE0QztNQUMxQyxPQUFPLElBQUksQ0FBQ3d2QixxQkFBcUI7SUFDbkM7RUFBQztJQUFBenZCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBMEM7TUFDeEMsT0FBTyxJQUFJLENBQUMwdkIsaUJBQWlCO0lBQy9CO0VBQUM7SUFBQTN2QixHQUFBO0lBQUFDLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXVDO01BQ3JDLE9BQU8sSUFBSSxDQUFDNHZCLGVBQWU7SUFDN0I7RUFBQztJQUFBN3ZCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUI7TUFDckIsT0FBTyxJQUFJLENBQUNxdEIsZUFBZSxDQUFDL2tCLFFBQVE7SUFDdEM7RUFBQztJQUFBdkksR0FBQTtJQUFBQyxHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUEyRDtNQUN6RCxPQUFPLElBQUksQ0FBQzh2QixzQkFBc0I7SUFDcEM7RUFBQztJQUFBL3ZCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0Q7TUFDOUMsT0FBTyxJQUFJLENBQUMrdkIsb0JBQW9CO0lBQ2xDO0VBQUM7SUFBQWh3QixHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBNnhCLGVBQWVBLENBQUN6QyxZQUEyQixFQUFRO01BQ2pELElBQUksQ0FBQ2hDLGVBQWUsQ0FBQ2dDLFlBQVksQ0FBQ3B2QixLQUFLLEdBQUdvdkIsWUFBWTtJQUN4RDtFQUFDO0lBQUF0dkIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQTh4QixpQkFBaUJBLENBQUEsRUFBUztNQUFBLElBQUExd0IsTUFBQTtNQUN4QixJQUFJLElBQUksQ0FBQ2dzQixlQUFlLENBQUNnQyxZQUFZLENBQUNwdkIsS0FBSyxJQUFJLElBQUksQ0FBQ290QixlQUFlLENBQUNzQyxRQUFRLENBQUMxdkIsS0FBSyxJQUFJLElBQUksQ0FBQ290QixlQUFlLENBQUN3QyxNQUFNLENBQUM1dkIsS0FBSyxFQUFFO1FBQ3ZILElBQU02d0IscUJBQXFCLEdBQUdyeEIsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQzJ0QixlQUFlLENBQUMwRCxxQkFBcUIsQ0FBQ0MsT0FBTyxDQUFDLENBQUM7UUFDL0YsSUFBTWdCLHNCQUFzQixHQUFHLENBQUM7UUFDaEMsSUFBTTVaLE9BQU8sR0FBRyxJQUFJLENBQUNpVixlQUFlLENBQUNzQyxRQUFRLENBQUMxdkIsS0FBSyxDQUFDZ3hCLFlBQVksQ0FDOUQsSUFBSSxDQUFDNUQsZUFBZSxDQUFDd0MsTUFBTSxDQUFDNXZCLEtBQUssRUFDakM2d0IscUJBQXFCLEVBQ3JCa0Isc0JBQXNCLEVBQ3RCekcsMEVBQVksQ0FBQzJGLElBQUksRUFDakIxRix5RUFBVyxDQUFDeUcsS0FDZCxDQUFDLENBQ0UvWCxJQUFJLENBQUMsVUFBQU8sSUFBQSxFQUFjO1VBQUEsSUFBWkMsTUFBTSxHQUFBRCxJQUFBLENBQU5DLE1BQU07VUFDWixJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CclosTUFBSSxDQUFDZ3NCLGVBQWUsQ0FBQ2dDLFlBQVksQ0FBQ3B2QixLQUFLLEdBQUcsQ0FBQztVQUM3QztRQUNGLENBQUMsQ0FBQyxDQUNEdWEsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7VUFDVi9JLE1BQUksQ0FBQzhILE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLG1DQUFtQyxFQUFFUSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDO01BQ047SUFDRjtFQUFDO0lBQUFySyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBaXlCLGVBQWVBLENBQUMvQyxHQUFnQixFQUFRO01BQ3RDLElBQUksQ0FBQzlCLGVBQWUsQ0FBQ1QsU0FBUyxDQUFDM3NCLEtBQUssR0FBR2t2QixHQUFHO0lBQzVDO0VBQUM7SUFBQXB2QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBa3lCLEtBQUEsR0FBQTdaLDZJQUFBLGVBQUFDLDJJQUFBLENBRUQsU0FBQUUsUUFBVzhDLE1BQWM7UUFBQSxJQUFBK0ssTUFBQTtRQUFBLE9BQUEvTiwySUFBQSxVQUFBTSxTQUFBQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7WUFBQTtjQUFBLE9BQUFGLFFBQUEsQ0FBQVMsTUFBQSxXQUNoQixJQUFJc0IsT0FBTyxDQUFDLFVBQUEwQixPQUFPLEVBQUk7Z0JBQzVCLElBQUksQ0FBQytKLE1BQUksQ0FBQ2tILGFBQWEsQ0FBQzRFLFVBQVUsQ0FBQ255QixLQUFLLEVBQUU7a0JBQ3hDcW1CLE1BQUksQ0FBQytMLFdBQVcsQ0FBQzlXLE1BQU0sQ0FBQztrQkFFeEJnQixPQUFPLENBQUMsQ0FBQztrQkFFVDtnQkFDRjtnQkFFQStKLE1BQUksQ0FBQytHLGVBQWUsQ0FBQytDLG1CQUFtQixDQUFDbnZCLEdBQUcsQ0FBQ3FsQixNQUFJLENBQUNrSCxhQUFhLENBQUM0RSxVQUFVLENBQUNqTCxTQUFTLENBQUMsVUFBQWlMLFVBQVUsRUFBSTtrQkFDakcsSUFBSSxDQUFDQSxVQUFVLEVBQUU7b0JBQ2Y5TCxNQUFJLENBQUMrTCxXQUFXLENBQUM5VyxNQUFNLENBQUM7b0JBQ3hCZ0IsT0FBTyxDQUFDLENBQUM7a0JBQ1g7Z0JBQ0YsQ0FBQyxDQUFDLENBQUM7Y0FDTCxDQUFDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQXpELFFBQUEsQ0FBQVcsSUFBQTtVQUFBO1FBQUEsR0FBQWhCLE9BQUE7TUFBQSxDQUNIO01BQUEsU0FqQktnQixJQUFJQSxDQUFBQyxFQUFBO1FBQUEsT0FBQXlZLEtBQUEsQ0FBQXhZLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQUoySSxJQUFJO0lBQUE7RUFBQTtJQUFBMVosR0FBQTtJQUFBRSxLQUFBLEVBbUJWLFNBQVFveUIsV0FBV0EsQ0FBQzlXLE1BQWMsRUFBUTtNQUN4QyxJQUFJLElBQUksQ0FBQzhSLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssRUFBRTtRQUMzQyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxDQUFDcXhCLEtBQUssQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQ2pFLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssQ0FBQ3N4QixTQUFTLEdBQUcsSUFBSTtNQUMxRDtNQUVBLElBQUksQ0FBQ2xFLGVBQWUsQ0FBQytDLG1CQUFtQixDQUFDaHdCLE9BQU8sQ0FBQyxDQUFDO01BRWxELElBQUksQ0FBQ2t5QixnQkFBZ0IsQ0FBQy9XLE1BQU0sQ0FBQztNQUU3QixJQUFJLENBQUM4UixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsc0RBQVksQ0FBQytFLE9BQU87SUFDekQ7RUFBQztJQUFBMXdCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFzeUIsT0FBQSxHQUFBamEsNklBQUEsZUFBQUMsMklBQUEsQ0FFRCxTQUFBc0IsU0FBQTtRQUFBLE9BQUF0QiwySUFBQSxVQUFBdUIsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFoQixJQUFBLEdBQUFnQixTQUFBLENBQUFmLElBQUE7WUFBQTtjQUFBLEtBQ00sSUFBSSxDQUFDc1Usc0JBQXNCLENBQUMzTixXQUFXLENBQUMxZixLQUFLO2dCQUFBOFosU0FBQSxDQUFBZixJQUFBO2dCQUFBO2NBQUE7Y0FDL0MsSUFBSSxDQUFDcVUsZUFBZSxDQUFDYSxVQUFVLENBQUNqdUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBOFosU0FBQSxDQUFBUixNQUFBLFdBRXZDLElBQUksQ0FBQ2laLDZCQUE2QixDQUFDLElBQUksQ0FBQ2xGLHNCQUFzQixDQUFDM04sV0FBVyxDQUFDMWYsS0FBSyxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUE4WixTQUFBLENBQUFOLElBQUE7VUFBQTtRQUFBLEdBQUFJLFFBQUE7TUFBQSxDQUUzRjtNQUFBLFNBTks0WSxNQUFNQSxDQUFBO1FBQUEsT0FBQUYsT0FBQSxDQUFBNVksS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBTjJoQixNQUFNO0lBQUE7RUFBQTtJQUFBMXlCLEdBQUE7SUFBQUUsS0FBQSxFQVFaLFNBQUF5eUIsSUFBSUEsQ0FBQSxFQUFTO01BQ1gsSUFBTWhHLFlBQVksR0FBRyxJQUFJLENBQUNXLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUs7TUFFNUQsSUFBSXlzQixZQUFZLEVBQUU7UUFDaEJBLFlBQVksQ0FBQ2lHLEtBQUssR0FBRyxJQUFJO01BQzNCO0lBQ0Y7RUFBQztJQUFBNXlCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUEyeUIsTUFBTUEsQ0FBQSxFQUFTO01BQ2IsSUFBTWxHLFlBQVksR0FBRyxJQUFJLENBQUNXLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUs7TUFFNUQsSUFBSXlzQixZQUFZLEVBQUU7UUFDaEJBLFlBQVksQ0FBQ2lHLEtBQUssR0FBRyxLQUFLO1FBQzFCLElBQUksQ0FBQ3RGLGVBQWUsQ0FBQ1csU0FBUyxDQUFDL3RCLEtBQUssR0FBRyxLQUFLO01BQzlDO0lBQ0Y7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBNHlCLFFBQUEsR0FBQXZhLDZJQUFBLGVBQUFDLDJJQUFBLENBRUQsU0FBQW9GLFNBQUE7UUFBQSxJQUFBNkksTUFBQTtRQUFBLE9BQUFqTywySUFBQSxVQUFBd0YsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFqRixJQUFBLEdBQUFpRixTQUFBLENBQUFoRixJQUFBO1lBQUE7Y0FBQSxPQUFBZ0YsU0FBQSxDQUFBekUsTUFBQSxXQUNTLElBQUksQ0FBQ0UsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUNTLElBQUksQ0FBQyxZQUFNO2dCQUNwRHNNLE1BQUksQ0FBQzZHLGVBQWUsQ0FBQzRDLGtCQUFrQixDQUFDN3ZCLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRG9tQixNQUFJLENBQUNnSCxhQUFhLENBQUNzRixVQUFVLEdBQUcsSUFBSTtjQUN0QyxDQUFDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQTlVLFNBQUEsQ0FBQXZFLElBQUE7VUFBQTtRQUFBLEdBQUFrRSxRQUFBO01BQUEsQ0FDSDtNQUFBLFNBTEt2ZCxPQUFPQSxDQUFBO1FBQUEsT0FBQXl5QixRQUFBLENBQUFsWixLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFQMVEsT0FBTztJQUFBO0VBQUE7SUFBQUwsR0FBQTtJQUFBRSxLQUFBLEVBT2IsU0FBQTh5QixNQUFNQSxDQUFDcnBCLEtBQXVCLEVBQU87TUFDbkMsSUFBTWlNLEdBQUcsR0FBR25NLGlFQUFjLENBQUNDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLENBQUNpQixHQUFHO01BRWhELElBQUlnTCxHQUFHLEVBQUU7UUFDUCxPQUFPQSxHQUFHO01BQ1o7TUFFQSxJQUFJLENBQUN4TSxPQUFPLENBQUNDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRXZCLDRDQUFHLENBQUNzaUIsWUFBWSxDQUFDbHFCLEtBQUssQ0FBQztNQUV2RixPQUFPLElBQUlpRyxHQUFHLENBQUMyQiw0Q0FBRyxDQUFDc2lCLFlBQVksQ0FBQ2xxQixLQUFLLENBQUM7SUFDeEM7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBK3lCLE1BQUEsR0FBQTFhLDZJQUFBLGVBQUFDLDJJQUFBLENBRUQsU0FBQXFOLFNBQUE7UUFBQSxPQUFBck4sMklBQUEsVUFBQXdOLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBak4sSUFBQSxHQUFBaU4sU0FBQSxDQUFBaE4sSUFBQTtZQUFBO2NBQUEsS0FDTSxJQUFJLENBQUN3VSxhQUFhLENBQUNzRixVQUFVO2dCQUFBOU0sU0FBQSxDQUFBaE4sSUFBQTtnQkFBQTtjQUFBO2NBQUEsTUFDekIsSUFBSXpULEtBQUssQ0FBQyw4QkFBOEIsQ0FBQztZQUFBO2NBQUEsS0FHN0MsSUFBSSxDQUFDaW9CLGFBQWEsQ0FBQzRFLFVBQVUsQ0FBQ255QixLQUFLO2dCQUFBK2xCLFNBQUEsQ0FBQWhOLElBQUE7Z0JBQUE7Y0FBQTtjQUNyQyxJQUFJLENBQUM3UCxPQUFPLENBQUNDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQztjQUFDLE9BQUE0YyxTQUFBLENBQUF6TSxNQUFBO1lBQUE7Y0FLbkUsSUFBSSxDQUFDaVUsYUFBYSxDQUFDNEUsVUFBVSxDQUFDbnlCLEtBQUssR0FBRyxJQUFJO2NBQUMsT0FBQStsQixTQUFBLENBQUF6TSxNQUFBLFdBRXBDLElBQUksQ0FBQzBaLFlBQVksQ0FBQyxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUFqTixTQUFBLENBQUF2TSxJQUFBO1VBQUE7UUFBQSxHQUFBbU0sUUFBQTtNQUFBLENBQzNCO01BQUEsU0FkS3lMLEtBQUtBLENBQUE7UUFBQSxPQUFBMkIsTUFBQSxDQUFBclosS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBTHVnQixLQUFLO0lBQUE7RUFBQTtJQUFBdHhCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUFpekIsYUFBQSxHQUFBNWEsNklBQUEsZUFBQUMsMklBQUEsQ0FnQlgsU0FBQTRhLFNBQUE7UUFBQSxJQUFBQyxNQUFBO1FBQUEsSUFBQTFwQixLQUFBLEVBQUEycEIsbUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsS0FBQSxFQUFBQyxnQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxNQUFBLEVBQUFDLGlCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLE9BQUEsRUFBQUMsa0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsT0FBQSxFQUFBQyxrQkFBQSxFQUFBQywwQkFBQSxFQUFBQyxvQkFBQSxFQUFBeHBCLEdBQUEsRUFBQXlwQiwyQkFBQSxFQUFBQyxZQUFBO1FBQUEsT0FBQTliLDJJQUFBLFVBQUErYixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXhiLElBQUEsR0FBQXdiLFNBQUEsQ0FBQXZiLElBQUE7WUFBQTtjQUNRdFAsS0FBdUIsR0FBRyxJQUFJLENBQUMwakIsYUFBYSxDQUFDMWpCLEtBQUssQ0FBQ3pKLEtBQUs7Y0FDeERvekIsbUJBQW1CLEdBQUcsSUFBSSxDQUFDckQsaUJBQWlCLENBQUNxRCxtQkFBbUIsQ0FBQyxDQUFDO2NBQUEsSUFFbkU3cEIsaUVBQWMsQ0FBQ0csdUJBQXVCLENBQUNELEtBQUssQ0FBQztnQkFBQTZxQixTQUFBLENBQUF2YixJQUFBO2dCQUFBO2NBQUE7Y0FDaEQsSUFBSSxDQUFDN1AsT0FBTyxDQUFDUyxLQUFLLENBQUMsNEJBQTRCLEVBQUVGLEtBQUssQ0FBQztjQUN2RCxJQUFJLENBQUMyakIsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUM4SSxZQUFZO2NBQzVELElBQUksQ0FBQ25ILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ3J1QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUN1dEIsYUFBYSxDQUFDNEUsVUFBVSxDQUFDbnlCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQXMwQixTQUFBLENBQUFoYixNQUFBO1lBQUE7Y0FBQSxLQUsxQyxJQUFJLENBQUNnVSx1QkFBdUIsQ0FBQ1AsNEJBQTRCO2dCQUFBdUgsU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQUFzYSxxQkFBQSxHQUN6QnRILDZFQUFvQixDQUFDeUksaUNBQWlDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQ2xILHVCQUF1QixDQUFDUCw0QkFBNEIsQ0FBQyxFQUFySnVHLEtBQUssR0FBQUQscUJBQUEsQ0FBTEMsS0FBSyxFQUFFQyxnQkFBZ0IsR0FBQUYscUJBQUEsQ0FBaEJFLGdCQUFnQjtjQUFBLElBRXpCRCxLQUFLO2dCQUFBZ0IsU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQ1IsSUFBSSxDQUFDN1AsT0FBTyxDQUFDUyxLQUFLLENBQUM0cEIsZ0JBQWdCLENBQUM7Y0FDcEMsSUFBSSxDQUFDbkcsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNnSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ3V0QixhQUFhLENBQUM0RSxVQUFVLENBQUNueUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBczBCLFNBQUEsQ0FBQWhiLE1BQUE7WUFBQTtjQUFBLEtBTTVDLElBQUksQ0FBQ2dVLHVCQUF1QixDQUFDTiw0QkFBNEI7Z0JBQUFzSCxTQUFBLENBQUF2YixJQUFBO2dCQUFBO2NBQUE7Y0FBQXlhLHNCQUFBLEdBQ3pCekgsNkVBQW9CLENBQUN5SSxpQ0FBaUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDbEgsdUJBQXVCLENBQUNOLDRCQUE0QixDQUFDLEVBQXJKc0csTUFBSyxHQUFBRSxzQkFBQSxDQUFMRixLQUFLLEVBQUVDLGlCQUFnQixHQUFBQyxzQkFBQSxDQUFoQkQsZ0JBQWdCO2NBQUEsSUFFekJELE1BQUs7Z0JBQUFnQixTQUFBLENBQUF2YixJQUFBO2dCQUFBO2NBQUE7Y0FDUixJQUFJLENBQUM3UCxPQUFPLENBQUNTLEtBQUssQ0FBQzRwQixpQkFBZ0IsQ0FBQztjQUNwQyxJQUFJLENBQUNuRyxlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsc0RBQVksQ0FBQ2dKLGtCQUFrQjtjQUNsRSxJQUFJLENBQUNySCxlQUFlLENBQUNpQixVQUFVLENBQUNydUIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDdXRCLGFBQWEsQ0FBQzRFLFVBQVUsQ0FBQ255QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBaGIsTUFBQTtZQUFBO2NBQUEsS0FNNUMsSUFBSSxDQUFDZ1UsdUJBQXVCLENBQUNMLHNCQUFzQjtnQkFBQXFILFNBQUEsQ0FBQXZiLElBQUE7Z0JBQUE7Y0FBQTtjQUFBNGEscUJBQUEsR0FDbkI3SCwwRUFBaUIsQ0FBQzRJLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUNwSCx1QkFBdUIsQ0FBQ0wsc0JBQXNCLENBQUMsRUFBcElxRyxPQUFLLEdBQUFLLHFCQUFBLENBQUxMLEtBQUssRUFBRUMsa0JBQWdCLEdBQUFJLHFCQUFBLENBQWhCSixnQkFBZ0I7Y0FBQSxJQUV6QkQsT0FBSztnQkFBQWdCLFNBQUEsQ0FBQXZiLElBQUE7Z0JBQUE7Y0FBQTtjQUNSLElBQUksQ0FBQzdQLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDNHBCLGtCQUFnQixDQUFDO2NBQ3BDLElBQUksQ0FBQ25HLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssR0FBR3lyQixzREFBWSxDQUFDZ0osa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ3JILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ3J1QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUN1dEIsYUFBYSxDQUFDNEUsVUFBVSxDQUFDbnlCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQXMwQixTQUFBLENBQUFoYixNQUFBO1lBQUE7Y0FBQSxLQU01QyxJQUFJLENBQUNnVSx1QkFBdUIsQ0FBQ0osc0JBQXNCO2dCQUFBb0gsU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQUErYSxzQkFBQSxHQUNuQmhJLDBFQUFpQixDQUFDNEkseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQ3BILHVCQUF1QixDQUFDSixzQkFBc0IsQ0FBQyxFQUFwSW9HLE9BQUssR0FBQVEsc0JBQUEsQ0FBTFIsS0FBSyxFQUFFQyxrQkFBZ0IsR0FBQU8sc0JBQUEsQ0FBaEJQLGdCQUFnQjtjQUFBLElBRXpCRCxPQUFLO2dCQUFBZ0IsU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQ1IsSUFBSSxDQUFDN1AsT0FBTyxDQUFDUyxLQUFLLENBQUM0cEIsa0JBQWdCLENBQUM7Y0FDcEMsSUFBSSxDQUFDbkcsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNnSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ3V0QixhQUFhLENBQUM0RSxVQUFVLENBQUNueUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBczBCLFNBQUEsQ0FBQWhiLE1BQUE7WUFBQTtjQUFBLE1BTTVDLElBQUksQ0FBQ2dVLHVCQUF1QixDQUFDVCxvQkFBb0IsQ0FBQzdzQixLQUFLLElBQUksSUFBSSxDQUFDc3RCLHVCQUF1QixDQUFDUiwyQkFBMkIsQ0FBQzlzQixLQUFLO2dCQUFBczBCLFNBQUEsQ0FBQXZiLElBQUE7Z0JBQUE7Y0FBQTtjQUMzSCxJQUFJLENBQUM3UCxPQUFPLENBQUNTLEtBQUssQ0FBQywrRkFBK0YsQ0FBQztjQUNuSCxJQUFJLENBQUN5akIsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNnSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ3V0QixhQUFhLENBQUM0RSxVQUFVLENBQUNueUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBczBCLFNBQUEsQ0FBQWhiLE1BQUE7WUFBQTtjQUt4QzJhLDBCQUEwQixHQUFHLE9BQU8sSUFBSSxDQUFDM0csdUJBQXVCLENBQUNQLDRCQUE0QixLQUFLLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQ08sdUJBQXVCLENBQUNOLDRCQUE0QixLQUFLLFVBQVU7Y0FDL0xrSCxvQkFBb0IsR0FBRyxPQUFPLElBQUksQ0FBQzVHLHVCQUF1QixDQUFDTCxzQkFBc0IsS0FBSyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUNLLHVCQUF1QixDQUFDSixzQkFBc0IsS0FBSyxVQUFVO2NBQUEsTUFFL0srRywwQkFBMEIsSUFBSUMsb0JBQW9CO2dCQUFBSSxTQUFBLENBQUF2YixJQUFBO2dCQUFBO2NBQUE7Y0FDcEQsSUFBSSxDQUFDN1AsT0FBTyxDQUFDUyxLQUFLLENBQUMsNkhBQTZILENBQUM7Y0FDakosSUFBSSxDQUFDeWpCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssR0FBR3lyQixzREFBWSxDQUFDZ0osa0JBQWtCO2NBQ2xFLElBQUksQ0FBQ3JILGVBQWUsQ0FBQ2lCLFVBQVUsQ0FBQ3J1QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUN1dEIsYUFBYSxDQUFDNEUsVUFBVSxDQUFDbnlCLEtBQUssR0FBRyxLQUFLO2NBQUMsT0FBQXMwQixTQUFBLENBQUFoYixNQUFBO1lBQUE7Y0FBQSxLQUsxQyxJQUFJLENBQUNnVSx1QkFBdUIsQ0FBQ1Qsb0JBQW9CLENBQUM3c0IsS0FBSztnQkFBQXMwQixTQUFBLENBQUF2YixJQUFBO2dCQUFBO2NBQUE7Y0FBQSxJQUNwRDNULHVFQUFpQixDQUFDdXZCLDRCQUE0QjtnQkFBQUwsU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQ2pELElBQUksQ0FBQzdQLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLGlEQUFpRCxDQUFDO2NBQ3JFLElBQUksQ0FBQ3lqQixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsc0RBQVksQ0FBQ21KLGtCQUFrQjtjQUNsRSxJQUFJLENBQUN4SCxlQUFlLENBQUNpQixVQUFVLENBQUNydUIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDdXRCLGFBQWEsQ0FBQzRFLFVBQVUsQ0FBQ255QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBaGIsTUFBQTtZQUFBO2NBQUEsSUFLekMyYSwwQkFBMEI7Z0JBQUFLLFNBQUEsQ0FBQXZiLElBQUE7Z0JBQUE7Y0FBQTtjQUM3QixJQUFJLENBQUM3UCxPQUFPLENBQUNTLEtBQUssQ0FBQyxxR0FBcUcsQ0FBQztjQUN6SCxJQUFJLENBQUN5akIsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNnSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ3V0QixhQUFhLENBQUM0RSxVQUFVLENBQUNueUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBczBCLFNBQUEsQ0FBQWhiLE1BQUE7WUFBQTtjQUFBZ2IsU0FBQSxDQUFBdmIsSUFBQTtjQUFBO1lBQUE7Y0FBQSxLQUsxQ2tiLDBCQUEwQjtnQkFBQUssU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQzVCLElBQUksQ0FBQzdQLE9BQU8sQ0FBQ1MsS0FBSyxxR0FBcUcsQ0FBQztjQUN4SCxJQUFJLENBQUN5akIsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNnSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ3V0QixhQUFhLENBQUM0RSxVQUFVLENBQUNueUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBczBCLFNBQUEsQ0FBQWhiLE1BQUE7WUFBQTtjQUFBLEtBTTVDLElBQUksQ0FBQ2dVLHVCQUF1QixDQUFDUiwyQkFBMkIsQ0FBQzlzQixLQUFLO2dCQUFBczBCLFNBQUEsQ0FBQXZiLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLElBQzFEM1QsdUVBQWlCLENBQUM0WSxtQ0FBbUMsSUFBSTVZLHVFQUFpQixDQUFDeXZCLGdDQUFnQztnQkFBQVAsU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQy9HLElBQUksQ0FBQzdQLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHVEQUF1RCxDQUFDO2NBQzNFLElBQUksQ0FBQ3lqQixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsc0RBQVksQ0FBQ21KLGtCQUFrQjtjQUNsRSxJQUFJLENBQUN4SCxlQUFlLENBQUNpQixVQUFVLENBQUNydUIsS0FBSyxHQUFHLEtBQUs7Y0FDN0MsSUFBSSxDQUFDdXRCLGFBQWEsQ0FBQzRFLFVBQVUsQ0FBQ255QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBaGIsTUFBQTtZQUFBO2NBQUEsSUFLekM0YSxvQkFBb0I7Z0JBQUFJLFNBQUEsQ0FBQXZiLElBQUE7Z0JBQUE7Y0FBQTtjQUN2QixJQUFJLENBQUM3UCxPQUFPLENBQUNTLEtBQUssQ0FBQyx5R0FBeUcsQ0FBQztjQUM3SCxJQUFJLENBQUN5akIsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNnSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ3V0QixhQUFhLENBQUM0RSxVQUFVLENBQUNueUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBczBCLFNBQUEsQ0FBQWhiLE1BQUE7WUFBQTtjQUFBZ2IsU0FBQSxDQUFBdmIsSUFBQTtjQUFBO1lBQUE7Y0FBQSxLQUsxQ21iLG9CQUFvQjtnQkFBQUksU0FBQSxDQUFBdmIsSUFBQTtnQkFBQTtjQUFBO2NBQ3RCLElBQUksQ0FBQzdQLE9BQU8sQ0FBQ1MsS0FBSyx5R0FBeUcsQ0FBQztjQUM1SCxJQUFJLENBQUN5akIsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNnSixrQkFBa0I7Y0FDbEUsSUFBSSxDQUFDckgsZUFBZSxDQUFDaUIsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ3V0QixhQUFhLENBQUM0RSxVQUFVLENBQUNueUIsS0FBSyxHQUFHLEtBQUs7Y0FBQyxPQUFBczBCLFNBQUEsQ0FBQWhiLE1BQUE7WUFBQTtjQU1oRCxJQUFJLENBQUMrWSxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7Y0FDckMsSUFBSSxDQUFDakYsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNxSixRQUFRO2NBQ3hELElBQUksQ0FBQzFILGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3p1QixLQUFLLEdBQUcsSUFBSTtjQUVuQzBLLEdBQUcsR0FBRyxJQUFJLENBQUNvb0IsTUFBTSxDQUFDcnBCLEtBQUssQ0FBQztjQUU5QixJQUFJLENBQUMyakIsZUFBZSxDQUFDd0UsV0FBVyxDQUFDNXdCLEdBQUcsQ0FDbEMsSUFBSSxDQUFDb3NCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDM0csU0FBUyxDQUFDLFVBQUEyRyxLQUFLLEVBQUk7Z0JBQzVDLElBQUlBLEtBQUssS0FBS3BDLHNEQUFZLENBQUNubUIsS0FBSyxJQUFJdW9CLEtBQUssS0FBS3BDLHNEQUFZLENBQUNzSixVQUFVLEVBQUU7a0JBQ3JFM0ksNkRBQVMsQ0FBQzRJLDBCQUEwQixDQUFDdHFCLEdBQUcsQ0FBQztnQkFDM0M7Y0FDRixDQUFDLENBQ0gsQ0FBQztjQUVLeXBCLDJCQUFnRCxHQUFHLFNBQW5EQSwyQkFBZ0RBLENBQUE7Z0JBQUEsT0FBUyxJQUFJdlosT0FBTyxDQUFDLFVBQUMwQixPQUFPLEVBQVc7a0JBQzVGO2tCQUNBNlcsTUFBSSxDQUFDNUYsYUFBYSxDQUFDNEUsVUFBVSxDQUFDbnlCLEtBQUssR0FBRyxLQUFLO2tCQUUzQyxPQUFPc2MsT0FBTyxDQUFDNlcsTUFBSSxDQUFDOEIsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDLENBQUM7Y0FBQTtjQUNJYixZQUFZLEdBQUdqSSxpRUFBYSxDQUFDK0ksTUFBTSxDQUFDenJCLEtBQUssRUFBRSxJQUFJLENBQUMyakIsZUFBZSxFQUFFLElBQUksQ0FBQ0Msc0JBQXNCLEVBQUUsSUFBSSxDQUFDQyx1QkFBdUIsRUFBRTZHLDJCQUEyQixDQUFDO2NBQUEsSUFFekpDLFlBQVk7Z0JBQUFFLFNBQUEsQ0FBQXZiLElBQUE7Z0JBQUE7Y0FBQTtjQUNmLElBQUksQ0FBQ3dVLGFBQWEsQ0FBQzRFLFVBQVUsQ0FBQ255QixLQUFLLEdBQUcsS0FBSztjQUFDLE9BQUFzMEIsU0FBQSxDQUFBaGIsTUFBQTtZQUFBO2NBQUEsT0FBQWdiLFNBQUEsQ0FBQWhiLE1BQUEsV0FLdkM4YSxZQUFZLENBQUNoRCxLQUFLLENBQ3ZCMW1CLEdBQUcsRUFDSGpCLEtBQUssRUFDTDJwQixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDYiw2QkFBNkIsQ0FBQzFlLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM3Q29HLElBQUksQ0FBQyxZQUFNO2dCQUNWa1osTUFBSSxDQUFDL0YsZUFBZSxDQUFDcUIsT0FBTyxDQUFDenVCLEtBQUssR0FBRyxLQUFLO2NBQzVDLENBQUMsQ0FBQyxDQUNEdWEsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7Z0JBQ1ZpcEIsbUJBQW1CLENBQUM1cUIsSUFBSSxDQUFDLENBQUM7Z0JBRTFCMnFCLE1BQUksQ0FBQy9GLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQ3h2QixLQUFLLEVBQUU7Z0JBRXpDbXpCLE1BQUksQ0FBQy9GLGVBQWUsQ0FBQ21CLE1BQU0sQ0FBQ3Z1QixLQUFLLEdBQUcsS0FBSztnQkFFekNtekIsTUFBSSxDQUFDZCxnQkFBZ0IsQ0FBQyxtQ0FBbUMsQ0FBQztnQkFFMURjLE1BQUksQ0FBQy9GLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssR0FBR3lyQixzREFBWSxDQUFDMEosZ0JBQWdCO2dCQUVoRWhDLE1BQUksQ0FBQ2pxQixPQUFPLENBQUNTLEtBQUssQ0FBQyx5QkFBeUIsRUFBRVEsQ0FBQyxDQUFDO2NBQ2xELENBQUMsQ0FBQyxDQUNEaXJCLE9BQU8sQ0FBQyxZQUFNO2dCQUNiakMsTUFBSSxDQUFDNUYsYUFBYSxDQUFDNEUsVUFBVSxDQUFDbnlCLEtBQUssR0FBRyxLQUFLO2dCQUUzQyxJQUFJbXpCLE1BQUksQ0FBQy9GLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssS0FBS3lyQixzREFBWSxDQUFDa0YsT0FBTyxJQUFJLENBQUMvb0IsNENBQUcsQ0FBQ3l0Qix1QkFBdUIsRUFBRTtrQkFDN0Y7Z0JBQ0Y7Z0JBRUEsSUFBTUMsU0FBUyxHQUFHenZCLFVBQVUsQ0FBQyxZQUFNO2tCQUNqQyxJQUFNc1MsT0FBTyxHQUFHZ2IsTUFBSSxDQUFDOEIsbUJBQW1CLENBQUMsQ0FBQyxDQUN2QzFhLEtBQUssQ0FBQyxVQUFBcFEsQ0FBQyxFQUFJO29CQUNWZ3BCLE1BQUksQ0FBQ2pxQixPQUFPLENBQUNTLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRVEsQ0FBQyxDQUFDO2tCQUN6RCxDQUFDLENBQUM7Z0JBQ04sQ0FBQyxFQUFFZ3BCLE1BQUksQ0FBQ29DLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFFM0JwQyxNQUFJLENBQUMvRixlQUFlLENBQUN3RSxXQUFXLENBQUM1d0IsR0FBRyxDQUFDLElBQUloQyx5REFBVSxDQUFDLFlBQU07a0JBQ3hEOGhCLFlBQVksQ0FBQ3dVLFNBQVMsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLENBQUM7Y0FDTCxDQUFDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQWhCLFNBQUEsQ0FBQTlhLElBQUE7VUFBQTtRQUFBLEdBQUEwWixRQUFBO01BQUEsQ0FDTDtNQUFBLFNBbk5hRixZQUFZQSxDQUFBO1FBQUEsT0FBQUMsYUFBQSxDQUFBdlosS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBWm1pQixZQUFZO0lBQUE7RUFBQTtJQUFBbHpCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUF3MUIsaUJBQUEsR0FBQW5kLDZJQUFBLGVBQUFDLDJJQUFBLENBcU4xQixTQUFBbWQsU0FBQTtRQUFBLElBQUF0ZCxPQUFBO1FBQUEsT0FBQUcsMklBQUEsVUFBQW9kLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBN2MsSUFBQSxHQUFBNmMsU0FBQSxDQUFBNWMsSUFBQTtZQUFBO2NBQUEsS0FDTSxJQUFJLENBQUN3VSxhQUFhLENBQUNzRixVQUFVO2dCQUFBOEMsU0FBQSxDQUFBNWMsSUFBQTtnQkFBQTtjQUFBO2NBQUEsTUFDekIsSUFBSXpULEtBQUssQ0FBQyw4QkFBOEIsQ0FBQztZQUFBO2NBQUEsS0FHN0MsSUFBSSxDQUFDK25CLHNCQUFzQixDQUFDM04sV0FBVyxDQUFDMWYsS0FBSztnQkFBQTIxQixTQUFBLENBQUE1YyxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBNGMsU0FBQSxDQUFBcmMsTUFBQSxXQUN4QyxJQUFJLENBQUNpWiw2QkFBNkIsQ0FBQyxJQUFJLENBQUNsRixzQkFBc0IsQ0FBQzNOLFdBQVcsQ0FBQzFmLEtBQUssQ0FBQztZQUFBO2NBRzFGLElBQUksSUFBSSxDQUFDbXRCLGFBQWEsQ0FBQzFqQixLQUFLLENBQUN6SixLQUFLLEVBQUU7Z0JBQzVCbVksT0FBTyxHQUFHLElBQUksQ0FBQ2laLEtBQUssQ0FBQyxDQUFDO2NBQzlCO1lBQUM7WUFBQTtjQUFBLE9BQUF1RSxTQUFBLENBQUFuYyxJQUFBO1VBQUE7UUFBQSxHQUFBaWMsUUFBQTtNQUFBLENBQ0Y7TUFBQSxTQVphaEYsZ0JBQWdCQSxDQUFBO1FBQUEsT0FBQStFLGlCQUFBLENBQUE5YixLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFoQjRmLGdCQUFnQjtJQUFBO0VBQUE7SUFBQTN3QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBNDFCLEtBQUEsR0FBQXZkLDZJQUFBLGVBQUFDLDJJQUFBLENBYzlCLFNBQUF1ZCxTQUFBO1FBQUEsSUFBQW5XLFdBQUE7UUFBQSxPQUFBcEgsMklBQUEsVUFBQXdkLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBamQsSUFBQSxHQUFBaWQsU0FBQSxDQUFBaGQsSUFBQTtZQUFBO2NBQ1EyRyxXQUFXLEdBQUcsSUFBSSxDQUFDMk4sc0JBQXNCLENBQUMzTixXQUFXLENBQUMxZixLQUFLO2NBQUEsSUFFNUQwZixXQUFXO2dCQUFBcVcsU0FBQSxDQUFBaGQsSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWdkLFNBQUEsQ0FBQXpjLE1BQUEsV0FDUCxJQUFJLENBQUM4WCxLQUFLLENBQUMsQ0FBQztZQUFBO2NBQUEsT0FBQTJFLFNBQUEsQ0FBQXpjLE1BQUEsV0FHZCxJQUFJLENBQUNpWiw2QkFBNkIsQ0FBQzdTLFdBQVcsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBcVcsU0FBQSxDQUFBdmMsSUFBQTtVQUFBO1FBQUEsR0FBQXFjLFFBQUE7TUFBQSxDQUN2RDtNQUFBLFNBUllHLElBQUlBLENBQUE7UUFBQSxPQUFBSixLQUFBLENBQUFsYyxLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFKbWxCLElBQUk7SUFBQTtFQUFBO0lBQUFsMkIsR0FBQTtJQUFBRSxLQUFBLEVBVWpCLFNBQVF1MUIsZ0JBQWdCQSxDQUFBLEVBQVc7TUFDakMsUUFBUSxJQUFJLENBQUNuSSxlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLO1FBQ3RDLEtBQUt5ckIsc0RBQVksQ0FBQ3dLLE9BQU87UUFDekIsS0FBS3hLLHNEQUFZLENBQUN5SyxPQUFPO1VBQ3ZCLE9BQU8zSixvQ0FBb0M7UUFDN0MsS0FBS2Qsc0RBQVksQ0FBQ25tQixLQUFLO1FBQ3ZCLEtBQUttbUIsc0RBQVksQ0FBQ3NKLFVBQVU7UUFDNUIsS0FBS3RKLHNEQUFZLENBQUM4SSxZQUFZO1FBQzlCLEtBQUs5SSxzREFBWSxDQUFDMEssYUFBYTtRQUMvQixLQUFLMUssc0RBQVksQ0FBQzJLLFVBQVU7UUFDNUIsS0FBSzNLLHNEQUFZLENBQUMrRSxPQUFPO1FBQ3pCLEtBQUsvRSxzREFBWSxDQUFDcUosUUFBUTtRQUMxQixLQUFLckosc0RBQVksQ0FBQ2tGLE9BQU87UUFDekIsS0FBS2xGLHNEQUFZLENBQUM0SyxNQUFNO1FBQ3hCLEtBQUs1SyxzREFBWSxDQUFDNkssWUFBWTtRQUM5QixLQUFLN0ssc0RBQVksQ0FBQ21KLGtCQUFrQjtRQUNwQyxLQUFLbkosc0RBQVksQ0FBQ2dKLGtCQUFrQjtRQUNwQyxLQUFLaEosc0RBQVksQ0FBQzhLLDJCQUEyQjtRQUM3QyxLQUFLOUssc0RBQVksQ0FBQytLLGVBQWU7UUFDakMsS0FBSy9LLHNEQUFZLENBQUMwSixnQkFBZ0I7VUFDaEM7VUFDQSxPQUFPLElBQUksQ0FBQzFkLG1CQUFtQixDQUFDNkMsMkNBQTJDLENBQUMsSUFBSSxDQUFDOFMsZUFBZSxDQUFDb0MsWUFBWSxDQUFDeHZCLEtBQUssQ0FBQztRQUN0SDtVQUNFa1Asb0VBQWlCLENBQUMsSUFBSSxDQUFDa2UsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxDQUFDO01BQ3ZEO0lBQ0Y7RUFBQztJQUFBRixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBeTJCLG9CQUFBLEdBQUFwZSw2SUFBQSxlQUFBQywySUFBQSxDQUVELFNBQUFvZSxTQUFBO1FBQUEsT0FBQXBlLDJJQUFBLFVBQUFxZSxVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTlkLElBQUEsR0FBQThkLFNBQUEsQ0FBQTdkLElBQUE7WUFBQTtjQUFBNmQsU0FBQSxDQUFBclksRUFBQSxHQUNVLElBQUksQ0FBQzZPLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUs7Y0FBQTQyQixTQUFBLENBQUE3ZCxJQUFBLEdBQUE2ZCxTQUFBLENBQUFyWSxFQUFBLEtBQ2pDa04sc0RBQVksQ0FBQ25tQixLQUFLLE9BQUFzeEIsU0FBQSxDQUFBclksRUFBQSxLQUNsQmtOLHNEQUFZLENBQUM2SyxZQUFZLE9BQUFNLFNBQUEsQ0FBQXJZLEVBQUEsS0FDekJrTixzREFBWSxDQUFDd0ssT0FBTyxPQUFBVyxTQUFBLENBQUFyWSxFQUFBLEtBQ3BCa04sc0RBQVksQ0FBQ3lLLE9BQU8sT0FBQVUsU0FBQSxDQUFBclksRUFBQSxLQUNwQmtOLHNEQUFZLENBQUNzSixVQUFVLE9BQUE2QixTQUFBLENBQUFyWSxFQUFBLEtBQ3ZCa04sc0RBQVksQ0FBQzhLLDJCQUEyQixPQUFBSyxTQUFBLENBQUFyWSxFQUFBLEtBQ3hDa04sc0RBQVksQ0FBQytLLGVBQWUsT0FBQUksU0FBQSxDQUFBclksRUFBQSxLQUM1QmtOLHNEQUFZLENBQUMwSixnQkFBZ0IsT0FBQXlCLFNBQUEsQ0FBQXJZLEVBQUEsS0FJN0JrTixzREFBWSxDQUFDOEksWUFBWSxPQUFBcUMsU0FBQSxDQUFBclksRUFBQSxLQUl6QmtOLHNEQUFZLENBQUMwSyxhQUFhLE9BQUFTLFNBQUEsQ0FBQXJZLEVBQUEsS0FJMUJrTixzREFBWSxDQUFDMkssVUFBVSxPQUFBUSxTQUFBLENBQUFyWSxFQUFBLEtBSXZCa04sc0RBQVksQ0FBQytFLE9BQU8sUUFBQW9HLFNBQUEsQ0FBQXJZLEVBQUEsS0FJcEJrTixzREFBWSxDQUFDa0YsT0FBTyxRQUFBaUcsU0FBQSxDQUFBclksRUFBQSxLQUlwQmtOLHNEQUFZLENBQUM0SyxNQUFNLFFBQUFPLFNBQUEsQ0FBQXJZLEVBQUEsS0FJbkJrTixzREFBWSxDQUFDcUosUUFBUSxRQUFBOEIsU0FBQSxDQUFBclksRUFBQSxLQUlyQmtOLHNEQUFZLENBQUNtSixrQkFBa0IsUUFBQWdDLFNBQUEsQ0FBQXJZLEVBQUEsS0FJL0JrTixzREFBWSxDQUFDZ0osa0JBQWtCO2NBQUE7WUFBQTtjQW5DbEMsSUFBSSxDQUFDdnJCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLElBQUksQ0FBQ2lrQixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEVBQUV5ckIsc0RBQVksQ0FBQyxJQUFJLENBQUMyQixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLENBQUMsQ0FBQztjQUFDLE9BQUE0MkIsU0FBQSxDQUFBdGQsTUFBQTtZQUFBO2NBSWhKLElBQUksQ0FBQ3BRLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGlHQUFpRyxDQUFDO2NBQUMsT0FBQXl0QixTQUFBLENBQUF0ZCxNQUFBO1lBQUE7Y0FJckgsSUFBSSxDQUFDcFEsT0FBTyxDQUFDQyxJQUFJLENBQUMsbUdBQW1HLENBQUM7Y0FBQyxPQUFBeXRCLFNBQUEsQ0FBQXRkLE1BQUE7WUFBQTtjQUl2SCxJQUFJLENBQUNwUSxPQUFPLENBQUNDLElBQUksQ0FBQyxnR0FBZ0csQ0FBQztjQUFDLE9BQUF5dEIsU0FBQSxDQUFBdGQsTUFBQTtZQUFBO2NBSXBILElBQUksQ0FBQ3BRLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDhDQUE4QyxDQUFDO2NBQUMsT0FBQXl0QixTQUFBLENBQUF0ZCxNQUFBO1lBQUE7Y0FJbEUsSUFBSSxDQUFDcFEsT0FBTyxDQUFDQyxJQUFJLENBQUMsNkNBQTZDLENBQUM7Y0FBQyxPQUFBeXRCLFNBQUEsQ0FBQXRkLE1BQUE7WUFBQTtjQUlqRSxJQUFJLENBQUNwUSxPQUFPLENBQUNDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQztjQUFDLE9BQUF5dEIsU0FBQSxDQUFBdGQsTUFBQTtZQUFBO2NBSXRGLElBQUksQ0FBQ3BRLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLHNEQUFzRCxDQUFDO2NBQUMsT0FBQXl0QixTQUFBLENBQUF0ZCxNQUFBO1lBQUE7Y0FJMUUsSUFBSSxDQUFDcFEsT0FBTyxDQUFDQyxJQUFJLENBQUMseUVBQXlFLENBQUM7Y0FBQyxPQUFBeXRCLFNBQUEsQ0FBQXRkLE1BQUE7WUFBQTtjQUk3RixJQUFJLENBQUNwUSxPQUFPLENBQUNDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQztjQUFDLE9BQUF5dEIsU0FBQSxDQUFBdGQsTUFBQTtZQUFBO2NBSTdGcEssb0VBQWlCLENBQUMsSUFBSSxDQUFDa2UsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxDQUFDO1lBQUM7Y0FBQSxPQUFBNDJCLFNBQUEsQ0FBQXRkLE1BQUEsV0FHakQsSUFBSSxDQUFDOFgsS0FBSyxDQUFDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQXdGLFNBQUEsQ0FBQXBkLElBQUE7VUFBQTtRQUFBLEdBQUFrZCxRQUFBO01BQUEsQ0FDcEI7TUFBQSxTQXREYXpCLG1CQUFtQkEsQ0FBQTtRQUFBLE9BQUF3QixvQkFBQSxDQUFBL2MsS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBbkJva0IsbUJBQW1CO0lBQUE7RUFBQTtJQUFBbjFCLEdBQUE7SUFBQUUsS0FBQSxFQXdEakMsU0FBUXF5QixnQkFBZ0JBLENBQUEsRUFBd0Q7TUFBQSxJQUFBd0UsTUFBQTtNQUFBLElBQXZEdmIsTUFBYyxHQUFBekssU0FBQSxDQUFBOUcsTUFBQSxRQUFBOEcsU0FBQSxRQUFBckssU0FBQSxHQUFBcUssU0FBQSxNQUFHd2IsOEJBQThCO01BQ3RFLElBQUksQ0FBQ2UsZUFBZSxDQUFDd0UsV0FBVyxDQUFDenhCLE9BQU8sQ0FBQyxDQUFDO01BRTFDLElBQU1vZCxjQUFjLEdBQUcsSUFBSSxDQUFDOFAsc0JBQXNCLENBQUM5UCxjQUFjLENBQUN2ZCxLQUFLO01BRXZFLElBQUl1ZCxjQUFjLEVBQUU7UUFDbEIsSUFBSSxDQUFDOFAsc0JBQXNCLENBQUM5UCxjQUFjLENBQUN2ZCxLQUFLLEdBQUcsSUFBSTtRQUN2RHVkLGNBQWMsQ0FBQ3VKLEtBQUssQ0FBQyxDQUFDO1FBQ3RCdkosY0FBYyxDQUFDcGQsT0FBTyxDQUFDLENBQUM7UUFFeEIsSUFBSXlILDRDQUFHLENBQUNrdkIsK0JBQStCLElBQUksRUFBRTF4Qix1RUFBaUIsQ0FBQzVDLFFBQVEsSUFBSW9GLDRDQUFHLENBQUNtdkIsb0NBQW9DLENBQUMsRUFBRTtVQUNwSDF4QixxRUFBdUIsQ0FBQ0Usc0JBQXNCLENBQUMsQ0FBQztRQUNsRDtNQUNGO01BRUEsSUFBSSxJQUFJLENBQUM4bkIsc0JBQXNCLENBQUMzTixXQUFXLENBQUMxZixLQUFLLEVBQUU7UUFDakQsSUFBSSxDQUFDcXRCLHNCQUFzQixDQUFDM04sV0FBVyxDQUFDMWYsS0FBSyxDQUFDK2YsU0FBUyxDQUFDLENBQUMsQ0FBQzNTLE9BQU8sQ0FBQyxVQUFBNlMsS0FBSztVQUFBLE9BQUlBLEtBQUssQ0FBQ3pHLElBQUksQ0FBQyxDQUFDO1FBQUEsRUFBQztRQUN4RixJQUFJLENBQUM2VCxzQkFBc0IsQ0FBQzNOLFdBQVcsQ0FBQzFmLEtBQUssR0FBRyxJQUFJO01BQ3REO01BRUEsSUFBSSxDQUFDb3RCLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDanVCLEtBQUssR0FBRyxLQUFLO01BQzdDLElBQUksQ0FBQ290QixlQUFlLENBQUNXLFNBQVMsQ0FBQy90QixLQUFLLEdBQUcsS0FBSztNQUM1QyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDdUIsT0FBTyxDQUFDM3VCLEtBQUssR0FBRyxLQUFLO01BQzFDLElBQUksQ0FBQ290QixlQUFlLENBQUMyQixPQUFPLENBQUMvdUIsS0FBSyxHQUFHLElBQUk7TUFDekMsSUFBSSxDQUFDb3RCLGVBQWUsQ0FBQ3lCLE9BQU8sQ0FBQzd1QixLQUFLLEdBQUcsS0FBSztNQUUxQyxJQUFJLElBQUksQ0FBQ290QixlQUFlLENBQUN3QyxNQUFNLENBQUM1dkIsS0FBSyxJQUFJLElBQUksQ0FBQ290QixlQUFlLENBQUNzQyxRQUFRLENBQUMxdkIsS0FBSyxFQUFFO1FBQzVFLElBQU1tWSxPQUFPLEdBQUcsSUFBSSxDQUFDaVYsZUFBZSxDQUFDc0MsUUFBUSxDQUFDMXZCLEtBQUssQ0FBQ2czQixhQUFhLENBQUMsSUFBSSxDQUFDNUosZUFBZSxDQUFDd0MsTUFBTSxDQUFDNXZCLEtBQUssRUFBRXNiLE1BQU0sQ0FBQyxDQUN6R3JCLElBQUksQ0FBQyxVQUFBZ2QsS0FBQSxFQUFjO1VBQUEsSUFBWnhjLE1BQU0sR0FBQXdjLEtBQUEsQ0FBTnhjLE1BQU07VUFDWixJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25Cb2MsTUFBSSxDQUFDM3RCLE9BQU8sQ0FBQ3FJLElBQUksQ0FBQyxnREFBZ0QsRUFBRXNsQixNQUFJLENBQUN4dUIsUUFBUSxFQUFFb1MsTUFBTSxDQUFDO1lBRTFGO1VBQ0Y7VUFFQW9jLE1BQUksQ0FBQzN0QixPQUFPLENBQUNDLElBQUksQ0FBQyx3Q0FBd0MsRUFBRTB0QixNQUFJLENBQUN4dUIsUUFBUSxFQUFFb1MsTUFBTSxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUNERixLQUFLLENBQUMsVUFBQXBRLENBQUMsRUFBSTtVQUNWMHNCLE1BQUksQ0FBQzN0QixPQUFPLENBQUNTLEtBQUssQ0FBQywrQkFBK0IsRUFBRWt0QixNQUFJLENBQUN4dUIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQztNQUNOO01BRUEsSUFBSSxJQUFJLENBQUNzaUIsWUFBWSxJQUFJLElBQUksQ0FBQ0EsWUFBWSxDQUFDNEQsT0FBTyxFQUFFO1FBQ2xELElBQUksQ0FBQzVELFlBQVksQ0FBQzRELE9BQU8sQ0FBQ25hLFNBQVMsR0FBRyxFQUFFO1FBQ3hDLElBQUksQ0FBQ3VXLFlBQVksQ0FBQzRELE9BQU8sQ0FBQ2hvQixRQUFRLEdBQUcsRUFBRTtNQUN6QztNQUVBLElBQUksQ0FBQytrQixlQUFlLENBQUN3QyxNQUFNLENBQUM1dkIsS0FBSyxHQUFHLElBQUk7TUFDeEMsSUFBSSxDQUFDb3RCLGVBQWUsQ0FBQ3NDLFFBQVEsQ0FBQzF2QixLQUFLLEdBQUcsSUFBSTtNQUMxQyxJQUFJLENBQUNxdEIsc0JBQXNCLENBQUM2SiwrQkFBK0IsR0FBRyxDQUFDO0lBQ2pFO0VBQUM7SUFBQXAzQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBbTNCLDhCQUFBLEdBQUE5ZSw2SUFBQSxlQUFBQywySUFBQSxDQUVELFNBQUE4ZSxTQUE0QzFYLFdBQXdCO1FBQUEsSUFBQTJYLE1BQUE7UUFBQSxJQUFBNUssWUFBQSxFQUFBNkssV0FBQTtRQUFBLE9BQUFoZiwySUFBQSxVQUFBaWYsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUExZSxJQUFBLEdBQUEwZSxTQUFBLENBQUF6ZSxJQUFBO1lBQUE7Y0FDNUQwVCxZQUFZLEdBQUcsSUFBSSxDQUFDVyxlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLO2NBQUEsSUFFdkR5c0IsWUFBWTtnQkFBQStLLFNBQUEsQ0FBQXplLElBQUE7Z0JBQUE7Y0FBQTtjQUNmLElBQUksQ0FBQ3FVLGVBQWUsQ0FBQ1csU0FBUyxDQUFDL3RCLEtBQUssR0FBRyxLQUFLO2NBQzVDLElBQUksQ0FBQ290QixlQUFlLENBQUNhLFVBQVUsQ0FBQ2p1QixLQUFLLEdBQUcsS0FBSztjQUM3QyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDcUIsT0FBTyxDQUFDenVCLEtBQUssR0FBRyxLQUFLO2NBQzFDLElBQUksQ0FBQ290QixlQUFlLENBQUN1QixPQUFPLENBQUMzdUIsS0FBSyxHQUFHLEtBQUs7Y0FDMUMsSUFBSSxDQUFDb3RCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssR0FBR3lyQixzREFBWSxDQUFDK0UsT0FBTztjQUFDLE9BQUFnSCxTQUFBLENBQUFsZSxNQUFBO1lBQUE7Y0FLMUQsSUFBSSxDQUFDLElBQUksQ0FBQ2dVLHVCQUF1QixDQUFDUiwyQkFBMkIsQ0FBQzlzQixLQUFLLEVBQUU7Z0JBQ25FeXNCLFlBQVksQ0FBQzZFLFNBQVMsR0FBRzVSLFdBQVc7Y0FDdEM7Y0FFTTRYLFdBQVcsR0FBRzdLLFlBQVksQ0FBQ3VKLElBQUksQ0FBQyxDQUFDO2NBQUEsTUFFbkNzQixXQUFXLEtBQUs5d0IsU0FBUztnQkFBQWd4QixTQUFBLENBQUF6ZSxJQUFBO2dCQUFBO2NBQUE7Y0FDM0IsSUFBSSxDQUFDcVUsZUFBZSxDQUFDVyxTQUFTLENBQUMvdEIsS0FBSyxHQUFHLEtBQUs7Y0FDNUMsSUFBSSxDQUFDb3RCLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDanVCLEtBQUssR0FBRyxLQUFLO2NBQzdDLElBQUksQ0FBQ290QixlQUFlLENBQUNxQixPQUFPLENBQUN6dUIsS0FBSyxHQUFHLEtBQUs7Y0FDMUMsSUFBSSxDQUFDb3RCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQzN1QixLQUFLLEdBQUcsSUFBSTtjQUN6QyxJQUFJLENBQUNvdEIsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNrRixPQUFPO2NBQUMsT0FBQTZHLFNBQUEsQ0FBQWxlLE1BQUE7WUFBQTtjQUFBLE9BQUFrZSxTQUFBLENBQUFsZSxNQUFBLFdBS25EZ2UsV0FBVyxDQUFDcmQsSUFBSSxDQUFDLFlBQU07Z0JBQzVCb2QsTUFBSSxDQUFDakssZUFBZSxDQUFDVyxTQUFTLENBQUMvdEIsS0FBSyxHQUFHLEtBQUs7Z0JBQzVDcTNCLE1BQUksQ0FBQ2pLLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDanVCLEtBQUssR0FBRyxLQUFLO2dCQUM3Q3EzQixNQUFJLENBQUNqSyxlQUFlLENBQUNxQixPQUFPLENBQUN6dUIsS0FBSyxHQUFHLEtBQUs7Z0JBQzFDcTNCLE1BQUksQ0FBQ2pLLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQzN1QixLQUFLLEdBQUcsSUFBSTtnQkFDekNxM0IsTUFBSSxDQUFDakssZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUNrRixPQUFPO2NBQ3pELENBQUMsQ0FBQyxDQUFDcFcsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7Z0JBQ1osSUFBTXN0QixhQUFhLEdBQUcsQ0FBQyxDQUFDL1gsV0FBVyxDQUFDSyxTQUFTLENBQUMsQ0FBQyxDQUFDMlgsTUFBTSxDQUFDLFVBQUF6WCxLQUFLLEVBQUk7a0JBQzlELE9BQU9BLEtBQUssQ0FBQ3BJLElBQUksS0FBSyxPQUFPO2dCQUMvQixDQUFDLENBQUMsQ0FBQzlOLE1BQU07Z0JBQ1QsSUFBTTR0QixzQ0FBc0MsR0FBRyxDQUFDL3ZCLDRDQUFHLENBQUNnakIsbUNBQW1DO2dCQUV2RixJQUFJK00sc0NBQXNDLElBQUlsTCxZQUFZLENBQUNpRyxLQUFLLElBQUksQ0FBQytFLGFBQWEsRUFBRTtrQkFDbEZoTCxZQUFZLENBQUM2RSxTQUFTLEdBQUcsSUFBSTtrQkFDN0IrRixNQUFJLENBQUNqSyxlQUFlLENBQUNXLFNBQVMsQ0FBQy90QixLQUFLLEdBQUcsS0FBSztrQkFDNUNxM0IsTUFBSSxDQUFDakssZUFBZSxDQUFDYSxVQUFVLENBQUNqdUIsS0FBSyxHQUFHLElBQUk7a0JBQzVDcTNCLE1BQUksQ0FBQ2pLLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3p1QixLQUFLLEdBQUcsS0FBSztrQkFDMUNxM0IsTUFBSSxDQUFDakssZUFBZSxDQUFDdUIsT0FBTyxDQUFDM3VCLEtBQUssR0FBRyxLQUFLO2tCQUMxQ3EzQixNQUFJLENBQUNqSyxlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsc0RBQVksQ0FBQzRLLE1BQU07a0JBRXRELElBQUlzQixzQ0FBc0MsRUFBRTtvQkFDMUNOLE1BQUksQ0FBQ251QixPQUFPLENBQUNDLElBQUksQ0FBQyxtRUFBbUUsRUFBRWt1QixNQUFJLENBQUNodkIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO29CQUV4RztrQkFDRjtrQkFFQSxJQUFJc3RCLGFBQWEsRUFBRTtvQkFDakJKLE1BQUksQ0FBQ251QixPQUFPLENBQUNDLElBQUksQ0FBQyx5REFBeUQsRUFBRWt1QixNQUFJLENBQUNodkIsUUFBUSxFQUFFOEIsQ0FBQyxDQUFDO29CQUU5RjtrQkFDRjtrQkFFQWt0QixNQUFJLENBQUNudUIsT0FBTyxDQUFDQyxJQUFJLENBQUMsK0RBQStELEVBQUVrdUIsTUFBSSxDQUFDaHZCLFFBQVEsRUFBRThCLENBQUMsQ0FBQztrQkFFcEc7Z0JBQ0Y7Z0JBRUFzaUIsWUFBWSxDQUFDaUcsS0FBSyxHQUFHLElBQUk7Z0JBRXpCLE9BQU9qRyxZQUFZLENBQUN1SixJQUFJLENBQUMsQ0FBQyxDQUN2Qi9iLElBQUksQ0FBQyxZQUFNO2tCQUNWb2QsTUFBSSxDQUFDbnVCLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDZFQUE2RSxFQUFFa3VCLE1BQUksQ0FBQ2h2QixRQUFRLENBQUM7a0JBRS9HZ3ZCLE1BQUksQ0FBQ2pLLGVBQWUsQ0FBQ1csU0FBUyxDQUFDL3RCLEtBQUssR0FBRyxJQUFJO2tCQUMzQ3EzQixNQUFJLENBQUNqSyxlQUFlLENBQUNhLFVBQVUsQ0FBQ2p1QixLQUFLLEdBQUcsS0FBSztrQkFDN0NxM0IsTUFBSSxDQUFDakssZUFBZSxDQUFDcUIsT0FBTyxDQUFDenVCLEtBQUssR0FBRyxLQUFLO2tCQUMxQ3EzQixNQUFJLENBQUNqSyxlQUFlLENBQUN1QixPQUFPLENBQUMzdUIsS0FBSyxHQUFHLElBQUk7a0JBQ3pDcTNCLE1BQUksQ0FBQ2pLLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssR0FBR3lyQixzREFBWSxDQUFDa0YsT0FBTztnQkFDekQsQ0FBQyxDQUFDLENBQUNwVyxLQUFLLENBQUMsVUFBQXBRLENBQUMsRUFBSTtrQkFDWnNpQixZQUFZLENBQUNpRyxLQUFLLEdBQUcsS0FBSztrQkFFMUIyRSxNQUFJLENBQUNudUIsT0FBTyxDQUFDQyxJQUFJLENBQUMseURBQXlELEVBQUVrdUIsTUFBSSxDQUFDaHZCLFFBQVEsRUFBRThCLENBQUMsQ0FBQztrQkFFOUZzaUIsWUFBWSxDQUFDNkUsU0FBUyxHQUFHLElBQUk7a0JBQzdCK0YsTUFBSSxDQUFDakssZUFBZSxDQUFDVyxTQUFTLENBQUMvdEIsS0FBSyxHQUFHLEtBQUs7a0JBQzVDcTNCLE1BQUksQ0FBQ2pLLGVBQWUsQ0FBQ2EsVUFBVSxDQUFDanVCLEtBQUssR0FBRyxJQUFJO2tCQUM1Q3EzQixNQUFJLENBQUNqSyxlQUFlLENBQUNxQixPQUFPLENBQUN6dUIsS0FBSyxHQUFHLEtBQUs7a0JBQzFDcTNCLE1BQUksQ0FBQ2pLLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQzN1QixLQUFLLEdBQUcsS0FBSztrQkFDMUNxM0IsTUFBSSxDQUFDakssZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLHNEQUFZLENBQUM0SyxNQUFNO2dCQUN4RCxDQUFDLENBQUM7Y0FDTixDQUFDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQW1CLFNBQUEsQ0FBQWhlLElBQUE7VUFBQTtRQUFBLEdBQUE0ZCxRQUFBO01BQUEsQ0FDSDtNQUFBLFNBMUZhN0UsNkJBQTZCQSxDQUFBbk4sR0FBQTtRQUFBLE9BQUErUiw4QkFBQSxDQUFBemQsS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBN0IwaEIsNkJBQTZCO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7QUNqM0I3QztBQUNBO0FBQ0E7QUFGQSxJQUdLOUcsWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQVpBLFlBQVksQ0FBWkEsWUFBWTtFQUFaQSxZQUFZLENBQVpBLFlBQVk7RUFBWkEsWUFBWSxDQUFaQSxZQUFZO0VBQUEsT0FBWkEsWUFBWTtBQUFBLEVBQVpBLFlBQVk7QUFvQmpCLCtEQUFlQSxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkIzQjtBQUNBO0FBQ0E7QUFDa0Q7QUFHekI7QUFBQSxJQWNKbU0sUUFBUTtFQWlCM0IsU0FBQUEsU0FBQSxFQUFzQjtJQUFBdDRCLDJJQUFBLE9BQUFzNEIsUUFBQTtJQUNwQixNQUFNLElBQUl0eUIsS0FBSyxDQUFDLHlEQUF5RCxDQUFDO0VBQzVFO0VBQUMsT0FBQXpGLHdJQUFBLENBQUErM0IsUUFBQTtJQUFBOTNCLEdBQUE7SUFBQUUsS0FBQSxFQWxCRCxTQUFPNjNCLGFBQWFBLENBQUN4WixPQUE2QixFQUFXO01BQzNELElBQUksQ0FBQ3pXLDRDQUFHLENBQUNrd0IsV0FBVyxDQUFDOTNCLEtBQUssRUFBRTtRQUMxQixNQUFNLElBQUlzRixLQUFLLENBQUMsb0JBQW9CLENBQUM7TUFDdkM7TUFFQSxJQUFNeXlCLGNBQThCLEdBQUc7UUFDckNwTCxTQUFTLEVBQUV0TyxPQUFPLENBQUNzTyxTQUFTO1FBQzVCSSw0QkFBNEIsRUFBRTFPLE9BQU8sQ0FBQzBPLDRCQUE0QjtRQUNsRUMsNEJBQTRCLEVBQUUzTyxPQUFPLENBQUMyTyw0QkFBNEI7UUFDbEVDLHNCQUFzQixFQUFFNU8sT0FBTyxDQUFDNE8sc0JBQXNCO1FBQ3REQyxzQkFBc0IsRUFBRTdPLE9BQU8sQ0FBQzZPO01BQ2xDLENBQUM7TUFFRCxPQUFPLElBQUlWLGdEQUFPLENBQUNuTyxPQUFPLENBQUNvTyxZQUFZLEVBQUVwTyxPQUFPLENBQUM1VSxLQUFLLEVBQUVzdUIsY0FBYyxDQUFDO0lBQ3pFO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkNIO0FBQ0E7QUFDQTtBQUN1QztBQUNhO0FBQ047QUFJckI7QUFDb0M7QUFDTjtBQUd2RCxJQUFNQyxnQkFBZ0IsR0FBRyxDQUFDO0FBQUMsSUFNTm5NLGNBQWM7RUE0QmpDLFNBQUFBLGVBQVl4TixPQUErQixFQUFFO0lBQUEsSUFBQTRaLGtCQUFBO0lBQUEzNEIsMklBQUEsT0FBQXVzQixjQUFBO0lBQUF0c0IsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFDM0MsSUFBSSxDQUFDcXlCLFdBQVcsR0FBRyxJQUFJenlCLDREQUFjLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUM2d0Isa0JBQWtCLEdBQUcsSUFBSTd3Qiw0REFBYyxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDZ3hCLG1CQUFtQixHQUFHLElBQUloeEIsNERBQWMsQ0FBQyxDQUFDO0lBQy9DLElBQUksQ0FBQzJ4QixxQkFBcUIsR0FBRyxJQUFJdHhCLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQ2l0QixZQUFZLEdBQUcsSUFBSXh0QixtREFBTyxDQUFtQixJQUFJLENBQUM7SUFDdkQsSUFBSSxDQUFDNHVCLEtBQUssR0FBRyxJQUFJNXVCLG1EQUFPLENBQWV3c0IsOERBQVksQ0FBQ3FKLFFBQVEsQ0FBQztJQUM3RCxJQUFJLENBQUMvRyxTQUFTLEdBQUcsSUFBSTl1QixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUM1QyxJQUFJLENBQUNndkIsVUFBVSxHQUFHLElBQUlodkIsbURBQU8sQ0FBVSxLQUFLLENBQUM7SUFDN0MsSUFBSSxDQUFDb3ZCLFVBQVUsR0FBRyxJQUFJcHZCLG1EQUFPLENBQVUsSUFBSSxDQUFDO0lBQzVDLElBQUksQ0FBQ3N2QixNQUFNLEdBQUcsSUFBSXR2QixtREFBTyxDQUFVLElBQUksQ0FBQztJQUN4QyxJQUFJLENBQUN3dkIsT0FBTyxHQUFHLElBQUl4dkIsbURBQU8sQ0FBVSxLQUFLLENBQUM7SUFDMUMsSUFBSSxDQUFDMHZCLE9BQU8sR0FBRyxJQUFJMXZCLG1EQUFPLENBQVUsS0FBSyxDQUFDO0lBQzFDLElBQUksQ0FBQzR2QixPQUFPLEdBQUcsSUFBSTV2QixtREFBTyxDQUFVLEtBQUssQ0FBQztJQUMxQyxJQUFJLENBQUM4dkIsT0FBTyxHQUFHLElBQUk5dkIsbURBQU8sQ0FBVSxLQUFLLENBQUM7SUFDMUMsSUFBSSxDQUFDMHRCLFNBQVMsR0FBRyxJQUFJMXRCLG1EQUFPLEVBQUFnNUIsa0JBQUEsR0FBYzVaLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFc08sU0FBUyxjQUFBc0wsa0JBQUEsY0FBQUEsa0JBQUEsR0FBSUQsZ0JBQWdCLENBQUM7SUFDakYsSUFBSSxDQUFDOUksR0FBRyxHQUFHLElBQUlqd0IsbURBQU8sQ0FBYyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDbXdCLFlBQVksR0FBRyxJQUFJbndCLG1EQUFPLENBQWdCLENBQUMsQ0FBQztJQUNqRCxJQUFJLENBQUNxd0IsVUFBVSxHQUFHLElBQUlyd0IsbURBQU8sQ0FBWXVzQix3REFBUyxDQUFDbUcsS0FBSyxDQUFDO0lBQ3pELElBQUksQ0FBQ25DLFlBQVksR0FBRyxJQUFJdndCLG1EQUFPLENBQVMsQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQ3l3QixRQUFRLEdBQUcsSUFBSXp3QixtREFBTyxDQUFXLElBQUksQ0FBQztJQUMzQyxJQUFJLENBQUMyd0IsTUFBTSxHQUFHLElBQUkzd0IsbURBQU8sQ0FBVSxJQUFJLENBQUM7SUFDeEMsSUFBSSxDQUFDc2lCLGFBQWEsR0FBRyxJQUFJdGlCLG1EQUFPLENBQXVCLElBQUksQ0FBQztFQUM5RDtFQUFDLE9BQUFZLHdJQUFBLENBQUFnc0IsY0FBQTtJQUFBL3JCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBdUI7TUFDckIsSUFBTTZ2QixNQUFNLEdBQUcsSUFBSSxDQUFDQSxNQUFNLENBQUM1dkIsS0FBSztNQUVoQyxJQUFJLENBQUM0dkIsTUFBTSxFQUFFO1FBQ1gsT0FBTyxHQUFHO01BQ1o7TUFFQSxPQUFPQSxNQUFNLENBQUN2bkIsUUFBUTtJQUN4QjtFQUFDO0lBQUF2SSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFBazRCLFdBQVdBLENBQUN6ZCxNQUF1QixFQUFRO01BQ3pDLFFBQVFBLE1BQU07UUFDWixLQUFLLElBQUk7VUFDUDtRQUNGLEtBQUssY0FBYztRQUNuQixLQUFLLGdCQUFnQjtRQUNyQixLQUFLLGFBQWE7VUFDaEIsSUFBSSxDQUFDNFQsVUFBVSxDQUFDcnVCLEtBQUssR0FBRyxLQUFLOztRQUUvQjtRQUNBLEtBQUssV0FBVztRQUNoQixLQUFLLFdBQVc7VUFDZCxJQUFJLENBQUN3dkIsWUFBWSxDQUFDeHZCLEtBQUssR0FBRyxDQUFDO1VBQzNCLElBQUksQ0FBQzJ1QixPQUFPLENBQUMzdUIsS0FBSyxHQUFHLEtBQUs7VUFDMUIsSUFBSSxDQUFDNnVCLE9BQU8sQ0FBQzd1QixLQUFLLEdBQUcsSUFBSTtVQUN6QixJQUFJLENBQUMrdUIsT0FBTyxDQUFDL3VCLEtBQUssR0FBRyxLQUFLO1VBQzFCLElBQUksQ0FBQzR2QixNQUFNLENBQUM1dkIsS0FBSyxHQUFHLElBQUk7VUFFeEI7UUFDRjtVQUNFLElBQUksQ0FBQ3d2QixZQUFZLENBQUN4dkIsS0FBSyxFQUFFO1VBQ3pCLElBQUksQ0FBQzJ1QixPQUFPLENBQUMzdUIsS0FBSyxHQUFHLEtBQUs7VUFDMUIsSUFBSSxDQUFDNnVCLE9BQU8sQ0FBQzd1QixLQUFLLEdBQUcsSUFBSTtVQUN6QixJQUFJLENBQUMrdUIsT0FBTyxDQUFDL3VCLEtBQUssR0FBRyxLQUFLO1VBQzFCLElBQUksQ0FBQzR2QixNQUFNLENBQUM1dkIsS0FBSyxHQUFHLElBQUk7VUFFeEI7TUFDSjtJQUNGO0VBQUM7SUFBQUYsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQW00Qiw2Q0FBNkNBLENBQUEsRUFBUztNQUNwRCxJQUFJLElBQUksQ0FBQzFMLFlBQVksQ0FBQ3pzQixLQUFLLElBQUksSUFBSSxDQUFDeXNCLFlBQVksQ0FBQ3pzQixLQUFLLENBQUNxd0IsT0FBTyxFQUFFO1FBQzlELElBQUksQ0FBQzVELFlBQVksQ0FBQ3pzQixLQUFLLENBQUNxd0IsT0FBTyxDQUFDbmEsU0FBUyxHQUFHdE8sNENBQUcsQ0FBQytPLGVBQWU7UUFDL0QsSUFBSSxDQUFDOFYsWUFBWSxDQUFDenNCLEtBQUssQ0FBQ3F3QixPQUFPLENBQUNob0IsUUFBUSxHQUFHLElBQUksQ0FBQ0EsUUFBUTtNQUMxRDtJQUNGO0VBQUM7SUFBQXZJLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFvNEIsaUNBQWlDQSxDQUFDM2QsTUFBdUIsRUFBZ0I7TUFDdkUsUUFBUUEsTUFBTTtRQUNaLEtBQUssSUFBSTtVQUNQLE9BQU9nUiw4REFBWSxDQUFDcUosUUFBUTtRQUM5QixLQUFLLFdBQVc7UUFDaEIsS0FBSyxXQUFXO1VBQ2QsT0FBT3JKLDhEQUFZLENBQUN3SyxPQUFPO1FBQzdCLEtBQUssZ0JBQWdCO1VBQ25CLE9BQU94Syw4REFBWSxDQUFDMEssYUFBYTtRQUNuQyxLQUFLLGFBQWE7VUFDaEIsT0FBTzFLLDhEQUFZLENBQUMySyxVQUFVO1FBQ2hDLEtBQUssY0FBYztVQUNqQixPQUFPM0ssOERBQVksQ0FBQzhJLFlBQVk7UUFDbEMsS0FBSyxVQUFVO1FBQ2YsS0FBSyxjQUFjO1FBQ25CLEtBQUssU0FBUztVQUNaLE9BQU85SSw4REFBWSxDQUFDc0osVUFBVTtRQUNoQyxLQUFLLGVBQWU7VUFDbEIsT0FBT3RKLDhEQUFZLENBQUNnSixrQkFBa0I7UUFDeEMsS0FBSyx5QkFBeUI7VUFDNUIsT0FBT2hKLDhEQUFZLENBQUM4SywyQkFBMkI7UUFDakQsS0FBSyxRQUFRO1VBQ1gsT0FBTzlLLDhEQUFZLENBQUNubUIsS0FBSztRQUMzQjtVQUNFNEosbUVBQWlCLENBQUN1TCxNQUFNLENBQUM7TUFDN0I7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsSkg7QUFDQTtBQUNBO0FBQ3VDO0FBQUEsSUFHbEJ3UixxQkFBcUIsZ0JBQUFwc0Isd0lBQUEsQ0FLeEMsU0FBQW9zQixzQkFBQSxFQUFjO0VBQUEzc0IsMklBQUEsT0FBQTJzQixxQkFBQTtFQUFBMXNCLDJJQUFBO0VBQUFBLDJJQUFBO0VBQUFBLDJJQUFBO0VBQ1osSUFBSSxDQUFDbWdCLFdBQVcsR0FBRyxJQUFJemdCLG1EQUFPLENBQWMsSUFBSSxDQUFDO0VBQ2pELElBQUksQ0FBQ3NlLGNBQWMsR0FBRyxJQUFJdGUsbURBQU8sQ0FBa0IsSUFBSSxDQUFDO0VBQ3hELElBQUksQ0FBQ2k0QiwrQkFBK0IsR0FBRyxDQUFDO0FBQzFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmSDtBQUNBO0FBQ0E7QUFDdUM7QUFBQSxJQUVsQmhMLFlBQVksZ0JBQUFyc0Isd0lBQUEsQ0FJL0IsU0FBQXFzQixhQUFBLEVBQWM7RUFBQTVzQiwySUFBQSxPQUFBNHNCLFlBQUE7RUFBQTNzQiwySUFBQTtFQUFBQSwySUFBQTtFQUNaLElBQUksQ0FBQzR5QixVQUFVLEdBQUcsSUFBSWx6QixtREFBTyxDQUFVLEtBQUssQ0FBQztFQUM3QyxJQUFJLENBQUM0ekIsVUFBVSxHQUFHLEtBQUs7QUFDekIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1pIO0FBQ0E7QUFDQTtBQUN1QztBQUFBLElBYWxCN0csc0JBQXNCLGdCQUFBbnNCLHdJQUFBLENBUXpDLFNBQUFtc0IsdUJBQVkzTixPQUFzQyxFQUFFO0VBQUEvZSwySUFBQSxPQUFBMHNCLHNCQUFBO0VBQUF6c0IsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFBQUEsMklBQUE7RUFDbEQsSUFBSSxDQUFDc3RCLG9CQUFvQixHQUFHLElBQUk1dEIsbURBQU8sQ0FBVW9mLE9BQU8sQ0FBQ3dPLG9CQUFvQixDQUFDO0VBQzlFLElBQUksQ0FBQ0MsMkJBQTJCLEdBQUcsSUFBSTd0QixtREFBTyxDQUFVb2YsT0FBTyxDQUFDeU8sMkJBQTJCLENBQUM7RUFDNUYsSUFBSSxDQUFDQyw0QkFBNEIsR0FBRzFPLE9BQU8sQ0FBQzBPLDRCQUE0QjtFQUN4RSxJQUFJLENBQUNDLDRCQUE0QixHQUFHM08sT0FBTyxDQUFDMk8sNEJBQTRCO0VBQ3hFLElBQUksQ0FBQ0Msc0JBQXNCLEdBQUc1TyxPQUFPLENBQUM0TyxzQkFBc0I7RUFDNUQsSUFBSSxDQUFDQyxzQkFBc0IsR0FBRzdPLE9BQU8sQ0FBQzZPLHNCQUFzQjtBQUM5RCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0JIO0FBQ0E7QUFDQTtBQUN1QztBQUFBLElBR2xCdEIsWUFBWSxnQkFBQS9yQix3SUFBQSxDQUkvQixTQUFBK3JCLGFBQVluaUIsS0FBdUIsRUFBRTtFQUFBbkssMklBQUEsT0FBQXNzQixZQUFBO0VBQUFyc0IsMklBQUE7RUFBQUEsMklBQUE7RUFDbkMsSUFBSSxDQUFDa0ssS0FBSyxHQUFHLElBQUl4SyxtREFBTyxDQUFtQndLLEtBQUssQ0FBQztFQUNqRCxJQUFJLENBQUMwa0IsYUFBYSxHQUFHLElBQUlsdkIsbURBQU8sQ0FBVSxLQUFLLENBQUM7QUFDbEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FDYkg7QUFDQTtBQUNBOztBQUVBLElBQU1vNUIsbUJBQW1CLEdBQUcsNkNBQTZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0p6RTtBQUNBO0FBQ0E7QUFDK0U7QUFDbEI7QUFBQSxJQUV4Q0Msa0JBQWtCO0VBQUEsU0FBQUEsbUJBQUE7SUFBQWg1QiwySUFBQSxPQUFBZzVCLGtCQUFBO0VBQUE7RUFBQSxPQUFBejRCLHdJQUFBLENBQUF5NEIsa0JBQUE7SUFBQXg0QixHQUFBO0lBQUFFLEtBQUEsRUFDckMsU0FBT3U0QixtQ0FBbUNBLENBQUNDLFdBQXdCLEVBQW1CO01BQ3BGLFFBQVFBLFdBQVc7UUFDakIsS0FBS2pOLHdFQUFXLENBQUMyRixNQUFNO1VBQ3JCLE9BQU8sUUFBUTtRQUNqQixLQUFLM0Ysd0VBQVcsQ0FBQ2tOLEtBQUs7VUFDcEIsT0FBTyxPQUFPO1FBQ2hCLEtBQUtsTix3RUFBVyxDQUFDeUcsS0FBSztVQUNwQixPQUFPLE9BQU87UUFDaEI7VUFDRTlpQixtRUFBaUIsQ0FBQ3NwQixXQUFXLENBQUM7TUFDbEM7SUFDRjtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEJIO0FBQ0E7QUFDQTtBQUNpRjtBQUNwQjtBQUFBLElBRXhDRSxtQkFBbUI7RUFBQSxTQUFBQSxvQkFBQTtJQUFBcDVCLDJJQUFBLE9BQUFvNUIsbUJBQUE7RUFBQTtFQUFBLE9BQUE3NEIsd0lBQUEsQ0FBQTY0QixtQkFBQTtJQUFBNTRCLEdBQUE7SUFBQUUsS0FBQSxFQUN0QyxTQUFPMjRCLHFDQUFxQ0EsQ0FBQ0MsWUFBMEIsRUFBb0I7TUFDekYsUUFBUUEsWUFBWTtRQUNsQixLQUFLdE4seUVBQVksQ0FBQzJGLElBQUk7VUFDcEIsT0FBTyxNQUFNO1FBQ2YsS0FBSzNGLHlFQUFZLENBQUMwRyxLQUFLO1VBQ3JCLE9BQU8sT0FBTztRQUNoQjtVQUNFOWlCLG1FQUFpQixDQUFDMHBCLFlBQVksQ0FBQztNQUNuQztJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoQkg7QUFDQTtBQUNBOztBQUV5QjtBQUN5QjtBQUVsRCxJQUFNRSxzQkFBc0IsR0FBRyxLQUFLO0FBQUMsSUFJaEIxTSxTQUFTO0VBdUM1QixTQUFBQSxVQUFBLEVBQXNCO0lBQUE5c0IsMklBQUEsT0FBQThzQixTQUFBO0lBQ3BCLE1BQU0sSUFBSTltQixLQUFLLENBQUMsMERBQTBELENBQUM7RUFDN0U7RUFBQyxPQUFBekYsd0lBQUEsQ0FBQXVzQixTQUFBO0lBQUF0c0IsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQSs0QixpQ0FBQSxHQUFBMWdCLDZJQUFBLGVBQUFDLDJJQUFBLENBdENELFNBQUFFLFFBQUE7UUFBQSxJQUFBOU4sR0FBQTtRQUFBLE9BQUE0TiwySUFBQSxVQUFBTSxTQUFBQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7WUFBQTtjQUNRck8sR0FBRyxHQUFHLElBQUl6RSxHQUFHLENBQUMyQiw0Q0FBRyxDQUFDc2lCLFlBQVksQ0FBQ2xxQixLQUFLLENBQUM7Y0FBQSxPQUFBNlksUUFBQSxDQUFBUyxNQUFBLFdBRXBDOFMsU0FBUyxDQUFDNE0sa0NBQWtDLENBQUN0dUIsR0FBRyxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUFtTyxRQUFBLENBQUFXLElBQUE7VUFBQTtRQUFBLEdBQUFoQixPQUFBO01BQUEsQ0FDekQ7TUFBQSxTQUpZeWdCLGdDQUFnQ0EsQ0FBQTtRQUFBLE9BQUFGLGlDQUFBLENBQUFyZixLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFoQ29vQixnQ0FBZ0M7SUFBQTtFQUFBO0lBQUFuNUIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQWs1QixtQ0FBQSxHQUFBN2dCLDZJQUFBLGVBQUFDLDJJQUFBLENBTTdDLFNBQUFzQixTQUFnRGxQLEdBQVE7UUFBQSxJQUFBZ0wsR0FBQSxFQUFBeWpCLGdCQUFBLEVBQUFDLFdBQUEsRUFBQWpoQixPQUFBO1FBQUEsT0FBQUcsMklBQUEsVUFBQXVCLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBaEIsSUFBQSxHQUFBZ0IsU0FBQSxDQUFBZixJQUFBO1lBQUE7Y0FDaERyRCxHQUFHLEdBQUdoTCxHQUFHLENBQUMyQyxRQUFRLENBQUMsQ0FBQztjQUFBLEtBRXRCK2UsU0FBUyxDQUFDaU4sTUFBTSxDQUFDM2pCLEdBQUcsQ0FBQztnQkFBQW9FLFNBQUEsQ0FBQWYsSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWUsU0FBQSxDQUFBUixNQUFBLFdBQ2hCOFMsU0FBUyxDQUFDaU4sTUFBTSxDQUFDM2pCLEdBQUcsQ0FBQztZQUFBO2NBR3hCeWpCLGdCQUFnQixHQUFHLElBQUlOLHlEQUFnQixDQUFDbnVCLEdBQUcsQ0FBQztjQUM1QzB1QixXQUFXLEdBQUdoTixTQUFTLENBQUNpTixNQUFNLENBQUMzakIsR0FBRyxDQUFDLEdBQUd5akIsZ0JBQWdCLENBQUNHLHVCQUF1QixDQUFDLENBQUM7Y0FDaEZuaEIsT0FBTyxHQUFHaVUsU0FBUyxDQUFDaU4sTUFBTSxDQUFDM2pCLEdBQUcsQ0FBQyxDQUFDdUUsSUFBSSxDQUFDLFlBQU07Z0JBQy9DLElBQU05QixPQUFPLEdBQUd0UyxVQUFVLENBQUMsWUFBTTtrQkFDL0IsSUFBSXVtQixTQUFTLENBQUNpTixNQUFNLENBQUMzakIsR0FBRyxDQUFDLEtBQUswakIsV0FBVyxFQUFFO29CQUN6QyxPQUFPaE4sU0FBUyxDQUFDaU4sTUFBTSxDQUFDM2pCLEdBQUcsQ0FBQztrQkFDOUI7Z0JBQ0YsQ0FBQyxFQUFFb2pCLHNCQUFzQixDQUFDO2NBQzVCLENBQUMsQ0FBQyxDQUFDdmUsS0FBSyxDQUFDLFlBQU07Z0JBQ2IsT0FBTzZSLFNBQVMsQ0FBQ2lOLE1BQU0sQ0FBQzNqQixHQUFHLENBQUM7Y0FDOUIsQ0FBQyxDQUFDO2NBQUEsT0FBQW9FLFNBQUEsQ0FBQVIsTUFBQSxXQUVLOGYsV0FBVztZQUFBO1lBQUE7Y0FBQSxPQUFBdGYsU0FBQSxDQUFBTixJQUFBO1VBQUE7UUFBQSxHQUFBSSxRQUFBO01BQUEsQ0FDbkI7TUFBQSxTQXBCWW9mLGtDQUFrQ0EsQ0FBQXZmLEVBQUE7UUFBQSxPQUFBeWYsbUNBQUEsQ0FBQXhmLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQWxDbW9CLGtDQUFrQztJQUFBO0VBQUE7SUFBQWw1QixHQUFBO0lBQUFFLEtBQUEsRUFzQi9DLFNBQU9nMUIsMEJBQTBCQSxDQUFDdHFCLEdBQVEsRUFBUTtNQUNoRCxJQUFNZ0wsR0FBRyxHQUFHaEwsR0FBRyxDQUFDMkMsUUFBUSxDQUFDLENBQUM7TUFFMUIsSUFBSStlLFNBQVMsQ0FBQ2lOLE1BQU0sQ0FBQzNqQixHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPMFcsU0FBUyxDQUFDaU4sTUFBTSxDQUFDM2pCLEdBQUcsQ0FBQztNQUM5QjtJQUNGO0VBQUM7QUFBQTtBQUFBblcsMklBQUEsQ0FyQ2tCNnNCLFNBQVMsWUFDYSxDQUFDLENBQUM7QUFEZjtBQTRDOUIsSUFBTWpVLE9BQU8sR0FBR2lVLFNBQVMsQ0FBQzZNLGdDQUFnQyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZENUQ7QUFDQTtBQUNBO0FBQ3VEO0FBQ3JCO0FBQ1Q7QUFFMkI7QUFDVjtBQUVnQjtBQUUxRCxJQUFNTyxjQUFjLEdBQUcsS0FBSztBQUFDLElBRVJYLGdCQUFnQjtFQUtuQyxTQUFBQSxpQkFBWW51QixHQUFRLEVBQUU7SUFBQXBMLDJJQUFBLE9BQUF1NUIsZ0JBQUE7SUFBQXQ1QiwySUFBQSxrQkFKS3NJLDZEQUFhLENBQUNHLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFBQXpJLDJJQUFBO0lBQUFBLDJJQUFBO0lBSzdELElBQUksQ0FBQ21MLEdBQUcsRUFBRTtNQUNSLE1BQU0sSUFBSXBGLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztJQUMzQztJQUVBLElBQUksQ0FBQ3dqQixlQUFlLEdBQUd4UyxnRUFBYyxDQUFDQyxpQkFBaUIsQ0FBQzdMLEdBQUcsQ0FBQzJDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDb3NCLElBQUksR0FBRy91QixHQUFHO0VBQ2pCO0VBQUMsT0FBQTdLLHdJQUFBLENBQUFnNUIsZ0JBQUE7SUFBQS80QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMDVCLHdCQUFBLEdBQUFyaEIsNklBQUEsZUFBQUMsMklBQUEsQ0FFRCxTQUFBRSxRQUE4QjlOLEdBQVEsRUFBRWl2QixPQUFlO1FBQUEsSUFBQWprQixHQUFBLEVBQUF3RSxRQUFBLEVBQUEwZixRQUFBLEVBQUFDLFNBQUE7UUFBQSxPQUFBdmhCLDJJQUFBLFVBQUFNLFNBQUFDLFFBQUE7VUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtZQUFBO2NBQUEsSUFDaEQ0Z0IsT0FBTztnQkFBQTlnQixRQUFBLENBQUFFLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLE1BQ0osSUFBSXpULEtBQUssQ0FBQyw0QkFBNEIsQ0FBQztZQUFBO2NBR3pDb1EsR0FBRyxHQUFHaEwsR0FBRyxDQUFDMkMsUUFBUSxDQUFDLENBQUM7Y0FBQXdMLFFBQUEsQ0FBQUUsSUFBQTtjQUFBLE9BQ0g2QixPQUFPLENBQUNpQyxJQUFJLENBQUMsQ0FDbEMxRCxLQUFLLENBQUN6RCxHQUFHLEVBQUU7Z0JBQ1QwRCxNQUFNLEVBQUUsS0FBSztnQkFDYnZHLEtBQUssRUFBRTtjQUNULENBQUMsQ0FBQyxFQUNGLElBQUkrSCxPQUFPLENBQVcsVUFBQ2dDLENBQUMsRUFBRUwsTUFBTTtnQkFBQSxPQUM5QjFXLFVBQVUsQ0FBQztrQkFBQSxPQUFNMFcsTUFBTSxDQUFDLElBQUlqWCxLQUFLLHlCQUFBNUIsTUFBQSxDQUF5QmdTLEdBQUcsTUFBRyxDQUFDLENBQUM7Z0JBQUEsR0FBRWlrQixPQUFPLENBQUM7Y0FBQSxDQUM5RSxDQUFDLENBQ0YsQ0FBQztZQUFBO2NBUkl6ZixRQUFRLEdBQUFyQixRQUFBLENBQUFVLElBQUE7Y0FBQSxJQVVUVyxRQUFRLENBQUM0ZixFQUFFO2dCQUFBamhCLFFBQUEsQ0FBQUUsSUFBQTtnQkFBQTtjQUFBO2NBQUEsTUFDUixJQUFJelQsS0FBSyxzQkFBQTVCLE1BQUEsQ0FBc0JnUyxHQUFHLFNBQUFoUyxNQUFBLENBQU13VyxRQUFRLENBQUNPLE1BQU0sTUFBRyxDQUFDO1lBQUE7Y0FBQSxNQUcvRFAsUUFBUSxDQUFDYixJQUFJLEtBQUssSUFBSTtnQkFBQVIsUUFBQSxDQUFBRSxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUNsQixJQUFJelQsS0FBSyxtQ0FBQTVCLE1BQUEsQ0FBbUNnUyxHQUFHLE1BQUcsQ0FBQztZQUFBO2NBQUFtRCxRQUFBLENBQUFFLElBQUE7Y0FBQSxPQUdwQ21CLFFBQVEsQ0FBQzZmLElBQUksQ0FBQyxDQUFDO1lBQUE7Y0FBaENILFFBQVEsR0FBQS9nQixRQUFBLENBQUFVLElBQUE7Y0FDUnNnQixTQUFTLEdBQUdELFFBQVEsQ0FBQ3oyQixLQUFLLENBQUMsR0FBRyxDQUFDO2NBQUEsT0FBQTBWLFFBQUEsQ0FBQVMsTUFBQSxXQUU5QnVnQixTQUFTLENBQUM3WixHQUFHLENBQUMsVUFBQTBQLFFBQVE7Z0JBQUEsT0FBSSxJQUFJNkosaURBQVEsQ0FBQzdKLFFBQVEsRUFBRWlLLE9BQU8sQ0FBQztjQUFBLEVBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQTlnQixRQUFBLENBQUFXLElBQUE7VUFBQTtRQUFBLEdBQUFoQixPQUFBO01BQUEsQ0FDbEU7TUFBQSxTQTVCS3doQix1QkFBdUJBLENBQUF2Z0IsRUFBQSxFQUFBMkwsR0FBQTtRQUFBLE9BQUFzVSx3QkFBQSxDQUFBaGdCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQXZCbXBCLHVCQUF1QjtJQUFBO0VBQUE7SUFBQWw2QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBaTZCLHdCQUFBLEdBQUE1aEIsNklBQUEsZUFBQUMsMklBQUEsQ0E4QjdCLFNBQUFzQixTQUFBO1FBQUEsSUFBQXZaLEtBQUE7UUFBQSxJQUFBczVCLE9BQUE7VUFBQWprQixHQUFBO1VBQUFta0IsU0FBQTtVQUFBSyxjQUFBO1VBQUFDLG1DQUFBO1VBQUF6SyxRQUFBO1VBQUEwSyxNQUFBLEdBQUF2cEIsU0FBQTtRQUFBLE9BQUF5SCwySUFBQSxVQUFBdUIsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFoQixJQUFBLEdBQUFnQixTQUFBLENBQUFmLElBQUE7WUFBQTtjQUE4QjRnQixPQUFlLEdBQUFTLE1BQUEsQ0FBQXJ3QixNQUFBLFFBQUFxd0IsTUFBQSxRQUFBNXpCLFNBQUEsR0FBQTR6QixNQUFBLE1BQUdaLGNBQWM7Y0FDdEQ5akIsR0FBRyxHQUFHcVMscURBQVksQ0FBQ3NTLGlCQUFpQixDQUFDLElBQUksQ0FBQ1osSUFBSSxDQUFDO2NBQUEzZixTQUFBLENBQUFmLElBQUE7Y0FBQSxPQUM3QixJQUFJLENBQUNpaEIsdUJBQXVCLENBQUMsSUFBSS96QixHQUFHLENBQUN5UCxHQUFHLENBQUMsRUFBRWlrQixPQUFPLENBQUM7WUFBQTtjQUFyRUUsU0FBUyxHQUFBL2YsU0FBQSxDQUFBUCxJQUFBO2NBQ1gyZ0IsY0FBYyxHQUFHLENBQUM7Y0FDaEJDLG1DQUFtQyxHQUFHLFNBQXRDQSxtQ0FBbUNBLENBQUE7Z0JBQUEsT0FBd0IsSUFBSXZmLE9BQU8sQ0FBQyxVQUFDZ0MsQ0FBQyxFQUFFTCxNQUFNLEVBQUs7a0JBQzFGLElBQUkyZCxjQUFjLElBQUlMLFNBQVMsQ0FBQzl2QixNQUFNLEVBQUU7b0JBQ3RDd1MsTUFBTSxrQkFBQTdZLE1BQUEsQ0FBa0JtMkIsU0FBUyxDQUFDOXZCLE1BQU0sd0JBQUFyRyxNQUFBLENBQXFCZ1MsR0FBRyw0Q0FBeUMsQ0FBQztrQkFDNUc7Z0JBQ0YsQ0FBQyxDQUFDO2NBQUE7Y0FBQW9FLFNBQUEsQ0FBQWYsSUFBQTtjQUFBLE9BQ3FCNkIsT0FBTyxDQUFDaUMsSUFBSSxDQUFDZ2QsU0FBUyxDQUFDN1osR0FBRyxDQUFDLFVBQUEwUCxRQUFRO2dCQUFBLE9BQUlBLFFBQVEsQ0FDbkU0SyxJQUFJLENBQUMsQ0FBQyxDQUNOL2YsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7a0JBQ1Y5SixLQUFJLENBQUM2SSxPQUFPLENBQUNxSSxJQUFJLENBQUMsK0JBQStCLEVBQUVtZSxRQUFRLEVBQUV2bEIsQ0FBQyxDQUFDO2tCQUUvRCt2QixjQUFjLEVBQUU7a0JBRWhCLE9BQU9DLG1DQUFtQyxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxDQUNEbGdCLElBQUksQ0FBQyxVQUFBc2dCLElBQUksRUFBSTtrQkFDWixJQUFNOTZCLEdBQUcsR0FBR0QsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztrQkFFdEJZLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDBDQUEwQyxFQUFFdW1CLFFBQVEsQ0FBQ3JpQixRQUFRLENBQUMsQ0FBQyxFQUFFa3RCLElBQUksQ0FBQztrQkFDeEZsNkIsS0FBSSxDQUFDeW9CLGVBQWUsQ0FBQy9mLElBQUksQ0FBQztvQkFDeEJMLFVBQVUsRUFBRWpCLDREQUFXLENBQUN3TixhQUFhO29CQUNyQ2pNLE9BQU8sRUFBRSxDQUFDdkosR0FBRyxHQUFHbUksNENBQUcsQ0FBQ0csWUFBWSxJQUFJLElBQUk7b0JBQ3hDL0gsS0FBSyxFQUFFO3NCQUFDaUosTUFBTSxFQUFFc3hCLElBQUksSUFBSTtvQkFBQyxDQUFDO29CQUMxQjNpQixRQUFRLEVBQUU4WCxRQUFRLENBQUNyaUIsUUFBUSxDQUFDLENBQUM7b0JBQzdCd0ssSUFBSSxFQUFFO2tCQUNSLENBQUMsQ0FBQztrQkFFRixPQUFPNlgsUUFBUTtnQkFDakIsQ0FBQyxDQUFDO2NBQUEsRUFBQyxDQUFDO1lBQUE7Y0F0QkFBLFFBQVEsR0FBQTVWLFNBQUEsQ0FBQVAsSUFBQTtjQUFBLE9BQUFPLFNBQUEsQ0FBQVIsTUFBQSxXQXdCUG9XLFFBQVE7WUFBQTtZQUFBO2NBQUEsT0FBQTVWLFNBQUEsQ0FBQU4sSUFBQTtVQUFBO1FBQUEsR0FBQUksUUFBQTtNQUFBLENBQ2hCO01BQUEsU0FsQ0swZix1QkFBdUJBLENBQUE7UUFBQSxPQUFBVyx3QkFBQSxDQUFBdmdCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQXZCeW9CLHVCQUF1QjtJQUFBO0VBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzFEL0I7QUFDQTtBQUNBOztBQUVnRDtBQUNUO0FBQ2dCO0FBQ0Q7QUFBQSxJQUVqQ3ZSLFlBQVk7RUF1Qi9CLFNBQUFBLGFBQUEsRUFBc0I7SUFBQXpvQiwySUFBQSxPQUFBeW9CLFlBQUE7SUFDcEIsTUFBTSxJQUFJemlCLEtBQUssQ0FBQyw2REFBNkQsQ0FBQztFQUNoRjtFQUFDLE9BQUF6Rix3SUFBQSxDQUFBa29CLFlBQUE7SUFBQWpvQixHQUFBO0lBQUFDLEdBQUEsRUF0QkQsU0FBQUEsSUFBQSxFQUFrQztNQUNoQyxPQUFPZ29CLFlBQVksQ0FBQ3lTLGFBQWE7SUFDbkM7RUFBQztJQUFBMTZCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU9xNkIsaUJBQWlCQSxDQUFDM3ZCLEdBQVEsRUFBVTtNQUN6QyxJQUFNZ0wsR0FBRyxHQUFHLElBQUl6UCxHQUFHLENBQUN5RSxHQUFHLENBQUMyQyxRQUFRLENBQUMsQ0FBQyxDQUFDO01BQ25DLElBQU02SyxVQUFVLEdBQUdmLCtEQUFjLENBQUNlLFVBQVU7TUFDNUMsSUFBTW5MLFVBQVUsR0FBR04sK0RBQVUsQ0FBQ2d1QixtQkFBbUIsQ0FBQzF0QixVQUFVO01BRTVEMkksR0FBRyxDQUFDZ2xCLFlBQVksQ0FBQ2psQixHQUFHLENBQUMsU0FBUyxFQUFFeUMsVUFBVSxDQUFDO01BQzNDeEMsR0FBRyxDQUFDZ2xCLFlBQVksQ0FBQ2psQixHQUFHLENBQUMsWUFBWSxFQUFFMUksVUFBVSxDQUFDO01BQzlDMkksR0FBRyxDQUFDZ2xCLFlBQVksQ0FBQ2psQixHQUFHLENBQUMsR0FBRyxLQUFBL1IsTUFBQSxDQUFLbEUsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxDQUFFLENBQUM7TUFFMUMsSUFBSWlXLEdBQUcsQ0FBQ0UsUUFBUSxLQUFLLEdBQUcsRUFBRTtRQUN4QkYsR0FBRyxDQUFDRSxRQUFRLEdBQUcsa0JBQWtCO01BQ25DO01BRUEsT0FBT0YsR0FBRyxDQUFDckksUUFBUSxDQUFDLENBQUM7SUFDdkI7RUFBQztBQUFBO0FBQUE5TiwySUFBQSxDQXJCa0J3b0IsWUFBWSxtQkFDMEIsSUFBSTlvQixtREFBTyxDQUFTbzVCLDBEQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVm5HO0FBQ0E7QUFDQTtBQUN1RDtBQUVJO0FBV0o7QUFDRDtBQUVBO0FBQ0U7QUFTeEQsSUFBTXNDLFVBQVUsR0FBRyxDQUFDO0FBQUMsSUFnRUFwQixRQUFRO0VBTTNCLFNBQUFBLFNBQVk3dUIsR0FBVyxFQUFFaXZCLE9BQWUsRUFBRTtJQUFBcjZCLDJJQUFBLE9BQUFpNkIsUUFBQTtJQUFBaDZCLDJJQUFBLGtCQUxOc0ksNkRBQWEsQ0FBQ0csU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUFBekksMklBQUE7SUFBQUEsMklBQUE7SUFBQUEsMklBQUE7SUFNckUsSUFBSSxDQUFDazZCLElBQUksR0FBRy91QixHQUFHO0lBQ2YsSUFBSSxDQUFDa3dCLFFBQVEsR0FBR2pCLE9BQU87SUFFdkIsSUFBSSxDQUFDQSxPQUFPLEVBQUU7TUFDWixNQUFNLElBQUlyMEIsS0FBSywrQkFBK0IsQ0FBQztJQUNqRDtFQUNGO0VBQUMsT0FBQXpGLHdJQUFBLENBQUEwNUIsUUFBQTtJQUFBejVCLEdBQUE7SUFBQUMsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBNEI7TUFDMUIsT0FBTyxJQUFJLENBQUM4NkIsY0FBYztJQUM1QjtFQUFDO0lBQUEvNkIsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBQXFOLFFBQVFBLENBQUEsRUFBVztNQUNqQix1QkFBQTNKLE1BQUEsQ0FBdUIsSUFBSSxDQUFDKzFCLElBQUk7SUFDbEM7RUFBQztJQUFBMzVCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUE4NkIsS0FBQSxHQUFBemlCLDZJQUFBLGVBQUFDLDJJQUFBLENBRUQsU0FBQUUsUUFBQTtRQUFBLElBQUFuWSxLQUFBO1FBQUEsSUFBQXFWLEdBQUEsRUFBQTBiLEtBQUEsRUFBQWxYLFFBQUEsRUFBQTZnQixRQUFBO1FBQUEsT0FBQXppQiwySUFBQSxVQUFBTSxTQUFBQyxRQUFBO1VBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7WUFBQTtjQUNRckQsR0FBRyxHQUFHLElBQUksQ0FBQ3NsQixZQUFZLENBQUMsQ0FBQztjQUN6QjVKLEtBQUssR0FBRzV4QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFvWixRQUFBLENBQUFFLElBQUE7Y0FBQSxPQUNENkIsT0FBTyxDQUFDaUMsSUFBSSxDQUFDLENBQ2xDMUQsS0FBSyxDQUFDekQsR0FBRyxFQUFFO2dCQUNUMEQsTUFBTSxFQUFFLEtBQUs7Z0JBQ2J2RyxLQUFLLEVBQUU7Y0FDVCxDQUFDLENBQUMsRUFDRixJQUFJK0gsT0FBTyxDQUFXLFVBQUNnQyxDQUFDLEVBQUVMLE1BQU07Z0JBQUEsT0FDOUIxVyxVQUFVLENBQUM7a0JBQUEsT0FBTTBXLE1BQU0sQ0FBQyxJQUFJalgsS0FBSyxvQkFBQTVCLE1BQUEsQ0FBb0JnUyxHQUFHLE1BQUcsQ0FBQyxDQUFDO2dCQUFBLEdBQUVyVixLQUFJLENBQUN1NkIsUUFBUSxDQUFDO2NBQUEsQ0FDL0UsQ0FBQyxDQUNGLENBQUM7WUFBQTtjQVJJMWdCLFFBQVEsR0FBQXJCLFFBQUEsQ0FBQVUsSUFBQTtjQVNSd2hCLFFBQVEsR0FBR3Y3QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUEsSUFFdEJ5YSxRQUFRLENBQUM0ZixFQUFFO2dCQUFBamhCLFFBQUEsQ0FBQUUsSUFBQTtnQkFBQTtjQUFBO2NBQUEsTUFDUixJQUFJelQsS0FBSyxpQkFBQTVCLE1BQUEsQ0FBaUJnUyxHQUFHLFNBQUFoUyxNQUFBLENBQU13VyxRQUFRLENBQUNPLE1BQU0sTUFBRyxDQUFDO1lBQUE7Y0FHOUQsSUFBSSxDQUFDb2dCLGNBQWMsR0FBR0UsUUFBUSxHQUFHM0osS0FBSztjQUFDLE9BQUF2WSxRQUFBLENBQUFTLE1BQUEsV0FFaEMsSUFBSSxDQUFDdWhCLGNBQWM7WUFBQTtZQUFBO2NBQUEsT0FBQWhpQixRQUFBLENBQUFXLElBQUE7VUFBQTtRQUFBLEdBQUFoQixPQUFBO01BQUEsQ0FDM0I7TUFBQSxTQXJCSzhoQixJQUFJQSxDQUFBO1FBQUEsT0FBQVEsS0FBQSxDQUFBcGhCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQUp5cEIsSUFBSTtJQUFBO0VBQUE7SUFBQXg2QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBaTdCLFVBQUEsR0FBQTVpQiw2SUFBQSxlQUFBQywySUFBQSxDQXVCVixTQUFBc0IsU0FBZ0JuUSxLQUF1QixFQUFFeXhCLHVCQUFrRCxFQUFFMUwsWUFBb0I7UUFBQSxJQUFBcHVCLE1BQUE7UUFBQSxJQUFBNFUsT0FBQSxFQUFBTixHQUFBLEVBQUFnRCxRQUFBLEVBQUF5aUIsYUFBQSxFQUFBQyxhQUFBLEVBQUFDLGdCQUFBLEVBQUFqSyxLQUFBLEVBQUFrSyxZQUFBLEVBQUEzQixPQUFBLEVBQUFsZixNQUFBLEVBQUFzZ0IsUUFBQSxFQUFBUSxpQkFBQTtRQUFBLE9BQUFqakIsMklBQUEsVUFBQXVCLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBaEIsSUFBQSxHQUFBZ0IsU0FBQSxDQUFBZixJQUFBO1lBQUE7Y0FDekcvQyxPQUFPLEdBQUd6TSxnRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDdU0sT0FBTztjQUFBLElBRW5EQSxPQUFPO2dCQUFBOEQsU0FBQSxDQUFBZixJQUFBO2dCQUFBO2NBQUE7Y0FDVixJQUFJLENBQUM3UCxPQUFPLENBQUNTLEtBQUssQ0FBQyw0QkFBNEIsRUFBRUYsS0FBSyxDQUFDO2NBQUMsT0FBQXFRLFNBQUEsQ0FBQVIsTUFBQSxXQUVqRDtnQkFBQ21CLE1BQU0sRUFBRTtjQUFjLENBQUM7WUFBQTtjQUczQi9FLEdBQUcsR0FBRyxJQUFJLENBQUM4bEIsUUFBUSxDQUFDLENBQUN4bEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDM0ksUUFBUSxDQUFDLENBQUM7Y0FDaEVxTCxRQUFRLEdBQUcsSUFBSU0sUUFBUSxDQUFDLENBQUM7Y0FDekJtaUIsYUFBYSxHQUFHaGtCLCtEQUFjLENBQUNlLFVBQVU7Y0FFL0MsSUFBSXNYLFlBQVksS0FBSyxDQUFDLElBQUkwTCx1QkFBdUIsRUFBRTtnQkFDM0NFLGFBQXlDLEdBQUc7a0JBQ2hEVCxVQUFVLEVBQVZBLFVBQVU7a0JBQ1ZRLGFBQWEsRUFBYkEsYUFBYTtrQkFDYk0sV0FBVyxFQUFFaHlCLEtBQUs7a0JBQ2xCK2xCLFlBQVksRUFBWkEsWUFBWTtrQkFDWmtNLGlCQUFpQixFQUFFLElBQUksQ0FBQ2IsY0FBYztrQkFDdEM3VSxvQkFBb0IsRUFBRTtvQkFDcEIyVSxVQUFVLEVBQVZBLFVBQVU7b0JBQ1ZnQixrQkFBa0IsRUFBRTtzQkFDbEJ0MEIsSUFBSSxFQUFFNnpCLHVCQUF1QixDQUFDN3pCLElBQUk7c0JBQ2xDZ1osR0FBRyxFQUFFNmEsdUJBQXVCLENBQUM3YTtvQkFDL0I7a0JBQ0YsQ0FBQztrQkFDRHViLHVCQUF1QixFQUFFO29CQUFDakIsVUFBVSxFQUFWQTtrQkFBVTtnQkFDdEMsQ0FBQztnQkFFRGppQixRQUFRLENBQUNPLE1BQU0sQ0FBQyxVQUFVLEVBQUVoUCxJQUFJLENBQUNxSSxTQUFTLENBQUM4b0IsYUFBYSxDQUFDLENBQUM7Y0FDNUQsQ0FBQyxNQUFNO2dCQUNDQyxnQkFBK0MsR0FBRztrQkFDdERWLFVBQVUsRUFBVkEsVUFBVTtrQkFDVlEsYUFBYSxFQUFiQSxhQUFhO2tCQUNiTSxXQUFXLEVBQUVoeUIsS0FBSztrQkFDbEIrbEIsWUFBWSxFQUFaQSxZQUFZO2tCQUNaa00saUJBQWlCLEVBQUUsSUFBSSxDQUFDYixjQUFjO2tCQUN0Q2dCLHNCQUFzQixFQUFFO29CQUFDbEIsVUFBVSxFQUFWQTtrQkFBVTtnQkFDckMsQ0FBQztnQkFFRGppQixRQUFRLENBQUNPLE1BQU0sQ0FBQyxVQUFVLEVBQUVoUCxJQUFJLENBQUNxSSxTQUFTLENBQUMrb0IsZ0JBQWdCLENBQUMsQ0FBQztjQUMvRDtjQUVNakssS0FBSyxHQUFHNXhCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQXFhLFNBQUEsQ0FBQWhCLElBQUE7Y0FJbEI2Z0IsT0FBTyxHQUFHLElBQUk7Y0FBQTdmLFNBQUEsQ0FBQWYsSUFBQTtjQUFBLE9BRUc2QixPQUFPLENBQUNpQyxJQUFJLENBQUMsQ0FDaEMxRCxLQUFLLENBQUN6RCxHQUFHLEVBQUU7Z0JBQ1QwRCxNQUFNLEVBQUUsTUFBTTtnQkFDZEMsSUFBSSxFQUFFWDtjQUNSLENBQUMsQ0FBQyxFQUNGLElBQUlrQyxPQUFPLENBQVcsVUFBQTBCLE9BQU87Z0JBQUEsT0FDM0JxZCxPQUFPLEdBQUdyNEIsTUFBTSxDQUFDdUUsVUFBVSxDQUFDLFlBQU07a0JBQ2hDekUsTUFBSSxDQUFDOEgsT0FBTyxDQUFDUyxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSXJFLEtBQUsseUJBQUE1QixNQUFBLENBQXlCZ1MsR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDcEY0RyxPQUFPLENBQUM7b0JBQUM3QixNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUVyWixNQUFJLENBQUN3NUIsUUFBUSxDQUFDO2NBQUEsQ0FDbkIsQ0FBQyxDQUNGLENBQUMsQ0FDQ3hGLE9BQU8sQ0FBQyxZQUFNO2dCQUNiLElBQUl1RSxPQUFPLEVBQUU7a0JBQ1g3WSxZQUFZLENBQUM2WSxPQUFPLENBQUM7Z0JBQ3ZCO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FoQkoyQixZQUFZLEdBQUF4aEIsU0FBQSxDQUFBUCxJQUFBO2NBQUFPLFNBQUEsQ0FBQWYsSUFBQTtjQUFBO1lBQUE7Y0FBQWUsU0FBQSxDQUFBaEIsSUFBQTtjQUFBZ0IsU0FBQSxDQUFBeUUsRUFBQSxHQUFBekUsU0FBQTtjQWtCWixJQUFJLENBQUM1USxPQUFPLENBQUNTLEtBQUssQ0FBQyxxQkFBcUIsRUFBQW1RLFNBQUEsQ0FBQXlFLEVBQUcsQ0FBQztjQUFDLE9BQUF6RSxTQUFBLENBQUFSLE1BQUEsV0FFdEM7Z0JBQUNtQixNQUFNLEVBQUU7Y0FBUSxDQUFDO1lBQUE7Y0FHckJBLE1BQXVCLEdBQUcsSUFBSSxDQUFDcWhCLDhCQUE4QixDQUFDUixZQUFZLENBQUM7Y0FBQSxNQUU3RTdnQixNQUFNLEtBQUssSUFBSTtnQkFBQVgsU0FBQSxDQUFBZixJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBZSxTQUFBLENBQUFSLE1BQUEsV0FDVjtnQkFBQ21CLE1BQU0sRUFBTkE7Y0FBTSxDQUFDO1lBQUE7Y0FHWHNnQixRQUFRLEdBQUd2N0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBcWEsU0FBQSxDQUFBZixJQUFBO2NBQUEsT0FDSyxJQUFJLENBQUNnakIsc0NBQXNDLENBQUMvbEIsT0FBTyxFQUFFc2xCLFlBQVksQ0FBQztZQUFBO2NBQTVGQyxpQkFBaUIsR0FBQXpoQixTQUFBLENBQUFQLElBQUE7Y0FFdkIsSUFBSSxDQUFDclEsT0FBTyxDQUFDOEgsS0FBSyxDQUFDLHdDQUF3QyxFQUFFdXFCLGlCQUFpQixFQUFFUixRQUFRLEdBQUczSixLQUFLLENBQUM7Y0FBQyxPQUFBdFgsU0FBQSxDQUFBUixNQUFBLFdBRTNGaWlCLGlCQUFpQjtZQUFBO1lBQUE7Y0FBQSxPQUFBemhCLFNBQUEsQ0FBQU4sSUFBQTtVQUFBO1FBQUEsR0FBQUksUUFBQTtNQUFBLENBQ3pCO01BQUEsU0FyRktzTixTQUFTQSxDQUFBek4sRUFBQSxFQUFBMkwsR0FBQSxFQUFBSyxHQUFBO1FBQUEsT0FBQXdWLFVBQUEsQ0FBQXZoQixLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFUcVcsU0FBUztJQUFBO0VBQUE7SUFBQXBuQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBZzhCLFFBQUEsR0FBQTNqQiw2SUFBQSxlQUFBQywySUFBQSxDQXVGZixTQUFBb0YsU0FBY2haLElBQVksRUFBRStFLEtBQXVCLEVBQUV5eEIsdUJBQWtELEVBQUUxTCxZQUFvQjtRQUFBLElBQUFuSixNQUFBO1FBQUEsSUFBQXJRLE9BQUEsRUFBQU4sR0FBQSxFQUFBZ0QsUUFBQSxFQUFBeWlCLGFBQUEsRUFBQUMsYUFBQSxFQUFBQyxnQkFBQSxFQUFBakssS0FBQSxFQUFBa0ssWUFBQSxFQUFBM0IsT0FBQSxFQUFBbGYsTUFBQSxFQUFBc2dCLFFBQUEsRUFBQVEsaUJBQUE7UUFBQSxPQUFBampCLDJJQUFBLFVBQUF3RixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWpGLElBQUEsR0FBQWlGLFNBQUEsQ0FBQWhGLElBQUE7WUFBQTtjQUNySC9DLE9BQU8sR0FBR3pNLGdFQUFjLENBQUNDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLENBQUN1TSxPQUFPO2NBQUEsSUFFbkRBLE9BQU87Z0JBQUErSCxTQUFBLENBQUFoRixJQUFBO2dCQUFBO2NBQUE7Y0FDVixJQUFJLENBQUM3UCxPQUFPLENBQUNTLEtBQUssQ0FBQyw0QkFBNEIsRUFBRUYsS0FBSyxDQUFDO2NBQUMsT0FBQXNVLFNBQUEsQ0FBQXpFLE1BQUEsV0FFakQ7Z0JBQUNtQixNQUFNLEVBQUU7Y0FBYyxDQUFDO1lBQUE7Y0FHM0IvRSxHQUFHLEdBQUcsSUFBSSxDQUFDOGxCLFFBQVEsQ0FBQyxDQUFDeGxCLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQzNJLFFBQVEsQ0FBQyxDQUFDO2NBQzlEcUwsUUFBUSxHQUFHLElBQUlNLFFBQVEsQ0FBQyxDQUFDO2NBQ3pCbWlCLGFBQWEsR0FBR2hrQiwrREFBYyxDQUFDZSxVQUFVO2NBRS9DLElBQUlzWCxZQUFZLEtBQUssQ0FBQyxJQUFJMEwsdUJBQXVCLEVBQUU7Z0JBQzNDRSxhQUF1QyxHQUFHO2tCQUM5Q1QsVUFBVSxFQUFWQSxVQUFVO2tCQUNWUSxhQUFhLEVBQWJBLGFBQWE7a0JBQ2JNLFdBQVcsRUFBRWh5QixLQUFLO2tCQUNsQitsQixZQUFZLEVBQVpBLFlBQVk7a0JBQ1prTSxpQkFBaUIsRUFBRSxJQUFJLENBQUNiLGNBQWM7a0JBQ3RDbjJCLElBQUksRUFBSkEsSUFBSTtrQkFDSnNoQixvQkFBb0IsRUFBRTtvQkFDcEIyVSxVQUFVLEVBQVZBLFVBQVU7b0JBQ1ZnQixrQkFBa0IsRUFBRTtzQkFDbEJ0MEIsSUFBSSxFQUFFNnpCLHVCQUF1QixDQUFDN3pCLElBQUk7c0JBQ2xDZ1osR0FBRyxFQUFFNmEsdUJBQXVCLENBQUM3YTtvQkFDL0I7a0JBQ0YsQ0FBQztrQkFDRHViLHVCQUF1QixFQUFFO29CQUN2QnZ6QixRQUFRLEVBQUUsRUFBRTtvQkFDWnN5QixVQUFVLEVBQVZBO2tCQUNGO2dCQUNGLENBQUM7Z0JBRURqaUIsUUFBUSxDQUFDTyxNQUFNLENBQUMsVUFBVSxFQUFFaFAsSUFBSSxDQUFDcUksU0FBUyxDQUFDOG9CLGFBQWEsQ0FBQyxDQUFDO2NBQzVELENBQUMsTUFBTTtnQkFDQ0MsZ0JBQTZDLEdBQUc7a0JBQ3BEVixVQUFVLEVBQVZBLFVBQVU7a0JBQ1ZRLGFBQWEsRUFBYkEsYUFBYTtrQkFDYk0sV0FBVyxFQUFFaHlCLEtBQUs7a0JBQ2xCK2xCLFlBQVksRUFBWkEsWUFBWTtrQkFDWmtNLGlCQUFpQixFQUFFLElBQUksQ0FBQ2IsY0FBYztrQkFDdENuMkIsSUFBSSxFQUFKQSxJQUFJO2tCQUNKbTNCLHNCQUFzQixFQUFFO29CQUN0Qnh6QixRQUFRLEVBQUUsRUFBRTtvQkFDWnN5QixVQUFVLEVBQVZBO2tCQUNGO2dCQUNGLENBQUM7Z0JBRURqaUIsUUFBUSxDQUFDTyxNQUFNLENBQUMsVUFBVSxFQUFFaFAsSUFBSSxDQUFDcUksU0FBUyxDQUFDK29CLGdCQUFnQixDQUFDLENBQUM7Y0FDL0Q7Y0FFTWpLLEtBQUssR0FBRzV4QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFzZSxTQUFBLENBQUFqRixJQUFBO2NBSWxCNmdCLE9BQU8sR0FBRyxJQUFJO2NBQUE1YixTQUFBLENBQUFoRixJQUFBO2NBQUEsT0FFRzZCLE9BQU8sQ0FBQ2lDLElBQUksQ0FBQyxDQUNoQzFELEtBQUssQ0FBQ3pELEdBQUcsRUFBRTtnQkFDVDBELE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVYO2NBQ1IsQ0FBQyxDQUFDLEVBQ0YsSUFBSWtDLE9BQU8sQ0FBVyxVQUFBMEIsT0FBTztnQkFBQSxPQUMzQnFkLE9BQU8sR0FBR3I0QixNQUFNLENBQUN1RSxVQUFVLENBQUMsWUFBTTtrQkFDaEN3Z0IsTUFBSSxDQUFDbmQsT0FBTyxDQUFDUyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSXJFLEtBQUssdUJBQUE1QixNQUFBLENBQXVCZ1MsR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDaEY0RyxPQUFPLENBQUM7b0JBQUM3QixNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUU0TCxNQUFJLENBQUN1VSxRQUFRLENBQUM7Y0FBQSxDQUNuQixDQUFDLENBQ0YsQ0FBQyxDQUNDeEYsT0FBTyxDQUFDLFlBQU07Z0JBQ2IsSUFBSXVFLE9BQU8sRUFBRTtrQkFDWDdZLFlBQVksQ0FBQzZZLE9BQU8sQ0FBQztnQkFDdkI7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWhCSjJCLFlBQVksR0FBQXZkLFNBQUEsQ0FBQXhFLElBQUE7Y0FBQXdFLFNBQUEsQ0FBQWhGLElBQUE7Y0FBQTtZQUFBO2NBQUFnRixTQUFBLENBQUFqRixJQUFBO2NBQUFpRixTQUFBLENBQUFRLEVBQUEsR0FBQVIsU0FBQTtjQWtCWixJQUFJLENBQUM3VSxPQUFPLENBQUNTLEtBQUssQ0FBQyxtQkFBbUIsRUFBQW9VLFNBQUEsQ0FBQVEsRUFBRyxDQUFDO2NBQUMsT0FBQVIsU0FBQSxDQUFBekUsTUFBQSxXQUVwQztnQkFBQ21CLE1BQU0sRUFBRTtjQUFRLENBQUM7WUFBQTtjQUdyQkEsTUFBcUIsR0FBRyxJQUFJLENBQUN3aEIsNEJBQTRCLENBQUNYLFlBQVksQ0FBQztjQUFBLE1BRXpFN2dCLE1BQU0sS0FBSyxJQUFJO2dCQUFBc0QsU0FBQSxDQUFBaEYsSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWdGLFNBQUEsQ0FBQXpFLE1BQUEsV0FDVjtnQkFBQ21CLE1BQU0sRUFBTkE7Y0FBTSxDQUFDO1lBQUE7Y0FHWHNnQixRQUFRLEdBQUd2N0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBc2UsU0FBQSxDQUFBaEYsSUFBQTtjQUFBLE9BQ0ssSUFBSSxDQUFDbWpCLG9DQUFvQyxDQUFDbG1CLE9BQU8sRUFBRXNsQixZQUFZLENBQUM7WUFBQTtjQUExRkMsaUJBQWlCLEdBQUF4ZCxTQUFBLENBQUF4RSxJQUFBO2NBRXZCLElBQUksQ0FBQ3JRLE9BQU8sQ0FBQzhILEtBQUssQ0FBQyxzQ0FBc0MsRUFBRXVxQixpQkFBaUIsRUFBRVIsUUFBUSxHQUFHM0osS0FBSyxDQUFDO2NBQUMsT0FBQXJULFNBQUEsQ0FBQXpFLE1BQUEsV0FFekZpaUIsaUJBQWlCO1lBQUE7WUFBQTtjQUFBLE9BQUF4ZCxTQUFBLENBQUF2RSxJQUFBO1VBQUE7UUFBQSxHQUFBa0UsUUFBQTtNQUFBLENBQ3pCO01BQUEsU0E3Rkt5ZSxPQUFPQSxDQUFBbFcsR0FBQSxFQUFBbVcsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7UUFBQSxPQUFBTixRQUFBLENBQUF0aUIsS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBUHNyQixPQUFPO0lBQUE7RUFBQTtJQUFBcjhCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUEwbEIscUJBQUEsR0FBQXJOLDZJQUFBLGVBQUFDLDJJQUFBLENBK0ZiLFNBQUFxTixTQUEyQmlLLE1BQWUsRUFBRStMLGtCQUE2QztRQUFBLElBQUFwVixNQUFBO1FBQUEsSUFBQTdRLEdBQUEsRUFBQWdELFFBQUEsRUFBQVcsSUFBQSxFQUFBK1gsS0FBQSxFQUFBa0ssWUFBQSxFQUFBM0IsT0FBQSxFQUFBbGYsTUFBQSxFQUFBc2dCLFFBQUEsRUFBQXdCLDRCQUFBO1FBQUEsT0FBQWprQiwySUFBQSxVQUFBd04sVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFqTixJQUFBLEdBQUFpTixTQUFBLENBQUFoTixJQUFBO1lBQUE7Y0FDakZyRCxHQUFHLEdBQUcsSUFBSSxDQUFDOGxCLFFBQVEsQ0FBQyxDQUFDNUwsTUFBTSxDQUFDNVosT0FBTyxFQUFFLFFBQVEsRUFBRTRaLE1BQU0sQ0FBQ3ZuQixRQUFRLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUNnRixRQUFRLENBQUMsQ0FBQztjQUNwR3FMLFFBQVEsR0FBRyxJQUFJTSxRQUFRLENBQUMsQ0FBQztjQUN6QkssSUFBa0MsR0FBRztnQkFDekNzaEIsVUFBVSxFQUFWQSxVQUFVO2dCQUNWNkIsWUFBWSxFQUFFNU0sTUFBTSxDQUFDNE0sWUFBWTtnQkFDakNiLGtCQUFrQixFQUFFO2tCQUNsQnQwQixJQUFJLEVBQUVzMEIsa0JBQWtCLENBQUN0MEIsSUFBSTtrQkFDN0JnWixHQUFHLEVBQUVzYixrQkFBa0IsQ0FBQ3RiO2dCQUMxQjtjQUNGLENBQUM7Y0FFRDNILFFBQVEsQ0FBQ08sTUFBTSxDQUFDLFVBQVUsRUFBRWhQLElBQUksQ0FBQ3FJLFNBQVMsQ0FBQytHLElBQUksQ0FBQyxDQUFDO2NBRTNDK1gsS0FBSyxHQUFHNXhCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQXNtQixTQUFBLENBQUFqTixJQUFBO2NBSWxCNmdCLE9BQU8sR0FBRyxJQUFJO2NBQUE1VCxTQUFBLENBQUFoTixJQUFBO2NBQUEsT0FFRzZCLE9BQU8sQ0FBQ2lDLElBQUksQ0FBQyxDQUNoQzFELEtBQUssQ0FBQ3pELEdBQUcsRUFBRTtnQkFDVDBELE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVYO2NBQ1IsQ0FBQyxDQUFDLEVBQ0YsSUFBSWtDLE9BQU8sQ0FBVyxVQUFBMEIsT0FBTztnQkFBQSxPQUMzQnFkLE9BQU8sR0FBR3I0QixNQUFNLENBQUN1RSxVQUFVLENBQUMsWUFBTTtrQkFDaEMwZ0IsTUFBSSxDQUFDcmQsT0FBTyxDQUFDUyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsSUFBSXJFLEtBQUssc0NBQUE1QixNQUFBLENBQXNDZ1MsR0FBRyxNQUFHLENBQUMsQ0FBQztrQkFDOUc0RyxPQUFPLENBQUM7b0JBQUM3QixNQUFNLEVBQUU7a0JBQUcsQ0FBYSxDQUFDO2dCQUNwQyxDQUFDLEVBQUU4TCxNQUFJLENBQUNxVSxRQUFRLENBQUM7Y0FBQSxDQUNuQixDQUFDLENBQ0YsQ0FBQyxDQUNDeEYsT0FBTyxDQUFDLFlBQU07Z0JBQ2IsSUFBSXVFLE9BQU8sRUFBRTtrQkFDWDdZLFlBQVksQ0FBQzZZLE9BQU8sQ0FBQztnQkFDdkI7Y0FDRixDQUFDLENBQUM7WUFBQTtjQWhCSjJCLFlBQVksR0FBQXZWLFNBQUEsQ0FBQXhNLElBQUE7Y0FBQXdNLFNBQUEsQ0FBQWhOLElBQUE7Y0FBQTtZQUFBO2NBQUFnTixTQUFBLENBQUFqTixJQUFBO2NBQUFpTixTQUFBLENBQUF4SCxFQUFBLEdBQUF3SCxTQUFBO2NBa0JaLElBQUksQ0FBQzdjLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLGtDQUFrQyxFQUFBb2MsU0FBQSxDQUFBeEgsRUFBRyxDQUFDO2NBQUMsT0FBQXdILFNBQUEsQ0FBQXpNLE1BQUEsV0FFbkQ7Z0JBQUNtQixNQUFNLEVBQUU7Y0FBUSxDQUFDO1lBQUE7Y0FHckJBLE1BQWtDLEdBQUcsSUFBSSxDQUFDZ2lCLHlDQUF5QyxDQUFDbkIsWUFBWSxDQUFDO2NBQUEsTUFFbkc3Z0IsTUFBTSxLQUFLLElBQUk7Z0JBQUFzTCxTQUFBLENBQUFoTixJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBZ04sU0FBQSxDQUFBek0sTUFBQSxXQUNWO2dCQUFDbUIsTUFBTSxFQUFOQTtjQUFNLENBQUM7WUFBQTtjQUdYc2dCLFFBQVEsR0FBR3Y3QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFzbUIsU0FBQSxDQUFBaE4sSUFBQTtjQUFBLE9BQ2dCLElBQUksQ0FBQzJqQixpREFBaUQsQ0FBQ3BCLFlBQVksQ0FBQztZQUFBO2NBQXpHaUIsNEJBQTRCLEdBQUF4VyxTQUFBLENBQUF4TSxJQUFBO2NBRWxDLElBQUksQ0FBQ3JRLE9BQU8sQ0FBQzhILEtBQUssQ0FBQyxxREFBcUQsRUFBRXVyQiw0QkFBNEIsRUFBRXhCLFFBQVEsR0FBRzNKLEtBQUssQ0FBQztjQUFDLE9BQUFyTCxTQUFBLENBQUF6TSxNQUFBLFdBRW5IaWpCLDRCQUE0QjtZQUFBO1lBQUE7Y0FBQSxPQUFBeFcsU0FBQSxDQUFBdk0sSUFBQTtVQUFBO1FBQUEsR0FBQW1NLFFBQUE7TUFBQSxDQUNwQztNQUFBLFNBdkRLSyxvQkFBb0JBLENBQUEyVyxHQUFBLEVBQUFDLEdBQUE7UUFBQSxPQUFBbFgscUJBQUEsQ0FBQWhNLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQXBCbVYsb0JBQW9CO0lBQUE7RUFBQTtJQUFBbG1CLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUE2OEIsYUFBQSxHQUFBeGtCLDZJQUFBLGVBQUFDLDJJQUFBLENBeUQxQixTQUFBNGEsU0FDRXRELE1BQWUsRUFDZmlCLHFCQUE2QixFQUM3QmtCLHNCQUFxQyxFQUNyQzZHLFlBQTBCLEVBQzFCSixXQUF3QjtRQUFBLElBQUFyRixNQUFBO1FBQUEsSUFBQXpkLEdBQUEsRUFBQWdELFFBQUEsRUFBQVcsSUFBQSxFQUFBK1gsS0FBQSxFQUFBa0ssWUFBQSxFQUFBM0IsT0FBQSxFQUFBbGYsTUFBQSxFQUFBc2dCLFFBQUE7UUFBQSxPQUFBemlCLDJJQUFBLFVBQUErYixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXhiLElBQUEsR0FBQXdiLFNBQUEsQ0FBQXZiLElBQUE7WUFBQTtjQUVsQnJELEdBQUcsR0FBRyxJQUFJLENBQUM4bEIsUUFBUSxDQUFDLENBQUM1TCxNQUFNLENBQUM1WixPQUFPLEVBQUUsUUFBUSxFQUFFNFosTUFBTSxDQUFDdm5CLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDZ0YsUUFBUSxDQUFDLENBQUM7Y0FDdEZxTCxRQUFRLEdBQUcsSUFBSU0sUUFBUSxDQUFDLENBQUM7Y0FDekJLLElBQWlDLEdBQUc7Z0JBQ3hDc2hCLFVBQVUsRUFBVkEsVUFBVTtnQkFDVjZCLFlBQVksRUFBRTVNLE1BQU0sQ0FBQzRNLFlBQVk7Z0JBQ2pDM0wscUJBQXFCLEVBQXJCQSxxQkFBcUI7Z0JBQ3JCa0Isc0JBQXNCLEVBQXRCQSxzQkFBc0I7Z0JBQ3RCNkcsWUFBWSxFQUFFRiw2REFBbUIsQ0FBQ0MscUNBQXFDLENBQUNDLFlBQVksQ0FBQztnQkFDckZKLFdBQVcsRUFBRUYsNERBQWtCLENBQUNDLG1DQUFtQyxDQUFDQyxXQUFXO2NBQ2pGLENBQUM7Y0FFRDlmLFFBQVEsQ0FBQ08sTUFBTSxDQUFDLFVBQVUsRUFBRWhQLElBQUksQ0FBQ3FJLFNBQVMsQ0FBQytHLElBQUksQ0FBQyxDQUFDO2NBRTNDK1gsS0FBSyxHQUFHNXhCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQTYwQixTQUFBLENBQUF4YixJQUFBO2NBSWxCNmdCLE9BQU8sR0FBRyxJQUFJO2NBQUFyRixTQUFBLENBQUF2YixJQUFBO2NBQUEsT0FFRzZCLE9BQU8sQ0FBQ2lDLElBQUksQ0FBQyxDQUNoQzFELEtBQUssQ0FBQ3pELEdBQUcsRUFBRTtnQkFDVDBELE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVYO2NBQ1IsQ0FBQyxDQUFDLEVBQ0YsSUFBSWtDLE9BQU8sQ0FBVyxVQUFBMEIsT0FBTztnQkFBQSxPQUMzQnFkLE9BQU8sR0FBR3I0QixNQUFNLENBQUN1RSxVQUFVLENBQUMsWUFBTTtrQkFDaENzdEIsTUFBSSxDQUFDanFCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLElBQUlyRSxLQUFLLGlDQUFBNUIsTUFBQSxDQUFpQ2dTLEdBQUcsTUFBRyxDQUFDLENBQUM7a0JBQzFHNEcsT0FBTyxDQUFDO29CQUFDN0IsTUFBTSxFQUFFO2tCQUFHLENBQWEsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFMFksTUFBSSxDQUFDeUgsUUFBUSxDQUFDO2NBQUEsQ0FDbkIsQ0FBQyxDQUNGLENBQUMsQ0FDQ3hGLE9BQU8sQ0FBQyxZQUFNO2dCQUNiLElBQUl1RSxPQUFPLEVBQUU7a0JBQ1g3WSxZQUFZLENBQUM2WSxPQUFPLENBQUM7Z0JBQ3ZCO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FoQkoyQixZQUFZLEdBQUFoSCxTQUFBLENBQUEvYSxJQUFBO2NBQUErYSxTQUFBLENBQUF2YixJQUFBO2NBQUE7WUFBQTtjQUFBdWIsU0FBQSxDQUFBeGIsSUFBQTtjQUFBd2IsU0FBQSxDQUFBL1YsRUFBQSxHQUFBK1YsU0FBQTtjQWtCWixJQUFJLENBQUNwckIsT0FBTyxDQUFDUyxLQUFLLENBQUMsbUNBQW1DLEVBQUEycUIsU0FBQSxDQUFBL1YsRUFBRyxDQUFDO2NBQUMsT0FBQStWLFNBQUEsQ0FBQWhiLE1BQUEsV0FFcEQ7Z0JBQUNtQixNQUFNLEVBQUU7Y0FBUSxDQUFDO1lBQUE7Y0FHckJBLE1BQXdDLEdBQUcsSUFBSSxDQUFDcWlCLCtDQUErQyxDQUFDeEIsWUFBWSxDQUFDO2NBQzdHUCxRQUFRLEdBQUd2N0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUUzQixJQUFJLENBQUN5SixPQUFPLENBQUNDLElBQUksQ0FBQyxnREFBZ0QsRUFBRXNSLE1BQU0sRUFBRXNnQixRQUFRLEdBQUczSixLQUFLLENBQUM7Y0FBQyxPQUFBa0QsU0FBQSxDQUFBaGIsTUFBQSxXQUV2RjtnQkFBQ21CLE1BQU0sRUFBTkE7Y0FBTSxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUE2WixTQUFBLENBQUE5YSxJQUFBO1VBQUE7UUFBQSxHQUFBMFosUUFBQTtNQUFBLENBQ2hCO01BQUEsU0F2REtsQyxZQUFZQSxDQUFBK0wsSUFBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUEsRUFBQUMsSUFBQSxFQUFBQyxJQUFBO1FBQUEsT0FBQU4sYUFBQSxDQUFBbmpCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQVptZ0IsWUFBWTtJQUFBO0VBQUE7SUFBQWx4QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBbzlCLGlCQUFBLEdBQUEva0IsNklBQUEsZUFBQUMsMklBQUEsQ0F5RGxCLFNBQUFtZCxTQUF1QjdGLE1BQWUsRUFBRXlOLFVBQTZCLEVBQUVDLGtCQUEyQjtRQUFBLElBQUF6RyxNQUFBO1FBQUEsSUFBQXhZLE9BQUE7VUFBQTNJLEdBQUE7VUFBQWdELFFBQUE7VUFBQVcsSUFBQTtVQUFBK1gsS0FBQTtVQUFBa0ssWUFBQTtVQUFBM0IsT0FBQTtVQUFBbGYsTUFBQTtVQUFBc2dCLFFBQUE7VUFBQXdDLHdCQUFBO1VBQUFDLE1BQUEsR0FBQTNzQixTQUFBO1FBQUEsT0FBQXlILDJJQUFBLFVBQUFvZCxVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQTdjLElBQUEsR0FBQTZjLFNBQUEsQ0FBQTVjLElBQUE7WUFBQTtjQUFFc0YsT0FBaUIsR0FBQW1mLE1BQUEsQ0FBQXp6QixNQUFBLFFBQUF5ekIsTUFBQSxRQUFBaDNCLFNBQUEsR0FBQWczQixNQUFBLE1BQUcsRUFBRTtjQUNsSDluQixHQUFHLEdBQUcsSUFBSSxDQUFDOGxCLFFBQVEsQ0FBQyxDQUFDNUwsTUFBTSxDQUFDNVosT0FBTyxFQUFFLFFBQVEsRUFBRTRaLE1BQU0sQ0FBQ3ZuQixRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUNnRixRQUFRLENBQUMsQ0FBQztjQUNoR3FMLFFBQVEsR0FBRyxJQUFJTSxRQUFRLENBQUMsQ0FBQztjQUN6QkssSUFBOEIsR0FBRztnQkFDckNzaEIsVUFBVSxFQUFWQSxVQUFVO2dCQUNWNkIsWUFBWSxFQUFFNU0sTUFBTSxDQUFDNE0sWUFBWTtnQkFDakNhLFVBQVUsRUFBVkEsVUFBVTtnQkFDVkMsa0JBQWtCLEVBQWxCQSxrQkFBa0I7Z0JBQ2xCamYsT0FBTyxFQUFQQTtjQUNGLENBQUM7Y0FFRDNGLFFBQVEsQ0FBQ08sTUFBTSxDQUFDLFVBQVUsRUFBRWhQLElBQUksQ0FBQ3FJLFNBQVMsQ0FBQytHLElBQUksQ0FBQyxDQUFDO2NBRTNDK1gsS0FBSyxHQUFHNXhCLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7Y0FBQWsyQixTQUFBLENBQUE3YyxJQUFBO2NBSWxCNmdCLE9BQU8sR0FBRyxJQUFJO2NBQUFoRSxTQUFBLENBQUE1YyxJQUFBO2NBQUEsT0FFRzZCLE9BQU8sQ0FBQ2lDLElBQUksQ0FBQyxDQUNoQzFELEtBQUssQ0FBQ3pELEdBQUcsRUFBRTtnQkFDVDBELE1BQU0sRUFBRSxNQUFNO2dCQUNkQyxJQUFJLEVBQUVYO2NBQ1IsQ0FBQyxDQUFDLEVBQ0YsSUFBSWtDLE9BQU8sQ0FBVyxVQUFBMEIsT0FBTztnQkFBQSxPQUMzQnFkLE9BQU8sR0FBR3I0QixNQUFNLENBQUN1RSxVQUFVLENBQUMsWUFBTTtrQkFDaENneEIsTUFBSSxDQUFDM3RCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLDhCQUE4QixFQUFFLElBQUlyRSxLQUFLLGtDQUFBNUIsTUFBQSxDQUFrQ2dTLEdBQUcsTUFBRyxDQUFDLENBQUM7a0JBQ3RHNEcsT0FBTyxDQUFDO29CQUFDN0IsTUFBTSxFQUFFO2tCQUFHLENBQWEsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFb2MsTUFBSSxDQUFDK0QsUUFBUSxDQUFDO2NBQUEsQ0FDbkIsQ0FBQyxDQUNGLENBQUMsQ0FDQ3hGLE9BQU8sQ0FBQyxZQUFNO2dCQUNiLElBQUl1RSxPQUFPLEVBQUU7a0JBQ1g3WSxZQUFZLENBQUM2WSxPQUFPLENBQUM7Z0JBQ3ZCO2NBQ0YsQ0FBQyxDQUFDO1lBQUE7Y0FoQkoyQixZQUFZLEdBQUEzRixTQUFBLENBQUFwYyxJQUFBO2NBQUFvYyxTQUFBLENBQUE1YyxJQUFBO2NBQUE7WUFBQTtjQUFBNGMsU0FBQSxDQUFBN2MsSUFBQTtjQUFBNmMsU0FBQSxDQUFBcFgsRUFBQSxHQUFBb1gsU0FBQTtjQWtCWixJQUFJLENBQUN6c0IsT0FBTyxDQUFDUyxLQUFLLENBQUMsOEJBQThCLEVBQUFnc0IsU0FBQSxDQUFBcFgsRUFBRyxDQUFDO2NBQUMsT0FBQW9YLFNBQUEsQ0FBQXJjLE1BQUEsV0FFL0M7Z0JBQUNtQixNQUFNLEVBQUU7Y0FBUSxDQUFDO1lBQUE7Y0FHckJBLE1BQThCLEdBQUcsSUFBSSxDQUFDZ2pCLHFDQUFxQyxDQUFDbkMsWUFBWSxDQUFDO2NBQUEsTUFFM0Y3Z0IsTUFBTSxLQUFLLElBQUk7Z0JBQUFrYixTQUFBLENBQUE1YyxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBNGMsU0FBQSxDQUFBcmMsTUFBQSxXQUNWO2dCQUFDbUIsTUFBTSxFQUFOQTtjQUFNLENBQUM7WUFBQTtjQUdYc2dCLFFBQVEsR0FBR3Y3QixJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDO2NBQUFrMkIsU0FBQSxDQUFBNWMsSUFBQTtjQUFBLE9BQ1ksSUFBSSxDQUFDMmtCLDZDQUE2QyxDQUFDcEMsWUFBWSxDQUFDO1lBQUE7Y0FBakdpQyx3QkFBd0IsR0FBQTVILFNBQUEsQ0FBQXBjLElBQUE7Y0FFOUIsSUFBSSxDQUFDclEsT0FBTyxDQUFDQyxJQUFJLENBQUMsaURBQWlELEVBQUVvMEIsd0JBQXdCLEVBQUV4QyxRQUFRLEdBQUczSixLQUFLLENBQUM7Y0FBQyxPQUFBdUUsU0FBQSxDQUFBcmMsTUFBQSxXQUUxR2lrQix3QkFBd0I7WUFBQTtZQUFBO2NBQUEsT0FBQTVILFNBQUEsQ0FBQW5jLElBQUE7VUFBQTtRQUFBLEdBQUFpYyxRQUFBO01BQUEsQ0FDaEM7TUFBQSxTQXRES2tJLGdCQUFnQkEsQ0FBQUMsSUFBQSxFQUFBQyxJQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBVixpQkFBQSxDQUFBMWpCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQWhCOHNCLGdCQUFnQjtJQUFBO0VBQUE7SUFBQTc5QixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBKzlCLGNBQUEsR0FBQTFsQiw2SUFBQSxlQUFBQywySUFBQSxDQXdEdEIsU0FBQXVkLFNBQW9CakcsTUFBZSxFQUFFdFUsTUFBYztRQUFBLElBQUErYixNQUFBO1FBQUEsSUFBQTNoQixHQUFBLEVBQUFnRCxRQUFBLEVBQUFXLElBQUEsRUFBQStYLEtBQUEsRUFBQWtLLFlBQUEsRUFBQTNCLE9BQUEsRUFBQWxmLE1BQUEsRUFBQXNnQixRQUFBLEVBQUFpRCxxQkFBQTtRQUFBLE9BQUExbEIsMklBQUEsVUFBQXdkLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBamQsSUFBQSxHQUFBaWQsU0FBQSxDQUFBaGQsSUFBQTtZQUFBO2NBQzNDckQsR0FBRyxHQUFHLElBQUksQ0FBQzhsQixRQUFRLENBQUMsQ0FBQzVMLE1BQU0sQ0FBQzVaLE9BQU8sRUFBRSxRQUFRLEVBQUU0WixNQUFNLENBQUN2bkIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUNnRixRQUFRLENBQUMsQ0FBQztjQUN0RnFMLFFBQVEsR0FBRyxJQUFJTSxRQUFRLENBQUMsQ0FBQztjQUN6QkssSUFBMkIsR0FBRztnQkFDbENzaEIsVUFBVSxFQUFWQSxVQUFVO2dCQUNWNkIsWUFBWSxFQUFFNU0sTUFBTSxDQUFDNE0sWUFBWTtnQkFDakNsaEIsTUFBTSxFQUFOQSxNQUFNO2dCQUNOK0MsT0FBTyxFQUFFO2NBQ1gsQ0FBQztjQUVEM0YsUUFBUSxDQUFDTyxNQUFNLENBQUMsVUFBVSxFQUFFaFAsSUFBSSxDQUFDcUksU0FBUyxDQUFDK0csSUFBSSxDQUFDLENBQUM7Y0FFM0MrWCxLQUFLLEdBQUc1eEIsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBczJCLFNBQUEsQ0FBQWpkLElBQUE7Y0FJbEI2Z0IsT0FBTyxHQUFHLElBQUk7Y0FBQTVELFNBQUEsQ0FBQWhkLElBQUE7Y0FBQSxPQUVHNkIsT0FBTyxDQUFDaUMsSUFBSSxDQUFDLENBQ2hDMUQsS0FBSyxDQUFDekQsR0FBRyxFQUFFO2dCQUNUMEQsTUFBTSxFQUFFLE1BQU07Z0JBQ2RDLElBQUksRUFBRVgsUUFBUTtnQkFDZDdGLEtBQUssRUFBRTtjQUNULENBQUMsQ0FBQyxFQUNGLElBQUkrSCxPQUFPLENBQVcsVUFBQTBCLE9BQU87Z0JBQUEsT0FDM0JxZCxPQUFPLEdBQUdyNEIsTUFBTSxDQUFDdUUsVUFBVSxDQUFDLFlBQU07a0JBQ2hDd3hCLE1BQUksQ0FBQ251QixPQUFPLENBQUNTLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJckUsS0FBSyw2QkFBQTVCLE1BQUEsQ0FBNkJnUyxHQUFHLE1BQUcsQ0FBQyxDQUFDO2tCQUN4RjRHLE9BQU8sQ0FBQztvQkFBQzdCLE1BQU0sRUFBRTtrQkFBRyxDQUFhLENBQUM7Z0JBQ3BDLENBQUMsRUFBRTRjLE1BQUksQ0FBQ3VELFFBQVEsQ0FBQztjQUFBLENBQ25CLENBQUMsQ0FDRixDQUFDLENBQ0N4RixPQUFPLENBQUMsWUFBTTtnQkFDYixJQUFJdUUsT0FBTyxFQUFFO2tCQUNYN1ksWUFBWSxDQUFDNlksT0FBTyxDQUFDO2dCQUN2QjtjQUNGLENBQUMsQ0FBQztZQUFBO2NBakJKMkIsWUFBWSxHQUFBdkYsU0FBQSxDQUFBeGMsSUFBQTtjQUFBd2MsU0FBQSxDQUFBaGQsSUFBQTtjQUFBO1lBQUE7Y0FBQWdkLFNBQUEsQ0FBQWpkLElBQUE7Y0FBQWlkLFNBQUEsQ0FBQXhYLEVBQUEsR0FBQXdYLFNBQUE7Y0FtQlosSUFBSSxDQUFDN3NCLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLHlCQUF5QixFQUFBb3NCLFNBQUEsQ0FBQXhYLEVBQUcsQ0FBQztjQUFDLE9BQUF3WCxTQUFBLENBQUF6YyxNQUFBLFdBRTFDO2dCQUFDbUIsTUFBTSxFQUFFO2NBQVEsQ0FBQztZQUFBO2NBR3JCQSxNQUEyQixHQUFHLElBQUksQ0FBQ3dqQixxQ0FBcUMsQ0FBQzNDLFlBQVksQ0FBQztjQUFBLE1BRXhGN2dCLE1BQU0sS0FBSyxJQUFJO2dCQUFBc2IsU0FBQSxDQUFBaGQsSUFBQTtnQkFBQTtjQUFBO2NBQUEsT0FBQWdkLFNBQUEsQ0FBQXpjLE1BQUEsV0FDVjtnQkFBQ21CLE1BQU0sRUFBTkE7Y0FBTSxDQUFDO1lBQUE7Y0FHWHNnQixRQUFRLEdBQUd2N0IsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQztjQUFBczJCLFNBQUEsQ0FBQWhkLElBQUE7Y0FBQSxPQUNTLElBQUksQ0FBQ21sQiwwQ0FBMEMsQ0FBQzVDLFlBQVksQ0FBQztZQUFBO2NBQTNGMEMscUJBQXFCLEdBQUFqSSxTQUFBLENBQUF4YyxJQUFBO2NBRTNCLElBQUksQ0FBQ3JRLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDZDQUE2QyxFQUFFNjBCLHFCQUFxQixFQUFFakQsUUFBUSxHQUFHM0osS0FBSyxDQUFDO2NBQUMsT0FBQTJFLFNBQUEsQ0FBQXpjLE1BQUEsV0FFbkcwa0IscUJBQXFCO1lBQUE7WUFBQTtjQUFBLE9BQUFqSSxTQUFBLENBQUF2YyxJQUFBO1VBQUE7UUFBQSxHQUFBcWMsUUFBQTtNQUFBLENBQzdCO01BQUEsU0F0REttQixhQUFhQSxDQUFBbUgsSUFBQSxFQUFBQyxJQUFBO1FBQUEsT0FBQUwsY0FBQSxDQUFBcmtCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQWJtbUIsYUFBYTtJQUFBO0VBQUE7SUFBQWwzQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBcStCLHVCQUFBLEdBQUFobUIsNklBQUEsZUFBQUMsMklBQUEsQ0F3RG5CLFNBQUFvZSxTQUE2QjlHLE1BQWUsRUFBRXRVLE1BQWM7UUFBQSxJQUFBclgsVUFBQTtRQUFBLElBQUFrVSxPQUFBLEVBQUF6QyxHQUFBLEVBQUFnRCxRQUFBLEVBQUFXLElBQUE7UUFBQSxPQUFBZiwySUFBQSxVQUFBcWUsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE5ZCxJQUFBLEdBQUE4ZCxTQUFBLENBQUE3ZCxJQUFBO1lBQUE7Y0FDMUQsSUFBSSxHQUFBOVUsVUFBQSxHQUFDdEIsU0FBUyxjQUFBc0IsVUFBQSxlQUFUQSxVQUFBLENBQVdxNkIsVUFBVSxHQUFFO2dCQUNwQm5tQixPQUFPLEdBQUcsSUFBSSxDQUFDNmUsYUFBYSxDQUFDcEgsTUFBTSxFQUFFdFUsTUFBTSxDQUFDO2NBQ3BEO2NBRU01RixHQUFHLEdBQUcsSUFBSSxDQUFDOGxCLFFBQVEsQ0FBQyxDQUFDNUwsTUFBTSxDQUFDNVosT0FBTyxFQUFFLFFBQVEsRUFBRTRaLE1BQU0sQ0FBQ3ZuQixRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQ2dGLFFBQVEsQ0FBQyxDQUFDO2NBQ3RGcUwsUUFBUSxHQUFHLElBQUlNLFFBQVEsQ0FBQyxDQUFDO2NBQ3pCSyxJQUEyQixHQUFHO2dCQUNsQ3NoQixVQUFVLEVBQVZBLFVBQVU7Z0JBQ1Y2QixZQUFZLEVBQUU1TSxNQUFNLENBQUM0TSxZQUFZO2dCQUNqQ2xoQixNQUFNLEVBQU5BLE1BQU07Z0JBQ04rQyxPQUFPLEVBQUU7Y0FDWCxDQUFDO2NBRUQzRixRQUFRLENBQUNPLE1BQU0sQ0FBQyxVQUFVLEVBQUVoUCxJQUFJLENBQUNxSSxTQUFTLENBQUMrRyxJQUFJLENBQUMsQ0FBQztjQUVqRDFXLFNBQVMsQ0FBQzI3QixVQUFVLENBQUM1b0IsR0FBRyxFQUFFZ0QsUUFBUSxDQUFDO1lBQUM7WUFBQTtjQUFBLE9BQUFrZSxTQUFBLENBQUFwZCxJQUFBO1VBQUE7UUFBQSxHQUFBa2QsUUFBQTtNQUFBLENBQ3JDO01BQUEsU0FqQkt2RixzQkFBc0JBLENBQUFvTixJQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBSCx1QkFBQSxDQUFBM2tCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQXRCc2dCLHNCQUFzQjtJQUFBO0VBQUE7SUFBQXJ4QixHQUFBO0lBQUFFLEtBQUEsRUFtQjVCLFNBQVF3N0IsUUFBUUEsQ0FBQ2lELElBQWMsRUFBTztNQUNwQyxJQUFNL3pCLEdBQUcsR0FBRyxJQUFJekUsR0FBRyxDQUFDLElBQUksQ0FBQ3d6QixJQUFJLENBQUM7TUFDOUIsSUFBTWlGLFdBQVcsR0FBR2gwQixHQUFHLENBQUNrTCxRQUFRLENBQUN6UyxLQUFLLENBQUMsR0FBRyxDQUFDO01BRTNDdTdCLFdBQVcsQ0FBQzMwQixNQUFNLEdBQUcyMEIsV0FBVyxDQUFDMzBCLE1BQU0sR0FBRyxDQUFDO01BRTNDVyxHQUFHLENBQUNrTCxRQUFRLEdBQUc4b0IsV0FBVyxDQUFDaDdCLE1BQU0sQ0FBQWdXLEtBQUEsQ0FBbEJnbEIsV0FBVyxFQUFBcmtCLDhJQUFBLENBQVdva0IsSUFBSSxFQUFDLENBQUNwVCxJQUFJLENBQUMsR0FBRyxDQUFDO01BRXBELE9BQU8zZ0IsR0FBRztJQUNaO0VBQUM7SUFBQTVLLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFnN0IsWUFBWUEsQ0FBQSxFQUFXO01BQzdCLElBQU10d0IsR0FBRyxHQUFHLElBQUl6RSxHQUFHLENBQUMsSUFBSSxDQUFDd3pCLElBQUksQ0FBQztNQUM5QixJQUFNdmhCLFVBQVUsR0FBR2YsK0RBQWMsQ0FBQ2UsVUFBVTtNQUM1QyxJQUFNbkwsVUFBVSxHQUFHTiwrREFBVSxDQUFDZ3VCLG1CQUFtQixDQUFDMXRCLFVBQVU7TUFFNURyQyxHQUFHLENBQUNnd0IsWUFBWSxDQUFDamxCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO01BQ3BDL0ssR0FBRyxDQUFDZ3dCLFlBQVksQ0FBQ2psQixHQUFHLENBQUMsU0FBUyxFQUFFeUMsVUFBVSxDQUFDO01BQzNDeE4sR0FBRyxDQUFDZ3dCLFlBQVksQ0FBQ2psQixHQUFHLENBQUMsWUFBWSxFQUFFMUksVUFBVSxDQUFDO01BQzlDckMsR0FBRyxDQUFDZ3dCLFlBQVksQ0FBQ2psQixHQUFHLENBQUMsR0FBRyxLQUFBL1IsTUFBQSxDQUFLbEUsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQyxDQUFFLENBQUM7TUFFMUMsT0FBT2lMLEdBQUcsQ0FBQzJDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZCO0VBQUM7SUFBQXZOLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVFpOEIsNEJBQTRCQSxDQUFDL2hCLFFBQWtCLEVBQWlCO01BQ3RFLElBQUksQ0FBQ0EsUUFBUSxFQUFFO1FBQ2IsT0FBTyxRQUFRO01BQ2pCO01BRUEsUUFBUUEsUUFBUSxDQUFDTyxNQUFNO1FBQ3JCLEtBQUssR0FBRztVQUNOLE9BQU8sSUFBSTtRQUNiLEtBQUssR0FBRztVQUNOLE9BQU8sY0FBYztRQUN2QixLQUFLLEdBQUc7VUFDTixPQUFPLGdCQUFnQjtRQUN6QixLQUFLLEdBQUc7VUFDTixPQUFPLGFBQWE7UUFDdEIsS0FBSyxHQUFHO1VBQ04sT0FBTyw0QkFBNEI7UUFDckMsS0FBSyxHQUFHO1VBQ04sT0FBTyxTQUFTO1FBQ2xCLEtBQUssR0FBRztVQUNOLE9BQU8seUJBQXlCO1FBQ2xDLEtBQUssR0FBRztVQUNOLE9BQU8sZUFBZTtRQUN4QixLQUFLLEdBQUc7VUFDTixPQUFPLFVBQVU7UUFDbkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCO1VBQ0UsT0FBTyxRQUFRO01BQ25CO0lBQ0Y7RUFBQztJQUFBM2EsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBUTg3Qiw4QkFBOEJBLENBQUM1aEIsUUFBa0IsRUFBbUI7TUFDMUUsSUFBSSxDQUFDQSxRQUFRLEVBQUU7UUFDYixPQUFPLFFBQVE7TUFDakI7TUFFQSxRQUFRQSxRQUFRLENBQUNPLE1BQU07UUFDckIsS0FBSyxHQUFHO1VBQ04sT0FBTyxJQUFJO1FBQ2IsS0FBSyxHQUFHO1VBQ04sT0FBTyxjQUFjO1FBQ3ZCLEtBQUssR0FBRztVQUNOLE9BQU8sZ0JBQWdCO1FBQ3pCLEtBQUssR0FBRztVQUNOLE9BQU8sYUFBYTtRQUN0QixLQUFLLEdBQUc7VUFDTixPQUFPLFNBQVM7UUFDbEIsS0FBSyxHQUFHO1VBQ04sT0FBTyx5QkFBeUI7UUFDbEMsS0FBSyxHQUFHO1VBQ04sT0FBTyxlQUFlO1FBQ3hCLEtBQUssR0FBRztVQUNOLE9BQU8sVUFBVTtRQUNuQixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkI7VUFDRSxPQUFPLFFBQVE7TUFDbkI7SUFDRjtFQUFDO0lBQUEzYSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFReThCLHlDQUF5Q0EsQ0FBQ3ZpQixRQUFrQixFQUE4QjtNQUNoRyxJQUFJLENBQUNBLFFBQVEsRUFBRTtRQUNiLE9BQU8sUUFBUTtNQUNqQjtNQUVBLFFBQVFBLFFBQVEsQ0FBQ08sTUFBTTtRQUNyQixLQUFLLEdBQUc7VUFDTixPQUFPLElBQUk7UUFDYixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxTQUFTO1FBQ2xCLEtBQUssR0FBRztVQUNOLE9BQU8sVUFBVTtRQUNuQixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkI7VUFDRSxPQUFPLFFBQVE7TUFDbkI7SUFDRjtFQUFDO0lBQUEzYSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRODhCLCtDQUErQ0EsQ0FBQzVpQixRQUFrQixFQUFvQztNQUM1RyxJQUFJLENBQUNBLFFBQVEsRUFBRTtRQUNiLE9BQU8sUUFBUTtNQUNqQjtNQUVBLFFBQVFBLFFBQVEsQ0FBQ08sTUFBTTtRQUNyQixLQUFLLEdBQUc7VUFDTixPQUFPLElBQUk7UUFDYixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxTQUFTO1FBQ2xCLEtBQUssR0FBRztVQUNOLE9BQU8sVUFBVTtRQUNuQixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkI7VUFDRSxPQUFPLFFBQVE7TUFDbkI7SUFDRjtFQUFDO0lBQUEzYSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFReTlCLHFDQUFxQ0EsQ0FBQ3ZqQixRQUFrQixFQUEwQjtNQUN4RixJQUFJLENBQUNBLFFBQVEsRUFBRTtRQUNiLE9BQU8sUUFBUTtNQUNqQjtNQUVBLFFBQVFBLFFBQVEsQ0FBQ08sTUFBTTtRQUNyQixLQUFLLEdBQUc7VUFDTixPQUFPLElBQUk7UUFDYixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxTQUFTO1FBQ2xCLEtBQUssR0FBRztVQUNOLE9BQU8sVUFBVTtRQUNuQixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkI7VUFDRSxPQUFPLFFBQVE7TUFDbkI7SUFDRjtFQUFDO0lBQUEzYSxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFRaStCLHFDQUFxQ0EsQ0FBQy9qQixRQUFrQixFQUF1QjtNQUNyRixJQUFJLENBQUNBLFFBQVEsRUFBRTtRQUNiLE9BQU8sUUFBUTtNQUNqQjtNQUVBLFFBQVFBLFFBQVEsQ0FBQ08sTUFBTTtRQUNyQixLQUFLLEdBQUc7VUFDTixPQUFPLElBQUk7UUFDYixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkIsS0FBSyxHQUFHO1VBQ04sT0FBTyxTQUFTO1FBQ2xCLEtBQUssR0FBRztVQUNOLE9BQU8sVUFBVTtRQUNuQixLQUFLLEdBQUc7VUFDTixPQUFPLGNBQWM7UUFDdkI7VUFDRSxPQUFPLFFBQVE7TUFDbkI7SUFDRjtFQUFDO0lBQUEzYSxHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBMitCLHVDQUFBLEdBQUF0bUIsNklBQUEsZUFBQUMsMklBQUEsQ0FFRCxTQUFBOGUsU0FBcURwaEIsT0FBZSxFQUFFa0UsUUFBa0I7UUFBQSxJQUFBbEgsSUFBQSxFQUFBdW9CLGlCQUFBO1FBQUEsT0FBQWpqQiwySUFBQSxVQUFBaWYsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUExZSxJQUFBLEdBQUEwZSxTQUFBLENBQUF6ZSxJQUFBO1lBQUE7Y0FBQXllLFNBQUEsQ0FBQXplLElBQUE7Y0FBQSxPQUNuRW1CLFFBQVEsQ0FBQzBrQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQTVCNXJCLElBQUksR0FBQXdrQixTQUFBLENBQUFqZSxJQUFBO2NBQ0pnaUIsaUJBQXlDLEdBQUc7Z0JBQUM5Z0IsTUFBTSxFQUFFekgsSUFBSSxDQUFDeUg7Y0FBTSxDQUFDO2NBRXZFOGdCLGlCQUFpQixDQUFDM0wsTUFBTSxHQUFHO2dCQUN6QjVaLE9BQU8sRUFBUEEsT0FBTztnQkFDUDNOLFFBQVEsRUFBRTJLLElBQUksQ0FBQzNLLFFBQVE7Z0JBQ3ZCbTBCLFlBQVksRUFBRXhwQixJQUFJLENBQUN3cEI7Y0FDckIsQ0FBQztjQUVEakIsaUJBQWlCLENBQUNyTSxHQUFHLEdBQUdsYyxJQUFJLENBQUNrYyxHQUFHO2NBRWhDLElBQUlsYyxJQUFJLEVBQUU7Z0JBQ1IsSUFBSUEsSUFBSSxDQUFDNnJCLGdCQUFnQixFQUFFO2tCQUN6QnRELGlCQUFpQixDQUFDc0QsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDQywwQ0FBMEMsQ0FBQzlyQixJQUFJLENBQUM2ckIsZ0JBQWdCLENBQUM7Z0JBQzdHO2dCQUVBLElBQUk3ckIsSUFBSSxDQUFDdXBCLDRCQUE0QixJQUFJdnBCLElBQUksQ0FBQ3VwQiw0QkFBNEIsQ0FBQ1osa0JBQWtCLEVBQUU7a0JBQzdGSixpQkFBaUIsQ0FBQ2dCLDRCQUE0QixHQUFHO29CQUFDWixrQkFBa0IsRUFBRTNvQixJQUFJLENBQUN1cEIsNEJBQTRCLENBQUNaO2tCQUFrQixDQUFDO2dCQUM3SDtnQkFFQSxJQUFJM29CLElBQUksQ0FBQytyQiwrQkFBK0IsSUFBSS9yQixJQUFJLENBQUMrckIsK0JBQStCLENBQUNwRCxrQkFBa0IsRUFBRTtrQkFDbkdKLGlCQUFpQixDQUFDd0QsK0JBQStCLEdBQUc7b0JBQUNwRCxrQkFBa0IsRUFBRTNvQixJQUFJLENBQUMrckIsK0JBQStCLENBQUNwRDtrQkFBa0IsQ0FBQztnQkFDbkk7Z0JBRUEsSUFBSTNvQixJQUFJLENBQUNnc0IsOEJBQThCLElBQUloc0IsSUFBSSxDQUFDZ3NCLDhCQUE4QixDQUFDckQsa0JBQWtCLEVBQUU7a0JBQ2pHSixpQkFBaUIsQ0FBQ3lELDhCQUE4QixHQUFHO29CQUFDckQsa0JBQWtCLEVBQUUzb0IsSUFBSSxDQUFDZ3NCLDhCQUE4QixDQUFDckQ7a0JBQWtCLENBQUM7Z0JBQ2pJO2NBQ0Y7Y0FBQyxPQUFBbkUsU0FBQSxDQUFBbGUsTUFBQSxXQUVNaWlCLGlCQUFpQjtZQUFBO1lBQUE7Y0FBQSxPQUFBL0QsU0FBQSxDQUFBaGUsSUFBQTtVQUFBO1FBQUEsR0FBQTRkLFFBQUE7TUFBQSxDQUN6QjtNQUFBLFNBL0JhMkUsc0NBQXNDQSxDQUFBa0QsSUFBQSxFQUFBQyxJQUFBO1FBQUEsT0FBQVAsdUNBQUEsQ0FBQWpsQixLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUF0Q2tyQixzQ0FBc0M7SUFBQTtFQUFBO0lBQUFqOEIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQW0vQixxQ0FBQSxHQUFBOW1CLDZJQUFBLGVBQUFDLDJJQUFBLENBaUNwRCxTQUFBOG1CLFVBQW1EcHBCLE9BQWUsRUFBRWtFLFFBQWtCO1FBQUEsSUFBQWxILElBQUEsRUFBQXFzQixlQUFBO1FBQUEsT0FBQS9tQiwySUFBQSxVQUFBZ25CLFdBQUFDLFVBQUE7VUFBQSxrQkFBQUEsVUFBQSxDQUFBem1CLElBQUEsR0FBQXltQixVQUFBLENBQUF4bUIsSUFBQTtZQUFBO2NBQUF3bUIsVUFBQSxDQUFBeG1CLElBQUE7Y0FBQSxPQUNqRW1CLFFBQVEsQ0FBQzBrQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQTVCNXJCLElBQUksR0FBQXVzQixVQUFBLENBQUFobUIsSUFBQTtjQUNKOGxCLGVBQXFDLEdBQUc7Z0JBQUM1a0IsTUFBTSxFQUFFekgsSUFBSSxDQUFDeUg7Y0FBTSxDQUFDO2NBRW5FNGtCLGVBQWUsQ0FBQ3pQLE1BQU0sR0FBRztnQkFDdkI1WixPQUFPLEVBQVBBLE9BQU87Z0JBQ1AzTixRQUFRLEVBQUUySyxJQUFJLENBQUMzSyxRQUFRO2dCQUN2Qm0wQixZQUFZLEVBQUV4cEIsSUFBSSxDQUFDd3BCO2NBQ3JCLENBQUM7Y0FFRCxJQUFJeHBCLElBQUksRUFBRTtnQkFDUixJQUFJQSxJQUFJLENBQUM2ckIsZ0JBQWdCLEVBQUU7a0JBQ3pCUSxlQUFlLENBQUNSLGdCQUFnQixHQUFHLElBQUksQ0FBQ0MsMENBQTBDLENBQUM5ckIsSUFBSSxDQUFDNnJCLGdCQUFnQixDQUFDO2dCQUMzRztnQkFFQSxJQUFJN3JCLElBQUksQ0FBQ3VwQiw0QkFBNEIsSUFBSXZwQixJQUFJLENBQUN1cEIsNEJBQTRCLENBQUNaLGtCQUFrQixFQUFFO2tCQUM3RjBELGVBQWUsQ0FBQzlDLDRCQUE0QixHQUFHO29CQUFDWixrQkFBa0IsRUFBRTNvQixJQUFJLENBQUN1cEIsNEJBQTRCLENBQUNaO2tCQUFrQixDQUFDO2dCQUMzSDtnQkFFQSxJQUFJM29CLElBQUksQ0FBQytyQiwrQkFBK0IsSUFBSS9yQixJQUFJLENBQUMrckIsK0JBQStCLENBQUNwRCxrQkFBa0IsRUFBRTtrQkFDbkcwRCxlQUFlLENBQUNOLCtCQUErQixHQUFHO29CQUFDcEQsa0JBQWtCLEVBQUUzb0IsSUFBSSxDQUFDK3JCLCtCQUErQixDQUFDcEQ7a0JBQWtCLENBQUM7Z0JBQ2pJO2dCQUVBLElBQUkzb0IsSUFBSSxDQUFDZ3NCLDhCQUE4QixJQUFJaHNCLElBQUksQ0FBQ2dzQiw4QkFBOEIsQ0FBQ3JELGtCQUFrQixFQUFFO2tCQUNqRzBELGVBQWUsQ0FBQ0wsOEJBQThCLEdBQUc7b0JBQUNyRCxrQkFBa0IsRUFBRTNvQixJQUFJLENBQUNnc0IsOEJBQThCLENBQUNyRDtrQkFBa0IsQ0FBQztnQkFDL0g7Y0FDRjtjQUFDLE9BQUE0RCxVQUFBLENBQUFqbUIsTUFBQSxXQUVNK2xCLGVBQWU7WUFBQTtZQUFBO2NBQUEsT0FBQUUsVUFBQSxDQUFBL2xCLElBQUE7VUFBQTtRQUFBLEdBQUE0bEIsU0FBQTtNQUFBLENBQ3ZCO01BQUEsU0E3QmFsRCxvQ0FBb0NBLENBQUFzRCxJQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBTixxQ0FBQSxDQUFBemxCLEtBQUEsT0FBQTdJLFNBQUE7TUFBQTtNQUFBLE9BQXBDcXJCLG9DQUFvQztJQUFBO0VBQUE7SUFBQXA4QixHQUFBO0lBQUFFLEtBQUEsRUErQmxELFNBQVE4K0IsMENBQTBDQSxDQUFDbGhCLGFBQStCLEVBQW9CO01BQ3BHLElBQU1paEIsZ0JBQWtDLEdBQUc7UUFBQzFmLFVBQVUsRUFBRTtNQUFFLENBQUM7TUFFM0QsSUFBSXZCLGFBQWEsQ0FBQzhoQixZQUFZLEVBQUU7UUFDOUJiLGdCQUFnQixDQUFDYSxZQUFZLEdBQUc5aEIsYUFBYSxDQUFDOGhCLFlBQVk7TUFDNUQ7TUFFQSxJQUFJLE9BQU85aEIsYUFBYSxDQUFDK2hCLG9CQUFvQixLQUFLLFFBQVEsRUFBRTtRQUMxRGQsZ0JBQWdCLENBQUNjLG9CQUFvQixHQUFHL2hCLGFBQWEsQ0FBQytoQixvQkFBb0I7TUFDNUU7TUFFQSxJQUFJL2hCLGFBQWEsQ0FBQ3VCLFVBQVUsRUFBRTtRQUM1QixJQUFNQSxVQUEwQixHQUFHLEVBQUU7UUFFckMsS0FBSyxJQUFJdEQsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHK0IsYUFBYSxDQUFDdUIsVUFBVSxDQUFDcFYsTUFBTSxFQUFFOFIsQ0FBQyxFQUFFLEVBQUU7VUFDeERzRCxVQUFVLENBQUNwVyxJQUFJLENBQUM7WUFDZHFXLElBQUksRUFBRXhCLGFBQWEsQ0FBQ3VCLFVBQVUsQ0FBQ3RELENBQUMsQ0FBQyxDQUFDdUQsSUFBSTtZQUN0Q0MsUUFBUSxFQUFFekIsYUFBYSxDQUFDdUIsVUFBVSxDQUFDdEQsQ0FBQyxDQUFDLENBQUN3RCxRQUFRO1lBQzlDQyxVQUFVLEVBQUUxQixhQUFhLENBQUN1QixVQUFVLENBQUN0RCxDQUFDLENBQUMsQ0FBQ3lEO1VBQzFDLENBQUMsQ0FBQztRQUNKO1FBRUF1ZixnQkFBZ0IsQ0FBQzFmLFVBQVUsR0FBR0EsVUFBVTtNQUMxQztNQUVBLElBQUl2QixhQUFhLENBQUNnaUIsa0JBQWtCLEVBQUU7UUFDcENmLGdCQUFnQixDQUFDZSxrQkFBa0IsR0FBR2hpQixhQUFhLENBQUNnaUIsa0JBQWtCO01BQ3hFO01BRUEsSUFBSWhpQixhQUFhLENBQUNpaUIsYUFBYSxFQUFFO1FBQy9CaEIsZ0JBQWdCLENBQUNnQixhQUFhLEdBQUdqaUIsYUFBYSxDQUFDaWlCLGFBQWE7TUFDOUQ7TUFFQSxPQUFPaEIsZ0JBQWdCO0lBQ3pCO0VBQUM7SUFBQS8rQixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBOC9CLGtEQUFBLEdBQUF6bkIsNklBQUEsZUFBQUMsMklBQUEsQ0FDRCxTQUFBeW5CLFVBQWdFN2xCLFFBQWtCO1FBQUEsSUFBQWxILElBQUEsRUFBQXVwQiw0QkFBQTtRQUFBLE9BQUFqa0IsMklBQUEsVUFBQTBuQixXQUFBQyxVQUFBO1VBQUEsa0JBQUFBLFVBQUEsQ0FBQW5uQixJQUFBLEdBQUFtbkIsVUFBQSxDQUFBbG5CLElBQUE7WUFBQTtjQUFBa25CLFVBQUEsQ0FBQWxuQixJQUFBO2NBQUEsT0FDN0RtQixRQUFRLENBQUMwa0IsSUFBSSxDQUFDLENBQUM7WUFBQTtjQUE1QjVyQixJQUFJLEdBQUFpdEIsVUFBQSxDQUFBMW1CLElBQUE7Y0FDSmdqQiw0QkFBK0QsR0FBRztnQkFBQzloQixNQUFNLEVBQUV6SCxJQUFJLENBQUN5SDtjQUFNLENBQUM7Y0FFN0YsSUFBSXpILElBQUksSUFBSUEsSUFBSSxDQUFDMm9CLGtCQUFrQixFQUFFO2dCQUNuQ1ksNEJBQTRCLENBQUNaLGtCQUFrQixHQUFHM29CLElBQUksQ0FBQzJvQixrQkFBa0I7Y0FDM0U7Y0FBQyxPQUFBc0UsVUFBQSxDQUFBM21CLE1BQUEsV0FFTWlqQiw0QkFBNEI7WUFBQTtZQUFBO2NBQUEsT0FBQTBELFVBQUEsQ0FBQXptQixJQUFBO1VBQUE7UUFBQSxHQUFBdW1CLFNBQUE7TUFBQSxDQUNwQztNQUFBLFNBVGFyRCxpREFBaURBLENBQUF3RCxJQUFBO1FBQUEsT0FBQUosa0RBQUEsQ0FBQXBtQixLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFqRDZyQixpREFBaUQ7SUFBQTtFQUFBO0lBQUE1OEIsR0FBQTtJQUFBRSxLQUFBO01BQUEsSUFBQW1nQyw4Q0FBQSxHQUFBOW5CLDZJQUFBLGVBQUFDLDJJQUFBLENBVy9ELFNBQUE4bkIsVUFBNERsbUIsUUFBa0I7UUFBQSxJQUFBbEgsSUFBQSxFQUFBdXFCLHdCQUFBO1FBQUEsT0FBQWpsQiwySUFBQSxVQUFBK25CLFdBQUFDLFVBQUE7VUFBQSxrQkFBQUEsVUFBQSxDQUFBeG5CLElBQUEsR0FBQXduQixVQUFBLENBQUF2bkIsSUFBQTtZQUFBO2NBQUF1bkIsVUFBQSxDQUFBdm5CLElBQUE7Y0FBQSxPQUN6RG1CLFFBQVEsQ0FBQzBrQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQTVCNXJCLElBQUksR0FBQXN0QixVQUFBLENBQUEvbUIsSUFBQTtjQUNKZ2tCLHdCQUF1RCxHQUFHO2dCQUM5RDlpQixNQUFNLEVBQUV6SCxJQUFJLENBQUN5SCxNQUFNO2dCQUNuQjRELE9BQU8sRUFBRTtjQUNYLENBQUM7Y0FFRCxJQUFJckwsSUFBSSxFQUFFO2dCQUNSLElBQUlBLElBQUksQ0FBQ3FMLE9BQU8sRUFBRTtrQkFDaEJrZix3QkFBd0IsQ0FBQ2xmLE9BQU8sR0FBR3JMLElBQUksQ0FBQ3FMLE9BQU87Z0JBQ2pEO2NBQ0Y7Y0FBQyxPQUFBaWlCLFVBQUEsQ0FBQWhuQixNQUFBLFdBRU1pa0Isd0JBQXdCO1lBQUE7WUFBQTtjQUFBLE9BQUErQyxVQUFBLENBQUE5bUIsSUFBQTtVQUFBO1FBQUEsR0FBQTRtQixTQUFBO01BQUEsQ0FDaEM7TUFBQSxTQWRhMUMsNkNBQTZDQSxDQUFBNkMsSUFBQTtRQUFBLE9BQUFKLDhDQUFBLENBQUF6bUIsS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBN0M2c0IsNkNBQTZDO0lBQUE7RUFBQTtJQUFBNTlCLEdBQUE7SUFBQUUsS0FBQTtNQUFBLElBQUF3Z0MsMkNBQUEsR0FBQW5vQiw2SUFBQSxlQUFBQywySUFBQSxDQWdCM0QsU0FBQW1vQixVQUF5RHZtQixRQUFrQjtRQUFBLElBQUFsSCxJQUFBLEVBQUFna0IsYUFBQTtRQUFBLE9BQUExZSwySUFBQSxVQUFBb29CLFdBQUFDLFVBQUE7VUFBQSxrQkFBQUEsVUFBQSxDQUFBN25CLElBQUEsR0FBQTZuQixVQUFBLENBQUE1bkIsSUFBQTtZQUFBO2NBQUE0bkIsVUFBQSxDQUFBNW5CLElBQUE7Y0FBQSxPQUN0RG1CLFFBQVEsQ0FBQzBrQixJQUFJLENBQUMsQ0FBQztZQUFBO2NBQTVCNXJCLElBQUksR0FBQTJ0QixVQUFBLENBQUFwbkIsSUFBQTtjQUNKeWQsYUFBeUMsR0FBRztnQkFBQ3ZjLE1BQU0sRUFBRXpILElBQUksQ0FBQ3lIO2NBQU0sQ0FBQztjQUFBLE9BQUFrbUIsVUFBQSxDQUFBcm5CLE1BQUEsV0FFaEUwZCxhQUFhO1lBQUE7WUFBQTtjQUFBLE9BQUEySixVQUFBLENBQUFubkIsSUFBQTtVQUFBO1FBQUEsR0FBQWluQixTQUFBO01BQUEsQ0FDckI7TUFBQSxTQUxhdkMsMENBQTBDQSxDQUFBMEMsSUFBQTtRQUFBLE9BQUFKLDJDQUFBLENBQUE5bUIsS0FBQSxPQUFBN0ksU0FBQTtNQUFBO01BQUEsT0FBMUNxdEIsMENBQTBDO0lBQUE7RUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzUxQjFEO0FBQ0E7QUFDQTs7QUFFeUI7QUFDOEI7QUFDaUI7QUFHSjtBQUNyQjtBQUNxQjtBQUNoQjtBQUNTO0FBQ0s7QUFDdEI7QUFFVztBQUVpQjtBQUdKO0FBQ3hCO0FBRTVDLElBQU00QyxnQ0FBZ0MsR0FBRyxHQUFHO0FBQzVDLElBQU1DLHlCQUF5QixHQUFHLEtBQUs7QUFBQyxJQUVuQkMsY0FBYztFQVFqQyxTQUFBQSxlQUFZQyxjQUFjLEVBQUVDLHFCQUFxQixFQUFFQyxzQkFBc0IsRUFBRWxNLG1CQUF3QyxFQUFFO0lBQUEzMUIsMklBQUEsT0FBQTBoQyxjQUFBO0lBQUF6aEMsMklBQUEsa0JBUGpGc0ksOERBQWEsQ0FBQ0csU0FBUyxDQUFDLGdCQUFnQixDQUFDO0lBQUF6SSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQUFBQSwySUFBQTtJQVEzRSxJQUFJLENBQUM2dEIsZUFBZSxHQUFHNlQsY0FBYztJQUNyQyxJQUFJLENBQUM1VCxzQkFBc0IsR0FBRzZULHFCQUFxQjtJQUNuRCxJQUFJLENBQUM1VCx1QkFBdUIsR0FBRzZULHNCQUFzQjtJQUNyRCxJQUFJLENBQUMxSyxvQkFBb0IsR0FBR3hCLG1CQUFtQjtJQUMvQyxJQUFJLENBQUM3MEIsWUFBWSxHQUFHLElBQUlqQiw0REFBYyxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDaXVCLGVBQWUsQ0FBQ3dFLFdBQVcsQ0FBQzV3QixHQUFHLENBQUMsSUFBSSxDQUFDO0VBQzVDO0VBQUMsT0FBQW5CLHdJQUFBLENBQUFtaEMsY0FBQTtJQUFBbGhDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFveEIsS0FBS0EsQ0FBQzFtQixHQUFHLEVBQUVqQixLQUFLLEVBQUUycEIsbUJBQW1CLEVBQUViLDZCQUE2QixFQUFpQjtNQUFBLElBQUFseUIsS0FBQTtNQUNuRixJQUFNc2Qsd0JBQXdCLEdBQUcsT0FBTyxJQUFJLENBQUMyUCx1QkFBdUIsQ0FBQ0wsc0JBQXNCLEtBQUssVUFBVSxJQUFJLE9BQU8sSUFBSSxDQUFDSyx1QkFBdUIsQ0FBQ0osc0JBQXNCLEtBQUssVUFBVTtNQUV2TCxPQUFPdFMsT0FBTyxDQUFDd0IsR0FBRyxDQUFDLENBQ2pCZ1EsNkRBQVMsQ0FBQzRNLGtDQUFrQyxDQUFDdHVCLEdBQUcsQ0FBQyxFQUNqRHFTLGtFQUFxQixDQUFDUyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUVHLHdCQUF3QixDQUFDLENBQ2xGMUQsSUFBSSxDQUFDLFVBQUFPLElBQUEsRUFBa0M7UUFBQSxJQUFoQ29FLFVBQVUsR0FBQXBFLElBQUEsQ0FBVm9FLFVBQVU7VUFBRXJCLGNBQWMsR0FBQS9DLElBQUEsQ0FBZCtDLGNBQWM7UUFDaENsZCxLQUFJLENBQUNndEIsc0JBQXNCLENBQUM5UCxjQUFjLENBQUN2ZCxLQUFLLEdBQUd1ZCxjQUFjO1FBRWpFLE9BQU87VUFDTHFCLFVBQVUsRUFBVkEsVUFBVTtVQUNWckIsY0FBYyxFQUFkQTtRQUNGLENBQUM7TUFDSCxDQUFDLENBQUMsQ0FDTCxDQUFDLENBQ0N0RCxJQUFJLENBQUMsVUFBQWdkLEtBQUEsRUFBOEM7UUFBQSxJQUFBbUssS0FBQSxHQUFBQywwSUFBQSxDQUFBcEssS0FBQTtVQUE1Q3ZILFFBQVEsR0FBQTBSLEtBQUE7VUFBQUUsTUFBQSxHQUFBRixLQUFBO1VBQUd4aUIsVUFBVSxHQUFBMGlCLE1BQUEsQ0FBVjFpQixVQUFVO1VBQUVyQixjQUFjLEdBQUErakIsTUFBQSxDQUFkL2pCLGNBQWM7UUFDM0NsZCxLQUFJLENBQUMrc0IsZUFBZSxDQUFDbUIsTUFBTSxDQUFDdnVCLEtBQUssR0FBRyxJQUFJO1FBQ3hDSyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDc0MsUUFBUSxDQUFDMXZCLEtBQUssR0FBRzB2QixRQUFRO1FBQzlDcnZCLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFdW1CLFFBQVEsQ0FBQ3JpQixRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzVEaE4sS0FBSSxDQUFDNkksT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUd5VixVQUFVLENBQUN5QixHQUFHLENBQUM7UUFFcEQsSUFBSWpiLHVFQUFpQixDQUFDbThCLG1CQUFtQixJQUFJLENBQUNoa0IsY0FBYyxDQUFDaWtCLHdCQUF3QixJQUFJLENBQUNqa0IsY0FBYyxDQUFDa2tCLHdCQUF3QixFQUFFO1VBQ2pJbGtCLGNBQWMsQ0FBQ3VKLEtBQUssQ0FBQyxDQUFDO1VBQ3RCdkosY0FBYyxDQUFDcGQsT0FBTyxDQUFDLENBQUM7VUFFeEIsSUFBSXlILDRDQUFHLENBQUNrdkIsK0JBQStCLElBQUksRUFBRTF4Qix1RUFBaUIsQ0FBQzVDLFFBQVEsSUFBSW9GLDRDQUFHLENBQUNtdkIsb0NBQW9DLENBQUMsRUFBRTtZQUNwSDF4QixvRUFBdUIsQ0FBQ0Usc0JBQXNCLENBQUMsQ0FBQztVQUNsRDtVQUVBZ1ksY0FBYyxHQUFHLElBQUk7VUFDckJxQixVQUFVLEdBQUcsSUFBSTtVQUNqQnZlLEtBQUksQ0FBQ2d0QixzQkFBc0IsQ0FBQzlQLGNBQWMsQ0FBQ3ZkLEtBQUssR0FBR3VkLGNBQWM7UUFDbkU7UUFFQSxPQUFPbVMsUUFBUSxDQUFDeEksU0FBUyxDQUFDemQsS0FBSyxFQUFFbVYsVUFBVSxFQUFFdmUsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ29DLFlBQVksQ0FBQ3h2QixLQUFLLENBQUM7TUFDdkYsQ0FBQyxDQUFDLENBQ0RpYSxJQUFJLENBQUMsVUFBQXluQixLQUFBLEVBQTRJO1FBQUEsSUFBMUlqbkIsTUFBTSxHQUFBaW5CLEtBQUEsQ0FBTmpuQixNQUFNO1VBQUVtVixNQUFNLEdBQUE4UixLQUFBLENBQU45UixNQUFNO1VBQUVpUCxnQkFBZ0IsR0FBQTZDLEtBQUEsQ0FBaEI3QyxnQkFBZ0I7VUFBRXRDLDRCQUE0QixHQUFBbUYsS0FBQSxDQUE1Qm5GLDRCQUE0QjtVQUFFeUMsOEJBQThCLEdBQUEwQyxLQUFBLENBQTlCMUMsOEJBQThCO1VBQUVELCtCQUErQixHQUFBMkMsS0FBQSxDQUEvQjNDLCtCQUErQjtVQUFFN1AsR0FBRyxHQUFBd1MsS0FBQSxDQUFIeFMsR0FBRztRQUMxSTd1QixLQUFJLENBQUMrc0IsZUFBZSxDQUFDd0MsTUFBTSxDQUFDNXZCLEtBQUssR0FBRzR2QixNQUFNO1FBQzFDdnZCLEtBQUksQ0FBQytzQixlQUFlLENBQUM4QixHQUFHLENBQUNsdkIsS0FBSyxHQUFHa3ZCLEdBQUc7UUFFcEM3dUIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQytLLDZDQUE2QyxDQUFDLENBQUM7UUFFcEU5M0IsS0FBSSxDQUFDNkksT0FBTyxDQUFDOEgsS0FBSyxDQUNoQixtREFBbUQsRUFDbkQzUSxLQUFJLENBQUMrc0IsZUFBZSxDQUFDL2tCLFFBQVEsRUFDN0JvUyxNQUFNLEVBQ05va0IsZ0JBQWdCLEVBQ2hCdEMsNEJBQTRCLEVBQzVCeUMsOEJBQThCLEVBQzlCRCwrQkFDRixDQUFDO1FBRUQxK0IsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssR0FBR0ssS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2dMLGlDQUFpQyxDQUFDM2QsTUFBTSxDQUFDO1FBRWpHcGEsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQzhLLFdBQVcsQ0FBQ3pkLE1BQU0sQ0FBQztRQUV4QyxJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1VBQ25CO1FBQ0Y7UUFFQSxPQUFPcGEsS0FBSSxDQUFDc2hDLHFCQUFxQixDQUFDdGhDLEtBQUksQ0FBQ2d0QixzQkFBc0IsQ0FBQzlQLGNBQWMsQ0FBQ3ZkLEtBQUssRUFBRTYrQixnQkFBZ0IsQ0FBQyxDQUNsRzVrQixJQUFJLENBQUMsVUFBQXNELGNBQWMsRUFBSTtVQUN0QixJQUFJcWtCLHVCQUF1QjtVQUMzQixJQUFJQyxlQUFlLEdBQUcsS0FBSztVQUMzQixJQUFJdkUsa0JBQWtCLEdBQUcsS0FBSztVQUM5QixJQUFNRCxVQUE2QixHQUFHLEVBQUU7VUFFeEMsSUFBSSxDQUFDaDlCLEtBQUksQ0FBQ2d0QixzQkFBc0IsQ0FBQzlQLGNBQWMsQ0FBQ3ZkLEtBQUssRUFBRTtZQUNyREssS0FBSSxDQUFDZ3RCLHNCQUFzQixDQUFDOVAsY0FBYyxDQUFDdmQsS0FBSyxHQUFHdWQsY0FBYztVQUNuRTtVQUVBQSxjQUFjLENBQUNvSixjQUFjLEdBQUcsVUFBQ3hjLENBQUMsRUFBVztZQUMzQyxJQUFJOUosS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQzV2QixLQUFLLEtBQUs0dkIsTUFBTSxFQUFFO2NBQ2hEO1lBQ0Y7WUFFQSxJQUFJdnZCLEtBQUksQ0FBQ2d0QixzQkFBc0IsQ0FBQzlQLGNBQWMsQ0FBQ3ZkLEtBQUssS0FBS3VkLGNBQWMsRUFBRTtjQUN2RTtZQUNGO1lBRUEsSUFBSXNrQixlQUFlLEVBQUU7Y0FDbkI7WUFDRjtZQUVBLElBQUksQ0FBQ2o2Qiw0Q0FBRyxDQUFDd0QsbUJBQW1CLENBQUNwTCxLQUFLLEVBQUU7Y0FDbEM7WUFDRjtZQUVBLElBQUltSyxDQUFDLENBQUMyM0IsU0FBUyxJQUFJMzNCLENBQUMsQ0FBQzIzQixTQUFTLENBQUNBLFNBQVMsRUFBRTtjQUN4Q3pFLFVBQVUsQ0FBQ3QwQixJQUFJLENBQUNvQixDQUFDLENBQUMyM0IsU0FBUyxDQUFDO1lBQzlCLENBQUMsTUFBTTtjQUNMeEUsa0JBQWtCLEdBQUcsSUFBSTtZQUMzQjtZQUVBLElBQUksQ0FBQ3NFLHVCQUF1QixFQUFFO2NBQzVCQSx1QkFBdUIsR0FBRy83QixVQUFVLENBQUMsWUFBTTtnQkFDekMsSUFBSXhGLEtBQUksQ0FBQytzQixlQUFlLENBQUN3QyxNQUFNLENBQUM1dkIsS0FBSyxLQUFLNHZCLE1BQU0sRUFBRTtrQkFDaEQ7Z0JBQ0Y7Z0JBRUEsSUFBSWlTLGVBQWUsRUFBRTtrQkFDbkI7Z0JBQ0Y7Z0JBRUEsSUFBTTFwQixPQUFPLEdBQUc5WCxLQUFJLENBQUMrc0IsZUFBZSxDQUFDc0MsUUFBUSxDQUFDMXZCLEtBQUssQ0FBQzI5QixnQkFBZ0IsQ0FBQy9OLE1BQU0sRUFBRXlOLFVBQVUsRUFBRUMsa0JBQWtCLENBQUMsQ0FDekdyakIsSUFBSSxDQUFDLFVBQUE4bkIsS0FBQSxFQUF1QjtrQkFBQSxJQUFyQnRuQixNQUFNLEdBQUFzbkIsS0FBQSxDQUFOdG5CLE1BQU07b0JBQUU0RCxPQUFPLEdBQUEwakIsS0FBQSxDQUFQMWpCLE9BQU87a0JBQ3JCLElBQUk1RCxNQUFNLEtBQUssSUFBSSxFQUFFO29CQUNuQnBhLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ3FJLElBQUksQ0FBQyxvREFBb0QsRUFBRWxSLEtBQUksQ0FBQytzQixlQUFlLENBQUMva0IsUUFBUSxFQUFFb1MsTUFBTSxDQUFDO29CQUU5RztrQkFDRjtrQkFFQSxJQUFJNEQsT0FBTyxDQUFDbGEsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUM5QjA5QixlQUFlLEdBQUcsSUFBSTtrQkFDeEI7a0JBRUF4aEMsS0FBSSxDQUFDNkksT0FBTyxDQUFDQyxJQUFJLENBQUMsNkRBQTZELEVBQUU5SSxLQUFJLENBQUMrc0IsZUFBZSxDQUFDL2tCLFFBQVEsRUFBRW9TLE1BQU0sRUFBRTRELE9BQU8sQ0FBQztnQkFDbEksQ0FBQyxDQUFDLENBQ0Q5RCxLQUFLLENBQUMsVUFBQXBRLENBQUMsRUFBSTtrQkFDVjlKLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDLG1DQUFtQyxFQUFFdEosS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQy9rQixRQUFRLEVBQUU4QixDQUFDLENBQUM7Z0JBQzNGLENBQUMsQ0FBQztjQUNOLENBQUMsRUFBRTIyQixnQ0FBZ0MsQ0FBQztZQUN0QztVQUNGLENBQUM7VUFFRHZqQixjQUFjLENBQUNzSiwwQkFBMEIsR0FBRyxZQUFZO1lBQ3RELElBQUl4bUIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3dDLE1BQU0sQ0FBQzV2QixLQUFLLEtBQUs0dkIsTUFBTSxFQUFFO2NBQ2hEO1lBQ0Y7WUFFQSxJQUFJdnZCLEtBQUksQ0FBQ2d0QixzQkFBc0IsQ0FBQzlQLGNBQWMsQ0FBQ3ZkLEtBQUssS0FBS3VkLGNBQWMsRUFBRTtjQUN2RTtZQUNGO1lBRUEsSUFBTXlrQixhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUEsRUFBZTtjQUNoQztjQUNBO2NBQ0EzaEMsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssR0FBR3lyQiwrREFBWSxDQUFDK0ssZUFBZTtjQUUvRCxJQUFJbjJCLEtBQUksQ0FBQytzQixlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLLEVBQUU7Z0JBQzNDSyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxDQUFDcXhCLEtBQUssQ0FBQyxDQUFDO2dCQUMvQ2h4QixLQUFJLENBQUMrc0IsZUFBZSxDQUFDWCxZQUFZLENBQUN6c0IsS0FBSyxDQUFDc3hCLFNBQVMsR0FBRyxJQUFJO2NBQzFEO2NBRUFqeEIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQzN1QixLQUFLLEdBQUcsS0FBSztjQUMxQ0ssS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3FCLE9BQU8sQ0FBQ3p1QixLQUFLLEdBQUcsSUFBSTtjQUV6QyxJQUFNbVksT0FBTyxHQUFHOVgsS0FBSSxDQUFDbzJCLG9CQUFvQixDQUFDLENBQUMsQ0FDeENsYyxLQUFLLENBQUMsVUFBQXBRLENBQUMsRUFBSTtnQkFDVjlKLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ1MsS0FBSyxDQUNoQixtRkFBbUYsRUFDbkZ0SixLQUFJLENBQUMrc0IsZUFBZSxDQUFDL2tCLFFBQVEsRUFDN0JrVixjQUFjLENBQUNxSCxrQkFBa0IsRUFDakN6YSxDQUNGLENBQUM7Y0FDSCxDQUFDLENBQUM7WUFDTixDQUFDO1lBRUQsUUFBUW9ULGNBQWMsQ0FBQ3FILGtCQUFrQjtjQUN2QyxLQUFLLFVBQVU7Y0FDZixLQUFLLFdBQVc7Y0FDaEIsS0FBSyxXQUFXO2NBQ2hCLEtBQUssS0FBSztnQkFDUjtjQUVGLEtBQUssY0FBYztjQUNuQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSWppQixTQUFTLENBQUNzL0IsTUFBTSxFQUFFO2tCQUNwQjVoQyxLQUFJLENBQUM2SSxPQUFPLENBQUNDLElBQUksQ0FBQyxnRUFBZ0UsRUFBRTlJLEtBQUksQ0FBQytzQixlQUFlLENBQUMva0IsUUFBUSxFQUFFa1YsY0FBYyxDQUFDcUgsa0JBQWtCLENBQUM7a0JBQ3JKdmtCLEtBQUksQ0FBQzZoQyx1QkFBdUIsQ0FBQzNrQixjQUFjLEVBQUV5a0IsYUFBYSxDQUFDO2dCQUM3RDtnQkFFQTtjQUNGLEtBQUssUUFBUTtnQkFDWDNoQyxLQUFJLENBQUM2SSxPQUFPLENBQUNDLElBQUksQ0FBQyxnRUFBZ0UsRUFBRTlJLEtBQUksQ0FBQytzQixlQUFlLENBQUMva0IsUUFBUSxFQUFFa1YsY0FBYyxDQUFDcUgsa0JBQWtCLENBQUM7Z0JBRXJKb2QsYUFBYSxDQUFDLENBQUM7Z0JBRWY7Y0FDRjtnQkFDRTl5QixvRUFBaUIsQ0FBQ3FPLGNBQWMsQ0FBQ3FILGtCQUFrQixDQUFDO1lBQ3hEO1VBQ0YsQ0FBQztVQUVELElBQU11ZCxrQkFBa0IsR0FBRyxJQUFJdm5CLE9BQU8sQ0FBYyxVQUFDMEIsT0FBTyxFQUFFQyxNQUFNLEVBQUs7WUFDdkUsSUFBSSxDQUFDblgsdUVBQWlCLENBQUNnOUIsZUFBZSxFQUFFO2NBQ3RDLElBQU05TSxVQUFTLEdBQUd6dkIsVUFBVSxDQUFDO2dCQUFBLE9BQU0wVyxNQUFNLENBQUMsSUFBSWpYLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2NBQUEsR0FBRXk3Qix5QkFBeUIsQ0FBQztjQUUxR3hqQixjQUFjLENBQUNrSixPQUFPLEdBQUcsVUFBQ3RjLENBQUMsRUFBVztnQkFDcEMyVyxZQUFZLENBQUN3VSxVQUFTLENBQUM7Z0JBQ3ZCaFosT0FBTyxDQUFDblMsQ0FBQyxDQUFDazRCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN2QixDQUFDO2NBRUQ7WUFDRjtZQUVBLElBQU1DLGNBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBSW40QixDQUFDLEVBQVc7Y0FDakM7Y0FDQTJXLFlBQVksQ0FBQ3dVLFNBQVMsQ0FBQztjQUN2Qi9YLGNBQWMsQ0FBQ3RjLG1CQUFtQixDQUFDLE9BQU8sRUFBRXFoQyxjQUFhLENBQUM7Y0FDMUQva0IsY0FBYyxDQUFDdGMsbUJBQW1CLENBQUMsV0FBVyxFQUFFcWhDLGNBQWEsQ0FBQztjQUU5RCxJQUFJbjRCLENBQUMsQ0FBQ2s0QixPQUFPLEVBQUU7Z0JBQ2IvbEIsT0FBTyxDQUFDblMsQ0FBQyxDQUFDazRCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUN2QixDQUFDLE1BQU07Z0JBQ0wvbEIsT0FBTyxDQUFDblMsQ0FBQyxDQUFDeWxCLE1BQU0sQ0FBQztjQUNuQjtZQUNGLENBQUM7WUFFRCxJQUFNMEYsU0FBUyxHQUFHenZCLFVBQVUsQ0FBQyxZQUFNO2NBQ2pDMFgsY0FBYyxDQUFDdGMsbUJBQW1CLENBQUMsT0FBTyxFQUFFcWhDLGNBQWEsQ0FBQztjQUMxRC9rQixjQUFjLENBQUN0YyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUVxaEMsY0FBYSxDQUFDO2NBQzlEL2xCLE1BQU0sQ0FBQyxJQUFJalgsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDN0MsQ0FBQyxFQUFFeTdCLHlCQUF5QixDQUFDO1lBRTdCeGpCLGNBQWMsQ0FBQ3hjLGdCQUFnQixDQUFDLE9BQU8sRUFBRXVoQyxjQUFhLENBQUM7WUFDdkQva0IsY0FBYyxDQUFDeGMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFdWhDLGNBQWEsQ0FBQztZQUUzRDtVQUNGLENBQUMsQ0FBQztVQUVGLE9BQU8sSUFBSTFuQixPQUFPLENBQU8sVUFBQTBCLE9BQU8sRUFBSTtZQUNsQ0EsT0FBTyxDQUFDLENBQUM7VUFDWCxDQUFDLENBQUMsQ0FBQ3JDLElBQUksQ0FBQyxZQUFNO1lBQ1osSUFBSSxDQUFDc2lCLDRCQUE0QixFQUFFO2NBQ2pDO1lBQ0Y7WUFFQWw4QixLQUFJLENBQUM2SSxPQUFPLENBQUNDLElBQUksQ0FBQywrQkFBK0IsRUFBRTlJLEtBQUksQ0FBQytzQixlQUFlLENBQUMva0IsUUFBUSxFQUFFazBCLDRCQUE0QixDQUFDWixrQkFBa0IsQ0FBQ3RiLEdBQUcsQ0FBQztZQUV0SSxPQUFPOUMsY0FBYyxDQUFDZ0ksbUJBQW1CLENBQUNnWCw0QkFBNEIsQ0FBQ1osa0JBQWtCLENBQUMsQ0FDdkZwaEIsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7Y0FDVjlKLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDZEQUE2RCxFQUFFOUksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQy9rQixRQUFRLEVBQUVrMEIsNEJBQTRCLENBQUNaLGtCQUFrQixFQUFFeHhCLENBQUMsQ0FBQzZGLE9BQU8sQ0FBQztjQUUzSyxNQUFNN0YsQ0FBQztZQUNULENBQUMsQ0FBQztVQUNOLENBQUMsQ0FBQyxDQUFDOFAsSUFBSSxDQUFDLFlBQU07WUFDWixJQUFJLENBQUM4a0IsK0JBQStCLEVBQUU7Y0FDcEM7WUFDRjtZQUVBMStCLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGlDQUFpQyxFQUFFOUksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQy9rQixRQUFRLEVBQUUwMkIsK0JBQStCLENBQUNwRCxrQkFBa0IsQ0FBQ3RiLEdBQUcsQ0FBQztZQUUzSSxPQUFPOUMsY0FBYyxDQUFDeUksb0JBQW9CLENBQUMrWSwrQkFBK0IsQ0FBQ3BELGtCQUFrQixDQUFDLENBQzNGcGhCLEtBQUssQ0FBQyxVQUFBcFEsQ0FBQyxFQUFJO2NBQ1Y5SixLQUFJLENBQUM2SSxPQUFPLENBQUNDLElBQUksQ0FBQyw4REFBOEQsRUFBRTlJLEtBQUksQ0FBQytzQixlQUFlLENBQUMva0IsUUFBUSxFQUFFMDJCLCtCQUErQixDQUFDcEQsa0JBQWtCLEVBQUV4eEIsQ0FBQyxDQUFDNkYsT0FBTyxDQUFDO2NBRS9LLE1BQU03RixDQUFDO1lBQ1QsQ0FBQyxDQUFDO1VBQ04sQ0FBQyxDQUFDLENBQUM4UCxJQUFJLENBQUMsWUFBTTtZQUNaLElBQUksQ0FBQytrQiw4QkFBOEIsRUFBRTtjQUNuQztZQUNGO1lBRUEzK0IsS0FBSSxDQUFDNkksT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUU5SSxLQUFJLENBQUMrc0IsZUFBZSxDQUFDL2tCLFFBQVEsRUFBRTIyQiw4QkFBOEIsQ0FBQ3JELGtCQUFrQixDQUFDdGIsR0FBRyxDQUFDO1lBRXpJLE9BQU85QyxjQUFjLENBQUN5SSxvQkFBb0IsQ0FBQ2daLDhCQUE4QixDQUFDckQsa0JBQWtCLENBQUMsQ0FDMUZwaEIsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7Y0FDVjlKLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLDhEQUE4RCxFQUFFOUksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQy9rQixRQUFRLEVBQUUyMkIsOEJBQThCLENBQUNyRCxrQkFBa0IsRUFBRXh4QixDQUFDLENBQUM2RixPQUFPLENBQUM7Y0FFOUssTUFBTTdGLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FDRDhQLElBQUksQ0FBQyxZQUFNO2NBQ1YsT0FBT3NELGNBQWMsQ0FBQzRILFlBQVksQ0FBQztnQkFDakN0RyxtQkFBbUIsRUFBRSxJQUFJO2dCQUN6QkMsbUJBQW1CLEVBQUU7Y0FDdkIsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM3RSxJQUFJLENBQUMsVUFBQXNvQixNQUFNLEVBQUk7Y0FDaEJsaUMsS0FBSSxDQUFDNkksT0FBTyxDQUFDQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUU5SSxLQUFJLENBQUMrc0IsZUFBZSxDQUFDL2tCLFFBQVEsRUFBRWs2QixNQUFNLENBQUM7Y0FFMUYsT0FBT2xpQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDc0MsUUFBUSxDQUFDMXZCLEtBQUssQ0FBQ2dtQixvQkFBb0IsQ0FBQzRKLE1BQU0sRUFBRTJTLE1BQU0sQ0FBQztZQUNqRixDQUFDLENBQUMsQ0FBQ3RvQixJQUFJLENBQUMsVUFBQXVvQixLQUFBLEVBQWtDO2NBQUEsSUFBaEMvbkIsTUFBTSxHQUFBK25CLEtBQUEsQ0FBTi9uQixNQUFNO2dCQUFFa2hCLGtCQUFrQixHQUFBNkcsS0FBQSxDQUFsQjdHLGtCQUFrQjtjQUNsQ3Q3QixLQUFJLENBQUMrc0IsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHSyxLQUFJLENBQUNvaUMsNENBQTRDLENBQUNob0IsTUFBTSxDQUFDO2NBRTVGLElBQUlBLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ25CcGEsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ3VCLE9BQU8sQ0FBQzN1QixLQUFLLEdBQUcsS0FBSztnQkFDMUNLLEtBQUksQ0FBQytzQixlQUFlLENBQUN5QixPQUFPLENBQUM3dUIsS0FBSyxHQUFHLElBQUk7Z0JBQ3pDSyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDMkIsT0FBTyxDQUFDL3VCLEtBQUssR0FBRyxLQUFLO2dCQUUxQztjQUNGO2NBRUEsT0FBT3VkLGNBQWMsQ0FBQ2dJLG1CQUFtQixDQUFDb1csa0JBQWtCLENBQUMsQ0FDMURwaEIsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7Z0JBQ1Y5SixLQUFJLENBQUM2SSxPQUFPLENBQUNDLElBQUksQ0FBQyw2REFBNkQsRUFBRTlJLEtBQUksQ0FBQytzQixlQUFlLENBQUMva0IsUUFBUSxFQUFFc3pCLGtCQUFrQixFQUFFeHhCLENBQUMsQ0FBQzZGLE9BQU8sQ0FBQztnQkFFOUksTUFBTTdGLENBQUM7Y0FDVCxDQUFDLENBQUM7WUFDTixDQUFDLENBQUM7VUFDTixDQUFDLENBQUMsQ0FBQzhQLElBQUksQ0FBQyxZQUFNO1lBQ1ptWixtQkFBbUIsQ0FBQ2hyQixPQUFPLENBQUMvSCxLQUFJLENBQUMrc0IsZUFBZSxDQUFDL2tCLFFBQVEsQ0FBQztZQUUxRCxPQUFPODVCLGtCQUFrQjtVQUMzQixDQUFDLENBQUMsQ0FBQ2xvQixJQUFJLENBQUMsVUFBQXlGLFdBQVcsRUFBSTtZQUNyQixJQUFJcmYsS0FBSSxDQUFDaXRCLHVCQUF1QixDQUFDUiwyQkFBMkIsQ0FBQzlzQixLQUFLLEVBQUU7Y0FDbEUsSUFBTTBpQyx1QkFBdUIsR0FBRyxJQUFJbmpCLHVEQUFTLENBQUNoQyxjQUFjLENBQUM2Qyx3QkFBd0IsQ0FBQ0MsR0FBRyxDQUFDO2NBQzFGLElBQUFzaUIscUJBQUEsR0FBc0I5QiwwRUFBaUIsQ0FBQytCLGdDQUFnQyxDQUFDbGpCLFdBQVcsRUFBRW5DLGNBQWMsQ0FBQzRJLFlBQVksQ0FBQyxDQUFDLEVBQUU5bEIsS0FBSSxDQUFDaXRCLHVCQUF1QixDQUFDTCxzQkFBc0IsRUFBRTVzQixLQUFJLENBQUNpdEIsdUJBQXVCLENBQUNKLHNCQUFzQixFQUFFd1YsdUJBQXVCLENBQUNqaUIsVUFBVSxFQUFFaWlCLHVCQUF1QixDQUFDbmlCLFVBQVUsQ0FBQztnQkFBL1JxUixXQUFXLEdBQUErUSxxQkFBQSxDQUFYL1EsV0FBVztjQUVsQnZ4QixLQUFJLENBQUNELFlBQVksQ0FBQ1ksR0FBRyxDQUFDNHdCLFdBQVcsQ0FBQztZQUNwQztZQUVBLElBQUl2eEIsS0FBSSxDQUFDaXRCLHVCQUF1QixDQUFDVCxvQkFBb0IsQ0FBQzdzQixLQUFLLEVBQUU7Y0FDM0QsSUFBQTZpQyxzQkFBQSxHQUF5Q2hDLDBFQUFpQixDQUFDaUMsbUNBQW1DLENBQUNwakIsV0FBVyxFQUFFcmYsS0FBSSxDQUFDaXRCLHVCQUF1QixDQUFDUCw0QkFBNEIsRUFBRTFzQixLQUFJLENBQUNpdEIsdUJBQXVCLENBQUNOLDRCQUE0QixDQUFDO2dCQUExTitWLGlCQUFpQixHQUFBRixzQkFBQSxDQUFqQkUsaUJBQWlCO2dCQUFFblIsWUFBVyxHQUFBaVIsc0JBQUEsQ0FBWGpSLFdBQVc7Y0FFckN2eEIsS0FBSSxDQUFDRCxZQUFZLENBQUNZLEdBQUcsQ0FBQzR3QixZQUFXLENBQUM7Y0FDbENsUyxXQUFXLEdBQUdxakIsaUJBQWlCO1lBQ2pDO1lBRUExaUMsS0FBSSxDQUFDZ3RCLHNCQUFzQixDQUFDM04sV0FBVyxDQUFDMWYsS0FBSyxHQUFHMGYsV0FBVztZQUUzRCxJQUFNc2pCLG9CQUFvQixHQUFHLElBQUl2akIsa0VBQW9CLENBQUNsQyxjQUFjLEVBQUVtQyxXQUFXLEVBQUVyZixLQUFJLENBQUMrc0IsZUFBZSxDQUFDc0MsUUFBUSxDQUFDMXZCLEtBQUssQ0FBQ3doQixhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBRXpJbmhCLEtBQUksQ0FBQ0QsWUFBWSxDQUFDWSxHQUFHLENBQUNnaUMsb0JBQW9CLENBQUM7WUFFM0MsSUFBTUMseUNBQXlDLEdBQUdELG9CQUFvQixDQUFDRSxZQUFZLENBQUNoYyxTQUFTLENBQUMsVUFBQWljLFVBQVUsRUFBSTtjQUMxRzlpQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDN0wsYUFBYSxDQUFDdmhCLEtBQUssR0FBR21qQyxVQUFVO2NBRXJELElBQUksQ0FBQzlpQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDZ1csaUJBQWlCLElBQUksQ0FBQy9pQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDaVcsaUJBQWlCLEVBQUU7Z0JBQ3RGaGpDLEtBQUksQ0FBQytzQixlQUFlLENBQUNpVyxpQkFBaUIsR0FBR0YsVUFBVSxDQUFDRyxLQUFLO2dCQUN6RGpqQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDZ1csaUJBQWlCLEdBQUdELFVBQVUsQ0FBQ3BnQixLQUFLO2dCQUV6RDtjQUNGO2NBRUEsSUFBSXdnQixnQkFBZ0IsR0FBRyxLQUFLO2NBQzVCLElBQUlDLGdCQUFnQixHQUFHLEtBQUs7Y0FFNUIsSUFBSUwsVUFBVSxDQUFDRyxLQUFLLEVBQUU7Z0JBQ3BCLElBQUlqakMsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2lXLGlCQUFpQixJQUFJaGpDLEtBQUksQ0FBQytzQixlQUFlLENBQUNpVyxpQkFBaUIsQ0FBQ3RyQixTQUFTLEtBQUtvckIsVUFBVSxDQUFDRyxLQUFLLENBQUN2ckIsU0FBUyxFQUFFO2tCQUM3SHdyQixnQkFBZ0IsR0FBR2xqQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDaVcsaUJBQWlCLElBQUloakMsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2lXLGlCQUFpQixDQUFDL2dCLGFBQWEsS0FBSzZnQixVQUFVLENBQUNHLEtBQUssQ0FBQ2hoQixhQUFhO2tCQUVwSixJQUFJaWhCLGdCQUFnQixJQUFJNWdDLFNBQVMsQ0FBQ3MvQixNQUFNLEVBQUU7b0JBQ3hDNWhDLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ0MsSUFBSSxDQUNmLDBHQUEwRyxFQUMxRzlJLEtBQUksQ0FBQytzQixlQUFlLENBQUMva0IsUUFBUSxFQUM3Qjg2QixVQUFVLENBQUNHLEtBQUssQ0FBQ2hoQixhQUFhLEVBQzlCamlCLEtBQUksQ0FBQytzQixlQUFlLENBQUNpVyxpQkFBaUIsQ0FBQy9nQixhQUFhLEVBQ3BELElBQUkzYSx1REFBUyxDQUFDdzdCLFVBQVUsQ0FBQ0csS0FBSyxDQUFDdnJCLFNBQVMsR0FBRzFYLEtBQUksQ0FBQytzQixlQUFlLENBQUNpVyxpQkFBaUIsQ0FBQ3RyQixTQUFTLENBQUMsQ0FBQzNPLFdBQVcsQ0FBQyxDQUMzRyxDQUFDO2tCQUNIO2tCQUVBL0ksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2lXLGlCQUFpQixHQUFHRixVQUFVLENBQUNHLEtBQUs7Z0JBQzNEO2NBQ0Y7Y0FFQSxJQUFJSCxVQUFVLENBQUNwZ0IsS0FBSyxFQUFFO2dCQUNwQixJQUFJMWlCLEtBQUksQ0FBQytzQixlQUFlLENBQUNnVyxpQkFBaUIsSUFBSS9pQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDZ1csaUJBQWlCLENBQUNyckIsU0FBUyxLQUFLb3JCLFVBQVUsQ0FBQ3BnQixLQUFLLENBQUNoTCxTQUFTLEVBQUU7a0JBQzdIeXJCLGdCQUFnQixHQUFHbmpDLEtBQUksQ0FBQytzQixlQUFlLENBQUNnVyxpQkFBaUIsSUFBSS9pQyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDZ1csaUJBQWlCLENBQUM5Z0IsYUFBYSxLQUFLNmdCLFVBQVUsQ0FBQ3BnQixLQUFLLENBQUNULGFBQWE7a0JBRXBKLElBQUlraEIsZ0JBQWdCLElBQUk3Z0MsU0FBUyxDQUFDcy9CLE1BQU0sRUFBRTtvQkFDeEM1aEMsS0FBSSxDQUFDNkksT0FBTyxDQUFDQyxJQUFJLENBQ2YsMEdBQTBHLEVBQzFHOUksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQy9rQixRQUFRLEVBQzdCODZCLFVBQVUsQ0FBQ3BnQixLQUFLLENBQUNULGFBQWEsRUFDOUJqaUIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2dXLGlCQUFpQixDQUFDOWdCLGFBQWEsRUFDcEQsSUFBSTNhLHVEQUFTLENBQUN3N0IsVUFBVSxDQUFDcGdCLEtBQUssQ0FBQ2hMLFNBQVMsR0FBRzFYLEtBQUksQ0FBQytzQixlQUFlLENBQUNnVyxpQkFBaUIsQ0FBQ3JyQixTQUFTLENBQUMsQ0FBQzNPLFdBQVcsQ0FBQyxDQUMzRyxDQUFDO2tCQUNIO2tCQUVBL0ksS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ2dXLGlCQUFpQixHQUFHRCxVQUFVLENBQUNwZ0IsS0FBSztnQkFDM0Q7Y0FDRjtjQUVBLElBQUksQ0FBQ3lnQixnQkFBZ0IsSUFBSUQsZ0JBQWdCLEtBQUs1Z0MsU0FBUyxDQUFDcy9CLE1BQU0sRUFBRTtnQkFDOUQsSUFBTUQsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBLEVBQWU7a0JBQ2hDM2hDLEtBQUksQ0FBQytzQixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsK0RBQVksQ0FBQytLLGVBQWU7a0JBRS9ELElBQUluMkIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ1gsWUFBWSxDQUFDenNCLEtBQUssRUFBRTtvQkFDM0NLLEtBQUksQ0FBQytzQixlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLLENBQUNxeEIsS0FBSyxDQUFDLENBQUM7b0JBQy9DaHhCLEtBQUksQ0FBQytzQixlQUFlLENBQUNYLFlBQVksQ0FBQ3pzQixLQUFLLENBQUNzeEIsU0FBUyxHQUFHLElBQUk7a0JBQzFEO2tCQUVBanhCLEtBQUksQ0FBQytzQixlQUFlLENBQUN1QixPQUFPLENBQUMzdUIsS0FBSyxHQUFHLEtBQUs7a0JBQzFDSyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDcUIsT0FBTyxDQUFDenVCLEtBQUssR0FBRyxJQUFJO2tCQUV6Q2dqQyxvQkFBb0IsQ0FBQzdpQyxPQUFPLENBQUMsQ0FBQztrQkFFOUIsSUFBTWdZLE9BQU8sR0FBRzlYLEtBQUksQ0FBQ28yQixvQkFBb0IsQ0FBQyxDQUFDLENBQ3hDbGMsS0FBSyxDQUFDLFVBQUFwUSxDQUFDLEVBQUk7b0JBQ1Y5SixLQUFJLENBQUM2SSxPQUFPLENBQUNTLEtBQUssQ0FDaEIseUVBQXlFLEVBQ3pFdEosS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQy9rQixRQUFRLEVBQzdCa1YsY0FBYyxDQUFDcUgsa0JBQWtCLEVBQ2pDemEsQ0FDRixDQUFDO2tCQUNILENBQUMsQ0FBQztnQkFDTixDQUFDO2dCQUVEOUosS0FBSSxDQUFDNmhDLHVCQUF1QixDQUFDM2tCLGNBQWMsRUFBRXlrQixhQUFhLENBQUM7Y0FDN0QsQ0FBQyxNQUFNO2dCQUNMM2hDLEtBQUksQ0FBQ2d0QixzQkFBc0IsQ0FBQzZKLCtCQUErQixHQUFHLENBQUM7Z0JBRS9ELElBQUk3MkIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssS0FBS3lyQiwrREFBWSxDQUFDNkssWUFBWSxFQUFFO2tCQUNsRTtnQkFDRjtnQkFFQWoyQixLQUFJLENBQUMrc0IsZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHSyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDdUIsT0FBTyxDQUFDM3VCLEtBQUssR0FBR3lyQiwrREFBWSxDQUFDa0YsT0FBTyxHQUFHbEYsK0RBQVksQ0FBQzRLLE1BQU07Z0JBQ2xIaDJCLEtBQUksQ0FBQzZJLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLG1EQUFtRCxFQUFFc2lCLCtEQUFZLENBQUNwckIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ1MsS0FBSyxDQUFDN3RCLEtBQUssQ0FBQyxDQUFDO2NBQ3hIO1lBQ0YsQ0FBQyxDQUFDO1lBRUZLLEtBQUksQ0FBQ0QsWUFBWSxDQUFDWSxHQUFHLENBQUNpaUMseUNBQXlDLENBQUM7WUFFaEUsSUFBSSxDQUFDcjdCLDRDQUFHLENBQUMraUIsNEJBQTRCLEVBQUU7Y0FDckN0cUIsS0FBSSxDQUFDK3NCLGVBQWUsQ0FBQ1csU0FBUyxDQUFDL3RCLEtBQUssR0FBRyxLQUFLO2NBQzVDSyxLQUFJLENBQUMrc0IsZUFBZSxDQUFDYSxVQUFVLENBQUNqdUIsS0FBSyxHQUFHLElBQUk7Y0FDNUNLLEtBQUksQ0FBQytzQixlQUFlLENBQUNxQixPQUFPLENBQUN6dUIsS0FBSyxHQUFHLEtBQUs7Y0FDMUNLLEtBQUksQ0FBQytzQixlQUFlLENBQUN1QixPQUFPLENBQUMzdUIsS0FBSyxHQUFHLEtBQUs7Y0FDMUNLLEtBQUksQ0FBQytzQixlQUFlLENBQUNTLEtBQUssQ0FBQzd0QixLQUFLLEdBQUd5ckIsK0RBQVksQ0FBQzRLLE1BQU07Y0FFdEQ7WUFDRjtZQUVBLE9BQU85RCw2QkFBNkIsQ0FBQzdTLFdBQVcsQ0FBQztVQUNuRCxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7TUFDTixDQUFDLENBQUM7SUFDTjtFQUFDO0lBQUE1ZixHQUFBO0lBQUFFLEtBQUE7TUFBQSxJQUFBeWpDLHNCQUFBLEdBQUFwckIsNklBQUEsZUFBQUMsMklBQUEsQ0FFRCxTQUFBRSxRQUNFa3JCLHNCQUE4QyxFQUM5QzdFLGdCQUFrQztRQUFBLElBQUE4RSxtQkFBQTtRQUFBLE9BQUFyckIsMklBQUEsVUFBQU0sU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1lBQUE7Y0FBQSxJQUM3QjJxQixzQkFBc0I7Z0JBQUE3cUIsUUFBQSxDQUFBRSxJQUFBO2dCQUFBO2NBQUE7Y0FDekI4bEIsZ0JBQWdCLEdBQUc1ZixxRUFBdUIsQ0FBQ0Msa0JBQWtCLENBQUMyZixnQkFBZ0IsQ0FBQztjQUFDLE9BQUFobUIsUUFBQSxDQUFBUyxNQUFBLFdBRXpFMVIsNENBQUcsQ0FBQzRpQixxQkFBcUIsQ0FBQ3hxQixLQUFLLENBQUNpZSxvQkFBb0IsQ0FBQzRnQixnQkFBZ0IsQ0FBQztZQUFBO2NBR3pFOEUsbUJBQW1CLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUNwQkYsc0JBQXNCLENBQUM3ZSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQ3pDZ2EsZ0JBQWdCO2NBR3JCNkUsc0JBQXNCLENBQUM1ZSxnQkFBZ0IsQ0FBQzZlLG1CQUFtQixDQUFDO2NBQUMsT0FBQTlxQixRQUFBLENBQUFTLE1BQUEsV0FFdERvcUIsc0JBQXNCO1lBQUE7WUFBQTtjQUFBLE9BQUE3cUIsUUFBQSxDQUFBVyxJQUFBO1VBQUE7UUFBQSxHQUFBaEIsT0FBQTtNQUFBLENBQzlCO01BQUEsU0FqQmFtcEIscUJBQXFCQSxDQUFBbG9CLEVBQUEsRUFBQTJMLEdBQUE7UUFBQSxPQUFBcWUsc0JBQUEsQ0FBQS9wQixLQUFBLE9BQUE3SSxTQUFBO01BQUE7TUFBQSxPQUFyQjh3QixxQkFBcUI7SUFBQTtFQUFBO0lBQUE3aEMsR0FBQTtJQUFBRSxLQUFBLEVBbUJuQyxTQUFRa2lDLHVCQUF1QkEsQ0FBQzNrQixjQUErQixFQUFFeWtCLGFBQXlCLEVBQVE7TUFBQSxJQUFBNWdDLE1BQUE7TUFDaEcsSUFBSW1jLGNBQWMsQ0FBQ3FILGtCQUFrQixLQUFLLFFBQVEsRUFBRTtRQUNsRDtNQUNGO01BRUEsSUFBSSxDQUFDd0ksZUFBZSxDQUFDUyxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLCtEQUFZLENBQUM2SyxZQUFZO01BRTVELElBQUksSUFBSSxDQUFDakosc0JBQXNCLENBQUM2SiwrQkFBK0IsR0FBR3R2Qiw0Q0FBRyxDQUFDaThCLDhDQUE4QyxJQUFJLENBQUNqOEIsNENBQUcsQ0FBQ2s4QixvQ0FBb0MsRUFBRTtRQUFBLElBQUFDLHFCQUFBO1FBQ2pLLElBQUksQ0FBQzFXLHNCQUFzQixDQUFDNkosK0JBQStCLEVBQUU7UUFFN0QsSUFBTThNLGlCQUFpQixHQUFHLEVBQUFELHFCQUFBLEdBQUF4bUIsY0FBYyxDQUFDbUgsdUJBQXVCLGNBQUFxZixxQkFBQSx1QkFBdENBLHFCQUFBLENBQXdDMThCLElBQUksTUFBSyxPQUFPO1FBRWxGLElBQUlqQyx1RUFBaUIsQ0FBQ204QixtQkFBbUIsSUFDdkMsQ0FBQ2hrQixjQUFjLENBQUNpa0Isd0JBQXdCLElBQ3hDLENBQUNqa0IsY0FBYyxDQUFDa2tCLHdCQUF3QixJQUN4QyxDQUFDdUMsaUJBQWlCLEVBQ2xCO1VBQ0E7UUFDRjtRQUVBLElBQUksQ0FBQzk2QixPQUFPLENBQUNDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQztRQUVuRSxJQUFNdWIsdUJBQXVCLEdBQUduSCxjQUFjLENBQUNtSCx1QkFBdUI7UUFDdEUsSUFBTXZNLE9BQU8sR0FBR29GLGNBQWMsQ0FBQ21CLFdBQVcsQ0FBQztVQUFDdWxCLFVBQVUsRUFBRTtRQUFJLENBQUMsQ0FBQyxDQUFDaHFCLElBQUksQ0FBQyxVQUFBaXFCLEtBQUssRUFBSTtVQUMzRSxPQUFPM21CLGNBQWMsQ0FBQ2dJLG1CQUFtQixDQUFDMmUsS0FBSyxDQUFDLENBQUNqcUIsSUFBSSxDQUFDLFlBQU07WUFDMUQsT0FBT3NELGNBQWMsQ0FBQ2dJLG1CQUFtQixDQUFDYix1QkFBdUIsQ0FBQztVQUNwRSxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDQ25LLEtBQUssQ0FBQyxVQUFBcFEsQ0FBQyxFQUFJO1VBQ1YvSSxNQUFJLENBQUM4SCxPQUFPLENBQUNTLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRVEsQ0FBQyxDQUFDO1VBQzVEL0ksTUFBSSxDQUFDaXNCLHNCQUFzQixDQUFDNkosK0JBQStCLEdBQUcsQ0FBQztVQUMvRDhLLGFBQWEsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztRQUVKO01BQ0Y7TUFFQSxJQUFJLENBQUM5NEIsT0FBTyxDQUFDQyxJQUFJLENBQUMsbUZBQW1GLEVBQUUsSUFBSSxDQUFDa2tCLHNCQUFzQixDQUFDNkosK0JBQStCLENBQUM7TUFDbkssSUFBSSxDQUFDN0osc0JBQXNCLENBQUM2SiwrQkFBK0IsR0FBRyxDQUFDO01BQy9EOEssYUFBYSxDQUFDLENBQUM7SUFDakI7RUFBQztJQUFBbGlDLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQUFHLE9BQU9BLENBQUEsRUFBUztNQUNkLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxPQUFPLENBQUMsQ0FBQztJQUM3QjtFQUFDO0lBQUFMLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQVF5aUMsNENBQTRDQSxDQUFDaG9CLE1BQWtDLEVBQWdCO01BQ3JHLFFBQVFBLE1BQU07UUFDWixLQUFLLElBQUk7VUFDUCxPQUFPZ1IsK0RBQVksQ0FBQ3FKLFFBQVE7UUFDOUIsS0FBSyxjQUFjO1VBQ2pCLE9BQU9ySiwrREFBWSxDQUFDOEksWUFBWTtRQUNsQyxLQUFLLFdBQVc7UUFDaEIsS0FBSyxVQUFVO1FBQ2YsS0FBSyxjQUFjO1FBQ25CLEtBQUssU0FBUztVQUNaLE9BQU85SSwrREFBWSxDQUFDc0osVUFBVTtRQUNoQyxLQUFLLFFBQVE7VUFDWCxPQUFPdEosK0RBQVksQ0FBQ25tQixLQUFLO1FBQzNCO1VBQ0U0SixvRUFBaUIsQ0FBQ3VMLE1BQU0sQ0FBQztNQUM3QjtJQUNGO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2ppQkg7QUFDQTtBQUNBOztBQUUyRDtBQUNiO0FBRVM7QUFDSDtBQUFBLElBRS9CMHBCLHFCQUFxQjtFQXVCeEMsU0FBQUEsc0JBQUEsRUFBYztJQUFBN2tDLDJJQUFBLE9BQUE2a0MscUJBQUE7SUFDWixNQUFNLElBQUk3K0IsS0FBSyxDQUFDLHNFQUFzRSxDQUFDO0VBQ3pGO0VBQUMsT0FBQXpGLHdJQUFBLENBQUFza0MscUJBQUE7SUFBQXJrQyxHQUFBO0lBQUFFLEtBQUEsRUF0QkQsU0FBT2sxQixNQUFNQSxDQUFDenJCLEtBQWEsRUFBRXczQixjQUFjLEVBQUVDLHFCQUFxQixFQUFFQyxzQkFBc0IsRUFBRWxNLG1CQUF3QyxFQUFXO01BQzdJLElBQU1tUCxpQkFBaUIsR0FBRzc2QixnRUFBYyxDQUFDQyxVQUFVLENBQUNDLEtBQUssQ0FBQyxDQUFDa0IsWUFBWTtNQUV2RSxJQUFJeTVCLGlCQUFpQixDQUFDamdDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUMzQyxJQUFJLENBQUMrRSxPQUFPLENBQUNTLEtBQUssQ0FBQyx3REFBd0QsQ0FBQztRQUM1RXMzQixjQUFjLENBQUNwVCxLQUFLLENBQUM3dEIsS0FBSyxHQUFHeXJCLDhEQUFZLENBQUNtSixrQkFBa0I7UUFFNUQ7TUFDRjtNQUVBLElBQUl3UCxpQkFBaUIsQ0FBQ2pnQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDM0MsSUFBSSxDQUFDK0UsT0FBTyxDQUFDUyxLQUFLLENBQUMsbURBQW1ELENBQUM7UUFDdkVzM0IsY0FBYyxDQUFDcFQsS0FBSyxDQUFDN3RCLEtBQUssR0FBR3lyQiw4REFBWSxDQUFDbUosa0JBQWtCO1FBRTVEO01BQ0Y7TUFFQSxPQUFPLElBQUlvTSx1REFBYyxDQUFDQyxjQUFjLEVBQUVDLHFCQUFxQixFQUFFQyxzQkFBc0IsRUFBRWxNLG1CQUFtQixDQUFDO0lBQy9HO0VBQUM7QUFBQTtBQUFBMTFCLDJJQUFBLENBckJrQjRrQyxxQkFBcUIsYUFDTnQ4Qiw2REFBYSxDQUFDRyxTQUFTLENBQUMsV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNYeEU7QUFDQTtBQUNBO0FBRkEsSUFPcUI4akIsaUJBQWlCO0VBc0JwQyxTQUFBQSxrQkFBQSxFQUFjO0lBQUF4c0IsMklBQUEsT0FBQXdzQixpQkFBQTtJQUNaLE1BQU0sSUFBSXhtQixLQUFLLENBQUMsa0VBQWtFLENBQUM7RUFDckY7RUFBQyxPQUFBekYsd0lBQUEsQ0FBQWlzQixpQkFBQTtJQUFBaHNCLEdBQUE7SUFBQUUsS0FBQSxFQXZCRCxTQUFPMDBCLHlCQUF5QkEsQ0FBQzJQLElBQXVCLEVBQUU1MEIsSUFBd0IsRUFBRTtNQUNsRixJQUFJLE9BQU9BLElBQUksS0FBSyxVQUFVLEVBQUU7UUFDOUIsT0FBTztVQUNMNmpCLEtBQUssRUFBRSxLQUFLO1VBQ1pDLGdCQUFnQixnQkFBQTd2QixNQUFBLENBQWdCMmdDLElBQUksaURBQUEzZ0MsTUFBQSxDQUFBakQsbUlBQUEsQ0FBcURnUCxJQUFJO1FBQy9GLENBQUM7TUFDSDtNQUVBLElBQUlBLElBQUksQ0FBQzFGLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTztVQUNMdXBCLEtBQUssRUFBRSxLQUFLO1VBQ1pDLGdCQUFnQixnQkFBQTd2QixNQUFBLENBQWdCMmdDLElBQUkseUVBQUEzZ0MsTUFBQSxDQUFzRStMLElBQUksQ0FBQzFGLE1BQU07UUFDdkgsQ0FBQztNQUNIO01BRUEsT0FBTztRQUNMdXBCLEtBQUssRUFBRSxJQUFJO1FBQ1hDLGdCQUFnQixFQUFFO01BQ3BCLENBQUM7SUFDSDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0JIO0FBQ0E7QUFDQTtBQUMrQztBQUNRO0FBQ007QUFHTztBQUNpQztBQUFBLElBSWhGc04saUJBQWlCO0VBc05wQyxTQUFBQSxrQkFBQSxFQUFjO0lBQUF2aEMsMklBQUEsT0FBQXVoQyxpQkFBQTtJQUNaLE1BQU0sSUFBSXY3QixLQUFLLENBQUMsa0VBQWtFLENBQUM7RUFDckY7RUFBQyxPQUFBekYsd0lBQUEsQ0FBQWdoQyxpQkFBQTtJQUFBL2dDLEdBQUE7SUFBQUUsS0FBQSxFQXZORCxTQUFPNGlDLGdDQUFnQ0EsQ0FBQ2hULE1BQW1CLEVBQUU0VSxTQUEyQixFQUFFdlgsc0JBQWdFLEVBQUVDLHNCQUFnRSxFQUFFek0sVUFBa0IsRUFBRUYsVUFBa0IsRUFBaUM7TUFDblMsSUFBTXFSLFdBQTJCLEdBQUcsSUFBSXp5Qiw0REFBYyxDQUFDLENBQUM7TUFFeER5d0IsTUFBTSxDQUFDN1AsU0FBUyxDQUFDLENBQUMsQ0FBQzNTLE9BQU8sQ0FBQyxVQUFBNlMsS0FBSyxFQUFJO1FBQ2xDLElBQU13a0IsUUFBUSxHQUFHRCxTQUFTLENBQUM5TSxNQUFNLENBQUMsVUFBQWdOLE9BQU87VUFBQSxPQUFJQSxPQUFPLENBQUN6a0IsS0FBSyxLQUFLQSxLQUFLO1FBQUEsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxJQUFNcEksSUFBMEIsR0FBR29JLEtBQUssQ0FBQ3BJLElBQTRCO1FBRXJFLFFBQVFBLElBQUk7VUFDVixLQUFLLE9BQU87WUFBRTtjQUNaLElBQUlvVixzQkFBc0IsRUFBRTtnQkFDMUIsSUFBSTduQixzRUFBaUIsQ0FBQ3l2QixnQ0FBZ0MsRUFBRTtrQkFDdEQsSUFBTThQLE1BQU0sR0FBRyxJQUFJQyxNQUFNLENBQUMsSUFBSTMrQixHQUFHLENBQUMsMkZBQTZDLENBQUMsRUFBRTtvQkFBQ29CLElBQUksRUFBRSxTQUFRO2tCQUFBLENBQUMsQ0FBQztrQkFFbkdzOUIsTUFBTSxDQUFDSSxTQUFTO29CQUFBLElBQUF2cUIsSUFBQSxHQUFBbkMsNklBQUEsZUFBQUMsMklBQUEsQ0FBRyxTQUFBRSxRQUFNd3NCLEtBQUs7c0JBQUEsT0FBQTFzQiwySUFBQSxVQUFBTSxTQUFBQyxRQUFBO3dCQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBOzBCQUFBOzRCQUFBRixRQUFBLENBQUFFLElBQUE7NEJBQUEsT0FDakJrVSxzQkFBc0IsQ0FBQ2hOLEtBQUssRUFBRStrQixLQUFLLENBQUNoeUIsSUFBSSxDQUFDaXlCLEtBQUssQ0FBQzswQkFBQTs0QkFBQSxJQUFBcHNCLFFBQUEsQ0FBQVUsSUFBQTs4QkFBQVYsUUFBQSxDQUFBRSxJQUFBOzhCQUFBOzRCQUFBOzRCQUN4RDRyQixNQUFNLENBQUNPLFdBQVcsQ0FBQzs4QkFBQ0MsaUJBQWlCLEVBQUU7NEJBQUksQ0FBQyxDQUFDOzBCQUFDOzBCQUFBOzRCQUFBLE9BQUF0c0IsUUFBQSxDQUFBVyxJQUFBO3dCQUFBO3NCQUFBLEdBQUFoQixPQUFBO29CQUFBLENBRWpEO29CQUFBLGlCQUFBaUIsRUFBQTtzQkFBQSxPQUFBZSxJQUFBLENBQUFkLEtBQUEsT0FBQTdJLFNBQUE7b0JBQUE7a0JBQUE7a0JBRUQ0ekIsUUFBUSxDQUFDVyxTQUFTLEdBQUcsSUFBSTU0QixxQkFBcUIsQ0FBQ200QixNQUFNLEVBQUU7b0JBQ3JEOXNCLElBQUksRUFBRW9JLEtBQUssQ0FBQ3BJLElBQUk7b0JBQ2hCZ0ssS0FBSyxFQUFFcEI7a0JBQ1QsQ0FBQyxDQUFDO2tCQUNGbVIsV0FBVyxDQUFDNXdCLEdBQUcsQ0FBQyxJQUFJaEMsd0RBQVUsQ0FBQyxZQUFNO29CQUNuQzJsQyxNQUFNLENBQUNVLFNBQVMsQ0FBQyxDQUFDO2tCQUNwQixDQUFDLENBQUMsQ0FBQztrQkFFSDtnQkFDRjtnQkFFQSxJQUFNQyw4QkFBd0c7a0JBQUEsSUFBQXJPLEtBQUEsR0FBQTVlLDZJQUFBLGVBQUFDLDJJQUFBLENBQUcsU0FBQXNCLFNBQU1xckIsS0FBSyxFQUFFTSxVQUFVO29CQUFBLElBQUFDLFNBQUE7b0JBQUEsT0FBQWx0QiwySUFBQSxVQUFBdUIsVUFBQUMsU0FBQTtzQkFBQSxrQkFBQUEsU0FBQSxDQUFBaEIsSUFBQSxHQUFBZ0IsU0FBQSxDQUFBZixJQUFBO3dCQUFBOzBCQUFBZSxTQUFBLENBQUFmLElBQUE7MEJBQUEsT0FDM0hrVSxzQkFBc0IsQ0FBQ2hOLEtBQUssRUFBRWdsQixLQUFLLENBQUM7d0JBQUE7MEJBQUEsSUFBQW5yQixTQUFBLENBQUFQLElBQUE7NEJBQUFPLFNBQUEsQ0FBQWYsSUFBQTs0QkFBQTswQkFBQTswQkFHN0MsSUFBSWtzQixLQUFLLENBQUM1OUIsSUFBSSxLQUFLLEtBQUssRUFBRTs0QkFDeEJtK0IsU0FBUyxHQUFHbEIsa0VBQXlCLENBQUNtQiw4QkFBOEIsQ0FBQ2hsQixVQUFVLENBQUM7MEJBQ2xGLENBQUMsTUFBTTs0QkFDTCtrQixTQUFTLEdBQUdsQixrRUFBeUIsQ0FBQ29CLDhCQUE4QixDQUFDamxCLFVBQVUsQ0FBQzswQkFDbEY7MEJBQUMsTUFFRytrQixTQUFTLEtBQUtqQixpRUFBUzs0QkFBQXpxQixTQUFBLENBQUFmLElBQUE7NEJBQUE7MEJBQUE7MEJBQUEsT0FBQWUsU0FBQSxDQUFBUixNQUFBO3dCQUFBOzBCQUkzQjJyQixLQUFLLENBQUNqeUIsSUFBSSxHQUFHd3lCLFNBQVMsSUFBSVAsS0FBSyxDQUFDanlCLElBQUk7MEJBQUM4RyxTQUFBLENBQUFmLElBQUE7MEJBQUE7d0JBQUE7MEJBRXJDLElBQUlrc0IsS0FBSyxDQUFDNTlCLElBQUksS0FBSyxLQUFLLEVBQUU7NEJBQ3hCNDlCLEtBQUssQ0FBQ2p5QixJQUFJLEdBQUdzeEIsa0VBQXlCLENBQUNxQiwrQkFBK0IsQ0FBQ2xsQixVQUFVLENBQUMsSUFBSXdrQixLQUFLLENBQUNqeUIsSUFBSTswQkFDbEcsQ0FBQyxNQUFNOzRCQUNMaXlCLEtBQUssQ0FBQ2p5QixJQUFJLEdBQUdzeEIsa0VBQXlCLENBQUNzQiwrQkFBK0IsQ0FBQ25sQixVQUFVLENBQUMsSUFBSXdrQixLQUFLLENBQUNqeUIsSUFBSTswQkFDbEc7d0JBQUM7MEJBR0h1eUIsVUFBVSxDQUFDTSxPQUFPLENBQUNaLEtBQUssQ0FBQzt3QkFBQzt3QkFBQTswQkFBQSxPQUFBbnJCLFNBQUEsQ0FBQU4sSUFBQTtzQkFBQTtvQkFBQSxHQUFBSSxRQUFBO2tCQUFBLENBQzNCO2tCQUFBLGdCQXhCSzByQiw4QkFBd0dBLENBQUFsZ0IsR0FBQSxFQUFBSyxHQUFBO29CQUFBLE9BQUF3UixLQUFBLENBQUF2ZCxLQUFBLE9BQUE3SSxTQUFBO2tCQUFBO2dCQUFBLEdBd0I3RztnQkFFRCxJQUFNaTFCLFdBQVcsR0FBRyxJQUFJQyxlQUFlLENBQUM7a0JBQUNYLFNBQVMsRUFBRUU7Z0JBQThCLENBQUMsQ0FBQztnQkFDcEYsSUFBTVUsZUFBZSxHQUFHdkIsUUFBUSxDQUFDbDRCLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3ZELElBQU0wNUIsTUFBTSxHQUFHRCxlQUFlLENBQUNFLFFBQVE7Z0JBQ3ZDLElBQU1DLElBQUksR0FBR0gsZUFBZSxDQUFDSSxRQUFRO2dCQUVyQ0gsTUFBTSxDQUNISSxXQUFXLENBQUNQLFdBQVcsQ0FBQyxDQUN4QlEsTUFBTSxDQUFDSCxJQUFJLENBQUM7Y0FDakI7Y0FFQTtZQUNGO1VBRUEsS0FBSyxPQUFPO1lBQUU7Y0FDWixJQUFJalosc0JBQXNCLEVBQUU7Z0JBQzFCLElBQUk5bkIsc0VBQWlCLENBQUN5dkIsZ0NBQWdDLEVBQUU7a0JBQ3RELElBQU04UCxPQUFNLEdBQUcsSUFBSUMsTUFBTSxDQUFDLElBQUkzK0IsR0FBRyxDQUFDLDJGQUE2QyxDQUFDLEVBQUU7b0JBQUNvQixJQUFJLEVBQUUsU0FBUTtrQkFBQSxDQUFDLENBQUM7a0JBRW5HczlCLE9BQU0sQ0FBQ0ksU0FBUztvQkFBQSxJQUFBM0QsS0FBQSxHQUFBL29CLDZJQUFBLGVBQUFDLDJJQUFBLENBQUcsU0FBQW9GLFNBQU1zbkIsS0FBSztzQkFBQSxPQUFBMXNCLDJJQUFBLFVBQUF3RixVQUFBQyxTQUFBO3dCQUFBLGtCQUFBQSxTQUFBLENBQUFqRixJQUFBLEdBQUFpRixTQUFBLENBQUFoRixJQUFBOzBCQUFBOzRCQUFBZ0YsU0FBQSxDQUFBaEYsSUFBQTs0QkFBQSxPQUNqQm1VLHNCQUFzQixDQUFDak4sS0FBSyxFQUFFK2tCLEtBQUssQ0FBQ2h5QixJQUFJLENBQUNpeUIsS0FBSyxDQUFDOzBCQUFBOzRCQUFBLElBQUFsbkIsU0FBQSxDQUFBeEUsSUFBQTs4QkFBQXdFLFNBQUEsQ0FBQWhGLElBQUE7OEJBQUE7NEJBQUE7NEJBQ3hENHJCLE9BQU0sQ0FBQ08sV0FBVyxDQUFDOzhCQUFDQyxpQkFBaUIsRUFBRTs0QkFBSSxDQUFDLENBQUM7MEJBQUM7MEJBQUE7NEJBQUEsT0FBQXBuQixTQUFBLENBQUF2RSxJQUFBO3dCQUFBO3NCQUFBLEdBQUFrRSxRQUFBO29CQUFBLENBRWpEO29CQUFBLGlCQUFBdUksR0FBQTtzQkFBQSxPQUFBbWIsS0FBQSxDQUFBMW5CLEtBQUEsT0FBQTdJLFNBQUE7b0JBQUE7a0JBQUE7a0JBRUQ0ekIsUUFBUSxDQUFDVyxTQUFTLEdBQUcsSUFBSTU0QixxQkFBcUIsQ0FBQ200QixPQUFNLEVBQUU7b0JBQ3JEOXNCLElBQUksRUFBRW9JLEtBQUssQ0FBQ3BJLElBQUk7b0JBQ2hCZ0ssS0FBSyxFQUFFdEI7a0JBQ1QsQ0FBQyxDQUFDO2tCQUVGLElBQU1iLFdBQVcsR0FBRyxJQUFJNm1CLFdBQVcsQ0FBQyxDQUFDO2tCQUNyQyxJQUFNQyxXQUFXLEdBQUcsSUFBSUMsS0FBSyxDQUFDLENBQUM7a0JBRS9CRCxXQUFXLENBQUNsVixTQUFTLEdBQUc1UixXQUFXO2tCQUNuQ2xmLFFBQVEsQ0FBQzZZLElBQUksQ0FBQ3F0QixXQUFXLENBQUNGLFdBQVcsQ0FBQztrQkFFdEM1VSxXQUFXLENBQUM1d0IsR0FBRyxDQUFDLElBQUloQyx3REFBVSxDQUFDLFlBQU07b0JBQ25DMmxDLE9BQU0sQ0FBQ1UsU0FBUyxDQUFDLENBQUM7b0JBQ2xCN2tDLFFBQVEsQ0FBQzZZLElBQUksQ0FBQ3N0QixXQUFXLENBQUNILFdBQVcsQ0FBQztrQkFDeEMsQ0FBQyxDQUFDLENBQUM7a0JBRUg7Z0JBQ0Y7Z0JBRUEsSUFBTWxCLCtCQUF3RztrQkFBQSxJQUFBNUQsS0FBQSxHQUFBcnBCLDZJQUFBLGVBQUFDLDJJQUFBLENBQUcsU0FBQXFOLFNBQU1zZixLQUFLLEVBQUVNLFVBQVU7b0JBQUEsT0FBQWp0QiwySUFBQSxVQUFBd04sVUFBQUMsU0FBQTtzQkFBQSxrQkFBQUEsU0FBQSxDQUFBak4sSUFBQSxHQUFBaU4sU0FBQSxDQUFBaE4sSUFBQTt3QkFBQTswQkFBQWdOLFNBQUEsQ0FBQWhOLElBQUE7MEJBQUEsT0FDM0htVSxzQkFBc0IsQ0FBQ2pOLEtBQUssRUFBRWdsQixLQUFLLENBQUM7d0JBQUE7MEJBQUEsSUFBQWxmLFNBQUEsQ0FBQXhNLElBQUE7NEJBQUF3TSxTQUFBLENBQUFoTixJQUFBOzRCQUFBOzBCQUFBOzBCQUM3Q2tzQixLQUFLLENBQUNqeUIsSUFBSSxHQUFHc3hCLGtFQUF5QixDQUFDc0MsNEJBQTRCLENBQUMsQ0FBQzswQkFBQzdnQixTQUFBLENBQUFoTixJQUFBOzBCQUFBO3dCQUFBOzBCQUV0RWtzQixLQUFLLENBQUNqeUIsSUFBSSxHQUFHc3hCLGtFQUF5QixDQUFDdUMsK0JBQStCLENBQUN0bUIsVUFBVSxDQUFDLElBQUkwa0IsS0FBSyxDQUFDanlCLElBQUk7d0JBQUM7MEJBR25HdXlCLFVBQVUsQ0FBQ00sT0FBTyxDQUFDWixLQUFLLENBQUM7d0JBQUM7d0JBQUE7MEJBQUEsT0FBQWxmLFNBQUEsQ0FBQXZNLElBQUE7c0JBQUE7b0JBQUEsR0FBQW1NLFFBQUE7a0JBQUEsQ0FDM0I7a0JBQUEsZ0JBUksyZiwrQkFBd0dBLENBQUFsSixHQUFBLEVBQUFDLEdBQUE7b0JBQUEsT0FBQXFGLEtBQUEsQ0FBQWhvQixLQUFBLE9BQUE3SSxTQUFBO2tCQUFBO2dCQUFBLEdBUTdHO2dCQUVELElBQU1pMUIsWUFBVyxHQUFHLElBQUlDLGVBQWUsQ0FBQztrQkFBQ1gsU0FBUyxFQUFFRTtnQkFBOEIsQ0FBQyxDQUFDO2dCQUNwRixJQUFNVSxnQkFBZSxHQUFHdkIsUUFBUSxDQUFDbDRCLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3ZELElBQU0wNUIsT0FBTSxHQUFHRCxnQkFBZSxDQUFDRSxRQUFRO2dCQUN2QyxJQUFNQyxLQUFJLEdBQUdILGdCQUFlLENBQUNJLFFBQVE7Z0JBRXJDSCxPQUFNLENBQ0hJLFdBQVcsQ0FBQ1AsWUFBVyxDQUFDLENBQ3hCUSxNQUFNLENBQUNILEtBQUksQ0FBQztjQUNqQjtjQUVBO1lBQ0Y7VUFFQTtZQUNFajNCLG1FQUFpQixDQUFDMkksSUFBSSxDQUFDO1FBQzNCO01BQ0YsQ0FBQyxDQUFDO01BRUYsT0FBTztRQUFDK1osV0FBVyxFQUFYQTtNQUFXLENBQUM7SUFDdEI7RUFBQztJQUFBOXhCLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU84aUMsbUNBQW1DQSxDQUFDbFQsTUFBbUIsRUFBRTdDLDRCQUErRCxFQUFFQyw0QkFBOEQsRUFBaUU7TUFDOVAsSUFBTStWLGlCQUFpQixHQUFHLElBQUl3RCxXQUFXLENBQUMsQ0FBQztNQUMzQyxJQUFNM1UsV0FBMkIsR0FBRyxJQUFJenlCLDREQUFjLENBQUMsQ0FBQztNQUV4RHl3QixNQUFNLENBQUM3UCxTQUFTLENBQUMsQ0FBQyxDQUFDM1MsT0FBTyxDQUFDLFVBQUE2UyxLQUFLLEVBQUk7UUFDbEMsSUFBTXBJLElBQTBCLEdBQUdvSSxLQUFLLENBQUNwSSxJQUE0QjtRQUVyRSxRQUFRQSxJQUFJO1VBQ1YsS0FBSyxPQUFPO1lBQUU7Y0FDWixJQUFJa1YsNEJBQTRCLEVBQUU7Z0JBQ2hDLElBQU0rWixpQ0FBdUYsR0FBRyxTQUExRkEsaUNBQXVGQSxDQUFJN0IsS0FBSyxFQUFFTSxVQUFVLEVBQUs7a0JBQ3JIeFksNEJBQTRCLENBQUM5TSxLQUFLLEVBQUVnbEIsS0FBSyxFQUFFTSxVQUFVLENBQUM7Z0JBQ3hELENBQUM7Z0JBRUQsSUFBTXdCLFVBQVUsR0FBRzltQixLQUE4QjtnQkFDakQsSUFBTTZsQixXQUFXLEdBQUcsSUFBSUMsZUFBZSxDQUFDO2tCQUFDWCxTQUFTLEVBQUUwQjtnQkFBaUMsQ0FBQyxDQUFDO2dCQUN2RixJQUFNRSxTQUFTLEdBQUcsSUFBSTc2Qix5QkFBeUIsQ0FBQztrQkFBQzhULEtBQUssRUFBRThtQjtnQkFBVSxDQUFDLENBQUM7Z0JBQ3BFLElBQU1FLFNBQVMsR0FBRyxJQUFJNzZCLHlCQUF5QixDQUFDO2tCQUFDeUwsSUFBSSxFQUFFa3ZCLFVBQVUsQ0FBQ2x2QjtnQkFBSSxDQUFDLENBQUM7Z0JBQ3hFLElBQU1vdUIsTUFBTSxHQUFHZSxTQUFTLENBQUNkLFFBQVE7Z0JBQ2pDLElBQU1DLElBQUksR0FBR2MsU0FBUyxDQUFDYixRQUFRO2dCQUUvQkgsTUFBTSxDQUNISSxXQUFXLENBQUNQLFdBQVcsQ0FBQyxDQUN4QlEsTUFBTSxDQUFDSCxJQUFJLENBQUM7Z0JBRWZwRCxpQkFBaUIsQ0FBQ3ZjLFFBQVEsQ0FBQ3lnQixTQUFTLENBQUM7Z0JBQ3JDclYsV0FBVyxDQUFDNXdCLEdBQUcsQ0FBQyxJQUFJaEMsd0RBQVUsQ0FBQyxZQUFNO2tCQUNuQytqQyxpQkFBaUIsQ0FBQ21FLFdBQVcsQ0FBQ0QsU0FBUyxDQUFDO2dCQUMxQyxDQUFDLENBQUMsQ0FBQztjQUNMLENBQUMsTUFBTTtnQkFDTGxFLGlCQUFpQixDQUFDdmMsUUFBUSxDQUFDdkcsS0FBSyxDQUFDO2NBQ25DO2NBRUE7WUFDRjtVQUVBLEtBQUssT0FBTztZQUFFO2NBQ1osSUFBSStNLDRCQUE0QixFQUFFO2dCQUNoQyxJQUFNOFosa0NBQXFGLEdBQUcsU0FBeEZBLGtDQUFxRkEsQ0FBSTdCLEtBQUssRUFBRU0sVUFBVSxFQUFLO2tCQUNuSHZZLDRCQUE0QixDQUFDL00sS0FBSyxFQUFFZ2xCLEtBQUssRUFBRU0sVUFBVSxDQUFDO2dCQUN4RCxDQUFDO2dCQUVELElBQU00QixVQUFVLEdBQUdsbkIsS0FBOEI7Z0JBQ2pELElBQU02bEIsYUFBVyxHQUFHLElBQUlDLGVBQWUsQ0FBQztrQkFBQ1gsU0FBUyxFQUFFMEI7Z0JBQWlDLENBQUMsQ0FBQztnQkFDdkYsSUFBTUUsVUFBUyxHQUFHLElBQUk3NkIseUJBQXlCLENBQUM7a0JBQUM4VCxLQUFLLEVBQUVrbkI7Z0JBQVUsQ0FBQyxDQUFDO2dCQUNwRSxJQUFNRixVQUFTLEdBQUcsSUFBSTc2Qix5QkFBeUIsQ0FBQztrQkFBQ3lMLElBQUksRUFBRXN2QixVQUFVLENBQUN0dkI7Z0JBQUksQ0FBQyxDQUFDO2dCQUN4RSxJQUFNb3VCLFFBQU0sR0FBR2UsVUFBUyxDQUFDZCxRQUFRO2dCQUNqQyxJQUFNQyxNQUFJLEdBQUdjLFVBQVMsQ0FBQ2IsUUFBUTtnQkFFL0JILFFBQU0sQ0FDSEksV0FBVyxDQUFDUCxhQUFXLENBQUMsQ0FDeEJRLE1BQU0sQ0FBQ0gsTUFBSSxDQUFDO2dCQUVmcEQsaUJBQWlCLENBQUN2YyxRQUFRLENBQUN5Z0IsVUFBUyxDQUFDO2dCQUVyQyxJQUFNdm5CLFdBQVcsR0FBRyxJQUFJNm1CLFdBQVcsQ0FBQyxDQUFDO2dCQUNyQyxJQUFNQyxXQUFXLEdBQUcsSUFBSUMsS0FBSyxDQUFDLENBQUM7Z0JBRS9CL21CLFdBQVcsQ0FBQzhHLFFBQVEsQ0FBQ3ZHLEtBQUssQ0FBQztnQkFDM0J1bUIsV0FBVyxDQUFDbFYsU0FBUyxHQUFHNVIsV0FBVztnQkFDbkNsZixRQUFRLENBQUM2WSxJQUFJLENBQUNxdEIsV0FBVyxDQUFDRixXQUFXLENBQUM7Z0JBQ3RDNVUsV0FBVyxDQUFDNXdCLEdBQUcsQ0FBQyxJQUFJaEMsd0RBQVUsQ0FBQyxZQUFNO2tCQUNuQytqQyxpQkFBaUIsQ0FBQ21FLFdBQVcsQ0FBQ0QsVUFBUyxDQUFDO2tCQUN4Q3ptQyxRQUFRLENBQUM2WSxJQUFJLENBQUNzdEIsV0FBVyxDQUFDSCxXQUFXLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQyxDQUFDO2NBQ0wsQ0FBQyxNQUFNO2dCQUNMekQsaUJBQWlCLENBQUN2YyxRQUFRLENBQUN2RyxLQUFLLENBQUM7Y0FDbkM7Y0FFQTtZQUNGO1VBRUE7WUFDRS9RLG1FQUFpQixDQUFDMkksSUFBSSxDQUFDO1FBQzNCO01BQ0YsQ0FBQyxDQUFDO01BRUYsT0FBTztRQUNMa3JCLGlCQUFpQixFQUFqQkEsaUJBQWlCO1FBQ2pCblIsV0FBVyxFQUFYQTtNQUNGLENBQUM7SUFDSDtFQUFDO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pPSDtBQUNBO0FBQ0E7QUFGQSxJQU9xQjdGLG9CQUFvQjtFQUFBLFNBQUFBLHFCQUFBO0lBQUF6c0IsMklBQUEsT0FBQXlzQixvQkFBQTtFQUFBO0VBQUEsT0FBQWxzQix3SUFBQSxDQUFBa3NCLG9CQUFBO0lBQUFqc0IsR0FBQTtJQUFBRSxLQUFBLEVBQ3ZDLFNBQU93MEIsaUNBQWlDQSxDQUFDNlAsSUFBdUIsRUFBRTUwQixJQUEyQixFQUFFO01BQzdGLElBQUksT0FBT0EsSUFBSSxLQUFLLFVBQVUsRUFBRTtRQUM5QixPQUFPO1VBQ0w2akIsS0FBSyxFQUFFLEtBQUs7VUFDWkMsZ0JBQWdCLGdCQUFBN3ZCLE1BQUEsQ0FBZ0IyZ0MsSUFBSSwwREFBQTNnQyxNQUFBLENBQUFqRCxtSUFBQSxDQUE4RGdQLElBQUk7UUFDeEcsQ0FBQztNQUNIO01BRUEsSUFBSUEsSUFBSSxDQUFDMUYsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNyQixPQUFPO1VBQ0x1cEIsS0FBSyxFQUFFLEtBQUs7VUFDWkMsZ0JBQWdCLGdCQUFBN3ZCLE1BQUEsQ0FBZ0IyZ0MsSUFBSSxrRkFBQTNnQyxNQUFBLENBQStFK0wsSUFBSSxDQUFDMUYsTUFBTTtRQUNoSSxDQUFDO01BQ0g7TUFFQSxPQUFPO1FBQ0x1cEIsS0FBSyxFQUFFLElBQUk7UUFDWEMsZ0JBQWdCLEVBQUU7TUFDcEIsQ0FBQztJQUNIO0VBQUM7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0JIO0FBQ0E7QUFDQTs7QUFFd0Q7QUFFakQsSUFBTWdSLFNBQVMsR0FBRzZDLE1BQU0sQ0FBQyxDQUFDO0FBQUMsSUFJYjlDLHlCQUF5QjtFQTRKNUMsU0FBQUEsMEJBQUEsRUFBc0I7SUFBQWhsQywySUFBQSxPQUFBZ2xDLHlCQUFBO0lBQ3BCLE1BQU0sSUFBSWgvQixLQUFLLENBQUMsMEVBQTBFLENBQUM7RUFDN0Y7RUFBQyxPQUFBekYsd0lBQUEsQ0FBQXlrQyx5QkFBQTtJQUFBeGtDLEdBQUE7SUFBQUUsS0FBQSxFQXpIRCxTQUFPNm1DLCtCQUErQkEsQ0FBQ2hsQixLQUFhLEVBQTJCO01BQzdFLFFBQVFBLEtBQUssQ0FBQ3dsQixXQUFXLENBQUMsQ0FBQztRQUN6QixLQUFLLE1BQU07VUFBRTtZQUNYLE9BQU8vQyx5QkFBeUIsQ0FBQ2dELHlCQUF5QixDQUFDQyxJQUFJLENBQUNDLE1BQU07VUFDeEU7UUFFQTtVQUFTO1lBQ1AsT0FBT2hoQyxTQUFTO1VBQ2xCO01BQ0Y7SUFDRjtFQUFDO0lBQUExRyxHQUFBO0lBQUFFLEtBQUEsRUFFRCxTQUFPNG1DLDRCQUE0QkEsQ0FBQSxFQUFnQjtNQUNqRCxPQUFPdEMseUJBQXlCLENBQUNtRCxlQUFlLENBQUNELE1BQU07SUFDekQ7RUFBQztJQUFBMW5DLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8ybEMsK0JBQStCQSxDQUFDOWpCLEtBQWEsRUFBMkI7TUFDN0UsUUFBUUEsS0FBSyxDQUFDd2xCLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLEtBQUssTUFBTTtVQUFFO1lBQ1gsSUFBSS9DLHlCQUF5QixDQUFDb0QseUNBQXlDLEVBQUU7Y0FDdkVwRCx5QkFBeUIsQ0FBQ3FELGdDQUFnQyxHQUFHckQseUJBQXlCLENBQUNzRCxxQ0FBcUM7Y0FFNUgsT0FBT3RELHlCQUF5QixDQUFDdUQsZUFBZSxDQUFDQyxNQUFNLENBQUNOLE1BQU07WUFDaEU7WUFFQSxPQUFPbEQseUJBQXlCLENBQUN5RCw0QkFBNEIsQ0FBQ0MsSUFBSSxDQUFDUixNQUFNO1VBQzNFO1FBRUEsS0FBSyxLQUFLO1VBQUU7WUFDVixPQUFPbEQseUJBQXlCLENBQUN5RCw0QkFBNEIsQ0FBQ0UsR0FBRyxDQUFDVCxNQUFNO1VBQzFFO1FBRUEsS0FBSyxLQUFLO1VBQUU7WUFDVixPQUFPbEQseUJBQXlCLENBQUN5RCw0QkFBNEIsQ0FBQ0csR0FBRyxDQUFDVixNQUFNO1VBQzFFO1FBRUE7VUFBUztZQUNQLE9BQU9oaEMsU0FBUztVQUNsQjtNQUNGO0lBQ0Y7RUFBQztJQUFBMUcsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBT3lsQyw4QkFBOEJBLENBQUM1akIsS0FBYSxFQUFzQjtNQUN2RSxJQUFLQSxLQUFLLENBQUN3bEIsV0FBVyxDQUFDLENBQUMsS0FBSyxNQUFNLElBQUsvQyx5QkFBeUIsQ0FBQ29ELHlDQUF5QyxFQUFFO1FBQzNHcEQseUJBQXlCLENBQUNxRCxnQ0FBZ0MsR0FBR3JELHlCQUF5QixDQUFDc0QscUNBQXFDO1FBRTVILElBQUl0RCx5QkFBeUIsQ0FBQzZELGdCQUFnQixFQUFFO1VBQzlDLE9BQU81RCxTQUFTO1FBQ2xCO01BQ0Y7TUFFQSxPQUFPRCx5QkFBeUIsQ0FBQ21ELGVBQWUsQ0FBQ0QsTUFBTTtJQUN6RDtFQUFDO0lBQUExbkMsR0FBQTtJQUFBRSxLQUFBLEVBRUQsU0FBTzRsQywrQkFBK0JBLENBQUMvakIsS0FBYSxFQUEyQjtNQUM3RSxRQUFRQSxLQUFLLENBQUN3bEIsV0FBVyxDQUFDLENBQUM7UUFDekIsS0FBSyxNQUFNO1VBQUU7WUFDWCxJQUFJL0MseUJBQXlCLENBQUNvRCx5Q0FBeUMsRUFBRTtjQUN2RSxJQUFNRixNQUFNLEdBQUdsRCx5QkFBeUIsQ0FBQzhELDJDQUEyQyxDQUFDLENBQUM7Y0FFdEYsT0FBT1osTUFBTTtZQUNmO1lBRUEsT0FBT2xELHlCQUF5QixDQUFDK0QsNEJBQTRCLENBQUNMLElBQUksQ0FBQ1IsTUFBTTtVQUMzRTtRQUVBLEtBQUssS0FBSztVQUFFO1lBQ1YsT0FBT2xELHlCQUF5QixDQUFDK0QsNEJBQTRCLENBQUNKLEdBQUcsQ0FBQ1QsTUFBTTtVQUMxRTtRQUVBLEtBQUssS0FBSztVQUFFO1lBQ1YsT0FBT2xELHlCQUF5QixDQUFDK0QsNEJBQTRCLENBQUNILEdBQUcsQ0FBQ1YsTUFBTTtVQUMxRTtRQUVBO1VBQVM7WUFDUCxPQUFPaGhDLFNBQVM7VUFDbEI7TUFDRjtJQUNGO0VBQUM7SUFBQTFHLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQU8wbEMsOEJBQThCQSxDQUFDN2pCLEtBQWEsRUFBc0I7TUFDdkUsSUFBS0EsS0FBSyxDQUFDd2xCLFdBQVcsQ0FBQyxDQUFDLEtBQUssTUFBTSxJQUFLL0MseUJBQXlCLENBQUNvRCx5Q0FBeUMsRUFBRTtRQUMzRyxJQUFNWSx5QkFBeUIsR0FBR2hFLHlCQUF5QixDQUFDcUQsZ0NBQWdDO1FBQzVGLElBQU1ILE1BQU0sR0FBR2xELHlCQUF5QixDQUFDOEQsMkNBQTJDLENBQUMsQ0FBQztRQUV0RixJQUFJRSx5QkFBeUIsR0FBR2hFLHlCQUF5QixDQUFDc0QscUNBQXFDLEVBQUU7VUFDL0YsSUFBSXRELHlCQUF5QixDQUFDNkQsZ0JBQWdCLEVBQUU7WUFDOUMsT0FBTzVELFNBQVM7VUFDbEI7VUFFQSxPQUFPRCx5QkFBeUIsQ0FBQ21ELGVBQWUsQ0FBQ0QsTUFBTTtRQUN6RDtRQUVBbEQseUJBQXlCLENBQUNxRCxnQ0FBZ0MsRUFBRTtRQUU1RCxPQUFPSCxNQUFNO01BQ2Y7TUFFQSxPQUFPbEQseUJBQXlCLENBQUNtRCxlQUFlLENBQUNELE1BQU07SUFDekQ7RUFBQztJQUFBMW5DLEdBQUE7SUFBQUUsS0FBQSxFQUVELFNBQWVvb0MsMkNBQTJDQSxDQUFBLEVBQWdCO01BQ3hFLElBQU1HLFFBQVEsR0FBRyxJQUFJO01BQ3JCLElBQU1DLFFBQVEsR0FBRyxJQUFJO01BQ3JCLElBQU1DLGdCQUFnQixHQUFHLENBQUM7TUFDMUIsSUFBTUMsZUFBZSxHQUFHLENBQUM7TUFDekIsSUFBTUMsS0FBSyxHQUFJLENBQUNyRSx5QkFBeUIsQ0FBQ3FELGdDQUFnQyxHQUFHWSxRQUFRLEtBQUtFLGdCQUFpQjtNQUMzRyxJQUFNRyxLQUFLLEdBQUksQ0FBQ3RFLHlCQUF5QixDQUFDcUQsZ0NBQWdDLEdBQUdhLFFBQVEsS0FBS0UsZUFBZ0I7TUFDMUcsSUFBTUcsa0JBQWtCLEdBQUd2RSx5QkFBeUIsQ0FBQ3VELGVBQWUsQ0FBQ2lCLE1BQU0sQ0FBQzl1QixLQUFLLENBQUMsQ0FBQztNQUNuRixJQUFNd3RCLE1BQU0sR0FBR3FCLGtCQUFrQixDQUFDckIsTUFBTTtNQUN4QyxJQUFNdUIsV0FBVyxHQUFHekUseUJBQXlCLENBQUMwRSxxQ0FBcUM7TUFFbkZ4QixNQUFNLENBQUN1QixXQUFXLENBQUMsSUFBSUosS0FBSztNQUM1Qm5CLE1BQU0sQ0FBQ3VCLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSUgsS0FBSztNQUNoQ3RFLHlCQUF5QixDQUFDcUQsZ0NBQWdDLEVBQUU7TUFFNUQsT0FBT0gsTUFBTTtJQUNmO0VBQUM7QUFBQTtBQUFBeUIsMEJBQUEsR0ExSmtCM0UseUJBQXlCO0FBQUEva0MsMklBQUEsQ0FBekIra0MseUJBQXlCLGVBQ1IzaUMsNERBQWUsQ0FBQ3FLLFdBQVcsS0FBSyxRQUFRO0FBQUF6TSwySUFBQSxDQUR6RCtrQyx5QkFBeUIscUJBRUYzaUMsNERBQWUsQ0FBQ3FLLFdBQVcsS0FBSyxRQUFRLElBQUlySyw0REFBZSxDQUFDYSxRQUFRLENBQUMsQ0FBQztBQUFBakQsMklBQUEsQ0FGN0Yra0MseUJBQXlCLHNCQUdEM2lDLDREQUFlLENBQUNxSyxXQUFXLEtBQUssUUFBUSxJQUFJckssNERBQWUsQ0FBQ3VuQyxTQUFTO0FBQUEzcEMsMklBQUEsQ0FIN0Yra0MseUJBQXlCLHFCQUlGLElBQUk2RSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUFBNXBDLDJJQUFBLENBSjdDK2tDLHlCQUF5QiwrQkFLUTtFQUFDaUQsSUFBSSxFQUFFLElBQUk0QixVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFBQyxDQUFDO0FBQUE1cEMsMklBQUEsQ0FMdlIra0MseUJBQXlCLGtDQU1XO0VBQ3JEMEQsSUFBSSxFQUFFLElBQUltQixVQUFVLENBQUMsQ0FDbkIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDcEMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtFQUFFO0VBQ3hLLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUM1RDtFQUFNLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztFQUFFO0VBQ3hMbEIsR0FBRyxFQUFFLElBQUlrQixVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJ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QUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDbEssSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNoRCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQXpsQyxNQUFBLENBQUEyVyw4SUFBQSxDQUFLLElBQUk4dUIsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDcjZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRSxJQUFJLEdBQUF1TCw4SUFBQSxDQUFLLElBQUk4dUIsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDcjZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBRSxJQUFJO0VBQUU7RUFDdkgsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBQXVMLDhJQUFBLENBQUssSUFBSTh1QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUNyNkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFF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O0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHlCQUF5QixTQUFTLHlCQUF5Qjs7Ozs7Ozs7OztBQ1J6Rzs7QUFFQSxjQUFjLG1CQUFPLENBQUMsa0dBQStCO0FBQ3JEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7Ozs7OztVQ2RBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7Ozs7V0N6QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBOzs7OztXQ0pBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7V0NOQTs7Ozs7V0NBQTs7V0FFQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckJBO0FBQ0E7QUFDQTs7QUFFeUI7QUFDUztBQUNRO0FBSzVCO0FBR2QsK0RBQWU7RUFDYmhuQyxHQUFHLEVBQUhBLDRDQUFHO0VBQ0hnd0IsUUFBUSxFQUFSQSxpREFBUTtFQUNSbk0sWUFBWSxFQUFaQSxxREFBWUE7QUFDZCxDQUFDLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9Ccm93c2VyRGV0ZWN0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9QbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL05ldHdvcmtNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VUb2tlbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L1BhcmFtZXRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvQ2hhbm5lbC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWxzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9DaGFubmVsQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdGF0ZUNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1Rva2VuQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9SZWFsVGltZVN0cmVhbS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9SZWFsVGltZVN0cmVhbUZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luay50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9EdXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9FeHBvbmVudGlhbEJhY2tvZmYudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL0RpbWVuc2lvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vVmlkZW9UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcmVnZW5lcmF0b3JSdW50aW1lLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2dldCBqYXZhc2NyaXB0IGNodW5rIGZpbGVuYW1lIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2pzb25wIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuXG5jb25zdCBkZWZhdWx0RG9jdW1lbnRGb2N1c0ludGVydmFsVGltZW91dCA9IDMwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRm9yZWdyb3VuZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSBfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBwcml2YXRlIF9kb2N1bWVudEZvY3VzSW50ZXJ2YWw6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmRldGVjdFRhYkZvY3VzQ2hhbmdlKCk7XG4gIH1cblxuICBnZXQgaXNGb3JlZ3JvdW5kKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kO1xuICB9XG5cbiAgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdFRhYkZvY3VzQ2hhbmdlKCk6IHZvaWQge1xuICAgIGxldCBoaWRkZW47XG4gICAgbGV0IHZpc2liaWxpdHlDaGFuZ2U7XG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIER1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgYSBkZWZpbml0aW9uIGZvciAnbXNIaWRkZW4nIG9yICd3ZWJraXRIaWRkZW4nIHR5cGVzXG4gICAgLy8gUmVxdWlyZWQgdG8gQHRzLWlnbm9yZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQubXNIaWRkZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBoaWRkZW4gPSAnbXNIaWRkZW4nO1xuICAgICAgdmlzaWJpbGl0eUNoYW5nZSA9ICdtc3Zpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRvY3VtZW50LndlYmtpdEhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGhpZGRlbiA9ICd3ZWJraXRIaWRkZW4nO1xuICAgICAgdmlzaWJpbGl0eUNoYW5nZSA9ICd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudC5oaWRkZW4gIT09ICd1bmRlZmluZWQnKSB7IC8vIE9wZXJhIDEyLjEwIGFuZCBGaXJlZm94IDE4IGFuZCBsYXRlciBzdXBwb3J0XG4gICAgICBoaWRkZW4gPSAnaGlkZGVuJztcbiAgICAgIHZpc2liaWxpdHlDaGFuZ2UgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG4gICAgfVxuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG5cbiAgICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgaXNGb3JlZ3JvdW5kID0gIWRvY3VtZW50W2hpZGRlbl07XG5cbiAgICAgIHRoaXMuc2V0Rm9jdXNTdGF0ZShpc0ZvcmVncm91bmQpO1xuICAgIH07XG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudFtoaWRkZW5dICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCBmYWxzZSk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZSwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgZmFsc2UpO1xuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RlbkZvckRvY3VtZW50Rm9jdXMuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvckRvY3VtZW50Rm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZG9jdW1lbnRGb2N1c0ludGVydmFsID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGNvbnN0IGlzRm9yZWdyb3VuZCA9IGRvY3VtZW50Lmhhc0ZvY3VzKCk7XG5cbiAgICAgIHRoaXMuc2V0Rm9jdXNTdGF0ZShpc0ZvcmVncm91bmQpO1xuICAgIH0sIGRlZmF1bHREb2N1bWVudEZvY3VzSW50ZXJ2YWxUaW1lb3V0KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fZG9jdW1lbnRGb2N1c0ludGVydmFsKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fZG9jdW1lbnRGb2N1c0ludGVydmFsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZG9jdW1lbnRGb2N1c0ludGVydmFsID0gbnVsbDtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzU3RhdGUoaXNGb3JlZ3JvdW5kKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzRm9yZWdyb3VuZCA9PT0gaXNGb3JlZ3JvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gaXNGb3JlZ3JvdW5kO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcblxuLy8gVGhpcyBmaWxlIGlzIHVzZWQgb25seSBmb3IgdGhlIHNpbGVudCBidWlsZCB0byBtb2NrIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgY2xhc3NcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciB7XG4gIGdldFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRCb29sZWFuVmFsdWVbbmFtZV07XG4gIH1cblxuICBwcml2YXRlIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQpIHtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgdGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICBpbWcuc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcigxMGUrNyldKSk7IC8vIDEwME1iIG9yIGxlc3Mgb3IgbW9yZSBkZXBlbmRpbmcgb24gYXMgeW91IHdpc2ggdG8gZm9yY2UvaW52b2tlIEdDIGN5Y2xlIHJ1blxuICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzU3VwcG9ydGVkID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvclsnY29ubmVjdGlvbiddO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydHQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VmZmVjdGl2ZVR5cGU6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG4gIH1cblxuICBnZXQgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VwcG9ydGVkO1xuICB9XG5cbiAgZ2V0IHJ0dCgpOiBTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9ydHQ7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlVHlwZSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9lZmZlY3RpdmVUeXBlO1xuICB9XG5cbiAgZ2V0IGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IFN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hdmlnYXRvclsnY29ubmVjdGlvbiddLmRvd25saW5rIHx8IG5hdmlnYXRvclsnY29ubmVjdGlvbiddLmRvd25saW5rTWF4O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFZmZlY3RpdmVUeXBlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm4gJ1Vua25vd24nO1xuICAgIH1cblxuICAgIHJldHVybiBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5lZmZlY3RpdmVUeXBlIHx8IG5hdmlnYXRvclsnY29ubmVjdGlvbiddLnR5cGU7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbmF2aWdhdG9yWydjb25uZWN0aW9uJ10ucnR0O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgICB9O1xuXG4gICAgbmF2aWdhdG9yWydjb25uZWN0aW9uJ10uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIG5hdmlnYXRvclsnY29ubmVjdGlvbiddLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRpc3RpY3MoKTogdm9pZCB7XG4gICAgdGhpcy5fcnR0LnZhbHVlID0gdGhpcy5nZXRSb3VuZFRyaXBUaW1lKCk7XG4gICAgdGhpcy5fZWZmZWN0aXZlVHlwZS52YWx1ZSA9IHRoaXMuZ2V0RWZmZWN0aXZlVHlwZSgpO1xuICAgIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnZhbHVlID0gdGhpcy5nZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbikge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uSWQgPSBlZGdlVG9rZW4/LmFwcGxpY2F0aW9uSWQgfHwgJyc7XG4gICAgdGhpcy5fdG9rZW4gPSB7XG4gICAgICB1cmk6IGVkZ2VUb2tlbj8udG9rZW4/LnVyaSA/IG5ldyBVUkwoZWRnZVRva2VuLnRva2VuLnVyaSkgOiBudWxsLFxuICAgICAgY2FwYWJpbGl0aWVzOiBlZGdlVG9rZW4/LnRva2VuPy5jYXBhYmlsaXRpZXMgfHwgW11cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHVyaSgpOiBVUkwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4udXJpO1xuICB9XG5cbiAgZ2V0IGNhcGFiaWxpdGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLmNhcGFiaWxpdGllcztcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uSWQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlRW5hYmxlbWVudCB7XG4gIHN0YXRpYyBnZXQgY2xpZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDbGllbnQgb2ZmZXIgd29ya2Zsb3cgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vyc1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzUgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc2IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYWRkVHJhbmNlaXZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENocm9tZSA2OSwgNzAsIDcxLCA3MiBleHBvc2VzIGBhZGRUcmFuY2VpdmVyYCBidXQgaXQgZG9lcyBub3Qgd29yayBjb3JyZWN0bHlcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcwIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldEN1cnJlbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgb25UcmFja0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDYzIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU1O1xuICB9XG5cbiAgc3RhdGljIGdldCBwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNob3VsZFVzZU5hdGl2ZUhscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2Ftc3VuZ0Jyb3dzZXInO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1ByZWNhY2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdJRSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiB0eXBlb2YgZG9jdW1lbnQ/LmNyZWF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzTW9iaWxlKCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB0eXBlb2YgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciA9PT0gJ3VuZGVmaW5lZCcpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFJlY2VpdmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIucHJvdG90eXBlLmNyZWF0ZUVuY29kZWRTdHJlYW1zICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZGVjbGFyZSBjb25zdCBfX1BBUkFNRVRFUlNfXzoge1xuICBkaXNjb3Zlcnk6IElEaXNjb3ZlcnlQYXJhbWV0ZXI7XG59O1xuXG5pbnRlcmZhY2UgSURpc2NvdmVyeVBhcmFtZXRlcntcbiAgaW50ZW50aW9uczogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhbWV0ZXJzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Rpc2NvdmVyeVBhcmFtZXRlcnM6IElEaXNjb3ZlcnlQYXJhbWV0ZXIgO1xuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5UGFyYW1ldGVycygpOiBJRGlzY292ZXJ5UGFyYW1ldGVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBfX1BBUkFNRVRFUlNfXztcblxuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9ICdkaXNjb3ZlcnknIGluIHBhcmFtZXRlcnMgPyBwYXJhbWV0ZXJzLmRpc2NvdmVyeSA6IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fZGlzY292ZXJ5UGFyYW1ldGVycyA9IHtpbnRlbnRpb25zOiAnJ307XG4gICAgfVxuICB9XG59XG5cblBhcmFtZXRlcnMuYXBwbHlQYXJhbWV0ZXJzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogSURpc3Bvc2FibGVbXSA9IFtdO1xuXG4gIGFkZChkaXNwb3NhYmxlOiBJRGlzcG9zYWJsZSk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QucHVzaChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5mb3JFYWNoKGRpc3Bvc2FibGUgPT4gZGlzcG9zYWJsZS5kaXNwb3NlKCkpO1xuICAgIHRoaXMuX2xpc3QubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBEaXNwb3NhYmxlTGlzdFtkaXNwb3NhYmxlcz0ke3RoaXMuX2xpc3QubGVuZ3RofV1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHg6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdmFsdWUgWyR7eH1dLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkYCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2VydFVucmVhY2hhYmxlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc29sZUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxNZXNzYWdlID0gYCR7ZGF0ZS50b0lTT1N0cmluZygpfSBbJHtjYXRlZ29yeX1dIFske0xvZ2dpbmdMZXZlbFtsb2dMZXZlbF19XSAke21lc3NhZ2V9YDtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICBjb25zb2xlLmxvZyhmdWxsTWVzc2FnZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGZ1bGxNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGVudW0gTG9nZ2luZ0xldmVsIHtcbiAgQWxsID0gLTEsXG4gIFRyYWNlID0gMTAsXG4gIERlYnVnID0gMjAsXG4gIEluZm8gPSAzMCxcbiAgV2FybiA9IDQwLFxuICBFcnJvciA9IDUwLFxuICBGYXRhbCA9IDYwLFxuICBPZmYgPSAxMDAsXG59XG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbFR5cGUgPSAnT2ZmJyB8ICdUcmFjZScgfCAnRGVidWcnIHwgJ0luZm8nIHwgJ1dhcm4nIHwgJ0Vycm9yJyB8ICdGYXRhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0ZWdvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwZW5kZXJzOiBBcHBlbmRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZDtcblxuICBnZXQgY2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgYXBwZW5kZXJzKCk6IEFwcGVuZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ1RocmVzaG9sZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHRyYWNlKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5UcmFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5UcmFjZSwgYXJncyk7XG4gIH1cblxuICBkZWJ1ZyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRGVidWcsIGFyZ3MpO1xuICB9XG5cbiAgaW5mbyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5JbmZvLCBhcmdzKTtcbiAgfVxuXG4gIHdhcm4oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuV2FybiwgYXJncyk7XG4gIH1cblxuICBlcnJvciguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRXJyb3IsIGFyZ3MpO1xuICB9XG5cbiAgZmF0YWwoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkZhdGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkZhdGFsLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKGxldmVsOiBudW1iZXIsIGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMoYXJncyk7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMudmFsdWUuZm9yRWFjaCgoYXBwZW5kZXI6IElBcHBlbmRlcikgPT4ge1xuICAgICAgYXBwZW5kZXIubG9nKGxldmVsLCBtZXNzYWdlLCB0aGlzLmNhdGVnb3J5LCBkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gYXJnc1swXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZiAmJiBhcmdzLmxlbmd0aCA+IDEgJiYgaW5kZXggPj0gMCkge1xuICAgICAgaW5kZXggPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YoJyUnLCBpbmRleCk7XG5cbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAyKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgJyUlJyB0dXJucyBpbnRvICclJ1xuICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJyVkJyBvciAnJXMnIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJWonIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnN0cmluZ2lmeShhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSwgaW5kZXgsIGFycmF5KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGFycmF5Lmxlbmd0aCAmJiBjdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5lcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5tZXNzYWdlKSArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgYFske3RoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlKX1dYDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGUgPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFyZyBpbnN0YW5jZW9mIEVycm9yID8gdGhpcy50b1N0cmluZyhhcmcpIDogYXJnLFxuICAgICAgICAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJEZWZhdWx0cyB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTG9nc107XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLmxvZ1RvQ29uc29sZV07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlciwge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IHtJQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcn0gZnJvbSAnLi4vZG9tL0lDb25maWd1cmF0aW9uUGFyYW1hdGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyOiBJQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciA9IG5ldyBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyKCk7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJyk7XG5cbiAgICBpZiAoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSkge1xuICAgICAgdGhpcy5fdGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKG5hbWU6IHN0cmluZywgYXBwbHlBcHBlbmRlcjogKGxldmVsOiBMb2dnaW5nTGV2ZWwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoYHBoZW5peC0ke25hbWV9LWxvZ2dpbmctbGV2ZWxgKTtcblxuICAgIGlmIChwYXJhbWV0ZXJWYWx1ZSA9PT0gJ09mZicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHBseUFwcGVuZGVyKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlDb25zb2xlTG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIobGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5VGVsZW1ldHJ5TG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdUaHJlc2hvbGQge1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHZhbHVlKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldFRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IFVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuLi9zZGsvVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi9zZGsvRW52aXJvbm1lbnQnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZXM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IE1ldHJpY3NTZXJ2aWNlfSA9IHt9O1xuXG4gIHN0YXRpYyBnZXRNZXRyaWNzU2VydmljZSh1cmw6IHN0cmluZyk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndXInKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF07XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzKSB7XG4gICAgICByZXR1cm4gbWV0cmljc1NlcnZpY2VzO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbmV3IE1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodXJsKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChTREsudGVsZW1ldHJ5TGV2ZWwpO1xuXG4gICAgcmV0dXJuIE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXSA9IG5ldyBNZXRyaWNzU2VydmljZShtZXRyaWNzQ29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogdm9pZCB7XG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gT2JqZWN0LnZhbHVlcyhNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzKTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMgJiYgbWV0cmljc1NlcnZpY2VzLmxlbmd0aCkge1xuICAgICAgbWV0cmljc1NlcnZpY2VzLmZvckVhY2gobWV0cmljc1NlcnZpY2UgPT4ge1xuICAgICAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IHRlbGVtZXRyeUxldmVsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uIGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi9NZXRyaWNUeXBlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDEwMjQ7XG5jb25zdCBtYXhCdWZmZXJlZFJlY29yZHMgPSAyMDQ4O1xuXG5pbnRlcmZhY2UgSVZhbHVlIHtcbiAgc3RyaW5nPzogc3RyaW5nO1xuICB1aW50NjQ/OiBudW1iZXI7XG4gIGZsb2F0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpY1JlY29yZCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBtZXRyaWM6IHN0cmluZztcbiAgdmFsdWU6IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZTogSVZhbHVlO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTWV0cmljIHtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignTWV0cmljc1NlcnZpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSBfbWV0cmljczogQXJyYXk8SU1ldHJpY1JlY29yZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSBsb2NhdGlvbi5ob3N0bmFtZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IGZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRyaWNzTWVzc2FnZXMgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKDAsIHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgdGhpcy5fbWV0cmljcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UocmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSBtYXhCdWZmZXJlZFJlY29yZHMpIHtcbiAgICAgICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWV0cmljcyA9IFsuLi5tZXRyaWNzTWVzc2FnZXMsIC4uLnRoaXMuX21ldHJpY3NdO1xuXG4gICAgICAgICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICAgICAgICB9LCB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9mYWlsdXJlQ291bnQpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVG9vIG1hbnkgY2FjaGVkIG1ldHJpYyByZWNvcmRzIFslc10sIGRyb3BwaW5nIFslc10gcmVjb3JkcycsIHRoaXMuX21ldHJpY3MubGVuZ3RoLCBtZXRyaWNzTWVzc2FnZXMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHtzdGF0dXN9OiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjVcXGR7Mn0kLy50ZXN0KHN0YXR1cy50b1N0cmluZygpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlEZWZhdWx0IHtcbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRNZXRyaWNzXTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFByb21pc2VIYW5kbGVyIGZyb20gJy4vUHJvbWlzZUhhbmRsZXInO1xuXG5jbGFzcyBQcm9taXNlIHtcbiAgX3N0YXRlOiBudW1iZXI7XG4gIF9oYW5kbGVkOiBib29sZWFuO1xuICBfdmFsdWU6IFByb21pc2U7XG4gIF9kZWZlcnJlZHM6IEFycmF5PFByb21pc2VIYW5kbGVyPjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIHRoZW4ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2UgfCB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXcnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlID0gMDtcbiAgICB0aGlzLl9oYW5kbGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG5cbiAgICB0aGlzLmRvUmVzb2x2ZShjYWxsYmFjayk7XG4gIH1cblxuICBkb1Jlc29sdmUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRvbmUgPSBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBjYWxsYmFjayhcbiAgICAgICAgdmFsdWUgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlYXNvbiA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZWplY3QocmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMucHJvbWlzZVJlamVjdChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlc29sdmUobmV3VmFsdWU6IFByb21pc2UgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFByb21pc2UgUmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9Qcm9taXNlcy1hcGx1cy9Qcm9taXNlcy1zcGVjI3RoZS1Qcm9taXNlLXJlc29sdXRpb24tcHJvY2VkdXJlXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHByb21pc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQSBQcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0IHNlbGYuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZSAmJiAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIGNvbnN0IHRoZW4gPSBuZXdWYWx1ZS50aGVuO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICBwcm9taXNlLl9zdGF0ZSA9IDM7XG4gICAgICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICBwcm9taXNlLmZpbmFsZSgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcHJvbWlzZS5kb1Jlc29sdmUoZnVuY3Rpb24oKTogdm9pZCB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgICAgICB0aGVuLmFwcGx5KG5ld1ZhbHVlLCBhcmd1bWVudHMpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByb21pc2UuX3N0YXRlID0gMTtcbiAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICBwcm9taXNlLmZpbmFsZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHByb21pc2UucHJvbWlzZVJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVqZWN0KG5ld1ZhbHVlOiBQcm9taXNlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUgPSAyO1xuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5maW5hbGUoKTtcbiAgfVxuXG4gIGZpbmFsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUgPT09IDIgJiYgdGhpcy5fZGVmZXJyZWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9oYW5kbGVkKSB7XG4gICAgICAgICAgUHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuX2RlZmVycmVkcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgdGhpcy5oYW5kbGUodGhpcy5fZGVmZXJyZWRzW2ldKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBudWxsO1xuICB9XG5cbiAgaGFuZGxlKGRlZmVycmVkOiBQcm9taXNlSGFuZGxlcik6IHZvaWQge1xuICAgIGxldCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlO1xuXG4gICAgd2hpbGUgKHByb21pc2UuX3N0YXRlID09PSAzKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS5fdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAwKSB7XG4gICAgICBwcm9taXNlLl9kZWZlcnJlZHMucHVzaChkZWZlcnJlZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9taXNlLl9oYW5kbGVkID0gdHJ1ZTtcbiAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSBwcm9taXNlLl9zdGF0ZSA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25SZWplY3RlZDtcblxuICAgICAgaWYgKGNhbGxiYWNrID09PSBudWxsKSB7XG4gICAgICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMSkge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXN1bHQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShyZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFsbChhcnI6IEFycmF5PFByb21pc2U+KTogUHJvbWlzZSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZW1haW5pbmcgPSBhcmdzLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1hbmFnZVJlc3BvbnNlID0gKGksIHZhbHVlKTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRoZW4gPSB2YWx1ZS50aGVuO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhlbi5jYWxsKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHZhbHVlID0+IG1hbmFnZVJlc3BvbnNlKGksIHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXJnc1tpXSA9IHZhbHVlO1xuXG4gICAgICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG4gICAgICAgICAgICByZXNvbHZlKGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbWFuYWdlUmVzcG9uc2UoaSwgYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcmVzb2x2ZSh2YWx1ZSk6IFByb21pc2Uge1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJlamVjdCh2YWx1ZSk6IFByb21pc2Uge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiByZWplY3QodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByYWNlKGFycjogQXJyYXk8UHJvbWlzZT4pOiBQcm9taXNlIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLnJhY2UgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoYXJyW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgX2ltbWVkaWF0ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBpZ25vcmVkID0gc2V0VGltZW91dChjYWxsYmFjaywgMCk7XG4gIH1cblxuICBzdGF0aWMgX3VuaGFuZGxlZFJlamVjdGlvbihlcnJvcik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZSkge1xuICAgICAgY29uc29sZS53YXJuKCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246JywgZXJyb3IpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICB9XG4gIH1cbn1cblxuUHJvbWlzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbihvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2UgfCB2b2lkIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07XG5cblByb21pc2UucHJvdG90eXBlWyd0aGVuJ10gPSBmdW5jdGlvbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogUHJvbWlzZSB8IHZvaWQge1xuICBjb25zdCBwcm9taXNlID0gbmV3IHRoaXMuY29uc3RydWN0b3IoKCkgPT4gbnVsbCk7XG5cbiAgdGhpcy5oYW5kbGUobmV3IFByb21pc2VIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKSk7XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZVsnZmluYWxseSddID0gZnVuY3Rpb24oY2FsbGJhY2s6IEZ1bmN0aW9uKTogUHJvbWlzZSB8IHZvaWQge1xuICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICB2YWx1ZSA9PiBjb25zdHJ1Y3Rvci5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gdmFsdWUpLFxuICAgIHJlYXNvbiA9PiBjb25zdHJ1Y3Rvci5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gY29uc3RydWN0b3IucmVqZWN0KHJlYXNvbikpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9taXNlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFByb21pc2UgZnJvbSAnLi9Qcm9taXNlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJvbWlzZUhhbmRsZXIge1xuICBvbkZ1bGZpbGxlZDogRnVuY3Rpb247XG4gIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uO1xuICBwcm9taXNlOiBQcm9taXNlO1xuXG4gIGNvbnN0cnVjdG9yKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKSB7XG4gICAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXI/OiBSVENSdHBUcmFuc2NlaXZlcjtcbiAgdmlkZW9UcmFuc2NlaXZlcj86IFJUQ1J0cFRyYW5zY2VpdmVyO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9O1xuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1ByZWNhY2hpbmdFbmFibGVkKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IFBlZXJDb25uZWN0aW9uU2VydmljZS5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHJlLWNhY2hlIHBlZXIgY29ubmVjdGlvbiBvZmZlcicsIGUpKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCk6IFByb21pc2U8eyBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQgfCB2b2lkPjsgZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB9PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0ge1xuICAgICAgZGlyZWN0aW9uOiAncmVjdm9ubHknLFxuICAgICAgcGVlckNvbm5lY3Rpb246IFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gPSAncmVjdm9ubHknLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBmYWxzZSk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmICFlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXN9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBsZXQgdmlkZW9UcmFuc2NlaXZlciwgYXVkaW9UcmFuc2NlaXZlcjtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7ZGlyZWN0aW9ufSk7XG4gICAgICAgICAgdmlkZW9UcmFuc2NlaXZlciA9IHBlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycsIHtkaXJlY3Rpb259KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVyLFxuICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25maWd1cmF0aW9uTWFuYWdlciB7XG4gIHN0YXRpYyB0cnVuY2F0ZUljZVNlcnZlcnMoY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjU3RhdGlzdGljO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydCB7XG4gIHJlc3VsdDogKCkgPT4gSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW0gZXh0ZW5kcyBSVENTdGF0c1JlcG9ydCB7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZXM6ICgpID0+IHN0cmluZ1tdO1xuICBzdGF0OiAobmFtZSkgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNTdGF0aXN0aWMge1xuICBzc3JjPzogc3RyaW5nO1xuICBtZWRpYVR5cGU/OiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBiaXRyYXRlPzogbnVtYmVyO1xuICBieXRlc1JlY2VpdmVkPzogbnVtYmVyO1xuICBmcmFtZXNEZWNvZGVkPzogbnVtYmVyO1xuICBwYWNrZXRzTG9zdD86IG51bWJlcjtcbiAgcGFja2V0c1JlY2VpdmVkPzogbnVtYmVyO1xuICBjb2RlYz86IHN0cmluZztcbiAgZnBzPzogbnVtYmVyO1xuICByb3VuZFRyaXBUaW1lPzogbnVtYmVyO1xuICBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA/OiBudW1iZXI7XG59XG5cbmNvbnN0IHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQgPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25uZWN0aW9uTW9uaXRvciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRWaWRlb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZEF1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfcnRjU3RhdGlzdGljOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPiA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPih7fSk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIHByaXZhdGUgX2lzTW9uaXRvclJ1bm5pbmcgPSB0cnVlO1xuICBwcml2YXRlIF91cGRhdGVUaW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUgX3RyYWNrc1RvTW9uaXRvcjogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IHBlZXJDb25uZWN0aW9uO1xuICAgIHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUgPSBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgIHRoaXMuX3RyYWNrc1RvTW9uaXRvciA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLm1hcCh0cmFjayA9PiB0cmFjay5raW5kKSB8fCBbXTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5nZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCkge1xuICAgICAgICBjb25zdCBwYXJzZWRTRFAgPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRTRFAuYXVkaW9Db2RlYztcbiAgICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFNEUC52aWRlb0NvZGVjO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWMoKTogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBhd2FpdCB0aGlzLnVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2FmYXJpIDExIGRvZXNudCBoYXZlIGtpbmQgb3IgbWVkaWFUeXBlIHNvIHdlIG5lZWQgdG8gdGFrZSBpdCBmcm9tIHRoZSBpbmJvdW5kLXJ0cCBvYmplY3QgaWRcbiAgICBjb25zdCBnZXRLaW5kRm9yU2FmYXJpMTEgPSAoaXRlbSk6IHN0cmluZyA9PiBpdGVtLmlkLmluY2x1ZGVzKCdBdWRpbycpID8gJ2F1ZGlvJyA6IGl0ZW0uaWQuaW5jbHVkZXMoJ1ZpZGVvJykgPyAndmlkZW8nIDogJyc7XG4gICAgY29uc3QgaWdub3JlZCA9IGF3YWl0IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKG51bGwpXG4gICAgICAudGhlbihzdGF0cyA9PiB7XG4gICAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG5cbiAgICAgICAgaWYgKHN0YXRzKSB7XG4gICAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICAgIGxldCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG5cbiAgICAgICAgICBzdGF0cy5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdjYW5kaWRhdGUtcGFpcicgJiYgcmVwb3J0LmN1cnJlbnRSb3VuZFRyaXBUaW1lKSB7XG4gICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUgKiAxMDAwO1xuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1snYXVkaW8nXS5yb3VuZFRyaXBUaW1lID0gcm91bmRUcmlwVGltZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5yb3VuZFRyaXBUaW1lID0gcm91bmRUcmlwVGltZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdjYW5kaWRhdGUtcGFpcicgJiYgcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1snYXVkaW8nXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2luYm91bmQtcnRwJykge1xuICAgICAgICAgICAgICBjb25zdCBraW5kID0gcmVwb3J0LmtpbmQgfHwgcmVwb3J0Lm1lZGlhVHlwZSB8fCBnZXRLaW5kRm9yU2FmYXJpMTEocmVwb3J0KTtcbiAgICAgICAgICAgICAgbGV0IGNvZGVjID0gJyc7XG5cbiAgICAgICAgICAgICAgc3RhdHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gcmVwb3J0LmNvZGVjSWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvZGVjID0gaXRlbS5taW1lVHlwZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGlmIChraW5kICYmIHRoaXMuX3RyYWNrc1RvTW9uaXRvci5pbmNsdWRlcyhraW5kKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzID0gcmVwb3J0LmJ5dGVzUmVjZWl2ZWQgfHwgMDtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0J5dGVzUmVjZWl2ZWQgPSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8uYnl0ZXNSZWNlaXZlZCA/PyAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ5dGVzRGVsdGEgPSBieXRlcyAtIHByZXZpb3VzQnl0ZXNSZWNlaXZlZDtcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgICBjb25zdCBiaXRyYXRlID0gYnl0ZXNEZWx0YSAmJiB0aW1lRGVsdGEgPyBNYXRoLmZsb29yKDggKiBieXRlc0RlbHRhIC9cbiAgICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgICBzc3JjOiByZXBvcnQuc3NyYyxcbiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICAgIGJpdHJhdGUsXG4gICAgICAgICAgICAgICAgICBieXRlc1JlY2VpdmVkOiByZXBvcnQuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNMb3N0OiByZXBvcnQucGFja2V0c0xvc3QsXG4gICAgICAgICAgICAgICAgICBwYWNrZXRzUmVjZWl2ZWQ6IHJlcG9ydC5wYWNrZXRzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNEZWNvZGVkO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAgIDEwMDA7XG5cbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZwcyddID0gZnBzID8gTWF0aC5yb3VuZChmcHMgKiAxMDApIC8gMTAwIDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWNMZWdhY3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWdub3JlZCA9IGF3YWl0IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzTGVnYWN5KCkudGhlbihzdGF0cyA9PiB7XG4gICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjTW9uaXRvclN0YXRpc3RpYyA9IHt9O1xuICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuXG4gICAgICBzdGF0cy5yZXN1bHQoKS5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgIHJlcG9ydC5uYW1lcygpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgaWYgKG5hbWUgPT09ICdnb29nUlRUJykge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5zdGF0KG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnc3NyYycpIHtcbiAgICAgICAgICBjb25zdCBtZWRpYVR5cGUgPSByZXBvcnQuc3RhdCgnbWVkaWFUeXBlJykudG9TdHJpbmcoKTtcblxuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXSA9IHt0aW1lc3RhbXA6IERhdGUubm93KCl9O1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnc3NyYyddID0gcmVwb3J0LnN0YXQoJ3NzcmMnKS50b1N0cmluZygpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnbWVkaWFUeXBlJ10gPSBtZWRpYVR5cGU7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydieXRlc1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgnYnl0ZXNSZWNlaXZlZCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c0xvc3QnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzTG9zdCcpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncGFja2V0c1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgncGFja2V0c1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydjb2RlYyddID0gcmVwb3J0LnN0YXQoJ2dvb2dDb2RlY05hbWUnKS50b1N0cmluZygpIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUobWVkaWFUeXBlKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3JvdW5kVHJpcFRpbWUnXSA9IHJvdW5kVHJpcFRpbWU7XG5cbiAgICAgICAgICBpZiAobWVkaWFUeXBlID09PSAndmlkZW8nICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8pIHtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LnN0YXQoJ2ZyYW1lc0RlY29kZWQnKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnBzJ10gPSAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLmZyYW1lc0RlY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRGVjb2RlZCkgL1xuICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgIDEwMDAgfHwgMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29kZWNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWM7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1c2VkQ29kZWNMaW5lID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBhPXJ0cG1hcDoke3NkcFNwbGl0QnlMaW5lcy5maW5kKGkgPT4gaS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpLnNwbGl0KCcgJylbM119YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmUuc3BsaXQoJyAnKVsxXTtcbiAgICBjb25zdCBjb2RlY05hbWUgPSB1c2VkQ29kZWMuc3BsaXQoJy8nKVswXTtcblxuICAgIHJldHVybiBjb2RlY05hbWU7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24sIHtQZWVyQ29ubmVjdGlvbkV2ZW50c30gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lMZWdhY3lSVENTdGF0c1JlcG9ydH0gZnJvbSAnLi9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdWYW5pbGxhUGVlckNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IFJUQ1BlZXJDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jb25uZWN0aW9uU3RhdGU7XG4gIH1cblxuICBnZXQgaWNlQ29ubmVjdGlvblN0YXRlKCk6IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZTtcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPZmZlcihvcHRpb25zPzogUlRDT2ZmZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVPZmZlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVBbnN3ZXIob3B0aW9ucz86IFJUQ0Fuc3dlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaGFzQ3J5cHRvID0gZGVzY3JpcHRpb24uc2RwPy5tYXRjaCgvYT1jcnlwdG86L2kpO1xuXG4gICAgaWYgKGhhc0NyeXB0bykge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NEUCBhPWNyeXB0byBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgZ2V0U2VuZGVycygpOiBSVENSdHBTZW5kZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gIH1cblxuICBnZXRTdGF0cyhzZWxlY3Rvcj86IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsKTogUHJvbWlzZTxSVENTdGF0c1JlcG9ydD4ge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZWxlY3Rvcik7XG4gIH1cblxuICBnZXRTdGF0c0xlZ2FjeSgpOiBQcm9taXNlPElMZWdhY3lSVENTdGF0c1JlcG9ydD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlOiBQZWVyQ29ubmVjdGlvbkV2ZW50cywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZTogUGVlckNvbm5lY3Rpb25FdmVudHMsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBvcHRpb25zPzogYm9vbGVhbiB8IEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRUcmFuc2NlaXZlcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCk6IFJUQ1J0cFRyYW5zY2VpdmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogdm9pZCB7XG4gICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBzZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc2V0IG9udHJhY2soaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2s7XG4gIH1cblxuICBzZXQgb25pY2VjYW5kaWRhdGUoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNhbmRpZGF0ZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBzZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXY6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW5pbGxhUGVlckNvbm5lY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuL1N1YmplY3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkT25seVN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0OiBTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHN1YmplY3Q6IFN1YmplY3Q8VD4pIHtcbiAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBBcnJheTxUPiwgbGlzdGVuZXI6IFQpIHtcbiAgICBzdXBlcigoKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG5cbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogQXJyYXk8KFQpID0+IHZvaWQ+O1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgdGhpcy5fbGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4ge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgbGlzdGVuZXIodGhpcy5fdmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlTGlzdGVuZXI8KFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgc3RhdGljIGdldEVudmlyb25tZW50RnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgVVJMKHVybCk7XG5cbiAgICAgIHJldHVybiBiYXNlVVJMLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi4vbG9nZ2VyL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQge0lDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyfSBmcm9tICcuLi9kb20vSUNvbmZpZ3VyYXRpb25QYXJhbWF0ZXJSZWFkZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGZyb20gJy4uL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuLi9ydGMvSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9FbnZpcm9ubWVudCc7XG5pbXBvcnQge0hsc1BsYXllclR5cGUsIFNoYWthVHlwZSwgV2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvU3RyZWFtVHlwZXMnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcblxuY29uc3QgcGFnZUxvYWRUaW1lID0gd2luZG93WydfX3BoZW5peFBhZ2VMb2FkVGltZSddIHx8IHdpbmRvd1snX19wYWdlTG9hZFRpbWUnXSB8fCBEYXRlLm5vdygpO1xuXG5pbnRlcmZhY2UgSUluaXRPcHRpb25zIHtcbiAgZGlzY292ZXJ5VXJpPzogc3RyaW5nO1xuICBwZWVyQ29ubmVjdGlvbkZhY3Rvcnk/OiBJUGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB0ZWxlbWV0cnlMZXZlbD86IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgY29uc29sZUxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0/OiBib29sZWFuO1xuICBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZT86IGJvb2xlYW47XG4gIHdlYlBsYXllckxvYWRlcj86IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHBsYXllcjogU2hha2FUeXBlKSA9PiB2b2lkO1xuICBobHNKc0xvYWRlcj86IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNESyB7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfd2ViUGxheWVyTG9hZGVyID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXI6IElDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyID0gbmV3IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Vudmlyb25tZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeVVybDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSA4O1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5TGV2ZWw6IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+ID0gbmV3IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+KFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdChCdWlsZEZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGVuYW5jeTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9jbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9IFN0cmluZ3MucmFuZG9tKDMyKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvYWRlZFRpbWVzdGFtcDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU0RLJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbml0aWFsaXplZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5pdGlhbGl6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4oU0RLLl9pbml0aWFsaXplZCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seURpc2NvdmVyeVVyaTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4oRGlzY292ZXJ5VXJpLnVyaSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBzdGF0aWMgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbmFuY3koKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY2xpZW50U2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNESy5fY2xpZW50U2Vzc2lvbklkO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2FkZWRUaW1lc3RhbXAoKTogRGF0ZSB7XG4gICAgcmV0dXJuIFNESy5fbG9hZGVkVGltZXN0YW1wO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbml0aWFsaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5SW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVVyaSgpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlEaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJQbGF5ZXJMb2FkZXIoKTogKFdlYlBsYXllclR5cGUpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6IChTaGFrYVR5cGUpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYVBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaGxzSnNMb2FkZXIoKTogKEhsc1BsYXllclR5cGUpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9obHNKc0xvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWV0cmljc1NlcnZpY2UoKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIHJldHVybiBTREsuX21ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwoVGVsZW1ldHJ5TGV2ZWxbdmFsdWVdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwgPSBTREsuX3RlbGVtZXRyeUxldmVsLnN1YnNjcmliZSh0ZWxlbWV0cnlMZXZlbCA9PiB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLmRpc2NvdmVyeVVyaS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLnRlbGVtZXRyeVVybC52YWx1ZSA9IFNESy5nZXRUZWxlbWV0cnlVcmwodmFsdWUpO1xuICAgICAgU0RLLl9lbnZpcm9ubWVudC52YWx1ZSA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGFubmVsVG9rZW4gPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtY2hhbm5lbC10b2tlbicpO1xuXG4gICAgaWYgKGNoYW5uZWxUb2tlbikge1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbihjaGFubmVsVG9rZW4pO1xuXG4gICAgICBTREsuX3RlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeTtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmlWYWx1ZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC11cmknKTtcblxuICAgIGlmICh1cmlWYWx1ZSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaVZhbHVlO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVUklWYWx1ZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1iYXNlLXVyaScpO1xuXG4gICAgaWYgKGJhc2VVUklWYWx1ZSkge1xuICAgICAgY29uc3QgdXJpID0gbmV3IFVSTChiYXNlVVJJVmFsdWUpO1xuXG4gICAgICB1cmkucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC1iYXNlLXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaW5pdChvcHRpb25zPzogSUluaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBuZXcgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBvcHRpb25zLmRpc2NvdmVyeVVyaTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUgPSBvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgICAgU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChvcHRpb25zLnRlbGVtZXRyeUxldmVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLnRocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMubG9nZ2luZ0xldmVsKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiZcbiAgICAgICAgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgICAgY29uc3QgY29uc29sZUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgQ29uc29sZUFwcGVuZGVyKTtcblxuICAgICAgICBpZiAoY29uc29sZUFwcGVuZGVyKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgIT09ICdPZmYnKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgICAgdGhpcy5fd2ViUGxheWVyTG9hZGVyID0gb3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyID0gb3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgICAgdGhpcy5faGxzSnNMb2FkZXIgPSBvcHRpb25zLmhsc0pzTG9hZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgU0RLLmRpc3Bvc2UoKTtcbn0pO1xuXG5TREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcblNESy5pbml0KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVVybCB7XG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IFVSTCh1cmwpO1xuICAgICAgY29uc3Qgc2VnbWVudHMgPSBiYXNlVVJMLmhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICAgIHN3aXRjaCAoYmFzZVVSTC5wcm90b2NvbCkge1xuICAgICAgICBjYXNlICd3czonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cDonO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dzczonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cHM6JztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDIgfHxcbiAgICAgICAgICAoc2VnbWVudHMubGVuZ3RoID09PSAzICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdLmxlbmd0aCA8PSAyICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmxlbmd0aCA8PSAzKVxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnRzLnVuc2hpZnQoJ3RlbGVtZXRyeScpO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdzdGctJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1zdGcnKSB8fCBzZWdtZW50c1swXS5pbmNsdWRlcygnLXN0Zy0nKSB8fCBzZWdtZW50c1swXSA9PT0gJ3N0ZycpIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5LXN0Zyc7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ2xvY2FsJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1sb2NhbCcpKSB7XG4gICAgICAgIC8vIExlYXZlIFVSTCB1bmNoYW5nZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeSc7XG4gICAgICB9XG5cbiAgICAgIGJhc2VVUkwuaG9zdG5hbWUgPSBzZWdtZW50cy5qb2luKCcuJyk7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVVJMLm9yaWdpbn0vdGVsZW1ldHJ5YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4vQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFZpZGVvVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5JztcbmltcG9ydCBTZXNzaW9uVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnknO1xuaW1wb3J0IHtJUnRjTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IFRva2VuQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1Rva2VuQ29udGV4dCc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQsIHtDaGFubmVsQ29udGV4dE9wdGlvbnN9IGZyb20gJy4uL2NvbnRleHQvQ2hhbm5lbENvbnRleHQnO1xuaW1wb3J0IEVuY29kZWRTdHJlYW1TaW5rLCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQgU3RyZWFtVHJhY2tUcmFuc2Zvcm0sIHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCB7U3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnN9IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdGF0ZUNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbUZhY3RvcnkgZnJvbSAnLi4vc3RyZWFtaW5nL1N0cmVhbUZhY3RvcnknO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsT3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbCBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NoYW5uZWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbFN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVZpZGVvRWxlbWVudDogUmVhZE9ubHlTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuOiBSZWFkT25seVN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRvTXV0ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRvUGF1c2VkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW5FeHBpcmluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dGhvcml6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlPbmxpbmU6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMb2FkaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGxheWluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YW5kYnk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdG9wcGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VGFyZ2V0TGFnOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxhZzogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlCaXRyYXRlTGltaXQ6IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZXNvbHV0aW9uOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJ0Y1N0YXRpc3RpY3M6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbT47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgb3B0aW9ucz86IENoYW5uZWxPcHRpb25zKSB7XG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbik7XG4gICAgY29uc3QgY2hhbm5lbENvbnRleHRPcHRpb25zOiBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7dGFyZ2V0TGFnOiBvcHRpb25zPy50YXJnZXRMYWd9O1xuICAgIGNvbnN0IHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIGhhc0luc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBuZXcgQ2hhbm5lbENvbnRleHQoY2hhbm5lbENvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IG5ldyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5VmlkZW9FbGVtZW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxIVE1MVmlkZW9FbGVtZW50Pih0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuKTtcbiAgICB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRvUGF1c2VkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQbGF5aW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUxhZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcpO1xuICAgIHRoaXMuX3JlYWRPbmx5Qml0cmF0ZUxpbWl0ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdCk7XG4gICAgdGhpcy5fcmVhZE9ubHlSZXNvbHV0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24pO1xuICAgIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudCk7XG4gICAgdGhpcy5fcmVhZE9ubHlFbmRQb2ludCA9IG5ldyBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQ+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbT4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPih0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNTdGF0aXN0aWNzKTtcbiAgICB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbT4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcbiAgICB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIgPSB0aGlzLmhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS5zdWJzY3JpYmUoc3RyZWFtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy52aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkgPSBuZXcgVmlkZW9UZWxlbWV0cnkodGhpcy5zdHJlYW1JZCwgU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodGhpcy52aWRlb0VsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh0aGlzLnZpZGVvRWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5yZXN0YXJ0QWZ0ZXJTdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIH0sIGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi5zdWJzY3JpYmUocmVzb2x1dGlvbiA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSkge1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5Lm9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhyZXNvbHV0aW9uLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC5zdWJzY3JpYmUoYml0cmF0ZUxpbWl0ID0+IHtcbiAgICAgICAgaWYgKGJpdHJhdGVMaW1pdCAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUubGltaXRCaXRyYXRlKFxuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgYml0cmF0ZUxpbWl0LFxuICAgICAgICAgICAgQml0cmF0ZVN0YXRlLktlZXAsXG4gICAgICAgICAgICBCaXRyYXRlTW9kZS5Ob3JtYWxcbiAgICAgICAgICApXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgZGVzdHJveVN0cmVhbU9uVW5tb3VudCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW1PblVubW91bnQodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLCAnY2xpZW50OnRlcm1pbmF0aW9uLW9uLXdpbmRvdy11bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHZpZGVvRWxlbWVudCgpOiBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0IHZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSA9IHZpZGVvRWxlbWVudDtcblxuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZTtcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLnJlc29sdXRpb24udmFsdWUud2lkdGggIT09IHZpZGVvRWxlbWVudC52aWRlb1dpZHRoIHx8IHRoaXMucmVzb2x1dGlvbi52YWx1ZS5oZWlnaHQgIT09IHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gbmV3IERpbWVuc2lvbih2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCwgdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbi52YWx1ZSA9IERpbWVuc2lvbi5lbXB0eTtcbiAgICB9XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRW5jb2RlZEVkZ2VUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSA9IHRva2VuO1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcblxuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgPSBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2VuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zJyk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCBhdXRvTXV0ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRvTXV0ZWQ7XG4gIH1cblxuICBnZXQgYXV0b1BhdXNlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9QYXVzZWQ7XG4gIH1cblxuICBnZXQgdG9rZW5FeHBpcmluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmc7XG4gIH1cblxuICBnZXQgYXV0aG9yaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQ7XG4gIH1cblxuICBnZXQgb25saW5lKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5T25saW5lO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHBsYXlpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQbGF5aW5nO1xuICB9XG5cbiAgZ2V0IHN0YW5kYnkoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGFuZGJ5O1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdG9wcGVkO1xuICB9XG5cbiAgZ2V0IHRhcmdldExhZygpOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUYXJnZXRMYWc7XG4gIH1cblxuICBnZXQgbGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxhZztcbiAgfVxuXG4gIGdldCBiaXRyYXRlTGltaXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQudmFsdWU7XG4gIH1cblxuICBnZXQgcmVzb2x1dGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbjtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFbmRQb2ludDtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQ7XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljcygpOiBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc2V0Qml0cmF0ZUxpbWl0KGJpdHJhdGVMaW1pdDogQml0c1BlclNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IGJpdHJhdGVMaW1pdDtcbiAgfVxuXG4gIGNsZWFyQml0cmF0ZUxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQgPSAwO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICBCaXRyYXRlTW9kZS5SZXNldFxuICAgICAgKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhcmdldExhZyhsYWc6IE1pbGxpc2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnLnZhbHVlID0gbGFnO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB1bm11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBVUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybSgndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0oJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gRW5jb2RlZFN0cmVhbVNpbmsudmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luaygndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCdhdWRpbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUgJiYgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBpbnNlcnRhYmxlLXN0cmVhbXMgYW5kIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGFyZSBlbmFibGVkLCBvbmx5IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbic7XG4gICAgY29uc3QgaGFzRW5jb2RlZFN0cmVhbVNpbmsgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbic7XG5cbiAgICBpZiAoaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2sgJiYgaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQm90aCBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGNhbGxiYWNrIGFuZCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgc2luayBmdW5jdGlvbiBmb3VuZCwgb25seSB1c2Ugb25lIHR5cGUgb3IgdGhlIG90aGVyJyk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQuaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNZWRpYSBTdHJlYW0gVHJhY2sgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBpcyBtaXNzaW5nOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBjYWxsYmFjayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIG5vdCBlbmFibGVkYCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIGlmICghKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgQVBJJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0NyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGVuY29kZWQtaW5zZXJ0YWJsZS1zdHJlYW1zIGlzIGVuYWJsZWQnKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBDcmVhdGVDaGFubmVsT3B0aW9ucyB0cmFuc2Zvcm0gc2luayBmdW5jdGlvbiBmb3VuZDsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OnN0YXJ0Jyk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIC8vIE5lZWQgdG8gc2V0IGlzU3RhcnRpbmcgdG8gZmFsc2UgYW5kIGNhbGwgaGFuZGxlU3RyZWFtRmFpbHVyZSBpZiBzdHJlYW0gbW9uaXRvcnMgZm91bmQgYW4gaXNzdWVcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdHJlYW1QbGF5ZXIgPSBTdHJlYW1GYWN0b3J5LmNyZWF0ZSh0b2tlbiwgdGhpcy5fY2hhbm5lbENvbnRleHQsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCwgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIGlmICghc3RyZWFtUGxheWVyKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbVBsYXllci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cCxcbiAgICAgIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQuYmluZCh0aGlzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IGNoYW5uZWwnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuUGxheWluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgdGhpcy5nZXRSZXRyeUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXN0YXJ0QWZ0ZXJTdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwbGF5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFtZWRpYVN0cmVhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJldHJ5SW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgICAgcmV0dXJuIHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFuZEJ5OlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgdW5hdXRob3JpemVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIHJlc3RyaWN0ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBsYXlpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwYXVzZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgaW52b2tlIHBsYXkoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byBjb25maWd1cmF0aW9uIGVycm9yLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlO1xuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW0odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudCAmJiB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9ICcnO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGF5UHJvbWlzZSA9IHZpZGVvRWxlbWVudC5wbGF5KCk7XG5cbiAgICBpZiAocGxheVByb21pc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxheVByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgIGNvbnN0IGhhc0F1ZGlvVHJhY2sgPSAhIW1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZpbHRlcih0cmFjayA9PiB7XG4gICAgICAgIHJldHVybiB0cmFjay5raW5kID09PSAnYXVkaW8nO1xuICAgICAgfSkubGVuZ3RoO1xuICAgICAgY29uc3QgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgPSAhU0RLLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuXG4gICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgfHwgdmlkZW9FbGVtZW50Lm11dGVkIHx8ICFoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGF1c2VkIHZpZGVvIGFmdGVyIHBsYXkgZmFpbGVkLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQXVkaW9UcmFjaykge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSBtdXRlZCB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHZpZGVvRWxlbWVudC5wbGF5KClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBsYXllZCB2aWRlbyBhZnRlciBhdXRvIG11dGluZy4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkIHRvIHVubXV0ZS4nLCB0aGlzLnN0cmVhbUlkKTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgICAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmVudW0gQ2hhbm5lbFN0YXRlIHtcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nLFxuICBQYXVzZWQsXG4gIFBsYXlpbmcsXG4gIFJlY292ZXJpbmcsXG4gIFJlY29ubmVjdGluZyxcbiAgU3RhbmRCeSxcbiAgU3RvcHBlZCxcbiAgVW5hdXRob3JpemVkLFxuICBHZW9SZXN0cmljdGVkLFxuICBHZW9CbG9ja2VkLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUsXG4gIENvbmZpZ3VyYXRpb25FcnJvcixcbiAgVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIENsaWVudFN0YXJ0RXJyb3IsXG4gIEVycm9yXG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYW5uZWxTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBDaGFubmVsLCB7Q2hhbm5lbE9wdGlvbnN9IGZyb20gJy4vQ2hhbm5lbCc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5cbnR5cGUgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgPSB7XG4gIHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudDtcbiAgdG9rZW46IEVuY29kZWRFZGdlVG9rZW47XG4gIHRhcmdldExhZz86IE1pbGxpc2Vjb25kO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+O1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrPzogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT47XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxzIHtcbiAgc3RhdGljIGNyZWF0ZUNoYW5uZWwob3B0aW9uczogQ3JlYXRlQ2hhbm5lbE9wdGlvbnMpOiBDaGFubmVsIHtcbiAgICBpZiAoIVNESy5pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgbm90IGxvYWRlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGFubmVsT3B0aW9uczogQ2hhbm5lbE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnMudGFyZ2V0TGFnLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQ2hhbm5lbChvcHRpb25zLnZpZGVvRWxlbWVudCwgb3B0aW9ucy50b2tlbiwgY2hhbm5lbE9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWxzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtLCBTdWJzY3JpYmVTdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IHtJUnRjTW9uaXRvclN0YXRpc3RpYywgSVJ0Y1N0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcblxuY29uc3QgZGVmYXVsdFRhcmdldExhZyA9IDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbENvbnRleHQge1xuICBjaGFubmVsSW5pdGlhbGl6YXRpb246IERhdGU7XG4gIGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgY2hhbm5lbERpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgcmVuZGVyZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHZpZGVvRWxlbWVudDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50PjtcbiAgc3RhdGU6IFN1YmplY3Q8Q2hhbm5lbFN0YXRlPjtcbiAgYXV0b011dGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRvUGF1c2VkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHBsYXlpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHRhcmdldExhZzogU3ViamVjdDxNaWxsaXNlY29uZD47XG4gIGxhZzogU3ViamVjdDxNaWxsaXNlY29uZD47XG4gIGJpdHJhdGVMaW1pdDogU3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcmVzb2x1dGlvbjogU3ViamVjdDxEaW1lbnNpb24+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQ+O1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbT47XG4gIHJ0Y1N0YXRpc3RpY3M6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+O1xuICB2aWRlb1RlbGVtZXRyeTogVmlkZW9UZWxlbWV0cnk7XG4gIHJ0Y0F1ZGlvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljO1xuICBydGNWaWRlb1N0YXRpc3RpYzogSVJ0Y1N0YXRpc3RpYztcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IENoYW5uZWxDb250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLmNoYW5uZWxEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucmVuZGVyZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbEluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IG5ldyBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQ+KG51bGwpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxDaGFubmVsU3RhdGU+KENoYW5uZWxTdGF0ZS5TdGFydGluZyk7XG4gICAgdGhpcy5hdXRvTXV0ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRvUGF1c2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0aG9yaXplZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMub25saW5lID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMucGxheWluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0YW5kYnkgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdG9wcGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMudGFyZ2V0TGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQ+KG9wdGlvbnM/LnRhcmdldExhZyA/PyBkZWZhdWx0VGFyZ2V0TGFnKTtcbiAgICB0aGlzLmxhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kPigwKTtcbiAgICB0aGlzLmJpdHJhdGVMaW1pdCA9IG5ldyBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+KDApO1xuICAgIHRoaXMucmVzb2x1dGlvbiA9IG5ldyBTdWJqZWN0PERpbWVuc2lvbj4oRGltZW5zaW9uLmVtcHR5KTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50PihudWxsKTtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPihudWxsKTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbS5zdHJlYW1JZDtcbiAgfVxuXG4gIGFwcGx5U3RhdHVzKHN0YXR1czogU3Vic2NyaWJlU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgICAgICB0aGlzLnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC52YWx1ZSAmJiB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICduby1zdHJlYW0nOlxuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFuZEJ5O1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtPjtcbiAgcGVlckNvbm5lY3Rpb246IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uPjtcbiAgcGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0czogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubWVkaWFTdHJlYW0gPSBuZXcgU3ViamVjdDxNZWRpYVN0cmVhbT4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlQ29udGV4dCB7XG4gIGlzU3RhcnRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGlzRGlzcG9zZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pc1N0YXJ0aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuaXNEaXNwb3NlZCA9IGZhbHNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogYm9vbGVhbjtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVRyYW5zZm9ybUNvbnRleHQge1xuICByZWFkb25seSBoYXNJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWFkb25seSB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5oYXNJbnNlcnRhYmxlU3RyZWFtcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KG9wdGlvbnMuaGFzSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpO1xuICAgIHRoaXMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPSBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s7XG4gICAgdGhpcy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9IG9wdGlvbnMuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkNvbnRleHQge1xuICB0b2tlbjogU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgdG9rZW5FeHBpcmluZzogU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPih0b2tlbik7XG4gICAgdGhpcy50b2tlbkV4cGlyaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlTW9kZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVNb2RlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUpOiBCaXRyYXRlTW9kZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZU1vZGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuTm9ybWFsOlxuICAgICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLkZvcmNlOlxuICAgICAgICByZXR1cm4gJ0ZvcmNlJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZU1vZGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZSc7XG5cbmNvbnN0IGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwgPSA2MDAwMDtcblxuaW50ZXJmYWNlIElQZXJVUklFbmRwb2ludCB7IFt4OiBzdHJpbmddOiBQcm9taXNlPEVuZFBvaW50PiB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZTogSVBlclVSSUVuZHBvaW50ID0ge307XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmkgPSBuZXcgVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmk6IFVSTCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0pIHtcbiAgICAgIHJldHVybiBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY292ZXJ5U2VydmljZSA9IG5ldyBEaXNjb3ZlcnlTZXJ2aWNlKHVyaSk7XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPSBkaXNjb3ZlcnlTZXJ2aWNlLmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KCk7XG4gICAgY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9PT0gY2FjaGVkVmFsdWUpIHtcbiAgICAgICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgICAgICB9XG4gICAgICB9LCBkaXNjb3ZlcnlDYWNoZUludGVydmFsKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlZFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaTogVVJMKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcblxuY29uc3QgZGVmYXVsdFRpbWVvdXQgPSAyMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5U2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEaXNjb3ZlcnknKTtcbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF91cmk6IFVSTDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IFVSTCkge1xuICAgIGlmICghdXJpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB1cmknKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKHVyaS50b1N0cmluZygpKTtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gIH1cblxuICBhc3luYyBkaXNjb3Zlck5lYXJieUVuZFBvaW50cyh1cmk6IFVSTCwgdGltZW91dDogbnVtYmVyKTogUHJvbWlzZTxFbmRQb2ludFtdPiB7XG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB0aW1lb3V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpc2NvdmVyeSB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRpbWVvdXQpXG4gICAgICApXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IFVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVVyaSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kaXNjb3ZlcnlVcmk6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oZGVmYXVsdERpc2NvdmVyeVVyaSk7XG5cbiAgc3RhdGljIGdldCB1cmkoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gRGlzY292ZXJ5VXJpLl9kaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGREaXNjb3ZlcnlVcmwodXJpOiBVUkwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodXJpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICBpZiAodXJsLnBhdGhuYW1lID09PSAnLycpIHtcbiAgICAgIHVybC5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5VXJpIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQge1xuICBJU3Vic2NyaWJlUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFJlc3BvbnNlLFxuICBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QsXG4gIElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCxcbiAgUHVibGlzaFN0YXR1c1xufSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmNvbnN0IGFwaVZlcnNpb24gPSA3O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVTdGF0dXMgPSAnb2snIHwgJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBSZW1vdmVUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIERlc3Ryb3lTdHJlYW1TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IGludGVyZmFjZSBJU3RyZWFtIHtcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXM7XG4gIHN0cmVhbT86IElTdHJlYW07XG4gIGxhZz86IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBJUHVibGlzaFJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiBQdWJsaXNoU3RhdHVzO1xuICBzdHJlYW0/OiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfcm91bmRUcmlwVGltZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dCA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGhpcy5fdGltZW91dClcbiAgICAgIClcbiAgICBdKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7IC8qIEhhbmRsZSAqL1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIHRoaXMuX3JvdW5kVHJpcFRpbWUgPSBmaW5pc2hlZCAtIHN0YXJ0O1xuXG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUodG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0LCBmYWlsdXJlQ291bnQ6IG51bWJlcik6IFByb21pc2U8SVN1YnNjcmliZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAnc3Vic2NyaWJlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRoT2ZmZXI6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRoT2ZmZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYm9keVdpdGhvdXRPZmZlcjogSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhvdXRPZmZlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYFN1YnNjcmliZSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHN1YnNjcmliZSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBwdWJsaXNoKG5hbWU6IHN0cmluZywgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0LCBmYWlsdXJlQ291bnQ6IG51bWJlcik6IFByb21pc2U8SVB1Ymxpc2hSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBuZXcgRXJyb3IoYFB1Ymxpc2ggdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KVxuICAgICAgICApXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHB1Ymxpc2gnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW06IElTdHJlYW0sIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXNjcmlwdGlvbicsICdyZW1vdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IHNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgbmV3IEVycm9yKGBTZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbGltaXRCaXRyYXRlKFxuICAgIHN0cmVhbTogSVN0cmVhbSxcbiAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcixcbiAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBCaXRzUGVyU2Vjb25kLFxuICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlLFxuICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSxcbiAgKTogUHJvbWlzZTxJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2JpdHJhdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlKSxcbiAgICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZU1hcHBpbmcuY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGUpXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBuZXcgRXJyb3IoYFNldCBsaW1pdCBiaXRyYXRlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgbmV3IEVycm9yKGBBZGQgaWNlIGNhbmRpZGF0ZXMgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KVxuICAgICAgICApXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGFkZCBpY2UgY2FuZGlkYXRlcycsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBhZGQgSUNFIGNhbmRpZGF0ZXMgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtKHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBuZXcgRXJyb3IoYERlbGV0ZSBzdHJlYW0gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KVxuICAgICAgICApXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvcj8uc2VuZEJlYWNvbikge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogRGVzdHJveVN0cmVhbVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTdWJzY3JpYmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTdWJzY3JpYmVSZXNwb25zZTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIHN1YnNjcmliZVJlc3BvbnNlLnN0cmVhbSA9IHtcbiAgICAgIHRlbmFuY3ksXG4gICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICB9O1xuXG4gICAgc3Vic2NyaWJlUmVzcG9uc2UubGFnID0gZGF0YS5sYWc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgICBzdWJzY3JpYmVSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oZGF0YS5ydGNDb25maWd1cmF0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJUHVibGlzaFJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVB1Ymxpc2hSZXNwb25zZTtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgcHVibGlzaFJlc3BvbnNlLnN0cmVhbSA9IHtcbiAgICAgIHRlbmFuY3ksXG4gICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5vcHRpb25zKSB7XG4gICAgICAgIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZS5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJRGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCB7SVN0cmVhbX0gZnJvbSAnLi9JU3RyZWFtJztcbmltcG9ydCB7U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uLy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgUnRjQ29ubmVjdGlvbk1vbml0b3IgZnJvbSAnLi4vLi4vcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IENoYW5uZWxDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvQ2hhbm5lbENvbnRleHQnO1xuaW1wb3J0IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlcic7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgSW5zZXJ0YWJsZVN0cmVhbXMgZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMnO1xuaW1wb3J0IFNkcFBhcnNlciBmcm9tICcuLi8uLi9ydGMvU2RwUGFyc2VyJztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0ID0gMzAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtIGltcGxlbWVudHMgSVN0cmVhbSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSZWFsVGltZVN0cmVhbScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsQ29udGV4dDogQ2hhbm5lbENvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG5cbiAgY29uc3RydWN0b3IoY2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gY2hhbm5lbENvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHRoaXMpO1xuICB9XG5cbiAgc3RhcnQodXJpLCB0b2tlbiwgbGlzdGVuT25TdHJlYW1TZXR1cCwgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSB0eXBlb2YgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbic7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKSxcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCdyZWN2b25seScsIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcylcbiAgICAgICAgLnRoZW4oKHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn0pID0+IHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbE9mZmVyLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIF0pXG4gICAgICAudGhlbigoW2VuZFBvaW50LCB7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259XSkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbikge1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gICAgICAgICAgbG9jYWxPZmZlciA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCh7c3RhdHVzLCBzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSwgbGFnfSkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZy52YWx1ZSA9IGxhZztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoXG4gICAgICAgICAgJ1slc10gU3Vic2NyaWJlIGNvbXBsZXRlZCBbJXNdIFslal0gWyVqXSBbJWpdIFslal0nLFxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UnRjQ29uZmlndXJhdGlvbih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUsIHJ0Y0NvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgLnRoZW4ocGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICAgICAgbGV0IHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0O1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW0sIGNhbmRpZGF0ZXMsIGRpc2NvdmVyeUNvbXBsZXRlZClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHtzdGF0dXMsIG9wdGlvbnN9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5pbmNsdWRlcygnY2FuY2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbERpc2NvdmVyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gQWRkZWQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXSBhbmQgb3B0aW9ucyBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIHN0b3Agbm9ybWFsbHkgdGhlIHBlZXIgY29ubmVjdGlvbiBpcyB1bnJlZ2lzdGVyZWQgZmlyc3QuXG4gICAgICAgICAgICAgICAgLy8gVGh1cyBhbnl0aW1lIHdlIHNlZSBhIGNsb3NlZCBwZWVyIGNvbm5lY3Rpb24gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaXQgaXMgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICBpZiAobmF2aWdhdG9yLm9uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbVByb21pc2UgPSBuZXcgUHJvbWlzZTxNZWRpYVN0cmVhbT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50Lm9uVHJhY2tEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCB0cmFja0xpc3RlbmVyID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcblxuICAgICAgICAgICAgICAgIGlmIChlLnN0cmVhbXMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignU3RyZWFtIHNldHVwIHRpbWVkIG91dCcpKTtcbiAgICAgICAgICAgICAgfSwgZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCk7XG5cbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdHJhY2tMaXN0ZW5lcik7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oYW5zd2VyID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgYW5zd2VyIFslal0nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgYW5zd2VyKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLnNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbSwgYW5zd2VyKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCh7c3RhdHVzLCBzZXNzaW9uRGVzY3JpcHRpb259KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICByZXR1cm4gbWVkaWFTdHJlYW1Qcm9taXNlO1xuICAgICAgICAgICAgfSkudGhlbihtZWRpYVN0cmVhbSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcihwZWVyQ29ubmVjdGlvbi5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7ZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuYXBwbHlFbmNvZGVkU3RyZWFtVHJhbnNmb3JtYXRpb24obWVkaWFTdHJlYW0sIHBlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmssIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaywgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24udmlkZW9Db2RlYywgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoZGlzcG9zYWJsZXMpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7dHJhbnNmb3JtZWRTdHJlYW0sIGRpc3Bvc2FibGVzfSA9IEluc2VydGFibGVTdHJlYW1zLmFwcGx5SW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKG1lZGlhU3RyZWFtLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoZGlzcG9zYWJsZXMpO1xuICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gdHJhbnNmb3JtZWRTdHJlYW07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNDb25uZWN0aW9uTW9uaXRvciA9IG5ldyBSdGNDb25uZWN0aW9uTW9uaXRvcihwZWVyQ29ubmVjdGlvbiwgbWVkaWFTdHJlYW0sIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0KTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uID0gcnRjQ29ubmVjdGlvbk1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgJiYgIXRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgYXVkaW9UcmFja0ZhaWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCB2aWRlb1RyYWNrRmFpbGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy5hdWRpbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy5hdWRpby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW9UcmFja0ZhaWxlZCAmJiBuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBBdWRpbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLmF1ZGlvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MudmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXAgIT09IHN0YXRpc3RpY3MudmlkZW8udGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVHJhY2tGYWlsZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkID09PSBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvVHJhY2tGYWlsZWQgJiYgbmF2aWdhdG9yLm9uTGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gVmlkZW8gdHJhY2sgZmFpbGVkIHdpdGggbGFzdCBieXRlc1JlY2VpdmVkIFslc10gaXMgZXF1YWwgdG8gcHJldmlvdXMgYnl0ZXNSZWNlaXZlZCBbJXNdIHdpdGhpbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy52aWRlby5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEdXJhdGlvbnMoc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXAgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXApLnRvSXNvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMgPSBzdGF0aXN0aWNzLnZpZGVvO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICgodmlkZW9UcmFja0ZhaWxlZCB8fCBhdWRpb1RyYWNrRmFpbGVkKSAmJiBuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICBydGNDb25uZWN0aW9uTW9uaXRvci5kaXNwb3NlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHRyYWNrIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG5cbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA/IENoYW5uZWxTdGF0ZS5QbGF5aW5nIDogQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIHN0YXRlIHJlc3RvcmVkIHRvIFslc10gYWZ0ZXIgcmVjb25uZWN0aW5nJywgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICAgIGlmICghU0RLLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogQ2hhbm5lbFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7SVN0cmVhbX0gZnJvbSAnLi9JU3RyZWFtJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQgUmVhbFRpbWVTdHJlYW0gZnJvbSAnLi9SZWFsVGltZVN0cmVhbSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IENoYW5uZWxTdGF0ZSBmcm9tICcuLi9jaGFubmVscy9DaGFubmVsU3RhdGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFsVGltZVN0cmVhbUZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbWluZycpO1xuXG4gIHN0YXRpYyBjcmVhdGUodG9rZW46IHN0cmluZywgY2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPik6IElTdHJlYW0ge1xuICAgIGNvbnN0IHRva2VuQ2FwYWJpbGl0aWVzID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikuY2FwYWJpbGl0aWVzO1xuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdvbi1kZW1hbmQnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgT24tRGVtYW5kIFN0cmVhbSBwbGF5YmFjay4nKTtcbiAgICAgIGNoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnc3RyZWFtaW5nJykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IExpdmUgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZWFsVGltZVN0cmVhbShjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVhbFRpbWVTdHJlYW1GYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRW5jb2RlZFN0cmVhbVNpbms8VCA9IFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+IHtcbiAgICAodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2ssIGNodW5rOiBUKTogYm9vbGVhbiB8IFByb21pc2VMaWtlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmNvZGVkU3RyZWFtU2luayB7XG4gIHN0YXRpYyB2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJRW5jb2RlZFN0cmVhbVNpbmspIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMi4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWRTdHJlYW1TaW5rIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZFN0cmVhbVNpbmsnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5cbnR5cGUgTWVkaWFTdHJlYW1UcmFja0tpbmQgPSAndmlkZW8nIHwgJ2F1ZGlvJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBzdGF0aWMgYXBwbHlFbmNvZGVkU3RyZWFtVHJhbnNmb3JtYXRpb24oc3RyZWFtOiBNZWRpYVN0cmVhbSwgcmVjZWl2ZXJzOiBSVENSdHBSZWNlaXZlcltdLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCB2aWRlb0NvZGVjOiBzdHJpbmcsIGF1ZGlvQ29kZWM6IHN0cmluZyk6IHtkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3R9IHtcbiAgICBjb25zdCBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcblxuICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGNvbnN0IHJlY2VpdmVyID0gcmVjZWl2ZXJzLmZpbHRlcihyZWNlaXZlID0+IHJlY2VpdmUudHJhY2sgPT09IHRyYWNrKVswXTtcbiAgICAgIGNvbnN0IGtpbmQ6IE1lZGlhU3RyZWFtVHJhY2tLaW5kID0gdHJhY2sua2luZCBhcyBNZWRpYVN0cmVhbVRyYWNrS2luZDtcblxuICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIGNhc2UgJ3ZpZGVvJzoge1xuICAgICAgICAgIGlmIChlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKSB7XG4gICAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL1dvcmtlclRyYW5zZm9ybVN0cmVhbS50cycsIGltcG9ydC5tZXRhLnVybCksIHt0eXBlOiAnbW9kdWxlJ30pO1xuXG4gICAgICAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLCBldmVudC5kYXRhLmNodW5rKSkge1xuICAgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtmb3JjZUludmFsaWRGcmFtZTogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge1xuICAgICAgICAgICAgICAgIGtpbmQ6IHRyYWNrLmtpbmQsXG4gICAgICAgICAgICAgICAgY29kZWM6IHZpZGVvQ29kZWNcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWRTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxSVENFbmNvZGVkVmlkZW9GcmFtZSwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+ID0gYXN5bmMoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLCBjaHVuaykpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3Vycm9nYXRlOiBTdXJyb2dhdGVGcmFtZVR5cGU7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHZpZGVvQ29kZWMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSh2aWRlb0NvZGVjKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3Vycm9nYXRlID09PSBTa2lwRnJhbWUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjaHVuay5kYXRhID0gc3Vycm9nYXRlIHx8IGNodW5rLmRhdGE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgICAgICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKHZpZGVvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWModmlkZW9Db2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGVuY29kZWRTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJTdHJlYW1zID0gcmVjZWl2ZXIuY3JlYXRlRW5jb2RlZFN0cmVhbXMoKTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSByZWNlaXZlclN0cmVhbXMud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgIC5waXBlVG8oc2luayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdhdWRpbyc6IHtcbiAgICAgICAgICBpZiAoZW5jb2RlZEF1ZGlvU3RyZWFtU2luaykge1xuICAgICAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi9Xb3JrZXJUcmFuc2Zvcm1TdHJlYW0udHMnLCBpbXBvcnQubWV0YS51cmwpLCB7dHlwZTogJ21vZHVsZSd9KTtcblxuICAgICAgICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gYXN5bmMgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghYXdhaXQgZW5jb2RlZEF1ZGlvU3RyZWFtU2luayh0cmFjaywgZXZlbnQuZGF0YS5jaHVuaykpIHtcbiAgICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7Zm9yY2VJbnZhbGlkRnJhbWU6IHRydWV9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsIHtcbiAgICAgICAgICAgICAgICBraW5kOiB0cmFjay5raW5kLFxuICAgICAgICAgICAgICAgIGNvZGVjOiBhdWRpb0NvZGVjXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGF1ZGlvUHVtcGVyID0gbmV3IEF1ZGlvKCk7XG5cbiAgICAgICAgICAgICAgYXVkaW9QdW1wZXIuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYXVkaW9QdW1wZXIpO1xuXG4gICAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWRTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxSVENFbmNvZGVkQXVkaW9GcmFtZSwgUlRDRW5jb2RlZEF1ZGlvRnJhbWU+ID0gYXN5bmMoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLCBjaHVuaykpIHtcbiAgICAgICAgICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhhdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBlbmNvZGVkU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVyU3RyZWFtcyA9IHJlY2VpdmVyLmNyZWF0ZUVuY29kZWRTdHJlYW1zKCk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSByZWNlaXZlclN0cmVhbXMucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gcmVjZWl2ZXJTdHJlYW1zLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKVxuICAgICAgICAgICAgICAucGlwZVRvKHNpbmspO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShraW5kKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7ZGlzcG9zYWJsZXN9O1xuICB9XG5cbiAgc3RhdGljIGFwcGx5SW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uKHN0cmVhbTogTWVkaWFTdHJlYW0sIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiwgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4pOiB7dHJhbnNmb3JtZWRTdHJlYW06IE1lZGlhU3RyZWFtOyBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3R9IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuXG4gICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgY29uc3Qga2luZDogTWVkaWFTdHJlYW1UcmFja0tpbmQgPSB0cmFjay5raW5kIGFzIE1lZGlhU3RyZWFtVHJhY2tLaW5kO1xuXG4gICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSAndmlkZW8nOiB7XG4gICAgICAgICAgaWYgKHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxWaWRlb0ZyYW1lLCBWaWRlb0ZyYW1lPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1WaWRlb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiB2aWRlb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogdmlkZW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKVxuICAgICAgICAgICAgICAucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0ucmVtb3ZlVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnYXVkaW8nOiB7XG4gICAgICAgICAgaWYgKGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxBdWRpb0RhdGEsIEF1ZGlvRGF0YT4gPSAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgICAgICAgICAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayh0cmFjaywgY2h1bmssIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRyYWNrIGFzIE1lZGlhU3RyZWFtQXVkaW9UcmFjaztcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7dHJhbnNmb3JtOiBpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yKHt0cmFjazogYXVkaW9UcmFja30pO1xuICAgICAgICAgICAgY29uc3QgZ2VuZXJhdG9yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3Ioe2tpbmQ6IGF1ZGlvVHJhY2sua2luZH0pO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcHJvY2Vzc29yLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IGdlbmVyYXRvci53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlXG4gICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcilcbiAgICAgICAgICAgICAgLnBpcGVUbyhzaW5rKTtcblxuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2soZ2VuZXJhdG9yKTtcblxuICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICAgICAgICAgIGNvbnN0IGF1ZGlvUHVtcGVyID0gbmV3IEF1ZGlvKCk7XG5cbiAgICAgICAgICAgIG1lZGlhU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICAgIGF1ZGlvUHVtcGVyLnNyY09iamVjdCA9IG1lZGlhU3RyZWFtO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShraW5kKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB0cmFuc2Zvcm1lZFN0cmVhbSxcbiAgICAgIGRpc3Bvc2FibGVzXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5zZXJ0YWJsZVN0cmVhbXMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUID0gQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0obW9kZTogJ2F1ZGlvJyB8ICd2aWRlbycsIGl0ZW06IElTdHJlYW1UcmFja1RyYW5zZm9ybSkge1xuICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gdHlwZS4gRm91bmQgWyR7dHlwZW9mIGl0ZW19XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoICE9PSAzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBmdW5jdGlvbiBwYXJhbWV0ZXIgbGVuZ3RoLiBFeHBlY3RlZCAzLiBGb3VuZCBbJHtpdGVtLmxlbmd0aH1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiAnb2snXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uLy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuXG5leHBvcnQgY29uc3QgU2tpcEZyYW1lID0gU3ltYm9sKCk7XG5cbmV4cG9ydCB0eXBlIFN1cnJvZ2F0ZUZyYW1lVHlwZSA9IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHwgdHlwZW9mIFNraXBGcmFtZTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc1NhZmFyaSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZUNocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzTW9iaWxlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWRDaHJvbWUgPSBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5pc0FuZHJvaWQ7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zaW5nbGVaZXJvQnl0ZSA9IG5ldyBVaW50OEFycmF5KFsweDAwXSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kdW1teUF1ZGlvU2lsZW50UGVyQ29kZWMgPSB7T1BVUzogbmV3IFVpbnQ4QXJyYXkoWzB4NjgsIDB4MDcsIDB4ZDksIDB4YWIsIDB4YmMsIDB4NzksIDB4ODcsIDB4YWIsIDB4OGUsIDB4NGEsIDB4MTQsIDB4ZjMsIDB4YTcsIDB4MWMsIDB4ZjIsIDB4OWEsIDB4N2EsIDB4NDUsIDB4YTcsIDB4MmQsIDB4NDQsIDB4MjUsIDB4NzQsIDB4NGMsIDB4YWQsIDB4MTYsIDB4YjMsIDB4MGUsIDB4NTEsIDB4NTcsIDB4ZWEsIDB4ZTcsIDB4YWQsIDB4MmEsIDB4MzgsIDB4Y2UsIDB4MzNdKX07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMgPSB7XG4gICAgSDI2NDogbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDY3LCAweGY0LCAweDAwLCAweDBhLCAweDkxLCAweDliLCAweDJiLCAweGYxLCAweGYxLCAweGY4LCAweDA4LCAweDgwLCAweDAwLCAweDAwLCAweDAzLCAweDAwLCAweDgwLCAweDAwLCAweDAwLCAweDE5LCAweDA3LCAweDg5LCAweDEyLCAweGNiLCAvLyBTZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDY4LCAweGViLCAweGUzLCAweGM0LCAweDQ4LCAweDQ0LCAvLyBQaWN0dXJlIHBhcmFtdGVyIHNldFxuICAgICAgLyogKi8gMHgwMCwgMHgwMCwgMHgwMSwgMHg2NSwgMHg4OCwgMHg4MiwgMHgwMCwgMHgzZiwgMHg3MCwgMHgyMywgMHg4NiwgMHhlNiwgMHhkMSwgMHg4MCwgMHgwOSwgMHhhZiwgMHgwYSwgMHg0MSwgMHg2NiwgMHg2YiwgMHg1NCwgMHg0NiwgMHhmYiwgMHg3MSwgMHhkOSwgMHg3ZiwgMHhmZiwgMHhmZiwgMHhmOV0pLCAvLyBTbGljZSBsYXllcjogaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweGIwLCAweDAyLCAweDAwLCAweDlkLCAweDAxLCAweDJhLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDM5LCAweDZiLCAweDAwLCAweDI3LCAweDFjLCAweDI0LCAweDBjLCAweDJjLCAweDJjLCAweDQ0LCAweGNjLCAweDI0LCAweDQxLCAweGE4LCAweDAwLCAweDEzLCAweGE3LCAweGEzLCAweDdhLCAweDUwLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4MiwgMHg0OSwgMHg4MywgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNiwgMHg3NiwgMHgzOCwgMHgyNCwgMHgxYywgMHgxOSwgMHhhMCwgMHgwMCwgMHgwMCwgMHgyMCwgMHg0MCwgMHgwMCwgMHgxMSwgMHhiZiwgMHhkZCwgMHg3NywgMHhmZiwgMHg0MCwgMHg3ZiwgMHhiMSwgMHgwMF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMgPSB7XG4gICAgSDI2NDogbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQxLCAweDlhLCAweDY4LCAweDQ5LCAweGE4LCAweDQxLCAweDY4LCAweDk5LCAweDRjLCAweDBmLCAweGZmLCAweDkyLCAweDgxXSksIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgICBWUDg6IG5ldyBVaW50OEFycmF5KFsweDMxLCAweDAzLCAweDAwLCAweGU0LCAweGUwLCAweGE4LCAweDliLCAweDM3LCAweGFmLCAweDEwLCAweDRmLCAweDRmLCAweGIxLCAweDBhLCAweDJmLCAweGU0LCAweDkyLCAweGMwLCAweDFmLCAweGU3LCAweDRmLCAweDQ2LCAweGZmLCAweGVlLCAweDUxLCAweGMxLCAweDVkLCAweDAwLCAweGZlLCAweGViLCAweGRlLCAweDJmLCAweDhhLCAweDFlLCAweDZiLCAweDdiLCAweDA3LCAweDcyLCAweDYzLCAweDA5LCAweGE0LCAweDhlLCAweGMwXSksXG4gICAgVlA5OiBuZXcgVWludDhBcnJheShbMHg4NiwgMHgwMCwgMHg0MCwgMHg5MiwgMHg5YywgMHgyNCwgMHg0OCwgMHgwMCwgMHgwMCwgMHgwMywgMHg3MCwgMHgwMCwgMHgwMCwgMHg0YiwgMHg0MF0pXG4gIH07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kdW1teTgyeDgySDI2NCA9IHtcbiAgICBJRnJhbWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjcsIDB4NDIsIDB4YzAsIDB4MGQsIDB4ZGEsIDB4MTgsIDB4ZGUsIDB4MjIsIDB4MjIsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDMsIDB4YzgsIDB4ZjEsIDB4NDIsIDB4YWEsIC8vIFNlcXVlbmNlIHBhcmFtZXRlciBzZXRcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjgsIDB4Y2UsIDB4MGYsIDB4YzgsIC8vIFBpY3R1cmUgcGFyYW1ldGVyIHNldFxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwNiwgMHgwMywgLi4ubmV3IFVpbnQ4QXJyYXkoNDApLmZpbGwoMHhmZiksIDB4NWYsIC4uLm5ldyBVaW50OEFycmF5KDEwMjk1KS5maWxsKDB4ZmYpLCAweDgwLCAvLyBTdXBwbGVtZW50YWwgZW5oYW5jZW1lbnQgaW5mb3JtYXRpb24gKFNFSSlcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjUsIDB4ODgsIDB4ODQsIDB4MDUsIC4uLm5ldyBVaW50OEFycmF5KDMpLmZpbGwoMHhmZiksIDB4MGYsIDB4NDUsIDB4MDAsIDB4MDEsIDB4NTcsIDB4OWYsIDB4MjcsIDB4MjcsIDB4MjcsIDB4MjcsIDB4MjcsIDB4NWQsIDB4NzUsIDB4ZDcsIDB4NWQsIDB4NzUsIDB4ZDcsIDB4NWQsIDB4NzUsIDB4ZDcsIDB4NWQsIDB4NzUsIDB4ZDcsIDB4NWQsIDB4NzUsIDB4ZDcsIDB4NWQsIDB4NzUsIDB4ZDcsIDB4NWQsIDB4NzUsIDB4ZDcsIDB4NWQsIDB4NzhdKSwgLy8gU2xpY2UgbGF5ZXI6IElkciBkYXRhXG4gICAgUEZyYW1lOiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA2LCAweDAzLCAuLi5uZXcgVWludDhBcnJheSg0MCkuZmlsbCgweGZmKSwgMHhhNCwgLi4ubmV3IFVpbnQ4QXJyYXkoMTAzNjQpLmZpbGwoMHhmZiksIDB4ODAsIC8vIFNFSVxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg0MSwgMHg5YSwgMHgyMCwgMHgxNSwgMHhmMCwgMHg0Yl0pIC8vIFNsaWNlIGxheWVyOiBub24gaWRyIGRhdGFcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleCA9IDEwNDE4O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlclJlc2V0ID0gMTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc01vYmlsZUNocm9tZSB8fCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc1NhZmFyaTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMoY29kZWM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ09QVVMnOiB7XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teUF1ZGlvU2lsZW50UGVyQ29kZWMuT1BVUy5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSgpOiBBcnJheUJ1ZmZlciB7XG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjKGNvZGVjOiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChjb2RlYy50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdIMjY0Jzoge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcikge1xuICAgICAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXk4Mng4MkgyNjQuSUZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ1ZQOCc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDguYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdWUDknOiB7XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA5LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUoY29kZWM6IHN0cmluZyk6IFN1cnJvZ2F0ZUZyYW1lVHlwZSB7XG4gICAgaWYgKChjb2RlYy50b1VwcGVyQ2FzZSgpID09PSAnSDI2NCcpICYmIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIpIHtcbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9pc0FuZHJvaWRDaHJvbWUpIHtcbiAgICAgICAgcmV0dXJuIFNraXBGcmFtZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMoY29kZWM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGU4Mng4MlBGcmFtZUFuZFVwZGF0ZUZyYW1lTnVtYmVyKCk7XG5cbiAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA4Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ1ZQOSc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZShjb2RlYzogc3RyaW5nKTogU3Vycm9nYXRlRnJhbWVUeXBlIHtcbiAgICBpZiAoKGNvZGVjLnRvVXBwZXJDYXNlKCkgPT09ICdIMjY0JykgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcikge1xuICAgICAgY29uc3Qgc2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXI7XG4gICAgICBjb25zdCBidWZmZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIoKTtcblxuICAgICAgaWYgKHNhdmVkU3Vycm9nYXRlRnJhbWVOdW1iZXIgPiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQpIHtcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzQW5kcm9pZENocm9tZSkge1xuICAgICAgICAgIHJldHVybiBTa2lwRnJhbWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKys7XG5cbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3NpbmdsZVplcm9CeXRlLmJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIoKTogQXJyYXlCdWZmZXIge1xuICAgIGNvbnN0IGJpdE1hc2sxID0gMHgwZTtcbiAgICBjb25zdCBiaXRNYXNrMiA9IDB4MDE7XG4gICAgY29uc3QgYml0U2hpZnRSaWdodEJ5MSA9IDE7XG4gICAgY29uc3QgYml0U2hpZnRMZWZ0Qnk3ID0gNztcbiAgICBjb25zdCBieXRlMSA9ICgoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciAmIGJpdE1hc2sxKSA+PiBiaXRTaGlmdFJpZ2h0QnkxKTtcbiAgICBjb25zdCBieXRlMiA9ICgoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciAmIGJpdE1hc2syKSA8PCBiaXRTaGlmdExlZnRCeTcpO1xuICAgIGNvbnN0IGNvcHlPZkR1bW15UEZyYW1lcyA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15ODJ4ODJIMjY0LlBGcmFtZS5zbGljZSgpO1xuICAgIGNvbnN0IGJ1ZmZlciA9IGNvcHlPZkR1bW15UEZyYW1lcy5idWZmZXI7XG4gICAgY29uc3QgYnVmZmVySW5kZXggPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTgyeDgySDI2NFBGcmFtZUZyYW1lTnVtYmVySW5kZXg7XG5cbiAgICBidWZmZXJbYnVmZmVySW5kZXhdIHw9IGJ5dGUxO1xuICAgIGJ1ZmZlcltidWZmZXJJbmRleCArIDFdIHw9IGJ5dGUyO1xuICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIrKztcblxuICAgIHJldHVybiBidWZmZXI7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgVGVsZW1ldHJ5U2VydmljZSBmcm9tICcuL1RlbGVtZXRyeVNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuLi9sb2dnZXIvSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5QXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeTtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZDtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZDtcbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlID0gbmV3IFRlbGVtZXRyeVNlcnZpY2UodGVsZW1ldHJ5Q29uZmlndXJhdGlvbik7XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZS5wdXNoKGxvZ0xldmVsLCBtZXNzYWdlLCBjYXRlZ29yeSwgZGF0ZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L2xvZ3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nO1xuICBwcml2YXRlIF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuO1xuICBwcml2YXRlIF9kb21haW4gPSBsb2NhdGlvbi5ob3N0bmFtZTtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgdGltZXN0YW1wOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVudGltZSA9ICh0aW1lc3RhbXAudmFsdWVPZigpIC0gdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcC50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFtsb2dMZXZlbF0sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIHJ1bnRpbWVcbiAgICB9O1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dzLnB1c2gobG9nUmVjb3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9ncy51bnNoaWZ0KGxvZ1JlY29yZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3MobG9nTWVzc2FnZXM6IEFycmF5PElMb2dJdGVtPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbG9nTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgZmV0Y2godGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9ncy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSBpdGVtID0+IHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJyA/IE51bWJlcnMuY291bnROdW1iZXJMZW5ndGgoaXRlbSkgOiBpdGVtLmxlbmd0aDtcbiAgICBjb25zdCBnZXRMb2dTaXplID0gKGxvZzogSUxvZ0l0ZW0pOiBudW1iZXIgPT4gT2JqZWN0LnZhbHVlcyhsb2cpXG4gICAgICAucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIChpdGVtID8gZ2V0SXRlbVNpemUoaXRlbSkgOiAwKSwgMCk7XG5cbiAgICB3aGlsZSAodGhpcy5fbG9ncy5sZW5ndGggPiBudW1iZXJPZkxvZ3NUb1NlbmQgJiYgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgc2l6ZU9mTG9nc1RvU2VuZCA8IHJlcXVlc3RTaXplTGltaXQpIHtcbiAgICAgIHNpemVPZkxvZ3NUb1NlbmQgKz0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kKys7XG4gICAgfVxuXG4gICAgaWYgKCFudW1iZXJPZkxvZ3NUb1NlbmQpIHtcbiAgICAgIHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlID0gdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsXG4gICAgICAgIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIChyZXF1ZXN0U2l6ZUxpbWl0IC0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pKSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ01lc3NhZ2VzID0gdGhpcy5fbG9ncy5zbGljZSgwLCBudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgdGhpcy5fbG9ncyA9IHRoaXMuX2xvZ3Muc2xpY2UobnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRMb2dzKGxvZ01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHVyYXRpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkdXJhdGlvbiA9IDApIHtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICB9XG5cbiAgdG9Jc29TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiAnUDBTJztcbiAgICB9XG5cbiAgICBjb25zdCBpc05lZ2F0aXZlID0gdGhpcy5fZHVyYXRpb24gPCAwO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gaXNOZWdhdGl2ZSA/IE1hdGguYWJzKHRoaXMuX2R1cmF0aW9uKSA6IHRoaXMuX2R1cmF0aW9uO1xuICAgIGxldCBvZmZzZXQgPSBNYXRoLmZsb29yKGR1cmF0aW9uKTtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBvZmZzZXQgJSAxMDAwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyAxMDAwKTtcblxuICAgIGNvbnN0IHNlY29uZHMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgbWludXRlcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBob3VycyA9IG9mZnNldCAlIDI0O1xuICAgIGNvbnN0IHBhcnRzID0gWydQVCddO1xuXG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy0nKTtcbiAgICB9XG5cbiAgICBpZiAoaG91cnMpIHtcbiAgICAgIHBhcnRzLnB1c2goaG91cnMgKyAnSCcpO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKG1pbnV0ZXMgKyAnTScpO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmRzIHx8IG1pbGxpc2Vjb25kcykge1xuICAgICAgcGFydHMucHVzaChTdHJpbmcoc2Vjb25kcykpO1xuXG4gICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIHBhcnRzLnB1c2goJy4nICsgdGhpcy5wYWRTdGFydChtaWxsaXNlY29uZHMudG9TdHJpbmcoKSwgMywgJzAnKSk7XG4gICAgICB9XG5cbiAgICAgIHBhcnRzLnB1c2goJ1MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH1cblxuICBwYWRTdGFydChpdGVtOiBzdHJpbmcsIHRhcmdldExlbmd0aDogbnVtYmVyLCBwYWRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoID4+IDA7XG4gICAgcGFkU3RyaW5nID0gU3RyaW5nKCh0eXBlb2YgcGFkU3RyaW5nICE9PSAndW5kZWZpbmVkJyA/IHBhZFN0cmluZyA6ICcgJykpO1xuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gdGFyZ2V0TGVuZ3RoKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggLSBpdGVtLmxlbmd0aDtcblxuICAgIGlmICh0YXJnZXRMZW5ndGggPiBwYWRTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBwYWRTdHJpbmcgKz0gcGFkU3RyaW5nLnJlcGVhdCh0YXJnZXRMZW5ndGggLyBwYWRTdHJpbmcubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFkU3RyaW5nLnNsaWNlKDAsIHRhcmdldExlbmd0aCkgKyBpdGVtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMjAwMDtcbmNvbnN0IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMTtcbmNvbnN0IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMzAwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvbmVudGlhbEJhY2tvZmYge1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kXG4gICkge1xuICAgIHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICB9XG5cbiAgZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudChmYWlsdXJlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYmFja29mZkludGVydmFsSW5TZWNvbmRzID0gdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCAvIDEwMDA7XG4gICAgY29uc3QgcmFuZG9taXphdGlvbiA9IDAuNSArICgwLjUgKiBNYXRoLnJhbmRvbSgpKTsgLy8gWzAuNSwgMSlcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmYgPSBNYXRoLnBvdyhiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMsIGZhaWx1cmVDb3VudCAtIDIpOyAvLyAgWzEvNCAxLzIgMSAyIDQgOCAuLi4uXVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uID0gTWF0aC5mbG9vcihleHBvbmVudGlhbEJhY2tvZmYpICogcmFuZG9taXphdGlvbjtcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQgPSBNYXRoLmNlaWwoTWF0aC5tYXgoZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gKiAxMDAwLCB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKSk7XG5cbiAgICByZXR1cm4gTWF0aC5taW4oZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kLCB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaW1lbnNpb24gaW1wbGVtZW50cyBJQ29tcGFyYWJsZTxEaW1lbnNpb24+IHtcbiAgcmVhZG9ubHkgd2lkdGg6IG51bWJlcjtcbiAgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXI7XG5cbiAgc3RhdGljIGdldCBlbXB0eSgpOiBEaW1lbnNpb24ge1xuICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDAsIDApO1xuICB9XG5cbiAgY29uc3RydWN0b3Iod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBlcXVhbHMob3RoZXI6IERpbWVuc2lvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciAmJiB0aGlzLndpZHRoID09PSBvdGhlci53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aH14JHt0aGlzLmhlaWdodH1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTmV0d29ya01vbml0b3IgZnJvbSAnLi4vZG9tL05ldHdvcmtNb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSU5ldHdvcmtTdGF0aXN0aWNzIHtcbiAgcnR0PzogbnVtYmVyO1xuICBlZmZlY3RpdmVUeXBlPzogc3RyaW5nO1xuICBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvblRlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1Nlc3Npb25UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29ya01vbml0b3I6IE5ldHdvcmtNb25pdG9yID0gbmV3IE5ldHdvcmtNb25pdG9yKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfbGFzdE5ldHdvcmtTdGF0aXN0aWNzOiBJTmV0d29ya1N0YXRpc3RpY3MgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvcik7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcblxuICAgIGlmICghdGhpcy5fbmV0d29ya01vbml0b3IuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZCk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5ydHQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1JUVFVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5lZmZlY3RpdmVUeXBlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgbGlzdGVuT25TdHJlYW1TZXR1cCgpOiBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbVNldHVwTGlzdGVuZXIodGhpcy5fcGFnZUxvYWRUaW1lKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENoYW5nZSA9IHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogaXNGb3JlZ3JvdW5kID8gTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kIDogTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZUxhc3RDaGFuZ2V9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdBcHBsaWNhdGlvbiBoYXMgZ29uZSBpbnRvIHRoZSBbJXNdIGFmdGVyIFslc10gbXMnLFxuICAgICAgaXNGb3JlZ3JvdW5kID8gJ2ZvcmVncm91bmQnIDogJ2JhY2tncm91bmQnLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VMYXN0Q2hhbmdlKS50b0lzb1N0cmluZygpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtSVFRVcGRhdGUobmV3UlRUOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZFJ0dCA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQ7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0ID0gbmV3UlRUO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IG5ld1JUVH0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRSdHQgPyB7dWludDY0OiBvbGRSdHR9IDogdW5kZWZpbmVkLFxuICAgICAgcmVzb3VyY2U6ICduYXZpZ2F0b3InXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgUlRUIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdSVFQsXG4gICAgICBvbGRSdHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZShuZXdOZXR3b3JrVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGROZXR3b3JrVHlwZSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlO1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGUgPSBuZXdOZXR3b3JrVHlwZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuTmV0d29ya1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3TmV0d29ya1R5cGV9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkTmV0d29ya1R5cGUgPyB7c3RyaW5nOiBvbGROZXR3b3JrVHlwZX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBlZmZlY3RpdmUgdHlwZSBoYXMgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld05ldHdvcmtUeXBlLFxuICAgICAgb2xkTmV0d29ya1R5cGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUobmV3Q2FwYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkQ2FwYWNpdHkgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge2Zsb2F0OiBuZXdDYXBhY2l0eX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRDYXBhY2l0eSA/IHtmbG9hdDogb2xkQ2FwYWNpdHl9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZG93bmxpbmsgdGhyb3VnaHB1dCBjYXBhY2l0eSBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3Q2FwYWNpdHksXG4gICAgICBvbGRDYXBhY2l0eVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmlkZW9UZWxlbWV0cnkgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfbGlzdGVuVG9GaXJzdFRpbWU6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIF9saXN0ZW5Gb3JDb250aW51YXRpb246IChldmVudCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyO1xuICBwcml2YXRlIF9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZTogbnVtYmVyO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbGFzdFByb2dyZXNzOiBudW1iZXI7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nO1xuICBwcml2YXRlIF9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lcjogRGlzcG9zYWJsZTtcbiAgcHJpdmF0ZSBfY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyOiBEaXNwb3NhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQpOiB2b2lkID0+IHRoaXMub25Db250aW51YXRpb24oZXZlbnQsIHZpZGVvKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG5cbiAgICB0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGF1c2UnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdzdXNwZW5kJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcik7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGR1cmF0aW9uU2luY2VQYWdlTG9hZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICByZXR1cm4gbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbGxUaW1lVG9GaXJzdEZyYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLnB1c2hUaW1lVG9GaXJzdEZyYW1lKG5vdyk7XG4gICAgdGhpcy5wdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3cpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoVGltZVRvRmlyc3RGcmFtZShub3cpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSA9IG5vdyAtIHRoaXMuX2NoYW5uZWxTdGFydFRpbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGhpcy5fY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZX0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBDaGFubmVsIGNyZWF0aW9uIHRvIGZpcnN0IGZyYW1lIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGhpcy5fY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uU3RhbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ZpZGVvU3RhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuU3RhbGxlZCxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvU3RhbGxlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gW2J1ZmZlcmluZ10gU3RyZWFtIGhhcyBzdGFsbGVkJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbnRpbnVhdGlvbihldmVudCwgdmlkZW8pOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIF9yZWdlbmVyYXRvclJ1bnRpbWUoKSB7XG4gIFwidXNlIHN0cmljdFwiOyAvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICovXG4gIG1vZHVsZS5leHBvcnRzID0gX3JlZ2VuZXJhdG9yUnVudGltZSA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvclJ1bnRpbWUoKSB7XG4gICAgcmV0dXJuIGU7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cztcbiAgdmFyIHQsXG4gICAgZSA9IHt9LFxuICAgIHIgPSBPYmplY3QucHJvdG90eXBlLFxuICAgIG4gPSByLmhhc093blByb3BlcnR5LFxuICAgIG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZnVuY3Rpb24gKHQsIGUsIHIpIHtcbiAgICAgIHRbZV0gPSByLnZhbHVlO1xuICAgIH0sXG4gICAgaSA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG4gICAgYSA9IGkuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCIsXG4gICAgYyA9IGkuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiLFxuICAgIHUgPSBpLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuICBmdW5jdGlvbiBkZWZpbmUodCwgZSwgcikge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge1xuICAgICAgdmFsdWU6IHIsXG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICB3cml0YWJsZTogITBcbiAgICB9KSwgdFtlXTtcbiAgfVxuICB0cnkge1xuICAgIGRlZmluZSh7fSwgXCJcIik7XG4gIH0gY2F0Y2ggKHQpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUodCwgZSwgcikge1xuICAgICAgcmV0dXJuIHRbZV0gPSByO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gd3JhcCh0LCBlLCByLCBuKSB7XG4gICAgdmFyIGkgPSBlICYmIGUucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gZSA6IEdlbmVyYXRvcixcbiAgICAgIGEgPSBPYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxcbiAgICAgIGMgPSBuZXcgQ29udGV4dChuIHx8IFtdKTtcbiAgICByZXR1cm4gbyhhLCBcIl9pbnZva2VcIiwge1xuICAgICAgdmFsdWU6IG1ha2VJbnZva2VNZXRob2QodCwgciwgYylcbiAgICB9KSwgYTtcbiAgfVxuICBmdW5jdGlvbiB0cnlDYXRjaCh0LCBlLCByKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwibm9ybWFsXCIsXG4gICAgICAgIGFyZzogdC5jYWxsKGUsIHIpXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwidGhyb3dcIixcbiAgICAgICAgYXJnOiB0XG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBlLndyYXAgPSB3cmFwO1xuICB2YXIgaCA9IFwic3VzcGVuZGVkU3RhcnRcIixcbiAgICBsID0gXCJzdXNwZW5kZWRZaWVsZFwiLFxuICAgIGYgPSBcImV4ZWN1dGluZ1wiLFxuICAgIHMgPSBcImNvbXBsZXRlZFwiLFxuICAgIHkgPSB7fTtcbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG4gIHZhciBwID0ge307XG4gIGRlZmluZShwLCBhLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xuICB2YXIgZCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcbiAgICB2ID0gZCAmJiBkKGQodmFsdWVzKFtdKSkpO1xuICB2ICYmIHYgIT09IHIgJiYgbi5jYWxsKHYsIGEpICYmIChwID0gdik7XG4gIHZhciBnID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocCk7XG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyh0KSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIGRlZmluZSh0LCBlLCBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKGUsIHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcih0LCBlKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKHIsIG8sIGksIGEpIHtcbiAgICAgIHZhciBjID0gdHJ5Q2F0Y2godFtyXSwgdCwgbyk7XG4gICAgICBpZiAoXCJ0aHJvd1wiICE9PSBjLnR5cGUpIHtcbiAgICAgICAgdmFyIHUgPSBjLmFyZyxcbiAgICAgICAgICBoID0gdS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGggJiYgXCJvYmplY3RcIiA9PSBfdHlwZW9mKGgpICYmIG4uY2FsbChoLCBcIl9fYXdhaXRcIikgPyBlLnJlc29sdmUoaC5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB0LCBpLCBhKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCB0LCBpLCBhKTtcbiAgICAgICAgfSkgOiBlLnJlc29sdmUoaCkudGhlbihmdW5jdGlvbiAodCkge1xuICAgICAgICAgIHUudmFsdWUgPSB0LCBpKHUpO1xuICAgICAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCB0LCBpLCBhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBhKGMuYXJnKTtcbiAgICB9XG4gICAgdmFyIHI7XG4gICAgbyh0aGlzLCBcIl9pbnZva2VcIiwge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKHQsIG4pIHtcbiAgICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBlKGZ1bmN0aW9uIChlLCByKSB7XG4gICAgICAgICAgICBpbnZva2UodCwgbiwgZSwgcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHIgPSByID8gci50aGVuKGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLCBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZykgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoZSwgciwgbikge1xuICAgIHZhciBvID0gaDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGksIGEpIHtcbiAgICAgIGlmIChvID09PSBmKSB0aHJvdyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICBpZiAobyA9PT0gcykge1xuICAgICAgICBpZiAoXCJ0aHJvd1wiID09PSBpKSB0aHJvdyBhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiB0LFxuICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOzspIHtcbiAgICAgICAgdmFyIGMgPSBuLmRlbGVnYXRlO1xuICAgICAgICBpZiAoYykge1xuICAgICAgICAgIHZhciB1ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShjLCBuKTtcbiAgICAgICAgICBpZiAodSkge1xuICAgICAgICAgICAgaWYgKHUgPT09IHkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcIm5leHRcIiA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztlbHNlIGlmIChcInRocm93XCIgPT09IG4ubWV0aG9kKSB7XG4gICAgICAgICAgaWYgKG8gPT09IGgpIHRocm93IG8gPSBzLCBuLmFyZztcbiAgICAgICAgICBuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcbiAgICAgICAgfSBlbHNlIFwicmV0dXJuXCIgPT09IG4ubWV0aG9kICYmIG4uYWJydXB0KFwicmV0dXJuXCIsIG4uYXJnKTtcbiAgICAgICAgbyA9IGY7XG4gICAgICAgIHZhciBwID0gdHJ5Q2F0Y2goZSwgciwgbik7XG4gICAgICAgIGlmIChcIm5vcm1hbFwiID09PSBwLnR5cGUpIHtcbiAgICAgICAgICBpZiAobyA9IG4uZG9uZSA/IHMgOiBsLCBwLmFyZyA9PT0geSkgY29udGludWU7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBwLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IG4uZG9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgXCJ0aHJvd1wiID09PSBwLnR5cGUgJiYgKG8gPSBzLCBuLm1ldGhvZCA9IFwidGhyb3dcIiwgbi5hcmcgPSBwLmFyZyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGUsIHIpIHtcbiAgICB2YXIgbiA9IHIubWV0aG9kLFxuICAgICAgbyA9IGUuaXRlcmF0b3Jbbl07XG4gICAgaWYgKG8gPT09IHQpIHJldHVybiByLmRlbGVnYXRlID0gbnVsbCwgXCJ0aHJvd1wiID09PSBuICYmIGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0gJiYgKHIubWV0aG9kID0gXCJyZXR1cm5cIiwgci5hcmcgPSB0LCBtYXliZUludm9rZURlbGVnYXRlKGUsIHIpLCBcInRocm93XCIgPT09IHIubWV0aG9kKSB8fCBcInJldHVyblwiICE9PSBuICYmIChyLm1ldGhvZCA9IFwidGhyb3dcIiwgci5hcmcgPSBuZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnXCIgKyBuICsgXCInIG1ldGhvZFwiKSksIHk7XG4gICAgdmFyIGkgPSB0cnlDYXRjaChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG4gICAgaWYgKFwidGhyb3dcIiA9PT0gaS50eXBlKSByZXR1cm4gci5tZXRob2QgPSBcInRocm93XCIsIHIuYXJnID0gaS5hcmcsIHIuZGVsZWdhdGUgPSBudWxsLCB5O1xuICAgIHZhciBhID0gaS5hcmc7XG4gICAgcmV0dXJuIGEgPyBhLmRvbmUgPyAocltlLnJlc3VsdE5hbWVdID0gYS52YWx1ZSwgci5uZXh0ID0gZS5uZXh0TG9jLCBcInJldHVyblwiICE9PSByLm1ldGhvZCAmJiAoci5tZXRob2QgPSBcIm5leHRcIiwgci5hcmcgPSB0KSwgci5kZWxlZ2F0ZSA9IG51bGwsIHkpIDogYSA6IChyLm1ldGhvZCA9IFwidGhyb3dcIiwgci5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIiksIHIuZGVsZWdhdGUgPSBudWxsLCB5KTtcbiAgfVxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkodCkge1xuICAgIHZhciBlID0ge1xuICAgICAgdHJ5TG9jOiB0WzBdXG4gICAgfTtcbiAgICAxIGluIHQgJiYgKGUuY2F0Y2hMb2MgPSB0WzFdKSwgMiBpbiB0ICYmIChlLmZpbmFsbHlMb2MgPSB0WzJdLCBlLmFmdGVyTG9jID0gdFszXSksIHRoaXMudHJ5RW50cmllcy5wdXNoKGUpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkodCkge1xuICAgIHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9O1xuICAgIGUudHlwZSA9IFwibm9ybWFsXCIsIGRlbGV0ZSBlLmFyZywgdC5jb21wbGV0aW9uID0gZTtcbiAgfVxuICBmdW5jdGlvbiBDb250ZXh0KHQpIHtcbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbe1xuICAgICAgdHJ5TG9jOiBcInJvb3RcIlxuICAgIH1dLCB0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKSwgdGhpcy5yZXNldCghMCk7XG4gIH1cbiAgZnVuY3Rpb24gdmFsdWVzKGUpIHtcbiAgICBpZiAoZSB8fCBcIlwiID09PSBlKSB7XG4gICAgICB2YXIgciA9IGVbYV07XG4gICAgICBpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUubmV4dCkgcmV0dXJuIGU7XG4gICAgICBpZiAoIWlzTmFOKGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgbyA9IC0xLFxuICAgICAgICAgIGkgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgICAgZm9yICg7ICsrbyA8IGUubGVuZ3RoOykgaWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIG5leHQudmFsdWUgPSBlW29dLCBuZXh0LmRvbmUgPSAhMSwgbmV4dDtcbiAgICAgICAgICAgIHJldHVybiBuZXh0LnZhbHVlID0gdCwgbmV4dC5kb25lID0gITAsIG5leHQ7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGkubmV4dCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoX3R5cGVvZihlKSArIFwiIGlzIG5vdCBpdGVyYWJsZVwiKTtcbiAgfVxuICByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIG8oZywgXCJjb25zdHJ1Y3RvclwiLCB7XG4gICAgdmFsdWU6IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLFxuICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgfSksIG8oR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFwiY29uc3RydWN0b3JcIiwge1xuICAgIHZhbHVlOiBHZW5lcmF0b3JGdW5jdGlvbixcbiAgICBjb25maWd1cmFibGU6ICEwXG4gIH0pLCBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgdSwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKSwgZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICB2YXIgZSA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdCAmJiB0LmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiAhIWUgJiYgKGUgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8IFwiR2VuZXJhdG9yRnVuY3Rpb25cIiA9PT0gKGUuZGlzcGxheU5hbWUgfHwgZS5uYW1lKSk7XG4gIH0sIGUubWFyayA9IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAodC5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgZGVmaW5lKHQsIHUsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLCB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZyksIHQ7XG4gIH0sIGUuYXdyYXAgPSBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB7XG4gICAgICBfX2F3YWl0OiB0XG4gICAgfTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKSwgZGVmaW5lKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlLCBjLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBlLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yLCBlLmFzeW5jID0gZnVuY3Rpb24gKHQsIHIsIG4sIG8sIGkpIHtcbiAgICB2b2lkIDAgPT09IGkgJiYgKGkgPSBQcm9taXNlKTtcbiAgICB2YXIgYSA9IG5ldyBBc3luY0l0ZXJhdG9yKHdyYXAodCwgciwgbiwgbyksIGkpO1xuICAgIHJldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocikgPyBhIDogYS5uZXh0KCkudGhlbihmdW5jdGlvbiAodCkge1xuICAgICAgcmV0dXJuIHQuZG9uZSA/IHQudmFsdWUgOiBhLm5leHQoKTtcbiAgICB9KTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKGcpLCBkZWZpbmUoZywgdSwgXCJHZW5lcmF0b3JcIiksIGRlZmluZShnLCBhLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBkZWZpbmUoZywgXCJ0b1N0cmluZ1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH0pLCBlLmtleXMgPSBmdW5jdGlvbiAodCkge1xuICAgIHZhciBlID0gT2JqZWN0KHQpLFxuICAgICAgciA9IFtdO1xuICAgIGZvciAodmFyIG4gaW4gZSkgci5wdXNoKG4pO1xuICAgIHJldHVybiByLnJldmVyc2UoKSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIGZvciAoOyByLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHQgPSByLnBvcCgpO1xuICAgICAgICBpZiAodCBpbiBlKSByZXR1cm4gbmV4dC52YWx1ZSA9IHQsIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQuZG9uZSA9ICEwLCBuZXh0O1xuICAgIH07XG4gIH0sIGUudmFsdWVzID0gdmFsdWVzLCBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcbiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoZSkge1xuICAgICAgaWYgKHRoaXMucHJldiA9IDAsIHRoaXMubmV4dCA9IDAsIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB0LCB0aGlzLmRvbmUgPSAhMSwgdGhpcy5kZWxlZ2F0ZSA9IG51bGwsIHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMuYXJnID0gdCwgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSksICFlKSBmb3IgKHZhciByIGluIHRoaXMpIFwidFwiID09PSByLmNoYXJBdCgwKSAmJiBuLmNhbGwodGhpcywgcikgJiYgIWlzTmFOKCtyLnNsaWNlKDEpKSAmJiAodGhpc1tyXSA9IHQpO1xuICAgIH0sXG4gICAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgIHRoaXMuZG9uZSA9ICEwO1xuICAgICAgdmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIGRpc3BhdGNoRXhjZXB0aW9uKGUpIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHRocm93IGU7XG4gICAgICB2YXIgciA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobiwgbykge1xuICAgICAgICByZXR1cm4gYS50eXBlID0gXCJ0aHJvd1wiLCBhLmFyZyA9IGUsIHIubmV4dCA9IG4sIG8gJiYgKHIubWV0aG9kID0gXCJuZXh0XCIsIHIuYXJnID0gdCksICEhbztcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIG8gPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgbyA+PSAwOyAtLW8pIHtcbiAgICAgICAgdmFyIGkgPSB0aGlzLnRyeUVudHJpZXNbb10sXG4gICAgICAgICAgYSA9IGkuY29tcGxldGlvbjtcbiAgICAgICAgaWYgKFwicm9vdFwiID09PSBpLnRyeUxvYykgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgaWYgKGkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBjID0gbi5jYWxsKGksIFwiY2F0Y2hMb2NcIiksXG4gICAgICAgICAgICB1ID0gbi5jYWxsKGksIFwiZmluYWxseUxvY1wiKTtcbiAgICAgICAgICBpZiAoYyAmJiB1KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgaS5jYXRjaExvYykgcmV0dXJuIGhhbmRsZShpLmNhdGNoTG9jLCAhMCk7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgaS5maW5hbGx5TG9jKSByZXR1cm4gaGFuZGxlKGkuZmluYWxseUxvYyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgaS5jYXRjaExvYykgcmV0dXJuIGhhbmRsZShpLmNhdGNoTG9jLCAhMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdSkgdGhyb3cgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmZpbmFsbHlMb2MpIHJldHVybiBoYW5kbGUoaS5maW5hbGx5TG9jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFicnVwdDogZnVuY3Rpb24gYWJydXB0KHQsIGUpIHtcbiAgICAgIGZvciAodmFyIHIgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgciA+PSAwOyAtLXIpIHtcbiAgICAgICAgdmFyIG8gPSB0aGlzLnRyeUVudHJpZXNbcl07XG4gICAgICAgIGlmIChvLnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgbi5jYWxsKG8sIFwiZmluYWxseUxvY1wiKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgaSA9IG87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGkgJiYgKFwiYnJlYWtcIiA9PT0gdCB8fCBcImNvbnRpbnVlXCIgPT09IHQpICYmIGkudHJ5TG9jIDw9IGUgJiYgZSA8PSBpLmZpbmFsbHlMb2MgJiYgKGkgPSBudWxsKTtcbiAgICAgIHZhciBhID0gaSA/IGkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmV0dXJuIGEudHlwZSA9IHQsIGEuYXJnID0gZSwgaSA/ICh0aGlzLm1ldGhvZCA9IFwibmV4dFwiLCB0aGlzLm5leHQgPSBpLmZpbmFsbHlMb2MsIHkpIDogdGhpcy5jb21wbGV0ZShhKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZSh0LCBlKSB7XG4gICAgICBpZiAoXCJ0aHJvd1wiID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuICAgICAgcmV0dXJuIFwiYnJlYWtcIiA9PT0gdC50eXBlIHx8IFwiY29udGludWVcIiA9PT0gdC50eXBlID8gdGhpcy5uZXh0ID0gdC5hcmcgOiBcInJldHVyblwiID09PSB0LnR5cGUgPyAodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZywgdGhpcy5tZXRob2QgPSBcInJldHVyblwiLCB0aGlzLm5leHQgPSBcImVuZFwiKSA6IFwibm9ybWFsXCIgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSwgeTtcbiAgICB9LFxuICAgIGZpbmlzaDogZnVuY3Rpb24gZmluaXNoKHQpIHtcbiAgICAgIGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG4gICAgICAgIGlmIChyLmZpbmFsbHlMb2MgPT09IHQpIHJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbiwgci5hZnRlckxvYyksIHJlc2V0VHJ5RW50cnkociksIHk7XG4gICAgICB9XG4gICAgfSxcbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uIF9jYXRjaCh0KSB7XG4gICAgICBmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG4gICAgICAgIHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuICAgICAgICBpZiAoci50cnlMb2MgPT09IHQpIHtcbiAgICAgICAgICB2YXIgbiA9IHIuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAoXCJ0aHJvd1wiID09PSBuLnR5cGUpIHtcbiAgICAgICAgICAgIHZhciBvID0gbi5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiBkZWxlZ2F0ZVlpZWxkKGUsIHIsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGUpLFxuICAgICAgICByZXN1bHROYW1lOiByLFxuICAgICAgICBuZXh0TG9jOiBuXG4gICAgICB9LCBcIm5leHRcIiA9PT0gdGhpcy5tZXRob2QgJiYgKHRoaXMuYXJnID0gdCksIHk7XG4gICAgfVxuICB9LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF90eXBlb2Yobyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiLy8gVE9ETyhCYWJlbCA4KTogUmVtb3ZlIHRoaXMgZmlsZS5cblxudmFyIHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWVcIikoKTtcbm1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcblxuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9wYWNrYWdlcy9ydW50aW1lL3J1bnRpbWUuanMjTDczNj1cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBnbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG4gIH0gZWxzZSB7XG4gICAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbiAgfVxufVxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IGRvY3VtZW50LmJhc2VVUkkgfHwgc2VsZi5sb2NhdGlvbi5ocmVmO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLy8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vLyBbcmVzb2x2ZSwgcmVqZWN0LCBQcm9taXNlXSA9IGNodW5rIGxvYWRpbmcsIDAgPSBjaHVuayBsb2FkZWRcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdFwiY2hhbm5lbHNcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgQ2hhbm5lbHMgZnJvbSAnLi9DaGFubmVscyc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4vQ2hhbm5lbFN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgQ2hhbm5lbHMsXG4gIENoYW5uZWxTdGF0ZVxufTsiXSwibmFtZXMiOlsiRGlzcG9zYWJsZSIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJEaXNwb3NhYmxlTGlzdCIsImRlZmF1bHREb2N1bWVudEZvY3VzSW50ZXJ2YWxUaW1lb3V0IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImRldGVjdFRhYkZvY3VzQ2hhbmdlIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiZ2V0IiwidmFsdWUiLCJnZXRUaW1lU2luY2VMYXN0Q2hhbmdlIiwiX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZSIsImRpc3Bvc2UiLCJfZGlzcG9zYWJsZXMiLCJfdGhpcyIsImhpZGRlbiIsInZpc2liaWxpdHlDaGFuZ2UiLCJkb2N1bWVudCIsIl90eXBlb2YiLCJtc0hpZGRlbiIsIndlYmtpdEhpZGRlbiIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc0ZvcmVncm91bmQiLCJzZXRGb2N1c1N0YXRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5Gb3JEb2N1bWVudEZvY3VzIiwiY2FsbCIsIl90aGlzMiIsIl9kb2N1bWVudEZvY3VzSW50ZXJ2YWwiLCJ3aW5kb3ciLCJzZXRJbnRlcnZhbCIsImhhc0ZvY3VzIiwiY2xlYXJJbnRlcnZhbCIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsInNldFRpbWVvdXQiLCJpbWciLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsInJ0dCIsImxpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX2RvY3VtZW50IiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiUGFyYW1ldGVycyIsIl9kaXNjb3ZlcnlQYXJhbWV0ZXJzIiwiYXBwbHlQYXJhbWV0ZXJzIiwicGFyYW1ldGVycyIsIl9fUEFSQU1FVEVSU19fIiwiZGlzY292ZXJ5IiwiaW50ZW50aW9ucyIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsIl9saXN0IiwiZm9yRWFjaCIsInRvU3RyaW5nIiwibWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90IiwiTnVtYmVycyIsImNvdW50TnVtYmVyTGVuZ3RoIiwiaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSIsIm51bWJlciIsImNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCIsIk1hdGgiLCJmbG9vciIsImNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsIiwiZml4Um91bmRpbmciLCJwcmVjaXNpb24iLCJwb3dlciIsInBvdyIsInJvdW5kIiwiZGlnaXRzQmVmb3JlRGVjaW1hbCIsIm9yaWdpbmFsVmFsdWUiLCJtb2RpZmllZFZhbHVlIiwiY291bnQiLCJTdHJpbmdzIiwicmFuZG9tIiwicmFuZG9tMTNDaGFyYWN0ZXJzIiwibG9vcHMiLCJjZWlsIiwiQXJyYXkiLCJmaWxsIiwicmVkdWNlIiwic3RyaW5nIiwiZnVuYyIsImFzc2VydFVucmVhY2hhYmxlIiwieCIsIkFwcGVuZGVycyIsIl9hcHBlbmRlcnMiLCJhcHBlbmRlciIsInJlbW92ZSIsIml0ZW1zIiwiaXRlbSIsIkxvZ2dpbmdMZXZlbCIsIkNvbnNvbGVBcHBlbmRlciIsInRocmVzaG9sZCIsIl90aHJlc2hvbGQiLCJsb2ciLCJsb2dMZXZlbCIsIm1lc3NhZ2UiLCJjYXRlZ29yeSIsImRhdGUiLCJmdWxsTWVzc2FnZSIsInRvSVNPU3RyaW5nIiwiV2FybiIsImNvbnNvbGUiLCJMb2dnZXIiLCJhcHBlbmRlcnMiLCJfY2F0ZWdvcnkiLCJ0cmFjZSIsIlRyYWNlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiZGVidWciLCJEZWJ1ZyIsIl9sZW4yIiwiX2tleTIiLCJJbmZvIiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfbGVuNCIsIl9rZXk0IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiRmF0YWwiLCJfbGVuNiIsIl9rZXk2IiwibGV2ZWwiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwicmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyIsImluZGV4IiwicmVwbGFjZUFyZ3VtZW50Iiwic3BsaWNlIiwic3RyaW5naWZ5IiwiYWNjdW11bGF0b3IiLCJjdXJyZW50VmFsdWUiLCJhcnJheSIsImVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlIiwic3RhY2siLCJhcmciLCJjYWNoZSIsIk9iamVjdCIsImFyZ3VtZW50IiwiZGF0YSIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImJpbmQiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwiX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsInVybCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwibG9jYXRpb24iLCJob3N0bmFtZSIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJfZG9tYWluIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiRm9ybURhdGEiLCJhcHBlbmQiLCJyZWNvcmRzIiwiZmV0Y2giLCJtZXRob2QiLCJib2R5IiwiYWJydXB0Iiwic2VudCIsInN0b3AiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJ0aGVuIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50IiwiY2F0Y2giLCJfcmVmIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiUHJvbWlzZUhhbmRsZXIiLCJQcm9taXNlIiwiY2FsbGJhY2siLCJUeXBlRXJyb3IiLCJfc3RhdGUiLCJfaGFuZGxlZCIsIl92YWx1ZSIsIl9kZWZlcnJlZHMiLCJkb1Jlc29sdmUiLCJkb25lIiwicHJvbWlzZVJlc29sdmUiLCJyZWFzb24iLCJwcm9taXNlUmVqZWN0IiwibmV3VmFsdWUiLCJwcm9taXNlIiwiZmluYWxlIiwiX2ltbWVkaWF0ZSIsIl91bmhhbmRsZWRSZWplY3Rpb24iLCJpIiwibGVuIiwiaGFuZGxlIiwiZGVmZXJyZWQiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXN1bHQiLCJhbGwiLCJhcnIiLCJyZXNvbHZlIiwicmVqZWN0IiwiaXNBcnJheSIsInJlbWFpbmluZyIsIm1hbmFnZVJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJfIiwicmFjZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJ2aWRlb1RyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlciIsIm9wdGlvbnMiLCJhZGRUcmFuc2NlaXZlciIsInQwIiwidDEiLCJ0MiIsImNyZWF0ZU9mZmVyIiwidDMiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0NCIsInQ1IiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJSdGNDb25uZWN0aW9uTW9uaXRvciIsIm1lZGlhU3RyZWFtIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiX3RyYWNrc1RvTW9uaXRvciIsImdldFRyYWNrcyIsIm1hcCIsInRyYWNrIiwiZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQiLCJwYXJzZWRTRFAiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJzZHAiLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX2lzTW9uaXRvclJ1bm5pbmciLCJfdXBkYXRlVGltZW91dCIsImNsZWFyVGltZW91dCIsIl91cGRhdGVTdGF0aXN0aWMiLCJfaWdub3JlZCIsImdldEtpbmRGb3JTYWZhcmkxMSIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJ1cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJpZCIsImdldFN0YXRzIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYyIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2MyIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjQiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHY1IiwiYnl0ZXMiLCJieXRlc1JlY2VpdmVkIiwicHJldmlvdXNCeXRlc1JlY2VpdmVkIiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c0xvc3QiLCJwYWNrZXRzUmVjZWl2ZWQiLCJnZXRDb2RlY0J5VHlwZSIsInZpZGVvIiwiZnJhbWVzRGVjb2RlZCIsImZwcyIsIl91cGRhdGVTdGF0aXN0aWNMZWdhY3kiLCJnZXRTdGF0c0xlZ2FjeSIsIm5hbWVzIiwic3RhdCIsIl9zZHAiLCJzZHBTcGxpdEJ5TGluZXMiLCJzZHBTcGxpdEJ5VHJhY2tzIiwiX2F1ZGlvQ29kZWMiLCJhcHBseUNvZGVjIiwiX3ZpZGVvQ29kZWMiLCJfaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVHJhY2tCeVR5cGVFbmFibGVkIiwiX2lzVmlkZW9UcmFja0VuYWJsZWQiLCJzZHBTZWN0aW9uRm9yVHlwZSIsImZpbmQiLCJzZHBUcmFjayIsInVzZWRDb2RlY0xpbmUiLCJzZHBMaW5lIiwidXNlZENvZGVjIiwiY29kZWNOYW1lIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb24iLCJSVENQZWVyQ29ubmVjdGlvbiIsImN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIiwiY29ubmVjdGlvblN0YXRlIiwiaWNlQ29ubmVjdGlvblN0YXRlIiwiZ2V0Q29uZmlndXJhdGlvbiIsInNldENvbmZpZ3VyYXRpb24iLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJfY3JlYXRlT2ZmZXIiLCJwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiX3RoaXMzIiwiYWRkU3RyZWFtIiwiX3RoaXM0IiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3ViamVjdCIsIl9zdWJqZWN0Iiwic3Vic2NyaWJlIiwiRGlzcG9zYWJsZUxpc3RlbmVyIiwiX0Rpc3Bvc2FibGUiLCJsaXN0ZW5lcnMiLCJfY2FsbFN1cGVyIiwiaWR4IiwiX2luaGVyaXRzIiwiX2xpc3RlbmVycyIsImNoYW5nZWQiLCJjb21wYXJhYmxlIiwiZXF1YWxzIiwiYmFzZVVSTCIsIm9yaWdpbiIsIkRpc2NvdmVyeVVyaSIsIl9jbGllbnRTZXNzaW9uSWQiLCJfbG9hZGVkVGltZXN0YW1wIiwiX3JlYWRPbmx5SW5pdGlhbGl6ZWQiLCJfcmVhZE9ubHlEaXNjb3ZlcnlVcmkiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlIiwiX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwiX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiX3dlYlBsYXllckxvYWRlciIsIl9zaGFrYVBsYXllckxvYWRlciIsIl9obHNKc0xvYWRlciIsIl9tZXRyaWNzU2VydmljZSIsIl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl90ZWxlbWV0cnlVcmwiLCJfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsInJldHJpZXNBbW91bnQiLCJfdGVsZW1ldHJ5TGV2ZWwiLCJhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJ0ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiaWdub3JlZEVudmlyb25tZW50IiwiaWdub3JlZERpc2NvdmVyeVVyaSIsInRlbGVtZXRyeVVybCIsInRlbGVtZXRyeUFwcGVuZGVyIiwiaWdub3JlZFRlbmFuY3kiLCJhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uIiwiaWdub3JlZFRlbGVtZXRyeUxldmVsIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImRpc2NvdmVyeVVyaSIsImNoYW5uZWxUb2tlbiIsInVyaVZhbHVlIiwiYmFzZVVSSVZhbHVlIiwiaW5pdCIsIl9pbml0aWFsaXplZCIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJEaW1lbnNpb24iLCJDaGFubmVsU3RhdGUiLCJWaWRlb1RlbGVtZXRyeSIsIlNlc3Npb25UZWxlbWV0cnkiLCJUb2tlbkNvbnRleHQiLCJDaGFubmVsQ29udGV4dCIsIkVuY29kZWRTdHJlYW1TaW5rIiwiU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiUGVlckNvbm5lY3Rpb25Db250ZXh0IiwiU3RhdGVDb250ZXh0IiwiU3RyZWFtRmFjdG9yeSIsIkRpc2NvdmVyeSIsImRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiIsImZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwic3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiQ2hhbm5lbCIsInZpZGVvRWxlbWVudCIsImNoYW5uZWxDb250ZXh0T3B0aW9ucyIsInRhcmdldExhZyIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zIiwiaGFzSW5zZXJ0YWJsZVN0cmVhbXMiLCJoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJ2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImVuY29kZWRWaWRlb1N0cmVhbVNpbmsiLCJlbmNvZGVkQXVkaW9TdHJlYW1TaW5rIiwiX3Rva2VuQ29udGV4dCIsIl9jaGFubmVsQ29udGV4dCIsIl9wZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJfc3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIl9zdGF0ZUNvbnRleHQiLCJfY2hhbm5lbFN0YXJ0VGltZSIsIl9yZWFkT25seVZpZGVvRWxlbWVudCIsIl9yZWFkT25seVRva2VuIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5QXV0b011dGVkIiwiYXV0b011dGVkIiwiX3JlYWRPbmx5QXV0b1BhdXNlZCIsImF1dG9QYXVzZWQiLCJfcmVhZE9ubHlUb2tlbkV4cGlyaW5nIiwidG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQbGF5aW5nIiwicGxheWluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlUYXJnZXRMYWciLCJfcmVhZE9ubHlMYWciLCJsYWciLCJfcmVhZE9ubHlCaXRyYXRlTGltaXQiLCJiaXRyYXRlTGltaXQiLCJfcmVhZE9ubHlSZXNvbHV0aW9uIiwicmVzb2x1dGlvbiIsIl9yZWFkT25seUZhaWx1cmVDb3VudCIsImZhaWx1cmVDb3VudCIsIl9yZWFkT25seUVuZFBvaW50IiwiZW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJzdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsImNoYW5uZWxEaXNwb3NhYmxlcyIsIl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIiLCJoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCIsInJlbmRlcmVyRGlzcG9zYWJsZXMiLCJ2aWRlb1RlbGVtZXRyeSIsImRhdGFzZXQiLCJzZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lIiwic2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nIiwiU3RvcHBlZCIsInJlc3RhcnRBZnRlclN0b3AiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQbGF5aW5nIiwib25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzIiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiY2hhbm5lbEluaXRpYWxpemF0aW9uIiwiZ2V0VGltZSIsImxpbWl0Qml0cmF0ZSIsIktlZXAiLCJOb3JtYWwiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50Iiwic3RhcnQiLCJwYXVzZSIsInNyY09iamVjdCIsIndpZHRoIiwidmlkZW9XaWR0aCIsImhlaWdodCIsInZpZGVvSGVpZ2h0IiwiZW1wdHkiLCJkaXNwb3NhYmxlcyIsInNldEJpdHJhdGVMaW1pdCIsImNsZWFyQml0cmF0ZUxpbWl0IiwiYml0cmF0ZUluQml0c1BlclNlY29uZCIsIlJlc2V0IiwidXBkYXRlVGFyZ2V0TGFnIiwiX3N0b3AiLCJpc1N0YXJ0aW5nIiwicHJvY2Vzc1N0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiX3Jlc3VtZSIsInBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50IiwicmVzdW1lIiwibXV0ZSIsIm11dGVkIiwidW5tdXRlIiwiX2Rpc3Bvc2UiLCJpc0Rpc3Bvc2VkIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiX3Byb2Nlc3NTdGFydCIsIl9jYWxsZWU1IiwiX3RoaXM1IiwibGlzdGVuT25TdHJlYW1TZXR1cCIsIl9TdHJlYW1UcmFja1RyYW5zZm9ybSIsInZhbGlkIiwidmFsaWRhdGlvblJlc3VsdCIsIl9TdHJlYW1UcmFja1RyYW5zZm9ybTIiLCJfdmFsaWQiLCJfdmFsaWRhdGlvblJlc3VsdCIsIl9FbmNvZGVkU3RyZWFtU2luayR2YSIsIl92YWxpZDIiLCJfdmFsaWRhdGlvblJlc3VsdDIiLCJfRW5jb2RlZFN0cmVhbVNpbmskdmEyIiwiX3ZhbGlkMyIsIl92YWxpZGF0aW9uUmVzdWx0MyIsImhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrIiwiaGFzRW5jb2RlZFN0cmVhbVNpbmsiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJzdHJlYW1QbGF5ZXIiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJVbmF1dGhvcml6ZWQiLCJ2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJDb25maWd1cmF0aW9uRXJyb3IiLCJ2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rIiwiaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsIlVuc3VwcG9ydGVkRmVhdHVyZSIsImlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkIiwiU3RhcnRpbmciLCJSZWNvdmVyaW5nIiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiY3JlYXRlIiwiQ2xpZW50U3RhcnRFcnJvciIsImZpbmFsbHkiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInRpbWVvdXRJZCIsImdldFJldHJ5SW50ZXJ2YWwiLCJfcmVzdGFydEFmdGVyU3RvcCIsIl9jYWxsZWU2IiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwiX3BsYXkiLCJfY2FsbGVlNyIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyIsInBsYXkiLCJTdGFuZEJ5IiwiT2ZmbGluZSIsIkdlb1Jlc3RyaWN0ZWQiLCJHZW9CbG9ja2VkIiwiUGF1c2VkIiwiUmVjb25uZWN0aW5nIiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJfY2FsbGVlOCIsIl9jYWxsZWU4JCIsIl9jb250ZXh0OCIsIl90aGlzNiIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJkZXN0cm95U3RyZWFtIiwiX3JlZjIiLCJwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiX3BsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50IiwiX2NhbGxlZTkiLCJfdGhpczciLCJwbGF5UHJvbWlzZSIsIl9jYWxsZWU5JCIsIl9jb250ZXh0OSIsImhhc0F1ZGlvVHJhY2siLCJmaWx0ZXIiLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiIsIkNoYW5uZWxzIiwiY3JlYXRlQ2hhbm5lbCIsImluaXRpYWxpemVkIiwiY2hhbm5lbE9wdGlvbnMiLCJkZWZhdWx0VGFyZ2V0TGFnIiwiX29wdGlvbnMkdGFyZ2V0TGFnIiwiYXBwbHlTdGF0dXMiLCJhcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQiLCJtYXBTdWJzY3JpYmVTdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIkZvcmNlIiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwiZGlzY292ZXJ5U2VydmljZSIsImNhY2hlZFZhbHVlIiwiX2NhY2hlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsImRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiZmFpbGVkUmVxdWVzdHMiLCJwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCIsIl9hcmdzMiIsImJ1aWxkRGlzY292ZXJ5VXJsIiwicGluZyIsInRpbWUiLCJfZGlzY292ZXJ5VXJpIiwiZGlzY292ZXJ5UGFyYW1ldGVycyIsInNlYXJjaFBhcmFtcyIsImFwaVZlcnNpb24iLCJfdGltZW91dCIsIl9yb3VuZFRyaXBUaW1lIiwiX3BpbmciLCJmaW5pc2hlZCIsImJ1aWxkUGluZ1VybCIsIl9zdWJzY3JpYmUiLCJsb2NhbFNlc3Npb25EZXNjcmlwdGlvbiIsImNsaWVudFZlcnNpb24iLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsImh0dHBSZXNwb25zZSIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsIl94OCIsIl94OSIsIl9saW1pdEJpdHJhdGUiLCJtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl94MTMiLCJfeDE0IiwiX2FkZEljZUNhbmRpZGF0ZXMiLCJjYW5kaWRhdGVzIiwiZGlzY292ZXJ5Q29tcGxldGVkIiwiYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2FyZ3M2IiwibWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsImFkZEljZUNhbmRpZGF0ZXMiLCJfeDE1IiwiX3gxNiIsIl94MTciLCJfZGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfeDE4IiwiX3gxOSIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50Iiwic2VuZEJlYWNvbiIsIl94MjAiLCJfeDIxIiwicGF0aCIsInBhdGhBc0FycmF5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1N1YnNjcmliZVJlc3BvbnNlIiwianNvbiIsInJ0Y0NvbmZpZ3VyYXRpb24iLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3gyMiIsIl94MjMiLCJfY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwiX2NhbGxlZTEwIiwicHVibGlzaFJlc3BvbnNlIiwiX2NhbGxlZTEwJCIsIl9jb250ZXh0MTAiLCJfeDI0IiwiX3gyNSIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX2NhbGxlZTExIiwiX2NhbGxlZTExJCIsIl9jb250ZXh0MTEiLCJfeDI2IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9jYWxsZWUxMiIsIl9jYWxsZWUxMiQiLCJfY29udGV4dDEyIiwiX3gyNyIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY2FsbGVlMTMiLCJfY2FsbGVlMTMkIiwiX2NvbnRleHQxMyIsIl94MjgiLCJJbnNlcnRhYmxlU3RyZWFtcyIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwiZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCIsIlJlYWxUaW1lU3RyZWFtIiwiY2hhbm5lbENvbnRleHQiLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJzdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsIl9yZWYzJCIsImNsaWVudE9mZmVyRGlzYWJsZWQiLCJzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24iLCJzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24iLCJfcmVmNCIsImFwcGx5UnRjQ29uZmlndXJhdGlvbiIsInN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0IiwiY2FuY2VsRGlzY292ZXJ5IiwiY2FuZGlkYXRlIiwiX3JlZjUiLCJyZXRyeUNhbGxiYWNrIiwib25MaW5lIiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJtZWRpYVN0cmVhbVByb21pc2UiLCJvblRyYWNrRGlzYWJsZWQiLCJzdHJlYW1zIiwidHJhY2tMaXN0ZW5lciIsImFuc3dlciIsIl9yZWY2IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMiLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsIl9JbnNlcnRhYmxlU3RyZWFtcyRhcCIsImFwcGx5RW5jb2RlZFN0cmVhbVRyYW5zZm9ybWF0aW9uIiwiX0luc2VydGFibGVTdHJlYW1zJGFwMiIsImFwcGx5SW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtZWRTdHJlYW0iLCJydGNDb25uZWN0aW9uTW9uaXRvciIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yU3RhdGlzdGljU3Vic2NyaXB0aW9uIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsInJ0Y1ZpZGVvU3RhdGlzdGljIiwicnRjQXVkaW9TdGF0aXN0aWMiLCJhdWRpbyIsImF1ZGlvVHJhY2tGYWlsZWQiLCJ2aWRlb1RyYWNrRmFpbGVkIiwiX2FwcGx5UnRjQ29uZmlndXJhdGlvbiIsIm9wdGlvbmFsUGVlckNvbm5lY3Rpb24iLCJuZXdSdGNDb25maWd1cmF0aW9uIiwiX29iamVjdFNwcmVhZCIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJpc0NsaWVudE9mZmVyRmxvdyIsImljZVJlc3RhcnQiLCJvZmZlciIsIlJlYWxUaW1lU3RyZWFtRmFjdG9yeSIsInRva2VuQ2FwYWJpbGl0aWVzIiwibW9kZSIsIlN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJTa2lwRnJhbWUiLCJyZWNlaXZlcnMiLCJyZWNlaXZlciIsInJlY2VpdmUiLCJ3b3JrZXIiLCJXb3JrZXIiLCJpbXBvcnQiLCJtZXRhIiwib25tZXNzYWdlIiwiZXZlbnQiLCJjaHVuayIsInBvc3RNZXNzYWdlIiwiZm9yY2VJbnZhbGlkRnJhbWUiLCJ0cmFuc2Zvcm0iLCJ0ZXJtaW5hdGUiLCJlbmNvZGVkU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJjb250cm9sbGVyIiwic3Vycm9nYXRlIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lIiwiZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyIsImdldFN1cnJvZ2F0ZVZpZGVvUEZyYW1lUGVyQ29kZWMiLCJlbnF1ZXVlIiwidHJhbnNmb3JtZXIiLCJUcmFuc2Zvcm1TdHJlYW0iLCJyZWNlaXZlclN0cmVhbXMiLCJzb3VyY2UiLCJyZWFkYWJsZSIsInNpbmsiLCJ3cml0YWJsZSIsInBpcGVUaHJvdWdoIiwicGlwZVRvIiwiTWVkaWFTdHJlYW0iLCJhdWRpb1B1bXBlciIsIkF1ZGlvIiwiYXBwZW5kQ2hpbGQiLCJyZW1vdmVDaGlsZCIsImdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEiLCJnZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjIiwiaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwidmlkZW9UcmFjayIsInByb2Nlc3NvciIsImdlbmVyYXRvciIsInJlbW92ZVRyYWNrIiwiYXVkaW9UcmFjayIsIlN5bWJvbCIsInRvVXBwZXJDYXNlIiwiX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyIsIk9QVVMiLCJidWZmZXIiLCJfc2luZ2xlWmVyb0J5dGUiLCJfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciIsIl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCIsIl9kdW1teTgyeDgySDI2NCIsIklGcmFtZSIsIl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMiLCJIMjY0IiwiVlA4IiwiVlA5IiwiX2lzQW5kcm9pZENocm9tZSIsImdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIiLCJfZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjIiwic2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciIsImJpdE1hc2sxIiwiYml0TWFzazIiLCJiaXRTaGlmdFJpZ2h0QnkxIiwiYml0U2hpZnRMZWZ0Qnk3IiwiYnl0ZTEiLCJieXRlMiIsImNvcHlPZkR1bW15UEZyYW1lcyIsIlBGcmFtZSIsImJ1ZmZlckluZGV4IiwiX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleCIsIl9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIiwiaXNBbmRyb2lkIiwiVWludDhBcnJheSIsIl9pc01vYmlsZUNocm9tZSIsIl9pc1NhZmFyaSIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIm90aGVyIiwiYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfbmV0d29ya01vbml0b3IiLCJyZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlIiwicmVjb3JkTmV0d29ya1JUVFVwZGF0ZSIsInJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlIiwiZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJyZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUiLCJ0aW1lU2luY2VMYXN0Q2hhbmdlIiwibmV3UlRUIiwib2xkUnR0IiwiX2xhc3ROZXR3b3JrU3RhdGlzdGljcyIsIm5ld05ldHdvcmtUeXBlIiwib2xkTmV0d29ya1R5cGUiLCJuZXdDYXBhY2l0eSIsIm9sZENhcGFjaXR5IiwiZmxvYXQiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0cmVhbUlkIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJvbkNvbnRpbnVhdGlvbiIsIl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIiLCJwdXNoVGltZVRvRmlyc3RGcmFtZSIsInB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3RpbWVUb0ZpcnN0RnJhbWUiLCJkdXJhdGlvblNpbmNlUGFnZUxvYWQiLCJfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIl92aWRlb1N0YWxsZWQiLCJidWZmZXJlZCIsImJ1ZmZlckxlbmd0aCIsImhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50IiwiZW5kIiwiX2xhc3RQcm9ncmVzcyIsInRpbWVTaW5jZVN0b3AiLCJuZXdSZXNvbHV0aW9uIiwiX3ZpZGVvUmVzb2x1dGlvbiJdLCJzb3VyY2VSb290IjoiIn0=
10311
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQztBQUFDLENBQUM7QUFBQTVwQywySUFBQSxDQUx2UitrQyx5QkFBeUIsa0NBTVc7RUFDckQwRCxJQUFJLEVBQUUsSUFBSW1CLFVBQVUsQ0FBQyxDQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNwQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDeEssSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtFQUFFO0VBQzVEO0VBQU0sSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQUU7RUFDeExsQixHQUFHLEVBQUUsSUFBSWtCLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3pTakIsR0FBRyxFQUFFLElBQUlpQixVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BNLENBQUM7QUFBQTVwQywySUFBQSxDQWRrQitrQyx5QkFBeUIsa0NBZVc7RUFDckQwRCxJQUFJLEVBQUUsSUFBSW1CLFVBQVUsQ0FBQyxDQUNuQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7RUFBRTtFQUNwQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFBRTtFQUMxR2xCLEdBQUcsRUFBRSxJQUFJa0IsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDdlJqQixHQUFHLEVBQUUsSUFBSWlCLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ2hILENBQUM7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O0VBQ1JuTSxZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGVMaXN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL051bWJlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvU3RyaW5ncy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0FwcGVuZGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0NvbnNvbGVBcHBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckRlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nVGhyZXNob2xkLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0ZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1NlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZUhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvU2RwUGFyc2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvVmFuaWxsYVBlZXJDb25uZWN0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvUmVhZE9ubHlTdWJqZWN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9TdWJqZWN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvRW52aXJvbm1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9TREsudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9UZWxlbWV0cnlVcmwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvQ2hhbm5lbFN0YXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY2hhbm5lbHMvQ2hhbm5lbHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L0NoYW5uZWxDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vSW5zZXJ0YWJsZVN0cmVhbXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vRGltZW5zaW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9WaWRlb1RlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9yZWdlbmVyYXRvclJ1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5cbmNvbnN0IGRlZmF1bHREb2N1bWVudEZvY3VzSW50ZXJ2YWxUaW1lb3V0ID0gMzAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNGb3JlZ3JvdW5kOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIF90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U6IG51bWJlciA9IERhdGUubm93KCk7XG4gIHByaXZhdGUgX2RvY3VtZW50Rm9jdXNJbnRlcnZhbDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lzRm9yZWdyb3VuZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kID0gbmV3IFJlYWRPbmx5U3ViamVjdCh0aGlzLl9pc0ZvcmVncm91bmQpO1xuICAgIHRoaXMuZGV0ZWN0VGFiRm9jdXNDaGFuZ2UoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBnZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0VGFiRm9jdXNDaGFuZ2UoKTogdm9pZCB7XG4gICAgbGV0IGhpZGRlbjtcbiAgICBsZXQgdmlzaWJpbGl0eUNoYW5nZTtcblxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBhIGRlZmluaXRpb24gZm9yICdtc0hpZGRlbicgb3IgJ3dlYmtpdEhpZGRlbicgdHlwZXNcbiAgICAvLyBSZXF1aXJlZCB0byBAdHMtaWdub3JlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQgKi9cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudC5tc0hpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGhpZGRlbiA9ICdtc0hpZGRlbic7XG4gICAgICB2aXNpYmlsaXR5Q2hhbmdlID0gJ21zdmlzaWJpbGl0eWNoYW5nZSc7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQud2Via2l0SGlkZGVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaGlkZGVuID0gJ3dlYmtpdEhpZGRlbic7XG4gICAgICB2aXNpYmlsaXR5Q2hhbmdlID0gJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRvY3VtZW50LmhpZGRlbiAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gT3BlcmEgMTIuMTAgYW5kIEZpcmVmb3ggMTggYW5kIGxhdGVyIHN1cHBvcnRcbiAgICAgIGhpZGRlbiA9ICdoaWRkZW4nO1xuICAgICAgdmlzaWJpbGl0eUNoYW5nZSA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQgKi9cblxuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBpc0ZvcmVncm91bmQgPSAhZG9jdW1lbnRbaGlkZGVuXTtcblxuICAgICAgdGhpcy5zZXRGb2N1c1N0YXRlKGlzRm9yZWdyb3VuZCk7XG4gICAgfTtcblxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50W2hpZGRlbl0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2UsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIGZhbHNlKTtcblxuICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCBmYWxzZSk7XG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdGVuRm9yRG9jdW1lbnRGb2N1cy5jYWxsKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yRG9jdW1lbnRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9kb2N1bWVudEZvY3VzSW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3QgaXNGb3JlZ3JvdW5kID0gZG9jdW1lbnQuaGFzRm9jdXMoKTtcblxuICAgICAgdGhpcy5zZXRGb2N1c1N0YXRlKGlzRm9yZWdyb3VuZCk7XG4gICAgfSwgZGVmYXVsdERvY3VtZW50Rm9jdXNJbnRlcnZhbFRpbWVvdXQpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9kb2N1bWVudEZvY3VzSW50ZXJ2YWwpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9kb2N1bWVudEZvY3VzSW50ZXJ2YWwpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9kb2N1bWVudEZvY3VzSW50ZXJ2YWwgPSBudWxsO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNTdGF0ZShpc0ZvcmVncm91bmQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNGb3JlZ3JvdW5kID09PSBpc0ZvcmVncm91bmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSBpc0ZvcmVncm91bmQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG4vLyBUaGlzIGZpbGUgaXMgdXNlZCBvbmx5IGZvciB0aGUgc2lsZW50IGJ1aWxkIHRvIG1vY2sgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBjbGFzc1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgZ2V0U3RyaW5nVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3RyaW5nVmFsdWVbbmFtZV07XG4gIH1cblxuICBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRlZmF1bHRCb29sZWFuVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nOiB0cnVlLFxuICAgICAgJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCc6IHRydWUsXG4gICAgICAncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJzogdHJ1ZVxuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIHtcbiAgc3RhdGljIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICB0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKDEwZSs3KV0pKTsgLy8gMTAwTWIgb3IgbGVzcyBvciBtb3JlIGRlcGVuZGluZyBvbiBhcyB5b3Ugd2lzaCB0byBmb3JjZS9pbnZva2UgR0MgY3ljbGUgcnVuXG4gICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuc3JjKTtcblxuICAgICAgaW1nID0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yWydjb25uZWN0aW9uJ107XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3QodW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWZmZWN0aXZlVHlwZTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3QodW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmF2aWdhdG9yWydjb25uZWN0aW9uJ10uZG93bmxpbmsgfHwgbmF2aWdhdG9yWydjb25uZWN0aW9uJ10uZG93bmxpbmtNYXg7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybiAnVW5rbm93bic7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hdmlnYXRvclsnY29ubmVjdGlvbiddLmVmZmVjdGl2ZVR5cGUgfHwgbmF2aWdhdG9yWydjb25uZWN0aW9uJ10udHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5ydHQ7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuICAgIH07XG5cbiAgICBuYXZpZ2F0b3JbJ2Nvbm5lY3Rpb24nXS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgbmF2aWdhdG9yWydjb25uZWN0aW9uJ10ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGlzdGljcygpOiB2b2lkIHtcbiAgICB0aGlzLl9ydHQudmFsdWUgPSB0aGlzLmdldFJvdW5kVHJpcFRpbWUoKTtcbiAgICB0aGlzLl9lZmZlY3RpdmVUeXBlLnZhbHVlID0gdGhpcy5nZXRFZmZlY3RpdmVUeXBlKCk7XG4gICAgdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkudmFsdWUgPSB0aGlzLmdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5KCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5cbmV4cG9ydCBjbGFzcyBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVNldHVwTGlzdGVuZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRyaWNzU2VydmljZSA9IFNESy5tZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIF9tZXRyaWNTdWJtaXR0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3VjY2VzcyhzdHJlYW1JZCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBFZGdlVG9rZW4gZnJvbSAnLi9FZGdlVG9rZW4nO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5jb25zdCBlZGdlQXV0aFRva2VuUHJlZml4ID0gJ0RJR0VTVDonO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlQXV0aFBhcnNlciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWRnZUF1dGhQYXJzZXInKTtcblxuICBzdGF0aWMgcGFyc2VUb2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IEVkZ2VUb2tlbiB7XG4gICAgaWYgKCF0aGlzLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignVG9rZW4gaXMgbm90IHZhbGlkIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBhdG9iKHRva2VuLnN1YnN0cihlZGdlQXV0aFRva2VuUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gSlNPTi5wYXJzZShkZWNvZGVkVG9rZW4pO1xuXG4gICAgICBlZGdlVG9rZW4udG9rZW4gPSBKU09OLnBhcnNlKGVkZ2VUb2tlbi50b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKGVkZ2VUb2tlbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignQ2Fubm90IHBhcnNlIHRva2VuIHZhbHVlJywgZSk7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRva2VuICYmIHRva2VuLnN0YXJ0c1dpdGgoZWRnZUF1dGhUb2tlblByZWZpeCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmludGVyZmFjZSBJVG9rZW4ge1xuICB1cmk6IFVSTCB8IG51bGw7XG4gIGNhcGFiaWxpdGllczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJRWRnZVRva2VuIHtcbiAgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICB0b2tlbjogSVRva2VuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlVG9rZW4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuOiBJVG9rZW47XG5cbiAgY29uc3RydWN0b3IoZWRnZVRva2VuOiBJRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25JZCA9IGVkZ2VUb2tlbj8uYXBwbGljYXRpb25JZCB8fCAnJztcbiAgICB0aGlzLl90b2tlbiA9IHtcbiAgICAgIHVyaTogZWRnZVRva2VuPy50b2tlbj8udXJpID8gbmV3IFVSTChlZGdlVG9rZW4udG9rZW4udXJpKSA6IG51bGwsXG4gICAgICBjYXBhYmlsaXRpZXM6IGVkZ2VUb2tlbj8udG9rZW4/LmNhcGFiaWxpdGllcyB8fCBbXVxuICAgIH07XG4gIH1cblxuICBnZXQgdXJpKCk6IFVSTCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi51cmk7XG4gIH1cblxuICBnZXQgY2FwYWJpbGl0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4uY2FwYWJpbGl0aWVzO1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25JZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZGVjbGFyZSBjb25zdCBfX0ZFQVRVUkVTX186IHtcbiAgc2VuZExvY2FsQ2FuZGlkYXRlczogYm9vbGVhbjtcbiAgc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHNlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ1RvQ29uc29sZTogTG9nZ2luZ0xldmVsVHlwZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkRmVhdHVyZXMge1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvY2FsQ2FuZGlkYXRlczogYm9vbGVhbjtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ1RvQ29uc29sZTogTG9nZ2luZ0xldmVsVHlwZTtcblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2dzKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9ncztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZE1ldHJpY3MoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZE1ldHJpY3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ1RvQ29uc29sZSgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nVG9Db25zb2xlO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RmVhdHVyZXMoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gX19GRUFUVVJFU19fO1xuXG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gJ3NlbmRMb2NhbENhbmRpZGF0ZXMnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyA6IHRydWU7XG4gICAgICB0aGlzLl9zZW5kTG9ncyA9ICdzZW5kTG9ncycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9ncyA6ICdBbGwnO1xuICAgICAgdGhpcy5fc2VuZE1ldHJpY3MgPSAnc2VuZE1ldHJpY3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZE1ldHJpY3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZSA9ICdsb2dUb0NvbnNvbGUnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMubG9nVG9Db25zb2xlIDogJ0FsbCc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9IHRydWU7XG4gICAgICB0aGlzLl9zZW5kTG9ncyA9ICdBbGwnO1xuICAgICAgdGhpcy5fc2VuZE1ldHJpY3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX2xvZ1RvQ29uc29sZSA9ICdBbGwnO1xuICAgIH1cbiAgfVxufVxuXG5CdWlsZEZlYXR1cmVzLmFwcGx5RmVhdHVyZXMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBkb2N1bWVudD8uY3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA3MSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0eXBlb2YgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yID09PSAndW5kZWZpbmVkJyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBSVENSdHBSZWNlaXZlci5wcm90b3R5cGUuY3JlYXRlRW5jb2RlZFN0cmVhbXMgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdTYWZhcmknO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGU6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoZGlzcG9zYWJsZTogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGU7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLl9kaXNwb3NhYmxlLmNhbGwodGhpcyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbi8vIEFzIGZsb2F0IGluIEVDTUFTY3JpcHQgdXNlIDY0LWJpdCBmb3JtYXQgaXQgY2Fubm90IGhhdmUvaGFuZGxlIG1vcmUgdGhhbiAxNSBzeW1ib2xzIGFmdGVyIGRvdC5cbmNvbnN0IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCA9IDE1O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOdW1iZXJzIHtcbiAgc3RhdGljIGNvdW50TnVtYmVyTGVuZ3RoKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlID0gMDtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgbnVtYmVyICo9IC0xO1xuICAgICAgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSsrO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXJzLmNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbChudW1iZXIpICsgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSArIChudW1iZXIgIT09IE1hdGguZmxvb3IobnVtYmVyKSA/IE51bWJlcnMuY291bnREaWdpdHNBZnRlckRlY2ltYWwobnVtYmVyKSArIDEgOiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpeFJvdW5kaW5nKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwb3dlciA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuXG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBwb3dlcikgLyBwb3dlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgZGlnaXRzQmVmb3JlRGVjaW1hbCA9IDE7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTA7XG4gICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZ2l0c0JlZm9yZURlY2ltYWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgbGV0IG1vZGlmaWVkVmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgd2hpbGUgKG1vZGlmaWVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUgJiYgY291bnQgPCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgICBtb2RpZmllZFZhbHVlID0gTnVtYmVycy5maXhSb3VuZGluZyhvcmlnaW5hbFZhbHVlLCBjb3VudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWJlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdzIHtcbiAgc3RhdGljIHJhbmRvbShsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZG9tMTNDaGFyYWN0ZXJzID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIsIDE1KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9vcHM6IG51bWJlciA9IE1hdGguY2VpbChsZW5ndGggLyAxMyk7XG5cbiAgICByZXR1cm4gbmV3IEFycmF5KGxvb3BzKS5maWxsKHJhbmRvbTEzQ2hhcmFjdGVycykucmVkdWNlKChzdHJpbmcsIGZ1bmMpID0+IHtcbiAgICAgIHJldHVybiBzdHJpbmcgKyBmdW5jKCk7XG4gICAgfSwgJycpLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZ3MgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBlbmRlcnMge1xuICBwcml2YXRlIF9hcHBlbmRlcnM6IEFycmF5PElBcHBlbmRlcj4gPSBbXTtcblxuICBnZXQgdmFsdWUoKTogQXJyYXk8SUFwcGVuZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGFkZChhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLnB1c2goYXBwZW5kZXIpO1xuICB9XG5cbiAgcmVtb3ZlKGFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZW51bSBMb2dnaW5nTGV2ZWwge1xuICBBbGwgPSAtMSxcbiAgVHJhY2UgPSAxMCxcbiAgRGVidWcgPSAyMCxcbiAgSW5mbyA9IDMwLFxuICBXYXJuID0gNDAsXG4gIEVycm9yID0gNTAsXG4gIEZhdGFsID0gNjAsXG4gIE9mZiA9IDEwMCxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2luZ0xldmVsVHlwZSA9ICdPZmYnIHwgJ1RyYWNlJyB8ICdEZWJ1ZycgfCAnSW5mbycgfCAnV2FybicgfCAnRXJyb3InIHwgJ0ZhdGFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYXRlZ29yeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBlbmRlcnM6IEFwcGVuZGVycztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkO1xuXG4gIGdldCBjYXRlZ29yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeTtcbiAgfVxuXG4gIGdldCBhcHBlbmRlcnMoKTogQXBwZW5kZXJzIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nVGhyZXNob2xkIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgdHJhY2UoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLlRyYWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLlRyYWNlLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5EZWJ1ZywgYXJncyk7XG4gIH1cblxuICBpbmZvKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkluZm8sIGFyZ3MpO1xuICB9XG5cbiAgd2FybiguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5XYXJuLCBhcmdzKTtcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5FcnJvciwgYXJncyk7XG4gIH1cblxuICBmYXRhbCguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRmF0YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRmF0YWwsIGFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IG51bWJlciwgYXJnczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzKTtcblxuICAgIHRoaXMuX2FwcGVuZGVycy52YWx1ZS5mb3JFYWNoKChhcHBlbmRlcjogSUFwcGVuZGVyKSA9PiB7XG4gICAgICBhcHBlbmRlci5sb2cobGV2ZWwsIG1lc3NhZ2UsIHRoaXMuY2F0ZWdvcnksIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3M6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSBhcmdzWzBdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAocmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mICYmIGFyZ3MubGVuZ3RoID4gMSAmJiBpbmRleCA+PSAwKSB7XG4gICAgICBpbmRleCA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZignJScsIGluZGV4KTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBjb25zdCB0eXBlID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxLCBpbmRleCArIDIpO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgLy8gRXNjYXBlZCAnJSUnIHR1cm5zIGludG8gJyUnXG4gICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnJWQnIG9yICclcycgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMudG9TdHJpbmcoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAlaicgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgYXJncyA9IGFyZ3MucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gYXJyYXkubGVuZ3RoICYmIGN1cnJlbnRWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLm1lc3NhZ2UpICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyBgWyR7dGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUpfV1gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5KGFyZzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjYWNoZSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICc8cmVjdXJzaXZlPic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlLnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ1tvYmplY3QgaW52YWxpZCBKU09OLnN0cmluZ2lmeV0nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUFyZ3VtZW50KGFyZ3VtZW50OiBhbnksIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmc6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHRoaXMudG9TdHJpbmcoYXJndW1lbnQpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TdHJpbmcoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IHRvU3RyaW5nU3RyID0gJyc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9ICdbb2JqZWN0IGludmFsaWQgdG9TdHJpbmcoKV0nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvU3RyaW5nU3RyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2F0ZWdvcnk6IHN0cmluZywgYXBwZW5kZXJzOiBBcHBlbmRlcnMsIHRocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCkge1xuICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gYXBwZW5kZXJzO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyLCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4vQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQge0lDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyfSBmcm9tICcuLi9kb20vSUNvbmZpZ3VyYXRpb25QYXJhbWF0ZXJSZWFkZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXI6IElDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyID0gbmV3IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcnM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IElMb2dnZXJ9ID0ge307XG4gIHByaXZhdGUgc3RhdGljIF9hcHBlbmRlcnM6IEFwcGVuZGVycyA9IG5ldyBBcHBlbmRlcnMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCA9IG5ldyBMb2dnaW5nVGhyZXNob2xkKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uID0gbmV3IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9nZ2VyKGNhdGVnb3J5OiBzdHJpbmcpOiBJTG9nZ2VyIHtcbiAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY2F0ZWdvcnkgPSAnU0RLJztcbiAgICB9XG5cbiAgICBjb25zdCBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldID0gbmV3IExvZ2dlcihjYXRlZ29yeSwgdGhpcy5fYXBwZW5kZXJzLCB0aGlzLl90aHJlc2hvbGQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dpbmdMZXZlbCgpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgnY29uc29sZScsIExvZ2dlckZhY3RvcnkuYXBwbHlDb25zb2xlTG9nZ2VyLmJpbmQodGhpcykpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgndGVsZW1ldHJ5JywgTG9nZ2VyRmFjdG9yeS5hcHBseVRlbGVtZXRyeUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5TG9nZ2luZ0xldmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWxvZ2dpbmctbGV2ZWwnKTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApO1xuXG4gICAgaWYgKHBhcmFtZXRlclZhbHVlID09PSAnT2ZmJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFwcGx5QXBwZW5kZXIoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUNvbnNvbGVMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlUZWxlbWV0cnlMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gbGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMb2dnZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5Mb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShsb2dnaW5nTGV2ZWw6IExvZ2dpbmdMZXZlbCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsKSB7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLlRyYWNlOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkRlYnVnOlxuICAgICAgICByZXR1cm4gJ0RlYnVnJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkluZm86XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljVHlwZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3M6IE1ldHJpY3NUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3M6IE1ldHJpY3NUeXBlKSB7XG4gICAgdGhpcy5fbWV0cmljcyA9IG1ldHJpY3M7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1ldHJpY3NUeXBlW3RoaXMuX21ldHJpY3NdO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGhpcy5fbWV0cmljcykge1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TdGFsbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5CdWZmZXJpbmc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9tZXRyaWNzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4vVGVsZW1ldHJ5RGVmYXVsdCc7XG5cbmV4cG9ydCBlbnVtIFRlbGVtZXRyeUxldmVsIHtcbiAgT2ZmID0gMTAwLFxuICBFc3NlbnRpYWwgPSAxMCxcbiAgQWxsID0gLTFcbn1cblxuZXhwb3J0IHR5cGUgVGVsZW1ldHJ5TGV2ZWxUeXBlID0gJ09mZicgfCAnRXNzZW50aWFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9tZXRyaWNzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCA9IFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IG1ldHJpY3NVcmwgPSBuZXcgVVJMKHVybCk7XG5cbiAgICBtZXRyaWNzVXJsLnBhdGhuYW1lID0gbWV0cmljc1VybC5wYXRobmFtZSArICcvbWV0cmljcyc7XG5cbiAgICB0aGlzLl91cmwgPSBtZXRyaWNzVXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4uL3Nkay9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uL3Nkay9FbnZpcm9ubWVudCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4vVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlczoge1tjYXRlZ29yeTogc3RyaW5nXTogTWV0cmljc1NlcnZpY2V9ID0ge307XG5cbiAgc3RhdGljIGdldE1ldHJpY3NTZXJ2aWNlKHVybDogc3RyaW5nKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1cicpO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMpIHtcbiAgICAgIHJldHVybiBtZXRyaWNzU2VydmljZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBuZXcgTWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh1cmwpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKFNESy50ZWxlbWV0cnlMZXZlbCk7XG5cbiAgICByZXR1cm4gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdID0gbmV3IE1ldHJpY3NTZXJ2aWNlKG1ldHJpY3NDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBzZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBPYmplY3QudmFsdWVzKE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXMpO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcyAmJiBtZXRyaWNzU2VydmljZXMubGVuZ3RoKSB7XG4gICAgICBtZXRyaWNzU2VydmljZXMuZm9yRWFjaChtZXRyaWNzU2VydmljZSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gdGVsZW1ldHJ5TGV2ZWw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuL01ldHJpY1R5cGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4vTWV0cmljc1R5cGUnO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gMTAyNDtcbmNvbnN0IG1heEJ1ZmZlcmVkUmVjb3JkcyA9IDIwNDg7XG5cbmludGVyZmFjZSBJVmFsdWUge1xuICBzdHJpbmc/OiBzdHJpbmc7XG4gIHVpbnQ2ND86IG51bWJlcjtcbiAgZmxvYXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBJTWV0cmljUmVjb3JkIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZTogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlOiBJVmFsdWU7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNZXRyaWMge1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljVHlwZTogTWV0cmljc1R5cGU7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRyaWNzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdNZXRyaWNzU2VydmljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIF9tZXRyaWNzOiBBcnJheTxJTWV0cmljUmVjb3JkPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgX2ZhaWx1cmVDb3VudCA9IDA7XG4gIHByaXZhdGUgX2RvbWFpbiA9IGxvY2F0aW9uLmhvc3RuYW1lO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICB9XG5cbiAgZ2V0IG1ldHJpY3NDb25maWd1cmF0aW9uKCk6IE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKG1ldHJpYzogSU1ldHJpYyk6IHZvaWQge1xuICAgIGNvbnN0IHtzdHJlYW1JZCwgdmFsdWUsIHByZXZpb3VzVmFsdWUsIHJ1bnRpbWUsIHJlc291cmNlLCBraW5kfSA9IG1ldHJpYztcbiAgICBjb25zdCBtZXRyaWNUeXBlID0gbmV3IE1ldHJpY1R5cGUobWV0cmljLm1ldHJpY1R5cGUpO1xuXG4gICAgaWYgKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA+IG1ldHJpY1R5cGUuZ2V0VGVsZW1ldHJ5TGV2ZWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWM6IG1ldHJpY1R5cGUuZ2V0TmFtZSgpLFxuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBydW50aW1lLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBraW5kXG4gICAgfTtcblxuICAgIHRoaXMuX21ldHJpY3MucHVzaChtZXRyaWNSZWNvcmQpO1xuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzOiBBcnJheTxJTWV0cmljUmVjb3JkPik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBtZXRyaWNzTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgZmV0Y2godGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG1ldHJpY3NNZXNzYWdlcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UoMCwgcmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICB0aGlzLl9tZXRyaWNzID0gdGhpcy5fbWV0cmljcy5zbGljZShyZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZShyZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IG1heEJ1ZmZlcmVkUmVjb3Jkcykge1xuICAgICAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCsrO1xuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9tZXRyaWNzID0gWy4uLm1ldHJpY3NNZXNzYWdlcywgLi4udGhpcy5fbWV0cmljc107XG5cbiAgICAgICAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgICAgICAgIH0sIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2ZhaWx1cmVDb3VudCkpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUb28gbWFueSBjYWNoZWQgbWV0cmljIHJlY29yZHMgWyVzXSwgZHJvcHBpbmcgWyVzXSByZWNvcmRzJywgdGhpcy5fbWV0cmljcy5sZW5ndGgsIG1ldHJpY3NNZXNzYWdlcy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2ZhaWx1cmVDb3VudCA9IDA7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUoe3N0YXR1c306IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eNVxcZHsyfSQvLnRlc3Qoc3RhdHVzLnRvU3RyaW5nKCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5lbnVtIE1ldHJpY3NUeXBlIHtcbiAgVGltZVRvRmlyc3RGcmFtZSxcbiAgQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgU3RhbGxlZCxcbiAgQnVmZmVyaW5nLFxuICBTZXR1cENvbXBsZXRlZCxcbiAgU2V0dXBGYWlsZWQsXG4gIFJvdW5kVHJpcFRpbWUsXG4gIERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICBOZXR3b3JrVHlwZSxcbiAgUmVzb2x1dGlvbkNoYW5nZWQsXG4gIEFwcGxpY2F0aW9uRm9yZWdyb3VuZCxcbiAgQXBwbGljYXRpb25CYWNrZ3JvdW5kXG59XG5cbmV4cG9ydCBkZWZhdWx0IE1ldHJpY3NUeXBlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbCkge1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsOlxuICAgICAgICByZXR1cm4gJ0Vzc2VudGlhbCc7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbFR5cGU6IFRlbGVtZXRyeUxldmVsVHlwZSk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsVHlwZSkge1xuICAgICAgY2FzZSAnT2ZmJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLk9mZjtcbiAgICAgIGNhc2UgJ0Vzc2VudGlhbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGVsZW1ldHJ5TGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeURlZmF1bHQge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsW0J1aWxkRmVhdHVyZXMuc2VuZE1ldHJpY3NdO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgUHJvbWlzZUhhbmRsZXIgZnJvbSAnLi9Qcm9taXNlSGFuZGxlcic7XG5cbmNsYXNzIFByb21pc2Uge1xuICBfc3RhdGU6IG51bWJlcjtcbiAgX2hhbmRsZWQ6IGJvb2xlYW47XG4gIF92YWx1ZTogUHJvbWlzZTtcbiAgX2RlZmVycmVkczogQXJyYXk8UHJvbWlzZUhhbmRsZXI+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgdGhlbihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogUHJvbWlzZSB8IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoY2FsbGJhY2spIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAwO1xuICAgIHRoaXMuX2hhbmRsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl92YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9kZWZlcnJlZHMgPSBbXTtcblxuICAgIHRoaXMuZG9SZXNvbHZlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGRvUmVzb2x2ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBsZXQgZG9uZSA9IGZhbHNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNhbGxiYWNrKFxuICAgICAgICB2YWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVhc29uID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlamVjdChyZWFzb24pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVzb2x2ZShuZXdWYWx1ZTogUHJvbWlzZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUHJvbWlzZSBSZXNvbHV0aW9uIFByb2NlZHVyZTogaHR0cHM6Ly9naXRodWIuY29tL1Byb21pc2VzLWFwbHVzL1Byb21pc2VzLXNwZWMjdGhlLVByb21pc2UtcmVzb2x1dGlvbi1wcm9jZWR1cmVcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJvbWlzZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIFByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXQgc2VsZi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1ZhbHVlICYmICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgY29uc3QgdGhlbiA9IG5ld1ZhbHVlLnRoZW47XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHByb21pc2UuX3N0YXRlID0gMztcbiAgICAgICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgIHByb21pc2UuZmluYWxlKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBwcm9taXNlLmRvUmVzb2x2ZShmdW5jdGlvbigpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICAgICAgICAgIHRoZW4uYXBwbHkobmV3VmFsdWUsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJvbWlzZS5fc3RhdGUgPSAxO1xuICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHByb21pc2UuZmluYWxlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZWplY3QobmV3VmFsdWU6IFByb21pc2UgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9IDI7XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLmZpbmFsZSgpO1xuICB9XG5cbiAgZmluYWxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gMiAmJiB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2hhbmRsZWQpIHtcbiAgICAgICAgICBQcm9taXNlLl91bmhhbmRsZWRSZWplY3Rpb24odGhpcy5fdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5fZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB0aGlzLmhhbmRsZSh0aGlzLl9kZWZlcnJlZHNbaV0pO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmVycmVkcyA9IG51bGw7XG4gIH1cblxuICBoYW5kbGUoZGVmZXJyZWQ6IFByb21pc2VIYW5kbGVyKTogdm9pZCB7XG4gICAgbGV0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U7XG5cbiAgICB3aGlsZSAocHJvbWlzZS5fc3RhdGUgPT09IDMpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLl92YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDApIHtcbiAgICAgIHByb21pc2UuX2RlZmVycmVkcy5wdXNoKGRlZmVycmVkKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb21pc2UuX2hhbmRsZWQgPSB0cnVlO1xuICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IHByb21pc2UuX3N0YXRlID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xuXG4gICAgICBpZiAoY2FsbGJhY2sgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAxKSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2socHJvbWlzZS5fdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHJlc3VsdCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYWxsKGFycjogQXJyYXk8UHJvbWlzZT4pOiBQcm9taXNlIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLmFsbCBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKTtcblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuICAgICAgY29uc3QgbWFuYWdlUmVzcG9uc2UgPSAoaSwgdmFsdWUpOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgY29uc3QgdGhlbiA9IHZhbHVlLnRoZW47XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGVuLmNhbGwoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgdmFsdWUgPT4gbWFuYWdlUmVzcG9uc2UoaSwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhcmdzW2ldID0gdmFsdWU7XG5cbiAgICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYW5hZ2VSZXNwb25zZShpLCBhcmdzW2ldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlKHZhbHVlKTogUHJvbWlzZSB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IFByb21pc2UpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmVqZWN0KHZhbHVlKTogUHJvbWlzZSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHJlamVjdCh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJhY2UoYXJyOiBBcnJheTxQcm9taXNlPik6IFByb21pc2Uge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UucmFjZSBhY2NlcHRzIGFuIGFycmF5JykpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZShhcnJbaV0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBfaW1tZWRpYXRlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGlnbm9yZWQgPSBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTtcbiAgfVxuXG4gIHN0YXRpYyBfdW5oYW5kbGVkUmVqZWN0aW9uKGVycm9yKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjonLCBlcnJvcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIH1cbiAgfVxufVxuXG5Qcm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uKG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uKTogUHJvbWlzZSB8IHZvaWQge1xuICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGVbJ3RoZW4nXSA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlIHwgdm9pZCB7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcigoKSA9PiBudWxsKTtcblxuICB0aGlzLmhhbmRsZShuZXcgUHJvbWlzZUhhbmRsZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHByb21pc2UpKTtcblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG5cblByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10gPSBmdW5jdGlvbihjYWxsYmFjazogRnVuY3Rpb24pOiBQcm9taXNlIHwgdm9pZCB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICByZXR1cm4gdGhpcy50aGVuKFxuICAgIHZhbHVlID0+IGNvbnN0cnVjdG9yLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiB2YWx1ZSksXG4gICAgcmVhc29uID0+IGNvbnN0cnVjdG9yLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiBjb25zdHJ1Y3Rvci5yZWplY3QocmVhc29uKSlcbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21pc2U7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgUHJvbWlzZSBmcm9tICcuL1Byb21pc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9taXNlSGFuZGxlciB7XG4gIG9uRnVsZmlsbGVkOiBGdW5jdGlvbjtcbiAgb25SZWplY3RlZDogRnVuY3Rpb247XG4gIHByb21pc2U6IFByb21pc2U7XG5cbiAgY29uc3RydWN0b3Iob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHByb21pc2UpIHtcbiAgICB0aGlzLm9uRnVsZmlsbGVkID0gdHlwZW9mIG9uRnVsZmlsbGVkID09PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiBudWxsO1xuICAgIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcj86IFJUQ1J0cFRyYW5zY2VpdmVyO1xuICB2aWRlb1RyYW5zY2VpdmVyPzogUlRDUnRwVHJhbnNjZWl2ZXI7XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUGVlckNvbm5lY3Rpb25TZXJ2aWNlJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSgpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlZDoge1xuICAgIGRpcmVjdGlvbj86IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uO1xuICAgIHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD47XG4gIH07XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IGZhbHNlKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+IHtcbiAgICBpZiAoUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgJiYgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQuZGlyZWN0aW9uID09PSBkaXJlY3Rpb24gJiYgIWVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcykge1xuICAgICAgY29uc3QgdmFsdWUgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5wZWVyQ29ubmVjdGlvbjtcblxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiA9IEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkID8ge2VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc30gOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbilcbiAgICAgIC50aGVuKGFzeW5jIHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydHNBZGRUcmFuc2NlaXZlciA9IHBlZXJDb25uZWN0aW9uLnN1cHBvcnRzQWRkVHJhbnNjZWl2ZXI7XG4gICAgICAgIGxldCB2aWRlb1RyYW5zY2VpdmVyLCBhdWRpb1RyYW5zY2VpdmVyO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgYXVkaW9UcmFuc2NlaXZlciA9IHBlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycsIHtkaXJlY3Rpb259KTtcbiAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJywge2RpcmVjdGlvbn0pO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXIsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVyLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMjsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCB1cmwgPSBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF07XG5cbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIHVybHMucHVzaChjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJsc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJ0Y1N0YXRpc3RpYyB7XG4gIHNzcmM/OiBzdHJpbmc7XG4gIG1lZGlhVHlwZT86IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGJpdHJhdGU/OiBudW1iZXI7XG4gIGJ5dGVzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGZyYW1lc0RlY29kZWQ/OiBudW1iZXI7XG4gIHBhY2tldHNMb3N0PzogbnVtYmVyO1xuICBwYWNrZXRzUmVjZWl2ZWQ/OiBudW1iZXI7XG4gIGNvZGVjPzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU/OiBudW1iZXI7XG4gIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcD86IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+ID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+KHt9KTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbjtcbiAgcHJpdmF0ZSBfaXNNb25pdG9yUnVubmluZyA9IHRydWU7XG4gIHByaXZhdGUgX3VwZGF0ZVRpbWVvdXQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdHJhY2tzVG9Nb25pdG9yOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0sIGVzdGltYXRlZFJvdW5kVHJpcFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgdGhpcy5fdHJhY2tzVG9Nb25pdG9yID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkubWFwKHRyYWNrID0+IHRyYWNrLmtpbmQpIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmdldEN1cnJlbnRPZmZlckRpc2FibGVkKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFNEUCA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyA9IHBhcnNlZFNEUC5hdWRpb0NvZGVjO1xuICAgICAgICB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjID0gcGFyc2VkU0RQLnZpZGVvQ29kZWM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IGF3YWl0IHRoaXMudXBkYXRlU3RhdGlzdGljTGVnYWN5KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtKTogc3RyaW5nID0+IGl0ZW0uaWQuaW5jbHVkZXMoJ0F1ZGlvJykgPyAnYXVkaW8nIDogaXRlbS5pZC5pbmNsdWRlcygnVmlkZW8nKSA/ICd2aWRlbycgOiAnJztcbiAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMobnVsbClcbiAgICAgIC50aGVuKHN0YXRzID0+IHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgbGV0IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcblxuICAgICAgICAgIHN0YXRzLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgIGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10pIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnaW5ib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGtpbmQgPSByZXBvcnQua2luZCB8fCByZXBvcnQubWVkaWFUeXBlIHx8IGdldEtpbmRGb3JTYWZhcmkxMShyZXBvcnQpO1xuICAgICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSByZXBvcnQuY29kZWNJZCkge1xuICAgICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fdHJhY2tzVG9Nb25pdG9yLmluY2x1ZGVzKGtpbmQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNSZWNlaXZlZCB8fCAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNSZWNlaXZlZCA9IHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy5ieXRlc1JlY2VpdmVkID8/IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYnl0ZXNEZWx0YSA9IGJ5dGVzIC0gcHJldmlvdXNCeXRlc1JlY2VpdmVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVEZWx0YSA9IHJlcG9ydC50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8udGltZXN0YW1wO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXSA9IHtcbiAgICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiByZXBvcnQudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IHJlcG9ydC5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgcGFja2V0c0xvc3Q6IHJlcG9ydC5wYWNrZXRzTG9zdCxcbiAgICAgICAgICAgICAgICAgIHBhY2tldHNSZWNlaXZlZDogcmVwb3J0LnBhY2tldHNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgICAgcm91bmRUcmlwVGltZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlbykge1xuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LmZyYW1lc0RlY29kZWQ7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZwcyA9IChyZXBvcnQuZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZ25vcmVkID0gYXdhaXQgdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHNMZWdhY3koKS50aGVuKHN0YXRzID0+IHtcbiAgICAgIGNvbnN0IHJ0Y1N0YXRpc3RpY3M6IElSdGNNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICBsZXQgcm91bmRUcmlwVGltZSA9IHRoaXMuX2VzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICAgIHN0YXRzLnJlc3VsdCgpLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgcmVwb3J0Lm5hbWVzKCkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ2dvb2dSVFQnKSB7XG4gICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LnN0YXQobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdzc3JjJykge1xuICAgICAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IHJlcG9ydC5zdGF0KCdtZWRpYVR5cGUnKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdID0ge3RpbWVzdGFtcDogRGF0ZS5ub3coKX07XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydzc3JjJ10gPSByZXBvcnQuc3RhdCgnc3NyYycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydtZWRpYVR5cGUnXSA9IG1lZGlhVHlwZTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2J5dGVzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdieXRlc1JlY2VpdmVkJyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzTG9zdCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNMb3N0Jyk7XG4gICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzUmVjZWl2ZWQnXSA9IHJlcG9ydC5zdGF0KCdwYWNrZXRzUmVjZWl2ZWQnKTtcbiAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ2NvZGVjJ10gPSByZXBvcnQuc3RhdCgnZ29vZ0NvZGVjTmFtZScpLnRvU3RyaW5nKCkgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShtZWRpYVR5cGUpO1xuICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncm91bmRUcmlwVGltZSddID0gcm91bmRUcmlwVGltZTtcblxuICAgICAgICAgIGlmIChtZWRpYVR5cGUgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlICYmIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlbykge1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcmFtZXNEZWNvZGVkJ10gPSByZXBvcnQuc3RhdCgnZnJhbWVzRGVjb2RlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcHMnXSA9IChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0uZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0udGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLnRpbWVzdGFtcCkgKlxuICAgICAgICAgICAgMTAwMCB8fCAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZHBQYXJzZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZHA6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzQXVkaW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVmlkZW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2RwOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZHAgPSBzZHA7XG5cbiAgICBjb25zdCBzZHBTcGxpdEJ5TGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoLyhcXHJcXG58XFxyfFxcbikvKTtcbiAgICBjb25zdCBzZHBTcGxpdEJ5VHJhY2tzID0gdGhpcy5fc2RwLnNwbGl0KC8oPzpefFtcXHJcXG5dKW09Lyk7XG5cbiAgICB0aGlzLl9hdWRpb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCdhdWRpbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5fdmlkZW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygndmlkZW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCdhdWRpbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICAgIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCd2aWRlbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICB9XG5cbiAgZ2V0IGF1ZGlvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9Db2RlYztcbiAgfVxuXG4gIGdldCB2aWRlb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvQ29kZWM7XG4gIH1cblxuICBnZXQgaXNBdWRpb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1ZpZGVvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyYWNrQnlUeXBlRW5hYmxlZCh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlUcmFja3M6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2RwU2VjdGlvbkZvclR5cGUgPSBzZHBTcGxpdEJ5VHJhY2tzLmZpbmQoc2RwVHJhY2sgPT4gc2RwVHJhY2suc3RhcnRzV2l0aCh0eXBlKSk7XG5cbiAgICBpZiAoIXNkcFNlY3Rpb25Gb3JUeXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICFzZHBTZWN0aW9uRm9yVHlwZS5pbmNsdWRlcyhgYT1pbmFjdGl2ZWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvZGVjKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeUxpbmVzOiBzdHJpbmcgW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7c2RwU3BsaXRCeUxpbmVzLmZpbmQoaSA9PiBpLmluY2x1ZGVzKGBtPSR7dHlwZX1gKSkuc3BsaXQoJyAnKVszXX1gKSk7XG4gICAgY29uc3QgdXNlZENvZGVjID0gdXNlZENvZGVjTGluZS5zcGxpdCgnICcpWzFdO1xuICAgIGNvbnN0IGNvZGVjTmFtZSA9IHVzZWRDb2RlYy5zcGxpdCgnLycpWzBdO1xuXG4gICAgcmV0dXJuIGNvZGVjTmFtZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiwge1BlZXJDb25uZWN0aW9uRXZlbnRzfSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQud2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBnZXQgbmF0aXZlKCk6IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBjb25uZWN0aW9uU3RhdGUoKTogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNvbm5lY3Rpb25TdGF0ZTtcbiAgfVxuXG4gIGdldCBpY2VDb25uZWN0aW9uU3RhdGUoKTogUlRDSWNlQ29ubmVjdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlciA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9mZmVyKG9wdGlvbnM/OiBSVENPZmZlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlQW5zd2VyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U2VuZGVycygpO1xuICB9XG5cbiAgZ2V0UmVjZWl2ZXJzKCk6IFJUQ1J0cFJlY2VpdmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgfVxuXG4gIGdldFN0YXRzKHNlbGVjdG9yPzogTWVkaWFTdHJlYW1UcmFjayB8IG51bGwpOiBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgLy8gSWdub3JlZCBkdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGxlZ2FjeSAnZ2V0U3RhdHMnIG1ldGhvZCB0eXBlIGRlZmluaXRpb25cbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSAnZ2V0U3RhdHMnIG1ldGhvZCBmb3JcbiAgICAgIC8vIENocm9tZUA8PSA2NiBkZXRhaWxlZCBoZXJlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02Mjc4MTZcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMocmVzb2x2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyKHR5cGU6IFBlZXJDb25uZWN0aW9uRXZlbnRzLCBsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lck9yRXZlbnRMaXN0ZW5lck9iamVjdCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlOiBQZWVyQ29ubmVjdGlvbkV2ZW50cywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3QsIG9wdGlvbnM/OiBib29sZWFuIHwgRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFRyYW5zY2VpdmVyKG5hbWU6IHN0cmluZywgb3B0aW9uczogUlRDUnRwVHJhbnNjZWl2ZXJJbml0KTogUlRDUnRwVHJhbnNjZWl2ZXIge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKHRyYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ3VyYXRpb24oKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjayA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb250cmFjaygpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjaztcbiAgfVxuXG4gIHNldCBvbmljZWNhbmRpZGF0ZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZTtcbiAgfVxuXG4gIHNldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIHNldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldjogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IHtcbiAgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiBuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAoVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmNsYXNzIERpc3Bvc2FibGVMaXN0ZW5lcjxUPiBleHRlbmRzIERpc3Bvc2FibGUge1xuICBjb25zdHJ1Y3RvcihsaXN0ZW5lcnM6IEFycmF5PFQ+LCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiBBcnJheTwoVCkgPT4gdm9pZD47XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICB0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAoVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwoVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBVUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCB7SUNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXJ9IGZyb20gJy4uL2RvbS9JQ29uZmlndXJhdGlvblBhcmFtYXRlclJlYWRlcic7XG5pbXBvcnQgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgZnJvbSAnLi4vZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4uL3J0Yy9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4vVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL0Vudmlyb25tZW50JztcbmltcG9ydCB7SGxzUGxheWVyVHlwZSwgU2hha2FUeXBlLCBXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9TdHJlYW1UeXBlcyc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSB3aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgd2luZG93WydfX3BhZ2VMb2FkVGltZSddIHx8IERhdGUubm93KCk7XG5cbmludGVyZmFjZSBJSW5pdE9wdGlvbnMge1xuICBkaXNjb3ZlcnlVcmk/OiBzdHJpbmc7XG4gIHBlZXJDb25uZWN0aW9uRmFjdG9yeT86IElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIHRlbGVtZXRyeUxldmVsPzogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBjb25zb2xlTG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbT86IGJvb2xlYW47XG4gIGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlPzogYm9vbGVhbjtcbiAgd2ViUGxheWVyTG9hZGVyPzogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZDtcbiAgc2hha2FQbGF5ZXJMb2FkZXI/OiAocGxheWVyOiBTaGFrYVR5cGUpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXIgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfc2hha2FQbGF5ZXJMb2FkZXIgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfaGxzSnNMb2FkZXIgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcjogSUNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgPSBuZXcgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcigpO1xuICBwcml2YXRlIHN0YXRpYyBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAoV2ViUGxheWVyVHlwZSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dlYlBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hha2FQbGF5ZXJMb2FkZXIoKTogKFNoYWthVHlwZSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBobHNKc0xvYWRlcigpOiAoSGxzUGxheWVyVHlwZSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeVVybCgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZWxlbWV0cnlVcmw7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cztcbiAgfVxuXG4gIHN0YXRpYyBzZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyhyZXRyaWVzQW1vdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gcmV0cmllc0Ftb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUodGhpcy5fbG9nZ2VyLnRocmVzaG9sZC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3NlckRldGVjdG9yKCk6IEJyb3dzZXJEZXRlY3RvciB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IExvZ2dlckZhY3RvcnkudGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSA9IFNESy5wYWdlTG9hZFRpbWU7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgVVJMIHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyICYmIHRlbmFuY3kpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgdGVuYW5jeSB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKERpc2NvdmVyeVVyaS51cmkudmFsdWUpO1xuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBTREsuX21ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbWV0cmljcy1sZXZlbCcpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbChUZWxlbWV0cnlMZXZlbFt2YWx1ZV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWRUZWxlbWV0cnlMZXZlbCA9IFNESy5fdGVsZW1ldHJ5TGV2ZWwuc3Vic2NyaWJlKHRlbGVtZXRyeUxldmVsID0+IHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSB0aGlzLl9jb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuZGlzY292ZXJ5VXJpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsudGVsZW1ldHJ5VXJsLnZhbHVlID0gU0RLLmdldFRlbGVtZXRyeVVybCh2YWx1ZSk7XG4gICAgICBTREsuX2Vudmlyb25tZW50LnZhbHVlID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxUb2tlbiA9IHRoaXMuX2NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1jaGFubmVsLXRva2VuJyk7XG5cbiAgICBpZiAoY2hhbm5lbFRva2VuKSB7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKGNoYW5uZWxUb2tlbik7XG5cbiAgICAgIFNESy5fdGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5O1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaVZhbHVlID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LXVyaScpO1xuXG4gICAgaWYgKHVyaVZhbHVlKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpVmFsdWU7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVSSVZhbHVlID0gdGhpcy5fY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWJhc2UtdXJpJyk7XG5cbiAgICBpZiAoYmFzZVVSSVZhbHVlKSB7XG4gICAgICBjb25zdCB1cmkgPSBuZXcgVVJMKGJhc2VVUklWYWx1ZSk7XG5cbiAgICAgIHVyaS5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LWJhc2UtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpbml0KG9wdGlvbnM/OiBJSW5pdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG5ldyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICBpZiAob3B0aW9ucy5kaXNjb3ZlcnlVcmkpIHtcbiAgICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IG9wdGlvbnMuZGlzY292ZXJ5VXJpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpIHtcbiAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZSA9IG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCAmJiBUZWxlbWV0cnlMZXZlbFtvcHRpb25zLnRlbGVtZXRyeUxldmVsXSkge1xuICAgICAgICBTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5sb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMubG9nZ2luZ0xldmVsXSkge1xuICAgICAgICB0aGlzLl9sb2dnZXIudGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5sb2dnaW5nTGV2ZWwpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAmJlxuICAgICAgICBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsXSkge1xuICAgICAgICBjb25zdCBjb25zb2xlQXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBDb25zb2xlQXBwZW5kZXIpO1xuXG4gICAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZShjb25zb2xlQXBwZW5kZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPT09ICdib29sZWFuJykge1xuICAgICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLndlYlBsYXllckxvYWRlcikge1xuICAgICAgICB0aGlzLl93ZWJQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLndlYlBsYXllckxvYWRlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXIpIHtcbiAgICAgICAgdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5obHNKc0xvYWRlcikge1xuICAgICAgICB0aGlzLl9obHNKc0xvYWRlciA9IG9wdGlvbnMuaGxzSnNMb2FkZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuZGlzcG9zZSgpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5sb2FkJywgKCkgPT4ge1xuICBTREsuZGlzcG9zZSgpO1xufSk7XG5cblNESy5hcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblNESy5hcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuU0RLLmFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG5TREsuYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuU0RLLmluaXQoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCwge0NoYW5uZWxDb250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgRW5jb2RlZFN0cmVhbVNpbmssIHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBTdHJlYW1UcmFja1RyYW5zZm9ybSwge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0YXRlQ29udGV4dCc7XG5pbXBvcnQgU3RyZWFtRmFjdG9yeSBmcm9tICcuLi9zdHJlYW1pbmcvU3RyZWFtRmFjdG9yeSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5cbmV4cG9ydCB0eXBlIENoYW5uZWxPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBNaWxsaXNlY29uZDtcbiAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPjtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaz86IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+O1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rPzogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPjtcbiAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignQ2hhbm5lbCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VmlkZW9FbGVtZW50OiBSZWFkT25seVN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW46IFJlYWRPbmx5U3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhdGU6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9NdXRlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9QYXVzZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQbGF5aW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUYXJnZXRMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TGFnOiBSZWFkT25seVN1YmplY3Q8TWlsbGlzZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUJpdHJhdGVMaW1pdDogUmVhZE9ubHlTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJlc29sdXRpb246IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RyZWFtOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcih2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBvcHRpb25zPzogQ2hhbm5lbE9wdGlvbnMpIHtcbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKTtcbiAgICBjb25zdCBjaGFubmVsQ29udGV4dE9wdGlvbnM6IENoYW5uZWxDb250ZXh0T3B0aW9ucyA9IHt0YXJnZXRMYWc6IG9wdGlvbnM/LnRhcmdldExhZ307XG4gICAgY29uc3Qgc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnM6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICAgICAgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcycpLFxuICAgICAgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogb3B0aW9ucz8udmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayxcbiAgICAgIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zPy5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rLFxuICAgICAgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZEF1ZGlvU3RyZWFtU2lua1xuICAgIH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dCA9IG5ldyBDaGFubmVsQ29udGV4dChjaGFubmVsQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQoKTtcbiAgICB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0ID0gbmV3IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQoc3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlWaWRlb0VsZW1lbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQ+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4pO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbj4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dG9NdXRlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dG9QYXVzZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlPbmxpbmUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlMb2FkaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVBsYXlpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhbmRieSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieSk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdG9wcGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdG9wcGVkKTtcbiAgICB0aGlzLl9yZWFkT25seVRhcmdldExhZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9jaGFubmVsQ29udGV4dC50YXJnZXRMYWcpO1xuICAgIHRoaXMuX3JlYWRPbmx5TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0KTtcbiAgICB0aGlzLl9yZWFkT25seVJlc29sdXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4odGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludD4odGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0pO1xuICAgIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcyA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuICAgIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciA9IHRoaXMuaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnZpZGVvRWxlbWVudCA9IHZpZGVvRWxlbWVudDtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQuc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnN1YnNjcmliZShzdHJlYW0gPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc3RyZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLnZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgICAgICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gdGhpcy5zdHJlYW1JZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb1RlbGVtZXRyeSA9IG5ldyBWaWRlb1RlbGVtZXRyeSh0aGlzLnN0cmVhbUlkLCBTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9jaGFubmVsU3RhcnRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh0aGlzLnZpZGVvRWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkuc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHRoaXMudmlkZW9FbGVtZW50KTtcblxuICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnJlc3RhcnRBZnRlclN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gQ2hhbm5lbFN0YXRlLlBsYXlpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnN1YnNjcmliZShyZXNvbHV0aW9uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkub25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKHJlc29sdXRpb24udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnN1YnNjcmliZShiaXRyYXRlTGltaXQgPT4ge1xuICAgICAgICBpZiAoYml0cmF0ZUxpbWl0ICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBiaXRyYXRlTGltaXQsXG4gICAgICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgICAgIEJpdHJhdGVNb2RlLk5vcm1hbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgdmlkZW9FbGVtZW50KCk6IEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZXQgdmlkZW9FbGVtZW50KHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCkge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcblxuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5kYXRhc2V0LnNlc3Npb25JZCA9ICcnO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zdHJlYW1JZCA9ICcnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlID0gdmlkZW9FbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbi52YWx1ZS53aWR0aCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggfHwgdGhpcy5yZXNvbHV0aW9uLnZhbHVlLmhlaWdodCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBuZXcgRGltZW5zaW9uKHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gRGltZW5zaW9uLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgc3RhdGUoKTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YXRlO1xuICB9XG5cbiAgZ2V0IGF1dG9NdXRlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9NdXRlZDtcbiAgfVxuXG4gIGdldCBhdXRvUGF1c2VkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZDtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcGxheWluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBsYXlpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgdGFyZ2V0TGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRhcmdldExhZztcbiAgfVxuXG4gIGdldCBsYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TGFnO1xuICB9XG5cbiAgZ2V0IGJpdHJhdGVMaW1pdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdC52YWx1ZTtcbiAgfVxuXG4gIGdldCByZXNvbHV0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxEaW1lbnNpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSZXNvbHV0aW9uO1xuICB9XG5cbiAgZ2V0IGZhaWx1cmVDb3VudCgpOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50O1xuICB9XG5cbiAgZ2V0IGVuZFBvaW50KCk6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUVuZFBvaW50O1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3M7XG4gIH1cblxuICBnZXQgbWVkaWFTdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzZXRCaXRyYXRlTGltaXQoYml0cmF0ZUxpbWl0OiBCaXRzUGVyU2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnZhbHVlID0gYml0cmF0ZUxpbWl0O1xuICB9XG5cbiAgY2xlYXJCaXRyYXRlTGltaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUpIHtcbiAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgY29uc3QgYml0cmF0ZUluQml0c1BlclNlY29uZCA9IDA7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUubGltaXRCaXRyYXRlKFxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgICAgQml0cmF0ZVN0YXRlLktlZXAsXG4gICAgICAgIEJpdHJhdGVNb2RlLlJlc2V0XG4gICAgICApXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFyZ2V0TGFnKGxhZzogTWlsbGlzZWNvbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC50YXJnZXRMYWcudmFsdWUgPSBsYWc7XG4gIH1cblxuICBhc3luYyBzdG9wKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcuc3Vic2NyaWJlKGlzU3RhcnRpbmcgPT4ge1xuICAgICAgICBpZiAoIWlzU3RhcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdG9wKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnBhdXNlKCk7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcyhyZWFzb24pO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcbiAgfVxuXG4gIGFzeW5jIHJlc3VtZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbXV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50KSB7XG4gICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHVubXV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50KSB7XG4gICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcCgnY2xpZW50OmNoYW5uZWwtZGlzcG9zZScpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFVyaSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudXJpO1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGRpc2NvdmVyIFVSSSBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IFVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyBzdGFydCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiA9IHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgICBjb25zdCBsaXN0ZW5PblN0cmVhbVNldHVwID0gdGhpcy5fc2Vzc2lvblRlbGVtZXRyeS5saXN0ZW5PblN0cmVhbVNldHVwKCk7XG5cbiAgICBpZiAoIUVkZ2VBdXRoUGFyc2VyLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKSB7XG4gICAgICBjb25zdCB7dmFsaWQsIHZhbGlkYXRpb25SZXN1bHR9ID0gU3RyZWFtVHJhY2tUcmFuc2Zvcm0udmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtKCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybSgnYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSAmJiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIGluc2VydGFibGUtc3RyZWFtcyBhbmQgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgYXJlIGVuYWJsZWQsIG9ubHkgdXNlIG9uZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBoYXNFbmNvZGVkU3RyZWFtU2luayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayAmJiBoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gY2FsbGJhY2sgYW5kIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBzaW5rIGZ1bmN0aW9uIGZvdW5kLCBvbmx5IHVzZSBvbmUgdHlwZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1lZGlhIFN0cmVhbSBUcmFjayBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCEoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZykge1xuICAgICAgICAgIERpc2NvdmVyeS5jbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgLy8gTmVlZCB0byBzZXQgaXNTdGFydGluZyB0byBmYWxzZSBhbmQgY2FsbCBoYW5kbGVTdHJlYW1GYWlsdXJlIGlmIHN0cmVhbSBtb25pdG9ycyBmb3VuZCBhbiBpc3N1ZVxuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKCkpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0cmVhbVBsYXllciA9IFN0cmVhbUZhY3RvcnkuY3JlYXRlKHRva2VuLCB0aGlzLl9jaGFubmVsQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgaWYgKCFzdHJlYW1QbGF5ZXIpIHtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtUGxheWVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLFxuICAgICAgdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudC5iaW5kKHRoaXMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgY2hhbm5lbCcsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RhcnRBZnRlclN0b3AoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHBsYXkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QbGF5aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YW5kQnk6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUsIENoYW5uZWxTdGF0ZVt0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGxheWluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgcGxheWluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBhdXNlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBpbnZva2UgcGxheSgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhcnRpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHN0b3BwZWQgZHVlIHRvIGNvbmZpZ3VyYXRpb24gZXJyb3IsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUmVzb3VyY2VzKHJlYXNvbjogc3RyaW5nID0gZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb24gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAocGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsIHJlYXNvbilcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRGVzdHJveWVkIHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0nLCB0aGlzLnN0cmVhbUlkLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50ICYmIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LmRhdGFzZXQuc2Vzc2lvbklkID0gJyc7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnN0cmVhbUlkID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aWRlb0VsZW1lbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5TdG9wcGVkO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYXlQcm9taXNlID0gdmlkZW9FbGVtZW50LnBsYXkoKTtcblxuICAgIGlmIChwbGF5UHJvbWlzZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBwbGF5UHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgY29uc3QgaGFzQXVkaW9UcmFjayA9ICEhbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZmlsdGVyKHRyYWNrID0+IHtcbiAgICAgICAgcmV0dXJuIHRyYWNrLmtpbmQgPT09ICdhdWRpbyc7XG4gICAgICB9KS5sZW5ndGg7XG4gICAgICBjb25zdCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiA9ICFTREsuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG5cbiAgICAgIGlmIChhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZU9mZiB8fCB2aWRlb0VsZW1lbnQubXV0ZWQgfHwgIWhhc0F1ZGlvVHJhY2spIHtcbiAgICAgICAgdmlkZW9FbGVtZW50LnNyY09iamVjdCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBQYXVzZWQgdmlkZW8gYWZ0ZXIgcGxheSBmYWlsZWQuIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IG11dGVkIHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmlkZW9FbGVtZW50LnBsYXkoKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGxheWVkIHZpZGVvIGFmdGVyIGF1dG8gbXV0aW5nLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQgdG8gdW5tdXRlLicsIHRoaXMuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG4gICAgICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHZpZGVvRWxlbWVudC5tdXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHBsYXkgdmlkZW8uIE1hbnVhbCB1c2VyIGFjdGlvbiByZXF1aXJlZC4nLCB0aGlzLnN0cmVhbUlkLCBlKTtcblxuICAgICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZW51bSBDaGFubmVsU3RhdGUge1xuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcsXG4gIFBhdXNlZCxcbiAgUGxheWluZyxcbiAgUmVjb3ZlcmluZyxcbiAgUmVjb25uZWN0aW5nLFxuICBTdGFuZEJ5LFxuICBTdG9wcGVkLFxuICBVbmF1dGhvcml6ZWQsXG4gIEdlb1Jlc3RyaWN0ZWQsXG4gIEdlb0Jsb2NrZWQsXG4gIFVuc3VwcG9ydGVkRmVhdHVyZSxcbiAgQ29uZmlndXJhdGlvbkVycm9yLFxuICBUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IsXG4gIENvbm5lY3Rpb25FcnJvcixcbiAgQ2xpZW50U3RhcnRFcnJvcixcbiAgRXJyb3Jcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ2hhbm5lbFN0YXRlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IENoYW5uZWwsIHtDaGFubmVsT3B0aW9uc30gZnJvbSAnLi9DaGFubmVsJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcblxudHlwZSBDcmVhdGVDaGFubmVsT3B0aW9ucyA9IHtcbiAgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50O1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbHMge1xuICBzdGF0aWMgY3JlYXRlQ2hhbm5lbChvcHRpb25zOiBDcmVhdGVDaGFubmVsT3B0aW9ucyk6IENoYW5uZWwge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zOiBDaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucy50YXJnZXRMYWcsXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsKG9wdGlvbnMudmlkZW9FbGVtZW50LCBvcHRpb25zLnRva2VuLCBjaGFubmVsT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbHMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW0sIFN1YnNjcmliZVN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBWaWRlb1RlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9WaWRlb1RlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljLCBJUnRjU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuXG5jb25zdCBkZWZhdWx0VGFyZ2V0TGFnID0gMDtcblxuZXhwb3J0IHR5cGUgQ2hhbm5lbENvbnRleHRPcHRpb25zID0ge1xuICB0YXJnZXRMYWc/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFubmVsQ29udGV4dCB7XG4gIGNoYW5uZWxJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBjaGFubmVsRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICByZW5kZXJlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgdmlkZW9FbGVtZW50OiBTdWJqZWN0PEhUTUxWaWRlb0VsZW1lbnQ+O1xuICBzdGF0ZTogU3ViamVjdDxDaGFubmVsU3RhdGU+O1xuICBhdXRvTXV0ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dG9QYXVzZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcGxheWluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgdGFyZ2V0TGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgbGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgYml0cmF0ZUxpbWl0OiBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICByZXNvbHV0aW9uOiBTdWJqZWN0PERpbWVuc2lvbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludD47XG4gIHN0cmVhbTogU3ViamVjdDxJU3RyZWFtPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYz47XG4gIHZpZGVvVGVsZW1ldHJ5OiBWaWRlb1RlbGVtZXRyeTtcbiAgcnRjQXVkaW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWM7XG4gIHJ0Y1ZpZGVvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljO1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ2hhbm5lbENvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbERpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5yZW5kZXJlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsSW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMudmlkZW9FbGVtZW50ID0gbmV3IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudD4obnVsbCk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdWJqZWN0PENoYW5uZWxTdGF0ZT4oQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nKTtcbiAgICB0aGlzLmF1dG9NdXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dG9QYXVzZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5hdXRob3JpemVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmUgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5wbGF5aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RhbmRieSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BwZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy50YXJnZXRMYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZD4ob3B0aW9ucz8udGFyZ2V0TGFnID8/IGRlZmF1bHRUYXJnZXRMYWcpO1xuICAgIHRoaXMubGFnID0gbmV3IFN1YmplY3Q8TWlsbGlzZWNvbmQ+KDApO1xuICAgIHRoaXMuYml0cmF0ZUxpbWl0ID0gbmV3IFN1YmplY3Q8Qml0c1BlclNlY29uZD4oMCk7XG4gICAgdGhpcy5yZXNvbHV0aW9uID0gbmV3IFN1YmplY3Q8RGltZW5zaW9uPihEaW1lbnNpb24uZW1wdHkpO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigwKTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbmV3IFN1YmplY3Q8RW5kUG9pbnQ+KG51bGwpO1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN1YmplY3Q8SVN0cmVhbT4obnVsbCk7XG4gICAgdGhpcy5ydGNTdGF0aXN0aWNzID0gbmV3IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWM+KG51bGwpO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50LnZhbHVlICYmIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSB0aGlzLnN0cmVhbUlkO1xuICAgIH1cbiAgfVxuXG4gIG1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YW5kQnk7XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25Db250ZXh0IHtcbiAgbWVkaWFTdHJlYW06IFN1YmplY3Q8TWVkaWFTdHJlYW0+O1xuICBwZWVyQ29ubmVjdGlvbjogU3ViamVjdDxJUGVlckNvbm5lY3Rpb24+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5cbmV4cG9ydCB0eXBlIFN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zID0ge1xuICBoYXNJbnNlcnRhYmxlU3RyZWFtczogYm9vbGVhbjtcbiAgaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxBdWRpb0RhdGE+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyZWFtVHJhbnNmb3JtQ29udGV4dCB7XG4gIHJlYWRvbmx5IGhhc0luc2VydGFibGVTdHJlYW1zOiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWFkb25seSBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmhhc0luc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbms7XG4gICAgdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdERpc2NvdmVyeVVyaSA9ICdodHRwczovL3BjYXN0LnBoZW5peHJ0cy5jb20vcGNhc3QvZW5kUG9pbnRzJztcblxuZXhwb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVNb2RlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZU1vZGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSk6IEJpdHJhdGVNb2RlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlTW9kZSkge1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Ob3JtYWw6XG4gICAgICAgIHJldHVybiAnTm9ybWFsJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuRm9yY2U6XG4gICAgICAgIHJldHVybiAnRm9yY2UnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlTW9kZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQge0JpdHJhdGVTdGF0ZSwgQml0cmF0ZVN0YXRlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZVN0YXRlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlKTogQml0cmF0ZVN0YXRlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlU3RhdGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLktlZXA6XG4gICAgICAgIHJldHVybiAnS2VlcCc7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlU3RhdGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IERpc2NvdmVyeVNlcnZpY2UgZnJvbSAnLi9EaXNjb3ZlcnlTZXJ2aWNlJztcblxuY29uc3QgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCA9IDYwMDAwO1xuXG5pbnRlcmZhY2UgSVBlclVSSUVuZHBvaW50IHsgW3g6IHN0cmluZ106IFByb21pc2U8RW5kUG9pbnQ+IH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBJUGVyVVJJRW5kcG9pbnQgPSB7fTtcblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBVUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICByZXR1cm4gRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSkge1xuICAgICAgcmV0dXJuIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlTZXJ2aWNlID0gbmV3IERpc2NvdmVyeVNlcnZpY2UodXJpKTtcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9IGRpc2NvdmVyeVNlcnZpY2UuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQoKTtcbiAgICBjb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID09PSBjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgICAgIH1cbiAgICAgIH0sIGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwpO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpOiBVUkwpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0pIHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dClcbiAgICAgIClcbiAgICBdKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgd2l0aCBubyBkYXRhIFske3VybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNTdHJpbmcgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXNTdHJpbmcuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IG5ldyBFbmRQb2ludChlbmRQb2ludCwgdGltZW91dCkpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQodGltZW91dDogbnVtYmVyID0gZGVmYXVsdFRpbWVvdXQpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gRGlzY292ZXJ5VXJpLmJ1aWxkRGlzY292ZXJ5VXJsKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXdhaXQgdGhpcy5kaXNjb3Zlck5lYXJieUVuZFBvaW50cyhuZXcgVVJMKHVybCksIHRpbWVvdXQpO1xuICAgIGxldCBmYWlsZWRSZXF1ZXN0cyA9IDA7XG4gICAgY29uc3QgcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZmFpbGVkUmVxdWVzdHMgPj0gZW5kUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWplY3QoYERpc2NvdmVyeSBvZiBbJHtlbmRQb2ludHMubGVuZ3RofV0gZW5kcG9pbnRzIGZyb20gWyR7dXJsfV0gZmFpbGVkLCBwcmV2ZW50aW5nIGl0IGZyb20gY29tcGxldGluZ2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gZW5kUG9pbnRcbiAgICAgIC5waW5nKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwaW5nIGVuZCBwb2ludCBbJXNdJywgZW5kUG9pbnQsIGUpO1xuXG4gICAgICAgIGZhaWxlZFJlcXVlc3RzKys7XG5cbiAgICAgICAgcmV0dXJuIHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4odGltZSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyZWQgZW5kIHBvaW50IFslc10gd2l0aCB0aW1lIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpLCB0aW1lKTtcbiAgICAgICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgICAgICBydW50aW1lOiAobm93IC0gU0RLLnBhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lIHx8IDB9LFxuICAgICAgICAgIHJlc291cmNlOiBlbmRQb2ludC50b1N0cmluZygpLFxuICAgICAgICAgIGtpbmQ6ICdwaW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQ7XG4gICAgICB9KSkpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVSZXNwb25zZSxcbiAgSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QsXG4gIElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0XG59IGZyb20gJy4uL2FwaS9TdWJzY3JpYmUnO1xuaW1wb3J0IHtJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0LCBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZX0gZnJvbSAnLi4vYXBpL1NldFJlbW90ZURlc2NyaXB0aW9uJztcbmltcG9ydCB7SURlc3Ryb3lTdHJlYW1SZXF1ZXN0LCBJRGVzdHJveVN0cmVhbVJlc3BvbnNlfSBmcm9tICcuLi9hcGkvRGVzdHJveVN0cmVhbSc7XG5pbXBvcnQge0lBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCwgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZX0gZnJvbSAnLi4vYXBpL0FkZEljZUNhbmRpZGF0ZXMnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGUsIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBCaXRyYXRlTW9kZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlTW9kZU1hcHBpbmcnO1xuaW1wb3J0IEJpdHJhdGVTdGF0ZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlU3RhdGVNYXBwaW5nJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7XG4gIElQdWJsaXNoUmVzcG9uc2UsXG4gIElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0LFxuICBQdWJsaXNoU3RhdHVzXG59IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuY29uc3QgYXBpVmVyc2lvbiA9IDc7XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cztcbiAgc3RyZWFtPzogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6IFB1Ymxpc2hTdGF0dXM7XG4gIHN0cmVhbT86IElTdHJlYW07XG4gIGxhZz86IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHRpbWVvdXQ6IG51bWJlcikge1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgICB0aGlzLl90aW1lb3V0ID0gdGltZW91dDtcblxuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmQgcG9pbnQgcmVxdWlyZXMgYSB0aW1lb3V0YCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFbmRQb2ludFt1cmk9JHt0aGlzLl91cml9XWA7XG4gIH1cblxuICBhc3luYyBwaW5nKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFBpbmdVcmwoKTtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYFBpbmcgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aGlzLl90aW1lb3V0KVxuICAgICAgKVxuICAgIF0pO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHsgLyogSGFuZGxlICovXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm91bmRUcmlwVGltZSA9IGZpbmlzaGVkIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIGFzeW5jIHN1YnNjcmliZSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJU3Vic2NyaWJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdzdWJzY3JpYmUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgU3Vic2NyaWJlIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dClcbiAgICAgICAgKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdWJzY3JpYmUnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHB1Ymxpc2gobmFtZTogc3RyaW5nLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAncHVibGlzaCddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogUHVibGlzaFN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlKHRlbmFuY3ksIGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBwdWJsaXNoIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBuZXcgRXJyb3IoYFNldCByZW1vdGUgZGVzY3JpcHRpb24gdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KVxuICAgICAgICApXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIG5ldyBFcnJvcihgU2V0IGxpbWl0IGJpdHJhdGUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KVxuICAgICAgICApXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHNldCBsaW1pdCBiaXRyYXRlIHRpbWVkJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IHNldCBsaW1pdCBiaXRyYXRlIHJlc3BvbnNlIFslc10gaW4gWyVzXSBtcycsIHN0YXR1cywgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4ge3N0YXR1c307XG4gIH1cblxuICBhc3luYyBhZGRJY2VDYW5kaWRhdGVzKHN0cmVhbTogSVN0cmVhbSwgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10sIGRpc2NvdmVyeUNvbXBsZXRlZDogYm9vbGVhbiwgb3B0aW9uczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2ljZScsICdjYW5kaWRhdGVzJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgY2FuZGlkYXRlcyxcbiAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgaHR0cFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgdGltZW91dCA9IG51bGw7XG5cbiAgICAgIGh0dHBSZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4ocmVzb2x2ZSA9PlxuICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBhZGQgaWNlIGNhbmRpZGF0ZXMnLCBuZXcgRXJyb3IoYEFkZCBpY2UgY2FuZGlkYXRlcyB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN1YnNjcmliZScsIG5ldyBFcnJvcihgRGVsZXRlIHN0cmVhbSB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIHN0cmVhbScsIGUpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBkZXN0cm95IHN0cmVhbSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBkZXN0cm95U3RyZWFtUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW1PblVubW91bnQoc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghbmF2aWdhdG9yPy5zZW5kQmVhY29uKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5kZXN0cm95U3RyZWFtKHN0cmVhbSwgcmVhc29uKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgbmF2aWdhdG9yLnNlbmRCZWFjb24odXJsLCBmb3JtRGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZ1tdKTogVVJMIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgcGF0aEFzQXJyYXkgPSB1cmkucGF0aG5hbWUuc3BsaXQoJy8nKTtcblxuICAgIHBhdGhBc0FycmF5Lmxlbmd0aCA9IHBhdGhBc0FycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICB1cmkucGF0aG5hbWUgPSBwYXRoQXNBcnJheS5jb25jYXQoLi4ucGF0aCkuam9pbignLycpO1xuXG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQaW5nVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gbmV3IFVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd0eXBlJywgJ2h0dHAnKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVN1YnNjcmliZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVN1YnNjcmliZVJlc3BvbnNlO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlOiBJU3Vic2NyaWJlUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgc3Vic2NyaWJlUmVzcG9uc2Uuc3RyZWFtID0ge1xuICAgICAgdGVuYW5jeSxcbiAgICAgIHN0cmVhbUlkOiBkYXRhLnN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgIH07XG5cbiAgICBzdWJzY3JpYmVSZXNwb25zZS5sYWcgPSBkYXRhLmxhZztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgc3Vic2NyaWJlUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElQdWJsaXNoUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJUHVibGlzaFJlc3BvbnNlO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hSZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICBwdWJsaXNoUmVzcG9uc2Uuc3RyZWFtID0ge1xuICAgICAgdGVuYW5jeSxcbiAgICAgIHN0cmVhbUlkOiBkYXRhLnN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uID0gZGF0YS5zZXNzaW9uRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTogSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLm9wdGlvbnMpIHtcbiAgICAgICAgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbVJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElEZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzOiBkYXRhLnN0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IHtTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi8uLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4uLy4uL3J0Yy9TZHBQYXJzZXInO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IGRlZmF1bHRTdHJlYW1TZXR1cFRpbWVvdXQgPSAzMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVTdHJlYW0gaW1wbGVtZW50cyBJU3RyZWFtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcblxuICBjb25zdHJ1Y3RvcihjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBjaGFubmVsQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcyk7XG4gIH1cblxuICBzdGFydCh1cmksIHRva2VuLCBsaXN0ZW5PblN0cmVhbVNldHVwLCBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3JlY3Zvbmx5JywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICAgICAgICBpZiAoU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgJiYgIShGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSkge1xuICAgICAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICAgICAgICBsb2NhbE9mZmVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHtzdGF0dXMsIHN0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9KSA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gbGFnO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQubWFwU3Vic2NyaWJlU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgdHJ5aW5nIHRvIHJlY29ubmVjdCcsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtUHJvbWlzZSA9IG5ldyBQcm9taXNlPE1lZGlhU3RyZWFtPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQub25UcmFja0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpLCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9udHJhY2sgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtc1swXSk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHRyYWNrTGlzdGVuZXIgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRyYWNrTGlzdGVuZXIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGUuc3RyZWFtcykge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpO1xuICAgICAgICAgICAgICB9LCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVqXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBtZWRpYVN0cmVhbVByb21pc2U7XG4gICAgICAgICAgICB9KS50aGVuKG1lZGlhU3RyZWFtID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHBlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtkaXNwb3NhYmxlc30gPSBJbnNlcnRhYmxlU3RyZWFtcy5hcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbihtZWRpYVN0cmVhbSwgcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCksIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rLCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjLCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHt0cmFuc2Zvcm1lZFN0cmVhbSwgZGlzcG9zYWJsZXN9ID0gSW5zZXJ0YWJsZVN0cmVhbXMuYXBwbHlJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24obWVkaWFTdHJlYW0sIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSB0cmFuc2Zvcm1lZFN0cmVhbTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yID0gbmV3IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKHBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbSwgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQpO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24gPSBydGNDb25uZWN0aW9uTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiAhdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBhdWRpb1RyYWNrRmFpbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IHZpZGVvVHJhY2tGYWlsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLmF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBhdWRpb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdWRpb1RyYWNrRmFpbGVkICYmIG5hdmlnYXRvci5vbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEF1ZGlvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MuYXVkaW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MuYXVkaW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGlzdGljcy52aWRlbykge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCAhPT0gc3RhdGlzdGljcy52aWRlby50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFja0ZhaWxlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQgPT09IHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9UcmFja0ZhaWxlZCAmJiBuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBWaWRlbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLnZpZGVvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MudmlkZW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFuYXZpZ2F0b3Iub25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZpZGVvVHJhY2tGYWlsZWQgfHwgYXVkaW9UcmFja0ZhaWxlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucGF1c2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgcnRjQ29ubmVjdGlvbk1vbml0b3IuZGlzcG9zZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciB0cmFjayBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3RpbmcgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5PZmZsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID8gQ2hhbm5lbFN0YXRlLlBsYXlpbmcgOiBDaGFubmVsU3RhdGUuUGF1c2VkO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgc3RhdGUgcmVzdG9yZWQgdG8gWyVzXSBhZnRlciByZWNvbm5lY3RpbmcnLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGF1c2VkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KG1lZGlhU3RyZWFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIDwgU0RLLm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgfHwgIVNESy5hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKys7XG5cbiAgICAgIGNvbnN0IGlzQ2xpZW50T2ZmZXJGbG93ID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnR5cGUgPT09ICdvZmZlcic7XG5cbiAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhaXNDbGllbnRPZmZlckZsb3dcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZWNvbm5lY3RpbmcgcGVlciBjb25uZWN0aW9uIGJ5IHJlc3RhcnRpbmcgSUNFJyk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb247XG4gICAgICBjb25zdCBpZ25vcmVkID0gcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoe2ljZVJlc3RhcnQ6IHRydWV9KS50aGVuKG9mZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBDaGFubmVsU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtJU3RyZWFtfSBmcm9tICcuL0lTdHJlYW0nO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCBSZWFsVGltZVN0cmVhbSBmcm9tICcuL1JlYWxUaW1lU3RyZWFtJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtaW5nJyk7XG5cbiAgc3RhdGljIGNyZWF0ZSh0b2tlbjogc3RyaW5nLCBjaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0LCBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogSVN0cmVhbSB7XG4gICAgY29uc3QgdG9rZW5DYXBhYmlsaXRpZXMgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS5jYXBhYmlsaXRpZXM7XG5cbiAgICBpZiAodG9rZW5DYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ29uLWRlbWFuZCcpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBPbi1EZW1hbmQgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdzdHJlYW1pbmcnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgTGl2ZSBTdHJlYW0gcGxheWJhY2suJyk7XG4gICAgICBjaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlYWxUaW1lU3RyZWFtKGNoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbUZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFbmNvZGVkU3RyZWFtU2luazxUID0gUlRDRW5jb2RlZEF1ZGlvRnJhbWUgfCBSVENFbmNvZGVkVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQpOiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuY29kZWRTdHJlYW1TaW5rIHtcbiAgc3RhdGljIHZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsobW9kZTogJ2F1ZGlvJyB8ICd2aWRlbycsIGl0ZW06IElFbmNvZGVkU3RyZWFtU2luaykge1xuICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IEVuY29kZWQgU3RyZWFtIFNpbmsgZnVuY3Rpb24gdHlwZS4gRm91bmQgWyR7dHlwZW9mIGl0ZW19XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoICE9PSAyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gRW5jb2RlZCBTdHJlYW0gU2luayBmdW5jdGlvbiBwYXJhbWV0ZXIgbGVuZ3RoLiBFeHBlY3RlZCAyLiBGb3VuZCBbJHtpdGVtLmxlbmd0aH1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiAnb2snXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRW5jb2RlZFN0cmVhbVNpbmsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCB7SUVuY29kZWRTdHJlYW1TaW5rfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIsIHtTdXJyb2dhdGVGcmFtZVR5cGUsIFNraXBGcmFtZX0gZnJvbSAnLi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyJztcblxudHlwZSBNZWRpYVN0cmVhbVRyYWNrS2luZCA9ICd2aWRlbycgfCAnYXVkaW8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIHN0YXRpYyBhcHBseUVuY29kZWRTdHJlYW1UcmFuc2Zvcm1hdGlvbihzdHJlYW06IE1lZGlhU3RyZWFtLCByZWNlaXZlcnM6IFJUQ1J0cFJlY2VpdmVyW10sIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4sIHZpZGVvQ29kZWM6IHN0cmluZywgYXVkaW9Db2RlYzogc3RyaW5nKToge2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuXG4gICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgY29uc3QgcmVjZWl2ZXIgPSByZWNlaXZlcnMuZmlsdGVyKHJlY2VpdmUgPT4gcmVjZWl2ZS50cmFjayA9PT0gdHJhY2spWzBdO1xuICAgICAgY29uc3Qga2luZDogTWVkaWFTdHJlYW1UcmFja0tpbmQgPSB0cmFjay5raW5kIGFzIE1lZGlhU3RyZWFtVHJhY2tLaW5kO1xuXG4gICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSAndmlkZW8nOiB7XG4gICAgICAgICAgaWYgKGVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCkge1xuICAgICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vV29ya2VyVHJhbnNmb3JtU3RyZWFtLnRzJywgaW1wb3J0Lm1ldGEudXJsKSwge3R5cGU6ICdtb2R1bGUnfSk7XG5cbiAgICAgICAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGFzeW5jIGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2ssIGV2ZW50LmRhdGEuY2h1bmspKSB7XG4gICAgICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2ZvcmNlSW52YWxpZEZyYW1lOiB0cnVlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCB7XG4gICAgICAgICAgICAgICAga2luZDogdHJhY2sua2luZCxcbiAgICAgICAgICAgICAgICBjb2RlYzogdmlkZW9Db2RlY1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFJUQ0VuY29kZWRWaWRlb0ZyYW1lLCBSVENFbmNvZGVkVmlkZW9GcmFtZT4gPSBhc3luYyhjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRWaWRlb1N0cmVhbVNpbmsodHJhY2ssIGNodW5rKSkge1xuICAgICAgICAgICAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgICAgICAgICAgIGlmIChjaHVuay50eXBlID09PSAna2V5Jykge1xuICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUodmlkZW9Db2RlYyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKHZpZGVvQ29kZWMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdXJyb2dhdGUgPT09IFNraXBGcmFtZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBzdXJyb2dhdGUgfHwgY2h1bmsuZGF0YTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWModmlkZW9Db2RlYykgfHwgY2h1bmsuZGF0YTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh2aWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCByZWNlaXZlclN0cmVhbXMgPSByZWNlaXZlci5jcmVhdGVFbmNvZGVkU3RyZWFtcygpO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlO1xuICAgICAgICAgICAgY29uc3Qgc2luayA9IHJlY2VpdmVyU3RyZWFtcy53cml0YWJsZTtcblxuICAgICAgICAgICAgc291cmNlXG4gICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm1lcilcbiAgICAgICAgICAgICAgLnBpcGVUbyhzaW5rKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ2F1ZGlvJzoge1xuICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKSB7XG4gICAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL1dvcmtlclRyYW5zZm9ybVN0cmVhbS50cycsIGltcG9ydC5tZXRhLnVybCksIHt0eXBlOiAnbW9kdWxlJ30pO1xuXG4gICAgICAgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLCBldmVudC5kYXRhLmNodW5rKSkge1xuICAgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtmb3JjZUludmFsaWRGcmFtZTogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwge1xuICAgICAgICAgICAgICAgIGtpbmQ6IHRyYWNrLmtpbmQsXG4gICAgICAgICAgICAgICAgY29kZWM6IGF1ZGlvQ29kZWNcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgICBhdWRpb1B1bXBlci5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhdWRpb1B1bXBlcik7XG5cbiAgICAgICAgICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZW5jb2RlZFN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFJUQ0VuY29kZWRBdWRpb0ZyYW1lLCBSVENFbmNvZGVkQXVkaW9GcmFtZT4gPSBhc3luYyhjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWF3YWl0IGVuY29kZWRBdWRpb1N0cmVhbVNpbmsodHJhY2ssIGNodW5rKSkge1xuICAgICAgICAgICAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaHVuay5kYXRhID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRTdXJyb2dhdGVBdWRpb1NpbGVudFBlckNvZGVjKGF1ZGlvQ29kZWMpIHx8IGNodW5rLmRhdGE7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGVuY29kZWRTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJTdHJlYW1zID0gcmVjZWl2ZXIuY3JlYXRlRW5jb2RlZFN0cmVhbXMoKTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSByZWNlaXZlclN0cmVhbXMud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgIC5waXBlVG8oc2luayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtkaXNwb3NhYmxlc307XG4gIH1cblxuICBzdGF0aWMgYXBwbHlJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24oc3RyZWFtOiBNZWRpYVN0cmVhbSwgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+LCBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPik6IHt0cmFuc2Zvcm1lZFN0cmVhbTogTWVkaWFTdHJlYW07IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdH0ge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkU3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBjb25zdCBraW5kOiBNZWRpYVN0cmVhbVRyYWNrS2luZCA9IHRyYWNrLmtpbmQgYXMgTWVkaWFTdHJlYW1UcmFja0tpbmQ7XG5cbiAgICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlICd2aWRlbyc6IHtcbiAgICAgICAgICBpZiAodmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPFZpZGVvRnJhbWUsIFZpZGVvRnJhbWU+ID0gKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgICAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sodHJhY2ssIGNodW5rLCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2sgPSB0cmFjayBhcyBNZWRpYVN0cmVhbVZpZGVvVHJhY2s7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe3RyYW5zZm9ybTogaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3Nvcih7dHJhY2s6IHZpZGVvVHJhY2t9KTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBNZWRpYVN0cmVhbVRyYWNrR2VuZXJhdG9yKHtraW5kOiB2aWRlb1RyYWNrLmtpbmR9KTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3Nvci5yZWFkYWJsZTtcbiAgICAgICAgICAgIGNvbnN0IHNpbmsgPSBnZW5lcmF0b3Iud3JpdGFibGU7XG5cbiAgICAgICAgICAgIHNvdXJjZVxuICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtZXIpXG4gICAgICAgICAgICAgIC5waXBlVG8oc2luayk7XG5cbiAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLmFkZFRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdhdWRpbyc6IHtcbiAgICAgICAgICBpZiAoYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPEF1ZGlvRGF0YSwgQXVkaW9EYXRhPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1BdWRpb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiBhdWRpb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogYXVkaW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybWVyKVxuICAgICAgICAgICAgICAucGlwZVRvKHNpbmspO1xuXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayhnZW5lcmF0b3IpO1xuXG4gICAgICAgICAgICBjb25zdCBtZWRpYVN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgICAgICAgICAgY29uc3QgYXVkaW9QdW1wZXIgPSBuZXcgQXVkaW8oKTtcblxuICAgICAgICAgICAgbWVkaWFTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgICAgYXVkaW9QdW1wZXIuc3JjT2JqZWN0ID0gbWVkaWFTdHJlYW07XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGF1ZGlvUHVtcGVyKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGtpbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLFxuICAgICAgZGlzcG9zYWJsZXNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnNlcnRhYmxlU3RyZWFtcyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFQgPSBBdWRpb0RhdGEgfCBWaWRlb0ZyYW1lPiB7XG4gICAgKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrLCBjaHVuazogVCwgY29udHJvbGxlcjogVHJhbnNmb3JtU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI8VD4pOiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVRyYWNrVHJhbnNmb3JtIHtcbiAgc3RhdGljIHZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybShtb2RlOiAnYXVkaW8nIHwgJ3ZpZGVvJywgaXRlbTogSVN0cmVhbVRyYWNrVHJhbnNmb3JtKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gTWVkaWEgU3RyZWFtIFRyYWNrIHRyYW5zZm9ybSBmdW5jdGlvbiB0eXBlLiBGb3VuZCBbJHt0eXBlb2YgaXRlbX1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggIT09IDMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHBhcmFtZXRlciBsZW5ndGguIEV4cGVjdGVkIDMuIEZvdW5kIFske2l0ZW0ubGVuZ3RofV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6ICdvaydcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlQ2hyb21lID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuaXNNb2JpbGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjcsIDB4ZjQsIDB4MDAsIDB4MGEsIDB4OTEsIDB4OWIsIDB4MmIsIDB4ZjEsIDB4ZjEsIDB4ZjgsIDB4MDgsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTksIDB4MDcsIDB4ODksIDB4MTIsIDB4Y2IsIC8vIFNlcXVlbmNlIHBhcmFtZXRlciBzZXRcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA5LCAweGYwLCAvLyBBY2Nlc3MgdW5pdCBkZWxpbWl0ZXJcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NDEsIDB4OWEsIDB4NjgsIDB4NDksIDB4YTgsIDB4NDEsIDB4NjgsIDB4OTksIDB4NGMsIDB4MGYsIDB4ZmYsIDB4OTIsIDB4ODFdKSwgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4MzEsIDB4MDMsIDB4MDAsIDB4ZTQsIDB4ZTAsIDB4YTgsIDB4OWIsIDB4MzcsIDB4YWYsIDB4MTAsIDB4NGYsIDB4NGYsIDB4YjEsIDB4MGEsIDB4MmYsIDB4ZTQsIDB4OTIsIDB4YzAsIDB4MWYsIDB4ZTcsIDB4NGYsIDB4NDYsIDB4ZmYsIDB4ZWUsIDB4NTEsIDB4YzEsIDB4NWQsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDg2LCAweDAwLCAweDQwLCAweDkyLCAweDljLCAweDI0LCAweDQ4LCAweDAwLCAweDAwLCAweDAzLCAweDcwLCAweDAwLCAweDAwLCAweDRiLCAweDQwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15ODJ4ODJIMjY0ID0ge1xuICAgIElGcmFtZTogbmV3IFVpbnQ4QXJyYXkoW1xuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NywgMHg0MiwgMHhjMCwgMHgwZCwgMHhkYSwgMHgxOCwgMHhkZSwgMHgyMiwgMHgyMiwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMywgMHhjOCwgMHhmMSwgMHg0MiwgMHhhYSwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2OCwgMHhjZSwgMHgwZiwgMHhjOCwgLy8gUGljdHVyZSBwYXJhbWV0ZXIgc2V0XG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA2LCAweDAzLCAuLi5uZXcgVWludDhBcnJheSg0MCkuZmlsbCgweGZmKSwgMHg1ZiwgLi4ubmV3IFVpbnQ4QXJyYXkoMTAyOTUpLmZpbGwoMHhmZiksIDB4ODAsIC8vIFN1cHBsZW1lbnRhbCBlbmhhbmNlbWVudCBpbmZvcm1hdGlvbiAoU0VJKVxuICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2NSwgMHg4OCwgMHg4NCwgMHgwNSwgLi4ubmV3IFVpbnQ4QXJyYXkoMykuZmlsbCgweGZmKSwgMHgwZiwgMHg0NSwgMHgwMCwgMHgwMSwgMHg1NywgMHg5ZiwgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHgyNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3NSwgMHhkNywgMHg1ZCwgMHg3OF0pLCAvLyBTbGljZSBsYXllcjogSWRyIGRhdGFcbiAgICBQRnJhbWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDYsIDB4MDMsIC4uLm5ldyBVaW50OEFycmF5KDQwKS5maWxsKDB4ZmYpLCAweGE0LCAuLi5uZXcgVWludDhBcnJheSgxMDM2NCkuZmlsbCgweGZmKSwgMHg4MCwgLy8gU0VJXG4gICAgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDQxLCAweDlhLCAweDIwLCAweDE1LCAweGYwLCAweDRiXSkgLy8gU2xpY2UgbGF5ZXI6IG5vbiBpZHIgZGF0YVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZHVtbXk4Mng4MkgyNjRQRnJhbWVGcmFtZU51bWJlckluZGV4ID0gMTA0MTg7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQgPSAxO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzTW9iaWxlQ2hyb21lIHx8IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpO1xuICBwcml2YXRlIHN0YXRpYyBfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnT1BVUyc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYy5PUFVTLmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlQXVkaW9EYXRhKCk6IEFycmF5QnVmZmVyIHtcbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZVZpZGVvSUZyYW1lUGVyQ29kZWMoY29kZWM6IHN0cmluZyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ0gyNjQnOiB7XG4gICAgICAgIGlmIChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTgyeDgySDI2NC5JRnJhbWUuYnVmZmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5IMjY0LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA4Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ1ZQOSc6IHtcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb0lGcmFtZShjb2RlYzogc3RyaW5nKTogU3Vycm9nYXRlRnJhbWVUeXBlIHtcbiAgICBpZiAoKGNvZGVjLnRvVXBwZXJDYXNlKCkgPT09ICdIMjY0JykgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fdXNlVXBkYXRlU3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcikge1xuICAgICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldDtcblxuICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzQW5kcm9pZENocm9tZSkge1xuICAgICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogc3RyaW5nKTogQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAoY29kZWMudG9VcHBlckNhc2UoKSkge1xuICAgICAgY2FzZSAnSDI2NCc6IHtcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3VzZVVwZGF0ZVN1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIpIHtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldFN1cnJvZ2F0ZTgyeDgyUEZyYW1lQW5kVXBkYXRlRnJhbWVOdW1iZXIoKTtcblxuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdWUDgnOiB7XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnVlA5Jzoge1xuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb1BGcmFtZVBlckNvZGVjLlZQOS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvUEZyYW1lKGNvZGVjOiBzdHJpbmcpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMudG9VcHBlckNhc2UoKSA9PT0gJ0gyNjQnKSAmJiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyKSB7XG4gICAgICBjb25zdCBzYXZlZFN1cnJvZ2F0ZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcjtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpO1xuXG4gICAgICBpZiAoc2F2ZWRTdXJyb2dhdGVGcmFtZU51bWJlciA+IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXJSZXNldCkge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICAgICAgcmV0dXJuIFNraXBGcmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIrKztcblxuICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc2luZ2xlWmVyb0J5dGUuYnVmZmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlcigpOiBBcnJheUJ1ZmZlciB7XG4gICAgY29uc3QgYml0TWFzazEgPSAweDBlO1xuICAgIGNvbnN0IGJpdE1hc2syID0gMHgwMTtcbiAgICBjb25zdCBiaXRTaGlmdFJpZ2h0QnkxID0gMTtcbiAgICBjb25zdCBiaXRTaGlmdExlZnRCeTcgPSA3O1xuICAgIGNvbnN0IGJ5dGUxID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazEpID4+IGJpdFNoaWZ0UmlnaHRCeTEpO1xuICAgIGNvbnN0IGJ5dGUyID0gKChTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyICYgYml0TWFzazIpIDw8IGJpdFNoaWZ0TGVmdEJ5Nyk7XG4gICAgY29uc3QgY29weU9mRHVtbXlQRnJhbWVzID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXk4Mng4MkgyNjQuUEZyYW1lLnNsaWNlKCk7XG4gICAgY29uc3QgYnVmZmVyID0gY29weU9mRHVtbXlQRnJhbWVzLmJ1ZmZlcjtcbiAgICBjb25zdCBidWZmZXJJbmRleCA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15ODJ4ODJIMjY0UEZyYW1lRnJhbWVOdW1iZXJJbmRleDtcblxuICAgIGJ1ZmZlcltidWZmZXJJbmRleF0gfD0gYnl0ZTE7XG4gICAgYnVmZmVyW2J1ZmZlckluZGV4ICsgMV0gfD0gYnl0ZTI7XG4gICAgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlcisrO1xuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuZGVjbGFyZSBjb25zdCBfX0JVSUxEX1ZFUlNJT05fXzogc3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc3RhdGljIF9kZWZhdWx0VmVyc2lvbiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICBzdGF0aWMgZ2V0IHNka1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIF9fQlVJTERfVkVSU0lPTl9fO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmVyc2lvbjtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBVUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IE51bWJlcnMgZnJvbSAnLi4vbGFuZy9OdW1iZXJzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gODE5MjtcblxuaW50ZXJmYWNlIElMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgbGV2ZWw6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2xvZ3M6IEFycmF5PElMb2dJdGVtPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgX2RvbWFpbiA9IGxvY2F0aW9uLmhvc3RuYW1lO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBmZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBudW1iZXJPZkxvZ3NUb1NlbmQgPSAwO1xuICAgIGxldCBzaXplT2ZMb2dzVG9TZW5kID0gMDtcblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBnZXRJdGVtU2l6ZSA9IGl0ZW0gPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAyMDAwO1xuY29uc3QgZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAxO1xuY29uc3QgZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAzMDAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9uZW50aWFsQmFja29mZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmRcbiAgKSB7XG4gICAgdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gIH1cblxuICBnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KGZhaWx1cmVDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMgPSB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIC8gMTAwMDtcbiAgICBjb25zdCByYW5kb21pemF0aW9uID0gMC41ICsgKDAuNSAqIE1hdGgucmFuZG9tKCkpOyAvLyBbMC41LCAxKVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZiA9IE1hdGgucG93KGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcywgZmFpbHVyZUNvdW50IC0gMik7IC8vICBbMS80IDEvMiAxIDIgNCA4IC4uLi5dXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gPSBNYXRoLmZsb29yKGV4cG9uZW50aWFsQmFja29mZikgKiByYW5kb21pemF0aW9uO1xuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCA9IE1hdGguY2VpbChNYXRoLm1heChleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiAqIDEwMDAsIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpKTtcblxuICAgIHJldHVybiBNYXRoLm1pbihleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQsIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpbWVuc2lvbiBpbXBsZW1lbnRzIElDb21wYXJhYmxlPERpbWVuc2lvbj4ge1xuICByZWFkb25seSB3aWR0aDogbnVtYmVyO1xuICByZWFkb25seSBoZWlnaHQ6IG51bWJlcjtcblxuICBzdGF0aWMgZ2V0IGVtcHR5KCk6IERpbWVuc2lvbiB7XG4gICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oMCwgMCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgfVxuXG4gIGVxdWFscyhvdGhlcjogRGltZW5zaW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyICYmIHRoaXMud2lkdGggPT09IG90aGVyLndpZHRoICYmIHRoaXMuaGVpZ2h0ID09PSBvdGhlci5oZWlnaHQ7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLndpZHRofXgke3RoaXMuaGVpZ2h0fWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IFBoZW5peCBSZWFsIFRpbWUgU29sdXRpb25zLCBJbmMuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgUGhlbml4IFJlYWwgVGltZSBTb2x1dGlvbnMsIEluYy4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yU3RhbGw6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgX2xpc3RlbkZvckNvbnRpbnVhdGlvbjogKGV2ZW50KSA9PiB2b2lkO1xuICBwcml2YXRlIF90aW1lVG9GaXJzdEZyYW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX2NoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX3ZpZGVvU3RhbGxlZDogbnVtYmVyO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdmlkZW9SZXNvbHV0aW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlO1xuICBwcml2YXRlIF9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXI6IERpc3Bvc2FibGU7XG5cbiAgY29uc3RydWN0b3Ioc3RyZWFtSWQ6IHN0cmluZywgcGFnZUxvYWRUaW1lOiBudW1iZXIsIGNoYW5uZWxTdGFydFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fc3RyZWFtSWQgPSBzdHJlYW1JZDtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSA9IGNoYW5uZWxTdGFydFRpbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclRpbWVUb0ZpcnN0VGltZSh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSA9ICgpOiB2b2lkID0+IHRoaXMuY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTtcblxuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsIHRoaXMuX2xpc3RlblRvRmlyc3RUaW1lKTtcbiAgICB9KTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIpO1xuICB9XG5cbiAgc2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdGVuRm9yU3RhbGwgPSAoKTogdm9pZCA9PiB0aGlzLm9uU3RhbGwoKTtcblxuICAgIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbiA9IChldmVudCk6IHZvaWQgPT4gdGhpcy5vbkNvbnRpbnVhdGlvbihldmVudCwgdmlkZW8pO1xuXG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdXNwZW5kJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcblxuICAgIHRoaXMuX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXVzZScsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZHVyYXRpb25TaW5jZVBhZ2VMb2FkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHJldHVybiBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsbFRpbWVUb0ZpcnN0RnJhbWUoKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMucHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93KTtcbiAgICB0aGlzLnB1c2hDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKG5vdyk7XG5cbiAgICB0aGlzLl9jbGVhclRpbWVUb0ZpcnN0RnJhbWVMaXN0ZW5lci5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHB1c2hUaW1lVG9GaXJzdEZyYW1lKG5vdyk6IHZvaWQge1xuICAgIHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUgPSBub3cgLSB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlRpbWVUb0ZpcnN0RnJhbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGhpcy5fdGltZVRvRmlyc3RGcmFtZX0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBGaXJzdCBmcmFtZSBbJXNdJyxcbiAgICAgIHRoaXMuZHVyYXRpb25TaW5jZVBhZ2VMb2FkLFxuICAgICAgdGhpcy5fc3RyZWFtSWQsXG4gICAgICBuZXcgRHVyYXRpb25zKHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWUpLnRvSXNvU3RyaW5nKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZShub3cpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk6IHZvaWQge1xuICAgIGlmICghdmlkZW8uYnVmZmVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSB2aWRlby5idWZmZXJlZC5sZW5ndGg7XG4gICAgY29uc3QgaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQgPSBldmVudC50eXBlID09PSAncGxheWluZydcbiAgICB8fCBidWZmZXJMZW5ndGggPiAwID8gKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcydcbiAgICAgIHx8IGV2ZW50LnR5cGUgPT09ICd0aW1ldXBkYXRlJylcbiAgICAgICYmIHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKSA9PT0gdGhpcy5fbGFzdFByb2dyZXNzIDogdHJ1ZTtcblxuICAgIGlmICghdGhpcy5fdmlkZW9TdGFsbGVkIHx8IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdwcm9ncmVzcycpIHtcbiAgICAgIHRoaXMuX2xhc3RQcm9ncmVzcyA9IHZpZGVvLmJ1ZmZlcmVkLmVuZChidWZmZXJMZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lU2luY2VTdG9wID0gRGF0ZS5ub3coKSAtIHRoaXMuX3ZpZGVvU3RhbGxlZDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQnVmZmVyaW5nLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VTdG9wfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIFtidWZmZXJpbmddIFN0cmVhbSBoYXMgcmVjb3ZlcmVkIGZyb20gc3RhbGwgYWZ0ZXIgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VTdG9wKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgICB0aGlzLl92aWRlb1N0YWxsZWQgPSBudWxsO1xuICB9XG5cbiAgb25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKG5ld1Jlc29sdXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQsXG4gICAgICBydW50aW1lOiAoRGF0ZS5ub3coKSAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld1Jlc29sdXRpb259LFxuICAgICAgcHJldmlvdXNWYWx1ZTogdGhpcy5fdmlkZW9SZXNvbHV0aW9uID8ge3N0cmluZzogdGhpcy5fdmlkZW9SZXNvbHV0aW9ufSA6IHVuZGVmaW5lZCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9SZXNvbHV0aW9uID0gbmV3UmVzb2x1dGlvbjtcbiAgfVxufSIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIF9yZWdlbmVyYXRvclJ1bnRpbWUoKSB7XG4gIFwidXNlIHN0cmljdFwiOyAvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICovXG4gIG1vZHVsZS5leHBvcnRzID0gX3JlZ2VuZXJhdG9yUnVudGltZSA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvclJ1bnRpbWUoKSB7XG4gICAgcmV0dXJuIGU7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cztcbiAgdmFyIHQsXG4gICAgZSA9IHt9LFxuICAgIHIgPSBPYmplY3QucHJvdG90eXBlLFxuICAgIG4gPSByLmhhc093blByb3BlcnR5LFxuICAgIG8gPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZnVuY3Rpb24gKHQsIGUsIHIpIHtcbiAgICAgIHRbZV0gPSByLnZhbHVlO1xuICAgIH0sXG4gICAgaSA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sXG4gICAgYSA9IGkuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCIsXG4gICAgYyA9IGkuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiLFxuICAgIHUgPSBpLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuICBmdW5jdGlvbiBkZWZpbmUodCwgZSwgcikge1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge1xuICAgICAgdmFsdWU6IHIsXG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICB3cml0YWJsZTogITBcbiAgICB9KSwgdFtlXTtcbiAgfVxuICB0cnkge1xuICAgIGRlZmluZSh7fSwgXCJcIik7XG4gIH0gY2F0Y2ggKHQpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUodCwgZSwgcikge1xuICAgICAgcmV0dXJuIHRbZV0gPSByO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gd3JhcCh0LCBlLCByLCBuKSB7XG4gICAgdmFyIGkgPSBlICYmIGUucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gZSA6IEdlbmVyYXRvcixcbiAgICAgIGEgPSBPYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxcbiAgICAgIGMgPSBuZXcgQ29udGV4dChuIHx8IFtdKTtcbiAgICByZXR1cm4gbyhhLCBcIl9pbnZva2VcIiwge1xuICAgICAgdmFsdWU6IG1ha2VJbnZva2VNZXRob2QodCwgciwgYylcbiAgICB9KSwgYTtcbiAgfVxuICBmdW5jdGlvbiB0cnlDYXRjaCh0LCBlLCByKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwibm9ybWFsXCIsXG4gICAgICAgIGFyZzogdC5jYWxsKGUsIHIpXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFwidGhyb3dcIixcbiAgICAgICAgYXJnOiB0XG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBlLndyYXAgPSB3cmFwO1xuICB2YXIgaCA9IFwic3VzcGVuZGVkU3RhcnRcIixcbiAgICBsID0gXCJzdXNwZW5kZWRZaWVsZFwiLFxuICAgIGYgPSBcImV4ZWN1dGluZ1wiLFxuICAgIHMgPSBcImNvbXBsZXRlZFwiLFxuICAgIHkgPSB7fTtcbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG4gIHZhciBwID0ge307XG4gIGRlZmluZShwLCBhLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xuICB2YXIgZCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZixcbiAgICB2ID0gZCAmJiBkKGQodmFsdWVzKFtdKSkpO1xuICB2ICYmIHYgIT09IHIgJiYgbi5jYWxsKHYsIGEpICYmIChwID0gdik7XG4gIHZhciBnID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocCk7XG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyh0KSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIGRlZmluZSh0LCBlLCBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKGUsIHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcih0LCBlKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKHIsIG8sIGksIGEpIHtcbiAgICAgIHZhciBjID0gdHJ5Q2F0Y2godFtyXSwgdCwgbyk7XG4gICAgICBpZiAoXCJ0aHJvd1wiICE9PSBjLnR5cGUpIHtcbiAgICAgICAgdmFyIHUgPSBjLmFyZyxcbiAgICAgICAgICBoID0gdS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGggJiYgXCJvYmplY3RcIiA9PSBfdHlwZW9mKGgpICYmIG4uY2FsbChoLCBcIl9fYXdhaXRcIikgPyBlLnJlc29sdmUoaC5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB0LCBpLCBhKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCB0LCBpLCBhKTtcbiAgICAgICAgfSkgOiBlLnJlc29sdmUoaCkudGhlbihmdW5jdGlvbiAodCkge1xuICAgICAgICAgIHUudmFsdWUgPSB0LCBpKHUpO1xuICAgICAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCB0LCBpLCBhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBhKGMuYXJnKTtcbiAgICB9XG4gICAgdmFyIHI7XG4gICAgbyh0aGlzLCBcIl9pbnZva2VcIiwge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKHQsIG4pIHtcbiAgICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBlKGZ1bmN0aW9uIChlLCByKSB7XG4gICAgICAgICAgICBpbnZva2UodCwgbiwgZSwgcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHIgPSByID8gci50aGVuKGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLCBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZykgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoZSwgciwgbikge1xuICAgIHZhciBvID0gaDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGksIGEpIHtcbiAgICAgIGlmIChvID09PSBmKSB0aHJvdyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICBpZiAobyA9PT0gcykge1xuICAgICAgICBpZiAoXCJ0aHJvd1wiID09PSBpKSB0aHJvdyBhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiB0LFxuICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBmb3IgKG4ubWV0aG9kID0gaSwgbi5hcmcgPSBhOzspIHtcbiAgICAgICAgdmFyIGMgPSBuLmRlbGVnYXRlO1xuICAgICAgICBpZiAoYykge1xuICAgICAgICAgIHZhciB1ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShjLCBuKTtcbiAgICAgICAgICBpZiAodSkge1xuICAgICAgICAgICAgaWYgKHUgPT09IHkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcIm5leHRcIiA9PT0gbi5tZXRob2QpIG4uc2VudCA9IG4uX3NlbnQgPSBuLmFyZztlbHNlIGlmIChcInRocm93XCIgPT09IG4ubWV0aG9kKSB7XG4gICAgICAgICAgaWYgKG8gPT09IGgpIHRocm93IG8gPSBzLCBuLmFyZztcbiAgICAgICAgICBuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKTtcbiAgICAgICAgfSBlbHNlIFwicmV0dXJuXCIgPT09IG4ubWV0aG9kICYmIG4uYWJydXB0KFwicmV0dXJuXCIsIG4uYXJnKTtcbiAgICAgICAgbyA9IGY7XG4gICAgICAgIHZhciBwID0gdHJ5Q2F0Y2goZSwgciwgbik7XG4gICAgICAgIGlmIChcIm5vcm1hbFwiID09PSBwLnR5cGUpIHtcbiAgICAgICAgICBpZiAobyA9IG4uZG9uZSA/IHMgOiBsLCBwLmFyZyA9PT0geSkgY29udGludWU7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBwLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IG4uZG9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgXCJ0aHJvd1wiID09PSBwLnR5cGUgJiYgKG8gPSBzLCBuLm1ldGhvZCA9IFwidGhyb3dcIiwgbi5hcmcgPSBwLmFyZyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGUsIHIpIHtcbiAgICB2YXIgbiA9IHIubWV0aG9kLFxuICAgICAgbyA9IGUuaXRlcmF0b3Jbbl07XG4gICAgaWYgKG8gPT09IHQpIHJldHVybiByLmRlbGVnYXRlID0gbnVsbCwgXCJ0aHJvd1wiID09PSBuICYmIGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0gJiYgKHIubWV0aG9kID0gXCJyZXR1cm5cIiwgci5hcmcgPSB0LCBtYXliZUludm9rZURlbGVnYXRlKGUsIHIpLCBcInRocm93XCIgPT09IHIubWV0aG9kKSB8fCBcInJldHVyblwiICE9PSBuICYmIChyLm1ldGhvZCA9IFwidGhyb3dcIiwgci5hcmcgPSBuZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnXCIgKyBuICsgXCInIG1ldGhvZFwiKSksIHk7XG4gICAgdmFyIGkgPSB0cnlDYXRjaChvLCBlLml0ZXJhdG9yLCByLmFyZyk7XG4gICAgaWYgKFwidGhyb3dcIiA9PT0gaS50eXBlKSByZXR1cm4gci5tZXRob2QgPSBcInRocm93XCIsIHIuYXJnID0gaS5hcmcsIHIuZGVsZWdhdGUgPSBudWxsLCB5O1xuICAgIHZhciBhID0gaS5hcmc7XG4gICAgcmV0dXJuIGEgPyBhLmRvbmUgPyAocltlLnJlc3VsdE5hbWVdID0gYS52YWx1ZSwgci5uZXh0ID0gZS5uZXh0TG9jLCBcInJldHVyblwiICE9PSByLm1ldGhvZCAmJiAoci5tZXRob2QgPSBcIm5leHRcIiwgci5hcmcgPSB0KSwgci5kZWxlZ2F0ZSA9IG51bGwsIHkpIDogYSA6IChyLm1ldGhvZCA9IFwidGhyb3dcIiwgci5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIiksIHIuZGVsZWdhdGUgPSBudWxsLCB5KTtcbiAgfVxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkodCkge1xuICAgIHZhciBlID0ge1xuICAgICAgdHJ5TG9jOiB0WzBdXG4gICAgfTtcbiAgICAxIGluIHQgJiYgKGUuY2F0Y2hMb2MgPSB0WzFdKSwgMiBpbiB0ICYmIChlLmZpbmFsbHlMb2MgPSB0WzJdLCBlLmFmdGVyTG9jID0gdFszXSksIHRoaXMudHJ5RW50cmllcy5wdXNoKGUpO1xuICB9XG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkodCkge1xuICAgIHZhciBlID0gdC5jb21wbGV0aW9uIHx8IHt9O1xuICAgIGUudHlwZSA9IFwibm9ybWFsXCIsIGRlbGV0ZSBlLmFyZywgdC5jb21wbGV0aW9uID0gZTtcbiAgfVxuICBmdW5jdGlvbiBDb250ZXh0KHQpIHtcbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbe1xuICAgICAgdHJ5TG9jOiBcInJvb3RcIlxuICAgIH1dLCB0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKSwgdGhpcy5yZXNldCghMCk7XG4gIH1cbiAgZnVuY3Rpb24gdmFsdWVzKGUpIHtcbiAgICBpZiAoZSB8fCBcIlwiID09PSBlKSB7XG4gICAgICB2YXIgciA9IGVbYV07XG4gICAgICBpZiAocikgcmV0dXJuIHIuY2FsbChlKTtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUubmV4dCkgcmV0dXJuIGU7XG4gICAgICBpZiAoIWlzTmFOKGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgbyA9IC0xLFxuICAgICAgICAgIGkgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgICAgZm9yICg7ICsrbyA8IGUubGVuZ3RoOykgaWYgKG4uY2FsbChlLCBvKSkgcmV0dXJuIG5leHQudmFsdWUgPSBlW29dLCBuZXh0LmRvbmUgPSAhMSwgbmV4dDtcbiAgICAgICAgICAgIHJldHVybiBuZXh0LnZhbHVlID0gdCwgbmV4dC5kb25lID0gITAsIG5leHQ7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGkubmV4dCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoX3R5cGVvZihlKSArIFwiIGlzIG5vdCBpdGVyYWJsZVwiKTtcbiAgfVxuICByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIG8oZywgXCJjb25zdHJ1Y3RvclwiLCB7XG4gICAgdmFsdWU6IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLFxuICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgfSksIG8oR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFwiY29uc3RydWN0b3JcIiwge1xuICAgIHZhbHVlOiBHZW5lcmF0b3JGdW5jdGlvbixcbiAgICBjb25maWd1cmFibGU6ICEwXG4gIH0pLCBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgdSwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKSwgZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKHQpIHtcbiAgICB2YXIgZSA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdCAmJiB0LmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiAhIWUgJiYgKGUgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8IFwiR2VuZXJhdG9yRnVuY3Rpb25cIiA9PT0gKGUuZGlzcGxheU5hbWUgfHwgZS5uYW1lKSk7XG4gIH0sIGUubWFyayA9IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZih0LCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAodC5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgZGVmaW5lKHQsIHUsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLCB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZyksIHQ7XG4gIH0sIGUuYXdyYXAgPSBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB7XG4gICAgICBfX2F3YWl0OiB0XG4gICAgfTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKSwgZGVmaW5lKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlLCBjLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBlLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yLCBlLmFzeW5jID0gZnVuY3Rpb24gKHQsIHIsIG4sIG8sIGkpIHtcbiAgICB2b2lkIDAgPT09IGkgJiYgKGkgPSBQcm9taXNlKTtcbiAgICB2YXIgYSA9IG5ldyBBc3luY0l0ZXJhdG9yKHdyYXAodCwgciwgbiwgbyksIGkpO1xuICAgIHJldHVybiBlLmlzR2VuZXJhdG9yRnVuY3Rpb24ocikgPyBhIDogYS5uZXh0KCkudGhlbihmdW5jdGlvbiAodCkge1xuICAgICAgcmV0dXJuIHQuZG9uZSA/IHQudmFsdWUgOiBhLm5leHQoKTtcbiAgICB9KTtcbiAgfSwgZGVmaW5lSXRlcmF0b3JNZXRob2RzKGcpLCBkZWZpbmUoZywgdSwgXCJHZW5lcmF0b3JcIiksIGRlZmluZShnLCBhLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBkZWZpbmUoZywgXCJ0b1N0cmluZ1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH0pLCBlLmtleXMgPSBmdW5jdGlvbiAodCkge1xuICAgIHZhciBlID0gT2JqZWN0KHQpLFxuICAgICAgciA9IFtdO1xuICAgIGZvciAodmFyIG4gaW4gZSkgci5wdXNoKG4pO1xuICAgIHJldHVybiByLnJldmVyc2UoKSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIGZvciAoOyByLmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHQgPSByLnBvcCgpO1xuICAgICAgICBpZiAodCBpbiBlKSByZXR1cm4gbmV4dC52YWx1ZSA9IHQsIG5leHQuZG9uZSA9ICExLCBuZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQuZG9uZSA9ICEwLCBuZXh0O1xuICAgIH07XG4gIH0sIGUudmFsdWVzID0gdmFsdWVzLCBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcbiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoZSkge1xuICAgICAgaWYgKHRoaXMucHJldiA9IDAsIHRoaXMubmV4dCA9IDAsIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB0LCB0aGlzLmRvbmUgPSAhMSwgdGhpcy5kZWxlZ2F0ZSA9IG51bGwsIHRoaXMubWV0aG9kID0gXCJuZXh0XCIsIHRoaXMuYXJnID0gdCwgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSksICFlKSBmb3IgKHZhciByIGluIHRoaXMpIFwidFwiID09PSByLmNoYXJBdCgwKSAmJiBuLmNhbGwodGhpcywgcikgJiYgIWlzTmFOKCtyLnNsaWNlKDEpKSAmJiAodGhpc1tyXSA9IHQpO1xuICAgIH0sXG4gICAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgIHRoaXMuZG9uZSA9ICEwO1xuICAgICAgdmFyIHQgPSB0aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtcbiAgICAgIGlmIChcInRocm93XCIgPT09IHQudHlwZSkgdGhyb3cgdC5hcmc7XG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIGRpc3BhdGNoRXhjZXB0aW9uKGUpIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHRocm93IGU7XG4gICAgICB2YXIgciA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobiwgbykge1xuICAgICAgICByZXR1cm4gYS50eXBlID0gXCJ0aHJvd1wiLCBhLmFyZyA9IGUsIHIubmV4dCA9IG4sIG8gJiYgKHIubWV0aG9kID0gXCJuZXh0XCIsIHIuYXJnID0gdCksICEhbztcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIG8gPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgbyA+PSAwOyAtLW8pIHtcbiAgICAgICAgdmFyIGkgPSB0aGlzLnRyeUVudHJpZXNbb10sXG4gICAgICAgICAgYSA9IGkuY29tcGxldGlvbjtcbiAgICAgICAgaWYgKFwicm9vdFwiID09PSBpLnRyeUxvYykgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgaWYgKGkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBjID0gbi5jYWxsKGksIFwiY2F0Y2hMb2NcIiksXG4gICAgICAgICAgICB1ID0gbi5jYWxsKGksIFwiZmluYWxseUxvY1wiKTtcbiAgICAgICAgICBpZiAoYyAmJiB1KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgaS5jYXRjaExvYykgcmV0dXJuIGhhbmRsZShpLmNhdGNoTG9jLCAhMCk7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgaS5maW5hbGx5TG9jKSByZXR1cm4gaGFuZGxlKGkuZmluYWxseUxvYyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgaS5jYXRjaExvYykgcmV0dXJuIGhhbmRsZShpLmNhdGNoTG9jLCAhMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdSkgdGhyb3cgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBpLmZpbmFsbHlMb2MpIHJldHVybiBoYW5kbGUoaS5maW5hbGx5TG9jKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFicnVwdDogZnVuY3Rpb24gYWJydXB0KHQsIGUpIHtcbiAgICAgIGZvciAodmFyIHIgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgciA+PSAwOyAtLXIpIHtcbiAgICAgICAgdmFyIG8gPSB0aGlzLnRyeUVudHJpZXNbcl07XG4gICAgICAgIGlmIChvLnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgbi5jYWxsKG8sIFwiZmluYWxseUxvY1wiKSAmJiB0aGlzLnByZXYgPCBvLmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgaSA9IG87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGkgJiYgKFwiYnJlYWtcIiA9PT0gdCB8fCBcImNvbnRpbnVlXCIgPT09IHQpICYmIGkudHJ5TG9jIDw9IGUgJiYgZSA8PSBpLmZpbmFsbHlMb2MgJiYgKGkgPSBudWxsKTtcbiAgICAgIHZhciBhID0gaSA/IGkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmV0dXJuIGEudHlwZSA9IHQsIGEuYXJnID0gZSwgaSA/ICh0aGlzLm1ldGhvZCA9IFwibmV4dFwiLCB0aGlzLm5leHQgPSBpLmZpbmFsbHlMb2MsIHkpIDogdGhpcy5jb21wbGV0ZShhKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZSh0LCBlKSB7XG4gICAgICBpZiAoXCJ0aHJvd1wiID09PSB0LnR5cGUpIHRocm93IHQuYXJnO1xuICAgICAgcmV0dXJuIFwiYnJlYWtcIiA9PT0gdC50eXBlIHx8IFwiY29udGludWVcIiA9PT0gdC50eXBlID8gdGhpcy5uZXh0ID0gdC5hcmcgOiBcInJldHVyblwiID09PSB0LnR5cGUgPyAodGhpcy5ydmFsID0gdGhpcy5hcmcgPSB0LmFyZywgdGhpcy5tZXRob2QgPSBcInJldHVyblwiLCB0aGlzLm5leHQgPSBcImVuZFwiKSA6IFwibm9ybWFsXCIgPT09IHQudHlwZSAmJiBlICYmICh0aGlzLm5leHQgPSBlKSwgeTtcbiAgICB9LFxuICAgIGZpbmlzaDogZnVuY3Rpb24gZmluaXNoKHQpIHtcbiAgICAgIGZvciAodmFyIGUgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgZSA+PSAwOyAtLWUpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLnRyeUVudHJpZXNbZV07XG4gICAgICAgIGlmIChyLmZpbmFsbHlMb2MgPT09IHQpIHJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbiwgci5hZnRlckxvYyksIHJlc2V0VHJ5RW50cnkociksIHk7XG4gICAgICB9XG4gICAgfSxcbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uIF9jYXRjaCh0KSB7XG4gICAgICBmb3IgKHZhciBlID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7XG4gICAgICAgIHZhciByID0gdGhpcy50cnlFbnRyaWVzW2VdO1xuICAgICAgICBpZiAoci50cnlMb2MgPT09IHQpIHtcbiAgICAgICAgICB2YXIgbiA9IHIuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAoXCJ0aHJvd1wiID09PSBuLnR5cGUpIHtcbiAgICAgICAgICAgIHZhciBvID0gbi5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiBkZWxlZ2F0ZVlpZWxkKGUsIHIsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGUpLFxuICAgICAgICByZXN1bHROYW1lOiByLFxuICAgICAgICBuZXh0TG9jOiBuXG4gICAgICB9LCBcIm5leHRcIiA9PT0gdGhpcy5tZXRob2QgJiYgKHRoaXMuYXJnID0gdCksIHk7XG4gICAgfVxuICB9LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcmVnZW5lcmF0b3JSdW50aW1lLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUT0RPKEJhYmVsIDgpOiBSZW1vdmUgdGhpcyBmaWxlLlxuXG52YXIgcnVudGltZSA9IHJlcXVpcmUoXCIuLi9oZWxwZXJzL3JlZ2VuZXJhdG9yUnVudGltZVwiKSgpO1xubW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvYmxvYi9tYWluL3BhY2thZ2VzL3J1bnRpbWUvcnVudGltZS5qcyNMNzM2PVxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gXCJvYmplY3RcIikge1xuICAgIGdsb2JhbFRoaXMucmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbiAgfSBlbHNlIHtcbiAgICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xuICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJjaGFubmVsc1wiOiAwXG59O1xuXG4vLyBubyBjaHVuayBvbiBkZW1hbmQgbG9hZGluZ1xuXG4vLyBubyBwcmVmZXRjaGluZ1xuXG4vLyBubyBwcmVsb2FkZWRcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdFxuXG4vLyBubyBvbiBjaHVua3MgbG9hZGVkXG5cbi8vIG5vIGpzb25wIGZ1bmN0aW9uIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBQaGVuaXggUmVhbCBUaW1lIFNvbHV0aW9ucywgSW5jLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBDaGFubmVscyBmcm9tICcuL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIENoYW5uZWxzLFxuICBDaGFubmVsU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59OyJdLCJuYW1lcyI6WyJEaXNwb3NhYmxlIiwiU3ViamVjdCIsIlJlYWRPbmx5U3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0IiwiZGVmYXVsdERvY3VtZW50Rm9jdXNJbnRlcnZhbFRpbWVvdXQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiZGV0ZWN0VGFiRm9jdXNDaGFuZ2UiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiaGlkZGVuIiwidmlzaWJpbGl0eUNoYW5nZSIsImRvY3VtZW50IiwiX3R5cGVvZiIsIm1zSGlkZGVuIiwid2Via2l0SGlkZGVuIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImlzRm9yZWdyb3VuZCIsInNldEZvY3VzU3RhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwiYWRkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxpc3RlbkZvckRvY3VtZW50Rm9jdXMiLCJjYWxsIiwiX3RoaXMyIiwiX2RvY3VtZW50Rm9jdXNJbnRlcnZhbCIsIndpbmRvdyIsInNldEludGVydmFsIiwiaGFzRm9jdXMiLCJjbGVhckludGVydmFsIiwiZGVmYXVsdCIsIkJyb3dzZXJEZXRlY3RvciIsIl9icm93c2VyTmFtZUFuZFZlcnNpb24iLCJfYnJvd3Nlck5hbWUiLCJfYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9pc0FuZHJvaWQiLCJfaXNDaHJvbWU2OSIsIl9pc0Nocm9tZTcwIiwiX2lzQ2hyb21lNzEiLCJfaXNDaHJvbWU3MiIsIl9pc0Nocm9tZTc0IiwiX2lzQ2hyb21lNzUiLCJfaXNDaHJvbWU3NiIsIl9pc0Nocm9tZTc3IiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIlRlbGVtZXRyeURlZmF1bHQiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiTG9nZ2VyRGVmYXVsdHMiLCJQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJkZWZhdWx0U3RyaW5nVmFsdWUiLCJnZXRCb29sZWFuVmFsdWUiLCJkZWZhdWx0Qm9vbGVhblZhbHVlIiwiY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUiLCJkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlIiwiZGVmYXVsdExvZ2dpbmdMZXZlbCIsImRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsIiwiZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCIsIkZlYXR1cmVFbmFibGVtZW50IiwiR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIiLCJFcnJvciIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb24iLCJpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQiLCJmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCIsInF1ZXVlTWljcm90YXNrIiwib3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uIiwic2V0VGltZW91dCIsImltZyIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJvbmVycm9yIiwicmV2b2tlT2JqZWN0VVJMIiwiTmV0d29ya01vbml0b3IiLCJ1bmRlZmluZWQiLCJpc1N1cHBvcnRlZCIsInNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycyIsInVwZGF0ZVN0YXRpc3RpY3MiLCJfaXNTdXBwb3J0ZWQiLCJfcnR0IiwiX2VmZmVjdGl2ZVR5cGUiLCJfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImRvd25saW5rIiwiZG93bmxpbmtNYXgiLCJnZXRFZmZlY3RpdmVUeXBlIiwiZWZmZWN0aXZlVHlwZSIsInR5cGUiLCJnZXRSb3VuZFRyaXBUaW1lIiwicnR0IiwibGlzdGVuZXIiLCJNZXRyaWNzVHlwZSIsIk1ldHJpY1R5cGUiLCJEdXJhdGlvbnMiLCJTREsiLCJMb2dnZXJGYWN0b3J5IiwiU3RyZWFtU2V0dXBMaXN0ZW5lciIsInBhZ2VMb2FkVGltZSIsImdldExvZ2dlciIsIm1ldHJpY3NTZXJ2aWNlIiwiX3N0YXJ0VGltZSIsIl9wYWdlTG9hZFRpbWUiLCJzdWNjZXNzIiwic3RyZWFtSWQiLCJyZWNvcmRTdHJlYW1NZXRyaWMiLCJTZXR1cENvbXBsZXRlZCIsImZhaWwiLCJTZXR1cEZhaWxlZCIsIm1ldHJpY1R5cGUiLCJfbWV0cmljU3VibWl0dGVkIiwic2V0dXBUaW1lIiwibWV0cmljTmFtZSIsImdldE5hbWUiLCJwdXNoIiwicnVudGltZSIsInVpbnQ2NCIsIl9sb2dnZXIiLCJpbmZvIiwidG9Jc29TdHJpbmciLCJFZGdlVG9rZW4iLCJlZGdlQXV0aFRva2VuUHJlZml4IiwiRWRnZUF1dGhQYXJzZXIiLCJwYXJzZVRva2VuIiwidG9rZW4iLCJpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCIsImVycm9yIiwiZGVjb2RlZFRva2VuIiwiYXRvYiIsInN1YnN0ciIsImxlbmd0aCIsImVkZ2VUb2tlbiIsIkpTT04iLCJwYXJzZSIsImUiLCJzdGFydHNXaXRoIiwiX2VkZ2VUb2tlbiR0b2tlbiIsIl9lZGdlVG9rZW4kdG9rZW4yIiwiX2FwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbklkIiwiX3Rva2VuIiwidXJpIiwiY2FwYWJpbGl0aWVzIiwiQnVpbGRGZWF0dXJlcyIsIl9zZW5kTG9jYWxDYW5kaWRhdGVzIiwiX3NlbmRMb2dzIiwiX3NlbmRNZXRyaWNzIiwiX2xvZ1RvQ29uc29sZSIsImFwcGx5RmVhdHVyZXMiLCJmZWF0dXJlcyIsIl9fRkVBVFVSRVNfXyIsInNlbmRMb2NhbENhbmRpZGF0ZXMiLCJzZW5kTG9ncyIsInNlbmRNZXRyaWNzIiwibG9nVG9Db25zb2xlIiwiaXNDaHJvbWU3NCIsImlzQ2hyb21lNzUiLCJpc0Nocm9tZTc2IiwiaXNDaHJvbWU3NyIsImlzQ2hyb21lNjkiLCJpc0Nocm9tZTcwIiwiaXNDaHJvbWU3MSIsImlzQ2hyb21lNzIiLCJicm93c2VyTmFtZSIsImJyb3dzZXJNYWpvclZlcnNpb24iLCJfZG9jdW1lbnQiLCJNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yIiwiTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciIsIlJUQ1J0cFJlY2VpdmVyIiwicHJvdG90eXBlIiwiY3JlYXRlRW5jb2RlZFN0cmVhbXMiLCJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiZGlzcG9zYWJsZSIsIl9kaXNwb3NlZCIsIl9kaXNwb3NhYmxlIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJkYXRhIiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYmluZCIsImFwcGx5VGVsZW1ldHJ5TG9nZ2VyIiwicGFyYW1ldGVyVmFsdWUiLCJfY29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwidXJsIiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJtZXRyaWNzU2VydmljZXMiLCJfbWV0cmljc1NlcnZpY2VzIiwibWV0cmljc0NvbmZpZ3VyYXRpb24iLCJjbGllbnRTZXNzaW9uSWQiLCJnZXRUZWxlbWV0cnlVcmwiLCJnZXRFbnZpcm9ubWVudEZyb21VcmwiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCIsInRlbGVtZXRyeUxldmVsIiwic2V0VGVsZW1ldHJ5TGV2ZWwiLCJ2YWx1ZXMiLCJFeHBvbmVudGlhbEJhY2tvZmYiLCJWZXJzaW9uTWFuYWdlciIsInJlcXVlc3RTaXplTGltaXQiLCJtYXhCdWZmZXJlZFJlY29yZHMiLCJsb2NhdGlvbiIsImhvc3RuYW1lIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsIm1ldHJpYyIsInByZXZpb3VzVmFsdWUiLCJyZXNvdXJjZSIsImtpbmQiLCJtZXRyaWNSZWNvcmQiLCJ0aW1lc3RhbXAiLCJmdWxsUXVhbGlmaWVkTmFtZSIsIl9kb21haW4iLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJtZXRyaWNzTWVzc2FnZXMiLCJmb3JtRGF0YSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJGb3JtRGF0YSIsImFwcGVuZCIsInJlY29yZHMiLCJmZXRjaCIsIm1ldGhvZCIsImJvZHkiLCJhYnJ1cHQiLCJzZW50Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInRoZW4iLCJyZXNwb25zZSIsImlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlIiwiX2ZhaWx1cmVDb3VudCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQiLCJjYXRjaCIsIl9yZWYiLCJzdGF0dXMiLCJ0ZWxlbWV0cnlMZXZlbFR5cGUiLCJQcm9taXNlSGFuZGxlciIsIlByb21pc2UiLCJjYWxsYmFjayIsIlR5cGVFcnJvciIsIl9zdGF0ZSIsIl9oYW5kbGVkIiwiX3ZhbHVlIiwiX2RlZmVycmVkcyIsImRvUmVzb2x2ZSIsImRvbmUiLCJwcm9taXNlUmVzb2x2ZSIsInJlYXNvbiIsInByb21pc2VSZWplY3QiLCJuZXdWYWx1ZSIsInByb21pc2UiLCJmaW5hbGUiLCJfaW1tZWRpYXRlIiwiX3VuaGFuZGxlZFJlamVjdGlvbiIsImkiLCJsZW4iLCJoYW5kbGUiLCJkZWZlcnJlZCIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInJlc3VsdCIsImFsbCIsImFyciIsInJlc29sdmUiLCJyZWplY3QiLCJpc0FycmF5IiwicmVtYWluaW5nIiwibWFuYWdlUmVzcG9uc2UiLCJjb25zdHJ1Y3RvciIsIl8iLCJyYWNlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIlBlZXJDb25uZWN0aW9uU2VydmljZSIsIl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nIiwiaXNQcmVjYWNoaW5nRW5hYmxlZCIsInByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FjaGVkIiwiZGlyZWN0aW9uIiwicGVlckNvbm5lY3Rpb24iLCJjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FsbGVlMyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsInZpZGVvVHJhbnNjZWl2ZXIiLCJhdWRpb1RyYW5zY2VpdmVyIiwib3B0aW9ucyIsImFkZFRyYW5zY2VpdmVyIiwidDAiLCJ0MSIsInQyIiwiY3JlYXRlT2ZmZXIiLCJ0MyIsImxvY2FsT2ZmZXIiLCJvZmZlclRvUmVjZWl2ZUF1ZGlvIiwib2ZmZXJUb1JlY2VpdmVWaWRlbyIsInQ0IiwidDUiLCJSdGNDb25maWd1cmF0aW9uTWFuYWdlciIsInRydW5jYXRlSWNlU2VydmVycyIsImljZVNlcnZlcnMiLCJ1cmxzIiwidXNlcm5hbWUiLCJjcmVkZW50aWFsIiwiU2RwUGFyc2VyIiwidXBkYXRlU3RhdGlzdGljVGltZW91dCIsIlJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwibWVkaWFTdHJlYW0iLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfdHJhY2tzVG9Nb25pdG9yIiwiZ2V0VHJhY2tzIiwibWFwIiwidHJhY2siLCJnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCIsInBhcnNlZFNEUCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInNkcCIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfaXNNb25pdG9yUnVubmluZyIsIl91cGRhdGVUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiX3VwZGF0ZVN0YXRpc3RpYyIsIl9pZ25vcmVkIiwiZ2V0S2luZEZvclNhZmFyaTExIiwiZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCIsInVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSIsImlkIiwiZ2V0U3RhdHMiLCJzdGF0cyIsInJ0Y1N0YXRpc3RpY3MiLCJyb3VuZFRyaXBUaW1lIiwibGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wIiwicmVwb3J0IiwiY3VycmVudFJvdW5kVHJpcFRpbWUiLCJtZWRpYVR5cGUiLCJjb2RlYyIsImNvZGVjSWQiLCJtaW1lVHlwZSIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdiIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjIiLCJfdGhpcyRfcnRjU3RhdGlzdGljJHYzIiwiX3RoaXMkX3J0Y1N0YXRpc3RpYyR2NCIsIl90aGlzJF9ydGNTdGF0aXN0aWMkdjUiLCJieXRlcyIsImJ5dGVzUmVjZWl2ZWQiLCJwcmV2aW91c0J5dGVzUmVjZWl2ZWQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzTG9zdCIsInBhY2tldHNSZWNlaXZlZCIsImdldENvZGVjQnlUeXBlIiwidmlkZW8iLCJmcmFtZXNEZWNvZGVkIiwiZnBzIiwiX3VwZGF0ZVN0YXRpc3RpY0xlZ2FjeSIsImdldFN0YXRzTGVnYWN5IiwibmFtZXMiLCJzdGF0IiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwidXNlZENvZGVjTGluZSIsInNkcExpbmUiLCJ1c2VkQ29kZWMiLCJjb2RlY05hbWUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb24iLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQiLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1BlZXJDb25uZWN0aW9uIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJnZXRDb25maWd1cmF0aW9uIiwic2V0Q29uZmlndXJhdGlvbiIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJfdGhpczQiLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJzdWJzY3JpYmUiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJpbml0IiwiX2luaXRpYWxpemVkIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIkRpbWVuc2lvbiIsIkNoYW5uZWxTdGF0ZSIsIlZpZGVvVGVsZW1ldHJ5IiwiU2Vzc2lvblRlbGVtZXRyeSIsIlRva2VuQ29udGV4dCIsIkNoYW5uZWxDb250ZXh0IiwiRW5jb2RlZFN0cmVhbVNpbmsiLCJTdHJlYW1UcmFja1RyYW5zZm9ybSIsIlN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJTdGF0ZUNvbnRleHQiLCJTdHJlYW1GYWN0b3J5IiwiRGlzY292ZXJ5IiwiZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uIiwiZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMiLCJzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5VmlkZW9FbGVtZW50IiwiX3JlYWRPbmx5VG9rZW4iLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiIsIl9yZWFkT25seVN0YXRlIiwic3RhdGUiLCJfcmVhZE9ubHlBdXRvTXV0ZWQiLCJhdXRvTXV0ZWQiLCJfcmVhZE9ubHlBdXRvUGF1c2VkIiwiYXV0b1BhdXNlZCIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJ0b2tlbkV4cGlyaW5nIiwiX3JlYWRPbmx5QXV0aG9yaXplZCIsImF1dGhvcml6ZWQiLCJfcmVhZE9ubHlPbmxpbmUiLCJvbmxpbmUiLCJfcmVhZE9ubHlMb2FkaW5nIiwibG9hZGluZyIsIl9yZWFkT25seVBsYXlpbmciLCJwbGF5aW5nIiwiX3JlYWRPbmx5U3RhbmRieSIsInN0YW5kYnkiLCJfcmVhZE9ubHlTdG9wcGVkIiwic3RvcHBlZCIsIl9yZWFkT25seVRhcmdldExhZyIsIl9yZWFkT25seUxhZyIsImxhZyIsIl9yZWFkT25seUJpdHJhdGVMaW1pdCIsImJpdHJhdGVMaW1pdCIsIl9yZWFkT25seVJlc29sdXRpb24iLCJyZXNvbHV0aW9uIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiZmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJlbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsInN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwiY2hhbm5lbERpc3Bvc2FibGVzIiwiX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlciIsImhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkIiwicmVuZGVyZXJEaXNwb3NhYmxlcyIsInZpZGVvVGVsZW1ldHJ5IiwiZGF0YXNldCIsInNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUiLCJzZXR1cExpc3RlbmVyRm9yUmVidWZmZXJpbmciLCJTdG9wcGVkIiwicmVzdGFydEFmdGVyU3RvcCIsImNsZWFyRmFpbHVyZUNvdW50VGltZW91dCIsIlBsYXlpbmciLCJvblZpZGVvUmVzb2x1dGlvbkNoYW5nZXMiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJjaGFubmVsSW5pdGlhbGl6YXRpb24iLCJnZXRUaW1lIiwibGltaXRCaXRyYXRlIiwiS2VlcCIsIk5vcm1hbCIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzdGFydCIsInBhdXNlIiwic3JjT2JqZWN0Iiwid2lkdGgiLCJ2aWRlb1dpZHRoIiwiaGVpZ2h0IiwidmlkZW9IZWlnaHQiLCJlbXB0eSIsImRpc3Bvc2FibGVzIiwic2V0Qml0cmF0ZUxpbWl0IiwiY2xlYXJCaXRyYXRlTGltaXQiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiUmVzZXQiLCJ1cGRhdGVUYXJnZXRMYWciLCJfc3RvcCIsImlzU3RhcnRpbmciLCJwcm9jZXNzU3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJfcmVzdW1lIiwicGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJyZXN1bWUiLCJtdXRlIiwibXV0ZWQiLCJ1bm11dGUiLCJfZGlzcG9zZSIsImlzRGlzcG9zZWQiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwiX2NhbGxlZTUiLCJfdGhpczUiLCJsaXN0ZW5PblN0cmVhbVNldHVwIiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWQiLCJ2YWxpZGF0aW9uUmVzdWx0IiwiX1N0cmVhbVRyYWNrVHJhbnNmb3JtMiIsIl92YWxpZCIsIl92YWxpZGF0aW9uUmVzdWx0IiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhIiwiX3ZhbGlkMiIsIl92YWxpZGF0aW9uUmVzdWx0MiIsIl9FbmNvZGVkU3RyZWFtU2luayR2YTIiLCJfdmFsaWQzIiwiX3ZhbGlkYXRpb25SZXN1bHQzIiwiaGFzVHJhbnNmb3JtU3RyZWFtQ2FsbGJhY2siLCJoYXNFbmNvZGVkU3RyZWFtU2luayIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVBsYXllciIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIlVuYXV0aG9yaXplZCIsInZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybSIsIkNvbmZpZ3VyYXRpb25FcnJvciIsInZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsiLCJpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJTdGFydGluZyIsIlJlY292ZXJpbmciLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJjcmVhdGUiLCJDbGllbnRTdGFydEVycm9yIiwiZmluYWxseSIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwidGltZW91dElkIiwiZ2V0UmV0cnlJbnRlcnZhbCIsIl9yZXN0YXJ0QWZ0ZXJTdG9wIiwiX2NhbGxlZTYiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJfcGxheSIsIl9jYWxsZWU3IiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3IiwicGxheSIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJQYXVzZWQiLCJSZWNvbm5lY3RpbmciLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsIl9jYWxsZWU4IiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4IiwiX3RoaXM2IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsImRlc3Ryb3lTdHJlYW0iLCJfcmVmMiIsInBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzNyIsInBsYXlQcm9taXNlIiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsImRlZmF1bHRUYXJnZXRMYWciLCJfb3B0aW9ucyR0YXJnZXRMYWciLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiRm9yY2UiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsInByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJkaXNjb3ZlcnlTZXJ2aWNlIiwiY2FjaGVkVmFsdWUiLCJfY2FjaGUiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsIkVuZFBvaW50IiwiZGVmYXVsdFRpbWVvdXQiLCJfdXJpIiwiX2Rpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwidGltZW91dCIsImFzU3RyaW5nIiwiZW5kUG9pbnRzIiwib2siLCJ0ZXh0IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIl9kaXNjb3ZlcnlVcmkiLCJkaXNjb3ZlcnlQYXJhbWV0ZXJzIiwic2VhcmNoUGFyYW1zIiwiYXBpVmVyc2lvbiIsIl90aW1lb3V0IiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsImZpbmlzaGVkIiwiYnVpbGRQaW5nVXJsIiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiY2xpZW50VmVyc2lvbiIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwiaHR0cFJlc3BvbnNlIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTUiLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl94MTgiLCJfeDE5IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzZW5kQmVhY29uIiwiX3gyMCIsIl94MjEiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJqc29uIiwicnRjQ29uZmlndXJhdGlvbiIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UiLCJfeDIyIiwiX3gyMyIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMTAiLCJwdWJsaXNoUmVzcG9uc2UiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsIl94MjQiLCJfeDI1IiwiYnVuZGxlUG9saWN5IiwiaWNlQ2FuZGlkYXRlUG9vbFNpemUiLCJpY2VUcmFuc3BvcnRQb2xpY3kiLCJydGNwTXV4UG9saWN5IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfY2FsbGVlMTEiLCJfY2FsbGVlMTEkIiwiX2NvbnRleHQxMSIsIl94MjYiLCJfY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2NhbGxlZTEyIiwiX2NhbGxlZTEyJCIsIl9jb250ZXh0MTIiLCJfeDI3IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jYWxsZWUxMyIsIl9jYWxsZWUxMyQiLCJfY29udGV4dDEzIiwiX3gyOCIsIkluc2VydGFibGVTdHJlYW1zIiwiaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwiLCJkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0IiwiUmVhbFRpbWVTdHJlYW0iLCJjaGFubmVsQ29udGV4dCIsInBlZXJDb25uZWN0aW9uQ29udGV4dCIsInN0cmVhbVRyYW5zZm9ybUNvbnRleHQiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwiX3JlZjMkIiwiY2xpZW50T2ZmZXJEaXNhYmxlZCIsInN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiIsInN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiIsIl9yZWY0IiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfcmVmNSIsInJldHJ5Q2FsbGJhY2siLCJvbkxpbmUiLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIm1lZGlhU3RyZWFtUHJvbWlzZSIsIm9uVHJhY2tEaXNhYmxlZCIsInN0cmVhbXMiLCJ0cmFja0xpc3RlbmVyIiwiYW5zd2VyIiwiX3JlZjYiLCJtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsInBhcnNlZFJlbW90ZURlc2NyaXB0aW9uIiwiX0luc2VydGFibGVTdHJlYW1zJGFwIiwiYXBwbHlFbmNvZGVkU3RyZWFtVHJhbnNmb3JtYXRpb24iLCJfSW5zZXJ0YWJsZVN0cmVhbXMkYXAyIiwiYXBwbHlJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24iLCJ0cmFuc2Zvcm1lZFN0cmVhbSIsInJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwicnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24iLCJydGNTdGF0aXN0aWMiLCJzdGF0aXN0aWNzIiwicnRjVmlkZW9TdGF0aXN0aWMiLCJydGNBdWRpb1N0YXRpc3RpYyIsImF1ZGlvIiwiYXVkaW9UcmFja0ZhaWxlZCIsInZpZGVvVHJhY2tGYWlsZWQiLCJfYXBwbHlSdGNDb25maWd1cmF0aW9uIiwib3B0aW9uYWxQZWVyQ29ubmVjdGlvbiIsIm5ld1J0Y0NvbmZpZ3VyYXRpb24iLCJfb2JqZWN0U3ByZWFkIiwibWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZSIsImlzQ2xpZW50T2ZmZXJGbG93IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiUmVhbFRpbWVTdHJlYW1GYWN0b3J5IiwidG9rZW5DYXBhYmlsaXRpZXMiLCJtb2RlIiwiU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciIsIlNraXBGcmFtZSIsInJlY2VpdmVycyIsInJlY2VpdmVyIiwicmVjZWl2ZSIsIndvcmtlciIsIldvcmtlciIsImltcG9ydCIsIm1ldGEiLCJvbm1lc3NhZ2UiLCJldmVudCIsImNodW5rIiwicG9zdE1lc3NhZ2UiLCJmb3JjZUludmFsaWRGcmFtZSIsInRyYW5zZm9ybSIsInRlcm1pbmF0ZSIsImVuY29kZWRTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayIsImNvbnRyb2xsZXIiLCJzdXJyb2dhdGUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUiLCJnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjIiwiZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyIsImVucXVldWUiLCJ0cmFuc2Zvcm1lciIsIlRyYW5zZm9ybVN0cmVhbSIsInJlY2VpdmVyU3RyZWFtcyIsInNvdXJjZSIsInJlYWRhYmxlIiwic2luayIsIndyaXRhYmxlIiwicGlwZVRocm91Z2giLCJwaXBlVG8iLCJNZWRpYVN0cmVhbSIsImF1ZGlvUHVtcGVyIiwiQXVkaW8iLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSIsImdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMiLCJpbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJ2aWRlb1RyYWNrIiwicHJvY2Vzc29yIiwiZ2VuZXJhdG9yIiwicmVtb3ZlVHJhY2siLCJhdWRpb1RyYWNrIiwiU3ltYm9sIiwidG9VcHBlckNhc2UiLCJfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjIiwiT1BVUyIsImJ1ZmZlciIsIl9zaW5nbGVaZXJvQnl0ZSIsIl91c2VVcGRhdGVTdXJyb2dhdGU4Mng4MlBGcmFtZUZyYW1lTnVtYmVyIiwiX3N1cnJvZ2F0ZTgyeDgyUEZyYW1lRnJhbWVOdW1iZXIiLCJfc3Vycm9nYXRlODJ4ODJQRnJhbWVGcmFtZU51bWJlclJlc2V0IiwiX2R1bW15ODJ4ODJIMjY0IiwiSUZyYW1lIiwiX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyIsIkgyNjQiLCJWUDgiLCJWUDkiLCJfaXNBbmRyb2lkQ2hyb21lIiwiZ2V0U3Vycm9nYXRlODJ4ODJQRnJhbWVBbmRVcGRhdGVGcmFtZU51bWJlciIsIl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMiLCJzYXZlZFN1cnJvZ2F0ZUZyYW1lTnVtYmVyIiwiYml0TWFzazEiLCJiaXRNYXNrMiIsImJpdFNoaWZ0UmlnaHRCeTEiLCJiaXRTaGlmdExlZnRCeTciLCJieXRlMSIsImJ5dGUyIiwiY29weU9mRHVtbXlQRnJhbWVzIiwiUEZyYW1lIiwiYnVmZmVySW5kZXgiLCJfZHVtbXk4Mng4MkgyNjRQRnJhbWVGcmFtZU51bWJlckluZGV4IiwiX1N1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJpc0FuZHJvaWQiLCJVaW50OEFycmF5IiwiX2lzTW9iaWxlQ2hyb21lIiwiX2lzU2FmYXJpIiwiX19CVUlMRF9WRVJTSU9OX18iLCJfZGVmYXVsdFZlcnNpb24iLCJUZWxlbWV0cnlTZXJ2aWNlIiwiX3RlbGVtZXRyeVNlcnZpY2UiLCJ2YWx1ZU9mIiwibG9nUmVjb3JkIiwiX2xvZ3MiLCJzZW5kTG9nc0lmQWJsZSIsImxvZ01lc3NhZ2VzIiwiX3NlbmRMb2dzSWZBYmxlIiwibnVtYmVyT2ZMb2dzVG9TZW5kIiwic2l6ZU9mTG9nc1RvU2VuZCIsImdldEl0ZW1TaXplIiwiZ2V0TG9nU2l6ZSIsInN1bSIsImR1cmF0aW9uIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWF4IiwibWluIiwib3RoZXIiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9uZXR3b3JrTW9uaXRvciIsInJlY29yZEZvcmVncm91bmRDaGFuZ2UiLCJyZWNvcmROZXR3b3JrUlRUVXBkYXRlIiwicmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUiLCJkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsInJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSIsInRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJuZXdSVFQiLCJvbGRSdHQiLCJfbGFzdE5ldHdvcmtTdGF0aXN0aWNzIiwibmV3TmV0d29ya1R5cGUiLCJvbGROZXR3b3JrVHlwZSIsIm5ld0NhcGFjaXR5Iiwib2xkQ2FwYWNpdHkiLCJmbG9hdCIsImNoYW5uZWxTdGFydFRpbWUiLCJfc3RyZWFtSWQiLCJfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lIiwiX2xpc3RlblRvRmlyc3RUaW1lIiwiY2FsbFRpbWVUb0ZpcnN0RnJhbWUiLCJfY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIiLCJfbGlzdGVuRm9yU3RhbGwiLCJvblN0YWxsIiwiX2xpc3RlbkZvckNvbnRpbnVhdGlvbiIsIm9uQ29udGludWF0aW9uIiwiX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciIsInB1c2hUaW1lVG9GaXJzdEZyYW1lIiwicHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdGltZVRvRmlyc3RGcmFtZSIsImR1cmF0aW9uU2luY2VQYWdlTG9hZCIsIl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3ZpZGVvU3RhbGxlZCIsImJ1ZmZlcmVkIiwiYnVmZmVyTGVuZ3RoIiwiaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQiLCJlbmQiLCJfbGFzdFByb2dyZXNzIiwidGltZVNpbmNlU3RvcCIsIm5ld1Jlc29sdXRpb24iLCJfdmlkZW9SZXNvbHV0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==