angular-odata 0.100.0 → 0.100.1
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/esm2020/lib/api.mjs +64 -54
- package/esm2020/lib/client.mjs +3 -3
- package/esm2020/lib/helper.mjs +91 -86
- package/esm2020/lib/models/collection.mjs +3 -3
- package/esm2020/lib/models/model.mjs +4 -4
- package/esm2020/lib/models/options.mjs +46 -39
- package/esm2020/lib/module.mjs +4 -4
- package/esm2020/lib/resources/query/builder.mjs +2 -2
- package/esm2020/lib/resources/query/handlers.mjs +29 -18
- package/esm2020/lib/resources/query/options.mjs +41 -35
- package/esm2020/lib/resources/resource.mjs +1 -1
- package/esm2020/lib/resources/responses/annotations.mjs +6 -6
- package/esm2020/lib/resources/responses/response.mjs +3 -3
- package/esm2020/lib/resources/types/function.mjs +3 -2
- package/esm2020/lib/schema/parsers/structured-type.mjs +5 -5
- package/esm2020/lib/schema/structured-type.mjs +4 -9
- package/esm2020/lib/services/factory.mjs +3 -3
- package/esm2020/lib/utils/urls.mjs +2 -2
- package/fesm2015/angular-odata.mjs +299 -264
- package/fesm2015/angular-odata.mjs.map +1 -1
- package/fesm2020/angular-odata.mjs +299 -264
- package/fesm2020/angular-odata.mjs.map +1 -1
- package/lib/helper.d.ts +28 -57
- package/lib/models/model.d.ts +3 -9
- package/lib/resources/query/builder.d.ts +1 -1
- package/lib/resources/query/handlers.d.ts +7 -3
- package/lib/resources/query/options.d.ts +7 -9
- package/lib/resources/responses/annotations.d.ts +12 -18
- package/lib/resources/responses/response.d.ts +1 -3
- package/package.json +3 -3
|
@@ -48,7 +48,8 @@ export class ODataFunctionResource extends ODataResource {
|
|
|
48
48
|
}
|
|
49
49
|
pathAndParams(escape = false) {
|
|
50
50
|
let [path, params] = super.pathAndParams(escape);
|
|
51
|
-
if (path.endsWith('()') &&
|
|
51
|
+
if (path.endsWith('()') &&
|
|
52
|
+
this.api.options.nonParenthesisForEmptyParameterFunction) {
|
|
52
53
|
path = path.substring(0, path.length - 2);
|
|
53
54
|
}
|
|
54
55
|
return [path, params];
|
|
@@ -144,4 +145,4 @@ export class ODataFunctionResource extends ODataResource {
|
|
|
144
145
|
: null));
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3R5cGVzL2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBVTVDLE1BQU0sT0FBTyxxQkFBNEIsU0FBUSxhQUFnQjtJQUMvRCxpQkFBaUI7SUFDakIsTUFBTSxDQUFDLE9BQU8sQ0FDWixHQUFhLEVBQ2IsRUFDRSxJQUFJLEVBQ0osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEdBTU47UUFFRCxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLEtBQUssU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLEtBQUssU0FBUztZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxJQUFJLHFCQUFxQixDQUFPLEdB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LEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUMzQixRQUFRO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQU8sUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUM1RCxDQUFDLENBQUMsSUFBSSxDQUNULENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vLi4vYXBpJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jb2xsZWN0aW9uJztcbmltcG9ydCB7IE9EYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbW9kZWwnO1xuaW1wb3J0IHsgT0RhdGFDYWxsYWJsZSB9IGZyb20gJy4uLy4uL3NjaGVtYS9jYWxsYWJsZSc7XG5pbXBvcnQgeyBQYXRoU2VnbWVudE5hbWVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFQYXRoU2VnbWVudHMgfSBmcm9tICcuLi9wYXRoJztcbmltcG9ydCB7IE9EYXRhUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi4vcmVzcG9uc2VzJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXRpZXNPcHRpb25zLFxuICBPRGF0YUVudGl0eU9wdGlvbnMsXG4gIE9EYXRhTm9uZU9wdGlvbnMsXG4gIE9EYXRhT3B0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eU9wdGlvbnMsXG59IGZyb20gJy4vb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUZ1bmN0aW9uUmVzb3VyY2U8UCwgUj4gZXh0ZW5kcyBPRGF0YVJlc291cmNlPFI+IHtcbiAgLy8jcmVnaW9uIEZhY3RvcnlcbiAgc3RhdGljIGZhY3Rvcnk8UCwgUj4oXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBwYXRoLFxuICAgICAgc2NoZW1hLFxuICAgICAgc2VnbWVudHMsXG4gICAgICBxdWVyeSxcbiAgICB9OiB7XG4gICAgICBwYXRoPzogc3RyaW5nO1xuICAgICAgc2NoZW1hPzogT0RhdGFDYWxsYWJsZTxSPjtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFI+O1xuICAgIH1cbiAgKSB7XG4gICAgc2VnbWVudHMgPSBzZWdtZW50cyB8fCBuZXcgT0RhdGFQYXRoU2VnbWVudHMoKTtcbiAgICBwYXRoID0gc2NoZW1hICE9PSB1bmRlZmluZWQgPyBzY2hlbWEucGF0aCgpIDogcGF0aDtcbiAgICBpZiAocGF0aCA9PT0gdW5kZWZpbmVkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPRGF0YUFjdGlvblJlc291cmNlOiBwYXRoIGlzIHJlcXVpcmVkYCk7XG5cbiAgICBjb25zdCBzZWdtZW50ID0gc2VnbWVudHMuYWRkKFBhdGhTZWdtZW50TmFtZXMuZnVuY3Rpb24sIHBhdGgpO1xuICAgIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkgc2VnbWVudC50eXBlKHNjaGVtYS50eXBlKCkpO1xuICAgIHJldHVybiBuZXcgT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+KGFwaSwge1xuICAgICAgc2VnbWVudHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHNjaGVtYSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUmVzb3VyY2U8UCwgUj4ocmVzb3VyY2U6IE9EYXRhUmVzb3VyY2U8YW55PiwgcGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgYmFzZVR5cGUgPSByZXNvdXJjZS50eXBlKCk7XG4gICAgY29uc3Qgc2NoZW1hID0gcmVzb3VyY2UuYXBpLmZpbmRDYWxsYWJsZUZvclR5cGU8Uj4ocGF0aCwgYmFzZVR5cGUpO1xuICAgIGNvbnN0IGJpbmRpbmdUeXBlID0gc2NoZW1hPy5iaW5kaW5nKCk/LnR5cGU7XG5cbiAgICBjb25zdCBmdW5jID0gT0RhdGFGdW5jdGlvblJlc291cmNlLmZhY3Rvcnk8UCwgUj4ocmVzb3VyY2UuYXBpLCB7XG4gICAgICBwYXRoLFxuICAgICAgc2NoZW1hLFxuICAgICAgc2VnbWVudHM6IHJlc291cmNlLmNsb25lU2VnbWVudHMoKSxcbiAgICB9KTtcblxuICAgIC8vIFN3aXRjaCBlbnRpdHlTZXQgdG8gYmluZGluZyB0eXBlIGlmIGF2YWlsYWJsZVxuICAgIGlmIChiaW5kaW5nVHlwZSAhPT0gdW5kZWZpbmVkICYmIGJpbmRpbmdUeXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgbGV0IGVudGl0eVNldCA9IHJlc291cmNlLmFwaS5maW5kRW50aXR5U2V0Rm9yVHlwZShiaW5kaW5nVHlwZSk7XG4gICAgICBpZiAoZW50aXR5U2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZnVuYy5zZWdtZW50KChzKSA9PiBzLmVudGl0eVNldCgpLnBhdGgoZW50aXR5U2V0IS5uYW1lKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cblxuICBvdmVycmlkZSBjbG9uZSgpOiBPRGF0YUZ1bmN0aW9uUmVzb3VyY2U8UCwgUj4ge1xuICAgIHJldHVybiBzdXBlci5jbG9uZSgpIGFzIE9EYXRhRnVuY3Rpb25SZXNvdXJjZTxQLCBSPjtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBvdmVycmlkZSByZXR1cm5UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhQ2FsbGFibGVcbiAgICAgID8gdGhpcy5zY2hlbWEucGFyc2VyLnJldHVybj8udHlwZVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBvdmVycmlkZSBwYXRoQW5kUGFyYW1zKGVzY2FwZTogYm9vbGVhbiA9IGZhbHNlKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBsZXQgW3BhdGgsIHBhcmFtc10gPSBzdXBlci5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG4gICAgXG4gICAgaWYgKHBhdGguZW5kc1dpdGgoJygpJykgJiYgdGhpcy5hcGkub3B0aW9ucy5ub25QYXJlbnRoZXNpc0ZvckVtcHR5UGFyYW1ldGVyRnVuY3Rpb24pIHtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDIpO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gW3BhdGgsIHBhcmFtc107XG4gIH1cblxuICBwYXJhbWV0ZXJzKHBhcmFtczogUCB8IG51bGwsIHsgYWxpYXMgfTogeyBhbGlhcz86IGJvb2xlYW4gfSA9IHt9KSB7XG4gICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJhbXMgIT09IG51bGwgPyB0aGlzLmVuY29kZShwYXJhbXMpIDogbnVsbDtcbiAgICBpZiAoYWxpYXMgJiYgcGFyYW1ldGVycyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5xdWVyeSgocSkgPT4ge1xuICAgICAgICBwYXJhbWV0ZXJzID0gT2JqZWN0LmVudHJpZXMocGFyYW1ldGVycykucmVkdWNlKChhY2MsIFtuYW1lLCBwYXJhbV0pID0+IHtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW25hbWVdOiBxLmFsaWFzKHBhcmFtLCBuYW1lKSB9KTtcbiAgICAgICAgfSwge30pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCkuc2VnbWVudCgocykgPT4gcy5mdW5jdGlvbigpLnBhcmFtZXRlcnM8UD4ocGFyYW1ldGVycykpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFJlcXVlc3RzXG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXQoXG4gICAgb3B0aW9ucz86IE9EYXRhRW50aXR5T3B0aW9ucyAmIE9EYXRhRW50aXRpZXNPcHRpb25zICYgT0RhdGFQcm9wZXJ0eU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0KG9wdGlvbnMpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBTaG9ydGN1dHNcbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBmdW5jdGlvblxuICAgKiBAcGFyYW0gYWxpYXMgSWYgdHJ1ZSwgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBzZW5kIHVzaW5nIGFsaWFzZXNcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIGNhbGwoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zPzogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhRW50aXR5T3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPE9EYXRhRW50aXR5PFI+PjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFFbnRpdGllc09wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0aWVzPFI+PjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFQcm9wZXJ0eU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVByb3BlcnR5PFI+PjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFOb25lT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPG51bGw+O1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAge1xuICAgICAgYWxpYXMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhRW50aXR5T3B0aW9ucyAmXG4gICAgICBPRGF0YUVudGl0aWVzT3B0aW9ucyAmXG4gICAgICBPRGF0YVByb3BlcnR5T3B0aW9ucyAmXG4gICAgICBPRGF0YU5vbmVPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzKHBhcmFtcywgeyBhbGlhcyB9KS5nZXQob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIGFsaWFzIElmIHRydWUsIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgc2VuZCB1c2luZyBhbGlhc2VzXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAgICovXG4gIGNhbGxQcm9wZXJ0eShcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHsgYWxpYXMsIC4uLm9wdGlvbnMgfTogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8UiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiAncHJvcGVydHknLFxuICAgICAgYWxpYXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLnBpcGUobWFwKCh7IHByb3BlcnR5IH0pID0+IHByb3BlcnR5KSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBlbnRpdHlcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIHRvIGJlIHNlbnQgdG8gdGhlIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBhbGlhcyBJZiB0cnVlLCB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHNlbmQgdXNpbmcgYWxpYXNlc1xuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uXG4gICAqL1xuICBjYWxsRW50aXR5KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgeyBhbGlhcywgLi4ub3B0aW9ucyB9OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwocGFyYW1zLCB7XG4gICAgICByZXNwb25zZVR5cGU6ICdlbnRpdHknLFxuICAgICAgYWxpYXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLnBpcGUobWFwKCh7IGVudGl0eSB9KSA9PiBlbnRpdHkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIG1vZGVsXG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBmdW5jdGlvblxuICAgKiBAcGFyYW0gYWxpYXMgSWYgdHJ1ZSwgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBzZW5kIHVzaW5nIGFsaWFzZXNcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgY2FsbE1vZGVsPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFI+PihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHsgYWxpYXMsIC4uLm9wdGlvbnMgfTogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8TSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnZW50aXR5JyxcbiAgICAgIGFsaWFzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKCh7IGVudGl0eSwgYW5ub3RzIH0pID0+XG4gICAgICAgIGVudGl0eSA/IHRoaXMuYXNNb2RlbDxNPihlbnRpdHksIHsgYW5ub3RzLCByZXNldDogdHJ1ZSB9KSA6IG51bGxcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgZW50aXRpZXNcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIHRvIGJlIHNlbnQgdG8gdGhlIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBhbGlhcyBJZiB0cnVlLCB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHNlbmQgdXNpbmcgYWxpYXNlc1xuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uXG4gICAqL1xuICBjYWxsRW50aXRpZXMoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICB7IGFsaWFzLCAuLi5vcHRpb25zIH06IHsgYWxpYXM/OiBib29sZWFuIH0gJiBPRGF0YU9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFJbXSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnZW50aXRpZXMnLFxuICAgICAgYWxpYXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLnBpcGUobWFwKCh7IGVudGl0aWVzIH0pID0+IGVudGl0aWVzKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBjb2xsZWN0aW9uXG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBmdW5jdGlvblxuICAgKiBAcGFyYW0gYWxpYXMgSWYgdHJ1ZSwgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBzZW5kIHVzaW5nIGFsaWFzZXNcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgY2FsbENvbGxlY3Rpb248TSBleHRlbmRzIE9EYXRhTW9kZWw8Uj4sIEMgZXh0ZW5kcyBPRGF0YUNvbGxlY3Rpb248UiwgTT4+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgeyBhbGlhcywgLi4ub3B0aW9ucyB9OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxDIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwocGFyYW1zLCB7XG4gICAgICByZXNwb25zZVR5cGU6ICdlbnRpdGllcycsXG4gICAgICBhbGlhcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyBlbnRpdGllcywgYW5ub3RzIH0pID0+XG4gICAgICAgIGVudGl0aWVzXG4gICAgICAgICAgPyB0aGlzLmFzQ29sbGVjdGlvbjxNLCBDPihlbnRpdGllcywgeyBhbm5vdHMsIHJlc2V0OiB0cnVlIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICApXG4gICAgKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbn1cbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3R5cGVzL2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBVTVDLE1BQU0sT0FBTyxxQkFBNEIsU0FBUSxhQUFnQjtJQUMvRCxpQkFBaUI7SUFDakIsTUFBTSxDQUFDLE9BQU8sQ0FDWixHQUFhLEVBQ2IsRUFDRSxJQUFJLEVBQ0osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEdBTU47UUFFRCxRQUFRLEdBQUcsUUFBUSxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxJQUFJLEtBQUssU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLEtBQUssU0FBUztZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxJQUFJLHFCQUFxQixDQUFPLEdB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QVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQzNCLFFBQVE7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBTyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzVELENBQUMsQ0FBQyxJQUFJLENBQ1QsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgT0RhdGFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9tb2RlbCc7XG5pbXBvcnQgeyBPRGF0YUNhbGxhYmxlIH0gZnJvbSAnLi4vLi4vc2NoZW1hL2NhbGxhYmxlJztcbmltcG9ydCB7IFBhdGhTZWdtZW50TmFtZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBPRGF0YVBhdGhTZWdtZW50cyB9IGZyb20gJy4uL3BhdGgnO1xuaW1wb3J0IHsgT0RhdGFRdWVyeU9wdGlvbnMgfSBmcm9tICcuLi9xdWVyeSc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2UnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdGllcywgT0RhdGFFbnRpdHksIE9EYXRhUHJvcGVydHkgfSBmcm9tICcuLi9yZXNwb25zZXMnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc09wdGlvbnMsXG4gIE9EYXRhRW50aXR5T3B0aW9ucyxcbiAgT0RhdGFOb25lT3B0aW9ucyxcbiAgT0RhdGFPcHRpb25zLFxuICBPRGF0YVByb3BlcnR5T3B0aW9ucyxcbn0gZnJvbSAnLi9vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhRnVuY3Rpb25SZXNvdXJjZTxQLCBSPiBleHRlbmRzIE9EYXRhUmVzb3VyY2U8Uj4ge1xuICAvLyNyZWdpb24gRmFjdG9yeVxuICBzdGF0aWMgZmFjdG9yeTxQLCBSPihcbiAgICBhcGk6IE9EYXRhQXBpLFxuICAgIHtcbiAgICAgIHBhdGgsXG4gICAgICBzY2hlbWEsXG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgIH06IHtcbiAgICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgICBzY2hlbWE/OiBPRGF0YUNhbGxhYmxlPFI+O1xuICAgICAgc2VnbWVudHM/OiBPRGF0YVBhdGhTZWdtZW50cztcbiAgICAgIHF1ZXJ5PzogT0RhdGFRdWVyeU9wdGlvbnM8Uj47XG4gICAgfVxuICApIHtcbiAgICBzZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHBhdGggPSBzY2hlbWEgIT09IHVuZGVmaW5lZCA/IHNjaGVtYS5wYXRoKCkgOiBwYXRoO1xuICAgIGlmIChwYXRoID09PSB1bmRlZmluZWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE9EYXRhQWN0aW9uUmVzb3VyY2U6IHBhdGggaXMgcmVxdWlyZWRgKTtcblxuICAgIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50cy5hZGQoUGF0aFNlZ21lbnROYW1lcy5mdW5jdGlvbiwgcGF0aCk7XG4gICAgaWYgKHNjaGVtYSAhPT0gdW5kZWZpbmVkKSBzZWdtZW50LnR5cGUoc2NoZW1hLnR5cGUoKSk7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUZ1bmN0aW9uUmVzb3VyY2U8UCwgUj4oYXBpLCB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21SZXNvdXJjZTxQLCBSPihyZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LCBwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBiYXNlVHlwZSA9IHJlc291cmNlLnR5cGUoKTtcbiAgICBjb25zdCBzY2hlbWEgPSByZXNvdXJjZS5hcGkuZmluZENhbGxhYmxlRm9yVHlwZTxSPihwYXRoLCBiYXNlVHlwZSk7XG4gICAgY29uc3QgYmluZGluZ1R5cGUgPSBzY2hlbWE/LmJpbmRpbmcoKT8udHlwZTtcblxuICAgIGNvbnN0IGZ1bmMgPSBPRGF0YUZ1bmN0aW9uUmVzb3VyY2UuZmFjdG9yeTxQLCBSPihyZXNvdXJjZS5hcGksIHtcbiAgICAgIHBhdGgsXG4gICAgICBzY2hlbWEsXG4gICAgICBzZWdtZW50czogcmVzb3VyY2UuY2xvbmVTZWdtZW50cygpLFxuICAgIH0pO1xuXG4gICAgLy8gU3dpdGNoIGVudGl0eVNldCB0byBiaW5kaW5nIHR5cGUgaWYgYXZhaWxhYmxlXG4gICAgaWYgKGJpbmRpbmdUeXBlICE9PSB1bmRlZmluZWQgJiYgYmluZGluZ1R5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICBsZXQgZW50aXR5U2V0ID0gcmVzb3VyY2UuYXBpLmZpbmRFbnRpdHlTZXRGb3JUeXBlKGJpbmRpbmdUeXBlKTtcbiAgICAgIGlmIChlbnRpdHlTZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmdW5jLnNlZ21lbnQoKHMpID0+IHMuZW50aXR5U2V0KCkucGF0aChlbnRpdHlTZXQhLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZnVuYztcbiAgfVxuXG4gIG92ZXJyaWRlIGNsb25lKCk6IE9EYXRhRnVuY3Rpb25SZXNvdXJjZTxQLCBSPiB7XG4gICAgcmV0dXJuIHN1cGVyLmNsb25lKCkgYXMgT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+O1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIG92ZXJyaWRlIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFDYWxsYWJsZVxuICAgICAgPyB0aGlzLnNjaGVtYS5wYXJzZXIucmV0dXJuPy50eXBlXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG92ZXJyaWRlIHBhdGhBbmRQYXJhbXMoXG4gICAgZXNjYXBlOiBib29sZWFuID0gZmFsc2VcbiAgKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBsZXQgW3BhdGgsIHBhcmFtc10gPSBzdXBlci5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG5cbiAgICBpZiAoXG4gICAgICBwYXRoLmVuZHNXaXRoKCcoKScpICYmXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLm5vblBhcmVudGhlc2lzRm9yRW1wdHlQYXJhbWV0ZXJGdW5jdGlvblxuICAgICkge1xuICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGVuZ3RoIC0gMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtwYXRoLCBwYXJhbXNdO1xuICB9XG5cbiAgcGFyYW1ldGVycyhwYXJhbXM6IFAgfCBudWxsLCB7IGFsaWFzIH06IHsgYWxpYXM/OiBib29sZWFuIH0gPSB7fSkge1xuICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyYW1zICE9PSBudWxsID8gdGhpcy5lbmNvZGUocGFyYW1zKSA6IG51bGw7XG4gICAgaWYgKGFsaWFzICYmIHBhcmFtZXRlcnMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucXVlcnkoKHEpID0+IHtcbiAgICAgICAgcGFyYW1ldGVycyA9IE9iamVjdC5lbnRyaWVzKHBhcmFtZXRlcnMpLnJlZHVjZSgoYWNjLCBbbmFtZSwgcGFyYW1dKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtuYW1lXTogcS5hbGlhcyhwYXJhbSwgbmFtZSkgfSk7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnNlZ21lbnQoKHMpID0+IHMuZnVuY3Rpb24oKS5wYXJhbWV0ZXJzPFA+KHBhcmFtZXRlcnMpKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBSZXF1ZXN0c1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0KFxuICAgIG9wdGlvbnM/OiBPRGF0YUVudGl0eU9wdGlvbnMgJiBPRGF0YUVudGl0aWVzT3B0aW9ucyAmIE9EYXRhUHJvcGVydHlPcHRpb25zXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldChvcHRpb25zKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gU2hvcnRjdXRzXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBmdW5jdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIGFsaWFzIElmIHRydWUsIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgc2VuZCB1c2luZyBhbGlhc2VzXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqL1xuICBjYWxsKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgb3B0aW9ucz86IHsgYWxpYXM/OiBib29sZWFuIH0gJiBPRGF0YUVudGl0eU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxSPj47XG4gIGNhbGwoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zPzogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhRW50aXRpZXNPcHRpb25zXG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdGllczxSPj47XG4gIGNhbGwoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zPzogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhUHJvcGVydHlPcHRpb25zXG4gICk6IE9ic2VydmFibGU8T0RhdGFQcm9wZXJ0eTxSPj47XG4gIGNhbGwoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICBvcHRpb25zPzogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhTm9uZU9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxudWxsPjtcbiAgY2FsbChcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHtcbiAgICAgIGFsaWFzLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH06IHsgYWxpYXM/OiBib29sZWFuIH0gJiBPRGF0YUVudGl0eU9wdGlvbnMgJlxuICAgICAgT0RhdGFFbnRpdGllc09wdGlvbnMgJlxuICAgICAgT0RhdGFQcm9wZXJ0eU9wdGlvbnMgJlxuICAgICAgT0RhdGFOb25lT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycyhwYXJhbXMsIHsgYWxpYXMgfSkuZ2V0KG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgcHJvcGVydHlcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbWV0ZXJzIHRvIGJlIHNlbnQgdG8gdGhlIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBhbGlhcyBJZiB0cnVlLCB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHNlbmQgdXNpbmcgYWxpYXNlc1xuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uXG4gICAqL1xuICBjYWxsUHJvcGVydHkoXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICB7IGFsaWFzLCAuLi5vcHRpb25zIH06IHsgYWxpYXM/OiBib29sZWFuIH0gJiBPRGF0YU9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFIgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JyxcbiAgICAgIGFsaWFzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KS5waXBlKG1hcCgoeyBwcm9wZXJ0eSB9KSA9PiBwcm9wZXJ0eSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgZW50aXR5XG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBmdW5jdGlvblxuICAgKiBAcGFyYW0gYWxpYXMgSWYgdHJ1ZSwgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBzZW5kIHVzaW5nIGFsaWFzZXNcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgY2FsbEVudGl0eShcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHsgYWxpYXMsIC4uLm9wdGlvbnMgfTogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8UiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnZW50aXR5JyxcbiAgICAgIGFsaWFzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KS5waXBlKG1hcCgoeyBlbnRpdHkgfSkgPT4gZW50aXR5KSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBtb2RlbFxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIGFsaWFzIElmIHRydWUsIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgc2VuZCB1c2luZyBhbGlhc2VzXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAgICovXG4gIGNhbGxNb2RlbDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxSPj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICB7IGFsaWFzLCAuLi5vcHRpb25zIH06IHsgYWxpYXM/OiBib29sZWFuIH0gJiBPRGF0YU9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPE0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2VudGl0eScsXG4gICAgICBhbGlhcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyBlbnRpdHksIGFubm90cyB9KSA9PlxuICAgICAgICBlbnRpdHkgPyB0aGlzLmFzTW9kZWw8TT4oZW50aXR5LCB7IGFubm90cywgcmVzZXQ6IHRydWUgfSkgOiBudWxsXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIGVudGl0aWVzXG4gICAqIEBwYXJhbSBwYXJhbXMgUGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBmdW5jdGlvblxuICAgKiBAcGFyYW0gYWxpYXMgSWYgdHJ1ZSwgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBzZW5kIHVzaW5nIGFsaWFzZXNcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgY2FsbEVudGl0aWVzKFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgeyBhbGlhcywgLi4ub3B0aW9ucyB9OiB7IGFsaWFzPzogYm9vbGVhbiB9ICYgT0RhdGFPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSW10gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbChwYXJhbXMsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2VudGl0aWVzJyxcbiAgICAgIGFsaWFzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KS5waXBlKG1hcCgoeyBlbnRpdGllcyB9KSA9PiBlbnRpdGllcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgY29sbGVjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtZXRlcnMgdG8gYmUgc2VudCB0byB0aGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIGFsaWFzIElmIHRydWUsIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgc2VuZCB1c2luZyBhbGlhc2VzXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAgICovXG4gIGNhbGxDb2xsZWN0aW9uPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFI+LCBDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFIsIE0+PihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHsgYWxpYXMsIC4uLm9wdGlvbnMgfTogeyBhbGlhcz86IGJvb2xlYW4gfSAmIE9EYXRhT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8QyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnZW50aXRpZXMnLFxuICAgICAgYWxpYXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgZW50aXRpZXMsIGFubm90cyB9KSA9PlxuICAgICAgICBlbnRpdGllc1xuICAgICAgICAgID8gdGhpcy5hc0NvbGxlY3Rpb248TSwgQz4oZW50aXRpZXMsIHsgYW5ub3RzLCByZXNldDogdHJ1ZSB9KVxuICAgICAgICAgIDogbnVsbFxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=
|
|
@@ -70,8 +70,8 @@ export class ODataStructuredTypeFieldParser extends ODataAnnotatable {
|
|
|
70
70
|
}
|
|
71
71
|
//#region Deserialize
|
|
72
72
|
parse(parser, value, options) {
|
|
73
|
-
const type = Types.isPlainObject(value)
|
|
74
|
-
? options
|
|
73
|
+
const type = options !== undefined && Types.isPlainObject(value)
|
|
74
|
+
? options.helper.type(value)
|
|
75
75
|
: undefined;
|
|
76
76
|
if (type !== undefined) {
|
|
77
77
|
return parser
|
|
@@ -98,8 +98,8 @@ export class ODataStructuredTypeFieldParser extends ODataAnnotatable {
|
|
|
98
98
|
//#endregion
|
|
99
99
|
//#region Serialize
|
|
100
100
|
toJson(parser, value, options) {
|
|
101
|
-
const type = Types.isPlainObject(value)
|
|
102
|
-
? options
|
|
101
|
+
const type = options !== undefined && Types.isPlainObject(value)
|
|
102
|
+
? options.helper.type(value)
|
|
103
103
|
: undefined;
|
|
104
104
|
if (type !== undefined) {
|
|
105
105
|
return parser
|
|
@@ -409,4 +409,4 @@ export class ODataStructuredTypeParser extends ODataAnnotatable {
|
|
|
409
409
|
return !Types.isEmpty(errors) ? errors : undefined;
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NjaGVtYS9wYXJzZXJzL3N0cnVjdHVyZWQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFdBQVcsR0FNWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQW1CbEQsTUFBTSxPQUFPLGtCQUFrQjtJQUc3QixZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBb0M7UUFDM0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFZLEVBQ1YsUUFBUSxFQUNSLGtCQUFrQixHQUluQjtRQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sOEJBQ1gsU0FBUSxnQkFBZ0I7SUFpQnhCLFlBQ0UsSUFBWSxFQUNaLGNBQThDLEVBQzlDLEtBQWdDO1FBRWhDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQ2hELENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUNuRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQ04sS0FBVSxFQUNWLEVBQ0UsTUFBTSxFQUNOLFVBQVUsR0FBRyxLQUFLLE1BSWhCLEVBQUU7UUFNTixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUUvRCxDQUFDO1NBQ0w7YUFBTSxJQUNMLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3RCLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFDekIsS0FBSyxLQUFLLElBQUksQ0FBQztZQUNqQixDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxFQUN4QztZQUNBLE1BQU07Z0JBQ0osSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQ3hELEVBQWdDLENBQUM7U0FDckM7YUFBTSxJQUNMLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQ3hEO1lBQ0EsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDOUQ7YUFBTTtZQUNMLFlBQVk7WUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFVLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDWixJQUNFLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2QsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsSUFBSSxzQ0FBc0M7Z0JBQzFHLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLHVDQUF1QztjQUMxRTtnQkFDQSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pCO1lBQ0QsSUFDRSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7Z0JBQzVCLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQ3pCLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFDN0I7Z0JBQ0EsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUMxQjtTQUNGO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JELENBQUM7SUFFRCxxQkFBcUI7SUFDYixLQUFLLENBQ1gsTUFBb0MsRUFDcEMsS0FBVSxFQUNWLE9BQXVCO1FBRXZCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDN0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixPQUFPLE1BQU07aUJBQ1YsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNwQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVUsRUFBRSxPQUF1QjtRQUM3QyxNQUFNLGFBQWEsR0FDakIsT0FBTyxLQUFLLFNBQVM7WUFDbkIsQ0FBQyxDQUFDLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSx5QkFBeUIsRUFBRTtZQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBc0MsQ0FBQztZQUMzRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN6QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDcEMsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLGFBQWE7U0FDYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELFlBQVk7SUFFWixtQkFBbUI7SUFDWCxNQUFNLENBQ1osTUFBb0MsRUFDcEMsS0FBVSxFQUNWLE9BQXVCO1FBRXZCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDN0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixPQUFPLE1BQU07aUJBQ1YsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNwQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVEsRUFBRSxPQUF1QjtRQUN6QyxNQUFNLGFBQWEsR0FDakIsT0FBTyxLQUFLLFNBQVM7WUFDbkIsQ0FBQyxDQUFDLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSx5QkFBeUIsRUFBRTtZQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBc0MsQ0FBQztZQUMzRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN6QixDQUFDLENBQUUsS0FBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNwRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDbEMsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLGFBQWE7U0FDYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELFlBQVk7SUFFWixnQkFBZ0I7SUFDaEIsTUFBTSxDQUFDLEtBQVEsRUFBRSxPQUF1QjtRQUN0QyxNQUFNLGFBQWEsR0FDakIsT0FBTyxLQUFLLFNBQVM7WUFDbkIsQ0FBQyxDQUFDLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQy9CLEtBQUssRUFBRSxJQUFJO1lBQ1gsR0FBRyxhQUFhO1NBQ2EsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxZQUFZO0lBRVosU0FBUyxDQUFDLEVBQ1IsYUFBYSxFQUNiLE9BQU8sR0FJUjtRQUNDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtJQUNyQiwyQkFBMkI7SUFDM0IsWUFBWSxDQUFDLFVBQWdDLEVBQUU7UUFDN0MsSUFBSSxNQUFNLEdBQ1IsSUFBSSxDQUFDLE1BQU0sWUFBWSw4QkFBOEI7WUFDckQsSUFBSSxDQUFDLE1BQU0sWUFBWSx5QkFBeUI7WUFDaEQsSUFBSSxDQUFDLE1BQU0sWUFBWSxtQkFBbUI7WUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxDQUFDLENBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFVLENBQUM7UUFFcEQsSUFDRTtZQUNFLFlBQVk7WUFDWixVQUFVO1lBQ1YsZUFBZTtZQUNmLG9CQUFvQjtZQUNwQixVQUFVO1lBQ1YsWUFBWTtTQUNiLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDM0I7WUFDQSxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVTtnQkFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztpQkFDaEQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWU7Z0JBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7aUJBQzFELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxvQkFBb0I7Z0JBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7aUJBQ3BFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVO2dCQUMvQixNQUFNLENBQUMsT0FBTztvQkFDWiwrRUFBK0UsQ0FBQztpQkFDL0UsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVk7Z0JBQUUsTUFBTSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7aUJBQ2xFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVM7Z0JBQ25ELE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUNyQzthQUFNLElBQ0wsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUN0RSxJQUFJLENBQUMsSUFBSSxDQUNWLEtBQUssQ0FBQyxDQUFDLEVBQ1I7WUFDQSxhQUFhO1lBQ2IsTUFBTSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7U0FDekI7YUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEUsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7U0FDeEI7YUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNwRCxNQUFNLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztTQUN6QjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLFVBQVU7WUFDakIsTUFBTSxHQUFHO2dCQUNQLElBQUksRUFBRSxPQUFPO2dCQUNiLEtBQUssRUFBRSxNQUFNO2dCQUNiLGVBQWUsRUFBRSxLQUFLO2FBQ3ZCLENBQUM7UUFDSixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsWUFBWTtJQUVaLEtBQUs7UUFDSCxPQUFPLENBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQzFFLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sWUFBWSxtQkFBbUIsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLE1BQWdDLENBQUM7SUFDL0MsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sWUFBWSx5QkFBeUIsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLE1BQXNDLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHlCQUNYLFNBQVEsZ0JBQWdCO0lBY3hCLFlBQ0UsTUFBK0IsRUFDL0IsU0FBaUIsRUFDakIsS0FBYztRQUVkLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQWJoQixhQUFRLEdBQXFDLEVBQUUsQ0FBQztRQWM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDMUIsTUFBTSxDQUFDLE1BQXVELENBQy9ELENBQUMsR0FBRyxDQUNILENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxJQUFzQjtRQUM3QixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVk7UUFDdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FDYixTQUF5RDtRQUV6RCxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNqQyxJQUFJLEtBQWlELENBQUM7UUFDdEQsS0FBSyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLEtBQUssR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksS0FBSyxLQUFLLFNBQVM7Z0JBQUUsTUFBTTtTQUNoQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVcsQ0FDVCxTQUF5RDtRQUV6RCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksV0FBVyxDQUFDO0lBQ3hELENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLEtBQVUsRUFBRSxPQUF1QjtRQUM3QyxNQUFNLGFBQWEsR0FDakIsT0FBTyxLQUFLLFNBQVM7WUFDbkIsQ0FBQyxDQUFDLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQzNCLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQy9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FDM0UsQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2QsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLEdBQUcsR0FBRztnQkFDTixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxDQUFDO2FBQ3RELENBQUMsRUFDRixFQUFFLENBQ0g7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVk7SUFDWixTQUFTLENBQUMsS0FBUSxFQUFFLE9BQXVCO1FBQ3pDLE1BQU0sYUFBYSxHQUNqQixPQUFPLEtBQUssU0FBUztZQUNuQixDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDM0IsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDL0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSztZQUNkLEtBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUztZQUNuQyxLQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FDbEMsQ0FBQztRQUNGLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2QsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLEdBQUcsR0FBRztnQkFDTixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFFLEtBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxDQUFDO2FBQzdELENBQUMsRUFDRixFQUFFLENBQ0g7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVM7SUFDVCxNQUFNLENBQUMsS0FBUSxFQUFFLE9BQXVCO1FBQ3RDLE1BQU0sYUFBYSxHQUNqQixPQUFPLEtBQUssU0FBUztZQUNuQixDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUNSLGFBQWEsRUFDYixPQUFPLEdBSVI7UUFDQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBbUMsQ0FBQztZQUMxRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0QjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BELEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLEdBQUcsS0FBWSxDQUFDO2dCQUNyQixJQUFJLFVBQVUsR0FBRyxJQUFrRCxDQUFDO2dCQUNwRSxJQUFJLEtBQXNELENBQUM7Z0JBQzNELEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2xDLElBQUksVUFBVSxLQUFLLFNBQVM7d0JBQUUsTUFBTTtvQkFDcEMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO29CQUN2RCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7d0JBQ3ZCLENBQUMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQy9DLFVBQVUsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7NEJBQ25DLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFOzRCQUNwQixDQUFDLENBQUMsU0FBUyxDQUFDO3FCQUNmO2lCQUNGO2dCQUNELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO29CQUMxQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDOUM7YUFDRjtTQUNGO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUM3QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQ3ZELENBQUM7UUFDRixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO29CQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDZCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNsRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxDQUFDLFVBQWdDLEVBQUU7UUFDN0MsSUFBSSxNQUFNLEdBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDdEQsT0FBTyxFQUFFLHlDQUF5QztZQUNsRCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO1lBQ2xELElBQUksRUFBRSxRQUFRO1lBQ2QsVUFBVSxFQUFFLEVBQUU7WUFDZCxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDL0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvRCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBZSxPQUFPLENBQUMsTUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDekUsQ0FBQztRQUNGLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDL0IsRUFBRSxFQUNGLE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLE1BQU07YUFDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNULElBQUksTUFBTSxHQUNSLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTTtnQkFDeEMsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxNQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDakMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNoQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNO2dCQUM1QyxNQUFNLEdBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBZSxDQUlqQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDakQsQ0FBQztRQUNGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7WUFDaEIsR0FBRyxNQUFNLENBQUMsUUFBUTtZQUNsQixHQUFHLE1BQU07aUJBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDWixPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLFFBQVE7Z0JBQzVDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFlLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQ2hCO2lCQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QixDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FDTixLQUFVLEVBQ1YsRUFDRSxNQUFNLEVBQ04sVUFBVSxHQUFHLEtBQUssTUFLaEIsRUFBRTtRQUVOLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2xFLEVBQUUsQ0FBNEIsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBZSxDQUFDLENBQUM7WUFDM0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQzNCO1NBQ0Y7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NUFVURUQsIERFU0NSSVBUSU9OLCBMT05HX0RFU0NSSVBUSU9OIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4uLy4uL29wdGlvbnMnO1xuaW1wb3J0IHsgcmF3IH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3F1ZXJ5JztcbmltcG9ydCB7XG4gIE5PTkVfUEFSU0VSLFxuICBPcHRpb25zSGVscGVyLFxuICBQYXJzZXIsXG4gIFN0cnVjdHVyZWRUeXBlQ29uZmlnLFxuICBTdHJ1Y3R1cmVkVHlwZUZpZWxkQ29uZmlnLFxuICBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgU3RyaW5ncywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBPRGF0YUFubm90YXRhYmxlIH0gZnJvbSAnLi4vYW5ub3RhdGlvbic7XG5pbXBvcnQgeyBPRGF0YUVudW1UeXBlUGFyc2VyIH0gZnJvbSAnLi9lbnVtLXR5cGUnO1xuXG4vLyBKU09OIFNDSEVNQVxudHlwZSBKc29uU2NoZW1hU2VsZWN0PFQ+ID0gQXJyYXk8a2V5b2YgVD47XG50eXBlIEpzb25TY2hlbWFDdXN0b208VD4gPSB7XG4gIFtQIGluIGtleW9mIFRdPzogKFxuICAgIHNjaGVtYTogYW55LFxuICAgIGZpZWxkOiBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8VFtQXT5cbiAgKSA9PiBhbnk7XG59O1xudHlwZSBKc29uU2NoZW1hRXhwYW5kPFQ+ID0geyBbUCBpbiBrZXlvZiBUXT86IEpzb25TY2hlbWFPcHRpb25zPFRbUF0+IH07XG50eXBlIEpzb25TY2hlbWFSZXF1aXJlZDxUPiA9IHsgW1AgaW4ga2V5b2YgVF0/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBKc29uU2NoZW1hT3B0aW9uczxUPiA9IHtcbiAgc2VsZWN0PzogSnNvblNjaGVtYVNlbGVjdDxUPjtcbiAgY3VzdG9tPzogSnNvblNjaGVtYUN1c3RvbTxUPjtcbiAgZXhwYW5kPzogSnNvblNjaGVtYUV4cGFuZDxUPjtcbiAgcmVxdWlyZWQ/OiBKc29uU2NoZW1hUmVxdWlyZWQ8VD47XG59O1xuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdHlUeXBlS2V5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZztcbiAgY29uc3RydWN0b3IoeyBuYW1lLCBhbGlhcyB9OiB7IG5hbWU6IHN0cmluZzsgYWxpYXM/OiBzdHJpbmcgfSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5hbGlhcyA9IGFsaWFzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVJlZmVyZW50aWFsIHtcbiAgcHJvcGVydHk6IHN0cmluZztcbiAgcmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICBwcm9wZXJ0eSxcbiAgICByZWZlcmVuY2VkUHJvcGVydHksXG4gIH06IHtcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIHJlZmVyZW5jZWRQcm9wZXJ0eTogc3RyaW5nO1xuICB9KSB7XG4gICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIHRoaXMucmVmZXJlbmNlZFByb3BlcnR5ID0gcmVmZXJlbmNlZFByb3BlcnR5O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8VD5cbiAgZXh0ZW5kcyBPRGF0YUFubm90YXRhYmxlXG4gIGltcGxlbWVudHMgUGFyc2VyPFQ+XG57XG4gIG5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBzdHJ1Y3R1cmVkVHlwZTogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+O1xuICB0eXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgcGFyc2VyOiBQYXJzZXI8VD47XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgY29sbGVjdGlvbjogYm9vbGVhbjtcbiAgbnVsbGFibGU6IGJvb2xlYW47XG4gIG5hdmlnYXRpb246IGJvb2xlYW47XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG4gIHJlZmVyZW50aWFsczogT0RhdGFSZWZlcmVudGlhbFtdO1xuICBvcHRpb25zSGVscGVyPzogT3B0aW9uc0hlbHBlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZFR5cGU6IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8YW55PixcbiAgICBmaWVsZDogU3RydWN0dXJlZFR5cGVGaWVsZENvbmZpZ1xuICApIHtcbiAgICBzdXBlcihmaWVsZCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN0cnVjdHVyZWRUeXBlID0gc3RydWN0dXJlZFR5cGU7XG4gICAgdGhpcy50eXBlID0gZmllbGQudHlwZTtcbiAgICB0aGlzLnBhcnNlciA9IE5PTkVfUEFSU0VSO1xuICAgIHRoaXMucmVmZXJlbnRpYWxzID0gKGZpZWxkLnJlZmVyZW50aWFscyB8fCBbXSkubWFwKFxuICAgICAgKHJlZmVyZW50aWFsKSA9PiBuZXcgT0RhdGFSZWZlcmVudGlhbChyZWZlcmVudGlhbClcbiAgICApO1xuICAgIHRoaXMuZGVmYXVsdCA9IGZpZWxkLmRlZmF1bHQ7XG4gICAgdGhpcy5tYXhMZW5ndGggPSBmaWVsZC5tYXhMZW5ndGg7XG4gICAgdGhpcy5udWxsYWJsZSA9IGZpZWxkLm51bGxhYmxlICE9PSB1bmRlZmluZWQgPyBmaWVsZC5udWxsYWJsZSA6IHRydWU7XG4gICAgdGhpcy5jb2xsZWN0aW9uID0gQm9vbGVhbihmaWVsZC5jb2xsZWN0aW9uKTtcbiAgICB0aGlzLm5hdmlnYXRpb24gPSBCb29sZWFuKGZpZWxkLm5hdmlnYXRpb24pO1xuICAgIHRoaXMucHJlY2lzaW9uID0gZmllbGQucHJlY2lzaW9uO1xuICAgIHRoaXMuc2NhbGUgPSBmaWVsZC5zY2FsZTtcbiAgfVxuXG4gIHZhbGlkYXRlKFxuICAgIHZhbHVlOiBhbnksXG4gICAge1xuICAgICAgbWV0aG9kLFxuICAgICAgbmF2aWdhdGlvbiA9IGZhbHNlLFxuICAgIH06IHtcbiAgICAgIG1ldGhvZD86ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCAnbW9kaWZ5JztcbiAgICAgIG5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOlxuICAgIHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH1cbiAgICB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9W11cbiAgICB8IHN0cmluZ1tdXG4gICAgfCB1bmRlZmluZWQge1xuICAgIGxldCBlcnJvcnM7XG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbiAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZXJyb3JzID0gdmFsdWUubWFwKCh2KSA9PiB0aGlzLnZhbGlkYXRlKHYsIHsgbWV0aG9kLCBuYXZpZ2F0aW9uIH0pKSBhcyB7XG4gICAgICAgIFtuYW1lOiBzdHJpbmddOiBhbnlbXTtcbiAgICAgIH1bXTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgKHRoaXMuaXNTdHJ1Y3R1cmVkVHlwZSgpICYmXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdmFsdWUgIT09IG51bGwpIHx8XG4gICAgICAodGhpcy5uYXZpZ2F0aW9uICYmIHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICBlcnJvcnMgPVxuICAgICAgICB0aGlzLnN0cnVjdHVyZWQoKS52YWxpZGF0ZSh2YWx1ZSwgeyBtZXRob2QsIG5hdmlnYXRpb24gfSkgfHxcbiAgICAgICAgKHt9IGFzIHsgW25hbWU6IHN0cmluZ106IGFueVtdIH0pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmlzRW51bVR5cGUoKSAmJlxuICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJylcbiAgICApIHtcbiAgICAgIGVycm9ycyA9IHRoaXMuZW51bSgpLnZhbGlkYXRlKHZhbHVlLCB7IG1ldGhvZCwgbmF2aWdhdGlvbiB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSXNFZG1UeXBlXG4gICAgICBjb25zdCBjb21wdXRlZCA9IHRoaXMuYW5ub3RhdGVkVmFsdWU8Ym9vbGVhbj4oQ09NUFVURUQpO1xuICAgICAgZXJyb3JzID0gW107XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLm51bGxhYmxlICYmXG4gICAgICAgICh2YWx1ZSA9PT0gbnVsbCB8fCAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBtZXRob2QgIT09ICdtb2RpZnknKSkgJiYgLy8gSXMgbnVsbCBvciB1bmRlZmluZWQgd2l0aG91dCBwYXRjaD9cbiAgICAgICAgIShjb21wdXRlZCAmJiBtZXRob2QgPT09ICdjcmVhdGUnKSAvLyBOb3QgKElzIENvbXB1dGVkIGZpZWxkIGFuZCBjcmVhdGUpID9cbiAgICAgICkge1xuICAgICAgICBlcnJvcnMucHVzaChgcmVxdWlyZWRgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIHZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgZXJyb3JzLnB1c2goYG1heGxlbmd0aGApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gIVR5cGVzLmlzRW1wdHkoZXJyb3JzKSA/IGVycm9ycyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBEZXNlcmlhbGl6ZVxuICBwcml2YXRlIHBhcnNlKFxuICAgIHBhcnNlcjogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxUPixcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyXG4gICk6IGFueSB7XG4gICAgY29uc3QgdHlwZSA9IFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgICA/IG9wdGlvbnM/LmhlbHBlci50eXBlKHZhbHVlKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHBhcnNlclxuICAgICAgICAuY2hpbGRQYXJzZXIoKGMpID0+IGMuaXNUeXBlT2YodHlwZSkpXG4gICAgICAgIC5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZXIuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgZGVzZXJpYWxpemUodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBUIHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgaWYgKHRoaXMucGFyc2VyIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcikge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5wYXJzZXIgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxUPjtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/IHZhbHVlLm1hcCgodikgPT4gdGhpcy5wYXJzZShwYXJzZXIsIHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgICA6IHRoaXMucGFyc2UocGFyc2VyLCB2YWx1ZSwgcGFyc2VyT3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwge1xuICAgICAgZmllbGQ6IHRoaXMsXG4gICAgICAuLi5wYXJzZXJPcHRpb25zLFxuICAgIH0gYXMgU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBTZXJpYWxpemVcbiAgcHJpdmF0ZSB0b0pzb24oXG4gICAgcGFyc2VyOiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPFQ+LFxuICAgIHZhbHVlOiBhbnksXG4gICAgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXJcbiAgKTogYW55IHtcbiAgICBjb25zdCB0eXBlID0gVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSlcbiAgICAgID8gb3B0aW9ucz8uaGVscGVyLnR5cGUodmFsdWUpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcGFyc2VyXG4gICAgICAgIC5jaGlsZFBhcnNlcigoYykgPT4gYy5pc1R5cGVPZih0eXBlKSlcbiAgICAgICAgLnNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZXIuc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIGNvbnN0IHBhcnNlck9wdGlvbnMgPVxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbmV3IE9EYXRhUGFyc2VyT3B0aW9ucyhvcHRpb25zKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0hlbHBlcjtcbiAgICBpZiAodGhpcy5wYXJzZXIgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyKSB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLnBhcnNlciBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPFQ+O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gKHZhbHVlIGFzIGFueVtdKS5tYXAoKHYpID0+IHRoaXMudG9Kc29uKHBhcnNlciwgdiwgcGFyc2VyT3B0aW9ucykpXG4gICAgICAgIDogdGhpcy50b0pzb24ocGFyc2VyLCB2YWx1ZSwgcGFyc2VyT3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnBhcnNlci5zZXJpYWxpemUodmFsdWUsIHtcbiAgICAgIGZpZWxkOiB0aGlzLFxuICAgICAgLi4ucGFyc2VyT3B0aW9ucyxcbiAgICB9IGFzIFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gRW5jb2RlXG4gIGVuY29kZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnNlck9wdGlvbnMgPVxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbmV3IE9EYXRhUGFyc2VyT3B0aW9ucyhvcHRpb25zKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0hlbHBlcjtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIuZW5jb2RlKHZhbHVlLCB7XG4gICAgICBmaWVsZDogdGhpcyxcbiAgICAgIC4uLnBhcnNlck9wdGlvbnMsXG4gICAgfSBhcyBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgY29uZmlndXJlKHtcbiAgICBwYXJzZXJGb3JUeXBlLFxuICAgIG9wdGlvbnMsXG4gIH06IHtcbiAgICBwYXJzZXJGb3JUeXBlOiAodHlwZTogc3RyaW5nKSA9PiBQYXJzZXI8YW55PjtcbiAgICBvcHRpb25zOiBPcHRpb25zSGVscGVyO1xuICB9KSB7XG4gICAgdGhpcy5vcHRpb25zSGVscGVyID0gb3B0aW9ucztcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlckZvclR5cGUodGhpcy50eXBlKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVmYXVsdCA9IHRoaXMuZGVzZXJpYWxpemUodGhpcy5kZWZhdWx0LCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gSnNvbiBTY2hlbWFcbiAgLy8gaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvXG4gIHRvSnNvblNjaGVtYShvcHRpb25zOiBKc29uU2NoZW1hT3B0aW9uczxUPiA9IHt9KSB7XG4gICAgbGV0IHNjaGVtYTogYW55ID1cbiAgICAgIHRoaXMucGFyc2VyIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyIHx8XG4gICAgICB0aGlzLnBhcnNlciBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXIgfHxcbiAgICAgIHRoaXMucGFyc2VyIGluc3RhbmNlb2YgT0RhdGFFbnVtVHlwZVBhcnNlclxuICAgICAgICA/IHRoaXMucGFyc2VyLnRvSnNvblNjaGVtYShvcHRpb25zKVxuICAgICAgICA6ICh7IHRpdGxlOiB0aGlzLm5hbWUsIHR5cGU6ICdvYmplY3QnIH0gYXMgYW55KTtcblxuICAgIGlmIChcbiAgICAgIFtcbiAgICAgICAgJ0VkbS5TdHJpbmcnLFxuICAgICAgICAnRWRtLkRhdGUnLFxuICAgICAgICAnRWRtLlRpbWVPZkRheScsXG4gICAgICAgICdFZG0uRGF0ZVRpbWVPZmZzZXQnLFxuICAgICAgICAnRWRtLkd1aWQnLFxuICAgICAgICAnRWRtLkJpbmFyeScsXG4gICAgICBdLmluZGV4T2YodGhpcy50eXBlKSAhPT0gLTFcbiAgICApIHtcbiAgICAgIHNjaGVtYS50eXBlID0gJ3N0cmluZyc7XG4gICAgICBpZiAodGhpcy50eXBlID09PSAnRWRtLkRhdGUnKSBzY2hlbWEuZm9ybWF0ID0gJ2RhdGUnO1xuICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnRWRtLlRpbWVPZkRheScpIHNjaGVtYS5mb3JtYXQgPSAndGltZSc7XG4gICAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdFZG0uRGF0ZVRpbWVPZmZzZXQnKSBzY2hlbWEuZm9ybWF0ID0gJ2RhdGUtdGltZSc7XG4gICAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdFZG0uR3VpZCcpXG4gICAgICAgIHNjaGVtYS5wYXR0ZXJuID1cbiAgICAgICAgICAnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnO1xuICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnRWRtLkJpbmFyeScpIHNjaGVtYS5jb250ZW50RW5jb2RpbmcgPSAnYmFzZTY0JztcbiAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ0VkbS5TdHJpbmcnICYmIHRoaXMubWF4TGVuZ3RoKVxuICAgICAgICBzY2hlbWEubWF4TGVuZ3RoID0gdGhpcy5tYXhMZW5ndGg7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIFsnRWRtLkludDY0JywgJ0VkbS5JbnQzMicsICdFZG0uSW50MTYnLCAnRWRtLkJ5dGUnLCAnRWRtLlNCeXRlJ10uaW5kZXhPZihcbiAgICAgICAgdGhpcy50eXBlXG4gICAgICApICE9PSAtMVxuICAgICkge1xuICAgICAgLy9UT0RPOiBSYW5nZVxuICAgICAgc2NoZW1hLnR5cGUgPSAnaW50ZWdlcic7XG4gICAgfSBlbHNlIGlmIChbJ0VkbS5EZWNpbWFsJywgJ0VkbS5Eb3VibGUnXS5pbmRleE9mKHRoaXMudHlwZSkgIT09IC0xKSB7XG4gICAgICBzY2hlbWEudHlwZSA9ICdudW1iZXInO1xuICAgIH0gZWxzZSBpZiAoWydFZG0uQm9vbGVhbiddLmluZGV4T2YodGhpcy50eXBlKSAhPT0gLTEpIHtcbiAgICAgIHNjaGVtYS50eXBlID0gJ2Jvb2xlYW4nO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWZhdWx0KSBzY2hlbWEuZGVmYXVsdCA9IHRoaXMuZGVmYXVsdDtcbiAgICBpZiAodGhpcy5udWxsYWJsZSkgc2NoZW1hLnR5cGUgPSBbc2NoZW1hLnR5cGUsICdudWxsJ107XG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbilcbiAgICAgIHNjaGVtYSA9IHtcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgaXRlbXM6IHNjaGVtYSxcbiAgICAgICAgYWRkaXRpb25hbEl0ZW1zOiBmYWxzZSxcbiAgICAgIH07XG4gICAgcmV0dXJuIHNjaGVtYTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBpc0tleSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zdHJ1Y3R1cmVkVHlwZS5rZXlzPy5maW5kKChrKSA9PiBrLm5hbWUgPT09IHRoaXMubmFtZSkgIT09IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICBoYXNSZWZlcmVudGlhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbnRpYWxzLmxlbmd0aCAhPT0gMDtcbiAgfVxuXG4gIGlzRWRtVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlLnN0YXJ0c1dpdGgoJ0VkbS4nKTtcbiAgfVxuXG4gIGlzRW51bVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGluc3RhbmNlb2YgT0RhdGFFbnVtVHlwZVBhcnNlcjtcbiAgfVxuXG4gIGVudW0oKSB7XG4gICAgaWYgKCF0aGlzLmlzRW51bVR5cGUoKSkgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBhcmUgbm90IEVudW1UeXBlJyk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGFzIE9EYXRhRW51bVR5cGVQYXJzZXI8VD47XG4gIH1cblxuICBpc1N0cnVjdHVyZWRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlciBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI7XG4gIH1cblxuICBzdHJ1Y3R1cmVkKCkge1xuICAgIGlmICghdGhpcy5pc1N0cnVjdHVyZWRUeXBlKCkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpZWxkIGFyZSBub3QgU3RydWN1dHVyZWRUeXBlJyk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGFzIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8VD47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8VD5cbiAgZXh0ZW5kcyBPRGF0YUFubm90YXRhYmxlXG4gIGltcGxlbWVudHMgUGFyc2VyPFQ+XG57XG4gIG5hbWU6IHN0cmluZztcbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIG9wZW46IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPGFueT5bXSA9IFtdO1xuICBhbGlhcz86IHN0cmluZztcbiAgYmFzZT86IHN0cmluZztcbiAgcGFyZW50PzogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+O1xuICBrZXlzPzogT0RhdGFFbnRpdHlUeXBlS2V5W107XG4gIGZpZWxkczogT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyPGFueT5bXTtcbiAgb3B0aW9uc0hlbHBlcj86IE9wdGlvbnNIZWxwZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29uZmlnOiBTdHJ1Y3R1cmVkVHlwZUNvbmZpZzxUPixcbiAgICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgICBhbGlhcz86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihjb25maWcpO1xuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuYmFzZSA9IGNvbmZpZy5iYXNlO1xuICAgIHRoaXMub3BlbiA9IGNvbmZpZy5vcGVuIHx8IGZhbHNlO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuYWxpYXMgPSBhbGlhcztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWcua2V5cykpXG4gICAgICB0aGlzLmtleXMgPSBjb25maWcua2V5cy5tYXAoKGtleSkgPT4gbmV3IE9EYXRhRW50aXR5VHlwZUtleShrZXkpKTtcbiAgICB0aGlzLmZpZWxkcyA9IE9iamVjdC5lbnRyaWVzPFN0cnVjdHVyZWRUeXBlRmllbGRDb25maWc+KFxuICAgICAgY29uZmlnLmZpZWxkcyBhcyB7IFtQIGluIGtleW9mIFRdOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkQ29uZmlnIH1cbiAgICApLm1hcChcbiAgICAgIChbbmFtZSwgY29uZmlnXSkgPT4gbmV3IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcihuYW1lLCB0aGlzLCBjb25maWcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuaWNlciBsb29raW5nIHRpdGxlLlxuICAgKiBUaXRsZWl6ZSBpcyBtZWFudCBmb3IgY3JlYXRpbmcgcHJldHR5IG91dHB1dC5cbiAgICogQHBhcmFtIHRlcm0gVGhlIHRlcm0gb2YgdGhlIGFubm90YXRpb24gdG8gZmluZC5cbiAgICogQHJldHVybnMgVGhlIHRpdGxlaXplZCBzdHJpbmcuXG4gICAqL1xuICB0aXRsZWl6ZSh0ZXJtPzogc3RyaW5nIHwgUmVnRXhwKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRlcm0gJiYgdGhpcy5hbm5vdGF0ZWRWYWx1ZSh0ZXJtKSkgfHwgU3RyaW5ncy50aXRsZUNhc2UodGhpcy5uYW1lKTtcbiAgfVxuXG4gIGlzVHlwZU9mKHR5cGU6IHN0cmluZykge1xuICAgIHZhciBuYW1lcyA9IFtgJHt0aGlzLm5hbWVzcGFjZX0uJHt0aGlzLm5hbWV9YF07XG4gICAgaWYgKHRoaXMuYWxpYXMpIG5hbWVzLnB1c2goYCR7dGhpcy5hbGlhc30uJHt0aGlzLm5hbWV9YCk7XG4gICAgcmV0dXJuIG5hbWVzLmluZGV4T2YodHlwZSkgIT09IC0xO1xuICB9XG5cbiAgaXNTdWJ0eXBlT2YodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNUeXBlT2YodHlwZSkpIHJldHVybiB0cnVlO1xuICAgIGlmICh0aGlzLnBhcmVudCkgcmV0dXJuIHRoaXMucGFyZW50LmlzU3VidHlwZU9mKHR5cGUpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZpbmRDaGlsZFBhcnNlcihcbiAgICBwcmVkaWNhdGU6IChwOiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPGFueT4pID0+IGJvb2xlYW5cbiAgKTogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocHJlZGljYXRlKHRoaXMpKSByZXR1cm4gdGhpcztcbiAgICBsZXQgbWF0Y2g6IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8YW55PiB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGxldCBjaCBvZiB0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBtYXRjaCA9IGNoLmZpbmRDaGlsZFBhcnNlcihwcmVkaWNhdGUpO1xuICAgICAgaWYgKG1hdGNoICE9PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH1cblxuICBjaGlsZFBhcnNlcihcbiAgICBwcmVkaWNhdGU6IChwOiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPGFueT4pID0+IGJvb2xlYW5cbiAgKTogUGFyc2VyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRDaGlsZFBhcnNlcihwcmVkaWNhdGUpIHx8IE5PTkVfUEFSU0VSO1xuICB9XG5cbiAgLy8gRGVzZXJpYWxpemVcbiAgZGVzZXJpYWxpemUodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBUIHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgaWYgKHRoaXMucGFyZW50ICE9PSB1bmRlZmluZWQpXG4gICAgICB2YWx1ZSA9IHRoaXMucGFyZW50LmRlc2VyaWFsaXplKHZhbHVlLCBwYXJzZXJPcHRpb25zKTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoXG4gICAgICAoZikgPT5cbiAgICAgICAgZi5uYW1lIGluIHZhbHVlICYmIHZhbHVlW2YubmFtZV0gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZVtmLm5hbWVdICE9PSBudWxsXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmFsdWUsXG4gICAgICAuLi5maWVsZHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBmKSA9PiAoe1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBbZi5uYW1lXTogZi5kZXNlcmlhbGl6ZSh2YWx1ZVtmLm5hbWVdLCBwYXJzZXJPcHRpb25zKSxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApLFxuICAgIH07XG4gIH1cblxuICAvLyBTZXJpYWxpemVcbiAgc2VyaWFsaXplKHZhbHVlOiBULCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBuZXcgT0RhdGFQYXJzZXJPcHRpb25zKG9wdGlvbnMpXG4gICAgICAgIDogdGhpcy5vcHRpb25zSGVscGVyO1xuICAgIGlmICh0aGlzLnBhcmVudCAhPT0gdW5kZWZpbmVkKVxuICAgICAgdmFsdWUgPSB0aGlzLnBhcmVudC5zZXJpYWxpemUodmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzLmZpbHRlcihcbiAgICAgIChmKSA9PlxuICAgICAgICBmLm5hbWUgaW4gdmFsdWUgJiZcbiAgICAgICAgKHZhbHVlIGFzIGFueSlbZi5uYW1lXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICh2YWx1ZSBhcyBhbnkpW2YubmFtZV0gIT09IG51bGxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi52YWx1ZSxcbiAgICAgIC4uLmZpZWxkcy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIGYpID0+ICh7XG4gICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgIFtmLm5hbWVdOiBmLnNlcmlhbGl6ZSgodmFsdWUgYXMgYW55KVtmLm5hbWVdLCBwYXJzZXJPcHRpb25zKSxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApLFxuICAgIH07XG4gIH1cblxuICAvLyBFbmNvZGVcbiAgZW5jb2RlKHZhbHVlOiBULCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBuZXcgT0RhdGFQYXJzZXJPcHRpb25zKG9wdGlvbnMpXG4gICAgICAgIDogdGhpcy5vcHRpb25zSGVscGVyO1xuICAgIHJldHVybiByYXcoSlNPTi5zdHJpbmdpZnkodGhpcy5zZXJpYWxpemUodmFsdWUsIHBhcnNlck9wdGlvbnMpKSk7XG4gIH1cblxuICBjb25maWd1cmUoe1xuICAgIHBhcnNlckZvclR5cGUsXG4gICAgb3B0aW9ucyxcbiAgfToge1xuICAgIHBhcnNlckZvclR5cGU6ICh0eXBlOiBzdHJpbmcpID0+IFBhcnNlcjxhbnk+O1xuICAgIG9wdGlvbnM6IE9wdGlvbnNIZWxwZXI7XG4gIH0pIHtcbiAgICB0aGlzLm9wdGlvbnNIZWxwZXIgPSBvcHRpb25zO1xuICAgIGlmICh0aGlzLmJhc2UpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHBhcnNlckZvclR5cGUodGhpcy5iYXNlKSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPGFueT47XG4gICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaCh0aGlzKTtcbiAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKChmKSA9PiBmLmNvbmZpZ3VyZSh7IHBhcnNlckZvclR5cGUsIG9wdGlvbnMgfSkpO1xuICB9XG5cbiAgcmVzb2x2ZUtleSh2YWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQga2V5ID0gdGhpcy5wYXJlbnQ/LnJlc29sdmVLZXkodmFsdWUpIHx8IHt9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMua2V5cykgJiYgdGhpcy5rZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAodmFyIGsgb2YgdGhpcy5rZXlzKSB7XG4gICAgICAgIGxldCB2ID0gdmFsdWUgYXMgYW55O1xuICAgICAgICBsZXQgc3RydWN0dXJlZCA9IHRoaXMgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgZmllbGQ6IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcjxhbnk+IHwgdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGsubmFtZS5zcGxpdCgnLycpKSB7XG4gICAgICAgICAgaWYgKHN0cnVjdHVyZWQgPT09IHVuZGVmaW5lZCkgYnJlYWs7XG4gICAgICAgICAgZmllbGQgPSBzdHJ1Y3R1cmVkLmZpZWxkcy5maW5kKChmKSA9PiBmLm5hbWUgPT09IG5hbWUpO1xuICAgICAgICAgIGlmIChmaWVsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2ID0gVHlwZXMuaXNQbGFpbk9iamVjdCh2KSA/IHZbZmllbGQubmFtZV0gOiB2O1xuICAgICAgICAgICAgc3RydWN0dXJlZCA9IGZpZWxkLmlzU3RydWN0dXJlZFR5cGUoKVxuICAgICAgICAgICAgICA/IGZpZWxkLnN0cnVjdHVyZWQoKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAga2V5W2suYWxpYXMgfHwgZmllbGQubmFtZV0gPSBmaWVsZC5lbmNvZGUodik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFR5cGVzLmlzRW1wdHkoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gT2JqZWN0cy5yZXNvbHZlS2V5KGtleSk7XG4gIH1cblxuICBkZWZhdWx0cygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wYXJlbnQ/LmRlZmF1bHRzKCkgfHwge307XG4gICAgbGV0IGZpZWxkcyA9IHRoaXMuZmllbGRzLmZpbHRlcihcbiAgICAgIChmKSA9PiBmLmRlZmF1bHQgIT09IHVuZGVmaW5lZCB8fCBmLmlzU3RydWN0dXJlZFR5cGUoKVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZhbHVlLFxuICAgICAgLi4uZmllbGRzLnJlZHVjZSgoYWNjLCBmKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGYuaXNTdHJ1Y3R1cmVkVHlwZSgpXG4gICAgICAgICAgPyBmLnN0cnVjdHVyZWQoKS5kZWZhdWx0cygpXG4gICAgICAgICAgOiBmLmRlZmF1bHQ7XG4gICAgICAgIHJldHVybiBUeXBlcy5pc0VtcHR5KHZhbHVlKSA/IGFjYyA6IHsgLi4uYWNjLCBbZi5uYW1lXTogdmFsdWUgfTtcbiAgICAgIH0sIHt9KSxcbiAgICB9O1xuICB9XG5cbiAgLy8gSnNvbiBTY2hlbWFcbiAgdG9Kc29uU2NoZW1hKG9wdGlvbnM6IEpzb25TY2hlbWFPcHRpb25zPFQ+ID0ge30pIHtcbiAgICBsZXQgc2NoZW1hOiBhbnkgPSB0aGlzLnBhcmVudD8udG9Kc29uU2NoZW1hKG9wdGlvbnMpIHx8IHtcbiAgICAgICRzY2hlbWE6ICdodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSMnLFxuICAgICAgJGlkOiBgJHt0aGlzLm5hbWVzcGFjZX0uJHt0aGlzLm5hbWV9YCxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlaXplKERFU0NSSVBUSU9OKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmFubm90YXRlZFZhbHVlKExPTkdfREVTQ1JJUFRJT04pLFxuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgIHJlcXVpcmVkOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzLmZpbHRlcihcbiAgICAgIChmKSA9PlxuICAgICAgICAoIWYubmF2aWdhdGlvbiB8fCAob3B0aW9ucy5leHBhbmQgJiYgZi5uYW1lIGluIG9wdGlvbnMuZXhwYW5kKSkgJiZcbiAgICAgICAgKCFvcHRpb25zLnNlbGVjdCB8fCAoPHN0cmluZ1tdPm9wdGlvbnMuc2VsZWN0KS5pbmRleE9mKGYubmFtZSkgIT09IC0xKVxuICAgICk7XG4gICAgc2NoZW1hLnByb3BlcnRpZXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBzY2hlbWEucHJvcGVydGllcyxcbiAgICAgIGZpZWxkc1xuICAgICAgICAubWFwKChmKSA9PiB7XG4gICAgICAgICAgbGV0IGV4cGFuZCA9XG4gICAgICAgICAgICBvcHRpb25zLmV4cGFuZCAmJiBmLm5hbWUgaW4gb3B0aW9ucy5leHBhbmRcbiAgICAgICAgICAgICAgPyAob3B0aW9ucy5leHBhbmQgYXMgYW55KVtmLm5hbWVdXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBzY2hlbWEgPSBmLnRvSnNvblNjaGVtYShleHBhbmQpO1xuICAgICAgICAgIGlmIChvcHRpb25zLmN1c3RvbSAmJiBmLm5hbWUgaW4gb3B0aW9ucy5jdXN0b20pXG4gICAgICAgICAgICBzY2hlbWEgPSAoXG4gICAgICAgICAgICAgIG9wdGlvbnMuY3VzdG9tW2YubmFtZSBhcyBrZXlvZiBUXSBhcyAoXG4gICAgICAgICAgICAgICAgc2NoZW1hOiBhbnksXG4gICAgICAgICAgICAgICAgZmllbGQ6IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcjxhbnk+XG4gICAgICAgICAgICAgICkgPT4gYW55XG4gICAgICAgICAgICApKHNjaGVtYSwgZik7XG4gICAgICAgICAgcmV0dXJuIHsgW2YubmFtZV06IHNjaGVtYSB9O1xuICAgICAgICB9KVxuICAgICAgICAucmVkdWNlKChhY2MsIHYpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB2KSwge30pXG4gICAgKTtcbiAgICBzY2hlbWEucmVxdWlyZWQgPSBbXG4gICAgICAuLi5zY2hlbWEucmVxdWlyZWQsXG4gICAgICAuLi5maWVsZHNcbiAgICAgICAgLmZpbHRlcigoZikgPT5cbiAgICAgICAgICBvcHRpb25zLnJlcXVpcmVkICYmIGYubmFtZSBpbiBvcHRpb25zLnJlcXVpcmVkXG4gICAgICAgICAgICA/IG9wdGlvbnMucmVxdWlyZWRbZi5uYW1lIGFzIGtleW9mIFRdXG4gICAgICAgICAgICA6ICFmLm51bGxhYmxlXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoZikgPT4gZi5uYW1lKSxcbiAgICBdO1xuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cblxuICB2YWxpZGF0ZShcbiAgICBhdHRyczogYW55LFxuICAgIHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIG5hdmlnYXRpb24gPSBmYWxzZSxcbiAgICB9OiB7XG4gICAgICBjcmVhdGU/OiBib29sZWFuO1xuICAgICAgbWV0aG9kPzogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdtb2RpZnknO1xuICAgICAgbmF2aWdhdGlvbj86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlcnJvcnMgPSAodGhpcy5wYXJlbnQ/LnZhbGlkYXRlKGF0dHJzLCB7IG1ldGhvZCwgbmF2aWdhdGlvbiB9KSB8fFxuICAgICAge30pIGFzIHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzLmZpbHRlcigoZikgPT4gIWYubmF2aWdhdGlvbiB8fCBuYXZpZ2F0aW9uKTtcbiAgICBmb3IgKHZhciBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXR0cnNbZmllbGQubmFtZSBhcyBrZXlvZiBUXTtcbiAgICAgIGNvbnN0IGVycnMgPSBmaWVsZC52YWxpZGF0ZSh2YWx1ZSwgeyBtZXRob2QsIG5hdmlnYXRpb24gfSk7XG4gICAgICBpZiAoZXJycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVycm9yc1tmaWVsZC5uYW1lXSA9IGVycnM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAhVHlwZXMuaXNFbXB0eShlcnJvcnMpID8gZXJyb3JzIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NjaGVtYS9wYXJzZXJzL3N0cnVjdHVyZWQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUMsT0FBTyxFQUNMLFdBQVcsR0FNWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQW1CbEQsTUFBTSxPQUFPLGtCQUFrQjtJQUc3QixZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBb0M7UUFDM0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFZLEVBQ1YsUUFBUSxFQUNSLGtCQUFrQixHQUluQjtRQUNDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sOEJBQ1gsU0FBUSxnQkFBZ0I7SUFpQnhCLFlBQ0UsSUFBWSxFQUNaLGNBQThDLEVBQzlDLEtBQWdDO1FBRWhDLEtBQUss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RUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2xFLEVBQUUsQ0FBNEIsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBZSxDQUFDLENBQUM7WUFDM0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3RCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQzNCO1NBQ0Y7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NUFVURUQsIERFU0NSSVBUSU9OLCBMT05HX0RFU0NSSVBUSU9OIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4uLy4uL29wdGlvbnMnO1xuaW1wb3J0IHsgcmF3IH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3F1ZXJ5JztcbmltcG9ydCB7XG4gIE5PTkVfUEFSU0VSLFxuICBPcHRpb25zSGVscGVyLFxuICBQYXJzZXIsXG4gIFN0cnVjdHVyZWRUeXBlQ29uZmlnLFxuICBTdHJ1Y3R1cmVkVHlwZUZpZWxkQ29uZmlnLFxuICBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgU3RyaW5ncywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBPRGF0YUFubm90YXRhYmxlIH0gZnJvbSAnLi4vYW5ub3RhdGlvbic7XG5pbXBvcnQgeyBPRGF0YUVudW1UeXBlUGFyc2VyIH0gZnJvbSAnLi9lbnVtLXR5cGUnO1xuXG4vLyBKU09OIFNDSEVNQVxudHlwZSBKc29uU2NoZW1hU2VsZWN0PFQ+ID0gQXJyYXk8a2V5b2YgVD47XG50eXBlIEpzb25TY2hlbWFDdXN0b208VD4gPSB7XG4gIFtQIGluIGtleW9mIFRdPzogKFxuICAgIHNjaGVtYTogYW55LFxuICAgIGZpZWxkOiBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8VFtQXT5cbiAgKSA9PiBhbnk7XG59O1xudHlwZSBKc29uU2NoZW1hRXhwYW5kPFQ+ID0geyBbUCBpbiBrZXlvZiBUXT86IEpzb25TY2hlbWFPcHRpb25zPFRbUF0+IH07XG50eXBlIEpzb25TY2hlbWFSZXF1aXJlZDxUPiA9IHsgW1AgaW4ga2V5b2YgVF0/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBKc29uU2NoZW1hT3B0aW9uczxUPiA9IHtcbiAgc2VsZWN0PzogSnNvblNjaGVtYVNlbGVjdDxUPjtcbiAgY3VzdG9tPzogSnNvblNjaGVtYUN1c3RvbTxUPjtcbiAgZXhwYW5kPzogSnNvblNjaGVtYUV4cGFuZDxUPjtcbiAgcmVxdWlyZWQ/OiBKc29uU2NoZW1hUmVxdWlyZWQ8VD47XG59O1xuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdHlUeXBlS2V5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZztcbiAgY29uc3RydWN0b3IoeyBuYW1lLCBhbGlhcyB9OiB7IG5hbWU6IHN0cmluZzsgYWxpYXM/OiBzdHJpbmcgfSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5hbGlhcyA9IGFsaWFzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVJlZmVyZW50aWFsIHtcbiAgcHJvcGVydHk6IHN0cmluZztcbiAgcmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICBwcm9wZXJ0eSxcbiAgICByZWZlcmVuY2VkUHJvcGVydHksXG4gIH06IHtcbiAgICBwcm9wZXJ0eTogc3RyaW5nO1xuICAgIHJlZmVyZW5jZWRQcm9wZXJ0eTogc3RyaW5nO1xuICB9KSB7XG4gICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIHRoaXMucmVmZXJlbmNlZFByb3BlcnR5ID0gcmVmZXJlbmNlZFByb3BlcnR5O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8VD5cbiAgZXh0ZW5kcyBPRGF0YUFubm90YXRhYmxlXG4gIGltcGxlbWVudHMgUGFyc2VyPFQ+XG57XG4gIG5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBzdHJ1Y3R1cmVkVHlwZTogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+O1xuICB0eXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgcGFyc2VyOiBQYXJzZXI8VD47XG4gIGRlZmF1bHQ/OiBhbnk7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgY29sbGVjdGlvbjogYm9vbGVhbjtcbiAgbnVsbGFibGU6IGJvb2xlYW47XG4gIG5hdmlnYXRpb246IGJvb2xlYW47XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG4gIHJlZmVyZW50aWFsczogT0RhdGFSZWZlcmVudGlhbFtdO1xuICBvcHRpb25zSGVscGVyPzogT3B0aW9uc0hlbHBlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZFR5cGU6IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8YW55PixcbiAgICBmaWVsZDogU3RydWN0dXJlZFR5cGVGaWVsZENvbmZpZ1xuICApIHtcbiAgICBzdXBlcihmaWVsZCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN0cnVjdHVyZWRUeXBlID0gc3RydWN0dXJlZFR5cGU7XG4gICAgdGhpcy50eXBlID0gZmllbGQudHlwZTtcbiAgICB0aGlzLnBhcnNlciA9IE5PTkVfUEFSU0VSO1xuICAgIHRoaXMucmVmZXJlbnRpYWxzID0gKGZpZWxkLnJlZmVyZW50aWFscyB8fCBbXSkubWFwKFxuICAgICAgKHJlZmVyZW50aWFsKSA9PiBuZXcgT0RhdGFSZWZlcmVudGlhbChyZWZlcmVudGlhbClcbiAgICApO1xuICAgIHRoaXMuZGVmYXVsdCA9IGZpZWxkLmRlZmF1bHQ7XG4gICAgdGhpcy5tYXhMZW5ndGggPSBmaWVsZC5tYXhMZW5ndGg7XG4gICAgdGhpcy5udWxsYWJsZSA9IGZpZWxkLm51bGxhYmxlICE9PSB1bmRlZmluZWQgPyBmaWVsZC5udWxsYWJsZSA6IHRydWU7XG4gICAgdGhpcy5jb2xsZWN0aW9uID0gQm9vbGVhbihmaWVsZC5jb2xsZWN0aW9uKTtcbiAgICB0aGlzLm5hdmlnYXRpb24gPSBCb29sZWFuKGZpZWxkLm5hdmlnYXRpb24pO1xuICAgIHRoaXMucHJlY2lzaW9uID0gZmllbGQucHJlY2lzaW9uO1xuICAgIHRoaXMuc2NhbGUgPSBmaWVsZC5zY2FsZTtcbiAgfVxuXG4gIHZhbGlkYXRlKFxuICAgIHZhbHVlOiBhbnksXG4gICAge1xuICAgICAgbWV0aG9kLFxuICAgICAgbmF2aWdhdGlvbiA9IGZhbHNlLFxuICAgIH06IHtcbiAgICAgIG1ldGhvZD86ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCAnbW9kaWZ5JztcbiAgICAgIG5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOlxuICAgIHwgeyBbbmFtZTogc3RyaW5nXTogYW55IH1cbiAgICB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9W11cbiAgICB8IHN0cmluZ1tdXG4gICAgfCB1bmRlZmluZWQge1xuICAgIGxldCBlcnJvcnM7XG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbiAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZXJyb3JzID0gdmFsdWUubWFwKCh2KSA9PiB0aGlzLnZhbGlkYXRlKHYsIHsgbWV0aG9kLCBuYXZpZ2F0aW9uIH0pKSBhcyB7XG4gICAgICAgIFtuYW1lOiBzdHJpbmddOiBhbnlbXTtcbiAgICAgIH1bXTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgKHRoaXMuaXNTdHJ1Y3R1cmVkVHlwZSgpICYmXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdmFsdWUgIT09IG51bGwpIHx8XG4gICAgICAodGhpcy5uYXZpZ2F0aW9uICYmIHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICBlcnJvcnMgPVxuICAgICAgICB0aGlzLnN0cnVjdHVyZWQoKS52YWxpZGF0ZSh2YWx1ZSwgeyBtZXRob2QsIG5hdmlnYXRpb24gfSkgfHxcbiAgICAgICAgKHt9IGFzIHsgW25hbWU6IHN0cmluZ106IGFueVtdIH0pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmlzRW51bVR5cGUoKSAmJlxuICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJylcbiAgICApIHtcbiAgICAgIGVycm9ycyA9IHRoaXMuZW51bSgpLnZhbGlkYXRlKHZhbHVlLCB7IG1ldGhvZCwgbmF2aWdhdGlvbiB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSXNFZG1UeXBlXG4gICAgICBjb25zdCBjb21wdXRlZCA9IHRoaXMuYW5ub3RhdGVkVmFsdWU8Ym9vbGVhbj4oQ09NUFVURUQpO1xuICAgICAgZXJyb3JzID0gW107XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLm51bGxhYmxlICYmXG4gICAgICAgICh2YWx1ZSA9PT0gbnVsbCB8fCAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBtZXRob2QgIT09ICdtb2RpZnknKSkgJiYgLy8gSXMgbnVsbCBvciB1bmRlZmluZWQgd2l0aG91dCBwYXRjaD9cbiAgICAgICAgIShjb21wdXRlZCAmJiBtZXRob2QgPT09ICdjcmVhdGUnKSAvLyBOb3QgKElzIENvbXB1dGVkIGZpZWxkIGFuZCBjcmVhdGUpID9cbiAgICAgICkge1xuICAgICAgICBlcnJvcnMucHVzaChgcmVxdWlyZWRgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIHZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgZXJyb3JzLnB1c2goYG1heGxlbmd0aGApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gIVR5cGVzLmlzRW1wdHkoZXJyb3JzKSA/IGVycm9ycyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBEZXNlcmlhbGl6ZVxuICBwcml2YXRlIHBhcnNlKFxuICAgIHBhcnNlcjogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxUPixcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyXG4gICk6IGFueSB7XG4gICAgY29uc3QgdHlwZSA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci50eXBlKHZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcGFyc2VyXG4gICAgICAgIC5jaGlsZFBhcnNlcigoYykgPT4gYy5pc1R5cGVPZih0eXBlKSlcbiAgICAgICAgLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IFQge1xuICAgIGNvbnN0IHBhcnNlck9wdGlvbnMgPVxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbmV3IE9EYXRhUGFyc2VyT3B0aW9ucyhvcHRpb25zKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0hlbHBlcjtcbiAgICBpZiAodGhpcy5wYXJzZXIgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyKSB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLnBhcnNlciBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPFQ+O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiB0aGlzLnBhcnNlKHBhcnNlciwgdiwgcGFyc2VyT3B0aW9ucykpXG4gICAgICAgIDogdGhpcy5wYXJzZShwYXJzZXIsIHZhbHVlLCBwYXJzZXJPcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLmRlc2VyaWFsaXplKHZhbHVlLCB7XG4gICAgICBmaWVsZDogdGhpcyxcbiAgICAgIC4uLnBhcnNlck9wdGlvbnMsXG4gICAgfSBhcyBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFNlcmlhbGl6ZVxuICBwcml2YXRlIHRvSnNvbihcbiAgICBwYXJzZXI6IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8VD4sXG4gICAgdmFsdWU6IGFueSxcbiAgICBvcHRpb25zPzogT3B0aW9uc0hlbHBlclxuICApOiBhbnkge1xuICAgIGNvbnN0IHR5cGUgPVxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIudHlwZSh2YWx1ZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHBhcnNlclxuICAgICAgICAuY2hpbGRQYXJzZXIoKGMpID0+IGMuaXNUeXBlT2YodHlwZSkpXG4gICAgICAgIC5zZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VyLnNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBzZXJpYWxpemUodmFsdWU6IFQsIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgaWYgKHRoaXMucGFyc2VyIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcikge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5wYXJzZXIgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxUPjtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/ICh2YWx1ZSBhcyBhbnlbXSkubWFwKCh2KSA9PiB0aGlzLnRvSnNvbihwYXJzZXIsIHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgICA6IHRoaXMudG9Kc29uKHBhcnNlciwgdmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYXJzZXIuc2VyaWFsaXplKHZhbHVlLCB7XG4gICAgICBmaWVsZDogdGhpcyxcbiAgICAgIC4uLnBhcnNlck9wdGlvbnMsXG4gICAgfSBhcyBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIEVuY29kZVxuICBlbmNvZGUodmFsdWU6IFQsIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLmVuY29kZSh2YWx1ZSwge1xuICAgICAgZmllbGQ6IHRoaXMsXG4gICAgICAuLi5wYXJzZXJPcHRpb25zLFxuICAgIH0gYXMgU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIGNvbmZpZ3VyZSh7XG4gICAgcGFyc2VyRm9yVHlwZSxcbiAgICBvcHRpb25zLFxuICB9OiB7XG4gICAgcGFyc2VyRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gUGFyc2VyPGFueT47XG4gICAgb3B0aW9uczogT3B0aW9uc0hlbHBlcjtcbiAgfSkge1xuICAgIHRoaXMub3B0aW9uc0hlbHBlciA9IG9wdGlvbnM7XG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXJGb3JUeXBlKHRoaXMudHlwZSk7XG4gICAgaWYgKHRoaXMuZGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRlZmF1bHQgPSB0aGlzLmRlc2VyaWFsaXplKHRoaXMuZGVmYXVsdCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIEpzb24gU2NoZW1hXG4gIC8vIGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL1xuICB0b0pzb25TY2hlbWEob3B0aW9uczogSnNvblNjaGVtYU9wdGlvbnM8VD4gPSB7fSkge1xuICAgIGxldCBzY2hlbWE6IGFueSA9XG4gICAgICB0aGlzLnBhcnNlciBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlciB8fFxuICAgICAgdGhpcy5wYXJzZXIgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyIHx8XG4gICAgICB0aGlzLnBhcnNlciBpbnN0YW5jZW9mIE9EYXRhRW51bVR5cGVQYXJzZXJcbiAgICAgICAgPyB0aGlzLnBhcnNlci50b0pzb25TY2hlbWEob3B0aW9ucylcbiAgICAgICAgOiAoeyB0aXRsZTogdGhpcy5uYW1lLCB0eXBlOiAnb2JqZWN0JyB9IGFzIGFueSk7XG5cbiAgICBpZiAoXG4gICAgICBbXG4gICAgICAgICdFZG0uU3RyaW5nJyxcbiAgICAgICAgJ0VkbS5EYXRlJyxcbiAgICAgICAgJ0VkbS5UaW1lT2ZEYXknLFxuICAgICAgICAnRWRtLkRhdGVUaW1lT2Zmc2V0JyxcbiAgICAgICAgJ0VkbS5HdWlkJyxcbiAgICAgICAgJ0VkbS5CaW5hcnknLFxuICAgICAgXS5pbmRleE9mKHRoaXMudHlwZSkgIT09IC0xXG4gICAgKSB7XG4gICAgICBzY2hlbWEudHlwZSA9ICdzdHJpbmcnO1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ0VkbS5EYXRlJykgc2NoZW1hLmZvcm1hdCA9ICdkYXRlJztcbiAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ0VkbS5UaW1lT2ZEYXknKSBzY2hlbWEuZm9ybWF0ID0gJ3RpbWUnO1xuICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnRWRtLkRhdGVUaW1lT2Zmc2V0Jykgc2NoZW1hLmZvcm1hdCA9ICdkYXRlLXRpbWUnO1xuICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnRWRtLkd1aWQnKVxuICAgICAgICBzY2hlbWEucGF0dGVybiA9XG4gICAgICAgICAgJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJztcbiAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ0VkbS5CaW5hcnknKSBzY2hlbWEuY29udGVudEVuY29kaW5nID0gJ2Jhc2U2NCc7XG4gICAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdFZG0uU3RyaW5nJyAmJiB0aGlzLm1heExlbmd0aClcbiAgICAgICAgc2NoZW1hLm1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBbJ0VkbS5JbnQ2NCcsICdFZG0uSW50MzInLCAnRWRtLkludDE2JywgJ0VkbS5CeXRlJywgJ0VkbS5TQnl0ZSddLmluZGV4T2YoXG4gICAgICAgIHRoaXMudHlwZVxuICAgICAgKSAhPT0gLTFcbiAgICApIHtcbiAgICAgIC8vVE9ETzogUmFuZ2VcbiAgICAgIHNjaGVtYS50eXBlID0gJ2ludGVnZXInO1xuICAgIH0gZWxzZSBpZiAoWydFZG0uRGVjaW1hbCcsICdFZG0uRG91YmxlJ10uaW5kZXhPZih0aGlzLnR5cGUpICE9PSAtMSkge1xuICAgICAgc2NoZW1hLnR5cGUgPSAnbnVtYmVyJztcbiAgICB9IGVsc2UgaWYgKFsnRWRtLkJvb2xlYW4nXS5pbmRleE9mKHRoaXMudHlwZSkgIT09IC0xKSB7XG4gICAgICBzY2hlbWEudHlwZSA9ICdib29sZWFuJztcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVmYXVsdCkgc2NoZW1hLmRlZmF1bHQgPSB0aGlzLmRlZmF1bHQ7XG4gICAgaWYgKHRoaXMubnVsbGFibGUpIHNjaGVtYS50eXBlID0gW3NjaGVtYS50eXBlLCAnbnVsbCddO1xuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24pXG4gICAgICBzY2hlbWEgPSB7XG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGl0ZW1zOiBzY2hlbWEsXG4gICAgICAgIGFkZGl0aW9uYWxJdGVtczogZmFsc2UsXG4gICAgICB9O1xuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgaXNLZXkoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc3RydWN0dXJlZFR5cGUua2V5cz8uZmluZCgoaykgPT4gay5uYW1lID09PSB0aGlzLm5hbWUpICE9PSB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgaGFzUmVmZXJlbnRpYWxzKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW50aWFscy5sZW5ndGggIT09IDA7XG4gIH1cblxuICBpc0VkbVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZS5zdGFydHNXaXRoKCdFZG0uJyk7XG4gIH1cblxuICBpc0VudW1UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlciBpbnN0YW5jZW9mIE9EYXRhRW51bVR5cGVQYXJzZXI7XG4gIH1cblxuICBlbnVtKCkge1xuICAgIGlmICghdGhpcy5pc0VudW1UeXBlKCkpIHRocm93IG5ldyBFcnJvcignRmllbGQgYXJlIG5vdCBFbnVtVHlwZScpO1xuICAgIHJldHVybiB0aGlzLnBhcnNlciBhcyBPRGF0YUVudW1UeXBlUGFyc2VyPFQ+O1xuICB9XG5cbiAgaXNTdHJ1Y3R1cmVkVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIgaW5zdGFuY2VvZiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyO1xuICB9XG5cbiAgc3RydWN0dXJlZCgpIHtcbiAgICBpZiAoIXRoaXMuaXNTdHJ1Y3R1cmVkVHlwZSgpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBhcmUgbm90IFN0cnVjdXR1cmVkVHlwZScpO1xuICAgIHJldHVybiB0aGlzLnBhcnNlciBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPFQ+O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPFQ+XG4gIGV4dGVuZHMgT0RhdGFBbm5vdGF0YWJsZVxuICBpbXBsZW1lbnRzIFBhcnNlcjxUPlxue1xuICBuYW1lOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBvcGVuOiBib29sZWFuO1xuICBjaGlsZHJlbjogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+W10gPSBbXTtcbiAgYWxpYXM/OiBzdHJpbmc7XG4gIGJhc2U/OiBzdHJpbmc7XG4gIHBhcmVudD86IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8YW55PjtcbiAga2V5cz86IE9EYXRhRW50aXR5VHlwZUtleVtdO1xuICBmaWVsZHM6IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcjxhbnk+W107XG4gIG9wdGlvbnNIZWxwZXI/OiBPcHRpb25zSGVscGVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbmZpZzogU3RydWN0dXJlZFR5cGVDb25maWc8VD4sXG4gICAgbmFtZXNwYWNlOiBzdHJpbmcsXG4gICAgYWxpYXM/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoY29uZmlnKTtcbiAgICB0aGlzLm5hbWUgPSBjb25maWcubmFtZTtcbiAgICB0aGlzLmJhc2UgPSBjb25maWcuYmFzZTtcbiAgICB0aGlzLm9wZW4gPSBjb25maWcub3BlbiB8fCBmYWxzZTtcbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLmFsaWFzID0gYWxpYXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnLmtleXMpKVxuICAgICAgdGhpcy5rZXlzID0gY29uZmlnLmtleXMubWFwKChrZXkpID0+IG5ldyBPRGF0YUVudGl0eVR5cGVLZXkoa2V5KSk7XG4gICAgdGhpcy5maWVsZHMgPSBPYmplY3QuZW50cmllczxTdHJ1Y3R1cmVkVHlwZUZpZWxkQ29uZmlnPihcbiAgICAgIGNvbmZpZy5maWVsZHMgYXMgeyBbUCBpbiBrZXlvZiBUXTogU3RydWN0dXJlZFR5cGVGaWVsZENvbmZpZyB9XG4gICAgKS5tYXAoXG4gICAgICAoW25hbWUsIGNvbmZpZ10pID0+IG5ldyBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXIobmFtZSwgdGhpcywgY29uZmlnKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmljZXIgbG9va2luZyB0aXRsZS5cbiAgICogVGl0bGVpemUgaXMgbWVhbnQgZm9yIGNyZWF0aW5nIHByZXR0eSBvdXRwdXQuXG4gICAqIEBwYXJhbSB0ZXJtIFRoZSB0ZXJtIG9mIHRoZSBhbm5vdGF0aW9uIHRvIGZpbmQuXG4gICAqIEByZXR1cm5zIFRoZSB0aXRsZWl6ZWQgc3RyaW5nLlxuICAgKi9cbiAgdGl0bGVpemUodGVybT86IHN0cmluZyB8IFJlZ0V4cCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0ZXJtICYmIHRoaXMuYW5ub3RhdGVkVmFsdWUodGVybSkpIHx8IFN0cmluZ3MudGl0bGVDYXNlKHRoaXMubmFtZSk7XG4gIH1cblxuICBpc1R5cGVPZih0eXBlOiBzdHJpbmcpIHtcbiAgICB2YXIgbmFtZXMgPSBbYCR7dGhpcy5uYW1lc3BhY2V9LiR7dGhpcy5uYW1lfWBdO1xuICAgIGlmICh0aGlzLmFsaWFzKSBuYW1lcy5wdXNoKGAke3RoaXMuYWxpYXN9LiR7dGhpcy5uYW1lfWApO1xuICAgIHJldHVybiBuYW1lcy5pbmRleE9mKHR5cGUpICE9PSAtMTtcbiAgfVxuXG4gIGlzU3VidHlwZU9mKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzVHlwZU9mKHR5cGUpKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAodGhpcy5wYXJlbnQpIHJldHVybiB0aGlzLnBhcmVudC5pc1N1YnR5cGVPZih0eXBlKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmaW5kQ2hpbGRQYXJzZXIoXG4gICAgcHJlZGljYXRlOiAocDogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+KSA9PiBib29sZWFuXG4gICk6IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByZWRpY2F0ZSh0aGlzKSkgcmV0dXJuIHRoaXM7XG4gICAgbGV0IG1hdGNoOiBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgY2ggb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgbWF0Y2ggPSBjaC5maW5kQ2hpbGRQYXJzZXIocHJlZGljYXRlKTtcbiAgICAgIGlmIChtYXRjaCAhPT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoO1xuICB9XG5cbiAgY2hpbGRQYXJzZXIoXG4gICAgcHJlZGljYXRlOiAocDogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+KSA9PiBib29sZWFuXG4gICk6IFBhcnNlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5maW5kQ2hpbGRQYXJzZXIocHJlZGljYXRlKSB8fCBOT05FX1BBUlNFUjtcbiAgfVxuXG4gIC8vIERlc2VyaWFsaXplXG4gIGRlc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogVCB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBuZXcgT0RhdGFQYXJzZXJPcHRpb25zKG9wdGlvbnMpXG4gICAgICAgIDogdGhpcy5vcHRpb25zSGVscGVyO1xuICAgIGlmICh0aGlzLnBhcmVudCAhPT0gdW5kZWZpbmVkKVxuICAgICAgdmFsdWUgPSB0aGlzLnBhcmVudC5kZXNlcmlhbGl6ZSh2YWx1ZSwgcGFyc2VyT3B0aW9ucyk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHMuZmlsdGVyKFxuICAgICAgKGYpID0+XG4gICAgICAgIGYubmFtZSBpbiB2YWx1ZSAmJiB2YWx1ZVtmLm5hbWVdICE9PSB1bmRlZmluZWQgJiYgdmFsdWVbZi5uYW1lXSAhPT0gbnVsbFxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZhbHVlLFxuICAgICAgLi4uZmllbGRzLnJlZHVjZShcbiAgICAgICAgKGFjYywgZikgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW2YubmFtZV06IGYuZGVzZXJpYWxpemUodmFsdWVbZi5uYW1lXSwgcGFyc2VyT3B0aW9ucyksXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gU2VyaWFsaXplXG4gIHNlcmlhbGl6ZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIGNvbnN0IHBhcnNlck9wdGlvbnMgPVxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbmV3IE9EYXRhUGFyc2VyT3B0aW9ucyhvcHRpb25zKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0hlbHBlcjtcbiAgICBpZiAodGhpcy5wYXJlbnQgIT09IHVuZGVmaW5lZClcbiAgICAgIHZhbHVlID0gdGhpcy5wYXJlbnQuc2VyaWFsaXplKHZhbHVlLCBwYXJzZXJPcHRpb25zKTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoXG4gICAgICAoZikgPT5cbiAgICAgICAgZi5uYW1lIGluIHZhbHVlICYmXG4gICAgICAgICh2YWx1ZSBhcyBhbnkpW2YubmFtZV0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAodmFsdWUgYXMgYW55KVtmLm5hbWVdICE9PSBudWxsXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmFsdWUsXG4gICAgICAuLi5maWVsZHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBmKSA9PiAoe1xuICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICBbZi5uYW1lXTogZi5zZXJpYWxpemUoKHZhbHVlIGFzIGFueSlbZi5uYW1lXSwgcGFyc2VyT3B0aW9ucyksXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gRW5jb2RlXG4gIGVuY29kZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIGNvbnN0IHBhcnNlck9wdGlvbnMgPVxuICAgICAgb3B0aW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gbmV3IE9EYXRhUGFyc2VyT3B0aW9ucyhvcHRpb25zKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0hlbHBlcjtcbiAgICByZXR1cm4gcmF3KEpTT04uc3RyaW5naWZ5KHRoaXMuc2VyaWFsaXplKHZhbHVlLCBwYXJzZXJPcHRpb25zKSkpO1xuICB9XG5cbiAgY29uZmlndXJlKHtcbiAgICBwYXJzZXJGb3JUeXBlLFxuICAgIG9wdGlvbnMsXG4gIH06IHtcbiAgICBwYXJzZXJGb3JUeXBlOiAodHlwZTogc3RyaW5nKSA9PiBQYXJzZXI8YW55PjtcbiAgICBvcHRpb25zOiBPcHRpb25zSGVscGVyO1xuICB9KSB7XG4gICAgdGhpcy5vcHRpb25zSGVscGVyID0gb3B0aW9ucztcbiAgICBpZiAodGhpcy5iYXNlKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXJzZXJGb3JUeXBlKHRoaXMuYmFzZSkgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxhbnk+O1xuICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2godGhpcyk7XG4gICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaCgoZikgPT4gZi5jb25maWd1cmUoeyBwYXJzZXJGb3JUeXBlLCBvcHRpb25zIH0pKTtcbiAgfVxuXG4gIHJlc29sdmVLZXkodmFsdWU6IGFueSk6IGFueSB7XG4gICAgbGV0IGtleSA9IHRoaXMucGFyZW50Py5yZXNvbHZlS2V5KHZhbHVlKSB8fCB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmtleXMpICYmIHRoaXMua2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKHZhciBrIG9mIHRoaXMua2V5cykge1xuICAgICAgICBsZXQgdiA9IHZhbHVlIGFzIGFueTtcbiAgICAgICAgbGV0IHN0cnVjdHVyZWQgPSB0aGlzIGFzIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8YW55PiB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGZpZWxkOiBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8YW55PiB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChsZXQgbmFtZSBvZiBrLm5hbWUuc3BsaXQoJy8nKSkge1xuICAgICAgICAgIGlmIChzdHJ1Y3R1cmVkID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgICAgIGZpZWxkID0gc3RydWN0dXJlZC5maWVsZHMuZmluZCgoZikgPT4gZi5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgICBpZiAoZmllbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdiA9IFR5cGVzLmlzUGxhaW5PYmplY3QodikgPyB2W2ZpZWxkLm5hbWVdIDogdjtcbiAgICAgICAgICAgIHN0cnVjdHVyZWQgPSBmaWVsZC5pc1N0cnVjdHVyZWRUeXBlKClcbiAgICAgICAgICAgICAgPyBmaWVsZC5zdHJ1Y3R1cmVkKClcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZCAhPT0gdW5kZWZpbmVkICYmIHYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGtleVtrLmFsaWFzIHx8IGZpZWxkLm5hbWVdID0gZmllbGQuZW5jb2RlKHYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChUeXBlcy5pc0VtcHR5KGtleSkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIE9iamVjdHMucmVzb2x2ZUtleShrZXkpO1xuICB9XG5cbiAgZGVmYXVsdHMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucGFyZW50Py5kZWZhdWx0cygpIHx8IHt9O1xuICAgIGxldCBmaWVsZHMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoXG4gICAgICAoZikgPT4gZi5kZWZhdWx0ICE9PSB1bmRlZmluZWQgfHwgZi5pc1N0cnVjdHVyZWRUeXBlKClcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi52YWx1ZSxcbiAgICAgIC4uLmZpZWxkcy5yZWR1Y2UoKGFjYywgZikgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBmLmlzU3RydWN0dXJlZFR5cGUoKVxuICAgICAgICAgID8gZi5zdHJ1Y3R1cmVkKCkuZGVmYXVsdHMoKVxuICAgICAgICAgIDogZi5kZWZhdWx0O1xuICAgICAgICByZXR1cm4gVHlwZXMuaXNFbXB0eSh2YWx1ZSkgPyBhY2MgOiB7IC4uLmFjYywgW2YubmFtZV06IHZhbHVlIH07XG4gICAgICB9LCB7fSksXG4gICAgfTtcbiAgfVxuXG4gIC8vIEpzb24gU2NoZW1hXG4gIHRvSnNvblNjaGVtYShvcHRpb25zOiBKc29uU2NoZW1hT3B0aW9uczxUPiA9IHt9KSB7XG4gICAgbGV0IHNjaGVtYTogYW55ID0gdGhpcy5wYXJlbnQ/LnRvSnNvblNjaGVtYShvcHRpb25zKSB8fCB7XG4gICAgICAkc2NoZW1hOiAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjJyxcbiAgICAgICRpZDogYCR7dGhpcy5uYW1lc3BhY2V9LiR7dGhpcy5uYW1lfWAsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZWl6ZShERVNDUklQVElPTiksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5hbm5vdGF0ZWRWYWx1ZShMT05HX0RFU0NSSVBUSU9OKSxcbiAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgcHJvcGVydGllczoge30sXG4gICAgICByZXF1aXJlZDogW10sXG4gICAgfTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoXG4gICAgICAoZikgPT5cbiAgICAgICAgKCFmLm5hdmlnYXRpb24gfHwgKG9wdGlvbnMuZXhwYW5kICYmIGYubmFtZSBpbiBvcHRpb25zLmV4cGFuZCkpICYmXG4gICAgICAgICghb3B0aW9ucy5zZWxlY3QgfHwgKDxzdHJpbmdbXT5vcHRpb25zLnNlbGVjdCkuaW5kZXhPZihmLm5hbWUpICE9PSAtMSlcbiAgICApO1xuICAgIHNjaGVtYS5wcm9wZXJ0aWVzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAgc2NoZW1hLnByb3BlcnRpZXMsXG4gICAgICBmaWVsZHNcbiAgICAgICAgLm1hcCgoZikgPT4ge1xuICAgICAgICAgIGxldCBleHBhbmQgPVxuICAgICAgICAgICAgb3B0aW9ucy5leHBhbmQgJiYgZi5uYW1lIGluIG9wdGlvbnMuZXhwYW5kXG4gICAgICAgICAgICAgID8gKG9wdGlvbnMuZXhwYW5kIGFzIGFueSlbZi5uYW1lXVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgc2NoZW1hID0gZi50b0pzb25TY2hlbWEoZXhwYW5kKTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5jdXN0b20gJiYgZi5uYW1lIGluIG9wdGlvbnMuY3VzdG9tKVxuICAgICAgICAgICAgc2NoZW1hID0gKFxuICAgICAgICAgICAgICBvcHRpb25zLmN1c3RvbVtmLm5hbWUgYXMga2V5b2YgVF0gYXMgKFxuICAgICAgICAgICAgICAgIHNjaGVtYTogYW55LFxuICAgICAgICAgICAgICAgIGZpZWxkOiBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8YW55PlxuICAgICAgICAgICAgICApID0+IGFueVxuICAgICAgICAgICAgKShzY2hlbWEsIGYpO1xuICAgICAgICAgIHJldHVybiB7IFtmLm5hbWVdOiBzY2hlbWEgfTtcbiAgICAgICAgfSlcbiAgICAgICAgLnJlZHVjZSgoYWNjLCB2KSA9PiBPYmplY3QuYXNzaWduKGFjYywgdiksIHt9KVxuICAgICk7XG4gICAgc2NoZW1hLnJlcXVpcmVkID0gW1xuICAgICAgLi4uc2NoZW1hLnJlcXVpcmVkLFxuICAgICAgLi4uZmllbGRzXG4gICAgICAgIC5maWx0ZXIoKGYpID0+XG4gICAgICAgICAgb3B0aW9ucy5yZXF1aXJlZCAmJiBmLm5hbWUgaW4gb3B0aW9ucy5yZXF1aXJlZFxuICAgICAgICAgICAgPyBvcHRpb25zLnJlcXVpcmVkW2YubmFtZSBhcyBrZXlvZiBUXVxuICAgICAgICAgICAgOiAhZi5udWxsYWJsZVxuICAgICAgICApXG4gICAgICAgIC5tYXAoKGYpID0+IGYubmFtZSksXG4gICAgXTtcbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgdmFsaWRhdGUoXG4gICAgYXR0cnM6IGFueSxcbiAgICB7XG4gICAgICBtZXRob2QsXG4gICAgICBuYXZpZ2F0aW9uID0gZmFsc2UsXG4gICAgfToge1xuICAgICAgY3JlYXRlPzogYm9vbGVhbjtcbiAgICAgIG1ldGhvZD86ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCAnbW9kaWZ5JztcbiAgICAgIG5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZXJyb3JzID0gKHRoaXMucGFyZW50Py52YWxpZGF0ZShhdHRycywgeyBtZXRob2QsIG5hdmlnYXRpb24gfSkgfHxcbiAgICAgIHt9KSBhcyB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoKGYpID0+ICFmLm5hdmlnYXRpb24gfHwgbmF2aWdhdGlvbik7XG4gICAgZm9yICh2YXIgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF0dHJzW2ZpZWxkLm5hbWUgYXMga2V5b2YgVF07XG4gICAgICBjb25zdCBlcnJzID0gZmllbGQudmFsaWRhdGUodmFsdWUsIHsgbWV0aG9kLCBuYXZpZ2F0aW9uIH0pO1xuICAgICAgaWYgKGVycnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlcnJvcnNbZmllbGQubmFtZV0gPSBlcnJzO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gIVR5cGVzLmlzRW1wdHkoZXJyb3JzKSA/IGVycm9ycyA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
|
|
@@ -135,14 +135,9 @@ export class ODataStructuredType extends ODataSchemaElement {
|
|
|
135
135
|
*/
|
|
136
136
|
pick(attrs, { include_parents = true, include_navigation = false, include_etag = true, } = {}) {
|
|
137
137
|
const names = this.fields({ include_parents, include_navigation }).map((f) => f.name);
|
|
138
|
-
|
|
139
|
-
.filter((
|
|
140
|
-
.reduce((acc,
|
|
141
|
-
if (include_etag) {
|
|
142
|
-
const etag = this.api.options.helper.etag(attrs);
|
|
143
|
-
this.api.options.helper.etag(attrs, etag);
|
|
144
|
-
}
|
|
145
|
-
return values;
|
|
138
|
+
return Object.keys(attrs)
|
|
139
|
+
.filter((key) => names.indexOf(key) !== -1 || (key == this.api.options.helper.ODATA_ETAG && include_etag))
|
|
140
|
+
.reduce((acc, key) => Object.assign(acc, { [key]: attrs[key] }), {});
|
|
146
141
|
}
|
|
147
142
|
/**
|
|
148
143
|
* Deseialize the given value from the structured type.
|
|
@@ -204,4 +199,4 @@ export class ODataStructuredType extends ODataSchemaElement {
|
|
|
204
199
|
return this.parser.validate(attrs, { method, navigation });
|
|
205
200
|
}
|
|
206
201
|
}
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NjaGVtYS9zdHJ1Y3R1cmVkLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFJTCx5QkFBeUIsR0FDMUIsTUFBTSxXQUFXLENBQUM7QUFHbkIsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGtCQUFrQjtJQVM1RCxZQUFZLE1BQStCLEVBQUUsTUFBbUI7UUFDOUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQU54QixhQUFRLEdBQStCLEVBQUUsQ0FBQztRQU94QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUkseUJBQXlCLENBQ3pDLE1BQU0sRUFDTixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsS0FBSyxDQUNiLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQW9DLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ3BCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMs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QUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEtBQVEsRUFBRSxPQUF1QjtRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxLQUFrQztRQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLFVBQWdDLEVBQUU7UUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQ04sS0FBaUIsRUFDakIsRUFDRSxNQUFNLEVBQ04sVUFBVSxHQUFHLEtBQUssTUFJaEIsRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9uc0hlbHBlciwgU3RydWN0dXJlZFR5cGVDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBPRGF0YVNjaGVtYUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHtcbiAgSnNvblNjaGVtYU9wdGlvbnMsXG4gIE9EYXRhRW50aXR5VHlwZUtleSxcbiAgT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyLFxuICBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyLFxufSBmcm9tICcuL3BhcnNlcnMnO1xuaW1wb3J0IHsgT0RhdGFTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+IGV4dGVuZHMgT0RhdGFTY2hlbWFFbGVtZW50IHtcbiAgYmFzZT86IHN0cmluZztcbiAgb3BlbjogYm9vbGVhbjtcbiAgcGFyZW50PzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+O1xuICBjaGlsZHJlbjogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+W10gPSBbXTtcbiAgbW9kZWw/OiB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgY29sbGVjdGlvbj86IHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gIHBhcnNlcjogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxUPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFN0cnVjdHVyZWRUeXBlQ29uZmlnPFQ+LCBzY2hlbWE6IE9EYXRhU2NoZW1hKSB7XG4gICAgc3VwZXIoY29uZmlnLCBzY2hlbWEpO1xuICAgIHRoaXMuYmFzZSA9IGNvbmZpZy5iYXNlO1xuICAgIHRoaXMub3BlbiA9IGNvbmZpZy5vcGVuIHx8IGZhbHNlO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXIoXG4gICAgICBjb25maWcsXG4gICAgICBzY2hlbWEubmFtZXNwYWNlLFxuICAgICAgc2NoZW1hLmFsaWFzXG4gICAgKTtcbiAgICB0aGlzLm1vZGVsID0gY29uZmlnLm1vZGVsIGFzIHR5cGVvZiBPRGF0YU1vZGVsO1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbmZpZy5jb2xsZWN0aW9uIGFzIHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gICAgaWYgKHRoaXMubW9kZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMubW9kZWwuaGFzT3duUHJvcGVydHkoJ29wdGlvbnMnKVxuICAgICAgICA/IHRoaXMubW9kZWwub3B0aW9uc1xuICAgICAgICA6IHsgZmllbGRzOiB7fSB9O1xuICAgICAgdGhpcy5tb2RlbC5idWlsZE1ldGE8VD4oeyBvcHRpb25zLCBzY2hlbWE6IHRoaXMgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uLm1vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICBjb25maWd1cmUoe1xuICAgIHBhcnNlckZvclR5cGUsXG4gICAgZmluZE9wdGlvbnNGb3JUeXBlLFxuICB9OiB7XG4gICAgcGFyc2VyRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gYW55O1xuICAgIGZpbmRPcHRpb25zRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gYW55O1xuICB9KSB7XG4gICAgaWYgKHRoaXMuYmFzZSkge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5hcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZShcbiAgICAgICAgdGhpcy5iYXNlXG4gICAgICApIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKHRoaXMpO1xuICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuICAgIHRoaXMucGFyc2VyLmNvbmZpZ3VyZSh7IHBhcnNlckZvclR5cGUsIG9wdGlvbnM6IHRoaXMuYXBpLm9wdGlvbnMgfSk7XG4gICAgaWYgKHRoaXMubW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1vZGVsLm9wdGlvbnMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubW9kZWwubWV0YS5jb25maWd1cmUoe1xuICAgICAgICBmaW5kT3B0aW9uc0ZvclR5cGUsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuYXBpLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgc3RydWN0dXJlZCB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0eXBlXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNhbGxhYmxlIGlzIHR5cGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAgICovXG4gIG92ZXJyaWRlIGlzU3VidHlwZU9mKHNjaGVtYTogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN1cGVyLmlzU3VidHlwZU9mKHNjaGVtYSkgfHxcbiAgICAgICh0aGlzLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIHRoaXMucGFyZW50LmlzU3VidHlwZU9mKHNjaGVtYSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaXMgYSBzdXBlcnR5cGUgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHlwZVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjYWxsYWJsZSBpcyB0eXBlIG9mIHRoZSBnaXZlbiB0eXBlXG4gICAqL1xuICBvdmVycmlkZSBpc1N1cGVydHlwZU9mKHNjaGVtYTogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN1cGVyLmlzU3VwZXJ0eXBlT2Yoc2NoZW1hKSB8fFxuICAgICAgdGhpcy5jaGlsZHJlbi5zb21lKChjKSA9PiBjLmlzU3VwZXJ0eXBlT2Yoc2NoZW1hKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHN0cnVjdHVyZWQgdHlwZSBoYXMgYSBzaW1wbGUga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgc2ltcGxlIGtleVxuICAgKi9cbiAgaXNTaW1wbGVLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5cygpLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKi9cbiAgaXNDb21wb3VuZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlzKCkubGVuZ3RoID4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSBmaWVsZCBwYXJzZXIgZm9yIHRoZSBnaXZlbiBmaWVsZCBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBmaWVsZFxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgcGFyc2VyXG4gICAqL1xuICBmaW5kRmllbGRCeU5hbWU8Rj4obmFtZToga2V5b2YgVCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcyh7XG4gICAgICBpbmNsdWRlX3BhcmVudHM6IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb246IHRydWUsXG4gICAgfSkuZmluZCgoZikgPT4gZi5uYW1lID09PSBuYW1lKSBhc1xuICAgICAgfCBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8Rj5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gZm9yIGV2YWx1YXRlIHRoZSBzY2hlbWFzIGluIHRoZSBoaWVyYXJjaHkuXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgdGhhdCBtYXRjaGVzIHRoZSBwcmVkaWNhdGUuXG4gICAqL1xuICBmaW5kUGFyZW50U2NoZW1hKFxuICAgIHByZWRpY2F0ZTogKHA6IE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PikgPT4gYm9vbGVhblxuICApOiBPRGF0YVN0cnVjdHVyZWRUeXBlPGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChwcmVkaWNhdGUodGhpcykpIHJldHVybiB0aGlzIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgICBpZiAodGhpcy5wYXJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZmluZFBhcmVudFNjaGVtYShwcmVkaWNhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiBmaWVsZC5cbiAgICogQHBhcmFtIGZpZWxkIEZpZWxkIHRoYXQgYmVsb25ncyB0byB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgb2YgdGhlIGZpZWxkXG4gICAqL1xuICBmaW5kU2NoZW1hRm9yRmllbGQ8RT4oZmllbGQ6IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcjxhbnk+KSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudFNjaGVtYShcbiAgICAgIChwKSA9PlxuICAgICAgICBwXG4gICAgICAgICAgLmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50czogZmFsc2UsIGluY2x1ZGVfbmF2aWdhdGlvbjogdHJ1ZSB9KVxuICAgICAgICAgIC5maW5kKChmKSA9PiBmID09PSBmaWVsZCkgIT09IHVuZGVmaW5lZFxuICAgICkgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxFPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBmaWVsZHMgb2YgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIG5hdmlnYXRpb24gcHJvcGVydGllcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCB0eXBlcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcmV0dXJucyBBbGwgZmllbGRzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqL1xuICBmaWVsZHMoe1xuICAgIGluY2x1ZGVfbmF2aWdhdGlvbixcbiAgICBpbmNsdWRlX3BhcmVudHMsXG4gIH06IHtcbiAgICBpbmNsdWRlX3BhcmVudHM6IGJvb2xlYW47XG4gICAgaW5jbHVkZV9uYXZpZ2F0aW9uOiBib29sZWFuO1xuICB9KTogT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyPGFueT5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLihpbmNsdWRlX3BhcmVudHMgJiYgdGhpcy5wYXJlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMucGFyZW50LmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50cywgaW5jbHVkZV9uYXZpZ2F0aW9uIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4udGhpcy5wYXJzZXIuZmllbGRzLmZpbHRlcihcbiAgICAgICAgKGZpZWxkKSA9PiBpbmNsdWRlX25hdmlnYXRpb24gfHwgIWZpZWxkLm5hdmlnYXRpb25cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBrZXlzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBpbmNsdWRlX3BhcmVudHMgSW5jbHVkZSB0aGUgcGFyZW50IGZpZWxkc1xuICAgKiBAcmV0dXJucyBUaGUga2V5cyBvZiB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqL1xuICBrZXlzKHtcbiAgICBpbmNsdWRlX3BhcmVudHMgPSB0cnVlLFxuICB9OiB7XG4gICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgfSA9IHt9KTogT0RhdGFFbnRpdHlUeXBlS2V5W10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi4oaW5jbHVkZV9wYXJlbnRzICYmIHRoaXMucGFyZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLnBhcmVudC5rZXlzKHsgaW5jbHVkZV9wYXJlbnRzIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMucGFyc2VyLmtleXMgfHwgW10pLFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogUGlja3MgdGhlIGZpZWxkcyBmcm9tIGF0dHJpYnV0ZXMuXG4gICAqIEBwYXJhbSBhdHRyc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCBmaWVsZHNcbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIHRoZSBuYXZpZ2F0aW9uIGZpZWxkc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9ldGFnIEluY2x1ZGUgdGhlIGV0YWcgZmllbGRcbiAgICogQHJldHVybnMgVGhlIHBpY2tlZCBmaWVsZHNcbiAgICovXG4gIHBpY2soXG4gICAgYXR0cnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9LFxuICAgIHtcbiAgICAgIGluY2x1ZGVfcGFyZW50cyA9IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb24gPSBmYWxzZSxcbiAgICAgIGluY2x1ZGVfZXRhZyA9IHRydWUsXG4gICAgfToge1xuICAgICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgICAgIGluY2x1ZGVfbmF2aWdhdGlvbj86IGJvb2xlYW47XG4gICAgICBpbmNsdWRlX2V0YWc/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBQYXJ0aWFsPFQ+IHtcbiAgICBjb25zdCBuYW1lcyA9IHRoaXMuZmllbGRzKHsgaW5jbHVkZV9wYXJlbnRzLCBpbmNsdWRlX25hdmlnYXRpb24gfSkubWFwKFxuICAgICAgKGYpID0+IGYubmFtZVxuICAgICk7XG4gICAgbGV0IHZhbHVlcyA9IE9iamVjdC5rZXlzKGF0dHJzKVxuICAgICAgLmZpbHRlcigoaykgPT4gbmFtZXMuaW5kZXhPZihrKSAhPT0gLTEpXG4gICAgICAucmVkdWNlKChhY2MsIGspID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrXTogYXR0cnNba10gfSksIHt9KTtcbiAgICBpZiAoaW5jbHVkZV9ldGFnKSB7XG4gICAgICBjb25zdCBldGFnID0gdGhpcy5hcGkub3B0aW9ucy5oZWxwZXIuZXRhZyhhdHRycyk7XG4gICAgICB0aGlzLmFwaS5vcHRpb25zLmhlbHBlci5ldGFnKGF0dHJzLCBldGFnKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlaWFsaXplIHRoZSBnaXZlbiB2YWx1ZSBmcm9tIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBkZXNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZXNlcmlhbGl6YXRpb25cbiAgICogQHJldHVybnMgRGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IFQge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoZSBnaXZlbiB2YWx1ZSBmb3IgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBzZXJpYWxpemF0aW9uXG4gICAqIEByZXR1cm5zIFNlcmlhbGl6ZWQgdmFsdWVcbiAgICovXG4gIHNlcmlhbGl6ZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5zZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBlbmNvZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZW5jb2RpbmdcbiAgICogQHJldHVybnMgRW5jb2RlZCB2YWx1ZVxuICAgKi9cbiAgZW5jb2RlKHZhbHVlOiBULCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUga2V5IG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICogQHBhcmFtIGF0dHJzIEF0dHJpYnV0ZXMgb2YgdGhlIHZhbHVlXG4gICAqIEByZXR1cm5zIFJlc29sdmVkIGtleVxuICAgKi9cbiAgcmVzb2x2ZUtleShhdHRyczogVCB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLnJlc29sdmVLZXkoYXR0cnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRlZmF1bHRzIHZhbHVlcyBmb3IgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHJldHVybnMgRGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGVcbiAgICovXG4gIGRlZmF1bHRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZWZhdWx0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIHN0cnVjdHVyZWQgdHlwZSB0byBqc29uIHNjaGVtYVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBqc29uIHNjaGVtYVxuICAgKiBAcmV0dXJucyBKc29uIFNjaGVtYVxuICAgKi9cbiAgdG9Kc29uU2NoZW1hKG9wdGlvbnM6IEpzb25TY2hlbWFPcHRpb25zPFQ+ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIudG9Kc29uU2NoZW1hKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBnaXZlbiB2YWx1ZSBhZ2FpbnN0IHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBhdHRycyBBdHRyaWJ1dGVzIG9mIHRoZSB2YWx1ZVxuICAgKiBAcGFyYW0gbWV0aG9kIE1ldGhvZCB0byB1c2UgZm9yIHRoZSBwcm9jZXNzIHZhbGlkYXRpb25cbiAgICogQHJldHVybnMgT2JqZWN0IHdpdGggdGhlIGVycm9yc1xuICAgKi9cbiAgdmFsaWRhdGUoXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAge1xuICAgICAgbWV0aG9kLFxuICAgICAgbmF2aWdhdGlvbiA9IGZhbHNlLFxuICAgIH06IHtcbiAgICAgIG1ldGhvZD86ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCAnbW9kaWZ5JztcbiAgICAgIG5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIudmFsaWRhdGUoYXR0cnMsIHsgbWV0aG9kLCBuYXZpZ2F0aW9uIH0pO1xuICB9XG59XG4iXX0=
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NjaGVtYS9zdHJ1Y3R1cmVkLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFJTCx5QkFBeUIsR0FDMUIsTUFBTSxXQUFXLENBQUM7QUFHbkIsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGtCQUFrQjtJQVM1RCxZQUFZLE1BQStCLEVBQUUsTUFBbUI7UUFDOUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQU54QixhQUFRLEdBQStCLEVBQUUsQ0FBQztRQU94QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUkseUJBQXlCLENBQ3pDLE1BQU0sRUFDTixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsS0FBSyxDQUNiLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQW9DLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ3BCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMs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QztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxLQUFrQztRQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLFVBQWdDLEVBQUU7UUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQ04sS0FBaUIsRUFDakIsRUFDRSxNQUFNLEVBQ04sVUFBVSxHQUFHLEtBQUssTUFJaEIsRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9uc0hlbHBlciwgU3RydWN0dXJlZFR5cGVDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBPRGF0YVNjaGVtYUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHtcbiAgSnNvblNjaGVtYU9wdGlvbnMsXG4gIE9EYXRhRW50aXR5VHlwZUtleSxcbiAgT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyLFxuICBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyLFxufSBmcm9tICcuL3BhcnNlcnMnO1xuaW1wb3J0IHsgT0RhdGFTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+IGV4dGVuZHMgT0RhdGFTY2hlbWFFbGVtZW50IHtcbiAgYmFzZT86IHN0cmluZztcbiAgb3BlbjogYm9vbGVhbjtcbiAgcGFyZW50PzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+O1xuICBjaGlsZHJlbjogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+W10gPSBbXTtcbiAgbW9kZWw/OiB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgY29sbGVjdGlvbj86IHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gIHBhcnNlcjogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxUPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFN0cnVjdHVyZWRUeXBlQ29uZmlnPFQ+LCBzY2hlbWE6IE9EYXRhU2NoZW1hKSB7XG4gICAgc3VwZXIoY29uZmlnLCBzY2hlbWEpO1xuICAgIHRoaXMuYmFzZSA9IGNvbmZpZy5iYXNlO1xuICAgIHRoaXMub3BlbiA9IGNvbmZpZy5vcGVuIHx8IGZhbHNlO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXIoXG4gICAgICBjb25maWcsXG4gICAgICBzY2hlbWEubmFtZXNwYWNlLFxuICAgICAgc2NoZW1hLmFsaWFzXG4gICAgKTtcbiAgICB0aGlzLm1vZGVsID0gY29uZmlnLm1vZGVsIGFzIHR5cGVvZiBPRGF0YU1vZGVsO1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbmZpZy5jb2xsZWN0aW9uIGFzIHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gICAgaWYgKHRoaXMubW9kZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMubW9kZWwuaGFzT3duUHJvcGVydHkoJ29wdGlvbnMnKVxuICAgICAgICA/IHRoaXMubW9kZWwub3B0aW9uc1xuICAgICAgICA6IHsgZmllbGRzOiB7fSB9O1xuICAgICAgdGhpcy5tb2RlbC5idWlsZE1ldGE8VD4oeyBvcHRpb25zLCBzY2hlbWE6IHRoaXMgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uLm1vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICBjb25maWd1cmUoe1xuICAgIHBhcnNlckZvclR5cGUsXG4gICAgZmluZE9wdGlvbnNGb3JUeXBlLFxuICB9OiB7XG4gICAgcGFyc2VyRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gYW55O1xuICAgIGZpbmRPcHRpb25zRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gYW55O1xuICB9KSB7XG4gICAgaWYgKHRoaXMuYmFzZSkge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5hcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZShcbiAgICAgICAgdGhpcy5iYXNlXG4gICAgICApIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKHRoaXMpO1xuICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuICAgIHRoaXMucGFyc2VyLmNvbmZpZ3VyZSh7IHBhcnNlckZvclR5cGUsIG9wdGlvbnM6IHRoaXMuYXBpLm9wdGlvbnMgfSk7XG4gICAgaWYgKHRoaXMubW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1vZGVsLm9wdGlvbnMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubW9kZWwubWV0YS5jb25maWd1cmUoe1xuICAgICAgICBmaW5kT3B0aW9uc0ZvclR5cGUsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuYXBpLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgc3RydWN0dXJlZCB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0eXBlXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNhbGxhYmxlIGlzIHR5cGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAgICovXG4gIG92ZXJyaWRlIGlzU3VidHlwZU9mKHNjaGVtYTogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN1cGVyLmlzU3VidHlwZU9mKHNjaGVtYSkgfHxcbiAgICAgICh0aGlzLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIHRoaXMucGFyZW50LmlzU3VidHlwZU9mKHNjaGVtYSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaXMgYSBzdXBlcnR5cGUgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHlwZVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjYWxsYWJsZSBpcyB0eXBlIG9mIHRoZSBnaXZlbiB0eXBlXG4gICAqL1xuICBvdmVycmlkZSBpc1N1cGVydHlwZU9mKHNjaGVtYTogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN1cGVyLmlzU3VwZXJ0eXBlT2Yoc2NoZW1hKSB8fFxuICAgICAgdGhpcy5jaGlsZHJlbi5zb21lKChjKSA9PiBjLmlzU3VwZXJ0eXBlT2Yoc2NoZW1hKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHN0cnVjdHVyZWQgdHlwZSBoYXMgYSBzaW1wbGUga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgc2ltcGxlIGtleVxuICAgKi9cbiAgaXNTaW1wbGVLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5cygpLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKi9cbiAgaXNDb21wb3VuZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlzKCkubGVuZ3RoID4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSBmaWVsZCBwYXJzZXIgZm9yIHRoZSBnaXZlbiBmaWVsZCBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBmaWVsZFxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgcGFyc2VyXG4gICAqL1xuICBmaW5kRmllbGRCeU5hbWU8Rj4obmFtZToga2V5b2YgVCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcyh7XG4gICAgICBpbmNsdWRlX3BhcmVudHM6IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb246IHRydWUsXG4gICAgfSkuZmluZCgoZikgPT4gZi5uYW1lID09PSBuYW1lKSBhc1xuICAgICAgfCBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8Rj5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gZm9yIGV2YWx1YXRlIHRoZSBzY2hlbWFzIGluIHRoZSBoaWVyYXJjaHkuXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgdGhhdCBtYXRjaGVzIHRoZSBwcmVkaWNhdGUuXG4gICAqL1xuICBmaW5kUGFyZW50U2NoZW1hKFxuICAgIHByZWRpY2F0ZTogKHA6IE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PikgPT4gYm9vbGVhblxuICApOiBPRGF0YVN0cnVjdHVyZWRUeXBlPGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChwcmVkaWNhdGUodGhpcykpIHJldHVybiB0aGlzIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgICBpZiAodGhpcy5wYXJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZmluZFBhcmVudFNjaGVtYShwcmVkaWNhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiBmaWVsZC5cbiAgICogQHBhcmFtIGZpZWxkIEZpZWxkIHRoYXQgYmVsb25ncyB0byB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgb2YgdGhlIGZpZWxkXG4gICAqL1xuICBmaW5kU2NoZW1hRm9yRmllbGQ8RT4oZmllbGQ6IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcjxhbnk+KSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudFNjaGVtYShcbiAgICAgIChwKSA9PlxuICAgICAgICBwXG4gICAgICAgICAgLmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50czogZmFsc2UsIGluY2x1ZGVfbmF2aWdhdGlvbjogdHJ1ZSB9KVxuICAgICAgICAgIC5maW5kKChmKSA9PiBmID09PSBmaWVsZCkgIT09IHVuZGVmaW5lZFxuICAgICkgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxFPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBmaWVsZHMgb2YgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIG5hdmlnYXRpb24gcHJvcGVydGllcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCB0eXBlcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcmV0dXJucyBBbGwgZmllbGRzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqL1xuICBmaWVsZHMoe1xuICAgIGluY2x1ZGVfbmF2aWdhdGlvbixcbiAgICBpbmNsdWRlX3BhcmVudHMsXG4gIH06IHtcbiAgICBpbmNsdWRlX3BhcmVudHM6IGJvb2xlYW47XG4gICAgaW5jbHVkZV9uYXZpZ2F0aW9uOiBib29sZWFuO1xuICB9KTogT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyPGFueT5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLihpbmNsdWRlX3BhcmVudHMgJiYgdGhpcy5wYXJlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMucGFyZW50LmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50cywgaW5jbHVkZV9uYXZpZ2F0aW9uIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4udGhpcy5wYXJzZXIuZmllbGRzLmZpbHRlcihcbiAgICAgICAgKGZpZWxkKSA9PiBpbmNsdWRlX25hdmlnYXRpb24gfHwgIWZpZWxkLm5hdmlnYXRpb25cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBrZXlzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBpbmNsdWRlX3BhcmVudHMgSW5jbHVkZSB0aGUgcGFyZW50IGZpZWxkc1xuICAgKiBAcmV0dXJucyBUaGUga2V5cyBvZiB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqL1xuICBrZXlzKHtcbiAgICBpbmNsdWRlX3BhcmVudHMgPSB0cnVlLFxuICB9OiB7XG4gICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgfSA9IHt9KTogT0RhdGFFbnRpdHlUeXBlS2V5W10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi4oaW5jbHVkZV9wYXJlbnRzICYmIHRoaXMucGFyZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLnBhcmVudC5rZXlzKHsgaW5jbHVkZV9wYXJlbnRzIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMucGFyc2VyLmtleXMgfHwgW10pLFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogUGlja3MgdGhlIGZpZWxkcyBmcm9tIGF0dHJpYnV0ZXMuXG4gICAqIEBwYXJhbSBhdHRyc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCBmaWVsZHNcbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIHRoZSBuYXZpZ2F0aW9uIGZpZWxkc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9ldGFnIEluY2x1ZGUgdGhlIGV0YWcgZmllbGRcbiAgICogQHJldHVybnMgVGhlIHBpY2tlZCBmaWVsZHNcbiAgICovXG4gIHBpY2soXG4gICAgYXR0cnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9LFxuICAgIHtcbiAgICAgIGluY2x1ZGVfcGFyZW50cyA9IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb24gPSBmYWxzZSxcbiAgICAgIGluY2x1ZGVfZXRhZyA9IHRydWUsXG4gICAgfToge1xuICAgICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgICAgIGluY2x1ZGVfbmF2aWdhdGlvbj86IGJvb2xlYW47XG4gICAgICBpbmNsdWRlX2V0YWc/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBQYXJ0aWFsPFQ+IHtcbiAgICBjb25zdCBuYW1lcyA9IHRoaXMuZmllbGRzKHsgaW5jbHVkZV9wYXJlbnRzLCBpbmNsdWRlX25hdmlnYXRpb24gfSkubWFwKFxuICAgICAgKGYpID0+IGYubmFtZVxuICAgICk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJzKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBuYW1lcy5pbmRleE9mKGtleSkgIT09IC0xIHx8IChrZXkgPT0gdGhpcy5hcGkub3B0aW9ucy5oZWxwZXIuT0RBVEFfRVRBRyAmJiBpbmNsdWRlX2V0YWcpKVxuICAgICAgLnJlZHVjZSgoYWNjLCBrZXkpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiBhdHRyc1trZXldIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogRGVzZWlhbGl6ZSB0aGUgZ2l2ZW4gdmFsdWUgZnJvbSB0aGUgc3RydWN0dXJlZCB0eXBlLlxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gZGVzZXJpYWxpemVcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZGVzZXJpYWxpemF0aW9uXG4gICAqIEByZXR1cm5zIERlc2VyaWFsaXplZCB2YWx1ZVxuICAgKi9cbiAgZGVzZXJpYWxpemUodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0aGUgZ2l2ZW4gdmFsdWUgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBzZXJpYWxpemVcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3Igc2VyaWFsaXphdGlvblxuICAgKiBAcmV0dXJucyBTZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBzZXJpYWxpemUodmFsdWU6IFQsIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIuc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgdGhlIGdpdmVuIHZhbHVlIGZvciB0aGUgc3RydWN0dXJlZCB0eXBlLlxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gZW5jb2RlXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGVuY29kaW5nXG4gICAqIEByZXR1cm5zIEVuY29kZWQgdmFsdWVcbiAgICovXG4gIGVuY29kZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5lbmNvZGUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGtleSBvZiB0aGUgc3RydWN0dXJlZCB0eXBlIGZvciB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqIEBwYXJhbSBhdHRycyBBdHRyaWJ1dGVzIG9mIHRoZSB2YWx1ZVxuICAgKiBAcmV0dXJucyBSZXNvbHZlZCBrZXlcbiAgICovXG4gIHJlc29sdmVLZXkoYXR0cnM6IFQgfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5yZXNvbHZlS2V5KGF0dHJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0cyB2YWx1ZXMgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEByZXR1cm5zIERlZmF1bHQgdmFsdWVzIGZvciB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqL1xuICBkZWZhdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIuZGVmYXVsdHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBzdHJ1Y3R1cmVkIHR5cGUgdG8ganNvbiBzY2hlbWFcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IganNvbiBzY2hlbWFcbiAgICogQHJldHVybnMgSnNvbiBTY2hlbWFcbiAgICovXG4gIHRvSnNvblNjaGVtYShvcHRpb25zOiBKc29uU2NoZW1hT3B0aW9uczxUPiA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLnRvSnNvblNjaGVtYShvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZ2l2ZW4gdmFsdWUgYWdhaW5zdCB0aGUgc3RydWN0dXJlZCB0eXBlLlxuICAgKiBAcGFyYW0gYXR0cnMgQXR0cmlidXRlcyBvZiB0aGUgdmFsdWVcbiAgICogQHBhcmFtIG1ldGhvZCBNZXRob2QgdG8gdXNlIGZvciB0aGUgcHJvY2VzcyB2YWxpZGF0aW9uXG4gICAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHRoZSBlcnJvcnNcbiAgICovXG4gIHZhbGlkYXRlKFxuICAgIGF0dHJzOiBQYXJ0aWFsPFQ+LFxuICAgIHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIG5hdmlnYXRpb24gPSBmYWxzZSxcbiAgICB9OiB7XG4gICAgICBtZXRob2Q/OiAnY3JlYXRlJyB8ICd1cGRhdGUnIHwgJ21vZGlmeSc7XG4gICAgICBuYXZpZ2F0aW9uPzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLnZhbGlkYXRlKGF0dHJzLCB7IG1ldGhvZCwgbmF2aWdhdGlvbiB9KTtcbiAgfVxufVxuIl19
|
|
@@ -25,9 +25,9 @@ export class ODataServiceFactory {
|
|
|
25
25
|
})(this.client, singletonName, apiNameOrEntityType);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
ODataServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
29
|
-
ODataServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
28
|
+
ODataServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ODataServiceFactory, deps: [{ token: i1.ODataClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
ODataServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ODataServiceFactory });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ODataServiceFactory, decorators: [{
|
|
31
31
|
type: Injectable
|
|
32
32
|
}], ctorParameters: function () { return [{ type: i1.ODataClient }]; } });
|
|
33
33
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9zZXJ2aWNlcy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBR3BELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBc0IsTUFBbUI7UUFBbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtJQUFHLENBQUM7SUFFN0M7Ozs7T0FJRztJQUNILFNBQVMsQ0FDUCxhQUFxQixFQUNyQixtQkFBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLHFCQUF3QjtTQUFHLENBQUMsQ0FDcEQsSUFBSSxDQUFDLE1BQU0sRUFDWCxhQUFhLEVBQ2IsbUJBQW1CLENBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUNQLGFBQXFCLEVBQ3JCLG1CQUE0QjtRQUU1QixPQUFPLElBQUksQ0FBQyxLQUFNLFNBQVEscUJBQXdCO1NBQUcsQ0FBQyxDQUNwRCxJQUFJLENBQUMsTUFBTSxFQUNYLGFBQWEsRUFDYixtQkFBbUIsQ0FDcEIsQ0FBQztJQUNKLENBQUM7O2dIQWhDVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT0RhdGFDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdHlTZXRTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktc2V0JztcbmltcG9ydCB7IE9EYXRhU2luZ2xldG9uU2VydmljZSB9IGZyb20gJy4vc2luZ2xldG9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9EYXRhU2VydmljZUZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2xpZW50OiBPRGF0YUNsaWVudCkge31cblxuICAvKipcbiAgICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGFuIGVudGl0eSBzZXQgc2VydmljZS5cbiAgICogQHBhcmFtIGVudGl0eVNldE5hbWUgTmFtZSBvZiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGFwaU5hbWVPckVudGl0eVR5cGUgTmFtZSBvZiB0aGUgQVBJIG9yIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkuXG4gICAqL1xuICBlbnRpdHlTZXQ8VD4oXG4gICAgZW50aXR5U2V0TmFtZTogc3RyaW5nLFxuICAgIGFwaU5hbWVPckVudGl0eVR5cGU/OiBzdHJpbmdcbiAgKTogT0RhdGFFbnRpdHlTZXRTZXJ2aWNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIE9EYXRhRW50aXR5U2V0U2VydmljZTxUPiB7fSkoXG4gICAgICB0aGlzLmNsaWVudCxcbiAgICAgIGVudGl0eVNldE5hbWUsXG4gICAgICBhcGlOYW1lT3JFbnRpdHlUeXBlXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBzaW5nbGV0b24gc2VydmljZS5cbiAgICogQHBhcmFtIHNpbmdsZXRvbk5hbWUgTmFtZSBvZiB0aGUgc2luZ2xldG9uLlxuICAgKiBAcGFyYW0gYXBpTmFtZU9yRW50aXR5VHlwZSBOYW1lIG9mIHRoZSBBUEkgb3IgdGhlIHR5cGUgb2YgdGhlIGVudGl0eS5cbiAgICovXG4gIHNpbmdsZXRvbjxUPihcbiAgICBzaW5nbGV0b25OYW1lOiBzdHJpbmcsXG4gICAgYXBpTmFtZU9yRW50aXR5VHlwZT86IHN0cmluZ1xuICApOiBPRGF0YVNpbmdsZXRvblNlcnZpY2U8VD4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgT0RhdGFTaW5nbGV0b25TZXJ2aWNlPFQ+IHt9KShcbiAgICAgIHRoaXMuY2xpZW50LFxuICAgICAgc2luZ2xldG9uTmFtZSxcbiAgICAgIGFwaU5hbWVPckVudGl0eVR5cGVcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ export const Urls = {
|
|
|
5
5
|
let index = param.indexOf(VALUE_SEPARATOR);
|
|
6
6
|
if (index !== -1)
|
|
7
7
|
Object.assign(acc, {
|
|
8
|
-
[param.
|
|
8
|
+
[param.substring(0, index)]: param.substring(index + 1),
|
|
9
9
|
});
|
|
10
10
|
return acc;
|
|
11
11
|
}, {});
|
|
@@ -21,4 +21,4 @@ export const Urls = {
|
|
|
21
21
|
return string;
|
|
22
22
|
},
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi91dGlscy91cmxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhFLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRztJQUNsQixnQkFBZ0IsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDaEUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMzQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7aUJBQ3hELENBQUMsQ0FBQztZQUNMLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUNELGtCQUFrQixDQUFDLE1BQWM7UUFDL0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUEFSQU1fU0VQQVJBVE9SLCBWQUxVRV9TRVBBUkFUT1IgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgVXJscyA9IHtcbiAgcGFyc2VRdWVyeVN0cmluZyhxdWVyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHF1ZXJ5LnNwbGl0KFBBUkFNX1NFUEFSQVRPUikucmVkdWNlKChhY2MsIHBhcmFtOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBpbmRleCA9IHBhcmFtLmluZGV4T2YoVkFMVUVfU0VQQVJBVE9SKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWNjLCB7XG4gICAgICAgICAgW3BhcmFtLnN1YnN0cmluZygwLCBpbmRleCldOiBwYXJhbS5zdWJzdHJpbmcoaW5kZXggKyAxKSxcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgfSxcbiAgZXNjYXBlSWxsZWdhbENoYXJzKHN0cmluZzogc3RyaW5nKSB7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoLyUvZywgJyUyNScpO1xuICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cXCsvZywgJyUyQicpO1xuICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cXC8vZywgJyUyRicpO1xuICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cXD8vZywgJyUzRicpO1xuICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC8jL2csICclMjMnKTtcbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvJi9nLCAnJTI2Jyk7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoLycvZywgXCInJ1wiKTtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9LFxufTtcbiJdfQ==
|