@ngutil/data 0.0.69 → 0.0.70

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.
@@ -1,4 +1,4 @@
1
- import { isEqual } from "lodash";
1
+ import { isEqual } from "lodash-es";
2
2
  import { filterBy, pathGetterCompile } from "../query";
3
3
  export class ModelMeta {
4
4
  static coerce(value) {
@@ -122,4 +122,4 @@ export class UnknownMeta extends ModelMeta {
122
122
  super({ keys: [], trackBy: (index) => index });
123
123
  }
124
124
  }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RhdGEvc3JjL21vZGVsL21ldGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUdoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBZ0J0RCxNQUFNLE9BQU8sU0FBUztJQUNsQixNQUFNLENBQUMsTUFBTSxDQUFrQixLQUF3QjtRQUNuRCxJQUFJLEtBQUssWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUM3QixPQUFPLEtBQUssQ0FBQTtRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDL0IsQ0FBQztJQUNMLENBQUM7SUFJUSxPQUFPLENBQXVCO0lBRXZDLFlBQVksS0FBd0I7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBRXRCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtZQUNoRCxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFhLEVBQUUsSUFBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2xGLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7WUFDaEMsQ0FB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YXIvY29yZVwiXG5cbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgZmlsdGVyQnksIHBhdGhHZXR0ZXJDb21waWxlIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcblxuZXhwb3J0IHR5cGUgTW9kZWwgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9XG5cbmV4cG9ydCB0eXBlIE1vZGVsUmVmID0geyBrZXk/OiBQcmltaXRpdmUgfCBBcnJheTxQcmltaXRpdmU+OyBpbmRleD86IG51bWJlciB9XG5leHBvcnQgdHlwZSBNb2RlbFJlZkZpbHRlcjxUPiA9IChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxNZXRhUHJvcHM8VCBleHRlbmRzIE1vZGVsPiB7XG4gICAgcmVhZG9ubHkga2V5czogcmVhZG9ubHkgc3RyaW5nW11cbiAgICByZWFkb25seSB0cmFja0J5PzogVHJhY2tCeUZ1bmN0aW9uPFQ+XG59XG5cbmV4cG9ydCB0eXBlIE1vZGVsTWV0YUlucHV0PFQgZXh0ZW5kcyBNb2RlbD4gPSBNb2RlbE1ldGE8VD4gfCBNb2RlbE1ldGFQcm9wczxUPlxuXG5leHBvcnQgdHlwZSBUcmFja2VkTW9kZWw8VCBleHRlbmRzIE1vZGVsPiA9IHsgaW5kZXg6IG51bWJlcjsgbW9kZWw6IFQgfVxuXG5leHBvcnQgY2xhc3MgTW9kZWxNZXRhPFQgZXh0ZW5kcyBNb2RlbD4gaW1wbGVtZW50cyBNb2RlbE1ldGFQcm9wczxUPiB7XG4gICAgc3RhdGljIGNvZXJjZTxNIGV4dGVuZHMgTW9kZWw+KHZhbHVlOiBNb2RlbE1ldGFJbnB1dDxNPik6IE1vZGVsTWV0YTxNPiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1vZGVsTWV0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsTWV0YSh2YWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlYWRvbmx5IGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgcmVhZG9ubHkgdHJhY2tCeTogVHJhY2tCeUZ1bmN0aW9uPFQ+XG4gICAgcmVhZG9ubHkgI2dldEtleT86IChtb2RlbDogVCkgPT4gc3RyaW5nXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wczogTW9kZWxNZXRhUHJvcHM8VD4pIHtcbiAgICAgICAgdGhpcy5rZXlzID0gcHJvcHMua2V5c1xuXG4gICAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZ2V0dGVycyA9IHRoaXMua2V5cy5tYXAocGF0aEdldHRlckNvbXBpbGUpXG4gICAgICAgICAgICBpZiAocHJvcHMudHJhY2tCeSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IFQpID0+IGdldHRlcnMubWFwKHAgPT4gcChpdGVtKSkuam9pbihcIuKIgFwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNrQnkgPSBwcm9wcy50cmFja0J5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiNnZXRLZXkgPSAoaXRlbTogVCkgPT4gZ2V0dGVycy5tYXAocCA9PiBwKGl0ZW0pKS5qb2luKFwi4oiAXCIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvcHMudHJhY2tCeSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY29tcGlsZSB0cmFjayBieSBmdW5jdGlvbiB3aXRob3V0IGBrZXlzYCBkZWNsYXJhdGlvblwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNrQnkgPSBwcm9wcy50cmFja0J5XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VxdWFsKGE6IFQsIGI6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWwoYSwgYilcbiAgICB9XG5cbiAgICBpc0VxdWFsQnlUcmFjayhhOiBUcmFja2VkTW9kZWw8VD4sIGI6IFRyYWNrZWRNb2RlbDxUPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPT0gbnVsbCAmJiBiID09IG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhLmluZGV4ID09IG51bGwgfHwgYi5pbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbmRleCA9PSBudWxsICYmIGIuaW5kZXggPT0gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEubW9kZWwgPT0gbnVsbCB8fCBiLm1vZGVsID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhLm1vZGVsID09IG51bGwgJiYgYi5tb2RlbCA9PSBudWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFja0J5KGEuaW5kZXgsIGEubW9kZWwpID09PSB0aGlzLnRyYWNrQnkoYi5pbmRleCwgYi5tb2RlbClcbiAgICB9XG5cbiAgICBpc0VxdWFsQnlLZXkoYTogVCwgYjogVCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy4jZ2V0S2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGEgPT0gbnVsbCAmJiBiID09IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNnZXRLZXkoYSkgPT09IHRoaXMuI2dldEtleShiKVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByaW1hcnkga2V5cyBpcyBub3QgZGVmaW5lZCBmb3JcIiwgYSwgYilcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgbm9ybWFsaXplUmVmKHJlZjogTW9kZWxSZWYgfCBNb2RlbFJlZk5vcm0pOiBNb2RlbFJlZk5vcm0ge1xuICAgICAgICBpZiAocmVmIGluc3RhbmNlb2YgTW9kZWxSZWZOb3JtKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVmXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVmLmtleSAhPSBudWxsICYmIHJlZi5pbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IHByb3ZpZGUgYHBrYCBvciBgaW5kZXhgIHZhbHVlIG5vdCBib3RoXCIpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVmLmtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBrZXlWYWx1ZSA9IChBcnJheS5pc0FycmF5KHJlZi5rZXkpID8gcmVmLmtleSA6IFtyZWYua2V5XSkgYXMgcmVhZG9ubHkgUHJpbWl0aXZlW11cblxuICAgICAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5rZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBub3JtYWxpemUgcmVmIHdpdGhvdXQgYGtleXNgXCIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCAhPT0gdGhpcy5rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdyb25nIG51bWJlciBvZiBcXGBrZXlcXGAgdmFsdWVzIGZvciB0aGlzIGtleXM6IFske3RoaXMua2V5cy5qb2luKFwiLFwiKX1dYClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFJlZkJ5S2V5KGtleVZhbHVlLCB0aGlzLmtleXMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkVtcHR5IGtleSBpbiBNb2RlbFJlZlwiLCByZWYpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVmLmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxSZWZCeUluZGV4KHJlZi5pbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgYGtleWAgb3IgYGluZGV4YCB2YWx1ZVwiKVxuICAgIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGVsUmVmTm9ybSB7XG4gICAgcmVhZG9ubHkga2V5PzogcmVhZG9ubHkgUHJpbWl0aXZlW11cbiAgICByZWFkb25seSBpbmRleD86IG51bWJlclxuXG4gICAgI2ZpbHRlcj86IE1vZGVsUmVmRmlsdGVyPGFueT5cbiAgICB0b0ZpbHRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuI2ZpbHRlciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuI2ZpbHRlciA9IHRoaXMuX2FzRmlsdGVyKCkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuI2ZpbHRlclxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfYXNGaWx0ZXIoKTogTW9kZWxSZWZGaWx0ZXI8YW55PlxufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxSZWZCeUtleSBleHRlbmRzIE1vZGVsUmVmTm9ybSB7XG4gICAgb3ZlcnJpZGUgcmVhZG9ubHkga2V5OiByZWFkb25seSBQcmltaXRpdmVbXVxuXG4gICAgI2tleXM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgY29uc3RydWN0b3Ioa2V5OiByZWFkb25seSBQcmltaXRpdmVbXSwga2V5czogcmVhZG9ubHkgc3RyaW5nW10pIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLmtleSA9IGtleVxuICAgICAgICB0aGlzLiNrZXlzID0ga2V5c1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYXNGaWx0ZXIoKTogTW9kZWxSZWZGaWx0ZXI8YW55PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHt9IGFzIGFueVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuI2tleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZpbHRlclt0aGlzLiNrZXlzW2ldXSA9IHRoaXMua2V5W2ldXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlckJ5KGZpbHRlcilcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFJlZkJ5SW5kZXggZXh0ZW5kcyBNb2RlbFJlZk5vcm0ge1xuICAgIG92ZXJyaWRlIHJlYWRvbmx5IGluZGV4OiBudW1iZXJcblxuICAgIGNvbnN0cnVjdG9yKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXhcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2FzRmlsdGVyKCk6IE1vZGVsUmVmRmlsdGVyPGFueT4ge1xuICAgICAgICByZXR1cm4gKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gdGhpcy5pbmRleCA9PT0gaW5kZXhcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmtub3duTWV0YTxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgTW9kZWxNZXRhPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoeyBrZXlzOiBbXSwgdHJhY2tCeTogKGluZGV4OiBudW1iZXIpID0+IGluZGV4IH0pXG4gICAgfVxufVxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RhdGEvc3JjL21vZGVsL21ldGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUduQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBZ0J0RCxNQUFNLE9BQU8sU0FBUztJQUNsQixNQUFNLENBQUMsTUFBTSxDQUFrQixLQUF3QjtRQUNuRCxJQUFJLEtBQUssWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUM3QixPQUFPLEtBQUssQ0FBQTtRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDL0IsQ0FBQztJQUNMLENBQUM7SUFJUSxPQUFPLENBQXVCO0lBRXZDLFlBQVksS0FBd0I7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBRXRCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtZQUNoRCxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFhLEVBQUUsSUFBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2xGLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7WUFDaEMsQ0FB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YXIvY29yZVwiXG5cbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoLWVzXCJcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgZmlsdGVyQnksIHBhdGhHZXR0ZXJDb21waWxlIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcblxuZXhwb3J0IHR5cGUgTW9kZWwgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9XG5cbmV4cG9ydCB0eXBlIE1vZGVsUmVmID0geyBrZXk/OiBQcmltaXRpdmUgfCBBcnJheTxQcmltaXRpdmU+OyBpbmRleD86IG51bWJlciB9XG5leHBvcnQgdHlwZSBNb2RlbFJlZkZpbHRlcjxUPiA9IChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBib29sZWFuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxNZXRhUHJvcHM8VCBleHRlbmRzIE1vZGVsPiB7XG4gICAgcmVhZG9ubHkga2V5czogcmVhZG9ubHkgc3RyaW5nW11cbiAgICByZWFkb25seSB0cmFja0J5PzogVHJhY2tCeUZ1bmN0aW9uPFQ+XG59XG5cbmV4cG9ydCB0eXBlIE1vZGVsTWV0YUlucHV0PFQgZXh0ZW5kcyBNb2RlbD4gPSBNb2RlbE1ldGE8VD4gfCBNb2RlbE1ldGFQcm9wczxUPlxuXG5leHBvcnQgdHlwZSBUcmFja2VkTW9kZWw8VCBleHRlbmRzIE1vZGVsPiA9IHsgaW5kZXg6IG51bWJlcjsgbW9kZWw6IFQgfVxuXG5leHBvcnQgY2xhc3MgTW9kZWxNZXRhPFQgZXh0ZW5kcyBNb2RlbD4gaW1wbGVtZW50cyBNb2RlbE1ldGFQcm9wczxUPiB7XG4gICAgc3RhdGljIGNvZXJjZTxNIGV4dGVuZHMgTW9kZWw+KHZhbHVlOiBNb2RlbE1ldGFJbnB1dDxNPik6IE1vZGVsTWV0YTxNPiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1vZGVsTWV0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vZGVsTWV0YSh2YWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlYWRvbmx5IGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgcmVhZG9ubHkgdHJhY2tCeTogVHJhY2tCeUZ1bmN0aW9uPFQ+XG4gICAgcmVhZG9ubHkgI2dldEtleT86IChtb2RlbDogVCkgPT4gc3RyaW5nXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wczogTW9kZWxNZXRhUHJvcHM8VD4pIHtcbiAgICAgICAgdGhpcy5rZXlzID0gcHJvcHMua2V5c1xuXG4gICAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZ2V0dGVycyA9IHRoaXMua2V5cy5tYXAocGF0aEdldHRlckNvbXBpbGUpXG4gICAgICAgICAgICBpZiAocHJvcHMudHJhY2tCeSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IFQpID0+IGdldHRlcnMubWFwKHAgPT4gcChpdGVtKSkuam9pbihcIuKIgFwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNrQnkgPSBwcm9wcy50cmFja0J5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiNnZXRLZXkgPSAoaXRlbTogVCkgPT4gZ2V0dGVycy5tYXAocCA9PiBwKGl0ZW0pKS5qb2luKFwi4oiAXCIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvcHMudHJhY2tCeSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY29tcGlsZSB0cmFjayBieSBmdW5jdGlvbiB3aXRob3V0IGBrZXlzYCBkZWNsYXJhdGlvblwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNrQnkgPSBwcm9wcy50cmFja0J5XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VxdWFsKGE6IFQsIGI6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRXF1YWwoYSwgYilcbiAgICB9XG5cbiAgICBpc0VxdWFsQnlUcmFjayhhOiBUcmFja2VkTW9kZWw8VD4sIGI6IFRyYWNrZWRNb2RlbDxUPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPT0gbnVsbCAmJiBiID09IG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhLmluZGV4ID09IG51bGwgfHwgYi5pbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbmRleCA9PSBudWxsICYmIGIuaW5kZXggPT0gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGEubW9kZWwgPT0gbnVsbCB8fCBiLm1vZGVsID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhLm1vZGVsID09IG51bGwgJiYgYi5tb2RlbCA9PSBudWxsXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFja0J5KGEuaW5kZXgsIGEubW9kZWwpID09PSB0aGlzLnRyYWNrQnkoYi5pbmRleCwgYi5tb2RlbClcbiAgICB9XG5cbiAgICBpc0VxdWFsQnlLZXkoYTogVCwgYjogVCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy4jZ2V0S2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGEgPT0gbnVsbCAmJiBiID09IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLiNnZXRLZXkoYSkgPT09IHRoaXMuI2dldEtleShiKVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByaW1hcnkga2V5cyBpcyBub3QgZGVmaW5lZCBmb3JcIiwgYSwgYilcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgbm9ybWFsaXplUmVmKHJlZjogTW9kZWxSZWYgfCBNb2RlbFJlZk5vcm0pOiBNb2RlbFJlZk5vcm0ge1xuICAgICAgICBpZiAocmVmIGluc3RhbmNlb2YgTW9kZWxSZWZOb3JtKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVmXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVmLmtleSAhPSBudWxsICYmIHJlZi5pbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPbmx5IHByb3ZpZGUgYHBrYCBvciBgaW5kZXhgIHZhbHVlIG5vdCBib3RoXCIpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVmLmtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBrZXlWYWx1ZSA9IChBcnJheS5pc0FycmF5KHJlZi5rZXkpID8gcmVmLmtleSA6IFtyZWYua2V5XSkgYXMgcmVhZG9ubHkgUHJpbWl0aXZlW11cblxuICAgICAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5rZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBub3JtYWxpemUgcmVmIHdpdGhvdXQgYGtleXNgXCIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCAhPT0gdGhpcy5rZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFdyb25nIG51bWJlciBvZiBcXGBrZXlcXGAgdmFsdWVzIGZvciB0aGlzIGtleXM6IFske3RoaXMua2V5cy5qb2luKFwiLFwiKX1dYClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2RlbFJlZkJ5S2V5KGtleVZhbHVlLCB0aGlzLmtleXMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkVtcHR5IGtleSBpbiBNb2RlbFJlZlwiLCByZWYpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVmLmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTW9kZWxSZWZCeUluZGV4KHJlZi5pbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgYGtleWAgb3IgYGluZGV4YCB2YWx1ZVwiKVxuICAgIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1vZGVsUmVmTm9ybSB7XG4gICAgcmVhZG9ubHkga2V5PzogcmVhZG9ubHkgUHJpbWl0aXZlW11cbiAgICByZWFkb25seSBpbmRleD86IG51bWJlclxuXG4gICAgI2ZpbHRlcj86IE1vZGVsUmVmRmlsdGVyPGFueT5cbiAgICB0b0ZpbHRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuI2ZpbHRlciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuI2ZpbHRlciA9IHRoaXMuX2FzRmlsdGVyKCkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuI2ZpbHRlclxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfYXNGaWx0ZXIoKTogTW9kZWxSZWZGaWx0ZXI8YW55PlxufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxSZWZCeUtleSBleHRlbmRzIE1vZGVsUmVmTm9ybSB7XG4gICAgb3ZlcnJpZGUgcmVhZG9ubHkga2V5OiByZWFkb25seSBQcmltaXRpdmVbXVxuXG4gICAgI2tleXM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgY29uc3RydWN0b3Ioa2V5OiByZWFkb25seSBQcmltaXRpdmVbXSwga2V5czogcmVhZG9ubHkgc3RyaW5nW10pIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLmtleSA9IGtleVxuICAgICAgICB0aGlzLiNrZXlzID0ga2V5c1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYXNGaWx0ZXIoKTogTW9kZWxSZWZGaWx0ZXI8YW55PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHt9IGFzIGFueVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuI2tleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZpbHRlclt0aGlzLiNrZXlzW2ldXSA9IHRoaXMua2V5W2ldXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlckJ5KGZpbHRlcilcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2RlbFJlZkJ5SW5kZXggZXh0ZW5kcyBNb2RlbFJlZk5vcm0ge1xuICAgIG92ZXJyaWRlIHJlYWRvbmx5IGluZGV4OiBudW1iZXJcblxuICAgIGNvbnN0cnVjdG9yKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXhcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2FzRmlsdGVyKCk6IE1vZGVsUmVmRmlsdGVyPGFueT4ge1xuICAgICAgICByZXR1cm4gKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gdGhpcy5pbmRleCA9PT0gaW5kZXhcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmtub3duTWV0YTxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgTW9kZWxNZXRhPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoeyBrZXlzOiBbXSwgdHJhY2tCeTogKGluZGV4OiBudW1iZXIpID0+IGluZGV4IH0pXG4gICAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { isEqual } from "lodash";
1
+ import { isEqual } from "lodash-es";
2
2
  import { toSorted } from "@ngutil/common";
3
3
  import { filterBy } from "./filter";
4
4
  import { groupBy } from "./grouper";
@@ -75,4 +75,4 @@ function compileExec(input, prev, compiler) {
75
75
  });
76
76
  return exec;
77
77
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBR2hDLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkQsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBR25DLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxVQUFVLENBQUE7QUFFekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBaUI3QixNQUFNLFVBQVUsYUFBYSxDQUN6QixLQUF3QixFQUN4QixRQUEyQjtJQUUzQixNQUFNLFNBQVMsR0FBc0I7UUFDakMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsU0FBUyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDOUQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7S0FDM0QsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsUUFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUMxRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDWCxPQUFPLFFBQVEsQ0FBQTtJQUNuQixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFtQixFQUFrQixFQUFFO1FBQ3JELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQTtRQUNsQyxDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQWlCLEtBQUssQ0FBQTtRQUVoQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDOUMsQ0FBQztRQUVELElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNqRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQTtRQUUzQixnQkFBZ0I7UUFFaEIsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0lBQ25DLENBQUMsQ0FBQTtJQUVELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUs7U0FDbEIsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFBO0FBQ25CLENBQUM7QUFNRCxTQUFTLGNBQWMsQ0FDbkIsTUFBZ0MsRUFDaEMsSUFBd0I7SUFFeEIsT0FBTyxXQUFXLENBQUksTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBTUQsU0FBUyxjQUFjLENBQ25CLE1BQWdDLEVBQ2hDLElBQXdCO0lBRXhCLE9BQU8sV0FBVyxDQUFJLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDL0MsQ0FBQztBQU1ELFNBQVMsZUFBZSxDQUNwQixNQUFnQyxFQUNoQyxJQUF5QjtJQUV6QixPQUFPLFdBQVcsQ0FBSSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ2hELENBQUM7QUFNRCxTQUFTLGFBQWEsQ0FDbEIsS0FBMkIsRUFDM0IsSUFBdUI7SUFFdkIsT0FBTyxXQUFXLENBQUksS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQWtCLEtBQVk7SUFDMUMsT0FBTyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUM5RCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQWtCLEtBQVUsRUFBRSxJQUFTLEVBQUUsUUFBYTtJQUN0RSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoQixPQUFPLFNBQVMsQ0FBQTtJQUNwQixDQUFDO0lBRUQsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDZiwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBUSxDQUFBO0lBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUMvQixLQUFLLEVBQUUsS0FBSztRQUNaLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFFBQVEsRUFBRSxLQUFLO0tBQ2xCLENBQUMsQ0FBQTtJQUNGLE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCJcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgRGVlcFJlYWRvbmx5LCB0b1NvcnRlZCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCJcbmltcG9ydCB7IEZpbHRlciwgZmlsdGVyQnkgfSBmcm9tIFwiLi9maWx0ZXJcIlxuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCIuL2dyb3VwZXJcIlxuaW1wb3J0IHsgUXVlcnlSZXN1bHQsIFF1ZXJ5V2l0aFNsaWNlIH0gZnJvbSBcIi4vcXVlcnlcIlxuaW1wb3J0IHsgU2xpY2UgfSBmcm9tIFwiLi9zbGljZVwiXG5pbXBvcnQgeyBzb3J0QnksIFNvcnRlciB9IGZyb20gXCIuL3NvcnRlclwiXG5cbmNvbnN0IElOUFVUID0gU3ltYm9sKFwiSU5QVVRcIilcblxuaW50ZXJmYWNlIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgW0lOUFVUXTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlFeGVjdXRvcnM8VCBleHRlbmRzIE1vZGVsPiB7XG4gICAgcmVhZG9ubHkgZmlsdGVyRm4/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuICAgIHJlYWRvbmx5IHNvcnRlckZuPzogU29ydGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBncm91cGVyRm4/OiBHcm91cGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBzbGljZXJGbj86IFNsaWNlRXhlY3V0b3I8VD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeUV4ZWN1dG9yczxUPiB7XG4gICAgKGl0ZW1zOiByZWFkb25seSBUW10pOiBRdWVyeVJlc3VsdDxUPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIHF1ZXJ5OiBRdWVyeVdpdGhTbGljZTxUPixcbiAgICBwcmV2aW91cz86IFF1ZXJ5RXhlY3V0b3I8VD5cbik6IFF1ZXJ5RXhlY3V0b3I8VD4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yczogUXVlcnlFeGVjdXRvcnM8VD4gPSB7XG4gICAgICAgIGZpbHRlckZuOiBmaWx0ZXJFeGVjdXRvcihxdWVyeS5maWx0ZXIsIHByZXZpb3VzPy5maWx0ZXJGbiksXG4gICAgICAgIHNvcnRlckZuOiBzb3J0ZXJFeGVjdXRvcihxdWVyeS5zb3J0ZXIsIHByZXZpb3VzPy5zb3J0ZXJGbiksXG4gICAgICAgIGdyb3VwZXJGbjogZ3JvdXBlckV4ZWN1dG9yKHF1ZXJ5Lmdyb3VwZXIsIHByZXZpb3VzPy5ncm91cGVyRm4pLFxuICAgICAgICBzbGljZXJGbjogc2xpY2VFeGVjdXRvcihxdWVyeS5zbGljZSwgcHJldmlvdXM/LnNsaWNlckZuKVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZWQgPSBwcmV2aW91cyA9PSBudWxsIHx8IE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykuc29tZSgoW2ssIHZdKSA9PiAocHJldmlvdXMgYXMgYW55KVtrXSAhPT0gdilcbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzXG4gICAgfVxuXG4gICAgY29uc3QgZXhlY3V0b3IgPSAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFF1ZXJ5UmVzdWx0PFQ+ID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zID09IG51bGwgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHJlYWRvbmx5IFRbXSA9IGl0ZW1zXG5cbiAgICAgICAgaWYgKGV4ZWN1dG9ycy5maWx0ZXJGbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihleGVjdXRvcnMuZmlsdGVyRm4pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNvcnRlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0b1NvcnRlZChyZXN1bHQsIGV4ZWN1dG9ycy5zb3J0ZXJGbilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0Lmxlbmd0aFxuXG4gICAgICAgIC8vIFRPRE86IGdyb3VwZXJcblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNsaWNlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBleGVjdXRvcnMuc2xpY2VyRm4ocmVzdWx0KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IHJlc3VsdCwgdG90YWwgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4ZWN1dG9yLCBrLCB7XG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY3V0b3Jcbn1cblxuaW50ZXJmYWNlIEZpbHRlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBQYXJ0aWFsRXhlY3V0b3Ige1xuICAgIChpdGVtOiBUKTogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBmaWx0ZXJFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIGZpbHRlcj86IERlZXBSZWFkb25seTxGaWx0ZXI8VD4+LFxuICAgIHByZXY/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuKTogRmlsdGVyRXhlY3V0b3I8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb21waWxlRXhlYzxUPihmaWx0ZXIsIHByZXYsIGZpbHRlckJ5KVxufVxuXG5pbnRlcmZhY2UgU29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGE6IFQsIGI6IFQpOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gc29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPihcbiAgICBzb3J0ZXI/OiBEZWVwUmVhZG9ubHk8U29ydGVyPFQ+PixcbiAgICBwcmV2PzogU29ydGVyRXhlY3V0b3I8VD5cbik6IFNvcnRlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBzb3J0QnkpXG59XG5cbmludGVyZmFjZSBHcm91cGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGl0ZW06IFQpOiBQcmltaXRpdmVcbn1cblxuZnVuY3Rpb24gZ3JvdXBlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc29ydGVyPzogRGVlcFJlYWRvbmx5PFNvcnRlcjxUPj4sXG4gICAgcHJldj86IEdyb3VwZXJFeGVjdXRvcjxUPlxuKTogR3JvdXBlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBncm91cEJ5KVxufVxuXG5pbnRlcmZhY2UgU2xpY2VFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUGFydGlhbEV4ZWN1dG9yIHtcbiAgICAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFRbXVxufVxuXG5mdW5jdGlvbiBzbGljZUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2xpY2U/OiBEZWVwUmVhZG9ubHk8U2xpY2U+LFxuICAgIHByZXY/OiBTbGljZUV4ZWN1dG9yPFQ+XG4pOiBTbGljZUV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc2xpY2UsIHByZXYsIHNsaWNlQnkpXG59XG5cbmZ1bmN0aW9uIHNsaWNlQnk8VCBleHRlbmRzIE1vZGVsPihzbGljZTogU2xpY2UpIHtcbiAgICByZXR1cm4gKGl0ZW1zOiBUW10pID0+IGl0ZW1zLnNsaWNlKHNsaWNlLnN0YXJ0LCBzbGljZS5lbmQpXG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeGVjPFQgZXh0ZW5kcyBNb2RlbD4oaW5wdXQ6IGFueSwgcHJldjogYW55LCBjb21waWxlcjogYW55KTogYW55IHtcbiAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKHByZXYgIT0gbnVsbCkge1xuICAgICAgICAvLyB0aG9yaWNhbGx5IGlucHV0IGlzIHJlYWRvbmx5XG4gICAgICAgIGlmIChwcmV2W0lOUFVUXSA9PT0gaW5wdXQgfHwgaXNFcXVhbChwcmV2W0lOUFVUXSwgaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXhlYyA9IGNvbXBpbGVyKGlucHV0KSBhcyBhbnlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhlYywgSU5QVVQsIHtcbiAgICAgICAgdmFsdWU6IGlucHV0LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBleGVjXG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBR25DLE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkQsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBR25DLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxVQUFVLENBQUE7QUFFekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBaUI3QixNQUFNLFVBQVUsYUFBYSxDQUN6QixLQUF3QixFQUN4QixRQUEyQjtJQUUzQixNQUFNLFNBQVMsR0FBc0I7UUFDakMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7UUFDMUQsU0FBUyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDOUQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7S0FDM0QsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsUUFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMs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Q0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBUSxDQUFBO0lBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUMvQixLQUFLLEVBQUUsS0FBSztRQUNaLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFFBQVEsRUFBRSxLQUFLO0tBQ2xCLENBQUMsQ0FBQTtJQUNGLE9BQU8sSUFBSSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoLWVzXCJcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ1dGlsaXR5LXR5cGVzXCJcblxuaW1wb3J0IHsgRGVlcFJlYWRvbmx5LCB0b1NvcnRlZCB9IGZyb20gXCJAbmd1dGlsL2NvbW1vblwiXG5cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsXCJcbmltcG9ydCB7IEZpbHRlciwgZmlsdGVyQnkgfSBmcm9tIFwiLi9maWx0ZXJcIlxuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCIuL2dyb3VwZXJcIlxuaW1wb3J0IHsgUXVlcnlSZXN1bHQsIFF1ZXJ5V2l0aFNsaWNlIH0gZnJvbSBcIi4vcXVlcnlcIlxuaW1wb3J0IHsgU2xpY2UgfSBmcm9tIFwiLi9zbGljZVwiXG5pbXBvcnQgeyBzb3J0QnksIFNvcnRlciB9IGZyb20gXCIuL3NvcnRlclwiXG5cbmNvbnN0IElOUFVUID0gU3ltYm9sKFwiSU5QVVRcIilcblxuaW50ZXJmYWNlIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgW0lOUFVUXTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlFeGVjdXRvcnM8VCBleHRlbmRzIE1vZGVsPiB7XG4gICAgcmVhZG9ubHkgZmlsdGVyRm4/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuICAgIHJlYWRvbmx5IHNvcnRlckZuPzogU29ydGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBncm91cGVyRm4/OiBHcm91cGVyRXhlY3V0b3I8VD5cbiAgICByZWFkb25seSBzbGljZXJGbj86IFNsaWNlRXhlY3V0b3I8VD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBRdWVyeUV4ZWN1dG9yczxUPiB7XG4gICAgKGl0ZW1zOiByZWFkb25seSBUW10pOiBRdWVyeVJlc3VsdDxUPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIHF1ZXJ5OiBRdWVyeVdpdGhTbGljZTxUPixcbiAgICBwcmV2aW91cz86IFF1ZXJ5RXhlY3V0b3I8VD5cbik6IFF1ZXJ5RXhlY3V0b3I8VD4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yczogUXVlcnlFeGVjdXRvcnM8VD4gPSB7XG4gICAgICAgIGZpbHRlckZuOiBmaWx0ZXJFeGVjdXRvcihxdWVyeS5maWx0ZXIsIHByZXZpb3VzPy5maWx0ZXJGbiksXG4gICAgICAgIHNvcnRlckZuOiBzb3J0ZXJFeGVjdXRvcihxdWVyeS5zb3J0ZXIsIHByZXZpb3VzPy5zb3J0ZXJGbiksXG4gICAgICAgIGdyb3VwZXJGbjogZ3JvdXBlckV4ZWN1dG9yKHF1ZXJ5Lmdyb3VwZXIsIHByZXZpb3VzPy5ncm91cGVyRm4pLFxuICAgICAgICBzbGljZXJGbjogc2xpY2VFeGVjdXRvcihxdWVyeS5zbGljZSwgcHJldmlvdXM/LnNsaWNlckZuKVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZWQgPSBwcmV2aW91cyA9PSBudWxsIHx8IE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykuc29tZSgoW2ssIHZdKSA9PiAocHJldmlvdXMgYXMgYW55KVtrXSAhPT0gdilcbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzXG4gICAgfVxuXG4gICAgY29uc3QgZXhlY3V0b3IgPSAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFF1ZXJ5UmVzdWx0PFQ+ID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zID09IG51bGwgfHwgaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4geyBpdGVtczogW10sIHRvdGFsOiAwIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQ6IHJlYWRvbmx5IFRbXSA9IGl0ZW1zXG5cbiAgICAgICAgaWYgKGV4ZWN1dG9ycy5maWx0ZXJGbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihleGVjdXRvcnMuZmlsdGVyRm4pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNvcnRlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0b1NvcnRlZChyZXN1bHQsIGV4ZWN1dG9ycy5zb3J0ZXJGbilcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0Lmxlbmd0aFxuXG4gICAgICAgIC8vIFRPRE86IGdyb3VwZXJcblxuICAgICAgICBpZiAoZXhlY3V0b3JzLnNsaWNlckZuKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBleGVjdXRvcnMuc2xpY2VyRm4ocmVzdWx0KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaXRlbXM6IHJlc3VsdCwgdG90YWwgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGV4ZWN1dG9ycykpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4ZWN1dG9yLCBrLCB7XG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY3V0b3Jcbn1cblxuaW50ZXJmYWNlIEZpbHRlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBQYXJ0aWFsRXhlY3V0b3Ige1xuICAgIChpdGVtOiBUKTogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBmaWx0ZXJFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+KFxuICAgIGZpbHRlcj86IERlZXBSZWFkb25seTxGaWx0ZXI8VD4+LFxuICAgIHByZXY/OiBGaWx0ZXJFeGVjdXRvcjxUPlxuKTogRmlsdGVyRXhlY3V0b3I8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBjb21waWxlRXhlYzxUPihmaWx0ZXIsIHByZXYsIGZpbHRlckJ5KVxufVxuXG5pbnRlcmZhY2UgU29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGE6IFQsIGI6IFQpOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gc29ydGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPihcbiAgICBzb3J0ZXI/OiBEZWVwUmVhZG9ubHk8U29ydGVyPFQ+PixcbiAgICBwcmV2PzogU29ydGVyRXhlY3V0b3I8VD5cbik6IFNvcnRlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBzb3J0QnkpXG59XG5cbmludGVyZmFjZSBHcm91cGVyRXhlY3V0b3I8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhcnRpYWxFeGVjdXRvciB7XG4gICAgKGl0ZW06IFQpOiBQcmltaXRpdmVcbn1cblxuZnVuY3Rpb24gZ3JvdXBlckV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc29ydGVyPzogRGVlcFJlYWRvbmx5PFNvcnRlcjxUPj4sXG4gICAgcHJldj86IEdyb3VwZXJFeGVjdXRvcjxUPlxuKTogR3JvdXBlckV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc29ydGVyLCBwcmV2LCBncm91cEJ5KVxufVxuXG5pbnRlcmZhY2UgU2xpY2VFeGVjdXRvcjxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUGFydGlhbEV4ZWN1dG9yIHtcbiAgICAoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IFRbXVxufVxuXG5mdW5jdGlvbiBzbGljZUV4ZWN1dG9yPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2xpY2U/OiBEZWVwUmVhZG9ubHk8U2xpY2U+LFxuICAgIHByZXY/OiBTbGljZUV4ZWN1dG9yPFQ+XG4pOiBTbGljZUV4ZWN1dG9yPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29tcGlsZUV4ZWM8VD4oc2xpY2UsIHByZXYsIHNsaWNlQnkpXG59XG5cbmZ1bmN0aW9uIHNsaWNlQnk8VCBleHRlbmRzIE1vZGVsPihzbGljZTogU2xpY2UpIHtcbiAgICByZXR1cm4gKGl0ZW1zOiBUW10pID0+IGl0ZW1zLnNsaWNlKHNsaWNlLnN0YXJ0LCBzbGljZS5lbmQpXG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVFeGVjPFQgZXh0ZW5kcyBNb2RlbD4oaW5wdXQ6IGFueSwgcHJldjogYW55LCBjb21waWxlcjogYW55KTogYW55IHtcbiAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKHByZXYgIT0gbnVsbCkge1xuICAgICAgICAvLyB0aG9yaWNhbGx5IGlucHV0IGlzIHJlYWRvbmx5XG4gICAgICAgIGlmIChwcmV2W0lOUFVUXSA9PT0gaW5wdXQgfHwgaXNFcXVhbChwcmV2W0lOUFVUXSwgaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXhlYyA9IGNvbXBpbGVyKGlucHV0KSBhcyBhbnlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhlYywgSU5QVVQsIHtcbiAgICAgICAgdmFsdWU6IGlucHV0LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBleGVjXG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { flattenDeep, intersection } from "lodash";
1
+ import { flattenDeep, intersection } from "lodash-es";
2
2
  import { deepClone, isFalsy, isPlainObject, isTruthy } from "@ngutil/common";
3
3
  import { pathGetterCompile } from "./path";
4
4
  import { QueryProperty, QueryPropertySet } from "./query-property";
@@ -310,4 +310,4 @@ function compact(filters) {
310
310
  }
311
311
  return filters;
312
312
  }
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWxELE9BQU8sRUFBZSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkcsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQTZCbEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCdkMsQ0FBQTtBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBVTtJQUNsQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQWUsQ0FBQTtJQUNyRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ25DLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsRUFBRSxFQUFFLHdCQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0FBQ0wsQ0FBQztBQW9FRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQWtCLE9BQWtCO0lBQ3hELE9BQU8sY0FBYyxDQUFJLE9BQU8sQ0FBQyxDQUFBO0FBQ3JD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T0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssS0FBSyxDQUFDLENBQUE7UUFFeEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxD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QUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbGF0dGVuRGVlcCwgaW50ZXJzZWN0aW9uIH0gZnJvbSBcImxvZGFzaFwiXG5cbmltcG9ydCB7IEFzUHJpbWl0aXZlLCBkZWVwQ2xvbmUsIGlzRmFsc3ksIGlzUGxhaW5PYmplY3QsIGlzVHJ1dGh5LCBNYXhSZWN1cnNpb24gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiXG5pbXBvcnQgeyBQYXRoR2V0dGVyLCBwYXRoR2V0dGVyQ29tcGlsZSB9IGZyb20gXCIuL3BhdGhcIlxuaW1wb3J0IHsgUXVlcnlQcm9wZXJ0eSwgUXVlcnlQcm9wZXJ0eVNldCB9IGZyb20gXCIuL3F1ZXJ5LXByb3BlcnR5XCJcblxuZXhwb3J0IGNvbnN0IGVudW0gRmlsdGVyT3Age1xuICAgIEVxID0gXCI9PVwiLFxuICAgIEVxU3RyaWN0ID0gXCI9PT1cIixcbiAgICBFcUluc2VzaXRpdmUgPSBcIj09KlwiLFxuICAgIE5lcSA9IFwiIT1cIixcbiAgICBOZXFTdHJpY3QgPSBcIiE9PVwiLFxuICAgIE5lcUluc2VzaXRpdmUgPSBcIiE9KlwiLFxuICAgIEd0ID0gXCI+XCIsXG4gICAgR3RJbnNlc2l0aXZlID0gXCI+KlwiLFxuICAgIEd0ZSA9IFwiPj1cIixcbiAgICBHdGVJbnNlc2l0aXZlID0gXCI+PSpcIixcbiAgICBMdCA9IFwiPFwiLFxuICAgIEx0SW5zZXNpdGl2ZSA9IFwiPCpcIixcbiAgICBMdGUgPSBcIjw9XCIsXG4gICAgTHRlSW5zZXNpdGl2ZSA9IFwiPD0qXCIsXG4gICAgQ29udGFpbnMgPSBcIiVcIixcbiAgICBDb250YWluc0luc2VzaXRpdmUgPSBcIiUqXCIsXG4gICAgU3RhcnRzV2l0aCA9IFwiXlwiLFxuICAgIFN0YXJ0c1dpdGhJbnNlc2l0aXZlID0gXCJeKlwiLFxuICAgIEVuZHNXaXRoID0gXCIkXCIsXG4gICAgRW5kc1dpdGhJbnNlc2l0aXZlID0gXCIkKlwiLFxuICAgIFJlZ2V4cCA9IFwiflwiLFxuICAgIFJlZ2V4cEluc2VzaXRpdmUgPSBcIn4qXCIsXG4gICAgT3IgPSBcInxcIixcbiAgICBBbmQgPSBcIiZcIlxufVxuXG5leHBvcnQgY29uc3QgT1BFUkFUT1JTOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgIEZpbHRlck9wLkVxLFxuICAgIEZpbHRlck9wLkVxU3RyaWN0LFxuICAgIEZpbHRlck9wLkVxSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5OZXEsXG4gICAgRmlsdGVyT3AuTmVxU3RyaWN0LFxuICAgIEZpbHRlck9wLk5lcUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuR3QsXG4gICAgRmlsdGVyT3AuR3RJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkd0ZSxcbiAgICBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkx0LFxuICAgIEZpbHRlck9wLkx0SW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5MdGUsXG4gICAgRmlsdGVyT3AuTHRlSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5Db250YWlucyxcbiAgICBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuU3RhcnRzV2l0aCxcbiAgICBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aCxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuUmVnZXhwLFxuICAgIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuT3IsXG4gICAgRmlsdGVyT3AuQW5kXG5dXG5cbmV4cG9ydCBmdW5jdGlvbiBhc09wZXJhdG9ycyh2YWx1ZTogYW55KTogQXJyYXk8eyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfT4ge1xuICAgIGNvbnN0IG9wcyA9IGludGVyc2VjdGlvbihPYmplY3Qua2V5cyh2YWx1ZSksIE9QRVJBVE9SUykgYXMgRmlsdGVyT3BbXVxuICAgIGlmIChvcHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gb3BzLm1hcChvcCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBvcCwgdmFsdWU6IHZhbHVlW29wXSB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt7IG9wOiBGaWx0ZXJPcC5FcSwgdmFsdWUgfV1cbiAgICB9XG59XG5cbi8vIGV4cG9ydCB0eXBlIEZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+ID0gX0ZpbHRlcjxGbGF0dGVuPFQ+LCBbXSwgTWF4UmVjdXJzaW9uPlxuLy8gVE9ETzogZml4IHJlY3Vyc2lvblxuZXhwb3J0IHR5cGUgRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSB7IFtrZXk6IHN0cmluZ106IGFueSB9XG5cbnR5cGUgX0ZpbHRlcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIEQgPyBuZXZlciA6IF9PYmplY3RGaWx0ZXI8RiwgUCwgRD5cblxudHlwZSBfT2JqZWN0RmlsdGVyPEYsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0sgaW4ga2V5b2YgRl0/OiBPcGVyYXRvcnM8RltLXSwgUCwgRD4gfVxuXG50eXBlIFJvb3RPcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5Pcl06IEFycmF5PF9GaWx0ZXI8RiwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFJvb3RBbmQ8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuQW5kXTogQXJyYXk8X0ZpbHRlcjxGLCBbLi4uUCwgMF0sIEQ+PiB8IHVuZGVmaW5lZCB9XG5cbmV4cG9ydCB0eXBlIE9wZXJhdG9yczxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXIgPSBNYXhSZWN1cnNpb24+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiBTaW1wbGVPcGVyYXRvcnM8VD5cblxudHlwZSBMb2NhbE9yPFQsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0ZpbHRlck9wLk9yXTogQXJyYXk8T3BlcmF0b3JzPFQsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBMb2NhbEFuZDxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5BbmRdOiBBcnJheTxPcGVyYXRvcnM8VCwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFNpbXBsZU9wZXJhdG9yczxUPiA9XG4gICAgfCBFcVN0cmljdDxUPlxuICAgIHwgTmVxU3RyaWN0PFQ+XG4gICAgfCBFcTxUPlxuICAgIHwgTmVxPFQ+XG4gICAgfCBHdDxUPlxuICAgIHwgR3RlPFQ+XG4gICAgfCBMdDxUPlxuICAgIHwgTHRlPFQ+XG4gICAgfCBDb250YWluczxUPlxuICAgIHwgU3RhcnRzV2l0aDxUPlxuICAgIHwgRW5kc1dpdGg8VD5cbiAgICB8IFJlZ2V4cDxUPlxuICAgIHwgVFxuICAgIHwgdW5kZWZpbmVkXG4gICAgfCBudWxsXG5cbnR5cGUgRXFTdHJpY3Q8VD4gPSBPcGVyYXRvcjxULCBULCBGaWx0ZXJPcC5FcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIE5lcVN0cmljdDxUPiA9IE9wZXJhdG9yPFQsIFQsIEZpbHRlck9wLk5lcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIEVxPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5FcSwgRmlsdGVyT3AuRXFJbnNlc2l0aXZlLCBudWxsPlxudHlwZSBOZXE8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLk5lcSwgRmlsdGVyT3AuTmVxSW5zZXNpdGl2ZSwgbnVsbD5cbnR5cGUgR3Q8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkd0LCBGaWx0ZXJPcC5HdEluc2VzaXRpdmU+XG50eXBlIEd0ZTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuR3RlLCBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlPlxudHlwZSBMdDxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuTHQsIEZpbHRlck9wLkx0SW5zZXNpdGl2ZT5cbnR5cGUgTHRlPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5MdGUsIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU+XG50eXBlIENvbnRhaW5zPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5Db250YWlucywgRmlsdGVyT3AuQ29udGFpbnNJbnNlc2l0aXZlPlxudHlwZSBTdGFydHNXaXRoPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5TdGFydHNXaXRoLCBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZT5cbnR5cGUgRW5kc1dpdGg8VD4gPSBPcGVyYXRvcjxULCBzdHJpbmcsIEZpbHRlck9wLkVuZHNXaXRoLCBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU+XG50eXBlIFJlZ2V4cDxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuUmVnZXhwLCBGaWx0ZXJPcC5SZWdleHBJbnNlc2l0aXZlLCBSZWdFeHA+XG5cbnR5cGUgT3BlcmF0b3I8VCwgUiwgT1AgZXh0ZW5kcyBzdHJpbmcsIE9QSSBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBFVCA9IG5ldmVyPiA9XG4gICAgfCAoVCBleHRlbmRzIFIgPyB7IFtrIGluIE9QXTogVCB8IEVUIHwgUiB9IDogbmV2ZXIpXG4gICAgfCAoVCBleHRlbmRzIHN0cmluZyA/IChPUEkgZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogeyBbayBpbiBPUEldOiBzdHJpbmcgfSkgOiBuZXZlcilcblxuZXhwb3J0IHR5cGUgRmlsdGVyRm48VCA9IGFueT4gPSAoaXRlbTogVCkgPT4gYm9vbGVhblxuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaXRlbXMuZmlsdGVyKGZpbHRlckJ5KHtpZDogNDJ9KSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnk8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIF9maWx0ZXJDb21waWxlPFQ+KGZpbHRlcnMpXG59XG5cbi8vIFRPRE86IE5vcm1hbGl6ZSBmaWx0ZXJcbi8vIHR5cGUgX0ZpbHRlciA9IHsgcGF0aDogc3RyaW5nOyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfVxuLy8gdHlwZSBfT3IgPSB7IFwifFwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyB0eXBlIF9BbmQgPSB7IFwiJlwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyBleHBvcnQgdHlwZSBOb3JtYWxpemVkRmlsdGVyID0gX09yIHwgX0FuZFxudHlwZSBOb3JtUGF0aCA9IHsgcGF0aDogc3RyaW5nOyBvcDogRXhjbHVkZTxGaWx0ZXJPcCwgRmlsdGVyT3AuT3IgfCBGaWx0ZXJPcC5BbmQ+OyB2YWx1ZTogYW55IH1cbnR5cGUgTm9ybU9yID0geyBvcDogRmlsdGVyT3AuT3I7IHZhbHVlOiBBcnJheTxOb3JtRW50cnk+IH1cbnR5cGUgTm9ybUFuZCA9IHsgb3A6IEZpbHRlck9wLkFuZDsgdmFsdWU6IEFycmF5PE5vcm1FbnRyeT4gfVxudHlwZSBOb3JtRW50cnkgPSBOb3JtUGF0aCB8IE5vcm1PciB8IE5vcm1BbmRcbmV4cG9ydCB0eXBlIEZpbHRlck5vcm1hbGl6ZWQgPSBOb3JtRW50cnlcblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGZpbHRlck5vcm1hbGl6ZSh7aWQ6IHtcIj5cIjogMCwgXCI8XCI6IDEwfX0pXG4gKiB7b3A6IFwiJlwiLCB2YWx1ZTogW3twYXRoOiBcImlkXCIsIG9wOiBcIj5cIiwgdmFsdWU6IDB9LCB7cGF0aDogXCJpZFwiLCBvcDogXCI8XCIsIHZhbHVlOiAxMH1dfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJOb3JtYWxpemU8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJOb3JtYWxpemVkIHtcbiAgICByZXR1cm4gX25vcm1hbGl6ZUZpbHRlcihmaWx0ZXJzKVxufVxuXG5mdW5jdGlvbiBfbm9ybWFsaXplRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyPFQ+LCBwYXJlbnQ/OiBzdHJpbmcpOiBhbnkge1xuICAgIGlmIChcIm9wXCIgaW4gZmlsdGVycyAmJiBcInZhbHVlXCIgaW4gZmlsdGVycykge1xuICAgICAgICBpZiAoZmlsdGVyc1tcIm9wXCJdID09PSBGaWx0ZXJPcC5PciB8fCBmaWx0ZXJzW1wib3BcIl0gPT09IEZpbHRlck9wLkFuZCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgb3A6IGZpbHRlcnNbXCJvcFwiXSwgdmFsdWU6IGZpbHRlcnNbXCJ2YWx1ZVwiXS5tYXAoKHY6IGFueSkgPT4gX25vcm1hbGl6ZUZpbHRlcih2LCBwYXJlbnQpKSB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwicGF0aFwiIGluIGZpbHRlcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtID0gZmxhdHRlbkRlZXAoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLm1hcCgoW3BhdGgsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3BlcmF0b3IgQU5EICgke0ZpbHRlck9wLkFuZH0pIG11c3QgaGF2ZSBhcnJheSB0eXBlYClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcDogRmlsdGVyT3AuQW5kLCB2YWx1ZTogdmFsdWUubWFwKHYgPT4gX25vcm1hbGl6ZUZpbHRlcih2LCBwYXJlbnQpKSB9XG5cbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZXJhdG9yIE9SICgke0ZpbHRlck9wLk9yfSkgbXVzdCBoYXZlIGFycmF5IHR5cGVgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5PciwgdmFsdWU6IHZhbHVlLm1hcCh2ID0+IF9ub3JtYWxpemVGaWx0ZXIodiwgcGFyZW50KSkgfVxuXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogY2hlY2sgYWxsIGZpbHRlciwgYW5kIGlmIG5vdCBmb3VuZCBmaWx0ZXIga2V5LCB0YWh0IG9iamVjdCBtYXlibmUgbm90IGEgZmlsdGVyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX25vcm1hbGl6ZUZpbHRlcih2YWx1ZSwgcGF0aClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IHBhcmVudCwgb3A6IHBhdGgsIHZhbHVlIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGgsIG9wOiBGaWx0ZXJPcC5FcVN0cmljdCwgdmFsdWUgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgaWYgKG5vcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtXG4gICAgfSBlbHNlIGlmIChub3JtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gbm9ybVswXVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5BbmQsIHZhbHVlOiBub3JtIH1cbiAgICB9XG59XG5cbnR5cGUgR2V0UGF0aEZuID0gKHB0aDogc3RyaW5nKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBwYXRoR2V0dGVyQ29tcGlsZT5cblxuZnVuY3Rpb24gX2ZpbHRlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgY29uc3QgcGF0aENhY2hlOiB7IFtrZXk6IHN0cmluZ106IFBhdGhHZXR0ZXIgfSA9IHt9XG4gICAgY29uc3QgZ2V0UGF0aCA9IChwdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAocGF0aENhY2hlW3B0aF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGhDYWNoZVtwdGhdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChwYXRoQ2FjaGVbcHRoXSA9IHBhdGhHZXR0ZXJDb21waWxlKHB0aCkpXG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBmaWx0ZXJOb3JtYWxpemUoZmlsdGVycylcbiAgICByZXR1cm4gX2ZpbHRlckNvbXBpbGVOb3JtKG5vcm1hbGl6ZWQsIGdldFBhdGgpXG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJDb21waWxlTm9ybShmaWx0ZXI6IEZpbHRlck5vcm1hbGl6ZWQsIGdldFBhdGg6IEdldFBhdGhGbik6IEZpbHRlckZuPGFueT4ge1xuICAgIHN3aXRjaCAoZmlsdGVyLm9wKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQW5kOlxuICAgICAgICAgICAgcmV0dXJuIGFuZF8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXRQYXRoKGZpbHRlci5wYXRoKSwgZmlsdGVyLm9wLCBmaWx0ZXIudmFsdWUsIGdldFBhdGgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXR0ZXI6IFBhdGhHZXR0ZXIsIG9wOiBGaWx0ZXJPcCwgdmFsdWU6IGFueSwgZ2V0UGF0aDogR2V0UGF0aEZuKTogRmlsdGVyRm48YW55PiB7XG4gICAgbGV0IGxvd2VyOiBzdHJpbmdcbiAgICBsZXQgcmVnZXg6IFJlZ0V4cFxuICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICByZXR1cm4gYW5kXygodmFsdWUgYXMgTm9ybUVudHJ5W10pLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oKHZhbHVlIGFzIE5vcm1FbnRyeVtdKS5tYXAodiA9PiBfZmlsdGVyQ29tcGlsZU5vcm0odiwgZ2V0UGF0aCkpKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkVxU3RyaWN0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPT09IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXFJbnNlc2l0aXZlOlxuICAgICAgICAgICAgbG93ZXIgPSBTdHJpbmcodmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5OZXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiAhPSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcVN0cmljdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ICE9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpICE9PSBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPiB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0SW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPiBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0ZTpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ID49IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPj0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2IDwgdmFsdWUpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDwgbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdGU6XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA8PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDw9IGxvd2VyKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQ29udGFpbnM6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHYuaW5jbHVkZXModmFsdWUpIDogU3RyaW5nKHYpLmluY2x1ZGVzKGxvd2VyKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlN0YXJ0c1dpdGg6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aDpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS5lbmRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmVuZHNXaXRoKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cDpcbiAgICAgICAgICAgIHJlZ2V4ID0gdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgPyB2YWx1ZSA6IG5ldyBSZWdFeHAodmFsdWUsIFwibXN2XCIpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gcmVnZXgudGVzdCh2KSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmU6XG4gICAgICAgICAgICByZWdleCA9IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwID8gdmFsdWUgOiBuZXcgUmVnRXhwKHZhbHVlLCBcIm1zdmlcIilcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiByZWdleC50ZXN0KHYpKVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBvcGVyYXRvcjogJHtvcH1gKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVyKGdldHRlcjogUGF0aEdldHRlciwgcHJlZGljdDogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pOiBGaWx0ZXJGbiB7XG4gICAgcmV0dXJuIG9iaiA9PiBnZXR0ZXIob2JqKS5zb21lKHByZWRpY3QpXG59XG5cbmZ1bmN0aW9uIGFuZF8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKCFmbihpdGVtKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxufVxuXG5mdW5jdGlvbiBvcl8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKGZuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJNZXJnZSguLi5maWx0ZXJzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJzXG4gICAgICAgIC5maWx0ZXIodiA9PiB2ICYmICgoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA+IDApIHx8IChpc1BsYWluT2JqZWN0KHYpICYmIE9iamVjdC5rZXlzKHYpLmxlbmd0aCA+IDApKSlcbiAgICAgICAgLm1hcChmaWx0ZXIgPT4gZGVlcENsb25lKGZpbHRlcikpXG5cbiAgICByZXR1cm4gY29tcGFjdCh7IG9wOiBGaWx0ZXJPcC5BbmQsIHZhbHVlIH0pXG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJQcm9wZXJ0eTxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eTxGaWx0ZXI8VD4sIEZpbHRlck5vcm1hbGl6ZWQ+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWVyZ2UoXG4gICAgICAgIGE/OiBGaWx0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkLFxuICAgICAgICBiPzogRmlsdGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZFxuICAgICk6IEZpbHRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gZmlsdGVyTWVyZ2UoYSwgYilcbiAgICB9XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5vcm0oYTogRmlsdGVyTm9ybWFsaXplZCB8IEZpbHRlcjxUPik6IEZpbHRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gZmlsdGVyTm9ybWFsaXplKGEpXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsdGVyUHJvcGVydHlTZXQ8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFF1ZXJ5UHJvcGVydHlTZXQ8RmlsdGVyPFQ+PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5ld1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IEZpbHRlclByb3BlcnR5KHVuZGVmaW5lZClcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWVyZ2UoLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlck1lcmdlKC4uLmFyZ3MpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU2ltcGxpZnkoZmlsdGVyczogYW55KTogb2JqZWN0IHwgbnVsbCB7XG4gICAgaWYgKGlzVHJ1dGh5KGZpbHRlcnMpKSB7XG4gICAgICAgIGZpbHRlcnMgPSBjb21wYWN0KGZpbHRlck5vcm1hbGl6ZShmaWx0ZXJzKSlcbiAgICAgICAgY29uc3QgcmVzdWx0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgICAgICAgaWYgKGZpbHRlcnNbXCJvcFwiXSA9PT0gRmlsdGVyT3AuQW5kKSB7XG4gICAgICAgICAgICBmaWx0ZXJzID0gZmlsdGVyc1tcInZhbHVlXCJdXG4gICAgICAgICAgICBpZiAoZmlsdGVycyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xuICAgICAgICAgICAgZmlsdGVycyA9IFtmaWx0ZXJzXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmIG9mIGZpbHRlcnMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmW1widmFsdWVcIl0gIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIChmW1wib3BcIl0gPT09IEZpbHRlck9wLkVxIHx8IGZbXCJvcFwiXSA9PT0gRmlsdGVyT3AuRXFTdHJpY3QgfHwgZltcIm9wXCJdID09PSBGaWx0ZXJPcC5FcUluc2VzaXRpdmUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbZltcInBhdGhcIl0gYXMgc3RyaW5nXSA9IGZbXCJ2YWx1ZVwiXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cbn1cblxuZnVuY3Rpb24gY29tcGFjdChmaWx0ZXJzOiBGaWx0ZXJOb3JtYWxpemVkKTogYW55IHtcbiAgICBpZiAoZmlsdGVycy5vcCA9PT0gRmlsdGVyT3AuQW5kIHx8IGZpbHRlcnMub3AgPT09IEZpbHRlck9wLk9yKSB7XG4gICAgICAgIGlmIChpc0ZhbHN5KGZpbHRlcnMudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gZmlsdGVycy52YWx1ZS5tYXAoY29tcGFjdCkuZmlsdGVyKGlzVHJ1dGh5KVxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVtb3ZlIHN1YmZpbHRlcnMgd2l0aCB0aGUgc2FtZSBvcGVyYXRvclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLm9wID09PSBmaWx0ZXJzLm9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQodmFsdWUudmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pXG5cbiAgICAgICAgLy8gZGVkdXBsaWNhdGUsIGFuZCBsYXRlc3QgZmlsdGVyIGlzIHRoZSBtb3N0IHByaW9yaXR5XG4gICAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuZmluZEluZGV4KHYyID0+IHYucGF0aCA9PT0gdjIucGF0aCAmJiB2Lm9wID09PSB2Mi5vcCkgPT09IGkpXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBvcDogZmlsdGVycy5vcCwgdmFsdWUgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVycy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJzXG59XG4iXX0=
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXJELE9BQU8sRUFBZSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFHdkcsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQTZCbEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCdkMsQ0FBQTtBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBVTtJQUNsQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQWUsQ0FBQTtJQUNyRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ25DLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsRUFBRSxFQUFFLHdCQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0FBQ0wsQ0FBQztBQW9FRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQWtCLE9BQWtCO0lBQ3hELE9BQU8sY0FBYyxDQUFJLE9BQU8sQ0FBQyxDQUFBO0FBQ3JD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T0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssS0FBSyxDQUFDLENBQUE7UUFFeEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFFM0M7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksS0FBSyxDQUFDLENBQUE7UUFFdkU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFMUM7WUFDSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFFdEU7WUFDSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxD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QUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO1NBQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbGF0dGVuRGVlcCwgaW50ZXJzZWN0aW9uIH0gZnJvbSBcImxvZGFzaC1lc1wiXG5cbmltcG9ydCB7IEFzUHJpbWl0aXZlLCBkZWVwQ2xvbmUsIGlzRmFsc3ksIGlzUGxhaW5PYmplY3QsIGlzVHJ1dGh5LCBNYXhSZWN1cnNpb24gfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiXG5pbXBvcnQgeyBQYXRoR2V0dGVyLCBwYXRoR2V0dGVyQ29tcGlsZSB9IGZyb20gXCIuL3BhdGhcIlxuaW1wb3J0IHsgUXVlcnlQcm9wZXJ0eSwgUXVlcnlQcm9wZXJ0eVNldCB9IGZyb20gXCIuL3F1ZXJ5LXByb3BlcnR5XCJcblxuZXhwb3J0IGNvbnN0IGVudW0gRmlsdGVyT3Age1xuICAgIEVxID0gXCI9PVwiLFxuICAgIEVxU3RyaWN0ID0gXCI9PT1cIixcbiAgICBFcUluc2VzaXRpdmUgPSBcIj09KlwiLFxuICAgIE5lcSA9IFwiIT1cIixcbiAgICBOZXFTdHJpY3QgPSBcIiE9PVwiLFxuICAgIE5lcUluc2VzaXRpdmUgPSBcIiE9KlwiLFxuICAgIEd0ID0gXCI+XCIsXG4gICAgR3RJbnNlc2l0aXZlID0gXCI+KlwiLFxuICAgIEd0ZSA9IFwiPj1cIixcbiAgICBHdGVJbnNlc2l0aXZlID0gXCI+PSpcIixcbiAgICBMdCA9IFwiPFwiLFxuICAgIEx0SW5zZXNpdGl2ZSA9IFwiPCpcIixcbiAgICBMdGUgPSBcIjw9XCIsXG4gICAgTHRlSW5zZXNpdGl2ZSA9IFwiPD0qXCIsXG4gICAgQ29udGFpbnMgPSBcIiVcIixcbiAgICBDb250YWluc0luc2VzaXRpdmUgPSBcIiUqXCIsXG4gICAgU3RhcnRzV2l0aCA9IFwiXlwiLFxuICAgIFN0YXJ0c1dpdGhJbnNlc2l0aXZlID0gXCJeKlwiLFxuICAgIEVuZHNXaXRoID0gXCIkXCIsXG4gICAgRW5kc1dpdGhJbnNlc2l0aXZlID0gXCIkKlwiLFxuICAgIFJlZ2V4cCA9IFwiflwiLFxuICAgIFJlZ2V4cEluc2VzaXRpdmUgPSBcIn4qXCIsXG4gICAgT3IgPSBcInxcIixcbiAgICBBbmQgPSBcIiZcIlxufVxuXG5leHBvcnQgY29uc3QgT1BFUkFUT1JTOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgIEZpbHRlck9wLkVxLFxuICAgIEZpbHRlck9wLkVxU3RyaWN0LFxuICAgIEZpbHRlck9wLkVxSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5OZXEsXG4gICAgRmlsdGVyT3AuTmVxU3RyaWN0LFxuICAgIEZpbHRlck9wLk5lcUluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuR3QsXG4gICAgRmlsdGVyT3AuR3RJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkd0ZSxcbiAgICBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlLFxuICAgIEZpbHRlck9wLkx0LFxuICAgIEZpbHRlck9wLkx0SW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5MdGUsXG4gICAgRmlsdGVyT3AuTHRlSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5Db250YWlucyxcbiAgICBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuU3RhcnRzV2l0aCxcbiAgICBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZSxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aCxcbiAgICBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuUmVnZXhwLFxuICAgIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmUsXG4gICAgRmlsdGVyT3AuT3IsXG4gICAgRmlsdGVyT3AuQW5kXG5dXG5cbmV4cG9ydCBmdW5jdGlvbiBhc09wZXJhdG9ycyh2YWx1ZTogYW55KTogQXJyYXk8eyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfT4ge1xuICAgIGNvbnN0IG9wcyA9IGludGVyc2VjdGlvbihPYmplY3Qua2V5cyh2YWx1ZSksIE9QRVJBVE9SUykgYXMgRmlsdGVyT3BbXVxuICAgIGlmIChvcHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gb3BzLm1hcChvcCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBvcCwgdmFsdWU6IHZhbHVlW29wXSB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt7IG9wOiBGaWx0ZXJPcC5FcSwgdmFsdWUgfV1cbiAgICB9XG59XG5cbi8vIGV4cG9ydCB0eXBlIEZpbHRlcjxUIGV4dGVuZHMgTW9kZWw+ID0gX0ZpbHRlcjxGbGF0dGVuPFQ+LCBbXSwgTWF4UmVjdXJzaW9uPlxuLy8gVE9ETzogZml4IHJlY3Vyc2lvblxuZXhwb3J0IHR5cGUgRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSB7IFtrZXk6IHN0cmluZ106IGFueSB9XG5cbnR5cGUgX0ZpbHRlcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIEQgPyBuZXZlciA6IF9PYmplY3RGaWx0ZXI8RiwgUCwgRD5cblxudHlwZSBfT2JqZWN0RmlsdGVyPEYsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0sgaW4ga2V5b2YgRl0/OiBPcGVyYXRvcnM8RltLXSwgUCwgRD4gfVxuXG50eXBlIFJvb3RPcjxGLCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5Pcl06IEFycmF5PF9GaWx0ZXI8RiwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFJvb3RBbmQ8RiwgUCBleHRlbmRzIG51bWJlcltdLCBEIGV4dGVuZHMgbnVtYmVyPiA9IFBbXCJsZW5ndGhcIl0gZXh0ZW5kcyBEXG4gICAgPyBuZXZlclxuICAgIDogeyBbRmlsdGVyT3AuQW5kXTogQXJyYXk8X0ZpbHRlcjxGLCBbLi4uUCwgMF0sIEQ+PiB8IHVuZGVmaW5lZCB9XG5cbmV4cG9ydCB0eXBlIE9wZXJhdG9yczxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXIgPSBNYXhSZWN1cnNpb24+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiBTaW1wbGVPcGVyYXRvcnM8VD5cblxudHlwZSBMb2NhbE9yPFQsIFAgZXh0ZW5kcyBudW1iZXJbXSwgRCBleHRlbmRzIG51bWJlcj4gPSBQW1wibGVuZ3RoXCJdIGV4dGVuZHMgRFxuICAgID8gbmV2ZXJcbiAgICA6IHsgW0ZpbHRlck9wLk9yXTogQXJyYXk8T3BlcmF0b3JzPFQsIFsuLi5QLCAwXSwgRD4+IHwgdW5kZWZpbmVkIH1cblxudHlwZSBMb2NhbEFuZDxULCBQIGV4dGVuZHMgbnVtYmVyW10sIEQgZXh0ZW5kcyBudW1iZXI+ID0gUFtcImxlbmd0aFwiXSBleHRlbmRzIERcbiAgICA/IG5ldmVyXG4gICAgOiB7IFtGaWx0ZXJPcC5BbmRdOiBBcnJheTxPcGVyYXRvcnM8VCwgWy4uLlAsIDBdLCBEPj4gfCB1bmRlZmluZWQgfVxuXG50eXBlIFNpbXBsZU9wZXJhdG9yczxUPiA9XG4gICAgfCBFcVN0cmljdDxUPlxuICAgIHwgTmVxU3RyaWN0PFQ+XG4gICAgfCBFcTxUPlxuICAgIHwgTmVxPFQ+XG4gICAgfCBHdDxUPlxuICAgIHwgR3RlPFQ+XG4gICAgfCBMdDxUPlxuICAgIHwgTHRlPFQ+XG4gICAgfCBDb250YWluczxUPlxuICAgIHwgU3RhcnRzV2l0aDxUPlxuICAgIHwgRW5kc1dpdGg8VD5cbiAgICB8IFJlZ2V4cDxUPlxuICAgIHwgVFxuICAgIHwgdW5kZWZpbmVkXG4gICAgfCBudWxsXG5cbnR5cGUgRXFTdHJpY3Q8VD4gPSBPcGVyYXRvcjxULCBULCBGaWx0ZXJPcC5FcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIE5lcVN0cmljdDxUPiA9IE9wZXJhdG9yPFQsIFQsIEZpbHRlck9wLk5lcVN0cmljdCwgbmV2ZXIsIG51bGw+XG50eXBlIEVxPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5FcSwgRmlsdGVyT3AuRXFJbnNlc2l0aXZlLCBudWxsPlxudHlwZSBOZXE8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLk5lcSwgRmlsdGVyT3AuTmVxSW5zZXNpdGl2ZSwgbnVsbD5cbnR5cGUgR3Q8VD4gPSBPcGVyYXRvcjxULCBUIHwgQXNQcmltaXRpdmU8VD4sIEZpbHRlck9wLkd0LCBGaWx0ZXJPcC5HdEluc2VzaXRpdmU+XG50eXBlIEd0ZTxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuR3RlLCBGaWx0ZXJPcC5HdGVJbnNlc2l0aXZlPlxudHlwZSBMdDxUPiA9IE9wZXJhdG9yPFQsIFQgfCBBc1ByaW1pdGl2ZTxUPiwgRmlsdGVyT3AuTHQsIEZpbHRlck9wLkx0SW5zZXNpdGl2ZT5cbnR5cGUgTHRlPFQ+ID0gT3BlcmF0b3I8VCwgVCB8IEFzUHJpbWl0aXZlPFQ+LCBGaWx0ZXJPcC5MdGUsIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU+XG50eXBlIENvbnRhaW5zPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5Db250YWlucywgRmlsdGVyT3AuQ29udGFpbnNJbnNlc2l0aXZlPlxudHlwZSBTdGFydHNXaXRoPFQ+ID0gT3BlcmF0b3I8VCwgc3RyaW5nLCBGaWx0ZXJPcC5TdGFydHNXaXRoLCBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZT5cbnR5cGUgRW5kc1dpdGg8VD4gPSBPcGVyYXRvcjxULCBzdHJpbmcsIEZpbHRlck9wLkVuZHNXaXRoLCBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU+XG50eXBlIFJlZ2V4cDxUPiA9IE9wZXJhdG9yPFQsIHN0cmluZywgRmlsdGVyT3AuUmVnZXhwLCBGaWx0ZXJPcC5SZWdleHBJbnNlc2l0aXZlLCBSZWdFeHA+XG5cbnR5cGUgT3BlcmF0b3I8VCwgUiwgT1AgZXh0ZW5kcyBzdHJpbmcsIE9QSSBleHRlbmRzIHN0cmluZyA9IG5ldmVyLCBFVCA9IG5ldmVyPiA9XG4gICAgfCAoVCBleHRlbmRzIFIgPyB7IFtrIGluIE9QXTogVCB8IEVUIHwgUiB9IDogbmV2ZXIpXG4gICAgfCAoVCBleHRlbmRzIHN0cmluZyA/IChPUEkgZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogeyBbayBpbiBPUEldOiBzdHJpbmcgfSkgOiBuZXZlcilcblxuZXhwb3J0IHR5cGUgRmlsdGVyRm48VCA9IGFueT4gPSAoaXRlbTogVCkgPT4gYm9vbGVhblxuXG4vKipcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaXRlbXMuZmlsdGVyKGZpbHRlckJ5KHtpZDogNDJ9KSlcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnk8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIF9maWx0ZXJDb21waWxlPFQ+KGZpbHRlcnMpXG59XG5cbi8vIFRPRE86IE5vcm1hbGl6ZSBmaWx0ZXJcbi8vIHR5cGUgX0ZpbHRlciA9IHsgcGF0aDogc3RyaW5nOyBvcDogRmlsdGVyT3A7IHZhbHVlOiBhbnkgfVxuLy8gdHlwZSBfT3IgPSB7IFwifFwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyB0eXBlIF9BbmQgPSB7IFwiJlwiOiBBcnJheTxfRmlsdGVyPiB9XG4vLyBleHBvcnQgdHlwZSBOb3JtYWxpemVkRmlsdGVyID0gX09yIHwgX0FuZFxudHlwZSBOb3JtUGF0aCA9IHsgcGF0aDogc3RyaW5nOyBvcDogRXhjbHVkZTxGaWx0ZXJPcCwgRmlsdGVyT3AuT3IgfCBGaWx0ZXJPcC5BbmQ+OyB2YWx1ZTogYW55IH1cbnR5cGUgTm9ybU9yID0geyBvcDogRmlsdGVyT3AuT3I7IHZhbHVlOiBBcnJheTxOb3JtRW50cnk+IH1cbnR5cGUgTm9ybUFuZCA9IHsgb3A6IEZpbHRlck9wLkFuZDsgdmFsdWU6IEFycmF5PE5vcm1FbnRyeT4gfVxudHlwZSBOb3JtRW50cnkgPSBOb3JtUGF0aCB8IE5vcm1PciB8IE5vcm1BbmRcbmV4cG9ydCB0eXBlIEZpbHRlck5vcm1hbGl6ZWQgPSBOb3JtRW50cnlcblxuLyoqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGZpbHRlck5vcm1hbGl6ZSh7aWQ6IHtcIj5cIjogMCwgXCI8XCI6IDEwfX0pXG4gKiB7b3A6IFwiJlwiLCB2YWx1ZTogW3twYXRoOiBcImlkXCIsIG9wOiBcIj5cIiwgdmFsdWU6IDB9LCB7cGF0aDogXCJpZFwiLCBvcDogXCI8XCIsIHZhbHVlOiAxMH1dfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJOb3JtYWxpemU8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJOb3JtYWxpemVkIHtcbiAgICByZXR1cm4gX25vcm1hbGl6ZUZpbHRlcihmaWx0ZXJzKVxufVxuXG5mdW5jdGlvbiBfbm9ybWFsaXplRmlsdGVyPFQgZXh0ZW5kcyBNb2RlbD4oZmlsdGVyczogRmlsdGVyPFQ+LCBwYXJlbnQ/OiBzdHJpbmcpOiBhbnkge1xuICAgIGlmIChcIm9wXCIgaW4gZmlsdGVycyAmJiBcInZhbHVlXCIgaW4gZmlsdGVycykge1xuICAgICAgICBpZiAoZmlsdGVyc1tcIm9wXCJdID09PSBGaWx0ZXJPcC5PciB8fCBmaWx0ZXJzW1wib3BcIl0gPT09IEZpbHRlck9wLkFuZCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgb3A6IGZpbHRlcnNbXCJvcFwiXSwgdmFsdWU6IGZpbHRlcnNbXCJ2YWx1ZVwiXS5tYXAoKHY6IGFueSkgPT4gX25vcm1hbGl6ZUZpbHRlcih2LCBwYXJlbnQpKSB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwicGF0aFwiIGluIGZpbHRlcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtID0gZmxhdHRlbkRlZXAoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLm1hcCgoW3BhdGgsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgT3BlcmF0b3IgQU5EICgke0ZpbHRlck9wLkFuZH0pIG11c3QgaGF2ZSBhcnJheSB0eXBlYClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBvcDogRmlsdGVyT3AuQW5kLCB2YWx1ZTogdmFsdWUubWFwKHYgPT4gX25vcm1hbGl6ZUZpbHRlcih2LCBwYXJlbnQpKSB9XG5cbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlck9wLk9yOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZXJhdG9yIE9SICgke0ZpbHRlck9wLk9yfSkgbXVzdCBoYXZlIGFycmF5IHR5cGVgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5PciwgdmFsdWU6IHZhbHVlLm1hcCh2ID0+IF9ub3JtYWxpemVGaWx0ZXIodiwgcGFyZW50KSkgfVxuXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogY2hlY2sgYWxsIGZpbHRlciwgYW5kIGlmIG5vdCBmb3VuZCBmaWx0ZXIga2V5LCB0YWh0IG9iamVjdCBtYXlibmUgbm90IGEgZmlsdGVyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX25vcm1hbGl6ZUZpbHRlcih2YWx1ZSwgcGF0aClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IHBhcmVudCwgb3A6IHBhdGgsIHZhbHVlIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGgsIG9wOiBGaWx0ZXJPcC5FcVN0cmljdCwgdmFsdWUgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgaWYgKG5vcm0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBub3JtXG4gICAgfSBlbHNlIGlmIChub3JtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gbm9ybVswXVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7IG9wOiBGaWx0ZXJPcC5BbmQsIHZhbHVlOiBub3JtIH1cbiAgICB9XG59XG5cbnR5cGUgR2V0UGF0aEZuID0gKHB0aDogc3RyaW5nKSA9PiBSZXR1cm5UeXBlPHR5cGVvZiBwYXRoR2V0dGVyQ29tcGlsZT5cblxuZnVuY3Rpb24gX2ZpbHRlckNvbXBpbGU8VCBleHRlbmRzIE1vZGVsPihmaWx0ZXJzOiBGaWx0ZXI8VD4pOiBGaWx0ZXJGbjxUPiB7XG4gICAgY29uc3QgcGF0aENhY2hlOiB7IFtrZXk6IHN0cmluZ106IFBhdGhHZXR0ZXIgfSA9IHt9XG4gICAgY29uc3QgZ2V0UGF0aCA9IChwdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAocGF0aENhY2hlW3B0aF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGhDYWNoZVtwdGhdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChwYXRoQ2FjaGVbcHRoXSA9IHBhdGhHZXR0ZXJDb21waWxlKHB0aCkpXG4gICAgfVxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBmaWx0ZXJOb3JtYWxpemUoZmlsdGVycylcbiAgICByZXR1cm4gX2ZpbHRlckNvbXBpbGVOb3JtKG5vcm1hbGl6ZWQsIGdldFBhdGgpXG59XG5cbmZ1bmN0aW9uIF9maWx0ZXJDb21waWxlTm9ybShmaWx0ZXI6IEZpbHRlck5vcm1hbGl6ZWQsIGdldFBhdGg6IEdldFBhdGhGbik6IEZpbHRlckZuPGFueT4ge1xuICAgIHN3aXRjaCAoZmlsdGVyLm9wKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQW5kOlxuICAgICAgICAgICAgcmV0dXJuIGFuZF8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oZmlsdGVyLnZhbHVlLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXRQYXRoKGZpbHRlci5wYXRoKSwgZmlsdGVyLm9wLCBmaWx0ZXIudmFsdWUsIGdldFBhdGgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZmlsdGVyQ29tcGxpbGVOb3JtUGF0aChnZXR0ZXI6IFBhdGhHZXR0ZXIsIG9wOiBGaWx0ZXJPcCwgdmFsdWU6IGFueSwgZ2V0UGF0aDogR2V0UGF0aEZuKTogRmlsdGVyRm48YW55PiB7XG4gICAgbGV0IGxvd2VyOiBzdHJpbmdcbiAgICBsZXQgcmVnZXg6IFJlZ0V4cFxuICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5BbmQ6XG4gICAgICAgICAgICByZXR1cm4gYW5kXygodmFsdWUgYXMgTm9ybUVudHJ5W10pLm1hcCh2ID0+IF9maWx0ZXJDb21waWxlTm9ybSh2LCBnZXRQYXRoKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5PcjpcbiAgICAgICAgICAgIHJldHVybiBvcl8oKHZhbHVlIGFzIE5vcm1FbnRyeVtdKS5tYXAodiA9PiBfZmlsdGVyQ29tcGlsZU5vcm0odiwgZ2V0UGF0aCkpKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkVxU3RyaWN0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPT09IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuRXFJbnNlc2l0aXZlOlxuICAgICAgICAgICAgbG93ZXIgPSBTdHJpbmcodmFsdWUpLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5OZXE6XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiAhPSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcVN0cmljdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ICE9PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLk5lcUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpICE9PSBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0OlxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IHYgPiB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0SW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPiBsb3dlcilcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkd0ZTpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2ID49IHZhbHVlKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuR3RlSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPj0gbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdDpcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiB2IDwgdmFsdWUpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDwgbG93ZXIpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5MdGU6XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gdiA8PSB2YWx1ZSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLkx0ZUluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpIDw9IGxvd2VyKVxuXG4gICAgICAgIGNhc2UgRmlsdGVyT3AuQ29udGFpbnM6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiAoQXJyYXkuaXNBcnJheSh2KSA/IHYuaW5jbHVkZXModmFsdWUpIDogU3RyaW5nKHYpLmluY2x1ZGVzKGxvd2VyKSkpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5Db250YWluc0luc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlN0YXJ0c1dpdGg6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiBTdHJpbmcodikuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5TdGFydHNXaXRoSW5zZXNpdGl2ZTpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKS50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gU3RyaW5nKHYpLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aDpcbiAgICAgICAgICAgIGxvd2VyID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS5lbmRzV2l0aChsb3dlcikpXG5cbiAgICAgICAgY2FzZSBGaWx0ZXJPcC5FbmRzV2l0aEluc2VzaXRpdmU6XG4gICAgICAgICAgICBsb3dlciA9IFN0cmluZyh2YWx1ZSkudG9Mb2NhbGVMb3dlckNhc2UoKVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXIoZ2V0dGVyLCB2ID0+IFN0cmluZyh2KS50b0xvY2FsZUxvd2VyQ2FzZSgpLmVuZHNXaXRoKGxvd2VyKSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cDpcbiAgICAgICAgICAgIHJlZ2V4ID0gdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgPyB2YWx1ZSA6IG5ldyBSZWdFeHAodmFsdWUsIFwibXN2XCIpXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcihnZXR0ZXIsIHYgPT4gcmVnZXgudGVzdCh2KSlcblxuICAgICAgICBjYXNlIEZpbHRlck9wLlJlZ2V4cEluc2VzaXRpdmU6XG4gICAgICAgICAgICByZWdleCA9IHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwID8gdmFsdWUgOiBuZXcgUmVnRXhwKHZhbHVlLCBcIm1zdmlcIilcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVyKGdldHRlciwgdiA9PiByZWdleC50ZXN0KHYpKVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBvcGVyYXRvcjogJHtvcH1gKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVyKGdldHRlcjogUGF0aEdldHRlciwgcHJlZGljdDogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4pOiBGaWx0ZXJGbiB7XG4gICAgcmV0dXJuIG9iaiA9PiBnZXR0ZXIob2JqKS5zb21lKHByZWRpY3QpXG59XG5cbmZ1bmN0aW9uIGFuZF8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKCFmbihpdGVtKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxufVxuXG5mdW5jdGlvbiBvcl8oZm5zOiBGaWx0ZXJGbltdKTogRmlsdGVyRm4ge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBfID0+IHRydWVcbiAgICB9XG5cbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZm5zWzBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0gPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgICAgICAgICAgaWYgKGZuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJNZXJnZSguLi5maWx0ZXJzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmFsdWUgPSBmaWx0ZXJzXG4gICAgICAgIC5maWx0ZXIodiA9PiB2ICYmICgoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA+IDApIHx8IChpc1BsYWluT2JqZWN0KHYpICYmIE9iamVjdC5rZXlzKHYpLmxlbmd0aCA+IDApKSlcbiAgICAgICAgLm1hcChmaWx0ZXIgPT4gZGVlcENsb25lKGZpbHRlcikpXG5cbiAgICByZXR1cm4gY29tcGFjdCh7IG9wOiBGaWx0ZXJPcC5BbmQsIHZhbHVlIH0pXG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJQcm9wZXJ0eTxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eTxGaWx0ZXI8VD4sIEZpbHRlck5vcm1hbGl6ZWQ+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWVyZ2UoXG4gICAgICAgIGE/OiBGaWx0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkLFxuICAgICAgICBiPzogRmlsdGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZFxuICAgICk6IEZpbHRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gZmlsdGVyTWVyZ2UoYSwgYilcbiAgICB9XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5vcm0oYTogRmlsdGVyTm9ybWFsaXplZCB8IEZpbHRlcjxUPik6IEZpbHRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gZmlsdGVyTm9ybWFsaXplKGEpXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsdGVyUHJvcGVydHlTZXQ8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFF1ZXJ5UHJvcGVydHlTZXQ8RmlsdGVyPFQ+PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5ld1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IEZpbHRlclByb3BlcnR5KHVuZGVmaW5lZClcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWVyZ2UoLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlck1lcmdlKC4uLmFyZ3MpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU2ltcGxpZnkoZmlsdGVyczogYW55KTogb2JqZWN0IHwgbnVsbCB7XG4gICAgaWYgKGlzVHJ1dGh5KGZpbHRlcnMpKSB7XG4gICAgICAgIGZpbHRlcnMgPSBjb21wYWN0KGZpbHRlck5vcm1hbGl6ZShmaWx0ZXJzKSlcbiAgICAgICAgY29uc3QgcmVzdWx0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgICAgICAgaWYgKGZpbHRlcnNbXCJvcFwiXSA9PT0gRmlsdGVyT3AuQW5kKSB7XG4gICAgICAgICAgICBmaWx0ZXJzID0gZmlsdGVyc1tcInZhbHVlXCJdXG4gICAgICAgICAgICBpZiAoZmlsdGVycyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xuICAgICAgICAgICAgZmlsdGVycyA9IFtmaWx0ZXJzXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmIG9mIGZpbHRlcnMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmW1widmFsdWVcIl0gIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIChmW1wib3BcIl0gPT09IEZpbHRlck9wLkVxIHx8IGZbXCJvcFwiXSA9PT0gRmlsdGVyT3AuRXFTdHJpY3QgfHwgZltcIm9wXCJdID09PSBGaWx0ZXJPcC5FcUluc2VzaXRpdmUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbZltcInBhdGhcIl0gYXMgc3RyaW5nXSA9IGZbXCJ2YWx1ZVwiXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgIH1cbn1cblxuZnVuY3Rpb24gY29tcGFjdChmaWx0ZXJzOiBGaWx0ZXJOb3JtYWxpemVkKTogYW55IHtcbiAgICBpZiAoZmlsdGVycy5vcCA9PT0gRmlsdGVyT3AuQW5kIHx8IGZpbHRlcnMub3AgPT09IEZpbHRlck9wLk9yKSB7XG4gICAgICAgIGlmIChpc0ZhbHN5KGZpbHRlcnMudmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gZmlsdGVycy52YWx1ZS5tYXAoY29tcGFjdCkuZmlsdGVyKGlzVHJ1dGh5KVxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVtb3ZlIHN1YmZpbHRlcnMgd2l0aCB0aGUgc2FtZSBvcGVyYXRvclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLm9wID09PSBmaWx0ZXJzLm9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQodmFsdWUudmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pXG5cbiAgICAgICAgLy8gZGVkdXBsaWNhdGUsIGFuZCBsYXRlc3QgZmlsdGVyIGlzIHRoZSBtb3N0IHByaW9yaXR5XG4gICAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuZmluZEluZGV4KHYyID0+IHYucGF0aCA9PT0gdjIucGF0aCAmJiB2Lm9wID09PSB2Mi5vcCkgPT09IGkpXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBvcDogZmlsdGVycy5vcCwgdmFsdWUgfVxuICAgIH0gZWxzZSBpZiAoZmlsdGVycy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJzXG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { flattenDepth } from "lodash";
1
+ import { flattenDepth } from "lodash-es";
2
2
  export function pathGetterCompile(path) {
3
3
  if (!path || path.length === 0) {
4
4
  throw new Error("Empty path");
@@ -15,4 +15,4 @@ function makeGetter(part, parent) {
15
15
  return obj => parent(obj).map(v => (v != null ? v[key] : undefined));
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RhdGEvc3JjL3F1ZXJ5L3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBWTtJQUMxQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FDekIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUMxQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDM0MsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUE7QUFFeEIsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLE1BQWdCO0lBQzlDLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUNyRCxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmxhdHRlbkRlcHRoIH0gZnJvbSBcImxvZGFzaFwiXG5cbnR5cGUgR2V0dGVyRm4gPSAoc3JjczogYW55W10pID0+IGFueVtdXG5leHBvcnQgdHlwZSBQYXRoR2V0dGVyPFQgPSBhbnksIFIgPSBhbnk+ID0gKG9iajogVCkgPT4gUltdXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoR2V0dGVyQ29tcGlsZShwYXRoOiBzdHJpbmcpOiBQYXRoR2V0dGVyIHtcbiAgICBpZiAoIXBhdGggfHwgcGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRW1wdHkgcGF0aFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2U8R2V0dGVyRm4+KFxuICAgICAgICAocGFyZW50LCBwYXJ0KSA9PiBtYWtlR2V0dGVyKHBhcnQsIHBhcmVudCksXG4gICAgICAgIChvYmo6IGFueSkgPT4gKG9iaiA9PSBudWxsID8gW10gOiBbb2JqXSlcbiAgICApXG59XG5cbmNvbnN0IElzTnVtYmVyID0gL15cXGQrJC9cblxuZnVuY3Rpb24gbWFrZUdldHRlcihwYXJ0OiBzdHJpbmcsIHBhcmVudDogR2V0dGVyRm4pOiBHZXR0ZXJGbiB7XG4gICAgaWYgKHBhcnQgPT09IFwiKlwiKSB7XG4gICAgICAgIHJldHVybiBvYmogPT4gZmxhdHRlbkRlcHRoKHBhcmVudChvYmopLCAxKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtleSA9IElzTnVtYmVyLnRlc3QocGFydCkgPyBOdW1iZXIocGFydCkgOiBwYXJ0XG4gICAgICAgIHJldHVybiBvYmogPT4gcGFyZW50KG9iaikubWFwKHYgPT4gKHYgIT0gbnVsbCA/IHZba2V5XSA6IHVuZGVmaW5lZCkpXG4gICAgfVxufVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RhdGEvc3JjL3F1ZXJ5L3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUt4QyxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBWTtJQUMxQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FDekIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUMxQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDM0MsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUE7QUFFeEIsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLE1BQWdCO0lBQzlDLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUNyRCxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmxhdHRlbkRlcHRoIH0gZnJvbSBcImxvZGFzaC1lc1wiXG5cbnR5cGUgR2V0dGVyRm4gPSAoc3JjczogYW55W10pID0+IGFueVtdXG5leHBvcnQgdHlwZSBQYXRoR2V0dGVyPFQgPSBhbnksIFIgPSBhbnk+ID0gKG9iajogVCkgPT4gUltdXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoR2V0dGVyQ29tcGlsZShwYXRoOiBzdHJpbmcpOiBQYXRoR2V0dGVyIHtcbiAgICBpZiAoIXBhdGggfHwgcGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRW1wdHkgcGF0aFwiKVxuICAgIH1cblxuICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2U8R2V0dGVyRm4+KFxuICAgICAgICAocGFyZW50LCBwYXJ0KSA9PiBtYWtlR2V0dGVyKHBhcnQsIHBhcmVudCksXG4gICAgICAgIChvYmo6IGFueSkgPT4gKG9iaiA9PSBudWxsID8gW10gOiBbb2JqXSlcbiAgICApXG59XG5cbmNvbnN0IElzTnVtYmVyID0gL15cXGQrJC9cblxuZnVuY3Rpb24gbWFrZUdldHRlcihwYXJ0OiBzdHJpbmcsIHBhcmVudDogR2V0dGVyRm4pOiBHZXR0ZXJGbiB7XG4gICAgaWYgKHBhcnQgPT09IFwiKlwiKSB7XG4gICAgICAgIHJldHVybiBvYmogPT4gZmxhdHRlbkRlcHRoKHBhcmVudChvYmopLCAxKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtleSA9IElzTnVtYmVyLnRlc3QocGFydCkgPyBOdW1iZXIocGFydCkgOiBwYXJ0XG4gICAgICAgIHJldHVybiBvYmogPT4gcGFyZW50KG9iaikubWFwKHYgPT4gKHYgIT0gbnVsbCA/IHZba2V5XSA6IHVuZGVmaW5lZCkpXG4gICAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { BehaviorSubject, combineLatest, map, Observable, shareReplay } from "rxjs";
2
- import { isEqual } from "lodash";
2
+ import { isEqual } from "lodash-es";
3
3
  import { deepClone, deepFreeze } from "@ngutil/common";
4
4
  import { readonlyProp } from "./common";
5
5
  export class QueryProperty extends BehaviorSubject {
@@ -53,4 +53,4 @@ export class QueryPropertySet extends Observable {
53
53
  }
54
54
  }
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9xdWVyeS1wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWhDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV2QyxNQUFNLE9BQWdCLGFBQW9CLFNBQVEsZUFBOEI7SUFDNUUsR0FBRyxDQUFDLEtBQWE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNoQixNQUFNLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUc7UUFDQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFRRCxLQUFLLENBQUMsS0FBUztRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFTO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBTSxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQ3BDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFnQixnQkFBb0IsU0FBUSxVQUFhO0lBQ2xELFNBQVMsQ0FBZTtJQUVqQyxZQUFZLEdBQUcsS0FBZTtRQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRTdDLE1BQU0sV0FBVyxHQUEyQixFQUFFLENBQUE7UUFDOUMsTUFBTSxLQUFLLEdBQXVDLEVBQUUsQ0FBQTtRQUVwRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUM1QixXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25CLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ2hELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtRQUVELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUIsQ0FBQztJQUNMLENBQUM7Q0FJSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gXCJsb2Rhc2hcIlxuXG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBGcmVlemUgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyByZWFkb25seVByb3AgfSBmcm9tIFwiLi9jb21tb25cIlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUXVlcnlQcm9wZXJ0eTxJLCBPPiBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxPIHwgdW5kZWZpbmVkPiB7XG4gICAgc2V0KHZhbHVlPzogSSB8IE8pIHtcbiAgICAgICAgdGhpcy4jbmV4dENsb25lKHZhbHVlICE9IG51bGwgPyB0aGlzLm5vcm0odmFsdWUpIDogdW5kZWZpbmVkKVxuICAgIH1cblxuICAgIHVwZGF0ZSh2YWx1ZT86IEkgfCBPKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vcm0gPSB2YWx1ZSAhPSBudWxsID8gdGhpcy5ub3JtKHZhbHVlKSA6IHVuZGVmaW5lZFxuICAgICAgICBpZiAoIWlzRXF1YWwodGhpcy52YWx1ZSwgbm9ybSkpIHtcbiAgICAgICAgICAgIHRoaXMuI25leHQodGhpcy5tZXJnZSh0aGlzLnZhbHVlLCBub3JtKSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXQodW5kZWZpbmVkKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlIHZhbHVlcyBhbmQgZW1pdCB3aGVuIGNoYW5nZWQgKGRvbnQgY2hhbmdlIG9yaWdpbmFsIHZhbHVlcylcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgbWVyZ2UoYT86IE8sIGI/OiBPKTogTyB8IHVuZGVmaW5lZFxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBub3JtKGE6IEkgfCBPKTogTyB8IHVuZGVmaW5lZFxuXG4gICAgI25leHQodmFsdWU/OiBPKSB7XG4gICAgICAgIGlmICghaXNFcXVhbCh0aGlzLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KHVuZGVmaW5lZClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI25leHRDbG9uZSh2YWx1ZT86IE8pIHtcbiAgICAgICAgaWYgKCFpc0VxdWFsKHRoaXMudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQodW5kZWZpbmVkKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQoZGVlcENsb25lPGFueT4odmFsdWUpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUXVlcnlQcm9wZXJ0eVNldDxPPiBleHRlbmRzIE9ic2VydmFibGU8Tz4ge1xuICAgIHJlYWRvbmx5ICNjb21iaW5lZDogT2JzZXJ2YWJsZTxPPlxuXG4gICAgY29uc3RydWN0b3IoLi4ubmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHN1cGVyKGRlc3QgPT4gdGhpcy4jY29tYmluZWQuc3Vic2NyaWJlKGRlc3QpKVxuXG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzOiBBcnJheTxPYnNlcnZhYmxlPGFueT4+ID0gW11cbiAgICAgICAgY29uc3QgcHJvcHM6IHsgW2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxhbnk+IH0gPSB7fVxuXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBuYW1lcykge1xuICAgICAgICAgICAgY29uc3QgbyA9IHRoaXMubmV3UHJvcGVydHkoKVxuICAgICAgICAgICAgb2JzZXJ2YWJsZXMucHVzaChvKVxuICAgICAgICAgICAgcHJvcHNbbmFtZV0gPSBvXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNjb21iaW5lZCA9IGNvbWJpbmVMYXRlc3Qob2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsdWVzID0+IGRlZXBGcmVlemUodGhpcy5tZXJnZSguLi52YWx1ZXMpKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG5cbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKSB7XG4gICAgICAgICAgICByZWFkb25seVByb3AodGhpcywgaywgdilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBuZXdQcm9wZXJ0eSgpOiBRdWVyeVByb3BlcnR5PGFueSwgYW55PlxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBtZXJnZSguLi5hcmdzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgdHlwZSBRdWVyeVByb3BlcnR5U2V0T2Y8VCwgUCwgTiBleHRlbmRzIHN0cmluZ1tdPiA9IFQgJiB7IFtLIGluIE5bbnVtYmVyXV06IFAgfVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYXRhL3NyYy9xdWVyeS9xdWVyeS1wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRW5DLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUV2QyxNQUFNLE9BQWdCLGFBQW9CLFNBQVEsZUFBOEI7SUFDNUUsR0FBRyxDQUFDLEtBQWE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNoQixNQUFNLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUc7UUFDQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFRRCxLQUFLLENBQUMsS0FBUztRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFTO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBTSxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQ3BDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFnQixnQkFBb0IsU0FBUSxVQUFhO0lBQ2xELFNBQVMsQ0FBZTtJQUVqQyxZQUFZLEdBQUcsS0FBZTtRQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRTdDLE1BQU0sV0FBVyxHQUEyQixFQUFFLENBQUE7UUFDOUMsTUFBTSxLQUFLLEdBQXVDLEVBQUUsQ0FBQTtRQUVwRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUM1QixXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25CLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ2hELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtRQUVELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUIsQ0FBQztJQUNMLENBQUM7Q0FJSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gXCJsb2Rhc2gtZXNcIlxuXG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBGcmVlemUgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgeyByZWFkb25seVByb3AgfSBmcm9tIFwiLi9jb21tb25cIlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUXVlcnlQcm9wZXJ0eTxJLCBPPiBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxPIHwgdW5kZWZpbmVkPiB7XG4gICAgc2V0KHZhbHVlPzogSSB8IE8pIHtcbiAgICAgICAgdGhpcy4jbmV4dENsb25lKHZhbHVlICE9IG51bGwgPyB0aGlzLm5vcm0odmFsdWUpIDogdW5kZWZpbmVkKVxuICAgIH1cblxuICAgIHVwZGF0ZSh2YWx1ZT86IEkgfCBPKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vcm0gPSB2YWx1ZSAhPSBudWxsID8gdGhpcy5ub3JtKHZhbHVlKSA6IHVuZGVmaW5lZFxuICAgICAgICBpZiAoIWlzRXF1YWwodGhpcy52YWx1ZSwgbm9ybSkpIHtcbiAgICAgICAgICAgIHRoaXMuI25leHQodGhpcy5tZXJnZSh0aGlzLnZhbHVlLCBub3JtKSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXQodW5kZWZpbmVkKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlIHZhbHVlcyBhbmQgZW1pdCB3aGVuIGNoYW5nZWQgKGRvbnQgY2hhbmdlIG9yaWdpbmFsIHZhbHVlcylcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgbWVyZ2UoYT86IE8sIGI/OiBPKTogTyB8IHVuZGVmaW5lZFxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBub3JtKGE6IEkgfCBPKTogTyB8IHVuZGVmaW5lZFxuXG4gICAgI25leHQodmFsdWU/OiBPKSB7XG4gICAgICAgIGlmICghaXNFcXVhbCh0aGlzLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KHVuZGVmaW5lZClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI25leHRDbG9uZSh2YWx1ZT86IE8pIHtcbiAgICAgICAgaWYgKCFpc0VxdWFsKHRoaXMudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQodW5kZWZpbmVkKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQoZGVlcENsb25lPGFueT4odmFsdWUpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUXVlcnlQcm9wZXJ0eVNldDxPPiBleHRlbmRzIE9ic2VydmFibGU8Tz4ge1xuICAgIHJlYWRvbmx5ICNjb21iaW5lZDogT2JzZXJ2YWJsZTxPPlxuXG4gICAgY29uc3RydWN0b3IoLi4ubmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHN1cGVyKGRlc3QgPT4gdGhpcy4jY29tYmluZWQuc3Vic2NyaWJlKGRlc3QpKVxuXG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzOiBBcnJheTxPYnNlcnZhYmxlPGFueT4+ID0gW11cbiAgICAgICAgY29uc3QgcHJvcHM6IHsgW2tleTogc3RyaW5nXTogT2JzZXJ2YWJsZTxhbnk+IH0gPSB7fVxuXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBuYW1lcykge1xuICAgICAgICAgICAgY29uc3QgbyA9IHRoaXMubmV3UHJvcGVydHkoKVxuICAgICAgICAgICAgb2JzZXJ2YWJsZXMucHVzaChvKVxuICAgICAgICAgICAgcHJvcHNbbmFtZV0gPSBvXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiNjb21iaW5lZCA9IGNvbWJpbmVMYXRlc3Qob2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAodmFsdWVzID0+IGRlZXBGcmVlemUodGhpcy5tZXJnZSguLi52YWx1ZXMpKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApXG5cbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKSB7XG4gICAgICAgICAgICByZWFkb25seVByb3AodGhpcywgaywgdilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBuZXdQcm9wZXJ0eSgpOiBRdWVyeVByb3BlcnR5PGFueSwgYW55PlxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBtZXJnZSguLi5hcmdzOiBhbnlbXSk6IGFueSB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgdHlwZSBRdWVyeVByb3BlcnR5U2V0T2Y8VCwgUCwgTiBleHRlbmRzIHN0cmluZ1tdPiA9IFQgJiB7IFtLIGluIE5bbnVtYmVyXV06IFAgfVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { map } from "rxjs";
2
- import { flattenDeep, isEqual } from "lodash";
2
+ import { flattenDeep, isEqual } from "lodash-es";
3
3
  import { deepClone, isPlainObject } from "@ngutil/common";
4
4
  import { pathGetterCompile } from "./path";
5
5
  import { QueryProperty, QueryPropertySet } from "./query-property";
@@ -212,4 +212,4 @@ export class SorterPropertySet extends QueryPropertySet {
212
212
  return sorterMerge(...args);
213
213
  }
214
214
  }
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvc29ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBb0JsRTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQWtCLE9BQWtCO0lBQ3RELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBSSxPQUFPLENBQVEsQ0FBQTtBQUM1QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFrQixPQUFrQjtJQUMvRCxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3BDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFrQixPQUFrQjtJQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FDYixPQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDNUIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZ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QUFPLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgZmxhdHRlbkRlZXAsIGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoXCJcblxuaW1wb3J0IHsgZGVlcENsb25lLCBpc1BsYWluT2JqZWN0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgcGF0aEdldHRlckNvbXBpbGUgfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCB7IFF1ZXJ5UHJvcGVydHksIFF1ZXJ5UHJvcGVydHlTZXQgfSBmcm9tIFwiLi9xdWVyeS1wcm9wZXJ0eVwiXG5cbmV4cG9ydCB0eXBlIFNvcnRlckZuPFQgPSBhbnk+ID0gKGE6IFQsIGI6IFQpID0+IG51bWJlclxuXG5leHBvcnQgY29uc3QgZW51bSBTb3J0RGlyZWN0aW9uIHtcbiAgICBBc2MgPSBcImFzY1wiLFxuICAgIERlc2MgPSBcImRlc2NcIlxufVxuXG5leHBvcnQgdHlwZSBTb3J0RGlyID0gU29ydERpcmVjdGlvbi5Bc2MgfCBTb3J0RGlyZWN0aW9uLkRlc2MgfCBcImFzY1wiIHwgXCJkZXNjXCJcbmV4cG9ydCB0eXBlIFNvcnREaXJFeHRyYSA9IHsgZGlyOiBTb3J0RGlyOyBlbXB0eUZpcnN0OiBib29sZWFuIH1cblxudHlwZSBfU29ydGVyPEY+ID0geyBbSyBpbiBrZXlvZiBGXTogeyBba2V5IGluIEtdOiBTb3J0RGlyIHwgU29ydERpckV4dHJhIH0gfVtrZXlvZiBGXVxuLy8gVE9ETzogZml4IHJlY3Vyc2lvblxuLy8gZXhwb3J0IHR5cGUgU29ydGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSBBcnJheTxfU29ydGVyPEZsYXR0ZW48VD4+PlxuZXhwb3J0IHR5cGUgU29ydGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSBBcnJheTx7IFtrZXk6IHN0cmluZ106IFNvcnREaXIgfCBTb3J0RGlyRXh0cmEgfCBOb3JtYWxpemVkRW50cnkgfCB1bmRlZmluZWQgfT5cblxudHlwZSBOb3JtYWxpemVkRW50cnkgPSB7IHBhdGg6IHN0cmluZzsgaXNBc2M6IGJvb2xlYW47IGVtcHR5Rmlyc3Q6IGJvb2xlYW47IHJlbW92ZT86IGJvb2xlYW4gfVxuZXhwb3J0IHR5cGUgU29ydGVyTm9ybWFsaXplZCA9IEFycmF5PE5vcm1hbGl6ZWRFbnRyeT5cblxuLyoqXG4gKiBAZXhhbXBsZVxuICpgYGB0c1xuICogaXRlbXMudG9Tb3J0ZWQoc29ydEJ5KFt7XCJhdXRob3IubmFtZVwiOiBcImFzY1wifV0pKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0Qnk8VCBleHRlbmRzIE1vZGVsPihzb3J0ZXJzOiBTb3J0ZXI8VD4pOiBTb3J0ZXJGbjxUPiB7XG4gICAgaWYgKHNvcnRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVtcHR5IHNvcnRlclwiKVxuICAgIH1cbiAgICByZXR1cm4gX3NvcnRlckNvbXBpbGU8VD4oc29ydGVycykgYXMgYW55XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHNvcnRlciBkZWZpbml0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBub3JtYWxpemVTb3J0ZXIoW3tpZDogXCJhc2NcIn1dKSAtPiBbe3BhdGg6IFwiaWRcIiwgaXNBc2M6IHRydWUsIGVtcHR5Rmlyc3Q6IHRydWV9XVxuICogbm9ybWFsaXplU29ydGVyKFt7aWQ6IHtkaXI6IFwiZGVzY1wiLCBlbXB0eUZpcnN0OiBmYWxzZX19XSkgLT4gW3twYXRoOiBcImlkXCIsIGlzQXNjOiBmYWxzZSwgZW1wdHlGaXJzdDogZmFsc2V9XVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0ZXJOb3JtYWxpemU8VCBleHRlbmRzIE1vZGVsPihzb3J0ZXJzOiBTb3J0ZXI8VD4pOiBTb3J0ZXJOb3JtYWxpemVkIHtcbiAgICByZXR1cm4gX3NvcnRlck5vcm1hbGl6ZShzb3J0ZXJzKVxufVxuXG5mdW5jdGlvbiBfc29ydGVyTm9ybWFsaXplPFQgZXh0ZW5kcyBNb2RlbD4oc29ydGVyczogU29ydGVyPFQ+KTogU29ydGVyTm9ybWFsaXplZCB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNvcnRlcnMpKSB7XG4gICAgICAgIHNvcnRlcnMgPSBbc29ydGVyc11cbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdHRlbkRlZXAoXG4gICAgICAgIChzb3J0ZXJzIGFzIGFueSkubWFwKChzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHMpKSB7XG4gICAgICAgICAgICAgICAgLy8gZW50cnkgaXMgbm9ybWFsaXplZFxuICAgICAgICAgICAgICAgIGlmIChzW1wicGF0aFwiXSAhPSBudWxsICYmIHNbXCJpc0FzY1wiXSAhPSBudWxsICYmIHNbXCJlbXB0eUZpcnN0XCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhzKS5tYXAoKFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGF0aDogaywgcmVtb3ZlOiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQXNjID0gdi50b0xvd2VyQ2FzZSgpID09PSBcImFzY1wiXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IGssIGlzQXNjLCBlbXB0eUZpcnN0OiBpc0FzYyA/IGZhbHNlIDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHYpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBrLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBc2M6ICgodiBhcyBTb3J0RGlyRXh0cmEpLmRpciB8fCBcImFzY1wiKS50b0xvd2VyQ2FzZSgpID09PSBcImFzY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlGaXJzdDogKHYgYXMgU29ydERpckV4dHJhKS5lbXB0eUZpcnN0ID09IG51bGwgPyB0cnVlIDogISEodiBhcyBTb3J0RGlyRXh0cmEpLmVtcHR5Rmlyc3RcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzb3J0ZXI6ICR7dn1gKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgKVxufVxuXG5mdW5jdGlvbiBfc29ydGVyQ29tcGlsZTxUIGV4dGVuZHMgTW9kZWw+KHNvcnRlcnM6IFNvcnRlcjxUPik6IFNvcnRlckZuPFQ+IHtcbiAgICBpZiAoc29ydGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChfYSwgX2IpID0+IDBcbiAgICB9XG5cbiAgICBjb25zdCBub3JtID0gc29ydGVyTm9ybWFsaXplPFQ+KHNvcnRlcnMpLm1hcChjcmVhdGVDb21wYXJhdG9yKVxuICAgIGlmIChub3JtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gbm9ybVswXVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWwgPSBub3JtLnBvcCgpIVxuICAgIHJldHVybiBub3JtLnJlZHVjZVJpZ2h0PFNvcnRlckZuPFQ+PihcbiAgICAgICAgKG5leHQsIGN1cnIpID0+IChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByID0gY3VycihhLCBiKVxuICAgICAgICAgICAgcmV0dXJuIHIgPT09IDAgPyBuZXh0KGEsIGIpIDogclxuICAgICAgICB9LFxuICAgICAgICBpbml0aWFsXG4gICAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wYXJhdG9yKHsgcGF0aCwgaXNBc2MsIGVtcHR5Rmlyc3QgfTogTm9ybWFsaXplZEVudHJ5KTogU29ydGVyRm4ge1xuICAgIGNvbnN0IGdldHRlciA9IHBhdGhHZXR0ZXJDb21waWxlKHBhdGgpXG4gICAgaWYgKGlzQXNjKSB7XG4gICAgICAgIHJldHVybiAoYSwgYikgPT4gY29tcGFyZShnZXR0ZXIoYSksIGdldHRlcihiKSwgZW1wdHlGaXJzdClcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKGEsIGIpID0+IGNvbXBhcmUoZ2V0dGVyKGEpLCBnZXR0ZXIoYiksICFlbXB0eUZpcnN0KSAqIC0xXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShhOiBhbnksIGI6IGFueSwgZW1wdHlGaXJzdDogYm9vbGVhbik6IG51bWJlciB7XG4gICAgLy8gY29uc29sZS5sb2coXCJDT01QQVJFXCIsIGEsIGIpXG4gICAgaWYgKGEgPT0gbnVsbCAmJiBiICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5Rmlyc3QgPT09IHRydWUgPyAtMSA6IDFcbiAgICB9IGVsc2UgaWYgKGEgIT0gbnVsbCAmJiBiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5Rmlyc3QgPT09IHRydWUgPyAxIDogLTFcbiAgICB9IGVsc2UgaWYgKGEgPT0gbnVsbCAmJiBiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIDBcbiAgICB9IGVsc2UgaWYgKGlzRXF1YWwoYSwgYikpIHtcbiAgICAgICAgcmV0dXJuIDBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiICYmIHR5cGVvZiBiID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBhIC0gYlxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGEgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29uc3QgYWwgPSBhLmxlbmd0aFxuICAgICAgICBjb25zdCBibCA9IGIubGVuZ3RoXG4gICAgICAgIC8vIGlmIGJvdGggbGVuZ3RocyBpcyAwIHRoZSBjb2RlIGV4ZWN1dGlvbiBub3QgcmVhY2ggdGhhdCBwb2ludCwgYmVjYXVzZSBhID09PSBiXG4gICAgICAgIGlmIChlbXB0eUZpcnN0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoYWwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFsID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICAgICAgY29uc3QgYWwgPSBhLmxlbmd0aFxuICAgICAgICBjb25zdCBibCA9IGIubGVuZ3RoXG4gICAgICAgIGNvbnN0IGwgPSBNYXRoLm1pbihhbCwgYmwpXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNvbXBhcmUoYVtpXSwgYltpXSwgZW1wdHlGaXJzdClcbiAgICAgICAgICAgIGlmIChyZXMgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWwgPT09IGJsKSB7XG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVtcHR5Rmlyc3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChhbCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfSBlbHNlIGlmIChibCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgfSBlbHNlIGlmIChibCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsIC0gYmxcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYSkgJiYgaXNQbGFpbk9iamVjdChiKSkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSkubG9jYWxlQ29tcGFyZShKU09OLnN0cmluZ2lmeShiKSlcbiAgICB9XG5cbiAgICByZXR1cm4gYSA+IGIgPyAtMSA6IDFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRlck1lcmdlKC4uLnNvcnRlcnM6IChTb3J0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkIHwgbnVsbClbXSk6IFNvcnRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IFNvcnRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWRcblxuICAgIGZvciAoY29uc3Qgc29ydGVyIG9mIHNvcnRlcnMpIHtcbiAgICAgICAgaWYgKHNvcnRlciA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBkZWVwQ2xvbmUoc29ydGVyKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgc2VudHJ5IG9mIHNvcnRlcikge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHJlc3VsdC5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUucGF0aCA9PT0gc2VudHJ5LnBhdGgpXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbnRyeS5yZW1vdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZShleGlzdGluZ0luZGV4LCAxKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtleGlzdGluZ0luZGV4XSA9IGRlZXBDbG9uZShzZW50cnkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghc2VudHJ5LnJlbW92ZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRlZXBDbG9uZShzZW50cnkpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBjbGFzcyBTb3J0ZXJQcm9wZXJ0eTxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eTxTb3J0ZXI8VD4sIFNvcnRlck5vcm1hbGl6ZWQ+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbm9ybShhOiBTb3J0ZXI8VD4pOiBTb3J0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHNvcnRlck5vcm1hbGl6ZShhKVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWVyZ2UoYT86IFNvcnRlck5vcm1hbGl6ZWQsIGI/OiBTb3J0ZXJOb3JtYWxpemVkKTogU29ydGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBzb3J0ZXJNZXJnZShhLCBiKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvcnRlclByb3BlcnR5U2V0IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eVNldDxTb3J0ZXJOb3JtYWxpemVkPiB7XG4gICAgb2YobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxOb3JtYWxpemVkRW50cnkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlwZShtYXAoc29ydGVycyA9PiAoc29ydGVycyA9PSBudWxsID8gdW5kZWZpbmVkIDogc29ydGVycy5maW5kKHZhbHVlID0+IHZhbHVlLnBhdGggPT09IG5hbWUpKSkpXG4gICAgfVxuXG4gICAgaXNBc2MobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9mKG5hbWUpLnBpcGUobWFwKHYgPT4gKHYgIT0gbnVsbCA/IHYuaXNBc2MgOiB1bmRlZmluZWQpKSlcbiAgICB9XG5cbiAgICBpc0Rlc2MobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9mKG5hbWUpLnBpcGUobWFwKHYgPT4gKHYgIT0gbnVsbCA/ICF2LmlzQXNjIDogdW5kZWZpbmVkKSkpXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5ld1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IFNvcnRlclByb3BlcnR5KHVuZGVmaW5lZClcbiAgICB9XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG1lcmdlKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiBzb3J0ZXJNZXJnZSguLi5hcmdzKVxuICAgIH1cbn1cbiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvcXVlcnkvc29ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFFdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBb0JsRTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQWtCLE9BQWtCO0lBQ3RELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBSSxPQUFPLENBQVEsQ0FBQTtBQUM1QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFrQixPQUFrQjtJQUMvRCxPQUFPLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3BDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFrQixPQUFrQjtJQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FDYixPQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDNUIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZ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QUFPLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgZmxhdHRlbkRlZXAsIGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoLWVzXCJcblxuaW1wb3J0IHsgZGVlcENsb25lLCBpc1BsYWluT2JqZWN0IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgcGF0aEdldHRlckNvbXBpbGUgfSBmcm9tIFwiLi9wYXRoXCJcbmltcG9ydCB7IFF1ZXJ5UHJvcGVydHksIFF1ZXJ5UHJvcGVydHlTZXQgfSBmcm9tIFwiLi9xdWVyeS1wcm9wZXJ0eVwiXG5cbmV4cG9ydCB0eXBlIFNvcnRlckZuPFQgPSBhbnk+ID0gKGE6IFQsIGI6IFQpID0+IG51bWJlclxuXG5leHBvcnQgY29uc3QgZW51bSBTb3J0RGlyZWN0aW9uIHtcbiAgICBBc2MgPSBcImFzY1wiLFxuICAgIERlc2MgPSBcImRlc2NcIlxufVxuXG5leHBvcnQgdHlwZSBTb3J0RGlyID0gU29ydERpcmVjdGlvbi5Bc2MgfCBTb3J0RGlyZWN0aW9uLkRlc2MgfCBcImFzY1wiIHwgXCJkZXNjXCJcbmV4cG9ydCB0eXBlIFNvcnREaXJFeHRyYSA9IHsgZGlyOiBTb3J0RGlyOyBlbXB0eUZpcnN0OiBib29sZWFuIH1cblxudHlwZSBfU29ydGVyPEY+ID0geyBbSyBpbiBrZXlvZiBGXTogeyBba2V5IGluIEtdOiBTb3J0RGlyIHwgU29ydERpckV4dHJhIH0gfVtrZXlvZiBGXVxuLy8gVE9ETzogZml4IHJlY3Vyc2lvblxuLy8gZXhwb3J0IHR5cGUgU29ydGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSBBcnJheTxfU29ydGVyPEZsYXR0ZW48VD4+PlxuZXhwb3J0IHR5cGUgU29ydGVyPFQgZXh0ZW5kcyBNb2RlbD4gPSBBcnJheTx7IFtrZXk6IHN0cmluZ106IFNvcnREaXIgfCBTb3J0RGlyRXh0cmEgfCBOb3JtYWxpemVkRW50cnkgfCB1bmRlZmluZWQgfT5cblxudHlwZSBOb3JtYWxpemVkRW50cnkgPSB7IHBhdGg6IHN0cmluZzsgaXNBc2M6IGJvb2xlYW47IGVtcHR5Rmlyc3Q6IGJvb2xlYW47IHJlbW92ZT86IGJvb2xlYW4gfVxuZXhwb3J0IHR5cGUgU29ydGVyTm9ybWFsaXplZCA9IEFycmF5PE5vcm1hbGl6ZWRFbnRyeT5cblxuLyoqXG4gKiBAZXhhbXBsZVxuICpgYGB0c1xuICogaXRlbXMudG9Tb3J0ZWQoc29ydEJ5KFt7XCJhdXRob3IubmFtZVwiOiBcImFzY1wifV0pKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0Qnk8VCBleHRlbmRzIE1vZGVsPihzb3J0ZXJzOiBTb3J0ZXI8VD4pOiBTb3J0ZXJGbjxUPiB7XG4gICAgaWYgKHNvcnRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVtcHR5IHNvcnRlclwiKVxuICAgIH1cbiAgICByZXR1cm4gX3NvcnRlckNvbXBpbGU8VD4oc29ydGVycykgYXMgYW55XG59XG5cbi8qKlxuICogTm9ybWFsaXplIHNvcnRlciBkZWZpbml0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBub3JtYWxpemVTb3J0ZXIoW3tpZDogXCJhc2NcIn1dKSAtPiBbe3BhdGg6IFwiaWRcIiwgaXNBc2M6IHRydWUsIGVtcHR5Rmlyc3Q6IHRydWV9XVxuICogbm9ybWFsaXplU29ydGVyKFt7aWQ6IHtkaXI6IFwiZGVzY1wiLCBlbXB0eUZpcnN0OiBmYWxzZX19XSkgLT4gW3twYXRoOiBcImlkXCIsIGlzQXNjOiBmYWxzZSwgZW1wdHlGaXJzdDogZmFsc2V9XVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0ZXJOb3JtYWxpemU8VCBleHRlbmRzIE1vZGVsPihzb3J0ZXJzOiBTb3J0ZXI8VD4pOiBTb3J0ZXJOb3JtYWxpemVkIHtcbiAgICByZXR1cm4gX3NvcnRlck5vcm1hbGl6ZShzb3J0ZXJzKVxufVxuXG5mdW5jdGlvbiBfc29ydGVyTm9ybWFsaXplPFQgZXh0ZW5kcyBNb2RlbD4oc29ydGVyczogU29ydGVyPFQ+KTogU29ydGVyTm9ybWFsaXplZCB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNvcnRlcnMpKSB7XG4gICAgICAgIHNvcnRlcnMgPSBbc29ydGVyc11cbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdHRlbkRlZXAoXG4gICAgICAgIChzb3J0ZXJzIGFzIGFueSkubWFwKChzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHMpKSB7XG4gICAgICAgICAgICAgICAgLy8gZW50cnkgaXMgbm9ybWFsaXplZFxuICAgICAgICAgICAgICAgIGlmIChzW1wicGF0aFwiXSAhPSBudWxsICYmIHNbXCJpc0FzY1wiXSAhPSBudWxsICYmIHNbXCJlbXB0eUZpcnN0XCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhzKS5tYXAoKFtrLCB2XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGF0aDogaywgcmVtb3ZlOiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQXNjID0gdi50b0xvd2VyQ2FzZSgpID09PSBcImFzY1wiXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IGssIGlzQXNjLCBlbXB0eUZpcnN0OiBpc0FzYyA/IGZhbHNlIDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHYpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBrLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBc2M6ICgodiBhcyBTb3J0RGlyRXh0cmEpLmRpciB8fCBcImFzY1wiKS50b0xvd2VyQ2FzZSgpID09PSBcImFzY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlGaXJzdDogKHYgYXMgU29ydERpckV4dHJhKS5lbXB0eUZpcnN0ID09IG51bGwgPyB0cnVlIDogISEodiBhcyBTb3J0RGlyRXh0cmEpLmVtcHR5Rmlyc3RcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzb3J0ZXI6ICR7dn1gKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgKVxufVxuXG5mdW5jdGlvbiBfc29ydGVyQ29tcGlsZTxUIGV4dGVuZHMgTW9kZWw+KHNvcnRlcnM6IFNvcnRlcjxUPik6IFNvcnRlckZuPFQ+IHtcbiAgICBpZiAoc29ydGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChfYSwgX2IpID0+IDBcbiAgICB9XG5cbiAgICBjb25zdCBub3JtID0gc29ydGVyTm9ybWFsaXplPFQ+KHNvcnRlcnMpLm1hcChjcmVhdGVDb21wYXJhdG9yKVxuICAgIGlmIChub3JtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gbm9ybVswXVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWwgPSBub3JtLnBvcCgpIVxuICAgIHJldHVybiBub3JtLnJlZHVjZVJpZ2h0PFNvcnRlckZuPFQ+PihcbiAgICAgICAgKG5leHQsIGN1cnIpID0+IChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByID0gY3VycihhLCBiKVxuICAgICAgICAgICAgcmV0dXJuIHIgPT09IDAgPyBuZXh0KGEsIGIpIDogclxuICAgICAgICB9LFxuICAgICAgICBpbml0aWFsXG4gICAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wYXJhdG9yKHsgcGF0aCwgaXNBc2MsIGVtcHR5Rmlyc3QgfTogTm9ybWFsaXplZEVudHJ5KTogU29ydGVyRm4ge1xuICAgIGNvbnN0IGdldHRlciA9IHBhdGhHZXR0ZXJDb21waWxlKHBhdGgpXG4gICAgaWYgKGlzQXNjKSB7XG4gICAgICAgIHJldHVybiAoYSwgYikgPT4gY29tcGFyZShnZXR0ZXIoYSksIGdldHRlcihiKSwgZW1wdHlGaXJzdClcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKGEsIGIpID0+IGNvbXBhcmUoZ2V0dGVyKGEpLCBnZXR0ZXIoYiksICFlbXB0eUZpcnN0KSAqIC0xXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZShhOiBhbnksIGI6IGFueSwgZW1wdHlGaXJzdDogYm9vbGVhbik6IG51bWJlciB7XG4gICAgLy8gY29uc29sZS5sb2coXCJDT01QQVJFXCIsIGEsIGIpXG4gICAgaWYgKGEgPT0gbnVsbCAmJiBiICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5Rmlyc3QgPT09IHRydWUgPyAtMSA6IDFcbiAgICB9IGVsc2UgaWYgKGEgIT0gbnVsbCAmJiBiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5Rmlyc3QgPT09IHRydWUgPyAxIDogLTFcbiAgICB9IGVsc2UgaWYgKGEgPT0gbnVsbCAmJiBiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIDBcbiAgICB9IGVsc2UgaWYgKGlzRXF1YWwoYSwgYikpIHtcbiAgICAgICAgcmV0dXJuIDBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiICYmIHR5cGVvZiBiID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBhIC0gYlxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGEgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGIgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29uc3QgYWwgPSBhLmxlbmd0aFxuICAgICAgICBjb25zdCBibCA9IGIubGVuZ3RoXG4gICAgICAgIC8vIGlmIGJvdGggbGVuZ3RocyBpcyAwIHRoZSBjb2RlIGV4ZWN1dGlvbiBub3QgcmVhY2ggdGhhdCBwb2ludCwgYmVjYXVzZSBhID09PSBiXG4gICAgICAgIGlmIChlbXB0eUZpcnN0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoYWwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFsID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDFcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICAgICAgY29uc3QgYWwgPSBhLmxlbmd0aFxuICAgICAgICBjb25zdCBibCA9IGIubGVuZ3RoXG4gICAgICAgIGNvbnN0IGwgPSBNYXRoLm1pbihhbCwgYmwpXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNvbXBhcmUoYVtpXSwgYltpXSwgZW1wdHlGaXJzdClcbiAgICAgICAgICAgIGlmIChyZXMgIT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWwgPT09IGJsKSB7XG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVtcHR5Rmlyc3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChhbCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfSBlbHNlIGlmIChibCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWwgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuICAgICAgICAgICAgfSBlbHNlIGlmIChibCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsIC0gYmxcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoYSkgJiYgaXNQbGFpbk9iamVjdChiKSkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSkubG9jYWxlQ29tcGFyZShKU09OLnN0cmluZ2lmeShiKSlcbiAgICB9XG5cbiAgICByZXR1cm4gYSA+IGIgPyAtMSA6IDFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRlck1lcmdlKC4uLnNvcnRlcnM6IChTb3J0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkIHwgbnVsbClbXSk6IFNvcnRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IFNvcnRlck5vcm1hbGl6ZWQgfCB1bmRlZmluZWRcblxuICAgIGZvciAoY29uc3Qgc29ydGVyIG9mIHNvcnRlcnMpIHtcbiAgICAgICAgaWYgKHNvcnRlciA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBkZWVwQ2xvbmUoc29ydGVyKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgc2VudHJ5IG9mIHNvcnRlcikge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHJlc3VsdC5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUucGF0aCA9PT0gc2VudHJ5LnBhdGgpXG4gICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbnRyeS5yZW1vdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZShleGlzdGluZ0luZGV4LCAxKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtleGlzdGluZ0luZGV4XSA9IGRlZXBDbG9uZShzZW50cnkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghc2VudHJ5LnJlbW92ZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRlZXBDbG9uZShzZW50cnkpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBjbGFzcyBTb3J0ZXJQcm9wZXJ0eTxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eTxTb3J0ZXI8VD4sIFNvcnRlck5vcm1hbGl6ZWQ+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbm9ybShhOiBTb3J0ZXI8VD4pOiBTb3J0ZXJOb3JtYWxpemVkIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHNvcnRlck5vcm1hbGl6ZShhKVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbWVyZ2UoYT86IFNvcnRlck5vcm1hbGl6ZWQsIGI/OiBTb3J0ZXJOb3JtYWxpemVkKTogU29ydGVyTm9ybWFsaXplZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBzb3J0ZXJNZXJnZShhLCBiKVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvcnRlclByb3BlcnR5U2V0IGV4dGVuZHMgUXVlcnlQcm9wZXJ0eVNldDxTb3J0ZXJOb3JtYWxpemVkPiB7XG4gICAgb2YobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxOb3JtYWxpemVkRW50cnkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlwZShtYXAoc29ydGVycyA9PiAoc29ydGVycyA9PSBudWxsID8gdW5kZWZpbmVkIDogc29ydGVycy5maW5kKHZhbHVlID0+IHZhbHVlLnBhdGggPT09IG5hbWUpKSkpXG4gICAgfVxuXG4gICAgaXNBc2MobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9mKG5hbWUpLnBpcGUobWFwKHYgPT4gKHYgIT0gbnVsbCA/IHYuaXNBc2MgOiB1bmRlZmluZWQpKSlcbiAgICB9XG5cbiAgICBpc0Rlc2MobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9mKG5hbWUpLnBpcGUobWFwKHYgPT4gKHYgIT0gbnVsbCA/ICF2LmlzQXNjIDogdW5kZWZpbmVkKSkpXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5ld1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IFNvcnRlclByb3BlcnR5KHVuZGVmaW5lZClcbiAgICB9XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG1lcmdlKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiBzb3J0ZXJNZXJnZSguLi5hcmdzKVxuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { DataSource as CdkDataSource } from "@angular/cdk/collections";
2
2
  import { BehaviorSubject, catchError, combineLatest, distinctUntilChanged, filter, map, merge, Observable, of, ReplaySubject, shareReplay, Subject, switchMap, take, takeUntil, tap, timer } from "rxjs";
3
- import { isEqual } from "lodash";
3
+ import { isEqual } from "lodash-es";
4
4
  import { deepClone, deepFreeze, isFalsy } from "@ngutil/common";
5
5
  import { querySubject } from "../query";
6
6
  import { MemoryStore } from "../store";
@@ -118,4 +118,4 @@ export class DataSource extends CdkDataSource {
118
118
  this.#cvSubs.delete(collectionViewer);
119
119
  }
120
120
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUV4RixPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUNMLFVBQVUsRUFDVixFQUFFLEVBQ0YsYUFBYSxFQUNiLFdBQVcsRUFDWCxPQUFPLEVBRVAsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFDUixNQUFNLE1BQU0sQ0FBQTtBQUViLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFaEMsT0FBTyxFQUFtQixTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBS2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDdkMsT0FBTyxFQUF3QixXQUFXLEVBQTBCLE1BQU0sVUFBVSxDQUFBO0FBRXBGLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQTtBQUV4QixNQUFNLE9BQU8sVUFBNEIsU0FBUSxhQUE0QjtJQUloRSxNQUFNLENBQThCO0lBUXBDLE9BQU8sQ0FBdUM7SUFFOUMsTUFBTSxDQWlCZDtJQXdDRCxZQUNvQixRQUF5QixFQUN6QixRQUE0QixJQUFJLFdBQVcsRUFBRSxFQUM3QyxTQUFTLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBRXpELEtBQUssRUFBRSxDQUFBO1FBSlMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBd0M7UUFDN0MsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUF6RXBELFlBQU8sR0FBRyxJ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Qy9DLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFFakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUV6QyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBa0QsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDekMsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUN0QixDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVRLFVBQVUsQ0FBQyxnQkFBa0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuXG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBjYXRjaEVycm9yLFxuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmlsdGVyLFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIFJlcGxheVN1YmplY3QsXG4gICAgc2hhcmVSZXBsYXksXG4gICAgU3ViamVjdCxcbiAgICBTdWJzY3JpYmVyLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbCxcbiAgICB0YXAsXG4gICAgdGltZXJcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcImxvZGFzaFwiXG5cbmltcG9ydCB7IENvbm5lY3RQcm90b2NvbCwgZGVlcENsb25lLCBkZWVwRnJlZXplLCBpc0ZhbHN5IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHR5cGUgeyBNb2RlbCwgTW9kZWxSZWYgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHR5cGUgeyBEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi4vcHJvdmlkZXIvcHJvdmlkZXJcIlxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCwgUXVlcnlXaXRoU2xpY2UsIFNsaWNlIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcbmltcG9ydCB7IHF1ZXJ5U3ViamVjdCB9IGZyb20gXCIuLi9xdWVyeVwiXG5pbXBvcnQgeyB0eXBlIENvbGxlY3Rpb25TdG9yZSwgTWVtb3J5U3RvcmUsIHR5cGUgUGFydGlhbENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vc3RvcmVcIlxuXG5jb25zdCBERUJPVU5DRV9USU1FID0gNTBcblxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2U8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIENka0RhdGFTb3VyY2U8VCB8IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBDb25uZWN0UHJvdG9jb2wge1xuICAgIHJlYWRvbmx5IGlzQnVzeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICAgIHJlYWRvbmx5IHRvdGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbiAgICByZWFkb25seSAjc2xpY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxTbGljZT4oMSlcbiAgICByZWFkb25seSBzbGljZSQ6IE9ic2VydmFibGU8U2xpY2U+ID0gdGhpcy4jc2xpY2UucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNsaWNlID0+IHRoaXMucHJvdmlkZXIuY2xhbXBTbGljZShzbGljZSkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc0VxdWFsKSxcbiAgICAgICAgbWFwKHNsaWNlID0+IGRlZXBGcmVlemUoZGVlcENsb25lKHNsaWNlKSkpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgI3JlbG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKVxuXG4gICAgcmVhZG9ubHkgI3F1ZXJ5OiBPYnNlcnZhYmxlPFF1ZXJ5V2l0aFNsaWNlPFQ+PiA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBxdWVyeTogdGhpcy5xdWVyeSQsXG4gICAgICAgIHJlbG9hZDogbWVyZ2UodGhpcy4jcmVsb2FkLCB0aGlzLnByb3ZpZGVyLmNoYW5nZWQkKVxuICAgIH0pLnBpcGUoXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLiNzZXRCdXN5KHRydWUpKSxcbiAgICAgICAgLy8gVE9ETzogbWF5YmUgc2lsZW50IHJlc2V0IG9yIHByZXZlbnQgaXRlbXMkIGNoZW5nZXNcbiAgICAgICAgLy8gVE9ETzogYWx0ZXJuYXRpdmUgc29sdXRpb24gdXNlIGNhY2hlSWQsIGFuZCBxdWVyeSBpdGVtIGZyb20gc3RvcmUgd2l0aCB0aGlzIGNhY2hlSWRcbiAgICAgICAgc3dpdGNoTWFwKCh7IHF1ZXJ5IH0pID0+IHRoaXMuc3RvcmUuY2xlYXIoKS5waXBlKG1hcCgoKSA9PiBxdWVyeSkpKSxcbiAgICAgICAgc3dpdGNoTWFwKHF1ZXJ5ID0+XG4gICAgICAgICAgICB0aGlzLnNsaWNlJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChzbGljZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuI3NldEJ1c3kodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucXVlcnksIHNsaWNlIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPFBhcnRpYWxDb2xsZWN0aW9uPFQ+PiA9IHRoaXMuI3F1ZXJ5LnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+ICh0aGlzLnByb3ZpZGVyLmlzQXN5bmMgPyB0aW1lcihERUJPVU5DRV9USU1FKS5waXBlKG1hcCgoKSA9PiB2KSkgOiBvZih2KSkpLFxuICAgICAgICBzd2l0Y2hNYXAocXVlcnkgPT5cbiAgICAgICAgICAgIHRoaXMuc3RvcmUuaGFzU2xpY2UocXVlcnkuc2xpY2UpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaGFzU2xpY2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU2xpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFNsaWNlKHF1ZXJ5LnNsaWNlKS5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNzZXRCdXN5KHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5xdWVyeUxpc3QocXVlcnkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jc2V0QnVzeShmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgaXRlbXM6IFtdLCB0b3RhbDogdW5kZWZpbmVkIH0gc2F0aXNmaWVzIFF1ZXJ5UmVzdWx0PFQ+KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLiNzZXRCdXN5KGZhbHNlKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudG90YWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbCQubmV4dChyZXN1bHQudG90YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuaW5zZXJ0U2xpY2UocXVlcnkuc2xpY2UsIHJlc3VsdC5pdGVtcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgaXNFbXB0eSQgPSBjb21iaW5lTGF0ZXN0KHsgYnVzeTogdGhpcy5pc0J1c3kkLCBpdGVtczogdGhpcy5pdGVtcyQgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IGJ1c3kgfSkgPT4gIWJ1c3kpLFxuICAgICAgICBtYXAoKHsgaXRlbXMgfSkgPT4gaXRlbXMuZXZlcnkoaXNGYWxzeSkpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwcm92aWRlcjogRGF0YVByb3ZpZGVyPFQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RvcmU6IENvbGxlY3Rpb25TdG9yZTxUPiA9IG5ldyBNZW1vcnlTdG9yZSgpLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcXVlcnkkID0gcXVlcnlTdWJqZWN0KFwibm9ybWFsXCIsIFwiZm9yY2VkXCIpXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKClcbiAgICB9XG5cbiAgICBzZXRTbGljZShzbGljZTogU2xpY2UpIHtcbiAgICAgICAgdGhpcy4jc2xpY2UubmV4dChzbGljZSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBhbGwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNsaWNlKHsgc3RhcnQ6IDAsIGVuZDogSW5maW5pdHkgfSlcbiAgICB9XG5cbiAgICByZWFsb2QoKSB7XG4gICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KClcbiAgICB9XG5cbiAgICBnZXRJdGVtKHJlZjogTW9kZWxSZWYpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVmbiA9IHRoaXMucHJvdmlkZXIubWV0YS5ub3JtYWxpemVSZWYocmVmKVxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXQocmVmbikucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIucXVlcnlJdGVtKHJlZm4pLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHJlc3VsdClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICB3YXRjaEl0ZW0ocmVmOiBNb2RlbFJlZik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZWZuID0gdGhpcy5wcm92aWRlci5tZXRhLm5vcm1hbGl6ZVJlZihyZWYpXG4gICAgICAgIHJldHVybiB0aGlzLiNzdG9yZUZpcnN0KFxuICAgICAgICAgICAgcXVlcnkgPT4gdGhpcy5zdG9yZS5nZXQocmVmbiksXG4gICAgICAgICAgICBxdWVyeSA9PiB0aGlzLnByb3ZpZGVyLnF1ZXJ5SXRlbShyZWZuLCBxdWVyeSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGdldEl0ZW1Qb3NpdGlvbihyZWY6IE1vZGVsUmVmKTogT2JzZXJ2YWJsZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2F0Y2hJdGVtUG9zaXRpb24ocmVmKS5waXBlKHRha2UoMSkpXG4gICAgfVxuXG4gICAgd2F0Y2hJdGVtUG9zaXRpb24ocmVmOiBNb2RlbFJlZik6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlZm4gPSB0aGlzLnByb3ZpZGVyLm1ldGEubm9ybWFsaXplUmVmKHJlZilcbiAgICAgICAgcmV0dXJuIHRoaXMuI3N0b3JlRmlyc3QoXG4gICAgICAgICAgICBxdWVyeSA9PiB0aGlzLnN0b3JlLmluZGV4T2YocmVmbikucGlwZShtYXAoaSA9PiAoaSA8IDAgPyB1bmRlZmluZWQgOiBpKSkpLFxuICAgICAgICAgICAgcXVlcnkgPT4gdGhpcy5wcm92aWRlci5xdWVyeVBvc2l0aW9uKHJlZm4sIHF1ZXJ5KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmVhbG9kSXRlbShyZWY6IE1vZGVsUmVmLCBpbnNlcnRQb3NpdGlvbj86IG51bWJlcik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZWZuID0gdGhpcy5wcm92aWRlci5tZXRhLm5vcm1hbGl6ZVJlZihyZWYpXG4gICAgICAgIHJldHVybiB0aGlzLiNxdWVyeS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcChxdWVyeSA9PiB0aGlzLnByb3ZpZGVyLnF1ZXJ5SXRlbShyZWZuLCBxdWVyeSkucGlwZSh0YWtlKDEpKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0gIT0gbnVsbCA/IHRoaXMuc3RvcmUudXBkYXRlT3JJbnNlcnQocmVmbiwgaXRlbSwgaW5zZXJ0UG9zaXRpb24pLnBpcGUobWFwKCgpID0+IGl0ZW0pKSA6IG9mKGl0ZW0pXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjc3RvcmVGaXJzdDxYPihcbiAgICAgICAgc3RvcmVGbjogKHF1ZXJ5OiBRdWVyeVdpdGhTbGljZTxUPikgPT4gT2JzZXJ2YWJsZTxYPixcbiAgICAgICAgc2VsZkZuOiAocXVlcnk6IFF1ZXJ5V2l0aFNsaWNlPFQ+KSA9PiBPYnNlcnZhYmxlPFg+XG4gICAgKTogT2JzZXJ2YWJsZTxYPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNxdWVyeS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcChxdWVyeSA9PiBzdG9yZUZuKHF1ZXJ5KS5waXBlKHN3aXRjaE1hcChyZXN1bHQgPT4gKHJlc3VsdCA9PSBudWxsID8gc2VsZkZuKHF1ZXJ5KSA6IG9mKHJlc3VsdCkpKSkpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjc2V0QnVzeShidXN5OiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVzeSQudmFsdWUgIT09IGJ1c3kpIHtcbiAgICAgICAgICAgIC8vIGRvbnQgc2V0IHRydWUgd2hlbiBub3QgYXN5bmMgcHJvdmlkZXIsIGJ1dCBmYWxzZSBpcyBhbHNvIHNldFxuICAgICAgICAgICAgaWYgKGJ1c3kgJiYgIXRoaXMucHJvdmlkZXIuaXNBc3luYykge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0J1c3kkLm5leHQoYnVzeSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNjdlN1YnMgPSBuZXcgTWFwPENvbGxlY3Rpb25WaWV3ZXIsIFN1YmplY3Q8dm9pZD4+KClcblxuICAgIG92ZXJyaWRlIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8cmVhZG9ubHkgKFQgfCB1bmRlZmluZWQpW10+IHtcbiAgICAgICAgY29uc3QgdW50aWwgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5zZXQoY29sbGVjdGlvblZpZXdlciwgdW50aWwpXG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPHJlYWRvbmx5IChUIHwgdW5kZWZpbmVkKVtdPikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3ViMSA9IGNvbGxlY3Rpb25WaWV3ZXIudmlld0NoYW5nZS5zdWJzY3JpYmUodGhpcy4jc2xpY2UpXG4gICAgICAgICAgICBjb25zdCBzdWIyID0gdGhpcy5pdGVtcyQuc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2N2U3Vicy5nZXQoY29sbGVjdGlvblZpZXdlcikgPT09IHVudGlsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3ViMS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgc3ViMi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUodGFrZVVudGlsKHVudGlsKSlcbiAgICB9XG5cbiAgICBvdmVycmlkZSBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICB9XG59XG4iXX0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUV4RixPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUNMLFVBQVUsRUFDVixFQUFFLEVBQ0YsYUFBYSxFQUNiLFdBQVcsRUFDWCxPQUFPLEVBRVAsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFDUixNQUFNLE1BQU0sQ0FBQTtBQUViLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkMsT0FBTyxFQUFtQixTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBS2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDdkMsT0FBTyxFQUF3QixXQUFXLEVBQTBCLE1BQU0sVUFBVSxDQUFBO0FBRXBGLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQTtBQUV4QixNQUFNLE9BQU8sVUFBNEIsU0FBUSxhQUE0QjtJQUloRSxNQUFNLENBQThCO0lBUXBDLE9BQU8sQ0FBdUM7SUFFOUMsTUFBTSxDQWlCZDtJQXdDRCxZQUNvQixRQUF5QixFQUN6QixRQUE0QixJQUFJLFdBQVcsRUFBRSxFQUM3QyxTQUFTLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBRXpELEtBQUssRUFBRSxDQUFBO1FBSlMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBd0M7UUFDN0MsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUF6RXBELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQTtRQUM3QyxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFBO1FBRTNELFdBQU0sR0FBRyxJQUFJLGFBQWEsQ0FBUSxDQUFDLENBQUMsQ0FBQTtRQUNwQyxXQUFNLEdBQXNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNqRCxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNuRCxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQzFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ2pELENBQUE7UUFFUSxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQU8sU0FBUyxDQUFDLENBQUE7UUFFOUMsV0FBTSxHQUFrQyxhQUFhLENBQUM7WUFDM0QsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2xCLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztTQUN0RCxDQUFDLENBQUMsSUFBSTtRQUNILGtDQUFrQztRQUNsQyxxREFBcUQ7UUFDckQsc0ZBQXNGO1FBQ3RGLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ25FLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNaLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLHNCQUFzQjtZQUN0QixPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQ0wsQ0FDSixFQUNELFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ2pELENBQUE7UUFFUSxXQUFNLEdBQXFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNoRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN6RixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3pELENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDcEIsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQTJCLENBQUMsQ0FBQTtnQkFDdkUsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDL0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNmLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNsQyxDQUFDO29CQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzVELENBQUMsQ0FBQyxFQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDVixDQUFBO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQ0osRUFDRCxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNqRCxDQUFBO1FBRVEsYUFBUSxHQUFHLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzlFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDeEMsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDakQsQ0FBQTtRQXVGRCxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUE7SUEvRXBELENBQUM7SUFFRCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2QixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFFRCxHQUFHO1FBQ0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFhO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDNUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNmLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN0RCxDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckIsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBYTtRQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUNuQixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUM3QixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FDaEQsQ0FBQTtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBYTtRQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQWE7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDbkIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDekUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3BELENBQUE7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQWEsRUFBRSxjQUF1QjtRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDdEUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2IsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDeEcsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FDUCxPQUFvRCxFQUNwRCxNQUFtRDtRQUVuRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlHLENBQUE7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM5QiwrREFBK0Q7WUFDL0QsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxPQUFNO1lBQ1YsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUE2QztJQUUzQyxPQUFPLENBQUMsZ0JBQWtDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFFakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUV6QyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBa0QsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDekMsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUN0QixDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVRLFVBQVUsQ0FBQyxnQkFBa0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuXG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBjYXRjaEVycm9yLFxuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmlsdGVyLFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIFJlcGxheVN1YmplY3QsXG4gICAgc2hhcmVSZXBsYXksXG4gICAgU3ViamVjdCxcbiAgICBTdWJzY3JpYmVyLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbCxcbiAgICB0YXAsXG4gICAgdGltZXJcbn0gZnJvbSBcInJ4anNcIlxuXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcImxvZGFzaC1lc1wiXG5cbmltcG9ydCB7IENvbm5lY3RQcm90b2NvbCwgZGVlcENsb25lLCBkZWVwRnJlZXplLCBpc0ZhbHN5IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHR5cGUgeyBNb2RlbCwgTW9kZWxSZWYgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHR5cGUgeyBEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi4vcHJvdmlkZXIvcHJvdmlkZXJcIlxuaW1wb3J0IHR5cGUgeyBRdWVyeVJlc3VsdCwgUXVlcnlXaXRoU2xpY2UsIFNsaWNlIH0gZnJvbSBcIi4uL3F1ZXJ5XCJcbmltcG9ydCB7IHF1ZXJ5U3ViamVjdCB9IGZyb20gXCIuLi9xdWVyeVwiXG5pbXBvcnQgeyB0eXBlIENvbGxlY3Rpb25TdG9yZSwgTWVtb3J5U3RvcmUsIHR5cGUgUGFydGlhbENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vc3RvcmVcIlxuXG5jb25zdCBERUJPVU5DRV9USU1FID0gNTBcblxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2U8VCBleHRlbmRzIE1vZGVsPiBleHRlbmRzIENka0RhdGFTb3VyY2U8VCB8IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBDb25uZWN0UHJvdG9jb2wge1xuICAgIHJlYWRvbmx5IGlzQnVzeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICAgIHJlYWRvbmx5IHRvdGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbiAgICByZWFkb25seSAjc2xpY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxTbGljZT4oMSlcbiAgICByZWFkb25seSBzbGljZSQ6IE9ic2VydmFibGU8U2xpY2U+ID0gdGhpcy4jc2xpY2UucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNsaWNlID0+IHRoaXMucHJvdmlkZXIuY2xhbXBTbGljZShzbGljZSkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc0VxdWFsKSxcbiAgICAgICAgbWFwKHNsaWNlID0+IGRlZXBGcmVlemUoZGVlcENsb25lKHNsaWNlKSkpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgI3JlbG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKVxuXG4gICAgcmVhZG9ubHkgI3F1ZXJ5OiBPYnNlcnZhYmxlPFF1ZXJ5V2l0aFNsaWNlPFQ+PiA9IGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgICBxdWVyeTogdGhpcy5xdWVyeSQsXG4gICAgICAgIHJlbG9hZDogbWVyZ2UodGhpcy4jcmVsb2FkLCB0aGlzLnByb3ZpZGVyLmNoYW5nZWQkKVxuICAgIH0pLnBpcGUoXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLiNzZXRCdXN5KHRydWUpKSxcbiAgICAgICAgLy8gVE9ETzogbWF5YmUgc2lsZW50IHJlc2V0IG9yIHByZXZlbnQgaXRlbXMkIGNoZW5nZXNcbiAgICAgICAgLy8gVE9ETzogYWx0ZXJuYXRpdmUgc29sdXRpb24gdXNlIGNhY2hlSWQsIGFuZCBxdWVyeSBpdGVtIGZyb20gc3RvcmUgd2l0aCB0aGlzIGNhY2hlSWRcbiAgICAgICAgc3dpdGNoTWFwKCh7IHF1ZXJ5IH0pID0+IHRoaXMuc3RvcmUuY2xlYXIoKS5waXBlKG1hcCgoKSA9PiBxdWVyeSkpKSxcbiAgICAgICAgc3dpdGNoTWFwKHF1ZXJ5ID0+XG4gICAgICAgICAgICB0aGlzLnNsaWNlJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChzbGljZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuI3NldEJ1c3kodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucXVlcnksIHNsaWNlIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPFBhcnRpYWxDb2xsZWN0aW9uPFQ+PiA9IHRoaXMuI3F1ZXJ5LnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+ICh0aGlzLnByb3ZpZGVyLmlzQXN5bmMgPyB0aW1lcihERUJPVU5DRV9USU1FKS5waXBlKG1hcCgoKSA9PiB2KSkgOiBvZih2KSkpLFxuICAgICAgICBzd2l0Y2hNYXAocXVlcnkgPT5cbiAgICAgICAgICAgIHRoaXMuc3RvcmUuaGFzU2xpY2UocXVlcnkuc2xpY2UpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaGFzU2xpY2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU2xpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFNsaWNlKHF1ZXJ5LnNsaWNlKS5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNzZXRCdXN5KHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5xdWVyeUxpc3QocXVlcnkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jc2V0QnVzeShmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHsgaXRlbXM6IFtdLCB0b3RhbDogdW5kZWZpbmVkIH0gc2F0aXNmaWVzIFF1ZXJ5UmVzdWx0PFQ+KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLiNzZXRCdXN5KGZhbHNlKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudG90YWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbCQubmV4dChyZXN1bHQudG90YWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuaW5zZXJ0U2xpY2UocXVlcnkuc2xpY2UsIHJlc3VsdC5pdGVtcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgaXNFbXB0eSQgPSBjb21iaW5lTGF0ZXN0KHsgYnVzeTogdGhpcy5pc0J1c3kkLCBpdGVtczogdGhpcy5pdGVtcyQgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IGJ1c3kgfSkgPT4gIWJ1c3kpLFxuICAgICAgICBtYXAoKHsgaXRlbXMgfSkgPT4gaXRlbXMuZXZlcnkoaXNGYWxzeSkpLFxuICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwcm92aWRlcjogRGF0YVByb3ZpZGVyPFQ+LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RvcmU6IENvbGxlY3Rpb25TdG9yZTxUPiA9IG5ldyBNZW1vcnlTdG9yZSgpLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcXVlcnkkID0gcXVlcnlTdWJqZWN0KFwibm9ybWFsXCIsIFwiZm9yY2VkXCIpXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKClcbiAgICB9XG5cbiAgICBzZXRTbGljZShzbGljZTogU2xpY2UpIHtcbiAgICAgICAgdGhpcy4jc2xpY2UubmV4dChzbGljZSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBhbGwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNsaWNlKHsgc3RhcnQ6IDAsIGVuZDogSW5maW5pdHkgfSlcbiAgICB9XG5cbiAgICByZWFsb2QoKSB7XG4gICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KClcbiAgICB9XG5cbiAgICBnZXRJdGVtKHJlZjogTW9kZWxSZWYpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVmbiA9IHRoaXMucHJvdmlkZXIubWV0YS5ub3JtYWxpemVSZWYocmVmKVxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXQocmVmbikucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIucXVlcnlJdGVtKHJlZm4pLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHJlc3VsdClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICB9XG5cbiAgICB3YXRjaEl0ZW0ocmVmOiBNb2RlbFJlZik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZWZuID0gdGhpcy5wcm92aWRlci5tZXRhLm5vcm1hbGl6ZVJlZihyZWYpXG4gICAgICAgIHJldHVybiB0aGlzLiNzdG9yZUZpcnN0KFxuICAgICAgICAgICAgcXVlcnkgPT4gdGhpcy5zdG9yZS5nZXQocmVmbiksXG4gICAgICAgICAgICBxdWVyeSA9PiB0aGlzLnByb3ZpZGVyLnF1ZXJ5SXRlbShyZWZuLCBxdWVyeSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGdldEl0ZW1Qb3NpdGlvbihyZWY6IE1vZGVsUmVmKTogT2JzZXJ2YWJsZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2F0Y2hJdGVtUG9zaXRpb24ocmVmKS5waXBlKHRha2UoMSkpXG4gICAgfVxuXG4gICAgd2F0Y2hJdGVtUG9zaXRpb24ocmVmOiBNb2RlbFJlZik6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlZm4gPSB0aGlzLnByb3ZpZGVyLm1ldGEubm9ybWFsaXplUmVmKHJlZilcbiAgICAgICAgcmV0dXJuIHRoaXMuI3N0b3JlRmlyc3QoXG4gICAgICAgICAgICBxdWVyeSA9PiB0aGlzLnN0b3JlLmluZGV4T2YocmVmbikucGlwZShtYXAoaSA9PiAoaSA8IDAgPyB1bmRlZmluZWQgOiBpKSkpLFxuICAgICAgICAgICAgcXVlcnkgPT4gdGhpcy5wcm92aWRlci5xdWVyeVBvc2l0aW9uKHJlZm4sIHF1ZXJ5KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmVhbG9kSXRlbShyZWY6IE1vZGVsUmVmLCBpbnNlcnRQb3NpdGlvbj86IG51bWJlcik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZWZuID0gdGhpcy5wcm92aWRlci5tZXRhLm5vcm1hbGl6ZVJlZihyZWYpXG4gICAgICAgIHJldHVybiB0aGlzLiNxdWVyeS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcChxdWVyeSA9PiB0aGlzLnByb3ZpZGVyLnF1ZXJ5SXRlbShyZWZuLCBxdWVyeSkucGlwZSh0YWtlKDEpKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0gIT0gbnVsbCA/IHRoaXMuc3RvcmUudXBkYXRlT3JJbnNlcnQocmVmbiwgaXRlbSwgaW5zZXJ0UG9zaXRpb24pLnBpcGUobWFwKCgpID0+IGl0ZW0pKSA6IG9mKGl0ZW0pXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjc3RvcmVGaXJzdDxYPihcbiAgICAgICAgc3RvcmVGbjogKHF1ZXJ5OiBRdWVyeVdpdGhTbGljZTxUPikgPT4gT2JzZXJ2YWJsZTxYPixcbiAgICAgICAgc2VsZkZuOiAocXVlcnk6IFF1ZXJ5V2l0aFNsaWNlPFQ+KSA9PiBPYnNlcnZhYmxlPFg+XG4gICAgKTogT2JzZXJ2YWJsZTxYPiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNxdWVyeS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcChxdWVyeSA9PiBzdG9yZUZuKHF1ZXJ5KS5waXBlKHN3aXRjaE1hcChyZXN1bHQgPT4gKHJlc3VsdCA9PSBudWxsID8gc2VsZkZuKHF1ZXJ5KSA6IG9mKHJlc3VsdCkpKSkpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICAjc2V0QnVzeShidXN5OiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVzeSQudmFsdWUgIT09IGJ1c3kpIHtcbiAgICAgICAgICAgIC8vIGRvbnQgc2V0IHRydWUgd2hlbiBub3QgYXN5bmMgcHJvdmlkZXIsIGJ1dCBmYWxzZSBpcyBhbHNvIHNldFxuICAgICAgICAgICAgaWYgKGJ1c3kgJiYgIXRoaXMucHJvdmlkZXIuaXNBc3luYykge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0J1c3kkLm5leHQoYnVzeSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNjdlN1YnMgPSBuZXcgTWFwPENvbGxlY3Rpb25WaWV3ZXIsIFN1YmplY3Q8dm9pZD4+KClcblxuICAgIG92ZXJyaWRlIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8cmVhZG9ubHkgKFQgfCB1bmRlZmluZWQpW10+IHtcbiAgICAgICAgY29uc3QgdW50aWwgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5zZXQoY29sbGVjdGlvblZpZXdlciwgdW50aWwpXG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPHJlYWRvbmx5IChUIHwgdW5kZWZpbmVkKVtdPikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3ViMSA9IGNvbGxlY3Rpb25WaWV3ZXIudmlld0NoYW5nZS5zdWJzY3JpYmUodGhpcy4jc2xpY2UpXG4gICAgICAgICAgICBjb25zdCBzdWIyID0gdGhpcy5pdGVtcyQuc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2N2U3Vicy5nZXQoY29sbGVjdGlvblZpZXdlcikgPT09IHVudGlsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3ViMS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgc3ViMi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUodGFrZVVudGlsKHVudGlsKSlcbiAgICB9XG5cbiAgICBvdmVycmlkZSBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICB9XG59XG4iXX0=
@@ -4,7 +4,7 @@ import { DataSource as DataSource$1 } from '@angular/cdk/collections';
4
4
  import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
5
5
  import { BehaviorSubject, Observable, combineLatest, map, shareReplay, take, of, ReplaySubject, switchMap, distinctUntilChanged, merge, timer, catchError, tap, filter, Subject, takeUntil, NEVER, finalize, throwError } from 'rxjs';
6
6
  import { BusyDirective } from '@ngutil/aria';
7
- import { flattenDepth, isEqual, intersection, flattenDeep } from 'lodash';
7
+ import { flattenDepth, isEqual, intersection, flattenDeep } from 'lodash-es';
8
8
  import { deepClone, deepFreeze, isPlainObject, isTruthy, isFalsy, toSorted } from '@ngutil/common';
9
9
 
10
10
  function pathGetterCompile(path) {