@cubist-labs/cubesigner-sdk 0.3.1 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/api.d.ts +27 -9
- package/dist/cjs/src/api.js +58 -22
- package/dist/cjs/src/client.d.ts +72 -3
- package/dist/cjs/src/client.js +79 -2
- package/dist/cjs/src/error.d.ts +26 -0
- package/dist/cjs/src/error.js +64 -1
- package/dist/cjs/src/events.d.ts +31 -9
- package/dist/cjs/src/events.js +56 -25
- package/dist/cjs/src/index.js +3 -2
- package/dist/cjs/src/key.d.ts +19 -2
- package/dist/cjs/src/key.js +22 -2
- package/dist/cjs/src/mfa.d.ts +6 -3
- package/dist/cjs/src/mfa.js +8 -5
- package/dist/cjs/src/response.d.ts +14 -1
- package/dist/cjs/src/response.js +65 -26
- package/dist/cjs/src/role.d.ts +6 -0
- package/dist/cjs/src/role.js +9 -1
- package/dist/cjs/src/schema.d.ts +339 -45
- package/dist/cjs/src/schema.js +1 -1
- package/dist/cjs/src/schema_types.d.ts +3 -0
- package/dist/cjs/src/schema_types.js +1 -1
- package/dist/cjs/src/session/signer_session_manager.js +3 -3
- package/dist/cjs/src/util.js +3 -2
- package/dist/esm/package.json +1 -1
- package/dist/esm/src/api.d.ts +27 -9
- package/dist/esm/src/api.js +56 -20
- package/dist/esm/src/client.d.ts +72 -3
- package/dist/esm/src/client.js +79 -2
- package/dist/esm/src/error.d.ts +26 -0
- package/dist/esm/src/error.js +64 -1
- package/dist/esm/src/events.d.ts +31 -9
- package/dist/esm/src/events.js +53 -23
- package/dist/esm/src/index.js +2 -2
- package/dist/esm/src/key.d.ts +19 -2
- package/dist/esm/src/key.js +22 -2
- package/dist/esm/src/mfa.d.ts +6 -3
- package/dist/esm/src/mfa.js +8 -5
- package/dist/esm/src/response.d.ts +14 -1
- package/dist/esm/src/response.js +65 -26
- package/dist/esm/src/role.d.ts +6 -0
- package/dist/esm/src/role.js +9 -1
- package/dist/esm/src/schema.d.ts +339 -45
- package/dist/esm/src/schema.js +1 -1
- package/dist/esm/src/schema_types.d.ts +3 -0
- package/dist/esm/src/schema_types.js +1 -1
- package/dist/esm/src/session/signer_session_manager.js +3 -3
- package/dist/esm/src/util.js +3 -2
- package/package.json +1 -1
- package/src/api.ts +66 -19
- package/src/client.ts +94 -2
- package/src/error.ts +73 -0
- package/src/events.ts +53 -24
- package/src/key.ts +31 -2
- package/src/mfa.ts +8 -4
- package/src/response.ts +50 -4
- package/src/role.ts +9 -0
- package/src/schema.ts +597 -45
- package/src/schema_types.ts +3 -0
- package/src/session/signer_session_manager.ts +2 -2
- package/src/util.ts +2 -3
- package/tsconfig.json +3 -3
package/dist/esm/src/schema.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Do not make direct changes to the file.
|
|
4
4
|
*/
|
|
5
5
|
export {};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQgYnkgb3BlbmFwaS10eXBlc2NyaXB0LlxuICogRG8gbm90IG1ha2UgZGlyZWN0IGNoYW5nZXMgdG8gdGhlIGZpbGUuXG4gKi9cblxuLyoqIE9uZU9mIHR5cGUgaGVscGVycyAqL1xudHlwZSBXaXRob3V0PFQsIFU+ID0geyBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIGtleW9mIFU+XT86IG5ldmVyIH07XG50eXBlIFhPUjxULCBVPiA9IFQgfCBVIGV4dGVuZHMgb2JqZWN0ID8gKFdpdGhvdXQ8VCwgVT4gJiBVKSB8IChXaXRob3V0PFUsIFQ+ICYgVCkgOiBUIHwgVTtcbnR5cGUgT25lT2Y8VCBleHRlbmRzIGFueVtdPiA9IFQgZXh0ZW5kcyBbaW5mZXIgT25seV1cbiAgPyBPbmx5XG4gIDogVCBleHRlbmRzIFtpbmZlciBBLCBpbmZlciBCLCAuLi5pbmZlciBSZXN0XVxuICAgID8gT25lT2Y8W1hPUjxBLCBCPiwgLi4uUmVzdF0+XG4gICAgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBwYXRocyB7XG4gIFwiL3YwL2Fib3V0X21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F2YS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEF2YSBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImF2YVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYSBCaXRjb2luIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJ0Y1NpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9kZXJpdmVfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXZtL2VpcDE5MS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqXG4gICAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEVJUC0xOTEgcGVyc29uYWxfc2lnbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZWlwMTkxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXA3MTIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIHR5cGVkIGRhdGEgYWNjb3JkaW5nIHRvIEVJUC03MTIgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDcxMlNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqXG4gICAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBhXG4gICAgICogdmFsaWQgQ3ViZVNpZ25lciBzZXNzaW9uLlxuICAgICAqXG4gICAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZVxuICAgICAqIHRvIGFub3RoZXIgc2VydmljZSB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVByb29mQ3ViZVNpZ25lclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3Byb3ZlL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgbWV0IHRoZVxuICAgICAqIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cyAoYWxsb3dlZCBpc3N1ZXJzICYgYXVkaWVuY2VzKSBmb3IgQ3ViZVNpZ25lclxuICAgICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2UgdG8gYW5vdGhlciBzZXJ2aWNlXG4gICAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZk9pZGNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKlxuICAgICAqIEFsbG93cyBhIHRoaXJkLXBhcnR5IHRvIHZhbGlkYXRlIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICAgKiB2ZXJhY2l0eSBieSBjYWxsaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5UHJvb2ZcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleUltcG9ydEtleVwiXTtcbiAgICAvKipcbiAgICAgKiBJbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiaW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZpdGUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgICAqXG4gICAgICogR2V0cyB0aGUgbGlzdCBvZiBvd25lZCBrZXlzIGluIGEgZ2l2ZW4gb3JnLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEtleUluT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAgICpcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3Igb3JnYW5pemF0aW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmFcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBQZW5kaW5nIE1GQSBSZXF1ZXN0c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXIsXG4gICAgICogaS5lLiwgdGhvc2UgaW4gd2hpY2ggdGhlIGN1cnJlbnQgdXNlciBpcyBsaXN0ZWQgYXMgYW4gYXBwcm92ZXJcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJtZmFMaXN0XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieSBpdHMgaWQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibWZhR2V0XCJdO1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBNRkEgUmVxdWVzdFxuICAgICAqXG4gICAgICogQXBwcm92ZSByZXF1ZXN0IGFmdGVyIGxvZ2dpbmcgaW4gd2l0aCBDdWJlU2lnbmVyLiBBZGRzIHRoZSBjdXJyZW50bHktbG9nZ2VkIHVzZXIgYXMgYW4gYXBwcm92ZXJcbiAgICAgKiBvZiBhIHBlbmRpbmcgTUZBIHJlcXVlc3Qgb2YgdGhlIFtTdGF0dXM6OlJlcXVpcmVkQXBwcm92ZXJzXSBraW5kLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mXG4gICAgICogYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDsgdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvXG4gICAgICogcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFBcHByb3ZlQ3NcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9tZmEve21mYV9pZH0vZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgQXBwcm92aW5nIGFuIE1GQSBSZXF1ZXN0IHdpdGggRklET1xuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBBcHByb3ZpbmcgYW4gTUZBIFJlcXVlc3Qgd2l0aCBGSURPXG4gICAgICpcbiAgICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRklETy5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wibWZhQXBwcm92ZUZpZG9cIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsXG4gICAgICpcbiAgICAgKiBBZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFBcHByb3ZlRmlkb0NvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUgYSBUT1RQIE1GQSBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBBZGRzIHRoZSBjdXJyZW50IHVzZXIgYXMgYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IHByb3ZpZGluZyBUT1RQIGNvZGUuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhQXBwcm92ZVRvdHBcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBzaWduZXIgc2Vzc2lvblxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJvaWRjQXV0aFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFJvbGVzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZXNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGFjY2Vzcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZXNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFJvbGVcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICAgKiBpcyB0aGUgb3duZXIsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFJvbGVcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0Um9sZVwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUm9sZVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wiZGVsZXRlUm9sZVwiXTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgUm9sZVxuICAgICAqXG4gICAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhIHJvbGUgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlYCBzY29wZSkuXG4gICAgICogVXBkYXRlcyB0aGUgcm9sZSdzIHBvbGljaWVzICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOnBvbGljeWAgc2NvcGUpLlxuICAgICAqIFRoZSB1c2VyIG11c3QgYmUgaW4gdGhlIHJvbGUgb3IgYW4gb3duZXIgb2YgdGhlIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vYWRkX2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIEFkZCBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBLZXlzXG4gICAgICpcbiAgICAgKiBBZGRzIGEgbGlzdCBvZiBleGlzdGluZyBrZXlzIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiYWRkS2V5c1RvUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfdXNlci97dXNlcl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEFkZCBVc2VyXG4gICAgICogQGRlc2NyaXB0aW9uIEFkZCBVc2VyXG4gICAgICpcbiAgICAgKiBBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gYWRkIHVzZXJzIHRvIGEgcm9sZS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRVc2VyVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZSBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBLZXlzXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBrZXlzIGluIGEgcm9sZS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZUtleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAgICpcbiAgICAgKiBSZW1vdmVzIGEgZ2l2ZW4ga2V5IGZyb20gYSByb2xlXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmVtb3ZlS2V5RnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdG9rZW5zXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IGEgc2luZ2xlIHBhZ2Ugb2YgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICpcbiAgICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBHRVQgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YFxuICAgICAqXG4gICAgICogUmV0dXJucyBhbGwgYWNjZXNzIHRva2VucyBmb3IgYSBnaXZlbiByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBjcmVhdGUgYSB0b2tlbiBmb3IgaXQuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdFJvbGVUb2tlbnNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBUb2tlblxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gZm9yIGEgZ2l2ZW4gcm9sZSAodG8gYmUgdXNlZCBhcyBcIkFQSSBLZXlcIiBmb3IgYWxsIHNpZ25pbmcgYWN0aW9ucykuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlUm9sZVRva2VuXCJdO1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBBbGwgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBBbGwgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgICAqXG4gICAgICogKipEZXByZWNhdGVkKio6IFVzZSBgREVMRVRFIC9vcmcve29yZ19pZH0vc2Vzc2lvbj9yb2xlPWAgaW5zdGVhZFxuICAgICAqXG4gICAgICogUmV2b2tlcyBhbGwgYWNjZXNzIHRva2VucyBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZUFsbFJvbGVUb2tlbnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdG9rZW5zL3tzZXNzaW9uX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBUb2tlbiAoRGVwcmVjYXRlZClcbiAgICAgKlxuICAgICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYERFTEVURSAvb3JnL3tvcmdfaWR9L3Nlc3Npb24ve3Nlc3Npb25faWR9YFxuICAgICAqXG4gICAgICogUmV2b2tlcyBhbiBhY2Nlc3MgdG9rZW4gYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VSb2xlVG9rZW5cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZSBVc2Vycy5cbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdXNlcnMgd2hvIGhhdmUgYWNjZXNzIHRvIGEgcm9sZS5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZVVzZXJzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvblwiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBzZXNzaW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHNlc3Npb25zXG4gICAgICpcbiAgICAgKiBJZiBubyBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCwgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHNlc3Npb24gaXMgcmV0dXJuZWRcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0U2Vzc2lvbnNcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNlc3Npb24sIHNpbGVudGx5IHRydW5jYXRpbmcgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzXG4gICAgICogdG8gYmUgYXQgbW9zdCByZXF1ZXN0b3IncyBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lLCByZXNwZWN0aXZlbHkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVNlc3Npb25cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGV4aXN0aW5nIHNlc3Npb24ocylcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGV4aXN0aW5nIHNlc3Npb24ocylcbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgZXhpc3Rpbmcgc2Vzc2lvbnMsIHByZXZlbnRpbmcgdGhlbSBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkLlxuICAgICAqIElmIG5vIHF1ZXJ5IHBhcmFtcyBhcmUgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHNlc3Npb24gaXMgcmV2b2tlZC5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VTZXNzaW9uc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Nlc3Npb24vc2VsZlwiOiB7XG4gICAgLyoqXG4gICAgICogUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAgICpcbiAgICAgKiBJbW1lZGlhdGVseSByZXZva2VzIHRoZSBjdXJyZW50IHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZUN1cnJlbnRTZXNzaW9uXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvbi97c2Vzc2lvbl9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiZ2V0U2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgYSBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBhIHNlc3Npb25cbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgYW4gZXhpc3Rpbmcgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlU2Vzc2lvblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3NvbGFuYS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFNvbGFuYSBNZXNzYWdlXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgU29sYW5hIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wic29sYW5hU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3Rva2VuL2tleXNcIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIHRoZSBrZXlzIHRoYXQgdGhlIHJvbGUgdG9rZW4gY2FuIGFjY2Vzcy5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0VG9rZW5LZXlzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZVwiOiB7XG4gICAgLyoqXG4gICAgICogVXNlciBJbmZvXG4gICAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wiYWJvdXRNZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZXhwb3J0XCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0TGlzdFwiXTtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICAgKiBiZWZvcmUgZXhwb3J0IGNhbiBiZSBjb21wbGV0ZWQsIGFuZCByZXR1cm5zIGEgdGlja2V0IHRoYXQgY2FuIGJlIHVzZWRcbiAgICAgKiB0byBjb21wbGV0ZSB0aGUgZXhwb3J0IG9uY2UgdGhlIHRpbWVyIGhhcyBleHBpcmVkLlxuICAgICAqXG4gICAgICogT25seSBvbmUgdXNlci1leHBvcnQgcmVxdWVzdCBjYW4gYmUgYWN0aXZlIGZvciBhIGdpdmVuIGtleS4gSWYgdGhlcmVcbiAgICAgKiBpcyBhbHJlYWR5IGFuIGFjdGl2ZSBleHBvcnQsIHRoaXMgZW5kcG9pbnQgd2lsbCByZXR1cm4gYW4gZXJyb3IuIFRvXG4gICAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyRXhwb3J0SW5pdFwiXTtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnREZWxldGVcIl07XG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqXG4gICAgICogVGhpcyBlbmRwb2ludCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgaW5pdGlhdGluZyBhIHVzZXItZXhwb3J0IHJlcXVlc3QgdmlhXG4gICAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAgICogKGkuZS4sIGFmdGVyIHRoZSBleHBvcnQgZGVsYXkgaGFzIHBhc3NlZCBhbmQgYmVmb3JlIHRoZSByZXF1ZXN0IGhhcyBleHBpcmVkKS5cbiAgICAgKlxuICAgICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvZmlkb1wiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJSZWdpc3RlckZpZG9Jbml0XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlclJlZ2lzdGVyRmlkb0NvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvL3tmaWRvX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogRGVsZXRlIEZJRE8ga2V5XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBGSURPIGtleVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIEZJRE8ga2V5IGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiB0aGUga2V5IGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJ1c2VyRGVsZXRlRmlkb1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cFwiOiB7XG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAgICpcbiAgICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJSZXNldFRvdHBJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBUT1RQXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBUT1RQXG4gICAgICpcbiAgICAgKiBEZWxldGVzIFRPVFAgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIFRPVFAgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJEZWxldGVUb3RwXCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVzZXRUb3RwQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL3RvdHAvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgVE9UUFxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclZlcmlmeVRvdHBcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vyc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0VXNlcnNJbk9yZ1wiXTtcbiAgICAvKipcbiAgICAgKiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlcnMvb2lkY1wiOiB7XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGEgdGhpcmQtcGFydHkgdXNlciBmcm9tIHRoZSBvcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGEgdGhpcmQtcGFydHkgdXNlciBmcm9tIHRoZSBvcmdcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVPaWRjVXNlclwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJyZWdpc3RlckZpZG9Jbml0TGVnYWN5XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJyZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeVwiXTtcbiAgfTtcbiAgXCIvdjAvdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgICAqXG4gICAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJyZXNldFRvdHBJbml0TGVnYWN5XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlc2V0VG90cENvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHAvdmVyaWZ5XCI6IHtcbiAgICAvKipcbiAgICAgKiBWZXJpZnkgVE9UUFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ2ZXJpZnlUb3RwTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vYmxvYi9zaWduL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFJhdyBCbG9iXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gUmF3IEJsb2JcbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIGFyYml0cmFyeSBibG9iIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICpcbiAgICAgKiAtIEVDRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmlnLWVuZGlhbiByIGFuZCBzIHBsdXMgcmVjb3ZlcnktaWRcbiAgICAgKiBieXRlIHYsIHdoaWNoIGNhbiBpbiBnZW5lcmFsIHRha2UgYW55IG9mIHRoZSB2YWx1ZXMgMCwgMSwgMiwgb3IgMy5cbiAgICAgKlxuICAgICAqIC0gRWREU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBpbiB0aGUgc3RhbmRhcmQgZm9ybWF0LlxuICAgICAqXG4gICAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJibG9iU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2N1YmUzc2lnbmVyL2hlYXJ0YmVhdFwiOiB7XG4gICAgLyoqXG4gICAgICogUmVjb3JkIGhlYXJ0YmVhdFxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWNvcmQgaGVhcnRiZWF0XG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGlzIGNhbGxlZCBieSB0aGUgY3ViZTNzaWduZXIgcHJveHkgdG8gcmVjb3JkIHZhcmlvdXMgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjdWJlM3NpZ25lckhlYXJ0YmVhdFwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDEvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICAgKlxuICAgICAqIFNpZ25zIGFuIEV0aGVyZXVtIChhbmQgb3RoZXIgRVZNKSB0cmFuc2FjdGlvbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKiBSZXR1cm5zIGFuIFJMUC1lbmNvZGVkIHRyYW5zYWN0aW9uIHdpdGggRUlQLTE1NSBzaWduYXR1cmUuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZXRoMVNpZ25cIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ldGgyL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgICAqXG4gICAgICogU2lnbnMgYW4gZXRoMiB2YWxpZGF0b3IgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gQkxTIGtleS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJldGgyU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvc3Rha2VcIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICAgKlxuICAgICAqIFNpZ25zIGEgZGVwb3NpdCB0cmFuc2FjdGlvbiB3aXRoIGEgYHZhbGlkYXRvcl9rZXlgLiBJZiBgdmFsaWRhdG9yX2tleWAgaXMgc2V0IHRvIGEgcHJlZ2VuZXJhdGVkIGtleSwgd2UgdXNlIHRoZVxuICAgICAqIHByb3ZpZGVkIHZhbGlkYXRvciBrZXkuIE90aGVyd2lzZSwgd2UgZ2VuZXJhdGUgYSBuZXcgQkxTIGtleS5cbiAgICAgKlxuICAgICAqIFdoZW4gdXNpbmcgYSBwcmVnZW5lcmF0ZWQga2V5LCB0aGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2VcbiAgICAgKiBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzdGFrZVwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvdW5zdGFrZS97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIEhhbmRsZSB1bnN0YWtpbmcgcmVxdWVzdCwgcHJvZHVjaW5nIGEgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VcbiAgICAgKiB0aGF0IGNhbiBiZSBwb3N0ZWQgZGlyZWN0bHkgdG8gdGhlIEJlYWNvbiBjaGFpbi5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1bnN0YWtlXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vdG9rZW4vcmVmcmVzaFwiOiB7XG4gICAgLyoqXG4gICAgICogUmVmcmVzaCBTaWduZXIgU2Vzc2lvblxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJzaWduZXJTZXNzaW9uUmVmcmVzaFwiXTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgd2ViaG9va3MgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgY29tcG9uZW50cyB7XG4gIHNjaGVtYXM6IHtcbiAgICBBY2NlcHRlZFJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl0gJiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERpZmZlcmVudCByZXNwb25zZXMgd2UgcmV0dXJuIGZvciBzdGF0dXMgY29kZSBcIjIwMiBBY2NlcHRlZFwiLlxuICAgICAqXG4gICAgICogRXZlbiB0aG91Z2ggXCIyMDIgQWNjZXB0ZWRcIiBpcyBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UsIHdlIHJlcHJlc2VudFxuICAgICAqIGl0IGFzIGEgUnVzdCBlcnJvciBiZWNhdXNlIHRoYXQgbWFrZXMgaXQgZWFzeSB0byBoYXZlIHJvdXRlIGhhbmRsZXJzXG4gICAgICogcmV0dXJuIGBSZXN1bHQ8VCwgU2lnbmVyRXJyb3I+YCB3aGVyZSBgVGAgaXMgdGhlIHR5cGUgb2YgdGhlXG4gICAgICogcmVzcG9uc2UgZm9yIHRoZSBzdGF0dXMgY29kZSBcIjIwMCBPa1wiLlxuICAgICAqL1xuICAgIEFjY2VwdGVkVmFsdWU6IHtcbiAgICAgIE1mYVJlcXVpcmVkOiB7XG4gICAgICAgIC8qKiBAZGVzY3JpcHRpb24gTUZBIHJlcXVlc3QgaWQgKi9cbiAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcmdhbml6YXRpb24gaWQgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIHNlc3Npb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgQWRkS2V5c1RvUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgbGlzdCBvZiBrZXlzIHRvIGFkZCB0byBhIHJvbGVcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJLZXkjNjMwMjNhMjctMWU3MC00MzBhLWIyOTMtZmZiYzlkNmM0NDg0XCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAga2V5X2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBwb2xpY2llcyB0byBhcHBseSBmb3IgZWFjaCBrZXlcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhSZWNlaXZlclwiOiBcIjB4OGM1OTQ2OTFjMGU1OTJmZmEyMWYxNTNhMTZhZTQxZGI1YmVmY2FhYVwiXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4RGVwb3NpdFwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjogXCJDYW5vbmljYWxcIlxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImtpbmRcIjoge1xuICAgICAgICogICAgICAgICBcIlJlcXVpcmVkQXBwcm92ZXJzXCI6IHtcbiAgICAgICAqICAgICAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICAgICAgfVxuICAgICAgICogICAgICAgfSxcbiAgICAgICAqICAgICAgIFwicmVzdHJpY3RlZF9vcGVyYXRpb25zXCI6IFtcbiAgICAgICAqICAgICAgICAgXCJFdGgxU2lnblwiLFxuICAgICAgICogICAgICAgICBcIkJsb2JTaWduXCJcbiAgICAgICAqICAgICAgIF1cbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgIH07XG4gICAgQWRkVGhpcmRQYXJ0eVVzZXJSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaWRlbnRpdHk6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQXBwcm92YWxJbmZvOiB7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXZWJBdXRobiBSZWx5aW5nIFBhcnRpZXMgbWF5IHVzZSBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlIHRvIHNwZWNpZnlcbiAgICAgKiB0aGVpciBwcmVmZXJlbmNlIHJlZ2FyZGluZyBhdHRlc3RhdGlvbiBjb252ZXlhbmNlIGR1cmluZyBjcmVkZW50aWFsXG4gICAgICogZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF0dGVzdGF0aW9uY29udmV5YW5jZXByZWZlcmVuY2VcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6IFwibm9uZVwiIHwgXCJpbmRpcmVjdFwiIHwgXCJkaXJlY3RcIiB8IFwiZW50ZXJwcmlzZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSByZXF1aXJlZCBmb3IgYm90aCBgYXV0aGVudGljYXRlYCBhbmQgYHJlZnJlc2hgLiAqL1xuICAgIEF1dGhEYXRhOiB7XG4gICAgICAvKiogRm9ybWF0OiBpbnQzMiAqL1xuICAgICAgZXBvY2hfbnVtOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICBvdGhlcl90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGFzc2VydGlvbiByZXNwb25zZSB1c2VkIGJ5IGNsaWVudHMgd2hlbiBhdHRlbXB0aW5nIHRvIGxvZyBpbiB3aXRoIGEga25vd24gY3JlZGVudGlhbFxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNhdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRhaW5zIHRoZSBzdGFuZGFyZCBDVEFQMiBhdXRoZW50aWNhdG9yIGRhdGEuIE11c3QgYmUgYSB2YWxpZCBbYEF1dGhlbnRpY2F0b3JEYXRhYF0uXG4gICAgICAgKiBUaGlzIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGhvdyBrZXkgd2FzIGludm9rZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1hdXRoZW50aWNhdG9yZGF0YVxuICAgICAgICovXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgVVRGOCBlbmNvZGVkIEpTT04gd2hpY2ggbXVzdCBiZSBhIHZhbGlkIFtgQ2xpZW50RGF0YWBdXG4gICAgICAgKiBUaGlzIGRhdGEgaXMgY29tYmluZWQgd2l0aCBgYXV0aGVudGljYXRvcl9kYXRhYCB0byBwcm9kdWNlIHRoZSBzaWduYXR1cmVcbiAgICAgICAqIG1lYW5pbmcgdGhlIGNsaWVudCBhdHRlc3RzIHRvIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGRhdGEuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JyZXNwb25zZS1jbGllbnRkYXRhanNvblxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSBvZiB0aGUgY29uY2F0ZW5hdGVkIGBhdXRoZW50aWNhdG9yRGF0YSB8fCBoYXNoYCB3aGVyZVxuICAgICAgICogYGhhc2hgIGlzIHRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgYGNsaWVudERhdGFKU09OYCBidWZmZXI6XG4gICAgICAgKlxuICAgICAgICogRmllbGQgRGVmaW5pdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2Utc2lnbmF0dXJlXG4gICAgICAgKiBTdGVwIDExIG9mIGBnZXRBc3NlcnRpb25gIHNwZWNpZmllcyB0aGUgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3NjdG4tb3AtZ2V0LWFzc2VydGlvblxuICAgICAgICogUmVxdWlyZW1lbnQgZm9yIFNIQS0yNTY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNjb2xsZWN0ZWRjbGllbnRkYXRhLWhhc2gtb2YtdGhlLXNlcmlhbGl6ZWQtY2xpZW50LWRhdGFcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdGhlIGF1dGhlbnRpY2F0b3IgdG8gb3B0aW9uYWxseSBkZWNsYXJlIHRoZSBjcmVkZW50aWFsIGlkZW50aWZpZXIgdGhleSB1c2VkLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2UtdXNlcmhhbmRsZVxuICAgICAgICovXG4gICAgICB1c2VySGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgYXV0aGVudGljYXRvcnMnIGF0dGFjaG1lbnQgbW9kYWxpdGllcy5cbiAgICAgKiBSZWx5aW5nIFBhcnRpZXMgdXNlIHRoaXMgdG8gZXhwcmVzcyBhIHByZWZlcnJlZCBhdXRoZW50aWNhdG9yIGF0dGFjaG1lbnRcbiAgICAgKiBtb2RhbGl0eSB3aGVuIGNhbGxpbmcgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZSgpIHRvIGNyZWF0ZSBhIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9yYXR0YWNobWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6IFwicGxhdGZvcm1cIiB8IFwiY3Jvc3MtcGxhdGZvcm1cIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGludGVyZmFjZSByZXByZXNlbnRzIHRoZSBhdXRoZW50aWNhdG9yJ3NcbiAgICAgKiByZXNwb25zZSB0byBhIGNsaWVudOKAmXMgcmVxdWVzdCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsLiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGNyZWRlbnRpYWwgdGhhdCBjYW4gYmVcbiAgICAgKiB1c2VkIHRvIGlkZW50aWZ5IGl0IGZvciBsYXRlciB1c2UsIGFuZCBtZXRhZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZVxuICAgICAqIFdlYkF1dGhuIFJlbHlpbmcgUGFydHkgdG8gYXNzZXNzIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGNyZWRlbnRpYWxcbiAgICAgKiBkdXJpbmcgcmVnaXN0cmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLWF1dGhlbnRpY2F0b3JhdHRlc3RhdGlvbnJlc3BvbnNlXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGF0dGVzdGF0aW9uIG9iamVjdCwgd2hpY2ggaXMgb3BhcXVlIHRvLCBhbmRcbiAgICAgICAqIGNyeXB0b2dyYXBoaWNhbGx5IHByb3RlY3RlZCBhZ2FpbnN0IHRhbXBlcmluZyBieSwgdGhlIGNsaWVudC4gVGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QgY29udGFpbnMgYm90aCBhdXRoZW50aWNhdG9yIGRhdGEgYW5kIGFuIGF0dGVzdGF0aW9uXG4gICAgICAgKiBzdGF0ZW1lbnQuIFRoZSBmb3JtZXIgY29udGFpbnMgdGhlIEFBR1VJRCwgYSB1bmlxdWUgY3JlZGVudGlhbCBJRCwgYW5kXG4gICAgICAgKiB0aGUgY3JlZGVudGlhbCBwdWJsaWMga2V5LiBUaGUgY29udGVudHMgb2YgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBhcmVcbiAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBmb3JtYXQgdXNlZCBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIEl0IGFsc28gY29udGFpbnMgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHkncyBzZXJ2ZXIgcmVxdWlyZXMgdG8gdmFsaWRhdGUgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCxcbiAgICAgICAqIGFzIHdlbGwgYXMgdG8gZGVjb2RlIGFuZCB2YWxpZGF0ZSB0aGUgYXV0aGVudGljYXRvciBkYXRhIGFsb25nIHdpdGggdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YS4gRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICAgICAgKiDCp+KArzYuNSBBdHRlc3RhdGlvbiwgwqfigK82LjUuNCBHZW5lcmF0aW5nIGFuIEF0dGVzdGF0aW9uIE9iamVjdCwgYW5kIEZpZ3VyZVxuICAgICAgICogNi5cbiAgICAgICAqL1xuICAgICAgYXR0ZXN0YXRpb25PYmplY3Q6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlLCBpbmhlcml0ZWQgZnJvbSBBdXRoZW50aWNhdG9yUmVzcG9uc2UsIGNvbnRhaW5zIHRoZVxuICAgICAgICogSlNPTi1jb21wYXRpYmxlIHNlcmlhbGl6YXRpb24gb2YgY2xpZW50IGRhdGEgKHNlZSDCp+KArzYuNSBBdHRlc3RhdGlvbilcbiAgICAgICAqIHBhc3NlZCB0byB0aGUgYXV0aGVudGljYXRvciBieSB0aGUgY2xpZW50IGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoaXNcbiAgICAgICAqIGNyZWRlbnRpYWwuIFRoZSBleGFjdCBKU09OIHNlcmlhbGl6YXRpb24gTVVTVCBiZSBwcmVzZXJ2ZWQsIGFzIHRoZSBoYXNoXG4gICAgICAgKiBvZiB0aGUgc2VyaWFsaXplZCBjbGllbnQgZGF0YSBoYXMgYmVlbiBjb21wdXRlZCBvdmVyIGl0LlxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIHRoZSBBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcbiAgICAgKiBkaWN0aW9uYXJ5IHRvIHNwZWNpZnkgdGhlaXIgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZyBhdXRoZW50aWNhdG9yXG4gICAgICogYXR0cmlidXRlcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYToge1xuICAgICAgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBdHRhY2htZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFdlYkF1dGhuIExldmVsXG4gICAgICAgKiAxIGFuZCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXRzIG5hbWluZyByZXRhaW5zIHRoZSBkZXByZWNhdGVkXG4gICAgICAgKiDigJxyZXNpZGVudOKAnSB0ZXJtaW5vbG9neSBmb3IgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBzZXQgaXQgdG8gdHJ1ZSBpZiwgYW5kIG9ubHkgaWYsIHJlc2lkZW50S2V5IGlzIHNldCB0byByZXF1aXJlZC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYS1yZXF1aXJlcmVzaWRlbnRrZXlcbiAgICAgICAqL1xuICAgICAgcmVxdWlyZVJlc2lkZW50S2V5PzogYm9vbGVhbjtcbiAgICAgIHJlc2lkZW50S2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXNpZGVudEtleVJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyBtYXkgaW1wbGVtZW50IHZhcmlvdXMgdHJhbnNwb3J0cyBmb3IgY29tbXVuaWNhdGluZyB3aXRoXG4gICAgICogY2xpZW50cy4gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGhpbnRzIGFzIHRvIGhvdyBjbGllbnRzIG1pZ2h0IGNvbW11bmljYXRlXG4gICAgICogd2l0aCBhIHBhcnRpY3VsYXIgYXV0aGVudGljYXRvciBpbiBvcmRlciB0byBvYnRhaW4gYW4gYXNzZXJ0aW9uIGZvciBhXG4gICAgICogc3BlY2lmaWMgY3JlZGVudGlhbC4gTm90ZSB0aGF0IHRoZXNlIGhpbnRzIHJlcHJlc2VudCB0aGUgV2ViQXV0aG4gUmVseWluZ1xuICAgICAqIFBhcnR5J3MgYmVzdCBiZWxpZWYgYXMgdG8gaG93IGFuIGF1dGhlbnRpY2F0b3IgbWF5IGJlIHJlYWNoZWQuIEEgUmVseWluZ1xuICAgICAqIFBhcnR5IHdpbGwgdHlwaWNhbGx5IGxlYXJuIG9mIHRoZSBzdXBwb3J0ZWQgdHJhbnNwb3J0cyBmb3IgYSBwdWJsaWMga2V5XG4gICAgICogY3JlZGVudGlhbCB2aWEgZ2V0VHJhbnNwb3J0cygpLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXV0aGVudGljYXRvcnRyYW5zcG9ydFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclRyYW5zcG9ydDogXCJ1c2JcIiB8IFwibmZjXCIgfCBcImJsZVwiIHwgXCJpbnRlcm5hbFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBzaWduIGFuIEF2YWxhbmNoZSB0cmFuc2FjdGlvbnMgKi9cbiAgICBBdmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICAgICAqXG4gICAgICAgKiBFeGFtcGxlczpcbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3Blcm1pc3Npb25sZXNzX3ZhbGlkYXRvci5ycyNMMTQpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFN1Ym5ldFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfc3VibmV0X3ZhbGlkYXRvci5ycyNMMjkpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfdmFsaWRhdG9yLnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlQ2hhaW5cIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX2NoYWluLnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVTdWJuZXRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX3N1Ym5ldC5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2V4cG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9pbXBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJCYXNlXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvbW9kLnJzI0wyMSkgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvZXhwb3J0LnJzI0wxNikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvaW1wb3J0LnJzI0wxNCkgfX1cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIEF2YVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGEgemVyb2l6aW5nIDMyLWJ5dGUgZml4ZWQtc2l6ZSBhcnJheSAqL1xuICAgIEIzMjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwibWVzc2FnZV9iYXNlNjRcIjogXCJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYb3hNak0wTlRZS1wiXG4gICAgICogfVxuICAgICAqL1xuICAgIEJsb2JTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJsb2IgdG8gc2lnbiwgZW5jb2RlZCBhcyBhIGJhc2U2NCBzdHJpbmcuXG4gICAgICAgKlxuICAgICAgICogTm90ZSB0aGF0IGNlcnRhaW4gc2lnbmluZyBrZXlzIGltcG9zZSBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cyBvbiB0aGUgY29udGVudHMgb2ZcbiAgICAgICAqIHRoZSBtZXNzYWdlLiBGb3IgZXhhbXBsZSwgU2VjcDI1NmsxIGtleXMgcmVxdWlyZSB0aGF0IHRoZSBtZXNzYWdlIGlzIDMyIGJ5dGVzIGxvbmcuXG4gICAgICAgKi9cbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBCbG9iU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJ0Y1NpZ2hhc2hUeXBlOlxuICAgICAgfCBcIkFsbFwiXG4gICAgICB8IFwiTm9uZVwiXG4gICAgICB8IFwiU2luZ2xlXCJcbiAgICAgIHwgXCJBbGxQbHVzQW55b25lQ2FuUGF5XCJcbiAgICAgIHwgXCJOb25lUGx1c0FueW9uZUNhblBheVwiXG4gICAgICB8IFwiU2luZ2xlUGx1c0FueW9uZUNhblBheVwiO1xuICAgIEJ0Y1NpZ25SZXF1ZXN0OiB7XG4gICAgICBzaWdfa2luZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWduYXR1cmVLaW5kXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgYml0Y29pbiB0cmFuc2FjdGlvbiB0byBzaWduICovXG4gICAgICB0eDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgQnRjU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlIGluIGNvbXBhY3QgZm9ybWF0LlxuICAgICAgICogQGV4YW1wbGUgMHg0NTRhZWYyN2MyMWRmN2RkOGY1MzdkYzg2OWY0Y2Q2NTI4NmNlMjM5YTUyZDM2NDcwZjRkODViZTg1YTg5MWIwMjc4OWU1ZmZkODU2MGIzMmE5ODExMGU1ZDAwOTY4MDJlNGMxNDE0NWNmNmM0NGYxMGE3NjhjODc3NTVlYWE0ODAwXG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQnRjU2lnbmF0dXJlS2luZDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZWdyZWdhdGVkIFdpdG5lc3MgKi9cbiAgICAgIFNlZ3dpdDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRyYW5zYWN0aW9uIGlucHV0IGluZGV4XG4gICAgICAgICAqIEBleGFtcGxlIDBcbiAgICAgICAgICovXG4gICAgICAgIGlucHV0X2luZGV4OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2NyaXB0XG4gICAgICAgICAqIEBleGFtcGxlIDB4NzZhOTE0NzkwOTE5NzIxODZjNDQ5ZWIxZGVkMjJiNzhlNDBkMDA5YmRmMDA4OTg4YWNcbiAgICAgICAgICovXG4gICAgICAgIHNjcmlwdF9jb2RlOiBzdHJpbmc7XG4gICAgICAgIHNpZ2hhc2hfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWdoYXNoVHlwZVwiXTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEFtb3VudCBpbiBzYXRvc2hpc1xuICAgICAgICAgKiBAZXhhbXBsZSAxMDAwMDAwXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIGhvdyB0byBkZXJpdmUgYSBXZWJBdXRobiBjaGFsbGVuZ2UgdmFsdWUuICovXG4gICAgQ2hhbGxlbmdlUGllY2VzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGJhc2U2NHVybCBlbmNvZGluZyBvZiBVVEY4IEpTT04uIFRoZSBkYXRhIGluIHRoYXQgSlNPTiBpcyBlbmRwb2ludCBzcGVjaWZpYywgYW5kIGRlc2NyaWJlcyB3aGF0IHRoaXMgRklETyBjaGFsbGVuZ2Ugd2lsbCBiZSB1c2VkIGZvci5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIGNhbiB1c2UgYHByZWltYWdlYCBhbG9uZyB3aXRoIGByYW5kb21fc2VlZGAgdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYWxsZW5nZSBsaWtlIHNvOlxuICAgICAgICpcbiAgICAgICAqIGBjaGFsbGVuZ2UgPSBITUFDLVNIQTI1NihrZXk9cmFuZG9tX3NlZWQsIG1lc3NhZ2U9cHJlaW1hZ2UpYFxuICAgICAgICovXG4gICAgICBwcmVpbWFnZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJhbmRvbSBzZWVkIHRoYXQgcHJldmVudHMgcmVwbGF5IGF0dGFja3MgKi9cbiAgICAgIHJhbmRvbV9zZWVkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBpbmZvcm1hdGlvbiBzZW50IHRvIHRoZSBjbGllbnQuXG4gICAgICogVGhpcyBzdHJ1Y3Qgd29ya3MgaW4gdGFuZGVtIHdpdGggaXRzIHNlcnZlci1zaWRlIGNvdW50ZXJwYXJ0IFtgU2Vzc2lvbkRhdGFgXS5cbiAgICAgKi9cbiAgICBDbGllbnRTZXNzaW9uSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0byB1c2UgZm9yIGF1dGhvcml6YXRpb24uICovXG4gICAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgICBhdXRoX3Rva2VuX2V4cDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXBvY2ggYXQgd2hpY2ggdGhlIHRva2VuIHdhcyBsYXN0IHJlZnJlc2hlZFxuICAgICAgICovXG4gICAgICBlcG9jaDogbnVtYmVyO1xuICAgICAgZXBvY2hfdG9rZW46IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQjMyXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbiB0byB1c2UgZm9yIHJlZnJlc2hpbmcgdGhlIGAoYXV0aCwgcmVmcmVzaClgIHRva2VuIHBhaXIgKi9cbiAgICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICAgIHJlZnJlc2hfdG9rZW5fZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQgKi9cbiAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICB9O1xuICAgIENvbmZpZ3VyZWRNZmE6XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICB0eXBlOiBcInRvdHBcIjtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBjcmVkZW50aWFsIGlkICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBnaXZlbiB0byB0aGUga2V5ICovXG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHR5cGU6IFwiZmlkb1wiO1xuICAgICAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIGF0dGVzdGF0aW9uIGRvY3VtZW50IGZyb20gYSBzZWN1cmUgZW5jbGF2ZSwgaW5jbHVkaW5nIGFuXG4gICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfYXR0ZXN0YXRpb246IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgKiBzZWNyZXRzIGF0dGVzdGluZyB0byB0aGVpciBnZW5lcmF0aW9uIGluc2lkZSBhIHNlY3VyZSBlbmNsYXZlLlxuICAgICAgICovXG4gICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlS2V5UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gaWQgZm9yIHdoaWNoIHRoZSBrZXkgaXMgYWxsb3dlZCB0byBzaWduIG1lc3NhZ2VzXG4gICAgICAgKiBAZXhhbXBsZSA1XG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkPzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBrZXlzIHRvIGNyZWF0ZVxuICAgICAgICogQGV4YW1wbGUgMVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbG93cyB1c2VycyB0byBzcGVjaWZ5IGEgdXNlciBvdGhlciB0aGFuIHRoZW1zZWx2ZXMgdG8gcmVjZWl2ZSB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgY3JlYXRlIHJvbGUgcmVxdWVzdCBib2R5ICovXG4gICAgQ3JlYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbiAqL1xuICAgIENyZWF0ZVJvbGVSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQ3JlYXRlU2Vzc2lvblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHNlc3Npb24ncyBwdXJwb3NlXG4gICAgICAgKiBAZXhhbXBsZSBNYW5hZ2Uga2V5cyBvbiBzZXJ2ZXIgZm9vLmJhclxuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIm1hbmFnZTprZXk6KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3Blczogc3RyaW5nW107XG4gICAgfTtcbiAgICBDcmVhdGVUb2tlblJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmF0Y2hldENvbmZpZ1wiXSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHB1cnBvc2Ugb2YgdGhlIGtleVxuICAgICAgICogQGV4YW1wbGUgVmFsaWRhdG9yIFNpZ25pbmdcbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hhdCBjYXBhYmlsaXRpZXMgdGhpcyBzZXNzaW9uIHdpbGwgaGF2ZS4gQnkgZGVmYXVsdCwgaXQgaGFzIGFsbFxuICAgICAgICogc2lnbmluZyBjYXBhYmlsaXRpZXMsIGkuZS4sIGp1c3QgdGhlICdzaWduOionIHNjb3BlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3Blcz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleHRlbmRlZCBmb3JtIG9mIGBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zYCB0aGF0IGFsbG93cyBjbGllbnRzIHRvIGRlcml2ZSB0aGUgV2ViQXV0aG4gY2hhbGxlbmdlXG4gICAgICogZnJvbSBhIHN0cnVjdHVyZWQgcHJlaW1hZ2UuXG4gICAgICpcbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgd2VidWF0aG4gc2lnbmF0dXJlIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGEgc3BlY2lmaWMgcHVycG9zZVxuICAgICAqL1xuICAgIENyZWF0aW9uT3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICB9O1xuICAgIEN1YmVTaWduZXJVc2VySW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBjb25maWd1cmVkX21mYTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVkTWZhXCJdW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNldCBvbmNlIHRoZSB1c2VyIHN1Y2Nlc3NmdWxseSBsb2dzIGludG8gQ3ViZVNpZ25lciAqL1xuICAgICAgaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEN1YmVTaWduZXIncyB1c2VyIGlkZW50aWZpZXIgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBwcm9kdWNlZCBieSBhIHN1Y2Nlc3NmdWwgZGVwb3NpdFxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogNSxcbiAgICAgKiAgIFwiZGVwb3NpdF90eG5cIjoge1xuICAgICAqICAgICBcImRhdGFcIjogXCIweC4uLlwiLFxuICAgICAqICAgICBcInRvXCI6IFwiMHhmZjUwZWQzZDBlYzAzYWMwMWQ0Yzc5YWFkNzQ5MjhiZmY0OGE3YjJiXCIsXG4gICAgICogICAgIFwidmFsdWVcIjogXCIweDFiYzE2ZDY3NGVjODAwMDAwXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ld192YWxpZGF0b3JfcGtcIjogXCI5NzAwZmJiOGM5MDY5NDI0NDJjMmE1YjNhZDc0OThmMjdhZWRkYTI1Mzc4NmE2ZmJhYThmZWY0N2ZiN2FmMjM0ZTUwY2YyY2NlODE1YTU1MzA4Nzk5MmFlNTY1ZDQ4ZGFcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBEZXBvc2l0VHhuOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDaGFpbiBJRCBmb3Igd2hpY2ggdGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24gd2FzIGNyZWF0ZWRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcG9zaXQgdHJhbnNhY3Rpb24uIEluY2x1ZGVzIG9ubHkgYHRvYCwgYHZhbHVlYCwgYW5kIGBkYXRhYCBmaWVsZHMuICovXG4gICAgICBkZXBvc2l0X3R4bjogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgY29tcHJlc3NlZCBmb3JtIG9mIHRoZSBuZXcgdmFsaWRhdG9yIEJMUyBwdWJsaWMga2V5ICovXG4gICAgICBuZXdfdmFsaWRhdG9yX3BrOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgZGVwb3NpdCB0byBwZXJmb3JtXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBEZXBvc2l0VHlwZTogXCJDYW5vbmljYWxcIiB8IFwiV3JhcHBlclwiO1xuICAgIERlcml2ZUtleVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9uZSBvciBtb3JlIGRlcml2YXRpb24gcGF0aHMgZnJvbSB3aGljaCB0byBkZXJpdmUga2V5cy5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJtLzQ0Jy82MCcvMCcvMC8wXCIsXG4gICAgICAgKiAgIFwibS80NCcvOTAwMCcvMCcvMC8wXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmdbXTtcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXRlcmlhbC1pZCBvZiB0aGUgbW5lbW9uaWMgdG8gdXNlIGZvciBkZXJpdmF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSAweDlmMDdiZTgyZDkzNGZjYjVkMGY3NWRkMjRjMmRmZWE4YTg1YTRkMGMyODlkNTg4MjhiMzUzN2ZhZTI0ZDMyYjhcbiAgICAgICAqL1xuICAgICAgbW5lbW9uaWNfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEVpcDE5MU9yNzEyU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBzaWduYXR1cmUgY29tcHJpc2luZyA2NSBieXRlcyBpbiB0aGUgZm9ybWF0IHJlcXVpcmVkXG4gICAgICAgKiBieSBlY3JlY292ZXI6IDMyLWJ5dGUgciwgMzItYnl0ZSBzLCBhbmQgb25lLWJ5dGUgcmVjb3ZlcnktaWQgdlxuICAgICAgICogd2hpY2ggaXMgZWl0aGVyIDI3IG9yIDI4LlxuICAgICAgICogQGV4YW1wbGUgMHg0MzU1YzQ3ZDYzOTI0ZThhNzJlNTA5YjY1MDI5MDUyZWI2YzI5OWQ1M2EwNGUxNjdjNTc3NWZkNDY2NzUxYzlkMDcyOTk5MzZkMzA0YzE1M2Y2NDQzZGZhMDVmNDBmZjAwN2Q3MjkxMWI2ZjcyMzA3Zjk5NjIzMTYwNWI5MTU2MjFjXG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgRWlwMTkxU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0xOTEgZGF0YSB0byBzaWduIGFzIGhleC1lbmNvZGVkIGJ5dGVzLlxuICAgICAgICogQGV4YW1wbGUgMHhkZWFkYmVlZjEzYzBmZmVlXG4gICAgICAgKi9cbiAgICAgIGRhdGE6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogMTMzNyxcbiAgICAgKiAgIFwidHlwZWRfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZG9tYWluXCI6IHtcbiAgICAgKiAgICAgICBcImNoYWluSWRcIjogMTMzNyxcbiAgICAgKiAgICAgICBcIm5hbWVcIjogXCJFdGhlciBNYWlsXCIsXG4gICAgICogICAgICAgXCJ2ZXJpZnlpbmdDb250cmFjdFwiOiBcIjB4Q2NDQ2NjY2NDQ0NDY0NDQ0NDQ2NDY0NjY0NjQ0NDY0NjY2NjY2NjQ1wiLFxuICAgICAqICAgICAgIFwidmVyc2lvblwiOiBcIjFcIlxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcIm1lc3NhZ2VcIjoge1xuICAgICAqICAgICAgIFwiY29udGVudHNcIjogXCJIZWxsbywgQm9iIVwiLFxuICAgICAqICAgICAgIFwiZnJvbVwiOiB7XG4gICAgICogICAgICAgICBcIm5hbWVcIjogXCJDb3dcIixcbiAgICAgKiAgICAgICAgIFwid2FsbGV0c1wiOiBbXG4gICAgICogICAgICAgICAgIFwiMHhDRDJhM2Q5RjkzOEUxM0NEOTQ3RWMwNUFiQzdGRTczNERmOEREODI2XCIsXG4gICAgICogICAgICAgICAgIFwiMHhEZWFEYmVlZmRFQWRiZWVmZEVhZGJFRUZkZWFkYmVFRmRFYURiZWVGXCJcbiAgICAgKiAgICAgICAgIF1cbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwidG9cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQm9iXCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4YkJiQkJCQmJiQkJCYmJiQmJiQmJiYmJCQmJCYmJiYkJiQmJiQkJiQlwiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCZGFCZWE1N0IwQkRBQmVBNTdiMGJkQUJFQTU3YjBCRGFiRWE1N1wiLFxuICAgICAqICAgICAgICAgICBcIjB4QjBCMGIwYjBiMGIwQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfVxuICAgICAqICAgICB9LFxuICAgICAqICAgICBcInByaW1hcnlUeXBlXCI6IFwiTWFpbFwiLFxuICAgICAqICAgICBcInR5cGVzXCI6IHtcbiAgICAgKiAgICAgICBcIkVJUDcxMkRvbWFpblwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInZlcnNpb25cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImNoYWluSWRcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwidWludDI1NlwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJpZnlpbmdDb250cmFjdFwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiR3JvdXBcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJtZW1iZXJzXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvbltdXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiTWFpbFwiOiBbXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcImZyb21cIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiUGVyc29uXCJcbiAgICAgKiAgICAgICAgIH0sXG4gICAgICogICAgICAgICB7XG4gICAgICogICAgICAgICAgIFwibmFtZVwiOiBcInRvXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJjb250ZW50c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF0sXG4gICAgICogICAgICAgXCJQZXJzb25cIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ3YWxsZXRzXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcImFkZHJlc3NbXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXVxuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIEVpcDcxMlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4taWQgdG8gd2hpY2ggdGhpcyB0eXBlZCBkYXRhIHdpbGwgYmUgc2VudFxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFSVAtNzEyIHR5cGVkIGRhdGEuIFJlZmVyIHRvIHRoZSBKU09OIHNjaGVtYSBkZWZpbmVkIGluIEVJUC03MTIuICovXG4gICAgICB0eXBlZF9kYXRhOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICAvKiogQGRlZmF1bHQgbnVsbCAqL1xuICAgIEVtcHR5OiB1bmtub3duO1xuICAgIEVtcHR5SW1wbDoge1xuICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRXBvY2ggaXMgYSBxdW90ZWQgYHVpbnQ2NGAuXG4gICAgICogQGV4YW1wbGUgMjU2XG4gICAgICovXG4gICAgRXBvY2g6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICogQGRlc2NyaXB0aW9uIERhdGVUaW1lIG1lYXN1cmVkIGluIHNlY29uZHMgc2luY2UgdW5peCBlcG9jaC5cbiAgICAgKiBBIHdyYXBwZXIgdHlwZSBmb3Igc2VyaWFsaXphdGlvbiB0aGF0IGVuY29kZXMgYSBbYFN5c3RlbVRpbWVgXSBhcyBhIFtgdTY0YF1cbiAgICAgKiByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIFtgU3lzdGVtVGltZTo6VU5JWF9FUE9DSGBdLlxuICAgICAqL1xuICAgIEVwb2NoRGF0ZVRpbWU6IG51bWJlcjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBzdHJ1Y3R1cmUgb2YgRXJyb3JSZXNwb25zZSBtdXN0IG1hdGNoIHRoZSByZXNwb25zZSB0ZW1wbGF0ZSB0aGF0IEFXUyB1c2VzICovXG4gICAgRXJyb3JSZXNwb25zZToge1xuICAgICAgYWNjZXB0ZWQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkVmFsdWVcIl0gfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFcnJvciBtZXNzYWdlICovXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHJlcXVlc3QgaWRlbnRpZmllciAqL1xuICAgICAgcmVxdWVzdF9pZD86IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogNDMxMTMsXG4gICAgICogICBcInR4XCI6IHtcbiAgICAgKiAgICAgXCJjaGFpbl9pZFwiOiBcIjB4YTg2OVwiLFxuICAgICAqICAgICBcImdhc1wiOiBcIjB4NjFhODBcIixcbiAgICAgKiAgICAgXCJtYXhGZWVQZXJHYXNcIjogXCIweDk1MDJGOTAwXCIsXG4gICAgICogICAgIFwibWF4UHJpb3JpdHlGZWVQZXJHYXNcIjogXCIweDUwXCIsXG4gICAgICogICAgIFwibm9uY2VcIjogXCIweGJcIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZjAwYmExMmYwMDAwMDAwMGI0MTIxMjAwMDAwZjAwYzBmZmVlZjAwZFwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCIweDAyXCIsXG4gICAgICogICAgIFwidmFsdWVcIjogXCIweDEwMDAwMDAwMDAwXCJcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgdG8gc2V0IGluIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0yNzE4IHR5cGVkIHRyYW5zYWN0aW9uIChzZWUgdGhlIFtldGhlcnMtcnNcbiAgICAgICAqIGludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLnJzL2V0aGVycy9sYXRlc3QvZXRoZXJzL3R5cGVzL3N0cnVjdC5FaXAxNTU5VHJhbnNhY3Rpb25SZXF1ZXN0Lmh0bWwpKSB0eXBlcywgaW5jbHVkaW5nIEVJUC0xNTU5IHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMlwiIC4uLiB9YCksIGFuZCBsZWdhY3lcbiAgICAgICAqIHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMFwiIC4uLiB9YCkuIEFsbCB2YWx1ZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBleHBlY3RlZFxuICAgICAgICogdG8gYmUgKDB4LXByZWZpeGVkIG9yIG5vdCkgaGV4IHN0cmluZ3Mgb3IgYnl0ZSBhcnJheXMuXG4gICAgICAgKi9cbiAgICAgIHR4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBpdHMgc2lnbmF0dXJlXG4gICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICovXG4gICAgICBybHBfc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImV0aDJfc2lnbl9yZXF1ZXN0XCI6IHtcbiAgICAgKiAgICAgXCJhZ2dyZWdhdGlvbl9zbG90XCI6IHtcbiAgICAgKiAgICAgICBcInNsb3RcIjogXCIzNlwiXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwiZm9ya19pbmZvXCI6IHtcbiAgICAgKiAgICAgICBcImZvcmtcIjoge1xuICAgICAqICAgICAgICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCIsXG4gICAgICogICAgICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICAgICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHg0MjQyNDI0MlwiXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHg5ZDEzZDYxMjEyYzA2N2UwMmNlOGU2MDhhNzAwN2UyYzNiMDI1NzFlOWU2ZjI3ZmY0NWRmYTkxYmYyN2M4NzBiXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJzaWduaW5nUm9vdFwiOiBcIjB4OWM1N2U3N2M0OTY1NzI3NTQyYjkzMzdkZjY3NTZmOTQ4NDY0YmNhMzg1OWJlYTZlZDNjMGVjNjYwMGQ4OTgyYVwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCJBR0dSRUdBVElPTl9TTE9UXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJtYWlubmV0XCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdWJzZXQgb2YgdGhlIFdlYjNTaWduZXIgRXRoMiBCTFMgc2lnbmluZyByZXF1ZXN0IHdob3NlIHNjaGVtYSBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9jb25zZW5zeXMuZ2l0aHViLmlvL3dlYjNzaWduZXIvd2ViM3NpZ25lci1ldGgyLmh0bWwjdGFnL1NpZ25pbmcvb3BlcmF0aW9uL0VUSDJfU0lHTikuXG4gICAgICAgKiBXZSBoYW5kbGUgZGVwb3NpdHMgYW5kIHZvbHVudGFyeSBleGl0cyBzZXBhcmF0ZWx5LlxuICAgICAgICovXG4gICAgICBldGgyX3NpZ25fcmVxdWVzdDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgIH07XG4gICAgRXRoMlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4IGVuY29kZWQgc2lnbmF0dXJlIHByZWZpeGVkIHdpdGggMHggZS5nLiBcIjB4MDAwMC4uLlwiXG4gICAgICAgKiBAZXhhbXBsZSAweGI0ZjJlZjlkMTJhNTRlMWY1Njk1OTZjMDdjOTdkNmQ3MzA1MzViNmZmYzBkMjg3NzYxZGM3ODEwM2E4NjMyNjc4MjQ3MWEwNGM3NWNlN2E2ZmFlYTA4Y2E5YTRhMDgzMDAzMWNkY2I4OTNkYTg3MTFkNTRhYTIyNjE5ZjFhN2U3MWI4MTg1ZGRmNGM2YmZkOWJhYmJkNzM1OTYwZTM1ZTU2YmQ2ZWViODk2MjViMDQ4NTBlN2E5ZWY4ODQ2ZTU0OVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9Bc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlY2xhcmVzIGludGVudCB0byByZWdpc3RlciBhIG5ldyBGSURPIGtleSAqL1xuICAgIEZpZG9DcmVhdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBuZXcgZmlkbyBjcmVkZW50aWFsXG4gICAgICAgKiBAZXhhbXBsZSBXb3JrIFl1YmlrZXlcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyBhIGZvcmsgb2YgdGhlIGBCZWFjb25DaGFpbmAsIHRvIHByZXZlbnQgcmVwbGF5IGF0dGFja3MuXG4gICAgICogVGhlIHNjaGVtYSBvZiBgRm9ya2AgaXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBjaGFpblxuICAgICAqIHNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNmb3JrKS5cbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRm9yazoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQzNDM0MzQzXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfdmVyc2lvbjogc3RyaW5nO1xuICAgICAgZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQcmV2aW91cyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGRhdGEgYXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBBUElcbiAgICAgKiBzcGVjXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9nZXRHZW5lc2lzKS5cbiAgICAgKiBZb3UgY2FuIGdldCB0aGUgZ2VuZXNpcyBkYXRhIGZyb20gdGhlIEJlYWNvbiBub2RlJ3MgYC9ldGgvdjEvYmVhY29uL2dlbmVzaXNgIGVuZC1wb2ludC5cbiAgICAgKiBUaGlzIHN0cnVjdCBkZWZpbml0aW9uIGlzIG9yaWdpbmFsbHkgZnJvbSBsaWdodGhvdXNlJ3MgZXRoMi5cbiAgICAgKi9cbiAgICBHZW5lc2lzRGF0YToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfZm9ya192ZXJzaW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHRpbWVcbiAgICAgICAqIEBleGFtcGxlIDE2NzkzMjY0NDlcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc190aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHZhbGlkYXRvcnMgcm9vdC5cbiAgICAgICAqIEBleGFtcGxlIDB4MjcwZDQzZTc0Y2UzNDBkZTRiY2EyYjE5MzZiZWNhMGY0ZjU0MDhkOWU3OGFlYzQ4NTA5MjBiYWY2NTlkNWI2OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3ZhbGlkYXRvcnNfcm9vdDogc3RyaW5nO1xuICAgIH07XG4gICAgR2V0S2V5c0luT3JnUmVxdWVzdDoge1xuICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJZEluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU3RhdHMgcGVydGFpbmluZyB0aGUgdGhlIHNlbmRlciBgY3ViZTNzaWduZXJgIGluc3RhbmNlICovXG4gICAgSGVhcnRiZWF0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIGN1cnJlbnRseSBhY3RpdmUgKHJlY2VpdmVkIGJ1dCBub3QgbmVjZXNzYXJpbHkgYmVpbmcgcHJvY2Vzc2VkIHlldClcbiAgICAgICAqL1xuICAgICAgY3VycmVudF9udW1fcmVxdWVzdHNfYWN0aXZlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBieSBjdWJlM3NpZ25lclxuICAgICAgICovXG4gICAgICBjdXJyZW50X251bV9yZXF1ZXN0c19wcm9jZXNzaW5nOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCByZWNvcmQgbWV0cmljIGRhdGEgZnJvbSB0aGlzIGhlYXJ0YmVhdCAqL1xuICAgICAgaWdub3JlPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBuZXcgcmVxdWVzdHMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB0aGF0IGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0c19mYWlsZWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB3ZXJlIHJldHJpZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHNfcmV0cmllZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJldHJpZXMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmV0cmllczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHRpbWVzIGF1dGggdG9rZW4gd2FzIHJlZnJlc2hlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXM/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgdGltZXMgYXV0aCB0b2tlbiByZWZyZXNoIGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXNfZmFpbGVkPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGUgcHJveHkgc2VuZGluZyB0aGUgaGVhcnQgYmVhdCByZXF1ZXN0XG4gICAgICAgKlxuICAgICAgICogVE9ETzogTWFrZSBub24tb3B0aW9uYWwgb25jZSB3ZSBkbyBub3Qgc3VwcG9ydCBwcm94aWVzIHdpdGhvdXQgdmVyc2lvbiBpbmZvcm1hdGlvblxuICAgICAgICovXG4gICAgICBwcm94eV92ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIENhcHR1cmVzIGFsbCB0aGUgcmVsZXZhbnQgaW5mbyAoaW5jbHVkaW5nIHRoZSByZXF1ZXN0IGJvZHkpIGFib3V0IHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBNRkEuXG4gICAgICogV2UgdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMgcmVzdW1lZCAoYWZ0ZXIgb2J0YWluaW5nIG5lY2Vzc2FyeSBNRkEgYXBwcm92YWxzKVxuICAgICAqIGl0IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaXQgb3JpZ2luYWxseSB3YXMuXG4gICAgICovXG4gICAgSHR0cFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZXF1ZXN0IGJvZHkgKi9cbiAgICAgIGJvZHk/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCBvZiB0aGUgcmVxdWVzdCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcGF0aCBvZiB0aGUgcmVxdWVzdCAoaW5jbHVkaW5nIGhvc3Qgb3Igbm90PykgKi9cbiAgICAgIHBhdGg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT0lEQyBhdWRpZW5jZTsgc2V0IG9ubHkgaWYgdGhlIHByb29mIHdhcyBvYnRhaW5lZCBieSB1c2luZyBPSURDIHRva2VuLlxuICAgICAgICpcbiAgICAgICAqIEluIG90aGVyIHdvcmRzLCBwcmVzZW5jZSBvZiB0aGlzIGZpZWxkIHRlc3RpZmllcyB0aGF0IGF1dGhvcml6YXRpb24gd2FzIG9idGFpbmVkIHZpYSBPSURDLlxuICAgICAgICovXG4gICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGV4cF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgfSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gb3BhcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBwcm9vZiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIEltcG9ydEtleVJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBIHNldCBvZiBlbmNyeXB0ZWQga2V5cyB0byBiZSBpbXBvcnRlZCAqL1xuICAgICAga2V5X21hdGVyaWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkltcG9ydEtleVJlcXVlc3RNYXRlcmlhbFwiXVtdO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICB9O1xuICAgIEltcG9ydEtleVJlcXVlc3RNYXRlcmlhbDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNsaWVudCdzIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgdG8gZGVyaXZlIGEgc2hhcmVkIGtleS5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCwgU0VDMS1lbmNvZGVkIFAzODQgcHVibGljIGtleS5cbiAgICAgICAqL1xuICAgICAgY2xpZW50X3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlbmNyeXB0ZWQga2V5aW5nIG1hdGVyaWFsIHRvIGJlIGltcG9ydGVkLlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGNpcGhlcnRleHQuXG4gICAgICAgKi9cbiAgICAgIGlrbV9lbmM6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgc2FsdCB2YWx1ZSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQgYnl0ZSBzdHJpbmcuXG4gICAgICAgKi9cbiAgICAgIHNhbHQ6IHN0cmluZztcbiAgICB9O1xuICAgIEludml0ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZW1haWwgYWRkcmVzc1xuICAgICAgICogQGV4YW1wbGUgYWxpY2VAYWNtZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbG9naW4gTUZBIHBvbGljeSAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlcidzIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICByb2xlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZW1iZXJSb2xlXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNraXAgc2VuZGluZyBhbiBpbnZpdGF0aW9uIGVtYWlsIHRvIHRoaXMgdXNlciBpZiB0cnVlLlxuICAgICAgICpcbiAgICAgICAqIE5PVEU6IHRoaXMgZmllbGQgaXMgZm9yIGludGVybmFsIHRlc3RpbmcgdXNlIE9OTFkuIElmIHlvdSBkbyBub3RcbiAgICAgICAqIHNlbmQgYW4gaW52aXRhdGlvbiBlbWFpbCwgdGhlIHVzZXIgd2lsbCBuZXZlciBiZSBhYmxlIHRvIGxvZyBpbi5cbiAgICAgICAqIEBleGFtcGxlIGZhbHNlXG4gICAgICAgKi9cbiAgICAgIHNraXBfZW1haWw6IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSBbYEtleVBhY2thZ2VgXSBzZXJpYWxpemVkIGludG8gYSBmb3JtYXQgdGhhdCBnaXZlcyBhIHRpZGllciBKU09OXG4gICAgICogcmVwcmVzZW50YXRpb24gc3VpdGFibGUgZm9yIGVuY3J5cHRpb24gaW4gdGhlIHVzZXItZXhwb3J0IGZsb3cuXG4gICAgICpcbiAgICAgKiBXZSBjb25zdHJ1Y3QgdmFsdWVzIG9mIHRoaXMgdHlwZSByYXRoZXIgdGhhbiBjb25zdHJ1Y3RpbmcgYHNlcmRlX2pzb246OlZhbHVlYHNcbiAgICAgKiBkaXJlY3RseSB3aXRoIGBqc29uISgpYCBiZWNhdXNlIHRoaXMgYWxsb3dzIHVzIHRvIHplcm9pemUgdmFsdWVzIG9uIGRyb3AsIHdoaWNoXG4gICAgICogZG9lc24ndCB3b3JrIHdpdGggYHNlcmRlX2pzb246OlZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4YW1wbGVzIG9mIHNlcmlhbGl6ZWQgbWF0ZXJpYWw6XG4gICAgICpcbiAgICAgKiAtIGBKc29uS2V5TWF0ZXJpYWw6OkVuZ2xpc2hNbmVtb25pY2A6XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiB1c2UgY3ViaXN0X3NpZ25lcl91dGlsczo6e1xuICAgICAqIERlcml2YXRpb25QYXRoLCBLZXlQYWNrYWdlLCBNbmVtb25pYywgTW5lbW9uaWNQYWNrYWdlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IE1ORU1PTklDOiAmc3RyID0gXCJkZXBvc2l0IGZpc2NhbCBicmFpbiBzd2FybSBzdXJyb3VuZCBjb3VzaW4gaG9ybiBnbGFyZSBmaXggbG92ZSByZW5kZXIgYmVsaWV2ZSBndWlkZSBzaHVmZmxlIHN0ZW0gY3JhbSBicm9jY29saSByZXNlbWJsZSBiZWFjaCBhcnRlZmFjdCBsYW5ndWFnZSBnaWZ0IGphciBwZXJtaXRcIjtcbiAgICAgKiBjb25zdCBERVJfUEFUSDogJnN0ciA9IFwibS80NCcvNjAnLzAnLzAvMFwiO1xuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIGxldCBtbmUgPSBNbmVtb25pYzo6dHJ5X2Zyb20oTU5FTU9OSUMpLmV4cGVjdChcImdvb2QgbW5lbW9uaWNcIik7XG4gICAgICogbGV0IGRlcnAgPSBEZXJpdmF0aW9uUGF0aDo6dHJ5X2Zyb20oREVSX1BBVEgpLmV4cGVjdChcImdvb2QgZGVyIHBhdGhcIik7XG4gICAgICogbGV0IG1uZV9wa2cgPSBNbmVtb25pY1BhY2thZ2U6Om5ldyhtbmUsIFwiXCIsIGRlcnApO1xuICAgICAqIGxldCBrZXlfcGtnID0gS2V5UGFja2FnZTo6PFNlY3AyNTZrMVBrZz46OkVuZ2xpc2hNbmVtb25pYyhtbmVfcGtnKTtcbiAgICAgKiBsZXQganNvbl9wa2cgPSBrZXlfcGtnLmludG9fanNvbihLRVlfVFlQRSk7XG4gICAgICpcbiAgICAgKiBsZXQganNvbl9leHBlY3QgPSBqc29uISh7XG4gICAgICogXCJrZXlfdHlwZVwiOiBLRVlfVFlQRSxcbiAgICAgKiBcIm1hdGVyaWFsX3R5cGVcIjogXCJlbmdsaXNoX21uZW1vbmljXCIsXG4gICAgICogXCJtbmVtb25pY1wiOiBNTkVNT05JQyxcbiAgICAgKiBcInBhc3N3b3JkXCI6IFwiXCIsXG4gICAgICogXCJkZXJpdmF0aW9uX3BhdGhcIjogREVSX1BBVEgsXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiAtIGBKc29uS2V5TWF0ZXJpYWw6OlJhd1NlY3JldGA6XG4gICAgICpcbiAgICAgKiBgYGBcbiAgICAgKiB1c2UgY3ViaXN0X3NpZ25lcl91dGlsczo6e1xuICAgICAqIGdldF9yYW5kb21fYnl0ZV9hcnJheSwgaGV4X2VuY29kZSwgS2V5UGFja2FnZSwgUm5nQ29yZSwgU2VjcDI1NmsxUGtnLFxuICAgICAqIH07XG4gICAgICogdXNlIHNlcmRlX2pzb246Ompzb247XG4gICAgICpcbiAgICAgKiBjb25zdCBLRVlfVFlQRTogJnN0ciA9IFwiZWNkc2E6c2VjcDI1NmsxXCI7XG4gICAgICpcbiAgICAgKiAvLyByYW5kb20gMzItYnl0ZSBzZWNyZXRcbiAgICAgKiBsZXQgc2s6IFt1ODsgMzJdID0gKmdldF9yYW5kb21fYnl0ZV9hcnJheSgpO1xuICAgICAqXG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6U2VjcmV0KHNrKTtcbiAgICAgKiBsZXQganNvbl9wa2cgPSBrZXlfcGtnLmludG9fanNvbihLRVlfVFlQRSk7XG4gICAgICpcbiAgICAgKiBsZXQganNvbl9leHBlY3QgPSBqc29uISh7XG4gICAgICogXCJrZXlfdHlwZVwiOiBLRVlfVFlQRSxcbiAgICAgKiBcIm1hdGVyaWFsX3R5cGVcIjogXCJyYXdfc2VjcmV0XCIsXG4gICAgICogXCJzZWNyZXRcIjogaGV4X2VuY29kZSgmc2spLFxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogYXNzZXJ0X2VxIShcbiAgICAgKiBzZXJkZV9qc29uOjp0b192YWx1ZSgmanNvbl9wa2cpLmV4cGVjdChcImpzb24gc2VyaWFsaXphdGlvblwiKSxcbiAgICAgKiBqc29uX2V4cGVjdCxcbiAgICAgKiApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEpzb25LZXlQYWNrYWdlOiAoXG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtYXRlcmlhbF90eXBlOiBcInJhd19zZWNyZXRcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSBvZiB0aGUgcmF3IHNlY3JldCAqL1xuICAgICAgICAgIHNlY3JldDogc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXJpdmF0aW9uIHBhdGggKi9cbiAgICAgICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgICAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICAgICAgICBtYXRlcmlhbF90eXBlOiBcImVuZ2xpc2hfbW5lbW9uaWNcIjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYyAqL1xuICAgICAgICAgIG1uZW1vbmljOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcGFzc3dvcmQgKHdoaWNoIG1heSBiZSBlbXB0eSkgKi9cbiAgICAgICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgICB9XG4gICAgKSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2Yga2V5IHRoaXMgcGFja2FnZSByZXByZXNlbnRzICovXG4gICAgICBrZXlfdHlwZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXJpdmF0aW9uLXJlbGF0ZWQgbWV0YWRhdGEgZm9yIGtleXMgZGVyaXZlZCBmcm9tIGEgbG9uZy1saXZlZCBtbmVtb25pYyAqL1xuICAgIEtleURlcml2YXRpb25JbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXJpdmF0aW9uIHBhdGggdXNlZCB0byBkZXJpdmUgdGhpcyBrZXkgKi9cbiAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbW5lbW9uaWMtaWQgb2YgdGhlIGtleSdzIHBhcmVudCBtbmVtb25pYyAqL1xuICAgICAgbW5lbW9uaWNfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3cmFwcGVkIGtleS1pbXBvcnQga2V5ICovXG4gICAgS2V5SW1wb3J0S2V5OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgZGF0YSBrZXkuICovXG4gICAgICBka19lbmM6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIEV4cGlyYXRpb24gdGltZXN0YW1wIGV4cHJlc3NlZCBhcyBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLlxuICAgICAgICovXG4gICAgICBleHBpcmVzOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdG8gd2hpY2ggYW4gaW1wb3J0ZWQga2V5IHNob3VsZCBiZSBlbmNyeXB0ZWQuXG4gICAgICAgKiBUaGlzIGlzIGEgUDM4NCBwdWJsaWMga2V5IGluIGJhc2U2NC1lbmNvZGVkIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdC5cbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIHNlY3JldCBrZXkuICovXG4gICAgICBza19lbmM6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluUm9sZUluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEtleSBJRFxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFBvbGljaWVzIHRoYXQgYXJlIGNoZWNrZWQgYmVmb3JlIHRoaXMga2V5IGlzIHVzZWQgb24gYmVoYWxmIG9mIHRoaXMgcm9sZVxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeFJlY2VpdmVyXCI6IFwiMHg4YzU5NDY5MWMwZTU5MmZmYTIxZjE1M2ExNmFlNDFkYjViZWZjYWFhXCJcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiVHhEZXBvc2l0XCI6IHtcbiAgICAgICAqICAgICAgIFwia2luZFwiOiBcIkNhbm9uaWNhbFwiXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgIH07XG4gICAgS2V5SW5mbzoge1xuICAgICAgZGVyaXZhdGlvbl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlEZXJpdmF0aW9uSW5mb1wiXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICogdGhlIHR5cGUgb2Yga2V5IChzdWNoIGFzIGEgcHVibGljIGtleSBmb3IgQkxTIG9yIGFuIGV0aGVyZXVtIGFkZHJlc3MgZm9yIFNlY3ApXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2Yga2V5LCBzdWNoIGFzIGEgcHVibGljIGtleSBvciBhbiBldGhlcmV1bSBhZGRyZXNzXG4gICAgICAgKiBAZXhhbXBsZSAweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAgbWF0ZXJpYWxfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YS4gV2hlbiByZW5kZXJpbmcgKGUuZy4sIGluIHRoZSBicm93c2VyKSB5b3Ugc2hvdWxkIHRyZWF0XG4gICAgICAgKiBpdCBhcyB1bnRydXN0ZWQgdXNlciBkYXRhIChhbmQgYXZvaWQgaW5qZWN0aW5nIG1ldGFkYXRhIGludG8gSFRNTCBkaXJlY3RseSkgaWZcbiAgICAgICAqIHVudHJ1c3RlZCB1c2VycyBjYW4gY3JlYXRlL3VwZGF0ZSBrZXlzIChvciB0aGVpciBtZXRhZGF0YSkuXG4gICAgICAgKi9cbiAgICAgIG1ldGFkYXRhPzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3duZXIgb2YgdGhlIGtleVxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEtleSBwb2xpY3lcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCIsXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeTogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCwgc2VyaWFsaXplZCBwdWJsaWMga2V5LiBUaGUgZm9ybWF0IHVzZWQgZGVwZW5kcyBvbiB0aGUga2V5IHR5cGU6XG4gICAgICAgKiAtIFNlY3AyNTZrMSBrZXlzIHVzZSA2NS1ieXRlIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAqIC0gU3Rhcmsga2V5cyB1c2UgMzMtYnl0ZSBjb21wcmVzc2VkIFNFQ0cgZm9ybWF0O1xuICAgICAgICogLSBCTFMga2V5cyB1c2UgNDgtYnl0ZSBjb21wcmVzc2VkIEJMUzEyLTM4MSAoWkNhc2gpIGZvcm1hdDtcbiAgICAgICAqIC0gRWQyNTUxOSBrZXlzIHVzZSB0aGUgY2Fub25pY2FsIDMyLWJ5dGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFJGQyA4MDMyLlxuICAgICAgICogQGV4YW1wbGUgMHgwNGQyNjg4YjZiYzJjZTdmOTg3OWI5ZTc0NWYzYzRkYzE3NzkwOGM1Y2VmMGMxYjY0Y2ZmMTlhZTdmZjI3ZGVlNjIzYzY0ZmU5ZDljMzI1YzdmYmJjNzQ4YmJkNWY2MDdjZTE0ZGQ4M2UyOGViYmJiN2QzZTdmMmZmYjcwYTc5NDMxXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwdXJwb3NlIGZvciB3aGljaCB0aGUga2V5IGNhbiBiZSB1c2VkIChlLmcuLCBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXMpXG4gICAgICAgKiBAZXhhbXBsZSBFdGgyVmFsaWRhdG9yKDEpXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEtleVR5cGU6XG4gICAgICB8IFwiU2VjcEV0aEFkZHJcIlxuICAgICAgfCBcIlNlY3BCdGNcIlxuICAgICAgfCBcIlNlY3BCdGNUZXN0XCJcbiAgICAgIHwgXCJTZWNwQXZhQWRkclwiXG4gICAgICB8IFwiU2VjcEF2YVRlc3RBZGRyXCJcbiAgICAgIHwgXCJCbHNQdWJcIlxuICAgICAgfCBcIkJsc0luYWN0aXZlXCJcbiAgICAgIHwgXCJFZDI1NTE5U29sYW5hQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOVN1aUFkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlBcHRvc0FkZHJcIlxuICAgICAgfCBcIkVkMjU1MTlDYXJkYW5vQWRkclZrXCJcbiAgICAgIHwgXCJFZDI1NTE5U3RlbGxhckFkZHJcIlxuICAgICAgfCBcIk1uZW1vbmljXCJcbiAgICAgIHwgXCJTdGFya1wiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXcmFwcGVyIGFyb3VuZCBlbmNyeXB0ZWQgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIGJ5dGVzLlxuICAgICAqXG4gICAgICogV2Ugc2VyaWFsaXplIHRoaXMgaW50byBhIGJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyBhbmQgcmV0dXJuIHRvIHRoZSB1c2VyXG4gICAgICogc28gdGhhdCB0aGV5IGNhbiBwYXNzIHRoaXMgYmFjayB0byB1cyBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICovXG4gICAgTGFzdEV2YWxLZXk6IHN0cmluZztcbiAgICBMaXN0TWZhUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICB9O1xuICAgIExpc3RUb2tlbnNSZXNwb25zZToge1xuICAgICAgdG9rZW5zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRva2VuSW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlc2NyaWJlcyB3aGV0aGVyIGEgdXNlciBpbiBhbiBvcmcgaXMgYW4gT3duZXIgb3IganVzdCBhIHJlZ3VsYXIgbWVtYmVyXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBNZW1iZXJSb2xlOiBcIkFsaWVuXCIgfCBcIk1lbWJlclwiIHwgXCJPd25lclwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgYXMgYSByZXNwb25zZSBmcm9tIG11bHRpcGxlIHJvdXRlcyAoZS5nLiwgJ2dldCBtZmEnLCAnYXBwcm92ZSBtZmEnLCAnYXBwcm92ZSB0b3RwJykuICovXG4gICAgTWZhUmVxdWVzdEluZm86IHtcbiAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQXBwcm92YWwgcmVxdWVzdCBJRC4gKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgIHJlcXVlc3Q6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSHR0cFJlcXVlc3RcIl07XG4gICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3RhdHVzXCJdO1xuICAgIH07XG4gICAgTWZhVHlwZTogT25lT2Y8XG4gICAgICBbXG4gICAgICAgIFwiQ3ViZVNpZ25lclwiLFxuICAgICAgICBcIlRvdHBcIixcbiAgICAgICAgXCJGaWRvXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuc3dlciBhIEZJRE8gY2hhbGxlbmdlIHdpdGggYSBzcGVjaWZpYyBGSURPIGtleSAqL1xuICAgICAgICAgIEZpZG9LZXk6IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgRklETyBrZXkgdGhhdCBtdXN0IGJlIHVzZSB0byBhcHByb3ZlIHRoZSByZXF1ZXN0XG4gICAgICAgICAgICAgKiBAZXhhbXBsZSBGaWRvS2V5I0V0RGQuLi5aWmM4PVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgXVxuICAgID47XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5ldHdvcmsgbmFtZSAoJ21haW5uZXQnLCAncHJhdGVyJywgJ2dvZXJsaScpXG4gICAgICogQGV4YW1wbGUgZ29lcmxpXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBOZXR3b3JrOiBcIm1haW5uZXRcIiB8IFwicHJhdGVyXCIgfCBcImdvZXJsaVwiIHwgXCJob2xlc2t5XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAqL1xuICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgIHNlc3Npb25faW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRTZXNzaW9uSW5mb1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAqIHNob3VsZCBpbmNsdWRlIHRoaXMgdmFsdWUgaW4gdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXJcbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIGEgZ2xvYmFsbHkgdW5pcXVlIE9JREMtYXV0aG9yaXplZCB1c2VyIGJ5IGV4cHJlc3NpbmcgdGhlIGZ1bGwgXCJwYXRoXCIgdG8gYSB1c2VyLiBUaGF0IGlzOlxuICAgICAqXG4gICAgICogKGlzcykgICAgICAgKHN1YilcbiAgICAgKiBJc3N1ZXIgLT4gU3VicmVzb3VyY2VcbiAgICAgKlxuICAgICAqIFdlIGluY2x1ZGUgYSBub24tc3RhbmRhcmQgdGhpcmQtdGllciBgZGlzYW1iaWd1YXRvcmAgd2hpY2ggYWxsb3dzIHVzIHRvIG1hcFxuICAgICAqIGEgc2luZ2xlIE9JREMgdXNlciB0byBtdWx0aXBsZSBgVXNlcmBzIGluIEN1YmVTaWduZXJcbiAgICAgKi9cbiAgICBPSURDSWRlbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSByb290LWxldmVsIGlzc3VlciB3aG8gYWRtaW5pc3RyYXRlcyB0aGlzIHVzZXIuIEZyb21lIHRoZSBPSURDIHNwZWM6XG4gICAgICAgKiBJc3N1ZXIgSWRlbnRpZmllciBmb3IgdGhlIElzc3VlciBvZiB0aGUgcmVzcG9uc2UuIFRoZSBpc3NcbiAgICAgICAqIHZhbHVlIGlzIGEgY2FzZSBzZW5zaXRpdmUgVVJMIHVzaW5nIHRoZSBodHRwcyBzY2hlbWUgdGhhdCBjb250YWluc1xuICAgICAgICogc2NoZW1lLCBob3N0LCBhbmQgb3B0aW9uYWxseSwgcG9ydCBudW1iZXIgYW5kIHBhdGggY29tcG9uZW50cyBhbmRcbiAgICAgICAqIG5vIHF1ZXJ5IG9yIGZyYWdtZW50IGNvbXBvbmVudHMuXG4gICAgICAgKiBAZXhhbXBsZSBodHRwczovL2FjY291bnRzLmdvb2dsZS5jb21cbiAgICAgICAqL1xuICAgICAgaXNzOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBGcm9tIHRoZSBPSURDIHNwZWM6XG4gICAgICAgKlxuICAgICAgICogQSBsb2NhbGx5IHVuaXF1ZSBhbmQgbmV2ZXIgcmVhc3NpZ25lZCBpZGVudGlmaWVyIHdpdGhpbiB0aGUgSXNzdWVyIGZvclxuICAgICAgICogdGhlIEVuZC1Vc2VyLCB3aGljaCBpcyBpbnRlbmRlZCB0byBiZSBjb25zdW1lZCBieSB0aGUgQ2xpZW50LCBlLmcuLFxuICAgICAgICogMjQ0MDAzMjAgb3IgQUl0T2F3bXd0V3djVDBrNTFCYXlld052dXRySlVxc3ZsNnFzN0E0LiBJdCBNVVNUIE5PVCBleGNlZWRcbiAgICAgICAqIDI1NSBBU0NJSSBjaGFyYWN0ZXJzIGluIGxlbmd0aC4gVGhlIHN1YiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlXG4gICAgICAgKiBzdHJpbmcuXG4gICAgICAgKiBAZXhhbXBsZSAxMDc2OTE1MDM1MDAwNjE1MDcxNTExMzA4MjM2N1xuICAgICAgICovXG4gICAgICBzdWI6IHN0cmluZztcbiAgICB9O1xuICAgIE9pZGNMb2dpblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUgc2Vzc2lvbiAqL1xuICAgICAgcHVycG9zZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcInNpZ246KlwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHNjb3Blczogc3RyaW5nW107XG4gICAgICB0b2tlbnM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJhdGNoZXRDb25maWdcIl07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZW4gZmFsc2UsIGFsbCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgaW52b2x2aW5nIGtleXMgaW4gdGhpcyBvcmcgYXJlIGRpc2FibGVkLiAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgIGtleV9pbXBvcnRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICogVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIHNldHRpbmcgdXAga2V5IGV4cG9ydC5cbiAgICAgICAqIEBleGFtcGxlIG1yay1mY2UwOTUyNWU4MTU4N2QyMzUyMGYxMWUwN2UyZTlkOVxuICAgICAgICovXG4gICAgICBrd2tfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAqIEBleGFtcGxlIFRPRE9cbiAgICAgICAqL1xuICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZV9kYXlfY291bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIFRPVFAgZmFpbHVyZSBsaW1pdCwgaS5lLiwgdGhlIG51bWJlclxuICAgICAgICogb2YgdGltZXMgYSB1c2VyIGNhbiBwcm92aWRlIGFuIGluY29ycmVjdCBUT1RQIGNvZGUgYmVmb3JlIGJlaW5nIHJhdGUgbGltaXRlZC5cbiAgICAgICAqIFRoaXMgdmFsdWUgY2FuIGJlIGJldHdlZW4gMSBhbmQgNSAoaW5jbHVzaXZlKS5cbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBtaW5pbXVtXG4gICAgICAgKiBhbW91bnQgb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIGEgdXNlci1leHBvcnQgaXMgaW5pdGlhdGVkIGFuZCB3aGVuXG4gICAgICAgKiBpdCBtYXkgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZSBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZVxuICAgICAgICogb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAqIG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiB0aGUgdXNlci1leHBvcnQgZGVsYXkgaXMgY29tcGxldGVkIGFuZCB3aGVuXG4gICAgICAgKiB0aGUgdXNlciBleHBvcnQgcmVxdWVzdCBoYXMgZXhwaXJlZCBhbmQgY2FuIG5vIGxvbmdlciBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlXG4gICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF93aW5kb3c6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcm9ja2V0IHF1ZXJ5IHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIHBhZ2UgZnJvbSB3aGljaCB0byBzdGFydCBhIHBhZ2luYXRlZCBxdWVyeS5cbiAgICAgKlxuICAgICAqIE1VU1QgYmUgbmFtZWQgYDxwYWdlPmAgaW4gcm9ja2V0IHVybCBzcGVjIHNvIHRoYXQgJ3NlcmRlKHJlbmFtZSA9IFwicGFnZS4qXCIpJyBiZWxvdyBjb250aW51ZXMgdG8gd29ya1xuICAgICAqL1xuICAgIFBhZ2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICpcbiAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICovXG4gICAgICBcInBhZ2Uuc3RhcnRcIj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2U6IHtcbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwga2V5cyBpbiBhIHJvbGUgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0Um9sZVVzZXJzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHJvbGVzIGluIGFuIG9yZ2FuaXphdGlvbi4gKi9cbiAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZFVzZXJFeHBvcnRMaXN0UmVzcG9uc2U6IHtcbiAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSB3aXJlLWVuY29kYWJsZSBmb3JtIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZVxuICAgICAqIENsaWVudHMgbWF5IG5lZWQgdG8gbWFudWFsbHkgZW5jb2RlIGludG8gdGhpcyBmb3JtYXQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgc2VydmVyXG4gICAgICpcbiAgICAgKiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbCBpbnRlcmZhY2UgaW5oZXJpdHMgZnJvbSBDcmVkZW50aWFsXG4gICAgICogW0NSRURFTlRJQUwtTUFOQUdFTUVOVC0xXSwgYW5kIGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHJldHVybmVkIHRvXG4gICAgICogdGhlIGNhbGxlciB3aGVuIGEgbmV3IGNyZWRlbnRpYWwgaXMgY3JlYXRlZCwgb3IgYSBuZXcgYXNzZXJ0aW9uIGlzXG4gICAgICogcmVxdWVzdGVkLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLXBrY3JlZGVudGlhbFxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgcmVzdWx0cyBvZiBwcm9jZXNzaW5nIGNsaWVudCBleHRlbnNpb25zXG4gICAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIFJlbHlpbmcgUGFydHkgdXBvbiB0aGUgUmVseWluZyBQYXJ0eSdzIGludm9jYXRpb24gb2ZcbiAgICAgICAqIGVpdGhlciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKCkgb3IgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldCgpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbC1jbGllbnRleHRlbnNpb25zcmVzdWx0cy1zbG90XG4gICAgICAgKlxuICAgICAgICogSU1QTEVNRU5UQVRJT04gTk9URTogVGhlIHR5cGUgZm9yIHRoaXMgZmllbGQgY29tZXMgZnJvbSB0aGUgdHlwZSBvZiBnZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCkgd2hpY2ggYXMgdGhlIGZvbGxvd2luZyBkb2M6XG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcGVyYXRpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgW1tjbGllbnRFeHRlbnNpb25zUmVzdWx0c11dLCB3aGljaCBpcyBhIG1hcCBjb250YWluaW5nIGV4dGVuc2lvbiBpZGVudGlmaWVyIOKGkiBjbGllbnQgZXh0ZW5zaW9uIG91dHB1dCBlbnRyaWVzIHByb2R1Y2VkIGJ5IHRoZSBleHRlbnNpb27igJlzIGNsaWVudCBleHRlbnNpb24gcHJvY2Vzc2luZy5cbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNyZWYtZm9yLWRvbS1wdWJsaWNrZXljcmVkZW50aWFsLWdldGNsaWVudGV4dGVuc2lvbnJlc3VsdHNcbiAgICAgICAqL1xuICAgICAgY2xpZW50RXh0ZW5zaW9uUmVzdWx0cz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGludGVybmFsIHNsb3QgY29udGFpbnMgdGhlIGNyZWRlbnRpYWwgSUQsIGNob3NlbiBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIFRoZSBjcmVkZW50aWFsIElEIGlzIHVzZWQgdG8gbG9vayB1cCBjcmVkZW50aWFscyBmb3IgdXNlLFxuICAgICAgICogYW5kIGlzIHRoZXJlZm9yZSBleHBlY3RlZCB0byBiZSBnbG9iYWxseSB1bmlxdWUgd2l0aCBoaWdoIHByb2JhYmlsaXR5XG4gICAgICAgKiBhY3Jvc3MgYWxsIGNyZWRlbnRpYWxzIG9mIHRoZSBzYW1lIHR5cGUsIGFjcm9zcyBhbGwgYXV0aGVudGljYXRvcnMuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsLWlkZW50aWZpZXItc2xvdFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyByZXNwb25kIHRvIFJlbHlpbmcgUGFydHkgcmVxdWVzdHMgYnkgcmV0dXJuaW5nIGFuIG9iamVjdCBkZXJpdmVkIGZyb20gdGhlIEF1dGhlbnRpY2F0b3JSZXNwb25zZSBpbnRlcmZhY2UgKi9cbiAgICAgIHJlc3BvbnNlOlxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2VcIl1cbiAgICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgcHVibGljIGtleSBjcmVkZW50aWFsXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGRlZi1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczoge1xuICAgICAgYXR0ZXN0YXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2VcIl07XG4gICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYSBjaGFsbGVuZ2UgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgICAqIG5ld2x5IGNyZWF0ZWQgY3JlZGVudGlhbOKAmXMgYXR0ZXN0YXRpb24gb2JqZWN0LiBTZWUgdGhlIMKn4oCvMTMuNC4zXG4gICAgICAgKiBDcnlwdG9ncmFwaGljIENoYWxsZW5nZXMgc2VjdXJpdHkgY29uc2lkZXJhdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtY2hhbGxlbmdlXG4gICAgICAgKi9cbiAgICAgIGNoYWxsZW5nZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBSZWx5aW5nIFBhcnRpZXMgdGhhdCB3aXNoIHRvIGxpbWl0XG4gICAgICAgKiB0aGUgY3JlYXRpb24gb2YgbXVsdGlwbGUgY3JlZGVudGlhbHMgZm9yIHRoZSBzYW1lIGFjY291bnQgb24gYSBzaW5nbGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIFRoZSBjbGllbnQgaXMgcmVxdWVzdGVkIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgbmV3XG4gICAgICAgKiBjcmVkZW50aWFsIHdvdWxkIGJlIGNyZWF0ZWQgb24gYW4gYXV0aGVudGljYXRvciB0aGF0IGFsc28gY29udGFpbnMgb25lXG4gICAgICAgKiBvZiB0aGUgY3JlZGVudGlhbHMgZW51bWVyYXRlZCBpbiB0aGlzIHBhcmFtZXRlci5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXhjbHVkZWNyZWRlbnRpYWxzXG4gICAgICAgKi9cbiAgICAgIGV4Y2x1ZGVDcmVkZW50aWFscz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIGFkZGl0aW9uYWwgcGFyYW1ldGVycyByZXF1ZXN0aW5nIGFkZGl0aW9uYWxcbiAgICAgICAqIHByb2Nlc3NpbmcgYnkgdGhlIGNsaWVudCBhbmQgYXV0aGVudGljYXRvci4gRm9yIGV4YW1wbGUsIHRoZSBjYWxsZXIgbWF5XG4gICAgICAgKiByZXF1ZXN0IHRoYXQgb25seSBhdXRoZW50aWNhdG9ycyB3aXRoIGNlcnRhaW4gY2FwYWJpbGl0aWVzIGJlIHVzZWQgdG9cbiAgICAgICAqIGNyZWF0ZSB0aGUgY3JlZGVudGlhbCwgb3IgdGhhdCBwYXJ0aWN1bGFyIGluZm9ybWF0aW9uIGJlIHJldHVybmVkIGluIHRoZVxuICAgICAgICogYXR0ZXN0YXRpb24gb2JqZWN0LiBTb21lIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQgaW4gwqfigK85IFdlYkF1dGhuXG4gICAgICAgKiBFeHRlbnNpb25zOyBjb25zdWx0IHRoZSBJQU5BIFwiV2ViQXV0aG4gRXh0ZW5zaW9uIElkZW50aWZpZXJzXCIgcmVnaXN0cnlcbiAgICAgICAqIFtJQU5BLVdlYkF1dGhuLVJlZ2lzdHJpZXNdIGVzdGFibGlzaGVkIGJ5IFtSRkM4ODA5XSBmb3IgYW4gdXAtdG8tZGF0ZVxuICAgICAgICogbGlzdCBvZiByZWdpc3RlcmVkIFdlYkF1dGhuIEV4dGVuc2lvbnMuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLWV4dGVuc2lvbnNcbiAgICAgICAqL1xuICAgICAgZXh0ZW5zaW9ucz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVzaXJlZCBwcm9wZXJ0aWVzIG9mIHRoZVxuICAgICAgICogY3JlZGVudGlhbCB0byBiZSBjcmVhdGVkLiBUaGUgc2VxdWVuY2UgaXMgb3JkZXJlZCBmcm9tIG1vc3QgcHJlZmVycmVkIHRvXG4gICAgICAgKiBsZWFzdCBwcmVmZXJyZWQuIFRoZSBjbGllbnQgbWFrZXMgYSBiZXN0LWVmZm9ydCB0byBjcmVhdGUgdGhlIG1vc3RcbiAgICAgICAqIHByZWZlcnJlZCBjcmVkZW50aWFsIHRoYXQgaXQgY2FuLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1wdWJrZXljcmVkcGFyYW1zXG4gICAgICAgKi9cbiAgICAgIHB1YktleUNyZWRQYXJhbXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnNcIl1bXTtcbiAgICAgIHJwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHNwZWNpZmllcyBhIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdGhhdCB0aGUgY2FsbGVyIGlzXG4gICAgICAgKiB3aWxsaW5nIHRvIHdhaXQgZm9yIHRoZSBjYWxsIHRvIGNvbXBsZXRlLiBUaGlzIGlzIHRyZWF0ZWQgYXMgYSBoaW50LCBhbmRcbiAgICAgICAqIE1BWSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5XCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBjb250YWlucyB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSBzcGVjaWZpZWQgYnkgYSBjYWxsZXIgd2hlblxuICAgICAqIHJlZmVycmluZyB0byBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBhcyBhbiBpbnB1dCBwYXJhbWV0ZXIgdG8gdGhlIGNyZWF0ZSgpXG4gICAgICogb3IgZ2V0KCkgbWV0aG9kcy4gSXQgbWlycm9ycyB0aGUgZmllbGRzIG9mIHRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIG9iamVjdFxuICAgICAqIHJldHVybmVkIGJ5IHRoZSBsYXR0ZXIgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0aW9uYXJ5LWNyZWRlbnRpYWwtZGVzY3JpcHRvclxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsIHRoZSBjYWxsZXIgaXMgcmVmZXJyaW5nIHRvLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGRlc2NyaXB0b3ItaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIGNvbnRhaW5zIGEgaGludCBhcyB0byBob3cgdGhlIGNsaWVudCBtaWdodFxuICAgICAgICogY29tbXVuaWNhdGUgd2l0aCB0aGUgbWFuYWdpbmcgYXV0aGVudGljYXRvciBvZiB0aGUgcHVibGljIGtleSBjcmVkZW50aWFsXG4gICAgICAgKiB0aGUgY2FsbGVyIGlzIHJlZmVycmluZyB0by4gVGhlIHZhbHVlcyBTSE9VTEQgYmUgbWVtYmVycyBvZlxuICAgICAgICogQXV0aGVudGljYXRvclRyYW5zcG9ydCBidXQgY2xpZW50IHBsYXRmb3JtcyBNVVNUIGlnbm9yZSB1bmtub3duIHZhbHVlcy5cbiAgICAgICAqXG4gICAgICAgKiBUaGUgZ2V0VHJhbnNwb3J0cygpIG9wZXJhdGlvbiBjYW4gcHJvdmlkZSBzdWl0YWJsZSB2YWx1ZXMgZm9yIHRoaXNcbiAgICAgICAqIG1lbWJlci4gV2hlbiByZWdpc3RlcmluZyBhIG5ldyBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eSBTSE9VTERcbiAgICAgICAqIHN0b3JlIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldFRyYW5zcG9ydHMoKS4gV2hlbiBjcmVhdGluZyBhXG4gICAgICAgKiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBmb3IgdGhhdCBjcmVkZW50aWFsLCB0aGUgUmVseWluZyBQYXJ0eVxuICAgICAgICogU0hPVUxEIHJldHJpZXZlIHRoYXQgc3RvcmVkIHZhbHVlIGFuZCBzZXQgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZVxuICAgICAgICogdHJhbnNwb3J0cyBtZW1iZXIuXG4gICAgICAgKi9cbiAgICAgIHRyYW5zcG9ydHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JUcmFuc3BvcnRcIl1bXSB8IG51bGw7XG4gICAgICB0eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHN1cHBseSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgd2hlbiBjcmVhdGluZyBhIG5ld1xuICAgICAqIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1jcmVkZW50aWFsLXBhcmFtc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBzcGVjaWZpZXMgdGhlIGNyeXB0b2dyYXBoaWMgc2lnbmF0dXJlIGFsZ29yaXRobSB3aXRoIHdoaWNoXG4gICAgICAgKiB0aGUgbmV3bHkgZ2VuZXJhdGVkIGNyZWRlbnRpYWwgd2lsbCBiZSB1c2VkLCBhbmQgdGh1cyBhbHNvIHRoZSB0eXBlIG9mXG4gICAgICAgKiBhc3ltbWV0cmljIGtleSBwYWlyIHRvIGJlIGdlbmVyYXRlZCwgZS5nLiwgUlNBIG9yIEVsbGlwdGljIEN1cnZlLlxuICAgICAgICovXG4gICAgICBhbGc6IG51bWJlcjtcbiAgICAgIHR5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFR5cGVcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNgIGRpY3Rpb25hcnkgc3VwcGxpZXMgZ2V0KCkgd2l0aCB0aGVcbiAgICAgKiBkYXRhIGl0IG5lZWRzIHRvIGdlbmVyYXRlIGFuIGFzc2VydGlvbi4gSXRzIGNoYWxsZW5nZSBtZW1iZXIgTVVTVCBiZVxuICAgICAqIHByZXNlbnQsIHdoaWxlIGl0cyBvdGhlciBtZW1iZXJzIGFyZSBPUFRJT05BTC5cbiAgICAgKlxuICAgICAqIFRoaXMgc3RydWN0IGlzIGFsc28gdXNlZCBhcyBwYXJ0IG9mIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VkdXJlIGZvciBhc3NlcnRpb25zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBjb250YWlucyBhIGxpc3Qgb2YgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcbiAgICAgICAqIG9iamVjdHMgcmVwcmVzZW50aW5nIHB1YmxpYyBrZXkgY3JlZGVudGlhbHMgYWNjZXB0YWJsZSB0byB0aGUgY2FsbGVyLCBpblxuICAgICAgICogZGVzY2VuZGluZyBvcmRlciBvZiB0aGUgY2FsbGVy4oCZcyBwcmVmZXJlbmNlICh0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgICogaXMgdGhlIG1vc3QgcHJlZmVycmVkIGNyZWRlbnRpYWwsIGFuZCBzbyBvbiBkb3duIHRoZSBsaXN0KS5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1hbGxvd2NyZWRlbnRpYWxzXG4gICAgICAgKi9cbiAgICAgIGFsbG93Q3JlZGVudGlhbHM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yXCJdW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciByZXByZXNlbnRzIGEgY2hhbGxlbmdlIHRoYXQgdGhlIHNlbGVjdGVkIGF1dGhlbnRpY2F0b3JcbiAgICAgICAqIHNpZ25zLCBhbG9uZyB3aXRoIG90aGVyIGRhdGEsIHdoZW4gcHJvZHVjaW5nIGFuIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgKiBhc3NlcnRpb24uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtY2hhbGxlbmdlXG4gICAgICAgKi9cbiAgICAgIGNoYWxsZW5nZTogc3RyaW5nO1xuICAgICAgZXh0ZW5zaW9ucz86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgdGhlIHJlbHlpbmcgcGFydHkgaWRlbnRpZmllciBjbGFpbWVkIGJ5XG4gICAgICAgKiB0aGUgY2FsbGVyLiBJZiBvbWl0dGVkLCBpdHMgdmFsdWUgd2lsbCBiZSB0aGUgQ3JlZGVudGlhbHNDb250YWluZXJcbiAgICAgICAqIG9iamVjdOKAmXMgcmVsZXZhbnQgc2V0dGluZ3Mgb2JqZWN0J3Mgb3JpZ2luJ3MgZWZmZWN0aXZlIGRvbWFpbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1ycGlkXG4gICAgICAgKi9cbiAgICAgIHJwSWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXJcbiAgICAgICAqIGlzIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoZSB2YWx1ZSBpcyB0cmVhdGVkIGFzIGFcbiAgICAgICAqIGhpbnQsIGFuZCBNQVkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgY2xpZW50LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXRpbWVvdXRcbiAgICAgICAqL1xuICAgICAgdGltZW91dD86IG51bWJlciB8IG51bGw7XG4gICAgICB1c2VyVmVyaWZpY2F0aW9uPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnRcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiBSZWx5aW5nIFBhcnR5IGF0dHJpYnV0ZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBjcmVkZW50aWFsLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktcnAtY3JlZGVudGlhbC1wYXJhbXNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBSZWx5aW5nIFBhcnR5IGVudGl0eSwgd2hpY2ggc2V0cyB0aGUgUlAgSUQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscnBlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIGVudGl0eS4gSXRzIGZ1bmN0aW9uIGRlcGVuZHMgb24gd2hhdCB0aGVcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxFbnRpdHkgcmVwcmVzZW50czogV2hlbiBpbmhlcml0ZWQgYnlcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eSBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZSBpZGVudGlmaWVyIGZvciB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHksIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuIEZvciBleGFtcGxlLCBcIkFDTUVcbiAgICAgICAqIENvcnBvcmF0aW9uXCIsIFwiV29uZGVyZnVsIFdpZGdldHMsIEluYy5cIiBvciBcItCe0JDQniDQn9GA0LjQvNC10YDRgtC10YVcIi5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb24gZGVmaW5lcyB0aGUgdmFsaWQgY3JlZGVudGlhbCB0eXBlcy4gSXQgaXMgYW4gZXh0ZW5zaW9uXG4gICAgICogcG9pbnQ7IHZhbHVlcyBjYW4gYmUgYWRkZWQgdG8gaXQgaW4gdGhlIGZ1dHVyZSwgYXMgbW9yZSBjcmVkZW50aWFsIHR5cGVzIGFyZVxuICAgICAqIGRlZmluZWQuIFRoZSB2YWx1ZXMgb2YgdGhpcyBlbnVtZXJhdGlvbiBhcmUgdXNlZCBmb3IgdmVyc2lvbmluZyB0aGVcbiAgICAgKiBBdXRoZW50aWNhdGlvbiBBc3NlcnRpb24gYW5kIGF0dGVzdGF0aW9uIHN0cnVjdHVyZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mXG4gICAgICogdGhlIGF1dGhlbnRpY2F0b3IuICBDdXJyZW50bHkgb25lIGNyZWRlbnRpYWwgdHlwZSBpcyBkZWZpbmVkLCBuYW1lbHlcbiAgICAgKiBcInB1YmxpYy1rZXlcIi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLXB1YmxpY2tleWNyZWRlbnRpYWx0eXBlXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTogXCJwdWJsaWMta2V5XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWxcbiAgICAgKiB1c2VyIGFjY291bnQgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHk6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcGFsYXRhYmxlIG5hbWUgZm9yIHRoZSB1c2VyIGFjY291bnQsIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXkuXG4gICAgICAgKiBGb3IgZXhhbXBsZSwgXCJBbGV4IE3DvGxsZXJcIiBvciBcIueUsOS4reWAq1wiLiBUaGUgUmVseWluZyBQYXJ0eSBTSE9VTEQgbGV0IHRoZVxuICAgICAgICogdXNlciBjaG9vc2UgdGhpcywgYW5kIFNIT1VMRCBOT1QgcmVzdHJpY3QgdGhlIGNob2ljZSBtb3JlIHRoYW5cbiAgICAgICAqIG5lY2Vzc2FyeS5cbiAgICAgICAqXG4gICAgICAgKiBSZWx5aW5nIFBhcnRpZXMgU0hPVUxEIHBlcmZvcm0gZW5mb3JjZW1lbnQsIGFzIHByZXNjcmliZWQgaW4gU2VjdGlvbiAyLjNcbiAgICAgICAqIG9mIFtSRkM4MjY2XSBmb3IgdGhlIE5pY2tuYW1lIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBGcmVlZm9ybUNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBkaXNwbGF5TmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0b1xuICAgICAgICogdGhlIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuMyBvZlxuICAgICAgICogW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgb24gZGlzcGxheU5hbWUncyB2YWx1ZSBwcmlvciB0byBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKlxuICAgICAgICogV2hlbiBjbGllbnRzLCBjbGllbnQgcGxhdGZvcm1zLCBvciBhdXRoZW50aWNhdG9ycyBkaXNwbGF5IGFcbiAgICAgICAqIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIHRoZXkgc2hvdWxkIGFsd2F5cyB1c2UgVUkgZWxlbWVudHMgdG8gcHJvdmlkZSBhXG4gICAgICAgKiBjbGVhciBib3VuZGFyeSBhcm91bmQgdGhlIGRpc3BsYXllZCB2YWx1ZSwgYW5kIG5vdCBhbGxvdyBvdmVyZmxvdyBpbnRvXG4gICAgICAgKiBvdGhlciBlbGVtZW50cyBbY3NzLW92ZXJmbG93LTNdLlxuICAgICAgICpcbiAgICAgICAqIEF1dGhlbnRpY2F0b3JzIE1VU1QgYWNjZXB0IGFuZCBzdG9yZSBhIDY0LWJ5dGUgbWluaW11bSBsZW5ndGggZm9yIGFcbiAgICAgICAqIGRpc3BsYXlOYW1lIG1lbWJlcuKAmXMgdmFsdWUuIEF1dGhlbnRpY2F0b3JzIE1BWSB0cnVuY2F0ZSBhIGRpc3BsYXlOYW1lXG4gICAgICAgKiBtZW1iZXLigJlzIHZhbHVlIHNvIHRoYXQgaXQgZml0cyB3aXRoaW4gNjQgYnl0ZXMuIFNlZSDCp+KArzYuNC4xIFN0cmluZ1xuICAgICAgICogVHJ1bmNhdGlvbiBhYm91dCB0cnVuY2F0aW9uIGFuZCBvdGhlciBjb25zaWRlcmF0aW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5LWRpc3BsYXluYW1lXG4gICAgICAgKi9cbiAgICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdXNlciBoYW5kbGUgb2YgdGhlIHVzZXIgYWNjb3VudCBlbnRpdHkuIEEgdXNlciBoYW5kbGUgaXMgYW4gb3BhcXVlXG4gICAgICAgKiBieXRlIHNlcXVlbmNlIHdpdGggYSBtYXhpbXVtIHNpemUgb2YgNjQgYnl0ZXMsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmVcbiAgICAgICAqIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUbyBlbnN1cmUgc2VjdXJlIG9wZXJhdGlvbiwgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZGVjaXNpb25zXG4gICAgICAgKiBNVVNUIGJlIG1hZGUgb24gdGhlIGJhc2lzIG9mIHRoaXMgaWQgbWVtYmVyLCBub3QgdGhlIGRpc3BsYXlOYW1lIG5vclxuICAgICAgICogbmFtZSBtZW1iZXJzLiBTZWUgU2VjdGlvbiA2LjEgb2YgW1JGQzgyNjZdLlxuICAgICAgICpcbiAgICAgICAqIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBjb250YWluIHBlcnNvbmFsbHkgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb25cbiAgICAgICAqIGFib3V0IHRoZSB1c2VyLCBzdWNoIGFzIGEgdXNlcm5hbWUgb3IgZS1tYWlsIGFkZHJlc3M7IHNlZSDCp+KArzE0LjYuMSBVc2VyXG4gICAgICAgKiBIYW5kbGUgQ29udGVudHMgZm9yIGRldGFpbHMuIFRoZSB1c2VyIGhhbmRsZSBNVVNUIE5PVCBiZSBlbXB0eSwgdGhvdWdoXG4gICAgICAgKiBpdCBNQVkgYmUgbnVsbC5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlOiB0aGUgdXNlciBoYW5kbGUgb3VnaHQgbm90IGJlIGEgY29uc3RhbnQgdmFsdWUgYWNyb3NzIGRpZmZlcmVudFxuICAgICAgICogYWNjb3VudHMsIGV2ZW4gZm9yIG5vbi1kaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMsIGJlY2F1c2Ugc29tZVxuICAgICAgICogYXV0aGVudGljYXRvcnMgYWx3YXlzIGNyZWF0ZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMuIFRodXMgYSBjb25zdGFudFxuICAgICAgICogdXNlciBoYW5kbGUgd291bGQgcHJldmVudCBhIHVzZXIgZnJvbSB1c2luZyBzdWNoIGFuIGF1dGhlbnRpY2F0b3Igd2l0aFxuICAgICAgICogbW9yZSB0aGFuIG9uZSBhY2NvdW50IGF0IHRoZSBSZWx5aW5nIFBhcnR5LlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktaWRcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFdoZW4gaW5oZXJpdGVkIGJ5IFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5LCBpdCBpcyBhIGh1bWFuLXBhbGF0YWJsZVxuICAgICAgICogaWRlbnRpZmllciBmb3IgYSB1c2VyIGFjY291bnQuIEl0IGlzIGludGVuZGVkIG9ubHkgZm9yIGRpc3BsYXksIGkuZS4sXG4gICAgICAgKiBhaWRpbmcgdGhlIHVzZXIgaW4gZGV0ZXJtaW5pbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyIGFjY291bnRzIHdpdGhcbiAgICAgICAqIHNpbWlsYXIgZGlzcGxheU5hbWVzLiBGb3IgZXhhbXBsZSwgXCJhbGV4bVwiLCBcImFsZXgubXVlbGxlckBleGFtcGxlLmNvbVwiXG4gICAgICAgKiBvciBcIisxNDI1NTU1MTIzNFwiLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBSZWx5aW5nIFBhcnR5IE1BWSBsZXQgdGhlIHVzZXIgY2hvb3NlIHRoaXMgdmFsdWUuIFRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XVxuICAgICAgICogZm9yIHRoZSBVc2VybmFtZUNhc2VQcmVzZXJ2ZWQgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIElkZW50aWZpZXJDbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCB3aGVuIHNldHRpbmcgbmFtZSdzIHZhbHVlLCBvciBkaXNwbGF5aW5nIHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAqIHVzZXIuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBzdHJpbmcgTUFZIGNvbnRhaW4gbGFuZ3VhZ2UgYW5kIGRpcmVjdGlvbiBtZXRhZGF0YS4gUmVseWluZyBQYXJ0aWVzXG4gICAgICAgKiBTSE9VTEQgY29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgaW5mb3JtYXRpb24uIFNlZSDCp+KArzYuNC4yIExhbmd1YWdlIGFuZFxuICAgICAgICogRGlyZWN0aW9uIEVuY29kaW5nIGFib3V0IGhvdyB0aGlzIG1ldGFkYXRhIGlzIGVuY29kZWQuXG4gICAgICAgKlxuICAgICAgICogQ2xpZW50cyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNC4zIG9mIFtSRkM4MjY1XSBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzIFtSRkM4MjY0XSwgb24gbmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZSB1c2VyIG9yIGluY2x1ZGluZyB0aGUgdmFsdWUgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGF1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbCBvcGVyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICAgIFJhdGNoZXRDb25maWc6IHtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X2F1dGhfbGlmZXRpbWUgKi9cbiAgICAgIGF1dGhfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9ncmFjZV9saWZldGltZSAqL1xuICAgICAgZ3JhY2VfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9yZWZyZXNoX2xpZmV0aW1lICovXG4gICAgICByZWZyZXNoX2xpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZWZhdWx0IGRlZmF1bHRfc2Vzc2lvbl9saWZldGltZSAqL1xuICAgICAgc2Vzc2lvbl9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVjZWlwdCB0aGF0IGFuIE1GQSByZXF1ZXN0IHdhcyBhcHByb3ZlZC4gKi9cbiAgICBSZWNlaXB0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtYXRpb24gY29kZSB0aGUgdXNlciBuZWVkcyB0byBwcmVzZW50IHdoZW4gcmVzdW1pbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gICAgICAgKiBAZXhhbXBsZSBiYTFkNzVkZC1kOTk5LTRjMWItOTQ0ZC0yNWMyNTQ0MGM4YWZcbiAgICAgICAqL1xuICAgICAgY29uZmlybWF0aW9uOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgbG9nZ2VkLWluIHVzZXIgd2hvc2UgYWN0aW9uIGNyZWF0ZWQgdGhpcyBhcHByb3ZhbC4gKi9cbiAgICAgIGZpbmFsX2FwcHJvdmVyOiBzdHJpbmc7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleHRlbmRlZCBmb3JtIG9mIGBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgUmVxdWVzdE9wdGlvbnNXaXRoSGFzaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgdGhlIFJlbHlpbmcgUGFydHkncyByZXF1aXJlbWVudHMgZm9yXG4gICAgICogY2xpZW50LXNpZGUgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzIChmb3JtZXJseSBrbm93biBhcyByZXNpZGVudCBjcmVkZW50aWFsc1xuICAgICAqIG9yIHJlc2lkZW50IGtleXMpOlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtcmVzaWRlbnRrZXlyZXF1aXJlbWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgUmVzaWRlbnRLZXlSZXF1aXJlbWVudDogXCJkaXNjb3VyYWdlZFwiIHwgXCJwcmVmZXJyZWRcIiB8IFwicmVxdWlyZWRcIjtcbiAgICBSZXZva2VUb2tlblJlc3BvbnNlOiB7XG4gICAgICB0b2tlbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdIHwgbnVsbDtcbiAgICB9O1xuICAgIFJldm9rZVRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyB0aGF0IHdlcmUgcmV2b2tlZC4gKi9cbiAgICAgIHJldm9rZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgfTtcbiAgICBSb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgKiBAZXhhbXBsZSB0cnVlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQgVGhlIEN1YmVTaWduZXIgSURzIG9mIGF0IG1vc3QgMTAwIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZSAqL1xuICAgICAga2V5cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgKiBAZXhhbXBsZSBteV9yb2xlXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICogICAgIH1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcm9sZVxuICAgICAgICogQGV4YW1wbGUgUm9sZSNiZmUzZWNjYi03MzFlLTQzMGQtYjFlNS1hYzEzNjNlNmIwNmJcbiAgICAgICAqL1xuICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkLiBUaGUgbGlzdCBvZiBhdCBtb3N0IDEwMCB1c2VycyB3aXRoIGFjY2VzcyB0byB0aGUgcm9sZS4gKi9cbiAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAqIEBkZXNjcmlwdGlvbiBEdXJhdGlvbiBtZWFzdXJlZCBpbiBzZWNvbmRzXG4gICAgICogQSB3cmFwcGVyIHR5cGUgZm9yIHNlcmlhbGl6YXRpb24gdGhhdCBlbmNvZGVzIGEgYER1cmF0aW9uYCBhcyBhIGB1NjRgIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMuXG4gICAgICovXG4gICAgU2Vjb25kczogbnVtYmVyO1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2Vzc2lvblxuICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHNlc3Npb24sIGJ1dCBjYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC5cbiAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgZnJvbSBhbnkgb3BlcmF0aW9uIG9wZXJhdGluZyBvbiBtdWx0aXBsZSBzZXNzaW9ucyAqL1xuICAgIFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcIm1lc3NhZ2VfYmFzZTY0XCI6IFwiQVFBQkE4T0tWekxFanN0c3RONHhYcjM5a0xLSFQ4ZDU4ZVFZMVFFczZNZVh3RUZCcnhUQWxVTFgxdHJvTGJXeHVBWFFxZ2JRb2ZHaTZ6OGZKaTdLQUFJZjdZTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpLMHRuMzlrMjhzK1g4Nlc0N0V2YlJSS25ZQlZROFEvbDJtMUViZlQ3K3ZBUUlDQUFFTUFnQUFBR1FBQUFBQUFBQUFcIlxuICAgICAqIH1cbiAgICAgKi9cbiAgICBTb2xhbmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTb2xhbmEgYmFzZTY0LWVuY29kZWQgc2VyaWFsaXplZCBNZXNzYWdlICovXG4gICAgICBtZXNzYWdlX2Jhc2U2NDogc3RyaW5nO1xuICAgIH07XG4gICAgU29sYW5hU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIFN0YWtlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoYWluIG9uIHdoaWNoIHdlIHdpbGwgZGVwb3NpdFxuICAgICAgICogQGV4YW1wbGUgNVxuICAgICAgICovXG4gICAgICBjaGFpbl9pZDogbnVtYmVyO1xuICAgICAgZGVwb3NpdF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgc3Rha2luZyBhbW91bnQgaW4gR1dFSS5cbiAgICAgICAqIElmIG5vdCBzcGVjaWZpZWQsIGRlZmF1bHRzIHRvIDMyXzAwMF8wMDBfMDAwICgzMiBFVEgpLlxuICAgICAgICogTXVzdCBiZSBiZXR3ZWVuIDEgRVRIIGFuZCAzMiBFVEguXG4gICAgICAgKiBNdXN0IG5vdCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuICdkZXBvc2l0X3R5cGUnIGlzIFwiV3JhcHBlclwiLlxuICAgICAgICovXG4gICAgICBzdGFraW5nX2Ftb3VudF9nd2VpPzogbnVtYmVyO1xuICAgICAgdW5zYWZlX2NvbmY/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuc2FmZUNvbmZcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBCTFMgcHVibGljIGtleSB0byB1c2UsIG9yIGBOb25lYCB0byBnZW5lcmF0ZSBhIGZyZXNoIG9uZS5cbiAgICAgICAqIEBleGFtcGxlIDB4YTk5YTc2ZWQ3Nzk2ZjdiZTIyZDViN2U4NWRlZWI3YzU2NzdlODhlNTExZTBiMzM3NjE4ZjhjNGViNjEzNDliNGJmMmQxNTNmNjQ5ZjdiNTMzNTlmZThiOTRhMzhlNDRjXG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV0aGVyZXVtIGFkZHJlc3MgdG8gd2hpY2ggd2l0aGRyYXduIGZ1bmRzIGdvXG4gICAgICAgKiBAZXhhbXBsZSAweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAgd2l0aGRyYXdhbF9hZGRyOiBzdHJpbmc7XG4gICAgfTtcbiAgICBTdGFrZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsaWRhdG9yIGtleSBpZCAoXCJLZXkjLi4uXCIpXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgKi9cbiAgICAgIGNyZWF0ZWRfdmFsaWRhdG9yX2tleV9pZDogc3RyaW5nO1xuICAgICAgZGVwb3NpdF90eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHhuXCJdO1xuICAgIH07XG4gICAgU3RhdHVzOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXJzIHdobyBhcmUgYWxsb3dlZCB0byBhcHByb3ZlLiBNdXN0IGJlIG5vbi1lbXB0eS4gKi9cbiAgICAgIGFsbG93ZWRfYXBwcm92ZXJzOiBzdHJpbmdbXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsb3dlZCBhcHByb3ZhbCB0eXBlcy4gV2hlbiBvbWl0dGVkLCBkZWZhdWx0cyB0byBhbnkuICovXG4gICAgICBhbGxvd2VkX21mYV90eXBlcz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhVHlwZVwiXVtdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVXNlcnMgd2hvIGhhdmUgYWxyZWFkeSBhcHByb3ZlZCAqL1xuICAgICAgYXBwcm92ZWRfYnk6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXToge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXBwcm92YWxJbmZvXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55IHVzZXJzIG11c3QgYXBwcm92ZVxuICAgICAgICovXG4gICAgICBjb3VudDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgYXV0aCBmYWN0b3JzIHRvIHJlcXVpcmUgcGVyIHVzZXJcbiAgICAgICAqL1xuICAgICAgbnVtX2F1dGhfZmFjdG9yczogbnVtYmVyO1xuICAgIH07XG4gICAgVG9rZW5JbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVzZSBpdCB0byByZXZva2UgYSBzZXNzaW9uLiBDYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC4gKi9cbiAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHB1cnBvc2UgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICB9O1xuICAgIFRvdHBBcHByb3ZlUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUT1RQIHZlcmlmaWNhdGlvbiBjb2RlICovXG4gICAgICBjb2RlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8gYW5zd2VyIGEgVE9UUCBjaGFsbGVuZ2UgKi9cbiAgICBUb3RwQ2hhbGxlbmdlQW5zd2VyOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50IFRPVFAgY29kZSAqL1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICB0b3RwX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBUb3RwSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBUT1RQIGNoYWxsZW5nZS5cbiAgICAgICAqIEBleGFtcGxlIFRvdHBDaGFsbGVuZ2UjNzg5MmViYmEtNTYzZS00ODViLWJiN2QtZTI2MjY3MzYzMjg2XG4gICAgICAgKi9cbiAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFN0YW5kYXJkIFRPVFAgdXJsIHdoaWNoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIGluaXRpYWxpemUgVE9UUC5cbiAgICAgICAqIEBleGFtcGxlIG90cGF1dGg6Ly90b3RwL0N1YmlzdDphbGljZS0lNDBleGFtcGxlLmNvbT9zZWNyZXQ9REFIRjdLQ09UUVdTT01LNFhGRU1OSFhPNEo0MzNPRDcmaXNzdWVyPUN1YmlzdFxuICAgICAgICovXG4gICAgICB0b3RwX3VybDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXF1ZXN0IHRvIHJlc2V0IFRPVFAuICovXG4gICAgVG90cFJlc2V0UmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmFtZSBvZiB0aGUgaXNzdWVyOyBkZWZhdWx0cyB0byBcIkN1YmlzdFwiLiAqL1xuICAgICAgaXNzdWVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9ucyB0aGF0IHNob3VsZCBiZSBzZXQgb25seSBmb3IgbG9jYWwgZGV2bmV0IHRlc3RpbmcuICovXG4gICAgVW5zYWZlQ29uZjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGFkZHJlc3Mgb2YgdGhlIGRlcG9zaXQgY29udHJhY3QuIElmIG9taXR0ZWQsIGluZmVycmVkIGZyb20gYGNoYWluX2lkYFxuICAgICAgICogQGV4YW1wbGUgMHhmZjUwZWQzZDBlYzAzYWMwMWQ0Yzc5YWFkNzQ5MjhiZmY0OGE3YjJiXG4gICAgICAgKi9cbiAgICAgIGRlcG9zaXRfY29udHJhY3RfYWRkcj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgNC1ieXRlIGZvcmsgdmVyc2lvblxuICAgICAgICogQGV4YW1wbGUgMHgwMDAwMTAyMFxuICAgICAgICovXG4gICAgICBnZW5lc2lzX2ZvcmtfdmVyc2lvbj86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVW5zdGFrZSBtZXNzYWdlIHJlcXVlc3QuXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJlcG9jaFwiOiBcIjI1NlwiLFxuICAgICAqICAgXCJmb3JrXCI6IHtcbiAgICAgKiAgICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCIsXG4gICAgICogICAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICAgIFwicHJldmlvdXNfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwiZ2VuZXNpc19kYXRhXCI6IHtcbiAgICAgKiAgICAgXCJnZW5lc2lzX2ZvcmtfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgICAgXCJnZW5lc2lzX3RpbWVcIjogXCIxNjc5NTQxNjQyXCIsXG4gICAgICogICAgIFwiZ2VuZXNpc192YWxpZGF0b3JzX3Jvb3RcIjogXCIweDI3MGQ0M2U3NGNlMzQwZGU0YmNhMmIxOTM2YmVjYTBmNGY1NDA4ZDllNzhhZWM0ODUwOTIwYmFmNjU5ZDViNjlcIlxuICAgICAqICAgfSxcbiAgICAgKiAgIFwibmV0d29ya1wiOiBcImdvZXJsaVwiLFxuICAgICAqICAgXCJ2YWxpZGF0b3JfaW5kZXhcIjogXCIwXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgVW5zdGFrZVJlcXVlc3Q6IHtcbiAgICAgIGVwb2NoPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXSB8IG51bGw7XG4gICAgICBmb3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZvcmtcIl07XG4gICAgICBnZW5lc2lzX2RhdGE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiR2VuZXNpc0RhdGFcIl07XG4gICAgICBuZXR3b3JrOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5ldHdvcmtcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3IgaW5kZXggKGB1aW50NjRgKSB0byBleGl0LiBZb3UgY2FuIGdldCB0aGUgdmFsaWRhdG9yIGluZGV4IGZyb20gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgICAqIGAvZXRoL3YxL2JlYWNvbi9zdGF0ZXMvaGVhZC92YWxpZGF0b3JzL3twdWJrZXl9YCBlbmQtcG9pbnQuIFRoaXMgZW5kIHBvaW50IHJldHVybnMgYW5cbiAgICAgICAqIG9iamVjdCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZGF0b3IgKHdob3NlIHB1YmxpYyBrZXkgaXMgYHtwdWJrZXl9YCksXG4gICAgICAgKiBpbmNsdWRpbmcgdGhlIHZhbGlkYXRvciBpbmRleC4gVGhlIHNjaGVtYSBvZiB0aGlzIGVuZC1wb2ludCBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vZ2V0U3RhdGVWYWxpZGF0b3IpLlxuICAgICAgICogQGV4YW1wbGUgMzEzMzdcbiAgICAgICAqL1xuICAgICAgdmFsaWRhdG9yX2luZGV4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVW5zdGFrZSByZXNwb25zZXMgYXJlIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlcy5cbiAgICAgKiBUaGUgc2NoZW1hIGZvciB0aGlzIG1lc3NhZ2UgaXMgZGVmaW5lZFxuICAgICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjc2lnbmVkdm9sdW50YXJ5ZXhpdCkuXG4gICAgICogVGhpcyBtZXNzYWdlIGNhbiBiZSBkaXJlY3RseSBQT1NUZWQgdG8gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgKiBgL2V0aC92MS9iZWFjb24vcG9vbC92b2x1bnRhcnlfZXhpdHNgIGVuZC1wb2ludCAoc2VlIGV4cGVjdGVkIHNjaGVtYVxuICAgICAqIFtoZXJlXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9zdWJtaXRQb29sVm9sdW50YXJ5RXhpdCkpLlxuICAgICAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgbWVzc2FnZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJWb2x1bnRhcnlFeGl0XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAqIEBleGFtcGxlIDB4OTEwYzdjZDUzN2VkOTFjYzhjNGE4MmYzY2JkODMyZTliZThjMjRhMjJlOWM4NmRmNDc5ZjdjZTQyMDI1ZWE2YTA5NjE5YjQxOGI2NjZhMDYwZTI2MGQyYWFlMzFiOGU1MGU5ZDA1Y2EzNDQyYzdlZWQzYjUwN2U1MjA3ZTE0Njc0Mjc1ZjY4YzJiYTg0YzRiZjZiOGRkMzY0YTMwNGFjYWM4Y2ZhYjM2ODFlMjUxNGI0NDAwZjkyNDJiYzYxMTY0XG4gICAgICAgKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgVXBkYXRlS2V5UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGVzIHRoZSBrZXlzJ3MgYGVuYWJsZWRgIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBPbmNlIGRpc2FibGVkLCBhIGtleSBjYW5ub3QgYmUgdXNlZCBmb3Igc2lnbmluZy5cbiAgICAgICAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBrZXkncyBtZXRhZGF0YS4gVmFsaWRhdGlvbiByZWdleDogXltBLVphLXowLTlfPSsvIFxcLVxcLlxcLF17MCwxMDI0fSRcbiAgICAgICAqIEBleGFtcGxlIENvbnRyYWN0IGFkbWluIGtleVxuICAgICAgICovXG4gICAgICBtZXRhZGF0YT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZXMga2V5J3Mgb3duZXIgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIFRoZSBuZXcgb3duZXIgbXVzdCBiZSBhbiBleGlzdGluZyB1c2VyIHdobyBpcyBhIG1lbWJlciBvZiB0aGUgc2FtZSBvcmcuXG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcj86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIGtleSdzIHBvbGljaWVzIChvbGQgcG9saWNpZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiEpLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVxdWVzdDoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIGBlbmFibGVkYCBmaWVsZCB0byB0aGlzIHZhbHVlLiAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBhbGlhcy4gIE9yZyBhbGlhc2VzIGFyZSBnbG9iYWxseSB1bmlxdWUuXG4gICAgICAgKiBAZXhhbXBsZSBteV9vcmdcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHBvbGljaWVzIChvbGQgcG9saWNpZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiEpLlxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJPcmlnaW5BbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTAuMS4yLjMvOFwiLFxuICAgICAgICogICAgICAgXCIxNjkuMjU0LjE3LjEvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIFRPVFAgZmFpbHVyZSBsaW1pdC4gQWZ0ZXIgdGhpcyBtYW55IGZhaWx1cmVzLFxuICAgICAgICogdGhlIHVzZXIgaXMgcmF0ZSBsaW1pdGVkIHVudGlsIHRoZSBuZXh0IDMwLXNlY29uZCBUT1RQIHdpbmRvdy5cbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgdXNlci1leHBvcnQgZGVsYXksIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIGJldHdlZW4gYSB1c2VyJ3MgaW5pdGlhdGluZyBhbiBleHBvcnQgYW5kIHRoZSB0aW1lIHdoZW5cbiAgICAgICAqIGV4cG9ydCBpcyBhbGxvd2VkLiBGb3Igc2VjdXJpdHksIHRoaXMgZGVsYXkgY2Fubm90IGJlIHNldCB0byBsZXNzIHRoYW5cbiAgICAgICAqIDE3MjgwMCwgaS5lLiwgMiBkYXlzLlxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHVzZXItZXhwb3J0IHdpbmRvdywgaS5lLiwgdGhlIGFtb3VudCBvZiB0aW1lXG4gICAgICAgKiAoaW4gc2Vjb25kcykgdGhhdCBleHBvcnQgaXMgYWxsb3dlZCBhZnRlciB0aGUgdXNlci1leHBvcnQgZGVsYXkuIEFmdGVyXG4gICAgICAgKiB0aGlzIGFtb3VudCBvZiB0aW1lLCB0aGUgZXhwb3J0IGlzIGNhbmNlbGVkIGFuZCBtdXN0IGJlIHJlLWluaXRpYXRlZC5cbiAgICAgICAqIEZvciBzZWN1cml0eSwgdGhpcyB3aW5kb3cgY2Fubm90IGJlIHNldCB0byBncmVhdGVyIHRoYW4gMjU5MjAwLCBpLmUuLFxuICAgICAgICogMyBkYXlzLlxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlT3JnUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5ICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2Ygb3JnLXdpZGUgcG9saWNpZXNcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIFRPVFAgZmFpbHVyZSBsaW1pdFxuICAgICAgICovXG4gICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCBkZWxheVxuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF9kZWxheT86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IHdpbmRvd1xuICAgICAgICovXG4gICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgIH07XG4gICAgVXBkYXRlUm9sZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUgcm9sZSdzIGBlbmFibGVkYCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICogT25jZSBkaXNhYmxlZCwgYSByb2xlIGNhbm5vdCBiZSB1c2VkOyBhbmQgaXQncyB0b2tlbnMgY2Fubm90IGJlIHVzZWQgZm9yIHNpZ25pbmcuXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgcm9sZSdzIGtleSBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIE9ubHkgXCJkZW55XCIgc3R5bGUgcG9saWNpZXMgbWF5IGJlIHNldC5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiU291cmNlSXBBbGxvd2xpc3RcIjogW1xuICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBjb21wbGV0ZSBhIHVzZXIgZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXkgdG8gYmUgZXhwb3J0ZWQuIFRoZSBrZXktaWQgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBvbmUgaW5cbiAgICAgICAqIHRoZSBzcGVjaWZpZWQgZXhwb3J0IHJlcXVlc3QsIGFuZCB0aGUgY2FsbGVyIG11c3Qgb3duIHRoaXMga2V5LlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBOSVNUIFAtMjU2IHB1YmxpYyBrZXkgKGJhc2U2NC1lbmNvZGVkIFNFQzEgd2l0aCBvciB3aXRob3V0IGNvbXByZXNzaW9uKVxuICAgICAgICogdG8gd2hpY2ggdGhlIGV4cG9ydCB3aWxsIGJlIGVuY3J5cHRlZC4gSWYgYSBwdWJsaWMga2V5IHdhcyBwcm92aWRlZCB3aGVuXG4gICAgICAgKiBgdXNlcl9leHBvcnRfaW5pdGAgd2FzIGNhbGxlZCwgdGhpcyBrZXkgbXVzdCBtYXRjaCB0aGF0IG9uZS5cbiAgICAgICAqIEBleGFtcGxlIEFrcExULzNkWEFwSnpYU2R1YVBRN2FweVQwQURCd3FrdDFlcy9hVDBpV1dmXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gZW5jcnlwdGVkIHVzZXItZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgKiBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QgdmlhIEhQS0UgKFJGQzkxODApXG4gICAgICAgKiB3aXRoIERIS0VNKFAtMjU2LCBIS0RGLVNIQTI1NikgYW5kIGJhc2U2NCBlbmNvZGVkLlxuICAgICAgICovXG4gICAgICBlbmNyeXB0ZWRfa2V5X21hdGVyaWFsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICogdW5jb21wcmVzc2VkIFNFQzEgc2VyaWFsaXphdGlvbi5cbiAgICAgICAqL1xuICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgdG8gd2hpY2ggdGhpcyBrZXkgYmVsb25ncy4gKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSByZXF1ZXN0IHRvIGluaXRpYXRlIGEgdXNlciBleHBvcnQgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRvIGJlIGV4cG9ydGVkLiBUaGlzIGtleSBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gb3B0aW9uYWwgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dFxuICAgICAgICogY29tcHJlc3Npb24pIHRvIHdoaWNoIHRoZSBleHBvcnQgd2lsbCBiZSBlbmNyeXB0ZWQuIElmIHByb3ZpZGVkLCB0aGlzXG4gICAgICAgKiBwdWJsaWMga2V5IE1VU1QgYmUgdGhlIG9uZSB1c2VkIHRvIGVuY3J5cHQgdGhlIGV4cG9ydCBvbmNlIHRoZSBkZWxheSBoYXNcbiAgICAgICAqIGV4cGlyZWQuIE90aGVyd2lzZSwgdGhlIHVzZXIgY2FuIHByb3ZpZGUgYW55IHB1YmxpYyBrZXkgd2hlbiBjb21wbGV0aW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IHJlcXVlc3QgcG9zdCBkZWxheS5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG9wdGlvbiBtYXkgcHJvdmlkZSBleHRyYSBzZWN1cml0eSB3aGVuIHRoZSB1c2VyIGhhcyBhIHNlY3VyZSBoYXJkd2FyZVxuICAgICAgICogZGV2aWNlIChlLmcuLCBhIHBob25lJ3Mgc2VjdXJlIGVsZW1lbnQgb3IgYSBZdWJpS2V5KSBpbiB3aGljaCBhIE5JU1QgUC0yNTZcbiAgICAgICAqIHNlY3JldCBrZXkgY2FuIGJlIGdlbmVyYXRlZC4gUHJvdmlkaW5nIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkgaGVyZVxuICAgICAgICogZW5zdXJlcyB0aGF0IG9ubHkgdGhhdCBzcGVjaWZpYyBkZXZpY2Ugd2lsbCBiZSBjYXBhYmxlIG9mIGRlY3J5cHRpbmdcbiAgICAgICAqIHRoZSBleHBvcnQgY2lwaGVydGV4dC5cbiAgICAgICAqXG4gICAgICAgKiBJZiBubyBzZWN1cmUgaGFyZHdhcmUgZGV2aWNlIGlzIGF2YWlsYWJsZSB0byBzdG9yZSB0aGUgc2VjcmV0IGtleSwgdGhpc1xuICAgICAgICogb3B0aW9uIFNIT1VMRCBOT1QgYmUgdXNlZCBiZWNhdXNlIG9mIHRoZSByaXNrIG9mIHNlY3JldCBrZXkgdGhlZnQgZHVyaW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGRlbGF5IHBlcmlvZC5cbiAgICAgICAqIEBleGFtcGxlIEFrcExULzNkWEFwSnpYU2R1YVBRN2FweVQwQURCd3FrdDFlcy9hVDBpV1dmXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSBzdWNjZXNzZnVsIHVzZXItZXhwb3J0IGluaXQgcmVxdWVzdCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydFJlcXVlc3RcIl0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFBlbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdCBhcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLiAqL1xuICAgIFVzZXJFeHBvcnRSZXF1ZXN0OiB7XG4gICAgICBleHBfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmctaWQgaW4gd2hpY2ggdGhlIGtleSBpcyBob3VzZWQuXG4gICAgICAgKiBAZXhhbXBsZSBPcmcjZjM2MWVkNmItNWQxOS00Y2NmLWE0ZDUtZWJhOTM1ZGMwYjkwXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFNIQS0yNTYgaGFzaCBvZiB0aGUgcHVibGljIGtleSBwcm92aWRlZCBhdCBleHBvcnQgaW5pdGlhdGlvbixcbiAgICAgICAqIGlmIGFueS4gSWYgYSBrZXkgd2FzIHByb3ZpZGVkLCBvbmx5IHRoYXQga2V5IGNhbiBiZSB1c2VkIHRvIGNvbXBsZXRlXG4gICAgICAgKiB0aGUgZXhwb3J0IHByb2NlZHVyZS4gT3RoZXJ3aXNlLCBhbnkga2V5IGNhbiBiZSB1c2VkLlxuICAgICAgICpcbiAgICAgICAqIElNUE9SVEFOVDogaWYgYSBwdWJsaWMga2V5IGlzIHN1cHBsaWVkIGF0IGV4cG9ydCBpbml0aWF0aW9uLCBpdCBpc1xuICAgICAgICogU1RST05HTFkgUkVDT01NRU5ERUQgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBzZWNyZXQga2V5IGJlIHN0b3JlZCBpblxuICAgICAgICogYSBzZWN1cmUgaGFyZHdhcmUgZGV2aWNlLCBlLmcuLCBhIFl1YmlLZXkgb3IgYSBwaG9uZSdzIHNlY3VyZSBlbGVtZW50LlxuICAgICAgICogSWYgbm8gc3VjaCBoYXJkd2FyZSBpcyBhdmFpbGFibGUsIHN1cHBseWluZyBhIHB1YmxpYyBrZXkgYXQgZXhwb3J0XG4gICAgICAgKiBpbml0aWF0aW9uIGlzIFNUUk9OR0xZIERJU0NPVVJBR0VEIGJlY2F1c2Ugb2YgdGhlIHJpc2sgb2YgdGhlZnQgZHVyaW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGRlbGF5IHBlcmlvZC5cbiAgICAgICAqXG4gICAgICAgKiAoU2VlIGFsc28gdGhlIGNvbW1lbnQgaW4gdGhlIGBwdWJsaWNfa2V5YCBmaWVsZCBvZiBgVXNlckluaXRSZXF1ZXN0YC4pXG4gICAgICAgKiBAZXhhbXBsZSBkZjQ1N2E5OGQ1NTM4NTQwZjU0ZDEzMTZiNTk3YTBmMzliOGQ5NmY0ODhmMTBhMmUzMWE5NTVjMTQ2ZmRmMWQzXG4gICAgICAgKi9cbiAgICAgIHB1YmxpY19rZXlfaGFzaD86IHN0cmluZyB8IG51bGw7XG4gICAgICB2YWxpZF9lcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgVXNlcklkSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFVzZXJJblJvbGVJbmZvOiB7XG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VySW5mbzoge1xuICAgICAgLyoqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIG9yZ19pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFdlYkF1dGhuIFJlbHlpbmcgUGFydHkgbWF5IHJlcXVpcmUgdXNlciB2ZXJpZmljYXRpb24gZm9yIHNvbWUgb2YgaXRzXG4gICAgICogb3BlcmF0aW9ucyBidXQgbm90IGZvciBvdGhlcnMsIGFuZCBtYXkgdXNlIHRoaXMgdHlwZSB0byBleHByZXNzIGl0cyBuZWVkcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtLXVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OiBcInJlcXVpcmVkXCIgfCBcImRpc2NvdXJhZ2VkXCIgfCBcInByZWZlcnJlZFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBbiBleGl0IHZvbHVudGFyaWx5IHN1Ym1pdHRlZCBhIHZhbGlkYXRvciB3aG8gd2lzaGVzIHRvIHdpdGhkcmF3LlxuICAgICAqIFRoZSBzY2hlbWEgZm9yIHRoaXMgbWVzc2FnZSBpcyBkZWZpbmVkXG4gICAgICogW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNzaWduZWR2b2x1bnRhcnlleGl0KS5cbiAgICAgKi9cbiAgICBWb2x1bnRhcnlFeGl0OiB7XG4gICAgICBlcG9jaDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEluZGV4IG9mIHRoZSBleGl0aW5nIHZhbGlkYXRvci5cbiAgICAgICAqIEBleGFtcGxlIDI1NlxuICAgICAgICovXG4gICAgICB2YWxpZGF0b3JfaW5kZXg6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICByZXNwb25zZXM6IHtcbiAgICBBZGRUaGlyZFBhcnR5VXNlclJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEF2YVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBCbG9iU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJ0Y1NpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlIGluIGNvbXBhY3QgZm9ybWF0LlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4NDU0YWVmMjdjMjFkZjdkZDhmNTM3ZGM4NjlmNGNkNjUyODZjZTIzOWE1MmQzNjQ3MGY0ZDg1YmU4NWE4OTFiMDI3ODllNWZmZDg1NjBiMzJhOTgxMTBlNWQwMDk2ODAyZTRjMTQxNDVjZjZjNDRmMTBhNzY4Yzg3NzU1ZWFhNDgwMFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAgICAgKiBSU0Egc2lnbmluZyBrZXkgdXNlZCB0byBzaWduIHRoZSBjb250ZW50cyBvZiB0aGlzIG1lc3NhZ2UuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBSU0EtUFNTLVNIQTI1NiBzaWduYXR1cmUgb24gdGhlIHB1YmxpYyBrZXkgYW5kIGVuY3J5cHRlZFxuICAgICAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jbGF2ZV9zaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGluZm8gYWJvdXQgdGhlIGNyZWF0ZWQga2V5cyAqL1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ld2x5IGNyZWF0ZWQgcm9sZSBpbmZvcm1hdGlvbiAqL1xuICAgIENyZWF0ZVJvbGVSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFaXAxOTFPcjcxMlNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBzaWduYXR1cmUgY29tcHJpc2luZyA2NSBieXRlcyBpbiB0aGUgZm9ybWF0IHJlcXVpcmVkXG4gICAgICAgICAgICogYnkgZWNyZWNvdmVyOiAzMi1ieXRlIHIsIDMyLWJ5dGUgcywgYW5kIG9uZS1ieXRlIHJlY292ZXJ5LWlkIHZcbiAgICAgICAgICAgKiB3aGljaCBpcyBlaXRoZXIgMjcgb3IgMjguXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg0MzU1YzQ3ZDYzOTI0ZThhNzJlNTA5YjY1MDI5MDUyZWI2YzI5OWQ1M2EwNGUxNjdjNTc3NWZkNDY2NzUxYzlkMDcyOTk5MzZkMzA0YzE1M2Y2NDQzZGZhMDVmNDBmZjAwN2Q3MjkxMWI2ZjcyMzA3Zjk5NjIzMTYwNWI5MTU2MjFjXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRW1wdHlJbXBsOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRXRoMVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBpdHMgc2lnbmF0dXJlXG4gICAgICAgICAgICogQGV4YW1wbGUgMHgyMjg5NTExODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEyMDFkNTg2NTZiMGUyMmFhYTY4ZmRjNjkyZGI0MTk3OTA5OGMzODg2ZWQzMzAxNWQ3NDY3ZGU5MjExNjA5Y2RhYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwOGIwYzI5MDAzMjRkM2ZmOWFkZmJhN2ZkZmU1YWYzZjliMmNkYmVlZjdiMjgwNDM3YmJmMWIxYzU5YTA5M2Q2MTVhZmUzZTVkZmVkOTYyMmI1NDBjZGQ5YjQ5YjNjNWFkMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDkwMTFhZGJjYzNiYzljMDMwN2JiMDdmMzdkZGExYTFhOWM2OWQyZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjA5MDNkYjg1MjU2NzRiOGU3OTA0ZjliN2Q3ZDllYzU1YTBhNDJkMzNjZjU4YmUyNTQ2OWIwYzIxYmJiNmQwNjE3MmJjNWJiNWZkMWFlZDhlNGYzNTkzNjk2ODk1ODExNmIwNjE5NTUzYzJjYjFjNTJlNzMyMzA3NGM2ZjhlYjNkNWE3MDc0ZmM2NTgwMTQ4ZGY5MDc4MzdmYTNiMTY0YWQ3ZmJjMjI4OGRhZDFlOGE1YjAyMTA5NWI1N2M4YTM2ZDRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBybHBfc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRXRoMlNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXggZW5jb2RlZCBzaWduYXR1cmUgcHJlZml4ZWQgd2l0aCAweCBlLmcuIFwiMHgwMDAwLi4uXCJcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweGI0ZjJlZjlkMTJhNTRlMWY1Njk1OTZjMDdjOTdkNmQ3MzA1MzViNmZmYzBkMjg3NzYxZGM3ODEwM2E4NjMyNjc4MjQ3MWEwNGM3NWNlN2E2ZmFlYTA4Y2E5YTRhMDgzMDAzMWNkY2I4OTNkYTg3MTFkNTRhYTIyNjE5ZjFhN2U3MWI4MTg1ZGRmNGM2YmZkOWJhYmJkNzM1OTYwZTM1ZTU2YmQ2ZWViODk2MjViMDQ4NTBlN2E5ZWY4ODQ2ZTU0OVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEZpZG9Bc3NlcnRDaGFsbGVuZ2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IChjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc1wiXTtcbiAgICAgICAgfSkgJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEdldFVzZXJzSW5PcmdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2YgdXNlcnMgaW4gdGhlIG9yZyAqL1xuICAgICAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJZEluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvb2YgdGhhdCBhbiBlbmQtdXNlciBwcm92aWRlZCBDdWJlU2lnbmVyIHdpdGggYSB2YWxpZCBhdXRoIHRva2VuXG4gICAgICogKGVpdGhlciBhbiBPSURDIHRva2VuIG9yIGEgQ3ViZVNpZ25lciBzZXNzaW9uIHRva2VuKVxuICAgICAqL1xuICAgIElkZW50aXR5UHJvb2Y6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT0lEQyBhdWRpZW5jZTsgc2V0IG9ubHkgaWYgdGhlIHByb29mIHdhcyBvYnRhaW5lZCBieSB1c2luZyBPSURDIHRva2VuLlxuICAgICAgICAgICAqXG4gICAgICAgICAgICogSW4gb3RoZXIgd29yZHMsIHByZXNlbmNlIG9mIHRoaXMgZmllbGQgdGVzdGlmaWVzIHRoYXQgYXV0aG9yaXphdGlvbiB3YXMgb2J0YWluZWQgdmlhIE9JREMuXG4gICAgICAgICAgICovXG4gICAgICAgICAgYXVkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICAgICAqIEBleGFtcGxlIHVzZXJAZW1haWwuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICBleHBfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICBpZGVudGl0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdIHwgbnVsbDtcbiAgICAgICAgICB1c2VyX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkN1YmVTaWduZXJVc2VySW5mb1wiXSB8IG51bGw7XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHByb29mICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlcml2YXRpb24tcmVsYXRlZCBtZXRhZGF0YSBmb3Iga2V5cyBkZXJpdmVkIGZyb20gYSBsb25nLWxpdmVkIG1uZW1vbmljICovXG4gICAgS2V5RGVyaXZhdGlvbkluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXJpdmF0aW9uIHBhdGggdXNlZCB0byBkZXJpdmUgdGhpcyBrZXkgKi9cbiAgICAgICAgICBkZXJpdmF0aW9uX3BhdGg6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYy1pZCBvZiB0aGUga2V5J3MgcGFyZW50IG1uZW1vbmljICovXG4gICAgICAgICAgbW5lbW9uaWNfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgd3JhcHBlZCBrZXktaW1wb3J0IGtleSAqL1xuICAgIEtleUltcG9ydEtleToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBkYXRhIGtleS4gKi9cbiAgICAgICAgICBka19lbmM6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEV4cGlyYXRpb24gdGltZXN0YW1wIGV4cHJlc3NlZCBhcyBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGV4cGlyZXM6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHRvIHdoaWNoIGFuIGltcG9ydGVkIGtleSBzaG91bGQgYmUgZW5jcnlwdGVkLlxuICAgICAgICAgICAqIFRoaXMgaXMgYSBQMzg0IHB1YmxpYyBrZXkgaW4gYmFzZTY0LWVuY29kZWQgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgc2VjcmV0IGtleS4gKi9cbiAgICAgICAgICBza19lbmM6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBLZXlJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgZGVyaXZhdGlvbl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlEZXJpdmF0aW9uSW5mb1wiXSB8IG51bGw7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBrZXkgaXMgZW5hYmxlZCAob25seSBlbmFibGVkIGtleXMgbWF5IGJlIHVzZWQgZm9yIHNpZ25pbmcpICovXG4gICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBrZXk6IFwiS2V5I1wiIGZvbGxvd2VkIGJ5IGEgdW5pcXVlIGlkZW50aWZpZXIgc3BlY2lmaWMgdG9cbiAgICAgICAgICAgKiB0aGUgdHlwZSBvZiBrZXkgKHN1Y2ggYXMgYSBwdWJsaWMga2V5IGZvciBCTFMgb3IgYW4gZXRoZXJldW0gYWRkcmVzcyBmb3IgU2VjcClcbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAga2V5X3R5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5VHlwZVwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBrZXksIHN1Y2ggYXMgYSBwdWJsaWMga2V5IG9yIGFuIGV0aGVyZXVtIGFkZHJlc3NcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBtYXRlcmlhbF9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBVc2VyLWRlZmluZWQgbWV0YWRhdGEuIFdoZW4gcmVuZGVyaW5nIChlLmcuLCBpbiB0aGUgYnJvd3NlcikgeW91IHNob3VsZCB0cmVhdFxuICAgICAgICAgICAqIGl0IGFzIHVudHJ1c3RlZCB1c2VyIGRhdGEgKGFuZCBhdm9pZCBpbmplY3RpbmcgbWV0YWRhdGEgaW50byBIVE1MIGRpcmVjdGx5KSBpZlxuICAgICAgICAgICAqIHVudHJ1c3RlZCB1c2VycyBjYW4gY3JlYXRlL3VwZGF0ZSBrZXlzIChvciB0aGVpciBtZXRhZGF0YSkuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbWV0YWRhdGE/OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE93bmVyIG9mIHRoZSBrZXlcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIG93bmVyOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEtleSBwb2xpY3lcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJSZXF1aXJlTWZhXCI6IHtcbiAgICAgICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAgICAgKiAgICAgfVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k6IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCwgc2VyaWFsaXplZCBwdWJsaWMga2V5LiBUaGUgZm9ybWF0IHVzZWQgZGVwZW5kcyBvbiB0aGUga2V5IHR5cGU6XG4gICAgICAgICAgICogLSBTZWNwMjU2azEga2V5cyB1c2UgNjUtYnl0ZSB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgICAgICogLSBCTFMga2V5cyB1c2UgNDgtYnl0ZSBjb21wcmVzc2VkIEJMUzEyLTM4MSAoWkNhc2gpIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEVkMjU1MTkga2V5cyB1c2UgdGhlIGNhbm9uaWNhbCAzMi1ieXRlIGVuY29kaW5nIHNwZWNpZmllZCBpbiBSRkMgODAzMi5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBwdXJwb3NlIGZvciB3aGljaCB0aGUga2V5IGNhbiBiZSB1c2VkIChlLmcuLCBjaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXMpXG4gICAgICAgICAgICogQGV4YW1wbGUgRXRoMlZhbGlkYXRvcigxKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBLZXlJbmZvczoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHBlbmRpbmcgTUZBIHJlcXVlc3RzICovXG4gICAgICAgICAgbWZhX3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgTGlzdFRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgdG9rZW5zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRva2VuSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmV0dXJuZWQgYXMgYSByZXNwb25zZSBmcm9tIG11bHRpcGxlIHJvdXRlcyAoZS5nLiwgJ2dldCBtZmEnLCAnYXBwcm92ZSBtZmEnLCAnYXBwcm92ZSB0b3RwJykuICovXG4gICAgTWZhUmVxdWVzdEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBleHBpcmVzX2F0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgcmVjZWlwdD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUmVjZWlwdFwiXSB8IG51bGw7XG4gICAgICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgICAgICBzdGF0dXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3RhdHVzXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gYWJvdXQgYSBuZXcgc2Vzc2lvbiwgcmV0dXJuZWQgZnJvbSBtdWx0aXBsZSBlbmRwb2ludHMgKGUuZy4sIGxvZ2luLCByZWZyZXNoLCBldGMuKS4gKi9cbiAgICBOZXdTZXNzaW9uUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gZXhwaXJhdGlvbiAoaW4gc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoKSwgYmV5b25kIHdoaWNoIGl0IGNhbm5vdCBiZSByZWZyZXNoZWQuXG4gICAgICAgICAgICogQGV4YW1wbGUgMTcwMTg3OTY0MFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGV4cGlyYXRpb24/OiBudW1iZXI7XG4gICAgICAgICAgc2Vzc2lvbl9pbmZvOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNsaWVudFNlc3Npb25JbmZvXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBOZXcgdG9rZW4gdG8gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uIFJlcXVlc3RzIHRvIHNpZ25pbmcgZW5kcG9pbnRzXG4gICAgICAgICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyB2YWx1ZSBpbiB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlclxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgT3JnSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hlbiBmYWxzZSwgYWxsIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBpbnZvbHZpbmcga2V5cyBpbiB0aGlzIG9yZyBhcmUgZGlzYWJsZWQuICovXG4gICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQ6IHRoaXMgZmllbGQgc2hvdWxkIGJlIGlnbm9yZWQuICovXG4gICAgICAgICAga2V5X2ltcG9ydF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgdW5pdmVyc2FsbHkgdW5pcXVlIGtleS13cmFwcGluZy1rZXkgaWRlbnRpZmllci5cbiAgICAgICAgICAgKiBUaGlzIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gc2V0dGluZyB1cCBrZXkgZXhwb3J0LlxuICAgICAgICAgICAqIEBleGFtcGxlIG1yay1mY2UwOTUyNWU4MTU4N2QyMzUyMGYxMWUwN2UyZTlkOVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGt3a19pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlL3RpbWUgKGluIFVUQykgd2hlbiBsYXN0ICd1bnN0YWtlJyB3YXMgcGVyZm9ybWVkLiBVbml4IGVwb2NoIGlmIG5vbmUuXG4gICAgICAgICAgICogQGV4YW1wbGUgVE9ET1xuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfdW5zdGFrZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgJ3Vuc3Rha2UnIGNhbGxzIGhhcHBlbmVkIG9uIHRoZSBkYXkgd2hlbiBgbGFzdF91bnN0YWtlYCB3YXMgcGVyZm9ybWVkLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfdW5zdGFrZV9kYXlfY291bnQ6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmdcbiAgICAgICAgICAgKiBAZXhhbXBsZSBteV9vcmdfbmFtZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3JnLXdpZGUgcG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgYSBrZXkgaXMgdXNlZCBmb3Igc2lnbmluZ1xuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJNYXhEYWlseVVuc3Rha2VcIjogNVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCBUT1RQIGZhaWx1cmUgbGltaXQsIGkuZS4sIHRoZSBudW1iZXJcbiAgICAgICAgICAgKiBvZiB0aW1lcyBhIHVzZXIgY2FuIHByb3ZpZGUgYW4gaW5jb3JyZWN0IFRPVFAgY29kZSBiZWZvcmUgYmVpbmcgcmF0ZSBsaW1pdGVkLlxuICAgICAgICAgICAqIFRoaXMgdmFsdWUgY2FuIGJlIGJldHdlZW4gMSBhbmQgNSAoaW5jbHVzaXZlKS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCBkZWxheSwgaS5lLiwgdGhlIG1pbmltdW1cbiAgICAgICAgICAgKiBhbW91bnQgb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIGEgdXNlci1leHBvcnQgaXMgaW5pdGlhdGVkIGFuZCB3aGVuXG4gICAgICAgICAgICogaXQgbWF5IGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWUgaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2VcbiAgICAgICAgICAgKiBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X2RlbGF5OiBudW1iZXI7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgICAgICogb2YgdGltZSAoaW4gc2Vjb25kcykgYmV0d2VlbiB3aGVuIHRoZSB1c2VyLWV4cG9ydCBkZWxheSBpcyBjb21wbGV0ZWQgYW5kIHdoZW5cbiAgICAgICAgICAgKiB0aGUgdXNlciBleHBvcnQgcmVxdWVzdCBoYXMgZXhwaXJlZCBhbmQgY2FuIG5vIGxvbmdlciBiZSBjb21wbGV0ZWQuIChUaGlzIHZhbHVlXG4gICAgICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF93aW5kb3c6IG51bWJlcjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwga2V5cyBpbiBhIHJvbGUgKi9cbiAgICAgICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgdXNlcnMgaW4gYSByb2xlICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgZXhwb3J0X3JlcXVlc3RzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRJbml0UmVzcG9uc2VcIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUmV2b2tlVG9rZW5SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIHRva2VuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl0gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJldm9rZVRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUb2tlbnMgdGhhdCB3ZXJlIHJldm9rZWQuICovXG4gICAgICAgICAgcmV2b2tlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSb2xlSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSByb2xlIGlzIGVuYWJsZWRcbiAgICAgICAgICAgKiBAZXhhbXBsZSB0cnVlXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQgVGhlIEN1YmVTaWduZXIgSURzIG9mIGF0IG1vc3QgMTAwIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZSAqL1xuICAgICAgICAgIGtleXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZSAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3kgdGhhdCBpcyBjaGVja2VkIHdoZW5ldmVyIGEga2V5IGlzIGFjY2Vzc2VkIGZvciBzaWduaW5nIHZpYSB0aGlzIHJvbGUuXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAgICAgKiAgICAgICBcIjEyMy40NTYuNzguOS8xNlwiXG4gICAgICAgICAgICogICAgIF1cbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgICAgICogICAgIH1cbiAgICAgICAgICAgKiAgIH1cbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgcm9sZVxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZC4gVGhlIGxpc3Qgb2YgYXQgbW9zdCAxMDAgdXNlcnMgd2l0aCBhY2Nlc3MgdG8gdGhlIHJvbGUuICovXG4gICAgICAgICAgdXNlcnM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU2Vzc2lvbkluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNlc3Npb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFNlc3Npb24gSUQuIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHNlc3Npb24sIGJ1dCBjYW5ub3QgYmUgdXNlZCBmb3IgYXV0aC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIGZyb20gYW55IG9wZXJhdGlvbiBvcGVyYXRpbmcgb24gbXVsdGlwbGUgc2Vzc2lvbnMgKi9cbiAgICBTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgICAgIHNlc3Npb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlc3Npb25JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgU29sYW5hU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBrZXkgaWQgKFwiS2V5Iy4uLlwiKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSNkYjE3MzFmOC0zNjU5LTQ1YzAtODg1Yi1lMTFlMWY1YjdiZTJcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBjcmVhdGVkX3ZhbGlkYXRvcl9rZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBkZXBvc2l0X3R4OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcG9zaXRUeG5cIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVG9rZW5JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVc2UgaXQgdG8gcmV2b2tlIGEgc2Vzc2lvbi4gQ2Fubm90IGJlIHVzZWQgZm9yIGF1dGguICovXG4gICAgICAgICAgaGFzaDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHB1cnBvc2UgKi9cbiAgICAgICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVG90cEluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBUT1RQIGNoYWxsZW5nZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBUb3RwQ2hhbGxlbmdlIzc4OTJlYmJhLTU2M2UtNDg1Yi1iYjdkLWUyNjI2NzM2MzI4NlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU3RhbmRhcmQgVE9UUCB1cmwgd2hpY2ggaW5jbHVkZXMgZXZlcnl0aGluZyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBUT1RQLlxuICAgICAgICAgICAqIEBleGFtcGxlIG90cGF1dGg6Ly90b3RwL0N1YmlzdDphbGljZS0lNDBleGFtcGxlLmNvbT9zZWNyZXQ9REFIRjdLQ09UUVdTT01LNFhGRU1OSFhPNEo0MzNPRDcmaXNzdWVyPUN1YmlzdFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfdXJsOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgcmVzcG9uc2VzIGFyZSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZXMuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqIFRoaXMgbWVzc2FnZSBjYW4gYmUgZGlyZWN0bHkgUE9TVGVkIHRvIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICogYC9ldGgvdjEvYmVhY29uL3Bvb2wvdm9sdW50YXJ5X2V4aXRzYCBlbmQtcG9pbnQgKHNlZSBleHBlY3RlZCBzY2hlbWFcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vc3VibWl0UG9vbFZvbHVudGFyeUV4aXQpKS5cbiAgICAgKi9cbiAgICBVbnN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBtZXNzYWdlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlZvbHVudGFyeUV4aXRcIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEJMUyBzaWduYXR1cmUuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg5MTBjN2NkNTM3ZWQ5MWNjOGM0YTgyZjNjYmQ4MzJlOWJlOGMyNGEyMmU5Yzg2ZGY0NzlmN2NlNDIwMjVlYTZhMDk2MTliNDE4YjY2NmEwNjBlMjYwZDJhYWUzMWI4ZTUwZTlkMDVjYTM0NDJjN2VlZDNiNTA3ZTUyMDdlMTQ2NzQyNzVmNjhjMmJhODRjNGJmNmI4ZGQzNjRhMzA0YWNhYzhjZmFiMzY4MWUyNTE0YjQ0MDBmOTI0MmJjNjExNjRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVcGRhdGVPcmdSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5ICovXG4gICAgICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBvcmcgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCJodHRwczovL2V4YW1wbGUuY29tXCJcbiAgICAgICAgICAgKiAgICAgXVxuICAgICAgICAgICAqICAgfVxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB0b3RwX2ZhaWx1cmVfbGltaXQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCBkZWxheVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X2RlbGF5PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgd2luZG93XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBleHBvcnRlZCBrZXkgbWF0ZXJpYWwsIGVuY3J5cHRlZCB3aXRoIEFFUy0yNTYtR0NNIHVuZGVyIGEga2V5XG4gICAgICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICAgICAqIHdpdGggREhLRU0oUC0yNTYsIEhLREYtU0hBMjU2KSBhbmQgYmFzZTY0IGVuY29kZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdXNlZCBmb3IgSFBLRSBrZXkgZGVyaXZhdGlvbiBhcyBiYXNlNjQtZW5jb2RlZFxuICAgICAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXBoZW1lcmFsX3B1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIGJlaW5nIHJlcXVlc3RlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgICAgICovXG4gICAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb20gKi9cbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIG11bHRpLWZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgdXNlciAqL1xuICAgICAgICAgIG1mYTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDb25maWd1cmVkTWZhXCJdW107XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgICAgIG1mYV9wb2xpY3k/OiB1bmtub3duO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGwgb3JnYW5pemF0aW9ucyB0aGUgdXNlciBiZWxvbmdzIHRvXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAgICAgKiBdXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHBhcmFtZXRlcnM6IG5ldmVyO1xuICByZXF1ZXN0Qm9kaWVzOiBuZXZlcjtcbiAgaGVhZGVyczogbmV2ZXI7XG4gIHBhdGhJdGVtczogbmV2ZXI7XG59XG5cbmV4cG9ydCB0eXBlICRkZWZzID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgdHlwZSBleHRlcm5hbCA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBvcGVyYXRpb25zIHtcbiAgLyoqXG4gICAqIFVzZXIgSW5mb1xuICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKi9cbiAgYWJvdXRNZUxlZ2FjeToge1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IE9yZ1xuICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgZ2V0T3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiT3JnSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgT3JnXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAqXG4gICAqIFVwZGF0ZSBvcmdhbml6YXRpb24gYXR0cmlidXRlcyAoZW5hYmxlZCBmbGFnLCBuYW1lLCBhbmQgcG9saWNpZXMpLlxuICAgKi9cbiAgdXBkYXRlT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZU9yZ1JlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVcGRhdGVPcmdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgKlxuICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEF2YSBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYXZhU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBBdmFsYW5jaGUgYmVjaDMyIGFkZHJlc3MgZm9ybWF0IHdpdGhvdXQgdGhlIGNoYWluIHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSBhdmF4MWFtNHc2aGZydm1oM2FrZHV6a2p0aHJ0Z3RxYWZhbGNlNmFuOGNyXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdmFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkF2YVNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEJpdGNvaW4gVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYSBCaXRjb2luIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgYnRjU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBiZWNoMzIgZW5jb2Rpbmcgb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgYmMxcTVwNXFrYWU3N2x5ODBrcjRweWZ5dGRxbTdyZjA4ZGRoZGVqbDlnXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCdGNTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJ0Y1NpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICogQGRlc2NyaXB0aW9uIERlcml2ZSBLZXkgRnJvbSBMb25nLUxpdmVkIE1uZW1vbmljXG4gICAqXG4gICAqIERlcml2ZXMgYSBrZXkgb2YgYSBzcGVjaWZpZWQgdHlwZSB1c2luZyBhIHN1cHBsaWVkIGRlcml2YXRpb24gcGF0aCBhbmQgYW5cbiAgICogZXhpc3RpbmcgbG9uZy1saXZlZCBtbmVtb25pYy5cbiAgICovXG4gIGRlcml2ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXJpdmVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBFSVAtMTkxIERhdGFcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTE5MSBEYXRhXG4gICAqXG4gICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyBFSVAtMTkxIHBlcnNvbmFsX3NpZ24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBlaXAxOTFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIEVWTSBhZGRyZXNzIG9mIHRoZSBTZWNwMjU2azEga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDkwMTFhZGJDQzNiQzljMDMwN0JCMDdGMzdEZGExYTFhOWM2OWQyRVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWlwMTkxU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFaXAxOTFPcjcxMlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gRUlQLTcxMiBUeXBlZCBEYXRhXG4gICAqXG4gICAqIFNpZ25zIHR5cGVkIGRhdGEgYWNjb3JkaW5nIHRvIEVJUC03MTIgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqL1xuICBlaXA3MTJTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIEVWTSBhZGRyZXNzIG9mIHRoZSBTZWNwMjU2azEga2V5XG4gICAgICAgICAqIEBleGFtcGxlIDB4NDkwMTFhZGJDQzNiQzljMDMwN0JCMDdGMzdEZGExYTFhOWM2OWQyRVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRWlwNzEyU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFaXAxOTFPcjcxMlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICpcbiAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBhXG4gICAqIHZhbGlkIEN1YmVTaWduZXIgc2Vzc2lvbi5cbiAgICpcbiAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZVxuICAgKiB0byBhbm90aGVyIHNlcnZpY2Ugd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgKi9cbiAgY3JlYXRlUHJvb2ZDdWJlU2lnbmVyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIE9JREMgdG9rZW5cbiAgICpcbiAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgbWV0IHRoZVxuICAgKiBhdXRoZW50aWNhdGlvbiByZXF1aXJlbWVudHMgKGFsbG93ZWQgaXNzdWVycyAmIGF1ZGllbmNlcykgZm9yIEN1YmVTaWduZXJcbiAgICogd2l0aG91dCBsZWFraW5nIHRoZWlyIGNyZWRlbnRpYWxzLlxuICAgKlxuICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlIHRvIGFub3RoZXIgc2VydmljZVxuICAgKiB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAqL1xuICBjcmVhdGVQcm9vZk9pZGM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAqXG4gICAqIEFsbG93cyBhIHRoaXJkLXBhcnR5IHRvIHZhbGlkYXRlIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBXaGVuIGEgdGhpcmQtcGFydHkgaXMgcHJvdmlkZWQgYW4gW0lkZW50aXR5UHJvb2ZdIG9iamVjdCwgdGhleSBtdXN0IGNoZWNrIGl0c1xuICAgKiB2ZXJhY2l0eSBieSBjYWxsaW5nIHRoaXMgZW5kcG9pbnRcbiAgICovXG4gIHZlcmlmeVByb29mOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBLZXktSW1wb3J0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAqXG4gICAqIEdlbmVyYXRlIGFuIGVwaGVtZXJhbCBrZXkgdGhhdCBhIGNsaWVudCBjYW4gdXNlIGZvciBrZXktaW1wb3J0IGVuY3J5cHRpb24uXG4gICAqL1xuICBjcmVhdGVLZXlJbXBvcnRLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlJbXBvcnRLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbXBvcnQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbXBvcnQgS2V5XG4gICAqXG4gICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAqL1xuICBpbXBvcnRLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW1wb3J0S2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEludml0ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgaW4gYW4gZXhpc3Rpbmcgb3JnIGFuZCBzZW5kcyB0aGF0IHVzZXIgYW4gaW52aXRlIGVtYWlsLlxuICAgKi9cbiAgaW52aXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkludml0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleXNcbiAgICpcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBvd25lZCBrZXlzIGluIGEgZ2l2ZW4gb3JnLlxuICAgKi9cbiAgbGlzdEtleXNJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBGaWx0ZXIgYnkga2V5IHR5cGVcbiAgICAgICAgICogQGV4YW1wbGUgU2VjcEV0aEFkZHJcbiAgICAgICAgICovXG4gICAgICAgIGtleV90eXBlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBLZXlcbiAgICpcbiAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSBuZXcga2V5cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAqL1xuICBjcmVhdGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIEdldCBLZXlcbiAgICpcbiAgICogUmV0dXJucyB0aGUgcHJvcGVydGllcyBvZiBhIGtleS5cbiAgICovXG4gIGdldEtleUluT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgKlxuICAgKiBEZWxldGVzIGEga2V5IHNwZWNpZmllZCBieSBpdHMgSUQuXG4gICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICovXG4gIGRlbGV0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXBkYXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIEtleVxuICAgKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3Igb3JnYW5pemF0aW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICB1cGRhdGVLZXk6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICpcbiAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGFsbCBwZW5kaW5nIE1GQSByZXF1ZXN0cyB0aGF0IGFyZSBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXIsXG4gICAqIGkuZS4sIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXIgaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAqL1xuICBtZmFMaXN0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdE1mYVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBQZW5kaW5nIE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IGJ5IGl0cyBpZC5cbiAgICovXG4gIG1mYUdldDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQXBwcm92ZSBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBBcHByb3ZlIHJlcXVlc3QgYWZ0ZXIgbG9nZ2luZyBpbiB3aXRoIEN1YmVTaWduZXIuIEFkZHMgdGhlIGN1cnJlbnRseS1sb2dnZWQgdXNlciBhcyBhbiBhcHByb3ZlclxuICAgKiBvZiBhIHBlbmRpbmcgTUZBIHJlcXVlc3Qgb2YgdGhlIFtTdGF0dXM6OlJlcXVpcmVkQXBwcm92ZXJzXSBraW5kLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mXG4gICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgKiByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICovXG4gIG1mYUFwcHJvdmVDczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgQXBwcm92aW5nIGFuIE1GQSBSZXF1ZXN0IHdpdGggRklET1xuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgQXBwcm92aW5nIGFuIE1GQSBSZXF1ZXN0IHdpdGggRklET1xuICAgKlxuICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsIHByb2Nlc3Mgb2YgYW4gTUZBIFJlcXVlc3QgdXNpbmcgRklETy5cbiAgICovXG4gIG1mYUFwcHJvdmVGaWRvOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQXNzZXJ0Q2hhbGxlbmdlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWxcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWxcbiAgICpcbiAgICogQWRkcyBhbiBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICogdGhlIGNvbmZpcm1hdGlvbiByZWNlaXB0IGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgKi9cbiAgbWZhQXBwcm92ZUZpZG9Db21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9Bc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlIGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQXBwcm92ZSBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogQWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieSBwcm92aWRpbmcgVE9UUCBjb2RlLlxuICAgKlxuICAgKiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7XG4gICAqIHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0byByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICovXG4gIG1mYUFwcHJvdmVUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgTWZhUmVxdWVzdFxuICAgICAgICAgKiBAZXhhbXBsZSBNZmFSZXF1ZXN0IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgbWZhX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cEFwcHJvdmVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTG9naW4gd2l0aCBPSURDXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dpbiB3aXRoIE9JRENcbiAgICpcbiAgICogRXhjaGFuZ2UgYW4gT0lEQyBJRCB0b2tlbiAocGFzc2VkIHZpYSB0aGUgYEF1dGhvcml6YXRpb25gIGhlYWRlcikgZm9yIGEgc2lnbmVyIHNlc3Npb25cbiAgICovXG4gIG9pZGNBdXRoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9pZGNMb2dpblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZXNcbiAgICpcbiAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgKi9cbiAgbGlzdFJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERvbid0IGluY2x1ZGUga2V5cyBhbmQgdXNlcnMgZm9yIGVhY2ggcm9sZSAqL1xuICAgICAgICBzdW1tYXJpemU/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFJvbGVcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi4gVW5sZXNzIHRoZSBsb2dnZWQtaW4gdXNlclxuICAgKiBpcyB0aGUgb3duZXIsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZS5cbiAgICovXG4gIGNyZWF0ZVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCByZXF1ZXN0IGJvZHkgdG8gc2V0IHRoZSByb2xlIG5hbWUgKi9cbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlUm9sZVJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlUm9sZVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgUm9sZVxuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYSByb2xlIGluIGFuIG9yZ2FuaXphdGlvblxuICAgKi9cbiAgZ2V0Um9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgUm9sZVxuICAgKlxuICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICBkZWxldGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBSb2xlXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgUm9sZVxuICAgKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICogVXBkYXRlcyB0aGUgcm9sZSdzIHBvbGljaWVzICh0aGlzIHJlcXVpcmVzIHRoZSBgbWFuYWdlOnJvbGU6dXBkYXRlOnBvbGljeWAgc2NvcGUpLlxuICAgKiBUaGUgdXNlciBtdXN0IGJlIGluIHRoZSByb2xlIG9yIGFuIG93bmVyIG9mIHRoZSBvcmdhbml6YXRpb24uXG4gICAqL1xuICB1cGRhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVwZGF0ZVJvbGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUm9sZUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQWRkIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBLZXlzXG4gICAqXG4gICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICovXG4gIGFkZEtleXNUb1JvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkS2V5c1RvUm9sZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgVXNlclxuICAgKlxuICAgKiBBZGRzIGFuIGV4aXN0aW5nIHVzZXIgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGFkZCB1c2VycyB0byBhIHJvbGUuXG4gICAqL1xuICBhZGRVc2VyVG9Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIFVzZXJcbiAgICAgICAgICogQGV4YW1wbGUgVXNlciMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBLZXlzXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgKi9cbiAgbGlzdFJvbGVLZXlzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RSb2xlS2V5c1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBLZXlcbiAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBLZXlcbiAgICpcbiAgICogUmVtb3ZlcyBhIGdpdmVuIGtleSBmcm9tIGEgcm9sZVxuICAgKi9cbiAgcmVtb3ZlS2V5RnJvbVJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IGEgc2luZ2xlIHBhZ2Ugb2YgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICpcbiAgICogKipEZXByZWNhdGVkKio6IFVzZSBgR0VUIC9vcmcve29yZ19pZH0vc2Vzc2lvbj9yb2xlPWBcbiAgICpcbiAgICogUmV0dXJucyBhbGwgYWNjZXNzIHRva2VucyBmb3IgYSBnaXZlbiByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgKi9cbiAgbGlzdFJvbGVUb2tlbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJMaXN0VG9rZW5zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgVG9rZW5cbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBhY2Nlc3MgdG9rZW4gZm9yIGEgZ2l2ZW4gcm9sZSAodG8gYmUgdXNlZCBhcyBcIkFQSSBLZXlcIiBmb3IgYWxsIHNpZ25pbmcgYWN0aW9ucykuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBjcmVhdGUgYSB0b2tlbiBmb3IgaXQuXG4gICAqL1xuICBjcmVhdGVSb2xlVG9rZW46IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3JlYXRlVG9rZW5SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBBbGwgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYERFTEVURSAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gIGluc3RlYWRcbiAgICpcbiAgICogUmV2b2tlcyBhbGwgYWNjZXNzIHRva2VucyBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICovXG4gIHJldm9rZUFsbFJvbGVUb2tlbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSZXZva2VUb2tlbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYERFTEVURSAvb3JnL3tvcmdfaWR9L3Nlc3Npb24ve3Nlc3Npb25faWR9YFxuICAgKlxuICAgKiBSZXZva2VzIGFuIGFjY2VzcyB0b2tlbiBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICovXG4gIHJldm9rZVJvbGVUb2tlbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gcmV2b2tlXG4gICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJldm9rZVRva2VuUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIFVzZXJzLlxuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgKi9cbiAgbGlzdFJvbGVVc2Vyczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZVVzZXJzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBzZXNzaW9uc1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBzZXNzaW9uc1xuICAgKlxuICAgKiBJZiBubyBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCwgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHNlc3Npb24gaXMgcmV0dXJuZWRcbiAgICovXG4gIGxpc3RTZXNzaW9uczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb25cbiAgICAgICAgICogQGV4YW1wbGUgbXktcm9sZVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZT86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkU2Vzc2lvbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBuZXcgdXNlciBzZXNzaW9uIChtYW5hZ2VtZW50IGFuZC9vciBzaWduaW5nKVxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgc2Vzc2lvbiwgc2lsZW50bHkgdHJ1bmNhdGluZyByZXF1ZXN0ZWQgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZXNcbiAgICogdG8gYmUgYXQgbW9zdCByZXF1ZXN0b3IncyBzZXNzaW9uIGFuZCBhdXRoIGxpZmV0aW1lLCByZXNwZWN0aXZlbHkuXG4gICAqL1xuICBjcmVhdGVTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVNlc3Npb25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJldm9rZSBleGlzdGluZyBzZXNzaW9uKHMpXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGV4aXN0aW5nIHNlc3Npb25zLCBwcmV2ZW50aW5nIHRoZW0gZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZC5cbiAgICogSWYgbm8gcXVlcnkgcGFyYW1zIGFyZSBwcm92aWRlZCwgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXZva2VkLlxuICAgKi9cbiAgcmV2b2tlU2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIG5hbWUgb3IgSUQgb2YgYSByb2xlIHRvIG9wZXJhdGUgb25cbiAgICAgICAgICogQGV4YW1wbGUgbXktcm9sZVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZT86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbnNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAqL1xuICByZXZva2VDdXJyZW50U2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBpbmZvcm1hdGlvblxuICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICovXG4gIGdldFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIGdldFxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTZXNzaW9uSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgYSBzZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgYSBzZXNzaW9uXG4gICAqXG4gICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgYW4gZXhpc3Rpbmcgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAqL1xuICByZXZva2VTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byByZXZva2VcbiAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbkluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgKlxuICAgKiBTaWducyBhIFNvbGFuYSBtZXNzYWdlIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKi9cbiAgc29sYW5hU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYmFzZTU4LWVuY29kZWQgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSA4NlpSUHN6QnA1RW9Qajd3UjNiSG43d25BWjVpWWZwYXNSYzdES0ZQVFVhWlxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU29sYW5hU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJTb2xhbmFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICogQGRlc2NyaXB0aW9uIEdldCBUb2tlbi1BY2Nlc3NpYmxlIEtleXNcbiAgICpcbiAgICogUmV0cmlldmVzIHRoZSBrZXlzIHRoYXQgdGhlIHJvbGUgdG9rZW4gY2FuIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RUb2tlbktleXM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJLZXlJbmZvc1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVc2VyIEluZm9cbiAgICogQGRlc2NyaXB0aW9uIFVzZXIgSW5mb1xuICAgKlxuICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIGFib3V0TWU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IG91dHN0YW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3RzXG4gICAqL1xuICB1c2VyRXhwb3J0TGlzdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBwcm92aWRlZCwgdGhlIHVzZXItaWQgd2hvc2UgdXNlci1leHBvcnQgcmVxdWVzdHMgdG8gbGlzdC4gRGVmYXVsdHMgdG8gdGhlXG4gICAgICAgICAqIGN1cnJlbnQgdXNlci4gIE9ubHkgdGhlIG9yZyBvd25lciBtYXkgbGlzdCByZXF1ZXN0cyBmb3IgYW5vdGhlciB1c2VyLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzgwNmM5NTQ0LWYxZmEtNGJhZC04ZDRkLTEwOTdhMTg0NDcyNlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBrZXktaWQgZm9yIHdoaWNoIHRvIGxpc3QgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdC5cbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqXG4gICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgKiBiZWZvcmUgZXhwb3J0IGNhbiBiZSBjb21wbGV0ZWQsIGFuZCByZXR1cm5zIGEgdGlja2V0IHRoYXQgY2FuIGJlIHVzZWRcbiAgICogdG8gY29tcGxldGUgdGhlIGV4cG9ydCBvbmNlIHRoZSB0aW1lciBoYXMgZXhwaXJlZC5cbiAgICpcbiAgICogT25seSBvbmUgdXNlci1leHBvcnQgcmVxdWVzdCBjYW4gYmUgYWN0aXZlIGZvciBhIGdpdmVuIGtleS4gSWYgdGhlcmVcbiAgICogaXMgYWxyZWFkeSBhbiBhY3RpdmUgZXhwb3J0LCB0aGlzIGVuZHBvaW50IHdpbGwgcmV0dXJuIGFuIGVycm9yLiBUb1xuICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAqL1xuICB1c2VyRXhwb3J0SW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgYW4gZXhpc3RpbmcgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICovXG4gIHVzZXJFeHBvcnREZWxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgd2hvc2UgZXhwb3J0IHJlcXVlc3Qgc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgd2hvIG93bnMgdGhpcyByZXF1ZXN0LiBJZiBvbWl0dGVkLCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCB1c2VyLlxuICAgICAgICAgKiBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGRlbGV0ZSB1c2VyLWV4cG9ydCByZXF1ZXN0cyBmb3IgYW5vdGhlciB1c2VyLlxuICAgICAgICAgKiBAZXhhbXBsZSBVc2VyIzgwNmM5NTQ0LWYxZmEtNGJhZC04ZDRkLTEwOTdhMTg0NDcyNlxuICAgICAgICAgKi9cbiAgICAgICAgdXNlcl9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqXG4gICAqIFRoaXMgZW5kcG9pbnQgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGluaXRpYXRpbmcgYSB1c2VyLWV4cG9ydCByZXF1ZXN0IHZpYVxuICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICogKGkuZS4sIGFmdGVyIHRoZSBleHBvcnQgZGVsYXkgaGFzIHBhc3NlZCBhbmQgYmVmb3JlIHRoZSByZXF1ZXN0IGhhcyBleHBpcmVkKS5cbiAgICpcbiAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgKi9cbiAgdXNlckV4cG9ydENvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAqL1xuICB1c2VyUmVnaXN0ZXJGaWRvSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVnaXN0ZXJGaWRvQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgRklETyBrZXlcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBGSURPIGtleVxuICAgKlxuICAgKiBEZWxldGVzIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIHRoZSBrZXkgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlckRlbGV0ZUZpZG86IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBGaWRvS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEZpZG9LZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBmaWRvX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBUT1RQXG4gICAqXG4gICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAqL1xuICB1c2VyRGVsZXRlVG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFbXB0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHVzZXJSZXNldFRvdHBDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBUT1RQXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIHVzZXJWZXJpZnlUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICovXG4gIGxpc3RVc2Vyc0luT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgKiBAZGVzY3JpcHRpb24gQWRkIGEgdGhpcmQtcGFydHkgdXNlciB0byB0aGUgb3JnXG4gICAqL1xuICBjcmVhdGVPaWRjVXNlcjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBZGRUaGlyZFBhcnR5VXNlclJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJBZGRUaGlyZFBhcnR5VXNlclJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRoaXJkLXBhcnR5IHVzZXIgZnJvbSB0aGUgb3JnXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKi9cbiAgZGVsZXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgKi9cbiAgcmVnaXN0ZXJGaWRvSW5pdExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICovXG4gIHJlZ2lzdGVyRmlkb0NvbXBsZXRlTGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAqXG4gICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgKiAtIHRoZSB1c2VyIGhhcyBub3QgY29uZmlndXJlZCBhbnkgYXV0aCBmYWN0b3JzO1xuICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlc2V0VG90cEluaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keT86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cFJlc2V0UmVxdWVzdFwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb3RwSW5mb1wiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZXNldFRvdHBDb21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IFRPVFBcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgKi9cbiAgdmVyaWZ5VG90cExlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBBcHByb3ZlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFJhdyBCbG9iXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFJhdyBCbG9iXG4gICAqXG4gICAqIFNpZ25zIGFuIGFyYml0cmFyeSBibG9iIHdpdGggYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgKlxuICAgKiAtIEVDRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmlnLWVuZGlhbiByIGFuZCBzIHBsdXMgcmVjb3ZlcnktaWRcbiAgICogYnl0ZSB2LCB3aGljaCBjYW4gaW4gZ2VuZXJhbCB0YWtlIGFueSBvZiB0aGUgdmFsdWVzIDAsIDEsIDIsIG9yIDMuXG4gICAqXG4gICAqIC0gRWREU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBpbiB0aGUgc3RhbmRhcmQgZm9ybWF0LlxuICAgKlxuICAgKiAtIEJMUyBzaWduYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBibG9iLXNpZ24gZW5kcG9pbnQuXG4gICAqL1xuICBibG9iU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmxvYlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQmxvYlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmVjb3JkIGhlYXJ0YmVhdFxuICAgKiBAZGVzY3JpcHRpb24gUmVjb3JkIGhlYXJ0YmVhdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGlzIGNhbGxlZCBieSB0aGUgY3ViZTNzaWduZXIgcHJveHkgdG8gcmVjb3JkIHZhcmlvdXMgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICAgKi9cbiAgY3ViZTNzaWduZXJIZWFydGJlYXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkhlYXJ0YmVhdFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gRVZNIFRyYW5zYWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhbiBFdGhlcmV1bSAoYW5kIG90aGVyIEVWTSkgdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgxU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBldGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBzZWNwIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweDQ5MDExYWRiQ0MzYkM5YzAzMDdCQjA3RjM3RGRhMWExYTljNjlkMkVcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDFTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVmFsaWRhdG9yIFJlcXVlc3RcbiAgICpcbiAgICogU2lnbnMgYW4gZXRoMiB2YWxpZGF0b3IgcmVxdWVzdCB3aXRoIGEgZ2l2ZW4gQkxTIGtleS5cbiAgICpcbiAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAqL1xuICBldGgyU2lnbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleSB3aXRoIDB4IHByZWZpeFxuICAgICAgICAgKiBAZXhhbXBsZSAweDk3MDBmYmI4YzkwNjk0MjQ0MmMyYTViM2FkNzQ5OGYyN2FlZGRhMjUzNzg2YTZmYmFhOGZlZjQ3ZmI3YWYyMzRlNTBjZjJjY2U4MTVhNTUzMDg3OTkyYWU1NjVkNDhkYVxuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXRoMlNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRXRoMlNpZ25SZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFN0YWtlIERlcG9zaXRcbiAgICpcbiAgICogU2lnbnMgYSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdpdGggYSBgdmFsaWRhdG9yX2tleWAuIElmIGB2YWxpZGF0b3Jfa2V5YCBpcyBzZXQgdG8gYSBwcmVnZW5lcmF0ZWQga2V5LCB3ZSB1c2UgdGhlXG4gICAqIHByb3ZpZGVkIHZhbGlkYXRvciBrZXkuIE90aGVyd2lzZSwgd2UgZ2VuZXJhdGUgYSBuZXcgQkxTIGtleS5cbiAgICpcbiAgICogV2hlbiB1c2luZyBhIHByZWdlbmVyYXRlZCBrZXksIHRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZVxuICAgKiBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgc3Rha2U6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU3Rha2VSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU3Rha2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBVbnN0YWtlIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAqXG4gICAqIEhhbmRsZSB1bnN0YWtpbmcgcmVxdWVzdCwgcHJvZHVjaW5nIGEgc2lnbmVkIHZvbHVudGFyeSBleGl0IG1lc3NhZ2VcbiAgICogdGhhdCBjYW4gYmUgcG9zdGVkIGRpcmVjdGx5IHRvIHRoZSBCZWFjb24gY2hhaW4uXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgdW5zdGFrZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCB2YWxpZGF0b3IgKEJMUykgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICAgKi9cbiAgICAgICAgcHVia2V5OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5zdGFrZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVbnN0YWtlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICovXG4gIHNpZ25lclNlc3Npb25SZWZyZXNoOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBvcmdhbml6YXRpb24gb3duaW5nIHRoZSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aERhdGFcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJOZXdTZXNzaW9uUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl19
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSB3YXMgYXV0by1nZW5lcmF0ZWQgYnkgb3BlbmFwaS10eXBlc2NyaXB0LlxuICogRG8gbm90IG1ha2UgZGlyZWN0IGNoYW5nZXMgdG8gdGhlIGZpbGUuXG4gKi9cblxuLyoqIE9uZU9mIHR5cGUgaGVscGVycyAqL1xudHlwZSBXaXRob3V0PFQsIFU+ID0geyBbUCBpbiBFeGNsdWRlPGtleW9mIFQsIGtleW9mIFU+XT86IG5ldmVyIH07XG50eXBlIFhPUjxULCBVPiA9IFQgfCBVIGV4dGVuZHMgb2JqZWN0ID8gKFdpdGhvdXQ8VCwgVT4gJiBVKSB8IChXaXRob3V0PFUsIFQ+ICYgVCkgOiBUIHwgVTtcbnR5cGUgT25lT2Y8VCBleHRlbmRzIGFueVtdPiA9IFQgZXh0ZW5kcyBbaW5mZXIgT25seV1cbiAgPyBPbmx5XG4gIDogVCBleHRlbmRzIFtpbmZlciBBLCBpbmZlciBCLCAuLi5pbmZlciBSZXN0XVxuICAgID8gT25lT2Y8W1hPUjxBLCBCPiwgLi4uUmVzdF0+XG4gICAgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBwYXRocyB7XG4gIFwiL3YwL2Fib3V0X21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIEdldCBPcmdcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IE9yZ1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGFuIG9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRPcmdcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIE9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgT3JnXG4gICAgICpcbiAgICAgKiBVcGRhdGUgb3JnYW5pemF0aW9uIGF0dHJpYnV0ZXMgKGVuYWJsZWQgZmxhZywgbmFtZSwgYW5kIHBvbGljaWVzKS5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVwZGF0ZU9yZ1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2F2YS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEF2YWxhbmNoZSBYLSBvciBQLUNoYWluIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAgICpcbiAgICAgKiBTaWducyBhbiBBdmFsYW5jaGUgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4gU2VjcEF2YSBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImF2YVNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9idGMvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBCaXRjb2luIFRyYW5zYWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYSBCaXRjb2luIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBrZXkuXG4gICAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJ0Y1NpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9kZXJpdmVfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqIEBkZXNjcmlwdGlvbiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgICAqXG4gICAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgICAqIGV4aXN0aW5nIGxvbmctbGl2ZWQgbW5lbW9uaWMuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiZGVyaXZlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vZXZtL2VpcDE5MS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVJUC0xOTEgRGF0YVxuICAgICAqXG4gICAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEVJUC0xOTEgcGVyc29uYWxfc2lnbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiZWlwMTkxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2V2bS9laXA3MTIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICAgKlxuICAgICAqIFNpZ25zIHR5cGVkIGRhdGEgYWNjb3JkaW5nIHRvIEVJUC03MTIgd2l0aCBhIGdpdmVuIFNlY3AyNTZrMSBrZXkuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImVpcDcxMlNpZ25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS9wcm92ZVwiOiB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFtJZGVudGl0eVByb29mXSBmcm9tIEN1YmVTaWduZXIgdXNlciBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgICAqXG4gICAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBhXG4gICAgICogdmFsaWQgQ3ViZVNpZ25lciBzZXNzaW9uLlxuICAgICAqXG4gICAgICogQ2xpZW50cyBhcmUgaW50ZW5kZWQgdG8gY2FsbCB0aGlzIHJvdXRlIGFuZCBwYXNzIHRoZSByZXR1cm5lZCBldmlkZW5jZVxuICAgICAqIHRvIGFub3RoZXIgc2VydmljZSB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImNyZWF0ZVByb29mQ3ViZVNpZ25lclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L2lkZW50aXR5L3Byb3ZlL29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAgICpcbiAgICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgcm91dGUgY2FuIGJlIHVzZWQgdG8gcHJvdmUgdG8gYW5vdGhlciBwYXJ0eSB0aGF0IGEgdXNlciBoYXMgbWV0IHRoZVxuICAgICAqIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cyAoYWxsb3dlZCBpc3N1ZXJzICYgYXVkaWVuY2VzKSBmb3IgQ3ViZVNpZ25lclxuICAgICAqIHdpdGhvdXQgbGVha2luZyB0aGVpciBjcmVkZW50aWFscy5cbiAgICAgKlxuICAgICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2UgdG8gYW5vdGhlciBzZXJ2aWNlXG4gICAgICogd2hpY2ggd2lsbCB2ZXJpZnkgaXQgYnkgbWFraW5nIGEgcmVxdWVzdCB0byBgL3YwL29yZy88b3JnX2lkPi9pZGVudGl0eS92ZXJpZnlgLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVQcm9vZk9pZGNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pZGVudGl0eS92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBpZGVudGl0eSBwcm9vZlxuICAgICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICAgKlxuICAgICAqIEFsbG93cyBhIHRoaXJkLXBhcnR5IHRvIHZhbGlkYXRlIHByb29mIG9mIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqXG4gICAgICogV2hlbiBhIHRoaXJkLXBhcnR5IGlzIHByb3ZpZGVkIGFuIFtJZGVudGl0eVByb29mXSBvYmplY3QsIHRoZXkgbXVzdCBjaGVjayBpdHNcbiAgICAgKiB2ZXJhY2l0eSBieSBjYWxsaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widmVyaWZ5UHJvb2ZcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9pbXBvcnRfa2V5XCI6IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBhbiBlcGhlbWVyYWwga2V5IHRoYXQgYSBjbGllbnQgY2FuIHVzZSBmb3Iga2V5LWltcG9ydCBlbmNyeXB0aW9uLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImNyZWF0ZUtleUltcG9ydEtleVwiXTtcbiAgICAvKipcbiAgICAgKiBJbXBvcnQgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICAgKlxuICAgICAqIFNlY3VyZWx5IGltcG9ydHMgYW4gZXhpc3Rpbmcga2V5IHVzaW5nIGEgcHJldmlvdXNseSBnZW5lcmF0ZWQga2V5LWltcG9ydCBrZXkuXG4gICAgICovXG4gICAgcHV0OiBvcGVyYXRpb25zW1wiaW1wb3J0S2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vaW52aXRlXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbnZpdGUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBJbnZpdGUgVXNlclxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIGluIGFuIGV4aXN0aW5nIG9yZyBhbmQgc2VuZHMgdGhhdCB1c2VyIGFuIGludml0ZSBlbWFpbC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiaW52aXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBLZXlzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgICAqXG4gICAgICogR2V0cyB0aGUgbGlzdCBvZiBvd25lZCBrZXlzIGluIGEgZ2l2ZW4gb3JnLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RLZXlzSW5PcmdcIl07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlS2V5XCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0va2V5cy97a2V5X2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgS2V5XG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImdldEtleUluT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBLZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEtleVxuICAgICAqXG4gICAgICogRGVsZXRlcyBhIGtleSBzcGVjaWZpZWQgYnkgaXRzIElELlxuICAgICAqIE9ubHkgdGhlIGtleSBvd25lciBhbmQgb3JnIG93bmVycyBhcmUgYWxsb3dlZCB0byBkZWxldGUga2V5cy5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVLZXlcIl07XG4gICAgLyoqXG4gICAgICogVXBkYXRlIEtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAgICpcbiAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBhIGtleS4gIFRoZSB1c2VyIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBrZXkgb3Igb3JnYW5pemF0aW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1cGRhdGVLZXlcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9rZXlzL3trZXlfaWR9L3JvbGVzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IEtleSBSb2xlc1xuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IEtleSBSb2xlc1xuICAgICAqXG4gICAgICogR2V0IGFsbCByb2xlcyB0aGUga2V5IGlzIGluXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibGlzdEtleVJvbGVzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3QgUGVuZGluZyBNRkEgUmVxdWVzdHNcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyLFxuICAgICAqIGkuZS4sIHRob3NlIGluIHdoaWNoIHRoZSBjdXJyZW50IHVzZXIgaXMgbGlzdGVkIGFzIGFuIGFwcHJvdmVyXG4gICAgICovXG4gICAgZ2V0OiBvcGVyYXRpb25zW1wibWZhTGlzdFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L21mYS97bWZhX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnkgaXRzIGlkLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcIm1mYUdldFwiXTtcbiAgICAvKipcbiAgICAgKiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgICAqXG4gICAgICogQXBwcm92ZSBvciByZWplY3QgcmVxdWVzdCBhZnRlciBsb2dnaW5nIGluIHdpdGggQ3ViZVNpZ25lci5cbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudGx5LWxvZ2dlZCB1c2VyIGFzIGFuIGFwcHJvdmVyXG4gICAgICogb2YgYSBwZW5kaW5nIE1GQSByZXF1ZXN0IG9mIHRoZSBbU3RhdHVzOjpSZXF1aXJlZEFwcHJvdmVyc10ga2luZC4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZlxuICAgICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgICAqIHJlc3VtZSB0aGUgb3JpZ2luYWwgSFRUUCByZXF1ZXN0LlxuICAgICAqXG4gICAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wibWZhVm90ZUNzXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm1mYUZpZG9Jbml0XCJdO1xuICAgIC8qKlxuICAgICAqIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAgICpcbiAgICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgYW4gYXBwcm92ZXIgdG8gYSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgICAqIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpcyBhcHByb3ZlZDtcbiAgICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlRmlkb0NvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vbWZhL3ttZmFfaWR9L3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICAgKlxuICAgICAqIElmIGFwcHJvdmluZywgYWRkcyB0aGUgY3VycmVudCB1c2VyIGFzIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieVxuICAgICAqIHByb3ZpZGluZyBUT1RQIGNvZGUuIElmIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgYXBwcm92ZXJzIGlzIHJlYWNoZWQsIHRoZSBNRkEgcmVxdWVzdCBpc1xuICAgICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBJZiByZWplY3RpbmcsIGltbWVkaWF0ZWx5IGRlbGV0ZXMgdGhlIHBlbmRpbmcgTUZBIHJlcXVlc3QuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJtZmFWb3RlVG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29hdXRoMi90d2l0dGVyXCI6IHtcbiAgICAvKipcbiAgICAgKiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gTWludCBhbiBPSURDIElEIHRva2VuIGZvciBUd2l0dGVyXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFjdHMgaWRlbnRpY2FsbHkgdG8gVHdpdHRlcidzIFtgb2F1dGgyL3Rva2VuYF0oaHR0cHM6Ly9kZXZlbG9wZXIudHdpdHRlci5jb20vZW4vZG9jcy9hdXRoZW50aWNhdGlvbi9hcGktcmVmZXJlbmNlL3Rva2VuKSBlbmRwb2ludCxcbiAgICAgKiBidXQgZXh0ZW5kcyB0aGUgb3V0cHV0IHdpdGggYW4gYGlkX3Rva2VuYC5cbiAgICAgKlxuICAgICAqIFRoaXMgYGlkX3Rva2VuYCBjYW4gdGhlbiBiZSB1c2VkIHdpdGggYW55IEN1YmVTaWduZXIgZW5kcG9pbnQgdGhhdCByZXF1aXJlcyBhbiBPSURDIHRva2VuLlxuICAgICAqXG4gICAgICogPiBbIUlNUE9SVEFOVF1cbiAgICAgKiA+IFRoaXMgZW5kcG9pbnQgd2lsbCBmYWlsIHVubGVzcyB0aGUgb3JnIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3R3aXR0ZXJgIGFuZCBjbGllbnQgSUQgYmVpbmcgdXNlZCBmb3IgVHdpdHRlci5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wib2F1dGgyVHdpdHRlclwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L29pZGNcIjoge1xuICAgIC8qKlxuICAgICAqIExvZ2luIHdpdGggT0lEQ1xuICAgICAqIEBkZXNjcmlwdGlvbiBMb2dpbiB3aXRoIE9JRENcbiAgICAgKlxuICAgICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHNpZ25lciBzZXNzaW9uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcIm9pZGNBdXRoXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgUm9sZXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlc1xuICAgICAqXG4gICAgICogUmV0cmlldmVzIGFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgUm9sZVxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyByb2xlIGluIGFuIG9yZ2FuaXphdGlvbi4gVW5sZXNzIHRoZSBsb2dnZWQtaW4gdXNlclxuICAgICAqIGlzIHRoZSBvd25lciwgdGhleSBhcmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgbmV3bHkgY3JlYXRlZCByb2xlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBHZXQgUm9sZVxuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgUm9sZVxuICAgICAqXG4gICAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJkZWxldGVSb2xlXCJdO1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBSb2xlXG4gICAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBSb2xlXG4gICAgICpcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgcm9sZSAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTplbmFibGVgIHNjb3BlKS5cbiAgICAgKiBVcGRhdGVzIHRoZSByb2xlJ3MgcG9saWNpZXMgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6cG9saWN5YCBzY29wZSkuXG4gICAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXBkYXRlUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9hZGRfa2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIEtleXNcbiAgICAgKlxuICAgICAqIEFkZHMgYSBsaXN0IG9mIGV4aXN0aW5nIGtleXMgdG8gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKi9cbiAgICBwdXQ6IG9wZXJhdGlvbnNbXCJhZGRLZXlzVG9Sb2xlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vcm9sZXMve3JvbGVfaWR9L2FkZF91c2VyL3t1c2VyX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogQWRkIFVzZXJcbiAgICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICAgKlxuICAgICAqIEFkZHMgYW4gZXhpc3RpbmcgdXNlciB0byBhbiBleGlzdGluZyByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIHB1dDogb3BlcmF0aW9uc1tcImFkZFVzZXJUb1JvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIEtleXNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBSb2xlIEtleXNcbiAgICAgKlxuICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGtleXMgaW4gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlS2V5c1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS9rZXlzL3trZXlfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgS2V5XG4gICAgICogQGRlc2NyaXB0aW9uIFJlbW92ZSBLZXlcbiAgICAgKlxuICAgICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGVcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVLZXlGcm9tUm9sZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90b2tlbnNcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICAgKlxuICAgICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYEdFVCAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFsbCBhY2Nlc3MgdG9rZW5zIGZvciBhIGdpdmVuIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJsaXN0Um9sZVRva2Vuc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgVG9rZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFjY2VzcyB0b2tlbiBmb3IgYSBnaXZlbiByb2xlICh0byBiZSB1c2VkIGFzIFwiQVBJIEtleVwiIGZvciBhbGwgc2lnbmluZyBhY3Rpb25zKS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJjcmVhdGVSb2xlVG9rZW5cIl07XG4gICAgLyoqXG4gICAgICogUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIEFsbCBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAgICpcbiAgICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YCBpbnN0ZWFkXG4gICAgICpcbiAgICAgKiBSZXZva2VzIGFsbCBhY2Nlc3MgdG9rZW5zIGFzc29jaWF0ZWQgd2l0aCBhIHJvbGUuXG4gICAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlQWxsUm9sZVRva2Vuc1wiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS90b2tlbnMve3Nlc3Npb25faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgVG9rZW4gKERlcHJlY2F0ZWQpXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgICAqXG4gICAgICogKipEZXByZWNhdGVkKio6IFVzZSBgREVMRVRFIC9vcmcve29yZ19pZH0vc2Vzc2lvbi97c2Vzc2lvbl9pZH1gXG4gICAgICpcbiAgICAgKiBSZXZva2VzIGFuIGFjY2VzcyB0b2tlbiBhc3NvY2lhdGVkIHdpdGggYSByb2xlLlxuICAgICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVJvbGVUb2tlblwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3JvbGVzL3tyb2xlX2lkfS91c2Vyc1wiOiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBSb2xlIFVzZXJzLlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgVXNlcnMuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB1c2VycyB3aG8gaGF2ZSBhY2Nlc3MgdG8gYSByb2xlLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RSb2xlVXNlcnNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9yb2xlcy97cm9sZV9pZH0vdXNlcnMve3VzZXJfaWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgVXNlclxuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgICAqXG4gICAgICogUmVtb3ZlcyBhbiBleGlzdGluZyB1c2VyIGZyb20gYW4gZXhpc3Rpbmcgcm9sZS5cbiAgICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZW1vdmVVc2VyRnJvbVJvbGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHNlc3Npb25zXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3Qgc2Vzc2lvbnNcbiAgICAgKlxuICAgICAqIElmIG5vIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXR1cm5lZFxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RTZXNzaW9uc1wiXTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHVzZXIgc2Vzc2lvbiwgc2lsZW50bHkgdHJ1bmNhdGluZyByZXF1ZXN0ZWQgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZXNcbiAgICAgKiB0byBiZSBhdCBtb3N0IHJlcXVlc3RvcidzIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWUsIHJlc3BlY3RpdmVseS5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlU2Vzc2lvblwiXTtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBleGlzdGluZyBzZXNzaW9ucywgcHJldmVudGluZyB0aGVtIGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWQuXG4gICAgICogSWYgbm8gcXVlcnkgcGFyYW1zIGFyZSBwcm92aWRlZCwgdGhlIGN1cnJlbnQgc2Vzc2lvbiBpcyByZXZva2VkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInJldm9rZVNlc3Npb25zXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc2Vzc2lvbi9zZWxmXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZXZva2UgY3VycmVudCBzZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBjdXJyZW50IHNlc3Npb25cbiAgICAgKlxuICAgICAqIEltbWVkaWF0ZWx5IHJldm9rZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbiwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIHVzZWQgb3IgcmVmcmVzaGVkXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1wicmV2b2tlQ3VycmVudFNlc3Npb25cIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfVwiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJnZXRTZXNzaW9uXCJdO1xuICAgIC8qKlxuICAgICAqIFJldm9rZSBhIHNlc3Npb25cbiAgICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGEgc2Vzc2lvblxuICAgICAqXG4gICAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBhbiBleGlzdGluZyBzZXNzaW9uLCBwcmV2ZW50aW5nIGl0IGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWRcbiAgICAgKi9cbiAgICBkZWxldGU6IG9wZXJhdGlvbnNbXCJyZXZva2VTZXNzaW9uXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vc29sYW5hL3NpZ24ve3B1YmtleX1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTb2xhbmEgTWVzc2FnZVxuICAgICAqXG4gICAgICogU2lnbnMgYSBTb2xhbmEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgICAqIFRoaXMgaXMgYSBwcmUtcmVsZWFzZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJzb2xhbmFTaWduXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdG9rZW4va2V5c1wiOiB7XG4gICAgLyoqXG4gICAgICogR2V0IFRva2VuLUFjY2Vzc2libGUgS2V5c1xuICAgICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGtleXMgdGhhdCB0aGUgcm9sZSB0b2tlbiBjYW4gYWNjZXNzLlxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RUb2tlbktleXNcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lXCI6IHtcbiAgICAvKipcbiAgICAgKiBVc2VyIEluZm9cbiAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBJbmZvXG4gICAgICpcbiAgICAgKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgKi9cbiAgICBnZXQ6IG9wZXJhdGlvbnNbXCJhYm91dE1lXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9leHBvcnRcIjoge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb3V0c3RhbmRpbmcgdXNlci1leHBvcnQgcmVxdWVzdHNcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRMaXN0XCJdO1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKlxuICAgICAqIFRoaXMgc3RhcnRzIGEgZGVsYXkgKHdob3NlIGxlbmd0aCBpcyBkZXRlcm1pbmVkIGJ5IE9yZy13aWRlIHNldHRpbmdzKVxuICAgICAqIGJlZm9yZSBleHBvcnQgY2FuIGJlIGNvbXBsZXRlZCwgYW5kIHJldHVybnMgYSB0aWNrZXQgdGhhdCBjYW4gYmUgdXNlZFxuICAgICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAgICpcbiAgICAgKiBPbmx5IG9uZSB1c2VyLWV4cG9ydCByZXF1ZXN0IGNhbiBiZSBhY3RpdmUgZm9yIGEgZ2l2ZW4ga2V5LiBJZiB0aGVyZVxuICAgICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICAgKiBjcmVhdGUgYSBuZXcgcmVxdWVzdCwgZmlyc3QgZGVsZXRlIHRoZSBleGlzdGluZyBvbmUuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVzZXJFeHBvcnRJbml0XCJdO1xuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckV4cG9ydERlbGV0ZVwiXTtcbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGUgYSB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAgICpcbiAgICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICAgKiB0aGUgYHVzZXJfZXhwb3J0X2luaXRgIEFQSSwgYW5kIG9ubHkgd2l0aGluIHRoZSBzdWJzZXF1ZW50IGV4cG9ydCB3aW5kb3dcbiAgICAgKiAoaS5lLiwgYWZ0ZXIgdGhlIGV4cG9ydCBkZWxheSBoYXMgcGFzc2VkIGFuZCBiZWZvcmUgdGhlIHJlcXVlc3QgaGFzIGV4cGlyZWQpLlxuICAgICAqXG4gICAgICogVG8gY2hlY2sgb24gdGhlIHN0YXR1cyBvZiBhbiBleHBvcnQgcmVxdWVzdCwgc2VlIHRoZSBgdXNlcl9leHBvcnRfbGlzdGAgQVBJLlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1widXNlckV4cG9ydENvbXBsZXRlXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS9maWRvXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlZ2lzdGVyRmlkb0luaXRcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAgICovXG4gICAgcGF0Y2g6IG9wZXJhdGlvbnNbXCJ1c2VyUmVnaXN0ZXJGaWRvQ29tcGxldGVcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2VyL21lL2ZpZG8ve2ZpZG9faWR9XCI6IHtcbiAgICAvKipcbiAgICAgKiBEZWxldGUgRklETyBrZXlcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIEZJRE8ga2V5XG4gICAgICpcbiAgICAgKiBEZWxldGVzIGEgRklETyBrZXkgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIHRoZSBrZXkgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcInVzZXJEZWxldGVGaWRvXCJdO1xuICB9O1xuICBcIi92MC9vcmcve29yZ19pZH0vdXNlci9tZS90b3RwXCI6IHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRPVFAgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSB0aGF0IHRoZSBuZXcgVE9UUFxuICAgICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICAgKlxuICAgICAqIFRoaXMgb3BlcmF0aW9uIGlzIGFsbG93ZWQgaWYgRUlUSEVSXG4gICAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICAgKiBvdGhlcndpc2UsIE1GQSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1widXNlclJlc2V0VG90cEluaXRcIl07XG4gICAgLyoqXG4gICAgICogRGVsZXRlIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFRPVFBcbiAgICAgKlxuICAgICAqIERlbGV0ZXMgVE9UUCBmcm9tIHRoZSB1c2VyJ3MgYWNjb3VudCAoaWYgVE9UUCBpcyBub3QgdGhlIHNvbGUgTUZBIGZhY3RvcikuIE1GQSBpcyBhbHdheXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlOiBvcGVyYXRpb25zW1widXNlckRlbGV0ZVRvdHBcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAgICogY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCBtZXRob2Qgb2YgdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInVzZXJSZXNldFRvdHBDb21wbGV0ZVwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlc2NyaXB0aW9uIFZlcmlmeSBUT1RQXG4gICAgICpcbiAgICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgICAqIEVycm9ycyB3aXRoIDQwMyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBub3Qgc2V0IHVwIFRPVFAgb3IgdGhlIGNvZGUgZmFpbHMgdmVyaWZpY2F0aW9uLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJ1c2VyVmVyaWZ5VG90cFwiXTtcbiAgfTtcbiAgXCIvdjAvb3JnL3tvcmdfaWR9L3VzZXJzXCI6IHtcbiAgICAvKipcbiAgICAgKiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0IHVzZXJzIGluIG9yZ2FuaXphdGlvblxuICAgICAqL1xuICAgIGdldDogb3BlcmF0aW9uc1tcImxpc3RVc2Vyc0luT3JnXCJdO1xuICAgIC8qKlxuICAgICAqIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICAgKi9cbiAgICBwb3N0OiBvcGVyYXRpb25zW1wiY3JlYXRlT2lkY1VzZXJcIl07XG4gIH07XG4gIFwiL3YwL29yZy97b3JnX2lkfS91c2Vycy9vaWRjXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgICAqL1xuICAgIGRlbGV0ZTogb3BlcmF0aW9uc1tcImRlbGV0ZU9pZGNVc2VyXCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL2ZpZG9cIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKlxuICAgICAqIEdlbmVyYXRlcyBhIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgb3duZXJzaGlwIG9mIGEga2V5XG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0luaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgICAqXG4gICAgICogQWNjZXB0cyB0aGUgcmVzcG9uc2UgdG8gdGhlIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgdG8gdGhpcyBlbmRwb2ludC5cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInJlZ2lzdGVyRmlkb0NvbXBsZXRlTGVnYWN5XCJdO1xuICB9O1xuICBcIi92MC91c2VyL21lL3RvdHBcIjoge1xuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgICAqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICAgKiB3YXMgc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gYW4gYXV0aGVudGljYXRvciBhcHAuXG4gICAgICpcbiAgICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgICAqIC0gdGhlIHVzZXIgYWNjb3VudCBpcyBub3QgeWV0IGluaXRpYWxpemVkIGFuZCBubyBUT1RQIGlzIGFscmVhZHkgc2V0LCBPUlxuICAgICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInJlc2V0VG90cEluaXRMZWdhY3lcIl07XG4gICAgLyoqXG4gICAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgICAqXG4gICAgICogQ2hlY2tzIGlmIHRoZSByZXNwb25zZSBjb250YWlucyB0aGUgY29ycmVjdCBUT1RQIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAgICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHBhdGNoOiBvcGVyYXRpb25zW1wicmVzZXRUb3RwQ29tcGxldGVMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YwL3VzZXIvbWUvdG90cC92ZXJpZnlcIjoge1xuICAgIC8qKlxuICAgICAqIFZlcmlmeSBUT1RQXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICAgKlxuICAgICAqIENoZWNrcyBpZiBhIGdpdmVuIGNvZGUgbWF0Y2hlcyB0aGUgY3VycmVudCBUT1RQIGNvZGUgZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInZlcmlmeVRvdHBMZWdhY3lcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS9ibG9iL3NpZ24ve2tleV9pZH1cIjoge1xuICAgIC8qKlxuICAgICAqIFNpZ24gUmF3IEJsb2JcbiAgICAgKiBAZGVzY3JpcHRpb24gU2lnbiBSYXcgQmxvYlxuICAgICAqXG4gICAgICogU2lnbnMgYW4gYXJiaXRyYXJ5IGJsb2Igd2l0aCBhIGdpdmVuIGtleS5cbiAgICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICAgKlxuICAgICAqIC0gRUNEU0Egc2lnbmF0dXJlcyBhcmUgc2VyaWFsaXplZCBhcyBiaWctZW5kaWFuIHIgYW5kIHMgcGx1cyByZWNvdmVyeS1pZFxuICAgICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgICAqXG4gICAgICogLSBFZERTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGluIHRoZSBzdGFuZGFyZCBmb3JtYXQuXG4gICAgICpcbiAgICAgKiAtIEJMUyBzaWduYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoZSBibG9iLXNpZ24gZW5kcG9pbnQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImJsb2JTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vY3ViZTNzaWduZXIvaGVhcnRiZWF0XCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWNvcmQgaGVhcnRiZWF0XG4gICAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICAgKlxuICAgICAqIFRoaXMgZW5kcG9pbnQgaXMgY2FsbGVkIGJ5IHRoZSBjdWJlM3NpZ25lciBwcm94eSB0byByZWNvcmQgdmFyaW91cyBtZXRyaWNzIHRvIENsb3VkV2F0Y2guXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImN1YmUzc2lnbmVySGVhcnRiZWF0XCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMS9zaWduL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgICAqXG4gICAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgICAqIFJldHVybnMgYW4gUkxQLWVuY29kZWQgdHJhbnNhY3Rpb24gd2l0aCBFSVAtMTU1IHNpZ25hdHVyZS5cbiAgICAgKlxuICAgICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHBvc3Q6IG9wZXJhdGlvbnNbXCJldGgxU2lnblwiXTtcbiAgfTtcbiAgXCIvdjEvb3JnL3tvcmdfaWR9L2V0aDIvc2lnbi97cHVia2V5fVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBWYWxpZGF0b3IgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAgICpcbiAgICAgKiBTaWducyBhbiBldGgyIHZhbGlkYXRvciByZXF1ZXN0IHdpdGggYSBnaXZlbiBCTFMga2V5LlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcImV0aDJTaWduXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi9zdGFrZVwiOiB7XG4gICAgLyoqXG4gICAgICogU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgICAqXG4gICAgICogU2lnbnMgYSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdpdGggYSBgdmFsaWRhdG9yX2tleWAuIElmIGB2YWxpZGF0b3Jfa2V5YCBpcyBzZXQgdG8gYSBwcmVnZW5lcmF0ZWQga2V5LCB3ZSB1c2UgdGhlXG4gICAgICogcHJvdmlkZWQgdmFsaWRhdG9yIGtleS4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhIG5ldyBCTFMga2V5LlxuICAgICAqXG4gICAgICogV2hlbiB1c2luZyBhIHByZWdlbmVyYXRlZCBrZXksIHRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZVxuICAgICAqIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInN0YWtlXCJdO1xuICB9O1xuICBcIi92MS9vcmcve29yZ19pZH0vZXRoMi91bnN0YWtlL3twdWJrZXl9XCI6IHtcbiAgICAvKipcbiAgICAgKiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqIEBkZXNjcmlwdGlvbiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgICAqXG4gICAgICogSGFuZGxlIHVuc3Rha2luZyByZXF1ZXN0LCBwcm9kdWNpbmcgYSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZVxuICAgICAqIHRoYXQgY2FuIGJlIHBvc3RlZCBkaXJlY3RseSB0byB0aGUgQmVhY29uIGNoYWluLlxuICAgICAqXG4gICAgICogVGhlIGtleSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcm9sZSBhbmQgb3JnYW5pemF0aW9uIG9uIHdob3NlIGJlaGFsZiB0aGlzIGFjdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcG9zdDogb3BlcmF0aW9uc1tcInVuc3Rha2VcIl07XG4gIH07XG4gIFwiL3YxL29yZy97b3JnX2lkfS90b2tlbi9yZWZyZXNoXCI6IHtcbiAgICAvKipcbiAgICAgKiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZnJlc2ggU2lnbmVyIFNlc3Npb25cbiAgICAgKi9cbiAgICBwYXRjaDogb3BlcmF0aW9uc1tcInNpZ25lclNlc3Npb25SZWZyZXNoXCJdO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSB3ZWJob29rcyA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IGludGVyZmFjZSBjb21wb25lbnRzIHtcbiAgc2NoZW1hczoge1xuICAgIEFjY2VwdGVkUmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXSAmIFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGlmZmVyZW50IHJlc3BvbnNlcyB3ZSByZXR1cm4gZm9yIHN0YXR1cyBjb2RlIFwiMjAyIEFjY2VwdGVkXCIuXG4gICAgICpcbiAgICAgKiBFdmVuIHRob3VnaCBcIjIwMiBBY2NlcHRlZFwiIGlzIGEgc3VjY2Vzc2Z1bCByZXNwb25zZSwgd2UgcmVwcmVzZW50XG4gICAgICogaXQgYXMgYSBSdXN0IGVycm9yIGJlY2F1c2UgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIGhhdmUgcm91dGUgaGFuZGxlcnNcbiAgICAgKiByZXR1cm4gYFJlc3VsdDxULCBTaWduZXJFcnJvcj5gIHdoZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiB0aGVcbiAgICAgKiByZXNwb25zZSBmb3IgdGhlIHN0YXR1cyBjb2RlIFwiMjAwIE9rXCIuXG4gICAgICovXG4gICAgQWNjZXB0ZWRWYWx1ZToge1xuICAgICAgTWZhUmVxdWlyZWQ6IHtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcmVxdWVzdCBpZCAqL1xuICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAvKiogQGRlc2NyaXB0aW9uIE9yZ2FuaXphdGlvbiBpZCAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgc2Vzc2lvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBBY2NlcHRlZFZhbHVlQ29kZTogXCJNZmFSZXF1aXJlZFwiO1xuICAgIEFkZEtleXNUb1JvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGxpc3Qgb2Yga2V5cyB0byBhZGQgdG8gYSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwiS2V5IzYzMDIzYTI3LTFlNzAtNDMwYS1iMjkzLWZmYmM5ZDZjNDQ4NFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGtleV9pZHM6IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcG9saWNpZXMgdG8gYXBwbHkgZm9yIGVhY2gga2V5XG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IHtcbiAgICAgICAqICAgICAgICAgXCJSZXF1aXJlZEFwcHJvdmVyc1wiOiB7XG4gICAgICAgKiAgICAgICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgICAgIH1cbiAgICAgICAqICAgICAgIH0sXG4gICAgICAgKiAgICAgICBcInJlc3RyaWN0ZWRfb3BlcmF0aW9uc1wiOiBbXG4gICAgICAgKiAgICAgICAgIFwiRXRoMVNpZ25cIixcbiAgICAgICAqICAgICAgICAgXCJCbG9iU2lnblwiXG4gICAgICAgKiAgICAgICBdXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlciBlbWFpbFxuICAgICAgICogQGV4YW1wbGUgYWxpY2VAZXhhbXBsZS5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIGlkZW50aXR5OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbG9naW4gTUZBIHBvbGljeSAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCB1c2VyIGZ1bGwgbmFtZVxuICAgICAgICogQGV4YW1wbGUgQWxpY2UgV29uZGVybGFuZFxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHJvbGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWVtYmVyUm9sZVwiXTtcbiAgICB9O1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZiAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQXBwcm92YWxJbmZvOiB7XG4gICAgICB0aW1lc3RhbXA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXZWJBdXRobiBSZWx5aW5nIFBhcnRpZXMgbWF5IHVzZSBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlIHRvIHNwZWNpZnlcbiAgICAgKiB0aGVpciBwcmVmZXJlbmNlIHJlZ2FyZGluZyBhdHRlc3RhdGlvbiBjb252ZXlhbmNlIGR1cmluZyBjcmVkZW50aWFsXG4gICAgICogZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNlbnVtZGVmLWF0dGVzdGF0aW9uY29udmV5YW5jZXByZWZlcmVuY2VcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6IFwibm9uZVwiIHwgXCJpbmRpcmVjdFwiIHwgXCJkaXJlY3RcIiB8IFwiZW50ZXJwcmlzZVwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGF0YSByZXF1aXJlZCBmb3IgYm90aCBgYXV0aGVudGljYXRlYCBhbmQgYHJlZnJlc2hgLiAqL1xuICAgIEF1dGhEYXRhOiB7XG4gICAgICAvKiogRm9ybWF0OiBpbnQzMiAqL1xuICAgICAgZXBvY2hfbnVtOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICBvdGhlcl90b2tlbjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlcHJlc2VudHMgdGhlIGFzc2VydGlvbiByZXNwb25zZSB1c2VkIGJ5IGNsaWVudHMgd2hlbiBhdHRlbXB0aW5nIHRvIGxvZyBpbiB3aXRoIGEga25vd24gY3JlZGVudGlhbFxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNhdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2VcbiAgICAgKi9cbiAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRhaW5zIHRoZSBzdGFuZGFyZCBDVEFQMiBhdXRoZW50aWNhdG9yIGRhdGEuIE11c3QgYmUgYSB2YWxpZCBbYEF1dGhlbnRpY2F0b3JEYXRhYF0uXG4gICAgICAgKiBUaGlzIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGhvdyBrZXkgd2FzIGludm9rZWQuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3Jhc3NlcnRpb25yZXNwb25zZS1hdXRoZW50aWNhdG9yZGF0YVxuICAgICAgICovXG4gICAgICBhdXRoZW50aWNhdG9yRGF0YTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udGFpbnMgVVRGOCBlbmNvZGVkIEpTT04gd2hpY2ggbXVzdCBiZSBhIHZhbGlkIFtgQ2xpZW50RGF0YWBdXG4gICAgICAgKiBUaGlzIGRhdGEgaXMgY29tYmluZWQgd2l0aCBgYXV0aGVudGljYXRvcl9kYXRhYCB0byBwcm9kdWNlIHRoZSBzaWduYXR1cmVcbiAgICAgICAqIG1lYW5pbmcgdGhlIGNsaWVudCBhdHRlc3RzIHRvIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGRhdGEuXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JyZXNwb25zZS1jbGllbnRkYXRhanNvblxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHNpZ25hdHVyZSBvZiB0aGUgY29uY2F0ZW5hdGVkIGBhdXRoZW50aWNhdG9yRGF0YSB8fCBoYXNoYCB3aGVyZVxuICAgICAgICogYGhhc2hgIGlzIHRoZSBTSEEyNTYgaGFzaCBvZiB0aGUgYGNsaWVudERhdGFKU09OYCBidWZmZXI6XG4gICAgICAgKlxuICAgICAgICogRmllbGQgRGVmaW5pdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2Utc2lnbmF0dXJlXG4gICAgICAgKiBTdGVwIDExIG9mIGBnZXRBc3NlcnRpb25gIHNwZWNpZmllcyB0aGUgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3NjdG4tb3AtZ2V0LWFzc2VydGlvblxuICAgICAgICogUmVxdWlyZW1lbnQgZm9yIFNIQS0yNTY6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNjb2xsZWN0ZWRjbGllbnRkYXRhLWhhc2gtb2YtdGhlLXNlcmlhbGl6ZWQtY2xpZW50LWRhdGFcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBbGxvd3MgdGhlIGF1dGhlbnRpY2F0b3IgdG8gb3B0aW9uYWxseSBkZWNsYXJlIHRoZSBjcmVkZW50aWFsIGlkZW50aWZpZXIgdGhleSB1c2VkLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1hdXRoZW50aWNhdG9yYXNzZXJ0aW9ucmVzcG9uc2UtdXNlcmhhbmRsZVxuICAgICAgICovXG4gICAgICB1c2VySGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGVudW1lcmF0aW9u4oCZcyB2YWx1ZXMgZGVzY3JpYmUgYXV0aGVudGljYXRvcnMnIGF0dGFjaG1lbnQgbW9kYWxpdGllcy5cbiAgICAgKiBSZWx5aW5nIFBhcnRpZXMgdXNlIHRoaXMgdG8gZXhwcmVzcyBhIHByZWZlcnJlZCBhdXRoZW50aWNhdG9yIGF0dGFjaG1lbnRcbiAgICAgKiBtb2RhbGl0eSB3aGVuIGNhbGxpbmcgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZSgpIHRvIGNyZWF0ZSBhIGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1hdXRoZW50aWNhdG9yYXR0YWNobWVudFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6IFwicGxhdGZvcm1cIiB8IFwiY3Jvc3MtcGxhdGZvcm1cIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlIGludGVyZmFjZSByZXByZXNlbnRzIHRoZSBhdXRoZW50aWNhdG9yJ3NcbiAgICAgKiByZXNwb25zZSB0byBhIGNsaWVudOKAmXMgcmVxdWVzdCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHB1YmxpYyBrZXlcbiAgICAgKiBjcmVkZW50aWFsLiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGNyZWRlbnRpYWwgdGhhdCBjYW4gYmVcbiAgICAgKiB1c2VkIHRvIGlkZW50aWZ5IGl0IGZvciBsYXRlciB1c2UsIGFuZCBtZXRhZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZVxuICAgICAqIFdlYkF1dGhuIFJlbHlpbmcgUGFydHkgdG8gYXNzZXNzIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGNyZWRlbnRpYWxcbiAgICAgKiBkdXJpbmcgcmVnaXN0cmF0aW9uLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2lmYWNlLWF1dGhlbnRpY2F0b3JhdHRlc3RhdGlvbnJlc3BvbnNlXG4gICAgICovXG4gICAgQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGF0dGVzdGF0aW9uIG9iamVjdCwgd2hpY2ggaXMgb3BhcXVlIHRvLCBhbmRcbiAgICAgICAqIGNyeXB0b2dyYXBoaWNhbGx5IHByb3RlY3RlZCBhZ2FpbnN0IHRhbXBlcmluZyBieSwgdGhlIGNsaWVudC4gVGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QgY29udGFpbnMgYm90aCBhdXRoZW50aWNhdG9yIGRhdGEgYW5kIGFuIGF0dGVzdGF0aW9uXG4gICAgICAgKiBzdGF0ZW1lbnQuIFRoZSBmb3JtZXIgY29udGFpbnMgdGhlIEFBR1VJRCwgYSB1bmlxdWUgY3JlZGVudGlhbCBJRCwgYW5kXG4gICAgICAgKiB0aGUgY3JlZGVudGlhbCBwdWJsaWMga2V5LiBUaGUgY29udGVudHMgb2YgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBhcmVcbiAgICAgICAqIGRldGVybWluZWQgYnkgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCBmb3JtYXQgdXNlZCBieSB0aGVcbiAgICAgICAqIGF1dGhlbnRpY2F0b3IuIEl0IGFsc28gY29udGFpbnMgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCB0aGVcbiAgICAgICAqIFJlbHlpbmcgUGFydHkncyBzZXJ2ZXIgcmVxdWlyZXMgdG8gdmFsaWRhdGUgdGhlIGF0dGVzdGF0aW9uIHN0YXRlbWVudCxcbiAgICAgICAqIGFzIHdlbGwgYXMgdG8gZGVjb2RlIGFuZCB2YWxpZGF0ZSB0aGUgYXV0aGVudGljYXRvciBkYXRhIGFsb25nIHdpdGggdGhlXG4gICAgICAgKiBKU09OLWNvbXBhdGlibGUgc2VyaWFsaXphdGlvbiBvZiBjbGllbnQgZGF0YS4gRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICAgICAgKiDCp+KArzYuNSBBdHRlc3RhdGlvbiwgwqfigK82LjUuNCBHZW5lcmF0aW5nIGFuIEF0dGVzdGF0aW9uIE9iamVjdCwgYW5kIEZpZ3VyZVxuICAgICAgICogNi5cbiAgICAgICAqL1xuICAgICAgYXR0ZXN0YXRpb25PYmplY3Q6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgYXR0cmlidXRlLCBpbmhlcml0ZWQgZnJvbSBBdXRoZW50aWNhdG9yUmVzcG9uc2UsIGNvbnRhaW5zIHRoZVxuICAgICAgICogSlNPTi1jb21wYXRpYmxlIHNlcmlhbGl6YXRpb24gb2YgY2xpZW50IGRhdGEgKHNlZSDCp+KArzYuNSBBdHRlc3RhdGlvbilcbiAgICAgICAqIHBhc3NlZCB0byB0aGUgYXV0aGVudGljYXRvciBieSB0aGUgY2xpZW50IGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoaXNcbiAgICAgICAqIGNyZWRlbnRpYWwuIFRoZSBleGFjdCBKU09OIHNlcmlhbGl6YXRpb24gTVVTVCBiZSBwcmVzZXJ2ZWQsIGFzIHRoZSBoYXNoXG4gICAgICAgKiBvZiB0aGUgc2VyaWFsaXplZCBjbGllbnQgZGF0YSBoYXMgYmVlbiBjb21wdXRlZCBvdmVyIGl0LlxuICAgICAgICovXG4gICAgICBjbGllbnREYXRhSlNPTjogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdlYkF1dGhuIFJlbHlpbmcgUGFydGllcyBtYXkgdXNlIHRoZSBBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWFcbiAgICAgKiBkaWN0aW9uYXJ5IHRvIHNwZWNpZnkgdGhlaXIgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZyBhdXRoZW50aWNhdG9yXG4gICAgICogYXR0cmlidXRlcy5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYVxuICAgICAqL1xuICAgIEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYToge1xuICAgICAgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JBdHRhY2htZW50XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFdlYkF1dGhuIExldmVsXG4gICAgICAgKiAxIGFuZCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgaXRzIG5hbWluZyByZXRhaW5zIHRoZSBkZXByZWNhdGVkXG4gICAgICAgKiDigJxyZXNpZGVudOKAnSB0ZXJtaW5vbG9neSBmb3IgZGlzY292ZXJhYmxlIGNyZWRlbnRpYWxzLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBzZXQgaXQgdG8gdHJ1ZSBpZiwgYW5kIG9ubHkgaWYsIHJlc2lkZW50S2V5IGlzIHNldCB0byByZXF1aXJlZC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLWF1dGhlbnRpY2F0b3JzZWxlY3Rpb25jcml0ZXJpYS1yZXF1aXJlcmVzaWRlbnRrZXlcbiAgICAgICAqL1xuICAgICAgcmVxdWlyZVJlc2lkZW50S2V5PzogYm9vbGVhbjtcbiAgICAgIHJlc2lkZW50S2V5PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZXNpZGVudEtleVJlcXVpcmVtZW50XCJdIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBdXRoZW50aWNhdG9ycyBtYXkgaW1wbGVtZW50IHZhcmlvdXMgdHJhbnNwb3J0cyBmb3IgY29tbXVuaWNhdGluZyB3aXRoXG4gICAgICogY2xpZW50cy4gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGhpbnRzIGFzIHRvIGhvdyBjbGllbnRzIG1pZ2h0IGNvbW11bmljYXRlXG4gICAgICogd2l0aCBhIHBhcnRpY3VsYXIgYXV0aGVudGljYXRvciBpbiBvcmRlciB0byBvYnRhaW4gYW4gYXNzZXJ0aW9uIGZvciBhXG4gICAgICogc3BlY2lmaWMgY3JlZGVudGlhbC4gTm90ZSB0aGF0IHRoZXNlIGhpbnRzIHJlcHJlc2VudCB0aGUgV2ViQXV0aG4gUmVseWluZ1xuICAgICAqIFBhcnR5J3MgYmVzdCBiZWxpZWYgYXMgdG8gaG93IGFuIGF1dGhlbnRpY2F0b3IgbWF5IGJlIHJlYWNoZWQuIEEgUmVseWluZ1xuICAgICAqIFBhcnR5IHdpbGwgdHlwaWNhbGx5IGxlYXJuIG9mIHRoZSBzdXBwb3J0ZWQgdHJhbnNwb3J0cyBmb3IgYSBwdWJsaWMga2V5XG4gICAgICogY3JlZGVudGlhbCB2aWEgZ2V0VHJhbnNwb3J0cygpLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtYXV0aGVudGljYXRvcnRyYW5zcG9ydFxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgQXV0aGVudGljYXRvclRyYW5zcG9ydDogXCJ1c2JcIiB8IFwibmZjXCIgfCBcImJsZVwiIHwgXCJpbnRlcm5hbFwiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gUmVxdWVzdCB0byBzaWduIGFuIEF2YWxhbmNoZSB0cmFuc2FjdGlvbnMgKi9cbiAgICBBdmFTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICAgICAqXG4gICAgICAgKiBFeGFtcGxlczpcbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvYWRkX3Blcm1pc3Npb25sZXNzX3ZhbGlkYXRvci5ycyNMMTQpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFN1Ym5ldFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfc3VibmV0X3ZhbGlkYXRvci5ycyNMMjkpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkFkZFZhbGlkYXRvclwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9hZGRfdmFsaWRhdG9yLnJzI0wxMikgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiQ3JlYXRlQ2hhaW5cIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX2NoYWluLnJzI0w4KSB9fVxuICAgICAgICogLSB7XCJQXCI6IHsgXCJDcmVhdGVTdWJuZXRcIjogW1R4SnNvbl0oaHR0cHM6Ly9naXRodWIuY29tL2F2YS1sYWJzL2F2YWxhbmNoZS1ycy9ibG9iL2F2YWxhbmNoZS10eXBlcy12MC4xLjMvY3JhdGVzL2F2YWxhbmNoZS10eXBlcy9zcmMvcGxhdGZvcm12bS90eHMvY3JlYXRlX3N1Ym5ldC5ycyNMOCkgfX1cbiAgICAgICAqIC0ge1wiUFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL3BsYXRmb3Jtdm0vdHhzL2V4cG9ydC5ycyNMMTIpIH19XG4gICAgICAgKiAtIHtcIlBcIjogeyBcIkltcG9ydFwiOiBbVHhKc29uXShodHRwczovL2dpdGh1Yi5jb20vYXZhLWxhYnMvYXZhbGFuY2hlLXJzL2Jsb2IvYXZhbGFuY2hlLXR5cGVzLXYwLjEuMy9jcmF0ZXMvYXZhbGFuY2hlLXR5cGVzL3NyYy9wbGF0Zm9ybXZtL3R4cy9pbXBvcnQucnMjTDEyKSB9fVxuICAgICAgICogLSB7XCJYXCI6IHsgXCJCYXNlXCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvbW9kLnJzI0wyMSkgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiRXhwb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvZXhwb3J0LnJzI0wxNikgfX1cbiAgICAgICAqIC0ge1wiWFwiOiB7IFwiSW1wb3J0XCI6IFtUeEpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmEtbGFicy9hdmFsYW5jaGUtcnMvYmxvYi9hdmFsYW5jaGUtdHlwZXMtdjAuMS4zL2NyYXRlcy9hdmFsYW5jaGUtdHlwZXMvc3JjL2F2bS90eHMvaW1wb3J0LnJzI0wxNCkgfX1cbiAgICAgICAqL1xuICAgICAgdHg6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICB9O1xuICAgIEF2YVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGEgemVyb2l6aW5nIDMyLWJ5dGUgZml4ZWQtc2l6ZSBhcnJheSAqL1xuICAgIEIzMjogc3RyaW5nO1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEJhZEdhdGV3YXlFcnJvckNvZGU6IFwiT0F1dGhQcm92aWRlckVycm9yXCI7XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQmFkUmVxdWVzdEVycm9yQ29kZTpcbiAgICAgIHwgXCJHZW5lcmljQmFkUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEJvZHlcIlxuICAgICAgfCBcIlRva2VuUmVxdWVzdEVycm9yXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUmVjZWlwdFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVBvbGljeUNvdW50XCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5TnVtQXV0aEZhY3RvcnNcIlxuICAgICAgfCBcIkludmFsaWRNZmFQb2xpY3lOdW1BbGxvd2VkQXBwcm92ZXJzXCJcbiAgICAgIHwgXCJJbnZhbGlkTWZhUG9saWN5UmVkdW5kYW50UnVsZVwiXG4gICAgICB8IFwiSW52YWxpZENyZWF0ZUtleUNvdW50XCJcbiAgICAgIHwgXCJPcmdJbnZpdGVFeGlzdGluZ1VzZXJcIlxuICAgICAgfCBcIk9yZ05hbWVUYWtlblwiXG4gICAgICB8IFwiUm9sZU5hbWVUYWtlblwiXG4gICAgICB8IFwiQWRkS2V5VG9Sb2xlQ291bnRUb29IaWdoXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5SWRcIlxuICAgICAgfCBcIkludmFsaWRLZXlNZXRhZGF0YUxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEtleU1ldGFkYXRhXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxJZFwiXG4gICAgICB8IFwiS2V5Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnREZXJpdmVkS2V5XCJcbiAgICAgIHwgXCJVc2VyRXhwb3J0UHVibGljS2V5SW52YWxpZFwiXG4gICAgICB8IFwiVXNlckV4cG9ydEluUHJvZ3Jlc3NcIlxuICAgICAgfCBcIlJvbGVOb3RGb3VuZFwiXG4gICAgICB8IFwiSW52YWxpZE1mYVJlY2VpcHRPcmdJZE1pc3NpbmdcIlxuICAgICAgfCBcIkludmFsaWRNZmFSZWNlaXB0SW52YWxpZE9yZ0lkXCJcbiAgICAgIHwgXCJNZmFSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRLZXlUeXBlXCJcbiAgICAgIHwgXCJJbnZhbGlkS2V5TWF0ZXJpYWxcIlxuICAgICAgfCBcIkludmFsaWRIZXhWYWx1ZVwiXG4gICAgICB8IFwiSW52YWxpZEJhc2UzMlZhbHVlXCJcbiAgICAgIHwgXCJJbnZhbGlkQmFzZTU4VmFsdWVcIlxuICAgICAgfCBcIkludmFsaWRGb3JrVmVyc2lvbkxlbmd0aFwiXG4gICAgICB8IFwiSW52YWxpZEV0aEFkZHJlc3NcIlxuICAgICAgfCBcIkludmFsaWRTdGVsbGFyQWRkcmVzc1wiXG4gICAgICB8IFwiSW52YWxpZE9yZ05hbWVPcklkXCJcbiAgICAgIHwgXCJJbnZhbGlkU3Rha2VEZXBvc2l0XCJcbiAgICAgIHwgXCJJbnZhbGlkQmxvYlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU29sYW5hU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRFaXA3MTJTaWduUmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZEV2bVNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRXRoMlNpZ25SZXF1ZXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkRGVyaXZlS2V5UmVxdWVzdFwiXG4gICAgICB8IFwiSW52YWxpZFN0YWtpbmdBbW91bnRcIlxuICAgICAgfCBcIkN1c3RvbVN0YWtpbmdBbW91bnROb3RBbGxvd2VkRm9yV3JhcHBlckNvbnRyYWN0XCJcbiAgICAgIHwgXCJJbnZhbGlkVW5zdGFrZVJlcXVlc3RcIlxuICAgICAgfCBcIkludmFsaWRDcmVhdGVVc2VyUmVxdWVzdFwiXG4gICAgICB8IFwiVXNlckFscmVhZHlFeGlzdHNcIlxuICAgICAgfCBcIlVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiUG9saWN5UnVsZUtleU1pc21hdGNoXCJcbiAgICAgIHwgXCJFbXB0eVNjb3Blc1wiXG4gICAgICB8IFwiSW52YWxpZFNjb3Blc0ZvclJvbGVTZXNzaW9uXCJcbiAgICAgIHwgXCJJbnZhbGlkTGlmZXRpbWVcIlxuICAgICAgfCBcIk5vU2luZ2xlS2V5Rm9yVXNlclwiXG4gICAgICB8IFwiSW52YWxpZE9yZ1BvbGljeVJ1bGVcIlxuICAgICAgfCBcIlNvdXJjZUlwQWxsb3dsaXN0RW1wdHlcIlxuICAgICAgfCBcIkludmFsaWRPcmdQb2xpY3lSZXBlYXRlZFJ1bGVcIlxuICAgICAgfCBcIkF2YVNpZ25IYXNoRXJyb3JcIlxuICAgICAgfCBcIkF2YVNpZ25FcnJvclwiXG4gICAgICB8IFwiQnRjU2Vnd2l0SGFzaEVycm9yXCJcbiAgICAgIHwgXCJCdGNTaWduRXJyb3JcIlxuICAgICAgfCBcIkVpcDcxMlNpZ25FcnJvclwiXG4gICAgICB8IFwiSW52YWxpZE1lbWJlclJvbGVJblVzZXJBZGRcIlxuICAgICAgfCBcIlRoaXJkUGFydHlVc2VyQWxyZWFkeUV4aXN0c1wiXG4gICAgICB8IFwiVGhpcmRQYXJ0eVVzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiRGVsZXRlT2lkY1VzZXJFcnJvclwiXG4gICAgICB8IFwiU2Vzc2lvblJvbGVNaXNtYXRjaFwiXG4gICAgICB8IFwiSW52YWxpZE9pZGNUb2tlblwiXG4gICAgICB8IFwiT2lkY0lzc3VlclVuc3VwcG9ydGVkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVyTm90QWxsb3dlZFwiXG4gICAgICB8IFwiT2lkY0lzc3Vlck5vQXBwbGljYWJsZUp3a1wiXG4gICAgICB8IFwiRmlkb0tleUFscmVhZHlSZWdpc3RlcmVkXCJcbiAgICAgIHwgXCJGaWRvS2V5U2lnbkNvdW50VG9vTG93XCJcbiAgICAgIHwgXCJGaWRvVmVyaWZpY2F0aW9uRmFpbGVkXCJcbiAgICAgIHwgXCJGaWRvQ2hhbGxlbmdlTWZhTWlzbWF0Y2hcIlxuICAgICAgfCBcIlVuc3VwcG9ydGVkTGVnYWN5Q29nbml0b1Nlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRJZGVudGl0eVByb29mXCJcbiAgICAgIHwgXCJQYWdpbmF0aW9uRGF0YUV4cGlyZWRcIlxuICAgICAgfCBcIkV4aXN0aW5nS2V5c1Zpb2xhdGVFeGNsdXNpdmVLZXlBY2Nlc3NcIlxuICAgICAgfCBcIkV4cG9ydERlbGF5VG9vU2hvcnRcIlxuICAgICAgfCBcIkV4cG9ydFdpbmRvd1Rvb0xvbmdcIlxuICAgICAgfCBcIkludmFsaWRUb3RwRmFpbHVyZUxpbWl0XCJcbiAgICAgIHwgXCJJbnZhbGlkRWlwMTkxU2lnblJlcXVlc3RcIlxuICAgICAgfCBcIkNhbm5vdFJlc2VuZFVzZXJJbnZpdGF0aW9uXCI7XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJtZXNzYWdlX2Jhc2U2NFwiOiBcIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhveE1qTTBOVFlLXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgQmxvYlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYmxvYiB0byBzaWduLCBlbmNvZGVkIGFzIGEgYmFzZTY0IHN0cmluZy5cbiAgICAgICAqXG4gICAgICAgKiBOb3RlIHRoYXQgY2VydGFpbiBzaWduaW5nIGtleXMgaW1wb3NlIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIG9uIHRoZSBjb250ZW50cyBvZlxuICAgICAgICogdGhlIG1lc3NhZ2UuIEZvciBleGFtcGxlLCBTZWNwMjU2azEga2V5cyByZXF1aXJlIHRoYXQgdGhlIG1lc3NhZ2UgaXMgMzIgYnl0ZXMgbG9uZy5cbiAgICAgICAqL1xuICAgICAgbWVzc2FnZV9iYXNlNjQ6IHN0cmluZztcbiAgICB9O1xuICAgIEJsb2JTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgQnRjU2lnaGFzaFR5cGU6XG4gICAgICB8IFwiQWxsXCJcbiAgICAgIHwgXCJOb25lXCJcbiAgICAgIHwgXCJTaW5nbGVcIlxuICAgICAgfCBcIkFsbFBsdXNBbnlvbmVDYW5QYXlcIlxuICAgICAgfCBcIk5vbmVQbHVzQW55b25lQ2FuUGF5XCJcbiAgICAgIHwgXCJTaW5nbGVQbHVzQW55b25lQ2FuUGF5XCI7XG4gICAgQnRjU2lnblJlcXVlc3Q6IHtcbiAgICAgIHNpZ19raW5kOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25hdHVyZUtpbmRcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBiaXRjb2luIHRyYW5zYWN0aW9uIHRvIHNpZ24gKi9cbiAgICAgIHR4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICBCdGNTaWduUmVzcG9uc2U6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUgaW4gY29tcGFjdCBmb3JtYXQuXG4gICAgICAgKiBAZXhhbXBsZSAweDQ1NGFlZjI3YzIxZGY3ZGQ4ZjUzN2RjODY5ZjRjZDY1Mjg2Y2UyMzlhNTJkMzY0NzBmNGQ4NWJlODVhODkxYjAyNzg5ZTVmZmQ4NTYwYjMyYTk4MTEwZTVkMDA5NjgwMmU0YzE0MTQ1Y2Y2YzQ0ZjEwYTc2OGM4Nzc1NWVhYTQ4MDBcbiAgICAgICAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBCdGNTaWduYXR1cmVLaW5kOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFNlZ3JlZ2F0ZWQgV2l0bmVzcyAqL1xuICAgICAgU2Vnd2l0OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVHJhbnNhY3Rpb24gaW5wdXQgaW5kZXhcbiAgICAgICAgICogQGV4YW1wbGUgMFxuICAgICAgICAgKi9cbiAgICAgICAgaW5wdXRfaW5kZXg6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBTY3JpcHRcbiAgICAgICAgICogQGV4YW1wbGUgMHg3NmE5MTQ3OTA5MTk3MjE4NmM0NDllYjFkZWQyMmI3OGU0MGQwMDliZGYwMDg5ODhhY1xuICAgICAgICAgKi9cbiAgICAgICAgc2NyaXB0X2NvZGU6IHN0cmluZztcbiAgICAgICAgc2lnaGFzaF90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ2hhc2hUeXBlXCJdO1xuICAgICAgICAvKipcbiAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gQW1vdW50IGluIHNhdG9zaGlzXG4gICAgICAgICAqIEBleGFtcGxlIDEwMDAwMDBcbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNjcmliZXMgaG93IHRvIGRlcml2ZSBhIFdlYkF1dGhuIGNoYWxsZW5nZSB2YWx1ZS4gKi9cbiAgICBDaGFsbGVuZ2VQaWVjZXM6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgYmFzZTY0dXJsIGVuY29kaW5nIG9mIFVURjggSlNPTi4gVGhlIGRhdGEgaW4gdGhhdCBKU09OIGlzIGVuZHBvaW50IHNwZWNpZmljLCBhbmQgZGVzY3JpYmVzIHdoYXQgdGhpcyBGSURPIGNoYWxsZW5nZSB3aWxsIGJlIHVzZWQgZm9yLlxuICAgICAgICpcbiAgICAgICAqIENsaWVudHMgY2FuIHVzZSBgcHJlaW1hZ2VgIGFsb25nIHdpdGggYHJhbmRvbV9zZWVkYCB0byByZWNvbnN0cnVjdCB0aGUgY2hhbGxlbmdlIGxpa2Ugc286XG4gICAgICAgKlxuICAgICAgICogYGNoYWxsZW5nZSA9IEhNQUMtU0hBMjU2KGtleT1yYW5kb21fc2VlZCwgbWVzc2FnZT1wcmVpbWFnZSlgXG4gICAgICAgKi9cbiAgICAgIHByZWltYWdlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmFuZG9tIHNlZWQgdGhhdCBwcmV2ZW50cyByZXBsYXkgYXR0YWNrcyAqL1xuICAgICAgcmFuZG9tX3NlZWQ6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIGluZm9ybWF0aW9uIHNlbnQgdG8gdGhlIGNsaWVudC5cbiAgICAgKiBUaGlzIHN0cnVjdCB3b3JrcyBpbiB0YW5kZW0gd2l0aCBpdHMgc2VydmVyLXNpZGUgY291bnRlcnBhcnQgW2BTZXNzaW9uRGF0YWBdLlxuICAgICAqL1xuICAgIENsaWVudFNlc3Npb25JbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgYXV0aG9yaXphdGlvbi4gKi9cbiAgICAgIGF1dGhfdG9rZW46IHN0cmluZztcbiAgICAgIGF1dGhfdG9rZW5fZXhwOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFcG9jaCBhdCB3aGljaCB0aGUgdG9rZW4gd2FzIGxhc3QgcmVmcmVzaGVkXG4gICAgICAgKi9cbiAgICAgIGVwb2NoOiBudW1iZXI7XG4gICAgICBlcG9jaF90b2tlbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCMzJcIl07XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VuIHRvIHVzZSBmb3IgcmVmcmVzaGluZyB0aGUgYChhdXRoLCByZWZyZXNoKWAgdG9rZW4gcGFpciAqL1xuICAgICAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xuICAgICAgcmVmcmVzaF90b2tlbl9leHA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRCAqL1xuICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgQ29uZmlndXJlZE1mYTpcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIHR5cGU6IFwidG90cFwiO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEEgdW5pcXVlIGNyZWRlbnRpYWwgaWQgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGdpdmVuIHRvIHRoZSBrZXkgKi9cbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgICAgICAgdHlwZTogXCJmaWRvXCI7XG4gICAgICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gYXR0ZXN0YXRpb24gZG9jdW1lbnQgZnJvbSBhIHNlY3VyZSBlbmNsYXZlLCBpbmNsdWRpbmcgYW5cbiAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAqL1xuICAgICAgZW5jbGF2ZV9hdHRlc3RhdGlvbjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQW4gUlNBLVBTUy1TSEEyNTYgc2lnbmF0dXJlIG9uIHRoZSBwdWJsaWMga2V5IGFuZCBlbmNyeXB0ZWRcbiAgICAgICAqIHNlY3JldHMgYXR0ZXN0aW5nIHRvIHRoZWlyIGdlbmVyYXRpb24gaW5zaWRlIGEgc2VjdXJlIGVuY2xhdmUuXG4gICAgICAgKi9cbiAgICAgIGVuY2xhdmVfc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDcmVhdGVLZXlSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDaGFpbiBpZCBmb3Igd2hpY2ggdGhlIGtleSBpcyBhbGxvd2VkIHRvIHNpZ24gbWVzc2FnZXNcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIGtleXMgdG8gY3JlYXRlXG4gICAgICAgKiBAZXhhbXBsZSAxXG4gICAgICAgKi9cbiAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQWxsb3dzIHVzZXJzIHRvIHNwZWNpZnkgYSB1c2VyIG90aGVyIHRoYW4gdGhlbXNlbHZlcyB0byByZWNlaXZlIHRoZSBrZXlcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIG93bmVyPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpbmZvIGFib3V0IHRoZSBjcmVhdGVkIGtleXMgKi9cbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBjcmVhdGUgcm9sZSByZXF1ZXN0IGJvZHkgKi9cbiAgICBDcmVhdGVSb2xlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgcm9sZS5cbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3bHkgY3JlYXRlZCByb2xlIGluZm9ybWF0aW9uICovXG4gICAgQ3JlYXRlUm9sZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlLlxuICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBDcmVhdGVTZXNzaW9uUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgc2Vzc2lvbidzIHB1cnBvc2VcbiAgICAgICAqIEBleGFtcGxlIE1hbmFnZSBrZXlzIG9uIHNlcnZlciBmb28uYmFyXG4gICAgICAgKi9cbiAgICAgIHB1cnBvc2U6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xzIHdoYXQgY2FwYWJpbGl0aWVzIHRoaXMgc2Vzc2lvbiB3aWxsIGhhdmUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibWFuYWdlOmtleToqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIENyZWF0ZVRva2VuUmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBWYWxpZGF0b3IgU2lnbmluZ1xuICAgICAgICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyB3aGF0IGNhcGFiaWxpdGllcyB0aGlzIHNlc3Npb24gd2lsbCBoYXZlLiBCeSBkZWZhdWx0LCBpdCBoYXMgYWxsXG4gICAgICAgKiBzaWduaW5nIGNhcGFiaWxpdGllcywgaS5lLiwganVzdCB0aGUgJ3NpZ246Kicgc2NvcGUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwic2lnbjoqXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgc2NvcGVzPzogc3RyaW5nW10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNgIHRoYXQgYWxsb3dzIGNsaWVudHMgdG8gZGVyaXZlIHRoZSBXZWJBdXRobiBjaGFsbGVuZ2VcbiAgICAgKiBmcm9tIGEgc3RydWN0dXJlZCBwcmVpbWFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB3ZWJ1YXRobiBzaWduYXR1cmUgY2FuIG9ubHkgYmUgdXNlZCBmb3IgYSBzcGVjaWZpYyBwdXJwb3NlXG4gICAgICovXG4gICAgQ3JlYXRpb25PcHRpb25zV2l0aEhhc2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH07XG4gICAgQ3ViZVNpZ25lclVzZXJJbmZvOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgIGNvbmZpZ3VyZWRfbWZhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNvbmZpZ3VyZWRNZmFcIl1bXTtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2V0IG9uY2UgdGhlIHVzZXIgc3VjY2Vzc2Z1bGx5IGxvZ3MgaW50byBDdWJlU2lnbmVyICovXG4gICAgICBpbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaHVtYW4gbmFtZSBmb3IgdGhlIHVzZXIgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBDdWJlU2lnbmVyJ3MgdXNlciBpZGVudGlmaWVyICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcHJvZHVjZWQgYnkgYSBzdWNjZXNzZnVsIGRlcG9zaXRcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDUsXG4gICAgICogICBcImRlcG9zaXRfdHhuXCI6IHtcbiAgICAgKiAgICAgXCJkYXRhXCI6IFwiMHguLi5cIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlwiLFxuICAgICAqICAgICBcInZhbHVlXCI6IFwiMHgxYmMxNmQ2NzRlYzgwMDAwMFwiXG4gICAgICogICB9LFxuICAgICAqICAgXCJuZXdfdmFsaWRhdG9yX3BrXCI6IFwiOTcwMGZiYjhjOTA2OTQyNDQyYzJhNWIzYWQ3NDk4ZjI3YWVkZGEyNTM3ODZhNmZiYWE4ZmVmNDdmYjdhZjIzNGU1MGNmMmNjZTgxNWE1NTMwODc5OTJhZTU2NWQ0OGRhXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRGVwb3NpdFR4bjoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ2hhaW4gSUQgZm9yIHdoaWNoIHRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uIHdhcyBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIGNoYWluX2lkOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBkZXBvc2l0IHRyYW5zYWN0aW9uLiBJbmNsdWRlcyBvbmx5IGB0b2AsIGB2YWx1ZWAsIGFuZCBgZGF0YWAgZmllbGRzLiAqL1xuICAgICAgZGVwb3NpdF90eG46IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIGNvbXByZXNzZWQgZm9ybSBvZiB0aGUgbmV3IHZhbGlkYXRvciBCTFMgcHVibGljIGtleSAqL1xuICAgICAgbmV3X3ZhbGlkYXRvcl9wazogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIGRlcG9zaXQgdG8gcGVyZm9ybVxuICAgICAqIEBlbnVtIHtzdHJpbmd9XG4gICAgICovXG4gICAgRGVwb3NpdFR5cGU6IFwiQ2Fub25pY2FsXCIgfCBcIldyYXBwZXJcIjtcbiAgICBEZXJpdmVLZXlSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPbmUgb3IgbW9yZSBkZXJpdmF0aW9uIHBhdGhzIGZyb20gd2hpY2ggdG8gZGVyaXZlIGtleXMuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIFwibS80NCcvNjAnLzAnLzAvMFwiLFxuICAgICAgICogICBcIm0vNDQnLzkwMDAnLzAnLzAvMFwiXG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nW107XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gTWF0ZXJpYWwtaWQgb2YgdGhlIG1uZW1vbmljIHRvIHVzZSBmb3IgZGVyaXZhdGlvblxuICAgICAgICogQGV4YW1wbGUgMHg5ZjA3YmU4MmQ5MzRmY2I1ZDBmNzVkZDI0YzJkZmVhOGE4NWE0ZDBjMjg5ZDU4ODI4YjM1MzdmYWUyNGQzMmI4XG4gICAgICAgKi9cbiAgICAgIG1uZW1vbmljX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBFaXAxOTFPcjcxMlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgc2lnbmF0dXJlIGNvbXByaXNpbmcgNjUgYnl0ZXMgaW4gdGhlIGZvcm1hdCByZXF1aXJlZFxuICAgICAgICogYnkgZWNyZWNvdmVyOiAzMi1ieXRlIHIsIDMyLWJ5dGUgcywgYW5kIG9uZS1ieXRlIHJlY292ZXJ5LWlkIHZcbiAgICAgICAqIHdoaWNoIGlzIGVpdGhlciAyNyBvciAyOC5cbiAgICAgICAqIEBleGFtcGxlIDB4NDM1NWM0N2Q2MzkyNGU4YTcyZTUwOWI2NTAyOTA1MmViNmMyOTlkNTNhMDRlMTY3YzU3NzVmZDQ2Njc1MWM5ZDA3Mjk5OTM2ZDMwNGMxNTNmNjQ0M2RmYTA1ZjQwZmYwMDdkNzI5MTFiNmY3MjMwN2Y5OTYyMzE2MDViOTE1NjIxY1xuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIEVpcDE5MVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBFSVAtMTkxIGRhdGEgdG8gc2lnbiBhcyBoZXgtZW5jb2RlZCBieXRlcy5cbiAgICAgICAqIEBleGFtcGxlIDB4ZGVhZGJlZWYxM2MwZmZlZVxuICAgICAgICovXG4gICAgICBkYXRhOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImNoYWluX2lkXCI6IDEzMzcsXG4gICAgICogICBcInR5cGVkX2RhdGFcIjoge1xuICAgICAqICAgICBcImRvbWFpblwiOiB7XG4gICAgICogICAgICAgXCJjaGFpbklkXCI6IDEzMzcsXG4gICAgICogICAgICAgXCJuYW1lXCI6IFwiRXRoZXIgTWFpbFwiLFxuICAgICAqICAgICAgIFwidmVyaWZ5aW5nQ29udHJhY3RcIjogXCIweENjQ0NjY2NjQ0NDQ2NDQ0NDQ0NjQ2NDY2NDY0NDQ2NDY2NjY2NjY0NcIixcbiAgICAgKiAgICAgICBcInZlcnNpb25cIjogXCIxXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJtZXNzYWdlXCI6IHtcbiAgICAgKiAgICAgICBcImNvbnRlbnRzXCI6IFwiSGVsbG8sIEJvYiFcIixcbiAgICAgKiAgICAgICBcImZyb21cIjoge1xuICAgICAqICAgICAgICAgXCJuYW1lXCI6IFwiQ293XCIsXG4gICAgICogICAgICAgICBcIndhbGxldHNcIjogW1xuICAgICAqICAgICAgICAgICBcIjB4Q0QyYTNkOUY5MzhFMTNDRDk0N0VjMDVBYkM3RkU3MzREZjhERDgyNlwiLFxuICAgICAqICAgICAgICAgICBcIjB4RGVhRGJlZWZkRUFkYmVlZmRFYWRiRUVGZGVhZGJlRUZkRWFEYmVlRlwiXG4gICAgICogICAgICAgICBdXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcInRvXCI6IHtcbiAgICAgKiAgICAgICAgIFwibmFtZVwiOiBcIkJvYlwiLFxuICAgICAqICAgICAgICAgXCJ3YWxsZXRzXCI6IFtcbiAgICAgKiAgICAgICAgICAgXCIweGJCYkJCQkJiYkJCQmJiYkJiYkJiYmJiQkJiQmJiYmJCYkJiYkJCYkJcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQmRhQmVhNTdCMEJEQUJlQTU3YjBiZEFCRUE1N2IwQkRhYkVhNTdcIixcbiAgICAgKiAgICAgICAgICAgXCIweEIwQjBiMGIwYjBiMEIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIlxuICAgICAqICAgICAgICAgXVxuICAgICAqICAgICAgIH1cbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJwcmltYXJ5VHlwZVwiOiBcIk1haWxcIixcbiAgICAgKiAgICAgXCJ0eXBlc1wiOiB7XG4gICAgICogICAgICAgXCJFSVA3MTJEb21haW5cIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ2ZXJzaW9uXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJjaGFpbklkXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcInVpbnQyNTZcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwidmVyaWZ5aW5nQ29udHJhY3RcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwiYWRkcmVzc1wiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIkdyb3VwXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibWVtYmVyc1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25bXVwiXG4gICAgICogICAgICAgICB9XG4gICAgICogICAgICAgXSxcbiAgICAgKiAgICAgICBcIk1haWxcIjogW1xuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJmcm9tXCIsXG4gICAgICogICAgICAgICAgIFwidHlwZVwiOiBcIlBlcnNvblwiXG4gICAgICogICAgICAgICB9LFxuICAgICAqICAgICAgICAge1xuICAgICAqICAgICAgICAgICBcIm5hbWVcIjogXCJ0b1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJQZXJzb25cIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwiY29udGVudHNcIixcbiAgICAgKiAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgKiAgICAgICAgIH1cbiAgICAgKiAgICAgICBdLFxuICAgICAqICAgICAgIFwiUGVyc29uXCI6IFtcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAqICAgICAgICAgfSxcbiAgICAgKiAgICAgICAgIHtcbiAgICAgKiAgICAgICAgICAgXCJuYW1lXCI6IFwid2FsbGV0c1wiLFxuICAgICAqICAgICAgICAgICBcInR5cGVcIjogXCJhZGRyZXNzW11cIlxuICAgICAqICAgICAgICAgfVxuICAgICAqICAgICAgIF1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBFaXA3MTJTaWduUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNoYWluLWlkIHRvIHdoaWNoIHRoaXMgdHlwZWQgZGF0YSB3aWxsIGJlIHNlbnRcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRUlQLTcxMiB0eXBlZCBkYXRhLiBSZWZlciB0byB0aGUgSlNPTiBzY2hlbWEgZGVmaW5lZCBpbiBFSVAtNzEyLiAqL1xuICAgICAgdHlwZWRfZGF0YTogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgIH07XG4gICAgLyoqIEBkZWZhdWx0IG51bGwgKi9cbiAgICBFbXB0eTogdW5rbm93bjtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIHN0YXR1czogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVwb2NoIGlzIGEgcXVvdGVkIGB1aW50NjRgLlxuICAgICAqIEBleGFtcGxlIDI1NlxuICAgICAqL1xuICAgIEVwb2NoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlVGltZSBtZWFzdXJlZCBpbiBzZWNvbmRzIHNpbmNlIHVuaXggZXBvY2guXG4gICAgICogQSB3cmFwcGVyIHR5cGUgZm9yIHNlcmlhbGl6YXRpb24gdGhhdCBlbmNvZGVzIGEgW2BTeXN0ZW1UaW1lYF0gYXMgYSBbYHU2NGBdXG4gICAgICogcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBbYFN5c3RlbVRpbWU6OlVOSVhfRVBPQ0hgXS5cbiAgICAgKi9cbiAgICBFcG9jaERhdGVUaW1lOiBudW1iZXI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgc3RydWN0dXJlIG9mIEVycm9yUmVzcG9uc2UgbXVzdCBtYXRjaCB0aGUgcmVzcG9uc2UgdGVtcGxhdGUgdGhhdCBBV1MgdXNlcyAqL1xuICAgIEVycm9yUmVzcG9uc2U6IHtcbiAgICAgIGFjY2VwdGVkPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFZhbHVlXCJdIHwgbnVsbDtcbiAgICAgIGVycm9yX2NvZGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2lnbmVyRXJyb3JDb2RlXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBFcnJvciBtZXNzYWdlICovXG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHJlcXVlc3QgaWRlbnRpZmllciAqL1xuICAgICAgcmVxdWVzdF9pZD86IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiY2hhaW5faWRcIjogNDMxMTMsXG4gICAgICogICBcInR4XCI6IHtcbiAgICAgKiAgICAgXCJjaGFpbl9pZFwiOiBcIjB4YTg2OVwiLFxuICAgICAqICAgICBcImdhc1wiOiBcIjB4NjFhODBcIixcbiAgICAgKiAgICAgXCJtYXhGZWVQZXJHYXNcIjogXCIweDk1MDJGOTAwXCIsXG4gICAgICogICAgIFwibWF4UHJpb3JpdHlGZWVQZXJHYXNcIjogXCIweDUwXCIsXG4gICAgICogICAgIFwibm9uY2VcIjogXCIweGJcIixcbiAgICAgKiAgICAgXCJ0b1wiOiBcIjB4ZjAwYmExMmYwMDAwMDAwMGI0MTIxMjAwMDAwZjAwYzBmZmVlZjAwZFwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCIweDAyXCIsXG4gICAgICogICAgIFwidmFsdWVcIjogXCIweDEwMDAwMDAwMDAwXCJcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMVNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgY2hhaW4gaWQgdG8gc2V0IGluIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi5cbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEVJUC0yNzE4IHR5cGVkIHRyYW5zYWN0aW9uIChzZWUgdGhlIFtldGhlcnMtcnNcbiAgICAgICAqIGludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLnJzL2V0aGVycy9sYXRlc3QvZXRoZXJzL3R5cGVzL3N0cnVjdC5FaXAxNTU5VHJhbnNhY3Rpb25SZXF1ZXN0Lmh0bWwpKSB0eXBlcywgaW5jbHVkaW5nIEVJUC0xNTU5IHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMlwiIC4uLiB9YCksIGFuZCBsZWdhY3lcbiAgICAgICAqIHRyYW5zYWN0aW9ucyAoYHsgXCJ0eXBlXCI6IFwiMHgwMFwiIC4uLiB9YCkuIEFsbCB2YWx1ZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBleHBlY3RlZFxuICAgICAgICogdG8gYmUgKDB4LXByZWZpeGVkIG9yIG5vdCkgaGV4IHN0cmluZ3Mgb3IgYnl0ZSBhcnJheXMuXG4gICAgICAgKi9cbiAgICAgIHR4OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIZXgtZW5jb2RlZCBSTFAgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBpdHMgc2lnbmF0dXJlXG4gICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICovXG4gICAgICBybHBfc2lnbmVkX3R4OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImV0aDJfc2lnbl9yZXF1ZXN0XCI6IHtcbiAgICAgKiAgICAgXCJhZ2dyZWdhdGlvbl9zbG90XCI6IHtcbiAgICAgKiAgICAgICBcInNsb3RcIjogXCIzNlwiXG4gICAgICogICAgIH0sXG4gICAgICogICAgIFwiZm9ya19pbmZvXCI6IHtcbiAgICAgKiAgICAgICBcImZvcmtcIjoge1xuICAgICAqICAgICAgICAgXCJjdXJyZW50X3ZlcnNpb25cIjogXCIweDQyNDI0MjQyXCIsXG4gICAgICogICAgICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICAgICAgXCJwcmV2aW91c192ZXJzaW9uXCI6IFwiMHg0MjQyNDI0MlwiXG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHg5ZDEzZDYxMjEyYzA2N2UwMmNlOGU2MDhhNzAwN2UyYzNiMDI1NzFlOWU2ZjI3ZmY0NWRmYTkxYmYyN2M4NzBiXCJcbiAgICAgKiAgICAgfSxcbiAgICAgKiAgICAgXCJzaWduaW5nUm9vdFwiOiBcIjB4OWM1N2U3N2M0OTY1NzI3NTQyYjkzMzdkZjY3NTZmOTQ4NDY0YmNhMzg1OWJlYTZlZDNjMGVjNjYwMGQ4OTgyYVwiLFxuICAgICAqICAgICBcInR5cGVcIjogXCJBR0dSRUdBVElPTl9TTE9UXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJtYWlubmV0XCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRXRoMlNpZ25SZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBTdWJzZXQgb2YgdGhlIFdlYjNTaWduZXIgRXRoMiBCTFMgc2lnbmluZyByZXF1ZXN0IHdob3NlIHNjaGVtYSBpcyBkZWZpbmVkXG4gICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9jb25zZW5zeXMuZ2l0aHViLmlvL3dlYjNzaWduZXIvd2ViM3NpZ25lci1ldGgyLmh0bWwjdGFnL1NpZ25pbmcvb3BlcmF0aW9uL0VUSDJfU0lHTikuXG4gICAgICAgKiBXZSBoYW5kbGUgZGVwb3NpdHMgYW5kIHZvbHVudGFyeSBleGl0cyBzZXBhcmF0ZWx5LlxuICAgICAgICovXG4gICAgICBldGgyX3NpZ25fcmVxdWVzdDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgIH07XG4gICAgRXRoMlNpZ25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSGV4IGVuY29kZWQgc2lnbmF0dXJlIHByZWZpeGVkIHdpdGggMHggZS5nLiBcIjB4MDAwMC4uLlwiXG4gICAgICAgKiBAZXhhbXBsZSAweGI0ZjJlZjlkMTJhNTRlMWY1Njk1OTZjMDdjOTdkNmQ3MzA1MzViNmZmYzBkMjg3NzYxZGM3ODEwM2E4NjMyNjc4MjQ3MWEwNGM3NWNlN2E2ZmFlYTA4Y2E5YTRhMDgzMDAzMWNkY2I4OTNkYTg3MTFkNTRhYTIyNjE5ZjFhN2U3MWI4MTg1ZGRmNGM2YmZkOWJhYmJkNzM1OTYwZTM1ZTU2YmQ2ZWViODk2MjViMDQ4NTBlN2E5ZWY4ODQ2ZTU0OVxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIEV2bVR4RGVwb3NpdEVycm9yQ29kZTpcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRSZWNlaXZlck1pc21hdGNoXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRFbXB0eURhdGFcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdEVtcHR5Q2hhaW5JZFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0RW1wdHlSZWNlaXZlclwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VW5leHBlY3RlZFZhbHVlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkRGF0YUxlbmd0aFwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0Tm9BYmlcIlxuICAgICAgfCBcIkV2bVR4RGVwb3NpdE5vRGVwb3NpdEZ1bmN0aW9uXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkRnVuY3Rpb25OYW1lXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkVmFsaWRhdG9yS2V5XCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRJbnZhbGlkVmFsaWRhdG9yS2V5XCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRNaXNzaW5nRGVwb3NpdEFyZ1wiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0V3JvbmdEZXBvc2l0QXJnVHlwZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0V3JvbmdWYWxpZGF0b3JBcmdWYWx1ZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0VmFsaWRhdG9yS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbmV4cGVjdGVkV2l0aGRyYXdhbENyZWRlbnRpYWxzXCJcbiAgICAgIHwgXCJFdm1UeERlcG9zaXRVbnJlc29sdmVkUm9sZVwiXG4gICAgICB8IFwiRXZtVHhEZXBvc2l0SW52YWxpZERlcG9zaXRFbmNvZGluZ1wiO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBmaWRvIGNoYWxsZW5nZSAqL1xuICAgIEZpZG9Bc3NlcnRBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBjaGFsbGVuZ2UgdGhhdCB3YXMgcmV0dXJuZWQgZnJvbSB0aGUgUE9TVCBlbmRwb2ludCAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICBjcmVkZW50aWFsOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxcIl07XG4gICAgfTtcbiAgICBGaWRvQXNzZXJ0Q2hhbGxlbmdlOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICBvcHRpb25zOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc1wiXTtcbiAgICB9KSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjaGFsbGVuZ2UuIE11c3QgYmUgc3VwcGxpZWQgd2hlbiBhbnN3ZXJpbmcgdGhlIGNoYWxsZW5nZS4gKi9cbiAgICAgIGNoYWxsZW5nZV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBTZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGFuc3dlciBhIGZpZG8gY2hhbGxlbmdlICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZUFuc3dlcjoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIGNoYWxsZW5nZSB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHRoZSBQT1NUIGVuZHBvaW50ICovXG4gICAgICBjaGFsbGVuZ2VfaWQ6IHN0cmluZztcbiAgICAgIGNyZWRlbnRpYWw6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudC4gQ29udGFpbnMgdGhlIGNoYWxsZW5nZSBkYXRhIHRoYXQgbXVzdCBiZVxuICAgICAqIHVzZWQgdG8gZ2VuZXJhdGUgYSBuZXcgY3JlZGVudGlhbFxuICAgICAqL1xuICAgIEZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZTogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgIH0pICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGNoYWxsZW5nZS4gTXVzdCBiZSBzdXBwbGllZCB3aGVuIGFuc3dlcmluZyB0aGUgY2hhbGxlbmdlLiAqL1xuICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlY2xhcmVzIGludGVudCB0byByZWdpc3RlciBhIG5ldyBGSURPIGtleSAqL1xuICAgIEZpZG9DcmVhdGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSBuZXcgZmlkbyBjcmVkZW50aWFsXG4gICAgICAgKiBAZXhhbXBsZSBXb3JrIFl1YmlrZXlcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgRm9yYmlkZGVuRXJyb3JDb2RlOlxuICAgICAgfCBcIkZpZG9SZXF1aXJlZFRvUmVtb3ZlVG90cFwiXG4gICAgICB8IFwiTWZhQ2hhbGxlbmdlRXhwaXJlZFwiXG4gICAgICB8IFwiQ2hhaW5JZE5vdEFsbG93ZWRcIlxuICAgICAgfCBcIkludmFsaWRPcmdcIlxuICAgICAgfCBcIlNlc3Npb25Gb3JXcm9uZ09yZ1wiXG4gICAgICB8IFwiT3JnRGlzYWJsZWRcIlxuICAgICAgfCBcIk9yZ05vdEZvdW5kXCJcbiAgICAgIHwgXCJPcmdXaXRob3V0T3duZXJcIlxuICAgICAgfCBcIk9ycGhhbmVkVXNlclwiXG4gICAgICB8IFwiT2lkY1VzZXJOb3RGb3VuZFwiXG4gICAgICB8IFwiVXNlck5vdEluT3JnXCJcbiAgICAgIHwgXCJVc2VyTm90T3JnT3duZXJcIlxuICAgICAgfCBcIlVzZXJOb3RLZXlPd25lclwiXG4gICAgICB8IFwiSW52YWxpZFJvbGVcIlxuICAgICAgfCBcIkRpc2FibGVkUm9sZVwiXG4gICAgICB8IFwiS2V5RGlzYWJsZWRcIlxuICAgICAgfCBcIlJvbGVOb3RJbk9yZ1wiXG4gICAgICB8IFwiS2V5Tm90SW5Sb2xlXCJcbiAgICAgIHwgXCJLZXlOb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3ROb3RJbk9yZ1wiXG4gICAgICB8IFwiVXNlckV4cG9ydFJlcXVlc3RJbnZhbGlkXCJcbiAgICAgIHwgXCJVc2VyTm90T3JpZ2luYWxLZXlPd25lclwiXG4gICAgICB8IFwiVXNlck5vdEluUm9sZVwiXG4gICAgICB8IFwiTXVzdEJlRnVsbE1lbWJlclwiXG4gICAgICB8IFwiU2Vzc2lvbkV4cGlyZWRcIlxuICAgICAgfCBcIlNlc3Npb25SZXZva2VkXCJcbiAgICAgIHwgXCJFeHBlY3RlZFVzZXJTZXNzaW9uXCJcbiAgICAgIHwgXCJTZXNzaW9uUm9sZUNoYW5nZWRcIlxuICAgICAgfCBcIlNjb3BlZE5hbWVOb3RGb3VuZFwiXG4gICAgICB8IFwiU2Vzc2lvbkludmFsaWRFcG9jaFRva2VuXCJcbiAgICAgIHwgXCJTZXNzaW9uSW52YWxpZFJlZnJlc2hUb2tlblwiXG4gICAgICB8IFwiU2Vzc2lvblJlZnJlc2hUb2tlbkV4cGlyZWRcIlxuICAgICAgfCBcIkludmFsaWRBdXRoSGVhZGVyXCJcbiAgICAgIHwgXCJTZXNzaW9uTm90Rm91bmRcIlxuICAgICAgfCBcIkludmFsaWRBcm5cIlxuICAgICAgfCBcIlNlc3Npb25JbnZhbGlkQXV0aFRva2VuXCJcbiAgICAgIHwgXCJTZXNzaW9uQXV0aFRva2VuRXhwaXJlZFwiXG4gICAgICB8IFwiU2Vzc2lvblBvc3NpYmx5U3RvbGVuVG9rZW5cIlxuICAgICAgfCBcIk1mYURpc2FsbG93ZWRJZGVudGl0eVwiXG4gICAgICB8IFwiTWZhRGlzYWxsb3dlZEFwcHJvdmVyXCJcbiAgICAgIHwgXCJNZmFUeXBlTm90QWxsb3dlZFwiXG4gICAgICB8IFwiTWZhTm90QXBwcm92ZWRZZXRcIlxuICAgICAgfCBcIk1mYUNvbmZpcm1hdGlvbkNvZGVNaXNtYXRjaFwiXG4gICAgICB8IFwiTWZhSHR0cFJlcXVlc3RNaXNtYXRjaFwiXG4gICAgICB8IFwiTWZhUmVtb3ZlQmVsb3dNaW5cIlxuICAgICAgfCBcIlRvdHBBbHJlYWR5Q29uZmlndXJlZFwiXG4gICAgICB8IFwiVG90cENvbmZpZ3VyYXRpb25DaGFuZ2VkXCJcbiAgICAgIHwgXCJNZmFUb3RwQmFkQ29uZmlndXJhdGlvblwiXG4gICAgICB8IFwiTWZhVG90cEJhZENvZGVcIlxuICAgICAgfCBcIk1mYVRvdHBSYXRlTGltaXRcIlxuICAgICAgfCBcIkltcHJvcGVyU2Vzc2lvblNjb3BlXCJcbiAgICAgIHwgXCJGdWxsU2Vzc2lvblJlcXVpcmVkXCJcbiAgICAgIHwgXCJTZXNzaW9uV2l0aG91dEFueVNjb3BlVW5kZXJcIlxuICAgICAgfCBcIlVzZXJSb2xlVW5wcml2aWxlZ2VkXCJcbiAgICAgIHwgXCJNZmFOb3RDb25maWd1cmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNwZWNpZmllcyBhIGZvcmsgb2YgdGhlIGBCZWFjb25DaGFpbmAsIHRvIHByZXZlbnQgcmVwbGF5IGF0dGFja3MuXG4gICAgICogVGhlIHNjaGVtYSBvZiBgRm9ya2AgaXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBjaGFpblxuICAgICAqIHNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9jb25zZW5zdXMtc3BlY3MvYmxvYi92MS4wLjEvc3BlY3MvcGhhc2UwL2JlYWNvbi1jaGFpbi5tZCNmb3JrKS5cbiAgICAgKiBAZXhhbXBsZSB7XG4gICAgICogICBcImN1cnJlbnRfdmVyc2lvblwiOiBcIjB4MDAwMDEwMjBcIixcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIwXCIsXG4gICAgICogICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgRm9yazoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ3VycmVudCBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQzNDM0MzQzXG4gICAgICAgKi9cbiAgICAgIGN1cnJlbnRfdmVyc2lvbjogc3RyaW5nO1xuICAgICAgZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQcmV2aW91cyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIHByZXZpb3VzX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIGRhdGEgYXMgZGVmaW5lZCBpbiB0aGUgW0JlYWNvbiBBUElcbiAgICAgKiBzcGVjXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9nZXRHZW5lc2lzKS5cbiAgICAgKiBZb3UgY2FuIGdldCB0aGUgZ2VuZXNpcyBkYXRhIGZyb20gdGhlIEJlYWNvbiBub2RlJ3MgYC9ldGgvdjEvYmVhY29uL2dlbmVzaXNgIGVuZC1wb2ludC5cbiAgICAgKiBUaGlzIHN0cnVjdCBkZWZpbml0aW9uIGlzIG9yaWdpbmFsbHkgZnJvbSBsaWdodGhvdXNlJ3MgZXRoMi5cbiAgICAgKi9cbiAgICBHZW5lc2lzRGF0YToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXNpcyBmb3JrIHZlcnNpb24uXG4gICAgICAgKiBAZXhhbXBsZSAweDQyNDI0MjQyXG4gICAgICAgKi9cbiAgICAgIGdlbmVzaXNfZm9ya192ZXJzaW9uOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHRpbWVcbiAgICAgICAqIEBleGFtcGxlIDE2NzkzMjY0NDlcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc190aW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBHZW5lc2lzIHZhbGlkYXRvcnMgcm9vdC5cbiAgICAgICAqIEBleGFtcGxlIDB4MjcwZDQzZTc0Y2UzNDBkZTRiY2EyYjE5MzZiZWNhMGY0ZjU0MDhkOWU3OGFlYzQ4NTA5MjBiYWY2NTlkNWI2OVxuICAgICAgICovXG4gICAgICBnZW5lc2lzX3ZhbGlkYXRvcnNfcm9vdDogc3RyaW5nO1xuICAgIH07XG4gICAgR2V0S2V5c0luT3JnUmVxdWVzdDoge1xuICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHVzZXJzIGluIHRoZSBvcmcgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJZEluZm9cIl1bXTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU3RhdHMgcGVydGFpbmluZyB0aGUgdGhlIHNlbmRlciBgY3ViZTNzaWduZXJgIGluc3RhbmNlICovXG4gICAgSGVhcnRiZWF0UmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJlcXVlc3RzIGN1cnJlbnRseSBhY3RpdmUgKHJlY2VpdmVkIGJ1dCBub3QgbmVjZXNzYXJpbHkgYmVpbmcgcHJvY2Vzc2VkIHlldClcbiAgICAgICAqL1xuICAgICAgY3VycmVudF9udW1fcmVxdWVzdHNfYWN0aXZlOiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgcmVxdWVzdHMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBieSBjdWJlM3NpZ25lclxuICAgICAgICovXG4gICAgICBjdXJyZW50X251bV9yZXF1ZXN0c19wcm9jZXNzaW5nOiBudW1iZXI7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERvIG5vdCByZWNvcmQgbWV0cmljIGRhdGEgZnJvbSB0aGlzIGhlYXJ0YmVhdCAqL1xuICAgICAgaWdub3JlPzogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBuZXcgcmVxdWVzdHMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB0aGF0IGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV9yZXF1ZXN0c19mYWlsZWQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiByZXF1ZXN0cyB3ZXJlIHJldHJpZWQgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmVxdWVzdHNfcmV0cmllZDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHJldHJpZXMgZHVyaW5nIHRoaXMgaGVhcnRiZWF0IHBlcmlvZFxuICAgICAgICovXG4gICAgICBudW1fcmV0cmllczogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gTnVtYmVyIG9mIHRpbWVzIGF1dGggdG9rZW4gd2FzIHJlZnJlc2hlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXM/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2YgdGltZXMgYXV0aCB0b2tlbiByZWZyZXNoIGZhaWxlZCBkdXJpbmcgdGhpcyBoZWFydGJlYXQgcGVyaW9kXG4gICAgICAgKi9cbiAgICAgIG51bV90b2tlbl9yZWZyZXNoZXNfZmFpbGVkPzogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmVyc2lvbiBvZiB0aGUgcHJveHkgc2VuZGluZyB0aGUgaGVhcnQgYmVhdCByZXF1ZXN0XG4gICAgICAgKlxuICAgICAgICogVE9ETzogTWFrZSBub24tb3B0aW9uYWwgb25jZSB3ZSBkbyBub3Qgc3VwcG9ydCBwcm94aWVzIHdpdGhvdXQgdmVyc2lvbiBpbmZvcm1hdGlvblxuICAgICAgICovXG4gICAgICBwcm94eV92ZXJzaW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdC5cbiAgICAgKlxuICAgICAqIENhcHR1cmVzIGFsbCB0aGUgcmVsZXZhbnQgaW5mbyAoaW5jbHVkaW5nIHRoZSByZXF1ZXN0IGJvZHkpIGFib3V0IHJlcXVlc3RzIHRoYXQgcmVxdWlyZSBNRkEuXG4gICAgICogV2UgdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMgcmVzdW1lZCAoYWZ0ZXIgb2J0YWluaW5nIG5lY2Vzc2FyeSBNRkEgYXBwcm92YWxzKVxuICAgICAqIGl0IGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaXQgb3JpZ2luYWxseSB3YXMuXG4gICAgICovXG4gICAgSHR0cFJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSFRUUCByZXF1ZXN0IGJvZHkgKi9cbiAgICAgIGJvZHk/OiB1bmtub3duO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBIVFRQIG1ldGhvZCBvZiB0aGUgcmVxdWVzdCAqL1xuICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEhUVFAgcGF0aCBvZiB0aGUgcmVxdWVzdCAoaW5jbHVkaW5nIGhvc3Qgb3Igbm90PykgKi9cbiAgICAgIHBhdGg6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gT0lEQyBhdWRpZW5jZTsgc2V0IG9ubHkgaWYgdGhlIHByb29mIHdhcyBvYnRhaW5lZCBieSB1c2luZyBPSURDIHRva2VuLlxuICAgICAgICpcbiAgICAgICAqIEluIG90aGVyIHdvcmRzLCBwcmVzZW5jZSBvZiB0aGlzIGZpZWxkIHRlc3RpZmllcyB0aGF0IGF1dGhvcml6YXRpb24gd2FzIG9idGFpbmVkIHZpYSBPSURDLlxuICAgICAgICovXG4gICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlclxuICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAqL1xuICAgICAgZW1haWw/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICBpZGVudGl0eT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiT0lEQ0lkZW50aXR5XCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIGN1YmlzdGRldlxuICAgICAgICovXG4gICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdXNlcl9pbmZvPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDdWJlU2lnbmVyVXNlckluZm9cIl0gfCBudWxsO1xuICAgIH0gJiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUltcG9ydEtleVwiXSAmIHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQSBzZXQgb2YgZW5jcnlwdGVkIGtleXMgdG8gYmUgaW1wb3J0ZWQgKi9cbiAgICAgIGtleV9tYXRlcmlhbDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbXBvcnRLZXlSZXF1ZXN0TWF0ZXJpYWxcIl1bXTtcbiAgICAgIGtleV90eXBlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl07XG4gICAgfTtcbiAgICBJbXBvcnRLZXlSZXF1ZXN0TWF0ZXJpYWw6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjbGllbnQncyBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSBhIHNoYXJlZCBrZXkuXG4gICAgICAgKiBUaGlzIGlzIGEgYmFzZTY0LWVuY29kZWQsIFNFQzEtZW5jb2RlZCBQMzg0IHB1YmxpYyBrZXkuXG4gICAgICAgKi9cbiAgICAgIGNsaWVudF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW5jcnlwdGVkIGtleWluZyBtYXRlcmlhbCB0byBiZSBpbXBvcnRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBiYXNlNjQtZW5jb2RlZCBjaXBoZXJ0ZXh0LlxuICAgICAgICovXG4gICAgICBpa21fZW5jOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHNhbHQgdmFsdWUgdXNlZCB0byBkZXJpdmUgYSBzaGFyZWQga2V5LlxuICAgICAgICogVGhpcyBpcyBhIGJhc2U2NC1lbmNvZGVkIGJ5dGUgc3RyaW5nLlxuICAgICAgICovXG4gICAgICBzYWx0OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBJbnRlcm5hbEVycm9yQ29kZTpcbiAgICAgIHwgXCJTeXN0ZW1UaW1lRXJyb3JcIlxuICAgICAgfCBcIlJlcXdlc3RFcnJvclwiXG4gICAgICB8IFwiRGJRdWVyeUVycm9yXCJcbiAgICAgIHwgXCJEYkdldEVycm9yXCJcbiAgICAgIHwgXCJEYkRlbGV0ZUVycm9yXCJcbiAgICAgIHwgXCJEYlB1dEVycm9yXCJcbiAgICAgIHwgXCJEYlVwZGF0ZUVycm9yXCJcbiAgICAgIHwgXCJTZXJkZUVycm9yXCJcbiAgICAgIHwgXCJUZXN0QW5kU2V0RXJyb3JcIlxuICAgICAgfCBcIkRiR2V0SXRlbXNFcnJvclwiXG4gICAgICB8IFwiRGJXcml0ZUVycm9yXCJcbiAgICAgIHwgXCJDdWJpc3RTaWduZXJFcnJvclwiXG4gICAgICB8IFwiQ3dQdXRNZXRyaWNEYXRhRXJyb3JcIlxuICAgICAgfCBcIkttc0dlbmVyYXRlUmFuZG9tRXJyb3JcIlxuICAgICAgfCBcIk1hbGZvcm1lZFRvdHBCeXRlc1wiXG4gICAgICB8IFwiS21zR2VuZXJhdGVSYW5kb21Ob1Jlc3BvbnNlRXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZUtleUVycm9yXCJcbiAgICAgIHwgXCJQYXJzZURlcml2YXRpb25QYXRoRXJyb3JcIlxuICAgICAgfCBcIlNwbGl0U2lnbmVyRXJyb3JcIlxuICAgICAgfCBcIkNyZWF0ZUltcG9ydEtleUVycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvRGVsZXRlVXNlckVycm9yXCJcbiAgICAgIHwgXCJDb2duaXRvTGlzdFVzZXJzRXJyb3JcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyRXJyb3JcIlxuICAgICAgfCBcIk1pc3NpbmdVc2VyRW1haWxcIlxuICAgICAgfCBcIkNvZ25pdG9SZXNlbmRVc2VySW52aXRhdGlvblwiXG4gICAgICB8IFwiQ29nbml0b1NldFVzZXJQYXNzd29yZEVycm9yXCJcbiAgICAgIHwgXCJHZW5lcmljSW50ZXJuYWxFcnJvclwiXG4gICAgICB8IFwiT2lkY0F1dGhXaXRob3V0T3JnXCJcbiAgICAgIHwgXCJNaXNzaW5nS2V5TWV0YWRhdGFcIlxuICAgICAgfCBcIkttc0tleVdpdGhvdXRJZFwiXG4gICAgICB8IFwiS21zRW5hYmxlS2V5RXJyb3JcIlxuICAgICAgfCBcIkttc0Rpc2FibGVLZXlFcnJvclwiXG4gICAgICB8IFwiU2VyaWFsaXplRW5jcnlwdGVkRXhwb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIkRlc2VyaWFsaXplRW5jcnlwdGVkRXhwb3J0S2V5RXJyb3JcIlxuICAgICAgfCBcIlJlRW5jcnlwdFVzZXJFeHBvcnRcIlxuICAgICAgfCBcIlMzVXBsb2FkRXJyb3JcIlxuICAgICAgfCBcIlMzRG93bmxvYWRFcnJvclwiXG4gICAgICB8IFwiTWFuYWdlZFN0YXRlTWlzc2luZ1wiXG4gICAgICB8IFwiSW50ZXJuYWxIZWFkZXJNaXNzaW5nXCJcbiAgICAgIHwgXCJJbnZhbGlkSW50ZXJuYWxIZWFkZXJWYWx1ZVwiXG4gICAgICB8IFwiUmVxdWVzdExvY2FsU3RhdGVBbHJlYWR5U2V0XCJcbiAgICAgIHwgXCJPaWRjT3JnTWlzbWF0Y2hcIlxuICAgICAgfCBcIk9ycGhhbmVkUm9sZUtleUlkXCJcbiAgICAgIHwgXCJPaWRjSXNzdWVySndrRW5kcG9pbnRVbmF2YWlsYWJsZVwiXG4gICAgICB8IFwiT2lkY0lzc3VlckludmFsaWRKd2tcIlxuICAgICAgfCBcIkludmFsaWRQa0Zvck1hdGVyaWFsSWRcIlxuICAgICAgfCBcIlVuY2hlY2tlZE9yZ1wiXG4gICAgICB8IFwiQXZhU2lnbkNyZWRzTWlzc2luZ1wiXG4gICAgICB8IFwiQXZhU2lnblNpZ25hdHVyZU1pc3NpbmdcIlxuICAgICAgfCBcIkV4cGVjdGVkUm9sZVNlc3Npb25cIlxuICAgICAgfCBcIkludmFsaWRUaGlyZFBhcnR5SWRlbnRpdHlcIlxuICAgICAgfCBcIkNvZ25pdG9HZXRVc2VyXCI7XG4gICAgSW52aXRlUmVxdWVzdDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBhY21lLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBsb2dpbiBNRkEgcG9saWN5ICovXG4gICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZnVsbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZSBXb25kZXJsYW5kXG4gICAgICAgKi9cbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHJvbGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1lbWJlclJvbGVcIl0gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2tpcCBzZW5kaW5nIGFuIGludml0YXRpb24gZW1haWwgdG8gdGhpcyB1c2VyIGlmIHRydWUuXG4gICAgICAgKlxuICAgICAgICogTk9URTogdGhpcyBmaWVsZCBpcyBmb3IgaW50ZXJuYWwgdGVzdGluZyB1c2UgT05MWS4gSWYgeW91IGRvIG5vdFxuICAgICAgICogc2VuZCBhbiBpbnZpdGF0aW9uIGVtYWlsLCB0aGUgdXNlciB3aWxsIG5ldmVyIGJlIGFibGUgdG8gbG9nIGluLlxuICAgICAgICogQGV4YW1wbGUgZmFsc2VcbiAgICAgICAqL1xuICAgICAgc2tpcF9lbWFpbDogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIFtgS2V5UGFja2FnZWBdIHNlcmlhbGl6ZWQgaW50byBhIGZvcm1hdCB0aGF0IGdpdmVzIGEgdGlkaWVyIEpTT05cbiAgICAgKiByZXByZXNlbnRhdGlvbiBzdWl0YWJsZSBmb3IgZW5jcnlwdGlvbiBpbiB0aGUgdXNlci1leHBvcnQgZmxvdy5cbiAgICAgKlxuICAgICAqIFdlIGNvbnN0cnVjdCB2YWx1ZXMgb2YgdGhpcyB0eXBlIHJhdGhlciB0aGFuIGNvbnN0cnVjdGluZyBgc2VyZGVfanNvbjo6VmFsdWVgc1xuICAgICAqIGRpcmVjdGx5IHdpdGggYGpzb24hKClgIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gemVyb2l6ZSB2YWx1ZXMgb24gZHJvcCwgd2hpY2hcbiAgICAgKiBkb2Vzbid0IHdvcmsgd2l0aCBgc2VyZGVfanNvbjo6VmFsdWVgLlxuICAgICAqXG4gICAgICogRXhhbXBsZXMgb2Ygc2VyaWFsaXplZCBtYXRlcmlhbDpcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6RW5nbGlzaE1uZW1vbmljYDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogRGVyaXZhdGlvblBhdGgsIEtleVBhY2thZ2UsIE1uZW1vbmljLCBNbmVtb25pY1BhY2thZ2UsIFNlY3AyNTZrMVBrZyxcbiAgICAgKiB9O1xuICAgICAqIHVzZSBzZXJkZV9qc29uOjpqc29uO1xuICAgICAqXG4gICAgICogY29uc3QgTU5FTU9OSUM6ICZzdHIgPSBcImRlcG9zaXQgZmlzY2FsIGJyYWluIHN3YXJtIHN1cnJvdW5kIGNvdXNpbiBob3JuIGdsYXJlIGZpeCBsb3ZlIHJlbmRlciBiZWxpZXZlIGd1aWRlIHNodWZmbGUgc3RlbSBjcmFtIGJyb2Njb2xpIHJlc2VtYmxlIGJlYWNoIGFydGVmYWN0IGxhbmd1YWdlIGdpZnQgamFyIHBlcm1pdFwiO1xuICAgICAqIGNvbnN0IERFUl9QQVRIOiAmc3RyID0gXCJtLzQ0Jy82MCcvMCcvMC8wXCI7XG4gICAgICogY29uc3QgS0VZX1RZUEU6ICZzdHIgPSBcImVjZHNhOnNlY3AyNTZrMVwiO1xuICAgICAqXG4gICAgICogbGV0IG1uZSA9IE1uZW1vbmljOjp0cnlfZnJvbShNTkVNT05JQykuZXhwZWN0KFwiZ29vZCBtbmVtb25pY1wiKTtcbiAgICAgKiBsZXQgZGVycCA9IERlcml2YXRpb25QYXRoOjp0cnlfZnJvbShERVJfUEFUSCkuZXhwZWN0KFwiZ29vZCBkZXIgcGF0aFwiKTtcbiAgICAgKiBsZXQgbW5lX3BrZyA9IE1uZW1vbmljUGFja2FnZTo6bmV3KG1uZSwgXCJcIiwgZGVycCk7XG4gICAgICogbGV0IGtleV9wa2cgPSBLZXlQYWNrYWdlOjo8U2VjcDI1NmsxUGtnPjo6RW5nbGlzaE1uZW1vbmljKG1uZV9wa2cpO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcImVuZ2xpc2hfbW5lbW9uaWNcIixcbiAgICAgKiBcIm1uZW1vbmljXCI6IE1ORU1PTklDLFxuICAgICAqIFwicGFzc3dvcmRcIjogXCJcIixcbiAgICAgKiBcImRlcml2YXRpb25fcGF0aFwiOiBERVJfUEFUSCxcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIGFzc2VydF9lcSEoXG4gICAgICogc2VyZGVfanNvbjo6dG9fdmFsdWUoJmpzb25fcGtnKS5leHBlY3QoXCJqc29uIHNlcmlhbGl6YXRpb25cIiksXG4gICAgICoganNvbl9leHBlY3QsXG4gICAgICogKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIC0gYEpzb25LZXlNYXRlcmlhbDo6UmF3U2VjcmV0YDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIHVzZSBjdWJpc3Rfc2lnbmVyX3V0aWxzOjp7XG4gICAgICogZ2V0X3JhbmRvbV9ieXRlX2FycmF5LCBoZXhfZW5jb2RlLCBLZXlQYWNrYWdlLCBSbmdDb3JlLCBTZWNwMjU2azFQa2csXG4gICAgICogfTtcbiAgICAgKiB1c2Ugc2VyZGVfanNvbjo6anNvbjtcbiAgICAgKlxuICAgICAqIGNvbnN0IEtFWV9UWVBFOiAmc3RyID0gXCJlY2RzYTpzZWNwMjU2azFcIjtcbiAgICAgKlxuICAgICAqIC8vIHJhbmRvbSAzMi1ieXRlIHNlY3JldFxuICAgICAqIGxldCBzazogW3U4OyAzMl0gPSAqZ2V0X3JhbmRvbV9ieXRlX2FycmF5KCk7XG4gICAgICpcbiAgICAgKiBsZXQga2V5X3BrZyA9IEtleVBhY2thZ2U6OjxTZWNwMjU2azFQa2c+OjpTZWNyZXQoc2spO1xuICAgICAqIGxldCBqc29uX3BrZyA9IGtleV9wa2cuaW50b19qc29uKEtFWV9UWVBFKTtcbiAgICAgKlxuICAgICAqIGxldCBqc29uX2V4cGVjdCA9IGpzb24hKHtcbiAgICAgKiBcImtleV90eXBlXCI6IEtFWV9UWVBFLFxuICAgICAqIFwibWF0ZXJpYWxfdHlwZVwiOiBcInJhd19zZWNyZXRcIixcbiAgICAgKiBcInNlY3JldFwiOiBoZXhfZW5jb2RlKCZzayksXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBhc3NlcnRfZXEhKFxuICAgICAqIHNlcmRlX2pzb246OnRvX3ZhbHVlKCZqc29uX3BrZykuZXhwZWN0KFwianNvbiBzZXJpYWxpemF0aW9uXCIpLFxuICAgICAqIGpzb25fZXhwZWN0LFxuICAgICAqICk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgSnNvbktleVBhY2thZ2U6IChcbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwicmF3X3NlY3JldFwiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHZhbHVlIG9mIHRoZSByYXcgc2VjcmV0ICovXG4gICAgICAgICAgc2VjcmV0OiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgICAgICAgIG1hdGVyaWFsX3R5cGU6IFwiZW5nbGlzaF9tbmVtb25pY1wiO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljICovXG4gICAgICAgICAgbW5lbW9uaWM6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBwYXNzd29yZCAod2hpY2ggbWF5IGJlIGVtcHR5KSAqL1xuICAgICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICApICYge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBvZiBrZXkgdGhpcyBwYWNrYWdlIHJlcHJlc2VudHMgKi9cbiAgICAgIGtleV90eXBlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIERlcml2YXRpb24tcmVsYXRlZCBtZXRhZGF0YSBmb3Iga2V5cyBkZXJpdmVkIGZyb20gYSBsb25nLWxpdmVkIG1uZW1vbmljICovXG4gICAgS2V5RGVyaXZhdGlvbkluZm86IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgZGVyaXZhdGlvbl9wYXRoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBtbmVtb25pYy1pZCBvZiB0aGUga2V5J3MgcGFyZW50IG1uZW1vbmljICovXG4gICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHdyYXBwZWQga2V5LWltcG9ydCBrZXkgKi9cbiAgICBLZXlJbXBvcnRLZXk6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBkYXRhIGtleS4gKi9cbiAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgKi9cbiAgICAgIGV4cGlyZXM6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB0byB3aGljaCBhbiBpbXBvcnRlZCBrZXkgc2hvdWxkIGJlIGVuY3J5cHRlZC5cbiAgICAgICAqIFRoaXMgaXMgYSBQMzg0IHB1YmxpYyBrZXkgaW4gYmFzZTY0LWVuY29kZWQgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0LlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEJhc2U2NC1lbmNvZGVkLCBlbmNyeXB0ZWQgc2VjcmV0IGtleS4gKi9cbiAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5Sb2xlSW5mbzoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IElEXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWNpZXMgdGhhdCBhcmUgY2hlY2tlZCBiZWZvcmUgdGhpcyBrZXkgaXMgdXNlZCBvbiBiZWhhbGYgb2YgdGhpcyByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlR4UmVjZWl2ZXJcIjogXCIweDhjNTk0NjkxYzBlNTkyZmZhMjFmMTUzYTE2YWU0MWRiNWJlZmNhYWFcIlxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJUeERlcG9zaXRcIjoge1xuICAgICAgICogICAgICAgXCJraW5kXCI6IFwiQ2Fub25pY2FsXCJcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBSb2xlIElEXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2U0MjdjMjhhLTljNWItNDljYy1hMjU3LTg3OGFlYTU4YTIyY1xuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBLZXlJbmZvOiB7XG4gICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUga2V5IGlzIGVuYWJsZWQgKG9ubHkgZW5hYmxlZCBrZXlzIG1heSBiZSB1c2VkIGZvciBzaWduaW5nKSAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5OiBcIktleSNcIiBmb2xsb3dlZCBieSBhIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvXG4gICAgICAgKiB0aGUgdHlwZSBvZiBrZXkgKHN1Y2ggYXMgYSBwdWJsaWMga2V5IGZvciBCTFMgb3IgYW4gZXRoZXJldW0gYWRkcmVzcyBmb3IgU2VjcClcbiAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBrZXksIHN1Y2ggYXMgYSBwdWJsaWMga2V5IG9yIGFuIGV0aGVyZXVtIGFkZHJlc3NcbiAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICovXG4gICAgICBtYXRlcmlhbF9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVXNlci1kZWZpbmVkIG1ldGFkYXRhLiBXaGVuIHJlbmRlcmluZyAoZS5nLiwgaW4gdGhlIGJyb3dzZXIpIHlvdSBzaG91bGQgdHJlYXRcbiAgICAgICAqIGl0IGFzIHVudHJ1c3RlZCB1c2VyIGRhdGEgKGFuZCBhdm9pZCBpbmplY3RpbmcgbWV0YWRhdGEgaW50byBIVE1MIGRpcmVjdGx5KSBpZlxuICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPd25lciBvZiB0aGUga2V5XG4gICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICovXG4gICAgICBvd25lcjogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICogICBcIkFsbG93UmF3QmxvYlNpZ25pbmdcIixcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiUmVxdWlyZU1mYVwiOiB7XG4gICAgICAgKiAgICAgICBcImNvdW50XCI6IDFcbiAgICAgICAqICAgICB9XG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkLCBzZXJpYWxpemVkIHB1YmxpYyBrZXkuIFRoZSBmb3JtYXQgdXNlZCBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTpcbiAgICAgICAqIC0gU2VjcDI1NmsxIGtleXMgdXNlIDY1LWJ5dGUgdW5jb21wcmVzc2VkIFNFQ0cgZm9ybWF0O1xuICAgICAgICogLSBTdGFyayBrZXlzIHVzZSAzMy1ieXRlIGNvbXByZXNzZWQgU0VDRyBmb3JtYXQ7XG4gICAgICAgKiAtIEJMUyBrZXlzIHVzZSA0OC1ieXRlIGNvbXByZXNzZWQgQkxTMTItMzgxIChaQ2FzaCkgZm9ybWF0O1xuICAgICAgICogLSBFZDI1NTE5IGtleXMgdXNlIHRoZSBjYW5vbmljYWwgMzItYnl0ZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gUkZDIDgwMzIuXG4gICAgICAgKiBAZXhhbXBsZSAweDA0ZDI2ODhiNmJjMmNlN2Y5ODc5YjllNzQ1ZjNjNGRjMTc3OTA4YzVjZWYwYzFiNjRjZmYxOWFlN2ZmMjdkZWU2MjNjNjRmZTlkOWMzMjVjN2ZiYmM3NDhiYmQ1ZjYwN2NlMTRkZDgzZTI4ZWJiYmI3ZDNlN2YyZmZiNzBhNzk0MzFcbiAgICAgICAqL1xuICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBrZXkgY2FuIGJlIHVzZWQgKGUuZy4sIGNoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlcylcbiAgICAgICAqIEBleGFtcGxlIEV0aDJWYWxpZGF0b3IoMSlcbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgIH07XG4gICAgS2V5SW5mb3M6IHtcbiAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgS2V5VHlwZTpcbiAgICAgIHwgXCJTZWNwRXRoQWRkclwiXG4gICAgICB8IFwiU2VjcEJ0Y1wiXG4gICAgICB8IFwiU2VjcEJ0Y1Rlc3RcIlxuICAgICAgfCBcIlNlY3BBdmFBZGRyXCJcbiAgICAgIHwgXCJTZWNwQXZhVGVzdEFkZHJcIlxuICAgICAgfCBcIkJsc1B1YlwiXG4gICAgICB8IFwiQmxzSW5hY3RpdmVcIlxuICAgICAgfCBcIkVkMjU1MTlTb2xhbmFBZGRyXCJcbiAgICAgIHwgXCJFZDI1NTE5U3VpQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUFwdG9zQWRkclwiXG4gICAgICB8IFwiRWQyNTUxOUNhcmRhbm9BZGRyVmtcIlxuICAgICAgfCBcIkVkMjU1MTlTdGVsbGFyQWRkclwiXG4gICAgICB8IFwiTW5lbW9uaWNcIlxuICAgICAgfCBcIlN0YXJrXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdyYXBwZXIgYXJvdW5kIGVuY3J5cHRlZCBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gYnl0ZXMuXG4gICAgICpcbiAgICAgKiBXZSBzZXJpYWxpemUgdGhpcyBpbnRvIGEgYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIGFuZCByZXR1cm4gdG8gdGhlIHVzZXJcbiAgICAgKiBzbyB0aGF0IHRoZXkgY2FuIHBhc3MgdGhpcyBiYWNrIHRvIHVzIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgKi9cbiAgICBMYXN0RXZhbEtleTogc3RyaW5nO1xuICAgIExpc3RNZmFSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgIG1mYV9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXVtdO1xuICAgIH07XG4gICAgTGlzdFRva2Vuc1Jlc3BvbnNlOiB7XG4gICAgICB0b2tlbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGVzY3JpYmVzIHdoZXRoZXIgYSB1c2VyIGluIGFuIG9yZyBpcyBhbiBPd25lciBvciBqdXN0IGEgcmVndWxhciBtZW1iZXJcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIE1lbWJlclJvbGU6IFwiQWxpZW5cIiB8IFwiTWVtYmVyXCIgfCBcIk93bmVyXCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCBhcyBhIHJlc3BvbnNlIGZyb20gbXVsdGlwbGUgcm91dGVzIChlLmcuLCAnZ2V0IG1mYScsICdhcHByb3ZlIG1mYScsICdhcHByb3ZlIHRvdHAnKS4gKi9cbiAgICBNZmFSZXF1ZXN0SW5mbzoge1xuICAgICAgZXhwaXJlc19hdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBcHByb3ZhbCByZXF1ZXN0IElELiAqL1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIHJlY2VpcHQ/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJlY2VpcHRcIl0gfCBudWxsO1xuICAgICAgcmVxdWVzdDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIdHRwUmVxdWVzdFwiXTtcbiAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgfTtcbiAgICBNZmFUeXBlOiBPbmVPZjxcbiAgICAgIFtcbiAgICAgICAgXCJDdWJlU2lnbmVyXCIsXG4gICAgICAgIFwiVG90cFwiLFxuICAgICAgICBcIkZpZG9cIixcbiAgICAgICAge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQW5zd2VyIGEgRklETyBjaGFsbGVuZ2Ugd2l0aCBhIHNwZWNpZmljIEZJRE8ga2V5ICovXG4gICAgICAgICAgRmlkb0tleToge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBGSURPIGtleSB0aGF0IG11c3QgYmUgdXNlIHRvIGFwcHJvdmUgdGhlIHJlcXVlc3RcbiAgICAgICAgICAgICAqIEBleGFtcGxlIEZpZG9LZXkjRXREZC4uLlpaYzg9XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgPjtcbiAgICAvKiogQGVudW0ge3N0cmluZ30gKi9cbiAgICBNZmFWb3RlOiBcImFwcHJvdmVcIiB8IFwicmVqZWN0XCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE5ldHdvcmsgbmFtZSAoJ21haW5uZXQnLCAncHJhdGVyJywgJ2dvZXJsaScpXG4gICAgICogQGV4YW1wbGUgZ29lcmxpXG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBOZXR3b3JrOiBcIm1haW5uZXRcIiB8IFwicHJhdGVyXCIgfCBcImdvZXJsaVwiIHwgXCJob2xlc2t5XCI7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAqIEBleGFtcGxlIDE3MDE4Nzk2NDBcbiAgICAgICAqL1xuICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgIHNlc3Npb25faW5mbzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDbGllbnRTZXNzaW9uSW5mb1wiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAqIHNob3VsZCBpbmNsdWRlIHRoaXMgdmFsdWUgaW4gdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXJcbiAgICAgICAqL1xuICAgICAgdG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZW51bSB7c3RyaW5nfSAqL1xuICAgIE5vdEZvdW5kRXJyb3JDb2RlOlxuICAgICAgfCBcIlVyaVNlZ21lbnRNaXNzaW5nXCJcbiAgICAgIHwgXCJVcmlTZWdtZW50SW52YWxpZFwiXG4gICAgICB8IFwiVG90cE5vdENvbmZpZ3VyZWRcIlxuICAgICAgfCBcIkZpZG9LZXlOb3RGb3VuZFwiXG4gICAgICB8IFwiRmlkb0NoYWxsZW5nZU5vdEZvdW5kXCJcbiAgICAgIHwgXCJUb3RwQ2hhbGxlbmdlTm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRSZXF1ZXN0Tm90Rm91bmRcIlxuICAgICAgfCBcIlVzZXJFeHBvcnRDaXBoZXJ0ZXh0Tm90Rm91bmRcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwcmVzZW50cyBhIGdsb2JhbGx5IHVuaXF1ZSBPSURDLWF1dGhvcml6ZWQgdXNlciBieSBleHByZXNzaW5nIHRoZSBmdWxsIFwicGF0aFwiIHRvIGEgdXNlci4gVGhhdCBpczpcbiAgICAgKlxuICAgICAqIChpc3MpICAgICAgIChzdWIpXG4gICAgICogSXNzdWVyIC0+IFN1YnJlc291cmNlXG4gICAgICovXG4gICAgT0lEQ0lkZW50aXR5OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgcm9vdC1sZXZlbCBpc3N1ZXIgd2hvIGFkbWluaXN0cmF0ZXMgdGhpcyB1c2VyLiBGcm9tZSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICogSXNzdWVyIElkZW50aWZpZXIgZm9yIHRoZSBJc3N1ZXIgb2YgdGhlIHJlc3BvbnNlLiBUaGUgaXNzXG4gICAgICAgKiB2YWx1ZSBpcyBhIGNhc2Ugc2Vuc2l0aXZlIFVSTCB1c2luZyB0aGUgaHR0cHMgc2NoZW1lIHRoYXQgY29udGFpbnNcbiAgICAgICAqIHNjaGVtZSwgaG9zdCwgYW5kIG9wdGlvbmFsbHksIHBvcnQgbnVtYmVyIGFuZCBwYXRoIGNvbXBvbmVudHMgYW5kXG4gICAgICAgKiBubyBxdWVyeSBvciBmcmFnbWVudCBjb21wb25lbnRzLlxuICAgICAgICogQGV4YW1wbGUgaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGlzczogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gRnJvbSB0aGUgT0lEQyBzcGVjOlxuICAgICAgICpcbiAgICAgICAqIEEgbG9jYWxseSB1bmlxdWUgYW5kIG5ldmVyIHJlYXNzaWduZWQgaWRlbnRpZmllciB3aXRoaW4gdGhlIElzc3VlciBmb3JcbiAgICAgICAqIHRoZSBFbmQtVXNlciwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIENsaWVudCwgZS5nLixcbiAgICAgICAqIDI0NDAwMzIwIG9yIEFJdE9hd213dFd3Y1QwazUxQmF5ZXdOdnV0ckpVcXN2bDZxczdBNC4gSXQgTVVTVCBOT1QgZXhjZWVkXG4gICAgICAgKiAyNTUgQVNDSUkgY2hhcmFjdGVycyBpbiBsZW5ndGguIFRoZSBzdWIgdmFsdWUgaXMgYSBjYXNlIHNlbnNpdGl2ZVxuICAgICAgICogc3RyaW5nLlxuICAgICAgICogQGV4YW1wbGUgMTA3NjkxNTAzNTAwMDYxNTA3MTUxMTMwODIzNjdcbiAgICAgICAqL1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgfTtcbiAgICBPaWRjTG9naW5SZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEEgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHB1cnBvc2Ugb2YgdGhlIHNlc3Npb24gKi9cbiAgICAgIHB1cnBvc2U/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgd2hhdCBjYXBhYmlsaXRpZXMgdGhpcyBzZXNzaW9uIHdpbGwgaGF2ZS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJzaWduOipcIlxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBzY29wZXM6IHN0cmluZ1tdO1xuICAgICAgdG9rZW5zPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSYXRjaGV0Q29uZmlnXCJdO1xuICAgIH07XG4gICAgT3JnSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQ6IHRoaXMgZmllbGQgc2hvdWxkIGJlIGlnbm9yZWQuICovXG4gICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgdW5pdmVyc2FsbHkgdW5pcXVlIGtleS13cmFwcGluZy1rZXkgaWRlbnRpZmllci5cbiAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgKiBAZXhhbXBsZSBtcmstZmNlMDk1MjVlODE1ODdkMjM1MjBmMTFlMDdlMmU5ZDlcbiAgICAgICAqL1xuICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBEYXRlL3RpbWUgKGluIFVUQykgd2hlbiBsYXN0ICd1bnN0YWtlJyB3YXMgcGVyZm9ybWVkLiBVbml4IGVwb2NoIGlmIG5vbmUuXG4gICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgKi9cbiAgICAgIGxhc3RfdW5zdGFrZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSG93IG1hbnkgJ3Vuc3Rha2UnIGNhbGxzIGhhcHBlbmVkIG9uIHRoZSBkYXkgd2hlbiBgbGFzdF91bnN0YWtlYCB3YXMgcGVyZm9ybWVkLlxuICAgICAgICovXG4gICAgICBsYXN0X3Vuc3Rha2VfZGF5X2NvdW50OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9yZy13aWRlIHBvbGljaWVzIHRoYXQgYXJlIGNoZWNrZWQgYmVmb3JlIGEga2V5IGlzIHVzZWQgZm9yIHNpZ25pbmdcbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCBUT1RQIGZhaWx1cmUgbGltaXQsIGkuZS4sIHRoZSBudW1iZXJcbiAgICAgICAqIG9mIHRpbWVzIGEgdXNlciBjYW4gcHJvdmlkZSBhbiBpbmNvcnJlY3QgVE9UUCBjb2RlIGJlZm9yZSBiZWluZyByYXRlIGxpbWl0ZWQuXG4gICAgICAgKiBUaGlzIHZhbHVlIGNhbiBiZSBiZXR3ZWVuIDEgYW5kIDUgKGluY2x1c2l2ZSkuXG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdDogbnVtYmVyO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgbWluaW11bVxuICAgICAgICogYW1vdW50IG9mIHRpbWUgKGluIHNlY29uZHMpIGJldHdlZW4gd2hlbiBhIHVzZXItZXhwb3J0IGlzIGluaXRpYXRlZCBhbmQgd2hlblxuICAgICAgICogaXQgbWF5IGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWUgaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2VcbiAgICAgICAqIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgKi9cbiAgICAgIHVzZXJfZXhwb3J0X2RlbGF5OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnYW5pemF0aW9uJ3MgY3VycmVudGx5IGNvbmZpZ3VyZWQgdXNlci1leHBvcnQgd2luZG93LCBpLmUuLCB0aGUgYW1vdW50XG4gICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICogdGhlIHVzZXIgZXhwb3J0IHJlcXVlc3QgaGFzIGV4cGlyZWQgYW5kIGNhbiBubyBsb25nZXIgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZVxuICAgICAgICogaXMgbWVhbmluZ2xlc3MgZm9yIG9yZ2FuaXphdGlvbnMgdGhhdCB1c2Ugb3JnLXdpZGUgZXhwb3J0LilcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHJvY2tldCBxdWVyeSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBwYWdlIGZyb20gd2hpY2ggdG8gc3RhcnQgYSBwYWdpbmF0ZWQgcXVlcnkuXG4gICAgICpcbiAgICAgKiBNVVNUIGJlIG5hbWVkIGA8cGFnZT5gIGluIHJvY2tldCB1cmwgc3BlYyBzbyB0aGF0ICdzZXJkZShyZW5hbWUgPSBcInBhZ2UuKlwiKScgYmVsb3cgY29udGludWVzIHRvIHdvcmtcbiAgICAgKi9cbiAgICBQYWdlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgKi9cbiAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAqL1xuICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgdGhlIGtleSBpcyBpbiAqL1xuICAgICAgcm9sZXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5Sb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRMaXN0S2V5c1Jlc3BvbnNlOiB7XG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVLZXlzUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICBrZXlzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICB9ICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAqL1xuICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXNwb25zZSB0eXBlIHRoYXQgd3JhcHMgYW5vdGhlciB0eXBlIGFuZCBhZGRzIGJhc2U2NHVybC1lbmNvZGVkIGVuY3J5cHRlZCBgbGFzdF9ldmFsdWF0ZWRfa2V5YFxuICAgICAqIHZhbHVlICh3aGljaCBjYW4gdGhlIHVzZXIgcGFzcyBiYWNrIHRvIHVzZSBhcyBhIHVybCBxdWVyeSBwYXJhbWV0ZXIgdG8gY29udGludWUgcGFnaW5hdGlvbikuXG4gICAgICovXG4gICAgUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCB1c2VycyBpbiBhIHJvbGUgKi9cbiAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgfSAmIHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgKi9cbiAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVzcG9uc2UgdHlwZSB0aGF0IHdyYXBzIGFub3RoZXIgdHlwZSBhbmQgYWRkcyBiYXNlNjR1cmwtZW5jb2RlZCBlbmNyeXB0ZWQgYGxhc3RfZXZhbHVhdGVkX2tleWBcbiAgICAgKiB2YWx1ZSAod2hpY2ggY2FuIHRoZSB1c2VyIHBhc3MgYmFjayB0byB1c2UgYXMgYSB1cmwgcXVlcnkgcGFyYW1ldGVyIHRvIGNvbnRpbnVlIHBhZ2luYXRpb24pLlxuICAgICAqL1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCByb2xlcyBpbiBhbiBvcmdhbml6YXRpb24uICovXG4gICAgICByb2xlczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSb2xlSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRTZXNzaW9uc1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc3BvbnNlIHR5cGUgdGhhdCB3cmFwcyBhbm90aGVyIHR5cGUgYW5kIGFkZHMgYmFzZTY0dXJsLWVuY29kZWQgZW5jcnlwdGVkIGBsYXN0X2V2YWx1YXRlZF9rZXlgXG4gICAgICogdmFsdWUgKHdoaWNoIGNhbiB0aGUgdXNlciBwYXNzIGJhY2sgdG8gdXNlIGFzIGEgdXJsIHF1ZXJ5IHBhcmFtZXRlciB0byBjb250aW51ZSBwYWdpbmF0aW9uKS5cbiAgICAgKi9cbiAgICBQYWdpbmF0ZWRVc2VyRXhwb3J0TGlzdFJlc3BvbnNlOiB7XG4gICAgICBleHBvcnRfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXVtdO1xuICAgIH0gJiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICovXG4gICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgUG9saWN5RXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlBvbGljeUVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdm1UeERlcG9zaXRFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUG9saWN5RXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJFdm1UeFJlY2VpdmVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIkV2bVR4U2VuZGVyTWlzbWF0Y2hcIlxuICAgICAgfCBcIlBvbGljeURpc2p1bmN0aW9uRXJyb3JcIlxuICAgICAgfCBcIlBvbGljeU5lZ2F0aW9uRXJyb3JcIlxuICAgICAgfCBcIkV0aDJFeGNlZWRlZE1heFVuc3Rha2VcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50VW5zdGFraW5nXCJcbiAgICAgIHwgXCJOb3RJbklwdjRBbGxvd2xpc3RcIlxuICAgICAgfCBcIk5vdEluT3JpZ2luQWxsb3dsaXN0XCJcbiAgICAgIHwgXCJJbnZhbGlkU291cmNlSXBcIlxuICAgICAgfCBcIlJhd1NpZ25pbmdOb3RBbGxvd2VkXCJcbiAgICAgIHwgXCJFaXA3MTJTaWduaW5nTm90QWxsb3dlZFwiXG4gICAgICB8IFwiT2lkY1NvdXJjZU5vdEFsbG93ZWRcIlxuICAgICAgfCBcIk5vT2lkY0F1dGhTb3VyY2VzRGVmaW5lZFwiXG4gICAgICB8IFwiQWRkS2V5VG9Sb2xlRGlzYWxsb3dlZFwiXG4gICAgICB8IFwiS2V5c0FscmVhZHlJblJvbGVcIlxuICAgICAgfCBcIktleUluTXVsdGlwbGVSb2xlc1wiXG4gICAgICB8IFwiS2V5QWNjZXNzRXJyb3JcIlxuICAgICAgfCBcIkVpcDE5MVNpZ25pbmdOb3RBbGxvd2VkXCI7XG4gICAgUHJlY29uZGl0aW9uRXJyb3JDb2RlOlxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlByZWNvbmRpdGlvbkVycm9yT3duQ29kZXNcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQb2xpY3lFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgUHJlY29uZGl0aW9uRXJyb3JPd25Db2RlczpcbiAgICAgIHwgXCJFdGgyUHJvcG9zZXJTbG90VG9vTG93XCJcbiAgICAgIHwgXCJFdGgyQXR0ZXN0YXRpb25Tb3VyY2VFcG9jaFRvb0xvd1wiXG4gICAgICB8IFwiRXRoMkF0dGVzdGF0aW9uVGFyZ2V0RXBvY2hUb29Mb3dcIlxuICAgICAgfCBcIkV0aDJDb25jdXJyZW50QmxvY2tTaWduaW5nXCJcbiAgICAgIHwgXCJFdGgyQ29uY3VycmVudEF0dGVzdGF0aW9uU2lnbmluZ1wiXG4gICAgICB8IFwiRXRoMk11bHRpRGVwb3NpdFRvTm9uR2VuZXJhdGVkS2V5XCJcbiAgICAgIHwgXCJFdGgyTXVsdGlEZXBvc2l0VW5rbm93bkluaXRpYWxEZXBvc2l0XCJcbiAgICAgIHwgXCJFdGgyTXVsdGlEZXBvc2l0V2l0aGRyYXdhbEFkZHJlc3NNaXNtYXRjaFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIHdpcmUtZW5jb2RhYmxlIGZvcm0gb2YgdGhlIFB1YmxpY0tleUNyZWRlbnRpYWwgaW50ZXJmYWNlXG4gICAgICogQ2xpZW50cyBtYXkgbmVlZCB0byBtYW51YWxseSBlbmNvZGUgaW50byB0aGlzIGZvcm1hdCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzZXJ2ZXJcbiAgICAgKlxuICAgICAqIFRoZSBQdWJsaWNLZXlDcmVkZW50aWFsIGludGVyZmFjZSBpbmhlcml0cyBmcm9tIENyZWRlbnRpYWxcbiAgICAgKiBbQ1JFREVOVElBTC1NQU5BR0VNRU5ULTFdLCBhbmQgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgcmV0dXJuZWQgdG9cbiAgICAgKiB0aGUgY2FsbGVyIHdoZW4gYSBuZXcgY3JlZGVudGlhbCBpcyBjcmVhdGVkLCBvciBhIG5ldyBhc3NlcnRpb24gaXNcbiAgICAgKiByZXF1ZXN0ZWQuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jaWZhY2UtcGtjcmVkZW50aWFsXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbDoge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBpbnRlcm5hbCBzbG90IGNvbnRhaW5zIHRoZSByZXN1bHRzIG9mIHByb2Nlc3NpbmcgY2xpZW50IGV4dGVuc2lvbnNcbiAgICAgICAqIHJlcXVlc3RlZCBieSB0aGUgUmVseWluZyBQYXJ0eSB1cG9uIHRoZSBSZWx5aW5nIFBhcnR5J3MgaW52b2NhdGlvbiBvZlxuICAgICAgICogZWl0aGVyIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUoKSBvciBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KCkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsLWNsaWVudGV4dGVuc2lvbnNyZXN1bHRzLXNsb3RcbiAgICAgICAqXG4gICAgICAgKiBJTVBMRU1FTlRBVElPTiBOT1RFOiBUaGUgdHlwZSBmb3IgdGhpcyBmaWVsZCBjb21lcyBmcm9tIHRoZSB0eXBlIG9mIGdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSB3aGljaCBhcyB0aGUgZm9sbG93aW5nIGRvYzpcbiAgICAgICAqXG4gICAgICAgKiBUaGlzIG9wZXJhdGlvbiByZXR1cm5zIHRoZSB2YWx1ZSBvZiBbW2NsaWVudEV4dGVuc2lvbnNSZXN1bHRzXV0sIHdoaWNoIGlzIGEgbWFwIGNvbnRhaW5pbmcgZXh0ZW5zaW9uIGlkZW50aWZpZXIg4oaSIGNsaWVudCBleHRlbnNpb24gb3V0cHV0IGVudHJpZXMgcHJvZHVjZWQgYnkgdGhlIGV4dGVuc2lvbuKAmXMgY2xpZW50IGV4dGVuc2lvbiBwcm9jZXNzaW5nLlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI3JlZi1mb3ItZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtZ2V0Y2xpZW50ZXh0ZW5zaW9ucmVzdWx0c1xuICAgICAgICovXG4gICAgICBjbGllbnRFeHRlbnNpb25SZXN1bHRzPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgaW50ZXJuYWwgc2xvdCBjb250YWlucyB0aGUgY3JlZGVudGlhbCBJRCwgY2hvc2VuIGJ5IHRoZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNyZWRlbnRpYWwgSUQgaXMgdXNlZCB0byBsb29rIHVwIGNyZWRlbnRpYWxzIGZvciB1c2UsXG4gICAgICAgKiBhbmQgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIGJlIGdsb2JhbGx5IHVuaXF1ZSB3aXRoIGhpZ2ggcHJvYmFiaWxpdHlcbiAgICAgICAqIGFjcm9zcyBhbGwgY3JlZGVudGlhbHMgb2YgdGhlIHNhbWUgdHlwZSwgYWNyb3NzIGFsbCBhdXRoZW50aWNhdG9ycy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWwtaWRlbnRpZmllci1zbG90XG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEF1dGhlbnRpY2F0b3JzIHJlc3BvbmQgdG8gUmVseWluZyBQYXJ0eSByZXF1ZXN0cyBieSByZXR1cm5pbmcgYW4gb2JqZWN0IGRlcml2ZWQgZnJvbSB0aGUgQXV0aGVudGljYXRvclJlc3BvbnNlIGludGVyZmFjZSAqL1xuICAgICAgcmVzcG9uc2U6XG4gICAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZVwiXVxuICAgICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBwdWJsaWMga2V5IGNyZWRlbnRpYWxcbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0ZGVmLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOiB7XG4gICAgICBhdHRlc3RhdGlvbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZVwiXTtcbiAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYVwiXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBjb250YWlucyBhIGNoYWxsZW5nZSBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAgICogbmV3bHkgY3JlYXRlZCBjcmVkZW50aWFs4oCZcyBhdHRlc3RhdGlvbiBvYmplY3QuIFNlZSB0aGUgwqfigK8xMy40LjNcbiAgICAgICAqIENyeXB0b2dyYXBoaWMgQ2hhbGxlbmdlcyBzZWN1cml0eSBjb25zaWRlcmF0aW9uLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1jaGFsbGVuZ2VcbiAgICAgICAqL1xuICAgICAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIG1lbWJlciBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IFJlbHlpbmcgUGFydGllcyB0aGF0IHdpc2ggdG8gbGltaXRcbiAgICAgICAqIHRoZSBjcmVhdGlvbiBvZiBtdWx0aXBsZSBjcmVkZW50aWFscyBmb3IgdGhlIHNhbWUgYWNjb3VudCBvbiBhIHNpbmdsZVxuICAgICAgICogYXV0aGVudGljYXRvci4gVGhlIGNsaWVudCBpcyByZXF1ZXN0ZWQgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBuZXdcbiAgICAgICAqIGNyZWRlbnRpYWwgd291bGQgYmUgY3JlYXRlZCBvbiBhbiBhdXRoZW50aWNhdG9yIHRoYXQgYWxzbyBjb250YWlucyBvbmVcbiAgICAgICAqIG9mIHRoZSBjcmVkZW50aWFscyBlbnVtZXJhdGVkIGluIHRoaXMgcGFyYW1ldGVyLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbGNyZWF0aW9ub3B0aW9ucy1leGNsdWRlY3JlZGVudGlhbHNcbiAgICAgICAqL1xuICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclwiXVtdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgY29udGFpbnMgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHJlcXVlc3RpbmcgYWRkaXRpb25hbFxuICAgICAgICogcHJvY2Vzc2luZyBieSB0aGUgY2xpZW50IGFuZCBhdXRoZW50aWNhdG9yLiBGb3IgZXhhbXBsZSwgdGhlIGNhbGxlciBtYXlcbiAgICAgICAqIHJlcXVlc3QgdGhhdCBvbmx5IGF1dGhlbnRpY2F0b3JzIHdpdGggY2VydGFpbiBjYXBhYmlsaXRpZXMgYmUgdXNlZCB0b1xuICAgICAgICogY3JlYXRlIHRoZSBjcmVkZW50aWFsLCBvciB0aGF0IHBhcnRpY3VsYXIgaW5mb3JtYXRpb24gYmUgcmV0dXJuZWQgaW4gdGhlXG4gICAgICAgKiBhdHRlc3RhdGlvbiBvYmplY3QuIFNvbWUgZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZCBpbiDCp+KArzkgV2ViQXV0aG5cbiAgICAgICAqIEV4dGVuc2lvbnM7IGNvbnN1bHQgdGhlIElBTkEgXCJXZWJBdXRobiBFeHRlbnNpb24gSWRlbnRpZmllcnNcIiByZWdpc3RyeVxuICAgICAgICogW0lBTkEtV2ViQXV0aG4tUmVnaXN0cmllc10gZXN0YWJsaXNoZWQgYnkgW1JGQzg4MDldIGZvciBhbiB1cC10by1kYXRlXG4gICAgICAgKiBsaXN0IG9mIHJlZ2lzdGVyZWQgV2ViQXV0aG4gRXh0ZW5zaW9ucy5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtZXh0ZW5zaW9uc1xuICAgICAgICovXG4gICAgICBleHRlbnNpb25zPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXNpcmVkIHByb3BlcnRpZXMgb2YgdGhlXG4gICAgICAgKiBjcmVkZW50aWFsIHRvIGJlIGNyZWF0ZWQuIFRoZSBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZyb20gbW9zdCBwcmVmZXJyZWQgdG9cbiAgICAgICAqIGxlYXN0IHByZWZlcnJlZC4gVGhlIGNsaWVudCBtYWtlcyBhIGJlc3QtZWZmb3J0IHRvIGNyZWF0ZSB0aGUgbW9zdFxuICAgICAgICogcHJlZmVycmVkIGNyZWRlbnRpYWwgdGhhdCBpdCBjYW4uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsY3JlYXRpb25vcHRpb25zLXB1YmtleWNyZWRwYXJhbXNcbiAgICAgICAqL1xuICAgICAgcHViS2V5Q3JlZFBhcmFtczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVyc1wiXVtdO1xuICAgICAgcnA6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5XCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZW1iZXIgc3BlY2lmaWVzIGEgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0aGF0IHRoZSBjYWxsZXIgaXNcbiAgICAgICAqIHdpbGxpbmcgdG8gd2FpdCBmb3IgdGhlIGNhbGwgdG8gY29tcGxldGUuIFRoaXMgaXMgdHJlYXRlZCBhcyBhIGhpbnQsIGFuZFxuICAgICAgICogTUFZIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNsaWVudC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxjcmVhdGlvbm9wdGlvbnMtdGltZW91dFxuICAgICAgICovXG4gICAgICB0aW1lb3V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIHVzZXI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHlcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBkaWN0aW9uYXJ5IGNvbnRhaW5zIHRoZSBhdHRyaWJ1dGVzIHRoYXQgYXJlIHNwZWNpZmllZCBieSBhIGNhbGxlciB3aGVuXG4gICAgICogcmVmZXJyaW5nIHRvIGEgcHVibGljIGtleSBjcmVkZW50aWFsIGFzIGFuIGlucHV0IHBhcmFtZXRlciB0byB0aGUgY3JlYXRlKClcbiAgICAgKiBvciBnZXQoKSBtZXRob2RzLiBJdCBtaXJyb3JzIHRoZSBmaWVsZHMgb2YgdGhlIFB1YmxpY0tleUNyZWRlbnRpYWwgb2JqZWN0XG4gICAgICogcmV0dXJuZWQgYnkgdGhlIGxhdHRlciBtZXRob2RzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RpY3Rpb25hcnktY3JlZGVudGlhbC1kZXNjcmlwdG9yXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIGNvbnRhaW5zIHRoZSBjcmVkZW50aWFsIElEIG9mIHRoZSBwdWJsaWMga2V5IGNyZWRlbnRpYWwgdGhlIGNhbGxlciBpcyByZWZlcnJpbmcgdG8uXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsZGVzY3JpcHRvci1pZFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBPUFRJT05BTCBtZW1iZXIgY29udGFpbnMgYSBoaW50IGFzIHRvIGhvdyB0aGUgY2xpZW50IG1pZ2h0XG4gICAgICAgKiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBtYW5hZ2luZyBhdXRoZW50aWNhdG9yIG9mIHRoZSBwdWJsaWMga2V5IGNyZWRlbnRpYWxcbiAgICAgICAqIHRoZSBjYWxsZXIgaXMgcmVmZXJyaW5nIHRvLiBUaGUgdmFsdWVzIFNIT1VMRCBiZSBtZW1iZXJzIG9mXG4gICAgICAgKiBBdXRoZW50aWNhdG9yVHJhbnNwb3J0IGJ1dCBjbGllbnQgcGxhdGZvcm1zIE1VU1QgaWdub3JlIHVua25vd24gdmFsdWVzLlxuICAgICAgICpcbiAgICAgICAqIFRoZSBnZXRUcmFuc3BvcnRzKCkgb3BlcmF0aW9uIGNhbiBwcm92aWRlIHN1aXRhYmxlIHZhbHVlcyBmb3IgdGhpc1xuICAgICAgICogbWVtYmVyLiBXaGVuIHJlZ2lzdGVyaW5nIGEgbmV3IGNyZWRlbnRpYWwsIHRoZSBSZWx5aW5nIFBhcnR5IFNIT1VMRFxuICAgICAgICogc3RvcmUgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gZ2V0VHJhbnNwb3J0cygpLiBXaGVuIGNyZWF0aW5nIGFcbiAgICAgICAqIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIGZvciB0aGF0IGNyZWRlbnRpYWwsIHRoZSBSZWx5aW5nIFBhcnR5XG4gICAgICAgKiBTSE9VTEQgcmV0cmlldmUgdGhhdCBzdG9yZWQgdmFsdWUgYW5kIHNldCBpdCBhcyB0aGUgdmFsdWUgb2YgdGhlXG4gICAgICAgKiB0cmFuc3BvcnRzIG1lbWJlci5cbiAgICAgICAqL1xuICAgICAgdHJhbnNwb3J0cz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQXV0aGVudGljYXRvclRyYW5zcG9ydFwiXVtdIHwgbnVsbDtcbiAgICAgIHR5cGU6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFR5cGVcIl07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gc3VwcGx5IGFkZGl0aW9uYWwgcGFyYW1ldGVycyB3aGVuIGNyZWF0aW5nIGEgbmV3XG4gICAgICogY3JlZGVudGlhbC5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkaWN0aW9uYXJ5LWNyZWRlbnRpYWwtcGFyYW1zXG4gICAgICovXG4gICAgUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHNwZWNpZmllcyB0aGUgY3J5cHRvZ3JhcGhpYyBzaWduYXR1cmUgYWxnb3JpdGhtIHdpdGggd2hpY2hcbiAgICAgICAqIHRoZSBuZXdseSBnZW5lcmF0ZWQgY3JlZGVudGlhbCB3aWxsIGJlIHVzZWQsIGFuZCB0aHVzIGFsc28gdGhlIHR5cGUgb2ZcbiAgICAgICAqIGFzeW1tZXRyaWMga2V5IHBhaXIgdG8gYmUgZ2VuZXJhdGVkLCBlLmcuLCBSU0Egb3IgRWxsaXB0aWMgQ3VydmUuXG4gICAgICAgKi9cbiAgICAgIGFsZzogbnVtYmVyO1xuICAgICAgdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsVHlwZVwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgYFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc2AgZGljdGlvbmFyeSBzdXBwbGllcyBnZXQoKSB3aXRoIHRoZVxuICAgICAqIGRhdGEgaXQgbmVlZHMgdG8gZ2VuZXJhdGUgYW4gYXNzZXJ0aW9uLiBJdHMgY2hhbGxlbmdlIG1lbWJlciBNVVNUIGJlXG4gICAgICogcHJlc2VudCwgd2hpbGUgaXRzIG90aGVyIG1lbWJlcnMgYXJlIE9QVElPTkFMLlxuICAgICAqXG4gICAgICogVGhpcyBzdHJ1Y3QgaXMgYWxzbyB1c2VkIGFzIHBhcnQgb2YgdGhlIHZlcmlmaWNhdGlvbiBwcm9jZWR1cmUgZm9yIGFzc2VydGlvbnNcbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIGNvbnRhaW5zIGEgbGlzdCBvZiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvclxuICAgICAgICogb2JqZWN0cyByZXByZXNlbnRpbmcgcHVibGljIGtleSBjcmVkZW50aWFscyBhY2NlcHRhYmxlIHRvIHRoZSBjYWxsZXIsIGluXG4gICAgICAgKiBkZXNjZW5kaW5nIG9yZGVyIG9mIHRoZSBjYWxsZXLigJlzIHByZWZlcmVuY2UgKHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0XG4gICAgICAgKiBpcyB0aGUgbW9zdCBwcmVmZXJyZWQgY3JlZGVudGlhbCwgYW5kIHNvIG9uIGRvd24gdGhlIGxpc3QpLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLWFsbG93Y3JlZGVudGlhbHNcbiAgICAgICAqL1xuICAgICAgYWxsb3dDcmVkZW50aWFscz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JcIl1bXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWVtYmVyIHJlcHJlc2VudHMgYSBjaGFsbGVuZ2UgdGhhdCB0aGUgc2VsZWN0ZWQgYXV0aGVudGljYXRvclxuICAgICAgICogc2lnbnMsIGFsb25nIHdpdGggb3RoZXIgZGF0YSwgd2hlbiBwcm9kdWNpbmcgYW4gYXV0aGVudGljYXRpb25cbiAgICAgICAqIGFzc2VydGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxyZXF1ZXN0b3B0aW9ucy1jaGFsbGVuZ2VcbiAgICAgICAqL1xuICAgICAgY2hhbGxlbmdlOiBzdHJpbmc7XG4gICAgICBleHRlbnNpb25zPzogdW5rbm93bjtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgT1BUSU9OQUwgbWVtYmVyIHNwZWNpZmllcyB0aGUgcmVseWluZyBwYXJ0eSBpZGVudGlmaWVyIGNsYWltZWQgYnlcbiAgICAgICAqIHRoZSBjYWxsZXIuIElmIG9taXR0ZWQsIGl0cyB2YWx1ZSB3aWxsIGJlIHRoZSBDcmVkZW50aWFsc0NvbnRhaW5lclxuICAgICAgICogb2JqZWN04oCZcyByZWxldmFudCBzZXR0aW5ncyBvYmplY3QncyBvcmlnaW4ncyBlZmZlY3RpdmUgZG9tYWluLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHJlcXVlc3RvcHRpb25zLXJwaWRcbiAgICAgICAqL1xuICAgICAgcnBJZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIE9QVElPTkFMIG1lbWJlciBzcGVjaWZpZXMgYSB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRoYXQgdGhlIGNhbGxlclxuICAgICAgICogaXMgd2lsbGluZyB0byB3YWl0IGZvciB0aGUgY2FsbCB0byBjb21wbGV0ZS4gVGhlIHZhbHVlIGlzIHRyZWF0ZWQgYXMgYVxuICAgICAgICogaGludCwgYW5kIE1BWSBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjbGllbnQuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFscmVxdWVzdG9wdGlvbnMtdGltZW91dFxuICAgICAgICovXG4gICAgICB0aW1lb3V0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIHVzZXJWZXJpZmljYXRpb24/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudFwiXTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5IGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbFxuICAgICAqIFJlbHlpbmcgUGFydHkgYXR0cmlidXRlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IGNyZWRlbnRpYWwuXG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZGljdGlvbmFyeS1ycC1jcmVkZW50aWFsLXBhcmFtc1xuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIFJlbHlpbmcgUGFydHkgZW50aXR5LCB3aGljaCBzZXRzIHRoZSBSUCBJRC5cbiAgICAgICAqXG4gICAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZG9tLXB1YmxpY2tleWNyZWRlbnRpYWxycGVudGl0eS1pZFxuICAgICAgICovXG4gICAgICBpZD86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBBIGh1bWFuLXBhbGF0YWJsZSBuYW1lIGZvciB0aGUgZW50aXR5LiBJdHMgZnVuY3Rpb24gZGVwZW5kcyBvbiB3aGF0IHRoZVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbEVudGl0eSByZXByZXNlbnRzOiBXaGVuIGluaGVyaXRlZCBieVxuICAgICAgICogUHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5IGl0IGlzIGEgaHVtYW4tcGFsYXRhYmxlIGlkZW50aWZpZXIgZm9yIHRoZVxuICAgICAgICogUmVseWluZyBQYXJ0eSwgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheS4gRm9yIGV4YW1wbGUsIFwiQUNNRVxuICAgICAgICogQ29ycG9yYXRpb25cIiwgXCJXb25kZXJmdWwgV2lkZ2V0cywgSW5jLlwiIG9yIFwi0J7QkNCeINCf0YDQuNC80LXRgNGC0LXRhVwiLlxuICAgICAgICpcbiAgICAgICAqIFJlbHlpbmcgUGFydGllcyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuM1xuICAgICAgICogb2YgW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgd2hlbiBzZXR0aW5nIG5hbWUncyB2YWx1ZSwgb3IgZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlXG4gICAgICAgKiB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRoaXMgc3RyaW5nIE1BWSBjb250YWluIGxhbmd1YWdlIGFuZCBkaXJlY3Rpb24gbWV0YWRhdGEuIFJlbHlpbmcgUGFydGllc1xuICAgICAgICogU0hPVUxEIGNvbnNpZGVyIHByb3ZpZGluZyB0aGlzIGluZm9ybWF0aW9uLiBTZWUgwqfigK82LjQuMiBMYW5ndWFnZSBhbmRcbiAgICAgICAqIERpcmVjdGlvbiBFbmNvZGluZyBhYm91dCBob3cgdGhpcyBtZXRhZGF0YSBpcyBlbmNvZGVkLlxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIHRoZSB2YWxpZCBjcmVkZW50aWFsIHR5cGVzLiBJdCBpcyBhbiBleHRlbnNpb25cbiAgICAgKiBwb2ludDsgdmFsdWVzIGNhbiBiZSBhZGRlZCB0byBpdCBpbiB0aGUgZnV0dXJlLCBhcyBtb3JlIGNyZWRlbnRpYWwgdHlwZXMgYXJlXG4gICAgICogZGVmaW5lZC4gVGhlIHZhbHVlcyBvZiB0aGlzIGVudW1lcmF0aW9uIGFyZSB1c2VkIGZvciB2ZXJzaW9uaW5nIHRoZVxuICAgICAqIEF1dGhlbnRpY2F0aW9uIEFzc2VydGlvbiBhbmQgYXR0ZXN0YXRpb24gc3RydWN0dXJlcyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2ZcbiAgICAgKiB0aGUgYXV0aGVudGljYXRvci4gIEN1cnJlbnRseSBvbmUgY3JlZGVudGlhbCB0eXBlIGlzIGRlZmluZWQsIG5hbWVseVxuICAgICAqIFwicHVibGljLWtleVwiLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW1kZWYtcHVibGlja2V5Y3JlZGVudGlhbHR5cGVcbiAgICAgKiBAZW51bSB7c3RyaW5nfVxuICAgICAqL1xuICAgIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOiBcInB1YmxpYy1rZXlcIjtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIFB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5IGRpY3Rpb25hcnkgaXMgdXNlZCB0byBzdXBwbHkgYWRkaXRpb25hbFxuICAgICAqIHVzZXIgYWNjb3VudCBhdHRyaWJ1dGVzIHdoZW4gY3JlYXRpbmcgYSBuZXcgY3JlZGVudGlhbC5cbiAgICAgKi9cbiAgICBQdWJsaWNLZXlDcmVkZW50aWFsVXNlckVudGl0eToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gQSBodW1hbi1wYWxhdGFibGUgbmFtZSBmb3IgdGhlIHVzZXIgYWNjb3VudCwgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheS5cbiAgICAgICAqIEZvciBleGFtcGxlLCBcIkFsZXggTcO8bGxlclwiIG9yIFwi55Sw5Lit5YCrXCIuIFRoZSBSZWx5aW5nIFBhcnR5IFNIT1VMRCBsZXQgdGhlXG4gICAgICAgKiB1c2VyIGNob29zZSB0aGlzLCBhbmQgU0hPVUxEIE5PVCByZXN0cmljdCB0aGUgY2hvaWNlIG1vcmUgdGhhblxuICAgICAgICogbmVjZXNzYXJ5LlxuICAgICAgICpcbiAgICAgICAqIFJlbHlpbmcgUGFydGllcyBTSE9VTEQgcGVyZm9ybSBlbmZvcmNlbWVudCwgYXMgcHJlc2NyaWJlZCBpbiBTZWN0aW9uIDIuM1xuICAgICAgICogb2YgW1JGQzgyNjZdIGZvciB0aGUgTmlja25hbWUgUHJvZmlsZSBvZiB0aGUgUFJFQ0lTIEZyZWVmb3JtQ2xhc3NcbiAgICAgICAqIFtSRkM4MjY0XSwgd2hlbiBzZXR0aW5nIGRpc3BsYXlOYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvXG4gICAgICAgKiB0aGUgdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMi4zIG9mXG4gICAgICAgKiBbUkZDODI2Nl0gZm9yIHRoZSBOaWNrbmFtZSBQcm9maWxlIG9mIHRoZSBQUkVDSVMgRnJlZWZvcm1DbGFzc1xuICAgICAgICogW1JGQzgyNjRdLCBvbiBkaXNwbGF5TmFtZSdzIHZhbHVlIHByaW9yIHRvIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlciBvciBpbmNsdWRpbmcgdGhlIHZhbHVlIGFzIGEgcGFyYW1ldGVyIG9mIHRoZVxuICAgICAgICogYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsIG9wZXJhdGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBXaGVuIGNsaWVudHMsIGNsaWVudCBwbGF0Zm9ybXMsIG9yIGF1dGhlbnRpY2F0b3JzIGRpc3BsYXkgYVxuICAgICAgICogZGlzcGxheU5hbWUncyB2YWx1ZSwgdGhleSBzaG91bGQgYWx3YXlzIHVzZSBVSSBlbGVtZW50cyB0byBwcm92aWRlIGFcbiAgICAgICAqIGNsZWFyIGJvdW5kYXJ5IGFyb3VuZCB0aGUgZGlzcGxheWVkIHZhbHVlLCBhbmQgbm90IGFsbG93IG92ZXJmbG93IGludG9cbiAgICAgICAqIG90aGVyIGVsZW1lbnRzIFtjc3Mtb3ZlcmZsb3ctM10uXG4gICAgICAgKlxuICAgICAgICogQXV0aGVudGljYXRvcnMgTVVTVCBhY2NlcHQgYW5kIHN0b3JlIGEgNjQtYnl0ZSBtaW5pbXVtIGxlbmd0aCBmb3IgYVxuICAgICAgICogZGlzcGxheU5hbWUgbWVtYmVy4oCZcyB2YWx1ZS4gQXV0aGVudGljYXRvcnMgTUFZIHRydW5jYXRlIGEgZGlzcGxheU5hbWVcbiAgICAgICAqIG1lbWJlcuKAmXMgdmFsdWUgc28gdGhhdCBpdCBmaXRzIHdpdGhpbiA2NCBieXRlcy4gU2VlIMKn4oCvNi40LjEgU3RyaW5nXG4gICAgICAgKiBUcnVuY2F0aW9uIGFib3V0IHRydW5jYXRpb24gYW5kIG90aGVyIGNvbnNpZGVyYXRpb25zLlxuICAgICAgICpcbiAgICAgICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi0yLyNkb20tcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHktZGlzcGxheW5hbWVcbiAgICAgICAqL1xuICAgICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyIGhhbmRsZSBvZiB0aGUgdXNlciBhY2NvdW50IGVudGl0eS4gQSB1c2VyIGhhbmRsZSBpcyBhbiBvcGFxdWVcbiAgICAgICAqIGJ5dGUgc2VxdWVuY2Ugd2l0aCBhIG1heGltdW0gc2l6ZSBvZiA2NCBieXRlcywgYW5kIGlzIG5vdCBtZWFudCB0byBiZVxuICAgICAgICogZGlzcGxheWVkIHRvIHRoZSB1c2VyLlxuICAgICAgICpcbiAgICAgICAqIFRvIGVuc3VyZSBzZWN1cmUgb3BlcmF0aW9uLCBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBkZWNpc2lvbnNcbiAgICAgICAqIE1VU1QgYmUgbWFkZSBvbiB0aGUgYmFzaXMgb2YgdGhpcyBpZCBtZW1iZXIsIG5vdCB0aGUgZGlzcGxheU5hbWUgbm9yXG4gICAgICAgKiBuYW1lIG1lbWJlcnMuIFNlZSBTZWN0aW9uIDYuMSBvZiBbUkZDODI2Nl0uXG4gICAgICAgKlxuICAgICAgICogVGhlIHVzZXIgaGFuZGxlIE1VU1QgTk9UIGNvbnRhaW4gcGVyc29uYWxseSBpZGVudGlmeWluZyBpbmZvcm1hdGlvblxuICAgICAgICogYWJvdXQgdGhlIHVzZXIsIHN1Y2ggYXMgYSB1c2VybmFtZSBvciBlLW1haWwgYWRkcmVzczsgc2VlIMKn4oCvMTQuNi4xIFVzZXJcbiAgICAgICAqIEhhbmRsZSBDb250ZW50cyBmb3IgZGV0YWlscy4gVGhlIHVzZXIgaGFuZGxlIE1VU1QgTk9UIGJlIGVtcHR5LCB0aG91Z2hcbiAgICAgICAqIGl0IE1BWSBiZSBudWxsLlxuICAgICAgICpcbiAgICAgICAqIE5vdGU6IHRoZSB1c2VyIGhhbmRsZSBvdWdodCBub3QgYmUgYSBjb25zdGFudCB2YWx1ZSBhY3Jvc3MgZGlmZmVyZW50XG4gICAgICAgKiBhY2NvdW50cywgZXZlbiBmb3Igbm9uLWRpc2NvdmVyYWJsZSBjcmVkZW50aWFscywgYmVjYXVzZSBzb21lXG4gICAgICAgKiBhdXRoZW50aWNhdG9ycyBhbHdheXMgY3JlYXRlIGRpc2NvdmVyYWJsZSBjcmVkZW50aWFscy4gVGh1cyBhIGNvbnN0YW50XG4gICAgICAgKiB1c2VyIGhhbmRsZSB3b3VsZCBwcmV2ZW50IGEgdXNlciBmcm9tIHVzaW5nIHN1Y2ggYW4gYXV0aGVudGljYXRvciB3aXRoXG4gICAgICAgKiBtb3JlIHRoYW4gb25lIGFjY291bnQgYXQgdGhlIFJlbHlpbmcgUGFydHkuXG4gICAgICAgKlxuICAgICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2RvbS1wdWJsaWNrZXljcmVkZW50aWFsdXNlcmVudGl0eS1pZFxuICAgICAgICovXG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gV2hlbiBpbmhlcml0ZWQgYnkgUHVibGljS2V5Q3JlZGVudGlhbFVzZXJFbnRpdHksIGl0IGlzIGEgaHVtYW4tcGFsYXRhYmxlXG4gICAgICAgKiBpZGVudGlmaWVyIGZvciBhIHVzZXIgYWNjb3VudC4gSXQgaXMgaW50ZW5kZWQgb25seSBmb3IgZGlzcGxheSwgaS5lLixcbiAgICAgICAqIGFpZGluZyB0aGUgdXNlciBpbiBkZXRlcm1pbmluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZXIgYWNjb3VudHMgd2l0aFxuICAgICAgICogc2ltaWxhciBkaXNwbGF5TmFtZXMuIEZvciBleGFtcGxlLCBcImFsZXhtXCIsIFwiYWxleC5tdWVsbGVyQGV4YW1wbGUuY29tXCJcbiAgICAgICAqIG9yIFwiKzE0MjU1NTUxMjM0XCIuXG4gICAgICAgKlxuICAgICAgICogVGhlIFJlbHlpbmcgUGFydHkgTUFZIGxldCB0aGUgdXNlciBjaG9vc2UgdGhpcyB2YWx1ZS4gVGhlIFJlbHlpbmcgUGFydHlcbiAgICAgICAqIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMy40LjMgb2YgW1JGQzgyNjVdXG4gICAgICAgKiBmb3IgdGhlIFVzZXJuYW1lQ2FzZVByZXNlcnZlZCBQcm9maWxlIG9mIHRoZSBQUkVDSVMgSWRlbnRpZmllckNsYXNzXG4gICAgICAgKiBbUkZDODI2NF0sIHdoZW4gc2V0dGluZyBuYW1lJ3MgdmFsdWUsIG9yIGRpc3BsYXlpbmcgdGhlIHZhbHVlIHRvIHRoZVxuICAgICAgICogdXNlci5cbiAgICAgICAqXG4gICAgICAgKiBUaGlzIHN0cmluZyBNQVkgY29udGFpbiBsYW5ndWFnZSBhbmQgZGlyZWN0aW9uIG1ldGFkYXRhLiBSZWx5aW5nIFBhcnRpZXNcbiAgICAgICAqIFNIT1VMRCBjb25zaWRlciBwcm92aWRpbmcgdGhpcyBpbmZvcm1hdGlvbi4gU2VlIMKn4oCvNi40LjIgTGFuZ3VhZ2UgYW5kXG4gICAgICAgKiBEaXJlY3Rpb24gRW5jb2RpbmcgYWJvdXQgaG93IHRoaXMgbWV0YWRhdGEgaXMgZW5jb2RlZC5cbiAgICAgICAqXG4gICAgICAgKiBDbGllbnRzIFNIT1VMRCBwZXJmb3JtIGVuZm9yY2VtZW50LCBhcyBwcmVzY3JpYmVkIGluIFNlY3Rpb24gMy40LjMgb2YgW1JGQzgyNjVdIGZvciB0aGUgVXNlcm5hbWVDYXNlUHJlc2VydmVkIFByb2ZpbGUgb2YgdGhlIFBSRUNJUyBJZGVudGlmaWVyQ2xhc3MgW1JGQzgyNjRdLCBvbiBuYW1lJ3MgdmFsdWUgcHJpb3IgdG8gZGlzcGxheWluZyB0aGUgdmFsdWUgdG8gdGhlIHVzZXIgb3IgaW5jbHVkaW5nIHRoZSB2YWx1ZSBhcyBhIHBhcmFtZXRlciBvZiB0aGUgYXV0aGVudGljYXRvck1ha2VDcmVkZW50aWFsIG9wZXJhdGlvbi5cbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH07XG4gICAgUmF0Y2hldENvbmZpZzoge1xuICAgICAgLyoqIEBkZWZhdWx0IGRlZmF1bHRfYXV0aF9saWZldGltZSAqL1xuICAgICAgYXV0aF9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X2dyYWNlX2xpZmV0aW1lICovXG4gICAgICBncmFjZV9saWZldGltZT86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vjb25kc1wiXTtcbiAgICAgIC8qKiBAZGVmYXVsdCBkZWZhdWx0X3JlZnJlc2hfbGlmZXRpbWUgKi9cbiAgICAgIHJlZnJlc2hfbGlmZXRpbWU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAvKiogQGRlZmF1bHQgZGVmYXVsdF9zZXNzaW9uX2xpZmV0aW1lICovXG4gICAgICBzZXNzaW9uX2xpZmV0aW1lPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZWNlaXB0IHRoYXQgYW4gTUZBIHJlcXVlc3Qgd2FzIGFwcHJvdmVkLiAqL1xuICAgIFJlY2VpcHQ6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIENvbmZpcm1hdGlvbiBjb2RlIHRoZSB1c2VyIG5lZWRzIHRvIHByZXNlbnQgd2hlbiByZXN1bWluZyB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAgICAgICAqIEBleGFtcGxlIGJhMWQ3NWRkLWQ5OTktNGMxYi05NDRkLTI1YzI1NDQwYzhhZlxuICAgICAgICovXG4gICAgICBjb25maXJtYXRpb246IHN0cmluZztcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBsb2dnZWQtaW4gdXNlciB3aG9zZSBhY3Rpb24gY3JlYXRlZCB0aGlzIGFwcHJvdmFsLiAqL1xuICAgICAgZmluYWxfYXBwcm92ZXI6IHN0cmluZztcbiAgICAgIHRpbWVzdGFtcDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcG9jaERhdGVUaW1lXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4dGVuZGVkIGZvcm0gb2YgYFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uc2AgdGhhdCBhbGxvd3MgY2xpZW50cyB0byBkZXJpdmUgdGhlIFdlYkF1dGhuIGNoYWxsZW5nZVxuICAgICAqIGZyb20gYSBzdHJ1Y3R1cmVkIHByZWltYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHdlYnVhdGhuIHNpZ25hdHVyZSBjYW4gb25seSBiZSB1c2VkIGZvciBhIHNwZWNpZmljIHB1cnBvc2VcbiAgICAgKi9cbiAgICBSZXF1ZXN0T3B0aW9uc1dpdGhIYXNoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNoYWxsZW5nZVBpZWNlc1wiXSAmIHtcbiAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZW51bWVyYXRpb27igJlzIHZhbHVlcyBkZXNjcmliZSB0aGUgUmVseWluZyBQYXJ0eSdzIHJlcXVpcmVtZW50cyBmb3JcbiAgICAgKiBjbGllbnQtc2lkZSBkaXNjb3ZlcmFibGUgY3JlZGVudGlhbHMgKGZvcm1lcmx5IGtub3duIGFzIHJlc2lkZW50IGNyZWRlbnRpYWxzXG4gICAgICogb3IgcmVzaWRlbnQga2V5cyk6XG4gICAgICpcbiAgICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4tMi8jZW51bWRlZi1yZXNpZGVudGtleXJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBSZXNpZGVudEtleVJlcXVpcmVtZW50OiBcImRpc2NvdXJhZ2VkXCIgfCBcInByZWZlcnJlZFwiIHwgXCJyZXF1aXJlZFwiO1xuICAgIFJldm9rZVRva2VuUmVzcG9uc2U6IHtcbiAgICAgIHRva2VuPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl0gfCBudWxsO1xuICAgIH07XG4gICAgUmV2b2tlVG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHRoYXQgd2VyZSByZXZva2VkLiAqL1xuICAgICAgcmV2b2tlZDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb2tlbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIFJvbGVJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSByb2xlIGlzIGVuYWJsZWRcbiAgICAgICAqIEBleGFtcGxlIHRydWVcbiAgICAgICAqL1xuICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZCBUaGUgQ3ViZVNpZ25lciBJRHMgb2YgYXQgbW9zdCAxMDAga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlICovXG4gICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIHRoZSByb2xlIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAqL1xuICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBQb2xpY3kgdGhhdCBpcyBjaGVja2VkIHdoZW5ldmVyIGEga2V5IGlzIGFjY2Vzc2VkIGZvciBzaWduaW5nIHZpYSB0aGlzIHJvbGUuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTIzLjQ1Ni43OC45LzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSByb2xlXG4gICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICovXG4gICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQuIFRoZSBsaXN0IG9mIGF0IG1vc3QgMTAwIHVzZXJzIHdpdGggYWNjZXNzIHRvIHRoZSByb2xlLiAqL1xuICAgICAgdXNlcnM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICogQGRlc2NyaXB0aW9uIER1cmF0aW9uIG1lYXN1cmVkIGluIHNlY29uZHNcbiAgICAgKiBBIHdyYXBwZXIgdHlwZSBmb3Igc2VyaWFsaXphdGlvbiB0aGF0IGVuY29kZXMgYSBgRHVyYXRpb25gIGFzIGEgYHU2NGAgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcy5cbiAgICAgKi9cbiAgICBTZWNvbmRzOiBudW1iZXI7XG4gICAgU2Vzc2lvbkluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgKiBAZXhhbXBsZSBPSURDIGxvZ2luIHNlc3Npb25cbiAgICAgICAqL1xuICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgc2Vzc2lvbiwgYnV0IGNhbm5vdCBiZSB1c2VkIGZvciBhdXRoLlxuICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICovXG4gICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiBzZXNzaW9ucyAqL1xuICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICB9O1xuICAgIFNpZ25lckVycm9yQ29kZTpcbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTaWduZXJFcnJvck93bkNvZGVzXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRWYWx1ZUNvZGVcIl1cbiAgICAgIHwgY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJCYWRSZXF1ZXN0RXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQmFkR2F0ZXdheUVycm9yQ29kZVwiXVxuICAgICAgfCBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk5vdEZvdW5kRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRm9yYmlkZGVuRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVW5hdXRob3JpemVkRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHJlY29uZGl0aW9uRXJyb3JDb2RlXCJdXG4gICAgICB8IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW50ZXJuYWxFcnJvckNvZGVcIl07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgU2lnbmVyRXJyb3JPd25Db2RlczogXCJVbmhhbmRsZWRFcnJvclwiIHwgXCJQcm94eVN0YXJ0RXJyb3JcIiB8IFwiRW5jbGF2ZUVycm9yXCI7XG4gICAgLyoqXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICAgXCJtZXNzYWdlX2Jhc2U2NFwiOiBcIkFRQUJBOE9LVnpMRWpzdHN0TjR4WHIzOWtMS0hUOGQ1OGVRWTFRRXM2TWVYd0VGQnJ4VEFsVUxYMXRyb0xiV3h1QVhRcWdiUW9mR2k2ejhmSmk3S0FBSWY3WU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKSzB0bjM5azI4cytYODZXNDdFdmJSUktuWUJWUThRL2wybTFFYmZUNyt2QVFJQ0FBRU1BZ0FBQUdRQUFBQUFBQUFBXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgU29sYW5hU2lnblJlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gU29sYW5hIGJhc2U2NC1lbmNvZGVkIHNlcmlhbGl6ZWQgTWVzc2FnZSAqL1xuICAgICAgbWVzc2FnZV9iYXNlNjQ6IHN0cmluZztcbiAgICB9O1xuICAgIFNvbGFuYVNpZ25SZXNwb25zZToge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgfTtcbiAgICBTdGFrZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBjaGFpbiBvbiB3aGljaCB3ZSB3aWxsIGRlcG9zaXRcbiAgICAgICAqIEBleGFtcGxlIDVcbiAgICAgICAqL1xuICAgICAgY2hhaW5faWQ6IG51bWJlcjtcbiAgICAgIGRlcG9zaXRfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHlwZVwiXTtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHN0YWtpbmcgYW1vdW50IGluIEdXRUkuXG4gICAgICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byAzMl8wMDBfMDAwXzAwMCAoMzIgRVRIKS5cbiAgICAgICAqIE11c3QgYmUgYmV0d2VlbiAxIEVUSCBhbmQgMzIgRVRILlxuICAgICAgICogTXVzdCBub3QgYmUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiAnZGVwb3NpdF90eXBlJyBpcyBcIldyYXBwZXJcIi5cbiAgICAgICAqL1xuICAgICAgc3Rha2luZ19hbW91bnRfZ3dlaT86IG51bWJlcjtcbiAgICAgIHVuc2FmZV9jb25mPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVbnNhZmVDb25mXCJdIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3IgQkxTIHB1YmxpYyBrZXkgdG8gdXNlLCBvciBgTm9uZWAgdG8gZ2VuZXJhdGUgYSBmcmVzaCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSAweGE5OWE3NmVkNzc5NmY3YmUyMmQ1YjdlODVkZWViN2M1Njc3ZTg4ZTUxMWUwYjMzNzYxOGY4YzRlYjYxMzQ5YjRiZjJkMTUzZjY0OWY3YjUzMzU5ZmU4Yjk0YTM4ZTQ0Y1xuICAgICAgICovXG4gICAgICB2YWxpZGF0b3Jfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBldGhlcmV1bSBhZGRyZXNzIHRvIHdoaWNoIHdpdGhkcmF3biBmdW5kcyBnb1xuICAgICAgICogQGV4YW1wbGUgMHg4ZTM0ODQ2ODdlNjZjZGQyNmNmMDRjMzY0NzYzM2FiNGYzNTcwMTQ4XG4gICAgICAgKi9cbiAgICAgIHdpdGhkcmF3YWxfYWRkcjogc3RyaW5nO1xuICAgIH07XG4gICAgU3Rha2VSZXNwb25zZToge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHZhbGlkYXRvciBrZXkgaWQgKFwiS2V5Iy4uLlwiKVxuICAgICAgICogQGV4YW1wbGUgS2V5I2RiMTczMWY4LTM2NTktNDVjMC04ODViLWUxMWUxZjViN2JlMlxuICAgICAgICovXG4gICAgICBjcmVhdGVkX3ZhbGlkYXRvcl9rZXlfaWQ6IHN0cmluZztcbiAgICAgIGRlcG9zaXRfdHg6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRGVwb3NpdFR4blwiXTtcbiAgICB9O1xuICAgIFN0YXR1czoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBVc2VycyB3aG8gYXJlIGFsbG93ZWQgdG8gYXBwcm92ZS4gTXVzdCBiZSBub24tZW1wdHkuICovXG4gICAgICBhbGxvd2VkX2FwcHJvdmVyczogc3RyaW5nW107XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbG93ZWQgYXBwcm92YWwgdHlwZXMuIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYW55LiAqL1xuICAgICAgYWxsb3dlZF9tZmFfdHlwZXM/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVR5cGVcIl1bXSB8IG51bGw7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFVzZXJzIHdobyBoYXZlIGFscmVhZHkgYXBwcm92ZWQgKi9cbiAgICAgIGFwcHJvdmVkX2J5OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFwcHJvdmFsSW5mb1wiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSB1c2VycyBtdXN0IGFwcHJvdmVcbiAgICAgICAqL1xuICAgICAgY291bnQ6IG51bWJlcjtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICogQGRlc2NyaXB0aW9uIEhvdyBtYW55IGF1dGggZmFjdG9ycyB0byByZXF1aXJlIHBlciB1c2VyXG4gICAgICAgKi9cbiAgICAgIG51bV9hdXRoX2ZhY3RvcnM6IG51bWJlcjtcbiAgICB9O1xuICAgIFRva2VuSW5mbzoge1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVc2UgaXQgdG8gcmV2b2tlIGEgc2Vzc2lvbi4gQ2Fubm90IGJlIHVzZWQgZm9yIGF1dGguICovXG4gICAgICBoYXNoOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyBwdXJwb3NlICovXG4gICAgICBwdXJwb3NlOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT0F1dGgyIHN0YW5kYXJkIFRva2VuIFJlc3BvbnNlLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2NzQ5I3NlY3Rpb24tNC4yLjJcbiAgICAgKi9cbiAgICBUb2tlblJlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MgdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgIGFjY2Vzc190b2tlbjogc3RyaW5nO1xuICAgICAgZXhwaXJlc19pbjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZWNvbmRzXCJdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIGlzc3VlZCBieSBDdWJpc3QsIGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvbiAqL1xuICAgICAgaWRfdG9rZW4/OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB0eXBlIG9mIHRoZSB0b2tlbiBpc3N1ZWQuIFZhbHVlIGlzIGNhc2UgaW5zZW5zaXRpdmUuICovXG4gICAgICB0b2tlbl90eXBlOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH07XG4gICAgVG90cEFwcHJvdmVSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRPVFAgdmVyaWZpY2F0aW9uIGNvZGUgKi9cbiAgICAgIGNvZGU6IHN0cmluZztcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBhbnN3ZXIgYSBUT1RQIGNoYWxsZW5nZSAqL1xuICAgIFRvdHBDaGFsbGVuZ2VBbnN3ZXI6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgVE9UUCBjb2RlICovXG4gICAgICBjb2RlOiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgY2hhbGxlbmdlIHRoYXQgd2FzIHJldHVybmVkIGZyb20gdGhlIFBPU1QgZW5kcG9pbnQgKi9cbiAgICAgIHRvdHBfaWQ6IHN0cmluZztcbiAgICB9O1xuICAgIFRvdHBJbmZvOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIFRPVFAgY2hhbGxlbmdlLlxuICAgICAgICogQGV4YW1wbGUgVG90cENoYWxsZW5nZSM3ODkyZWJiYS01NjNlLTQ4NWItYmI3ZC1lMjYyNjczNjMyODZcbiAgICAgICAqL1xuICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gU3RhbmRhcmQgVE9UUCB1cmwgd2hpY2ggaW5jbHVkZXMgZXZlcnl0aGluZyBuZWVkZWQgdG8gaW5pdGlhbGl6ZSBUT1RQLlxuICAgICAgICogQGV4YW1wbGUgb3RwYXV0aDovL3RvdHAvQ3ViaXN0OmFsaWNlLSU0MGV4YW1wbGUuY29tP3NlY3JldD1EQUhGN0tDT1RRV1NPTUs0WEZFTU5IWE80SjQzM09ENyZpc3N1ZXI9Q3ViaXN0XG4gICAgICAgKi9cbiAgICAgIHRvdHBfdXJsOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFJlcXVlc3QgdG8gcmVzZXQgVE9UUC4gKi9cbiAgICBUb3RwUmVzZXRSZXF1ZXN0OiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuYW1lIG9mIHRoZSBpc3N1ZXI7IGRlZmF1bHRzIHRvIFwiQ3ViaXN0XCIuICovXG4gICAgICBpc3N1ZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBlbnVtIHtzdHJpbmd9ICovXG4gICAgVW5hdXRob3JpemVkRXJyb3JDb2RlOlxuICAgICAgfCBcIkNsYWltc0hlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIkNsYWltc1BhcnNlRXJyb3JcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eUhlYWRlck1pc3NpbmdcIlxuICAgICAgfCBcIk9pZGNJZGVudGl0eVBhcnNlRXJyb3JcIjtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbnMgdGhhdCBzaG91bGQgYmUgc2V0IG9ubHkgZm9yIGxvY2FsIGRldm5ldCB0ZXN0aW5nLiAqL1xuICAgIFVuc2FmZUNvbmY6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBkZXBvc2l0IGNvbnRyYWN0LiBJZiBvbWl0dGVkLCBpbmZlcnJlZCBmcm9tIGBjaGFpbl9pZGBcbiAgICAgICAqIEBleGFtcGxlIDB4ZmY1MGVkM2QwZWMwM2FjMDFkNGM3OWFhZDc0OTI4YmZmNDhhN2IyYlxuICAgICAgICovXG4gICAgICBkZXBvc2l0X2NvbnRyYWN0X2FkZHI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIDQtYnl0ZSBmb3JrIHZlcnNpb25cbiAgICAgICAqIEBleGFtcGxlIDB4MDAwMDEwMjBcbiAgICAgICAqL1xuICAgICAgZ2VuZXNpc19mb3JrX3ZlcnNpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgbWVzc2FnZSByZXF1ZXN0LlxuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgIFwiZXBvY2hcIjogXCIyNTZcIixcbiAgICAgKiAgIFwiZm9ya1wiOiB7XG4gICAgICogICAgIFwiY3VycmVudF92ZXJzaW9uXCI6IFwiMHgwMDAwMTAyMFwiLFxuICAgICAqICAgICBcImVwb2NoXCI6IFwiMFwiLFxuICAgICAqICAgICBcInByZXZpb3VzX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcImdlbmVzaXNfZGF0YVwiOiB7XG4gICAgICogICAgIFwiZ2VuZXNpc19mb3JrX3ZlcnNpb25cIjogXCIweDAwMDAxMDIwXCIsXG4gICAgICogICAgIFwiZ2VuZXNpc190aW1lXCI6IFwiMTY3OTU0MTY0MlwiLFxuICAgICAqICAgICBcImdlbmVzaXNfdmFsaWRhdG9yc19yb290XCI6IFwiMHgyNzBkNDNlNzRjZTM0MGRlNGJjYTJiMTkzNmJlY2EwZjRmNTQwOGQ5ZTc4YWVjNDg1MDkyMGJhZjY1OWQ1YjY5XCJcbiAgICAgKiAgIH0sXG4gICAgICogICBcIm5ldHdvcmtcIjogXCJnb2VybGlcIixcbiAgICAgKiAgIFwidmFsaWRhdG9yX2luZGV4XCI6IFwiMFwiXG4gICAgICogfVxuICAgICAqL1xuICAgIFVuc3Rha2VSZXF1ZXN0OiB7XG4gICAgICBlcG9jaD86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hcIl0gfCBudWxsO1xuICAgICAgZm9yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGb3JrXCJdO1xuICAgICAgZ2VuZXNpc19kYXRhOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkdlbmVzaXNEYXRhXCJdO1xuICAgICAgbmV0d29yazogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJOZXR3b3JrXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9yIGluZGV4IChgdWludDY0YCkgdG8gZXhpdC4gWW91IGNhbiBnZXQgdGhlIHZhbGlkYXRvciBpbmRleCBmcm9tIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICAgKiBgL2V0aC92MS9iZWFjb24vc3RhdGVzL2hlYWQvdmFsaWRhdG9ycy97cHVia2V5fWAgZW5kLXBvaW50LiBUaGlzIGVuZCBwb2ludCByZXR1cm5zIGFuXG4gICAgICAgKiBvYmplY3QgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWRhdG9yICh3aG9zZSBwdWJsaWMga2V5IGlzIGB7cHVia2V5fWApLFxuICAgICAgICogaW5jbHVkaW5nIHRoZSB2YWxpZGF0b3IgaW5kZXguIFRoZSBzY2hlbWEgb2YgdGhpcyBlbmQtcG9pbnQgaXMgZGVmaW5lZFxuICAgICAgICogW2hlcmVdKGh0dHBzOi8vZXRoZXJldW0uZ2l0aHViLmlvL2JlYWNvbi1BUElzLyMvQmVhY29uL2dldFN0YXRlVmFsaWRhdG9yKS5cbiAgICAgICAqIEBleGFtcGxlIDMxMzM3XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFVuc3Rha2UgcmVzcG9uc2VzIGFyZSBzaWduZWQgdm9sdW50YXJ5IGV4aXQgbWVzc2FnZXMuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqIFRoaXMgbWVzc2FnZSBjYW4gYmUgZGlyZWN0bHkgUE9TVGVkIHRvIHRoZSBCZWFjb24gbm9kZSdzXG4gICAgICogYC9ldGgvdjEvYmVhY29uL3Bvb2wvdm9sdW50YXJ5X2V4aXRzYCBlbmQtcG9pbnQgKHNlZSBleHBlY3RlZCBzY2hlbWFcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9ldGhlcmV1bS5naXRodWIuaW8vYmVhY29uLUFQSXMvIy9CZWFjb24vc3VibWl0UG9vbFZvbHVudGFyeUV4aXQpKS5cbiAgICAgKi9cbiAgICBVbnN0YWtlUmVzcG9uc2U6IHtcbiAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEJMUyBzaWduYXR1cmUuXG4gICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICovXG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICAgIFVwZGF0ZUtleVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlcyB0aGUga2V5cydzIGBlbmFibGVkYCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLlxuICAgICAgICogT25jZSBkaXNhYmxlZCwgYSBrZXkgY2Fubm90IGJlIHVzZWQgZm9yIHNpZ25pbmcuXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMga2V5J3MgbWV0YWRhdGEuIFZhbGlkYXRpb24gcmVnZXg6IF5bQS1aYS16MC05Xz0rLyBcXC1cXC5cXCxdezAsMTAyNH0kXG4gICAgICAgKiBAZXhhbXBsZSBDb250cmFjdCBhZG1pbiBrZXlcbiAgICAgICAqL1xuICAgICAgbWV0YWRhdGE/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGVzIGtleSdzIG93bmVyIHRvIHRoaXMgdmFsdWUuXG4gICAgICAgKiBUaGUgbmV3IG93bmVyIG11c3QgYmUgYW4gZXhpc3RpbmcgdXNlciB3aG8gaXMgYSBtZW1iZXIgb2YgdGhlIHNhbWUgb3JnLlxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgb3duZXI/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBrZXkncyBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCIsXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICogICAgICAgXCJjb3VudFwiOiAxXG4gICAgICAgKiAgICAgfVxuICAgICAgICogICB9XG4gICAgICAgKiBdXG4gICAgICAgKi9cbiAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1JlcXVlc3Q6IHtcbiAgICAgIC8qKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBgZW5hYmxlZGAgZmllbGQgdG8gdGhpcyB2YWx1ZS4gKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdXBkYXRlIHRoaXMgb3JnJ3MgYWxpYXMuICBPcmcgYWxpYXNlcyBhcmUgZ2xvYmFsbHkgdW5pcXVlLlxuICAgICAgICogQGV4YW1wbGUgbXlfb3JnXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBwb2xpY2llcyAob2xkIHBvbGljaWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4hKS5cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAqICAgfSxcbiAgICAgICAqICAge1xuICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXG4gICAgICAgKiAgICAgXVxuICAgICAgICogICB9LFxuICAgICAgICogICB7XG4gICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcIjEwLjEuMi4zLzhcIixcbiAgICAgICAqICAgICAgIFwiMTY5LjI1NC4xNy4xLzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyBUT1RQIGZhaWx1cmUgbGltaXQuIEFmdGVyIHRoaXMgbWFueSBmYWlsdXJlcyxcbiAgICAgICAqIHRoZSB1c2VyIGlzIHJhdGUgbGltaXRlZCB1bnRpbCB0aGUgbmV4dCAzMC1zZWNvbmQgVE9UUCB3aW5kb3cuXG4gICAgICAgKi9cbiAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIG9yZydzIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgYW1vdW50IG9mIHRpbWVcbiAgICAgICAqIChpbiBzZWNvbmRzKSBiZXR3ZWVuIGEgdXNlcidzIGluaXRpYXRpbmcgYW4gZXhwb3J0IGFuZCB0aGUgdGltZSB3aGVuXG4gICAgICAgKiBleHBvcnQgaXMgYWxsb3dlZC4gRm9yIHNlY3VyaXR5LCB0aGlzIGRlbGF5IGNhbm5vdCBiZSBzZXQgdG8gbGVzcyB0aGFuXG4gICAgICAgKiAxNzI4MDAsIGkuZS4sIDIgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB1cGRhdGUgdGhpcyBvcmcncyB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnQgb2YgdGltZVxuICAgICAgICogKGluIHNlY29uZHMpIHRoYXQgZXhwb3J0IGlzIGFsbG93ZWQgYWZ0ZXIgdGhlIHVzZXItZXhwb3J0IGRlbGF5LiBBZnRlclxuICAgICAgICogdGhpcyBhbW91bnQgb2YgdGltZSwgdGhlIGV4cG9ydCBpcyBjYW5jZWxlZCBhbmQgbXVzdCBiZSByZS1pbml0aWF0ZWQuXG4gICAgICAgKiBGb3Igc2VjdXJpdHksIHRoaXMgd2luZG93IGNhbm5vdCBiZSBzZXQgdG8gZ3JlYXRlciB0aGFuIDI1OTIwMCwgaS5lLixcbiAgICAgICAqIDMgZGF5cy5cbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSAqL1xuICAgICAgZW5hYmxlZD86IGJvb2xlYW4gfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgb3JnIChtdXN0IGJlIGFscGhhbnVtZXJpYylcbiAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgKi9cbiAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAqL1xuICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIG9yZy13aWRlIHBvbGljaWVzXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgKiAgIH0sXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIk9yaWdpbkFsbG93bGlzdFwiOiBbXG4gICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICogICAgIF1cbiAgICAgICAqICAgfVxuICAgICAgICogXVxuICAgICAgICovXG4gICAgICBwb2xpY3k/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj5bXSB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBUT1RQIGZhaWx1cmUgbGltaXRcbiAgICAgICAqL1xuICAgICAgdG90cF9mYWlsdXJlX2xpbWl0PzogbnVtYmVyIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdXNlci1leHBvcnQgZGVsYXlcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgLyoqXG4gICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAqL1xuICAgICAgdXNlcl9leHBvcnRfd2luZG93PzogbnVtYmVyIHwgbnVsbDtcbiAgICB9O1xuICAgIFVwZGF0ZVJvbGVSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZXMgdGhlIHJvbGUncyBgZW5hYmxlZGAgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAqIE9uY2UgZGlzYWJsZWQsIGEgcm9sZSBjYW5ub3QgYmUgdXNlZDsgYW5kIGl0J3MgdG9rZW5zIGNhbm5vdCBiZSB1c2VkIGZvciBzaWduaW5nLlxuICAgICAgICovXG4gICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHVwZGF0ZSB0aGlzIHJvbGUncyBrZXkgcG9saWNpZXMgKG9sZCBwb2xpY2llcyB3aWxsIGJlIG92ZXJ3cml0dGVuISkuXG4gICAgICAgKiBPbmx5IFwiZGVueVwiIHN0eWxlIHBvbGljaWVzIG1heSBiZSBzZXQuXG4gICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgKiAgIHtcbiAgICAgICAqICAgICBcIlNvdXJjZUlwQWxsb3dsaXN0XCI6IFtcbiAgICAgICAqICAgICAgIFwiMTIzLjQ1Ni43OC45LzE2XCJcbiAgICAgICAqICAgICBdXG4gICAgICAgKiAgIH1cbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgcG9saWN5PzogUmVjb3JkPHN0cmluZywgbmV2ZXI+W10gfCBudWxsO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBIHJlcXVlc3QgdG8gY29tcGxldGUgYSB1c2VyIGV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlcXVlc3Q6IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUga2V5IHRvIGJlIGV4cG9ydGVkLiBUaGUga2V5LWlkIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb25lIGluXG4gICAgICAgKiB0aGUgc3BlY2lmaWVkIGV4cG9ydCByZXF1ZXN0LCBhbmQgdGhlIGNhbGxlciBtdXN0IG93biB0aGlzIGtleS5cbiAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAqL1xuICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgTklTVCBQLTI1NiBwdWJsaWMga2V5IChiYXNlNjQtZW5jb2RlZCBTRUMxIHdpdGggb3Igd2l0aG91dCBjb21wcmVzc2lvbilcbiAgICAgICAqIHRvIHdoaWNoIHRoZSBleHBvcnQgd2lsbCBiZSBlbmNyeXB0ZWQuIElmIGEgcHVibGljIGtleSB3YXMgcHJvdmlkZWQgd2hlblxuICAgICAgICogYHVzZXJfZXhwb3J0X2luaXRgIHdhcyBjYWxsZWQsIHRoaXMga2V5IG11c3QgbWF0Y2ggdGhhdCBvbmUuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEFuIGVuY3J5cHRlZCB1c2VyLWV4cG9ydCAqL1xuICAgIFVzZXJFeHBvcnRDb21wbGV0ZVJlc3BvbnNlOiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXhwb3J0ZWQga2V5IG1hdGVyaWFsLCBlbmNyeXB0ZWQgd2l0aCBBRVMtMjU2LUdDTSB1bmRlciBhIGtleVxuICAgICAgICogZGVyaXZlZCBmcm9tIHRoZSBwdWJsaWMga2V5IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0IHZpYSBIUEtFIChSRkM5MTgwKVxuICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAqL1xuICAgICAgZW5jcnlwdGVkX2tleV9tYXRlcmlhbDogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGVwaGVtZXJhbCBwdWJsaWMga2V5IHVzZWQgZm9yIEhQS0Uga2V5IGRlcml2YXRpb24gYXMgYmFzZTY0LWVuY29kZWRcbiAgICAgICAqIHVuY29tcHJlc3NlZCBTRUMxIHNlcmlhbGl6YXRpb24uXG4gICAgICAgKi9cbiAgICAgIGVwaGVtZXJhbF9wdWJsaWNfa2V5OiBzdHJpbmc7XG4gICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHRvIHdoaWNoIHRoaXMga2V5IGJlbG9uZ3MuICovXG4gICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEEgcmVxdWVzdCB0byBpbml0aWF0ZSBhIHVzZXIgZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydEluaXRSZXF1ZXN0OiB7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleSB0byBiZSBleHBvcnRlZC4gVGhpcyBrZXkgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyLlxuICAgICAgICogQGV4YW1wbGUgS2V5IzB4M2M0ZDkwQ2M1QWYxNjQ0QzNBM0IwMTNCYWE1NDg4OTk3MzgxRDdDOFxuICAgICAgICovXG4gICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIE5JU1QgUC0yNTYgcHVibGljIGtleSAoYmFzZTY0LWVuY29kZWQgU0VDMSB3aXRoIG9yIHdpdGhvdXRcbiAgICAgICAqIGNvbXByZXNzaW9uKSB0byB3aGljaCB0aGUgZXhwb3J0IHdpbGwgYmUgZW5jcnlwdGVkLiBJZiBwcm92aWRlZCwgdGhpc1xuICAgICAgICogcHVibGljIGtleSBNVVNUIGJlIHRoZSBvbmUgdXNlZCB0byBlbmNyeXB0IHRoZSBleHBvcnQgb25jZSB0aGUgZGVsYXkgaGFzXG4gICAgICAgKiBleHBpcmVkLiBPdGhlcndpc2UsIHRoZSB1c2VyIGNhbiBwcm92aWRlIGFueSBwdWJsaWMga2V5IHdoZW4gY29tcGxldGluZ1xuICAgICAgICogdGhlIGV4cG9ydCByZXF1ZXN0IHBvc3QgZGVsYXkuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBvcHRpb24gbWF5IHByb3ZpZGUgZXh0cmEgc2VjdXJpdHkgd2hlbiB0aGUgdXNlciBoYXMgYSBzZWN1cmUgaGFyZHdhcmVcbiAgICAgICAqIGRldmljZSAoZS5nLiwgYSBwaG9uZSdzIHNlY3VyZSBlbGVtZW50IG9yIGEgWXViaUtleSkgaW4gd2hpY2ggYSBOSVNUIFAtMjU2XG4gICAgICAgKiBzZWNyZXQga2V5IGNhbiBiZSBnZW5lcmF0ZWQuIFByb3ZpZGluZyB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5IGhlcmVcbiAgICAgICAqIGVuc3VyZXMgdGhhdCBvbmx5IHRoYXQgc3BlY2lmaWMgZGV2aWNlIHdpbGwgYmUgY2FwYWJsZSBvZiBkZWNyeXB0aW5nXG4gICAgICAgKiB0aGUgZXhwb3J0IGNpcGhlcnRleHQuXG4gICAgICAgKlxuICAgICAgICogSWYgbm8gc2VjdXJlIGhhcmR3YXJlIGRldmljZSBpcyBhdmFpbGFibGUgdG8gc3RvcmUgdGhlIHNlY3JldCBrZXksIHRoaXNcbiAgICAgICAqIG9wdGlvbiBTSE9VTEQgTk9UIGJlIHVzZWQgYmVjYXVzZSBvZiB0aGUgcmlzayBvZiBzZWNyZXQga2V5IHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKiBAZXhhbXBsZSBBa3BMVC8zZFhBcEp6WFNkdWFQUTdhcHlUMEFEQndxa3QxZXMvYVQwaVdXZlxuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHJlc3BvbnNlIHRvIGEgc3VjY2Vzc2Z1bCB1c2VyLWV4cG9ydCBpbml0IHJlcXVlc3QgKi9cbiAgICBVc2VyRXhwb3J0SW5pdFJlc3BvbnNlOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJFeHBvcnRSZXF1ZXN0XCJdICYge1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGtleS1pZCBiZWluZyByZXF1ZXN0ZWQuXG4gICAgICAgKiBAZXhhbXBsZSBLZXkjMHgzYzRkOTBDYzVBZjE2NDRDM0EzQjAxM0JhYTU0ODg5OTczODFEN0M4XG4gICAgICAgKi9cbiAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBQZW5kaW5nIHVzZXItZXhwb3J0IHJlcXVlc3QgYXMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZS4gKi9cbiAgICBVc2VyRXhwb3J0UmVxdWVzdDoge1xuICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgb3JnLWlkIGluIHdoaWNoIHRoZSBrZXkgaXMgaG91c2VkLlxuICAgICAgICogQGV4YW1wbGUgT3JnI2YzNjFlZDZiLTVkMTktNGNjZi1hNGQ1LWViYTkzNWRjMGI5MFxuICAgICAgICovXG4gICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIHB1YmxpYyBrZXkgcHJvdmlkZWQgYXQgZXhwb3J0IGluaXRpYXRpb24sXG4gICAgICAgKiBpZiBhbnkuIElmIGEga2V5IHdhcyBwcm92aWRlZCwgb25seSB0aGF0IGtleSBjYW4gYmUgdXNlZCB0byBjb21wbGV0ZVxuICAgICAgICogdGhlIGV4cG9ydCBwcm9jZWR1cmUuIE90aGVyd2lzZSwgYW55IGtleSBjYW4gYmUgdXNlZC5cbiAgICAgICAqXG4gICAgICAgKiBJTVBPUlRBTlQ6IGlmIGEgcHVibGljIGtleSBpcyBzdXBwbGllZCBhdCBleHBvcnQgaW5pdGlhdGlvbiwgaXQgaXNcbiAgICAgICAqIFNUUk9OR0xZIFJFQ09NTUVOREVEIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgc2VjcmV0IGtleSBiZSBzdG9yZWQgaW5cbiAgICAgICAqIGEgc2VjdXJlIGhhcmR3YXJlIGRldmljZSwgZS5nLiwgYSBZdWJpS2V5IG9yIGEgcGhvbmUncyBzZWN1cmUgZWxlbWVudC5cbiAgICAgICAqIElmIG5vIHN1Y2ggaGFyZHdhcmUgaXMgYXZhaWxhYmxlLCBzdXBwbHlpbmcgYSBwdWJsaWMga2V5IGF0IGV4cG9ydFxuICAgICAgICogaW5pdGlhdGlvbiBpcyBTVFJPTkdMWSBESVNDT1VSQUdFRCBiZWNhdXNlIG9mIHRoZSByaXNrIG9mIHRoZWZ0IGR1cmluZ1xuICAgICAgICogdGhlIGV4cG9ydCBkZWxheSBwZXJpb2QuXG4gICAgICAgKlxuICAgICAgICogKFNlZSBhbHNvIHRoZSBjb21tZW50IGluIHRoZSBgcHVibGljX2tleWAgZmllbGQgb2YgYFVzZXJJbml0UmVxdWVzdGAuKVxuICAgICAgICogQGV4YW1wbGUgZGY0NTdhOThkNTUzODU0MGY1NGQxMzE2YjU5N2EwZjM5YjhkOTZmNDg4ZjEwYTJlMzFhOTU1YzE0NmZkZjFkM1xuICAgICAgICovXG4gICAgICBwdWJsaWNfa2V5X2hhc2g/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgdmFsaWRfZXBvY2g6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICB9O1xuICAgIFVzZXJJZEluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyJ3MgZW1haWxcbiAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgKi9cbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIHVzZXJcbiAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgKi9cbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBVc2VySW5Sb2xlSW5mbzoge1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgVXNlckluZm86IHtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIGVtYWlsXG4gICAgICAgKiBAZXhhbXBsZSBhbGljZUBleGFtcGxlLmNvbVxuICAgICAgICovXG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgY29uZmlndXJlZCBmb3IgdGhpcyB1c2VyICovXG4gICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgLyoqIEBkZXNjcmlwdGlvbiBNRkEgcG9saWN5LCBhcHBsaWVzIGJlZm9yZSBsb2dnaW5nIGluIGFuZCBvdGhlciBzZW5zaXRpdmUgb3BlcmF0aW9ucyAqL1xuICAgICAgbWZhX3BvbGljeT86IHVua25vd247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBuYW1lXG4gICAgICAgKiBAZXhhbXBsZSBBbGljZVxuICAgICAgICovXG4gICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIC8qKlxuICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG9cbiAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAqICAgXCJPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXCJcbiAgICAgICAqIF1cbiAgICAgICAqL1xuICAgICAgb3JnX2lkczogc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlclxuICAgICAgICogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGZcbiAgICAgICAqL1xuICAgICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgV2ViQXV0aG4gUmVseWluZyBQYXJ0eSBtYXkgcmVxdWlyZSB1c2VyIHZlcmlmaWNhdGlvbiBmb3Igc29tZSBvZiBpdHNcbiAgICAgKiBvcGVyYXRpb25zIGJ1dCBub3QgZm9yIG90aGVycywgYW5kIG1heSB1c2UgdGhpcyB0eXBlIHRvIGV4cHJlc3MgaXRzIG5lZWRzLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLTIvI2VudW0tdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50XG4gICAgICogQGVudW0ge3N0cmluZ31cbiAgICAgKi9cbiAgICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6IFwicmVxdWlyZWRcIiB8IFwiZGlzY291cmFnZWRcIiB8IFwicHJlZmVycmVkXCI7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFuIGV4aXQgdm9sdW50YXJpbHkgc3VibWl0dGVkIGEgdmFsaWRhdG9yIHdobyB3aXNoZXMgdG8gd2l0aGRyYXcuXG4gICAgICogVGhlIHNjaGVtYSBmb3IgdGhpcyBtZXNzYWdlIGlzIGRlZmluZWRcbiAgICAgKiBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2NvbnNlbnN1cy1zcGVjcy9ibG9iL3YxLjAuMS9zcGVjcy9waGFzZTAvYmVhY29uLWNoYWluLm1kI3NpZ25lZHZvbHVudGFyeWV4aXQpLlxuICAgICAqL1xuICAgIFZvbHVudGFyeUV4aXQ6IHtcbiAgICAgIGVwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoXCJdO1xuICAgICAgLyoqXG4gICAgICAgKiBAZGVzY3JpcHRpb24gSW5kZXggb2YgdGhlIGV4aXRpbmcgdmFsaWRhdG9yLlxuICAgICAgICogQGV4YW1wbGUgMjU2XG4gICAgICAgKi9cbiAgICAgIHZhbGlkYXRvcl9pbmRleDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHJlc3BvbnNlczoge1xuICAgIEFkZFRoaXJkUGFydHlVc2VyUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGV4YW1wbGUgVXNlciNjM2I5Mzc5Yy00ZThjLTQyMTYtYmQwYS02NWFjZTUzY2Y5OGYgKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQXZhU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaGV4LWVuY29kZWQgc2lnbmF0dXJlLiAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEJsb2JTaWduUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUuICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQnRjU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBoZXgtZW5jb2RlZCBzaWduYXR1cmUgaW4gY29tcGFjdCBmb3JtYXQuXG4gICAgICAgICAgICogQGV4YW1wbGUgMHg0NTRhZWYyN2MyMWRmN2RkOGY1MzdkYzg2OWY0Y2Q2NTI4NmNlMjM5YTUyZDM2NDcwZjRkODViZTg1YTg5MWIwMjc4OWU1ZmZkODU2MGIzMmE5ODExMGU1ZDAwOTY4MDJlNGMxNDE0NWNmNmM0NGYxMGE3NjhjODc3NTVlYWE0ODAwXG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW1wb3J0S2V5XCJdICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBbiBhdHRlc3RhdGlvbiBkb2N1bWVudCBmcm9tIGEgc2VjdXJlIGVuY2xhdmUsIGluY2x1ZGluZyBhblxuICAgICAgICAgICAqIFJTQSBzaWduaW5nIGtleSB1c2VkIHRvIHNpZ24gdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX2F0dGVzdGF0aW9uOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFuIFJTQS1QU1MtU0hBMjU2IHNpZ25hdHVyZSBvbiB0aGUgcHVibGljIGtleSBhbmQgZW5jcnlwdGVkXG4gICAgICAgICAgICogc2VjcmV0cyBhdHRlc3RpbmcgdG8gdGhlaXIgZ2VuZXJhdGlvbiBpbnNpZGUgYSBzZWN1cmUgZW5jbGF2ZS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNsYXZlX3NpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIENyZWF0ZUtleVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgaW5mbyBhYm91dCB0aGUgY3JlYXRlZCBrZXlzICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3bHkgY3JlYXRlZCByb2xlIGluZm9ybWF0aW9uICovXG4gICAgQ3JlYXRlUm9sZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfcm9sZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9sZVxuICAgICAgICAgICAqIEBleGFtcGxlIFJvbGUjYmZlM2VjY2ItNzMxZS00MzBkLWIxZTUtYWMxMzYzZTZiMDZiXG4gICAgICAgICAgICovXG4gICAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEVpcDE5MU9yNzEyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIHNpZ25hdHVyZSBjb21wcmlzaW5nIDY1IGJ5dGVzIGluIHRoZSBmb3JtYXQgcmVxdWlyZWRcbiAgICAgICAgICAgKiBieSBlY3JlY292ZXI6IDMyLWJ5dGUgciwgMzItYnl0ZSBzLCBhbmQgb25lLWJ5dGUgcmVjb3ZlcnktaWQgdlxuICAgICAgICAgICAqIHdoaWNoIGlzIGVpdGhlciAyNyBvciAyOC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDQzNTVjNDdkNjM5MjRlOGE3MmU1MDliNjUwMjkwNTJlYjZjMjk5ZDUzYTA0ZTE2N2M1Nzc1ZmQ0NjY3NTFjOWQwNzI5OTkzNmQzMDRjMTUzZjY0NDNkZmEwNWY0MGZmMDA3ZDcyOTExYjZmNzIzMDdmOTk2MjMxNjA1YjkxNTYyMWNcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFbXB0eUltcGw6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBzdGF0dXM6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgxU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmVcbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDIyODk1MTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIwMWQ1ODY1NmIwZTIyYWFhNjhmZGM2OTJkYjQxOTc5MDk4YzM4ODZlZDMzMDE1ZDc0NjdkZTkyMTE2MDljZGFjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzA4YjBjMjkwMDMyNGQzZmY5YWRmYmE3ZmRmZTVhZjNmOWIyY2RiZWVmN2IyODA0MzdiYmYxYjFjNTlhMDkzZDYxNWFmZTNlNWRmZWQ5NjIyYjU0MGNkZDliNDliM2M1YWQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTAxMWFkYmNjM2JjOWMwMzA3YmIwN2YzN2RkYTFhMWE5YzY5ZDJlMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MDkwM2RiODUyNTY3NGI4ZTc5MDRmOWI3ZDdkOWVjNTVhMGE0MmQzM2NmNThiZTI1NDY5YjBjMjFiYmI2ZDA2MTcyYmM1YmI1ZmQxYWVkOGU0ZjM1OTM2OTY4OTU4MTE2YjA2MTk1NTNjMmNiMWM1MmU3MzIzMDc0YzZmOGViM2Q1YTcwNzRmYzY1ODAxNDhkZjkwNzgzN2ZhM2IxNjRhZDdmYmMyMjg4ZGFkMWU4YTViMDIxMDk1YjU3YzhhMzZkNFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJscF9zaWduZWRfdHg6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBFdGgyU2lnblJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBwcmVmaXhlZCB3aXRoIDB4IGUuZy4gXCIweDAwMDAuLi5cIlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4YjRmMmVmOWQxMmE1NGUxZjU2OTU5NmMwN2M5N2Q2ZDczMDUzNWI2ZmZjMGQyODc3NjFkYzc4MTAzYTg2MzI2NzgyNDcxYTA0Yzc1Y2U3YTZmYWVhMDhjYTlhNGEwODMwMDMxY2RjYjg5M2RhODcxMWQ1NGFhMjI2MTlmMWE3ZTcxYjgxODVkZGY0YzZiZmQ5YmFiYmQ3MzU5NjBlMzVlNTZiZDZlZWI4OTYyNWIwNDg1MGU3YTllZjg4NDZlNTQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgRmlkb0Fzc2VydENoYWxsZW5nZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogKGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2hhbGxlbmdlUGllY2VzXCJdICYge1xuICAgICAgICAgIG9wdGlvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlbnQgYnkgdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LiBDb250YWlucyB0aGUgY2hhbGxlbmdlIGRhdGEgdGhhdCBtdXN0IGJlXG4gICAgICogdXNlZCB0byBnZW5lcmF0ZSBhIG5ldyBjcmVkZW50aWFsXG4gICAgICovXG4gICAgRmlkb0NyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiAoY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDaGFsbGVuZ2VQaWVjZXNcIl0gJiB7XG4gICAgICAgICAgb3B0aW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zXCJdO1xuICAgICAgICB9KSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBpZCBvZiB0aGUgY2hhbGxlbmdlLiBNdXN0IGJlIHN1cHBsaWVkIHdoZW4gYW5zd2VyaW5nIHRoZSBjaGFsbGVuZ2UuICovXG4gICAgICAgICAgY2hhbGxlbmdlX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgR2V0VXNlcnNJbk9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbGlzdCBvZiB1c2VycyBpbiB0aGUgb3JnICovXG4gICAgICAgICAgdXNlcnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlcklkSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9vZiB0aGF0IGFuIGVuZC11c2VyIHByb3ZpZGVkIEN1YmVTaWduZXIgd2l0aCBhIHZhbGlkIGF1dGggdG9rZW5cbiAgICAgKiAoZWl0aGVyIGFuIE9JREMgdG9rZW4gb3IgYSBDdWJlU2lnbmVyIHNlc3Npb24gdG9rZW4pXG4gICAgICovXG4gICAgSWRlbnRpdHlQcm9vZjoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPSURDIGF1ZGllbmNlOyBzZXQgb25seSBpZiB0aGUgcHJvb2Ygd2FzIG9idGFpbmVkIGJ5IHVzaW5nIE9JREMgdG9rZW4uXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBJbiBvdGhlciB3b3JkcywgcHJlc2VuY2Ugb2YgdGhpcyBmaWVsZCB0ZXN0aWZpZXMgdGhhdCBhdXRob3JpemF0aW9uIHdhcyBvYnRhaW5lZCB2aWEgT0lEQy5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBhdWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZW1haWwgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyXG4gICAgICAgICAgICogQGV4YW1wbGUgdXNlckBlbWFpbC5jb21cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbWFpbD86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgZXhwX2Vwb2NoOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVwb2NoRGF0ZVRpbWVcIl07XG4gICAgICAgICAgaWRlbnRpdHk/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXSB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VybmFtZSAoaWYgYW55KSBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBjdWJpc3RkZXZcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcmVmZXJyZWRfdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgIHVzZXJfaW5mbz86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ3ViZVNpZ25lclVzZXJJbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFuIG9wYXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcHJvb2YgKi9cbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVyaXZhdGlvbi1yZWxhdGVkIG1ldGFkYXRhIGZvciBrZXlzIGRlcml2ZWQgZnJvbSBhIGxvbmctbGl2ZWQgbW5lbW9uaWMgKi9cbiAgICBLZXlEZXJpdmF0aW9uSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGRlcml2YXRpb24gcGF0aCB1c2VkIHRvIGRlcml2ZSB0aGlzIGtleSAqL1xuICAgICAgICAgIGRlcml2YXRpb25fcGF0aDogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIG1uZW1vbmljLWlkIG9mIHRoZSBrZXkncyBwYXJlbnQgbW5lbW9uaWMgKi9cbiAgICAgICAgICBtbmVtb25pY19pZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQSB3cmFwcGVkIGtleS1pbXBvcnQga2V5ICovXG4gICAgS2V5SW1wb3J0S2V5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBCYXNlNjQtZW5jb2RlZCwgZW5jcnlwdGVkIGRhdGEga2V5LiAqL1xuICAgICAgICAgIGRrX2VuYzogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gRXhwaXJhdGlvbiB0aW1lc3RhbXAgZXhwcmVzc2VkIGFzIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJlczogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgZXBoZW1lcmFsIHB1YmxpYyBrZXkgdG8gd2hpY2ggYW4gaW1wb3J0ZWQga2V5IHNob3VsZCBiZSBlbmNyeXB0ZWQuXG4gICAgICAgICAgICogVGhpcyBpcyBhIFAzODQgcHVibGljIGtleSBpbiBiYXNlNjQtZW5jb2RlZCB1bmNvbXByZXNzZWQgU0VDRyBmb3JtYXQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQmFzZTY0LWVuY29kZWQsIGVuY3J5cHRlZCBzZWNyZXQga2V5LiAqL1xuICAgICAgICAgIHNrX2VuYzogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBkZXJpdmF0aW9uX2luZm8/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleURlcml2YXRpb25JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGtleSBpcyBlbmFibGVkIChvbmx5IGVuYWJsZWQga2V5cyBtYXkgYmUgdXNlZCBmb3Igc2lnbmluZykgKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaWQgb2YgdGhlIGtleTogXCJLZXkjXCIgZm9sbG93ZWQgYnkgYSB1bmlxdWUgaWRlbnRpZmllciBzcGVjaWZpYyB0b1xuICAgICAgICAgICAqIHRoZSB0eXBlIG9mIGtleSAoc3VjaCBhcyBhIHB1YmxpYyBrZXkgZm9yIEJMUyBvciBhbiBldGhlcmV1bSBhZGRyZXNzIGZvciBTZWNwKVxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDhlMzQ4NDY4N2U2NmNkZDI2Y2YwNGMzNjQ3NjMzYWI0ZjM1NzAxNDhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgICBrZXlfdHlwZTogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlUeXBlXCJdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBBIHVuaXF1ZSBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGtleSwgc3VjaCBhcyBhIHB1YmxpYyBrZXkgb3IgYW4gZXRoZXJldW0gYWRkcmVzc1xuICAgICAgICAgICAqIEBleGFtcGxlIDB4OGUzNDg0Njg3ZTY2Y2RkMjZjZjA0YzM2NDc2MzNhYjRmMzU3MDE0OFxuICAgICAgICAgICAqL1xuICAgICAgICAgIG1hdGVyaWFsX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFVzZXItZGVmaW5lZCBtZXRhZGF0YS4gV2hlbiByZW5kZXJpbmcgKGUuZy4sIGluIHRoZSBicm93c2VyKSB5b3Ugc2hvdWxkIHRyZWF0XG4gICAgICAgICAgICogaXQgYXMgdW50cnVzdGVkIHVzZXIgZGF0YSAoYW5kIGF2b2lkIGluamVjdGluZyBtZXRhZGF0YSBpbnRvIEhUTUwgZGlyZWN0bHkpIGlmXG4gICAgICAgICAgICogdW50cnVzdGVkIHVzZXJzIGNhbiBjcmVhdGUvdXBkYXRlIGtleXMgKG9yIHRoZWlyIG1ldGFkYXRhKS5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBtZXRhZGF0YT86IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3duZXIgb2YgdGhlIGtleVxuICAgICAgICAgICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3duZXI6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gS2V5IHBvbGljeVxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIFwiQWxsb3dSYXdCbG9iU2lnbmluZ1wiLFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeTogUmVjb3JkPHN0cmluZywgbmV2ZXI+W107XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEhleC1lbmNvZGVkLCBzZXJpYWxpemVkIHB1YmxpYyBrZXkuIFRoZSBmb3JtYXQgdXNlZCBkZXBlbmRzIG9uIHRoZSBrZXkgdHlwZTpcbiAgICAgICAgICAgKiAtIFNlY3AyNTZrMSBrZXlzIHVzZSA2NS1ieXRlIHVuY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIFN0YXJrIGtleXMgdXNlIDMzLWJ5dGUgY29tcHJlc3NlZCBTRUNHIGZvcm1hdDtcbiAgICAgICAgICAgKiAtIEJMUyBrZXlzIHVzZSA0OC1ieXRlIGNvbXByZXNzZWQgQkxTMTItMzgxIChaQ2FzaCkgZm9ybWF0O1xuICAgICAgICAgICAqIC0gRWQyNTUxOSBrZXlzIHVzZSB0aGUgY2Fub25pY2FsIDMyLWJ5dGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFJGQyA4MDMyLlxuICAgICAgICAgICAqIEBleGFtcGxlIDB4MDRkMjY4OGI2YmMyY2U3Zjk4NzliOWU3NDVmM2M0ZGMxNzc5MDhjNWNlZjBjMWI2NGNmZjE5YWU3ZmYyN2RlZTYyM2M2NGZlOWQ5YzMyNWM3ZmJiYzc0OGJiZDVmNjA3Y2UxNGRkODNlMjhlYmJiYjdkM2U3ZjJmZmI3MGE3OTQzMVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHB1cnBvc2UgZm9yIHdoaWNoIHRoZSBrZXkgY2FuIGJlIHVzZWQgKGUuZy4sIGNoYWluIGlkIGZvciB3aGljaCB0aGUga2V5IGlzIGFsbG93ZWQgdG8gc2lnbiBtZXNzYWdlcylcbiAgICAgICAgICAgKiBAZXhhbXBsZSBFdGgyVmFsaWRhdG9yKDEpXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIEtleUluZm9zOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgTGlzdE1mYVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgKi9cbiAgICAgICAgICBtZmFfcmVxdWVzdHM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTWZhUmVxdWVzdEluZm9cIl1bXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBMaXN0VG9rZW5zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICB0b2tlbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSZXR1cm5lZCBhcyBhIHJlc3BvbnNlIGZyb20gbXVsdGlwbGUgcm91dGVzIChlLmcuLCAnZ2V0IG1mYScsICdhcHByb3ZlIG1mYScsICdhcHByb3ZlIHRvdHAnKS4gKi9cbiAgICBNZmFSZXF1ZXN0SW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cGlyZXNfYXQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXBvY2hEYXRlVGltZVwiXTtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFwcHJvdmFsIHJlcXVlc3QgSUQuICovXG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICByZWNlaXB0PzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJSZWNlaXB0XCJdIHwgbnVsbDtcbiAgICAgICAgICByZXF1ZXN0OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkh0dHBSZXF1ZXN0XCJdO1xuICAgICAgICAgIHN0YXR1czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTdGF0dXNcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbmZvcm1hdGlvbiBhYm91dCBhIG5ldyBzZXNzaW9uLCByZXR1cm5lZCBmcm9tIG11bHRpcGxlIGVuZHBvaW50cyAoZS5nLiwgbG9naW4sIHJlZnJlc2gsIGV0Yy4pLiAqL1xuICAgIE5ld1Nlc3Npb25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBleHBpcmF0aW9uIChpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2gpLCBiZXlvbmQgd2hpY2ggaXQgY2Fubm90IGJlIHJlZnJlc2hlZC5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAxNzAxODc5NjQwXG4gICAgICAgICAgICovXG4gICAgICAgICAgZXhwaXJhdGlvbj86IG51bWJlcjtcbiAgICAgICAgICBzZXNzaW9uX2luZm86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ2xpZW50U2Vzc2lvbkluZm9cIl07XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIE5ldyB0b2tlbiB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gUmVxdWVzdHMgdG8gc2lnbmluZyBlbmRwb2ludHNcbiAgICAgICAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIHZhbHVlIGluIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyXG4gICAgICAgICAgICovXG4gICAgICAgICAgdG9rZW46IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBPcmdJbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBXaGVuIGZhbHNlLCBhbGwgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zIGludm9sdmluZyBrZXlzIGluIHRoaXMgb3JnIGFyZSBkaXNhYmxlZC4gKi9cbiAgICAgICAgICBlbmFibGVkOiBib29sZWFuO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gRGVwcmVjYXRlZDogdGhpcyBmaWVsZCBzaG91bGQgYmUgaWdub3JlZC4gKi9cbiAgICAgICAgICBrZXlfaW1wb3J0X2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyB1bml2ZXJzYWxseSB1bmlxdWUga2V5LXdyYXBwaW5nLWtleSBpZGVudGlmaWVyLlxuICAgICAgICAgICAqIFRoaXMgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBzZXR0aW5nIHVwIGtleSBleHBvcnQuXG4gICAgICAgICAgICogQGV4YW1wbGUgbXJrLWZjZTA5NTI1ZTgxNTg3ZDIzNTIwZjExZTA3ZTJlOWQ5XG4gICAgICAgICAgICovXG4gICAgICAgICAga3drX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIERhdGUvdGltZSAoaW4gVVRDKSB3aGVuIGxhc3QgJ3Vuc3Rha2UnIHdhcyBwZXJmb3JtZWQuIFVuaXggZXBvY2ggaWYgbm9uZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSBUT0RPXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQzMlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBIb3cgbWFueSAndW5zdGFrZScgY2FsbHMgaGFwcGVuZWQgb24gdGhlIGRheSB3aGVuIGBsYXN0X3Vuc3Rha2VgIHdhcyBwZXJmb3JtZWQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF91bnN0YWtlX2RheV9jb3VudDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZ1xuICAgICAgICAgICAqIEBleGFtcGxlIG15X29yZ19uYW1lXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgb3JnYW5pemF0aW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgICAqL1xuICAgICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcmctd2lkZSBwb2xpY2llcyB0aGF0IGFyZSBjaGVja2VkIGJlZm9yZSBhIGtleSBpcyB1c2VkIGZvciBzaWduaW5nXG4gICAgICAgICAgICogQGV4YW1wbGUgW1xuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIk1heERhaWx5VW5zdGFrZVwiOiA1XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50MzJcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIFRPVFAgZmFpbHVyZSBsaW1pdCwgaS5lLiwgdGhlIG51bWJlclxuICAgICAgICAgICAqIG9mIHRpbWVzIGEgdXNlciBjYW4gcHJvdmlkZSBhbiBpbmNvcnJlY3QgVE9UUCBjb2RlIGJlZm9yZSBiZWluZyByYXRlIGxpbWl0ZWQuXG4gICAgICAgICAgICogVGhpcyB2YWx1ZSBjYW4gYmUgYmV0d2VlbiAxIGFuZCA1IChpbmNsdXNpdmUpLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfZmFpbHVyZV9saW1pdDogbnVtYmVyO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG9yZ2FuaXphdGlvbidzIGN1cnJlbnRseSBjb25maWd1cmVkIHVzZXItZXhwb3J0IGRlbGF5LCBpLmUuLCB0aGUgbWluaW11bVxuICAgICAgICAgICAqIGFtb3VudCBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gYSB1c2VyLWV4cG9ydCBpcyBpbml0aWF0ZWQgYW5kIHdoZW5cbiAgICAgICAgICAgKiBpdCBtYXkgYmUgY29tcGxldGVkLiAoVGhpcyB2YWx1ZSBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZVxuICAgICAgICAgICAqIG9yZy13aWRlIGV4cG9ydC4pXG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGVsYXk6IG51bWJlcjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDY0XG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBvcmdhbml6YXRpb24ncyBjdXJyZW50bHkgY29uZmlndXJlZCB1c2VyLWV4cG9ydCB3aW5kb3csIGkuZS4sIHRoZSBhbW91bnRcbiAgICAgICAgICAgKiBvZiB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIHdoZW4gdGhlIHVzZXItZXhwb3J0IGRlbGF5IGlzIGNvbXBsZXRlZCBhbmQgd2hlblxuICAgICAgICAgICAqIHRoZSB1c2VyIGV4cG9ydCByZXF1ZXN0IGhhcyBleHBpcmVkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGNvbXBsZXRlZC4gKFRoaXMgdmFsdWVcbiAgICAgICAgICAgKiBpcyBtZWFuaW5nbGVzcyBmb3Igb3JnYW5pemF0aW9ucyB0aGF0IHVzZSBvcmctd2lkZSBleHBvcnQuKVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfZXhwb3J0X3dpbmRvdzogbnVtYmVyO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RLZXlSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgdGhlIGtleSBpcyBpbiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleUluUm9sZUluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkTGlzdEtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGtleXM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiS2V5SW5mb1wiXVtdO1xuICAgICAgICB9ICYge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBJZiBzZXQsIHRoZSBjb250ZW50IG9mIGByZXNwb25zZWAgZG9lcyBub3QgY29udGFpbiB0aGUgZW50aXJlIHJlc3VsdCBzZXQuXG4gICAgICAgICAgICogVG8gZmV0Y2ggdGhlIG5leHQgcGFnZSBvZiB0aGUgcmVzdWx0IHNldCwgY2FsbCB0aGUgc2FtZSBlbmRwb2ludFxuICAgICAgICAgICAqIGJ1dCBzcGVjaWZ5IHRoaXMgdmFsdWUgYXMgdGhlICdwYWdlLnN0YXJ0JyBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgICAgICovXG4gICAgICAgICAgbGFzdF9ldmFsdWF0ZWRfa2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIGtleXMgaW4gYSByb2xlICovXG4gICAgICAgICAga2V5czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlVXNlcnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gQWxsIHVzZXJzIGluIGEgcm9sZSAqL1xuICAgICAgICAgIHVzZXJzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVzZXJJblJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZExpc3RSb2xlc1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uLiAqL1xuICAgICAgICAgIHJvbGVzOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlJvbGVJbmZvXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBsaXN0IG9mIHNlc3Npb25zICovXG4gICAgICAgICAgc2Vzc2lvbnM6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiU2Vzc2lvbkluZm9cIl1bXTtcbiAgICAgICAgfSAmIHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgc2V0LCB0aGUgY29udGVudCBvZiBgcmVzcG9uc2VgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGVudGlyZSByZXN1bHQgc2V0LlxuICAgICAgICAgICAqIFRvIGZldGNoIHRoZSBuZXh0IHBhZ2Ugb2YgdGhlIHJlc3VsdCBzZXQsIGNhbGwgdGhlIHNhbWUgZW5kcG9pbnRcbiAgICAgICAgICAgKiBidXQgc3BlY2lmeSB0aGlzIHZhbHVlIGFzIHRoZSAncGFnZS5zdGFydCcgcXVlcnkgcGFyYW1ldGVyLlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGxhc3RfZXZhbHVhdGVkX2tleT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIGV4cG9ydF9yZXF1ZXN0czogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0SW5pdFJlc3BvbnNlXCJdW107XG4gICAgICAgIH0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHNldCwgdGhlIGNvbnRlbnQgb2YgYHJlc3BvbnNlYCBkb2VzIG5vdCBjb250YWluIHRoZSBlbnRpcmUgcmVzdWx0IHNldC5cbiAgICAgICAgICAgKiBUbyBmZXRjaCB0aGUgbmV4dCBwYWdlIG9mIHRoZSByZXN1bHQgc2V0LCBjYWxsIHRoZSBzYW1lIGVuZHBvaW50XG4gICAgICAgICAgICogYnV0IHNwZWNpZnkgdGhpcyB2YWx1ZSBhcyB0aGUgJ3BhZ2Uuc3RhcnQnIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBsYXN0X2V2YWx1YXRlZF9rZXk/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFJldm9rZVRva2VuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICB0b2tlbj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdIHwgbnVsbDtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBSZXZva2VUb2tlbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVG9rZW5zIHRoYXQgd2VyZSByZXZva2VkLiAqL1xuICAgICAgICAgIHJldm9rZWQ6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG9rZW5JbmZvXCJdW107XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgUm9sZUluZm86IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgcm9sZSBpcyBlbmFibGVkXG4gICAgICAgICAgICogQGV4YW1wbGUgdHJ1ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEZXByZWNhdGVkIFRoZSBDdWJlU2lnbmVyIElEcyBvZiBhdCBtb3N0IDEwMCBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJvbGUgKi9cbiAgICAgICAgICBrZXlzPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJLZXlJblJvbGVJbmZvXCJdW10gfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJvbGUgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgICAgICAgICAqIEBleGFtcGxlIG15X3JvbGVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gUG9saWN5IHRoYXQgaXMgY2hlY2tlZCB3aGVuZXZlciBhIGtleSBpcyBhY2Nlc3NlZCBmb3Igc2lnbmluZyB2aWEgdGhpcyByb2xlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFtcbiAgICAgICAgICAgKiAgIHtcbiAgICAgICAgICAgKiAgICAgXCJTb3VyY2VJcEFsbG93bGlzdFwiOiBbXG4gICAgICAgICAgICogICAgICAgXCIxMjMuNDU2Ljc4LjkvMTZcIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9LFxuICAgICAgICAgICAqICAge1xuICAgICAgICAgICAqICAgICBcIlJlcXVpcmVNZmFcIjoge1xuICAgICAgICAgICAqICAgICAgIFwiY291bnRcIjogMVxuICAgICAgICAgICAqICAgICB9XG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHJvbGVcbiAgICAgICAgICAgKiBAZXhhbXBsZSBSb2xlI2JmZTNlY2NiLTczMWUtNDMwZC1iMWU1LWFjMTM2M2U2YjA2YlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIERlcHJlY2F0ZWQuIFRoZSBsaXN0IG9mIGF0IG1vc3QgMTAwIHVzZXJzIHdpdGggYWNjZXNzIHRvIHRoZSByb2xlLiAqL1xuICAgICAgICAgIHVzZXJzPzogc3RyaW5nW10gfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNlc3Npb25JbmZvOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXNzaW9uXG4gICAgICAgICAgICogQGV4YW1wbGUgT0lEQyBsb2dpbiBzZXNzaW9uXG4gICAgICAgICAgICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTZXNzaW9uIElELiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZSBzZXNzaW9uLCBidXQgY2Fubm90IGJlIHVzZWQgZm9yIGF1dGguXG4gICAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSByZXNwb25zZSBmcm9tIGFueSBvcGVyYXRpb24gb3BlcmF0aW5nIG9uIG11bHRpcGxlIHNlc3Npb25zICovXG4gICAgU2Vzc2lvbnNSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGxpc3Qgb2Ygc2Vzc2lvbnMgKi9cbiAgICAgICAgICBzZXNzaW9uczogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJTZXNzaW9uSW5mb1wiXVtdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFNvbGFuYVNpZ25SZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIGhleC1lbmNvZGVkIHNpZ25hdHVyZS4gKi9cbiAgICAgICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBTdGFrZVJlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWxpZGF0b3Iga2V5IGlkIChcIktleSMuLi5cIilcbiAgICAgICAgICAgKiBAZXhhbXBsZSBLZXkjZGIxNzMxZjgtMzY1OS00NWMwLTg4NWItZTExZTFmNWI3YmUyXG4gICAgICAgICAgICovXG4gICAgICAgICAgY3JlYXRlZF92YWxpZGF0b3Jfa2V5X2lkOiBzdHJpbmc7XG4gICAgICAgICAgZGVwb3NpdF90eDogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJEZXBvc2l0VHhuXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFRva2VuSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gU2Vzc2lvbiBJRC4gVXNlIGl0IHRvIHJldm9rZSBhIHNlc3Npb24uIENhbm5vdCBiZSB1c2VkIGZvciBhdXRoLiAqL1xuICAgICAgICAgIGhhc2g6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRva2VucyBwdXJwb3NlICovXG4gICAgICAgICAgcHVycG9zZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBPQXV0aDIgc3RhbmRhcmQgVG9rZW4gUmVzcG9uc2UuXG4gICAgICpcbiAgICAgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzY3NDkjc2VjdGlvbi00LjIuMlxuICAgICAqL1xuICAgIFRva2VuUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIFRoZSBhY2Nlc3MgdG9rZW4gaXNzdWVkIGJ5IHRoZSBhdXRob3JpemF0aW9uIHNlcnZlci4gKi9cbiAgICAgICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgICAgICBleHBpcmVzX2luOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNlY29uZHNcIl07XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBBbiBPSURDIHRva2VuIGlzc3VlZCBieSBDdWJpc3QsIGNvbnRhaW5pbmcgdXNlciBpbmZvcm1hdGlvbiAqL1xuICAgICAgICAgIGlkX3Rva2VuPzogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHR5cGUgb2YgdGhlIHRva2VuIGlzc3VlZC4gVmFsdWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gKi9cbiAgICAgICAgICB0b2tlbl90eXBlOiBzdHJpbmc7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBUb3RwSW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIFRPVFAgY2hhbGxlbmdlLlxuICAgICAgICAgICAqIEBleGFtcGxlIFRvdHBDaGFsbGVuZ2UjNzg5MmViYmEtNTYzZS00ODViLWJiN2QtZTI2MjY3MzYzMjg2XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF9pZDogc3RyaW5nO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBUT1RQIHVybCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCB0byBpbml0aWFsaXplIFRPVFAuXG4gICAgICAgICAgICogQGV4YW1wbGUgb3RwYXV0aDovL3RvdHAvQ3ViaXN0OmFsaWNlLSU0MGV4YW1wbGUuY29tP3NlY3JldD1EQUhGN0tDT1RRV1NPTUs0WEZFTU5IWE80SjQzM09ENyZpc3N1ZXI9Q3ViaXN0XG4gICAgICAgICAgICovXG4gICAgICAgICAgdG90cF91cmw6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVW5zdGFrZSByZXNwb25zZXMgYXJlIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlcy5cbiAgICAgKiBUaGUgc2NoZW1hIGZvciB0aGlzIG1lc3NhZ2UgaXMgZGVmaW5lZFxuICAgICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vY29uc2Vuc3VzLXNwZWNzL2Jsb2IvdjEuMC4xL3NwZWNzL3BoYXNlMC9iZWFjb24tY2hhaW4ubWQjc2lnbmVkdm9sdW50YXJ5ZXhpdCkuXG4gICAgICogVGhpcyBtZXNzYWdlIGNhbiBiZSBkaXJlY3RseSBQT1NUZWQgdG8gdGhlIEJlYWNvbiBub2RlJ3NcbiAgICAgKiBgL2V0aC92MS9iZWFjb24vcG9vbC92b2x1bnRhcnlfZXhpdHNgIGVuZC1wb2ludCAoc2VlIGV4cGVjdGVkIHNjaGVtYVxuICAgICAqIFtoZXJlXShodHRwczovL2V0aGVyZXVtLmdpdGh1Yi5pby9iZWFjb24tQVBJcy8jL0JlYWNvbi9zdWJtaXRQb29sVm9sdW50YXJ5RXhpdCkpLlxuICAgICAqL1xuICAgIFVuc3Rha2VSZXNwb25zZToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIG1lc3NhZ2U6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVm9sdW50YXJ5RXhpdFwiXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gQkxTIHNpZ25hdHVyZS5cbiAgICAgICAgICAgKiBAZXhhbXBsZSAweDkxMGM3Y2Q1MzdlZDkxY2M4YzRhODJmM2NiZDgzMmU5YmU4YzI0YTIyZTljODZkZjQ3OWY3Y2U0MjAyNWVhNmEwOTYxOWI0MThiNjY2YTA2MGUyNjBkMmFhZTMxYjhlNTBlOWQwNWNhMzQ0MmM3ZWVkM2I1MDdlNTIwN2UxNDY3NDI3NWY2OGMyYmE4NGM0YmY2YjhkZDM2NGEzMDRhY2FjOGNmYWIzNjgxZTI1MTRiNDQwMGY5MjQyYmM2MTE2NFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIFVwZGF0ZU9yZ1Jlc3BvbnNlOiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgKi9cbiAgICAgICAgICBlbmFibGVkPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIG9yZyAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgICAgICAgICogQGV4YW1wbGUgbXlfb3JnX25hbWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBvcmdhbml6YXRpb25cbiAgICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAgICovXG4gICAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2Ygb3JnLXdpZGUgcG9saWNpZXNcbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiTWF4RGFpbHlVbnN0YWtlXCI6IDVcbiAgICAgICAgICAgKiAgIH0sXG4gICAgICAgICAgICogICB7XG4gICAgICAgICAgICogICAgIFwiT3JpZ2luQWxsb3dsaXN0XCI6IFtcbiAgICAgICAgICAgKiAgICAgICBcImh0dHBzOi8vZXhhbXBsZS5jb21cIlxuICAgICAgICAgICAqICAgICBdXG4gICAgICAgICAgICogICB9XG4gICAgICAgICAgICogXVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHBvbGljeT86IFJlY29yZDxzdHJpbmcsIG5ldmVyPltdIHwgbnVsbDtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBGb3JtYXQ6IGludDMyXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBuZXcgdmFsdWUgb2YgdGhlIFRPVFAgZmFpbHVyZSBsaW1pdFxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRvdHBfZmFpbHVyZV9saW1pdD86IG51bWJlciB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogRm9ybWF0OiBpbnQ2NFxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgbmV3IHZhbHVlIG9mIHVzZXItZXhwb3J0IGRlbGF5XG4gICAgICAgICAgICovXG4gICAgICAgICAgdXNlcl9leHBvcnRfZGVsYXk/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEZvcm1hdDogaW50NjRcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIG5ldyB2YWx1ZSBvZiB1c2VyLWV4cG9ydCB3aW5kb3dcbiAgICAgICAgICAgKi9cbiAgICAgICAgICB1c2VyX2V4cG9ydF93aW5kb3c/OiBudW1iZXIgfCBudWxsO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gQW4gZW5jcnlwdGVkIHVzZXItZXhwb3J0ICovXG4gICAgVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGV4cG9ydGVkIGtleSBtYXRlcmlhbCwgZW5jcnlwdGVkIHdpdGggQUVTLTI1Ni1HQ00gdW5kZXIgYSBrZXlcbiAgICAgICAgICAgKiBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXkgc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QgdmlhIEhQS0UgKFJGQzkxODApXG4gICAgICAgICAgICogd2l0aCBESEtFTShQLTI1NiwgSEtERi1TSEEyNTYpIGFuZCBiYXNlNjQgZW5jb2RlZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmNyeXB0ZWRfa2V5X21hdGVyaWFsOiBzdHJpbmc7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBlcGhlbWVyYWwgcHVibGljIGtleSB1c2VkIGZvciBIUEtFIGtleSBkZXJpdmF0aW9uIGFzIGJhc2U2NC1lbmNvZGVkXG4gICAgICAgICAgICogdW5jb21wcmVzc2VkIFNFQzEgc2VyaWFsaXphdGlvbi5cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlcGhlbWVyYWxfcHVibGljX2tleTogc3RyaW5nO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gVGhlIHVzZXItaWQgdG8gd2hpY2ggdGhpcyBrZXkgYmVsb25ncy4gKi9cbiAgICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUaGUgcmVzcG9uc2UgdG8gYSBzdWNjZXNzZnVsIHVzZXItZXhwb3J0IGluaXQgcmVxdWVzdCAqL1xuICAgIFVzZXJFeHBvcnRJbml0UmVzcG9uc2U6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydFJlcXVlc3RcIl0gJiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBrZXktaWQgYmVpbmcgcmVxdWVzdGVkLlxuICAgICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBVc2VySW5mbzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBPcHRpb25hbCBlbWFpbFxuICAgICAgICAgICAqIEBleGFtcGxlIGFsaWNlQGV4YW1wbGUuY29tXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICAvKiogQGRlc2NyaXB0aW9uIEFsbCBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjb25maWd1cmVkIGZvciB0aGlzIHVzZXIgKi9cbiAgICAgICAgICBtZmE6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQ29uZmlndXJlZE1mYVwiXVtdO1xuICAgICAgICAgIC8qKiBAZGVzY3JpcHRpb24gTUZBIHBvbGljeSwgYXBwbGllcyBiZWZvcmUgbG9nZ2luZyBpbiBhbmQgb3RoZXIgc2Vuc2l0aXZlIG9wZXJhdGlvbnMgKi9cbiAgICAgICAgICBtZmFfcG9saWN5PzogdW5rbm93bjtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgbmFtZVxuICAgICAgICAgICAqIEBleGFtcGxlIEFsaWNlXG4gICAgICAgICAgICovXG4gICAgICAgICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogQGRlc2NyaXB0aW9uIEFsbCBvcmdhbml6YXRpb25zIHRoZSB1c2VyIGJlbG9uZ3MgdG9cbiAgICAgICAgICAgKiBAZXhhbXBsZSBbXG4gICAgICAgICAgICogICBcIk9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcIlxuICAgICAgICAgICAqIF1cbiAgICAgICAgICAgKi9cbiAgICAgICAgICBvcmdfaWRzOiBzdHJpbmdbXTtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJcbiAgICAgICAgICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgcGFyYW1ldGVyczogbmV2ZXI7XG4gIHJlcXVlc3RCb2RpZXM6IG5ldmVyO1xuICBoZWFkZXJzOiBuZXZlcjtcbiAgcGF0aEl0ZW1zOiBuZXZlcjtcbn1cblxuZXhwb3J0IHR5cGUgJGRlZnMgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbmV4cG9ydCB0eXBlIGV4dGVybmFsID0gUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIG9wZXJhdGlvbnMge1xuICAvKipcbiAgICogVXNlciBJbmZvXG4gICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBhYm91dE1lTGVnYWN5OiB7XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJVc2VySW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgT3JnXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgT3JnXG4gICAqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbml6YXRpb24uXG4gICAqL1xuICBnZXRPcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJPcmdJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFVwZGF0ZSBPcmdcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBPcmdcbiAgICpcbiAgICogVXBkYXRlIG9yZ2FuaXphdGlvbiBhdHRyaWJ1dGVzIChlbmFibGVkIGZsYWcsIG5hbWUsIGFuZCBwb2xpY2llcykuXG4gICAqL1xuICB1cGRhdGVPcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlT3JnUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlVwZGF0ZU9yZ1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gQXZhbGFuY2hlIFgtIG9yIFAtQ2hhaW4gTWVzc2FnZVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBBdmFsYW5jaGUgWC0gb3IgUC1DaGFpbiBNZXNzYWdlXG4gICAqXG4gICAqIFNpZ25zIGFuIEF2YWxhbmNoZSBtZXNzYWdlIHdpdGggYSBnaXZlbiBTZWNwQXZhIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBhdmFTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEF2YWxhbmNoZSBiZWNoMzIgYWRkcmVzcyBmb3JtYXQgd2l0aG91dCB0aGUgY2hhaW4gcHJlZml4XG4gICAgICAgICAqIEBleGFtcGxlIGF2YXgxYW00dzZoZnJ2bWgzYWtkdXpranRocnRndHFhZmFsY2U2YW44Y3JcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF2YVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQXZhU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEJpdGNvaW4gVHJhbnNhY3Rpb25cbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gQml0Y29pbiBUcmFuc2FjdGlvblxuICAgKlxuICAgKiBTaWducyBhIEJpdGNvaW4gdHJhbnNhY3Rpb24gd2l0aCBhIGdpdmVuIGtleS5cbiAgICogVGhpcyBpcyBhIHByZS1yZWxlYXNlIGZlYXR1cmUuXG4gICAqL1xuICBidGNTaWduOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGJlY2gzMiBlbmNvZGluZyBvZiB0aGUgcHVibGljIGtleVxuICAgICAgICAgKiBAZXhhbXBsZSBiYzFxNXA1cWthZTc3bHk4MGtyNHB5Znl0ZHFtN3JmMDhkZGhkZWpsOWdcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJ0Y1NpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQnRjU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZXJpdmUgS2V5IEZyb20gTG9uZy1MaXZlZCBNbmVtb25pY1xuICAgKiBAZGVzY3JpcHRpb24gRGVyaXZlIEtleSBGcm9tIExvbmctTGl2ZWQgTW5lbW9uaWNcbiAgICpcbiAgICogRGVyaXZlcyBhIGtleSBvZiBhIHNwZWNpZmllZCB0eXBlIHVzaW5nIGEgc3VwcGxpZWQgZGVyaXZhdGlvbiBwYXRoIGFuZCBhblxuICAgKiBleGlzdGluZyBsb25nLWxpdmVkIG1uZW1vbmljLlxuICAgKi9cbiAgZGVyaXZlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkRlcml2ZUtleVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJDcmVhdGVLZXlSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVJUC0xOTEgRGF0YVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtMTkxIERhdGFcbiAgICpcbiAgICogU2lnbnMgYSBtZXNzYWdlIHVzaW5nIEVJUC0xOTEgcGVyc29uYWxfc2lnbiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGVpcDE5MVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgRVZNIGFkZHJlc3Mgb2YgdGhlIFNlY3AyNTZrMSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFaXAxOTFTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVpcDE5MU9yNzEyU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVJUC03MTIgVHlwZWQgRGF0YVxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFSVAtNzEyIFR5cGVkIERhdGFcbiAgICpcbiAgICogU2lnbnMgdHlwZWQgZGF0YSBhY2NvcmRpbmcgdG8gRUlQLTcxMiB3aXRoIGEgZ2l2ZW4gU2VjcDI1NmsxIGtleS5cbiAgICovXG4gIGVpcDcxMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgRVZNIGFkZHJlc3Mgb2YgdGhlIFNlY3AyNTZrMSBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFaXA3MTJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVpcDE5MU9yNzEyU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gQ3ViZVNpZ25lciB1c2VyIHNlc3Npb25cbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBDdWJlU2lnbmVyIHVzZXIgc2Vzc2lvblxuICAgKlxuICAgKiBUaGlzIHJvdXRlIGNhbiBiZSB1c2VkIHRvIHByb3ZlIHRvIGFub3RoZXIgcGFydHkgdGhhdCBhIHVzZXIgaGFzIGFcbiAgICogdmFsaWQgQ3ViZVNpZ25lciBzZXNzaW9uLlxuICAgKlxuICAgKiBDbGllbnRzIGFyZSBpbnRlbmRlZCB0byBjYWxsIHRoaXMgcm91dGUgYW5kIHBhc3MgdGhlIHJldHVybmVkIGV2aWRlbmNlXG4gICAqIHRvIGFub3RoZXIgc2VydmljZSB3aGljaCB3aWxsIHZlcmlmeSBpdCBieSBtYWtpbmcgYSByZXF1ZXN0IHRvIGAvdjAvb3JnLzxvcmdfaWQ+L2lkZW50aXR5L3ZlcmlmeWAuXG4gICAqL1xuICBjcmVhdGVQcm9vZkN1YmVTaWduZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJJZGVudGl0eVByb29mXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBbSWRlbnRpdHlQcm9vZl0gZnJvbSBPSURDIHRva2VuXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgW0lkZW50aXR5UHJvb2ZdIGZyb20gT0lEQyB0b2tlblxuICAgKlxuICAgKiBFeGNoYW5nZSBhbiBPSURDIElEIHRva2VuIChwYXNzZWQgdmlhIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyKSBmb3IgYSBwcm9vZiBvZiBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogVGhpcyByb3V0ZSBjYW4gYmUgdXNlZCB0byBwcm92ZSB0byBhbm90aGVyIHBhcnR5IHRoYXQgYSB1c2VyIGhhcyBtZXQgdGhlXG4gICAqIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cyAoYWxsb3dlZCBpc3N1ZXJzICYgYXVkaWVuY2VzKSBmb3IgQ3ViZVNpZ25lclxuICAgKiB3aXRob3V0IGxlYWtpbmcgdGhlaXIgY3JlZGVudGlhbHMuXG4gICAqXG4gICAqIENsaWVudHMgYXJlIGludGVuZGVkIHRvIGNhbGwgdGhpcyByb3V0ZSBhbmQgcGFzcyB0aGUgcmV0dXJuZWQgZXZpZGVuY2UgdG8gYW5vdGhlciBzZXJ2aWNlXG4gICAqIHdoaWNoIHdpbGwgdmVyaWZ5IGl0IGJ5IG1ha2luZyBhIHJlcXVlc3QgdG8gYC92MC9vcmcvPG9yZ19pZD4vaWRlbnRpdHkvdmVyaWZ5YC5cbiAgICovXG4gIGNyZWF0ZVByb29mT2lkYzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIklkZW50aXR5UHJvb2ZcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVmVyaWZ5IGlkZW50aXR5IHByb29mXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgaWRlbnRpdHkgcHJvb2ZcbiAgICpcbiAgICogQWxsb3dzIGEgdGhpcmQtcGFydHkgdG8gdmFsaWRhdGUgcHJvb2Ygb2YgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIFdoZW4gYSB0aGlyZC1wYXJ0eSBpcyBwcm92aWRlZCBhbiBbSWRlbnRpdHlQcm9vZl0gb2JqZWN0LCB0aGV5IG11c3QgY2hlY2sgaXRzXG4gICAqIHZlcmFjaXR5IGJ5IGNhbGxpbmcgdGhpcyBlbmRwb2ludFxuICAgKi9cbiAgdmVyaWZ5UHJvb2Y6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSWRlbnRpdHlQcm9vZlwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEtleS1JbXBvcnQgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgS2V5LUltcG9ydCBLZXlcbiAgICpcbiAgICogR2VuZXJhdGUgYW4gZXBoZW1lcmFsIGtleSB0aGF0IGEgY2xpZW50IGNhbiB1c2UgZm9yIGtleS1pbXBvcnQgZW5jcnlwdGlvbi5cbiAgICovXG4gIGNyZWF0ZUtleUltcG9ydEtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEltcG9ydCBLZXlcbiAgICogQGRlc2NyaXB0aW9uIEltcG9ydCBLZXlcbiAgICpcbiAgICogU2VjdXJlbHkgaW1wb3J0cyBhbiBleGlzdGluZyBrZXkgdXNpbmcgYSBwcmV2aW91c2x5IGdlbmVyYXRlZCBrZXktaW1wb3J0IGtleS5cbiAgICovXG4gIGltcG9ydEtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJJbXBvcnRLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW52aXRlIFVzZXJcbiAgICogQGRlc2NyaXB0aW9uIEludml0ZSBVc2VyXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgdXNlciBpbiBhbiBleGlzdGluZyBvcmcgYW5kIHNlbmRzIHRoYXQgdXNlciBhbiBpbnZpdGUgZW1haWwuXG4gICAqL1xuICBpbnZpdGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiSW52aXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IEtleXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5c1xuICAgKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIG93bmVkIGtleXMgaW4gYSBnaXZlbiBvcmcuXG4gICAqL1xuICBsaXN0S2V5c0luT3JnOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIEZpbHRlciBieSBrZXkgdHlwZVxuICAgICAgICAgKiBAZXhhbXBsZSBTZWNwRXRoQWRkclxuICAgICAgICAgKi9cbiAgICAgICAga2V5X3R5cGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIktleVR5cGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZExpc3RLZXlzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIEtleVxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIEtleVxuICAgKlxuICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIG5ldyBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICovXG4gIGNyZWF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVLZXlSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQ3JlYXRlS2V5UmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IEtleVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IEtleVxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBwcm9wZXJ0aWVzIG9mIGEga2V5LlxuICAgKi9cbiAgZ2V0S2V5SW5Pcmc6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgS2V5XG4gICAqXG4gICAqIERlbGV0ZXMgYSBrZXkgc3BlY2lmaWVkIGJ5IGl0cyBJRC5cbiAgICogT25seSB0aGUga2V5IG93bmVyIGFuZCBvcmcgb3duZXJzIGFyZSBhbGxvd2VkIHRvIGRlbGV0ZSBrZXlzLlxuICAgKi9cbiAgZGVsZXRlS2V5OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgS2V5XG4gICAqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGEga2V5LiAgVGhlIHVzZXIgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIGtleSBvciBvcmdhbml6YXRpb24gdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi5cbiAgICovXG4gIHVwZGF0ZUtleToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXBkYXRlS2V5UmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIktleUluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBLZXkgUm9sZXNcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgS2V5IFJvbGVzXG4gICAqXG4gICAqIEdldCBhbGwgcm9sZXMgdGhlIGtleSBpcyBpblxuICAgKi9cbiAgbGlzdEtleVJvbGVzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTWF4IG51bWJlciBvZiBpdGVtcyB0byByZXR1cm4gcGVyIHBhZ2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJldHVybmVkIGl0ZW1zIG1heSBiZSBsZXNzIHRoYXQgdGhpcywgZXZlbiBpZiB0aGVyZSBleGlzdCBtb3JlXG4gICAgICAgICAqIGRhdGEgaW4gdGhlIHJlc3VsdCBzZXQuIFRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBtb3JlIGRhdGEgaXMgbGVmdCBpbiB0aGUgcmVzdWx0IHNldCxcbiAgICAgICAgICogaW5zcGVjdCB0aGUgW1VuZW5jcnlwdGVkTGFzdEV2YWxLZXldIHZhbHVlIGluIHRoZSByZXNwb25zZSBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc2l6ZVwiPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBzdGFydCBvZiB0aGUgcGFnZS4gIE9taXQgdG8gc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nOyBvdGhlcndpc2UsIG9ubHkgc3BlY2lmeSBhXG4gICAgICAgICAqIHRoZSBleGFjdCB2YWx1ZSBwcmV2aW91c2x5IHJldHVybmVkIGFzICdsYXN0X2V2YWx1YXRlZF9rZXknIGZyb20gdGhlIHNhbWUgZW5kcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBcInBhZ2Uuc3RhcnRcIj86IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiTGFzdEV2YWxLZXlcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBLZXlcbiAgICAgICAgICogQGV4YW1wbGUgS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAga2V5X2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0S2V5Um9sZXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFBlbmRpbmcgTUZBIFJlcXVlc3RzXG4gICAqXG4gICAqIFJldHJpZXZlcyBhbmQgcmV0dXJucyBhbGwgcGVuZGluZyBNRkEgcmVxdWVzdHMgdGhhdCBhcmUgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyLFxuICAgKiBpLmUuLCB0aG9zZSBpbiB3aGljaCB0aGUgY3VycmVudCB1c2VyIGlzIGxpc3RlZCBhcyBhbiBhcHByb3ZlclxuICAgKi9cbiAgbWZhTGlzdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkxpc3RNZmFSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUGVuZGluZyBNRkEgUmVxdWVzdFxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFBlbmRpbmcgTUZBIFJlcXVlc3RcbiAgICpcbiAgICogUmV0cmlldmVzIGFuZCByZXR1cm5zIGEgcGVuZGluZyBNRkEgcmVxdWVzdCBieSBpdHMgaWQuXG4gICAqL1xuICBtZmFHZXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFwcHJvdmUgb3IgUmVqZWN0IE1GQSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBBcHByb3ZlIG9yIFJlamVjdCBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBBcHByb3ZlIG9yIHJlamVjdCByZXF1ZXN0IGFmdGVyIGxvZ2dpbmcgaW4gd2l0aCBDdWJlU2lnbmVyLlxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnRseS1sb2dnZWQgdXNlciBhcyBhbiBhcHByb3ZlclxuICAgKiBvZiBhIHBlbmRpbmcgTUZBIHJlcXVlc3Qgb2YgdGhlIFtTdGF0dXM6OlJlcXVpcmVkQXBwcm92ZXJzXSBraW5kLiBJZiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mXG4gICAqIGFwcHJvdmVycyBpcyByZWFjaGVkLCB0aGUgTUZBIHJlcXVlc3QgaXMgYXBwcm92ZWQ7IHRoZSBjb25maXJtYXRpb24gcmVjZWlwdCBjYW4gYmUgdXNlZCB0b1xuICAgKiByZXN1bWUgdGhlIG9yaWdpbmFsIEhUVFAgcmVxdWVzdC5cbiAgICpcbiAgICogSWYgcmVqZWN0aW5nLCBpbW1lZGlhdGVseSBkZWxldGVzIHRoZSBwZW5kaW5nIE1GQSByZXF1ZXN0LlxuICAgKi9cbiAgbWZhVm90ZUNzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk1mYVJlcXVlc3RJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIGEgRklETyBNRkEgQXBwcm92YWwvUmVqZWN0aW9uXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKlxuICAgKiBJbml0aWF0ZXMgdGhlIGFwcHJvdmFsL3JlamVjdGlvbiBwcm9jZXNzIG9mIGFuIE1GQSBSZXF1ZXN0IHVzaW5nIEZJRE8uXG4gICAqL1xuICBtZmFGaWRvSW5pdDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRmlkb0Fzc2VydENoYWxsZW5nZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBGaW5hbGl6ZSBhIEZJRE8gTUZBIEFwcHJvdmFsL1JlamVjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gRmluYWxpemUgYSBGSURPIE1GQSBBcHByb3ZhbC9SZWplY3Rpb25cbiAgICpcbiAgICogSWYgYXBwcm92aW5nLCBhZGRzIGFuIGFwcHJvdmVyIHRvIGEgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICogSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzIGFwcHJvdmVkO1xuICAgKiB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVGaWRvQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgbWZhX3ZvdGU/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk1mYVZvdGVcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE1mYVJlcXVlc3RcbiAgICAgICAgICogQGV4YW1wbGUgTWZhUmVxdWVzdCMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG1mYV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9Bc3NlcnRBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBcHByb3ZlL1JlamVjdCBhIFRPVFAgTUZBIFJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmUvUmVqZWN0IGEgVE9UUCBNRkEgUmVxdWVzdFxuICAgKlxuICAgKiBJZiBhcHByb3ZpbmcsIGFkZHMgdGhlIGN1cnJlbnQgdXNlciBhcyBhcHByb3ZlciB0byBhIHBlbmRpbmcgTUZBIHJlcXVlc3QgYnlcbiAgICogcHJvdmlkaW5nIFRPVFAgY29kZS4gSWYgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBhcHByb3ZlcnMgaXMgcmVhY2hlZCwgdGhlIE1GQSByZXF1ZXN0IGlzXG4gICAqIGFwcHJvdmVkOyB0aGUgY29uZmlybWF0aW9uIHJlY2VpcHQgY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBvcmlnaW5hbCBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIElmIHJlamVjdGluZywgaW1tZWRpYXRlbHkgZGVsZXRlcyB0aGUgcGVuZGluZyBNRkEgcmVxdWVzdC5cbiAgICovXG4gIG1mYVZvdGVUb3RwOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIG1mYV92b3RlPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJNZmFWb3RlXCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBNZmFSZXF1ZXN0XG4gICAgICAgICAqIEBleGFtcGxlIE1mYVJlcXVlc3QjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBtZmFfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJNZmFSZXF1ZXN0SW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBNaW50IGFuIE9JREMgSUQgdG9rZW4gZm9yIFR3aXR0ZXJcbiAgICogQGRlc2NyaXB0aW9uIE1pbnQgYW4gT0lEQyBJRCB0b2tlbiBmb3IgVHdpdHRlclxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGFjdHMgaWRlbnRpY2FsbHkgdG8gVHdpdHRlcidzIFtgb2F1dGgyL3Rva2VuYF0oaHR0cHM6Ly9kZXZlbG9wZXIudHdpdHRlci5jb20vZW4vZG9jcy9hdXRoZW50aWNhdGlvbi9hcGktcmVmZXJlbmNlL3Rva2VuKSBlbmRwb2ludCxcbiAgICogYnV0IGV4dGVuZHMgdGhlIG91dHB1dCB3aXRoIGFuIGBpZF90b2tlbmAuXG4gICAqXG4gICAqIFRoaXMgYGlkX3Rva2VuYCBjYW4gdGhlbiBiZSB1c2VkIHdpdGggYW55IEN1YmVTaWduZXIgZW5kcG9pbnQgdGhhdCByZXF1aXJlcyBhbiBPSURDIHRva2VuLlxuICAgKlxuICAgKiA+IFshSU1QT1JUQU5UXVxuICAgKiA+IFRoaXMgZW5kcG9pbnQgd2lsbCBmYWlsIHVubGVzcyB0aGUgb3JnIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhlIGlzc3VlciBgaHR0cHM6Ly9zaGltLm9hdXRoMi5jdWJpc3QuZGV2L3R3aXR0ZXJgIGFuZCBjbGllbnQgSUQgYmVpbmcgdXNlZCBmb3IgVHdpdHRlci5cbiAgICovXG4gIG9hdXRoMlR3aXR0ZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExvZ2luIHdpdGggT0lEQ1xuICAgKiBAZGVzY3JpcHRpb24gTG9naW4gd2l0aCBPSURDXG4gICAqXG4gICAqIEV4Y2hhbmdlIGFuIE9JREMgSUQgdG9rZW4gKHBhc3NlZCB2aWEgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIpIGZvciBhIHNpZ25lciBzZXNzaW9uXG4gICAqL1xuICBvaWRjQXV0aDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJPaWRjTG9naW5SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBMaXN0IFJvbGVzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGVzXG4gICAqXG4gICAqIFJldHJpZXZlcyBhbGwgcm9sZXMgaW4gYW4gb3JnYW5pemF0aW9uIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBpcyBhbGxvd2VkIHRvIGFjY2Vzcy5cbiAgICovXG4gIGxpc3RSb2xlczoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgICAgLyoqIEBkZXNjcmlwdGlvbiBEb24ndCBpbmNsdWRlIGtleXMgYW5kIHVzZXJzIGZvciBlYWNoIHJvbGUgKi9cbiAgICAgICAgc3VtbWFyaXplPzogYm9vbGVhbiB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVzUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIFJvbGVcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZSBSb2xlXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgcm9sZSBpbiBhbiBvcmdhbml6YXRpb24uIFVubGVzcyB0aGUgbG9nZ2VkLWluIHVzZXJcbiAgICogaXMgdGhlIG93bmVyLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBuZXdseSBjcmVhdGVkIHJvbGUuXG4gICAqL1xuICBjcmVhdGVSb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgcmVxdWVzdCBib2R5IHRvIHNldCB0aGUgcm9sZSBuYW1lICovXG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVJvbGVSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkNyZWF0ZVJvbGVSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gR2V0IFJvbGVcbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGEgcm9sZSBpbiBhbiBvcmdhbml6YXRpb25cbiAgICovXG4gIGdldFJvbGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSb2xlSW5mb1wiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBEZWxldGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gRGVsZXRlIFJvbGVcbiAgICpcbiAgICogRGVsZXRlcyBhIHJvbGUgaW4gYW4gb3JnYW5pemF0aW9uLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIGNhbiBwZXJmb3JtIHRoaXMgYWN0aW9uLlxuICAgKi9cbiAgZGVsZXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBVcGRhdGUgUm9sZVxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIFJvbGVcbiAgICpcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhIHJvbGUgKHRoaXMgcmVxdWlyZXMgdGhlIGBtYW5hZ2U6cm9sZTp1cGRhdGU6ZW5hYmxlYCBzY29wZSkuXG4gICAqIFVwZGF0ZXMgdGhlIHJvbGUncyBwb2xpY2llcyAodGhpcyByZXF1aXJlcyB0aGUgYG1hbmFnZTpyb2xlOnVwZGF0ZTpwb2xpY3lgIHNjb3BlKS5cbiAgICogVGhlIHVzZXIgbXVzdCBiZSBpbiB0aGUgcm9sZSBvciBhbiBvd25lciBvZiB0aGUgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgdXBkYXRlUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVcGRhdGVSb2xlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlJvbGVJbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEFkZCBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBBZGQgS2V5c1xuICAgKlxuICAgKiBBZGRzIGEgbGlzdCBvZiBleGlzdGluZyBrZXlzIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqL1xuICBhZGRLZXlzVG9Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFkZEtleXNUb1JvbGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge307XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgVXNlclxuICAgKiBAZGVzY3JpcHRpb24gQWRkIFVzZXJcbiAgICpcbiAgICogQWRkcyBhbiBleGlzdGluZyB1c2VyIHRvIGFuIGV4aXN0aW5nIHJvbGUuXG4gICAqIE9ubHkgdXNlcnMgaW4gdGhlIHJvbGUgb3Igb3duZXJzIGNhbiBhZGQgdXNlcnMgdG8gYSByb2xlLlxuICAgKi9cbiAgYWRkVXNlclRvUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IFJvbGUgS2V5c1xuICAgKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBrZXlzIGluIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlS2V5czoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHF1ZXJ5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gcmV0dXJuIHBlciBwYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB0aGUgYWN0dWFsIG51bWJlciBvZiByZXR1cm5lZCBpdGVtcyBtYXkgYmUgbGVzcyB0aGF0IHRoaXMsIGV2ZW4gaWYgdGhlcmUgZXhpc3QgbW9yZVxuICAgICAgICAgKiBkYXRhIGluIHRoZSByZXN1bHQgc2V0LiBUbyByZWxpYWJseSBkZXRlcm1pbmUgaWYgbW9yZSBkYXRhIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCBzZXQsXG4gICAgICAgICAqIGluc3BlY3QgdGhlIFtVbmVuY3J5cHRlZExhc3RFdmFsS2V5XSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnNpemVcIj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgc3RhcnQgb2YgdGhlIHBhZ2UuICBPbWl0IHRvIHN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZzsgb3RoZXJ3aXNlLCBvbmx5IHNwZWNpZnkgYVxuICAgICAgICAgKiB0aGUgZXhhY3QgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBhcyAnbGFzdF9ldmFsdWF0ZWRfa2V5JyBmcm9tIHRoZSBzYW1lIGVuZHBvaW50LlxuICAgICAgICAgKi9cbiAgICAgICAgXCJwYWdlLnN0YXJ0XCI/OiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkxhc3RFdmFsS2V5XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJQYWdpbmF0ZWRMaXN0Um9sZUtleXNSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgS2V5XG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgS2V5XG4gICAqXG4gICAqIFJlbW92ZXMgYSBnaXZlbiBrZXkgZnJvbSBhIHJvbGVcbiAgICovXG4gIHJlbW92ZUtleUZyb21Sb2xlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElEIG9mIHRoZSBkZXNpcmVkIEtleVxuICAgICAgICAgKiBAZXhhbXBsZSBLZXkjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBrZXlfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHt9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBhIHNpbmdsZSBwYWdlIG9mIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIExpc3QgYSBzaW5nbGUgcGFnZSBvZiBUb2tlbnMgKERlcHJlY2F0ZWQpXG4gICAqXG4gICAqICoqRGVwcmVjYXRlZCoqOiBVc2UgYEdFVCAvb3JnL3tvcmdfaWR9L3Nlc3Npb24/cm9sZT1gXG4gICAqXG4gICAqIFJldHVybnMgYWxsIGFjY2VzcyB0b2tlbnMgZm9yIGEgZ2l2ZW4gcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIGNyZWF0ZSBhIHRva2VuIGZvciBpdC5cbiAgICovXG4gIGxpc3RSb2xlVG9rZW5zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTGlzdFRva2Vuc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENyZWF0ZSBUb2tlblxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlIFRva2VuXG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgYWNjZXNzIHRva2VuIGZvciBhIGdpdmVuIHJvbGUgKHRvIGJlIHVzZWQgYXMgXCJBUEkgS2V5XCIgZm9yIGFsbCBzaWduaW5nIGFjdGlvbnMpLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG93bmVycyBjYW4gY3JlYXRlIGEgdG9rZW4gZm9yIGl0LlxuICAgKi9cbiAgY3JlYXRlUm9sZVRva2VuOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkNyZWF0ZVRva2VuUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgQWxsIFRva2VucyAoRGVwcmVjYXRlZClcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIFJldm9rZSBBbGwgVG9rZW5zIChEZXByZWNhdGVkKVxuICAgKlxuICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uP3JvbGU9YCBpbnN0ZWFkXG4gICAqXG4gICAqIFJldm9rZXMgYWxsIGFjY2VzcyB0b2tlbnMgYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICByZXZva2VBbGxSb2xlVG9rZW5zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUmV2b2tlVG9rZW5zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIFRva2VuIChEZXByZWNhdGVkKVxuICAgKlxuICAgKiAqKkRlcHJlY2F0ZWQqKjogVXNlIGBERUxFVEUgL29yZy97b3JnX2lkfS9zZXNzaW9uL3tzZXNzaW9uX2lkfWBcbiAgICpcbiAgICogUmV2b2tlcyBhbiBhY2Nlc3MgdG9rZW4gYXNzb2NpYXRlZCB3aXRoIGEgcm9sZS5cbiAgICogT25seSB1c2VycyBpbiB0aGUgcm9sZSBvciBvd25lcnMgY2FuIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAqL1xuICByZXZva2VSb2xlVG9rZW46IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBSb2xlXG4gICAgICAgICAqIEBleGFtcGxlIFJvbGUjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICByb2xlX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIElEIG9mIHRoZSBzZXNzaW9uIHRvIHJldm9rZVxuICAgICAgICAgKiBAZXhhbXBsZSA3N2FhZDIxMDBjMzYxZjQ5NzYzNWRkMDA1YzRkMTU3ODFlMmU1ZGY0YjlmNDVkOGU3NGYzNzQyNWNiYzMwYjllXG4gICAgICAgICAqL1xuICAgICAgICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJSZXZva2VUb2tlblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3QgUm9sZSBVc2Vycy5cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgUm9sZSBVc2Vycy5cbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdXNlcnMgd2hvIGhhdmUgYWNjZXNzIHRvIGEgcm9sZS5cbiAgICovXG4gIGxpc3RSb2xlVXNlcnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgUm9sZVxuICAgICAgICAgKiBAZXhhbXBsZSBSb2xlIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgcm9sZV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkTGlzdFJvbGVVc2Vyc1Jlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlbW92ZSBVc2VyXG4gICAqIEBkZXNjcmlwdGlvbiBSZW1vdmUgVXNlclxuICAgKlxuICAgKiBSZW1vdmVzIGFuIGV4aXN0aW5nIHVzZXIgZnJvbSBhbiBleGlzdGluZyByb2xlLlxuICAgKiBPbmx5IHVzZXJzIGluIHRoZSByb2xlIG9yIG9yZyBvd25lcnMgY2FuIHJlbW92ZSB1c2VycyBmcm9tIGEgcm9sZS5cbiAgICovXG4gIHJlbW92ZVVzZXJGcm9tUm9sZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIFJvbGVcbiAgICAgICAgICogQGV4YW1wbGUgUm9sZSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIHJvbGVfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgZGVzaXJlZCBVc2VyXG4gICAgICAgICAqIEBleGFtcGxlIFVzZXIjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICB1c2VyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7fTtcbiAgfTtcbiAgLyoqXG4gICAqIExpc3Qgc2Vzc2lvbnNcbiAgICogQGRlc2NyaXB0aW9uIExpc3Qgc2Vzc2lvbnNcbiAgICpcbiAgICogSWYgbm8gcXVlcnkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQsIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIGlzIHJldHVybmVkXG4gICAqL1xuICBsaXN0U2Vzc2lvbnM6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlBhZ2luYXRlZFNlc3Npb25zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQ3JlYXRlIG5ldyB1c2VyIHNlc3Npb24gKG1hbmFnZW1lbnQgYW5kL29yIHNpZ25pbmcpXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGUgbmV3IHVzZXIgc2Vzc2lvbiAobWFuYWdlbWVudCBhbmQvb3Igc2lnbmluZylcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNlc3Npb24sIHNpbGVudGx5IHRydW5jYXRpbmcgcmVxdWVzdGVkIHNlc3Npb24gYW5kIGF1dGggbGlmZXRpbWVzXG4gICAqIHRvIGJlIGF0IG1vc3QgcmVxdWVzdG9yJ3Mgc2Vzc2lvbiBhbmQgYXV0aCBsaWZldGltZSwgcmVzcGVjdGl2ZWx5LlxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJDcmVhdGVTZXNzaW9uUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIk5ld1Nlc3Npb25SZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZXZva2UgZXhpc3Rpbmcgc2Vzc2lvbihzKVxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGV4aXN0aW5nIHNlc3Npb24ocylcbiAgICpcbiAgICogSW1tZWRpYXRlbHkgcmV2b2tlcyBleGlzdGluZyBzZXNzaW9ucywgcHJldmVudGluZyB0aGVtIGZyb20gYmVpbmcgdXNlZCBvciByZWZyZXNoZWQuXG4gICAqIElmIG5vIHF1ZXJ5IHBhcmFtcyBhcmUgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHNlc3Npb24gaXMgcmV2b2tlZC5cbiAgICovXG4gIHJldm9rZVNlc3Npb25zOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSBuYW1lIG9yIElEIG9mIGEgcm9sZSB0byBvcGVyYXRlIG9uXG4gICAgICAgICAqIEBleGFtcGxlIG15LXJvbGVcbiAgICAgICAgICovXG4gICAgICAgIHJvbGU/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25zUmVzcG9uc2VcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGN1cnJlbnQgc2Vzc2lvblxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIHRoZSBjdXJyZW50IHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgKi9cbiAgcmV2b2tlQ3VycmVudFNlc3Npb246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogR2V0IHNlc3Npb24gaW5mb3JtYXRpb25cbiAgICogQGRlc2NyaXB0aW9uIEdldCBzZXNzaW9uIGluZm9ybWF0aW9uXG4gICAqL1xuICBnZXRTZXNzaW9uOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byBnZXRcbiAgICAgICAgICogQGV4YW1wbGUgNzdhYWQyMTAwYzM2MWY0OTc2MzVkZDAwNWM0ZDE1NzgxZTJlNWRmNGI5ZjQ1ZDhlNzRmMzc0MjVjYmMzMGI5ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU2Vzc2lvbkluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogUmV2b2tlIGEgc2Vzc2lvblxuICAgKiBAZGVzY3JpcHRpb24gUmV2b2tlIGEgc2Vzc2lvblxuICAgKlxuICAgKiBJbW1lZGlhdGVseSByZXZva2VzIGFuIGV4aXN0aW5nIHNlc3Npb24sIHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyB1c2VkIG9yIHJlZnJlc2hlZFxuICAgKi9cbiAgcmV2b2tlU2Vzc2lvbjoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gcmV2b2tlXG4gICAgICAgICAqIEBleGFtcGxlIDc3YWFkMjEwMGMzNjFmNDk3NjM1ZGQwMDVjNGQxNTc4MWUyZTVkZjRiOWY0NWQ4ZTc0ZjM3NDI1Y2JjMzBiOWVcbiAgICAgICAgICovXG4gICAgICAgIHNlc3Npb25faWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlNlc3Npb25JbmZvXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICogQGRlc2NyaXB0aW9uIFNpZ24gU29sYW5hIE1lc3NhZ2VcbiAgICpcbiAgICogU2lnbnMgYSBTb2xhbmEgbWVzc2FnZSB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICovXG4gIHNvbGFuYVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGJhc2U1OC1lbmNvZGVkIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgODZaUlBzekJwNUVvUGo3d1IzYkhuN3duQVo1aVlmcGFzUmM3REtGUFRVYVpcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlNvbGFuYVNpZ25SZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiU29sYW5hU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqIEBkZXNjcmlwdGlvbiBHZXQgVG9rZW4tQWNjZXNzaWJsZSBLZXlzXG4gICAqXG4gICAqIFJldHJpZXZlcyB0aGUga2V5cyB0aGF0IHRoZSByb2xlIHRva2VuIGNhbiBhY2Nlc3MuXG4gICAqL1xuICBsaXN0VG9rZW5LZXlzOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiS2V5SW5mb3NcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogVXNlciBJbmZvXG4gICAqIEBkZXNjcmlwdGlvbiBVc2VyIEluZm9cbiAgICpcbiAgICogUmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBhYm91dE1lOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckluZm9cIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvdXRzdGFuZGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0c1xuICAgKi9cbiAgdXNlckV4cG9ydExpc3Q6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBxdWVyeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIHJldHVybiBwZXIgcGFnZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIGFjdHVhbCBudW1iZXIgb2YgcmV0dXJuZWQgaXRlbXMgbWF5IGJlIGxlc3MgdGhhdCB0aGlzLCBldmVuIGlmIHRoZXJlIGV4aXN0IG1vcmVcbiAgICAgICAgICogZGF0YSBpbiB0aGUgcmVzdWx0IHNldC4gVG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIG1vcmUgZGF0YSBpcyBsZWZ0IGluIHRoZSByZXN1bHQgc2V0LFxuICAgICAgICAgKiBpbnNwZWN0IHRoZSBbVW5lbmNyeXB0ZWRMYXN0RXZhbEtleV0gdmFsdWUgaW4gdGhlIHJlc3BvbnNlIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zaXplXCI/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHN0YXJ0IG9mIHRoZSBwYWdlLiAgT21pdCB0byBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmc7IG90aGVyd2lzZSwgb25seSBzcGVjaWZ5IGFcbiAgICAgICAgICogdGhlIGV4YWN0IHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgYXMgJ2xhc3RfZXZhbHVhdGVkX2tleScgZnJvbSB0aGUgc2FtZSBlbmRwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIFwicGFnZS5zdGFydFwiPzogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJMYXN0RXZhbEtleVwiXSB8IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSWYgcHJvdmlkZWQsIHRoZSB1c2VyLWlkIHdob3NlIHVzZXItZXhwb3J0IHJlcXVlc3RzIHRvIGxpc3QuIERlZmF1bHRzIHRvIHRoZVxuICAgICAgICAgKiBjdXJyZW50IHVzZXIuICBPbmx5IHRoZSBvcmcgb3duZXIgbWF5IGxpc3QgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIElmIHByb3ZpZGVkLCB0aGUga2V5LWlkIGZvciB3aGljaCB0byBsaXN0IGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3QuXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZD86IHN0cmluZyB8IG51bGw7XG4gICAgICB9O1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiUGFnaW5hdGVkVXNlckV4cG9ydExpc3RSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIHN0YXJ0cyBhIGRlbGF5ICh3aG9zZSBsZW5ndGggaXMgZGV0ZXJtaW5lZCBieSBPcmctd2lkZSBzZXR0aW5ncylcbiAgICogYmVmb3JlIGV4cG9ydCBjYW4gYmUgY29tcGxldGVkLCBhbmQgcmV0dXJucyBhIHRpY2tldCB0aGF0IGNhbiBiZSB1c2VkXG4gICAqIHRvIGNvbXBsZXRlIHRoZSBleHBvcnQgb25jZSB0aGUgdGltZXIgaGFzIGV4cGlyZWQuXG4gICAqXG4gICAqIE9ubHkgb25lIHVzZXItZXhwb3J0IHJlcXVlc3QgY2FuIGJlIGFjdGl2ZSBmb3IgYSBnaXZlbiBrZXkuIElmIHRoZXJlXG4gICAqIGlzIGFscmVhZHkgYW4gYWN0aXZlIGV4cG9ydCwgdGhpcyBlbmRwb2ludCB3aWxsIHJldHVybiBhbiBlcnJvci4gVG9cbiAgICogY3JlYXRlIGEgbmV3IHJlcXVlc3QsIGZpcnN0IGRlbGV0ZSB0aGUgZXhpc3Rpbmcgb25lLlxuICAgKi9cbiAgdXNlckV4cG9ydEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVXNlckV4cG9ydEluaXRSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydEluaXRSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIGFuIGV4aXN0aW5nIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhbiBleGlzdGluZyB1c2VyLWV4cG9ydCByZXF1ZXN0XG4gICAqL1xuICB1c2VyRXhwb3J0RGVsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBUaGUga2V5LWlkIHdob3NlIGV4cG9ydCByZXF1ZXN0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICAgICAqIEBleGFtcGxlIEtleSMweDNjNGQ5MENjNUFmMTY0NEMzQTNCMDEzQmFhNTQ4ODk5NzM4MUQ3QzhcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRoZSB1c2VyLWlkIHdobyBvd25zIHRoaXMgcmVxdWVzdC4gSWYgb21pdHRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgdXNlci5cbiAgICAgICAgICogT25seSB0aGUgb3JnIG93bmVyIG1heSBkZWxldGUgdXNlci1leHBvcnQgcmVxdWVzdHMgZm9yIGFub3RoZXIgdXNlci5cbiAgICAgICAgICogQGV4YW1wbGUgVXNlciM4MDZjOTU0NC1mMWZhLTRiYWQtOGQ0ZC0xMDk3YTE4NDQ3MjZcbiAgICAgICAgICovXG4gICAgICAgIHVzZXJfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgfTtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBDb21wbGV0ZSBhIHVzZXItZXhwb3J0IHJlcXVlc3RcbiAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlIGEgdXNlci1leHBvcnQgcmVxdWVzdFxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBpbml0aWF0aW5nIGEgdXNlci1leHBvcnQgcmVxdWVzdCB2aWFcbiAgICogdGhlIGB1c2VyX2V4cG9ydF9pbml0YCBBUEksIGFuZCBvbmx5IHdpdGhpbiB0aGUgc3Vic2VxdWVudCBleHBvcnQgd2luZG93XG4gICAqIChpLmUuLCBhZnRlciB0aGUgZXhwb3J0IGRlbGF5IGhhcyBwYXNzZWQgYW5kIGJlZm9yZSB0aGUgcmVxdWVzdCBoYXMgZXhwaXJlZCkuXG4gICAqXG4gICAqIFRvIGNoZWNrIG9uIHRoZSBzdGF0dXMgb2YgYW4gZXhwb3J0IHJlcXVlc3QsIHNlZSB0aGUgYHVzZXJfZXhwb3J0X2xpc3RgIEFQSS5cbiAgICovXG4gIHVzZXJFeHBvcnRDb21wbGV0ZToge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJVc2VyRXhwb3J0Q29tcGxldGVSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVXNlckV4cG9ydENvbXBsZXRlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYXRlIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBHZW5lcmF0ZXMgYSBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIG93bmVyc2hpcCBvZiBhIGtleVxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0luaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRmlkb0NyZWF0ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJGaWRvQ3JlYXRlQ2hhbGxlbmdlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKlxuICAgKiBBY2NlcHRzIHRoZSByZXNwb25zZSB0byB0aGUgY2hhbGxlbmdlIGdlbmVyYXRlZCBieSB0aGUgUE9TVCB0byB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgdXNlclJlZ2lzdGVyRmlkb0NvbXBsZXRlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRGVsZXRlIEZJRE8ga2V5XG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgRklETyBrZXlcbiAgICpcbiAgICogRGVsZXRlcyBhIEZJRE8ga2V5IGZyb20gdGhlIHVzZXIncyBhY2NvdW50IChpZiB0aGUga2V5IGlzIG5vdCB0aGUgc29sZSBNRkEgZmFjdG9yKS4gTUZBIGlzIGFsd2F5cyByZXF1aXJlZC5cbiAgICovXG4gIHVzZXJEZWxldGVGaWRvOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgRmlkb0tleVxuICAgICAgICAgKiBAZXhhbXBsZSBGaWRvS2V5IzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgZmlkb19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVtcHR5XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEluaXRpYWxpemUgVE9UUCBSZXNldFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqXG4gICAqIENyZWF0ZXMgYSBuZXcgVE9UUCBjaGFsbGVuZ2UgdGhhdCBtdXN0IGJlIGFuc3dlcmVkIHRvIHByb3ZlIHRoYXQgdGhlIG5ldyBUT1RQXG4gICAqIHdhcyBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byBhbiBhdXRoZW50aWNhdG9yIGFwcC5cbiAgICpcbiAgICogVGhpcyBvcGVyYXRpb24gaXMgYWxsb3dlZCBpZiBFSVRIRVJcbiAgICogLSB0aGUgdXNlciBhY2NvdW50IGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgYW5kIG5vIFRPVFAgaXMgYWxyZWFkeSBzZXQsIE9SXG4gICAqIC0gdGhlIHVzZXIgaGFzIG5vdCBjb25maWd1cmVkIGFueSBhdXRoIGZhY3RvcnM7XG4gICAqIG90aGVyd2lzZSwgTUZBIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlclJlc2V0VG90cEluaXQ6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBSZXNldFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG90cEluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIERlbGV0ZSBUT1RQXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGUgVE9UUFxuICAgKlxuICAgKiBEZWxldGVzIFRPVFAgZnJvbSB0aGUgdXNlcidzIGFjY291bnQgKGlmIFRPVFAgaXMgbm90IHRoZSBzb2xlIE1GQSBmYWN0b3IpLiBNRkEgaXMgYWx3YXlzIHJlcXVpcmVkLlxuICAgKi9cbiAgdXNlckRlbGV0ZVRvdHA6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRW1wdHlcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVzZXR0aW5nIFRPVFBcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqXG4gICAqIENoZWNrcyBpZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlIGNvcnJlY3QgVE9UUCBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gICAqIGNoYWxsZW5nZSBnZW5lcmF0ZWQgYnkgdGhlIFBPU1QgbWV0aG9kIG9mIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICB1c2VyUmVzZXRUb3RwQ29tcGxldGU6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiVG90cENoYWxsZW5nZUFuc3dlclwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBWZXJpZnkgVE9UUFxuICAgKiBAZGVzY3JpcHRpb24gVmVyaWZ5IFRPVFBcbiAgICpcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gY29kZSBtYXRjaGVzIHRoZSBjdXJyZW50IFRPVFAgY29kZSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogRXJyb3JzIHdpdGggNDAzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG5vdCBzZXQgdXAgVE9UUCBvciB0aGUgY29kZSBmYWlscyB2ZXJpZmljYXRpb24uXG4gICAqL1xuICB1c2VyVmVyaWZ5VG90cDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogTGlzdCB1c2VycyBpbiBvcmdhbml6YXRpb25cbiAgICogQGRlc2NyaXB0aW9uIExpc3QgdXNlcnMgaW4gb3JnYW5pemF0aW9uXG4gICAqL1xuICBsaXN0VXNlcnNJbk9yZzoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBOYW1lIG9yIElEIG9mIHRoZSBkZXNpcmVkIE9yZ1xuICAgICAgICAgKiBAZXhhbXBsZSBPcmcjMTI0ZGZlM2UtM2JiZC00ODdkLTgwYzAtNTNjNTVlOGFiODdhXG4gICAgICAgICAqL1xuICAgICAgICBvcmdfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkdldFVzZXJzSW5PcmdSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBBZGQgYSB0aGlyZC1wYXJ0eSB1c2VyIHRvIHRoZSBvcmdcbiAgICogQGRlc2NyaXB0aW9uIEFkZCBhIHRoaXJkLXBhcnR5IHVzZXIgdG8gdGhlIG9yZ1xuICAgKi9cbiAgY3JlYXRlT2lkY1VzZXI6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiQWRkVGhpcmRQYXJ0eVVzZXJSZXNwb25zZVwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0aGlyZC1wYXJ0eSB1c2VyIGZyb20gdGhlIG9yZ1xuICAgKiBAZGVzY3JpcHRpb24gUmVtb3ZlIGEgdGhpcmQtcGFydHkgdXNlciBmcm9tIHRoZSBvcmdcbiAgICovXG4gIGRlbGV0ZU9pZGNVc2VyOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIk9JRENJZGVudGl0eVwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBJbml0aWF0ZSByZWdpc3RyYXRpb24gb2YgYSBGSURPIGtleVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhdGUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICpcbiAgICogR2VuZXJhdGVzIGEgY2hhbGxlbmdlIHRoYXQgbXVzdCBiZSBhbnN3ZXJlZCB0byBwcm92ZSBvd25lcnNoaXAgb2YgYSBrZXlcbiAgICovXG4gIHJlZ2lzdGVyRmlkb0luaXRMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJGaWRvQ3JlYXRlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VSZXNwb25zZVwiXTtcbiAgICAgIDIwMjoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiQWNjZXB0ZWRSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogRmluYWxpemUgcmVnaXN0cmF0aW9uIG9mIGEgRklETyBrZXlcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGRlc2NyaXB0aW9uIEZpbmFsaXplIHJlZ2lzdHJhdGlvbiBvZiBhIEZJRE8ga2V5XG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIHRvIHRoaXMgZW5kcG9pbnQuXG4gICAqL1xuICByZWdpc3RlckZpZG9Db21wbGV0ZUxlZ2FjeToge1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkZpZG9DcmVhdGVDaGFsbGVuZ2VBbnN3ZXJcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogSW5pdGlhbGl6ZSBUT1RQIFJlc2V0XG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplIFRPVFAgUmVzZXRcbiAgICpcbiAgICogQ3JlYXRlcyBhIG5ldyBUT1RQIGNoYWxsZW5nZSB0aGF0IG11c3QgYmUgYW5zd2VyZWQgdG8gcHJvdmUgdGhhdCB0aGUgbmV3IFRPVFBcbiAgICogd2FzIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBpbnRvIGFuIGF1dGhlbnRpY2F0b3IgYXBwLlxuICAgKlxuICAgKiBUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIGlmIEVJVEhFUlxuICAgKiAtIHRoZSB1c2VyIGFjY291bnQgaXMgbm90IHlldCBpbml0aWFsaXplZCBhbmQgbm8gVE9UUCBpcyBhbHJlYWR5IHNldCwgT1JcbiAgICogLSB0aGUgdXNlciBoYXMgbm90IGNvbmZpZ3VyZWQgYW55IGF1dGggZmFjdG9ycztcbiAgICogb3RoZXJ3aXNlLCBNRkEgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZXNldFRvdHBJbml0TGVnYWN5OiB7XG4gICAgcmVxdWVzdEJvZHk/OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlRvdHBSZXNldFJlcXVlc3RcIl0gfCBudWxsO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVG90cEluZm9cIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEZpbmFsaXplIHJlc2V0dGluZyBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBGaW5hbGl6ZSByZXNldHRpbmcgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIHRoZSBjb3JyZWN0IFRPVFAgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZVxuICAgKiBjaGFsbGVuZ2UgZ2VuZXJhdGVkIGJ5IHRoZSBQT1NUIG1ldGhvZCBvZiB0aGlzIGVuZHBvaW50LlxuICAgKi9cbiAgcmVzZXRUb3RwQ29tcGxldGVMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQ2hhbGxlbmdlQW5zd2VyXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiRW1wdHlJbXBsXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFZlcmlmeSBUT1RQXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBWZXJpZnkgVE9UUFxuICAgKlxuICAgKiBDaGVja3MgaWYgYSBnaXZlbiBjb2RlIG1hdGNoZXMgdGhlIGN1cnJlbnQgVE9UUCBjb2RlIGZvciB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBFcnJvcnMgd2l0aCA0MDMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgbm90IHNldCB1cCBUT1RQIG9yIHRoZSBjb2RlIGZhaWxzIHZlcmlmaWNhdGlvbi5cbiAgICovXG4gIHZlcmlmeVRvdHBMZWdhY3k6IHtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJUb3RwQXBwcm92ZVJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFbXB0eUltcGxcIl07XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFcnJvclJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogU2lnbiBSYXcgQmxvYlxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBSYXcgQmxvYlxuICAgKlxuICAgKiBTaWducyBhbiBhcmJpdHJhcnkgYmxvYiB3aXRoIGEgZ2l2ZW4ga2V5LlxuICAgKiBUaGlzIGlzIGEgcHJlLXJlbGVhc2UgZmVhdHVyZS5cbiAgICpcbiAgICogLSBFQ0RTQSBzaWduYXR1cmVzIGFyZSBzZXJpYWxpemVkIGFzIGJpZy1lbmRpYW4gciBhbmQgcyBwbHVzIHJlY292ZXJ5LWlkXG4gICAqIGJ5dGUgdiwgd2hpY2ggY2FuIGluIGdlbmVyYWwgdGFrZSBhbnkgb2YgdGhlIHZhbHVlcyAwLCAxLCAyLCBvciAzLlxuICAgKlxuICAgKiAtIEVkRFNBIHNpZ25hdHVyZXMgYXJlIHNlcmlhbGl6ZWQgaW4gdGhlIHN0YW5kYXJkIGZvcm1hdC5cbiAgICpcbiAgICogLSBCTFMgc2lnbmF0dXJlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGUgYmxvYi1zaWduIGVuZHBvaW50LlxuICAgKi9cbiAgYmxvYlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSUQgb2YgdGhlIGRlc2lyZWQgS2V5XG4gICAgICAgICAqIEBleGFtcGxlIEtleSMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIGtleV9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkJsb2JTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkJsb2JTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFJlY29yZCBoZWFydGJlYXRcbiAgICogQGRlc2NyaXB0aW9uIFJlY29yZCBoZWFydGJlYXRcbiAgICpcbiAgICogVGhpcyBlbmRwb2ludCBpcyBjYWxsZWQgYnkgdGhlIGN1YmUzc2lnbmVyIHByb3h5IHRvIHJlY29yZCB2YXJpb3VzIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAgICovXG4gIGN1YmUzc2lnbmVySGVhcnRiZWF0OiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5Pzoge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJIZWFydGJlYXRSZXF1ZXN0XCJdIHwgbnVsbDtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkVtcHR5SW1wbFwiXTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIEVWTSBUcmFuc2FjdGlvblxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBFVk0gVHJhbnNhY3Rpb25cbiAgICpcbiAgICogU2lnbnMgYW4gRXRoZXJldW0gKGFuZCBvdGhlciBFVk0pIHRyYW5zYWN0aW9uIHdpdGggYSBnaXZlbiBTZWNwMjU2azEga2V5LlxuICAgKiBSZXR1cm5zIGFuIFJMUC1lbmNvZGVkIHRyYW5zYWN0aW9uIHdpdGggRUlQLTE1NSBzaWduYXR1cmUuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMVNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgZXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgc2VjcCBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHg0OTAxMWFkYkNDM2JDOWMwMzA3QkIwN0YzN0RkYTFhMWE5YzY5ZDJFXG4gICAgICAgICAqL1xuICAgICAgICBwdWJrZXk6IHN0cmluZztcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXF1ZXN0Qm9keToge1xuICAgICAgY29udGVudDoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJFdGgxU2lnblJlcXVlc3RcIl07XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IGNvbXBvbmVudHNbXCJyZXNwb25zZXNcIl1bXCJFdGgxU2lnblJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFZhbGlkYXRvciBSZXF1ZXN0XG4gICAqXG4gICAqIFNpZ25zIGFuIGV0aDIgdmFsaWRhdG9yIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIEJMUyBrZXkuXG4gICAqXG4gICAqIFRoZSBrZXkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJvbGUgYW5kIG9yZ2FuaXphdGlvbiBvbiB3aG9zZSBiZWhhbGYgdGhpcyBhY3Rpb24gaXMgY2FsbGVkLlxuICAgKi9cbiAgZXRoMlNpZ246IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgdmFsaWRhdG9yIChCTFMpIHB1YmxpYyBrZXkgd2l0aCAweCBwcmVmaXhcbiAgICAgICAgICogQGV4YW1wbGUgMHg5NzAwZmJiOGM5MDY5NDI0NDJjMmE1YjNhZDc0OThmMjdhZWRkYTI1Mzc4NmE2ZmJhYThmZWY0N2ZiN2FmMjM0ZTUwY2YyY2NlODE1YTU1MzA4Nzk5MmFlNTY1ZDQ4ZGFcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkV0aDJTaWduUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIkV0aDJTaWduUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gU3Rha2UgRGVwb3NpdFxuICAgKiBAZGVzY3JpcHRpb24gU2lnbiBTdGFrZSBEZXBvc2l0XG4gICAqXG4gICAqIFNpZ25zIGEgZGVwb3NpdCB0cmFuc2FjdGlvbiB3aXRoIGEgYHZhbGlkYXRvcl9rZXlgLiBJZiBgdmFsaWRhdG9yX2tleWAgaXMgc2V0IHRvIGEgcHJlZ2VuZXJhdGVkIGtleSwgd2UgdXNlIHRoZVxuICAgKiBwcm92aWRlZCB2YWxpZGF0b3Iga2V5LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEgbmV3IEJMUyBrZXkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgYSBwcmVnZW5lcmF0ZWQga2V5LCB0aGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2VcbiAgICogYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIHN0YWtlOiB7XG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgcGF0aDoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIE5hbWUgb3IgSUQgb2YgdGhlIGRlc2lyZWQgT3JnXG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlN0YWtlUmVxdWVzdFwiXTtcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXNwb25zZXM6IHtcbiAgICAgIDIwMDogY29tcG9uZW50c1tcInJlc3BvbnNlc1wiXVtcIlN0YWtlUmVzcG9uc2VcIl07XG4gICAgICAyMDI6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkFjY2VwdGVkUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIFNpZ24gVW5zdGFrZSBSZXF1ZXN0XG4gICAqIEBkZXNjcmlwdGlvbiBTaWduIFVuc3Rha2UgUmVxdWVzdFxuICAgKlxuICAgKiBIYW5kbGUgdW5zdGFraW5nIHJlcXVlc3QsIHByb2R1Y2luZyBhIHNpZ25lZCB2b2x1bnRhcnkgZXhpdCBtZXNzYWdlXG4gICAqIHRoYXQgY2FuIGJlIHBvc3RlZCBkaXJlY3RseSB0byB0aGUgQmVhY29uIGNoYWluLlxuICAgKlxuICAgKiBUaGUga2V5IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByb2xlIGFuZCBvcmdhbml6YXRpb24gb24gd2hvc2UgYmVoYWxmIHRoaXMgYWN0aW9uIGlzIGNhbGxlZC5cbiAgICovXG4gIHVuc3Rha2U6IHtcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBwYXRoOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gTmFtZSBvciBJRCBvZiB0aGUgZGVzaXJlZCBPcmdcbiAgICAgICAgICogQGV4YW1wbGUgT3JnIzEyNGRmZTNlLTNiYmQtNDg3ZC04MGMwLTUzYzU1ZThhYjg3YVxuICAgICAgICAgKi9cbiAgICAgICAgb3JnX2lkOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gSGV4LWVuY29kZWQgdmFsaWRhdG9yIChCTFMpIHB1YmxpYyBrZXlcbiAgICAgICAgICogQGV4YW1wbGUgMHhhOTlhNzZlZDc3OTZmN2JlMjJkNWI3ZTg1ZGVlYjdjNTY3N2U4OGU1MTFlMGIzMzc2MThmOGM0ZWI2MTM0OWI0YmYyZDE1M2Y2NDlmN2I1MzM1OWZlOGI5NGEzOGU0NGNcbiAgICAgICAgICovXG4gICAgICAgIHB1YmtleTogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIlVuc3Rha2VSZXF1ZXN0XCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiVW5zdGFrZVJlc3BvbnNlXCJdO1xuICAgICAgMjAyOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogY29tcG9uZW50c1tcInNjaGVtYXNcIl1bXCJBY2NlcHRlZFJlc3BvbnNlXCJdO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29udGVudDoge1xuICAgICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkVycm9yUmVzcG9uc2VcIl07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZyZXNoIFNpZ25lciBTZXNzaW9uXG4gICAqL1xuICBzaWduZXJTZXNzaW9uUmVmcmVzaDoge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIHBhdGg6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBJRCBvZiB0aGUgb3JnYW5pemF0aW9uIG93bmluZyB0aGUga2V5XG4gICAgICAgICAqIEBleGFtcGxlIE9yZyMxMjRkZmUzZS0zYmJkLTQ4N2QtODBjMC01M2M1NWU4YWI4N2FcbiAgICAgICAgICovXG4gICAgICAgIG9yZ19pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICBjb250ZW50OiB7XG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBjb21wb25lbnRzW1wic2NoZW1hc1wiXVtcIkF1dGhEYXRhXCJdO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiBjb21wb25lbnRzW1wicmVzcG9uc2VzXCJdW1wiTmV3U2Vzc2lvblJlc3BvbnNlXCJdO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IGNvbXBvbmVudHNbXCJzY2hlbWFzXCJdW1wiRXJyb3JSZXNwb25zZVwiXTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
|