@netgrif/components-core 6.2.7 → 6.2.9-RC.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/search/models/operator/substring.mjs +2 -2
- package/esm2020/lib/search/search-service/search.service.mjs +2 -2
- package/esm2020/lib/tabs/classes/tab-view.mjs +2 -2
- package/esm2020/lib/tabs/interfaces.mjs +1 -1
- package/fesm2015/netgrif-components-core.mjs +4 -3
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +3 -3
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/lib/tabs/interfaces.d.ts +2 -0
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ export class Substring extends Operator {
|
|
|
14
14
|
// TODO IMPROVEMENT 27.4.2020 - we could use regular expressions to search for substrings which would solve the unintuitive
|
|
15
15
|
// behavior that occurs when we search for strings that contain spaces. We need to escape the input string in a special way
|
|
16
16
|
// if we choose to do this
|
|
17
|
-
const escapedValue = Operator.escapeInput(args[0]).value.replace(
|
|
17
|
+
const escapedValue = Operator.escapeInput(args[0]).value.replace(/ /g, '\\ ');
|
|
18
18
|
return Operator.forEachKeyword(elasticKeywords, keyword => new Query(`(${keyword}:*${escapedValue}*)`));
|
|
19
19
|
}
|
|
20
20
|
getOperatorNameTemplate() {
|
|
@@ -24,4 +24,4 @@ export class Substring extends Operator {
|
|
|
24
24
|
return Operators.SUBSTRING;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvbW9kZWxzL29wZXJhdG9yL3N1YnN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXRDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxTQUFVLFNBQVEsUUFBZ0I7SUFDM0M7UUFDSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsV0FBVyxDQUFDLGVBQThCLEVBQUUsSUFBbUI7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLDJIQUEySDtRQUMzSCw0SEFBNEg7UUFDNUgsMkJBQTJCO1FBQzNCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUUsT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksT0FBTyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wZXJhdG9yfSBmcm9tICcuL29wZXJhdG9yJztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uL3F1ZXJ5L3F1ZXJ5JztcbmltcG9ydCB7T3BlcmF0b3JzfSBmcm9tICcuL29wZXJhdG9ycyc7XG5cbi8qKlxuICogT3BlcmF0b3IgdGhhdCBtYXRjaGVzIGlmIHRoZSBpbnB1dCBpcyBhIHN1YnN0cmluZyBvZiBzb21lIHZhbHVlLlxuICogQ2FuIG9ubHkgYmUgdXNlZCBvbiBmaWVsZHMgdGhhdCBhcmUgdGV4dHMgYW5kIGFyZSBub3QgaW5kZXhlZCBhcyBrZXl3b3Jkcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN1YnN0cmluZyBleHRlbmRzIE9wZXJhdG9yPHN0cmluZz4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigxKTtcbiAgICB9XG5cbiAgICBjcmVhdGVRdWVyeShlbGFzdGljS2V5d29yZHM6IEFycmF5PHN0cmluZz4sIGFyZ3M6IEFycmF5PHN0cmluZz4pOiBRdWVyeSB7XG4gICAgICAgIHRoaXMuY2hlY2tBcmd1bWVudHNDb3VudChhcmdzKTtcbiAgICAgICAgLy8gVE9ETyBJTVBST1ZFTUVOVCAyNy40LjIwMjAgLSB3ZSBjb3VsZCB1c2UgcmVndWxhciBleHByZXNzaW9ucyB0byBzZWFyY2ggZm9yIHN1YnN0cmluZ3Mgd2hpY2ggd291bGQgc29sdmUgdGhlIHVuaW50dWl0aXZlXG4gICAgICAgIC8vICBiZWhhdmlvciB0aGF0IG9jY3VycyB3aGVuIHdlIHNlYXJjaCBmb3Igc3RyaW5ncyB0aGF0IGNvbnRhaW4gc3BhY2VzLiBXZSBuZWVkIHRvIGVzY2FwZSB0aGUgaW5wdXQgc3RyaW5nIGluIGEgc3BlY2lhbCB3YXlcbiAgICAgICAgLy8gIGlmIHdlIGNob29zZSB0byBkbyB0aGlzXG4gICAgICAgIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IE9wZXJhdG9yLmVzY2FwZUlucHV0KGFyZ3NbMF0pLnZhbHVlLnJlcGxhY2UoLyAvZywgJ1xcXFwgJyk7XG4gICAgICAgIHJldHVybiBPcGVyYXRvci5mb3JFYWNoS2V5d29yZChlbGFzdGljS2V5d29yZHMsIGtleXdvcmQgPT4gbmV3IFF1ZXJ5KGAoJHtrZXl3b3JkfToqJHtlc2NhcGVkVmFsdWV9KilgKSk7XG4gICAgfVxuXG4gICAgZ2V0T3BlcmF0b3JOYW1lVGVtcGxhdGUoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBbJ3NlYXJjaC5vcGVyYXRvci5zdWJzdHJpbmcnLCBPcGVyYXRvci5JTlBVVF9QTEFDRUhPTERFUl07XG4gICAgfVxuXG4gICAgc2VyaWFsaXplKCk6IE9wZXJhdG9ycyB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBPcGVyYXRvcnMuU1VCU1RSSU5HO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -196,7 +196,7 @@ export class SearchService {
|
|
|
196
196
|
* @param searchedSubstring value that should be searched on all full text fields
|
|
197
197
|
*/
|
|
198
198
|
setFullTextFilter(searchedSubstring) {
|
|
199
|
-
const whiteSpacedSubstring = searchedSubstring.replace(
|
|
199
|
+
const whiteSpacedSubstring = searchedSubstring.replace(/ /g, '\\ ');
|
|
200
200
|
this._fullTextFilter = new SimpleFilter('', this._baseFilter.type, { fullText: whiteSpacedSubstring });
|
|
201
201
|
this.updateActiveFilter();
|
|
202
202
|
}
|
|
@@ -304,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
304
304
|
type: Inject,
|
|
305
305
|
args: [NAE_BASE_FILTER]
|
|
306
306
|
}] }]; } });
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3NlYXJjaC9zZWFyY2gtc2VydmljZS9zZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBRWxGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFHakUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUdwSCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFLdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBSTdEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUE2QnRCOzs7Ozs7O09BT0c7SUFDSCxZQUFzQixJQUFtQixFQUNQLGdCQUFpQyxFQUM5QixVQUFzQjtRQUZyQyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ1AscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUUvRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLFlBQVksTUFBTSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxX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QyxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO3FCQUM5QyxtQkFBbUIsRUFDM0IsQ0FBQztnQkFDRixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtvQkFDNUIsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUM7b0JBQzdDLG9CQUFvQixDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUNsRSxvQkFBb0IsQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakUsQ0FBQyxDQUFDLENBQUMsQ0FDTixDQUFDO2lCQUNMO2FBQ0o7U0FDSjtRQUVELFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksd0JBQXdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQzFELENBQUM7OzJHQXRWUSxhQUFhLDhGQXVDRixlQUFlOytHQXZDMUIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkF1Q00sUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCb29sZWFuT3BlcmF0b3J9IGZyb20gJy4uL21vZGVscy9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnLi4vbW9kZWxzL3ByZWRpY2F0ZS9wcmVkaWNhdGUnO1xuaW1wb3J0IHtTaW1wbGVGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge01lcmdlT3BlcmF0b3J9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtQcmVkaWNhdGVSZW1vdmFsRXZlbnR9IGZyb20gJy4uL21vZGVscy9wcmVkaWNhdGUtcmVtb3ZhbC1ldmVudCc7XG5pbXBvcnQge1F1ZXJ5fSBmcm9tICcuLi9tb2RlbHMvcXVlcnkvcXVlcnknO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RWRpdGFibGVDbGF1c2VQcmVkaWNhdGVXaXRoR2VuZXJhdG9yc30gZnJvbSAnLi4vbW9kZWxzL3ByZWRpY2F0ZS9lZGl0YWJsZS1jbGF1c2UtcHJlZGljYXRlLXdpdGgtZ2VuZXJhdG9ycyc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9tb2RlbHMvY2F0ZWdvcnkvY2F0ZWdvcnknO1xuaW1wb3J0IHtQcmVkaWNhdGVUcmVlTWV0YWRhdGF9IGZyb20gJy4uL21vZGVscy9wZXJzaXN0YW5jZS9nZW5lcmF0b3ItbWV0YWRhdGEnO1xuaW1wb3J0IHtOQUVfQkFTRV9GSUxURVJ9IGZyb20gJy4uL21vZGVscy9iYXNlLWZpbHRlci1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtCYXNlRmlsdGVyfSBmcm9tICcuLi9tb2RlbHMvYmFzZS1maWx0ZXInO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtDYXRlZ29yeUZhY3Rvcnl9IGZyb20gJy4uL2NhdGVnb3J5LWZhY3RvcnkvY2F0ZWdvcnktZmFjdG9yeSc7XG5pbXBvcnQge0ZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvZmlsdGVyLXR5cGUnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtGaWx0ZXJNZXRhZGF0YX0gZnJvbSAnLi4vbW9kZWxzL3BlcnNpc3RhbmNlL2ZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0ZpbHRlclRleHRTZWdtZW50fSBmcm9tICcuLi9tb2RlbHMvcGVyc2lzdGFuY2UvZmlsdGVyLXRleHQtc2VnbWVudCc7XG5cbi8qKlxuICogSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbHRlciB0aGF0IGlzIGN1cnJlbnRseSBhcHBsaWVkIHRvIHRoZSB2aWV3IGNvbXBvbmVudCwgdGhhdCBwcm92aWRlcyB0aGlzIHNlcnZpY2VzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgRmlsdGVyfSB0aGF0IGlzIGFwcGxpZWQgdG8gdGhlIHZpZXcsIGV2ZW4gaWYgdGhlIHVzZXIgZG9lc24ndCBzZWFyY2ggYW55dGhpbmcuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9iYXNlRmlsdGVyOiBGaWx0ZXI7XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHtAbGluayBQcmVkaWNhdGV9IHRyZWUgcm9vdCBmb3IgdXNlciBzZWFyY2ggcXVlcmllcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3Jvb3RQcmVkaWNhdGU6IEVkaXRhYmxlQ2xhdXNlUHJlZGljYXRlV2l0aEdlbmVyYXRvcnM7XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHtAbGluayBGaWx0ZXJ9IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGFwcGxpZWQgdG8gdGhlIHZpZXcuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9hY3RpdmVGaWx0ZXI6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXI+O1xuICAgIC8qKlxuICAgICAqIEhvbGRzIHRoZSBmdWxsIHRleHQge0BsaW5rIEZpbHRlcn0gaWYgc2V0LCBgdW5kZWZpbmVkYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9mdWxsVGV4dEZpbHRlcjogU2ltcGxlRmlsdGVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRleCBvZiBhIHJlbW92ZWQge0BsaW5rIFByZWRpY2F0ZX0gaXMgZW1taXRlZCBpbnRvIHRoaXMgc3RyZWFtXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9wcmVkaWNhdGVSZW1vdmVkJDogU3ViamVjdDxQcmVkaWNhdGVSZW1vdmFsRXZlbnQ+O1xuICAgIHByb3RlY3RlZCBfbG9hZGluZ0Zyb21NZXRhZGF0YSQ6IExvYWRpbmdFbWl0dGVyO1xuICAgIC8qKlxuICAgICAqIFRoZSBgcm9vdFByZWRpY2F0ZWAgdXNlcyB0aGlzIHN0cmVhbSB0byBub3RpZnkgdGhlIHNlYXJjaCBzZXJ2aWNlIGFib3V0IGNoYW5nZXMgdG8gdGhlIGhlbGQgcXVlcnlcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcmVkaWNhdGVRdWVyeUNoYW5nZWQkOiBTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3ViRmlsdGVyOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBUaGUge0BsaW5rIFByZWRpY2F0ZX0gdHJlZSByb290IHVzZXMgYW4gW0FORF17QGxpbmsgQm9vbGVhbk9wZXJhdG9yI0FORH0gb3BlcmF0b3IgdG8gY29tYmluZSB0aGUgUHJlZGljYXRlcy5cbiAgICAgKiBAcGFyYW0gX2xvZyB7QGxpbmsgTG9nZ2VyU2VydmljZX1cbiAgICAgKiBAcGFyYW0gX2NhdGVnb3J5RmFjdG9yeSBhIHtAbGluayBDYXRlZ29yeUZhY3Rvcnl9IGluc3RhbmNlLiBUaGlzIGRlcGVuZGVuY3kgaXMgb3B0aW9uYWwuXG4gICAgICogSXQgaXMgcmVxdWlyZWQgaWYgd2Ugd2FudCB0byBsb2FkIHByZWRpY2F0ZSBmaWx0ZXIgZnJvbSBzYXZlZCBtZXRhZGF0YVxuICAgICAqIEBwYXJhbSBiYXNlRmlsdGVyIEZpbHRlciB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSB2aWV3IHdoZW4gbm8gc2VhcmNoaW5nIGlzIGJlaW5nIHBlcmZvcm1lZC5cbiAgICAgKiBJbmplY3RlZCB0cm91Z2ggdGhlIHtAbGluayBOQUVfQkFTRV9GSUxURVJ9IGluamVjdGlvbiB0b2tlbi5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX2NhdGVnb3J5RmFjdG9yeTogQ2F0ZWdvcnlGYWN0b3J5LFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTkFFX0JBU0VfRklMVEVSKSBiYXNlRmlsdGVyOiBCYXNlRmlsdGVyKSB7XG4gICAgICAgIGlmIChiYXNlRmlsdGVyLmZpbHRlciBpbnN0YW5jZW9mIEZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5fYmFzZUZpbHRlciA9IGJhc2VGaWx0ZXIuZmlsdGVyLmNsb25lKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYmFzZUZpbHRlci5maWx0ZXIgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9iYXNlRmlsdGVyID0gbmV3IFNpbXBsZUZpbHRlcignJywgYmFzZUZpbHRlci5maWx0ZXJUeXBlLCB7cHJvY2Vzczoge2lkZW50aWZpZXI6ICdfX0VNUFRZX18nfX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBCYXNlRmlsdGVyIGlucHV0ISBZb3UgbXVzdCBwcm92aWRlIHRoZSBOQUVfQkFTRV9GSUxURVIgaW5qZWN0aW9uIHRva2VuIHdpdGggcHJvcGVyIHZhbHVlcyEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ByZWRpY2F0ZVF1ZXJ5Q2hhbmdlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICB0aGlzLl9yb290UHJlZGljYXRlID0gbmV3IEVkaXRhYmxlQ2xhdXNlUHJlZGljYXRlV2l0aEdlbmVyYXRvcnMoQm9vbGVhbk9wZXJhdG9yLkFORCwgdGhpcy5fcHJlZGljYXRlUXVlcnlDaGFuZ2VkJCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRmlsdGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXI+KHRoaXMuX2Jhc2VGaWx0ZXIpO1xuICAgICAgICB0aGlzLl9wcmVkaWNhdGVSZW1vdmVkJCA9IG5ldyBTdWJqZWN0PFByZWRpY2F0ZVJlbW92YWxFdmVudD4oKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0Zyb21NZXRhZGF0YSQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcblxuICAgICAgICBpZiAoYmFzZUZpbHRlci5maWx0ZXIgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN1YkZpbHRlciA9IGJhc2VGaWx0ZXIuZmlsdGVyLnN1YnNjcmliZSgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmFzZUZpbHRlciA9IGZpbHRlci5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJlZGljYXRlUXVlcnlDaGFuZ2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVGaWx0ZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ByZWRpY2F0ZVJlbW92ZWQkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlci5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9wcmVkaWNhdGVRdWVyeUNoYW5nZWQkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmICh0aGlzLnN1YkZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5zdWJGaWx0ZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sb2FkaW5nRnJvbU1ldGFkYXRhJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9yb290UHJlZGljYXRlLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgRmlsdGVyIHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgdG8gdGhlIHZpZXdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlcigpOiBGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gYE9ic2VydmFibGVgIHRoYXQgdXBkYXRlcyBldmVyeSB0aW1lIHRoZSBhY3RpdmUgRmlsdGVyIGNoYW5nZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXIkKCk6IE9ic2VydmFibGU8RmlsdGVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGEgZmlsdGVyIG90aGVyIHRoYW4gdGhlIGJhc2UgZmlsdGVyIGlzIGN1cnJlbnRseSBhcHBsaWVkLlxuICAgICAqIFJldHVybnMgYGZhbHNlYCBpZiBvbmx5IHRoZSBiYXNlIGZpbHRlciBpcyBjdXJyZW50bHkgYXBwbGllZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxGaWx0ZXJzQXBwbGllZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9yb290UHJlZGljYXRlLnF1ZXJ5LmlzRW1wdHkgfHwgISF0aGlzLl9mdWxsVGV4dEZpbHRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IHZpc2libGUgcHJlZGljYXRlcyBhcmUgYXBwbGllZC5cbiAgICAgKiBSZXR1cm5zIGBmYWxzZWAgaWYgdGhlcmUgYXJlIG5vIHByZWRpY2F0ZXMsIG9yIGlmIHRoZXJlIGFyZSBvbmx5IGhpZGRlbiBwcmVkaWNhdGVzIGFwcGxpZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhhc1Zpc2libGVQcmVkaWNhdGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGNvbnN0IHByZWRpY2F0ZSBvZiB0aGlzLl9yb290UHJlZGljYXRlLmdldFByZWRpY2F0ZU1hcCgpLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlLmlzVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBhIGNvcHkgb2YgdGhlIGJhc2UgZmlsdGVyXG4gICAgICovXG4gICAgcHVibGljIGdldCBiYXNlRmlsdGVyKCk6IEZpbHRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iYXNlRmlsdGVyLmNsb25lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBwcmVkaWNhdGUgd2hlbmV2ZXIgYSBwcmVkaWNhdGUgaXMgcmVtb3ZlZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJlZGljYXRlUmVtb3ZlZCQoKTogT2JzZXJ2YWJsZTxQcmVkaWNhdGVSZW1vdmFsRXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWRpY2F0ZVJlbW92ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSByb290IHByZWRpY2F0ZSBvZiB0aGUgc2VhcmNoIHNlcnZpY2UsIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgc2VhcmNoIHJlcXVlc3RzIHdpdGggY3VzdG9tIHF1ZXJpZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHJvb3RQcmVkaWNhdGUoKTogRWRpdGFibGVDbGF1c2VQcmVkaWNhdGVXaXRoR2VuZXJhdG9ycyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290UHJlZGljYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBmaWx0ZXIgaGVsZCBpbiB0aGlzIHNlYXJjaCBzZXJ2aWNlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldCBmaWx0ZXJUeXBlKCk6IEZpbHRlclR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRmlsdGVyLnR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgd2hldGhlciB0aGUgc2VhcmNoIHNlcnZpY2UgaXMgY3VycmVudGx5IGxvYWRpbmcgaXRzIHN0YXRlIGZyb20gbWV0YWRhdGEgb3Igbm90LlxuICAgICAqXG4gICAgICogU2VlIFtsb2FkRnJvbU1ldGFkYXRhKClde0BsaW5rIFNlYXJjaFNlcnZpY2UjbG9hZEZyb21NZXRhZGF0YX1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmdGcm9tTWV0YWRhdGEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nRnJvbU1ldGFkYXRhJC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBhbiBgT2JzZXJ2YWJsZWAgdGhhdCBlbWl0cyBgdHJ1ZWAgaWYgdGhlIHNlYXJjaCBzZXJ2aWNlIGlzIGN1cnJlbnRseSBsb2FkaW5nIGl0cyBzdGF0ZSBmcm9tIG1ldGFkYXRhLFxuICAgICAqIGVtaXRzIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogU2VlIFtsb2FkRnJvbU1ldGFkYXRhKClde0BsaW5rIFNlYXJjaFNlcnZpY2UjbG9hZEZyb21NZXRhZGF0YX1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmdGcm9tTWV0YWRhdGEkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZ0Zyb21NZXRhZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSByb290IHByZWRpY2F0ZXMgcXVlcnkgY2hhbmdlc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgcHJlZGljYXRlUXVlcnlDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPFF1ZXJ5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVkaWNhdGVRdWVyeUNoYW5nZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5fcm9vdFByZWRpY2F0ZS5xdWVyeSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4gcHJldiAmJiBwcmV2LmVxdWFscyhjdXJyKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEge0BsaW5rIFByZWRpY2F0ZX0gdG8gdGhlIFByZWRpY2F0ZSByb290IGFuZCB1cGRhdGVzIHRoZSBhY3RpdmUgRmlsdGVyLlxuICAgICAqXG4gICAgICogUHJlZGljYXRlcyBhZGRlZCB0aGlzIHdheSB3aWxsIG5vdCBiZSB2aXNpYmxlIGluIHRoZSBzZWFyY2ggR1VJLlxuICAgICAqIElmIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB5b3VyIHByZWRpY2F0ZXMgYXJlIHZpc2libGUgKGFuZCBlZGl0YWJsZSlcbiAgICAgKiB1c2UgdGhlIFthZGRHZW5lcmF0ZWRMZWFmUHJlZGljYXRlKClde0BsaW5rIFNlYXJjaFNlcnZpY2UjYWRkR2VuZXJhdGVkTGVhZlByZWRpY2F0ZX0gbWV0aG9kIGluc3RlYWQuXG4gICAgICogQHBhcmFtIG5ld1ByZWRpY2F0ZSBQcmVkaWNhdGUgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHNlYXJjaCBxdWVyaWVzLlxuICAgICAqIEByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgYWRkZWQgUHJlZGljYXRlXG4gICAgICovXG4gICAgcHVibGljIGFkZFByZWRpY2F0ZShuZXdQcmVkaWNhdGU6IFByZWRpY2F0ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290UHJlZGljYXRlLmFkZFByZWRpY2F0ZShuZXdQcmVkaWNhdGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGhpZGRlbiBicmFuY2ggb2YgdGhlIHByZWRpY2F0ZSB0cmVlIHdpdGggYSBzaW5ndWxhciBsZWFmIG5vZGUgY29udGFpbmluZyB0aGUgcHJvdmlkZWQgUXVlcnkuXG4gICAgICpcbiAgICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGFkZCBwcmVkaWNhdGVzIHRvIHRoZSBzZWFyY2ggdHJlZSAodGhpbmsgaGVhZGVyIHNlYXJjaCksXG4gICAgICogd2hpY2ggY2FuIGJlIG1hZGUgdmlzaWJsZSBhbmQgZWRpdGFibGUgaW4gdGhlIHNlYXJjaCBHVUkgbGF0ZXIuXG4gICAgICogQHBhcmFtIGdlbmVyYXRvciB0aGUgZ2VuZXJhdG9yIHRoYXQgaXMgaW4gc3VjaCBzdGF0ZSwgdGhhdCBpdCBnZW5lcmF0ZXMgdGhlIFF1ZXJ5LCB0aGF0IHNob3VsZCBiZSBhZGRlZCBhcyBicmFuY2gvbGVhZi5cbiAgICAgKiBJZiB0aGUgZ2VuZXJhdG9yIGRvZXNuJ3QgY3VycmVudGx5IGdlbmVyYXRlIGEgcXVlcnkgYSBub2RlIHdpdGggYW4gZW1wdHkgcXVlcnkgd2lsbCBiZSBhZGRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkR2VuZXJhdGVkTGVhZlByZWRpY2F0ZShnZW5lcmF0b3I6IENhdGVnb3J5PGFueT4pOiBudW1iZXIge1xuICAgICAgICBjb25zdCBicmFuY2hJZCA9IHRoaXMuX3Jvb3RQcmVkaWNhdGUuYWRkTmV3Q2xhdXNlUHJlZGljYXRlKEJvb2xlYW5PcGVyYXRvci5PUiwgZmFsc2UpO1xuICAgICAgICBjb25zdCBicmFuY2ggPSAoXG4gICAgICAgICAgICB0aGlzLl9yb290UHJlZGljYXRlLmdldFByZWRpY2F0ZU1hcCgpLmdldChicmFuY2hJZCkuZ2V0V3JhcHBlZFByZWRpY2F0ZSgpIGFzIHVua25vd24gYXMgRWRpdGFibGVDbGF1c2VQcmVkaWNhdGVXaXRoR2VuZXJhdG9yc1xuICAgICAgICApO1xuICAgICAgICBicmFuY2guYWRkTmV3UHJlZGljYXRlRnJvbUdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICAgICAgICByZXR1cm4gYnJhbmNoSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUge0BsaW5rIFByZWRpY2F0ZX0gb2JqZWN0IGZyb20gdGhlIHByb3ZpZGVkIGluZGV4LiBJZiB0aGUgaW5kZXggaXMgaW52YWxpZCBkb2VzIG5vdGhpbmcuXG4gICAgICogVXBkYXRlcyB0aGUgdGhlIGFjdGl2ZSBGaWx0ZXIgaWYgdGhlIFByZWRpY2F0ZSB0cmVlIHdhcyBhZmZlY3RlZC5cbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgdGhlIFByZWRpY2F0ZSB0aGF0IHNob3VsZCBiZSByZW1vdmVkXG4gICAgICogQHBhcmFtIGNsZWFySW5wdXQgd2hldGhlciB0aGUgaW5wdXQsIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHByZWRpY2F0ZSBzaG91bGQgYmUgY2xlYXJlZFxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVQcmVkaWNhdGUoaW5kZXg6IG51bWJlciwgY2xlYXJJbnB1dCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3RQcmVkaWNhdGUucmVtb3ZlUHJlZGljYXRlKGluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5fcHJlZGljYXRlUmVtb3ZlZCQubmV4dCh7aW5kZXgsIGNsZWFySW5wdXR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHtAbGluayBQcmVkaWNhdGV9IG9iamVjdHMgdGhhdCBjb250cmlidXRlIHRvIHRoZSBzZWFyY2guIFVwZGF0ZXMgdGhlIGFjdGl2ZSBGaWx0ZXIgaWYgaXQgd2FzIGFmZmVjdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNsZWFySGlkZGVuIHdoZXRoZXIgdGhlIGhpZGRlbiBwcmVkaWNhdGVzIHNob3VsZCBiZSBjbGVhcmVkIGFzIHdlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXJQcmVkaWNhdGVzKGNsZWFySGlkZGVuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3RQcmVkaWNhdGUuZ2V0UHJlZGljYXRlTWFwKCkuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2lkLCBwcmVkaWNhdGVdIG9mIHRoaXMuX3Jvb3RQcmVkaWNhdGUuZ2V0UHJlZGljYXRlTWFwKCkuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNsZWFySGlkZGVuIHx8IHByZWRpY2F0ZS5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVQcmVkaWNhdGUoaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEge0BsaW5rIEZpbHRlcn0gd2l0aCB0aGUgW2Z1bGxUZXh0XXtAbGluayBDYXNlU2VhcmNoUmVxdWVzdEJvZHkjZnVsbFRleHR9IGF0dHJpYnV0ZSBzZXQgdG8gdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqIElmIGZ1bGwgdGV4dCBmaWx0ZXIgaXMgYWxyZWFkeSBzZXQsIGl0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAgICogQHBhcmFtIHNlYXJjaGVkU3Vic3RyaW5nIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkIG9uIGFsbCBmdWxsIHRleHQgZmllbGRzXG4gICAgICovXG4gICAgcHVibGljIHNldEZ1bGxUZXh0RmlsdGVyKHNlYXJjaGVkU3Vic3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2hpdGVTcGFjZWRTdWJzdHJpbmcgPSBzZWFyY2hlZFN1YnN0cmluZy5yZXBsYWNlKCcgJywgJ1xcXFwgJyk7XG4gICAgICAgIHRoaXMuX2Z1bGxUZXh0RmlsdGVyID0gbmV3IFNpbXBsZUZpbHRlcignJywgdGhpcy5fYmFzZUZpbHRlci50eXBlLCB7ZnVsbFRleHQ6IHdoaXRlU3BhY2VkU3Vic3RyaW5nfSk7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBmdWxsIHRleHQgZmlsdGVyIChpZiBzZXQpLiBJZiB0aGUgZnVsbCB0ZXh0IGZpbHRlciBpcyBub3Qgc2V0LCBkb2VzIG5vdGhpbmcuXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyRnVsbFRleHRGaWx0ZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdhc0Z1bGx0ZXh0U2V0ID0gdGhpcy5fZnVsbFRleHRGaWx0ZXIgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fZnVsbFRleHRGaWx0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh3YXNGdWxsdGV4dFNldCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVGaWx0ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3dzIHRoZSBwcmVkaWNhdGVzIHdpdGggdGhlIGdpdmVuIGlkcy4gU2tpcHMgaWRzIHRoYXQgZG9uJ3QgZXhpc3QuXG4gICAgICogQHBhcmFtIHByZWRpY2F0ZUlkcyB0aGUgaWRzIG9mIHRoZSBwcmVkaWNhdGVzIHRoYXQgc2hvdWxkIGJlIHNob3duLlxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KHByZWRpY2F0ZUlkczogQXJyYXk8bnVtYmVyPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yb290UHJlZGljYXRlLnNob3dQcmVkaWNhdGVzKHByZWRpY2F0ZUlkcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZHMgdGhlIGN1cnJlbnQgcXVlcnkgZnJvbSB0aGUgcHJlZGljYXRlIHRyZWUsIGNvbWJpbmVzIGl0IHdpdGggdGhlIGJhc2UgRmlsdGVyIGFuZCBmdWxsIHRleHQgRmlsdGVyIChpZiBzZXQpXG4gICAgICogYW5kIHVwZGF0ZXMgdGhlIGFjdGl2ZSBGaWx0ZXIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUFjdGl2ZUZpbHRlcigpOiB2b2lkIHtcbiAgICAgICAgbGV0IGFkZGl0aW9uYWxGaWx0ZXI6IEZpbHRlcjtcbiAgICAgICAgaWYgKCF0aGlzLl9yb290UHJlZGljYXRlLnF1ZXJ5LmlzRW1wdHkpIHtcbiAgICAgICAgICAgIGFkZGl0aW9uYWxGaWx0ZXIgPSBuZXcgU2ltcGxlRmlsdGVyKCcnLCB0aGlzLl9iYXNlRmlsdGVyLnR5cGUsIHtxdWVyeTogdGhpcy5fcm9vdFByZWRpY2F0ZS5xdWVyeS52YWx1ZX0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9mdWxsVGV4dEZpbHRlcikge1xuICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmlsdGVyID0gYWRkaXRpb25hbEZpbHRlci5tZXJnZSh0aGlzLl9mdWxsVGV4dEZpbHRlciwgTWVyZ2VPcGVyYXRvci5BTkQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmlsdGVyID0gdGhpcy5fZnVsbFRleHRGaWx0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkZGl0aW9uYWxGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlci5uZXh0KHRoaXMuX2Jhc2VGaWx0ZXIubWVyZ2UoYWRkaXRpb25hbEZpbHRlciwgTWVyZ2VPcGVyYXRvci5BTkQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlci5uZXh0KHRoaXMuX2Jhc2VGaWx0ZXIuY2xvbmUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgcHJlZGljYXRlIHRyZWUgY29udGFpbnMgbm8gY29tcGxldGUgcXVlcnkuXG4gICAgICogT3RoZXJ3aXNlIHJldHVybnMgdGhlIHNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgY29tcGxldGVkIHF1ZXJpZXMgaW4gdGhlIHByZWRpY2F0ZSB0cmVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVQcmVkaWNhdGVNZXRhZGF0YSgpOiBQcmVkaWNhdGVUcmVlTWV0YWRhdGEgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdFByZWRpY2F0ZS5jcmVhdGVHZW5lcmF0b3JNZXRhZGF0YSgpIGFzIFByZWRpY2F0ZVRyZWVNZXRhZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyB0aGUgY3VycmVudCBwcmVkaWNhdGUgZmlsdGVyIGJ5IHRoZSBvbmUgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIG1ldGFkYXRhLlxuICAgICAqXG4gICAgICogVGhlIHtAbGluayBDYXRlZ29yeUZhY3Rvcnl9IGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgZm9yIHRoaXMgc2VydmljZSBpZiB3ZSB3YW50IHRvIHVzZSB0aGlzIG1ldGhvZC4gTG9ncyBhbiBlcnJvciBhbmQgZG9lcyBub3RoaW5nLlxuICAgICAqXG4gICAgICogVGhlIGBmaWx0ZXJUeXBlYCBvZiB0aGlzIHNlYXJjaCBzZXJ2aWNlIG11c3QgbWF0Y2ggdGhlIGBmaWx0ZXJUeXBlYCBvZiB0aGUgcHJvdmlkZWQgbWV0YWRhdGEuIE90aGVyd2lzZSBhbiBlcnJvciBpcyB0aHJvd24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGEgdGhlIHNlcmlhbGl6ZWQgc3RhdGUgb2YgdGhlIHByZWRpY2F0ZSB0cmVlIHRoYXQgc2hvdWxkIGJlIHJlc3RvcmVkIHRvIHRoaXMgc2VhcmNoIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZEZyb21NZXRhZGF0YShtZXRhZGF0YTogRmlsdGVyTWV0YWRhdGEpIHtcbiAgICAgICAgaWYgKHRoaXMuX2NhdGVnb3J5RmFjdG9yeSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdBIENhdGVnb3J5RmFjdG9yeSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGZvciB0aGUgU2VhcmNoU2VydmljZSdcbiAgICAgICAgICAgICAgICArICcgaWYgeW91IHdhbnQgdG8gcmVjb25zdHJ1Y3QgYSBwcmVkaWNhdGUgZmlsdGVyIGZyb20gc2F2ZWQgbWV0YWRhdGEnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXRhZGF0YS5maWx0ZXJUeXBlICE9PSB0aGlzLmZpbHRlclR5cGUpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBUaGUgZmlsdGVyIHR5cGUgb2YgdGhlIHByb3ZpZGVkIG1ldGFkYXRhICgke21ldGFkYXRhLmZpbHRlclR5cGVcbiAgICAgICAgICAgIH0pIGRvZXMgbm90IG1hdGNoIHRoZSBmaWx0ZXIgdHlwZSBvZiB0aGUgc2VhcmNoIHNlcnZpY2UgKCR7dGhpcy5maWx0ZXJUeXBlfSkhYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyUHJlZGljYXRlcyh0cnVlKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0Zyb21NZXRhZGF0YSQub24oKTtcblxuICAgICAgICBjb25zdCBnZW5lcmF0b3JPYnNlcnZhYmxlcyA9IFtdO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YS5wcmVkaWNhdGVNZXRhZGF0YSkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2xhdXNlIG9mIG1ldGFkYXRhLnByZWRpY2F0ZU1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoSWQgPSB0aGlzLl9yb290UHJlZGljYXRlLmFkZE5ld0NsYXVzZVByZWRpY2F0ZShCb29sZWFuT3BlcmF0b3IuT1IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaFByZWRpY2F0ZSA9IChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm9vdFByZWRpY2F0ZS5nZXRQcmVkaWNhdGVNYXAoKS5nZXQoYnJhbmNoSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0V3JhcHBlZFByZWRpY2F0ZSgpIGFzIHVua25vd24gYXMgRWRpdGFibGVDbGF1c2VQcmVkaWNhdGVXaXRoR2VuZXJhdG9yc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcmVkaWNhdGUgb2YgY2xhdXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsQnJhbmNoUmVmZXJlbmNlID0gYnJhbmNoUHJlZGljYXRlO1xuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JPYnNlcnZhYmxlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2F0ZWdvcnlGYWN0b3J5LmdldEZyb21NZXRhZGF0YShwcmVkaWNhdGUpLnBpcGUodGFwKGdlbmVyYXRvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxCcmFuY2hSZWZlcmVuY2UuYWRkTmV3UHJlZGljYXRlRnJvbUdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9ya0pvaW4oZ2VuZXJhdG9yT2JzZXJ2YWJsZXMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nRnJvbU1ldGFkYXRhJC5vZmYoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGFuIEFycmF5IG9mIGZpbHRlciB0ZXh0IHNlZ21lbnRzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgY3VycmVudGx5IGRpc3BsYXllZCBjb21wbGV0ZWQgcHJlZGljYXRlc1xuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVGaWx0ZXJUZXh0U2VnbWVudHMoKTogQXJyYXk8RmlsdGVyVGV4dFNlZ21lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RQcmVkaWNhdGUuY3JlYXRlRmlsdGVyVGV4dFNlZ21lbnRzKCk7XG4gICAgfVxufVxuIl19
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3NlYXJjaC9zZWFyY2gtc2VydmljZS9zZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBRWxGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFHakUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUdwSCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFLdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBSTdEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUE2QnRCOzs7Ozs7O09BT0c7SUFDSCxZQUFzQixJQUFtQixFQUNQLGdCQUFpQyxFQUM5QixVQUFzQjtRQUZyQyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ1AscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUUvRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLFlBQVksTUFBTSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxX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QyxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO3FCQUM5QyxtQkFBbUIsRUFDM0IsQ0FBQztnQkFDRixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtvQkFDNUIsTUFBTSxvQkFBb0IsR0FBRyxlQUFlLENBQUM7b0JBQzdDLG9CQUFvQixDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUNsRSxvQkFBb0IsQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakUsQ0FBQyxDQUFDLENBQUMsQ0FDTixDQUFDO2lCQUNMO2FBQ0o7U0FDSjtRQUVELFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksd0JBQXdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQzFELENBQUM7OzJHQXRWUSxhQUFhLDhGQXVDRixlQUFlOytHQXZDMUIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkF1Q00sUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCb29sZWFuT3BlcmF0b3J9IGZyb20gJy4uL21vZGVscy9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnLi4vbW9kZWxzL3ByZWRpY2F0ZS9wcmVkaWNhdGUnO1xuaW1wb3J0IHtTaW1wbGVGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge01lcmdlT3BlcmF0b3J9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtQcmVkaWNhdGVSZW1vdmFsRXZlbnR9IGZyb20gJy4uL21vZGVscy9wcmVkaWNhdGUtcmVtb3ZhbC1ldmVudCc7XG5pbXBvcnQge1F1ZXJ5fSBmcm9tICcuLi9tb2RlbHMvcXVlcnkvcXVlcnknO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RWRpdGFibGVDbGF1c2VQcmVkaWNhdGVXaXRoR2VuZXJhdG9yc30gZnJvbSAnLi4vbW9kZWxzL3ByZWRpY2F0ZS9lZGl0YWJsZS1jbGF1c2UtcHJlZGljYXRlLXdpdGgtZ2VuZXJhdG9ycyc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9tb2RlbHMvY2F0ZWdvcnkvY2F0ZWdvcnknO1xuaW1wb3J0IHtQcmVkaWNhdGVUcmVlTWV0YWRhdGF9IGZyb20gJy4uL21vZGVscy9wZXJzaXN0YW5jZS9nZW5lcmF0b3ItbWV0YWRhdGEnO1xuaW1wb3J0IHtOQUVfQkFTRV9GSUxURVJ9IGZyb20gJy4uL21vZGVscy9iYXNlLWZpbHRlci1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtCYXNlRmlsdGVyfSBmcm9tICcuLi9tb2RlbHMvYmFzZS1maWx0ZXInO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtDYXRlZ29yeUZhY3Rvcnl9IGZyb20gJy4uL2NhdGVnb3J5LWZhY3RvcnkvY2F0ZWdvcnktZmFjdG9yeSc7XG5pbXBvcnQge0ZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvZmlsdGVyLXR5cGUnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtGaWx0ZXJNZXRhZGF0YX0gZnJvbSAnLi4vbW9kZWxzL3BlcnNpc3RhbmNlL2ZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0ZpbHRlclRleHRTZWdtZW50fSBmcm9tICcuLi9tb2RlbHMvcGVyc2lzdGFuY2UvZmlsdGVyLXRleHQtc2VnbWVudCc7XG5cbi8qKlxuICogSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbHRlciB0aGF0IGlzIGN1cnJlbnRseSBhcHBsaWVkIHRvIHRoZSB2aWV3IGNvbXBvbmVudCwgdGhhdCBwcm92aWRlcyB0aGlzIHNlcnZpY2VzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgRmlsdGVyfSB0aGF0IGlzIGFwcGxpZWQgdG8gdGhlIHZpZXcsIGV2ZW4gaWYgdGhlIHVzZXIgZG9lc24ndCBzZWFyY2ggYW55dGhpbmcuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9iYXNlRmlsdGVyOiBGaWx0ZXI7XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHtAbGluayBQcmVkaWNhdGV9IHRyZWUgcm9vdCBmb3IgdXNlciBzZWFyY2ggcXVlcmllcy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3Jvb3RQcmVkaWNhdGU6IEVkaXRhYmxlQ2xhdXNlUHJlZGljYXRlV2l0aEdlbmVyYXRvcnM7XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHtAbGluayBGaWx0ZXJ9IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGFwcGxpZWQgdG8gdGhlIHZpZXcuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9hY3RpdmVGaWx0ZXI6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXI+O1xuICAgIC8qKlxuICAgICAqIEhvbGRzIHRoZSBmdWxsIHRleHQge0BsaW5rIEZpbHRlcn0gaWYgc2V0LCBgdW5kZWZpbmVkYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9mdWxsVGV4dEZpbHRlcjogU2ltcGxlRmlsdGVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRleCBvZiBhIHJlbW92ZWQge0BsaW5rIFByZWRpY2F0ZX0gaXMgZW1taXRlZCBpbnRvIHRoaXMgc3RyZWFtXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9wcmVkaWNhdGVSZW1vdmVkJDogU3ViamVjdDxQcmVkaWNhdGVSZW1vdmFsRXZlbnQ+O1xuICAgIHByb3RlY3RlZCBfbG9hZGluZ0Zyb21NZXRhZGF0YSQ6IExvYWRpbmdFbWl0dGVyO1xuICAgIC8qKlxuICAgICAqIFRoZSBgcm9vdFByZWRpY2F0ZWAgdXNlcyB0aGlzIHN0cmVhbSB0byBub3RpZnkgdGhlIHNlYXJjaCBzZXJ2aWNlIGFib3V0IGNoYW5nZXMgdG8gdGhlIGhlbGQgcXVlcnlcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcmVkaWNhdGVRdWVyeUNoYW5nZWQkOiBTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3ViRmlsdGVyOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBUaGUge0BsaW5rIFByZWRpY2F0ZX0gdHJlZSByb290IHVzZXMgYW4gW0FORF17QGxpbmsgQm9vbGVhbk9wZXJhdG9yI0FORH0gb3BlcmF0b3IgdG8gY29tYmluZSB0aGUgUHJlZGljYXRlcy5cbiAgICAgKiBAcGFyYW0gX2xvZyB7QGxpbmsgTG9nZ2VyU2VydmljZX1cbiAgICAgKiBAcGFyYW0gX2NhdGVnb3J5RmFjdG9yeSBhIHtAbGluayBDYXRlZ29yeUZhY3Rvcnl9IGluc3RhbmNlLiBUaGlzIGRlcGVuZGVuY3kgaXMgb3B0aW9uYWwuXG4gICAgICogSXQgaXMgcmVxdWlyZWQgaWYgd2Ugd2FudCB0byBsb2FkIHByZWRpY2F0ZSBmaWx0ZXIgZnJvbSBzYXZlZCBtZXRhZGF0YVxuICAgICAqIEBwYXJhbSBiYXNlRmlsdGVyIEZpbHRlciB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSB2aWV3IHdoZW4gbm8gc2VhcmNoaW5nIGlzIGJlaW5nIHBlcmZvcm1lZC5cbiAgICAgKiBJbmplY3RlZCB0cm91Z2ggdGhlIHtAbGluayBOQUVfQkFTRV9GSUxURVJ9IGluamVjdGlvbiB0b2tlbi5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX2NhdGVnb3J5RmFjdG9yeTogQ2F0ZWdvcnlGYWN0b3J5LFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTkFFX0JBU0VfRklMVEVSKSBiYXNlRmlsdGVyOiBCYXNlRmlsdGVyKSB7XG4gICAgICAgIGlmIChiYXNlRmlsdGVyLmZpbHRlciBpbnN0YW5jZW9mIEZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5fYmFzZUZpbHRlciA9IGJhc2VGaWx0ZXIuZmlsdGVyLmNsb25lKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYmFzZUZpbHRlci5maWx0ZXIgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9iYXNlRmlsdGVyID0gbmV3IFNpbXBsZUZpbHRlcignJywgYmFzZUZpbHRlci5maWx0ZXJUeXBlLCB7cHJvY2Vzczoge2lkZW50aWZpZXI6ICdfX0VNUFRZX18nfX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBCYXNlRmlsdGVyIGlucHV0ISBZb3UgbXVzdCBwcm92aWRlIHRoZSBOQUVfQkFTRV9GSUxURVIgaW5qZWN0aW9uIHRva2VuIHdpdGggcHJvcGVyIHZhbHVlcyEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ByZWRpY2F0ZVF1ZXJ5Q2hhbmdlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICB0aGlzLl9yb290UHJlZGljYXRlID0gbmV3IEVkaXRhYmxlQ2xhdXNlUHJlZGljYXRlV2l0aEdlbmVyYXRvcnMoQm9vbGVhbk9wZXJhdG9yLkFORCwgdGhpcy5fcHJlZGljYXRlUXVlcnlDaGFuZ2VkJCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRmlsdGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXI+KHRoaXMuX2Jhc2VGaWx0ZXIpO1xuICAgICAgICB0aGlzLl9wcmVkaWNhdGVSZW1vdmVkJCA9IG5ldyBTdWJqZWN0PFByZWRpY2F0ZVJlbW92YWxFdmVudD4oKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0Zyb21NZXRhZGF0YSQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcblxuICAgICAgICBpZiAoYmFzZUZpbHRlci5maWx0ZXIgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN1YkZpbHRlciA9IGJhc2VGaWx0ZXIuZmlsdGVyLnN1YnNjcmliZSgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmFzZUZpbHRlciA9IGZpbHRlci5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJlZGljYXRlUXVlcnlDaGFuZ2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVGaWx0ZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ByZWRpY2F0ZVJlbW92ZWQkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUZpbHRlci5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9wcmVkaWNhdGVRdWVyeUNoYW5nZWQkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmICh0aGlzLnN1YkZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5zdWJGaWx0ZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sb2FkaW5nRnJvbU1ldGFkYXRhJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9yb290UHJlZGljYXRlLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgRmlsdGVyIHRoYXQgaXMgY3VycmVudGx5IGFwcGxpZWQgdG8gdGhlIHZpZXdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZUZpbHRlcigpOiBGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRmlsdGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gYE9ic2VydmFibGVgIHRoYXQgdXBkYXRlcyBldmVyeSB0aW1lIHRoZSBhY3RpdmUgRmlsdGVyIGNoYW5nZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBhY3RpdmVGaWx0ZXIkKCk6IE9ic2VydmFibGU8RmlsdGVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVGaWx0ZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGEgZmlsdGVyIG90aGVyIHRoYW4gdGhlIGJhc2UgZmlsdGVyIGlzIGN1cnJlbnRseSBhcHBsaWVkLlxuICAgICAqIFJldHVybnMgYGZhbHNlYCBpZiBvbmx5IHRoZSBiYXNlIGZpbHRlciBpcyBjdXJyZW50bHkgYXBwbGllZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxGaWx0ZXJzQXBwbGllZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9yb290UHJlZGljYXRlLnF1ZXJ5LmlzRW1wdHkgfHwgISF0aGlzLl9mdWxsVGV4dEZpbHRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IHZpc2libGUgcHJlZGljYXRlcyBhcmUgYXBwbGllZC5cbiAgICAgKiBSZXR1cm5zIGBmYWxzZWAgaWYgdGhlcmUgYXJlIG5vIHByZWRpY2F0ZXMsIG9yIGlmIHRoZXJlIGFyZSBvbmx5IGhpZGRlbiBwcmVkaWNhdGVzIGFwcGxpZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhhc1Zpc2libGVQcmVkaWNhdGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICBmb3IgKGNvbnN0IHByZWRpY2F0ZSBvZiB0aGlzLl9yb290UHJlZGljYXRlLmdldFByZWRpY2F0ZU1hcCgpLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlLmlzVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBhIGNvcHkgb2YgdGhlIGJhc2UgZmlsdGVyXG4gICAgICovXG4gICAgcHVibGljIGdldCBiYXNlRmlsdGVyKCk6IEZpbHRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iYXNlRmlsdGVyLmNsb25lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBwcmVkaWNhdGUgd2hlbmV2ZXIgYSBwcmVkaWNhdGUgaXMgcmVtb3ZlZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJlZGljYXRlUmVtb3ZlZCQoKTogT2JzZXJ2YWJsZTxQcmVkaWNhdGVSZW1vdmFsRXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWRpY2F0ZVJlbW92ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSByb290IHByZWRpY2F0ZSBvZiB0aGUgc2VhcmNoIHNlcnZpY2UsIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgc2VhcmNoIHJlcXVlc3RzIHdpdGggY3VzdG9tIHF1ZXJpZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHJvb3RQcmVkaWNhdGUoKTogRWRpdGFibGVDbGF1c2VQcmVkaWNhdGVXaXRoR2VuZXJhdG9ycyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290UHJlZGljYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBmaWx0ZXIgaGVsZCBpbiB0aGlzIHNlYXJjaCBzZXJ2aWNlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIGdldCBmaWx0ZXJUeXBlKCk6IEZpbHRlclR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlRmlsdGVyLnR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgd2hldGhlciB0aGUgc2VhcmNoIHNlcnZpY2UgaXMgY3VycmVudGx5IGxvYWRpbmcgaXRzIHN0YXRlIGZyb20gbWV0YWRhdGEgb3Igbm90LlxuICAgICAqXG4gICAgICogU2VlIFtsb2FkRnJvbU1ldGFkYXRhKClde0BsaW5rIFNlYXJjaFNlcnZpY2UjbG9hZEZyb21NZXRhZGF0YX1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmdGcm9tTWV0YWRhdGEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nRnJvbU1ldGFkYXRhJC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBhbiBgT2JzZXJ2YWJsZWAgdGhhdCBlbWl0cyBgdHJ1ZWAgaWYgdGhlIHNlYXJjaCBzZXJ2aWNlIGlzIGN1cnJlbnRseSBsb2FkaW5nIGl0cyBzdGF0ZSBmcm9tIG1ldGFkYXRhLFxuICAgICAqIGVtaXRzIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogU2VlIFtsb2FkRnJvbU1ldGFkYXRhKClde0BsaW5rIFNlYXJjaFNlcnZpY2UjbG9hZEZyb21NZXRhZGF0YX1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmdGcm9tTWV0YWRhdGEkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZ0Zyb21NZXRhZGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW5ldmVyIHRoZSByb290IHByZWRpY2F0ZXMgcXVlcnkgY2hhbmdlc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgcHJlZGljYXRlUXVlcnlDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPFF1ZXJ5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVkaWNhdGVRdWVyeUNoYW5nZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5fcm9vdFByZWRpY2F0ZS5xdWVyeSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4gcHJldiAmJiBwcmV2LmVxdWFscyhjdXJyKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEge0BsaW5rIFByZWRpY2F0ZX0gdG8gdGhlIFByZWRpY2F0ZSByb290IGFuZCB1cGRhdGVzIHRoZSBhY3RpdmUgRmlsdGVyLlxuICAgICAqXG4gICAgICogUHJlZGljYXRlcyBhZGRlZCB0aGlzIHdheSB3aWxsIG5vdCBiZSB2aXNpYmxlIGluIHRoZSBzZWFyY2ggR1VJLlxuICAgICAqIElmIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB5b3VyIHByZWRpY2F0ZXMgYXJlIHZpc2libGUgKGFuZCBlZGl0YWJsZSlcbiAgICAgKiB1c2UgdGhlIFthZGRHZW5lcmF0ZWRMZWFmUHJlZGljYXRlKClde0BsaW5rIFNlYXJjaFNlcnZpY2UjYWRkR2VuZXJhdGVkTGVhZlByZWRpY2F0ZX0gbWV0aG9kIGluc3RlYWQuXG4gICAgICogQHBhcmFtIG5ld1ByZWRpY2F0ZSBQcmVkaWNhdGUgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHNlYXJjaCBxdWVyaWVzLlxuICAgICAqIEByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgYWRkZWQgUHJlZGljYXRlXG4gICAgICovXG4gICAgcHVibGljIGFkZFByZWRpY2F0ZShuZXdQcmVkaWNhdGU6IFByZWRpY2F0ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290UHJlZGljYXRlLmFkZFByZWRpY2F0ZShuZXdQcmVkaWNhdGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGhpZGRlbiBicmFuY2ggb2YgdGhlIHByZWRpY2F0ZSB0cmVlIHdpdGggYSBzaW5ndWxhciBsZWFmIG5vZGUgY29udGFpbmluZyB0aGUgcHJvdmlkZWQgUXVlcnkuXG4gICAgICpcbiAgICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGFkZCBwcmVkaWNhdGVzIHRvIHRoZSBzZWFyY2ggdHJlZSAodGhpbmsgaGVhZGVyIHNlYXJjaCksXG4gICAgICogd2hpY2ggY2FuIGJlIG1hZGUgdmlzaWJsZSBhbmQgZWRpdGFibGUgaW4gdGhlIHNlYXJjaCBHVUkgbGF0ZXIuXG4gICAgICogQHBhcmFtIGdlbmVyYXRvciB0aGUgZ2VuZXJhdG9yIHRoYXQgaXMgaW4gc3VjaCBzdGF0ZSwgdGhhdCBpdCBnZW5lcmF0ZXMgdGhlIFF1ZXJ5LCB0aGF0IHNob3VsZCBiZSBhZGRlZCBhcyBicmFuY2gvbGVhZi5cbiAgICAgKiBJZiB0aGUgZ2VuZXJhdG9yIGRvZXNuJ3QgY3VycmVudGx5IGdlbmVyYXRlIGEgcXVlcnkgYSBub2RlIHdpdGggYW4gZW1wdHkgcXVlcnkgd2lsbCBiZSBhZGRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkR2VuZXJhdGVkTGVhZlByZWRpY2F0ZShnZW5lcmF0b3I6IENhdGVnb3J5PGFueT4pOiBudW1iZXIge1xuICAgICAgICBjb25zdCBicmFuY2hJZCA9IHRoaXMuX3Jvb3RQcmVkaWNhdGUuYWRkTmV3Q2xhdXNlUHJlZGljYXRlKEJvb2xlYW5PcGVyYXRvci5PUiwgZmFsc2UpO1xuICAgICAgICBjb25zdCBicmFuY2ggPSAoXG4gICAgICAgICAgICB0aGlzLl9yb290UHJlZGljYXRlLmdldFByZWRpY2F0ZU1hcCgpLmdldChicmFuY2hJZCkuZ2V0V3JhcHBlZFByZWRpY2F0ZSgpIGFzIHVua25vd24gYXMgRWRpdGFibGVDbGF1c2VQcmVkaWNhdGVXaXRoR2VuZXJhdG9yc1xuICAgICAgICApO1xuICAgICAgICBicmFuY2guYWRkTmV3UHJlZGljYXRlRnJvbUdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICAgICAgICByZXR1cm4gYnJhbmNoSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUge0BsaW5rIFByZWRpY2F0ZX0gb2JqZWN0IGZyb20gdGhlIHByb3ZpZGVkIGluZGV4LiBJZiB0aGUgaW5kZXggaXMgaW52YWxpZCBkb2VzIG5vdGhpbmcuXG4gICAgICogVXBkYXRlcyB0aGUgdGhlIGFjdGl2ZSBGaWx0ZXIgaWYgdGhlIFByZWRpY2F0ZSB0cmVlIHdhcyBhZmZlY3RlZC5cbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgdGhlIFByZWRpY2F0ZSB0aGF0IHNob3VsZCBiZSByZW1vdmVkXG4gICAgICogQHBhcmFtIGNsZWFySW5wdXQgd2hldGhlciB0aGUgaW5wdXQsIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHByZWRpY2F0ZSBzaG91bGQgYmUgY2xlYXJlZFxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVQcmVkaWNhdGUoaW5kZXg6IG51bWJlciwgY2xlYXJJbnB1dCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3RQcmVkaWNhdGUucmVtb3ZlUHJlZGljYXRlKGluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5fcHJlZGljYXRlUmVtb3ZlZCQubmV4dCh7aW5kZXgsIGNsZWFySW5wdXR9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIHtAbGluayBQcmVkaWNhdGV9IG9iamVjdHMgdGhhdCBjb250cmlidXRlIHRvIHRoZSBzZWFyY2guIFVwZGF0ZXMgdGhlIGFjdGl2ZSBGaWx0ZXIgaWYgaXQgd2FzIGFmZmVjdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNsZWFySGlkZGVuIHdoZXRoZXIgdGhlIGhpZGRlbiBwcmVkaWNhdGVzIHNob3VsZCBiZSBjbGVhcmVkIGFzIHdlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXJQcmVkaWNhdGVzKGNsZWFySGlkZGVuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3RQcmVkaWNhdGUuZ2V0UHJlZGljYXRlTWFwKCkuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2lkLCBwcmVkaWNhdGVdIG9mIHRoaXMuX3Jvb3RQcmVkaWNhdGUuZ2V0UHJlZGljYXRlTWFwKCkuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNsZWFySGlkZGVuIHx8IHByZWRpY2F0ZS5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVQcmVkaWNhdGUoaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEge0BsaW5rIEZpbHRlcn0gd2l0aCB0aGUgW2Z1bGxUZXh0XXtAbGluayBDYXNlU2VhcmNoUmVxdWVzdEJvZHkjZnVsbFRleHR9IGF0dHJpYnV0ZSBzZXQgdG8gdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqIElmIGZ1bGwgdGV4dCBmaWx0ZXIgaXMgYWxyZWFkeSBzZXQsIGl0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAgICogQHBhcmFtIHNlYXJjaGVkU3Vic3RyaW5nIHZhbHVlIHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkIG9uIGFsbCBmdWxsIHRleHQgZmllbGRzXG4gICAgICovXG4gICAgcHVibGljIHNldEZ1bGxUZXh0RmlsdGVyKHNlYXJjaGVkU3Vic3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2hpdGVTcGFjZWRTdWJzdHJpbmcgPSBzZWFyY2hlZFN1YnN0cmluZy5yZXBsYWNlKC8gL2csICdcXFxcICcpO1xuICAgICAgICB0aGlzLl9mdWxsVGV4dEZpbHRlciA9IG5ldyBTaW1wbGVGaWx0ZXIoJycsIHRoaXMuX2Jhc2VGaWx0ZXIudHlwZSwge2Z1bGxUZXh0OiB3aGl0ZVNwYWNlZFN1YnN0cmluZ30pO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUZpbHRlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgZnVsbCB0ZXh0IGZpbHRlciAoaWYgc2V0KS4gSWYgdGhlIGZ1bGwgdGV4dCBmaWx0ZXIgaXMgbm90IHNldCwgZG9lcyBub3RoaW5nLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhckZ1bGxUZXh0RmlsdGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3YXNGdWxsdGV4dFNldCA9IHRoaXMuX2Z1bGxUZXh0RmlsdGVyICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2Z1bGxUZXh0RmlsdGVyID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAod2FzRnVsbHRleHRTZXQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWN0aXZlRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgcHJlZGljYXRlcyB3aXRoIHRoZSBnaXZlbiBpZHMuIFNraXBzIGlkcyB0aGF0IGRvbid0IGV4aXN0LlxuICAgICAqIEBwYXJhbSBwcmVkaWNhdGVJZHMgdGhlIGlkcyBvZiB0aGUgcHJlZGljYXRlcyB0aGF0IHNob3VsZCBiZSBzaG93bi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvdyhwcmVkaWNhdGVJZHM6IEFycmF5PG51bWJlcj4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcm9vdFByZWRpY2F0ZS5zaG93UHJlZGljYXRlcyhwcmVkaWNhdGVJZHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWRzIHRoZSBjdXJyZW50IHF1ZXJ5IGZyb20gdGhlIHByZWRpY2F0ZSB0cmVlLCBjb21iaW5lcyBpdCB3aXRoIHRoZSBiYXNlIEZpbHRlciBhbmQgZnVsbCB0ZXh0IEZpbHRlciAoaWYgc2V0KVxuICAgICAqIGFuZCB1cGRhdGVzIHRoZSBhY3RpdmUgRmlsdGVyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVBY3RpdmVGaWx0ZXIoKTogdm9pZCB7XG4gICAgICAgIGxldCBhZGRpdGlvbmFsRmlsdGVyOiBGaWx0ZXI7XG4gICAgICAgIGlmICghdGhpcy5fcm9vdFByZWRpY2F0ZS5xdWVyeS5pc0VtcHR5KSB7XG4gICAgICAgICAgICBhZGRpdGlvbmFsRmlsdGVyID0gbmV3IFNpbXBsZUZpbHRlcignJywgdGhpcy5fYmFzZUZpbHRlci50eXBlLCB7cXVlcnk6IHRoaXMuX3Jvb3RQcmVkaWNhdGUucXVlcnkudmFsdWV9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZnVsbFRleHRGaWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsRmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpbHRlciA9IGFkZGl0aW9uYWxGaWx0ZXIubWVyZ2UodGhpcy5fZnVsbFRleHRGaWx0ZXIsIE1lcmdlT3BlcmF0b3IuQU5EKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpbHRlciA9IHRoaXMuX2Z1bGxUZXh0RmlsdGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhZGRpdGlvbmFsRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVGaWx0ZXIubmV4dCh0aGlzLl9iYXNlRmlsdGVyLm1lcmdlKGFkZGl0aW9uYWxGaWx0ZXIsIE1lcmdlT3BlcmF0b3IuQU5EKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVGaWx0ZXIubmV4dCh0aGlzLl9iYXNlRmlsdGVyLmNsb25lKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIHByZWRpY2F0ZSB0cmVlIGNvbnRhaW5zIG5vIGNvbXBsZXRlIHF1ZXJ5LlxuICAgICAqIE90aGVyd2lzZSByZXR1cm5zIHRoZSBzZXJpYWxpemVkIGZvcm0gb2YgdGhlIGNvbXBsZXRlZCBxdWVyaWVzIGluIHRoZSBwcmVkaWNhdGUgdHJlZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlUHJlZGljYXRlTWV0YWRhdGEoKTogUHJlZGljYXRlVHJlZU1ldGFkYXRhIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RQcmVkaWNhdGUuY3JlYXRlR2VuZXJhdG9yTWV0YWRhdGEoKSBhcyBQcmVkaWNhdGVUcmVlTWV0YWRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgdGhlIGN1cnJlbnQgcHJlZGljYXRlIGZpbHRlciBieSB0aGUgb25lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIGdlbmVyYXRvciBtZXRhZGF0YS5cbiAgICAgKlxuICAgICAqIFRoZSB7QGxpbmsgQ2F0ZWdvcnlGYWN0b3J5fSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGZvciB0aGlzIHNlcnZpY2UgaWYgd2Ugd2FudCB0byB1c2UgdGhpcyBtZXRob2QuIExvZ3MgYW4gZXJyb3IgYW5kIGRvZXMgbm90aGluZy5cbiAgICAgKlxuICAgICAqIFRoZSBgZmlsdGVyVHlwZWAgb2YgdGhpcyBzZWFyY2ggc2VydmljZSBtdXN0IG1hdGNoIHRoZSBgZmlsdGVyVHlwZWAgb2YgdGhlIHByb3ZpZGVkIG1ldGFkYXRhLiBPdGhlcndpc2UgYW4gZXJyb3IgaXMgdGhyb3duLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIHRoZSBzZXJpYWxpemVkIHN0YXRlIG9mIHRoZSBwcmVkaWNhdGUgdHJlZSB0aGF0IHNob3VsZCBiZSByZXN0b3JlZCB0byB0aGlzIHNlYXJjaCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIGxvYWRGcm9tTWV0YWRhdGEobWV0YWRhdGE6IEZpbHRlck1ldGFkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLl9jYXRlZ29yeUZhY3RvcnkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignQSBDYXRlZ29yeUZhY3RvcnkgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBmb3IgdGhlIFNlYXJjaFNlcnZpY2UnXG4gICAgICAgICAgICAgICAgKyAnIGlmIHlvdSB3YW50IHRvIHJlY29uc3RydWN0IGEgcHJlZGljYXRlIGZpbHRlciBmcm9tIHNhdmVkIG1ldGFkYXRhJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWV0YWRhdGEuZmlsdGVyVHlwZSAhPT0gdGhpcy5maWx0ZXJUeXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgVGhlIGZpbHRlciB0eXBlIG9mIHRoZSBwcm92aWRlZCBtZXRhZGF0YSAoJHttZXRhZGF0YS5maWx0ZXJUeXBlXG4gICAgICAgICAgICB9KSBkb2VzIG5vdCBtYXRjaCB0aGUgZmlsdGVyIHR5cGUgb2YgdGhlIHNlYXJjaCBzZXJ2aWNlICgke3RoaXMuZmlsdGVyVHlwZX0pIWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbGVhclByZWRpY2F0ZXModHJ1ZSk7XG4gICAgICAgIHRoaXMuX2xvYWRpbmdGcm9tTWV0YWRhdGEkLm9uKCk7XG5cbiAgICAgICAgY29uc3QgZ2VuZXJhdG9yT2JzZXJ2YWJsZXMgPSBbXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWV0YWRhdGEucHJlZGljYXRlTWV0YWRhdGEpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNsYXVzZSBvZiBtZXRhZGF0YS5wcmVkaWNhdGVNZXRhZGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaElkID0gdGhpcy5fcm9vdFByZWRpY2F0ZS5hZGROZXdDbGF1c2VQcmVkaWNhdGUoQm9vbGVhbk9wZXJhdG9yLk9SKTtcbiAgICAgICAgICAgICAgICBjb25zdCBicmFuY2hQcmVkaWNhdGUgPSAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jvb3RQcmVkaWNhdGUuZ2V0UHJlZGljYXRlTWFwKCkuZ2V0KGJyYW5jaElkKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldFdyYXBwZWRQcmVkaWNhdGUoKSBhcyB1bmtub3duIGFzIEVkaXRhYmxlQ2xhdXNlUHJlZGljYXRlV2l0aEdlbmVyYXRvcnNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJlZGljYXRlIG9mIGNsYXVzZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2NhbEJyYW5jaFJlZmVyZW5jZSA9IGJyYW5jaFByZWRpY2F0ZTtcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yT2JzZXJ2YWJsZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhdGVnb3J5RmFjdG9yeS5nZXRGcm9tTWV0YWRhdGEocHJlZGljYXRlKS5waXBlKHRhcChnZW5lcmF0b3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsQnJhbmNoUmVmZXJlbmNlLmFkZE5ld1ByZWRpY2F0ZUZyb21HZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvcmtKb2luKGdlbmVyYXRvck9ic2VydmFibGVzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0Zyb21NZXRhZGF0YSQub2ZmKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUZpbHRlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBhbiBBcnJheSBvZiBmaWx0ZXIgdGV4dCBzZWdtZW50cyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgY29tcGxldGVkIHByZWRpY2F0ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlRmlsdGVyVGV4dFNlZ21lbnRzKCk6IEFycmF5PEZpbHRlclRleHRTZWdtZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290UHJlZGljYXRlLmNyZWF0ZUZpbHRlclRleHRTZWdtZW50cygpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -219,7 +219,7 @@ export class TabView {
|
|
|
219
219
|
];
|
|
220
220
|
providers.push({
|
|
221
221
|
provide: NAE_VIEW_ID_SEGMENT,
|
|
222
|
-
useValue: tab.initial ? tab.uniqueId : TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT
|
|
222
|
+
useValue: tab.initial ? tab.uniqueId : (tab.injectedObject?.loadFilter?.id ?? TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT)
|
|
223
223
|
});
|
|
224
224
|
const injector = Injector.create({ providers, parent: this._parentInjector });
|
|
225
225
|
tab.portal = new ComponentPortal(tab.tabContentComponent, null, injector);
|
|
@@ -260,4 +260,4 @@ export class TabView {
|
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT = 'dynamic';
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3RhYnMvY2xhc3Nlcy90YWItdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBTWxGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQTZCaEI7Ozs7OztPQU1HO0lBQ0gsWUFBb0IsWUFBeUIsRUFDekIsT0FBc0IsRUFDdEIsWUFBK0IsRUFDL0IsZUFBeUI7UUFIekIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQVU7UUF4QnJDLG9CQUFlLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BEOzs7V0FHRztRQUNLLHFCQUFnQixHQUFxQjtZQUN6QyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsT0FBTyxFQUFFLENBQUMsVUFBc0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxF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QUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEM7WUFDRCxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0I7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssV0FBVyxDQUFDLFFBQWdCO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUMxRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLFFBQVEsU0FBUyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWE7UUFDakMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixLQUFLLFNBQVMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQzs7QUE5UnNCLG1DQUEyQixHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0ZWRUYWJEYXRhLCBUYWJDb250ZW50LCBUYWJWaWV3SW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7T3BlbmVkVGFifSBmcm9tICcuL29wZW5lZC10YWInO1xuaW1wb3J0IHtJbmplY3RvciwgU3RhdGljUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtvcmRlckJ5fSBmcm9tICduYXR1cmFsLW9yZGVyYnknO1xuaW1wb3J0IHtOQUVfVEFCX0RBVEF9IGZyb20gJy4uL3RhYi1kYXRhLWluamVjdGlvbi10b2tlbi90YWItZGF0YS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vcm91dGluZy92aWV3LXNlcnZpY2Uvdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGF9IGZyb20gJy4uLy4uL3ZpZXcvdGFzay12aWV3L21vZGVscy9pbmplY3RlZC10YWJiZWQtdGFzay12aWV3LWRhdGEnO1xuaW1wb3J0IHtUYXNrU2VhcmNoQ2FzZVF1ZXJ5LCBUYXNrU2VhcmNoUmVxdWVzdEJvZHl9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvdGFzay1zZWFyY2gtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7TWF0VGFiQ2hhbmdlRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtJbmNyZW1lbnRpbmdDb3VudGVyfSBmcm9tICcuLi8uLi91dGlsaXR5L2luY3JlbWVudGluZy1jb3VudGVyJztcbmltcG9ydCB7TkFFX1ZJRVdfSURfU0VHTUVOVH0gZnJvbSAnLi4vLi4vdXNlci9tb2RlbHMvdmlldy1pZC1pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBIb2xkcyB0aGUgbG9naWMgZm9yIHRhYiBtYW5hZ2VtZW50IGluIHtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LlxuICogSWYgeW91IHdhbnQgdG8gaW1wbGVtZW50IHlvdXIgb3duIFRhYlZpZXdDb21wb25lbnQsIHlvdSBtaWdodCB3YW50IHRvIGV4dGVuZCB0aGlzIGNsYXNzIHRvIGhvbGQgeW91ciBsb2dpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYlZpZXcgaW1wbGVtZW50cyBUYWJWaWV3SW50ZXJmYWNlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UID0gJ2R5bmFtaWMnO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHRhYnMgdGhhdCBhcmUgb3BlbmVkIGluIHRoZSB0YWIgdmlldywgYW5kIGFsbG93cyB0aGVtIHRvIGJlIGJvdW5kIHRvIEhUTUwuXG4gICAgICovXG4gICAgcHVibGljIG9wZW5lZFRhYnM6IEFycmF5PE9wZW5lZFRhYj47XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiLlxuICAgICAqXG4gICAgICogU2VsZWN0ZWQgaW5kZXggaW5pdGlhbGl6ZXMgdG8gYDBgLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBGb3JtQ29udHJvbDtcblxuICAgIHByaXZhdGUgdW5pcXVlSWRDb3VudGVyID0gbmV3IEluY3JlbWVudGluZ0NvdW50ZXIoKTtcbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICogSG9sZHMgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IHRoYXQgaGlkZXMgc29tZSBwdWJsaWMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIHRhYnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YWJWaWV3SW50ZXJmYWNlOiBUYWJWaWV3SW50ZXJmYWNlID0ge1xuICAgICAgICBjdXJyZW50bHlTZWxlY3RlZFRhYjogKCkgPT4gdGhpcy5jdXJyZW50bHlTZWxlY3RlZFRhYigpLFxuICAgICAgICBvcGVuVGFiOiAodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlKSA9PiB0aGlzLm9wZW5UYWIodGFiQ29udGVudCwgYXV0b3N3aXRjaCksXG4gICAgICAgIHN3aXRjaFRvVGFiSW5kZXg6IChpbmRleDogbnVtYmVyKSA9PiB0aGlzLnN3aXRjaFRvVGFiSW5kZXgoaW5kZXgpLFxuICAgICAgICBzd2l0Y2hUb1RhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZykgPT4gdGhpcy5zd2l0Y2hUb1RhYlVuaXF1ZUlkKHVuaXF1ZUlkKSxcbiAgICAgICAgY2xvc2VUYWJJbmRleDogKGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpID0+IHRoaXMuY2xvc2VUYWJJbmRleChpbmRleCwgZm9yY2UpLFxuICAgICAgICBjbG9zZVRhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSkgPT4gdGhpcy5jbG9zZVRhYlVuaXF1ZUlkKHVuaXF1ZUlkLCBmb3JjZSlcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIF92aWV3U2VydmljZSBbVmlld1NlcnZpY2Vde0BsaW5rIFZpZXdTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2xvZ2dlciBbTG9nZ2VyXXtAbGluayBMb2dnZXJTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2luaXRpYWxUYWJzIFRhYnMgdGhhdCBzaG91bGQgYmUgaW5pdGlhbGx5IG9wZW5lZCBpbiB0aGUgdGFiIHZpZXdcbiAgICAgKiBAcGFyYW0gX3BhcmVudEluamVjdG9yIGBJbmplY3RvcmAgaW5zdGFuY2Ugb2YgdGhlIFtUYWJWaWV3Q29tcG9uZW50XXtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LFxuICAgICAqIHRvIGJlIHBhc3NlZCBvbnRvIGVhY2ggdGFiLCBzbyB0aGF0IHRoZSBkZXBlbmRlbmN5IGluamVjdGlvbiB0cmVlIGlzIG5vdCBicm9rZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3U2VydmljZTogVmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2luaXRpYWxUYWJzOiBBcnJheTxUYWJDb250ZW50PixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnRJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgICAgICAgaWYgKHRhYi5vcmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGFiLm9yZGVyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYi5pbml0aWFsID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG5ldyBGb3JtQ29udHJvbCgwKTtcblxuICAgICAgICAvLyBvcmRlckJ5IGlzIGEgc3RhYmxlIHNvcnRcbiAgICAgICAgLy8gTmF0aXZlIGphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gaGFzIHVuZGVmaW5lZCBzdGFiaWxpdHkgYW5kIGl0IGRlcGVuZHMgb24gaXQncyBpbXBsZW1lbnRhdGlvbiAoYnJvd3NlcilcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzID0gb3JkZXJCeSh0aGlzLl9pbml0aWFsVGFicywgdiA9PiB2Lm9yZGVyLCAnYXNjJykubWFwKHRhYkRhdGEgPT5cbiAgICAgICAgICAgIG5ldyBPcGVuZWRUYWIodGFiRGF0YSwgYCR7dGhpcy51bmlxdWVJZENvdW50ZXIubmV4dCgpfWApKTtcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFRhYnNbMF0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YWJcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVudGx5U2VsZWN0ZWRUYWIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIG5ldyB0YWIgd2l0aCB0aGUgcHJvdmlkZWQgY29udGVudC5cbiAgICAgKiBAcGFyYW0gdGFiQ29udGVudCAtIGNvbnRlbnQgb2YgdGhlIG5ldyB0YWJcbiAgICAgKiBAcGFyYW0gYXV0b3N3aXRjaCAtIHdoZXRoZXIgdGhlIG5ld2x5IG9wZW5lZCB0YWIgc2hvdWxkIGJlIHN3aXRjaGVkIHRvLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBvcGVuRXhpc3RpbmcgLSB3aGV0aGVyIHRoZSBvcGVuZWQgdGFiIGFscmVhZHkgZXhpc3Rpbmcgc2hvdWxkIGJlIHN3aXRjaGVkIHRvIGV4aXN0aW5nIG9uZS4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgICAqIEByZXR1cm5zIHRoZSBgdGFiVW5pcXVlSWRgIG9mIHRoZSBuZXdseSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHVibGljIG9wZW5UYWIodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlLCBvcGVuRXhpc3RpbmcgPSB0cnVlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRhYkNvbnRlbnQuaW5pdGlhbCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oYCdpbml0aWFsJyBhdHRyaWJ1dGUgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgd2l0aCBuZXcgdGFicyBhbmQgd2lsbCBiZSBpZ25vcmVkYCk7XG4gICAgICAgICAgICBkZWxldGUgdGFiQ29udGVudC5pbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VGFiID0gbmV3IE9wZW5lZFRhYih0YWJDb250ZW50LCBgJHt0aGlzLnVuaXF1ZUlkQ291bnRlci5uZXh0KCl9YCk7XG4gICAgICAgIGNvbnN0IGluZGV4RXhpc3RpbmcgPSB0aGlzLmZpbmRJbmRleEV4aXN0aW5nVGFiKG5ld1RhYik7XG4gICAgICAgIGlmIChpbmRleEV4aXN0aW5nID09PSAtMSB8fCAhb3BlbkV4aXN0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTmV3VGFiKG5ld1RhYiwgYXV0b3N3aXRjaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleEV4aXN0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhFeGlzdGluZ10udW5pcXVlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZEluZGV4RXhpc3RpbmdUYWIobmV3VGFiOiBPcGVuZWRUYWIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaGVzRm9yT25lQ2FzZUlkKG5ld1RhYikpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRUYWJzLmZpbmRJbmRleChleGlzdGluZ1RhYiA9PlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlc0Zvck9uZUNhc2VJZChleGlzdGluZ1RhYikgJiYgdGhpcy5nZXRTZWFyY2hlZENhc2VJZChleGlzdGluZ1RhYikgPT09IHRoaXMuZ2V0U2VhcmNoZWRDYXNlSWQobmV3VGFiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hlc0Zvck9uZUNhc2VJZCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiKVxuICAgICAgICAgICAgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5nZXRTZWFyY2hlZENhc2UodGFiKSlcbiAgICAgICAgICAgICYmICEhdGhpcy5nZXRTZWFyY2hlZENhc2VJZCh0YWIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VhcmNoZWRDYXNlSWQodGFiOiBPcGVuZWRUYWIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0U2VhcmNoZWRDYXNlKHRhYikgYXMgVGFza1NlYXJjaENhc2VRdWVyeSkuaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWFyY2hlZENhc2UodGFiOiBPcGVuZWRUYWIpOiBUYXNrU2VhcmNoQ2FzZVF1ZXJ5IHwgQXJyYXk8VGFza1NlYXJjaENhc2VRdWVyeT4ge1xuICAgICAgICByZXR1cm4gKCh0YWIuaW5qZWN0ZWRPYmplY3QgYXMgSW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGEpLmJhc2VGaWx0ZXIuZ2V0UmVxdWVzdEJvZHkoKSBhcyBUYXNrU2VhcmNoUmVxdWVzdEJvZHkpLmNhc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiOiBPcGVuZWRUYWIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQmFzZUZpbHRlcih0YWIpXG4gICAgICAgICAgICAmJiAhISgoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlci5nZXRSZXF1ZXN0Qm9keSgpIGFzIFRhc2tTZWFyY2hSZXF1ZXN0Qm9keSkuY2FzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNCYXNlRmlsdGVyKHRhYjogT3BlbmVkVGFiKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0luamVjdGVkT2JqZWN0KHRhYikgJiYgISEoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNJbmplY3RlZE9iamVjdCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0YWIuaW5qZWN0ZWRPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyB0YWIgaW50byB0aGUgY29ycmVjdCBwb3NpdGlvbiBiYXNlZCBvbiBpdHMgYG9yZGVyYCBwcm9wZXJ0eS5cbiAgICAgKiBAcGFyYW0gbmV3VGFiIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgb3BlbmVkXG4gICAgICogQHBhcmFtIGF1dG9zd2l0Y2ggd2hldGhlciB0aGUgbmV3IHRhYiBzaG91bGQgYmUgc3dpdGNoZWQgdG8gYWZ0ZXIgaXQgaXMgY3JlYXRlZFxuICAgICAqIEByZXR1cm5zIHRoZSBgdW5pcXVlSWRgIG9mIHRoZSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9wZW5OZXdUYWIobmV3VGFiOiBPcGVuZWRUYWIsIGF1dG9zd2l0Y2g6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMuZmluZEluZGV4KGV4aXN0aW5nVGFiID0+IGV4aXN0aW5nVGFiLm9yZGVyID4gbmV3VGFiLm9yZGVyKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFicy5zcGxpY2UoaW5kZXgsIDAsIG5ld1RhYik7XG5cbiAgICAgICAgaWYgKGF1dG9zd2l0Y2ggfHwgdGhpcy5vcGVuZWRUYWJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdUYWIudW5pcXVlSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYHVuaXF1ZUlkYCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSB1bmlxdWVJZCAtIGlkIG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJVbmlxdWVJZCh1bmlxdWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VGFiSW5kZXhXaXRoTm90aWZpY2F0aW9uKHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1t0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWVdLnRhYlNlbGVjdGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKGluZGV4KTtcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzW3RoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZV0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBjbG9zZWRcbiAgICAgKiBAcGFyYW0gZm9yY2Ugd2hlbiBgdHJ1ZWAgY2xvc2VzIGEgdGFiIGV2ZW4gaWYgaXQncyBgY2FudEJlQ2xvc2VkYCBhdHRyaWJ1dGUgaXMgc2V0IHRvIGB0cnVlYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZVRhYkluZGV4KGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZVRhYihpbmRleCwgZm9yY2UsIGBUYWIgYXQgaW5kZXggJHtpbmRleH0gY2FuJ3QgYmUgY2xvc2VkYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBgdW5pcXVlSWRgIGlzIGludmFsaWQuXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gdW5pcXVlSWQgLSBpZCBvZiB0aGUgdGFiIHRoYXQgc2hvdWxkIGJlIGNsb3NlZFxuICAgICAqIEBwYXJhbSBmb3JjZSB3aGVuIGB0cnVlYCBjbG9zZXMgYSB0YWIgZXZlbiBpZiBpdCdzIGBjYW50QmVDbG9zZWRgIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHRydWVgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlVGFiVW5pcXVlSWQodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpO1xuICAgICAgICB0aGlzLmNsb3NlVGFiKGluZGV4LCBmb3JjZSwgYFRhYiB3aXRoIElEICR7dW5pcXVlSWR9IGNhbid0IGJlIGNsb3NlZGApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgdGFiIGF0IHRoZSBnaXZlbiBpbmRleC5cbiAgICAgKlxuICAgICAqIElmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0IHRocm93cyBhbiBgRXJyb3JgIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIGluZGV4IGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgY2xvc2VkXG4gICAgICogQHBhcmFtIGZvcmNlIHdoZW4gYHRydWVgIGNsb3NlcyBhIHRhYiBldmVuIGlmIGl0J3MgYGNhbnRCZUNsb3NlZGAgYXR0cmlidXRlIGlzIHNldCB0byBgdHJ1ZWBcbiAgICAgKiBAcGFyYW0gZXJyb3IgdGhlIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGlmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIGZvcmNlOiBib29sZWFuLCBlcnJvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgaWYgKCFmb3JjZSAmJiAhdGhpcy5vcGVuZWRUYWJzW2luZGV4XS5jYW5CZUNsb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAmJiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdLnBhcmVudFVuaXF1ZUlkKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRvVGFiVW5pcXVlSWQodGhpcy5vcGVuZWRUYWJzW2luZGV4XS5wYXJlbnRVbmlxdWVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWUgJiYgdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlICsgMSA8IHRoaXMub3BlbmVkVGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleCArIDFdLnRhYlNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleF0udGFiQ2xvc2VkJC5uZXh0KCk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSB0aGlzLm9wZW5lZFRhYnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgZGVsZXRlZFswXS5kZXN0cm95KCk7XG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIHRhYiBpZiBpdCB3YXNuJ3QgaW5pdGlhbGl6ZWQgeWV0LlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIENvbXBvbmVudFBvcnRhbH0gZm9yIHRoZSB0YWIgYW5kIHByb3ZpZGVzIHRoZSBkYXRhIGZvciB0aGUgdGFiIHVuZGVyIHRoZSBgTkFFX1RBQl9EQVRBYCBpbmplY3Rpb24gdG9rZW4uXG4gICAgICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBpbml0aWFsaXplZFxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0luZGV4UmFuZ2UoaW5kZXgpO1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdO1xuICAgICAgICBpZiAoIXRhYi5pc1RhYkluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRhYi5pbmplY3RlZE9iamVjdCwge1xuICAgICAgICAgICAgICAgIHRhYlVuaXF1ZUlkOiB0YWIudW5pcXVlSWQsXG4gICAgICAgICAgICAgICAgdGFiVmlld1JlZjogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgIHNldEljb246IHQgPT4gdGFiLnNldEljb24odCksXG4gICAgICAgICAgICAgICAgICAgIHNldFRleHQ6IHQgPT4gdGFiLnNldFRleHQodCksXG4gICAgICAgICAgICAgICAgICAgIGdldEljb24kOiAoKSA9PiB0YWIuZ2V0SWNvbiQoKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGV4dCQ6ICgpID0+IHRhYi5nZXRUZXh0JCgpLFxuICAgICAgICAgICAgICAgIH0sIHRoaXMudGFiVmlld0ludGVyZmFjZSksXG4gICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQkOiB0YWIudGFiU2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgICAgIHRhYkNsb3NlZCQ6IHRhYi50YWJDbG9zZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgfSBhcyBJbmplY3RlZFRhYkRhdGEpO1xuXG4gICAgICAgICAgICBjb25zdCBwcm92aWRlcnM6IEFycmF5PFN0YXRpY1Byb3ZpZGVyPiA9IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTkFFX1RBQl9EQVRBLCB1c2VWYWx1ZTogdGFiLmluamVjdGVkT2JqZWN0fVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHByb3ZpZGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOQUVfVklFV19JRF9TRUdNRU5ULFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB0YWIuaW5pdGlhbCA/IHRhYi51bmlxdWVJZCA6IFRhYlZpZXcuRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe3Byb3ZpZGVycywgcGFyZW50OiB0aGlzLl9wYXJlbnRJbmplY3Rvcn0pO1xuXG4gICAgICAgICAgICB0YWIucG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0YWIudGFiQ29udGVudENvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgdGFiLmlzVGFiSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmluZGV4ICE9PSB0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWUpIHtcbiAgICAgICAgICAgIGxldCB0YWIgPSB0aGlzLm9wZW5lZFRhYnNbdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlXTtcbiAgICAgICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgICAgICB0YWIudGFiU2VsZWN0ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFiID0gdGhpcy5vcGVuZWRUYWJzW2V2ZW50LmluZGV4XTtcbiAgICAgICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgICAgICB0YWIudGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0VmFsdWUoZXZlbnQuaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtcyBhIHRhYiBgdW5pcXVlSWRgIGludG8gaXQncyBpbmRleC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiBubyB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYCBleGlzdHMuXG4gICAgICogQHBhcmFtIHVuaXF1ZUlkIC0gaWQgb2YgdGhlIHRhYiB0aGF0IHdlIHdhbnQgdG8gZmluZCBpbmRleCBmb3JcbiAgICAgKiBAcmV0dXJucyBpbmRleCBvZiB0aGUgdGFiIHdpdGggdGhlIGdpdmVuIGlkXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRUYWJJbmRleCh1bmlxdWVJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMuZmluZEluZGV4KHRhYiA9PiB0YWIudW5pcXVlSWQgPT09IHVuaXF1ZUlkKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB0YWIgd2l0aCBJRCAke3VuaXF1ZUlkfSBleGlzdHNgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0luZGV4UmFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMub3BlbmVkVGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gdGFiIHdpdGggaW5kZXggJHtpbmRleH0gZXhpc3RzYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3RhYnMvY2xhc3Nlcy90YWItdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBTWxGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQTZCaEI7Ozs7OztPQU1HO0lBQ0gsWUFBb0IsWUFBeUIsRUFDekIsT0FBc0IsRUFDdEIsWUFBK0IsRUFDL0IsZUFBeUI7UUFIekIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQVU7UUF4QnJDLG9CQUFlLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BEOzs7V0FHRztRQUNLLHFCQUFnQixHQUFxQjtZQUN6QyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsT0FBTyxFQUFFLENBQUMsVUFBc0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxF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ZW50LCBUYWJWaWV3SW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7T3BlbmVkVGFifSBmcm9tICcuL29wZW5lZC10YWInO1xuaW1wb3J0IHtJbmplY3RvciwgU3RhdGljUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtvcmRlckJ5fSBmcm9tICduYXR1cmFsLW9yZGVyYnknO1xuaW1wb3J0IHtOQUVfVEFCX0RBVEF9IGZyb20gJy4uL3RhYi1kYXRhLWluamVjdGlvbi10b2tlbi90YWItZGF0YS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vcm91dGluZy92aWV3LXNlcnZpY2Uvdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGF9IGZyb20gJy4uLy4uL3ZpZXcvdGFzay12aWV3L21vZGVscy9pbmplY3RlZC10YWJiZWQtdGFzay12aWV3LWRhdGEnO1xuaW1wb3J0IHtUYXNrU2VhcmNoQ2FzZVF1ZXJ5LCBUYXNrU2VhcmNoUmVxdWVzdEJvZHl9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvdGFzay1zZWFyY2gtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7TWF0VGFiQ2hhbmdlRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtJbmNyZW1lbnRpbmdDb3VudGVyfSBmcm9tICcuLi8uLi91dGlsaXR5L2luY3JlbWVudGluZy1jb3VudGVyJztcbmltcG9ydCB7TkFFX1ZJRVdfSURfU0VHTUVOVH0gZnJvbSAnLi4vLi4vdXNlci9tb2RlbHMvdmlldy1pZC1pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBIb2xkcyB0aGUgbG9naWMgZm9yIHRhYiBtYW5hZ2VtZW50IGluIHtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LlxuICogSWYgeW91IHdhbnQgdG8gaW1wbGVtZW50IHlvdXIgb3duIFRhYlZpZXdDb21wb25lbnQsIHlvdSBtaWdodCB3YW50IHRvIGV4dGVuZCB0aGlzIGNsYXNzIHRvIGhvbGQgeW91ciBsb2dpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYlZpZXcgaW1wbGVtZW50cyBUYWJWaWV3SW50ZXJmYWNlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UID0gJ2R5bmFtaWMnO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHRhYnMgdGhhdCBhcmUgb3BlbmVkIGluIHRoZSB0YWIgdmlldywgYW5kIGFsbG93cyB0aGVtIHRvIGJlIGJvdW5kIHRvIEhUTUwuXG4gICAgICovXG4gICAgcHVibGljIG9wZW5lZFRhYnM6IEFycmF5PE9wZW5lZFRhYj47XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiLlxuICAgICAqXG4gICAgICogU2VsZWN0ZWQgaW5kZXggaW5pdGlhbGl6ZXMgdG8gYDBgLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBGb3JtQ29udHJvbDtcblxuICAgIHByaXZhdGUgdW5pcXVlSWRDb3VudGVyID0gbmV3IEluY3JlbWVudGluZ0NvdW50ZXIoKTtcbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICogSG9sZHMgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IHRoYXQgaGlkZXMgc29tZSBwdWJsaWMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIHRhYnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YWJWaWV3SW50ZXJmYWNlOiBUYWJWaWV3SW50ZXJmYWNlID0ge1xuICAgICAgICBjdXJyZW50bHlTZWxlY3RlZFRhYjogKCkgPT4gdGhpcy5jdXJyZW50bHlTZWxlY3RlZFRhYigpLFxuICAgICAgICBvcGVuVGFiOiAodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlKSA9PiB0aGlzLm9wZW5UYWIodGFiQ29udGVudCwgYXV0b3N3aXRjaCksXG4gICAgICAgIHN3aXRjaFRvVGFiSW5kZXg6IChpbmRleDogbnVtYmVyKSA9PiB0aGlzLnN3aXRjaFRvVGFiSW5kZXgoaW5kZXgpLFxuICAgICAgICBzd2l0Y2hUb1RhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZykgPT4gdGhpcy5zd2l0Y2hUb1RhYlVuaXF1ZUlkKHVuaXF1ZUlkKSxcbiAgICAgICAgY2xvc2VUYWJJbmRleDogKGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpID0+IHRoaXMuY2xvc2VUYWJJbmRleChpbmRleCwgZm9yY2UpLFxuICAgICAgICBjbG9zZVRhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSkgPT4gdGhpcy5jbG9zZVRhYlVuaXF1ZUlkKHVuaXF1ZUlkLCBmb3JjZSlcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIF92aWV3U2VydmljZSBbVmlld1NlcnZpY2Vde0BsaW5rIFZpZXdTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2xvZ2dlciBbTG9nZ2VyXXtAbGluayBMb2dnZXJTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2luaXRpYWxUYWJzIFRhYnMgdGhhdCBzaG91bGQgYmUgaW5pdGlhbGx5IG9wZW5lZCBpbiB0aGUgdGFiIHZpZXdcbiAgICAgKiBAcGFyYW0gX3BhcmVudEluamVjdG9yIGBJbmplY3RvcmAgaW5zdGFuY2Ugb2YgdGhlIFtUYWJWaWV3Q29tcG9uZW50XXtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LFxuICAgICAqIHRvIGJlIHBhc3NlZCBvbnRvIGVhY2ggdGFiLCBzbyB0aGF0IHRoZSBkZXBlbmRlbmN5IGluamVjdGlvbiB0cmVlIGlzIG5vdCBicm9rZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3U2VydmljZTogVmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2luaXRpYWxUYWJzOiBBcnJheTxUYWJDb250ZW50PixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnRJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgICAgICAgaWYgKHRhYi5vcmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGFiLm9yZGVyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYi5pbml0aWFsID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG5ldyBGb3JtQ29udHJvbCgwKTtcblxuICAgICAgICAvLyBvcmRlckJ5IGlzIGEgc3RhYmxlIHNvcnRcbiAgICAgICAgLy8gTmF0aXZlIGphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gaGFzIHVuZGVmaW5lZCBzdGFiaWxpdHkgYW5kIGl0IGRlcGVuZHMgb24gaXQncyBpbXBsZW1lbnRhdGlvbiAoYnJvd3NlcilcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzID0gb3JkZXJCeSh0aGlzLl9pbml0aWFsVGFicywgdiA9PiB2Lm9yZGVyLCAnYXNjJykubWFwKHRhYkRhdGEgPT5cbiAgICAgICAgICAgIG5ldyBPcGVuZWRUYWIodGFiRGF0YSwgYCR7dGhpcy51bmlxdWVJZENvdW50ZXIubmV4dCgpfWApKTtcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFRhYnNbMF0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YWJcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVudGx5U2VsZWN0ZWRUYWIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIG5ldyB0YWIgd2l0aCB0aGUgcHJvdmlkZWQgY29udGVudC5cbiAgICAgKiBAcGFyYW0gdGFiQ29udGVudCAtIGNvbnRlbnQgb2YgdGhlIG5ldyB0YWJcbiAgICAgKiBAcGFyYW0gYXV0b3N3aXRjaCAtIHdoZXRoZXIgdGhlIG5ld2x5IG9wZW5lZCB0YWIgc2hvdWxkIGJlIHN3aXRjaGVkIHRvLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBvcGVuRXhpc3RpbmcgLSB3aGV0aGVyIHRoZSBvcGVuZWQgdGFiIGFscmVhZHkgZXhpc3Rpbmcgc2hvdWxkIGJlIHN3aXRjaGVkIHRvIGV4aXN0aW5nIG9uZS4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgICAqIEByZXR1cm5zIHRoZSBgdGFiVW5pcXVlSWRgIG9mIHRoZSBuZXdseSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHVibGljIG9wZW5UYWIodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlLCBvcGVuRXhpc3RpbmcgPSB0cnVlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRhYkNvbnRlbnQuaW5pdGlhbCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oYCdpbml0aWFsJyBhdHRyaWJ1dGUgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgd2l0aCBuZXcgdGFicyBhbmQgd2lsbCBiZSBpZ25vcmVkYCk7XG4gICAgICAgICAgICBkZWxldGUgdGFiQ29udGVudC5pbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VGFiID0gbmV3IE9wZW5lZFRhYih0YWJDb250ZW50LCBgJHt0aGlzLnVuaXF1ZUlkQ291bnRlci5uZXh0KCl9YCk7XG4gICAgICAgIGNvbnN0IGluZGV4RXhpc3RpbmcgPSB0aGlzLmZpbmRJbmRleEV4aXN0aW5nVGFiKG5ld1RhYik7XG4gICAgICAgIGlmIChpbmRleEV4aXN0aW5nID09PSAtMSB8fCAhb3BlbkV4aXN0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTmV3VGFiKG5ld1RhYiwgYXV0b3N3aXRjaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleEV4aXN0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhFeGlzdGluZ10udW5pcXVlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZEluZGV4RXhpc3RpbmdUYWIobmV3VGFiOiBPcGVuZWRUYWIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaGVzRm9yT25lQ2FzZUlkKG5ld1RhYikpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRUYWJzLmZpbmRJbmRleChleGlzdGluZ1RhYiA9PlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlc0Zvck9uZUNhc2VJZChleGlzdGluZ1RhYikgJiYgdGhpcy5nZXRTZWFyY2hlZENhc2VJZChleGlzdGluZ1RhYikgPT09IHRoaXMuZ2V0U2VhcmNoZWRDYXNlSWQobmV3VGFiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hlc0Zvck9uZUNhc2VJZCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiKVxuICAgICAgICAgICAgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5nZXRTZWFyY2hlZENhc2UodGFiKSlcbiAgICAgICAgICAgICYmICEhdGhpcy5nZXRTZWFyY2hlZENhc2VJZCh0YWIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VhcmNoZWRDYXNlSWQodGFiOiBPcGVuZWRUYWIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0U2VhcmNoZWRDYXNlKHRhYikgYXMgVGFza1NlYXJjaENhc2VRdWVyeSkuaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWFyY2hlZENhc2UodGFiOiBPcGVuZWRUYWIpOiBUYXNrU2VhcmNoQ2FzZVF1ZXJ5IHwgQXJyYXk8VGFza1NlYXJjaENhc2VRdWVyeT4ge1xuICAgICAgICByZXR1cm4gKCh0YWIuaW5qZWN0ZWRPYmplY3QgYXMgSW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGEpLmJhc2VGaWx0ZXIuZ2V0UmVxdWVzdEJvZHkoKSBhcyBUYXNrU2VhcmNoUmVxdWVzdEJvZHkpLmNhc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiOiBPcGVuZWRUYWIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQmFzZUZpbHRlcih0YWIpXG4gICAgICAgICAgICAmJiAhISgoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlci5nZXRSZXF1ZXN0Qm9keSgpIGFzIFRhc2tTZWFyY2hSZXF1ZXN0Qm9keSkuY2FzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNCYXNlRmlsdGVyKHRhYjogT3BlbmVkVGFiKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0luamVjdGVkT2JqZWN0KHRhYikgJiYgISEoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNJbmplY3RlZE9iamVjdCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0YWIuaW5qZWN0ZWRPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyB0YWIgaW50byB0aGUgY29ycmVjdCBwb3NpdGlvbiBiYXNlZCBvbiBpdHMgYG9yZGVyYCBwcm9wZXJ0eS5cbiAgICAgKiBAcGFyYW0gbmV3VGFiIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgb3BlbmVkXG4gICAgICogQHBhcmFtIGF1dG9zd2l0Y2ggd2hldGhlciB0aGUgbmV3IHRhYiBzaG91bGQgYmUgc3dpdGNoZWQgdG8gYWZ0ZXIgaXQgaXMgY3JlYXRlZFxuICAgICAqIEByZXR1cm5zIHRoZSBgdW5pcXVlSWRgIG9mIHRoZSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9wZW5OZXdUYWIobmV3VGFiOiBPcGVuZWRUYWIsIGF1dG9zd2l0Y2g6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMuZmluZEluZGV4KGV4aXN0aW5nVGFiID0+IGV4aXN0aW5nVGFiLm9yZGVyID4gbmV3VGFiLm9yZGVyKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFicy5zcGxpY2UoaW5kZXgsIDAsIG5ld1RhYik7XG5cbiAgICAgICAgaWYgKGF1dG9zd2l0Y2ggfHwgdGhpcy5vcGVuZWRUYWJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdUYWIudW5pcXVlSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYHVuaXF1ZUlkYCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSB1bmlxdWVJZCAtIGlkIG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJVbmlxdWVJZCh1bmlxdWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VGFiSW5kZXhXaXRoTm90aWZpY2F0aW9uKHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1t0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWVdLnRhYlNlbGVjdGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKGluZGV4KTtcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzW3RoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZV0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBjbG9zZWRcbiAgICAgKiBAcGFyYW0gZm9yY2Ugd2hlbiBgdHJ1ZWAgY2xvc2VzIGEgdGFiIGV2ZW4gaWYgaXQncyBgY2FudEJlQ2xvc2VkYCBhdHRyaWJ1dGUgaXMgc2V0IHRvIGB0cnVlYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZVRhYkluZGV4KGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZVRhYihpbmRleCwgZm9yY2UsIGBUYWIgYXQgaW5kZXggJHtpbmRleH0gY2FuJ3QgYmUgY2xvc2VkYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBgdW5pcXVlSWRgIGlzIGludmFsaWQuXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gdW5pcXVlSWQgLSBpZCBvZiB0aGUgdGFiIHRoYXQgc2hvdWxkIGJlIGNsb3NlZFxuICAgICAqIEBwYXJhbSBmb3JjZSB3aGVuIGB0cnVlYCBjbG9zZXMgYSB0YWIgZXZlbiBpZiBpdCdzIGBjYW50QmVDbG9zZWRgIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHRydWVgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlVGFiVW5pcXVlSWQodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpO1xuICAgICAgICB0aGlzLmNsb3NlVGFiKGluZGV4LCBmb3JjZSwgYFRhYiB3aXRoIElEICR7dW5pcXVlSWR9IGNhbid0IGJlIGNsb3NlZGApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgdGFiIGF0IHRoZSBnaXZlbiBpbmRleC5cbiAgICAgKlxuICAgICAqIElmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0IHRocm93cyBhbiBgRXJyb3JgIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIGluZGV4IGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgY2xvc2VkXG4gICAgICogQHBhcmFtIGZvcmNlIHdoZW4gYHRydWVgIGNsb3NlcyBhIHRhYiBldmVuIGlmIGl0J3MgYGNhbnRCZUNsb3NlZGAgYXR0cmlidXRlIGlzIHNldCB0byBgdHJ1ZWBcbiAgICAgKiBAcGFyYW0gZXJyb3IgdGhlIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGlmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIGZvcmNlOiBib29sZWFuLCBlcnJvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgaWYgKCFmb3JjZSAmJiAhdGhpcy5vcGVuZWRUYWJzW2luZGV4XS5jYW5CZUNsb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAmJiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdLnBhcmVudFVuaXF1ZUlkKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRvVGFiVW5pcXVlSWQodGhpcy5vcGVuZWRUYWJzW2luZGV4XS5wYXJlbnRVbmlxdWVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWUgJiYgdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlICsgMSA8IHRoaXMub3BlbmVkVGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleCArIDFdLnRhYlNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleF0udGFiQ2xvc2VkJC5uZXh0KCk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSB0aGlzLm9wZW5lZFRhYnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgZGVsZXRlZFswXS5kZXN0cm95KCk7XG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIHRhYiBpZiBpdCB3YXNuJ3QgaW5pdGlhbGl6ZWQgeWV0LlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIENvbXBvbmVudFBvcnRhbH0gZm9yIHRoZSB0YWIgYW5kIHByb3ZpZGVzIHRoZSBkYXRhIGZvciB0aGUgdGFiIHVuZGVyIHRoZSBgTkFFX1RBQl9EQVRBYCBpbmplY3Rpb24gdG9rZW4uXG4gICAgICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBpbml0aWFsaXplZFxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0luZGV4UmFuZ2UoaW5kZXgpO1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdO1xuICAgICAgICBpZiAoIXRhYi5pc1RhYkluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRhYi5pbmplY3RlZE9iamVjdCwge1xuICAgICAgICAgICAgICAgIHRhYlVuaXF1ZUlkOiB0YWIudW5pcXVlSWQsXG4gICAgICAgICAgICAgICAgdGFiVmlld1JlZjogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgIHNldEljb246IHQgPT4gdGFiLnNldEljb24odCksXG4gICAgICAgICAgICAgICAgICAgIHNldFRleHQ6IHQgPT4gdGFiLnNldFRleHQodCksXG4gICAgICAgICAgICAgICAgICAgIGdldEljb24kOiAoKSA9PiB0YWIuZ2V0SWNvbiQoKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGV4dCQ6ICgpID0+IHRhYi5nZXRUZXh0JCgpLFxuICAgICAgICAgICAgICAgIH0sIHRoaXMudGFiVmlld0ludGVyZmFjZSksXG4gICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQkOiB0YWIudGFiU2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgICAgIHRhYkNsb3NlZCQ6IHRhYi50YWJDbG9zZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgfSBhcyBJbmplY3RlZFRhYkRhdGEpO1xuXG4gICAgICAgICAgICBjb25zdCBwcm92aWRlcnM6IEFycmF5PFN0YXRpY1Byb3ZpZGVyPiA9IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTkFFX1RBQl9EQVRBLCB1c2VWYWx1ZTogdGFiLmluamVjdGVkT2JqZWN0fVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHByb3ZpZGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOQUVfVklFV19JRF9TRUdNRU5ULFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB0YWIuaW5pdGlhbCA/IHRhYi51bmlxdWVJZCA6ICgodGFiLmluamVjdGVkT2JqZWN0IGFzIEluamVjdGVkVGFiRGF0YSk/LmxvYWRGaWx0ZXI/LmlkID8/IFRhYlZpZXcuRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtwcm92aWRlcnMsIHBhcmVudDogdGhpcy5fcGFyZW50SW5qZWN0b3J9KTtcblxuICAgICAgICAgICAgdGFiLnBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwodGFiLnRhYkNvbnRlbnRDb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICAgICAgICAgIHRhYi5pc1RhYkluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0YWJDaGFuZ2UoZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5pbmRleCAhPT0gdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgdGFiID0gdGhpcy5vcGVuZWRUYWJzW3RoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZV07XG4gICAgICAgICAgICBpZiAodGFiKSB7XG4gICAgICAgICAgICAgICAgdGFiLnRhYlNlbGVjdGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYiA9IHRoaXMub3BlbmVkVGFic1tldmVudC5pbmRleF07XG4gICAgICAgICAgICBpZiAodGFiKSB7XG4gICAgICAgICAgICAgICAgdGFiLnRhYlNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKGV2ZW50LmluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgYSB0YWIgYHVuaXF1ZUlkYCBpbnRvIGl0J3MgaW5kZXguXG4gICAgICpcbiAgICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgbm8gdGFiIHdpdGggdGhlIGdpdmVuIGB1bmlxdWVJZGAgZXhpc3RzLlxuICAgICAqIEBwYXJhbSB1bmlxdWVJZCAtIGlkIG9mIHRoZSB0YWIgdGhhdCB3ZSB3YW50IHRvIGZpbmQgaW5kZXggZm9yXG4gICAgICogQHJldHVybnMgaW5kZXggb2YgdGhlIHRhYiB3aXRoIHRoZSBnaXZlbiBpZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VGFiSW5kZXgodW5pcXVlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVuZWRUYWJzLmZpbmRJbmRleCh0YWIgPT4gdGFiLnVuaXF1ZUlkID09PSB1bmlxdWVJZCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gdGFiIHdpdGggSUQgJHt1bmlxdWVJZH0gZXhpc3RzYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJbmRleFJhbmdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLm9wZW5lZFRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRhYiB3aXRoIGluZGV4ICR7aW5kZXh9IGV4aXN0c2ApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFicy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vZmlsdGVyL21vZGVscy9maWx0ZXJcIjtcblxuLyoqXG4gKiBTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgY29udGVudCBvZiBvbmUgb3BlbmVkIHRhYiBpbiB0YWIgdmlldy5cbiAqXG4gKiBTZWUge0BsaW5rIFRhYlZpZXd9IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2FnZSBvZiB0aGlzIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJDb250ZW50IHtcbiAgICAvKipcbiAgICAgKiBDb250ZW50cyBvZiB0aGUgdGFiIGxhYmVsLlxuICAgICAqXG4gICAgICogT25seSBhdHRyaWJ1dGVzIHdpdGggZGVmaW5lZCB2YWx1ZXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgbGFiZWwuXG4gICAgICogWW91IGNhbiBoYXZlIGJvdGggaWNvbiBhbmQgdGV4dCBkaXNwbGF5ZWQsIGVpdGhlciBvbmUsIG9yIG5laXRoZXIuXG4gICAgICogSWNvbiBpcyBkaXNwbGF5ZWQgaW4gZnJvbnQgb2YgdGhlIHRleHQuXG4gICAgICovXG4gICAgbGFiZWw/OiBUYWJMYWJlbDtcbiAgICAvKipcbiAgICAgKiBBIGNsb3NlIGJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZCBhZnRlciB0aGUgdGV4dCBpbiB0aGUgbGFiZWwgaWYgdGhlIHRhYiBjYW4gYmUgY2xvc2VkLlxuICAgICAqL1xuICAgIGNhbkJlQ2xvc2VkOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIENsYXNzIG5hbWUgb2YgdGhlIENvbXBvbmVudCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgdGhlIHRhYiBjb250ZW50LlxuICAgICAqL1xuICAgIHRhYkNvbnRlbnRDb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgICAvKipcbiAgICAgKiBEYXRhIHRoYXQgeW91IHdhbnQgdG8gbWFrZSBhdmFpbGFibGUgZm9yIGluamVjdGlvbiB0byB0aGUgdGFiIGNvbnRlbnQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogVGhlIGRhdGEgY2FuIGJlIGluamVjdGVkIHRyb3VnaCB0aGUgYE5BRV9UQUJfREFUQWAgaW5qZWN0aW9uIHRva2VuLlxuICAgICAqXG4gICAgICogU2VlIFtJbmplY3RlZFRhYkRhdGFde0BsaW5rIEluamVjdGVkVGFiRGF0YX0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB0aGUgaW5qZWN0ZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIGluamVjdGVkT2JqZWN0Pzogb2JqZWN0O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIG5hdHVyYWwgb3JkZXJpbmcgb2YgdGhlIHRhYnMuXG4gICAgICpcbiAgICAgKiBUYWJzIGFyZSBvcmRlcmVkIGZyb20gbGVmdCB0byByaWdodCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICogSWYgdHdvIHRhYnMgaGF2ZSB0aGUgc2FtZSBvcmRlciB0aGUgb25lIHRoYXQgd2FzIGNyZWF0ZWQgbGF0ZXIgd2lsbCBhcHBlYXIgZnVydGhlciB0byB0aGUgcmlnaHQuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBgMGAuXG4gICAgICovXG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFiIHdhcyBpbml0aWFsbHkgb3BlbmVkLiBPbmx5IGluaXRpYWxseSBvcGVuZWQgdGFicyBoYXZlIHRoZWlyIHZpZXcgSUQgZGVmaW5lZC5cbiAgICAgKiBUYWJzIHRoYXQgYXJlIG9wZW5lZCBkeW5hbWljYWxseSBkb24ndCBoYXZlIGEgdmlldyBJRCBhbmQgdGh1cyBjYW5ub3Qgc2F2ZSB0aGVpciBzdGF0ZSBpbnRvIHVzZXIgcHJlZmVyZW5jZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgd2hlbiBpbml0aWFsIHRhYnMgYXJlIGNyZWF0ZWQuIFRoZSBbb3BlblRhYl17QGxpbmsgVGFiVmlldyNvcGVuVGFifSBtZXRob2QgaWdub3JlcyB0aGlzIGF0dHJpYnV0ZVxuICAgICAqIGFuZCBsb2dzIGEgd2FybmluZyBpZiBpdCBpcyBzZXQgb24gdGhlIHByb3ZpZGVkIG9iamVjdC5cbiAgICAgKi9cbiAgICBpbml0aWFsPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIG5lZWQgdG8ga25vdywgdGhvIHdoaWNoIHRhYiB3ZSBuZWVkIHRvIHN3aXRjaCB3aGVuIHdlIGNsb3NlIGN1cnJlbnQgdGFiLCB3ZSBuZWVkIGEgcGFyZW50IHVuaXF1ZSBpZCwgaXRzXG4gICAgICogYSB1bmlxdWUgSUQgb2YgdGFiLCBmcm9tIHdoaWNoIHdlIG9wZW4gY3VycmVudCB0YWIuIEluaXRpYWwgdGFicyBhbmQgY2FzZSB0YWJzIGRvbnQgaGF2ZSB0aG9zZSBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBwYXJlbnRVbmlxdWVJZD86IHN0cmluZztcbn1cblxuXG4vKipcbiAqIFN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFiZWwgb2YgYSB0YWIgaW4gdGFiIHZpZXcuXG4gKlxuICogU2VlIHtAbGluayBUYWJDb250ZW50I2xhYmVsfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJMYWJlbCB7XG4gICAgLyoqXG4gICAgICogTWF0ZXJpYWwgZGVzaWduIGljb24gbmFtZS5cbiAgICAgKlxuICAgICAqIFNlZSBbbWF0ZXJpYWwgd2Vic2l0ZV17QGxpbmsgaHR0cHM6Ly9tYXRlcmlhbC5pby9yZXNvdXJjZXMvaWNvbnN9IGZvciBzdXBwb3J0ZWQgaWNvbiBsaXN0LlxuICAgICAqL1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGFiIG5hbWUgdGhhdCBpcyBkaXNwbGF5ZWQgaW4gaXQncyBsYWJlbC5cbiAgICAgKlxuICAgICAqIFRoZSB0ZXh0IGlzIHBhc3NlZCB0cm91Z2ggdGhlIHRyYW5zbGF0ZSBwaXBlLiBJZiB5b3Ugd2FudCB0aGUgdGFiIGxhYmVsIHRvIGJlIHRyYW5zbGF0ZWQgc2ltcGx5IHBhc3MgdGhlIHRyYW5zbGF0aW9uIGtleSBhcyB2YWx1ZS5cbiAgICAgKi9cbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRhYiBjb3VudCBpcyBkaXNwbGF5ZWQgaW4gaXQncyBsYWJlbCwgaWNoIHN0cmVhbSBpcyBwcm92aWRlZFxuICAgICAqL1xuICAgIGNvdW50PzogUmVwbGF5U3ViamVjdDxudW1iZXI+O1xuXG59XG5cblxuLyoqXG4gKiBUaGUgYmFzZSBpbnRlcmZhY2UgZm9yIGRhdGEgaW5qZWN0ZWQgaW50byB0YWJzLlxuICogVGhpcyBpbmZvcm1hdGlvbiBpcyBtYWRlIGF2YWlsYWJsZSBmb3IgaW5qZWN0aW9uIHRvIGFueSB0YWIgY29udGVudCBjb21wb25lbnQgdHJvdWdoIHRoZSBgTkFFX1RBQl9EQVRBYCBpbmplY3Rpb24gdG9rZW4uXG4gKiBJZiB7QGxpbmsgVGFiQ29udGVudH0gaGFzIHRoZSBgaW5qZWN0ZWRPYmplY3RgIGRlZmluZWQsIHRoZW4gdGhhdCBkYXRhIGlzIHByb3ZpZGVkIGFzIHdlbGwuXG4gKiBTaG91bGQgdGhlcmUgYmUgYSBrZXkgY29uZmxpY3QgaW4gdGhlIG9iamVjdHMsIHRoZW4gdmFsdWVzIGZyb20gdGhpcyBpbnRlcmZhY2UgdGFrZSBwcmVjZWRlbmNlIGFuZCByZXBsYWNlIHRoZSBwcm92aWRlZCBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdGVkVGFiRGF0YSB7XG4gICAgLyoqXG4gICAgICogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgdGFiIHdpdGhpbiB0aGUgdGFiIHZpZXcuXG4gICAgICovXG4gICAgdGFiVW5pcXVlSWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIHBhcmVudCB0YWIgdmlldyBhbGxvd2luZyBzb21lIGNvbnRyb2wgb3ZlciBpdCBmcm9tIHRoZSB0YWIgY29udGVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgdGFiVmlld1JlZjogT3BlbmVkVGFiVmlld0ludGVyZmFjZTtcbiAgICAvKipcbiAgICAgKiBgdHJ1ZWAgaXMgZW1pdHRlZCBpbnRvIHRoaXMgc3RyZWFtIHdoZW4gdGhlIHRhYiBpcyBzd2l0Y2hlZCBpbnRvLlxuICAgICAqXG4gICAgICogYGZhbHNlYCBpcyBlbWl0dGVkIGludG8gdGhpcyBzdHJlYW0gd2hlbiB0aGUgdGFiIGlzIHN3aXRjaGVkIGF3YXkgZnJvbS5cbiAgICAgKi9cbiAgICB0YWJTZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqXG4gICAgICogc3RyZWFtIGVtaXRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQgYnkgYW55IG1lYW5zIGV4Y2VwdCBmb3IgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgICovXG4gICAgdGFiQ2xvc2VkJDogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAgIGxvYWRGaWx0ZXI/OiBGaWx0ZXI7XG59XG5cblxuLyoqXG4gKiBNZXRob2RzIG9mIHBhcmVudCB0YWIgdmlldywgdGhhdCB0YWJzIGNhbiBhY2Nlc3MuXG4gKlxuICogU2VlIHtAbGluayBUYWJWaWV3fSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJWaWV3SW50ZXJmYWNlIHtcbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcuY3VycmVudGx5U2VsZWN0ZWRUYWJde0BsaW5rIFRhYlZpZXcjY3VycmVudGx5U2VsZWN0ZWRUYWJ9XG4gICAgICovXG4gICAgY3VycmVudGx5U2VsZWN0ZWRUYWIoKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogU2VlIFtUYWJWaWV3Lm9wZW5UYWJde0BsaW5rIFRhYlZpZXcjb3BlblRhYn1cbiAgICAgKi9cbiAgICBvcGVuVGFiKHRhYkNvbnRlbnQ6IFRhYkNvbnRlbnQsIGF1dG9zd2l0Y2g/OiBib29sZWFuLCBvcGVuRXhpc2luZz86IGJvb2xlYW4pOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcuc3dpdGNoVG9UYWJJbmRleF17QGxpbmsgVGFiVmlldyNzd2l0Y2hUb1RhYkluZGV4fVxuICAgICAqL1xuICAgIHN3aXRjaFRvVGFiSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcudW5pcXVlSWRde0BsaW5rIFRhYlZpZXcjdW5pcXVlSWR9XG4gICAgICovXG4gICAgc3dpdGNoVG9UYWJVbmlxdWVJZCh1bmlxdWVJZDogc3RyaW5nKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiVmlldy5jbG9zZVRhYkluZGV4XXtAbGluayBUYWJWaWV3I2Nsb3NlVGFiSW5kZXh9XG4gICAgICovXG4gICAgY2xvc2VUYWJJbmRleChpbmRleDogbnVtYmVyLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VlIFtUYWJWaWV3LmNsb3NlVGFiVW5pcXVlSWRde0BsaW5rIFRhYlZpZXcjY2xvc2VUYWJVbmlxdWVJZH1cbiAgICAgKi9cbiAgICBjbG9zZVRhYlVuaXF1ZUlkKHVuaXF1ZUlkOiBzdHJpbmcsIGZvcmNlPzogYm9vbGVhbik6IHZvaWQ7XG59XG5cbi8qKlxuICogVXBkYXRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsYWJlbCBvZiBhIHRhYiBpbiB0YWIgdmlldy5cbiAqXG4gKiBTZWUge0BsaW5rIFRhYkNvbnRlbnQjbGFiZWx9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICogKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbmVkVGFiVmlld0ludGVyZmFjZSBleHRlbmRzIFRhYlZpZXdJbnRlcmZhY2Uge1xuXG4gICAgc2V0SWNvbihpY29uOiBzdHJpbmcpO1xuXG4gICAgc2V0VGV4dCh0ZXh0OiBzdHJpbmcpO1xuXG4gICAgZ2V0SWNvbiQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgZ2V0VGV4dCQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG59XG4iXX0=
|
|
@@ -9535,7 +9535,7 @@ class Substring extends Operator {
|
|
|
9535
9535
|
// TODO IMPROVEMENT 27.4.2020 - we could use regular expressions to search for substrings which would solve the unintuitive
|
|
9536
9536
|
// behavior that occurs when we search for strings that contain spaces. We need to escape the input string in a special way
|
|
9537
9537
|
// if we choose to do this
|
|
9538
|
-
const escapedValue = Operator.escapeInput(args[0]).value.replace(
|
|
9538
|
+
const escapedValue = Operator.escapeInput(args[0]).value.replace(/ /g, '\\ ');
|
|
9539
9539
|
return Operator.forEachKeyword(elasticKeywords, keyword => new Query(`(${keyword}:*${escapedValue}*)`));
|
|
9540
9540
|
}
|
|
9541
9541
|
getOperatorNameTemplate() {
|
|
@@ -12964,7 +12964,7 @@ class SearchService {
|
|
|
12964
12964
|
* @param searchedSubstring value that should be searched on all full text fields
|
|
12965
12965
|
*/
|
|
12966
12966
|
setFullTextFilter(searchedSubstring) {
|
|
12967
|
-
const whiteSpacedSubstring = searchedSubstring.replace(
|
|
12967
|
+
const whiteSpacedSubstring = searchedSubstring.replace(/ /g, '\\ ');
|
|
12968
12968
|
this._fullTextFilter = new SimpleFilter('', this._baseFilter.type, { fullText: whiteSpacedSubstring });
|
|
12969
12969
|
this.updateActiveFilter();
|
|
12970
12970
|
}
|
|
@@ -19901,6 +19901,7 @@ class TabView {
|
|
|
19901
19901
|
* @param index - index of the tab that should be initialized
|
|
19902
19902
|
*/
|
|
19903
19903
|
initializeTab(index) {
|
|
19904
|
+
var _a, _b, _c;
|
|
19904
19905
|
this.checkIndexRange(index);
|
|
19905
19906
|
const tab = this.openedTabs[index];
|
|
19906
19907
|
if (!tab.isTabInitialized) {
|
|
@@ -19920,7 +19921,7 @@ class TabView {
|
|
|
19920
19921
|
];
|
|
19921
19922
|
providers.push({
|
|
19922
19923
|
provide: NAE_VIEW_ID_SEGMENT,
|
|
19923
|
-
useValue: tab.initial ? tab.uniqueId : TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT
|
|
19924
|
+
useValue: tab.initial ? tab.uniqueId : ((_c = (_b = (_a = tab.injectedObject) === null || _a === void 0 ? void 0 : _a.loadFilter) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT)
|
|
19924
19925
|
});
|
|
19925
19926
|
const injector = Injector.create({ providers, parent: this._parentInjector });
|
|
19926
19927
|
tab.portal = new ComponentPortal(tab.tabContentComponent, null, injector);
|