nextlove 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57,13 +57,13 @@ var getZodObjectSchemaFromZodEffectSchema = (isZodEffect, schema) => {
57
57
  }
58
58
  return currentSchema;
59
59
  };
60
- var isSchemaArrayc = (schema) => {
61
- const unsafe_def_maybe_optional_maybe_zod_effect = schema._def;
62
- const unsafe_def_maybe_zod_effect = unsafe_def_maybe_optional_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodOptional ? unsafe_def_maybe_optional_maybe_zod_effect.innerType._def : unsafe_def_maybe_optional_maybe_zod_effect;
63
- const safe_def = unsafe_def_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodEffects ? unsafe_def_maybe_zod_effect.schema._def : unsafe_def_maybe_zod_effect;
64
- return safe_def.typeName === import_zod.ZodFirstPartyTypeKind.ZodArray;
60
+ var getZodDefFromZodSchemaHelpers = (schema) => {
61
+ const unsafe_def_maybe_optional_maybe_default_maybe_zod_effect = schema._def;
62
+ const unsafe_def_maybe_default_maybe_zod_effect = unsafe_def_maybe_optional_maybe_default_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodOptional ? unsafe_def_maybe_optional_maybe_default_maybe_zod_effect.innerType._def : unsafe_def_maybe_optional_maybe_default_maybe_zod_effect;
63
+ const unsafe_def_maybe_zod_effect = unsafe_def_maybe_default_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodDefault ? unsafe_def_maybe_default_maybe_zod_effect.innerType._def : unsafe_def_maybe_default_maybe_zod_effect;
64
+ return unsafe_def_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodEffects ? unsafe_def_maybe_zod_effect.schema._def : unsafe_def_maybe_zod_effect;
65
65
  };
66
- var parseCommaSeparateArrays = (schema, input) => {
66
+ var parseQueryParams = (schema, input) => {
67
67
  const parsed_input = Object.assign({}, input);
68
68
  const isZodEffect = schema._def.typeName === import_zod.ZodFirstPartyTypeKind.ZodEffects;
69
69
  const safe_schema = getZodObjectSchemaFromZodEffectSchema(isZodEffect, schema);
@@ -71,7 +71,9 @@ var parseCommaSeparateArrays = (schema, input) => {
71
71
  if (isZodObject) {
72
72
  const obj_schema = safe_schema;
73
73
  for (const [key, value] of Object.entries(obj_schema.shape)) {
74
- if (isSchemaArrayc(value)) {
74
+ const def = getZodDefFromZodSchemaHelpers(value);
75
+ const isArray = def.typeName === import_zod.ZodFirstPartyTypeKind.ZodArray;
76
+ if (isArray) {
75
77
  const array_input = input[key];
76
78
  if (typeof array_input === "string") {
77
79
  parsed_input[key] = array_input.split(",");
@@ -79,6 +81,14 @@ var parseCommaSeparateArrays = (schema, input) => {
79
81
  if (Array.isArray(input[`${key}[]`])) {
80
82
  parsed_input[key] = input[`${key}[]`];
81
83
  }
84
+ continue;
85
+ }
86
+ const isBoolean = def.typeName === import_zod.ZodFirstPartyTypeKind.ZodBoolean;
87
+ if (isBoolean) {
88
+ const boolean_input = input[key];
89
+ if (typeof boolean_input === "string") {
90
+ parsed_input[key] = boolean_input === "true";
91
+ }
82
92
  }
83
93
  }
84
94
  }
@@ -94,7 +104,7 @@ var zodIssueToString = (issue) => {
94
104
  return `${issue.message} for "${issue.path.join(".")}"`;
95
105
  };
96
106
  var withValidation = (input) => (next) => async (req, res) => {
97
- var _a, _b, _c, _d, _e;
107
+ var _a, _b, _c, _d;
98
108
  if (input.formData && input.jsonBody || input.formData && input.commonParams) {
99
109
  throw new Error("Cannot use formData with jsonBody or commonParams");
100
110
  }
@@ -113,10 +123,12 @@ var withValidation = (input) => (next) => async (req, res) => {
113
123
  try {
114
124
  const original_combined_params = { ...req.query, ...req.body };
115
125
  req.body = input.formData && req.method !== "GET" ? (_c = input.formData) == null ? void 0 : _c.parse(req.body) : (_d = input.jsonBody) == null ? void 0 : _d.parse(req.body);
116
- req.query = (_e = input.queryParams) == null ? void 0 : _e.parse(req.query);
126
+ if (input.queryParams) {
127
+ req.query = parseQueryParams(input.queryParams, req.query);
128
+ }
117
129
  if (input.commonParams) {
118
130
  ;
119
- req.commonParams = parseCommaSeparateArrays(input.commonParams, original_combined_params);
131
+ req.commonParams = parseQueryParams(input.commonParams, original_combined_params);
120
132
  }
121
133
  } catch (error) {
122
134
  if (error.name === "ZodError") {
@@ -194,4 +206,4 @@ var createWithRouteSpec = (setupParams) => {
194
206
  checkRouteSpec,
195
207
  createWithRouteSpec
196
208
  });
197
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3dpdGgtcm91dGUtc3BlYy9pbmRleC50cyIsICIuLi8uLi9zcmMvd2l0aC1yb3V0ZS1zcGVjL21pZGRsZXdhcmVzL3dpdGgtbWV0aG9kcy50cyIsICIuLi8uLi9zcmMvd2l0aC1yb3V0ZS1zcGVjL21pZGRsZXdhcmVzL3dpdGgtdmFsaWRhdGlvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgTmV4dEFwaVJlc3BvbnNlLCBOZXh0QXBpUmVxdWVzdCB9IGZyb20gXCJuZXh0XCJcbmltcG9ydCB7IHdpdGhFeGNlcHRpb25IYW5kbGluZyB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuaW1wb3J0IHdyYXBwZXJzLCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwibmV4dGpzLW1pZGRsZXdhcmUtd3JhcHBlcnNcIlxuaW1wb3J0IHsgQ3JlYXRlV2l0aFJvdXRlU3BlY0Z1bmN0aW9uLCBSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHdpdGhNZXRob2RzLCB7IEhUVFBNZXRob2RzIH0gZnJvbSBcIi4vbWlkZGxld2FyZXMvd2l0aC1tZXRob2RzXCJcbmltcG9ydCB3aXRoVmFsaWRhdGlvbiBmcm9tIFwiLi9taWRkbGV3YXJlcy93aXRoLXZhbGlkYXRpb25cIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG50eXBlIFBhcmFtRGVmID0gei5ab2RUeXBlQW55IHwgei5ab2RFZmZlY3RzPHouWm9kVHlwZUFueT5cblxuZXhwb3J0IGNvbnN0IGNoZWNrUm91dGVTcGVjID0gPFxuICBBdXRoVHlwZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgTWV0aG9kcyBleHRlbmRzIEhUVFBNZXRob2RzW10gPSBIVFRQTWV0aG9kc1tdLFxuICBKc29uQm9keSBleHRlbmRzIFBhcmFtRGVmID0gei5ab2RUeXBlQW55LFxuICBRdWVyeVBhcmFtcyBleHRlbmRzIFBhcmFtRGVmID0gei5ab2RUeXBlQW55LFxuICBDb21tb25QYXJhbXMgZXh0ZW5kcyBQYXJhbURlZiA9IHouWm9kVHlwZUFueSxcbiAgTWlkZGxld2FyZXMgZXh0ZW5kcyByZWFkb25seSBNaWRkbGV3YXJlPGFueSwgYW55PltdID0gcmVhZG9ubHkgTWlkZGxld2FyZTxcbiAgICBhbnksXG4gICAgYW55XG4gID5bXSxcbiAgRm9ybURhdGEgZXh0ZW5kcyBQYXJhbURlZiA9IHouWm9kVHlwZUFueSxcbiAgU3BlYyBleHRlbmRzIFJvdXRlU3BlYzxcbiAgICBBdXRoVHlwZSxcbiAgICBNZXRob2RzLFxuICAgIEpzb25Cb2R5LFxuICAgIFF1ZXJ5UGFyYW1zLFxuICAgIENvbW1vblBhcmFtcyxcbiAgICBNaWRkbGV3YXJlcyxcbiAgICBGb3JtRGF0YVxuICA+ID0gUm91dGVTcGVjPFxuICAgIEF1dGhUeXBlLFxuICAgIE1ldGhvZHMsXG4gICAgSnNvbkJvZHksXG4gICAgUXVlcnlQYXJhbXMsXG4gICAgQ29tbW9uUGFyYW1zLFxuICAgIE1pZGRsZXdhcmVzLFxuICAgIEZvcm1EYXRhXG4gID5cbj4oXG4gIHNwZWM6IFNwZWNcbik6IHN0cmluZyBleHRlbmRzIFNwZWNbXCJhdXRoXCJdXG4gID8gYHlvdXIgcm91dGUgc3BlYyBpcyB1bmRlcnNwZWNpZmllZCwgYWRkIFwiYXMgY29uc3RcImBcbiAgOiBTcGVjID0+IHNwZWMgYXMgYW55XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVXaXRoUm91dGVTcGVjOiBDcmVhdGVXaXRoUm91dGVTcGVjRnVuY3Rpb24gPSAoKFxuICBzZXR1cFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdXRoTWlkZGxld2FyZU1hcCA9IHt9LFxuICAgIGdsb2JhbE1pZGRsZXdhcmVzID0gW10sXG4gICAgZXhjZXB0aW9uSGFuZGxpbmdNaWRkbGV3YXJlID0gd2l0aEV4Y2VwdGlvbkhhbmRsaW5nKHtcbiAgICAgIGFkZE9rU3RhdHVzOiBzZXR1cFBhcmFtcy5hZGRPa1N0YXR1cyxcbiAgICAgIGV4Y2VwdGlvbkhhbmRsaW5nT3B0aW9uczoge1xuICAgICAgICBnZXRFcnJvckNvbnRleHQ6IChyZXEsIGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSkgYXMgYW55LFxuICB9ID0gc2V0dXBQYXJhbXNcblxuICBjb25zdCB3aXRoUm91dGVTcGVjID0gKHNwZWM6IFJvdXRlU3BlYykgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZVJvdXRlRXhwb3J0ID0gKHVzZXJEZWZpbmVkUm91dGVGbikgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlcXVlc3RIYW5kbGVyID0gYXN5bmMgKFxuICAgICAgICByZXE6IE5leHRBcGlSZXF1ZXN0LFxuICAgICAgICByZXM6IE5leHRBcGlSZXNwb25zZVxuICAgICAgKSA9PiB7XG4gICAgICAgIGF1dGhNaWRkbGV3YXJlTWFwW1wibm9uZVwiXSA9IChuZXh0KSA9PiBuZXh0XG5cbiAgICAgICAgY29uc3QgYXV0aF9taWRkbGV3YXJlID0gYXV0aE1pZGRsZXdhcmVNYXBbc3BlYy5hdXRoXVxuICAgICAgICBpZiAoIWF1dGhfbWlkZGxld2FyZSkgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGF1dGggdHlwZTogJHtzcGVjLmF1dGh9YClcblxuICAgICAgICByZXR1cm4gd3JhcHBlcnMoXG4gICAgICAgICAgLi4uKChleGNlcHRpb25IYW5kbGluZ01pZGRsZXdhcmVcbiAgICAgICAgICAgID8gW2V4Y2VwdGlvbkhhbmRsaW5nTWlkZGxld2FyZV1cbiAgICAgICAgICAgIDogW10pIGFzIFthbnldKSxcbiAgICAgICAgICAuLi4oKGdsb2JhbE1pZGRsZXdhcmVzIHx8IFtdKSBhcyBbXSksXG4gICAgICAgICAgYXV0aF9taWRkbGV3YXJlLFxuICAgICAgICAgIC4uLigoc3BlYy5taWRkbGV3YXJlcyB8fCBbXSkgYXMgW10pLFxuICAgICAgICAgIHdpdGhNZXRob2RzKHNwZWMubWV0aG9kcyksXG4gICAgICAgICAgd2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAganNvbkJvZHk6IHNwZWMuanNvbkJvZHksXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogc3BlYy5xdWVyeVBhcmFtcyxcbiAgICAgICAgICAgIGNvbW1vblBhcmFtczogc3BlYy5jb21tb25QYXJhbXMsXG4gICAgICAgICAgICBmb3JtRGF0YTogc3BlYy5mb3JtRGF0YSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB1c2VyRGVmaW5lZFJvdXRlRm5cbiAgICAgICAgKShyZXEgYXMgYW55LCByZXMpXG4gICAgICB9XG5cbiAgICAgIHJvb3RSZXF1ZXN0SGFuZGxlci5fc2V0dXBQYXJhbXMgPSBzZXR1cFBhcmFtc1xuICAgICAgcm9vdFJlcXVlc3RIYW5kbGVyLl9yb3V0ZVNwZWMgPSBzcGVjXG5cbiAgICAgIHJldHVybiByb290UmVxdWVzdEhhbmRsZXJcbiAgICB9XG5cbiAgICBjcmVhdGVSb3V0ZUV4cG9ydC5fc2V0dXBQYXJhbXMgPSBzZXR1cFBhcmFtc1xuICAgIGNyZWF0ZVJvdXRlRXhwb3J0Ll9yb3V0ZVNwZWMgPSBzcGVjXG5cbiAgICByZXR1cm4gY3JlYXRlUm91dGVFeHBvcnRcbiAgfVxuXG4gIHdpdGhSb3V0ZVNwZWMuX3NldHVwUGFyYW1zID0gc2V0dXBQYXJhbXNcblxuICByZXR1cm4gd2l0aFJvdXRlU3BlY1xufSkgYXMgYW55XG4iLCAiaW1wb3J0IHsgTWV0aG9kTm90QWxsb3dlZEV4Y2VwdGlvbiB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuXG5leHBvcnQgdHlwZSBIVFRQTWV0aG9kcyA9XG4gIHwgXCJHRVRcIlxuICB8IFwiUE9TVFwiXG4gIHwgXCJERUxFVEVcIlxuICB8IFwiUFVUXCJcbiAgfCBcIlBBVENIXCJcbiAgfCBcIkhFQURcIlxuICB8IFwiT1BUSU9OU1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoTWV0aG9kcyA9IChtZXRob2RzOiBIVFRQTWV0aG9kc1tdKSA9PiAobmV4dCkgPT4gKHJlcSwgcmVzKSA9PiB7XG4gIGlmICghbWV0aG9kcy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RBbGxvd2VkRXhjZXB0aW9uKHtcbiAgICAgIHR5cGU6IFwibWV0aG9kX25vdF9hbGxvd2VkXCIsXG4gICAgICBtZXNzYWdlOiBgb25seSAke21ldGhvZHMuam9pbihcIixcIil9IGFjY2VwdGVkYCxcbiAgICB9KVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgcmVzKVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoTWV0aG9kc1xuIiwgImltcG9ydCB0eXBlIHsgTmV4dEFwaVJlcXVlc3QsIE5leHRBcGlSZXNwb25zZSB9IGZyb20gXCJuZXh0XCJcbmltcG9ydCB7IHosIFpvZEZpcnN0UGFydHlUeXBlS2luZCB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCJsb2Rhc2hcIlxuXG5jb25zdCBnZXRab2RPYmplY3RTY2hlbWFGcm9tWm9kRWZmZWN0U2NoZW1hID0gKFxuICBpc1pvZEVmZmVjdDogYm9vbGVhbixcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnlcbik6IHouWm9kVHlwZUFueSB8IHouWm9kT2JqZWN0PGFueT4gPT4ge1xuICBpZiAoIWlzWm9kRWZmZWN0KSB7XG4gICAgcmV0dXJuIHNjaGVtYSBhcyB6LlpvZE9iamVjdDxhbnk+XG4gIH1cblxuICBsZXQgY3VycmVudFNjaGVtYSA9IHNjaGVtYVxuXG4gIHdoaWxlIChjdXJyZW50U2NoZW1hIGluc3RhbmNlb2Ygei5ab2RFZmZlY3RzKSB7XG4gICAgY3VycmVudFNjaGVtYSA9IGN1cnJlbnRTY2hlbWEuX2RlZi5zY2hlbWFcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50U2NoZW1hIGFzIHouWm9kT2JqZWN0PGFueT5cbn1cblxuY29uc3QgaXNTY2hlbWFBcnJheWMgPSAoc2NoZW1hOiB6LlpvZFR5cGVBbnkpID0+IHtcbiAgY29uc3QgdW5zYWZlX2RlZl9tYXliZV9vcHRpb25hbF9tYXliZV96b2RfZWZmZWN0ID0gKHNjaGVtYSBhcyB6LlpvZFR5cGVBbnkpXG4gICAgLl9kZWZcbiAgY29uc3QgdW5zYWZlX2RlZl9tYXliZV96b2RfZWZmZWN0ID1cbiAgICB1bnNhZmVfZGVmX21heWJlX29wdGlvbmFsX21heWJlX3pvZF9lZmZlY3QudHlwZU5hbWUgPT09XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9wdGlvbmFsXG4gICAgICA/IHVuc2FmZV9kZWZfbWF5YmVfb3B0aW9uYWxfbWF5YmVfem9kX2VmZmVjdC5pbm5lclR5cGUuX2RlZlxuICAgICAgOiB1bnNhZmVfZGVmX21heWJlX29wdGlvbmFsX21heWJlX3pvZF9lZmZlY3RcbiAgY29uc3Qgc2FmZV9kZWYgPVxuICAgIHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdC50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHNcbiAgICAgID8gdW5zYWZlX2RlZl9tYXliZV96b2RfZWZmZWN0LnNjaGVtYS5fZGVmXG4gICAgICA6IHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdFxuXG4gIHJldHVybiBzYWZlX2RlZi50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5XG59XG5cbmNvbnN0IHBhcnNlQ29tbWFTZXBhcmF0ZUFycmF5cyA9IChcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnksXG4gIGlucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKSA9PiB7XG4gIGNvbnN0IHBhcnNlZF9pbnB1dCA9IE9iamVjdC5hc3NpZ24oe30sIGlucHV0KVxuICBjb25zdCBpc1pvZEVmZmVjdCA9IHNjaGVtYS5fZGVmLnR5cGVOYW1lID09PSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0c1xuICBjb25zdCBzYWZlX3NjaGVtYSA9IGdldFpvZE9iamVjdFNjaGVtYUZyb21ab2RFZmZlY3RTY2hlbWEoaXNab2RFZmZlY3QsIHNjaGVtYSlcbiAgY29uc3QgaXNab2RPYmplY3QgPVxuICAgIHNhZmVfc2NoZW1hLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3RcblxuICBpZiAoaXNab2RPYmplY3QpIHtcbiAgICBjb25zdCBvYmpfc2NoZW1hID0gc2FmZV9zY2hlbWEgYXMgei5ab2RPYmplY3Q8YW55PlxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqX3NjaGVtYS5zaGFwZSkpIHtcbiAgICAgIGlmIChpc1NjaGVtYUFycmF5Yyh2YWx1ZSBhcyB6LlpvZFR5cGVBbnkpKSB7XG4gICAgICAgIGNvbnN0IGFycmF5X2lucHV0ID0gaW5wdXRba2V5XVxuXG4gICAgICAgIGlmICh0eXBlb2YgYXJyYXlfaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBwYXJzZWRfaW5wdXRba2V5XSA9IGFycmF5X2lucHV0LnNwbGl0KFwiLFwiKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXRbYCR7a2V5fVtdYF0pKSB7XG4gICAgICAgICAgcGFyc2VkX2lucHV0W2tleV0gPSBpbnB1dFtgJHtrZXl9W11gXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYS5wYXJzZShwYXJzZWRfaW5wdXQpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdElucHV0PFxuICBKc29uQm9keSBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gIENvbW1vblBhcmFtcyBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgRm9ybURhdGEgZXh0ZW5kcyB6LlpvZFR5cGVBbnlcbj4ge1xuICBqc29uQm9keT86IEpzb25Cb2R5XG4gIHF1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXNcbiAgY29tbW9uUGFyYW1zPzogQ29tbW9uUGFyYW1zXG4gIGZvcm1EYXRhPzogRm9ybURhdGFcbn1cblxuY29uc3Qgem9kSXNzdWVUb1N0cmluZyA9IChpc3N1ZTogei5ab2RJc3N1ZSkgPT4ge1xuICBpZiAoaXNzdWUucGF0aC5qb2luKFwiLlwiKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlXG4gIH1cbiAgaWYgKGlzc3VlLm1lc3NhZ2UgPT09IFwiUmVxdWlyZWRcIikge1xuICAgIHJldHVybiBgJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfSBpcyByZXF1aXJlZGBcbiAgfVxuICByZXR1cm4gYCR7aXNzdWUubWVzc2FnZX0gZm9yIFwiJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfVwiYFxufVxuXG5leHBvcnQgY29uc3Qgd2l0aFZhbGlkYXRpb24gPVxuICA8XG4gICAgSnNvbkJvZHkgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgQ29tbW9uUGFyYW1zIGV4dGVuZHMgei5ab2RUeXBlQW55LFxuICAgIEZvcm1EYXRhIGV4dGVuZHMgei5ab2RUeXBlQW55XG4gID4oXG4gICAgaW5wdXQ6IFJlcXVlc3RJbnB1dDxKc29uQm9keSwgUXVlcnlQYXJhbXMsIENvbW1vblBhcmFtcywgRm9ybURhdGE+XG4gICkgPT5cbiAgKG5leHQpID0+XG4gIGFzeW5jIChyZXE6IE5leHRBcGlSZXF1ZXN0LCByZXM6IE5leHRBcGlSZXNwb25zZSkgPT4ge1xuICAgIGlmIChcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5qc29uQm9keSkgfHxcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5jb21tb25QYXJhbXMpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGZvcm1EYXRhIHdpdGgganNvbkJvZHkgb3IgY29tbW9uUGFyYW1zXCIpXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHJlcS5tZXRob2QgPT09IFwiUE9TVFwiIHx8IHJlcS5tZXRob2QgPT09IFwiUEFUQ0hcIikgJiZcbiAgICAgIChpbnB1dC5qc29uQm9keSB8fCBpbnB1dC5jb21tb25QYXJhbXMpICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSAmJlxuICAgICAgIWlzRW1wdHkocmVxLmJvZHkpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbih7XG4gICAgICAgIHR5cGU6IFwiaW52YWxpZF9jb250ZW50X3R5cGVcIixcbiAgICAgICAgbWVzc2FnZTogYCR7cmVxLm1ldGhvZH0gcmVxdWVzdHMgbXVzdCBoYXZlIENvbnRlbnQtVHlwZSBoZWFkZXIgd2l0aCBcImFwcGxpY2F0aW9uL2pzb25cImAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlucHV0LmZvcm1EYXRhICYmXG4gICAgICByZXEubWV0aG9kICE9PSBcIkdFVFwiICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFxuICAgICAgICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICApXG4gICAgICAvLyBUT0RPIGV2ZW50dWFsbHkgd2Ugc2hvdWxkIHN1cHBvcnQgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oe1xuICAgICAgICB0eXBlOiBcImludmFsaWRfY29udGVudF90eXBlXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBNdXN0IGhhdmUgQ29udGVudC1UeXBlIGhlYWRlciB3aXRoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJgLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxfY29tYmluZWRfcGFyYW1zID0geyAuLi5yZXEucXVlcnksIC4uLnJlcS5ib2R5IH1cbiAgICAgIHJlcS5ib2R5ID1cbiAgICAgICAgaW5wdXQuZm9ybURhdGEgJiYgcmVxLm1ldGhvZCAhPT0gXCJHRVRcIlxuICAgICAgICAgID8gaW5wdXQuZm9ybURhdGE/LnBhcnNlKHJlcS5ib2R5KVxuICAgICAgICAgIDogaW5wdXQuanNvbkJvZHk/LnBhcnNlKHJlcS5ib2R5KVxuICAgICAgcmVxLnF1ZXJ5ID0gaW5wdXQucXVlcnlQYXJhbXM/LnBhcnNlKHJlcS5xdWVyeSlcblxuICAgICAgaWYgKGlucHV0LmNvbW1vblBhcmFtcykge1xuICAgICAgICA7KHJlcSBhcyBhbnkpLmNvbW1vblBhcmFtcyA9IHBhcnNlQ29tbWFTZXBhcmF0ZUFycmF5cyhcbiAgICAgICAgICBpbnB1dC5jb21tb25QYXJhbXMsXG4gICAgICAgICAgb3JpZ2luYWxfY29tYmluZWRfcGFyYW1zXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gXCJab2RFcnJvclwiKSB7XG4gICAgICAgIGxldCBtZXNzYWdlXG4gICAgICAgIGlmIChlcnJvci5pc3N1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgY29uc3QgaXNzdWUgPSBlcnJvci5pc3N1ZXNbMF1cbiAgICAgICAgICBtZXNzYWdlID0gem9kSXNzdWVUb1N0cmluZyhpc3N1ZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlX2NvbXBvbmVudHM6IHN0cmluZ1tdID0gW11cbiAgICAgICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICAgICAgbWVzc2FnZV9jb21wb25lbnRzLnB1c2goem9kSXNzdWVUb1N0cmluZyhpc3N1ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIG1lc3NhZ2UgPVxuICAgICAgICAgICAgYCR7ZXJyb3IuaXNzdWVzLmxlbmd0aH0gSW5wdXQgRXJyb3JzOiBgICtcbiAgICAgICAgICAgIG1lc3NhZ2VfY29tcG9uZW50cy5qb2luKFwiLCBcIilcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKHtcbiAgICAgICAgICB0eXBlOiBcImludmFsaWRfaW5wdXRcIixcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIHZhbGlkYXRpb25fZXJyb3JzOiBlcnJvci5mb3JtYXQoKSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oe1xuICAgICAgICB0eXBlOiBcImludmFsaWRfaW5wdXRcIixcbiAgICAgICAgbWVzc2FnZTogXCJFcnJvciB3aGlsZSBwYXJzaW5nIGlucHV0XCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0KHJlcSwgcmVzKVxuICB9XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhWYWxpZGF0aW9uXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLDBDQUFzQztBQUN0Qyx3Q0FBcUM7OztBQ0ZyQyx5Q0FBMEM7QUFXbkMsSUFBTSxjQUFjLENBQUMsWUFBMkIsQ0FBQyxTQUFTLENBQUMsS0FBSyxRQUFRO0FBQzdFLE1BQUksQ0FBQyxRQUFRLFNBQVMsSUFBSSxNQUFNLEdBQUc7QUFDakMsVUFBTSxJQUFJLDZEQUEwQjtBQUFBLE1BQ2xDLE1BQU07QUFBQSxNQUNOLFNBQVMsUUFBUSxRQUFRLEtBQUssR0FBRztBQUFBLElBQ25DLENBQUM7QUFBQSxFQUNIO0FBQ0EsU0FBTyxLQUFLLEtBQUssR0FBRztBQUN0QjtBQUVBLElBQU8sdUJB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
209
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3dpdGgtcm91dGUtc3BlYy9pbmRleC50cyIsICIuLi8uLi9zcmMvd2l0aC1yb3V0ZS1zcGVjL21pZGRsZXdhcmVzL3dpdGgtbWV0aG9kcy50cyIsICIuLi8uLi9zcmMvd2l0aC1yb3V0ZS1zcGVjL21pZGRsZXdhcmVzL3dpdGgtdmFsaWRhdGlvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgTmV4dEFwaVJlc3BvbnNlLCBOZXh0QXBpUmVxdWVzdCB9IGZyb20gXCJuZXh0XCJcbmltcG9ydCB7IHdpdGhFeGNlcHRpb25IYW5kbGluZyB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuaW1wb3J0IHdyYXBwZXJzLCB7IE1pZGRsZXdhcmUgfSBmcm9tIFwibmV4dGpzLW1pZGRsZXdhcmUtd3JhcHBlcnNcIlxuaW1wb3J0IHsgQ3JlYXRlV2l0aFJvdXRlU3BlY0Z1bmN0aW9uLCBSb3V0ZVNwZWMgfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHdpdGhNZXRob2RzLCB7IEhUVFBNZXRob2RzIH0gZnJvbSBcIi4vbWlkZGxld2FyZXMvd2l0aC1tZXRob2RzXCJcbmltcG9ydCB3aXRoVmFsaWRhdGlvbiBmcm9tIFwiLi9taWRkbGV3YXJlcy93aXRoLXZhbGlkYXRpb25cIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG50eXBlIFBhcmFtRGVmID0gei5ab2RUeXBlQW55IHwgei5ab2RFZmZlY3RzPHouWm9kVHlwZUFueT5cblxuZXhwb3J0IGNvbnN0IGNoZWNrUm91dGVTcGVjID0gPFxuICBBdXRoVHlwZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgTWV0aG9kcyBleHRlbmRzIEhUVFBNZXRob2RzW10gPSBIVFRQTWV0aG9kc1tdLFxuICBKc29uQm9keSBleHRlbmRzIFBhcmFtRGVmID0gei5ab2RUeXBlQW55LFxuICBRdWVyeVBhcmFtcyBleHRlbmRzIFBhcmFtRGVmID0gei5ab2RUeXBlQW55LFxuICBDb21tb25QYXJhbXMgZXh0ZW5kcyBQYXJhbURlZiA9IHouWm9kVHlwZUFueSxcbiAgTWlkZGxld2FyZXMgZXh0ZW5kcyByZWFkb25seSBNaWRkbGV3YXJlPGFueSwgYW55PltdID0gcmVhZG9ubHkgTWlkZGxld2FyZTxcbiAgICBhbnksXG4gICAgYW55XG4gID5bXSxcbiAgRm9ybURhdGEgZXh0ZW5kcyBQYXJhbURlZiA9IHouWm9kVHlwZUFueSxcbiAgU3BlYyBleHRlbmRzIFJvdXRlU3BlYzxcbiAgICBBdXRoVHlwZSxcbiAgICBNZXRob2RzLFxuICAgIEpzb25Cb2R5LFxuICAgIFF1ZXJ5UGFyYW1zLFxuICAgIENvbW1vblBhcmFtcyxcbiAgICBNaWRkbGV3YXJlcyxcbiAgICBGb3JtRGF0YVxuICA+ID0gUm91dGVTcGVjPFxuICAgIEF1dGhUeXBlLFxuICAgIE1ldGhvZHMsXG4gICAgSnNvbkJvZHksXG4gICAgUXVlcnlQYXJhbXMsXG4gICAgQ29tbW9uUGFyYW1zLFxuICAgIE1pZGRsZXdhcmVzLFxuICAgIEZvcm1EYXRhXG4gID5cbj4oXG4gIHNwZWM6IFNwZWNcbik6IHN0cmluZyBleHRlbmRzIFNwZWNbXCJhdXRoXCJdXG4gID8gYHlvdXIgcm91dGUgc3BlYyBpcyB1bmRlcnNwZWNpZmllZCwgYWRkIFwiYXMgY29uc3RcImBcbiAgOiBTcGVjID0+IHNwZWMgYXMgYW55XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVXaXRoUm91dGVTcGVjOiBDcmVhdGVXaXRoUm91dGVTcGVjRnVuY3Rpb24gPSAoKFxuICBzZXR1cFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdXRoTWlkZGxld2FyZU1hcCA9IHt9LFxuICAgIGdsb2JhbE1pZGRsZXdhcmVzID0gW10sXG4gICAgZXhjZXB0aW9uSGFuZGxpbmdNaWRkbGV3YXJlID0gd2l0aEV4Y2VwdGlvbkhhbmRsaW5nKHtcbiAgICAgIGFkZE9rU3RhdHVzOiBzZXR1cFBhcmFtcy5hZGRPa1N0YXR1cyxcbiAgICAgIGV4Y2VwdGlvbkhhbmRsaW5nT3B0aW9uczoge1xuICAgICAgICBnZXRFcnJvckNvbnRleHQ6IChyZXEsIGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGVycm9yXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSkgYXMgYW55LFxuICB9ID0gc2V0dXBQYXJhbXNcblxuICBjb25zdCB3aXRoUm91dGVTcGVjID0gKHNwZWM6IFJvdXRlU3BlYykgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZVJvdXRlRXhwb3J0ID0gKHVzZXJEZWZpbmVkUm91dGVGbikgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlcXVlc3RIYW5kbGVyID0gYXN5bmMgKFxuICAgICAgICByZXE6IE5leHRBcGlSZXF1ZXN0LFxuICAgICAgICByZXM6IE5leHRBcGlSZXNwb25zZVxuICAgICAgKSA9PiB7XG4gICAgICAgIGF1dGhNaWRkbGV3YXJlTWFwW1wibm9uZVwiXSA9IChuZXh0KSA9PiBuZXh0XG5cbiAgICAgICAgY29uc3QgYXV0aF9taWRkbGV3YXJlID0gYXV0aE1pZGRsZXdhcmVNYXBbc3BlYy5hdXRoXVxuICAgICAgICBpZiAoIWF1dGhfbWlkZGxld2FyZSkgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGF1dGggdHlwZTogJHtzcGVjLmF1dGh9YClcblxuICAgICAgICByZXR1cm4gd3JhcHBlcnMoXG4gICAgICAgICAgLi4uKChleGNlcHRpb25IYW5kbGluZ01pZGRsZXdhcmVcbiAgICAgICAgICAgID8gW2V4Y2VwdGlvbkhhbmRsaW5nTWlkZGxld2FyZV1cbiAgICAgICAgICAgIDogW10pIGFzIFthbnldKSxcbiAgICAgICAgICAuLi4oKGdsb2JhbE1pZGRsZXdhcmVzIHx8IFtdKSBhcyBbXSksXG4gICAgICAgICAgYXV0aF9taWRkbGV3YXJlLFxuICAgICAgICAgIC4uLigoc3BlYy5taWRkbGV3YXJlcyB8fCBbXSkgYXMgW10pLFxuICAgICAgICAgIHdpdGhNZXRob2RzKHNwZWMubWV0aG9kcyksXG4gICAgICAgICAgd2l0aFZhbGlkYXRpb24oe1xuICAgICAgICAgICAganNvbkJvZHk6IHNwZWMuanNvbkJvZHksXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogc3BlYy5xdWVyeVBhcmFtcyxcbiAgICAgICAgICAgIGNvbW1vblBhcmFtczogc3BlYy5jb21tb25QYXJhbXMsXG4gICAgICAgICAgICBmb3JtRGF0YTogc3BlYy5mb3JtRGF0YSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB1c2VyRGVmaW5lZFJvdXRlRm5cbiAgICAgICAgKShyZXEgYXMgYW55LCByZXMpXG4gICAgICB9XG5cbiAgICAgIHJvb3RSZXF1ZXN0SGFuZGxlci5fc2V0dXBQYXJhbXMgPSBzZXR1cFBhcmFtc1xuICAgICAgcm9vdFJlcXVlc3RIYW5kbGVyLl9yb3V0ZVNwZWMgPSBzcGVjXG5cbiAgICAgIHJldHVybiByb290UmVxdWVzdEhhbmRsZXJcbiAgICB9XG5cbiAgICBjcmVhdGVSb3V0ZUV4cG9ydC5fc2V0dXBQYXJhbXMgPSBzZXR1cFBhcmFtc1xuICAgIGNyZWF0ZVJvdXRlRXhwb3J0Ll9yb3V0ZVNwZWMgPSBzcGVjXG5cbiAgICByZXR1cm4gY3JlYXRlUm91dGVFeHBvcnRcbiAgfVxuXG4gIHdpdGhSb3V0ZVNwZWMuX3NldHVwUGFyYW1zID0gc2V0dXBQYXJhbXNcblxuICByZXR1cm4gd2l0aFJvdXRlU3BlY1xufSkgYXMgYW55XG4iLCAiaW1wb3J0IHsgTWV0aG9kTm90QWxsb3dlZEV4Y2VwdGlvbiB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuXG5leHBvcnQgdHlwZSBIVFRQTWV0aG9kcyA9XG4gIHwgXCJHRVRcIlxuICB8IFwiUE9TVFwiXG4gIHwgXCJERUxFVEVcIlxuICB8IFwiUFVUXCJcbiAgfCBcIlBBVENIXCJcbiAgfCBcIkhFQURcIlxuICB8IFwiT1BUSU9OU1wiXG5cbmV4cG9ydCBjb25zdCB3aXRoTWV0aG9kcyA9IChtZXRob2RzOiBIVFRQTWV0aG9kc1tdKSA9PiAobmV4dCkgPT4gKHJlcSwgcmVzKSA9PiB7XG4gIGlmICghbWV0aG9kcy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RBbGxvd2VkRXhjZXB0aW9uKHtcbiAgICAgIHR5cGU6IFwibWV0aG9kX25vdF9hbGxvd2VkXCIsXG4gICAgICBtZXNzYWdlOiBgb25seSAke21ldGhvZHMuam9pbihcIixcIil9IGFjY2VwdGVkYCxcbiAgICB9KVxuICB9XG4gIHJldHVybiBuZXh0KHJlcSwgcmVzKVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoTWV0aG9kc1xuIiwgImltcG9ydCB0eXBlIHsgTmV4dEFwaVJlcXVlc3QsIE5leHRBcGlSZXNwb25zZSB9IGZyb20gXCJuZXh0XCJcbmltcG9ydCB7IHosIFpvZEZpcnN0UGFydHlUeXBlS2luZCB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCJsb2Rhc2hcIlxuXG5jb25zdCBnZXRab2RPYmplY3RTY2hlbWFGcm9tWm9kRWZmZWN0U2NoZW1hID0gKFxuICBpc1pvZEVmZmVjdDogYm9vbGVhbixcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnlcbik6IHouWm9kVHlwZUFueSB8IHouWm9kT2JqZWN0PGFueT4gPT4ge1xuICBpZiAoIWlzWm9kRWZmZWN0KSB7XG4gICAgcmV0dXJuIHNjaGVtYSBhcyB6LlpvZE9iamVjdDxhbnk+XG4gIH1cblxuICBsZXQgY3VycmVudFNjaGVtYSA9IHNjaGVtYVxuXG4gIHdoaWxlIChjdXJyZW50U2NoZW1hIGluc3RhbmNlb2Ygei5ab2RFZmZlY3RzKSB7XG4gICAgY3VycmVudFNjaGVtYSA9IGN1cnJlbnRTY2hlbWEuX2RlZi5zY2hlbWFcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50U2NoZW1hIGFzIHouWm9kT2JqZWN0PGFueT5cbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSBjb3JyZWN0IHNjaGVtYSBmcm9tIGEgWm9kRWZmZWN0IHwgWm9kRGVmYXVsdCB8IFpvZE9wdGlvbmFsIHNjaGVtYS5cbiAqIFRPRE86IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGhhbmRsZSBhbGwgc3BlY2lhbCBjYXNlcyBvZiBab2RTY2hlbWEgYW5kIG5vdCBqdXN0IFpvZEVmZmVjdCB8IFpvZERlZmF1bHQgfCBab2RPcHRpb25hbFxuICovXG5jb25zdCBnZXRab2REZWZGcm9tWm9kU2NoZW1hSGVscGVycyA9IChzY2hlbWE6IHouWm9kVHlwZUFueSkgPT4ge1xuICBjb25zdCB1bnNhZmVfZGVmX21heWJlX29wdGlvbmFsX21heWJlX2RlZmF1bHRfbWF5YmVfem9kX2VmZmVjdCA9IChcbiAgICBzY2hlbWEgYXMgei5ab2RUeXBlQW55XG4gICkuX2RlZlxuICBjb25zdCB1bnNhZmVfZGVmX21heWJlX2RlZmF1bHRfbWF5YmVfem9kX2VmZmVjdCA9XG4gICAgdW5zYWZlX2RlZl9tYXliZV9vcHRpb25hbF9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3QudHlwZU5hbWUgPT09XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9wdGlvbmFsXG4gICAgICA/IHVuc2FmZV9kZWZfbWF5YmVfb3B0aW9uYWxfbWF5YmVfZGVmYXVsdF9tYXliZV96b2RfZWZmZWN0LmlubmVyVHlwZS5fZGVmXG4gICAgICA6IHVuc2FmZV9kZWZfbWF5YmVfb3B0aW9uYWxfbWF5YmVfZGVmYXVsdF9tYXliZV96b2RfZWZmZWN0XG4gIGNvbnN0IHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdCA9XG4gICAgdW5zYWZlX2RlZl9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3QudHlwZU5hbWUgPT09XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHRcbiAgICAgID8gdW5zYWZlX2RlZl9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3QuaW5uZXJUeXBlLl9kZWZcbiAgICAgIDogdW5zYWZlX2RlZl9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3RcbiAgcmV0dXJuIHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdC50eXBlTmFtZSA9PT1cbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0c1xuICAgID8gdW5zYWZlX2RlZl9tYXliZV96b2RfZWZmZWN0LnNjaGVtYS5fZGVmXG4gICAgOiB1bnNhZmVfZGVmX21heWJlX3pvZF9lZmZlY3Rcbn1cblxuY29uc3QgcGFyc2VRdWVyeVBhcmFtcyA9IChcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnksXG4gIGlucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKSA9PiB7XG4gIGNvbnN0IHBhcnNlZF9pbnB1dCA9IE9iamVjdC5hc3NpZ24oe30sIGlucHV0KVxuICBjb25zdCBpc1pvZEVmZmVjdCA9IHNjaGVtYS5fZGVmLnR5cGVOYW1lID09PSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0c1xuICBjb25zdCBzYWZlX3NjaGVtYSA9IGdldFpvZE9iamVjdFNjaGVtYUZyb21ab2RFZmZlY3RTY2hlbWEoaXNab2RFZmZlY3QsIHNjaGVtYSlcbiAgY29uc3QgaXNab2RPYmplY3QgPVxuICAgIHNhZmVfc2NoZW1hLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3RcblxuICBpZiAoaXNab2RPYmplY3QpIHtcbiAgICBjb25zdCBvYmpfc2NoZW1hID0gc2FmZV9zY2hlbWEgYXMgei5ab2RPYmplY3Q8YW55PlxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqX3NjaGVtYS5zaGFwZSkpIHtcbiAgICAgIGNvbnN0IGRlZiA9IGdldFpvZERlZkZyb21ab2RTY2hlbWFIZWxwZXJzKHZhbHVlIGFzIHouWm9kVHlwZUFueSlcbiAgICAgIGNvbnN0IGlzQXJyYXkgPSBkZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RBcnJheVxuICAgICAgaWYgKGlzQXJyYXkpIHtcbiAgICAgICAgY29uc3QgYXJyYXlfaW5wdXQgPSBpbnB1dFtrZXldXG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcnJheV9pbnB1dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHBhcnNlZF9pbnB1dFtrZXldID0gYXJyYXlfaW5wdXQuc3BsaXQoXCIsXCIpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dFtgJHtrZXl9W11gXSkpIHtcbiAgICAgICAgICBwYXJzZWRfaW5wdXRba2V5XSA9IGlucHV0W2Ake2tleX1bXWBdXG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0Jvb2xlYW4gPSBkZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuXG4gICAgICBpZiAoaXNCb29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5faW5wdXQgPSBpbnB1dFtrZXldXG5cbiAgICAgICAgaWYgKHR5cGVvZiBib29sZWFuX2lucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcGFyc2VkX2lucHV0W2tleV0gPSBib29sZWFuX2lucHV0ID09PSBcInRydWVcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYS5wYXJzZShwYXJzZWRfaW5wdXQpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdElucHV0PFxuICBKc29uQm9keSBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gIENvbW1vblBhcmFtcyBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgRm9ybURhdGEgZXh0ZW5kcyB6LlpvZFR5cGVBbnlcbj4ge1xuICBqc29uQm9keT86IEpzb25Cb2R5XG4gIHF1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXNcbiAgY29tbW9uUGFyYW1zPzogQ29tbW9uUGFyYW1zXG4gIGZvcm1EYXRhPzogRm9ybURhdGFcbn1cblxuY29uc3Qgem9kSXNzdWVUb1N0cmluZyA9IChpc3N1ZTogei5ab2RJc3N1ZSkgPT4ge1xuICBpZiAoaXNzdWUucGF0aC5qb2luKFwiLlwiKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlXG4gIH1cbiAgaWYgKGlzc3VlLm1lc3NhZ2UgPT09IFwiUmVxdWlyZWRcIikge1xuICAgIHJldHVybiBgJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfSBpcyByZXF1aXJlZGBcbiAgfVxuICByZXR1cm4gYCR7aXNzdWUubWVzc2FnZX0gZm9yIFwiJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfVwiYFxufVxuXG5leHBvcnQgY29uc3Qgd2l0aFZhbGlkYXRpb24gPVxuICA8XG4gICAgSnNvbkJvZHkgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgQ29tbW9uUGFyYW1zIGV4dGVuZHMgei5ab2RUeXBlQW55LFxuICAgIEZvcm1EYXRhIGV4dGVuZHMgei5ab2RUeXBlQW55XG4gID4oXG4gICAgaW5wdXQ6IFJlcXVlc3RJbnB1dDxKc29uQm9keSwgUXVlcnlQYXJhbXMsIENvbW1vblBhcmFtcywgRm9ybURhdGE+XG4gICkgPT5cbiAgKG5leHQpID0+XG4gIGFzeW5jIChyZXE6IE5leHRBcGlSZXF1ZXN0LCByZXM6IE5leHRBcGlSZXNwb25zZSkgPT4ge1xuICAgIGlmIChcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5qc29uQm9keSkgfHxcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5jb21tb25QYXJhbXMpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGZvcm1EYXRhIHdpdGgganNvbkJvZHkgb3IgY29tbW9uUGFyYW1zXCIpXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHJlcS5tZXRob2QgPT09IFwiUE9TVFwiIHx8IHJlcS5tZXRob2QgPT09IFwiUEFUQ0hcIikgJiZcbiAgICAgIChpbnB1dC5qc29uQm9keSB8fCBpbnB1dC5jb21tb25QYXJhbXMpICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSAmJlxuICAgICAgIWlzRW1wdHkocmVxLmJvZHkpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbih7XG4gICAgICAgIHR5cGU6IFwiaW52YWxpZF9jb250ZW50X3R5cGVcIixcbiAgICAgICAgbWVzc2FnZTogYCR7cmVxLm1ldGhvZH0gcmVxdWVzdHMgbXVzdCBoYXZlIENvbnRlbnQtVHlwZSBoZWFkZXIgd2l0aCBcImFwcGxpY2F0aW9uL2pzb25cImAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlucHV0LmZvcm1EYXRhICYmXG4gICAgICByZXEubWV0aG9kICE9PSBcIkdFVFwiICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFxuICAgICAgICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICApXG4gICAgICAvLyBUT0RPIGV2ZW50dWFsbHkgd2Ugc2hvdWxkIHN1cHBvcnQgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oe1xuICAgICAgICB0eXBlOiBcImludmFsaWRfY29udGVudF90eXBlXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBNdXN0IGhhdmUgQ29udGVudC1UeXBlIGhlYWRlciB3aXRoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJgLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxfY29tYmluZWRfcGFyYW1zID0geyAuLi5yZXEucXVlcnksIC4uLnJlcS5ib2R5IH1cbiAgICAgIHJlcS5ib2R5ID1cbiAgICAgICAgaW5wdXQuZm9ybURhdGEgJiYgcmVxLm1ldGhvZCAhPT0gXCJHRVRcIlxuICAgICAgICAgID8gaW5wdXQuZm9ybURhdGE/LnBhcnNlKHJlcS5ib2R5KVxuICAgICAgICAgIDogaW5wdXQuanNvbkJvZHk/LnBhcnNlKHJlcS5ib2R5KVxuXG4gICAgICBpZiAoaW5wdXQucXVlcnlQYXJhbXMpIHtcbiAgICAgICAgcmVxLnF1ZXJ5ID0gcGFyc2VRdWVyeVBhcmFtcyhpbnB1dC5xdWVyeVBhcmFtcywgcmVxLnF1ZXJ5KVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5wdXQuY29tbW9uUGFyYW1zKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhcyBjb21tb25QYXJhbXMgaW5jbHVkZXMgcXVlcnkgcGFyYW1zLCB3ZSBjYW4gdXNlIHRoZSBwYXJzZVF1ZXJ5UGFyYW1zIGZ1bmN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICA7KHJlcSBhcyBhbnkpLmNvbW1vblBhcmFtcyA9IHBhcnNlUXVlcnlQYXJhbXMoXG4gICAgICAgICAgaW5wdXQuY29tbW9uUGFyYW1zLFxuICAgICAgICAgIG9yaWdpbmFsX2NvbWJpbmVkX3BhcmFtc1xuICAgICAgICApXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLm5hbWUgPT09IFwiWm9kRXJyb3JcIikge1xuICAgICAgICBsZXQgbWVzc2FnZVxuICAgICAgICBpZiAoZXJyb3IuaXNzdWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IGlzc3VlID0gZXJyb3IuaXNzdWVzWzBdXG4gICAgICAgICAgbWVzc2FnZSA9IHpvZElzc3VlVG9TdHJpbmcoaXNzdWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZV9jb21wb25lbnRzOiBzdHJpbmdbXSA9IFtdXG4gICAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VfY29tcG9uZW50cy5wdXNoKHpvZElzc3VlVG9TdHJpbmcoaXNzdWUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICBtZXNzYWdlID1cbiAgICAgICAgICAgIGAke2Vycm9yLmlzc3Vlcy5sZW5ndGh9IElucHV0IEVycm9yczogYCArXG4gICAgICAgICAgICBtZXNzYWdlX2NvbXBvbmVudHMuam9pbihcIiwgXCIpXG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbih7XG4gICAgICAgICAgdHlwZTogXCJpbnZhbGlkX2lucHV0XCIsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICB2YWxpZGF0aW9uX2Vycm9yczogZXJyb3IuZm9ybWF0KCksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKHtcbiAgICAgICAgdHlwZTogXCJpbnZhbGlkX2lucHV0XCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiRXJyb3Igd2hpbGUgcGFyc2luZyBpbnB1dFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChyZXEsIHJlcylcbiAgfVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoVmFsaWRhdGlvblxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQSwwQ0FBc0M7QUFDdEMsd0NBQXFDOzs7QUNGckMseUNBQTBDO0FBV25DLElBQU0sY0FBYyxDQUFDLFlBQTJCLENBQUMsU0FBUyxDQUFDLEtBQUssUUFBUTtBQUM3RSxNQUFJLENBQUMsUUFBUSxTQUFTLElBQUksTUFBTSxHQUFHO0FBQ2pDLFVBQU0sSUFBSSw2REFBMEI7QUFBQSxNQUNsQyxNQUFNO0FBQUEsTUFDTixTQUFTLFFBQVEsUUFBUSxLQUFLLEdBQUc7QUFBQSxJQUNuQyxDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU8sS0FBSyxLQUFLLEdBQUc7QUFDdEI7QUFFQSxJQUFPLHVCQUFROzs7QUNwQmYsaUJBQXlDO0FBQ3pDLDBDQUFvQztBQUNwQyxvQkFBd0I7QUFFeEIsSUFBTSx3Q0FBd0MsQ0FDNUMsYUFDQSxXQUNvQztBQUNwQyxNQUFJLENBQUMsYUFBYTtBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksZ0JBQWdCO0FBRXBCLFNBQU8seUJBQXlCLGFBQUUsWUFBWTtBQUM1QyxvQkFBZ0IsY0FBYyxLQUFLO0FBQUEsRUFDckM7QUFFQSxTQUFPO0FBQ1Q7QUFNQSxJQUFNLGdDQUFnQyxDQUFDLFdBQXlCO0FBQzlELFFBQU0sMkRBQ0osT0FDQTtBQUNGLFFBQU0sNENBQ0oseURBQXlELGFBQ3pELGlDQUFzQixjQUNsQix5REFBeUQsVUFBVSxPQUNuRTtBQUNOLFFBQU0sOEJBQ0osMENBQTBDLGFBQzFDLGlDQUFzQixhQUNsQiwwQ0FBMEMsVUFBVSxPQUNwRDtBQUNOLFNBQU8sNEJBQTRCLGFBQ2pDLGlDQUFzQixhQUNwQiw0QkFBNEIsT0FBTyxPQUNuQztBQUNOO0FBRUEsSUFBTSxtQkFBbUIsQ0FDdkIsUUFDQSxVQUNHO0FBQ0gsUUFBTSxlQUFlLE9BQU8sT0FBTyxDQUFDLEdBQUcsS0FBSztBQUM1QyxRQUFNLGNBQWMsT0FBTyxLQUFLLGFBQWEsaUNBQXNCO0FBQ25FLFFBQU0sY0FBYyxzQ0FBc0MsYUFBYSxNQUFNO0FBQzdFLFFBQU0sY0FDSixZQUFZLEtBQUssYUFBYSxpQ0FBc0I7QUFFdEQsTUFBSSxhQUFhO0FBQ2YsVUFBTSxhQUFhO0FBRW5CLGVBQVcsQ0FBQyxLQUFLLFVBQVUsT0FBTyxRQUFRLFdBQVcsS0FBSyxHQUFHO0FBQzNELFlBQU0sTUFBTSw4QkFBOEIsS0FBcUI7QUFDL0QsWUFBTSxVQUFVLElBQUksYUFBYSxpQ0FBc0I7QUFDdkQsVUFBSSxTQUFTO0FBQ1gsY0FBTSxjQUFjLE1BQU07QUFFMUIsWUFBSSxPQUFPLGdCQUFnQixVQUFVO0FBQ25DLHVCQUFhLE9BQU8sWUFBWSxNQUFNLEdBQUc7QUFBQSxRQUMzQztBQUVBLFlBQUksTUFBTSxRQUFRLE1BQU0sR0FBRyxRQUFRLEdBQUc7QUFDcEMsdUJBQWEsT0FBTyxNQUFNLEdBQUc7QUFBQSxRQUMvQjtBQUVBO0FBQUEsTUFDRjtBQUVBLFlBQU0sWUFBWSxJQUFJLGFBQWEsaUNBQXNCO0FBQ3pELFVBQUksV0FBVztBQUNiLGNBQU0sZ0JBQWdCLE1BQU07QUFFNUIsWUFBSSxPQUFPLGtCQUFrQixVQUFVO0FBQ3JDLHVCQUFhLE9BQU8sa0JBQWtCO0FBQUEsUUFDeEM7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLE9BQU8sTUFBTSxZQUFZO0FBQ2xDO0FBY0EsSUFBTSxtQkFBbUIsQ0FBQyxVQUFzQjtBQUM5QyxNQUFJLE1BQU0sS0FBSyxLQUFLLEdBQUcsTUFBTSxJQUFJO0FBQy9CLFdBQU8sTUFBTTtBQUFBLEVBQ2Y7QUFDQSxNQUFJLE1BQU0sWUFBWSxZQUFZO0FBQ2hDLFdBQU8sR0FBRyxNQUFNLEtBQUssS0FBSyxHQUFHO0FBQUEsRUFDL0I7QUFDQSxTQUFPLEdBQUcsTUFBTSxnQkFBZ0IsTUFBTSxLQUFLLEtBQUssR0FBRztBQUNyRDtBQUVPLElBQU0saUJBQ1gsQ0FNRSxVQUVGLENBQUMsU0FDRCxPQUFPLEtBQXFCLFFBQXlCO0FBMUh2RDtBQTJISSxNQUNHLE1BQU0sWUFBWSxNQUFNLFlBQ3hCLE1BQU0sWUFBWSxNQUFNLGNBQ3pCO0FBQ0EsVUFBTSxJQUFJLE1BQU0sbURBQW1EO0FBQUEsRUFDckU7QUFFQSxNQUNHLEtBQUksV0FBVyxVQUFVLElBQUksV0FBVyxZQUN4QyxPQUFNLFlBQVksTUFBTSxpQkFDekIsQ0FBQyxXQUFJLFFBQVEsb0JBQVosbUJBQTZCLFNBQVMsd0JBQ3ZDLENBQUMsMkJBQVEsSUFBSSxJQUFJLEdBQ2pCO0FBQ0EsVUFBTSxJQUFJLHdEQUFvQjtBQUFBLE1BQzVCLE1BQU07QUFBQSxNQUNOLFNBQVMsR0FBRyxJQUFJO0FBQUEsSUFDbEIsQ0FBQztBQUFBLEVBQ0g7QUFFQSxNQUNFLE1BQU0sWUFDTixJQUFJLFdBQVcsU0FDZixDQUFDLFdBQUksUUFBUSxvQkFBWixtQkFBNkIsU0FDNUIsdUNBR0Y7QUFDQSxVQUFNLElBQUksd0RBQW9CO0FBQUEsTUFDNUIsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLElBQ1gsQ0FBQztBQUFBLEVBQ0g7QUFFQSxNQUFJO0FBQ0YsVUFBTSwyQkFBMkIsRUFBRSxHQUFHLElBQUksT0FBTyxHQUFHLElBQUksS0FBSztBQUM3RCxRQUFJLE9BQ0YsTUFBTSxZQUFZLElBQUksV0FBVyxRQUM3QixZQUFNLGFBQU4sbUJBQWdCLE1BQU0sSUFBSSxRQUMxQixZQUFNLGFBQU4sbUJBQWdCLE1BQU0sSUFBSTtBQUVoQyxRQUFJLE1BQU0sYUFBYTtBQUNyQixVQUFJLFFBQVEsaUJBQWlCLE1BQU0sYUFBYSxJQUFJLEtBQUs7QUFBQSxJQUMzRDtBQUVBLFFBQUksTUFBTSxjQUFjO0FBSXRCO0FBQUMsTUFBQyxJQUFZLGVBQWUsaUJBQzNCLE1BQU0sY0FDTix3QkFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLFNBQVMsT0FBUDtBQUNBLFFBQUksTUFBTSxTQUFTLFlBQVk7QUFDN0IsVUFBSTtBQUNKLFVBQUksTUFBTSxPQUFPLFdBQVcsR0FBRztBQUM3QixjQUFNLFFBQVEsTUFBTSxPQUFPO0FBQzNCLGtCQUFVLGlCQUFpQixLQUFLO0FBQUEsTUFDbEMsT0FBTztBQUNMLGNBQU0scUJBQStCLENBQUM7QUFDdEMsbUJBQVcsU0FBUyxNQUFNLFFBQVE7QUFDaEMsNkJBQW1CLEtBQUssaUJBQWlCLEtBQUssQ0FBQztBQUFBLFFBQ2pEO0FBQ0Esa0JBQ0UsR0FBRyxNQUFNLE9BQU8sMEJBQ2hCLG1CQUFtQixLQUFLLElBQUk7QUFBQSxNQUNoQztBQUVBLFlBQU0sSUFBSSx3REFBb0I7QUFBQSxRQUM1QixNQUFNO0FBQUEsUUFDTjtBQUFBLFFBQ0EsbUJBQW1CLE1BQU0sT0FBTztBQUFBLE1BQ2xDLENBQUM7QUFBQSxJQUNIO0FBRUEsVUFBTSxJQUFJLHdEQUFvQjtBQUFBLE1BQzVCLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxJQUNYLENBQUM7QUFBQSxFQUNIO0FBRUEsU0FBTyxLQUFLLEtBQUssR0FBRztBQUN0QjtBQUVGLElBQU8sMEJBQVE7OztBRnRNUixJQUFNLGlCQUFpQixDQTZCNUIsU0FHVTtBQUVMLElBQU0sc0JBQW9ELENBQy9ELGdCQUNHO0FBQ0gsUUFBTTtBQUFBLElBQ0osb0JBQW9CLENBQUM7QUFBQSxJQUNyQixvQkFBb0IsQ0FBQztBQUFBLElBQ3JCLDhCQUE4QiwrREFBc0I7QUFBQSxNQUNsRCxhQUFhLFlBQVk7QUFBQSxNQUN6QiwwQkFBMEI7QUFBQSxRQUN4QixpQkFBaUIsQ0FBQyxLQUFLLFVBQVU7QUFDL0IsY0FBSSxRQUFRLElBQUksYUFBYSxjQUFjO0FBQ3pDLG1CQUFPLENBQUM7QUFBQSxVQUNWO0FBRUEsaUJBQU87QUFBQSxRQUNUO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUFBLE1BQ0M7QUFFSixRQUFNLGdCQUFnQixDQUFDLFNBQW9CO0FBQ3pDLFVBQU0sb0JBQW9CLENBQUMsdUJBQXVCO0FBQ2hELFlBQU0scUJBQXFCLE9BQ3pCLEtBQ0EsUUFDRztBQUNILDBCQUFrQixVQUFVLENBQUMsU0FBUztBQUV0QyxjQUFNLGtCQUFrQixrQkFBa0IsS0FBSztBQUMvQyxZQUFJLENBQUM7QUFBaUIsZ0JBQU0sSUFBSSxNQUFNLHNCQUFzQixLQUFLLE1BQU07QUFFdkUsZUFBTywrQ0FDTCxHQUFLLDhCQUNELENBQUMsMkJBQTJCLElBQzVCLENBQUMsR0FDTCxHQUFLLHFCQUFxQixDQUFDLEdBQzNCLGlCQUNBLEdBQUssS0FBSyxlQUFlLENBQUMsR0FDMUIscUJBQVksS0FBSyxPQUFPLEdBQ3hCLHdCQUFlO0FBQUEsVUFDYixVQUFVLEtBQUs7QUFBQSxVQUNmLGFBQWEsS0FBSztBQUFBLFVBQ2xCLGNBQWMsS0FBSztBQUFBLFVBQ25CLFVBQVUsS0FBSztBQUFBLFFBQ2pCLENBQUMsR0FDRCxrQkFDRixFQUFFLEtBQVksR0FBRztBQUFBLE1BQ25CO0FBRUEseUJBQW1CLGVBQWU7QUFDbEMseUJBQW1CLGFBQWE7QUFFaEMsYUFBTztBQUFBLElBQ1Q7QUFFQSxzQkFBa0IsZUFBZTtBQUNqQyxzQkFBa0IsYUFBYTtBQUUvQixXQUFPO0FBQUEsRUFDVDtBQUVBLGdCQUFjLGVBQWU7QUFFN0IsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -37,13 +37,13 @@ var getZodObjectSchemaFromZodEffectSchema = (isZodEffect, schema) => {
37
37
  }
38
38
  return currentSchema;
39
39
  };
40
- var isSchemaArrayc = (schema) => {
41
- const unsafe_def_maybe_optional_maybe_zod_effect = schema._def;
42
- const unsafe_def_maybe_zod_effect = unsafe_def_maybe_optional_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodOptional ? unsafe_def_maybe_optional_maybe_zod_effect.innerType._def : unsafe_def_maybe_optional_maybe_zod_effect;
43
- const safe_def = unsafe_def_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodEffects ? unsafe_def_maybe_zod_effect.schema._def : unsafe_def_maybe_zod_effect;
44
- return safe_def.typeName === import_zod.ZodFirstPartyTypeKind.ZodArray;
40
+ var getZodDefFromZodSchemaHelpers = (schema) => {
41
+ const unsafe_def_maybe_optional_maybe_default_maybe_zod_effect = schema._def;
42
+ const unsafe_def_maybe_default_maybe_zod_effect = unsafe_def_maybe_optional_maybe_default_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodOptional ? unsafe_def_maybe_optional_maybe_default_maybe_zod_effect.innerType._def : unsafe_def_maybe_optional_maybe_default_maybe_zod_effect;
43
+ const unsafe_def_maybe_zod_effect = unsafe_def_maybe_default_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodDefault ? unsafe_def_maybe_default_maybe_zod_effect.innerType._def : unsafe_def_maybe_default_maybe_zod_effect;
44
+ return unsafe_def_maybe_zod_effect.typeName === import_zod.ZodFirstPartyTypeKind.ZodEffects ? unsafe_def_maybe_zod_effect.schema._def : unsafe_def_maybe_zod_effect;
45
45
  };
46
- var parseCommaSeparateArrays = (schema, input) => {
46
+ var parseQueryParams = (schema, input) => {
47
47
  const parsed_input = Object.assign({}, input);
48
48
  const isZodEffect = schema._def.typeName === import_zod.ZodFirstPartyTypeKind.ZodEffects;
49
49
  const safe_schema = getZodObjectSchemaFromZodEffectSchema(isZodEffect, schema);
@@ -51,7 +51,9 @@ var parseCommaSeparateArrays = (schema, input) => {
51
51
  if (isZodObject) {
52
52
  const obj_schema = safe_schema;
53
53
  for (const [key, value] of Object.entries(obj_schema.shape)) {
54
- if (isSchemaArrayc(value)) {
54
+ const def = getZodDefFromZodSchemaHelpers(value);
55
+ const isArray = def.typeName === import_zod.ZodFirstPartyTypeKind.ZodArray;
56
+ if (isArray) {
55
57
  const array_input = input[key];
56
58
  if (typeof array_input === "string") {
57
59
  parsed_input[key] = array_input.split(",");
@@ -59,6 +61,14 @@ var parseCommaSeparateArrays = (schema, input) => {
59
61
  if (Array.isArray(input[`${key}[]`])) {
60
62
  parsed_input[key] = input[`${key}[]`];
61
63
  }
64
+ continue;
65
+ }
66
+ const isBoolean = def.typeName === import_zod.ZodFirstPartyTypeKind.ZodBoolean;
67
+ if (isBoolean) {
68
+ const boolean_input = input[key];
69
+ if (typeof boolean_input === "string") {
70
+ parsed_input[key] = boolean_input === "true";
71
+ }
62
72
  }
63
73
  }
64
74
  }
@@ -74,7 +84,7 @@ var zodIssueToString = (issue) => {
74
84
  return `${issue.message} for "${issue.path.join(".")}"`;
75
85
  };
76
86
  var withValidation = (input) => (next) => async (req, res) => {
77
- var _a, _b, _c, _d, _e;
87
+ var _a, _b, _c, _d;
78
88
  if (input.formData && input.jsonBody || input.formData && input.commonParams) {
79
89
  throw new Error("Cannot use formData with jsonBody or commonParams");
80
90
  }
@@ -93,10 +103,12 @@ var withValidation = (input) => (next) => async (req, res) => {
93
103
  try {
94
104
  const original_combined_params = { ...req.query, ...req.body };
95
105
  req.body = input.formData && req.method !== "GET" ? (_c = input.formData) == null ? void 0 : _c.parse(req.body) : (_d = input.jsonBody) == null ? void 0 : _d.parse(req.body);
96
- req.query = (_e = input.queryParams) == null ? void 0 : _e.parse(req.query);
106
+ if (input.queryParams) {
107
+ req.query = parseQueryParams(input.queryParams, req.query);
108
+ }
97
109
  if (input.commonParams) {
98
110
  ;
99
- req.commonParams = parseCommaSeparateArrays(input.commonParams, original_combined_params);
111
+ req.commonParams = parseQueryParams(input.commonParams, original_combined_params);
100
112
  }
101
113
  } catch (error) {
102
114
  if (error.name === "ZodError") {
@@ -129,4 +141,4 @@ var with_validation_default = withValidation;
129
141
  0 && (module.exports = {
130
142
  withValidation
131
143
  });
132
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3dpdGgtcm91dGUtc3BlYy9taWRkbGV3YXJlcy93aXRoLXZhbGlkYXRpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgTmV4dEFwaVJlcXVlc3QsIE5leHRBcGlSZXNwb25zZSB9IGZyb20gXCJuZXh0XCJcbmltcG9ydCB7IHosIFpvZEZpcnN0UGFydHlUeXBlS2luZCB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCJsb2Rhc2hcIlxuXG5jb25zdCBnZXRab2RPYmplY3RTY2hlbWFGcm9tWm9kRWZmZWN0U2NoZW1hID0gKFxuICBpc1pvZEVmZmVjdDogYm9vbGVhbixcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnlcbik6IHouWm9kVHlwZUFueSB8IHouWm9kT2JqZWN0PGFueT4gPT4ge1xuICBpZiAoIWlzWm9kRWZmZWN0KSB7XG4gICAgcmV0dXJuIHNjaGVtYSBhcyB6LlpvZE9iamVjdDxhbnk+XG4gIH1cblxuICBsZXQgY3VycmVudFNjaGVtYSA9IHNjaGVtYVxuXG4gIHdoaWxlIChjdXJyZW50U2NoZW1hIGluc3RhbmNlb2Ygei5ab2RFZmZlY3RzKSB7XG4gICAgY3VycmVudFNjaGVtYSA9IGN1cnJlbnRTY2hlbWEuX2RlZi5zY2hlbWFcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50U2NoZW1hIGFzIHouWm9kT2JqZWN0PGFueT5cbn1cblxuY29uc3QgaXNTY2hlbWFBcnJheWMgPSAoc2NoZW1hOiB6LlpvZFR5cGVBbnkpID0+IHtcbiAgY29uc3QgdW5zYWZlX2RlZl9tYXliZV9vcHRpb25hbF9tYXliZV96b2RfZWZmZWN0ID0gKHNjaGVtYSBhcyB6LlpvZFR5cGVBbnkpXG4gICAgLl9kZWZcbiAgY29uc3QgdW5zYWZlX2RlZl9tYXliZV96b2RfZWZmZWN0ID1cbiAgICB1bnNhZmVfZGVmX21heWJlX29wdGlvbmFsX21heWJlX3pvZF9lZmZlY3QudHlwZU5hbWUgPT09XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9wdGlvbmFsXG4gICAgICA/IHVuc2FmZV9kZWZfbWF5YmVfb3B0aW9uYWxfbWF5YmVfem9kX2VmZmVjdC5pbm5lclR5cGUuX2RlZlxuICAgICAgOiB1bnNhZmVfZGVmX21heWJlX29wdGlvbmFsX21heWJlX3pvZF9lZmZlY3RcbiAgY29uc3Qgc2FmZV9kZWYgPVxuICAgIHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdC50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHNcbiAgICAgID8gdW5zYWZlX2RlZl9tYXliZV96b2RfZWZmZWN0LnNjaGVtYS5fZGVmXG4gICAgICA6IHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdFxuXG4gIHJldHVybiBzYWZlX2RlZi50eXBlTmFtZSA9PT0gWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5XG59XG5cbmNvbnN0IHBhcnNlQ29tbWFTZXBhcmF0ZUFycmF5cyA9IChcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnksXG4gIGlucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKSA9PiB7XG4gIGNvbnN0IHBhcnNlZF9pbnB1dCA9IE9iamVjdC5hc3NpZ24oe30sIGlucHV0KVxuICBjb25zdCBpc1pvZEVmZmVjdCA9IHNjaGVtYS5fZGVmLnR5cGVOYW1lID09PSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0c1xuICBjb25zdCBzYWZlX3NjaGVtYSA9IGdldFpvZE9iamVjdFNjaGVtYUZyb21ab2RFZmZlY3RTY2hlbWEoaXNab2RFZmZlY3QsIHNjaGVtYSlcbiAgY29uc3QgaXNab2RPYmplY3QgPVxuICAgIHNhZmVfc2NoZW1hLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3RcblxuICBpZiAoaXNab2RPYmplY3QpIHtcbiAgICBjb25zdCBvYmpfc2NoZW1hID0gc2FmZV9zY2hlbWEgYXMgei5ab2RPYmplY3Q8YW55PlxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqX3NjaGVtYS5zaGFwZSkpIHtcbiAgICAgIGlmIChpc1NjaGVtYUFycmF5Yyh2YWx1ZSBhcyB6LlpvZFR5cGVBbnkpKSB7XG4gICAgICAgIGNvbnN0IGFycmF5X2lucHV0ID0gaW5wdXRba2V5XVxuXG4gICAgICAgIGlmICh0eXBlb2YgYXJyYXlfaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBwYXJzZWRfaW5wdXRba2V5XSA9IGFycmF5X2lucHV0LnNwbGl0KFwiLFwiKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXRbYCR7a2V5fVtdYF0pKSB7XG4gICAgICAgICAgcGFyc2VkX2lucHV0W2tleV0gPSBpbnB1dFtgJHtrZXl9W11gXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYS5wYXJzZShwYXJzZWRfaW5wdXQpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdElucHV0PFxuICBKc29uQm9keSBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gIENvbW1vblBhcmFtcyBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgRm9ybURhdGEgZXh0ZW5kcyB6LlpvZFR5cGVBbnlcbj4ge1xuICBqc29uQm9keT86IEpzb25Cb2R5XG4gIHF1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXNcbiAgY29tbW9uUGFyYW1zPzogQ29tbW9uUGFyYW1zXG4gIGZvcm1EYXRhPzogRm9ybURhdGFcbn1cblxuY29uc3Qgem9kSXNzdWVUb1N0cmluZyA9IChpc3N1ZTogei5ab2RJc3N1ZSkgPT4ge1xuICBpZiAoaXNzdWUucGF0aC5qb2luKFwiLlwiKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlXG4gIH1cbiAgaWYgKGlzc3VlLm1lc3NhZ2UgPT09IFwiUmVxdWlyZWRcIikge1xuICAgIHJldHVybiBgJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfSBpcyByZXF1aXJlZGBcbiAgfVxuICByZXR1cm4gYCR7aXNzdWUubWVzc2FnZX0gZm9yIFwiJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfVwiYFxufVxuXG5leHBvcnQgY29uc3Qgd2l0aFZhbGlkYXRpb24gPVxuICA8XG4gICAgSnNvbkJvZHkgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgQ29tbW9uUGFyYW1zIGV4dGVuZHMgei5ab2RUeXBlQW55LFxuICAgIEZvcm1EYXRhIGV4dGVuZHMgei5ab2RUeXBlQW55XG4gID4oXG4gICAgaW5wdXQ6IFJlcXVlc3RJbnB1dDxKc29uQm9keSwgUXVlcnlQYXJhbXMsIENvbW1vblBhcmFtcywgRm9ybURhdGE+XG4gICkgPT5cbiAgKG5leHQpID0+XG4gIGFzeW5jIChyZXE6IE5leHRBcGlSZXF1ZXN0LCByZXM6IE5leHRBcGlSZXNwb25zZSkgPT4ge1xuICAgIGlmIChcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5qc29uQm9keSkgfHxcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5jb21tb25QYXJhbXMpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGZvcm1EYXRhIHdpdGgganNvbkJvZHkgb3IgY29tbW9uUGFyYW1zXCIpXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHJlcS5tZXRob2QgPT09IFwiUE9TVFwiIHx8IHJlcS5tZXRob2QgPT09IFwiUEFUQ0hcIikgJiZcbiAgICAgIChpbnB1dC5qc29uQm9keSB8fCBpbnB1dC5jb21tb25QYXJhbXMpICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSAmJlxuICAgICAgIWlzRW1wdHkocmVxLmJvZHkpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbih7XG4gICAgICAgIHR5cGU6IFwiaW52YWxpZF9jb250ZW50X3R5cGVcIixcbiAgICAgICAgbWVzc2FnZTogYCR7cmVxLm1ldGhvZH0gcmVxdWVzdHMgbXVzdCBoYXZlIENvbnRlbnQtVHlwZSBoZWFkZXIgd2l0aCBcImFwcGxpY2F0aW9uL2pzb25cImAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlucHV0LmZvcm1EYXRhICYmXG4gICAgICByZXEubWV0aG9kICE9PSBcIkdFVFwiICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFxuICAgICAgICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICApXG4gICAgICAvLyBUT0RPIGV2ZW50dWFsbHkgd2Ugc2hvdWxkIHN1cHBvcnQgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oe1xuICAgICAgICB0eXBlOiBcImludmFsaWRfY29udGVudF90eXBlXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBNdXN0IGhhdmUgQ29udGVudC1UeXBlIGhlYWRlciB3aXRoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJgLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxfY29tYmluZWRfcGFyYW1zID0geyAuLi5yZXEucXVlcnksIC4uLnJlcS5ib2R5IH1cbiAgICAgIHJlcS5ib2R5ID1cbiAgICAgICAgaW5wdXQuZm9ybURhdGEgJiYgcmVxLm1ldGhvZCAhPT0gXCJHRVRcIlxuICAgICAgICAgID8gaW5wdXQuZm9ybURhdGE/LnBhcnNlKHJlcS5ib2R5KVxuICAgICAgICAgIDogaW5wdXQuanNvbkJvZHk/LnBhcnNlKHJlcS5ib2R5KVxuICAgICAgcmVxLnF1ZXJ5ID0gaW5wdXQucXVlcnlQYXJhbXM/LnBhcnNlKHJlcS5xdWVyeSlcblxuICAgICAgaWYgKGlucHV0LmNvbW1vblBhcmFtcykge1xuICAgICAgICA7KHJlcSBhcyBhbnkpLmNvbW1vblBhcmFtcyA9IHBhcnNlQ29tbWFTZXBhcmF0ZUFycmF5cyhcbiAgICAgICAgICBpbnB1dC5jb21tb25QYXJhbXMsXG4gICAgICAgICAgb3JpZ2luYWxfY29tYmluZWRfcGFyYW1zXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gXCJab2RFcnJvclwiKSB7XG4gICAgICAgIGxldCBtZXNzYWdlXG4gICAgICAgIGlmIChlcnJvci5pc3N1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgY29uc3QgaXNzdWUgPSBlcnJvci5pc3N1ZXNbMF1cbiAgICAgICAgICBtZXNzYWdlID0gem9kSXNzdWVUb1N0cmluZyhpc3N1ZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlX2NvbXBvbmVudHM6IHN0cmluZ1tdID0gW11cbiAgICAgICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICAgICAgbWVzc2FnZV9jb21wb25lbnRzLnB1c2goem9kSXNzdWVUb1N0cmluZyhpc3N1ZSkpXG4gICAgICAgICAgfVxuICAgICAgICAgIG1lc3NhZ2UgPVxuICAgICAgICAgICAgYCR7ZXJyb3IuaXNzdWVzLmxlbmd0aH0gSW5wdXQgRXJyb3JzOiBgICtcbiAgICAgICAgICAgIG1lc3NhZ2VfY29tcG9uZW50cy5qb2luKFwiLCBcIilcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKHtcbiAgICAgICAgICB0eXBlOiBcImludmFsaWRfaW5wdXRcIixcbiAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgIHZhbGlkYXRpb25fZXJyb3JzOiBlcnJvci5mb3JtYXQoKSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oe1xuICAgICAgICB0eXBlOiBcImludmFsaWRfaW5wdXRcIixcbiAgICAgICAgbWVzc2FnZTogXCJFcnJvciB3aGlsZSBwYXJzaW5nIGlucHV0XCIsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0KHJlcSwgcmVzKVxuICB9XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhWYWxpZGF0aW9uXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLGlCQUF5QztBQUN6Qyx5Q0FBb0M7QUFDcEMsb0JBQXdCO0FBRXhCLElBQU0sd0NBQXdDLENBQzVDLGFBQ0EsV0FDb0M7QUFDcEMsTUFBSSxDQUFDLGFBQWE7QUFDaEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGdCQUFnQjtBQUVwQixTQUFPLHlCQUF5QixhQUFFLFlBQVk7QUFDNUMsb0JBQWdCLGNBQWMsS0FBSztBQUFBLEVBQ3JDO0FBRUEsU0FBTztBQUNUO0FBRUEsSUFBTSxpQkFBaUIsQ0FBQyxXQUF5QjtBQUMvQyxRQUFNLDZDQUE4QyxPQUNqRDtBQUNILFFBQU0sOEJBQ0osMkNBQTJDLGFBQzNDLGlDQUFzQixjQUNsQiwyQ0FBMkMsVUFBVSxPQUNyRDtBQUNOLFFBQU0sV0FDSiw0QkFBNEIsYUFBYSxpQ0FBc0IsYUFDM0QsNEJBQTRCLE9BQU8sT0FDbkM7QUFFTixTQUFPLFNBQVMsYUFBYSxpQ0FBc0I7QUFDckQ7QUFFQSxJQUFNLDJCQUEyQixDQUMvQixRQUNBLFVBQ0c7QUFDSCxRQUFNLGVBQWUsT0FBTyxPQUFPLENBQUMsR0FBRyxLQUFLO0FBQzVDLFFBQU0sY0FBYyxPQUFPLEtBQUssYUFBYSxpQ0FBc0I7QUFDbkUsUUFBTSxjQUFjLHNDQUFzQyxhQUFhLE1BQU07QUFDN0UsUUFBTSxjQUNKLFlBQVksS0FBSyxhQUFhLGlDQUFzQjtBQUV0RCxNQUFJLGFBQWE7QUFDZixVQUFNLGFBQWE7QUFFbkIsZUFBVyxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsV0FBVyxLQUFLLEdBQUc7QUFDM0QsVUFBSSxlQUFlLEtBQXFCLEdBQUc7QUFDekMsY0FBTSxjQUFjLE1BQU07QUFFMUIsWUFBSSxPQUFPLGdCQUFnQixVQUFVO0FBQ25DLHVCQUFhLE9BQU8sWUFBWSxNQUFNLEdBQUc7QUFBQSxRQUMzQztBQUVBLFlBQUksTUFBTSxRQUFRLE1BQU0sR0FBRyxRQUFRLEdBQUc7QUFDcEMsdUJBQWEsT0FBTyxNQUFNLEdBQUc7QUFBQSxRQUMvQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sT0FBTyxNQUFNLFlBQVk7QUFDbEM7QUFjQSxJQUFNLG1CQUFtQixDQUFDLFVBQXNCO0FBQzlDLE1BQUksTUFBTSxLQUFLLEtBQUssR0FBRyxNQUFNLElBQUk7QUFDL0IsV0FBTyxNQUFNO0FBQUEsRUFDZjtBQUNBLE1BQUksTUFBTSxZQUFZLFlBQVk7QUFDaEMsV0FBTyxHQUFHLE1BQU0sS0FBSyxLQUFLLEdBQUc7QUFBQSxFQUMvQjtBQUNBLFNBQU8sR0FBRyxNQUFNLGdCQUFnQixNQUFNLEtBQUssS0FBSyxHQUFHO0FBQ3JEO0FBRU8sSUFBTSxpQkFDWCxDQU1FLFVBRUYsQ0FBQyxTQUNELE9BQU8sS0FBcUIsUUFBeUI7QUFyR3ZEO0FBc0dJLE1BQ0csTUFBTSxZQUFZLE1BQU0sWUFDeEIsTUFBTSxZQUFZLE1BQU0sY0FDekI7QUFDQSxVQUFNLElBQUksTUFBTSxtREFBbUQ7QUFBQSxFQUNyRTtBQUVBLE1BQ0csS0FBSSxXQUFXLFVBQVUsSUFBSSxXQUFXLFlBQ3hDLE9BQU0sWUFBWSxNQUFNLGlCQUN6QixDQUFDLFdBQUksUUFBUSxvQkFBWixtQkFBNkIsU0FBUyx3QkFDdkMsQ0FBQywyQkFBUSxJQUFJLElBQUksR0FDakI7QUFDQSxVQUFNLElBQUksdURBQW9CO0FBQUEsTUFDNUIsTUFBTTtBQUFBLE1BQ04sU0FBUyxHQUFHLElBQUk7QUFBQSxJQUNsQixDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQ0UsTUFBTSxZQUNOLElBQUksV0FBVyxTQUNmLENBQUMsV0FBSSxRQUFRLG9CQUFaLG1CQUE2QixTQUM1Qix1Q0FHRjtBQUNBLFVBQU0sSUFBSSx1REFBb0I7QUFBQSxNQUM1QixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsSUFDWCxDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQUk7QUFDRixVQUFNLDJCQUEyQixFQUFFLEdBQUcsSUFBSSxPQUFPLEdBQUcsSUFBSSxLQUFLO0FBQzdELFFBQUksT0FDRixNQUFNLFlBQVksSUFBSSxXQUFXLFFBQzdCLFlBQU0sYUFBTixtQkFBZ0IsTUFBTSxJQUFJLFFBQzFCLFlBQU0sYUFBTixtQkFBZ0IsTUFBTSxJQUFJO0FBQ2hDLFFBQUksUUFBUSxZQUFNLGdCQUFOLG1CQUFtQixNQUFNLElBQUk7QUFFekMsUUFBSSxNQUFNLGNBQWM7QUFDdEI7QUFBQyxNQUFDLElBQVksZUFBZSx5QkFDM0IsTUFBTSxjQUNOLHdCQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0YsU0FBUyxPQUFQO0FBQ0EsUUFBSSxNQUFNLFNBQVMsWUFBWTtBQUM3QixVQUFJO0FBQ0osVUFBSSxNQUFNLE9BQU8sV0FBVyxHQUFHO0FBQzdCLGNBQU0sUUFBUSxNQUFNLE9BQU87QUFDM0Isa0JBQVUsaUJBQWlCLEtBQUs7QUFBQSxNQUNsQyxPQUFPO0FBQ0wsY0FBTSxxQkFBK0IsQ0FBQztBQUN0QyxtQkFBVyxTQUFTLE1BQU0sUUFBUTtBQUNoQyw2QkFBbUIsS0FBSyxpQkFBaUIsS0FBSyxDQUFDO0FBQUEsUUFDakQ7QUFDQSxrQkFDRSxHQUFHLE1BQU0sT0FBTywwQkFDaEIsbUJBQW1CLEtBQUssSUFBSTtBQUFBLE1BQ2hDO0FBRUEsWUFBTSxJQUFJLHVEQUFvQjtBQUFBLFFBQzVCLE1BQU07QUFBQSxRQUNOO0FBQUEsUUFDQSxtQkFBbUIsTUFBTSxPQUFPO0FBQUEsTUFDbEMsQ0FBQztBQUFBLElBQ0g7QUFFQSxVQUFNLElBQUksdURBQW9CO0FBQUEsTUFDNUIsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLElBQ1gsQ0FBQztBQUFBLEVBQ0g7QUFFQSxTQUFPLEtBQUssS0FBSyxHQUFHO0FBQ3RCO0FBRUYsSUFBTywwQkFBUTsiLAogICJuYW1lcyI6IFtdCn0K
144
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3dpdGgtcm91dGUtc3BlYy9taWRkbGV3YXJlcy93aXRoLXZhbGlkYXRpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgTmV4dEFwaVJlcXVlc3QsIE5leHRBcGlSZXNwb25zZSB9IGZyb20gXCJuZXh0XCJcbmltcG9ydCB7IHosIFpvZEZpcnN0UGFydHlUeXBlS2luZCB9IGZyb20gXCJ6b2RcIlxuaW1wb3J0IHsgQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gXCJuZXh0anMtZXhjZXB0aW9uLW1pZGRsZXdhcmVcIlxuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gXCJsb2Rhc2hcIlxuXG5jb25zdCBnZXRab2RPYmplY3RTY2hlbWFGcm9tWm9kRWZmZWN0U2NoZW1hID0gKFxuICBpc1pvZEVmZmVjdDogYm9vbGVhbixcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnlcbik6IHouWm9kVHlwZUFueSB8IHouWm9kT2JqZWN0PGFueT4gPT4ge1xuICBpZiAoIWlzWm9kRWZmZWN0KSB7XG4gICAgcmV0dXJuIHNjaGVtYSBhcyB6LlpvZE9iamVjdDxhbnk+XG4gIH1cblxuICBsZXQgY3VycmVudFNjaGVtYSA9IHNjaGVtYVxuXG4gIHdoaWxlIChjdXJyZW50U2NoZW1hIGluc3RhbmNlb2Ygei5ab2RFZmZlY3RzKSB7XG4gICAgY3VycmVudFNjaGVtYSA9IGN1cnJlbnRTY2hlbWEuX2RlZi5zY2hlbWFcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50U2NoZW1hIGFzIHouWm9kT2JqZWN0PGFueT5cbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSBjb3JyZWN0IHNjaGVtYSBmcm9tIGEgWm9kRWZmZWN0IHwgWm9kRGVmYXVsdCB8IFpvZE9wdGlvbmFsIHNjaGVtYS5cbiAqIFRPRE86IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGhhbmRsZSBhbGwgc3BlY2lhbCBjYXNlcyBvZiBab2RTY2hlbWEgYW5kIG5vdCBqdXN0IFpvZEVmZmVjdCB8IFpvZERlZmF1bHQgfCBab2RPcHRpb25hbFxuICovXG5jb25zdCBnZXRab2REZWZGcm9tWm9kU2NoZW1hSGVscGVycyA9IChzY2hlbWE6IHouWm9kVHlwZUFueSkgPT4ge1xuICBjb25zdCB1bnNhZmVfZGVmX21heWJlX29wdGlvbmFsX21heWJlX2RlZmF1bHRfbWF5YmVfem9kX2VmZmVjdCA9IChcbiAgICBzY2hlbWEgYXMgei5ab2RUeXBlQW55XG4gICkuX2RlZlxuICBjb25zdCB1bnNhZmVfZGVmX21heWJlX2RlZmF1bHRfbWF5YmVfem9kX2VmZmVjdCA9XG4gICAgdW5zYWZlX2RlZl9tYXliZV9vcHRpb25hbF9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3QudHlwZU5hbWUgPT09XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9wdGlvbmFsXG4gICAgICA/IHVuc2FmZV9kZWZfbWF5YmVfb3B0aW9uYWxfbWF5YmVfZGVmYXVsdF9tYXliZV96b2RfZWZmZWN0LmlubmVyVHlwZS5fZGVmXG4gICAgICA6IHVuc2FmZV9kZWZfbWF5YmVfb3B0aW9uYWxfbWF5YmVfZGVmYXVsdF9tYXliZV96b2RfZWZmZWN0XG4gIGNvbnN0IHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdCA9XG4gICAgdW5zYWZlX2RlZl9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3QudHlwZU5hbWUgPT09XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHRcbiAgICAgID8gdW5zYWZlX2RlZl9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3QuaW5uZXJUeXBlLl9kZWZcbiAgICAgIDogdW5zYWZlX2RlZl9tYXliZV9kZWZhdWx0X21heWJlX3pvZF9lZmZlY3RcbiAgcmV0dXJuIHVuc2FmZV9kZWZfbWF5YmVfem9kX2VmZmVjdC50eXBlTmFtZSA9PT1cbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0c1xuICAgID8gdW5zYWZlX2RlZl9tYXliZV96b2RfZWZmZWN0LnNjaGVtYS5fZGVmXG4gICAgOiB1bnNhZmVfZGVmX21heWJlX3pvZF9lZmZlY3Rcbn1cblxuY29uc3QgcGFyc2VRdWVyeVBhcmFtcyA9IChcbiAgc2NoZW1hOiB6LlpvZFR5cGVBbnksXG4gIGlucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKSA9PiB7XG4gIGNvbnN0IHBhcnNlZF9pbnB1dCA9IE9iamVjdC5hc3NpZ24oe30sIGlucHV0KVxuICBjb25zdCBpc1pvZEVmZmVjdCA9IHNjaGVtYS5fZGVmLnR5cGVOYW1lID09PSBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0c1xuICBjb25zdCBzYWZlX3NjaGVtYSA9IGdldFpvZE9iamVjdFNjaGVtYUZyb21ab2RFZmZlY3RTY2hlbWEoaXNab2RFZmZlY3QsIHNjaGVtYSlcbiAgY29uc3QgaXNab2RPYmplY3QgPVxuICAgIHNhZmVfc2NoZW1hLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3RcblxuICBpZiAoaXNab2RPYmplY3QpIHtcbiAgICBjb25zdCBvYmpfc2NoZW1hID0gc2FmZV9zY2hlbWEgYXMgei5ab2RPYmplY3Q8YW55PlxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqX3NjaGVtYS5zaGFwZSkpIHtcbiAgICAgIGNvbnN0IGRlZiA9IGdldFpvZERlZkZyb21ab2RTY2hlbWFIZWxwZXJzKHZhbHVlIGFzIHouWm9kVHlwZUFueSlcbiAgICAgIGNvbnN0IGlzQXJyYXkgPSBkZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RBcnJheVxuICAgICAgaWYgKGlzQXJyYXkpIHtcbiAgICAgICAgY29uc3QgYXJyYXlfaW5wdXQgPSBpbnB1dFtrZXldXG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcnJheV9pbnB1dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHBhcnNlZF9pbnB1dFtrZXldID0gYXJyYXlfaW5wdXQuc3BsaXQoXCIsXCIpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dFtgJHtrZXl9W11gXSkpIHtcbiAgICAgICAgICBwYXJzZWRfaW5wdXRba2V5XSA9IGlucHV0W2Ake2tleX1bXWBdXG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0Jvb2xlYW4gPSBkZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuXG4gICAgICBpZiAoaXNCb29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGJvb2xlYW5faW5wdXQgPSBpbnB1dFtrZXldXG5cbiAgICAgICAgaWYgKHR5cGVvZiBib29sZWFuX2lucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcGFyc2VkX2lucHV0W2tleV0gPSBib29sZWFuX2lucHV0ID09PSBcInRydWVcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYS5wYXJzZShwYXJzZWRfaW5wdXQpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdElucHV0PFxuICBKc29uQm9keSBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gIENvbW1vblBhcmFtcyBleHRlbmRzIHouWm9kVHlwZUFueSxcbiAgRm9ybURhdGEgZXh0ZW5kcyB6LlpvZFR5cGVBbnlcbj4ge1xuICBqc29uQm9keT86IEpzb25Cb2R5XG4gIHF1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXNcbiAgY29tbW9uUGFyYW1zPzogQ29tbW9uUGFyYW1zXG4gIGZvcm1EYXRhPzogRm9ybURhdGFcbn1cblxuY29uc3Qgem9kSXNzdWVUb1N0cmluZyA9IChpc3N1ZTogei5ab2RJc3N1ZSkgPT4ge1xuICBpZiAoaXNzdWUucGF0aC5qb2luKFwiLlwiKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBpc3N1ZS5tZXNzYWdlXG4gIH1cbiAgaWYgKGlzc3VlLm1lc3NhZ2UgPT09IFwiUmVxdWlyZWRcIikge1xuICAgIHJldHVybiBgJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfSBpcyByZXF1aXJlZGBcbiAgfVxuICByZXR1cm4gYCR7aXNzdWUubWVzc2FnZX0gZm9yIFwiJHtpc3N1ZS5wYXRoLmpvaW4oXCIuXCIpfVwiYFxufVxuXG5leHBvcnQgY29uc3Qgd2l0aFZhbGlkYXRpb24gPVxuICA8XG4gICAgSnNvbkJvZHkgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgUXVlcnlQYXJhbXMgZXh0ZW5kcyB6LlpvZFR5cGVBbnksXG4gICAgQ29tbW9uUGFyYW1zIGV4dGVuZHMgei5ab2RUeXBlQW55LFxuICAgIEZvcm1EYXRhIGV4dGVuZHMgei5ab2RUeXBlQW55XG4gID4oXG4gICAgaW5wdXQ6IFJlcXVlc3RJbnB1dDxKc29uQm9keSwgUXVlcnlQYXJhbXMsIENvbW1vblBhcmFtcywgRm9ybURhdGE+XG4gICkgPT5cbiAgKG5leHQpID0+XG4gIGFzeW5jIChyZXE6IE5leHRBcGlSZXF1ZXN0LCByZXM6IE5leHRBcGlSZXNwb25zZSkgPT4ge1xuICAgIGlmIChcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5qc29uQm9keSkgfHxcbiAgICAgIChpbnB1dC5mb3JtRGF0YSAmJiBpbnB1dC5jb21tb25QYXJhbXMpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGZvcm1EYXRhIHdpdGgganNvbkJvZHkgb3IgY29tbW9uUGFyYW1zXCIpXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHJlcS5tZXRob2QgPT09IFwiUE9TVFwiIHx8IHJlcS5tZXRob2QgPT09IFwiUEFUQ0hcIikgJiZcbiAgICAgIChpbnB1dC5qc29uQm9keSB8fCBpbnB1dC5jb21tb25QYXJhbXMpICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFwiYXBwbGljYXRpb24vanNvblwiKSAmJlxuICAgICAgIWlzRW1wdHkocmVxLmJvZHkpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbih7XG4gICAgICAgIHR5cGU6IFwiaW52YWxpZF9jb250ZW50X3R5cGVcIixcbiAgICAgICAgbWVzc2FnZTogYCR7cmVxLm1ldGhvZH0gcmVxdWVzdHMgbXVzdCBoYXZlIENvbnRlbnQtVHlwZSBoZWFkZXIgd2l0aCBcImFwcGxpY2F0aW9uL2pzb25cImAsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlucHV0LmZvcm1EYXRhICYmXG4gICAgICByZXEubWV0aG9kICE9PSBcIkdFVFwiICYmXG4gICAgICAhcmVxLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0/LmluY2x1ZGVzKFxuICAgICAgICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICApXG4gICAgICAvLyBUT0RPIGV2ZW50dWFsbHkgd2Ugc2hvdWxkIHN1cHBvcnQgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oe1xuICAgICAgICB0eXBlOiBcImludmFsaWRfY29udGVudF90eXBlXCIsXG4gICAgICAgIG1lc3NhZ2U6IGBNdXN0IGhhdmUgQ29udGVudC1UeXBlIGhlYWRlciB3aXRoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJgLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxfY29tYmluZWRfcGFyYW1zID0geyAuLi5yZXEucXVlcnksIC4uLnJlcS5ib2R5IH1cbiAgICAgIHJlcS5ib2R5ID1cbiAgICAgICAgaW5wdXQuZm9ybURhdGEgJiYgcmVxLm1ldGhvZCAhPT0gXCJHRVRcIlxuICAgICAgICAgID8gaW5wdXQuZm9ybURhdGE/LnBhcnNlKHJlcS5ib2R5KVxuICAgICAgICAgIDogaW5wdXQuanNvbkJvZHk/LnBhcnNlKHJlcS5ib2R5KVxuXG4gICAgICBpZiAoaW5wdXQucXVlcnlQYXJhbXMpIHtcbiAgICAgICAgcmVxLnF1ZXJ5ID0gcGFyc2VRdWVyeVBhcmFtcyhpbnB1dC5xdWVyeVBhcmFtcywgcmVxLnF1ZXJ5KVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5wdXQuY29tbW9uUGFyYW1zKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBhcyBjb21tb25QYXJhbXMgaW5jbHVkZXMgcXVlcnkgcGFyYW1zLCB3ZSBjYW4gdXNlIHRoZSBwYXJzZVF1ZXJ5UGFyYW1zIGZ1bmN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICA7KHJlcSBhcyBhbnkpLmNvbW1vblBhcmFtcyA9IHBhcnNlUXVlcnlQYXJhbXMoXG4gICAgICAgICAgaW5wdXQuY29tbW9uUGFyYW1zLFxuICAgICAgICAgIG9yaWdpbmFsX2NvbWJpbmVkX3BhcmFtc1xuICAgICAgICApXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLm5hbWUgPT09IFwiWm9kRXJyb3JcIikge1xuICAgICAgICBsZXQgbWVzc2FnZVxuICAgICAgICBpZiAoZXJyb3IuaXNzdWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IGlzc3VlID0gZXJyb3IuaXNzdWVzWzBdXG4gICAgICAgICAgbWVzc2FnZSA9IHpvZElzc3VlVG9TdHJpbmcoaXNzdWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZV9jb21wb25lbnRzOiBzdHJpbmdbXSA9IFtdXG4gICAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VfY29tcG9uZW50cy5wdXNoKHpvZElzc3VlVG9TdHJpbmcoaXNzdWUpKVxuICAgICAgICAgIH1cbiAgICAgICAgICBtZXNzYWdlID1cbiAgICAgICAgICAgIGAke2Vycm9yLmlzc3Vlcy5sZW5ndGh9IElucHV0IEVycm9yczogYCArXG4gICAgICAgICAgICBtZXNzYWdlX2NvbXBvbmVudHMuam9pbihcIiwgXCIpXG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbih7XG4gICAgICAgICAgdHlwZTogXCJpbnZhbGlkX2lucHV0XCIsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICB2YWxpZGF0aW9uX2Vycm9yczogZXJyb3IuZm9ybWF0KCksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXhjZXB0aW9uKHtcbiAgICAgICAgdHlwZTogXCJpbnZhbGlkX2lucHV0XCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiRXJyb3Igd2hpbGUgcGFyc2luZyBpbnB1dFwiLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChyZXEsIHJlcylcbiAgfVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoVmFsaWRhdGlvblxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQSxpQkFBeUM7QUFDekMseUNBQW9DO0FBQ3BDLG9CQUF3QjtBQUV4QixJQUFNLHdDQUF3QyxDQUM1QyxhQUNBLFdBQ29DO0FBQ3BDLE1BQUksQ0FBQyxhQUFhO0FBQ2hCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxnQkFBZ0I7QUFFcEIsU0FBTyx5QkFBeUIsYUFBRSxZQUFZO0FBQzVDLG9CQUFnQixjQUFjLEtBQUs7QUFBQSxFQUNyQztBQUVBLFNBQU87QUFDVDtBQU1BLElBQU0sZ0NBQWdDLENBQUMsV0FBeUI7QUFDOUQsUUFBTSwyREFDSixPQUNBO0FBQ0YsUUFBTSw0Q0FDSix5REFBeUQsYUFDekQsaUNBQXNCLGNBQ2xCLHlEQUF5RCxVQUFVLE9BQ25FO0FBQ04sUUFBTSw4QkFDSiwwQ0FBMEMsYUFDMUMsaUNBQXNC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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextlove",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "private": false,
5
5
  "repository": "https://github.com/seamapi/nextlove",
6
6
  "files": [