@esotericsoftware/spine-core 4.2.70 → 4.2.72
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/dist/PhysicsConstraint.js +2 -2
- package/dist/Skeleton.d.ts +1 -1
- package/dist/Skeleton.js +3 -3
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +3 -3
- package/dist/esm/spine-core.mjs.map +2 -2
- package/dist/iife/spine-core.js +3 -3
- package/dist/iife/spine-core.js.map +2 -2
- package/dist/iife/spine-core.min.js +2 -2
- package/package.json +1 -1
|
@@ -148,7 +148,7 @@ export class PhysicsConstraint {
|
|
|
148
148
|
}
|
|
149
149
|
if (a >= t) {
|
|
150
150
|
d = Math.pow(this.damping, 60 * t);
|
|
151
|
-
const m = this.massInverse * t, e = this.strength, w = this.wind * f, g =
|
|
151
|
+
const m = this.massInverse * t, e = this.strength, w = this.wind * f * skeleton.scaleX, g = this.gravity * f * skeleton.scaleY;
|
|
152
152
|
do {
|
|
153
153
|
if (x) {
|
|
154
154
|
this.xVelocity += (w - this.xOffset * e) * m;
|
|
@@ -295,4 +295,4 @@ export class PhysicsConstraint {
|
|
|
295
295
|
this.translate(dx * cos - dy * sin - dx, dx * sin + dy * cos - dy);
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGh5c2ljc0NvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdkM7OzBIQUUwSDtBQUMxSCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLElBQUksQ0FBd0I7SUFDN0IsS0FBSyxHQUFnQixJQUFJLENBQUM7SUFDbEMsdURBQXVEO0lBQ3ZELElBQVcsSUFBSSxDQUFFLElBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBVyxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTs7WUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osR0FBRyxHQUFHLENBQUMsQ0FBQztJQUVSLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7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dGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEp1bHkgMjgsIDIwMjMuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMywgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvclxuICogb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRIRVxuICogU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEJvbmUgfSBmcm9tIFwiLi9Cb25lLmpzXCI7XG5pbXBvcnQgeyBQaHlzaWNzQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBoeXNpY3MsIFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IFVwZGF0YWJsZSB9IGZyb20gXCIuL1VwZGF0YWJsZS5qc1wiO1xuaW1wb3J0IHsgTWF0aFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuXG4vKiogU3RvcmVzIHRoZSBjdXJyZW50IHBvc2UgZm9yIGEgcGh5c2ljcyBjb25zdHJhaW50LiBBIHBoeXNpY3MgY29uc3RyYWludCBhcHBsaWVzIHBoeXNpY3MgdG8gYm9uZXMuXG4gKiA8cD5cbiAqIFNlZSA8YSBocmVmPVwiaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXBoeXNpY3MtY29uc3RyYWludHNcIj5QaHlzaWNzIGNvbnN0cmFpbnRzPC9hPiBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludCBpbXBsZW1lbnRzIFVwZGF0YWJsZSB7XG5cdHJlYWRvbmx5IGRhdGE6IFBoeXNpY3NDb25zdHJhaW50RGF0YTtcblx0cHJpdmF0ZSBfYm9uZTogQm9uZSB8IG51bGwgPSBudWxsO1xuXHQvKiogVGhlIGJvbmUgY29uc3RyYWluZWQgYnkgdGhpcyBwaHlzaWNzIGNvbnN0cmFpbnQuICovXG5cdHB1YmxpYyBzZXQgYm9uZSAoYm9uZTogQm9uZSkgeyB0aGlzLl9ib25lID0gYm9uZTsgfVxuXHRwdWJsaWMgZ2V0IGJvbmUgKCkge1xuXHRcdGlmICghdGhpcy5fYm9uZSkgdGhyb3cgbmV3IEVycm9yKFwiQm9uZSBub3Qgc2V0LlwiKVxuXHRcdGVsc2UgcmV0dXJuIHRoaXMuX2JvbmU7XG5cdH1cblx0aW5lcnRpYSA9IDA7XG5cdHN0cmVuZ3RoID0gMDtcblx0ZGFtcGluZyA9IDA7XG5cdG1hc3NJbnZlcnNlID0gMDtcblx0d2luZCA9IDA7XG5cdGdyYXZpdHkgPSAwO1xuXHRtaXggPSAwO1xuXG5cdF9yZXNldCA9IHRydWU7XG5cdHV4ID0gMDtcblx0dXkgPSAwO1xuXHRjeCA9IDA7XG5cdGN5ID0gMDtcblx0dHggPSAwO1xuXHR0eSA9IDA7XG5cdHhPZmZzZXQgPSAwO1xuXHR4VmVsb2NpdHkgPSAwO1xuXHR5T2Zmc2V0ID0gMDtcblx0eVZlbG9jaXR5ID0gMDtcblx0cm90YXRlT2Zmc2V0ID0gMDtcblx0cm90YXRlVmVsb2NpdHkgPSAwO1xuXHRzY2FsZU9mZnNldCA9IDBcblx0c2NhbGVWZWxvY2l0eSA9IDA7XG5cblx0YWN0aXZlID0gZmFsc2U7XG5cblx0cmVhZG9ubHkgc2tlbGV0b246IFNrZWxldG9uO1xuXHRyZW1haW5pbmcgPSAwO1xuXHRsYXN0VGltZSA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGRhdGE6IFBoeXNpY3NDb25zdHJhaW50RGF0YSwgc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0dGhpcy5kYXRhID0gZGF0YTtcblx0XHR0aGlzLnNrZWxldG9uID0gc2tlbGV0b247XG5cblx0XHR0aGlzLmJvbmUgPSBza2VsZXRvbi5ib25lc1tkYXRhLmJvbmUuaW5kZXhdO1xuXG5cdFx0dGhpcy5pbmVydGlhID0gZGF0YS5pbmVydGlhO1xuXHRcdHRoaXMuc3RyZW5ndGggPSBkYXRhLnN0cmVuZ3RoO1xuXHRcdHRoaXMuZGFtcGluZyA9IGRhdGEuZGFtcGluZztcblx0XHR0aGlzLm1hc3NJbnZlcnNlID0gZGF0YS5tYXNzSW52ZXJzZTtcblx0XHR0aGlzLndpbmQgPSBkYXRhLndpbmQ7XG5cdFx0dGhpcy5ncmF2aXR5ID0gZGF0YS5ncmF2aXR5O1xuXHRcdHRoaXMubWl4ID0gZGF0YS5taXg7XG5cdH1cblxuXHRyZXNldCAoKSB7XG5cdFx0dGhpcy5yZW1haW5pbmcgPSAwO1xuXHRcdHRoaXMubGFzdFRpbWUgPSB0aGlzLnNrZWxldG9uLnRpbWU7XG5cdFx0dGhpcy5fcmVzZXQgPSB0cnVlO1xuXHRcdHRoaXMueE9mZnNldCA9IDA7XG5cdFx0dGhpcy54VmVsb2NpdHkgPSAwO1xuXHRcdHRoaXMueU9mZnNldCA9IDA7XG5cdFx0dGhpcy55VmVsb2NpdHkgPSAwO1xuXHRcdHRoaXMucm90YXRlT2Zmc2V0ID0gMDtcblx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnNjYWxlT2Zmc2V0ID0gMDtcblx0XHR0aGlzLnNjYWxlVmVsb2NpdHkgPSAwO1xuXHR9XG5cblx0c2V0VG9TZXR1cFBvc2UgKCkge1xuXHRcdGNvbnN0IGRhdGEgPSB0aGlzLmRhdGE7XG5cdFx0dGhpcy5pbmVydGlhID0gZGF0YS5pbmVydGlhO1xuXHRcdHRoaXMuc3RyZW5ndGggPSBkYXRhLnN0cmVuZ3RoO1xuXHRcdHRoaXMuZGFtcGluZyA9IGRhdGEuZGFtcGluZztcblx0XHR0aGlzLm1hc3NJbnZlcnNlID0gZGF0YS5tYXNzSW52ZXJzZTtcblx0XHR0aGlzLndpbmQgPSBkYXRhLndpbmQ7XG5cdFx0dGhpcy5ncmF2aXR5ID0gZGF0YS5ncmF2aXR5O1xuXHRcdHRoaXMubWl4ID0gZGF0YS5taXg7XG5cdH1cblxuXHRpc0FjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYWN0aXZlO1xuXHR9XG5cblx0LyoqIEFwcGxpZXMgdGhlIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbmVkIGJvbmVzLiAqL1xuXHR1cGRhdGUgKHBoeXNpY3M6IFBoeXNpY3MpIHtcblx0XHRjb25zdCBtaXggPSB0aGlzLm1peDtcblx0XHRpZiAobWl4ID09IDApIHJldHVybjtcblxuXHRcdGNvbnN0IHggPSB0aGlzLmRhdGEueCA+IDAsIHkgPSB0aGlzLmRhdGEueSA+IDAsIHJvdGF0ZU9yU2hlYXJYID0gdGhpcy5kYXRhLnJvdGF0ZSA+IDAgfHwgdGhpcy5kYXRhLnNoZWFyWCA+IDAsIHNjYWxlWCA9IHRoaXMuZGF0YS5zY2FsZVggPiAwO1xuXHRcdGNvbnN0IGJvbmUgPSB0aGlzLmJvbmU7XG5cdFx0Y29uc3QgbCA9IGJvbmUuZGF0YS5sZW5ndGg7XG5cblx0XHRzd2l0Y2ggKHBoeXNpY3MpIHtcblx0XHRcdGNhc2UgUGh5c2ljcy5ub25lOlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRjYXNlIFBoeXNpY3MucmVzZXQ6XG5cdFx0XHRcdHRoaXMucmVzZXQoKTtcblx0XHRcdC8vIEZhbGwgdGhyb3VnaC5cblx0XHRcdGNhc2UgUGh5c2ljcy51cGRhdGU6XG5cdFx0XHRcdGNvbnN0IHNrZWxldG9uID0gdGhpcy5za2VsZXRvbjtcblx0XHRcdFx0Y29uc3QgZGVsdGEgPSBNYXRoLm1heCh0aGlzLnNrZWxldG9uLnRpbWUgLSB0aGlzLmxhc3RUaW1lLCAwKTtcblx0XHRcdFx0dGhpcy5yZW1haW5pbmcgKz0gZGVsdGE7XG5cdFx0XHRcdHRoaXMubGFzdFRpbWUgPSBza2VsZXRvbi50aW1lO1xuXG5cdFx0XHRcdGNvbnN0IGJ4ID0gYm9uZS53b3JsZFgsIGJ5ID0gYm9uZS53b3JsZFk7XG5cdFx0XHRcdGlmICh0aGlzLl9yZXNldCkge1xuXHRcdFx0XHRcdHRoaXMuX3Jlc2V0ID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy51eCA9IGJ4O1xuXHRcdFx0XHRcdHRoaXMudXkgPSBieTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsZXQgYSA9IHRoaXMucmVtYWluaW5nLCBpID0gdGhpcy5pbmVydGlhLCB0ID0gdGhpcy5kYXRhLnN0ZXAsIGYgPSB0aGlzLnNrZWxldG9uLmRhdGEucmVmZXJlbmNlU2NhbGUsIGQgPSAtMTtcblx0XHRcdFx0XHRsZXQgcXggPSB0aGlzLmRhdGEubGltaXQgKiBkZWx0YSwgcXkgPSBxeCAqIE1hdGguYWJzKHNrZWxldG9uLnNjYWxlWSk7XG5cdFx0XHRcdFx0cXggKj0gTWF0aC5hYnMoc2tlbGV0b24uc2NhbGVYKTtcblx0XHRcdFx0XHRpZiAoeCB8fCB5KSB7XG5cdFx0XHRcdFx0XHRpZiAoeCkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB1ID0gKHRoaXMudXggLSBieCkgKiBpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnhPZmZzZXQgKz0gdSA+IHF4ID8gcXggOiB1IDwgLXF4ID8gLXF4IDogdTtcblx0XHRcdFx0XHRcdFx0dGhpcy51eCA9IGJ4O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHkpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdSA9ICh0aGlzLnV5IC0gYnkpICogaTtcblx0XHRcdFx0XHRcdFx0dGhpcy55T2Zmc2V0ICs9IHUgPiBxeSA/IHF5IDogdSA8IC1xeSA/IC1xeSA6IHU7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXkgPSBieTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChhID49IHQpIHtcblx0XHRcdFx0XHRcdFx0ZCA9IE1hdGgucG93KHRoaXMuZGFtcGluZywgNjAgKiB0KTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbSA9IHRoaXMubWFzc0ludmVyc2UgKiB0LCBlID0gdGhpcy5zdHJlbmd0aCwgdyA9IHRoaXMud2luZCAqIGYsIGcgPSAoU2tlbGV0b24ueURvd24gPyAtdGhpcy5ncmF2aXR5IDogdGhpcy5ncmF2aXR5KSAqIGY7XG5cdFx0XHRcdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoeCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy54VmVsb2NpdHkgKz0gKHcgLSB0aGlzLnhPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnhPZmZzZXQgKz0gdGhpcy54VmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy54VmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueVZlbG9jaXR5IC09IChnICsgdGhpcy55T2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy55T2Zmc2V0ICs9IHRoaXMueVZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueVZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGEgLT0gdDtcblx0XHRcdFx0XHRcdFx0fSB3aGlsZSAoYSA+PSB0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICh4KSBib25lLndvcmxkWCArPSB0aGlzLnhPZmZzZXQgKiBtaXggKiB0aGlzLmRhdGEueDtcblx0XHRcdFx0XHRcdGlmICh5KSBib25lLndvcmxkWSArPSB0aGlzLnlPZmZzZXQgKiBtaXggKiB0aGlzLmRhdGEueTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHJvdGF0ZU9yU2hlYXJYIHx8IHNjYWxlWCkge1xuXHRcdFx0XHRcdFx0bGV0IGNhID0gTWF0aC5hdGFuMihib25lLmMsIGJvbmUuYSksIGMgPSAwLCBzID0gMCwgbXIgPSAwO1xuXHRcdFx0XHRcdFx0bGV0IGR4ID0gdGhpcy5jeCAtIGJvbmUud29ybGRYLCBkeSA9IHRoaXMuY3kgLSBib25lLndvcmxkWTtcblx0XHRcdFx0XHRcdGlmIChkeCA+IHF4KVxuXHRcdFx0XHRcdFx0XHRkeCA9IHF4O1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoZHggPCAtcXgpIC8vXG5cdFx0XHRcdFx0XHRcdGR4ID0gLXF4O1xuXHRcdFx0XHRcdFx0aWYgKGR5ID4gcXkpXG5cdFx0XHRcdFx0XHRcdGR5ID0gcXk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChkeSA8IC1xeSkgLy9cblx0XHRcdFx0XHRcdFx0ZHkgPSAtcXk7XG5cdFx0XHRcdFx0XHRpZiAocm90YXRlT3JTaGVhclgpIHtcblx0XHRcdFx0XHRcdFx0bXIgPSAodGhpcy5kYXRhLnJvdGF0ZSArIHRoaXMuZGF0YS5zaGVhclgpICogbWl4O1xuXHRcdFx0XHRcdFx0XHRsZXQgciA9IE1hdGguYXRhbjIoZHkgKyB0aGlzLnR5LCBkeCArIHRoaXMudHgpIC0gY2EgLSB0aGlzLnJvdGF0ZU9mZnNldCAqIG1yO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZU9mZnNldCArPSAociAtIE1hdGguY2VpbChyICogTWF0aFV0aWxzLmludlBJMiAtIDAuNSkgKiBNYXRoVXRpbHMuUEkyKSAqIGk7XG5cdFx0XHRcdFx0XHRcdHIgPSB0aGlzLnJvdGF0ZU9mZnNldCAqIG1yICsgY2E7XG5cdFx0XHRcdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRcdFx0XHRpZiAoc2NhbGVYKSB7XG5cdFx0XHRcdFx0XHRcdFx0ciA9IGwgKiBib25lLmdldFdvcmxkU2NhbGVYKCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHIgPiAwKSB0aGlzLnNjYWxlT2Zmc2V0ICs9IChkeCAqIGMgKyBkeSAqIHMpICogaSAvIHI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGMgPSBNYXRoLmNvcyhjYSk7XG5cdFx0XHRcdFx0XHRcdHMgPSBNYXRoLnNpbihjYSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHIgPSBsICogYm9uZS5nZXRXb3JsZFNjYWxlWCgpO1xuXHRcdFx0XHRcdFx0XHRpZiAociA+IDApIHRoaXMuc2NhbGVPZmZzZXQgKz0gKGR4ICogYyArIGR5ICogcykgKiBpIC8gcjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGEgPSB0aGlzLnJlbWFpbmluZztcblx0XHRcdFx0XHRcdGlmIChhID49IHQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGQgPT0gLTEpIGQgPSBNYXRoLnBvdyh0aGlzLmRhbXBpbmcsIDYwICogdCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG0gPSB0aGlzLm1hc3NJbnZlcnNlICogdCwgZSA9IHRoaXMuc3RyZW5ndGgsIHcgPSB0aGlzLndpbmQsIGcgPSAoU2tlbGV0b24ueURvd24gPyAtdGhpcy5ncmF2aXR5IDogdGhpcy5ncmF2aXR5KSwgaCA9IGwgLyBmO1xuXHRcdFx0XHRcdFx0XHR3aGlsZSAodHJ1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGEgLT0gdDtcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2NhbGVYKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNjYWxlVmVsb2NpdHkgKz0gKHcgKiBjIC0gZyAqIHMgLSB0aGlzLnNjYWxlT2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zY2FsZU9mZnNldCArPSB0aGlzLnNjYWxlVmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zY2FsZVZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmIChyb3RhdGVPclNoZWFyWCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVWZWxvY2l0eSAtPSAoKHcgKiBzICsgZyAqIGMpICogaCArIHRoaXMucm90YXRlT2Zmc2V0ICogZSkgKiBtO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yb3RhdGVPZmZzZXQgKz0gdGhpcy5yb3RhdGVWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5ICo9IGQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYSA8IHQpIGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgciA9IHRoaXMucm90YXRlT2Zmc2V0ICogbXIgKyBjYTtcblx0XHRcdFx0XHRcdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRcdFx0XHRcdHMgPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGEgPCB0KSAvL1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5yZW1haW5pbmcgPSBhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuY3ggPSBib25lLndvcmxkWDtcblx0XHRcdFx0dGhpcy5jeSA9IGJvbmUud29ybGRZO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgUGh5c2ljcy5wb3NlOlxuXHRcdFx0XHRpZiAoeCkgYm9uZS53b3JsZFggKz0gdGhpcy54T2Zmc2V0ICogbWl4ICogdGhpcy5kYXRhLng7XG5cdFx0XHRcdGlmICh5KSBib25lLndvcmxkWSArPSB0aGlzLnlPZmZzZXQgKiBtaXggKiB0aGlzLmRhdGEueTtcblx0XHR9XG5cblx0XHRpZiAocm90YXRlT3JTaGVhclgpIHtcblx0XHRcdGxldCBvID0gdGhpcy5yb3RhdGVPZmZzZXQgKiBtaXgsIHMgPSAwLCBjID0gMCwgYSA9IDA7XG5cdFx0XHRpZiAodGhpcy5kYXRhLnNoZWFyWCA+IDApIHtcblx0XHRcdFx0bGV0IHIgPSAwO1xuXHRcdFx0XHRpZiAodGhpcy5kYXRhLnJvdGF0ZSA+IDApIHtcblx0XHRcdFx0XHRyID0gbyAqIHRoaXMuZGF0YS5yb3RhdGU7XG5cdFx0XHRcdFx0cyA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRhID0gYm9uZS5iO1xuXHRcdFx0XHRcdGJvbmUuYiA9IGMgKiBhIC0gcyAqIGJvbmUuZDtcblx0XHRcdFx0XHRib25lLmQgPSBzICogYSArIGMgKiBib25lLmQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0ciArPSBvICogdGhpcy5kYXRhLnNoZWFyWDtcblx0XHRcdFx0cyA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRjID0gTWF0aC5jb3Mocik7XG5cdFx0XHRcdGEgPSBib25lLmE7XG5cdFx0XHRcdGJvbmUuYSA9IGMgKiBhIC0gcyAqIGJvbmUuYztcblx0XHRcdFx0Ym9uZS5jID0gcyAqIGEgKyBjICogYm9uZS5jO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0byAqPSB0aGlzLmRhdGEucm90YXRlO1xuXHRcdFx0XHRzID0gTWF0aC5zaW4obyk7XG5cdFx0XHRcdGMgPSBNYXRoLmNvcyhvKTtcblx0XHRcdFx0YSA9IGJvbmUuYTtcblx0XHRcdFx0Ym9uZS5hID0gYyAqIGEgLSBzICogYm9uZS5jO1xuXHRcdFx0XHRib25lLmMgPSBzICogYSArIGMgKiBib25lLmM7XG5cdFx0XHRcdGEgPSBib25lLmI7XG5cdFx0XHRcdGJvbmUuYiA9IGMgKiBhIC0gcyAqIGJvbmUuZDtcblx0XHRcdFx0Ym9uZS5kID0gcyAqIGEgKyBjICogYm9uZS5kO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoc2NhbGVYKSB7XG5cdFx0XHRjb25zdCBzID0gMSArIHRoaXMuc2NhbGVPZmZzZXQgKiBtaXggKiB0aGlzLmRhdGEuc2NhbGVYO1xuXHRcdFx0Ym9uZS5hICo9IHM7XG5cdFx0XHRib25lLmMgKj0gcztcblx0XHR9XG5cdFx0aWYgKHBoeXNpY3MgIT0gUGh5c2ljcy5wb3NlKSB7XG5cdFx0XHR0aGlzLnR4ID0gbCAqIGJvbmUuYTtcblx0XHRcdHRoaXMudHkgPSBsICogYm9uZS5jO1xuXHRcdH1cblx0XHRib25lLnVwZGF0ZUFwcGxpZWRUcmFuc2Zvcm0oKTtcblx0fVxuXG5cdC8qKiBUcmFuc2xhdGVzIHRoZSBwaHlzaWNzIGNvbnN0cmFpbnQgc28gbmV4dCB7QGxpbmsgI3VwZGF0ZShQaHlzaWNzKX0gZm9yY2VzIGFyZSBhcHBsaWVkIGFzIGlmIHRoZSBib25lIG1vdmVkIGFuIGFkZGl0aW9uYWxcblx0ICogYW1vdW50IGluIHdvcmxkIHNwYWNlLiAqL1xuXHR0cmFuc2xhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG5cdFx0dGhpcy51eCAtPSB4O1xuXHRcdHRoaXMudXkgLT0geTtcblx0XHR0aGlzLmN4IC09IHg7XG5cdFx0dGhpcy5jeSAtPSB5O1xuXHR9XG5cblx0LyoqIFJvdGF0ZXMgdGhlIHBoeXNpY3MgY29uc3RyYWludCBzbyBuZXh0IHtAbGluayAjdXBkYXRlKFBoeXNpY3MpfSBmb3JjZXMgYXJlIGFwcGxpZWQgYXMgaWYgdGhlIGJvbmUgcm90YXRlZCBhcm91bmQgdGhlXG5cdCAqIHNwZWNpZmllZCBwb2ludCBpbiB3b3JsZCBzcGFjZS4gKi9cblx0cm90YXRlICh4OiBudW1iZXIsIHk6IG51bWJlciwgZGVncmVlczogbnVtYmVyKSB7XG5cdFx0Y29uc3QgciA9IGRlZ3JlZXMgKiBNYXRoVXRpbHMuZGVnUmFkLCBjb3MgPSBNYXRoLmNvcyhyKSwgc2luID0gTWF0aC5zaW4ocik7XG5cdFx0Y29uc3QgZHggPSB0aGlzLmN4IC0geCwgZHkgPSB0aGlzLmN5IC0geTtcblx0XHR0aGlzLnRyYW5zbGF0ZShkeCAqIGNvcyAtIGR5ICogc2luIC0gZHgsIGR4ICogc2luICsgZHkgKiBjb3MgLSBkeSk7XG5cdH1cbn1cbiJdfQ==
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGh5c2ljc0NvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGh5c2ljc0NvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdkM7OzBIQUUwSDtBQUMxSCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLElBQUksQ0FBd0I7SUFDN0IsS0FBSyxHQUFnQixJQUFJLENBQUM7SUFDbEMsdURBQXVEO0lBQ3ZELElBQVcsSUFBSSxDQUFFLElBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBVyxJQUFJO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTs7WUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osR0FBRyxHQUFHLENBQUMsQ0FBQztJQUVSLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1AsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNQLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDUCxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ1osU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFdBQVcsR0FBRyxDQUFDLENBQUE7SUFDZixhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFTixRQUFRLENBQVc7SUFDNUIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFYixZQUFhLElBQTJCLEVBQUUsUUFBa0I7UUFDM0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3BCLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsTUFBTSxDQUFFLE9BQWdCO1FBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDckIsSUFBSSxHQUFHLElBQUksQ0FBQztZQUFFLE9BQU87UUFFckIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3SSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTNCLFFBQVEsT0FBTyxFQUFFLENBQUM7WUFDakIsS0FBSyxPQUFPLENBQUMsSUFBSTtnQkFDaEIsT0FBTztZQUNSLEtBQUssT0FBTyxDQUFDLEtBQUs7Z0JBQ2pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLGdCQUFnQjtZQUNoQixLQUFLLE9BQU8sQ0FBQyxNQUFNO2dCQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBRTlCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ3pDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQztxQkFBTSxDQUFDO29CQUNQLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUM1RyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEUsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDWixJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQzdCLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2hELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dCQUNkLENBQUM7d0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQzs0QkFDUCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUM3QixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNoRCxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3QkFDZCxDQUFDO3dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUNaLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQzs0QkFDL0gsR0FBRyxDQUFDO2dDQUNILElBQUksQ0FBQyxFQUFFLENBQUM7b0NBQ1AsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDN0MsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztvQ0FDbkMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7Z0NBQ3JCLENBQUM7Z0NBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQ0FDUCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29DQUM3QyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO29DQUNuQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztnQ0FDckIsQ0FBQztnQ0FDRCxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNSLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNsQixDQUFDO3dCQUNELElBQUksQ0FBQzs0QkFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUN2RCxJQUFJLENBQUM7NEJBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDeEQsQ0FBQztvQkFDRCxJQUFJLGNBQWMsSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDOUIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDMUQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7d0JBQzNELElBQUksRUFBRSxHQUFHLEVBQUU7NEJBQ1YsRUFBRSxHQUFHLEVBQUUsQ0FBQzs2QkFDSixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFOzRCQUNwQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ1YsSUFBSSxFQUFFLEdBQUcsRUFBRTs0QkFDVixFQUFFLEdBQUcsRUFBRSxDQUFDOzZCQUNKLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUU7NEJBQ3BCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDVixJQUFJLGNBQWMsRUFBRSxDQUFDOzRCQUNwQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQzs0QkFDakQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQzs0QkFDN0UsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ3JGLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7NEJBQ2hDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNoQixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDaEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQ0FDWixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQ0FDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQztvQ0FBRSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDMUQsQ0FBQzt3QkFDRixDQUFDOzZCQUFNLENBQUM7NEJBQ1AsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ2pCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNqQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dDQUFFLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxDQUFDO3dCQUNELENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzs0QkFDWixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ2hELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUNqSSxPQUFPLElBQUksRUFBRSxDQUFDO2dDQUNiLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQ1AsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQ0FDWixJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29DQUNqRSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO29DQUMzQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQztnQ0FDekIsQ0FBQztnQ0FDRCxJQUFJLGNBQWMsRUFBRSxDQUFDO29DQUNwQixJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0NBQ3pFLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7b0NBQzdDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDO29DQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDO3dDQUFFLE1BQU07b0NBQ2pCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztvQ0FDdEMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0NBQ2hCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNqQixDQUFDO3FDQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO29DQUNuQixNQUFNOzRCQUNSLENBQUM7d0JBQ0YsQ0FBQztvQkFDRixDQUFDO29CQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO2dCQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDdEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN0QixNQUFNO1lBQ1AsS0FBSyxPQUFPLENBQUMsSUFBSTtnQkFDaEIsSUFBSSxDQUFDO29CQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDVixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMxQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUN6QixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDaEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO2dCQUNELENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQzFCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDdEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDNUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNGLENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3hELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1osSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEO2dDQUM0QjtJQUM1QixTQUFTLENBQUUsQ0FBUyxFQUFFLENBQVM7UUFDOUIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRUQ7eUNBQ3FDO0lBQ3JDLE1BQU0sQ0FBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLE9BQWU7UUFDNUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBKdWx5IDI4LCAyMDIzLiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjMsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3JcbiAqIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSEVcbiAqIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBQaHlzaWNzLCBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBVcGRhdGFibGUgfSBmcm9tIFwiLi9VcGRhdGFibGUuanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscyB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cblxuLyoqIFN0b3JlcyB0aGUgY3VycmVudCBwb3NlIGZvciBhIHBoeXNpY3MgY29uc3RyYWludC4gQSBwaHlzaWNzIGNvbnN0cmFpbnQgYXBwbGllcyBwaHlzaWNzIHRvIGJvbmVzLlxuICogPHA+XG4gKiBTZWUgPGEgaHJlZj1cImh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1waHlzaWNzLWNvbnN0cmFpbnRzXCI+UGh5c2ljcyBjb25zdHJhaW50czwvYT4gaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnQgaW1wbGVtZW50cyBVcGRhdGFibGUge1xuXHRyZWFkb25seSBkYXRhOiBQaHlzaWNzQ29uc3RyYWludERhdGE7XG5cdHByaXZhdGUgX2JvbmU6IEJvbmUgfCBudWxsID0gbnVsbDtcblx0LyoqIFRoZSBib25lIGNvbnN0cmFpbmVkIGJ5IHRoaXMgcGh5c2ljcyBjb25zdHJhaW50LiAqL1xuXHRwdWJsaWMgc2V0IGJvbmUgKGJvbmU6IEJvbmUpIHsgdGhpcy5fYm9uZSA9IGJvbmU7IH1cblx0cHVibGljIGdldCBib25lICgpIHtcblx0XHRpZiAoIXRoaXMuX2JvbmUpIHRocm93IG5ldyBFcnJvcihcIkJvbmUgbm90IHNldC5cIilcblx0XHRlbHNlIHJldHVybiB0aGlzLl9ib25lO1xuXHR9XG5cdGluZXJ0aWEgPSAwO1xuXHRzdHJlbmd0aCA9IDA7XG5cdGRhbXBpbmcgPSAwO1xuXHRtYXNzSW52ZXJzZSA9IDA7XG5cdHdpbmQgPSAwO1xuXHRncmF2aXR5ID0gMDtcblx0bWl4ID0gMDtcblxuXHRfcmVzZXQgPSB0cnVlO1xuXHR1eCA9IDA7XG5cdHV5ID0gMDtcblx0Y3ggPSAwO1xuXHRjeSA9IDA7XG5cdHR4ID0gMDtcblx0dHkgPSAwO1xuXHR4T2Zmc2V0ID0gMDtcblx0eFZlbG9jaXR5ID0gMDtcblx0eU9mZnNldCA9IDA7XG5cdHlWZWxvY2l0eSA9IDA7XG5cdHJvdGF0ZU9mZnNldCA9IDA7XG5cdHJvdGF0ZVZlbG9jaXR5ID0gMDtcblx0c2NhbGVPZmZzZXQgPSAwXG5cdHNjYWxlVmVsb2NpdHkgPSAwO1xuXG5cdGFjdGl2ZSA9IGZhbHNlO1xuXG5cdHJlYWRvbmx5IHNrZWxldG9uOiBTa2VsZXRvbjtcblx0cmVtYWluaW5nID0gMDtcblx0bGFzdFRpbWUgPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBQaHlzaWNzQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHRoaXMuZGF0YSA9IGRhdGE7XG5cdFx0dGhpcy5za2VsZXRvbiA9IHNrZWxldG9uO1xuXG5cdFx0dGhpcy5ib25lID0gc2tlbGV0b24uYm9uZXNbZGF0YS5ib25lLmluZGV4XTtcblxuXHRcdHRoaXMuaW5lcnRpYSA9IGRhdGEuaW5lcnRpYTtcblx0XHR0aGlzLnN0cmVuZ3RoID0gZGF0YS5zdHJlbmd0aDtcblx0XHR0aGlzLmRhbXBpbmcgPSBkYXRhLmRhbXBpbmc7XG5cdFx0dGhpcy5tYXNzSW52ZXJzZSA9IGRhdGEubWFzc0ludmVyc2U7XG5cdFx0dGhpcy53aW5kID0gZGF0YS53aW5kO1xuXHRcdHRoaXMuZ3Jhdml0eSA9IGRhdGEuZ3Jhdml0eTtcblx0XHR0aGlzLm1peCA9IGRhdGEubWl4O1xuXHR9XG5cblx0cmVzZXQgKCkge1xuXHRcdHRoaXMucmVtYWluaW5nID0gMDtcblx0XHR0aGlzLmxhc3RUaW1lID0gdGhpcy5za2VsZXRvbi50aW1lO1xuXHRcdHRoaXMuX3Jlc2V0ID0gdHJ1ZTtcblx0XHR0aGlzLnhPZmZzZXQgPSAwO1xuXHRcdHRoaXMueFZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnlPZmZzZXQgPSAwO1xuXHRcdHRoaXMueVZlbG9jaXR5ID0gMDtcblx0XHR0aGlzLnJvdGF0ZU9mZnNldCA9IDA7XG5cdFx0dGhpcy5yb3RhdGVWZWxvY2l0eSA9IDA7XG5cdFx0dGhpcy5zY2FsZU9mZnNldCA9IDA7XG5cdFx0dGhpcy5zY2FsZVZlbG9jaXR5ID0gMDtcblx0fVxuXG5cdHNldFRvU2V0dXBQb3NlICgpIHtcblx0XHRjb25zdCBkYXRhID0gdGhpcy5kYXRhO1xuXHRcdHRoaXMuaW5lcnRpYSA9IGRhdGEuaW5lcnRpYTtcblx0XHR0aGlzLnN0cmVuZ3RoID0gZGF0YS5zdHJlbmd0aDtcblx0XHR0aGlzLmRhbXBpbmcgPSBkYXRhLmRhbXBpbmc7XG5cdFx0dGhpcy5tYXNzSW52ZXJzZSA9IGRhdGEubWFzc0ludmVyc2U7XG5cdFx0dGhpcy53aW5kID0gZGF0YS53aW5kO1xuXHRcdHRoaXMuZ3Jhdml0eSA9IGRhdGEuZ3Jhdml0eTtcblx0XHR0aGlzLm1peCA9IGRhdGEubWl4O1xuXHR9XG5cblx0aXNBY3RpdmUgKCkge1xuXHRcdHJldHVybiB0aGlzLmFjdGl2ZTtcblx0fVxuXG5cdC8qKiBBcHBsaWVzIHRoZSBjb25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW5lZCBib25lcy4gKi9cblx0dXBkYXRlIChwaHlzaWNzOiBQaHlzaWNzKSB7XG5cdFx0Y29uc3QgbWl4ID0gdGhpcy5taXg7XG5cdFx0aWYgKG1peCA9PSAwKSByZXR1cm47XG5cblx0XHRjb25zdCB4ID0gdGhpcy5kYXRhLnggPiAwLCB5ID0gdGhpcy5kYXRhLnkgPiAwLCByb3RhdGVPclNoZWFyWCA9IHRoaXMuZGF0YS5yb3RhdGUgPiAwIHx8IHRoaXMuZGF0YS5zaGVhclggPiAwLCBzY2FsZVggPSB0aGlzLmRhdGEuc2NhbGVYID4gMDtcblx0XHRjb25zdCBib25lID0gdGhpcy5ib25lO1xuXHRcdGNvbnN0IGwgPSBib25lLmRhdGEubGVuZ3RoO1xuXG5cdFx0c3dpdGNoIChwaHlzaWNzKSB7XG5cdFx0XHRjYXNlIFBoeXNpY3Mubm9uZTpcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0Y2FzZSBQaHlzaWNzLnJlc2V0OlxuXHRcdFx0XHR0aGlzLnJlc2V0KCk7XG5cdFx0XHQvLyBGYWxsIHRocm91Z2guXG5cdFx0XHRjYXNlIFBoeXNpY3MudXBkYXRlOlxuXHRcdFx0XHRjb25zdCBza2VsZXRvbiA9IHRoaXMuc2tlbGV0b247XG5cdFx0XHRcdGNvbnN0IGRlbHRhID0gTWF0aC5tYXgodGhpcy5za2VsZXRvbi50aW1lIC0gdGhpcy5sYXN0VGltZSwgMCk7XG5cdFx0XHRcdHRoaXMucmVtYWluaW5nICs9IGRlbHRhO1xuXHRcdFx0XHR0aGlzLmxhc3RUaW1lID0gc2tlbGV0b24udGltZTtcblxuXHRcdFx0XHRjb25zdCBieCA9IGJvbmUud29ybGRYLCBieSA9IGJvbmUud29ybGRZO1xuXHRcdFx0XHRpZiAodGhpcy5fcmVzZXQpIHtcblx0XHRcdFx0XHR0aGlzLl9yZXNldCA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMudXggPSBieDtcblx0XHRcdFx0XHR0aGlzLnV5ID0gYnk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bGV0IGEgPSB0aGlzLnJlbWFpbmluZywgaSA9IHRoaXMuaW5lcnRpYSwgdCA9IHRoaXMuZGF0YS5zdGVwLCBmID0gdGhpcy5za2VsZXRvbi5kYXRhLnJlZmVyZW5jZVNjYWxlLCBkID0gLTE7XG5cdFx0XHRcdFx0bGV0IHF4ID0gdGhpcy5kYXRhLmxpbWl0ICogZGVsdGEsIHF5ID0gcXggKiBNYXRoLmFicyhza2VsZXRvbi5zY2FsZVkpO1xuXHRcdFx0XHRcdHF4ICo9IE1hdGguYWJzKHNrZWxldG9uLnNjYWxlWCk7XG5cdFx0XHRcdFx0aWYgKHggfHwgeSkge1xuXHRcdFx0XHRcdFx0aWYgKHgpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdSA9ICh0aGlzLnV4IC0gYngpICogaTtcblx0XHRcdFx0XHRcdFx0dGhpcy54T2Zmc2V0ICs9IHUgPiBxeCA/IHF4IDogdSA8IC1xeCA/IC1xeCA6IHU7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXggPSBieDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICh5KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHUgPSAodGhpcy51eSAtIGJ5KSAqIGk7XG5cdFx0XHRcdFx0XHRcdHRoaXMueU9mZnNldCArPSB1ID4gcXkgPyBxeSA6IHUgPCAtcXkgPyAtcXkgOiB1O1xuXHRcdFx0XHRcdFx0XHR0aGlzLnV5ID0gYnk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoYSA+PSB0KSB7XG5cdFx0XHRcdFx0XHRcdGQgPSBNYXRoLnBvdyh0aGlzLmRhbXBpbmcsIDYwICogdCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG0gPSB0aGlzLm1hc3NJbnZlcnNlICogdCwgZSA9IHRoaXMuc3RyZW5ndGgsIHcgPSB0aGlzLndpbmQgKiBmICogc2tlbGV0b24uc2NhbGVYLCBnID0gdGhpcy5ncmF2aXR5ICogZiAqIHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdFx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh4KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnhWZWxvY2l0eSArPSAodyAtIHRoaXMueE9mZnNldCAqIGUpICogbTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMueE9mZnNldCArPSB0aGlzLnhWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnhWZWxvY2l0eSAqPSBkO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoeSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy55VmVsb2NpdHkgLT0gKGcgKyB0aGlzLnlPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnlPZmZzZXQgKz0gdGhpcy55VmVsb2NpdHkgKiB0O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy55VmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHR9IHdoaWxlIChhID49IHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHgpIGJvbmUud29ybGRYICs9IHRoaXMueE9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS54O1xuXHRcdFx0XHRcdFx0aWYgKHkpIGJvbmUud29ybGRZICs9IHRoaXMueU9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS55O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAocm90YXRlT3JTaGVhclggfHwgc2NhbGVYKSB7XG5cdFx0XHRcdFx0XHRsZXQgY2EgPSBNYXRoLmF0YW4yKGJvbmUuYywgYm9uZS5hKSwgYyA9IDAsIHMgPSAwLCBtciA9IDA7XG5cdFx0XHRcdFx0XHRsZXQgZHggPSB0aGlzLmN4IC0gYm9uZS53b3JsZFgsIGR5ID0gdGhpcy5jeSAtIGJvbmUud29ybGRZO1xuXHRcdFx0XHRcdFx0aWYgKGR4ID4gcXgpXG5cdFx0XHRcdFx0XHRcdGR4ID0gcXg7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChkeCA8IC1xeCkgLy9cblx0XHRcdFx0XHRcdFx0ZHggPSAtcXg7XG5cdFx0XHRcdFx0XHRpZiAoZHkgPiBxeSlcblx0XHRcdFx0XHRcdFx0ZHkgPSBxeTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGR5IDwgLXF5KSAvL1xuXHRcdFx0XHRcdFx0XHRkeSA9IC1xeTtcblx0XHRcdFx0XHRcdGlmIChyb3RhdGVPclNoZWFyWCkge1xuXHRcdFx0XHRcdFx0XHRtciA9ICh0aGlzLmRhdGEucm90YXRlICsgdGhpcy5kYXRhLnNoZWFyWCkgKiBtaXg7XG5cdFx0XHRcdFx0XHRcdGxldCByID0gTWF0aC5hdGFuMihkeSArIHRoaXMudHksIGR4ICsgdGhpcy50eCkgLSBjYSAtIHRoaXMucm90YXRlT2Zmc2V0ICogbXI7XG5cdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlT2Zmc2V0ICs9IChyIC0gTWF0aC5jZWlsKHIgKiBNYXRoVXRpbHMuaW52UEkyIC0gMC41KSAqIE1hdGhVdGlscy5QSTIpICogaTtcblx0XHRcdFx0XHRcdFx0ciA9IHRoaXMucm90YXRlT2Zmc2V0ICogbXIgKyBjYTtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRyID0gbCAqIGJvbmUuZ2V0V29ybGRTY2FsZVgoKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAociA+IDApIHRoaXMuc2NhbGVPZmZzZXQgKz0gKGR4ICogYyArIGR5ICogcykgKiBpIC8gcjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKGNhKTtcblx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKGNhKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgciA9IGwgKiBib25lLmdldFdvcmxkU2NhbGVYKCk7XG5cdFx0XHRcdFx0XHRcdGlmIChyID4gMCkgdGhpcy5zY2FsZU9mZnNldCArPSAoZHggKiBjICsgZHkgKiBzKSAqIGkgLyByO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YSA9IHRoaXMucmVtYWluaW5nO1xuXHRcdFx0XHRcdFx0aWYgKGEgPj0gdCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZCA9PSAtMSkgZCA9IE1hdGgucG93KHRoaXMuZGFtcGluZywgNjAgKiB0KTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbSA9IHRoaXMubWFzc0ludmVyc2UgKiB0LCBlID0gdGhpcy5zdHJlbmd0aCwgdyA9IHRoaXMud2luZCwgZyA9IChTa2VsZXRvbi55RG93biA/IC10aGlzLmdyYXZpdHkgOiB0aGlzLmdyYXZpdHkpLCBoID0gbCAvIGY7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICh0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YSAtPSB0O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2NhbGVWZWxvY2l0eSArPSAodyAqIGMgLSBnICogcyAtIHRoaXMuc2NhbGVPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNjYWxlT2Zmc2V0ICs9IHRoaXMuc2NhbGVWZWxvY2l0eSAqIHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNjYWxlVmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJvdGF0ZU9yU2hlYXJYKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZVZlbG9jaXR5IC09ICgodyAqIHMgKyBnICogYykgKiBoICsgdGhpcy5yb3RhdGVPZmZzZXQgKiBlKSAqIG07XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJvdGF0ZU9mZnNldCArPSB0aGlzLnJvdGF0ZVZlbG9jaXR5ICogdDtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucm90YXRlVmVsb2NpdHkgKj0gZDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhIDwgdCkgYnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCByID0gdGhpcy5yb3RhdGVPZmZzZXQgKiBtciArIGNhO1xuXHRcdFx0XHRcdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cyA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYSA8IHQpIC8vXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLnJlbWFpbmluZyA9IGE7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5jeCA9IGJvbmUud29ybGRYO1xuXHRcdFx0XHR0aGlzLmN5ID0gYm9uZS53b3JsZFk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBQaHlzaWNzLnBvc2U6XG5cdFx0XHRcdGlmICh4KSBib25lLndvcmxkWCArPSB0aGlzLnhPZmZzZXQgKiBtaXggKiB0aGlzLmRhdGEueDtcblx0XHRcdFx0aWYgKHkpIGJvbmUud29ybGRZICs9IHRoaXMueU9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS55O1xuXHRcdH1cblxuXHRcdGlmIChyb3RhdGVPclNoZWFyWCkge1xuXHRcdFx0bGV0IG8gPSB0aGlzLnJvdGF0ZU9mZnNldCAqIG1peCwgcyA9IDAsIGMgPSAwLCBhID0gMDtcblx0XHRcdGlmICh0aGlzLmRhdGEuc2hlYXJYID4gMCkge1xuXHRcdFx0XHRsZXQgciA9IDA7XG5cdFx0XHRcdGlmICh0aGlzLmRhdGEucm90YXRlID4gMCkge1xuXHRcdFx0XHRcdHIgPSBvICogdGhpcy5kYXRhLnJvdGF0ZTtcblx0XHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0YyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRcdGEgPSBib25lLmI7XG5cdFx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRcdGJvbmUuZCA9IHMgKiBhICsgYyAqIGJvbmUuZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyICs9IG8gKiB0aGlzLmRhdGEuc2hlYXJYO1xuXHRcdFx0XHRzID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdGMgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0YSA9IGJvbmUuYTtcblx0XHRcdFx0Ym9uZS5hID0gYyAqIGEgLSBzICogYm9uZS5jO1xuXHRcdFx0XHRib25lLmMgPSBzICogYSArIGMgKiBib25lLmM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvICo9IHRoaXMuZGF0YS5yb3RhdGU7XG5cdFx0XHRcdHMgPSBNYXRoLnNpbihvKTtcblx0XHRcdFx0YyA9IE1hdGguY29zKG8pO1xuXHRcdFx0XHRhID0gYm9uZS5hO1xuXHRcdFx0XHRib25lLmEgPSBjICogYSAtIHMgKiBib25lLmM7XG5cdFx0XHRcdGJvbmUuYyA9IHMgKiBhICsgYyAqIGJvbmUuYztcblx0XHRcdFx0YSA9IGJvbmUuYjtcblx0XHRcdFx0Ym9uZS5iID0gYyAqIGEgLSBzICogYm9uZS5kO1xuXHRcdFx0XHRib25lLmQgPSBzICogYSArIGMgKiBib25lLmQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzY2FsZVgpIHtcblx0XHRcdGNvbnN0IHMgPSAxICsgdGhpcy5zY2FsZU9mZnNldCAqIG1peCAqIHRoaXMuZGF0YS5zY2FsZVg7XG5cdFx0XHRib25lLmEgKj0gcztcblx0XHRcdGJvbmUuYyAqPSBzO1xuXHRcdH1cblx0XHRpZiAocGh5c2ljcyAhPSBQaHlzaWNzLnBvc2UpIHtcblx0XHRcdHRoaXMudHggPSBsICogYm9uZS5hO1xuXHRcdFx0dGhpcy50eSA9IGwgKiBib25lLmM7XG5cdFx0fVxuXHRcdGJvbmUudXBkYXRlQXBwbGllZFRyYW5zZm9ybSgpO1xuXHR9XG5cblx0LyoqIFRyYW5zbGF0ZXMgdGhlIHBoeXNpY3MgY29uc3RyYWludCBzbyBuZXh0IHtAbGluayAjdXBkYXRlKFBoeXNpY3MpfSBmb3JjZXMgYXJlIGFwcGxpZWQgYXMgaWYgdGhlIGJvbmUgbW92ZWQgYW4gYWRkaXRpb25hbFxuXHQgKiBhbW91bnQgaW4gd29ybGQgc3BhY2UuICovXG5cdHRyYW5zbGF0ZSAoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcblx0XHR0aGlzLnV4IC09IHg7XG5cdFx0dGhpcy51eSAtPSB5O1xuXHRcdHRoaXMuY3ggLT0geDtcblx0XHR0aGlzLmN5IC09IHk7XG5cdH1cblxuXHQvKiogUm90YXRlcyB0aGUgcGh5c2ljcyBjb25zdHJhaW50IHNvIG5leHQge0BsaW5rICN1cGRhdGUoUGh5c2ljcyl9IGZvcmNlcyBhcmUgYXBwbGllZCBhcyBpZiB0aGUgYm9uZSByb3RhdGVkIGFyb3VuZCB0aGVcblx0ICogc3BlY2lmaWVkIHBvaW50IGluIHdvcmxkIHNwYWNlLiAqL1xuXHRyb3RhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyLCBkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRjb25zdCByID0gZGVncmVlcyAqIE1hdGhVdGlscy5kZWdSYWQsIGNvcyA9IE1hdGguY29zKHIpLCBzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRjb25zdCBkeCA9IHRoaXMuY3ggLSB4LCBkeSA9IHRoaXMuY3kgLSB5O1xuXHRcdHRoaXMudHJhbnNsYXRlKGR4ICogY29zIC0gZHkgKiBzaW4gLSBkeCwgZHggKiBzaW4gKyBkeSAqIGNvcyAtIGR5KTtcblx0fVxufVxuIl19
|
package/dist/Skeleton.d.ts
CHANGED
|
@@ -162,7 +162,7 @@ export declare class Skeleton {
|
|
|
162
162
|
findPhysicsConstraint(constraintName: string): PhysicsConstraint | null;
|
|
163
163
|
/** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose as `{ x: number, y: number, width: number, height: number }`.
|
|
164
164
|
* Note that this method will create temporary objects which can add to garbage collection pressure. Use `getBounds()` if garbage collection is a concern. */
|
|
165
|
-
getBoundsRect(): {
|
|
165
|
+
getBoundsRect(clipper?: SkeletonClipping): {
|
|
166
166
|
x: number;
|
|
167
167
|
y: number;
|
|
168
168
|
width: number;
|
package/dist/Skeleton.js
CHANGED
|
@@ -565,10 +565,10 @@ export class Skeleton {
|
|
|
565
565
|
}
|
|
566
566
|
/** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose as `{ x: number, y: number, width: number, height: number }`.
|
|
567
567
|
* Note that this method will create temporary objects which can add to garbage collection pressure. Use `getBounds()` if garbage collection is a concern. */
|
|
568
|
-
getBoundsRect() {
|
|
568
|
+
getBoundsRect(clipper) {
|
|
569
569
|
let offset = new Vector2();
|
|
570
570
|
let size = new Vector2();
|
|
571
|
-
this.getBounds(offset, size);
|
|
571
|
+
this.getBounds(offset, size, undefined, clipper);
|
|
572
572
|
return { x: offset.x, y: offset.y, width: size.x, height: size.y };
|
|
573
573
|
}
|
|
574
574
|
/** Returns the axis aligned bounding box (AABB) of the region and mesh attachments for the current pose.
|
|
@@ -658,4 +658,4 @@ export var Physics;
|
|
|
658
658
|
/** Physics are not updated but the pose from physics is applied. */
|
|
659
659
|
Physics[Physics["pose"] = 3] = "pose";
|
|
660
660
|
})(Physics || (Physics = {}));
|
|
661
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBbUIsTUFBTSxZQUFZLENBQUM7QUFFL0U7O2tJQUVrSTtBQUNsSSxNQUFNLE9BQU8sUUFBUTtJQUNaLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXJCLHNDQUFzQztJQUN0QyxJQUFJLENBQWU7SUFFbkIseUZBQXlGO0lBQ3pGLEtBQUssQ0FBYztJQUVuQix5REFBeUQ7SUFDekQsS0FBSyxD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LEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFL0Msc0NBQXNDO1FBQ3RDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BELElBQUksU0FBUyxHQUFHLFdBQVcs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Q0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3hELGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELCtGQUErRjtJQUMvRixhQUFhLENBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxPQUFlO1FBQ25ELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEQsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7QUFHRiw4RUFBOEU7QUFDOUUsTUFBTSxDQUFOLElBQVksT0FZWDtBQVpELFdBQVksT0FBTztJQUNsQiwwQ0FBMEM7SUFDMUMscUNBQUksQ0FBQTtJQUVKLDZDQUE2QztJQUM3Qyx1Q0FBSyxDQUFBO0lBRUwsZ0VBQWdFO0lBQ2hFLHlDQUFNLENBQUE7SUFFTixvRUFBb0U7SUFDcEUscUNBQUksQ0FBQTtBQUNMLENBQUMsRUFaVyxPQUFPLEtBQVAsT0FBTyxRQVlsQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgSnVseSAyOCwgMjAyMy4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDIzLCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yXG4gKiBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhFXG4gKiBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IENsaXBwaW5nQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0NsaXBwaW5nQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgTWVzaEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9NZXNoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUGF0aEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9QYXRoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUmVnaW9uQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1JlZ2lvbkF0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IEJvbmUgfSBmcm9tIFwiLi9Cb25lLmpzXCI7XG5pbXBvcnQgeyBJa0NvbnN0cmFpbnQgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50IH0gZnJvbSBcIi4vUGF0aENvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50IH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFNrZWxldG9uQ2xpcHBpbmcgfSBmcm9tIFwiLi9Ta2VsZXRvbkNsaXBwaW5nLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkRhdGEgfSBmcm9tIFwiLi9Ta2VsZXRvbkRhdGEuanNcIjtcbmltcG9ydCB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIi4vU2xvdC5qc1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29uc3RyYWludCB9IGZyb20gXCIuL1RyYW5zZm9ybUNvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFVwZGF0YWJsZSB9IGZyb20gXCIuL1VwZGF0YWJsZS5qc1wiO1xuaW1wb3J0IHsgQ29sb3IsIFV0aWxzLCBNYXRoVXRpbHMsIFZlY3RvcjIsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbi8qKiBTdG9yZXMgdGhlIGN1cnJlbnQgcG9zZSBmb3IgYSBza2VsZXRvbi5cbiAqXG4gKiBTZWUgW0luc3RhbmNlIG9iamVjdHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1ydW50aW1lLWFyY2hpdGVjdHVyZSNJbnN0YW5jZS1vYmplY3RzKSBpbiB0aGUgU3BpbmUgUnVudGltZXMgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgU2tlbGV0b24ge1xuXHRwcml2YXRlIHN0YXRpYyBxdWFkVHJpYW5nbGVzID0gWzAsIDEsIDIsIDIsIDMsIDBdO1xuXHRzdGF0aWMgeURvd24gPSBmYWxzZTtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3Mgc2V0dXAgcG9zZSBkYXRhLiAqL1xuXHRkYXRhOiBTa2VsZXRvbkRhdGE7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGJvbmVzLCBzb3J0ZWQgcGFyZW50IGZpcnN0LiBUaGUgcm9vdCBib25lIGlzIGFsd2F5cyB0aGUgZmlyc3QgYm9uZS4gKi9cblx0Ym9uZXM6IEFycmF5PEJvbmU+O1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBzbG90cyBpbiB0aGUgc2V0dXAgcG9zZSBkcmF3IG9yZGVyLiAqL1xuXHRzbG90czogQXJyYXk8U2xvdD47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHNsb3RzIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSBkcmF3bi4gVGhlIHJldHVybmVkIGFycmF5IG1heSBiZSBtb2RpZmllZCB0byBjaGFuZ2UgdGhlIGRyYXcgb3JkZXIuICovXG5cdGRyYXdPcmRlcjogQXJyYXk8U2xvdD47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIElLIGNvbnN0cmFpbnRzLiAqL1xuXHRpa0NvbnN0cmFpbnRzOiBBcnJheTxJa0NvbnN0cmFpbnQ+O1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyB0cmFuc2Zvcm0gY29uc3RyYWludHMuICovXG5cdHRyYW5zZm9ybUNvbnN0cmFpbnRzOiBBcnJheTxUcmFuc2Zvcm1Db25zdHJhaW50PjtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgcGF0aCBjb25zdHJhaW50cy4gKi9cblx0cGF0aENvbnN0cmFpbnRzOiBBcnJheTxQYXRoQ29uc3RyYWludD47XG5cblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgcGh5c2ljcyBjb25zdHJhaW50cy4gKi9cblx0cGh5c2ljc0NvbnN0cmFpbnRzOiBBcnJheTxQaHlzaWNzQ29uc3RyYWludD47XG5cblx0LyoqIFRoZSBsaXN0IG9mIGJvbmVzIGFuZCBjb25zdHJhaW50cywgc29ydGVkIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSB1cGRhdGVkLCBhcyBjb21wdXRlZCBieSB7QGxpbmsgI3VwZGF0ZUNhY2hlKCl9LiAqL1xuXHRfdXBkYXRlQ2FjaGUgPSBuZXcgQXJyYXk8VXBkYXRhYmxlPigpO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBjdXJyZW50IHNraW4uIE1heSBiZSBudWxsLiAqL1xuXHRza2luOiBTa2luIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBjb2xvciB0byB0aW50IGFsbCB0aGUgc2tlbGV0b24ncyBhdHRhY2htZW50cy4gKi9cblx0Y29sb3I6IENvbG9yO1xuXG5cdC8qKiBTY2FsZXMgdGhlIGVudGlyZSBza2VsZXRvbiBvbiB0aGUgWCBheGlzLiBUaGlzIGFmZmVjdHMgYWxsIGJvbmVzLCBldmVuIGlmIHRoZSBib25lJ3MgdHJhbnNmb3JtIG1vZGUgZGlzYWxsb3dzIHNjYWxlXG5cdCAgKiBpbmhlcml0YW5jZS4gKi9cblx0c2NhbGVYID0gMTtcblxuXHQvKiogU2NhbGVzIHRoZSBlbnRpcmUgc2tlbGV0b24gb24gdGhlIFkgYXhpcy4gVGhpcyBhZmZlY3RzIGFsbCBib25lcywgZXZlbiBpZiB0aGUgYm9uZSdzIHRyYW5zZm9ybSBtb2RlIGRpc2FsbG93cyBzY2FsZVxuXHQgICogaW5oZXJpdGFuY2UuICovXG5cdHByaXZhdGUgX3NjYWxlWSA9IDE7XG5cblx0cHVibGljIGdldCBzY2FsZVkgKCkge1xuXHRcdHJldHVybiBTa2VsZXRvbi55RG93biA/IC10aGlzLl9zY2FsZVkgOiB0aGlzLl9zY2FsZVk7XG5cdH1cblxuXHRwdWJsaWMgc2V0IHNjYWxlWSAoc2NhbGVZOiBudW1iZXIpIHtcblx0XHR0aGlzLl9zY2FsZVkgPSBzY2FsZVk7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgc2tlbGV0b24gWCBwb3NpdGlvbiwgd2hpY2ggaXMgYWRkZWQgdG8gdGhlIHJvb3QgYm9uZSB3b3JsZFggcG9zaXRpb24uICovXG5cdHggPSAwO1xuXG5cdC8qKiBTZXRzIHRoZSBza2VsZXRvbiBZIHBvc2l0aW9uLCB3aGljaCBpcyBhZGRlZCB0byB0aGUgcm9vdCBib25lIHdvcmxkWSBwb3NpdGlvbi4gKi9cblx0eSA9IDA7XG5cblx0LyoqIFJldHVybnMgdGhlIHNrZWxldG9uJ3MgdGltZS4gVGhpcyBpcyB1c2VkIGZvciB0aW1lLWJhc2VkIG1hbmlwdWxhdGlvbnMsIHN1Y2ggYXMge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50fS5cblx0ICogPHA+XG5cdCAqIFNlZSB7QGxpbmsgI3VwZGF0ZShmbG9hdCl9LiAqL1xuXHR0aW1lID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZGF0YTogU2tlbGV0b25EYXRhKSB7XG5cdFx0aWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLmRhdGEgPSBkYXRhO1xuXG5cdFx0dGhpcy5ib25lcyA9IG5ldyBBcnJheTxCb25lPigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGJvbmVEYXRhID0gZGF0YS5ib25lc1tpXTtcblx0XHRcdGxldCBib25lOiBCb25lO1xuXHRcdFx0aWYgKCFib25lRGF0YS5wYXJlbnQpXG5cdFx0XHRcdGJvbmUgPSBuZXcgQm9uZShib25lRGF0YSwgdGhpcywgbnVsbCk7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IHBhcmVudCA9IHRoaXMuYm9uZXNbYm9uZURhdGEucGFyZW50LmluZGV4XTtcblx0XHRcdFx0Ym9uZSA9IG5ldyBCb25lKGJvbmVEYXRhLCB0aGlzLCBwYXJlbnQpO1xuXHRcdFx0XHRwYXJlbnQuY2hpbGRyZW4ucHVzaChib25lKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuYm9uZXMucHVzaChib25lKTtcblx0XHR9XG5cblx0XHR0aGlzLnNsb3RzID0gbmV3IEFycmF5PFNsb3Q+KCk7XG5cdFx0dGhpcy5kcmF3T3JkZXIgPSBuZXcgQXJyYXk8U2xvdD4oKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuc2xvdHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBzbG90RGF0YSA9IGRhdGEuc2xvdHNbaV07XG5cdFx0XHRsZXQgYm9uZSA9IHRoaXMuYm9uZXNbc2xvdERhdGEuYm9uZURhdGEuaW5kZXhdO1xuXHRcdFx0bGV0IHNsb3QgPSBuZXcgU2xvdChzbG90RGF0YSwgYm9uZSk7XG5cdFx0XHR0aGlzLnNsb3RzLnB1c2goc2xvdCk7XG5cdFx0XHR0aGlzLmRyYXdPcmRlci5wdXNoKHNsb3QpO1xuXHRcdH1cblxuXHRcdHRoaXMuaWtDb25zdHJhaW50cyA9IG5ldyBBcnJheTxJa0NvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmlrQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBpa0NvbnN0cmFpbnREYXRhID0gZGF0YS5pa0NvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy5pa0NvbnN0cmFpbnRzLnB1c2gobmV3IElrQ29uc3RyYWludChpa0NvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cyA9IG5ldyBBcnJheTxUcmFuc2Zvcm1Db25zdHJhaW50PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS50cmFuc2Zvcm1Db25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyYW5zZm9ybUNvbnN0cmFpbnREYXRhID0gZGF0YS50cmFuc2Zvcm1Db25zdHJhaW50c1tpXTtcblx0XHRcdHRoaXMudHJhbnNmb3JtQ29uc3RyYWludHMucHVzaChuZXcgVHJhbnNmb3JtQ29uc3RyYWludCh0cmFuc2Zvcm1Db25zdHJhaW50RGF0YSwgdGhpcykpO1xuXHRcdH1cblxuXHRcdHRoaXMucGF0aENvbnN0cmFpbnRzID0gbmV3IEFycmF5PFBhdGhDb25zdHJhaW50PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5wYXRoQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBwYXRoQ29uc3RyYWludERhdGEgPSBkYXRhLnBhdGhDb25zdHJhaW50c1tpXTtcblx0XHRcdHRoaXMucGF0aENvbnN0cmFpbnRzLnB1c2gobmV3IFBhdGhDb25zdHJhaW50KHBhdGhDb25zdHJhaW50RGF0YSwgdGhpcykpO1xuXHRcdH1cblxuXHRcdHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzID0gbmV3IEFycmF5PFBoeXNpY3NDb25zdHJhaW50PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5waHlzaWNzQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBwaHlzaWNzQ29uc3RyYWludERhdGEgPSBkYXRhLnBoeXNpY3NDb25zdHJhaW50c1tpXTtcblx0XHRcdHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzLnB1c2gobmV3IFBoeXNpY3NDb25zdHJhaW50KHBoeXNpY3NDb25zdHJhaW50RGF0YSwgdGhpcykpO1xuXHRcdH1cblxuXHRcdHRoaXMuY29sb3IgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cdFx0dGhpcy51cGRhdGVDYWNoZSgpO1xuXHR9XG5cblx0LyoqIENhY2hlcyBpbmZvcm1hdGlvbiBhYm91dCBib25lcyBhbmQgY29uc3RyYWludHMuIE11c3QgYmUgY2FsbGVkIGlmIHRoZSB7QGxpbmsgI2dldFNraW4oKX0gaXMgbW9kaWZpZWQgb3IgaWYgYm9uZXMsXG5cdCAqIGNvbnN0cmFpbnRzLCBvciB3ZWlnaHRlZCBwYXRoIGF0dGFjaG1lbnRzIGFyZSBhZGRlZCBvciByZW1vdmVkLiAqL1xuXHR1cGRhdGVDYWNoZSAoKSB7XG5cdFx0bGV0IHVwZGF0ZUNhY2hlID0gdGhpcy5fdXBkYXRlQ2FjaGU7XG5cdFx0dXBkYXRlQ2FjaGUubGVuZ3RoID0gMDtcblxuXHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRib25lLnNvcnRlZCA9IGJvbmUuZGF0YS5za2luUmVxdWlyZWQ7XG5cdFx0XHRib25lLmFjdGl2ZSA9ICFib25lLnNvcnRlZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5za2luKSB7XG5cdFx0XHRsZXQgc2tpbkJvbmVzID0gdGhpcy5za2luLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLnNraW4uYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGxldCBib25lOiBCb25lIHwgbnVsbCA9IHRoaXMuYm9uZXNbc2tpbkJvbmVzW2ldLmluZGV4XTtcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGJvbmUuc29ydGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0Ym9uZS5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdGJvbmUgPSBib25lLnBhcmVudDtcblx0XHRcdFx0fSB3aGlsZSAoYm9uZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSUsgZmlyc3QsIGxvd2VzdCBoaWVyYXJjaHkgZGVwdGggZmlyc3QuXG5cdFx0bGV0IGlrQ29uc3RyYWludHMgPSB0aGlzLmlrQ29uc3RyYWludHM7XG5cdFx0bGV0IHRyYW5zZm9ybUNvbnN0cmFpbnRzID0gdGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cztcblx0XHRsZXQgcGF0aENvbnN0cmFpbnRzID0gdGhpcy5wYXRoQ29uc3RyYWludHM7XG5cdFx0bGV0IHBoeXNpY3NDb25zdHJhaW50cyA9IHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzO1xuXHRcdGxldCBpa0NvdW50ID0gaWtDb25zdHJhaW50cy5sZW5ndGgsIHRyYW5zZm9ybUNvdW50ID0gdHJhbnNmb3JtQ29uc3RyYWludHMubGVuZ3RoLCBwYXRoQ291bnQgPSBwYXRoQ29uc3RyYWludHMubGVuZ3RoLCBwaHlzaWNzQ291bnQgPSB0aGlzLnBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7XG5cdFx0bGV0IGNvbnN0cmFpbnRDb3VudCA9IGlrQ291bnQgKyB0cmFuc2Zvcm1Db3VudCArIHBhdGhDb3VudCArIHBoeXNpY3NDb3VudDtcblxuXHRcdG91dGVyOlxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY29uc3RyYWludENvdW50OyBpKyspIHtcblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBpa0NvdW50OyBpaSsrKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gaWtDb25zdHJhaW50c1tpaV07XG5cdFx0XHRcdGlmIChjb25zdHJhaW50LmRhdGEub3JkZXIgPT0gaSkge1xuXHRcdFx0XHRcdHRoaXMuc29ydElrQ29uc3RyYWludChjb25zdHJhaW50KTtcblx0XHRcdFx0XHRjb250aW51ZSBvdXRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHRyYW5zZm9ybUNvdW50OyBpaSsrKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gdHJhbnNmb3JtQ29uc3RyYWludHNbaWldO1xuXHRcdFx0XHRpZiAoY29uc3RyYWludC5kYXRhLm9yZGVyID09IGkpIHtcblx0XHRcdFx0XHR0aGlzLnNvcnRUcmFuc2Zvcm1Db25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdGNvbnRpbnVlIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgcGF0aENvdW50OyBpaSsrKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gcGF0aENvbnN0cmFpbnRzW2lpXTtcblx0XHRcdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5vcmRlciA9PSBpKSB7XG5cdFx0XHRcdFx0dGhpcy5zb3J0UGF0aENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cdFx0XHRcdFx0Y29udGludWUgb3V0ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBwaHlzaWNzQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHBoeXNpY3NDb25zdHJhaW50c1tpaV07XG5cdFx0XHRcdGlmIChjb25zdHJhaW50LmRhdGEub3JkZXIgPT0gaSkge1xuXHRcdFx0XHRcdHRoaXMuc29ydFBoeXNpY3NDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdGNvbnRpbnVlIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aGlzLnNvcnRCb25lKGJvbmVzW2ldKTtcblx0fVxuXG5cdHNvcnRJa0NvbnN0cmFpbnQgKGNvbnN0cmFpbnQ6IElrQ29uc3RyYWludCkge1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gY29uc3RyYWludC50YXJnZXQuaXNBY3RpdmUoKSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKSE7XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IHRhcmdldCA9IGNvbnN0cmFpbnQudGFyZ2V0O1xuXHRcdHRoaXMuc29ydEJvbmUodGFyZ2V0KTtcblxuXHRcdGxldCBjb25zdHJhaW5lZCA9IGNvbnN0cmFpbnQuYm9uZXM7XG5cdFx0bGV0IHBhcmVudCA9IGNvbnN0cmFpbmVkWzBdO1xuXHRcdHRoaXMuc29ydEJvbmUocGFyZW50KTtcblxuXHRcdGlmIChjb25zdHJhaW5lZC5sZW5ndGggPT0gMSkge1xuXHRcdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblx0XHRcdHRoaXMuc29ydFJlc2V0KHBhcmVudC5jaGlsZHJlbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBjaGlsZCA9IGNvbnN0cmFpbmVkW2NvbnN0cmFpbmVkLmxlbmd0aCAtIDFdO1xuXHRcdFx0dGhpcy5zb3J0Qm9uZShjaGlsZCk7XG5cblx0XHRcdHRoaXMuX3VwZGF0ZUNhY2hlLnB1c2goY29uc3RyYWludCk7XG5cblx0XHRcdHRoaXMuc29ydFJlc2V0KHBhcmVudC5jaGlsZHJlbik7XG5cdFx0XHRjaGlsZC5zb3J0ZWQgPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdHNvcnRQYXRoQ29uc3RyYWludCAoY29uc3RyYWludDogUGF0aENvbnN0cmFpbnQpIHtcblx0XHRjb25zdHJhaW50LmFjdGl2ZSA9IGNvbnN0cmFpbnQudGFyZ2V0LmJvbmUuaXNBY3RpdmUoKSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKSE7XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IHNsb3QgPSBjb25zdHJhaW50LnRhcmdldDtcblx0XHRsZXQgc2xvdEluZGV4ID0gc2xvdC5kYXRhLmluZGV4O1xuXHRcdGxldCBzbG90Qm9uZSA9IHNsb3QuYm9uZTtcblx0XHRpZiAodGhpcy5za2luKSB0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQodGhpcy5za2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRpZiAodGhpcy5kYXRhLmRlZmF1bHRTa2luICYmIHRoaXMuZGF0YS5kZWZhdWx0U2tpbiAhPSB0aGlzLnNraW4pXG5cdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQodGhpcy5kYXRhLmRlZmF1bHRTa2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMuZGF0YS5za2lucy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQodGhpcy5kYXRhLnNraW5zW2ldLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblxuXHRcdGxldCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBQYXRoQXR0YWNobWVudCkgdGhpcy5zb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50V2l0aChhdHRhY2htZW50LCBzbG90Qm9uZSk7XG5cblx0XHRsZXQgY29uc3RyYWluZWQgPSBjb25zdHJhaW50LmJvbmVzO1xuXHRcdGxldCBib25lQ291bnQgPSBjb25zdHJhaW5lZC5sZW5ndGg7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdHRoaXMuc29ydEJvbmUoY29uc3RyYWluZWRbaV0pO1xuXG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHR0aGlzLnNvcnRSZXNldChjb25zdHJhaW5lZFtpXS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGNvbnN0cmFpbmVkW2ldLnNvcnRlZCA9IHRydWU7XG5cdH1cblxuXHRzb3J0VHJhbnNmb3JtQ29uc3RyYWludCAoY29uc3RyYWludDogVHJhbnNmb3JtQ29uc3RyYWludCkge1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gY29uc3RyYWludC50YXJnZXQuaXNBY3RpdmUoKSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKSE7XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0dGhpcy5zb3J0Qm9uZShjb25zdHJhaW50LnRhcmdldCk7XG5cblx0XHRsZXQgY29uc3RyYWluZWQgPSBjb25zdHJhaW50LmJvbmVzO1xuXHRcdGxldCBib25lQ291bnQgPSBjb25zdHJhaW5lZC5sZW5ndGg7XG5cdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5sb2NhbCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKykge1xuXHRcdFx0XHRsZXQgY2hpbGQgPSBjb25zdHJhaW5lZFtpXTtcblx0XHRcdFx0dGhpcy5zb3J0Qm9uZShjaGlsZC5wYXJlbnQhKTtcblx0XHRcdFx0dGhpcy5zb3J0Qm9uZShjaGlsZCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspIHtcblx0XHRcdFx0dGhpcy5zb3J0Qm9uZShjb25zdHJhaW5lZFtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHR0aGlzLnNvcnRSZXNldChjb25zdHJhaW5lZFtpXS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGNvbnN0cmFpbmVkW2ldLnNvcnRlZCA9IHRydWU7XG5cdH1cblxuXHRzb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50IChza2luOiBTa2luLCBzbG90SW5kZXg6IG51bWJlciwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRsZXQgYXR0YWNobWVudHMgPSBza2luLmF0dGFjaG1lbnRzW3Nsb3RJbmRleF07XG5cdFx0aWYgKCFhdHRhY2htZW50cykgcmV0dXJuO1xuXHRcdGZvciAobGV0IGtleSBpbiBhdHRhY2htZW50cykge1xuXHRcdFx0dGhpcy5zb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50V2l0aChhdHRhY2htZW50c1trZXldLCBzbG90Qm9uZSk7XG5cdFx0fVxuXHR9XG5cblx0c29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudFdpdGggKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQsIHNsb3RCb25lOiBCb25lKSB7XG5cdFx0aWYgKCEoYXR0YWNobWVudCBpbnN0YW5jZW9mIFBhdGhBdHRhY2htZW50KSkgcmV0dXJuO1xuXHRcdGxldCBwYXRoQm9uZXMgPSAoPFBhdGhBdHRhY2htZW50PmF0dGFjaG1lbnQpLmJvbmVzO1xuXHRcdGlmICghcGF0aEJvbmVzKVxuXHRcdFx0dGhpcy5zb3J0Qm9uZShzbG90Qm9uZSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRsZXQgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwYXRoQm9uZXMubGVuZ3RoOyBpIDwgbjspIHtcblx0XHRcdFx0bGV0IG5uID0gcGF0aEJvbmVzW2krK107XG5cdFx0XHRcdG5uICs9IGk7XG5cdFx0XHRcdHdoaWxlIChpIDwgbm4pXG5cdFx0XHRcdFx0dGhpcy5zb3J0Qm9uZShib25lc1twYXRoQm9uZXNbaSsrXV0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNvcnRQaHlzaWNzQ29uc3RyYWludCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpIHtcblx0XHRjb25zdCBib25lID0gY29uc3RyYWludC5ib25lO1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gYm9uZS5hY3RpdmUgJiYgKCFjb25zdHJhaW50LmRhdGEuc2tpblJlcXVpcmVkIHx8ICh0aGlzLnNraW4gIT0gbnVsbCAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKTtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHR0aGlzLnNvcnRCb25lKGJvbmUpO1xuXG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdHRoaXMuc29ydFJlc2V0KGJvbmUuY2hpbGRyZW4pO1xuXHRcdGJvbmUuc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHNvcnRCb25lIChib25lOiBCb25lKSB7XG5cdFx0aWYgKCFib25lKSByZXR1cm47XG5cdFx0aWYgKGJvbmUuc29ydGVkKSByZXR1cm47XG5cdFx0bGV0IHBhcmVudCA9IGJvbmUucGFyZW50O1xuXHRcdGlmIChwYXJlbnQpIHRoaXMuc29ydEJvbmUocGFyZW50KTtcblx0XHRib25lLnNvcnRlZCA9IHRydWU7XG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChib25lKTtcblx0fVxuXG5cdHNvcnRSZXNldCAoYm9uZXM6IEFycmF5PEJvbmU+KSB7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRpZiAoIWJvbmUuYWN0aXZlKSBjb250aW51ZTtcblx0XHRcdGlmIChib25lLnNvcnRlZCkgdGhpcy5zb3J0UmVzZXQoYm9uZS5jaGlsZHJlbik7XG5cdFx0XHRib25lLnNvcnRlZCA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBVcGRhdGVzIHRoZSB3b3JsZCB0cmFuc2Zvcm0gZm9yIGVhY2ggYm9uZSBhbmQgYXBwbGllcyBhbGwgY29uc3RyYWludHMuXG5cdCAqXG5cdCAqIFNlZSBbV29ybGQgdHJhbnNmb3Jtc10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtc2tlbGV0b25zI1dvcmxkLXRyYW5zZm9ybXMpIGluIHRoZSBTcGluZVxuXHQgKiBSdW50aW1lcyBHdWlkZS4gKi9cblx0dXBkYXRlV29ybGRUcmFuc2Zvcm0gKHBoeXNpY3M6IFBoeXNpY3MpIHtcblx0XHRpZiAocGh5c2ljcyA9PT0gdW5kZWZpbmVkIHx8IHBoeXNpY3MgPT09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInBoeXNpY3MgaXMgdW5kZWZpbmVkXCIpO1xuXHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRib25lLmF4ID0gYm9uZS54O1xuXHRcdFx0Ym9uZS5heSA9IGJvbmUueTtcblx0XHRcdGJvbmUuYXJvdGF0aW9uID0gYm9uZS5yb3RhdGlvbjtcblx0XHRcdGJvbmUuYXNjYWxlWCA9IGJvbmUuc2NhbGVYO1xuXHRcdFx0Ym9uZS5hc2NhbGVZID0gYm9uZS5zY2FsZVk7XG5cdFx0XHRib25lLmFzaGVhclggPSBib25lLnNoZWFyWDtcblx0XHRcdGJvbmUuYXNoZWFyWSA9IGJvbmUuc2hlYXJZO1xuXHRcdH1cblxuXHRcdGxldCB1cGRhdGVDYWNoZSA9IHRoaXMuX3VwZGF0ZUNhY2hlO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdXBkYXRlQ2FjaGUubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0dXBkYXRlQ2FjaGVbaV0udXBkYXRlKHBoeXNpY3MpO1xuXHR9XG5cblx0dXBkYXRlV29ybGRUcmFuc2Zvcm1XaXRoIChwaHlzaWNzOiBQaHlzaWNzLCBwYXJlbnQ6IEJvbmUpIHtcblx0XHRpZiAoIXBhcmVudCkgdGhyb3cgbmV3IEVycm9yKFwicGFyZW50IGNhbm5vdCBiZSBudWxsLlwiKTtcblxuXHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDEsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHsgLy8gU2tpcCByb290IGJvbmUuXG5cdFx0XHRsZXQgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0Ym9uZS5heCA9IGJvbmUueDtcblx0XHRcdGJvbmUuYXkgPSBib25lLnk7XG5cdFx0XHRib25lLmFyb3RhdGlvbiA9IGJvbmUucm90YXRpb247XG5cdFx0XHRib25lLmFzY2FsZVggPSBib25lLnNjYWxlWDtcblx0XHRcdGJvbmUuYXNjYWxlWSA9IGJvbmUuc2NhbGVZO1xuXHRcdFx0Ym9uZS5hc2hlYXJYID0gYm9uZS5zaGVhclg7XG5cdFx0XHRib25lLmFzaGVhclkgPSBib25lLnNoZWFyWTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSB0aGUgcGFyZW50IGJvbmUgdHJhbnNmb3JtIHRvIHRoZSByb290IGJvbmUuIFRoZSByb290IGJvbmUgYWx3YXlzIGluaGVyaXRzIHNjYWxlLCByb3RhdGlvbiBhbmQgcmVmbGVjdGlvbi5cblx0XHRsZXQgcm9vdEJvbmUgPSB0aGlzLmdldFJvb3RCb25lKCk7XG5cdFx0aWYgKCFyb290Qm9uZSkgdGhyb3cgbmV3IEVycm9yKFwiUm9vdCBib25lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdGxldCBwYSA9IHBhcmVudC5hLCBwYiA9IHBhcmVudC5iLCBwYyA9IHBhcmVudC5jLCBwZCA9IHBhcmVudC5kO1xuXHRcdHJvb3RCb25lLndvcmxkWCA9IHBhICogdGhpcy54ICsgcGIgKiB0aGlzLnkgKyBwYXJlbnQud29ybGRYO1xuXHRcdHJvb3RCb25lLndvcmxkWSA9IHBjICogdGhpcy54ICsgcGQgKiB0aGlzLnkgKyBwYXJlbnQud29ybGRZO1xuXG5cdFx0Y29uc3QgcnggPSAocm9vdEJvbmUucm90YXRpb24gKyByb290Qm9uZS5zaGVhclgpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRjb25zdCByeSA9IChyb290Qm9uZS5yb3RhdGlvbiArIDkwICsgcm9vdEJvbmUuc2hlYXJZKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0Y29uc3QgbGEgPSBNYXRoLmNvcyhyeCkgKiByb290Qm9uZS5zY2FsZVg7XG5cdFx0Y29uc3QgbGIgPSBNYXRoLmNvcyhyeSkgKiByb290Qm9uZS5zY2FsZVk7XG5cdFx0Y29uc3QgbGMgPSBNYXRoLnNpbihyeCkgKiByb290Qm9uZS5zY2FsZVg7XG5cdFx0Y29uc3QgbGQgPSBNYXRoLnNpbihyeSkgKiByb290Qm9uZS5zY2FsZVk7XG5cdFx0cm9vdEJvbmUuYSA9IChwYSAqIGxhICsgcGIgKiBsYykgKiB0aGlzLnNjYWxlWDtcblx0XHRyb290Qm9uZS5iID0gKHBhICogbGIgKyBwYiAqIGxkKSAqIHRoaXMuc2NhbGVYO1xuXHRcdHJvb3RCb25lLmMgPSAocGMgKiBsYSArIHBkICogbGMpICogdGhpcy5zY2FsZVk7XG5cdFx0cm9vdEJvbmUuZCA9IChwYyAqIGxiICsgcGQgKiBsZCkgKiB0aGlzLnNjYWxlWTtcblxuXHRcdC8vIFVwZGF0ZSBldmVyeXRoaW5nIGV4Y2VwdCByb290IGJvbmUuXG5cdFx0bGV0IHVwZGF0ZUNhY2hlID0gdGhpcy5fdXBkYXRlQ2FjaGU7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB1cGRhdGVDYWNoZS5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCB1cGRhdGFibGUgPSB1cGRhdGVDYWNoZVtpXTtcblx0XHRcdGlmICh1cGRhdGFibGUgIT0gcm9vdEJvbmUpIHVwZGF0YWJsZS51cGRhdGUocGh5c2ljcyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFNldHMgdGhlIGJvbmVzLCBjb25zdHJhaW50cywgYW5kIHNsb3RzIHRvIHRoZWlyIHNldHVwIHBvc2UgdmFsdWVzLiAqL1xuXHRzZXRUb1NldHVwUG9zZSAoKSB7XG5cdFx0dGhpcy5zZXRCb25lc1RvU2V0dXBQb3NlKCk7XG5cdFx0dGhpcy5zZXRTbG90c1RvU2V0dXBQb3NlKCk7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgYm9uZXMgYW5kIGNvbnN0cmFpbnRzIHRvIHRoZWlyIHNldHVwIHBvc2UgdmFsdWVzLiAqL1xuXHRzZXRCb25lc1RvU2V0dXBQb3NlICgpIHtcblx0XHRmb3IgKGNvbnN0IGJvbmUgb2YgdGhpcy5ib25lcykgYm9uZS5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLmlrQ29uc3RyYWludHMpIGNvbnN0cmFpbnQuc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnQgb2YgdGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLnBhdGhDb25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLnBoeXNpY3NDb25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHNsb3RzIGFuZCBkcmF3IG9yZGVyIHRvIHRoZWlyIHNldHVwIHBvc2UgdmFsdWVzLiAqL1xuXHRzZXRTbG90c1RvU2V0dXBQb3NlICgpIHtcblx0XHRsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXHRcdFV0aWxzLmFycmF5Q29weShzbG90cywgMCwgdGhpcy5kcmF3T3JkZXIsIDAsIHNsb3RzLmxlbmd0aCk7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRzbG90c1tpXS5zZXRUb1NldHVwUG9zZSgpO1xuXHR9XG5cblx0LyoqIEByZXR1cm5zIE1heSByZXR1cm4gbnVsbC4gKi9cblx0Z2V0Um9vdEJvbmUgKCkge1xuXHRcdGlmICh0aGlzLmJvbmVzLmxlbmd0aCA9PSAwKSByZXR1cm4gbnVsbDtcblx0XHRyZXR1cm4gdGhpcy5ib25lc1swXTtcblx0fVxuXG5cdC8qKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZEJvbmUgKGJvbmVOYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWJvbmVOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJib25lTmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGlmIChib25lLmRhdGEubmFtZSA9PSBib25lTmFtZSkgcmV0dXJuIGJvbmU7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGEgc2xvdCBieSBjb21wYXJpbmcgZWFjaCBzbG90J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2QgdGhhbiB0byBjYWxsIGl0XG5cdCAqIHJlcGVhdGVkbHkuXG5cdCAqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kU2xvdCAoc2xvdE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghc2xvdE5hbWUpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgc2xvdCA9IHNsb3RzW2ldO1xuXHRcdFx0aWYgKHNsb3QuZGF0YS5uYW1lID09IHNsb3ROYW1lKSByZXR1cm4gc2xvdDtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogU2V0cyBhIHNraW4gYnkgbmFtZS5cblx0ICpcblx0ICogU2VlIHtAbGluayAjc2V0U2tpbigpfS4gKi9cblx0c2V0U2tpbkJ5TmFtZSAoc2tpbk5hbWU6IHN0cmluZykge1xuXHRcdGxldCBza2luID0gdGhpcy5kYXRhLmZpbmRTa2luKHNraW5OYW1lKTtcblx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihcIlNraW4gbm90IGZvdW5kOiBcIiArIHNraW5OYW1lKTtcblx0XHR0aGlzLnNldFNraW4oc2tpbik7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgc2tpbiB1c2VkIHRvIGxvb2sgdXAgYXR0YWNobWVudHMgYmVmb3JlIGxvb2tpbmcgaW4gdGhlIHtAbGluayBTa2VsZXRvbkRhdGEjZGVmYXVsdFNraW4gZGVmYXVsdCBza2lufS4gSWYgdGhlXG5cdCAqIHNraW4gaXMgY2hhbmdlZCwge0BsaW5rICN1cGRhdGVDYWNoZSgpfSBpcyBjYWxsZWQuXG5cdCAqXG5cdCAqIEF0dGFjaG1lbnRzIGZyb20gdGhlIG5ldyBza2luIGFyZSBhdHRhY2hlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBhdHRhY2htZW50IGZyb20gdGhlIG9sZCBza2luIHdhcyBhdHRhY2hlZC4gSWYgdGhlcmUgd2FzIG5vXG5cdCAqIG9sZCBza2luLCBlYWNoIHNsb3QncyBzZXR1cCBtb2RlIGF0dGFjaG1lbnQgaXMgYXR0YWNoZWQgZnJvbSB0aGUgbmV3IHNraW4uXG5cdCAqXG5cdCAqIEFmdGVyIGNoYW5naW5nIHRoZSBza2luLCB0aGUgdmlzaWJsZSBhdHRhY2htZW50cyBjYW4gYmUgcmVzZXQgdG8gdGhvc2UgYXR0YWNoZWQgaW4gdGhlIHNldHVwIHBvc2UgYnkgY2FsbGluZ1xuXHQgKiB7QGxpbmsgI3NldFNsb3RzVG9TZXR1cFBvc2UoKX0uIEFsc28sIG9mdGVuIHtAbGluayBBbmltYXRpb25TdGF0ZSNhcHBseSgpfSBpcyBjYWxsZWQgYmVmb3JlIHRoZSBuZXh0IHRpbWUgdGhlXG5cdCAqIHNrZWxldG9uIGlzIHJlbmRlcmVkIHRvIGFsbG93IGFueSBhdHRhY2htZW50IGtleXMgaW4gdGhlIGN1cnJlbnQgYW5pbWF0aW9uKHMpIHRvIGhpZGUgb3Igc2hvdyBhdHRhY2htZW50cyBmcm9tIHRoZSBuZXcgc2tpbi5cblx0ICogQHBhcmFtIG5ld1NraW4gTWF5IGJlIG51bGwuICovXG5cdHNldFNraW4gKG5ld1NraW46IFNraW4pIHtcblx0XHRpZiAobmV3U2tpbiA9PSB0aGlzLnNraW4pIHJldHVybjtcblx0XHRpZiAobmV3U2tpbikge1xuXHRcdFx0aWYgKHRoaXMuc2tpbilcblx0XHRcdFx0bmV3U2tpbi5hdHRhY2hBbGwodGhpcywgdGhpcy5za2luKTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0XHRcdGxldCBzbG90ID0gc2xvdHNbaV07XG5cdFx0XHRcdFx0bGV0IG5hbWUgPSBzbG90LmRhdGEuYXR0YWNobWVudE5hbWU7XG5cdFx0XHRcdFx0aWYgKG5hbWUpIHtcblx0XHRcdFx0XHRcdGxldCBhdHRhY2htZW50ID0gbmV3U2tpbi5nZXRBdHRhY2htZW50KGksIG5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKGF0dGFjaG1lbnQpIHNsb3Quc2V0QXR0YWNobWVudChhdHRhY2htZW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5za2luID0gbmV3U2tpbjtcblx0XHR0aGlzLnVwZGF0ZUNhY2hlKCk7XG5cdH1cblxuXG5cdC8qKiBGaW5kcyBhbiBhdHRhY2htZW50IGJ5IGxvb2tpbmcgaW4gdGhlIHtAbGluayAjc2tpbn0gYW5kIHtAbGluayBTa2VsZXRvbkRhdGEjZGVmYXVsdFNraW59IHVzaW5nIHRoZSBzbG90IG5hbWUgYW5kIGF0dGFjaG1lbnRcblx0ICogbmFtZS5cblx0ICpcblx0ICogU2VlIHtAbGluayAjZ2V0QXR0YWNobWVudCgpfS5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGdldEF0dGFjaG1lbnRCeU5hbWUgKHNsb3ROYW1lOiBzdHJpbmcsIGF0dGFjaG1lbnROYW1lOiBzdHJpbmcpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0bGV0IHNsb3QgPSB0aGlzLmRhdGEuZmluZFNsb3Qoc2xvdE5hbWUpO1xuXHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBmaW5kIHNsb3Qgd2l0aCBuYW1lICR7c2xvdE5hbWV9YCk7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0QXR0YWNobWVudChzbG90LmluZGV4LCBhdHRhY2htZW50TmFtZSk7XG5cdH1cblxuXHQvKiogRmluZHMgYW4gYXR0YWNobWVudCBieSBsb29raW5nIGluIHRoZSB7QGxpbmsgI3NraW59IGFuZCB7QGxpbmsgU2tlbGV0b25EYXRhI2RlZmF1bHRTa2lufSB1c2luZyB0aGUgc2xvdCBpbmRleCBhbmRcblx0ICogYXR0YWNobWVudCBuYW1lLiBGaXJzdCB0aGUgc2tpbiBpcyBjaGVja2VkIGFuZCBpZiB0aGUgYXR0YWNobWVudCB3YXMgbm90IGZvdW5kLCB0aGUgZGVmYXVsdCBza2luIGlzIGNoZWNrZWQuXG5cdCAqXG5cdCAqIFNlZSBbUnVudGltZSBza2luc10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtc2tpbnMpIGluIHRoZSBTcGluZSBSdW50aW1lcyBHdWlkZS5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGdldEF0dGFjaG1lbnQgKHNsb3RJbmRleDogbnVtYmVyLCBhdHRhY2htZW50TmFtZTogc3RyaW5nKTogQXR0YWNobWVudCB8IG51bGwge1xuXHRcdGlmICghYXR0YWNobWVudE5hbWUpIHRocm93IG5ldyBFcnJvcihcImF0dGFjaG1lbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRpZiAodGhpcy5za2luKSB7XG5cdFx0XHRsZXQgYXR0YWNobWVudCA9IHRoaXMuc2tpbi5nZXRBdHRhY2htZW50KHNsb3RJbmRleCwgYXR0YWNobWVudE5hbWUpO1xuXHRcdFx0aWYgKGF0dGFjaG1lbnQpIHJldHVybiBhdHRhY2htZW50O1xuXHRcdH1cblx0XHRpZiAodGhpcy5kYXRhLmRlZmF1bHRTa2luKSByZXR1cm4gdGhpcy5kYXRhLmRlZmF1bHRTa2luLmdldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBhdHRhY2htZW50TmFtZSk7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogQSBjb252ZW5pZW5jZSBtZXRob2QgdG8gc2V0IGFuIGF0dGFjaG1lbnQgYnkgZmluZGluZyB0aGUgc2xvdCB3aXRoIHtAbGluayAjZmluZFNsb3QoKX0sIGZpbmRpbmcgdGhlIGF0dGFjaG1lbnQgd2l0aFxuXHQgKiB7QGxpbmsgI2dldEF0dGFjaG1lbnQoKX0sIHRoZW4gc2V0dGluZyB0aGUgc2xvdCdzIHtAbGluayBTbG90I2F0dGFjaG1lbnR9LlxuXHQgKiBAcGFyYW0gYXR0YWNobWVudE5hbWUgTWF5IGJlIG51bGwgdG8gY2xlYXIgdGhlIHNsb3QncyBhdHRhY2htZW50LiAqL1xuXHRzZXRBdHRhY2htZW50IChzbG90TmFtZTogc3RyaW5nLCBhdHRhY2htZW50TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFzbG90TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwic2xvdE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBzbG90ID0gc2xvdHNbaV07XG5cdFx0XHRpZiAoc2xvdC5kYXRhLm5hbWUgPT0gc2xvdE5hbWUpIHtcblx0XHRcdFx0bGV0IGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQgfCBudWxsID0gbnVsbDtcblx0XHRcdFx0aWYgKGF0dGFjaG1lbnROYW1lKSB7XG5cdFx0XHRcdFx0YXR0YWNobWVudCA9IHRoaXMuZ2V0QXR0YWNobWVudChpLCBhdHRhY2htZW50TmFtZSk7XG5cdFx0XHRcdFx0aWYgKCFhdHRhY2htZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJBdHRhY2htZW50IG5vdCBmb3VuZDogXCIgKyBhdHRhY2htZW50TmFtZSArIFwiLCBmb3Igc2xvdDogXCIgKyBzbG90TmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2xvdC5zZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcihcIlNsb3Qgbm90IGZvdW5kOiBcIiArIHNsb3ROYW1lKTtcblx0fVxuXG5cblx0LyoqIEZpbmRzIGFuIElLIGNvbnN0cmFpbnQgYnkgY29tcGFyaW5nIGVhY2ggSUsgY29uc3RyYWludCdzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXMgbWV0aG9kXG5cdCAqIHRoYW4gdG8gY2FsbCBpdCByZXBlYXRlZGx5LlxuXHQgKiBAcmV0dXJuIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kSWtDb25zdHJhaW50IChjb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFjb25zdHJhaW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLmlrQ29uc3RyYWludHMuZmluZCgoY29uc3RyYWludCkgPT4gY29uc3RyYWludC5kYXRhLm5hbWUgPT0gY29uc3RyYWludE5hbWUpID8/IG51bGw7XG5cdH1cblxuXHQvKiogRmluZHMgYSB0cmFuc2Zvcm0gY29uc3RyYWludCBieSBjb21wYXJpbmcgZWFjaCB0cmFuc2Zvcm0gY29uc3RyYWludCdzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mXG5cdCAqIHRoaXMgbWV0aG9kIHRoYW4gdG8gY2FsbCBpdCByZXBlYXRlZGx5LlxuXHQgKiBAcmV0dXJuIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kVHJhbnNmb3JtQ29uc3RyYWludCAoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghY29uc3RyYWludE5hbWUpIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRyZXR1cm4gdGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGEubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgPz8gbnVsbDtcblx0fVxuXG5cdC8qKiBGaW5kcyBhIHBhdGggY29uc3RyYWludCBieSBjb21wYXJpbmcgZWFjaCBwYXRoIGNvbnN0cmFpbnQncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzIG1ldGhvZFxuXHQgKiB0aGFuIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS5cblx0ICogQHJldHVybiBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZFBhdGhDb25zdHJhaW50IChjb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFjb25zdHJhaW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLnBhdGhDb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGEubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgPz8gbnVsbDtcblx0fVxuXG5cdC8qKiBGaW5kcyBhIHBoeXNpY3MgY29uc3RyYWludCBieSBjb21wYXJpbmcgZWFjaCBwaHlzaWNzIGNvbnN0cmFpbnQncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzXG5cdCAqIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4gKi9cblx0ZmluZFBoeXNpY3NDb25zdHJhaW50IChjb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKGNvbnN0cmFpbnROYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRyZXR1cm4gdGhpcy5waHlzaWNzQ29uc3RyYWludHMuZmluZCgoY29uc3RyYWludCkgPT4gY29uc3RyYWludC5kYXRhLm5hbWUgPT0gY29uc3RyYWludE5hbWUpID8/IG51bGw7XG5cdH1cblxuXHQvKiogUmV0dXJucyB0aGUgYXhpcyBhbGlnbmVkIGJvdW5kaW5nIGJveCAoQUFCQikgb2YgdGhlIHJlZ2lvbiBhbmQgbWVzaCBhdHRhY2htZW50cyBmb3IgdGhlIGN1cnJlbnQgcG9zZSBhcyBgeyB4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIgfWAuXG5cdCAqIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCB3aWxsIGNyZWF0ZSB0ZW1wb3Jhcnkgb2JqZWN0cyB3aGljaCBjYW4gYWRkIHRvIGdhcmJhZ2UgY29sbGVjdGlvbiBwcmVzc3VyZS4gVXNlIGBnZXRCb3VuZHMoKWAgaWYgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIGEgY29uY2Vybi4gKi9cblx0Z2V0Qm91bmRzUmVjdCAoKSB7XG5cdFx0bGV0IG9mZnNldCA9IG5ldyBWZWN0b3IyKCk7XG5cdFx0bGV0IHNpemUgPSBuZXcgVmVjdG9yMigpO1xuXHRcdHRoaXMuZ2V0Qm91bmRzKG9mZnNldCwgc2l6ZSk7XG5cdFx0cmV0dXJuIHsgeDogb2Zmc2V0LngsIHk6IG9mZnNldC55LCB3aWR0aDogc2l6ZS54LCBoZWlnaHQ6IHNpemUueSB9O1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIGF4aXMgYWxpZ25lZCBib3VuZGluZyBib3ggKEFBQkIpIG9mIHRoZSByZWdpb24gYW5kIG1lc2ggYXR0YWNobWVudHMgZm9yIHRoZSBjdXJyZW50IHBvc2UuXG5cdCAqIEBwYXJhbSBvZmZzZXQgQW4gb3V0cHV0IHZhbHVlLCB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgc2tlbGV0b24gb3JpZ2luIHRvIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIEFBQkIuXG5cdCAqIEBwYXJhbSBzaXplIEFuIG91dHB1dCB2YWx1ZSwgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIEFBQkIuXG5cdCAqIEBwYXJhbSB0ZW1wIFdvcmtpbmcgbWVtb3J5IHRvIHRlbXBvcmFyaWx5IHN0b3JlIGF0dGFjaG1lbnRzJyBjb21wdXRlZCB3b3JsZCB2ZXJ0aWNlcy5cblx0ICogQHBhcmFtIGNsaXBwZXIge0BsaW5rIFNrZWxldG9uQ2xpcHBpbmd9IHRvIHVzZS4gSWYgPGNvZGU+bnVsbDwvY29kZT4sIG5vIGNsaXBwaW5nIGlzIGFwcGxpZWQuICovXG5cdGdldEJvdW5kcyAob2Zmc2V0OiBWZWN0b3IyLCBzaXplOiBWZWN0b3IyLCB0ZW1wOiBBcnJheTxudW1iZXI+ID0gbmV3IEFycmF5PG51bWJlcj4oMiksIGNsaXBwZXI6IFNrZWxldG9uQ2xpcHBpbmcgfCBudWxsID0gbnVsbCkge1xuXHRcdGlmICghb2Zmc2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJvZmZzZXQgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGlmICghc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwic2l6ZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IGRyYXdPcmRlciA9IHRoaXMuZHJhd09yZGVyO1xuXHRcdGxldCBtaW5YID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBtaW5ZID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBtYXhYID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCBtYXhZID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHNsb3QgPSBkcmF3T3JkZXJbaV07XG5cdFx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIGNvbnRpbnVlO1xuXHRcdFx0bGV0IHZlcnRpY2VzTGVuZ3RoID0gMDtcblx0XHRcdGxldCB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cdFx0XHRsZXQgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UgfCBudWxsID0gbnVsbDtcblx0XHRcdGxldCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cdFx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFJlZ2lvbkF0dGFjaG1lbnQpIHtcblx0XHRcdFx0dmVydGljZXNMZW5ndGggPSA4O1xuXHRcdFx0XHR2ZXJ0aWNlcyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0ZW1wLCB2ZXJ0aWNlc0xlbmd0aCwgMCk7XG5cdFx0XHRcdGF0dGFjaG1lbnQuY29tcHV0ZVdvcmxkVmVydGljZXMoc2xvdCwgdmVydGljZXMsIDAsIDIpO1xuXHRcdFx0XHR0cmlhbmdsZXMgPSBTa2VsZXRvbi5xdWFkVHJpYW5nbGVzO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgTWVzaEF0dGFjaG1lbnQpIHtcblx0XHRcdFx0bGV0IG1lc2ggPSAoPE1lc2hBdHRhY2htZW50PmF0dGFjaG1lbnQpO1xuXHRcdFx0XHR2ZXJ0aWNlc0xlbmd0aCA9IG1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHRcdFx0dmVydGljZXMgPSBVdGlscy5zZXRBcnJheVNpemUodGVtcCwgdmVydGljZXNMZW5ndGgsIDApO1xuXHRcdFx0XHRtZXNoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNsb3QsIDAsIHZlcnRpY2VzTGVuZ3RoLCB2ZXJ0aWNlcywgMCwgMik7XG5cdFx0XHRcdHRyaWFuZ2xlcyA9IG1lc2gudHJpYW5nbGVzO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgQ2xpcHBpbmdBdHRhY2htZW50ICYmIGNsaXBwZXIgIT0gbnVsbCkge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBTdGFydChzbG90LCBhdHRhY2htZW50KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAodmVydGljZXMgJiYgdHJpYW5nbGVzKSB7XG5cdFx0XHRcdGlmIChjbGlwcGVyICE9IG51bGwgJiYgY2xpcHBlci5pc0NsaXBwaW5nKCkpIHtcblx0XHRcdFx0XHRjbGlwcGVyLmNsaXBUcmlhbmdsZXModmVydGljZXMsIHRyaWFuZ2xlcywgdHJpYW5nbGVzLmxlbmd0aCk7XG5cdFx0XHRcdFx0dmVydGljZXMgPSBjbGlwcGVyLmNsaXBwZWRWZXJ0aWNlcztcblx0XHRcdFx0XHR2ZXJ0aWNlc0xlbmd0aCA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gdmVydGljZXMubGVuZ3RoOyBpaSA8IG5uOyBpaSArPSAyKSB7XG5cdFx0XHRcdFx0bGV0IHggPSB2ZXJ0aWNlc1tpaV0sIHkgPSB2ZXJ0aWNlc1tpaSArIDFdO1xuXHRcdFx0XHRcdG1pblggPSBNYXRoLm1pbihtaW5YLCB4KTtcblx0XHRcdFx0XHRtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG5cdFx0XHRcdFx0bWF4WCA9IE1hdGgubWF4KG1heFgsIHgpO1xuXHRcdFx0XHRcdG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGNsaXBwZXIgIT0gbnVsbCkgY2xpcHBlci5jbGlwRW5kV2l0aFNsb3Qoc2xvdCk7XG5cdFx0fVxuXHRcdGlmIChjbGlwcGVyICE9IG51bGwpIGNsaXBwZXIuY2xpcEVuZCgpO1xuXHRcdG9mZnNldC5zZXQobWluWCwgbWluWSk7XG5cdFx0c2l6ZS5zZXQobWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKTtcblx0fVxuXG5cdC8qKiBJbmNyZW1lbnRzIHRoZSBza2VsZXRvbidzIHtAbGluayAjdGltZX0uICovXG5cdHVwZGF0ZSAoZGVsdGE6IG51bWJlcikge1xuXHRcdHRoaXMudGltZSArPSBkZWx0YTtcblx0fVxuXG5cdHBoeXNpY3NUcmFuc2xhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG5cdFx0Y29uc3QgcGh5c2ljc0NvbnN0cmFpbnRzID0gdGhpcy5waHlzaWNzQ29uc3RyYWludHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwaHlzaWNzQ29uc3RyYWludHMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0cGh5c2ljc0NvbnN0cmFpbnRzW2ldLnRyYW5zbGF0ZSh4LCB5KTtcblx0fVxuXG5cdC8qKiBDYWxscyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnQjcm90YXRlKGZsb2F0LCBmbG9hdCwgZmxvYXQpfSBmb3IgZWFjaCBwaHlzaWNzIGNvbnN0cmFpbnQuICovXG5cdHBoeXNpY3NSb3RhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyLCBkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRjb25zdCBwaHlzaWNzQ29uc3RyYWludHMgPSB0aGlzLnBoeXNpY3NDb25zdHJhaW50cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRwaHlzaWNzQ29uc3RyYWludHNbaV0ucm90YXRlKHgsIHksIGRlZ3JlZXMpO1xuXHR9XG59XG5cbi8qKiBEZXRlcm1pbmVzIGhvdyBwaHlzaWNzIGFuZCBvdGhlciBub24tZGV0ZXJtaW5pc3RpYyB1cGRhdGVzIGFyZSBhcHBsaWVkLiAqL1xuZXhwb3J0IGVudW0gUGh5c2ljcyB7XG5cdC8qKiBQaHlzaWNzIGFyZSBub3QgdXBkYXRlZCBvciBhcHBsaWVkLiAqL1xuXHRub25lLFxuXG5cdC8qKiBQaHlzaWNzIGFyZSByZXNldCB0byB0aGUgY3VycmVudCBwb3NlLiAqL1xuXHRyZXNldCxcblxuXHQvKiogUGh5c2ljcyBhcmUgdXBkYXRlZCBhbmQgdGhlIHBvc2UgZnJvbSBwaHlzaWNzIGlzIGFwcGxpZWQuICovXG5cdHVwZGF0ZSxcblxuXHQvKiogUGh5c2ljcyBhcmUgbm90IHVwZGF0ZWQgYnV0IHRoZSBwb3NlIGZyb20gcGh5c2ljcyBpcyBhcHBsaWVkLiAqL1xuXHRwb3NlXG59Il19
|
|
661
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBbUIsTUFBTSxZQUFZLENBQUM7QUFFL0U7O2tJQUVrSTtBQUNsSSxNQUFNLE9BQU8sUUFBUTtJQUNaLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXJCLHNDQUFzQztJQUN0QyxJQUFJLENBQWU7SUFFbkIseUZBQXlGO0lBQ3pGLEtBQUssQ0FBYztJQUVuQix5REFBeUQ7SUFDekQsS0FBSyxD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LEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFL0Msc0NBQXNDO1FBQ3RDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BELElBQUksU0FBUyxHQUFHLFdBQVcs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QUFDLGtCQUFrQixDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEQsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsK0ZBQStGO0lBQy9GLGFBQWEsQ0FBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLE9BQWU7UUFDbkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN4RCxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDOztBQUdGLDhFQUE4RTtBQUM5RSxNQUFNLENBQU4sSUFBWSxPQVlYO0FBWkQsV0FBWSxPQUFPO0lBQ2xCLDBDQUEwQztJQUMxQyxxQ0FBSSxDQUFBO0lBRUosNkNBQTZDO0lBQzdDLHVDQUFLLENBQUE7SUFFTCxnRUFBZ0U7SUFDaEUseUNBQU0sQ0FBQTtJQUVOLG9FQUFvRTtJQUNwRSxxQ0FBSSxDQUFBO0FBQ0wsQ0FBQyxFQVpXLE9BQU8sS0FBUCxPQUFPLFFBWWxCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBKdWx5IDI4LCAyMDIzLiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjMsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3JcbiAqIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSEVcbiAqIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgQ2xpcHBpbmdBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQ2xpcHBpbmdBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBNZXNoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL01lc2hBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBQYXRoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1BhdGhBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBSZWdpb25BdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvUmVnaW9uQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgQm9uZSB9IGZyb20gXCIuL0JvbmUuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludCB9IGZyb20gXCIuL0lrQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgUGF0aENvbnN0cmFpbnQgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnQgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b25DbGlwcGluZyB9IGZyb20gXCIuL1NrZWxldG9uQ2xpcHBpbmcuanNcIjtcbmltcG9ydCB7IFNrZWxldG9uRGF0YSB9IGZyb20gXCIuL1NrZWxldG9uRGF0YS5qc1wiO1xuaW1wb3J0IHsgU2tpbiB9IGZyb20gXCIuL1NraW4uanNcIjtcbmltcG9ydCB7IFNsb3QgfSBmcm9tIFwiLi9TbG90LmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50IH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgVXBkYXRhYmxlIH0gZnJvbSBcIi4vVXBkYXRhYmxlLmpzXCI7XG5pbXBvcnQgeyBDb2xvciwgVXRpbHMsIE1hdGhVdGlscywgVmVjdG9yMiwgTnVtYmVyQXJyYXlMaWtlIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgY3VycmVudCBwb3NlIGZvciBhIHNrZWxldG9uLlxuICpcbiAqIFNlZSBbSW5zdGFuY2Ugb2JqZWN0c10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtYXJjaGl0ZWN0dXJlI0luc3RhbmNlLW9iamVjdHMpIGluIHRoZSBTcGluZSBSdW50aW1lcyBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbiB7XG5cdHByaXZhdGUgc3RhdGljIHF1YWRUcmlhbmdsZXMgPSBbMCwgMSwgMiwgMiwgMywgMF07XG5cdHN0YXRpYyB5RG93biA9IGZhbHNlO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBzZXR1cCBwb3NlIGRhdGEuICovXG5cdGRhdGE6IFNrZWxldG9uRGF0YTtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgYm9uZXMsIHNvcnRlZCBwYXJlbnQgZmlyc3QuIFRoZSByb290IGJvbmUgaXMgYWx3YXlzIHRoZSBmaXJzdCBib25lLiAqL1xuXHRib25lczogQXJyYXk8Qm9uZT47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHNsb3RzIGluIHRoZSBzZXR1cCBwb3NlIGRyYXcgb3JkZXIuICovXG5cdHNsb3RzOiBBcnJheTxTbG90PjtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3Mgc2xvdHMgaW4gdGhlIG9yZGVyIHRoZXkgc2hvdWxkIGJlIGRyYXduLiBUaGUgcmV0dXJuZWQgYXJyYXkgbWF5IGJlIG1vZGlmaWVkIHRvIGNoYW5nZSB0aGUgZHJhdyBvcmRlci4gKi9cblx0ZHJhd09yZGVyOiBBcnJheTxTbG90PjtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgSUsgY29uc3RyYWludHMuICovXG5cdGlrQ29uc3RyYWludHM6IEFycmF5PElrQ29uc3RyYWludD47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHRyYW5zZm9ybSBjb25zdHJhaW50cy4gKi9cblx0dHJhbnNmb3JtQ29uc3RyYWludHM6IEFycmF5PFRyYW5zZm9ybUNvbnN0cmFpbnQ+O1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBwYXRoIGNvbnN0cmFpbnRzLiAqL1xuXHRwYXRoQ29uc3RyYWludHM6IEFycmF5PFBhdGhDb25zdHJhaW50PjtcblxuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBwaHlzaWNzIGNvbnN0cmFpbnRzLiAqL1xuXHRwaHlzaWNzQ29uc3RyYWludHM6IEFycmF5PFBoeXNpY3NDb25zdHJhaW50PjtcblxuXHQvKiogVGhlIGxpc3Qgb2YgYm9uZXMgYW5kIGNvbnN0cmFpbnRzLCBzb3J0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgc2hvdWxkIGJlIHVwZGF0ZWQsIGFzIGNvbXB1dGVkIGJ5IHtAbGluayAjdXBkYXRlQ2FjaGUoKX0uICovXG5cdF91cGRhdGVDYWNoZSA9IG5ldyBBcnJheTxVcGRhdGFibGU+KCk7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGN1cnJlbnQgc2tpbi4gTWF5IGJlIG51bGwuICovXG5cdHNraW46IFNraW4gfCBudWxsID0gbnVsbDtcblxuXHQvKiogVGhlIGNvbG9yIHRvIHRpbnQgYWxsIHRoZSBza2VsZXRvbidzIGF0dGFjaG1lbnRzLiAqL1xuXHRjb2xvcjogQ29sb3I7XG5cblx0LyoqIFNjYWxlcyB0aGUgZW50aXJlIHNrZWxldG9uIG9uIHRoZSBYIGF4aXMuIFRoaXMgYWZmZWN0cyBhbGwgYm9uZXMsIGV2ZW4gaWYgdGhlIGJvbmUncyB0cmFuc2Zvcm0gbW9kZSBkaXNhbGxvd3Mgc2NhbGVcblx0ICAqIGluaGVyaXRhbmNlLiAqL1xuXHRzY2FsZVggPSAxO1xuXG5cdC8qKiBTY2FsZXMgdGhlIGVudGlyZSBza2VsZXRvbiBvbiB0aGUgWSBheGlzLiBUaGlzIGFmZmVjdHMgYWxsIGJvbmVzLCBldmVuIGlmIHRoZSBib25lJ3MgdHJhbnNmb3JtIG1vZGUgZGlzYWxsb3dzIHNjYWxlXG5cdCAgKiBpbmhlcml0YW5jZS4gKi9cblx0cHJpdmF0ZSBfc2NhbGVZID0gMTtcblxuXHRwdWJsaWMgZ2V0IHNjYWxlWSAoKSB7XG5cdFx0cmV0dXJuIFNrZWxldG9uLnlEb3duID8gLXRoaXMuX3NjYWxlWSA6IHRoaXMuX3NjYWxlWTtcblx0fVxuXG5cdHB1YmxpYyBzZXQgc2NhbGVZIChzY2FsZVk6IG51bWJlcikge1xuXHRcdHRoaXMuX3NjYWxlWSA9IHNjYWxlWTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBza2VsZXRvbiBYIHBvc2l0aW9uLCB3aGljaCBpcyBhZGRlZCB0byB0aGUgcm9vdCBib25lIHdvcmxkWCBwb3NpdGlvbi4gKi9cblx0eCA9IDA7XG5cblx0LyoqIFNldHMgdGhlIHNrZWxldG9uIFkgcG9zaXRpb24sIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSByb290IGJvbmUgd29ybGRZIHBvc2l0aW9uLiAqL1xuXHR5ID0gMDtcblxuXHQvKiogUmV0dXJucyB0aGUgc2tlbGV0b24ncyB0aW1lLiBUaGlzIGlzIHVzZWQgZm9yIHRpbWUtYmFzZWQgbWFuaXB1bGF0aW9ucywgc3VjaCBhcyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnR9LlxuXHQgKiA8cD5cblx0ICogU2VlIHtAbGluayAjdXBkYXRlKGZsb2F0KX0uICovXG5cdHRpbWUgPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBTa2VsZXRvbkRhdGEpIHtcblx0XHRpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcihcImRhdGEgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHRoaXMuZGF0YSA9IGRhdGE7XG5cblx0XHR0aGlzLmJvbmVzID0gbmV3IEFycmF5PEJvbmU+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmJvbmVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZURhdGEgPSBkYXRhLmJvbmVzW2ldO1xuXHRcdFx0bGV0IGJvbmU6IEJvbmU7XG5cdFx0XHRpZiAoIWJvbmVEYXRhLnBhcmVudClcblx0XHRcdFx0Ym9uZSA9IG5ldyBCb25lKGJvbmVEYXRhLCB0aGlzLCBudWxsKTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRsZXQgcGFyZW50ID0gdGhpcy5ib25lc1tib25lRGF0YS5wYXJlbnQuaW5kZXhdO1xuXHRcdFx0XHRib25lID0gbmV3IEJvbmUoYm9uZURhdGEsIHRoaXMsIHBhcmVudCk7XG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5wdXNoKGJvbmUpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2xvdHMgPSBuZXcgQXJyYXk8U2xvdD4oKTtcblx0XHR0aGlzLmRyYXdPcmRlciA9IG5ldyBBcnJheTxTbG90PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5zbG90cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHNsb3REYXRhID0gZGF0YS5zbG90c1tpXTtcblx0XHRcdGxldCBib25lID0gdGhpcy5ib25lc1tzbG90RGF0YS5ib25lRGF0YS5pbmRleF07XG5cdFx0XHRsZXQgc2xvdCA9IG5ldyBTbG90KHNsb3REYXRhLCBib25lKTtcblx0XHRcdHRoaXMuc2xvdHMucHVzaChzbG90KTtcblx0XHRcdHRoaXMuZHJhd09yZGVyLnB1c2goc2xvdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5pa0NvbnN0cmFpbnRzID0gbmV3IEFycmF5PElrQ29uc3RyYWludD4oKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuaWtDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGlrQ29uc3RyYWludERhdGEgPSBkYXRhLmlrQ29uc3RyYWludHNbaV07XG5cdFx0XHR0aGlzLmlrQ29uc3RyYWludHMucHVzaChuZXcgSWtDb25zdHJhaW50KGlrQ29uc3RyYWludERhdGEsIHRoaXMpKTtcblx0XHR9XG5cblx0XHR0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzID0gbmV3IEFycmF5PFRyYW5zZm9ybUNvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnRyYW5zZm9ybUNvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdHJhbnNmb3JtQ29uc3RyYWludERhdGEgPSBkYXRhLnRyYW5zZm9ybUNvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cy5wdXNoKG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50KHRyYW5zZm9ybUNvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5wYXRoQ29uc3RyYWludHMgPSBuZXcgQXJyYXk8UGF0aENvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnBhdGhDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHBhdGhDb25zdHJhaW50RGF0YSA9IGRhdGEucGF0aENvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy5wYXRoQ29uc3RyYWludHMucHVzaChuZXcgUGF0aENvbnN0cmFpbnQocGF0aENvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5waHlzaWNzQ29uc3RyYWludHMgPSBuZXcgQXJyYXk8UGh5c2ljc0NvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHBoeXNpY3NDb25zdHJhaW50RGF0YSA9IGRhdGEucGh5c2ljc0NvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy5waHlzaWNzQ29uc3RyYWludHMucHVzaChuZXcgUGh5c2ljc0NvbnN0cmFpbnQocGh5c2ljc0NvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jb2xvciA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblx0XHR0aGlzLnVwZGF0ZUNhY2hlKCk7XG5cdH1cblxuXHQvKiogQ2FjaGVzIGluZm9ybWF0aW9uIGFib3V0IGJvbmVzIGFuZCBjb25zdHJhaW50cy4gTXVzdCBiZSBjYWxsZWQgaWYgdGhlIHtAbGluayAjZ2V0U2tpbigpfSBpcyBtb2RpZmllZCBvciBpZiBib25lcyxcblx0ICogY29uc3RyYWludHMsIG9yIHdlaWdodGVkIHBhdGggYXR0YWNobWVudHMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuICovXG5cdHVwZGF0ZUNhY2hlICgpIHtcblx0XHRsZXQgdXBkYXRlQ2FjaGUgPSB0aGlzLl91cGRhdGVDYWNoZTtcblx0XHR1cGRhdGVDYWNoZS5sZW5ndGggPSAwO1xuXG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGJvbmUuc29ydGVkID0gYm9uZS5kYXRhLnNraW5SZXF1aXJlZDtcblx0XHRcdGJvbmUuYWN0aXZlID0gIWJvbmUuc29ydGVkO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNraW4pIHtcblx0XHRcdGxldCBza2luQm9uZXMgPSB0aGlzLnNraW4uYm9uZXM7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMuc2tpbi5ib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0bGV0IGJvbmU6IEJvbmUgfCBudWxsID0gdGhpcy5ib25lc1tza2luQm9uZXNbaV0uaW5kZXhdO1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0Ym9uZS5zb3J0ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRib25lLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdFx0Ym9uZSA9IGJvbmUucGFyZW50O1xuXHRcdFx0XHR9IHdoaWxlIChib25lKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJSyBmaXJzdCwgbG93ZXN0IGhpZXJhcmNoeSBkZXB0aCBmaXJzdC5cblx0XHRsZXQgaWtDb25zdHJhaW50cyA9IHRoaXMuaWtDb25zdHJhaW50cztcblx0XHRsZXQgdHJhbnNmb3JtQ29uc3RyYWludHMgPSB0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzO1xuXHRcdGxldCBwYXRoQ29uc3RyYWludHMgPSB0aGlzLnBhdGhDb25zdHJhaW50cztcblx0XHRsZXQgcGh5c2ljc0NvbnN0cmFpbnRzID0gdGhpcy5waHlzaWNzQ29uc3RyYWludHM7XG5cdFx0bGV0IGlrQ291bnQgPSBpa0NvbnN0cmFpbnRzLmxlbmd0aCwgdHJhbnNmb3JtQ291bnQgPSB0cmFuc2Zvcm1Db25zdHJhaW50cy5sZW5ndGgsIHBhdGhDb3VudCA9IHBhdGhDb25zdHJhaW50cy5sZW5ndGgsIHBoeXNpY3NDb3VudCA9IHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzLmxlbmd0aDtcblx0XHRsZXQgY29uc3RyYWludENvdW50ID0gaWtDb3VudCArIHRyYW5zZm9ybUNvdW50ICsgcGF0aENvdW50ICsgcGh5c2ljc0NvdW50O1xuXG5cdFx0b3V0ZXI6XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb25zdHJhaW50Q291bnQ7IGkrKykge1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGlrQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBpa0NvbnN0cmFpbnRzW2lpXTtcblx0XHRcdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5vcmRlciA9PSBpKSB7XG5cdFx0XHRcdFx0dGhpcy5zb3J0SWtDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdGNvbnRpbnVlIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgdHJhbnNmb3JtQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSB0cmFuc2Zvcm1Db25zdHJhaW50c1tpaV07XG5cdFx0XHRcdGlmIChjb25zdHJhaW50LmRhdGEub3JkZXIgPT0gaSkge1xuXHRcdFx0XHRcdHRoaXMuc29ydFRyYW5zZm9ybUNvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cdFx0XHRcdFx0Y29udGludWUgb3V0ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBwYXRoQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBwYXRoQ29uc3RyYWludHNbaWldO1xuXHRcdFx0XHRpZiAoY29uc3RyYWludC5kYXRhLm9yZGVyID09IGkpIHtcblx0XHRcdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludChjb25zdHJhaW50KTtcblx0XHRcdFx0XHRjb250aW51ZSBvdXRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHBoeXNpY3NDb3VudDsgaWkrKykge1xuXHRcdFx0XHRjb25zdCBjb25zdHJhaW50ID0gcGh5c2ljc0NvbnN0cmFpbnRzW2lpXTtcblx0XHRcdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5vcmRlciA9PSBpKSB7XG5cdFx0XHRcdFx0dGhpcy5zb3J0UGh5c2ljc0NvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cdFx0XHRcdFx0Y29udGludWUgb3V0ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHRoaXMuc29ydEJvbmUoYm9uZXNbaV0pO1xuXHR9XG5cblx0c29ydElrQ29uc3RyYWludCAoY29uc3RyYWludDogSWtDb25zdHJhaW50KSB7XG5cdFx0Y29uc3RyYWludC5hY3RpdmUgPSBjb25zdHJhaW50LnRhcmdldC5pc0FjdGl2ZSgpICYmICghY29uc3RyYWludC5kYXRhLnNraW5SZXF1aXJlZCB8fCAodGhpcy5za2luICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpITtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgdGFyZ2V0ID0gY29uc3RyYWludC50YXJnZXQ7XG5cdFx0dGhpcy5zb3J0Qm9uZSh0YXJnZXQpO1xuXG5cdFx0bGV0IGNvbnN0cmFpbmVkID0gY29uc3RyYWludC5ib25lcztcblx0XHRsZXQgcGFyZW50ID0gY29uc3RyYWluZWRbMF07XG5cdFx0dGhpcy5zb3J0Qm9uZShwYXJlbnQpO1xuXG5cdFx0aWYgKGNvbnN0cmFpbmVkLmxlbmd0aCA9PSAxKSB7XG5cdFx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0dGhpcy5zb3J0UmVzZXQocGFyZW50LmNoaWxkcmVuKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGV0IGNoaWxkID0gY29uc3RyYWluZWRbY29uc3RyYWluZWQubGVuZ3RoIC0gMV07XG5cdFx0XHR0aGlzLnNvcnRCb25lKGNoaWxkKTtcblxuXHRcdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdFx0dGhpcy5zb3J0UmVzZXQocGFyZW50LmNoaWxkcmVuKTtcblx0XHRcdGNoaWxkLnNvcnRlZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0c29ydFBhdGhDb25zdHJhaW50IChjb25zdHJhaW50OiBQYXRoQ29uc3RyYWludCkge1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gY29uc3RyYWludC50YXJnZXQuYm9uZS5pc0FjdGl2ZSgpICYmICghY29uc3RyYWludC5kYXRhLnNraW5SZXF1aXJlZCB8fCAodGhpcy5za2luICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpITtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgc2xvdCA9IGNvbnN0cmFpbnQudGFyZ2V0O1xuXHRcdGxldCBzbG90SW5kZXggPSBzbG90LmRhdGEuaW5kZXg7XG5cdFx0bGV0IHNsb3RCb25lID0gc2xvdC5ib25lO1xuXHRcdGlmICh0aGlzLnNraW4pIHRoaXMuc29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudCh0aGlzLnNraW4sIHNsb3RJbmRleCwgc2xvdEJvbmUpO1xuXHRcdGlmICh0aGlzLmRhdGEuZGVmYXVsdFNraW4gJiYgdGhpcy5kYXRhLmRlZmF1bHRTa2luICE9IHRoaXMuc2tpbilcblx0XHRcdHRoaXMuc29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudCh0aGlzLmRhdGEuZGVmYXVsdFNraW4sIHNsb3RJbmRleCwgc2xvdEJvbmUpO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5kYXRhLnNraW5zLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHRoaXMuc29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudCh0aGlzLmRhdGEuc2tpbnNbaV0sIHNsb3RJbmRleCwgc2xvdEJvbmUpO1xuXG5cdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFBhdGhBdHRhY2htZW50KSB0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnRXaXRoKGF0dGFjaG1lbnQsIHNsb3RCb25lKTtcblxuXHRcdGxldCBjb25zdHJhaW5lZCA9IGNvbnN0cmFpbnQuYm9uZXM7XG5cdFx0bGV0IGJvbmVDb3VudCA9IGNvbnN0cmFpbmVkLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKVxuXHRcdFx0dGhpcy5zb3J0Qm9uZShjb25zdHJhaW5lZFtpXSk7XG5cblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdHRoaXMuc29ydFJlc2V0KGNvbnN0cmFpbmVkW2ldLmNoaWxkcmVuKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKVxuXHRcdFx0Y29uc3RyYWluZWRbaV0uc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHNvcnRUcmFuc2Zvcm1Db25zdHJhaW50IChjb25zdHJhaW50OiBUcmFuc2Zvcm1Db25zdHJhaW50KSB7XG5cdFx0Y29uc3RyYWludC5hY3RpdmUgPSBjb25zdHJhaW50LnRhcmdldC5pc0FjdGl2ZSgpICYmICghY29uc3RyYWludC5kYXRhLnNraW5SZXF1aXJlZCB8fCAodGhpcy5za2luICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpITtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHR0aGlzLnNvcnRCb25lKGNvbnN0cmFpbnQudGFyZ2V0KTtcblxuXHRcdGxldCBjb25zdHJhaW5lZCA9IGNvbnN0cmFpbnQuYm9uZXM7XG5cdFx0bGV0IGJvbmVDb3VudCA9IGNvbnN0cmFpbmVkLmxlbmd0aDtcblx0XHRpZiAoY29uc3RyYWludC5kYXRhLmxvY2FsKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKSB7XG5cdFx0XHRcdGxldCBjaGlsZCA9IGNvbnN0cmFpbmVkW2ldO1xuXHRcdFx0XHR0aGlzLnNvcnRCb25lKGNoaWxkLnBhcmVudCEpO1xuXHRcdFx0XHR0aGlzLnNvcnRCb25lKGNoaWxkKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKykge1xuXHRcdFx0XHR0aGlzLnNvcnRCb25lKGNvbnN0cmFpbmVkW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdHRoaXMuc29ydFJlc2V0KGNvbnN0cmFpbmVkW2ldLmNoaWxkcmVuKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKVxuXHRcdFx0Y29uc3RyYWluZWRbaV0uc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQgKHNraW46IFNraW4sIHNsb3RJbmRleDogbnVtYmVyLCBzbG90Qm9uZTogQm9uZSkge1xuXHRcdGxldCBhdHRhY2htZW50cyA9IHNraW4uYXR0YWNobWVudHNbc2xvdEluZGV4XTtcblx0XHRpZiAoIWF0dGFjaG1lbnRzKSByZXR1cm47XG5cdFx0Zm9yIChsZXQga2V5IGluIGF0dGFjaG1lbnRzKSB7XG5cdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnRXaXRoKGF0dGFjaG1lbnRzW2tleV0sIHNsb3RCb25lKTtcblx0XHR9XG5cdH1cblxuXHRzb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50V2l0aCAoYXR0YWNobWVudDogQXR0YWNobWVudCwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cdFx0bGV0IHBhdGhCb25lcyA9ICg8UGF0aEF0dGFjaG1lbnQ+YXR0YWNobWVudCkuYm9uZXM7XG5cdFx0aWYgKCFwYXRoQm9uZXMpXG5cdFx0XHR0aGlzLnNvcnRCb25lKHNsb3RCb25lKTtcblx0XHRlbHNlIHtcblx0XHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHBhdGhCb25lcy5sZW5ndGg7IGkgPCBuOykge1xuXHRcdFx0XHRsZXQgbm4gPSBwYXRoQm9uZXNbaSsrXTtcblx0XHRcdFx0bm4gKz0gaTtcblx0XHRcdFx0d2hpbGUgKGkgPCBubilcblx0XHRcdFx0XHR0aGlzLnNvcnRCb25lKGJvbmVzW3BhdGhCb25lc1tpKytdXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0c29ydFBoeXNpY3NDb25zdHJhaW50IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCkge1xuXHRcdGNvbnN0IGJvbmUgPSBjb25zdHJhaW50LmJvbmU7XG5cdFx0Y29uc3RyYWludC5hY3RpdmUgPSBib25lLmFjdGl2ZSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAhPSBudWxsICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpO1xuXHRcdGlmICghY29uc3RyYWludC5hY3RpdmUpIHJldHVybjtcblxuXHRcdHRoaXMuc29ydEJvbmUoYm9uZSk7XG5cblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXG5cdFx0dGhpcy5zb3J0UmVzZXQoYm9uZS5jaGlsZHJlbik7XG5cdFx0Ym9uZS5zb3J0ZWQgPSB0cnVlO1xuXHR9XG5cblx0c29ydEJvbmUgKGJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIWJvbmUpIHJldHVybjtcblx0XHRpZiAoYm9uZS5zb3J0ZWQpIHJldHVybjtcblx0XHRsZXQgcGFyZW50ID0gYm9uZS5wYXJlbnQ7XG5cdFx0aWYgKHBhcmVudCkgdGhpcy5zb3J0Qm9uZShwYXJlbnQpO1xuXHRcdGJvbmUuc29ydGVkID0gdHJ1ZTtcblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGJvbmUpO1xuXHR9XG5cblx0c29ydFJlc2V0IChib25lczogQXJyYXk8Qm9uZT4pIHtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGlmICghYm9uZS5hY3RpdmUpIGNvbnRpbnVlO1xuXHRcdFx0aWYgKGJvbmUuc29ydGVkKSB0aGlzLnNvcnRSZXNldChib25lLmNoaWxkcmVuKTtcblx0XHRcdGJvbmUuc29ydGVkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFVwZGF0ZXMgdGhlIHdvcmxkIHRyYW5zZm9ybSBmb3IgZWFjaCBib25lIGFuZCBhcHBsaWVzIGFsbCBjb25zdHJhaW50cy5cblx0ICpcblx0ICogU2VlIFtXb3JsZCB0cmFuc2Zvcm1zXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtcnVudGltZS1za2VsZXRvbnMjV29ybGQtdHJhbnNmb3JtcykgaW4gdGhlIFNwaW5lXG5cdCAqIFJ1bnRpbWVzIEd1aWRlLiAqL1xuXHR1cGRhdGVXb3JsZFRyYW5zZm9ybSAocGh5c2ljczogUGh5c2ljcykge1xuXHRcdGlmIChwaHlzaWNzID09PSB1bmRlZmluZWQgfHwgcGh5c2ljcyA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwicGh5c2ljcyBpcyB1bmRlZmluZWRcIik7XG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGJvbmUuYXggPSBib25lLng7XG5cdFx0XHRib25lLmF5ID0gYm9uZS55O1xuXHRcdFx0Ym9uZS5hcm90YXRpb24gPSBib25lLnJvdGF0aW9uO1xuXHRcdFx0Ym9uZS5hc2NhbGVYID0gYm9uZS5zY2FsZVg7XG5cdFx0XHRib25lLmFzY2FsZVkgPSBib25lLnNjYWxlWTtcblx0XHRcdGJvbmUuYXNoZWFyWCA9IGJvbmUuc2hlYXJYO1xuXHRcdFx0Ym9uZS5hc2hlYXJZID0gYm9uZS5zaGVhclk7XG5cdFx0fVxuXG5cdFx0bGV0IHVwZGF0ZUNhY2hlID0gdGhpcy5fdXBkYXRlQ2FjaGU7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB1cGRhdGVDYWNoZS5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR1cGRhdGVDYWNoZVtpXS51cGRhdGUocGh5c2ljcyk7XG5cdH1cblxuXHR1cGRhdGVXb3JsZFRyYW5zZm9ybVdpdGggKHBoeXNpY3M6IFBoeXNpY3MsIHBhcmVudDogQm9uZSkge1xuXHRcdGlmICghcGFyZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJwYXJlbnQgY2Fubm90IGJlIG51bGwuXCIpO1xuXG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMSwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykgeyAvLyBTa2lwIHJvb3QgYm9uZS5cblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRib25lLmF4ID0gYm9uZS54O1xuXHRcdFx0Ym9uZS5heSA9IGJvbmUueTtcblx0XHRcdGJvbmUuYXJvdGF0aW9uID0gYm9uZS5yb3RhdGlvbjtcblx0XHRcdGJvbmUuYXNjYWxlWCA9IGJvbmUuc2NhbGVYO1xuXHRcdFx0Ym9uZS5hc2NhbGVZID0gYm9uZS5zY2FsZVk7XG5cdFx0XHRib25lLmFzaGVhclggPSBib25lLnNoZWFyWDtcblx0XHRcdGJvbmUuYXNoZWFyWSA9IGJvbmUuc2hlYXJZO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHRoZSBwYXJlbnQgYm9uZSB0cmFuc2Zvcm0gdG8gdGhlIHJvb3QgYm9uZS4gVGhlIHJvb3QgYm9uZSBhbHdheXMgaW5oZXJpdHMgc2NhbGUsIHJvdGF0aW9uIGFuZCByZWZsZWN0aW9uLlxuXHRcdGxldCByb290Qm9uZSA9IHRoaXMuZ2V0Um9vdEJvbmUoKTtcblx0XHRpZiAoIXJvb3RCb25lKSB0aHJvdyBuZXcgRXJyb3IoXCJSb290IGJvbmUgbXVzdCBub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IHBhID0gcGFyZW50LmEsIHBiID0gcGFyZW50LmIsIHBjID0gcGFyZW50LmMsIHBkID0gcGFyZW50LmQ7XG5cdFx0cm9vdEJvbmUud29ybGRYID0gcGEgKiB0aGlzLnggKyBwYiAqIHRoaXMueSArIHBhcmVudC53b3JsZFg7XG5cdFx0cm9vdEJvbmUud29ybGRZID0gcGMgKiB0aGlzLnggKyBwZCAqIHRoaXMueSArIHBhcmVudC53b3JsZFk7XG5cblx0XHRjb25zdCByeCA9IChyb290Qm9uZS5yb3RhdGlvbiArIHJvb3RCb25lLnNoZWFyWCkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdGNvbnN0IHJ5ID0gKHJvb3RCb25lLnJvdGF0aW9uICsgOTAgKyByb290Qm9uZS5zaGVhclkpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRjb25zdCBsYSA9IE1hdGguY29zKHJ4KSAqIHJvb3RCb25lLnNjYWxlWDtcblx0XHRjb25zdCBsYiA9IE1hdGguY29zKHJ5KSAqIHJvb3RCb25lLnNjYWxlWTtcblx0XHRjb25zdCBsYyA9IE1hdGguc2luKHJ4KSAqIHJvb3RCb25lLnNjYWxlWDtcblx0XHRjb25zdCBsZCA9IE1hdGguc2luKHJ5KSAqIHJvb3RCb25lLnNjYWxlWTtcblx0XHRyb290Qm9uZS5hID0gKHBhICogbGEgKyBwYiAqIGxjKSAqIHRoaXMuc2NhbGVYO1xuXHRcdHJvb3RCb25lLmIgPSAocGEgKiBsYiArIHBiICogbGQpICogdGhpcy5zY2FsZVg7XG5cdFx0cm9vdEJvbmUuYyA9IChwYyAqIGxhICsgcGQgKiBsYykgKiB0aGlzLnNjYWxlWTtcblx0XHRyb290Qm9uZS5kID0gKHBjICogbGIgKyBwZCAqIGxkKSAqIHRoaXMuc2NhbGVZO1xuXG5cdFx0Ly8gVXBkYXRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHJvb3QgYm9uZS5cblx0XHRsZXQgdXBkYXRlQ2FjaGUgPSB0aGlzLl91cGRhdGVDYWNoZTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHVwZGF0ZUNhY2hlLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHVwZGF0YWJsZSA9IHVwZGF0ZUNhY2hlW2ldO1xuXHRcdFx0aWYgKHVwZGF0YWJsZSAhPSByb290Qm9uZSkgdXBkYXRhYmxlLnVwZGF0ZShwaHlzaWNzKTtcblx0XHR9XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgYm9uZXMsIGNvbnN0cmFpbnRzLCBhbmQgc2xvdHMgdG8gdGhlaXIgc2V0dXAgcG9zZSB2YWx1ZXMuICovXG5cdHNldFRvU2V0dXBQb3NlICgpIHtcblx0XHR0aGlzLnNldEJvbmVzVG9TZXR1cFBvc2UoKTtcblx0XHR0aGlzLnNldFNsb3RzVG9TZXR1cFBvc2UoKTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBib25lcyBhbmQgY29uc3RyYWludHMgdG8gdGhlaXIgc2V0dXAgcG9zZSB2YWx1ZXMuICovXG5cdHNldEJvbmVzVG9TZXR1cFBvc2UgKCkge1xuXHRcdGZvciAoY29uc3QgYm9uZSBvZiB0aGlzLmJvbmVzKSBib25lLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0Zm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMuaWtDb25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzKSBjb25zdHJhaW50LnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0Zm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMucGF0aENvbnN0cmFpbnRzKSBjb25zdHJhaW50LnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0Zm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzKSBjb25zdHJhaW50LnNldFRvU2V0dXBQb3NlKCk7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgc2xvdHMgYW5kIGRyYXcgb3JkZXIgdG8gdGhlaXIgc2V0dXAgcG9zZSB2YWx1ZXMuICovXG5cdHNldFNsb3RzVG9TZXR1cFBvc2UgKCkge1xuXHRcdGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHNsb3RzLCAwLCB0aGlzLmRyYXdPcmRlciwgMCwgc2xvdHMubGVuZ3RoKTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHNsb3RzW2ldLnNldFRvU2V0dXBQb3NlKCk7XG5cdH1cblxuXHQvKiogQHJldHVybnMgTWF5IHJldHVybiBudWxsLiAqL1xuXHRnZXRSb290Qm9uZSAoKSB7XG5cdFx0aWYgKHRoaXMuYm9uZXMubGVuZ3RoID09IDApIHJldHVybiBudWxsO1xuXHRcdHJldHVybiB0aGlzLmJvbmVzWzBdO1xuXHR9XG5cblx0LyoqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kQm9uZSAoYm9uZU5hbWU6IHN0cmluZykge1xuXHRcdGlmICghYm9uZU5hbWUpIHRocm93IG5ldyBFcnJvcihcImJvbmVOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRsZXQgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0aWYgKGJvbmUuZGF0YS5uYW1lID09IGJvbmVOYW1lKSByZXR1cm4gYm9uZTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogRmluZHMgYSBzbG90IGJ5IGNvbXBhcmluZyBlYWNoIHNsb3QncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXRcblx0ICogcmVwZWF0ZWRseS5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGZpbmRTbG90IChzbG90TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFzbG90TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwic2xvdE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBzbG90ID0gc2xvdHNbaV07XG5cdFx0XHRpZiAoc2xvdC5kYXRhLm5hbWUgPT0gc2xvdE5hbWUpIHJldHVybiBzbG90O1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKiBTZXRzIGEgc2tpbiBieSBuYW1lLlxuXHQgKlxuXHQgKiBTZWUge0BsaW5rICNzZXRTa2luKCl9LiAqL1xuXHRzZXRTa2luQnlOYW1lIChza2luTmFtZTogc3RyaW5nKSB7XG5cdFx0bGV0IHNraW4gPSB0aGlzLmRhdGEuZmluZFNraW4oc2tpbk5hbWUpO1xuXHRcdGlmICghc2tpbikgdGhyb3cgbmV3IEVycm9yKFwiU2tpbiBub3QgZm91bmQ6IFwiICsgc2tpbk5hbWUpO1xuXHRcdHRoaXMuc2V0U2tpbihza2luKTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBza2luIHVzZWQgdG8gbG9vayB1cCBhdHRhY2htZW50cyBiZWZvcmUgbG9va2luZyBpbiB0aGUge0BsaW5rIFNrZWxldG9uRGF0YSNkZWZhdWx0U2tpbiBkZWZhdWx0IHNraW59LiBJZiB0aGVcblx0ICogc2tpbiBpcyBjaGFuZ2VkLCB7QGxpbmsgI3VwZGF0ZUNhY2hlKCl9IGlzIGNhbGxlZC5cblx0ICpcblx0ICogQXR0YWNobWVudHMgZnJvbSB0aGUgbmV3IHNraW4gYXJlIGF0dGFjaGVkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGF0dGFjaG1lbnQgZnJvbSB0aGUgb2xkIHNraW4gd2FzIGF0dGFjaGVkLiBJZiB0aGVyZSB3YXMgbm9cblx0ICogb2xkIHNraW4sIGVhY2ggc2xvdCdzIHNldHVwIG1vZGUgYXR0YWNobWVudCBpcyBhdHRhY2hlZCBmcm9tIHRoZSBuZXcgc2tpbi5cblx0ICpcblx0ICogQWZ0ZXIgY2hhbmdpbmcgdGhlIHNraW4sIHRoZSB2aXNpYmxlIGF0dGFjaG1lbnRzIGNhbiBiZSByZXNldCB0byB0aG9zZSBhdHRhY2hlZCBpbiB0aGUgc2V0dXAgcG9zZSBieSBjYWxsaW5nXG5cdCAqIHtAbGluayAjc2V0U2xvdHNUb1NldHVwUG9zZSgpfS4gQWxzbywgb2Z0ZW4ge0BsaW5rIEFuaW1hdGlvblN0YXRlI2FwcGx5KCl9IGlzIGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgdGltZSB0aGVcblx0ICogc2tlbGV0b24gaXMgcmVuZGVyZWQgdG8gYWxsb3cgYW55IGF0dGFjaG1lbnQga2V5cyBpbiB0aGUgY3VycmVudCBhbmltYXRpb24ocykgdG8gaGlkZSBvciBzaG93IGF0dGFjaG1lbnRzIGZyb20gdGhlIG5ldyBza2luLlxuXHQgKiBAcGFyYW0gbmV3U2tpbiBNYXkgYmUgbnVsbC4gKi9cblx0c2V0U2tpbiAobmV3U2tpbjogU2tpbikge1xuXHRcdGlmIChuZXdTa2luID09IHRoaXMuc2tpbikgcmV0dXJuO1xuXHRcdGlmIChuZXdTa2luKSB7XG5cdFx0XHRpZiAodGhpcy5za2luKVxuXHRcdFx0XHRuZXdTa2luLmF0dGFjaEFsbCh0aGlzLCB0aGlzLnNraW4pO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdFx0bGV0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdFx0XHRsZXQgbmFtZSA9IHNsb3QuZGF0YS5hdHRhY2htZW50TmFtZTtcblx0XHRcdFx0XHRpZiAobmFtZSkge1xuXHRcdFx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBuZXdTa2luLmdldEF0dGFjaG1lbnQoaSwgbmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoYXR0YWNobWVudCkgc2xvdC5zZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLnNraW4gPSBuZXdTa2luO1xuXHRcdHRoaXMudXBkYXRlQ2FjaGUoKTtcblx0fVxuXG5cblx0LyoqIEZpbmRzIGFuIGF0dGFjaG1lbnQgYnkgbG9va2luZyBpbiB0aGUge0BsaW5rICNza2lufSBhbmQge0BsaW5rIFNrZWxldG9uRGF0YSNkZWZhdWx0U2tpbn0gdXNpbmcgdGhlIHNsb3QgbmFtZSBhbmQgYXR0YWNobWVudFxuXHQgKiBuYW1lLlxuXHQgKlxuXHQgKiBTZWUge0BsaW5rICNnZXRBdHRhY2htZW50KCl9LlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0Z2V0QXR0YWNobWVudEJ5TmFtZSAoc2xvdE5hbWU6IHN0cmluZywgYXR0YWNobWVudE5hbWU6IHN0cmluZyk6IEF0dGFjaG1lbnQgfCBudWxsIHtcblx0XHRsZXQgc2xvdCA9IHRoaXMuZGF0YS5maW5kU2xvdChzbG90TmFtZSk7XG5cdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgc2xvdCB3aXRoIG5hbWUgJHtzbG90TmFtZX1gKTtcblx0XHRyZXR1cm4gdGhpcy5nZXRBdHRhY2htZW50KHNsb3QuaW5kZXgsIGF0dGFjaG1lbnROYW1lKTtcblx0fVxuXG5cdC8qKiBGaW5kcyBhbiBhdHRhY2htZW50IGJ5IGxvb2tpbmcgaW4gdGhlIHtAbGluayAjc2tpbn0gYW5kIHtAbGluayBTa2VsZXRvbkRhdGEjZGVmYXVsdFNraW59IHVzaW5nIHRoZSBzbG90IGluZGV4IGFuZFxuXHQgKiBhdHRhY2htZW50IG5hbWUuIEZpcnN0IHRoZSBza2luIGlzIGNoZWNrZWQgYW5kIGlmIHRoZSBhdHRhY2htZW50IHdhcyBub3QgZm91bmQsIHRoZSBkZWZhdWx0IHNraW4gaXMgY2hlY2tlZC5cblx0ICpcblx0ICogU2VlIFtSdW50aW1lIHNraW5zXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtcnVudGltZS1za2lucykgaW4gdGhlIFNwaW5lIFJ1bnRpbWVzIEd1aWRlLlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0Z2V0QXR0YWNobWVudCAoc2xvdEluZGV4OiBudW1iZXIsIGF0dGFjaG1lbnROYW1lOiBzdHJpbmcpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0aWYgKCFhdHRhY2htZW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiYXR0YWNobWVudE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGlmICh0aGlzLnNraW4pIHtcblx0XHRcdGxldCBhdHRhY2htZW50ID0gdGhpcy5za2luLmdldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBhdHRhY2htZW50TmFtZSk7XG5cdFx0XHRpZiAoYXR0YWNobWVudCkgcmV0dXJuIGF0dGFjaG1lbnQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmRhdGEuZGVmYXVsdFNraW4pIHJldHVybiB0aGlzLmRhdGEuZGVmYXVsdFNraW4uZ2V0QXR0YWNobWVudChzbG90SW5kZXgsIGF0dGFjaG1lbnROYW1lKTtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKiBBIGNvbnZlbmllbmNlIG1ldGhvZCB0byBzZXQgYW4gYXR0YWNobWVudCBieSBmaW5kaW5nIHRoZSBzbG90IHdpdGgge0BsaW5rICNmaW5kU2xvdCgpfSwgZmluZGluZyB0aGUgYXR0YWNobWVudCB3aXRoXG5cdCAqIHtAbGluayAjZ2V0QXR0YWNobWVudCgpfSwgdGhlbiBzZXR0aW5nIHRoZSBzbG90J3Mge0BsaW5rIFNsb3QjYXR0YWNobWVudH0uXG5cdCAqIEBwYXJhbSBhdHRhY2htZW50TmFtZSBNYXkgYmUgbnVsbCB0byBjbGVhciB0aGUgc2xvdCdzIGF0dGFjaG1lbnQuICovXG5cdHNldEF0dGFjaG1lbnQgKHNsb3ROYW1lOiBzdHJpbmcsIGF0dGFjaG1lbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIXNsb3ROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJzbG90TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IHNsb3RzID0gdGhpcy5zbG90cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdGlmIChzbG90LmRhdGEubmFtZSA9PSBzbG90TmFtZSkge1xuXHRcdFx0XHRsZXQgYXR0YWNobWVudDogQXR0YWNobWVudCB8IG51bGwgPSBudWxsO1xuXHRcdFx0XHRpZiAoYXR0YWNobWVudE5hbWUpIHtcblx0XHRcdFx0XHRhdHRhY2htZW50ID0gdGhpcy5nZXRBdHRhY2htZW50KGksIGF0dGFjaG1lbnROYW1lKTtcblx0XHRcdFx0XHRpZiAoIWF0dGFjaG1lbnQpIHRocm93IG5ldyBFcnJvcihcIkF0dGFjaG1lbnQgbm90IGZvdW5kOiBcIiArIGF0dGFjaG1lbnROYW1lICsgXCIsIGZvciBzbG90OiBcIiArIHNsb3ROYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzbG90LnNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiU2xvdCBub3QgZm91bmQ6IFwiICsgc2xvdE5hbWUpO1xuXHR9XG5cblxuXHQvKiogRmluZHMgYW4gSUsgY29uc3RyYWludCBieSBjb21wYXJpbmcgZWFjaCBJSyBjb25zdHJhaW50J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2Rcblx0ICogdGhhbiB0byBjYWxsIGl0IHJlcGVhdGVkbHkuXG5cdCAqIEByZXR1cm4gTWF5IGJlIG51bGwuICovXG5cdGZpbmRJa0NvbnN0cmFpbnQgKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWNvbnN0cmFpbnROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMuaWtDb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGEubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgPz8gbnVsbDtcblx0fVxuXG5cdC8qKiBGaW5kcyBhIHRyYW5zZm9ybSBjb25zdHJhaW50IGJ5IGNvbXBhcmluZyBlYWNoIHRyYW5zZm9ybSBjb25zdHJhaW50J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2Zcblx0ICogdGhpcyBtZXRob2QgdGhhbiB0byBjYWxsIGl0IHJlcGVhdGVkbHkuXG5cdCAqIEByZXR1cm4gTWF5IGJlIG51bGwuICovXG5cdGZpbmRUcmFuc2Zvcm1Db25zdHJhaW50IChjb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFjb25zdHJhaW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuZGF0YS5uYW1lID09IGNvbnN0cmFpbnROYW1lKSA/PyBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGEgcGF0aCBjb25zdHJhaW50IGJ5IGNvbXBhcmluZyBlYWNoIHBhdGggY29uc3RyYWludCdzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXMgbWV0aG9kXG5cdCAqIHRoYW4gdG8gY2FsbCBpdCByZXBlYXRlZGx5LlxuXHQgKiBAcmV0dXJuIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kUGF0aENvbnN0cmFpbnQgKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWNvbnN0cmFpbnROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMucGF0aENvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuZGF0YS5uYW1lID09IGNvbnN0cmFpbnROYW1lKSA/PyBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGEgcGh5c2ljcyBjb25zdHJhaW50IGJ5IGNvbXBhcmluZyBlYWNoIHBoeXNpY3MgY29uc3RyYWludCdzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXNcblx0ICogbWV0aG9kIHRoYW4gdG8gY2FsbCBpdCByZXBlYXRlZGx5LiAqL1xuXHRmaW5kUGh5c2ljc0NvbnN0cmFpbnQgKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoY29uc3RyYWludE5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLnBoeXNpY3NDb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGEubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgPz8gbnVsbDtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIHRoZSBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IChBQUJCKSBvZiB0aGUgcmVnaW9uIGFuZCBtZXNoIGF0dGFjaG1lbnRzIGZvciB0aGUgY3VycmVudCBwb3NlIGFzIGB7IHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9YC5cblx0ICogTm90ZSB0aGF0IHRoaXMgbWV0aG9kIHdpbGwgY3JlYXRlIHRlbXBvcmFyeSBvYmplY3RzIHdoaWNoIGNhbiBhZGQgdG8gZ2FyYmFnZSBjb2xsZWN0aW9uIHByZXNzdXJlLiBVc2UgYGdldEJvdW5kcygpYCBpZiBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgYSBjb25jZXJuLiAqL1xuXHRnZXRCb3VuZHNSZWN0IChjbGlwcGVyPzogU2tlbGV0b25DbGlwcGluZykge1xuXHRcdGxldCBvZmZzZXQgPSBuZXcgVmVjdG9yMigpO1xuXHRcdGxldCBzaXplID0gbmV3IFZlY3RvcjIoKTtcblx0XHR0aGlzLmdldEJvdW5kcyhvZmZzZXQsIHNpemUsIHVuZGVmaW5lZCwgY2xpcHBlcik7XG5cdFx0cmV0dXJuIHsgeDogb2Zmc2V0LngsIHk6IG9mZnNldC55LCB3aWR0aDogc2l6ZS54LCBoZWlnaHQ6IHNpemUueSB9O1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIGF4aXMgYWxpZ25lZCBib3VuZGluZyBib3ggKEFBQkIpIG9mIHRoZSByZWdpb24gYW5kIG1lc2ggYXR0YWNobWVudHMgZm9yIHRoZSBjdXJyZW50IHBvc2UuXG5cdCAqIEBwYXJhbSBvZmZzZXQgQW4gb3V0cHV0IHZhbHVlLCB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgc2tlbGV0b24gb3JpZ2luIHRvIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIEFBQkIuXG5cdCAqIEBwYXJhbSBzaXplIEFuIG91dHB1dCB2YWx1ZSwgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIEFBQkIuXG5cdCAqIEBwYXJhbSB0ZW1wIFdvcmtpbmcgbWVtb3J5IHRvIHRlbXBvcmFyaWx5IHN0b3JlIGF0dGFjaG1lbnRzJyBjb21wdXRlZCB3b3JsZCB2ZXJ0aWNlcy5cblx0ICogQHBhcmFtIGNsaXBwZXIge0BsaW5rIFNrZWxldG9uQ2xpcHBpbmd9IHRvIHVzZS4gSWYgPGNvZGU+bnVsbDwvY29kZT4sIG5vIGNsaXBwaW5nIGlzIGFwcGxpZWQuICovXG5cdGdldEJvdW5kcyAob2Zmc2V0OiBWZWN0b3IyLCBzaXplOiBWZWN0b3IyLCB0ZW1wOiBBcnJheTxudW1iZXI+ID0gbmV3IEFycmF5PG51bWJlcj4oMiksIGNsaXBwZXI6IFNrZWxldG9uQ2xpcHBpbmcgfCBudWxsID0gbnVsbCkge1xuXHRcdGlmICghb2Zmc2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJvZmZzZXQgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGlmICghc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwic2l6ZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IGRyYXdPcmRlciA9IHRoaXMuZHJhd09yZGVyO1xuXHRcdGxldCBtaW5YID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBtaW5ZID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBtYXhYID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCBtYXhZID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHNsb3QgPSBkcmF3T3JkZXJbaV07XG5cdFx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIGNvbnRpbnVlO1xuXHRcdFx0bGV0IHZlcnRpY2VzTGVuZ3RoID0gMDtcblx0XHRcdGxldCB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cdFx0XHRsZXQgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UgfCBudWxsID0gbnVsbDtcblx0XHRcdGxldCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cdFx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFJlZ2lvbkF0dGFjaG1lbnQpIHtcblx0XHRcdFx0dmVydGljZXNMZW5ndGggPSA4O1xuXHRcdFx0XHR2ZXJ0aWNlcyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0ZW1wLCB2ZXJ0aWNlc0xlbmd0aCwgMCk7XG5cdFx0XHRcdGF0dGFjaG1lbnQuY29tcHV0ZVdvcmxkVmVydGljZXMoc2xvdCwgdmVydGljZXMsIDAsIDIpO1xuXHRcdFx0XHR0cmlhbmdsZXMgPSBTa2VsZXRvbi5xdWFkVHJpYW5nbGVzO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgTWVzaEF0dGFjaG1lbnQpIHtcblx0XHRcdFx0bGV0IG1lc2ggPSAoPE1lc2hBdHRhY2htZW50PmF0dGFjaG1lbnQpO1xuXHRcdFx0XHR2ZXJ0aWNlc0xlbmd0aCA9IG1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHRcdFx0dmVydGljZXMgPSBVdGlscy5zZXRBcnJheVNpemUodGVtcCwgdmVydGljZXNMZW5ndGgsIDApO1xuXHRcdFx0XHRtZXNoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNsb3QsIDAsIHZlcnRpY2VzTGVuZ3RoLCB2ZXJ0aWNlcywgMCwgMik7XG5cdFx0XHRcdHRyaWFuZ2xlcyA9IG1lc2gudHJpYW5nbGVzO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgQ2xpcHBpbmdBdHRhY2htZW50ICYmIGNsaXBwZXIgIT0gbnVsbCkge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBTdGFydChzbG90LCBhdHRhY2htZW50KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAodmVydGljZXMgJiYgdHJpYW5nbGVzKSB7XG5cdFx0XHRcdGlmIChjbGlwcGVyICE9IG51bGwgJiYgY2xpcHBlci5pc0NsaXBwaW5nKCkpIHtcblx0XHRcdFx0XHRjbGlwcGVyLmNsaXBUcmlhbmdsZXModmVydGljZXMsIHRyaWFuZ2xlcywgdHJpYW5nbGVzLmxlbmd0aCk7XG5cdFx0XHRcdFx0dmVydGljZXMgPSBjbGlwcGVyLmNsaXBwZWRWZXJ0aWNlcztcblx0XHRcdFx0XHR2ZXJ0aWNlc0xlbmd0aCA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gdmVydGljZXMubGVuZ3RoOyBpaSA8IG5uOyBpaSArPSAyKSB7XG5cdFx0XHRcdFx0bGV0IHggPSB2ZXJ0aWNlc1tpaV0sIHkgPSB2ZXJ0aWNlc1tpaSArIDFdO1xuXHRcdFx0XHRcdG1pblggPSBNYXRoLm1pbihtaW5YLCB4KTtcblx0XHRcdFx0XHRtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG5cdFx0XHRcdFx0bWF4WCA9IE1hdGgubWF4KG1heFgsIHgpO1xuXHRcdFx0XHRcdG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGNsaXBwZXIgIT0gbnVsbCkgY2xpcHBlci5jbGlwRW5kV2l0aFNsb3Qoc2xvdCk7XG5cdFx0fVxuXHRcdGlmIChjbGlwcGVyICE9IG51bGwpIGNsaXBwZXIuY2xpcEVuZCgpO1xuXHRcdG9mZnNldC5zZXQobWluWCwgbWluWSk7XG5cdFx0c2l6ZS5zZXQobWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKTtcblx0fVxuXG5cdC8qKiBJbmNyZW1lbnRzIHRoZSBza2VsZXRvbidzIHtAbGluayAjdGltZX0uICovXG5cdHVwZGF0ZSAoZGVsdGE6IG51bWJlcikge1xuXHRcdHRoaXMudGltZSArPSBkZWx0YTtcblx0fVxuXG5cdHBoeXNpY3NUcmFuc2xhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG5cdFx0Y29uc3QgcGh5c2ljc0NvbnN0cmFpbnRzID0gdGhpcy5waHlzaWNzQ29uc3RyYWludHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwaHlzaWNzQ29uc3RyYWludHMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0cGh5c2ljc0NvbnN0cmFpbnRzW2ldLnRyYW5zbGF0ZSh4LCB5KTtcblx0fVxuXG5cdC8qKiBDYWxscyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnQjcm90YXRlKGZsb2F0LCBmbG9hdCwgZmxvYXQpfSBmb3IgZWFjaCBwaHlzaWNzIGNvbnN0cmFpbnQuICovXG5cdHBoeXNpY3NSb3RhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyLCBkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRjb25zdCBwaHlzaWNzQ29uc3RyYWludHMgPSB0aGlzLnBoeXNpY3NDb25zdHJhaW50cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRwaHlzaWNzQ29uc3RyYWludHNbaV0ucm90YXRlKHgsIHksIGRlZ3JlZXMpO1xuXHR9XG59XG5cbi8qKiBEZXRlcm1pbmVzIGhvdyBwaHlzaWNzIGFuZCBvdGhlciBub24tZGV0ZXJtaW5pc3RpYyB1cGRhdGVzIGFyZSBhcHBsaWVkLiAqL1xuZXhwb3J0IGVudW0gUGh5c2ljcyB7XG5cdC8qKiBQaHlzaWNzIGFyZSBub3QgdXBkYXRlZCBvciBhcHBsaWVkLiAqL1xuXHRub25lLFxuXG5cdC8qKiBQaHlzaWNzIGFyZSByZXNldCB0byB0aGUgY3VycmVudCBwb3NlLiAqL1xuXHRyZXNldCxcblxuXHQvKiogUGh5c2ljcyBhcmUgdXBkYXRlZCBhbmQgdGhlIHBvc2UgZnJvbSBwaHlzaWNzIGlzIGFwcGxpZWQuICovXG5cdHVwZGF0ZSxcblxuXHQvKiogUGh5c2ljcyBhcmUgbm90IHVwZGF0ZWQgYnV0IHRoZSBwb3NlIGZyb20gcGh5c2ljcyBpcyBhcHBsaWVkLiAqL1xuXHRwb3NlXG59Il19
|