@rocketshow/designer 1.35.0 → 1.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +8 -10
- package/esm2022/lib/preview/preview.component.mjs +1 -3
- package/esm2022/lib/services/fixture.service.mjs +84 -30
- package/esm2022/lib/services/preset.service.mjs +14 -13
- package/esm2022/lib/services/preview.service.mjs +25 -57
- package/esm2022/lib/services/project-load.service.mjs +16 -19
- package/fesm2022/rocketshow-designer.mjs +142 -126
- package/fesm2022/rocketshow-designer.mjs.map +1 -1
- package/lib/services/fixture.service.d.ts +5 -0
- package/lib/services/preset.service.d.ts +1 -0
- package/lib/services/preview.service.d.ts +0 -1
- package/package.json +1 -1
- package/rocketshow-designer-1.36.0.tgz +0 -0
- package/rocketshow-designer-1.35.0.tgz +0 -0
|
@@ -456,18 +456,16 @@ export class FixturePoolComponent {
|
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
if (!found) {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
presetFixture.fixtureUuid = fixture.uuid;
|
|
464
|
-
presetFixture.pixelKey = pixelKey;
|
|
465
|
-
this.projectService.project.presetFixtures.push(presetFixture);
|
|
466
|
-
}
|
|
459
|
+
if (this.fixtureService.fixtureHasGeneralChannel(fixture)) {
|
|
460
|
+
const presetFixture = new PresetFixture();
|
|
461
|
+
presetFixture.fixtureUuid = fixture.uuid;
|
|
462
|
+
this.projectService.project.presetFixtures.push(presetFixture);
|
|
467
463
|
}
|
|
468
|
-
|
|
464
|
+
const pixelKeys = this.fixtureService.fixtureGetUniquePixelKeys(fixture);
|
|
465
|
+
for (let pixelKey of pixelKeys) {
|
|
469
466
|
const presetFixture = new PresetFixture();
|
|
470
467
|
presetFixture.fixtureUuid = fixture.uuid;
|
|
468
|
+
presetFixture.pixelKey = pixelKey;
|
|
471
469
|
this.projectService.project.presetFixtures.push(presetFixture);
|
|
472
470
|
}
|
|
473
471
|
}
|
|
@@ -640,4 +638,4 @@ export class FixturePoolComponent {
|
|
|
640
638
|
args: ['document:keydown.enter', ['$event']]
|
|
641
639
|
}] }); })();
|
|
642
640
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixturePoolComponent, { className: "FixturePoolComponent" }); })();
|
|
643
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1wb29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvZml4dHVyZS1wb29sL2ZpeHR1cmUtcG9vbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUtcG9vbC9maXh0dXJlLXBvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDN0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztJQ1EzQyxBQURGLDZCQUF3RixZQUM5RDtJQUN0Qix3QkFBNEM7SUFFaEQsQUFERSxpQkFBSSxFQUNGOzs7O0lBS0UsQUFERixBQURGLEFBREYsK0JBQXNGLGFBQ25FLGNBQzJCLFlBQ3hCO0lBQ2QsdUJBQWlGO0lBQUMsWUFFcEY7SUFDRixBQURFLGlCQUFJLEVBQ0E7SUFFSixBQURGLCtCQUEyQixZQUNtRjtJQUF2QyxtTEFBUyw2QkFBbUIsd0JBQUcsS0FBSyxLQUFFO0lBQ3pHLHdCQUE2QztJQUlyRCxBQURFLEFBREUsQUFERSxpQkFBSSxFQUNBLEVBQ0YsRUFDRjs7OztJQVZRLGVBQW1FO0lBQW5FLGtHQUFtRTtJQUFTLGNBRXBGO0lBRm9GLG9GQUVwRjs7O0lBZ0NSLHdCQUF3Rjs7O0lBQ3hGLHdCQUFpRjs7OztJQVRuRixrQ0FPQztJQUhDLDhKQUFTLHVCQUFnQix3QkFBRyxLQUFLLEtBQUU7SUFLbkMsQUFEQSw0RUFBb0YsK0RBQ1A7SUFDN0UsWUFDRjs7SUFBQSxpQkFBUzs7O0lBTlAsa0RBQTZCO0lBR3pCLGNBQXNCO0lBQXRCLDhDQUFzQjtJQUN0QixjQUF1QjtJQUF2QiwrQ0FBdUI7SUFDM0IsY0FDRjtJQURFLDhGQUNGOzs7O0lBNkJJLCtCQU1DO0lBRkMsMk1BQVMsZ0NBQXNCLEtBQUM7SUFJOUIsQUFERiw4QkFBaUIsY0FDK0U7SUFDNUYsd0JBQTZDO0lBQy9DLGlCQUFNO0lBRUosQUFERiwrQkFBNkMsWUFDM0I7SUFDZCx1QkFFQztJQUFBLFlBQ0g7SUFDRixBQURFLGlCQUFJLEVBQ0E7SUFFSixBQURGLCtCQUE4QixZQUNtRjtJQUExQyxtTEFBUyxnQ0FBc0Isd0JBQUcsS0FBSyxLQUFFO0lBQzVHLHlCQUE4QztJQUl0RCxBQURFLEFBREUsQUFERSxpQkFBSSxFQUNBLEVBQ0YsRUFDRjs7OztJQXJCSiw4REFBMkM7SUFVL0IsZUFBZ0g7SUFBaEgsc0pBQWdIO0lBRXJILGNBQ0g7SUFERywrQ0FDSDs7OztJQWdETiwrQkFjQztJQUxDLEFBREEsNExBQWEsK0JBQXdCLEtBQUMsK0tBQ3pCLCtCQUF3QixLQUFDO0lBTzhCLEFBQWxFLEFBREYsK0JBQXVILGNBQ25ELFlBQTZCO0lBQUEsc0JBQU07SUFFekcsQUFERSxBQUQrRyxBQUFSLGlCQUFRLEVBQU0sRUFDL0csRUFDRjs7OztJQVhKLEFBREEsQUFEQSxBQURBLEFBREEsb0VBQWlELGlFQUNXLDZEQUNKLHNEQUNQLDBEQUNJO0lBSXJELDZDQUFxQjs7SUFJNEMsY0FBcUQ7SUFBckQscUVBQXFEOztJQUN4RSxjQUFxQjs7SUFBUSxjQUFxQjs7OztJQXdCNUYsa0NBQWtHO0lBQ2hHLFlBR0Y7O0lBQUEsaUJBQVM7Ozs7SUFKaUQsNkRBQXVDO0lBQy9GLGNBR0Y7SUFIRSxzTUFHRjs7O0lBYUEsa0NBQXlFO0lBQ3ZFLFlBQ0Y7SUFBQSxpQkFBUzs7O0lBRmtELCtCQUFhO0lBQ3RFLGNBQ0Y7SUFERSwwQ0FDRjs7OztJQWpDSixBQURGLEFBREYsMkJBQXVELGNBQ3pCLGdCQUMrQjtJQUFBLFlBQXNEOztJQUFBLGlCQUFRO0lBRXJILEFBREYsK0JBQXNCLGdCQUMwRjtJQUF0RSw2VEFBa0M7SUFFOUUsQUFERSxBQURFLGlCQUE4RyxFQUMxRyxFQUNGO0lBR0osQUFERiwrQkFBNEIsZ0JBQ2E7SUFBQSxZQUE4Qzs7SUFBQSxpQkFBUTtJQUUzRixBQURGLGdDQUFzQixrQkFLbkI7SUFEQywwUEFBd0Q7SUFFeEQscUZBQWtHO0lBT3hHLEFBREUsQUFERSxpQkFBUyxFQUNMLEVBQ0Y7SUFHSixBQURGLGdDQUE0QixpQkFDYTtJQUFBLGFBQXVEOztJQUFBLGlCQUFRO0lBRXBHLEFBREYsZ0NBQXNCLGtCQUtuQjtJQURDLDRQQUEwRDtJQUUxRCxxRkFBeUU7SUFLL0UsQUFERSxBQURFLGlCQUFTLEVBQ0wsRUFDRjtJQUVOLGdDQUE0QjtJQUMxQiw2QkFBK0M7SUFFN0MsQUFERixnQ0FBc0Isa0JBQzZEO0lBQW5DLGtMQUFTLHNDQUF3QixLQUFDO0lBQzlFLGFBQ0Y7O0lBR04sQUFERSxBQURFLEFBREUsaUJBQVMsRUFDTCxFQUNGLEVBQ0Y7OztJQTlDdUQsZUFBc0Q7SUFBdEQsZ0ZBQXNEO0lBRXJFLGVBQWtDO0lBQWxDLDJEQUFrQztJQUtyQyxlQUE4QztJQUE5QywwRUFBOEM7SUFJakYsZUFBeUM7SUFBekMsOERBQXlDO0lBR2hCLGNBQStCO0lBQS9CLDZEQUErQjtJQVVyQixlQUF1RDtJQUF2RCxtRkFBdUQ7SUFJMUYsZUFBMkM7SUFBM0MsZ0VBQTJDO0lBR2YsY0FBZ0I7SUFBaEIsNENBQWdCO0lBVzVDLGVBQ0Y7SUFERSxvRkFDRjs7QURqTmhCLE1BQU0sT0FBTyxvQkFBb0I7SUFvQi9CLFlBQ1MsVUFBc0IsRUFDdEIsY0FBOEIsRUFDN0IsV0FBd0IsRUFDekIsY0FBOEIsRUFDN0IsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGFBQTRCLEVBQzdCLGFBQTRCLEVBQzNCLFlBQTRCO1FBVDdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUEzQi9CLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSXhCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBRzNCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUkzQixZQUFPLEdBQW9CLElBQUksT0FBTyxFQUFFLENBQUM7UUFrQjlDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFFNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0I7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztRQUN4QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRTNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBRXRCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQy9CLElBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNoRSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzVFLENBQUM7b0JBQ0QsYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxhQUFhLEtBQUssUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxhQUE2QjtRQUN0QyxpRUFBaUU7UUFDakUsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxlQUF3QjtRQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQyxPQUFPLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUM7UUFDbEQsT0FBTyxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUN0RCxPQUFPLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUM7UUFDMUQsT0FBTyxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDO1FBRTFELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQjtRQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELHlCQUF5QjtRQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVFLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztZQUV4QixLQUFLLE1BQU0sYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxhQUFhLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDdEYsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDbkIsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFNUUsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLGVBQWUsR0FBRyxZQUFZLEVBQUUsQ0FBQztnQkFDdkYsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYTtRQUM5QixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU1RSxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsZUFBZSxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDekQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxlQUF3QixDQUFDO1FBRTdCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTVFLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEdBQUcsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZGLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BCLElBQUksZUFBZSxDQUFDLGVBQWUsS0FBSyxPQUFPLENBQUMsZUFBZSxJQUFJLGVBQWUsQ0FBQyxhQUFhLEtBQUssT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUMzSCx5RUFBeUU7d0JBQ3pFLGlEQUFpRDt3QkFDakQsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sZUFBZSxHQUFHLE9BQU8sQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixpQkFBaUI7UUFDakIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2pELElBQUksa0JBQTJCLENBQUM7UUFFaEMsZ0ZBQWdGO1FBQ2hGLDZFQUE2RTtRQUM3RSxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU1RSxJQUFJLGFBQWEsSUFBSSxPQUFPLENBQUMsZUFBZSxJQUFJLGFBQWEsSUFBSSxPQUFPLENBQUMsZUFBZSxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUcsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUNyQyxrQkFBa0IsR0FBRyxPQUFPLENBQUM7b0JBQzdCLE1BQU07Z0JBQ1IsQ0FBQztnQkFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDeEIsa0JBQWtCLEdBQUcsT0FBTyxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsSUFBSSxrQkFBa0IsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxhQUFhLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDO1FBQzlFLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDakYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFNUUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEdBQUcsWUFBWSxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxpRUFBaUU7SUFFakUsT0FBTyxDQUFDLEtBQVU7UUFDaEIsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFFRCxtQkFBbUI7UUFDbkIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU1RSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNwSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7SUFFRCxFQUFFO1FBQ0EsK0NBQStDO1FBQy9DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sR0FBRyxHQUFHLHdDQUF3QyxDQUFDO2dCQUNyRCxNQUFNLEtBQUssR0FBRyw4Q0FBOEMsQ0FBQztnQkFFN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXhELCtDQUErQztRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoRixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pELElBQUksYUFBYSxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQy9DLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQ2IsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNsQixLQUFLLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyRSxJQUFJLGFBQWEsQ0FBQyxXQUFXLEtBQUssT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUMvQyxLQUFLLEdBQUcsSUFBSSxDQUFDO29CQUNiLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDekUsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN6QixLQUFLLElBQUksUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUMvQixNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUMxQyxhQUFhLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ3pDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO3dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNqRSxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUMxQyxhQUFhLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2pFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRTdCLE9BQU87UUFDUCxJQUFJLENBQUMsY0FBYzthQUNoQixjQUFjLEVBQUU7YUFDaEIsSUFBSSxDQUNILFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLEdBQUcsR0FBRyw2Q0FBNkMsQ0FBQztZQUMxRCxNQUFNLEtBQUssR0FBRyxtREFBbUQsQ0FBQztZQUVsRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUVwQixNQUFNLEdBQUcsR0FBRyx3Q0FBd0MsQ0FBQztZQUNyRCxNQUFNLEtBQUssR0FBRyw4Q0FBOEMsQ0FBQztZQUU3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3SCxVQUFVLENBQUMsT0FBOEMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFO1lBQ3ZHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNaLENBQUM7cUZBeFpVLG9CQUFvQjtvRUFBcEIsb0JBQW9CO1lBQXBCLG1HQUFBLG1CQUFlLCtCQUFLLGtHQUFwQiwrQkFBMkIsaUNBQVA7O1lDckIvQixBQURGLDhCQUEwQixZQUNVO1lBQUEsWUFBK0M7O1lBQUEsaUJBQUs7WUFDdEYsaUNBQThGO1lBQTVCLDBGQUFTLFlBQVEsU0FBRyxLQUFLLElBQUU7WUFDM0YsK0JBQXlCO1lBQUEsc0JBQU87WUFFcEMsQUFERSxBQURrQyxpQkFBTyxFQUNoQyxFQUNMO1lBS0EsQUFGRixBQURGLEFBREYsOEJBQXdCLGFBQ0wsYUFDSSxnQkFRZjs7WUFEQSxtSkFBaUQsb0JBQWdCLElBQUM7WUFMcEUsaUJBTUU7WUFLRSxBQURGLEFBREYsK0JBQStELGNBQzVCLGVBQ2dCO1lBTzdDLEFBTkEsb0VBQXdGLDJEQU1GOztZQWlCNUYsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRjtZQUVKLEFBREYsNEJBQUssYUFDaUM7WUFDbEMsaUNBQWU7WUFBQSw4QkFBNEQ7WUFBQSxxQ0FBb0I7WUFDakcsQUFEaUcsaUJBQUksRUFDakc7WUFDSiw4QkFLQztZQUNDLHlCQUErQztZQUFDLGFBQ2xEOztZQUFBLGlCQUFJO1lBQ0osOEVBT0M7WUFNTCxBQURFLGlCQUFNLEVBQ0Y7WUFLQSxBQURGLEFBRkYsQUFERiwrQkFBbUIsY0FDQSxjQUVJLGtCQUNzRjtZQUF2RCxrR0FBUyxrQ0FBOEIsSUFBQztZQUN0Rix5QkFBNkM7WUFBQyxhQUNoRDs7WUFDRixBQURFLGlCQUFTLEVBQ0w7WUFLRixBQURGLEFBREYsK0JBQW1CLGVBQ1csaUJBQ2E7WUFBQSxhQUFrRDs7WUFBQSxpQkFBUTtZQUc3RixBQURGLEFBREYsZ0NBQXNCLGtCQUNVLGNBQ3BCO1lBQUEsMkJBQVU7WUFLNUIsQUFERSxBQURFLEFBREUsQUFERSxBQURvQixpQkFBUyxFQUNwQixFQUNMLEVBQ0YsRUFDRixFQUNGO1lBS0YsQUFERixBQURGLGdDQUF5RCxlQUM1QixlQUMyQztZQUNsRSx5RUFNQztZQXVCWCxBQURFLEFBREUsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRixFQUNGLEVBQ0Y7WUFNRSxBQURGLEFBREYsQUFGRixBQURGLGdDQUFzQixlQUNILGNBRXlDLGNBQ2pDLGFBQytEO1lBQ2hGLHlCQUEyQztZQUFDLGFBQzlDOztZQUNGLEFBREUsaUJBQUksRUFDRDtZQUVILEFBREYsK0JBQXFCLGFBQ3FFO1lBQ3RGLHlCQUE0QztZQUFDLGFBQy9DOztZQUVKLEFBREUsQUFERSxpQkFBSSxFQUNELEVBQ0Y7WUFtQkQsQUFkRixBQUZGLGdDQUEyQyxlQUVrQixXQWNwRDtZQUNILHlFQWNDO1lBTUwsQUFERSxpQkFBTSxFQUNGO1lBR04sZ0NBQW9EO1lBQ2xELDBFQUF1RDtZQXFEakUsQUFERSxBQURFLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0YsRUFDRixFQUNGO1lBRUosQUFERixnQ0FBMEIsYUFDbUQ7WUFBNUIsc0ZBQVMsWUFBUSxTQUFHLEtBQUssSUFBRTtZQUN4RSxhQUNGOztZQUFBLGlCQUFJO1lBQ0osbUNBQTZEO1lBQWYsa0dBQVMsUUFBSSxJQUFDO1lBQUMsYUFBb0M7O1lBQ25HLEFBRG1HLGlCQUFTLEVBQ3RHOztZQXBQOEIsZUFBK0M7WUFBL0MsMEVBQStDO1lBYTNFLGVBQXVFO1lBQXZFLHdHQUF1RTtZQVEvRCxlQUFxQjtZQUFyQiwwQ0FBcUI7WUFNd0IsY0FBbUM7WUFBbkMsOEVBQW1DO1lBNEJ0QyxlQUNsRDtZQURrRCw0RkFDbEQ7WUFFRyxlQUFpQztZQUFqQyxzREFBaUM7WUFrQmMsZUFDaEQ7WUFEZ0QsaUhBQ2hEO1lBTXlDLGVBQWtEO1lBQWxELDhFQUFrRDtZQWFsRCxlQUEwQjtZQUExQiw0Q0FBMEI7WUFHM0MsY0FBYztZQUFkLHlDQUFjO1lBa0NRLGVBQzlDO1lBRDhDLG9GQUM5QztZQUkrQyxlQUMvQztZQUQrQyx5RkFDL0M7WUF1QndCLGVBQWdCO1lBQWhCLHlDQUFnQjtZQXVCbEMsZUFBK0M7WUFBL0Msd0VBQStDO1lBd0QzRCxlQUNGO1lBREUsK0VBQ0Y7WUFDNkQsZUFBb0M7WUFBcEMsZ0VBQW9DOzs7aUZEOU50RixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDRSxzQkFBc0I7NFNBZ1JoQyxPQUFPO2tCQUROLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUEySTFDLG1CQUFtQjtrQkFEbEIsWUFBWTttQkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7a0ZBclp2QyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmLCBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGaXh0dXJlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUnO1xuaW1wb3J0IHsgRml4dHVyZVByb2ZpbGUgfSBmcm9tICcuLi9tb2RlbHMvZml4dHVyZS1wcm9maWxlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGaXh0dXJlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZpeHR1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJlc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJldmlld1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmV2aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXVpZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRml4dHVyZVBvb2xDcmVhdGVGcm9tRmlsZUNvbXBvbmVudCB9IGZyb20gJy4vZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUvZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUuY29tcG9uZW50JztcbmltcG9ydCB7IFByZXNldEZpeHR1cmUgfSBmcm9tICcuLi9tb2RlbHMvcHJlc2V0LWZpeHR1cmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWZpeHR1cmUtcG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maXh0dXJlLXBvb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maXh0dXJlLXBvb2wuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaXh0dXJlUG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcHJvZmlsZXM6IEZpeHR1cmVQcm9maWxlW107XG4gIHB1YmxpYyBmaWx0ZXJlZFByb2ZpbGVzOiBGaXh0dXJlUHJvZmlsZVtdO1xuICBwdWJsaWMgbG9hZGluZ1Byb2ZpbGVzID0gZmFsc2U7XG5cbiAgcHVibGljIGZpeHR1cmVQb29sOiBGaXh0dXJlW107XG5cbiAgcHVibGljIGRteENoYW5uZWxzOiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRGaXh0dXJlOiBGaXh0dXJlO1xuICBwdWJsaWMgc2VsZWN0ZWRGaXh0dXJlUHJvZmlsZTogRml4dHVyZVByb2ZpbGU7XG4gIHB1YmxpYyBzaG93Q2hhbm5lbE51bWJlcnMgPSBmYWxzZTtcbiAgcHVibGljIGNoYW5uZWxEcmFnRml4dHVyZTogRml4dHVyZTtcbiAgcHVibGljIGNoYW5uZWxEcmFnT2Zmc2V0OiBudW1iZXI7XG5cbiAgcHVibGljIG9uQ2xvc2U6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIHNlYXJjaEV4cHJlc3Npb246IHN0cmluZztcblxuICBwdWJsaWMgdXBkYXRpbmdQcm9maWxlczogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwdWJsaWMgZml4dHVyZVNlcnZpY2U6IEZpeHR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXVpZFNlcnZpY2U6IFV1aWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmV2aWV3U2VydmljZTogUHJldmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcbiAgICBwcml2YXRlIHByZXNldFNlcnZpY2U6IFByZXNldFNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZml4dHVyZVBvb2wgPSBbLi4udGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVzXTtcblxuICAgIGlmICh0aGlzLmZpeHR1cmVQb29sLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZSh0aGlzLmZpeHR1cmVQb29sWzBdKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUxMjsgaSsrKSB7XG4gICAgICB0aGlzLmRteENoYW5uZWxzLnB1c2goMCk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkUHJvZmlsZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2ZpbGVzKCkge1xuICAgIHRoaXMubG9hZGluZ1Byb2ZpbGVzID0gdHJ1ZTtcblxuICAgIHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0U2VhcmNoUHJvZmlsZXMoKS5zdWJzY3JpYmUoKHByb2ZpbGVzKSA9PiB7XG4gICAgICB0aGlzLnByb2ZpbGVzID0gcHJvZmlsZXM7XG4gICAgICB0aGlzLmZpbHRlclByb2ZpbGVzKCk7XG4gICAgICB0aGlzLmxvYWRpbmdQcm9maWxlcyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0Rml4dHVyZShmaXh0dXJlOiBGaXh0dXJlKSB7XG4gICAgdGhpcy5zZWxlY3RlZEZpeHR1cmVQcm9maWxlID0gdW5kZWZpbmVkO1xuICAgIGlmIChmaXh0dXJlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZVByb2ZpbGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gZml4dHVyZTtcbiAgfVxuXG4gIGZpbHRlclByb2ZpbGVzKCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hFeHByZXNzaW9uIHx8ICF0aGlzLnByb2ZpbGVzKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkUHJvZmlsZXMgPSB0aGlzLnByb2ZpbGVzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRQcm9maWxlcyA9IFtdO1xuXG4gICAgY29uc3Qga2V5d29yZHMgPSB0aGlzLnNlYXJjaEV4cHJlc3Npb24uc3BsaXQoJyAnKTtcblxuICAgIGZvciAoY29uc3QgcHJvZmlsZSBvZiB0aGlzLnByb2ZpbGVzKSB7XG4gICAgICBsZXQgZm91bmRLZXl3b3JkcyA9IDA7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5d29yZCBvZiBrZXl3b3Jkcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvZmlsZS51dWlkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpICE9PSAtMSB8fFxuICAgICAgICAgIHByb2ZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoa2V5d29yZC50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgfHxcbiAgICAgICAgICBwcm9maWxlLm1hbnVmYWN0dXJlck5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgIT09IC0xXG4gICAgICAgICkge1xuICAgICAgICAgIGZvdW5kS2V5d29yZHMrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZm91bmRLZXl3b3JkcyA9PT0ga2V5d29yZHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRQcm9maWxlcy5wdXNoKHByb2ZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZEZpeHR1cmUoc2VhcmNoUHJvZmlsZTogRml4dHVyZVByb2ZpbGUpIHtcbiAgICAvLyBMb2FkIHRoZSBwcm9maWxlIGRldGFpbHMsIGlmIG5vdCBhbHJlYWR5IGRvbmUuIFRoZXJlIGlzIG9ubHkgYVxuICAgIC8vIG1pbmltYWwgcHJvZmlsZSBwYXNzZWQgZnJvbSB0aGUgc2VhcmNoLlxuICAgIHRoaXMuZml4dHVyZVNlcnZpY2UubG9hZFByb2ZpbGVCeVV1aWQoc2VhcmNoUHJvZmlsZS51dWlkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZChzZWFyY2hQcm9maWxlLnV1aWQpO1xuICAgICAgY29uc3QgbmV3Rml4dHVyZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuYWRkRml4dHVyZShwcm9maWxlLCB0aGlzLmZpeHR1cmVQb29sKTtcbiAgICAgIGlmIChuZXdGaXh0dXJlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZShuZXdGaXh0dXJlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZENvcHkob3JpZ2luYWxGaXh0dXJlOiBGaXh0dXJlKSB7XG4gICAgY29uc3QgZml4dHVyZSA9IG5ldyBGaXh0dXJlKCk7XG5cbiAgICBmaXh0dXJlLnV1aWQgPSB0aGlzLnV1aWRTZXJ2aWNlLmdldFV1aWQoKTtcbiAgICBmaXh0dXJlLnByb2ZpbGVVdWlkID0gb3JpZ2luYWxGaXh0dXJlLnByb2ZpbGVVdWlkO1xuICAgIGZpeHR1cmUubmFtZSA9IG9yaWdpbmFsRml4dHVyZS5uYW1lO1xuICAgIGZpeHR1cmUubW9kZVNob3J0TmFtZSA9IG9yaWdpbmFsRml4dHVyZS5tb2RlU2hvcnROYW1lO1xuICAgIGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsID0gb3JpZ2luYWxGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbDtcbiAgICBmaXh0dXJlLmRteFVuaXZlcnNlVXVpZCA9IG9yaWdpbmFsRml4dHVyZS5kbXhVbml2ZXJzZVV1aWQ7XG5cbiAgICB0aGlzLmZpeHR1cmVQb29sLnB1c2goZml4dHVyZSk7XG4gICAgdGhpcy5zZWxlY3RGaXh0dXJlKGZpeHR1cmUpO1xuICB9XG5cbiAgcmVtb3ZlRml4dHVyZShmaXh0dXJlOiBGaXh0dXJlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpeHR1cmVQb29sLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5maXh0dXJlUG9vbFtpXS51dWlkID09PSBmaXh0dXJlLnV1aWQpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlID09PSB0aGlzLmZpeHR1cmVQb29sW2ldKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RGaXh0dXJlKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maXh0dXJlUG9vbC5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5zZWxlY3RlZEZpeHR1cmUgJiYgdGhpcy5maXh0dXJlUG9vbCAmJiB0aGlzLmZpeHR1cmVQb29sLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZSgodGhpcy5zZWxlY3RlZEZpeHR1cmUgPSB0aGlzLmZpeHR1cmVQb29sWzBdKSk7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHVudXNlZCBwcm9maWxlc1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVQcm9maWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHByb2ZpbGVVc2VkID0gZmFsc2U7XG5cbiAgICAgIGZvciAoY29uc3QgZml4dHVyZUluUG9vbCBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICAgIGlmIChmaXh0dXJlSW5Qb29sLnByb2ZpbGVVdWlkID09PSB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZVByb2ZpbGVzW2ldLnV1aWQpIHtcbiAgICAgICAgICBwcm9maWxlVXNlZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm9maWxlVXNlZCkge1xuICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZVByb2ZpbGVzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFubmVsT2NjdXBpZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICBjb25zdCBwcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShwcm9maWxlLCBmaXh0dXJlKTtcbiAgICAgIGNvbnN0IGNoYW5uZWxDb3VudCA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUNoYW5uZWxDb3VudChwcm9maWxlLCBtb2RlKTtcblxuICAgICAgaWYgKGluZGV4ID49IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICYmIGluZGV4IDwgZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgKyBjaGFubmVsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hhbm5lbE9jY3VwaWVkU3RhcnQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICBpZiAoaW5kZXggPT09IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNoYW5uZWxPY2N1cGllZEVuZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVBvb2wpIHtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCk7XG4gICAgICBjb25zdCBtb2RlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQnlGaXh0dXJlKHByb2ZpbGUsIGZpeHR1cmUpO1xuICAgICAgY29uc3QgY2hhbm5lbENvdW50ID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQ2hhbm5lbENvdW50KHByb2ZpbGUsIG1vZGUpO1xuXG4gICAgICBpZiAoaW5kZXggPT09IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgY2hhbm5lbENvdW50IC0gMSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGFubmVsT3ZlcmxhcHBlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgbGV0IG9jY3VwaWVkRml4dHVyZTogRml4dHVyZTtcblxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICBjb25zdCBwcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShwcm9maWxlLCBmaXh0dXJlKTtcbiAgICAgIGNvbnN0IGNoYW5uZWxDb3VudCA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUNoYW5uZWxDb3VudChwcm9maWxlLCBtb2RlKTtcblxuICAgICAgaWYgKGluZGV4ID49IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICYmIGluZGV4IDwgZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgKyBjaGFubmVsQ291bnQpIHtcbiAgICAgICAgaWYgKG9jY3VwaWVkRml4dHVyZSkge1xuICAgICAgICAgIGlmIChvY2N1cGllZEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICE9PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCB8fCBvY2N1cGllZEZpeHR1cmUubW9kZVNob3J0TmFtZSAhPT0gZml4dHVyZS5tb2RlU2hvcnROYW1lKSB7XG4gICAgICAgICAgICAvLyBmaXh0dXJlcyBhcmUgYWxsb3dlZCB0byBvdmVybGFwLCBpZiB0aGV5IHN0YXJ0IGF0IHRoZSBzYW1lIGNoYW5uZWwgYW5kXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHNhbWUgbW9kZS4gb3RoZXJ3aXNlIGl0J3Mgbm90IGFsbG93ZWQuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2NjdXBpZWRGaXh0dXJlID0gZml4dHVyZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNoYW5uZWxNb3VzZURvd24oZXZlbnQ6IGFueSkge1xuICAgIC8vIHN0YXJ0IGRyYWdnaW5nXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGV2ZW50LnRhcmdldC5kYXRhc2V0LmluZGV4O1xuICAgIGxldCBuZXdTZWxlY3RlZEZpeHR1cmU6IEZpeHR1cmU7XG5cbiAgICAvLyBmaW5kIGEgZHJhZ2dpbmcgZml4dHVyZSBhbmQgc2VsZWN0IGl0LCBidXQgZG9uJ3QgY2hhbmdlIHRoZSBzZWxlY3Rpb24sIGlmIHRoZVxuICAgIC8vIGN1cnJlbnRseSBzZWxlY3RlZCBmaXh0dXJlIG1pZ2h0IGFsc28gYmUgc2VsZWN0ZWQgKG9uIG92ZXJsYXBwZWQgZml4dHVyZXMpXG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVBvb2wpIHtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCk7XG4gICAgICBjb25zdCBtb2RlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQnlGaXh0dXJlKHByb2ZpbGUsIGZpeHR1cmUpO1xuICAgICAgY29uc3QgY2hhbm5lbENvdW50ID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQ2hhbm5lbENvdW50KHByb2ZpbGUsIG1vZGUpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCAmJiBzZWxlY3RlZEluZGV4IDw9IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgY2hhbm5lbENvdW50IC0gMSkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpeHR1cmUgPT09IGZpeHR1cmUpIHtcbiAgICAgICAgICBuZXdTZWxlY3RlZEZpeHR1cmUgPSBmaXh0dXJlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFuZXdTZWxlY3RlZEZpeHR1cmUpIHtcbiAgICAgICAgICBuZXdTZWxlY3RlZEZpeHR1cmUgPSBmaXh0dXJlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkRml4dHVyZSkge1xuICAgICAgaWYgKG5ld1NlbGVjdGVkRml4dHVyZSAhPT0gdGhpcy5zZWxlY3RlZEZpeHR1cmUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RGaXh0dXJlKG5ld1NlbGVjdGVkRml4dHVyZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbm5lbERyYWdGaXh0dXJlID0gbmV3U2VsZWN0ZWRGaXh0dXJlO1xuICAgICAgdGhpcy5jaGFubmVsRHJhZ09mZnNldCA9IHNlbGVjdGVkSW5kZXggLSBuZXdTZWxlY3RlZEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5uZWxTZWxlY3RlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRml4dHVyZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpbmRleCA+PSB0aGlzLnNlbGVjdGVkRml4dHVyZS5kbXhGaXJzdENoYW5uZWwpIHtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQodGhpcy5zZWxlY3RlZEZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShwcm9maWxlLCB0aGlzLnNlbGVjdGVkRml4dHVyZSk7XG4gICAgICBjb25zdCBjaGFubmVsQ291bnQgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVDaGFubmVsQ291bnQocHJvZmlsZSwgbW9kZSk7XG5cbiAgICAgIGlmIChpbmRleCA8IHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCArIGNoYW5uZWxDb3VudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyByZWdpc3RlciBtb3VzZSB1cCBnbG9iYWxseSAoZS5nLiBhbHNvIG91dHNpZGUgdGhlIERNWCBtYXBwaW5nKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG1vdXNlVXAoZXZlbnQ6IGFueSkge1xuICAgIC8vIGZpbmlzaCBkcmFnZ2luZ1xuICAgIHRoaXMuY2hhbm5lbERyYWdGaXh0dXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGFubmVsTW91c2VPdmVyKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuY2hhbm5lbERyYWdGaXh0dXJlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcGVyZm9ybSBkcmFnZ2luZ1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBldmVudC50YXJnZXQuZGF0YXNldC5pbmRleDtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKHRoaXMuY2hhbm5lbERyYWdGaXh0dXJlLnByb2ZpbGVVdWlkKTtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQnlGaXh0dXJlKHByb2ZpbGUsIHRoaXMuc2VsZWN0ZWRGaXh0dXJlKTtcbiAgICBjb25zdCBjaGFubmVsQ291bnQgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVDaGFubmVsQ291bnQocHJvZmlsZSwgbW9kZSk7XG5cbiAgICBpZiAoc2VsZWN0ZWRJbmRleCAtIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQgPj0gMCAmJiBzZWxlY3RlZEluZGV4IC0gdGhpcy5jaGFubmVsRHJhZ09mZnNldCArIGNoYW5uZWxDb3VudCAtIDEgPD0gNTExKSB7XG4gICAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZS5kbXhGaXJzdENoYW5uZWwgPSBzZWxlY3RlZEluZGV4IC0gdGhpcy5jaGFubmVsRHJhZ09mZnNldDtcbiAgICB9XG4gIH1cblxuICBvaygpIHtcbiAgICAvLyBkb24ndCBhbGxvdyBPSyBpZiBvdmVybGFwcGluZyBmaXh0dXJlcyBleGlzdFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kbXhDaGFubmVscy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuY2hhbm5lbE92ZXJsYXBwZWQoaSkpIHtcbiAgICAgICAgY29uc3QgbXNnID0gJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5jaGFubmVsLW9jY3VwaWVkJztcbiAgICAgICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLmNoYW5uZWwtb2NjdXBpZWQtdGl0bGUnO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihyZXN1bHRbbXNnXSwgcmVzdWx0W3RpdGxlXSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZXMgPSB0aGlzLmZpeHR1cmVQb29sO1xuXG4gICAgLy8gcmVtb3ZlIGRlbGV0ZWQgZml4dHVyZXMgZnJvbSBwcmVzZXQgZml4dHVyZXNcbiAgICBmb3IgKGxldCBpID0gdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHByZXNldEZpeHR1cmUgPSB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QucHJlc2V0Rml4dHVyZXNbaV07XG4gICAgICBmb3IgKGxldCBmaXh0dXJlIG9mIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlcykge1xuICAgICAgICBpZiAocHJlc2V0Rml4dHVyZS5maXh0dXJlVXVpZCA9PT0gZml4dHVyZS51dWlkKSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWRkIHRoZSBuZXcgZml4dHVyZXMgdG8gdGhlIHByZXNldCBmaXh0dXJlc1xuICAgIGZvciAobGV0IGZpeHR1cmUgb2YgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVzKSB7XG4gICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IHByZXNldEZpeHR1cmUgb2YgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzKSB7XG4gICAgICAgIGlmIChwcmVzZXRGaXh0dXJlLmZpeHR1cmVVdWlkID09PSBmaXh0dXJlLnV1aWQpIHtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgY29uc3QgcGl4ZWxLZXlzID0gdGhpcy5maXh0dXJlU2VydmljZS5maXh0dXJlR2V0VW5pcXVlUGl4ZWxLZXlzKGZpeHR1cmUpO1xuICAgICAgICBpZiAocGl4ZWxLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBwaXhlbEtleSBvZiBwaXhlbEtleXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXNldEZpeHR1cmUgPSBuZXcgUHJlc2V0Rml4dHVyZSgpO1xuICAgICAgICAgICAgcHJlc2V0Rml4dHVyZS5maXh0dXJlVXVpZCA9IGZpeHR1cmUudXVpZDtcbiAgICAgICAgICAgIHByZXNldEZpeHR1cmUucGl4ZWxLZXkgPSBwaXhlbEtleTtcbiAgICAgICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcy5wdXNoKHByZXNldEZpeHR1cmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwcmVzZXRGaXh0dXJlID0gbmV3IFByZXNldEZpeHR1cmUoKTtcbiAgICAgICAgICBwcmVzZXRGaXh0dXJlLmZpeHR1cmVVdWlkID0gZml4dHVyZS51dWlkO1xuICAgICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcy5wdXNoKHByZXNldEZpeHR1cmUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5maXh0dXJlU2VydmljZS51cGRhdGVDYWNoZWRGaXh0dXJlcygpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5yZW1vdmVEZWxldGVkRml4dHVyZXMoKTtcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnVwZGF0ZUZpeHR1cmVTZXR1cCgpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS51cGRhdGVGaXh0dXJlU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLmZpeHR1cmVTZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcblxuICAgIHRoaXMub25DbG9zZS5uZXh0KDEpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNsb3NlLm5leHQoMik7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIHVwZGF0ZVByb2ZpbGVzKCkge1xuICAgIHRoaXMudXBkYXRpbmdQcm9maWxlcyA9IHRydWU7XG5cbiAgICAvLyBUT0RPXG4gICAgdGhpcy5maXh0dXJlU2VydmljZVxuICAgICAgLnVwZGF0ZVByb2ZpbGVzKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGluZ1Byb2ZpbGVzID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZS1lcnJvcic7XG4gICAgICAgICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZS1lcnJvci10aXRsZSc7XG5cbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFttc2csIHRpdGxlXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihyZXN1bHRbbXNnXSwgcmVzdWx0W3RpdGxlXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZFByb2ZpbGVzKCk7XG5cbiAgICAgICAgY29uc3QgbXNnID0gJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5wcm9maWxlcy11cGRhdGVkJztcbiAgICAgICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZWQtdGl0bGUnO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zdWNjZXNzKHJlc3VsdFttc2ddLCByZXN1bHRbdGl0bGVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUZpeHR1cmVGcm9tUHJvZmlsZUZpbGUoKSB7XG4gICAgY29uc3QgYnNNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coRml4dHVyZVBvb2xDcmVhdGVGcm9tRmlsZUNvbXBvbmVudCwgeyBrZXlib2FyZDogdHJ1ZSwgaWdub3JlQmFja2Ryb3BDbGljazogZmFsc2UgfSk7XG4gICAgKGJzTW9kYWxSZWYuY29udGVudCBhcyBGaXh0dXJlUG9vbENyZWF0ZUZyb21GaWxlQ29tcG9uZW50KS5vbkNsb3NlLnN1YnNjcmliZSgocHJvZmlsZTogRml4dHVyZVByb2ZpbGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0ZpeHR1cmUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmFkZEZpeHR1cmUocHJvZmlsZSwgdGhpcy5maXh0dXJlUG9vbCk7XG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUobmV3Rml4dHVyZSk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5vaygpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPnt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wudGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZSBwdWxsLXJpZ2h0XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNhbmNlbCgpOyAoZmFsc2UpXCI+XG4gICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgIDwhLS0gU2VhcmNoIGZvciBwcm9maWxlcyAtLT5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGlucHV0LWJsb2NrIG1iLTNcIlxuICAgICAgICBpZD1cInNlYXJjaFNldFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5zZWFyY2gtcHJvZmlsZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKGlucHV0KT1cInNlYXJjaEV4cHJlc3Npb24gPSAkZXZlbnQudGFyZ2V0LnZhbHVlOyBmaWx0ZXJQcm9maWxlcygpXCJcbiAgICAgIC8+XG5cbiAgICAgIDwhLS0gUHJvZmlsZXMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItc2Vjb25kYXJ5IHctMTAwXCIgc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIHctMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaCB3LTEwMFwiPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCJsb2FkaW5nUHJvZmlsZXNcIiBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydCBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIG14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtcHVsc2UgZmEtZndcIj48L2k+XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiICpuZ0Zvcj1cImxldCBwcm9maWxlIG9mIGZpbHRlcmVkUHJvZmlsZXMgfCBzb3J0IDogJ3V1aWQnXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwIGNvbC1hdXRvIG15LWF1dG8gcGwtMlwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi17eyBmaXh0dXJlU2VydmljZS5nZXRGaXh0dXJlSWNvbkNsYXNzKHByb2ZpbGUpIH19IG1yLTFcIj48L3NwYW4+IHt7IHByb2ZpbGUubWFudWZhY3R1cmVyTmFtZSB9fSAtXG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2ZpbGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBteS1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZmxvYXQtcmlnaHRcIiBocmVmPVwiI1wiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWRkRml4dHVyZShwcm9maWxlKTsgKGZhbHNlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cCBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1iLTAgbXQtMlwiPlxuICAgICAgICAgIFBvd2VyZWQgYnkgdGhlIDxhIGhyZWY9XCJodHRwczovL29wZW4tZml4dHVyZS1saWJyYXJ5Lm9yZy9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5PcGVuIEZpeHR1cmUgTGlicmFyeTwvYT5cbiAgICAgICAgPC9wPlxuICAgICAgICA8YVxuICAgICAgICAgIGNsYXNzPVwibXQtMiBidG4gYnRuLXNlY29uZGFyeSBidG4tc20gZmxvYXQtcmlnaHRcIlxuICAgICAgICAgIGhyZWY9XCJodHRwczovL29wZW4tZml4dHVyZS1saWJyYXJ5Lm9yZy9maXh0dXJlLWVkaXRvclwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZmlsZS1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLmFkZC1wcm9maWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImNvbmZpZ1NlcnZpY2UubG9jYWxQcm9maWxlc1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJtci0yIG10LTIgYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIGZsb2F0LXJpZ2h0XCJcbiAgICAgICAgICAoY2xpY2spPVwidXBkYXRlUHJvZmlsZXMoKTsgKGZhbHNlKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInVwZGF0aW5nUHJvZmlsZXNcIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgKm5nSWY9XCJ1cGRhdGluZ1Byb2ZpbGVzXCIgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXB1bHNlIGZhLWZ3XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIDxpICpuZ0lmPVwiIXVwZGF0aW5nUHJvZmlsZXNcIiBjbGFzcz1cImZhIGZhLWRvd25sb2FkIGZhLWZ3XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIHt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wudXBkYXRlLXByb2ZpbGVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8IS0tIEFkZCBmaXh0dXJlIGZyb20gbG9jYWwgcHJvZmlsZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJjcmVhdGVGaXh0dXJlRnJvbVByb2ZpbGVGaWxlKClcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuY3JlYXRlLWZpeHR1cmUtZnJvbS1wcm9maWxlLWZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVW5pdmVyc2UgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTQgY29sLWZvcm0tbGFiZWxcIj57eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLnVuaXZlcnNlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLThcIj5cbiAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImN1c3RvbS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uPlVuaXZlcnNlIDE8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGaXh0dXJlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci1zZWNvbmRhcnlcIiBzdHlsZT1cImhlaWdodDogMjM1cHhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCIgW3NvcnRhYmxlanNdPVwiZml4dHVyZVBvb2xcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW1cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZml4dHVyZSBvZiBmaXh0dXJlUG9vbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZml4dHVyZSA9PSBzZWxlY3RlZEZpeHR1cmVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Rml4dHVyZShmaXh0dXJlKVwiXG4gICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBsaXN0LXNvcnQtaGFuZGxlIG15LWF1dG9cIiBzdHlsZT1cImN1cnNvcjogbW92ZTsgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJhcnNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGZsZXgtZ3JvdyBwbC0wIG15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24te3sgZml4dHVyZVNlcnZpY2UuZ2V0Rml4dHVyZUljb25DbGFzcyhmaXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpKSB9fSBtci0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvc3BhblxuICAgICAgICAgICAgICAgICAgICA+e3sgZml4dHVyZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBmbG9hdC1yaWdodFwiIGhyZWY9XCIjXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJyZW1vdmVGaXh0dXJlKGZpeHR1cmUpOyAoZmFsc2UpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbWludXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICA8IS0tIFRhYiBuYXZpZ2F0aW9uIC0tPlxuICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi10YWJzIG1iLTRcIiBpZD1cIm15VGFiXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rIGFjdGl2ZVwiIGlkPVwic2V0cy10YWJcIiBkYXRhLXRvZ2dsZT1cInRhYlwiIGhyZWY9XCIjZG14XCIgcm9sZT1cInRhYlwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uLW9sYVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5kbXgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBpZD1cImNvbXBvc2l0aW9ucy10YWJcIiBkYXRhLXRvZ2dsZT1cInRhYlwiIGhyZWY9XCIjc2V0dGluZ3NcIiByb2xlPVwidGFiXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5zZXR0aW5ncycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuXG4gICAgICA8IS0tIFRhYiBjb250ZW50IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgaWQ9XCJteVRhYkNvbnRlbnRcIj5cbiAgICAgICAgPCEtLSBETVggdW5pdmVyc2Ugb3ZlcnZpZXctLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1wYW5lIHNob3cgYWN0aXZlXCIgaWQ9XCJkbXhcIiByb2xlPVwidGFicGFuZWxcIj5cbiAgICAgICAgICA8IS0tIFNob3cgYWxsIGNoYW5uZWwgbnVtYmVycyAtLT5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGZsZXgtZ3Jvd1wiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIGQtZmxleFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS1hdXRvIG1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgaWQ9XCJzaG93Q2hhbm5lbE51bWJlcnNcIiBbbmdNb2RlbF09XCJzaG93Q2hhbm5lbE51bWJlcnNcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2hvd0NoYW5uZWxOdW1iZXJzID0gJGV2ZW50XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNob3dDaGFubmVsTnVtYmVyc1wiPlNob3cgY2hhbm5lbHM8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDwhLS0gTGlzdCBvZiBETVggY2hhbm5lbHMgLS0+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoYW5uZWwgb2YgZG14Q2hhbm5lbHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRteC1jaGFubmVsXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRteC1jaGFubmVsLW9jY3VwaWVkXT1cImNoYW5uZWxPY2N1cGllZChpKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kbXgtY2hhbm5lbC1vY2N1cGllZC1zdGFydF09XCJjaGFubmVsT2NjdXBpZWRTdGFydChpKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kbXgtY2hhbm5lbC1vY2N1cGllZC1lbmRdPVwiY2hhbm5lbE9jY3VwaWVkRW5kKGkpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRteC1jaGFubmVsLXNlbGVjdGVkXT1cImNoYW5uZWxTZWxlY3RlZChpKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kbXgtY2hhbm5lbC1vdmVybGFwcGVkXT1cImNoYW5uZWxPdmVybGFwcGVkKGkpXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJjaGFubmVsTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAobW91c2VvdmVyKT1cImNoYW5uZWxNb3VzZU92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgIHBvcG92ZXI9XCJ7eyBpICsgMSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCB3LTEwMCBkbXgtY2hhbm5lbC10ZXh0XCIgW2F0dHIuZGF0YS1pbmRleF09XCJpXCIgW2NsYXNzLmRteC1jaGFubmVsLXRleHQtdmlzaWJsZV09XCJzaG93Q2hhbm5lbE51bWJlcnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1hdXRvXCIgc3R5bGU9XCJmb250LXNpemU6IDExcHhcIiBbYXR0ci5kYXRhLWluZGV4XT1cImlcIj48c21hbGwgW2F0dHIuZGF0YS1pbmRleF09XCJpXCI+Jm5ic3A7PC9zbWFsbD48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBGaXh0dXJlIHNldHRpbmdzIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmVcIiBpZD1cInNldHRpbmdzXCIgcm9sZT1cInRhYnBhbmVsXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRml4dHVyZSAmJiBzZWxlY3RlZEZpeHR1cmVQcm9maWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3dcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgY29sLWZvcm0tbGFiZWxcIiBmb3I9XCJmaXh0dXJlTmFtZVwiPnt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuZml4dHVyZS1uYW1lJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZpeHR1cmUubmFtZVwiIG1heGxlbmd0aD1cIjIwMFwiIGlkPVwiZml4dHVyZU5hbWVcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3dcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTMgY29sLWZvcm0tbGFiZWxcIj57eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLm1vZGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkRml4dHVyZS5tb2RlU2hvcnROYW1lXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkRml4dHVyZS5tb2RlU2hvcnROYW1lID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtb2RlIG9mIHNlbGVjdGVkRml4dHVyZVByb2ZpbGUubW9kZXNcIiBbbmdWYWx1ZV09XCJtb2RlLnNob3J0TmFtZSB8fCBtb2RlLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbW9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIC0ge3sgZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUNoYW5uZWxDb3VudChzZWxlY3RlZEZpeHR1cmVQcm9maWxlLCBtb2RlKSB9fVxuICAgICAgICAgICAgICAgICAgICB7eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLmNoYW5uZWxzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBjb2wtZm9ybS1sYWJlbFwiPnt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuZmlyc3QtY2hhbm5lbCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbFwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjaGFubmVsIG9mIGRteENoYW5uZWxzOyBsZXQgaSA9IGluZGV4XCIgW25nVmFsdWVdPVwiaVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpICsgMSB9fVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBjb2wtZm9ybS1sYWJlbFwiPjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImFkZENvcHkoc2VsZWN0ZWRGaXh0dXJlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgJ2Rlc2lnbmVyLmZpeHR1cmUuYWRkLWNvcHknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gIDxhIGNsYXNzPVwibXItMyBteS1hdXRvXCIgaHJlZj1cIiNcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbCgpOyAoZmFsc2UpXCI+XG4gICAge3sgJ2Rlc2lnbmVyLm1pc2MuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2E+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9rKClcIj57eyAnZGVzaWduZXIubWlzYy5vaycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
641
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1wb29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvZml4dHVyZS1wb29sL2ZpeHR1cmUtcG9vbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUtcG9vbC9maXh0dXJlLXBvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDN0gs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Q0FBQyxRQUFRLENBQUM7O2tGQXRadkMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRml4dHVyZSB9IGZyb20gJy4uL21vZGVscy9maXh0dXJlJztcbmltcG9ydCB7IEZpeHR1cmVQcm9maWxlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUtcHJvZmlsZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRml4dHVyZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9maXh0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXNldC5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFV1aWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXVpZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpeHR1cmVQb29sQ3JlYXRlRnJvbUZpbGVDb21wb25lbnQgfSBmcm9tICcuL2ZpeHR1cmUtcG9vbC1jcmVhdGUtZnJvbS1maWxlL2ZpeHR1cmUtcG9vbC1jcmVhdGUtZnJvbS1maWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcmVzZXRGaXh0dXJlIH0gZnJvbSAnLi4vbW9kZWxzL3ByZXNldC1maXh0dXJlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1maXh0dXJlLXBvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vZml4dHVyZS1wb29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZml4dHVyZS1wb29sLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRml4dHVyZVBvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHByb2ZpbGVzOiBGaXh0dXJlUHJvZmlsZVtdO1xuICBwdWJsaWMgZmlsdGVyZWRQcm9maWxlczogRml4dHVyZVByb2ZpbGVbXTtcbiAgcHVibGljIGxvYWRpbmdQcm9maWxlcyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBmaXh0dXJlUG9vbDogRml4dHVyZVtdO1xuXG4gIHB1YmxpYyBkbXhDaGFubmVsczogbnVtYmVyW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkRml4dHVyZTogRml4dHVyZTtcbiAgcHVibGljIHNlbGVjdGVkRml4dHVyZVByb2ZpbGU6IEZpeHR1cmVQcm9maWxlO1xuICBwdWJsaWMgc2hvd0NoYW5uZWxOdW1iZXJzID0gZmFsc2U7XG4gIHB1YmxpYyBjaGFubmVsRHJhZ0ZpeHR1cmU6IEZpeHR1cmU7XG4gIHB1YmxpYyBjaGFubmVsRHJhZ09mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBvbkNsb3NlOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBzZWFyY2hFeHByZXNzaW9uOiBzdHJpbmc7XG5cbiAgcHVibGljIHVwZGF0aW5nUHJvZmlsZXM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHVibGljIGZpeHR1cmVTZXJ2aWNlOiBGaXh0dXJlU2VydmljZSxcbiAgICBwcml2YXRlIHV1aWRTZXJ2aWNlOiBVdWlkU2VydmljZSxcbiAgICBwdWJsaWMgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVzZXRTZXJ2aWNlOiBQcmVzZXRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZpeHR1cmVQb29sID0gWy4uLnRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlc107XG5cbiAgICBpZiAodGhpcy5maXh0dXJlUG9vbC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUodGhpcy5maXh0dXJlUG9vbFswXSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MTI7IGkrKykge1xuICAgICAgdGhpcy5kbXhDaGFubmVscy5wdXNoKDApO1xuICAgIH1cblxuICAgIHRoaXMubG9hZFByb2ZpbGVzKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQcm9maWxlcygpIHtcbiAgICB0aGlzLmxvYWRpbmdQcm9maWxlcyA9IHRydWU7XG5cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFNlYXJjaFByb2ZpbGVzKCkuc3Vic2NyaWJlKChwcm9maWxlcykgPT4ge1xuICAgICAgdGhpcy5wcm9maWxlcyA9IHByb2ZpbGVzO1xuICAgICAgdGhpcy5maWx0ZXJQcm9maWxlcygpO1xuICAgICAgdGhpcy5sb2FkaW5nUHJvZmlsZXMgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdEZpeHR1cmUoZml4dHVyZTogRml4dHVyZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlUHJvZmlsZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZml4dHVyZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmVQcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRml4dHVyZSA9IGZpeHR1cmU7XG4gIH1cblxuICBmaWx0ZXJQcm9maWxlcygpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoRXhwcmVzc2lvbiB8fCAhdGhpcy5wcm9maWxlcykge1xuICAgICAgdGhpcy5maWx0ZXJlZFByb2ZpbGVzID0gdGhpcy5wcm9maWxlcztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkUHJvZmlsZXMgPSBbXTtcblxuICAgIGNvbnN0IGtleXdvcmRzID0gdGhpcy5zZWFyY2hFeHByZXNzaW9uLnNwbGl0KCcgJyk7XG5cbiAgICBmb3IgKGNvbnN0IHByb2ZpbGUgb2YgdGhpcy5wcm9maWxlcykge1xuICAgICAgbGV0IGZvdW5kS2V5d29yZHMgPSAwO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2Yga2V5d29yZHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByb2ZpbGUudXVpZC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoa2V5d29yZC50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgfHxcbiAgICAgICAgICBwcm9maWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgIT09IC0xIHx8XG4gICAgICAgICAgcHJvZmlsZS5tYW51ZmFjdHVyZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpICE9PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICBmb3VuZEtleXdvcmRzKys7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZvdW5kS2V5d29yZHMgPT09IGtleXdvcmRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkUHJvZmlsZXMucHVzaChwcm9maWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRGaXh0dXJlKHNlYXJjaFByb2ZpbGU6IEZpeHR1cmVQcm9maWxlKSB7XG4gICAgLy8gTG9hZCB0aGUgcHJvZmlsZSBkZXRhaWxzLCBpZiBub3QgYWxyZWFkeSBkb25lLiBUaGVyZSBpcyBvbmx5IGFcbiAgICAvLyBtaW5pbWFsIHByb2ZpbGUgcGFzc2VkIGZyb20gdGhlIHNlYXJjaC5cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLmxvYWRQcm9maWxlQnlVdWlkKHNlYXJjaFByb2ZpbGUudXVpZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoc2VhcmNoUHJvZmlsZS51dWlkKTtcbiAgICAgIGNvbnN0IG5ld0ZpeHR1cmUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmFkZEZpeHR1cmUocHJvZmlsZSwgdGhpcy5maXh0dXJlUG9vbCk7XG4gICAgICBpZiAobmV3Rml4dHVyZSkge1xuICAgICAgICB0aGlzLnNlbGVjdEZpeHR1cmUobmV3Rml4dHVyZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRDb3B5KG9yaWdpbmFsRml4dHVyZTogRml4dHVyZSkge1xuICAgIGNvbnN0IGZpeHR1cmUgPSBuZXcgRml4dHVyZSgpO1xuXG4gICAgZml4dHVyZS51dWlkID0gdGhpcy51dWlkU2VydmljZS5nZXRVdWlkKCk7XG4gICAgZml4dHVyZS5wcm9maWxlVXVpZCA9IG9yaWdpbmFsRml4dHVyZS5wcm9maWxlVXVpZDtcbiAgICBmaXh0dXJlLm5hbWUgPSBvcmlnaW5hbEZpeHR1cmUubmFtZTtcbiAgICBmaXh0dXJlLm1vZGVTaG9ydE5hbWUgPSBvcmlnaW5hbEZpeHR1cmUubW9kZVNob3J0TmFtZTtcbiAgICBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCA9IG9yaWdpbmFsRml4dHVyZS5kbXhGaXJzdENoYW5uZWw7XG4gICAgZml4dHVyZS5kbXhVbml2ZXJzZVV1aWQgPSBvcmlnaW5hbEZpeHR1cmUuZG14VW5pdmVyc2VVdWlkO1xuXG4gICAgdGhpcy5maXh0dXJlUG9vbC5wdXNoKGZpeHR1cmUpO1xuICAgIHRoaXMuc2VsZWN0Rml4dHVyZShmaXh0dXJlKTtcbiAgfVxuXG4gIHJlbW92ZUZpeHR1cmUoZml4dHVyZTogRml4dHVyZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maXh0dXJlUG9vbC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZml4dHVyZVBvb2xbaV0udXVpZCA9PT0gZml4dHVyZS51dWlkKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRml4dHVyZSA9PT0gdGhpcy5maXh0dXJlUG9vbFtpXSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZSh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZml4dHVyZVBvb2wuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaXh0dXJlICYmIHRoaXMuZml4dHVyZVBvb2wgJiYgdGhpcy5maXh0dXJlUG9vbC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUoKHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gdGhpcy5maXh0dXJlUG9vbFswXSkpO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSB1bnVzZWQgcHJvZmlsZXNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlUHJvZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwcm9maWxlVXNlZCA9IGZhbHNlO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpeHR1cmVJblBvb2wgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgICBpZiAoZml4dHVyZUluUG9vbC5wcm9maWxlVXVpZCA9PT0gdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVQcm9maWxlc1tpXS51dWlkKSB7XG4gICAgICAgICAgcHJvZmlsZVVzZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJvZmlsZVVzZWQpIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVQcm9maWxlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbm5lbE9jY3VwaWVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZChmaXh0dXJlLnByb2ZpbGVVdWlkKTtcbiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVCeUZpeHR1cmUocHJvZmlsZSwgZml4dHVyZSk7XG4gICAgICBjb25zdCBjaGFubmVsQ291bnQgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVDaGFubmVsQ291bnQocHJvZmlsZSwgbW9kZSk7XG5cbiAgICAgIGlmIChpbmRleCA+PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCAmJiBpbmRleCA8IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgY2hhbm5lbENvdW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNoYW5uZWxPY2N1cGllZFN0YXJ0KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgaWYgKGluZGV4ID09PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGFubmVsT2NjdXBpZWRFbmQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICBjb25zdCBwcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShwcm9maWxlLCBmaXh0dXJlKTtcbiAgICAgIGNvbnN0IGNoYW5uZWxDb3VudCA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUNoYW5uZWxDb3VudChwcm9maWxlLCBtb2RlKTtcblxuICAgICAgaWYgKGluZGV4ID09PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCArIGNoYW5uZWxDb3VudCAtIDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hhbm5lbE92ZXJsYXBwZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGxldCBvY2N1cGllZEZpeHR1cmU6IEZpeHR1cmU7XG5cbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZChmaXh0dXJlLnByb2ZpbGVVdWlkKTtcbiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVCeUZpeHR1cmUocHJvZmlsZSwgZml4dHVyZSk7XG4gICAgICBjb25zdCBjaGFubmVsQ291bnQgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVDaGFubmVsQ291bnQocHJvZmlsZSwgbW9kZSk7XG5cbiAgICAgIGlmIChpbmRleCA+PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCAmJiBpbmRleCA8IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgY2hhbm5lbENvdW50KSB7XG4gICAgICAgIGlmIChvY2N1cGllZEZpeHR1cmUpIHtcbiAgICAgICAgICBpZiAob2NjdXBpZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCAhPT0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgfHwgb2NjdXBpZWRGaXh0dXJlLm1vZGVTaG9ydE5hbWUgIT09IGZpeHR1cmUubW9kZVNob3J0TmFtZSkge1xuICAgICAgICAgICAgLy8gZml4dHVyZXMgYXJlIGFsbG93ZWQgdG8gb3ZlcmxhcCwgaWYgdGhleSBzdGFydCBhdCB0aGUgc2FtZSBjaGFubmVsIGFuZFxuICAgICAgICAgICAgLy8gdXNlIHRoZSBzYW1lIG1vZGUuIG90aGVyd2lzZSBpdCdzIG5vdCBhbGxvd2VkLlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9jY3VwaWVkRml4dHVyZSA9IGZpeHR1cmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGFubmVsTW91c2VEb3duKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBzdGFydCBkcmFnZ2luZ1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBldmVudC50YXJnZXQuZGF0YXNldC5pbmRleDtcbiAgICBsZXQgbmV3U2VsZWN0ZWRGaXh0dXJlOiBGaXh0dXJlO1xuXG4gICAgLy8gZmluZCBhIGRyYWdnaW5nIGZpeHR1cmUgYW5kIHNlbGVjdCBpdCwgYnV0IGRvbid0IGNoYW5nZSB0aGUgc2VsZWN0aW9uLCBpZiB0aGVcbiAgICAvLyBjdXJyZW50bHkgc2VsZWN0ZWQgZml4dHVyZSBtaWdodCBhbHNvIGJlIHNlbGVjdGVkIChvbiBvdmVybGFwcGVkIGZpeHR1cmVzKVxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICBjb25zdCBwcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShwcm9maWxlLCBmaXh0dXJlKTtcbiAgICAgIGNvbnN0IGNoYW5uZWxDb3VudCA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUNoYW5uZWxDb3VudChwcm9maWxlLCBtb2RlKTtcblxuICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgJiYgc2VsZWN0ZWRJbmRleCA8PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCArIGNoYW5uZWxDb3VudCAtIDEpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlID09PSBmaXh0dXJlKSB7XG4gICAgICAgICAgbmV3U2VsZWN0ZWRGaXh0dXJlID0gZml4dHVyZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbmV3U2VsZWN0ZWRGaXh0dXJlKSB7XG4gICAgICAgICAgbmV3U2VsZWN0ZWRGaXh0dXJlID0gZml4dHVyZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZEZpeHR1cmUpIHtcbiAgICAgIGlmIChuZXdTZWxlY3RlZEZpeHR1cmUgIT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZShuZXdTZWxlY3RlZEZpeHR1cmUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZSA9IG5ld1NlbGVjdGVkRml4dHVyZTtcbiAgICAgIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQgPSBzZWxlY3RlZEluZGV4IC0gbmV3U2VsZWN0ZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbDtcbiAgICB9XG4gIH1cblxuICBjaGFubmVsU2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEZpeHR1cmUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gdGhpcy5zZWxlY3RlZEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsKSB7XG4gICAgICBjb25zdCBwcm9maWxlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLnByb2ZpbGVVdWlkKTtcbiAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldE1vZGVCeUZpeHR1cmUocHJvZmlsZSwgdGhpcy5zZWxlY3RlZEZpeHR1cmUpO1xuICAgICAgY29uc3QgY2hhbm5lbENvdW50ID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQ2hhbm5lbENvdW50KHByb2ZpbGUsIG1vZGUpO1xuXG4gICAgICBpZiAoaW5kZXggPCB0aGlzLnNlbGVjdGVkRml4dHVyZS5kbXhGaXJzdENoYW5uZWwgKyBjaGFubmVsQ291bnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbW91c2UgdXAgZ2xvYmFsbHkgKGUuZy4gYWxzbyBvdXRzaWRlIHRoZSBETVggbWFwcGluZylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnLCBbJyRldmVudCddKVxuICBtb3VzZVVwKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBmaW5pc2ggZHJhZ2dpbmdcbiAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNoYW5uZWxEcmFnT2Zmc2V0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2hhbm5lbE1vdXNlT3ZlcihldmVudDogYW55KSB7XG4gICAgaWYgKCF0aGlzLmNoYW5uZWxEcmFnRml4dHVyZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHBlcmZvcm0gZHJhZ2dpbmdcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gZXZlbnQudGFyZ2V0LmRhdGFzZXQuaW5kZXg7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZCh0aGlzLmNoYW5uZWxEcmFnRml4dHVyZS5wcm9maWxlVXVpZCk7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShwcm9maWxlLCB0aGlzLnNlbGVjdGVkRml4dHVyZSk7XG4gICAgY29uc3QgY2hhbm5lbENvdW50ID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQ2hhbm5lbENvdW50KHByb2ZpbGUsIG1vZGUpO1xuXG4gICAgaWYgKHNlbGVjdGVkSW5kZXggLSB0aGlzLmNoYW5uZWxEcmFnT2Zmc2V0ID49IDAgJiYgc2VsZWN0ZWRJbmRleCAtIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQgKyBjaGFubmVsQ291bnQgLSAxIDw9IDUxMSkge1xuICAgICAgdGhpcy5jaGFubmVsRHJhZ0ZpeHR1cmUuZG14Rmlyc3RDaGFubmVsID0gc2VsZWN0ZWRJbmRleCAtIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgb2soKSB7XG4gICAgLy8gZG9uJ3QgYWxsb3cgT0sgaWYgb3ZlcmxhcHBpbmcgZml4dHVyZXMgZXhpc3RcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZG14Q2hhbm5lbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoYW5uZWxPdmVybGFwcGVkKGkpKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuY2hhbm5lbC1vY2N1cGllZCc7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5jaGFubmVsLW9jY3VwaWVkLXRpdGxlJztcblxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFttc2csIHRpdGxlXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2UuZXJyb3IocmVzdWx0W21zZ10sIHJlc3VsdFt0aXRsZV0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVzID0gdGhpcy5maXh0dXJlUG9vbDtcblxuICAgIC8vIHJlbW92ZSBkZWxldGVkIGZpeHR1cmVzIGZyb20gcHJlc2V0IGZpeHR1cmVzXG4gICAgZm9yIChsZXQgaSA9IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBjb25zdCBwcmVzZXRGaXh0dXJlID0gdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzW2ldO1xuICAgICAgZm9yIChsZXQgZml4dHVyZSBvZiB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZXMpIHtcbiAgICAgICAgaWYgKHByZXNldEZpeHR1cmUuZml4dHVyZVV1aWQgPT09IGZpeHR1cmUudXVpZCkge1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QucHJlc2V0Rml4dHVyZXMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCB0aGUgbmV3IGZpeHR1cmVzIHRvIHRoZSBwcmVzZXQgZml4dHVyZXNcbiAgICBmb3IgKGxldCBmaXh0dXJlIG9mIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlcykge1xuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBwcmVzZXRGaXh0dXJlIG9mIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcykge1xuICAgICAgICBpZiAocHJlc2V0Rml4dHVyZS5maXh0dXJlVXVpZCA9PT0gZml4dHVyZS51dWlkKSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIGlmICh0aGlzLmZpeHR1cmVTZXJ2aWNlLmZpeHR1cmVIYXNHZW5lcmFsQ2hhbm5lbChmaXh0dXJlKSkge1xuICAgICAgICAgIGNvbnN0IHByZXNldEZpeHR1cmUgPSBuZXcgUHJlc2V0Rml4dHVyZSgpO1xuICAgICAgICAgIHByZXNldEZpeHR1cmUuZml4dHVyZVV1aWQgPSBmaXh0dXJlLnV1aWQ7XG4gICAgICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzLnB1c2gocHJlc2V0Rml4dHVyZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaXhlbEtleXMgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmZpeHR1cmVHZXRVbmlxdWVQaXhlbEtleXMoZml4dHVyZSk7XG5cbiAgICAgICAgZm9yIChsZXQgcGl4ZWxLZXkgb2YgcGl4ZWxLZXlzKSB7XG4gICAgICAgICAgY29uc3QgcHJlc2V0Rml4dHVyZSA9IG5ldyBQcmVzZXRGaXh0dXJlKCk7XG4gICAgICAgICAgcHJlc2V0Rml4dHVyZS5maXh0dXJlVXVpZCA9IGZpeHR1cmUudXVpZDtcbiAgICAgICAgICBwcmVzZXRGaXh0dXJlLnBpeGVsS2V5ID0gcGl4ZWxLZXk7XG4gICAgICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzLnB1c2gocHJlc2V0Rml4dHVyZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLnVwZGF0ZUNhY2hlZEZpeHR1cmVzKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnJlbW92ZURlbGV0ZWRGaXh0dXJlcygpO1xuICAgIHRoaXMucHJldmlld1NlcnZpY2UudXBkYXRlRml4dHVyZVNldHVwKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnVwZGF0ZUZpeHR1cmVTZWxlY3Rpb24oKTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UuZml4dHVyZVNlbGVjdGlvbkNoYW5nZWQubmV4dCgpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuXG4gICAgdGhpcy5vbkNsb3NlLm5leHQoMSk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm9uQ2xvc2UubmV4dCgyKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgdXBkYXRlUHJvZmlsZXMoKSB7XG4gICAgdGhpcy51cGRhdGluZ1Byb2ZpbGVzID0gdHJ1ZTtcblxuICAgIC8vIFRPRE9cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlXG4gICAgICAudXBkYXRlUHJvZmlsZXMoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0aW5nUHJvZmlsZXMgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wucHJvZmlsZXMtdXBkYXRlLWVycm9yJztcbiAgICAgICAgICBjb25zdCB0aXRsZSA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wucHJvZmlsZXMtdXBkYXRlLWVycm9yLXRpdGxlJztcblxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKHJlc3VsdFttc2ddLCByZXN1bHRbdGl0bGVdKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkUHJvZmlsZXMoKTtcblxuICAgICAgICBjb25zdCBtc2cgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZWQnO1xuICAgICAgICBjb25zdCB0aXRsZSA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wucHJvZmlsZXMtdXBkYXRlZC10aXRsZSc7XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbbXNnLCB0aXRsZV0pLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0W21zZ10sIHJlc3VsdFt0aXRsZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRml4dHVyZUZyb21Qcm9maWxlRmlsZSgpIHtcbiAgICBjb25zdCBic01vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhGaXh0dXJlUG9vbENyZWF0ZUZyb21GaWxlQ29tcG9uZW50LCB7IGtleWJvYXJkOiB0cnVlLCBpZ25vcmVCYWNrZHJvcENsaWNrOiBmYWxzZSB9KTtcbiAgICAoYnNNb2RhbFJlZi5jb250ZW50IGFzIEZpeHR1cmVQb29sQ3JlYXRlRnJvbUZpbGVDb21wb25lbnQpLm9uQ2xvc2Uuc3Vic2NyaWJlKChwcm9maWxlOiBGaXh0dXJlUHJvZmlsZSkgPT4ge1xuICAgICAgY29uc3QgbmV3Rml4dHVyZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuYWRkRml4dHVyZShwcm9maWxlLCB0aGlzLmZpeHR1cmVQb29sKTtcbiAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZShuZXdGaXh0dXJlKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9rKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC50aXRsZScgfCB0cmFuc2xhdGUgfX08L2g0PlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlIHB1bGwtcmlnaHRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwiY2FuY2VsKCk7IChmYWxzZSlcIj5cbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgPCEtLSBTZWFyY2ggZm9yIHByb2ZpbGVzIC0tPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgaW5wdXQtYmxvY2sgbWItM1wiXG4gICAgICAgIGlkPVwic2VhcmNoU2V0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLnNlYXJjaC1wcm9maWxlcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAoaW5wdXQpPVwic2VhcmNoRXhwcmVzc2lvbiA9ICRldmVudC50YXJnZXQudmFsdWU7IGZpbHRlclByb2ZpbGVzKClcIlxuICAgICAgLz5cblxuICAgICAgPCEtLSBQcm9maWxlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci1zZWNvbmRhcnkgdy0xMDBcIiBzdHlsZT1cImhlaWdodDogMjAwcHhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTAgdy0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoIHctMTAwXCI+XG4gICAgICAgICAgICA8YSAqbmdJZj1cImxvYWRpbmdQcm9maWxlc1wiIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0IGQtZmxleFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgbXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1wdWxzZSBmYS1md1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCIgKm5nRm9yPVwibGV0IHByb2ZpbGUgb2YgZmlsdGVyZWRQcm9maWxlcyB8IHNvcnQgOiAndXVpZCdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTAgY29sLWF1dG8gbXktYXV0byBwbC0yXCI+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXt7IGZpeHR1cmVTZXJ2aWNlLmdldEZpeHR1cmVJY29uQ2xhc3MocHJvZmlsZSkgfX0gbXItMVwiPjwvc3Bhbj4ge3sgcHJvZmlsZS5tYW51ZmFjdHVyZXJOYW1lIH19IC1cbiAgICAgICAgICAgICAgICAgICAge3sgcHJvZmlsZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yIG15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBmbG9hdC1yaWdodFwiIGhyZWY9XCIjXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRGaXh0dXJlKHByb2ZpbGUpOyAoZmFsc2UpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgbWItMCBtdC0yXCI+XG4gICAgICAgICAgUG93ZXJlZCBieSB0aGUgPGEgaHJlZj1cImh0dHBzOi8vb3Blbi1maXh0dXJlLWxpYnJhcnkub3JnL1wiIHRhcmdldD1cIl9ibGFua1wiPk9wZW4gRml4dHVyZSBMaWJyYXJ5PC9hPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJtdC0yIGJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zbSBmbG9hdC1yaWdodFwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vb3Blbi1maXh0dXJlLWxpYnJhcnkub3JnL2ZpeHR1cmUtZWRpdG9yXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1maWxlLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IHt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuYWRkLXByb2ZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnU2VydmljZS5sb2NhbFByb2ZpbGVzXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cIm1yLTIgbXQtMiBidG4gYnRuLXNlY29uZGFyeSBidG4tc20gZmxvYXQtcmlnaHRcIlxuICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVQcm9maWxlcygpOyAoZmFsc2UpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwidXBkYXRpbmdQcm9maWxlc1wiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSAqbmdJZj1cInVwZGF0aW5nUHJvZmlsZXNcIiBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtcHVsc2UgZmEtZndcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPGkgKm5nSWY9XCIhdXBkYXRpbmdQcm9maWxlc1wiIGNsYXNzPVwiZmEgZmEtZG93bmxvYWQgZmEtZndcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAge3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC51cGRhdGUtcHJvZmlsZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDwhLS0gQWRkIGZpeHR1cmUgZnJvbSBsb2NhbCBwcm9maWxlIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZUZpeHR1cmVGcm9tUHJvZmlsZUZpbGUoKVwiIHJvbGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4ge3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5jcmVhdGUtZml4dHVyZS1mcm9tLXByb2ZpbGUtZmlsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBVbml2ZXJzZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctNCBjb2wtZm9ybS1sYWJlbFwiPnt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wudW5pdmVyc2UnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOFwiPlxuICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24+VW5pdmVyc2UgMTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEZpeHR1cmVzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeVwiIHN0eWxlPVwiaGVpZ2h0OiAyMzVweFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIiBbc29ydGFibGVqc109XCJmaXh0dXJlUG9vbFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaXh0dXJlIG9mIGZpeHR1cmVQb29sXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJmaXh0dXJlID09IHNlbGVjdGVkRml4dHVyZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGaXh0dXJlKGZpeHR1cmUpXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGxpc3Qtc29ydC1oYW5kbGUgbXktYXV0b1wiIHN0eWxlPVwiY3Vyc29yOiBtb3ZlOyBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmdcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFyc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZmxleC1ncm93IHBsLTAgbXktYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi17eyBmaXh0dXJlU2VydmljZS5nZXRGaXh0dXJlSWNvbkNsYXNzKGZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCkpIH19IG1yLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID57eyBmaXh0dXJlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGZsb2F0LXJpZ2h0XCIgaHJlZj1cIiNcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZUZpeHR1cmUoZml4dHVyZSk7IChmYWxzZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1taW51c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgIDwhLS0gVGFiIG5hdmlnYXRpb24gLS0+XG4gICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXRhYnMgbWItNFwiIGlkPVwibXlUYWJcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgYWN0aXZlXCIgaWQ9XCJzZXRzLXRhYlwiIGRhdGEtdG9nZ2xlPVwidGFiXCIgaHJlZj1cIiNkbXhcIiByb2xlPVwidGFiXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24tb2xhXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLmRteCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIGlkPVwiY29tcG9zaXRpb25zLXRhYlwiIGRhdGEtdG9nZ2xlPVwidGFiXCIgaHJlZj1cIiNzZXR0aW5nc1wiIHJvbGU9XCJ0YWJcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29nXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLnNldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDwhLS0gVGFiIGNvbnRlbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIiBpZD1cIm15VGFiQ29udGVudFwiPlxuICAgICAgICA8IS0tIERNWCB1bml2ZXJzZSBvdmVydmlldy0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLXBhbmUgc2hvdyBhY3RpdmVcIiBpZD1cImRteFwiIHJvbGU9XCJ0YWJwYW5lbFwiPlxuICAgICAgICAgIDwhLS0gU2hvdyBhbGwgY2hhbm5lbCBudW1iZXJzIC0tPlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZmxleC1ncm93XCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgZC1mbGV4XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LWF1dG8gbWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBpZD1cInNob3dDaGFubmVsTnVtYmVyc1wiIFtuZ01vZGVsXT1cInNob3dDaGFubmVsTnVtYmVyc1wiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzaG93Q2hhbm5lbE51bWJlcnMgPSAkZXZlbnRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2hvd0NoYW5uZWxOdW1iZXJzXCI+U2hvdyBjaGFubmVsczwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPCEtLSBMaXN0IG9mIERNWCBjaGFubmVscyAtLT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hhbm5lbCBvZiBkbXhDaGFubmVsczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG14LWNoYW5uZWxcIlxuICAgICAgICAgICAgICBbY2xhc3MuZG14LWNoYW5uZWwtb2NjdXBpZWRdPVwiY2hhbm5lbE9jY3VwaWVkKGkpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRteC1jaGFubmVsLW9jY3VwaWVkLXN0YXJ0XT1cImNoYW5uZWxPY2N1cGllZFN0YXJ0KGkpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRteC1jaGFubmVsLW9jY3VwaWVkLWVuZF09XCJjaGFubmVsT2NjdXBpZWRFbmQoaSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZG14LWNoYW5uZWwtc2VsZWN0ZWRdPVwiY2hhbm5lbFNlbGVjdGVkKGkpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRteC1jaGFubmVsLW92ZXJsYXBwZWRdPVwiY2hhbm5lbE92ZXJsYXBwZWQoaSlcIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cImNoYW5uZWxNb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiY2hhbm5lbE1vdXNlT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pbmRleF09XCJpXCJcbiAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IGkgKyAxIH19XCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwIGRteC1jaGFubmVsLXRleHRcIiBbYXR0ci5kYXRhLWluZGV4XT1cImlcIiBbY2xhc3MuZG14LWNoYW5uZWwtdGV4dC12aXNpYmxlXT1cInNob3dDaGFubmVsTnVtYmVyc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWF1dG9cIiBzdHlsZT1cImZvbnQtc2l6ZTogMTFweFwiIFthdHRyLmRhdGEtaW5kZXhdPVwiaVwiPjxzbWFsbCBbYXR0ci5kYXRhLWluZGV4XT1cImlcIj4mbmJzcDs8L3NtYWxsPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEZpeHR1cmUgc2V0dGluZ3MgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZVwiIGlkPVwic2V0dGluZ3NcIiByb2xlPVwidGFicGFuZWxcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRGaXh0dXJlICYmIHNlbGVjdGVkRml4dHVyZVByb2ZpbGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBjb2wtZm9ybS1sYWJlbFwiIGZvcj1cImZpeHR1cmVOYW1lXCI+e3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5maXh0dXJlLW5hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRml4dHVyZS5uYW1lXCIgbWF4bGVuZ3RoPVwiMjAwXCIgaWQ9XCJmaXh0dXJlTmFtZVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctMyBjb2wtZm9ybS1sYWJlbFwiPnt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wubW9kZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTlcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRGaXh0dXJlLm1vZGVTaG9ydE5hbWVcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRGaXh0dXJlLm1vZGVTaG9ydE5hbWUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG1vZGUgb2Ygc2VsZWN0ZWRGaXh0dXJlUHJvZmlsZS5tb2Rlc1wiIFtuZ1ZhbHVlXT1cIm1vZGUuc2hvcnROYW1lIHx8IG1vZGUubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtb2RlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgLSB7eyBmaXh0dXJlU2VydmljZS5nZXRNb2RlQ2hhbm5lbENvdW50KHNlbGVjdGVkRml4dHVyZVByb2ZpbGUsIG1vZGUpIH19XG4gICAgICAgICAgICAgICAgICAgIHt7ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuY2hhbm5lbHMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGNvbC1mb3JtLWxhYmVsXCI+e3sgJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5maXJzdC1jaGFubmVsJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkRml4dHVyZS5kbXhGaXJzdENoYW5uZWwgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNoYW5uZWwgb2YgZG14Q2hhbm5lbHM7IGxldCBpID0gaW5kZXhcIiBbbmdWYWx1ZV09XCJpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGkgKyAxIH19XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0zIGNvbC1mb3JtLWxhYmVsXCI+PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiYWRkQ29weShzZWxlY3RlZEZpeHR1cmUpXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnZGVzaWduZXIuZml4dHVyZS5hZGQtY29weScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgPGEgY2xhc3M9XCJtci0zIG15LWF1dG9cIiBocmVmPVwiI1wiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsKCk7IChmYWxzZSlcIj5cbiAgICB7eyAnZGVzaWduZXIubWlzYy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gIDwvYT5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib2soKVwiPnt7ICdkZXNpZ25lci5taXNjLm9rJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -113,8 +113,6 @@ export class PreviewComponent {
|
|
|
113
113
|
fixture3d.isSelected = this.previewService.fixtureIsSelected(fixture3d.fixture.fixture.uuid, fixture3d.fixture.pixelKey, presets);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
// TODO enable for monitoring the DMX universes
|
|
117
|
-
this.previewService.setUniverseValues(calculatedFixtures, this.projectService.project.masterDimmerValue);
|
|
118
116
|
// Render the scene
|
|
119
117
|
this.render();
|
|
120
118
|
requestAnimationFrame(this.animate.bind(this));
|
|
@@ -216,4 +214,4 @@ export class PreviewComponent {
|
|
|
216
214
|
args: ['window:resize']
|
|
217
215
|
}] }); })();
|
|
218
216
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PreviewComponent, { className: "PreviewComponent" }); })();
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDVSxjQUE4QixFQUM5QixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGNBQThCO1FBTDlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFYaEMsZUFBVSxHQUFnQixFQUFFLENBQUM7UUFhbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsc0RBQXNEO0lBQzlDLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNULENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVyQixvQ0FBb0M7UUFDcEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pELFFBQVEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsS0FBSyxlQUFlLENBQUMsYUFBYSxDQUFDO29CQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzFHLE1BQU07Z0JBQ1IsS0FBSyxlQUFlLENBQUMsZUFBZSxDQUFDO29CQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzVHLE1BQU07Z0JBQ1IsS0FBSyxlQUFlLENBQUMsU0FBUyxDQUFDO29CQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzVHLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFZLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsV0FBd0IsRUFDeEIsSUFBWSxFQUNaLElBQVksRUFDWixJQUFZLEVBQ1osSUFBWSxFQUNaLElBQVksRUFDWixJQUFZO1FBRVosSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsMENBQTBDO1FBQ2pFLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFFLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDeEMsYUFBYSxFQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQ2pGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQ2pGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBRWpGLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxPQUFPLENBQUMsVUFBa0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqRCw4RUFBOEU7WUFDOUUsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUN2RSxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFOUMsc0JBQXNCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLFdBQVcsQ0FBQyxRQUFRLEVBQ3BCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsRUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsRUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUMxRixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzFGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsV0FBVyxDQUFDLFdBQVcsRUFDdkIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsV0FBVyxDQUFDLE9BQU8sRUFDbkIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzFGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDMUYsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFDbEQsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDbkQsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsV0FBVyxDQUFDLFVBQVUsRUFDdEIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQzlDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQ2xELENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQ25ELENBQUM7UUFFRixxRUFBcUU7UUFDckUsb0hBQW9IO1FBQ3BILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFckYsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsZ0NBQWdDO1lBQ2hDLFNBQVMsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUV4SCxrQ0FBa0M7WUFDbEMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xHLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BJLENBQUM7UUFDSCxDQUFDO1FBRUQsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV6RyxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWQscUJBQXFCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUV4QyxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQzVELENBQUM7SUFHTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekUsMENBQTBDO1FBQzFDLG1DQUFtQztRQUNuQyxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsZ0NBQWdDO0lBQ2xDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLHFEQUFxRDtRQUNyRCx1REFBdUQ7UUFFdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV2QyxvQ0FBb0M7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4Qiw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7aUZBclFVLGdCQUFnQjtvRUFBaEIsZ0JBQWdCOzs7Ozs7WUFBaEIsdUZBQUEsY0FBVSwrQkFBTTs7WUNwQjdCLDRCQUEwRDs7O2lGRG9CN0MsZ0JBQWdCO2NBTDVCLFNBQVM7MkJBQ0UsaUJBQWlCO3VNQWFuQixTQUFTO2tCQURoQixTQUFTO21CQUFDLFFBQVE7WUE2S1osUUFBUTtrQkFEZCxZQUFZO21CQUFDLGVBQWU7O2tGQXBMbEIsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgT3JiaXRDb250cm9scyB9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9jb250cm9scy9PcmJpdENvbnRyb2xzJztcbmltcG9ydCB7IEZpeHR1cmVDYXRlZ29yeSB9IGZyb20gJy4uL21vZGVscy9maXh0dXJlLXByb2ZpbGUnO1xuaW1wb3J0IHsgRml4dHVyZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9maXh0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJldmlld01lc2hTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJldmlldy1tZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJldmlld1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmV2aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVGltZWxpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGltZWxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBQb3NpdGlvbmluZyB9IGZyb20gJy4vLi4vbW9kZWxzL2ZpeHR1cmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uU2VydmljZSB9IGZyb20gJy4vLi4vc2VydmljZXMvYW5pbWF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29sb3JDaGFuZ2VyM2QgfSBmcm9tICcuL21vZGVscy9jb2xvci1jaGFuZ2VyLTNkJztcbmltcG9ydCB7IEZpeHR1cmUzZCB9IGZyb20gJy4vbW9kZWxzL2ZpeHR1cmUtM2QnO1xuaW1wb3J0IHsgTW92aW5nSGVhZDNkIH0gZnJvbSAnLi9tb2RlbHMvbW92aW5nLWhlYWQtM2QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLXByZXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXZpZXcuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFRIUkVFLldlYkdMUmVuZGVyZXI7XG4gIHByaXZhdGUgc2NlbmU6IFRIUkVFLlNjZW5lO1xuICBwcml2YXRlIGNhbWVyYTogVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmE7XG4gIHB1YmxpYyBjb250cm9sczogT3JiaXRDb250cm9scztcblxuICBwcml2YXRlIGZpeHR1cmVzM2Q6IEZpeHR1cmUzZFtdID0gW107XG5cbiAgQFZpZXdDaGlsZCgnY2FudmFzJylcbiAgcHJpdmF0ZSBjYW52YXNSZWY6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaXh0dXJlU2VydmljZTogRml4dHVyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmV2aWV3TWVzaFNlcnZpY2U6IFByZXZpZXdNZXNoU2VydmljZSxcbiAgICBwcml2YXRlIGFuaW1hdGlvblNlcnZpY2U6IEFuaW1hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmV2aWV3U2VydmljZTogUHJldmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aW1lbGluZVNlcnZpY2U6IFRpbWVsaW5lU2VydmljZSxcbiAgICBwcml2YXRlIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZVxuICApIHtcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLmRvVXBkYXRlRml4dHVyZVNldHVwLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNGaXh0dXJlcygpO1xuICAgIH0pO1xuICAgIHRoaXMuc3luY0ZpeHR1cmVzKCk7XG4gIH1cblxuICAvLyBzeW5jaHJvbml6ZSB0aGUgM2QtZml4dHVyZXMgdG8gdGhlIHByb2plY3QgZml4dHVyZXNcbiAgcHJpdmF0ZSBzeW5jRml4dHVyZXMoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZpZXdTZXJ2aWNlLnNjZW5lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGFsbCBmaXh0dXJlc1xuICAgIGZvciAoY29uc3QgZml4dHVyZTNkIG9mIHRoaXMuZml4dHVyZXMzZCkge1xuICAgICAgZml4dHVyZTNkLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5maXh0dXJlczNkID0gW107XG5cbiAgICAvLyBhZGQgYWxsIGZpeHR1cmVzIGZyb20gdGhlIHByb2plY3RcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlU2VydmljZS5jYWNoZWRGaXh0dXJlcykge1xuICAgICAgc3dpdGNoIChmaXh0dXJlLnByb2ZpbGUuY2F0ZWdvcmllc1swXSkge1xuICAgICAgICBjYXNlIEZpeHR1cmVDYXRlZ29yeVsnTW92aW5nIEhlYWQnXTpcbiAgICAgICAgICB0aGlzLmZpeHR1cmVzM2QucHVzaChuZXcgTW92aW5nSGVhZDNkKHRoaXMuZml4dHVyZVNlcnZpY2UsIHRoaXMucHJldmlld01lc2hTZXJ2aWNlLCBmaXh0dXJlLCB0aGlzLnNjZW5lKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRml4dHVyZUNhdGVnb3J5WydDb2xvciBDaGFuZ2VyJ106XG4gICAgICAgICAgdGhpcy5maXh0dXJlczNkLnB1c2gobmV3IENvbG9yQ2hhbmdlcjNkKHRoaXMuZml4dHVyZVNlcnZpY2UsIHRoaXMucHJldmlld01lc2hTZXJ2aWNlLCBmaXh0dXJlLCB0aGlzLnNjZW5lKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRml4dHVyZUNhdGVnb3J5WydCbGluZGVyJ106XG4gICAgICAgICAgdGhpcy5maXh0dXJlczNkLnB1c2gobmV3IENvbG9yQ2hhbmdlcjNkKHRoaXMuZml4dHVyZVNlcnZpY2UsIHRoaXMucHJldmlld01lc2hTZXJ2aWNlLCBmaXh0dXJlLCB0aGlzLnNjZW5lKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgY2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5jYW52YXNSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyKCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuc2NlbmUsIHRoaXMuY2FtZXJhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhZ2VQb3NpdGlvbihcbiAgICBwb3NpdGlvbmluZzogUG9zaXRpb25pbmcsXG4gICAgeE1pbjogbnVtYmVyLFxuICAgIHhNYXg6IG51bWJlcixcbiAgICB5TWluOiBudW1iZXIsXG4gICAgeU1heDogbnVtYmVyLFxuICAgIHpNaW46IG51bWJlcixcbiAgICB6TWF4OiBudW1iZXJcbiAgKSB7XG4gICAgbGV0IHBvc2l0aW9uQ291bnQgPSAwOyAvLyBOdW1iZXIgb2YgZml4dHVyZXMgaW4gdGhlIHNhbWUgcG9zaXRpb25cbiAgICBsZXQgcG9zaXRpb25JbmRleCA9IDE7XG5cbiAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QucHJlc2V0Rml4dHVyZXMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGZpeHR1cmUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldEZpeHR1cmVCeVV1aWQoZWxlbWVudC5maXh0dXJlVXVpZCk7XG4gICAgICBpZiAoZml4dHVyZS5wb3NpdGlvbmluZyA9PT0gcG9zaXRpb25pbmcpIHtcbiAgICAgICAgcG9zaXRpb25Db3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBmaXh0dXJlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRGaXh0dXJlQnlVdWlkKGVsZW1lbnQuZml4dHVyZVV1aWQpO1xuICAgICAgaWYgKGZpeHR1cmUucG9zaXRpb25pbmcgPT09IHBvc2l0aW9uaW5nKSB7XG4gICAgICAgIGZpeHR1cmUucG9zaXRpb25YID0geE1pbiArICgoeE1heCAtIHhNaW4pIC8gKHBvc2l0aW9uQ291bnQgKyAxKSkgKiBwb3NpdGlvbkluZGV4O1xuICAgICAgICBmaXh0dXJlLnBvc2l0aW9uWSA9IHlNaW4gKyAoKHlNYXggLSB5TWluKSAvIChwb3NpdGlvbkNvdW50ICsgMSkpICogcG9zaXRpb25JbmRleDtcbiAgICAgICAgZml4dHVyZS5wb3NpdGlvblogPSB6TWluICsgKCh6TWF4IC0gek1pbikgLyAocG9zaXRpb25Db3VudCArIDEpKSAqIHBvc2l0aW9uSW5kZXg7XG5cbiAgICAgICAgcG9zaXRpb25JbmRleCsrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhbmltYXRlKHRpbWVNaWxsaXM6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRpbWVsaW5lU2VydmljZS5wbGF5U3RhdGUgPT09ICdwbGF5aW5nJykge1xuICAgICAgLy8gT3ZlcndyaXRlIHRoZSBjdXJyZW50IHRpbWUgd2l0aCB0aGUgcGxheWluZyB0aW1lLCBpZiB3ZSdyZSBpbiBwbGF5YmFjayBtb2RlXG4gICAgICB0aW1lTWlsbGlzID0gdGhpcy50aW1lbGluZVNlcnZpY2Uud2F2ZVN1cmZlci5nZXRDdXJyZW50VGltZSgpICogMTAwMDtcbiAgICB9XG5cbiAgICB0aGlzLmFuaW1hdGlvblNlcnZpY2UudGltZU1pbGxpcyA9IHRpbWVNaWxsaXM7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGNvbnRyb2xzXG4gICAgaWYgKHRoaXMuY29udHJvbHMpIHtcbiAgICAgIHRoaXMuY29udHJvbHMudXBkYXRlKCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbnNcbiAgICB0aGlzLnVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgICBQb3NpdGlvbmluZy50b3BGcm9udCxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlSGVpZ2h0Q20gKyB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlSGVpZ2h0Q20gKyB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgLSA3MCxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyIC0gNzBcbiAgICApO1xuICAgIHRoaXMudXBkYXRlU3RhZ2VQb3NpdGlvbihcbiAgICAgIFBvc2l0aW9uaW5nLmJvdHRvbUZyb250LFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyIC0gNzAsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiAtIDcwXG4gICAgKTtcbiAgICB0aGlzLnVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgICBQb3NpdGlvbmluZy50b3BCYWNrLFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VIZWlnaHRDbSArIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VIZWlnaHRDbSArIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgKyA3MCxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiArIDcwXG4gICAgKTtcbiAgICB0aGlzLnVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgICBQb3NpdGlvbmluZy5ib3R0b21CYWNrLFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiArIDcwLFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyICsgNzBcbiAgICApO1xuXG4gICAgLy8gVXBkYXRlIGFsbCBmaXh0dXJlcyBhbmQgYXBwbHkgdGhlIHByZXZpZXcgcHJvcGVydGllcywgaWYgYXZhaWxhYmxlXG4gICAgLy8gVE9ETyBVcGRhdGUgdGhlIGZpeHR1cmVzIG9ubHkgZS5nLiA0MCB0aW1lcyBwZXIgc2Vjb25kIGFjY29yZGluZyB0byB0aGUgXCJyZWFsXCIgcmVmcmVzaCByYXRlIG9mIHRoZSBETVggaW50ZXJmYWNlP1xuICAgIGNvbnN0IHByZXNldHMgPSB0aGlzLnByZXZpZXdTZXJ2aWNlLmdldFByZXNldHModGltZU1pbGxpcyk7XG5cbiAgICBjb25zdCBjYWxjdWxhdGVkRml4dHVyZXMgPSB0aGlzLnByZXZpZXdTZXJ2aWNlLmdldENoYW5uZWxWYWx1ZXModGltZU1pbGxpcywgcHJlc2V0cyk7XG5cbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUzZCBvZiB0aGlzLmZpeHR1cmVzM2QpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgZml4dHVyZSBwcm9wZXJ0aWVzXG4gICAgICBmaXh0dXJlM2QudXBkYXRlUHJldmlldyhjYWxjdWxhdGVkRml4dHVyZXMuZ2V0KGZpeHR1cmUzZC5maXh0dXJlKSB8fCBbXSwgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0Lm1hc3RlckRpbW1lclZhbHVlKTtcblxuICAgICAgLy8gU2VsZWN0IHRoZSBmaXh0dXJlLCBpZiByZXF1aXJlZFxuICAgICAgaWYgKHRoaXMuZml4dHVyZVNlcnZpY2Uuc2V0dGluZ3NTZWxlY3Rpb24pIHtcbiAgICAgICAgZml4dHVyZTNkLmlzU2VsZWN0ZWQgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLnNldHRpbmdzRml4dHVyZUlzU2VsZWN0ZWQoZml4dHVyZTNkLmZpeHR1cmUuZml4dHVyZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXh0dXJlM2QuaXNTZWxlY3RlZCA9IHRoaXMucHJldmlld1NlcnZpY2UuZml4dHVyZUlzU2VsZWN0ZWQoZml4dHVyZTNkLmZpeHR1cmUuZml4dHVyZS51dWlkLCBmaXh0dXJlM2QuZml4dHVyZS5waXhlbEtleSwgcHJlc2V0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETyBlbmFibGUgZm9yIG1vbml0b3JpbmcgdGhlIERNWCB1bml2ZXJzZXNcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnNldFVuaXZlcnNlVmFsdWVzKGNhbGN1bGF0ZWRGaXh0dXJlcywgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0Lm1hc3RlckRpbW1lclZhbHVlKTtcblxuICAgIC8vIFJlbmRlciB0aGUgc2NlbmVcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNwZWN0UmF0aW8oKTogbnVtYmVyIHtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQ7XG5cbiAgICBpZiAoaGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYW52YXMuY2xpZW50V2lkdGggLyB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FtZXJhLmFzcGVjdCA9IHRoaXMuZ2V0QXNwZWN0UmF0aW8oKTtcbiAgICB0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHRoaXMuY2FudmFzLmNsaWVudFdpZHRoLCB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlbmRlcmVyKCkge1xuICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJlcih7IGFudGlhbGlhczogdHJ1ZSB9KTtcbiAgICB0aGlzLmNhbnZhcy5hcHBlbmRDaGlsZCh0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhkZXZpY2VQaXhlbFJhdGlvKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFNpemUodGhpcy5jYW52YXMuY2xpZW50V2lkdGgsIHRoaXMuY2FudmFzLmNsaWVudEhlaWdodCk7XG4gICAgLy8gdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAuZW5hYmxlZCA9IHRydWU7XG4gICAgLy8gdGhpcy5yZW5kZXJlci5nYW1tYUlucHV0ID0gdHJ1ZTtcbiAgICAvLyB0aGlzLnJlbmRlcmVyLmdhbW1hT3V0cHV0ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDYW1lcmEoKSB7XG4gICAgdGhpcy5jYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoMzUsIHdpbmRvdy5pbm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0LCAxLCAxMDAwMCk7XG4gICAgdGhpcy5jYW1lcmEucG9zaXRpb24uc2V0KC02MDAsIDgwLCA3MDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENvbnRyb2xzKCkge1xuICAgIHRoaXMuY29udHJvbHMgPSBuZXcgT3JiaXRDb250cm9scyh0aGlzLmNhbWVyYSwgdGhpcy5yZW5kZXJlci5kb21FbGVtZW50KTtcbiAgICB0aGlzLmNvbnRyb2xzLmVuYWJsZUtleXMgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRyb2xzLnJvdGF0ZVNwZWVkID0gMC4wNTtcbiAgICB0aGlzLmNvbnRyb2xzLnpvb21TcGVlZCA9IDEuMjtcbiAgICB0aGlzLmNvbnRyb2xzLmVuYWJsZURhbXBpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29udHJvbHMuZGFtcGluZ0ZhY3RvciA9IDAuMjU7XG4gICAgdGhpcy5jb250cm9scy5zY3JlZW5TcGFjZVBhbm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRyb2xzLm1pbkRpc3RhbmNlID0gNzAwO1xuICAgIC8vIHRoaXMuY29udHJvbHMuem9vbSA9IDEwMDA7XG4gICAgdGhpcy5jb250cm9scy5tYXhEaXN0YW5jZSA9IDIwMDA7XG4gICAgdGhpcy5jb250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDI7XG4gICAgdGhpcy5jb250cm9scy50YXJnZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygwLCAyMDAsIDApO1xuICAgIC8vIHRoaXMuY29udHJvbHMucm90YXRpb24gPSAxMDA7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU2NlbmUoKSB7XG4gICAgLy8gQ3JlYXRlIGEgbmV3IHNjZW5lXG4gICAgdGhpcy5zY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xuICAgIC8vIHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IG5ldyBUSFJFRS5Db2xvcigweDA4MDgwOCk7XG4gICAgLy8gdGhpcy5zY2VuZS5mb2dcdD0gbmV3IFRIUkVFLkZvZ0V4cDIoIDB4MDAwMDAwLCAwLjEgKTtcblxuICAgIHRoaXMucHJldmlld1NlcnZpY2Uuc2NlbmUgPSB0aGlzLnNjZW5lO1xuXG4gICAgLy8gQWRkIGEgbGl0dGxlIGJpdCBvZiBhbWJpZW50IGxpZ2h0XG4gICAgY29uc3QgYW1iaWVudCA9IG5ldyBUSFJFRS5BbWJpZW50TGlnaHQoMHhmZmZmZmYsIDEuOCk7XG4gICAgdGhpcy5zY2VuZS5hZGQoYW1iaWVudCk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHN0YWdlIGRpbWVuc2lvbnNcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnVwZGF0ZVN0YWdlKCk7XG5cbiAgICBjb25zdCBsaWdodHMgPSBbXTtcbiAgICBsaWdodHNbMF0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcbiAgICBsaWdodHNbMV0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcbiAgICBsaWdodHNbMl0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcblxuICAgIGxpZ2h0c1swXS5wb3NpdGlvbi5zZXQoMCwgMjAwMCwgMCk7XG4gICAgbGlnaHRzWzFdLnBvc2l0aW9uLnNldCgxMDAwLCAyMDAwLCAxMDAwKTtcbiAgICBsaWdodHNbMl0ucG9zaXRpb24uc2V0KC0xMDAwLCAtMjAwMCwgLTEwMDApO1xuXG4gICAgbGlnaHRzWzBdLmNhc3RTaGFkb3cgPSB0cnVlO1xuICAgIGxpZ2h0c1sxXS5jYXN0U2hhZG93ID0gdHJ1ZTtcbiAgICBsaWdodHNbMl0uY2FzdFNoYWRvdyA9IHRydWU7XG5cbiAgICB0aGlzLnNjZW5lLmFkZChsaWdodHNbMF0pO1xuICAgIHRoaXMuc2NlbmUuYWRkKGxpZ2h0c1sxXSk7XG4gICAgdGhpcy5zY2VuZS5hZGQobGlnaHRzWzJdKTtcblxuICAgIHRoaXMucHJldmlld1NlcnZpY2UudXBkYXRlRml4dHVyZVNldHVwKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cFJlbmRlcmVyKCk7XG4gICAgdGhpcy5zZXR1cENhbWVyYSgpO1xuICAgIHRoaXMuc2V0dXBDb250cm9scygpO1xuICAgIHRoaXMuc2V0dXBTY2VuZSgpO1xuXG4gICAgdGhpcy5vblJlc2l6ZSgpO1xuICAgIHRoaXMuYW5pbWF0ZShudWxsKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImgtMTAwXCIgI2NhbnZhcyBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj48L2Rpdj5cbiJdfQ==
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFDVSxjQUE4QixFQUM5QixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVB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QyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO2lGQWxRVSxnQkFBZ0I7b0VBQWhCLGdCQUFnQjs7Ozs7O1lBQWhCLHVGQUFBLGNBQVUsK0JBQU07O1lDcEI3Qiw0QkFBMEQ7OztpRkRvQjdDLGdCQUFnQjtjQUw1QixTQUFTOzJCQUNFLGlCQUFpQjt1TUFhbkIsU0FBUztrQkFEaEIsU0FBUzttQkFBQyxRQUFRO1lBMEtaLFFBQVE7a0JBRGQsWUFBWTttQkFBQyxlQUFlOztrRkFqTGxCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE9yYml0Q29udHJvbHMgfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vY29udHJvbHMvT3JiaXRDb250cm9scyc7XG5pbXBvcnQgeyBGaXh0dXJlQ2F0ZWdvcnkgfSBmcm9tICcuLi9tb2RlbHMvZml4dHVyZS1wcm9maWxlJztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZml4dHVyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXZpZXdNZXNoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXZpZXctbWVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmcgfSBmcm9tICcuLy4uL21vZGVscy9maXh0dXJlJztcbmltcG9ydCB7IEFuaW1hdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL2FuaW1hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbG9yQ2hhbmdlcjNkIH0gZnJvbSAnLi9tb2RlbHMvY29sb3ItY2hhbmdlci0zZCc7XG5pbXBvcnQgeyBGaXh0dXJlM2QgfSBmcm9tICcuL21vZGVscy9maXh0dXJlLTNkJztcbmltcG9ydCB7IE1vdmluZ0hlYWQzZCB9IGZyb20gJy4vbW9kZWxzL21vdmluZy1oZWFkLTNkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlbmRlcmVyOiBUSFJFRS5XZWJHTFJlbmRlcmVyO1xuICBwcml2YXRlIHNjZW5lOiBUSFJFRS5TY2VuZTtcbiAgcHJpdmF0ZSBjYW1lcmE6IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhO1xuICBwdWJsaWMgY29udHJvbHM6IE9yYml0Q29udHJvbHM7XG5cbiAgcHJpdmF0ZSBmaXh0dXJlczNkOiBGaXh0dXJlM2RbXSA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhcycpXG4gIHByaXZhdGUgY2FudmFzUmVmOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZml4dHVyZVNlcnZpY2U6IEZpeHR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld01lc2hTZXJ2aWNlOiBQcmV2aWV3TWVzaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbmltYXRpb25TZXJ2aWNlOiBBbmltYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGltZWxpbmVTZXJ2aWNlOiBUaW1lbGluZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wcmV2aWV3U2VydmljZS5kb1VwZGF0ZUZpeHR1cmVTZXR1cC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zeW5jRml4dHVyZXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLnN5bmNGaXh0dXJlcygpO1xuICB9XG5cbiAgLy8gc3luY2hyb25pemUgdGhlIDNkLWZpeHR1cmVzIHRvIHRoZSBwcm9qZWN0IGZpeHR1cmVzXG4gIHByaXZhdGUgc3luY0ZpeHR1cmVzKCkge1xuICAgIGlmICghdGhpcy5wcmV2aWV3U2VydmljZS5zY2VuZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBhbGwgZml4dHVyZXNcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUzZCBvZiB0aGlzLmZpeHR1cmVzM2QpIHtcbiAgICAgIGZpeHR1cmUzZC5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuZml4dHVyZXMzZCA9IFtdO1xuXG4gICAgLy8gYWRkIGFsbCBmaXh0dXJlcyBmcm9tIHRoZSBwcm9qZWN0XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVNlcnZpY2UuY2FjaGVkRml4dHVyZXMpIHtcbiAgICAgIHN3aXRjaCAoZml4dHVyZS5wcm9maWxlLmNhdGVnb3JpZXNbMF0pIHtcbiAgICAgICAgY2FzZSBGaXh0dXJlQ2F0ZWdvcnlbJ01vdmluZyBIZWFkJ106XG4gICAgICAgICAgdGhpcy5maXh0dXJlczNkLnB1c2gobmV3IE1vdmluZ0hlYWQzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpeHR1cmVDYXRlZ29yeVsnQ29sb3IgQ2hhbmdlciddOlxuICAgICAgICAgIHRoaXMuZml4dHVyZXMzZC5wdXNoKG5ldyBDb2xvckNoYW5nZXIzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpeHR1cmVDYXRlZ29yeVsnQmxpbmRlciddOlxuICAgICAgICAgIHRoaXMuZml4dHVyZXMzZC5wdXNoKG5ldyBDb2xvckNoYW5nZXIzZCh0aGlzLmZpeHR1cmVTZXJ2aWNlLCB0aGlzLnByZXZpZXdNZXNoU2VydmljZSwgZml4dHVyZSwgdGhpcy5zY2VuZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNhbnZhcygpOiBIVE1MQ2FudmFzRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuY2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcigpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLCB0aGlzLmNhbWVyYSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgcG9zaXRpb25pbmc6IFBvc2l0aW9uaW5nLFxuICAgIHhNaW46IG51bWJlcixcbiAgICB4TWF4OiBudW1iZXIsXG4gICAgeU1pbjogbnVtYmVyLFxuICAgIHlNYXg6IG51bWJlcixcbiAgICB6TWluOiBudW1iZXIsXG4gICAgek1heDogbnVtYmVyXG4gICkge1xuICAgIGxldCBwb3NpdGlvbkNvdW50ID0gMDsgLy8gTnVtYmVyIG9mIGZpeHR1cmVzIGluIHRoZSBzYW1lIHBvc2l0aW9uXG4gICAgbGV0IHBvc2l0aW9uSW5kZXggPSAxO1xuXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldEZpeHR1cmVzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBmaXh0dXJlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRGaXh0dXJlQnlVdWlkKGVsZW1lbnQuZml4dHVyZVV1aWQpO1xuICAgICAgaWYgKGZpeHR1cmUucG9zaXRpb25pbmcgPT09IHBvc2l0aW9uaW5nKSB7XG4gICAgICAgIHBvc2l0aW9uQ291bnQrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgZml4dHVyZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0Rml4dHVyZUJ5VXVpZChlbGVtZW50LmZpeHR1cmVVdWlkKTtcbiAgICAgIGlmIChmaXh0dXJlLnBvc2l0aW9uaW5nID09PSBwb3NpdGlvbmluZykge1xuICAgICAgICBmaXh0dXJlLnBvc2l0aW9uWCA9IHhNaW4gKyAoKHhNYXggLSB4TWluKSAvIChwb3NpdGlvbkNvdW50ICsgMSkpICogcG9zaXRpb25JbmRleDtcbiAgICAgICAgZml4dHVyZS5wb3NpdGlvblkgPSB5TWluICsgKCh5TWF4IC0geU1pbikgLyAocG9zaXRpb25Db3VudCArIDEpKSAqIHBvc2l0aW9uSW5kZXg7XG4gICAgICAgIGZpeHR1cmUucG9zaXRpb25aID0gek1pbiArICgoek1heCAtIHpNaW4pIC8gKHBvc2l0aW9uQ291bnQgKyAxKSkgKiBwb3NpdGlvbkluZGV4O1xuXG4gICAgICAgIHBvc2l0aW9uSW5kZXgrKztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYW5pbWF0ZSh0aW1lTWlsbGlzOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy50aW1lbGluZVNlcnZpY2UucGxheVN0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgY3VycmVudCB0aW1lIHdpdGggdGhlIHBsYXlpbmcgdGltZSwgaWYgd2UncmUgaW4gcGxheWJhY2sgbW9kZVxuICAgICAgdGltZU1pbGxpcyA9IHRoaXMudGltZWxpbmVTZXJ2aWNlLndhdmVTdXJmZXIuZ2V0Q3VycmVudFRpbWUoKSAqIDEwMDA7XG4gICAgfVxuXG4gICAgdGhpcy5hbmltYXRpb25TZXJ2aWNlLnRpbWVNaWxsaXMgPSB0aW1lTWlsbGlzO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjb250cm9sc1xuICAgIGlmICh0aGlzLmNvbnRyb2xzKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgcG9zaXRpb25zXG4gICAgdGhpcy51cGRhdGVTdGFnZVBvc2l0aW9uKFxuICAgICAgUG9zaXRpb25pbmcudG9wRnJvbnQsXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSAvIDIsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUhlaWdodENtICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUhlaWdodENtICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyIC0gNzAsXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiAtIDcwXG4gICAgKTtcbiAgICB0aGlzLnVwZGF0ZVN0YWdlUG9zaXRpb24oXG4gICAgICBQb3NpdGlvbmluZy5ib3R0b21Gcm9udCxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiAtIDcwLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgLSA3MFxuICAgICk7XG4gICAgdGhpcy51cGRhdGVTdGFnZVBvc2l0aW9uKFxuICAgICAgUG9zaXRpb25pbmcudG9wQmFjayxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlSGVpZ2h0Q20gKyB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlSGVpZ2h0Q20gKyB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtLFxuICAgICAgLXRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ20gLyAyICsgNzAsXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgKyA3MFxuICAgICk7XG4gICAgdGhpcy51cGRhdGVTdGFnZVBvc2l0aW9uKFxuICAgICAgUG9zaXRpb25pbmcuYm90dG9tQmFjayxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtIC8gMixcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gLyAyLFxuICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbSxcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20sXG4gICAgICAtdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSAvIDIgKyA3MCxcbiAgICAgIC10aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtIC8gMiArIDcwXG4gICAgKTtcblxuICAgIC8vIFVwZGF0ZSBhbGwgZml4dHVyZXMgYW5kIGFwcGx5IHRoZSBwcmV2aWV3IHByb3BlcnRpZXMsIGlmIGF2YWlsYWJsZVxuICAgIC8vIFRPRE8gVXBkYXRlIHRoZSBmaXh0dXJlcyBvbmx5IGUuZy4gNDAgdGltZXMgcGVyIHNlY29uZCBhY2NvcmRpbmcgdG8gdGhlIFwicmVhbFwiIHJlZnJlc2ggcmF0ZSBvZiB0aGUgRE1YIGludGVyZmFjZT9cbiAgICBjb25zdCBwcmVzZXRzID0gdGhpcy5wcmV2aWV3U2VydmljZS5nZXRQcmVzZXRzKHRpbWVNaWxsaXMpO1xuXG4gICAgY29uc3QgY2FsY3VsYXRlZEZpeHR1cmVzID0gdGhpcy5wcmV2aWV3U2VydmljZS5nZXRDaGFubmVsVmFsdWVzKHRpbWVNaWxsaXMsIHByZXNldHMpO1xuXG4gICAgZm9yIChjb25zdCBmaXh0dXJlM2Qgb2YgdGhpcy5maXh0dXJlczNkKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIGZpeHR1cmUgcHJvcGVydGllc1xuICAgICAgZml4dHVyZTNkLnVwZGF0ZVByZXZpZXcoY2FsY3VsYXRlZEZpeHR1cmVzLmdldChmaXh0dXJlM2QuZml4dHVyZSkgfHwgW10sIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5tYXN0ZXJEaW1tZXJWYWx1ZSk7XG5cbiAgICAgIC8vIFNlbGVjdCB0aGUgZml4dHVyZSwgaWYgcmVxdWlyZWRcbiAgICAgIGlmICh0aGlzLmZpeHR1cmVTZXJ2aWNlLnNldHRpbmdzU2VsZWN0aW9uKSB7XG4gICAgICAgIGZpeHR1cmUzZC5pc1NlbGVjdGVkID0gdGhpcy5maXh0dXJlU2VydmljZS5zZXR0aW5nc0ZpeHR1cmVJc1NlbGVjdGVkKGZpeHR1cmUzZC5maXh0dXJlLmZpeHR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZml4dHVyZTNkLmlzU2VsZWN0ZWQgPSB0aGlzLnByZXZpZXdTZXJ2aWNlLmZpeHR1cmVJc1NlbGVjdGVkKGZpeHR1cmUzZC5maXh0dXJlLmZpeHR1cmUudXVpZCwgZml4dHVyZTNkLmZpeHR1cmUucGl4ZWxLZXksIHByZXNldHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbmRlciB0aGUgc2NlbmVcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXNwZWN0UmF0aW8oKTogbnVtYmVyIHtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQ7XG5cbiAgICBpZiAoaGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYW52YXMuY2xpZW50V2lkdGggLyB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FtZXJhLmFzcGVjdCA9IHRoaXMuZ2V0QXNwZWN0UmF0aW8oKTtcbiAgICB0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTaXplKHRoaXMuY2FudmFzLmNsaWVudFdpZHRoLCB0aGlzLmNhbnZhcy5jbGllbnRIZWlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlbmRlcmVyKCkge1xuICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJlcih7IGFudGlhbGlhczogdHJ1ZSB9KTtcbiAgICB0aGlzLmNhbnZhcy5hcHBlbmRDaGlsZCh0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhkZXZpY2VQaXhlbFJhdGlvKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFNpemUodGhpcy5jYW52YXMuY2xpZW50V2lkdGgsIHRoaXMuY2FudmFzLmNsaWVudEhlaWdodCk7XG4gICAgLy8gdGhpcy5yZW5kZXJlci5zaGFkb3dNYXAuZW5hYmxlZCA9IHRydWU7XG4gICAgLy8gdGhpcy5yZW5kZXJlci5nYW1tYUlucHV0ID0gdHJ1ZTtcbiAgICAvLyB0aGlzLnJlbmRlcmVyLmdhbW1hT3V0cHV0ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDYW1lcmEoKSB7XG4gICAgdGhpcy5jYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoMzUsIHdpbmRvdy5pbm5lcldpZHRoIC8gd2luZG93LmlubmVySGVpZ2h0LCAxLCAxMDAwMCk7XG4gICAgdGhpcy5jYW1lcmEucG9zaXRpb24uc2V0KC02MDAsIDgwLCA3MDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENvbnRyb2xzKCkge1xuICAgIHRoaXMuY29udHJvbHMgPSBuZXcgT3JiaXRDb250cm9scyh0aGlzLmNhbWVyYSwgdGhpcy5yZW5kZXJlci5kb21FbGVtZW50KTtcbiAgICB0aGlzLmNvbnRyb2xzLmVuYWJsZUtleXMgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRyb2xzLnJvdGF0ZVNwZWVkID0gMC4wNTtcbiAgICB0aGlzLmNvbnRyb2xzLnpvb21TcGVlZCA9IDEuMjtcbiAgICB0aGlzLmNvbnRyb2xzLmVuYWJsZURhbXBpbmcgPSB0cnVlO1xuICAgIHRoaXMuY29udHJvbHMuZGFtcGluZ0ZhY3RvciA9IDAuMjU7XG4gICAgdGhpcy5jb250cm9scy5zY3JlZW5TcGFjZVBhbm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRyb2xzLm1pbkRpc3RhbmNlID0gNzAwO1xuICAgIC8vIHRoaXMuY29udHJvbHMuem9vbSA9IDEwMDA7XG4gICAgdGhpcy5jb250cm9scy5tYXhEaXN0YW5jZSA9IDIwMDA7XG4gICAgdGhpcy5jb250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDI7XG4gICAgdGhpcy5jb250cm9scy50YXJnZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygwLCAyMDAsIDApO1xuICAgIC8vIHRoaXMuY29udHJvbHMucm90YXRpb24gPSAxMDA7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU2NlbmUoKSB7XG4gICAgLy8gQ3JlYXRlIGEgbmV3IHNjZW5lXG4gICAgdGhpcy5zY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xuICAgIC8vIHRoaXMuc2NlbmUuYmFja2dyb3VuZCA9IG5ldyBUSFJFRS5Db2xvcigweDA4MDgwOCk7XG4gICAgLy8gdGhpcy5zY2VuZS5mb2dcdD0gbmV3IFRIUkVFLkZvZ0V4cDIoIDB4MDAwMDAwLCAwLjEgKTtcblxuICAgIHRoaXMucHJldmlld1NlcnZpY2Uuc2NlbmUgPSB0aGlzLnNjZW5lO1xuXG4gICAgLy8gQWRkIGEgbGl0dGxlIGJpdCBvZiBhbWJpZW50IGxpZ2h0XG4gICAgY29uc3QgYW1iaWVudCA9IG5ldyBUSFJFRS5BbWJpZW50TGlnaHQoMHhmZmZmZmYsIDEuOCk7XG4gICAgdGhpcy5zY2VuZS5hZGQoYW1iaWVudCk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHN0YWdlIGRpbWVuc2lvbnNcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnVwZGF0ZVN0YWdlKCk7XG5cbiAgICBjb25zdCBsaWdodHMgPSBbXTtcbiAgICBsaWdodHNbMF0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcbiAgICBsaWdodHNbMV0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcbiAgICBsaWdodHNbMl0gPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMCwgMC4xKTtcblxuICAgIGxpZ2h0c1swXS5wb3NpdGlvbi5zZXQoMCwgMjAwMCwgMCk7XG4gICAgbGlnaHRzWzFdLnBvc2l0aW9uLnNldCgxMDAwLCAyMDAwLCAxMDAwKTtcbiAgICBsaWdodHNbMl0ucG9zaXRpb24uc2V0KC0xMDAwLCAtMjAwMCwgLTEwMDApO1xuXG4gICAgbGlnaHRzWzBdLmNhc3RTaGFkb3cgPSB0cnVlO1xuICAgIGxpZ2h0c1sxXS5jYXN0U2hhZG93ID0gdHJ1ZTtcbiAgICBsaWdodHNbMl0uY2FzdFNoYWRvdyA9IHRydWU7XG5cbiAgICB0aGlzLnNjZW5lLmFkZChsaWdodHNbMF0pO1xuICAgIHRoaXMuc2NlbmUuYWRkKGxpZ2h0c1sxXSk7XG4gICAgdGhpcy5zY2VuZS5hZGQobGlnaHRzWzJdKTtcblxuICAgIHRoaXMucHJldmlld1NlcnZpY2UudXBkYXRlRml4dHVyZVNldHVwKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cFJlbmRlcmVyKCk7XG4gICAgdGhpcy5zZXR1cENhbWVyYSgpO1xuICAgIHRoaXMuc2V0dXBDb250cm9scygpO1xuICAgIHRoaXMuc2V0dXBTY2VuZSgpO1xuXG4gICAgdGhpcy5vblJlc2l6ZSgpO1xuICAgIHRoaXMuYW5pbWF0ZShudWxsKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImgtMTAwXCIgI2NhbnZhcyBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj48L2Rpdj5cbiJdfQ==
|