appium-xcuitest-driver 4.9.1 → 4.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -617,6 +617,37 @@ isRoot | boolean | no | This option defines where the certificate should be inst
617
617
 
618
618
  The content of the generated .mobileconfig file as base64-encoded string. This config might be useful for debugging purposes. If the certificate has been successfully set via CLI then nothing is returned.
619
619
 
620
+ ### mobile: listCertificates
621
+
622
+ Lists installed certificates for real devices only if [py-ios-device](https://github.com/YueChen-C/py-ios-device) tool is available on the server machine since driver version 4.10.0.
623
+
624
+ #### Returned Result
625
+
626
+ Returns map of certificates installed on the real device. The response looks like:
627
+
628
+ ```json
629
+ {
630
+ 'OrderedIdentifiers': ['com.orgname.profile.mdmprofile'],
631
+ 'ProfileManifest': {
632
+ 'com.orgname.profile.mdmprofile': {
633
+ 'Description': 'MDM Profile',
634
+ 'IsActive': True
635
+ }
636
+ },
637
+ 'ProfileMetadata': {
638
+ 'com.orgname.profile.mdmprofile': {
639
+ 'PayloadDescription': 'MDM Profile for testing,
640
+ 'PayloadDisplayName': 'MDM Profile',
641
+ 'PayloadOrganization': 'My Org, Inc.',
642
+ 'PayloadRemovalDisallowed': False,
643
+ 'PayloadUUID': '9ab3fa27-cc45-4c23-a94a-714686397a86',
644
+ 'PayloadVersion': 1
645
+ }
646
+ },
647
+ 'Status': 'Acknowledged'
648
+ }
649
+ ```
650
+
620
651
  ### mobile: startLogsBroadcast
621
652
 
622
653
  Starts iOS system logs broadcast websocket on the same host and port where Appium server is running at `/ws/session/:sessionId:/appium/syslog` endpoint. The method will return immediately if the web socket is already listening.
@@ -848,7 +879,7 @@ Deletes the given file from the device under test.
848
879
 
849
880
  Name | Type | Required | Description | Example
850
881
  --- | --- | --- | --- | ---
851
- remotePath | string | yes | The path to an existing remote file on the device. This variable can be prefixed with bundle id, so then the file will be downloaded from the corresponding application container instead of the default media folder. Use `@<app_bundle_id>:<optional_container_type>/<path_to_the_file_or_folder_inside_container>` format to delete a file or a folder from an application container of the given type. The only supported container type is 'documents'. If the container type is not set explicitly for a bundle id, then the default application container is going to be mounted (aka --container ifuse argument) e.g. If `@com.myapp.bla:documents/111.png` is provided, `On My iPhone/<app name>` in Files app will be mounted to the host machine. `@com.myapp.bla:documents/` means `On My iPhone/<app name>`. | @com.mycompany.myapp:documents/myfile.txt
882
+ remotePath | string | yes | The path to an existing remote file on the device. This variable can be prefixed with bundle id, so then the file will be deleted from the corresponding application container instead of the default media folder. Use `@<app_bundle_id>:<optional_container_type>/<path_to_the_file_or_folder_inside_container>` format to delete a file or a folder from an application container of the given type. The only supported container type is 'documents'. If the container type is not set explicitly for a bundle id, then the default application container is going to be mounted (aka --container ifuse argument) e.g. If `@com.myapp.bla:documents/111.png` is provided, `On My iPhone/<app name>` in Files app will be mounted to the host machine. `@com.myapp.bla:documents/` means `On My iPhone/<app name>`. | @com.mycompany.myapp:documents/myfile.txt
852
883
 
853
884
  ### mobile: deleteFolder
854
885
 
@@ -30,6 +30,8 @@ var _portscanner = require("portscanner");
30
30
 
31
31
  var _pyIosDeviceClient = _interopRequireDefault(require("../py-ios-device-client"));
32
32
 
33
+ var _driver = require("appium/driver");
34
+
33
35
  let extensions = {},
34
36
  commands = {};
35
37
  exports.commands = commands;
@@ -391,9 +393,23 @@ commands.mobileInstallCertificate = async function mobileInstallCertificate(opts
391
393
  }
392
394
  };
393
395
 
396
+ commands.mobileListCertificates = async function mobileListCertificates() {
397
+ if (!this.isRealDevice()) {
398
+ throw new _driver.errors.NotImplementedError('This extension is only supported on real devices');
399
+ }
400
+
401
+ const client = new _pyIosDeviceClient.default(this.opts.udid);
402
+
403
+ if (await client.assertExists(false)) {
404
+ return await client.listProfiles();
405
+ }
406
+
407
+ throw new Error('pyidevice is not installed on your system, command cannot be executed.');
408
+ };
409
+
394
410
  Object.assign(extensions, commands);
395
411
  var _default = extensions;
396
412
  exports.default = _default;require('source-map-support').install();
397
413
 
398
414
 
399
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiQ09ORklHX0VYVEVOU0lPTiIsIkhPU1RfUE9SVF9SQU5HRSIsIlRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQiLCJTZXR0aW5ncyIsIkdlbmVyYWwiLCJ0eXBlIiwidmFsdWUiLCJQcm9maWxlIiwiQWJvdXQiLCJDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5ncyIsIkJ1dHRvbiIsIkluc3RhbGwiLCJBbGxvdyIsIkRvbmUiLCJSZXR1cm5fdG9fU2V0dGluZ3MiLCJBbGVydCIsImV4dHJhY3RDb21tb25OYW1lIiwiY2VydEJ1ZmZlciIsInRlbXBDZXJ0IiwidGVtcERpciIsIm9wZW4iLCJwcmVmaXgiLCJzdWZmaXgiLCJmcyIsIndyaXRlRmlsZSIsInBhdGgiLCJzdGRvdXQiLCJleGVjIiwicGFyc2VDb21tb25OYW1lIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwicmltcmFmIiwiTElCUkVfU1NMX1BBVFRFUk4iLCJPUEVOX1NTTF9QQVRURVJOIiwic3RyaW5nQ2VydGlmaWNhdGUiLCJyZXN1bHQiLCJyZWR1Y2UiLCJhY2MiLCJyIiwibWF0Y2giLCJ0b01vYmlsZUNvbmZpZyIsImNvbW1vbk5hbWUiLCJnZXRVVUlEIiwidXRpbCIsInV1aWRWNCIsInRvVXBwZXJDYXNlIiwiY29udGVudFV1aWQiLCJQYXlsb2FkQ29udGVudCIsIlBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lIiwiUGF5bG9hZERlc2NyaXB0aW9uIiwiUGF5bG9hZERpc3BsYXlOYW1lIiwiUGF5bG9hZElkZW50aWZpZXIiLCJQYXlsb2FkVHlwZSIsIlBheWxvYWRVVUlEIiwiUGF5bG9hZFZlcnNpb24iLCJvcyIsImhvc3RuYW1lIiwic3BsaXQiLCJQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQiLCJjbGlja0VsZW1lbnQiLCJkcml2ZXIiLCJsb2NhdG9yIiwib3B0aW9ucyIsImVsZW1lbnQiLCJ0aW1lb3V0Iiwic2tpcElmSW52aXNpYmxlIiwibG9va3VwRGVsYXkiLCJyZXRyeUludGVydmFsIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hdGl2ZUNsaWNrIiwiaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIiwiQiIsImRlbGF5IiwidHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXMiLCJuYW1lIiwic3dpdGNoTG9jYXRvciIsInJldHJ5IiwibW9iaWxlU3dpcGUiLCJkaXJlY3Rpb24iLCJwb3N0QWNjZXB0QWxlcnQiLCJpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIiwiYWN0aXZhdGVBcHAiLCJpc0NlcnRGb3VuZCIsInN3aXBlTnVtIiwibW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIiwib3B0cyIsImNvbnRlbnQiLCJpc1Jvb3QiLCJfIiwiaXNFbXB0eSIsImlzU2ltdWxhdG9yIiwibWV0aG9kTmFtZSIsImRldmljZSIsInNpbWN0bCIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsInJhdyIsImUiLCJsb2ciLCJkZWJ1ZyIsImluZm8iLCJjbGllbnQiLCJQeWlkZXZpY2UiLCJ1ZGlkIiwiYXNzZXJ0RXhpc3RzIiwiaW5zdGFsbFByb2ZpbGUiLCJwYXlsb2FkIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ0bXBQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJjb25maWdOYW1lIiwiY29uZmlnUGF0aCIsInJlc29sdmUiLCJ0bXBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwicmVzIiwiY29uZmlnRmlsZSIsInJlYWRGaWxlIiwiZW5kIiwiY24iLCJtb2JpbGVDb25maWciLCJwbGlzdCIsInVwZGF0ZVBsaXN0RmlsZSIsImhvc3QiLCJjZXJ0VXJsIiwibGlzdGVuIiwid2FpdEZvckNvbmRpdGlvbiIsImNoZWNrUG9ydFN0YXR1cyIsImlnbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpc1JlYWxEZXZpY2UiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJpc1dlYkNvbnRleHQiLCJzZXRVcmwiLCJvcGVuVXJsIiwiaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCIsImNvbXBhcmVWZXJzaW9ucyIsInBsYXRmb3JtVmVyc2lvbiIsImJ1bmRsZUlkIiwid2FybiIsInRvSW5NZW1vcnlCYXNlNjQiLCJjbG9zZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHBsaXN0LCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCwgcmV0cnksIHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UsIGNoZWNrUG9ydFN0YXR1cyB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCBQeWlkZXZpY2UgZnJvbSAnLi4vcHktaW9zLWRldmljZS1jbGllbnQnO1xuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9LCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBDT05GSUdfRVhURU5TSU9OID0gJ21vYmlsZWNvbmZpZyc7XG5jb25zdCBIT1NUX1BPUlRfUkFOR0UgPSBbMzgyMDAsIDM4Mjk5XTtcbmNvbnN0IFRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQgPSA1MDAwO1xuY29uc3QgU2V0dGluZ3MgPSB7XG4gIEdlbmVyYWw6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdHZW5lcmFsJyxcbiAgfSxcbiAgUHJvZmlsZToge1xuICAgIHR5cGU6ICctaW9zIHByZWRpY2F0ZSBzdHJpbmcnLFxuICAgIHZhbHVlOiBgbmFtZSBCRUdJTlNXSVRIICdQcm9maWxlJ2AsXG4gIH0sXG4gIEFib3V0OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWJvdXQnLFxuICB9LFxuICBDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0NlcnRpZmljYXRlIFRydXN0IFNldHRpbmdzJyxcbiAgfSxcbn07XG5jb25zdCBCdXR0b24gPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdJbnN0YWxsJyxcbiAgfSxcbiAgQWxsb3c6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdBbGxvdycsXG4gIH0sXG4gIERvbmU6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdEb25lJyxcbiAgfSxcbiAgUmV0dXJuX3RvX1NldHRpbmdzOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnUmV0dXJuIHRvIFNldHRpbmdzJyxcbiAgfSxcbn07XG5jb25zdCBBbGVydCA9IHtcbiAgSW5zdGFsbDoge1xuICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICB2YWx1ZTogJyoqL1hDVUlFbGVtZW50VHlwZUFueVtgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVBbGVydFxcJyBPUiB0eXBlID09IFxcJ1hDVUlFbGVtZW50VHlwZVNoZWV0XFwnYF0vKiovWENVSUVsZW1lbnRUeXBlQnV0dG9uW2BsYWJlbCA9PSBcXCdJbnN0YWxsXFwnYF0nLFxuICB9LFxufTtcblxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0Q29tbW9uTmFtZSAoY2VydEJ1ZmZlcikge1xuICBjb25zdCB0ZW1wQ2VydCA9IGF3YWl0IHRlbXBEaXIub3Blbih7XG4gICAgcHJlZml4OiAnY2VydCcsXG4gICAgc3VmZml4OiAnLmNlcidcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHRlbXBDZXJ0LnBhdGgsIGNlcnRCdWZmZXIpO1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYygnb3BlbnNzbCcsIFsneDUwOScsICctbm9vdXQnLCAnLXN1YmplY3QnLCAnLWluJywgdGVtcENlcnQucGF0aF0pO1xuICAgIHJldHVybiBwYXJzZUNvbW1vbk5hbWUoc3Rkb3V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgY29tbW9uIG5hbWUgdmFsdWUgZnJvbSB0aGUgY2VydGlmaWNhdGUuIElzIGl0IHZhbGlkIGFuZCBiYXNlNjQtZW5jb2RlZD8gYCArXG4gICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodGVtcENlcnQucGF0aCk7XG4gIH1cbn1cblxuY29uc3QgTElCUkVfU1NMX1BBVFRFUk4gPSAvXFwvQ049KFteXFwvXSspLzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuY29uc3QgT1BFTl9TU0xfUEFUVEVSTiA9IC8sXFxzQ05cXHM9XFxzKFteLF0rKS87XG5cbmZ1bmN0aW9uIHBhcnNlQ29tbW9uTmFtZSAoc3RyaW5nQ2VydGlmaWNhdGUpIHtcbiAgY29uc3QgcmVzdWx0ID0gW0xJQlJFX1NTTF9QQVRURVJOLCBPUEVOX1NTTF9QQVRURVJOXS5yZWR1Y2UoKGFjYywgcikgPT4ge1xuICAgIGlmIChhY2MpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gci5leGVjKHN0cmluZ0NlcnRpZmljYXRlKTtcbiAgICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gIH0sIG51bGwpO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgbm8gY29tbW9uIG5hbWUgdmFsdWUgaW4gJyR7c3RyaW5nQ2VydGlmaWNhdGV9JyBvdXRwdXRgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBBcHBsZSdzIG92ZXItdGhlLWFpciBjb25maWd1cmF0aW9uIHByb2ZpbGVcbiAqIGZvciBjZXJ0aWZpY2F0ZSBkZXBsb3ltZW50IGJhc2VkIG9uIHRoZSBnaXZlbiBQRU0gY2VydGlmaWNhdGUgY29udGVudC5cbiAqIFJlYWQgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvY29udGVudC9kb2N1bWVudGF0aW9uL05ldHdvcmtpbmdJbnRlcm5ldC9Db25jZXB0dWFsL2lQaG9uZU9UQUNvbmZpZ3VyYXRpb24vSW50cm9kdWN0aW9uL0ludHJvZHVjdGlvbi5odG1sXG4gKiBmb3IgbW9yZSBkZXRhaWxzIG9uIHN1Y2ggcHJvZmlsZXMuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGNlcnRCdWZmZXIgLSBUaGUgYWN0dWFsIGNvbnRlbnQgb2YgUEVNIGNlcnRpZmljYXRlIGVuY29kZWQgaW50byBOb2RlSlMgYnVmZmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tbW9uTmFtZSAtIENlcnRpZmljYXRlJ3MgY29tbW9uIG5hbWVcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBlbmNvZGVkIHN0cnVjdHVyZSBvZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUsIHdoaWNoIGlzIHJlYWR5IHRvIGJlIHBhc3NlZFxuICogYXMgYW4gYXJndW1lbnQgdG8gcGxpc3QgYnVpbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHRvTW9iaWxlQ29uZmlnIChjZXJ0QnVmZmVyLCBjb21tb25OYW1lKSB7XG4gIGNvbnN0IGdldFVVSUQgPSAoKSA9PiB1dGlsLnV1aWRWNCgpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IGNvbnRlbnRVdWlkID0gZ2V0VVVJRCgpO1xuICByZXR1cm4ge1xuICAgIFBheWxvYWRDb250ZW50OiBbe1xuICAgICAgUGF5bG9hZENlcnRpZmljYXRlRmlsZU5hbWU6IGAke2NvbW1vbk5hbWV9LmNlcmAsXG4gICAgICBQYXlsb2FkQ29udGVudDogY2VydEJ1ZmZlcixcbiAgICAgIFBheWxvYWREZXNjcmlwdGlvbjogJ0FkZHMgYSBDQSByb290IGNlcnRpZmljYXRlJyxcbiAgICAgIFBheWxvYWREaXNwbGF5TmFtZTogY29tbW9uTmFtZSxcbiAgICAgIFBheWxvYWRJZGVudGlmaWVyOiBgY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QuJHtjb250ZW50VXVpZH1gLFxuICAgICAgUGF5bG9hZFR5cGU6ICdjb20uYXBwbGUuc2VjdXJpdHkucm9vdCcsXG4gICAgICBQYXlsb2FkVVVJRDogY29udGVudFV1aWQsXG4gICAgICBQYXlsb2FkVmVyc2lvbjogMVxuICAgIH1dLFxuICAgIFBheWxvYWREaXNwbGF5TmFtZTogY29tbW9uTmFtZSxcbiAgICBQYXlsb2FkSWRlbnRpZmllcjogYCR7b3MuaG9zdG5hbWUoKS5zcGxpdCgnLicpWzBdfS4ke2dldFVVSUQoKX1gLFxuICAgIFBheWxvYWRSZW1vdmFsRGlzYWxsb3dlZDogZmFsc2UsXG4gICAgUGF5bG9hZFR5cGU6ICdDb25maWd1cmF0aW9uJyxcbiAgICBQYXlsb2FkVVVJRDogZ2V0VVVJRCgpLFxuICAgIFBheWxvYWRWZXJzaW9uOiAxXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsaWNrRWxlbWVudCAoZHJpdmVyLCBsb2NhdG9yLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGVsZW1lbnQgPSBudWxsO1xuICBjb25zdCB7XG4gICAgdGltZW91dCA9IDUwMDAsXG4gICAgc2tpcElmSW52aXNpYmxlID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxvb2t1cERlbGF5ID0gNTAwO1xuICB0cnkge1xuICAgIGVsZW1lbnQgPSBhd2FpdCByZXRyeUludGVydmFsKHRpbWVvdXQgPCBsb29rdXBEZWxheSA/IDEgOiB0aW1lb3V0IC8gbG9va3VwRGVsYXksIGxvb2t1cERlbGF5LFxuICAgICAgKCkgPT4gZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cyhsb2NhdG9yLnR5cGUsIGxvY2F0b3IudmFsdWUsIGZhbHNlKVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChza2lwSWZJbnZpc2libGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAke0pTT04uc3RyaW5naWZ5KGxvY2F0b3IpfSB3aXRoaW4gJHt0aW1lb3V0fW1zIHRpbWVvdXRgKTtcbiAgfVxuICBhd2FpdCBkcml2ZXIubmF0aXZlQ2xpY2soZWxlbWVudCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsUHJlMTIyQ2VydGlmaWNhdGUgKGRyaXZlcikge1xuICAvLyBBY2NlcHQgU2FmYXJpIGFsZXJ0XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5BbGxvdywge1xuICAgIC8vIGNlcnRpZmljYXRlIGxvYWQgbWlnaHQgdGFrZSBzb21lIHRpbWUgb24gc2xvdyBtYWNoaW5lc1xuICAgIHRpbWVvdXQ6IDE1MDAwLFxuICB9KTtcbiAgLy8gV2FpdCB1bnRpbCBQcmVmZXJlbmNlcyBhcmUgb3BlbmVkXG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgLy8gR28gdGhyb3VnaCBQcmVmZXJlbmNlcyB3aXphcmRcbiAgaWYgKCFhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCwge1xuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gV2UgbmVlZCB0byBjbGljayBJbnN0YWxsIGJ1dHRvbiBvbiB0d28gZGlmZmVyZW50IHRhYnNcbiAgLy8gVGhlIHNlY29uZCBvbmUgY29uZmlybXMgdGhlIHByZXZpb3VzXG4gIGF3YWl0IEIuZGVsYXkoMTUwMCk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsKTtcbiAgLy8gQWNjZXB0IGFsZXJ0XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEFsZXJ0Lkluc3RhbGwpO1xuICAvLyBGaW5pc2ggYWRkaW5nIGNlcnRpZmljYXRlXG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5Eb25lKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzIChkcml2ZXIsIG5hbWUpIHtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuR2VuZXJhbCk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkFib3V0KTtcbiAgY29uc3Qgc3dpdGNoTG9jYXRvciA9IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6IGAqKi9YQ1VJRWxlbWVudFR5cGVDZWxsW1xcYGxhYmVsID09ICcke25hbWV9J1xcYF0vKiovWENVSUVsZW1lbnRUeXBlU3dpdGNoYCxcbiAgfTtcbiAgYXdhaXQgcmV0cnkoNSwgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gICAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3MsIHtcbiAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICB9KTtcblxuICAgIGF3YWl0IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoc3dpdGNoTG9jYXRvci50eXBlLCBzd2l0Y2hMb2NhdG9yLnZhbHVlLCBmYWxzZSk7XG4gIH0pO1xuICAvLyBPbmx5IGNsaWNrIHRoZSBzd2l0Y2ggaWYgaXQgaXMgc2V0IHRvIE9mZlxuICBpZiAoYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwge1xuICAgIHR5cGU6IHN3aXRjaExvY2F0b3IudHlwZSxcbiAgICB2YWx1ZTogYCR7c3dpdGNoTG9jYXRvci52YWx1ZX1bXFxgdmFsdWUgPT0gJzAnXFxgXWBcbiAgfSwge1xuICAgIHRpbWVvdXQ6IDEwMDAsXG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIGF3YWl0IGRyaXZlci5wb3N0QWNjZXB0QWxlcnQoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIChkcml2ZXIsIG5hbWUpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgZm9yIHRoZSBzZWNvbmQgYWxlcnRcbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcblxuICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIGF3YWl0IGRyaXZlci5hY3RpdmF0ZUFwcCgnY29tLmFwcGxlLlByZWZlcmVuY2VzJyk7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5Qcm9maWxlKTtcbiAgLy8gU2VsZWN0IHRoZSB0YXJnZXQgY2VydFxuICBsZXQgaXNDZXJ0Rm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgc3dpcGVOdW0gPSAwOyBzd2lwZU51bSA8IDU7ICsrc3dpcGVOdW0pIHtcbiAgICBpZiAoYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwge1xuICAgICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgICAgdmFsdWU6IGAqKi9YQ1VJRWxlbWVudFR5cGVDZWxsW1xcYGxhYmVsID09ICcke25hbWV9J1xcYF1gLFxuICAgIH0sIHtcbiAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgICB9KSkge1xuICAgICAgaXNDZXJ0Rm91bmQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXdhaXQgZHJpdmVyLm1vYmlsZVN3aXBlKHtcbiAgICAgIGVsZW1lbnQ6IGF3YWl0IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoJ2NsYXNzIG5hbWUnLCAnWENVSUVsZW1lbnRUeXBlVGFibGUnLCBmYWxzZSksXG4gICAgICBkaXJlY3Rpb246ICd1cCdcbiAgICB9KTtcbiAgfVxuICBpZiAoIWlzQ2VydEZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuYW1lfScgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBjZXJ0aWZpY2F0ZXMgbGlzdGApO1xuICB9XG5cbiAgLy8gSW5zdGFsbCBvcHRpb24gaXMgb25seSB2aXNpYmxlIGlmIHRoZSBjZXJ0IGlzIG5vdCBpbnN0YWxsZWQgeWV0XG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGF3YWl0IEIuZGVsYXkoMTUwMCk7XG4gIC8vIENvbmZpcm0gdW50cnVzdGVkIGNlcnQgaW5zdGFsbFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2VydGlmaWNhdGVJbnN0YWxsYXRpb25PcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHshc3RyaW5nfSBjb250ZW50IC0gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcHVibGljIGNlcnRpZmljYXRlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbW1vbk5hbWUgLSBDb21tb24gbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUuIElmIHRoaXMgaXMgbm90IHNldFxuICogdGhlbiB0aGUgc2NyaXB0IHdpbGwgdHJ5IHRvIHBhcnNlIGl0IGZyb20gdGhlIGdpdmVuIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBpc1Jvb3QgW3RydWVdIC0gVGhpcyBvcHRpb24gZGVmaW5lcyB3aGVyZSB0aGUgY2VydGlmaWNhdGUgc2hvdWxkIGJlXG4gKiBpbnN0YWxsZWQgdG86IGVpdGhlciBUcnVzdGVkIFJvb3QgU3RvcmUgKGB0cnVlYCwgdGhlIGRlZmF1bHQgb3B0aW9uKSBvclxuICogdGhlIEtleWNoYWluIChgZmFsc2VgKS4gT24gZW52aXJvbm1lbnRzIG90aGVyIHRoYW4gWGNvZGUgMTEuNCsgU2ltdWxhdG9yIHRoaXNcbiAqIG9wdGlvbiBpcyBpZ25vcmVkLlxuICovXG5cbi8qKlxuICogSW5zdGFsbHMgYSBjdXN0b20gY2VydGlmaWNhdGUgb250byB0aGUgZGV2aWNlLlxuICogU2luY2UgWGNvZGUgU0RLIDExLjQgQXBwbGUgaGFzIGFkZGVkIGEgZGVkaWNhdGVkIHNpbWN0bCBzdWJjb21tYW5kIHRvIHF1aWNrbHkgaGFuZGxlXG4gKiBjZXJ0aWZpY2F0ZXMgb24gU2ltdWxhdG9yIG92ZXIgQ0xJLlxuICogT24gcmVhbCBkZXZpY2VzIG9yIHNpbXVsYXRvcnMgYmVmb3JlIFhjb2RlIDExLjQgU0RLXG4gKiBBcHBsZSBwcm92aWRlcyBubyBvZmZpY2lhbCB3YXkgdG8gZG8gaXQgdmlhIHRoZSBjb21tYW5kIGxpbmUuXG4gKiBJbiBzdWNoIGNhc2UgKGFuZCBhbHNvIGFzIGEgZmFsbGJhY2sgaWYgQ0xJIHNldHVwIGZhaWxzKVxuICogdGhpcyBtZXRob2QgdHJpZXMgdG8gd3JhcCB0aGUgY2VydGlmaWNhdGUgaW50byAubW9iaWxlY29uZmlnIGZvcm1hdFxuICogYW5kIHRoZW4gZGVwbG95cyB0aGUgd3JhcHBlZCBmaWxlIHRvIHRoZSBpbnRlcm5hbCBIVFRQIHNlcnZlcixcbiAqIHNvIG9uZSBjYW4gb3BlbiBpdCB2aWEgbW9iaWxlIFNhZmFyaS5cbiAqIFRoZW4gdGhlIGFsZ29yaXRobSBnb2VzIHRocm91Z2ggdGhlIHByb2ZpbGUgaW5zdGFsbGF0aW9uIHByb2NlZHVyZSBieVxuICogY2xpY2tpbmcgdGhlIG5lY2Vzc2FyeSBidXR0b25zIHVzaW5nIFdlYkRyaXZlckFnZW50LlxuICpcbiAqIEBwYXJhbSB7Q2VydGlmaWNhdGVJbnN0YWxsYXRpb25PcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7P3N0cmluZ30gVGhlIGNvbnRlbnQgb2YgdGhlIGdlbmVyYXRlZCAubW9iaWxlY29uZmlnIGZpbGUgYXNcbiAqIGJhc2U2NC1lbmNvZGVkIHN0cmluZy4gVGhpcyBjb25maWcgbWlnaHQgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gKiBJZiB0aGUgY2VydGlmaWNhdGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNldCB2aWEgQ0xJIHRoZW4gbm90aGluZyBpcyByZXR1cm5lZC5cbiAqL1xuY29tbWFuZHMubW9iaWxlSW5zdGFsbENlcnRpZmljYXRlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNvbnRlbnQsXG4gICAgY29tbW9uTmFtZSxcbiAgICBpc1Jvb3QgPSB0cnVlLFxuICB9ID0gb3B0cztcbiAgaWYgKF8uaXNFbXB0eShjb250ZW50KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2VydGlmaWNhdGUgY29udGVudCBzaG91bGQgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBpc1Jvb3QgPyAnYWRkUm9vdENlcnRpZmljYXRlJyA6ICdhZGRDZXJ0aWZpY2F0ZSc7XG4gICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNpbWN0bFttZXRob2ROYW1lXShcbiAgICAgICAgQnVmZmVyLmZyb20oY29udGVudCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCksIHtyYXc6IHRydWV9XG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGUpO1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVGhlIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBpbnN0YWxsZWQgdmlhIENMSS4gYCArXG4gICAgICAgIGBGYWxsaW5nIGJhY2sgdG8gVUktYmFzZWQgZGVwbG95bWVudGApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUHlpZGV2aWNlKHRoaXMub3B0cy51ZGlkKTtcbiAgICBpZiAoYXdhaXQgY2xpZW50LmFzc2VydEV4aXN0cyhmYWxzZSkpIHtcbiAgICAgIGF3YWl0IGNsaWVudC5pbnN0YWxsUHJvZmlsZSh7cGF5bG9hZDogQnVmZmVyLmZyb20oY29udGVudCwgJ2Jhc2U2NCcpfSk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ3B5aWRldmljZSBpcyBub3QgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLiAnICtcbiAgICAgICAgJ0ZhbGxpbmcgYmFjayB0byB0aGUgKHNsb3cpIFVJLWJhc2VkIGluc3RhbGxhdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgY29uc3QgdG1wUG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKEhPU1RfUE9SVF9SQU5HRVswXSwgSE9TVF9QT1JUX1JBTkdFWzFdKTtcbiAgY29uc3QgY29uZmlnTmFtZSA9IGBhcHBpdW0uJHtDT05GSUdfRVhURU5TSU9OfWA7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgY29uZmlnTmFtZSk7XG4gIGNvbnN0IHRtcFNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGFzeW5jIGZ1bmN0aW9uIChfLCByZXMpIHtcbiAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgZnMucmVhZEZpbGUoY29uZmlnUGF0aCk7XG4gICAgcmVzLmVuZChjb25maWdGaWxlKTtcbiAgfSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2VydEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKTtcbiAgICBjb25zdCBjbiA9IGNvbW1vbk5hbWUgfHwgYXdhaXQgZXh0cmFjdENvbW1vbk5hbWUoY2VydEJ1ZmZlcik7XG4gICAgY29uc3QgbW9iaWxlQ29uZmlnID0gdG9Nb2JpbGVDb25maWcoY2VydEJ1ZmZlciwgY24pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwbGlzdC51cGRhdGVQbGlzdEZpbGUoY29uZmlnUGF0aCwgbW9iaWxlQ29uZmlnLCBmYWxzZSwgZmFsc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWcgYXMgJyR7Y29uZmlnUGF0aH0nLiBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGhvc3QgPSBvcy5ob3N0bmFtZSgpO1xuICAgICAgY29uc3QgY2VydFVybCA9IGBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9LyR7Y29uZmlnTmFtZX1gO1xuICAgICAgYXdhaXQgdG1wU2VydmVyLmxpc3Rlbih0bXBQb3J0KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyh0bXBQb3J0LCBob3N0KSkgPT09ICdvcGVuJztcbiAgICAgICAgICB9IGNhdGNoIChpZ24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICB3YWl0TXM6IFRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgICAgaW50ZXJ2YWxNczogMzAwLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSB0ZW1wb3Jhcnkgd2ViIHNlcnZlciBpcyBydW5uaW5nIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH1gKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgY2Fubm90IGJlIHN0YXJ0ZWQgYXQgaHR0cDovLyR7aG9zdH06JHt0bXBQb3J0fS5gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy91cmwnLCAnUE9TVCcsIHt1cmw6IGNlcnRVcmx9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICAgICAgICAgIC8vIFRoZSBjb21tYW5kIGFib3ZlIGRvZXMgbm90IGFsd2F5cyB3b3JrIG9uIHJlYWwgZGV2aWNlc1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRVcmwoY2VydFVybCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3B0cy5kZXZpY2Uub3BlblVybChjZXJ0VXJsKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSBmYWxzZTtcbiAgICAgIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPj0nLCAnMTIuMicpKSB7XG4gICAgICAgIGlmIChhd2FpdCBpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlKHRoaXMsIGNuKSkge1xuICAgICAgICAgIGF3YWl0IGNsaWNrRWxlbWVudCh0aGlzLCBTZXR0aW5ncy5Qcm9maWxlKTtcbiAgICAgICAgICBhd2FpdCB0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyh0aGlzLCBjbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhd2FpdCBpbnN0YWxsUHJlMTIyQ2VydGlmaWNhdGUodGhpcykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgQnV0dG9uLlJldHVybl90b19TZXR0aW5ncyk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBJdCBsb29rcyBsaWtlIHRoZSAnJHtjbn0nIGNlcnRpZmljYXRlIGhhcyBiZWVuIGFscmVhZHkgYWRkZWQgdG8gdGhlIENBIHJvb3RgKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRoaXMub3B0cy5idW5kbGVJZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVBcHAodGhpcy5vcHRzLmJ1bmRsZUlkKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYENhbm5vdCByZXN0b3JlIHRoZSBhcHBsaWNhdGlvbiAnJHt0aGlzLm9wdHMuYnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQoY29uZmlnUGF0aCkpLnRvU3RyaW5nKCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgdG1wU2VydmVyLmNsb3NlKCk7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBwYXJzZUNvbW1vbk5hbWUgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUFBLElBQXFCQyxRQUFRLEdBQUcsRUFBaEM7O0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUcsY0FB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
415
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiQ09ORklHX0VYVEVOU0lPTiIsIkhPU1RfUE9SVF9SQU5HRSIsIlRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQiLCJTZXR0aW5ncyIsIkdlbmVyYWwiLCJ0eXBlIiwidmFsdWUiLCJQcm9maWxlIiwiQWJvdXQiLCJDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5ncyIsIkJ1dHRvbiIsIkluc3RhbGwiLCJBbGxvdyIsIkRvbmUiLCJSZXR1cm5fdG9fU2V0dGluZ3MiLCJBbGVydCIsImV4dHJhY3RDb21tb25OYW1lIiwiY2VydEJ1ZmZlciIsInRlbXBDZXJ0IiwidGVtcERpciIsIm9wZW4iLCJwcmVmaXgiLCJzdWZmaXgiLCJmcyIsIndyaXRlRmlsZSIsInBhdGgiLCJzdGRvdXQiLCJleGVjIiwicGFyc2VDb21tb25OYW1lIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwicmltcmFmIiwiTElCUkVfU1NMX1BBVFRFUk4iLCJPUEVOX1NTTF9QQVRURVJOIiwic3RyaW5nQ2VydGlmaWNhdGUiLCJyZXN1bHQiLCJyZWR1Y2UiLCJhY2MiLCJyIiwibWF0Y2giLCJ0b01vYmlsZUNvbmZpZyIsImNvbW1vbk5hbWUiLCJnZXRVVUlEIiwidXRpbCIsInV1aWRWNCIsInRvVXBwZXJDYXNlIiwiY29udGVudFV1aWQiLCJQYXlsb2FkQ29udGVudCIsIlBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lIiwiUGF5bG9hZERlc2NyaXB0aW9uIiwiUGF5bG9hZERpc3BsYXlOYW1lIiwiUGF5bG9hZElkZW50aWZpZXIiLCJQYXlsb2FkVHlwZSIsIlBheWxvYWRVVUlEIiwiUGF5bG9hZFZlcnNpb24iLCJvcyIsImhvc3RuYW1lIiwic3BsaXQiLCJQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQiLCJjbGlja0VsZW1lbnQiLCJkcml2ZXIiLCJsb2NhdG9yIiwib3B0aW9ucyIsImVsZW1lbnQiLCJ0aW1lb3V0Iiwic2tpcElmSW52aXNpYmxlIiwibG9va3VwRGVsYXkiLCJyZXRyeUludGVydmFsIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hdGl2ZUNsaWNrIiwiaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIiwiQiIsImRlbGF5IiwidHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXMiLCJuYW1lIiwic3dpdGNoTG9jYXRvciIsInJldHJ5IiwibW9iaWxlU3dpcGUiLCJkaXJlY3Rpb24iLCJwb3N0QWNjZXB0QWxlcnQiLCJpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIiwiYWN0aXZhdGVBcHAiLCJpc0NlcnRGb3VuZCIsInN3aXBlTnVtIiwibW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIiwib3B0cyIsImNvbnRlbnQiLCJpc1Jvb3QiLCJfIiwiaXNFbXB0eSIsImlzU2ltdWxhdG9yIiwibWV0aG9kTmFtZSIsImRldmljZSIsInNpbWN0bCIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsInJhdyIsImUiLCJsb2ciLCJkZWJ1ZyIsImluZm8iLCJjbGllbnQiLCJQeWlkZXZpY2UiLCJ1ZGlkIiwiYXNzZXJ0RXhpc3RzIiwiaW5zdGFsbFByb2ZpbGUiLCJwYXlsb2FkIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ0bXBQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJjb25maWdOYW1lIiwiY29uZmlnUGF0aCIsInJlc29sdmUiLCJ0bXBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwicmVzIiwiY29uZmlnRmlsZSIsInJlYWRGaWxlIiwiZW5kIiwiY24iLCJtb2JpbGVDb25maWciLCJwbGlzdCIsInVwZGF0ZVBsaXN0RmlsZSIsImhvc3QiLCJjZXJ0VXJsIiwibGlzdGVuIiwid2FpdEZvckNvbmRpdGlvbiIsImNoZWNrUG9ydFN0YXR1cyIsImlnbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpc1JlYWxEZXZpY2UiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJpc1dlYkNvbnRleHQiLCJzZXRVcmwiLCJvcGVuVXJsIiwiaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCIsImNvbXBhcmVWZXJzaW9ucyIsInBsYXRmb3JtVmVyc2lvbiIsImJ1bmRsZUlkIiwid2FybiIsInRvSW5NZW1vcnlCYXNlNjQiLCJjbG9zZSIsIm1vYmlsZUxpc3RDZXJ0aWZpY2F0ZXMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwibGlzdFByb2ZpbGVzIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBmcywgcGxpc3QsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsLCByZXRyeSwgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSwgY2hlY2tQb3J0U3RhdHVzIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IFB5aWRldmljZSBmcm9tICcuLi9weS1pb3MtZGV2aWNlLWNsaWVudCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgQ09ORklHX0VYVEVOU0lPTiA9ICdtb2JpbGVjb25maWcnO1xuY29uc3QgSE9TVF9QT1JUX1JBTkdFID0gWzM4MjAwLCAzODI5OV07XG5jb25zdCBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VUID0gNTAwMDtcbmNvbnN0IFNldHRpbmdzID0ge1xuICBHZW5lcmFsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnR2VuZXJhbCcsXG4gIH0sXG4gIFByb2ZpbGU6IHtcbiAgICB0eXBlOiAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJyxcbiAgICB2YWx1ZTogYG5hbWUgQkVHSU5TV0lUSCAnUHJvZmlsZSdgLFxuICB9LFxuICBBYm91dDoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0Fib3V0JyxcbiAgfSxcbiAgQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3M6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdDZXJ0aWZpY2F0ZSBUcnVzdCBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQnV0dG9uID0ge1xuICBJbnN0YWxsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnSW5zdGFsbCcsXG4gIH0sXG4gIEFsbG93OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWxsb3cnLFxuICB9LFxuICBEb25lOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnRG9uZScsXG4gIH0sXG4gIFJldHVybl90b19TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ1JldHVybiB0byBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQWxlcnQgPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6ICcqKi9YQ1VJRWxlbWVudFR5cGVBbnlbYHR5cGUgPT0gXFwnWENVSUVsZW1lbnRUeXBlQWxlcnRcXCcgT1IgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVTaGVldFxcJ2BdLyoqL1hDVUlFbGVtZW50VHlwZUJ1dHRvbltgbGFiZWwgPT0gXFwnSW5zdGFsbFxcJ2BdJyxcbiAgfSxcbn07XG5cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdENvbW1vbk5hbWUgKGNlcnRCdWZmZXIpIHtcbiAgY29uc3QgdGVtcENlcnQgPSBhd2FpdCB0ZW1wRGlyLm9wZW4oe1xuICAgIHByZWZpeDogJ2NlcnQnLFxuICAgIHN1ZmZpeDogJy5jZXInXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wQ2VydC5wYXRoLCBjZXJ0QnVmZmVyKTtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJ29wZW5zc2wnLCBbJ3g1MDknLCAnLW5vb3V0JywgJy1zdWJqZWN0JywgJy1pbicsIHRlbXBDZXJ0LnBhdGhdKTtcbiAgICByZXR1cm4gcGFyc2VDb21tb25OYW1lKHN0ZG91dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIGNvbW1vbiBuYW1lIHZhbHVlIGZyb20gdGhlIGNlcnRpZmljYXRlLiBJcyBpdCB2YWxpZCBhbmQgYmFzZTY0LWVuY29kZWQ/IGAgK1xuICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRlbXBDZXJ0LnBhdGgpO1xuICB9XG59XG5cbmNvbnN0IExJQlJFX1NTTF9QQVRURVJOID0gL1xcL0NOPShbXlxcL10rKS87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbmNvbnN0IE9QRU5fU1NMX1BBVFRFUk4gPSAvLFxcc0NOXFxzPVxccyhbXixdKykvO1xuXG5mdW5jdGlvbiBwYXJzZUNvbW1vbk5hbWUgKHN0cmluZ0NlcnRpZmljYXRlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtMSUJSRV9TU0xfUEFUVEVSTiwgT1BFTl9TU0xfUEFUVEVSTl0ucmVkdWNlKChhY2MsIHIpID0+IHtcbiAgICBpZiAoYWNjKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IHIuZXhlYyhzdHJpbmdDZXJ0aWZpY2F0ZSk7XG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xuICB9LCBudWxsKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIGNvbW1vbiBuYW1lIHZhbHVlIGluICcke3N0cmluZ0NlcnRpZmljYXRlfScgb3V0cHV0YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgQXBwbGUncyBvdmVyLXRoZS1haXIgY29uZmlndXJhdGlvbiBwcm9maWxlXG4gKiBmb3IgY2VydGlmaWNhdGUgZGVwbG95bWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gUEVNIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBSZWFkIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2NvbnRlbnQvZG9jdW1lbnRhdGlvbi9OZXR3b3JraW5nSW50ZXJuZXQvQ29uY2VwdHVhbC9pUGhvbmVPVEFDb25maWd1cmF0aW9uL0ludHJvZHVjdGlvbi9JbnRyb2R1Y3Rpb24uaHRtbFxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBzdWNoIHByb2ZpbGVzLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBjZXJ0QnVmZmVyIC0gVGhlIGFjdHVhbCBjb250ZW50IG9mIFBFTSBjZXJ0aWZpY2F0ZSBlbmNvZGVkIGludG8gTm9kZUpTIGJ1ZmZlclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1vbk5hbWUgLSBDZXJ0aWZpY2F0ZSdzIGNvbW1vbiBuYW1lXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZW5jb2RlZCBzdHJ1Y3R1cmUgb2YgdGhlIGdpdmVuIGNlcnRpZmljYXRlLCB3aGljaCBpcyByZWFkeSB0byBiZSBwYXNzZWRcbiAqIGFzIGFuIGFyZ3VtZW50IHRvIHBsaXN0IGJ1aWxkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUgY2Fubm90IGJlIHBhcnNlZFxuICovXG5mdW5jdGlvbiB0b01vYmlsZUNvbmZpZyAoY2VydEJ1ZmZlciwgY29tbW9uTmFtZSkge1xuICBjb25zdCBnZXRVVUlEID0gKCkgPT4gdXRpbC51dWlkVjQoKS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCBjb250ZW50VXVpZCA9IGdldFVVSUQoKTtcbiAgcmV0dXJuIHtcbiAgICBQYXlsb2FkQ29udGVudDogW3tcbiAgICAgIFBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lOiBgJHtjb21tb25OYW1lfS5jZXJgLFxuICAgICAgUGF5bG9hZENvbnRlbnQ6IGNlcnRCdWZmZXIsXG4gICAgICBQYXlsb2FkRGVzY3JpcHRpb246ICdBZGRzIGEgQ0Egcm9vdCBjZXJ0aWZpY2F0ZScsXG4gICAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgICBQYXlsb2FkSWRlbnRpZmllcjogYGNvbS5hcHBsZS5zZWN1cml0eS5yb290LiR7Y29udGVudFV1aWR9YCxcbiAgICAgIFBheWxvYWRUeXBlOiAnY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QnLFxuICAgICAgUGF5bG9hZFVVSUQ6IGNvbnRlbnRVdWlkLFxuICAgICAgUGF5bG9hZFZlcnNpb246IDFcbiAgICB9XSxcbiAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgUGF5bG9hZElkZW50aWZpZXI6IGAke29zLmhvc3RuYW1lKCkuc3BsaXQoJy4nKVswXX0uJHtnZXRVVUlEKCl9YCxcbiAgICBQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQ6IGZhbHNlLFxuICAgIFBheWxvYWRUeXBlOiAnQ29uZmlndXJhdGlvbicsXG4gICAgUGF5bG9hZFVVSUQ6IGdldFVVSUQoKSxcbiAgICBQYXlsb2FkVmVyc2lvbjogMVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0VsZW1lbnQgKGRyaXZlciwgbG9jYXRvciwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBlbGVtZW50ID0gbnVsbDtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQgPSA1MDAwLFxuICAgIHNraXBJZkludmlzaWJsZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsb29rdXBEZWxheSA9IDUwMDtcbiAgdHJ5IHtcbiAgICBlbGVtZW50ID0gYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IDwgbG9va3VwRGVsYXkgPyAxIDogdGltZW91dCAvIGxvb2t1cERlbGF5LCBsb29rdXBEZWxheSxcbiAgICAgICgpID0+IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMobG9jYXRvci50eXBlLCBsb2NhdG9yLnZhbHVlLCBmYWxzZSlcbiAgICApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc2tpcElmSW52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgJHtKU09OLnN0cmluZ2lmeShsb2NhdG9yKX0gd2l0aGluICR7dGltZW91dH1tcyB0aW1lb3V0YCk7XG4gIH1cbiAgYXdhaXQgZHJpdmVyLm5hdGl2ZUNsaWNrKGVsZW1lbnQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIChkcml2ZXIpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgdW50aWwgUHJlZmVyZW5jZXMgYXJlIG9wZW5lZFxuICBhd2FpdCBCLmRlbGF5KDIwMDApO1xuXG4gIC8vIEdvIHRocm91Z2ggUHJlZmVyZW5jZXMgd2l6YXJkXG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFdlIG5lZWQgdG8gY2xpY2sgSW5zdGFsbCBidXR0b24gb24gdHdvIGRpZmZlcmVudCB0YWJzXG4gIC8vIFRoZSBzZWNvbmQgb25lIGNvbmZpcm1zIHRoZSBwcmV2aW91c1xuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyAoZHJpdmVyLCBuYW1lKSB7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5BYm91dCk7XG4gIGNvbnN0IHN3aXRjaExvY2F0b3IgPSB7XG4gICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdLyoqL1hDVUlFbGVtZW50VHlwZVN3aXRjaGAsXG4gIH07XG4gIGF3YWl0IHJldHJ5KDUsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkcml2ZXIubW9iaWxlU3dpcGUoe1xuICAgICAgZWxlbWVudDogYXdhaXQgZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cygnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUYWJsZScsIGZhbHNlKSxcbiAgICAgIGRpcmVjdGlvbjogJ3VwJ1xuICAgIH0pO1xuICAgIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkNlcnRpZmljYXRlX1RydXN0X1NldHRpbmdzLCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKHN3aXRjaExvY2F0b3IudHlwZSwgc3dpdGNoTG9jYXRvci52YWx1ZSwgZmFsc2UpO1xuICB9KTtcbiAgLy8gT25seSBjbGljayB0aGUgc3dpdGNoIGlmIGl0IGlzIHNldCB0byBPZmZcbiAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICB0eXBlOiBzd2l0Y2hMb2NhdG9yLnR5cGUsXG4gICAgdmFsdWU6IGAke3N3aXRjaExvY2F0b3IudmFsdWV9W1xcYHZhbHVlID09ICcwJ1xcYF1gXG4gIH0sIHtcbiAgICB0aW1lb3V0OiAxMDAwLFxuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSAoZHJpdmVyLCBuYW1lKSB7XG4gIC8vIEFjY2VwdCBTYWZhcmkgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkFsbG93LCB7XG4gICAgLy8gY2VydGlmaWNhdGUgbG9hZCBtaWdodCB0YWtlIHNvbWUgdGltZSBvbiBzbG93IG1hY2hpbmVzXG4gICAgdGltZW91dDogMTUwMDAsXG4gIH0pO1xuICAvLyBXYWl0IGZvciB0aGUgc2Vjb25kIGFsZXJ0XG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgYXdhaXQgZHJpdmVyLnBvc3RBY2NlcHRBbGVydCgpO1xuICBhd2FpdCBkcml2ZXIuYWN0aXZhdGVBcHAoJ2NvbS5hcHBsZS5QcmVmZXJlbmNlcycpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5HZW5lcmFsKTtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuUHJvZmlsZSk7XG4gIC8vIFNlbGVjdCB0aGUgdGFyZ2V0IGNlcnRcbiAgbGV0IGlzQ2VydEZvdW5kID0gZmFsc2U7XG4gIGZvciAobGV0IHN3aXBlTnVtID0gMDsgc3dpcGVOdW0gPCA1OyArK3N3aXBlTnVtKSB7XG4gICAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdYCxcbiAgICB9LCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gICAgfSkpIHtcbiAgICAgIGlzQ2VydEZvdW5kID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gIH1cbiAgaWYgKCFpc0NlcnRGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgY2VydGlmaWNhdGVzIGxpc3RgKTtcbiAgfVxuXG4gIC8vIEluc3RhbGwgb3B0aW9uIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGUgY2VydCBpcyBub3QgaW5zdGFsbGVkIHlldFxuICBpZiAoIWF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsLCB7XG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICAvLyBDb25maXJtIHVudHJ1c3RlZCBjZXJ0IGluc3RhbGxcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwpO1xuICAvLyBBY2NlcHQgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQWxlcnQuSW5zdGFsbCk7XG4gIC8vIEZpbmlzaCBhZGRpbmcgY2VydGlmaWNhdGVcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkRvbmUpO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gY29udGVudCAtIEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHB1YmxpYyBjZXJ0aWZpY2F0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tb25OYW1lIC0gQ29tbW9uIG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlLiBJZiB0aGlzIGlzIG5vdCBzZXRcbiAqIHRoZW4gdGhlIHNjcmlwdCB3aWxsIHRyeSB0byBwYXJzZSBpdCBmcm9tIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjb250ZW50LlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gaXNSb290IFt0cnVlXSAtIFRoaXMgb3B0aW9uIGRlZmluZXMgd2hlcmUgdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZVxuICogaW5zdGFsbGVkIHRvOiBlaXRoZXIgVHJ1c3RlZCBSb290IFN0b3JlIChgdHJ1ZWAsIHRoZSBkZWZhdWx0IG9wdGlvbikgb3JcbiAqIHRoZSBLZXljaGFpbiAoYGZhbHNlYCkuIE9uIGVudmlyb25tZW50cyBvdGhlciB0aGFuIFhjb2RlIDExLjQrIFNpbXVsYXRvciB0aGlzXG4gKiBvcHRpb24gaXMgaWdub3JlZC5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIGEgY3VzdG9tIGNlcnRpZmljYXRlIG9udG8gdGhlIGRldmljZS5cbiAqIFNpbmNlIFhjb2RlIFNESyAxMS40IEFwcGxlIGhhcyBhZGRlZCBhIGRlZGljYXRlZCBzaW1jdGwgc3ViY29tbWFuZCB0byBxdWlja2x5IGhhbmRsZVxuICogY2VydGlmaWNhdGVzIG9uIFNpbXVsYXRvciBvdmVyIENMSS5cbiAqIE9uIHJlYWwgZGV2aWNlcyBvciBzaW11bGF0b3JzIGJlZm9yZSBYY29kZSAxMS40IFNES1xuICogQXBwbGUgcHJvdmlkZXMgbm8gb2ZmaWNpYWwgd2F5IHRvIGRvIGl0IHZpYSB0aGUgY29tbWFuZCBsaW5lLlxuICogSW4gc3VjaCBjYXNlIChhbmQgYWxzbyBhcyBhIGZhbGxiYWNrIGlmIENMSSBzZXR1cCBmYWlscylcbiAqIHRoaXMgbWV0aG9kIHRyaWVzIHRvIHdyYXAgdGhlIGNlcnRpZmljYXRlIGludG8gLm1vYmlsZWNvbmZpZyBmb3JtYXRcbiAqIGFuZCB0aGVuIGRlcGxveXMgdGhlIHdyYXBwZWQgZmlsZSB0byB0aGUgaW50ZXJuYWwgSFRUUCBzZXJ2ZXIsXG4gKiBzbyBvbmUgY2FuIG9wZW4gaXQgdmlhIG1vYmlsZSBTYWZhcmkuXG4gKiBUaGVuIHRoZSBhbGdvcml0aG0gZ29lcyB0aHJvdWdoIHRoZSBwcm9maWxlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUgYnlcbiAqIGNsaWNraW5nIHRoZSBuZWNlc3NhcnkgYnV0dG9ucyB1c2luZyBXZWJEcml2ZXJBZ2VudC5cbiAqXG4gKiBAcGFyYW0ge0NlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMgez9zdHJpbmd9IFRoZSBjb250ZW50IG9mIHRoZSBnZW5lcmF0ZWQgLm1vYmlsZWNvbmZpZyBmaWxlIGFzXG4gKiBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIFRoaXMgY29uZmlnIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICogSWYgdGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdmlhIENMSSB0aGVuIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250ZW50LFxuICAgIGNvbW1vbk5hbWUsXG4gICAgaXNSb290ID0gdHJ1ZSxcbiAgfSA9IG9wdHM7XG4gIGlmIChfLmlzRW1wdHkoY29udGVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NlcnRpZmljYXRlIGNvbnRlbnQgc2hvdWxkIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gaXNSb290ID8gJ2FkZFJvb3RDZXJ0aWZpY2F0ZScgOiAnYWRkQ2VydGlmaWNhdGUnO1xuICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zaW1jdGxbbWV0aG9kTmFtZV0oXG4gICAgICAgIEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKS50b1N0cmluZygpLCB7cmF3OiB0cnVlfVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhlKTtcbiAgICAgIHRoaXMubG9nLmluZm8oYFRoZSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgaW5zdGFsbGVkIHZpYSBDTEkuIGAgK1xuICAgICAgICBgRmFsbGluZyBiYWNrIHRvIFVJLWJhc2VkIGRlcGxveW1lbnRgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFB5aWRldmljZSh0aGlzLm9wdHMudWRpZCk7XG4gICAgaWYgKGF3YWl0IGNsaWVudC5hc3NlcnRFeGlzdHMoZmFsc2UpKSB7XG4gICAgICBhd2FpdCBjbGllbnQuaW5zdGFsbFByb2ZpbGUoe3BheWxvYWQ6IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdweWlkZXZpY2UgaXMgbm90IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gJyArXG4gICAgICAgICdGYWxsaW5nIGJhY2sgdG8gdGhlIChzbG93KSBVSS1iYXNlZCBpbnN0YWxsYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIGNvbnN0IHRtcFBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShIT1NUX1BPUlRfUkFOR0VbMF0sIEhPU1RfUE9SVF9SQU5HRVsxXSk7XG4gIGNvbnN0IGNvbmZpZ05hbWUgPSBgYXBwaXVtLiR7Q09ORklHX0VYVEVOU0lPTn1gO1xuICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsIGNvbmZpZ05hbWUpO1xuICBjb25zdCB0bXBTZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhc3luYyBmdW5jdGlvbiAoXywgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGNvbmZpZ1BhdGgpO1xuICAgIHJlcy5lbmQoY29uZmlnRmlsZSk7XG4gIH0pO1xuICB0cnkge1xuICAgIGNvbnN0IGNlcnRCdWZmZXIgPSBCdWZmZXIuZnJvbShjb250ZW50LCAnYmFzZTY0Jyk7XG4gICAgY29uc3QgY24gPSBjb21tb25OYW1lIHx8IGF3YWl0IGV4dHJhY3RDb21tb25OYW1lKGNlcnRCdWZmZXIpO1xuICAgIGNvbnN0IG1vYmlsZUNvbmZpZyA9IHRvTW9iaWxlQ29uZmlnKGNlcnRCdWZmZXIsIGNuKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcGxpc3QudXBkYXRlUGxpc3RGaWxlKGNvbmZpZ1BhdGgsIG1vYmlsZUNvbmZpZywgZmFsc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGFzICcke2NvbmZpZ1BhdGh9Jy4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBob3N0ID0gb3MuaG9zdG5hbWUoKTtcbiAgICAgIGNvbnN0IGNlcnRVcmwgPSBgaHR0cDovLyR7aG9zdH06JHt0bXBQb3J0fS8ke2NvbmZpZ05hbWV9YDtcbiAgICAgIGF3YWl0IHRtcFNlcnZlci5saXN0ZW4odG1wUG9ydCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBjaGVja1BvcnRTdGF0dXModG1wUG9ydCwgaG9zdCkpID09PSAnb3Blbic7XG4gICAgICAgICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgd2FpdE1zOiBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VULFxuICAgICAgICAgIGludGVydmFsTXM6IDMwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgaXMgcnVubmluZyBhdCBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9YCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRlbXBvcmFyeSB3ZWIgc2VydmVyIGNhbm5vdCBiZSBzdGFydGVkIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH0uYCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvdXJsJywgJ1BPU1QnLCB7dXJsOiBjZXJ0VXJsfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgY29tbWFuZCBhYm92ZSBkb2VzIG5vdCBhbHdheXMgd29yayBvbiByZWFsIGRldmljZXNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXJsKGNlcnRVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLm9wZW5VcmwoY2VydFVybCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gZmFsc2U7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSh0aGlzLCBjbikpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgU2V0dGluZ3MuUHJvZmlsZSk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlKHRoaXMpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tFbGVtZW50KHRoaXMsIEJ1dHRvbi5SZXR1cm5fdG9fU2V0dGluZ3MpO1xuICAgICAgICAgIGF3YWl0IHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzKHRoaXMsIGNuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ2VydEFscmVhZHlJbnN0YWxsZWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgSXQgbG9va3MgbGlrZSB0aGUgJyR7Y259JyBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBhbHJlYWR5IGFkZGVkIHRvIHRoZSBDQSByb290YCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzLm9wdHMuYnVuZGxlSWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGl2YXRlQXBwKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgcmVzdG9yZSB0aGUgYXBwbGljYXRpb24gJyR7dGhpcy5vcHRzLmJ1bmRsZUlkfScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KGNvbmZpZ1BhdGgpKS50b1N0cmluZygpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHRtcFNlcnZlci5jbG9zZSgpO1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgfVxufTtcblxuLyoqXG4gKiBMaXN0cyBpbnN0YWxsZWQgY2VydGlmaWNhdGVzIGZvciByZWFsIGRldmljZXMgb25seVxuICogaWYgW3B5LWlvcy1kZXZpY2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9ZdWVDaGVuLUMvcHktaW9zLWRldmljZSkgdG9vbFxuICogaXMgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIgbWFjaGluZS5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIG1hcCBvZiBjZXJ0aWZpY2F0ZXMgaW5zdGFsbGVkIG9uIHRoZSByZWFsIGRldmljZVxuICogQHRocm93cyB7RXJyb3J9IElmIGF0dGVtcHRpbmcgdG8gbGlzdCBjZXJ0aWZpY2F0ZXMgZm9yIHNpbXVsYXRlZCBkZXZpY2Ugb3IgaWYgcHktaW9zLWRldmljZVxuICogaXMgbm90IGluc3RhbGxlZFxuICovXG5jb21tYW5kcy5tb2JpbGVMaXN0Q2VydGlmaWNhdGVzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlTGlzdENlcnRpZmljYXRlcyAoKSB7XG4gIGlmICghdGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcignVGhpcyBleHRlbnNpb24gaXMgb25seSBzdXBwb3J0ZWQgb24gcmVhbCBkZXZpY2VzJyk7XG4gIH1cbiAgY29uc3QgY2xpZW50ID0gbmV3IFB5aWRldmljZSh0aGlzLm9wdHMudWRpZCk7XG4gIGlmIChhd2FpdCBjbGllbnQuYXNzZXJ0RXhpc3RzKGZhbHNlKSkge1xuICAgIHJldHVybiBhd2FpdCBjbGllbnQubGlzdFByb2ZpbGVzKCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdweWlkZXZpY2UgaXMgbm90IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgY29tbWFuZCBjYW5ub3QgYmUgZXhlY3V0ZWQuJyk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBwYXJzZUNvbW1vbk5hbWUgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUFBLElBQXFCQyxR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
@@ -94,6 +94,7 @@ extensions.executeMobile = async function executeMobile(mobileCommand, opts = {}
94
94
  startPerfRecord: 'mobileStartPerfRecord',
95
95
  stopPerfRecord: 'mobileStopPerfRecord',
96
96
  installCertificate: 'mobileInstallCertificate',
97
+ listCertificates: 'mobileListCertificates',
97
98
  startLogsBroadcast: 'mobileStartLogsBroadcast',
98
99
  stopLogsBroadcast: 'mobileStopLogsBroadcast',
99
100
  batteryInfo: 'mobileGetBatteryInfo',
@@ -143,4 +144,4 @@ var _default = extensions;
143
144
  exports.default = _default;require('source-map-support').install();
144
145
 
145
146
 
146
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWx1ZSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInV0aWwiLCJoYXNWYWx1ZSIsImFzeW5jUHJvbWlzZSIsIndhcm4iLCJyZWplY3QiLCJlcnJvckZyb21Db2RlIiwibWVzc2FnZSIsIl8iLCJpc1N0cmluZyIsImVycm9yIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiY29udmVydEVsZW1lbnRzRm9yQXRvbXMiLCJyZXN1bHQiLCJleGVjdXRlQXRvbSIsImNhY2hlV2ViRWxlbWVudHMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZXhlY3V0ZUFzeW5jIiwiYXN5bmNXYWl0TXMiLCJwcm9taXNlIiwicmVtb3RlIiwiZXhlY3V0ZUF0b21Bc3luYyIsImN1cldlYkZyYW1lcyIsIndhaXRGb3JBdG9tIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJjb21tYW5kTWFwIiwidGFwIiwic2Nyb2xsIiwic2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsInN3aXBlIiwicGluY2giLCJkb3VibGVUYXAiLCJ0d29GaW5nZXJUYXAiLCJ0YXBXaXRoTnVtYmVyT2ZUYXBzIiwidG91Y2hBbmRIb2xkIiwiZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwicm90YXRlRWxlbWVudCIsImZvcmNlUHJlc3MiLCJzY3JvbGxUb0VsZW1lbnQiLCJhbGVydCIsInNldFBhc3RlYm9hcmQiLCJnZXRQYXN0ZWJvYXJkIiwic291cmNlIiwiZ2V0Q29udGV4dHMiLCJpbnN0YWxsQXBwIiwiaXNBcHBJbnN0YWxsZWQiLCJyZW1vdmVBcHAiLCJsYXVuY2hBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJraWxsQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYmF0dGVyeUluZm8iLCJkZXZpY2VJbmZvIiwiZ2V0RGV2aWNlVGltZSIsImFjdGl2ZUFwcEluZm8iLCJkZXZpY2VTY3JlZW5JbmZvIiwicHJlc3NCdXR0b24iLCJlbnJvbGxCaW9tZXRyaWMiLCJzZW5kQmlvbWV0cmljTWF0Y2giLCJpc0Jpb21ldHJpY0Vucm9sbGVkIiwiY2xlYXJLZXljaGFpbnMiLCJnZXRQZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc2V0UGVybWlzc2lvbiIsImdldEFwcGVhcmFuY2UiLCJzZXRBcHBlYXJhbmNlIiwic2lyaUNvbW1hbmQiLCJkZWxldGVGaWxlIiwiZGVsZXRlRm9sZGVyIiwic3RhcnRBdWRpb1JlY29yZGluZyIsInN0b3BBdWRpb1JlY29yZGluZyIsInJ1blhDVGVzdCIsImluc3RhbGxYQ1Rlc3RCdW5kbGUiLCJsaXN0WENUZXN0QnVuZGxlcyIsImxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlIiwicHVzaE5vdGlmaWNhdGlvbiIsImV4cGVjdE5vdGlmaWNhdGlvbiIsInBlcmZvcm1Jb0hpZEV2ZW50IiwiY29uZmlndXJlTG9jYWxpemF0aW9uIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJzdGFydFBjYXAiLCJzdG9wUGNhcCIsImxpc3RDb25kaXRpb25JbmR1Y2VycyIsImVuYWJsZUNvbmRpdGlvbkluZHVjZXIiLCJkaXNhYmxlQ29uZGl0aW9uSW5kdWNlciIsImhhcyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIiwiam9pbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBlcnJvcnMsIGVycm9yRnJvbUNvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlXG59IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgZXh0ZW5zaW9ucyA9IHt9O1xuXG5leHRlbnNpb25zLnJlY2VpdmVBc3luY1Jlc3BvbnNlID0gYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKHN0YXR1cywgdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMubG9nLmRlYnVnKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLmFzeW5jUHJvbWlzZSkpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZSB3aGVuIHdlIHdlcmUgbm90IGV4cGVjdGluZyBvbmUhIGAgK1xuICAgICAgYFJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAvLyBNSlNPTldQXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21Db2RlKHN0YXR1cywgdmFsdWUubWVzc2FnZSkpO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHZhbHVlICYmIF8uaXNTdHJpbmcodmFsdWUuZXJyb3IpKSB7XG4gICAgLy8gVzNDXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21XM0NKc29uQ29kZSh2YWx1ZS5lcnJvciwgdmFsdWUubWVzc2FnZSwgdmFsdWUuc3RhY2t0cmFjZSkpO1xuICB9XG4gIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3NdKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZUFzeW5jID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgdGhpcy5hc3luY1dhaXRNcyA9IHRoaXMuYXN5bmNXYWl0TXMgfHwgMDtcbiAgY29uc3QgcHJvbWlzZSA9IHRoaXMucmVtb3RlLmV4ZWN1dGVBdG9tQXN5bmMoJ2V4ZWN1dGVfYXN5bmNfc2NyaXB0JywgW1xuICAgIHNjcmlwdCwgYXJncywgdGhpcy5hc3luY1dhaXRNc1xuICBdLCB0aGlzLmN1cldlYkZyYW1lcyk7XG4gIHJldHVybiB0aGlzLmNhY2hlV2ViRWxlbWVudHMoYXdhaXQgdGhpcy53YWl0Rm9yQXRvbShwcm9taXNlKSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IHtcbiAgICAvL3JlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgdGFwOiAnbW9iaWxlVGFwJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHNlbGVjdFBpY2tlcldoZWVsVmFsdWU6ICdtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OC1zd2lwZWxlZnQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc0LXN3aXBlcmlnaHQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY3LXN3aXBldXA/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY0LXN3aXBlZG93bj9sYW5ndWFnZT1vYmpjXG4gICAgc3dpcGU6ICdtb2JpbGVTd2lwZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjktcGluY2h3aXRoc2NhbGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHBpbmNoOiAnbW9iaWxlUGluY2gnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjczLWRvdWJsZXRhcD9sYW5ndWFnZT1vYmpjXG4gICAgZG91YmxlVGFwOiAnbW9iaWxlRG91YmxlVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NS10d29maW5nZXJ0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIHR3b0ZpbmdlclRhcDogJ21vYmlsZVR3b0ZpbmdlclRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzEtdGFwd2l0aG51bWJlcm9mdGFwcz9sYW5ndWFnZT1vYmpjXG4gICAgdGFwV2l0aE51bWJlck9mVGFwczogJ21vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjYzLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIHRvdWNoQW5kSG9sZDogJ21vYmlsZVRvdWNoQW5kSG9sZCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzAtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uOiAnbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NS1yb3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHJvdGF0ZUVsZW1lbnQ6ICdtb2JpbGVSb3RhdGVFbGVtZW50JyxcbiAgICBmb3JjZVByZXNzOiAnbW9iaWxlRm9yY2VQcmVzcycsXG4gICAgc2Nyb2xsVG9FbGVtZW50OiAnbW9iaWxlU2Nyb2xsVG9FbGVtZW50JyxcblxuICAgIC8vZW5kcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICBhbGVydDogJ21vYmlsZUhhbmRsZUFsZXJ0JyxcblxuICAgIHNldFBhc3RlYm9hcmQ6ICdtb2JpbGVTZXRQYXN0ZWJvYXJkJyxcbiAgICBnZXRQYXN0ZWJvYXJkOiAnbW9iaWxlR2V0UGFzdGVib2FyZCcsXG5cbiAgICBzb3VyY2U6ICdtb2JpbGVHZXRTb3VyY2UnLFxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgLy9yZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG4gICAgaW5zdGFsbEFwcDogJ21vYmlsZUluc3RhbGxBcHAnLFxuICAgIGlzQXBwSW5zdGFsbGVkOiAnbW9iaWxlSXNBcHBJbnN0YWxsZWQnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgbGF1bmNoQXBwOiAnbW9iaWxlTGF1bmNoQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIGtpbGxBcHA6ICdtb2JpbGVLaWxsQXBwJyxcbiAgICBxdWVyeUFwcFN0YXRlOiAnbW9iaWxlUXVlcnlBcHBTdGF0ZScsXG4gICAgYWN0aXZhdGVBcHA6ICdtb2JpbGVBY3RpdmF0ZUFwcCcsXG4gICAgbGlzdEFwcHM6ICdtb2JpbGVMaXN0QXBwcycsXG4gICAgLy9lbmRyZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG5cbiAgICB2aWV3cG9ydFNjcmVlbnNob3Q6ICdnZXRWaWV3cG9ydFNjcmVlbnNob3QnLFxuICAgIHZpZXdwb3J0UmVjdDogJ2dldFZpZXdwb3J0UmVjdCcsXG5cbiAgICBzdGFydFBlcmZSZWNvcmQ6ICdtb2JpbGVTdGFydFBlcmZSZWNvcmQnLFxuICAgIHN0b3BQZXJmUmVjb3JkOiAnbW9iaWxlU3RvcFBlcmZSZWNvcmQnLFxuXG4gICAgaW5zdGFsbENlcnRpZmljYXRlOiAnbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcbiAgICBkZXZpY2VJbmZvOiAnbW9iaWxlR2V0RGV2aWNlSW5mbycsXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuICAgIGFjdGl2ZUFwcEluZm86ICdtb2JpbGVHZXRBY3RpdmVBcHBJbmZvJyxcbiAgICBkZXZpY2VTY3JlZW5JbmZvOiAnZ2V0U2NyZWVuSW5mbycsXG5cbiAgICBwcmVzc0J1dHRvbjogJ21vYmlsZVByZXNzQnV0dG9uJyxcblxuICAgIGVucm9sbEJpb21ldHJpYzogJ21vYmlsZUVucm9sbEJpb21ldHJpYycsXG4gICAgc2VuZEJpb21ldHJpY01hdGNoOiAnbW9iaWxlU2VuZEJpb21ldHJpY01hdGNoJyxcbiAgICBpc0Jpb21ldHJpY0Vucm9sbGVkOiAnbW9iaWxlSXNCaW9tZXRyaWNFbnJvbGxlZCcsXG5cbiAgICBjbGVhcktleWNoYWluczogJ21vYmlsZUNsZWFyS2V5Y2hhaW5zJyxcblxuICAgIGdldFBlcm1pc3Npb246ICdtb2JpbGVHZXRQZXJtaXNzaW9uJyxcbiAgICBzZXRQZXJtaXNzaW9uOiAnbW9iaWxlU2V0UGVybWlzc2lvbnMnLFxuICAgIHJlc2V0UGVybWlzc2lvbjogJ21vYmlsZVJlc2V0UGVybWlzc2lvbicsXG5cbiAgICBnZXRBcHBlYXJhbmNlOiAnbW9iaWxlR2V0QXBwZWFyYW5jZScsXG4gICAgc2V0QXBwZWFyYW5jZTogJ21vYmlsZVNldEFwcGVhcmFuY2UnLFxuXG4gICAgc2lyaUNvbW1hbmQ6ICdtb2JpbGVTaXJpQ29tbWFuZCcsXG5cbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG4gICAgZGVsZXRlRm9sZGVyOiAnbW9iaWxlRGVsZXRlRm9sZGVyJyxcblxuICAgIHN0YXJ0QXVkaW9SZWNvcmRpbmc6ICdzdGFydEF1ZGlvUmVjb3JkaW5nJyxcbiAgICBzdG9wQXVkaW9SZWNvcmRpbmc6ICdzdG9wQXVkaW9SZWNvcmRpbmcnLFxuXG4gICAgLy8gWENUZXN0XG4gICAgcnVuWENUZXN0OiAnbW9iaWxlUnVuWENUZXN0JyxcbiAgICBpbnN0YWxsWENUZXN0QnVuZGxlOiAnbW9iaWxlSW5zdGFsbFhDVGVzdEJ1bmRsZScsXG4gICAgbGlzdFhDVGVzdEJ1bmRsZXM6ICdtb2JpbGVMaXN0WENUZXN0QnVuZGxlcycsXG4gICAgbGlzdFhDVGVzdHNJblRlc3RCdW5kbGU6ICdtb2JpbGVMaXN0WENUZXN0c0luVGVzdEJ1bmRsZScsXG5cbiAgICBwdXNoTm90aWZpY2F0aW9uOiAnbW9iaWxlUHVzaE5vdGlmaWNhdGlvbicsXG4gICAgZXhwZWN0Tm90aWZpY2F0aW9uOiAnbW9iaWxlRXhwZWN0Tm90aWZpY2F0aW9uJyxcblxuICAgIHBlcmZvcm1Jb0hpZEV2ZW50OiAnbW9iaWxlUGVyZm9ybUlvSGlkRXZlbnQnLFxuXG4gICAgY29uZmlndXJlTG9jYWxpemF0aW9uOiAnbW9iaWxlQ29uZmlndXJlTG9jYWxpemF0aW9uJyxcblxuICAgIHJlc2V0TG9jYXRpb25TZXJ2aWNlOiAnbW9iaWxlUmVzZXRMb2NhdGlvblNlcnZpY2UnLFxuXG4gICAgc3RhcnRQY2FwOiAnbW9iaWxlU3RhcnRQY2FwJyxcbiAgICBzdG9wUGNhcDogJ21vYmlsZVN0b3BQY2FwJyxcbiAgICBsaXN0Q29uZGl0aW9uSW5kdWNlcnM6ICdtb2JpbGVMaXN0Q29uZGl0aW9uSW5kdWNlcnMnLFxuICAgIGVuYWJsZUNvbmRpdGlvbkluZHVjZXI6ICdtb2JpbGVFbmFibGVDb25kaXRpb25JbmR1Y2VyJyxcbiAgICBkaXNhYmxlQ29uZGl0aW9uSW5kdWNlcjogJ21vYmlsZURpc2FibGVDb25kaXRpb25JbmR1Y2VyJyxcbiAgfTtcblxuICBpZiAoIV8uaGFzKGNvbW1hbmRNYXAsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kICcke21vYmlsZUNvbW1hbmR9Jy4gT25seSAke18ua2V5cyhjb21tYW5kTWFwKS5qb2luKCcsICcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW2NvbW1hbmRNYXBbbW9iaWxlQ29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUcsRUFBbkI7O0FBRUFBLFVBQVUsQ0FBQ0Msb0JBQVgsR0FBa0MsZUFBZUEsb0JBQWYsQ0FBcUNDLE1BQXJDLEVBQTZDQyxLQUE3QyxFQUFvRDtFQUNwRixLQUFLQyxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsNEJBQTJCQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUosS0FBZixDQUFzQixFQUFqRTs7RUFDQSxJQUFJLENBQUNLLGFBQUEsQ0FBS0MsUUFBTCxDQUFjLEtBQUtDLFlBQW5CLENBQUwsRUFBdUM7SUFDckMsS0FBS04sR0FBTCxDQUFTTyxJQUFULENBQWUsMERBQUQsR0FDWCxpQkFBZ0JMLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixLQUFmLENBQXNCLEVBRHpDO0lBRUE7RUFDRDs7RUFFRCxJQUFJSyxhQUFBLENBQUtDLFFBQUwsQ0FBY1AsTUFBZCxLQUF5QkEsTUFBTSxLQUFLLENBQXhDLEVBQTJDO0lBRXpDLE9BQU8sS0FBS1EsWUFBTCxDQUFrQkUsTUFBbEIsQ0FBeUIsSUFBQUMscUJBQUEsRUFBY1gsTUFBZCxFQUFzQkMsS0FBSyxDQUFDVyxPQUE1QixDQUF6QixDQUFQO0VBQ0Q7O0VBQ0QsSUFBSSxDQUFDTixhQUFBLENBQUtDLFFBQUwsQ0FBY1AsTUFBZCxDQUFELElBQTBCQyxLQUExQixJQUFtQ1ksZUFBQSxDQUFFQyxRQUFGLENBQVdiLEtBQUssQ0FBQ2MsS0FBakIsQ0FBdkMsRUFBZ0U7SUFFOUQsT0FBTyxLQUFLUCxZQUFMLENBQWtCRSxNQUFsQixDQUF5QixJQUFBTSw0QkFBQSxFQUFxQmYsS0FBSyxDQUFDYyxLQUEzQixFQUFrQ2QsS0FBSyxDQUFDVyxPQUF4QyxFQUFpRFgsS0FBSyxDQUFDZ0IsVUFBdkQsQ0FBekIsQ0FBUDtFQUNEOztFQUNELE9BQU8sS0FBS1QsWUFBTCxDQUFrQlUsT0FBbEIsQ0FBMEJqQixLQUExQixDQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJBSCxVQUFVLENBQUNxQixPQUFYLEdBQXFCLGVBQWVBLE9BQWYsQ0FBd0JDLE1BQXhCLEVBQWdDQyxJQUFoQyxFQUFzQztFQUN6RCxJQUFJRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSxVQUFiLENBQUosRUFBOEI7SUFDNUJGLE1BQU0sR0FBR0EsTUFBTSxDQUFDRyxPQUFQLENBQWUsVUFBZixFQUEyQixFQUEzQixFQUErQkMsSUFBL0IsRUFBVDtJQUNBLE9BQU8sTUFBTSxLQUFLQyxhQUFMLENBQW1CTCxNQUFuQixFQUEyQlAsZUFBQSxDQUFFYSxPQUFGLENBQVVMLElBQVYsSUFBa0JBLElBQUksQ0FBQyxDQUFELENBQXRCLEdBQTRCQSxJQUF2RCxDQUFiO0VBQ0QsQ0FIRCxNQUdPLElBQUksS0FBS00sWUFBTCxFQUFKLEVBQXlCO0lBQzlCTixJQUFJLEdBQUcsS0FBS08sdUJBQUwsQ0FBNkJQLElBQTdCLENBQVA7SUFDQSxNQUFNUSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxXQUFMLENBQWlCLGdCQUFqQixFQUFtQyxDQUFDVixNQUFELEVBQVNDLElBQVQsQ0FBbkMsQ0FBckI7SUFDQSxPQUFPLEtBQUtVLGdCQUFMLENBQXNCRixNQUF0QixDQUFQO0VBQ0QsQ0FKTSxNQUlBO0lBQ0wsTUFBTSxJQUFJRyxjQUFBLENBQU9DLG1CQUFYLEVBQU47RUFDRDtBQUNGLENBWEQ7O0FBYUFuQyxVQUFVLENBQUNvQyxZQUFYLEdBQTBCLGVBQWVBLFlBQWYsQ0FBNkJkLE1BQTdCLEVBQXFDQyxJQUFyQyxFQUEyQztFQUNuRSxJQUFJLENBQUMsS0FBS00sWUFBTCxFQUFMLEVBQTBCO0lBQ3hCLE1BQU0sSUFBSUssY0FBQSxDQUFPQyxtQkFBWCxFQUFOO0VBQ0Q7O0VBRURaLElBQUksR0FBRyxLQUFLTyx1QkFBTCxDQUE2QlAsSUFBN0IsQ0FBUDtFQUNBLEtBQUtjLFdBQUwsR0FBbUIsS0FBS0EsV0FBTCxJQUFvQixDQUF2QztFQUNBLE1BQU1DLE9BQU8sR0FBRyxLQUFLQyxNQUFMLENBQVlDLGdCQUFaLENBQTZCLHNCQUE3QixFQUFxRCxDQUNuRWxCLE1BRG1FLEVBQzNEQyxJQUQyRCxFQUNyRCxLQUFLYyxXQURnRCxDQUFyRCxFQUViLEtBQUtJLFlBRlEsQ0FBaEI7RUFHQSxPQUFPLEtBQUtSLGdCQUFMLENBQXNCLE1BQU0sS0FBS1MsV0FBTCxDQUFpQkosT0FBakIsQ0FBNUIsQ0FBUDtBQUNELENBWEQ7O0FBYUF0QyxVQUFVLENBQUMyQixhQUFYLEdBQTJCLGVBQWVBLGFBQWYsQ0FBOEJnQixhQUE5QixFQUE2Q0MsSUFBSSxHQUFHLEVBQXBELEVBQXdEO0VBQ2pGLE1BQU1DLFVBQVUsR0FBRztJQUVqQkMsR0FBRyxFQUFFLFdBRlk7SUFHakJDLE1BQU0sRUFBRSxjQUhTO0lBSWpCQyxzQkFBc0IsRUFBRSw4QkFKUDtJQVNqQkMsS0FBSyxFQUFFLGFBVFU7SUFXakJDLEtBQUssRUFBRSxhQVhVO0lBYWpCQyxTQUFTLEVBQUUsaUJBYk07SUFlakJDLFlBQVksRUFBRSxvQkFmRztJQWlCakJDLG1CQUFtQixFQUFFLDJCQWpCSjtJQW1CakJDLFlBQVksRUFBRSxvQkFuQkc7SUFxQmpCQyxxQkFBcUIsRUFBRSw2QkFyQk47SUF1QmpCQyxhQUFhLEVBQUUscUJBdkJFO0lBd0JqQkMsVUFBVSxFQUFFLGtCQXhCSztJQXlCakJDLGVBQWUsRUFBRSx1QkF6QkE7SUE0QmpCQyxLQUFLLEVBQUUsbUJBNUJVO0lBOEJqQkMsYUFBYSxFQUFFLHFCQTlCRTtJQStCakJDLGFBQWEsRUFBRSxxQkEvQkU7SUFpQ2pCQyxNQUFNLEVBQUUsaUJBakNTO0lBa0NqQkMsV0FBVyxFQUFFLG1CQWxDSTtJQXFDakJDLFVBQVUsRUFBRSxrQkFyQ0s7SUFzQ2pCQyxjQUFjLEVBQUUsc0JBdENDO0lBdUNqQkMsU0FBUyxFQUFFLGlCQXZDTTtJQXdDakJDLFNBQVMsRUFBRSxpQkF4Q007SUF5Q2pCQyxZQUFZLEVBQUUsb0JBekNHO0lBMENqQkMsT0FBTyxFQUFFLGVBMUNRO0lBMkNqQkMsYUFBYSxFQUFFLHFCQTNDRTtJQTRDakJDLFdBQVcsRUFBRSxtQkE1Q0k7SUE2Q2pCQyxRQUFRLEVBQUUsZ0JBN0NPO0lBZ0RqQkMsa0JBQWtCLEVBQUUsdUJBaERIO0lBaURqQkMsWUFBWSxFQUFFLGlCQWpERztJQW1EakJDLGVBQWUsRUFBRSx1QkFuREE7SUFvRGpCQyxjQUFjLEVBQUUsc0JBcERDO0lBc0RqQkMsa0JBQWtCLEVBQUUsMEJBdERIO0lBd0RqQkMsa0JBQWtCLEVBQUUsMEJBeERIO0lBeURqQkMsaUJBQWlCLEVBQUUseUJBekRGO0lBMkRqQkMsV0FBVyxFQUFFLHNCQTNESTtJQTREakJDLFVBQVUsRUFBRSxxQkE1REs7SUE2RGpCQyxhQUFhLEVBQUUscUJBN0RFO0lBOERqQkMsYUFBYSxFQUFFLHdCQTlERTtJQStEakJDLGdCQUFnQixFQUFFLGVBL0REO0lBaUVqQkMsV0FBVyxFQUFFLG1CQWpFSTtJQW1FakJDLGVBQWUsRUFBRSx1QkFuRUE7SUFvRWpCQyxrQkFBa0IsRUFBRSwwQkFwRUg7SUFxRWpCQyxtQkFBbUIsRUFBRSwyQkFyRUo7SUF1RWpCQyxjQUFjLEVBQUUsc0JBdkVDO0lBeUVqQkMsYUFBYSxFQUFFLHFCQXpFRTtJQTBFakJDLGFBQWEsRUFBRSxzQkExRUU7SUEyRWpCQyxlQUFlLEVBQUUsdUJBM0VBO0lBNkVqQkMsYUFBYSxFQUFFLHFCQTdFRTtJQThFakJDLGFBQWEsRUFBRSxxQkE5RUU7SUFnRmpCQyxXQUFXLEVBQUUsbUJBaEZJO0lBa0ZqQkMsVUFBVSxFQUFFLGtCQWxGSztJQW1GakJDLFlBQVksRUFBRSxvQkFuRkc7SUFxRmpCQyxtQkFBbUIsRUFBRSxxQkFyRko7SUFzRmpCQyxrQkFBa0IsRUFBRSxvQkF0Rkg7SUF5RmpCQyxTQUFTLEVBQUUsaUJBekZNO0lBMEZqQkMsbUJBQW1CLEVBQUUsMkJBMUZKO0lBMkZqQkMsaUJBQWlCLEVBQUUseUJBM0ZGO0lBNEZqQkMsdUJBQXVCLEVBQUUsK0JBNUZSO0lBOEZqQkMsZ0JBQWdCLEVBQUUsd0JBOUZEO0lBK0ZqQkMsa0JBQWtCLEVBQUUsMEJBL0ZIO0lBaUdqQkMsaUJBQWlCLEVBQUUseUJBakdGO0lBbUdqQkMscUJBQXFCLEVBQUUsNkJBbkdOO0lBcUdqQkMsb0JBQW9CLEVBQUUsNEJBckdMO0lBdUdqQkMsU0FBUyxFQUFFLGlCQXZHTTtJQXdHakJDLFFBQVEsRUFBRSxnQkF4R087SUF5R2pCQyxxQkFBcUIsRUFBRSw2QkF6R047SUEwR2pCQyxzQkFBc0IsRUFBRSw4QkExR1A7SUEyR2pCQyx1QkFBdUIsRUFBRTtFQTNHUixDQUFuQjs7RUE4R0EsSUFBSSxDQUFDbEcsZUFBQSxDQUFFbUcsR0FBRixDQUFNckUsVUFBTixFQUFrQkYsYUFBbEIsQ0FBTCxFQUF1QztJQUNyQyxNQUFNLElBQUlULGNBQUEsQ0FBT2lGLG1CQUFYLENBQWdDLDJCQUEwQnhFLGFBQWMsV0FBVTVCLGVBQUEsQ0FBRXFHLElBQUYsQ0FBT3ZFLFVBQVAsRUFBbUJ3RSxJQUFuQixDQUF3QixJQUF4QixDQUE4QiwwQkFBaEgsQ0FBTjtFQUNEOztFQUNELE9BQU8sTUFBTSxLQUFLeEUsVUFBVSxDQUFDRixhQUFELENBQWYsRUFBZ0NDLElBQWhDLENBQWI7QUFDRCxDQW5IRDs7ZUFxSGU1QyxVIn0=
147
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJ2YWx1ZSIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInV0aWwiLCJoYXNWYWx1ZSIsImFzeW5jUHJvbWlzZSIsIndhcm4iLCJyZWplY3QiLCJlcnJvckZyb21Db2RlIiwibWVzc2FnZSIsIl8iLCJpc1N0cmluZyIsImVycm9yIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwicmVzb2x2ZSIsImV4ZWN1dGUiLCJzY3JpcHQiLCJhcmdzIiwibWF0Y2giLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiY29udmVydEVsZW1lbnRzRm9yQXRvbXMiLCJyZXN1bHQiLCJleGVjdXRlQXRvbSIsImNhY2hlV2ViRWxlbWVudHMiLCJlcnJvcnMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiZXhlY3V0ZUFzeW5jIiwiYXN5bmNXYWl0TXMiLCJwcm9taXNlIiwicmVtb3RlIiwiZXhlY3V0ZUF0b21Bc3luYyIsImN1cldlYkZyYW1lcyIsIndhaXRGb3JBdG9tIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJjb21tYW5kTWFwIiwidGFwIiwic2Nyb2xsIiwic2VsZWN0UGlja2VyV2hlZWxWYWx1ZSIsInN3aXBlIiwicGluY2giLCJkb3VibGVUYXAiLCJ0d29GaW5nZXJUYXAiLCJ0YXBXaXRoTnVtYmVyT2ZUYXBzIiwidG91Y2hBbmRIb2xkIiwiZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwicm90YXRlRWxlbWVudCIsImZvcmNlUHJlc3MiLCJzY3JvbGxUb0VsZW1lbnQiLCJhbGVydCIsInNldFBhc3RlYm9hcmQiLCJnZXRQYXN0ZWJvYXJkIiwic291cmNlIiwiZ2V0Q29udGV4dHMiLCJpbnN0YWxsQXBwIiwiaXNBcHBJbnN0YWxsZWQiLCJyZW1vdmVBcHAiLCJsYXVuY2hBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJraWxsQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsImxpc3RDZXJ0aWZpY2F0ZXMiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImJhdHRlcnlJbmZvIiwiZGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJhY3RpdmVBcHBJbmZvIiwiZGV2aWNlU2NyZWVuSW5mbyIsInByZXNzQnV0dG9uIiwiZW5yb2xsQmlvbWV0cmljIiwic2VuZEJpb21ldHJpY01hdGNoIiwiaXNCaW9tZXRyaWNFbnJvbGxlZCIsImNsZWFyS2V5Y2hhaW5zIiwiZ2V0UGVybWlzc2lvbiIsInNldFBlcm1pc3Npb24iLCJyZXNldFBlcm1pc3Npb24iLCJnZXRBcHBlYXJhbmNlIiwic2V0QXBwZWFyYW5jZSIsInNpcmlDb21tYW5kIiwiZGVsZXRlRmlsZSIsImRlbGV0ZUZvbGRlciIsInN0YXJ0QXVkaW9SZWNvcmRpbmciLCJzdG9wQXVkaW9SZWNvcmRpbmciLCJydW5YQ1Rlc3QiLCJpbnN0YWxsWENUZXN0QnVuZGxlIiwibGlzdFhDVGVzdEJ1bmRsZXMiLCJsaXN0WENUZXN0c0luVGVzdEJ1bmRsZSIsInB1c2hOb3RpZmljYXRpb24iLCJleHBlY3ROb3RpZmljYXRpb24iLCJwZXJmb3JtSW9IaWRFdmVudCIsImNvbmZpZ3VyZUxvY2FsaXphdGlvbiIsInJlc2V0TG9jYXRpb25TZXJ2aWNlIiwic3RhcnRQY2FwIiwic3RvcFBjYXAiLCJsaXN0Q29uZGl0aW9uSW5kdWNlcnMiLCJlbmFibGVDb25kaXRpb25JbmR1Y2VyIiwiZGlzYWJsZUNvbmRpdGlvbkluZHVjZXIiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsImpvaW4iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvZXhlY3V0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBlcnJvckZyb21Db2RlLCBlcnJvckZyb21XM0NKc29uQ29kZVxufSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IGV4dGVuc2lvbnMgPSB7fTtcblxuZXh0ZW5zaW9ucy5yZWNlaXZlQXN5bmNSZXNwb25zZSA9IGFzeW5jIGZ1bmN0aW9uIHJlY2VpdmVBc3luY1Jlc3BvbnNlIChzdGF0dXMsIHZhbHVlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aGlzLmxvZy5kZWJ1ZyhgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5hc3luY1Byb21pc2UpKSB7XG4gICAgdGhpcy5sb2cud2FybihgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2Ugd2hlbiB3ZSB3ZXJlIG5vdCBleHBlY3Rpbmcgb25lISBgICtcbiAgICAgIGBSZXNwb25zZSB3YXM6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh1dGlsLmhhc1ZhbHVlKHN0YXR1cykgJiYgc3RhdHVzICE9PSAwKSB7XG4gICAgLy8gTUpTT05XUFxuICAgIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZWplY3QoZXJyb3JGcm9tQ29kZShzdGF0dXMsIHZhbHVlLm1lc3NhZ2UpKTtcbiAgfVxuICBpZiAoIXV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiB2YWx1ZSAmJiBfLmlzU3RyaW5nKHZhbHVlLmVycm9yKSkge1xuICAgIC8vIFczQ1xuICAgIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZWplY3QoZXJyb3JGcm9tVzNDSnNvbkNvZGUodmFsdWUuZXJyb3IsIHZhbHVlLm1lc3NhZ2UsIHZhbHVlLnN0YWNrdHJhY2UpKTtcbiAgfVxuICByZXR1cm4gdGhpcy5hc3luY1Byb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKHNjcmlwdC5tYXRjaCgvXm1vYmlsZTovKSkge1xuICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKC9ebW9iaWxlOi8sICcnKS50cmltKCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU1vYmlsZShzY3JpcHQsIF8uaXNBcnJheShhcmdzKSA/IGFyZ3NbMF0gOiBhcmdzKTtcbiAgfSBlbHNlIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgYXJncyA9IHRoaXMuY29udmVydEVsZW1lbnRzRm9yQXRvbXMoYXJncyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZXhlY3V0ZV9zY3JpcHQnLCBbc2NyaXB0LCBhcmdzXSk7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVXZWJFbGVtZW50cyhyZXN1bHQpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVBc3luYyA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBc3luYyAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgYXJncyA9IHRoaXMuY29udmVydEVsZW1lbnRzRm9yQXRvbXMoYXJncyk7XG4gIHRoaXMuYXN5bmNXYWl0TXMgPSB0aGlzLmFzeW5jV2FpdE1zIHx8IDA7XG4gIGNvbnN0IHByb21pc2UgPSB0aGlzLnJlbW90ZS5leGVjdXRlQXRvbUFzeW5jKCdleGVjdXRlX2FzeW5jX3NjcmlwdCcsIFtcbiAgICBzY3JpcHQsIGFyZ3MsIHRoaXMuYXN5bmNXYWl0TXNcbiAgXSwgdGhpcy5jdXJXZWJGcmFtZXMpO1xuICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKGF3YWl0IHRoaXMud2FpdEZvckF0b20ocHJvbWlzZSkpO1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlTW9iaWxlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZU1vYmlsZSAobW9iaWxlQ29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGNvbW1hbmRNYXAgPSB7XG4gICAgLy9yZWdpb24gZ2VzdHVyZXMgc3VwcG9ydFxuICAgIHRhcDogJ21vYmlsZVRhcCcsXG4gICAgc2Nyb2xsOiAnbW9iaWxlU2Nyb2xsJyxcbiAgICBzZWxlY3RQaWNrZXJXaGVlbFZhbHVlOiAnbW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2Njgtc3dpcGVsZWZ0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NC1zd2lwZXJpZ2h0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2Ny1zd2lwZXVwP2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NC1zd2lwZWRvd24/bGFuZ3VhZ2U9b2JqY1xuICAgIHN3aXBlOiAnbW9iaWxlU3dpcGUnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY5LXBpbmNod2l0aHNjYWxlP2xhbmd1YWdlPW9iamNcbiAgICBwaW5jaDogJ21vYmlsZVBpbmNoJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3My1kb3VibGV0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIGRvdWJsZVRhcDogJ21vYmlsZURvdWJsZVRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzUtdHdvZmluZ2VydGFwP2xhbmd1YWdlPW9iamNcbiAgICB0d29GaW5nZXJUYXA6ICdtb2JpbGVUd29GaW5nZXJUYXAnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcxLXRhcHdpdGhudW1iZXJvZnRhcHM/bGFuZ3VhZ2U9b2JqY1xuICAgIHRhcFdpdGhOdW1iZXJPZlRhcHM6ICdtb2JpbGVUYXBXaXRoTnVtYmVyT2ZUYXBzJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2My1wcmVzc2ZvcmR1cmF0aW9uP2xhbmd1YWdlPW9iamNcbiAgICB0b3VjaEFuZEhvbGQ6ICdtb2JpbGVUb3VjaEFuZEhvbGQnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcwLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIGRyYWdGcm9tVG9Gb3JEdXJhdGlvbjogJ21vYmlsZURyYWdGcm9tVG9Gb3JEdXJhdGlvbicsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjUtcm90YXRlP2xhbmd1YWdlPW9iamNcbiAgICByb3RhdGVFbGVtZW50OiAnbW9iaWxlUm90YXRlRWxlbWVudCcsXG4gICAgZm9yY2VQcmVzczogJ21vYmlsZUZvcmNlUHJlc3MnLFxuICAgIHNjcm9sbFRvRWxlbWVudDogJ21vYmlsZVNjcm9sbFRvRWxlbWVudCcsXG5cbiAgICAvL2VuZHJlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgYWxlcnQ6ICdtb2JpbGVIYW5kbGVBbGVydCcsXG5cbiAgICBzZXRQYXN0ZWJvYXJkOiAnbW9iaWxlU2V0UGFzdGVib2FyZCcsXG4gICAgZ2V0UGFzdGVib2FyZDogJ21vYmlsZUdldFBhc3RlYm9hcmQnLFxuXG4gICAgc291cmNlOiAnbW9iaWxlR2V0U291cmNlJyxcbiAgICBnZXRDb250ZXh0czogJ21vYmlsZUdldENvbnRleHRzJyxcblxuICAgIC8vcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuICAgIGluc3RhbGxBcHA6ICdtb2JpbGVJbnN0YWxsQXBwJyxcbiAgICBpc0FwcEluc3RhbGxlZDogJ21vYmlsZUlzQXBwSW5zdGFsbGVkJyxcbiAgICByZW1vdmVBcHA6ICdtb2JpbGVSZW1vdmVBcHAnLFxuICAgIGxhdW5jaEFwcDogJ21vYmlsZUxhdW5jaEFwcCcsXG4gICAgdGVybWluYXRlQXBwOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgICBraWxsQXBwOiAnbW9iaWxlS2lsbEFwcCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIGxpc3RBcHBzOiAnbW9iaWxlTGlzdEFwcHMnLFxuICAgIC8vZW5kcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnZ2V0Vmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdnZXRWaWV3cG9ydFJlY3QnLFxuXG4gICAgc3RhcnRQZXJmUmVjb3JkOiAnbW9iaWxlU3RhcnRQZXJmUmVjb3JkJyxcbiAgICBzdG9wUGVyZlJlY29yZDogJ21vYmlsZVN0b3BQZXJmUmVjb3JkJyxcblxuICAgIGluc3RhbGxDZXJ0aWZpY2F0ZTogJ21vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZScsXG4gICAgbGlzdENlcnRpZmljYXRlczogJ21vYmlsZUxpc3RDZXJ0aWZpY2F0ZXMnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGJhdHRlcnlJbmZvOiAnbW9iaWxlR2V0QmF0dGVyeUluZm8nLFxuICAgIGRldmljZUluZm86ICdtb2JpbGVHZXREZXZpY2VJbmZvJyxcbiAgICBnZXREZXZpY2VUaW1lOiAnbW9iaWxlR2V0RGV2aWNlVGltZScsXG4gICAgYWN0aXZlQXBwSW5mbzogJ21vYmlsZUdldEFjdGl2ZUFwcEluZm8nLFxuICAgIGRldmljZVNjcmVlbkluZm86ICdnZXRTY3JlZW5JbmZvJyxcblxuICAgIHByZXNzQnV0dG9uOiAnbW9iaWxlUHJlc3NCdXR0b24nLFxuXG4gICAgZW5yb2xsQmlvbWV0cmljOiAnbW9iaWxlRW5yb2xsQmlvbWV0cmljJyxcbiAgICBzZW5kQmlvbWV0cmljTWF0Y2g6ICdtb2JpbGVTZW5kQmlvbWV0cmljTWF0Y2gnLFxuICAgIGlzQmlvbWV0cmljRW5yb2xsZWQ6ICdtb2JpbGVJc0Jpb21ldHJpY0Vucm9sbGVkJyxcblxuICAgIGNsZWFyS2V5Y2hhaW5zOiAnbW9iaWxlQ2xlYXJLZXljaGFpbnMnLFxuXG4gICAgZ2V0UGVybWlzc2lvbjogJ21vYmlsZUdldFBlcm1pc3Npb24nLFxuICAgIHNldFBlcm1pc3Npb246ICdtb2JpbGVTZXRQZXJtaXNzaW9ucycsXG4gICAgcmVzZXRQZXJtaXNzaW9uOiAnbW9iaWxlUmVzZXRQZXJtaXNzaW9uJyxcblxuICAgIGdldEFwcGVhcmFuY2U6ICdtb2JpbGVHZXRBcHBlYXJhbmNlJyxcbiAgICBzZXRBcHBlYXJhbmNlOiAnbW9iaWxlU2V0QXBwZWFyYW5jZScsXG5cbiAgICBzaXJpQ29tbWFuZDogJ21vYmlsZVNpcmlDb21tYW5kJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcbiAgICBkZWxldGVGb2xkZXI6ICdtb2JpbGVEZWxldGVGb2xkZXInLFxuXG4gICAgc3RhcnRBdWRpb1JlY29yZGluZzogJ3N0YXJ0QXVkaW9SZWNvcmRpbmcnLFxuICAgIHN0b3BBdWRpb1JlY29yZGluZzogJ3N0b3BBdWRpb1JlY29yZGluZycsXG5cbiAgICAvLyBYQ1Rlc3RcbiAgICBydW5YQ1Rlc3Q6ICdtb2JpbGVSdW5YQ1Rlc3QnLFxuICAgIGluc3RhbGxYQ1Rlc3RCdW5kbGU6ICdtb2JpbGVJbnN0YWxsWENUZXN0QnVuZGxlJyxcbiAgICBsaXN0WENUZXN0QnVuZGxlczogJ21vYmlsZUxpc3RYQ1Rlc3RCdW5kbGVzJyxcbiAgICBsaXN0WENUZXN0c0luVGVzdEJ1bmRsZTogJ21vYmlsZUxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlJyxcblxuICAgIHB1c2hOb3RpZmljYXRpb246ICdtb2JpbGVQdXNoTm90aWZpY2F0aW9uJyxcbiAgICBleHBlY3ROb3RpZmljYXRpb246ICdtb2JpbGVFeHBlY3ROb3RpZmljYXRpb24nLFxuXG4gICAgcGVyZm9ybUlvSGlkRXZlbnQ6ICdtb2JpbGVQZXJmb3JtSW9IaWRFdmVudCcsXG5cbiAgICBjb25maWd1cmVMb2NhbGl6YXRpb246ICdtb2JpbGVDb25maWd1cmVMb2NhbGl6YXRpb24nLFxuXG4gICAgcmVzZXRMb2NhdGlvblNlcnZpY2U6ICdtb2JpbGVSZXNldExvY2F0aW9uU2VydmljZScsXG5cbiAgICBzdGFydFBjYXA6ICdtb2JpbGVTdGFydFBjYXAnLFxuICAgIHN0b3BQY2FwOiAnbW9iaWxlU3RvcFBjYXAnLFxuICAgIGxpc3RDb25kaXRpb25JbmR1Y2VyczogJ21vYmlsZUxpc3RDb25kaXRpb25JbmR1Y2VycycsXG4gICAgZW5hYmxlQ29uZGl0aW9uSW5kdWNlcjogJ21vYmlsZUVuYWJsZUNvbmRpdGlvbkluZHVjZXInLFxuICAgIGRpc2FibGVDb25kaXRpb25JbmR1Y2VyOiAnbW9iaWxlRGlzYWJsZUNvbmRpdGlvbkluZHVjZXInLFxuICB9O1xuXG4gIGlmICghXy5oYXMoY29tbWFuZE1hcCwgbW9iaWxlQ29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoYFVua25vd24gbW9iaWxlIGNvbW1hbmQgJyR7bW9iaWxlQ29tbWFuZH0nLiBPbmx5ICR7Xy5rZXlzKGNvbW1hbmRNYXApLmpvaW4oJywgJyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbY29tbWFuZE1hcFttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxFQUFuQjs7QUFFQUEsVUFBVSxDQUFDQyxvQkFBWCxHQUFrQyxlQUFlQSxvQkFBZixDQUFxQ0MsTUFBckMsRUFBNkNDLEtBQTdDLEVBQW9EO0VBQ3BGLEtBQUtDLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw0QkFBMkJDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixLQUFmLENBQXNCLEVBQWpFOztFQUNBLElBQUksQ0FBQ0ssYUFBQSxDQUFLQyxRQUFMLENBQWMsS0FBS0MsWUFBbkIsQ0FBTCxFQUF1QztJQUNyQyxLQUFLTixHQUFMLENBQVNPLElBQVQsQ0FBZSwwREFBRCxHQUNYLGlCQUFnQkwsSUFBSSxDQUFDQyxTQUFMLENBQWVKLEtBQWYsQ0FBc0IsRUFEekM7SUFFQTtFQUNEOztFQUVELElBQUlLLGFBQUEsQ0FB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
@@ -8,6 +8,7 @@ import http from 'http';
8
8
  import { exec } from 'teen_process';
9
9
  import { findAPortNotInUse, checkPortStatus } from 'portscanner';
10
10
  import Pyidevice from '../py-ios-device-client';
11
+ import { errors } from 'appium/driver';
11
12
 
12
13
  let extensions = {}, commands = {};
13
14
 
@@ -409,6 +410,26 @@ commands.mobileInstallCertificate = async function mobileInstallCertificate (opt
409
410
  }
410
411
  };
411
412
 
413
+ /**
414
+ * Lists installed certificates for real devices only
415
+ * if [py-ios-device](https://github.com/YueChen-C/py-ios-device) tool
416
+ * is available on the server machine.
417
+ *
418
+ * @returns {Object} Returns map of certificates installed on the real device
419
+ * @throws {Error} If attempting to list certificates for simulated device or if py-ios-device
420
+ * is not installed
421
+ */
422
+ commands.mobileListCertificates = async function mobileListCertificates () {
423
+ if (!this.isRealDevice()) {
424
+ throw new errors.NotImplementedError('This extension is only supported on real devices');
425
+ }
426
+ const client = new Pyidevice(this.opts.udid);
427
+ if (await client.assertExists(false)) {
428
+ return await client.listProfiles();
429
+ }
430
+ throw new Error('pyidevice is not installed on your system, command cannot be executed.');
431
+ };
432
+
412
433
  Object.assign(extensions, commands);
413
434
  export { commands, parseCommonName };
414
435
  export default extensions;
@@ -107,6 +107,7 @@ extensions.executeMobile = async function executeMobile (mobileCommand, opts = {
107
107
  stopPerfRecord: 'mobileStopPerfRecord',
108
108
 
109
109
  installCertificate: 'mobileInstallCertificate',
110
+ listCertificates: 'mobileListCertificates',
110
111
 
111
112
  startLogsBroadcast: 'mobileStartLogsBroadcast',
112
113
  stopLogsBroadcast: 'mobileStopLogsBroadcast',
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "appium-xcuitest-driver",
3
- "version": "4.9.1",
3
+ "version": "4.10.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "appium-xcuitest-driver",
9
- "version": "4.9.1",
9
+ "version": "4.10.2",
10
10
  "engines": [
11
11
  "node"
12
12
  ],
@@ -18,7 +18,7 @@
18
18
  "appium-ios-device": "^2.4.0",
19
19
  "appium-ios-simulator": "^4.0.0",
20
20
  "appium-remote-debugger": "^9.1.1",
21
- "appium-webdriveragent": "^4.8.1",
21
+ "appium-webdriveragent": "^4.8.2",
22
22
  "appium-xcode": "^4.0.0",
23
23
  "async-lock": "^1.0.0",
24
24
  "asyncbox": "^2.3.1",
@@ -33,7 +33,7 @@
33
33
  "portscanner": "2.2.0",
34
34
  "semver": "^7.0.0",
35
35
  "source-map-support": "^0.x",
36
- "teen_process": "^1.14.0",
36
+ "teen_process": "^2.0.0",
37
37
  "ws": "^8.0.0"
38
38
  },
39
39
  "devDependencies": {
@@ -99,6 +99,14 @@
99
99
  "npm": ">=8"
100
100
  }
101
101
  },
102
+ "node_modules/@appium/base-driver/node_modules/lru-cache": {
103
+ "version": "7.13.2",
104
+ "extraneous": true,
105
+ "license": "ISC",
106
+ "engines": {
107
+ "node": ">=12"
108
+ }
109
+ },
102
110
  "node_modules/@appium/base-plugin": {
103
111
  "version": "1.10.2",
104
112
  "extraneous": true,
@@ -129,6 +137,22 @@
129
137
  "npm": ">=8"
130
138
  }
131
139
  },
140
+ "node_modules/@appium/docutils/node_modules/teen_process": {
141
+ "version": "1.16.0",
142
+ "engines": [
143
+ "node"
144
+ ],
145
+ "extraneous": true,
146
+ "license": "Apache-2.0",
147
+ "dependencies": {
148
+ "@babel/runtime": "^7.0.0",
149
+ "bluebird": "^3.5.1",
150
+ "lodash": "^4.17.4",
151
+ "shell-quote": "^1.4.3",
152
+ "source-map-support": "^0.5.3",
153
+ "which": "^2.0.2"
154
+ }
155
+ },
132
156
  "node_modules/@appium/schema": {
133
157
  "version": "0.0.9",
134
158
  "license": "Apache-2.0",
@@ -210,6 +234,21 @@
210
234
  "npm": ">=8"
211
235
  }
212
236
  },
237
+ "node_modules/@appium/support/node_modules/teen_process": {
238
+ "version": "1.16.0",
239
+ "engines": [
240
+ "node"
241
+ ],
242
+ "license": "Apache-2.0",
243
+ "dependencies": {
244
+ "@babel/runtime": "^7.0.0",
245
+ "bluebird": "^3.5.1",
246
+ "lodash": "^4.17.4",
247
+ "shell-quote": "^1.4.3",
248
+ "source-map-support": "^0.5.3",
249
+ "which": "^2.0.2"
250
+ }
251
+ },
213
252
  "node_modules/@appium/test-support": {
214
253
  "version": "1.5.0",
215
254
  "dev": true,
@@ -239,6 +278,22 @@
239
278
  "appium": "^2.0.0-beta.35"
240
279
  }
241
280
  },
281
+ "node_modules/@appium/test-support/node_modules/teen_process": {
282
+ "version": "1.16.0",
283
+ "dev": true,
284
+ "engines": [
285
+ "node"
286
+ ],
287
+ "license": "Apache-2.0",
288
+ "dependencies": {
289
+ "@babel/runtime": "^7.0.0",
290
+ "bluebird": "^3.5.1",
291
+ "lodash": "^4.17.4",
292
+ "shell-quote": "^1.4.3",
293
+ "source-map-support": "^0.5.3",
294
+ "which": "^2.0.2"
295
+ }
296
+ },
242
297
  "node_modules/@appium/types": {
243
298
  "version": "0.4.0",
244
299
  "license": "Apache-2.0",
@@ -1014,7 +1069,7 @@
1014
1069
  }
1015
1070
  },
1016
1071
  "node_modules/@types/node": {
1017
- "version": "18.7.3",
1072
+ "version": "18.7.9",
1018
1073
  "license": "MIT"
1019
1074
  },
1020
1075
  "node_modules/@types/normalize-package-data": {
@@ -1204,6 +1259,21 @@
1204
1259
  "teen_process": "^1.11.0"
1205
1260
  }
1206
1261
  },
1262
+ "node_modules/appium-idb/node_modules/teen_process": {
1263
+ "version": "1.16.0",
1264
+ "engines": [
1265
+ "node"
1266
+ ],
1267
+ "license": "Apache-2.0",
1268
+ "dependencies": {
1269
+ "@babel/runtime": "^7.0.0",
1270
+ "bluebird": "^3.5.1",
1271
+ "lodash": "^4.17.4",
1272
+ "shell-quote": "^1.4.3",
1273
+ "source-map-support": "^0.5.3",
1274
+ "which": "^2.0.2"
1275
+ }
1276
+ },
1207
1277
  "node_modules/appium-ios-device": {
1208
1278
  "version": "2.4.2",
1209
1279
  "engines": [
@@ -1224,7 +1294,7 @@
1224
1294
  }
1225
1295
  },
1226
1296
  "node_modules/appium-ios-simulator": {
1227
- "version": "4.1.0",
1297
+ "version": "4.1.2",
1228
1298
  "engines": [
1229
1299
  "node"
1230
1300
  ],
@@ -1241,7 +1311,7 @@
1241
1311
  "node-simctl": "^7.1.0",
1242
1312
  "semver": "^7.0.0",
1243
1313
  "source-map-support": "^0.x",
1244
- "teen_process": "^1.3.0"
1314
+ "teen_process": "^2.0.0"
1245
1315
  }
1246
1316
  },
1247
1317
  "node_modules/appium-remote-debugger": {
@@ -1264,7 +1334,7 @@
1264
1334
  }
1265
1335
  },
1266
1336
  "node_modules/appium-webdriveragent": {
1267
- "version": "4.8.1",
1337
+ "version": "4.8.2",
1268
1338
  "license": "Apache-2.0",
1269
1339
  "dependencies": {
1270
1340
  "@babel/runtime": "^7.0.0",
@@ -1285,6 +1355,21 @@
1285
1355
  "appium": "^2.0.0-beta.40"
1286
1356
  }
1287
1357
  },
1358
+ "node_modules/appium-webdriveragent/node_modules/teen_process": {
1359
+ "version": "1.16.0",
1360
+ "engines": [
1361
+ "node"
1362
+ ],
1363
+ "license": "Apache-2.0",
1364
+ "dependencies": {
1365
+ "@babel/runtime": "^7.0.0",
1366
+ "bluebird": "^3.5.1",
1367
+ "lodash": "^4.17.4",
1368
+ "shell-quote": "^1.4.3",
1369
+ "source-map-support": "^0.5.3",
1370
+ "which": "^2.0.2"
1371
+ }
1372
+ },
1288
1373
  "node_modules/appium-xcode": {
1289
1374
  "version": "4.0.0",
1290
1375
  "engines": [
@@ -1302,6 +1387,21 @@
1302
1387
  "teen_process": "^1.3.0"
1303
1388
  }
1304
1389
  },
1390
+ "node_modules/appium-xcode/node_modules/teen_process": {
1391
+ "version": "1.16.0",
1392
+ "engines": [
1393
+ "node"
1394
+ ],
1395
+ "license": "Apache-2.0",
1396
+ "dependencies": {
1397
+ "@babel/runtime": "^7.0.0",
1398
+ "bluebird": "^3.5.1",
1399
+ "lodash": "^4.17.4",
1400
+ "shell-quote": "^1.4.3",
1401
+ "source-map-support": "^0.5.3",
1402
+ "which": "^2.0.2"
1403
+ }
1404
+ },
1305
1405
  "node_modules/aproba": {
1306
1406
  "version": "2.0.0",
1307
1407
  "license": "ISC"
@@ -3171,7 +3271,7 @@
3171
3271
  "license": "MIT"
3172
3272
  },
3173
3273
  "node_modules/keyv": {
3174
- "version": "4.3.3",
3274
+ "version": "4.4.1",
3175
3275
  "license": "MIT",
3176
3276
  "dependencies": {
3177
3277
  "compress-brotli": "^1.3.8",
@@ -3423,7 +3523,7 @@
3423
3523
  }
3424
3524
  },
3425
3525
  "node_modules/lru-cache": {
3426
- "version": "7.13.2",
3526
+ "version": "7.14.0",
3427
3527
  "license": "ISC",
3428
3528
  "engines": {
3429
3529
  "node": ">=12"
@@ -3454,7 +3554,7 @@
3454
3554
  }
3455
3555
  },
3456
3556
  "node_modules/marked": {
3457
- "version": "4.0.18",
3557
+ "version": "4.0.19",
3458
3558
  "extraneous": true,
3459
3559
  "license": "MIT",
3460
3560
  "bin": {
@@ -3745,6 +3845,21 @@
3745
3845
  "which": "^2.0.0"
3746
3846
  }
3747
3847
  },
3848
+ "node_modules/node-simctl/node_modules/teen_process": {
3849
+ "version": "1.16.0",
3850
+ "engines": [
3851
+ "node"
3852
+ ],
3853
+ "license": "Apache-2.0",
3854
+ "dependencies": {
3855
+ "@babel/runtime": "^7.0.0",
3856
+ "bluebird": "^3.5.1",
3857
+ "lodash": "^4.17.4",
3858
+ "shell-quote": "^1.4.3",
3859
+ "source-map-support": "^0.5.3",
3860
+ "which": "^2.0.2"
3861
+ }
3862
+ },
3748
3863
  "node_modules/normalize-package-data": {
3749
3864
  "version": "2.5.0",
3750
3865
  "license": "BSD-2-Clause",
@@ -3809,7 +3924,7 @@
3809
3924
  }
3810
3925
  },
3811
3926
  "node_modules/object.assign": {
3812
- "version": "4.1.3",
3927
+ "version": "4.1.4",
3813
3928
  "extraneous": true,
3814
3929
  "license": "MIT",
3815
3930
  "dependencies": {
@@ -4858,10 +4973,7 @@
4858
4973
  }
4859
4974
  },
4860
4975
  "node_modules/teen_process": {
4861
- "version": "1.16.0",
4862
- "engines": [
4863
- "node"
4864
- ],
4976
+ "version": "2.0.0",
4865
4977
  "license": "Apache-2.0",
4866
4978
  "dependencies": {
4867
4979
  "@babel/runtime": "^7.0.0",
@@ -4870,6 +4982,10 @@
4870
4982
  "shell-quote": "^1.4.3",
4871
4983
  "source-map-support": "^0.5.3",
4872
4984
  "which": "^2.0.2"
4985
+ },
4986
+ "engines": {
4987
+ "node": ">=14",
4988
+ "npm": ">=6"
4873
4989
  }
4874
4990
  },
4875
4991
  "node_modules/text-hex": {
@@ -5320,6 +5436,12 @@
5320
5436
  "source-map-support": "0.5.21",
5321
5437
  "type-fest": "2.18.0",
5322
5438
  "validate.js": "0.13.1"
5439
+ },
5440
+ "dependencies": {
5441
+ "lru-cache": {
5442
+ "version": "7.13.2",
5443
+ "extraneous": true
5444
+ }
5323
5445
  }
5324
5446
  },
5325
5447
  "@appium/base-plugin": {
@@ -5340,6 +5462,20 @@
5340
5462
  "jsdoc-plugin-typescript": "2.1.1",
5341
5463
  "source-map-support": "0.5.21",
5342
5464
  "teen_process": "1.16.0"
5465
+ },
5466
+ "dependencies": {
5467
+ "teen_process": {
5468
+ "version": "1.16.0",
5469
+ "extraneous": true,
5470
+ "requires": {
5471
+ "@babel/runtime": "^7.0.0",
5472
+ "bluebird": "^3.5.1",
5473
+ "lodash": "^4.17.4",
5474
+ "shell-quote": "^1.4.3",
5475
+ "source-map-support": "^0.5.3",
5476
+ "which": "^2.0.2"
5477
+ }
5478
+ }
5343
5479
  }
5344
5480
  },
5345
5481
  "@appium/schema": {
@@ -5411,6 +5547,19 @@
5411
5547
  "uuid": "8.3.2",
5412
5548
  "which": "2.0.2",
5413
5549
  "yauzl": "2.10.0"
5550
+ },
5551
+ "dependencies": {
5552
+ "teen_process": {
5553
+ "version": "1.16.0",
5554
+ "requires": {
5555
+ "@babel/runtime": "^7.0.0",
5556
+ "bluebird": "^3.5.1",
5557
+ "lodash": "^4.17.4",
5558
+ "shell-quote": "^1.4.3",
5559
+ "source-map-support": "^0.5.3",
5560
+ "which": "^2.0.2"
5561
+ }
5562
+ }
5414
5563
  }
5415
5564
  },
5416
5565
  "@appium/test-support": {
@@ -5428,6 +5577,20 @@
5428
5577
  "sinon": "14.0.0",
5429
5578
  "source-map-support": "0.5.21",
5430
5579
  "teen_process": "1.16.0"
5580
+ },
5581
+ "dependencies": {
5582
+ "teen_process": {
5583
+ "version": "1.16.0",
5584
+ "dev": true,
5585
+ "requires": {
5586
+ "@babel/runtime": "^7.0.0",
5587
+ "bluebird": "^3.5.1",
5588
+ "lodash": "^4.17.4",
5589
+ "shell-quote": "^1.4.3",
5590
+ "source-map-support": "^0.5.3",
5591
+ "which": "^2.0.2"
5592
+ }
5593
+ }
5431
5594
  }
5432
5595
  },
5433
5596
  "@appium/types": {
@@ -5968,7 +6131,7 @@
5968
6131
  }
5969
6132
  },
5970
6133
  "@types/node": {
5971
- "version": "18.7.3"
6134
+ "version": "18.7.9"
5972
6135
  },
5973
6136
  "@types/normalize-package-data": {
5974
6137
  "version": "2.4.1"
@@ -6097,6 +6260,19 @@
6097
6260
  "lodash": "^4.0.0",
6098
6261
  "source-map-support": "^0.x",
6099
6262
  "teen_process": "^1.11.0"
6263
+ },
6264
+ "dependencies": {
6265
+ "teen_process": {
6266
+ "version": "1.16.0",
6267
+ "requires": {
6268
+ "@babel/runtime": "^7.0.0",
6269
+ "bluebird": "^3.5.1",
6270
+ "lodash": "^4.17.4",
6271
+ "shell-quote": "^1.4.3",
6272
+ "source-map-support": "^0.5.3",
6273
+ "which": "^2.0.2"
6274
+ }
6275
+ }
6100
6276
  }
6101
6277
  },
6102
6278
  "appium-ios-device": {
@@ -6115,7 +6291,7 @@
6115
6291
  }
6116
6292
  },
6117
6293
  "appium-ios-simulator": {
6118
- "version": "4.1.0",
6294
+ "version": "4.1.2",
6119
6295
  "requires": {
6120
6296
  "@appium/support": "^2.55.3",
6121
6297
  "@babel/runtime": "^7.0.0",
@@ -6128,7 +6304,7 @@
6128
6304
  "node-simctl": "^7.1.0",
6129
6305
  "semver": "^7.0.0",
6130
6306
  "source-map-support": "^0.x",
6131
- "teen_process": "^1.3.0"
6307
+ "teen_process": "^2.0.0"
6132
6308
  }
6133
6309
  },
6134
6310
  "appium-remote-debugger": {
@@ -6144,7 +6320,7 @@
6144
6320
  }
6145
6321
  },
6146
6322
  "appium-webdriveragent": {
6147
- "version": "4.8.1",
6323
+ "version": "4.8.2",
6148
6324
  "requires": {
6149
6325
  "@babel/runtime": "^7.0.0",
6150
6326
  "appium-ios-simulator": "^4.0.0",
@@ -6156,6 +6332,19 @@
6156
6332
  "node-simctl": "^7.0.1",
6157
6333
  "source-map-support": "^0.x",
6158
6334
  "teen_process": "^1.14.1"
6335
+ },
6336
+ "dependencies": {
6337
+ "teen_process": {
6338
+ "version": "1.16.0",
6339
+ "requires": {
6340
+ "@babel/runtime": "^7.0.0",
6341
+ "bluebird": "^3.5.1",
6342
+ "lodash": "^4.17.4",
6343
+ "shell-quote": "^1.4.3",
6344
+ "source-map-support": "^0.5.3",
6345
+ "which": "^2.0.2"
6346
+ }
6347
+ }
6159
6348
  }
6160
6349
  },
6161
6350
  "appium-xcode": {
@@ -6169,6 +6358,19 @@
6169
6358
  "semver": "^7.0.0",
6170
6359
  "source-map-support": "^0.x",
6171
6360
  "teen_process": "^1.3.0"
6361
+ },
6362
+ "dependencies": {
6363
+ "teen_process": {
6364
+ "version": "1.16.0",
6365
+ "requires": {
6366
+ "@babel/runtime": "^7.0.0",
6367
+ "bluebird": "^3.5.1",
6368
+ "lodash": "^4.17.4",
6369
+ "shell-quote": "^1.4.3",
6370
+ "source-map-support": "^0.5.3",
6371
+ "which": "^2.0.2"
6372
+ }
6373
+ }
6172
6374
  }
6173
6375
  },
6174
6376
  "aproba": {
@@ -7366,7 +7568,7 @@
7366
7568
  "dev": true
7367
7569
  },
7368
7570
  "keyv": {
7369
- "version": "4.3.3",
7571
+ "version": "4.4.1",
7370
7572
  "requires": {
7371
7573
  "compress-brotli": "^1.3.8",
7372
7574
  "json-buffer": "3.0.1"
@@ -7546,7 +7748,7 @@
7546
7748
  "version": "2.0.0"
7547
7749
  },
7548
7750
  "lru-cache": {
7549
- "version": "7.13.2"
7751
+ "version": "7.14.0"
7550
7752
  },
7551
7753
  "markdown-it": {
7552
7754
  "version": "12.3.2",
@@ -7565,7 +7767,7 @@
7565
7767
  "requires": {}
7566
7768
  },
7567
7769
  "marked": {
7568
- "version": "4.0.18",
7770
+ "version": "4.0.19",
7569
7771
  "extraneous": true
7570
7772
  },
7571
7773
  "mdurl": {
@@ -7761,6 +7963,19 @@
7761
7963
  "teen_process": "^1.5.1",
7762
7964
  "uuid": "^8.0.0",
7763
7965
  "which": "^2.0.0"
7966
+ },
7967
+ "dependencies": {
7968
+ "teen_process": {
7969
+ "version": "1.16.0",
7970
+ "requires": {
7971
+ "@babel/runtime": "^7.0.0",
7972
+ "bluebird": "^3.5.1",
7973
+ "lodash": "^4.17.4",
7974
+ "shell-quote": "^1.4.3",
7975
+ "source-map-support": "^0.5.3",
7976
+ "which": "^2.0.2"
7977
+ }
7978
+ }
7764
7979
  }
7765
7980
  },
7766
7981
  "normalize-package-data": {
@@ -7801,7 +8016,7 @@
7801
8016
  "extraneous": true
7802
8017
  },
7803
8018
  "object.assign": {
7804
- "version": "4.1.3",
8019
+ "version": "4.1.4",
7805
8020
  "extraneous": true,
7806
8021
  "requires": {
7807
8022
  "call-bind": "^1.0.2",
@@ -8483,7 +8698,7 @@
8483
8698
  }
8484
8699
  },
8485
8700
  "teen_process": {
8486
- "version": "1.16.0",
8701
+ "version": "2.0.0",
8487
8702
  "requires": {
8488
8703
  "@babel/runtime": "^7.0.0",
8489
8704
  "bluebird": "^3.5.1",
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "4.9.1",
11
+ "version": "4.10.2",
12
12
  "author": "appium",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {
@@ -70,7 +70,7 @@
70
70
  "appium-ios-device": "^2.4.0",
71
71
  "appium-ios-simulator": "^4.0.0",
72
72
  "appium-remote-debugger": "^9.1.1",
73
- "appium-webdriveragent": "^4.8.1",
73
+ "appium-webdriveragent": "^4.8.2",
74
74
  "appium-xcode": "^4.0.0",
75
75
  "async-lock": "^1.0.0",
76
76
  "asyncbox": "^2.3.1",
@@ -85,7 +85,7 @@
85
85
  "portscanner": "2.2.0",
86
86
  "semver": "^7.0.0",
87
87
  "source-map-support": "^0.x",
88
- "teen_process": "^1.14.0",
88
+ "teen_process": "^2.0.0",
89
89
  "ws": "^8.0.0"
90
90
  },
91
91
  "scripts": {