@elderbyte/ngx-starter 18.12.6 → 18.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +8 -2
- package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +7 -1
- package/esm2022/lib/common/i18n/entity/elder-multi-translate-loader.mjs +4 -4
- package/esm2022/lib/common/utils/signal-input.mjs +3 -0
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +3 -3
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +13 -21
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +2 -2
- package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +1 -1
- package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +1 -1
- package/fesm2022/elderbyte-ngx-starter.mjs +31 -26
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/utils/signal-input.d.ts +2 -0
- package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +9 -11
- package/package.json +1 -1
|
@@ -62,6 +62,9 @@ export class LocalListDataSource extends DataSourceBase {
|
|
|
62
62
|
* *
|
|
63
63
|
**************************************************************************/
|
|
64
64
|
findById(id) {
|
|
65
|
+
if (id === undefined || id === null) {
|
|
66
|
+
throw new Error('findById: id argument required!');
|
|
67
|
+
}
|
|
65
68
|
const found = this.data.find((d) => this.getId(d) === id);
|
|
66
69
|
if (found) {
|
|
67
70
|
return of(found);
|
|
@@ -71,6 +74,9 @@ export class LocalListDataSource extends DataSourceBase {
|
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
findByIds(ids) {
|
|
77
|
+
if (ids === undefined || ids === null) {
|
|
78
|
+
throw new Error('findByIds: ids array argument required!');
|
|
79
|
+
}
|
|
74
80
|
return forkJoin(ids.map((id) => this.findById(id)));
|
|
75
81
|
}
|
|
76
82
|
findAllFiltered(filters, sorts) {
|
|
@@ -109,7 +115,7 @@ export class LocalListDataSource extends DataSourceBase {
|
|
|
109
115
|
const newData = [...this.data];
|
|
110
116
|
const existingIndex = newData.findIndex((entity) => this.getId(entity) === id);
|
|
111
117
|
let created = false;
|
|
112
|
-
if (existingIndex
|
|
118
|
+
if (existingIndex === -1) {
|
|
113
119
|
newData.push(entity);
|
|
114
120
|
created = true;
|
|
115
121
|
}
|
|
@@ -144,4 +150,4 @@ export class LocalListDataSource extends DataSourceBase {
|
|
|
144
150
|
return null; // Use value as id if scalar
|
|
145
151
|
}
|
|
146
152
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbGlzdC1kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvbG9jYWwvbG9jYWwtbGlzdC1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVwQyxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFdkQsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGNBQWlCO0lBYzNEOzs7O2dGQUk0RTtJQUU1RTs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUNqQixVQUF5QixFQUN6QixTQUE2QyxFQUM3QyxXQUFtRDtRQUVuRCxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FDaEIsU0FBYyxFQUNkLFVBQXlCLEVBQ3pCLFNBQTZDLEVBQzdDLFdBQW1EO1FBRW5ELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FB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MEZBQTBGLENBQzNGLENBQUE7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUEsQ0FBQyw0QkFBNEI7SUFDMUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVycy9maWx0ZXInXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnLi4vLi4vc29ydCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgSUxpc3REYXRhU291cmNlIH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UnXG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IERhdGFTb3VyY2VDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlLWNoYW5nZS1ldmVudCdcbmltcG9ydCB7IERhdGFTb3VyY2VCYXNlIH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UtYmFzZSdcbmltcG9ydCB7IFNvcnRVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc29ydC11dGlsJ1xuaW1wb3J0IHsgRmlsdGVyVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZpbHRlci11dGlsJ1xuXG5leHBvcnQgY2xhc3MgTG9jYWxMaXN0RGF0YVNvdXJjZTxUPiBleHRlbmRzIERhdGFTb3VyY2VCYXNlPFQ+IGltcGxlbWVudHMgSUxpc3REYXRhU291cmNlPFQ+IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTb3J0OiAoZGF0YTogVFtdLCBzb3J0czogU29ydFtdKSA9PiBUW11cbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbEZpbHRlcjogKGRhdGE6IFRbXSwgZmlsdGVyczogRmlsdGVyW10pID0+IFRbXVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdGF0aWMgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtcHR5IGxvY2FsIGxpc3QgZGF0YS1zb3VyY2UuXG4gICAqIFlvdSBjYW4gc2V0IC8gbW9kaWZ5IGRhdGEgYnkgdXNpbmcgdGhlIGRhdGEgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAqIEBwYXJhbSBsb2NhbFNvcnRcbiAgICogQHBhcmFtIGxvY2FsRmlsdGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5PFQ+KFxuICAgIGlkUHJvcGVydHk6IHN0cmluZyB8IG51bGwsXG4gICAgbG9jYWxTb3J0PzogKGRhdGE6IFRbXSwgc29ydHM6IFNvcnRbXSkgPT4gVFtdLFxuICAgIGxvY2FsRmlsdGVyPzogKGRhdGE6IFRbXSwgZmlsdGVyczogRmlsdGVyW10pID0+IFRbXVxuICApOiBMb2NhbExpc3REYXRhU291cmNlPFQ+IHtcbiAgICByZXR1cm4gTG9jYWxMaXN0RGF0YVNvdXJjZS5mcm9tKFtdLCBpZFByb3BlcnR5LCBsb2NhbFNvcnQsIGxvY2FsRmlsdGVyKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tPFQ+KFxuICAgIGxvY2FsRGF0YTogVFtdLFxuICAgIGlkUHJvcGVydHk6IHN0cmluZyB8IG51bGwsXG4gICAgbG9jYWxTb3J0PzogKGRhdGE6IFRbXSwgc29ydHM6IFNvcnRbXSkgPT4gVFtdLFxuICAgIGxvY2FsRmlsdGVyPzogKGRhdGE6IFRbXSwgZmlsdGVyczogRmlsdGVyW10pID0+IFRbXVxuICApOiBMb2NhbExpc3REYXRhU291cmNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IExvY2FsTGlzdERhdGFTb3VyY2UobG9jYWxEYXRhLCBsb2NhbFNvcnQsIGxvY2FsRmlsdGVyLCBpZFByb3BlcnR5KVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9jYWxEYXRhOiBUW10sXG4gICAgbG9jYWxTb3J0OiAoZGF0YTogVFtdLCBzb3J0czogU29ydFtdKSA9PiBUW10sXG4gICAgbG9jYWxGaWx0ZXI6IChkYXRhOiBUW10sIGZpbHRlcnM6IEZpbHRlcltdKSA9PiBUW10sXG4gICAgaWRQcm9wZXJ0eTogc3RyaW5nIHwgbnVsbFxuICApIHtcbiAgICBzdXBlcihpZFByb3BlcnR5IHx8IExvY2FsTGlzdERhdGFTb3VyY2UuZ3Vlc3NJZFByb3BlcnR5KGxvY2FsRGF0YSkpXG4gICAgaWYgKCFsb2NhbERhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbG9jYWxEYXRhIG11c3Qgbm90IGJlIG51bGwhJylcbiAgICB9XG4gICAgdGhpcy5sb2NhbFNvcnQgPSBsb2NhbFNvcnQgfHwgU29ydFV0aWwuc29ydERhdGFcbiAgICB0aGlzLmxvY2FsRmlsdGVyID0gbG9jYWxGaWx0ZXIgfHwgRmlsdGVyVXRpbC5maWx0ZXJEYXRhXG4gICAgdGhpcy5kYXRhID0gbG9jYWxEYXRhXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhJC5nZXRWYWx1ZSgpXG4gIH1cblxuICBwdWJsaWMgc2V0IGRhdGEoZGF0YTogVFtdKSB7XG4gICAgdGhpcy5yZXBsYWNlQWxsKGRhdGEpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogSURhdGFTb3VyY2UgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEJ5SWQoaWQ6IGFueSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5kYXRhLmZpbmQoKGQpID0+IHRoaXMuZ2V0SWQoZCkgPT09IGlkKVxuICAgIGlmIChmb3VuZCkge1xuICAgICAgcmV0dXJuIG9mKGZvdW5kKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCBsb2NhbCBlbnRpdHkgYnkgaWQ6ICdcIiArIGlkICsgXCInXCIpKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJZHMoaWRzOiBhbnlbXSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKGlkcy5tYXAoKGlkKSA9PiB0aGlzLmZpbmRCeUlkKGlkKSkpXG4gIH1cblxuICBwdWJsaWMgZmluZEFsbEZpbHRlcmVkKGZpbHRlcnM/OiBGaWx0ZXJbXSwgc29ydHM/OiBTb3J0W10pOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiBvZih0aGlzLmRhdGEpLnBpcGUoXG4gICAgICBtYXAoKGRhdGEpID0+IHRoaXMubG9jYWxGaWx0ZXIoZGF0YSwgZmlsdGVycykpLFxuICAgICAgbWFwKChkYXRhKSA9PiB0aGlzLmxvY2FsU29ydChkYXRhLCBzb3J0cykpXG4gICAgKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHJlcGxhY2VBbGwoZGF0YTogVFtdKSB7XG4gICAgdGhpcy5zaWxlbnRSZXBsYWNlRGF0YShkYXRhKVxuICAgIHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC51bmtub3duQ2hhbmdlcygpKVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZShlbnRpdHk6IFQpIHtcbiAgICB0aGlzLmRlbGV0ZUFsbChbZW50aXR5XSlcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVBbGwodG9EZWxldGU6IFRbXSkge1xuICAgIGlmICh0b0RlbGV0ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlQWxsQnlJZCh0b0RlbGV0ZS5tYXAoKGUpID0+IHRoaXMuZ2V0SWQoZSkpKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVBbGxCeUlkKGlkc1RvRGVsZXRlOiBhbnlbXSkge1xuICAgIGlmIChpZHNUb0RlbGV0ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmRhdGFcbiAgICAgIGNvbnN0IGlkc1RvRGVsZXRlU2V0ID0gbmV3IFNldChpZHNUb0RlbGV0ZSlcbiAgICAgIHRoaXMuc2lsZW50UmVwbGFjZURhdGEoZXhpc3RpbmcuZmlsdGVyKChlKSA9PiAhaWRzVG9EZWxldGVTZXQuaGFzKHRoaXMuZ2V0SWQoZSkpKSlcbiAgICAgIHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5kZWxldGVkKGlkc1RvRGVsZXRlKSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFsbCh0b1NhdmU6IFRbXSkge1xuICAgIHRvU2F2ZS5mb3JFYWNoKChlbnRpdHkpID0+IHRoaXMuc2F2ZShlbnRpdHkpKVxuICB9XG5cbiAgcHVibGljIHNhdmUoZW50aXR5OiBUKSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldElkKGVudGl0eSlcbiAgICBjb25zdCBuZXdEYXRhID0gWy4uLnRoaXMuZGF0YV1cbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gbmV3RGF0YS5maW5kSW5kZXgoKGVudGl0eSkgPT4gdGhpcy5nZXRJZChlbnRpdHkpID09PSBpZClcblxuICAgIGxldCBjcmVhdGVkID0gZmFsc2VcbiAgICBpZiAoZXhpc3RpbmdJbmRleCA9PSAtMSkge1xuICAgICAgbmV3RGF0YS5wdXNoKGVudGl0eSlcbiAgICAgIGNyZWF0ZWQgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0RhdGFbZXhpc3RpbmdJbmRleF0gPSBlbnRpdHlcbiAgICB9XG4gICAgdGhpcy5zaWxlbnRSZXBsYWNlRGF0YShuZXdEYXRhKVxuICAgIHRoaXMucHVibGlzaENoYW5nZUV2ZW50KFxuICAgICAgY3JlYXRlZCA/IERhdGFTb3VyY2VDaGFuZ2VFdmVudC5jcmVhdGVkKFtlbnRpdHldKSA6IERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChbZW50aXR5XSlcbiAgICApXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHNpbGVudFJlcGxhY2VEYXRhKG5ld0RhdGE6IFRbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSQubmV4dChuZXdEYXRhKVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ3Vlc3NJZFByb3BlcnR5PFQ+KGxvY2FsRGF0YTogVFtdKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0xvY2FsTGlzdERhdGFTb3VyY2UnKVxuXG4gICAgaWYgKGxvY2FsRGF0YSAmJiBsb2NhbERhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2FtcGxlID0gbG9jYWxEYXRhWzBdXG4gICAgICBpZiAodHlwZW9mIHNhbXBsZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHNhbXBsZS5oYXNPd25Qcm9wZXJ0eSgnaWQnKSkge1xuICAgICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgICAgJ0RhdGFTb3VyY2Ugd2l0aG91dCBkZWZpbmVkIGlkLXByb3BlcnR5ID0+IGF1dG9kZXRlY3RlZCBwcm9wZXJ0eSBpZC1wcm9wZXJ0eSBhcyBcImlkXCInXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiAnaWQnIC8vIFVzZSBpZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgICAgJ0xvY2FsIERhdGFTb3VyY2UgY3JlYXRlZCB3aXRob3V0IGRlZmluZWQgaWQtcHJvcGVydHkgYW5kIG9iamVjdHMuIFVzaW5nIG9iamVjdCBlcXVhbGl0eSEnXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsIC8vIFVzZSB2YWx1ZSBhcyBpZCBpZiBzY2FsYXJcbiAgfVxufVxuIl19
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbGlzdC1kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvbG9jYWwvbG9jYWwtbGlzdC1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVwQyxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFdkQsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGNBQWlCO0lBYzNEOzs7O2dGQUk0RTtJQUU1RTs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUNqQixVQUF5QixFQUN6QixTQUE2QyxFQUM3QyxXQUFtRDtRQUVuRCxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FDaEIsU0FBYyxFQUNkLFVBQXlCLEVBQ3pCLFNBQTZDLEVBQzdDLFdBQW1EO1FBRW5ELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FB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WUFDM0IsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQ04scUZBQXFGLENBQ3RGLENBQUE7b0JBQ0QsT0FBTyxJQUFJLENBQUEsQ0FBQyxTQUFTO2dCQUN2QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sR0FBRyxDQUFDLElBQUksQ0FDTiwwRkFBMEYsQ0FDM0YsQ0FBQTtnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQSxDQUFDLDRCQUE0QjtJQUMxQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXJzL2ZpbHRlcidcbmltcG9ydCB7IFNvcnQgfSBmcm9tICcuLi8uLi9zb3J0J1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBJTGlzdERhdGFTb3VyY2UgfSBmcm9tICcuLi9kYXRhLXNvdXJjZSdcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgRGF0YVNvdXJjZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UtY2hhbmdlLWV2ZW50J1xuaW1wb3J0IHsgRGF0YVNvdXJjZUJhc2UgfSBmcm9tICcuLi9kYXRhLXNvdXJjZS1iYXNlJ1xuaW1wb3J0IHsgU29ydFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3J0LXV0aWwnXG5pbXBvcnQgeyBGaWx0ZXJVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZmlsdGVyLXV0aWwnXG5cbmV4cG9ydCBjbGFzcyBMb2NhbExpc3REYXRhU291cmNlPFQ+IGV4dGVuZHMgRGF0YVNvdXJjZUJhc2U8VD4gaW1wbGVtZW50cyBJTGlzdERhdGFTb3VyY2U8VD4ge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFNvcnQ6IChkYXRhOiBUW10sIHNvcnRzOiBTb3J0W10pID0+IFRbXVxuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsRmlsdGVyOiAoZGF0YTogVFtdLCBmaWx0ZXJzOiBGaWx0ZXJbXSkgPT4gVFtdXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFN0YXRpYyBCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZW1wdHkgbG9jYWwgbGlzdCBkYXRhLXNvdXJjZS5cbiAgICogWW91IGNhbiBzZXQgLyBtb2RpZnkgZGF0YSBieSB1c2luZyB0aGUgZGF0YSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIGlkUHJvcGVydHlcbiAgICogQHBhcmFtIGxvY2FsU29ydFxuICAgKiBAcGFyYW0gbG9jYWxGaWx0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHk8VD4oXG4gICAgaWRQcm9wZXJ0eTogc3RyaW5nIHwgbnVsbCxcbiAgICBsb2NhbFNvcnQ/OiAoZGF0YTogVFtdLCBzb3J0czogU29ydFtdKSA9PiBUW10sXG4gICAgbG9jYWxGaWx0ZXI/OiAoZGF0YTogVFtdLCBmaWx0ZXJzOiBGaWx0ZXJbXSkgPT4gVFtdXG4gICk6IExvY2FsTGlzdERhdGFTb3VyY2U8VD4ge1xuICAgIHJldHVybiBMb2NhbExpc3REYXRhU291cmNlLmZyb20oW10sIGlkUHJvcGVydHksIGxvY2FsU29ydCwgbG9jYWxGaWx0ZXIpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb208VD4oXG4gICAgbG9jYWxEYXRhOiBUW10sXG4gICAgaWRQcm9wZXJ0eTogc3RyaW5nIHwgbnVsbCxcbiAgICBsb2NhbFNvcnQ/OiAoZGF0YTogVFtdLCBzb3J0czogU29ydFtdKSA9PiBUW10sXG4gICAgbG9jYWxGaWx0ZXI/OiAoZGF0YTogVFtdLCBmaWx0ZXJzOiBGaWx0ZXJbXSkgPT4gVFtdXG4gICk6IExvY2FsTGlzdERhdGFTb3VyY2U8VD4ge1xuICAgIHJldHVybiBuZXcgTG9jYWxMaXN0RGF0YVNvdXJjZShsb2NhbERhdGEsIGxvY2FsU29ydCwgbG9jYWxGaWx0ZXIsIGlkUHJvcGVydHkpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2NhbERhdGE6IFRbXSxcbiAgICBsb2NhbFNvcnQ6IChkYXRhOiBUW10sIHNvcnRzOiBTb3J0W10pID0+IFRbXSxcbiAgICBsb2NhbEZpbHRlcjogKGRhdGE6IFRbXSwgZmlsdGVyczogRmlsdGVyW10pID0+IFRbXSxcbiAgICBpZFByb3BlcnR5OiBzdHJpbmcgfCBudWxsXG4gICkge1xuICAgIHN1cGVyKGlkUHJvcGVydHkgfHwgTG9jYWxMaXN0RGF0YVNvdXJjZS5ndWVzc0lkUHJvcGVydHkobG9jYWxEYXRhKSlcbiAgICBpZiAoIWxvY2FsRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdsb2NhbERhdGEgbXVzdCBub3QgYmUgbnVsbCEnKVxuICAgIH1cbiAgICB0aGlzLmxvY2FsU29ydCA9IGxvY2FsU29ydCB8fCBTb3J0VXRpbC5zb3J0RGF0YVxuICAgIHRoaXMubG9jYWxGaWx0ZXIgPSBsb2NhbEZpbHRlciB8fCBGaWx0ZXJVdGlsLmZpbHRlckRhdGFcbiAgICB0aGlzLmRhdGEgPSBsb2NhbERhdGFcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLmRhdGEkLmdldFZhbHVlKClcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGF0YShkYXRhOiBUW10pIHtcbiAgICB0aGlzLnJlcGxhY2VBbGwoZGF0YSlcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBJRGF0YVNvdXJjZSBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBmaW5kQnlJZChpZDogYW55KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmluZEJ5SWQ6IGlkIGFyZ3VtZW50IHJlcXVpcmVkIScpXG4gICAgfVxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5kYXRhLmZpbmQoKGQpID0+IHRoaXMuZ2V0SWQoZCkgPT09IGlkKVxuICAgIGlmIChmb3VuZCkge1xuICAgICAgcmV0dXJuIG9mKGZvdW5kKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCBsb2NhbCBlbnRpdHkgYnkgaWQ6ICdcIiArIGlkICsgXCInXCIpKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJZHMoaWRzOiBhbnlbXSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlkcyA9PT0gdW5kZWZpbmVkIHx8IGlkcyA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmaW5kQnlJZHM6IGlkcyBhcnJheSBhcmd1bWVudCByZXF1aXJlZCEnKVxuICAgIH1cbiAgICByZXR1cm4gZm9ya0pvaW4oaWRzLm1hcCgoaWQpID0+IHRoaXMuZmluZEJ5SWQoaWQpKSlcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQWxsRmlsdGVyZWQoZmlsdGVycz86IEZpbHRlcltdLCBzb3J0cz86IFNvcnRbXSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuZGF0YSkucGlwZShcbiAgICAgIG1hcCgoZGF0YSkgPT4gdGhpcy5sb2NhbEZpbHRlcihkYXRhLCBmaWx0ZXJzKSksXG4gICAgICBtYXAoKGRhdGEpID0+IHRoaXMubG9jYWxTb3J0KGRhdGEsIHNvcnRzKSlcbiAgICApXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgcmVwbGFjZUFsbChkYXRhOiBUW10pIHtcbiAgICB0aGlzLnNpbGVudFJlcGxhY2VEYXRhKGRhdGEpXG4gICAgdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50LnVua25vd25DaGFuZ2VzKCkpXG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKGVudGl0eTogVCkge1xuICAgIHRoaXMuZGVsZXRlQWxsKFtlbnRpdHldKVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUFsbCh0b0RlbGV0ZTogVFtdKSB7XG4gICAgaWYgKHRvRGVsZXRlPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWxldGVBbGxCeUlkKHRvRGVsZXRlLm1hcCgoZSkgPT4gdGhpcy5nZXRJZChlKSkpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUFsbEJ5SWQoaWRzVG9EZWxldGU6IGFueVtdKSB7XG4gICAgaWYgKGlkc1RvRGVsZXRlPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZGF0YVxuICAgICAgY29uc3QgaWRzVG9EZWxldGVTZXQgPSBuZXcgU2V0KGlkc1RvRGVsZXRlKVxuICAgICAgdGhpcy5zaWxlbnRSZXBsYWNlRGF0YShleGlzdGluZy5maWx0ZXIoKGUpID0+ICFpZHNUb0RlbGV0ZVNldC5oYXModGhpcy5nZXRJZChlKSkpKVxuICAgICAgdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50LmRlbGV0ZWQoaWRzVG9EZWxldGUpKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzYXZlQWxsKHRvU2F2ZTogVFtdKSB7XG4gICAgdG9TYXZlLmZvckVhY2goKGVudGl0eSkgPT4gdGhpcy5zYXZlKGVudGl0eSkpXG4gIH1cblxuICBwdWJsaWMgc2F2ZShlbnRpdHk6IFQpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0SWQoZW50aXR5KVxuICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4udGhpcy5kYXRhXVxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBuZXdEYXRhLmZpbmRJbmRleCgoZW50aXR5KSA9PiB0aGlzLmdldElkKGVudGl0eSkgPT09IGlkKVxuXG4gICAgbGV0IGNyZWF0ZWQgPSBmYWxzZVxuICAgIGlmIChleGlzdGluZ0luZGV4ID09PSAtMSkge1xuICAgICAgbmV3RGF0YS5wdXNoKGVudGl0eSlcbiAgICAgIGNyZWF0ZWQgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0RhdGFbZXhpc3RpbmdJbmRleF0gPSBlbnRpdHlcbiAgICB9XG4gICAgdGhpcy5zaWxlbnRSZXBsYWNlRGF0YShuZXdEYXRhKVxuICAgIHRoaXMucHVibGlzaENoYW5nZUV2ZW50KFxuICAgICAgY3JlYXRlZCA/IERhdGFTb3VyY2VDaGFuZ2VFdmVudC5jcmVhdGVkKFtlbnRpdHldKSA6IERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChbZW50aXR5XSlcbiAgICApXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHNpbGVudFJlcGxhY2VEYXRhKG5ld0RhdGE6IFRbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSQubmV4dChuZXdEYXRhKVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ3Vlc3NJZFByb3BlcnR5PFQ+KGxvY2FsRGF0YTogVFtdKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0xvY2FsTGlzdERhdGFTb3VyY2UnKVxuXG4gICAgaWYgKGxvY2FsRGF0YSAmJiBsb2NhbERhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2FtcGxlID0gbG9jYWxEYXRhWzBdXG4gICAgICBpZiAodHlwZW9mIHNhbXBsZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHNhbXBsZS5oYXNPd25Qcm9wZXJ0eSgnaWQnKSkge1xuICAgICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgICAgJ0RhdGFTb3VyY2Ugd2l0aG91dCBkZWZpbmVkIGlkLXByb3BlcnR5ID0+IGF1dG9kZXRlY3RlZCBwcm9wZXJ0eSBpZC1wcm9wZXJ0eSBhcyBcImlkXCInXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiAnaWQnIC8vIFVzZSBpZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgICAgJ0xvY2FsIERhdGFTb3VyY2UgY3JlYXRlZCB3aXRob3V0IGRlZmluZWQgaWQtcHJvcGVydHkgYW5kIG9iamVjdHMuIFVzaW5nIG9iamVjdCBlcXVhbGl0eSEnXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsIC8vIFVzZSB2YWx1ZSBhcyBpZCBpZiBzY2FsYXJcbiAgfVxufVxuIl19
|
|
@@ -51,10 +51,16 @@ export class RestClient extends DataSourceBase {
|
|
|
51
51
|
* *
|
|
52
52
|
**************************************************************************/
|
|
53
53
|
findById(id, params) {
|
|
54
|
+
if (id === undefined || id === null) {
|
|
55
|
+
throw new Error('findById: id argument required!');
|
|
56
|
+
}
|
|
54
57
|
params = HttpParamsBuilder.start(params).build();
|
|
55
58
|
return this.http.get(this.getEntityUrl(id), { params: params });
|
|
56
59
|
}
|
|
57
60
|
findByIds(ids, params) {
|
|
61
|
+
if (ids === undefined || ids === null) {
|
|
62
|
+
throw new Error('findByIds: ids array argument required!');
|
|
63
|
+
}
|
|
58
64
|
this._logger.warn('Very inefficient findByIds handling ' + ids.length);
|
|
59
65
|
return forkJoin(ids.map((id) => this.findById(id, params)));
|
|
60
66
|
}
|
|
@@ -281,4 +287,4 @@ export class RestClientContinuable extends RestClient {
|
|
|
281
287
|
}, []));
|
|
282
288
|
}
|
|
283
289
|
}
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhc291cmNlL3Jlc3QvcmVzdC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxFQUFRLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFPN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQVksVUFBNkI7UUFIbEMsWUFBTyxHQUFHLElBQUksQ0FBQTtRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFHckIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7WUFDbkMsQ0FBQztZQUNELElBQUks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QyxPQUFrQixFQUFFLEtBQWMsRUFBRSxNQUFtQjtRQUNyRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN0RixNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNqQiw4Q0FBOEM7WUFDOUMsT0FBTyxPQUFPLENBQUMscUJBQXFCLENBQUMsd0ZBQXdGO2dCQUMzSCxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQ3BFLE1BQU0sQ0FDUDtnQkFDSCxDQUFDLENBQUMsS0FBSyxDQUFBO1FBQ1gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ2pDLE1BQU0sQ0FDSixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQTtZQUNwQixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsRUFDSSxFQUFFLENBQ1IsQ0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgRU1QVFksIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBleHBhbmQsIG1hcCwgcmVkdWNlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEh0dHBQYXJhbXNCdWlsZGVyIH0gZnJvbSAnLi4vLi4vaHR0cC1wYXJhbXMtYnVpbGRlcidcbmltcG9ydCB7IFNvcnQgfSBmcm9tICcuLi8uLi9zb3J0J1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVycy9maWx0ZXInXG5pbXBvcnQgeyBQYWdlLCBQYWdlYWJsZSB9IGZyb20gJy4uLy4uL3BhZ2UnXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBDb250aW51YWJsZUxpc3RpbmcgfSBmcm9tICcuLi8uLi9jb250aW51YWJsZS1saXN0aW5nJ1xuaW1wb3J0IHsgVG9rZW5DaHVua1JlcXVlc3QgfSBmcm9tICcuLi8uLi90b2tlbi1jaHVuay1yZXF1ZXN0J1xuaW1wb3J0IHtcbiAgSUNvbnRpbnVhYmxlRGF0YVNvdXJjZSxcbiAgSURhdGFTb3VyY2UsXG4gIElMaXN0RGF0YVNvdXJjZSxcbiAgSVBhZ2VkRGF0YVNvdXJjZSxcbn0gZnJvbSAnLi4vZGF0YS1zb3VyY2UnXG5pbXBvcnQgeyBCYXRjaGVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYmF0Y2hlcidcbmltcG9ydCB7IERhdGFTb3VyY2VDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlLWNoYW5nZS1ldmVudCdcbmltcG9ydCB7IERhdGFTb3VyY2VCYXNlIH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UtYmFzZSdcblxuZXhwb3J0IGNsYXNzIEludGVybmFsUmVzdENsaWVudENvbmZpZyB7XG4gIHB1YmxpYyBpZEZpZWxkID0gJ2lkJ1xuICBwdWJsaWMgaWRzUGFyYW0gPSAnaWRzJ1xuXG4gIGNvbnN0cnVjdG9yKHVzZXJDb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnKSB7XG4gICAgaWYgKHVzZXJDb25maWcpIHtcbiAgICAgIGlmICh1c2VyQ29uZmlnLmlkRmllbGQpIHtcbiAgICAgICAgdGhpcy5pZEZpZWxkID0gdXNlckNvbmZpZy5pZEZpZWxkXG4gICAgICB9XG4gICAgICBpZiAodXNlckNvbmZpZy5pZHNQYXJhbSkge1xuICAgICAgICB0aGlzLmlkc1BhcmFtID0gdXNlckNvbmZpZy5pZHNQYXJhbVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFsbG93cyB0byBjdXN0b21pemUgdGhlIHJlc3QgY2xpZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50Q29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBmaWVsZCB0byB1c2UgYXMgaWQuIERlZmF1bHRzIHRvICdpZCcuXG4gICAqL1xuICBwdWJsaWMgaWRGaWVsZD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgcXVlcnkgcGFyYW0gdG8gdXNlIGZvciBtdWx0aXBsZSBpZHMuIERlZmF1bHRzIHRvICdpZHMnXG4gICAqL1xuICBwdWJsaWMgaWRzUGFyYW0/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnQ8VCwgVElEPiBleHRlbmRzIERhdGFTb3VyY2VCYXNlPFQ+IGltcGxlbWVudHMgSURhdGFTb3VyY2U8VD4ge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWc6IEludGVybmFsUmVzdENsaWVudENvbmZpZ1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXN0RW5kcG9pbnQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnXG4gICkge1xuICAgIHN1cGVyKG5ldyBJbnRlcm5hbFJlc3RDbGllbnRDb25maWcoY29uZmlnKS5pZEZpZWxkKVxuICAgIHRoaXMuY29uZmlnID0gbmV3IEludGVybmFsUmVzdENsaWVudENvbmZpZyhjb25maWcpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEJ5SWQoaWQ6IFRJRCwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHBhcmFtcyA9IEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcykuYnVpbGQoKVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHRoaXMuZ2V0RW50aXR5VXJsKGlkKSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkcyhpZHM6IGFueVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICB0aGlzLl9sb2dnZXIud2FybignVmVyeSBpbmVmZmljaWVudCBmaW5kQnlJZHMgaGFuZGxpbmcgJyArIGlkcy5sZW5ndGgpXG4gICAgcmV0dXJuIGZvcmtKb2luKGlkcy5tYXAoKGlkKSA9PiB0aGlzLmZpbmRCeUlkKGlkLCBwYXJhbXMpKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG9yIFVwZGF0ZXMgdGhlIGdpdmVuIGVudGl0eSBkZXBlbmRpbmcgaWYgaXQgYWxyZWFkeSBoYXMgYSB2YWxpZCBpZC5cbiAgICovXG4gIHB1YmxpYyBzYXZlKGVudGl0eTogVCwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJZChlbnRpdHkpXG4gICAgcmV0dXJuIGlkID8gdGhpcy51cGRhdGUoZW50aXR5LCBwYXJhbXMpIDogdGhpcy5jcmVhdGUoZW50aXR5LCBwYXJhbXMpXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlPFRDID0gVD4obmV3RW50aXR5OiBUQywgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PFQ+KHRoaXMucmVzdEVuZHBvaW50LCBuZXdFbnRpdHksIHtcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFwKChlKSA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChEYXRhU291cmNlQ2hhbmdlRXZlbnQuY3JlYXRlZChbZV0pKSkpXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlPFRFbnRpdHlVcGRhdGU+KHVwZGF0ZTogVEVudGl0eVVwZGF0ZSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQ8VD4odGhpcy5nZXRFbnRpdHlVcmxCeSg8VD4oPHVua25vd24+dXBkYXRlKSksIHVwZGF0ZSwge1xuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YXAoKGUpID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChbZV0pKSkpXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWxsPFRFbnRpdHlVcGRhdGU+KFxuICAgIHVwZGF0ZWRFbnRpdGllczogVEVudGl0eVVwZGF0ZVtdLFxuICAgIHBhcmFtcz86IEh0dHBQYXJhbXNcbiAgKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0PFRbXT4odGhpcy5yZXN0RW5kcG9pbnQsIHVwZGF0ZWRFbnRpdGllcywge1xuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YXAoKGVudGl0aWVzKSA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChEYXRhU291cmNlQ2hhbmdlRXZlbnQubW9kaWZpZWQoZW50aXRpZXMpKSkpXG4gIH1cblxuICBwdWJsaWMgZGVsZXRlKGVudGl0eTogVCwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmRlbGV0ZSh0aGlzLmdldEVudGl0eVVybEJ5KGVudGl0eSksIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChEYXRhU291cmNlQ2hhbmdlRXZlbnQuZGVsZXRlZChbdGhpcy5nZXRJZChlbnRpdHkpXSkpKSlcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVBbGwoZW50aXRpZXM6IFRbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaWRzID0gZW50aXRpZXMubWFwKChlKSA9PiBTdHJpbmcodGhpcy5nZXRJZChlKSkpXG5cbiAgICBjb25zdCBtYXhCYXRjaFNpemUgPSAxMDBcbiAgICBjb25zdCBkZWxldGVSZXF1ZXN0cyA9IEJhdGNoZXIuYmF0Y2hNYXAoaWRzLCBtYXhCYXRjaFNpemUsIChiYXRjaCkgPT5cbiAgICAgIHRoaXMuZGVsZXRlSWRCYXRjaChiYXRjaCwgcGFyYW1zKVxuICAgIClcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoXG4gICAgICAnRGVsZXRpbmcgJyArIGVudGl0aWVzLmxlbmd0aCArICcgaW4gJyArIGRlbGV0ZVJlcXVlc3RzLmxlbmd0aCArICcgYmF0Y2hlczogJyxcbiAgICAgIGRlbGV0ZVJlcXVlc3RzXG4gICAgKVxuICAgIHJldHVybiBmb3JrSm9pbihkZWxldGVSZXF1ZXN0cylcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdWIgUmVzb3VyY2UgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdWJSZXNvdXJjZUxpc3Q8VFMsIFRTSUQ+KFxuICAgIHBhcmVudDogVCxcbiAgICBzdWJQYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnPzogUmVzdENsaWVudENvbmZpZ1xuICApOiBSZXN0Q2xpZW50TGlzdDxUUywgVFNJRD4ge1xuICAgIHJldHVybiBuZXcgUmVzdENsaWVudExpc3QodGhpcy5nZXRFbnRpdHlVcmxCeShwYXJlbnQpICsgJy8nICsgc3ViUGF0aCwgdGhpcy5odHRwLCBjb25maWcpXG4gIH1cblxuICBwdWJsaWMgc3ViUmVzb3VyY2VQYWdlZDxUUywgVFNJRD4oXG4gICAgcGFyZW50OiBULFxuICAgIHN1YlBhdGg6IHN0cmluZyxcbiAgICBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnXG4gICk6IFJlc3RDbGllbnRQYWdlZDxUUywgVFNJRD4ge1xuICAgIHJldHVybiBuZXcgUmVzdENsaWVudFBhZ2VkKHRoaXMuZ2V0RW50aXR5VXJsQnkocGFyZW50KSArICcvJyArIHN1YlBhdGgsIHRoaXMuaHR0cCwgY29uZmlnKVxuICB9XG5cbiAgcHVibGljIHN1YlJlc291cmNlQ29udGludWFibGU8VFMsIFRTSUQ+KFxuICAgIHBhcmVudDogVCxcbiAgICBzdWJQYXRoOiBzdHJpbmcsXG4gICAgY29uZmlnPzogUmVzdENsaWVudENvbmZpZ1xuICApOiBSZXN0Q2xpZW50Q29udGludWFibGU8VFMsIFRTSUQ+IHtcbiAgICByZXR1cm4gbmV3IFJlc3RDbGllbnRDb250aW51YWJsZSh0aGlzLmdldEVudGl0eVVybEJ5KHBhcmVudCkgKyAnLycgKyBzdWJQYXRoLCB0aGlzLmh0dHAsIGNvbmZpZylcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm90ZWN0ZWQgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBwYXRjaEludGVybmFsPFA+KGlkOiBUSUQsIGVudGl0eVBhdGNoOiBQLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBhdGNoPFQ+KHRoaXMuZ2V0RW50aXR5VXJsKGlkKSwgZW50aXR5UGF0Y2gsIHtcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFwKChlKSA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChEYXRhU291cmNlQ2hhbmdlRXZlbnQubW9kaWZpZWQoW2VdKSkpKVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhdGNoQWxsSW50ZXJuYWw8UD4oZW50aXR5UGF0Y2hlczogUFtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucGF0Y2g8VFtdPih0aGlzLnJlc3RFbmRwb2ludCwgZW50aXR5UGF0Y2hlcywge1xuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YXAoKGUpID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChlKSkpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFN3aXRjaCB0byBwdWJsaXNoQ2hhbmdlRXZlbnRcbiAgICovXG4gIHByb3RlY3RlZCBvbkxvY2FsQ2hhbmdlZChlbnRpdHk/OiBUKTogdm9pZCB7XG4gICAgdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50LnVua25vd25DaGFuZ2VzKCkpXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RW50aXR5VXJsQnkoZW50aXR5OiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHlVcmwodGhpcy5nZXRJZChlbnRpdHkpKVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVudGl0eVVybChpZDogVElEKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXN0RW5kcG9pbnQgKyAnLycgKyBpZFxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIGdpdmVuIGlkcyBpbiBhIGJhdGNoIGNhbGwuXG4gICAqIE5vdGUgdGhhdCBkdWUgSFRUUCBSZXF1ZXN0IFVSSSBsaW1pdGF0aW9ucyxcbiAgICogdGhlIG51bWJlciBvZiBpZHMgdGhhdCBjYW4gYmUgZGVsZXRlZCBpbiBhIHNpbmdsZSBiYXRjaCBpc1xuICAgKiBsaW1pdGVkIChhcm91bmQgMTUwLCBkZXBlbmRpbmcgb24gaWQgbGVuZ3RoLCBzaW5jZSB0aGV5IGFyZVxuICAgKiBwYXJ0IG9mIHRoZSByZXF1ZXN0IHVyaSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBkZWxldGVJZEJhdGNoKGlkczogc3RyaW5nW10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBIdHRwUGFyYW1zQnVpbGRlci5zdGFydChwYXJhbXMpXG4gICAgYnVpbGRlci5hcHBlbmRGaWx0ZXIobmV3IEZpbHRlcih0aGlzLmNvbmZpZy5pZHNQYXJhbSwgaWRzKSlcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZGVsZXRlKHRoaXMucmVzdEVuZHBvaW50LCB7XG4gICAgICAgIHBhcmFtczogYnVpbGRlci5idWlsZCgpLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50LmRlbGV0ZWQoaWRzKSkpKVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50TGlzdDxULCBUSUQ+IGV4dGVuZHMgUmVzdENsaWVudDxULCBUSUQ+IGltcGxlbWVudHMgSUxpc3REYXRhU291cmNlPFQ+IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IocmVzdEVuZHBvaW50OiBzdHJpbmcsIGh0dHA6IEh0dHBDbGllbnQsIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWcpIHtcbiAgICBzdXBlcihyZXN0RW5kcG9pbnQsIGh0dHAsIGNvbmZpZylcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBmaW5kQWxsRmlsdGVyZWQoZmlsdGVycz86IEZpbHRlcltdLCBzb3J0cz86IFNvcnRbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFsbChcbiAgICAgIEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcykuYXBwZW5kRmlsdGVycyhmaWx0ZXJzKS5hcHBlbmRTb3J0cyhzb3J0cykuYnVpbGQoKVxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJZHMoaWRzOiBhbnlbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbEZpbHRlcmVkKFtuZXcgRmlsdGVyKHRoaXMuY29uZmlnLmlkc1BhcmFtLCBpZHMpXSwgW10sIHBhcmFtcylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKFtdKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kQWxsKHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFRbXT4odGhpcy5yZXN0RW5kcG9pbnQsIHtcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnRQYWdlZDxULCBUSUQ+IGV4dGVuZHMgUmVzdENsaWVudDxULCBUSUQ+IGltcGxlbWVudHMgSVBhZ2VkRGF0YVNvdXJjZTxUPiB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKHJlc3RFbmRwb2ludDogc3RyaW5nLCBodHRwOiBIdHRwQ2xpZW50LCBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnKSB7XG4gICAgc3VwZXIocmVzdEVuZHBvaW50LCBodHRwLCBjb25maWcpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEFsbFBhZ2VkKFxuICAgIHBhZ2VhYmxlOiBQYWdlYWJsZSxcbiAgICBmaWx0ZXJzPzogRmlsdGVyW10sXG4gICAgcGFyYW1zPzogSHR0cFBhcmFtc1xuICApOiBPYnNlcnZhYmxlPFBhZ2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRQYWdlZCh0aGlzLnJlc3RFbmRwb2ludCwgcGFnZWFibGUsIGZpbHRlcnMsIHBhcmFtcylcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJZHMoaWRzOiBhbnlbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbFBhZ2VkKFxuICAgICAgICBuZXcgUGFnZWFibGUoMCwgaWRzLmxlbmd0aCksXG4gICAgICAgIFtuZXcgRmlsdGVyKHRoaXMuY29uZmlnLmlkc1BhcmFtLCBpZHMpXSxcbiAgICAgICAgcGFyYW1zXG4gICAgICApLnBpcGUobWFwKChwYWdlKSA9PiBwYWdlLmNvbnRlbnQpKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoW10pXG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlcXVlc3RlZCBkYXRhIHBhZ2UgYXMgUGFnZTxUPlxuICAgKiBAcGFyYW0gdXJsIFRoZSByZXNvdXJjZSB1cmxcbiAgICogQHBhcmFtIHBhZ2VhYmxlIFRoZSBwYWdlIHJlcXVlc3RcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGZpbHRlcnNTbmFwc2hvdCByZXF1ZXN0XG4gICAqIEBwYXJhbSBwYXJhbXMgQWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gICAqL1xuICBwcml2YXRlIGdldFBhZ2VkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHBhZ2VhYmxlOiBQYWdlYWJsZSxcbiAgICBmaWx0ZXJzPzogRmlsdGVyW10sXG4gICAgcGFyYW1zPzogSHR0cFBhcmFtc1xuICApOiBPYnNlcnZhYmxlPFBhZ2U8VD4+IHtcbiAgICBwYXJhbXMgPSBIdHRwUGFyYW1zQnVpbGRlci5zdGFydChwYXJhbXMpLmFwcGVuZFBhZ2VhYmxlKHBhZ2VhYmxlKS5hcHBlbmRGaWx0ZXJzKGZpbHRlcnMpLmJ1aWxkKClcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQYWdlPFQ+Pih1cmwsIHsgcGFyYW1zOiBwYXJhbXMgfSlcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzdENsaWVudENvbnRpbnVhYmxlPFQsIFRJRD5cbiAgZXh0ZW5kcyBSZXN0Q2xpZW50PFQsIFRJRD5cbiAgaW1wbGVtZW50cyBJQ29udGludWFibGVEYXRhU291cmNlPFQ+XG57XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKHJlc3RFbmRwb2ludDogc3RyaW5nLCBodHRwOiBIdHRwQ2xpZW50LCBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnKSB7XG4gICAgc3VwZXIocmVzdEVuZHBvaW50LCBodHRwLCBjb25maWcpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEFsbENvbnRpbnVhYmxlKFxuICAgIHJlcXVlc3Q6IFRva2VuQ2h1bmtSZXF1ZXN0LFxuICAgIHBhcmFtcz86IEh0dHBQYXJhbXNcbiAgKTogT2JzZXJ2YWJsZTxDb250aW51YWJsZUxpc3Rpbmc8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb250aW51YWJsZUxpc3Rpbmc8VD4+KHRoaXMucmVzdEVuZHBvaW50LCB7XG4gICAgICBwYXJhbXM6IEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcykuYXBwZW5kQ29udGludWF0aW9uUmVxdWVzdChyZXF1ZXN0KS5idWlsZCgpLFxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgZmluZEJ5SWRzKGlkczogYW55W10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIGlmIChpZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmxvYWRBbGwoW25ldyBGaWx0ZXIodGhpcy5jb25maWcuaWRzUGFyYW0sIGlkcyldLCBbXSwgcGFyYW1zKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoW10pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQWxsKGZpbHRlcnM/OiBGaWx0ZXJbXSwgc29ydHM/OiBTb3J0W10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRBbGxDb250aW51YWJsZShuZXcgVG9rZW5DaHVua1JlcXVlc3QobnVsbCwgZmlsdGVycywgc29ydHMpLCBwYXJhbXMpLnBpcGUoXG4gICAgICBleHBhbmQoKGxpc3RpbmcpID0+IHtcbiAgICAgICAgLy8gdGhlIHByZXZpb3VzIFwibGlzdGluZ1wiIC0+IFRoaXMgaXMgcmVjdXJzaXZlXG4gICAgICAgIHJldHVybiBsaXN0aW5nLm5leHRDb250aW51YXRpb25Ub2tlbiAvLyBpZiB0aGVyZSdzIFwibmV4dENvbnRpbnVhdGlvblRva2VuXCIsIHdlIHJlZmV0Y2ggb3Igd2UgRU1QVFkgdG8gY29tcGxldGUgdGhlIFwiZXhwYW5kKClcIlxuICAgICAgICAgID8gdGhpcy5maW5kQWxsQ29udGludWFibGUoXG4gICAgICAgICAgICAgIG5ldyBUb2tlbkNodW5rUmVxdWVzdChsaXN0aW5nLm5leHRDb250aW51YXRpb25Ub2tlbiwgZmlsdGVycywgc29ydHMpLFxuICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IEVNUFRZXG4gICAgICB9KSxcbiAgICAgIG1hcCgobGlzdGluZykgPT4gbGlzdGluZy5jb250ZW50KSxcbiAgICAgIHJlZHVjZShcbiAgICAgICAgKGFnZywgbGlzdGluZykgPT4ge1xuICAgICAgICAgIGFnZy5wdXNoKC4uLmxpc3RpbmcpXG4gICAgICAgICAgcmV0dXJuIGFnZ1xuICAgICAgICB9LFxuICAgICAgICA8VFtdPltdXG4gICAgICApXG4gICAgKVxuICB9XG59XG4iXX0=
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhc291cmNlL3Jlc3QvcmVzdC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxFQUFRLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFPN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQVksVUFBNkI7UUFIbEMsWUFBTyxHQUFHLElBQUksQ0FBQTtRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFHckIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUE7WUFDbkMsQ0FBQztZQUNELElBQUks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QUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDMUUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNmLENBQUM7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLE9BQWtCLEVBQUUsS0FBYyxFQUFFLE1BQW1CO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3RGLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pCLDhDQUE4QztZQUM5QyxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyx3RkFBd0Y7Z0JBQzNILENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFDcEUsTUFBTSxDQUNQO2dCQUNILENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDWCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDakMsTUFBTSxDQUNKLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFBO1lBQ3BCLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxFQUNJLEVBQUUsQ0FDUixDQUNGLENBQUE7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBFTVBUWSwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGV4cGFuZCwgbWFwLCByZWR1Y2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgSHR0cFBhcmFtc0J1aWxkZXIgfSBmcm9tICcuLi8uLi9odHRwLXBhcmFtcy1idWlsZGVyJ1xuaW1wb3J0IHsgU29ydCB9IGZyb20gJy4uLy4uL3NvcnQnXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXJzL2ZpbHRlcidcbmltcG9ydCB7IFBhZ2UsIFBhZ2VhYmxlIH0gZnJvbSAnLi4vLi4vcGFnZSdcbmltcG9ydCB7IExvZ2dlckZhY3RvcnkgfSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcidcbmltcG9ydCB7IENvbnRpbnVhYmxlTGlzdGluZyB9IGZyb20gJy4uLy4uL2NvbnRpbnVhYmxlLWxpc3RpbmcnXG5pbXBvcnQgeyBUb2tlbkNodW5rUmVxdWVzdCB9IGZyb20gJy4uLy4uL3Rva2VuLWNodW5rLXJlcXVlc3QnXG5pbXBvcnQge1xuICBJQ29udGludWFibGVEYXRhU291cmNlLFxuICBJRGF0YVNvdXJjZSxcbiAgSUxpc3REYXRhU291cmNlLFxuICBJUGFnZWREYXRhU291cmNlLFxufSBmcm9tICcuLi9kYXRhLXNvdXJjZSdcbmltcG9ydCB7IEJhdGNoZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9iYXRjaGVyJ1xuaW1wb3J0IHsgRGF0YVNvdXJjZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UtY2hhbmdlLWV2ZW50J1xuaW1wb3J0IHsgRGF0YVNvdXJjZUJhc2UgfSBmcm9tICcuLi9kYXRhLXNvdXJjZS1iYXNlJ1xuXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxSZXN0Q2xpZW50Q29uZmlnIHtcbiAgcHVibGljIGlkRmllbGQgPSAnaWQnXG4gIHB1YmxpYyBpZHNQYXJhbSA9ICdpZHMnXG5cbiAgY29uc3RydWN0b3IodXNlckNvbmZpZz86IFJlc3RDbGllbnRDb25maWcpIHtcbiAgICBpZiAodXNlckNvbmZpZykge1xuICAgICAgaWYgKHVzZXJDb25maWcuaWRGaWVsZCkge1xuICAgICAgICB0aGlzLmlkRmllbGQgPSB1c2VyQ29uZmlnLmlkRmllbGRcbiAgICAgIH1cbiAgICAgIGlmICh1c2VyQ29uZmlnLmlkc1BhcmFtKSB7XG4gICAgICAgIHRoaXMuaWRzUGFyYW0gPSB1c2VyQ29uZmlnLmlkc1BhcmFtXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQWxsb3dzIHRvIGN1c3RvbWl6ZSB0aGUgcmVzdCBjbGllbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIGZpZWxkIHRvIHVzZSBhcyBpZC4gRGVmYXVsdHMgdG8gJ2lkJy5cbiAgICovXG4gIHB1YmxpYyBpZEZpZWxkPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBxdWVyeSBwYXJhbSB0byB1c2UgZm9yIG11bHRpcGxlIGlkcy4gRGVmYXVsdHMgdG8gJ2lkcydcbiAgICovXG4gIHB1YmxpYyBpZHNQYXJhbT86IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgUmVzdENsaWVudDxULCBUSUQ+IGV4dGVuZHMgRGF0YVNvdXJjZUJhc2U8VD4gaW1wbGVtZW50cyBJRGF0YVNvdXJjZTxUPiB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZzogSW50ZXJuYWxSZXN0Q2xpZW50Q29uZmlnXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc3RFbmRwb2ludDogc3RyaW5nLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWdcbiAgKSB7XG4gICAgc3VwZXIobmV3IEludGVybmFsUmVzdENsaWVudENvbmZpZyhjb25maWcpLmlkRmllbGQpXG4gICAgdGhpcy5jb25maWcgPSBuZXcgSW50ZXJuYWxSZXN0Q2xpZW50Q29uZmlnKGNvbmZpZylcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBmaW5kQnlJZChpZDogVElELCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmluZEJ5SWQ6IGlkIGFyZ3VtZW50IHJlcXVpcmVkIScpXG4gICAgfVxuICAgIHBhcmFtcyA9IEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcykuYnVpbGQoKVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHRoaXMuZ2V0RW50aXR5VXJsKGlkKSwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkcyhpZHM6IGFueVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAoaWRzID09PSB1bmRlZmluZWQgfHwgaWRzID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpbmRCeUlkczogaWRzIGFycmF5IGFyZ3VtZW50IHJlcXVpcmVkIScpXG4gICAgfVxuICAgIHRoaXMuX2xvZ2dlci53YXJuKCdWZXJ5IGluZWZmaWNpZW50IGZpbmRCeUlkcyBoYW5kbGluZyAnICsgaWRzLmxlbmd0aClcbiAgICByZXR1cm4gZm9ya0pvaW4oaWRzLm1hcCgoaWQpID0+IHRoaXMuZmluZEJ5SWQoaWQsIHBhcmFtcykpKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgb3IgVXBkYXRlcyB0aGUgZ2l2ZW4gZW50aXR5IGRlcGVuZGluZyBpZiBpdCBhbHJlYWR5IGhhcyBhIHZhbGlkIGlkLlxuICAgKi9cbiAgcHVibGljIHNhdmUoZW50aXR5OiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldElkKGVudGl0eSlcbiAgICByZXR1cm4gaWQgPyB0aGlzLnVwZGF0ZShlbnRpdHksIHBhcmFtcykgOiB0aGlzLmNyZWF0ZShlbnRpdHksIHBhcmFtcylcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGU8VEMgPSBUPihuZXdFbnRpdHk6IFRDLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8VD4odGhpcy5yZXN0RW5kcG9pbnQsIG5ld0VudGl0eSwge1xuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YXAoKGUpID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5jcmVhdGVkKFtlXSkpKSlcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGU8VEVudGl0eVVwZGF0ZT4odXBkYXRlOiBURW50aXR5VXBkYXRlLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnB1dDxUPih0aGlzLmdldEVudGl0eVVybEJ5KDxUPig8dW5rbm93bj51cGRhdGUpKSwgdXBkYXRlLCB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRhcCgoZSkgPT4gdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50Lm1vZGlmaWVkKFtlXSkpKSlcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBbGw8VEVudGl0eVVwZGF0ZT4oXG4gICAgdXBkYXRlZEVudGl0aWVzOiBURW50aXR5VXBkYXRlW10sXG4gICAgcGFyYW1zPzogSHR0cFBhcmFtc1xuICApOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQ8VFtdPih0aGlzLnJlc3RFbmRwb2ludCwgdXBkYXRlZEVudGl0aWVzLCB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRhcCgoZW50aXRpZXMpID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChlbnRpdGllcykpKSlcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoZW50aXR5OiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZGVsZXRlKHRoaXMuZ2V0RW50aXR5VXJsQnkoZW50aXR5KSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5kZWxldGVkKFt0aGlzLmdldElkKGVudGl0eSldKSkpKVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUFsbChlbnRpdGllczogVFtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcy5tYXAoKGUpID0+IFN0cmluZyh0aGlzLmdldElkKGUpKSlcblxuICAgIGNvbnN0IG1heEJhdGNoU2l6ZSA9IDEwMFxuICAgIGNvbnN0IGRlbGV0ZVJlcXVlc3RzID0gQmF0Y2hlci5iYXRjaE1hcChpZHMsIG1heEJhdGNoU2l6ZSwgKGJhdGNoKSA9PlxuICAgICAgdGhpcy5kZWxldGVJZEJhdGNoKGJhdGNoLCBwYXJhbXMpXG4gICAgKVxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICdEZWxldGluZyAnICsgZW50aXRpZXMubGVuZ3RoICsgJyBpbiAnICsgZGVsZXRlUmVxdWVzdHMubGVuZ3RoICsgJyBiYXRjaGVzOiAnLFxuICAgICAgZGVsZXRlUmVxdWVzdHNcbiAgICApXG4gICAgcmV0dXJuIGZvcmtKb2luKGRlbGV0ZVJlcXVlc3RzKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFN1YiBSZXNvdXJjZSBCdWlsZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN1YlJlc291cmNlTGlzdDxUUywgVFNJRD4oXG4gICAgcGFyZW50OiBULFxuICAgIHN1YlBhdGg6IHN0cmluZyxcbiAgICBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnXG4gICk6IFJlc3RDbGllbnRMaXN0PFRTLCBUU0lEPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN0Q2xpZW50TGlzdCh0aGlzLmdldEVudGl0eVVybEJ5KHBhcmVudCkgKyAnLycgKyBzdWJQYXRoLCB0aGlzLmh0dHAsIGNvbmZpZylcbiAgfVxuXG4gIHB1YmxpYyBzdWJSZXNvdXJjZVBhZ2VkPFRTLCBUU0lEPihcbiAgICBwYXJlbnQ6IFQsXG4gICAgc3ViUGF0aDogc3RyaW5nLFxuICAgIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWdcbiAgKTogUmVzdENsaWVudFBhZ2VkPFRTLCBUU0lEPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN0Q2xpZW50UGFnZWQodGhpcy5nZXRFbnRpdHlVcmxCeShwYXJlbnQpICsgJy8nICsgc3ViUGF0aCwgdGhpcy5odHRwLCBjb25maWcpXG4gIH1cblxuICBwdWJsaWMgc3ViUmVzb3VyY2VDb250aW51YWJsZTxUUywgVFNJRD4oXG4gICAgcGFyZW50OiBULFxuICAgIHN1YlBhdGg6IHN0cmluZyxcbiAgICBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnXG4gICk6IFJlc3RDbGllbnRDb250aW51YWJsZTxUUywgVFNJRD4ge1xuICAgIHJldHVybiBuZXcgUmVzdENsaWVudENvbnRpbnVhYmxlKHRoaXMuZ2V0RW50aXR5VXJsQnkocGFyZW50KSArICcvJyArIHN1YlBhdGgsIHRoaXMuaHR0cCwgY29uZmlnKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3RlY3RlZCBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIHBhdGNoSW50ZXJuYWw8UD4oaWQ6IFRJRCwgZW50aXR5UGF0Y2g6IFAsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucGF0Y2g8VD4odGhpcy5nZXRFbnRpdHlVcmwoaWQpLCBlbnRpdHlQYXRjaCwge1xuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YXAoKGUpID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChbZV0pKSkpXG4gIH1cblxuICBwcm90ZWN0ZWQgcGF0Y2hBbGxJbnRlcm5hbDxQPihlbnRpdHlQYXRjaGVzOiBQW10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wYXRjaDxUW10+KHRoaXMucmVzdEVuZHBvaW50LCBlbnRpdHlQYXRjaGVzLCB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRhcCgoZSkgPT4gdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50Lm1vZGlmaWVkKGUpKSkpXG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU3dpdGNoIHRvIHB1Ymxpc2hDaGFuZ2VFdmVudFxuICAgKi9cbiAgcHJvdGVjdGVkIG9uTG9jYWxDaGFuZ2VkKGVudGl0eT86IFQpOiB2b2lkIHtcbiAgICB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChEYXRhU291cmNlQ2hhbmdlRXZlbnQudW5rbm93bkNoYW5nZXMoKSlcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRFbnRpdHlVcmxCeShlbnRpdHk6IFQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEVudGl0eVVybCh0aGlzLmdldElkKGVudGl0eSkpXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RW50aXR5VXJsKGlkOiBUSUQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc3RFbmRwb2ludCArICcvJyArIGlkXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgZ2l2ZW4gaWRzIGluIGEgYmF0Y2ggY2FsbC5cbiAgICogTm90ZSB0aGF0IGR1ZSBIVFRQIFJlcXVlc3QgVVJJIGxpbWl0YXRpb25zLFxuICAgKiB0aGUgbnVtYmVyIG9mIGlkcyB0aGF0IGNhbiBiZSBkZWxldGVkIGluIGEgc2luZ2xlIGJhdGNoIGlzXG4gICAqIGxpbWl0ZWQgKGFyb3VuZCAxNTAsIGRlcGVuZGluZyBvbiBpZCBsZW5ndGgsIHNpbmNlIHRoZXkgYXJlXG4gICAqIHBhcnQgb2YgdGhlIHJlcXVlc3QgdXJpIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwcml2YXRlIGRlbGV0ZUlkQmF0Y2goaWRzOiBzdHJpbmdbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcylcbiAgICBidWlsZGVyLmFwcGVuZEZpbHRlcihuZXcgRmlsdGVyKHRoaXMuY29uZmlnLmlkc1BhcmFtLCBpZHMpKVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5kZWxldGUodGhpcy5yZXN0RW5kcG9pbnQsIHtcbiAgICAgICAgcGFyYW1zOiBidWlsZGVyLmJ1aWxkKCksXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChEYXRhU291cmNlQ2hhbmdlRXZlbnQuZGVsZXRlZChpZHMpKSkpXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnRMaXN0PFQsIFRJRD4gZXh0ZW5kcyBSZXN0Q2xpZW50PFQsIFRJRD4gaW1wbGVtZW50cyBJTGlzdERhdGFTb3VyY2U8VD4ge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihyZXN0RW5kcG9pbnQ6IHN0cmluZywgaHR0cDogSHR0cENsaWVudCwgY29uZmlnPzogUmVzdENsaWVudENvbmZpZykge1xuICAgIHN1cGVyKHJlc3RFbmRwb2ludCwgaHR0cCwgY29uZmlnKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGZpbmRBbGxGaWx0ZXJlZChmaWx0ZXJzPzogRmlsdGVyW10sIHNvcnRzPzogU29ydFtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5maW5kQWxsKFxuICAgICAgSHR0cFBhcmFtc0J1aWxkZXIuc3RhcnQocGFyYW1zKS5hcHBlbmRGaWx0ZXJzKGZpbHRlcnMpLmFwcGVuZFNvcnRzKHNvcnRzKS5idWlsZCgpXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkcyhpZHM6IGFueVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAoaWRzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kQWxsRmlsdGVyZWQoW25ldyBGaWx0ZXIodGhpcy5jb25maWcuaWRzUGFyYW0sIGlkcyldLCBbXSwgcGFyYW1zKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoW10pXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbmRBbGwocGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VFtdPih0aGlzLnJlc3RFbmRwb2ludCwge1xuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzdENsaWVudFBhZ2VkPFQsIFRJRD4gZXh0ZW5kcyBSZXN0Q2xpZW50PFQsIFRJRD4gaW1wbGVtZW50cyBJUGFnZWREYXRhU291cmNlPFQ+IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IocmVzdEVuZHBvaW50OiBzdHJpbmcsIGh0dHA6IEh0dHBDbGllbnQsIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWcpIHtcbiAgICBzdXBlcihyZXN0RW5kcG9pbnQsIGh0dHAsIGNvbmZpZylcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBmaW5kQWxsUGFnZWQoXG4gICAgcGFnZWFibGU6IFBhZ2VhYmxlLFxuICAgIGZpbHRlcnM/OiBGaWx0ZXJbXSxcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zXG4gICk6IE9ic2VydmFibGU8UGFnZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmdldFBhZ2VkKHRoaXMucmVzdEVuZHBvaW50LCBwYWdlYWJsZSwgZmlsdGVycywgcGFyYW1zKVxuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkcyhpZHM6IGFueVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAoaWRzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kQWxsUGFnZWQoXG4gICAgICAgIG5ldyBQYWdlYWJsZSgwLCBpZHMubGVuZ3RoKSxcbiAgICAgICAgW25ldyBGaWx0ZXIodGhpcy5jb25maWcuaWRzUGFyYW0sIGlkcyldLFxuICAgICAgICBwYXJhbXNcbiAgICAgICkucGlwZShtYXAoKHBhZ2UpID0+IHBhZ2UuY29udGVudCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZihbXSlcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmVxdWVzdGVkIGRhdGEgcGFnZSBhcyBQYWdlPFQ+XG4gICAqIEBwYXJhbSB1cmwgVGhlIHJlc291cmNlIHVybFxuICAgKiBAcGFyYW0gcGFnZWFibGUgVGhlIHBhZ2UgcmVxdWVzdFxuICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVyc1NuYXBzaG90IHJlcXVlc3RcbiAgICogQHBhcmFtIHBhcmFtcyBBZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICovXG4gIHByaXZhdGUgZ2V0UGFnZWQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcGFnZWFibGU6IFBhZ2VhYmxlLFxuICAgIGZpbHRlcnM/OiBGaWx0ZXJbXSxcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zXG4gICk6IE9ic2VydmFibGU8UGFnZTxUPj4ge1xuICAgIHBhcmFtcyA9IEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcykuYXBwZW5kUGFnZWFibGUocGFnZWFibGUpLmFwcGVuZEZpbHRlcnMoZmlsdGVycykuYnVpbGQoKVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFBhZ2U8VD4+KHVybCwgeyBwYXJhbXM6IHBhcmFtcyB9KVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50Q29udGludWFibGU8VCwgVElEPlxuICBleHRlbmRzIFJlc3RDbGllbnQ8VCwgVElEPlxuICBpbXBsZW1lbnRzIElDb250aW51YWJsZURhdGFTb3VyY2U8VD5cbntcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IocmVzdEVuZHBvaW50OiBzdHJpbmcsIGh0dHA6IEh0dHBDbGllbnQsIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWcpIHtcbiAgICBzdXBlcihyZXN0RW5kcG9pbnQsIGh0dHAsIGNvbmZpZylcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBmaW5kQWxsQ29udGludWFibGUoXG4gICAgcmVxdWVzdDogVG9rZW5DaHVua1JlcXVlc3QsXG4gICAgcGFyYW1zPzogSHR0cFBhcmFtc1xuICApOiBPYnNlcnZhYmxlPENvbnRpbnVhYmxlTGlzdGluZzxUPj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENvbnRpbnVhYmxlTGlzdGluZzxUPj4odGhpcy5yZXN0RW5kcG9pbnQsIHtcbiAgICAgIHBhcmFtczogSHR0cFBhcmFtc0J1aWxkZXIuc3RhcnQocGFyYW1zKS5hcHBlbmRDb250aW51YXRpb25SZXF1ZXN0KHJlcXVlc3QpLmJ1aWxkKCksXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJZHMoaWRzOiBhbnlbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZEFsbChbbmV3IEZpbHRlcih0aGlzLmNvbmZpZy5pZHNQYXJhbSwgaWRzKV0sIFtdLCBwYXJhbXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZihbXSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRBbGwoZmlsdGVycz86IEZpbHRlcltdLCBzb3J0cz86IFNvcnRbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFsbENvbnRpbnVhYmxlKG5ldyBUb2tlbkNodW5rUmVxdWVzdChudWxsLCBmaWx0ZXJzLCBzb3J0cyksIHBhcmFtcykucGlwZShcbiAgICAgIGV4cGFuZCgobGlzdGluZykgPT4ge1xuICAgICAgICAvLyB0aGUgcHJldmlvdXMgXCJsaXN0aW5nXCIgLT4gVGhpcyBpcyByZWN1cnNpdmVcbiAgICAgICAgcmV0dXJuIGxpc3RpbmcubmV4dENvbnRpbnVhdGlvblRva2VuIC8vIGlmIHRoZXJlJ3MgXCJuZXh0Q29udGludWF0aW9uVG9rZW5cIiwgd2UgcmVmZXRjaCBvciB3ZSBFTVBUWSB0byBjb21wbGV0ZSB0aGUgXCJleHBhbmQoKVwiXG4gICAgICAgICAgPyB0aGlzLmZpbmRBbGxDb250aW51YWJsZShcbiAgICAgICAgICAgICAgbmV3IFRva2VuQ2h1bmtSZXF1ZXN0KGxpc3RpbmcubmV4dENvbnRpbnVhdGlvblRva2VuLCBmaWx0ZXJzLCBzb3J0cyksXG4gICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgKVxuICAgICAgICAgIDogRU1QVFlcbiAgICAgIH0pLFxuICAgICAgbWFwKChsaXN0aW5nKSA9PiBsaXN0aW5nLmNvbnRlbnQpLFxuICAgICAgcmVkdWNlKFxuICAgICAgICAoYWdnLCBsaXN0aW5nKSA9PiB7XG4gICAgICAgICAgYWdnLnB1c2goLi4ubGlzdGluZylcbiAgICAgICAgICByZXR1cm4gYWdnXG4gICAgICAgIH0sXG4gICAgICAgIDxUW10+W11cbiAgICAgIClcbiAgICApXG4gIH1cbn1cbiJdfQ==
|
|
@@ -7,8 +7,8 @@ export class ElderMultiTranslateHttpLoader {
|
|
|
7
7
|
this._resourcesPrefix = _resourcesPrefix;
|
|
8
8
|
}
|
|
9
9
|
getTranslation(lang) {
|
|
10
|
-
const requests = this._resourcesPrefix.map((
|
|
11
|
-
resource =
|
|
10
|
+
const requests = this._resourcesPrefix.map((resourceArg) => {
|
|
11
|
+
const resource = resourceArg;
|
|
12
12
|
let path;
|
|
13
13
|
if (resource.prefix) {
|
|
14
14
|
path = `${resource.prefix}${lang}${resource.suffix || '.json'}`;
|
|
@@ -37,7 +37,7 @@ function simpleDeepMerge(target, source) {
|
|
|
37
37
|
return target;
|
|
38
38
|
}
|
|
39
39
|
const output = { ...target };
|
|
40
|
-
Object.keys(source).forEach(key => {
|
|
40
|
+
Object.keys(source).forEach((key) => {
|
|
41
41
|
if (Array.isArray(source[key])) {
|
|
42
42
|
output[key] = [...(target[key] || []), ...source[key]];
|
|
43
43
|
}
|
|
@@ -50,4 +50,4 @@ function simpleDeepMerge(target, source) {
|
|
|
50
50
|
});
|
|
51
51
|
return output;
|
|
52
52
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbXVsdGktdHJhbnNsYXRlLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9pMThuL2VudGl0eS9lbGRlci1tdWx0aS10cmFuc2xhdGUtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBVWhELE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsWUFDVSxRQUFxQixFQUNyQixnQkFBbUQ7UUFEbkQsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1DO0lBQzFELENBQUM7SUFFRyxjQUFjLENBQUMsSUFBWTtRQUNoQyxNQUFNLFFBQVEsR0FBeUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQWdCLEVBQUUsRUFBRTtZQUNwRixNQUFNLFFBQVEsR0FBRyxXQUFtQyxDQUFBO1lBQ3BELElBQUksSUFBWSxDQUFBO1lBRWhCLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFBO1lBQ2pFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsR0FBRyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUE7WUFDbEMsQ0FBQztZQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2pELFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN2QixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUE7b0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDL0UsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFDbEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO2dCQUNwQixDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7Q0FDRjtBQUVELFNBQVMsZUFBZSxDQUFDLE1BQVcsRUFBRSxNQUFXO0lBQy9DLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbEQsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFBO0lBRTVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDbEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3hELENBQUM7YUFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQy9ELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQmFja2VuZCwgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuLyogaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3JiYWxldC9uZ3gtdHJhbnNsYXRlLW11bHRpLWh0dHAtbG9hZGVyICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9uUmVzb3VyY2Uge1xuICBwcmVmaXg6IHN0cmluZ1xuICBzdWZmaXg/OiBzdHJpbmdcbiAgb3B0aW9uYWw/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBFbGRlck11bHRpVHJhbnNsYXRlSHR0cExvYWRlciBpbXBsZW1lbnRzIFRyYW5zbGF0ZUxvYWRlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hhbmRsZXI6IEh0dHBCYWNrZW5kLFxuICAgIHByaXZhdGUgX3Jlc291cmNlc1ByZWZpeDogc3RyaW5nW10gfCBJVHJhbnNsYXRpb25SZXNvdXJjZVtdXG4gICkge31cblxuICBwdWJsaWMgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0czogT2JzZXJ2YWJsZTxvYmplY3Q+W10gPSB0aGlzLl9yZXNvdXJjZXNQcmVmaXgubWFwKChyZXNvdXJjZUFyZzogYW55KSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IHJlc291cmNlQXJnIGFzIElUcmFuc2xhdGlvblJlc291cmNlXG4gICAgICBsZXQgcGF0aDogc3RyaW5nXG5cbiAgICAgIGlmIChyZXNvdXJjZS5wcmVmaXgpIHtcbiAgICAgICAgcGF0aCA9IGAke3Jlc291cmNlLnByZWZpeH0ke2xhbmd9JHtyZXNvdXJjZS5zdWZmaXggfHwgJy5qc29uJ31gXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoID0gYCR7cmVzb3VyY2V9JHtsYW5nfS5qc29uYFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEh0dHBDbGllbnQodGhpcy5faGFuZGxlcikuZ2V0KHBhdGgpLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlcykgPT4ge1xuICAgICAgICAgIGlmICghcmVzb3VyY2Uub3B0aW9uYWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAoKVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcgZm9yIHRoZSBmb2xsb3dpbmcgdHJhbnNsYXRpb24gZmlsZTonLCBwYXRoKVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKHt9KVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH0pXG5cbiAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdHMpLnBpcGUobWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UucmVkdWNlKHNpbXBsZURlZXBNZXJnZSwge30pKSlcbiAgfVxufVxuXG5mdW5jdGlvbiBzaW1wbGVEZWVwTWVyZ2UodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB0YXJnZXQgIT09ICdvYmplY3QnIHx8IHRhcmdldCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBzb3VyY2VcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JyB8fCBzb3VyY2UgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdGFyZ2V0XG4gIH1cblxuICBjb25zdCBvdXRwdXQgPSB7IC4uLnRhcmdldCB9XG5cbiAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2Vba2V5XSkpIHtcbiAgICAgIG91dHB1dFtrZXldID0gWy4uLih0YXJnZXRba2V5XSB8fCBbXSksIC4uLnNvdXJjZVtrZXldXVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNvdXJjZVtrZXldID09PSAnb2JqZWN0JyAmJiBzb3VyY2Vba2V5XSAhPT0gbnVsbCkge1xuICAgICAgb3V0cHV0W2tleV0gPSBzaW1wbGVEZWVwTWVyZ2UodGFyZ2V0W2tleV0gfHwge30sIHNvdXJjZVtrZXldKVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXRba2V5XSA9IHNvdXJjZVtrZXldXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBvdXRwdXRcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
+
export const booleanTransformFn = (input) => coerceBooleanProperty(input);
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL3V0aWxzL3NpZ25hbC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFM0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFtQixFQUFXLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuXG5leHBvcnQgY29uc3QgYm9vbGVhblRyYW5zZm9ybUZuID0gKGlucHV0OiBCb29sZWFuSW5wdXQpOiBib29sZWFuID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShpbnB1dClcbiJdfQ==
|
package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs
CHANGED
|
@@ -33,12 +33,12 @@ export default class IntervalShiftController {
|
|
|
33
33
|
}
|
|
34
34
|
const duration = state.duration;
|
|
35
35
|
const interval = this.manager.intervalValue;
|
|
36
|
-
|
|
36
|
+
const newStartDateTime = direction === 1
|
|
37
37
|
? interval.startDateTime.add(duration)
|
|
38
38
|
: interval.startDateTime.subtract(duration);
|
|
39
|
-
|
|
39
|
+
const newEndDateTime = direction === 1 ? interval.endDateTime.add(duration) : interval.endDateTime.subtract(duration);
|
|
40
40
|
const newInterval = IntervalState.createFromDateTimes(newStartDateTime, newEndDateTime);
|
|
41
41
|
this.manager.setInterval(newInterval);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtc2hpZnQtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvY29udHJvbGxlci9pbnRlcnZhbC1zaGlmdC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVwRCxPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUcxQyxZQUFvQixPQUFtQztRQUFuQyxZQUFPLEdBQVAsT0FBTyxDQUE0QjtRQUZ0QyxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRVgsQ0FBQztJQUVwRCxRQUFRLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdEIsSUFBSSxhQUFhLENBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDbkMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUN0QixJQUFJLGFBQWEsQ0FDZixJQUFJLENBQUMsT0FBTyxDQUFD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RCxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUE7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFFM0MsTUFBTSxnQkFBZ0IsR0FDcEIsU0FBUyxLQUFLLENBQUM7WUFDYixDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQyxNQUFNLGNBQWMsR0FDbEIsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRWhHLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUV2RixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIgZnJvbSAnLi4vbWFuYWdlci9pbnRlcnZhbC1waWNrZXItc3RhdGUtbWFuYWdlcidcbmltcG9ydCBJbnRlcnZhbFN0YXRlIGZyb20gJy4uL21vZGVsL2ludGVydmFsLXN0YXRlJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnRlcnZhbFNoaWZ0Q29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFuYWdlcjogSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIpIHt9XG5cbiAgcHVibGljIHNoaWZ0RGF5KGRheXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChcbiAgICAgIG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUuYWRkKHsgZGF5cyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZS5hZGQoeyBkYXlzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydFRpbWUsXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLmVuZFRpbWVcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2hpZnRXZWVrKHdlZWtzOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwoXG4gICAgICBuZXcgSW50ZXJ2YWxTdGF0ZShcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnREYXRlLmFkZCh7IHdlZWtzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLmFkZCh7IHdlZWtzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydFRpbWUsXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLmVuZFRpbWVcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2hpZnRNb250aChtb250aHM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChcbiAgICAgIG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUuYWRkKHsgbW9udGhzIH0pLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLmFkZCh7IG1vbnRocyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmRUaW1lXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHNoaWZ0WWVhcih5ZWFyczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5tYW5hZ2VyLnNldEludGVydmFsKFxuICAgICAgbmV3IEludGVydmFsU3RhdGUoXG4gICAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLnN0YXJ0RGF0ZS5hZGQoeyB5ZWFycyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZS5hZGQoeyB5ZWFycyB9KSxcbiAgICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lLFxuICAgICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmRUaW1lXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHNoaWZ0TWludXRlKG1pbnV0ZXM6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5ld0ludGVydmFsID0gbmV3IEludGVydmFsU3RhdGUoXG4gICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5zdGFydERhdGUsXG4gICAgICB0aGlzLm1hbmFnZXIuaW50ZXJ2YWxWYWx1ZS5lbmREYXRlLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnRUaW1lPy5hZGQoeyBtaW51dGVzIH0pLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kVGltZT8uYWRkKHsgbWludXRlcyB9KVxuICAgIClcbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3SW50ZXJ2YWwpXG4gIH1cblxuICBwdWJsaWMgc2hpZnRIb3VyKGhvdXJzOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdJbnRlcnZhbCA9IG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuc3RhcnREYXRlLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kRGF0ZSxcbiAgICAgIHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlLnN0YXJ0VGltZT8uYWRkKHsgaG91cnM6IGhvdXJzIH0pLFxuICAgICAgdGhpcy5tYW5hZ2VyLmludGVydmFsVmFsdWUuZW5kVGltZT8uYWRkKHsgaG91cnM6IGhvdXJzIH0pXG4gICAgKVxuICAgIHRoaXMubWFuYWdlci5zZXRJbnRlcnZhbChuZXdJbnRlcnZhbClcbiAgfVxuXG4gIHB1YmxpYyBzbWFydFNoaWZ0KGRpcmVjdGlvbiA9IDEpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMubWFuYWdlci5zbWFydFNoaWZ0VmFsdWVcbiAgICBpZiAoIXN0YXRlLmR1cmF0aW9uKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdDYW5ub3Qgc21hcnQgc2hpZnQgd2l0aG91dCBhIGR1cmF0aW9uIScpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IHN0YXRlLmR1cmF0aW9uXG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHRoaXMubWFuYWdlci5pbnRlcnZhbFZhbHVlXG5cbiAgICBjb25zdCBuZXdTdGFydERhdGVUaW1lID1cbiAgICAgIGRpcmVjdGlvbiA9PT0gMVxuICAgICAgICA/IGludGVydmFsLnN0YXJ0RGF0ZVRpbWUuYWRkKGR1cmF0aW9uKVxuICAgICAgICA6IGludGVydmFsLnN0YXJ0RGF0ZVRpbWUuc3VidHJhY3QoZHVyYXRpb24pXG4gICAgY29uc3QgbmV3RW5kRGF0ZVRpbWUgPVxuICAgICAgZGlyZWN0aW9uID09PSAxID8gaW50ZXJ2YWwuZW5kRGF0ZVRpbWUuYWRkKGR1cmF0aW9uKSA6IGludGVydmFsLmVuZERhdGVUaW1lLnN1YnRyYWN0KGR1cmF0aW9uKVxuXG4gICAgY29uc3QgbmV3SW50ZXJ2YWwgPSBJbnRlcnZhbFN0YXRlLmNyZWF0ZUZyb21EYXRlVGltZXMobmV3U3RhcnREYXRlVGltZSwgbmV3RW5kRGF0ZVRpbWUpXG5cbiAgICB0aGlzLm1hbmFnZXIuc2V0SW50ZXJ2YWwobmV3SW50ZXJ2YWwpXG4gIH1cbn1cbiJdfQ==
|