@esotericsoftware/spine-core 4.3.8 → 4.3.9
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/BonePose.d.ts +1 -1
- package/dist/BonePose.js +9 -7
- package/dist/PathConstraint.js +3 -3
- package/dist/PhysicsConstraint.js +4 -4
- package/dist/TransformConstraint.js +3 -3
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +13 -13
- package/dist/esm/spine-core.mjs.map +2 -2
- package/dist/iife/spine-core.js +13 -13
- package/dist/iife/spine-core.js.map +2 -2
- package/dist/iife/spine-core.min.js +2 -2
- package/package.json +1 -1
package/dist/BonePose.d.ts
CHANGED
|
@@ -104,7 +104,7 @@ export declare class BonePose implements Pose<BonePose>, Update {
|
|
|
104
104
|
* using the applied local transform. */
|
|
105
105
|
validateLocalTransform(skeleton: Skeleton): void;
|
|
106
106
|
modifyLocal(skeleton: Skeleton): void;
|
|
107
|
-
modifyWorld(
|
|
107
|
+
modifyWorld(skeleton: Skeleton): void;
|
|
108
108
|
private resetWorld;
|
|
109
109
|
/** The world rotation for the X axis, calculated using {@link a} and {@link c}. This is the direction the bone is
|
|
110
110
|
* pointing. */
|
package/dist/BonePose.js
CHANGED
|
@@ -350,21 +350,23 @@ export class BonePose {
|
|
|
350
350
|
if (this.local === skeleton._update)
|
|
351
351
|
this.updateLocalTransform(skeleton);
|
|
352
352
|
this.world = 0;
|
|
353
|
-
this.resetWorld(skeleton._update);
|
|
353
|
+
this.resetWorld(skeleton, skeleton._update);
|
|
354
354
|
}
|
|
355
|
-
modifyWorld(
|
|
355
|
+
modifyWorld(skeleton) {
|
|
356
|
+
const update = skeleton._update;
|
|
356
357
|
this.local = update;
|
|
357
358
|
this.world = update;
|
|
358
|
-
this.resetWorld(update);
|
|
359
|
+
this.resetWorld(skeleton, update);
|
|
359
360
|
}
|
|
360
|
-
resetWorld(update) {
|
|
361
|
+
resetWorld(skeleton, update) {
|
|
361
362
|
const children = this.bone.children;
|
|
362
363
|
for (let i = 0, n = children.length; i < n; i++) {
|
|
363
364
|
const child = children[i].appliedPose;
|
|
364
365
|
if (child.world === update) {
|
|
366
|
+
if (child.local === update)
|
|
367
|
+
child.updateLocalTransform(skeleton);
|
|
365
368
|
child.world = 0;
|
|
366
|
-
child.
|
|
367
|
-
child.resetWorld(update);
|
|
369
|
+
child.resetWorld(skeleton, update);
|
|
368
370
|
}
|
|
369
371
|
}
|
|
370
372
|
}
|
|
@@ -453,4 +455,4 @@ export class BonePose {
|
|
|
453
455
|
this.d = sin * rb + cos * this.d;
|
|
454
456
|
}
|
|
455
457
|
}
|
|
456
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9uZVBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQm9uZVBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLeEMsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFFckQ7Ozs7Ozs7O3FEQVFxRDtBQUNyRCxNQUFNLE9BQU8sUUFBUTtJQUNwQixJQUFJLENBQVE7SUFFWiwrQkFBK0I7SUFDL0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVOLCtCQUErQjtJQUMvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sd0RBQXdEO0lBQ3hELFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFYix3QkFBd0I7SUFDeEIsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLHdCQUF3QjtJQUN4QixNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRVgsd0JBQXdCO0lBQ3hCLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFWCx3QkFBd0I7SUFDeEIsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRXpCLDJEQUEyRDtJQUMzRCxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sMkRBQTJEO0lBQzNELENBQUMsR0FBRyxDQUFDLENBQUM7SUFFTiwyREFBMkQ7SUFDM0QsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVOLDJEQUEyRDtJQUMzRCxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sdUZBQXVGO0lBQ3ZGLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFWCx1RkFBdUY7SUFDdkYsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRVYsR0FBRyxDQUFFLElBQWM7UUFDbEIsSUFBSSxJQUFJ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cEMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPO1FBQ1IsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUM1QyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFeEQsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDckIs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LENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU07WUFDUCxDQUFDO1lBQ0QsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEtBQUssT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDN0UsTUFBTSxDQUFDLEdBQUcsUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNyQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ1IsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDUixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxF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RSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDekUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFM0IsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsS0FBSyxPQUFPLENBQUMsTUFBTTtnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUs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RyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELFdBQVcsQ0FBRSxPQUFlO1FBQzNCLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEJvbmUgfSBmcm9tIFwiLi9Cb25lLmpzXCI7XG5pbXBvcnQgeyBJbmhlcml0IH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgUGh5c2ljcyB9IGZyb20gXCIuL1BoeXNpY3MuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9zZSB9IGZyb20gXCIuL1Bvc2UuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBVcGRhdGUgfSBmcm9tIFwiLi9VcGRhdGUuanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscywgdHlwZSBWZWN0b3IyIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFRoZSBhcHBsaWVkIGxvY2FsIHBvc2UgYW5kIHdvcmxkIHRyYW5zZm9ybSBmb3IgYSBib25lLiBUaGlzIGlzIHRoZSB7QGxpbmsgQm9uZS5nZXRQb3NlfSB3aXRoIGNvbnN0cmFpbnRzIGFwcGxpZWQgYW5kIHRoZVxuICogd29ybGQgdHJhbnNmb3JtIGNvbXB1dGVkIGJ5IHtAbGluayBTa2VsZXRvbi51cGRhdGVXb3JsZFRyYW5zZm9ybX0gYW5kIHtAbGluayB1cGRhdGVXb3JsZFRyYW5zZm9ybX0uXG4gKlxuICogSWYgdGhlIHdvcmxkIHRyYW5zZm9ybSBpcyBjaGFuZ2VkLCBjYWxsIHtAbGluayB1cGRhdGVMb2NhbFRyYW5zZm9ybX0gYmVmb3JlIHVzaW5nIHRoZSBsb2NhbCB0cmFuc2Zvcm0uIFRoZSBsb2NhbFxuICogdHJhbnNmb3JtIG1heSBiZSBuZWVkZWQgYnkgb3RoZXIgY29kZSAoZWcgdG8gYXBwbHkgYW5vdGhlciBjb25zdHJhaW50KS5cbiAqXG4gKiBBZnRlciBjaGFuZ2luZyB0aGUgd29ybGQgdHJhbnNmb3JtLCBjYWxsIHtAbGluayB1cGRhdGVXb3JsZFRyYW5zZm9ybX0gb24gZXZlcnkgZGVzY2VuZGFudCBib25lLiBJdCBtYXkgYmUgbW9yZVxuICogY29udmVuaWVudCB0byBtb2RpZnkgdGhlIGxvY2FsIHRyYW5zZm9ybSBpbnN0ZWFkLCB0aGVuIGNhbGwge0BsaW5rIFNrZWxldG9uLnVwZGF0ZVdvcmxkVHJhbnNmb3JtfSB0byB1cGRhdGUgdGhlIHdvcmxkXG4gKiB0cmFuc2Zvcm1zIGZvciBhbGwgYm9uZXMgYW5kIGFwcGx5IGNvbnN0cmFpbnRzLiAqL1xuZXhwb3J0IGNsYXNzIEJvbmVQb3NlIGltcGxlbWVudHMgUG9zZTxCb25lUG9zZT4sIFVwZGF0ZSB7XG5cdGJvbmUhOiBCb25lO1xuXG5cdC8qKiBUaGUgbG9jYWwgeCB0cmFuc2xhdGlvbi4gKi9cblx0eCA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCB5IHRyYW5zbGF0aW9uLiAqL1xuXHR5ID0gMDtcblxuXHQvKiogVGhlIGxvY2FsIHJvdGF0aW9uIGluIGRlZ3JlZXMsIGNvdW50ZXIgY2xvY2t3aXNlLiAqL1xuXHRyb3RhdGlvbiA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzY2FsZVguICovXG5cdHNjYWxlWCA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzY2FsZVkuICovXG5cdHNjYWxlWSA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzaGVhclguICovXG5cdHNoZWFyWCA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzaGVhclkuICovXG5cdHNoZWFyWSA9IDA7XG5cblx0aW5oZXJpdCA9IEluaGVyaXQuTm9ybWFsO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB4LWF4aXMgeCBjb21wb25lbnQuICovXG5cdGEgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB5LWF4aXMgeCBjb21wb25lbnQuICovXG5cdGIgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB4LWF4aXMgeSBjb21wb25lbnQuICovXG5cdGMgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB5LWF4aXMgeSBjb21wb25lbnQuICovXG5cdGQgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgWCBwb3NpdGlvbi4gSWYgY2hhbmdlZCwge0BsaW5rIHVwZGF0ZUxvY2FsVHJhbnNmb3JtfSBzaG91bGQgYmUgY2FsbGVkLiAqL1xuXHR3b3JsZFkgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgWSBwb3NpdGlvbi4gSWYgY2hhbmdlZCwge0BsaW5rIHVwZGF0ZUxvY2FsVHJhbnNmb3JtfSBzaG91bGQgYmUgY2FsbGVkLiAqL1xuXHR3b3JsZFggPSAwO1xuXG5cdHdvcmxkID0gMDtcblx0bG9jYWwgPSAwO1xuXG5cdHNldCAocG9zZTogQm9uZVBvc2UpOiB2b2lkIHtcblx0XHRpZiAocG9zZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJwb3NlIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLnggPSBwb3NlLng7XG5cdFx0dGhpcy55ID0gcG9zZS55O1xuXHRcdHRoaXMucm90YXRpb24gPSBwb3NlLnJvdGF0aW9uO1xuXHRcdHRoaXMuc2NhbGVYID0gcG9zZS5zY2FsZVg7XG5cdFx0dGhpcy5zY2FsZVkgPSBwb3NlLnNjYWxlWTtcblx0XHR0aGlzLnNoZWFyWCA9IHBvc2Uuc2hlYXJYO1xuXHRcdHRoaXMuc2hlYXJZID0gcG9zZS5zaGVhclk7XG5cdFx0dGhpcy5pbmhlcml0ID0gcG9zZS5pbmhlcml0O1xuXHR9XG5cblx0c2V0UG9zaXRpb24gKHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XG5cdFx0dGhpcy54ID0geDtcblx0XHR0aGlzLnkgPSB5O1xuXHR9XG5cblx0c2V0U2NhbGUgKHNjYWxlWDogbnVtYmVyLCBzY2FsZVk6IG51bWJlcik6IHZvaWQ7XG5cdHNldFNjYWxlIChzY2FsZTogbnVtYmVyKTogdm9pZDtcblx0c2V0U2NhbGUgKHNjYWxlT3JYOiBudW1iZXIsIHNjYWxlWT86IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMuc2NhbGVYID0gc2NhbGVPclg7XG5cdFx0dGhpcy5zY2FsZVkgPSBzY2FsZVkgPT09IHVuZGVmaW5lZCA/IHNjYWxlT3JYIDogc2NhbGVZO1xuXHR9XG5cblx0LyoqIERldGVybWluZXMgaG93IHBhcmVudCB3b3JsZCB0cmFuc2Zvcm1zIGFmZmVjdCB0aGlzIGJvbmUuICovXG5cdHB1YmxpYyBnZXRJbmhlcml0ICgpOiBJbmhlcml0IHtcblx0XHRyZXR1cm4gdGhpcy5pbmhlcml0O1xuXHR9XG5cblx0cHVibGljIHNldEluaGVyaXQgKGluaGVyaXQ6IEluaGVyaXQpOiB2b2lkIHtcblx0XHRpZiAoaW5oZXJpdCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJpbmhlcml0IGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLmluaGVyaXQgPSBpbmhlcml0O1xuXHR9XG5cblx0LyoqIENhbGxlZCBieSB7QGxpbmsgU2tlbGV0b24udXBkYXRlQ2FjaGV9IHRvIGNvbXB1dGUgdGhlIHdvcmxkIHRyYW5zZm9ybSwgaWYgbmVlZGVkLiAqL1xuXHRwdWJsaWMgdXBkYXRlIChza2VsZXRvbjogU2tlbGV0b24sIHBoeXNpY3M6IFBoeXNpY3MpOiB2b2lkIHtcblx0XHRpZiAodGhpcy53b3JsZCAhPT0gc2tlbGV0b24uX3VwZGF0ZSkgdGhpcy51cGRhdGVXb3JsZFRyYW5zZm9ybShza2VsZXRvbik7XG5cdH1cblxuXHQvKiogQ29tcHV0ZXMgdGhlIHdvcmxkIHRyYW5zZm9ybSB1c2luZyB0aGUgcGFyZW50IGJvbmUncyB3b3JsZCB0cmFuc2Zvcm0gYW5kIHRoaXMgYXBwbGllZCBsb2NhbCBwb3NlLiBDaGlsZCBib25lcyBhcmUgbm90XG5cdCAqIHVwZGF0ZWQuXG5cdCAqXG5cdCAqIFNlZSA8YSBocmVmPVwiaHR0cHM6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1ydW50aW1lLXNrZWxldG9ucyNXb3JsZC10cmFuc2Zvcm1zXCI+V29ybGQgdHJhbnNmb3JtczwvYT4gaW4gdGhlIFNwaW5lXG5cdCAqIFJ1bnRpbWVzIEd1aWRlLiAqL1xuXHR1cGRhdGVXb3JsZFRyYW5zZm9ybSAoc2tlbGV0b246IFNrZWxldG9uKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubG9jYWwgPT09IHNrZWxldG9uLl91cGRhdGUpXG5cdFx0XHR0aGlzLnVwZGF0ZUxvY2FsVHJhbnNmb3JtKHNrZWxldG9uKTtcblx0XHRlbHNlXG5cdFx0XHR0aGlzLndvcmxkID0gc2tlbGV0b24uX3VwZGF0ZTtcblxuXHRcdGNvbnN0IHJvdGF0aW9uID0gdGhpcy5yb3RhdGlvbjtcblx0XHRjb25zdCBzY2FsZVggPSB0aGlzLnNjYWxlWDtcblx0XHRjb25zdCBzY2FsZVkgPSB0aGlzLnNjYWxlWTtcblx0XHRjb25zdCBzaGVhclggPSB0aGlzLnNoZWFyWDtcblx0XHRjb25zdCBzaGVhclkgPSB0aGlzLnNoZWFyWTtcblx0XHRpZiAoIXRoaXMuYm9uZS5wYXJlbnQpIHsgLy8gUm9vdCBib25lLlxuXHRcdFx0Y29uc3Qgc3ggPSBza2VsZXRvbi5zY2FsZVgsIHN5ID0gc2tlbGV0b24uc2NhbGVZO1xuXHRcdFx0Y29uc3QgcnggPSAocm90YXRpb24gKyBzaGVhclgpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdGNvbnN0IHJ5ID0gKHJvdGF0aW9uICsgOTAgKyBzaGVhclkpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdHRoaXMuYSA9IE1hdGguY29zKHJ4KSAqIHNjYWxlWCAqIHN4O1xuXHRcdFx0dGhpcy5iID0gTWF0aC5jb3MocnkpICogc2NhbGVZICogc3g7XG5cdFx0XHR0aGlzLmMgPSBNYXRoLnNpbihyeCkgKiBzY2FsZVggKiBzeTtcblx0XHRcdHRoaXMuZCA9IE1hdGguc2luKHJ5KSAqIHNjYWxlWSAqIHN5O1xuXHRcdFx0dGhpcy53b3JsZFggPSB0aGlzLnggKiBzeCArIHNrZWxldG9uLng7XG5cdFx0XHR0aGlzLndvcmxkWSA9IHRoaXMueSAqIHN5ICsgc2tlbGV0b24ueTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBwYXJlbnQgPSB0aGlzLmJvbmUucGFyZW50LmFwcGxpZWRQb3NlO1xuXHRcdGxldCBwYSA9IHBhcmVudC5hLCBwYiA9IHBhcmVudC5iLCBwYyA9IHBhcmVudC5jLCBwZCA9IHBhcmVudC5kO1xuXHRcdHRoaXMud29ybGRYID0gcGEgKiB0aGlzLnggKyBwYiAqIHRoaXMueSArIHBhcmVudC53b3JsZFg7XG5cdFx0dGhpcy53b3JsZFkgPSBwYyAqIHRoaXMueCArIHBkICogdGhpcy55ICsgcGFyZW50LndvcmxkWTtcblxuXHRcdHN3aXRjaCAodGhpcy5pbmhlcml0KSB7XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9ybWFsOiB7XG5cdFx0XHRcdGNvbnN0IHJ4ID0gKHJvdGF0aW9uICsgc2hlYXJYKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IHJ5ID0gKHJvdGF0aW9uICsgOTAgKyBzaGVhclkpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdFx0Y29uc3QgbGEgPSBNYXRoLmNvcyhyeCkgKiBzY2FsZVg7XG5cdFx0XHRcdGNvbnN0IGxiID0gTWF0aC5jb3MocnkpICogc2NhbGVZO1xuXHRcdFx0XHRjb25zdCBsYyA9IE1hdGguc2luKHJ4KSAqIHNjYWxlWDtcblx0XHRcdFx0Y29uc3QgbGQgPSBNYXRoLnNpbihyeSkgKiBzY2FsZVk7XG5cdFx0XHRcdHRoaXMuYSA9IHBhICogbGEgKyBwYiAqIGxjO1xuXHRcdFx0XHR0aGlzLmIgPSBwYSAqIGxiICsgcGIgKiBsZDtcblx0XHRcdFx0dGhpcy5jID0gcGMgKiBsYSArIHBkICogbGM7XG5cdFx0XHRcdHRoaXMuZCA9IHBjICogbGIgKyBwZCAqIGxkO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuT25seVRyYW5zbGF0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdFx0Y29uc3QgcnggPSAocm90YXRpb24gKyBzaGVhclgpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdFx0Y29uc3QgcnkgPSAocm90YXRpb24gKyA5MCArIHNoZWFyWSkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdFx0XHR0aGlzLmEgPSBNYXRoLmNvcyhyeCkgKiBzY2FsZVggKiBzeDtcblx0XHRcdFx0dGhpcy5iID0gTWF0aC5jb3MocnkpICogc2NhbGVZICogc3g7XG5cdFx0XHRcdHRoaXMuYyA9IE1hdGguc2luKHJ4KSAqIHNjYWxlWCAqIHN5O1xuXHRcdFx0XHR0aGlzLmQgPSBNYXRoLnNpbihyeSkgKiBzY2FsZVkgKiBzeTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9Sb3RhdGlvbk9yUmVmbGVjdGlvbjoge1xuXHRcdFx0XHRjb25zdCBzeCA9IHNrZWxldG9uLnNjYWxlWCwgc3kgPSBza2VsZXRvbi5zY2FsZVksIHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0XHRwYSAqPSBzeGk7XG5cdFx0XHRcdHBjICo9IHN5aTtcblx0XHRcdFx0bGV0IHMgPSBwYSAqIHBhICsgcGMgKiBwYztcblx0XHRcdFx0bGV0IHIgPSAwO1xuXHRcdFx0XHRpZiAocyA+IE1hdGhVdGlscy5lcHNpbG9uMikge1xuXHRcdFx0XHRcdHMgPSBNYXRoLmFicyhwYSAqIHBkICogc3lpIC0gcGIgKiBzeGkgKiBwYykgLyBzO1xuXHRcdFx0XHRcdHBiID0gcGMgKiBzO1xuXHRcdFx0XHRcdHBkID0gcGEgKiBzO1xuXHRcdFx0XHRcdHIgPSByb3RhdGlvbiAtIE1hdGhVdGlscy5hdGFuMkRlZyhwYywgcGEpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhID0gMDtcblx0XHRcdFx0XHRwYyA9IDA7XG5cdFx0XHRcdFx0ciA9IHJvdGF0aW9uIC0gOTAgKyBNYXRoVXRpbHMuYXRhbjJEZWcocGQsIHBiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByeCA9IChyICsgc2hlYXJYKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IHJ5ID0gKHIgKyBzaGVhclkgKyA5MCkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdFx0XHRjb25zdCBsYSA9IE1hdGguY29zKHJ4KSAqIHNjYWxlWDtcblx0XHRcdFx0Y29uc3QgbGIgPSBNYXRoLmNvcyhyeSkgKiBzY2FsZVk7XG5cdFx0XHRcdGNvbnN0IGxjID0gTWF0aC5zaW4ocngpICogc2NhbGVYO1xuXHRcdFx0XHRjb25zdCBsZCA9IE1hdGguc2luKHJ5KSAqIHNjYWxlWTtcblx0XHRcdFx0dGhpcy5hID0gKHBhICogbGEgLSBwYiAqIGxjKSAqIHN4O1xuXHRcdFx0XHR0aGlzLmIgPSAocGEgKiBsYiAtIHBiICogbGQpICogc3g7XG5cdFx0XHRcdHRoaXMuYyA9IChwYyAqIGxhICsgcGQgKiBsYykgKiBzeTtcblx0XHRcdFx0dGhpcy5kID0gKHBjICogbGIgKyBwZCAqIGxkKSAqIHN5O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgSW5oZXJpdC5Ob1NjYWxlOlxuXHRcdFx0Y2FzZSBJbmhlcml0Lk5vU2NhbGVPclJlZmxlY3Rpb246IHtcblx0XHRcdFx0Y29uc3Qgc3ggPSBza2VsZXRvbi5zY2FsZVgsIHN5ID0gc2tlbGV0b24uc2NhbGVZLCBzeGkgPSAxIC8gc3gsIHN5aSA9IDEgLyBzeTtcblx0XHRcdFx0Y29uc3QgciA9IHJvdGF0aW9uICogTWF0aFV0aWxzLmRlZ1JhZCwgY29zID0gTWF0aC5jb3MociksIHNpbiA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRsZXQgemEgPSAocGEgKiBjb3MgKyBwYiAqIHNpbikgKiBzeGk7XG5cdFx0XHRcdGxldCB6YyA9IChwYyAqIGNvcyArIHBkICogc2luKSAqIHN5aTtcblx0XHRcdFx0Y29uc3QgcyA9IDEgLyBNYXRoLnNxcnQoemEgKiB6YSArIHpjICogemMpO1xuXHRcdFx0XHR6YSAqPSBzO1xuXHRcdFx0XHR6YyAqPSBzO1xuXHRcdFx0XHRsZXQgemIgPSAtemMsIHpkID0gemE7XG5cdFx0XHRcdGlmICh0aGlzLmluaGVyaXQgPT09IEluaGVyaXQuTm9TY2FsZSAmJiBwYSAqIHBkIC0gcGIgKiBwYyA8IDAgIT09IChzeCA8IDAgIT09IHN5IDwgMCkpIHtcblx0XHRcdFx0XHR6YiA9IC16Yjtcblx0XHRcdFx0XHR6ZCA9IC16ZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByeCA9IHNoZWFyWCAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IHJ5ID0gKDkwICsgc2hlYXJZKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IGxhID0gTWF0aC5jb3MocngpICogc2NhbGVYO1xuXHRcdFx0XHRjb25zdCBsYiA9IE1hdGguY29zKHJ5KSAqIHNjYWxlWTtcblx0XHRcdFx0Y29uc3QgbGMgPSBNYXRoLnNpbihyeCkgKiBzY2FsZVg7XG5cdFx0XHRcdGNvbnN0IGxkID0gTWF0aC5zaW4ocnkpICogc2NhbGVZO1xuXHRcdFx0XHR0aGlzLmEgPSAoemEgKiBsYSArIHpiICogbGMpICogc3g7XG5cdFx0XHRcdHRoaXMuYiA9ICh6YSAqIGxiICsgemIgKiBsZCkgKiBzeDtcblx0XHRcdFx0dGhpcy5jID0gKHpjICogbGEgKyB6ZCAqIGxjKSAqIHN5O1xuXHRcdFx0XHR0aGlzLmQgPSAoemMgKiBsYiArIHpkICogbGQpICogc3k7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKiBDb21wdXRlcyB0aGUgbG9jYWwgdHJhbnNmb3JtIHZhbHVlcyBmcm9tIHRoZSB3b3JsZCB0cmFuc2Zvcm0uXG5cdCAqXG5cdCAqIElmIHRoZSB3b3JsZCB0cmFuc2Zvcm0gaXMgbW9kaWZpZWQgKGJ5IGEgY29uc3RyYWludCwge0BsaW5rIHJvdGF0ZVdvcmxkfSwgZXRjKSB0aGVuIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgc29cblx0ICogdGhlIGxvY2FsIHRyYW5zZm9ybSBtYXRjaGVzIHRoZSB3b3JsZCB0cmFuc2Zvcm0uIFRoZSBsb2NhbCB0cmFuc2Zvcm0gbWF5IGJlIG5lZWRlZCBieSBvdGhlciBjb2RlIChlZyB0byBhcHBseSBhbm90aGVyXG5cdCAqIGNvbnN0cmFpbnQpLlxuXHQgKlxuXHQgKiBTb21lIGluZm9ybWF0aW9uIGlzIGFtYmlndW91cyBpbiB0aGUgd29ybGQgdHJhbnNmb3JtLCBzdWNoIGFzIC0xLC0xIHNjYWxlIHZlcnN1cyAxODAgcm90YXRpb24uIFRoZSBsb2NhbCB0cmFuc2Zvcm0gYWZ0ZXJcblx0ICogY2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIHRoZSBsb2NhbCB0cmFuc2Zvcm0gdXNlZCB0byBjb21wdXRlIHRoZSB3b3JsZCB0cmFuc2Zvcm0sIGJ1dCBtYXkgbm90IGJlIGlkZW50aWNhbC4gKi9cblx0cHVibGljIHVwZGF0ZUxvY2FsVHJhbnNmb3JtIChza2VsZXRvbjogU2tlbGV0b24pOiB2b2lkIHtcblx0XHR0aGlzLmxvY2FsID0gMDtcblx0XHR0aGlzLndvcmxkID0gc2tlbGV0b24uX3VwZGF0ZTtcblxuXHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWTtcblx0XHRpZiAoIXRoaXMuYm9uZS5wYXJlbnQpIHtcblx0XHRcdGNvbnN0IHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0dGhpcy54ID0gKHRoaXMud29ybGRYIC0gc2tlbGV0b24ueCkgKiBzeGk7XG5cdFx0XHR0aGlzLnkgPSAodGhpcy53b3JsZFkgLSBza2VsZXRvbi55KSAqIHN5aTtcblx0XHRcdHRoaXMuc2V0NSh0aGlzLmEgKiBzeGksIHRoaXMuYiAqIHN4aSwgdGhpcy5jICogc3lpLCB0aGlzLmQgKiBzeWksIDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBhcmVudCA9IHRoaXMuYm9uZS5wYXJlbnQuYXBwbGllZFBvc2U7XG5cdFx0bGV0IHBhID0gcGFyZW50LmEsIHBiID0gcGFyZW50LmIsIHBjID0gcGFyZW50LmMsIHBkID0gcGFyZW50LmQ7XG5cdFx0Y29uc3QgcGFkID0gcGEgKiBwZCAtIHBiICogcGMsIHBpZCA9IDEgLyAocGEgKiBwZCAtIHBiICogcGMpO1xuXHRcdGNvbnN0IGlhID0gcGQgKiBwaWQsIGliID0gcGIgKiBwaWQsIGljID0gcGMgKiBwaWQsIGlkID0gcGEgKiBwaWQ7XG5cdFx0Y29uc3QgZHggPSB0aGlzLndvcmxkWCAtIHBhcmVudC53b3JsZFgsIGR5ID0gdGhpcy53b3JsZFkgLSBwYXJlbnQud29ybGRZO1xuXHRcdHRoaXMueCA9IGR4ICogaWEgLSBkeSAqIGliO1xuXHRcdHRoaXMueSA9IGR5ICogaWQgLSBkeCAqIGljO1xuXG5cdFx0c3dpdGNoICh0aGlzLmluaGVyaXQpIHtcblx0XHRcdGNhc2UgSW5oZXJpdC5Ob3JtYWw6IHRoaXMuc2V0NShpYSAqIHRoaXMuYSAtIGliICogdGhpcy5jLCBpYSAqIHRoaXMuYiAtIGliICogdGhpcy5kLCBpZCAqIHRoaXMuYyAtIGljICogdGhpcy5hLCBpZCAqIHRoaXMuZCAtIGljICogdGhpcy5iLCAwKTsgYnJlYWs7XG5cdFx0XHRjYXNlIEluaGVyaXQuT25seVRyYW5zbGF0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0XHR0aGlzLnNldDUodGhpcy5hICogc3hpLCB0aGlzLmIgKiBzeGksIHRoaXMuYyAqIHN5aSwgdGhpcy5kICogc3lpLCAwKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9Sb3RhdGlvbk9yUmVmbGVjdGlvbjoge1xuXHRcdFx0XHRjb25zdCBzeGkgPSAxIC8gc3gsIHN5aSA9IDEgLyBzeTtcblx0XHRcdFx0cGEgKj0gc3hpO1xuXHRcdFx0XHRwYyAqPSBzeWk7XG5cdFx0XHRcdGNvbnN0IHdhID0gdGhpcy5hICogc3hpLCB3YiA9IHRoaXMuYiAqIHN4aSwgd2MgPSB0aGlzLmMgKiBzeWksIHdkID0gdGhpcy5kICogc3lpO1xuXHRcdFx0XHRjb25zdCBzID0gMSAvIChwYSAqIHBhICsgcGMgKiBwYyksIGRldCA9IDEgLyBNYXRoLmFicyhwYWQgKiBzeGkgKiBzeWkpO1xuXHRcdFx0XHR0aGlzLnNldDUoKHBhICogd2EgKyBwYyAqIHdjKSAqIHMsIChwYSAqIHdiICsgcGMgKiB3ZCkgKiBzLCAocGEgKiB3YyAtIHBjICogd2EpICogZGV0LCAocGEgKiB3ZCAtIHBjICogd2IpICogZGV0LFxuXHRcdFx0XHRcdE1hdGhVdGlscy5hdGFuMkRlZyhwYywgcGEpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9TY2FsZTpcblx0XHRcdGNhc2UgSW5oZXJpdC5Ob1NjYWxlT3JSZWZsZWN0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0XHRjb25zdCB3YSA9IHRoaXMuYSAqIHN4aSwgd2IgPSB0aGlzLmIgKiBzeGksIHdjID0gdGhpcy5jICogc3lpLCB3ZCA9IHRoaXMuZCAqIHN5aTtcblx0XHRcdFx0bGV0IHR4ID0gcGQgKiB0aGlzLmEgLSBwYiAqIHRoaXMuYywgdHkgPSBwYSAqIHRoaXMuYyAtIHBjICogdGhpcy5hO1xuXHRcdFx0XHRpZiAocGFkIDwgMCkge1xuXHRcdFx0XHRcdHR4ID0gLXR4O1xuXHRcdFx0XHRcdHR5ID0gLXR5O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCByID0gTWF0aFV0aWxzLmF0YW4yRGVnKHR5LCB0eCk7XG5cdFx0XHRcdHRoaXMucm90YXRpb24gPSByO1xuXHRcdFx0XHRyICo9IE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IGNvcyA9IE1hdGguY29zKHIpLCBzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0bGV0IHphID0gKHBhICogY29zICsgcGIgKiBzaW4pICogc3hpO1xuXHRcdFx0XHRsZXQgemMgPSAocGMgKiBjb3MgKyBwZCAqIHNpbikgKiBzeWk7XG5cdFx0XHRcdGNvbnN0IHMgPSAxIC8gTWF0aC5zcXJ0KHphICogemEgKyB6YyAqIHpjKTtcblx0XHRcdFx0emEgKj0gcztcblx0XHRcdFx0emMgKj0gcztcblx0XHRcdFx0Y29uc3Qgc2kgPSB0aGlzLmluaGVyaXQgPT09IEluaGVyaXQuTm9TY2FsZSAmJiBwYWQgPCAwICE9PSAoc3ggPCAwICE9PSBzeSA8IDApID8gLTEgOiAxO1xuXHRcdFx0XHR0aGlzLnNldDQoemEgKiB3YSArIHpjICogd2MsIHphICogd2IgKyB6YyAqIHdkLCAoemEgKiB3YyAtIHpjICogd2EpICogc2ksICh6YSAqIHdkIC0gemMgKiB3YikgKiBzaSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzZXQ0IChyYTogbnVtYmVyLCByYjogbnVtYmVyLCByYzogbnVtYmVyLCByZDogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgeCA9IHJhICogcmEgKyByYyAqIHJjLCB5ID0gcmIgKiByYiArIHJkICogcmQ7XG5cdFx0aWYgKHggPiBNYXRoVXRpbHMuZXBzaWxvbjIpIHtcblx0XHRcdHRoaXMuc2hlYXJYID0gTWF0aFV0aWxzLmF0YW4yRGVnKHJjLCByYSk7XG5cdFx0XHR0aGlzLnNjYWxlWCA9IE1hdGguc3FydCh4KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zaGVhclggPSAwO1xuXHRcdFx0dGhpcy5zY2FsZVggPSAwO1xuXHRcdH1cblx0XHR0aGlzLnNjYWxlWSA9IE1hdGguc3FydCh5KTtcblx0XHRpZiAoeSA+IE1hdGhVdGlscy5lcHNpbG9uMikge1xuXHRcdFx0dGhpcy5zaGVhclkgPSBNYXRoVXRpbHMuYXRhbjJEZWcocmQsIHJiKTtcblx0XHRcdGlmIChyYSAqIHJkIC0gcmIgKiByYyA8IDApIHtcblx0XHRcdFx0dGhpcy5zY2FsZVkgPSAtdGhpcy5zY2FsZVk7XG5cdFx0XHRcdHRoaXMuc2hlYXJZICs9IDkwO1xuXHRcdFx0fSBlbHNlXG5cdFx0XHRcdHRoaXMuc2hlYXJZIC09IDkwO1xuXHRcdFx0aWYgKHRoaXMuc2hlYXJZID4gMTgwKVxuXHRcdFx0XHR0aGlzLnNoZWFyWSAtPSAzNjA7XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNoZWFyWSA8PSAtMTgwKSAvL1xuXHRcdFx0XHR0aGlzLnNoZWFyWSArPSAzNjA7XG5cdFx0fSBlbHNlXG5cdFx0XHR0aGlzLnNoZWFyWSA9IDA7XG5cdH1cblxuXHRwcml2YXRlIHNldDUgKHJhOiBudW1iZXIsIHJiOiBudW1iZXIsIHJjOiBudW1iZXIsIHJkOiBudW1iZXIsIHJvOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLnNoZWFyWCA9IDA7XG5cdFx0Y29uc3QgeCA9IHJhICogcmEgKyByYyAqIHJjLCB5ID0gcmIgKiByYiArIHJkICogcmQ7XG5cdFx0aWYgKHggPiBNYXRoVXRpbHMuZXBzaWxvbjIpIHtcblx0XHRcdGNvbnN0IHIgPSBNYXRoVXRpbHMuYXRhbjJEZWcocmMsIHJhKTtcblx0XHRcdHRoaXMucm90YXRpb24gPSByICsgcm87XG5cdFx0XHR0aGlzLnNjYWxlWCA9IE1hdGguc3FydCh4KTtcblx0XHRcdHRoaXMuc2NhbGVZID0gTWF0aC5zcXJ0KHkpO1xuXHRcdFx0aWYgKHkgPiBNYXRoVXRpbHMuZXBzaWxvbjIpIHtcblx0XHRcdFx0dGhpcy5zaGVhclkgPSBNYXRoVXRpbHMuYXRhbjJEZWcocmQsIHJiKTtcblx0XHRcdFx0aWYgKHJhICogcmQgLSByYiAqIHJjIDwgMCkge1xuXHRcdFx0XHRcdHRoaXMuc2NhbGVZID0gLXRoaXMuc2NhbGVZO1xuXHRcdFx0XHRcdHRoaXMuc2hlYXJZICs9IDkwIC0gcjtcblx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0dGhpcy5zaGVhclkgLT0gOTAgKyByO1xuXHRcdFx0XHRpZiAodGhpcy5zaGVhclkgPiAxODApXG5cdFx0XHRcdFx0dGhpcy5zaGVhclkgLT0gMzYwO1xuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNoZWFyWSA8PSAtMTgwKSAvL1xuXHRcdFx0XHRcdHRoaXMuc2hlYXJZICs9IDM2MDtcblx0XHRcdH0gZWxzZVxuXHRcdFx0XHR0aGlzLnNoZWFyWSA9IDA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2NhbGVYID0gMDtcblx0XHRcdHRoaXMuc2NhbGVZID0gTWF0aC5zcXJ0KHkpO1xuXHRcdFx0dGhpcy5zaGVhclkgPSAwO1xuXHRcdFx0dGhpcy5yb3RhdGlvbiA9IHkgPiBNYXRoVXRpbHMuZXBzaWxvbjIgPyBNYXRoVXRpbHMuYXRhbjJEZWcocmQsIHJiKSAtIDkwICsgcm8gOiBybztcblx0XHR9XG5cdH1cblxuXHQvKiogSWYgdGhlIHdvcmxkIHRyYW5zZm9ybSBoYXMgYmVlbiBtb2RpZmllZCBieSBjb25zdHJhaW50cyBhbmQgdGhlIGxvY2FsIHRyYW5zZm9ybSBubyBsb25nZXIgbWF0Y2hlcyxcblx0ICoge0BsaW5rIHVwZGF0ZUxvY2FsVHJhbnNmb3JtfSBpcyBjYWxsZWQuIENhbGwgdGhpcyBhZnRlciB7QGxpbmsgU2tlbGV0b24udXBkYXRlV29ybGRUcmFuc2Zvcm19IGJlZm9yZVxuXHQgKiB1c2luZyB0aGUgYXBwbGllZCBsb2NhbCB0cmFuc2Zvcm0uICovXG5cdHB1YmxpYyB2YWxpZGF0ZUxvY2FsVHJhbnNmb3JtIChza2VsZXRvbjogU2tlbGV0b24pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2NhbCA9PT0gc2tlbGV0b24uX3VwZGF0ZSkgdGhpcy51cGRhdGVMb2NhbFRyYW5zZm9ybShza2VsZXRvbik7XG5cdH1cblxuXHRtb2RpZnlMb2NhbCAoc2tlbGV0b246IFNrZWxldG9uKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubG9jYWwgPT09IHNrZWxldG9uLl91cGRhdGUpIHRoaXMudXBkYXRlTG9jYWxUcmFuc2Zvcm0oc2tlbGV0b24pO1xuXHRcdHRoaXMud29ybGQgPSAwO1xuXHRcdHRoaXMucmVzZXRXb3JsZChza2VsZXRvbi5fdXBkYXRlKTtcblx0fVxuXG5cdG1vZGlmeVdvcmxkICh1cGRhdGU6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMubG9jYWwgPSB1cGRhdGU7XG5cdFx0dGhpcy53b3JsZCA9IHVwZGF0ZTtcblx0XHR0aGlzLnJlc2V0V29ybGQodXBkYXRlKTtcblx0fVxuXG5cdHByaXZhdGUgcmVzZXRXb3JsZCAodXBkYXRlOiBudW1iZXIpOiB2b2lkIHtcblx0XHRjb25zdCBjaGlsZHJlbiA9IHRoaXMuYm9uZS5jaGlsZHJlbjtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXS5hcHBsaWVkUG9zZTtcblx0XHRcdGlmIChjaGlsZC53b3JsZCA9PT0gdXBkYXRlKSB7XG5cdFx0XHRcdGNoaWxkLndvcmxkID0gMDtcblx0XHRcdFx0Y2hpbGQubG9jYWwgPSAwO1xuXHRcdFx0XHRjaGlsZC5yZXNldFdvcmxkKHVwZGF0ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqIFRoZSB3b3JsZCByb3RhdGlvbiBmb3IgdGhlIFggYXhpcywgY2FsY3VsYXRlZCB1c2luZyB7QGxpbmsgYX0gYW5kIHtAbGluayBjfS4gVGhpcyBpcyB0aGUgZGlyZWN0aW9uIHRoZSBib25lIGlzXG5cdCAqIHBvaW50aW5nLiAqL1xuXHRwdWJsaWMgZ2V0V29ybGRSb3RhdGlvblggKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5hdGFuMkRlZyh0aGlzLmMsIHRoaXMuYSk7XG5cdH1cblxuXHQvKiogVGhlIHdvcmxkIHJvdGF0aW9uIGZvciB0aGUgWSBheGlzLCBjYWxjdWxhdGVkIHVzaW5nIHtAbGluayBifSBhbmQge0BsaW5rIGR9LiAqL1xuXHRwdWJsaWMgZ2V0V29ybGRSb3RhdGlvblkgKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5hdGFuMkRlZyh0aGlzLmQsIHRoaXMuYik7XG5cdH1cblxuXHQvKiogVGhlIG1hZ25pdHVkZSAoYWx3YXlzIHBvc2l0aXZlKSBvZiB0aGUgd29ybGQgc2NhbGUgWCwgY2FsY3VsYXRlZCB1c2luZyB7QGxpbmsgYX0gYW5kIHtAbGluayBjfS4gKi9cblx0cHVibGljIGdldFdvcmxkU2NhbGVYICgpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnNxcnQodGhpcy5hICogdGhpcy5hICsgdGhpcy5jICogdGhpcy5jKTtcblx0fVxuXG5cdC8qKiBUaGUgbWFnbml0dWRlIChhbHdheXMgcG9zaXRpdmUpIG9mIHRoZSB3b3JsZCBzY2FsZSBZLCBjYWxjdWxhdGVkIHVzaW5nIHtAbGluayBifSBhbmQge0BsaW5rIGR9LiAqL1xuXHRwdWJsaWMgZ2V0V29ybGRTY2FsZVkgKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGguc3FydCh0aGlzLmIgKiB0aGlzLmIgKyB0aGlzLmQgKiB0aGlzLmQpO1xuXHR9XG5cblx0Ly8gcHVibGljIE1hdHJpeDMgZ2V0V29ybGRUcmFuc2Zvcm0gKE1hdHJpeDMgd29ybGRUcmFuc2Zvcm0pIHtcblx0Ly8gXHRpZiAod29ybGRUcmFuc2Zvcm0gPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihcIndvcmxkVHJhbnNmb3JtIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0Ly8gXHRmbG9hdFtdIHZhbCA9IHdvcmxkVHJhbnNmb3JtLnZhbDtcblx0Ly8gXHR2YWxbTTAwXSA9IGE7XG5cdC8vIFx0dmFsW00wMV0gPSBiO1xuXHQvLyBcdHZhbFtNMTBdID0gYztcblx0Ly8gXHR2YWxbTTExXSA9IGQ7XG5cdC8vIFx0dmFsW00wMl0gPSB3b3JsZFg7XG5cdC8vIFx0dmFsW00xMl0gPSB3b3JsZFk7XG5cdC8vIFx0dmFsW00yMF0gPSAwO1xuXHQvLyBcdHZhbFtNMjFdID0gMDtcblx0Ly8gXHR2YWxbTTIyXSA9IDE7XG5cdC8vIFx0cmV0dXJuIHdvcmxkVHJhbnNmb3JtO1xuXHQvLyB9XG5cblx0LyoqIFRyYW5zZm9ybXMgYSBwb2ludCBmcm9tIHdvcmxkIGNvb3JkaW5hdGVzIHRvIHRoZSBib25lJ3MgbG9jYWwgY29vcmRpbmF0ZXMuICovXG5cdHB1YmxpYyB3b3JsZFRvTG9jYWwgKHdvcmxkOiBWZWN0b3IyKTogVmVjdG9yMiB7XG5cdFx0aWYgKHdvcmxkID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIndvcmxkIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBkZXQgPSB0aGlzLmEgKiB0aGlzLmQgLSB0aGlzLmIgKiB0aGlzLmM7XG5cdFx0Y29uc3QgeCA9IHdvcmxkLnggLSB0aGlzLndvcmxkWCwgeSA9IHdvcmxkLnkgLSB0aGlzLndvcmxkWTtcblx0XHR3b3JsZC54ID0gKHggKiB0aGlzLmQgLSB5ICogdGhpcy5iKSAvIGRldDtcblx0XHR3b3JsZC55ID0gKHkgKiB0aGlzLmEgLSB4ICogdGhpcy5jKSAvIGRldDtcblx0XHRyZXR1cm4gd29ybGQ7XG5cdH1cblxuXHQvKiogVHJhbnNmb3JtcyBhIHBvaW50IGZyb20gdGhlIGJvbmUncyBsb2NhbCBjb29yZGluYXRlcyB0byB3b3JsZCBjb29yZGluYXRlcy4gKi9cblx0cHVibGljIGxvY2FsVG9Xb3JsZCAobG9jYWw6IFZlY3RvcjIpOiBWZWN0b3IyIHtcblx0XHRpZiAobG9jYWwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwibG9jYWwgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGNvbnN0IHggPSBsb2NhbC54LCB5ID0gbG9jYWwueTtcblx0XHRsb2NhbC54ID0geCAqIHRoaXMuYSArIHkgKiB0aGlzLmIgKyB0aGlzLndvcmxkWDtcblx0XHRsb2NhbC55ID0geCAqIHRoaXMuYyArIHkgKiB0aGlzLmQgKyB0aGlzLndvcmxkWTtcblx0XHRyZXR1cm4gbG9jYWw7XG5cdH1cblxuXHQvKiogVHJhbnNmb3JtcyBhIHBvaW50IGZyb20gd29ybGQgY29vcmRpbmF0ZXMgdG8gdGhlIHBhcmVudCBib25lJ3MgbG9jYWwgY29vcmRpbmF0ZXMuICovXG5cdHB1YmxpYyB3b3JsZFRvUGFyZW50ICh3b3JsZDogVmVjdG9yMik6IFZlY3RvcjIge1xuXHRcdGlmICh3b3JsZCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ3b3JsZCBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMuYm9uZS5wYXJlbnQgPT0gbnVsbCA/IHdvcmxkIDogdGhpcy5ib25lLnBhcmVudC5hcHBsaWVkUG9zZS53b3JsZFRvTG9jYWwod29ybGQpO1xuXHR9XG5cblx0LyoqIFRyYW5zZm9ybXMgYSBwb2ludCBmcm9tIHRoZSBwYXJlbnQgYm9uZSdzIGNvb3JkaW5hdGVzIHRvIHdvcmxkIGNvb3JkaW5hdGVzLiAqL1xuXHRwdWJsaWMgcGFyZW50VG9Xb3JsZCAod29ybGQ6IFZlY3RvcjIpOiBWZWN0b3IyIHtcblx0XHRpZiAod29ybGQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwid29ybGQgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLmJvbmUucGFyZW50ID09IG51bGwgPyB3b3JsZCA6IHRoaXMuYm9uZS5wYXJlbnQuYXBwbGllZFBvc2UubG9jYWxUb1dvcmxkKHdvcmxkKTtcblx0fVxuXG5cdC8qKiBUcmFuc2Zvcm1zIGEgd29ybGQgcm90YXRpb24gdG8gYSBsb2NhbCByb3RhdGlvbi4gKi9cblx0cHVibGljIHdvcmxkVG9Mb2NhbFJvdGF0aW9uICh3b3JsZFJvdGF0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHdvcmxkUm90YXRpb24gKj0gTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRjb25zdCBzaW4gPSBNYXRoLnNpbih3b3JsZFJvdGF0aW9uKSwgY29zID0gTWF0aC5jb3Mod29ybGRSb3RhdGlvbik7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5hdGFuMkRlZyh0aGlzLmEgKiBzaW4gLSB0aGlzLmMgKiBjb3MsIHRoaXMuZCAqIGNvcyAtIHRoaXMuYiAqIHNpbikgKyB0aGlzLnJvdGF0aW9uIC0gdGhpcy5zaGVhclg7XG5cdH1cblxuXHQvKiogVHJhbnNmb3JtcyBhIGxvY2FsIHJvdGF0aW9uIHRvIGEgd29ybGQgcm90YXRpb24uICovXG5cdGxvY2FsVG9Xb3JsZFJvdGF0aW9uIChsb2NhbFJvdGF0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdGxvY2FsUm90YXRpb24gPSAobG9jYWxSb3RhdGlvbiAtIHRoaXMucm90YXRpb24gLSB0aGlzLnNoZWFyWCkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdGNvbnN0IHNpbiA9IE1hdGguc2luKGxvY2FsUm90YXRpb24pLCBjb3MgPSBNYXRoLmNvcyhsb2NhbFJvdGF0aW9uKTtcblx0XHRyZXR1cm4gTWF0aFV0aWxzLmF0YW4yRGVnKGNvcyAqIHRoaXMuYyArIHNpbiAqIHRoaXMuZCwgY29zICogdGhpcy5hICsgc2luICogdGhpcy5iKTtcblx0fVxuXG5cdC8qKiBSb3RhdGVzIHRoZSB3b3JsZCB0cmFuc2Zvcm0gdGhlIHNwZWNpZmllZCBhbW91bnQuICovXG5cdHJvdGF0ZVdvcmxkIChkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRkZWdyZWVzICo9IE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0Y29uc3Qgc2luID0gTWF0aC5zaW4oZGVncmVlcyksIGNvcyA9IE1hdGguY29zKGRlZ3JlZXMpO1xuXHRcdGNvbnN0IHJhID0gdGhpcy5hLCByYiA9IHRoaXMuYjtcblx0XHR0aGlzLmEgPSBjb3MgKiByYSAtIHNpbiAqIHRoaXMuYztcblx0XHR0aGlzLmIgPSBjb3MgKiByYiAtIHNpbiAqIHRoaXMuZDtcblx0XHR0aGlzLmMgPSBzaW4gKiByYSArIGNvcyAqIHRoaXMuYztcblx0XHR0aGlzLmQgPSBzaW4gKiByYiArIGNvcyAqIHRoaXMuZDtcblx0fVxufVxuIl19
|
|
458
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9uZVBvc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQm9uZVBvc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLeEMsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFFckQ7Ozs7Ozs7O3FEQVFxRDtBQUNyRCxNQUFNLE9BQU8sUUFBUTtJQUNwQixJQUFJLENBQVE7SUFFWiwrQkFBK0I7SUFDL0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVOLCtCQUErQjtJQUMvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sd0RBQXdEO0lBQ3hELFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFYix3QkFBd0I7SUFDeEIsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLHdCQUF3QjtJQUN4QixNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRVgsd0JBQXdCO0lBQ3hCLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFWCx3QkFBd0I7SUFDeEIsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRXpCLDJEQUEyRDtJQUMzRCxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sMkRBQTJEO0lBQzNELENBQUMsR0FBRyxDQUFDLENBQUM7SUFFTiwyREFBMkQ7SUFDM0QsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVOLDJEQUEyRDtJQUMzRCxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRU4sdUZBQXVGO0lBQ3ZGLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFWCx1RkFBdUY7SUFDdkYsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRVYsR0FBRyxDQUFFLElBQWM7UUFDbEIsSUFBSSxJQUFJ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cEMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPO1FBQ1IsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUM1QyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFeEQsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDckIs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LENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU07WUFDUCxDQUFDO1lBQ0QsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEtBQUssT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDN0UsTUFBTSxDQUFDLEdBQUcsUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNyQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ1IsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDUixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdkYsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNULEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDVixDQUFDO2dCQUNELE1BQU0sRUFBRSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNyQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM1QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDakMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQ2pDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDakMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDbEMsTUFBTTtZQUNQLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7Ozs7O2lJQU82SDtJQUN0SCxvQkFBb0IsQ0FBRSxRQUFrQjtRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUU5QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUMxQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsT0FBTztRQUNSLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDNUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDekUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFM0IsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsS0FBSyxPQUFPLENBQUMsTUFBTTtnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUs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QztRQUNuRSxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELFdBQVcsQ0FBRSxPQUFlO1FBQzNCLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEJvbmUgfSBmcm9tIFwiLi9Cb25lLmpzXCI7XG5pbXBvcnQgeyBJbmhlcml0IH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgUGh5c2ljcyB9IGZyb20gXCIuL1BoeXNpY3MuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9zZSB9IGZyb20gXCIuL1Bvc2UuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBVcGRhdGUgfSBmcm9tIFwiLi9VcGRhdGUuanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscywgdHlwZSBWZWN0b3IyIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFRoZSBhcHBsaWVkIGxvY2FsIHBvc2UgYW5kIHdvcmxkIHRyYW5zZm9ybSBmb3IgYSBib25lLiBUaGlzIGlzIHRoZSB7QGxpbmsgQm9uZS5nZXRQb3NlfSB3aXRoIGNvbnN0cmFpbnRzIGFwcGxpZWQgYW5kIHRoZVxuICogd29ybGQgdHJhbnNmb3JtIGNvbXB1dGVkIGJ5IHtAbGluayBTa2VsZXRvbi51cGRhdGVXb3JsZFRyYW5zZm9ybX0gYW5kIHtAbGluayB1cGRhdGVXb3JsZFRyYW5zZm9ybX0uXG4gKlxuICogSWYgdGhlIHdvcmxkIHRyYW5zZm9ybSBpcyBjaGFuZ2VkLCBjYWxsIHtAbGluayB1cGRhdGVMb2NhbFRyYW5zZm9ybX0gYmVmb3JlIHVzaW5nIHRoZSBsb2NhbCB0cmFuc2Zvcm0uIFRoZSBsb2NhbFxuICogdHJhbnNmb3JtIG1heSBiZSBuZWVkZWQgYnkgb3RoZXIgY29kZSAoZWcgdG8gYXBwbHkgYW5vdGhlciBjb25zdHJhaW50KS5cbiAqXG4gKiBBZnRlciBjaGFuZ2luZyB0aGUgd29ybGQgdHJhbnNmb3JtLCBjYWxsIHtAbGluayB1cGRhdGVXb3JsZFRyYW5zZm9ybX0gb24gZXZlcnkgZGVzY2VuZGFudCBib25lLiBJdCBtYXkgYmUgbW9yZVxuICogY29udmVuaWVudCB0byBtb2RpZnkgdGhlIGxvY2FsIHRyYW5zZm9ybSBpbnN0ZWFkLCB0aGVuIGNhbGwge0BsaW5rIFNrZWxldG9uLnVwZGF0ZVdvcmxkVHJhbnNmb3JtfSB0byB1cGRhdGUgdGhlIHdvcmxkXG4gKiB0cmFuc2Zvcm1zIGZvciBhbGwgYm9uZXMgYW5kIGFwcGx5IGNvbnN0cmFpbnRzLiAqL1xuZXhwb3J0IGNsYXNzIEJvbmVQb3NlIGltcGxlbWVudHMgUG9zZTxCb25lUG9zZT4sIFVwZGF0ZSB7XG5cdGJvbmUhOiBCb25lO1xuXG5cdC8qKiBUaGUgbG9jYWwgeCB0cmFuc2xhdGlvbi4gKi9cblx0eCA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCB5IHRyYW5zbGF0aW9uLiAqL1xuXHR5ID0gMDtcblxuXHQvKiogVGhlIGxvY2FsIHJvdGF0aW9uIGluIGRlZ3JlZXMsIGNvdW50ZXIgY2xvY2t3aXNlLiAqL1xuXHRyb3RhdGlvbiA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzY2FsZVguICovXG5cdHNjYWxlWCA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzY2FsZVkuICovXG5cdHNjYWxlWSA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzaGVhclguICovXG5cdHNoZWFyWCA9IDA7XG5cblx0LyoqIFRoZSBsb2NhbCBzaGVhclkuICovXG5cdHNoZWFyWSA9IDA7XG5cblx0aW5oZXJpdCA9IEluaGVyaXQuTm9ybWFsO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB4LWF4aXMgeCBjb21wb25lbnQuICovXG5cdGEgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB5LWF4aXMgeCBjb21wb25lbnQuICovXG5cdGIgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB4LWF4aXMgeSBjb21wb25lbnQuICovXG5cdGMgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgdHJhbnNmb3JtIGBbYSBiXVtjIGRdYCB5LWF4aXMgeSBjb21wb25lbnQuICovXG5cdGQgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgWCBwb3NpdGlvbi4gSWYgY2hhbmdlZCwge0BsaW5rIHVwZGF0ZUxvY2FsVHJhbnNmb3JtfSBzaG91bGQgYmUgY2FsbGVkLiAqL1xuXHR3b3JsZFkgPSAwO1xuXG5cdC8qKiBUaGUgd29ybGQgWSBwb3NpdGlvbi4gSWYgY2hhbmdlZCwge0BsaW5rIHVwZGF0ZUxvY2FsVHJhbnNmb3JtfSBzaG91bGQgYmUgY2FsbGVkLiAqL1xuXHR3b3JsZFggPSAwO1xuXG5cdHdvcmxkID0gMDtcblx0bG9jYWwgPSAwO1xuXG5cdHNldCAocG9zZTogQm9uZVBvc2UpOiB2b2lkIHtcblx0XHRpZiAocG9zZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJwb3NlIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLnggPSBwb3NlLng7XG5cdFx0dGhpcy55ID0gcG9zZS55O1xuXHRcdHRoaXMucm90YXRpb24gPSBwb3NlLnJvdGF0aW9uO1xuXHRcdHRoaXMuc2NhbGVYID0gcG9zZS5zY2FsZVg7XG5cdFx0dGhpcy5zY2FsZVkgPSBwb3NlLnNjYWxlWTtcblx0XHR0aGlzLnNoZWFyWCA9IHBvc2Uuc2hlYXJYO1xuXHRcdHRoaXMuc2hlYXJZID0gcG9zZS5zaGVhclk7XG5cdFx0dGhpcy5pbmhlcml0ID0gcG9zZS5pbmhlcml0O1xuXHR9XG5cblx0c2V0UG9zaXRpb24gKHg6IG51bWJlciwgeTogbnVtYmVyKTogdm9pZCB7XG5cdFx0dGhpcy54ID0geDtcblx0XHR0aGlzLnkgPSB5O1xuXHR9XG5cblx0c2V0U2NhbGUgKHNjYWxlWDogbnVtYmVyLCBzY2FsZVk6IG51bWJlcik6IHZvaWQ7XG5cdHNldFNjYWxlIChzY2FsZTogbnVtYmVyKTogdm9pZDtcblx0c2V0U2NhbGUgKHNjYWxlT3JYOiBudW1iZXIsIHNjYWxlWT86IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMuc2NhbGVYID0gc2NhbGVPclg7XG5cdFx0dGhpcy5zY2FsZVkgPSBzY2FsZVkgPT09IHVuZGVmaW5lZCA/IHNjYWxlT3JYIDogc2NhbGVZO1xuXHR9XG5cblx0LyoqIERldGVybWluZXMgaG93IHBhcmVudCB3b3JsZCB0cmFuc2Zvcm1zIGFmZmVjdCB0aGlzIGJvbmUuICovXG5cdHB1YmxpYyBnZXRJbmhlcml0ICgpOiBJbmhlcml0IHtcblx0XHRyZXR1cm4gdGhpcy5pbmhlcml0O1xuXHR9XG5cblx0cHVibGljIHNldEluaGVyaXQgKGluaGVyaXQ6IEluaGVyaXQpOiB2b2lkIHtcblx0XHRpZiAoaW5oZXJpdCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJpbmhlcml0IGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLmluaGVyaXQgPSBpbmhlcml0O1xuXHR9XG5cblx0LyoqIENhbGxlZCBieSB7QGxpbmsgU2tlbGV0b24udXBkYXRlQ2FjaGV9IHRvIGNvbXB1dGUgdGhlIHdvcmxkIHRyYW5zZm9ybSwgaWYgbmVlZGVkLiAqL1xuXHRwdWJsaWMgdXBkYXRlIChza2VsZXRvbjogU2tlbGV0b24sIHBoeXNpY3M6IFBoeXNpY3MpOiB2b2lkIHtcblx0XHRpZiAodGhpcy53b3JsZCAhPT0gc2tlbGV0b24uX3VwZGF0ZSkgdGhpcy51cGRhdGVXb3JsZFRyYW5zZm9ybShza2VsZXRvbik7XG5cdH1cblxuXHQvKiogQ29tcHV0ZXMgdGhlIHdvcmxkIHRyYW5zZm9ybSB1c2luZyB0aGUgcGFyZW50IGJvbmUncyB3b3JsZCB0cmFuc2Zvcm0gYW5kIHRoaXMgYXBwbGllZCBsb2NhbCBwb3NlLiBDaGlsZCBib25lcyBhcmUgbm90XG5cdCAqIHVwZGF0ZWQuXG5cdCAqXG5cdCAqIFNlZSA8YSBocmVmPVwiaHR0cHM6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1ydW50aW1lLXNrZWxldG9ucyNXb3JsZC10cmFuc2Zvcm1zXCI+V29ybGQgdHJhbnNmb3JtczwvYT4gaW4gdGhlIFNwaW5lXG5cdCAqIFJ1bnRpbWVzIEd1aWRlLiAqL1xuXHR1cGRhdGVXb3JsZFRyYW5zZm9ybSAoc2tlbGV0b246IFNrZWxldG9uKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubG9jYWwgPT09IHNrZWxldG9uLl91cGRhdGUpXG5cdFx0XHR0aGlzLnVwZGF0ZUxvY2FsVHJhbnNmb3JtKHNrZWxldG9uKTtcblx0XHRlbHNlXG5cdFx0XHR0aGlzLndvcmxkID0gc2tlbGV0b24uX3VwZGF0ZTtcblxuXHRcdGNvbnN0IHJvdGF0aW9uID0gdGhpcy5yb3RhdGlvbjtcblx0XHRjb25zdCBzY2FsZVggPSB0aGlzLnNjYWxlWDtcblx0XHRjb25zdCBzY2FsZVkgPSB0aGlzLnNjYWxlWTtcblx0XHRjb25zdCBzaGVhclggPSB0aGlzLnNoZWFyWDtcblx0XHRjb25zdCBzaGVhclkgPSB0aGlzLnNoZWFyWTtcblx0XHRpZiAoIXRoaXMuYm9uZS5wYXJlbnQpIHsgLy8gUm9vdCBib25lLlxuXHRcdFx0Y29uc3Qgc3ggPSBza2VsZXRvbi5zY2FsZVgsIHN5ID0gc2tlbGV0b24uc2NhbGVZO1xuXHRcdFx0Y29uc3QgcnggPSAocm90YXRpb24gKyBzaGVhclgpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdGNvbnN0IHJ5ID0gKHJvdGF0aW9uICsgOTAgKyBzaGVhclkpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdHRoaXMuYSA9IE1hdGguY29zKHJ4KSAqIHNjYWxlWCAqIHN4O1xuXHRcdFx0dGhpcy5iID0gTWF0aC5jb3MocnkpICogc2NhbGVZICogc3g7XG5cdFx0XHR0aGlzLmMgPSBNYXRoLnNpbihyeCkgKiBzY2FsZVggKiBzeTtcblx0XHRcdHRoaXMuZCA9IE1hdGguc2luKHJ5KSAqIHNjYWxlWSAqIHN5O1xuXHRcdFx0dGhpcy53b3JsZFggPSB0aGlzLnggKiBzeCArIHNrZWxldG9uLng7XG5cdFx0XHR0aGlzLndvcmxkWSA9IHRoaXMueSAqIHN5ICsgc2tlbGV0b24ueTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBwYXJlbnQgPSB0aGlzLmJvbmUucGFyZW50LmFwcGxpZWRQb3NlO1xuXHRcdGxldCBwYSA9IHBhcmVudC5hLCBwYiA9IHBhcmVudC5iLCBwYyA9IHBhcmVudC5jLCBwZCA9IHBhcmVudC5kO1xuXHRcdHRoaXMud29ybGRYID0gcGEgKiB0aGlzLnggKyBwYiAqIHRoaXMueSArIHBhcmVudC53b3JsZFg7XG5cdFx0dGhpcy53b3JsZFkgPSBwYyAqIHRoaXMueCArIHBkICogdGhpcy55ICsgcGFyZW50LndvcmxkWTtcblxuXHRcdHN3aXRjaCAodGhpcy5pbmhlcml0KSB7XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9ybWFsOiB7XG5cdFx0XHRcdGNvbnN0IHJ4ID0gKHJvdGF0aW9uICsgc2hlYXJYKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IHJ5ID0gKHJvdGF0aW9uICsgOTAgKyBzaGVhclkpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdFx0Y29uc3QgbGEgPSBNYXRoLmNvcyhyeCkgKiBzY2FsZVg7XG5cdFx0XHRcdGNvbnN0IGxiID0gTWF0aC5jb3MocnkpICogc2NhbGVZO1xuXHRcdFx0XHRjb25zdCBsYyA9IE1hdGguc2luKHJ4KSAqIHNjYWxlWDtcblx0XHRcdFx0Y29uc3QgbGQgPSBNYXRoLnNpbihyeSkgKiBzY2FsZVk7XG5cdFx0XHRcdHRoaXMuYSA9IHBhICogbGEgKyBwYiAqIGxjO1xuXHRcdFx0XHR0aGlzLmIgPSBwYSAqIGxiICsgcGIgKiBsZDtcblx0XHRcdFx0dGhpcy5jID0gcGMgKiBsYSArIHBkICogbGM7XG5cdFx0XHRcdHRoaXMuZCA9IHBjICogbGIgKyBwZCAqIGxkO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuT25seVRyYW5zbGF0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdFx0Y29uc3QgcnggPSAocm90YXRpb24gKyBzaGVhclgpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRcdFx0Y29uc3QgcnkgPSAocm90YXRpb24gKyA5MCArIHNoZWFyWSkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdFx0XHR0aGlzLmEgPSBNYXRoLmNvcyhyeCkgKiBzY2FsZVggKiBzeDtcblx0XHRcdFx0dGhpcy5iID0gTWF0aC5jb3MocnkpICogc2NhbGVZICogc3g7XG5cdFx0XHRcdHRoaXMuYyA9IE1hdGguc2luKHJ4KSAqIHNjYWxlWCAqIHN5O1xuXHRcdFx0XHR0aGlzLmQgPSBNYXRoLnNpbihyeSkgKiBzY2FsZVkgKiBzeTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9Sb3RhdGlvbk9yUmVmbGVjdGlvbjoge1xuXHRcdFx0XHRjb25zdCBzeCA9IHNrZWxldG9uLnNjYWxlWCwgc3kgPSBza2VsZXRvbi5zY2FsZVksIHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0XHRwYSAqPSBzeGk7XG5cdFx0XHRcdHBjICo9IHN5aTtcblx0XHRcdFx0bGV0IHMgPSBwYSAqIHBhICsgcGMgKiBwYztcblx0XHRcdFx0bGV0IHIgPSAwO1xuXHRcdFx0XHRpZiAocyA+IE1hdGhVdGlscy5lcHNpbG9uMikge1xuXHRcdFx0XHRcdHMgPSBNYXRoLmFicyhwYSAqIHBkICogc3lpIC0gcGIgKiBzeGkgKiBwYykgLyBzO1xuXHRcdFx0XHRcdHBiID0gcGMgKiBzO1xuXHRcdFx0XHRcdHBkID0gcGEgKiBzO1xuXHRcdFx0XHRcdHIgPSByb3RhdGlvbiAtIE1hdGhVdGlscy5hdGFuMkRlZyhwYywgcGEpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHBhID0gMDtcblx0XHRcdFx0XHRwYyA9IDA7XG5cdFx0XHRcdFx0ciA9IHJvdGF0aW9uIC0gOTAgKyBNYXRoVXRpbHMuYXRhbjJEZWcocGQsIHBiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByeCA9IChyICsgc2hlYXJYKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IHJ5ID0gKHIgKyBzaGVhclkgKyA5MCkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdFx0XHRjb25zdCBsYSA9IE1hdGguY29zKHJ4KSAqIHNjYWxlWDtcblx0XHRcdFx0Y29uc3QgbGIgPSBNYXRoLmNvcyhyeSkgKiBzY2FsZVk7XG5cdFx0XHRcdGNvbnN0IGxjID0gTWF0aC5zaW4ocngpICogc2NhbGVYO1xuXHRcdFx0XHRjb25zdCBsZCA9IE1hdGguc2luKHJ5KSAqIHNjYWxlWTtcblx0XHRcdFx0dGhpcy5hID0gKHBhICogbGEgLSBwYiAqIGxjKSAqIHN4O1xuXHRcdFx0XHR0aGlzLmIgPSAocGEgKiBsYiAtIHBiICogbGQpICogc3g7XG5cdFx0XHRcdHRoaXMuYyA9IChwYyAqIGxhICsgcGQgKiBsYykgKiBzeTtcblx0XHRcdFx0dGhpcy5kID0gKHBjICogbGIgKyBwZCAqIGxkKSAqIHN5O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGNhc2UgSW5oZXJpdC5Ob1NjYWxlOlxuXHRcdFx0Y2FzZSBJbmhlcml0Lk5vU2NhbGVPclJlZmxlY3Rpb246IHtcblx0XHRcdFx0Y29uc3Qgc3ggPSBza2VsZXRvbi5zY2FsZVgsIHN5ID0gc2tlbGV0b24uc2NhbGVZLCBzeGkgPSAxIC8gc3gsIHN5aSA9IDEgLyBzeTtcblx0XHRcdFx0Y29uc3QgciA9IHJvdGF0aW9uICogTWF0aFV0aWxzLmRlZ1JhZCwgY29zID0gTWF0aC5jb3MociksIHNpbiA9IE1hdGguc2luKHIpO1xuXHRcdFx0XHRsZXQgemEgPSAocGEgKiBjb3MgKyBwYiAqIHNpbikgKiBzeGk7XG5cdFx0XHRcdGxldCB6YyA9IChwYyAqIGNvcyArIHBkICogc2luKSAqIHN5aTtcblx0XHRcdFx0Y29uc3QgcyA9IDEgLyBNYXRoLnNxcnQoemEgKiB6YSArIHpjICogemMpO1xuXHRcdFx0XHR6YSAqPSBzO1xuXHRcdFx0XHR6YyAqPSBzO1xuXHRcdFx0XHRsZXQgemIgPSAtemMsIHpkID0gemE7XG5cdFx0XHRcdGlmICh0aGlzLmluaGVyaXQgPT09IEluaGVyaXQuTm9TY2FsZSAmJiBwYSAqIHBkIC0gcGIgKiBwYyA8IDAgIT09IChzeCA8IDAgIT09IHN5IDwgMCkpIHtcblx0XHRcdFx0XHR6YiA9IC16Yjtcblx0XHRcdFx0XHR6ZCA9IC16ZDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByeCA9IHNoZWFyWCAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IHJ5ID0gKDkwICsgc2hlYXJZKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IGxhID0gTWF0aC5jb3MocngpICogc2NhbGVYO1xuXHRcdFx0XHRjb25zdCBsYiA9IE1hdGguY29zKHJ5KSAqIHNjYWxlWTtcblx0XHRcdFx0Y29uc3QgbGMgPSBNYXRoLnNpbihyeCkgKiBzY2FsZVg7XG5cdFx0XHRcdGNvbnN0IGxkID0gTWF0aC5zaW4ocnkpICogc2NhbGVZO1xuXHRcdFx0XHR0aGlzLmEgPSAoemEgKiBsYSArIHpiICogbGMpICogc3g7XG5cdFx0XHRcdHRoaXMuYiA9ICh6YSAqIGxiICsgemIgKiBsZCkgKiBzeDtcblx0XHRcdFx0dGhpcy5jID0gKHpjICogbGEgKyB6ZCAqIGxjKSAqIHN5O1xuXHRcdFx0XHR0aGlzLmQgPSAoemMgKiBsYiArIHpkICogbGQpICogc3k7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKiBDb21wdXRlcyB0aGUgbG9jYWwgdHJhbnNmb3JtIHZhbHVlcyBmcm9tIHRoZSB3b3JsZCB0cmFuc2Zvcm0uXG5cdCAqXG5cdCAqIElmIHRoZSB3b3JsZCB0cmFuc2Zvcm0gaXMgbW9kaWZpZWQgKGJ5IGEgY29uc3RyYWludCwge0BsaW5rIHJvdGF0ZVdvcmxkfSwgZXRjKSB0aGVuIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgc29cblx0ICogdGhlIGxvY2FsIHRyYW5zZm9ybSBtYXRjaGVzIHRoZSB3b3JsZCB0cmFuc2Zvcm0uIFRoZSBsb2NhbCB0cmFuc2Zvcm0gbWF5IGJlIG5lZWRlZCBieSBvdGhlciBjb2RlIChlZyB0byBhcHBseSBhbm90aGVyXG5cdCAqIGNvbnN0cmFpbnQpLlxuXHQgKlxuXHQgKiBTb21lIGluZm9ybWF0aW9uIGlzIGFtYmlndW91cyBpbiB0aGUgd29ybGQgdHJhbnNmb3JtLCBzdWNoIGFzIC0xLC0xIHNjYWxlIHZlcnN1cyAxODAgcm90YXRpb24uIFRoZSBsb2NhbCB0cmFuc2Zvcm0gYWZ0ZXJcblx0ICogY2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIHRoZSBsb2NhbCB0cmFuc2Zvcm0gdXNlZCB0byBjb21wdXRlIHRoZSB3b3JsZCB0cmFuc2Zvcm0sIGJ1dCBtYXkgbm90IGJlIGlkZW50aWNhbC4gKi9cblx0cHVibGljIHVwZGF0ZUxvY2FsVHJhbnNmb3JtIChza2VsZXRvbjogU2tlbGV0b24pOiB2b2lkIHtcblx0XHR0aGlzLmxvY2FsID0gMDtcblx0XHR0aGlzLndvcmxkID0gc2tlbGV0b24uX3VwZGF0ZTtcblxuXHRcdGNvbnN0IHN4ID0gc2tlbGV0b24uc2NhbGVYLCBzeSA9IHNrZWxldG9uLnNjYWxlWTtcblx0XHRpZiAoIXRoaXMuYm9uZS5wYXJlbnQpIHtcblx0XHRcdGNvbnN0IHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0dGhpcy54ID0gKHRoaXMud29ybGRYIC0gc2tlbGV0b24ueCkgKiBzeGk7XG5cdFx0XHR0aGlzLnkgPSAodGhpcy53b3JsZFkgLSBza2VsZXRvbi55KSAqIHN5aTtcblx0XHRcdHRoaXMuc2V0NSh0aGlzLmEgKiBzeGksIHRoaXMuYiAqIHN4aSwgdGhpcy5jICogc3lpLCB0aGlzLmQgKiBzeWksIDApO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBhcmVudCA9IHRoaXMuYm9uZS5wYXJlbnQuYXBwbGllZFBvc2U7XG5cdFx0bGV0IHBhID0gcGFyZW50LmEsIHBiID0gcGFyZW50LmIsIHBjID0gcGFyZW50LmMsIHBkID0gcGFyZW50LmQ7XG5cdFx0Y29uc3QgcGFkID0gcGEgKiBwZCAtIHBiICogcGMsIHBpZCA9IDEgLyAocGEgKiBwZCAtIHBiICogcGMpO1xuXHRcdGNvbnN0IGlhID0gcGQgKiBwaWQsIGliID0gcGIgKiBwaWQsIGljID0gcGMgKiBwaWQsIGlkID0gcGEgKiBwaWQ7XG5cdFx0Y29uc3QgZHggPSB0aGlzLndvcmxkWCAtIHBhcmVudC53b3JsZFgsIGR5ID0gdGhpcy53b3JsZFkgLSBwYXJlbnQud29ybGRZO1xuXHRcdHRoaXMueCA9IGR4ICogaWEgLSBkeSAqIGliO1xuXHRcdHRoaXMueSA9IGR5ICogaWQgLSBkeCAqIGljO1xuXG5cdFx0c3dpdGNoICh0aGlzLmluaGVyaXQpIHtcblx0XHRcdGNhc2UgSW5oZXJpdC5Ob3JtYWw6IHRoaXMuc2V0NShpYSAqIHRoaXMuYSAtIGliICogdGhpcy5jLCBpYSAqIHRoaXMuYiAtIGliICogdGhpcy5kLCBpZCAqIHRoaXMuYyAtIGljICogdGhpcy5hLCBpZCAqIHRoaXMuZCAtIGljICogdGhpcy5iLCAwKTsgYnJlYWs7XG5cdFx0XHRjYXNlIEluaGVyaXQuT25seVRyYW5zbGF0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0XHR0aGlzLnNldDUodGhpcy5hICogc3hpLCB0aGlzLmIgKiBzeGksIHRoaXMuYyAqIHN5aSwgdGhpcy5kICogc3lpLCAwKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9Sb3RhdGlvbk9yUmVmbGVjdGlvbjoge1xuXHRcdFx0XHRjb25zdCBzeGkgPSAxIC8gc3gsIHN5aSA9IDEgLyBzeTtcblx0XHRcdFx0cGEgKj0gc3hpO1xuXHRcdFx0XHRwYyAqPSBzeWk7XG5cdFx0XHRcdGNvbnN0IHdhID0gdGhpcy5hICogc3hpLCB3YiA9IHRoaXMuYiAqIHN4aSwgd2MgPSB0aGlzLmMgKiBzeWksIHdkID0gdGhpcy5kICogc3lpO1xuXHRcdFx0XHRjb25zdCBzID0gMSAvIChwYSAqIHBhICsgcGMgKiBwYyksIGRldCA9IDEgLyBNYXRoLmFicyhwYWQgKiBzeGkgKiBzeWkpO1xuXHRcdFx0XHR0aGlzLnNldDUoKHBhICogd2EgKyBwYyAqIHdjKSAqIHMsIChwYSAqIHdiICsgcGMgKiB3ZCkgKiBzLCAocGEgKiB3YyAtIHBjICogd2EpICogZGV0LCAocGEgKiB3ZCAtIHBjICogd2IpICogZGV0LFxuXHRcdFx0XHRcdE1hdGhVdGlscy5hdGFuMkRlZyhwYywgcGEpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIEluaGVyaXQuTm9TY2FsZTpcblx0XHRcdGNhc2UgSW5oZXJpdC5Ob1NjYWxlT3JSZWZsZWN0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHN4aSA9IDEgLyBzeCwgc3lpID0gMSAvIHN5O1xuXHRcdFx0XHRjb25zdCB3YSA9IHRoaXMuYSAqIHN4aSwgd2IgPSB0aGlzLmIgKiBzeGksIHdjID0gdGhpcy5jICogc3lpLCB3ZCA9IHRoaXMuZCAqIHN5aTtcblx0XHRcdFx0bGV0IHR4ID0gcGQgKiB0aGlzLmEgLSBwYiAqIHRoaXMuYywgdHkgPSBwYSAqIHRoaXMuYyAtIHBjICogdGhpcy5hO1xuXHRcdFx0XHRpZiAocGFkIDwgMCkge1xuXHRcdFx0XHRcdHR4ID0gLXR4O1xuXHRcdFx0XHRcdHR5ID0gLXR5O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxldCByID0gTWF0aFV0aWxzLmF0YW4yRGVnKHR5LCB0eCk7XG5cdFx0XHRcdHRoaXMucm90YXRpb24gPSByO1xuXHRcdFx0XHRyICo9IE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0XHRcdGNvbnN0IGNvcyA9IE1hdGguY29zKHIpLCBzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0bGV0IHphID0gKHBhICogY29zICsgcGIgKiBzaW4pICogc3hpO1xuXHRcdFx0XHRsZXQgemMgPSAocGMgKiBjb3MgKyBwZCAqIHNpbikgKiBzeWk7XG5cdFx0XHRcdGNvbnN0IHMgPSAxIC8gTWF0aC5zcXJ0KHphICogemEgKyB6YyAqIHpjKTtcblx0XHRcdFx0emEgKj0gcztcblx0XHRcdFx0emMgKj0gcztcblx0XHRcdFx0Y29uc3Qgc2kgPSB0aGlzLmluaGVyaXQgPT09IEluaGVyaXQuTm9TY2FsZSAmJiBwYWQgPCAwICE9PSAoc3ggPCAwICE9PSBzeSA8IDApID8gLTEgOiAxO1xuXHRcdFx0XHR0aGlzLnNldDQoemEgKiB3YSArIHpjICogd2MsIHphICogd2IgKyB6YyAqIHdkLCAoemEgKiB3YyAtIHpjICogd2EpICogc2ksICh6YSAqIHdkIC0gemMgKiB3YikgKiBzaSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzZXQ0IChyYTogbnVtYmVyLCByYjogbnVtYmVyLCByYzogbnVtYmVyLCByZDogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgeCA9IHJhICogcmEgKyByYyAqIHJjLCB5ID0gcmIgKiByYiArIHJkICogcmQ7XG5cdFx0aWYgKHggPiBNYXRoVXRpbHMuZXBzaWxvbjIpIHtcblx0XHRcdHRoaXMuc2hlYXJYID0gTWF0aFV0aWxzLmF0YW4yRGVnKHJjLCByYSk7XG5cdFx0XHR0aGlzLnNjYWxlWCA9IE1hdGguc3FydCh4KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zaGVhclggPSAwO1xuXHRcdFx0dGhpcy5zY2FsZVggPSAwO1xuXHRcdH1cblx0XHR0aGlzLnNjYWxlWSA9IE1hdGguc3FydCh5KTtcblx0XHRpZiAoeSA+IE1hdGhVdGlscy5lcHNpbG9uMikge1xuXHRcdFx0dGhpcy5zaGVhclkgPSBNYXRoVXRpbHMuYXRhbjJEZWcocmQsIHJiKTtcblx0XHRcdGlmIChyYSAqIHJkIC0gcmIgKiByYyA8IDApIHtcblx0XHRcdFx0dGhpcy5zY2FsZVkgPSAtdGhpcy5zY2FsZVk7XG5cdFx0XHRcdHRoaXMuc2hlYXJZICs9IDkwO1xuXHRcdFx0fSBlbHNlXG5cdFx0XHRcdHRoaXMuc2hlYXJZIC09IDkwO1xuXHRcdFx0aWYgKHRoaXMuc2hlYXJZID4gMTgwKVxuXHRcdFx0XHR0aGlzLnNoZWFyWSAtPSAzNjA7XG5cdFx0XHRlbHNlIGlmICh0aGlzLnNoZWFyWSA8PSAtMTgwKSAvL1xuXHRcdFx0XHR0aGlzLnNoZWFyWSArPSAzNjA7XG5cdFx0fSBlbHNlXG5cdFx0XHR0aGlzLnNoZWFyWSA9IDA7XG5cdH1cblxuXHRwcml2YXRlIHNldDUgKHJhOiBudW1iZXIsIHJiOiBudW1iZXIsIHJjOiBudW1iZXIsIHJkOiBudW1iZXIsIHJvOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLnNoZWFyWCA9IDA7XG5cdFx0Y29uc3QgeCA9IHJhICogcmEgKyByYyAqIHJjLCB5ID0gcmIgKiByYiArIHJkICogcmQ7XG5cdFx0aWYgKHggPiBNYXRoVXRpbHMuZXBzaWxvbjIpIHtcblx0XHRcdGNvbnN0IHIgPSBNYXRoVXRpbHMuYXRhbjJEZWcocmMsIHJhKTtcblx0XHRcdHRoaXMucm90YXRpb24gPSByICsgcm87XG5cdFx0XHR0aGlzLnNjYWxlWCA9IE1hdGguc3FydCh4KTtcblx0XHRcdHRoaXMuc2NhbGVZID0gTWF0aC5zcXJ0KHkpO1xuXHRcdFx0aWYgKHkgPiBNYXRoVXRpbHMuZXBzaWxvbjIpIHtcblx0XHRcdFx0dGhpcy5zaGVhclkgPSBNYXRoVXRpbHMuYXRhbjJEZWcocmQsIHJiKTtcblx0XHRcdFx0aWYgKHJhICogcmQgLSByYiAqIHJjIDwgMCkge1xuXHRcdFx0XHRcdHRoaXMuc2NhbGVZID0gLXRoaXMuc2NhbGVZO1xuXHRcdFx0XHRcdHRoaXMuc2hlYXJZICs9IDkwIC0gcjtcblx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0dGhpcy5zaGVhclkgLT0gOTAgKyByO1xuXHRcdFx0XHRpZiAodGhpcy5zaGVhclkgPiAxODApXG5cdFx0XHRcdFx0dGhpcy5zaGVhclkgLT0gMzYwO1xuXHRcdFx0XHRlbHNlIGlmICh0aGlzLnNoZWFyWSA8PSAtMTgwKSAvL1xuXHRcdFx0XHRcdHRoaXMuc2hlYXJZICs9IDM2MDtcblx0XHRcdH0gZWxzZVxuXHRcdFx0XHR0aGlzLnNoZWFyWSA9IDA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2NhbGVYID0gMDtcblx0XHRcdHRoaXMuc2NhbGVZID0gTWF0aC5zcXJ0KHkpO1xuXHRcdFx0dGhpcy5zaGVhclkgPSAwO1xuXHRcdFx0dGhpcy5yb3RhdGlvbiA9IHkgPiBNYXRoVXRpbHMuZXBzaWxvbjIgPyBNYXRoVXRpbHMuYXRhbjJEZWcocmQsIHJiKSAtIDkwICsgcm8gOiBybztcblx0XHR9XG5cdH1cblxuXHQvKiogSWYgdGhlIHdvcmxkIHRyYW5zZm9ybSBoYXMgYmVlbiBtb2RpZmllZCBieSBjb25zdHJhaW50cyBhbmQgdGhlIGxvY2FsIHRyYW5zZm9ybSBubyBsb25nZXIgbWF0Y2hlcyxcblx0ICoge0BsaW5rIHVwZGF0ZUxvY2FsVHJhbnNmb3JtfSBpcyBjYWxsZWQuIENhbGwgdGhpcyBhZnRlciB7QGxpbmsgU2tlbGV0b24udXBkYXRlV29ybGRUcmFuc2Zvcm19IGJlZm9yZVxuXHQgKiB1c2luZyB0aGUgYXBwbGllZCBsb2NhbCB0cmFuc2Zvcm0uICovXG5cdHB1YmxpYyB2YWxpZGF0ZUxvY2FsVHJhbnNmb3JtIChza2VsZXRvbjogU2tlbGV0b24pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2NhbCA9PT0gc2tlbGV0b24uX3VwZGF0ZSkgdGhpcy51cGRhdGVMb2NhbFRyYW5zZm9ybShza2VsZXRvbik7XG5cdH1cblxuXHRtb2RpZnlMb2NhbCAoc2tlbGV0b246IFNrZWxldG9uKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMubG9jYWwgPT09IHNrZWxldG9uLl91cGRhdGUpIHRoaXMudXBkYXRlTG9jYWxUcmFuc2Zvcm0oc2tlbGV0b24pO1xuXHRcdHRoaXMud29ybGQgPSAwO1xuXHRcdHRoaXMucmVzZXRXb3JsZChza2VsZXRvbiwgc2tlbGV0b24uX3VwZGF0ZSk7XG5cdH1cblxuXHRtb2RpZnlXb3JsZCAoc2tlbGV0b246IFNrZWxldG9uKTogdm9pZCB7XG5cdFx0Y29uc3QgdXBkYXRlID0gc2tlbGV0b24uX3VwZGF0ZTtcblx0XHR0aGlzLmxvY2FsID0gdXBkYXRlO1xuXHRcdHRoaXMud29ybGQgPSB1cGRhdGU7XG5cdFx0dGhpcy5yZXNldFdvcmxkKHNrZWxldG9uLCB1cGRhdGUpO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNldFdvcmxkIChza2VsZXRvbjogU2tlbGV0b24sIHVwZGF0ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgY2hpbGRyZW4gPSB0aGlzLmJvbmUuY2hpbGRyZW47XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV0uYXBwbGllZFBvc2U7XG5cdFx0XHRpZiAoY2hpbGQud29ybGQgPT09IHVwZGF0ZSkge1xuXHRcdFx0XHRpZiAoY2hpbGQubG9jYWwgPT09IHVwZGF0ZSkgY2hpbGQudXBkYXRlTG9jYWxUcmFuc2Zvcm0oc2tlbGV0b24pO1xuXHRcdFx0XHRjaGlsZC53b3JsZCA9IDA7XG5cdFx0XHRcdGNoaWxkLnJlc2V0V29ybGQoc2tlbGV0b24sIHVwZGF0ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqIFRoZSB3b3JsZCByb3RhdGlvbiBmb3IgdGhlIFggYXhpcywgY2FsY3VsYXRlZCB1c2luZyB7QGxpbmsgYX0gYW5kIHtAbGluayBjfS4gVGhpcyBpcyB0aGUgZGlyZWN0aW9uIHRoZSBib25lIGlzXG5cdCAqIHBvaW50aW5nLiAqL1xuXHRwdWJsaWMgZ2V0V29ybGRSb3RhdGlvblggKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5hdGFuMkRlZyh0aGlzLmMsIHRoaXMuYSk7XG5cdH1cblxuXHQvKiogVGhlIHdvcmxkIHJvdGF0aW9uIGZvciB0aGUgWSBheGlzLCBjYWxjdWxhdGVkIHVzaW5nIHtAbGluayBifSBhbmQge0BsaW5rIGR9LiAqL1xuXHRwdWJsaWMgZ2V0V29ybGRSb3RhdGlvblkgKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5hdGFuMkRlZyh0aGlzLmQsIHRoaXMuYik7XG5cdH1cblxuXHQvKiogVGhlIG1hZ25pdHVkZSAoYWx3YXlzIHBvc2l0aXZlKSBvZiB0aGUgd29ybGQgc2NhbGUgWCwgY2FsY3VsYXRlZCB1c2luZyB7QGxpbmsgYX0gYW5kIHtAbGluayBjfS4gKi9cblx0cHVibGljIGdldFdvcmxkU2NhbGVYICgpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnNxcnQodGhpcy5hICogdGhpcy5hICsgdGhpcy5jICogdGhpcy5jKTtcblx0fVxuXG5cdC8qKiBUaGUgbWFnbml0dWRlIChhbHdheXMgcG9zaXRpdmUpIG9mIHRoZSB3b3JsZCBzY2FsZSBZLCBjYWxjdWxhdGVkIHVzaW5nIHtAbGluayBifSBhbmQge0BsaW5rIGR9LiAqL1xuXHRwdWJsaWMgZ2V0V29ybGRTY2FsZVkgKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE1hdGguc3FydCh0aGlzLmIgKiB0aGlzLmIgKyB0aGlzLmQgKiB0aGlzLmQpO1xuXHR9XG5cblx0Ly8gcHVibGljIE1hdHJpeDMgZ2V0V29ybGRUcmFuc2Zvcm0gKE1hdHJpeDMgd29ybGRUcmFuc2Zvcm0pIHtcblx0Ly8gXHRpZiAod29ybGRUcmFuc2Zvcm0gPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihcIndvcmxkVHJhbnNmb3JtIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0Ly8gXHRmbG9hdFtdIHZhbCA9IHdvcmxkVHJhbnNmb3JtLnZhbDtcblx0Ly8gXHR2YWxbTTAwXSA9IGE7XG5cdC8vIFx0dmFsW00wMV0gPSBiO1xuXHQvLyBcdHZhbFtNMTBdID0gYztcblx0Ly8gXHR2YWxbTTExXSA9IGQ7XG5cdC8vIFx0dmFsW00wMl0gPSB3b3JsZFg7XG5cdC8vIFx0dmFsW00xMl0gPSB3b3JsZFk7XG5cdC8vIFx0dmFsW00yMF0gPSAwO1xuXHQvLyBcdHZhbFtNMjFdID0gMDtcblx0Ly8gXHR2YWxbTTIyXSA9IDE7XG5cdC8vIFx0cmV0dXJuIHdvcmxkVHJhbnNmb3JtO1xuXHQvLyB9XG5cblx0LyoqIFRyYW5zZm9ybXMgYSBwb2ludCBmcm9tIHdvcmxkIGNvb3JkaW5hdGVzIHRvIHRoZSBib25lJ3MgbG9jYWwgY29vcmRpbmF0ZXMuICovXG5cdHB1YmxpYyB3b3JsZFRvTG9jYWwgKHdvcmxkOiBWZWN0b3IyKTogVmVjdG9yMiB7XG5cdFx0aWYgKHdvcmxkID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIndvcmxkIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBkZXQgPSB0aGlzLmEgKiB0aGlzLmQgLSB0aGlzLmIgKiB0aGlzLmM7XG5cdFx0Y29uc3QgeCA9IHdvcmxkLnggLSB0aGlzLndvcmxkWCwgeSA9IHdvcmxkLnkgLSB0aGlzLndvcmxkWTtcblx0XHR3b3JsZC54ID0gKHggKiB0aGlzLmQgLSB5ICogdGhpcy5iKSAvIGRldDtcblx0XHR3b3JsZC55ID0gKHkgKiB0aGlzLmEgLSB4ICogdGhpcy5jKSAvIGRldDtcblx0XHRyZXR1cm4gd29ybGQ7XG5cdH1cblxuXHQvKiogVHJhbnNmb3JtcyBhIHBvaW50IGZyb20gdGhlIGJvbmUncyBsb2NhbCBjb29yZGluYXRlcyB0byB3b3JsZCBjb29yZGluYXRlcy4gKi9cblx0cHVibGljIGxvY2FsVG9Xb3JsZCAobG9jYWw6IFZlY3RvcjIpOiBWZWN0b3IyIHtcblx0XHRpZiAobG9jYWwgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwibG9jYWwgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGNvbnN0IHggPSBsb2NhbC54LCB5ID0gbG9jYWwueTtcblx0XHRsb2NhbC54ID0geCAqIHRoaXMuYSArIHkgKiB0aGlzLmIgKyB0aGlzLndvcmxkWDtcblx0XHRsb2NhbC55ID0geCAqIHRoaXMuYyArIHkgKiB0aGlzLmQgKyB0aGlzLndvcmxkWTtcblx0XHRyZXR1cm4gbG9jYWw7XG5cdH1cblxuXHQvKiogVHJhbnNmb3JtcyBhIHBvaW50IGZyb20gd29ybGQgY29vcmRpbmF0ZXMgdG8gdGhlIHBhcmVudCBib25lJ3MgbG9jYWwgY29vcmRpbmF0ZXMuICovXG5cdHB1YmxpYyB3b3JsZFRvUGFyZW50ICh3b3JsZDogVmVjdG9yMik6IFZlY3RvcjIge1xuXHRcdGlmICh3b3JsZCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ3b3JsZCBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMuYm9uZS5wYXJlbnQgPT0gbnVsbCA/IHdvcmxkIDogdGhpcy5ib25lLnBhcmVudC5hcHBsaWVkUG9zZS53b3JsZFRvTG9jYWwod29ybGQpO1xuXHR9XG5cblx0LyoqIFRyYW5zZm9ybXMgYSBwb2ludCBmcm9tIHRoZSBwYXJlbnQgYm9uZSdzIGNvb3JkaW5hdGVzIHRvIHdvcmxkIGNvb3JkaW5hdGVzLiAqL1xuXHRwdWJsaWMgcGFyZW50VG9Xb3JsZCAod29ybGQ6IFZlY3RvcjIpOiBWZWN0b3IyIHtcblx0XHRpZiAod29ybGQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwid29ybGQgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLmJvbmUucGFyZW50ID09IG51bGwgPyB3b3JsZCA6IHRoaXMuYm9uZS5wYXJlbnQuYXBwbGllZFBvc2UubG9jYWxUb1dvcmxkKHdvcmxkKTtcblx0fVxuXG5cdC8qKiBUcmFuc2Zvcm1zIGEgd29ybGQgcm90YXRpb24gdG8gYSBsb2NhbCByb3RhdGlvbi4gKi9cblx0cHVibGljIHdvcmxkVG9Mb2NhbFJvdGF0aW9uICh3b3JsZFJvdGF0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHdvcmxkUm90YXRpb24gKj0gTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRjb25zdCBzaW4gPSBNYXRoLnNpbih3b3JsZFJvdGF0aW9uKSwgY29zID0gTWF0aC5jb3Mod29ybGRSb3RhdGlvbik7XG5cdFx0cmV0dXJuIE1hdGhVdGlscy5hdGFuMkRlZyh0aGlzLmEgKiBzaW4gLSB0aGlzLmMgKiBjb3MsIHRoaXMuZCAqIGNvcyAtIHRoaXMuYiAqIHNpbikgKyB0aGlzLnJvdGF0aW9uIC0gdGhpcy5zaGVhclg7XG5cdH1cblxuXHQvKiogVHJhbnNmb3JtcyBhIGxvY2FsIHJvdGF0aW9uIHRvIGEgd29ybGQgcm90YXRpb24uICovXG5cdGxvY2FsVG9Xb3JsZFJvdGF0aW9uIChsb2NhbFJvdGF0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdGxvY2FsUm90YXRpb24gPSAobG9jYWxSb3RhdGlvbiAtIHRoaXMucm90YXRpb24gLSB0aGlzLnNoZWFyWCkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdGNvbnN0IHNpbiA9IE1hdGguc2luKGxvY2FsUm90YXRpb24pLCBjb3MgPSBNYXRoLmNvcyhsb2NhbFJvdGF0aW9uKTtcblx0XHRyZXR1cm4gTWF0aFV0aWxzLmF0YW4yRGVnKGNvcyAqIHRoaXMuYyArIHNpbiAqIHRoaXMuZCwgY29zICogdGhpcy5hICsgc2luICogdGhpcy5iKTtcblx0fVxuXG5cdC8qKiBSb3RhdGVzIHRoZSB3b3JsZCB0cmFuc2Zvcm0gdGhlIHNwZWNpZmllZCBhbW91bnQuICovXG5cdHJvdGF0ZVdvcmxkIChkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRkZWdyZWVzICo9IE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0Y29uc3Qgc2luID0gTWF0aC5zaW4oZGVncmVlcyksIGNvcyA9IE1hdGguY29zKGRlZ3JlZXMpO1xuXHRcdGNvbnN0IHJhID0gdGhpcy5hLCByYiA9IHRoaXMuYjtcblx0XHR0aGlzLmEgPSBjb3MgKiByYSAtIHNpbiAqIHRoaXMuYztcblx0XHR0aGlzLmIgPSBjb3MgKiByYiAtIHNpbiAqIHRoaXMuZDtcblx0XHR0aGlzLmMgPSBzaW4gKiByYSArIGNvcyAqIHRoaXMuYztcblx0XHR0aGlzLmQgPSBzaW4gKiByYiArIGNvcyAqIHRoaXMuZDtcblx0fVxufVxuIl19
|
package/dist/PathConstraint.js
CHANGED
|
@@ -147,8 +147,9 @@ export class PathConstraint extends Constraint {
|
|
|
147
147
|
const bone = this.slot.bone.appliedPose;
|
|
148
148
|
offsetRotation *= bone.a * bone.d - bone.b * bone.c > 0 ? MathUtils.degRad : -MathUtils.degRad;
|
|
149
149
|
}
|
|
150
|
-
for (let i = 0, ip = 3
|
|
150
|
+
for (let i = 0, ip = 3; i < boneCount; i++, ip += 3) {
|
|
151
151
|
const bone = bones[i];
|
|
152
|
+
bone.modifyWorld(skeleton);
|
|
152
153
|
bone.worldX += (boneX - bone.worldX) * mixX;
|
|
153
154
|
bone.worldY += (boneY - bone.worldY) * mixY;
|
|
154
155
|
const x = positions[ip], y = positions[ip + 1], dx = x - boneX, dy = y - boneY;
|
|
@@ -193,7 +194,6 @@ export class PathConstraint extends Constraint {
|
|
|
193
194
|
bone.c = sin * a + cos * c;
|
|
194
195
|
bone.d = sin * b + cos * d;
|
|
195
196
|
}
|
|
196
|
-
bone.modifyWorld(u);
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
computeWorldPositions(skeleton, path, spacesCount, tangents) {
|
|
@@ -506,4 +506,4 @@ export class PathConstraint extends Constraint {
|
|
|
506
506
|
return this.slot.bone.active;
|
|
507
507
|
}
|
|
508
508
|
}
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aENvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGF0aENvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUEyQixZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRzlDOzt5R0FFeUc7QUFDekcsTUFBTSxPQUFPLGNBQWUsU0FBUSxVQUFrRTtJQUNyRyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFeEQsNkNBQTZDO0lBQzdDLElBQUksQ0FBcUI7SUFFekIsK0RBQStEO0lBQy9ELEtBQUssQ0FBa0I7SUFFdkIsNEVBQTRFO0lBQzVFLElBQUksQ0FBTztJQUVYLE1BQU0sR0FBRyxFQUFjLENBQUM7SUFBQyxTQUFTLEdBQUcsRUFBYyxDQUFDO0lBQ3BELEtBQUssR0FBRyxFQUFjLENBQUM7SUFBQyxNQUFNLEdBQUcsRUFBYyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQWMsQ0FBQztJQUMxRSxRQUFRLEdBQUcsRUFBYyxDQUFDO0lBRTFCLFlBQWEsSUFBd0IsRUFBRSxRQUFrQjtRQUN4RCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLGtCQUFrQixF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QUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BELEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDckMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3JDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDeEIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFVBQVUs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QztZQUNoQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUMsT0FBTztRQUNSLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUMzRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsS0FBSztnQkFDWixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7O2dCQUU1QyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxDQUFDO0lBQ0YsQ0FBQztJQUVELElBQUksQ0FBRSxRQUFrQjtRQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUNuRixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDM0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUNqQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDakMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTyxZQUFZLENBQUUsUUFBa0IsRUFBRSxJQUFVLEVBQUUsU0FBaUIsRUFBRSxRQUFjO1FBQ3RGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTO2dCQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNGLENBQUM7SUFFTyxRQUFRLENBQUUsUUFBa0IsRUFBRSxVQUE2QixFQUFFLFFBQWM7UUFDbEYsSUFBSSxDQUFDLENBQUMsVUFBVSxZQUFZLGNBQWMsQ0FBQztZQUFFLE9BQU87UUFDcEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQ3BCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEIsQ0FBQztZQUNMLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUM5QyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDUixPQUFPLENBQUMsR0FBRyxFQUFFO29CQUNaLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxjQUFjO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUGF0aEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9QYXRoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBQYXRoQ29uc3RyYWludERhdGEsIFBvc2l0aW9uTW9kZSwgUm90YXRlTW9kZSwgU3BhY2luZ01vZGUgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNsb3QgfSBmcm9tIFwiLi9TbG90LmpzXCI7XG5pbXBvcnQgeyBNYXRoVXRpbHMsIFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuXG4vKiogQWRqdXN0cyB0aGUgcm90YXRpb24sIHRyYW5zbGF0aW9uLCBhbmQgc2NhbGUgb2YgdGhlIGNvbnN0cmFpbmVkIGJvbmVzIHNvIHRoZXkgZm9sbG93IGEge0BsaW5rIFBhdGhBdHRhY2htZW50fS5cbiAqXG4gKiBTZWUgW1BhdGggY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1wYXRoLWNvbnN0cmFpbnRzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQ29uc3RyYWludCBleHRlbmRzIENvbnN0cmFpbnQ8UGF0aENvbnN0cmFpbnQsIFBhdGhDb25zdHJhaW50RGF0YSwgUGF0aENvbnN0cmFpbnRQb3NlPiB7XG5cdHN0YXRpYyBOT05FID0gLTE7IHN0YXRpYyBCRUZPUkUgPSAtMjsgc3RhdGljIEFGVEVSID0gLTM7XG5cblx0LyoqIFRoZSBwYXRoIGNvbnN0cmFpbnQncyBzZXR1cCBwb3NlIGRhdGEuICovXG5cdGRhdGE6IFBhdGhDb25zdHJhaW50RGF0YTtcblxuXHQvKiogVGhlIGJvbmVzIHRoYXQgd2lsbCBiZSBtb2RpZmllZCBieSB0aGlzIHBhdGggY29uc3RyYWludC4gKi9cblx0Ym9uZXM6IEFycmF5PEJvbmVQb3NlPjtcblxuXHQvKiogVGhlIHNsb3Qgd2hvc2UgcGF0aCBhdHRhY2htZW50IHdpbGwgYmUgdXNlZCB0byBjb25zdHJhaW5lZCB0aGUgYm9uZXMuICovXG5cdHNsb3Q6IFNsb3Q7XG5cblx0c3BhY2VzID0gW10gYXMgbnVtYmVyW107IHBvc2l0aW9ucyA9IFtdIGFzIG51bWJlcltdO1xuXHR3b3JsZCA9IFtdIGFzIG51bWJlcltdOyBjdXJ2ZXMgPSBbXSBhcyBudW1iZXJbXTsgbGVuZ3RocyA9IFtdIGFzIG51bWJlcltdO1xuXHRzZWdtZW50cyA9IFtdIGFzIG51bWJlcltdO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBQYXRoQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHN1cGVyKGRhdGEsIG5ldyBQYXRoQ29uc3RyYWludFBvc2UoKSwgbmV3IFBhdGhDb25zdHJhaW50UG9zZSgpKTtcblx0XHRpZiAoIXNrZWxldG9uKSB0aHJvdyBuZXcgRXJyb3IoXCJza2VsZXRvbiBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0dGhpcy5kYXRhID0gZGF0YTtcblxuXHRcdHRoaXMuYm9uZXMgPSBbXSBhcyBCb25lUG9zZVtdO1xuXHRcdGZvciAoY29uc3QgYm9uZURhdGEgb2YgdGhpcy5kYXRhLmJvbmVzKVxuXHRcdFx0dGhpcy5ib25lcy5wdXNoKHNrZWxldG9uLmJvbmVzW2JvbmVEYXRhLmluZGV4XS5jb25zdHJhaW5lZFBvc2UpO1xuXG5cdFx0dGhpcy5zbG90ID0gc2tlbGV0b24uc2xvdHNbZGF0YS5zbG90LmluZGV4XTtcblx0fVxuXG5cdHB1YmxpYyBjb3B5IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR2YXIgY29weSA9IG5ldyBQYXRoQ29uc3RyYWludCh0aGlzLmRhdGEsIHNrZWxldG9uKTtcblx0XHRjb3B5LnBvc2Uuc2V0KHRoaXMucG9zZSk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cblxuXHR1cGRhdGUgKHNrZWxldG9uOiBTa2VsZXRvbiwgcGh5c2ljczogUGh5c2ljcykge1xuXHRcdGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLnNsb3QuYXBwbGllZFBvc2UuYXR0YWNobWVudDtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cblx0XHRjb25zdCBwID0gdGhpcy5hcHBsaWVkUG9zZTtcblx0XHRjb25zdCBtaXhSb3RhdGUgPSBwLm1peFJvdGF0ZSwgbWl4WCA9IHAubWl4WCwgbWl4WSA9IHAubWl4WTtcblx0XHRpZiAobWl4Um90YXRlID09PSAwICYmIG1peFggPT09IDAgJiYgbWl4WSA9PT0gMCkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcblx0XHRjb25zdCB0YW5nZW50cyA9IGRhdGEucm90YXRlTW9kZSA9PT0gUm90YXRlTW9kZS5UYW5nZW50LCBzY2FsZSA9IGRhdGEucm90YXRlTW9kZSA9PT0gUm90YXRlTW9kZS5DaGFpblNjYWxlO1xuXG5cdFx0Y29uc3QgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdGNvbnN0IGJvbmVDb3VudCA9IGJvbmVzLmxlbmd0aCwgc3BhY2VzQ291bnQgPSB0YW5nZW50cyA/IGJvbmVDb3VudCA6IGJvbmVDb3VudCArIDE7XG5cdFx0Y29uc3Qgc3BhY2VzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuc3BhY2VzLCBzcGFjZXNDb3VudCksIGxlbmd0aHM6IEFycmF5PG51bWJlcj4gPSBzY2FsZSA/IHRoaXMubGVuZ3RocyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLmxlbmd0aHMsIGJvbmVDb3VudCkgOiBbXTtcblx0XHRjb25zdCBzcGFjaW5nID0gcC5zcGFjaW5nO1xuXG5cdFx0c3dpdGNoIChkYXRhLnNwYWNpbmdNb2RlKSB7XG5cdFx0XHRjYXNlIFNwYWNpbmdNb2RlLlBlcmNlbnQ6XG5cdFx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc3BhY2VzQ291bnQgLSAxOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRcdFx0XHRjb25zdCBzZXR1cExlbmd0aCA9IGJvbmUuYm9uZS5kYXRhLmxlbmd0aDtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSBzZXR1cExlbmd0aCAqIGJvbmUuYSwgeSA9IHNldHVwTGVuZ3RoICogYm9uZS5jO1xuXHRcdFx0XHRcdFx0bGVuZ3Roc1tpXSA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0VXRpbHMuYXJyYXlGaWxsKHNwYWNlcywgMSwgc3BhY2VzQ291bnQsIHNwYWNpbmcpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUHJvcG9ydGlvbmFsOiB7XG5cdFx0XHRcdGxldCBzdW0gPSAwO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNwYWNlc0NvdW50IC0gMTsgaSA8IG47KSB7XG5cdFx0XHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0XHRcdGNvbnN0IHNldHVwTGVuZ3RoID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChzZXR1cExlbmd0aCA8IE1hdGhVdGlscy5lcHNpbG9uKSB7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSAwO1xuXHRcdFx0XHRcdFx0c3BhY2VzWysraV0gPSBzcGFjaW5nO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gc2V0dXBMZW5ndGggKiBib25lLmEsIHkgPSBzZXR1cExlbmd0aCAqIGJvbmUuYztcblx0XHRcdFx0XHRcdGNvbnN0IGxlbmd0aCA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0XHRcdFx0XHRcdGlmIChzY2FsZSkgbGVuZ3Roc1tpXSA9IGxlbmd0aDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gbGVuZ3RoO1xuXHRcdFx0XHRcdFx0c3VtICs9IGxlbmd0aDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHN1bSA+IDApIHtcblx0XHRcdFx0XHRzdW0gPSBzcGFjZXNDb3VudCAvIHN1bSAqIHNwYWNpbmc7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBzcGFjZXNDb3VudDsgaSsrKVxuXHRcdFx0XHRcdFx0c3BhY2VzW2ldICo9IHN1bTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0Y29uc3QgbGVuZ3RoU3BhY2luZyA9IGRhdGEuc3BhY2luZ01vZGUgPT09IFNwYWNpbmdNb2RlLkxlbmd0aDtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzcGFjZXNDb3VudCAtIDE7IGkgPCBuOykge1xuXHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdFx0XHRjb25zdCBzZXR1cExlbmd0aCA9IGJvbmUuYm9uZS5kYXRhLmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoc2V0dXBMZW5ndGggPCBNYXRoVXRpbHMuZXBzaWxvbikge1xuXHRcdFx0XHRcdFx0aWYgKHNjYWxlKSBsZW5ndGhzW2ldID0gMDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gc3BhY2luZztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IHNldHVwTGVuZ3RoICogYm9uZS5hLCB5ID0gc2V0dXBMZW5ndGggKiBib25lLmM7XG5cdFx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSBsZW5ndGg7XG5cdFx0XHRcdFx0XHRzcGFjZXNbKytpXSA9IChsZW5ndGhTcGFjaW5nID8gTWF0aC5tYXgoMCwgc2V0dXBMZW5ndGggKyBzcGFjaW5nKSA6IHNwYWNpbmcpICogbGVuZ3RoIC8gc2V0dXBMZW5ndGg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgcG9zaXRpb25zID0gdGhpcy5jb21wdXRlV29ybGRQb3NpdGlvbnMoc2tlbGV0b24sIGF0dGFjaG1lbnQsIHNwYWNlc0NvdW50LCB0YW5nZW50cyk7XG5cdFx0bGV0IGJvbmVYID0gcG9zaXRpb25zWzBdLCBib25lWSA9IHBvc2l0aW9uc1sxXSwgb2Zmc2V0Um90YXRpb24gPSBkYXRhLm9mZnNldFJvdGF0aW9uO1xuXHRcdGxldCB0aXAgPSBmYWxzZTtcblx0XHRpZiAob2Zmc2V0Um90YXRpb24gPT09IDApXG5cdFx0XHR0aXAgPSBkYXRhLnJvdGF0ZU1vZGUgPT09IFJvdGF0ZU1vZGUuQ2hhaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aXAgPSBmYWxzZTtcblx0XHRcdGNvbnN0IGJvbmUgPSB0aGlzLnNsb3QuYm9uZS5hcHBsaWVkUG9zZTtcblx0XHRcdG9mZnNldFJvdGF0aW9uICo9IGJvbmUuYSAqIGJvbmUuZCAtIGJvbmUuYiAqIGJvbmUuYyA+IDAgPyBNYXRoVXRpbHMuZGVnUmFkIDogLU1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSAwLCBpcCA9IDMsIHUgPSBza2VsZXRvbi5fdXBkYXRlOyBpIDwgYm9uZUNvdW50OyBpKyssIGlwICs9IDMpIHtcblx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGJvbmUud29ybGRYICs9IChib25lWCAtIGJvbmUud29ybGRYKSAqIG1peFg7XG5cdFx0XHRib25lLndvcmxkWSArPSAoYm9uZVkgLSBib25lLndvcmxkWSkgKiBtaXhZO1xuXHRcdFx0Y29uc3QgeCA9IHBvc2l0aW9uc1tpcF0sIHkgPSBwb3NpdGlvbnNbaXAgKyAxXSwgZHggPSB4IC0gYm9uZVgsIGR5ID0geSAtIGJvbmVZO1xuXHRcdFx0aWYgKHNjYWxlKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aCA9IGxlbmd0aHNbaV07XG5cdFx0XHRcdGlmIChsZW5ndGggIT09IDApIHtcblx0XHRcdFx0XHRjb25zdCBzID0gKE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSkgLyBsZW5ndGggLSAxKSAqIG1peFJvdGF0ZSArIDE7XG5cdFx0XHRcdFx0Ym9uZS5hICo9IHM7XG5cdFx0XHRcdFx0Ym9uZS5jICo9IHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJvbmVYID0geDtcblx0XHRcdGJvbmVZID0geTtcblx0XHRcdGlmIChtaXhSb3RhdGUgPiAwKSB7XG5cdFx0XHRcdGxldCBhID0gYm9uZS5hLCBiID0gYm9uZS5iLCBjID0gYm9uZS5jLCBkID0gYm9uZS5kLCByID0gMCwgY29zID0gMCwgc2luID0gMDtcblx0XHRcdFx0aWYgKHRhbmdlbnRzKVxuXHRcdFx0XHRcdHIgPSBwb3NpdGlvbnNbaXAgLSAxXTtcblx0XHRcdFx0ZWxzZSBpZiAoc3BhY2VzW2kgKyAxXSA9PT0gMClcblx0XHRcdFx0XHRyID0gcG9zaXRpb25zW2lwICsgMl07XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRyID0gTWF0aC5hdGFuMihkeSwgZHgpO1xuXHRcdFx0XHRyIC09IE1hdGguYXRhbjIoYywgYSk7XG5cdFx0XHRcdGlmICh0aXApIHtcblx0XHRcdFx0XHRjb3MgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0XHRzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBib25lLmJvbmUuZGF0YS5sZW5ndGg7XG5cdFx0XHRcdFx0Ym9uZVggKz0gKGxlbmd0aCAqIChjb3MgKiBhIC0gc2luICogYykgLSBkeCkgKiBtaXhSb3RhdGU7XG5cdFx0XHRcdFx0Ym9uZVkgKz0gKGxlbmd0aCAqIChzaW4gKiBhICsgY29zICogYykgLSBkeSkgKiBtaXhSb3RhdGU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ciArPSBvZmZzZXRSb3RhdGlvbjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAociA+IE1hdGhVdGlscy5QSSlcblx0XHRcdFx0XHRyIC09IE1hdGhVdGlscy5QSTI7XG5cdFx0XHRcdGVsc2UgaWYgKHIgPCAtTWF0aFV0aWxzLlBJKSAvL1xuXHRcdFx0XHRcdHIgKz0gTWF0aFV0aWxzLlBJMjtcblx0XHRcdFx0ciAqPSBtaXhSb3RhdGU7XG5cdFx0XHRcdGNvcyA9IE1hdGguY29zKHIpO1xuXHRcdFx0XHRzaW4gPSBNYXRoLnNpbihyKTtcblx0XHRcdFx0Ym9uZS5hID0gY29zICogYSAtIHNpbiAqIGM7XG5cdFx0XHRcdGJvbmUuYiA9IGNvcyAqIGIgLSBzaW4gKiBkO1xuXHRcdFx0XHRib25lLmMgPSBzaW4gKiBhICsgY29zICogYztcblx0XHRcdFx0Ym9uZS5kID0gc2luICogYiArIGNvcyAqIGQ7XG5cdFx0XHR9XG5cdFx0XHRib25lLm1vZGlmeVdvcmxkKHUpO1xuXHRcdH1cblx0fVxuXG5cdGNvbXB1dGVXb3JsZFBvc2l0aW9ucyAoc2tlbGV0b246IFNrZWxldG9uLCBwYXRoOiBQYXRoQXR0YWNobWVudCwgc3BhY2VzQ291bnQ6IG51bWJlciwgdGFuZ2VudHM6IGJvb2xlYW4pIHtcblx0XHRjb25zdCBzbG90ID0gdGhpcy5zbG90O1xuXHRcdGxldCBwb3NpdGlvbiA9IHRoaXMuYXBwbGllZFBvc2UucG9zaXRpb247XG5cdFx0bGV0IHNwYWNlcyA9IHRoaXMuc3BhY2VzLCBvdXQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy5wb3NpdGlvbnMsIHNwYWNlc0NvdW50ICogMyArIDIpLCB3b3JsZDogQXJyYXk8bnVtYmVyPiA9IHRoaXMud29ybGQ7XG5cdFx0Y29uc3QgY2xvc2VkID0gcGF0aC5jbG9zZWQ7XG5cdFx0bGV0IHZlcnRpY2VzTGVuZ3RoID0gcGF0aC53b3JsZFZlcnRpY2VzTGVuZ3RoLCBjdXJ2ZUNvdW50ID0gdmVydGljZXNMZW5ndGggLyA2LCBwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5OT05FO1xuXG5cdFx0aWYgKCFwYXRoLmNvbnN0YW50U3BlZWQpIHtcblx0XHRcdGNvbnN0IGxlbmd0aHMgPSBwYXRoLmxlbmd0aHM7XG5cdFx0XHRjdXJ2ZUNvdW50IC09IGNsb3NlZCA/IDEgOiAyO1xuXHRcdFx0Y29uc3QgcGF0aExlbmd0aCA9IGxlbmd0aHNbY3VydmVDb3VudF07XG5cdFx0XHRpZiAodGhpcy5kYXRhLnBvc2l0aW9uTW9kZSA9PT0gUG9zaXRpb25Nb2RlLlBlcmNlbnQpIHBvc2l0aW9uICo9IHBhdGhMZW5ndGg7XG5cblx0XHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0XHRzd2l0Y2ggKHRoaXMuZGF0YS5zcGFjaW5nTW9kZSkge1xuXHRcdFx0XHRjYXNlIFNwYWNpbmdNb2RlLlBlcmNlbnQ6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoOyBicmVhaztcblx0XHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBtdWx0aXBsaWVyID0gMTtcblx0XHRcdH1cblxuXHRcdFx0d29ybGQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy53b3JsZCwgOCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbyA9IDAsIGN1cnZlID0gMDsgaSA8IHNwYWNlc0NvdW50OyBpKyssIG8gKz0gMykge1xuXHRcdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRcdHBvc2l0aW9uICs9IHNwYWNlO1xuXHRcdFx0XHRsZXQgcCA9IHBvc2l0aW9uO1xuXG5cdFx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0XHRwICU9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0aWYgKHAgPCAwKSBwICs9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHAgPCAwKSB7XG5cdFx0XHRcdFx0aWYgKHByZXZDdXJ2ZSAhPT0gUGF0aENvbnN0cmFpbnQuQkVGT1JFKSB7XG5cdFx0XHRcdFx0XHRwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5CRUZPUkU7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCA0LCB3b3JsZCwgMCwgMik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuYWRkQmVmb3JlUG9zaXRpb24ocCwgd29ybGQsIDAsIG91dCwgbyk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAocCA+IHBhdGhMZW5ndGgpIHtcblx0XHRcdFx0XHRpZiAocHJldkN1cnZlICE9PSBQYXRoQ29uc3RyYWludC5BRlRFUikge1xuXHRcdFx0XHRcdFx0cHJldkN1cnZlID0gUGF0aENvbnN0cmFpbnQuQUZURVI7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCB2ZXJ0aWNlc0xlbmd0aCAtIDYsIDQsIHdvcmxkLCAwLCAyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5hZGRBZnRlclBvc2l0aW9uKHAgLSBwYXRoTGVuZ3RoLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0XHRmb3IgKDsgOyBjdXJ2ZSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgbGVuZ3RoID0gbGVuZ3Roc1tjdXJ2ZV07XG5cdFx0XHRcdFx0aWYgKHAgPiBsZW5ndGgpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgcHJldiA9IGxlbmd0aHNbY3VydmUgLSAxXTtcblx0XHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRcdHByZXZDdXJ2ZSA9IGN1cnZlO1xuXHRcdFx0XHRcdGlmIChjbG9zZWQgJiYgY3VydmUgPT09IGN1cnZlQ291bnQpIHtcblx0XHRcdFx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgNCwgd29ybGQsIDQsIDIpO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgY3VydmUgKiA2ICsgMiwgOCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwLCB3b3JsZFswXSwgd29ybGRbMV0sIHdvcmxkWzJdLCB3b3JsZFszXSwgd29ybGRbNF0sIHdvcmxkWzVdLCB3b3JsZFs2XSwgd29ybGRbN10sIG91dCwgbyxcblx0XHRcdFx0XHR0YW5nZW50cyB8fCAoaSA+IDAgJiYgc3BhY2UgPT09IDApKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvdXQ7XG5cdFx0fVxuXG5cdFx0Ly8gV29ybGQgdmVydGljZXMuXG5cdFx0aWYgKGNsb3NlZCkge1xuXHRcdFx0dmVydGljZXNMZW5ndGggKz0gMjtcblx0XHRcdHdvcmxkID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMud29ybGQsIHZlcnRpY2VzTGVuZ3RoKTtcblx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIDIsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgMiwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgMik7XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDJdID0gd29ybGRbMF07XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDFdID0gd29ybGRbMV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1cnZlQ291bnQtLTtcblx0XHRcdHZlcnRpY2VzTGVuZ3RoIC09IDQ7XG5cdFx0XHR3b3JsZCA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLndvcmxkLCB2ZXJ0aWNlc0xlbmd0aCk7XG5cdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCB2ZXJ0aWNlc0xlbmd0aCwgd29ybGQsIDAsIDIpO1xuXHRcdH1cblxuXHRcdC8vIEN1cnZlIGxlbmd0aHMuXG5cdFx0Y29uc3QgY3VydmVzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuY3VydmVzLCBjdXJ2ZUNvdW50KTtcblx0XHRsZXQgcGF0aExlbmd0aCA9IDA7XG5cdFx0bGV0IHgxID0gd29ybGRbMF0sIHkxID0gd29ybGRbMV0sIGN4MSA9IDAsIGN5MSA9IDAsIGN4MiA9IDAsIGN5MiA9IDAsIHgyID0gMCwgeTIgPSAwO1xuXHRcdGxldCB0bXB4ID0gMCwgdG1weSA9IDAsIGRkZGZ4ID0gMCwgZGRkZnkgPSAwLCBkZGZ4ID0gMCwgZGRmeSA9IDAsIGRmeCA9IDAsIGRmeSA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIHcgPSAyOyBpIDwgY3VydmVDb3VudDsgaSsrLCB3ICs9IDYpIHtcblx0XHRcdGN4MSA9IHdvcmxkW3ddO1xuXHRcdFx0Y3kxID0gd29ybGRbdyArIDFdO1xuXHRcdFx0Y3gyID0gd29ybGRbdyArIDJdO1xuXHRcdFx0Y3kyID0gd29ybGRbdyArIDNdO1xuXHRcdFx0eDIgPSB3b3JsZFt3ICsgNF07XG5cdFx0XHR5MiA9IHdvcmxkW3cgKyA1XTtcblx0XHRcdHRtcHggPSAoeDEgLSBjeDEgKiAyICsgY3gyKSAqIDAuMTg3NTtcblx0XHRcdHRtcHkgPSAoeTEgLSBjeTEgKiAyICsgY3kyKSAqIDAuMTg3NTtcblx0XHRcdGRkZGZ4ID0gKChjeDEgLSBjeDIpICogMyAtIHgxICsgeDIpICogMC4wOTM3NTtcblx0XHRcdGRkZGZ5ID0gKChjeTEgLSBjeTIpICogMyAtIHkxICsgeTIpICogMC4wOTM3NTtcblx0XHRcdGRkZnggPSB0bXB4ICogMiArIGRkZGZ4O1xuXHRcdFx0ZGRmeSA9IHRtcHkgKiAyICsgZGRkZnk7XG5cdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC43NSArIHRtcHggKyBkZGRmeCAqIDAuMTY2NjY2Njc7XG5cdFx0XHRkZnkgPSAoY3kxIC0geTEpICogMC43NSArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdGRkZnggKz0gZGRkZng7XG5cdFx0XHRkZGZ5ICs9IGRkZGZ5O1xuXHRcdFx0cGF0aExlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdGRmeCArPSBkZGZ4O1xuXHRcdFx0ZGZ5ICs9IGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdGRmeSArPSBkZGZ5ICsgZGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0Y3VydmVzW2ldID0gcGF0aExlbmd0aDtcblx0XHRcdHgxID0geDI7XG5cdFx0XHR5MSA9IHkyO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRhdGEucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuUGVyY2VudCkgcG9zaXRpb24gKj0gcGF0aExlbmd0aDtcblxuXHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0c3dpdGNoICh0aGlzLmRhdGEuc3BhY2luZ01vZGUpIHtcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUGVyY2VudDogbXVsdGlwbGllciA9IHBhdGhMZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogbXVsdGlwbGllciA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2VnbWVudHMgPSB0aGlzLnNlZ21lbnRzO1xuXHRcdGxldCBjdXJ2ZUxlbmd0aCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG8gPSAwLCBjdXJ2ZSA9IDAsIHNlZ21lbnQgPSAwOyBpIDwgc3BhY2VzQ291bnQ7IGkrKywgbyArPSAzKSB7XG5cdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRwb3NpdGlvbiArPSBzcGFjZTtcblx0XHRcdGxldCBwID0gcG9zaXRpb247XG5cblx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0cCAlPSBwYXRoTGVuZ3RoO1xuXHRcdFx0XHRpZiAocCA8IDApIHAgKz0gcGF0aExlbmd0aDtcblx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHRzZWdtZW50ID0gMDtcblx0XHRcdH0gZWxzZSBpZiAocCA8IDApIHtcblx0XHRcdFx0dGhpcy5hZGRCZWZvcmVQb3NpdGlvbihwLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9IGVsc2UgaWYgKHAgPiBwYXRoTGVuZ3RoKSB7XG5cdFx0XHRcdHRoaXMuYWRkQWZ0ZXJQb3NpdGlvbihwIC0gcGF0aExlbmd0aCwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0Zm9yICg7IDsgY3VydmUrKykge1xuXHRcdFx0XHRjb25zdCBsZW5ndGggPSBjdXJ2ZXNbY3VydmVdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRwIC89IGxlbmd0aDtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJldiA9IGN1cnZlc1tjdXJ2ZSAtIDFdO1xuXHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDdXJ2ZSBzZWdtZW50IGxlbmd0aHMuXG5cdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRwcmV2Q3VydmUgPSBjdXJ2ZTtcblx0XHRcdFx0bGV0IGlpID0gY3VydmUgKiA2O1xuXHRcdFx0XHR4MSA9IHdvcmxkW2lpXTtcblx0XHRcdFx0eTEgPSB3b3JsZFtpaSArIDFdO1xuXHRcdFx0XHRjeDEgPSB3b3JsZFtpaSArIDJdO1xuXHRcdFx0XHRjeTEgPSB3b3JsZFtpaSArIDNdO1xuXHRcdFx0XHRjeDIgPSB3b3JsZFtpaSArIDRdO1xuXHRcdFx0XHRjeTIgPSB3b3JsZFtpaSArIDVdO1xuXHRcdFx0XHR4MiA9IHdvcmxkW2lpICsgNl07XG5cdFx0XHRcdHkyID0gd29ybGRbaWkgKyA3XTtcblx0XHRcdFx0dG1weCA9ICh4MSAtIGN4MSAqIDIgKyBjeDIpICogMC4wMztcblx0XHRcdFx0dG1weSA9ICh5MSAtIGN5MSAqIDIgKyBjeTIpICogMC4wMztcblx0XHRcdFx0ZGRkZnggPSAoKGN4MSAtIGN4MikgKiAzIC0geDEgKyB4MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRkZnkgPSAoKGN5MSAtIGN5MikgKiAzIC0geTEgKyB5MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRmeCA9IHRtcHggKiAyICsgZGRkZng7XG5cdFx0XHRcdGRkZnkgPSB0bXB5ICogMiArIGRkZGZ5O1xuXHRcdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC4zICsgdG1weCArIGRkZGZ4ICogMC4xNjY2NjY2Nztcblx0XHRcdFx0ZGZ5ID0gKGN5MSAtIHkxKSAqIDAuMyArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRcdGN1cnZlTGVuZ3RoID0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzBdID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdGZvciAoaWkgPSAxOyBpaSA8IDg7IGlpKyspIHtcblx0XHRcdFx0XHRkZnggKz0gZGRmeDtcblx0XHRcdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdFx0XHRkZGZ4ICs9IGRkZGZ4O1xuXHRcdFx0XHRcdGRkZnkgKz0gZGRkZnk7XG5cdFx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdFx0c2VnbWVudHNbaWldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRcdGRmeSArPSBkZGZ5O1xuXHRcdFx0XHRjdXJ2ZUxlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdFx0c2VnbWVudHNbOF0gPSBjdXJ2ZUxlbmd0aDtcblx0XHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdFx0ZGZ5ICs9IGRkZnkgKyBkZGRmeTtcblx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdHNlZ21lbnQgPSAwO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWlnaHQgYnkgc2VnbWVudCBsZW5ndGguXG5cdFx0XHRwICo9IGN1cnZlTGVuZ3RoO1xuXHRcdFx0Zm9yICg7IDsgc2VnbWVudCsrKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aCA9IHNlZ21lbnRzW3NlZ21lbnRdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChzZWdtZW50ID09PSAwKVxuXHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBwcmV2ID0gc2VnbWVudHNbc2VnbWVudCAtIDFdO1xuXHRcdFx0XHRcdHAgPSBzZWdtZW50ICsgKHAgLSBwcmV2KSAvIChsZW5ndGggLSBwcmV2KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwICogMC4xLCB4MSwgeTEsIGN4MSwgY3kxLCBjeDIsIGN5MiwgeDIsIHkyLCBvdXQsIG8sIHRhbmdlbnRzIHx8IChpID4gMCAmJiBzcGFjZSA9PT0gMCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0YWRkQmVmb3JlUG9zaXRpb24gKHA6IG51bWJlciwgdGVtcDogQXJyYXk8bnVtYmVyPiwgaTogbnVtYmVyLCBvdXQ6IEFycmF5PG51bWJlcj4sIG86IG51bWJlcikge1xuXHRcdGNvbnN0IHgxID0gdGVtcFtpXSwgeTEgPSB0ZW1wW2kgKyAxXSwgZHggPSB0ZW1wW2kgKyAyXSAtIHgxLCBkeSA9IHRlbXBbaSArIDNdIC0geTEsIHIgPSBNYXRoLmF0YW4yKGR5LCBkeCk7XG5cdFx0b3V0W29dID0geDEgKyBwICogTWF0aC5jb3Mocik7XG5cdFx0b3V0W28gKyAxXSA9IHkxICsgcCAqIE1hdGguc2luKHIpO1xuXHRcdG91dFtvICsgMl0gPSByO1xuXHR9XG5cblx0YWRkQWZ0ZXJQb3NpdGlvbiAocDogbnVtYmVyLCB0ZW1wOiBBcnJheTxudW1iZXI+LCBpOiBudW1iZXIsIG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeDEgPSB0ZW1wW2kgKyAyXSwgeTEgPSB0ZW1wW2kgKyAzXSwgZHggPSB4MSAtIHRlbXBbaV0sIGR5ID0geTEgLSB0ZW1wW2kgKyAxXSwgciA9IE1hdGguYXRhbjIoZHksIGR4KTtcblx0XHRvdXRbb10gPSB4MSArIHAgKiBNYXRoLmNvcyhyKTtcblx0XHRvdXRbbyArIDFdID0geTEgKyBwICogTWF0aC5zaW4ocik7XG5cdFx0b3V0W28gKyAyXSA9IHI7XG5cdH1cblxuXHRhZGRDdXJ2ZVBvc2l0aW9uIChwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLFxuXHRcdG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyLCB0YW5nZW50czogYm9vbGVhbikge1xuXHRcdGlmIChwID09PSAwIHx8IE51bWJlci5pc05hTihwKSkge1xuXHRcdFx0b3V0W29dID0geDE7XG5cdFx0XHRvdXRbbyArIDFdID0geTE7XG5cdFx0XHRvdXRbbyArIDJdID0gTWF0aC5hdGFuMihjeTEgLSB5MSwgY3gxIC0geDEpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0dCA9IHAgKiBwLCB0dHQgPSB0dCAqIHAsIHUgPSAxIC0gcCwgdXUgPSB1ICogdSwgdXV1ID0gdXUgKiB1O1xuXHRcdGNvbnN0IHV0ID0gdSAqIHAsIHV0MyA9IHV0ICogMywgdXV0MyA9IHUgKiB1dDMsIHV0dDMgPSB1dDMgKiBwO1xuXHRcdGNvbnN0IHggPSB4MSAqIHV1dSArIGN4MSAqIHV1dDMgKyBjeDIgKiB1dHQzICsgeDIgKiB0dHQsIHkgPSB5MSAqIHV1dSArIGN5MSAqIHV1dDMgKyBjeTIgKiB1dHQzICsgeTIgKiB0dHQ7XG5cdFx0b3V0W29dID0geDtcblx0XHRvdXRbbyArIDFdID0geTtcblx0XHRpZiAodGFuZ2VudHMpIHtcblx0XHRcdGlmIChwIDwgMC4wMDEpXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKGN5MSAtIHkxLCBjeDEgLSB4MSk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKHkgLSAoeTEgKiB1dSArIGN5MSAqIHV0ICogMiArIGN5MiAqIHR0KSwgeCAtICh4MSAqIHV1ICsgY3gxICogdXQgKiAyICsgY3gyICogdHQpKTtcblx0XHR9XG5cdH1cblxuXHRzb3J0IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRjb25zdCBzbG90SW5kZXggPSB0aGlzLnNsb3QuZGF0YS5pbmRleDtcblx0XHRjb25zdCBzbG90Qm9uZSA9IHRoaXMuc2xvdC5ib25lO1xuXHRcdGlmIChza2VsZXRvbi5za2luICE9IG51bGwpIHRoaXMuc29ydFBhdGhTbG90KHNrZWxldG9uLCBza2VsZXRvbi5za2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRpZiAoc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiAhPSBudWxsICYmIHNrZWxldG9uLmRhdGEuZGVmYXVsdFNraW4gIT09IHNrZWxldG9uLnNraW4pXG5cdFx0XHR0aGlzLnNvcnRQYXRoU2xvdChza2VsZXRvbiwgc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiwgc2xvdEluZGV4LCBzbG90Qm9uZSk7XG5cdFx0dGhpcy5zb3J0UGF0aChza2VsZXRvbiwgdGhpcy5zbG90LnBvc2UuYXR0YWNobWVudCwgc2xvdEJvbmUpO1xuXHRcdGNvbnN0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRjb25zdCBib25lQ291bnQgPSB0aGlzLmJvbmVzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKSB7XG5cdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV0uYm9uZTtcblx0XHRcdHNrZWxldG9uLnNvcnRCb25lKGJvbmUpO1xuXHRcdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdFx0fVxuXHRcdHNrZWxldG9uLl91cGRhdGVDYWNoZS5wdXNoKHRoaXMpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHRza2VsZXRvbi5zb3J0UmVzZXQoYm9uZXNbaV0uYm9uZS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGJvbmVzW2ldLmJvbmUuc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgc29ydFBhdGhTbG90IChza2VsZXRvbjogU2tlbGV0b24sIHNraW46IFNraW4sIHNsb3RJbmRleDogbnVtYmVyLCBzbG90Qm9uZTogQm9uZSkge1xuXHRcdGNvbnN0IGVudHJpZXMgPSBza2luLmdldEF0dGFjaG1lbnRzKCk7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgZW50cnkgPSBlbnRyaWVzW2ldO1xuXHRcdFx0aWYgKGVudHJ5LnNsb3RJbmRleCA9PT0gc2xvdEluZGV4KSB0aGlzLnNvcnRQYXRoKHNrZWxldG9uLCBlbnRyeS5hdHRhY2htZW50LCBzbG90Qm9uZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzb3J0UGF0aCAoc2tlbGV0b246IFNrZWxldG9uLCBhdHRhY2htZW50OiBBdHRhY2htZW50IHwgbnVsbCwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cdFx0Y29uc3QgcGF0aEJvbmVzID0gYXR0YWNobWVudC5ib25lcztcblx0XHRpZiAocGF0aEJvbmVzID09IG51bGwpXG5cdFx0XHRza2VsZXRvbi5zb3J0Qm9uZShzbG90Qm9uZSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBib25lcyA9IHNrZWxldG9uLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwYXRoQm9uZXMubGVuZ3RoOyBpIDwgbjspIHtcblx0XHRcdFx0bGV0IG5uID0gcGF0aEJvbmVzW2krK107XG5cdFx0XHRcdG5uICs9IGk7XG5cdFx0XHRcdHdoaWxlIChpIDwgbm4pXG5cdFx0XHRcdFx0c2tlbGV0b24uc29ydEJvbmUoYm9uZXNbcGF0aEJvbmVzW2krK11dKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpc1NvdXJjZUFjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2xvdC5ib25lLmFjdGl2ZTtcblx0fVxufVxuIl19
|
|
509
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aENvbnN0cmFpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUGF0aENvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUEyQixZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRzlDOzt5R0FFeUc7QUFDekcsTUFBTSxPQUFPLGNBQWUsU0FBUSxVQUFrRTtJQUNyRyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFeEQsNkNBQTZDO0lBQzdDLElBQUksQ0FBcUI7SUFFekIsK0RBQStEO0lBQy9ELEtBQUssQ0FBa0I7SUFFdkIsNEVBQTRFO0lBQzVFLElBQUksQ0FBTztJQUVYLE1BQU0sR0FBRyxFQUFjLENBQUM7SUFBQyxTQUFTLEdBQUcsRUFBYyxDQUFDO0lBQ3BELEtBQUssR0FBRyxFQUFjLENBQUM7SUFBQyxNQUFNLEdBQUcsRUFBYyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQWMsQ0FBQztJQUMxRSxRQUFRLEdBQUcsRUFBYyxDQUFDO0lBRTFCLFlBQWEsSUFBd0IsRUFBRSxRQUFrQjtRQUN4RCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLGtCQUFrQixF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QUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3BELEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDckMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3JDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzlDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDeEIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQztZQUNwRCxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsVUFBVSxDQUFDO1lBQ3BELFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDWixHQUFHLElBQUksSUFBSSxDQUFDO1lBQ1osSUFBSSxJQUFJLEtBQUssQ0FBQztZQUNkLElBQUksSUFBSSxLQUFLLENBQUM7WUFDZCxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUMvQyxHQUFHLElBQUksSUFBSSxDQUFDO1lBQ1osR0FBRyxJQUFJLElBQUksQ0FBQztZQUNaLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLEdBQUcsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLEdBQUcsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7WUFDdkIsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNSLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsT0FBTztZQUFFLFFBQVEsSUFBSSxVQUFVLENBQUM7UUFFNUUsSUFBSSxVQUFrQixDQUFDO1FBQ3ZCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQixLQUFLLFdBQVcsQ0FBQyxPQUFPO2dCQUFFLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQUMsTUFBTTtZQUN6RCxLQUFLLFdBQVcsQ0FBQyxZQUFZO2dCQUFFLFVBQVUsR0FBRyxVQUFVLEdBQUcsV0FBVyxDQUFDO2dCQUFDLE1BQU07WUFDNUUsT0FBTyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0UsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUNyQyxRQUFRLElBQUksS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUVqQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNaLENBQUMsSUFBSSxVQUFVLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQztnQkFDM0IsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDVixPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2IsQ0FBQztpQkFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUMsU0FBUztZQUNWLENBQUM7aUJBQU0sSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekUsU0FBUztZQUNWLENBQUM7WUFFRCx1Q0FBdUM7WUFDdkMsUUFBUyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNsQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxHQUFHLE1BQU07b0JBQUUsU0FBUztnQkFDekIsSUFBSSxLQUFLLEtBQUssQ0FBQztvQkFDZCxDQUFDLElBQUksTUFBTSxDQUFDO3FCQUNSLENBQUM7b0JBQ0wsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDL0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELE1BQU07WUFDUCxDQUFDO1lBRUQseUJBQXlCO1lBQ3pCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUNsQixJQUFJLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ25DLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbkMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzVDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM1QyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDeEIsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQztnQkFDbkQsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQztnQkFDbkQsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7Z0JBQzFCLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7b0JBQzNCLEdBQUcsSUFBSSxJQUFJLENBQUM7b0JBQ1osR0FBRyxJQUFJLElBQUksQ0FBQztvQkFDWixJQUFJLElBQUksS0FBSyxDQUFDO29CQUNkLElBQUksSUFBSSxLQUFLLENBQUM7b0JBQ2QsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7b0JBQ2hELFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7Z0JBQzVCLENBQUM7Z0JBQ0QsR0FBRyxJQUFJLElBQUksQ0FBQztnQkFDWixHQUFHLElBQUksSUFBSSxDQUFDO2dCQUNaLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO2dCQUMxQixHQUFHLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsR0FBRyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO2dCQUMxQixPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2IsQ0FBQztZQUVELDRCQUE0QjtZQUM1QixDQUFDLElBQUksV0FBVyxDQUFDO1lBQ2pCLFFBQVMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxNQUFNO29CQUFFLFNBQVM7Z0JBQ3pCLElBQUksT0FBTyxLQUFLLENBQUM7b0JBQ2hCLENBQUMsSUFBSSxNQUFNLENBQUM7cUJBQ1IsQ0FBQztvQkFDTCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELE1BQU07WUFDUCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEgsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVELGlCQUFpQixDQUFFLENBQVMsRUFBRSxJQUFtQixFQUFFLENBQVMsRUFBRSxHQUFrQixFQUFFLENBQVM7UUFDMUYsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELGdCQUFnQixDQUFFLENBQVMsRUFBRSxJQUFtQixFQUFFLENBQVMsRUFBRSxHQUFrQixFQUFFLENBQVM7UUFDekYsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELGdCQUFnQixDQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUM5SCxHQUFrQixFQUFFLENBQVMsRUFBRSxRQUFpQjtRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUMsT0FBTztRQUNSLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUMzRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsS0FBSztnQkFDWixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7O2dCQUU1QyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFH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SSxDQUFDLENBQUMsVUFBVSxZQUFZLGNBQWMsQ0FBQztZQUFFLE9BQU87UUFDcEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQ3BCLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEIsQ0FBQztZQUNMLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUM5QyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDeEIsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDUixPQUFPLENBQUMsR0FBRyxFQUFFO29CQUNaLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxjQUFjO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUGF0aEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9QYXRoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50IH0gZnJvbSBcIi4vQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBQYXRoQ29uc3RyYWludERhdGEsIFBvc2l0aW9uTW9kZSwgUm90YXRlTW9kZSwgU3BhY2luZ01vZGUgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50UG9zZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c2ljcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNsb3QgfSBmcm9tIFwiLi9TbG90LmpzXCI7XG5pbXBvcnQgeyBNYXRoVXRpbHMsIFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuXG4vKiogQWRqdXN0cyB0aGUgcm90YXRpb24sIHRyYW5zbGF0aW9uLCBhbmQgc2NhbGUgb2YgdGhlIGNvbnN0cmFpbmVkIGJvbmVzIHNvIHRoZXkgZm9sbG93IGEge0BsaW5rIFBhdGhBdHRhY2htZW50fS5cbiAqXG4gKiBTZWUgW1BhdGggY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1wYXRoLWNvbnN0cmFpbnRzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQ29uc3RyYWludCBleHRlbmRzIENvbnN0cmFpbnQ8UGF0aENvbnN0cmFpbnQsIFBhdGhDb25zdHJhaW50RGF0YSwgUGF0aENvbnN0cmFpbnRQb3NlPiB7XG5cdHN0YXRpYyBOT05FID0gLTE7IHN0YXRpYyBCRUZPUkUgPSAtMjsgc3RhdGljIEFGVEVSID0gLTM7XG5cblx0LyoqIFRoZSBwYXRoIGNvbnN0cmFpbnQncyBzZXR1cCBwb3NlIGRhdGEuICovXG5cdGRhdGE6IFBhdGhDb25zdHJhaW50RGF0YTtcblxuXHQvKiogVGhlIGJvbmVzIHRoYXQgd2lsbCBiZSBtb2RpZmllZCBieSB0aGlzIHBhdGggY29uc3RyYWludC4gKi9cblx0Ym9uZXM6IEFycmF5PEJvbmVQb3NlPjtcblxuXHQvKiogVGhlIHNsb3Qgd2hvc2UgcGF0aCBhdHRhY2htZW50IHdpbGwgYmUgdXNlZCB0byBjb25zdHJhaW5lZCB0aGUgYm9uZXMuICovXG5cdHNsb3Q6IFNsb3Q7XG5cblx0c3BhY2VzID0gW10gYXMgbnVtYmVyW107IHBvc2l0aW9ucyA9IFtdIGFzIG51bWJlcltdO1xuXHR3b3JsZCA9IFtdIGFzIG51bWJlcltdOyBjdXJ2ZXMgPSBbXSBhcyBudW1iZXJbXTsgbGVuZ3RocyA9IFtdIGFzIG51bWJlcltdO1xuXHRzZWdtZW50cyA9IFtdIGFzIG51bWJlcltdO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBQYXRoQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHN1cGVyKGRhdGEsIG5ldyBQYXRoQ29uc3RyYWludFBvc2UoKSwgbmV3IFBhdGhDb25zdHJhaW50UG9zZSgpKTtcblx0XHRpZiAoIXNrZWxldG9uKSB0aHJvdyBuZXcgRXJyb3IoXCJza2VsZXRvbiBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0dGhpcy5kYXRhID0gZGF0YTtcblxuXHRcdHRoaXMuYm9uZXMgPSBbXSBhcyBCb25lUG9zZVtdO1xuXHRcdGZvciAoY29uc3QgYm9uZURhdGEgb2YgdGhpcy5kYXRhLmJvbmVzKVxuXHRcdFx0dGhpcy5ib25lcy5wdXNoKHNrZWxldG9uLmJvbmVzW2JvbmVEYXRhLmluZGV4XS5jb25zdHJhaW5lZFBvc2UpO1xuXG5cdFx0dGhpcy5zbG90ID0gc2tlbGV0b24uc2xvdHNbZGF0YS5zbG90LmluZGV4XTtcblx0fVxuXG5cdHB1YmxpYyBjb3B5IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHR2YXIgY29weSA9IG5ldyBQYXRoQ29uc3RyYWludCh0aGlzLmRhdGEsIHNrZWxldG9uKTtcblx0XHRjb3B5LnBvc2Uuc2V0KHRoaXMucG9zZSk7XG5cdFx0cmV0dXJuIGNvcHk7XG5cdH1cblxuXHR1cGRhdGUgKHNrZWxldG9uOiBTa2VsZXRvbiwgcGh5c2ljczogUGh5c2ljcykge1xuXHRcdGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLnNsb3QuYXBwbGllZFBvc2UuYXR0YWNobWVudDtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cblx0XHRjb25zdCBwID0gdGhpcy5hcHBsaWVkUG9zZTtcblx0XHRjb25zdCBtaXhSb3RhdGUgPSBwLm1peFJvdGF0ZSwgbWl4WCA9IHAubWl4WCwgbWl4WSA9IHAubWl4WTtcblx0XHRpZiAobWl4Um90YXRlID09PSAwICYmIG1peFggPT09IDAgJiYgbWl4WSA9PT0gMCkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcblx0XHRjb25zdCB0YW5nZW50cyA9IGRhdGEucm90YXRlTW9kZSA9PT0gUm90YXRlTW9kZS5UYW5nZW50LCBzY2FsZSA9IGRhdGEucm90YXRlTW9kZSA9PT0gUm90YXRlTW9kZS5DaGFpblNjYWxlO1xuXG5cdFx0Y29uc3QgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdGNvbnN0IGJvbmVDb3VudCA9IGJvbmVzLmxlbmd0aCwgc3BhY2VzQ291bnQgPSB0YW5nZW50cyA/IGJvbmVDb3VudCA6IGJvbmVDb3VudCArIDE7XG5cdFx0Y29uc3Qgc3BhY2VzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuc3BhY2VzLCBzcGFjZXNDb3VudCksIGxlbmd0aHM6IEFycmF5PG51bWJlcj4gPSBzY2FsZSA/IHRoaXMubGVuZ3RocyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLmxlbmd0aHMsIGJvbmVDb3VudCkgOiBbXTtcblx0XHRjb25zdCBzcGFjaW5nID0gcC5zcGFjaW5nO1xuXG5cdFx0c3dpdGNoIChkYXRhLnNwYWNpbmdNb2RlKSB7XG5cdFx0XHRjYXNlIFNwYWNpbmdNb2RlLlBlcmNlbnQ6XG5cdFx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc3BhY2VzQ291bnQgLSAxOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRcdFx0XHRjb25zdCBzZXR1cExlbmd0aCA9IGJvbmUuYm9uZS5kYXRhLmxlbmd0aDtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSBzZXR1cExlbmd0aCAqIGJvbmUuYSwgeSA9IHNldHVwTGVuZ3RoICogYm9uZS5jO1xuXHRcdFx0XHRcdFx0bGVuZ3Roc1tpXSA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0VXRpbHMuYXJyYXlGaWxsKHNwYWNlcywgMSwgc3BhY2VzQ291bnQsIHNwYWNpbmcpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUHJvcG9ydGlvbmFsOiB7XG5cdFx0XHRcdGxldCBzdW0gPSAwO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNwYWNlc0NvdW50IC0gMTsgaSA8IG47KSB7XG5cdFx0XHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0XHRcdGNvbnN0IHNldHVwTGVuZ3RoID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChzZXR1cExlbmd0aCA8IE1hdGhVdGlscy5lcHNpbG9uKSB7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSAwO1xuXHRcdFx0XHRcdFx0c3BhY2VzWysraV0gPSBzcGFjaW5nO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gc2V0dXBMZW5ndGggKiBib25lLmEsIHkgPSBzZXR1cExlbmd0aCAqIGJvbmUuYztcblx0XHRcdFx0XHRcdGNvbnN0IGxlbmd0aCA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0XHRcdFx0XHRcdGlmIChzY2FsZSkgbGVuZ3Roc1tpXSA9IGxlbmd0aDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gbGVuZ3RoO1xuXHRcdFx0XHRcdFx0c3VtICs9IGxlbmd0aDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHN1bSA+IDApIHtcblx0XHRcdFx0XHRzdW0gPSBzcGFjZXNDb3VudCAvIHN1bSAqIHNwYWNpbmc7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBzcGFjZXNDb3VudDsgaSsrKVxuXHRcdFx0XHRcdFx0c3BhY2VzW2ldICo9IHN1bTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0Y29uc3QgbGVuZ3RoU3BhY2luZyA9IGRhdGEuc3BhY2luZ01vZGUgPT09IFNwYWNpbmdNb2RlLkxlbmd0aDtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzcGFjZXNDb3VudCAtIDE7IGkgPCBuOykge1xuXHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdFx0XHRjb25zdCBzZXR1cExlbmd0aCA9IGJvbmUuYm9uZS5kYXRhLmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoc2V0dXBMZW5ndGggPCBNYXRoVXRpbHMuZXBzaWxvbikge1xuXHRcdFx0XHRcdFx0aWYgKHNjYWxlKSBsZW5ndGhzW2ldID0gMDtcblx0XHRcdFx0XHRcdHNwYWNlc1srK2ldID0gc3BhY2luZztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IHNldHVwTGVuZ3RoICogYm9uZS5hLCB5ID0gc2V0dXBMZW5ndGggKiBib25lLmM7XG5cdFx0XHRcdFx0XHRjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGUpIGxlbmd0aHNbaV0gPSBsZW5ndGg7XG5cdFx0XHRcdFx0XHRzcGFjZXNbKytpXSA9IChsZW5ndGhTcGFjaW5nID8gTWF0aC5tYXgoMCwgc2V0dXBMZW5ndGggKyBzcGFjaW5nKSA6IHNwYWNpbmcpICogbGVuZ3RoIC8gc2V0dXBMZW5ndGg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgcG9zaXRpb25zID0gdGhpcy5jb21wdXRlV29ybGRQb3NpdGlvbnMoc2tlbGV0b24sIGF0dGFjaG1lbnQsIHNwYWNlc0NvdW50LCB0YW5nZW50cyk7XG5cdFx0bGV0IGJvbmVYID0gcG9zaXRpb25zWzBdLCBib25lWSA9IHBvc2l0aW9uc1sxXSwgb2Zmc2V0Um90YXRpb24gPSBkYXRhLm9mZnNldFJvdGF0aW9uO1xuXHRcdGxldCB0aXAgPSBmYWxzZTtcblx0XHRpZiAob2Zmc2V0Um90YXRpb24gPT09IDApXG5cdFx0XHR0aXAgPSBkYXRhLnJvdGF0ZU1vZGUgPT09IFJvdGF0ZU1vZGUuQ2hhaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aXAgPSBmYWxzZTtcblx0XHRcdGNvbnN0IGJvbmUgPSB0aGlzLnNsb3QuYm9uZS5hcHBsaWVkUG9zZTtcblx0XHRcdG9mZnNldFJvdGF0aW9uICo9IGJvbmUuYSAqIGJvbmUuZCAtIGJvbmUuYiAqIGJvbmUuYyA+IDAgPyBNYXRoVXRpbHMuZGVnUmFkIDogLU1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSAwLCBpcCA9IDM7IGkgPCBib25lQ291bnQ7IGkrKywgaXAgKz0gMykge1xuXHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0Ym9uZS5tb2RpZnlXb3JsZChza2VsZXRvbik7XG5cdFx0XHRib25lLndvcmxkWCArPSAoYm9uZVggLSBib25lLndvcmxkWCkgKiBtaXhYO1xuXHRcdFx0Ym9uZS53b3JsZFkgKz0gKGJvbmVZIC0gYm9uZS53b3JsZFkpICogbWl4WTtcblx0XHRcdGNvbnN0IHggPSBwb3NpdGlvbnNbaXBdLCB5ID0gcG9zaXRpb25zW2lwICsgMV0sIGR4ID0geCAtIGJvbmVYLCBkeSA9IHkgLSBib25lWTtcblx0XHRcdGlmIChzY2FsZSkge1xuXHRcdFx0XHRjb25zdCBsZW5ndGggPSBsZW5ndGhzW2ldO1xuXHRcdFx0XHRpZiAobGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgcyA9IChNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpIC8gbGVuZ3RoIC0gMSkgKiBtaXhSb3RhdGUgKyAxO1xuXHRcdFx0XHRcdGJvbmUuYSAqPSBzO1xuXHRcdFx0XHRcdGJvbmUuYyAqPSBzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRib25lWCA9IHg7XG5cdFx0XHRib25lWSA9IHk7XG5cdFx0XHRpZiAobWl4Um90YXRlID4gMCkge1xuXHRcdFx0XHRsZXQgYSA9IGJvbmUuYSwgYiA9IGJvbmUuYiwgYyA9IGJvbmUuYywgZCA9IGJvbmUuZCwgciA9IDAsIGNvcyA9IDAsIHNpbiA9IDA7XG5cdFx0XHRcdGlmICh0YW5nZW50cylcblx0XHRcdFx0XHRyID0gcG9zaXRpb25zW2lwIC0gMV07XG5cdFx0XHRcdGVsc2UgaWYgKHNwYWNlc1tpICsgMV0gPT09IDApXG5cdFx0XHRcdFx0ciA9IHBvc2l0aW9uc1tpcCArIDJdO1xuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0ciA9IE1hdGguYXRhbjIoZHksIGR4KTtcblx0XHRcdFx0ciAtPSBNYXRoLmF0YW4yKGMsIGEpO1xuXHRcdFx0XHRpZiAodGlwKSB7XG5cdFx0XHRcdFx0Y29zID0gTWF0aC5jb3Mocik7XG5cdFx0XHRcdFx0c2luID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdFx0Y29uc3QgbGVuZ3RoID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoO1xuXHRcdFx0XHRcdGJvbmVYICs9IChsZW5ndGggKiAoY29zICogYSAtIHNpbiAqIGMpIC0gZHgpICogbWl4Um90YXRlO1xuXHRcdFx0XHRcdGJvbmVZICs9IChsZW5ndGggKiAoc2luICogYSArIGNvcyAqIGMpIC0gZHkpICogbWl4Um90YXRlO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHIgKz0gb2Zmc2V0Um90YXRpb247XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHIgPiBNYXRoVXRpbHMuUEkpXG5cdFx0XHRcdFx0ciAtPSBNYXRoVXRpbHMuUEkyO1xuXHRcdFx0XHRlbHNlIGlmIChyIDwgLU1hdGhVdGlscy5QSSkgLy9cblx0XHRcdFx0XHRyICs9IE1hdGhVdGlscy5QSTI7XG5cdFx0XHRcdHIgKj0gbWl4Um90YXRlO1xuXHRcdFx0XHRjb3MgPSBNYXRoLmNvcyhyKTtcblx0XHRcdFx0c2luID0gTWF0aC5zaW4ocik7XG5cdFx0XHRcdGJvbmUuYSA9IGNvcyAqIGEgLSBzaW4gKiBjO1xuXHRcdFx0XHRib25lLmIgPSBjb3MgKiBiIC0gc2luICogZDtcblx0XHRcdFx0Ym9uZS5jID0gc2luICogYSArIGNvcyAqIGM7XG5cdFx0XHRcdGJvbmUuZCA9IHNpbiAqIGIgKyBjb3MgKiBkO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbXB1dGVXb3JsZFBvc2l0aW9ucyAoc2tlbGV0b246IFNrZWxldG9uLCBwYXRoOiBQYXRoQXR0YWNobWVudCwgc3BhY2VzQ291bnQ6IG51bWJlciwgdGFuZ2VudHM6IGJvb2xlYW4pIHtcblx0XHRjb25zdCBzbG90ID0gdGhpcy5zbG90O1xuXHRcdGxldCBwb3NpdGlvbiA9IHRoaXMuYXBwbGllZFBvc2UucG9zaXRpb247XG5cdFx0bGV0IHNwYWNlcyA9IHRoaXMuc3BhY2VzLCBvdXQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy5wb3NpdGlvbnMsIHNwYWNlc0NvdW50ICogMyArIDIpLCB3b3JsZDogQXJyYXk8bnVtYmVyPiA9IHRoaXMud29ybGQ7XG5cdFx0Y29uc3QgY2xvc2VkID0gcGF0aC5jbG9zZWQ7XG5cdFx0bGV0IHZlcnRpY2VzTGVuZ3RoID0gcGF0aC53b3JsZFZlcnRpY2VzTGVuZ3RoLCBjdXJ2ZUNvdW50ID0gdmVydGljZXNMZW5ndGggLyA2LCBwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5OT05FO1xuXG5cdFx0aWYgKCFwYXRoLmNvbnN0YW50U3BlZWQpIHtcblx0XHRcdGNvbnN0IGxlbmd0aHMgPSBwYXRoLmxlbmd0aHM7XG5cdFx0XHRjdXJ2ZUNvdW50IC09IGNsb3NlZCA/IDEgOiAyO1xuXHRcdFx0Y29uc3QgcGF0aExlbmd0aCA9IGxlbmd0aHNbY3VydmVDb3VudF07XG5cdFx0XHRpZiAodGhpcy5kYXRhLnBvc2l0aW9uTW9kZSA9PT0gUG9zaXRpb25Nb2RlLlBlcmNlbnQpIHBvc2l0aW9uICo9IHBhdGhMZW5ndGg7XG5cblx0XHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0XHRzd2l0Y2ggKHRoaXMuZGF0YS5zcGFjaW5nTW9kZSkge1xuXHRcdFx0XHRjYXNlIFNwYWNpbmdNb2RlLlBlcmNlbnQ6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoOyBicmVhaztcblx0XHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBtdWx0aXBsaWVyID0gMTtcblx0XHRcdH1cblxuXHRcdFx0d29ybGQgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy53b3JsZCwgOCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbyA9IDAsIGN1cnZlID0gMDsgaSA8IHNwYWNlc0NvdW50OyBpKyssIG8gKz0gMykge1xuXHRcdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRcdHBvc2l0aW9uICs9IHNwYWNlO1xuXHRcdFx0XHRsZXQgcCA9IHBvc2l0aW9uO1xuXG5cdFx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0XHRwICU9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0aWYgKHAgPCAwKSBwICs9IHBhdGhMZW5ndGg7XG5cdFx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHAgPCAwKSB7XG5cdFx0XHRcdFx0aWYgKHByZXZDdXJ2ZSAhPT0gUGF0aENvbnN0cmFpbnQuQkVGT1JFKSB7XG5cdFx0XHRcdFx0XHRwcmV2Q3VydmUgPSBQYXRoQ29uc3RyYWludC5CRUZPUkU7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCA0LCB3b3JsZCwgMCwgMik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuYWRkQmVmb3JlUG9zaXRpb24ocCwgd29ybGQsIDAsIG91dCwgbyk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAocCA+IHBhdGhMZW5ndGgpIHtcblx0XHRcdFx0XHRpZiAocHJldkN1cnZlICE9PSBQYXRoQ29uc3RyYWludC5BRlRFUikge1xuXHRcdFx0XHRcdFx0cHJldkN1cnZlID0gUGF0aENvbnN0cmFpbnQuQUZURVI7XG5cdFx0XHRcdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCB2ZXJ0aWNlc0xlbmd0aCAtIDYsIDQsIHdvcmxkLCAwLCAyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5hZGRBZnRlclBvc2l0aW9uKHAgLSBwYXRoTGVuZ3RoLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0XHRmb3IgKDsgOyBjdXJ2ZSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgbGVuZ3RoID0gbGVuZ3Roc1tjdXJ2ZV07XG5cdFx0XHRcdFx0aWYgKHAgPiBsZW5ndGgpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgcHJldiA9IGxlbmd0aHNbY3VydmUgLSAxXTtcblx0XHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRcdHByZXZDdXJ2ZSA9IGN1cnZlO1xuXHRcdFx0XHRcdGlmIChjbG9zZWQgJiYgY3VydmUgPT09IGN1cnZlQ291bnQpIHtcblx0XHRcdFx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgNCwgd29ybGQsIDQsIDIpO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgY3VydmUgKiA2ICsgMiwgOCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwLCB3b3JsZFswXSwgd29ybGRbMV0sIHdvcmxkWzJdLCB3b3JsZFszXSwgd29ybGRbNF0sIHdvcmxkWzVdLCB3b3JsZFs2XSwgd29ybGRbN10sIG91dCwgbyxcblx0XHRcdFx0XHR0YW5nZW50cyB8fCAoaSA+IDAgJiYgc3BhY2UgPT09IDApKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBvdXQ7XG5cdFx0fVxuXG5cdFx0Ly8gV29ybGQgdmVydGljZXMuXG5cdFx0aWYgKGNsb3NlZCkge1xuXHRcdFx0dmVydGljZXNMZW5ndGggKz0gMjtcblx0XHRcdHdvcmxkID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMud29ybGQsIHZlcnRpY2VzTGVuZ3RoKTtcblx0XHRcdHBhdGguY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIDIsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgd29ybGQsIDAsIDIpO1xuXHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgMiwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgMik7XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDJdID0gd29ybGRbMF07XG5cdFx0XHR3b3JsZFt2ZXJ0aWNlc0xlbmd0aCAtIDFdID0gd29ybGRbMV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1cnZlQ291bnQtLTtcblx0XHRcdHZlcnRpY2VzTGVuZ3RoIC09IDQ7XG5cdFx0XHR3b3JsZCA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLndvcmxkLCB2ZXJ0aWNlc0xlbmd0aCk7XG5cdFx0XHRwYXRoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAyLCB2ZXJ0aWNlc0xlbmd0aCwgd29ybGQsIDAsIDIpO1xuXHRcdH1cblxuXHRcdC8vIEN1cnZlIGxlbmd0aHMuXG5cdFx0Y29uc3QgY3VydmVzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRoaXMuY3VydmVzLCBjdXJ2ZUNvdW50KTtcblx0XHRsZXQgcGF0aExlbmd0aCA9IDA7XG5cdFx0bGV0IHgxID0gd29ybGRbMF0sIHkxID0gd29ybGRbMV0sIGN4MSA9IDAsIGN5MSA9IDAsIGN4MiA9IDAsIGN5MiA9IDAsIHgyID0gMCwgeTIgPSAwO1xuXHRcdGxldCB0bXB4ID0gMCwgdG1weSA9IDAsIGRkZGZ4ID0gMCwgZGRkZnkgPSAwLCBkZGZ4ID0gMCwgZGRmeSA9IDAsIGRmeCA9IDAsIGRmeSA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIHcgPSAyOyBpIDwgY3VydmVDb3VudDsgaSsrLCB3ICs9IDYpIHtcblx0XHRcdGN4MSA9IHdvcmxkW3ddO1xuXHRcdFx0Y3kxID0gd29ybGRbdyArIDFdO1xuXHRcdFx0Y3gyID0gd29ybGRbdyArIDJdO1xuXHRcdFx0Y3kyID0gd29ybGRbdyArIDNdO1xuXHRcdFx0eDIgPSB3b3JsZFt3ICsgNF07XG5cdFx0XHR5MiA9IHdvcmxkW3cgKyA1XTtcblx0XHRcdHRtcHggPSAoeDEgLSBjeDEgKiAyICsgY3gyKSAqIDAuMTg3NTtcblx0XHRcdHRtcHkgPSAoeTEgLSBjeTEgKiAyICsgY3kyKSAqIDAuMTg3NTtcblx0XHRcdGRkZGZ4ID0gKChjeDEgLSBjeDIpICogMyAtIHgxICsgeDIpICogMC4wOTM3NTtcblx0XHRcdGRkZGZ5ID0gKChjeTEgLSBjeTIpICogMyAtIHkxICsgeTIpICogMC4wOTM3NTtcblx0XHRcdGRkZnggPSB0bXB4ICogMiArIGRkZGZ4O1xuXHRcdFx0ZGRmeSA9IHRtcHkgKiAyICsgZGRkZnk7XG5cdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC43NSArIHRtcHggKyBkZGRmeCAqIDAuMTY2NjY2Njc7XG5cdFx0XHRkZnkgPSAoY3kxIC0geTEpICogMC43NSArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdGRkZnggKz0gZGRkZng7XG5cdFx0XHRkZGZ5ICs9IGRkZGZ5O1xuXHRcdFx0cGF0aExlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdGRmeCArPSBkZGZ4O1xuXHRcdFx0ZGZ5ICs9IGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdGRmeSArPSBkZGZ5ICsgZGRkZnk7XG5cdFx0XHRwYXRoTGVuZ3RoICs9IE1hdGguc3FydChkZnggKiBkZnggKyBkZnkgKiBkZnkpO1xuXHRcdFx0Y3VydmVzW2ldID0gcGF0aExlbmd0aDtcblx0XHRcdHgxID0geDI7XG5cdFx0XHR5MSA9IHkyO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRhdGEucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuUGVyY2VudCkgcG9zaXRpb24gKj0gcGF0aExlbmd0aDtcblxuXHRcdGxldCBtdWx0aXBsaWVyOiBudW1iZXI7XG5cdFx0c3dpdGNoICh0aGlzLmRhdGEuc3BhY2luZ01vZGUpIHtcblx0XHRcdGNhc2UgU3BhY2luZ01vZGUuUGVyY2VudDogbXVsdGlwbGllciA9IHBhdGhMZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSBTcGFjaW5nTW9kZS5Qcm9wb3J0aW9uYWw6IG11bHRpcGxpZXIgPSBwYXRoTGVuZ3RoIC8gc3BhY2VzQ291bnQ7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogbXVsdGlwbGllciA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc2VnbWVudHMgPSB0aGlzLnNlZ21lbnRzO1xuXHRcdGxldCBjdXJ2ZUxlbmd0aCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG8gPSAwLCBjdXJ2ZSA9IDAsIHNlZ21lbnQgPSAwOyBpIDwgc3BhY2VzQ291bnQ7IGkrKywgbyArPSAzKSB7XG5cdFx0XHRjb25zdCBzcGFjZSA9IHNwYWNlc1tpXSAqIG11bHRpcGxpZXI7XG5cdFx0XHRwb3NpdGlvbiArPSBzcGFjZTtcblx0XHRcdGxldCBwID0gcG9zaXRpb247XG5cblx0XHRcdGlmIChjbG9zZWQpIHtcblx0XHRcdFx0cCAlPSBwYXRoTGVuZ3RoO1xuXHRcdFx0XHRpZiAocCA8IDApIHAgKz0gcGF0aExlbmd0aDtcblx0XHRcdFx0Y3VydmUgPSAwO1xuXHRcdFx0XHRzZWdtZW50ID0gMDtcblx0XHRcdH0gZWxzZSBpZiAocCA8IDApIHtcblx0XHRcdFx0dGhpcy5hZGRCZWZvcmVQb3NpdGlvbihwLCB3b3JsZCwgMCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9IGVsc2UgaWYgKHAgPiBwYXRoTGVuZ3RoKSB7XG5cdFx0XHRcdHRoaXMuYWRkQWZ0ZXJQb3NpdGlvbihwIC0gcGF0aExlbmd0aCwgd29ybGQsIHZlcnRpY2VzTGVuZ3RoIC0gNCwgb3V0LCBvKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIERldGVybWluZSBjdXJ2ZSBjb250YWluaW5nIHBvc2l0aW9uLlxuXHRcdFx0Zm9yICg7IDsgY3VydmUrKykge1xuXHRcdFx0XHRjb25zdCBsZW5ndGggPSBjdXJ2ZXNbY3VydmVdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChjdXJ2ZSA9PT0gMClcblx0XHRcdFx0XHRwIC89IGxlbmd0aDtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJldiA9IGN1cnZlc1tjdXJ2ZSAtIDFdO1xuXHRcdFx0XHRcdHAgPSAocCAtIHByZXYpIC8gKGxlbmd0aCAtIHByZXYpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDdXJ2ZSBzZWdtZW50IGxlbmd0aHMuXG5cdFx0XHRpZiAoY3VydmUgIT09IHByZXZDdXJ2ZSkge1xuXHRcdFx0XHRwcmV2Q3VydmUgPSBjdXJ2ZTtcblx0XHRcdFx0bGV0IGlpID0gY3VydmUgKiA2O1xuXHRcdFx0XHR4MSA9IHdvcmxkW2lpXTtcblx0XHRcdFx0eTEgPSB3b3JsZFtpaSArIDFdO1xuXHRcdFx0XHRjeDEgPSB3b3JsZFtpaSArIDJdO1xuXHRcdFx0XHRjeTEgPSB3b3JsZFtpaSArIDNdO1xuXHRcdFx0XHRjeDIgPSB3b3JsZFtpaSArIDRdO1xuXHRcdFx0XHRjeTIgPSB3b3JsZFtpaSArIDVdO1xuXHRcdFx0XHR4MiA9IHdvcmxkW2lpICsgNl07XG5cdFx0XHRcdHkyID0gd29ybGRbaWkgKyA3XTtcblx0XHRcdFx0dG1weCA9ICh4MSAtIGN4MSAqIDIgKyBjeDIpICogMC4wMztcblx0XHRcdFx0dG1weSA9ICh5MSAtIGN5MSAqIDIgKyBjeTIpICogMC4wMztcblx0XHRcdFx0ZGRkZnggPSAoKGN4MSAtIGN4MikgKiAzIC0geDEgKyB4MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRkZnkgPSAoKGN5MSAtIGN5MikgKiAzIC0geTEgKyB5MikgKiAwLjAwNjtcblx0XHRcdFx0ZGRmeCA9IHRtcHggKiAyICsgZGRkZng7XG5cdFx0XHRcdGRkZnkgPSB0bXB5ICogMiArIGRkZGZ5O1xuXHRcdFx0XHRkZnggPSAoY3gxIC0geDEpICogMC4zICsgdG1weCArIGRkZGZ4ICogMC4xNjY2NjY2Nztcblx0XHRcdFx0ZGZ5ID0gKGN5MSAtIHkxKSAqIDAuMyArIHRtcHkgKyBkZGRmeSAqIDAuMTY2NjY2Njc7XG5cdFx0XHRcdGN1cnZlTGVuZ3RoID0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzBdID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdGZvciAoaWkgPSAxOyBpaSA8IDg7IGlpKyspIHtcblx0XHRcdFx0XHRkZnggKz0gZGRmeDtcblx0XHRcdFx0XHRkZnkgKz0gZGRmeTtcblx0XHRcdFx0XHRkZGZ4ICs9IGRkZGZ4O1xuXHRcdFx0XHRcdGRkZnkgKz0gZGRkZnk7XG5cdFx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdFx0c2VnbWVudHNbaWldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGZ4ICs9IGRkZng7XG5cdFx0XHRcdGRmeSArPSBkZGZ5O1xuXHRcdFx0XHRjdXJ2ZUxlbmd0aCArPSBNYXRoLnNxcnQoZGZ4ICogZGZ4ICsgZGZ5ICogZGZ5KTtcblx0XHRcdFx0c2VnbWVudHNbOF0gPSBjdXJ2ZUxlbmd0aDtcblx0XHRcdFx0ZGZ4ICs9IGRkZnggKyBkZGRmeDtcblx0XHRcdFx0ZGZ5ICs9IGRkZnkgKyBkZGRmeTtcblx0XHRcdFx0Y3VydmVMZW5ndGggKz0gTWF0aC5zcXJ0KGRmeCAqIGRmeCArIGRmeSAqIGRmeSk7XG5cdFx0XHRcdHNlZ21lbnRzWzldID0gY3VydmVMZW5ndGg7XG5cdFx0XHRcdHNlZ21lbnQgPSAwO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBXZWlnaHQgYnkgc2VnbWVudCBsZW5ndGguXG5cdFx0XHRwICo9IGN1cnZlTGVuZ3RoO1xuXHRcdFx0Zm9yICg7IDsgc2VnbWVudCsrKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aCA9IHNlZ21lbnRzW3NlZ21lbnRdO1xuXHRcdFx0XHRpZiAocCA+IGxlbmd0aCkgY29udGludWU7XG5cdFx0XHRcdGlmIChzZWdtZW50ID09PSAwKVxuXHRcdFx0XHRcdHAgLz0gbGVuZ3RoO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBwcmV2ID0gc2VnbWVudHNbc2VnbWVudCAtIDFdO1xuXHRcdFx0XHRcdHAgPSBzZWdtZW50ICsgKHAgLSBwcmV2KSAvIChsZW5ndGggLSBwcmV2KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHRoaXMuYWRkQ3VydmVQb3NpdGlvbihwICogMC4xLCB4MSwgeTEsIGN4MSwgY3kxLCBjeDIsIGN5MiwgeDIsIHkyLCBvdXQsIG8sIHRhbmdlbnRzIHx8IChpID4gMCAmJiBzcGFjZSA9PT0gMCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0YWRkQmVmb3JlUG9zaXRpb24gKHA6IG51bWJlciwgdGVtcDogQXJyYXk8bnVtYmVyPiwgaTogbnVtYmVyLCBvdXQ6IEFycmF5PG51bWJlcj4sIG86IG51bWJlcikge1xuXHRcdGNvbnN0IHgxID0gdGVtcFtpXSwgeTEgPSB0ZW1wW2kgKyAxXSwgZHggPSB0ZW1wW2kgKyAyXSAtIHgxLCBkeSA9IHRlbXBbaSArIDNdIC0geTEsIHIgPSBNYXRoLmF0YW4yKGR5LCBkeCk7XG5cdFx0b3V0W29dID0geDEgKyBwICogTWF0aC5jb3Mocik7XG5cdFx0b3V0W28gKyAxXSA9IHkxICsgcCAqIE1hdGguc2luKHIpO1xuXHRcdG91dFtvICsgMl0gPSByO1xuXHR9XG5cblx0YWRkQWZ0ZXJQb3NpdGlvbiAocDogbnVtYmVyLCB0ZW1wOiBBcnJheTxudW1iZXI+LCBpOiBudW1iZXIsIG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeDEgPSB0ZW1wW2kgKyAyXSwgeTEgPSB0ZW1wW2kgKyAzXSwgZHggPSB4MSAtIHRlbXBbaV0sIGR5ID0geTEgLSB0ZW1wW2kgKyAxXSwgciA9IE1hdGguYXRhbjIoZHksIGR4KTtcblx0XHRvdXRbb10gPSB4MSArIHAgKiBNYXRoLmNvcyhyKTtcblx0XHRvdXRbbyArIDFdID0geTEgKyBwICogTWF0aC5zaW4ocik7XG5cdFx0b3V0W28gKyAyXSA9IHI7XG5cdH1cblxuXHRhZGRDdXJ2ZVBvc2l0aW9uIChwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLFxuXHRcdG91dDogQXJyYXk8bnVtYmVyPiwgbzogbnVtYmVyLCB0YW5nZW50czogYm9vbGVhbikge1xuXHRcdGlmIChwID09PSAwIHx8IE51bWJlci5pc05hTihwKSkge1xuXHRcdFx0b3V0W29dID0geDE7XG5cdFx0XHRvdXRbbyArIDFdID0geTE7XG5cdFx0XHRvdXRbbyArIDJdID0gTWF0aC5hdGFuMihjeTEgLSB5MSwgY3gxIC0geDEpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0dCA9IHAgKiBwLCB0dHQgPSB0dCAqIHAsIHUgPSAxIC0gcCwgdXUgPSB1ICogdSwgdXV1ID0gdXUgKiB1O1xuXHRcdGNvbnN0IHV0ID0gdSAqIHAsIHV0MyA9IHV0ICogMywgdXV0MyA9IHUgKiB1dDMsIHV0dDMgPSB1dDMgKiBwO1xuXHRcdGNvbnN0IHggPSB4MSAqIHV1dSArIGN4MSAqIHV1dDMgKyBjeDIgKiB1dHQzICsgeDIgKiB0dHQsIHkgPSB5MSAqIHV1dSArIGN5MSAqIHV1dDMgKyBjeTIgKiB1dHQzICsgeTIgKiB0dHQ7XG5cdFx0b3V0W29dID0geDtcblx0XHRvdXRbbyArIDFdID0geTtcblx0XHRpZiAodGFuZ2VudHMpIHtcblx0XHRcdGlmIChwIDwgMC4wMDEpXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKGN5MSAtIHkxLCBjeDEgLSB4MSk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdG91dFtvICsgMl0gPSBNYXRoLmF0YW4yKHkgLSAoeTEgKiB1dSArIGN5MSAqIHV0ICogMiArIGN5MiAqIHR0KSwgeCAtICh4MSAqIHV1ICsgY3gxICogdXQgKiAyICsgY3gyICogdHQpKTtcblx0XHR9XG5cdH1cblxuXHRzb3J0IChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRjb25zdCBzbG90SW5kZXggPSB0aGlzLnNsb3QuZGF0YS5pbmRleDtcblx0XHRjb25zdCBzbG90Qm9uZSA9IHRoaXMuc2xvdC5ib25lO1xuXHRcdGlmIChza2VsZXRvbi5za2luICE9IG51bGwpIHRoaXMuc29ydFBhdGhTbG90KHNrZWxldG9uLCBza2VsZXRvbi5za2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRpZiAoc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiAhPSBudWxsICYmIHNrZWxldG9uLmRhdGEuZGVmYXVsdFNraW4gIT09IHNrZWxldG9uLnNraW4pXG5cdFx0XHR0aGlzLnNvcnRQYXRoU2xvdChza2VsZXRvbiwgc2tlbGV0b24uZGF0YS5kZWZhdWx0U2tpbiwgc2xvdEluZGV4LCBzbG90Qm9uZSk7XG5cdFx0dGhpcy5zb3J0UGF0aChza2VsZXRvbiwgdGhpcy5zbG90LnBvc2UuYXR0YWNobWVudCwgc2xvdEJvbmUpO1xuXHRcdGNvbnN0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRjb25zdCBib25lQ291bnQgPSB0aGlzLmJvbmVzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKSB7XG5cdFx0XHRjb25zdCBib25lID0gYm9uZXNbaV0uYm9uZTtcblx0XHRcdHNrZWxldG9uLnNvcnRCb25lKGJvbmUpO1xuXHRcdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdFx0fVxuXHRcdHNrZWxldG9uLl91cGRhdGVDYWNoZS5wdXNoKHRoaXMpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHRza2VsZXRvbi5zb3J0UmVzZXQoYm9uZXNbaV0uYm9uZS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGJvbmVzW2ldLmJvbmUuc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgc29ydFBhdGhTbG90IChza2VsZXRvbjogU2tlbGV0b24sIHNraW46IFNraW4sIHNsb3RJbmRleDogbnVtYmVyLCBzbG90Qm9uZTogQm9uZSkge1xuXHRcdGNvbnN0IGVudHJpZXMgPSBza2luLmdldEF0dGFjaG1lbnRzKCk7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3QgZW50cnkgPSBlbnRyaWVzW2ldO1xuXHRcdFx0aWYgKGVudHJ5LnNsb3RJbmRleCA9PT0gc2xvdEluZGV4KSB0aGlzLnNvcnRQYXRoKHNrZWxldG9uLCBlbnRyeS5hdHRhY2htZW50LCBzbG90Qm9uZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzb3J0UGF0aCAoc2tlbGV0b246IFNrZWxldG9uLCBhdHRhY2htZW50OiBBdHRhY2htZW50IHwgbnVsbCwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cdFx0Y29uc3QgcGF0aEJvbmVzID0gYXR0YWNobWVudC5ib25lcztcblx0XHRpZiAocGF0aEJvbmVzID09IG51bGwpXG5cdFx0XHRza2VsZXRvbi5zb3J0Qm9uZShzbG90Qm9uZSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCBib25lcyA9IHNrZWxldG9uLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwYXRoQm9uZXMubGVuZ3RoOyBpIDwgbjspIHtcblx0XHRcdFx0bGV0IG5uID0gcGF0aEJvbmVzW2krK107XG5cdFx0XHRcdG5uICs9IGk7XG5cdFx0XHRcdHdoaWxlIChpIDwgbm4pXG5cdFx0XHRcdFx0c2tlbGV0b24uc29ydEJvbmUoYm9uZXNbcGF0aEJvbmVzW2krK11dKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpc1NvdXJjZUFjdGl2ZSAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2xvdC5ib25lLmFjdGl2ZTtcblx0fVxufVxuIl19
|