parse-server 9.6.0-alpha.8 → 9.6.0
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/lib/AccountLockout.js +14 -42
- package/lib/Adapters/Auth/index.js +2 -2
- package/lib/Adapters/Auth/oauth2.js +2 -2
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +3 -3
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +30 -30
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +53 -16
- package/lib/Auth.js +35 -9
- package/lib/Config.js +6 -5
- package/lib/Controllers/DatabaseController.js +134 -27
- package/lib/Controllers/FilesController.js +2 -2
- package/lib/Controllers/LiveQueryController.js +2 -2
- package/lib/Controllers/ParseGraphQLController.js +3 -2
- package/lib/Controllers/SchemaController.js +3 -7
- package/lib/Controllers/UserController.js +12 -3
- package/lib/Deprecator/Deprecations.js +41 -1
- package/lib/GraphQL/ParseGraphQLServer.js +1 -12
- package/lib/GraphQL/loaders/defaultGraphQLTypes.js +6 -5
- package/lib/GraphQL/loaders/functionsMutations.js +3 -4
- package/lib/GraphQL/loaders/parseClassMutations.js +4 -5
- package/lib/GraphQL/loaders/parseClassQueries.js +3 -4
- package/lib/GraphQL/loaders/schemaMutations.js +4 -5
- package/lib/GraphQL/loaders/schemaQueries.js +2 -3
- package/lib/GraphQL/loaders/usersMutations.js +5 -5
- package/lib/GraphQL/parseGraphQLUtils.js +9 -1
- package/lib/GraphQL/transformers/query.js +2 -2
- package/lib/LiveQuery/ParseLiveQueryServer.js +192 -13
- package/lib/LiveQuery/QueryTools.js +28 -19
- package/lib/Options/Definitions.js +41 -17
- package/lib/Options/docs.js +15 -11
- package/lib/Options/index.js +1 -1
- package/lib/ParseServer.js +9 -4
- package/lib/Push/PushWorker.js +2 -4
- package/lib/Push/utils.js +3 -4
- package/lib/RestQuery.js +32 -4
- package/lib/RestWrite.js +50 -24
- package/lib/Routers/AggregateRouter.js +9 -2
- package/lib/Routers/ClassesRouter.js +6 -2
- package/lib/Routers/FilesRouter.js +4 -3
- package/lib/Routers/PagesRouter.js +44 -20
- package/lib/Routers/UsersRouter.js +64 -30
- package/lib/Security/Check.js +2 -2
- package/lib/Security/CheckGroups/CheckGroupServerConfig.js +2 -2
- package/lib/StatusHandler.js +3 -2
- package/lib/Utils.js +74 -8
- package/lib/batch.js +39 -36
- package/lib/cloud-code/Parse.Cloud.js +2 -2
- package/lib/middlewares.js +36 -11
- package/lib/triggers.js +9 -2
- package/package.json +1 -3
|
@@ -14,6 +14,7 @@ exports.serializeDateIso = exports.parseValue = exports.parseStringValue = expor
|
|
|
14
14
|
var _graphql = require("graphql");
|
|
15
15
|
var _graphqlRelay = require("graphql-relay");
|
|
16
16
|
var _GraphQLUpload = _interopRequireDefault(require("graphql-upload/GraphQLUpload.js"));
|
|
17
|
+
var _Utils = _interopRequireDefault(require("../../Utils"));
|
|
17
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
19
|
class TypeValidationError extends Error {
|
|
19
20
|
constructor(value, type) {
|
|
@@ -126,7 +127,7 @@ const parseDateIsoValue = value => {
|
|
|
126
127
|
if (!isNaN(date)) {
|
|
127
128
|
return date;
|
|
128
129
|
}
|
|
129
|
-
} else if (value
|
|
130
|
+
} else if (_Utils.default.isDate(value)) {
|
|
130
131
|
return value;
|
|
131
132
|
}
|
|
132
133
|
throw new TypeValidationError(value, 'Date');
|
|
@@ -136,7 +137,7 @@ const serializeDateIso = value => {
|
|
|
136
137
|
if (typeof value === 'string') {
|
|
137
138
|
return value;
|
|
138
139
|
}
|
|
139
|
-
if (value
|
|
140
|
+
if (_Utils.default.isDate(value)) {
|
|
140
141
|
return value.toISOString();
|
|
141
142
|
}
|
|
142
143
|
throw new TypeValidationError(value, 'Date');
|
|
@@ -152,7 +153,7 @@ const DATE = exports.DATE = new _graphql.GraphQLScalarType({
|
|
|
152
153
|
name: 'Date',
|
|
153
154
|
description: 'The Date scalar type is used in operations and types that involve dates.',
|
|
154
155
|
parseValue(value) {
|
|
155
|
-
if (typeof value === 'string' || value
|
|
156
|
+
if (typeof value === 'string' || _Utils.default.isDate(value)) {
|
|
156
157
|
return {
|
|
157
158
|
__type: 'Date',
|
|
158
159
|
iso: parseDateIsoValue(value)
|
|
@@ -166,7 +167,7 @@ const DATE = exports.DATE = new _graphql.GraphQLScalarType({
|
|
|
166
167
|
throw new TypeValidationError(value, 'Date');
|
|
167
168
|
},
|
|
168
169
|
serialize(value) {
|
|
169
|
-
if (typeof value === 'string' || value
|
|
170
|
+
if (typeof value === 'string' || _Utils.default.isDate(value)) {
|
|
170
171
|
return serializeDateIso(value);
|
|
171
172
|
} else if (typeof value === 'object' && value.__type === 'Date' && value.iso) {
|
|
172
173
|
return serializeDateIso(value.iso);
|
|
@@ -1095,4 +1096,4 @@ const load = parseGraphQLSchema => {
|
|
|
1095
1096
|
parseGraphQLSchema.addGraphQLType(SELECT_INPUT, true);
|
|
1096
1097
|
};
|
|
1097
1098
|
exports.load = load;
|
|
1098
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbCIsInJlcXVpcmUiLCJfZ3JhcGhxbFJlbGF5IiwiX0dyYXBoUUxVcGxvYWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiVHlwZVZhbGlkYXRpb25FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJ2YWx1ZSIsInR5cGUiLCJleHBvcnRzIiwicGFyc2VTdHJpbmdWYWx1ZSIsInBhcnNlSW50VmFsdWUiLCJpbnQiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJwYXJzZUZsb2F0VmFsdWUiLCJmbG9hdCIsImlzTmFOIiwicGFyc2VCb29sZWFuVmFsdWUiLCJwYXJzZVZhbHVlIiwia2luZCIsIktpbmQiLCJTVFJJTkciLCJJTlQiLCJGTE9BVCIsIkJPT0xFQU4iLCJMSVNUIiwicGFyc2VMaXN0VmFsdWVzIiwidmFsdWVzIiwiT0JKRUNUIiwicGFyc2VPYmplY3RGaWVsZHMiLCJmaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJyZWR1Y2UiLCJvYmplY3QiLCJmaWVsZCIsIm5hbWUiLCJBTlkiLCJHcmFwaFFMU2NhbGFyVHlwZSIsImRlc2NyaXB0aW9uIiwic2VyaWFsaXplIiwicGFyc2VMaXRlcmFsIiwiYXN0IiwicGFyc2VEYXRlSXNvVmFsdWUiLCJkYXRlIiwiRGF0ZSIsInNlcmlhbGl6ZURhdGVJc28iLCJ0b0lTT1N0cmluZyIsInBhcnNlRGF0ZUlzb0xpdGVyYWwiLCJEQVRFIiwiX190eXBlIiwiaXNvIiwiZmluZCIsIkJZVEVTIiwiYmFzZTY0IiwicGFyc2VGaWxlVmFsdWUiLCJ1cmwiLCJ1bmRlZmluZWQiLCJGSUxFIiwiRklMRV9JTkZPIiwiR3JhcGhRTE9iamVjdFR5cGUiLCJHcmFwaFFMTm9uTnVsbCIsIkdyYXBoUUxTdHJpbmciLCJGSUxFX0lOUFVUIiwiR3JhcGhRTElucHV0T2JqZWN0VHlwZSIsImZpbGUiLCJ1cGxvYWQiLCJHcmFwaFFMVXBsb2FkIiwiR0VPX1BPSU5UX0ZJRUxEUyIsImxhdGl0dWRlIiwiR3JhcGhRTEZsb2F0IiwibG9uZ2l0dWRlIiwiR0VPX1BPSU5UX0lOUFVUIiwiR0VPX1BPSU5UIiwiUE9MWUdPTl9JTlBVVCIsIkdyYXBoUUxMaXN0IiwiUE9MWUdPTiIsIlVTRVJfQUNMX0lOUFVUIiwidXNlcklkIiwiR3JhcGhRTElEIiwicmVhZCIsIkdyYXBoUUxCb29sZWFuIiwid3JpdGUiLCJST0xFX0FDTF9JTlBVVCIsInJvbGVOYW1lIiwiUFVCTElDX0FDTF9JTlBVVCIsIkFDTF9JTlBVVCIsInVzZXJzIiwicm9sZXMiLCJwdWJsaWMiLCJVU0VSX0FDTCIsIlJPTEVfQUNMIiwiUFVCTElDX0FDTCIsIkFDTCIsInJlc29sdmUiLCJwIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJydWxlIiwiaW5kZXhPZiIsInB1c2giLCJ0b0dsb2JhbElkIiwibGVuZ3RoIiwicmVwbGFjZSIsIk9CSkVDVF9JRCIsIkNMQVNTX05BTUVfQVRUIiwiR0xPQkFMX09SX09CSkVDVF9JRF9BVFQiLCJPQkpFQ1RfSURfQVRUIiwiQ1JFQVRFRF9BVF9BVFQiLCJVUERBVEVEX0FUX0FUVCIsIklOUFVUX0ZJRUxEUyIsIkNSRUFURV9SRVNVTFRfRklFTERTIiwib2JqZWN0SWQiLCJjcmVhdGVkQXQiLCJVUERBVEVfUkVTVUxUX0ZJRUxEUyIsInVwZGF0ZWRBdCIsIlBBUlNFX09CSkVDVF9GSUVMRFMiLCJQQVJTRV9PQkpFQ1QiLCJHcmFwaFFMSW50ZXJmYWNlVHlwZSIsIlNFU1NJT05fVE9LRU5fQVRUIiwiUkVBRF9QUkVGRVJFTkNFIiwiR3JhcGhRTEVudW1UeXBlIiwiUFJJTUFSWSIsIlBSSU1BUllfUFJFRkVSUkVEIiwiU0VDT05EQVJZIiwiU0VDT05EQVJZX1BSRUZFUlJFRCIsIk5FQVJFU1QiLCJSRUFEX1BSRUZFUkVOQ0VfQVRUIiwiSU5DTFVERV9SRUFEX1BSRUZFUkVOQ0VfQVRUIiwiU1VCUVVFUllfUkVBRF9QUkVGRVJFTkNFX0FUVCIsIlJFQURfT1BUSU9OU19JTlBVVCIsInJlYWRQcmVmZXJlbmNlIiwiaW5jbHVkZVJlYWRQcmVmZXJlbmNlIiwic3VicXVlcnlSZWFkUHJlZmVyZW5jZSIsIlJFQURfT1BUSU9OU19BVFQiLCJXSEVSRV9BVFQiLCJTS0lQX0FUVCIsIkdyYXBoUUxJbnQiLCJMSU1JVF9BVFQiLCJDT1VOVF9BVFQiLCJTRUFSQ0hfSU5QVVQiLCJ0ZXJtIiwibGFuZ3VhZ2UiLCJjYXNlU2Vuc2l0aXZlIiwiZGlhY3JpdGljU2Vuc2l0aXZlIiwiVEVYVF9JTlBVVCIsInNlYXJjaCIsIkJPWF9JTlBVVCIsImJvdHRvbUxlZnQiLCJ1cHBlclJpZ2h0IiwiV0lUSElOX0lOUFVUIiwiYm94IiwiQ0VOVEVSX1NQSEVSRV9JTlBVVCIsImNlbnRlciIsImRpc3RhbmNlIiwiR0VPX1dJVEhJTl9JTlBVVCIsInBvbHlnb24iLCJjZW50ZXJTcGhlcmUiLCJHRU9fSU5URVJTRUNUU19JTlBVVCIsInBvaW50IiwiZXF1YWxUbyIsIm5vdEVxdWFsVG8iLCJsZXNzVGhhbiIsImxlc3NUaGFuT3JFcXVhbFRvIiwiZ3JlYXRlclRoYW4iLCJncmVhdGVyVGhhbk9yRXF1YWxUbyIsImluT3AiLCJub3RJbiIsImV4aXN0cyIsIm1hdGNoZXNSZWdleCIsIm9wdGlvbnMiLCJTVUJRVUVSWV9JTlBVVCIsImNsYXNzTmFtZSIsIndoZXJlIiwiYXNzaWduIiwiU0VMRUNUX0lOUFVUIiwicXVlcnkiLCJrZXkiLCJpblF1ZXJ5S2V5Iiwibm90SW5RdWVyeUtleSIsIklEX1dIRVJFX0lOUFVUIiwiaW4iLCJTVFJJTkdfV0hFUkVfSU5QVVQiLCJ0ZXh0IiwiTlVNQkVSX1dIRVJFX0lOUFVUIiwiQk9PTEVBTl9XSEVSRV9JTlBVVCIsIkFSUkFZX1dIRVJFX0lOUFVUIiwiY29udGFpbmVkQnkiLCJjb250YWlucyIsIktFWV9WQUxVRV9JTlBVVCIsIk9CSkVDVF9XSEVSRV9JTlBVVCIsIkRBVEVfV0hFUkVfSU5QVVQiLCJCWVRFU19XSEVSRV9JTlBVVCIsIkZJTEVfV0hFUkVfSU5QVVQiLCJHRU9fUE9JTlRfV0hFUkVfSU5QVVQiLCJuZWFyU3BoZXJlIiwibWF4RGlzdGFuY2UiLCJtYXhEaXN0YW5jZUluUmFkaWFucyIsIm1heERpc3RhbmNlSW5NaWxlcyIsIm1heERpc3RhbmNlSW5LaWxvbWV0ZXJzIiwid2l0aGluIiwiZ2VvV2l0aGluIiwiUE9MWUdPTl9XSEVSRV9JTlBVVCIsImdlb0ludGVyc2VjdHMiLCJFTEVNRU5UIiwiQVJSQVlfUkVTVUxUIiwibG9hZEFycmF5UmVzdWx0IiwicGFyc2VHcmFwaFFMU2NoZW1hIiwicGFyc2VDbGFzc2VzQXJyYXkiLCJjbGFzc1R5cGVzIiwiZmlsdGVyIiwicGFyc2VDbGFzcyIsInBhcnNlQ2xhc3NUeXBlcyIsImNsYXNzR3JhcGhRTE91dHB1dFR5cGUiLCJHcmFwaFFMVW5pb25UeXBlIiwidHlwZXMiLCJyZXNvbHZlVHlwZSIsImdyYXBoUUxUeXBlcyIsImxvYWQiLCJhZGRHcmFwaFFMVHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML2xvYWRlcnMvZGVmYXVsdEdyYXBoUUxUeXBlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBLaW5kLFxuICBHcmFwaFFMTm9uTnVsbCxcbiAgR3JhcGhRTFNjYWxhclR5cGUsXG4gIEdyYXBoUUxJRCxcbiAgR3JhcGhRTFN0cmluZyxcbiAgR3JhcGhRTE9iamVjdFR5cGUsXG4gIEdyYXBoUUxJbnRlcmZhY2VUeXBlLFxuICBHcmFwaFFMRW51bVR5cGUsXG4gIEdyYXBoUUxJbnQsXG4gIEdyYXBoUUxGbG9hdCxcbiAgR3JhcGhRTExpc3QsXG4gIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUsXG4gIEdyYXBoUUxCb29sZWFuLFxuICBHcmFwaFFMVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IHRvR2xvYmFsSWQgfSBmcm9tICdncmFwaHFsLXJlbGF5JztcbmltcG9ydCBHcmFwaFFMVXBsb2FkIGZyb20gJ2dyYXBocWwtdXBsb2FkL0dyYXBoUUxVcGxvYWQuanMnO1xuXG5jbGFzcyBUeXBlVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSwgdHlwZSkge1xuICAgIHN1cGVyKGAke3ZhbHVlfSBpcyBub3QgYSB2YWxpZCAke3R5cGV9YCk7XG4gIH1cbn1cblxuY29uc3QgcGFyc2VTdHJpbmdWYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ1N0cmluZycpO1xufTtcblxuY29uc3QgcGFyc2VJbnRWYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBpbnQgPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGludCkpIHtcbiAgICAgIHJldHVybiBpbnQ7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdJbnQnKTtcbn07XG5cbmNvbnN0IHBhcnNlRmxvYXRWYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBmbG9hdCA9IE51bWJlcih2YWx1ZSk7XG4gICAgaWYgKCFpc05hTihmbG9hdCkpIHtcbiAgICAgIHJldHVybiBmbG9hdDtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ0Zsb2F0Jyk7XG59O1xuXG5jb25zdCBwYXJzZUJvb2xlYW5WYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdCb29sZWFuJyk7XG59O1xuXG5jb25zdCBwYXJzZVZhbHVlID0gdmFsdWUgPT4ge1xuICBzd2l0Y2ggKHZhbHVlLmtpbmQpIHtcbiAgICBjYXNlIEtpbmQuU1RSSU5HOlxuICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodmFsdWUudmFsdWUpO1xuXG4gICAgY2FzZSBLaW5kLklOVDpcbiAgICAgIHJldHVybiBwYXJzZUludFZhbHVlKHZhbHVlLnZhbHVlKTtcblxuICAgIGNhc2UgS2luZC5GTE9BVDpcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0VmFsdWUodmFsdWUudmFsdWUpO1xuXG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgICByZXR1cm4gcGFyc2VCb29sZWFuVmFsdWUodmFsdWUudmFsdWUpO1xuXG4gICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICByZXR1cm4gcGFyc2VMaXN0VmFsdWVzKHZhbHVlLnZhbHVlcyk7XG5cbiAgICBjYXNlIEtpbmQuT0JKRUNUOlxuICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0RmllbGRzKHZhbHVlLmZpZWxkcyk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBwYXJzZUxpc3RWYWx1ZXMgPSB2YWx1ZXMgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodmFsdWUgPT4gcGFyc2VWYWx1ZSh2YWx1ZSkpO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWVzLCAnTGlzdCcpO1xufTtcblxuY29uc3QgcGFyc2VPYmplY3RGaWVsZHMgPSBmaWVsZHMgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZHMpKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5yZWR1Y2UoXG4gICAgICAob2JqZWN0LCBmaWVsZCkgPT4gKHtcbiAgICAgICAgLi4ub2JqZWN0LFxuICAgICAgICBbZmllbGQubmFtZS52YWx1ZV06IHBhcnNlVmFsdWUoZmllbGQudmFsdWUpLFxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcihmaWVsZHMsICdPYmplY3QnKTtcbn07XG5cbmNvbnN0IEFOWSA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdBbnknLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEFueSBzY2FsYXIgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgYW5kIHR5cGVzIHRoYXQgaW52b2x2ZSBhbnkgdHlwZSBvZiB2YWx1ZS4nLFxuICBwYXJzZVZhbHVlOiB2YWx1ZSA9PiB2YWx1ZSxcbiAgc2VyaWFsaXplOiB2YWx1ZSA9PiB2YWx1ZSxcbiAgcGFyc2VMaXRlcmFsOiBhc3QgPT4gcGFyc2VWYWx1ZShhc3QpLFxufSk7XG5cbmNvbnN0IE9CSkVDVCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdPYmplY3QnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBPYmplY3Qgc2NhbGFyIHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIGFuZCB0eXBlcyB0aGF0IGludm9sdmUgb2JqZWN0cy4nLFxuICBwYXJzZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ09iamVjdCcpO1xuICB9LFxuICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnT2JqZWN0Jyk7XG4gIH0sXG4gIHBhcnNlTGl0ZXJhbChhc3QpIHtcbiAgICBpZiAoYXN0LmtpbmQgPT09IEtpbmQuT0JKRUNUKSB7XG4gICAgICByZXR1cm4gcGFyc2VPYmplY3RGaWVsZHMoYXN0LmZpZWxkcyk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IoYXN0LmtpbmQsICdPYmplY3QnKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBwYXJzZURhdGVJc29WYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgIGlmICghaXNOYU4oZGF0ZSkpIHtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ0RhdGUnKTtcbn07XG5cbmNvbnN0IHNlcmlhbGl6ZURhdGVJc28gPSB2YWx1ZSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnRGF0ZScpO1xufTtcblxuY29uc3QgcGFyc2VEYXRlSXNvTGl0ZXJhbCA9IGFzdCA9PiB7XG4gIGlmIChhc3Qua2luZCA9PT0gS2luZC5TVFJJTkcpIHtcbiAgICByZXR1cm4gcGFyc2VEYXRlSXNvVmFsdWUoYXN0LnZhbHVlKTtcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKGFzdC5raW5kLCAnRGF0ZScpO1xufTtcblxuY29uc3QgREFURSA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdEYXRlJyxcbiAgZGVzY3JpcHRpb246ICdUaGUgRGF0ZSBzY2FsYXIgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgYW5kIHR5cGVzIHRoYXQgaW52b2x2ZSBkYXRlcy4nLFxuICBwYXJzZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdEYXRlJyxcbiAgICAgICAgaXNvOiBwYXJzZURhdGVJc29WYWx1ZSh2YWx1ZSksXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5fX3R5cGUgPT09ICdEYXRlJyAmJiB2YWx1ZS5pc28pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogdmFsdWUuX190eXBlLFxuICAgICAgICBpc286IHBhcnNlRGF0ZUlzb1ZhbHVlKHZhbHVlLmlzbyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnRGF0ZScpO1xuICB9LFxuICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemVEYXRlSXNvKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuX190eXBlID09PSAnRGF0ZScgJiYgdmFsdWUuaXNvKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplRGF0ZUlzbyh2YWx1ZS5pc28pO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnRGF0ZScpO1xuICB9LFxuICBwYXJzZUxpdGVyYWwoYXN0KSB7XG4gICAgaWYgKGFzdC5raW5kID09PSBLaW5kLlNUUklORykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnRGF0ZScsXG4gICAgICAgIGlzbzogcGFyc2VEYXRlSXNvTGl0ZXJhbChhc3QpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGFzdC5raW5kID09PSBLaW5kLk9CSkVDVCkge1xuICAgICAgY29uc3QgX190eXBlID0gYXN0LmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUudmFsdWUgPT09ICdfX3R5cGUnKTtcbiAgICAgIGNvbnN0IGlzbyA9IGFzdC5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAnaXNvJyk7XG4gICAgICBpZiAoX190eXBlICYmIF9fdHlwZS52YWx1ZSAmJiBfX3R5cGUudmFsdWUudmFsdWUgPT09ICdEYXRlJyAmJiBpc28pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBfX3R5cGU6IF9fdHlwZS52YWx1ZS52YWx1ZSxcbiAgICAgICAgICBpc286IHBhcnNlRGF0ZUlzb0xpdGVyYWwoaXNvLnZhbHVlKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcihhc3Qua2luZCwgJ0RhdGUnKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBCWVRFUyA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdCeXRlcycsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgQnl0ZXMgc2NhbGFyIHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIGFuZCB0eXBlcyB0aGF0IGludm9sdmUgYmFzZSA2NCBiaW5hcnkgZGF0YS4nLFxuICBwYXJzZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ0J5dGVzJyxcbiAgICAgICAgYmFzZTY0OiB2YWx1ZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHZhbHVlLl9fdHlwZSA9PT0gJ0J5dGVzJyAmJlxuICAgICAgdHlwZW9mIHZhbHVlLmJhc2U2NCA9PT0gJ3N0cmluZydcbiAgICApIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ0J5dGVzJyk7XG4gIH0sXG4gIHNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHZhbHVlLl9fdHlwZSA9PT0gJ0J5dGVzJyAmJlxuICAgICAgdHlwZW9mIHZhbHVlLmJhc2U2NCA9PT0gJ3N0cmluZydcbiAgICApIHtcbiAgICAgIHJldHVybiB2YWx1ZS5iYXNlNjQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdCeXRlcycpO1xuICB9LFxuICBwYXJzZUxpdGVyYWwoYXN0KSB7XG4gICAgaWYgKGFzdC5raW5kID09PSBLaW5kLlNUUklORykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnQnl0ZXMnLFxuICAgICAgICBiYXNlNjQ6IGFzdC52YWx1ZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChhc3Qua2luZCA9PT0gS2luZC5PQkpFQ1QpIHtcbiAgICAgIGNvbnN0IF9fdHlwZSA9IGFzdC5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAnX190eXBlJyk7XG4gICAgICBjb25zdCBiYXNlNjQgPSBhc3QuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ2Jhc2U2NCcpO1xuICAgICAgaWYgKFxuICAgICAgICBfX3R5cGUgJiZcbiAgICAgICAgX190eXBlLnZhbHVlICYmXG4gICAgICAgIF9fdHlwZS52YWx1ZS52YWx1ZSA9PT0gJ0J5dGVzJyAmJlxuICAgICAgICBiYXNlNjQgJiZcbiAgICAgICAgYmFzZTY0LnZhbHVlICYmXG4gICAgICAgIHR5cGVvZiBiYXNlNjQudmFsdWUudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBfX3R5cGU6IF9fdHlwZS52YWx1ZS52YWx1ZSxcbiAgICAgICAgICBiYXNlNjQ6IGJhc2U2NC52YWx1ZS52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcihhc3Qua2luZCwgJ0J5dGVzJyk7XG4gIH0sXG59KTtcblxuY29uc3QgcGFyc2VGaWxlVmFsdWUgPSB2YWx1ZSA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZTogJ0ZpbGUnLFxuICAgICAgbmFtZTogdmFsdWUsXG4gICAgfTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUuX190eXBlID09PSAnRmlsZScgJiZcbiAgICB0eXBlb2YgdmFsdWUubmFtZSA9PT0gJ3N0cmluZycgJiZcbiAgICAodmFsdWUudXJsID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlLnVybCA9PT0gJ3N0cmluZycpXG4gICkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnRmlsZScpO1xufTtcblxuY29uc3QgRklMRSA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdGaWxlJyxcbiAgZGVzY3JpcHRpb246ICdUaGUgRmlsZSBzY2FsYXIgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgYW5kIHR5cGVzIHRoYXQgaW52b2x2ZSBmaWxlcy4nLFxuICBwYXJzZVZhbHVlOiBwYXJzZUZpbGVWYWx1ZSxcbiAgc2VyaWFsaXplOiB2YWx1ZSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgdmFsdWUuX190eXBlID09PSAnRmlsZScgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZS5uYW1lID09PSAnc3RyaW5nJyAmJlxuICAgICAgKHZhbHVlLnVybCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZS51cmwgPT09ICdzdHJpbmcnKVxuICAgICkge1xuICAgICAgcmV0dXJuIHZhbHVlLm5hbWU7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdGaWxlJyk7XG4gIH0sXG4gIHBhcnNlTGl0ZXJhbChhc3QpIHtcbiAgICBpZiAoYXN0LmtpbmQgPT09IEtpbmQuU1RSSU5HKSB7XG4gICAgICByZXR1cm4gcGFyc2VGaWxlVmFsdWUoYXN0LnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGFzdC5raW5kID09PSBLaW5kLk9CSkVDVCkge1xuICAgICAgY29uc3QgX190eXBlID0gYXN0LmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUudmFsdWUgPT09ICdfX3R5cGUnKTtcbiAgICAgIGNvbnN0IG5hbWUgPSBhc3QuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ25hbWUnKTtcbiAgICAgIGNvbnN0IHVybCA9IGFzdC5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAndXJsJyk7XG4gICAgICBpZiAoX190eXBlICYmIF9fdHlwZS52YWx1ZSAmJiBuYW1lICYmIG5hbWUudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmlsZVZhbHVlKHtcbiAgICAgICAgICBfX3R5cGU6IF9fdHlwZS52YWx1ZS52YWx1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lLnZhbHVlLnZhbHVlLFxuICAgICAgICAgIHVybDogdXJsICYmIHVybC52YWx1ZSA/IHVybC52YWx1ZS52YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IoYXN0LmtpbmQsICdGaWxlJyk7XG4gIH0sXG59KTtcblxuY29uc3QgRklMRV9JTkZPID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0ZpbGVJbmZvJyxcbiAgZGVzY3JpcHRpb246ICdUaGUgRmlsZUluZm8gb2JqZWN0IHR5cGUgaXMgdXNlZCB0byByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGFib3V0IGZpbGVzLicsXG4gIGZpZWxkczoge1xuICAgIG5hbWU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgZmlsZSBuYW1lLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgfSxcbiAgICB1cmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgdXJsIGluIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBGSUxFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnRmlsZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ0lmIHRoaXMgZmllbGQgaXMgc2V0IHRvIG51bGwgdGhlIGZpbGUgd2lsbCBiZSB1bmxpbmtlZCAodGhlIGZpbGUgd2lsbCBub3QgYmUgZGVsZXRlZCBvbiBjbG91ZCBzdG9yYWdlKS4nLFxuICBmaWVsZHM6IHtcbiAgICBmaWxlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0EgRmlsZSBTY2FsYXIgY2FuIGJlIGFuIHVybCBvciBhIEZpbGVJbmZvIG9iamVjdC4nLFxuICAgICAgdHlwZTogRklMRSxcbiAgICB9LFxuICAgIHVwbG9hZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdVc2UgdGhpcyBmaWVsZCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBuZXcgZmlsZS4nLFxuICAgICAgdHlwZTogR3JhcGhRTFVwbG9hZCxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IEdFT19QT0lOVF9GSUVMRFMgPSB7XG4gIGxhdGl0dWRlOiB7XG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBsYXRpdHVkZS4nLFxuICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMRmxvYXQpLFxuICB9LFxuICBsb25naXR1ZGU6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGxvbmdpdHVkZS4nLFxuICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMRmxvYXQpLFxuICB9LFxufTtcblxuY29uc3QgR0VPX1BPSU5UX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnR2VvUG9pbnRJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgR2VvUG9pbnRJbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgaW5wdXR0aW5nIGZpZWxkcyBvZiB0eXBlIGdlbyBwb2ludC4nLFxuICBmaWVsZHM6IEdFT19QT0lOVF9GSUVMRFMsXG59KTtcblxuY29uc3QgR0VPX1BPSU5UID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0dlb1BvaW50JyxcbiAgZGVzY3JpcHRpb246ICdUaGUgR2VvUG9pbnQgb2JqZWN0IHR5cGUgaXMgdXNlZCB0byByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGFib3V0IGdlbyBwb2ludCBmaWVsZHMuJyxcbiAgZmllbGRzOiBHRU9fUE9JTlRfRklFTERTLFxufSk7XG5cbmNvbnN0IFBPTFlHT05fSU5QVVQgPSBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKEdFT19QT0lOVF9JTlBVVCkpO1xuXG5jb25zdCBQT0xZR09OID0gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChHRU9fUE9JTlQpKTtcblxuY29uc3QgVVNFUl9BQ0xfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdVc2VyQUNMSW5wdXQnLFxuICBkZXNjcmlwdGlvbjogJ0FsbG93IHRvIG1hbmFnZSB1c2VycyBpbiBBQ0wuJyxcbiAgZmllbGRzOiB7XG4gICAgdXNlcklkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0lEIG9mIHRoZSB0YXJnZXR0ZWQgVXNlci4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxJRCksXG4gICAgfSxcbiAgICByZWFkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IHRoZSB1c2VyIHRvIHJlYWQgdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgIH0sXG4gICAgd3JpdGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgdGhlIHVzZXIgdG8gd3JpdGUgb24gdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgUk9MRV9BQ0xfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdSb2xlQUNMSW5wdXQnLFxuICBkZXNjcmlwdGlvbjogJ0FsbG93IHRvIG1hbmFnZSByb2xlcyBpbiBBQ0wuJyxcbiAgZmllbGRzOiB7XG4gICAgcm9sZU5hbWU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgdGFyZ2V0dGVkIFJvbGUuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICB9LFxuICAgIHJlYWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgdXNlcnMgd2hvIGFyZSBtZW1iZXJzIG9mIHRoZSByb2xlIHRvIHJlYWQgdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgIH0sXG4gICAgd3JpdGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgdXNlcnMgd2hvIGFyZSBtZW1iZXJzIG9mIHRoZSByb2xlIHRvIHdyaXRlIG9uIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IFBVQkxJQ19BQ0xfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdQdWJsaWNBQ0xJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOiAnQWxsb3cgdG8gbWFuYWdlIHB1YmxpYyByaWdodHMuJyxcbiAgZmllbGRzOiB7XG4gICAgcmVhZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyBhbnlvbmUgdG8gcmVhZCB0aGUgY3VycmVudCBvYmplY3QuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgfSxcbiAgICB3cml0ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyBhbnlvbmUgdG8gd3JpdGUgb24gdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgQUNMX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnQUNMSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnQWxsb3cgdG8gbWFuYWdlIGFjY2VzcyByaWdodHMuIElmIG5vdCBwcm92aWRlZCBvYmplY3Qgd2lsbCBiZSBwdWJsaWNseSByZWFkYWJsZSBhbmQgd3JpdGFibGUnLFxuICBmaWVsZHM6IHtcbiAgICB1c2Vyczoge1xuICAgICAgZGVzY3JpcHRpb246ICdBY2Nlc3MgY29udHJvbCBsaXN0IGZvciB1c2Vycy4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChVU0VSX0FDTF9JTlBVVCkpLFxuICAgIH0sXG4gICAgcm9sZXM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWNjZXNzIGNvbnRyb2wgbGlzdCBmb3Igcm9sZXMuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoUk9MRV9BQ0xfSU5QVVQpKSxcbiAgICB9LFxuICAgIHB1YmxpYzoge1xuICAgICAgZGVzY3JpcHRpb246ICdQdWJsaWMgYWNjZXNzIGNvbnRyb2wgbGlzdC4nLFxuICAgICAgdHlwZTogUFVCTElDX0FDTF9JTlBVVCxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IFVTRVJfQUNMID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1VzZXJBQ0wnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnQWxsb3cgdG8gbWFuYWdlIHVzZXJzIGluIEFDTC4gSWYgcmVhZCBhbmQgd3JpdGUgYXJlIG51bGwgdGhlIHVzZXJzIGhhdmUgcmVhZCBhbmQgd3JpdGUgcmlnaHRzLicsXG4gIGZpZWxkczoge1xuICAgIHVzZXJJZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdJRCBvZiB0aGUgdGFyZ2V0dGVkIFVzZXIuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMSUQpLFxuICAgIH0sXG4gICAgcmVhZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyB0aGUgdXNlciB0byByZWFkIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICAgIHdyaXRlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IHRoZSB1c2VyIHRvIHdyaXRlIG9uIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IFJPTEVfQUNMID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1JvbGVBQ0wnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnQWxsb3cgdG8gbWFuYWdlIHJvbGVzIGluIEFDTC4gSWYgcmVhZCBhbmQgd3JpdGUgYXJlIG51bGwgdGhlIHJvbGUgaGF2ZSByZWFkIGFuZCB3cml0ZSByaWdodHMuJyxcbiAgZmllbGRzOiB7XG4gICAgcm9sZU5hbWU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgdGFyZ2V0dGVkIFJvbGUuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMSUQpLFxuICAgIH0sXG4gICAgcmVhZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyB1c2VycyB3aG8gYXJlIG1lbWJlcnMgb2YgdGhlIHJvbGUgdG8gcmVhZCB0aGUgY3VycmVudCBvYmplY3QuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgfSxcbiAgICB3cml0ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyB1c2VycyB3aG8gYXJlIG1lbWJlcnMgb2YgdGhlIHJvbGUgdG8gd3JpdGUgb24gdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgUFVCTElDX0FDTCA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdQdWJsaWNBQ0wnLFxuICBkZXNjcmlwdGlvbjogJ0FsbG93IHRvIG1hbmFnZSBwdWJsaWMgcmlnaHRzLicsXG4gIGZpZWxkczoge1xuICAgIHJlYWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgYW55b25lIHRvIHJlYWQgdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICB9LFxuICAgIHdyaXRlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IGFueW9uZSB0byB3cml0ZSBvbiB0aGUgY3VycmVudCBvYmplY3QuJyxcbiAgICAgIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgQUNMID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0FDTCcsXG4gIGRlc2NyaXB0aW9uOiAnQ3VycmVudCBhY2Nlc3MgY29udHJvbCBsaXN0IG9mIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICBmaWVsZHM6IHtcbiAgICB1c2Vyczoge1xuICAgICAgZGVzY3JpcHRpb246ICdBY2Nlc3MgY29udHJvbCBsaXN0IGZvciB1c2Vycy4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChVU0VSX0FDTCkpLFxuICAgICAgcmVzb2x2ZShwKSB7XG4gICAgICAgIGNvbnN0IHVzZXJzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHApLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgICAgaWYgKHJ1bGUgIT09ICcqJyAmJiBydWxlLmluZGV4T2YoJ3JvbGU6JykgIT09IDApIHtcbiAgICAgICAgICAgIHVzZXJzLnB1c2goe1xuICAgICAgICAgICAgICB1c2VySWQ6IHRvR2xvYmFsSWQoJ19Vc2VyJywgcnVsZSksXG4gICAgICAgICAgICAgIHJlYWQ6IHBbcnVsZV0ucmVhZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgd3JpdGU6IHBbcnVsZV0ud3JpdGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdXNlcnMubGVuZ3RoID8gdXNlcnMgOiBudWxsO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHJvbGVzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FjY2VzcyBjb250cm9sIGxpc3QgZm9yIHJvbGVzLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKFJPTEVfQUNMKSksXG4gICAgICByZXNvbHZlKHApIHtcbiAgICAgICAgY29uc3Qgcm9sZXMgPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXMocCkuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgICBpZiAocnVsZS5pbmRleE9mKCdyb2xlOicpID09PSAwKSB7XG4gICAgICAgICAgICByb2xlcy5wdXNoKHtcbiAgICAgICAgICAgICAgcm9sZU5hbWU6IHJ1bGUucmVwbGFjZSgncm9sZTonLCAnJyksXG4gICAgICAgICAgICAgIHJlYWQ6IHBbcnVsZV0ucmVhZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgd3JpdGU6IHBbcnVsZV0ud3JpdGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm9sZXMubGVuZ3RoID8gcm9sZXMgOiBudWxsO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHB1YmxpYzoge1xuICAgICAgZGVzY3JpcHRpb246ICdQdWJsaWMgYWNjZXNzIGNvbnRyb2wgbGlzdC4nLFxuICAgICAgdHlwZTogUFVCTElDX0FDTCxcbiAgICAgIHJlc29sdmUocCkge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgICAgICByZXR1cm4gcFsnKiddXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHJlYWQ6IHBbJyonXS5yZWFkID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICB3cml0ZTogcFsnKiddLndyaXRlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBPQkpFQ1RfSUQgPSBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTElEKTtcblxuY29uc3QgQ0xBU1NfTkFNRV9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LicsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbn07XG5cbmNvbnN0IEdMT0JBTF9PUl9PQkpFQ1RfSURfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIG9iamVjdCBpZC4gWW91IGNhbiB1c2UgZWl0aGVyIHRoZSBnbG9iYWwgb3IgdGhlIG9iamVjdCBpZC4nLFxuICB0eXBlOiBPQkpFQ1RfSUQsXG59O1xuXG5jb25zdCBPQkpFQ1RfSURfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIG9iamVjdCBpZC4nLFxuICB0eXBlOiBPQkpFQ1RfSUQsXG59O1xuXG5jb25zdCBDUkVBVEVEX0FUX0FUVCA9IHtcbiAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBkYXRlIGluIHdoaWNoIHRoZSBvYmplY3Qgd2FzIGNyZWF0ZWQuJyxcbiAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKERBVEUpLFxufTtcblxuY29uc3QgVVBEQVRFRF9BVF9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgZGF0ZSBpbiB3aGljaCB0aGUgb2JqZWN0IHdhcyBsYXMgdXBkYXRlZC4nLFxuICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoREFURSksXG59O1xuXG5jb25zdCBJTlBVVF9GSUVMRFMgPSB7XG4gIEFDTDoge1xuICAgIHR5cGU6IEFDTCxcbiAgfSxcbn07XG5cbmNvbnN0IENSRUFURV9SRVNVTFRfRklFTERTID0ge1xuICBvYmplY3RJZDogT0JKRUNUX0lEX0FUVCxcbiAgY3JlYXRlZEF0OiBDUkVBVEVEX0FUX0FUVCxcbn07XG5cbmNvbnN0IFVQREFURV9SRVNVTFRfRklFTERTID0ge1xuICB1cGRhdGVkQXQ6IFVQREFURURfQVRfQVRULFxufTtcblxuY29uc3QgUEFSU0VfT0JKRUNUX0ZJRUxEUyA9IHtcbiAgLi4uQ1JFQVRFX1JFU1VMVF9GSUVMRFMsXG4gIC4uLlVQREFURV9SRVNVTFRfRklFTERTLFxuICAuLi5JTlBVVF9GSUVMRFMsXG4gIEFDTDoge1xuICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChBQ0wpLFxuICAgIHJlc29sdmU6ICh7IEFDTCB9KSA9PiAoQUNMID8gQUNMIDogeyAnKic6IHsgcmVhZDogdHJ1ZSwgd3JpdGU6IHRydWUgfSB9KSxcbiAgfSxcbn07XG5cbmNvbnN0IFBBUlNFX09CSkVDVCA9IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7XG4gIG5hbWU6ICdQYXJzZU9iamVjdCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgUGFyc2VPYmplY3QgaW50ZXJmYWNlIHR5cGUgaXMgdXNlZCBhcyBhIGJhc2UgdHlwZSBmb3IgdGhlIGF1dG8gZ2VuZXJhdGVkIG9iamVjdCB0eXBlcy4nLFxuICBmaWVsZHM6IFBBUlNFX09CSkVDVF9GSUVMRFMsXG59KTtcblxuY29uc3QgU0VTU0lPTl9UT0tFTl9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uIHRva2VuLicsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbn07XG5cbmNvbnN0IFJFQURfUFJFRkVSRU5DRSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICBuYW1lOiAnUmVhZFByZWZlcmVuY2UnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIFJlYWRQcmVmZXJlbmNlIGVudW0gdHlwZSBpcyB1c2VkIGluIHF1ZXJpZXMgaW4gb3JkZXIgdG8gc2VsZWN0IGluIHdoaWNoIGRhdGFiYXNlIHJlcGxpY2EgdGhlIG9wZXJhdGlvbiBtdXN0IHJ1bi4nLFxuICB2YWx1ZXM6IHtcbiAgICBQUklNQVJZOiB7IHZhbHVlOiAnUFJJTUFSWScgfSxcbiAgICBQUklNQVJZX1BSRUZFUlJFRDogeyB2YWx1ZTogJ1BSSU1BUllfUFJFRkVSUkVEJyB9LFxuICAgIFNFQ09OREFSWTogeyB2YWx1ZTogJ1NFQ09OREFSWScgfSxcbiAgICBTRUNPTkRBUllfUFJFRkVSUkVEOiB7IHZhbHVlOiAnU0VDT05EQVJZX1BSRUZFUlJFRCcgfSxcbiAgICBORUFSRVNUOiB7IHZhbHVlOiAnTkVBUkVTVCcgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBSRUFEX1BSRUZFUkVOQ0VfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoZSByZWFkIHByZWZlcmVuY2UgZm9yIHRoZSBtYWluIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLicsXG4gIHR5cGU6IFJFQURfUFJFRkVSRU5DRSxcbn07XG5cbmNvbnN0IElOQ0xVREVfUkVBRF9QUkVGRVJFTkNFX0FUVCA9IHtcbiAgZGVzY3JpcHRpb246ICdUaGUgcmVhZCBwcmVmZXJlbmNlIGZvciB0aGUgcXVlcmllcyB0byBiZSBleGVjdXRlZCB0byBpbmNsdWRlIGZpZWxkcy4nLFxuICB0eXBlOiBSRUFEX1BSRUZFUkVOQ0UsXG59O1xuXG5jb25zdCBTVUJRVUVSWV9SRUFEX1BSRUZFUkVOQ0VfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoZSByZWFkIHByZWZlcmVuY2UgZm9yIHRoZSBzdWJxdWVyaWVzIHRoYXQgbWF5IGJlIHJlcXVpcmVkLicsXG4gIHR5cGU6IFJFQURfUFJFRkVSRU5DRSxcbn07XG5cbmNvbnN0IFJFQURfT1BUSU9OU19JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1JlYWRPcHRpb25zSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIFJlYWRPcHRpb25zSW5wdXR0IHR5cGUgaXMgdXNlZCBpbiBxdWVyaWVzIGluIG9yZGVyIHRvIHNldCB0aGUgcmVhZCBwcmVmZXJlbmNlcy4nLFxuICBmaWVsZHM6IHtcbiAgICByZWFkUHJlZmVyZW5jZTogUkVBRF9QUkVGRVJFTkNFX0FUVCxcbiAgICBpbmNsdWRlUmVhZFByZWZlcmVuY2U6IElOQ0xVREVfUkVBRF9QUkVGRVJFTkNFX0FUVCxcbiAgICBzdWJxdWVyeVJlYWRQcmVmZXJlbmNlOiBTVUJRVUVSWV9SRUFEX1BSRUZFUkVOQ0VfQVRULFxuICB9LFxufSk7XG5cbmNvbnN0IFJFQURfT1BUSU9OU19BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhlIHJlYWQgb3B0aW9ucyBmb3IgdGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLicsXG4gIHR5cGU6IFJFQURfT1BUSU9OU19JTlBVVCxcbn07XG5cbmNvbnN0IFdIRVJFX0FUVCA9IHtcbiAgZGVzY3JpcHRpb246ICdUaGVzZSBhcmUgdGhlIGNvbmRpdGlvbnMgdGhhdCB0aGUgb2JqZWN0cyBuZWVkIHRvIG1hdGNoIGluIG9yZGVyIHRvIGJlIGZvdW5kJyxcbiAgdHlwZTogT0JKRUNULFxufTtcblxuY29uc3QgU0tJUF9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgbnVtYmVyIG9mIG9iamVjdHMgdGhhdCBtdXN0IGJlIHNraXBwZWQgdG8gcmV0dXJuLicsXG4gIHR5cGU6IEdyYXBoUUxJbnQsXG59O1xuXG5jb25zdCBMSU1JVF9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgbGltaXQgbnVtYmVyIG9mIG9iamVjdHMgdGhhdCBtdXN0IGJlIHJldHVybmVkLicsXG4gIHR5cGU6IEdyYXBoUUxJbnQsXG59O1xuXG5jb25zdCBDT1VOVF9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSB0b3RhbCBtYXRjaGVkIG9iamVjcyBjb3VudCB0aGF0IGlzIHJldHVybmVkIHdoZW4gdGhlIGNvdW50IGZsYWcgaXMgc2V0LicsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMSW50KSxcbn07XG5cbmNvbnN0IFNFQVJDSF9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1NlYXJjaElucHV0JyxcbiAgZGVzY3JpcHRpb246ICdUaGUgU2VhcmNoSW5wdXQgdHlwZSBpcyB1c2VkIHRvIHNwZWNpZml5IGEgc2VhcmNoIG9wZXJhdGlvbiBvbiBhIGZ1bGwgdGV4dCBzZWFyY2guJyxcbiAgZmllbGRzOiB7XG4gICAgdGVybToge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSB0ZXJtIHRvIGJlIHNlYXJjaGVkLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgfSxcbiAgICBsYW5ndWFnZToge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBsYW5ndWFnZSB0byB0ZXRlcm1pbmUgdGhlIGxpc3Qgb2Ygc3RvcCB3b3JkcyBhbmQgdGhlIHJ1bGVzIGZvciB0b2tlbml6ZXIuJyxcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgfSxcbiAgICBjYXNlU2Vuc2l0aXZlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGZsYWcgdG8gZW5hYmxlIG9yIGRpc2FibGUgY2FzZSBzZW5zaXRpdmUgc2VhcmNoLicsXG4gICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICB9LFxuICAgIGRpYWNyaXRpY1NlbnNpdGl2ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBmbGFnIHRvIGVuYWJsZSBvciBkaXNhYmxlIGRpYWNyaXRpYyBzZW5zaXRpdmUgc2VhcmNoLicsXG4gICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IFRFWFRfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdUZXh0SW5wdXQnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBUZXh0SW5wdXQgdHlwZSBpcyB1c2VkIHRvIHNwZWNpZnkgYSB0ZXh0IG9wZXJhdGlvbiBvbiBhIGNvbnN0cmFpbnQuJyxcbiAgZmllbGRzOiB7XG4gICAgc2VhcmNoOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHNlYXJjaCB0byBiZSBleGVjdXRlZC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKFNFQVJDSF9JTlBVVCksXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBCT1hfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdCb3hJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIEJveElucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZpeSBhIGJveCBvcGVyYXRpb24gb24gYSB3aXRoaW4gZ2VvIHF1ZXJ5LicsXG4gIGZpZWxkczoge1xuICAgIGJvdHRvbUxlZnQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgYm90dG9tIGxlZnQgY29vcmRpbmF0ZXMgb2YgdGhlIGJveC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdFT19QT0lOVF9JTlBVVCksXG4gICAgfSxcbiAgICB1cHBlclJpZ2h0OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHVwcGVyIHJpZ2h0IGNvb3JkaW5hdGVzIG9mIHRoZSBib3guJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHRU9fUE9JTlRfSU5QVVQpLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgV0lUSElOX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnV2l0aGluSW5wdXQnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBXaXRoaW5JbnB1dCB0eXBlIGlzIHVzZWQgdG8gc3BlY2lmeSBhIHdpdGhpbiBvcGVyYXRpb24gb24gYSBjb25zdHJhaW50LicsXG4gIGZpZWxkczoge1xuICAgIGJveDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBib3ggdG8gYmUgc3BlY2lmaWVkLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoQk9YX0lOUFVUKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IENFTlRFUl9TUEhFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdDZW50ZXJTcGhlcmVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgQ2VudGVyU3BoZXJlSW5wdXQgdHlwZSBpcyB1c2VkIHRvIHNwZWNpZml5IGEgY2VudGVyU3BoZXJlIG9wZXJhdGlvbiBvbiBhIGdlb1dpdGhpbiBxdWVyeS4nLFxuICBmaWVsZHM6IHtcbiAgICBjZW50ZXI6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgY2VudGVyIG9mIHRoZSBzcGhlcmUuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHRU9fUE9JTlRfSU5QVVQpLFxuICAgIH0sXG4gICAgZGlzdGFuY2U6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcmFkaXVzIG9mIHRoZSBzcGhlcmUuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMRmxvYXQpLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgR0VPX1dJVEhJTl9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0dlb1dpdGhpbklucHV0JyxcbiAgZGVzY3JpcHRpb246ICdUaGUgR2VvV2l0aGluSW5wdXQgdHlwZSBpcyB1c2VkIHRvIHNwZWNpZnkgYSBnZW9XaXRoaW4gb3BlcmF0aW9uIG9uIGEgY29uc3RyYWludC4nLFxuICBmaWVsZHM6IHtcbiAgICBwb2x5Z29uOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHBvbHlnb24gdG8gYmUgc3BlY2lmaWVkLicsXG4gICAgICB0eXBlOiBQT0xZR09OX0lOUFVULFxuICAgIH0sXG4gICAgY2VudGVyU3BoZXJlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHNwaGVyZSB0byBiZSBzcGVjaWZpZWQuJyxcbiAgICAgIHR5cGU6IENFTlRFUl9TUEhFUkVfSU5QVVQsXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBHRU9fSU5URVJTRUNUU19JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0dlb0ludGVyc2VjdHNJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgR2VvSW50ZXJzZWN0c0lucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZ5IGEgZ2VvSW50ZXJzZWN0cyBvcGVyYXRpb24gb24gYSBjb25zdHJhaW50LicsXG4gIGZpZWxkczoge1xuICAgIHBvaW50OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHBvaW50IHRvIGJlIHNwZWNpZmllZC4nLFxuICAgICAgdHlwZTogR0VPX1BPSU5UX0lOUFVULFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgZXF1YWxUbyA9IHR5cGUgPT4gKHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIGVxdWFsVG8gb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIGVxdWFscyB0byBhIHNwZWNpZmllZCB2YWx1ZS4nLFxuICB0eXBlLFxufSk7XG5cbmNvbnN0IG5vdEVxdWFsVG8gPSB0eXBlID0+ICh7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBub3RFcXVhbFRvIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBkbyBub3QgZXF1YWwgdG8gYSBzcGVjaWZpZWQgdmFsdWUuJyxcbiAgdHlwZSxcbn0pO1xuXG5jb25zdCBsZXNzVGhhbiA9IHR5cGUgPT4gKHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIGxlc3NUaGFuIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBpcyBsZXNzIHRoYW4gYSBzcGVjaWZpZWQgdmFsdWUuJyxcbiAgdHlwZSxcbn0pO1xuXG5jb25zdCBsZXNzVGhhbk9yRXF1YWxUbyA9IHR5cGUgPT4gKHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIGxlc3NUaGFuT3JFcXVhbFRvIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYSBzcGVjaWZpZWQgdmFsdWUuJyxcbiAgdHlwZSxcbn0pO1xuXG5jb25zdCBncmVhdGVyVGhhbiA9IHR5cGUgPT4gKHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIGdyZWF0ZXJUaGFuIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBpcyBncmVhdGVyIHRoYW4gYSBzcGVjaWZpZWQgdmFsdWUuJyxcbiAgdHlwZSxcbn0pO1xuXG5jb25zdCBncmVhdGVyVGhhbk9yRXF1YWxUbyA9IHR5cGUgPT4gKHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIGdyZWF0ZXJUaGFuT3JFcXVhbFRvIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYSBzcGVjaWZpZWQgdmFsdWUuJyxcbiAgdHlwZSxcbn0pO1xuXG5jb25zdCBpbk9wID0gdHlwZSA9PiAoe1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgaW4gb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIGVxdWFscyBhbnkgdmFsdWUgaW4gdGhlIHNwZWNpZmllZCBhcnJheS4nLFxuICB0eXBlOiBuZXcgR3JhcGhRTExpc3QodHlwZSksXG59KTtcblxuY29uc3Qgbm90SW4gPSB0eXBlID0+ICh7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBub3RJbiBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlIG9mIGEgZmllbGQgZG8gbm90IGVxdWFsIGFueSB2YWx1ZSBpbiB0aGUgc3BlY2lmaWVkIGFycmF5LicsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTGlzdCh0eXBlKSxcbn0pO1xuXG5jb25zdCBleGlzdHMgPSB7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBleGlzdHMgb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIGEgZmllbGQgZXhpc3RzIChvciBkbyBub3QgZXhpc3QpLicsXG4gIHR5cGU6IEdyYXBoUUxCb29sZWFuLFxufTtcblxuY29uc3QgbWF0Y2hlc1JlZ2V4ID0ge1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgbWF0Y2hlc1JlZ2V4IG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBtYXRjaGVzIGEgc3BlY2lmaWVkIHJlZ3VsYXIgZXhwcmVzc2lvbi4nLFxuICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxufTtcblxuY29uc3Qgb3B0aW9ucyA9IHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIG9wdGlvbnMgb3BlcmF0b3IgdG8gc3BlY2lmeSBvcHRpb25hbCBmbGFncyAoc3VjaCBhcyBcImlcIiBhbmQgXCJtXCIpIHRvIGJlIGFkZGVkIHRvIGEgbWF0Y2hlc1JlZ2V4IG9wZXJhdGlvbiBpbiB0aGUgc2FtZSBzZXQgb2YgY29uc3RyYWludHMuJyxcbiAgdHlwZTogR3JhcGhRTFN0cmluZyxcbn07XG5cbmNvbnN0IFNVQlFVRVJZX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnU3VicXVlcnlJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIFN1YnF1ZXJ5SW5wdXQgdHlwZSBpcyB1c2VkIHRvIHNwZWNpZnkgYSBzdWIgcXVlcnkgdG8gYW5vdGhlciBjbGFzcy4nLFxuICBmaWVsZHM6IHtcbiAgICBjbGFzc05hbWU6IENMQVNTX05BTUVfQVRULFxuICAgIHdoZXJlOiBPYmplY3QuYXNzaWduKHt9LCBXSEVSRV9BVFQsIHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChXSEVSRV9BVFQudHlwZSksXG4gICAgfSksXG4gIH0sXG59KTtcblxuY29uc3QgU0VMRUNUX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnU2VsZWN0SW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIFNlbGVjdElucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZ5IGFuIGluUXVlcnlLZXkgb3IgYSBub3RJblF1ZXJ5S2V5IG9wZXJhdGlvbiBvbiBhIGNvbnN0cmFpbnQuJyxcbiAgZmllbGRzOiB7XG4gICAgcXVlcnk6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgc3VicXVlcnkgdG8gYmUgZXhlY3V0ZWQuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChTVUJRVUVSWV9JTlBVVCksXG4gICAgfSxcbiAgICBrZXk6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUga2V5IGluIHRoZSByZXN1bHQgb2YgdGhlIHN1YnF1ZXJ5IHRoYXQgbXVzdCBtYXRjaCAobm90IG1hdGNoKSB0aGUgZmllbGQuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IGluUXVlcnlLZXkgPSB7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBpblF1ZXJ5S2V5IG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSBhIGZpZWxkIGVxdWFscyB0byBhIGtleSBpbiB0aGUgcmVzdWx0IG9mIGEgZGlmZmVyZW50IHF1ZXJ5LicsXG4gIHR5cGU6IFNFTEVDVF9JTlBVVCxcbn07XG5cbmNvbnN0IG5vdEluUXVlcnlLZXkgPSB7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBub3RJblF1ZXJ5S2V5IG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSBhIGZpZWxkIGRvIG5vdCBlcXVhbCB0byBhIGtleSBpbiB0aGUgcmVzdWx0IG9mIGEgZGlmZmVyZW50IHF1ZXJ5LicsXG4gIHR5cGU6IFNFTEVDVF9JTlBVVCxcbn07XG5cbmNvbnN0IElEX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnSWRXaGVyZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBJZFdoZXJlSW5wdXQgaW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGZpbHRlcmluZyBvYmplY3RzIGJ5IGFuIGlkLicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oR3JhcGhRTElEKSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEdyYXBoUUxJRCksXG4gICAgbGVzc1RoYW46IGxlc3NUaGFuKEdyYXBoUUxJRCksXG4gICAgbGVzc1RoYW5PckVxdWFsVG86IGxlc3NUaGFuT3JFcXVhbFRvKEdyYXBoUUxJRCksXG4gICAgZ3JlYXRlclRoYW46IGdyZWF0ZXJUaGFuKEdyYXBoUUxJRCksXG4gICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IGdyZWF0ZXJUaGFuT3JFcXVhbFRvKEdyYXBoUUxJRCksXG4gICAgaW46IGluT3AoR3JhcGhRTElEKSxcbiAgICBub3RJbjogbm90SW4oR3JhcGhRTElEKSxcbiAgICBleGlzdHMsXG4gICAgaW5RdWVyeUtleSxcbiAgICBub3RJblF1ZXJ5S2V5LFxuICB9LFxufSk7XG5cbmNvbnN0IFNUUklOR19XSEVSRV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1N0cmluZ1doZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIFN0cmluZ1doZXJlSW5wdXQgaW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGZpbHRlcmluZyBvYmplY3RzIGJ5IGEgZmllbGQgb2YgdHlwZSBTdHJpbmcuJyxcbiAgZmllbGRzOiB7XG4gICAgZXF1YWxUbzogZXF1YWxUbyhHcmFwaFFMU3RyaW5nKSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEdyYXBoUUxTdHJpbmcpLFxuICAgIGxlc3NUaGFuOiBsZXNzVGhhbihHcmFwaFFMU3RyaW5nKSxcbiAgICBsZXNzVGhhbk9yRXF1YWxUbzogbGVzc1RoYW5PckVxdWFsVG8oR3JhcGhRTFN0cmluZyksXG4gICAgZ3JlYXRlclRoYW46IGdyZWF0ZXJUaGFuKEdyYXBoUUxTdHJpbmcpLFxuICAgIGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiBncmVhdGVyVGhhbk9yRXF1YWxUbyhHcmFwaFFMU3RyaW5nKSxcbiAgICBpbjogaW5PcChHcmFwaFFMU3RyaW5nKSxcbiAgICBub3RJbjogbm90SW4oR3JhcGhRTFN0cmluZyksXG4gICAgZXhpc3RzLFxuICAgIG1hdGNoZXNSZWdleCxcbiAgICBvcHRpb25zLFxuICAgIHRleHQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgJHRleHQgb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGZ1bGwgdGV4dCBzZWFyY2ggY29uc3RyYWludC4nLFxuICAgICAgdHlwZTogVEVYVF9JTlBVVCxcbiAgICB9LFxuICAgIGluUXVlcnlLZXksXG4gICAgbm90SW5RdWVyeUtleSxcbiAgfSxcbn0pO1xuXG5jb25zdCBOVU1CRVJfV0hFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdOdW1iZXJXaGVyZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBOdW1iZXJXaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhIGZpZWxkIG9mIHR5cGUgTnVtYmVyLicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oR3JhcGhRTEZsb2F0KSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEdyYXBoUUxGbG9hdCksXG4gICAgbGVzc1RoYW46IGxlc3NUaGFuKEdyYXBoUUxGbG9hdCksXG4gICAgbGVzc1RoYW5PckVxdWFsVG86IGxlc3NUaGFuT3JFcXVhbFRvKEdyYXBoUUxGbG9hdCksXG4gICAgZ3JlYXRlclRoYW46IGdyZWF0ZXJUaGFuKEdyYXBoUUxGbG9hdCksXG4gICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IGdyZWF0ZXJUaGFuT3JFcXVhbFRvKEdyYXBoUUxGbG9hdCksXG4gICAgaW46IGluT3AoR3JhcGhRTEZsb2F0KSxcbiAgICBub3RJbjogbm90SW4oR3JhcGhRTEZsb2F0KSxcbiAgICBleGlzdHMsXG4gICAgaW5RdWVyeUtleSxcbiAgICBub3RJblF1ZXJ5S2V5LFxuICB9LFxufSk7XG5cbmNvbnN0IEJPT0xFQU5fV0hFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdCb29sZWFuV2hlcmVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgQm9vbGVhbldoZXJlSW5wdXQgaW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGZpbHRlcmluZyBvYmplY3RzIGJ5IGEgZmllbGQgb2YgdHlwZSBCb29sZWFuLicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oR3JhcGhRTEJvb2xlYW4pLFxuICAgIG5vdEVxdWFsVG86IG5vdEVxdWFsVG8oR3JhcGhRTEJvb2xlYW4pLFxuICAgIGV4aXN0cyxcbiAgICBpblF1ZXJ5S2V5LFxuICAgIG5vdEluUXVlcnlLZXksXG4gIH0sXG59KTtcblxuY29uc3QgQVJSQVlfV0hFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdBcnJheVdoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEFycmF5V2hlcmVJbnB1dCBpbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZmlsdGVyaW5nIG9iamVjdHMgYnkgYSBmaWVsZCBvZiB0eXBlIEFycmF5LicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oQU5ZKSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEFOWSksXG4gICAgbGVzc1RoYW46IGxlc3NUaGFuKEFOWSksXG4gICAgbGVzc1RoYW5PckVxdWFsVG86IGxlc3NUaGFuT3JFcXVhbFRvKEFOWSksXG4gICAgZ3JlYXRlclRoYW46IGdyZWF0ZXJUaGFuKEFOWSksXG4gICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IGdyZWF0ZXJUaGFuT3JFcXVhbFRvKEFOWSksXG4gICAgaW46IGluT3AoQU5ZKSxcbiAgICBub3RJbjogbm90SW4oQU5ZKSxcbiAgICBleGlzdHMsXG4gICAgY29udGFpbmVkQnk6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUgY29udGFpbmVkQnkgb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZXMgb2YgYW4gYXJyYXkgZmllbGQgaXMgY29udGFpbmVkIGJ5IGFub3RoZXIgc3BlY2lmaWVkIGFycmF5LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTExpc3QoQU5ZKSxcbiAgICB9LFxuICAgIGNvbnRhaW5zOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIGNvbnRhaW5zIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWVzIG9mIGFuIGFycmF5IGZpZWxkIGNvbnRhaW4gYWxsIGVsZW1lbnRzIG9mIGFub3RoZXIgc3BlY2lmaWVkIGFycmF5LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTExpc3QoQU5ZKSxcbiAgICB9LFxuICAgIGluUXVlcnlLZXksXG4gICAgbm90SW5RdWVyeUtleSxcbiAgfSxcbn0pO1xuXG5jb25zdCBLRVlfVkFMVUVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdLZXlWYWx1ZUlucHV0JyxcbiAgZGVzY3JpcHRpb246ICdBbiBlbnRyeSBmcm9tIGFuIG9iamVjdCwgaS5lLiwgYSBwYWlyIG9mIGtleSBhbmQgdmFsdWUuJyxcbiAgZmllbGRzOiB7XG4gICAga2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBrZXkgdXNlZCB0byByZXRyaWV2ZSB0aGUgdmFsdWUgb2YgdGhpcyBlbnRyeS4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHZhbHVlIG9mIHRoZSBlbnRyeS4gQ291bGQgYmUgYW55IHR5cGUgb2Ygc2NhbGFyIGRhdGEuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChBTlkpLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgT0JKRUNUX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnT2JqZWN0V2hlcmVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgT2JqZWN0V2hlcmVJbnB1dCBpbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZmlsdGVyaW5nIHJlc3VsdCBieSBhIGZpZWxkIG9mIHR5cGUgT2JqZWN0LicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oS0VZX1ZBTFVFX0lOUFVUKSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgaW46IGluT3AoS0VZX1ZBTFVFX0lOUFVUKSxcbiAgICBub3RJbjogbm90SW4oS0VZX1ZBTFVFX0lOUFVUKSxcbiAgICBsZXNzVGhhbjogbGVzc1RoYW4oS0VZX1ZBTFVFX0lOUFVUKSxcbiAgICBsZXNzVGhhbk9yRXF1YWxUbzogbGVzc1RoYW5PckVxdWFsVG8oS0VZX1ZBTFVFX0lOUFVUKSxcbiAgICBncmVhdGVyVGhhbjogZ3JlYXRlclRoYW4oS0VZX1ZBTFVFX0lOUFVUKSxcbiAgICBncmVhdGVyVGhhbk9yRXF1YWxUbzogZ3JlYXRlclRoYW5PckVxdWFsVG8oS0VZX1ZBTFVFX0lOUFVUKSxcbiAgICBleGlzdHMsXG4gICAgaW5RdWVyeUtleSxcbiAgICBub3RJblF1ZXJ5S2V5LFxuICB9LFxufSk7XG5cbmNvbnN0IERBVEVfV0hFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdEYXRlV2hlcmVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgRGF0ZVdoZXJlSW5wdXQgaW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGZpbHRlcmluZyBvYmplY3RzIGJ5IGEgZmllbGQgb2YgdHlwZSBEYXRlLicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oREFURSksXG4gICAgbm90RXF1YWxUbzogbm90RXF1YWxUbyhEQVRFKSxcbiAgICBsZXNzVGhhbjogbGVzc1RoYW4oREFURSksXG4gICAgbGVzc1RoYW5PckVxdWFsVG86IGxlc3NUaGFuT3JFcXVhbFRvKERBVEUpLFxuICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbihEQVRFKSxcbiAgICBncmVhdGVyVGhhbk9yRXF1YWxUbzogZ3JlYXRlclRoYW5PckVxdWFsVG8oREFURSksXG4gICAgaW46IGluT3AoREFURSksXG4gICAgbm90SW46IG5vdEluKERBVEUpLFxuICAgIGV4aXN0cyxcbiAgICBpblF1ZXJ5S2V5LFxuICAgIG5vdEluUXVlcnlLZXksXG4gIH0sXG59KTtcblxuY29uc3QgQllURVNfV0hFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdCeXRlc1doZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEJ5dGVzV2hlcmVJbnB1dCBpbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZmlsdGVyaW5nIG9iamVjdHMgYnkgYSBmaWVsZCBvZiB0eXBlIEJ5dGVzLicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oQllURVMpLFxuICAgIG5vdEVxdWFsVG86IG5vdEVxdWFsVG8oQllURVMpLFxuICAgIGxlc3NUaGFuOiBsZXNzVGhhbihCWVRFUyksXG4gICAgbGVzc1RoYW5PckVxdWFsVG86IGxlc3NUaGFuT3JFcXVhbFRvKEJZVEVTKSxcbiAgICBncmVhdGVyVGhhbjogZ3JlYXRlclRoYW4oQllURVMpLFxuICAgIGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiBncmVhdGVyVGhhbk9yRXF1YWxUbyhCWVRFUyksXG4gICAgaW46IGluT3AoQllURVMpLFxuICAgIG5vdEluOiBub3RJbihCWVRFUyksXG4gICAgZXhpc3RzLFxuICAgIGluUXVlcnlLZXksXG4gICAgbm90SW5RdWVyeUtleSxcbiAgfSxcbn0pO1xuXG5jb25zdCBGSUxFX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnRmlsZVdoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEZpbGVXaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhIGZpZWxkIG9mIHR5cGUgRmlsZS4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKEZJTEUpLFxuICAgIG5vdEVxdWFsVG86IG5vdEVxdWFsVG8oRklMRSksXG4gICAgbGVzc1RoYW46IGxlc3NUaGFuKEZJTEUpLFxuICAgIGxlc3NUaGFuT3JFcXVhbFRvOiBsZXNzVGhhbk9yRXF1YWxUbyhGSUxFKSxcbiAgICBncmVhdGVyVGhhbjogZ3JlYXRlclRoYW4oRklMRSksXG4gICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IGdyZWF0ZXJUaGFuT3JFcXVhbFRvKEZJTEUpLFxuICAgIGluOiBpbk9wKEZJTEUpLFxuICAgIG5vdEluOiBub3RJbihGSUxFKSxcbiAgICBleGlzdHMsXG4gICAgbWF0Y2hlc1JlZ2V4LFxuICAgIG9wdGlvbnMsXG4gICAgaW5RdWVyeUtleSxcbiAgICBub3RJblF1ZXJ5S2V5LFxuICB9LFxufSk7XG5cbmNvbnN0IEdFT19QT0lOVF9XSEVSRV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0dlb1BvaW50V2hlcmVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgR2VvUG9pbnRXaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhIGZpZWxkIG9mIHR5cGUgR2VvUG9pbnQuJyxcbiAgZmllbGRzOiB7XG4gICAgZXhpc3RzLFxuICAgIG5lYXJTcGhlcmU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUgbmVhclNwaGVyZSBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhIGdlbyBwb2ludCBmaWVsZCBpcyBuZWFyIHRvIGFub3RoZXIgZ2VvIHBvaW50LicsXG4gICAgICB0eXBlOiBHRU9fUE9JTlRfSU5QVVQsXG4gICAgfSxcbiAgICBtYXhEaXN0YW5jZToge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBtYXhEaXN0YW5jZSBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhIGdlbyBwb2ludCBmaWVsZCBpcyBhdCBhIG1heCBkaXN0YW5jZSAoaW4gcmFkaWFucykgZnJvbSB0aGUgZ2VvIHBvaW50IHNwZWNpZmllZCBpbiB0aGUgJG5lYXJTcGhlcmUgb3BlcmF0b3IuJyxcbiAgICAgIHR5cGU6IEdyYXBoUUxGbG9hdCxcbiAgICB9LFxuICAgIG1heERpc3RhbmNlSW5SYWRpYW5zOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIG1heERpc3RhbmNlSW5SYWRpYW5zIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWVzIG9mIGEgZ2VvIHBvaW50IGZpZWxkIGlzIGF0IGEgbWF4IGRpc3RhbmNlIChpbiByYWRpYW5zKSBmcm9tIHRoZSBnZW8gcG9pbnQgc3BlY2lmaWVkIGluIHRoZSAkbmVhclNwaGVyZSBvcGVyYXRvci4nLFxuICAgICAgdHlwZTogR3JhcGhRTEZsb2F0LFxuICAgIH0sXG4gICAgbWF4RGlzdGFuY2VJbk1pbGVzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIG1heERpc3RhbmNlSW5NaWxlcyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhIGdlbyBwb2ludCBmaWVsZCBpcyBhdCBhIG1heCBkaXN0YW5jZSAoaW4gbWlsZXMpIGZyb20gdGhlIGdlbyBwb2ludCBzcGVjaWZpZWQgaW4gdGhlICRuZWFyU3BoZXJlIG9wZXJhdG9yLicsXG4gICAgICB0eXBlOiBHcmFwaFFMRmxvYXQsXG4gICAgfSxcbiAgICBtYXhEaXN0YW5jZUluS2lsb21ldGVyczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBtYXhEaXN0YW5jZUluS2lsb21ldGVycyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhIGdlbyBwb2ludCBmaWVsZCBpcyBhdCBhIG1heCBkaXN0YW5jZSAoaW4ga2lsb21ldGVycykgZnJvbSB0aGUgZ2VvIHBvaW50IHNwZWNpZmllZCBpbiB0aGUgJG5lYXJTcGhlcmUgb3BlcmF0b3IuJyxcbiAgICAgIHR5cGU6IEdyYXBoUUxGbG9hdCxcbiAgICB9LFxuICAgIHdpdGhpbjoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSB3aXRoaW4gb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZXMgb2YgYSBnZW8gcG9pbnQgZmllbGQgaXMgd2l0aGluIGEgc3BlY2lmaWVkIGJveC4nLFxuICAgICAgdHlwZTogV0lUSElOX0lOUFVULFxuICAgIH0sXG4gICAgZ2VvV2l0aGluOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIGdlb1dpdGhpbiBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhIGdlbyBwb2ludCBmaWVsZCBpcyB3aXRoaW4gYSBzcGVjaWZpZWQgcG9seWdvbiBvciBzcGhlcmUuJyxcbiAgICAgIHR5cGU6IEdFT19XSVRISU5fSU5QVVQsXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBQT0xZR09OX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnUG9seWdvbldoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIFBvbHlnb25XaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhIGZpZWxkIG9mIHR5cGUgUG9seWdvbi4nLFxuICBmaWVsZHM6IHtcbiAgICBleGlzdHMsXG4gICAgZ2VvSW50ZXJzZWN0czoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBnZW9JbnRlcnNlY3RzIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWVzIG9mIGEgcG9seWdvbiBmaWVsZCBpbnRlcnNlY3QgYSBzcGVjaWZpZWQgcG9pbnQuJyxcbiAgICAgIHR5cGU6IEdFT19JTlRFUlNFQ1RTX0lOUFVULFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgRUxFTUVOVCA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdFbGVtZW50JyxcbiAgZGVzY3JpcHRpb246IFwiVGhlIEVsZW1lbnQgb2JqZWN0IHR5cGUgaXMgdXNlZCB0byByZXR1cm4gYXJyYXkgaXRlbXMnIHZhbHVlLlwiLFxuICBmaWVsZHM6IHtcbiAgICB2YWx1ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50IGluIHRoZSBhcnJheScsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoQU5ZKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbi8vIERlZmF1bHQgc3RhdGljIHVuaW9uIHR5cGUsIHdlIHVwZGF0ZSB0eXBlcyBhbmQgcmVzb2x2ZVR5cGUgZnVuY3Rpb24gbGF0ZXJcbmxldCBBUlJBWV9SRVNVTFQ7XG5cbmNvbnN0IGxvYWRBcnJheVJlc3VsdCA9IChwYXJzZUdyYXBoUUxTY2hlbWEsIHBhcnNlQ2xhc3Nlc0FycmF5KSA9PiB7XG4gIGNvbnN0IGNsYXNzVHlwZXMgPSBwYXJzZUNsYXNzZXNBcnJheVxuICAgIC5maWx0ZXIocGFyc2VDbGFzcyA9PlxuICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLnBhcnNlQ2xhc3NUeXBlc1twYXJzZUNsYXNzLmNsYXNzTmFtZV0uY2xhc3NHcmFwaFFMT3V0cHV0VHlwZSA/IHRydWUgOiBmYWxzZVxuICAgIClcbiAgICAubWFwKFxuICAgICAgcGFyc2VDbGFzcyA9PiBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzW3BhcnNlQ2xhc3MuY2xhc3NOYW1lXS5jbGFzc0dyYXBoUUxPdXRwdXRUeXBlXG4gICAgKTtcbiAgQVJSQVlfUkVTVUxUID0gbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICAgIG5hbWU6ICdBcnJheVJlc3VsdCcsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVXNlIElubGluZSBGcmFnbWVudCBvbiBBcnJheSB0byBnZXQgcmVzdWx0czogaHR0cHM6Ly9ncmFwaHFsLm9yZy9sZWFybi9xdWVyaWVzLyNpbmxpbmUtZnJhZ21lbnRzJyxcbiAgICB0eXBlczogKCkgPT4gW0VMRU1FTlQsIC4uLmNsYXNzVHlwZXNdLFxuICAgIHJlc29sdmVUeXBlOiB2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUuX190eXBlID09PSAnT2JqZWN0JyAmJiB2YWx1ZS5jbGFzc05hbWUgJiYgdmFsdWUub2JqZWN0SWQpIHtcbiAgICAgICAgaWYgKHBhcnNlR3JhcGhRTFNjaGVtYS5wYXJzZUNsYXNzVHlwZXNbdmFsdWUuY2xhc3NOYW1lXSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzW3ZhbHVlLmNsYXNzTmFtZV0uY2xhc3NHcmFwaFFMT3V0cHV0VHlwZS5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBFTEVNRU5ULm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBFTEVNRU5ULm5hbWU7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5ncmFwaFFMVHlwZXMucHVzaChBUlJBWV9SRVNVTFQpO1xufTtcblxuY29uc3QgbG9hZCA9IHBhcnNlR3JhcGhRTFNjaGVtYSA9PiB7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShHcmFwaFFMVXBsb2FkLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEFOWSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShPQkpFQ1QsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoREFURSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShCWVRFUywgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShGSUxFLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEZJTEVfSU5GTywgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShGSUxFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEdFT19QT0lOVF9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShHRU9fUE9JTlQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoUEFSU0VfT0JKRUNULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFJFQURfUFJFRkVSRU5DRSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShSRUFEX09QVElPTlNfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoU0VBUkNIX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFRFWFRfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoQk9YX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFdJVEhJTl9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShDRU5URVJfU1BIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEdFT19XSVRISU5fSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoR0VPX0lOVEVSU0VDVFNfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoSURfV0hFUkVfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoU1RSSU5HX1dIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKE5VTUJFUl9XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShCT09MRUFOX1dIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEFSUkFZX1dIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEtFWV9WQUxVRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShPQkpFQ1RfV0hFUkVfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoREFURV9XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShCWVRFU19XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShGSUxFX1dIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEdFT19QT0lOVF9XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShQT0xZR09OX1dIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEVMRU1FTlQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoQUNMX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFVTRVJfQUNMX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFJPTEVfQUNMX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFBVQkxJQ19BQ0xfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoQUNMLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFVTRVJfQUNMLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFJPTEVfQUNMLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFBVQkxJQ19BQ0wsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoU1VCUVVFUllfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoU0VMRUNUX0lOUFVULCB0cnVlKTtcbn07XG5cbmV4cG9ydCB7XG4gIEdyYXBoUUxVcGxvYWQsXG4gIFR5cGVWYWxpZGF0aW9uRXJyb3IsXG4gIHBhcnNlU3RyaW5nVmFsdWUsXG4gIHBhcnNlSW50VmFsdWUsXG4gIHBhcnNlRmxvYXRWYWx1ZSxcbiAgcGFyc2VCb29sZWFuVmFsdWUsXG4gIHBhcnNlVmFsdWUsXG4gIHBhcnNlTGlzdFZhbHVlcyxcbiAgcGFyc2VPYmplY3RGaWVsZHMsXG4gIEFOWSxcbiAgT0JKRUNULFxuICBwYXJzZURhdGVJc29WYWx1ZSxcbiAgc2VyaWFsaXplRGF0ZUlzbyxcbiAgREFURSxcbiAgQllURVMsXG4gIHBhcnNlRmlsZVZhbHVlLFxuICBTVUJRVUVSWV9JTlBVVCxcbiAgU0VMRUNUX0lOUFVULFxuICBGSUxFLFxuICBGSUxFX0lORk8sXG4gIEZJTEVfSU5QVVQsXG4gIEdFT19QT0lOVF9GSUVMRFMsXG4gIEdFT19QT0lOVF9JTlBVVCxcbiAgR0VPX1BPSU5ULFxuICBQT0xZR09OX0lOUFVULFxuICBQT0xZR09OLFxuICBPQkpFQ1RfSUQsXG4gIENMQVNTX05BTUVfQVRULFxuICBHTE9CQUxfT1JfT0JKRUNUX0lEX0FUVCxcbiAgT0JKRUNUX0lEX0FUVCxcbiAgVVBEQVRFRF9BVF9BVFQsXG4gIENSRUFURURfQVRfQVRULFxuICBJTlBVVF9GSUVMRFMsXG4gIENSRUFURV9SRVNVTFRfRklFTERTLFxuICBVUERBVEVfUkVTVUxUX0ZJRUxEUyxcbiAgUEFSU0VfT0JKRUNUX0ZJRUxEUyxcbiAgUEFSU0VfT0JKRUNULFxuICBTRVNTSU9OX1RPS0VOX0FUVCxcbiAgUkVBRF9QUkVGRVJFTkNFLFxuICBSRUFEX1BSRUZFUkVOQ0VfQVRULFxuICBJTkNMVURFX1JFQURfUFJFRkVSRU5DRV9BVFQsXG4gIFNVQlFVRVJZX1JFQURfUFJFRkVSRU5DRV9BVFQsXG4gIFJFQURfT1BUSU9OU19JTlBVVCxcbiAgUkVBRF9PUFRJT05TX0FUVCxcbiAgV0hFUkVfQVRULFxuICBTS0lQX0FUVCxcbiAgTElNSVRfQVRULFxuICBDT1VOVF9BVFQsXG4gIFNFQVJDSF9JTlBVVCxcbiAgVEVYVF9JTlBVVCxcbiAgQk9YX0lOUFVULFxuICBXSVRISU5fSU5QVVQsXG4gIENFTlRFUl9TUEhFUkVfSU5QVVQsXG4gIEdFT19XSVRISU5fSU5QVVQsXG4gIEdFT19JTlRFUlNFQ1RTX0lOUFVULFxuICBlcXVhbFRvLFxuICBub3RFcXVhbFRvLFxuICBsZXNzVGhhbixcbiAgbGVzc1RoYW5PckVxdWFsVG8sXG4gIGdyZWF0ZXJUaGFuLFxuICBncmVhdGVyVGhhbk9yRXF1YWxUbyxcbiAgaW5PcCxcbiAgbm90SW4sXG4gIGV4aXN0cyxcbiAgbWF0Y2hlc1JlZ2V4LFxuICBvcHRpb25zLFxuICBpblF1ZXJ5S2V5LFxuICBub3RJblF1ZXJ5S2V5LFxuICBJRF9XSEVSRV9JTlBVVCxcbiAgU1RSSU5HX1dIRVJFX0lOUFVULFxuICBOVU1CRVJfV0hFUkVfSU5QVVQsXG4gIEJPT0xFQU5fV0hFUkVfSU5QVVQsXG4gIEFSUkFZX1dIRVJFX0lOUFVULFxuICBLRVlfVkFMVUVfSU5QVVQsXG4gIE9CSkVDVF9XSEVSRV9JTlBVVCxcbiAgREFURV9XSEVSRV9JTlBVVCxcbiAgQllURVNfV0hFUkVfSU5QVVQsXG4gIEZJTEVfV0hFUkVfSU5QVVQsXG4gIEdFT19QT0lOVF9XSEVSRV9JTlBVVCxcbiAgUE9MWUdPTl9XSEVSRV9JTlBVVCxcbiAgQVJSQVlfUkVTVUxULFxuICBFTEVNRU5ULFxuICBBQ0xfSU5QVVQsXG4gIFVTRVJfQUNMX0lOUFVULFxuICBST0xFX0FDTF9JTlBVVCxcbiAgUFVCTElDX0FDTF9JTlBVVCxcbiAgQUNMLFxuICBVU0VSX0FDTCxcbiAgUk9MRV9BQ0wsXG4gIFBVQkxJQ19BQ0wsXG4gIGxvYWQsXG4gIGxvYWRBcnJheVJlc3VsdCxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFnQkEsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQTRELFNBQUFHLHVCQUFBQyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTVELE1BQU1HLG1CQUFtQixTQUFTQyxLQUFLLENBQUM7RUFDdENDLFdBQVdBLENBQUNDLEtBQUssRUFBRUMsSUFBSSxFQUFFO0lBQ3ZCLEtBQUssQ0FBQyxHQUFHRCxLQUFLLG1CQUFtQkMsSUFBSSxFQUFFLENBQUM7RUFDMUM7QUFDRjtBQUFDQyxPQUFBLENBQUFMLG1CQUFBLEdBQUFBLG1CQUFBO0FBRUQsTUFBTU0sZ0JBQWdCLEdBQUdILEtBQUssSUFBSTtFQUNoQyxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDN0IsT0FBT0EsS0FBSztFQUNkO0VBRUEsTUFBTSxJQUFJSCxtQkFBbUIsQ0FBQ0csS0FBSyxFQUFFLFFBQVEsQ0FBQztBQUNoRCxDQUFDO0FBQUNFLE9BQUEsQ0FBQUMsZ0JBQUEsR0FBQUEsZ0JBQUE7QUFFRixNQUFNQyxhQUFhLEdBQUdKLEtBQUssSUFBSTtFQUM3QixJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDN0IsTUFBTUssR0FBRyxHQUFHQyxNQUFNLENBQUNOLEtBQUssQ0FBQztJQUN6QixJQUFJTSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0YsR0FBRyxDQUFDLEVB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
|
|
1099
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbCIsInJlcXVpcmUiLCJfZ3JhcGhxbFJlbGF5IiwiX0dyYXBoUUxVcGxvYWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1V0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiVHlwZVZhbGlkYXRpb25FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJ2YWx1ZSIsInR5cGUiLCJleHBvcnRzIiwicGFyc2VTdHJpbmdWYWx1ZSIsInBhcnNlSW50VmFsdWUiLCJpbnQiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJwYXJzZUZsb2F0VmFsdWUiLCJmbG9hdCIsImlzTmFOIiwicGFyc2VCb29sZWFuVmFsdWUiLCJwYXJzZVZhbHVlIiwia2luZCIsIktpbmQiLCJTVFJJTkciLCJJTlQiLCJGTE9BVCIsIkJPT0xFQU4iLCJMSVNUIiwicGFyc2VMaXN0VmFsdWVzIiwidmFsdWVzIiwiT0JKRUNUIiwicGFyc2VPYmplY3RGaWVsZHMiLCJmaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJyZWR1Y2UiLCJvYmplY3QiLCJmaWVsZCIsIm5hbWUiLCJBTlkiLCJHcmFwaFFMU2NhbGFyVHlwZSIsImRlc2NyaXB0aW9uIiwic2VyaWFsaXplIiwicGFyc2VMaXRlcmFsIiwiYXN0IiwicGFyc2VEYXRlSXNvVmFsdWUiLCJkYXRlIiwiRGF0ZSIsIlV0aWxzIiwiaXNEYXRlIiwic2VyaWFsaXplRGF0ZUlzbyIsInRvSVNPU3RyaW5nIiwicGFyc2VEYXRlSXNvTGl0ZXJhbCIsIkRBVEUiLCJfX3R5cGUiLCJpc28iLCJmaW5kIiwiQllURVMiLCJiYXNlNjQiLCJwYXJzZUZpbGVWYWx1ZSIsInVybCIsInVuZGVmaW5lZCIsIkZJTEUiLCJGSUxFX0lORk8iLCJHcmFwaFFMT2JqZWN0VHlwZSIsIkdyYXBoUUxOb25OdWxsIiwiR3JhcGhRTFN0cmluZyIsIkZJTEVfSU5QVVQiLCJHcmFwaFFMSW5wdXRPYmplY3RUeXBlIiwiZmlsZSIsInVwbG9hZCIsIkdyYXBoUUxVcGxvYWQiLCJHRU9fUE9JTlRfRklFTERTIiwibGF0aXR1ZGUiLCJHcmFwaFFMRmxvYXQiLCJsb25naXR1ZGUiLCJHRU9fUE9JTlRfSU5QVVQiLCJHRU9fUE9JTlQiLCJQT0xZR09OX0lOUFVUIiwiR3JhcGhRTExpc3QiLCJQT0xZR09OIiwiVVNFUl9BQ0xfSU5QVVQiLCJ1c2VySWQiLCJHcmFwaFFMSUQiLCJyZWFkIiwiR3JhcGhRTEJvb2xlYW4iLCJ3cml0ZSIsIlJPTEVfQUNMX0lOUFVUIiwicm9sZU5hbWUiLCJQVUJMSUNfQUNMX0lOUFVUIiwiQUNMX0lOUFVUIiwidXNlcnMiLCJyb2xlcyIsInB1YmxpYyIsIlVTRVJfQUNMIiwiUk9MRV9BQ0wiLCJQVUJMSUNfQUNMIiwiQUNMIiwicmVzb2x2ZSIsInAiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInJ1bGUiLCJpbmRleE9mIiwicHVzaCIsInRvR2xvYmFsSWQiLCJsZW5ndGgiLCJyZXBsYWNlIiwiT0JKRUNUX0lEIiwiQ0xBU1NfTkFNRV9BVFQiLCJHTE9CQUxfT1JfT0JKRUNUX0lEX0FUVCIsIk9CSkVDVF9JRF9BVFQiLCJDUkVBVEVEX0FUX0FUVCIsIlVQREFURURfQVRfQVRUIiwiSU5QVVRfRklFTERTIiwiQ1JFQVRFX1JFU1VMVF9GSUVMRFMiLCJvYmplY3RJZCIsImNyZWF0ZWRBdCIsIlVQREFURV9SRVNVTFRfRklFTERTIiwidXBkYXRlZEF0IiwiUEFSU0VfT0JKRUNUX0ZJRUxEUyIsIlBBUlNFX09CSkVDVCIsIkdyYXBoUUxJbnRlcmZhY2VUeXBlIiwiU0VTU0lPTl9UT0tFTl9BVFQiLCJSRUFEX1BSRUZFUkVOQ0UiLCJHcmFwaFFMRW51bVR5cGUiLCJQUklNQVJZIiwiUFJJTUFSWV9QUkVGRVJSRUQiLCJTRUNPTkRBUlkiLCJTRUNPTkRBUllfUFJFRkVSUkVEIiwiTkVBUkVTVCIsIlJFQURfUFJFRkVSRU5DRV9BVFQiLCJJTkNMVURFX1JFQURfUFJFRkVSRU5DRV9BVFQiLCJTVUJRVUVSWV9SRUFEX1BSRUZFUkVOQ0VfQVRUIiwiUkVBRF9PUFRJT05TX0lOUFVUIiwicmVhZFByZWZlcmVuY2UiLCJpbmNsdWRlUmVhZFByZWZlcmVuY2UiLCJzdWJxdWVyeVJlYWRQcmVmZXJlbmNlIiwiUkVBRF9PUFRJT05TX0FUVCIsIldIRVJFX0FUVCIsIlNLSVBfQVRUIiwiR3JhcGhRTEludCIsIkxJTUlUX0FUVCIsIkNPVU5UX0FUVCIsIlNFQVJDSF9JTlBVVCIsInRlcm0iLCJsYW5ndWFnZSIsImNhc2VTZW5zaXRpdmUiLCJkaWFjcml0aWNTZW5zaXRpdmUiLCJURVhUX0lOUFVUIiwic2VhcmNoIiwiQk9YX0lOUFVUIiwiYm90dG9tTGVmdCIsInVwcGVyUmlnaHQiLCJXSVRISU5fSU5QVVQiLCJib3giLCJDRU5URVJfU1BIRVJFX0lOUFVUIiwiY2VudGVyIiwiZGlzdGFuY2UiLCJHRU9fV0lUSElOX0lOUFVUIiwicG9seWdvbiIsImNlbnRlclNwaGVyZSIsIkdFT19JTlRFUlNFQ1RTX0lOUFVUIiwicG9pbnQiLCJlcXVhbFRvIiwibm90RXF1YWxUbyIsImxlc3NUaGFuIiwibGVzc1RoYW5PckVxdWFsVG8iLCJncmVhdGVyVGhhbiIsImdyZWF0ZXJUaGFuT3JFcXVhbFRvIiwiaW5PcCIsIm5vdEluIiwiZXhpc3RzIiwibWF0Y2hlc1JlZ2V4Iiwib3B0aW9ucyIsIlNVQlFVRVJZX0lOUFVUIiwiY2xhc3NOYW1lIiwid2hlcmUiLCJhc3NpZ24iLCJTRUxFQ1RfSU5QVVQiLCJxdWVyeSIsImtleSIsImluUXVlcnlLZXkiLCJub3RJblF1ZXJ5S2V5IiwiSURfV0hFUkVfSU5QVVQiLCJpbiIsIlNUUklOR19XSEVSRV9JTlBVVCIsInRleHQiLCJOVU1CRVJfV0hFUkVfSU5QVVQiLCJCT09MRUFOX1dIRVJFX0lOUFVUIiwiQVJSQVlfV0hFUkVfSU5QVVQiLCJjb250YWluZWRCeSIsImNvbnRhaW5zIiwiS0VZX1ZBTFVFX0lOUFVUIiwiT0JKRUNUX1dIRVJFX0lOUFVUIiwiREFURV9XSEVSRV9JTlBVVCIsIkJZVEVTX1dIRVJFX0lOUFVUIiwiRklMRV9XSEVSRV9JTlBVVCIsIkdFT19QT0lOVF9XSEVSRV9JTlBVVCIsIm5lYXJTcGhlcmUiLCJtYXhEaXN0YW5jZSIsIm1heERpc3RhbmNlSW5SYWRpYW5zIiwibWF4RGlzdGFuY2VJbk1pbGVzIiwibWF4RGlzdGFuY2VJbktpbG9tZXRlcnMiLCJ3aXRoaW4iLCJnZW9XaXRoaW4iLCJQT0xZR09OX1dIRVJFX0lOUFVUIiwiZ2VvSW50ZXJzZWN0cyIsIkVMRU1FTlQiLCJBUlJBWV9SRVNVTFQiLCJsb2FkQXJyYXlSZXN1bHQiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJwYXJzZUNsYXNzZXNBcnJheSIsImNsYXNzVHlwZXMiLCJmaWx0ZXIiLCJwYXJzZUNsYXNzIiwicGFyc2VDbGFzc1R5cGVzIiwiY2xhc3NHcmFwaFFMT3V0cHV0VHlwZSIsIkdyYXBoUUxVbmlvblR5cGUiLCJ0eXBlcyIsInJlc29sdmVUeXBlIiwiZ3JhcGhRTFR5cGVzIiwibG9hZCIsImFkZEdyYXBoUUxUeXBlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dyYXBoUUwvbG9hZGVycy9kZWZhdWx0R3JhcGhRTFR5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtpbmQsXG4gIEdyYXBoUUxOb25OdWxsLFxuICBHcmFwaFFMU2NhbGFyVHlwZSxcbiAgR3JhcGhRTElELFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMT2JqZWN0VHlwZSxcbiAgR3JhcGhRTEludGVyZmFjZVR5cGUsXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTEludCxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTElucHV0T2JqZWN0VHlwZSxcbiAgR3JhcGhRTEJvb2xlYW4sXG4gIEdyYXBoUUxVbmlvblR5cGUsXG59IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgdG9HbG9iYWxJZCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuaW1wb3J0IEdyYXBoUUxVcGxvYWQgZnJvbSAnZ3JhcGhxbC11cGxvYWQvR3JhcGhRTFVwbG9hZC5qcyc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuXG5jbGFzcyBUeXBlVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSwgdHlwZSkge1xuICAgIHN1cGVyKGAke3ZhbHVlfSBpcyBub3QgYSB2YWxpZCAke3R5cGV9YCk7XG4gIH1cbn1cblxuY29uc3QgcGFyc2VTdHJpbmdWYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ1N0cmluZycpO1xufTtcblxuY29uc3QgcGFyc2VJbnRWYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBpbnQgPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGludCkpIHtcbiAgICAgIHJldHVybiBpbnQ7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdJbnQnKTtcbn07XG5cbmNvbnN0IHBhcnNlRmxvYXRWYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBmbG9hdCA9IE51bWJlcih2YWx1ZSk7XG4gICAgaWYgKCFpc05hTihmbG9hdCkpIHtcbiAgICAgIHJldHVybiBmbG9hdDtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ0Zsb2F0Jyk7XG59O1xuXG5jb25zdCBwYXJzZUJvb2xlYW5WYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdCb29sZWFuJyk7XG59O1xuXG5jb25zdCBwYXJzZVZhbHVlID0gdmFsdWUgPT4ge1xuICBzd2l0Y2ggKHZhbHVlLmtpbmQpIHtcbiAgICBjYXNlIEtpbmQuU1RSSU5HOlxuICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodmFsdWUudmFsdWUpO1xuXG4gICAgY2FzZSBLaW5kLklOVDpcbiAgICAgIHJldHVybiBwYXJzZUludFZhbHVlKHZhbHVlLnZhbHVlKTtcblxuICAgIGNhc2UgS2luZC5GTE9BVDpcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0VmFsdWUodmFsdWUudmFsdWUpO1xuXG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgICByZXR1cm4gcGFyc2VCb29sZWFuVmFsdWUodmFsdWUudmFsdWUpO1xuXG4gICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICByZXR1cm4gcGFyc2VMaXN0VmFsdWVzKHZhbHVlLnZhbHVlcyk7XG5cbiAgICBjYXNlIEtpbmQuT0JKRUNUOlxuICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0RmllbGRzKHZhbHVlLmZpZWxkcyk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBwYXJzZUxpc3RWYWx1ZXMgPSB2YWx1ZXMgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodmFsdWUgPT4gcGFyc2VWYWx1ZSh2YWx1ZSkpO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWVzLCAnTGlzdCcpO1xufTtcblxuY29uc3QgcGFyc2VPYmplY3RGaWVsZHMgPSBmaWVsZHMgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZHMpKSB7XG4gICAgcmV0dXJuIGZpZWxkcy5yZWR1Y2UoXG4gICAgICAob2JqZWN0LCBmaWVsZCkgPT4gKHtcbiAgICAgICAgLi4ub2JqZWN0LFxuICAgICAgICBbZmllbGQubmFtZS52YWx1ZV06IHBhcnNlVmFsdWUoZmllbGQudmFsdWUpLFxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcihmaWVsZHMsICdPYmplY3QnKTtcbn07XG5cbmNvbnN0IEFOWSA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdBbnknLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEFueSBzY2FsYXIgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgYW5kIHR5cGVzIHRoYXQgaW52b2x2ZSBhbnkgdHlwZSBvZiB2YWx1ZS4nLFxuICBwYXJzZVZhbHVlOiB2YWx1ZSA9PiB2YWx1ZSxcbiAgc2VyaWFsaXplOiB2YWx1ZSA9PiB2YWx1ZSxcbiAgcGFyc2VMaXRlcmFsOiBhc3QgPT4gcGFyc2VWYWx1ZShhc3QpLFxufSk7XG5cbmNvbnN0IE9CSkVDVCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdPYmplY3QnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBPYmplY3Qgc2NhbGFyIHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIGFuZCB0eXBlcyB0aGF0IGludm9sdmUgb2JqZWN0cy4nLFxuICBwYXJzZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ09iamVjdCcpO1xuICB9LFxuICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnT2JqZWN0Jyk7XG4gIH0sXG4gIHBhcnNlTGl0ZXJhbChhc3QpIHtcbiAgICBpZiAoYXN0LmtpbmQgPT09IEtpbmQuT0JKRUNUKSB7XG4gICAgICByZXR1cm4gcGFyc2VPYmplY3RGaWVsZHMoYXN0LmZpZWxkcyk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IoYXN0LmtpbmQsICdPYmplY3QnKTtcbiAgfSxcbn0pO1xuXG5jb25zdCBwYXJzZURhdGVJc29WYWx1ZSA9IHZhbHVlID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgIGlmICghaXNOYU4oZGF0ZSkpIHtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChVdGlscy5pc0RhdGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdEYXRlJyk7XG59O1xuXG5jb25zdCBzZXJpYWxpemVEYXRlSXNvID0gdmFsdWUgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoVXRpbHMuaXNEYXRlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdEYXRlJyk7XG59O1xuXG5jb25zdCBwYXJzZURhdGVJc29MaXRlcmFsID0gYXN0ID0+IHtcbiAgaWYgKGFzdC5raW5kID09PSBLaW5kLlNUUklORykge1xuICAgIHJldHVybiBwYXJzZURhdGVJc29WYWx1ZShhc3QudmFsdWUpO1xuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IoYXN0LmtpbmQsICdEYXRlJyk7XG59O1xuXG5jb25zdCBEQVRFID0gbmV3IEdyYXBoUUxTY2FsYXJUeXBlKHtcbiAgbmFtZTogJ0RhdGUnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBEYXRlIHNjYWxhciB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyBhbmQgdHlwZXMgdGhhdCBpbnZvbHZlIGRhdGVzLicsXG4gIHBhcnNlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBVdGlscy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdEYXRlJyxcbiAgICAgICAgaXNvOiBwYXJzZURhdGVJc29WYWx1ZSh2YWx1ZSksXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5fX3R5cGUgPT09ICdEYXRlJyAmJiB2YWx1ZS5pc28pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogdmFsdWUuX190eXBlLFxuICAgICAgICBpc286IHBhcnNlRGF0ZUlzb1ZhbHVlKHZhbHVlLmlzbyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnRGF0ZScpO1xuICB9LFxuICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBVdGlscy5pc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplRGF0ZUlzbyh2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLl9fdHlwZSA9PT0gJ0RhdGUnICYmIHZhbHVlLmlzbykge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZURhdGVJc28odmFsdWUuaXNvKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ0RhdGUnKTtcbiAgfSxcbiAgcGFyc2VMaXRlcmFsKGFzdCkge1xuICAgIGlmIChhc3Qua2luZCA9PT0gS2luZC5TVFJJTkcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ0RhdGUnLFxuICAgICAgICBpc286IHBhcnNlRGF0ZUlzb0xpdGVyYWwoYXN0KSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChhc3Qua2luZCA9PT0gS2luZC5PQkpFQ1QpIHtcbiAgICAgIGNvbnN0IF9fdHlwZSA9IGFzdC5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAnX190eXBlJyk7XG4gICAgICBjb25zdCBpc28gPSBhc3QuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ2lzbycpO1xuICAgICAgaWYgKF9fdHlwZSAmJiBfX3R5cGUudmFsdWUgJiYgX190eXBlLnZhbHVlLnZhbHVlID09PSAnRGF0ZScgJiYgaXNvKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgX190eXBlOiBfX3R5cGUudmFsdWUudmFsdWUsXG4gICAgICAgICAgaXNvOiBwYXJzZURhdGVJc29MaXRlcmFsKGlzby52YWx1ZSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IoYXN0LmtpbmQsICdEYXRlJyk7XG4gIH0sXG59KTtcblxuY29uc3QgQllURVMgPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICBuYW1lOiAnQnl0ZXMnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEJ5dGVzIHNjYWxhciB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyBhbmQgdHlwZXMgdGhhdCBpbnZvbHZlIGJhc2UgNjQgYmluYXJ5IGRhdGEuJyxcbiAgcGFyc2VWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdCeXRlcycsXG4gICAgICAgIGJhc2U2NDogdmFsdWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICB2YWx1ZS5fX3R5cGUgPT09ICdCeXRlcycgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZS5iYXNlNjQgPT09ICdzdHJpbmcnXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IodmFsdWUsICdCeXRlcycpO1xuICB9LFxuICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICB2YWx1ZS5fX3R5cGUgPT09ICdCeXRlcycgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZS5iYXNlNjQgPT09ICdzdHJpbmcnXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWUuYmFzZTY0O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnQnl0ZXMnKTtcbiAgfSxcbiAgcGFyc2VMaXRlcmFsKGFzdCkge1xuICAgIGlmIChhc3Qua2luZCA9PT0gS2luZC5TVFJJTkcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ0J5dGVzJyxcbiAgICAgICAgYmFzZTY0OiBhc3QudmFsdWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoYXN0LmtpbmQgPT09IEtpbmQuT0JKRUNUKSB7XG4gICAgICBjb25zdCBfX3R5cGUgPSBhc3QuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ19fdHlwZScpO1xuICAgICAgY29uc3QgYmFzZTY0ID0gYXN0LmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUudmFsdWUgPT09ICdiYXNlNjQnKTtcbiAgICAgIGlmIChcbiAgICAgICAgX190eXBlICYmXG4gICAgICAgIF9fdHlwZS52YWx1ZSAmJlxuICAgICAgICBfX3R5cGUudmFsdWUudmFsdWUgPT09ICdCeXRlcycgJiZcbiAgICAgICAgYmFzZTY0ICYmXG4gICAgICAgIGJhc2U2NC52YWx1ZSAmJlxuICAgICAgICB0eXBlb2YgYmFzZTY0LnZhbHVlLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgX190eXBlOiBfX3R5cGUudmFsdWUudmFsdWUsXG4gICAgICAgICAgYmFzZTY0OiBiYXNlNjQudmFsdWUudmFsdWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFR5cGVWYWxpZGF0aW9uRXJyb3IoYXN0LmtpbmQsICdCeXRlcycpO1xuICB9LFxufSk7XG5cbmNvbnN0IHBhcnNlRmlsZVZhbHVlID0gdmFsdWUgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGU6ICdGaWxlJyxcbiAgICAgIG5hbWU6IHZhbHVlLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlLl9fdHlwZSA9PT0gJ0ZpbGUnICYmXG4gICAgdHlwZW9mIHZhbHVlLm5hbWUgPT09ICdzdHJpbmcnICYmXG4gICAgKHZhbHVlLnVybCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB2YWx1ZS51cmwgPT09ICdzdHJpbmcnKVxuICApIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZVZhbGlkYXRpb25FcnJvcih2YWx1ZSwgJ0ZpbGUnKTtcbn07XG5cbmNvbnN0IEZJTEUgPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICBuYW1lOiAnRmlsZScsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIEZpbGUgc2NhbGFyIHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIGFuZCB0eXBlcyB0aGF0IGludm9sdmUgZmlsZXMuJyxcbiAgcGFyc2VWYWx1ZTogcGFyc2VGaWxlVmFsdWUsXG4gIHNlcmlhbGl6ZTogdmFsdWUgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHZhbHVlLl9fdHlwZSA9PT0gJ0ZpbGUnICYmXG4gICAgICB0eXBlb2YgdmFsdWUubmFtZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICh2YWx1ZS51cmwgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWUudXJsID09PSAnc3RyaW5nJylcbiAgICApIHtcbiAgICAgIHJldHVybiB2YWx1ZS5uYW1lO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKHZhbHVlLCAnRmlsZScpO1xuICB9LFxuICBwYXJzZUxpdGVyYWwoYXN0KSB7XG4gICAgaWYgKGFzdC5raW5kID09PSBLaW5kLlNUUklORykge1xuICAgICAgcmV0dXJuIHBhcnNlRmlsZVZhbHVlKGFzdC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChhc3Qua2luZCA9PT0gS2luZC5PQkpFQ1QpIHtcbiAgICAgIGNvbnN0IF9fdHlwZSA9IGFzdC5maWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAnX190eXBlJyk7XG4gICAgICBjb25zdCBuYW1lID0gYXN0LmZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUudmFsdWUgPT09ICduYW1lJyk7XG4gICAgICBjb25zdCB1cmwgPSBhc3QuZmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQubmFtZS52YWx1ZSA9PT0gJ3VybCcpO1xuICAgICAgaWYgKF9fdHlwZSAmJiBfX3R5cGUudmFsdWUgJiYgbmFtZSAmJiBuYW1lLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUZpbGVWYWx1ZSh7XG4gICAgICAgICAgX190eXBlOiBfX3R5cGUudmFsdWUudmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZS52YWx1ZS52YWx1ZSxcbiAgICAgICAgICB1cmw6IHVybCAmJiB1cmwudmFsdWUgPyB1cmwudmFsdWUudmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlVmFsaWRhdGlvbkVycm9yKGFzdC5raW5kLCAnRmlsZScpO1xuICB9LFxufSk7XG5cbmNvbnN0IEZJTEVfSU5GTyA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdGaWxlSW5mbycsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIEZpbGVJbmZvIG9iamVjdCB0eXBlIGlzIHVzZWQgdG8gcmV0dXJuIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBmaWxlcy4nLFxuICBmaWVsZHM6IHtcbiAgICBuYW1lOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGZpbGUgbmFtZS4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgIH0sXG4gICAgdXJsOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHVybCBpbiB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgRklMRV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0ZpbGVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdJZiB0aGlzIGZpZWxkIGlzIHNldCB0byBudWxsIHRoZSBmaWxlIHdpbGwgYmUgdW5saW5rZWQgKHRoZSBmaWxlIHdpbGwgbm90IGJlIGRlbGV0ZWQgb24gY2xvdWQgc3RvcmFnZSkuJyxcbiAgZmllbGRzOiB7XG4gICAgZmlsZToge1xuICAgICAgZGVzY3JpcHRpb246ICdBIEZpbGUgU2NhbGFyIGNhbiBiZSBhbiB1cmwgb3IgYSBGaWxlSW5mbyBvYmplY3QuJyxcbiAgICAgIHR5cGU6IEZJTEUsXG4gICAgfSxcbiAgICB1cGxvYWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXNlIHRoaXMgZmllbGQgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGZpbGUuJyxcbiAgICAgIHR5cGU6IEdyYXBoUUxVcGxvYWQsXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBHRU9fUE9JTlRfRklFTERTID0ge1xuICBsYXRpdHVkZToge1xuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgbGF0aXR1ZGUuJyxcbiAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEZsb2F0KSxcbiAgfSxcbiAgbG9uZ2l0dWRlOiB7XG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBsb25naXR1ZGUuJyxcbiAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEZsb2F0KSxcbiAgfSxcbn07XG5cbmNvbnN0IEdFT19QT0lOVF9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0dlb1BvaW50SW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEdlb1BvaW50SW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGlucHV0dGluZyBmaWVsZHMgb2YgdHlwZSBnZW8gcG9pbnQuJyxcbiAgZmllbGRzOiBHRU9fUE9JTlRfRklFTERTLFxufSk7XG5cbmNvbnN0IEdFT19QT0lOVCA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdHZW9Qb2ludCcsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIEdlb1BvaW50IG9iamVjdCB0eXBlIGlzIHVzZWQgdG8gcmV0dXJuIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBnZW8gcG9pbnQgZmllbGRzLicsXG4gIGZpZWxkczogR0VPX1BPSU5UX0ZJRUxEUyxcbn0pO1xuXG5jb25zdCBQT0xZR09OX0lOUFVUID0gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChHRU9fUE9JTlRfSU5QVVQpKTtcblxuY29uc3QgUE9MWUdPTiA9IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoR0VPX1BPSU5UKSk7XG5cbmNvbnN0IFVTRVJfQUNMX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnVXNlckFDTElucHV0JyxcbiAgZGVzY3JpcHRpb246ICdBbGxvdyB0byBtYW5hZ2UgdXNlcnMgaW4gQUNMLicsXG4gIGZpZWxkczoge1xuICAgIHVzZXJJZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdJRCBvZiB0aGUgdGFyZ2V0dGVkIFVzZXIuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMSUQpLFxuICAgIH0sXG4gICAgcmVhZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyB0aGUgdXNlciB0byByZWFkIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICAgIHdyaXRlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IHRoZSB1c2VyIHRvIHdyaXRlIG9uIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IFJPTEVfQUNMX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnUm9sZUFDTElucHV0JyxcbiAgZGVzY3JpcHRpb246ICdBbGxvdyB0byBtYW5hZ2Ugcm9sZXMgaW4gQUNMLicsXG4gIGZpZWxkczoge1xuICAgIHJvbGVOYW1lOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIHRhcmdldHRlZCBSb2xlLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgfSxcbiAgICByZWFkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IHVzZXJzIHdobyBhcmUgbWVtYmVycyBvZiB0aGUgcm9sZSB0byByZWFkIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICAgIHdyaXRlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IHVzZXJzIHdobyBhcmUgbWVtYmVycyBvZiB0aGUgcm9sZSB0byB3cml0ZSBvbiB0aGUgY3VycmVudCBvYmplY3QuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBQVUJMSUNfQUNMX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnUHVibGljQUNMSW5wdXQnLFxuICBkZXNjcmlwdGlvbjogJ0FsbG93IHRvIG1hbmFnZSBwdWJsaWMgcmlnaHRzLicsXG4gIGZpZWxkczoge1xuICAgIHJlYWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgYW55b25lIHRvIHJlYWQgdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgIH0sXG4gICAgd3JpdGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgYW55b25lIHRvIHdyaXRlIG9uIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IEFDTF9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0FDTElucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ0FsbG93IHRvIG1hbmFnZSBhY2Nlc3MgcmlnaHRzLiBJZiBub3QgcHJvdmlkZWQgb2JqZWN0IHdpbGwgYmUgcHVibGljbHkgcmVhZGFibGUgYW5kIHdyaXRhYmxlJyxcbiAgZmllbGRzOiB7XG4gICAgdXNlcnM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWNjZXNzIGNvbnRyb2wgbGlzdCBmb3IgdXNlcnMuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoVVNFUl9BQ0xfSU5QVVQpKSxcbiAgICB9LFxuICAgIHJvbGVzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FjY2VzcyBjb250cm9sIGxpc3QgZm9yIHJvbGVzLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKFJPTEVfQUNMX0lOUFVUKSksXG4gICAgfSxcbiAgICBwdWJsaWM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHVibGljIGFjY2VzcyBjb250cm9sIGxpc3QuJyxcbiAgICAgIHR5cGU6IFBVQkxJQ19BQ0xfSU5QVVQsXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBVU0VSX0FDTCA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdVc2VyQUNMJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ0FsbG93IHRvIG1hbmFnZSB1c2VycyBpbiBBQ0wuIElmIHJlYWQgYW5kIHdyaXRlIGFyZSBudWxsIHRoZSB1c2VycyBoYXZlIHJlYWQgYW5kIHdyaXRlIHJpZ2h0cy4nLFxuICBmaWVsZHM6IHtcbiAgICB1c2VySWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIHRhcmdldHRlZCBVc2VyLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTElEKSxcbiAgICB9LFxuICAgIHJlYWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgdGhlIHVzZXIgdG8gcmVhZCB0aGUgY3VycmVudCBvYmplY3QuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgfSxcbiAgICB3cml0ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyB0aGUgdXNlciB0byB3cml0ZSBvbiB0aGUgY3VycmVudCBvYmplY3QuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBST0xFX0FDTCA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdSb2xlQUNMJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ0FsbG93IHRvIG1hbmFnZSByb2xlcyBpbiBBQ0wuIElmIHJlYWQgYW5kIHdyaXRlIGFyZSBudWxsIHRoZSByb2xlIGhhdmUgcmVhZCBhbmQgd3JpdGUgcmlnaHRzLicsXG4gIGZpZWxkczoge1xuICAgIHJvbGVOYW1lOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIHRhcmdldHRlZCBSb2xlLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTElEKSxcbiAgICB9LFxuICAgIHJlYWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgdXNlcnMgd2hvIGFyZSBtZW1iZXJzIG9mIHRoZSByb2xlIHRvIHJlYWQgdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgIH0sXG4gICAgd3JpdGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxsb3cgdXNlcnMgd2hvIGFyZSBtZW1iZXJzIG9mIHRoZSByb2xlIHRvIHdyaXRlIG9uIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IFBVQkxJQ19BQ0wgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnUHVibGljQUNMJyxcbiAgZGVzY3JpcHRpb246ICdBbGxvdyB0byBtYW5hZ2UgcHVibGljIHJpZ2h0cy4nLFxuICBmaWVsZHM6IHtcbiAgICByZWFkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FsbG93IGFueW9uZSB0byByZWFkIHRoZSBjdXJyZW50IG9iamVjdC4nLFxuICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgfSxcbiAgICB3cml0ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdBbGxvdyBhbnlvbmUgdG8gd3JpdGUgb24gdGhlIGN1cnJlbnQgb2JqZWN0LicsXG4gICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IEFDTCA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdBQ0wnLFxuICBkZXNjcmlwdGlvbjogJ0N1cnJlbnQgYWNjZXNzIGNvbnRyb2wgbGlzdCBvZiB0aGUgY3VycmVudCBvYmplY3QuJyxcbiAgZmllbGRzOiB7XG4gICAgdXNlcnM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWNjZXNzIGNvbnRyb2wgbGlzdCBmb3IgdXNlcnMuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoVVNFUl9BQ0wpKSxcbiAgICAgIHJlc29sdmUocCkge1xuICAgICAgICBjb25zdCB1c2VycyA9IFtdO1xuICAgICAgICBPYmplY3Qua2V5cyhwKS5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICAgIGlmIChydWxlICE9PSAnKicgJiYgcnVsZS5pbmRleE9mKCdyb2xlOicpICE9PSAwKSB7XG4gICAgICAgICAgICB1c2Vycy5wdXNoKHtcbiAgICAgICAgICAgICAgdXNlcklkOiB0b0dsb2JhbElkKCdfVXNlcicsIHJ1bGUpLFxuICAgICAgICAgICAgICByZWFkOiBwW3J1bGVdLnJlYWQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgIHdyaXRlOiBwW3J1bGVdLndyaXRlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVzZXJzLmxlbmd0aCA/IHVzZXJzIDogbnVsbDtcbiAgICAgIH0sXG4gICAgfSxcbiAgICByb2xlczoge1xuICAgICAgZGVzY3JpcHRpb246ICdBY2Nlc3MgY29udHJvbCBsaXN0IGZvciByb2xlcy4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChST0xFX0FDTCkpLFxuICAgICAgcmVzb2x2ZShwKSB7XG4gICAgICAgIGNvbnN0IHJvbGVzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHApLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgICAgaWYgKHJ1bGUuaW5kZXhPZigncm9sZTonKSA9PT0gMCkge1xuICAgICAgICAgICAgcm9sZXMucHVzaCh7XG4gICAgICAgICAgICAgIHJvbGVOYW1lOiBydWxlLnJlcGxhY2UoJ3JvbGU6JywgJycpLFxuICAgICAgICAgICAgICByZWFkOiBwW3J1bGVdLnJlYWQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgIHdyaXRlOiBwW3J1bGVdLndyaXRlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvbGVzLmxlbmd0aCA/IHJvbGVzIDogbnVsbDtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwdWJsaWM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHVibGljIGFjY2VzcyBjb250cm9sIGxpc3QuJyxcbiAgICAgIHR5cGU6IFBVQkxJQ19BQ0wsXG4gICAgICByZXNvbHZlKHApIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICAgICAgcmV0dXJuIHBbJyonXVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICByZWFkOiBwWycqJ10ucmVhZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgd3JpdGU6IHBbJyonXS53cml0ZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgT0JKRUNUX0lEID0gbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxJRCk7XG5cbmNvbnN0IENMQVNTX05BTUVfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdC4nLFxuICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG59O1xuXG5jb25zdCBHTE9CQUxfT1JfT0JKRUNUX0lEX0FUVCA9IHtcbiAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBvYmplY3QgaWQuIFlvdSBjYW4gdXNlIGVpdGhlciB0aGUgZ2xvYmFsIG9yIHRoZSBvYmplY3QgaWQuJyxcbiAgdHlwZTogT0JKRUNUX0lELFxufTtcblxuY29uc3QgT0JKRUNUX0lEX0FUVCA9IHtcbiAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBvYmplY3QgaWQuJyxcbiAgdHlwZTogT0JKRUNUX0lELFxufTtcblxuY29uc3QgQ1JFQVRFRF9BVF9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgZGF0ZSBpbiB3aGljaCB0aGUgb2JqZWN0IHdhcyBjcmVhdGVkLicsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChEQVRFKSxcbn07XG5cbmNvbnN0IFVQREFURURfQVRfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGRhdGUgaW4gd2hpY2ggdGhlIG9iamVjdCB3YXMgbGFzIHVwZGF0ZWQuJyxcbiAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKERBVEUpLFxufTtcblxuY29uc3QgSU5QVVRfRklFTERTID0ge1xuICBBQ0w6IHtcbiAgICB0eXBlOiBBQ0wsXG4gIH0sXG59O1xuXG5jb25zdCBDUkVBVEVfUkVTVUxUX0ZJRUxEUyA9IHtcbiAgb2JqZWN0SWQ6IE9CSkVDVF9JRF9BVFQsXG4gIGNyZWF0ZWRBdDogQ1JFQVRFRF9BVF9BVFQsXG59O1xuXG5jb25zdCBVUERBVEVfUkVTVUxUX0ZJRUxEUyA9IHtcbiAgdXBkYXRlZEF0OiBVUERBVEVEX0FUX0FUVCxcbn07XG5cbmNvbnN0IFBBUlNFX09CSkVDVF9GSUVMRFMgPSB7XG4gIC4uLkNSRUFURV9SRVNVTFRfRklFTERTLFxuICAuLi5VUERBVEVfUkVTVUxUX0ZJRUxEUyxcbiAgLi4uSU5QVVRfRklFTERTLFxuICBBQ0w6IHtcbiAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoQUNMKSxcbiAgICByZXNvbHZlOiAoeyBBQ0wgfSkgPT4gKEFDTCA/IEFDTCA6IHsgJyonOiB7IHJlYWQ6IHRydWUsIHdyaXRlOiB0cnVlIH0gfSksXG4gIH0sXG59O1xuXG5jb25zdCBQQVJTRV9PQkpFQ1QgPSBuZXcgR3JhcGhRTEludGVyZmFjZVR5cGUoe1xuICBuYW1lOiAnUGFyc2VPYmplY3QnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIFBhcnNlT2JqZWN0IGludGVyZmFjZSB0eXBlIGlzIHVzZWQgYXMgYSBiYXNlIHR5cGUgZm9yIHRoZSBhdXRvIGdlbmVyYXRlZCBvYmplY3QgdHlwZXMuJyxcbiAgZmllbGRzOiBQQVJTRV9PQkpFQ1RfRklFTERTLFxufSk7XG5cbmNvbnN0IFNFU1NJT05fVE9LRU5fQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoZSBjdXJyZW50IHVzZXIgc2Vzc2lvbiB0b2tlbi4nLFxuICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG59O1xuXG5jb25zdCBSRUFEX1BSRUZFUkVOQ0UgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgbmFtZTogJ1JlYWRQcmVmZXJlbmNlJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBSZWFkUHJlZmVyZW5jZSBlbnVtIHR5cGUgaXMgdXNlZCBpbiBxdWVyaWVzIGluIG9yZGVyIHRvIHNlbGVjdCBpbiB3aGljaCBkYXRhYmFzZSByZXBsaWNhIHRoZSBvcGVyYXRpb24gbXVzdCBydW4uJyxcbiAgdmFsdWVzOiB7XG4gICAgUFJJTUFSWTogeyB2YWx1ZTogJ1BSSU1BUlknIH0sXG4gICAgUFJJTUFSWV9QUkVGRVJSRUQ6IHsgdmFsdWU6ICdQUklNQVJZX1BSRUZFUlJFRCcgfSxcbiAgICBTRUNPTkRBUlk6IHsgdmFsdWU6ICdTRUNPTkRBUlknIH0sXG4gICAgU0VDT05EQVJZX1BSRUZFUlJFRDogeyB2YWx1ZTogJ1NFQ09OREFSWV9QUkVGRVJSRUQnIH0sXG4gICAgTkVBUkVTVDogeyB2YWx1ZTogJ05FQVJFU1QnIH0sXG4gIH0sXG59KTtcblxuY29uc3QgUkVBRF9QUkVGRVJFTkNFX0FUVCA9IHtcbiAgZGVzY3JpcHRpb246ICdUaGUgcmVhZCBwcmVmZXJlbmNlIGZvciB0aGUgbWFpbiBxdWVyeSB0byBiZSBleGVjdXRlZC4nLFxuICB0eXBlOiBSRUFEX1BSRUZFUkVOQ0UsXG59O1xuXG5jb25zdCBJTkNMVURFX1JFQURfUFJFRkVSRU5DRV9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhlIHJlYWQgcHJlZmVyZW5jZSBmb3IgdGhlIHF1ZXJpZXMgdG8gYmUgZXhlY3V0ZWQgdG8gaW5jbHVkZSBmaWVsZHMuJyxcbiAgdHlwZTogUkVBRF9QUkVGRVJFTkNFLFxufTtcblxuY29uc3QgU1VCUVVFUllfUkVBRF9QUkVGRVJFTkNFX0FUVCA9IHtcbiAgZGVzY3JpcHRpb246ICdUaGUgcmVhZCBwcmVmZXJlbmNlIGZvciB0aGUgc3VicXVlcmllcyB0aGF0IG1heSBiZSByZXF1aXJlZC4nLFxuICB0eXBlOiBSRUFEX1BSRUZFUkVOQ0UsXG59O1xuXG5jb25zdCBSRUFEX09QVElPTlNfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdSZWFkT3B0aW9uc0lucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBSZWFkT3B0aW9uc0lucHV0dCB0eXBlIGlzIHVzZWQgaW4gcXVlcmllcyBpbiBvcmRlciB0byBzZXQgdGhlIHJlYWQgcHJlZmVyZW5jZXMuJyxcbiAgZmllbGRzOiB7XG4gICAgcmVhZFByZWZlcmVuY2U6IFJFQURfUFJFRkVSRU5DRV9BVFQsXG4gICAgaW5jbHVkZVJlYWRQcmVmZXJlbmNlOiBJTkNMVURFX1JFQURfUFJFRkVSRU5DRV9BVFQsXG4gICAgc3VicXVlcnlSZWFkUHJlZmVyZW5jZTogU1VCUVVFUllfUkVBRF9QUkVGRVJFTkNFX0FUVCxcbiAgfSxcbn0pO1xuXG5jb25zdCBSRUFEX09QVElPTlNfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoZSByZWFkIG9wdGlvbnMgZm9yIHRoZSBxdWVyeSB0byBiZSBleGVjdXRlZC4nLFxuICB0eXBlOiBSRUFEX09QVElPTlNfSU5QVVQsXG59O1xuXG5jb25zdCBXSEVSRV9BVFQgPSB7XG4gIGRlc2NyaXB0aW9uOiAnVGhlc2UgYXJlIHRoZSBjb25kaXRpb25zIHRoYXQgdGhlIG9iamVjdHMgbmVlZCB0byBtYXRjaCBpbiBvcmRlciB0byBiZSBmb3VuZCcsXG4gIHR5cGU6IE9CSkVDVCxcbn07XG5cbmNvbnN0IFNLSVBfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIG51bWJlciBvZiBvYmplY3RzIHRoYXQgbXVzdCBiZSBza2lwcGVkIHRvIHJldHVybi4nLFxuICB0eXBlOiBHcmFwaFFMSW50LFxufTtcblxuY29uc3QgTElNSVRfQVRUID0ge1xuICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGxpbWl0IG51bWJlciBvZiBvYmplY3RzIHRoYXQgbXVzdCBiZSByZXR1cm5lZC4nLFxuICB0eXBlOiBHcmFwaFFMSW50LFxufTtcblxuY29uc3QgQ09VTlRfQVRUID0ge1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgdG90YWwgbWF0Y2hlZCBvYmplY3MgY291bnQgdGhhdCBpcyByZXR1cm5lZCB3aGVuIHRoZSBjb3VudCBmbGFnIGlzIHNldC4nLFxuICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEludCksXG59O1xuXG5jb25zdCBTRUFSQ0hfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdTZWFyY2hJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIFNlYXJjaElucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZpeSBhIHNlYXJjaCBvcGVyYXRpb24gb24gYSBmdWxsIHRleHQgc2VhcmNoLicsXG4gIGZpZWxkczoge1xuICAgIHRlcm06IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgdGVybSB0byBiZSBzZWFyY2hlZC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgIH0sXG4gICAgbGFuZ3VhZ2U6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUgbGFuZ3VhZ2UgdG8gdGV0ZXJtaW5lIHRoZSBsaXN0IG9mIHN0b3Agd29yZHMgYW5kIHRoZSBydWxlcyBmb3IgdG9rZW5pemVyLicsXG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgIH0sXG4gICAgY2FzZVNlbnNpdGl2ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBmbGFnIHRvIGVuYWJsZSBvciBkaXNhYmxlIGNhc2Ugc2Vuc2l0aXZlIHNlYXJjaC4nLFxuICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgfSxcbiAgICBkaWFjcml0aWNTZW5zaXRpdmU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgZmxhZyB0byBlbmFibGUgb3IgZGlzYWJsZSBkaWFjcml0aWMgc2Vuc2l0aXZlIHNlYXJjaC4nLFxuICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBURVhUX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnVGV4dElucHV0JyxcbiAgZGVzY3JpcHRpb246ICdUaGUgVGV4dElucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZ5IGEgdGV4dCBvcGVyYXRpb24gb24gYSBjb25zdHJhaW50LicsXG4gIGZpZWxkczoge1xuICAgIHNlYXJjaDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBzZWFyY2ggdG8gYmUgZXhlY3V0ZWQuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChTRUFSQ0hfSU5QVVQpLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgQk9YX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnQm94SW5wdXQnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBCb3hJbnB1dCB0eXBlIGlzIHVzZWQgdG8gc3BlY2lmaXkgYSBib3ggb3BlcmF0aW9uIG9uIGEgd2l0aGluIGdlbyBxdWVyeS4nLFxuICBmaWVsZHM6IHtcbiAgICBib3R0b21MZWZ0OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGJvdHRvbSBsZWZ0IGNvb3JkaW5hdGVzIG9mIHRoZSBib3guJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHRU9fUE9JTlRfSU5QVVQpLFxuICAgIH0sXG4gICAgdXBwZXJSaWdodDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSB1cHBlciByaWdodCBjb29yZGluYXRlcyBvZiB0aGUgYm94LicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR0VPX1BPSU5UX0lOUFVUKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IFdJVEhJTl9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1dpdGhpbklucHV0JyxcbiAgZGVzY3JpcHRpb246ICdUaGUgV2l0aGluSW5wdXQgdHlwZSBpcyB1c2VkIHRvIHNwZWNpZnkgYSB3aXRoaW4gb3BlcmF0aW9uIG9uIGEgY29uc3RyYWludC4nLFxuICBmaWVsZHM6IHtcbiAgICBib3g6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgYm94IHRvIGJlIHNwZWNpZmllZC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEJPWF9JTlBVVCksXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBDRU5URVJfU1BIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnQ2VudGVyU3BoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIENlbnRlclNwaGVyZUlucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZpeSBhIGNlbnRlclNwaGVyZSBvcGVyYXRpb24gb24gYSBnZW9XaXRoaW4gcXVlcnkuJyxcbiAgZmllbGRzOiB7XG4gICAgY2VudGVyOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGNlbnRlciBvZiB0aGUgc3BoZXJlLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR0VPX1BPSU5UX0lOUFVUKSxcbiAgICB9LFxuICAgIGRpc3RhbmNlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHJhZGl1cyBvZiB0aGUgc3BoZXJlLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEZsb2F0KSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IEdFT19XSVRISU5fSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdHZW9XaXRoaW5JbnB1dCcsXG4gIGRlc2NyaXB0aW9uOiAnVGhlIEdlb1dpdGhpbklucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZ5IGEgZ2VvV2l0aGluIG9wZXJhdGlvbiBvbiBhIGNvbnN0cmFpbnQuJyxcbiAgZmllbGRzOiB7XG4gICAgcG9seWdvbjoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwb2x5Z29uIHRvIGJlIHNwZWNpZmllZC4nLFxuICAgICAgdHlwZTogUE9MWUdPTl9JTlBVVCxcbiAgICB9LFxuICAgIGNlbnRlclNwaGVyZToge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBzcGhlcmUgdG8gYmUgc3BlY2lmaWVkLicsXG4gICAgICB0eXBlOiBDRU5URVJfU1BIRVJFX0lOUFVULFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgR0VPX0lOVEVSU0VDVFNfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdHZW9JbnRlcnNlY3RzSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEdlb0ludGVyc2VjdHNJbnB1dCB0eXBlIGlzIHVzZWQgdG8gc3BlY2lmeSBhIGdlb0ludGVyc2VjdHMgb3BlcmF0aW9uIG9uIGEgY29uc3RyYWludC4nLFxuICBmaWVsZHM6IHtcbiAgICBwb2ludDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwb2ludCB0byBiZSBzcGVjaWZpZWQuJyxcbiAgICAgIHR5cGU6IEdFT19QT0lOVF9JTlBVVCxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IGVxdWFsVG8gPSB0eXBlID0+ICh7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBlcXVhbFRvIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBlcXVhbHMgdG8gYSBzcGVjaWZpZWQgdmFsdWUuJyxcbiAgdHlwZSxcbn0pO1xuXG5jb25zdCBub3RFcXVhbFRvID0gdHlwZSA9PiAoe1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgbm90RXF1YWxUbyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlIG9mIGEgZmllbGQgZG8gbm90IGVxdWFsIHRvIGEgc3BlY2lmaWVkIHZhbHVlLicsXG4gIHR5cGUsXG59KTtcblxuY29uc3QgbGVzc1RoYW4gPSB0eXBlID0+ICh7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBsZXNzVGhhbiBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlIG9mIGEgZmllbGQgaXMgbGVzcyB0aGFuIGEgc3BlY2lmaWVkIHZhbHVlLicsXG4gIHR5cGUsXG59KTtcblxuY29uc3QgbGVzc1RoYW5PckVxdWFsVG8gPSB0eXBlID0+ICh7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBsZXNzVGhhbk9yRXF1YWxUbyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlIG9mIGEgZmllbGQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGEgc3BlY2lmaWVkIHZhbHVlLicsXG4gIHR5cGUsXG59KTtcblxuY29uc3QgZ3JlYXRlclRoYW4gPSB0eXBlID0+ICh7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBncmVhdGVyVGhhbiBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlIG9mIGEgZmllbGQgaXMgZ3JlYXRlciB0aGFuIGEgc3BlY2lmaWVkIHZhbHVlLicsXG4gIHR5cGUsXG59KTtcblxuY29uc3QgZ3JlYXRlclRoYW5PckVxdWFsVG8gPSB0eXBlID0+ICh7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBncmVhdGVyVGhhbk9yRXF1YWxUbyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlIG9mIGEgZmllbGQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGEgc3BlY2lmaWVkIHZhbHVlLicsXG4gIHR5cGUsXG59KTtcblxuY29uc3QgaW5PcCA9IHR5cGUgPT4gKHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIGluIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWUgb2YgYSBmaWVsZCBlcXVhbHMgYW55IHZhbHVlIGluIHRoZSBzcGVjaWZpZWQgYXJyYXkuJyxcbiAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KHR5cGUpLFxufSk7XG5cbmNvbnN0IG5vdEluID0gdHlwZSA9PiAoe1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgbm90SW4gb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIGRvIG5vdCBlcXVhbCBhbnkgdmFsdWUgaW4gdGhlIHNwZWNpZmllZCBhcnJheS4nLFxuICB0eXBlOiBuZXcgR3JhcGhRTExpc3QodHlwZSksXG59KTtcblxuY29uc3QgZXhpc3RzID0ge1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgZXhpc3RzIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSBhIGZpZWxkIGV4aXN0cyAob3IgZG8gbm90IGV4aXN0KS4nLFxuICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbn07XG5cbmNvbnN0IG1hdGNoZXNSZWdleCA9IHtcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoaXMgaXMgdGhlIG1hdGNoZXNSZWdleCBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlIG9mIGEgZmllbGQgbWF0Y2hlcyBhIHNwZWNpZmllZCByZWd1bGFyIGV4cHJlc3Npb24uJyxcbiAgdHlwZTogR3JhcGhRTFN0cmluZyxcbn07XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGlzIGlzIHRoZSBvcHRpb25zIG9wZXJhdG9yIHRvIHNwZWNpZnkgb3B0aW9uYWwgZmxhZ3MgKHN1Y2ggYXMgXCJpXCIgYW5kIFwibVwiKSB0byBiZSBhZGRlZCB0byBhIG1hdGNoZXNSZWdleCBvcGVyYXRpb24gaW4gdGhlIHNhbWUgc2V0IG9mIGNvbnN0cmFpbnRzLicsXG4gIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG59O1xuXG5jb25zdCBTVUJRVUVSWV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1N1YnF1ZXJ5SW5wdXQnLFxuICBkZXNjcmlwdGlvbjogJ1RoZSBTdWJxdWVyeUlucHV0IHR5cGUgaXMgdXNlZCB0byBzcGVjaWZ5IGEgc3ViIHF1ZXJ5IHRvIGFub3RoZXIgY2xhc3MuJyxcbiAgZmllbGRzOiB7XG4gICAgY2xhc3NOYW1lOiBDTEFTU19OQU1FX0FUVCxcbiAgICB3aGVyZTogT2JqZWN0LmFzc2lnbih7fSwgV0hFUkVfQVRULCB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoV0hFUkVfQVRULnR5cGUpLFxuICAgIH0pLFxuICB9LFxufSk7XG5cbmNvbnN0IFNFTEVDVF9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1NlbGVjdElucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBTZWxlY3RJbnB1dCB0eXBlIGlzIHVzZWQgdG8gc3BlY2lmeSBhbiBpblF1ZXJ5S2V5IG9yIGEgbm90SW5RdWVyeUtleSBvcGVyYXRpb24gb24gYSBjb25zdHJhaW50LicsXG4gIGZpZWxkczoge1xuICAgIHF1ZXJ5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHN1YnF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoU1VCUVVFUllfSU5QVVQpLFxuICAgIH0sXG4gICAga2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIGtleSBpbiB0aGUgcmVzdWx0IG9mIHRoZSBzdWJxdWVyeSB0aGF0IG11c3QgbWF0Y2ggKG5vdCBtYXRjaCkgdGhlIGZpZWxkLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgfSxcbiAgfSxcbn0pO1xuXG5jb25zdCBpblF1ZXJ5S2V5ID0ge1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgaW5RdWVyeUtleSBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgYSBmaWVsZCBlcXVhbHMgdG8gYSBrZXkgaW4gdGhlIHJlc3VsdCBvZiBhIGRpZmZlcmVudCBxdWVyeS4nLFxuICB0eXBlOiBTRUxFQ1RfSU5QVVQsXG59O1xuXG5jb25zdCBub3RJblF1ZXJ5S2V5ID0ge1xuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhpcyBpcyB0aGUgbm90SW5RdWVyeUtleSBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgYSBmaWVsZCBkbyBub3QgZXF1YWwgdG8gYSBrZXkgaW4gdGhlIHJlc3VsdCBvZiBhIGRpZmZlcmVudCBxdWVyeS4nLFxuICB0eXBlOiBTRUxFQ1RfSU5QVVQsXG59O1xuXG5jb25zdCBJRF9XSEVSRV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0lkV2hlcmVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgSWRXaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhbiBpZC4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKEdyYXBoUUxJRCksXG4gICAgbm90RXF1YWxUbzogbm90RXF1YWxUbyhHcmFwaFFMSUQpLFxuICAgIGxlc3NUaGFuOiBsZXNzVGhhbihHcmFwaFFMSUQpLFxuICAgIGxlc3NUaGFuT3JFcXVhbFRvOiBsZXNzVGhhbk9yRXF1YWxUbyhHcmFwaFFMSUQpLFxuICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbihHcmFwaFFMSUQpLFxuICAgIGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiBncmVhdGVyVGhhbk9yRXF1YWxUbyhHcmFwaFFMSUQpLFxuICAgIGluOiBpbk9wKEdyYXBoUUxJRCksXG4gICAgbm90SW46IG5vdEluKEdyYXBoUUxJRCksXG4gICAgZXhpc3RzLFxuICAgIGluUXVlcnlLZXksXG4gICAgbm90SW5RdWVyeUtleSxcbiAgfSxcbn0pO1xuXG5jb25zdCBTVFJJTkdfV0hFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdTdHJpbmdXaGVyZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBTdHJpbmdXaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhIGZpZWxkIG9mIHR5cGUgU3RyaW5nLicsXG4gIGZpZWxkczoge1xuICAgIGVxdWFsVG86IGVxdWFsVG8oR3JhcGhRTFN0cmluZyksXG4gICAgbm90RXF1YWxUbzogbm90RXF1YWxUbyhHcmFwaFFMU3RyaW5nKSxcbiAgICBsZXNzVGhhbjogbGVzc1RoYW4oR3JhcGhRTFN0cmluZyksXG4gICAgbGVzc1RoYW5PckVxdWFsVG86IGxlc3NUaGFuT3JFcXVhbFRvKEdyYXBoUUxTdHJpbmcpLFxuICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbihHcmFwaFFMU3RyaW5nKSxcbiAgICBncmVhdGVyVGhhbk9yRXF1YWxUbzogZ3JlYXRlclRoYW5PckVxdWFsVG8oR3JhcGhRTFN0cmluZyksXG4gICAgaW46IGluT3AoR3JhcGhRTFN0cmluZyksXG4gICAgbm90SW46IG5vdEluKEdyYXBoUUxTdHJpbmcpLFxuICAgIGV4aXN0cyxcbiAgICBtYXRjaGVzUmVnZXgsXG4gICAgb3B0aW9ucyxcbiAgICB0ZXh0OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlICR0ZXh0IG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBmdWxsIHRleHQgc2VhcmNoIGNvbnN0cmFpbnQuJyxcbiAgICAgIHR5cGU6IFRFWFRfSU5QVVQsXG4gICAgfSxcbiAgICBpblF1ZXJ5S2V5LFxuICAgIG5vdEluUXVlcnlLZXksXG4gIH0sXG59KTtcblxuY29uc3QgTlVNQkVSX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnTnVtYmVyV2hlcmVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgTnVtYmVyV2hlcmVJbnB1dCBpbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZmlsdGVyaW5nIG9iamVjdHMgYnkgYSBmaWVsZCBvZiB0eXBlIE51bWJlci4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKEdyYXBoUUxGbG9hdCksXG4gICAgbm90RXF1YWxUbzogbm90RXF1YWxUbyhHcmFwaFFMRmxvYXQpLFxuICAgIGxlc3NUaGFuOiBsZXNzVGhhbihHcmFwaFFMRmxvYXQpLFxuICAgIGxlc3NUaGFuT3JFcXVhbFRvOiBsZXNzVGhhbk9yRXF1YWxUbyhHcmFwaFFMRmxvYXQpLFxuICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbihHcmFwaFFMRmxvYXQpLFxuICAgIGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiBncmVhdGVyVGhhbk9yRXF1YWxUbyhHcmFwaFFMRmxvYXQpLFxuICAgIGluOiBpbk9wKEdyYXBoUUxGbG9hdCksXG4gICAgbm90SW46IG5vdEluKEdyYXBoUUxGbG9hdCksXG4gICAgZXhpc3RzLFxuICAgIGluUXVlcnlLZXksXG4gICAgbm90SW5RdWVyeUtleSxcbiAgfSxcbn0pO1xuXG5jb25zdCBCT09MRUFOX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnQm9vbGVhbldoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEJvb2xlYW5XaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhIGZpZWxkIG9mIHR5cGUgQm9vbGVhbi4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKEdyYXBoUUxCb29sZWFuKSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEdyYXBoUUxCb29sZWFuKSxcbiAgICBleGlzdHMsXG4gICAgaW5RdWVyeUtleSxcbiAgICBub3RJblF1ZXJ5S2V5LFxuICB9LFxufSk7XG5cbmNvbnN0IEFSUkFZX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnQXJyYXlXaGVyZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBBcnJheVdoZXJlSW5wdXQgaW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGZpbHRlcmluZyBvYmplY3RzIGJ5IGEgZmllbGQgb2YgdHlwZSBBcnJheS4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKEFOWSksXG4gICAgbm90RXF1YWxUbzogbm90RXF1YWxUbyhBTlkpLFxuICAgIGxlc3NUaGFuOiBsZXNzVGhhbihBTlkpLFxuICAgIGxlc3NUaGFuT3JFcXVhbFRvOiBsZXNzVGhhbk9yRXF1YWxUbyhBTlkpLFxuICAgIGdyZWF0ZXJUaGFuOiBncmVhdGVyVGhhbihBTlkpLFxuICAgIGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiBncmVhdGVyVGhhbk9yRXF1YWxUbyhBTlkpLFxuICAgIGluOiBpbk9wKEFOWSksXG4gICAgbm90SW46IG5vdEluKEFOWSksXG4gICAgZXhpc3RzLFxuICAgIGNvbnRhaW5lZEJ5OiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIGNvbnRhaW5lZEJ5IG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWVzIG9mIGFuIGFycmF5IGZpZWxkIGlzIGNvbnRhaW5lZCBieSBhbm90aGVyIHNwZWNpZmllZCBhcnJheS4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KEFOWSksXG4gICAgfSxcbiAgICBjb250YWluczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBjb250YWlucyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhbiBhcnJheSBmaWVsZCBjb250YWluIGFsbCBlbGVtZW50cyBvZiBhbm90aGVyIHNwZWNpZmllZCBhcnJheS4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KEFOWSksXG4gICAgfSxcbiAgICBpblF1ZXJ5S2V5LFxuICAgIG5vdEluUXVlcnlLZXksXG4gIH0sXG59KTtcblxuY29uc3QgS0VZX1ZBTFVFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnS2V5VmFsdWVJbnB1dCcsXG4gIGRlc2NyaXB0aW9uOiAnQW4gZW50cnkgZnJvbSBhbiBvYmplY3QsIGkuZS4sIGEgcGFpciBvZiBrZXkgYW5kIHZhbHVlLicsXG4gIGZpZWxkczoge1xuICAgIGtleToge1xuICAgICAgZGVzY3JpcHRpb246ICdUaGUga2V5IHVzZWQgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mIHRoaXMgZW50cnkuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSB2YWx1ZSBvZiB0aGUgZW50cnkuIENvdWxkIGJlIGFueSB0eXBlIG9mIHNjYWxhciBkYXRhLicsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoQU5ZKSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IE9CSkVDVF9XSEVSRV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ09iamVjdFdoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIE9iamVjdFdoZXJlSW5wdXQgaW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGZpbHRlcmluZyByZXN1bHQgYnkgYSBmaWVsZCBvZiB0eXBlIE9iamVjdC4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgbm90RXF1YWxUbzogbm90RXF1YWxUbyhLRVlfVkFMVUVfSU5QVVQpLFxuICAgIGluOiBpbk9wKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgbm90SW46IG5vdEluKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgbGVzc1RoYW46IGxlc3NUaGFuKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgbGVzc1RoYW5PckVxdWFsVG86IGxlc3NUaGFuT3JFcXVhbFRvKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgZ3JlYXRlclRoYW46IGdyZWF0ZXJUaGFuKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IGdyZWF0ZXJUaGFuT3JFcXVhbFRvKEtFWV9WQUxVRV9JTlBVVCksXG4gICAgZXhpc3RzLFxuICAgIGluUXVlcnlLZXksXG4gICAgbm90SW5RdWVyeUtleSxcbiAgfSxcbn0pO1xuXG5jb25zdCBEQVRFX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnRGF0ZVdoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIERhdGVXaGVyZUlucHV0IGlucHV0IHR5cGUgaXMgdXNlZCBpbiBvcGVyYXRpb25zIHRoYXQgaW52b2x2ZSBmaWx0ZXJpbmcgb2JqZWN0cyBieSBhIGZpZWxkIG9mIHR5cGUgRGF0ZS4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKERBVEUpLFxuICAgIG5vdEVxdWFsVG86IG5vdEVxdWFsVG8oREFURSksXG4gICAgbGVzc1RoYW46IGxlc3NUaGFuKERBVEUpLFxuICAgIGxlc3NUaGFuT3JFcXVhbFRvOiBsZXNzVGhhbk9yRXF1YWxUbyhEQVRFKSxcbiAgICBncmVhdGVyVGhhbjogZ3JlYXRlclRoYW4oREFURSksXG4gICAgZ3JlYXRlclRoYW5PckVxdWFsVG86IGdyZWF0ZXJUaGFuT3JFcXVhbFRvKERBVEUpLFxuICAgIGluOiBpbk9wKERBVEUpLFxuICAgIG5vdEluOiBub3RJbihEQVRFKSxcbiAgICBleGlzdHMsXG4gICAgaW5RdWVyeUtleSxcbiAgICBub3RJblF1ZXJ5S2V5LFxuICB9LFxufSk7XG5cbmNvbnN0IEJZVEVTX1dIRVJFX0lOUFVUID0gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICBuYW1lOiAnQnl0ZXNXaGVyZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBCeXRlc1doZXJlSW5wdXQgaW5wdXQgdHlwZSBpcyB1c2VkIGluIG9wZXJhdGlvbnMgdGhhdCBpbnZvbHZlIGZpbHRlcmluZyBvYmplY3RzIGJ5IGEgZmllbGQgb2YgdHlwZSBCeXRlcy4nLFxuICBmaWVsZHM6IHtcbiAgICBlcXVhbFRvOiBlcXVhbFRvKEJZVEVTKSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEJZVEVTKSxcbiAgICBsZXNzVGhhbjogbGVzc1RoYW4oQllURVMpLFxuICAgIGxlc3NUaGFuT3JFcXVhbFRvOiBsZXNzVGhhbk9yRXF1YWxUbyhCWVRFUyksXG4gICAgZ3JlYXRlclRoYW46IGdyZWF0ZXJUaGFuKEJZVEVTKSxcbiAgICBncmVhdGVyVGhhbk9yRXF1YWxUbzogZ3JlYXRlclRoYW5PckVxdWFsVG8oQllURVMpLFxuICAgIGluOiBpbk9wKEJZVEVTKSxcbiAgICBub3RJbjogbm90SW4oQllURVMpLFxuICAgIGV4aXN0cyxcbiAgICBpblF1ZXJ5S2V5LFxuICAgIG5vdEluUXVlcnlLZXksXG4gIH0sXG59KTtcblxuY29uc3QgRklMRV9XSEVSRV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ0ZpbGVXaGVyZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBGaWxlV2hlcmVJbnB1dCBpbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZmlsdGVyaW5nIG9iamVjdHMgYnkgYSBmaWVsZCBvZiB0eXBlIEZpbGUuJyxcbiAgZmllbGRzOiB7XG4gICAgZXF1YWxUbzogZXF1YWxUbyhGSUxFKSxcbiAgICBub3RFcXVhbFRvOiBub3RFcXVhbFRvKEZJTEUpLFxuICAgIGxlc3NUaGFuOiBsZXNzVGhhbihGSUxFKSxcbiAgICBsZXNzVGhhbk9yRXF1YWxUbzogbGVzc1RoYW5PckVxdWFsVG8oRklMRSksXG4gICAgZ3JlYXRlclRoYW46IGdyZWF0ZXJUaGFuKEZJTEUpLFxuICAgIGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiBncmVhdGVyVGhhbk9yRXF1YWxUbyhGSUxFKSxcbiAgICBpbjogaW5PcChGSUxFKSxcbiAgICBub3RJbjogbm90SW4oRklMRSksXG4gICAgZXhpc3RzLFxuICAgIG1hdGNoZXNSZWdleCxcbiAgICBvcHRpb25zLFxuICAgIGluUXVlcnlLZXksXG4gICAgbm90SW5RdWVyeUtleSxcbiAgfSxcbn0pO1xuXG5jb25zdCBHRU9fUE9JTlRfV0hFUkVfSU5QVVQgPSBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdHZW9Qb2ludFdoZXJlSW5wdXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIEdlb1BvaW50V2hlcmVJbnB1dCBpbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZmlsdGVyaW5nIG9iamVjdHMgYnkgYSBmaWVsZCBvZiB0eXBlIEdlb1BvaW50LicsXG4gIGZpZWxkczoge1xuICAgIGV4aXN0cyxcbiAgICBuZWFyU3BoZXJlOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIG5lYXJTcGhlcmUgb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZXMgb2YgYSBnZW8gcG9pbnQgZmllbGQgaXMgbmVhciB0byBhbm90aGVyIGdlbyBwb2ludC4nLFxuICAgICAgdHlwZTogR0VPX1BPSU5UX0lOUFVULFxuICAgIH0sXG4gICAgbWF4RGlzdGFuY2U6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUgbWF4RGlzdGFuY2Ugb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZXMgb2YgYSBnZW8gcG9pbnQgZmllbGQgaXMgYXQgYSBtYXggZGlzdGFuY2UgKGluIHJhZGlhbnMpIGZyb20gdGhlIGdlbyBwb2ludCBzcGVjaWZpZWQgaW4gdGhlICRuZWFyU3BoZXJlIG9wZXJhdG9yLicsXG4gICAgICB0eXBlOiBHcmFwaFFMRmxvYXQsXG4gICAgfSxcbiAgICBtYXhEaXN0YW5jZUluUmFkaWFuczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBtYXhEaXN0YW5jZUluUmFkaWFucyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhIGdlbyBwb2ludCBmaWVsZCBpcyBhdCBhIG1heCBkaXN0YW5jZSAoaW4gcmFkaWFucykgZnJvbSB0aGUgZ2VvIHBvaW50IHNwZWNpZmllZCBpbiB0aGUgJG5lYXJTcGhlcmUgb3BlcmF0b3IuJyxcbiAgICAgIHR5cGU6IEdyYXBoUUxGbG9hdCxcbiAgICB9LFxuICAgIG1heERpc3RhbmNlSW5NaWxlczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBtYXhEaXN0YW5jZUluTWlsZXMgb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZXMgb2YgYSBnZW8gcG9pbnQgZmllbGQgaXMgYXQgYSBtYXggZGlzdGFuY2UgKGluIG1pbGVzKSBmcm9tIHRoZSBnZW8gcG9pbnQgc3BlY2lmaWVkIGluIHRoZSAkbmVhclNwaGVyZSBvcGVyYXRvci4nLFxuICAgICAgdHlwZTogR3JhcGhRTEZsb2F0LFxuICAgIH0sXG4gICAgbWF4RGlzdGFuY2VJbktpbG9tZXRlcnM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUgbWF4RGlzdGFuY2VJbktpbG9tZXRlcnMgb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZXMgb2YgYSBnZW8gcG9pbnQgZmllbGQgaXMgYXQgYSBtYXggZGlzdGFuY2UgKGluIGtpbG9tZXRlcnMpIGZyb20gdGhlIGdlbyBwb2ludCBzcGVjaWZpZWQgaW4gdGhlICRuZWFyU3BoZXJlIG9wZXJhdG9yLicsXG4gICAgICB0eXBlOiBHcmFwaFFMRmxvYXQsXG4gICAgfSxcbiAgICB3aXRoaW46IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUgd2l0aGluIG9wZXJhdG9yIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50IHRvIHNlbGVjdCB0aGUgb2JqZWN0cyB3aGVyZSB0aGUgdmFsdWVzIG9mIGEgZ2VvIHBvaW50IGZpZWxkIGlzIHdpdGhpbiBhIHNwZWNpZmllZCBib3guJyxcbiAgICAgIHR5cGU6IFdJVEhJTl9JTlBVVCxcbiAgICB9LFxuICAgIGdlb1dpdGhpbjoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHRoZSBnZW9XaXRoaW4gb3BlcmF0b3IgdG8gc3BlY2lmeSBhIGNvbnN0cmFpbnQgdG8gc2VsZWN0IHRoZSBvYmplY3RzIHdoZXJlIHRoZSB2YWx1ZXMgb2YgYSBnZW8gcG9pbnQgZmllbGQgaXMgd2l0aGluIGEgc3BlY2lmaWVkIHBvbHlnb24gb3Igc3BoZXJlLicsXG4gICAgICB0eXBlOiBHRU9fV0lUSElOX0lOUFVULFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgUE9MWUdPTl9XSEVSRV9JTlBVVCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgbmFtZTogJ1BvbHlnb25XaGVyZUlucHV0JyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBQb2x5Z29uV2hlcmVJbnB1dCBpbnB1dCB0eXBlIGlzIHVzZWQgaW4gb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZmlsdGVyaW5nIG9iamVjdHMgYnkgYSBmaWVsZCBvZiB0eXBlIFBvbHlnb24uJyxcbiAgZmllbGRzOiB7XG4gICAgZXhpc3RzLFxuICAgIGdlb0ludGVyc2VjdHM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB0aGUgZ2VvSW50ZXJzZWN0cyBvcGVyYXRvciB0byBzcGVjaWZ5IGEgY29uc3RyYWludCB0byBzZWxlY3QgdGhlIG9iamVjdHMgd2hlcmUgdGhlIHZhbHVlcyBvZiBhIHBvbHlnb24gZmllbGQgaW50ZXJzZWN0IGEgc3BlY2lmaWVkIHBvaW50LicsXG4gICAgICB0eXBlOiBHRU9fSU5URVJTRUNUU19JTlBVVCxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IEVMRU1FTlQgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnRWxlbWVudCcsXG4gIGRlc2NyaXB0aW9uOiBcIlRoZSBFbGVtZW50IG9iamVjdCB0eXBlIGlzIHVzZWQgdG8gcmV0dXJuIGFycmF5IGl0ZW1zJyB2YWx1ZS5cIixcbiAgZmllbGRzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZWxlbWVudCBpbiB0aGUgYXJyYXknLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEFOWSksXG4gICAgfSxcbiAgfSxcbn0pO1xuXG4vLyBEZWZhdWx0IHN0YXRpYyB1bmlvbiB0eXBlLCB3ZSB1cGRhdGUgdHlwZXMgYW5kIHJlc29sdmVUeXBlIGZ1bmN0aW9uIGxhdGVyXG5sZXQgQVJSQVlfUkVTVUxUO1xuXG5jb25zdCBsb2FkQXJyYXlSZXN1bHQgPSAocGFyc2VHcmFwaFFMU2NoZW1hLCBwYXJzZUNsYXNzZXNBcnJheSkgPT4ge1xuICBjb25zdCBjbGFzc1R5cGVzID0gcGFyc2VDbGFzc2VzQXJyYXlcbiAgICAuZmlsdGVyKHBhcnNlQ2xhc3MgPT5cbiAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYS5wYXJzZUNsYXNzVHlwZXNbcGFyc2VDbGFzcy5jbGFzc05hbWVdLmNsYXNzR3JhcGhRTE91dHB1dFR5cGUgPyB0cnVlIDogZmFsc2VcbiAgICApXG4gICAgLm1hcChcbiAgICAgIHBhcnNlQ2xhc3MgPT4gcGFyc2VHcmFwaFFMU2NoZW1hLnBhcnNlQ2xhc3NUeXBlc1twYXJzZUNsYXNzLmNsYXNzTmFtZV0uY2xhc3NHcmFwaFFMT3V0cHV0VHlwZVxuICAgICk7XG4gIEFSUkFZX1JFU1VMVCA9IG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICBuYW1lOiAnQXJyYXlSZXN1bHQnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1VzZSBJbmxpbmUgRnJhZ21lbnQgb24gQXJyYXkgdG8gZ2V0IHJlc3VsdHM6IGh0dHBzOi8vZ3JhcGhxbC5vcmcvbGVhcm4vcXVlcmllcy8jaW5saW5lLWZyYWdtZW50cycsXG4gICAgdHlwZXM6ICgpID0+IFtFTEVNRU5ULCAuLi5jbGFzc1R5cGVzXSxcbiAgICByZXNvbHZlVHlwZTogdmFsdWUgPT4ge1xuICAgICAgaWYgKHZhbHVlLl9fdHlwZSA9PT0gJ09iamVjdCcgJiYgdmFsdWUuY2xhc3NOYW1lICYmIHZhbHVlLm9iamVjdElkKSB7XG4gICAgICAgIGlmIChwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzW3ZhbHVlLmNsYXNzTmFtZV0pIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VHcmFwaFFMU2NoZW1hLnBhcnNlQ2xhc3NUeXBlc1t2YWx1ZS5jbGFzc05hbWVdLmNsYXNzR3JhcGhRTE91dHB1dFR5cGUubmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gRUxFTUVOVC5uYW1lO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gRUxFTUVOVC5uYW1lO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuZ3JhcGhRTFR5cGVzLnB1c2goQVJSQVlfUkVTVUxUKTtcbn07XG5cbmNvbnN0IGxvYWQgPSBwYXJzZUdyYXBoUUxTY2hlbWEgPT4ge1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoR3JhcGhRTFVwbG9hZCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShBTlksIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoT0JKRUNULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKERBVEUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoQllURVMsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoRklMRSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShGSUxFX0lORk8sIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoRklMRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShHRU9fUE9JTlRfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoR0VPX1BPSU5ULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFBBUlNFX09CSkVDVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShSRUFEX1BSRUZFUkVOQ0UsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoUkVBRF9PUFRJT05TX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFNFQVJDSF9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShURVhUX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEJPWF9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShXSVRISU5fSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoQ0VOVEVSX1NQSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShHRU9fV0lUSElOX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEdFT19JTlRFUlNFQ1RTX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKElEX1dIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFNUUklOR19XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShOVU1CRVJfV0hFUkVfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoQk9PTEVBTl9XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShBUlJBWV9XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShLRVlfVkFMVUVfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoT0JKRUNUX1dIRVJFX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKERBVEVfV0hFUkVfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoQllURVNfV0hFUkVfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoRklMRV9XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShHRU9fUE9JTlRfV0hFUkVfSU5QVVQsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoUE9MWUdPTl9XSEVSRV9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShFTEVNRU5ULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEFDTF9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShVU0VSX0FDTF9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShST0xFX0FDTF9JTlBVVCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShQVUJMSUNfQUNMX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKEFDTCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShVU0VSX0FDTCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShST0xFX0FDTCwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShQVUJMSUNfQUNMLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFNVQlFVRVJZX0lOUFVULCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKFNFTEVDVF9JTlBVVCwgdHJ1ZSk7XG59O1xuXG5leHBvcnQge1xuICBHcmFwaFFMVXBsb2FkLFxuICBUeXBlVmFsaWRhdGlvbkVycm9yLFxuICBwYXJzZVN0cmluZ1ZhbHVlLFxuICBwYXJzZUludFZhbHVlLFxuICBwYXJzZUZsb2F0VmFsdWUsXG4gIHBhcnNlQm9vbGVhblZhbHVlLFxuICBwYXJzZVZhbHVlLFxuICBwYXJzZUxpc3RWYWx1ZXMsXG4gIHBhcnNlT2JqZWN0RmllbGRzLFxuICBBTlksXG4gIE9CSkVDVCxcbiAgcGFyc2VEYXRlSXNvVmFsdWUsXG4gIHNlcmlhbGl6ZURhdGVJc28sXG4gIERBVEUsXG4gIEJZVEVTLFxuICBwYXJzZUZpbGVWYWx1ZSxcbiAgU1VCUVVFUllfSU5QVVQsXG4gIFNFTEVDVF9JTlBVVCxcbiAgRklMRSxcbiAgRklMRV9JTkZPLFxuICBGSUxFX0lOUFVULFxuICBHRU9fUE9JTlRfRklFTERTLFxuICBHRU9fUE9JTlRfSU5QVVQsXG4gIEdFT19QT0lOVCxcbiAgUE9MWUdPTl9JTlBVVCxcbiAgUE9MWUdPTixcbiAgT0JKRUNUX0lELFxuICBDTEFTU19OQU1FX0FUVCxcbiAgR0xPQkFMX09SX09CSkVDVF9JRF9BVFQsXG4gIE9CSkVDVF9JRF9BVFQsXG4gIFVQREFURURfQVRfQVRULFxuICBDUkVBVEVEX0FUX0FUVCxcbiAgSU5QVVRfRklFTERTLFxuICBDUkVBVEVfUkVTVUxUX0ZJRUxEUyxcbiAgVVBEQVRFX1JFU1VMVF9GSUVMRFMsXG4gIFBBUlNFX09CSkVDVF9GSUVMRFMsXG4gIFBBUlNFX09CSkVDVCxcbiAgU0VTU0lPTl9UT0tFTl9BVFQsXG4gIFJFQURfUFJFRkVSRU5DRSxcbiAgUkVBRF9QUkVGRVJFTkNFX0FUVCxcbiAgSU5DTFVERV9SRUFEX1BSRUZFUkVOQ0VfQVRULFxuICBTVUJRVUVSWV9SRUFEX1BSRUZFUkVOQ0VfQVRULFxuICBSRUFEX09QVElPTlNfSU5QVVQsXG4gIFJFQURfT1BUSU9OU19BVFQsXG4gIFdIRVJFX0FUVCxcbiAgU0tJUF9BVFQsXG4gIExJTUlUX0FUVCxcbiAgQ09VTlRfQVRULFxuICBTRUFSQ0hfSU5QVVQsXG4gIFRFWFRfSU5QVVQsXG4gIEJPWF9JTlBVVCxcbiAgV0lUSElOX0lOUFVULFxuICBDRU5URVJfU1BIRVJFX0lOUFVULFxuICBHRU9fV0lUSElOX0lOUFVULFxuICBHRU9fSU5URVJTRUNUU19JTlBVVCxcbiAgZXF1YWxUbyxcbiAgbm90RXF1YWxUbyxcbiAgbGVzc1RoYW4sXG4gIGxlc3NUaGFuT3JFcXVhbFRvLFxuICBncmVhdGVyVGhhbixcbiAgZ3JlYXRlclRoYW5PckVxdWFsVG8sXG4gIGluT3AsXG4gIG5vdEluLFxuICBleGlzdHMsXG4gIG1hdGNoZXNSZWdleCxcbiAgb3B0aW9ucyxcbiAgaW5RdWVyeUtleSxcbiAgbm90SW5RdWVyeUtleSxcbiAgSURfV0hFUkVfSU5QVVQsXG4gIFNUUklOR19XSEVSRV9JTlBVVCxcbiAgTlVNQkVSX1dIRVJFX0lOUFVULFxuICBCT09MRUFOX1dIRVJFX0lOUFVULFxuICBBUlJBWV9XSEVSRV9JTlBVVCxcbiAgS0VZX1ZBTFVFX0lOUFVULFxuICBPQkpFQ1RfV0hFUkVfSU5QVVQsXG4gIERBVEVfV0hFUkVfSU5QVVQsXG4gIEJZVEVTX1dIRVJFX0lOUFVULFxuICBGSUxFX1dIRVJFX0lOUFVULFxuICBHRU9fUE9JTlRfV0hFUkVfSU5QVVQsXG4gIFBPTFlHT05fV0hFUkVfSU5QVVQsXG4gIEFSUkFZX1JFU1VMVCxcbiAgRUxFTUVOVCxcbiAgQUNMX0lOUFVULFxuICBVU0VSX0FDTF9JTlBVVCxcbiAgUk9MRV9BQ0xfSU5QVVQsXG4gIFBVQkxJQ19BQ0xfSU5QVVQsXG4gIEFDTCxcbiAgVVNFUl9BQ0wsXG4gIFJPTEVfQUNMLFxuICBQVUJMSUNfQUNMLFxuICBsb2FkLFxuICBsb2FkQXJyYXlSZXN1bHQsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBZ0JBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUQsc0JBQUEsQ0FBQUgsT0FBQTtBQUFnQyxTQUFBRyx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVoQyxNQUFNRyxtQkFBbUIsU0FBU0MsS0FBSyxDQUFDO0VBQ3RDQyxXQUFXQSxDQUFDQyxLQUFLLEVBQUVDLElBQUksRUFBRTtJQUN2QixLQUFLLENBQUMsR0FBR0QsS0FBSyxtQkFBbUJDLElBQUksRUFBRSxDQUFDO0VBQzFDO0FBQ0Y7QUFBQ0MsT0FBQSxDQUFBTCxtQkFBQSxHQUFBQSxtQkFBQTtBQUVELE1BQU1NLGdCQUFnQixHQUFHSCxLQUFLLElBQUk7RUFDaEMsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO0lBQzdCLE9BQU9BLEtBQUs7RUFDZDtFQUVBLE1BQU0sSUFBSUgsbUJBQW1CLENBQUNHLEtBQUssRUFBRSxRQUFRLENBQUM7QUFDaEQsQ0FBQztBQUFDRSxPQUFBLENBQUFDLGdCQUFBLEdBQUFBLGdCQUFBO0FBRUYsTUFBTUMsYUFBYSxHQUFHSixLQUFLLElBQUk7RUFDN0IsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFF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
|
|
@@ -5,12 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.load = void 0;
|
|
7
7
|
var _graphql = require("graphql");
|
|
8
|
-
var _deepcopy = _interopRequireDefault(require("deepcopy"));
|
|
9
8
|
var _graphqlRelay = require("graphql-relay");
|
|
9
|
+
var _parseGraphQLUtils = require("../parseGraphQLUtils");
|
|
10
10
|
var _FunctionsRouter = require("../../Routers/FunctionsRouter");
|
|
11
11
|
var defaultGraphQLTypes = _interopRequireWildcard(require("./defaultGraphQLTypes"));
|
|
12
12
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
const load = parseGraphQLSchema => {
|
|
15
14
|
if (parseGraphQLSchema.functionNames.length > 0) {
|
|
16
15
|
const cloudCodeFunctionEnum = parseGraphQLSchema.addGraphQLType(new _graphql.GraphQLEnumType({
|
|
@@ -47,7 +46,7 @@ const load = parseGraphQLSchema => {
|
|
|
47
46
|
const {
|
|
48
47
|
functionName,
|
|
49
48
|
params
|
|
50
|
-
} = (0,
|
|
49
|
+
} = (0, _parseGraphQLUtils.cloneArgs)(args);
|
|
51
50
|
const {
|
|
52
51
|
config,
|
|
53
52
|
auth,
|
|
@@ -75,4 +74,4 @@ const load = parseGraphQLSchema => {
|
|
|
75
74
|
}
|
|
76
75
|
};
|
|
77
76
|
exports.load = load;
|
|
78
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbCIsInJlcXVpcmUiLCJfZ3JhcGhxbFJlbGF5IiwiX3BhcnNlR3JhcGhRTFV0aWxzIiwiX0Z1bmN0aW9uc1JvdXRlciIsImRlZmF1bHRHcmFwaFFMVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImxvYWQiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJmdW5jdGlvbk5hbWVzIiwibGVuZ3RoIiwiY2xvdWRDb2RlRnVuY3Rpb25FbnVtIiwiYWRkR3JhcGhRTFR5cGUiLCJHcmFwaFFMRW51bVR5cGUiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJ2YWx1ZXMiLCJyZWR1Y2UiLCJmdW5jdGlvbk5hbWUiLCJ2YWx1ZSIsImNhbGxDbG91ZENvZGVNdXRhdGlvbiIsIm11dGF0aW9uV2l0aENsaWVudE11dGF0aW9uSWQiLCJpbnB1dEZpZWxkcyIsInR5cGUiLCJHcmFwaFFMTm9uTnVsbCIsInBhcmFtcyIsIk9CSkVDVCIsIm91dHB1dEZpZWxkcyIsInJlc3VsdCIsIkFOWSIsIm11dGF0ZUFuZEdldFBheWxvYWQiLCJhcmdzIiwiY29udGV4dCIsImNsb25lQXJncyIsImNvbmZpZyIsImF1dGgiLCJpbmZvIiwiRnVuY3Rpb25zUm91dGVyIiwiaGFuZGxlQ2xvdWRGdW5jdGlvbiIsImJvZHkiLCJyZXNwb25zZSIsImhhbmRsZUVycm9yIiwiaW5wdXQiLCJvZlR5cGUiLCJhZGRHcmFwaFFMTXV0YXRpb24iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dyYXBoUUwvbG9hZGVycy9mdW5jdGlvbnNNdXRhdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxFbnVtVHlwZSB9IGZyb20gJ2dyYXBocWwnO1xuXG5pbXBvcnQgeyBtdXRhdGlvbldpdGhDbGllbnRNdXRhdGlvbklkIH0gZnJvbSAnZ3JhcGhxbC1yZWxheSc7XG5pbXBvcnQgeyBjbG9uZUFyZ3MgfSBmcm9tICcuLi9wYXJzZUdyYXBoUUxVdGlscyc7XG5pbXBvcnQgeyBGdW5jdGlvbnNSb3V0ZXIgfSBmcm9tICcuLi8uLi9Sb3V0ZXJzL0Z1bmN0aW9uc1JvdXRlcic7XG5pbXBvcnQgKiBhcyBkZWZhdWx0R3JhcGhRTFR5cGVzIGZyb20gJy4vZGVmYXVsdEdyYXBoUUxUeXBlcyc7XG5cbmNvbnN0IGxvYWQgPSBwYXJzZUdyYXBoUUxTY2hlbWEgPT4ge1xuICBpZiAocGFyc2VHcmFwaFFMU2NoZW1hLmZ1bmN0aW9uTmFtZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGNsb3VkQ29kZUZ1bmN0aW9uRW51bSA9IHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShcbiAgICAgIG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICBuYW1lOiAnQ2xvdWRDb2RlRnVuY3Rpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnVGhlIENsb3VkQ29kZUZ1bmN0aW9uIGVudW0gdHlwZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBjbG91ZCBjb2RlIGZ1bmN0aW9ucy4nLFxuICAgICAgICB2YWx1ZXM6IHBhcnNlR3JhcGhRTFNjaGVtYS5mdW5jdGlvbk5hbWVzLnJlZHVjZShcbiAgICAgICAgICAodmFsdWVzLCBmdW5jdGlvbk5hbWUpID0+ICh7XG4gICAgICAgICAgICAuLi52YWx1ZXMsXG4gICAgICAgICAgICBbZnVuY3Rpb25OYW1lXTogeyB2YWx1ZTogZnVuY3Rpb25OYW1lIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAge31cbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgY29uc3QgY2FsbENsb3VkQ29kZU11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgICBuYW1lOiAnQ2FsbENsb3VkQ29kZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBjYWxsQ2xvdWRDb2RlIG11dGF0aW9uIGNhbiBiZSB1c2VkIHRvIGludm9rZSBhIGNsb3VkIGNvZGUgZnVuY3Rpb24uJyxcbiAgICAgIGlucHV0RmllbGRzOiB7XG4gICAgICAgIGZ1bmN0aW9uTmFtZToge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLicsXG4gICAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKGNsb3VkQ29kZUZ1bmN0aW9uRW51bSksXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlc2UgYXJlIHRoZSBwYXJhbXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4nLFxuICAgICAgICAgIHR5cGU6IGRlZmF1bHRHcmFwaFFMVHlwZXMuT0JKRUNULFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG91dHB1dEZpZWxkczoge1xuICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHJlc3VsdCB2YWx1ZSBvZiB0aGUgY2xvdWQgY29kZSBmdW5jdGlvbiBleGVjdXRpb24uJyxcbiAgICAgICAgICB0eXBlOiBkZWZhdWx0R3JhcGhRTFR5cGVzLkFOWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBtdXRhdGVBbmRHZXRQYXlsb2FkOiBhc3luYyAoYXJncywgY29udGV4dCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgZnVuY3Rpb25OYW1lLCBwYXJhbXMgfSA9IGNsb25lQXJncyhhcmdzKTtcbiAgICAgICAgICBjb25zdCB7IGNvbmZpZywgYXV0aCwgaW5mbyB9ID0gY29udGV4dDtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN1bHQ6IChcbiAgICAgICAgICAgICAgYXdhaXQgRnVuY3Rpb25zUm91dGVyLmhhbmRsZUNsb3VkRnVuY3Rpb24oe1xuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICAgICAgICBib2R5OiBwYXJhbXMsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLnJlc3BvbnNlLnJlc3VsdCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLmhhbmRsZUVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGNhbGxDbG91ZENvZGVNdXRhdGlvbi5hcmdzLmlucHV0LnR5cGUub2ZUeXBlLCB0cnVlLCB0cnVlKTtcbiAgICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoY2FsbENsb3VkQ29kZU11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICAgIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMTXV0YXRpb24oJ2NhbGxDbG91ZENvZGUnLCBjYWxsQ2xvdWRDb2RlTXV0YXRpb24sIHRydWUsIHRydWUpO1xuICB9XG59O1xuXG5leHBvcnQgeyBsb2FkIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7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
|