@cqa-lib/cqa-ui 1.1.266 → 1.1.267
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/step-builder/step-builder-group/step-builder-group.component.mjs +3 -3
- package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +9 -5
- package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +13 -3
- package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +3 -3
- package/esm2020/lib/test-case-details/test-case-details-renderer/test-case-details-renderer.component.mjs +2 -1
- package/esm2020/lib/test-case-details/test-case-details.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +27 -12
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +27 -12
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/test-case-details/condition-step/condition-step.component.d.ts +9 -1
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -291,6 +291,7 @@ export class TestCaseDetailsRendererComponent {
|
|
|
291
291
|
wire('addBranch', this.addBranch);
|
|
292
292
|
wire('addElse', this.addElse);
|
|
293
293
|
wire('deleteBranch', this.deleteBranch);
|
|
294
|
+
wire('addStepForLoop', this.addStepForLoop);
|
|
294
295
|
wire('testDataProfileChange', this.testDataProfileChange);
|
|
295
296
|
wire('startStepChange', this.startStepChange);
|
|
296
297
|
wire('endStepChange', this.endStepChange);
|
|
@@ -478,4 +479,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
478
479
|
}], editInDepth: [{
|
|
479
480
|
type: Output
|
|
480
481
|
}] } });
|
|
481
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGdCQUFnQixFQUdoQixNQUFNLEdBS1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVHLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBR3ZCLE1BQU0sMEJBQTBCLENBQUM7OztBQU9sQyxNQUFNLE9BQU8sZ0NBQWdDO0lBNkUzQyxZQUNnRCxZQUFzQyxFQUM1RSxHQUFzQjtRQURnQixpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDNUUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExRXZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDdkMsdUdBQXVHO1FBQzlGLHNCQUFpQixHQUFZLEtB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dkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFFRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBRUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBJbmplY3QsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBURVNUX0NBU0VfU1RFUF9DT01QT05FTlRfTUFQLCBUZXN0Q2FzZVN0ZXBDb21wb25lbnRNYXAgfSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC1jb21wb25lbnRzLnRva2VuJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlU3RlcENvbmZpZyxcbiAgaXNTdGVwR3JvdXBDb25maWcsXG4gIGlzQ29uZGl0aW9uU3RlcENvbmZpZyxcbiAgaXNMb29wU3RlcENvbmZpZyxcbiAgaXNOb3JtYWxTdGVwQ29uZmlnLFxuICBpc0FwaVN0ZXBDb25maWcsXG4gIGlzRGF0YWJhc2VTdGVwQ29uZmlnLFxuICBpc0FpQWdlbnRTdGVwQ29uZmlnLFxuICBpc0FpVmVyaWZ5U3RlcENvbmZpZyxcbiAgaXNVcGxvYWRTdGVwQ29uZmlnLFxuICBpc1NjcmVlbnNob3RTdGVwQ29uZmlnLFxuICBpc1Njcm9sbFN0ZXBDb25maWcsXG4gIGlzVmVyaWZ5VXJsU3RlcENvbmZpZyxcbiAgaXNSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcsXG4gIGlzQ3VzdG9tQ29kZVN0ZXBDb25maWcsXG4gIENvbmRpdGlvbkJyYW5jaCxcbiAgTG9vcFN0ZXBDb25maWcsXG59IGZyb20gJy4uL3Rlc3QtY2FzZS1zdGVwLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgVGVzdENhc2VEZXRhaWxzUmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBIb3N0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHN0ZXBIb3N0ITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBzdGVwITogVGVzdENhc2VTdGVwQ29uZmlnO1xuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcbiAgQElucHV0KCkgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVMb29wOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHRydWUsIHN0ZXAgaXMgcmVuZGVyZWQgaW5zaWRlIGEgc3RlcC1ncm91cDsgcm93IGFjdGlvbnMgKEVkaXQvRHVwbGljYXRlL0RlbGV0ZSkgYXJlIGhpZGRlbi4gKi9cbiAgQElucHV0KCkgaXNJbnNpZGVTdGVwR3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdoZW4gcmVuZGVyaW5nIGEgc3RlcCBpbnNpZGUgYSBjb25kaXRpb24gYnJhbmNoLCB0aGUgYnJhbmNoIGNvbnRleHQgKGZvciBhZGRTdGVwRm9yQnJhbmNoIC8gZGVsZXRlU3RlcFdpdGhCcmFuY2gpLiAqL1xuICBASW5wdXQoKSBicmFuY2g/OiBDb25kaXRpb25CcmFuY2g7XG4gIC8qKiBXaGVuIHRydWUsIGVuYWJsZXMgZHJhZy1hbmQtZHJvcCByZW9yZGVyaW5nIGFuZCBzaG93cyBkcmFnIGhhbmRsZSBpY29uIGluc3RlYWQgb2YgY2hlY2tib3ggKi9cbiAgQElucHV0KCkgaXNSZW9yZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBDdXJyZW50IHNlbGVjdGlvbiBzdGF0ZTsgd2hlbiBjaGFuZ2VkIChlLmcuIGZyb20gU2VsZWN0IGFsbCksIHRoZSBjcmVhdGVkIHN0ZXAgY29tcG9uZW50IGlzIHVwZGF0ZWQgc28gdGhlIGNoZWNrYm94IHJlZmxlY3RzIGl0ICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgXCJBZGQgU3RlcCBCZXR3ZWVuXCIgYnV0dG9uIGFib3ZlIHRoZSBzdGVwICovXG4gIEBJbnB1dCgpIGFkZFN0ZXBCZXR3ZWVuQWJvdmU6IGJvb2xlYW4gPSB0cnVlO1xuICAvKiogU2hvdyBcIkFkZCBTdGVwIEJldHdlZW5cIiBidXR0b24gYmVsb3cgdGhlIHN0ZXAgKi9cbiAgQElucHV0KCkgYWRkU3RlcEJldHdlZW5CZWxvdzogYm9vbGVhbiA9IHRydWU7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYWRkU3RlcEJldHdlZW5BYm92ZSBhbmQgYWRkU3RlcEJldHdlZW5CZWxvdyBpbnN0ZWFkLiBJZiBzZXQsIGFwcGxpZXMgdG8gYm90aCBidXR0b25zLiAqL1xuICBASW5wdXQoKSBhZGRTdGVwQmV0d2VlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBuZXN0ZWRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuIHwge2NvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnLCBleHBhbmRlZDogYm9vbGVhbn0+KCk7XG4gIEBPdXRwdXQoKSBncm91cE5hbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGRlc2NyaXB0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZXVzYWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9wZW5FeHRlcm5hbCA9IG5ldyBFdmVudEVtaXR0ZXI8e3N0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZ30+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7c3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyfT4oKTtcbiAgQE91dHB1dCgpIGxpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnIH0gfCB2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0RldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGltcG9ydCgnLi4vc3RlcC1kZXRhaWxzLW1vZGFsL3N0ZXAtZGV0YWlscy1tb2RhbC1kYXRhJykuVmlld0RldGFpbHNQYXlsb2FkPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZGl0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBicmFuY2hTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoOyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWc7IHN0ZXBJbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwRm9yQnJhbmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoIH0+KCk7XG4gIC8qKiBFbWl0dGVkIHdoZW4gZW1wdHkgbG9vcCBzdGVwIHBsdXMgaXMgY2xpY2tlZDsgc2FtZSBiZWhhdmlvdXIgYXMgYWRkLXN0ZXAtYmV0d2VlbiAocGFyZW50SWQgPSBsb29wIHN0ZXAgaWQpLiAqL1xuICBAT3V0cHV0KCkgYWRkU3RlcEZvckxvb3AgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbG9vcFN0ZXBDb25maWc6IExvb3BTdGVwQ29uZmlnIH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTdGVwV2l0aEJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBicmFuY2g6IENvbmRpdGlvbkJyYW5jaDsgc3RlcEluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGFkZEJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyBcIkFkZCBFbHNlXCIgaW4gYSBjb25kaXRpb24gc3RlcDsgcGFyZW50IHNob3VsZCBjYWxsIFBPU1QgdGVzdF9zdGVwcyB3aXRoIGNvbmRpdGlvblR5cGUgQ09ORElUSU9OX0VMU0UgKi9cbiAgQE91dHB1dCgpIGFkZEVsc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29uZGl0aW9uU3RlcENvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnIH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPENvbmRpdGlvbkJyYW5jaD4oKTtcbiAgQE91dHB1dCgpIHRlc3REYXRhUHJvZmlsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc3RhcnRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBlbmRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBtYXhJdGVyYXRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBldmVudFR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhcmFtZXRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xpY2tBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IE1vdXNlRXZlbnQ7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyB9PigpO1xuICAvKiogRW1pdHRlZCB3aGVuIGEgc3RlcCBpcyBkcm9wcGVkIGluIGEgbmVzdGVkIGRyb3B6b25lIChzdGVwLWdyb3VwLCBsb29wLCBjb25kaXRpb24pLiBQYXlsb2FkOiB7IGV2ZW50LCB0YXJnZXRMaXN0IH0uICovXG4gIEBPdXRwdXQoKSBkbmREcm9wSW5ab25lID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBhbnk7IHRhcmdldExpc3Q6IFRlc3RDYXNlU3RlcENvbmZpZ1tdIH0+KCk7XG4gIC8qKiBEYXRhIHByb2ZpbGUgb3B0aW9ucyBmb3IgbG9vcCBzdGVwcyAqL1xuICBASW5wdXQoKSBkYXRhUHJvZmlsZU9wdGlvbnM6IGFueVtdID0gW107XG4gIC8qKiBJbmRpY2F0ZXMgaWYgbW9yZSBkYXRhIHByb2ZpbGVzIGFyZSBhdmFpbGFibGUgZm9yIGxvYWRpbmcgKi9cbiAgQElucHV0KCkgaGFzTW9yZURhdGFQcm9maWxlczogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogTG9hZGluZyBzdGF0ZSBmb3IgZGF0YSBwcm9maWxlcyAqL1xuICBASW5wdXQoKSBpc0xvYWRpbmdEYXRhUHJvZmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIE5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uICovXG4gIEBJbnB1dCgpIG5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM6IGFueVtdID0gW107XG4gIC8qKiBGdW5jdGlvbiB0byBwcm9jZXNzIHRlbXBsYXRlIHZhcmlhYmxlcyBmb3IgY29uZGl0aW9uIHN0ZXBzICovXG4gIEBJbnB1dCgpIHNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzOiAodGVtcGxhdGU6IGFueSkgPT4gYW55W10gPSAoKSA9PiBbXTtcbiAgLyoqIEVtaXQgd2hlbiBtb3JlIGRhdGEgcHJvZmlsZXMgbmVlZCB0byBiZSBsb2FkZWQgKi9cbiAgQE91dHB1dCgpIGxvYWRNb3JlRGF0YVByb2ZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKiBFbWl0IHdoZW4gZGF0YSBwcm9maWxlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzICovXG4gIEBPdXRwdXQoKSBzZWFyY2hEYXRhUHJvZmlsZXMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgLyoqIEVtaXQgd2hlbiBhIHN0ZXAgaXMgdXBkYXRlZCAoZS5nLiwgQXBwbHkgYnV0dG9uIGNsaWNrZWQgaW4gbG9vcC1zdGVwIGVkaXQgbW9kZSkgKi9cbiAgQE91dHB1dCgpIHN0ZXBVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFRlc3RDYXNlU3RlcENvbmZpZz4oKTtcbiAgQE91dHB1dCgpIGFkZFN0ZXBCZXR3ZWVuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcsIGluZGV4OiBudW1iZXIsIHBvc2l0aW9uOiAnQUJPVkUnIHwgJ0JFTE9XJ30+KCk7XG4gIC8qKiBFbWl0IHdoZW4gdXNlciBjbGlja3MgXCJFZGl0IEluIGRlcHRoXCIgaW4gY29uZGl0aW9uLXN0ZXAgKG9yIG90aGVyIHN0ZXBzIHRoYXQgc3VwcG9ydCBpdCkgKi9cbiAgQE91dHB1dCgpIGVkaXRJbkRlcHRoID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCkgcHJpdmF0ZSBjb21wb25lbnRNYXA6IFRlc3RDYXNlU3RlcENvbXBvbmVudE1hcCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclN0ZXAoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBzdHJ1Y3R1cmFsQ2hhbmdlID0gY2hhbmdlc1snc3RlcCddIHx8IGNoYW5nZXNbJ2luZGV4J10gfHwgY2hhbmdlc1snaXNOZXN0ZWQnXSB8fCBjaGFuZ2VzWydpc0luc2lkZUxvb3AnXSB8fFxuICAgICAgICBjaGFuZ2VzWydpc0luc2lkZVN0ZXBHcm91cCddIHx8IGNoYW5nZXNbJ2lzUmVvcmRlciddO1xuICAgIGNvbnN0IG9wdGlvbnNPbmx5Q2hhbmdlID0gKGNoYW5nZXNbJ2RhdGFQcm9maWxlT3B0aW9ucyddIHx8IGNoYW5nZXNbJ2hhc01vcmVEYXRhUHJvZmlsZXMnXSB8fCBjaGFuZ2VzWydpc0xvYWRpbmdEYXRhUHJvZmlsZXMnXSB8fFxuICAgICAgICBjaGFuZ2VzWyduYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zJ10gfHwgY2hhbmdlc1snc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMnXSkgJiYgIXN0cnVjdHVyYWxDaGFuZ2U7XG5cbiAgICBpZiAoc3RydWN0dXJhbENoYW5nZSkge1xuICAgICAgdGhpcy5yZW5kZXJTdGVwKCk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zT25seUNoYW5nZSAmJiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgIT0gbnVsbCAmJiB0aGlzLnN0ZXAgIT0gbnVsbCkge1xuICAgICAgLy8gVXBkYXRlIG9ubHkgcHJvZmlsZS9vcHRpb25zIGlucHV0cyBzbyB3ZSBkb24ndCBkZXN0cm95IHRoZSBzdGVwIChlLmcuIG9wZW5pbmcgZGF0YSBwcm9maWxlIGRyb3Bkb3duXG4gICAgICAvLyBsb2FkcyBvcHRpb25zIGFuZCB3b3VsZCBvdGhlcndpc2UgcmVjcmVhdGUgdGhlIGNvbXBvbmVudCBhbmQgY29sbGFwc2UgaW5saW5lIGVkaXQpXG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnNJbnB1dHModGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snc2VsZWN0ZWQnXSAmJiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgIT0gbnVsbCkge1xuICAgICAgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSkuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBVcGRhdGUgb25seSBkYXRhIHByb2ZpbGUgLyBvcHRpb25zIGlucHV0cyBvbiBleGlzdGluZyBpbnN0YW5jZSAoYXZvaWRzIGZ1bGwgcmVjcmVhdGUgYW5kIGxvc2luZyBpc0VkaXRpbmcpLiAqL1xuICBwcml2YXRlIHVwZGF0ZU9wdGlvbnNJbnB1dHMoaW5zdGFuY2U6IGFueSk6IHZvaWQge1xuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCEpIHx8IGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXAhKSB8fCBpc1N0ZXBHcm91cENvbmZpZyh0aGlzLnN0ZXAhKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuZGF0YVByb2ZpbGVPcHRpb25zID0gdGhpcy5kYXRhUHJvZmlsZU9wdGlvbnM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5oYXNNb3JlRGF0YVByb2ZpbGVzID0gdGhpcy5oYXNNb3JlRGF0YVByb2ZpbGVzO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaXNMb2FkaW5nRGF0YVByb2ZpbGVzID0gdGhpcy5pc0xvYWRpbmdEYXRhUHJvZmlsZXM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW5BYm92ZSA9IHRoaXMuYWRkU3RlcEJldHdlZW5BYm92ZTtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuQmVsb3cgPSB0aGlzLmFkZFN0ZXBCZXR3ZWVuQmVsb3c7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbiA9IHRoaXMuYWRkU3RlcEJldHdlZW47XG4gICAgfVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCEpKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzO1xuICAgIH1cbiAgICBpZiAoaXNDb25kaXRpb25TdGVwQ29uZmlnKHRoaXMuc3RlcCEpKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50VHlwZShzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBhbnkge1xuICAgIGlmIChpc1N0ZXBHcm91cENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnN0ZXBHcm91cDtcbiAgICBpZiAoaXNDb25kaXRpb25TdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuY29uZGl0aW9uU3RlcDtcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmxvb3BTdGVwO1xuICAgIGlmIChpc0FwaVN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5hcGlTdGVwO1xuICAgIGlmIChpc0RhdGFiYXNlU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmRhdGFiYXNlU3RlcDtcbiAgICBpZiAoaXNBaUFnZW50U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFpQWdlbnRTdGVwO1xuICAgIGlmIChpc0FpVmVyaWZ5U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFpVmVyaWZ5U3RlcDtcbiAgICBpZiAoaXNVcGxvYWRTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAudXBsb2FkU3RlcDtcbiAgICBpZiAoaXNTY3JlZW5zaG90U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnNjcmVlbnNob3RTdGVwO1xuICAgIGlmIChpc1Njcm9sbFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5zY3JvbGxTdGVwO1xuICAgIGlmIChpc1ZlcmlmeVVybFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC52ZXJpZnlVcmxTdGVwO1xuICAgIGlmIChpc1Jlc3RvcmVTZXNzaW9uU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnJlc3RvcmVTZXNzaW9uU3RlcDtcbiAgICBpZiAoaXNDdXN0b21Db2RlU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmN1c3RvbUNvZGVTdGVwO1xuICAgIGlmIChpc05vcm1hbFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5ub3JtYWxTdGVwO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTdGVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwSG9zdCB8fCAhdGhpcy5zdGVwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5nZXRDb21wb25lbnRUeXBlKHRoaXMuc3RlcCk7XG4gICAgaWYgKCFjb21wb25lbnRUeXBlKSByZXR1cm47XG5cbiAgICB0aGlzLnN0ZXBIb3N0LmNsZWFyKCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnN0ZXBIb3N0LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgaW5zdGFuY2UuY29uZmlnID0gdGhpcy5zdGVwO1xuICAgIGluc3RhbmNlLnN0ZXBOdW1iZXIgPSAodGhpcy5zdGVwIGFzIGFueSkuc3RlcE51bWJlcjtcbiAgICBpbnN0YW5jZS5pc05lc3RlZCA9IHRoaXMuaXNOZXN0ZWQ7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVMb29wID0gdGhpcy5pc0luc2lkZUxvb3A7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVTdGVwR3JvdXAgPSB0aGlzLmlzSW5zaWRlU3RlcEdyb3VwO1xuICAgIGluc3RhbmNlLmlzUmVvcmRlciA9IHRoaXMuaXNSZW9yZGVyO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuc3RlcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSAnc3RlcFR5cGUnICYmIGtleSAhPT0gJ25lc3RlZFN0ZXBzJyAmJiBrZXkgIT09ICdicmFuY2hlcycpIHtcbiAgICAgICAgKGluc3RhbmNlIGFzIGFueSlba2V5XSA9ICh0aGlzLnN0ZXAgYXMgYW55KVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkubmVzdGVkU3RlcHMpIChpbnN0YW5jZSBhcyBhbnkpLm5lc3RlZFN0ZXBzID0gKHRoaXMuc3RlcCBhcyBhbnkpLm5lc3RlZFN0ZXBzO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkuYnJhbmNoZXMpIChpbnN0YW5jZSBhcyBhbnkpLmJyYW5jaGVzID0gKHRoaXMuc3RlcCBhcyBhbnkpLmJyYW5jaGVzO1xuXG4gICAgLy8gUGFzcyBkYXRhIHByb2ZpbGUgaW5wdXRzIHRvIHN0ZXAgaW5zdGFuY2VzIHRoYXQgY2FuIGNvbnRhaW4gbmVzdGVkIGxvb3Agc3RlcHNcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzU3RlcEdyb3VwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmRhdGFQcm9maWxlT3B0aW9ucyA9IHRoaXMuZGF0YVByb2ZpbGVPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaGFzTW9yZURhdGFQcm9maWxlcyA9IHRoaXMuaGFzTW9yZURhdGFQcm9maWxlcztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmlzTG9hZGluZ0RhdGFQcm9maWxlcyA9IHRoaXMuaXNMb2FkaW5nRGF0YVByb2ZpbGVzO1xuICAgICAgLy8gQWxzbyBwYXNzIG5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgKGZvciBuZXN0ZWQgbG9vcCBzdGVwcyB3aXRoIHdoaWxlIGxvb3AgYW5kIGNvbmRpdGlvbiBzdGVwcylcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAvLyBQYXNzIGFkZFN0ZXBCZXR3ZWVuIGlucHV0cyB0byBuZXN0ZWQgc3RlcCBjb21wb25lbnRzXG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbkFib3ZlID0gdGhpcy5hZGRTdGVwQmV0d2VlbkFib3ZlO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW5CZWxvdyA9IHRoaXMuYWRkU3RlcEJldHdlZW5CZWxvdztcbiAgICAgIC8vIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGRlcHJlY2F0ZWQgYWRkU3RlcEJldHdlZW5cbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuID0gdGhpcy5hZGRTdGVwQmV0d2VlbjtcbiAgICB9XG4gICAgXG4gICAgLy8gUGFzcyBuYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIGFuZCB0ZW1wbGF0ZSB2YXJpYWJsZXMgZnVuY3Rpb24gdG8gbG9vcCBzdGVwcyAoZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uLCBzYW1lIGFzIGNvbmRpdGlvbi1zdGVwKVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcyA9IHRoaXMuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXM7XG4gICAgfVxuICAgIFxuICAgIC8vIFBhc3MgbmF0dXJhbCB0ZXh0IGFjdGlvbnMgb3B0aW9ucyBhbmQgdGVtcGxhdGUgdmFyaWFibGVzIGZ1bmN0aW9uIHRvIGNvbmRpdGlvbiBzdGVwc1xuICAgIGlmIChpc0NvbmRpdGlvblN0ZXBDb25maWcodGhpcy5zdGVwKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyA9IHRoaXMubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzID0gdGhpcy5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcztcbiAgICB9XG5cbiAgICB0aGlzLndpcmVPdXRwdXRzKGluc3RhbmNlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHdpcmVPdXRwdXRzKGluc3RhbmNlOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSBzdWJzY3JpcHRpb25zIG9uIHRoZSBpbnN0YW5jZSB0byBwcmV2ZW50IGR1cGxpY2F0ZXNcbiAgICBpZiAoIShpbnN0YW5jZSBhcyBhbnkpLl9jcWFTdWJzY3JpcHRpb25zKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucztcbiAgICBcbiAgICBjb25zdCB3aXJlID0gKGtleTogc3RyaW5nLCBlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PikgPT4ge1xuICAgICAgaWYgKGluc3RhbmNlW2tleV0gJiYgdHlwZW9mIGluc3RhbmNlW2tleV0uc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gcHJldmlvdXMgc3Vic2NyaXB0aW9uIGlmIGV4aXN0c1xuICAgICAgICBjb25zdCBleGlzdGluZ1N1YiA9IHN1YnNjcmlwdGlvbnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICAgIGV4aXN0aW5nU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgc3Vic2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2tleV0uc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQodik7XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnNldChrZXksIHN1YnNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aXJlKCduZXN0ZWRTdGVwQ2hhbmdlJywgdGhpcy5uZXN0ZWRTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2JyYW5jaCcgaW4gdikgdGhpcy5hZGRTdGVwRm9yQnJhbmNoLmVtaXQodik7XG4gICAgICAgIGVsc2UgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2xvb3BTdGVwQ29uZmlnJyBpbiB2KSB0aGlzLmFkZFN0ZXBGb3JMb29wLmVtaXQodik7XG4gICAgICAgIGVsc2UgdGhpcy5hZGRTdGVwLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVTdGVwJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnYnJhbmNoJyBpbiB2ICYmICdzdGVwSW5kZXgnIGluIHYpIHRoaXMuZGVsZXRlU3RlcFdpdGhCcmFuY2guZW1pdCh2KTtcbiAgICAgICAgZWxzZSB0aGlzLmRlbGV0ZVN0ZXAuZW1pdCh2KTtcbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ3RvZ2dsZUV4cGFuZGVkJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgYm90aCBib29sZWFuIGFuZCBvYmplY3QgZm9ybWF0c1xuICAgICAgICAvLyBJZiBpdCdzIGFuIG9iamVjdCB3aXRoIGNvbmZpZyBhbmQgZXhwYW5kZWQsIGVtaXQgaXQgYXMtaXNcbiAgICAgICAgLy8gSWYgaXQncyBqdXN0IGEgYm9vbGVhbiwgZW1pdCBpdCBhcy1pc1xuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdncm91cE5hbWVDaGFuZ2UnLCB0aGlzLmdyb3VwTmFtZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2Rlc2NyaXB0aW9uQ2hhbmdlJywgdGhpcy5kZXNjcmlwdGlvbkNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ3JldXNhYmxlQ2hhbmdlJywgdGhpcy5yZXVzYWJsZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ29wZW5FeHRlcm5hbCcsIHRoaXMub3BlbkV4dGVybmFsIGFzIGFueSk7XG4gICAgd2lyZSgnZWRpdCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGVtaXRzIHZvaWQgb3Igbm90aGluZywgdXNlIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGFscmVhZHkgZW1pdHMgYW4gb2JqZWN0LCBtZXJnZSBpdCB3aXRoIHN0ZXAgYW5kIGluZGV4XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdzdGVwJyBpbiB2ICYmICdpbmRleCcgaW4gdikge1xuICAgICAgICAgIC8vIEFscmVhZHkgaGFzIHN0ZXAgYW5kIGluZGV4LCBlbWl0IGFzLWlzXG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQodik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRW1pdCB3aXRoIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgICB0aGlzLmVkaXQuZW1pdCh7IHN0ZXA6IHRoaXMuc3RlcCwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ2xpbmsnLCB0aGlzLmxpbmsgYXMgYW55KTtcbiAgICB3aXJlKCdkdXBsaWNhdGUnLCB0aGlzLmR1cGxpY2F0ZSBhcyBhbnkpO1xuICAgIC8vIFdpcmUgZGVsZXRlIGV2ZW50IC0gaW50ZXJjZXB0IGFuZCBlbWl0IHdpdGggc3RlcCBkYXRhIChmb3J3YXJkIHBheWxvYWQgd2hlbiBjaGlsZCBlbWl0cyB7IHN0ZXAgfSBmb3IgbmVzdGVkIGRlbGV0ZXMpXG4gICAgaWYgKGluc3RhbmNlLmRlbGV0ZSAmJiB0eXBlb2YgaW5zdGFuY2UuZGVsZXRlLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnZGVsZXRlJyk7XG4gICAgICBpZiAoZXhpc3RpbmdTdWIpIHtcbiAgICAgICAgZXhpc3RpbmdTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlbGV0ZVN1YiA9IGluc3RhbmNlLmRlbGV0ZS5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5icmFuY2ggIT0gbnVsbCAmJiB0aGlzLmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZVN0ZXBXaXRoQnJhbmNoLmVtaXQoeyBicmFuY2g6IHRoaXMuYnJhbmNoLCBzdGVwSW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2LnN0ZXApIHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZS5lbWl0KHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoeyBzdGVwOiB0aGlzLnN0ZXAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc3Vic2NyaXB0aW9ucy5zZXQoJ2RlbGV0ZScsIGRlbGV0ZVN1Yik7XG4gICAgfVxuICAgIHdpcmUoJ3ZpZXdEZXRhaWxzJywgdGhpcy52aWV3RGV0YWlscyBhcyBhbnkpO1xuICAgIHdpcmUoJ3NlbGVjdGlvbkNoYW5nZScsIHRoaXMuc2VsZWN0aW9uQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnY29uZGl0aW9uQ2hhbmdlJywgdGhpcy5jb25kaXRpb25DaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdicmFuY2hTdGVwQ2hhbmdlJywgdGhpcy5icmFuY2hTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEZvckJyYW5jaCcsIHRoaXMuYWRkU3RlcEZvckJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZVN0ZXBXaXRoQnJhbmNoJywgdGhpcy5kZWxldGVTdGVwV2l0aEJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZEJyYW5jaCcsIHRoaXMuYWRkQnJhbmNoIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkRWxzZScsIHRoaXMuYWRkRWxzZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZUJyYW5jaCcsIHRoaXMuZGVsZXRlQnJhbmNoIGFzIGFueSk7XG4gICAgd2lyZSgndGVzdERhdGFQcm9maWxlQ2hhbmdlJywgdGhpcy50ZXN0RGF0YVByb2ZpbGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdzdGFydFN0ZXBDaGFuZ2UnLCB0aGlzLnN0YXJ0U3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2VuZFN0ZXBDaGFuZ2UnLCB0aGlzLmVuZFN0ZXBDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdtYXhJdGVyYXRpb25zQ2hhbmdlJywgdGhpcy5tYXhJdGVyYXRpb25zQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnZXZlbnRUeXBlQ2hhbmdlJywgdGhpcy5ldmVudFR5cGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdwYXJhbWV0ZXJDaGFuZ2UnLCB0aGlzLnBhcmFtZXRlckNoYW5nZSBhcyBhbnkpO1xuICAgIC8vIFdpcmUgY2xpY2tBY3Rpb24gLSB3cmFwIE1vdXNlRXZlbnQgd2l0aCBzdGVwIGRhdGFcbiAgICBpZiAoaW5zdGFuY2UuY2xpY2tBY3Rpb24gJiYgdHlwZW9mIGluc3RhbmNlLmNsaWNrQWN0aW9uLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnY2xpY2tBY3Rpb24nKTtcbiAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICBleGlzdGluZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpY2tBY3Rpb25TdWIgPSBpbnN0YW5jZS5jbGlja0FjdGlvbi5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgZW1pdHMgYW4gb2JqZWN0IHdpdGggZXZlbnQgYW5kIHN0ZXAsIHVzZSBpdDsgb3RoZXJ3aXNlIHdyYXAgTW91c2VFdmVudCB3aXRoIGN1cnJlbnQgc3RlcFxuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnZXZlbnQnIGluIHYgJiYgJ3N0ZXAnIGluIHYpIHtcbiAgICAgICAgICB0aGlzLmNsaWNrQWN0aW9uLmVtaXQodik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQXNzdW1lIHYgaXMgYSBNb3VzZUV2ZW50LCB3cmFwIGl0IHdpdGggY3VycmVudCBzdGVwXG4gICAgICAgICAgdGhpcy5jbGlja0FjdGlvbi5lbWl0KHsgZXZlbnQ6IHYgYXMgTW91c2VFdmVudCwgc3RlcDogdGhpcy5zdGVwIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHN1YnNjcmlwdGlvbnMuc2V0KCdjbGlja0FjdGlvbicsIGNsaWNrQWN0aW9uU3ViKTtcbiAgICB9XG4gICAgd2lyZSgnZG5kRHJvcEluWm9uZScsIHRoaXMuZG5kRHJvcEluWm9uZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2xvYWRNb3JlRGF0YVByb2ZpbGVzJywgdGhpcy5sb2FkTW9yZURhdGFQcm9maWxlcyBhcyBhbnkpO1xuICAgIHdpcmUoJ3NlYXJjaERhdGFQcm9maWxlcycsIHRoaXMuc2VhcmNoRGF0YVByb2ZpbGVzIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEJldHdlZW5DbGljaycsIHRoaXMuYWRkU3RlcEJldHdlZW5DbGljayBhcyBhbnkpO1xuICAgIC8vIFdpcmUgZWRpdEluRGVwdGggLSBjaGVjayBpZiBpdCBleGlzdHMgb24gaW5zdGFuY2VcbiAgICBpZiAoaW5zdGFuY2UuZWRpdEluRGVwdGggJiYgdHlwZW9mIGluc3RhbmNlLmVkaXRJbkRlcHRoLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnZWRpdEluRGVwdGgnKTtcbiAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICBleGlzdGluZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgZWRpdEluRGVwdGhTdWIgPSBpbnN0YW5jZS5lZGl0SW5EZXB0aC5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgZW1pdHMgYW4gb2JqZWN0IHdpdGggc3RlcCwgdXNlIGl0OyBvdGhlcndpc2UgdXNlIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ3N0ZXAnIGluIHYpIHtcbiAgICAgICAgICB0aGlzLmVkaXRJbkRlcHRoLmVtaXQoeyBzdGVwOiB2LnN0ZXAsIGluZGV4OiB2LmluZGV4ID8/IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lZGl0SW5EZXB0aC5lbWl0KHsgc3RlcDogdGhpcy5zdGVwLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBzdWJzY3JpcHRpb25zLnNldCgnZWRpdEluRGVwdGgnLCBlZGl0SW5EZXB0aFN1Yik7XG4gICAgfVxuICAgIC8vIFdpcmUgc3RlcFVwZGF0ZSAtIGNoZWNrIGlmIGl0IGV4aXN0cyBvbiBpbnN0YW5jZVxuICAgIGlmIChpbnN0YW5jZS5zdGVwVXBkYXRlKSB7XG4gICAgICBjb25zb2xlLmxvZygnUmVuZGVyZXI6IEZvdW5kIHN0ZXBVcGRhdGUgRXZlbnRFbWl0dGVyLCB3aXJpbmcgaXQnKTtcbiAgICAgIHdpcmUoJ3N0ZXBVcGRhdGUnLCB0aGlzLnN0ZXBVcGRhdGUgYXMgYW55KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdSZW5kZXJlcjogc3RlcFVwZGF0ZSBFdmVudEVtaXR0ZXIgbm90IGZvdW5kIG9uIGluc3RhbmNlIGR1cmluZyB3aXJlT3V0cHV0cycsIHtcbiAgICAgICAgc3RlcElkOiB0aGlzLnN0ZXA/LmlkLFxuICAgICAgICBzdGVwVHlwZTogdGhpcy5zdGVwPy5zdGVwVHlwZSxcbiAgICAgICAgaW5zdGFuY2VLZXlzOiBPYmplY3Qua2V5cyhpbnN0YW5jZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbnMgd2hlbiBjb21wb25lbnQgaXMgZGVzdHJveWVkXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9ICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnkpLl9jcWFTdWJzY3JpcHRpb25zO1xuICAgICAgaWYgKHN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWI6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChzdWIgJiYgdHlwZW9mIHN1Yi51bnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5jbGVhcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS1zdGVwLXJlbmRlcmVyLWhvdmVyLWNvbnRhaW5lclwiPlxuICAgIDxidXR0b24gKm5nSWY9XCIhaXNSZW9yZGVyICYmIChhZGRTdGVwQmV0d2VlbkFib3ZlICYmIGFkZFN0ZXBCZXR3ZWVuKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS10b3AtW2NhbGMoMCAtIDEycHgpXSBjcWEtbGVmdC1bNTAlXSBjcWEtdHJhbnNsYXRlLXgtWy01MCVdIGNxYS1wLTAgY3FhLXotWzFdIGNxYS1hZGQtc3RlcC1iZXR3ZWVuLWJ0blwiXG4gICAgICAgIHN0eWxlPVwidG9wOiAtMTJweDtcIiAoY2xpY2spPVwiYWRkU3RlcEJldHdlZW5DbGljay5lbWl0KHtzdGVwOiBzdGVwLCBpbmRleDogaW5kZXgsIHBvc2l0aW9uOiAnQUJPVkUnfSlcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTJIMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4LjVWMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXN0ZXAtaG9zdC13cmFwcGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3N0ZXBIb3N0PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gKm5nSWY9XCIhaXNSZW9yZGVyICYmIChhZGRTdGVwQmV0d2VlbkJlbG93ICYmIGFkZFN0ZXBCZXR3ZWVuKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS10b3AtW2NhbGMoMTAwJS0xMnB4KV0gY3FhLWxlZnQtWzUwJV0gY3FhLXRyYW5zbGF0ZS14LVstNTAlXSBjcWEtcC0wIGNxYS16LVsxXSBjcWEtYWRkLXN0ZXAtYmV0d2Vlbi1idG5cIlxuICAgICAgICAoY2xpY2spPVwiYWRkU3RlcEJldHdlZW5DbGljay5lbWl0KHtzdGVwOiBzdGVwLCBpbmRleDogaW5kZXgsIHBvc2l0aW9uOiAnQkVMT1cnfSlcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTJIMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4LjVWMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
|
|
482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGdCQUFnQixFQUdoQixNQUFNLEdBS1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDRCQUE0QixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVHLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEdBR3ZCLE1BQU0sMEJBQTBCLENBQUM7OztBQU9sQyxNQUFNLE9BQU8sZ0NBQWdDO0lBNkUzQyxZQUNnRCxZQUFzQyxFQUM1RSxHQUFzQjtRQURnQixpQkFBWSxHQUFaLFlBQVksQ0FBMEI7UUFDNUUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExRXZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDdkMsdUdBQXVHO1FBQzlGLHNCQUFpQixHQUFZLEtB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T3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBJbmplY3QsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBURVNUX0NBU0VfU1RFUF9DT01QT05FTlRfTUFQLCBUZXN0Q2FzZVN0ZXBDb21wb25lbnRNYXAgfSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC1jb21wb25lbnRzLnRva2VuJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlU3RlcENvbmZpZyxcbiAgaXNTdGVwR3JvdXBDb25maWcsXG4gIGlzQ29uZGl0aW9uU3RlcENvbmZpZyxcbiAgaXNMb29wU3RlcENvbmZpZyxcbiAgaXNOb3JtYWxTdGVwQ29uZmlnLFxuICBpc0FwaVN0ZXBDb25maWcsXG4gIGlzRGF0YWJhc2VTdGVwQ29uZmlnLFxuICBpc0FpQWdlbnRTdGVwQ29uZmlnLFxuICBpc0FpVmVyaWZ5U3RlcENvbmZpZyxcbiAgaXNVcGxvYWRTdGVwQ29uZmlnLFxuICBpc1NjcmVlbnNob3RTdGVwQ29uZmlnLFxuICBpc1Njcm9sbFN0ZXBDb25maWcsXG4gIGlzVmVyaWZ5VXJsU3RlcENvbmZpZyxcbiAgaXNSZXN0b3JlU2Vzc2lvblN0ZXBDb25maWcsXG4gIGlzQ3VzdG9tQ29kZVN0ZXBDb25maWcsXG4gIENvbmRpdGlvbkJyYW5jaCxcbiAgTG9vcFN0ZXBDb25maWcsXG59IGZyb20gJy4uL3Rlc3QtY2FzZS1zdGVwLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgVGVzdENhc2VEZXRhaWxzUmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBIb3N0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHN0ZXBIb3N0ITogVmlld0NvbnRhaW5lclJlZjtcblxuICBASW5wdXQoKSBzdGVwITogVGVzdENhc2VTdGVwQ29uZmlnO1xuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcbiAgQElucHV0KCkgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNJbnNpZGVMb29wOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBXaGVuIHRydWUsIHN0ZXAgaXMgcmVuZGVyZWQgaW5zaWRlIGEgc3RlcC1ncm91cDsgcm93IGFjdGlvbnMgKEVkaXQvRHVwbGljYXRlL0RlbGV0ZSkgYXJlIGhpZGRlbi4gKi9cbiAgQElucHV0KCkgaXNJbnNpZGVTdGVwR3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdoZW4gcmVuZGVyaW5nIGEgc3RlcCBpbnNpZGUgYSBjb25kaXRpb24gYnJhbmNoLCB0aGUgYnJhbmNoIGNvbnRleHQgKGZvciBhZGRTdGVwRm9yQnJhbmNoIC8gZGVsZXRlU3RlcFdpdGhCcmFuY2gpLiAqL1xuICBASW5wdXQoKSBicmFuY2g/OiBDb25kaXRpb25CcmFuY2g7XG4gIC8qKiBXaGVuIHRydWUsIGVuYWJsZXMgZHJhZy1hbmQtZHJvcCByZW9yZGVyaW5nIGFuZCBzaG93cyBkcmFnIGhhbmRsZSBpY29uIGluc3RlYWQgb2YgY2hlY2tib3ggKi9cbiAgQElucHV0KCkgaXNSZW9yZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBDdXJyZW50IHNlbGVjdGlvbiBzdGF0ZTsgd2hlbiBjaGFuZ2VkIChlLmcuIGZyb20gU2VsZWN0IGFsbCksIHRoZSBjcmVhdGVkIHN0ZXAgY29tcG9uZW50IGlzIHVwZGF0ZWQgc28gdGhlIGNoZWNrYm94IHJlZmxlY3RzIGl0ICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgXCJBZGQgU3RlcCBCZXR3ZWVuXCIgYnV0dG9uIGFib3ZlIHRoZSBzdGVwICovXG4gIEBJbnB1dCgpIGFkZFN0ZXBCZXR3ZWVuQWJvdmU6IGJvb2xlYW4gPSB0cnVlO1xuICAvKiogU2hvdyBcIkFkZCBTdGVwIEJldHdlZW5cIiBidXR0b24gYmVsb3cgdGhlIHN0ZXAgKi9cbiAgQElucHV0KCkgYWRkU3RlcEJldHdlZW5CZWxvdzogYm9vbGVhbiA9IHRydWU7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYWRkU3RlcEJldHdlZW5BYm92ZSBhbmQgYWRkU3RlcEJldHdlZW5CZWxvdyBpbnN0ZWFkLiBJZiBzZXQsIGFwcGxpZXMgdG8gYm90aCBidXR0b25zLiAqL1xuICBASW5wdXQoKSBhZGRTdGVwQmV0d2VlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBuZXN0ZWRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuICBAT3V0cHV0KCkgYWRkU3RlcCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVN0ZXAgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuIHwge2NvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnLCBleHBhbmRlZDogYm9vbGVhbn0+KCk7XG4gIEBPdXRwdXQoKSBncm91cE5hbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGRlc2NyaXB0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZXVzYWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9wZW5FeHRlcm5hbCA9IG5ldyBFdmVudEVtaXR0ZXI8e3N0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZ30+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjx7c3RlcDogVGVzdENhc2VTdGVwQ29uZmlnLCBpbmRleDogbnVtYmVyfT4oKTtcbiAgQE91dHB1dCgpIGxpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RlcDogVGVzdENhc2VTdGVwQ29uZmlnIH0gfCB2b2lkPigpO1xuICBAT3V0cHV0KCkgdmlld0RldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGltcG9ydCgnLi4vc3RlcC1kZXRhaWxzLW1vZGFsL3N0ZXAtZGV0YWlscy1tb2RhbC1kYXRhJykuVmlld0RldGFpbHNQYXlsb2FkPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZGl0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBicmFuY2hTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoOyBzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWc7IHN0ZXBJbmRleDogbnVtYmVyIH0+KCk7XG4gIEBPdXRwdXQoKSBhZGRTdGVwRm9yQnJhbmNoID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJyYW5jaDogQ29uZGl0aW9uQnJhbmNoIH0+KCk7XG4gIC8qKiBFbWl0dGVkIHdoZW4gZW1wdHkgbG9vcCBzdGVwIHBsdXMgaXMgY2xpY2tlZDsgc2FtZSBiZWhhdmlvdXIgYXMgYWRkLXN0ZXAtYmV0d2VlbiAocGFyZW50SWQgPSBsb29wIHN0ZXAgaWQpLiAqL1xuICBAT3V0cHV0KCkgYWRkU3RlcEZvckxvb3AgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbG9vcFN0ZXBDb25maWc6IExvb3BTdGVwQ29uZmlnIH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTdGVwV2l0aEJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBicmFuY2g6IENvbmRpdGlvbkJyYW5jaDsgc3RlcEluZGV4OiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGFkZEJyYW5jaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyBcIkFkZCBFbHNlXCIgaW4gYSBjb25kaXRpb24gc3RlcDsgcGFyZW50IHNob3VsZCBjYWxsIFBPU1QgdGVzdF9zdGVwcyB3aXRoIGNvbmRpdGlvblR5cGUgQ09ORElUSU9OX0VMU0UgKi9cbiAgQE91dHB1dCgpIGFkZEVsc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29uZGl0aW9uU3RlcENvbmZpZzogVGVzdENhc2VTdGVwQ29uZmlnIH0+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVCcmFuY2ggPSBuZXcgRXZlbnRFbWl0dGVyPENvbmRpdGlvbkJyYW5jaD4oKTtcbiAgQE91dHB1dCgpIHRlc3REYXRhUHJvZmlsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgc3RhcnRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBlbmRTdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBtYXhJdGVyYXRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBldmVudFR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhcmFtZXRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY2xpY2tBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXZlbnQ6IE1vdXNlRXZlbnQ7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZyB9PigpO1xuICAvKiogRW1pdHRlZCB3aGVuIGEgc3RlcCBpcyBkcm9wcGVkIGluIGEgbmVzdGVkIGRyb3B6b25lIChzdGVwLWdyb3VwLCBsb29wLCBjb25kaXRpb24pLiBQYXlsb2FkOiB7IGV2ZW50LCB0YXJnZXRMaXN0IH0uICovXG4gIEBPdXRwdXQoKSBkbmREcm9wSW5ab25lID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBhbnk7IHRhcmdldExpc3Q6IFRlc3RDYXNlU3RlcENvbmZpZ1tdIH0+KCk7XG4gIC8qKiBEYXRhIHByb2ZpbGUgb3B0aW9ucyBmb3IgbG9vcCBzdGVwcyAqL1xuICBASW5wdXQoKSBkYXRhUHJvZmlsZU9wdGlvbnM6IGFueVtdID0gW107XG4gIC8qKiBJbmRpY2F0ZXMgaWYgbW9yZSBkYXRhIHByb2ZpbGVzIGFyZSBhdmFpbGFibGUgZm9yIGxvYWRpbmcgKi9cbiAgQElucHV0KCkgaGFzTW9yZURhdGFQcm9maWxlczogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogTG9hZGluZyBzdGF0ZSBmb3IgZGF0YSBwcm9maWxlcyAqL1xuICBASW5wdXQoKSBpc0xvYWRpbmdEYXRhUHJvZmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIE5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uICovXG4gIEBJbnB1dCgpIG5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM6IGFueVtdID0gW107XG4gIC8qKiBGdW5jdGlvbiB0byBwcm9jZXNzIHRlbXBsYXRlIHZhcmlhYmxlcyBmb3IgY29uZGl0aW9uIHN0ZXBzICovXG4gIEBJbnB1dCgpIHNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzOiAodGVtcGxhdGU6IGFueSkgPT4gYW55W10gPSAoKSA9PiBbXTtcbiAgLyoqIEVtaXQgd2hlbiBtb3JlIGRhdGEgcHJvZmlsZXMgbmVlZCB0byBiZSBsb2FkZWQgKi9cbiAgQE91dHB1dCgpIGxvYWRNb3JlRGF0YVByb2ZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIC8qKiBFbWl0IHdoZW4gZGF0YSBwcm9maWxlIHNlYXJjaCBxdWVyeSBjaGFuZ2VzICovXG4gIEBPdXRwdXQoKSBzZWFyY2hEYXRhUHJvZmlsZXMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgLyoqIEVtaXQgd2hlbiBhIHN0ZXAgaXMgdXBkYXRlZCAoZS5nLiwgQXBwbHkgYnV0dG9uIGNsaWNrZWQgaW4gbG9vcC1zdGVwIGVkaXQgbW9kZSkgKi9cbiAgQE91dHB1dCgpIHN0ZXBVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFRlc3RDYXNlU3RlcENvbmZpZz4oKTtcbiAgQE91dHB1dCgpIGFkZFN0ZXBCZXR3ZWVuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHtzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcsIGluZGV4OiBudW1iZXIsIHBvc2l0aW9uOiAnQUJPVkUnIHwgJ0JFTE9XJ30+KCk7XG4gIC8qKiBFbWl0IHdoZW4gdXNlciBjbGlja3MgXCJFZGl0IEluIGRlcHRoXCIgaW4gY29uZGl0aW9uLXN0ZXAgKG9yIG90aGVyIHN0ZXBzIHRoYXQgc3VwcG9ydCBpdCkgKi9cbiAgQE91dHB1dCgpIGVkaXRJbkRlcHRoID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZzsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCkgcHJpdmF0ZSBjb21wb25lbnRNYXA6IFRlc3RDYXNlU3RlcENvbXBvbmVudE1hcCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlclN0ZXAoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBzdHJ1Y3R1cmFsQ2hhbmdlID0gY2hhbmdlc1snc3RlcCddIHx8IGNoYW5nZXNbJ2luZGV4J10gfHwgY2hhbmdlc1snaXNOZXN0ZWQnXSB8fCBjaGFuZ2VzWydpc0luc2lkZUxvb3AnXSB8fFxuICAgICAgICBjaGFuZ2VzWydpc0luc2lkZVN0ZXBHcm91cCddIHx8IGNoYW5nZXNbJ2lzUmVvcmRlciddO1xuICAgIGNvbnN0IG9wdGlvbnNPbmx5Q2hhbmdlID0gKGNoYW5nZXNbJ2RhdGFQcm9maWxlT3B0aW9ucyddIHx8IGNoYW5nZXNbJ2hhc01vcmVEYXRhUHJvZmlsZXMnXSB8fCBjaGFuZ2VzWydpc0xvYWRpbmdEYXRhUHJvZmlsZXMnXSB8fFxuICAgICAgICBjaGFuZ2VzWyduYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zJ10gfHwgY2hhbmdlc1snc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMnXSkgJiYgIXN0cnVjdHVyYWxDaGFuZ2U7XG5cbiAgICBpZiAoc3RydWN0dXJhbENoYW5nZSkge1xuICAgICAgdGhpcy5yZW5kZXJTdGVwKCk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zT25seUNoYW5nZSAmJiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgIT0gbnVsbCAmJiB0aGlzLnN0ZXAgIT0gbnVsbCkge1xuICAgICAgLy8gVXBkYXRlIG9ubHkgcHJvZmlsZS9vcHRpb25zIGlucHV0cyBzbyB3ZSBkb24ndCBkZXN0cm95IHRoZSBzdGVwIChlLmcuIG9wZW5pbmcgZGF0YSBwcm9maWxlIGRyb3Bkb3duXG4gICAgICAvLyBsb2FkcyBvcHRpb25zIGFuZCB3b3VsZCBvdGhlcndpc2UgcmVjcmVhdGUgdGhlIGNvbXBvbmVudCBhbmQgY29sbGFwc2UgaW5saW5lIGVkaXQpXG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnNJbnB1dHModGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snc2VsZWN0ZWQnXSAmJiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgIT0gbnVsbCkge1xuICAgICAgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSkuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBVcGRhdGUgb25seSBkYXRhIHByb2ZpbGUgLyBvcHRpb25zIGlucHV0cyBvbiBleGlzdGluZyBpbnN0YW5jZSAoYXZvaWRzIGZ1bGwgcmVjcmVhdGUgYW5kIGxvc2luZyBpc0VkaXRpbmcpLiAqL1xuICBwcml2YXRlIHVwZGF0ZU9wdGlvbnNJbnB1dHMoaW5zdGFuY2U6IGFueSk6IHZvaWQge1xuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCEpIHx8IGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXAhKSB8fCBpc1N0ZXBHcm91cENvbmZpZyh0aGlzLnN0ZXAhKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuZGF0YVByb2ZpbGVPcHRpb25zID0gdGhpcy5kYXRhUHJvZmlsZU9wdGlvbnM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5oYXNNb3JlRGF0YVByb2ZpbGVzID0gdGhpcy5oYXNNb3JlRGF0YVByb2ZpbGVzO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaXNMb2FkaW5nRGF0YVByb2ZpbGVzID0gdGhpcy5pc0xvYWRpbmdEYXRhUHJvZmlsZXM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW5BYm92ZSA9IHRoaXMuYWRkU3RlcEJldHdlZW5BYm92ZTtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuQmVsb3cgPSB0aGlzLmFkZFN0ZXBCZXR3ZWVuQmVsb3c7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbiA9IHRoaXMuYWRkU3RlcEJldHdlZW47XG4gICAgfVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCEpKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzO1xuICAgIH1cbiAgICBpZiAoaXNDb25kaXRpb25TdGVwQ29uZmlnKHRoaXMuc3RlcCEpKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zID0gdGhpcy5uYXR1cmFsVGV4dEFjdGlvbnNPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXMgPSB0aGlzLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50VHlwZShzdGVwOiBUZXN0Q2FzZVN0ZXBDb25maWcpOiBhbnkge1xuICAgIGlmIChpc1N0ZXBHcm91cENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnN0ZXBHcm91cDtcbiAgICBpZiAoaXNDb25kaXRpb25TdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAuY29uZGl0aW9uU3RlcDtcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmxvb3BTdGVwO1xuICAgIGlmIChpc0FwaVN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5hcGlTdGVwO1xuICAgIGlmIChpc0RhdGFiYXNlU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmRhdGFiYXNlU3RlcDtcbiAgICBpZiAoaXNBaUFnZW50U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFpQWdlbnRTdGVwO1xuICAgIGlmIChpc0FpVmVyaWZ5U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmFpVmVyaWZ5U3RlcDtcbiAgICBpZiAoaXNVcGxvYWRTdGVwQ29uZmlnKHN0ZXApKSByZXR1cm4gdGhpcy5jb21wb25lbnRNYXAudXBsb2FkU3RlcDtcbiAgICBpZiAoaXNTY3JlZW5zaG90U3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnNjcmVlbnNob3RTdGVwO1xuICAgIGlmIChpc1Njcm9sbFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5zY3JvbGxTdGVwO1xuICAgIGlmIChpc1ZlcmlmeVVybFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC52ZXJpZnlVcmxTdGVwO1xuICAgIGlmIChpc1Jlc3RvcmVTZXNzaW9uU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLnJlc3RvcmVTZXNzaW9uU3RlcDtcbiAgICBpZiAoaXNDdXN0b21Db2RlU3RlcENvbmZpZyhzdGVwKSkgcmV0dXJuIHRoaXMuY29tcG9uZW50TWFwLmN1c3RvbUNvZGVTdGVwO1xuICAgIGlmIChpc05vcm1hbFN0ZXBDb25maWcoc3RlcCkpIHJldHVybiB0aGlzLmNvbXBvbmVudE1hcC5ub3JtYWxTdGVwO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTdGVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGVwSG9zdCB8fCAhdGhpcy5zdGVwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb21wb25lbnRUeXBlID0gdGhpcy5nZXRDb21wb25lbnRUeXBlKHRoaXMuc3RlcCk7XG4gICAgaWYgKCFjb21wb25lbnRUeXBlKSByZXR1cm47XG5cbiAgICB0aGlzLnN0ZXBIb3N0LmNsZWFyKCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnN0ZXBIb3N0LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgaW5zdGFuY2UuY29uZmlnID0gdGhpcy5zdGVwO1xuICAgIGluc3RhbmNlLnN0ZXBOdW1iZXIgPSAodGhpcy5zdGVwIGFzIGFueSkuc3RlcE51bWJlcjtcbiAgICBpbnN0YW5jZS5pc05lc3RlZCA9IHRoaXMuaXNOZXN0ZWQ7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVMb29wID0gdGhpcy5pc0luc2lkZUxvb3A7XG4gICAgaW5zdGFuY2UuaXNJbnNpZGVTdGVwR3JvdXAgPSB0aGlzLmlzSW5zaWRlU3RlcEdyb3VwO1xuICAgIGluc3RhbmNlLmlzUmVvcmRlciA9IHRoaXMuaXNSZW9yZGVyO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuc3RlcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5ICE9PSAnc3RlcFR5cGUnICYmIGtleSAhPT0gJ25lc3RlZFN0ZXBzJyAmJiBrZXkgIT09ICdicmFuY2hlcycpIHtcbiAgICAgICAgKGluc3RhbmNlIGFzIGFueSlba2V5XSA9ICh0aGlzLnN0ZXAgYXMgYW55KVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkubmVzdGVkU3RlcHMpIChpbnN0YW5jZSBhcyBhbnkpLm5lc3RlZFN0ZXBzID0gKHRoaXMuc3RlcCBhcyBhbnkpLm5lc3RlZFN0ZXBzO1xuICAgIGlmICgodGhpcy5zdGVwIGFzIGFueSkuYnJhbmNoZXMpIChpbnN0YW5jZSBhcyBhbnkpLmJyYW5jaGVzID0gKHRoaXMuc3RlcCBhcyBhbnkpLmJyYW5jaGVzO1xuXG4gICAgLy8gUGFzcyBkYXRhIHByb2ZpbGUgaW5wdXRzIHRvIHN0ZXAgaW5zdGFuY2VzIHRoYXQgY2FuIGNvbnRhaW4gbmVzdGVkIGxvb3Agc3RlcHNcbiAgICBpZiAoaXNMb29wU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzQ29uZGl0aW9uU3RlcENvbmZpZyh0aGlzLnN0ZXApIHx8IGlzU3RlcEdyb3VwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmRhdGFQcm9maWxlT3B0aW9ucyA9IHRoaXMuZGF0YVByb2ZpbGVPcHRpb25zO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuaGFzTW9yZURhdGFQcm9maWxlcyA9IHRoaXMuaGFzTW9yZURhdGFQcm9maWxlcztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmlzTG9hZGluZ0RhdGFQcm9maWxlcyA9IHRoaXMuaXNMb2FkaW5nRGF0YVByb2ZpbGVzO1xuICAgICAgLy8gQWxzbyBwYXNzIG5hdHVyYWwgdGV4dCBhY3Rpb25zIG9wdGlvbnMgKGZvciBuZXN0ZWQgbG9vcCBzdGVwcyB3aXRoIHdoaWxlIGxvb3AgYW5kIGNvbmRpdGlvbiBzdGVwcylcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAvLyBQYXNzIGFkZFN0ZXBCZXR3ZWVuIGlucHV0cyB0byBuZXN0ZWQgc3RlcCBjb21wb25lbnRzXG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5hZGRTdGVwQmV0d2VlbkFib3ZlID0gdGhpcy5hZGRTdGVwQmV0d2VlbkFib3ZlO1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkuYWRkU3RlcEJldHdlZW5CZWxvdyA9IHRoaXMuYWRkU3RlcEJldHdlZW5CZWxvdztcbiAgICAgIC8vIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGRlcHJlY2F0ZWQgYWRkU3RlcEJldHdlZW5cbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLmFkZFN0ZXBCZXR3ZWVuID0gdGhpcy5hZGRTdGVwQmV0d2VlbjtcbiAgICB9XG4gICAgXG4gICAgLy8gUGFzcyBuYXR1cmFsIHRleHQgYWN0aW9ucyBvcHRpb25zIGFuZCB0ZW1wbGF0ZSB2YXJpYWJsZXMgZnVuY3Rpb24gdG8gbG9vcCBzdGVwcyAoZm9yIHdoaWxlIGxvb3AgY29uZGl0aW9uLCBzYW1lIGFzIGNvbmRpdGlvbi1zdGVwKVxuICAgIGlmIChpc0xvb3BTdGVwQ29uZmlnKHRoaXMuc3RlcCkpIHtcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnMgPSB0aGlzLm5hdHVyYWxUZXh0QWN0aW9uc09wdGlvbnM7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcyA9IHRoaXMuc2V0Q29uZGl0aW9uVGVtcGxhdGVWYXJpYWJsZXM7XG4gICAgfVxuICAgIFxuICAgIC8vIFBhc3MgbmF0dXJhbCB0ZXh0IGFjdGlvbnMgb3B0aW9ucyBhbmQgdGVtcGxhdGUgdmFyaWFibGVzIGZ1bmN0aW9uIHRvIGNvbmRpdGlvbiBzdGVwc1xuICAgIGlmIChpc0NvbmRpdGlvblN0ZXBDb25maWcodGhpcy5zdGVwKSkge1xuICAgICAgKGluc3RhbmNlIGFzIGFueSkubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucyA9IHRoaXMubmF0dXJhbFRleHRBY3Rpb25zT3B0aW9ucztcbiAgICAgIChpbnN0YW5jZSBhcyBhbnkpLnNldENvbmRpdGlvblRlbXBsYXRlVmFyaWFibGVzID0gdGhpcy5zZXRDb25kaXRpb25UZW1wbGF0ZVZhcmlhYmxlcztcbiAgICB9XG5cbiAgICB0aGlzLndpcmVPdXRwdXRzKGluc3RhbmNlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHdpcmVPdXRwdXRzKGluc3RhbmNlOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSBzdWJzY3JpcHRpb25zIG9uIHRoZSBpbnN0YW5jZSB0byBwcmV2ZW50IGR1cGxpY2F0ZXNcbiAgICBpZiAoIShpbnN0YW5jZSBhcyBhbnkpLl9jcWFTdWJzY3JpcHRpb25zKSB7XG4gICAgICAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbnMgPSAoaW5zdGFuY2UgYXMgYW55KS5fY3FhU3Vic2NyaXB0aW9ucztcbiAgICBcbiAgICBjb25zdCB3aXJlID0gKGtleTogc3RyaW5nLCBlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PikgPT4ge1xuICAgICAgaWYgKGluc3RhbmNlW2tleV0gJiYgdHlwZW9mIGluc3RhbmNlW2tleV0uc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gcHJldmlvdXMgc3Vic2NyaXB0aW9uIGlmIGV4aXN0c1xuICAgICAgICBjb25zdCBleGlzdGluZ1N1YiA9IHN1YnNjcmlwdGlvbnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICAgIGV4aXN0aW5nU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgc3Vic2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGluc3RhbmNlW2tleV0uc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgICAgICBlbWl0dGVyLmVtaXQodik7XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJzY3JpcHRpb25zLnNldChrZXksIHN1YnNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aXJlKCduZXN0ZWRTdGVwQ2hhbmdlJywgdGhpcy5uZXN0ZWRTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2JyYW5jaCcgaW4gdikgdGhpcy5hZGRTdGVwRm9yQnJhbmNoLmVtaXQodik7XG4gICAgICAgIGVsc2UgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ2xvb3BTdGVwQ29uZmlnJyBpbiB2KSB0aGlzLmFkZFN0ZXBGb3JMb29wLmVtaXQodik7XG4gICAgICAgIGVsc2UgdGhpcy5hZGRTdGVwLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdkZWxldGVTdGVwJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnYnJhbmNoJyBpbiB2ICYmICdzdGVwSW5kZXgnIGluIHYpIHRoaXMuZGVsZXRlU3RlcFdpdGhCcmFuY2guZW1pdCh2KTtcbiAgICAgICAgZWxzZSB0aGlzLmRlbGV0ZVN0ZXAuZW1pdCh2KTtcbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ3RvZ2dsZUV4cGFuZGVkJywge1xuICAgICAgZW1pdDogKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgYm90aCBib29sZWFuIGFuZCBvYmplY3QgZm9ybWF0c1xuICAgICAgICAvLyBJZiBpdCdzIGFuIG9iamVjdCB3aXRoIGNvbmZpZyBhbmQgZXhwYW5kZWQsIGVtaXQgaXQgYXMtaXNcbiAgICAgICAgLy8gSWYgaXQncyBqdXN0IGEgYm9vbGVhbiwgZW1pdCBpdCBhcy1pc1xuICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkLmVtaXQodik7XG4gICAgICB9LFxuICAgIH0gYXMgYW55KTtcbiAgICB3aXJlKCdncm91cE5hbWVDaGFuZ2UnLCB0aGlzLmdyb3VwTmFtZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2Rlc2NyaXB0aW9uQ2hhbmdlJywgdGhpcy5kZXNjcmlwdGlvbkNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ3JldXNhYmxlQ2hhbmdlJywgdGhpcy5yZXVzYWJsZUNoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ29wZW5FeHRlcm5hbCcsIHRoaXMub3BlbkV4dGVybmFsIGFzIGFueSk7XG4gICAgd2lyZSgnZWRpdCcsIHtcbiAgICAgIGVtaXQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGVtaXRzIHZvaWQgb3Igbm90aGluZywgdXNlIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgLy8gSWYgY2hpbGQgY29tcG9uZW50IGFscmVhZHkgZW1pdHMgYW4gb2JqZWN0LCBtZXJnZSBpdCB3aXRoIHN0ZXAgYW5kIGluZGV4XG4gICAgICAgIGlmICh2ICE9IG51bGwgJiYgdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICdzdGVwJyBpbiB2ICYmICdpbmRleCcgaW4gdikge1xuICAgICAgICAgIC8vIEFscmVhZHkgaGFzIHN0ZXAgYW5kIGluZGV4LCBlbWl0IGFzLWlzXG4gICAgICAgICAgdGhpcy5lZGl0LmVtaXQodik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRW1pdCB3aXRoIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgICB0aGlzLmVkaXQuZW1pdCh7IHN0ZXA6IHRoaXMuc3RlcCwgaW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSBhcyBhbnkpO1xuICAgIHdpcmUoJ2xpbmsnLCB0aGlzLmxpbmsgYXMgYW55KTtcbiAgICB3aXJlKCdkdXBsaWNhdGUnLCB0aGlzLmR1cGxpY2F0ZSBhcyBhbnkpO1xuICAgIC8vIFdpcmUgZGVsZXRlIGV2ZW50IC0gaW50ZXJjZXB0IGFuZCBlbWl0IHdpdGggc3RlcCBkYXRhIChmb3J3YXJkIHBheWxvYWQgd2hlbiBjaGlsZCBlbWl0cyB7IHN0ZXAgfSBmb3IgbmVzdGVkIGRlbGV0ZXMpXG4gICAgaWYgKGluc3RhbmNlLmRlbGV0ZSAmJiB0eXBlb2YgaW5zdGFuY2UuZGVsZXRlLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnZGVsZXRlJyk7XG4gICAgICBpZiAoZXhpc3RpbmdTdWIpIHtcbiAgICAgICAgZXhpc3RpbmdTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlbGV0ZVN1YiA9IGluc3RhbmNlLmRlbGV0ZS5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5icmFuY2ggIT0gbnVsbCAmJiB0aGlzLmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZVN0ZXBXaXRoQnJhbmNoLmVtaXQoeyBicmFuY2g6IHRoaXMuYnJhbmNoLCBzdGVwSW5kZXg6IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2LnN0ZXApIHtcbiAgICAgICAgICB0aGlzLmRlbGV0ZS5lbWl0KHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoeyBzdGVwOiB0aGlzLnN0ZXAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc3Vic2NyaXB0aW9ucy5zZXQoJ2RlbGV0ZScsIGRlbGV0ZVN1Yik7XG4gICAgfVxuICAgIHdpcmUoJ3ZpZXdEZXRhaWxzJywgdGhpcy52aWV3RGV0YWlscyBhcyBhbnkpO1xuICAgIHdpcmUoJ3NlbGVjdGlvbkNoYW5nZScsIHRoaXMuc2VsZWN0aW9uQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnY29uZGl0aW9uQ2hhbmdlJywgdGhpcy5jb25kaXRpb25DaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdicmFuY2hTdGVwQ2hhbmdlJywgdGhpcy5icmFuY2hTdGVwQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEZvckJyYW5jaCcsIHRoaXMuYWRkU3RlcEZvckJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZVN0ZXBXaXRoQnJhbmNoJywgdGhpcy5kZWxldGVTdGVwV2l0aEJyYW5jaCBhcyBhbnkpO1xuICAgIHdpcmUoJ2FkZEJyYW5jaCcsIHRoaXMuYWRkQnJhbmNoIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkRWxzZScsIHRoaXMuYWRkRWxzZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2RlbGV0ZUJyYW5jaCcsIHRoaXMuZGVsZXRlQnJhbmNoIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEZvckxvb3AnLCB0aGlzLmFkZFN0ZXBGb3JMb29wIGFzIGFueSk7XG4gICAgd2lyZSgndGVzdERhdGFQcm9maWxlQ2hhbmdlJywgdGhpcy50ZXN0RGF0YVByb2ZpbGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdzdGFydFN0ZXBDaGFuZ2UnLCB0aGlzLnN0YXJ0U3RlcENoYW5nZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2VuZFN0ZXBDaGFuZ2UnLCB0aGlzLmVuZFN0ZXBDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdtYXhJdGVyYXRpb25zQ2hhbmdlJywgdGhpcy5tYXhJdGVyYXRpb25zQ2hhbmdlIGFzIGFueSk7XG4gICAgd2lyZSgnZXZlbnRUeXBlQ2hhbmdlJywgdGhpcy5ldmVudFR5cGVDaGFuZ2UgYXMgYW55KTtcbiAgICB3aXJlKCdwYXJhbWV0ZXJDaGFuZ2UnLCB0aGlzLnBhcmFtZXRlckNoYW5nZSBhcyBhbnkpO1xuICAgIC8vIFdpcmUgY2xpY2tBY3Rpb24gLSB3cmFwIE1vdXNlRXZlbnQgd2l0aCBzdGVwIGRhdGFcbiAgICBpZiAoaW5zdGFuY2UuY2xpY2tBY3Rpb24gJiYgdHlwZW9mIGluc3RhbmNlLmNsaWNrQWN0aW9uLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnY2xpY2tBY3Rpb24nKTtcbiAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICBleGlzdGluZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpY2tBY3Rpb25TdWIgPSBpbnN0YW5jZS5jbGlja0FjdGlvbi5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgZW1pdHMgYW4gb2JqZWN0IHdpdGggZXZlbnQgYW5kIHN0ZXAsIHVzZSBpdDsgb3RoZXJ3aXNlIHdyYXAgTW91c2VFdmVudCB3aXRoIGN1cnJlbnQgc3RlcFxuICAgICAgICBpZiAodiAhPSBudWxsICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAnZXZlbnQnIGluIHYgJiYgJ3N0ZXAnIGluIHYpIHtcbiAgICAgICAgICB0aGlzLmNsaWNrQWN0aW9uLmVtaXQodik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQXNzdW1lIHYgaXMgYSBNb3VzZUV2ZW50LCB3cmFwIGl0IHdpdGggY3VycmVudCBzdGVwXG4gICAgICAgICAgdGhpcy5jbGlja0FjdGlvbi5lbWl0KHsgZXZlbnQ6IHYgYXMgTW91c2VFdmVudCwgc3RlcDogdGhpcy5zdGVwIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHN1YnNjcmlwdGlvbnMuc2V0KCdjbGlja0FjdGlvbicsIGNsaWNrQWN0aW9uU3ViKTtcbiAgICB9XG4gICAgd2lyZSgnZG5kRHJvcEluWm9uZScsIHRoaXMuZG5kRHJvcEluWm9uZSBhcyBhbnkpO1xuICAgIHdpcmUoJ2xvYWRNb3JlRGF0YVByb2ZpbGVzJywgdGhpcy5sb2FkTW9yZURhdGFQcm9maWxlcyBhcyBhbnkpO1xuICAgIHdpcmUoJ3NlYXJjaERhdGFQcm9maWxlcycsIHRoaXMuc2VhcmNoRGF0YVByb2ZpbGVzIGFzIGFueSk7XG4gICAgd2lyZSgnYWRkU3RlcEJldHdlZW5DbGljaycsIHRoaXMuYWRkU3RlcEJldHdlZW5DbGljayBhcyBhbnkpO1xuICAgIC8vIFdpcmUgZWRpdEluRGVwdGggLSBjaGVjayBpZiBpdCBleGlzdHMgb24gaW5zdGFuY2VcbiAgICBpZiAoaW5zdGFuY2UuZWRpdEluRGVwdGggJiYgdHlwZW9mIGluc3RhbmNlLmVkaXRJbkRlcHRoLnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZXhpc3RpbmdTdWIgPSBzdWJzY3JpcHRpb25zLmdldCgnZWRpdEluRGVwdGgnKTtcbiAgICAgIGlmIChleGlzdGluZ1N1Yikge1xuICAgICAgICBleGlzdGluZ1N1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgZWRpdEluRGVwdGhTdWIgPSBpbnN0YW5jZS5lZGl0SW5EZXB0aC5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgICAvLyBJZiBjaGlsZCBjb21wb25lbnQgZW1pdHMgYW4gb2JqZWN0IHdpdGggc3RlcCwgdXNlIGl0OyBvdGhlcndpc2UgdXNlIGN1cnJlbnQgc3RlcCBhbmQgaW5kZXhcbiAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgJ3N0ZXAnIGluIHYpIHtcbiAgICAgICAgICB0aGlzLmVkaXRJbkRlcHRoLmVtaXQoeyBzdGVwOiB2LnN0ZXAsIGluZGV4OiB2LmluZGV4ID8/IHRoaXMuaW5kZXggfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lZGl0SW5EZXB0aC5lbWl0KHsgc3RlcDogdGhpcy5zdGVwLCBpbmRleDogdGhpcy5pbmRleCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBzdWJzY3JpcHRpb25zLnNldCgnZWRpdEluRGVwdGgnLCBlZGl0SW5EZXB0aFN1Yik7XG4gICAgfVxuICAgIC8vIFdpcmUgc3RlcFVwZGF0ZSAtIGNoZWNrIGlmIGl0IGV4aXN0cyBvbiBpbnN0YW5jZVxuICAgIGlmIChpbnN0YW5jZS5zdGVwVXBkYXRlKSB7XG4gICAgICBjb25zb2xlLmxvZygnUmVuZGVyZXI6IEZvdW5kIHN0ZXBVcGRhdGUgRXZlbnRFbWl0dGVyLCB3aXJpbmcgaXQnKTtcbiAgICAgIHdpcmUoJ3N0ZXBVcGRhdGUnLCB0aGlzLnN0ZXBVcGRhdGUgYXMgYW55KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdSZW5kZXJlcjogc3RlcFVwZGF0ZSBFdmVudEVtaXR0ZXIgbm90IGZvdW5kIG9uIGluc3RhbmNlIGR1cmluZyB3aXJlT3V0cHV0cycsIHtcbiAgICAgICAgc3RlcElkOiB0aGlzLnN0ZXA/LmlkLFxuICAgICAgICBzdGVwVHlwZTogdGhpcy5zdGVwPy5zdGVwVHlwZSxcbiAgICAgICAgaW5zdGFuY2VLZXlzOiBPYmplY3Qua2V5cyhpbnN0YW5jZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbnMgd2hlbiBjb21wb25lbnQgaXMgZGVzdHJveWVkXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9ICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBhbnkpLl9jcWFTdWJzY3JpcHRpb25zO1xuICAgICAgaWYgKHN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWI6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChzdWIgJiYgdHlwZW9mIHN1Yi51bnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5jbGVhcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS1zdGVwLXJlbmRlcmVyLWhvdmVyLWNvbnRhaW5lclwiPlxuICAgIDxidXR0b24gKm5nSWY9XCIhaXNSZW9yZGVyICYmIChhZGRTdGVwQmV0d2VlbkFib3ZlICYmIGFkZFN0ZXBCZXR3ZWVuKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS10b3AtW2NhbGMoMCAtIDEycHgpXSBjcWEtbGVmdC1bNTAlXSBjcWEtdHJhbnNsYXRlLXgtWy01MCVdIGNxYS1wLTAgY3FhLXotWzFdIGNxYS1hZGQtc3RlcC1iZXR3ZWVuLWJ0blwiXG4gICAgICAgIHN0eWxlPVwidG9wOiAtMTJweDtcIiAoY2xpY2spPVwiYWRkU3RlcEJldHdlZW5DbGljay5lbWl0KHtzdGVwOiBzdGVwLCBpbmRleDogaW5kZXgsIHBvc2l0aW9uOiAnQUJPVkUnfSlcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTJIMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4LjVWMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXN0ZXAtaG9zdC13cmFwcGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3N0ZXBIb3N0PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gKm5nSWY9XCIhaXNSZW9yZGVyICYmIChhZGRTdGVwQmV0d2VlbkJlbG93ICYmIGFkZFN0ZXBCZXR3ZWVuKVwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS10b3AtW2NhbGMoMTAwJS0xMnB4KV0gY3FhLWxlZnQtWzUwJV0gY3FhLXRyYW5zbGF0ZS14LVstNTAlXSBjcWEtcC0wIGNxYS16LVsxXSBjcWEtYWRkLXN0ZXAtYmV0d2Vlbi1idG5cIlxuICAgICAgICAoY2xpY2spPVwiYWRkU3RlcEJldHdlZW5DbGljay5lbWl0KHtzdGVwOiBzdGVwLCBpbmRleDogaW5kZXgsIHBvc2l0aW9uOiAnQkVMT1cnfSlcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMVwiIHk9XCIxXCIgd2lkdGg9XCIyMS4xODIyXCIgaGVpZ2h0PVwiMjJcIiByeD1cIjEwLjU5MTFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjFcIiB5PVwiMVwiIHdpZHRoPVwiMjEuMTgyMlwiIGhlaWdodD1cIjIyXCIgcng9XCIxMC41OTExXCIgc3Ryb2tlPVwiIzNGNDNFRVwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk04LjUgMTJIMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4LjVWMTUuNVwiIHN0cm9rZT1cIiMzRjQzRUVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
|
|
@@ -120,10 +120,10 @@ export class TestCaseDetailsComponent {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
TestCaseDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseDetailsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
-
TestCaseDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseDetailsComponent, selector: "cqa-test-case-details", inputs: { editing: "editing", startInEditMode: "startInEditMode", descriptionTitle: "descriptionTitle", descriptionContent: "descriptionContent", enableMarkdown: "enableMarkdown", showEditButton: "showEditButton", metadataItems: "metadataItems", labels: "labels", configTitle: "configTitle", configSections: "configSections", configSectionsRow2: "configSectionsRow2", platform: "platform", isStepGroup: "isStepGroup", selectConfigOverrides: "selectConfigOverrides" }, outputs: { editDescription: "editDescription", cancel: "cancel", saveChanges: "saveChanges", metadataLinkClick: "metadataLinkClick", selectSearch: "selectSearch", selectLoadMore: "selectLoadMore", selectOpened: "selectOpened", selectionChange: "selectionChange", labelAdded: "labelAdded" }, ngImport: i0, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [isStepGroup]=\"isStepGroup\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"filteredMetadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-x-0 cqa-gap-y-4\">\n <ng-container *ngFor=\"let item of filteredMetadataItems; trackBy: trackByMetadataLabel\">\n <div class=\"cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-0.5\">\n <div class=\"cqa-text-[#6B7280] cqa-text-xs cqa-leading-[15px] cqa-font-medium\">{{ item.label }}</div>\n <div\n class=\"cqa-flex cqa-justify-start cqa-items-center cqa-gap-[5px] cqa-min-w-0 cqa-w-full cqa-text-left cqa-text-[#0A0A0A] cqa-border cqa-border-[#F5F5F5]\">\n <mat-icon *ngIf=\"item.icon && (!item.iconLibrary || item.iconLibrary === 'mat')\" class=\"cqa-text-[#6B7280] cqa-text-sm cqa-w-4 cqa-h-4\">\n {{ item.icon }}\n </mat-icon>\n <span *ngIf=\"item.statusColor\" class=\"cqa-w-
|
|
123
|
+
TestCaseDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestCaseDetailsComponent, selector: "cqa-test-case-details", inputs: { editing: "editing", startInEditMode: "startInEditMode", descriptionTitle: "descriptionTitle", descriptionContent: "descriptionContent", enableMarkdown: "enableMarkdown", showEditButton: "showEditButton", metadataItems: "metadataItems", labels: "labels", configTitle: "configTitle", configSections: "configSections", configSectionsRow2: "configSectionsRow2", platform: "platform", isStepGroup: "isStepGroup", selectConfigOverrides: "selectConfigOverrides" }, outputs: { editDescription: "editDescription", cancel: "cancel", saveChanges: "saveChanges", metadataLinkClick: "metadataLinkClick", selectSearch: "selectSearch", selectLoadMore: "selectLoadMore", selectOpened: "selectOpened", selectionChange: "selectionChange", labelAdded: "labelAdded" }, ngImport: i0, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [isStepGroup]=\"isStepGroup\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"filteredMetadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-x-0 cqa-gap-y-4\">\n <ng-container *ngFor=\"let item of filteredMetadataItems; trackBy: trackByMetadataLabel\">\n <div class=\"cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-0.5\">\n <div class=\"cqa-text-[#6B7280] cqa-text-xs cqa-leading-[15px] cqa-font-medium\">{{ item.label }}</div>\n <div\n class=\"cqa-flex cqa-justify-start cqa-items-center cqa-gap-[5px] cqa-min-w-0 cqa-w-full cqa-text-left cqa-text-[#0A0A0A] cqa-border cqa-border-[#F5F5F5]\">\n <mat-icon *ngIf=\"item.icon && (!item.iconLibrary || item.iconLibrary === 'mat')\" class=\"cqa-text-[#6B7280] cqa-text-sm cqa-w-4 cqa-h-4\">\n {{ item.icon }}\n </mat-icon>\n <span *ngIf=\"item.statusColor\" class=\"cqa-w-[10px] cqa-h-[10px] cqa-rounded-full cqa-flex-shrink-0\" [ngClass]=\"getStatusDotClass(item)\"></span>\n <a\n *ngIf=\"item.link\"\n href=\"javascript:void(0)\"\n class=\"cqa-text-[#2563EB] cqa-text-xs cqa-leading-[12px] cqa-font-normal hover:cqa-underline cqa-cursor-pointer cqa-block cqa-truncate cqa-min-w-0\"\n (click)=\"onMetadataLinkClick(item); $event.preventDefault()\">\n {{ item.value }}\n </a>\n <span *ngIf=\"!item.link\" class=\"cqa-text-xs cqa-leading-[12px] cqa-font-normal cqa-align-middle\" [ngClass]=\"getValueTextClass(item)\">\n {{ item.value }}\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Labels (Figma: Labels title, cqa-badge chips with tag icon) -->\n <div *ngIf=\"labels.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2 cqa-text-sm cqa-leading-[19.6px]\">\n <span class=\"cqa-text-[#111827] cqa-text-sm cqa-font-medium cqa-leading-5\">Labels</span>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge\n *ngFor=\"let label of labels\"\n [label]=\"label\"\n icon=\"label\"\n variant=\"outline\"\n size=\"small\"\n backgroundColor=\"#ffffff\"\n textColor=\"#475569\"\n borderColor=\"#E2E8F0\"\n iconColor=\"#94A3B8\">\n </cqa-badge>\n </div>\n </div>\n\n <!-- Configuration Section -->\n <div *ngIf=\"configSections.length || configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-start cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">settings</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ configTitle }}</span>\n </div>\n </div>\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-1 cqa-gap-2.5\">\n <ng-container *ngFor=\"let section of configSections; trackBy: trackByConfigTitle\">\n <cqa-configuration-card\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </ng-container>\n </div>\n <div *ngIf=\"configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <cqa-configuration-card\n *ngFor=\"let section of configSectionsRow2; trackBy: trackByConfigTitle\"\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </div>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: i1.TestCaseDetailsEditComponent, selector: "cqa-test-case-details-edit", inputs: ["descriptionTitle", "descriptionContent", "enableMarkdown", "metadataItems", "labels", "configTitle", "configSections", "configSectionsRow2", "prerequisiteCaseOptions", "platform", "isStepGroup", "selectConfigOverrides"], outputs: ["save", "cancel", "selectSearch", "selectLoadMore", "selectOpened", "selectionChange", "labelAdded"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading"] }, { type: i4.ConfigurationCardComponent, selector: "cqa-configuration-card", inputs: ["icon", "title", "data"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
124
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestCaseDetailsComponent, decorators: [{
|
|
125
125
|
type: Component,
|
|
126
|
-
args: [{ selector: 'cqa-test-case-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [isStepGroup]=\"isStepGroup\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"filteredMetadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-x-0 cqa-gap-y-4\">\n <ng-container *ngFor=\"let item of filteredMetadataItems; trackBy: trackByMetadataLabel\">\n <div class=\"cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-0.5\">\n <div class=\"cqa-text-[#6B7280] cqa-text-xs cqa-leading-[15px] cqa-font-medium\">{{ item.label }}</div>\n <div\n class=\"cqa-flex cqa-justify-start cqa-items-center cqa-gap-[5px] cqa-min-w-0 cqa-w-full cqa-text-left cqa-text-[#0A0A0A] cqa-border cqa-border-[#F5F5F5]\">\n <mat-icon *ngIf=\"item.icon && (!item.iconLibrary || item.iconLibrary === 'mat')\" class=\"cqa-text-[#6B7280] cqa-text-sm cqa-w-4 cqa-h-4\">\n {{ item.icon }}\n </mat-icon>\n <span *ngIf=\"item.statusColor\" class=\"cqa-w-
|
|
126
|
+
args: [{ selector: 'cqa-test-case-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Edit mode: show edit form (Figma design) -->\n<cqa-test-case-details-edit\n *ngIf=\"isEditing\"\n [descriptionTitle]=\"descriptionTitle\"\n [descriptionContent]=\"descriptionContent\"\n [enableMarkdown]=\"enableMarkdown\"\n [metadataItems]=\"metadataItems\"\n [labels]=\"labels\"\n [configTitle]=\"configTitle\"\n [configSections]=\"configSections\"\n [configSectionsRow2]=\"configSectionsRow2\"\n [platform]=\"platform\"\n [isStepGroup]=\"isStepGroup\"\n [selectConfigOverrides]=\"selectConfigOverrides\"\n (save)=\"onSaveChanges($event)\"\n (cancel)=\"onCancelEdit()\"\n (selectSearch)=\"selectSearch.emit($event)\"\n (selectLoadMore)=\"selectLoadMore.emit($event)\"\n (selectOpened)=\"selectOpened.emit($event)\"\n (selectionChange)=\"selectionChange.emit($event)\"\n (labelAdded)=\"labelAdded.emit($event)\">\n</cqa-test-case-details-edit>\n\n<!-- View mode: read-only details -->\n<div *ngIf=\"!isEditing\" class=\"cqa-self-stretch cqa-py-4 cqa-px-0 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <!-- Description Section -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-between cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">description</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ descriptionTitle }}</span>\n </div>\n <button\n *ngIf=\"showEditButton\"\n type=\"button\"\n class=\"cqa-flex cqa-justify-end cqa-items-center cqa-gap-2 cqa-text-[#A3A3A3] cqa-text-xs cqa-font-semibold hover:cqa-text-[#737373] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onEditClick()\">\n <mat-icon class=\"cqa-text-[14px] cqa-w-4 cqa-h-4\">edit</mat-icon>\n Edit\n </button>\n </div>\n <div *ngIf=\"descriptionContent\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div *ngIf=\"enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal cqa-prose cqa-prose-sm cqa-max-w-none\" [innerHTML]=\"descriptionContent\"></div>\n <div *ngIf=\"!enableMarkdown\" class=\"cqa-self-stretch cqa-text-[#111827] cqa-text-sm cqa-leading-[19.6px] cqa-font-normal\">{{ descriptionContent }}</div>\n </div>\n </div>\n\n <!-- Metadata Section -->\n <div *ngIf=\"filteredMetadataItems.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-2 cqa-gap-x-0 cqa-gap-y-4\">\n <ng-container *ngFor=\"let item of filteredMetadataItems; trackBy: trackByMetadataLabel\">\n <div class=\"cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-0.5\">\n <div class=\"cqa-text-[#6B7280] cqa-text-xs cqa-leading-[15px] cqa-font-medium\">{{ item.label }}</div>\n <div\n class=\"cqa-flex cqa-justify-start cqa-items-center cqa-gap-[5px] cqa-min-w-0 cqa-w-full cqa-text-left cqa-text-[#0A0A0A] cqa-border cqa-border-[#F5F5F5]\">\n <mat-icon *ngIf=\"item.icon && (!item.iconLibrary || item.iconLibrary === 'mat')\" class=\"cqa-text-[#6B7280] cqa-text-sm cqa-w-4 cqa-h-4\">\n {{ item.icon }}\n </mat-icon>\n <span *ngIf=\"item.statusColor\" class=\"cqa-w-[10px] cqa-h-[10px] cqa-rounded-full cqa-flex-shrink-0\" [ngClass]=\"getStatusDotClass(item)\"></span>\n <a\n *ngIf=\"item.link\"\n href=\"javascript:void(0)\"\n class=\"cqa-text-[#2563EB] cqa-text-xs cqa-leading-[12px] cqa-font-normal hover:cqa-underline cqa-cursor-pointer cqa-block cqa-truncate cqa-min-w-0\"\n (click)=\"onMetadataLinkClick(item); $event.preventDefault()\">\n {{ item.value }}\n </a>\n <span *ngIf=\"!item.link\" class=\"cqa-text-xs cqa-leading-[12px] cqa-font-normal cqa-align-middle\" [ngClass]=\"getValueTextClass(item)\">\n {{ item.value }}\n </span>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Labels (Figma: Labels title, cqa-badge chips with tag icon) -->\n <div *ngIf=\"labels.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2 cqa-text-sm cqa-leading-[19.6px]\">\n <span class=\"cqa-text-[#111827] cqa-text-sm cqa-font-medium cqa-leading-5\">Labels</span>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge\n *ngFor=\"let label of labels\"\n [label]=\"label\"\n icon=\"label\"\n variant=\"outline\"\n size=\"small\"\n backgroundColor=\"#ffffff\"\n textColor=\"#475569\"\n borderColor=\"#E2E8F0\"\n iconColor=\"#94A3B8\">\n </cqa-badge>\n </div>\n </div>\n\n <!-- Configuration Section -->\n <div *ngIf=\"configSections.length || configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-inline-flex cqa-justify-start cqa-items-center\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div class=\"cqa-w-5 cqa-h-5 cqa-p-1 cqa-flex-shrink-0 cqa-bg-[#3F43EE1A] cqa-rounded-md cqa-inline-flex cqa-justify-center cqa-items-center\">\n <mat-icon class=\"cqa-text-[#1B1FEB] cqa-text-[12px] cqa-w-3 cqa-h-3 cqa-leading-none cqa-block\">settings</mat-icon>\n </div>\n <span class=\"cqa-text-[#374151] cqa-text-sm cqa-font-semibold cqa-leading-[19.6px]\">{{ configTitle }}</span>\n </div>\n </div>\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-2.5\">\n <div class=\"cqa-self-stretch cqa-grid cqa-grid-cols-1 cqa-gap-2.5\">\n <ng-container *ngFor=\"let section of configSections; trackBy: trackByConfigTitle\">\n <cqa-configuration-card\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </ng-container>\n </div>\n <div *ngIf=\"configSectionsRow2.length\" class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-gap-4 cqa-text-sm cqa-leading-[19.6px]\">\n <cqa-configuration-card\n *ngFor=\"let section of configSectionsRow2; trackBy: trackByConfigTitle\"\n [icon]=\"section.icon || 'tune'\"\n [title]=\"section.title\"\n [data]=\"section.items\">\n </cqa-configuration-card>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [] }]
|
|
127
127
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { editing: [{
|
|
128
128
|
type: Input
|
|
129
129
|
}], startInEditMode: [{
|
|
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
171
171
|
}], labelAdded: [{
|
|
172
172
|
type: Output
|
|
173
173
|
}] } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEdBR3hCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBZ0J2QixNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZDFDLDJEQUEyRDtRQUNuRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS3pCLDREQUE0RDtRQUNuRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQWNqQyxnQ0FBZ0M7UUFDdkIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO1FBRTFDLCtCQUErQjtRQUN0Qix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFakMsc0ZBQXNGO1FBQzdFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWhDLGdFQUFnRTtRQUN2RCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVoQyw2RkFBNkY7UUFDcEYsa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBRTNELHFEQUFxRDtRQUM1QyxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRS9CLGtDQUFrQztRQUN6QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztRQUV2QyxnRUFBZ0U7UUFDdkQsbUJBQWMsR0FBbUMsRUFBRSxDQUFDO1FBRTdELDBGQUEwRjtRQUNqRix1QkFBa0IsR0FBbUMsRUFBRSxDQUFDO1FBQ2pFLHVGQUF1RjtRQUM5RSxhQUFRLEdBQXFCLEtBQUssQ0FBQztRQUU1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QUs7Z0JBZUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlRGV0YWlsc0NvbmZpZ1NlY3Rpb24sXG4gIFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSxcbn0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy5tb2RlbHMnO1xuaW1wb3J0IHtcbiAgVGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhLFxuICBTZWxlY3RDb25maWdPdmVycmlkZXMsXG59IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMtZWRpdC90ZXN0LWNhc2UtZGV0YWlscy1lZGl0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogSW50ZXJuYWwgZWRpdGluZyBzdGF0ZSB3aGVuIG5vdCBjb250cm9sbGVkIGJ5IHBhcmVudCAqL1xuICBwcml2YXRlIF9lZGl0aW5nID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gcHJvdmlkZWQgYnkgcGFyZW50LCB1c2UgdGhpcyBpbnN0ZWFkIG9mIGludGVybmFsIHN0YXRlIChmaXhlcyBTdG9yeWJvb2sgZXZlbnQgZmxvdykuICovXG4gIEBJbnB1dCgpIGVkaXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKiBXaGVuIHRydWUsIHN0YXJ0IGluIGVkaXQgbW9kZSAodXNlZnVsIGZvciBTdG9yeWJvb2spLiAqL1xuICBASW5wdXQoKSBzdGFydEluRWRpdE1vZGUgPSBmYWxzZTtcblxuICAvKiogUmVzb2x2ZWQgZWRpdGluZyBzdGF0ZTogcGFyZW50LWNvbnRyb2xsZWQgb3IgaW50ZXJuYWwgKi9cbiAgZ2V0IGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmVkaXRpbmcgOiB0aGlzLl9lZGl0aW5nO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXJ0SW5FZGl0TW9kZSkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7XG4gICAgfVxuICB9XG4gIC8qKiBEZXNjcmlwdGlvbiBzZWN0aW9uIHRpdGxlICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uVGl0bGUgPSAnRGVzY3JpcHRpb24nO1xuXG4gIC8qKiBEZXNjcmlwdGlvbiB0ZXh0IGNvbnRlbnQgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb25Db250ZW50ID0gJyc7XG5cbiAgLyoqIFdoZW4gdHJ1ZSwgZGVzY3JpcHRpb24gc3VwcG9ydHMgcmljaCB0ZXh0IChIVE1MKS4gUmVuZGVycyBhcyBIVE1MIGluIHZpZXcgbW9kZS4gKi9cbiAgQElucHV0KCkgZW5hYmxlTWFya2Rvd24gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBFZGl0IGJ1dHRvbiBpbiB0aGUgRGVzY3JpcHRpb24gaGVhZGVyICovXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIE1ldGFkYXRhIGl0ZW1zIChjcmVhdGVkT24sIHN0YXR1cywgcHJpb3JpdHksIGVudmlyb25tZW50LCB2ZXJzaW9uLCB0ZXN0UGxhbk5hbWUsIGV0Yy4pICovXG4gIEBJbnB1dCgpIG1ldGFkYXRhSXRlbXM6IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbVtdID0gW107XG5cbiAgLyoqIExhYmVscy90YWdzIChlLmcuIEF1dG9tYXRpb24sIEFQSSwgU0RLLCBVSS9VWCkgKi9cbiAgQElucHV0KCkgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGl0bGUgKi9cbiAgQElucHV0KCkgY29uZmlnVGl0bGUgPSAnQ29uZmlndXJhdGlvbic7XG5cbiAgLyoqIENvbmZpZ3VyYXRpb24gc2VjdGlvbnMgKGUuZy4gRXhlY3V0aW9uLCBBSSBDb25maWd1cmF0aW9uKSAqL1xuICBASW5wdXQoKSBjb25maWdTZWN0aW9uczogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG5cbiAgLyoqIE9wdGlvbmFsIGNvbmZpZyBzZWN0aW9ucyBkaXNwbGF5ZWQgaW4gYSAyLWNvbHVtbiByb3cgKGUuZy4gV2FpdHMgJiBSZXRyaWVzLCBEZXZpY2UpICovXG4gIEBJbnB1dCgpIGNvbmZpZ1NlY3Rpb25zUm93MjogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG4gIC8qKiBQbGF0Zm9ybTogJ3dlYicgb3IgJ21vYmlsZScuIERlZmF1bHRzIHRvICd3ZWInLiBVc2VkIGZvciBEZXZpY2UgU2V0dGluZ3MgZmllbGRzLiAqL1xuICBASW5wdXQoKSBwbGF0Zm9ybTogJ3dlYicgfCAnbW9iaWxlJyA9ICd3ZWInO1xuXG4gIC8qKiBXaGVuIHRydWUsIGZpbHRlcnMgb3V0IFByaW9yaXR5IGFuZCBUeXBlIGZyb20gbWV0YWRhdGEgKHN0ZXAgZ3JvdXBzIGRvbid0IGhhdmUgdGhlc2UpLiBEZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgQElucHV0KCkgaXNTdGVwR3JvdXAgPSBmYWxzZTtcblxuICAvKiogT3ZlcnJpZGUgY29uZmlnIHBlciBzZWxlY3QgZm9yIEFQSS1kcml2ZW4gb3B0aW9ucywgc2VydmVyIHNlYXJjaCwgbG9hZCBtb3JlLiAqL1xuICBASW5wdXQoKSBzZWxlY3RDb25maWdPdmVycmlkZXM6IFNlbGVjdENvbmZpZ092ZXJyaWRlcyA9IHt9O1xuXG4gIC8qKiBMYWJlbHMgdG8gZmlsdGVyIG91dCBmcm9tIG1ldGFkYXRhIGZvciBzdGVwIGdyb3VwcyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN0ZXBHcm91cEV4Y2x1ZGVkTWV0YWRhdGFMYWJlbHMgPSBbJ3ByaW9yaXR5JywgJ3R5cGUnXTtcblxuICAvKiogRmlsdGVyZWQgbWV0YWRhdGEgaXRlbXMgLSBleGNsdWRlcyBQcmlvcml0eSBhbmQgVHlwZSBmb3Igc3RlcCBncm91cHMgKi9cbiAgZ2V0IGZpbHRlcmVkTWV0YWRhdGFJdGVtcygpOiBUZXN0Q2FzZURldGFpbHNNZXRhZGF0YUl0ZW1bXSB7XG4gICAgaWYgKCF0aGlzLmlzU3RlcEdyb3VwKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXRhZGF0YUl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tZXRhZGF0YUl0ZW1zLmZpbHRlcihcbiAgICAgIChpdGVtKSA9PiAhdGhpcy5zdGVwR3JvdXBFeGNsdWRlZE1ldGFkYXRhTGFiZWxzLmluY2x1ZGVzKGl0ZW0ubGFiZWw/LnRvTG93ZXJDYXNlKCkgPz8gJycpXG4gICAgKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlZGl0RGVzY3JpcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8VGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhPigpO1xuICBAT3V0cHV0KCkgbWV0YWRhdGFMaW5rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdFNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgcXVlcnk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0TG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmcgfT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdE9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9PigpO1xuICBAT3V0cHV0KCkgbGFiZWxBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIG9uRWRpdENsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2F2ZUNoYW5nZXMoZGF0YTogVGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNhdmVDaGFuZ2VzLmVtaXQoZGF0YSk7XG4gIH1cblxuICBvbkNhbmNlbEVkaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIGlmICh0aGlzLmVkaXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0cmFja0J5Q29uZmlnVGl0bGUoX2k6IG51bWJlciwgc2VjdGlvbjogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlY3Rpb24udGl0bGU7XG4gIH1cblxuICB0cmFja0J5TWV0YWRhdGFMYWJlbChfaTogbnVtYmVyLCBpdGVtOiBUZXN0Q2FzZURldGFpbHNNZXRhZGF0YUl0ZW0pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICB9XG5cblxuICBvbk1ldGFkYXRhTGlua0NsaWNrKGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmxpbmspIHtcbiAgICAgIHRoaXMubWV0YWRhdGFMaW5rQ2xpY2suZW1pdChpdGVtKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXNEb3RDbGFzcyhpdGVtOiBUZXN0Q2FzZURldGFpbHNNZXRhZGF0YUl0ZW0pOiBzdHJpbmcge1xuICAgIGlmICghaXRlbS5zdGF0dXNDb2xvcikgcmV0dXJuICcnO1xuICAgIHN3aXRjaCAoaXRlbS5zdGF0dXNDb2xvcikge1xuICAgICAgY2FzZSAneWVsbG93JzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNFQUIzMDhdJztcbiAgICAgIGNhc2UgJ3JlZCc6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjREMyNjI2XSc7XG4gICAgICBjYXNlICdncmVlbic6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjMTZBMzRBXSc7XG4gICAgICBjYXNlICdncmF5JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjOTRBM0I4XSc7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRleHQgY29sb3IgZm9yIG1ldGFkYXRhIHZhbHVlIChlLmcuIHJlZCBmb3IgY3JpdGljYWwgcHJpb3JpdHkpICovXG4gIGdldFZhbHVlVGV4dENsYXNzKGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKGl0ZW0uc3RhdHVzQ29sb3IgPT09ICdyZWQnKSB7XG4gICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjREMyNjI2XSc7XG4gICAgfVxuICAgIHJldHVybiAnY3FhLXRleHQtWyMxMTE4MjddJztcbiAgfVxufVxuIiwiPCEtLSBFZGl0IG1vZGU6IHNob3cgZWRpdCBmb3JtIChGaWdtYSBkZXNpZ24pIC0tPlxuPGNxYS10ZXN0LWNhc2UtZGV0YWlscy1lZGl0XG4gICpuZ0lmPVwiaXNFZGl0aW5nXCJcbiAgW2Rlc2NyaXB0aW9uVGl0bGVdPVwiZGVzY3JpcHRpb25UaXRsZVwiXG4gIFtkZXNjcmlwdGlvbkNvbnRlbnRdPVwiZGVzY3JpcHRpb25Db250ZW50XCJcbiAgW2VuYWJsZU1hcmtkb3duXT1cImVuYWJsZU1hcmtkb3duXCJcbiAgW21ldGFkYXRhSXRlbXNdPVwibWV0YWRhdGFJdGVtc1wiXG4gIFtsYWJlbHNdPVwibGFiZWxzXCJcbiAgW2NvbmZpZ1RpdGxlXT1cImNvbmZpZ1RpdGxlXCJcbiAgW2NvbmZpZ1NlY3Rpb25zXT1cImNvbmZpZ1NlY3Rpb25zXCJcbiAgW2NvbmZpZ1NlY3Rpb25zUm93Ml09XCJjb25maWdTZWN0aW9uc1JvdzJcIlxuICBbcGxhdGZvcm1dPVwicGxhdGZvcm1cIlxuICBbaXNTdGVwR3JvdXBdPVwiaXNTdGVwR3JvdXBcIlxuICBbc2VsZWN0Q29uZmlnT3ZlcnJpZGVzXT1cInNlbGVjdENvbmZpZ092ZXJyaWRlc1wiXG4gIChzYXZlKT1cIm9uU2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gIChjYW5jZWwpPVwib25DYW5jZWxFZGl0KClcIlxuICAoc2VsZWN0U2VhcmNoKT1cInNlbGVjdFNlYXJjaC5lbWl0KCRldmVudClcIlxuICAoc2VsZWN0TG9hZE1vcmUpPVwic2VsZWN0TG9hZE1vcmUuZW1pdCgkZXZlbnQpXCJcbiAgKHNlbGVjdE9wZW5lZCk9XCJzZWxlY3RPcGVuZWQuZW1pdCgkZXZlbnQpXCJcbiAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgKGxhYmVsQWRkZWQpPVwibGFiZWxBZGRlZC5lbWl0KCRldmVudClcIj5cbjwvY3FhLXRlc3QtY2FzZS1kZXRhaWxzLWVkaXQ+XG5cbjwhLS0gVmlldyBtb2RlOiByZWFkLW9ubHkgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCIhaXNFZGl0aW5nXCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1weS00IGNxYS1weC0wIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC00IGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC00IGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+XG4gICAgPCEtLSBEZXNjcmlwdGlvbiBTZWN0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC0yLjVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1pbmxpbmUtZmxleCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS13LTUgY3FhLWgtNSBjcWEtcC0xIGNxYS1mbGV4LXNocmluay0wIGNxYS1iZy1bIzNGNDNFRTFBXSBjcWEtcm91bmRlZC1tZCBjcWEtaW5saW5lLWZsZXggY3FhLWp1c3RpZnktY2VudGVyIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsjMUIxRkVCXSBjcWEtdGV4dC1bMTJweF0gY3FhLXctMyBjcWEtaC0zIGNxYS1sZWFkaW5nLW5vbmUgY3FhLWJsb2NrXCI+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+e3sgZGVzY3JpcHRpb25UaXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWVuZCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtdGV4dC1bI0EzQTNBM10gY3FhLXRleHQteHMgY3FhLWZvbnQtc2VtaWJvbGQgaG92ZXI6Y3FhLXRleHQtWyM3MzczNzNdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMiBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLVsjM0Y0M0VFXSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0yXCJcbiAgICAgICAgICAoY2xpY2spPVwib25FZGl0Q2xpY2soKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtdy00IGNxYS1oLTRcIj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICBFZGl0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZGVzY3JpcHRpb25Db250ZW50XCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZU1hcmtkb3duXCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy1bMTkuNnB4XSBjcWEtZm9udC1ub3JtYWwgY3FhLXByb3NlIGNxYS1wcm9zZS1zbSBjcWEtbWF4LXctbm9uZVwiIFtpbm5lckhUTUxdPVwiZGVzY3JpcHRpb25Db250ZW50XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZW5hYmxlTWFya2Rvd25cIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdIGNxYS1mb250LW5vcm1hbFwiPnt7IGRlc2NyaXB0aW9uQ29udGVudCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE1ldGFkYXRhIFNlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkTWV0YWRhdGFJdGVtcy5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIGNxYS1nYXAteC0wIGNxYS1nYXAteS00XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRNZXRhZGF0YUl0ZW1zOyB0cmFja0J5OiB0cmFja0J5TWV0YWRhdGFMYWJlbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1nYXAtMC41XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LXhzIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW1cIj57eyBpdGVtLmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs1cHhdIGNxYS1taW4tdy0wIGNxYS13LWZ1bGwgY3FhLXRleHQtbGVmdCBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRjVGNUY1XVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmljb24gJiYgKCFpdGVtLmljb25MaWJyYXJ5IHx8IGl0ZW0uaWNvbkxpYnJhcnkgPT09ICdtYXQnKVwiIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LXNtIGNxYS13LTQgY3FhLWgtNFwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uaWNvbiB9fVxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc3RhdHVzQ29sb3JcIiBjbGFzcz1cImNxYS13LTMuNSBjcWEtaC0zLjUgY3FhLXJvdW5kZWQtZnVsbCBjcWEtZmxleC1zaHJpbmstMFwiIFtuZ0NsYXNzXT1cImdldFN0YXR1c0RvdENsYXNzKGl0ZW0pXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsjMjU2M0VCXSBjcWEtdGV4dC14cyBjcWEtbGVhZGluZy1bMTJweF0gY3FhLWZvbnQtbm9ybWFsIGhvdmVyOmNxYS11bmRlcmxpbmUgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1ibG9jayBjcWEtdHJ1bmNhdGUgY3FhLW1pbi13LTBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1ldGFkYXRhTGlua0NsaWNrKGl0ZW0pOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmxpbmtcIiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1ub3JtYWwgY3FhLWFsaWduLW1pZGRsZVwiIFtuZ0NsYXNzXT1cImdldFZhbHVlVGV4dENsYXNzKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTGFiZWxzIChGaWdtYTogTGFiZWxzIHRpdGxlLCBjcWEtYmFkZ2UgY2hpcHMgd2l0aCB0YWcgaWNvbikgLS0+XG4gICAgPGRpdiAqbmdJZj1cImxhYmVscy5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIgY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF1cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy01XCI+TGFiZWxzPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2VcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgbGFiZWxzXCJcbiAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgIGljb249XCJsYWJlbFwiXG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiI2ZmZmZmZlwiXG4gICAgICAgICAgdGV4dENvbG9yPVwiIzQ3NTU2OVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3I9XCIjRTJFOEYwXCJcbiAgICAgICAgICBpY29uQ29sb3I9XCIjOTRBM0I4XCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbmZpZ3VyYXRpb24gU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnU2VjdGlvbnMubGVuZ3RoIHx8IGNvbmZpZ1NlY3Rpb25zUm93Mi5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWlubGluZS1mbGV4IGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS13LTUgY3FhLWgtNSBjcWEtcC0xIGNxYS1mbGV4LXNocmluay0wIGNxYS1iZy1bIzNGNDNFRTFBXSBjcWEtcm91bmRlZC1tZCBjcWEtaW5saW5lLWZsZXggY3FhLWp1c3RpZnktY2VudGVyIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsjMUIxRkVCXSBjcWEtdGV4dC1bMTJweF0gY3FhLXctMyBjcWEtaC0zIGNxYS1sZWFkaW5nLW5vbmUgY3FhLWJsb2NrXCI+c2V0dGluZ3M8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+e3sgY29uZmlnVGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1nYXAtMi41XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMSBjcWEtZ2FwLTIuNVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgY29uZmlnU2VjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlDb25maWdUaXRsZVwiPlxuICAgICAgICAgICAgPGNxYS1jb25maWd1cmF0aW9uLWNhcmRcbiAgICAgICAgICAgICAgW2ljb25dPVwic2VjdGlvbi5pY29uIHx8ICd0dW5lJ1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJzZWN0aW9uLnRpdGxlXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwic2VjdGlvbi5pdGVtc1wiPlxuICAgICAgICAgICAgPC9jcWEtY29uZmlndXJhdGlvbi1jYXJkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZ1NlY3Rpb25zUm93Mi5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy1bMTkuNnB4XVwiPlxuICAgICAgICAgIDxjcWEtY29uZmlndXJhdGlvbi1jYXJkXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBjb25maWdTZWN0aW9uc1JvdzI7IHRyYWNrQnk6IHRyYWNrQnlDb25maWdUaXRsZVwiXG4gICAgICAgICAgICBbaWNvbl09XCJzZWN0aW9uLmljb24gfHwgJ3R1bmUnXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJzZWN0aW9uLnRpdGxlXCJcbiAgICAgICAgICAgIFtkYXRhXT1cInNlY3Rpb24uaXRlbXNcIj5cbiAgICAgICAgICA8L2NxYS1jb25maWd1cmF0aW9uLWNhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEdBR3hCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBZ0J2QixNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZDFDLDJEQUEyRDtRQUNuRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS3pCLDREQUE0RDtRQUNuRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQWNqQyxnQ0FBZ0M7UUFDdkIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO1FBRTFDLCtCQUErQjtRQUN0Qix1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFakMsc0ZBQXNGO1FBQzdFLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWhDLGdFQUFnRTtRQUN2RCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUVoQyw2RkFBNkY7UUFDcEYsa0JBQWEsR0FBa0MsRUFBRSxDQUFDO1FBRTNELHFEQUFxRDtRQUM1QyxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBRS9CLGtDQUFrQztRQUN6QixnQkFBVyxHQUFHLGVBQWUsQ0FBQztRQUV2QyxnRUFBZ0U7UUFDdkQsbUJBQWMsR0FBbUMsRUFBRSxDQUFDO1FBRTdELDBGQUEwRjtRQUNqRix1QkFBa0IsR0FBbUMsRUFBRSxDQUFDO1FBQ2pFLHVGQUF1RjtRQUM5RSxhQUFRLEdBQXFCLEtBQUssQ0FBQztRQUU1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QUs7Z0JBZUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlRGV0YWlsc0NvbmZpZ1NlY3Rpb24sXG4gIFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSxcbn0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy5tb2RlbHMnO1xuaW1wb3J0IHtcbiAgVGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhLFxuICBTZWxlY3RDb25maWdPdmVycmlkZXMsXG59IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMtZWRpdC90ZXN0LWNhc2UtZGV0YWlscy1lZGl0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS10ZXN0LWNhc2UtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogSW50ZXJuYWwgZWRpdGluZyBzdGF0ZSB3aGVuIG5vdCBjb250cm9sbGVkIGJ5IHBhcmVudCAqL1xuICBwcml2YXRlIF9lZGl0aW5nID0gZmFsc2U7XG5cbiAgLyoqIFdoZW4gcHJvdmlkZWQgYnkgcGFyZW50LCB1c2UgdGhpcyBpbnN0ZWFkIG9mIGludGVybmFsIHN0YXRlIChmaXhlcyBTdG9yeWJvb2sgZXZlbnQgZmxvdykuICovXG4gIEBJbnB1dCgpIGVkaXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKiBXaGVuIHRydWUsIHN0YXJ0IGluIGVkaXQgbW9kZSAodXNlZnVsIGZvciBTdG9yeWJvb2spLiAqL1xuICBASW5wdXQoKSBzdGFydEluRWRpdE1vZGUgPSBmYWxzZTtcblxuICAvKiogUmVzb2x2ZWQgZWRpdGluZyBzdGF0ZTogcGFyZW50LWNvbnRyb2xsZWQgb3IgaW50ZXJuYWwgKi9cbiAgZ2V0IGlzRWRpdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0aW5nICE9PSB1bmRlZmluZWQgPyB0aGlzLmVkaXRpbmcgOiB0aGlzLl9lZGl0aW5nO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXJ0SW5FZGl0TW9kZSkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7XG4gICAgfVxuICB9XG4gIC8qKiBEZXNjcmlwdGlvbiBzZWN0aW9uIHRpdGxlICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uVGl0bGUgPSAnRGVzY3JpcHRpb24nO1xuXG4gIC8qKiBEZXNjcmlwdGlvbiB0ZXh0IGNvbnRlbnQgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb25Db250ZW50ID0gJyc7XG5cbiAgLyoqIFdoZW4gdHJ1ZSwgZGVzY3JpcHRpb24gc3VwcG9ydHMgcmljaCB0ZXh0IChIVE1MKS4gUmVuZGVycyBhcyBIVE1MIGluIHZpZXcgbW9kZS4gKi9cbiAgQElucHV0KCkgZW5hYmxlTWFya2Rvd24gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBFZGl0IGJ1dHRvbiBpbiB0aGUgRGVzY3JpcHRpb24gaGVhZGVyICovXG4gIEBJbnB1dCgpIHNob3dFZGl0QnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqIE1ldGFkYXRhIGl0ZW1zIChjcmVhdGVkT24sIHN0YXR1cywgcHJpb3JpdHksIGVudmlyb25tZW50LCB2ZXJzaW9uLCB0ZXN0UGxhbk5hbWUsIGV0Yy4pICovXG4gIEBJbnB1dCgpIG1ldGFkYXRhSXRlbXM6IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbVtdID0gW107XG5cbiAgLyoqIExhYmVscy90YWdzIChlLmcuIEF1dG9tYXRpb24sIEFQSSwgU0RLLCBVSS9VWCkgKi9cbiAgQElucHV0KCkgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGl0bGUgKi9cbiAgQElucHV0KCkgY29uZmlnVGl0bGUgPSAnQ29uZmlndXJhdGlvbic7XG5cbiAgLyoqIENvbmZpZ3VyYXRpb24gc2VjdGlvbnMgKGUuZy4gRXhlY3V0aW9uLCBBSSBDb25maWd1cmF0aW9uKSAqL1xuICBASW5wdXQoKSBjb25maWdTZWN0aW9uczogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG5cbiAgLyoqIE9wdGlvbmFsIGNvbmZpZyBzZWN0aW9ucyBkaXNwbGF5ZWQgaW4gYSAyLWNvbHVtbiByb3cgKGUuZy4gV2FpdHMgJiBSZXRyaWVzLCBEZXZpY2UpICovXG4gIEBJbnB1dCgpIGNvbmZpZ1NlY3Rpb25zUm93MjogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbltdID0gW107XG4gIC8qKiBQbGF0Zm9ybTogJ3dlYicgb3IgJ21vYmlsZScuIERlZmF1bHRzIHRvICd3ZWInLiBVc2VkIGZvciBEZXZpY2UgU2V0dGluZ3MgZmllbGRzLiAqL1xuICBASW5wdXQoKSBwbGF0Zm9ybTogJ3dlYicgfCAnbW9iaWxlJyA9ICd3ZWInO1xuXG4gIC8qKiBXaGVuIHRydWUsIGZpbHRlcnMgb3V0IFByaW9yaXR5IGFuZCBUeXBlIGZyb20gbWV0YWRhdGEgKHN0ZXAgZ3JvdXBzIGRvbid0IGhhdmUgdGhlc2UpLiBEZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgQElucHV0KCkgaXNTdGVwR3JvdXAgPSBmYWxzZTtcblxuICAvKiogT3ZlcnJpZGUgY29uZmlnIHBlciBzZWxlY3QgZm9yIEFQSS1kcml2ZW4gb3B0aW9ucywgc2VydmVyIHNlYXJjaCwgbG9hZCBtb3JlLiAqL1xuICBASW5wdXQoKSBzZWxlY3RDb25maWdPdmVycmlkZXM6IFNlbGVjdENvbmZpZ092ZXJyaWRlcyA9IHt9O1xuXG4gIC8qKiBMYWJlbHMgdG8gZmlsdGVyIG91dCBmcm9tIG1ldGFkYXRhIGZvciBzdGVwIGdyb3VwcyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN0ZXBHcm91cEV4Y2x1ZGVkTWV0YWRhdGFMYWJlbHMgPSBbJ3ByaW9yaXR5JywgJ3R5cGUnXTtcblxuICAvKiogRmlsdGVyZWQgbWV0YWRhdGEgaXRlbXMgLSBleGNsdWRlcyBQcmlvcml0eSBhbmQgVHlwZSBmb3Igc3RlcCBncm91cHMgKi9cbiAgZ2V0IGZpbHRlcmVkTWV0YWRhdGFJdGVtcygpOiBUZXN0Q2FzZURldGFpbHNNZXRhZGF0YUl0ZW1bXSB7XG4gICAgaWYgKCF0aGlzLmlzU3RlcEdyb3VwKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXRhZGF0YUl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tZXRhZGF0YUl0ZW1zLmZpbHRlcihcbiAgICAgIChpdGVtKSA9PiAhdGhpcy5zdGVwR3JvdXBFeGNsdWRlZE1ldGFkYXRhTGFiZWxzLmluY2x1ZGVzKGl0ZW0ubGFiZWw/LnRvTG93ZXJDYXNlKCkgPz8gJycpXG4gICAgKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlZGl0RGVzY3JpcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8VGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhPigpO1xuICBAT3V0cHV0KCkgbWV0YWRhdGFMaW5rQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdFNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgcXVlcnk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0TG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsga2V5OiBzdHJpbmc7IHF1ZXJ5OiBzdHJpbmcgfT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdE9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZyB9PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9PigpO1xuICBAT3V0cHV0KCkgbGFiZWxBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIG9uRWRpdENsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICAgIHRoaXMuZWRpdERlc2NyaXB0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2F2ZUNoYW5nZXMoZGF0YTogVGVzdENhc2VEZXRhaWxzRWRpdEZvcm1EYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNhdmVDaGFuZ2VzLmVtaXQoZGF0YSk7XG4gIH1cblxuICBvbkNhbmNlbEVkaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIGlmICh0aGlzLmVkaXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0cmFja0J5Q29uZmlnVGl0bGUoX2k6IG51bWJlciwgc2VjdGlvbjogVGVzdENhc2VEZXRhaWxzQ29uZmlnU2VjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlY3Rpb24udGl0bGU7XG4gIH1cblxuICB0cmFja0J5TWV0YWRhdGFMYWJlbChfaTogbnVtYmVyLCBpdGVtOiBUZXN0Q2FzZURldGFpbHNNZXRhZGF0YUl0ZW0pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICB9XG5cblxuICBvbk1ldGFkYXRhTGlua0NsaWNrKGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmxpbmspIHtcbiAgICAgIHRoaXMubWV0YWRhdGFMaW5rQ2xpY2suZW1pdChpdGVtKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXNEb3RDbGFzcyhpdGVtOiBUZXN0Q2FzZURldGFpbHNNZXRhZGF0YUl0ZW0pOiBzdHJpbmcge1xuICAgIGlmICghaXRlbS5zdGF0dXNDb2xvcikgcmV0dXJuICcnO1xuICAgIHN3aXRjaCAoaXRlbS5zdGF0dXNDb2xvcikge1xuICAgICAgY2FzZSAneWVsbG93JzpcbiAgICAgICAgcmV0dXJuICdjcWEtYmctWyNFQUIzMDhdJztcbiAgICAgIGNhc2UgJ3JlZCc6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjREMyNjI2XSc7XG4gICAgICBjYXNlICdncmVlbic6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjMTZBMzRBXSc7XG4gICAgICBjYXNlICdncmF5JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJnLVsjOTRBM0I4XSc7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRleHQgY29sb3IgZm9yIG1ldGFkYXRhIHZhbHVlIChlLmcuIHJlZCBmb3IgY3JpdGljYWwgcHJpb3JpdHkpICovXG4gIGdldFZhbHVlVGV4dENsYXNzKGl0ZW06IFRlc3RDYXNlRGV0YWlsc01ldGFkYXRhSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKGl0ZW0uc3RhdHVzQ29sb3IgPT09ICdyZWQnKSB7XG4gICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjREMyNjI2XSc7XG4gICAgfVxuICAgIHJldHVybiAnY3FhLXRleHQtWyMxMTE4MjddJztcbiAgfVxufVxuIiwiPCEtLSBFZGl0IG1vZGU6IHNob3cgZWRpdCBmb3JtIChGaWdtYSBkZXNpZ24pIC0tPlxuPGNxYS10ZXN0LWNhc2UtZGV0YWlscy1lZGl0XG4gICpuZ0lmPVwiaXNFZGl0aW5nXCJcbiAgW2Rlc2NyaXB0aW9uVGl0bGVdPVwiZGVzY3JpcHRpb25UaXRsZVwiXG4gIFtkZXNjcmlwdGlvbkNvbnRlbnRdPVwiZGVzY3JpcHRpb25Db250ZW50XCJcbiAgW2VuYWJsZU1hcmtkb3duXT1cImVuYWJsZU1hcmtkb3duXCJcbiAgW21ldGFkYXRhSXRlbXNdPVwibWV0YWRhdGFJdGVtc1wiXG4gIFtsYWJlbHNdPVwibGFiZWxzXCJcbiAgW2NvbmZpZ1RpdGxlXT1cImNvbmZpZ1RpdGxlXCJcbiAgW2NvbmZpZ1NlY3Rpb25zXT1cImNvbmZpZ1NlY3Rpb25zXCJcbiAgW2NvbmZpZ1NlY3Rpb25zUm93Ml09XCJjb25maWdTZWN0aW9uc1JvdzJcIlxuICBbcGxhdGZvcm1dPVwicGxhdGZvcm1cIlxuICBbaXNTdGVwR3JvdXBdPVwiaXNTdGVwR3JvdXBcIlxuICBbc2VsZWN0Q29uZmlnT3ZlcnJpZGVzXT1cInNlbGVjdENvbmZpZ092ZXJyaWRlc1wiXG4gIChzYXZlKT1cIm9uU2F2ZUNoYW5nZXMoJGV2ZW50KVwiXG4gIChjYW5jZWwpPVwib25DYW5jZWxFZGl0KClcIlxuICAoc2VsZWN0U2VhcmNoKT1cInNlbGVjdFNlYXJjaC5lbWl0KCRldmVudClcIlxuICAoc2VsZWN0TG9hZE1vcmUpPVwic2VsZWN0TG9hZE1vcmUuZW1pdCgkZXZlbnQpXCJcbiAgKHNlbGVjdE9wZW5lZCk9XCJzZWxlY3RPcGVuZWQuZW1pdCgkZXZlbnQpXCJcbiAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgKGxhYmVsQWRkZWQpPVwibGFiZWxBZGRlZC5lbWl0KCRldmVudClcIj5cbjwvY3FhLXRlc3QtY2FzZS1kZXRhaWxzLWVkaXQ+XG5cbjwhLS0gVmlldyBtb2RlOiByZWFkLW9ubHkgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCIhaXNFZGl0aW5nXCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1weS00IGNxYS1weC0wIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC00IGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC00IGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+XG4gICAgPCEtLSBEZXNjcmlwdGlvbiBTZWN0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnQgY3FhLWdhcC0yLjVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1pbmxpbmUtZmxleCBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS13LTUgY3FhLWgtNSBjcWEtcC0xIGNxYS1mbGV4LXNocmluay0wIGNxYS1iZy1bIzNGNDNFRTFBXSBjcWEtcm91bmRlZC1tZCBjcWEtaW5saW5lLWZsZXggY3FhLWp1c3RpZnktY2VudGVyIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsjMUIxRkVCXSBjcWEtdGV4dC1bMTJweF0gY3FhLXctMyBjcWEtaC0zIGNxYS1sZWFkaW5nLW5vbmUgY3FhLWJsb2NrXCI+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+e3sgZGVzY3JpcHRpb25UaXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cInNob3dFZGl0QnV0dG9uXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1qdXN0aWZ5LWVuZCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtdGV4dC1bI0EzQTNBM10gY3FhLXRleHQteHMgY3FhLWZvbnQtc2VtaWJvbGQgaG92ZXI6Y3FhLXRleHQtWyM3MzczNzNdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMiBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLVsjM0Y0M0VFXSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0yXCJcbiAgICAgICAgICAoY2xpY2spPVwib25FZGl0Q2xpY2soKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsxNHB4XSBjcWEtdy00IGNxYS1oLTRcIj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICBFZGl0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZGVzY3JpcHRpb25Db250ZW50XCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1zdGFydCBjcWEtaXRlbXMtc3RhcnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImVuYWJsZU1hcmtkb3duXCIgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy1bMTkuNnB4XSBjcWEtZm9udC1ub3JtYWwgY3FhLXByb3NlIGNxYS1wcm9zZS1zbSBjcWEtbWF4LXctbm9uZVwiIFtpbm5lckhUTUxdPVwiZGVzY3JpcHRpb25Db250ZW50XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZW5hYmxlTWFya2Rvd25cIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLVsxOS42cHhdIGNxYS1mb250LW5vcm1hbFwiPnt7IGRlc2NyaXB0aW9uQ29udGVudCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIE1ldGFkYXRhIFNlY3Rpb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkTWV0YWRhdGFJdGVtcy5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIGNxYS1nYXAteC0wIGNxYS1nYXAteS00XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRNZXRhZGF0YUl0ZW1zOyB0cmFja0J5OiB0cmFja0J5TWV0YWRhdGFMYWJlbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1nYXAtMC41XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LXhzIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtZm9udC1tZWRpdW1cIj57eyBpdGVtLmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs1cHhdIGNxYS1taW4tdy0wIGNxYS13LWZ1bGwgY3FhLXRleHQtbGVmdCBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRjVGNUY1XVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmljb24gJiYgKCFpdGVtLmljb25MaWJyYXJ5IHx8IGl0ZW0uaWNvbkxpYnJhcnkgPT09ICdtYXQnKVwiIGNsYXNzPVwiY3FhLXRleHQtWyM2QjcyODBdIGNxYS10ZXh0LXNtIGNxYS13LTQgY3FhLWgtNFwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uaWNvbiB9fVxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uc3RhdHVzQ29sb3JcIiBjbGFzcz1cImNxYS13LVsxMHB4XSBjcWEtaC1bMTBweF0gY3FhLXJvdW5kZWQtZnVsbCBjcWEtZmxleC1zaHJpbmstMFwiIFtuZ0NsYXNzXT1cImdldFN0YXR1c0RvdENsYXNzKGl0ZW0pXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNxYS10ZXh0LVsjMjU2M0VCXSBjcWEtdGV4dC14cyBjcWEtbGVhZGluZy1bMTJweF0gY3FhLWZvbnQtbm9ybWFsIGhvdmVyOmNxYS11bmRlcmxpbmUgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1ibG9jayBjcWEtdHJ1bmNhdGUgY3FhLW1pbi13LTBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1ldGFkYXRhTGlua0NsaWNrKGl0ZW0pOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpdGVtLmxpbmtcIiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS1sZWFkaW5nLVsxMnB4XSBjcWEtZm9udC1ub3JtYWwgY3FhLWFsaWduLW1pZGRsZVwiIFtuZ0NsYXNzXT1cImdldFZhbHVlVGV4dENsYXNzKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTGFiZWxzIChGaWdtYTogTGFiZWxzIHRpdGxlLCBjcWEtYmFkZ2UgY2hpcHMgd2l0aCB0YWcgaWNvbikgLS0+XG4gICAgPGRpdiAqbmdJZj1cImxhYmVscy5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIgY3FhLXRleHQtc20gY3FhLWxlYWRpbmctWzE5LjZweF1cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMxMTE4MjddIGNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtbGVhZGluZy01XCI+TGFiZWxzPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2VcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgbGFiZWxzXCJcbiAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgIGljb249XCJsYWJlbFwiXG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPVwiI2ZmZmZmZlwiXG4gICAgICAgICAgdGV4dENvbG9yPVwiIzQ3NTU2OVwiXG4gICAgICAgICAgYm9yZGVyQ29sb3I9XCIjRTJFOEYwXCJcbiAgICAgICAgICBpY29uQ29sb3I9XCIjOTRBM0I4XCI+XG4gICAgICAgIDwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbmZpZ3VyYXRpb24gU2VjdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnU2VjdGlvbnMubGVuZ3RoIHx8IGNvbmZpZ1NlY3Rpb25zUm93Mi5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1zdGFydCBjcWEtZ2FwLTIuNVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWlubGluZS1mbGV4IGNxYS1qdXN0aWZ5LXN0YXJ0IGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS13LTUgY3FhLWgtNSBjcWEtcC0xIGNxYS1mbGV4LXNocmluay0wIGNxYS1iZy1bIzNGNDNFRTFBXSBjcWEtcm91bmRlZC1tZCBjcWEtaW5saW5lLWZsZXggY3FhLWp1c3RpZnktY2VudGVyIGNxYS1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LVsjMUIxRkVCXSBjcWEtdGV4dC1bMTJweF0gY3FhLXctMyBjcWEtaC0zIGNxYS1sZWFkaW5nLW5vbmUgY3FhLWJsb2NrXCI+c2V0dGluZ3M8L21hdC1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtWyMzNzQxNTFdIGNxYS10ZXh0LXNtIGNxYS1mb250LXNlbWlib2xkIGNxYS1sZWFkaW5nLVsxOS42cHhdXCI+e3sgY29uZmlnVGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLXNlbGYtc3RyZXRjaCBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktc3RhcnQgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1nYXAtMi41XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtc2VsZi1zdHJldGNoIGNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMSBjcWEtZ2FwLTIuNVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgY29uZmlnU2VjdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlDb25maWdUaXRsZVwiPlxuICAgICAgICAgICAgPGNxYS1jb25maWd1cmF0aW9uLWNhcmRcbiAgICAgICAgICAgICAgW2ljb25dPVwic2VjdGlvbi5pY29uIHx8ICd0dW5lJ1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJzZWN0aW9uLnRpdGxlXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwic2VjdGlvbi5pdGVtc1wiPlxuICAgICAgICAgICAgPC9jcWEtY29uZmlndXJhdGlvbi1jYXJkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZ1NlY3Rpb25zUm93Mi5sZW5ndGhcIiBjbGFzcz1cImNxYS1zZWxmLXN0cmV0Y2ggY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy1bMTkuNnB4XVwiPlxuICAgICAgICAgIDxjcWEtY29uZmlndXJhdGlvbi1jYXJkXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBjb25maWdTZWN0aW9uc1JvdzI7IHRyYWNrQnk6IHRyYWNrQnlDb25maWdUaXRsZVwiXG4gICAgICAgICAgICBbaWNvbl09XCJzZWN0aW9uLmljb24gfHwgJ3R1bmUnXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJzZWN0aW9uLnRpdGxlXCJcbiAgICAgICAgICAgIFtkYXRhXT1cInNlY3Rpb24uaXRlbXNcIj5cbiAgICAgICAgICA8L2NxYS1jb25maWd1cmF0aW9uLWNhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|