appium-remote-debugger 9.1.3 → 9.1.4

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 (39) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/build/index.js +1 -6
  3. package/build/lib/atoms.js +1 -22
  4. package/build/lib/atoms.js.map +1 -0
  5. package/build/lib/logger.js +1 -5
  6. package/build/lib/logger.js.map +1 -0
  7. package/build/lib/mixins/connect.js +5 -69
  8. package/build/lib/mixins/connect.js.map +1 -0
  9. package/build/lib/mixins/events.js +1 -3
  10. package/build/lib/mixins/events.js.map +1 -0
  11. package/build/lib/mixins/execute.js +3 -34
  12. package/build/lib/mixins/execute.js.map +1 -0
  13. package/build/lib/mixins/index.js +1 -9
  14. package/build/lib/mixins/index.js.map +1 -0
  15. package/build/lib/mixins/message-handlers.js +1 -33
  16. package/build/lib/mixins/message-handlers.js.map +1 -0
  17. package/build/lib/mixins/navigate.js +4 -52
  18. package/build/lib/mixins/navigate.js.map +1 -0
  19. package/build/lib/protocol/index.js +20 -7
  20. package/build/lib/protocol/index.js.map +1 -0
  21. package/build/lib/remote-debugger-real-device.js +1 -9
  22. package/build/lib/remote-debugger-real-device.js.map +1 -0
  23. package/build/lib/remote-debugger.js +2 -61
  24. package/build/lib/remote-debugger.js.map +1 -0
  25. package/build/lib/rpc/index.js +1 -5
  26. package/build/lib/rpc/index.js.map +1 -0
  27. package/build/lib/rpc/remote-messages.js +5 -28
  28. package/build/lib/rpc/remote-messages.js.map +1 -0
  29. package/build/lib/rpc/rpc-client-real-device.js +1 -16
  30. package/build/lib/rpc/rpc-client-real-device.js.map +1 -0
  31. package/build/lib/rpc/rpc-client-simulator.js +4 -30
  32. package/build/lib/rpc/rpc-client-simulator.js.map +1 -0
  33. package/build/lib/rpc/rpc-client.js +13 -109
  34. package/build/lib/rpc/rpc-client.js.map +1 -0
  35. package/build/lib/rpc/rpc-message-handler.js +1 -52
  36. package/build/lib/rpc/rpc-message-handler.js.map +1 -0
  37. package/build/lib/utils.js +9 -44
  38. package/build/lib/utils.js.map +1 -0
  39. package/package.json +4 -3
@@ -1,54 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = exports.RemoteDebugger = exports.RPC_RESPONSE_TIMEOUT_MS = exports.REMOTE_DEBUGGER_PORT = void 0;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _events = require("events");
13
-
14
10
  var _logger = _interopRequireDefault(require("./logger"));
15
-
16
11
  var _rpc = require("./rpc");
17
-
18
12
  var _utils = require("./utils");
19
-
20
13
  var _mixins = require("./mixins");
21
-
22
14
  var _lodash = _interopRequireDefault(require("lodash"));
23
-
24
15
  var _bluebird = _interopRequireDefault(require("bluebird"));
25
-
26
16
  var _path = _interopRequireDefault(require("path"));
27
-
28
17
  var _asyncLock = _interopRequireDefault(require("async-lock"));
29
-
30
18
  let VERSION;
31
-
32
19
  try {
33
20
  VERSION = require(_path.default.resolve(__dirname, '..', '..', 'package.json')).version;
34
21
  } catch (ign) {}
35
-
36
22
  const REMOTE_DEBUGGER_PORT = 27753;
37
23
  exports.REMOTE_DEBUGGER_PORT = REMOTE_DEBUGGER_PORT;
38
24
  const SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';
25
+
39
26
  const RPC_RESPONSE_TIMEOUT_MS = 5000;
40
27
  exports.RPC_RESPONSE_TIMEOUT_MS = RPC_RESPONSE_TIMEOUT_MS;
41
28
  const PAGE_READY_TIMEOUT = 5000;
42
29
  const GARBAGE_COLLECT_TIMEOUT = 5000;
43
-
44
30
  class RemoteDebugger extends _events.EventEmitter {
45
31
  constructor(opts = {}) {
46
32
  super();
47
-
48
33
  if (VERSION) {
49
34
  _logger.default.info(`Remote Debugger version ${VERSION}`);
50
35
  }
51
-
52
36
  const {
53
37
  bundleId,
54
38
  additionalBundleIds = [],
@@ -77,9 +61,7 @@ class RemoteDebugger extends _events.EventEmitter {
77
61
  this.includeSafari = includeSafari;
78
62
  this.useNewSafari = useNewSafari;
79
63
  this.pageLoadMs = pageLoadMs;
80
-
81
64
  _logger.default.debug(`useNewSafari --> ${this.useNewSafari}`);
82
-
83
65
  this.garbageCollectOnExecute = garbageCollectOnExecute;
84
66
  this.host = host;
85
67
  this.port = port;
@@ -89,15 +71,12 @@ class RemoteDebugger extends _events.EventEmitter {
89
71
  this.logAllCommunication = _lodash.default.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;
90
72
  this.logAllCommunicationHexDump = logAllCommunicationHexDump;
91
73
  this.socketChunkSize = socketChunkSize;
92
-
93
74
  if (_lodash.default.isInteger(webInspectorMaxFrameLength)) {
94
75
  this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
95
76
  }
96
-
97
77
  this.fullPageInitialization = fullPageInitialization;
98
78
  this._lock = new _asyncLock.default();
99
79
  }
100
-
101
80
  setup() {
102
81
  this.appDict = {};
103
82
  this.appIdKey = null;
@@ -108,10 +87,8 @@ class RemoteDebugger extends _events.EventEmitter {
108
87
  this.rpcClient = null;
109
88
  this._clientEventListeners = {};
110
89
  }
111
-
112
90
  teardown() {
113
91
  _logger.default.debug('Cleaning up listeners');
114
-
115
92
  this.appDict = {};
116
93
  this.appIdKey = null;
117
94
  this.pageIdKey = null;
@@ -120,7 +97,6 @@ class RemoteDebugger extends _events.EventEmitter {
120
97
  this.removeAllListeners(RemoteDebugger.EVENT_PAGE_CHANGE);
121
98
  this.removeAllListeners(RemoteDebugger.EVENT_DISCONNECT);
122
99
  }
123
-
124
100
  initRpcClient() {
125
101
  this.rpcClient = new _rpc.RpcClientSimulator({
126
102
  bundleId: this.bundleId,
@@ -136,32 +112,25 @@ class RemoteDebugger extends _events.EventEmitter {
136
112
  webInspectorMaxFrameLength: this.webInspectorMaxFrameLength
137
113
  });
138
114
  }
139
-
140
115
  get isConnected() {
141
116
  var _this$rpcClient;
142
-
143
117
  return !!((_this$rpcClient = this.rpcClient) !== null && _this$rpcClient !== void 0 && _this$rpcClient.isConnected);
144
118
  }
145
-
146
119
  async launchSafari() {
147
120
  await this.rpcClient.send('launchApplication', {
148
121
  bundleId: SAFARI_BUNDLE_ID
149
122
  });
150
123
  }
151
-
152
124
  async startTimeline(fn) {
153
125
  _logger.default.debug('Starting to record the timeline');
154
-
155
126
  this.rpcClient.on('Timeline.eventRecorded', fn);
156
127
  return await this.rpcClient.send('startTimeline', {
157
128
  appIdKey: this.appIdKey,
158
129
  pageIdKey: this.pageIdKey
159
130
  });
160
131
  }
161
-
162
132
  async stopTimeline() {
163
133
  _logger.default.debug('Stopping to record the timeline');
164
-
165
134
  await this.rpcClient.send('Timeline.stop', {
166
135
  appIdKey: this.appIdKey,
167
136
  pageIdKey: this.pageIdKey
@@ -170,65 +139,48 @@ class RemoteDebugger extends _events.EventEmitter {
170
139
 
171
140
  addClientEventListener(eventName, listener) {
172
141
  this._clientEventListeners[eventName] = this._clientEventListeners[eventName] || [];
173
-
174
142
  this._clientEventListeners[eventName].push(listener);
175
-
176
143
  this.rpcClient.on(eventName, listener);
177
144
  }
178
-
179
145
  removeClientEventListener(eventName) {
180
146
  for (const listener of this._clientEventListeners[eventName] || []) {
181
147
  this.rpcClient.off(eventName, listener);
182
148
  }
183
149
  }
184
-
185
150
  startConsole(listener) {
186
151
  _logger.default.debug('Starting to listen for JavaScript console');
187
-
188
152
  this.addClientEventListener('Console.messageAdded', listener);
189
153
  this.addClientEventListener('Console.messageRepeatCountUpdated', listener);
190
154
  }
191
-
192
155
  stopConsole() {
193
156
  _logger.default.debug('Stopping to listen for JavaScript console');
194
-
195
157
  this.removeClientEventListener('Console.messageAdded');
196
158
  this.removeClientEventListener('Console.messageRepeatCountUpdated');
197
159
  }
198
-
199
160
  startNetwork(listener) {
200
161
  _logger.default.debug('Starting to listen for network events');
201
-
202
162
  this.addClientEventListener('NetworkEvent', listener);
203
163
  }
204
-
205
164
  stopNetwork() {
206
165
  _logger.default.debug('Stopping to listen for network events');
207
-
208
166
  this.removeClientEventListener('NetworkEvent');
209
167
  }
210
-
211
168
  set allowNavigationWithoutReload(allow) {
212
169
  this._allowNavigationWithoutReload = allow;
213
170
  }
214
-
215
171
  get allowNavigationWithoutReload() {
216
172
  return this._allowNavigationWithoutReload;
217
173
  }
218
-
219
174
  async getCookies(urls) {
220
175
  _logger.default.debug('Getting cookies');
221
-
222
176
  return await this.rpcClient.send('Page.getCookies', {
223
177
  appIdKey: this.appIdKey,
224
178
  pageIdKey: this.pageIdKey,
225
179
  urls
226
180
  });
227
181
  }
228
-
229
182
  async deleteCookie(cookieName, url) {
230
183
  _logger.default.debug(`Deleting cookie '${cookieName}' on '${url}'`);
231
-
232
184
  return await this.rpcClient.send('Page.deleteCookie', {
233
185
  appIdKey: this.appIdKey,
234
186
  pageIdKey: this.pageIdKey,
@@ -236,10 +188,8 @@ class RemoteDebugger extends _events.EventEmitter {
236
188
  url
237
189
  });
238
190
  }
239
-
240
191
  async garbageCollect(timeoutMs = GARBAGE_COLLECT_TIMEOUT) {
241
192
  _logger.default.debug(`Garbage collecting with ${timeoutMs}ms timeout`);
242
-
243
193
  try {
244
194
  (0, _utils.checkParams)({
245
195
  appIdKey: this.appIdKey,
@@ -247,10 +197,8 @@ class RemoteDebugger extends _events.EventEmitter {
247
197
  });
248
198
  } catch (err) {
249
199
  _logger.default.debug(`Unable to collect garbage at this time`);
250
-
251
200
  return;
252
201
  }
253
-
254
202
  await _bluebird.default.resolve(this.rpcClient.send('Heap.gc', {
255
203
  appIdKey: this.appIdKey,
256
204
  pageIdKey: this.pageIdKey
@@ -264,27 +212,20 @@ class RemoteDebugger extends _events.EventEmitter {
264
212
  }
265
213
  });
266
214
  }
267
-
268
215
  async useAppDictLock(fn) {
269
216
  return await this._lock.acquire('appDict', fn);
270
217
  }
271
-
272
218
  get skippedApps() {
273
219
  return this._skippedApps || [];
274
220
  }
275
-
276
221
  }
277
-
278
222
  exports.RemoteDebugger = RemoteDebugger;
279
-
280
223
  for (const [name, fn] of _lodash.default.toPairs(_mixins.mixins)) {
281
224
  RemoteDebugger.prototype[name] = fn;
282
225
  }
283
-
284
226
  for (const [name, event] of _lodash.default.toPairs(_mixins.events)) {
285
227
  RemoteDebugger[name] = event;
286
228
  }
287
-
288
229
  var _default = RemoteDebugger;
289
230
  exports.default = _default;
290
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwidmVyc2lvbiIsImlnbiIsIlJFTU9URV9ERUJVR0dFUl9QT1JUIiwiU0FGQVJJX0JVTkRMRV9JRCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiUEFHRV9SRUFEWV9USU1FT1VUIiwiR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQiLCJSZW1vdGVEZWJ1Z2dlciIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsImxvZyIsImluZm8iLCJidW5kbGVJZCIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJ1c2VOZXdTYWZhcmkiLCJwYWdlTG9hZE1zIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwicGFnZVJlYWR5VGltZW91dCIsInJlbW90ZURlYnVnUHJveHkiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImxvZ0Z1bGxSZXNwb25zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwic29ja2V0Q2h1bmtTaXplIiwiZnVsbFBhZ2VJbml0aWFsaXphdGlvbiIsImRlYnVnIiwiXyIsImlzTmlsIiwiaXNJbnRlZ2VyIiwiX2xvY2siLCJBc3luY0xvY2siLCJzZXR1cCIsImFwcERpY3QiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInBhZ2VMb2FkaW5nIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwicnBjQ2xpZW50IiwiX2NsaWVudEV2ZW50TGlzdGVuZXJzIiwidGVhcmRvd24iLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJpbml0UnBjQ2xpZW50IiwiUnBjQ2xpZW50U2ltdWxhdG9yIiwibWVzc2FnZVByb3h5IiwiaXNDb25uZWN0ZWQiLCJsYXVuY2hTYWZhcmkiLCJzZW5kIiwic3RhcnRUaW1lbGluZSIsImZuIiwib24iLCJzdG9wVGltZWxpbmUiLCJhZGRDbGllbnRFdmVudExpc3RlbmVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJwdXNoIiwicmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciIsIm9mZiIsInN0YXJ0Q29uc29sZSIsInN0b3BDb25zb2xlIiwic3RhcnROZXR3b3JrIiwic3RvcE5ldHdvcmsiLCJhbGxvdyIsIl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiZ2V0Q29va2llcyIsInVybHMiLCJkZWxldGVDb29raWUiLCJjb29raWVOYW1lIiwidXJsIiwiZ2FyYmFnZUNvbGxlY3QiLCJ0aW1lb3V0TXMiLCJjaGVja1BhcmFtcyIsImVyciIsIkIiLCJ0aW1lb3V0IiwidGhlbiIsImdjU3VjY2VzcyIsImNhdGNoIiwiZ2NFcnJvciIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJ1c2VBcHBEaWN0TG9jayIsImFjcXVpcmUiLCJza2lwcGVkQXBwcyIsIl9za2lwcGVkQXBwcyIsIm5hbWUiLCJ0b1BhaXJzIiwibWl4aW5zIiwicHJvdG90eXBlIiwiZXZlbnQiLCJldmVudHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVtb3RlLWRlYnVnZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IFJwY0NsaWVudFNpbXVsYXRvciB9IGZyb20gJy4vcnBjJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9IGZyb20gJy4vbWl4aW5zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5cblxubGV0IFZFUlNJT047XG50cnkge1xuICBWRVJTSU9OID0gcmVxdWlyZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncGFja2FnZS5qc29uJykpLnZlcnNpb247XG59IGNhdGNoIChpZ24pIHt9XG5cbmNvbnN0IFJFTU9URV9ERUJVR0dFUl9QT1JUID0gMjc3NTM7XG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbmNvbnN0IFBBR0VfUkVBRFlfVElNRU9VVCA9IDUwMDA7XG5cbmNvbnN0IEdBUkJBR0VfQ09MTEVDVF9USU1FT1VUID0gNTAwMDtcblxuXG5jbGFzcyBSZW1vdGVEZWJ1Z2dlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qXG4gICAqIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvcHRzIGhhc2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqICAgLSBidW5kbGVJZCAtIGlkIG9mIHRoZSBhcHAgYmVpbmcgY29ubmVjdGVkIHRvXG4gICAqICAgLSBhZGRpdGlvbmFsQnVuZGxlSWRzIC0gYXJyYXkgb2YgcG9zc2libGUgYnVuZGxlIGlkcyB0aGF0IHRoZSBpbnNwZWN0b3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCByZXR1cm5cbiAgICogICAtIHBsYXRmb3JtVmVyc2lvbiAtIHZlcnNpb24gb2YgaU9TXG4gICAqICAgLSB1c2VOZXdTYWZhcmkgLSBmb3Igd2ViIGluc3BlY3Rvciwgd2hldGhlciB0aGlzIGlzIGEgbmV3IFNhZmFyaSBpbnN0YW5jZVxuICAgKiAgIC0gcGFnZUxvYWRNcyAtIHRoZSB0aW1lLCBpbiBtcywgdGhhdCBzaG91bGQgYmUgd2FpdGVkIGZvciBwYWdlIGxvYWRpbmdcbiAgICogICAtIGhvc3QgLSB0aGUgcmVtb3RlIGRlYnVnZ2VyJ3MgaG9zdCBhZGRyZXNzXG4gICAqICAgLSBwb3J0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlciBwb3J0IHRocm91Z2ggd2hpY2ggdG8gY29tbXVuaWNhdGVcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb24gLSBsb2cgcGxpc3RzIHNlbnQgYW5kIHJlY2VpdmVkIGZyb20gV2ViIEluc3BlY3RvclxuICAgKiAgIC0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgLSBsb2cgY29tbXVuaWNhdGlvbiBmcm9tIFdlYiBJbnNwZWN0b3IgYXMgaGV4IGR1bXBcbiAgICogICAtIHNvY2tldENodW5rU2l6ZSAtIHNpemUsIGluIGJ5dGVzLCBvZiBjaHVua3Mgb2YgZGF0YSBzZW50IHRvIFdlYiBJbnNwZWN0b3IgKHJlYWwgZGV2aWNlIG9ubHkpXG4gICAqICAgLSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCAtIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZGF0YSBmcmFtZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZGV2aWNlIGNvbW11bmljYXRpb24gcHJvdG9jb2xcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKFZFUlNJT04pIHtcbiAgICAgIGxvZy5pbmZvKGBSZW1vdGUgRGVidWdnZXIgdmVyc2lvbiAke1ZFUlNJT059YCk7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBhZGRpdGlvbmFsQnVuZGxlSWRzID0gW10sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaSA9IHRydWUsXG4gICAgICBpbmNsdWRlU2FmYXJpID0gZmFsc2UsXG4gICAgICB1c2VOZXdTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHBhZ2VMb2FkTXMsXG4gICAgICBob3N0LFxuICAgICAgcG9ydCA9IFJFTU9URV9ERUJVR0dFUl9QT1JULFxuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIHBhZ2VSZWFkeVRpbWVvdXQgPSBQQUdFX1JFQURZX1RJTUVPVVQsXG4gICAgICByZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBmYWxzZSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMgPSBhZGRpdGlvbmFsQnVuZGxlSWRzO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcbiAgICB0aGlzLmluY2x1ZGVTYWZhcmkgPSBpbmNsdWRlU2FmYXJpO1xuICAgIHRoaXMudXNlTmV3U2FmYXJpID0gdXNlTmV3U2FmYXJpO1xuICAgIHRoaXMucGFnZUxvYWRNcyA9IHBhZ2VMb2FkTXM7XG4gICAgbG9nLmRlYnVnKGB1c2VOZXdTYWZhcmkgLS0+ICR7dGhpcy51c2VOZXdTYWZhcml9YCk7XG5cbiAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlID0gZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU7XG5cbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgICB0aGlzLnJlbW90ZURlYnVnUHJveHkgPSByZW1vdGVEZWJ1Z1Byb3h5O1xuICAgIHRoaXMucGFnZVJlYWR5VGltZW91dCA9IHBhZ2VSZWFkeVRpbWVvdXQ7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBfLmlzTmlsKGxvZ0FsbENvbW11bmljYXRpb24pID8gISFsb2dGdWxsUmVzcG9uc2UgOiAhIWxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuXG4gICAgaWYgKF8uaXNJbnRlZ2VyKHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoKSkge1xuICAgICAgdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCA9IHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLl9sb2NrID0gbmV3IEFzeW5jTG9jaygpO1xuICB9XG5cbiAgc2V0dXAgKCkge1xuICAgIC8vIGFwcCBoYW5kbGluZyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlID0gZmFsc2U7XG4gICAgdGhpcy5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gZmFsc2U7XG5cbiAgICB0aGlzLnJwY0NsaWVudCA9IG51bGw7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnMgPSB7fTtcbiAgfVxuXG4gIHRlYXJkb3duICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFuaW5nIHVwIGxpc3RlbmVycycpO1xuXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcblxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX1BBR0VfQ0hBTkdFKTtcbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhSZW1vdGVEZWJ1Z2dlci5FVkVOVF9ESVNDT05ORUNUKTtcbiAgfVxuXG4gIGluaXRScGNDbGllbnQgKCkge1xuICAgIHRoaXMucnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudFNpbXVsYXRvcih7XG4gICAgICBidW5kbGVJZDogdGhpcy5idW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uOiB0aGlzLmZ1bGxQYWdlSW5pdGlhbGl6YXRpb24sXG4gICAgICB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDogdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ycGNDbGllbnQ/LmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgYXN5bmMgbGF1bmNoU2FmYXJpICgpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdsYXVuY2hBcHBsaWNhdGlvbicsIHtcbiAgICAgIGJ1bmRsZUlkOiBTQUZBUklfQlVORExFX0lEXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydFRpbWVsaW5lIChmbikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKCdUaW1lbGluZS5ldmVudFJlY29yZGVkJywgZm4pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdzdGFydFRpbWVsaW5lJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFRpbWVsaW5lICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIHJlY29yZCB0aGUgdGltZWxpbmUnKTtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdUaW1lbGluZS5zdG9wJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICogS2VlcCB0cmFjayBvZiB0aGUgY2xpZW50IGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSByZW1vdmVkXG4gICAqL1xuICBhZGRDbGllbnRFdmVudExpc3RlbmVyIChldmVudE5hbWUsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSA9IHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW107XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKGxpc3RlbmVyKTtcbiAgICB0aGlzLnJwY0NsaWVudC5vbihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgKHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW10pKSB7XG4gICAgICB0aGlzLnJwY0NsaWVudC5vZmYoZXZlbnROYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRDb25zb2xlIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJywgbGlzdGVuZXIpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkJywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcENvbnNvbGUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0TmV0d29yayAobGlzdGVuZXIpIHtcbiAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHN0b3BOZXR3b3JrICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcpO1xuICB9XG5cbiAgc2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93KSB7XG4gICAgdGhpcy5fYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCA9IGFsbG93O1xuICB9XG5cbiAgZ2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29va2llcyAodXJscykge1xuICAgIGxvZy5kZWJ1ZygnR2V0dGluZyBjb29raWVzJyk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZ2V0Q29va2llcycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIHVybHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUsIHVybCkge1xuICAgIGxvZy5kZWJ1ZyhgRGVsZXRpbmcgY29va2llICcke2Nvb2tpZU5hbWV9JyBvbiAnJHt1cmx9J2ApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLmRlbGV0ZUNvb2tpZScsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIGNvb2tpZU5hbWUsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnYXJiYWdlQ29sbGVjdCAodGltZW91dE1zID0gR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQpIHtcbiAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGluZyB3aXRoICR7dGltZW91dE1zfW1zIHRpbWVvdXRgKTtcbiAgICB0cnkge1xuICAgICAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2UgYXQgdGhpcyB0aW1lYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgQi5yZXNvbHZlKHRoaXMucnBjQ2xpZW50LnNlbmQoJ0hlYXAuZ2MnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSkpLnRpbWVvdXQodGltZW91dE1zKVxuICAgIC50aGVuKGZ1bmN0aW9uIGdjU3VjY2VzcyAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gc3VjY2Vzc2Z1bGApO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIGdjRXJyb3IgKGVycikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEIuVGltZW91dEVycm9yKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW9uIHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRNc31tc2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gY29sbGVjdCBnYXJiYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXNlQXBwRGljdExvY2sgKGZuKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2xvY2suYWNxdWlyZSgnYXBwRGljdCcsIGZuKTtcbiAgfVxuXG4gIGdldCBza2lwcGVkQXBwcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBwZWRBcHBzIHx8IFtdO1xuICB9XG59XG5cbmZvciAoY29uc3QgW25hbWUsIGZuXSBvZiBfLnRvUGFpcnMobWl4aW5zKSkge1xuICBSZW1vdGVEZWJ1Z2dlci5wcm90b3R5cGVbbmFtZV0gPSBmbjtcbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZXZlbnRdIG9mIF8udG9QYWlycyhldmVudHMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyW25hbWVdID0gZXZlbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlbW90ZURlYnVnZ2VyO1xuZXhwb3J0IHtcbiAgUmVtb3RlRGVidWdnZXIsIFJFTU9URV9ERUJVR0dFUl9QT1JULCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsT0FBSjs7QUFDQSxJQUFJO0VBQ0ZBLE9BQU8sR0FBR0MsT0FBTyxDQUFDQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxjQUFwQyxDQUFELENBQVAsQ0FBNkRDLE9BQXZFO0FBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWSxDQUFFOztBQUVoQixNQUFNQyxvQkFBb0IsR0FBRyxLQUE3Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx3QkFBekI7QUFHQSxNQUFNQyx1QkFBdUIsR0FBRyxJQUFoQzs7QUFFQSxNQUFNQyxrQkFBa0IsR0FBRyxJQUEzQjtBQUVBLE1BQU1DLHVCQUF1QixHQUFHLElBQWhDOztBQUdBLE1BQU1DLGNBQU4sU0FBNkJDLG9CQUE3QixDQUEw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
231
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwidmVyc2lvbiIsImlnbiIsIlJFTU9URV9ERUJVR0dFUl9QT1JUIiwiU0FGQVJJX0JVTkRMRV9JRCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiUEFHRV9SRUFEWV9USU1FT1VUIiwiR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQiLCJSZW1vdGVEZWJ1Z2dlciIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsImxvZyIsImluZm8iLCJidW5kbGVJZCIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJ1c2VOZXdTYWZhcmkiLCJwYWdlTG9hZE1zIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwicGFnZVJlYWR5VGltZW91dCIsInJlbW90ZURlYnVnUHJveHkiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImxvZ0Z1bGxSZXNwb25zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwic29ja2V0Q2h1bmtTaXplIiwiZnVsbFBhZ2VJbml0aWFsaXphdGlvbiIsImRlYnVnIiwiXyIsImlzTmlsIiwiaXNJbnRlZ2VyIiwiX2xvY2siLCJBc3luY0xvY2siLCJzZXR1cCIsImFwcERpY3QiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInBhZ2VMb2FkaW5nIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwicnBjQ2xpZW50IiwiX2NsaWVudEV2ZW50TGlzdGVuZXJzIiwidGVhcmRvd24iLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJpbml0UnBjQ2xpZW50IiwiUnBjQ2xpZW50U2ltdWxhdG9yIiwibWVzc2FnZVByb3h5IiwiaXNDb25uZWN0ZWQiLCJsYXVuY2hTYWZhcmkiLCJzZW5kIiwic3RhcnRUaW1lbGluZSIsImZuIiwib24iLCJzdG9wVGltZWxpbmUiLCJhZGRDbGllbnRFdmVudExpc3RlbmVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJwdXNoIiwicmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciIsIm9mZiIsInN0YXJ0Q29uc29sZSIsInN0b3BDb25zb2xlIiwic3RhcnROZXR3b3JrIiwic3RvcE5ldHdvcmsiLCJhbGxvdyIsIl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiZ2V0Q29va2llcyIsInVybHMiLCJkZWxldGVDb29raWUiLCJjb29raWVOYW1lIiwidXJsIiwiZ2FyYmFnZUNvbGxlY3QiLCJ0aW1lb3V0TXMiLCJjaGVja1BhcmFtcyIsImVyciIsIkIiLCJ0aW1lb3V0IiwidGhlbiIsImdjU3VjY2VzcyIsImNhdGNoIiwiZ2NFcnJvciIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJ1c2VBcHBEaWN0TG9jayIsImFjcXVpcmUiLCJza2lwcGVkQXBwcyIsIl9za2lwcGVkQXBwcyIsIm5hbWUiLCJ0b1BhaXJzIiwibWl4aW5zIiwicHJvdG90eXBlIiwiZXZlbnQiLCJldmVudHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVtb3RlLWRlYnVnZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IFJwY0NsaWVudFNpbXVsYXRvciB9IGZyb20gJy4vcnBjJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9IGZyb20gJy4vbWl4aW5zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5cblxubGV0IFZFUlNJT047XG50cnkge1xuICBWRVJTSU9OID0gcmVxdWlyZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncGFja2FnZS5qc29uJykpLnZlcnNpb247XG59IGNhdGNoIChpZ24pIHt9XG5cbmNvbnN0IFJFTU9URV9ERUJVR0dFUl9QT1JUID0gMjc3NTM7XG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbmNvbnN0IFBBR0VfUkVBRFlfVElNRU9VVCA9IDUwMDA7XG5cbmNvbnN0IEdBUkJBR0VfQ09MTEVDVF9USU1FT1VUID0gNTAwMDtcblxuXG5jbGFzcyBSZW1vdGVEZWJ1Z2dlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qXG4gICAqIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvcHRzIGhhc2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqICAgLSBidW5kbGVJZCAtIGlkIG9mIHRoZSBhcHAgYmVpbmcgY29ubmVjdGVkIHRvXG4gICAqICAgLSBhZGRpdGlvbmFsQnVuZGxlSWRzIC0gYXJyYXkgb2YgcG9zc2libGUgYnVuZGxlIGlkcyB0aGF0IHRoZSBpbnNwZWN0b3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCByZXR1cm5cbiAgICogICAtIHBsYXRmb3JtVmVyc2lvbiAtIHZlcnNpb24gb2YgaU9TXG4gICAqICAgLSB1c2VOZXdTYWZhcmkgLSBmb3Igd2ViIGluc3BlY3Rvciwgd2hldGhlciB0aGlzIGlzIGEgbmV3IFNhZmFyaSBpbnN0YW5jZVxuICAgKiAgIC0gcGFnZUxvYWRNcyAtIHRoZSB0aW1lLCBpbiBtcywgdGhhdCBzaG91bGQgYmUgd2FpdGVkIGZvciBwYWdlIGxvYWRpbmdcbiAgICogICAtIGhvc3QgLSB0aGUgcmVtb3RlIGRlYnVnZ2VyJ3MgaG9zdCBhZGRyZXNzXG4gICAqICAgLSBwb3J0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlciBwb3J0IHRocm91Z2ggd2hpY2ggdG8gY29tbXVuaWNhdGVcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb24gLSBsb2cgcGxpc3RzIHNlbnQgYW5kIHJlY2VpdmVkIGZyb20gV2ViIEluc3BlY3RvclxuICAgKiAgIC0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgLSBsb2cgY29tbXVuaWNhdGlvbiBmcm9tIFdlYiBJbnNwZWN0b3IgYXMgaGV4IGR1bXBcbiAgICogICAtIHNvY2tldENodW5rU2l6ZSAtIHNpemUsIGluIGJ5dGVzLCBvZiBjaHVua3Mgb2YgZGF0YSBzZW50IHRvIFdlYiBJbnNwZWN0b3IgKHJlYWwgZGV2aWNlIG9ubHkpXG4gICAqICAgLSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCAtIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZGF0YSBmcmFtZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZGV2aWNlIGNvbW11bmljYXRpb24gcHJvdG9jb2xcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKFZFUlNJT04pIHtcbiAgICAgIGxvZy5pbmZvKGBSZW1vdGUgRGVidWdnZXIgdmVyc2lvbiAke1ZFUlNJT059YCk7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBhZGRpdGlvbmFsQnVuZGxlSWRzID0gW10sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaSA9IHRydWUsXG4gICAgICBpbmNsdWRlU2FmYXJpID0gZmFsc2UsXG4gICAgICB1c2VOZXdTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHBhZ2VMb2FkTXMsXG4gICAgICBob3N0LFxuICAgICAgcG9ydCA9IFJFTU9URV9ERUJVR0dFUl9QT1JULFxuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIHBhZ2VSZWFkeVRpbWVvdXQgPSBQQUdFX1JFQURZX1RJTUVPVVQsXG4gICAgICByZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBmYWxzZSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMgPSBhZGRpdGlvbmFsQnVuZGxlSWRzO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcbiAgICB0aGlzLmluY2x1ZGVTYWZhcmkgPSBpbmNsdWRlU2FmYXJpO1xuICAgIHRoaXMudXNlTmV3U2FmYXJpID0gdXNlTmV3U2FmYXJpO1xuICAgIHRoaXMucGFnZUxvYWRNcyA9IHBhZ2VMb2FkTXM7XG4gICAgbG9nLmRlYnVnKGB1c2VOZXdTYWZhcmkgLS0+ICR7dGhpcy51c2VOZXdTYWZhcml9YCk7XG5cbiAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlID0gZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU7XG5cbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgICB0aGlzLnJlbW90ZURlYnVnUHJveHkgPSByZW1vdGVEZWJ1Z1Byb3h5O1xuICAgIHRoaXMucGFnZVJlYWR5VGltZW91dCA9IHBhZ2VSZWFkeVRpbWVvdXQ7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBfLmlzTmlsKGxvZ0FsbENvbW11bmljYXRpb24pID8gISFsb2dGdWxsUmVzcG9uc2UgOiAhIWxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuXG4gICAgaWYgKF8uaXNJbnRlZ2VyKHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoKSkge1xuICAgICAgdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCA9IHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLl9sb2NrID0gbmV3IEFzeW5jTG9jaygpO1xuICB9XG5cbiAgc2V0dXAgKCkge1xuICAgIC8vIGFwcCBoYW5kbGluZyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlID0gZmFsc2U7XG4gICAgdGhpcy5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gZmFsc2U7XG5cbiAgICB0aGlzLnJwY0NsaWVudCA9IG51bGw7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnMgPSB7fTtcbiAgfVxuXG4gIHRlYXJkb3duICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFuaW5nIHVwIGxpc3RlbmVycycpO1xuXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcblxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX1BBR0VfQ0hBTkdFKTtcbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhSZW1vdGVEZWJ1Z2dlci5FVkVOVF9ESVNDT05ORUNUKTtcbiAgfVxuXG4gIGluaXRScGNDbGllbnQgKCkge1xuICAgIHRoaXMucnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudFNpbXVsYXRvcih7XG4gICAgICBidW5kbGVJZDogdGhpcy5idW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uOiB0aGlzLmZ1bGxQYWdlSW5pdGlhbGl6YXRpb24sXG4gICAgICB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDogdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ycGNDbGllbnQ/LmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgYXN5bmMgbGF1bmNoU2FmYXJpICgpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdsYXVuY2hBcHBsaWNhdGlvbicsIHtcbiAgICAgIGJ1bmRsZUlkOiBTQUZBUklfQlVORExFX0lEXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydFRpbWVsaW5lIChmbikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKCdUaW1lbGluZS5ldmVudFJlY29yZGVkJywgZm4pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdzdGFydFRpbWVsaW5lJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFRpbWVsaW5lICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIHJlY29yZCB0aGUgdGltZWxpbmUnKTtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdUaW1lbGluZS5zdG9wJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICogS2VlcCB0cmFjayBvZiB0aGUgY2xpZW50IGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSByZW1vdmVkXG4gICAqL1xuICBhZGRDbGllbnRFdmVudExpc3RlbmVyIChldmVudE5hbWUsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSA9IHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW107XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKGxpc3RlbmVyKTtcbiAgICB0aGlzLnJwY0NsaWVudC5vbihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgKHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW10pKSB7XG4gICAgICB0aGlzLnJwY0NsaWVudC5vZmYoZXZlbnROYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRDb25zb2xlIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJywgbGlzdGVuZXIpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkJywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcENvbnNvbGUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0TmV0d29yayAobGlzdGVuZXIpIHtcbiAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHN0b3BOZXR3b3JrICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcpO1xuICB9XG5cbiAgc2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93KSB7XG4gICAgdGhpcy5fYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCA9IGFsbG93O1xuICB9XG5cbiAgZ2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29va2llcyAodXJscykge1xuICAgIGxvZy5kZWJ1ZygnR2V0dGluZyBjb29raWVzJyk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZ2V0Q29va2llcycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIHVybHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUsIHVybCkge1xuICAgIGxvZy5kZWJ1ZyhgRGVsZXRpbmcgY29va2llICcke2Nvb2tpZU5hbWV9JyBvbiAnJHt1cmx9J2ApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLmRlbGV0ZUNvb2tpZScsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIGNvb2tpZU5hbWUsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnYXJiYWdlQ29sbGVjdCAodGltZW91dE1zID0gR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQpIHtcbiAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGluZyB3aXRoICR7dGltZW91dE1zfW1zIHRpbWVvdXRgKTtcbiAgICB0cnkge1xuICAgICAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2UgYXQgdGhpcyB0aW1lYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgQi5yZXNvbHZlKHRoaXMucnBjQ2xpZW50LnNlbmQoJ0hlYXAuZ2MnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSkpLnRpbWVvdXQodGltZW91dE1zKVxuICAgIC50aGVuKGZ1bmN0aW9uIGdjU3VjY2VzcyAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gc3VjY2Vzc2Z1bGApO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIGdjRXJyb3IgKGVycikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEIuVGltZW91dEVycm9yKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW9uIHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRNc31tc2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gY29sbGVjdCBnYXJiYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXNlQXBwRGljdExvY2sgKGZuKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2xvY2suYWNxdWlyZSgnYXBwRGljdCcsIGZuKTtcbiAgfVxuXG4gIGdldCBza2lwcGVkQXBwcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBwZWRBcHBzIHx8IFtdO1xuICB9XG59XG5cbmZvciAoY29uc3QgW25hbWUsIGZuXSBvZiBfLnRvUGFpcnMobWl4aW5zKSkge1xuICBSZW1vdGVEZWJ1Z2dlci5wcm90b3R5cGVbbmFtZV0gPSBmbjtcbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZXZlbnRdIG9mIF8udG9QYWlycyhldmVudHMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyW25hbWVdID0gZXZlbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlbW90ZURlYnVnZ2VyO1xuZXhwb3J0IHtcbiAgUmVtb3RlRGVidWdnZXIsIFJFTU9URV9ERUJVR0dFUl9QT1JULCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0EsSUFBSUEsT0FBTztBQUNYLElBQUk7RUFDRkEsT0FBTyxHQUFHQyxPQUFPLENBQUNDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDQyxPQUFPO0FBQ2hGLENBQUMsQ0FBQyxPQUFPQyxHQUFHLEVBQUUsQ0FBQztBQUVmLE1BQU1DLG9CQUFvQixHQUFHLEtBQUs7QUFBQztBQUNuQyxNQUFNQyxnQkFBZ0IsR0FBRyx3QkFBd0I7O0FBR2pELE1BQU1DLHVCQUF1QixHQUFHLElBQUk7QUFBQztBQUVyQyxNQUFNQyxrQkFBa0IsR0FBRyxJQUFJO0FBRS9CLE1BQU1DLHVCQUF1QixHQUFHLElBQUk7QUFHcEMsTUFBTUMsY0FBYyxTQUFTQyxvQkFBWSxDQUFDO0VBaUJ4Q0MsV0FBVyxDQUFFQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDdEIsS0FBSyxFQUFFO0lBRVAsSUFBSWYsT0FBTyxFQUFFO01BQ1hnQixlQUFHLENBQUNDLElBQUksQ0FBRSwyQkFBMEJqQixPQUFRLEVBQUMsQ0FBQztJQUNoRDtJQUVBLE1BQU07TUFDSmtCLFFBQVE7TUFDUkMsbUJBQW1CLEdBQUcsRUFBRTtNQUN4QkMsZUFBZTtNQUNmQyxRQUFRLEdBQUcsSUFBSTtNQUNmQyxhQUFhLEdBQUcsS0FBSztNQUNyQkMsWUFBWSxHQUFHLEtBQUs7TUFDcEJDLFVBQVU7TUFDVkMsSUFBSTtNQUNKQyxJQUFJLEdBQUduQixvQkFBb0I7TUFDM0JvQixVQUFVO01BQ1ZDLGdCQUFnQixHQUFHbEIsa0JBQWtCO01BQ3JDbUIsZ0JBQWdCO01BQ2hCQyx1QkFBdUIsR0FBRyxLQUFLO01BQy9CQyxlQUFlLEdBQUcsS0FBSztNQUN2QkMsbUJBQW1CLEdBQUcsS0FBSztNQUMzQkMsMEJBQTBCLEdBQUcsS0FBSztNQUNsQ0MsMEJBQTBCO01BQzFCQyxlQUFlO01BQ2ZDO0lBQ0YsQ0FBQyxHQUFHckIsSUFBSTtJQUVSLElBQUksQ0FBQ0csUUFBUSxHQUFHQSxRQUFRO0lBQ3hCLElBQUksQ0FBQ0MsbUJBQW1CLEdBQUdBLG1CQUFtQjtJQUM5QyxJQUFJLENBQUNDLGVBQWUsR0FBR0EsZUFBZTtJQUN0QyxJQUFJLENBQUNDLFFBQVEsR0FBR0EsUUFBUTtJQUN4QixJQUFJLENBQUNDLGFBQWEsR0FBR0EsYUFBYTtJQUNsQyxJQUFJLENBQUNDLFlBQVksR0FBR0EsWUFBWTtJQUNoQyxJQUFJLENBQUNDLFVBQVUsR0FBR0EsVUFBVTtJQUM1QlIsZUFBRyxDQUFDcUIsS0FBSyxDQUFFLG9CQUFtQixJQUFJLENBQUNkLFlBQWEsRUFBQyxDQUFDO0lBRWxELElBQUksQ0FBQ08sdUJBQXVCLEdBQUdBLHVCQUF1QjtJQUV0RCxJQUFJLENBQUNMLElBQUksR0FBR0EsSUFBSTtJQUNoQixJQUFJLENBQUNDLElBQUksR0FBR0EsSUFBSTtJQUNoQixJQUFJLENBQUNDLFVBQVUsR0FBR0EsVUFBVTtJQUM1QixJQUFJLENBQUNFLGdCQUFnQixHQUFHQSxnQkFBZ0I7SUFDeEMsSUFBSSxDQUFDRCxnQkFBZ0IsR0FBR0EsZ0JBQWdCO0lBRXhDLElBQUksQ0FBQ0ksbUJBQW1CLEdBQUdNLGVBQUMsQ0FBQ0MsS0FBSyxDQUFDUCxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQ0QsZUFBZSxHQUFHLENBQUMsQ0FBQ0MsbUJBQW1CO0lBQ25HLElBQUksQ0FBQ0MsMEJBQTBCLEdBQUdBLDBCQUEwQjtJQUM1RCxJQUFJLENBQUNFLGVBQWUsR0FBR0EsZUFBZTtJQUV0QyxJQUFJRyxlQUFDLENBQUNFLFNBQVMsQ0FBQ04sMEJBQTBCLENBQUMsRUFBRTtNQUMzQyxJQUFJLENBQUNBLDBCQUEwQixHQUFHQSwwQkFBMEI7SUFDOUQ7SUFFQSxJQUFJLENBQUNFLHNCQUFzQixHQUFHQSxzQkFBc0I7SUFFcEQsSUFBSSxDQUFDSyxLQUFLLEdBQUcsSUFBSUMsa0JBQVMsRUFBRTtFQUM5QjtFQUVBQyxLQUFLLEdBQUk7SUFFUCxJQUFJLENBQUNDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDQyxRQUFRLEdBQUcsSUFBSTtJQUNwQixJQUFJLENBQUNDLFNBQVMsR0FBRyxJQUFJO0lBQ3JCLElBQUksQ0FBQ0MsV0FBVyxHQUFHLEtBQUs7SUFDeEIsSUFBSSxDQUFDQyxpQkFBaUIsR0FBRyxLQUFLO0lBQzlCLElBQUksQ0FBQ0MsNEJBQTRCLEdBQUcsS0FBSztJQUV6QyxJQUFJLENBQUNDLFNBQVMsR0FBRyxJQUFJO0lBQ3JCLElBQUksQ0FBQ0MscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0VBQ2pDO0VBRUFDLFFBQVEsR0FBSTtJQUNWcEMsZUFBRyxDQUFDcUIsS0FBSyxDQUFDLHVCQUF1QixDQUFDO0lBRWxDLElBQUksQ0FBQ08sT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNqQixJQUFJLENBQUNDLFFBQVEsR0FBRyxJQUFJO0lBQ3BCLElBQUksQ0FBQ0MsU0FBUyxHQUFHLElBQUk7SUFDckIsSUFBSSxDQUFDQyxXQUFXLEdBQUcsS0FBSztJQUV4QixJQUFJLENBQUNHLFNBQVMsR0FBRyxJQUFJO0lBRXJCLElBQUksQ0FBQ0csa0JBQWtCLENBQUN6QyxjQUFjLENBQUMwQyxpQkFBaUIsQ0FBQztJQUN6RCxJQUFJLENBQUNELGtCQUFrQixDQUFDekMsY0FBYyxDQUFDMkMsZ0JBQWdCLENBQUM7RUFDMUQ7RUFFQUMsYUFBYSxHQUFJO0lBQ2YsSUFBSSxDQUFDTixTQUFTLEdBQUcsSUFBSU8sdUJBQWtCLENBQUM7TUFDdEN2QyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRO01BQ3ZCRSxlQUFlLEVBQUUsSUFBSSxDQUFDQSxlQUFlO01BQ3JDQyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRO01BQ3ZCSSxJQUFJLEVBQUUsSUFBSSxDQUFDQSxJQUFJO01BQ2ZDLElBQUksRUFBRSxJQUFJLENBQUNBLElBQUk7TUFDZkMsVUFBVSxFQUFFLElBQUksQ0FBQ0EsVUFBVTtNQUMzQitCLFlBQVksRUFBRSxJQUFJLENBQUM3QixnQkFBZ0I7TUFDbkNHLG1CQUFtQixFQUFFLElBQUksQ0FBQ0EsbUJBQW1CO01BQzdDQywwQkFBMEIsRUFBRSxJQUFJLENBQUNBLDBCQUEwQjtNQUMzREcsc0JBQXNCLEVBQUUsSUFBSSxDQUFDQSxzQkFBc0I7TUFDbkRGLDBCQUEwQixFQUFFLElBQUksQ0FBQ0E7SUFDbkMsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxJQUFJeUIsV0FBVyxHQUFJO0lBQUE7SUFDakIsT0FBTyxDQUFDLHFCQUFDLElBQUksQ0FBQ1QsU0FBUyw0Q0FBZCxnQkFBZ0JTLFdBQVc7RUFDdEM7RUFFQSxNQUFNQyxZQUFZLEdBQUk7SUFDcEIsTUFBTSxJQUFJLENBQUNWLFNBQVMsQ0FBQ1csSUFBSSxDQUFDLG1CQUFtQixFQUFFO01BQzdDM0MsUUFBUSxFQUFFVjtJQUNaLENBQUMsQ0FBQztFQUNKO0VBRUEsTUFBTXNELGFBQWEsQ0FBRUMsRUFBRSxFQUFFO0lBQ3ZCL0MsZUFBRyxDQUFDcUIsS0FBSyxDQUFDLGlDQUFpQyxDQUFDO0lBQzVDLElBQUksQ0FBQ2EsU0FBUyxDQUFDYyxFQUFFLENBQUMsd0JBQXdCLEVBQUVELEVBQUUsQ0FBQztJQUMvQyxPQUFPLE1BQU0sSUFBSSxDQUFDYixTQUFTLENBQUNXLElBQUksQ0FBQyxlQUFlLEVBQUU7TUFDaERoQixRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRO01BQ3ZCQyxTQUFTLEVBQUUsSUFBSSxDQUFDQTtJQUNsQixDQUFDLENBQUM7RUFDSjtFQUVBLE1BQU1tQixZQUFZLEdBQUk7SUFDcEJqRCxlQUFHLENBQUNxQixLQUFLLENBQUMsaUNBQWlDLENBQUM7SUFDNUMsTUFBTSxJQUFJLENBQUNhLFNBQVMsQ0FBQ1csSUFBSSxDQUFDLGVBQWUsRUFBRTtNQUN6Q2hCLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVE7TUFDdkJDLFNBQVMsRUFBRSxJQUFJLENBQUNBO0lBQ2xCLENBQUMsQ0FBQztFQUNKOztFQUtBb0Isc0JBQXNCLENBQUVDLFNBQVMsRUFBRUMsUUFBUSxFQUFFO0lBQzNDLElBQUksQ0FBQ2pCLHFCQUFxQixDQUFDZ0IsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDaEIscUJBQXFCLENBQUNnQixTQUFTLENBQUMsSUFBSSxFQUFFO0lBQ25GLElBQUksQ0FBQ2hCLHFCQUFxQixDQUFDZ0IsU0FBUyxDQUFDLENBQUNFLElBQUksQ0FBQ0QsUUFBUSxDQUFDO0lBQ3BELElBQUksQ0FBQ2xCLFNBQVMsQ0FBQ2MsRUFBRSxDQUFDRyxTQUFTLEVBQUVDLFFBQVEsQ0FBQztFQUN4QztFQUVBRSx5QkFBeUIsQ0FBRUgsU0FBUyxFQUFFO0lBQ3BDLEtBQUssTUFBTUMsUUFBUSxJQUFLLElBQUksQ0FBQ2pCLHFCQUFxQixDQUFDZ0IsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFHO01BQ3BFLElBQUksQ0FBQ2pCLFNBQVMsQ0FBQ3FCLEdBQUcsQ0FBQ0osU0FBUyxFQUFFQyxRQUFRLENBQUM7SUFDekM7RUFDRjtFQUVBSSxZQUFZLENBQUVKLFFBQVEsRUFBRTtJQUN0QnBELGVBQUcsQ0FBQ3FCLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQztJQUN0RCxJQUFJLENBQUM2QixzQkFBc0IsQ0FBQyxzQkFBc0IsRUFBRUUsUUFBUSxDQUFDO0lBQzdELElBQUksQ0FBQ0Ysc0JBQXNCLENBQUMsbUNBQW1DLEVBQUVFLFFBQVEsQ0FBQztFQUM1RTtFQUVBSyxXQUFXLEdBQUk7SUFDYnpELGVBQUcsQ0FBQ3FCLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQztJQUN0RCxJQUFJLENBQUNpQyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQztJQUN0RCxJQUFJLENBQUNBLHlCQUF5QixDQUFDLG1DQUFtQyxDQUFDO0VBQ3JFO0VBRUFJLFlBQVksQ0FBRU4sUUFBUSxFQUFFO0lBQ3RCcEQsZUFBRyxDQUFDcUIsS0FBSyxDQUFDLHVDQUF1QyxDQUFDO0lBQ2xELElBQUksQ0FBQzZCLHNCQUFzQixDQUFDLGNBQWMsRUFBRUUsUUFBUSxDQUFDO0VBQ3ZEO0VBRUFPLFdBQVcsR0FBSTtJQUNiM0QsZUFBRyxDQUFDcUIsS0FBSyxDQUFDLHVDQUF1QyxDQUFDO0lBQ2xELElBQUksQ0FBQ2lDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQztFQUNoRDtFQUVBLElBQUlyQiw0QkFBNEIsQ0FBRTJCLEtBQUssRUFBRTtJQUN2QyxJQUFJLENBQUNDLDZCQUE2QixHQUFHRCxLQUFLO0VBQzVDO0VBRUEsSUFBSTNCLDRCQUE0QixHQUFJO0lBQ2xDLE9BQU8sSUFBSSxDQUFDNEIsNkJBQTZCO0VBQzNDO0VBRUEsTUFBTUMsVUFBVSxDQUFFQyxJQUFJLEVBQUU7SUFDdEIvRCxlQUFHLENBQUNxQixLQUFLLENBQUMsaUJBQWlCLENBQUM7SUFDNUIsT0FBTyxNQUFNLElBQUksQ0FBQ2EsU0FBUyxDQUFDVyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7TUFDbERoQixRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRO01BQ3ZCQyxTQUFTLEVBQUUsSUFBSSxDQUFDQSxTQUFTO01BQ3pCaUM7SUFDRixDQUFDLENBQUM7RUFDSjtFQUVBLE1BQU1DLFlBQVksQ0FBRUMsVUFBVSxFQUFFQyxHQUFHLEVBQUU7SUFDbkNsRSxlQUFHLENBQUNxQixLQUFLLENBQUUsb0JBQW1CNEMsVUFBVyxTQUFRQyxHQUFJLEdBQUUsQ0FBQztJQUN4RCxPQUFPLE1BQU0sSUFBSSxDQUFDaEMsU0FBUyxDQUFDVyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7TUFDcERoQixRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRO01BQ3ZCQyxTQUFTLEVBQUUsSUFBSSxDQUFDQSxTQUFTO01BQ3pCbUMsVUFBVTtNQUNWQztJQUNGLENBQUMsQ0FBQztFQUNKO0VBRUEsTUFBTUMsY0FBYyxDQUFFQyxTQUFTLEdBQUd6RSx1QkFBdUIsRUFBRTtJQUN6REssZUFBRyxDQUFDcUIsS0FBSyxDQUFFLDJCQUEwQitDLFNBQVUsWUFBVyxDQUFDO0lBQzNELElBQUk7TUFDRixJQUFBQyxrQkFBVyxFQUFDO1FBQUN4QyxRQUFRLEVBQUUsSUFBSSxDQUFDQSxRQUFRO1FBQUVDLFNBQVMsRUFBRSxJQUFJLENBQUNBO01BQVMsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxPQUFPd0MsR0FBRyxFQUFFO01BQ1p0RSxlQUFHLENBQUNxQixLQUFLLENBQUUsd0NBQXVDLENBQUM7TUFDbkQ7SUFDRjtJQUVBLE1BQU1rRCxpQkFBQyxDQUFDcEYsT0FBTyxDQUFDLElBQUksQ0FBQytDLFNBQVMsQ0FBQ1csSUFBSSxDQUFDLFNBQVMsRUFBRTtNQUM3Q2hCLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVE7TUFDdkJDLFNBQVMsRUFBRSxJQUFJLENBQUNBO0lBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMwQyxPQUFPLENBQUNKLFNBQVMsQ0FBQyxDQUNyQkssSUFBSSxDQUFDLFNBQVNDLFNBQVMsR0FBSTtNQUMxQjFFLGVBQUcsQ0FBQ3FCLEtBQUssQ0FBRSwrQkFBOEIsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQ3NELEtBQUssQ0FBQyxTQUFTQyxPQUFPLENBQUVOLEdBQUcsRUFBRTtNQUM5QixJQUFJQSxHQUFHLFlBQVlDLGlCQUFDLENBQUNNLFlBQVksRUFBRTtRQUNqQzdFLGVBQUcsQ0FBQ3FCLEtBQUssQ0FBRSxzQ0FBcUMrQyxTQUFVLElBQUcsQ0FBQztNQUNoRSxDQUFDLE1BQU07UUFDTHBFLGVBQUcsQ0FBQ3FCLEtBQUssQ0FBRSw4QkFBNkJpRCxHQUFHLENBQUNRLE9BQVEsRUFBQyxDQUFDO01BQ3hEO0lBQ0YsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxNQUFNQyxjQUFjLENBQUVoQyxFQUFFLEVBQUU7SUFDeEIsT0FBTyxNQUFNLElBQUksQ0FBQ3RCLEtBQUssQ0FBQ3VELE9BQU8sQ0FBQyxTQUFTLEVBQUVqQyxFQUFFLENBQUM7RUFDaEQ7RUFFQSxJQUFJa0MsV0FBVyxHQUFJO0lBQ2pCLE9BQU8sSUFBSSxDQUFDQyxZQUFZLElBQUksRUFBRTtFQUNoQztBQUNGO0FBQUM7QUFFRCxLQUFLLE1BQU0sQ0FBQ0MsSUFBSSxFQUFFcEMsRUFBRSxDQUFDLElBQUl6QixlQUFDLENBQUM4RCxPQUFPLENBQUNDLGNBQU0sQ0FBQyxFQUFFO0VBQzFDekYsY0FBYyxDQUFDMEYsU0FBUyxDQUFDSCxJQUFJLENBQUMsR0FBR3BDLEVBQUU7QUFDckM7QUFFQSxLQUFLLE1BQU0sQ0FBQ29DLElBQUksRUFBRUksS0FBSyxDQUFDLElBQUlqRSxlQUFDLENBQUM4RCxPQUFPLENBQUNJLGNBQU0sQ0FBQyxFQUFFO0VBQzdDNUYsY0FBYyxDQUFDdUYsSUFBSSxDQUFDLEdBQUdJLEtBQUs7QUFDOUI7QUFBQyxlQUVjM0YsY0FBYztBQUFBIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-debugger.js","names":["VERSION","require","path","resolve","__dirname","version","ign","REMOTE_DEBUGGER_PORT","SAFARI_BUNDLE_ID","RPC_RESPONSE_TIMEOUT_MS","PAGE_READY_TIMEOUT","GARBAGE_COLLECT_TIMEOUT","RemoteDebugger","EventEmitter","constructor","opts","log","info","bundleId","additionalBundleIds","platformVersion","isSafari","includeSafari","useNewSafari","pageLoadMs","host","port","socketPath","pageReadyTimeout","remoteDebugProxy","garbageCollectOnExecute","logFullResponse","logAllCommunication","logAllCommunicationHexDump","webInspectorMaxFrameLength","socketChunkSize","fullPageInitialization","debug","_","isNil","isInteger","_lock","AsyncLock","setup","appDict","appIdKey","pageIdKey","pageLoading","_navigatingToPage","allowNavigationWithoutReload","rpcClient","_clientEventListeners","teardown","removeAllListeners","EVENT_PAGE_CHANGE","EVENT_DISCONNECT","initRpcClient","RpcClientSimulator","messageProxy","isConnected","launchSafari","send","startTimeline","fn","on","stopTimeline","addClientEventListener","eventName","listener","push","removeClientEventListener","off","startConsole","stopConsole","startNetwork","stopNetwork","allow","_allowNavigationWithoutReload","getCookies","urls","deleteCookie","cookieName","url","garbageCollect","timeoutMs","checkParams","err","B","timeout","then","gcSuccess","catch","gcError","TimeoutError","message","useAppDictLock","acquire","skippedApps","_skippedApps","name","toPairs","mixins","prototype","event","events"],"sources":["../../lib/remote-debugger.js"],"sourcesContent":["import { EventEmitter } from 'events';\nimport log from './logger';\nimport { RpcClientSimulator } from './rpc';\nimport { checkParams } from './utils';\nimport { mixins, events } from './mixins';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport path from 'path';\nimport AsyncLock from 'async-lock';\n\n\nlet VERSION;\ntry {\n VERSION = require(path.resolve(__dirname, '..', '..', 'package.json')).version;\n} catch (ign) {}\n\nconst REMOTE_DEBUGGER_PORT = 27753;\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\n\n/* How many milliseconds to wait for webkit to return a response before timing out */\nconst RPC_RESPONSE_TIMEOUT_MS = 5000;\n\nconst PAGE_READY_TIMEOUT = 5000;\n\nconst GARBAGE_COLLECT_TIMEOUT = 5000;\n\n\nclass RemoteDebugger extends EventEmitter {\n /*\n * The constructor takes an opts hash with the following properties:\n * - bundleId - id of the app being connected to\n * - additionalBundleIds - array of possible bundle ids that the inspector\n * could return\n * - platformVersion - version of iOS\n * - useNewSafari - for web inspector, whether this is a new Safari instance\n * - pageLoadMs - the time, in ms, that should be waited for page loading\n * - host - the remote debugger's host address\n * - port - the remote debugger port through which to communicate\n * - logAllCommunication - log plists sent and received from Web Inspector\n * - logAllCommunicationHexDump - log communication from Web Inspector as hex dump\n * - socketChunkSize - size, in bytes, of chunks of data sent to Web Inspector (real device only)\n * - webInspectorMaxFrameLength - The maximum size in bytes of a single data frame\n * in the device communication protocol\n */\n constructor (opts = {}) {\n super();\n\n if (VERSION) {\n log.info(`Remote Debugger version ${VERSION}`);\n }\n\n const {\n bundleId,\n additionalBundleIds = [],\n platformVersion,\n isSafari = true,\n includeSafari = false,\n useNewSafari = false,\n pageLoadMs,\n host,\n port = REMOTE_DEBUGGER_PORT,\n socketPath,\n pageReadyTimeout = PAGE_READY_TIMEOUT,\n remoteDebugProxy,\n garbageCollectOnExecute = false,\n logFullResponse = false,\n logAllCommunication = false,\n logAllCommunicationHexDump = false,\n webInspectorMaxFrameLength,\n socketChunkSize,\n fullPageInitialization,\n } = opts;\n\n this.bundleId = bundleId;\n this.additionalBundleIds = additionalBundleIds;\n this.platformVersion = platformVersion;\n this.isSafari = isSafari;\n this.includeSafari = includeSafari;\n this.useNewSafari = useNewSafari;\n this.pageLoadMs = pageLoadMs;\n log.debug(`useNewSafari --> ${this.useNewSafari}`);\n\n this.garbageCollectOnExecute = garbageCollectOnExecute;\n\n this.host = host;\n this.port = port;\n this.socketPath = socketPath;\n this.remoteDebugProxy = remoteDebugProxy;\n this.pageReadyTimeout = pageReadyTimeout;\n\n this.logAllCommunication = _.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;\n this.logAllCommunicationHexDump = logAllCommunicationHexDump;\n this.socketChunkSize = socketChunkSize;\n\n if (_.isInteger(webInspectorMaxFrameLength)) {\n this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;\n }\n\n this.fullPageInitialization = fullPageInitialization;\n\n this._lock = new AsyncLock();\n }\n\n setup () {\n // app handling configuration\n this.appDict = {};\n this.appIdKey = null;\n this.pageIdKey = null;\n this.pageLoading = false;\n this._navigatingToPage = false;\n this.allowNavigationWithoutReload = false;\n\n this.rpcClient = null;\n this._clientEventListeners = {};\n }\n\n teardown () {\n log.debug('Cleaning up listeners');\n\n this.appDict = {};\n this.appIdKey = null;\n this.pageIdKey = null;\n this.pageLoading = false;\n\n this.rpcClient = null;\n\n this.removeAllListeners(RemoteDebugger.EVENT_PAGE_CHANGE);\n this.removeAllListeners(RemoteDebugger.EVENT_DISCONNECT);\n }\n\n initRpcClient () {\n this.rpcClient = new RpcClientSimulator({\n bundleId: this.bundleId,\n platformVersion: this.platformVersion,\n isSafari: this.isSafari,\n host: this.host,\n port: this.port,\n socketPath: this.socketPath,\n messageProxy: this.remoteDebugProxy,\n logAllCommunication: this.logAllCommunication,\n logAllCommunicationHexDump: this.logAllCommunicationHexDump,\n fullPageInitialization: this.fullPageInitialization,\n webInspectorMaxFrameLength: this.webInspectorMaxFrameLength,\n });\n }\n\n get isConnected () {\n return !!this.rpcClient?.isConnected;\n }\n\n async launchSafari () {\n await this.rpcClient.send('launchApplication', {\n bundleId: SAFARI_BUNDLE_ID\n });\n }\n\n async startTimeline (fn) {\n log.debug('Starting to record the timeline');\n this.rpcClient.on('Timeline.eventRecorded', fn);\n return await this.rpcClient.send('startTimeline', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n }\n\n async stopTimeline () {\n log.debug('Stopping to record the timeline');\n await this.rpcClient.send('Timeline.stop', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n }\n\n /*\n * Keep track of the client event listeners so they can be removed\n */\n addClientEventListener (eventName, listener) {\n this._clientEventListeners[eventName] = this._clientEventListeners[eventName] || [];\n this._clientEventListeners[eventName].push(listener);\n this.rpcClient.on(eventName, listener);\n }\n\n removeClientEventListener (eventName) {\n for (const listener of (this._clientEventListeners[eventName] || [])) {\n this.rpcClient.off(eventName, listener);\n }\n }\n\n startConsole (listener) {\n log.debug('Starting to listen for JavaScript console');\n this.addClientEventListener('Console.messageAdded', listener);\n this.addClientEventListener('Console.messageRepeatCountUpdated', listener);\n }\n\n stopConsole () {\n log.debug('Stopping to listen for JavaScript console');\n this.removeClientEventListener('Console.messageAdded');\n this.removeClientEventListener('Console.messageRepeatCountUpdated');\n }\n\n startNetwork (listener) {\n log.debug('Starting to listen for network events');\n this.addClientEventListener('NetworkEvent', listener);\n }\n\n stopNetwork () {\n log.debug('Stopping to listen for network events');\n this.removeClientEventListener('NetworkEvent');\n }\n\n set allowNavigationWithoutReload (allow) {\n this._allowNavigationWithoutReload = allow;\n }\n\n get allowNavigationWithoutReload () {\n return this._allowNavigationWithoutReload;\n }\n\n async getCookies (urls) {\n log.debug('Getting cookies');\n return await this.rpcClient.send('Page.getCookies', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n urls,\n });\n }\n\n async deleteCookie (cookieName, url) {\n log.debug(`Deleting cookie '${cookieName}' on '${url}'`);\n return await this.rpcClient.send('Page.deleteCookie', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n cookieName,\n url,\n });\n }\n\n async garbageCollect (timeoutMs = GARBAGE_COLLECT_TIMEOUT) {\n log.debug(`Garbage collecting with ${timeoutMs}ms timeout`);\n try {\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n } catch (err) {\n log.debug(`Unable to collect garbage at this time`);\n return;\n }\n\n await B.resolve(this.rpcClient.send('Heap.gc', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n })).timeout(timeoutMs)\n .then(function gcSuccess () { // eslint-disable-line promise/prefer-await-to-then\n log.debug(`Garbage collection successful`);\n }).catch(function gcError (err) { // eslint-disable-line promise/prefer-await-to-callbacks\n if (err instanceof B.TimeoutError) {\n log.debug(`Garbage collection timed out after ${timeoutMs}ms`);\n } else {\n log.debug(`Unable to collect garbage: ${err.message}`);\n }\n });\n }\n\n async useAppDictLock (fn) {\n return await this._lock.acquire('appDict', fn);\n }\n\n get skippedApps () {\n return this._skippedApps || [];\n }\n}\n\nfor (const [name, fn] of _.toPairs(mixins)) {\n RemoteDebugger.prototype[name] = fn;\n}\n\nfor (const [name, event] of _.toPairs(events)) {\n RemoteDebugger[name] = event;\n}\n\nexport default RemoteDebugger;\nexport {\n RemoteDebugger, REMOTE_DEBUGGER_PORT, RPC_RESPONSE_TIMEOUT_MS,\n};\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -17,10 +16,7 @@ Object.defineProperty(exports, "RpcClientSimulator", {
17
16
  return _rpcClientSimulator.default;
18
17
  }
19
18
  });
20
-
21
19
  require("source-map-support/register");
22
-
23
20
  var _rpcClientSimulator = _interopRequireDefault(require("./rpc-client-simulator"));
24
-
25
21
  var _rpcClientRealDevice = _interopRequireDefault(require("./rpc-client-real-device"));
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUnBjQ2xpZW50U2ltdWxhdG9yIGZyb20gJy4vcnBjLWNsaWVudC1zaW11bGF0b3InO1xuaW1wb3J0IFJwY0NsaWVudFJlYWxEZXZpY2UgZnJvbSAnLi9ycGMtY2xpZW50LXJlYWwtZGV2aWNlJztcblxuXG5leHBvcnQgeyBScGNDbGllbnRTaW11bGF0b3IsIFJwY0NsaWVudFJlYWxEZXZpY2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBIn0=
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUnBjQ2xpZW50U2ltdWxhdG9yIGZyb20gJy4vcnBjLWNsaWVudC1zaW11bGF0b3InO1xuaW1wb3J0IFJwY0NsaWVudFJlYWxEZXZpY2UgZnJvbSAnLi9ycGMtY2xpZW50LXJlYWwtZGV2aWNlJztcblxuXG5leHBvcnQgeyBScGNDbGllbnRTaW11bGF0b3IsIFJwY0NsaWVudFJlYWxEZXZpY2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../lib/rpc/index.js"],"sourcesContent":["import RpcClientSimulator from './rpc-client-simulator';\nimport RpcClientRealDevice from './rpc-client-real-device';\n\n\nexport { RpcClientSimulator, RpcClientRealDevice };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AACA"}
@@ -1,22 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = exports.RemoteMessages = void 0;
9
-
10
8
  require("source-map-support/register");
11
-
12
9
  var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
10
  var _protocol = _interopRequireDefault(require("../protocol"));
15
-
16
11
  const OBJECT_GROUP = 'console';
17
12
  const MINIMAL_COMMAND = 'getMinimalCommand';
18
13
  const FULL_COMMAND = 'getFullCommand';
19
14
  const DIRECT_COMMAND = 'getDirectCommand';
15
+
20
16
  const COMMANDS = {
21
17
  'Page.getCookies': FULL_COMMAND,
22
18
  'Page.navigate': FULL_COMMAND,
@@ -27,16 +23,13 @@ const COMMANDS = {
27
23
  'Timeline.start': FULL_COMMAND,
28
24
  'Timeline.stop': FULL_COMMAND
29
25
  };
30
-
31
26
  class RemoteMessages {
32
27
  constructor(isTargetBased = false) {
33
28
  this.isTargetBased = isTargetBased;
34
29
  }
35
-
36
30
  set isTargetBased(isTargetBased) {
37
31
  this._isTargetBased = isTargetBased;
38
32
  }
39
-
40
33
  get isTargetBased() {
41
34
  return this._isTargetBased;
42
35
  }
@@ -49,7 +42,6 @@ class RemoteMessages {
49
42
  __selector: '_rpc_reportIdentifier:'
50
43
  };
51
44
  }
52
-
53
45
  connectToApp(connId, appIdKey) {
54
46
  return {
55
47
  __argument: {
@@ -59,7 +51,6 @@ class RemoteMessages {
59
51
  __selector: '_rpc_forwardGetListing:'
60
52
  };
61
53
  }
62
-
63
54
  setSenderKey(connId, senderId, appIdKey, pageIdKey) {
64
55
  return {
65
56
  __argument: {
@@ -72,7 +63,6 @@ class RemoteMessages {
72
63
  __selector: '_rpc_forwardSocketSetup:'
73
64
  };
74
65
  }
75
-
76
66
  indicateWebView(connId, appIdKey, pageIdKey, enabled) {
77
67
  return {
78
68
  __argument: {
@@ -84,7 +74,6 @@ class RemoteMessages {
84
74
  __selector: '_rpc_forwardIndicateWebView:'
85
75
  };
86
76
  }
87
-
88
77
  launchApplication(bundleId) {
89
78
  return {
90
79
  __argument: {
@@ -93,7 +82,6 @@ class RemoteMessages {
93
82
  __selector: '_rpc_requestApplicationLaunch:'
94
83
  };
95
84
  }
96
-
97
85
  getFullCommand(opts = {}) {
98
86
  const {
99
87
  method,
@@ -105,9 +93,9 @@ class RemoteMessages {
105
93
  targetId,
106
94
  id
107
95
  } = opts;
96
+
108
97
  let realMethod;
109
98
  let realParams;
110
-
111
99
  if (this.isTargetBased) {
112
100
  realMethod = 'Target.sendMessageToTarget';
113
101
  realParams = {
@@ -134,7 +122,6 @@ class RemoteMessages {
134
122
  emulateUserGesture: false
135
123
  }, params);
136
124
  }
137
-
138
125
  const plist = {
139
126
  __argument: {
140
127
  WIRSocketDataKey: {
@@ -150,7 +137,6 @@ class RemoteMessages {
150
137
  };
151
138
  return _lodash.default.omitBy(plist, _lodash.default.isNil);
152
139
  }
153
-
154
140
  getMinimalCommand(opts = {}) {
155
141
  const {
156
142
  method,
@@ -164,7 +150,6 @@ class RemoteMessages {
164
150
  } = opts;
165
151
  let realMethod = method;
166
152
  let realParams = params;
167
-
168
153
  if (this.isTargetBased) {
169
154
  realMethod = 'Target.sendMessageToTarget';
170
155
  realParams = {
@@ -176,7 +161,6 @@ class RemoteMessages {
176
161
  })
177
162
  };
178
163
  }
179
-
180
164
  const plist = {
181
165
  __argument: {
182
166
  WIRSocketDataKey: {
@@ -192,7 +176,6 @@ class RemoteMessages {
192
176
  };
193
177
  return _lodash.default.omitBy(plist, _lodash.default.isNil);
194
178
  }
195
-
196
179
  getDirectCommand(opts = {}) {
197
180
  const {
198
181
  method,
@@ -219,7 +202,6 @@ class RemoteMessages {
219
202
  };
220
203
  return _lodash.default.omitBy(plist, _lodash.default.isNil);
221
204
  }
222
-
223
205
  getRemoteCommand(command, opts) {
224
206
  const {
225
207
  id,
@@ -233,22 +215,19 @@ class RemoteMessages {
233
215
  switch (command) {
234
216
  case 'setConnectionKey':
235
217
  return this.setConnectionKey(connId);
236
-
237
218
  case 'indicateWebView':
238
219
  return this.indicateWebView(connId, appIdKey, pageIdKey, opts.enabled);
239
-
240
220
  case 'connectToApp':
241
221
  return this.connectToApp(connId, appIdKey);
242
-
243
222
  case 'setSenderKey':
244
223
  return this.setSenderKey(connId, senderId, appIdKey, pageIdKey);
245
-
246
224
  case 'launchApplication':
247
225
  return this.launchApplication(opts.bundleId);
248
226
  }
249
227
 
250
228
  const builderFunction = COMMANDS[command] || MINIMAL_COMMAND;
251
- return this[builderFunction]({ ...(0, _protocol.default)(id, command, opts),
229
+ return this[builderFunction]({
230
+ ...(0, _protocol.default)(id, command, opts),
252
231
  connId,
253
232
  appIdKey,
254
233
  senderId,
@@ -256,10 +235,8 @@ class RemoteMessages {
256
235
  targetId
257
236
  });
258
237
  }
259
-
260
238
  }
261
-
262
239
  exports.RemoteMessages = RemoteMessages;
263
240
  var _default = RemoteMessages;
264
241
  exports.default = _default;
265
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQkpFQ1RfR1JPVVAiLCJNSU5JTUFMX0NPTU1BTkQiLCJGVUxMX0NPTU1BTkQiLCJESVJFQ1RfQ09NTUFORCIsIkNPTU1BTkRTIiwiUmVtb3RlTWVzc2FnZXMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsInNldENvbm5lY3Rpb25LZXkiLCJjb25uSWQiLCJfX2FyZ3VtZW50IiwiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiLCJfX3NlbGVjdG9yIiwiY29ubmVjdFRvQXBwIiwiYXBwSWRLZXkiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJzZXRTZW5kZXJLZXkiLCJzZW5kZXJJZCIsInBhZ2VJZEtleSIsIldJUlNlbmRlcktleSIsIldJUlBhZ2VJZGVudGlmaWVyS2V5IiwiV0lSQXV0b21hdGljYWxseVBhdXNlIiwiaW5kaWNhdGVXZWJWaWV3IiwiZW5hYmxlZCIsIldJUkluZGljYXRlRW5hYmxlZEtleSIsIl8iLCJpc05pbCIsImxhdW5jaEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiLCJnZXRGdWxsQ29tbWFuZCIsIm9wdHMiLCJtZXRob2QiLCJwYXJhbXMiLCJ0YXJnZXRJZCIsImlkIiwicmVhbE1ldGhvZCIsInJlYWxQYXJhbXMiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9iamVjdCIsImFzc2lnbiIsIm9iamVjdEdyb3VwIiwiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIiwiZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIiwiZW11bGF0ZVVzZXJHZXN0dXJlIiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsInBsaXN0IiwiV0lSU29ja2V0RGF0YUtleSIsIm9taXRCeSIsImdldE1pbmltYWxDb21tYW5kIiwiZ2V0RGlyZWN0Q29tbWFuZCIsImdldFJlbW90ZUNvbW1hbmQiLCJjb21tYW5kIiwiYnVpbGRlckZ1bmN0aW9uIiwiZ2V0UHJvdG9jb2xDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9yZW1vdGUtbWVzc2FnZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXRQcm90b2NvbENvbW1hbmQgZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5cbmNvbnN0IE9CSkVDVF9HUk9VUCA9ICdjb25zb2xlJztcblxuY29uc3QgTUlOSU1BTF9DT01NQU5EID0gJ2dldE1pbmltYWxDb21tYW5kJztcbmNvbnN0IEZVTExfQ09NTUFORCA9ICdnZXRGdWxsQ29tbWFuZCc7XG5jb25zdCBESVJFQ1RfQ09NTUFORCA9ICdnZXREaXJlY3RDb21tYW5kJztcblxuLy8gbWFwcGluZyBvZiBjb21tYW5kcyB0byB0aGUgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGNvbW1hbmRcbi8vIGRlZmF1bHRzIHRvIGBnZXRNaW5pbWFsQ29tbWFuZGAsIHNvIG5vIG5lZWQgdG8gaGF2ZSB0aG9zZSBsaXN0ZWQgaGVyZVxuY29uc3QgQ09NTUFORFMgPSB7XG4gICdQYWdlLmdldENvb2tpZXMnOiBGVUxMX0NPTU1BTkQsXG4gICdQYWdlLm5hdmlnYXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdSdW50aW1lLmF3YWl0UHJvbWlzZSc6IEZVTExfQ09NTUFORCxcbiAgJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nOiBGVUxMX0NPTU1BTkQsXG4gICdSdW50aW1lLmV2YWx1YXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdUYXJnZXQuZXhpc3RzJzogRElSRUNUX0NPTU1BTkQsXG5cbiAgJ1RpbWVsaW5lLnN0YXJ0JzogRlVMTF9DT01NQU5ELFxuICAnVGltZWxpbmUuc3RvcCc6IEZVTExfQ09NTUFORCxcbn07XG5cbmNsYXNzIFJlbW90ZU1lc3NhZ2VzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIHRoaXMuX2lzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgLypcbiAgICogQ29ubmVjdGlvbiBmdW5jdGlvbnNcbiAgICovXG5cbiAgc2V0Q29ubmVjdGlvbktleSAoY29ubklkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZFxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX3JlcG9ydElkZW50aWZpZXI6J1xuICAgIH07XG4gIH1cblxuICBjb25uZWN0VG9BcHAgKGNvbm5JZCwgYXBwSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5XG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6J1xuICAgIH07XG4gIH1cblxuICBzZXRTZW5kZXJLZXkgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJTZW5kZXJLZXk6IHNlbmRlcklkLFxuICAgICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5LFxuICAgICAgICBXSVJBdXRvbWF0aWNhbGx5UGF1c2U6IGZhbHNlXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldFNldHVwOidcbiAgICB9O1xuICB9XG5cbiAgaW5kaWNhdGVXZWJWaWV3IChjb25uSWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGVuYWJsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJJbmRpY2F0ZUVuYWJsZWRLZXk6IF8uaXNOaWwoZW5hYmxlZCkgPyB0cnVlIDogZW5hYmxlZCxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleVxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX2ZvcndhcmRJbmRpY2F0ZVdlYlZpZXc6J1xuICAgIH07XG4gIH1cblxuICBsYXVuY2hBcHBsaWNhdGlvbiAoYnVuZGxlSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXk6IGJ1bmRsZUlkXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfcmVxdWVzdEFwcGxpY2F0aW9uTGF1bmNoOidcbiAgICB9O1xuICB9XG5cbiAgZ2V0RnVsbENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGNvbm5JZCxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIGlkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLyogVGhlIFdlYiBJbnNwZWN0b3IgaGFzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIGluLCBhc1xuICAgICAqIHNlZW4gd2hlbiBkdW1waW5nIHdoYXQgU2FmYXJpIGlzIGRvaW5nIHdoZW4gY29tbXVuaWNhdGluZyB3aXRoIGl0LiBNb3N0XG4gICAgICogYXJlIGtlcHQgYXMgdGhleSBhcmUgc2V0IGZvciBTYWZhcmkuIFRoZSBleGNlcHRpb24gaXMgYGVtdWxhdGVVc2VyR2VzdHVyZWBcbiAgICAgKiB3aGljaCwgb24gaU9TIDEzKywgYnJlYWtzIHBvcHVwIGJsb2NraW5nIChpLmUuLCBldmVuIHdpdGggdGhlIHBvcHVwXG4gICAgICogYmxvY2tpbmcgc2V0dGluZyBvbiwgbmV3IHdpbmRvd3MgYXJlIG9wZW5hYmxlIGJvdGggZnJvbSBsaW5rcyBhbmQgZnJvbVxuICAgICAqIEphdmFTY3JpcHQpLlxuICAgICAqL1xuXG4gICAgbGV0IHJlYWxNZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgb2JqZWN0R3JvdXA6IE9CSkVDVF9HUk9VUCxcbiAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgICAgICBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZSxcbiAgICAgICAgICAgIHNhdmVSZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sIHBhcmFtcylcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVhbFBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvYmplY3RHcm91cDogT0JKRUNUX0dST1VQLFxuICAgICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IHRydWUsXG4gICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgIGVtdWxhdGVVc2VyR2VzdHVyZTogZmFsc2UsXG4gICAgICB9LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgbWV0aG9kOiByZWFsTWV0aG9kLFxuICAgICAgICAgIHBhcmFtczogcmVhbFBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonLFxuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldE1pbmltYWxDb21tYW5kIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7bWV0aG9kLCBwYXJhbXMsIGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIHRhcmdldElkLCBpZH0gPSBvcHRzO1xuXG4gICAgbGV0IHJlYWxNZXRob2QgPSBtZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXMgPSBwYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGlzdCA9IHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSU29ja2V0RGF0YUtleToge1xuICAgICAgICAgIG1ldGhvZDogcmVhbE1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IHJlYWxQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWQsXG4gICAgICAgIFdJUlNlbmRlcktleTogc2VuZGVySWQsXG4gICAgICAgIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTogYXBwSWRLZXksXG4gICAgICAgIFdJUlBhZ2VJZGVudGlmaWVyS2V5OiBwYWdlSWRLZXksXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldERhdGE6J1xuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldERpcmVjdENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHttZXRob2QsIHBhcmFtcywgY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgaWR9ID0gb3B0cztcblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonXG4gICAgfTtcbiAgICByZXR1cm4gXy5vbWl0QnkocGxpc3QsIF8uaXNOaWwpO1xuICB9XG5cbiAgZ2V0UmVtb3RlQ29tbWFuZCAoY29tbWFuZCwgb3B0cykge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkLFxuICAgICAgY29ubklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBzZW5kZXJJZCxcbiAgICAgIHBhZ2VJZEtleSxcbiAgICAgIHRhcmdldElkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLy8gZGVhbCB3aXRoIFNhZmFyaSBXZWIgSW5zcGVjdG9yIGNvbW1hbmRzXG4gICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICBjYXNlICdzZXRDb25uZWN0aW9uS2V5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29ubmVjdGlvbktleShjb25uSWQpO1xuICAgICAgY2FzZSAnaW5kaWNhdGVXZWJWaWV3JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNhdGVXZWJWaWV3KGNvbm5JZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgb3B0cy5lbmFibGVkKTtcbiAgICAgIGNhc2UgJ2Nvbm5lY3RUb0FwcCc6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RUb0FwcChjb25uSWQsIGFwcElkS2V5KTtcbiAgICAgIGNhc2UgJ3NldFNlbmRlcktleSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNlbmRlcktleShjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgIGNhc2UgJ2xhdW5jaEFwcGxpY2F0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoQXBwbGljYXRpb24ob3B0cy5idW5kbGVJZCk7XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIFdlYktpdCBjb21tYW5kc1xuICAgIGNvbnN0IGJ1aWxkZXJGdW5jdGlvbiA9IENPTU1BTkRTW2NvbW1hbmRdIHx8IE1JTklNQUxfQ09NTUFORDtcbiAgICByZXR1cm4gdGhpc1tidWlsZGVyRnVuY3Rpb25dKHtcbiAgICAgIC4uLmdldFByb3RvY29sQ29tbWFuZChpZCwgY29tbWFuZCwgb3B0cyksXG4gICAgICBjb25uSWQsXG4gICAgICBhcHBJZEtleSxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgcGFnZUlkS2V5LFxuICAgICAgdGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUmVtb3RlTWVzc2FnZXMgfTtcbmV4cG9ydCBkZWZhdWx0IFJlbW90ZU1lc3NhZ2VzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLE1BQU1BLFlBQVksR0FBRyxTQUFyQjtBQUVBLE1BQU1DLGVBQWUsR0FBRyxtQkFBeEI7QUFDQSxNQUFNQyxZQUFZLEdBQUcsZ0JBQXJCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLGtCQUF2QjtBQUlBLE1BQU1DLFFBQVEsR0FBRztFQUNmLG1CQUFtQkYsWUFESjtFQUVmLGlCQUFpQkEsWUFGRjtFQUlmLHdCQUF3QkEsWUFKVDtFQUtmLDBCQUEwQkEsWUFMWDtFQU1mLG9CQUFvQkEsWUFOTDtFQVFmLGlCQUFpQkMsY0FSRjtFQVVmLGtCQUFrQkQsWUFWSDtFQVdmLGlCQUFpQkE7QUFYRixDQUFqQjs7QUFjQSxNQUFNRyxjQUFOLENBQXFCO0VBQ25CQyxXQUFXLENBQUVDLGFBQWEsR0FBRyxLQUFsQixFQUF5QjtJQUNsQyxLQUFLQSxhQUFMLEdBQXFCQSxhQUFyQjtFQUNEOztFQUVn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
242
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQkpFQ1RfR1JPVVAiLCJNSU5JTUFMX0NPTU1BTkQiLCJGVUxMX0NPTU1BTkQiLCJESVJFQ1RfQ09NTUFORCIsIkNPTU1BTkRTIiwiUmVtb3RlTWVzc2FnZXMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsInNldENvbm5lY3Rpb25LZXkiLCJjb25uSWQiLCJfX2FyZ3VtZW50IiwiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiLCJfX3NlbGVjdG9yIiwiY29ubmVjdFRvQXBwIiwiYXBwSWRLZXkiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJzZXRTZW5kZXJLZXkiLCJzZW5kZXJJZCIsInBhZ2VJZEtleSIsIldJUlNlbmRlcktleSIsIldJUlBhZ2VJZGVudGlmaWVyS2V5IiwiV0lSQXV0b21hdGljYWxseVBhdXNlIiwiaW5kaWNhdGVXZWJWaWV3IiwiZW5hYmxlZCIsIldJUkluZGljYXRlRW5hYmxlZEtleSIsIl8iLCJpc05pbCIsImxhdW5jaEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiLCJnZXRGdWxsQ29tbWFuZCIsIm9wdHMiLCJtZXRob2QiLCJwYXJhbXMiLCJ0YXJnZXRJZCIsImlkIiwicmVhbE1ldGhvZCIsInJlYWxQYXJhbXMiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9iamVjdCIsImFzc2lnbiIsIm9iamVjdEdyb3VwIiwiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIiwiZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIiwiZW11bGF0ZVVzZXJHZXN0dXJlIiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsInBsaXN0IiwiV0lSU29ja2V0RGF0YUtleSIsIm9taXRCeSIsImdldE1pbmltYWxDb21tYW5kIiwiZ2V0RGlyZWN0Q29tbWFuZCIsImdldFJlbW90ZUNvbW1hbmQiLCJjb21tYW5kIiwiYnVpbGRlckZ1bmN0aW9uIiwiZ2V0UHJvdG9jb2xDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9yZW1vdGUtbWVzc2FnZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXRQcm90b2NvbENvbW1hbmQgZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5cbmNvbnN0IE9CSkVDVF9HUk9VUCA9ICdjb25zb2xlJztcblxuY29uc3QgTUlOSU1BTF9DT01NQU5EID0gJ2dldE1pbmltYWxDb21tYW5kJztcbmNvbnN0IEZVTExfQ09NTUFORCA9ICdnZXRGdWxsQ29tbWFuZCc7XG5jb25zdCBESVJFQ1RfQ09NTUFORCA9ICdnZXREaXJlY3RDb21tYW5kJztcblxuLy8gbWFwcGluZyBvZiBjb21tYW5kcyB0byB0aGUgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGNvbW1hbmRcbi8vIGRlZmF1bHRzIHRvIGBnZXRNaW5pbWFsQ29tbWFuZGAsIHNvIG5vIG5lZWQgdG8gaGF2ZSB0aG9zZSBsaXN0ZWQgaGVyZVxuY29uc3QgQ09NTUFORFMgPSB7XG4gICdQYWdlLmdldENvb2tpZXMnOiBGVUxMX0NPTU1BTkQsXG4gICdQYWdlLm5hdmlnYXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdSdW50aW1lLmF3YWl0UHJvbWlzZSc6IEZVTExfQ09NTUFORCxcbiAgJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nOiBGVUxMX0NPTU1BTkQsXG4gICdSdW50aW1lLmV2YWx1YXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdUYXJnZXQuZXhpc3RzJzogRElSRUNUX0NPTU1BTkQsXG5cbiAgJ1RpbWVsaW5lLnN0YXJ0JzogRlVMTF9DT01NQU5ELFxuICAnVGltZWxpbmUuc3RvcCc6IEZVTExfQ09NTUFORCxcbn07XG5cbmNsYXNzIFJlbW90ZU1lc3NhZ2VzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIHRoaXMuX2lzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgLypcbiAgICogQ29ubmVjdGlvbiBmdW5jdGlvbnNcbiAgICovXG5cbiAgc2V0Q29ubmVjdGlvbktleSAoY29ubklkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZFxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX3JlcG9ydElkZW50aWZpZXI6J1xuICAgIH07XG4gIH1cblxuICBjb25uZWN0VG9BcHAgKGNvbm5JZCwgYXBwSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5XG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6J1xuICAgIH07XG4gIH1cblxuICBzZXRTZW5kZXJLZXkgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJTZW5kZXJLZXk6IHNlbmRlcklkLFxuICAgICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5LFxuICAgICAgICBXSVJBdXRvbWF0aWNhbGx5UGF1c2U6IGZhbHNlXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldFNldHVwOidcbiAgICB9O1xuICB9XG5cbiAgaW5kaWNhdGVXZWJWaWV3IChjb25uSWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGVuYWJsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJJbmRpY2F0ZUVuYWJsZWRLZXk6IF8uaXNOaWwoZW5hYmxlZCkgPyB0cnVlIDogZW5hYmxlZCxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleVxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX2ZvcndhcmRJbmRpY2F0ZVdlYlZpZXc6J1xuICAgIH07XG4gIH1cblxuICBsYXVuY2hBcHBsaWNhdGlvbiAoYnVuZGxlSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXk6IGJ1bmRsZUlkXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfcmVxdWVzdEFwcGxpY2F0aW9uTGF1bmNoOidcbiAgICB9O1xuICB9XG5cbiAgZ2V0RnVsbENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGNvbm5JZCxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIGlkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLyogVGhlIFdlYiBJbnNwZWN0b3IgaGFzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIGluLCBhc1xuICAgICAqIHNlZW4gd2hlbiBkdW1waW5nIHdoYXQgU2FmYXJpIGlzIGRvaW5nIHdoZW4gY29tbXVuaWNhdGluZyB3aXRoIGl0LiBNb3N0XG4gICAgICogYXJlIGtlcHQgYXMgdGhleSBhcmUgc2V0IGZvciBTYWZhcmkuIFRoZSBleGNlcHRpb24gaXMgYGVtdWxhdGVVc2VyR2VzdHVyZWBcbiAgICAgKiB3aGljaCwgb24gaU9TIDEzKywgYnJlYWtzIHBvcHVwIGJsb2NraW5nIChpLmUuLCBldmVuIHdpdGggdGhlIHBvcHVwXG4gICAgICogYmxvY2tpbmcgc2V0dGluZyBvbiwgbmV3IHdpbmRvd3MgYXJlIG9wZW5hYmxlIGJvdGggZnJvbSBsaW5rcyBhbmQgZnJvbVxuICAgICAqIEphdmFTY3JpcHQpLlxuICAgICAqL1xuXG4gICAgbGV0IHJlYWxNZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgb2JqZWN0R3JvdXA6IE9CSkVDVF9HUk9VUCxcbiAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgICAgICBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZSxcbiAgICAgICAgICAgIHNhdmVSZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sIHBhcmFtcylcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVhbFBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvYmplY3RHcm91cDogT0JKRUNUX0dST1VQLFxuICAgICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IHRydWUsXG4gICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgIGVtdWxhdGVVc2VyR2VzdHVyZTogZmFsc2UsXG4gICAgICB9LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgbWV0aG9kOiByZWFsTWV0aG9kLFxuICAgICAgICAgIHBhcmFtczogcmVhbFBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonLFxuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldE1pbmltYWxDb21tYW5kIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7bWV0aG9kLCBwYXJhbXMsIGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIHRhcmdldElkLCBpZH0gPSBvcHRzO1xuXG4gICAgbGV0IHJlYWxNZXRob2QgPSBtZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXMgPSBwYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGlzdCA9IHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSU29ja2V0RGF0YUtleToge1xuICAgICAgICAgIG1ldGhvZDogcmVhbE1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IHJlYWxQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWQsXG4gICAgICAgIFdJUlNlbmRlcktleTogc2VuZGVySWQsXG4gICAgICAgIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTogYXBwSWRLZXksXG4gICAgICAgIFdJUlBhZ2VJZGVudGlmaWVyS2V5OiBwYWdlSWRLZXksXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldERhdGE6J1xuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldERpcmVjdENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHttZXRob2QsIHBhcmFtcywgY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgaWR9ID0gb3B0cztcblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonXG4gICAgfTtcbiAgICByZXR1cm4gXy5vbWl0QnkocGxpc3QsIF8uaXNOaWwpO1xuICB9XG5cbiAgZ2V0UmVtb3RlQ29tbWFuZCAoY29tbWFuZCwgb3B0cykge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkLFxuICAgICAgY29ubklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBzZW5kZXJJZCxcbiAgICAgIHBhZ2VJZEtleSxcbiAgICAgIHRhcmdldElkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLy8gZGVhbCB3aXRoIFNhZmFyaSBXZWIgSW5zcGVjdG9yIGNvbW1hbmRzXG4gICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICBjYXNlICdzZXRDb25uZWN0aW9uS2V5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29ubmVjdGlvbktleShjb25uSWQpO1xuICAgICAgY2FzZSAnaW5kaWNhdGVXZWJWaWV3JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNhdGVXZWJWaWV3KGNvbm5JZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgb3B0cy5lbmFibGVkKTtcbiAgICAgIGNhc2UgJ2Nvbm5lY3RUb0FwcCc6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RUb0FwcChjb25uSWQsIGFwcElkS2V5KTtcbiAgICAgIGNhc2UgJ3NldFNlbmRlcktleSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNlbmRlcktleShjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgIGNhc2UgJ2xhdW5jaEFwcGxpY2F0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoQXBwbGljYXRpb24ob3B0cy5idW5kbGVJZCk7XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIFdlYktpdCBjb21tYW5kc1xuICAgIGNvbnN0IGJ1aWxkZXJGdW5jdGlvbiA9IENPTU1BTkRTW2NvbW1hbmRdIHx8IE1JTklNQUxfQ09NTUFORDtcbiAgICByZXR1cm4gdGhpc1tidWlsZGVyRnVuY3Rpb25dKHtcbiAgICAgIC4uLmdldFByb3RvY29sQ29tbWFuZChpZCwgY29tbWFuZCwgb3B0cyksXG4gICAgICBjb25uSWQsXG4gICAgICBhcHBJZEtleSxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgcGFnZUlkS2V5LFxuICAgICAgdGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUmVtb3RlTWVzc2FnZXMgfTtcbmV4cG9ydCBkZWZhdWx0IFJlbW90ZU1lc3NhZ2VzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFHQSxNQUFNQSxZQUFZLEdBQUcsU0FBUztBQUU5QixNQUFNQyxlQUFlLEdBQUcsbUJBQW1CO0FBQzNDLE1BQU1DLFlBQVksR0FBRyxnQkFBZ0I7QUFDckMsTUFBTUMsY0FBYyxHQUFHLGtCQUFrQjs7QUFJekMsTUFBTUMsUUFBUSxHQUFHO0VBQ2YsaUJBQWlCLEVBQUVGLFlBQVk7RUFDL0IsZUFBZSxFQUFFQSxZQUFZO0VBRTdCLHNCQUFzQixFQUFFQSxZQUFZO0VBQ3BDLHdCQUF3QixFQUFFQSxZQUFZO0VBQ3RDLGtCQUFrQixFQUFFQSxZQUFZO0VBRWhDLGVBQWUsRUFBRUMsY0FBYztFQUUvQixnQkFBZ0IsRUFBRUQsWUFBWTtFQUM5QixlQUFlLEVBQUVBO0FBQ25CLENBQUM7QUFFRCxNQUFNRyxjQUFjLENBQUM7RUFDbkJDLFdBQVcsQ0FBRUMsYUFBYSxHQUFHLEtBQUssRUFBRTtJQUNs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