appium 2.0.0-beta.41 → 2.0.0-beta.42

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.
@@ -109,7 +109,7 @@ function makeRunArgs(type) {
109
109
  }], [['scriptName'], {
110
110
  default: null,
111
111
  type: 'str',
112
- help: `Name of the script to run from the ${type}. The script name must be cached ` + `inside the "scripts" field under "appium" inside the ${type}'s "package.json" file`
112
+ help: `Name of the script to run from the ${type}. The script name must be a key ` + `inside the "appium.scripts" field inside the ${type}'s "package.json" file`
113
113
  }]]);
114
114
  }
115
115
 
@@ -141,4 +141,4 @@ const serverArgsDisallowedInConfig = new Map([[['--shell'], {
141
141
  required: false,
142
142
  help: 'Explicit path to Appium configuration file'
143
143
  }]]);
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEUklWRVJfRVhBTVBMRSIsIlBMVUdJTl9FWEFNUExFIiwiSU5TVEFMTF9UWVBFU19BUlJBWSIsIklOU1RBTExfVFlQRVMiLCJFWFRFTlNJT05fVFlQRVMiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiZ2xvYmFsRXh0ZW5zaW9uQXJncyIsIk1hcCIsInJlcXVpcmVkIiwiZGVmYXVsdCIsImFjdGlvbiIsImhlbHAiLCJkZXN0IiwiZ2V0RXh0ZW5zaW9uQXJncyIsIl8iLCJtZW1vaXplIiwiZXh0ZW5zaW9uQXJncyIsInR5cGUiLCJFWFRfU1VCQ09NTUFORF9MSVNUIiwibWFrZUxpc3RBcmdzIiwiRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCIsIm1ha2VJbnN0YWxsQXJncyIsIkVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCIsIm1ha2VVbmluc3RhbGxBcmdzIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwibWFrZVVwZGF0ZUFyZ3MiLCJFWFRfU1VCQ09NTUFORF9SVU4iLCJtYWtlUnVuQXJncyIsImNob2ljZXMiLCJqb2luIiwiZ2V0U2VydmVyQXJncyIsInRvUGFyc2VyQXJncyIsInNlcnZlckFyZ3NEaXNhbGxvd2VkSW5Db25maWciLCJjb25zdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvYXJncy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgRFJJVkVSX1RZUEUsXG4gIFBMVUdJTl9UWVBFLFxuICBFWFRfU1VCQ09NTUFORF9JTlNUQUxMLFxuICBFWFRfU1VCQ09NTUFORF9MSVNULFxuICBFWFRfU1VCQ09NTUFORF9SVU4sXG4gIEVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCxcbiAgRVhUX1NVQkNPTU1BTkRfVVBEQVRFLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtJTlNUQUxMX1RZUEVTfSBmcm9tICcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQge3RvUGFyc2VyQXJnc30gZnJvbSAnLi4vc2NoZW1hL2NsaS1hcmdzJztcbmNvbnN0IERSSVZFUl9FWEFNUExFID0gJ3hjdWl0ZXN0JztcbmNvbnN0IFBMVUdJTl9FWEFNUExFID0gJ2ZpbmRfYnlfaW1hZ2UnO1xuXG4vKipcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgcGFzcyB0aGUgYXJyYXkgaW50byBgYXJncGFyc2VgLiBgYXJncGFyc2VgIGlzIGJhZCBhbmQgbXV0YXRlcyB0aGluZ3MuIFdlIGRvbid0IHdhbnQgdGhhdC5cbiAqIEJhZCBgYXJncGFyc2VgISBCYWQhXG4gKi9cbmNvbnN0IElOU1RBTExfVFlQRVNfQVJSQVkgPSBbLi4uSU5TVEFMTF9UWVBFU107XG5cbi8qKiBAdHlwZSB7U2V0PEV4dGVuc2lvblR5cGU+fSAqL1xuY29uc3QgRVhURU5TSU9OX1RZUEVTID0gbmV3IFNldChbRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFXSk7XG5cbi8vIHRoaXMgc2V0IG9mIGFyZ3Mgd29ya3MgZm9yIGJvdGggZHJpdmVycyBhbmQgcGx1Z2lucyAoJ2V4dGVuc2lvbnMnKVxuLyoqIEB0eXBlIHtBcmd1bWVudERlZmluaXRpb25zfSAqL1xuY29uc3QgZ2xvYmFsRXh0ZW5zaW9uQXJncyA9IG5ldyBNYXAoW1xuICBbXG4gICAgWyctLWpzb24nXSxcbiAgICB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgICAgaGVscDogJ1VzZSBKU09OIGZvciBvdXRwdXQgZm9ybWF0JyxcbiAgICAgIGRlc3Q6ICdqc29uJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbi8qKlxuICogQnVpbGRzIGEgUmVjb3JkIG9mIGV4dGVuc2lvbiB0eXBlcyB0byBhIFJlY29yZCBvZiBzdWJjb21tYW5kcyB0byB0aGVpciBhcmd1bWVudCBkZWZpbml0aW9uc1xuICovXG5jb25zdCBnZXRFeHRlbnNpb25BcmdzID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldEV4dGVuc2lvbkFyZ3MoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbkFyZ3MgPSB7fTtcbiAgZm9yIChjb25zdCB0eXBlIG9mIEVYVEVOU0lPTl9UWVBFUykge1xuICAgIGV4dGVuc2lvbkFyZ3NbdHlwZV0gPSB7XG4gICAgICBbRVhUX1NVQkNPTU1BTkRfTElTVF06IG1ha2VMaXN0QXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9JTlNUQUxMXTogbWFrZUluc3RhbGxBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1VOSU5TVEFMTF06IG1ha2VVbmluc3RhbGxBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1VQREFURV06IG1ha2VVcGRhdGVBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1JVTl06IG1ha2VSdW5BcmdzKHR5cGUpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIC8qKiBAdHlwZSB7UmVjb3JkPEV4dGVuc2lvblR5cGUsIFJlY29yZDxpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkNsaUV4dGVuc2lvblN1YmNvbW1hbmQsQXJndW1lbnREZWZpbml0aW9ucz4+fSAqLyAoXG4gICAgZXh0ZW5zaW9uQXJnc1xuICApO1xufSk7XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgbGlzdGAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZS5cbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VMaXN0QXJncyh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtcbiAgICAgIFsnLS1pbnN0YWxsZWQnXSxcbiAgICAgIHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgICAgIGhlbHA6IGBMaXN0IG9ubHkgaW5zdGFsbGVkICR7dHlwZX1zYCxcbiAgICAgICAgZGVzdDogJ3Nob3dJbnN0YWxsZWQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFtcbiAgICAgIFsnLS11cGRhdGVzJ10sXG4gICAgICB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgICAgICBoZWxwOiAnU2hvdyBpbmZvcm1hdGlvbiBhYm91dCBuZXdlciB2ZXJzaW9ucycsXG4gICAgICAgIGRlc3Q6ICdzaG93VXBkYXRlcycsXG4gICAgICB9LFxuICAgIF0sXG4gIF0pO1xufVxuXG4vKipcbiAqIE1ha2VzIHRoZSBvcHRzIGZvciB0aGUgYGluc3RhbGxgIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VJbnN0YWxsQXJncyh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtcbiAgICAgIFt0eXBlXSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3N0cicsXG4gICAgICAgIGhlbHA6XG4gICAgICAgICAgYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gaW5zdGFsbCwgZm9yIGV4YW1wbGU6IGAgKyB0eXBlID09PSBEUklWRVJfVFlQRVxuICAgICAgICAgICAgPyBEUklWRVJfRVhBTVBMRVxuICAgICAgICAgICAgOiBQTFVHSU5fRVhBTVBMRSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBbJy0tc291cmNlJ10sXG4gICAgICB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgY2hvaWNlczogSU5TVEFMTF9UWVBFU19BUlJBWSxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICBgV2hlcmUgdG8gbG9vayBmb3IgdGhlICR7dHlwZX0gaWYgaXQgaXMgbm90IG9uZSBvZiBBcHBpdW0ncyB2ZXJpZmllZCBgICtcbiAgICAgICAgICBgJHt0eXBlfXMuIFBvc3NpYmxlIHZhbHVlczogJHtJTlNUQUxMX1RZUEVTX0FSUkFZLmpvaW4oJywgJyl9YCxcbiAgICAgICAgZGVzdDogJ2luc3RhbGxUeXBlJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBbJy0tcGFja2FnZSddLFxuICAgICAge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgICBoZWxwOlxuICAgICAgICAgIGBJZiBpbnN0YWxsaW5nIGZyb20gR2l0IG9yIEdpdEh1YiwgdGhlIHBhY2thZ2UgbmFtZSwgYXMgZGVmaW5lZCBpbiB0aGUgcGx1Z2luJ3MgYCArXG4gICAgICAgICAgYHBhY2thZ2UuanNvbiBmaWxlIGluIHRoZSBcIm5hbWVcIiBmaWVsZCwgY2Fubm90IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSwgYW5kIGAgK1xuICAgICAgICAgIGBzaG91bGQgYmUgcmVwb3J0ZWQgaGVyZSwgb3RoZXJ3aXNlIHRoZSBpbnN0YWxsIHdpbGwgcHJvYmFibHkgZmFpbC5gLFxuICAgICAgICBkZXN0OiAncGFja2FnZU5hbWUnLFxuICAgICAgfSxcbiAgICBdLFxuICBdKTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGB1bmluc3RhbGxgIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VVbmluc3RhbGxBcmdzKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1xuICAgICAgW3R5cGVdLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc3RyJyxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICAnTmFtZSBvZiB0aGUgZHJpdmVyIHRvIHVuaW5zdGFsbCwgZm9yIGV4YW1wbGU6ICcgKyB0eXBlID09PSBEUklWRVJfVFlQRVxuICAgICAgICAgICAgPyBEUklWRVJfRVhBTVBMRVxuICAgICAgICAgICAgOiBQTFVHSU5fRVhBTVBMRSxcbiAgICAgIH0sXG4gICAgXSxcbiAgXSk7XG59XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgdXBkYXRlYCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlXG4gKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IHR5cGVcbiAqIEByZXR1cm5zIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5mdW5jdGlvbiBtYWtlVXBkYXRlQXJncyh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtcbiAgICAgIFt0eXBlXSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3N0cicsXG4gICAgICAgIGhlbHA6XG4gICAgICAgICAgYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gdXBkYXRlLCBvciB0aGUgd29yZCBcImluc3RhbGxlZFwiIHRvIHVwZGF0ZSBhbGwgaW5zdGFsbGVkIGAgK1xuICAgICAgICAgICAgYCR7dHlwZX1zLiBUbyBzZWUgYXZhaWxhYmxlIHVwZGF0ZXMsIHJ1biBcImFwcGl1bSAke3R5cGV9IGxpc3QgLS1pbnN0YWxsZWQgLS11cGRhdGVzXCIuIGAgK1xuICAgICAgICAgICAgJ0ZvciBleGFtcGxlOiAnICtcbiAgICAgICAgICAgIHR5cGUgPT09XG4gICAgICAgICAgRFJJVkVSX1RZUEVcbiAgICAgICAgICAgID8gRFJJVkVSX0VYQU1QTEVcbiAgICAgICAgICAgIDogUExVR0lOX0VYQU1QTEUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgW1xuICAgICAgWyctLXVuc2FmZSddLFxuICAgICAge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICBgSW5jbHVkZSB1cGRhdGVzIHRoYXQgbWlnaHQgaGF2ZSBhIG5ldyBtYWpvciByZXZpc2lvbiwgYW5kIHBvdGVudGlhbGx5IGluY2x1ZGUgYCArXG4gICAgICAgICAgYGJyZWFraW5nIGNoYW5nZXNgLFxuICAgICAgfSxcbiAgICBdLFxuICBdKTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGBydW5gIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VSdW5BcmdzKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1xuICAgICAgW3R5cGVdLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc3RyJyxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byBydW4gYSBzY3JpcHQgZnJvbSwgZm9yIGV4YW1wbGU6IGAgKyB0eXBlID09PSBEUklWRVJfVFlQRVxuICAgICAgICAgICAgPyBEUklWRVJfRVhBTVBMRVxuICAgICAgICAgICAgOiBQTFVHSU5fRVhBTVBMRSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBbJ3NjcmlwdE5hbWUnXSxcbiAgICAgIHtcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgdHlwZTogJ3N0cicsXG4gICAgICAgIGhlbHA6XG4gICAgICAgICAgYE5hbWUgb2YgdGhlIHNjcmlwdCB0byBydW4gZnJvbSB0aGUgJHt0eXBlfS4gVGhlIHNjcmlwdCBuYW1lIG11c3QgYmUgY2FjaGVkIGAgK1xuICAgICAgICAgIGBpbnNpZGUgdGhlIFwic2NyaXB0c1wiIGZpZWxkIHVuZGVyIFwiYXBwaXVtXCIgaW5zaWRlIHRoZSAke3R5cGV9J3MgXCJwYWNrYWdlLmpzb25cIiBmaWxlYCxcbiAgICAgIH0sXG4gICAgXSxcbiAgXSk7XG59XG5cbi8qKlxuICogRGVyaXZlcyB0aGUgb3B0aW9ucyBmb3IgdGhlIGBzZXJ2ZXJgIGNvbW1hbmQgZnJvbSB0aGUgc2NoZW1hLCBhbmQgYWRkcyB0aGUgYXJndW1lbnRzXG4gKiB3aGljaCBhcmUgZGlzYWxsb3dlZCBpbiB0aGUgY29uZmlnIGZpbGUuXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gZ2V0U2VydmVyQXJncygpIHtcbiAgcmV0dXJuIG5ldyBNYXAoWy4uLnRvUGFyc2VyQXJncygpLCAuLi5zZXJ2ZXJBcmdzRGlzYWxsb3dlZEluQ29uZmlnXSk7XG59XG5cbi8qKlxuICogVGhlc2UgZG9uJ3QgbWFrZSBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBhIGNvbmZpZyBmaWxlIGZvciBvYnZpb3VzIHJlYXNvbnMuXG4gKiBAdHlwZSB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuY29uc3Qgc2VydmVyQXJnc0Rpc2FsbG93ZWRJbkNvbmZpZyA9IG5ldyBNYXAoW1xuICBbXG4gICAgWyctLXNoZWxsJ10sXG4gICAge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ0VudGVyIFJFUEwgbW9kZScsXG4gICAgICBhY3Rpb246ICdzdG9yZV9jb25zdCcsXG4gICAgICBjb25zdDogdHJ1ZSxcbiAgICAgIGRlc3Q6ICdzaGVsbCcsXG4gICAgfSxcbiAgXSxcbiAgW1xuICAgIFsnLS1zaG93LWJ1aWxkLWluZm8nXSxcbiAgICB7XG4gICAgICBkZXN0OiAnc2hvd0J1aWxkSW5mbycsXG4gICAgICBhY3Rpb246ICdzdG9yZV9jb25zdCcsXG4gICAgICBjb25zdDogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGhlbHA6ICdTaG93IGluZm8gYWJvdXQgdGhlIEFwcGl1bSBidWlsZCBhbmQgZXhpdCcsXG4gICAgfSxcbiAgXSxcbiAgW1xuICAgIFsnLS1zaG93LWNvbmZpZyddLFxuICAgIHtcbiAgICAgIGRlc3Q6ICdzaG93Q29uZmlnJyxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX2NvbnN0JyxcbiAgICAgIGNvbnN0OiB0cnVlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ1Nob3cgdGhlIGN1cnJlbnQgQXBwaXVtIGNvbmZpZ3VyYXRpb24gYW5kIGV4aXQnLFxuICAgIH0sXG4gIF0sXG4gIFtcbiAgICBbJy0tY29uZmlnJ10sXG4gICAge1xuICAgICAgZGVzdDogJ2NvbmZpZ0ZpbGUnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoZWxwOiAnRXhwbGljaXQgcGF0aCB0byBBcHBpdW0gY29uZmlndXJhdGlvbiBmaWxlJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbmV4cG9ydCB7Z2V0U2VydmVyQXJncywgZ2V0RXh0ZW5zaW9uQXJnc307XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV4dGVuc2lvblR5cGV9IEV4dGVuc2lvblR5cGVcbiAqL1xuXG4vKipcbiAqIEEgdHVwbGUgb2YgYXJndW1lbnQgYWxpYXNlcyBhbmQgYXJndW1lbnQgb3B0aW9uc1xuICogQHR5cGVkZWYge01hcDxzdHJpbmdbXSxpbXBvcnQoJ2FyZ3BhcnNlJykuQXJndW1lbnRPcHRpb25zPn0gQXJndW1lbnREZWZpbml0aW9uc1xuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQVNB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
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEUklWRVJfRVhBTVBMRSIsIlBMVUdJTl9FWEFNUExFIiwiSU5TVEFMTF9UWVBFU19BUlJBWSIsIklOU1RBTExfVFlQRVMiLCJFWFRFTlNJT05fVFlQRVMiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiZ2xvYmFsRXh0ZW5zaW9uQXJncyIsIk1hcCIsInJlcXVpcmVkIiwiZGVmYXVsdCIsImFjdGlvbiIsImhlbHAiLCJkZXN0IiwiZ2V0RXh0ZW5zaW9uQXJncyIsIl8iLCJtZW1vaXplIiwiZXh0ZW5zaW9uQXJncyIsInR5cGUiLCJFWFRfU1VCQ09NTUFORF9MSVNUIiwibWFrZUxpc3RBcmdzIiwiRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCIsIm1ha2VJbnN0YWxsQXJncyIsIkVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCIsIm1ha2VVbmluc3RhbGxBcmdzIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwibWFrZVVwZGF0ZUFyZ3MiLCJFWFRfU1VCQ09NTUFORF9SVU4iLCJtYWtlUnVuQXJncyIsImNob2ljZXMiLCJqb2luIiwiZ2V0U2VydmVyQXJncyIsInRvUGFyc2VyQXJncyIsInNlcnZlckFyZ3NEaXNhbGxvd2VkSW5Db25maWciLCJjb25zdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvYXJncy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgRFJJVkVSX1RZUEUsXG4gIFBMVUdJTl9UWVBFLFxuICBFWFRfU1VCQ09NTUFORF9JTlNUQUxMLFxuICBFWFRfU1VCQ09NTUFORF9MSVNULFxuICBFWFRfU1VCQ09NTUFORF9SVU4sXG4gIEVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCxcbiAgRVhUX1NVQkNPTU1BTkRfVVBEQVRFLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtJTlNUQUxMX1RZUEVTfSBmcm9tICcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQge3RvUGFyc2VyQXJnc30gZnJvbSAnLi4vc2NoZW1hL2NsaS1hcmdzJztcbmNvbnN0IERSSVZFUl9FWEFNUExFID0gJ3hjdWl0ZXN0JztcbmNvbnN0IFBMVUdJTl9FWEFNUExFID0gJ2ZpbmRfYnlfaW1hZ2UnO1xuXG4vKipcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgcGFzcyB0aGUgYXJyYXkgaW50byBgYXJncGFyc2VgLiBgYXJncGFyc2VgIGlzIGJhZCBhbmQgbXV0YXRlcyB0aGluZ3MuIFdlIGRvbid0IHdhbnQgdGhhdC5cbiAqIEJhZCBgYXJncGFyc2VgISBCYWQhXG4gKi9cbmNvbnN0IElOU1RBTExfVFlQRVNfQVJSQVkgPSBbLi4uSU5TVEFMTF9UWVBFU107XG5cbi8qKiBAdHlwZSB7U2V0PEV4dGVuc2lvblR5cGU+fSAqL1xuY29uc3QgRVhURU5TSU9OX1RZUEVTID0gbmV3IFNldChbRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFXSk7XG5cbi8vIHRoaXMgc2V0IG9mIGFyZ3Mgd29ya3MgZm9yIGJvdGggZHJpdmVycyBhbmQgcGx1Z2lucyAoJ2V4dGVuc2lvbnMnKVxuLyoqIEB0eXBlIHtBcmd1bWVudERlZmluaXRpb25zfSAqL1xuY29uc3QgZ2xvYmFsRXh0ZW5zaW9uQXJncyA9IG5ldyBNYXAoW1xuICBbXG4gICAgWyctLWpzb24nXSxcbiAgICB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgICAgaGVscDogJ1VzZSBKU09OIGZvciBvdXRwdXQgZm9ybWF0JyxcbiAgICAgIGRlc3Q6ICdqc29uJyxcbiAgICB9LFxuICBdLFxuXSk7XG5cbi8qKlxuICogQnVpbGRzIGEgUmVjb3JkIG9mIGV4dGVuc2lvbiB0eXBlcyB0byBhIFJlY29yZCBvZiBzdWJjb21tYW5kcyB0byB0aGVpciBhcmd1bWVudCBkZWZpbml0aW9uc1xuICovXG5jb25zdCBnZXRFeHRlbnNpb25BcmdzID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldEV4dGVuc2lvbkFyZ3MoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbkFyZ3MgPSB7fTtcbiAgZm9yIChjb25zdCB0eXBlIG9mIEVYVEVOU0lPTl9UWVBFUykge1xuICAgIGV4dGVuc2lvbkFyZ3NbdHlwZV0gPSB7XG4gICAgICBbRVhUX1NVQkNPTU1BTkRfTElTVF06IG1ha2VMaXN0QXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9JTlNUQUxMXTogbWFrZUluc3RhbGxBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1VOSU5TVEFMTF06IG1ha2VVbmluc3RhbGxBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1VQREFURV06IG1ha2VVcGRhdGVBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1JVTl06IG1ha2VSdW5BcmdzKHR5cGUpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIC8qKiBAdHlwZSB7UmVjb3JkPEV4dGVuc2lvblR5cGUsIFJlY29yZDxpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkNsaUV4dGVuc2lvblN1YmNvbW1hbmQsQXJndW1lbnREZWZpbml0aW9ucz4+fSAqLyAoXG4gICAgZXh0ZW5zaW9uQXJnc1xuICApO1xufSk7XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgbGlzdGAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZS5cbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VMaXN0QXJncyh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtcbiAgICAgIFsnLS1pbnN0YWxsZWQnXSxcbiAgICAgIHtcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgICAgIGhlbHA6IGBMaXN0IG9ubHkgaW5zdGFsbGVkICR7dHlwZX1zYCxcbiAgICAgICAgZGVzdDogJ3Nob3dJbnN0YWxsZWQnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFtcbiAgICAgIFsnLS11cGRhdGVzJ10sXG4gICAgICB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgICAgICBoZWxwOiAnU2hvdyBpbmZvcm1hdGlvbiBhYm91dCBuZXdlciB2ZXJzaW9ucycsXG4gICAgICAgIGRlc3Q6ICdzaG93VXBkYXRlcycsXG4gICAgICB9LFxuICAgIF0sXG4gIF0pO1xufVxuXG4vKipcbiAqIE1ha2VzIHRoZSBvcHRzIGZvciB0aGUgYGluc3RhbGxgIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VJbnN0YWxsQXJncyh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtcbiAgICAgIFt0eXBlXSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3N0cicsXG4gICAgICAgIGhlbHA6XG4gICAgICAgICAgYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gaW5zdGFsbCwgZm9yIGV4YW1wbGU6IGAgKyB0eXBlID09PSBEUklWRVJfVFlQRVxuICAgICAgICAgICAgPyBEUklWRVJfRVhBTVBMRVxuICAgICAgICAgICAgOiBQTFVHSU5fRVhBTVBMRSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBbJy0tc291cmNlJ10sXG4gICAgICB7XG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgY2hvaWNlczogSU5TVEFMTF9UWVBFU19BUlJBWSxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICBgV2hlcmUgdG8gbG9vayBmb3IgdGhlICR7dHlwZX0gaWYgaXQgaXMgbm90IG9uZSBvZiBBcHBpdW0ncyB2ZXJpZmllZCBgICtcbiAgICAgICAgICBgJHt0eXBlfXMuIFBvc3NpYmxlIHZhbHVlczogJHtJTlNUQUxMX1RZUEVTX0FSUkFZLmpvaW4oJywgJyl9YCxcbiAgICAgICAgZGVzdDogJ2luc3RhbGxUeXBlJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBbJy0tcGFja2FnZSddLFxuICAgICAge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgICBoZWxwOlxuICAgICAgICAgIGBJZiBpbnN0YWxsaW5nIGZyb20gR2l0IG9yIEdpdEh1YiwgdGhlIHBhY2thZ2UgbmFtZSwgYXMgZGVmaW5lZCBpbiB0aGUgcGx1Z2luJ3MgYCArXG4gICAgICAgICAgYHBhY2thZ2UuanNvbiBmaWxlIGluIHRoZSBcIm5hbWVcIiBmaWVsZCwgY2Fubm90IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSwgYW5kIGAgK1xuICAgICAgICAgIGBzaG91bGQgYmUgcmVwb3J0ZWQgaGVyZSwgb3RoZXJ3aXNlIHRoZSBpbnN0YWxsIHdpbGwgcHJvYmFibHkgZmFpbC5gLFxuICAgICAgICBkZXN0OiAncGFja2FnZU5hbWUnLFxuICAgICAgfSxcbiAgICBdLFxuICBdKTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGB1bmluc3RhbGxgIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VVbmluc3RhbGxBcmdzKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1xuICAgICAgW3R5cGVdLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc3RyJyxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICAnTmFtZSBvZiB0aGUgZHJpdmVyIHRvIHVuaW5zdGFsbCwgZm9yIGV4YW1wbGU6ICcgKyB0eXBlID09PSBEUklWRVJfVFlQRVxuICAgICAgICAgICAgPyBEUklWRVJfRVhBTVBMRVxuICAgICAgICAgICAgOiBQTFVHSU5fRVhBTVBMRSxcbiAgICAgIH0sXG4gICAgXSxcbiAgXSk7XG59XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgdXBkYXRlYCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlXG4gKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IHR5cGVcbiAqIEByZXR1cm5zIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5mdW5jdGlvbiBtYWtlVXBkYXRlQXJncyh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtcbiAgICAgIFt0eXBlXSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3N0cicsXG4gICAgICAgIGhlbHA6XG4gICAgICAgICAgYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gdXBkYXRlLCBvciB0aGUgd29yZCBcImluc3RhbGxlZFwiIHRvIHVwZGF0ZSBhbGwgaW5zdGFsbGVkIGAgK1xuICAgICAgICAgICAgYCR7dHlwZX1zLiBUbyBzZWUgYXZhaWxhYmxlIHVwZGF0ZXMsIHJ1biBcImFwcGl1bSAke3R5cGV9IGxpc3QgLS1pbnN0YWxsZWQgLS11cGRhdGVzXCIuIGAgK1xuICAgICAgICAgICAgJ0ZvciBleGFtcGxlOiAnICtcbiAgICAgICAgICAgIHR5cGUgPT09XG4gICAgICAgICAgRFJJVkVSX1RZUEVcbiAgICAgICAgICAgID8gRFJJVkVSX0VYQU1QTEVcbiAgICAgICAgICAgIDogUExVR0lOX0VYQU1QTEUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgW1xuICAgICAgWyctLXVuc2FmZSddLFxuICAgICAge1xuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICBgSW5jbHVkZSB1cGRhdGVzIHRoYXQgbWlnaHQgaGF2ZSBhIG5ldyBtYWpvciByZXZpc2lvbiwgYW5kIHBvdGVudGlhbGx5IGluY2x1ZGUgYCArXG4gICAgICAgICAgYGJyZWFraW5nIGNoYW5nZXNgLFxuICAgICAgfSxcbiAgICBdLFxuICBdKTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGBydW5gIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VSdW5BcmdzKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1xuICAgICAgW3R5cGVdLFxuICAgICAge1xuICAgICAgICB0eXBlOiAnc3RyJyxcbiAgICAgICAgaGVscDpcbiAgICAgICAgICBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byBydW4gYSBzY3JpcHQgZnJvbSwgZm9yIGV4YW1wbGU6IGAgKyB0eXBlID09PSBEUklWRVJfVFlQRVxuICAgICAgICAgICAgPyBEUklWRVJfRVhBTVBMRVxuICAgICAgICAgICAgOiBQTFVHSU5fRVhBTVBMRSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBbJ3NjcmlwdE5hbWUnXSxcbiAgICAgIHtcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgdHlwZTogJ3N0cicsXG4gICAgICAgIGhlbHA6XG4gICAgICAgICAgYE5hbWUgb2YgdGhlIHNjcmlwdCB0byBydW4gZnJvbSB0aGUgJHt0eXBlfS4gVGhlIHNjcmlwdCBuYW1lIG11c3QgYmUgYSBrZXkgYCArXG4gICAgICAgICAgYGluc2lkZSB0aGUgXCJhcHBpdW0uc2NyaXB0c1wiIGZpZWxkIGluc2lkZSB0aGUgJHt0eXBlfSdzIFwicGFja2FnZS5qc29uXCIgZmlsZWAsXG4gICAgICB9LFxuICAgIF0sXG4gIF0pO1xufVxuXG4vKipcbiAqIERlcml2ZXMgdGhlIG9wdGlvbnMgZm9yIHRoZSBgc2VydmVyYCBjb21tYW5kIGZyb20gdGhlIHNjaGVtYSwgYW5kIGFkZHMgdGhlIGFyZ3VtZW50c1xuICogd2hpY2ggYXJlIGRpc2FsbG93ZWQgaW4gdGhlIGNvbmZpZyBmaWxlLlxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIGdldFNlcnZlckFyZ3MoKSB7XG4gIHJldHVybiBuZXcgTWFwKFsuLi50b1BhcnNlckFyZ3MoKSwgLi4uc2VydmVyQXJnc0Rpc2FsbG93ZWRJbkNvbmZpZ10pO1xufVxuXG4vKipcbiAqIFRoZXNlIGRvbid0IG1ha2Ugc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYSBjb25maWcgZmlsZSBmb3Igb2J2aW91cyByZWFzb25zLlxuICogQHR5cGUge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmNvbnN0IHNlcnZlckFyZ3NEaXNhbGxvd2VkSW5Db25maWcgPSBuZXcgTWFwKFtcbiAgW1xuICAgIFsnLS1zaGVsbCddLFxuICAgIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGhlbHA6ICdFbnRlciBSRVBMIG1vZGUnLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfY29uc3QnLFxuICAgICAgY29uc3Q6IHRydWUsXG4gICAgICBkZXN0OiAnc2hlbGwnLFxuICAgIH0sXG4gIF0sXG4gIFtcbiAgICBbJy0tc2hvdy1idWlsZC1pbmZvJ10sXG4gICAge1xuICAgICAgZGVzdDogJ3Nob3dCdWlsZEluZm8nLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfY29uc3QnLFxuICAgICAgY29uc3Q6IHRydWUsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoZWxwOiAnU2hvdyBpbmZvIGFib3V0IHRoZSBBcHBpdW0gYnVpbGQgYW5kIGV4aXQnLFxuICAgIH0sXG4gIF0sXG4gIFtcbiAgICBbJy0tc2hvdy1jb25maWcnXSxcbiAgICB7XG4gICAgICBkZXN0OiAnc2hvd0NvbmZpZycsXG4gICAgICBhY3Rpb246ICdzdG9yZV9jb25zdCcsXG4gICAgICBjb25zdDogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGhlbHA6ICdTaG93IHRoZSBjdXJyZW50IEFwcGl1bSBjb25maWd1cmF0aW9uIGFuZCBleGl0JyxcbiAgICB9LFxuICBdLFxuICBbXG4gICAgWyctLWNvbmZpZyddLFxuICAgIHtcbiAgICAgIGRlc3Q6ICdjb25maWdGaWxlJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ0V4cGxpY2l0IHBhdGggdG8gQXBwaXVtIGNvbmZpZ3VyYXRpb24gZmlsZScsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQge2dldFNlcnZlckFyZ3MsIGdldEV4dGVuc2lvbkFyZ3N9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cblxuLyoqXG4gKiBBIHR1cGxlIG9mIGFyZ3VtZW50IGFsaWFzZXMgYW5kIGFyZ3VtZW50IG9wdGlvbnNcbiAqIEB0eXBlZGVmIHtNYXA8c3RyaW5nW10saW1wb3J0KCdhcmdwYXJzZScpLkFyZ3VtZW50T3B0aW9ucz59IEFyZ3VtZW50RGVmaW5pdGlvbnNcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFD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
@@ -18,9 +18,10 @@ export default class DriverCommand extends ExtensionCommand<"driver"> {
18
18
  driver: any;
19
19
  unsafe: any;
20
20
  }): Promise<import("./extension-command").ExtensionUpdateResult>;
21
- run({ driver, scriptName }: {
21
+ run({ driver, scriptName, extraArgs }: {
22
22
  driver: any;
23
23
  scriptName: any;
24
+ extraArgs: any;
24
25
  }): Promise<import("./extension-command").RunOutput>;
25
26
  getPostInstallText({ extName, extData }: {
26
27
  extName: any;
@@ -1 +1 @@
1
- {"version":3,"file":"driver-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/driver-command.js"],"names":[],"mappings":"AAOA;;GAEG;AACH;IACE;;OAEG;IACH,8BAFW,OAAO,qBAAqB,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAK3E;IAED;;;;mEAMC;IAED;;mEAEC;IAED;;;qEAEC;IAED;;;yDAEC;IAED;;;eAMC;CAwBF;;YAIa,OAAO,+BAA+B,EAAE,eAAe,CAAC,UAAU,CAAC;UACnE,OAAO;;yBAIR,OAAO,eAAe,EAAE,UAAU"}
1
+ {"version":3,"file":"driver-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/driver-command.js"],"names":[],"mappings":"AAOA;;GAEG;AACH;IACE;;OAEG;IACH,8BAFW,OAAO,qBAAqB,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAK3E;IAED;;;;mEAMC;IAED;;mEAEC;IAED;;;qEAEC;IAED;;;;yDAEC;IAED;;;eAMC;CAwBF;;YAIa,OAAO,+BAA+B,EAAE,eAAe,CAAC,UAAU,CAAC;UACnE,OAAO;;yBAIR,OAAO,eAAe,EAAE,UAAU"}
@@ -63,11 +63,13 @@ class DriverCommand extends _extensionCommand.default {
63
63
 
64
64
  async run({
65
65
  driver,
66
- scriptName
66
+ scriptName,
67
+ extraArgs
67
68
  }) {
68
69
  return await super._run({
69
70
  installSpec: driver,
70
- scriptName
71
+ scriptName,
72
+ extraArgs
71
73
  });
72
74
  }
73
75
 
@@ -89,4 +91,4 @@ class DriverCommand extends _extensionCommand.default {
89
91
  }
90
92
 
91
93
  exports.default = DriverCommand;
92
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfRFJJVkVSX0ZJRUxEUyIsIkRyaXZlckNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fRFJJVkVSUyIsImluc3RhbGwiLCJkcml2ZXIiLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJpbnN0YWxsU3BlYyIsInVuaW5zdGFsbCIsIl91bmluc3RhbGwiLCJ1cGRhdGUiLCJ1bnNhZmUiLCJfdXBkYXRlIiwicnVuIiwic2NyaXB0TmFtZSIsIl9ydW4iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsImF1dG9tYXRpb25OYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInBsYXRmb3JtTmFtZXMiLCJ2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyIsImRyaXZlck1ldGFkYXRhIiwibWlzc2luZ0ZpZWxkcyIsInJlZHVjZSIsImFjYyIsImZpZWxkIiwiXyIsImlzRW1wdHkiLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZHJpdmVyLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtLTk9XTl9EUklWRVJTfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0ICdAY29sb3JzL2NvbG9ycyc7XG5cbmNvbnN0IFJFUV9EUklWRVJfRklFTERTID0gWydkcml2ZXJOYW1lJywgJ2F1dG9tYXRpb25OYW1lJywgJ3BsYXRmb3JtTmFtZXMnLCAnbWFpbkNsYXNzJ107XG5cbi8qKlxuICogQGV4dGVuZHMge0V4dGVuc2lvbkNvbW1hbmQ8RHJpdmVyVHlwZT59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyaXZlckNvbW1hbmQgZXh0ZW5kcyBFeHRlbnNpb25Db21tYW5kIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuL2V4dGVuc2lvbi1jb21tYW5kJykuRXh0ZW5zaW9uQ29tbWFuZE9wdGlvbnM8RHJpdmVyVHlwZT59IG9wdHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWcsIGpzb259KSB7XG4gICAgc3VwZXIoe2NvbmZpZywganNvbn0pO1xuICAgIHRoaXMua25vd25FeHRlbnNpb25zID0gS05PV05fRFJJVkVSUztcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGwoe2RyaXZlciwgaW5zdGFsbFR5cGUsIHBhY2thZ2VOYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5faW5zdGFsbCh7XG4gICAgICBpbnN0YWxsU3BlYzogZHJpdmVyLFxuICAgICAgaW5zdGFsbFR5cGUsXG4gICAgICBwYWNrYWdlTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVuaW5zdGFsbCh7ZHJpdmVyfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdW5pbnN0YWxsKHtpbnN0YWxsU3BlYzogZHJpdmVyfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoe2RyaXZlciwgdW5zYWZlfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdXBkYXRlKHtpbnN0YWxsU3BlYzogZHJpdmVyLCB1bnNhZmV9KTtcbiAgfVxuXG4gIGFzeW5jIHJ1bih7ZHJpdmVyLCBzY3JpcHROYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fcnVuKHtpbnN0YWxsU3BlYzogZHJpdmVyLCBzY3JpcHROYW1lfSk7XG4gIH1cblxuICBnZXRQb3N0SW5zdGFsbFRleHQoe2V4dE5hbWUsIGV4dERhdGF9KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGBEcml2ZXIgJHtleHROYW1lfUAke2V4dERhdGEudmVyc2lvbn0gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZFxcbmAuZ3JlZW4gK1xuICAgICAgYC0gYXV0b21hdGlvbk5hbWU6ICR7ZXh0RGF0YS5hdXRvbWF0aW9uTmFtZS5ncmVlbn1cXG5gICtcbiAgICAgIGAtIHBsYXRmb3JtTmFtZXM6ICR7SlNPTi5zdHJpbmdpZnkoZXh0RGF0YS5wbGF0Zm9ybU5hbWVzKS5ncmVlbn1gXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgZmllbGRzIGluIGBhcHBpdW1gIGZpZWxkIG9mIGBkcml2ZXJNZXRhZGF0YWBcbiAgICpcbiAgICogRm9yIGFueSBgcGFja2FnZS5qc29uYCBmaWVsZHMgd2hpY2ggYSBkcml2ZXIgcmVxdWlyZXMsIHZhbGlkYXRlIHRoZSB0eXBlIG9mXG4gICAqIHRob3NlIGZpZWxkcyBvbiB0aGUgYHBhY2thZ2UuanNvbmAgZGF0YSwgdGhyb3dpbmcgYW4gZXJyb3IgaWYgYW55dGhpbmcgaXNcbiAgICogYW1pc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRNZXRhZGF0YTxEcml2ZXJUeXBlPn0gZHJpdmVyTWV0YWRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluc3RhbGxTcGVjXG4gICAqL1xuICB2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyhkcml2ZXJNZXRhZGF0YSwgaW5zdGFsbFNwZWMpIHtcbiAgICBjb25zdCBtaXNzaW5nRmllbGRzID0gUkVRX0RSSVZFUl9GSUVMRFMucmVkdWNlKFxuICAgICAgKGFjYywgZmllbGQpID0+IChkcml2ZXJNZXRhZGF0YVtmaWVsZF0gPyBhY2MgOiBbLi4uYWNjLCBmaWVsZF0pLFxuICAgICAgW11cbiAgICApO1xuXG4gICAgaWYgKCFfLmlzRW1wdHkobWlzc2luZ0ZpZWxkcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYERyaXZlciBcIiR7aW5zdGFsbFNwZWN9XCIgZGlkIG5vdCBleHBvc2UgY29ycmVjdCBmaWVsZHMgZm9yIGNvbXBhYmlsaXR5IGAgK1xuICAgICAgICAgIGB3aXRoIEFwcGl1bS4gTWlzc2luZyBmaWVsZHM6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ0ZpZWxkcyl9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBEcml2ZXJDb21tYW5kT3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4uL2V4dGVuc2lvbi9leHRlbnNpb24tY29uZmlnJykuRXh0ZW5zaW9uQ29uZmlnPERyaXZlclR5cGU+fSBjb25maWdcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0ganNvblxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLENBQUMsWUFBRCxFQUFlLGdCQUFmLEVBQWlDLGVBQWpDLEVBQWtELFdBQWxELENBQTFCOztBQUtlLE1BQU1DLGFBQU4sU0FBNEJDLHlCQUE1QixDQUE2QztFQUkxREMsV0FBVyxDQUFDO0lBQUNDLE1BQUQ7SUFBU0M7RUFBVCxDQUFELEVBQWlCO0lBQzFCLE1BQU07TUFBQ0QsTUFBRDtNQUFTQztJQUFULENBQU47SUFDQSxLQUFLQyxlQUFMLEdBQXVCQyx3QkFBdkI7RUFDRDs7RUFFWSxNQUFQQyxPQUFPLENBQUM7SUFBQ0MsTUFBRDtJQUFTQyxXQUFUO0lBQXNCQztFQUF0QixDQUFELEVBQXFDO0lBQ2hELE9BQU8sTUFBTSxNQUFNQyxRQUFOLENBQWU7TUFDMUJDLFdBQVcsRUFBRUosTUFEYTtNQUUxQkMsV0FGMEI7TUFHMUJDO0lBSDBCLENBQWYsQ0FBYjtFQUtEOztFQUVjLE1BQVRHLFNBQVMsQ0FBQztJQUFDTDtFQUFELENBQUQsRUFBVztJQUN4QixPQUFPLE1BQU0sTUFBTU0sVUFBTixDQUFpQjtNQUFDRixXQUFXLEVBQUVKO0lBQWQsQ0FBakIsQ0FBYjtFQUNEOztFQUVXLE1BQU5PLE1BQU0sQ0FBQztJQUFDUCxNQUFEO0lBQVNRO0VBQVQsQ0FBRCxFQUFtQjtJQUM3QixPQUFPLE1BQU0sTUFBTUMsT0FBTixDQUFjO01BQUNMLFdBQVcsRUFBRUosTUFBZDtNQUFzQlE7SUFBdEIsQ0FBZCxDQUFiO0VBQ0Q7O0VBRVEsTUFBSEUsR0FBRyxDQUFDO0lBQUNWLE1BQUQ7SUFBU1c7RUFBVCxDQUFELEVBQXVCO0lBQzlCLE9BQU8sTUFBTSxNQUFNQyxJQUFOLENBQVc7TUFBQ1IsV0FBVyxFQUFFSixNQUFkO01BQXNCVztJQUF0QixDQUFYLENBQWI7RUFDRDs7RUFFREUsa0JBQWtCLENBQUM7SUFBQ0MsT0FBRDtJQUFVQztFQUFWLENBQUQsRUFBcUI7SUFDckMsT0FDRyxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSwyQkFBckMsQ0FBZ0VDLEtBQWhFLEdBQ0MscUJBQW9CRixPQUFPLENBQUNHLGNBQVIsQ0FBdUJELEtBQU0sSUFEbEQsR0FFQyxvQkFBbUJFLElBQUksQ0FBQ0MsU0FBTCxDQUFlTCxPQUFPLENBQUNNLGFBQXZCLEVBQXNDSixLQUFNLEVBSGxFO0VBS0Q7O0VBV0RLLHVCQUF1QixDQUFDQyxjQUFELEVBQWlCbkIsV0FBakIsRUFBOEI7SUFDbkQsTUFBTW9CLGFBQWEsR0FBR2pDLGlCQUFpQixDQUFDa0MsTUFBbEIsQ0FDcEIsQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLEtBQWlCSixjQUFjLENBQUNJLEtBQUQsQ0FBZCxHQUF3QkQsR0FBeEIsR0FBOEIsQ0FBQyxHQUFHQSxHQUFKLEVBQVNDLEtBQVQsQ0FEM0IsRUFFcEIsRUFGb0IsQ0FBdEI7O0lBS0EsSUFBSSxDQUFDQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUwsYUFBVixDQUFMLEVBQStCO01BQzdCLE1BQU0sSUFBSU0sS0FBSixDQUNILFdBQVUxQixXQUFZLGtEQUF2QixHQUNHLGdDQUErQmUsSUFBSSxDQUFDQyxTQUFMLENBQWVJLGFBQWYsQ0FBOEIsRUFGNUQsQ0FBTjtJQUlEO0VBQ0Y7O0FBMUR5RCJ9
94
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfRFJJVkVSX0ZJRUxEUyIsIkRyaXZlckNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fRFJJVkVSUyIsImluc3RhbGwiLCJkcml2ZXIiLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJpbnN0YWxsU3BlYyIsInVuaW5zdGFsbCIsIl91bmluc3RhbGwiLCJ1cGRhdGUiLCJ1bnNhZmUiLCJfdXBkYXRlIiwicnVuIiwic2NyaXB0TmFtZSIsImV4dHJhQXJncyIsIl9ydW4iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsImF1dG9tYXRpb25OYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInBsYXRmb3JtTmFtZXMiLCJ2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyIsImRyaXZlck1ldGFkYXRhIiwibWlzc2luZ0ZpZWxkcyIsInJlZHVjZSIsImFjYyIsImZpZWxkIiwiXyIsImlzRW1wdHkiLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZHJpdmVyLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtLTk9XTl9EUklWRVJTfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0ICdAY29sb3JzL2NvbG9ycyc7XG5cbmNvbnN0IFJFUV9EUklWRVJfRklFTERTID0gWydkcml2ZXJOYW1lJywgJ2F1dG9tYXRpb25OYW1lJywgJ3BsYXRmb3JtTmFtZXMnLCAnbWFpbkNsYXNzJ107XG5cbi8qKlxuICogQGV4dGVuZHMge0V4dGVuc2lvbkNvbW1hbmQ8RHJpdmVyVHlwZT59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyaXZlckNvbW1hbmQgZXh0ZW5kcyBFeHRlbnNpb25Db21tYW5kIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuL2V4dGVuc2lvbi1jb21tYW5kJykuRXh0ZW5zaW9uQ29tbWFuZE9wdGlvbnM8RHJpdmVyVHlwZT59IG9wdHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWcsIGpzb259KSB7XG4gICAgc3VwZXIoe2NvbmZpZywganNvbn0pO1xuICAgIHRoaXMua25vd25FeHRlbnNpb25zID0gS05PV05fRFJJVkVSUztcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGwoe2RyaXZlciwgaW5zdGFsbFR5cGUsIHBhY2thZ2VOYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5faW5zdGFsbCh7XG4gICAgICBpbnN0YWxsU3BlYzogZHJpdmVyLFxuICAgICAgaW5zdGFsbFR5cGUsXG4gICAgICBwYWNrYWdlTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVuaW5zdGFsbCh7ZHJpdmVyfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdW5pbnN0YWxsKHtpbnN0YWxsU3BlYzogZHJpdmVyfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoe2RyaXZlciwgdW5zYWZlfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdXBkYXRlKHtpbnN0YWxsU3BlYzogZHJpdmVyLCB1bnNhZmV9KTtcbiAgfVxuXG4gIGFzeW5jIHJ1bih7ZHJpdmVyLCBzY3JpcHROYW1lLCBleHRyYUFyZ3N9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9ydW4oe2luc3RhbGxTcGVjOiBkcml2ZXIsIHNjcmlwdE5hbWUsIGV4dHJhQXJnc30pO1xuICB9XG5cbiAgZ2V0UG9zdEluc3RhbGxUZXh0KHtleHROYW1lLCBleHREYXRhfSkge1xuICAgIHJldHVybiAoXG4gICAgICBgRHJpdmVyICR7ZXh0TmFtZX1AJHtleHREYXRhLnZlcnNpb259IHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWRcXG5gLmdyZWVuICtcbiAgICAgIGAtIGF1dG9tYXRpb25OYW1lOiAke2V4dERhdGEuYXV0b21hdGlvbk5hbWUuZ3JlZW59XFxuYCArXG4gICAgICBgLSBwbGF0Zm9ybU5hbWVzOiAke0pTT04uc3RyaW5naWZ5KGV4dERhdGEucGxhdGZvcm1OYW1lcykuZ3JlZW59YFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGZpZWxkcyBpbiBgYXBwaXVtYCBmaWVsZCBvZiBgZHJpdmVyTWV0YWRhdGFgXG4gICAqXG4gICAqIEZvciBhbnkgYHBhY2thZ2UuanNvbmAgZmllbGRzIHdoaWNoIGEgZHJpdmVyIHJlcXVpcmVzLCB2YWxpZGF0ZSB0aGUgdHlwZSBvZlxuICAgKiB0aG9zZSBmaWVsZHMgb24gdGhlIGBwYWNrYWdlLmpzb25gIGRhdGEsIHRocm93aW5nIGFuIGVycm9yIGlmIGFueXRoaW5nIGlzXG4gICAqIGFtaXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuRXh0TWV0YWRhdGE8RHJpdmVyVHlwZT59IGRyaXZlck1ldGFkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YWxsU3BlY1xuICAgKi9cbiAgdmFsaWRhdGVFeHRlbnNpb25GaWVsZHMoZHJpdmVyTWV0YWRhdGEsIGluc3RhbGxTcGVjKSB7XG4gICAgY29uc3QgbWlzc2luZ0ZpZWxkcyA9IFJFUV9EUklWRVJfRklFTERTLnJlZHVjZShcbiAgICAgIChhY2MsIGZpZWxkKSA9PiAoZHJpdmVyTWV0YWRhdGFbZmllbGRdID8gYWNjIDogWy4uLmFjYywgZmllbGRdKSxcbiAgICAgIFtdXG4gICAgKTtcblxuICAgIGlmICghXy5pc0VtcHR5KG1pc3NpbmdGaWVsZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBEcml2ZXIgXCIke2luc3RhbGxTcGVjfVwiIGRpZCBub3QgZXhwb3NlIGNvcnJlY3QgZmllbGRzIGZvciBjb21wYWJpbGl0eSBgICtcbiAgICAgICAgICBgd2l0aCBBcHBpdW0uIE1pc3NpbmcgZmllbGRzOiAke0pTT04uc3RyaW5naWZ5KG1pc3NpbmdGaWVsZHMpfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRHJpdmVyQ29tbWFuZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxEcml2ZXJUeXBlPn0gY29uZmlnXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGpzb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxDQUFDLFlBQUQsRUFBZSxnQkFBZixFQUFpQyxlQUFqQyxFQUFrRCxXQUFsRCxDQUExQjs7QUFLZSxNQUFNQyxhQUFOLFNBQTRCQyx5QkFBNUIsQ0FBNkM7RUFJMURDLFdBQVcsQ0FBQztJQUFDQyxNQUFEO0lBQVNDO0VBQVQsQ0FBRCxFQUFpQjtJQUMxQixNQUFNO01BQUNELE1BQUQ7TUFBU0M7SUFBVCxDQUFOO0lBQ0EsS0FBS0MsZUFBTCxHQUF1QkMsd0JBQXZCO0VBQ0Q7O0VBRVksTUFBUEMsT0FBTyxDQUFDO0lBQUNDLE1BQUQ7SUFBU0MsV0FBVDtJQUFzQkM7RUFBdEIsQ0FBRCxFQUFxQztJQUNoRCxPQUFPLE1BQU0sTUFBTUMsUUFBTixDQUFlO01BQzFCQyxXQUFXLEVBQUVKLE1BRGE7TUFFMUJDLFdBRjBCO01BRzFCQztJQUgwQixDQUFmLENBQWI7RUFLRDs7RUFFYyxNQUFURyxTQUFTLENBQUM7SUFBQ0w7RUFBRCxDQUFELEVBQVc7SUFDeEIsT0FBTyxNQUFNLE1BQU1NLFVBQU4sQ0FBaUI7TUFBQ0YsV0FBVyxFQUFFSjtJQUFkLENBQWpCLENBQWI7RUFDRDs7RUFFVyxNQUFOTyxNQUFNLENBQUM7SUFBQ1AsTUFBRDtJQUFTUTtFQUFULENBQUQsRUFBbUI7SUFDN0IsT0FBTyxNQUFNLE1BQU1DLE9BQU4sQ0FBYztNQUFDTCxXQUFXLEVBQUVKLE1BQWQ7TUFBc0JRO0lBQXRCLENBQWQsQ0FBYjtFQUNEOztFQUVRLE1BQUhFLEdBQUcsQ0FBQztJQUFDVixNQUFEO0lBQVNXLFVBQVQ7SUFBcUJDO0VBQXJCLENBQUQsRUFBa0M7SUFDekMsT0FBTyxNQUFNLE1BQU1DLElBQU4sQ0FBVztNQUFDVCxXQUFXLEVBQUVKLE1BQWQ7TUFBc0JXLFVBQXRCO01BQWtDQztJQUFsQyxDQUFYLENBQWI7RUFDRDs7RUFFREUsa0JBQWtCLENBQUM7SUFBQ0MsT0FBRDtJQUFVQztFQUFWLENBQUQsRUFBcUI7SUFDckMsT0FDRyxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSwyQkFBckMsQ0FBZ0VDLEtBQWhFLEdBQ0MscUJBQW9CRixPQUFPLENBQUNHLGNBQVIsQ0FBdUJELEtBQU0sSUFEbEQsR0FFQyxvQkFBbUJFLElBQUksQ0FBQ0MsU0FBTCxDQUFlTCxPQUFPLENBQUNNLGFBQXZCLEVBQXNDSixLQUFNLEVBSGxFO0VBS0Q7O0VBV0RLLHVCQUF1QixDQUFDQyxjQUFELEVBQWlCcEIsV0FBakIsRUFBOEI7SUFDbkQsTUFBTXFCLGFBQWEsR0FBR2xDLGlCQUFpQixDQUFDbUMsTUFBbEIsQ0FDcEIsQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLEtBQWlCSixjQUFjLENBQUNJLEtBQUQsQ0FBZCxHQUF3QkQsR0FBeEIsR0FBOEIsQ0FBQyxHQUFHQSxHQUFKLEVBQVNDLEtBQVQsQ0FEM0IsRUFFcEIsRUFGb0IsQ0FBdEI7O0lBS0EsSUFBSSxDQUFDQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUwsYUFBVixDQUFMLEVBQStCO01BQzdCLE1BQU0sSUFBSU0sS0FBSixDQUNILFdBQVUzQixXQUFZLGtEQUF2QixHQUNHLGdDQUErQmdCLElBQUksQ0FBQ0MsU0FBTCxDQUFlSSxhQUFmLENBQThCLEVBRjVELENBQU47SUFJRDtFQUNGOztBQTFEeUQifQ==
@@ -68,6 +68,10 @@ export type RunOptions = {
68
68
  * - name of the script to run
69
69
  */
70
70
  scriptName: string;
71
+ /**
72
+ * - arguments to pass to the script
73
+ */
74
+ extraArgs?: string[] | undefined;
71
75
  };
72
76
  /**
73
77
  * Return value of {@linkcode ExtensionCommand._run }
@@ -366,7 +370,7 @@ export class ExtensionCommand<ExtType extends import("@appium/types").ExtensionT
366
370
  * @param {RunOptions} opts
367
371
  * @return {Promise<RunOutput>}
368
372
  */
369
- _run({ installSpec, scriptName }: RunOptions): Promise<RunOutput>;
373
+ _run({ installSpec, scriptName, extraArgs }: RunOptions): Promise<RunOutput>;
370
374
  }
371
375
  import { console } from "@appium/support";
372
376
  //# sourceMappingURL=extension-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/extension-command.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/extension-command.js"],"names":[],"mappings":"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"}
@@ -479,7 +479,8 @@ class ExtensionCommand {
479
479
 
480
480
  async _run({
481
481
  installSpec,
482
- scriptName
482
+ scriptName,
483
+ extraArgs = []
483
484
  }) {
484
485
  if (!this.config.isInstalled(installSpec)) {
485
486
  throw this._createFatalError(`The ${this.type} "${installSpec}" is not installed`);
@@ -501,7 +502,7 @@ class ExtensionCommand {
501
502
  throw this._createFatalError(`The ${this.type} named '${installSpec}' does not support the script: '${scriptName}'`);
502
503
  }
503
504
 
504
- const runner = new _teen_process.SubProcess(process.execPath, [extScripts[scriptName]], {
505
+ const runner = new _teen_process.SubProcess(process.execPath, [extScripts[scriptName], ...extraArgs], {
505
506
  cwd: this.config.getInstallPath(installSpec)
506
507
  });
507
508
  const output = new _utils.RingBuffer(50);
@@ -531,4 +532,4 @@ class ExtensionCommand {
531
532
  exports.ExtensionCommand = ExtensionCommand;
532
533
  var _default = ExtensionCommand;
533
534
  exports.default = _default;
534
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVUERBVEVfQUxMIiwiTm90VXBkYXRhYmxlRXJyb3IiLCJFcnJvciIsIk5vVXBkYXRlc0F2YWlsYWJsZUVycm9yIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbmZpZyIsImtub3duRXh0ZW5zaW9ucyIsImlzSnNvbk91dHB1dCIsImNvbnN0cnVjdG9yIiwianNvbiIsImxvZyIsImNvbnNvbGUiLCJDbGlDb25zb2xlIiwianNvbk1vZGUiLCJCb29sZWFuIiwidHlwZSIsImV4dGVuc2lvblR5cGUiLCJfY3JlYXRlRmF0YWxFcnJvciIsIm1lc3NhZ2UiLCJkZWNvcmF0ZSIsImV4ZWN1dGUiLCJhcmdzIiwiY21kIiwiXyIsImlzRnVuY3Rpb24iLCJleGVjdXRlQ21kIiwiYmluZCIsImxpc3QiLCJzaG93SW5zdGFsbGVkIiwic2hvd1VwZGF0ZXMiLCJsc01zZyIsImluc3RhbGxlZE5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJrbm93bk5hbWVzIiwiZXh0cyIsInJlZHVjZSIsImFjYyIsIm5hbWUiLCJpbmNsdWRlcyIsImluc3RhbGxlZCIsInBrZ05hbWUiLCJzcGluV2l0aCIsImV4dCIsImRhdGEiLCJ0b1BhaXJzIiwiaW5zdGFsbFR5cGUiLCJJTlNUQUxMX1RZUEVfTlBNIiwidXBkYXRlcyIsImNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlIiwidXBkYXRlVmVyc2lvbiIsInNhZmVVcGRhdGUiLCJ1bnNhZmVVcGRhdGVWZXJzaW9uIiwidW5zYWZlVXBkYXRlIiwidXBUb0RhdGUiLCJsaXN0RGF0YSIsImluc3RhbGxUeHQiLCJncmV5IiwidXBkYXRlVHh0IiwidXBUb0RhdGVUeHQiLCJ1bnNhZmVVcGRhdGVUeHQiLCJpbnN0YWxsU3BlYyIsInZlcnNpb24iLCJ0eXBlVHh0IiwiSU5TVEFMTF9UWVBFX0dJVCIsIklOU1RBTExfVFlQRV9HSVRIVUIiLCJ5ZWxsb3ciLCJJTlNUQUxMX1RZUEVfTE9DQUwiLCJtYWdlbnRhIiwiZ3JlZW4iLCJjeWFuIiwiX2luc3RhbGwiLCJwYWNrYWdlTmFtZSIsImV4dERhdGEiLCJpbnN0YWxsT3B0cyIsInByb2JhYmxlRXh0TmFtZSIsInNwbGl0IiwibGVuZ3RoIiwicmVwbGFjZSIsInBrZ1ZlciIsInBhdGgiLCJpc0Fic29sdXRlIiwicmVzb2x2ZSIsInNwbGl0cyIsIm1zZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc0luc3RhbGxlZCIsImluc3RhbGxWaWFOcG0iLCJleHROYW1lIiwiZXh0TWFuaWZlc3QiLCJlcnJvcnMiLCJ3YXJuaW5ncyIsIkIiLCJhbGwiLCJnZXRQcm9ibGVtcyIsImdldFdhcm5pbmdzIiwiZXJyb3JNYXAiLCJNYXAiLCJ3YXJuaW5nTWFwIiwiZXJyb3JTdW1tYXJpZXMiLCJ3YXJuaW5nU3VtbWFyaWVzIiwiZ2V0VmFsaWRhdGlvblJlc3VsdFN1bW1hcmllcyIsImlzRW1wdHkiLCJqb2luIiwid2FybiIsImFkZEV4dGVuc2lvbiIsImVudiIsImhhc0FwcGl1bURlcGVuZGVuY3kiLCJhcHBpdW1Ib21lIiwicGFja2FnZURpZENoYW5nZSIsImluZm8iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJucG1TcGVjIiwic3BlY01zZyIsInBrZ0pzb25EYXRhIiwibnBtIiwiaW5zdGFsbFBhY2thZ2UiLCJ2YWxpZGF0ZVBhY2thZ2VKc29uIiwiZ2V0RXh0ZW5zaW9uRmllbGRzIiwiZXJyIiwicGtnSnNvbiIsImFwcGl1bSIsInBlZXJEZXBlbmRlbmNpZXMiLCJyZXN1bHQiLCJhcHBpdW1WZXJzaW9uIiwiY3JlYXRlTWlzc2luZ0ZpZWxkRXJyb3IiLCJmaWVsZCIsIlJlZmVyZW5jZUVycm9yIiwidmFsaWRhdGVFeHRlbnNpb25GaWVsZHMiLCJleHRNZXRhZGF0YSIsIl91bmluc3RhbGwiLCJ1bmluc3RhbGxQYWNrYWdlIiwicmVtb3ZlRXh0ZW5zaW9uIiwib2siLCJfdXBkYXRlIiwidW5zYWZlIiwic2hvdWxkVXBkYXRlQWxsIiwiZXh0c1RvVXBkYXRlIiwiZSIsInVwZGF0ZSIsImN1cnJlbnQiLCJ1cGRhdGVWZXIiLCJ1cGRhdGVFeHRlbnNpb24iLCJmcm9tIiwidG8iLCJlcnJvciIsInJlZCIsImdldExhdGVzdFZlcnNpb24iLCJnZXRMYXRlc3RTYWZlVXBncmFkZVZlcnNpb24iLCJ1dGlsIiwiY29tcGFyZVZlcnNpb25zIiwiX3J1biIsInNjcmlwdE5hbWUiLCJleHRDb25maWciLCJzY3JpcHRzIiwiZXh0U2NyaXB0cyIsImlzUGxhaW5PYmplY3QiLCJoYXMiLCJydW5uZXIiLCJTdWJQcm9jZXNzIiwicHJvY2VzcyIsImV4ZWNQYXRoIiwiY3dkIiwiZ2V0SW5zdGFsbFBhdGgiLCJvdXRwdXQiLCJSaW5nQnVmZmVyIiwib24iLCJsaW5lIiwiZW5xdWV1ZSIsInN0YXJ0IiwiZ2V0QnVmZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZXh0ZW5zaW9uLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtucG0sIHV0aWwsIGVudiwgY29uc29sZX0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7c3BpbldpdGgsIFJpbmdCdWZmZXJ9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtTdWJQcm9jZXNzfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHtcbiAgSU5TVEFMTF9UWVBFX05QTSxcbiAgSU5TVEFMTF9UWVBFX0dJVCxcbiAgSU5TVEFMTF9UWVBFX0dJVEhVQixcbiAgSU5TVEFMTF9UWVBFX0xPQ0FMLFxufSBmcm9tICcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQge3BhY2thZ2VEaWRDaGFuZ2V9IGZyb20gJy4uL2V4dGVuc2lvbi9wYWNrYWdlLWNoYW5nZWQnO1xuXG5jb25zdCBVUERBVEVfQUxMID0gJ2luc3RhbGxlZCc7XG5cbmNsYXNzIE5vdFVwZGF0YWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbmNsYXNzIE5vVXBkYXRlc0F2YWlsYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqL1xuY2xhc3MgRXh0ZW5zaW9uQ29tbWFuZCB7XG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBgRHJpdmVyQ29uZmlnYCBvciBgUGx1Z2luQ29uZmlnYCwgZGVwZW5kaW5nIG9uIGBFeHRUeXBlYC5cbiAgICogQHR5cGUge0V4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn1cbiAgICovXG4gIGNvbmZpZztcblxuICAvKipcbiAgICoge0BsaW5rY29kZSBSZWNvcmR9IG9mIG9mZmljaWFsIHBsdWdpbnMgb3IgZHJpdmVycy5cbiAgICogQHR5cGUge0tub3duRXh0ZW5zaW9uczxFeHRUeXBlPn1cbiAgICovXG4gIGtub3duRXh0ZW5zaW9ucztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBjb21tYW5kIG91dHB1dCBoYXMgYmVlbiByZXF1ZXN0ZWQgYXMgSlNPTi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBpc0pzb25PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEV4dGVuc2lvbkNvbW1hbmRcbiAgICogQHBhcmFtIHtFeHRlbnNpb25Db21tYW5kT3B0aW9uczxFeHRUeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZywganNvbn0pIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmxvZyA9IG5ldyBjb25zb2xlLkNsaUNvbnNvbGUoe2pzb25Nb2RlOiBqc29ufSk7XG4gICAgdGhpcy5pc0pzb25PdXRwdXQgPSBCb29sZWFuKGpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIGBkcml2ZXJgIG9yIGBwbHVnaW5gLCBkZXBlbmRpbmcgb24gdGhlIGBFeHRlbnNpb25Db25maWdgLlxuICAgKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmV4dGVuc2lvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBhIG1lc3NhZ2UgYW5kIHJldHVybnMgYW4ge0BsaW5rY29kZSBFcnJvcn0gdG8gdGhyb3cuXG4gICAqXG4gICAqIEZvciBUUyB0byB1bmRlcnN0YW5kIHRoYXQgYSBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0aW9uLCBpdCBtdXN0IGFjdHVhbGx5IHRocm93IGFuIGV4Y2VwdGlvbi0tXG4gICAqIGluIG90aGVyIHdvcmRzLCBfY2FsbGluZ18gYSBmdW5jdGlvbiB3aGljaCBpcyBndWFyYW50ZWVkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpcyBub3QgZW5vdWdoLS1cbiAgICogbm9yIGlzIHNvbWV0aGluZyBsaWtlIGBAcmV0dXJucyB7bmV2ZXJ9YCB3aGljaCBkb2VzIG5vdCBpbXBseSBhIHRocm93biBleGNlcHRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQHJldHVybnMge0Vycm9yfVxuICAgKi9cbiAgX2NyZWF0ZUZhdGFsRXJyb3IobWVzc2FnZSkge1xuICAgIHJldHVybiBuZXcgRXJyb3IodGhpcy5sb2cuZGVjb3JhdGUobWVzc2FnZSwgJ2Vycm9yJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgYSBDTEkgcGFyc2UgYW5kIHJ1biBhbiBleHRlbnNpb24gY29tbWFuZCBiYXNlZCBvbiBpdHMgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIGEga2V5L3ZhbHVlIG9iamVjdCB3aXRoIENMSSBmbGFncyBhbmQgdmFsdWVzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8b2JqZWN0Pn0gdGhlIHJlc3VsdCBvZiB0aGUgc3BlY2lmaWMgY29tbWFuZCB3aGljaCBpcyBleGVjdXRlZFxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZShhcmdzKSB7XG4gICAgY29uc3QgY21kID0gYXJnc1tgJHt0aGlzLnR5cGV9Q29tbWFuZGBdO1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRoaXNbY21kXSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoYENhbm5vdCBoYW5kbGUgJHt0aGlzLnR5cGV9IGNvbW1hbmQgJHtjbWR9YCk7XG4gICAgfVxuICAgIGNvbnN0IGV4ZWN1dGVDbWQgPSB0aGlzW2NtZF0uYmluZCh0aGlzKTtcbiAgICByZXR1cm4gYXdhaXQgZXhlY3V0ZUNtZChhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGV4dGVuc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHtMaXN0T3B0aW9uc30gb3B0c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEV4dGVuc2lvbkxpc3REYXRhPn0gbWFwIG9mIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gZGF0YVxuICAgKi9cbiAgYXN5bmMgbGlzdCh7c2hvd0luc3RhbGxlZCwgc2hvd1VwZGF0ZXN9KSB7XG4gICAgY29uc3QgbHNNc2cgPSBgTGlzdGluZyAke3Nob3dJbnN0YWxsZWQgPyAnaW5zdGFsbGVkJyA6ICdhdmFpbGFibGUnfSAke3RoaXMudHlwZX1zYDtcbiAgICBjb25zdCBpbnN0YWxsZWROYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuICAgIGNvbnN0IGtub3duTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmtub3duRXh0ZW5zaW9ucyk7XG4gICAgY29uc3QgZXh0cyA9IFsuLi5pbnN0YWxsZWROYW1lcywgLi4ua25vd25OYW1lc10ucmVkdWNlKFxuICAgICAgKGFjYywgbmFtZSkgPT4ge1xuICAgICAgICBpZiAoIWFjY1tuYW1lXSkge1xuICAgICAgICAgIGlmIChpbnN0YWxsZWROYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgICAgYWNjW25hbWVdID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW25hbWVdLFxuICAgICAgICAgICAgICBpbnN0YWxsZWQ6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXNob3dJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgIGFjY1tuYW1lXSA9IHtwa2dOYW1lOiB0aGlzLmtub3duRXh0ZW5zaW9uc1tuYW1lXSwgaW5zdGFsbGVkOiBmYWxzZX07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGFjY3VtdWxhdG9yIGNvbnRhaW5zIGVpdGhlciB7QGxpbmtjb2RlIFVuaW5zdGFsbGVkRXh0ZW5zaW9uTElzdERhdGF9IF9vcl9cbiAgICAgICAqIHtAbGlua2NvZGUgSW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGF9IHdpdGhvdXQgdXBncmFkZSBpbmZvcm1hdGlvbiAod2hpY2ggaXMgYWRkZWQgYnkgdGhlIGJlbG93IGNvZGUgYmxvY2spXG4gICAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxQYXJ0aWFsPEluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPnxVbmluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPn1cbiAgICAgICAqLyAoe30pXG4gICAgKTtcblxuICAgIC8vIGlmIHdlIHdhbnQgdG8gc2hvdyB3aGV0aGVyIHVwZGF0ZXMgYXJlIGF2YWlsYWJsZSwgcHV0IHRoYXQgYmVoaW5kIGEgc3Bpbm5lclxuICAgIGF3YWl0IHNwaW5XaXRoKHRoaXMuaXNKc29uT3V0cHV0LCBsc01zZywgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFzaG93VXBkYXRlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtleHQsIGRhdGFdIG9mIF8udG9QYWlycyhleHRzKSkge1xuICAgICAgICBpZiAoIWRhdGEuaW5zdGFsbGVkIHx8IGRhdGEuaW5zdGFsbFR5cGUgIT09IElOU1RBTExfVFlQRV9OUE0pIHtcbiAgICAgICAgICAvLyBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciB1cGRhdGVzIG9uIGV4dHMgdGhhdCBhcmVuJ3QgaW5zdGFsbGVkXG4gICAgICAgICAgLy8gYWxzbyBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciB1cGRhdGVzIG9uIG5vbi1ucG0gZXh0c1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZXMgPSBhd2FpdCB0aGlzLmNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlKGV4dCk7XG4gICAgICAgIGRhdGEudXBkYXRlVmVyc2lvbiA9IHVwZGF0ZXMuc2FmZVVwZGF0ZTtcbiAgICAgICAgZGF0YS51bnNhZmVVcGRhdGVWZXJzaW9uID0gdXBkYXRlcy51bnNhZmVVcGRhdGU7XG4gICAgICAgIGRhdGEudXBUb0RhdGUgPSB1cGRhdGVzLnNhZmVVcGRhdGUgPT09IG51bGwgJiYgdXBkYXRlcy51bnNhZmVVcGRhdGUgPT09IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBsaXN0RGF0YSA9IC8qKiBAdHlwZSB7RXh0ZW5zaW9uTGlzdERhdGF9ICovIChleHRzKTtcblxuICAgIC8vIGlmIHdlJ3JlIGp1c3QgZ2V0dGluZyB0aGUgZGF0YSwgc2hvcnQgY2lyY3VpdCByZXR1cm4gaGVyZSBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueVxuICAgIC8vIGZvcm1hdHRpbmcgbG9naWNcbiAgICBpZiAodGhpcy5pc0pzb25PdXRwdXQpIHtcbiAgICAgIHJldHVybiBsaXN0RGF0YTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBkYXRhXSBvZiBfLnRvUGFpcnMobGlzdERhdGEpKSB7XG4gICAgICBsZXQgaW5zdGFsbFR4dCA9ICcgW25vdCBpbnN0YWxsZWRdJy5ncmV5O1xuICAgICAgbGV0IHVwZGF0ZVR4dCA9ICcnO1xuICAgICAgbGV0IHVwVG9EYXRlVHh0ID0gJyc7XG4gICAgICBsZXQgdW5zYWZlVXBkYXRlVHh0ID0gJyc7XG4gICAgICBpZiAoZGF0YS5pbnN0YWxsZWQpIHtcbiAgICAgICAgY29uc3Qge2luc3RhbGxUeXBlLCBpbnN0YWxsU3BlYywgdXBkYXRlVmVyc2lvbiwgdW5zYWZlVXBkYXRlVmVyc2lvbiwgdmVyc2lvbiwgdXBUb0RhdGV9ID1cbiAgICAgICAgICBkYXRhO1xuICAgICAgICBsZXQgdHlwZVR4dDtcbiAgICAgICAgc3dpdGNoIChpbnN0YWxsVHlwZSkge1xuICAgICAgICAgIGNhc2UgSU5TVEFMTF9UWVBFX0dJVDpcbiAgICAgICAgICBjYXNlIElOU1RBTExfVFlQRV9HSVRIVUI6XG4gICAgICAgICAgICB0eXBlVHh0ID0gYChjbG9uZWQgZnJvbSAke2luc3RhbGxTcGVjfSlgLnllbGxvdztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgSU5TVEFMTF9UWVBFX0xPQ0FMOlxuICAgICAgICAgICAgdHlwZVR4dCA9IGAobGlua2VkIGZyb20gJHtpbnN0YWxsU3BlY30pYC5tYWdlbnRhO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHR5cGVUeHQgPSAnKE5QTSknO1xuICAgICAgICB9XG4gICAgICAgIGluc3RhbGxUeHQgPSBgQCR7dmVyc2lvbi55ZWxsb3d9ICR7KCdbaW5zdGFsbGVkICcgKyB0eXBlVHh0ICsgJ10nKS5ncmVlbn1gO1xuXG4gICAgICAgIGlmIChzaG93VXBkYXRlcykge1xuICAgICAgICAgIGlmICh1cGRhdGVWZXJzaW9uKSB7XG4gICAgICAgICAgICB1cGRhdGVUeHQgPSBgIFske3VwZGF0ZVZlcnNpb259IGF2YWlsYWJsZV1gLm1hZ2VudGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1cFRvRGF0ZSkge1xuICAgICAgICAgICAgdXBUb0RhdGVUeHQgPSBgIFtVcCB0byBkYXRlXWAuZ3JlZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1bnNhZmVVcGRhdGVWZXJzaW9uKSB7XG4gICAgICAgICAgICB1bnNhZmVVcGRhdGVUeHQgPSBgIFske3Vuc2FmZVVwZGF0ZVZlcnNpb259IGF2YWlsYWJsZSAocG90ZW50aWFsbHkgdW5zYWZlKV1gLmN5YW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nLmxvZyhgLSAke25hbWUueWVsbG93fSR7aW5zdGFsbFR4dH0ke3VwZGF0ZVR4dH0ke3VwVG9EYXRlVHh0fSR7dW5zYWZlVXBkYXRlVHh0fWApO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0RGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxsIGFuIGV4dGVuc2lvblxuICAgKlxuICAgKiBAcGFyYW0ge0luc3RhbGxBcmdzfSBhcmdzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RXh0UmVjb3JkPEV4dFR5cGU+Pn0gbWFwIG9mIGFsbCBpbnN0YWxsZWQgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBkYXRhXG4gICAqL1xuICBhc3luYyBfaW5zdGFsbCh7aW5zdGFsbFNwZWMsIGluc3RhbGxUeXBlLCBwYWNrYWdlTmFtZX0pIHtcbiAgICAvKiogQHR5cGUge0V4dGVuc2lvbkZpZWxkczxFeHRUeXBlPn0gKi9cbiAgICBsZXQgZXh0RGF0YTtcblxuICAgIGlmIChwYWNrYWdlTmFtZSAmJiBbSU5TVEFMTF9UWVBFX0xPQ0FMLCBJTlNUQUxMX1RZUEVfTlBNXS5pbmNsdWRlcyhpbnN0YWxsVHlwZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoYFdoZW4gdXNpbmcgLS1zb3VyY2U9JHtpbnN0YWxsVHlwZX0sIGNhbm5vdCBhbHNvIHVzZSAtLXBhY2thZ2VgKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VOYW1lICYmIFtJTlNUQUxMX1RZUEVfR0lULCBJTlNUQUxMX1RZUEVfR0lUSFVCXS5pbmNsdWRlcyhpbnN0YWxsVHlwZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoYFdoZW4gdXNpbmcgLS1zb3VyY2U9JHtpbnN0YWxsVHlwZX0sIG11c3QgYWxzbyB1c2UgLS1wYWNrYWdlYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHR5cGUge0luc3RhbGxWaWFOcG1BcmdzfVxuICAgICAqL1xuICAgIGxldCBpbnN0YWxsT3B0cztcblxuICAgIC8qKlxuICAgICAqIFRoZSBwcm9iYWJsZSAoPykgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGRlcml2ZWQgZnJvbSB0aGUgaW5zdGFsbCBzcGVjLlxuICAgICAqXG4gICAgICogSWYgdXNpbmcgYSBsb2NhbCBpbnN0YWxsIHR5cGUsIHRoaXMgd2lsbCByZW1haW4gZW1wdHkuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsZXQgcHJvYmFibGVFeHROYW1lID0gJyc7XG5cbiAgICAvLyBkZXBlbmRpbmcgb24gYGluc3RhbGxUeXBlYCwgYnVpbGQgdGhlIG9wdGlvbnMgdG8gcGFzcyBpbnRvIGBpbnN0YWxsVmlhTnBtYFxuICAgIGlmIChpbnN0YWxsVHlwZSA9PT0gSU5TVEFMTF9UWVBFX0dJVEhVQikge1xuICAgICAgaWYgKGluc3RhbGxTcGVjLnNwbGl0KCcvJykubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoXG4gICAgICAgICAgYEdpdGh1YiAke3RoaXMudHlwZX0gc3BlYyAke2luc3RhbGxTcGVjfSBhcHBlYXJlZCB0byBiZSBpbnZhbGlkOyBgICtcbiAgICAgICAgICAgICdpdCBzaG91bGQgYmUgb2YgdGhlIGZvcm0gPG9yZz4vPHJlcG8+J1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaW5zdGFsbE9wdHMgPSB7XG4gICAgICAgIGluc3RhbGxTcGVjLFxuICAgICAgICBwa2dOYW1lOiAvKiogQHR5cGUge3N0cmluZ30gKi8gKHBhY2thZ2VOYW1lKSxcbiAgICAgIH07XG4gICAgICBwcm9iYWJsZUV4dE5hbWUgPSBpbnN0YWxsU3BlYztcbiAgICB9IGVsc2UgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfR0lUKSB7XG4gICAgICAvLyBnaXQgdXJscyBjYW4gaGF2ZSAnLmdpdCcgYXQgdGhlIGVuZCwgYnV0IHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBhbmQgd291bGQgY29tcGxpY2F0ZSB0aGVcbiAgICAgIC8vIHdheSB3ZSBkb3dubG9hZCBhbmQgbmFtZSBkaXJlY3Rvcmllcywgc28gd2UgY2FuIGp1c3QgcmVtb3ZlIGl0XG4gICAgICBpbnN0YWxsU3BlYyA9IGluc3RhbGxTcGVjLnJlcGxhY2UoL1xcLmdpdCQvLCAnJyk7XG4gICAgICBpbnN0YWxsT3B0cyA9IHtcbiAgICAgICAgaW5zdGFsbFNwZWMsXG4gICAgICAgIHBrZ05hbWU6IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocGFja2FnZU5hbWUpLFxuICAgICAgfTtcbiAgICAgIHByb2JhYmxlRXh0TmFtZSA9IGluc3RhbGxTcGVjO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGtnTmFtZSwgcGtnVmVyO1xuICAgICAgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfTE9DQUwpIHtcbiAgICAgICAgcGtnTmFtZSA9IHBhdGguaXNBYnNvbHV0ZShpbnN0YWxsU3BlYykgPyBpbnN0YWxsU3BlYyA6IHBhdGgucmVzb2x2ZShpbnN0YWxsU3BlYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBhdCB0aGlzIHBvaW50IHdlIGhhdmUgZWl0aGVyIGFuIG5wbSBwYWNrYWdlIG9yIGFuIGFwcGl1bSB2ZXJpZmllZCBleHRlbnNpb25cbiAgICAgICAgLy8gbmFtZSBvciBhIGxvY2FsIHBhdGguIGJvdGggb2Ygd2hpY2ggd2lsbCBiZSBpbnN0YWxsZWQgdmlhIG5wbS5cbiAgICAgICAgLy8gZXh0ZW5zaW9ucyBpbnN0YWxsZWQgdmlhIG5wbSBjYW4gaW5jbHVkZSB2ZXJzaW9ucyBvciB0YWdzIGFmdGVyIHRoZSAnQCdcbiAgICAgICAgLy8gc2lnbiwgc28gY2hlY2sgZm9yIHRoYXQuIFdlIGFsc28gbmVlZCB0byBiZSBjYXJlZnVsIHRoYXQgcGFja2FnZSBuYW1lcyB0aGVtc2VsdmVzIGNhblxuICAgICAgICAvLyBjb250YWluIHRoZSAnQCcgc3ltYm9sLCBhcyBpbiBgbnBtIGluc3RhbGwgQGFwcGl1bS9mYWtlLWRyaXZlckAxLjIuMGBcbiAgICAgICAgbGV0IG5hbWU7XG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IGluc3RhbGxTcGVjLnNwbGl0KCdAJyk7XG4gICAgICAgIGlmIChpbnN0YWxsU3BlY1swXSA9PT0gJ0AnKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIGFuIG5wbSBvcmcgaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2UgbmFtZVxuICAgICAgICAgIFtuYW1lLCBwa2dWZXJdID0gW2BAJHtzcGxpdHNbMV19YCwgc3BsaXRzWzJdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBjYXNlIHdpdGhvdXQgYW4gbnBtIG9yZ1xuICAgICAgICAgIFtuYW1lLCBwa2dWZXJdID0gc3BsaXRzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfTlBNKSB7XG4gICAgICAgICAgLy8gaWYgd2UncmUgaW5zdGFsbGluZyBhIG5hbWVkIHBhY2thZ2UgZnJvbSBucG0sIHdlIGRvbid0IG5lZWQgdG8gY2hlY2tcbiAgICAgICAgICAvLyBhZ2FpbnN0IHRoZSBhcHBpdW0gZXh0ZW5zaW9uIGxpc3Q7IGp1c3QgdXNlIHRoZSBpbnN0YWxsU3BlYyBhcyBpc1xuICAgICAgICAgIHBrZ05hbWUgPSBuYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlmIHdlJ3JlIGluc3RhbGxpbmcgYSBuYW1lZCBhcHBpdW0gZHJpdmVyIChsaWtlICd4Y3VpdGVzdCcpIHdlIG5lZWQgdG9cbiAgICAgICAgICAvLyBkZXJlZmVyZW5jZSB0aGUgYWN0dWFsIG5wbSBwYWNrYWdlICgnYXBwaXVwbS14Y3VpdGVzdC1kcml2ZXInKSwgc29cbiAgICAgICAgICAvLyBjaGVjayBpdCBleGlzdHMgYW5kIGdldCB0aGUgY29ycmVjdCBwYWNrYWdlXG4gICAgICAgICAgY29uc3Qga25vd25OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMua25vd25FeHRlbnNpb25zKTtcbiAgICAgICAgICBpZiAoIV8uaW5jbHVkZXMoa25vd25OYW1lcywgbmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICAgIGBDb3VsZCBub3QgcmVzb2x2ZSAke3RoaXMudHlwZX07IGFyZSB5b3Ugc3VyZSBpdCdzIGluIHRoZSBsaXN0IGAgK1xuICAgICAgICAgICAgICBgb2Ygc3VwcG9ydGVkICR7dGhpcy50eXBlfXM/ICR7SlNPTi5zdHJpbmdpZnkoa25vd25OYW1lcyl9YDtcbiAgICAgICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IobXNnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvYmFibGVFeHROYW1lID0gbmFtZTtcbiAgICAgICAgICBwa2dOYW1lID0gdGhpcy5rbm93bkV4dGVuc2lvbnNbbmFtZV07XG4gICAgICAgICAgLy8gZ2l2ZW4gdGhhdCB3ZSdsbCB1c2UgdGhlIGluc3RhbGwgdHlwZSBpbiB0aGUgZHJpdmVyIGpzb24sIHN0b3JlIGl0IGFzXG4gICAgICAgICAgLy8gJ25wbScgbm93XG4gICAgICAgICAgaW5zdGFsbFR5cGUgPSBJTlNUQUxMX1RZUEVfTlBNO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpbnN0YWxsT3B0cyA9IHtpbnN0YWxsU3BlYywgcGtnTmFtZSwgcGtnVmVyfTtcbiAgICB9XG5cbiAgICAvLyBmYWlsIGZhc3QgaGVyZSBpZiB3ZSBjYW5cbiAgICBpZiAocHJvYmFibGVFeHROYW1lICYmIHRoaXMuY29uZmlnLmlzSW5zdGFsbGVkKHByb2JhYmxlRXh0TmFtZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoXG4gICAgICAgIGBBICR7dGhpcy50eXBlfSBuYW1lZCBcIiR7cHJvYmFibGVFeHROYW1lfVwiIGlzIGFscmVhZHkgaW5zdGFsbGVkLiBgICtcbiAgICAgICAgICBgRGlkIHlvdSBtZWFuIHRvIHVwZGF0ZT8gUnVuIFwiYXBwaXVtICR7dGhpcy50eXBlfSB1cGRhdGVcIi4gU2VlIGAgK1xuICAgICAgICAgIGBpbnN0YWxsZWQgJHt0aGlzLnR5cGV9cyB3aXRoIFwiYXBwaXVtICR7dGhpcy50eXBlfSBsaXN0IC0taW5zdGFsbGVkXCIuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBleHREYXRhID0gYXdhaXQgdGhpcy5pbnN0YWxsVmlhTnBtKGluc3RhbGxPcHRzKTtcblxuICAgIC8vIHRoaXMgX3Nob3VsZF8gYmUgdGhlIHNhbWUgYXMgYHByb2JhYmx5RXh0TmFtZWAgYXMgdGhlIG9uZSBkZXJpdmVkIGFib3ZlIHVubGVzc1xuICAgIC8vIGluc3RhbGwgdHlwZSBpcyBsb2NhbC5cbiAgICBjb25zdCBleHROYW1lID0gZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke3RoaXMudHlwZX1OYW1lYCldO1xuXG4gICAgLy8gY2hlY2sgX2Egc2Vjb25kIHRpbWVfIHdpdGggdGhlIG1vcmUtYWNjdXJhdGUgZXh0TmFtZVxuICAgIGlmICh0aGlzLmNvbmZpZy5pc0luc3RhbGxlZChleHROYW1lKSkge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcihcbiAgICAgICAgYEEgJHt0aGlzLnR5cGV9IG5hbWVkIFwiJHtleHROYW1lfVwiIGlzIGFscmVhZHkgaW5zdGFsbGVkLiBgICtcbiAgICAgICAgICBgRGlkIHlvdSBtZWFuIHRvIHVwZGF0ZT8gUnVuIFwiYXBwaXVtICR7dGhpcy50eXBlfSB1cGRhdGVcIi4gU2VlIGAgK1xuICAgICAgICAgIGBpbnN0YWxsZWQgJHt0aGlzLnR5cGV9cyB3aXRoIFwiYXBwaXVtICR7dGhpcy50eXBlfSBsaXN0IC0taW5zdGFsbGVkXCIuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGZpZWxkIGRvZXMgbm90IGV4aXN0IGFzIHN1Y2ggaW4gdGhlIG1hbmlmZXN0IChpdCdzIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1lIGluc3RlYWQpXG4gICAgLy8gc28gdGhhdCdzIHdoeSBpdCdzIGJlaW5nIHJlbW92ZWQgaGVyZS5cbiAgICBkZWxldGUgZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke3RoaXMudHlwZX1OYW1lYCldO1xuXG4gICAgLyoqIEB0eXBlIHtFeHRNYW5pZmVzdDxFeHRUeXBlPn0gKi9cbiAgICBjb25zdCBleHRNYW5pZmVzdCA9IHsuLi5leHREYXRhLCBpbnN0YWxsVHlwZSwgaW5zdGFsbFNwZWN9O1xuICAgIGNvbnN0IFtlcnJvcnMsIHdhcm5pbmdzXSA9IGF3YWl0IEIuYWxsKFtcbiAgICAgIHRoaXMuY29uZmlnLmdldFByb2JsZW1zKGV4dE5hbWUsIGV4dE1hbmlmZXN0KSxcbiAgICAgIHRoaXMuY29uZmlnLmdldFdhcm5pbmdzKGV4dE5hbWUsIGV4dE1hbmlmZXN0KSxcbiAgICBdKTtcbiAgICBjb25zdCBlcnJvck1hcCA9IG5ldyBNYXAoW1tleHROYW1lLCBlcnJvcnNdXSk7XG4gICAgY29uc3Qgd2FybmluZ01hcCA9IG5ldyBNYXAoW1tleHROYW1lLCB3YXJuaW5nc11dKTtcbiAgICBjb25zdCB7ZXJyb3JTdW1tYXJpZXMsIHdhcm5pbmdTdW1tYXJpZXN9ID0gdGhpcy5jb25maWcuZ2V0VmFsaWRhdGlvblJlc3VsdFN1bW1hcmllcyhcbiAgICAgIGVycm9yTWFwLFxuICAgICAgd2FybmluZ01hcFxuICAgICk7XG5cbiAgICBpZiAoIV8uaXNFbXB0eShlcnJvclN1bW1hcmllcykpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoZXJyb3JTdW1tYXJpZXMuam9pbignXFxuJykpO1xuICAgIH1cblxuICAgIC8vIG5vdGUgdGhhdCB3ZSB3b24ndCBzaG93IGFueSB3YXJuaW5ncyBpZiB0aGVyZSB3ZXJlIGVycm9ycy5cbiAgICBpZiAoIV8uaXNFbXB0eSh3YXJuaW5nU3VtbWFyaWVzKSkge1xuICAgICAgdGhpcy5sb2cud2Fybih3YXJuaW5nU3VtbWFyaWVzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5hZGRFeHRlbnNpb24oZXh0TmFtZSwgZXh0TWFuaWZlc3QpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBpZiB3ZSd2ZSBjaGFuZ2VkIHRoZSBsb2NhbCBgcGFja2FnZS5qc29uYFxuICAgIGlmIChhd2FpdCBlbnYuaGFzQXBwaXVtRGVwZW5kZW5jeSh0aGlzLmNvbmZpZy5hcHBpdW1Ib21lKSkge1xuICAgICAgYXdhaXQgcGFja2FnZURpZENoYW5nZSh0aGlzLmNvbmZpZy5hcHBpdW1Ib21lKTtcbiAgICB9XG5cbiAgICAvLyBsb2cgaW5mbyBmb3IgdGhlIHVzZXJcbiAgICB0aGlzLmxvZy5pbmZvKHRoaXMuZ2V0UG9zdEluc3RhbGxUZXh0KHtleHROYW1lLCBleHREYXRhfSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnM7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbCBhbiBleHRlbnNpb24gdmlhIE5QTVxuICAgKlxuICAgKiBAcGFyYW0ge0luc3RhbGxWaWFOcG1BcmdzfSBhcmdzXG4gICAqL1xuICBhc3luYyBpbnN0YWxsVmlhTnBtKHtpbnN0YWxsU3BlYywgcGtnTmFtZSwgcGtnVmVyfSkge1xuICAgIGNvbnN0IG5wbVNwZWMgPSBgJHtwa2dOYW1lfSR7cGtnVmVyID8gJ0AnICsgcGtnVmVyIDogJyd9YDtcbiAgICBjb25zdCBzcGVjTXNnID0gbnBtU3BlYyA9PT0gaW5zdGFsbFNwZWMgPyAnJyA6IGAgdXNpbmcgTlBNIGluc3RhbGwgc3BlYyAnJHtucG1TcGVjfSdgO1xuICAgIGNvbnN0IG1zZyA9IGBJbnN0YWxsaW5nICcke2luc3RhbGxTcGVjfScke3NwZWNNc2d9YDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGtnSnNvbkRhdGEgPSBhd2FpdCBzcGluV2l0aCh0aGlzLmlzSnNvbk91dHB1dCwgbXNnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBrZ0pzb25EYXRhID0gYXdhaXQgbnBtLmluc3RhbGxQYWNrYWdlKHRoaXMuY29uZmlnLmFwcGl1bUhvbWUsIHBrZ05hbWUsIHtcbiAgICAgICAgICBwa2dWZXIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUGFja2FnZUpzb24ocGtnSnNvbkRhdGEsIGluc3RhbGxTcGVjKTtcbiAgICAgICAgcmV0dXJuIHBrZ0pzb25EYXRhO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0aGlzLmdldEV4dGVuc2lvbkZpZWxkcyhwa2dKc29uRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKGBFbmNvdW50ZXJlZCBhbiBlcnJvciB3aGVuIGluc3RhbGxpbmcgcGFja2FnZTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0ZXh0IHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYWZ0ZXIgYW4gZXh0ZW5zaW9uIGhhcyBiZWVuIGluc3RhbGxlZC4gVGhpc1xuICAgKiBpcyBkZXNpZ25lZCB0byBiZSBvdmVycmlkZGVuIGJ5IGRyaXZlcnMvcGx1Z2lucyB3aXRoIHRoZWlyIG93biBwYXJ0aWN1bGFyIHRleHQuXG4gICAqXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uQXJnc30gYXJnc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldFBvc3RJbnN0YWxsVGV4dChhcmdzKSB7XG4gICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBmaW5hbCBjbGFzcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgYW4gTlBNIG1vZHVsZSdzIHBhY2thZ2UuanNvbiBhbmQgZXh0cmFjdCBBcHBpdW0gZHJpdmVyIGluZm9ybWF0aW9uIGZyb20gYSBzcGVjaWFsXG4gICAqICdhcHBpdW0nIGZpZWxkIGluIHRoZSBKU09OIGRhdGEuIFdlIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiB0byBlLmcuIGRldGVybWluZSB3aGljaCBjbGFzcyB0b1xuICAgKiBsb2FkIGFzIHRoZSBtYWluIGRyaXZlciBjbGFzcywgb3IgdG8gYmUgYWJsZSB0byBkZXRlY3QgaW5jb21wYXRpYmlsaXRpZXMgYmV0d2VlbiBkcml2ZXIgYW5kXG4gICAqIGFwcGl1bSB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn0gcGtnSnNvbiAtIHRoZSBwYWNrYWdlLmpzb24gZGF0YSBmb3IgYSBkcml2ZXIgbW9kdWxlLCBhcyBpZiBpdCBoYWQgYmVlbiBzdHJhaWdodGZvcndhcmRseSAncmVxdWlyZSdkXG4gICAqIEByZXR1cm5zIHtFeHRlbnNpb25GaWVsZHM8RXh0VHlwZT59XG4gICAqL1xuICBnZXRFeHRlbnNpb25GaWVsZHMocGtnSnNvbikge1xuICAgIGNvbnN0IHthcHBpdW0sIG5hbWUsIHZlcnNpb24sIHBlZXJEZXBlbmRlbmNpZXN9ID0gcGtnSnNvbjtcblxuICAgIC8qKiBAdHlwZSB7dW5rbm93bn0gKi9cbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAuLi5hcHBpdW0sXG4gICAgICBwa2dOYW1lOiBuYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGFwcGl1bVZlcnNpb246IHBlZXJEZXBlbmRlbmNpZXM/LmFwcGl1bSxcbiAgICB9O1xuICAgIHJldHVybiAvKiogQHR5cGUge0V4dGVuc2lvbkZpZWxkczxFeHRUeXBlPn0gKi8gKHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBfcmVxdWlyZWRfIHJvb3QgZmllbGRzIG9mIGFuIGV4dGVuc2lvbidzIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gICAqXG4gICAqIFRoZXNlIHJlcXVpcmVkIGZpZWxkcyBhcmU6XG4gICAqIC0gYG5hbWVgXG4gICAqIC0gYHZlcnNpb25gXG4gICAqIC0gYGFwcGl1bWBcbiAgICogQHBhcmFtIHtpbXBvcnQoJ3R5cGUtZmVzdCcpLlBhY2thZ2VKc29ufSBwa2dKc29uIC0gYHBhY2thZ2UuanNvbmAgb2YgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIEV4dGVuc2lvbiBuYW1lL3NwZWNcbiAgICogQHRocm93cyB7UmVmZXJlbmNlRXJyb3J9IElmIGBwYWNrYWdlLmpzb25gIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBmaWVsZFxuICAgKiBAcmV0dXJucyB7cGtnSnNvbiBpcyBFeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn1cbiAgICovXG4gIHZhbGlkYXRlUGFja2FnZUpzb24ocGtnSnNvbiwgaW5zdGFsbFNwZWMpIHtcbiAgICBjb25zdCB7YXBwaXVtLCBuYW1lLCB2ZXJzaW9ufSA9IC8qKiBAdHlwZSB7RXh0UGFja2FnZUpzb248RXh0VHlwZT59ICovIChwa2dKc29uKTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkXG4gICAgICogQHJldHVybnMge1JlZmVyZW5jZUVycm9yfVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZU1pc3NpbmdGaWVsZEVycm9yID0gKGZpZWxkKSA9PlxuICAgICAgbmV3IFJlZmVyZW5jZUVycm9yKFxuICAgICAgICBgJHt0aGlzLnR5cGV9IFwiJHtpbnN0YWxsU3BlY31cIiBpbnZhbGlkOyBtaXNzaW5nIGEgXFxgJHtmaWVsZH1cXGAgZmllbGQgb2YgaXRzIFxcYHBhY2thZ2UuanNvblxcYGBcbiAgICAgICk7XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdGaWVsZEVycm9yKCduYW1lJyk7XG4gICAgfVxuICAgIGlmICghdmVyc2lvbikge1xuICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0ZpZWxkRXJyb3IoJ3ZlcnNpb24nKTtcbiAgICB9XG4gICAgaWYgKCFhcHBpdW0pIHtcbiAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdGaWVsZEVycm9yKCdhcHBpdW0nKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzKGFwcGl1bSwgaW5zdGFsbFNwZWMpO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGFueSBgcGFja2FnZS5qc29uYCBmaWVsZHMgd2hpY2ggYSBwYXJ0aWN1bGFyIHR5cGUgb2YgZXh0ZW5zaW9uIHJlcXVpcmVzLCB2YWxpZGF0ZSB0aGVcbiAgICogcHJlc2VuY2UgYW5kIGZvcm0gb2YgdGhvc2UgZmllbGRzIG9uIHRoZSBgcGFja2FnZS5qc29uYCBkYXRhLCB0aHJvd2luZyBhbiBlcnJvciBpZiBhbnl0aGluZyBpc1xuICAgKiBhbWlzcy5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRNZXRhZGF0YTxFeHRUeXBlPn0gZXh0TWV0YWRhdGEgLSB0aGUgZGF0YSBpbiB0aGUgXCJhcHBpdW1cIiBmaWVsZCBvZiBgcGFja2FnZS5qc29uYCBmb3IgYW4gZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIEV4dGVuc2lvbiBuYW1lL3NwZWNcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyhleHRNZXRhZGF0YSwgaW5zdGFsbFNwZWMpIHtcbiAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKCdNdXN0IGJlIGltcGxlbWVudGVkIGluIGZpbmFsIGNsYXNzJyk7XG4gIH1cblxuICAvKipcbiAgICogVW5pbnN0YWxsIGFuIGV4dGVuc2lvbi5cbiAgICpcbiAgICogRmlyc3QgdHJpZXMgdG8gZG8gdGhpcyB2aWEgYG5wbSB1bmluc3RhbGxgLCBidXQgaWYgdGhhdCBmYWlscywganVzdCBgcm0gLXJmYCdzIHRoZSBleHRlbnNpb24gZGlyLlxuICAgKlxuICAgKiBXaWxsIG9ubHkgcmVtb3ZlIHRoZSBleHRlbnNpb24gZnJvbSB0aGUgbWFuaWZlc3QgaWYgaXQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VW5pbnN0YWxsT3B0c30gb3B0c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEV4dFJlY29yZDxFeHRUeXBlPj59IG1hcCBvZiBhbGwgaW5zdGFsbGVkIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gZGF0YSAod2l0aG91dCB0aGUgZXh0ZW5zaW9uIGp1c3QgdW5pbnN0YWxsZWQpXG4gICAqL1xuICBhc3luYyBfdW5pbnN0YWxsKHtpbnN0YWxsU3BlY30pIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmlzSW5zdGFsbGVkKGluc3RhbGxTcGVjKSkge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcihcbiAgICAgICAgYENhbid0IHVuaW5zdGFsbCAke3RoaXMudHlwZX0gJyR7aW5zdGFsbFNwZWN9JzsgaXQgaXMgbm90IGluc3RhbGxlZGBcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHBrZ05hbWUgPSB0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW2luc3RhbGxTcGVjXS5wa2dOYW1lO1xuICAgIGF3YWl0IG5wbS51bmluc3RhbGxQYWNrYWdlKHRoaXMuY29uZmlnLmFwcGl1bUhvbWUsIHBrZ05hbWUpO1xuICAgIGF3YWl0IHRoaXMuY29uZmlnLnJlbW92ZUV4dGVuc2lvbihpbnN0YWxsU3BlYyk7XG4gICAgdGhpcy5sb2cub2soYFN1Y2Nlc3NmdWxseSB1bmluc3RhbGxlZCAke3RoaXMudHlwZX0gJyR7aW5zdGFsbFNwZWN9J2AuZ3JlZW4pO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gdXBkYXRlIG9uZSBvciBtb3JlIGRyaXZlcnMgdXNpbmcgTlBNXG4gICAqXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uVXBkYXRlT3B0c30gdXBkYXRlU3BlY1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEV4dGVuc2lvblVwZGF0ZVJlc3VsdD59XG4gICAqL1xuICBhc3luYyBfdXBkYXRlKHtpbnN0YWxsU3BlYywgdW5zYWZlfSkge1xuICAgIGNvbnN0IHNob3VsZFVwZGF0ZUFsbCA9IGluc3RhbGxTcGVjID09PSBVUERBVEVfQUxMO1xuICAgIC8vIGlmIHdlJ3JlIHNwZWNpZmljYWxseSByZXF1ZXN0aW5nIGFuIHVwZGF0ZSBmb3IgYW4gZXh0ZW5zaW9uLCBtYWtlIHN1cmUgaXQncyBpbnN0YWxsZWRcbiAgICBpZiAoIXNob3VsZFVwZGF0ZUFsbCAmJiAhdGhpcy5jb25maWcuaXNJbnN0YWxsZWQoaW5zdGFsbFNwZWMpKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKFxuICAgICAgICBgVGhlICR7dGhpcy50eXBlfSBcIiR7aW5zdGFsbFNwZWN9XCIgd2FzIG5vdCBpbnN0YWxsZWQsIHNvIGNhbid0IGJlIHVwZGF0ZWRgXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBleHRzVG9VcGRhdGUgPSBzaG91bGRVcGRhdGVBbGxcbiAgICAgID8gT2JqZWN0LmtleXModGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgIDogW2luc3RhbGxTcGVjXTtcblxuICAgIC8vICdlcnJvcnMnIHdpbGwgaGF2ZSBleHQgbmFtZXMgYXMga2V5cyBhbmQgZXJyb3Igb2JqZWN0cyBhcyB2YWx1ZXNcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsRXJyb3I+fSAqL1xuICAgIGNvbnN0IGVycm9ycyA9IHt9O1xuXG4gICAgLy8gJ3VwZGF0ZXMnIHdpbGwgaGF2ZSBleHQgbmFtZXMgYXMga2V5cyBhbmQgdXBkYXRlIG9iamVjdHMgYXMgdmFsdWVzLCB3aGVyZSBhbiB1cGRhdGVcbiAgICAvLyBvYmplY3QgaXMgb2YgdGhlIGZvcm0ge2Zyb206IHZlcnNpb25TdHJpbmcsIHRvOiB2ZXJzaW9uU3RyaW5nfVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxVcGRhdGVSZXBvcnQ+fSAqL1xuICAgIGNvbnN0IHVwZGF0ZXMgPSB7fTtcblxuICAgIGZvciAoY29uc3QgZSBvZiBleHRzVG9VcGRhdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNwaW5XaXRoKHRoaXMuaXNKc29uT3V0cHV0LCBgQ2hlY2tpbmcgaWYgJHt0aGlzLnR5cGV9ICcke2V9JyBpcyB1cGRhdGFibGVgLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZV0uaW5zdGFsbFR5cGUgIT09IElOU1RBTExfVFlQRV9OUE0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RVcGRhdGFibGVFcnJvcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZSA9IGF3YWl0IHNwaW5XaXRoKFxuICAgICAgICAgIHRoaXMuaXNKc29uT3V0cHV0LFxuICAgICAgICAgIGBDaGVja2luZyBpZiAke3RoaXMudHlwZX0gJyR7ZX0nIG5lZWRzIGFuIHVwZGF0ZWAsXG4gICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgdGhpcy5jaGVja0ZvckV4dGVuc2lvblVwZGF0ZShlKTtcbiAgICAgICAgICAgIGlmICghKHVwZGF0ZS5zYWZlVXBkYXRlIHx8IHVwZGF0ZS51bnNhZmVVcGRhdGUpKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBOb1VwZGF0ZXNBdmFpbGFibGVFcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGlmICghdW5zYWZlICYmICF1cGRhdGUuc2FmZVVwZGF0ZSkge1xuICAgICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoXG4gICAgICAgICAgICBgVGhlICR7dGhpcy50eXBlfSAnJHtlfScgaGFzIGEgbWFqb3IgcmV2aXNpb24gdXBkYXRlIGAgK1xuICAgICAgICAgICAgICBgKCR7dXBkYXRlLmN1cnJlbnR9ID0+ICR7dXBkYXRlLnVuc2FmZVVwZGF0ZX0pLCB3aGljaCBjb3VsZCBpbmNsdWRlIGAgK1xuICAgICAgICAgICAgICBgYnJlYWtpbmcgY2hhbmdlcy4gSWYgeW91IHdhbnQgdG8gYXBwbHkgdGhpcyB1cGRhdGUsIHJlLXJ1biB3aXRoIC0tdW5zYWZlYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXBkYXRlVmVyID0gdW5zYWZlICYmIHVwZGF0ZS51bnNhZmVVcGRhdGUgPyB1cGRhdGUudW5zYWZlVXBkYXRlIDogdXBkYXRlLnNhZmVVcGRhdGU7XG4gICAgICAgIGF3YWl0IHNwaW5XaXRoKFxuICAgICAgICAgIHRoaXMuaXNKc29uT3V0cHV0LFxuICAgICAgICAgIGBVcGRhdGluZyBkcml2ZXIgJyR7ZX0nIGZyb20gJHt1cGRhdGUuY3VycmVudH0gdG8gJHt1cGRhdGVWZXJ9YCxcbiAgICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLnVwZGF0ZUV4dGVuc2lvbihlLCB1cGRhdGVWZXIpXG4gICAgICAgICk7XG4gICAgICAgIHVwZGF0ZXNbZV0gPSB7ZnJvbTogdXBkYXRlLmN1cnJlbnQsIHRvOiB1cGRhdGVWZXJ9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVycm9yc1tlXSA9IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxvZy5pbmZvKCdVcGRhdGUgcmVwb3J0OicpO1xuXG4gICAgZm9yIChjb25zdCBbZSwgdXBkYXRlXSBvZiBfLnRvUGFpcnModXBkYXRlcykpIHtcbiAgICAgIHRoaXMubG9nLm9rKGAgIC0gJHt0aGlzLnR5cGV9ICR7ZX0gdXBkYXRlZDogJHt1cGRhdGUuZnJvbX0gPT4gJHt1cGRhdGUudG99YC5ncmVlbik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbZSwgZXJyXSBvZiBfLnRvUGFpcnMoZXJyb3JzKSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdFVwZGF0YWJsZUVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oXG4gICAgICAgICAgYCAgLSAnJHtlfScgd2FzIG5vdCBpbnN0YWxsZWQgdmlhIG5wbSwgc28gd2UgY291bGQgbm90IGNoZWNrIGAgKyBgZm9yIHVwZGF0ZXNgLnllbGxvd1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBOb1VwZGF0ZXNBdmFpbGFibGVFcnJvcikge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGAgIC0gJyR7ZX0nIGhhZCBubyB1cGRhdGVzIGF2YWlsYWJsZWAueWVsbG93KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG90aGVyd2lzZSwgbWFrZSBpdCBwb3Agd2l0aCByZWQhXG4gICAgICAgIHRoaXMubG9nLmVycm9yKGAgIC0gJyR7ZX0nIGZhaWxlZCB0byB1cGRhdGU6ICR7ZXJyfWAucmVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt1cGRhdGVzLCBlcnJvcnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIGV4dGVuc2lvbiBuYW1lLCBmaWd1cmUgb3V0IHdoYXQgaXRzIGhpZ2hlc3QgcG9zc2libGUgdmVyc2lvbiB1cGdyYWRlIGlzLCBhbmQgYWxzbyB0aGVcbiAgICogaGlnaGVzdCBwb3NzaWJsZSBzYWZlIHVwZ3JhZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHQgLSBuYW1lIG9mIGV4dGVuc2lvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFBvc3NpYmxlVXBkYXRlcz59XG4gICAqL1xuICBhc3luYyBjaGVja0ZvckV4dGVuc2lvblVwZGF0ZShleHQpIHtcbiAgICAvLyBUT0RPIGRlY2lkZSBob3cgd2Ugd2FudCB0byBoYW5kbGUgYmV0YSB2ZXJzaW9ucz9cbiAgICAvLyB0aGlzIGlzIGEgaGVscGVyIG1ldGhvZCwgJ2V4dCcgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGluc3RhbGxlZCBoZXJlLCBhbmQgb2YgdGhlIG5wbVxuICAgIC8vIGluc3RhbGwgdHlwZVxuICAgIGNvbnN0IHt2ZXJzaW9uLCBwa2dOYW1lfSA9IHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0XTtcbiAgICBsZXQgdW5zYWZlVXBkYXRlID0gYXdhaXQgbnBtLmdldExhdGVzdFZlcnNpb24odGhpcy5jb25maWcuYXBwaXVtSG9tZSwgcGtnTmFtZSk7XG4gICAgbGV0IHNhZmVVcGRhdGUgPSBhd2FpdCBucG0uZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uKFxuICAgICAgdGhpcy5jb25maWcuYXBwaXVtSG9tZSxcbiAgICAgIHBrZ05hbWUsXG4gICAgICB2ZXJzaW9uXG4gICAgKTtcbiAgICBpZiAoIXV0aWwuY29tcGFyZVZlcnNpb25zKHVuc2FmZVVwZGF0ZSwgJz4nLCB2ZXJzaW9uKSkge1xuICAgICAgLy8gdGhlIGxhdGVzdCB2ZXJzaW9uIGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwgc28gdGhlcmUncyBubyBwb3NzaWJsZSB1cGRhdGVcbiAgICAgIHVuc2FmZVVwZGF0ZSA9IG51bGw7XG4gICAgICBzYWZlVXBkYXRlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHVuc2FmZVVwZGF0ZSAmJiB1bnNhZmVVcGRhdGUgPT09IHNhZmVVcGRhdGUpIHtcbiAgICAgIC8vIHRoZSBsYXRlc3QgdXBkYXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBzYWZlIHVwZGF0ZSwgd2hpY2ggbWVhbnMgaXQncyBub3QgYWN0dWFsbHkgdW5zYWZlXG4gICAgICB1bnNhZmVVcGRhdGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoc2FmZVVwZGF0ZSAmJiAhdXRpbC5jb21wYXJlVmVyc2lvbnMoc2FmZVVwZGF0ZSwgJz4nLCB2ZXJzaW9uKSkge1xuICAgICAgLy8gZXZlbiB0aGUgc2FmZSB1cGRhdGUgaXMgbm90IGxhdGVyIHRoYW4gdGhlIGN1cnJlbnQsIHNvIGl0IGlzIG5vdCBhY3R1YWxseSBhbiB1cGRhdGVcbiAgICAgIHNhZmVVcGRhdGUgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4ge2N1cnJlbnQ6IHZlcnNpb24sIHNhZmVVcGRhdGUsIHVuc2FmZVVwZGF0ZX07XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsbHkgdXBkYXRlIGFuIGV4dGVuc2lvbiBpbnN0YWxsZWQgYnkgTlBNLCB1c2luZyB0aGUgTlBNIGNsaS4gQW5kIHVwZGF0ZSB0aGUgaW5zdGFsbGF0aW9uXG4gICAqIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5zdGFsbFNwZWMgLSBuYW1lIG9mIGV4dGVuc2lvbiB0byB1cGRhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gLSB2ZXJzaW9uIHN0cmluZyBpZGVudGlmaWVyIHRvIHVwZGF0ZSBleHRlbnNpb24gdG9cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyB1cGRhdGVFeHRlbnNpb24oaW5zdGFsbFNwZWMsIHZlcnNpb24pIHtcbiAgICBjb25zdCB7cGtnTmFtZX0gPSB0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW2luc3RhbGxTcGVjXTtcbiAgICBjb25zdCBleHREYXRhID0gYXdhaXQgdGhpcy5pbnN0YWxsVmlhTnBtKHtcbiAgICAgIGluc3RhbGxTcGVjLFxuICAgICAgcGtnTmFtZSxcbiAgICAgIHBrZ1ZlcjogdmVyc2lvbixcbiAgICB9KTtcbiAgICBkZWxldGUgZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke3RoaXMudHlwZX1OYW1lYCldO1xuICAgIGF3YWl0IHRoaXMuY29uZmlnLnVwZGF0ZUV4dGVuc2lvbihpbnN0YWxsU3BlYywgZXh0RGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhIHNjcmlwdCBjYWNoZWQgaW5zaWRlIHRoZSBcInNjcmlwdHNcIiBmaWVsZCB1bmRlciBcImFwcGl1bVwiXG4gICAqIGluc2lkZSBvZiB0aGUgZHJpdmVyL3BsdWdpbnMgXCJwYWNrYWdlLmpzb25cIiBmaWxlLiBXaWxsIHRocm93XG4gICAqIGFuIGVycm9yIGlmIHRoZSBkcml2ZXIvcGx1Z2luIGRvZXMgbm90IGNvbnRhaW4gYSBcInNjcmlwdHNcIiBmaWVsZFxuICAgKiB1bmRlcm5lYXRoIHRoZSBcImFwcGl1bVwiIGZpZWxkIGluIGl0cyBwYWNrYWdlLmpzb24sIGlmIHRoZVxuICAgKiBcInNjcmlwdHNcIiBmaWVsZCBpcyBub3QgYSBwbGFpbiBvYmplY3QsIG9yIGlmIHRoZSBzY3JpcHROYW1lIGlzXG4gICAqIG5vdCBmb3VuZCB3aXRoaW4gXCJzY3JpcHRzXCIgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1J1bk9wdGlvbnN9IG9wdHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxSdW5PdXRwdXQ+fVxuICAgKi9cbiAgYXN5bmMgX3J1bih7aW5zdGFsbFNwZWMsIHNjcmlwdE5hbWV9KSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5pc0luc3RhbGxlZChpbnN0YWxsU3BlYykpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoYFRoZSAke3RoaXMudHlwZX0gXCIke2luc3RhbGxTcGVjfVwiIGlzIG5vdCBpbnN0YWxsZWRgKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHRDb25maWcgPSB0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW2luc3RhbGxTcGVjXTtcblxuICAgIC8vIG5vdGU6IFRTIGNhbm5vdCB1bmRlcnN0YW5kIHRoYXQgXy5oYXMoKSBpcyBhIHR5cGUgZ3VhcmRcbiAgICBpZiAoIWV4dENvbmZpZy5zY3JpcHRzKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKFxuICAgICAgICBgVGhlICR7dGhpcy50eXBlfSBuYW1lZCAnJHtpbnN0YWxsU3BlY30nIGRvZXMgbm90IGNvbnRhaW4gdGhlIGAgK1xuICAgICAgICAgIGBcInNjcmlwdHNcIiBmaWVsZCB1bmRlcm5lYXRoIHRoZSBcImFwcGl1bVwiIGZpZWxkIGluIGl0cyBwYWNrYWdlLmpzb25gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dFNjcmlwdHMgPSBleHRDb25maWcuc2NyaXB0cztcblxuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGV4dFNjcmlwdHMpKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKFxuICAgICAgICBgVGhlICR7dGhpcy50eXBlfSBuYW1lZCAnJHtpbnN0YWxsU3BlY30nIFwic2NyaXB0c1wiIGZpZWxkIG11c3QgYmUgYSBwbGFpbiBvYmplY3RgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghXy5oYXMoZXh0U2NyaXB0cywgc2NyaXB0TmFtZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoXG4gICAgICAgIGBUaGUgJHt0aGlzLnR5cGV9IG5hbWVkICcke2luc3RhbGxTcGVjfScgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc2NyaXB0OiAnJHtzY3JpcHROYW1lfSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBTdWJQcm9jZXNzKHByb2Nlc3MuZXhlY1BhdGgsIFtleHRTY3JpcHRzW3NjcmlwdE5hbWVdXSwge1xuICAgICAgY3dkOiB0aGlzLmNvbmZpZy5nZXRJbnN0YWxsUGF0aChpbnN0YWxsU3BlYyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBuZXcgUmluZ0J1ZmZlcig1MCk7XG5cbiAgICBydW5uZXIub24oJ3N0cmVhbS1saW5lJywgKGxpbmUpID0+IHtcbiAgICAgIG91dHB1dC5lbnF1ZXVlKGxpbmUpO1xuICAgICAgdGhpcy5sb2cubG9nKGxpbmUpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgcnVubmVyLnN0YXJ0KDApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bm5lci5qb2luKCk7XG4gICAgICB0aGlzLmxvZy5vayhgJHtzY3JpcHROYW1lfSBzdWNjZXNzZnVsbHkgcmFuYC5ncmVlbik7XG4gICAgICByZXR1cm4ge291dHB1dDogb3V0cHV0LmdldEJ1ZmYoKX07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcihgRW5jb3VudGVyZWQgYW4gZXJyb3Igd2hlbiBydW5uaW5nICcke3NjcmlwdE5hbWV9JzogJHtlcnIubWVzc2FnZX1gLnJlZCk7XG4gICAgICByZXR1cm4ge2Vycm9yOiBlcnIubWVzc2FnZSwgb3V0cHV0OiBvdXRwdXQuZ2V0QnVmZigpfTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRXh0ZW5zaW9uQ29tbWFuZDtcbmV4cG9ydCB7RXh0ZW5zaW9uQ29tbWFuZH07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZH0gY29uc3RydWN0b3JcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29tbWFuZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7RXh0ZW5zaW9uQ29uZmlnPEV4dFR5cGU+fSBjb25maWcgLSB0aGUgYERyaXZlckNvbmZpZ2Agb3IgYFBsdWdpbkNvbmZpZ2AgaW5zdGFuY2UgdXNlZCBmb3IgdGhpcyBjb21tYW5kXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGpzb24gLSB3aGV0aGVyIHRoZSBvdXRwdXQgb2YgdGhpcyBjb21tYW5kIHNob3VsZCBiZSBKU09OIG9yIHRleHRcbiAqL1xuXG4vKipcbiAqIEV4dHJhIHN0dWZmIGFib3V0IGV4dGVuc2lvbnM7IHVzZWQgaW5kaXJlY3RseSBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH0uXG4gKlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uTWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaW5zdGFsbGVkIC0gSWYgYHRydWVgLCB0aGUgZXh0ZW5zaW9uIGlzIGluc3RhbGxlZFxuICogQHByb3BlcnR5IHtzdHJpbmc/fSB1cGRhdGVWZXJzaW9uIC0gSWYgdGhlIGV4dGVuc2lvbiBpcyBpbnN0YWxsZWQsIHRoZSB2ZXJzaW9uIGl0IGNhbiBiZSB1cGRhdGVkIHRvXG4gKiBAcHJvcGVydHkge3N0cmluZz99IHVuc2FmZVVwZGF0ZVZlcnNpb24gLSBTYW1lIGFzIGFib3ZlLCBidXQgYSBtYWpvciB2ZXJzaW9uIGJ1bXBcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXBUb0RhdGUgLSBJZiB0aGUgZXh0ZW5zaW9uIGlzIGluc3RhbGxlZCBhbmQgdGhlIGxhdGVzdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV4dGVuc2lvblR5cGV9IEV4dGVuc2lvblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRSZWNvcmQ8RXh0VHlwZT59IEV4dFJlY29yZFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn0gRXh0ZW5zaW9uQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE1ldGFkYXRhPEV4dFR5cGU+fSBFeHRNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRNYW5pZmVzdDxFeHRUeXBlPn0gRXh0TWFuaWZlc3RcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuRXh0UGFja2FnZUpzb248RXh0VHlwZT59IEV4dFBhY2thZ2VKc29uXG4gKi9cblxuLyoqXG4gKiBQb3NzaWJsZSByZXR1cm4gdmFsdWUgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5saXN0fVxuICogQHR5cGVkZWYgVW5pbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBrZ05hbWVcbiAqIEBwcm9wZXJ0eSB7ZmFsc2V9IGluc3RhbGxlZFxuICovXG5cbi8qKlxuICogUG9zc2libGUgcmV0dXJuIHZhbHVlIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkludGVybmFsTWV0YWRhdGEgJiBFeHRlbnNpb25NZXRhZGF0YX0gSW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGFcbiAqL1xuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH0uXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZyxJbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YXxVbmluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPn0gRXh0ZW5zaW9uTGlzdERhdGFcbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5fcnVufS5cbiAqIEB0eXBlZGVmIFJ1bk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0byBydW4gYSBzY3JpcHQgZnJvbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNjcmlwdE5hbWUgLSBuYW1lIG9mIHRoZSBzY3JpcHQgdG8gcnVuXG4gKi9cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgb2Yge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl9ydW59XG4gKlxuICogQHR5cGVkZWYgUnVuT3V0cHV0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Vycm9yXSAtIGVycm9yIG1lc3NhZ2UgaWYgc2NyaXB0IHJhbiB1bnN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gb3V0cHV0IC0gc2NyaXB0IG91dHB1dFxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl91cGRhdGV9LlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uVXBkYXRlT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGluc3RhbGxTcGVjIC0gdGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0byB1cGRhdGVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdW5zYWZlIC0gaWYgdHJ1ZSwgd2lsbCBwZXJmb3JtIHVuc2FmZSB1cGRhdGVzIHBhc3QgbWFqb3IgcmV2aXNpb24gYm91bmRhcmllc1xuICovXG5cbi8qKlxuICogUmV0dXJuIHZhbHVlIG9mIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5fdXBkYXRlfS5cbiAqIEB0eXBlZGVmIEV4dGVuc2lvblVwZGF0ZVJlc3VsdFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLEVycm9yPn0gZXJyb3JzIC0gbWFwIG9mIGV4dCBuYW1lcyB0byBlcnJvciBvYmplY3RzXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsVXBkYXRlUmVwb3J0Pn0gdXBkYXRlcyAtIG1hcCBvZiBleHQgbmFtZXMgdG8ge0BsaW5rY29kZSBVcGRhdGVSZXBvcnR9c1xuICovXG5cbi8qKlxuICogUGFydCBvZiByZXN1bHQgb2Yge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl91cGRhdGV9LlxuICogQHR5cGVkZWYgVXBkYXRlUmVwb3J0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAtIHZlcnNpb24gdGhlIGV4dGVuc2lvbiB3YXMgdXBkYXRlZCBmcm9tXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG8gLSB2ZXJzaW9uIHRoZSBleHRlbnNpb24gd2FzIHVwZGF0ZWQgdG9cbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5fdW5pbnN0YWxsfS5cbiAqIEB0eXBlZGVmIFVuaW5zdGFsbE9wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIHRoZSBuYW1lIG9yIHNwZWMgb2YgYW4gZXh0ZW5zaW9uIHRvIHVuaW5zdGFsbFxuICovXG5cbi8qKlxuICogVXNlZCBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuZ2V0UG9zdEluc3RhbGxUZXh0fVxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQXJnc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGV4dE5hbWUgLSB0aGUgbmFtZSBvZiBhbiBleHRlbnNpb25cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBleHREYXRhIC0gdGhlIGRhdGEgZm9yIGFuIGluc3RhbGxlZCBleHRlbnNpb25cbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5pbnN0YWxsVmlhTnBtfVxuICogQHR5cGVkZWYgSW5zdGFsbFZpYU5wbUFyZ3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIHRoZSBuYW1lIG9yIHNwZWMgb2YgYW4gZXh0ZW5zaW9uIHRvIGluc3RhbGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwa2dOYW1lIC0gdGhlIE5QTSBwYWNrYWdlIG5hbWUgb2YgdGhlIGV4dGVuc2lvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwa2dWZXJdIC0gdGhlIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIE5QTSBwYWNrYWdlXG4gKi9cblxuLyoqXG4gKiBPYmplY3QgcmV0dXJuZWQgYnkge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlfVxuICogQHR5cGVkZWYgUG9zc2libGVVcGRhdGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY3VycmVudCAtIGN1cnJlbnQgdmVyc2lvblxuICogQHByb3BlcnR5IHtzdHJpbmc/fSBzYWZlVXBkYXRlIC0gdmVyc2lvbiB3ZSBjYW4gc2FmZWx5IHVwZGF0ZSB0byBpZiBpdCBleGlzdHMsIG9yIG51bGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nP30gdW5zYWZlVXBkYXRlIC0gdmVyc2lvbiB3ZSBjYW4gdW5zYWZlbHkgdXBkYXRlIHRvIGlmIGl0IGV4aXN0cywgb3IgbnVsbFxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl9pbnN0YWxsfVxuICogQHR5cGVkZWYgSW5zdGFsbEFyZ3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIHRoZSBuYW1lIG9yIHNwZWMgb2YgYW4gZXh0ZW5zaW9uIHRvIGluc3RhbGxcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5JbnN0YWxsVHlwZX0gaW5zdGFsbFR5cGUgLSBob3cgdG8gaW5zdGFsbCB0aGlzIGV4dGVuc2lvbi4gT25lIG9mIHRoZSBJTlNUQUxMX1RZUEVTXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BhY2thZ2VOYW1lXSAtIGZvciBnaXQvZ2l0aHViIGluc3RhbGxzLCB0aGUgZXh0ZW5zaW9uIG5vZGUgcGFja2FnZSBuYW1lXG4gKi9cblxuLyoqXG4gKiBSZXR1cm5lZCBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuZ2V0RXh0ZW5zaW9uRmllbGRzfVxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7RXh0TWV0YWRhdGE8RXh0VHlwZT4gJiB7IHBrZ05hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCBhcHBpdW1WZXJzaW9uOiBzdHJpbmcgfSAmIGltcG9ydCgnYXBwaXVtL3R5cGVzJykuQ29tbW9uRXh0TWV0YWRhdGF9IEV4dGVuc2lvbkZpZWxkc1xuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7RXh0VHlwZSBleHRlbmRzIERyaXZlclR5cGUgPyB0eXBlb2YgaW1wb3J0KCcuLi9jb25zdGFudHMnKS5LTk9XTl9EUklWRVJTIDogRXh0VHlwZSBleHRlbmRzIFBsdWdpblR5cGUgPyB0eXBlb2YgaW1wb3J0KCcuLi9jb25zdGFudHMnKS5LTk9XTl9QTFVHSU5TIDogbmV2ZXJ9IEtub3duRXh0ZW5zaW9uc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYgTGlzdE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc2hvd0luc3RhbGxlZCAtIHdoZXRoZXIgc2hvdWxkIHNob3cgb25seSBpbnN0YWxsZWQgZXh0ZW5zaW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBzaG93VXBkYXRlcyAtIHdoZXRoZXIgc2hvdWxkIHNob3cgYXZhaWxhYmxlIHVwZGF0ZXNcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU1BOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxXQUFuQjs7QUFFQSxNQUFNQyxpQkFBTixTQUFnQ0MsS0FBaEMsQ0FBc0M7O0FBQ3RDLE1BQU1DLHVCQUFOLFNBQXNDRCxLQUF0QyxDQUE0Qzs7QUFLNUMsTUFBTUUsZ0JBQU4sQ0FBdUI7RUFLckJDLE1BQU07RUFNTkMsZUFBZTtFQU1mQyxZQUFZOztFQU1aQyxXQUFXLENBQUM7SUFBQ0gsTUFBRDtJQUFTSTtFQUFULENBQUQsRUFBaUI7SUFDMUIsS0FBS0osTUFBTCxHQUFjQSxNQUFkO0lBQ0EsS0FBS0ssR0FBTCxHQUFXLElBQUlDLGdCQUFBLENBQVFDLFVBQVosQ0FBdUI7TUFBQ0MsUUFBUSxFQUFFSjtJQUFYLENBQXZCLENBQVg7SUFDQSxLQUFLRixZQUFMLEdBQW9CTyxPQUFPLENBQUNMLElBQUQsQ0FBM0I7RUFDRDs7RUFLTyxJQUFKTSxJQUFJLEdBQUc7SUFDVCxPQUFPLEtBQUtWLE1BQUwsQ0FBWVcsYUFBbkI7RUFDRDs7RUFZREMsaUJBQWlCLENBQUNDLE9BQUQsRUFBVTtJQUN6QixPQUFPLElBQUloQixLQUFKLENBQVUsS0FBS1EsR0FBTCxDQUFTUyxRQUFULENBQWtCRCxPQUFsQixFQUEyQixPQUEzQixDQUFWLENBQVA7RUFDRDs7RUFRWSxNQUFQRSxPQUFPLENBQUNDLElBQUQsRUFBTztJQUNsQixNQUFNQyxHQUFHLEdBQUdELElBQUksQ0FBRSxHQUFFLEtBQUtOLElBQUssU0FBZCxDQUFoQjs7SUFDQSxJQUFJLENBQUNRLGVBQUEsQ0FBRUMsVUFBRixDQUFhLEtBQUtGLEdBQUwsQ0FBYixDQUFMLEVBQThCO01BQzVCLE1BQU0sS0FBS0wsaUJBQUwsQ0FBd0IsaUJBQWdCLEtBQUtGLElBQUssWUFBV08sR0FBSSxFQUFqRSxDQUFOO0lBQ0Q7O0lBQ0QsTUFBTUcsVUFBVSxHQUFHLEtBQUtILEdBQUwsRUFBVUksSUFBVixDQUFlLElBQWYsQ0FBbkI7SUFDQSxPQUFPLE1BQU1ELFVBQVUsQ0FBQ0osSUFBRCxDQUF2QjtFQUNEOztFQVFTLE1BQUpNLElBQUksQ0FBQztJQUFDQyxhQUFEO0lBQWdCQztFQUFoQixDQUFELEVBQStCO0lBQ3ZDLE1BQU1DLEtBQUssR0FBSSxXQUFVRixhQUFhLEdBQUcsV0FBSCxHQUFpQixXQUFZLElBQUcsS0FBS2IsSUFBSyxHQUFoRjtJQUNBLE1BQU1nQixjQUFjLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUs1QixNQUFMLENBQVk2QixtQkFBeEIsQ0FBdkI7SUFDQSxNQUFNQyxVQUFVLEdBQUdILE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUszQixlQUFqQixDQUFuQjtJQUNBLE1BQU04QixJQUFJLEdBQUcsQ0FBQyxHQUFHTCxjQUFKLEVBQW9CLEdBQUdJLFVBQXZCLEVBQW1DRSxNQUFuQyxDQUNYLENBQUNDLEdBQUQsRUFBTUMsSUFBTixLQUFlO01BQ2IsSUFBSSxDQUFDRCxHQUFHLENBQUNDLElBQUQsQ0FBUixFQUFnQjtRQUNkLElBQUlSLGNBQWMsQ0FBQ1MsUUFBZixDQUF3QkQsSUFBeEIsQ0FBSixFQUFtQztVQUNqQ0QsR0FBRyxDQUFDQyxJQUFELENBQUgsR0FBWSxFQUNWLEdBQUcsS0FBS2xDLE1BQUwsQ0FBWTZCLG1CQUFaLENBQWdDSyxJQUFoQyxDQURPO1lBRVZFLFNBQVMsRUFBRTtVQUZELENBQVo7UUFJRCxDQUxELE1BS08sSUFBSSxDQUFDYixhQUFMLEVBQW9CO1VBQ3pCVSxHQUFHLENBQUNDLElBQUQsQ0FBSCxHQUFZO1lBQUNHLE9BQU8sRUFBRSxLQUFLcEMsZUFBTCxDQUFxQmlDLElBQXJCLENBQVY7WUFBc0NFLFNBQVMsRUFBRTtVQUFqRCxDQUFaO1FBQ0Q7TUFDRjs7TUFDRCxPQUFPSCxHQUFQO0lBQ0QsQ0FiVSxFQWtCTixFQWxCTSxDQUFiO0lBc0JBLE1BQU0sSUFBQUssZUFBQSxFQUFTLEtBQUtwQyxZQUFkLEVBQTRCdUIsS0FBNUIsRUFBbUMsWUFBWTtNQUNuRCxJQUFJLENBQUNELFdBQUwsRUFBa0I7UUFDaEI7TUFDRDs7TUFDRCxLQUFLLE1BQU0sQ0FBQ2UsR0FBRCxFQUFNQyxJQUFOLENBQVgsSUFBMEJ0QixlQUFBLENBQUV1QixPQUFGLENBQVVWLElBQVYsQ0FBMUIsRUFBMkM7UUFDekMsSUFBSSxDQUFDUyxJQUFJLENBQUNKLFNBQU4sSUFBbUJJLElBQUksQ0FBQ0UsV0FBTCxLQUFxQkMsaUNBQTVDLEVBQThEO1VBRzVEO1FBQ0Q7O1FBQ0QsTUFBTUMsT0FBTyxHQUFHLE1BQU0sS0FBS0MsdUJBQUwsQ0FBNkJOLEdBQTdCLENBQXRCO1FBQ0FDLElBQUksQ0FBQ00sYUFBTCxHQUFxQkYsT0FBTyxDQUFDRyxVQUE3QjtRQUNBUCxJQUFJLENBQUNRLG1CQUFMLEdBQTJCSixPQUFPLENBQUNLLFlBQW5DO1FBQ0FULElBQUksQ0FBQ1UsUUFBTCxHQUFnQk4sT0FBTyxDQUFDRyxVQUFSLEtBQXVCLElBQXZCLElBQStCSCxPQUFPLENBQUNLLFlBQVIsS0FBeUIsSUFBeEU7TUFDRDtJQUNGLENBZkssQ0FBTjtJQWlCQSxNQUFNRSxRQUFRLEdBQXFDcEIsSUFBbkQ7O0lBSUEsSUFBSSxLQUFLN0IsWUFBVCxFQUF1QjtNQUNyQixPQUFPaUQsUUFBUDtJQUNEOztJQUVELEtBQUssTUFBTSxDQUFDakIsSUFBRCxFQUFPTSxJQUFQLENBQVgsSUFBMkJ0QixlQUFBLENBQUV1QixPQUFGLENBQVVVLFFBQVYsQ0FBM0IsRUFBZ0Q7TUFDOUMsSUFBSUMsVUFBVSxHQUFHLG1CQUFtQkMsSUFBcEM7TUFDQSxJQUFJQyxTQUFTLEdBQUcsRUFBaEI7TUFDQSxJQUFJQyxXQUFXLEdBQUcsRUFBbEI7TUFDQSxJQUFJQyxlQUFlLEdBQUcsRUFBdEI7O01BQ0EsSUFBSWhCLElBQUksQ0FBQ0osU0FBVCxFQUFvQjtRQUNsQixNQUFNO1VBQUNNLFdBQUQ7VUFBY2UsV0FBZDtVQUEyQlgsYUFBM0I7VUFBMENFLG1CQUExQztVQUErRFUsT0FBL0Q7VUFBd0VSO1FBQXhFLElBQ0pWLElBREY7UUFFQSxJQUFJbUIsT0FBSjs7UUFDQSxRQUFRakIsV0FBUjtVQUNFLEtBQUtrQixpQ0FBTDtVQUNBLEtBQUtDLG9DQUFMO1lBQ0VGLE9BQU8sR0FBSSxnQkFBZUYsV0FBWSxHQUE1QixDQUErQkssTUFBekM7WUFDQTs7VUFDRixLQUFLQyxtQ0FBTDtZQUNFSixPQUFPLEdBQUksZ0JBQWVGLFdBQVksR0FBNUIsQ0FBK0JPLE9BQXpDO1lBQ0E7O1VBQ0Y7WUFDRUwsT0FBTyxHQUFHLE9BQVY7UUFUSjs7UUFXQVAsVUFBVSxHQUFJLElBQUdNLE9BQU8sQ0FBQ0ksTUFBTyxJQUFHLENBQUMsZ0JBQWdCSCxPQUFoQixHQUEwQixHQUEzQixFQUFnQ00sS0FBTSxFQUF6RTs7UUFFQSxJQUFJekMsV0FBSixFQUFpQjtVQUNmLElBQUlzQixhQUFKLEVBQW1CO1lBQ2pCUSxTQUFTLEdBQUksS0FBSVIsYUFBYyxhQUFuQixDQUFnQ2tCLE9BQTVDO1VBQ0Q7O1VBQ0QsSUFBSWQsUUFBSixFQUFjO1lBQ1pLLFdBQVcsR0FBSSxlQUFELENBQWdCVSxLQUE5QjtVQUNEOztVQUNELElBQUlqQixtQkFBSixFQUF5QjtZQUN2QlEsZUFBZSxHQUFJLEtBQUlSLG1CQUFvQixrQ0FBekIsQ0FBMkRrQixJQUE3RTtVQUNEO1FBQ0Y7TUFDRjs7TUFFRCxLQUFLN0QsR0FBTCxDQUFTQSxHQUFULENBQWMsS0FBSTZCLElBQUksQ0FBQzRCLE1BQU8sR0FBRVYsVUFBVyxHQUFFRSxTQUFVLEdBQUVDLFdBQVksR0FBRUMsZUFBZ0IsRUFBdkY7SUFDRDs7SUFFRCxPQUFPTCxRQUFQO0VBQ0Q7O0VBUWEsTUFBUmdCLFFBQVEsQ0FBQztJQUFDVixXQUFEO0lBQWNmLFdBQWQ7SUFBMkIwQjtFQUEzQixDQUFELEVBQTBDO0lBRXRELElBQUlDLE9BQUo7O0lBRUEsSUFBSUQsV0FBVyxJQUFJLENBQUNMLG1DQUFELEVBQXFCcEIsaUNBQXJCLEVBQXVDUixRQUF2QyxDQUFnRE8sV0FBaEQsQ0FBbkIsRUFBaUY7TUFDL0UsTUFBTSxLQUFLOUIsaUJBQUwsQ0FBd0IsdUJBQXNCOEIsV0FBWSw2QkFBMUQsQ0FBTjtJQUNEOztJQUVELElBQUksQ0FBQzBCLFdBQUQsSUFBZ0IsQ0FBQ1IsaUNBQUQsRUFBbUJDLG9DQUFuQixFQUF3QzFCLFFBQXhDLENBQWlETyxXQUFqRCxDQUFwQixFQUFtRjtNQUNqRixNQUFNLEtBQUs5QixpQkFBTCxDQUF3Qix1QkFBc0I4QixXQUFZLDJCQUExRCxDQUFOO0lBQ0Q7O0lBS0QsSUFBSTRCLFdBQUo7SUFRQSxJQUFJQyxlQUFlLEdBQUcsRUFBdEI7O0lBR0EsSUFBSTdCLFdBQVcsS0FBS21CLG9DQUFwQixFQUF5QztNQUN2QyxJQUFJSixXQUFXLENBQUNlLEtBQVosQ0FBa0IsR0FBbEIsRUFBdUJDLE1BQXZCLEtBQWtDLENBQXRDLEVBQXlDO1FBQ3ZDLE1BQU0sS0FBSzdELGlCQUFMLENBQ0gsVUFBUyxLQUFLRixJQUFLLFNBQVErQyxXQUFZLDJCQUF4QyxHQUNFLHVDQUZFLENBQU47TUFJRDs7TUFDRGEsV0FBVyxHQUFHO1FBQ1piLFdBRFk7UUFFWnBCLE9BQU8sRUFBeUIrQjtNQUZwQixDQUFkO01BSUFHLGVBQWUsR0FBR2QsV0FBbEI7SUFDRCxDQVpELE1BWU8sSUFBSWYsV0FBVyxLQUFLa0IsaUNBQXBCLEVBQXNDO01BRzNDSCxXQUFXLEdBQUdBLFdBQVcsQ0FBQ2lCLE9BQVosQ0FBb0IsUUFBcEIsRUFBOEIsRUFBOUIsQ0FBZDtNQUNBSixXQUFXLEdBQUc7UUFDWmIsV0FEWTtRQUVacEIsT0FBTyxFQUF5QitCO01BRnBCLENBQWQ7TUFJQUcsZUFBZSxHQUFHZCxXQUFsQjtJQUNELENBVE0sTUFTQTtNQUNMLElBQUlwQixPQUFKLEVBQWFzQyxNQUFiOztNQUNBLElBQUlqQyxXQUFXLEtBQUtxQixtQ0FBcEIsRUFBd0M7UUFDdEMxQixPQUFPLEdBQUd1QyxhQUFBLENBQUtDLFVBQUwsQ0FBZ0JwQixXQUFoQixJQUErQkEsV0FBL0IsR0FBNkNtQixhQUFBLENBQUtFLE9BQUwsQ0FBYXJCLFdBQWIsQ0FBdkQ7TUFDRCxDQUZELE1BRU87UUFNTCxJQUFJdkIsSUFBSjtRQUNBLE1BQU02QyxNQUFNLEdBQUd0QixXQUFXLENBQUNlLEtBQVosQ0FBa0IsR0FBbEIsQ0FBZjs7UUFDQSxJQUFJZixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQXZCLEVBQTRCO1VBRTFCLENBQUN2QixJQUFELEVBQU95QyxNQUFQLElBQWlCLENBQUUsSUFBR0ksTUFBTSxDQUFDLENBQUQsQ0FBSSxFQUFmLEVBQWtCQSxNQUFNLENBQUMsQ0FBRCxDQUF4QixDQUFqQjtRQUNELENBSEQsTUFHTztVQUVMLENBQUM3QyxJQUFELEVBQU95QyxNQUFQLElBQWlCSSxNQUFqQjtRQUNEOztRQUVELElBQUlyQyxXQUFXLEtBQUtDLGlDQUFwQixFQUFzQztVQUdwQ04sT0FBTyxHQUFHSCxJQUFWO1FBQ0QsQ0FKRCxNQUlPO1VBSUwsTUFBTUosVUFBVSxHQUFHSCxNQUFNLENBQUNDLElBQVAsQ0FBWSxLQUFLM0IsZUFBakIsQ0FBbkI7O1VBQ0EsSUFBSSxDQUFDaUIsZUFBQSxDQUFFaUIsUUFBRixDQUFXTCxVQUFYLEVBQXVCSSxJQUF2QixDQUFMLEVBQW1DO1lBQ2pDLE1BQU04QyxHQUFHLEdBQ04scUJBQW9CLEtBQUt0RSxJQUFLLGtDQUEvQixHQUNDLGdCQUFlLEtBQUtBLElBQUssTUFBS3VFLElBQUksQ0FBQ0MsU0FBTCxDQUFlcEQsVUFBZixDQUEyQixFQUY1RDtZQUdBLE1BQU0sS0FBS2xCLGlCQUFMLENBQXVCb0UsR0FBdkIsQ0FBTjtVQUNEOztVQUNEVCxlQUFlLEdBQUdyQyxJQUFsQjtVQUNBRyxPQUFPLEdBQUcsS0FBS3BDLGVBQUwsQ0FBcUJpQyxJQUFyQixDQUFWO1VBR0FRLFdBQVcsR0FBR0MsaUNBQWQ7UUFDRDtNQUNGOztNQUNEMkIsV0FBVyxHQUFHO1FBQUNiLFdBQUQ7UUFBY3BCLE9BQWQ7UUFBdUJzQztNQUF2QixDQUFkO0lBQ0Q7O0lBR0QsSUFBSUosZUFBZSxJQUFJLEtBQUt2RSxNQUFMLENBQVltRixXQUFaLENBQXdCWixlQUF4QixDQUF2QixFQUFpRTtNQUMvRCxNQUFNLEtBQUszRCxpQkFBTCxDQUNILEtBQUksS0FBS0YsSUFBSyxXQUFVNkQsZUFBZ0IsMEJBQXpDLEdBQ0csdUNBQXNDLEtBQUs3RCxJQUFLLGdCQURuRCxHQUVHLGFBQVksS0FBS0EsSUFBSyxrQkFBaUIsS0FBS0EsSUFBSyxxQkFIaEQsQ0FBTjtJQUtEOztJQUVEMkQsT0FBTyxHQUFHLE1BQU0sS0FBS2UsYUFBTCxDQUFtQmQsV0FBbkIsQ0FBaEI7SUFJQSxNQUFNZSxPQUFPLEdBQUdoQixPQUFPLENBQXlCLEdBQUUsS0FBSzNELElBQUssTUFBckMsQ0FBdkI7O0lBR0EsSUFBSSxLQUFLVixNQUFMLENBQVltRixXQUFaLENBQXdCRSxPQUF4QixDQUFKLEVBQXNDO01BQ3BDLE1BQU0sS0FBS3pFLGlCQUFMLENBQ0gsS0FBSSxLQUFLRixJQUFLLFdBQVUyRSxPQUFRLDBCQUFqQyxHQUNHLHVDQUFzQyxLQUFLM0UsSUFBSyxnQkFEbkQsR0FFRyxhQUFZLEtBQUtBLElBQUssa0JBQWlCLEtBQUtBLElBQUsscUJBSGhELENBQU47SUFLRDs7SUFJRCxPQUFPMkQsT0FBTyxDQUF5QixHQUFFLEtBQUszRCxJQUFLLE1BQXJDLENBQWQ7SUFHQSxNQUFNNEUsV0FBVyxHQUFHLEVBQUMsR0FBR2pCLE9BQUo7TUFBYTNCLFdBQWI7TUFBMEJlO0lBQTFCLENBQXBCO0lBQ0EsTUFBTSxDQUFDOEIsTUFBRCxFQUFTQyxRQUFULElBQXFCLE1BQU1DLGlCQUFBLENBQUVDLEdBQUYsQ0FBTSxDQUNyQyxLQUFLMUYsTUFBTCxDQUFZMkYsV0FBWixDQUF3Qk4sT0FBeEIsRUFBaUNDLFdBQWpDLENBRHFDLEVBRXJDLEtBQUt0RixNQUFMLENBQVk0RixXQUFaLENBQXdCUCxPQUF4QixFQUFpQ0MsV0FBakMsQ0FGcUMsQ0FBTixDQUFqQztJQUlBLE1BQU1PLFFBQVEsR0FBRyxJQUFJQyxHQUFKLENBQVEsQ0FBQyxDQUFDVCxPQUFELEVBQVVFLE1BQVYsQ0FBRCxDQUFSLENBQWpCO0lBQ0EsTUFBTVEsVUFBVSxHQUFHLElBQUlELEdBQUosQ0FBUSxDQUFDLENBQUNULE9BQUQsRUFBVUcsUUFBVixDQUFELENBQVIsQ0FBbkI7SUFDQSxNQUFNO01BQUNRLGNBQUQ7TUFBaUJDO0lBQWpCLElBQXFDLEtBQUtqRyxNQUFMLENBQVlrRyw0QkFBWixDQUN6Q0wsUUFEeUMsRUFFekNFLFVBRnlDLENBQTNDOztJQUtBLElBQUksQ0FBQzdFLGVBQUEsQ0FBRWlGLE9BQUYsQ0FBVUgsY0FBVixDQUFMLEVBQWdDO01BQzlCLE1BQU0sS0FBS3BGLGlCQUFMLENBQXVCb0YsY0FBYyxDQUFDSSxJQUFmLENBQW9CLElBQXBCLENBQXZCLENBQU47SUFDRDs7SUFHRCxJQUFJLENBQUNsRixlQUFBLENBQUVpRixPQUFGLENBQVVGLGdCQUFWLENBQUwsRUFBa0M7TUFDaEMsS0FBSzVGLEdBQUwsQ0FBU2dHLElBQVQsQ0FBY0osZ0JBQWdCLENBQUNHLElBQWpCLENBQXNCLElBQXRCLENBQWQ7SUFDRDs7SUFFRCxNQUFNLEtBQUtwRyxNQUFMLENBQVlzRyxZQUFaLENBQXlCakIsT0FBekIsRUFBa0NDLFdBQWxDLENBQU47O0lBR0EsSUFBSSxNQUFNaUIsWUFBQSxDQUFJQyxtQkFBSixDQUF3QixLQUFLeEcsTUFBTCxDQUFZeUcsVUFBcEMsQ0FBVixFQUEyRDtNQUN6RCxNQUFNLElBQUFDLGdDQUFBLEVBQWlCLEtBQUsxRyxNQUFMLENBQVl5RyxVQUE3QixDQUFOO0lBQ0Q7O0lBR0QsS0FBS3BHLEdBQUwsQ0FBU3NHLElBQVQsQ0FBYyxLQUFLQyxrQkFBTCxDQUF3QjtNQUFDdkIsT0FBRDtNQUFVaEI7SUFBVixDQUF4QixDQUFkO0lBRUEsT0FBTyxLQUFLckUsTUFBTCxDQUFZNkIsbUJBQW5CO0VBQ0Q7O0VBT2tCLE1BQWJ1RCxhQUFhLENBQUM7SUFBQzNCLFdBQUQ7SUFBY3BCLE9BQWQ7SUFBdUJzQztFQUF2QixDQUFELEVBQWlDO0lBQ2xELE1BQU1rQyxPQUFPLEdBQUksR0FBRXhFLE9BQVEsR0FBRXNDLE1BQU0sR0FBRyxNQUFNQSxNQUFULEdBQWtCLEVBQUcsRUFBeEQ7SUFDQSxNQUFNbUMsT0FBTyxHQUFHRCxPQUFPLEtBQUtwRCxXQUFaLEdBQTBCLEVBQTFCLEdBQWdDLDRCQUEyQm9ELE9BQVEsR0FBbkY7SUFDQSxNQUFNN0IsR0FBRyxHQUFJLGVBQWN2QixXQUFZLElBQUdxRCxPQUFRLEVBQWxEOztJQUNBLElBQUk7TUFDRixNQUFNQyxXQUFXLEdBQUcsTUFBTSxJQUFBekUsZUFBQSxFQUFTLEtBQUtwQyxZQUFkLEVBQTRCOEUsR0FBNUIsRUFBaUMsWUFBWTtRQUNyRSxNQUFNK0IsV0FBVyxHQUFHLE1BQU1DLFlBQUEsQ0FBSUMsY0FBSixDQUFtQixLQUFLakgsTUFBTCxDQUFZeUcsVUFBL0IsRUFBMkNwRSxPQUEzQyxFQUFvRDtVQUM1RXNDO1FBRDRFLENBQXBELENBQTFCO1FBR0EsS0FBS3VDLG1CQUFMLENBQXlCSCxXQUF6QixFQUFzQ3RELFdBQXRDO1FBQ0EsT0FBT3NELFdBQVA7TUFDRCxDQU55QixDQUExQjtNQVFBLE9BQU8sS0FBS0ksa0JBQUwsQ0FBd0JKLFdBQXhCLENBQVA7SUFDRCxDQVZELENBVUUsT0FBT0ssR0FBUCxFQUFZO01BQ1osTUFBTSxLQUFLeEcsaUJBQUwsQ0FBd0IsaURBQWdEd0csR0FBRyxDQUFDdkcsT0FBUSxFQUFwRixDQUFOO0lBQ0Q7RUFDRjs7RUFVRCtGLGtCQUFrQixDQUFDNUYsSUFBRCxFQUFPO0lBQ3ZCLE1BQU0sS0FBS0osaUJBQUwsQ0FBdUIsb0NBQXZCLENBQU47RUFDRDs7RUFXRHVHLGtCQUFrQixDQUFDRSxPQUFELEVBQVU7SUFDMUIsTUFBTTtNQUFDQyxNQUFEO01BQVNwRixJQUFUO01BQWV3QixPQUFmO01BQXdCNkQ7SUFBeEIsSUFBNENGLE9BQWxEO0lBR0EsTUFBTUcsTUFBTSxHQUFHLEVBQ2IsR0FBR0YsTUFEVTtNQUViakYsT0FBTyxFQUFFSCxJQUZJO01BR2J3QixPQUhhO01BSWIrRCxhQUFhLEVBQUVGLGdCQUFGLGFBQUVBLGdCQUFGLHVCQUFFQSxnQkFBZ0IsQ0FBRUQ7SUFKcEIsQ0FBZjtJQU1BLE9BQWdERSxNQUFoRDtFQUNEOztFQWNETixtQkFBbUIsQ0FBQ0csT0FBRCxFQUFVNUQsV0FBVixFQUF1QjtJQUN4QyxNQUFNO01BQUM2RCxNQUFEO01BQVNwRixJQUFUO01BQWV3QjtJQUFmLElBQWtFMkQsT0FBeEU7O0lBT0EsTUFBTUssdUJBQXVCLEdBQUlDLEtBQUQsSUFDOUIsSUFBSUMsY0FBSixDQUNHLEdBQUUsS0FBS2xILElBQUssS0FBSStDLFdBQVksMEJBQXlCa0UsS0FBTSxrQ0FEOUQsQ0FERjs7SUFLQSxJQUFJLENBQUN6RixJQUFMLEVBQVc7TUFDVCxNQUFNd0YsdUJBQXVCLENBQUMsTUFBRCxDQUE3QjtJQUNEOztJQUNELElBQUksQ0FBQ2hFLE9BQUwsRUFBYztNQUNaLE1BQU1nRSx1QkFBdUIsQ0FBQyxTQUFELENBQTdCO0lBQ0Q7O0lBQ0QsSUFBSSxDQUFDSixNQUFMLEVBQWE7TUFDWCxNQUFNSSx1QkFBdUIsQ0FBQyxRQUFELENBQTdCO0lBQ0Q7O0lBRUQsS0FBS0csdUJBQUwsQ0FBNkJQLE1BQTdCLEVBQXFDN0QsV0FBckM7SUFFQSxPQUFPLElBQVA7RUFDRDs7RUFXRG9FLHVCQUF1QixDQUFDQyxXQUFELEVBQWNyRSxXQUFkLEVBQTJCO0lBQ2hELE1BQU0sS0FBSzdDLGlCQUFMLENBQXVCLG9DQUF2QixDQUFOO0VBQ0Q7O0VBWWUsTUFBVm1ILFVBQVUsQ0FBQztJQUFDdEU7RUFBRCxDQUFELEVBQWdCO0lBQzlCLElBQUksQ0FBQyxLQUFLekQsTUFBTCxDQUFZbUYsV0FBWixDQUF3QjFCLFdBQXhCLENBQUwsRUFBMkM7TUFDekMsTUFBTSxLQUFLN0MsaUJBQUwsQ0FDSCxtQkFBa0IsS0FBS0YsSUFBSyxLQUFJK0MsV0FBWSx3QkFEekMsQ0FBTjtJQUdEOztJQUNELE1BQU1wQixPQUFPLEdBQUcsS0FBS3JDLE1BQUwsQ0FBWTZCLG1CQUFaLENBQWdDNEIsV0FBaEMsRUFBNkNwQixPQUE3RDtJQUNBLE1BQU0yRSxZQUFBLENBQUlnQixnQkFBSixDQUFxQixLQUFLaEksTUFBTCxDQUFZeUcsVUFBakMsRUFBNkNwRSxPQUE3QyxDQUFOO0lBQ0EsTUFBTSxLQUFLckMsTUFBTCxDQUFZaUksZUFBWixDQUE0QnhFLFdBQTVCLENBQU47SUFDQSxLQUFLcEQsR0FBTCxDQUFTNkgsRUFBVCxDQUFhLDRCQUEyQixLQUFLeEgsSUFBSyxLQUFJK0MsV0FBWSxHQUF0RCxDQUF5RFEsS0FBckU7SUFDQSxPQUFPLEtBQUtqRSxNQUFMLENBQVk2QixtQkFBbkI7RUFDRDs7RUFRWSxNQUFQc0csT0FBTyxDQUFDO0lBQUMxRSxXQUFEO0lBQWMyRTtFQUFkLENBQUQsRUFBd0I7SUFDbkMsTUFBTUMsZUFBZSxHQUFHNUUsV0FBVyxLQUFLOUQsVUFBeEM7O0lBRUEsSUFBSSxDQUFDMEksZUFBRCxJQUFvQixDQUFDLEtBQUtySSxNQUFMLENBQVltRixXQUFaLENBQXdCMUIsV0FBeEIsQ0FBekIsRUFBK0Q7TUFDN0QsTUFBTSxLQUFLN0MsaUJBQUwsQ0FDSCxPQUFNLEtBQUtGLElBQUssS0FBSStDLFdBQVksMENBRDdCLENBQU47SUFHRDs7SUFDRCxNQUFNNkUsWUFBWSxHQUFHRCxlQUFlLEdBQ2hDMUcsTUFBTSxDQUFDQyxJQUFQLENBQVksS0FBSzVCLE1BQUwsQ0FBWTZCLG1CQUF4QixDQURnQyxHQUVoQyxDQUFDNEIsV0FBRCxDQUZKO0lBTUEsTUFBTThCLE1BQU0sR0FBRyxFQUFmO0lBS0EsTUFBTTNDLE9BQU8sR0FBRyxFQUFoQjs7SUFFQSxLQUFLLE1BQU0yRixDQUFYLElBQWdCRCxZQUFoQixFQUE4QjtNQUM1QixJQUFJO1FBQ0YsTUFBTSxJQUFBaEcsZUFBQSxFQUFTLEtBQUtwQyxZQUFkLEVBQTZCLGVBQWMsS0FBS1EsSUFBSyxLQUFJNkgsQ0FBRSxnQkFBM0QsRUFBNEUsTUFBTTtVQUN0RixJQUFJLEtBQUt2SSxNQUFMLENBQVk2QixtQkFBWixDQUFnQzBHLENBQWhDLEVBQW1DN0YsV0FBbkMsS0FBbURDLGlDQUF2RCxFQUF5RTtZQUN2RSxNQUFNLElBQUkvQyxpQkFBSixFQUFOO1VBQ0Q7UUFDRixDQUpLLENBQU47UUFLQSxNQUFNNEksTUFBTSxHQUFHLE1BQU0sSUFBQWxHLGVBQUEsRUFDbkIsS0FBS3BDLFlBRGMsRUFFbEIsZUFBYyxLQUFLUSxJQUFLLEtBQUk2SCxDQUFFLG1CQUZaLEVBR25CLFlBQVk7VUFDVixNQUFNQyxNQUFNLEdBQUcsTUFBTSxLQUFLM0YsdUJBQUwsQ0FBNkIwRixDQUE3QixDQUFyQjs7VUFDQSxJQUFJLEVBQUVDLE1BQU0sQ0FBQ3pGLFVBQVAsSUFBcUJ5RixNQUFNLENBQUN2RixZQUE5QixDQUFKLEVBQWlEO1lBQy9DLE1BQU0sSUFBSW5ELHVCQUFKLEVBQU47VUFDRDs7VUFDRCxPQUFPMEksTUFBUDtRQUNELENBVGtCLENBQXJCOztRQVdBLElBQUksQ0FBQ0osTUFBRCxJQUFXLENBQUNJLE1BQU0sQ0FBQ3pGLFVBQXZCLEVBQW1DO1VBQ2pDLE1BQU0sS0FBS25DLGlCQUFMLENBQ0gsT0FBTSxLQUFLRixJQUFLLEtBQUk2SCxDQUFFLGdDQUF2QixHQUNHLElBQUdDLE1BQU0sQ0FBQ0MsT0FBUSxPQUFNRCxNQUFNLENBQUN2RixZQUFhLHlCQUQvQyxHQUVHLDBFQUhDLENBQU47UUFLRDs7UUFDRCxNQUFNeUYsU0FBUyxHQUFHTixNQUFNLElBQUlJLE1BQU0sQ0FBQ3ZGLFlBQWpCLEdBQWdDdUYsTUFBTSxDQUFDdkYsWUFBdkMsR0FBc0R1RixNQUFNLENBQUN6RixVQUEvRTtRQUNBLE1BQU0sSUFBQVQsZUFBQSxFQUNKLEtBQUtwQyxZQURELEVBRUgsb0JBQW1CcUksQ0FBRSxVQUFTQyxNQUFNLENBQUNDLE9BQVEsT0FBTUMsU0FBVSxFQUYxRCxFQUdKLFlBQVksTUFBTSxLQUFLQyxlQUFMLENBQXFCSixDQUFyQixFQUF3QkcsU0FBeEIsQ0FIZCxDQUFOO1FBS0E5RixPQUFPLENBQUMyRixDQUFELENBQVAsR0FBYTtVQUFDSyxJQUFJLEVBQUVKLE1BQU0sQ0FBQ0MsT0FBZDtVQUF1QkksRUFBRSxFQUFFSDtRQUEzQixDQUFiO01BQ0QsQ0EvQkQsQ0ErQkUsT0FBT3RCLEdBQVAsRUFBWTtRQUNaN0IsTUFBTSxDQUFDZ0QsQ0FBRCxDQUFOLEdBQVluQixHQUFaO01BQ0Q7SUFDRjs7SUFFRCxLQUFLL0csR0FBTCxDQUFTc0csSUFBVCxDQUFjLGdCQUFkOztJQUVBLEtBQUssTUFBTSxDQUFDNEIsQ0FBRCxFQUFJQyxNQUFKLENBQVgsSUFBMEJ0SCxlQUFBLENBQUV1QixPQUFGLENBQVVHLE9BQVYsQ0FBMUIsRUFBOEM7TUFDNUMsS0FBS3ZDLEdBQUwsQ0FBUzZILEVBQVQsQ0FBYSxPQUFNLEtBQUt4SCxJQUFLLElBQUc2SCxDQUFFLGFBQVlDLE1BQU0sQ0FBQ0ksSUFBSyxPQUFNSixNQUFNLENBQUNLLEVBQUcsRUFBOUQsQ0FBZ0U1RSxLQUE1RTtJQUNEOztJQUVELEtBQUssTUFBTSxDQUFDc0UsQ0FBRCxFQUFJbkIsR0FBSixDQUFYLElBQXVCbEcsZUFBQSxDQUFFdUIsT0FBRixDQUFVOEMsTUFBVixDQUF2QixFQUEwQztNQUN4QyxJQUFJNkIsR0FBRyxZQUFZeEgsaUJBQW5CLEVBQXNDO1FBQ3BDLEtBQUtTLEdBQUwsQ0FBU2dHLElBQVQsQ0FDRyxRQUFPa0MsQ0FBRSxxREFBVixHQUFrRSxhQUFELENBQWN6RSxNQURqRjtNQUdELENBSkQsTUFJTyxJQUFJc0QsR0FBRyxZQUFZdEgsdUJBQW5CLEVBQTRDO1FBQ2pELEtBQUtPLEdBQUwsQ0FBU3NHLElBQVQsQ0FBZSxRQUFPNEIsQ0FBRSw0QkFBVixDQUFzQ3pFLE1BQXBEO01BQ0QsQ0FGTSxNQUVBO1FBRUwsS0FBS3pELEdBQUwsQ0FBU3lJLEtBQVQsQ0FBZ0IsUUFBT1AsQ0FBRSx1QkFBc0JuQixHQUFJLEVBQXBDLENBQXNDMkIsR0FBckQ7TUFDRDtJQUNGOztJQUNELE9BQU87TUFBQ25HLE9BQUQ7TUFBVTJDO0lBQVYsQ0FBUDtFQUNEOztFQVM0QixNQUF2QjFDLHVCQUF1QixDQUFDTixHQUFELEVBQU07SUFJakMsTUFBTTtNQUFDbUIsT0FBRDtNQUFVckI7SUFBVixJQUFxQixLQUFLckMsTUFBTCxDQUFZNkIsbUJBQVosQ0FBZ0NVLEdBQWhDLENBQTNCO0lBQ0EsSUFBSVUsWUFBWSxHQUFHLE1BQU0rRCxZQUFBLENBQUlnQyxnQkFBSixDQUFxQixLQUFLaEosTUFBTCxDQUFZeUcsVUFBakMsRUFBNkNwRSxPQUE3QyxDQUF6QjtJQUNBLElBQUlVLFVBQVUsR0FBRyxNQUFNaUUsWUFBQSxDQUFJaUMsMkJBQUosQ0FDckIsS0FBS2pKLE1BQUwsQ0FBWXlHLFVBRFMsRUFFckJwRSxPQUZxQixFQUdyQnFCLE9BSHFCLENBQXZCOztJQUtBLElBQUksQ0FBQ3dGLGFBQUEsQ0FBS0MsZUFBTCxDQUFxQmxHLFlBQXJCLEVBQW1DLEdBQW5DLEVBQXdDUyxPQUF4QyxDQUFMLEVBQXVEO01BRXJEVCxZQUFZLEdBQUcsSUFBZjtNQUNBRixVQUFVLEdBQUcsSUFBYjtJQUNEOztJQUNELElBQUlFLFlBQVksSUFBSUEsWUFBWSxLQUFLRixVQUFyQyxFQUFpRDtNQUUvQ0UsWUFBWSxHQUFHLElBQWY7SUFDRDs7SUFDRCxJQUFJRixVQUFVLElBQUksQ0FBQ21HLGFBQUEsQ0FBS0MsZUFBTCxDQUFxQnBHLFVBQXJCLEVBQWlDLEdBQWpDLEVBQXNDVyxPQUF0QyxDQUFuQixFQUFtRTtNQUVqRVgsVUFBVSxHQUFHLElBQWI7SUFDRDs7SUFDRCxPQUFPO01BQUMwRixPQUFPLEVBQUUvRSxPQUFWO01BQW1CWCxVQUFuQjtNQUErQkU7SUFBL0IsQ0FBUDtFQUNEOztFQVVvQixNQUFmMEYsZUFBZSxDQUFDbEYsV0FBRCxFQUFjQyxPQUFkLEVBQXVCO0lBQzFDLE1BQU07TUFBQ3JCO0lBQUQsSUFBWSxLQUFLckMsTUFBTCxDQUFZNkIsbUJBQVosQ0FBZ0M0QixXQUFoQyxDQUFsQjtJQUNBLE1BQU1ZLE9BQU8sR0FBRyxNQUFNLEtBQUtlLGFBQUwsQ0FBbUI7TUFDdkMzQixXQUR1QztNQUV2Q3BCLE9BRnVDO01BR3ZDc0MsTUFBTSxFQUFFakI7SUFIK0IsQ0FBbkIsQ0FBdEI7SUFLQSxPQUFPVyxPQUFPLENBQXlCLEdBQUUsS0FBSzNELElBQUssTUFBckMsQ0FBZDtJQUNBLE1BQU0sS0FBS1YsTUFBTCxDQUFZMkksZUFBWixDQUE0QmxGLFdBQTVCLEVBQXlDWSxPQUF6QyxDQUFOO0VBQ0Q7O0VBYVMsTUFBSitFLElBQUksQ0FBQztJQUFDM0YsV0FBRDtJQUFjNEY7RUFBZCxDQUFELEVBQTRCO0lBQ3BDLElBQUksQ0FBQyxLQUFLckosTUFBTCxDQUFZbUYsV0FBWixDQUF3QjFCLFdBQXhCLENBQUwsRUFBMkM7TUFDekMsTUFBTSxLQUFLN0MsaUJBQUwsQ0FBd0IsT0FBTSxLQUFLRixJQUFLLEtBQUkrQyxXQUFZLG9CQUF4RCxDQUFOO0lBQ0Q7O0lBRUQsTUFBTTZGLFNBQVMsR0FBRyxLQUFLdEosTUFBTCxDQUFZNkIsbUJBQVosQ0FBZ0M0QixXQUFoQyxDQUFsQjs7SUFHQSxJQUFJLENBQUM2RixTQUFTLENBQUNDLE9BQWYsRUFBd0I7TUFDdEIsTUFBTSxLQUFLM0ksaUJBQUwsQ0FDSCxPQUFNLEtBQUtGLElBQUssV0FBVStDLFdBQVkseUJBQXZDLEdBQ0csbUVBRkMsQ0FBTjtJQUlEOztJQUVELE1BQU0rRixVQUFVLEdBQUdGLFNBQVMsQ0FBQ0MsT0FBN0I7O0lBRUEsSUFBSSxDQUFDckksZUFBQSxDQUFFdUksYUFBRixDQUFnQkQsVUFBaEIsQ0FBTCxFQUFrQztNQUNoQyxNQUFNLEtBQUs1SSxpQkFBTCxDQUNILE9BQU0sS0FBS0YsSUFBSyxXQUFVK0MsV0FBWSwwQ0FEbkMsQ0FBTjtJQUdEOztJQUVELElBQUksQ0FBQ3ZDLGVBQUEsQ0FBRXdJLEdBQUYsQ0FBTUYsVUFBTixFQUFrQkgsVUFBbEIsQ0FBTCxFQUFvQztNQUNsQyxNQUFNLEtBQUt6SSxpQkFBTCxDQUNILE9BQU0sS0FBS0YsSUFBSyxXQUFVK0MsV0FBWSxtQ0FBa0M0RixVQUFXLEdBRGhGLENBQU47SUFHRDs7SUFFRCxNQUFNTSxNQUFNLEdBQUcsSUFBSUMsd0JBQUosQ0FBZUMsT0FBTyxDQUFDQyxRQUF2QixFQUFpQyxDQUFDTixVQUFVLENBQUNILFVBQUQsQ0FBWCxDQUFqQyxFQUEyRDtNQUN4RVUsR0FBRyxFQUFFLEtBQUsvSixNQUFMLENBQVlnSyxjQUFaLENBQTJCdkcsV0FBM0I7SUFEbUUsQ0FBM0QsQ0FBZjtJQUlBLE1BQU13RyxNQUFNLEdBQUcsSUFBSUMsaUJBQUosQ0FBZSxFQUFmLENBQWY7SUFFQVAsTUFBTSxDQUFDUSxFQUFQLENBQVUsYUFBVixFQUEwQkMsSUFBRCxJQUFVO01BQ2pDSCxNQUFNLENBQUNJLE9BQVAsQ0FBZUQsSUFBZjtNQUNBLEtBQUsvSixHQUFMLENBQVNBLEdBQVQsQ0FBYStKLElBQWI7SUFDRCxDQUhEO0lBS0EsTUFBTVQsTUFBTSxDQUFDVyxLQUFQLENBQWEsQ0FBYixDQUFOOztJQUVBLElBQUk7TUFDRixNQUFNWCxNQUFNLENBQUN2RCxJQUFQLEVBQU47TUFDQSxLQUFLL0YsR0FBTCxDQUFTNkgsRUFBVCxDQUFhLEdBQUVtQixVQUFXLG1CQUFkLENBQWlDcEYsS0FBN0M7TUFDQSxPQUFPO1FBQUNnRyxNQUFNLEVBQUVBLE1BQU0sQ0FBQ00sT0FBUDtNQUFULENBQVA7SUFDRCxDQUpELENBSUUsT0FBT25ELEdBQVAsRUFBWTtNQUNaLEtBQUsvRyxHQUFMLENBQVN5SSxLQUFULENBQWdCLHNDQUFxQ08sVUFBVyxNQUFLakMsR0FBRyxDQUFDdkcsT0FBUSxFQUFsRSxDQUFvRWtJLEdBQW5GO01BQ0EsT0FBTztRQUFDRCxLQUFLLEVBQUUxQixHQUFHLENBQUN2RyxPQUFaO1FBQXFCb0osTUFBTSxFQUFFQSxNQUFNLENBQUNNLE9BQVA7TUFBN0IsQ0FBUDtJQUNEO0VBQ0Y7O0FBanBCb0I7OztlQW9wQlJ4SyxnQiJ9
535
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVUERBVEVfQUxMIiwiTm90VXBkYXRhYmxlRXJyb3IiLCJFcnJvciIsIk5vVXBkYXRlc0F2YWlsYWJsZUVycm9yIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbmZpZyIsImtub3duRXh0ZW5zaW9ucyIsImlzSnNvbk91dHB1dCIsImNvbnN0cnVjdG9yIiwianNvbiIsImxvZyIsImNvbnNvbGUiLCJDbGlDb25zb2xlIiwianNvbk1vZGUiLCJCb29sZWFuIiwidHlwZSIsImV4dGVuc2lvblR5cGUiLCJfY3JlYXRlRmF0YWxFcnJvciIsIm1lc3NhZ2UiLCJkZWNvcmF0ZSIsImV4ZWN1dGUiLCJhcmdzIiwiY21kIiwiXyIsImlzRnVuY3Rpb24iLCJleGVjdXRlQ21kIiwiYmluZCIsImxpc3QiLCJzaG93SW5zdGFsbGVkIiwic2hvd1VwZGF0ZXMiLCJsc01zZyIsImluc3RhbGxlZE5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJrbm93bk5hbWVzIiwiZXh0cyIsInJlZHVjZSIsImFjYyIsIm5hbWUiLCJpbmNsdWRlcyIsImluc3RhbGxlZCIsInBrZ05hbWUiLCJzcGluV2l0aCIsImV4dCIsImRhdGEiLCJ0b1BhaXJzIiwiaW5zdGFsbFR5cGUiLCJJTlNUQUxMX1RZUEVfTlBNIiwidXBkYXRlcyIsImNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlIiwidXBkYXRlVmVyc2lvbiIsInNhZmVVcGRhdGUiLCJ1bnNhZmVVcGRhdGVWZXJzaW9uIiwidW5zYWZlVXBkYXRlIiwidXBUb0RhdGUiLCJsaXN0RGF0YSIsImluc3RhbGxUeHQiLCJncmV5IiwidXBkYXRlVHh0IiwidXBUb0RhdGVUeHQiLCJ1bnNhZmVVcGRhdGVUeHQiLCJpbnN0YWxsU3BlYyIsInZlcnNpb24iLCJ0eXBlVHh0IiwiSU5TVEFMTF9UWVBFX0dJVCIsIklOU1RBTExfVFlQRV9HSVRIVUIiLCJ5ZWxsb3ciLCJJTlNUQUxMX1RZUEVfTE9DQUwiLCJtYWdlbnRhIiwiZ3JlZW4iLCJjeWFuIiwiX2luc3RhbGwiLCJwYWNrYWdlTmFtZSIsImV4dERhdGEiLCJpbnN0YWxsT3B0cyIsInByb2JhYmxlRXh0TmFtZSIsInNwbGl0IiwibGVuZ3RoIiwicmVwbGFjZSIsInBrZ1ZlciIsInBhdGgiLCJpc0Fic29sdXRlIiwicmVzb2x2ZSIsInNwbGl0cyIsIm1zZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc0luc3RhbGxlZCIsImluc3RhbGxWaWFOcG0iLCJleHROYW1lIiwiZXh0TWFuaWZlc3QiLCJlcnJvcnMiLCJ3YXJuaW5ncyIsIkIiLCJhbGwiLCJnZXRQcm9ibGVtcyIsImdldFdhcm5pbmdzIiwiZXJyb3JNYXAiLCJNYXAiLCJ3YXJuaW5nTWFwIiwiZXJyb3JTdW1tYXJpZXMiLCJ3YXJuaW5nU3VtbWFyaWVzIiwiZ2V0VmFsaWRhdGlvblJlc3VsdFN1bW1hcmllcyIsImlzRW1wdHkiLCJqb2luIiwid2FybiIsImFkZEV4dGVuc2lvbiIsImVudiIsImhhc0FwcGl1bURlcGVuZGVuY3kiLCJhcHBpdW1Ib21lIiwicGFja2FnZURpZENoYW5nZSIsImluZm8iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJucG1TcGVjIiwic3BlY01zZyIsInBrZ0pzb25EYXRhIiwibnBtIiwiaW5zdGFsbFBhY2thZ2UiLCJ2YWxpZGF0ZVBhY2thZ2VKc29uIiwiZ2V0RXh0ZW5zaW9uRmllbGRzIiwiZXJyIiwicGtnSnNvbiIsImFwcGl1bSIsInBlZXJEZXBlbmRlbmNpZXMiLCJyZXN1bHQiLCJhcHBpdW1WZXJzaW9uIiwiY3JlYXRlTWlzc2luZ0ZpZWxkRXJyb3IiLCJmaWVsZCIsIlJlZmVyZW5jZUVycm9yIiwidmFsaWRhdGVFeHRlbnNpb25GaWVsZHMiLCJleHRNZXRhZGF0YSIsIl91bmluc3RhbGwiLCJ1bmluc3RhbGxQYWNrYWdlIiwicmVtb3ZlRXh0ZW5zaW9uIiwib2siLCJfdXBkYXRlIiwidW5zYWZlIiwic2hvdWxkVXBkYXRlQWxsIiwiZXh0c1RvVXBkYXRlIiwiZSIsInVwZGF0ZSIsImN1cnJlbnQiLCJ1cGRhdGVWZXIiLCJ1cGRhdGVFeHRlbnNpb24iLCJmcm9tIiwidG8iLCJlcnJvciIsInJlZCIsImdldExhdGVzdFZlcnNpb24iLCJnZXRMYXRlc3RTYWZlVXBncmFkZVZlcnNpb24iLCJ1dGlsIiwiY29tcGFyZVZlcnNpb25zIiwiX3J1biIsInNjcmlwdE5hbWUiLCJleHRyYUFyZ3MiLCJleHRDb25maWciLCJzY3JpcHRzIiwiZXh0U2NyaXB0cyIsImlzUGxhaW5PYmplY3QiLCJoYXMiLCJydW5uZXIiLCJTdWJQcm9jZXNzIiwicHJvY2VzcyIsImV4ZWNQYXRoIiwiY3dkIiwiZ2V0SW5zdGFsbFBhdGgiLCJvdXRwdXQiLCJSaW5nQnVmZmVyIiwib24iLCJsaW5lIiwiZW5xdWV1ZSIsInN0YXJ0IiwiZ2V0QnVmZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZXh0ZW5zaW9uLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtucG0sIHV0aWwsIGVudiwgY29uc29sZX0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7c3BpbldpdGgsIFJpbmdCdWZmZXJ9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtTdWJQcm9jZXNzfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHtcbiAgSU5TVEFMTF9UWVBFX05QTSxcbiAgSU5TVEFMTF9UWVBFX0dJVCxcbiAgSU5TVEFMTF9UWVBFX0dJVEhVQixcbiAgSU5TVEFMTF9UWVBFX0xPQ0FMLFxufSBmcm9tICcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQge3BhY2thZ2VEaWRDaGFuZ2V9IGZyb20gJy4uL2V4dGVuc2lvbi9wYWNrYWdlLWNoYW5nZWQnO1xuXG5jb25zdCBVUERBVEVfQUxMID0gJ2luc3RhbGxlZCc7XG5cbmNsYXNzIE5vdFVwZGF0YWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbmNsYXNzIE5vVXBkYXRlc0F2YWlsYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqL1xuY2xhc3MgRXh0ZW5zaW9uQ29tbWFuZCB7XG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBgRHJpdmVyQ29uZmlnYCBvciBgUGx1Z2luQ29uZmlnYCwgZGVwZW5kaW5nIG9uIGBFeHRUeXBlYC5cbiAgICogQHR5cGUge0V4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn1cbiAgICovXG4gIGNvbmZpZztcblxuICAvKipcbiAgICoge0BsaW5rY29kZSBSZWNvcmR9IG9mIG9mZmljaWFsIHBsdWdpbnMgb3IgZHJpdmVycy5cbiAgICogQHR5cGUge0tub3duRXh0ZW5zaW9uczxFeHRUeXBlPn1cbiAgICovXG4gIGtub3duRXh0ZW5zaW9ucztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBjb21tYW5kIG91dHB1dCBoYXMgYmVlbiByZXF1ZXN0ZWQgYXMgSlNPTi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBpc0pzb25PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEV4dGVuc2lvbkNvbW1hbmRcbiAgICogQHBhcmFtIHtFeHRlbnNpb25Db21tYW5kT3B0aW9uczxFeHRUeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZywganNvbn0pIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmxvZyA9IG5ldyBjb25zb2xlLkNsaUNvbnNvbGUoe2pzb25Nb2RlOiBqc29ufSk7XG4gICAgdGhpcy5pc0pzb25PdXRwdXQgPSBCb29sZWFuKGpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIGBkcml2ZXJgIG9yIGBwbHVnaW5gLCBkZXBlbmRpbmcgb24gdGhlIGBFeHRlbnNpb25Db25maWdgLlxuICAgKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmV4dGVuc2lvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBhIG1lc3NhZ2UgYW5kIHJldHVybnMgYW4ge0BsaW5rY29kZSBFcnJvcn0gdG8gdGhyb3cuXG4gICAqXG4gICAqIEZvciBUUyB0byB1bmRlcnN0YW5kIHRoYXQgYSBmdW5jdGlvbiB0aHJvd3MgYW4gZXhjZXB0aW9uLCBpdCBtdXN0IGFjdHVhbGx5IHRocm93IGFuIGV4Y2VwdGlvbi0tXG4gICAqIGluIG90aGVyIHdvcmRzLCBfY2FsbGluZ18gYSBmdW5jdGlvbiB3aGljaCBpcyBndWFyYW50ZWVkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpcyBub3QgZW5vdWdoLS1cbiAgICogbm9yIGlzIHNvbWV0aGluZyBsaWtlIGBAcmV0dXJucyB7bmV2ZXJ9YCB3aGljaCBkb2VzIG5vdCBpbXBseSBhIHRocm93biBleGNlcHRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICogQHJldHVybnMge0Vycm9yfVxuICAgKi9cbiAgX2NyZWF0ZUZhdGFsRXJyb3IobWVzc2FnZSkge1xuICAgIHJldHVybiBuZXcgRXJyb3IodGhpcy5sb2cuZGVjb3JhdGUobWVzc2FnZSwgJ2Vycm9yJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgYSBDTEkgcGFyc2UgYW5kIHJ1biBhbiBleHRlbnNpb24gY29tbWFuZCBiYXNlZCBvbiBpdHMgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIGEga2V5L3ZhbHVlIG9iamVjdCB3aXRoIENMSSBmbGFncyBhbmQgdmFsdWVzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8b2JqZWN0Pn0gdGhlIHJlc3VsdCBvZiB0aGUgc3BlY2lmaWMgY29tbWFuZCB3aGljaCBpcyBleGVjdXRlZFxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZShhcmdzKSB7XG4gICAgY29uc3QgY21kID0gYXJnc1tgJHt0aGlzLnR5cGV9Q29tbWFuZGBdO1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRoaXNbY21kXSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoYENhbm5vdCBoYW5kbGUgJHt0aGlzLnR5cGV9IGNvbW1hbmQgJHtjbWR9YCk7XG4gICAgfVxuICAgIGNvbnN0IGV4ZWN1dGVDbWQgPSB0aGlzW2NtZF0uYmluZCh0aGlzKTtcbiAgICByZXR1cm4gYXdhaXQgZXhlY3V0ZUNtZChhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGV4dGVuc2lvbnNcbiAgICpcbiAgICogQHBhcmFtIHtMaXN0T3B0aW9uc30gb3B0c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEV4dGVuc2lvbkxpc3REYXRhPn0gbWFwIG9mIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gZGF0YVxuICAgKi9cbiAgYXN5bmMgbGlzdCh7c2hvd0luc3RhbGxlZCwgc2hvd1VwZGF0ZXN9KSB7XG4gICAgY29uc3QgbHNNc2cgPSBgTGlzdGluZyAke3Nob3dJbnN0YWxsZWQgPyAnaW5zdGFsbGVkJyA6ICdhdmFpbGFibGUnfSAke3RoaXMudHlwZX1zYDtcbiAgICBjb25zdCBpbnN0YWxsZWROYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuICAgIGNvbnN0IGtub3duTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmtub3duRXh0ZW5zaW9ucyk7XG4gICAgY29uc3QgZXh0cyA9IFsuLi5pbnN0YWxsZWROYW1lcywgLi4ua25vd25OYW1lc10ucmVkdWNlKFxuICAgICAgKGFjYywgbmFtZSkgPT4ge1xuICAgICAgICBpZiAoIWFjY1tuYW1lXSkge1xuICAgICAgICAgIGlmIChpbnN0YWxsZWROYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgICAgYWNjW25hbWVdID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW25hbWVdLFxuICAgICAgICAgICAgICBpbnN0YWxsZWQ6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXNob3dJbnN0YWxsZWQpIHtcbiAgICAgICAgICAgIGFjY1tuYW1lXSA9IHtwa2dOYW1lOiB0aGlzLmtub3duRXh0ZW5zaW9uc1tuYW1lXSwgaW5zdGFsbGVkOiBmYWxzZX07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGFjY3VtdWxhdG9yIGNvbnRhaW5zIGVpdGhlciB7QGxpbmtjb2RlIFVuaW5zdGFsbGVkRXh0ZW5zaW9uTElzdERhdGF9IF9vcl9cbiAgICAgICAqIHtAbGlua2NvZGUgSW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGF9IHdpdGhvdXQgdXBncmFkZSBpbmZvcm1hdGlvbiAod2hpY2ggaXMgYWRkZWQgYnkgdGhlIGJlbG93IGNvZGUgYmxvY2spXG4gICAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxQYXJ0aWFsPEluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPnxVbmluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPn1cbiAgICAgICAqLyAoe30pXG4gICAgKTtcblxuICAgIC8vIGlmIHdlIHdhbnQgdG8gc2hvdyB3aGV0aGVyIHVwZGF0ZXMgYXJlIGF2YWlsYWJsZSwgcHV0IHRoYXQgYmVoaW5kIGEgc3Bpbm5lclxuICAgIGF3YWl0IHNwaW5XaXRoKHRoaXMuaXNKc29uT3V0cHV0LCBsc01zZywgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFzaG93VXBkYXRlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtleHQsIGRhdGFdIG9mIF8udG9QYWlycyhleHRzKSkge1xuICAgICAgICBpZiAoIWRhdGEuaW5zdGFsbGVkIHx8IGRhdGEuaW5zdGFsbFR5cGUgIT09IElOU1RBTExfVFlQRV9OUE0pIHtcbiAgICAgICAgICAvLyBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciB1cGRhdGVzIG9uIGV4dHMgdGhhdCBhcmVuJ3QgaW5zdGFsbGVkXG4gICAgICAgICAgLy8gYWxzbyBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciB1cGRhdGVzIG9uIG5vbi1ucG0gZXh0c1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZXMgPSBhd2FpdCB0aGlzLmNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlKGV4dCk7XG4gICAgICAgIGRhdGEudXBkYXRlVmVyc2lvbiA9IHVwZGF0ZXMuc2FmZVVwZGF0ZTtcbiAgICAgICAgZGF0YS51bnNhZmVVcGRhdGVWZXJzaW9uID0gdXBkYXRlcy51bnNhZmVVcGRhdGU7XG4gICAgICAgIGRhdGEudXBUb0RhdGUgPSB1cGRhdGVzLnNhZmVVcGRhdGUgPT09IG51bGwgJiYgdXBkYXRlcy51bnNhZmVVcGRhdGUgPT09IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBsaXN0RGF0YSA9IC8qKiBAdHlwZSB7RXh0ZW5zaW9uTGlzdERhdGF9ICovIChleHRzKTtcblxuICAgIC8vIGlmIHdlJ3JlIGp1c3QgZ2V0dGluZyB0aGUgZGF0YSwgc2hvcnQgY2lyY3VpdCByZXR1cm4gaGVyZSBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueVxuICAgIC8vIGZvcm1hdHRpbmcgbG9naWNcbiAgICBpZiAodGhpcy5pc0pzb25PdXRwdXQpIHtcbiAgICAgIHJldHVybiBsaXN0RGF0YTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBkYXRhXSBvZiBfLnRvUGFpcnMobGlzdERhdGEpKSB7XG4gICAgICBsZXQgaW5zdGFsbFR4dCA9ICcgW25vdCBpbnN0YWxsZWRdJy5ncmV5O1xuICAgICAgbGV0IHVwZGF0ZVR4dCA9ICcnO1xuICAgICAgbGV0IHVwVG9EYXRlVHh0ID0gJyc7XG4gICAgICBsZXQgdW5zYWZlVXBkYXRlVHh0ID0gJyc7XG4gICAgICBpZiAoZGF0YS5pbnN0YWxsZWQpIHtcbiAgICAgICAgY29uc3Qge2luc3RhbGxUeXBlLCBpbnN0YWxsU3BlYywgdXBkYXRlVmVyc2lvbiwgdW5zYWZlVXBkYXRlVmVyc2lvbiwgdmVyc2lvbiwgdXBUb0RhdGV9ID1cbiAgICAgICAgICBkYXRhO1xuICAgICAgICBsZXQgdHlwZVR4dDtcbiAgICAgICAgc3dpdGNoIChpbnN0YWxsVHlwZSkge1xuICAgICAgICAgIGNhc2UgSU5TVEFMTF9UWVBFX0dJVDpcbiAgICAgICAgICBjYXNlIElOU1RBTExfVFlQRV9HSVRIVUI6XG4gICAgICAgICAgICB0eXBlVHh0ID0gYChjbG9uZWQgZnJvbSAke2luc3RhbGxTcGVjfSlgLnllbGxvdztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgSU5TVEFMTF9UWVBFX0xPQ0FMOlxuICAgICAgICAgICAgdHlwZVR4dCA9IGAobGlua2VkIGZyb20gJHtpbnN0YWxsU3BlY30pYC5tYWdlbnRhO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHR5cGVUeHQgPSAnKE5QTSknO1xuICAgICAgICB9XG4gICAgICAgIGluc3RhbGxUeHQgPSBgQCR7dmVyc2lvbi55ZWxsb3d9ICR7KCdbaW5zdGFsbGVkICcgKyB0eXBlVHh0ICsgJ10nKS5ncmVlbn1gO1xuXG4gICAgICAgIGlmIChzaG93VXBkYXRlcykge1xuICAgICAgICAgIGlmICh1cGRhdGVWZXJzaW9uKSB7XG4gICAgICAgICAgICB1cGRhdGVUeHQgPSBgIFske3VwZGF0ZVZlcnNpb259IGF2YWlsYWJsZV1gLm1hZ2VudGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1cFRvRGF0ZSkge1xuICAgICAgICAgICAgdXBUb0RhdGVUeHQgPSBgIFtVcCB0byBkYXRlXWAuZ3JlZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1bnNhZmVVcGRhdGVWZXJzaW9uKSB7XG4gICAgICAgICAgICB1bnNhZmVVcGRhdGVUeHQgPSBgIFske3Vuc2FmZVVwZGF0ZVZlcnNpb259IGF2YWlsYWJsZSAocG90ZW50aWFsbHkgdW5zYWZlKV1gLmN5YW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nLmxvZyhgLSAke25hbWUueWVsbG93fSR7aW5zdGFsbFR4dH0ke3VwZGF0ZVR4dH0ke3VwVG9EYXRlVHh0fSR7dW5zYWZlVXBkYXRlVHh0fWApO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0RGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxsIGFuIGV4dGVuc2lvblxuICAgKlxuICAgKiBAcGFyYW0ge0luc3RhbGxBcmdzfSBhcmdzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RXh0UmVjb3JkPEV4dFR5cGU+Pn0gbWFwIG9mIGFsbCBpbnN0YWxsZWQgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBkYXRhXG4gICAqL1xuICBhc3luYyBfaW5zdGFsbCh7aW5zdGFsbFNwZWMsIGluc3RhbGxUeXBlLCBwYWNrYWdlTmFtZX0pIHtcbiAgICAvKiogQHR5cGUge0V4dGVuc2lvbkZpZWxkczxFeHRUeXBlPn0gKi9cbiAgICBsZXQgZXh0RGF0YTtcblxuICAgIGlmIChwYWNrYWdlTmFtZSAmJiBbSU5TVEFMTF9UWVBFX0xPQ0FMLCBJTlNUQUxMX1RZUEVfTlBNXS5pbmNsdWRlcyhpbnN0YWxsVHlwZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoYFdoZW4gdXNpbmcgLS1zb3VyY2U9JHtpbnN0YWxsVHlwZX0sIGNhbm5vdCBhbHNvIHVzZSAtLXBhY2thZ2VgKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhY2thZ2VOYW1lICYmIFtJTlNUQUxMX1RZUEVfR0lULCBJTlNUQUxMX1RZUEVfR0lUSFVCXS5pbmNsdWRlcyhpbnN0YWxsVHlwZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoYFdoZW4gdXNpbmcgLS1zb3VyY2U9JHtpbnN0YWxsVHlwZX0sIG11c3QgYWxzbyB1c2UgLS1wYWNrYWdlYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHR5cGUge0luc3RhbGxWaWFOcG1BcmdzfVxuICAgICAqL1xuICAgIGxldCBpbnN0YWxsT3B0cztcblxuICAgIC8qKlxuICAgICAqIFRoZSBwcm9iYWJsZSAoPykgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGRlcml2ZWQgZnJvbSB0aGUgaW5zdGFsbCBzcGVjLlxuICAgICAqXG4gICAgICogSWYgdXNpbmcgYSBsb2NhbCBpbnN0YWxsIHR5cGUsIHRoaXMgd2lsbCByZW1haW4gZW1wdHkuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsZXQgcHJvYmFibGVFeHROYW1lID0gJyc7XG5cbiAgICAvLyBkZXBlbmRpbmcgb24gYGluc3RhbGxUeXBlYCwgYnVpbGQgdGhlIG9wdGlvbnMgdG8gcGFzcyBpbnRvIGBpbnN0YWxsVmlhTnBtYFxuICAgIGlmIChpbnN0YWxsVHlwZSA9PT0gSU5TVEFMTF9UWVBFX0dJVEhVQikge1xuICAgICAgaWYgKGluc3RhbGxTcGVjLnNwbGl0KCcvJykubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoXG4gICAgICAgICAgYEdpdGh1YiAke3RoaXMudHlwZX0gc3BlYyAke2luc3RhbGxTcGVjfSBhcHBlYXJlZCB0byBiZSBpbnZhbGlkOyBgICtcbiAgICAgICAgICAgICdpdCBzaG91bGQgYmUgb2YgdGhlIGZvcm0gPG9yZz4vPHJlcG8+J1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaW5zdGFsbE9wdHMgPSB7XG4gICAgICAgIGluc3RhbGxTcGVjLFxuICAgICAgICBwa2dOYW1lOiAvKiogQHR5cGUge3N0cmluZ30gKi8gKHBhY2thZ2VOYW1lKSxcbiAgICAgIH07XG4gICAgICBwcm9iYWJsZUV4dE5hbWUgPSBpbnN0YWxsU3BlYztcbiAgICB9IGVsc2UgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfR0lUKSB7XG4gICAgICAvLyBnaXQgdXJscyBjYW4gaGF2ZSAnLmdpdCcgYXQgdGhlIGVuZCwgYnV0IHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBhbmQgd291bGQgY29tcGxpY2F0ZSB0aGVcbiAgICAgIC8vIHdheSB3ZSBkb3dubG9hZCBhbmQgbmFtZSBkaXJlY3Rvcmllcywgc28gd2UgY2FuIGp1c3QgcmVtb3ZlIGl0XG4gICAgICBpbnN0YWxsU3BlYyA9IGluc3RhbGxTcGVjLnJlcGxhY2UoL1xcLmdpdCQvLCAnJyk7XG4gICAgICBpbnN0YWxsT3B0cyA9IHtcbiAgICAgICAgaW5zdGFsbFNwZWMsXG4gICAgICAgIHBrZ05hbWU6IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocGFja2FnZU5hbWUpLFxuICAgICAgfTtcbiAgICAgIHByb2JhYmxlRXh0TmFtZSA9IGluc3RhbGxTcGVjO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGtnTmFtZSwgcGtnVmVyO1xuICAgICAgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfTE9DQUwpIHtcbiAgICAgICAgcGtnTmFtZSA9IHBhdGguaXNBYnNvbHV0ZShpbnN0YWxsU3BlYykgPyBpbnN0YWxsU3BlYyA6IHBhdGgucmVzb2x2ZShpbnN0YWxsU3BlYyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBhdCB0aGlzIHBvaW50IHdlIGhhdmUgZWl0aGVyIGFuIG5wbSBwYWNrYWdlIG9yIGFuIGFwcGl1bSB2ZXJpZmllZCBleHRlbnNpb25cbiAgICAgICAgLy8gbmFtZSBvciBhIGxvY2FsIHBhdGguIGJvdGggb2Ygd2hpY2ggd2lsbCBiZSBpbnN0YWxsZWQgdmlhIG5wbS5cbiAgICAgICAgLy8gZXh0ZW5zaW9ucyBpbnN0YWxsZWQgdmlhIG5wbSBjYW4gaW5jbHVkZSB2ZXJzaW9ucyBvciB0YWdzIGFmdGVyIHRoZSAnQCdcbiAgICAgICAgLy8gc2lnbiwgc28gY2hlY2sgZm9yIHRoYXQuIFdlIGFsc28gbmVlZCB0byBiZSBjYXJlZnVsIHRoYXQgcGFja2FnZSBuYW1lcyB0aGVtc2VsdmVzIGNhblxuICAgICAgICAvLyBjb250YWluIHRoZSAnQCcgc3ltYm9sLCBhcyBpbiBgbnBtIGluc3RhbGwgQGFwcGl1bS9mYWtlLWRyaXZlckAxLjIuMGBcbiAgICAgICAgbGV0IG5hbWU7XG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IGluc3RhbGxTcGVjLnNwbGl0KCdAJyk7XG4gICAgICAgIGlmIChpbnN0YWxsU3BlY1swXSA9PT0gJ0AnKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIGFuIG5wbSBvcmcgaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2UgbmFtZVxuICAgICAgICAgIFtuYW1lLCBwa2dWZXJdID0gW2BAJHtzcGxpdHNbMV19YCwgc3BsaXRzWzJdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBjYXNlIHdpdGhvdXQgYW4gbnBtIG9yZ1xuICAgICAgICAgIFtuYW1lLCBwa2dWZXJdID0gc3BsaXRzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfTlBNKSB7XG4gICAgICAgICAgLy8gaWYgd2UncmUgaW5zdGFsbGluZyBhIG5hbWVkIHBhY2thZ2UgZnJvbSBucG0sIHdlIGRvbid0IG5lZWQgdG8gY2hlY2tcbiAgICAgICAgICAvLyBhZ2FpbnN0IHRoZSBhcHBpdW0gZXh0ZW5zaW9uIGxpc3Q7IGp1c3QgdXNlIHRoZSBpbnN0YWxsU3BlYyBhcyBpc1xuICAgICAgICAgIHBrZ05hbWUgPSBuYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlmIHdlJ3JlIGluc3RhbGxpbmcgYSBuYW1lZCBhcHBpdW0gZHJpdmVyIChsaWtlICd4Y3VpdGVzdCcpIHdlIG5lZWQgdG9cbiAgICAgICAgICAvLyBkZXJlZmVyZW5jZSB0aGUgYWN0dWFsIG5wbSBwYWNrYWdlICgnYXBwaXVwbS14Y3VpdGVzdC1kcml2ZXInKSwgc29cbiAgICAgICAgICAvLyBjaGVjayBpdCBleGlzdHMgYW5kIGdldCB0aGUgY29ycmVjdCBwYWNrYWdlXG4gICAgICAgICAgY29uc3Qga25vd25OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMua25vd25FeHRlbnNpb25zKTtcbiAgICAgICAgICBpZiAoIV8uaW5jbHVkZXMoa25vd25OYW1lcywgbmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICAgIGBDb3VsZCBub3QgcmVzb2x2ZSAke3RoaXMudHlwZX07IGFyZSB5b3Ugc3VyZSBpdCdzIGluIHRoZSBsaXN0IGAgK1xuICAgICAgICAgICAgICBgb2Ygc3VwcG9ydGVkICR7dGhpcy50eXBlfXM/ICR7SlNPTi5zdHJpbmdpZnkoa25vd25OYW1lcyl9YDtcbiAgICAgICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IobXNnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvYmFibGVFeHROYW1lID0gbmFtZTtcbiAgICAgICAgICBwa2dOYW1lID0gdGhpcy5rbm93bkV4dGVuc2lvbnNbbmFtZV07XG4gICAgICAgICAgLy8gZ2l2ZW4gdGhhdCB3ZSdsbCB1c2UgdGhlIGluc3RhbGwgdHlwZSBpbiB0aGUgZHJpdmVyIGpzb24sIHN0b3JlIGl0IGFzXG4gICAgICAgICAgLy8gJ25wbScgbm93XG4gICAgICAgICAgaW5zdGFsbFR5cGUgPSBJTlNUQUxMX1RZUEVfTlBNO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpbnN0YWxsT3B0cyA9IHtpbnN0YWxsU3BlYywgcGtnTmFtZSwgcGtnVmVyfTtcbiAgICB9XG5cbiAgICAvLyBmYWlsIGZhc3QgaGVyZSBpZiB3ZSBjYW5cbiAgICBpZiAocHJvYmFibGVFeHROYW1lICYmIHRoaXMuY29uZmlnLmlzSW5zdGFsbGVkKHByb2JhYmxlRXh0TmFtZSkpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoXG4gICAgICAgIGBBICR7dGhpcy50eXBlfSBuYW1lZCBcIiR7cHJvYmFibGVFeHROYW1lfVwiIGlzIGFscmVhZHkgaW5zdGFsbGVkLiBgICtcbiAgICAgICAgICBgRGlkIHlvdSBtZWFuIHRvIHVwZGF0ZT8gUnVuIFwiYXBwaXVtICR7dGhpcy50eXBlfSB1cGRhdGVcIi4gU2VlIGAgK1xuICAgICAgICAgIGBpbnN0YWxsZWQgJHt0aGlzLnR5cGV9cyB3aXRoIFwiYXBwaXVtICR7dGhpcy50eXBlfSBsaXN0IC0taW5zdGFsbGVkXCIuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBleHREYXRhID0gYXdhaXQgdGhpcy5pbnN0YWxsVmlhTnBtKGluc3RhbGxPcHRzKTtcblxuICAgIC8vIHRoaXMgX3Nob3VsZF8gYmUgdGhlIHNhbWUgYXMgYHByb2JhYmx5RXh0TmFtZWAgYXMgdGhlIG9uZSBkZXJpdmVkIGFib3ZlIHVubGVzc1xuICAgIC8vIGluc3RhbGwgdHlwZSBpcyBsb2NhbC5cbiAgICBjb25zdCBleHROYW1lID0gZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke3RoaXMudHlwZX1OYW1lYCldO1xuXG4gICAgLy8gY2hlY2sgX2Egc2Vjb25kIHRpbWVfIHdpdGggdGhlIG1vcmUtYWNjdXJhdGUgZXh0TmFtZVxuICAgIGlmICh0aGlzLmNvbmZpZy5pc0luc3RhbGxlZChleHROYW1lKSkge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcihcbiAgICAgICAgYEEgJHt0aGlzLnR5cGV9IG5hbWVkIFwiJHtleHROYW1lfVwiIGlzIGFscmVhZHkgaW5zdGFsbGVkLiBgICtcbiAgICAgICAgICBgRGlkIHlvdSBtZWFuIHRvIHVwZGF0ZT8gUnVuIFwiYXBwaXVtICR7dGhpcy50eXBlfSB1cGRhdGVcIi4gU2VlIGAgK1xuICAgICAgICAgIGBpbnN0YWxsZWQgJHt0aGlzLnR5cGV9cyB3aXRoIFwiYXBwaXVtICR7dGhpcy50eXBlfSBsaXN0IC0taW5zdGFsbGVkXCIuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGZpZWxkIGRvZXMgbm90IGV4aXN0IGFzIHN1Y2ggaW4gdGhlIG1hbmlmZXN0IChpdCdzIHVzZWQgYXMgYSBwcm9wZXJ0eSBuYW1lIGluc3RlYWQpXG4gICAgLy8gc28gdGhhdCdzIHdoeSBpdCdzIGJlaW5nIHJlbW92ZWQgaGVyZS5cbiAgICBkZWxldGUgZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke3RoaXMudHlwZX1OYW1lYCldO1xuXG4gICAgLyoqIEB0eXBlIHtFeHRNYW5pZmVzdDxFeHRUeXBlPn0gKi9cbiAgICBjb25zdCBleHRNYW5pZmVzdCA9IHsuLi5leHREYXRhLCBpbnN0YWxsVHlwZSwgaW5zdGFsbFNwZWN9O1xuICAgIGNvbnN0IFtlcnJvcnMsIHdhcm5pbmdzXSA9IGF3YWl0IEIuYWxsKFtcbiAgICAgIHRoaXMuY29uZmlnLmdldFByb2JsZW1zKGV4dE5hbWUsIGV4dE1hbmlmZXN0KSxcbiAgICAgIHRoaXMuY29uZmlnLmdldFdhcm5pbmdzKGV4dE5hbWUsIGV4dE1hbmlmZXN0KSxcbiAgICBdKTtcbiAgICBjb25zdCBlcnJvck1hcCA9IG5ldyBNYXAoW1tleHROYW1lLCBlcnJvcnNdXSk7XG4gICAgY29uc3Qgd2FybmluZ01hcCA9IG5ldyBNYXAoW1tleHROYW1lLCB3YXJuaW5nc11dKTtcbiAgICBjb25zdCB7ZXJyb3JTdW1tYXJpZXMsIHdhcm5pbmdTdW1tYXJpZXN9ID0gdGhpcy5jb25maWcuZ2V0VmFsaWRhdGlvblJlc3VsdFN1bW1hcmllcyhcbiAgICAgIGVycm9yTWFwLFxuICAgICAgd2FybmluZ01hcFxuICAgICk7XG5cbiAgICBpZiAoIV8uaXNFbXB0eShlcnJvclN1bW1hcmllcykpIHtcbiAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoZXJyb3JTdW1tYXJpZXMuam9pbignXFxuJykpO1xuICAgIH1cblxuICAgIC8vIG5vdGUgdGhhdCB3ZSB3b24ndCBzaG93IGFueSB3YXJuaW5ncyBpZiB0aGVyZSB3ZXJlIGVycm9ycy5cbiAgICBpZiAoIV8uaXNFbXB0eSh3YXJuaW5nU3VtbWFyaWVzKSkge1xuICAgICAgdGhpcy5sb2cud2Fybih3YXJuaW5nU3VtbWFyaWVzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5hZGRFeHRlbnNpb24oZXh0TmFtZSwgZXh0TWFuaWZlc3QpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBpZiB3ZSd2ZSBjaGFuZ2VkIHRoZSBsb2NhbCBgcGFja2FnZS5qc29uYFxuICAgIGlmIChhd2FpdCBlbnYuaGFzQXBwaXVtRGVwZW5kZW5jeSh0aGlzLmNvbmZpZy5hcHBpdW1Ib21lKSkge1xuICAgICAgYXdhaXQgcGFja2FnZURpZENoYW5nZSh0aGlzLmNvbmZpZy5hcHBpdW1Ib21lKTtcbiAgICB9XG5cbiAgICAvLyBsb2cgaW5mbyBmb3IgdGhlIHVzZXJcbiAgICB0aGlzLmxvZy5pbmZvKHRoaXMuZ2V0UG9zdEluc3RhbGxUZXh0KHtleHROYW1lLCBleHREYXRhfSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnM7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbCBhbiBleHRlbnNpb24gdmlhIE5QTVxuICAgKlxuICAgKiBAcGFyYW0ge0luc3RhbGxWaWFOcG1BcmdzfSBhcmdzXG4gICAqL1xuICBhc3luYyBpbnN0YWxsVmlhTnBtKHtpbnN0YWxsU3BlYywgcGtnTmFtZSwgcGtnVmVyfSkge1xuICAgIGNvbnN0IG5wbVNwZWMgPSBgJHtwa2dOYW1lfSR7cGtnVmVyID8gJ0AnICsgcGtnVmVyIDogJyd9YDtcbiAgICBjb25zdCBzcGVjTXNnID0gbnBtU3BlYyA9PT0gaW5zdGFsbFNwZWMgPyAnJyA6IGAgdXNpbmcgTlBNIGluc3RhbGwgc3BlYyAnJHtucG1TcGVjfSdgO1xuICAgIGNvbnN0IG1zZyA9IGBJbnN0YWxsaW5nICcke2luc3RhbGxTcGVjfScke3NwZWNNc2d9YDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGtnSnNvbkRhdGEgPSBhd2FpdCBzcGluV2l0aCh0aGlzLmlzSnNvbk91dHB1dCwgbXNnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBrZ0pzb25EYXRhID0gYXdhaXQgbnBtLmluc3RhbGxQYWNrYWdlKHRoaXMuY29uZmlnLmFwcGl1bUhvbWUsIHBrZ05hbWUsIHtcbiAgICAgICAgICBwa2dWZXIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUGFja2FnZUpzb24ocGtnSnNvbkRhdGEsIGluc3RhbGxTcGVjKTtcbiAgICAgICAgcmV0dXJuIHBrZ0pzb25EYXRhO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0aGlzLmdldEV4dGVuc2lvbkZpZWxkcyhwa2dKc29uRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKGBFbmNvdW50ZXJlZCBhbiBlcnJvciB3aGVuIGluc3RhbGxpbmcgcGFja2FnZTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0ZXh0IHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYWZ0ZXIgYW4gZXh0ZW5zaW9uIGhhcyBiZWVuIGluc3RhbGxlZC4gVGhpc1xuICAgKiBpcyBkZXNpZ25lZCB0byBiZSBvdmVycmlkZGVuIGJ5IGRyaXZlcnMvcGx1Z2lucyB3aXRoIHRoZWlyIG93biBwYXJ0aWN1bGFyIHRleHQuXG4gICAqXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uQXJnc30gYXJnc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldFBvc3RJbnN0YWxsVGV4dChhcmdzKSB7XG4gICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBmaW5hbCBjbGFzcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgYW4gTlBNIG1vZHVsZSdzIHBhY2thZ2UuanNvbiBhbmQgZXh0cmFjdCBBcHBpdW0gZHJpdmVyIGluZm9ybWF0aW9uIGZyb20gYSBzcGVjaWFsXG4gICAqICdhcHBpdW0nIGZpZWxkIGluIHRoZSBKU09OIGRhdGEuIFdlIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiB0byBlLmcuIGRldGVybWluZSB3aGljaCBjbGFzcyB0b1xuICAgKiBsb2FkIGFzIHRoZSBtYWluIGRyaXZlciBjbGFzcywgb3IgdG8gYmUgYWJsZSB0byBkZXRlY3QgaW5jb21wYXRpYmlsaXRpZXMgYmV0d2VlbiBkcml2ZXIgYW5kXG4gICAqIGFwcGl1bSB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn0gcGtnSnNvbiAtIHRoZSBwYWNrYWdlLmpzb24gZGF0YSBmb3IgYSBkcml2ZXIgbW9kdWxlLCBhcyBpZiBpdCBoYWQgYmVlbiBzdHJhaWdodGZvcndhcmRseSAncmVxdWlyZSdkXG4gICAqIEByZXR1cm5zIHtFeHRlbnNpb25GaWVsZHM8RXh0VHlwZT59XG4gICAqL1xuICBnZXRFeHRlbnNpb25GaWVsZHMocGtnSnNvbikge1xuICAgIGNvbnN0IHthcHBpdW0sIG5hbWUsIHZlcnNpb24sIHBlZXJEZXBlbmRlbmNpZXN9ID0gcGtnSnNvbjtcblxuICAgIC8qKiBAdHlwZSB7dW5rbm93bn0gKi9cbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAuLi5hcHBpdW0sXG4gICAgICBwa2dOYW1lOiBuYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGFwcGl1bVZlcnNpb246IHBlZXJEZXBlbmRlbmNpZXM/LmFwcGl1bSxcbiAgICB9O1xuICAgIHJldHVybiAvKiogQHR5cGUge0V4dGVuc2lvbkZpZWxkczxFeHRUeXBlPn0gKi8gKHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBfcmVxdWlyZWRfIHJvb3QgZmllbGRzIG9mIGFuIGV4dGVuc2lvbidzIGBwYWNrYWdlLmpzb25gIGZpbGUuXG4gICAqXG4gICAqIFRoZXNlIHJlcXVpcmVkIGZpZWxkcyBhcmU6XG4gICAqIC0gYG5hbWVgXG4gICAqIC0gYHZlcnNpb25gXG4gICAqIC0gYGFwcGl1bWBcbiAgICogQHBhcmFtIHtpbXBvcnQoJ3R5cGUtZmVzdCcpLlBhY2thZ2VKc29ufSBwa2dKc29uIC0gYHBhY2thZ2UuanNvbmAgb2YgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIEV4dGVuc2lvbiBuYW1lL3NwZWNcbiAgICogQHRocm93cyB7UmVmZXJlbmNlRXJyb3J9IElmIGBwYWNrYWdlLmpzb25gIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBmaWVsZFxuICAgKiBAcmV0dXJucyB7cGtnSnNvbiBpcyBFeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn1cbiAgICovXG4gIHZhbGlkYXRlUGFja2FnZUpzb24ocGtnSnNvbiwgaW5zdGFsbFNwZWMpIHtcbiAgICBjb25zdCB7YXBwaXVtLCBuYW1lLCB2ZXJzaW9ufSA9IC8qKiBAdHlwZSB7RXh0UGFja2FnZUpzb248RXh0VHlwZT59ICovIChwa2dKc29uKTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkXG4gICAgICogQHJldHVybnMge1JlZmVyZW5jZUVycm9yfVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZU1pc3NpbmdGaWVsZEVycm9yID0gKGZpZWxkKSA9PlxuICAgICAgbmV3IFJlZmVyZW5jZUVycm9yKFxuICAgICAgICBgJHt0aGlzLnR5cGV9IFwiJHtpbnN0YWxsU3BlY31cIiBpbnZhbGlkOyBtaXNzaW5nIGEgXFxgJHtmaWVsZH1cXGAgZmllbGQgb2YgaXRzIFxcYHBhY2thZ2UuanNvblxcYGBcbiAgICAgICk7XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdGaWVsZEVycm9yKCduYW1lJyk7XG4gICAgfVxuICAgIGlmICghdmVyc2lvbikge1xuICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0ZpZWxkRXJyb3IoJ3ZlcnNpb24nKTtcbiAgICB9XG4gICAgaWYgKCFhcHBpdW0pIHtcbiAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdGaWVsZEVycm9yKCdhcHBpdW0nKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzKGFwcGl1bSwgaW5zdGFsbFNwZWMpO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGFueSBgcGFja2FnZS5qc29uYCBmaWVsZHMgd2hpY2ggYSBwYXJ0aWN1bGFyIHR5cGUgb2YgZXh0ZW5zaW9uIHJlcXVpcmVzLCB2YWxpZGF0ZSB0aGVcbiAgICogcHJlc2VuY2UgYW5kIGZvcm0gb2YgdGhvc2UgZmllbGRzIG9uIHRoZSBgcGFja2FnZS5qc29uYCBkYXRhLCB0aHJvd2luZyBhbiBlcnJvciBpZiBhbnl0aGluZyBpc1xuICAgKiBhbWlzcy5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRNZXRhZGF0YTxFeHRUeXBlPn0gZXh0TWV0YWRhdGEgLSB0aGUgZGF0YSBpbiB0aGUgXCJhcHBpdW1cIiBmaWVsZCBvZiBgcGFja2FnZS5qc29uYCBmb3IgYW4gZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIEV4dGVuc2lvbiBuYW1lL3NwZWNcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyhleHRNZXRhZGF0YSwgaW5zdGFsbFNwZWMpIHtcbiAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKCdNdXN0IGJlIGltcGxlbWVudGVkIGluIGZpbmFsIGNsYXNzJyk7XG4gIH1cblxuICAvKipcbiAgICogVW5pbnN0YWxsIGFuIGV4dGVuc2lvbi5cbiAgICpcbiAgICogRmlyc3QgdHJpZXMgdG8gZG8gdGhpcyB2aWEgYG5wbSB1bmluc3RhbGxgLCBidXQgaWYgdGhhdCBmYWlscywganVzdCBgcm0gLXJmYCdzIHRoZSBleHRlbnNpb24gZGlyLlxuICAgKlxuICAgKiBXaWxsIG9ubHkgcmVtb3ZlIHRoZSBleHRlbnNpb24gZnJvbSB0aGUgbWFuaWZlc3QgaWYgaXQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7VW5pbnN0YWxsT3B0c30gb3B0c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEV4dFJlY29yZDxFeHRUeXBlPj59IG1hcCBvZiBhbGwgaW5zdGFsbGVkIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gZGF0YSAod2l0aG91dCB0aGUgZXh0ZW5zaW9uIGp1c3QgdW5pbnN0YWxsZWQpXG4gICAqL1xuICBhc3luYyBfdW5pbnN0YWxsKHtpbnN0YWxsU3BlY30pIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmlzSW5zdGFsbGVkKGluc3RhbGxTcGVjKSkge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcihcbiAgICAgICAgYENhbid0IHVuaW5zdGFsbCAke3RoaXMudHlwZX0gJyR7aW5zdGFsbFNwZWN9JzsgaXQgaXMgbm90IGluc3RhbGxlZGBcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHBrZ05hbWUgPSB0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW2luc3RhbGxTcGVjXS5wa2dOYW1lO1xuICAgIGF3YWl0IG5wbS51bmluc3RhbGxQYWNrYWdlKHRoaXMuY29uZmlnLmFwcGl1bUhvbWUsIHBrZ05hbWUpO1xuICAgIGF3YWl0IHRoaXMuY29uZmlnLnJlbW92ZUV4dGVuc2lvbihpbnN0YWxsU3BlYyk7XG4gICAgdGhpcy5sb2cub2soYFN1Y2Nlc3NmdWxseSB1bmluc3RhbGxlZCAke3RoaXMudHlwZX0gJyR7aW5zdGFsbFNwZWN9J2AuZ3JlZW4pO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gdXBkYXRlIG9uZSBvciBtb3JlIGRyaXZlcnMgdXNpbmcgTlBNXG4gICAqXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uVXBkYXRlT3B0c30gdXBkYXRlU3BlY1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEV4dGVuc2lvblVwZGF0ZVJlc3VsdD59XG4gICAqL1xuICBhc3luYyBfdXBkYXRlKHtpbnN0YWxsU3BlYywgdW5zYWZlfSkge1xuICAgIGNvbnN0IHNob3VsZFVwZGF0ZUFsbCA9IGluc3RhbGxTcGVjID09PSBVUERBVEVfQUxMO1xuICAgIC8vIGlmIHdlJ3JlIHNwZWNpZmljYWxseSByZXF1ZXN0aW5nIGFuIHVwZGF0ZSBmb3IgYW4gZXh0ZW5zaW9uLCBtYWtlIHN1cmUgaXQncyBpbnN0YWxsZWRcbiAgICBpZiAoIXNob3VsZFVwZGF0ZUFsbCAmJiAhdGhpcy5jb25maWcuaXNJbnN0YWxsZWQoaW5zdGFsbFNwZWMpKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKFxuICAgICAgICBgVGhlICR7dGhpcy50eXBlfSBcIiR7aW5zdGFsbFNwZWN9XCIgd2FzIG5vdCBpbnN0YWxsZWQsIHNvIGNhbid0IGJlIHVwZGF0ZWRgXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBleHRzVG9VcGRhdGUgPSBzaG91bGRVcGRhdGVBbGxcbiAgICAgID8gT2JqZWN0LmtleXModGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucylcbiAgICAgIDogW2luc3RhbGxTcGVjXTtcblxuICAgIC8vICdlcnJvcnMnIHdpbGwgaGF2ZSBleHQgbmFtZXMgYXMga2V5cyBhbmQgZXJyb3Igb2JqZWN0cyBhcyB2YWx1ZXNcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsRXJyb3I+fSAqL1xuICAgIGNvbnN0IGVycm9ycyA9IHt9O1xuXG4gICAgLy8gJ3VwZGF0ZXMnIHdpbGwgaGF2ZSBleHQgbmFtZXMgYXMga2V5cyBhbmQgdXBkYXRlIG9iamVjdHMgYXMgdmFsdWVzLCB3aGVyZSBhbiB1cGRhdGVcbiAgICAvLyBvYmplY3QgaXMgb2YgdGhlIGZvcm0ge2Zyb206IHZlcnNpb25TdHJpbmcsIHRvOiB2ZXJzaW9uU3RyaW5nfVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxVcGRhdGVSZXBvcnQ+fSAqL1xuICAgIGNvbnN0IHVwZGF0ZXMgPSB7fTtcblxuICAgIGZvciAoY29uc3QgZSBvZiBleHRzVG9VcGRhdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNwaW5XaXRoKHRoaXMuaXNKc29uT3V0cHV0LCBgQ2hlY2tpbmcgaWYgJHt0aGlzLnR5cGV9ICcke2V9JyBpcyB1cGRhdGFibGVgLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZV0uaW5zdGFsbFR5cGUgIT09IElOU1RBTExfVFlQRV9OUE0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RVcGRhdGFibGVFcnJvcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZSA9IGF3YWl0IHNwaW5XaXRoKFxuICAgICAgICAgIHRoaXMuaXNKc29uT3V0cHV0LFxuICAgICAgICAgIGBDaGVja2luZyBpZiAke3RoaXMudHlwZX0gJyR7ZX0nIG5lZWRzIGFuIHVwZGF0ZWAsXG4gICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgdGhpcy5jaGVja0ZvckV4dGVuc2lvblVwZGF0ZShlKTtcbiAgICAgICAgICAgIGlmICghKHVwZGF0ZS5zYWZlVXBkYXRlIHx8IHVwZGF0ZS51bnNhZmVVcGRhdGUpKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBOb1VwZGF0ZXNBdmFpbGFibGVFcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGlmICghdW5zYWZlICYmICF1cGRhdGUuc2FmZVVwZGF0ZSkge1xuICAgICAgICAgIHRocm93IHRoaXMuX2NyZWF0ZUZhdGFsRXJyb3IoXG4gICAgICAgICAgICBgVGhlICR7dGhpcy50eXBlfSAnJHtlfScgaGFzIGEgbWFqb3IgcmV2aXNpb24gdXBkYXRlIGAgK1xuICAgICAgICAgICAgICBgKCR7dXBkYXRlLmN1cnJlbnR9ID0+ICR7dXBkYXRlLnVuc2FmZVVwZGF0ZX0pLCB3aGljaCBjb3VsZCBpbmNsdWRlIGAgK1xuICAgICAgICAgICAgICBgYnJlYWtpbmcgY2hhbmdlcy4gSWYgeW91IHdhbnQgdG8gYXBwbHkgdGhpcyB1cGRhdGUsIHJlLXJ1biB3aXRoIC0tdW5zYWZlYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXBkYXRlVmVyID0gdW5zYWZlICYmIHVwZGF0ZS51bnNhZmVVcGRhdGUgPyB1cGRhdGUudW5zYWZlVXBkYXRlIDogdXBkYXRlLnNhZmVVcGRhdGU7XG4gICAgICAgIGF3YWl0IHNwaW5XaXRoKFxuICAgICAgICAgIHRoaXMuaXNKc29uT3V0cHV0LFxuICAgICAgICAgIGBVcGRhdGluZyBkcml2ZXIgJyR7ZX0nIGZyb20gJHt1cGRhdGUuY3VycmVudH0gdG8gJHt1cGRhdGVWZXJ9YCxcbiAgICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLnVwZGF0ZUV4dGVuc2lvbihlLCB1cGRhdGVWZXIpXG4gICAgICAgICk7XG4gICAgICAgIHVwZGF0ZXNbZV0gPSB7ZnJvbTogdXBkYXRlLmN1cnJlbnQsIHRvOiB1cGRhdGVWZXJ9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVycm9yc1tlXSA9IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxvZy5pbmZvKCdVcGRhdGUgcmVwb3J0OicpO1xuXG4gICAgZm9yIChjb25zdCBbZSwgdXBkYXRlXSBvZiBfLnRvUGFpcnModXBkYXRlcykpIHtcbiAgICAgIHRoaXMubG9nLm9rKGAgIC0gJHt0aGlzLnR5cGV9ICR7ZX0gdXBkYXRlZDogJHt1cGRhdGUuZnJvbX0gPT4gJHt1cGRhdGUudG99YC5ncmVlbik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbZSwgZXJyXSBvZiBfLnRvUGFpcnMoZXJyb3JzKSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdFVwZGF0YWJsZUVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oXG4gICAgICAgICAgYCAgLSAnJHtlfScgd2FzIG5vdCBpbnN0YWxsZWQgdmlhIG5wbSwgc28gd2UgY291bGQgbm90IGNoZWNrIGAgKyBgZm9yIHVwZGF0ZXNgLnllbGxvd1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBOb1VwZGF0ZXNBdmFpbGFibGVFcnJvcikge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGAgIC0gJyR7ZX0nIGhhZCBubyB1cGRhdGVzIGF2YWlsYWJsZWAueWVsbG93KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG90aGVyd2lzZSwgbWFrZSBpdCBwb3Agd2l0aCByZWQhXG4gICAgICAgIHRoaXMubG9nLmVycm9yKGAgIC0gJyR7ZX0nIGZhaWxlZCB0byB1cGRhdGU6ICR7ZXJyfWAucmVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt1cGRhdGVzLCBlcnJvcnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIGV4dGVuc2lvbiBuYW1lLCBmaWd1cmUgb3V0IHdoYXQgaXRzIGhpZ2hlc3QgcG9zc2libGUgdmVyc2lvbiB1cGdyYWRlIGlzLCBhbmQgYWxzbyB0aGVcbiAgICogaGlnaGVzdCBwb3NzaWJsZSBzYWZlIHVwZ3JhZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHQgLSBuYW1lIG9mIGV4dGVuc2lvblxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFBvc3NpYmxlVXBkYXRlcz59XG4gICAqL1xuICBhc3luYyBjaGVja0ZvckV4dGVuc2lvblVwZGF0ZShleHQpIHtcbiAgICAvLyBUT0RPIGRlY2lkZSBob3cgd2Ugd2FudCB0byBoYW5kbGUgYmV0YSB2ZXJzaW9ucz9cbiAgICAvLyB0aGlzIGlzIGEgaGVscGVyIG1ldGhvZCwgJ2V4dCcgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGluc3RhbGxlZCBoZXJlLCBhbmQgb2YgdGhlIG5wbVxuICAgIC8vIGluc3RhbGwgdHlwZVxuICAgIGNvbnN0IHt2ZXJzaW9uLCBwa2dOYW1lfSA9IHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0XTtcbiAgICBsZXQgdW5zYWZlVXBkYXRlID0gYXdhaXQgbnBtLmdldExhdGVzdFZlcnNpb24odGhpcy5jb25maWcuYXBwaXVtSG9tZSwgcGtnTmFtZSk7XG4gICAgbGV0IHNhZmVVcGRhdGUgPSBhd2FpdCBucG0uZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uKFxuICAgICAgdGhpcy5jb25maWcuYXBwaXVtSG9tZSxcbiAgICAgIHBrZ05hbWUsXG4gICAgICB2ZXJzaW9uXG4gICAgKTtcbiAgICBpZiAoIXV0aWwuY29tcGFyZVZlcnNpb25zKHVuc2FmZVVwZGF0ZSwgJz4nLCB2ZXJzaW9uKSkge1xuICAgICAgLy8gdGhlIGxhdGVzdCB2ZXJzaW9uIGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwgc28gdGhlcmUncyBubyBwb3NzaWJsZSB1cGRhdGVcbiAgICAgIHVuc2FmZVVwZGF0ZSA9IG51bGw7XG4gICAgICBzYWZlVXBkYXRlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHVuc2FmZVVwZGF0ZSAmJiB1bnNhZmVVcGRhdGUgPT09IHNhZmVVcGRhdGUpIHtcbiAgICAgIC8vIHRoZSBsYXRlc3QgdXBkYXRlIGlzIHRoZSBzYW1lIGFzIHRoZSBzYWZlIHVwZGF0ZSwgd2hpY2ggbWVhbnMgaXQncyBub3QgYWN0dWFsbHkgdW5zYWZlXG4gICAgICB1bnNhZmVVcGRhdGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoc2FmZVVwZGF0ZSAmJiAhdXRpbC5jb21wYXJlVmVyc2lvbnMoc2FmZVVwZGF0ZSwgJz4nLCB2ZXJzaW9uKSkge1xuICAgICAgLy8gZXZlbiB0aGUgc2FmZSB1cGRhdGUgaXMgbm90IGxhdGVyIHRoYW4gdGhlIGN1cnJlbnQsIHNvIGl0IGlzIG5vdCBhY3R1YWxseSBhbiB1cGRhdGVcbiAgICAgIHNhZmVVcGRhdGUgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4ge2N1cnJlbnQ6IHZlcnNpb24sIHNhZmVVcGRhdGUsIHVuc2FmZVVwZGF0ZX07XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsbHkgdXBkYXRlIGFuIGV4dGVuc2lvbiBpbnN0YWxsZWQgYnkgTlBNLCB1c2luZyB0aGUgTlBNIGNsaS4gQW5kIHVwZGF0ZSB0aGUgaW5zdGFsbGF0aW9uXG4gICAqIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5zdGFsbFNwZWMgLSBuYW1lIG9mIGV4dGVuc2lvbiB0byB1cGRhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gLSB2ZXJzaW9uIHN0cmluZyBpZGVudGlmaWVyIHRvIHVwZGF0ZSBleHRlbnNpb24gdG9cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyB1cGRhdGVFeHRlbnNpb24oaW5zdGFsbFNwZWMsIHZlcnNpb24pIHtcbiAgICBjb25zdCB7cGtnTmFtZX0gPSB0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW2luc3RhbGxTcGVjXTtcbiAgICBjb25zdCBleHREYXRhID0gYXdhaXQgdGhpcy5pbnN0YWxsVmlhTnBtKHtcbiAgICAgIGluc3RhbGxTcGVjLFxuICAgICAgcGtnTmFtZSxcbiAgICAgIHBrZ1ZlcjogdmVyc2lvbixcbiAgICB9KTtcbiAgICBkZWxldGUgZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8gKGAke3RoaXMudHlwZX1OYW1lYCldO1xuICAgIGF3YWl0IHRoaXMuY29uZmlnLnVwZGF0ZUV4dGVuc2lvbihpbnN0YWxsU3BlYywgZXh0RGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhIHNjcmlwdCBjYWNoZWQgaW5zaWRlIHRoZSBcInNjcmlwdHNcIiBmaWVsZCB1bmRlciBcImFwcGl1bVwiXG4gICAqIGluc2lkZSBvZiB0aGUgZHJpdmVyL3BsdWdpbnMgXCJwYWNrYWdlLmpzb25cIiBmaWxlLiBXaWxsIHRocm93XG4gICAqIGFuIGVycm9yIGlmIHRoZSBkcml2ZXIvcGx1Z2luIGRvZXMgbm90IGNvbnRhaW4gYSBcInNjcmlwdHNcIiBmaWVsZFxuICAgKiB1bmRlcm5lYXRoIHRoZSBcImFwcGl1bVwiIGZpZWxkIGluIGl0cyBwYWNrYWdlLmpzb24sIGlmIHRoZVxuICAgKiBcInNjcmlwdHNcIiBmaWVsZCBpcyBub3QgYSBwbGFpbiBvYmplY3QsIG9yIGlmIHRoZSBzY3JpcHROYW1lIGlzXG4gICAqIG5vdCBmb3VuZCB3aXRoaW4gXCJzY3JpcHRzXCIgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1J1bk9wdGlvbnN9IG9wdHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxSdW5PdXRwdXQ+fVxuICAgKi9cbiAgYXN5bmMgX3J1bih7aW5zdGFsbFNwZWMsIHNjcmlwdE5hbWUsIGV4dHJhQXJncyA9IFtdfSkge1xuICAgIGlmICghdGhpcy5jb25maWcuaXNJbnN0YWxsZWQoaW5zdGFsbFNwZWMpKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKGBUaGUgJHt0aGlzLnR5cGV9IFwiJHtpbnN0YWxsU3BlY31cIiBpcyBub3QgaW5zdGFsbGVkYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0Q29uZmlnID0gdGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9uc1tpbnN0YWxsU3BlY107XG5cbiAgICAvLyBub3RlOiBUUyBjYW5ub3QgdW5kZXJzdGFuZCB0aGF0IF8uaGFzKCkgaXMgYSB0eXBlIGd1YXJkXG4gICAgaWYgKCFleHRDb25maWcuc2NyaXB0cykge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcihcbiAgICAgICAgYFRoZSAke3RoaXMudHlwZX0gbmFtZWQgJyR7aW5zdGFsbFNwZWN9JyBkb2VzIG5vdCBjb250YWluIHRoZSBgICtcbiAgICAgICAgICBgXCJzY3JpcHRzXCIgZmllbGQgdW5kZXJuZWF0aCB0aGUgXCJhcHBpdW1cIiBmaWVsZCBpbiBpdHMgcGFja2FnZS5qc29uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHRTY3JpcHRzID0gZXh0Q29uZmlnLnNjcmlwdHM7XG5cbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChleHRTY3JpcHRzKSkge1xuICAgICAgdGhyb3cgdGhpcy5fY3JlYXRlRmF0YWxFcnJvcihcbiAgICAgICAgYFRoZSAke3RoaXMudHlwZX0gbmFtZWQgJyR7aW5zdGFsbFNwZWN9JyBcInNjcmlwdHNcIiBmaWVsZCBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaGFzKGV4dFNjcmlwdHMsIHNjcmlwdE5hbWUpKSB7XG4gICAgICB0aHJvdyB0aGlzLl9jcmVhdGVGYXRhbEVycm9yKFxuICAgICAgICBgVGhlICR7dGhpcy50eXBlfSBuYW1lZCAnJHtpbnN0YWxsU3BlY30nIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNjcmlwdDogJyR7c2NyaXB0TmFtZX0nYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBydW5uZXIgPSBuZXcgU3ViUHJvY2Vzcyhwcm9jZXNzLmV4ZWNQYXRoLCBbZXh0U2NyaXB0c1tzY3JpcHROYW1lXSwgLi4uZXh0cmFBcmdzXSwge1xuICAgICAgY3dkOiB0aGlzLmNvbmZpZy5nZXRJbnN0YWxsUGF0aChpbnN0YWxsU3BlYyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBvdXRwdXQgPSBuZXcgUmluZ0J1ZmZlcig1MCk7XG5cbiAgICBydW5uZXIub24oJ3N0cmVhbS1saW5lJywgKGxpbmUpID0+IHtcbiAgICAgIG91dHB1dC5lbnF1ZXVlKGxpbmUpO1xuICAgICAgdGhpcy5sb2cubG9nKGxpbmUpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgcnVubmVyLnN0YXJ0KDApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bm5lci5qb2luKCk7XG4gICAgICB0aGlzLmxvZy5vayhgJHtzY3JpcHROYW1lfSBzdWNjZXNzZnVsbHkgcmFuYC5ncmVlbik7XG4gICAgICByZXR1cm4ge291dHB1dDogb3V0cHV0LmdldEJ1ZmYoKX07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcihgRW5jb3VudGVyZWQgYW4gZXJyb3Igd2hlbiBydW5uaW5nICcke3NjcmlwdE5hbWV9JzogJHtlcnIubWVzc2FnZX1gLnJlZCk7XG4gICAgICByZXR1cm4ge2Vycm9yOiBlcnIubWVzc2FnZSwgb3V0cHV0OiBvdXRwdXQuZ2V0QnVmZigpfTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRXh0ZW5zaW9uQ29tbWFuZDtcbmV4cG9ydCB7RXh0ZW5zaW9uQ29tbWFuZH07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZH0gY29uc3RydWN0b3JcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29tbWFuZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7RXh0ZW5zaW9uQ29uZmlnPEV4dFR5cGU+fSBjb25maWcgLSB0aGUgYERyaXZlckNvbmZpZ2Agb3IgYFBsdWdpbkNvbmZpZ2AgaW5zdGFuY2UgdXNlZCBmb3IgdGhpcyBjb21tYW5kXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGpzb24gLSB3aGV0aGVyIHRoZSBvdXRwdXQgb2YgdGhpcyBjb21tYW5kIHNob3VsZCBiZSBKU09OIG9yIHRleHRcbiAqL1xuXG4vKipcbiAqIEV4dHJhIHN0dWZmIGFib3V0IGV4dGVuc2lvbnM7IHVzZWQgaW5kaXJlY3RseSBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH0uXG4gKlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uTWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaW5zdGFsbGVkIC0gSWYgYHRydWVgLCB0aGUgZXh0ZW5zaW9uIGlzIGluc3RhbGxlZFxuICogQHByb3BlcnR5IHtzdHJpbmc/fSB1cGRhdGVWZXJzaW9uIC0gSWYgdGhlIGV4dGVuc2lvbiBpcyBpbnN0YWxsZWQsIHRoZSB2ZXJzaW9uIGl0IGNhbiBiZSB1cGRhdGVkIHRvXG4gKiBAcHJvcGVydHkge3N0cmluZz99IHVuc2FmZVVwZGF0ZVZlcnNpb24gLSBTYW1lIGFzIGFib3ZlLCBidXQgYSBtYWpvciB2ZXJzaW9uIGJ1bXBcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXBUb0RhdGUgLSBJZiB0aGUgZXh0ZW5zaW9uIGlzIGluc3RhbGxlZCBhbmQgdGhlIGxhdGVzdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV4dGVuc2lvblR5cGV9IEV4dGVuc2lvblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRSZWNvcmQ8RXh0VHlwZT59IEV4dFJlY29yZFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn0gRXh0ZW5zaW9uQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE1ldGFkYXRhPEV4dFR5cGU+fSBFeHRNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRNYW5pZmVzdDxFeHRUeXBlPn0gRXh0TWFuaWZlc3RcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuRXh0UGFja2FnZUpzb248RXh0VHlwZT59IEV4dFBhY2thZ2VKc29uXG4gKi9cblxuLyoqXG4gKiBQb3NzaWJsZSByZXR1cm4gdmFsdWUgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5saXN0fVxuICogQHR5cGVkZWYgVW5pbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBrZ05hbWVcbiAqIEBwcm9wZXJ0eSB7ZmFsc2V9IGluc3RhbGxlZFxuICovXG5cbi8qKlxuICogUG9zc2libGUgcmV0dXJuIHZhbHVlIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkludGVybmFsTWV0YWRhdGEgJiBFeHRlbnNpb25NZXRhZGF0YX0gSW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGFcbiAqL1xuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH0uXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZyxJbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YXxVbmluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPn0gRXh0ZW5zaW9uTGlzdERhdGFcbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5fcnVufS5cbiAqIEB0eXBlZGVmIFJ1bk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpbnN0YWxsU3BlYyAtIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0byBydW4gYSBzY3JpcHQgZnJvbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNjcmlwdE5hbWUgLSBuYW1lIG9mIHRoZSBzY3JpcHQgdG8gcnVuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbZXh0cmFBcmdzXSAtIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBzY3JpcHRcbiAqL1xuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3J1bn1cbiAqXG4gKiBAdHlwZWRlZiBSdW5PdXRwdXRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZXJyb3JdIC0gZXJyb3IgbWVzc2FnZSBpZiBzY3JpcHQgcmFuIHVuc3VjY2Vzc2Z1bGx5LCBvdGhlcndpc2UgdW5kZWZpbmVkXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBvdXRwdXQgLSBzY3JpcHQgb3V0cHV0XG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3VwZGF0ZX0uXG4gKiBAdHlwZWRlZiBFeHRlbnNpb25VcGRhdGVPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaW5zdGFsbFNwZWMgLSB0aGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRvIHVwZGF0ZVxuICogQHByb3BlcnR5IHtib29sZWFufSB1bnNhZmUgLSBpZiB0cnVlLCB3aWxsIHBlcmZvcm0gdW5zYWZlIHVwZGF0ZXMgcGFzdCBtYWpvciByZXZpc2lvbiBib3VuZGFyaWVzXG4gKi9cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgb2Yge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl91cGRhdGV9LlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uVXBkYXRlUmVzdWx0XG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsRXJyb3I+fSBlcnJvcnMgLSBtYXAgb2YgZXh0IG5hbWVzIHRvIGVycm9yIG9iamVjdHNcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZyxVcGRhdGVSZXBvcnQ+fSB1cGRhdGVzIC0gbWFwIG9mIGV4dCBuYW1lcyB0byB7QGxpbmtjb2RlIFVwZGF0ZVJlcG9ydH1zXG4gKi9cblxuLyoqXG4gKiBQYXJ0IG9mIHJlc3VsdCBvZiB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3VwZGF0ZX0uXG4gKiBAdHlwZWRlZiBVcGRhdGVSZXBvcnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmcm9tIC0gdmVyc2lvbiB0aGUgZXh0ZW5zaW9uIHdhcyB1cGRhdGVkIGZyb21cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0byAtIHZlcnNpb24gdGhlIGV4dGVuc2lvbiB3YXMgdXBkYXRlZCB0b1xuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl91bmluc3RhbGx9LlxuICogQHR5cGVkZWYgVW5pbnN0YWxsT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGluc3RhbGxTcGVjIC0gdGhlIG5hbWUgb3Igc3BlYyBvZiBhbiBleHRlbnNpb24gdG8gdW5pbnN0YWxsXG4gKi9cblxuLyoqXG4gKiBVc2VkIGJ5IHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5nZXRQb3N0SW5zdGFsbFRleHR9XG4gKiBAdHlwZWRlZiBFeHRlbnNpb25BcmdzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXh0TmFtZSAtIHRoZSBuYW1lIG9mIGFuIGV4dGVuc2lvblxuICogQHByb3BlcnR5IHtvYmplY3R9IGV4dERhdGEgLSB0aGUgZGF0YSBmb3IgYW4gaW5zdGFsbGVkIGV4dGVuc2lvblxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmluc3RhbGxWaWFOcG19XG4gKiBAdHlwZWRlZiBJbnN0YWxsVmlhTnBtQXJnc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGluc3RhbGxTcGVjIC0gdGhlIG5hbWUgb3Igc3BlYyBvZiBhbiBleHRlbnNpb24gdG8gaW5zdGFsbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBrZ05hbWUgLSB0aGUgTlBNIHBhY2thZ2UgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrZ1Zlcl0gLSB0aGUgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgTlBNIHBhY2thZ2VcbiAqL1xuXG4vKipcbiAqIE9iamVjdCByZXR1cm5lZCBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuY2hlY2tGb3JFeHRlbnNpb25VcGRhdGV9XG4gKiBAdHlwZWRlZiBQb3NzaWJsZVVwZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjdXJyZW50IC0gY3VycmVudCB2ZXJzaW9uXG4gKiBAcHJvcGVydHkge3N0cmluZz99IHNhZmVVcGRhdGUgLSB2ZXJzaW9uIHdlIGNhbiBzYWZlbHkgdXBkYXRlIHRvIGlmIGl0IGV4aXN0cywgb3IgbnVsbFxuICogQHByb3BlcnR5IHtzdHJpbmc/fSB1bnNhZmVVcGRhdGUgLSB2ZXJzaW9uIHdlIGNhbiB1bnNhZmVseSB1cGRhdGUgdG8gaWYgaXQgZXhpc3RzLCBvciBudWxsXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX2luc3RhbGx9XG4gKiBAdHlwZWRlZiBJbnN0YWxsQXJnc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGluc3RhbGxTcGVjIC0gdGhlIG5hbWUgb3Igc3BlYyBvZiBhbiBleHRlbnNpb24gdG8gaW5zdGFsbFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkluc3RhbGxUeXBlfSBpbnN0YWxsVHlwZSAtIGhvdyB0byBpbnN0YWxsIHRoaXMgZXh0ZW5zaW9uLiBPbmUgb2YgdGhlIElOU1RBTExfVFlQRVNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGFja2FnZU5hbWVdIC0gZm9yIGdpdC9naXRodWIgaW5zdGFsbHMsIHRoZSBleHRlbnNpb24gbm9kZSBwYWNrYWdlIG5hbWVcbiAqL1xuXG4vKipcbiAqIFJldHVybmVkIGJ5IHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5nZXRFeHRlbnNpb25GaWVsZHN9XG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtFeHRNZXRhZGF0YTxFeHRUeXBlPiAmIHsgcGtnTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIGFwcGl1bVZlcnNpb246IHN0cmluZyB9ICYgaW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5Db21tb25FeHRNZXRhZGF0YX0gRXh0ZW5zaW9uRmllbGRzXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtFeHRUeXBlIGV4dGVuZHMgRHJpdmVyVHlwZSA/IHR5cGVvZiBpbXBvcnQoJy4uL2NvbnN0YW50cycpLktOT1dOX0RSSVZFUlMgOiBFeHRUeXBlIGV4dGVuZHMgUGx1Z2luVHlwZSA/IHR5cGVvZiBpbXBvcnQoJy4uL2NvbnN0YW50cycpLktOT1dOX1BMVUdJTlMgOiBuZXZlcn0gS25vd25FeHRlbnNpb25zXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBMaXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBzaG93SW5zdGFsbGVkIC0gd2hldGhlciBzaG91bGQgc2hvdyBvbmx5IGluc3RhbGxlZCBleHRlbnNpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNob3dVcGRhdGVzIC0gd2hldGhlciBzaG91bGQgc2hvdyBhdmFpbGFibGUgdXBkYXRlc1xuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBTUE7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLFdBQW5COztBQUVBLE1BQU1DLGlCQUFOLFNBQWdDQyxLQUFoQyxDQUFz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
@@ -2,17 +2,21 @@ export const commandClasses: Readonly<{
2
2
  readonly driver: typeof DriverCommand;
3
3
  readonly plugin: typeof PluginCommand;
4
4
  }>;
5
- export type ExtCommand<ExtType extends import("@appium/types").ExtensionType> = ExtType extends import('@appium/types').DriverType ? import('@appium/types').Class<DriverCommand> : ExtType extends import('@appium/types').PluginType ? import('@appium/types').Class<PluginCommand> : never;
5
+ export type ExtCommand<ExtType extends import("@appium/types").ExtensionType> = ExtType extends DriverType ? Class<DriverCommand> : ExtType extends PluginType ? Class<PluginCommand> : never;
6
+ export type ExtensionType = import('@appium/types').ExtensionType;
7
+ export type DriverType = import('@appium/types').DriverType;
8
+ export type PluginType = import('@appium/types').PluginType;
9
+ export type Class<T> = import('@appium/types').Class<T>;
6
10
  import DriverCommand from "./driver-command";
7
11
  import PluginCommand from "./plugin-command";
8
12
  /**
9
13
  * Run a subcommand of the 'appium driver' type. Each subcommand has its own set of arguments which
10
14
  * can be represented as a JS object.
11
15
  *
12
- * @param {Object} args - JS object where the key is the parameter name (as defined in
16
+ * @param {import('appium/types').Args<import('appium/types').WithExtSubcommand>} args - JS object where the key is the parameter name (as defined in
13
17
  * driver-parser.js)
14
- * @template {import('../extension/manifest').ExtensionType} ExtType
18
+ * @template {ExtensionType} ExtType
15
19
  * @param {import('../extension/extension-config').ExtensionConfig<ExtType>} config - Extension config object
16
20
  */
17
- export function runExtensionCommand<ExtType extends import("@appium/types").ExtensionType>(args: any, config: import("../extension/extension-config").ExtensionConfig<ExtType>): Promise<any>;
21
+ export function runExtensionCommand<ExtType extends import("@appium/types").ExtensionType>(args: import('appium/types').Args<import('appium/types').WithExtSubcommand>, config: import("../extension/extension-config").ExtensionConfig<ExtType>): Promise<any>;
18
22
  //# sourceMappingURL=extension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../lib/cli/extension.js"],"names":[],"mappings":"AAMA;;;GAKE;gFAgDW,OAAO,SAAS,OAAO,eAAe,EAAE,UAAU,GAAG,OAAO,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,OAAO,SAAS,OAAO,eAAe,EAAE,UAAU,GAAG,OAAO,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK;;;AA9C1N;;;;;;;;GAQG;AACH,8LA+BC"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../lib/cli/extension.js"],"names":[],"mappings":"AAMA;;;GAKE;gFAiDW,OAAO,SAAS,UAAU,GAAG,MAAM,aAAa,CAAC,GAAG,OAAO,SAAS,UAAU,GAAG,MAAM,aAAa,CAAC,GAAG,KAAK;4BAI7G,OAAO,eAAe,EAAE,aAAa;yBACrC,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;uBAKlC,OAAO,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;;;AA1D7C;;;;;;;;GAQG;AACH,iGALW,OAAO,cAAc,EAAE,IAAI,CAAC,OAAO,cAAc,EAAE,iBAAiB,CAAC,0FAqC/E"}
@@ -39,6 +39,7 @@ async function runExtensionCommand(args, config) {
39
39
  json,
40
40
  suppressOutput
41
41
  } = args;
42
+ json = Boolean(json);
42
43
 
43
44
  if (suppressOutput) {
44
45
  json = true;
@@ -66,4 +67,4 @@ async function runExtensionCommand(args, config) {
66
67
 
67
68
  return jsonResult;
68
69
  }
69
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kQ2xhc3NlcyIsIk9iamVjdCIsImZyZWV6ZSIsIkRSSVZFUl9UWVBFIiwiRHJpdmVyQ29tbWFuZCIsIlBMVUdJTl9UWVBFIiwiUGx1Z2luQ29tbWFuZCIsInJ1bkV4dGVuc2lvbkNvbW1hbmQiLCJhcmdzIiwiY29uZmlnIiwianNvblJlc3VsdCIsImV4dGVuc2lvblR5cGUiLCJ0eXBlIiwiZXh0Q21kIiwiVHlwZUVycm9yIiwianNvbiIsInN1cHByZXNzT3V0cHV0IiwiQ29tbWFuZENsYXNzIiwiY21kIiwiZXhlY3V0ZSIsImVyciIsImVyckFuZFF1aXQiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsIkpTT05fU1BBQ0VTIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NsaS9leHRlbnNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IERyaXZlckNvbW1hbmQgZnJvbSAnLi9kcml2ZXItY29tbWFuZCc7XG5pbXBvcnQgUGx1Z2luQ29tbWFuZCBmcm9tICcuL3BsdWdpbi1jb21tYW5kJztcbmltcG9ydCB7RFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtlcnJBbmRRdWl0LCBKU09OX1NQQUNFU30gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBjb21tYW5kQ2xhc3NlcyA9IE9iamVjdC5mcmVlemUoXG4gIC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gICAgW0RSSVZFUl9UWVBFXTogRHJpdmVyQ29tbWFuZCxcbiAgICBbUExVR0lOX1RZUEVdOiBQbHVnaW5Db21tYW5kLFxuICB9KVxuKTtcblxuLyoqXG4gKiBSdW4gYSBzdWJjb21tYW5kIG9mIHRoZSAnYXBwaXVtIGRyaXZlcicgdHlwZS4gRWFjaCBzdWJjb21tYW5kIGhhcyBpdHMgb3duIHNldCBvZiBhcmd1bWVudHMgd2hpY2hcbiAqIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIEpTIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYXJncyAtIEpTIG9iamVjdCB3aGVyZSB0aGUga2V5IGlzIHRoZSBwYXJhbWV0ZXIgbmFtZSAoYXMgZGVmaW5lZCBpblxuICogZHJpdmVyLXBhcnNlci5qcylcbiAqIEB0ZW1wbGF0ZSB7aW1wb3J0KCcuLi9leHRlbnNpb24vbWFuaWZlc3QnKS5FeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vZXh0ZW5zaW9uL2V4dGVuc2lvbi1jb25maWcnKS5FeHRlbnNpb25Db25maWc8RXh0VHlwZT59IGNvbmZpZyAtIEV4dGVuc2lvbiBjb25maWcgb2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkV4dGVuc2lvbkNvbW1hbmQoYXJncywgY29uZmlnKSB7XG4gIC8vIFRPRE8gZHJpdmVyIGNvbmZpZyBmaWxlIHNob3VsZCBiZSBsb2NrZWQgd2hpbGUgYW55IG9mIHRoZXNlIGNvbW1hbmRzIGFyZVxuICAvLyBydW5uaW5nIHRvIHByZXZlbnQgd2VpcmQgc2l0dWF0aW9uc1xuICBsZXQganNvblJlc3VsdCA9IG51bGw7XG4gIGNvbnN0IHtleHRlbnNpb25UeXBlOiB0eXBlfSA9IGNvbmZpZztcbiAgY29uc3QgZXh0Q21kID0gYXJnc1tgJHt0eXBlfUNvbW1hbmRgXTtcbiAgaWYgKCFleHRDbWQpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgY2FsbCAke3R5cGV9IGNvbW1hbmQgd2l0aG91dCBhIHN1YmNvbW1hbmQgbGlrZSAnaW5zdGFsbCdgKTtcbiAgfVxuICBsZXQge2pzb24sIHN1cHByZXNzT3V0cHV0fSA9IGFyZ3M7XG4gIGlmIChzdXBwcmVzc091dHB1dCkge1xuICAgIGpzb24gPSB0cnVlO1xuICB9XG4gIGNvbnN0IENvbW1hbmRDbGFzcyA9IC8qKiBAdHlwZSB7RXh0Q29tbWFuZDxFeHRUeXBlPn0gKi8gKGNvbW1hbmRDbGFzc2VzW3R5cGVdKTtcbiAgY29uc3QgY21kID0gbmV3IENvbW1hbmRDbGFzcyh7Y29uZmlnLCBqc29ufSk7XG4gIHRyeSB7XG4gICAganNvblJlc3VsdCA9IGF3YWl0IGNtZC5leGVjdXRlKGFyZ3MpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpbiB0aGUgc3VwcHJlc3Mgb3V0cHV0IGNhc2UsIHdlIGFyZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW50ZXJuYWxseSBhbmQgc2hvdWxkXG4gICAgLy8ganVzdCB0aHJvdyBpbnN0ZWFkIG9mIHByaW50aW5nIGFuIGVycm9yIGFuZCBlbmRpbmcgdGhlIHByb2Nlc3NcbiAgICBpZiAoc3VwcHJlc3NPdXRwdXQpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgZXJyQW5kUXVpdChqc29uLCBlcnIpO1xuICB9XG5cbiAgaWYgKGpzb24gJiYgIXN1cHByZXNzT3V0cHV0KSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoanNvblJlc3VsdCwgbnVsbCwgSlNPTl9TUEFDRVMpKTtcbiAgfVxuXG4gIHJldHVybiBqc29uUmVzdWx0O1xufVxuXG5leHBvcnQge3J1bkV4dGVuc2lvbkNvbW1hbmR9O1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge0V4dFR5cGUgZXh0ZW5kcyBpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJUeXBlID8gaW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2xhc3M8RHJpdmVyQ29tbWFuZD4gOiBFeHRUeXBlIGV4dGVuZHMgaW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuUGx1Z2luVHlwZSA/IGltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNsYXNzPFBsdWdpbkNvbW1hbmQ+IDogbmV2ZXJ9IEV4dENvbW1hbmRcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFTyxNQUFNQSxjQUFjLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUNOO0VBQ3BCLENBQUNDLHNCQUFELEdBQWVDLHNCQURLO0VBRXBCLENBQUNDLHNCQUFELEdBQWVDO0FBRkssQ0FETSxDQUF2Qjs7O0FBZ0JQLGVBQWVDLG1CQUFmLENBQW1DQyxJQUFuQyxFQUF5Q0MsTUFBekMsRUFBaUQ7RUFHL0MsSUFBSUMsVUFBVSxHQUFHLElBQWpCO0VBQ0EsTUFBTTtJQUFDQyxhQUFhLEVBQUVDO0VBQWhCLElBQXdCSCxNQUE5QjtFQUNBLE1BQU1JLE1BQU0sR0FBR0wsSUFBSSxDQUFFLEdBQUVJLElBQUssU0FBVCxDQUFuQjs7RUFDQSxJQUFJLENBQUNDLE1BQUwsRUFBYTtJQUNYLE1BQU0sSUFBSUMsU0FBSixDQUFlLGVBQWNGLElBQUssOENBQWxDLENBQU47RUFDRDs7RUFDRCxJQUFJO0lBQUNHLElBQUQ7SUFBT0M7RUFBUCxJQUF5QlIsSUFBN0I7O0VBQ0EsSUFBSVEsY0FBSixFQUFvQjtJQUNsQkQsSUFBSSxHQUFHLElBQVA7RUFDRDs7RUFDRCxNQUFNRSxZQUFZLEdBQXVDakIsY0FBYyxDQUFDWSxJQUFELENBQXZFO0VBQ0EsTUFBTU0sR0FBRyxHQUFHLElBQUlELFlBQUosQ0FBaUI7SUFBQ1IsTUFBRDtJQUFTTTtFQUFULENBQWpCLENBQVo7O0VBQ0EsSUFBSTtJQUNGTCxVQUFVLEdBQUcsTUFBTVEsR0FBRyxDQUFDQyxPQUFKLENBQVlYLElBQVosQ0FBbkI7RUFDRCxDQUZELENBRUUsT0FBT1ksR0FBUCxFQUFZO0lBR1osSUFBSUosY0FBSixFQUFvQjtNQUNsQixNQUFNSSxHQUFOO0lBQ0Q7O0lBQ0QsSUFBQUMsaUJBQUEsRUFBV04sSUFBWCxFQUFpQkssR0FBakI7RUFDRDs7RUFFRCxJQUFJTCxJQUFJLElBQUksQ0FBQ0MsY0FBYixFQUE2QjtJQUMzQk0sT0FBTyxDQUFDQyxHQUFSLENBQVlDLElBQUksQ0FBQ0MsU0FBTCxDQUFlZixVQUFmLEVBQTJCLElBQTNCLEVBQWlDZ0Isa0JBQWpDLENBQVo7RUFDRDs7RUFFRCxPQUFPaEIsVUFBUDtBQUNEIn0=
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kQ2xhc3NlcyIsIk9iamVjdCIsImZyZWV6ZSIsIkRSSVZFUl9UWVBFIiwiRHJpdmVyQ29tbWFuZCIsIlBMVUdJTl9UWVBFIiwiUGx1Z2luQ29tbWFuZCIsInJ1bkV4dGVuc2lvbkNvbW1hbmQiLCJhcmdzIiwiY29uZmlnIiwianNvblJlc3VsdCIsImV4dGVuc2lvblR5cGUiLCJ0eXBlIiwiZXh0Q21kIiwiVHlwZUVycm9yIiwianNvbiIsInN1cHByZXNzT3V0cHV0IiwiQm9vbGVhbiIsIkNvbW1hbmRDbGFzcyIsImNtZCIsImV4ZWN1dGUiLCJlcnIiLCJlcnJBbmRRdWl0IiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJKU09OX1NQQUNFUyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZXh0ZW5zaW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCBEcml2ZXJDb21tYW5kIGZyb20gJy4vZHJpdmVyLWNvbW1hbmQnO1xuaW1wb3J0IFBsdWdpbkNvbW1hbmQgZnJvbSAnLi9wbHVnaW4tY29tbWFuZCc7XG5pbXBvcnQge0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRX0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7ZXJyQW5kUXVpdCwgSlNPTl9TUEFDRVN9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgY29tbWFuZENsYXNzZXMgPSBPYmplY3QuZnJlZXplKFxuICAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAgIFtEUklWRVJfVFlQRV06IERyaXZlckNvbW1hbmQsXG4gICAgW1BMVUdJTl9UWVBFXTogUGx1Z2luQ29tbWFuZCxcbiAgfSlcbik7XG5cbi8qKlxuICogUnVuIGEgc3ViY29tbWFuZCBvZiB0aGUgJ2FwcGl1bSBkcml2ZXInIHR5cGUuIEVhY2ggc3ViY29tbWFuZCBoYXMgaXRzIG93biBzZXQgb2YgYXJndW1lbnRzIHdoaWNoXG4gKiBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBKUyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkFyZ3M8aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5XaXRoRXh0U3ViY29tbWFuZD59IGFyZ3MgLSBKUyBvYmplY3Qgd2hlcmUgdGhlIGtleSBpcyB0aGUgcGFyYW1ldGVyIG5hbWUgKGFzIGRlZmluZWQgaW5cbiAqIGRyaXZlci1wYXJzZXIuanMpXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn0gY29uZmlnIC0gRXh0ZW5zaW9uIGNvbmZpZyBvYmplY3RcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuRXh0ZW5zaW9uQ29tbWFuZChhcmdzLCBjb25maWcpIHtcbiAgLy8gVE9ETyBkcml2ZXIgY29uZmlnIGZpbGUgc2hvdWxkIGJlIGxvY2tlZCB3aGlsZSBhbnkgb2YgdGhlc2UgY29tbWFuZHMgYXJlXG4gIC8vIHJ1bm5pbmcgdG8gcHJldmVudCB3ZWlyZCBzaXR1YXRpb25zXG4gIGxldCBqc29uUmVzdWx0ID0gbnVsbDtcbiAgY29uc3Qge2V4dGVuc2lvblR5cGU6IHR5cGV9ID0gY29uZmlnO1xuICBjb25zdCBleHRDbWQgPSBhcmdzW2Ake3R5cGV9Q29tbWFuZGBdO1xuICBpZiAoIWV4dENtZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBjYWxsICR7dHlwZX0gY29tbWFuZCB3aXRob3V0IGEgc3ViY29tbWFuZCBsaWtlICdpbnN0YWxsJ2ApO1xuICB9XG4gIGxldCB7anNvbiwgc3VwcHJlc3NPdXRwdXR9ID0gYXJncztcbiAganNvbiA9IEJvb2xlYW4oanNvbik7XG4gIGlmIChzdXBwcmVzc091dHB1dCkge1xuICAgIGpzb24gPSB0cnVlO1xuICB9XG4gIGNvbnN0IENvbW1hbmRDbGFzcyA9IC8qKiBAdHlwZSB7RXh0Q29tbWFuZDxFeHRUeXBlPn0gKi8gKGNvbW1hbmRDbGFzc2VzW3R5cGVdKTtcbiAgY29uc3QgY21kID0gbmV3IENvbW1hbmRDbGFzcyh7Y29uZmlnLCBqc29ufSk7XG4gIHRyeSB7XG4gICAganNvblJlc3VsdCA9IGF3YWl0IGNtZC5leGVjdXRlKGFyZ3MpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpbiB0aGUgc3VwcHJlc3Mgb3V0cHV0IGNhc2UsIHdlIGFyZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW50ZXJuYWxseSBhbmQgc2hvdWxkXG4gICAgLy8ganVzdCB0aHJvdyBpbnN0ZWFkIG9mIHByaW50aW5nIGFuIGVycm9yIGFuZCBlbmRpbmcgdGhlIHByb2Nlc3NcbiAgICBpZiAoc3VwcHJlc3NPdXRwdXQpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgZXJyQW5kUXVpdChqc29uLCBlcnIpO1xuICB9XG5cbiAgaWYgKGpzb24gJiYgIXN1cHByZXNzT3V0cHV0KSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoanNvblJlc3VsdCwgbnVsbCwgSlNPTl9TUEFDRVMpKTtcbiAgfVxuXG4gIHJldHVybiBqc29uUmVzdWx0O1xufVxuXG5leHBvcnQge3J1bkV4dGVuc2lvbkNvbW1hbmR9O1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge0V4dFR5cGUgZXh0ZW5kcyBEcml2ZXJUeXBlID8gQ2xhc3M8RHJpdmVyQ29tbWFuZD4gOiBFeHRUeXBlIGV4dGVuZHMgUGx1Z2luVHlwZSA/IENsYXNzPFBsdWdpbkNvbW1hbmQ+IDogbmV2ZXJ9IEV4dENvbW1hbmRcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVyVHlwZX0gRHJpdmVyVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2xhc3M8VD59IENsYXNzXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRU8sTUFBTUEsY0FBYyxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FDTjtFQUNwQixDQUFDQyxzQkFBRCxHQUFlQyxzQkFESztFQUVwQixDQUFDQyxzQkFBRCxHQUFlQztBQUZLLENBRE0sQ0FBdkI7OztBQWdCUCxlQUFlQyxtQkFBZixDQUFtQ0MsSUFBbkMsRUFBeUNDLE1BQXpDLEVBQWlEO0VBRy9DLElBQUlDLFVBQVUsR0FBRyxJQUFqQjtFQUNBLE1BQU07SUFBQ0MsYUFBYSxFQUFFQztFQUFoQixJQUF3QkgsTUFBOUI7RUFDQSxNQUFNSSxNQUFNLEdBQUdMLElBQUksQ0FBRSxHQUFFSSxJQUFLLFNBQVQsQ0FBbkI7O0VBQ0EsSUFBSSxDQUFDQyxNQUFMLEVBQWE7SUFDWCxNQUFNLElBQUlDLFNBQUosQ0FBZSxlQUFjRixJQUFLLDhDQUFsQyxDQUFOO0VBQ0Q7O0VBQ0QsSUFBSTtJQUFDRyxJQUFEO0lBQU9DO0VBQVAsSUFBeUJSLElBQTdCO0VBQ0FPLElBQUksR0FBR0UsT0FBTyxDQUFDRixJQUFELENBQWQ7O0VBQ0EsSUFBSUMsY0FBSixFQUFvQjtJQUNsQkQsSUFBSSxHQUFHLElBQVA7RUFDRDs7RUFDRCxNQUFNRyxZQUFZLEdBQXVDbEIsY0FBYyxDQUFDWSxJQUFELENBQXZFO0VBQ0EsTUFBTU8sR0FBRyxHQUFHLElBQUlELFlBQUosQ0FBaUI7SUFBQ1QsTUFBRDtJQUFTTTtFQUFULENBQWpCLENBQVo7O0VBQ0EsSUFBSTtJQUNGTCxVQUFVLEdBQUcsTUFBTVMsR0FBRyxDQUFDQyxPQUFKLENBQVlaLElBQVosQ0FBbkI7RUFDRCxDQUZELENBRUUsT0FBT2EsR0FBUCxFQUFZO0lBR1osSUFBSUwsY0FBSixFQUFvQjtNQUNsQixNQUFNSyxHQUFOO0lBQ0Q7O0lBQ0QsSUFBQUMsaUJBQUEsRUFBV1AsSUFBWCxFQUFpQk0sR0FBakI7RUFDRDs7RUFFRCxJQUFJTixJQUFJLElBQUksQ0FBQ0MsY0FBYixFQUE2QjtJQUMzQk8sT0FBTyxDQUFDQyxHQUFSLENBQVlDLElBQUksQ0FBQ0MsU0FBTCxDQUFlaEIsVUFBZixFQUEyQixJQUEzQixFQUFpQ2lCLGtCQUFqQyxDQUFaO0VBQ0Q7O0VBRUQsT0FBT2pCLFVBQVA7QUFDRCJ9
@@ -1,3 +1,6 @@
1
+ export const EXTRA_ARGS: "extraArgs";
2
+ export type DriverType = import('@appium/types').DriverType;
3
+ export type PluginType = import('@appium/types').PluginType;
1
4
  /**
2
5
  * Creates a {@link ArgParser} instance; finalizes the config schema.
3
6
  *
@@ -21,9 +24,10 @@ export class ArgParser {
21
24
  *
22
25
  * E.g., `{'driver-foo-bar': baz}` becomes `{driver: {foo: {bar: 'baz'}}}`
23
26
  * @param {object} args
27
+ * @param {string[]} [unknownArgs]
24
28
  * @returns {object}
25
29
  */
26
- static _transformParsedArgs(args: object): object;
30
+ static _transformParsedArgs(args: object, unknownArgs?: string[] | undefined): object;
27
31
  /**
28
32
  * Patches the `exit()` method of the parser to throw an error, so we can handle it manually.
29
33
  * @param {ArgumentParser} parser
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../lib/cli/parser.js"],"names":[],"mappings":"AAkPA;;;;;;GAMG;AACH,wDAFa,SAAS,CAMrB;AA1OD;;;;;;GAMG;AACH;IA4FE;;;;;;;;OAQG;IACH,kCAHW,MAAM,GACJ,MAAM,CAiBlB;IAED;;;OAGG;IACH,0BAFW,cAAc,QASxB;IAED;;;;OAIG;IACH,qCAHW,OAAO,UAAU,EAAE,SAAS,GAC1B,OAAO,QAAQ,EAAE,mBAAmB,CAkBhD;IAED;;;OAGG;IACH,iDAFW,OAAO,UAAU,EAAE,SAAS,QAyDtC;IApND;;OAEG;IACH,yCAmDC;IAxCC;;;OAGG;IACH,MAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,OAFU,OAAO,CAEC;IAElB;;;OAGG;IACH,QAFU,cAAc,CAEJ;IAcpB,8CAAyB;IAMzB;;OAEG;IACH,YAFU,SAAS,CAAC,WAAW,CAAC,CAEA;IAGlC;;;;;;;;;OASG;IACH,wHAuBC;CA4HF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../lib/cli/parser.js"],"names":[],"mappings":"AASA,qCAAsC;yBA0QzB,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;AAjB/C;;;;;;GAMG;AACH,wDAFa,SAAS,CAMrB;AAzPD;;;;;;GAMG;AACH;IAqGE;;;;;;;;;OASG;IACH,kCAJW,MAAM,uCAEJ,MAAM,CAmBlB;IAED;;;OAGG;IACH,0BAFW,cAAc,QASxB;IAED;;;;OAIG;IACH,qCAHW,OAAO,UAAU,EAAE,SAAS,GAC1B,OAAO,QAAQ,EAAE,mBAAmB,CAkBhD;IAED;;;OAGG;IACH,iDAFW,OAAO,UAAU,EAAE,SAAS,QA4DtC;IAnOD;;OAEG;IACH,yCAmDC;IAxCC;;;OAGG;IACH,MAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,OAFU,OAAO,CAEC;IAElB;;;OAGG;IACH,QAFU,cAAc,CAEJ;IAcpB,8CAAyB;IAMzB;;OAEG;IACH,YAFU,SAAS,CAAC,WAAW,CAAC,CAEA;IAGlC;;;;;;;;;OASG;IACH,wHAgCC;CAkIF"}