ets-fe-ng-sdk 1.0.14 → 1.0.16

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.
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
100
100
  providedIn: 'root',
101
101
  }]
102
102
  }], ctorParameters: function () { return [{ type: i1.Title }, { type: i2.TranslationService }]; } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFhaEUsTUFBTSxPQUFPLFVBQVU7SUFnRHJCLFlBQW1CLE1BQWEsRUFBUyxVQUE4QjtRQUFwRCxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUEzQ3ZFLFlBQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQy9CLGVBQVUsR0FBbUIsRUFBRSxDQUFDO1FBOEJoQyxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUF3Q25ELGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3pELGNBQWMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNsQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMxQixjQUFjLENBQUMsT0FBTztvQkFDdEIsS0FBSztvQkFDTCxjQUFjLENBQUMsSUFBSSxDQUN0QixDQUFDOztnQkFFRixJQUFJLENBQUMsVUFBVTtxQkFDWixhQUFhLENBQ1osQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsY0FBYyxDQUFDLE9BQU87b0JBQ3RCLEtBQUs7b0JBQ0wsY0FB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Q0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN4QixjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ2hEO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQTJCRCxZQUFZO0lBQ1osWUFBWTtRQUNWLE1BQU0sT0FBTyxHQUFvQixRQUFRLENBQUMsY0FBYyxDQUN0RCxpQkFBaUIsQ0FDWCxDQUFDO1FBQ1QsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDO0lBQzdELENBQUM7O3VHQTVHVSxVQUFVOzJHQUFWLFVBQVUsY0FGVCxNQUFNOzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEVUU2Vudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7XG4gIEVTeXN0ZW0sXG4gIEVTeXN0ZW1CdXNMaW5lLFxuICBJU3lzdGVtLFxuICBJVmFsdWVMYWJlbCxcbn0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVFNNZW51SXRlbSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvSU1lbnVJdGVtJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBTZXJ2aWNlPFxuICBURVN5c3RlbSA9IEVTeXN0ZW0sXG4gIFRFU3lzdGVtQnVzTGluZSA9IEVTeXN0ZW1CdXNMaW5lLFxuICBURVRTTWVudUl0ZW0gPSBFVFNNZW51SXRlbVxuPiB7XG4gIHRvcE1lbnUgPSBFVFNlbnZpcm9ubWVudC5tZW51cztcbiAgYm90dG9tTWVudTogVEVUU01lbnVJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBfY3VycmVudFRvcE1lbnU6IFRFVFNNZW51SXRlbTtcbiAgcHJpdmF0ZSBfc3lzdGVtOiBURVN5c3RlbTtcbiAgcHJpdmF0ZSBfcGFnZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGdldCBzeXN0ZW0oKTogVEVTeXN0ZW0ge1xuICAgIHJldHVybiB0aGlzLl9zeXN0ZW07XG4gIH1cbiAgcHVibGljIHNldCBzeXN0ZW0odmFsdWU6IFRFU3lzdGVtKSB7XG4gICAgdGhpcy5fc3lzdGVtID0gdmFsdWU7XG4gICAgRVRTZW52aXJvbm1lbnQuY3VycmVudFN5c3RlbSA9IHZhbHVlIGFzIGFueTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLmNsYXNzTmFtZSA9XG4gICAgICB2YWx1ZT8udG9TdHJpbmcoKSB8fCAodmFsdWUgYXMgYW55KTtcbiAgICB0aGlzLmJvdHRvbU1lbnUgPSB0aGlzLnRvcE1lbnUuZmluZCgoeCkgPT4geC5zeXN0ZW0gPT0gdmFsdWUpPy5zdWJzIGFzIGFueTtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLXByaW1hcnknLFxuICAgICAgdGhpcy5nZXRDdXJyZW50U3lzdGVtTWV0YWRhdGEuY29sb3VyQ29kZVxuICAgICk7XG4gIH1cbiAgcHVibGljIGdldCBjdXJyZW50VG9wTWVudSgpOiBURVRTTWVudUl0ZW0ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VG9wTWVudTtcbiAgfVxuICBwdWJsaWMgc2V0IGN1cnJlbnRUb3BNZW51KHZhbHVlOiBURVRTTWVudUl0ZW0pIHtcbiAgICB0aGlzLl9jdXJyZW50VG9wTWVudSA9IHZhbHVlO1xuICAgIHRoaXMuYm90dG9tTWVudSA9ICg8YW55PnZhbHVlKT8uc3VicztcbiAgICAvLyBkZWJ1Z2dlclxuICB9XG4gIGFzeW5jIHNldEN1cnJlbnRUb3BNZW51KHN5c3RlbTogVEVTeXN0ZW0pIHtcbiAgICB0aGlzLmN1cnJlbnRUb3BNZW51ID0gdGhpcy50b3BNZW51LmZpbmQoKHgpID0+IHguc3lzdGVtID09IHN5c3RlbSkgYXMgYW55O1xuICB9XG4gIHN5c3RlbU1ldGFkYXRhTWFwID0gbmV3IE1hcDxURVN5c3RlbSwgSVN5c3RlbT4oW10pO1xuICBnZXQgZ2V0Rmlyc3RBdmFpbGFibGVTeXN0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtTWV0YWRhdGFNYXAuZ2V0KFxuICAgICAgRVRTZW52aXJvbm1lbnQuYWN0aXZlU3lzdGVtcz8ubGVuZ3RoXG4gICAgICAgID8gRVRTZW52aXJvbm1lbnQuYWN0aXZlU3lzdGVtc1swXVxuICAgICAgICA6IHRoaXMuc3lzdGVtTWV0YWRhdGFNYXAua2V5c1swXVxuICAgICk7XG4gIH1cbiAgZ2V0IGdldEN1cnJlbnRTeXN0ZW1NZXRhZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1NZXRhZGF0YU1hcC5nZXQodGhpcy5zeXN0ZW0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRpdGxlUzogVGl0bGUsIHB1YmxpYyB0cmFuc2xhdG9yOiBUcmFuc2xhdGlvblNlcnZpY2UpIHt9XG5cbiAgc2V0RGVmYXVsdENsYXNzKCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uY2xhc3NOYW1lID1cbiAgICAgIHRoaXMuZ2V0Rmlyc3RBdmFpbGFibGVTeXN0ZW0ubmFtZT8udG9TdHJpbmcoKTtcbiAgfVxuICBnZXQgYnVzTGluZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50U3lzdGVtTWV0YWRhdGE/LmJ1c2xpbmU7XG4gIH1cbiAgZ2V0IGFjdGl2ZVN5c3RlbXMoKSB7XG4gICAgcmV0dXJuIEVUU2Vudmlyb25tZW50LmFjdGl2ZVN5c3RlbXM/Lmxlbmd0aFxuICAgICAgPyB0aGlzLnRvcE1lbnUuZmlsdGVyKCh4KSA9PlxuICAgICAgICAgIEVUU2Vudmlyb25tZW50LmFjdGl2ZVN5c3RlbXMuaW5jbHVkZXMoeC5zeXN0ZW0pXG4gICAgICAgIClcbiAgICAgIDogdGhpcy50b3BNZW51O1xuICB9XG4gIGdldCBoYXNCdXNMaW5lKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0Q3VycmVudFN5c3RlbU1ldGFkYXRhPy5idXNsaW5lO1xuICB9XG5cbiAgLy8jcmVnaW9uIHBhZ2VuYW1lXG4gIGdldCBwYWdlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZU5hbWU7XG4gIH1cbiAgc2V0IHBhZ2VOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYWdlTmFtZSA9IHZhbHVlO1xuICAgIHRoaXMuYWRkVGl0bGUodGhpcy5fcGFnZU5hbWUpO1xuICB9XG4gIGFkZFRpdGxlID0gKHRpdGxlLCB0cmFuc2xhdGUgPSBFVFNlbnZpcm9ubWVudC50cmFuc2xhdGUpID0+IHtcbiAgICBFVFNlbnZpcm9ubWVudC5wYWdlVGl0bGUgPSB0aXRsZTtcbiAgICBpZiAoIXRyYW5zbGF0ZSlcbiAgICAgIHRoaXMudGl0bGVTLnNldFRpdGxlKFxuICAgICAgICAodGl0bGUgPyB0aXRsZSArICcgfCAnIDogJycpICtcbiAgICAgICAgICBFVFNlbnZpcm9ubWVudC5hcHBOYW1lICtcbiAgICAgICAgICAnIHwgJyArXG4gICAgICAgICAgRVRTZW52aXJvbm1lbnQubmFtZVxuICAgICAgKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLnRyYW5zbGF0b3JcbiAgICAgICAgLnRyYW5zbGF0ZUhUTUwoXG4gICAgICAgICAgKHRpdGxlID8gdGl0bGUgKyAnIHwgJyA6ICcnKSArXG4gICAgICAgICAgICBFVFNlbnZpcm9ubWVudC5hcHBOYW1lICtcbiAgICAgICAgICAgICcgfCAnICtcbiAgICAgICAgICAgIEVUU2Vudmlyb25tZW50Lm5hbWVcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlUy5zZXRUaXRsZShyKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFkZFRpdGxlKHRpdGxlLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICB9O1xuICAvLyNlbmRyZWdpb25cbiAgc2V0TWV0YVRoZW1lKCkge1xuICAgIGNvbnN0IG1ldGFUYWc6IEhUTUxNZXRhRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgJ21ldGFUaGVtZUNvbG91cidcbiAgICApIGFzIGFueTtcbiAgICBtZXRhVGFnLmNvbnRlbnQgPSB0aGlzLmdldEN1cnJlbnRTeXN0ZW1NZXRhZGF0YS5jb2xvdXJDb2RlO1xuICB9XG4gIGZpbHRlck5hdk1lbnVGdW5jID0gKHZhbHVlOiBURVRTTWVudUl0ZW0pID0+ICEoPGFueT52YWx1ZSkubG9jYXRpb25zPy5zaXplO1xuICBidXNMaW5lczogSVZhbHVlTGFiZWw8VEVTeXN0ZW1CdXNMaW5lPltdID0gW107XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFhaEUsTUFBTSxPQUFPLFVBQVU7SUFnRHJCLFlBQW1CLE1BQWEsRUFBUyxVQUE4QjtRQUFwRCxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUEzQ3ZFLFlBQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQy9CLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBOEI3QixzQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUF3Q25ELGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3pELGNBQWMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNsQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMxQixjQUFjLENBQUMsT0FBTztvQkFDdEIsS0FBSztvQkFDTCxjQUFjLENBQUMsSUFBSSxDQUN0QixDQUFDOztnQkFFRixJQUFJLENBQUMsVUFBVTtxQkFDWixhQUFhLENBQ1osQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsY0FBYyxDQUFDLE9BQU87b0JBQ3RCLEtBQUs7b0JBQ0wsY0FB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Q0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN4QixjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ2hEO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksVUFBVTtRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQTJCRCxZQUFZO0lBQ1osWUFBWTtRQUNWLE1BQU0sT0FBTyxHQUFvQixRQUFRLENBQUMsY0FBYyxDQUN0RCxpQkFBaUIsQ0FDWCxDQUFDO1FBQ1QsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDO0lBQzdELENBQUM7O3VHQTVHVSxVQUFVOzJHQUFWLFVBQVUsY0FGVCxNQUFNOzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEVUU2Vudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7XG4gIEVTeXN0ZW0sXG4gIEVTeXN0ZW1CdXNMaW5lLFxuICBJU3lzdGVtLFxuICBJVmFsdWVMYWJlbCxcbn0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVFNNZW51SXRlbSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvSU1lbnVJdGVtJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBTZXJ2aWNlPFxuICBURVN5c3RlbSA9IEVTeXN0ZW0sXG4gIFRFU3lzdGVtQnVzTGluZSA9IEVTeXN0ZW1CdXNMaW5lLFxuICBUTWVudUl0ZW0gPSBFVFNNZW51SXRlbVxuPiB7XG4gIHRvcE1lbnUgPSBFVFNlbnZpcm9ubWVudC5tZW51cztcbiAgYm90dG9tTWVudTogVE1lbnVJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBfY3VycmVudFRvcE1lbnU6IFRNZW51SXRlbTtcbiAgcHJpdmF0ZSBfc3lzdGVtOiBURVN5c3RlbTtcbiAgcHJpdmF0ZSBfcGFnZU5hbWU6IHN0cmluZztcbiAgcHVibGljIGdldCBzeXN0ZW0oKTogVEVTeXN0ZW0ge1xuICAgIHJldHVybiB0aGlzLl9zeXN0ZW07XG4gIH1cbiAgcHVibGljIHNldCBzeXN0ZW0odmFsdWU6IFRFU3lzdGVtKSB7XG4gICAgdGhpcy5fc3lzdGVtID0gdmFsdWU7XG4gICAgRVRTZW52aXJvbm1lbnQuY3VycmVudFN5c3RlbSA9IHZhbHVlIGFzIGFueTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLmNsYXNzTmFtZSA9XG4gICAgICB2YWx1ZT8udG9TdHJpbmcoKSB8fCAodmFsdWUgYXMgYW55KTtcbiAgICB0aGlzLmJvdHRvbU1lbnUgPSB0aGlzLnRvcE1lbnUuZmluZCgoeCkgPT4geC5zeXN0ZW0gPT0gdmFsdWUpPy5zdWJzIGFzIGFueTtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICctLXByaW1hcnknLFxuICAgICAgdGhpcy5nZXRDdXJyZW50U3lzdGVtTWV0YWRhdGEuY29sb3VyQ29kZVxuICAgICk7XG4gIH1cbiAgcHVibGljIGdldCBjdXJyZW50VG9wTWVudSgpOiBUTWVudUl0ZW0ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VG9wTWVudTtcbiAgfVxuICBwdWJsaWMgc2V0IGN1cnJlbnRUb3BNZW51KHZhbHVlOiBUTWVudUl0ZW0pIHtcbiAgICB0aGlzLl9jdXJyZW50VG9wTWVudSA9IHZhbHVlO1xuICAgIHRoaXMuYm90dG9tTWVudSA9ICg8YW55PnZhbHVlKT8uc3VicztcbiAgICAvLyBkZWJ1Z2dlclxuICB9XG4gIGFzeW5jIHNldEN1cnJlbnRUb3BNZW51KHN5c3RlbTogVEVTeXN0ZW0pIHtcbiAgICB0aGlzLmN1cnJlbnRUb3BNZW51ID0gdGhpcy50b3BNZW51LmZpbmQoKHgpID0+IHguc3lzdGVtID09IHN5c3RlbSkgYXMgYW55O1xuICB9XG4gIHN5c3RlbU1ldGFkYXRhTWFwID0gbmV3IE1hcDxURVN5c3RlbSwgSVN5c3RlbT4oW10pO1xuICBnZXQgZ2V0Rmlyc3RBdmFpbGFibGVTeXN0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtTWV0YWRhdGFNYXAuZ2V0KFxuICAgICAgRVRTZW52aXJvbm1lbnQuYWN0aXZlU3lzdGVtcz8ubGVuZ3RoXG4gICAgICAgID8gRVRTZW52aXJvbm1lbnQuYWN0aXZlU3lzdGVtc1swXVxuICAgICAgICA6IHRoaXMuc3lzdGVtTWV0YWRhdGFNYXAua2V5c1swXVxuICAgICk7XG4gIH1cbiAgZ2V0IGdldEN1cnJlbnRTeXN0ZW1NZXRhZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1NZXRhZGF0YU1hcC5nZXQodGhpcy5zeXN0ZW0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRpdGxlUzogVGl0bGUsIHB1YmxpYyB0cmFuc2xhdG9yOiBUcmFuc2xhdGlvblNlcnZpY2UpIHt9XG5cbiAgc2V0RGVmYXVsdENsYXNzKCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uY2xhc3NOYW1lID1cbiAgICAgIHRoaXMuZ2V0Rmlyc3RBdmFpbGFibGVTeXN0ZW0ubmFtZT8udG9TdHJpbmcoKTtcbiAgfVxuICBnZXQgYnVzTGluZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDdXJyZW50U3lzdGVtTWV0YWRhdGE/LmJ1c2xpbmU7XG4gIH1cbiAgZ2V0IGFjdGl2ZVN5c3RlbXMoKSB7XG4gICAgcmV0dXJuIEVUU2Vudmlyb25tZW50LmFjdGl2ZVN5c3RlbXM/Lmxlbmd0aFxuICAgICAgPyB0aGlzLnRvcE1lbnUuZmlsdGVyKCh4KSA9PlxuICAgICAgICAgIEVUU2Vudmlyb25tZW50LmFjdGl2ZVN5c3RlbXMuaW5jbHVkZXMoeC5zeXN0ZW0pXG4gICAgICAgIClcbiAgICAgIDogdGhpcy50b3BNZW51O1xuICB9XG4gIGdldCBoYXNCdXNMaW5lKCkge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0Q3VycmVudFN5c3RlbU1ldGFkYXRhPy5idXNsaW5lO1xuICB9XG5cbiAgLy8jcmVnaW9uIHBhZ2VuYW1lXG4gIGdldCBwYWdlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZU5hbWU7XG4gIH1cbiAgc2V0IHBhZ2VOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYWdlTmFtZSA9IHZhbHVlO1xuICAgIHRoaXMuYWRkVGl0bGUodGhpcy5fcGFnZU5hbWUpO1xuICB9XG4gIGFkZFRpdGxlID0gKHRpdGxlLCB0cmFuc2xhdGUgPSBFVFNlbnZpcm9ubWVudC50cmFuc2xhdGUpID0+IHtcbiAgICBFVFNlbnZpcm9ubWVudC5wYWdlVGl0bGUgPSB0aXRsZTtcbiAgICBpZiAoIXRyYW5zbGF0ZSlcbiAgICAgIHRoaXMudGl0bGVTLnNldFRpdGxlKFxuICAgICAgICAodGl0bGUgPyB0aXRsZSArICcgfCAnIDogJycpICtcbiAgICAgICAgICBFVFNlbnZpcm9ubWVudC5hcHBOYW1lICtcbiAgICAgICAgICAnIHwgJyArXG4gICAgICAgICAgRVRTZW52aXJvbm1lbnQubmFtZVxuICAgICAgKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLnRyYW5zbGF0b3JcbiAgICAgICAgLnRyYW5zbGF0ZUhUTUwoXG4gICAgICAgICAgKHRpdGxlID8gdGl0bGUgKyAnIHwgJyA6ICcnKSArXG4gICAgICAgICAgICBFVFNlbnZpcm9ubWVudC5hcHBOYW1lICtcbiAgICAgICAgICAgICcgfCAnICtcbiAgICAgICAgICAgIEVUU2Vudmlyb25tZW50Lm5hbWVcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlUy5zZXRUaXRsZShyKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFkZFRpdGxlKHRpdGxlLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICB9O1xuICAvLyNlbmRyZWdpb25cbiAgc2V0TWV0YVRoZW1lKCkge1xuICAgIGNvbnN0IG1ldGFUYWc6IEhUTUxNZXRhRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgJ21ldGFUaGVtZUNvbG91cidcbiAgICApIGFzIGFueTtcbiAgICBtZXRhVGFnLmNvbnRlbnQgPSB0aGlzLmdldEN1cnJlbnRTeXN0ZW1NZXRhZGF0YS5jb2xvdXJDb2RlO1xuICB9XG4gIGZpbHRlck5hdk1lbnVGdW5jID0gKHZhbHVlOiBUTWVudUl0ZW0pID0+ICEoPGFueT52YWx1ZSkubG9jYXRpb25zPy5zaXplO1xuICBidXNMaW5lczogSVZhbHVlTGFiZWw8VEVTeXN0ZW1CdXNMaW5lPltdID0gW107XG59XG4iXX0=
@@ -552,4 +552,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
552
552
  type: Injectable,
553
553
  args: [{ providedIn: 'root' }]
554
554
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.MatSnackBar }, { type: i3.Router }, { type: i4.Title }, { type: i5.Location }, { type: i6.ETSReactiveFormInputService }, { type: i7.InputService }, { type: i8.RouteService }, { type: i9.PageLoaderService }, { type: i5.CurrencyPipe }, { type: i5.TitleCasePipe }, { type: i10.LoggerService }, { type: i11.PageService }]; } });
555
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBVWpELE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFhLGVBQWUsRUFBUSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBR3RELE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDUyxNQUFpQixFQUNqQixRQUFxQixFQUNyQixNQUFjLEVBQ2QsTUFBYSxFQUNiLFFBQWtCLEVBQ2xCLFlBQWlCLEVBQ2pCLGFBQWtCLEVBQ2xCLFlBQTBCLEVBQzFCLEVBQXFCLEVBQ3JCLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGFBQTRCLEVBQzVCLEtBQWtCO1FBWmxCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixX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RyxHQUFHLEVBQUUsQ0FBQztRQUNmLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ3JCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDbEQsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwQjtTQUNGO1FBQ0QsT0FBTyxHQUFVLENBQUM7SUFDcEIsQ0FBQztJQUlELElBQUksUUFBUTtRQUNWLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7SUFDbEMsQ0FBQzs7OEdBM2pCVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURKLE1BQU07MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIExvY2F0aW9uLCBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdERpYWxvZyBhcyBNYXREaWFsb2csXG4gIE1hdERpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciBhcyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVUU1JlYWN0aXZlRm9ybUlucHV0U2VydmljZSBhcyBJUzEgfSBmcm9tICcuL2lucHV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCBqZmQgZnJvbSAnanMtZmlsZS1kb3dubG9hZCc7XG5pbXBvcnQgeyBQYWdlTG9hZGVyU2VydmljZSB9IGZyb20gJy4vcGFnZS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWcsIENvbmZpZyBhcyBjb25maWcgfSBmcm9tICcuLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcbmltcG9ydCB7IEFwcFJvdXRlQmFzZSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvUm91dGVJdGVtLmNsYXNzJztcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHsgRVBhZ2VUeXBlLCBFVmFsaWRhdGlvblR5cGUsIElCdG4gfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEVUU2Vudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1Db250cm9sLFxuICBVbnR5cGVkRm9ybUFycmF5LFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVFVFNQYWdlQnRuSUQgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL0lNZW51SXRlbSc7XG5pbXBvcnQgeyBJbnB1dFNlcnZpY2UgYXMgSVMyIH0gZnJvbSAnLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJzsgXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRVRTVXRpbGl0eVNlcnZpY2Uge1xuICByOiBBcHBSb3V0ZUJhc2U7XG4gIGRvd25sb2FkZXIgPSBqZmQ7XG4gICQgPSAkO1xuICBlVmFsaWRhdGlvblR5cGUgPSBFVmFsaWRhdGlvblR5cGU7XG4gIGNvbmZpZyA9IENvbmZpZztcbiAgZW52aXJvbm1lbnQgPSBFVFNlbnZpcm9ubWVudDtcbiAgcGJpZCA9IEVFVFNQYWdlQnRuSUQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgdGl0bGVTOiBUaXRsZSxcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHB1YmxpYyBpbnB1dFNlcnZpY2U6IElTMSxcbiAgICBwdWJsaWMgaW5wdXRTZXJ2aWNlMjogSVMyLFxuICAgIHB1YmxpYyByb3V0ZVNlcnZpY2U6IFJvdXRlU2VydmljZSxcbiAgICBwdWJsaWMgcFM6IFBhZ2VMb2FkZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBwdWJsaWMgdGl0bGVDYXNlUGlwZTogVGl0bGVDYXNlUGlwZSxcbiAgICBwdWJsaWMgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwdWJsaWMgcGFnZVM6IFBhZ2VTZXJ2aWNlXG4gICkge31cblxuICBiYWNrID0gKCkgPT4gdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG5cbiAgb25seU9uZUlucHV0KGlucHV0czogRm9ybUNvbnRyb2xbXSkge1xuICAgIGNvbnN0IG5JbnB1dHMgPSBpbnB1dHM/Lm1hcCgoaW5wKSA9PiAoeyBpZDogdGhpcy5nZW5SYW5kb21JRCwgaW5wIH0pKSB8fCBbXTtcbiAgICBtZXJnZShcbiAgICAgIC4uLm5JbnB1dHMubWFwKChpKSA9PlxuICAgICAgICBpLmlucC52YWx1ZUNoYW5nZXMucGlwZShtYXAoKHZhbCkgPT4gKHsgaWQ6IGkuaWQsIHZhbCB9KSkpXG4gICAgICApXG4gICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAoci52YWwpXG4gICAgICAgIG5JbnB1dHNcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHguaW5wLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbklucHV0c1xuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHguaWQgIT0gci5pZClcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4geC5pbnAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjb3B5UGF5bG9hZChwYXlsb2FkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChFVFNlbnZpcm9ubWVudC5kZWJ1Zykge1xuICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgICAgZWxlbS52YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW0pO1xuICAgICAgICBlbGVtLnNlbGVjdCgpO1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIHhPclkgPSAoeCwgeSA9ICctJykgPT4gYCR7eCA9PSBudWxsID8geSA6IHh9YDtcbiAgdG9UaXRsZUNhc2UodGV4dDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVDYXNlUGlwZS50cmFuc2Zvcm0odGV4dCk7XG4gIH1cbiAgLyoqXG4gICAqIENvbnZlcnQgRGF0ZSBzdHJpbmcgdG8gRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAcGFyYW0gZGF0ZVN0ciBEYXRlIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNSdcbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgY29udmVyc2lvblxuICAgKiBAcmV0dXJucyBSZXR1cm5zIGEgRGF0ZSBUaW1lIHN0cmluZ1xuICAgKiBAZXhhbXBsZSAnMjAyMi0wMS0yNVQwMDowMDowMFonIG9yICcyMDIyLTAxLTI1IDAwOjAwOjAwJ1xuICAgKi9cbiAgZGF0ZVRvRGF0ZVRpbWUgPSAoXG4gICAgZGF0ZVN0cjogc3RyaW5nLFxuICAgIGNvbmZpZz86IHtcbiAgICAgIC8qKlxuICAgICAgICogVXNlIHRoZSB5eXl5LW1tLWRkIGhoOm1tOnNzIGZvcm1hdFxuICAgICAgICovXG4gICAgICBvbWl0VD86IGJvb2xlYW47XG4gICAgfVxuICApID0+IHtcbiAgICBjb25zdCBvbWl0VCA9ICEhY29uZmlnPy5vbWl0VDtcbiAgICBpZiAoIWRhdGVTdHIpIHJldHVybiBudWxsO1xuICAgIGlmIChkYXRlU3RyLmluY2x1ZGVzKCdUJykpIHJldHVybiBkYXRlU3RyO1xuICAgIHJldHVybiBkYXRlU3RyICsgKG9taXRUID8gJyAwMDowMDowMCcgOiAnVDAwOjAwOjAwWicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTmFtZSBvZiB0aGUgZmllbGQgdG8gc2V0XG4gICAqIEBwYXJhbSB2YWwgVmFsdWUgdG8gc2V0IHRoZSBmaWVsZCB3aXRoXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbDxUPihvYmo6IFQsIGt2cHM6IFBhcnRpYWw8VD4pIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XG4gICAgZm9yIChjb25zdCBrZXkgaW4ga3Zwcykge1xuICAgICAgb2JqW2tleV0gPSBrdnBzW2tleV07XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogKFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QpIGZvciBtdWx0aXBsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBvYmplY3RzIGFuZCB0aGVpciBtb2RpZmljYXRpb25zXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbEFycmF5PFQ+KGl0ZW1zOiB7IG9iajogVDsga3ZwczogUGFydGlhbDxUPiB9W10pIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIHRoaXMuc2V0dGVyV2l0aE51bGwoaXRlbS5vYmosIGl0ZW0ua3Zwcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGZhIFRoZSBGb3JtQXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGVtaXRFdmVudCBTcGVjaWZ5IHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgRm9ybUFycmF5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBoYW5kbGVGb3JtUm93RGVsZXRlID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZmE6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGVtaXRFdmVudCA9IHRydWVcbiAgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHN1YikgPT4ge1xuICAgICAgY29uc3QgaWQgPSBjbG9uZURlZXAoZmEuY29udHJvbHNbaW5kZXhdPy52YWx1ZT8uaWQpO1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBpZiAoZmEuY29udHJvbHMubGVuZ3RoID09IDEgJiYgaWQpIHtcbiAgICAgICAgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50IH0pO1xuICAgICAgICBhZGRSb3dGdW5jKCk7XG4gICAgICB9IGVsc2UgaWYgKGZhLmNvbnRyb2xzLmxlbmd0aCA+IDEpIGZhLnJlbW92ZUF0KGluZGV4LCB7IGVtaXRFdmVudCB9KTtcbiAgICAgIGVsc2UgaWYgKGZhLmNvbnRyb2xzLmxlbmd0aCA9PSAxKSBmYS5jb250cm9sc1swXS5yZXNldCgpO1xuXG4gICAgICBpZiAoaWQgJiYgZGVsZXRlU2VydmljZSkge1xuICAgICAgICBjb25zdCByZXEgPSBkZWxldGVTZXJ2aWNlKGlkKTtcbiAgICAgICAgaWYgKHJlcVsndG9Qcm9taXNlJ10pIHtcbiAgICAgICAgICBzdWIocmVxWyd0b1Byb21pc2UnXSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWIocmVxIGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YihudWxsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgZGVsZXRpb24gb2Ygcm93cyBmcm9tIGFuIGFycmF5XG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcm93IHRvIGRlbGV0ZVxuICAgKiBAcGFyYW0gYXJyIFRoZSBhcnJheSB0aGF0IGhvbGRzIHRoZSByb3dzXG4gICAqIEBwYXJhbSBkZWxldGVTZXJ2aWNlIFRoZSBkZWxldGlvbiBzZXJ2aWNlIHRvIGJlIGNhbGxlZCAoSXQgc2hvdWxkIGJlIGFuIGFub255bW91cyBmdW5jdGlvbilcbiAgICogQHBhcmFtIGFkZFJvd0Z1bmMgVGhlIGZ1bmN0aW9uIChhbm9ueW1vdXMpIHRoYXQgYWRkcyBhIG5ldyByb3cgdG8gdGhlIGFycmF5XG4gICAqIEBwYXJhbSBjYiBUaGUgZnVuY3Rpb24gdG8gY2FsbGJhY2sgd2l0aCB0aGUgcmVzcG9uc2Ugb2YgdGhlIGRlbGV0aW9uIHNlcnZpY2UgYXMgdGhlIGlucHV0IHBhcmFtZXRlclxuICAgKi9cbiAgaGFuZGxlUm93RGVsZXRlID0gYXN5bmMgPFQ+KFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgYXJyOiBhbnlbXSxcbiAgICBkZWxldGVTZXJ2aWNlOiAoLi4uYXJncykgPT4gUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD4sXG4gICAgYWRkUm93RnVuYzogKC4uLmFyZ3MpID0+IGFueSxcbiAgICBjYj86IChhbnkpID0+IGFueVxuICApID0+IHtcbiAgICBjb25zdCBpZCA9IGFycltpbmRleF0/LmlkO1xuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IHJlcSA9IGRlbGV0ZVNlcnZpY2UoaWQpO1xuICAgICAgaWYgKHR5cGVvZiByZXFbJ3RvUHJvbWlzZSddID09ICdmdW5jdGlvbicpXG4gICAgICAgIGNiID8gY2IoYXdhaXQgcmVxWyd0b1Byb21pc2UnXSgpKSA6IHJlcVsndG9Qcm9taXNlJ10oKTtcbiAgICAgIGVsc2UgY2IgPyBjYihhd2FpdCByZXEpIDogbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoYXJyLmxlbmd0aCA9PSAxKSB7XG4gICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICB9IGVsc2UgaWYgKGFyci5sZW5ndGggPiAxKSBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgfTtcbiAgLyoqXG4gICAqIFRvIGhhbmRsZSB0aGUgcGF0Y2hpbmcgb2YgYSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBjb250YWlucyB0aGUgZGF0YVxuICAgKiBAcGFyYW0gYWRkRnVuYyBUaGUgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhZGRpdGlvbiBvZiBzaW5nbGUgZW50cmllc1xuICAgKiBAcGFyYW0gZm9ybUFyciBUaGUgRm9ybUFycmF5IHRoYXQgd2lsbCBob2xkIHRoZSBhcnJheSdzIGRhdGFcbiAgICovXG4gIGluaXRQYXRjaEZvcm1BcnJheSA9IChcbiAgICBhcnI6IGFueVtdLFxuICAgIGFkZEZ1bmM6IChpOiBudW1iZXIsIGRhdGE/OiBhbnksIGZvcm1BcnI/OiBGb3JtQXJyYXkpID0+IHZvaWQsXG4gICAgZm9ybUFycjogRm9ybUFycmF5XG4gICkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgaWYgKGFycj8ubGVuZ3RoKSB7XG4gICAgICBpZiAoZm9ybUFyci5sZW5ndGgpIGZvcm1BcnIuY2xlYXIoKTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgYWRkRnVuYyhmb3JtQXJyLmxlbmd0aCwgaXRlbSwgZm9ybUFycik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9ybUFyci5sZW5ndGgpIGFkZEZ1bmMoZm9ybUFyci5sZW5ndGgsIG51bGwsIGZvcm1BcnIpO1xuICAgIH1cbiAgfTtcbiAgcHJpdmF0ZSBpc1Byb21pc2UgPSAoZnVuYykgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgaXNBc3luYyA9IChmdW5jKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGZ1bmMuY29uc3RydWN0b3IubmFtZSA9PT0gJ0FzeW5jRnVuY3Rpb24nIHx8XG4gICAgICAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicgJiYgdGhpcy5pc1Byb21pc2UoZnVuYygpKSlcbiAgICApO1xuICB9O1xuXG4gIGlzT2JzZXJ2YWJsZSA9IDxUPihmdW5jKSA9PiB7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZnVuYy5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbic7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBmdW5jIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTtcbiAgICAvLyByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGZ1bmMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlPFQ+O1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgaXNPYnNlcnZhYmxlKGZ1bmMpO1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMudG9Qcm9taXNlID09PSAnZnVuY3Rpb24nO1xuICB9O1xuICBwcm9taXNpZnlWYWwgPSA8VD4odmFsOiBUIHwgUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICBpZiAodGhpcy5pc0FzeW5jKHZhbCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsIGFzIFByb21pc2U8VD4pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc09ic2VydmFibGUodmFsKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgodmFsIGFzIE9ic2VydmFibGU8VD4pLnRvUHJvbWlzZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwgYXMgVCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gYXJyIEFycmF5IG9mIG9ic2VydmFibGVzIHRvIGZldGNoXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHRoZSByZXNwb25zZXMgbWVyZ2VkIHRvZ2V0aGVyLiBJdCBlbWl0cyB0aGUgbWVyZ2VkIHJlc3BvbnNlcyBhcyB0aGV5IGFyZSBmZXRjaGVkIGFuZCBjbG9zZXMgb25jZSBhbGxsIHRoZSByZXNwb25zZXMgaGF2ZSBiZWVuIGZldGNoZWRcbiAgICovXG4gIG1lcmdlQXJyT2JzZXJ2YWJsZXMgPSA8VD4oYXJyOiB7ICRmdW5jOiBPYnNlcnZhYmxlPFRbXT4gfVtdKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFRbXT4oKHN1YikgPT4ge1xuICAgICAgY29uc3QgcmV0OiBUW10gPSBbXTtcbiAgICAgIGxldCByZXNwb25zZUNvdW50ID0gMDtcbiAgICAgIG1lcmdlKFxuICAgICAgICAuLi5hcnIubWFwKCh4KSA9PlxuICAgICAgICAgIHguJGZ1bmM/LnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgocikgPT4ge1xuICAgICAgICAgICAgICByZXNwb25zZUNvdW50Kys7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgcmV0LnB1c2goLi4ucik7XG4gICAgICAgIHN1Yi5uZXh0KHJldCk7XG4gICAgICAgIGlmIChyZXNwb25zZUNvdW50ID09IGFyci5maWx0ZXIoKHgpID0+IHguJGZ1bmMpLmxlbmd0aCkge1xuICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICByZW1vdmVEdXBsaWNhdGU8VD4obGlzdDogVFtdLCBrZXlGaWVsZCA9ICdjb2RlJykge1xuICAgIGlmICghbGlzdCkgcmV0dXJuIG51bGw7XG4gICAgbGlzdCA9IGxpc3QuZmlsdGVyKCh4KSA9PiB4KTtcbiAgICBjb25zdCByZXQ6IFRbXSA9IFtdLFxuICAgICAgZHVwbGljYXRlTWFwOiB7IFt4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICBpZiAoZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSkgY29udGludWU7XG4gICAgICByZXQucHVzaChpdGVtKTtcbiAgICAgIGR1cGxpY2F0ZU1hcFtpdGVtW2tleUZpZWxkXV0gPSBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG4gIGdldCBnZW5SYW5kb21JRCgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwMDAwMDAwMCk7XG4gIH1cbiAgc3RvcmVQYXlsb2FkID0gdGhpcy5sb2dnZXJTZXJ2aWNlLmFkZExvZztcbiAgb2JqSXNFbXB0eSA9IChvYmosIGV4Y2x1c2lvbkZpZWxkcz86IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYgKCFvYmopIHJldHVybiB0cnVlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKGV4Y2x1c2lvbkZpZWxkcz8uaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBpZiAob2JqW2tleV0pIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGRhdGFHZW4gPSA8VCA9IGFueT4oa2V5czogc3RyaW5nW10sIGxlbmd0aCA9IDEwKSA9PiB7XG4gICAgY29uc3QgcmV0OiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCB0OiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgdFtrZXldID0gdGhpcy50ZXh0R2VuKCk7XG4gICAgICB9XG4gICAgICByZXQucHVzaCh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH07XG4gIHRleHRHZW4gPSAoKSA9PiAncmFuZG9tJyArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDApO1xuICB0cmFja0J5Q29kZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uY29kZTtcbiAgfVxuICB0cmFja0J5SUQoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0/LmlkO1xuICB9XG4gIGRpYWxvZ09wZW5lciA9IChcbiAgICBjb21wOiBhbnksXG4gICAgY29uZmlnOiBNYXREaWFsb2dDb25maWcsXG4gICAgdmFsdWVDQjogKHIpID0+IGFueSxcbiAgICBub1ZhbHVlQ0I/OiBhbnlcbiAgKSA9PlxuICAgIHRoaXMuZGlhbG9nT3BlbmVyUmVmKGNvbXAsIGNvbmZpZylcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIGlmIChyICE9IG51bGwgJiYgciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YWx1ZUNCKHIpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vVmFsdWVDQikge1xuICAgICAgICAgIG5vVmFsdWVDQigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgZGlhbG9nT3BlbmVyUmVmID0gKGNvbXA6IGFueSwgY29uZmlnOiBNYXREaWFsb2dDb25maWcpID0+XG4gICAgdGhpcy5kaWFsb2cub3Blbihjb21wLCBjb25maWcpO1xuICBmaW5kTGFiZWxCeUl0ZW0gPSAoXG4gICAgaXRlbSxcbiAgICBhcnI6IGFueVtdLFxuICAgIGxhYmVsRmllbGQ/OiBzdHJpbmcsXG4gICAga2V5RmllbGQ6IHN0cmluZyA9ICdjb2RlJ1xuICApID0+IHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuICAgIGNvbnN0IG9iaiA9IGFycj8uZmluZCgoeCkgPT4geFtrZXlGaWVsZF0gPT0gaXRlbSk7XG4gICAgaWYgKCFvYmopIHJldHVybiBpdGVtO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBgJHtpdGVtfSAtICR7XG4gICAgICAgIG9ialtsYWJlbEZpZWxkIHx8ICd0aXRsZSddIHx8IG9ialtsYWJlbEZpZWxkIHx8ICdkZXNjcmlwdGlvbiddXG4gICAgICB9YDtcbiAgfTtcblxuICBmb3JtRmllbGRzRnJvbUFyciA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1GaWVsZHNGcm9tRkNJbnB1dHNBcnI7XG4gIG9ialRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21PYmo7XG4gIGZvcm1TY2hlbWFUb0Zvcm1Db250cm9scyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1TY2hlbWFUb0Zvcm1Db250cm9scztcblxuICBiaW5kRm9ybUNvbnRyb2xUb0lucHV0cyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmJpbmRGb3JtQ29udHJvbFRvSW5wdXRzO1xuXG4gIGdvID0gKHZhbHVlOiBzdHJpbmcsIGV4dHJhPzogTmF2aWdhdGlvbkV4dHJhcykgPT4ge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt2YWx1ZV0sIGV4dHJhKTtcbiAgfTtcbiAgLyoqXG4gICAqIFJvdXRlIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gcm91dGUgUm91dGUgb2YgcGF0aCB0byBjb21wb25lbnRcbiAgICogQHBhcmFtIGV4dHJhXG4gICAqL1xuICBnb1IgPSAocm91dGU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgaWYgKCFFVFNlbnZpcm9ubWVudC5hY3RpdmF0ZWRSb3V0ZSkgZGVidWdnZXI7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSwge1xuICAgICAgcmVsYXRpdmVUbzogRVRTZW52aXJvbm1lbnQuYWN0aXZhdGVkUm91dGUsXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgfTtcbiAgbW9uZXlQYXJzZXIgPSAoYW1vdW50OiBzdHJpbmcgfCBudW1iZXIsIGN1cnJlbmN5ID0gJyAnKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybShhbW91bnQsIGN1cnJlbmN5IHx8ICcgJyk7XG4gIH07XG4gIGV4dHJhY3RVcGxvYWQoZXZlbnQ6IGFueSkge1xuICAgIHJldHVybiAoZXZlbnQudGFyZ2V0LmZpbGVzIGFzIEZpbGVbXSkgfHwgW107XG4gIH1cblxuICBzZWNvbmRzVG9Ib3VyTWluU2VjID0gKHNlY29uZHM6IG51bWJlcikgPT4ge1xuICAgIGlmICghc2Vjb25kcykgcmV0dXJuIHsgc2VjczogbnVsbCwgaG91cnM6IG51bGwsIG1pbnM6IG51bGwgfTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDM2MDApIHx8IDAsXG4gICAgICBzZWNvbmRzRXhIb3VycyA9IHNlY29uZHMgJSAzNjAwIHx8IDAsXG4gICAgICBtaW5zID0gTWF0aC5mbG9vcihzZWNvbmRzRXhIb3VycyAvIDYwKSB8fCAwLFxuICAgICAgc2VjcyA9IHNlY29uZHNFeEhvdXJzICUgNjA7XG4gICAgcmV0dXJuIHsgaG91cnMsIG1pbnMsIHNlY3MgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pbiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiB7IGRheXM6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IobWludXRlcyAvIDE0NDApIHx8IDAsXG4gICAgICBtaW5pdXRlc0V4RGF5cyA9IG1pbnV0ZXMgJSAxNDQwIHx8IDAsXG4gICAgICBob3VycyA9IE1hdGguZmxvb3IobWluaXV0ZXNFeERheXMgLyA2MCkgfHwgMCxcbiAgICAgIG1pbnMgPSBtaW5pdXRlc0V4RGF5cyAlIDYwIHx8IDA7XG4gICAgcmV0dXJuIHsgZGF5cywgaG91cnMsIG1pbnMgfTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0ciA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ICR7cmV0LmhvdXJzfToke3JldC5taW5zfWAudHJpbSgpO1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluU3RyMiA9IChtaW51dGVzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIW1pbnV0ZXMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHJldCA9IHRoaXMubWludXRlc1RvRGF5SG91ck1pbihtaW51dGVzKTtcbiAgICByZXR1cm4gYCR7cmV0LmRheXN9ZGF5cyAke3JldC5ob3Vyc31ocnMgJHtyZXQubWluc31taW5zYC50cmltKCk7XG4gIH07XG4gIGRheUhvdXJNaW5Ub0hvdXJNaW51dGVzID0gKGR5czogbnVtYmVyLCBocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkeXMgJiYgIWhycyAmJiAhbWlucykgcmV0dXJuICcnO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgJzAwJykgKyAnOicgKyAobWlucyB8fCAnMDAnKTtcbiAgfTtcbiAgZGlzYWJsZU9yRW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSwgZGlzYWJsZTogYm9vbGVhbikgPT4ge1xuICAgIGlmIChkaXNhYmxlKSB0aGlzLmRpc2FibGVJbnB1dHMoY29udHJvbHMpO1xuICAgIGVsc2UgdGhpcy5lbmFibGVJbnB1dHMoY29udHJvbHMpO1xuICB9O1xuICBkaXNhYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9O1xuICBlbmFibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGNvbnRyb2xzKSB7XG4gICAgICBjb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZGF5SG91ck1pblRvTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAwO1xuICAgIGNvbnN0IGR5c1RvSHJzID0gKGR5cyB8fCAwKSAqIDI0O1xuICAgIGhycyA9ICgraHJzIHx8IDApICsgZHlzVG9IcnM7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMgPSAoaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghaHJzICYmICFtaW5zKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKGhycyB8fCAwKSAqIDYwICsgbWlucztcbiAgfTtcbiAgaG91ck1pblRvTWludXRlczIgPSAoaHJzTWluczogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgW2hycywgbWluc10gPSBocnNNaW5zPy5zcGxpdCgnOicpIHx8IFswLCAwXTtcbiAgICByZXR1cm4gdGhpcy5ob3VyTWluVG9NaW51dGVzKCtocnMsICttaW5zKTtcbiAgfTtcbiAgbm90aWZ5KG1lc3NhZ2U6IHN0cmluZywgY2xzOiAwIHwgMSB8IDIgfCAzID0gMSwgZHVyYXRpb24gPSA1MDAwLCB0aXRsZSA9ICcnKSB7XG4gICAgbWVzc2FnZSA9XG4gICAgICB0eXBlb2YgbWVzc2FnZSA9PSAnc3RyaW5nJ1xuICAgICAgICA/IG1lc3NhZ2VcbiAgICAgICAgOiBjbHMgPT0gMFxuICAgICAgICA/ICdBbiBlcnJvciBvY2N1cnJlZCdcbiAgICAgICAgOiAnJztcbiAgICByZXR1cm4gdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsIHRpdGxlLCB7XG4gICAgICBkdXJhdGlvbixcbiAgICAgIGhvcml6b250YWxQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIHBhbmVsQ2xhc3M6XG4gICAgICAgIGNscyA9PSAxXG4gICAgICAgICAgPyAnYmctc3VjY2VzcydcbiAgICAgICAgICA6IGNscyA9PSAyXG4gICAgICAgICAgPyAnYnRuLWluZm8nXG4gICAgICAgICAgOiBjbHMgPT0gM1xuICAgICAgICAgID8gJ2J0bi13YXJuaW5nJ1xuICAgICAgICAgIDogJ2JnLWRhbmdlcicsXG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcCA9ICgpID0+IHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcblxuICAvKipcbiAgICpcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0ZSB0aW1lIGxvY2FsIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkYXRldGltZS1sb2NhbCBpbnB1dFxuICAgKi9cbiAgZ2V0TG9jYWxEYXRlVGltZU5vdyA9ICgpID0+IHtcbiAgICBjb25zdCBkdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpO1xuICAgIHJldHVybiBkdFswXSArICdUJyArIGR0WzFdLnNwbGl0KCc6Jykuc2xpY2UoMCwgMikuam9pbignOicpO1xuICB9O1xuICAvKiogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0ZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZSBpbnB1dCAqL1xuICBsb2NhbERhdGVOb3cgPSAoKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICB9O1xuICBkYXRlRm9ybWF0ID0gKGRhdGU6IGFueSwgZm9ybWF0ID0gMSkgPT4ge1xuICAgIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGlmIChmb3JtYXQgPT0gMSkge1xuICAgICAgcmV0dXJuIGQudG9EYXRlU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMikge1xuICAgICAgcmV0dXJuIGQuZ2V0RGF0ZSgpICsgJyAnICsgY29uZmlnLk1vbnRoc1tkLmdldE1vbnRoKCldO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDMpIHtcbiAgICAgIHJldHVybiBkLnRvRGF0ZVN0cmluZygpICsgJywgJyArIHRoaXMudGltZUZvcm1hdChkLnRvTG9jYWxlVGltZVN0cmluZygpKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSA0KSB7XG4gICAgICByZXR1cm4gY29uZmlnLk1vbnRoc1tkLmdldE1vbnRoKCldICsgJyAnICsgZC5nZXREYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH07XG4gIHRvSmF2YURhdGVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxOSl9YDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxMCl9ICR7aXNvRGF0ZVN0cmluZy5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG4gIHRpbWVGb3JtYXQgPSAodGltZT86IGFueSkgPT4ge1xuICAgIGNvbnN0IHRpbWVBcnI6IGFueVtdID0gdGltZS5zcGxpdCgnICcpO1xuICAgIHRpbWVBcnJbMF0gPSB0aW1lQXJyWzBdLnNwbGl0KCc6Jykuc3BsaWNlKDAsIDIpLmpvaW4oJzonKTtcbiAgICByZXR1cm4gdGltZUFyci5qb2luKCcgJyk7XG4gIH07XG4gIGZ1bGxEYXRlVGltZSA9ICh0aW1lc3RhbXA6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZUZvcm1hdCh0aW1lc3RhbXAsIDMpO1xuICB9O1xuICBkYXlzRm9ybWF0dGVyID0gKGRheXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZGF5cykge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgbGV0IHlyOiBudW1iZXIsXG4gICAgICBtdDogbnVtYmVyLFxuICAgICAgZHk6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMzY1LFxuICAgICAgX210ID0gMzA7XG4gICAgaWYgKGRheXMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihkYXlzIC8gX3lyKTtcbiAgICB9XG4gICAgaWYgKGRheXMgPiBfbXQpIHtcbiAgICAgIG10ID0gTWF0aC5mbG9vcigoZGF5cyAlIF95cikgLyBfbXQpO1xuICAgIH1cbiAgICBkeSA9IChkYXlzICUgX3lyKSAlIF9tdDtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHtcbiAgICAgIG10ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ1xuICAgIH0gJHt0aGlzLnBsdWFybGl6ZXIoZHksICdkeScpfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgbW9udGhzRm9ybWF0dGVyID0gKG1vbnRoczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtb250aHMpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGxldCB5cjogbnVtYmVyLFxuICAgICAgbXQ6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMTI7XG4gICAgaWYgKG1vbnRocyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKG1vbnRocyAvIF95cik7XG4gICAgfVxuICAgIG10ID0gbW9udGhzICUgX3lyO1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke1xuICAgICAgbXQgPyB0aGlzLnBsdWFybGl6ZXIobXQsICdtdGgnKSA6ICcnXG4gICAgfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgcGx1YXJsaXplciA9ICh2YWw6IG51bWJlciwgdHh0OiBzdHJpbmcsIHBsdXJhbD86IHN0cmluZykgPT4ge1xuICAgIHBsdXJhbCA9IHBsdXJhbCB8fCB0eHQgKyAncyc7XG4gICAgcmV0dXJuIHZhbCArICh2YWwgPT0gMSA/IHR4dCA6IHBsdXJhbCk7XG4gIH07XG4gIGRlY2ltYWxUb1BlcmNlbnRhZ2UgPSAoZGVjOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gZGVjICogMTAwICsgJyUnO1xuICB9O1xuICBsb2dGb3JtID0gKGZvcm0pID0+IHtcbiAgICBjb25zb2xlLmxvZygnRk9STScsIGZvcm0sICdWQUxVRVMnLCBmb3JtLnZhbHVlIGFzIGFueSk7XG4gIH07XG5cbiAgdG9DU1YoZGF0YTogYW55W10sIGhlYWRlck5hbWVzOiBzdHJpbmdbXSwgZmlsZW5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHJlcGxhY2VyID0gKGtleSwgdmFsdWUpID0+ICh2YWx1ZSA9PT0gbnVsbCA/ICcnIDogdmFsdWUpOyAvLyBzcGVjaWZ5IGhvdyB5b3Ugd2FudCB0byBoYW5kbGUgbnVsbCB2YWx1ZXMgaGVyZVxuXG4gICAgbGV0IGNzdiA9IGRhdGEubWFwKChyb3cpID0+XG4gICAgICBoZWFkZXJOYW1lc1xuICAgICAgICAubWFwKChmaWVsZE5hbWUpID0+IEpTT04uc3RyaW5naWZ5KHJvd1tmaWVsZE5hbWVdLCByZXBsYWNlcikpXG4gICAgICAgIC5qb2luKCcsJylcbiAgICApO1xuICAgIGNzdi51bnNoaWZ0KGhlYWRlck5hbWVzLmpvaW4oJywnKSk7XG4gICAgbGV0IGNzdkFycmF5ID0gY3N2LmpvaW4oJ1xcclxcbicpO1xuXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbY3N2QXJyYXldLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgc2F2ZUFzKGJsb2IsIGZpbGVuYW1lICsgJy5jc3YnKTtcbiAgfVxuXG4gIGlzUGljdHVyZUZvcm1hdChmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFmaWxlTmFtZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IFBJQ1RVUkVfRk9STUFUUyA9IFsnLmpwZycsICcuanBlZycsICcucG5nJywgJy5naWYnXTtcbiAgICByZXR1cm4gUElDVFVSRV9GT1JNQVRTLnNvbWUoKGZvcm1hdCkgPT4gZmlsZU5hbWUuZW5kc1dpdGgoZm9ybWF0KSk7XG4gIH1cbiAgb2JqZWN0VG9BcnJheTxUPihvYmo6IGFueSkge1xuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgcmV0LnB1c2gob2JqW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0IGFzIFRbXTtcbiAgfVxuICBvbmx5VW5pcXVlID0gPFQ+KHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBzZWxmOiBUW10pID0+IHtcbiAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gIH07XG4gIGdldCBpc01vYmlsZSgpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNjAwO1xuICB9XG4gIC8vI3JlZ2lvbiByb3V0ZVxuICByb3V0ZVBhcmFtczEgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczE7XG4gIHJvdXRlUGFyYW1zMiA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMjtcbiAgcm91dGVQYXJhbXMzID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMzO1xuICAvLyNlbmRyZWdpb25cbiAgc3RhcnRQbCA9IHRoaXMucFMuc3RhcnRQbDtcbiAgc3RvcFBsID0gdGhpcy5wUy5zdG9wUGw7XG59XG4iXX0=
555
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBVWpELE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFhLGVBQWUsRUFBUSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBSXRELE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDUyxNQUFpQixFQUNqQixRQUFxQixFQUNyQixNQUFjLEVBQ2QsTUFBYSxFQUNiLFFBQWtCLEVBQ2xCLFlBQWlCLEVBQ2pCLGFBQWtCLEVBQ2xCLFlBQTBCLEVBQzFCLEVBQXFCLEVBQ3JCLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGFBQTRCLEVBQzVCLEtBQWtCO1FBWmxCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixX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QUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3BCO1NBQ0Y7UUFDRCxPQUFPLEdBQVUsQ0FBQztJQUNwQixDQUFDO0lBSUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUNsQyxDQUFDOzs4R0EzakJVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTsyRkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5UGlwZSwgTG9jYXRpb24sIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWF0RGlhbG9nIGFzIE1hdERpYWxvZyxcbiAgTWF0RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZyxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FeHRyYXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRVRTUmVhY3RpdmVGb3JtSW5wdXRTZXJ2aWNlIGFzIElTMSB9IGZyb20gJy4vaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZVNlcnZpY2UgfSBmcm9tICcuL3JvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IGpmZCBmcm9tICdqcy1maWxlLWRvd25sb2FkJztcbmltcG9ydCB7IFBhZ2VMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZywgQ29uZmlnIGFzIGNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZ3MvaW5kZXguY29uZmlnJztcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBFUGFnZVR5cGUsIEVWYWxpZGF0aW9uVHlwZSwgSUJ0biB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgRVRTZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgUGFnZVNlcnZpY2UgfSBmcm9tICcuL3BhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtQXJyYXksXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9SZXVzYWJsZXMvcmV1c2FibGUtcGFnZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRUVUU1BhZ2VCdG5JRCB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvSU1lbnVJdGVtJztcbmltcG9ydCB7IElucHV0U2VydmljZSBhcyBJUzIgfSBmcm9tICcuLi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRVRTRW52aXJvbm1lbnQgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2Vudmlyb25tZW50Lm1vZGVsJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBFVFNVdGlsaXR5U2VydmljZTxURW52aXJvbm1lbnQgPSBFVFNFbnZpcm9ubWVudCA+IHtcbiAgcjogQXBwUm91dGVCYXNlO1xuICBkb3dubG9hZGVyID0gamZkO1xuICAkID0gJDtcbiAgZVZhbGlkYXRpb25UeXBlID0gRVZhbGlkYXRpb25UeXBlO1xuICBjb25maWcgPSBDb25maWc7XG4gIGVudmlyb25tZW50OiBURW52aXJvbm1lbnQgPSBFVFNlbnZpcm9ubWVudCBhcyBhbnk7XG4gIHBiaWQgPSBFRVRTUGFnZUJ0bklEO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIHRpdGxlUzogVGl0bGUsXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwdWJsaWMgaW5wdXRTZXJ2aWNlOiBJUzEsXG4gICAgcHVibGljIGlucHV0U2VydmljZTI6IElTMixcbiAgICBwdWJsaWMgcm91dGVTZXJ2aWNlOiBSb3V0ZVNlcnZpY2UsXG4gICAgcHVibGljIHBTOiBQYWdlTG9hZGVyU2VydmljZSxcbiAgICBwdWJsaWMgY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGUsXG4gICAgcHVibGljIHRpdGxlQ2FzZVBpcGU6IFRpdGxlQ2FzZVBpcGUsXG4gICAgcHVibGljIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHVibGljIHBhZ2VTOiBQYWdlU2VydmljZVxuICApIHt9XG5cbiAgYmFjayA9ICgpID0+IHRoaXMubG9jYXRpb24uYmFjaygpO1xuXG4gIG9ubHlPbmVJbnB1dChpbnB1dHM6IEZvcm1Db250cm9sW10pIHtcbiAgICBjb25zdCBuSW5wdXRzID0gaW5wdXRzPy5tYXAoKGlucCkgPT4gKHsgaWQ6IHRoaXMuZ2VuUmFuZG9tSUQsIGlucCB9KSkgfHwgW107XG4gICAgbWVyZ2UoXG4gICAgICAuLi5uSW5wdXRzLm1hcCgoaSkgPT5cbiAgICAgICAgaS5pbnAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCh2YWwpID0+ICh7IGlkOiBpLmlkLCB2YWwgfSkpKVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAvLyBkZWJ1Z2dlclxuICAgICAgaWYgKHIudmFsKVxuICAgICAgICBuSW5wdXRzXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5pZCAhPSByLmlkKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB4LmlucC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KSk7XG4gICAgICBlbHNlXG4gICAgICAgIG5JbnB1dHNcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LmlkICE9IHIuaWQpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHguaW5wLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29weVBheWxvYWQocGF5bG9hZCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoRVRTZW52aXJvbm1lbnQuZGVidWcpIHtcbiAgICAgICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICAgIGVsZW0udmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtKTtcbiAgICAgICAgZWxlbS5zZWxlY3QoKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuICB4T3JZID0gKHgsIHkgPSAnLScpID0+IGAke3ggPT0gbnVsbCA/IHkgOiB4fWA7XG4gIHRvVGl0bGVDYXNlKHRleHQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnRpdGxlQ2FzZVBpcGUudHJhbnNmb3JtKHRleHQpO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0IERhdGUgc3RyaW5nIHRvIERhdGUgVGltZSBzdHJpbmdcbiAgICogQHBhcmFtIGRhdGVTdHIgRGF0ZSBzdHJpbmdcbiAgICogQGV4YW1wbGUgJzIwMjItMDEtMjUnXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnZlcnNpb25cbiAgICogQHJldHVybnMgUmV0dXJucyBhIERhdGUgVGltZSBzdHJpbmdcbiAgICogQGV4YW1wbGUgJzIwMjItMDEtMjVUMDA6MDA6MDBaJyBvciAnMjAyMi0wMS0yNSAwMDowMDowMCdcbiAgICovXG4gIGRhdGVUb0RhdGVUaW1lID0gKFxuICAgIGRhdGVTdHI6IHN0cmluZyxcbiAgICBjb25maWc/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFVzZSB0aGUgeXl5eS1tbS1kZCBoaDptbTpzcyBmb3JtYXRcbiAgICAgICAqL1xuICAgICAgb21pdFQ/OiBib29sZWFuO1xuICAgIH1cbiAgKSA9PiB7XG4gICAgY29uc3Qgb21pdFQgPSAhIWNvbmZpZz8ub21pdFQ7XG4gICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoZGF0ZVN0ci5pbmNsdWRlcygnVCcpKSByZXR1cm4gZGF0ZVN0cjtcbiAgICByZXR1cm4gZGF0ZVN0ciArIChvbWl0VCA/ICcgMDA6MDA6MDAnIDogJ1QwMDowMDowMFonKTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0IGFuIE9iamVjdCdzIGZpZWxkIGlmIHRoZSBvYmplY3QgZXhpc3RzIG9yIGRvbid0IGlmIHRoZSBvYmplY3QgZG9lc24ndFxuICAgKiBAcGFyYW0gb2JqIE9iamVjdCBob2xkaW5nIHRoZSBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGROYW1lIE5hbWUgb2YgdGhlIGZpZWxkIHRvIHNldFxuICAgKiBAcGFyYW0gdmFsIFZhbHVlIHRvIHNldCB0aGUgZmllbGQgd2l0aFxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgZGF0YVxuICAgKi9cbiAgc2V0dGVyV2l0aE51bGw8VD4ob2JqOiBULCBrdnBzOiBQYXJ0aWFsPFQ+KSB7XG4gICAgaWYgKCFvYmopIHJldHVybiBudWxsO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGt2cHMpIHtcbiAgICAgIG9ialtrZXldID0ga3Zwc1trZXldO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIChTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0KSBmb3IgbXVsdGlwbGUgZW50cmllc1xuICAgKiBAcGFyYW0gaXRlbXMgQXJyYXkgb2Ygb2JqZWN0cyBhbmQgdGhlaXIgbW9kaWZpY2F0aW9uc1xuICAgKi9cbiAgc2V0dGVyV2l0aE51bGxBcnJheTxUPihpdGVtczogeyBvYmo6IFQ7IGt2cHM6IFBhcnRpYWw8VD4gfVtdKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICB0aGlzLnNldHRlcldpdGhOdWxsKGl0ZW0ub2JqLCBpdGVtLmt2cHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiByb3dzIGZyb20gYSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSByb3cgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBmYSBUaGUgRm9ybUFycmF5IHRoYXQgaG9sZHMgdGhlIHJvd3NcbiAgICogQHBhcmFtIGRlbGV0ZVNlcnZpY2UgVGhlIGRlbGV0aW9uIHNlcnZpY2UgdG8gYmUgY2FsbGVkIChJdCBzaG91bGQgYmUgYW4gYW5vbnltb3VzIGZ1bmN0aW9uKVxuICAgKiBAcGFyYW0gYWRkUm93RnVuYyBUaGUgZnVuY3Rpb24gKGFub255bW91cykgdGhhdCBhZGRzIGEgbmV3IHJvdyB0byB0aGUgRm9ybUFycmF5XG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgU3BlY2lmeSB3aGV0aGVyIHRvIGVtaXQgYW4gZXZlbnQgd2hlbiBtYW5pcHVsYXRpbmcgdGhlIEZvcm1BcnJheVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgaGFuZGxlRm9ybVJvd0RlbGV0ZSA9IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGZhOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgIGRlbGV0ZVNlcnZpY2U6ICguLi5hcmdzKSA9PiBQcm9taXNlPGFueT4gfCBPYnNlcnZhYmxlPGFueT4sXG4gICAgYWRkUm93RnVuYzogKC4uLmFyZ3MpID0+IGFueSxcbiAgICBlbWl0RXZlbnQgPSB0cnVlXG4gICkgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChzdWIpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gY2xvbmVEZWVwKGZhLmNvbnRyb2xzW2luZGV4XT8udmFsdWU/LmlkKTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgaWYgKGZhLmNvbnRyb2xzLmxlbmd0aCA9PSAxICYmIGlkKSB7XG4gICAgICAgIGZhLnJlbW92ZUF0KGluZGV4LCB7IGVtaXRFdmVudCB9KTtcbiAgICAgICAgYWRkUm93RnVuYygpO1xuICAgICAgfSBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPiAxKSBmYS5yZW1vdmVBdChpbmRleCwgeyBlbWl0RXZlbnQgfSk7XG4gICAgICBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSkgZmEuY29udHJvbHNbMF0ucmVzZXQoKTtcblxuICAgICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICAgIGlmIChyZXFbJ3RvUHJvbWlzZSddKSB7XG4gICAgICAgICAgc3ViKHJlcVsndG9Qcm9taXNlJ10oKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3ViKHJlcSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWIobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhbiBhcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBhcnJheVxuICAgKiBAcGFyYW0gY2IgVGhlIGZ1bmN0aW9uIHRvIGNhbGxiYWNrIHdpdGggdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGlvbiBzZXJ2aWNlIGFzIHRoZSBpbnB1dCBwYXJhbWV0ZXJcbiAgICovXG4gIGhhbmRsZVJvd0RlbGV0ZSA9IGFzeW5jIDxUPihcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGFycjogYW55W10sXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+LFxuICAgIGFkZFJvd0Z1bmM6ICguLi5hcmdzKSA9PiBhbnksXG4gICAgY2I/OiAoYW55KSA9PiBhbnlcbiAgKSA9PiB7XG4gICAgY29uc3QgaWQgPSBhcnJbaW5kZXhdPy5pZDtcbiAgICAvLyBkZWJ1Z2dlcjtcblxuICAgIGlmIChpZCAmJiBkZWxldGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCByZXEgPSBkZWxldGVTZXJ2aWNlKGlkKTtcbiAgICAgIGlmICh0eXBlb2YgcmVxWyd0b1Byb21pc2UnXSA9PSAnZnVuY3Rpb24nKVxuICAgICAgICBjYiA/IGNiKGF3YWl0IHJlcVsndG9Qcm9taXNlJ10oKSkgOiByZXFbJ3RvUHJvbWlzZSddKCk7XG4gICAgICBlbHNlIGNiID8gY2IoYXdhaXQgcmVxKSA6IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGFyci5sZW5ndGggPT0gMSkge1xuICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBhZGRSb3dGdW5jKCk7XG4gICAgfSBlbHNlIGlmIChhcnIubGVuZ3RoID4gMSkgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gIH07XG4gIC8qKlxuICAgKiBUbyBoYW5kbGUgdGhlIHBhdGNoaW5nIG9mIGEgRm9ybUFycmF5XG4gICAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIGRhdGFcbiAgICogQHBhcmFtIGFkZEZ1bmMgVGhlIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYWRkaXRpb24gb2Ygc2luZ2xlIGVudHJpZXNcbiAgICogQHBhcmFtIGZvcm1BcnIgVGhlIEZvcm1BcnJheSB0aGF0IHdpbGwgaG9sZCB0aGUgYXJyYXkncyBkYXRhXG4gICAqL1xuICBpbml0UGF0Y2hGb3JtQXJyYXkgPSAoXG4gICAgYXJyOiBhbnlbXSxcbiAgICBhZGRGdW5jOiAoaTogbnVtYmVyLCBkYXRhPzogYW55LCBmb3JtQXJyPzogRm9ybUFycmF5KSA9PiB2b2lkLFxuICAgIGZvcm1BcnI6IEZvcm1BcnJheVxuICApID0+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGlmIChhcnI/Lmxlbmd0aCkge1xuICAgICAgaWYgKGZvcm1BcnIubGVuZ3RoKSBmb3JtQXJyLmNsZWFyKCk7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XG4gICAgICAgIGFkZEZ1bmMoZm9ybUFyci5sZW5ndGgsIGl0ZW0sIGZvcm1BcnIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWZvcm1BcnIubGVuZ3RoKSBhZGRGdW5jKGZvcm1BcnIubGVuZ3RoLCBudWxsLCBmb3JtQXJyKTtcbiAgICB9XG4gIH07XG4gIHByaXZhdGUgaXNQcm9taXNlID0gKGZ1bmMpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRoZW4gPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIGlzQXN5bmMgPSAoZnVuYykgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBmdW5jLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdBc3luY0Z1bmN0aW9uJyB8fFxuICAgICAgKHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nICYmIHRoaXMuaXNQcm9taXNlKGZ1bmMoKSkpXG4gICAgKTtcbiAgfTtcblxuICBpc09ic2VydmFibGUgPSA8VD4oZnVuYykgPT4ge1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBmdW5jIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTxUPjtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGlzT2JzZXJ2YWJsZShmdW5jKTtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRvUHJvbWlzZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgcHJvbWlzaWZ5VmFsID0gPFQ+KHZhbDogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuaXNBc3luYyh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBQcm9taXNlPFQ+KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNPYnNlcnZhYmxlKHZhbCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKHZhbCBhcyBPYnNlcnZhYmxlPFQ+KS50b1Byb21pc2UoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsIGFzIFQpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHBhcmFtIGFyciBBcnJheSBvZiBvYnNlcnZhYmxlcyB0byBmZXRjaFxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiB0aGUgcmVzcG9uc2VzIG1lcmdlZCB0b2dldGhlci4gSXQgZW1pdHMgdGhlIG1lcmdlZCByZXNwb25zZXMgYXMgdGhleSBhcmUgZmV0Y2hlZCBhbmQgY2xvc2VzIG9uY2UgYWxsbCB0aGUgcmVzcG9uc2VzIGhhdmUgYmVlbiBmZXRjaGVkXG4gICAqL1xuICBtZXJnZUFyck9ic2VydmFibGVzID0gPFQ+KGFycjogeyAkZnVuYzogT2JzZXJ2YWJsZTxUW10+IH1bXSkgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUW10+KChzdWIpID0+IHtcbiAgICAgIGNvbnN0IHJldDogVFtdID0gW107XG4gICAgICBsZXQgcmVzcG9uc2VDb3VudCA9IDA7XG4gICAgICBtZXJnZShcbiAgICAgICAgLi4uYXJyLm1hcCgoeCkgPT5cbiAgICAgICAgICB4LiRmdW5jPy5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKHIpID0+IHtcbiAgICAgICAgICAgICAgcmVzcG9uc2VDb3VudCsrO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHJldC5wdXNoKC4uLnIpO1xuICAgICAgICBzdWIubmV4dChyZXQpO1xuICAgICAgICBpZiAocmVzcG9uc2VDb3VudCA9PSBhcnIuZmlsdGVyKCh4KSA9PiB4LiRmdW5jKS5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBkZWJ1Z2dlclxuICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgcmVtb3ZlRHVwbGljYXRlPFQ+KGxpc3Q6IFRbXSwga2V5RmllbGQgPSAnY29kZScpIHtcbiAgICBpZiAoIWxpc3QpIHJldHVybiBudWxsO1xuICAgIGxpc3QgPSBsaXN0LmZpbHRlcigoeCkgPT4geCk7XG4gICAgY29uc3QgcmV0OiBUW10gPSBbXSxcbiAgICAgIGR1cGxpY2F0ZU1hcDogeyBbeDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgaWYgKGR1cGxpY2F0ZU1hcFtpdGVtW2tleUZpZWxkXV0pIGNvbnRpbnVlO1xuICAgICAgcmV0LnB1c2goaXRlbSk7XG4gICAgICBkdXBsaWNhdGVNYXBbaXRlbVtrZXlGaWVsZF1dID0gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICBnZXQgZ2VuUmFuZG9tSUQoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMDAwMDAwMDApO1xuICB9XG4gIHN0b3JlUGF5bG9hZCA9IHRoaXMubG9nZ2VyU2VydmljZS5hZGRMb2c7XG4gIG9iaklzRW1wdHkgPSAob2JqLCBleGNsdXNpb25GaWVsZHM/OiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmICghb2JqKSByZXR1cm4gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChleGNsdXNpb25GaWVsZHM/LmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgaWYgKG9ialtrZXldKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBkYXRhR2VuID0gPFQgPSBhbnk+KGtleXM6IHN0cmluZ1tdLCBsZW5ndGggPSAxMCkgPT4ge1xuICAgIGNvbnN0IHJldDogYW55W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdDogYW55ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIHRba2V5XSA9IHRoaXMudGV4dEdlbigpO1xuICAgICAgfVxuICAgICAgcmV0LnB1c2godCk7XG4gICAgfVxuICAgIHJldHVybiByZXQgYXMgVFtdO1xuICB9O1xuICB0ZXh0R2VuID0gKCkgPT4gJ3JhbmRvbScgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwKTtcbiAgdHJhY2tCeUNvZGUoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0/LmNvZGU7XG4gIH1cbiAgdHJhY2tCeUlEKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtPy5pZDtcbiAgfVxuICBkaWFsb2dPcGVuZXIgPSAoXG4gICAgY29tcDogYW55LFxuICAgIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnLFxuICAgIHZhbHVlQ0I6IChyKSA9PiBhbnksXG4gICAgbm9WYWx1ZUNCPzogYW55XG4gICkgPT5cbiAgICB0aGlzLmRpYWxvZ09wZW5lclJlZihjb21wLCBjb25maWcpXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBpZiAociAhPSBudWxsICYmIHIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVDQihyKTtcbiAgICAgICAgfSBlbHNlIGlmIChub1ZhbHVlQ0IpIHtcbiAgICAgICAgICBub1ZhbHVlQ0IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIGRpYWxvZ09wZW5lclJlZiA9IChjb21wOiBhbnksIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnKSA9PlxuICAgIHRoaXMuZGlhbG9nLm9wZW4oY29tcCwgY29uZmlnKTtcbiAgZmluZExhYmVsQnlJdGVtID0gKFxuICAgIGl0ZW0sXG4gICAgYXJyOiBhbnlbXSxcbiAgICBsYWJlbEZpZWxkPzogc3RyaW5nLFxuICAgIGtleUZpZWxkOiBzdHJpbmcgPSAnY29kZSdcbiAgKSA9PiB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBvYmogPSBhcnI/LmZpbmQoKHgpID0+IHhba2V5RmllbGRdID09IGl0ZW0pO1xuICAgIGlmICghb2JqKSByZXR1cm4gaXRlbTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gYCR7aXRlbX0gLSAke1xuICAgICAgICBvYmpbbGFiZWxGaWVsZCB8fCAndGl0bGUnXSB8fCBvYmpbbGFiZWxGaWVsZCB8fCAnZGVzY3JpcHRpb24nXVxuICAgICAgfWA7XG4gIH07XG5cbiAgZm9ybUZpZWxkc0Zyb21BcnIgPSB0aGlzLmlucHV0U2VydmljZS5mb3JtRmllbGRzRnJvbUZDSW5wdXRzQXJyO1xuICBvYmpUb0Zvcm1Db250cm9scyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1GaWVsZHNGcm9tT2JqO1xuICBmb3JtU2NoZW1hVG9Gb3JtQ29udHJvbHMgPSB0aGlzLmlucHV0U2VydmljZS5mb3JtU2NoZW1hVG9Gb3JtQ29udHJvbHM7XG5cbiAgYmluZEZvcm1Db250cm9sVG9JbnB1dHMgPSB0aGlzLmlucHV0U2VydmljZS5iaW5kRm9ybUNvbnRyb2xUb0lucHV0cztcblxuICBnbyA9ICh2YWx1ZTogc3RyaW5nLCBleHRyYT86IE5hdmlnYXRpb25FeHRyYXMpID0+IHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdmFsdWVdLCBleHRyYSk7XG4gIH07XG4gIC8qKlxuICAgKiBSb3V0ZSB0byBjb21wb25lbnRcbiAgICogQHBhcmFtIHJvdXRlIFJvdXRlIG9mIHBhdGggdG8gY29tcG9uZW50XG4gICAqIEBwYXJhbSBleHRyYVxuICAgKi9cbiAgZ29SID0gKHJvdXRlOiBzdHJpbmcsIGV4dHJhPzogTmF2aWdhdGlvbkV4dHJhcykgPT4ge1xuICAgIGlmICghRVRTZW52aXJvbm1lbnQuYWN0aXZhdGVkUm91dGUpIGRlYnVnZ2VyO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZV0sIHtcbiAgICAgIHJlbGF0aXZlVG86IEVUU2Vudmlyb25tZW50LmFjdGl2YXRlZFJvdXRlLFxuICAgICAgLi4uZXh0cmEsXG4gICAgfSk7XG4gICAgLy8gZGVidWdnZXI7XG4gIH07XG4gIG1vbmV5UGFyc2VyID0gKGFtb3VudDogc3RyaW5nIHwgbnVtYmVyLCBjdXJyZW5jeSA9ICcgJykgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oYW1vdW50LCBjdXJyZW5jeSB8fCAnICcpO1xuICB9O1xuICBleHRyYWN0VXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gKGV2ZW50LnRhcmdldC5maWxlcyBhcyBGaWxlW10pIHx8IFtdO1xuICB9XG5cbiAgc2Vjb25kc1RvSG91ck1pblNlYyA9IChzZWNvbmRzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIXNlY29uZHMpIHJldHVybiB7IHNlY3M6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyAzNjAwKSB8fCAwLFxuICAgICAgc2Vjb25kc0V4SG91cnMgPSBzZWNvbmRzICUgMzYwMCB8fCAwLFxuICAgICAgbWlucyA9IE1hdGguZmxvb3Ioc2Vjb25kc0V4SG91cnMgLyA2MCkgfHwgMCxcbiAgICAgIHNlY3MgPSBzZWNvbmRzRXhIb3VycyAlIDYwO1xuICAgIHJldHVybiB7IGhvdXJzLCBtaW5zLCBzZWNzIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW4gPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4geyBkYXlzOiBudWxsLCBob3VyczogbnVsbCwgbWluczogbnVsbCB9O1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyAxNDQwKSB8fCAwLFxuICAgICAgbWluaXV0ZXNFeERheXMgPSBtaW51dGVzICUgMTQ0MCB8fCAwLFxuICAgICAgaG91cnMgPSBNYXRoLmZsb29yKG1pbml1dGVzRXhEYXlzIC8gNjApIHx8IDAsXG4gICAgICBtaW5zID0gbWluaXV0ZXNFeERheXMgJSA2MCB8fCAwO1xuICAgIHJldHVybiB7IGRheXMsIGhvdXJzLCBtaW5zIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW5TdHIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfSAke3JldC5ob3Vyc306JHtyZXQubWluc31gLnRyaW0oKTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0cjIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfWRheXMgJHtyZXQuaG91cnN9aHJzICR7cmV0Lm1pbnN9bWluc2AudHJpbSgpO1xuICB9O1xuICBkYXlIb3VyTWluVG9Ib3VyTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAnJztcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8ICcwMCcpICsgJzonICsgKG1pbnMgfHwgJzAwJyk7XG4gIH07XG4gIGRpc2FibGVPckVuYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10sIGRpc2FibGU6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoZGlzYWJsZSkgdGhpcy5kaXNhYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgICBlbHNlIHRoaXMuZW5hYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgfTtcbiAgZGlzYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgY29udHJvbHMpIHtcbiAgICAgIGNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH07XG4gIGRheUhvdXJNaW5Ub01pbnV0ZXMgPSAoZHlzOiBudW1iZXIsIGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWR5cyAmJiAhaHJzICYmICFtaW5zKSByZXR1cm4gMDtcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8IDApICogNjAgKyBtaW5zO1xuICB9O1xuICBob3VyTWluVG9NaW51dGVzID0gKGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWhycyAmJiAhbWlucykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMyID0gKGhyc01pbnM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IFtocnMsIG1pbnNdID0gaHJzTWlucz8uc3BsaXQoJzonKSB8fCBbMCwgMF07XG4gICAgcmV0dXJuIHRoaXMuaG91ck1pblRvTWludXRlcygraHJzLCArbWlucyk7XG4gIH07XG4gIG5vdGlmeShtZXNzYWdlOiBzdHJpbmcsIGNsczogMCB8IDEgfCAyIHwgMyA9IDEsIGR1cmF0aW9uID0gNTAwMCwgdGl0bGUgPSAnJykge1xuICAgIG1lc3NhZ2UgPVxuICAgICAgdHlwZW9mIG1lc3NhZ2UgPT0gJ3N0cmluZydcbiAgICAgICAgPyBtZXNzYWdlXG4gICAgICAgIDogY2xzID09IDBcbiAgICAgICAgPyAnQW4gZXJyb3Igb2NjdXJyZWQnXG4gICAgICAgIDogJyc7XG4gICAgcmV0dXJuIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCB0aXRsZSwge1xuICAgICAgZHVyYXRpb24sXG4gICAgICBob3Jpem9udGFsUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgdmVydGljYWxQb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBwYW5lbENsYXNzOlxuICAgICAgICBjbHMgPT0gMVxuICAgICAgICAgID8gJ2JnLXN1Y2Nlc3MnXG4gICAgICAgICAgOiBjbHMgPT0gMlxuICAgICAgICAgID8gJ2J0bi1pbmZvJ1xuICAgICAgICAgIDogY2xzID09IDNcbiAgICAgICAgICA/ICdidG4td2FybmluZydcbiAgICAgICAgICA6ICdiZy1kYW5nZXInLFxuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGUgdGltZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZXRpbWUtbG9jYWwgaW5wdXRcbiAgICovXG4gIGdldExvY2FsRGF0ZVRpbWVOb3cgPSAoKSA9PiB7XG4gICAgY29uc3QgZHQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKTtcbiAgICByZXR1cm4gZHRbMF0gKyAnVCcgKyBkdFsxXS5zcGxpdCgnOicpLnNsaWNlKDAsIDIpLmpvaW4oJzonKTtcbiAgfTtcbiAgLyoqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGUgbG9jYWwgdGhhdCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGRhdGUgaW5wdXQgKi9cbiAgbG9jYWxEYXRlTm93ID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgfTtcbiAgZGF0ZUZvcm1hdCA9IChkYXRlOiBhbnksIGZvcm1hdCA9IDEpID0+IHtcbiAgICBpZiAoIWRhdGUpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBpZiAoZm9ybWF0ID09IDEpIHtcbiAgICAgIHJldHVybiBkLnRvRGF0ZVN0cmluZygpO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDIpIHtcbiAgICAgIHJldHVybiBkLmdldERhdGUoKSArICcgJyArIGNvbmZpZy5Nb250aHNbZC5nZXRNb250aCgpXTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAzKSB7XG4gICAgICByZXR1cm4gZC50b0RhdGVTdHJpbmcoKSArICcsICcgKyB0aGlzLnRpbWVGb3JtYXQoZC50b0xvY2FsZVRpbWVTdHJpbmcoKSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gNCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5Nb250aHNbZC5nZXRNb250aCgpXSArICcgJyArIGQuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9O1xuICB0b0phdmFEYXRlU3RyaW5nID0gKGlzb0RhdGVTdHJpbmc6IHN0cmluZyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSkgPT4ge1xuICAgIGlmICghaXNvRGF0ZVN0cmluZykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTkpfWA7XG4gICAgcmV0dXJuIGAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMCwgMTApfSAke2lzb0RhdGVTdHJpbmcuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuICB0aW1lRm9ybWF0ID0gKHRpbWU/OiBhbnkpID0+IHtcbiAgICBjb25zdCB0aW1lQXJyOiBhbnlbXSA9IHRpbWUuc3BsaXQoJyAnKTtcbiAgICB0aW1lQXJyWzBdID0gdGltZUFyclswXS5zcGxpdCgnOicpLnNwbGljZSgwLCAyKS5qb2luKCc6Jyk7XG4gICAgcmV0dXJuIHRpbWVBcnIuam9pbignICcpO1xuICB9O1xuICBmdWxsRGF0ZVRpbWUgPSAodGltZXN0YW1wOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXQodGltZXN0YW1wLCAzKTtcbiAgfTtcbiAgZGF5c0Zvcm1hdHRlciA9IChkYXlzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWRheXMpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGxldCB5cjogbnVtYmVyLFxuICAgICAgbXQ6IG51bWJlcixcbiAgICAgIGR5OiBudW1iZXIsXG4gICAgICByZXQ6IHN0cmluZyxcbiAgICAgIF95ciA9IDM2NSxcbiAgICAgIF9tdCA9IDMwO1xuICAgIGlmIChkYXlzID4gX3lyKSB7XG4gICAgICB5ciA9IE1hdGguZmxvb3IoZGF5cyAvIF95cik7XG4gICAgfVxuICAgIGlmIChkYXlzID4gX210KSB7XG4gICAgICBtdCA9IE1hdGguZmxvb3IoKGRheXMgJSBfeXIpIC8gX210KTtcbiAgICB9XG4gICAgZHkgPSAoZGF5cyAlIF95cikgJSBfbXQ7XG4gICAgcmV0ID0gYCR7eXIgPyB0aGlzLnBsdWFybGl6ZXIoeXIsICd5cicpIDogJyd9ICR7XG4gICAgICBtdCA/IHRoaXMucGx1YXJsaXplcihtdCwgJ210aCcpIDogJydcbiAgICB9ICR7dGhpcy5wbHVhcmxpemVyKGR5LCAnZHknKX1gO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIG1vbnRoc0Zvcm1hdHRlciA9IChtb250aHM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbW9udGhzKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBsZXQgeXI6IG51bWJlcixcbiAgICAgIG10OiBudW1iZXIsXG4gICAgICByZXQ6IHN0cmluZyxcbiAgICAgIF95ciA9IDEyO1xuICAgIGlmIChtb250aHMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihtb250aHMgLyBfeXIpO1xuICAgIH1cbiAgICBtdCA9IG1vbnRocyAlIF95cjtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHtcbiAgICAgIG10ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ1xuICAgIH1gO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIHBsdWFybGl6ZXIgPSAodmFsOiBudW1iZXIsIHR4dDogc3RyaW5nLCBwbHVyYWw/OiBzdHJpbmcpID0+IHtcbiAgICBwbHVyYWwgPSBwbHVyYWwgfHwgdHh0ICsgJ3MnO1xuICAgIHJldHVybiB2YWwgKyAodmFsID09IDEgPyB0eHQgOiBwbHVyYWwpO1xuICB9O1xuICBkZWNpbWFsVG9QZXJjZW50YWdlID0gKGRlYzogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGRlYyAqIDEwMCArICclJztcbiAgfTtcbiAgbG9nRm9ybSA9IChmb3JtKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ0ZPUk0nLCBmb3JtLCAnVkFMVUVTJywgZm9ybS52YWx1ZSBhcyBhbnkpO1xuICB9O1xuXG4gIHRvQ1NWKGRhdGE6IGFueVtdLCBoZWFkZXJOYW1lczogc3RyaW5nW10sIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXBsYWNlciA9IChrZXksIHZhbHVlKSA9PiAodmFsdWUgPT09IG51bGwgPyAnJyA6IHZhbHVlKTsgLy8gc3BlY2lmeSBob3cgeW91IHdhbnQgdG8gaGFuZGxlIG51bGwgdmFsdWVzIGhlcmVcblxuICAgIGxldCBjc3YgPSBkYXRhLm1hcCgocm93KSA9PlxuICAgICAgaGVhZGVyTmFtZXNcbiAgICAgICAgLm1hcCgoZmllbGROYW1lKSA9PiBKU09OLnN0cmluZ2lmeShyb3dbZmllbGROYW1lXSwgcmVwbGFjZXIpKVxuICAgICAgICAuam9pbignLCcpXG4gICAgKTtcbiAgICBjc3YudW5zaGlmdChoZWFkZXJOYW1lcy5qb2luKCcsJykpO1xuICAgIGxldCBjc3ZBcnJheSA9IGNzdi5qb2luKCdcXHJcXG4nKTtcblxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2NzdkFycmF5XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhibG9iLCBmaWxlbmFtZSArICcuY3N2Jyk7XG4gIH1cblxuICBpc1BpY3R1cmVGb3JtYXQoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGlmICghZmlsZU5hbWUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBQSUNUVVJFX0ZPUk1BVFMgPSBbJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuZ2lmJ107XG4gICAgcmV0dXJuIFBJQ1RVUkVfRk9STUFUUy5zb21lKChmb3JtYXQpID0+IGZpbGVOYW1lLmVuZHNXaXRoKGZvcm1hdCkpO1xuICB9XG4gIG9iamVjdFRvQXJyYXk8VD4ob2JqOiBhbnkpIHtcbiAgICBjb25zdCByZXQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIHJldC5wdXNoKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH1cbiAgb25seVVuaXF1ZSA9IDxUPih2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgc2VsZjogVFtdKSA9PiB7XG4gICAgcmV0dXJuIHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4O1xuICB9O1xuICBnZXQgaXNNb2JpbGUoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDYwMDtcbiAgfVxuICAvLyNyZWdpb24gcm91dGVcbiAgcm91dGVQYXJhbXMxID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMxO1xuICByb3V0ZVBhcmFtczIgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczI7XG4gIHJvdXRlUGFyYW1zMyA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMztcbiAgLy8jZW5kcmVnaW9uXG4gIHN0YXJ0UGwgPSB0aGlzLnBTLnN0YXJ0UGw7XG4gIHN0b3BQbCA9IHRoaXMucFMuc3RvcFBsO1xufVxuIl19
@@ -48,4 +48,4 @@ export class ETSEnvironment {
48
48
  this._targetLanguage = value;
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQsT0FBTyxFQUEwQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFN0UsTUFBTSxPQUFPLGNBQWM7SUE0RHpCLFlBQW1CLFVBQW1CLEVBQUUsSUFBWTtRQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUFTO1FBekR0QyxrQkFBYSxHQUFxQixJQUFJLEdBQUcsQ0FBYyxFQUFFLENBQUMsQ0FBQztRQVNsRCxzQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUVsQyxlQUFVLEdBQXNDLGNBQWMsQ0FBQztRQU8vRDs7V0FFRztRQUNILG1CQUFjLEdBQWtCLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFHdEUsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLbkIsZUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDOUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHUixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBRzFCLFlBQU8sR0FBVyxXQUFXLENBQUM7UUFJckIsYUFBUSxHQUFHLGlDQUFpQyxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsYUFBYSxDQUFDO1FBQy9CLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBRWpDLG1CQUFjLEdBQWMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQVV2QyxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFWRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxDQUFVO1FBQ3BCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7O1lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQU1ELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLEtBQWdCO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBhZ2VMb2FkZXIgfSBmcm9tICcuLi9jbGFzc2VzL3BhZ2UtbG9hZGVyLmNsYXNzJztcbmltcG9ydCB7IEVUU01lbnVJdGVtIH0gZnJvbSAnLi9JTWVudUl0ZW0nO1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgSUNvbmZpZ0ltYWdlcywgRVN5c3RlbSwgRUxhbmd1YWdlLCBFTWVudVR5cGUgfSBmcm9tICcuL2luZGV4Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEVUU0Vudmlyb25tZW50IHtcbiAgYXBwUm91dGVzOiBBcHBSb3V0ZUJhc2U7XG4gIGJvdHRvbU1lbnU6IEVUU01lbnVJdGVtW107XG4gIGV4Y2x1ZGVkTWVudXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PihbXSk7XG4gIGxvZ1JlcTogYm9vbGVhbjtcbiAgbWVudXM6IEVUU01lbnVJdGVtW107XG4gIG5vVXNlclJvbGVDaGVjazogYm9vbGVhbjtcbiAgLyoqIERvbid0IHVzZSB0aGUgaW5wdXQgZm9ybWF0dHRlciBvbiB0aGlzIHBhZ2UgKi9cbiAgcGFnZU5vZm9ybWF0OiBib29sZWFuO1xuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpbWFnZXM6IElDb25maWdJbWFnZXM7XG4gIHJlYWRvbmx5IHRhcmdldExhbmd1YWdlS2V5ID0gJ3RhcmdldExhbmd1YWdlJztcbiAgcmVhZG9ubHkgdHJhbnNHbG9zc2FyeUtleTogc3RyaW5nO1xuICByZWFkb25seSB0cmFuc2xhdGVLZXkgPSAndHJhbnNsYXRlJztcbiAgcmVhZG9ubHkgdXNlckNvbXBhbnlDb25maWdLZXkgPSAndXNlckNvbXBhbnlDb25maWcnO1xuICByZWFkb25seSB1c2VyTWVudUtleSA9ICd1c2VyTWVudSc7XG4gIHNpbmdsZVRhYlVzYWdlOiBib29sZWFuO1xuICBzdG9yYWdlS2V5OiAnbG9jYWxTdG9yYWdlJyB8ICdzZXNzaW9uU3RvcmFnZScgPSAnbG9jYWxTdG9yYWdlJztcbiAgdHJhbnNHbG9zc2FyeTogYW55O1xuICB1c2VyQ29tcGFueUNvbmZpZzogYW55O1xuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRvIHVzZSBjb250YWluZXIgb3IgY29udGFpbmVyLWZsdWlkIGZvciB0aGUgYm9keSBvZiB0aGUgdmlldy4gSXQgc2hvdWxkIGJlIHVuc2V0IGF0IHRoZSBuZ09uRGVzdHJveSBmdW5jdGlvblxuICAgKi9cbiAgd2lkZVNjcmVlbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVudGVyIHZhbHVlIGluIG1pbGxpc2Vjb25kIG9yIERhdGUgb2JqZWN0XG4gICAqL1xuICByZXF1ZXN0VGltZW91dDogbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKDg2NDAwMDAwICogMzY1ICsgRGF0ZS5ub3coKSk7XG4gIGFscmVhZHlPcGVuZWQ6IGJvb2xlYW47XG4gIHVzZUJ1c2xpbmU6IGFueTtcbiAgdXNlVXNlck1lbnUgPSB0cnVlO1xuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIGNsYXNzKGVzKSB0byBiZSBhZGRlZCB0byB0aGUgYm9keSBvZiB0aGUgdmlldy4gSXQgc2hvdWxkIGJlIHVuc2V0IGF0IHRoZSBuZ09uRGVzdHJveSBmdW5jdGlvblxuICAgKi9cbiAgYm9keUNsYXNzOiBzdHJpbmc7XG4gIHBhZ2VMb2FkZXIgPSBuZXcgUGFnZUxvYWRlcigpO1xuICByZXF1ZXN0Q291bnQgPSAwO1xuICB1c2luZ0FjdGl2ZURpcmVjdG9yeTogYm9vbGVhbjtcbiAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICByZWFkb25seSBsb2dzS2V5ID0gJ2xvZ3MnO1xuICBhY3RpdmVTeXN0ZW1zPzogRVN5c3RlbVtdO1xuICBhcGlCYXNlVXJsPzogc3RyaW5nO1xuICBhcHBOYW1lOiBzdHJpbmcgPSAnRXZvbHV0aWNzJztcbiAgYXV0aGVudGljYXRlPzogYm9vbGVhbjtcbiAgY3VycmVudFN5c3RlbT86IEVTeXN0ZW07XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaGVscExpbmsgPSAnaHR0cHM6Ly9oZWxwLmV2b2x1dGljc3RlY2guY29tLyc7XG4gIHJlYWRvbmx5IHVzZXJQcm9maWxlS2V5ID0gJ3VzZXJQcm9maWxlJztcbiAgcmVhZG9ubHkgdXNlclN0b3JhZ2VLZXkgPSAndXNlcic7XG4gIHJlYWRvbmx5IHdhdGVybWFyaz86IHN0cmluZztcbiAgc291cmNlTGFuZ3VhZ2U6IEVMYW5ndWFnZSA9IEVMYW5ndWFnZS5FTjtcbiAgc2VjcmV0S2V5OiBzdHJpbmc7XG4gIGdldCB0b2tlbigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBzZXQgbG9hZGluZyh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMucGFnZUxvYWRlci5zdGFydFBsKCk7XG4gICAgZWxzZSB0aGlzLnBhZ2VMb2FkZXIuc3RvcFBsKCk7XG4gIH1cbiAgY29uc3RydWN0b3IocHVibGljIHByb2R1Y3Rpb246IGJvb2xlYW4sIG5hbWU6IHN0cmluZykge1xuICAgIGlmICghcHJvZHVjdGlvbikgdGhpcy5kZWJ1ZyA9IHRydWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuICBwcml2YXRlIF90cmFuc2xhdGU/OiBib29sZWFuO1xuICBnZXQgdHJhbnNsYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUgfHwgZmFsc2U7XG4gIH1cbiAgc2V0IHRyYW5zbGF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3RyYW5zbGF0ZSA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX3RhcmdldExhbmd1YWdlPzogRUxhbmd1YWdlO1xuICBnZXQgdGFyZ2V0TGFuZ3VhZ2UoKTogRUxhbmd1YWdlIHtcbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0TGFuZ3VhZ2U7XG4gIH1cbiAgc2V0IHRhcmdldExhbmd1YWdlKHZhbHVlOiBFTGFuZ3VhZ2UpIHtcbiAgICB0aGlzLl90YXJnZXRMYW5ndWFnZSA9IHZhbHVlO1xuICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQsT0FBTyxFQUEwQixTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFN0UsTUFBTSxPQUFPLGNBQWM7SUFpRXpCLFlBQW1CLFVBQW1CLEVBQUUsSUFBWTtRQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUFTO1FBekR0QyxrQkFBYSxHQUFxQixJQUFJLEdBQUcsQ0FBYyxFQUFFLENBQUMsQ0FBQztRQVNsRCxzQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLFdBQVcsQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUVsQyxlQUFVLEdBQXNDLGNBQWMsQ0FBQztRQU8vRDs7V0FFRztRQUNILG1CQUFjLEdBQWtCLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFHdEUsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFLbkIsZUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDOUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHUixZQUFPLEdBQUcsTUFBTSxDQUFDO1FBRzFCLFlBQU8sR0FBVyxXQUFXLENBQUM7UUFJckIsYUFBUSxHQUFHLGlDQUFpQyxDQUFDO1FBQzdDLG1CQUFjLEdBQUcsYUFBYSxDQUFDO1FBQy9CLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBRWpDLG1CQUFjLEdBQWUsU0FBUyxDQUFDLEVBQVMsQ0FBQztRQVUvQyxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFWRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxDQUFVO1FBQ3BCLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7O1lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQU1ELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLEtBQWlCO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBhZ2VMb2FkZXIgfSBmcm9tICcuLi9jbGFzc2VzL3BhZ2UtbG9hZGVyLmNsYXNzJztcbmltcG9ydCB7IEVUU01lbnVJdGVtIH0gZnJvbSAnLi9JTWVudUl0ZW0nO1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgSUNvbmZpZ0ltYWdlcywgRVN5c3RlbSwgRUxhbmd1YWdlLCBFTWVudVR5cGUgfSBmcm9tICcuL2luZGV4Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEVUU0Vudmlyb25tZW50PFxuICBUTWVudUl0ZW0gPSBFVFNNZW51SXRlbSxcbiAgVEFwcFJvdXRlQmFzZSA9IEFwcFJvdXRlQmFzZSxcbiAgVEVTeXN0ZW0gPSBFU3lzdGVtLFxuICBURUxhbmd1YWdlID0gRUxhbmd1YWdlXG4+IHtcbiAgYXBwUm91dGVzOiBUQXBwUm91dGVCYXNlO1xuICBib3R0b21NZW51OiBUTWVudUl0ZW1bXTtcbiAgZXhjbHVkZWRNZW51czogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtdKTtcbiAgbG9nUmVxOiBib29sZWFuO1xuICBtZW51czogVE1lbnVJdGVtW107XG4gIG5vVXNlclJvbGVDaGVjazogYm9vbGVhbjtcbiAgLyoqIERvbid0IHVzZSB0aGUgaW5wdXQgZm9ybWF0dHRlciBvbiB0aGlzIHBhZ2UgKi9cbiAgcGFnZU5vZm9ybWF0OiBib29sZWFuO1xuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpbWFnZXM6IElDb25maWdJbWFnZXM7XG4gIHJlYWRvbmx5IHRhcmdldExhbmd1YWdlS2V5ID0gJ3RhcmdldExhbmd1YWdlJztcbiAgcmVhZG9ubHkgdHJhbnNHbG9zc2FyeUtleTogc3RyaW5nO1xuICByZWFkb25seSB0cmFuc2xhdGVLZXkgPSAndHJhbnNsYXRlJztcbiAgcmVhZG9ubHkgdXNlckNvbXBhbnlDb25maWdLZXkgPSAndXNlckNvbXBhbnlDb25maWcnO1xuICByZWFkb25seSB1c2VyTWVudUtleSA9ICd1c2VyTWVudSc7XG4gIHNpbmdsZVRhYlVzYWdlOiBib29sZWFuO1xuICBzdG9yYWdlS2V5OiAnbG9jYWxTdG9yYWdlJyB8ICdzZXNzaW9uU3RvcmFnZScgPSAnbG9jYWxTdG9yYWdlJztcbiAgdHJhbnNHbG9zc2FyeTogYW55O1xuICB1c2VyQ29tcGFueUNvbmZpZzogYW55O1xuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRvIHVzZSBjb250YWluZXIgb3IgY29udGFpbmVyLWZsdWlkIGZvciB0aGUgYm9keSBvZiB0aGUgdmlldy4gSXQgc2hvdWxkIGJlIHVuc2V0IGF0IHRoZSBuZ09uRGVzdHJveSBmdW5jdGlvblxuICAgKi9cbiAgd2lkZVNjcmVlbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVudGVyIHZhbHVlIGluIG1pbGxpc2Vjb25kIG9yIERhdGUgb2JqZWN0XG4gICAqL1xuICByZXF1ZXN0VGltZW91dDogbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKDg2NDAwMDAwICogMzY1ICsgRGF0ZS5ub3coKSk7XG4gIGFscmVhZHlPcGVuZWQ6IGJvb2xlYW47XG4gIHVzZUJ1c2xpbmU6IGFueTtcbiAgdXNlVXNlck1lbnUgPSB0cnVlO1xuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIGNsYXNzKGVzKSB0byBiZSBhZGRlZCB0byB0aGUgYm9keSBvZiB0aGUgdmlldy4gSXQgc2hvdWxkIGJlIHVuc2V0IGF0IHRoZSBuZ09uRGVzdHJveSBmdW5jdGlvblxuICAgKi9cbiAgYm9keUNsYXNzOiBzdHJpbmc7XG4gIHBhZ2VMb2FkZXIgPSBuZXcgUGFnZUxvYWRlcigpO1xuICByZXF1ZXN0Q291bnQgPSAwO1xuICB1c2luZ0FjdGl2ZURpcmVjdG9yeTogYm9vbGVhbjtcbiAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICByZWFkb25seSBsb2dzS2V5ID0gJ2xvZ3MnO1xuICBhY3RpdmVTeXN0ZW1zPzogVEVTeXN0ZW1bXTtcbiAgYXBpQmFzZVVybD86IHN0cmluZztcbiAgYXBwTmFtZTogc3RyaW5nID0gJ0V2b2x1dGljcyc7XG4gIGF1dGhlbnRpY2F0ZT86IGJvb2xlYW47XG4gIGN1cnJlbnRTeXN0ZW0/OiBURVN5c3RlbTtcbiAgZGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBoZWxwTGluayA9ICdodHRwczovL2hlbHAuZXZvbHV0aWNzdGVjaC5jb20vJztcbiAgcmVhZG9ubHkgdXNlclByb2ZpbGVLZXkgPSAndXNlclByb2ZpbGUnO1xuICByZWFkb25seSB1c2VyU3RvcmFnZUtleSA9ICd1c2VyJztcbiAgcmVhZG9ubHkgd2F0ZXJtYXJrPzogc3RyaW5nO1xuICBzb3VyY2VMYW5ndWFnZTogVEVMYW5ndWFnZSA9IEVMYW5ndWFnZS5FTiBhcyBhbnk7XG4gIHNlY3JldEtleTogc3RyaW5nO1xuICBnZXQgdG9rZW4oKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgc2V0IGxvYWRpbmcodjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLnBhZ2VMb2FkZXIuc3RhcnRQbCgpO1xuICAgIGVsc2UgdGhpcy5wYWdlTG9hZGVyLnN0b3BQbCgpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9kdWN0aW9uOiBib29sZWFuLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIXByb2R1Y3Rpb24pIHRoaXMuZGVidWcgPSB0cnVlO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cbiAgcHJpdmF0ZSBfdHJhbnNsYXRlPzogYm9vbGVhbjtcbiAgZ2V0IHRyYW5zbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlIHx8IGZhbHNlO1xuICB9XG4gIHNldCB0cmFuc2xhdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl90cmFuc2xhdGUgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF90YXJnZXRMYW5ndWFnZT86IFRFTGFuZ3VhZ2U7XG4gIGdldCB0YXJnZXRMYW5ndWFnZSgpOiBURUxhbmd1YWdlIHtcbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0TGFuZ3VhZ2U7XG4gIH1cbiAgc2V0IHRhcmdldExhbmd1YWdlKHZhbHVlOiBURUxhbmd1YWdlKSB7XG4gICAgdGhpcy5fdGFyZ2V0TGFuZ3VhZ2UgPSB2YWx1ZTtcbiAgfVxufVxuIl19