@esotericsoftware/spine-core 4.3.9 → 4.3.11
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/Skeleton.d.ts +1 -1
- package/dist/Skeleton.js +1 -1
- package/dist/SkeletonClipping.js +40 -23
- package/dist/SkeletonCoordinateConverter.d.ts +57 -0
- package/dist/SkeletonCoordinateConverter.js +30 -0
- package/dist/SkeletonData.d.ts +1 -1
- package/dist/SkeletonData.js +1 -1
- package/dist/SkeletonPhysicsMovement.d.ts +134 -0
- package/dist/SkeletonPhysicsMovement.js +189 -0
- package/dist/SkeletonRendererCore.js +15 -5
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +198 -24
- package/dist/esm/spine-core.mjs.map +3 -3
- package/dist/iife/spine-core.js +198 -24
- package/dist/iife/spine-core.js.map +3 -3
- package/dist/iife/spine-core.min.js +2 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/package.json +1 -1
package/dist/SkeletonClipping.js
CHANGED
|
@@ -246,7 +246,7 @@ export class SkeletonClipping {
|
|
|
246
246
|
t = triangles[i + 2];
|
|
247
247
|
const x3 = vertices[t * stride], y3 = vertices[t * stride + 1];
|
|
248
248
|
const u3 = uvs[t << 1], v3 = uvs[(t << 1) + 1];
|
|
249
|
-
|
|
249
|
+
let d0 = 0, d1 = 0, d2 = 0, d4 = 0, d = 0;
|
|
250
250
|
for (let p = 0; p < polygonsCount; p++) {
|
|
251
251
|
let s = clippedVertices.length;
|
|
252
252
|
if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p])) {
|
|
@@ -255,6 +255,13 @@ export class SkeletonClipping {
|
|
|
255
255
|
if (clipOutputLength === 0)
|
|
256
256
|
continue;
|
|
257
257
|
let clipOutputCount = clipOutputLength >> 1;
|
|
258
|
+
if (d === 0) {
|
|
259
|
+
d0 = y2 - y3;
|
|
260
|
+
d1 = x3 - x2;
|
|
261
|
+
d2 = x1 - x3;
|
|
262
|
+
d4 = y3 - y1;
|
|
263
|
+
d = 1 / (d0 * d2 - d1 * d4);
|
|
264
|
+
}
|
|
258
265
|
const cv = Utils.setArraySize(clippedVertices, s + clipOutputCount * stride);
|
|
259
266
|
for (let ii = 0; ii < clipOutputLength; ii += 2, s += stride) {
|
|
260
267
|
const x = clipOutputItems[ii], y = clipOutputItems[ii + 1];
|
|
@@ -457,7 +464,7 @@ export class SkeletonClipping {
|
|
|
457
464
|
const x3 = vertices[vertexStart + v], y3 = vertices[vertexStart + v + 1];
|
|
458
465
|
uv = t << 1;
|
|
459
466
|
const u3 = uvs[uv], v3 = uvs[uv + 1];
|
|
460
|
-
|
|
467
|
+
let d0 = 0, d1 = 0, d2 = 0, d4 = 0, d = 0;
|
|
461
468
|
for (let p = 0; p < polygonsCount; p++) {
|
|
462
469
|
let s = this.clippedVerticesLength;
|
|
463
470
|
if (this.clip(x1, y1, x2, y2, x3, y3, polygons[p])) {
|
|
@@ -466,6 +473,13 @@ export class SkeletonClipping {
|
|
|
466
473
|
if (clipOutputLength === 0)
|
|
467
474
|
continue;
|
|
468
475
|
let clipOutputCount = clipOutputLength >> 1;
|
|
476
|
+
if (d === 0) {
|
|
477
|
+
d0 = y2 - y3;
|
|
478
|
+
d1 = x3 - x2;
|
|
479
|
+
d2 = x1 - x3;
|
|
480
|
+
d4 = y3 - y1;
|
|
481
|
+
d = 1 / (d0 * d2 - d1 * d4);
|
|
482
|
+
}
|
|
469
483
|
const newLength = s + clipOutputCount * stride;
|
|
470
484
|
if (clippedVertices.length < newLength) {
|
|
471
485
|
this._clippedVerticesTyped = new Float32Array(newLength * 2);
|
|
@@ -585,16 +599,15 @@ export class SkeletonClipping {
|
|
|
585
599
|
const edgeX = v[i], edgeY = v[i + 1], ex = edgeX - v[i + 2], ey = edgeY - v[i + 3];
|
|
586
600
|
const outputStart = output.length;
|
|
587
601
|
const iv = input;
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
602
|
+
x1 = iv[0];
|
|
603
|
+
y1 = iv[1];
|
|
604
|
+
let s1 = ey * (edgeX - x1) - ex * (edgeY - y1);
|
|
605
|
+
for (let ii = 2, nn = input.length - 2; ii <= nn; ii += 2) {
|
|
592
606
|
x2 = iv[ii];
|
|
593
607
|
y2 = iv[ii + 1];
|
|
594
|
-
const s2 = ey * (edgeX - x2)
|
|
595
|
-
const s1 = ey * (edgeX - x1) - ex * (edgeY - y1);
|
|
608
|
+
const s2 = ey * (edgeX - x2) - ex * (edgeY - y2);
|
|
596
609
|
if (s1 > 0) {
|
|
597
|
-
if (s2) // v1 in, v2 in
|
|
610
|
+
if (s2 > 0) // v1 in, v2 in
|
|
598
611
|
output.push(x2, y2);
|
|
599
612
|
else { // v1 in, v2 out
|
|
600
613
|
const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex);
|
|
@@ -606,7 +619,7 @@ export class SkeletonClipping {
|
|
|
606
619
|
output.push(x2, y2);
|
|
607
620
|
}
|
|
608
621
|
}
|
|
609
|
-
else if (s2) { // v1 out, v2 in
|
|
622
|
+
else if (s2 > 0) { // v1 out, v2 in
|
|
610
623
|
const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex);
|
|
611
624
|
if (t >= 0 && t <= 1) {
|
|
612
625
|
output.push(x1 + ix * t, y1 + iy * t, x2, y2);
|
|
@@ -617,6 +630,9 @@ export class SkeletonClipping {
|
|
|
617
630
|
}
|
|
618
631
|
else // v1 out, v2 out
|
|
619
632
|
clipped = true;
|
|
633
|
+
x1 = x2;
|
|
634
|
+
y1 = y2;
|
|
635
|
+
s1 = s2;
|
|
620
636
|
}
|
|
621
637
|
if (outputStart === output.length) { // All outside.
|
|
622
638
|
originalOutput.length = 0;
|
|
@@ -667,19 +683,17 @@ export class SkeletonClipping {
|
|
|
667
683
|
const outputStart = output.length, fragmentStart = this.inverseVertices.length;
|
|
668
684
|
this.inverseVertices.push(0);
|
|
669
685
|
iv = input;
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
686
|
+
x1 = iv[0];
|
|
687
|
+
y1 = iv[1];
|
|
688
|
+
let s1 = ey * (edgeX - x1) - ex * (edgeY - y1);
|
|
689
|
+
for (let ii = 2, nn = input.length - 2; ii <= nn; ii += 2) {
|
|
674
690
|
x2 = iv[ii];
|
|
675
691
|
y2 = iv[ii + 1];
|
|
676
|
-
const s2 = ey * (edgeX - x2)
|
|
677
|
-
const s1 = ey * (edgeX - x1) - ex * (edgeY - y1);
|
|
692
|
+
const s2 = ey * (edgeX - x2) - ex * (edgeY - y2);
|
|
678
693
|
if (s1 > 0) {
|
|
679
|
-
if (s2) // v1 in, v2 in
|
|
694
|
+
if (s2 > 0) // v1 in, v2 in
|
|
680
695
|
output.push(x2, y2);
|
|
681
|
-
else {
|
|
682
|
-
// v1 in, v2 out
|
|
696
|
+
else { // v1 in, v2 out
|
|
683
697
|
const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex);
|
|
684
698
|
if (t >= 0 && t <= 1) {
|
|
685
699
|
const cx = x1 + ix * t, cy = y1 + iy * t;
|
|
@@ -690,10 +704,10 @@ export class SkeletonClipping {
|
|
|
690
704
|
output.push(x2, y2);
|
|
691
705
|
}
|
|
692
706
|
}
|
|
693
|
-
else if (s2) { // v1 out, v2 in
|
|
694
|
-
const
|
|
707
|
+
else if (s2 > 0) { // v1 out, v2 in
|
|
708
|
+
const ix = x2 - x1, iy = y2 - y1, t = s1 / (ix * ey - iy * ex);
|
|
695
709
|
if (t >= 0 && t <= 1) {
|
|
696
|
-
const cx = x1 +
|
|
710
|
+
const cx = x1 + ix * t, cy = y1 + iy * t;
|
|
697
711
|
this.inverseVertices.push(cx, cy);
|
|
698
712
|
output.push(cx, cy, x2, y2);
|
|
699
713
|
}
|
|
@@ -702,6 +716,9 @@ export class SkeletonClipping {
|
|
|
702
716
|
}
|
|
703
717
|
else // v1 out, v2 out
|
|
704
718
|
this.inverseVertices.push(x2, y2);
|
|
719
|
+
x1 = x2;
|
|
720
|
+
y1 = y2;
|
|
721
|
+
s1 = s2;
|
|
705
722
|
}
|
|
706
723
|
const fragmentSize = this.inverseVertices.length - fragmentStart - 1;
|
|
707
724
|
if (fragmentSize >= 6)
|
|
@@ -801,4 +818,4 @@ export class SkeletonClipping {
|
|
|
801
818
|
polygon.length = s - 2;
|
|
802
819
|
}
|
|
803
820
|
}
|
|
804
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25DbGlwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvbkNsaXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUsvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFvQyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckUsTUFBTSxPQUFPLGdCQUFnQjtJQUNwQixZQUFZLEdBQXdCLElBQUksQ0FBQztJQUN6QyxlQUFlLEdBQUcsRUFBYyxDQUFDO0lBQ2pDLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztJQUNsQyxVQUFVLEdBQUcsRUFBYyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUVBQXFFO0lBQ3JFLFVBQVUsR0FBRyxFQUFjLENBQUM7SUFFNUIsZ0JBQWdCLEdBQUcsRUFBYyxDQUFDO0lBQ2xDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUJBQXFCLEdBQWlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELGdCQUFnQixHQUFpQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxzQkFBc0IsR0FBZ0IsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsb0JBQW9CLEdBQWlCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELGVBQWUsR0FBaUIsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQscUJBQXFCLEdBQWdCLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELHFCQUFxQixHQUFHLENBQUMsQ0FBQztJQUMxQixnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDckIsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLE9BQU8sR0FBRyxFQUFjLENBQUM7SUFD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d0JBQ2YsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBRWhCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7eUJBQU0sQ0FBQzt3QkFDUCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ25CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBRXBCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFH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Q0FBQztnQkFDOUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUM5QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDOUIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFB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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3RixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNQLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQUUsTUFBTTtZQUNwQixDQUFDO1lBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB0eXBlIHsgQ2xpcHBpbmdBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQ2xpcHBpbmdBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB0eXBlIHsgU2xvdCB9IGZyb20gXCIuL1Nsb3QuanNcIjtcbmltcG9ydCB7IFRyaWFuZ3VsYXRvciB9IGZyb20gXCIuL1RyaWFuZ3VsYXRvci5qc1wiO1xuaW1wb3J0IHsgdHlwZSBDb2xvciwgdHlwZSBOdW1iZXJBcnJheUxpa2UsIFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIFNrZWxldG9uQ2xpcHBpbmcge1xuXHRwcml2YXRlIHRyaWFuZ3VsYXRvcjogVHJpYW5ndWxhdG9yIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgY2xpcHBpbmdQb2x5Z29uID0gW10gYXMgbnVtYmVyW107XG5cdHByaXZhdGUgY2xpcHBpbmdQb2x5Z29uczogbnVtYmVyW11bXSA9IFtdO1xuXHRwcml2YXRlIGNsaXBPdXRwdXQgPSBbXSBhcyBudW1iZXJbXTtcblx0Y2xpcHBlZFZlcnRpY2VzID0gW10gYXMgbnVtYmVyW107XG5cblx0LyoqIEFuIGVtcHR5IGFycmF5IHVubGVzcyB7QGxpbmsgY2xpcFRyaWFuZ2xlc1VucGFja2VkfSB3YXMgdXNlZC4gKiovXG5cdGNsaXBwZWRVVnMgPSBbXSBhcyBudW1iZXJbXTtcblxuXHRjbGlwcGVkVHJpYW5nbGVzID0gW10gYXMgbnVtYmVyW107XG5cdGludmVyc2VWZXJ0aWNlcyA9IFtdIGFzIG51bWJlcltdO1xuXG5cdF9jbGlwcGVkVmVydGljZXNUeXBlZDogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgxMDI0KTtcblx0X2NsaXBwZWRVVnNUeXBlZDogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgxMDI0KTtcblx0X2NsaXBwZWRUcmlhbmdsZXNUeXBlZDogVWludDE2QXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMTAyNCk7XG5cdGNsaXBwZWRWZXJ0aWNlc1R5cGVkOiBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KDApO1xuXHRjbGlwcGVkVVZzVHlwZWQ6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoMCk7XG5cdGNsaXBwZWRUcmlhbmdsZXNUeXBlZDogVWludDE2QXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMCk7XG5cdGNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IDA7XG5cdGNsaXBwZWRVVnNMZW5ndGggPSAwO1xuXHRjbGlwcGVkVHJpYW5nbGVzTGVuZ3RoID0gMDtcblxuXHRwcml2YXRlIHNjcmF0Y2ggPSBbXSBhcyBudW1iZXJbXTtcblx0cHJpdmF0ZSBpbnZlcnNlID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBjbGlwQXR0YWNobWVudDogQ2xpcHBpbmdBdHRhY2htZW50IHwgbnVsbCA9IG51bGw7XG5cblx0Y2xpcFN0YXJ0IChza2VsZXRvbjogU2tlbGV0b24sIHNsb3Q6IFNsb3QsIGNsaXA6IENsaXBwaW5nQXR0YWNobWVudCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNsaXBBdHRhY2htZW50KSByZXR1cm47XG5cdFx0Y29uc3QgbiA9IGNsaXAud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHR0aGlzLmNsaXBBdHRhY2htZW50ID0gY2xpcDtcblx0XHR0aGlzLmludmVyc2UgPSBjbGlwLmludmVyc2U7XG5cblx0XHRjb25zdCB2ZXJ0aWNlcyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLmNsaXBwaW5nUG9seWdvbiwgbik7XG5cdFx0Y2xpcC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgbiwgdmVydGljZXMsIDAsIDIpO1xuXHRcdGNvbnN0IGNsaXBwaW5nUG9seWdvbiA9IHRoaXMuY2xpcHBpbmdQb2x5Z29uO1xuXHRcdGNvbnN0IGNvbnZleCA9IHRoaXMubWFrZUNsb2Nrd2lzZShjbGlwcGluZ1BvbHlnb24pO1xuXG5cdFx0aWYgKGNvbnZleCB8fCB0aGlzLmludmVyc2UgfHwgY2xpcC5jb252ZXgpIHtcblx0XHRcdGlmICghY29udmV4KSB0aGlzLm1ha2VDb252ZXgoY2xpcHBpbmdQb2x5Z29uKTtcblx0XHRcdHRoaXMuY2xpcHBpbmdQb2x5Z29uLnB1c2goY2xpcHBpbmdQb2x5Z29uWzBdLCBjbGlwcGluZ1BvbHlnb25bMV0pO1xuXHRcdFx0dGhpcy5jbGlwcGluZ1BvbHlnb25zLnB1c2goY2xpcHBpbmdQb2x5Z29uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMudHJpYW5ndWxhdG9yID09PSBudWxsKSB0aGlzLnRyaWFuZ3VsYXRvciA9IG5ldyBUcmlhbmd1bGF0b3IoKTtcblx0XHRcdHRoaXMuY2xpcHBpbmdQb2x5Z29ucy5wdXNoKC4uLnRoaXMudHJpYW5ndWxhdG9yLmRlY29tcG9zZShjbGlwcGluZ1BvbHlnb24sIHRoaXMudHJpYW5ndWxhdG9yLnRyaWFuZ3VsYXRlKGNsaXBwaW5nUG9seWdvbikpKTtcblx0XHR9XG5cdH1cblxuXHRjbGlwRW5kIChzbG90PzogU2xvdCkge1xuXHRcdGlmICghdGhpcy5jbGlwQXR0YWNobWVudCkgcmV0dXJuO1xuXHRcdGlmIChzbG90ICYmIHRoaXMuY2xpcEF0dGFjaG1lbnQuZW5kU2xvdCAhPT0gc2xvdC5kYXRhKSByZXR1cm47XG5cdFx0dGhpcy5jbGlwQXR0YWNobWVudCA9IG51bGw7XG5cdFx0dGhpcy5jbGlwcGluZ1BvbHlnb25zLmxlbmd0aCA9IDA7XG5cdH1cblxuXHRpc0NsaXBwaW5nICgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jbGlwQXR0YWNobWVudCAhPSBudWxsO1xuXHR9XG5cblx0Y2xpcFRyaWFuZ2xlcyAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyKTogYm9vbGVhbjtcblx0Y2xpcFRyaWFuZ2xlcyAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyLFxuXHRcdHV2czogTnVtYmVyQXJyYXlMaWtlLCBsaWdodDogQ29sb3IsIGRhcms6IENvbG9yLCB0d29Db2xvcjogYm9vbGVhbiwgc3RyaWRlOiBudW1iZXIpOiBib29sZWFuO1xuXHRjbGlwVHJpYW5nbGVzICh2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzTGVuZ3RoOiBudW1iZXIsXG5cdFx0dXZzPzogTnVtYmVyQXJyYXlMaWtlLCBsaWdodD86IENvbG9yLCBkYXJrPzogQ29sb3IsIHR3b0NvbG9yPzogYm9vbGVhbiwgc3RyaWRlPzogbnVtYmVyKTogYm9vbGVhbiB7XG5cblx0XHRyZXR1cm4gKHV2cyAmJiBsaWdodCAmJiBkYXJrICYmIHR5cGVvZiB0d29Db2xvciA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiBzdHJpZGUgPT09ICdudW1iZXInKVxuXHRcdFx0PyB0aGlzLmNsaXBUcmlhbmdsZXNSZW5kZXIodmVydGljZXMsIHRyaWFuZ2xlcywgdHJpYW5nbGVzTGVuZ3RoLCB1dnMsIGxpZ2h0LCBkYXJrLCB0d29Db2xvciwgc3RyaWRlKVxuXHRcdFx0OiB0aGlzLmNsaXBUcmlhbmdsZXNOb1JlbmRlcih2ZXJ0aWNlcywgdHJpYW5nbGVzLCB0cmlhbmdsZXNMZW5ndGgpO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGlwVHJpYW5nbGVzTm9SZW5kZXIgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGNsaXBwZWRWZXJ0aWNlcyA9IHRoaXMuY2xpcHBlZFZlcnRpY2VzO1xuXHRcdGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGggPSAwO1xuXHRcdGNvbnN0IGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0Y2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGggPSAwO1xuXHRcdGxldCBpbmRleCA9IDA7XG5cblx0XHRpZiAodGhpcy5pbnZlcnNlKSB7XG5cdFx0XHRjb25zdCBwb2x5Z29uID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zWzBdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0XHRsZXQgdCA9IHRyaWFuZ2xlc1tpXSA8PCAxO1xuXHRcdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3RdLCB5MSA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMTtcblx0XHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t0XSwgeTIgPSB2ZXJ0aWNlc1t0ICsgMV07XG5cdFx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdF0sIHkzID0gdmVydGljZXNbdCArIDFdO1xuXHRcdFx0XHR0aGlzLmNsaXBJbnZlcnNlKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb24pO1xuXG5cdFx0XHRcdGNvbnN0IGl2ID0gdGhpcy5pbnZlcnNlVmVydGljZXM7XG5cdFx0XHRcdGZvciAobGV0IG9mZnNldCA9IDAsIG5uID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoOyBvZmZzZXQgPCBubjspIHtcblx0XHRcdFx0XHRjb25zdCBwb2x5Z29uU2l6ZSA9IGl2W29mZnNldCsrXTtcblx0XHRcdFx0XHRsZXQgdmVydGV4Q291bnQgPSBwb2x5Z29uU2l6ZSA+PiAxLCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblxuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIHBvbHlnb25TaXplKTtcblx0XHRcdFx0XHRVdGlscy5hcnJheUNvcHkoaXYsIG9mZnNldCwgY3YsIHMsIHBvbHlnb25TaXplKTtcblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyAqICh2ZXJ0ZXhDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgdmVydGV4Q291bnQgLSAxOyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSBpbmRleCArIGlpO1xuXHRcdFx0XHRcdFx0Y3RbcyArIDJdID0gaW5kZXggKyBpaSArIDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluZGV4ICs9IHZlcnRleENvdW50O1xuXHRcdFx0XHRcdG9mZnNldCArPSBwb2x5Z29uU2l6ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2xpcE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRjb25zdCBwb2x5Z29ucyA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucztcblx0XHRjb25zdCBwb2x5Z29uc0NvdW50ID0gcG9seWdvbnMubGVuZ3RoO1xuXHRcdGxldCBjbGlwT3V0cHV0SXRlbXMgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdGxldCB0ID0gdHJpYW5nbGVzW2ldIDw8IDE7XG5cdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3RdLCB5MSA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDFdIDw8IDE7XG5cdFx0XHRjb25zdCB4MiA9IHZlcnRpY2VzW3RdLCB5MiA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRjb25zdCB4MyA9IHZlcnRpY2VzW3RdLCB5MyA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdGZvciAobGV0IHAgPSAwOyBwIDwgcG9seWdvbnNDb3VudDsgcCsrKSB7XG5cdFx0XHRcdGxldCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0aWYgKHRoaXMuY2xpcCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uc1twXSkpIHtcblx0XHRcdFx0XHRjbGlwT3V0cHV0SXRlbXMgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRcdFx0Y29uc3QgY2xpcE91dHB1dExlbmd0aCA9IGNsaXBPdXRwdXQubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChjbGlwT3V0cHV0TGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgY2xpcE91dHB1dENvdW50ID0gY2xpcE91dHB1dExlbmd0aCA+PiAxO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgY2xpcE91dHB1dExlbmd0aCk7XG5cdFx0XHRcdFx0VXRpbHMuYXJyYXlDb3B5KGNsaXBPdXRwdXRJdGVtcywgMCwgY3YsIHMsIGNsaXBPdXRwdXRMZW5ndGgpO1xuXG5cdFx0XHRcdFx0cyA9IGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRUcmlhbmdsZXMsIHMgKyAzICogKGNsaXBPdXRwdXRDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRjbGlwT3V0cHV0Q291bnQtLTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgY2xpcE91dHB1dENvdW50OyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyBpaSk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyBpaSArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSBjbGlwT3V0cHV0Q291bnQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgMyAqIDIpO1xuXHRcdFx0XHRcdGN2W3NdID0geDE7XG5cdFx0XHRcdFx0Y3ZbcyArIDFdID0geTE7XG5cdFx0XHRcdFx0Y3ZbcyArIDJdID0geDI7XG5cdFx0XHRcdFx0Y3ZbcyArIDNdID0geTI7XG5cdFx0XHRcdFx0Y3ZbcyArIDRdID0geDM7XG5cdFx0XHRcdFx0Y3ZbcyArIDVdID0geTM7XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMpO1xuXHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgMSk7XG5cdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgMik7XG5cdFx0XHRcdFx0aW5kZXggKz0gMztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2xpcE91dHB1dEl0ZW1zICE9IG51bGw7XG5cdH1cblxuXHRwcml2YXRlIGNsaXBUcmlhbmdsZXNSZW5kZXIgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlciwgdXZzOiBOdW1iZXJBcnJheUxpa2UsIGxpZ2h0OiBDb2xvciwgZGFyazogQ29sb3IsXG5cdFx0dHdvQ29sb3I6IGJvb2xlYW4sIHN0cmlkZTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY2xpcHBlZFZlcnRpY2VzID0gdGhpcy5jbGlwcGVkVmVydGljZXM7XG5cdFx0Y2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA9IDA7XG5cdFx0Y29uc3QgY2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlcztcblx0XHRjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA9IDA7XG5cdFx0bGV0IGluZGV4ID0gMDtcblxuXHRcdGlmICh0aGlzLmludmVyc2UpIHtcblx0XHRcdGNvbnN0IHBvbHlnb24gPSB0aGlzLmNsaXBwaW5nUG9seWdvbnNbMF07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlc0xlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHRcdGxldCB0MCA9IHRyaWFuZ2xlc1tpXSwgdDEgPSB0cmlhbmdsZXNbaSArIDFdLCB0MiA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdDAgKiBzdHJpZGVdLCB5MSA9IHZlcnRpY2VzW3QwICogc3RyaWRlICsgMV07XG5cdFx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdDEgKiBzdHJpZGVdLCB5MiA9IHZlcnRpY2VzW3QxICogc3RyaWRlICsgMV07XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdDIgKiBzdHJpZGVdLCB5MyA9IHZlcnRpY2VzW3QyICogc3RyaWRlICsgMV07XG5cdFx0XHRcdHRoaXMuY2xpcEludmVyc2UoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgcG9seWdvbik7XG5cdFx0XHRcdGNvbnN0IG5uID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRpZiAobm4gPT09IDApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGNvbnN0IHUxID0gdXZzW3QwIDw8PSAxXSwgdjEgPSB1dnNbdDAgKyAxXTtcblx0XHRcdFx0Y29uc3QgdTIgPSB1dnNbdDEgPDw9IDFdLCB2MiA9IHV2c1t0MSArIDFdO1xuXHRcdFx0XHRjb25zdCB1MyA9IHV2c1t0MiA8PD0gMV0sIHYzID0gdXZzW3QyICsgMV07XG5cdFx0XHRcdGNvbnN0IGQwID0geTIgLSB5MywgZDEgPSB4MyAtIHgyLCBkMiA9IHgxIC0geDMsIGQ0ID0geTMgLSB5MSwgZCA9IDEgLyAoZDAgKiBkMiArIGQxICogKHkxIC0geTMpKTtcblx0XHRcdFx0Y29uc3QgaXYgPSB0aGlzLmludmVyc2VWZXJ0aWNlcztcblx0XHRcdFx0Zm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbm47KSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9seWdvblNpemUgPSBpdltvZmZzZXQrK107XG5cdFx0XHRcdFx0Y29uc3QgdmVydGV4Q291bnQgPSBwb2x5Z29uU2l6ZSA+PiAxO1xuXG5cdFx0XHRcdFx0bGV0IHMgPSBjbGlwcGVkVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIHZlcnRleENvdW50ICogc3RyaWRlKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgcG9seWdvblNpemU7IGlpICs9IDIsIHMgKz0gc3RyaWRlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gaXZbb2Zmc2V0ICsgaWldLCB5ID0gaXZbb2Zmc2V0ICsgaWkgKyAxXTtcblx0XHRcdFx0XHRcdGN2W3NdID0geDtcblx0XHRcdFx0XHRcdGN2W3MgKyAxXSA9IHk7XG5cdFx0XHRcdFx0XHRjdltzICsgMl0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDNdID0gbGlnaHQuZztcblx0XHRcdFx0XHRcdGN2W3MgKyA0XSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0XHRjdltzICsgNV0gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y29uc3QgYzAgPSB4IC0geDMsIGMxID0geSAtIHkzLCBhID0gKGQwICogYzAgKyBkMSAqIGMxKSAqIGQsIGIgPSAoZDQgKiBjMCArIGQyICogYzEpICogZCwgYyA9IDEgLSBhIC0gYjtcblx0XHRcdFx0XHRcdGN2W3MgKyA2XSA9IHUxICogYSArIHUyICogYiArIHUzICogYztcblx0XHRcdFx0XHRcdGN2W3MgKyA3XSA9IHYxICogYSArIHYyICogYiArIHYzICogYztcblx0XHRcdFx0XHRcdGlmICh0d29Db2xvcikge1xuXHRcdFx0XHRcdFx0XHRjdltzICsgOF0gPSBkYXJrLnI7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyA5XSA9IGRhcmsuZztcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDEwXSA9IGRhcmsuYjtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDExXSA9IGRhcmsuYTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMgKiAodmVydGV4Q291bnQgLSAyKSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IHZlcnRleENvdW50IC0gMTsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gaW5kZXggKyBpaTtcblx0XHRcdFx0XHRcdGN0W3MgKyAyXSA9IGluZGV4ICsgaWkgKyAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSB2ZXJ0ZXhDb3VudDtcblx0XHRcdFx0XHRvZmZzZXQgKz0gcG9seWdvblNpemU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXG5cdFx0Y29uc3QgY2xpcE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRjb25zdCBwb2x5Z29ucyA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucztcblx0XHRjb25zdCBwb2x5Z29uc0NvdW50ID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zLmxlbmd0aDtcblx0XHRsZXQgY2xpcE91dHB1dEl0ZW1zID0gbnVsbDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlc0xlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHRsZXQgdCA9IHRyaWFuZ2xlc1tpXTtcblx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdCAqIHN0cmlkZV0sIHkxID0gdmVydGljZXNbdCAqIHN0cmlkZSArIDFdO1xuXHRcdFx0Y29uc3QgdTEgPSB1dnNbdCA8PCAxXSwgdjEgPSB1dnNbKHQgPDwgMSkgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDFdO1xuXHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlXSwgeTIgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlICsgMV07XG5cdFx0XHRjb25zdCB1MiA9IHV2c1t0IDw8IDFdLCB2MiA9IHV2c1sodCA8PCAxKSArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHRjb25zdCB4MyA9IHZlcnRpY2VzW3QgKiBzdHJpZGVdLCB5MyA9IHZlcnRpY2VzW3QgKiBzdHJpZGUgKyAxXTtcblx0XHRcdGNvbnN0IHUzID0gdXZzW3QgPDwgMV0sIHYzID0gdXZzWyh0IDw8IDEpICsgMV07XG5cdFx0XHRjb25zdCBkMCA9IHkyIC0geTMsIGQxID0geDMgLSB4MiwgZDIgPSB4MSAtIHgzLCBkNCA9IHkzIC0geTEsIGQgPSAxIC8gKGQwICogZDIgKyBkMSAqICh5MSAtIHkzKSk7XG5cdFx0XHRmb3IgKGxldCBwID0gMDsgcCA8IHBvbHlnb25zQ291bnQ7IHArKykge1xuXHRcdFx0XHRsZXQgcyA9IGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdGlmICh0aGlzLmNsaXAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgcG9seWdvbnNbcF0pKSB7XG5cdFx0XHRcdFx0Y2xpcE91dHB1dEl0ZW1zID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdFx0XHRcdGNvbnN0IGNsaXBPdXRwdXRMZW5ndGggPSBjbGlwT3V0cHV0Lmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoY2xpcE91dHB1dExlbmd0aCA9PT0gMCkgY29udGludWU7XG5cdFx0XHRcdFx0bGV0IGNsaXBPdXRwdXRDb3VudCA9IGNsaXBPdXRwdXRMZW5ndGggPj4gMTtcblxuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIGNsaXBPdXRwdXRDb3VudCAqIHN0cmlkZSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGNsaXBPdXRwdXRMZW5ndGg7IGlpICs9IDIsIHMgKz0gc3RyaWRlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gY2xpcE91dHB1dEl0ZW1zW2lpXSwgeSA9IGNsaXBPdXRwdXRJdGVtc1tpaSArIDFdO1xuXHRcdFx0XHRcdFx0Y3Zbc10gPSB4O1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDFdID0geTtcblx0XHRcdFx0XHRcdGN2W3MgKyAyXSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0XHRjdltzICsgM10gPSBsaWdodC5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDRdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyA1XSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0XHRjb25zdCBjMCA9IHggLSB4MywgYzEgPSB5IC0geTMsIGEgPSAoZDAgKiBjMCArIGQxICogYzEpICogZCwgYiA9IChkNCAqIGMwICsgZDIgKiBjMSkgKiBkLCBjID0gMSAtIGEgLSBiO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDZdID0gdTEgKiBhICsgdTIgKiBiICsgdTMgKiBjO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDddID0gdjEgKiBhICsgdjIgKiBiICsgdjMgKiBjO1xuXHRcdFx0XHRcdFx0aWYgKHR3b0NvbG9yKSB7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyA4XSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDldID0gZGFyay5nO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgMTBdID0gZGFyay5iO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgMTFdID0gZGFyay5hO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyAqIChjbGlwT3V0cHV0Q291bnQgLSAyKSk7XG5cdFx0XHRcdFx0Y2xpcE91dHB1dENvdW50LS07XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IGNsaXBPdXRwdXRDb3VudDsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgaWkpO1xuXHRcdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgaWkgKyAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5kZXggKz0gY2xpcE91dHB1dENvdW50ICsgMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBjdiA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVmVydGljZXMsIHMgKyAzICogc3RyaWRlKTtcblx0XHRcdFx0XHRjdltzXSA9IHgxO1xuXHRcdFx0XHRcdGN2W3MgKyAxXSA9IHkxO1xuXHRcdFx0XHRcdGN2W3MgKyAyXSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0Y3ZbcyArIDNdID0gbGlnaHQuZztcblx0XHRcdFx0XHRjdltzICsgNF0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdGN2W3MgKyA1XSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0aWYgKCF0d29Db2xvcikge1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDZdID0gdTE7XG5cdFx0XHRcdFx0XHRjdltzICsgN10gPSB2MTtcblxuXHRcdFx0XHRcdFx0Y3ZbcyArIDhdID0geDI7XG5cdFx0XHRcdFx0XHRjdltzICsgOV0gPSB5Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxMF0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDExXSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMTJdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxM10gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE0XSA9IHUyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE1XSA9IHYyO1xuXG5cdFx0XHRcdFx0XHRjdltzICsgMTZdID0geDM7XG5cdFx0XHRcdFx0XHRjdltzICsgMTddID0geTM7XG5cdFx0XHRcdFx0XHRjdltzICsgMThdID0gbGlnaHQucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxOV0gPSBsaWdodC5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIwXSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMjFdID0gbGlnaHQuYTtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMl0gPSB1Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAyM10gPSB2Mztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDZdID0gdTE7XG5cdFx0XHRcdFx0XHRjdltzICsgN10gPSB2MTtcblx0XHRcdFx0XHRcdGN2W3MgKyA4XSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdGN2W3MgKyA5XSA9IGRhcmsuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAxMF0gPSBkYXJrLmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTFdID0gZGFyay5hO1xuXG5cdFx0XHRcdFx0XHRjdltzICsgMTJdID0geDI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTNdID0geTI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTRdID0gbGlnaHQucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxNV0gPSBsaWdodC5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE2XSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTddID0gbGlnaHQuYTtcblx0XHRcdFx0XHRcdGN2W3MgKyAxOF0gPSB1Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxOV0gPSB2Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMF0gPSBkYXJrLnI7XG5cdFx0XHRcdFx0XHRjdltzICsgMjFdID0gZGFyay5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIyXSA9IGRhcmsuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyM10gPSBkYXJrLmE7XG5cblx0XHRcdFx0XHRcdGN2W3MgKyAyNF0gPSB4Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAyNV0gPSB5Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAyNl0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI3XSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMjhdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyOV0gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMwXSA9IHUzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMxXSA9IHYzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMyXSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAzM10gPSBkYXJrLmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMzRdID0gZGFyay5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDM1XSA9IGRhcmsuYTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMpO1xuXHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgMSk7XG5cdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgMik7XG5cdFx0XHRcdFx0aW5kZXggKz0gMztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2xpcE91dHB1dEl0ZW1zICE9IG51bGw7XG5cdH1cblxuXHRwdWJsaWMgY2xpcFRyaWFuZ2xlc1VucGFja2VkICh2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCB2ZXJ0ZXhTdGFydDogbnVtYmVyLCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSB8IFVpbnQxNkFycmF5LCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlciwgdXZzOiBOdW1iZXJBcnJheUxpa2UsIHN0cmlkZSA9IDIpOiBib29sZWFuIHtcblx0XHRsZXQgY2xpcHBlZFZlcnRpY2VzID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0bGV0IGNsaXBwZWRVVnMgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0bGV0IGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQ7XG5cdFx0bGV0IGluZGV4ID0gMDtcblx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IDA7XG5cdFx0dGhpcy5jbGlwcGVkVVZzTGVuZ3RoID0gMDtcblx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGggPSAwO1xuXG5cdFx0aWYgKHRoaXMuaW52ZXJzZSkge1xuXHRcdFx0Y29uc3QgcG9seWdvbiA9IHRoaXMuY2xpcHBpbmdQb2x5Z29uc1swXTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdFx0bGV0IHYgPSB0cmlhbmdsZXNbaV0gKiBzdHJpZGU7XG5cdFx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTEgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdFx0bGV0IHV2ID0gdHJpYW5nbGVzW2ldIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHUxID0gdXZzW3V2XSwgdjEgPSB1dnNbdXYgKyAxXTtcblx0XHRcdFx0diA9IHRyaWFuZ2xlc1tpICsgMV0gKiBzdHJpZGU7XG5cdFx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdFx0dXYgPSB0cmlhbmdsZXNbaSArIDFdIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHUyID0gdXZzW3V2XSwgdjIgPSB1dnNbdXYgKyAxXTtcblx0XHRcdFx0diA9IHRyaWFuZ2xlc1tpICsgMl0gKiBzdHJpZGU7XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdFx0dXYgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHUzID0gdXZzW3V2XSwgdjMgPSB1dnNbdXYgKyAxXTtcblx0XHRcdFx0dGhpcy5jbGlwSW52ZXJzZSh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uKTtcblx0XHRcdFx0Y29uc3Qgbm4gPSB0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHRcdGlmIChubiA9PT0gMCkgY29udGludWU7XG5cblx0XHRcdFx0Y29uc3QgZDAgPSB5MiAtIHkzLCBkMSA9IHgzIC0geDIsIGQyID0geDEgLSB4MywgZDQgPSB5MyAtIHkxLCBkID0gMSAvIChkMCAqIGQyICsgZDEgKiAoeTEgLSB5MykpO1xuXHRcdFx0XHRjb25zdCBpdiA9IHRoaXMuaW52ZXJzZVZlcnRpY2VzO1xuXHRcdFx0XHRmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBubjspIHtcblx0XHRcdFx0XHRjb25zdCBwb2x5Z29uU2l6ZSA9IGl2W29mZnNldCsrXTtcblx0XHRcdFx0XHRjb25zdCB2ZXJ0ZXhDb3VudCA9IHBvbHlnb25TaXplID4+IDE7XG5cblx0XHRcdFx0XHRsZXQgcyA9IHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IG5ld0xlbmd0aCA9IHMgKyB2ZXJ0ZXhDb3VudCAqIHN0cmlkZTtcblx0XHRcdFx0XHRjb25zdCBuZXdVVkxlbmd0aCA9IHRoaXMuY2xpcHBlZFVWc0xlbmd0aCArIHZlcnRleENvdW50ICogMjtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA8IG5ld0xlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KG5ld0xlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc2V0KGNsaXBwZWRWZXJ0aWNlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXMgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRVVnMubGVuZ3RoIDwgbmV3VVZMZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkobmV3VVZMZW5ndGggKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZC5zZXQoY2xpcHBlZFVWcy5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRVVnNMZW5ndGgpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRVVnMgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoID0gbmV3TGVuZ3RoO1xuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFVWc0xlbmd0aCA9IG5ld1VWTGVuZ3RoO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRcdFx0XHRjb25zdCBjdSA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRcdFx0XHRsZXQgdXZJbmRleCA9IG5ld1VWTGVuZ3RoIC0gdmVydGV4Q291bnQgKiAyO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBwb2x5Z29uU2l6ZTsgaWkgKz0gMiwgcyArPSBzdHJpZGUsIHV2SW5kZXggKz0gMikge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IGl2W29mZnNldCArIGlpXSwgeSA9IGl2W29mZnNldCArIGlpICsgMV07XG5cdFx0XHRcdFx0XHRjdltzXSA9IHg7XG5cdFx0XHRcdFx0XHRjdltzICsgMV0gPSB5O1xuXHRcdFx0XHRcdFx0Y29uc3QgYzAgPSB4IC0geDMsIGMxID0geSAtIHkzLCBhID0gKGQwICogYzAgKyBkMSAqIGMxKSAqIGQsIGIgPSAoZDQgKiBjMCArIGQyICogYzEpICogZCwgYyA9IDEgLSBhIC0gYjtcblx0XHRcdFx0XHRcdGN1W3V2SW5kZXhdID0gdTEgKiBhICsgdTIgKiBiICsgdTMgKiBjO1xuXHRcdFx0XHRcdFx0Y3VbdXZJbmRleCArIDFdID0gdjEgKiBhICsgdjIgKiBiICsgdjMgKiBjO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgbmV3TGVuZ3RoVHJpYW5nbGVzID0gcyArIDMgKiAodmVydGV4Q291bnQgLSAyKTtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGggPCBuZXdMZW5ndGhUcmlhbmdsZXMpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZCA9IG5ldyBVaW50MTZBcnJheShuZXdMZW5ndGhUcmlhbmdsZXMgKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZC5zZXQoY2xpcHBlZFRyaWFuZ2xlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVHJpYW5nbGVzID0gdGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGggPSBuZXdMZW5ndGhUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBjbGlwcGVkVHJpYW5nbGVzO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMTsgaWkgPCB2ZXJ0ZXhDb3VudCAtIDE7IGlpKyssIHMgKz0gMykge1xuXHRcdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRcdGN0W3MgKyAxXSA9IGluZGV4ICsgaWk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSBpbmRleCArIGlpICsgMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5kZXggKz0gdmVydGV4Q291bnQ7XG5cdFx0XHRcdFx0b2Zmc2V0ICs9IHBvbHlnb25TaXplO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc1R5cGVkID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGgpO1xuXHRcdFx0dGhpcy5jbGlwcGVkVVZzVHlwZWQgPSB0aGlzLl9jbGlwcGVkVVZzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVVZzTGVuZ3RoKTtcblx0XHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc1R5cGVkID0gdGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBjbGlwT3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdGNvbnN0IHBvbHlnb25zID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zO1xuXHRcdGNvbnN0IHBvbHlnb25zQ291bnQgPSB0aGlzLmNsaXBwaW5nUG9seWdvbnMubGVuZ3RoO1xuXHRcdGxldCBjbGlwT3V0cHV0SXRlbXMgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdGxldCB0ID0gdHJpYW5nbGVzW2ldO1xuXHRcdFx0bGV0IHYgPSB0ICogc3RyaWRlO1xuXHRcdFx0Y29uc3QgeDEgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MSA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0bGV0IHV2ID0gdCA8PCAxO1xuXHRcdFx0Y29uc3QgdTEgPSB1dnNbdXZdLCB2MSA9IHV2c1t1diArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMV07XG5cdFx0XHR2ID0gdCAqIHN0cmlkZTtcblx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdHV2ID0gdCA8PCAxO1xuXHRcdFx0Y29uc3QgdTIgPSB1dnNbdXZdLCB2MiA9IHV2c1t1diArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHR2ID0gdCAqIHN0cmlkZTtcblx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2XSwgeTMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHYgKyAxXTtcblx0XHRcdHV2ID0gdCA8PCAxO1xuXHRcdFx0Y29uc3QgdTMgPSB1dnNbdXZdLCB2MyA9IHV2c1t1diArIDFdO1xuXHRcdFx0Y29uc3QgZDAgPSB5MiAtIHkzLCBkMSA9IHgzIC0geDIsIGQyID0geDEgLSB4MywgZDQgPSB5MyAtIHkxLCBkID0gMSAvIChkMCAqIGQyICsgZDEgKiAoeTEgLSB5MykpO1xuXG5cdFx0XHRmb3IgKGxldCBwID0gMDsgcCA8IHBvbHlnb25zQ291bnQ7IHArKykge1xuXHRcdFx0XHRsZXQgcyA9IHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoO1xuXHRcdFx0XHRpZiAodGhpcy5jbGlwKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb25zW3BdKSkge1xuXHRcdFx0XHRcdGNsaXBPdXRwdXRJdGVtcyA9IGNsaXBPdXRwdXQ7XG5cdFx0XHRcdFx0Y29uc3QgY2xpcE91dHB1dExlbmd0aCA9IGNsaXBPdXRwdXQubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChjbGlwT3V0cHV0TGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgY2xpcE91dHB1dENvdW50ID0gY2xpcE91dHB1dExlbmd0aCA+PiAxO1xuXG5cdFx0XHRcdFx0Y29uc3QgbmV3TGVuZ3RoID0gcyArIGNsaXBPdXRwdXRDb3VudCAqIHN0cmlkZTtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA8IG5ld0xlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KG5ld0xlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQuc2V0KGNsaXBwZWRWZXJ0aWNlcy5zdWJhcnJheSgwLCBzKSk7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVVZzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KCh0aGlzLmNsaXBwZWRVVnNMZW5ndGggKyBjbGlwT3V0cHV0Q291bnQgKiAyKSAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkLnNldChjbGlwcGVkVVZzLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFVWc0xlbmd0aCkpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVVZzID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBjdiA9IGNsaXBwZWRWZXJ0aWNlcztcblx0XHRcdFx0XHRjb25zdCBjdSA9IGNsaXBwZWRVVnM7XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGggPSBuZXdMZW5ndGg7XG5cblx0XHRcdFx0XHRsZXQgdXZJbmRleCA9IHRoaXMuY2xpcHBlZFVWc0xlbmd0aDtcblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRVVnNMZW5ndGggPSB1dkluZGV4ICsgY2xpcE91dHB1dENvdW50ICogMjtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY2xpcE91dHB1dExlbmd0aDsgaWkgKz0gMiwgcyArPSBzdHJpZGUsIHV2SW5kZXggKz0gMikge1xuXHRcdFx0XHRcdFx0Y29uc3QgeCA9IGNsaXBPdXRwdXRJdGVtc1tpaV0sIHkgPSBjbGlwT3V0cHV0SXRlbXNbaWkgKyAxXTtcblx0XHRcdFx0XHRcdGN2W3NdID0geDtcblx0XHRcdFx0XHRcdGN2W3MgKyAxXSA9IHk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IGMwID0geCAtIHgzLCBjMSA9IHkgLSB5MywgYSA9IChkMCAqIGMwICsgZDEgKiBjMSkgKiBkLCBiID0gKGQ0ICogYzAgKyBkMiAqIGMxKSAqIGQsIGMgPSAxIC0gYSAtIGI7XG5cdFx0XHRcdFx0XHRjdVt1dkluZGV4XSA9IHUxICogYSArIHUyICogYiArIHUzICogYztcblx0XHRcdFx0XHRcdGN1W3V2SW5kZXggKyAxXSA9IHYxICogYSArIHYyICogYiArIHYzICogYztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzID0gdGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IG5ld0xlbmd0aFRyaWFuZ2xlcyA9IHMgKyAzICogKGNsaXBPdXRwdXRDb3VudCAtIDIpXG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoIDwgbmV3TGVuZ3RoVHJpYW5nbGVzKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQgPSBuZXcgVWludDE2QXJyYXkobmV3TGVuZ3RoVHJpYW5nbGVzICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQuc2V0KGNsaXBwZWRUcmlhbmdsZXMuc3ViYXJyYXkoMCwgcykpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoID0gbmV3TGVuZ3RoVHJpYW5nbGVzO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gY2xpcHBlZFRyaWFuZ2xlcztcblx0XHRcdFx0XHRjbGlwT3V0cHV0Q291bnQtLTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgY2xpcE91dHB1dENvdW50OyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyBpaSk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyBpaSArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSBjbGlwT3V0cHV0Q291bnQgKyAxO1xuXG5cdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRsZXQgbmV3TGVuZ3RoID0gcyArIDMgKiBzdHJpZGU7XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGggPCBuZXdMZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkID0gbmV3IEZsb2F0MzJBcnJheShuZXdMZW5ndGggKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkLnNldChjbGlwcGVkVmVydGljZXMuc3ViYXJyYXkoMCwgcykpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzID0gdGhpcy5fY2xpcHBlZFZlcnRpY2VzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzXSA9IHgxO1xuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzICsgMV0gPSB5MTtcblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbcyArIHN0cmlkZV0gPSB4Mjtcblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbcyArIHN0cmlkZSArIDFdID0geTI7XG5cdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzW3MgKyBzdHJpZGUgKiAyXSA9IHgzO1xuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzICsgc3RyaWRlICogMiArIDFdID0geTM7XG5cblx0XHRcdFx0XHRjb25zdCB1dkxlbmd0aCA9IHRoaXMuY2xpcHBlZFVWc0xlbmd0aCArIDMgKiAyO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVVZzLmxlbmd0aCA8IHV2TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVVZzVHlwZWQgPSBuZXcgRmxvYXQzMkFycmF5KHV2TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVVZzVHlwZWQuc2V0KGNsaXBwZWRVVnMuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVVZzTGVuZ3RoKSk7XG5cdFx0XHRcdFx0XHRjbGlwcGVkVVZzID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCB1dkluZGV4ID0gdGhpcy5jbGlwcGVkVVZzTGVuZ3RoO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleF0gPSB1MTtcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXggKyAxXSA9IHYxO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleCArIDJdID0gdTI7XG5cdFx0XHRcdFx0Y2xpcHBlZFVWc1t1dkluZGV4ICsgM10gPSB2Mjtcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXggKyA0XSA9IHUzO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleCArIDVdID0gdjM7XG5cblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IG5ld0xlbmd0aDtcblx0XHRcdFx0XHR0aGlzLmNsaXBwZWRVVnNMZW5ndGggPSB1dkxlbmd0aDtcblxuXHRcdFx0XHRcdHMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGg7XG5cdFx0XHRcdFx0bmV3TGVuZ3RoID0gcyArIDM7XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoIDwgbmV3TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQgPSBuZXcgVWludDE2QXJyYXkobmV3TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQuc2V0KGNsaXBwZWRUcmlhbmdsZXMuc3ViYXJyYXkoMCwgcykpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCBjdCA9IGNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyAxKTtcblx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyAyKTtcblx0XHRcdFx0XHRpbmRleCArPSAzO1xuXG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoID0gbmV3TGVuZ3RoO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5jbGlwcGVkVmVydGljZXNUeXBlZCA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoKVxuXHRcdHRoaXMuY2xpcHBlZFVWc1R5cGVkID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFVWc0xlbmd0aClcblx0XHR0aGlzLmNsaXBwZWRUcmlhbmdsZXNUeXBlZCA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZC5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRUcmlhbmdsZXNMZW5ndGgpXG5cdFx0cmV0dXJuIGNsaXBPdXRwdXRJdGVtcyAhPT0gbnVsbDtcblx0fVxuXG5cdHByaXZhdGUgY2xpcCAoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgcG9seWdvbjogbnVtYmVyW10pIHtcblx0XHRjb25zdCBvcmlnaW5hbE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRsZXQgY2xpcHBlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gQXZvaWQgY29weSBhdCB0aGUgZW5kLlxuXHRcdGxldCBpbnB1dDogbnVtYmVyW10sIG91dHB1dDogbnVtYmVyW107XG5cdFx0aWYgKHBvbHlnb24ubGVuZ3RoICUgNCA+PSAyKSB7XG5cdFx0XHRpbnB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRcdG91dHB1dCA9IHRoaXMuc2NyYXRjaDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aW5wdXQgPSB0aGlzLnNjcmF0Y2g7XG5cdFx0XHRvdXRwdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdiA9IHBvbHlnb247XG5cdFx0aW5wdXQubGVuZ3RoID0gODtcblx0XHRjb25zdCBpdiA9IGlucHV0O1xuXHRcdGl2WzBdID0geDE7XG5cdFx0aXZbMV0gPSB5MTtcblx0XHRpdlsyXSA9IHgyO1xuXHRcdGl2WzNdID0geTI7XG5cdFx0aXZbNF0gPSB4Mztcblx0XHRpdls1XSA9IHkzO1xuXHRcdGl2WzZdID0geDE7XG5cdFx0aXZbN10gPSB5MTtcblx0XHRvdXRwdXQubGVuZ3RoID0gMDtcblxuXHRcdGNvbnN0IGxhc3QgPSBwb2x5Z29uLmxlbmd0aCAtIDQ7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IDsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCBlZGdlWCA9IHZbaV0sIGVkZ2VZID0gdltpICsgMV0sIGV4ID0gZWRnZVggLSB2W2kgKyAyXSwgZXkgPSBlZGdlWSAtIHZbaSArIDNdO1xuXHRcdFx0Y29uc3Qgb3V0cHV0U3RhcnQgPSBvdXRwdXQubGVuZ3RoO1xuXHRcdFx0Y29uc3QgaXYgPSBpbnB1dDtcblx0XHRcdGZvciAobGV0IGlpID0gMCwgbm4gPSBpbnB1dC5sZW5ndGggLSAyOyBpaSA8IG5uOykge1xuXHRcdFx0XHR4MSA9IGl2W2lpXTtcblx0XHRcdFx0eTEgPSBpdltpaSArIDFdO1xuXHRcdFx0XHRpaSArPSAyO1xuXHRcdFx0XHR4MiA9IGl2W2lpXTtcblx0XHRcdFx0eTIgPSBpdltpaSArIDFdO1xuXHRcdFx0XHRjb25zdCBzMiA9IGV5ICogKGVkZ2VYIC0geDIpID4gZXggKiAoZWRnZVkgLSB5Mik7XG5cdFx0XHRcdGNvbnN0IHMxID0gZXkgKiAoZWRnZVggLSB4MSkgLSBleCAqIChlZGdlWSAtIHkxKTtcblx0XHRcdFx0aWYgKHMxID4gMCkge1xuXHRcdFx0XHRcdGlmIChzMikgLy8gdjEgaW4sIHYyIGluXG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh4MiwgeTIpO1xuXHRcdFx0XHRcdGVsc2UgeyAvLyB2MSBpbiwgdjIgb3V0XG5cdFx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRcdGlmICh0ID49IDAgJiYgdCA8PSAxKSB7XG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgxICsgaXggKiB0LCB5MSArIGl5ICogdCk7XG5cdFx0XHRcdFx0XHRcdGNsaXBwZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHMyKSB7IC8vIHYxIG91dCwgdjIgaW5cblx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRpZiAodCA+PSAwICYmIHQgPD0gMSkge1xuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDEgKyBpeCAqIHQsIHkxICsgaXkgKiB0LCB4MiwgeTIpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZCA9IHRydWU7XG5cdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh4MiwgeTIpO1xuXHRcdFx0XHR9IGVsc2UgLy8gdjEgb3V0LCB2MiBvdXRcblx0XHRcdFx0XHRjbGlwcGVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG91dHB1dFN0YXJ0ID09PSBvdXRwdXQubGVuZ3RoKSB7IC8vIEFsbCBvdXRzaWRlLlxuXHRcdFx0XHRvcmlnaW5hbE91dHB1dC5sZW5ndGggPSAwO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0b3V0cHV0LnB1c2gob3V0cHV0WzBdLCBvdXRwdXRbMV0pO1xuXG5cdFx0XHRpZiAoaSA9PT0gbGFzdCkgYnJlYWs7XG5cdFx0XHRjb25zdCB0ZW1wID0gb3V0cHV0O1xuXHRcdFx0b3V0cHV0ID0gaW5wdXQ7XG5cdFx0XHRvdXRwdXQubGVuZ3RoID0gMDtcblx0XHRcdGlucHV0ID0gdGVtcDtcblx0XHR9XG5cblx0XHRpZiAob3JpZ2luYWxPdXRwdXQgIT09IG91dHB1dCkge1xuXHRcdFx0b3JpZ2luYWxPdXRwdXQubGVuZ3RoID0gMDtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gb3V0cHV0Lmxlbmd0aCAtIDI7IGkgPCBuOyBpKyspXG5cdFx0XHRcdG9yaWdpbmFsT3V0cHV0W2ldID0gb3V0cHV0W2ldO1xuXHRcdH0gZWxzZVxuXHRcdFx0b3JpZ2luYWxPdXRwdXQubGVuZ3RoID0gb3JpZ2luYWxPdXRwdXQubGVuZ3RoIC0gMjtcblxuXHRcdHJldHVybiBjbGlwcGVkO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGlwSW52ZXJzZSAoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgcG9seWdvbjogbnVtYmVyW10pOiB2b2lkIHtcblx0XHR0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGggPSAwO1xuXHRcdGNvbnN0IHZMYXN0ID0gcG9seWdvbi5sZW5ndGggLSA0O1xuXG5cdFx0bGV0IGlucHV0OiBudW1iZXJbXSwgb3V0cHV0OiBudW1iZXJbXTsgLy8gQXZvaWQgY29weSBhdCB0aGUgZW5kLlxuXHRcdGlmIChwb2x5Z29uLmxlbmd0aCAlIDQgPj0gMikge1xuXHRcdFx0aW5wdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRvdXRwdXQgPSB0aGlzLnNjcmF0Y2g7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlucHV0ID0gdGhpcy5zY3JhdGNoO1xuXHRcdFx0b3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdH1cblxuXHRcdGlucHV0Lmxlbmd0aCA9IDg7XG5cdFx0bGV0IHYgPSBwb2x5Z29uLCBpdiA9IGlucHV0O1xuXHRcdGl2WzBdID0geDE7XG5cdFx0aXZbMV0gPSB5MTtcblx0XHRpdlsyXSA9IHgyO1xuXHRcdGl2WzNdID0geTI7XG5cdFx0aXZbNF0gPSB4Mztcblx0XHRpdls1XSA9IHkzO1xuXHRcdGl2WzZdID0geDE7XG5cdFx0aXZbN10gPSB5MTtcblx0XHRvdXRwdXQubGVuZ3RoID0gMDtcblxuXHRcdGZvciAobGV0IGkgPSAwOyA7IGkgKz0gMikge1xuXHRcdFx0Y29uc3QgZWRnZVggPSB2W2ldLCBlZGdlWSA9IHZbaSArIDFdLCBleCA9IGVkZ2VYIC0gdltpICsgMl0sIGV5ID0gZWRnZVkgLSB2W2kgKyAzXTtcblx0XHRcdGNvbnN0IG91dHB1dFN0YXJ0ID0gb3V0cHV0Lmxlbmd0aCwgZnJhZ21lbnRTdGFydCA9IHRoaXMuaW52ZXJzZVZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goMCk7XG5cdFx0XHRpdiA9IGlucHV0O1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGlucHV0Lmxlbmd0aCAtIDI7IGlpIDwgbm47KSB7XG5cdFx0XHRcdHgxID0gaXZbaWldO1xuXHRcdFx0XHR5MSA9IGl2W2lpICsgMV07XG5cdFx0XHRcdGlpICs9IDI7XG5cdFx0XHRcdHgyID0gaXZbaWldO1xuXHRcdFx0XHR5MiA9IGl2W2lpICsgMV07XG5cdFx0XHRcdGNvbnN0IHMyID0gZXkgKiAoZWRnZVggLSB4MikgPiBleCAqIChlZGdlWSAtIHkyKTtcblx0XHRcdFx0Y29uc3QgczEgPSBleSAqIChlZGdlWCAtIHgxKSAtIGV4ICogKGVkZ2VZIC0geTEpO1xuXHRcdFx0XHRpZiAoczEgPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHMyKSAvLyB2MSBpbiwgdjIgaW5cblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyB2MSBpbiwgdjIgb3V0XG5cdFx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRcdGlmICh0ID49IDAgJiYgdCA8PSAxKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGN4ID0geDEgKyBpeCAqIHQsIGN5ID0geTEgKyBpeSAqIHQ7XG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKGN4LCBjeSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goY3gsIGN5LCB4MiwgeTIpO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHMyKSB7IC8vIHYxIG91dCwgdjIgaW5cblx0XHRcdFx0XHRjb25zdCBkeCA9IHgyIC0geDEsIGR5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGR4ICogZXkgLSBkeSAqIGV4KTtcblx0XHRcdFx0XHRpZiAodCA+PSAwICYmIHQgPD0gMSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY3ggPSB4MSArIGR4ICogdCwgY3kgPSB5MSArIGR5ICogdDtcblx0XHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goY3gsIGN5KTtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKGN4LCBjeSwgeDIsIHkyKTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdH0gZWxzZSAvLyB2MSBvdXQsIHYyIG91dFxuXHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goeDIsIHkyKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZnJhZ21lbnRTaXplID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoIC0gZnJhZ21lbnRTdGFydCAtIDE7XG5cdFx0XHRpZiAoZnJhZ21lbnRTaXplID49IDYpXG5cdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzW2ZyYWdtZW50U3RhcnRdID0gZnJhZ21lbnRTaXplO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHR0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGggPSBmcmFnbWVudFN0YXJ0OyAvLyBEZWdlbmVyYXRlLlxuXG5cdFx0XHRpZiAob3V0cHV0U3RhcnQgPT09IG91dHB1dC5sZW5ndGgpIGJyZWFrOyAvLyBBbGwgb3V0c2lkZS5cblxuXHRcdFx0b3V0cHV0LnB1c2gob3V0cHV0WzBdLCBvdXRwdXRbMV0pO1xuXG5cdFx0XHRpZiAoaSA9PT0gdkxhc3QpIGJyZWFrO1xuXHRcdFx0Y29uc3QgdGVtcCA9IG91dHB1dDtcblx0XHRcdG91dHB1dCA9IGlucHV0O1xuXHRcdFx0b3V0cHV0Lmxlbmd0aCA9IDA7XG5cdFx0XHRpbnB1dCA9IHRlbXA7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBtYWtlQ2xvY2t3aXNlIChwb2x5Z29uOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHYgPSBwb2x5Z29uO1xuXHRcdGNvbnN0IG4gPSBwb2x5Z29uLmxlbmd0aDtcblx0XHRsZXQgbm9DVyA9IHRydWUsIG5vQ0NXID0gdHJ1ZTtcblx0XHRsZXQgYXJlYSA9IDAsIHByZXZYID0gdltuIC0gMl0sIHByZXZZID0gdltuIC0gMV0sIGN1cnJYID0gdlswXSwgY3VyclkgPSB2WzFdO1xuXHRcdGZvciAobGV0IGkgPSAyOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCBuZXh0WCA9IHZbaV0sIG5leHRZID0gdltpICsgMV07XG5cdFx0XHRhcmVhICs9IGN1cnJYICogbmV4dFkgLSBuZXh0WCAqIGN1cnJZO1xuXHRcdFx0Y29uc3QgY3Jvc3MgPSAoY3VyclggLSBwcmV2WCkgKiAobmV4dFkgLSBjdXJyWSkgLSAoY3VyclkgLSBwcmV2WSkgKiAobmV4dFggLSBjdXJyWCk7XG5cdFx0XHRub0NDVyA9IG5vQ0NXICYmIGNyb3NzIDw9IDA7XG5cdFx0XHRub0NXID0gbm9DVyAmJiBjcm9zcyA+PSAwO1xuXHRcdFx0cHJldlggPSBjdXJyWDtcblx0XHRcdHByZXZZID0gY3Vyclk7XG5cdFx0XHRjdXJyWCA9IG5leHRYO1xuXHRcdFx0Y3VyclkgPSBuZXh0WTtcblx0XHR9XG5cdFx0YXJlYSArPSBjdXJyWCAqIHZbMV0gLSB2WzBdICogY3Vyclk7XG5cdFx0Y29uc3QgY3Jvc3MgPSAoY3VyclggLSBwcmV2WCkgKiAodlsxXSAtIGN1cnJZKSAtIChjdXJyWSAtIHByZXZZKSAqICh2WzBdIC0gY3VyclgpO1xuXHRcdG5vQ0NXID0gbm9DQ1cgJiYgY3Jvc3MgPD0gMDtcblx0XHRub0NXID0gbm9DVyAmJiBjcm9zcyA+PSAwO1xuXHRcdGlmIChhcmVhID49IDApIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBsYXN0WCA9IG4gLSAyLCBoYWxmID0gbiA+PiAxOyBpIDwgaGFsZjsgaSArPSAyKSB7XG5cdFx0XHRcdGNvbnN0IHggPSB2W2ldLCB5ID0gdltpICsgMV07XG5cdFx0XHRcdGNvbnN0IG90aGVyID0gbGFzdFggLSBpO1xuXHRcdFx0XHR2W2ldID0gdltvdGhlcl07XG5cdFx0XHRcdHZbaSArIDFdID0gdltvdGhlciArIDFdO1xuXHRcdFx0XHR2W290aGVyXSA9IHg7XG5cdFx0XHRcdHZbb3RoZXIgKyAxXSA9IHk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbm9DVztcblx0XHR9XG5cdFx0cmV0dXJuIG5vQ0NXO1xuXHR9XG5cblx0cHJpdmF0ZSBtYWtlQ29udmV4IChwb2x5Z29uOiBudW1iZXJbXSk6IHZvaWQge1xuXHRcdGNvbnN0IG4gPSBwb2x5Z29uLmxlbmd0aDtcblx0XHRjb25zdCB2ID0gcG9seWdvbjtcblx0XHR0aGlzLmNsaXBPdXRwdXQubGVuZ3RoID0gbjtcblx0XHRjb25zdCBzb3J0ZWQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0c29ydGVkWzBdID0gdlswXTtcblx0XHRzb3J0ZWRbMV0gPSB2WzFdO1xuXHRcdGZvciAobGV0IGkgPSAyOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCB4ID0gdltpXSwgeSA9IHZbaSArIDFdO1xuXHRcdFx0bGV0IHAgPSBpIC0gMjtcblx0XHRcdGZvciAoOyBwID49IDAgJiYgKHNvcnRlZFtwXSA+IHggfHwgKHNvcnRlZFtwXSA9PT0geCAmJiBzb3J0ZWRbcCArIDFdID4geSkpOyBwIC09IDIpIHtcblx0XHRcdFx0c29ydGVkW3AgKyAyXSA9IHNvcnRlZFtwXTtcblx0XHRcdFx0c29ydGVkW3AgKyAzXSA9IHNvcnRlZFtwICsgMV07XG5cdFx0XHR9XG5cdFx0XHRzb3J0ZWRbcCArIDJdID0geDtcblx0XHRcdHNvcnRlZFtwICsgM10gPSB5O1xuXHRcdH1cblx0XHR2WzBdID0gc29ydGVkWzBdO1xuXHRcdHZbMV0gPSBzb3J0ZWRbMV07XG5cdFx0dlsyXSA9IHNvcnRlZFsyXTtcblx0XHR2WzNdID0gc29ydGVkWzNdO1xuXHRcdGxldCBzID0gNDtcblx0XHRmb3IgKGxldCBpID0gNDsgaSA8IG47IGkgKz0gMiwgcyArPSAyKSB7XG5cdFx0XHRjb25zdCB4ID0gc29ydGVkW2ldLCB5ID0gc29ydGVkW2kgKyAxXTtcblx0XHRcdHdoaWxlICgodltzIC0gMl0gLSB2W3MgLSA0XSkgKiAoeSAtIHZbcyAtIDNdKSAtICh2W3MgLSAxXSAtIHZbcyAtIDNdKSAqICh4IC0gdltzIC0gNF0pID49IDApIHtcblx0XHRcdFx0cyAtPSAyO1xuXHRcdFx0XHRpZiAocyA9PT0gMikgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR2W3NdID0geDtcblx0XHRcdHZbcyArIDFdID0geTtcblx0XHR9XG5cdFx0dltzXSA9IHNvcnRlZFtuIC0gNF07XG5cdFx0dltzICsgMV0gPSBzb3J0ZWRbbiAtIDNdO1xuXHRcdGNvbnN0IHQgPSBzO1xuXHRcdHMgKz0gMjtcblx0XHRmb3IgKGxldCBpID0gbiAtIDY7IGkgPj0gMDsgaSAtPSAyLCBzICs9IDIpIHtcblx0XHRcdGNvbnN0IHggPSBzb3J0ZWRbaV0sIHkgPSBzb3J0ZWRbaSArIDFdO1xuXHRcdFx0d2hpbGUgKCh2W3MgLSAyXSAtIHZbcyAtIDRdKSAqICh5IC0gdltzIC0gM10pIC0gKHZbcyAtIDFdIC0gdltzIC0gM10pICogKHggLSB2W3MgLSA0XSkgPj0gMCkge1xuXHRcdFx0XHRzIC09IDI7XG5cdFx0XHRcdGlmIChzID09PSB0KSBicmVhaztcblx0XHRcdH1cblx0XHRcdHZbc10gPSB4O1xuXHRcdFx0dltzICsgMV0gPSB5O1xuXHRcdH1cblx0XHRwb2x5Z29uLmxlbmd0aCA9IHMgLSAyO1xuXHR9XG59XG4iXX0=
|
|
821
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25DbGlwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvbkNsaXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUsvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFvQyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckUsTUFBTSxPQUFPLGdCQUFnQjtJQUNwQixZQUFZLEdBQXdCLElBQUksQ0FBQztJQUN6QyxlQUFlLEdBQUcsRUFBYyxDQUFDO0lBQ2pDLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztJQUNsQyxVQUFVLEdBQUcsRUFBYyxDQUFDO0lBQ3BDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUVBQXFFO0lBQ3JFLFVBQVUsR0FBRyxFQUFjLENBQUM7SUFFNUIsZ0JBQWdCLEdBQUcsRUFBYyxDQUFDO0lBQ2xDLGVBQWUsR0FBRyxFQUFjLENBQUM7SUFFakMscUJBQXFCLEdBQWlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELGdCQUFnQixHQUFpQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxzQkFBc0IsR0FBZ0IsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsb0JBQW9CLEdBQWlCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELGVBQWUsR0FBaUIsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQscUJBQXFCLEdBQWdCLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELHFCQUFxQixHQUFHLENBQUMsQ0FBQztJQUMxQixnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDckIsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLE9BQU8sR0FBRyxFQUFjLENBQUM7SUFD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Q0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFFZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFFaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDakIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNQLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNmLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNmLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNuQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFFcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUVwQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNoQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDcEIsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixFQUFFLENBQUMs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S0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckMsSUFBSSxJQUFJLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUN0QyxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNwRixLQUFLLEdBQUcsS0FBSyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzFCLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDZCxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2QsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNkLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNsRixLQUFLLEdBQUcsS0FBSyxJQUFJLEtBQUssSUFBSSxD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QUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0YsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUFFLE1BQU07WUFDcEIsQ0FBQztZQUNELENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLENBQUM7UUFDRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNQLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3RixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNQLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQUUsTUFBTTtZQUNwQixDQUFDO1lBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB0eXBlIHsgQ2xpcHBpbmdBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQ2xpcHBpbmdBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB0eXBlIHsgU2xvdCB9IGZyb20gXCIuL1Nsb3QuanNcIjtcbmltcG9ydCB7IFRyaWFuZ3VsYXRvciB9IGZyb20gXCIuL1RyaWFuZ3VsYXRvci5qc1wiO1xuaW1wb3J0IHsgdHlwZSBDb2xvciwgdHlwZSBOdW1iZXJBcnJheUxpa2UsIFV0aWxzIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIFNrZWxldG9uQ2xpcHBpbmcge1xuXHRwcml2YXRlIHRyaWFuZ3VsYXRvcjogVHJpYW5ndWxhdG9yIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgY2xpcHBpbmdQb2x5Z29uID0gW10gYXMgbnVtYmVyW107XG5cdHByaXZhdGUgY2xpcHBpbmdQb2x5Z29uczogbnVtYmVyW11bXSA9IFtdO1xuXHRwcml2YXRlIGNsaXBPdXRwdXQgPSBbXSBhcyBudW1iZXJbXTtcblx0Y2xpcHBlZFZlcnRpY2VzID0gW10gYXMgbnVtYmVyW107XG5cblx0LyoqIEFuIGVtcHR5IGFycmF5IHVubGVzcyB7QGxpbmsgY2xpcFRyaWFuZ2xlc1VucGFja2VkfSB3YXMgdXNlZC4gKiovXG5cdGNsaXBwZWRVVnMgPSBbXSBhcyBudW1iZXJbXTtcblxuXHRjbGlwcGVkVHJpYW5nbGVzID0gW10gYXMgbnVtYmVyW107XG5cdGludmVyc2VWZXJ0aWNlcyA9IFtdIGFzIG51bWJlcltdO1xuXG5cdF9jbGlwcGVkVmVydGljZXNUeXBlZDogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgxMDI0KTtcblx0X2NsaXBwZWRVVnNUeXBlZDogRmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSgxMDI0KTtcblx0X2NsaXBwZWRUcmlhbmdsZXNUeXBlZDogVWludDE2QXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMTAyNCk7XG5cdGNsaXBwZWRWZXJ0aWNlc1R5cGVkOiBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KDApO1xuXHRjbGlwcGVkVVZzVHlwZWQ6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoMCk7XG5cdGNsaXBwZWRUcmlhbmdsZXNUeXBlZDogVWludDE2QXJyYXkgPSBuZXcgVWludDE2QXJyYXkoMCk7XG5cdGNsaXBwZWRWZXJ0aWNlc0xlbmd0aCA9IDA7XG5cdGNsaXBwZWRVVnNMZW5ndGggPSAwO1xuXHRjbGlwcGVkVHJpYW5nbGVzTGVuZ3RoID0gMDtcblxuXHRwcml2YXRlIHNjcmF0Y2ggPSBbXSBhcyBudW1iZXJbXTtcblx0cHJpdmF0ZSBpbnZlcnNlID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBjbGlwQXR0YWNobWVudDogQ2xpcHBpbmdBdHRhY2htZW50IHwgbnVsbCA9IG51bGw7XG5cblx0Y2xpcFN0YXJ0IChza2VsZXRvbjogU2tlbGV0b24sIHNsb3Q6IFNsb3QsIGNsaXA6IENsaXBwaW5nQXR0YWNobWVudCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNsaXBBdHRhY2htZW50KSByZXR1cm47XG5cdFx0Y29uc3QgbiA9IGNsaXAud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHR0aGlzLmNsaXBBdHRhY2htZW50ID0gY2xpcDtcblx0XHR0aGlzLmludmVyc2UgPSBjbGlwLmludmVyc2U7XG5cblx0XHRjb25zdCB2ZXJ0aWNlcyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLmNsaXBwaW5nUG9seWdvbiwgbik7XG5cdFx0Y2xpcC5jb21wdXRlV29ybGRWZXJ0aWNlcyhza2VsZXRvbiwgc2xvdCwgMCwgbiwgdmVydGljZXMsIDAsIDIpO1xuXHRcdGNvbnN0IGNsaXBwaW5nUG9seWdvbiA9IHRoaXMuY2xpcHBpbmdQb2x5Z29uO1xuXHRcdGNvbnN0IGNvbnZleCA9IHRoaXMubWFrZUNsb2Nrd2lzZShjbGlwcGluZ1BvbHlnb24pO1xuXG5cdFx0aWYgKGNvbnZleCB8fCB0aGlzLmludmVyc2UgfHwgY2xpcC5jb252ZXgpIHtcblx0XHRcdGlmICghY29udmV4KSB0aGlzLm1ha2VDb252ZXgoY2xpcHBpbmdQb2x5Z29uKTtcblx0XHRcdHRoaXMuY2xpcHBpbmdQb2x5Z29uLnB1c2goY2xpcHBpbmdQb2x5Z29uWzBdLCBjbGlwcGluZ1BvbHlnb25bMV0pO1xuXHRcdFx0dGhpcy5jbGlwcGluZ1BvbHlnb25zLnB1c2goY2xpcHBpbmdQb2x5Z29uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKHRoaXMudHJpYW5ndWxhdG9yID09PSBudWxsKSB0aGlzLnRyaWFuZ3VsYXRvciA9IG5ldyBUcmlhbmd1bGF0b3IoKTtcblx0XHRcdHRoaXMuY2xpcHBpbmdQb2x5Z29ucy5wdXNoKC4uLnRoaXMudHJpYW5ndWxhdG9yLmRlY29tcG9zZShjbGlwcGluZ1BvbHlnb24sIHRoaXMudHJpYW5ndWxhdG9yLnRyaWFuZ3VsYXRlKGNsaXBwaW5nUG9seWdvbikpKTtcblx0XHR9XG5cdH1cblxuXHRjbGlwRW5kIChzbG90PzogU2xvdCkge1xuXHRcdGlmICghdGhpcy5jbGlwQXR0YWNobWVudCkgcmV0dXJuO1xuXHRcdGlmIChzbG90ICYmIHRoaXMuY2xpcEF0dGFjaG1lbnQuZW5kU2xvdCAhPT0gc2xvdC5kYXRhKSByZXR1cm47XG5cdFx0dGhpcy5jbGlwQXR0YWNobWVudCA9IG51bGw7XG5cdFx0dGhpcy5jbGlwcGluZ1BvbHlnb25zLmxlbmd0aCA9IDA7XG5cdH1cblxuXHRpc0NsaXBwaW5nICgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jbGlwQXR0YWNobWVudCAhPSBudWxsO1xuXHR9XG5cblx0Y2xpcFRyaWFuZ2xlcyAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyKTogYm9vbGVhbjtcblx0Y2xpcFRyaWFuZ2xlcyAodmVydGljZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyLFxuXHRcdHV2czogTnVtYmVyQXJyYXlMaWtlLCBsaWdodDogQ29sb3IsIGRhcms6IENvbG9yLCB0d29Db2xvcjogYm9vbGVhbiwgc3RyaWRlOiBudW1iZXIpOiBib29sZWFuO1xuXHRjbGlwVHJpYW5nbGVzICh2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSwgdHJpYW5nbGVzTGVuZ3RoOiBudW1iZXIsXG5cdFx0dXZzPzogTnVtYmVyQXJyYXlMaWtlLCBsaWdodD86IENvbG9yLCBkYXJrPzogQ29sb3IsIHR3b0NvbG9yPzogYm9vbGVhbiwgc3RyaWRlPzogbnVtYmVyKTogYm9vbGVhbiB7XG5cblx0XHRyZXR1cm4gKHV2cyAmJiBsaWdodCAmJiBkYXJrICYmIHR5cGVvZiB0d29Db2xvciA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiBzdHJpZGUgPT09ICdudW1iZXInKVxuXHRcdFx0PyB0aGlzLmNsaXBUcmlhbmdsZXNSZW5kZXIodmVydGljZXMsIHRyaWFuZ2xlcywgdHJpYW5nbGVzTGVuZ3RoLCB1dnMsIGxpZ2h0LCBkYXJrLCB0d29Db2xvciwgc3RyaWRlKVxuXHRcdFx0OiB0aGlzLmNsaXBUcmlhbmdsZXNOb1JlbmRlcih2ZXJ0aWNlcywgdHJpYW5nbGVzLCB0cmlhbmdsZXNMZW5ndGgpO1xuXHR9XG5cblx0cHJpdmF0ZSBjbGlwVHJpYW5nbGVzTm9SZW5kZXIgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGNsaXBwZWRWZXJ0aWNlcyA9IHRoaXMuY2xpcHBlZFZlcnRpY2VzO1xuXHRcdGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGggPSAwO1xuXHRcdGNvbnN0IGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLmNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0Y2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGggPSAwO1xuXHRcdGxldCBpbmRleCA9IDA7XG5cblx0XHRpZiAodGhpcy5pbnZlcnNlKSB7XG5cdFx0XHRjb25zdCBwb2x5Z29uID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zWzBdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0XHRsZXQgdCA9IHRyaWFuZ2xlc1tpXSA8PCAxO1xuXHRcdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3RdLCB5MSA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMTtcblx0XHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t0XSwgeTIgPSB2ZXJ0aWNlc1t0ICsgMV07XG5cdFx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdF0sIHkzID0gdmVydGljZXNbdCArIDFdO1xuXHRcdFx0XHR0aGlzLmNsaXBJbnZlcnNlKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb24pO1xuXG5cdFx0XHRcdGNvbnN0IGl2ID0gdGhpcy5pbnZlcnNlVmVydGljZXM7XG5cdFx0XHRcdGZvciAobGV0IG9mZnNldCA9IDAsIG5uID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoOyBvZmZzZXQgPCBubjspIHtcblx0XHRcdFx0XHRjb25zdCBwb2x5Z29uU2l6ZSA9IGl2W29mZnNldCsrXTtcblx0XHRcdFx0XHRsZXQgdmVydGV4Q291bnQgPSBwb2x5Z29uU2l6ZSA+PiAxLCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblxuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIHBvbHlnb25TaXplKTtcblx0XHRcdFx0XHRVdGlscy5hcnJheUNvcHkoaXYsIG9mZnNldCwgY3YsIHMsIHBvbHlnb25TaXplKTtcblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyAqICh2ZXJ0ZXhDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgdmVydGV4Q291bnQgLSAxOyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSBpbmRleCArIGlpO1xuXHRcdFx0XHRcdFx0Y3RbcyArIDJdID0gaW5kZXggKyBpaSArIDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluZGV4ICs9IHZlcnRleENvdW50O1xuXHRcdFx0XHRcdG9mZnNldCArPSBwb2x5Z29uU2l6ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgY2xpcE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRjb25zdCBwb2x5Z29ucyA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucztcblx0XHRjb25zdCBwb2x5Z29uc0NvdW50ID0gcG9seWdvbnMubGVuZ3RoO1xuXHRcdGxldCBjbGlwT3V0cHV0SXRlbXMgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdHJpYW5nbGVzTGVuZ3RoOyBpICs9IDMpIHtcblx0XHRcdGxldCB0ID0gdHJpYW5nbGVzW2ldIDw8IDE7XG5cdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3RdLCB5MSA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDFdIDw8IDE7XG5cdFx0XHRjb25zdCB4MiA9IHZlcnRpY2VzW3RdLCB5MiA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDJdIDw8IDE7XG5cdFx0XHRjb25zdCB4MyA9IHZlcnRpY2VzW3RdLCB5MyA9IHZlcnRpY2VzW3QgKyAxXTtcblx0XHRcdGZvciAobGV0IHAgPSAwOyBwIDwgcG9seWdvbnNDb3VudDsgcCsrKSB7XG5cdFx0XHRcdGxldCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0aWYgKHRoaXMuY2xpcCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uc1twXSkpIHtcblx0XHRcdFx0XHRjbGlwT3V0cHV0SXRlbXMgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRcdFx0Y29uc3QgY2xpcE91dHB1dExlbmd0aCA9IGNsaXBPdXRwdXQubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChjbGlwT3V0cHV0TGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgY2xpcE91dHB1dENvdW50ID0gY2xpcE91dHB1dExlbmd0aCA+PiAxO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgY2xpcE91dHB1dExlbmd0aCk7XG5cdFx0XHRcdFx0VXRpbHMuYXJyYXlDb3B5KGNsaXBPdXRwdXRJdGVtcywgMCwgY3YsIHMsIGNsaXBPdXRwdXRMZW5ndGgpO1xuXG5cdFx0XHRcdFx0cyA9IGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRUcmlhbmdsZXMsIHMgKyAzICogKGNsaXBPdXRwdXRDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRjbGlwT3V0cHV0Q291bnQtLTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgY2xpcE91dHB1dENvdW50OyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyBpaSk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyBpaSArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSBjbGlwT3V0cHV0Q291bnQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgMyAqIDIpO1xuXHRcdFx0XHRcdGN2W3NdID0geDE7XG5cdFx0XHRcdFx0Y3ZbcyArIDFdID0geTE7XG5cdFx0XHRcdFx0Y3ZbcyArIDJdID0geDI7XG5cdFx0XHRcdFx0Y3ZbcyArIDNdID0geTI7XG5cdFx0XHRcdFx0Y3ZbcyArIDRdID0geDM7XG5cdFx0XHRcdFx0Y3ZbcyArIDVdID0geTM7XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMpO1xuXHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgMSk7XG5cdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgMik7XG5cdFx0XHRcdFx0aW5kZXggKz0gMztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY2xpcE91dHB1dEl0ZW1zICE9IG51bGw7XG5cdH1cblxuXHRwcml2YXRlIGNsaXBUcmlhbmdsZXNSZW5kZXIgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlLCB0cmlhbmdsZXNMZW5ndGg6IG51bWJlciwgdXZzOiBOdW1iZXJBcnJheUxpa2UsIGxpZ2h0OiBDb2xvciwgZGFyazogQ29sb3IsXG5cdFx0dHdvQ29sb3I6IGJvb2xlYW4sIHN0cmlkZTogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgY2xpcHBlZFZlcnRpY2VzID0gdGhpcy5jbGlwcGVkVmVydGljZXM7XG5cdFx0Y2xpcHBlZFZlcnRpY2VzLmxlbmd0aCA9IDA7XG5cdFx0Y29uc3QgY2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlcztcblx0XHRjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA9IDA7XG5cdFx0bGV0IGluZGV4ID0gMDtcblxuXHRcdGlmICh0aGlzLmludmVyc2UpIHtcblx0XHRcdGNvbnN0IHBvbHlnb24gPSB0aGlzLmNsaXBwaW5nUG9seWdvbnNbMF07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlc0xlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHRcdGxldCB0MCA9IHRyaWFuZ2xlc1tpXSwgdDEgPSB0cmlhbmdsZXNbaSArIDFdLCB0MiA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdDAgKiBzdHJpZGVdLCB5MSA9IHZlcnRpY2VzW3QwICogc3RyaWRlICsgMV07XG5cdFx0XHRcdGNvbnN0IHgyID0gdmVydGljZXNbdDEgKiBzdHJpZGVdLCB5MiA9IHZlcnRpY2VzW3QxICogc3RyaWRlICsgMV07XG5cdFx0XHRcdGNvbnN0IHgzID0gdmVydGljZXNbdDIgKiBzdHJpZGVdLCB5MyA9IHZlcnRpY2VzW3QyICogc3RyaWRlICsgMV07XG5cdFx0XHRcdHRoaXMuY2xpcEludmVyc2UoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgcG9seWdvbik7XG5cdFx0XHRcdGNvbnN0IG5uID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRpZiAobm4gPT09IDApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGNvbnN0IHUxID0gdXZzW3QwIDw8PSAxXSwgdjEgPSB1dnNbdDAgKyAxXTtcblx0XHRcdFx0Y29uc3QgdTIgPSB1dnNbdDEgPDw9IDFdLCB2MiA9IHV2c1t0MSArIDFdO1xuXHRcdFx0XHRjb25zdCB1MyA9IHV2c1t0MiA8PD0gMV0sIHYzID0gdXZzW3QyICsgMV07XG5cdFx0XHRcdGNvbnN0IGQwID0geTIgLSB5MywgZDEgPSB4MyAtIHgyLCBkMiA9IHgxIC0geDMsIGQ0ID0geTMgLSB5MSwgZCA9IDEgLyAoZDAgKiBkMiArIGQxICogKHkxIC0geTMpKTtcblx0XHRcdFx0Y29uc3QgaXYgPSB0aGlzLmludmVyc2VWZXJ0aWNlcztcblx0XHRcdFx0Zm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbm47KSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9seWdvblNpemUgPSBpdltvZmZzZXQrK107XG5cdFx0XHRcdFx0Y29uc3QgdmVydGV4Q291bnQgPSBwb2x5Z29uU2l6ZSA+PiAxO1xuXG5cdFx0XHRcdFx0bGV0IHMgPSBjbGlwcGVkVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIHZlcnRleENvdW50ICogc3RyaWRlKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgcG9seWdvblNpemU7IGlpICs9IDIsIHMgKz0gc3RyaWRlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gaXZbb2Zmc2V0ICsgaWldLCB5ID0gaXZbb2Zmc2V0ICsgaWkgKyAxXTtcblx0XHRcdFx0XHRcdGN2W3NdID0geDtcblx0XHRcdFx0XHRcdGN2W3MgKyAxXSA9IHk7XG5cdFx0XHRcdFx0XHRjdltzICsgMl0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDNdID0gbGlnaHQuZztcblx0XHRcdFx0XHRcdGN2W3MgKyA0XSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0XHRjdltzICsgNV0gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y29uc3QgYzAgPSB4IC0geDMsIGMxID0geSAtIHkzLCBhID0gKGQwICogYzAgKyBkMSAqIGMxKSAqIGQsIGIgPSAoZDQgKiBjMCArIGQyICogYzEpICogZCwgYyA9IDEgLSBhIC0gYjtcblx0XHRcdFx0XHRcdGN2W3MgKyA2XSA9IHUxICogYSArIHUyICogYiArIHUzICogYztcblx0XHRcdFx0XHRcdGN2W3MgKyA3XSA9IHYxICogYSArIHYyICogYiArIHYzICogYztcblx0XHRcdFx0XHRcdGlmICh0d29Db2xvcikge1xuXHRcdFx0XHRcdFx0XHRjdltzICsgOF0gPSBkYXJrLnI7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyA5XSA9IGRhcmsuZztcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDEwXSA9IGRhcmsuYjtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDExXSA9IGRhcmsuYTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRzID0gY2xpcHBlZFRyaWFuZ2xlcy5sZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFRyaWFuZ2xlcywgcyArIDMgKiAodmVydGV4Q291bnQgLSAyKSk7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IHZlcnRleENvdW50IC0gMTsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gaW5kZXggKyBpaTtcblx0XHRcdFx0XHRcdGN0W3MgKyAyXSA9IGluZGV4ICsgaWkgKyAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSB2ZXJ0ZXhDb3VudDtcblx0XHRcdFx0XHRvZmZzZXQgKz0gcG9seWdvblNpemU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXG5cdFx0Y29uc3QgY2xpcE91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHRjb25zdCBwb2x5Z29ucyA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucztcblx0XHRjb25zdCBwb2x5Z29uc0NvdW50ID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zLmxlbmd0aDtcblx0XHRsZXQgY2xpcE91dHB1dEl0ZW1zID0gbnVsbDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyaWFuZ2xlc0xlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHRsZXQgdCA9IHRyaWFuZ2xlc1tpXTtcblx0XHRcdGNvbnN0IHgxID0gdmVydGljZXNbdCAqIHN0cmlkZV0sIHkxID0gdmVydGljZXNbdCAqIHN0cmlkZSArIDFdO1xuXHRcdFx0Y29uc3QgdTEgPSB1dnNbdCA8PCAxXSwgdjEgPSB1dnNbKHQgPDwgMSkgKyAxXTtcblx0XHRcdHQgPSB0cmlhbmdsZXNbaSArIDFdO1xuXHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlXSwgeTIgPSB2ZXJ0aWNlc1t0ICogc3RyaWRlICsgMV07XG5cdFx0XHRjb25zdCB1MiA9IHV2c1t0IDw8IDFdLCB2MiA9IHV2c1sodCA8PCAxKSArIDFdO1xuXHRcdFx0dCA9IHRyaWFuZ2xlc1tpICsgMl07XG5cdFx0XHRjb25zdCB4MyA9IHZlcnRpY2VzW3QgKiBzdHJpZGVdLCB5MyA9IHZlcnRpY2VzW3QgKiBzdHJpZGUgKyAxXTtcblx0XHRcdGNvbnN0IHUzID0gdXZzW3QgPDwgMV0sIHYzID0gdXZzWyh0IDw8IDEpICsgMV07XG5cdFx0XHRsZXQgZDAgPSAwLCBkMSA9IDAsIGQyID0gMCwgZDQgPSAwLCBkID0gMDtcblx0XHRcdGZvciAobGV0IHAgPSAwOyBwIDwgcG9seWdvbnNDb3VudDsgcCsrKSB7XG5cdFx0XHRcdGxldCBzID0gY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0aWYgKHRoaXMuY2xpcCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uc1twXSkpIHtcblx0XHRcdFx0XHRjbGlwT3V0cHV0SXRlbXMgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRcdFx0Y29uc3QgY2xpcE91dHB1dExlbmd0aCA9IGNsaXBPdXRwdXQubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChjbGlwT3V0cHV0TGVuZ3RoID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgY2xpcE91dHB1dENvdW50ID0gY2xpcE91dHB1dExlbmd0aCA+PiAxO1xuXHRcdFx0XHRcdGlmIChkID09PSAwKSB7XG5cdFx0XHRcdFx0XHRkMCA9IHkyIC0geTM7XG5cdFx0XHRcdFx0XHRkMSA9IHgzIC0geDI7XG5cdFx0XHRcdFx0XHRkMiA9IHgxIC0geDM7XG5cdFx0XHRcdFx0XHRkNCA9IHkzIC0geTE7XG5cdFx0XHRcdFx0XHRkID0gMSAvIChkMCAqIGQyIC0gZDEgKiBkNCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBVdGlscy5zZXRBcnJheVNpemUoY2xpcHBlZFZlcnRpY2VzLCBzICsgY2xpcE91dHB1dENvdW50ICogc3RyaWRlKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY2xpcE91dHB1dExlbmd0aDsgaWkgKz0gMiwgcyArPSBzdHJpZGUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSBjbGlwT3V0cHV0SXRlbXNbaWldLCB5ID0gY2xpcE91dHB1dEl0ZW1zW2lpICsgMV07XG5cdFx0XHRcdFx0XHRjdltzXSA9IHg7XG5cdFx0XHRcdFx0XHRjdltzICsgMV0gPSB5O1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDJdID0gbGlnaHQucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAzXSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgNF0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDVdID0gbGlnaHQuYTtcblx0XHRcdFx0XHRcdGNvbnN0IGMwID0geCAtIHgzLCBjMSA9IHkgLSB5MywgYSA9IChkMCAqIGMwICsgZDEgKiBjMSkgKiBkLCBiID0gKGQ0ICogYzAgKyBkMiAqIGMxKSAqIGQsIGMgPSAxIC0gYSAtIGI7XG5cdFx0XHRcdFx0XHRjdltzICsgNl0gPSB1MSAqIGEgKyB1MiAqIGIgKyB1MyAqIGM7XG5cdFx0XHRcdFx0XHRjdltzICsgN10gPSB2MSAqIGEgKyB2MiAqIGIgKyB2MyAqIGM7XG5cdFx0XHRcdFx0XHRpZiAodHdvQ29sb3IpIHtcblx0XHRcdFx0XHRcdFx0Y3ZbcyArIDhdID0gZGFyay5yO1xuXHRcdFx0XHRcdFx0XHRjdltzICsgOV0gPSBkYXJrLmc7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyAxMF0gPSBkYXJrLmI7XG5cdFx0XHRcdFx0XHRcdGN2W3MgKyAxMV0gPSBkYXJrLmE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cyA9IGNsaXBwZWRUcmlhbmdsZXMubGVuZ3RoO1xuXHRcdFx0XHRcdGNvbnN0IGN0ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRUcmlhbmdsZXMsIHMgKyAzICogKGNsaXBPdXRwdXRDb3VudCAtIDIpKTtcblx0XHRcdFx0XHRjbGlwT3V0cHV0Q291bnQtLTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDE7IGlpIDwgY2xpcE91dHB1dENvdW50OyBpaSsrLCBzICs9IDMpIHtcblx0XHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyBpaSk7XG5cdFx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyBpaSArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSBjbGlwT3V0cHV0Q291bnQgKyAxO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGN2ID0gVXRpbHMuc2V0QXJyYXlTaXplKGNsaXBwZWRWZXJ0aWNlcywgcyArIDMgKiBzdHJpZGUpO1xuXHRcdFx0XHRcdGN2W3NdID0geDE7XG5cdFx0XHRcdFx0Y3ZbcyArIDFdID0geTE7XG5cdFx0XHRcdFx0Y3ZbcyArIDJdID0gbGlnaHQucjtcblx0XHRcdFx0XHRjdltzICsgM10gPSBsaWdodC5nO1xuXHRcdFx0XHRcdGN2W3MgKyA0XSA9IGxpZ2h0LmI7XG5cdFx0XHRcdFx0Y3ZbcyArIDVdID0gbGlnaHQuYTtcblx0XHRcdFx0XHRpZiAoIXR3b0NvbG9yKSB7XG5cdFx0XHRcdFx0XHRjdltzICsgNl0gPSB1MTtcblx0XHRcdFx0XHRcdGN2W3MgKyA3XSA9IHYxO1xuXG5cdFx0XHRcdFx0XHRjdltzICsgOF0gPSB4Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyA5XSA9IHkyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDEwXSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTFdID0gbGlnaHQuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAxMl0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDEzXSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0XHRjdltzICsgMTRdID0gdTI7XG5cdFx0XHRcdFx0XHRjdltzICsgMTVdID0gdjI7XG5cblx0XHRcdFx0XHRcdGN2W3MgKyAxNl0gPSB4Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAxN10gPSB5Mztcblx0XHRcdFx0XHRcdGN2W3MgKyAxOF0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE5XSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMjBdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMV0gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIyXSA9IHUzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIzXSA9IHYzO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjdltzICsgNl0gPSB1MTtcblx0XHRcdFx0XHRcdGN2W3MgKyA3XSA9IHYxO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDhdID0gZGFyay5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDldID0gZGFyay5nO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDEwXSA9IGRhcmsuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxMV0gPSBkYXJrLmE7XG5cblx0XHRcdFx0XHRcdGN2W3MgKyAxMl0gPSB4Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxM10gPSB5Mjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxNF0gPSBsaWdodC5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE1XSA9IGxpZ2h0Lmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMTZdID0gbGlnaHQuYjtcblx0XHRcdFx0XHRcdGN2W3MgKyAxN10gPSBsaWdodC5hO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE4XSA9IHUyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDE5XSA9IHYyO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIwXSA9IGRhcmsucjtcblx0XHRcdFx0XHRcdGN2W3MgKyAyMV0gPSBkYXJrLmc7XG5cdFx0XHRcdFx0XHRjdltzICsgMjJdID0gZGFyay5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDIzXSA9IGRhcmsuYTtcblxuXHRcdFx0XHRcdFx0Y3ZbcyArIDI0XSA9IHgzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI1XSA9IHkzO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI2XSA9IGxpZ2h0LnI7XG5cdFx0XHRcdFx0XHRjdltzICsgMjddID0gbGlnaHQuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAyOF0gPSBsaWdodC5iO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDI5XSA9IGxpZ2h0LmE7XG5cdFx0XHRcdFx0XHRjdltzICsgMzBdID0gdTM7XG5cdFx0XHRcdFx0XHRjdltzICsgMzFdID0gdjM7XG5cdFx0XHRcdFx0XHRjdltzICsgMzJdID0gZGFyay5yO1xuXHRcdFx0XHRcdFx0Y3ZbcyArIDMzXSA9IGRhcmsuZztcblx0XHRcdFx0XHRcdGN2W3MgKyAzNF0gPSBkYXJrLmI7XG5cdFx0XHRcdFx0XHRjdltzICsgMzVdID0gZGFyay5hO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHMgPSBjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBjdCA9IFV0aWxzLnNldEFycmF5U2l6ZShjbGlwcGVkVHJpYW5nbGVzLCBzICsgMyk7XG5cdFx0XHRcdFx0Y3Rbc10gPSBpbmRleDtcblx0XHRcdFx0XHRjdFtzICsgMV0gPSAoaW5kZXggKyAxKTtcblx0XHRcdFx0XHRjdFtzICsgMl0gPSAoaW5kZXggKyAyKTtcblx0XHRcdFx0XHRpbmRleCArPSAzO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjbGlwT3V0cHV0SXRlbXMgIT0gbnVsbDtcblx0fVxuXG5cdHB1YmxpYyBjbGlwVHJpYW5nbGVzVW5wYWNrZWQgKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIHZlcnRleFN0YXJ0OiBudW1iZXIsIHRyaWFuZ2xlczogTnVtYmVyQXJyYXlMaWtlIHwgVWludDE2QXJyYXksIHRyaWFuZ2xlc0xlbmd0aDogbnVtYmVyLCB1dnM6IE51bWJlckFycmF5TGlrZSwgc3RyaWRlID0gMik6IGJvb2xlYW4ge1xuXHRcdGxldCBjbGlwcGVkVmVydGljZXMgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZDtcblx0XHRsZXQgY2xpcHBlZFVWcyA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRsZXQgY2xpcHBlZFRyaWFuZ2xlcyA9IHRoaXMuX2NsaXBwZWRUcmlhbmdsZXNUeXBlZDtcblx0XHRsZXQgaW5kZXggPSAwO1xuXHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoID0gMDtcblx0XHR0aGlzLmNsaXBwZWRVVnNMZW5ndGggPSAwO1xuXHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCA9IDA7XG5cblx0XHRpZiAodGhpcy5pbnZlcnNlKSB7XG5cdFx0XHRjb25zdCBwb2x5Z29uID0gdGhpcy5jbGlwcGluZ1BvbHlnb25zWzBdO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0XHRsZXQgdiA9IHRyaWFuZ2xlc1tpXSAqIHN0cmlkZTtcblx0XHRcdFx0Y29uc3QgeDEgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MSA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0XHRsZXQgdXYgPSB0cmlhbmdsZXNbaV0gPDwgMTtcblx0XHRcdFx0Y29uc3QgdTEgPSB1dnNbdXZdLCB2MSA9IHV2c1t1diArIDFdO1xuXHRcdFx0XHR2ID0gdHJpYW5nbGVzW2kgKyAxXSAqIHN0cmlkZTtcblx0XHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MiA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0XHR1diA9IHRyaWFuZ2xlc1tpICsgMV0gPDwgMTtcblx0XHRcdFx0Y29uc3QgdTIgPSB1dnNbdXZdLCB2MiA9IHV2c1t1diArIDFdO1xuXHRcdFx0XHR2ID0gdHJpYW5nbGVzW2kgKyAyXSAqIHN0cmlkZTtcblx0XHRcdFx0Y29uc3QgeDMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MyA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0XHR1diA9IHRyaWFuZ2xlc1tpICsgMl0gPDwgMTtcblx0XHRcdFx0Y29uc3QgdTMgPSB1dnNbdXZdLCB2MyA9IHV2c1t1diArIDFdO1xuXHRcdFx0XHR0aGlzLmNsaXBJbnZlcnNlKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHBvbHlnb24pO1xuXHRcdFx0XHRjb25zdCBubiA9IHRoaXMuaW52ZXJzZVZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0aWYgKG5uID09PSAwKSBjb250aW51ZTtcblxuXHRcdFx0XHRjb25zdCBkMCA9IHkyIC0geTMsIGQxID0geDMgLSB4MiwgZDIgPSB4MSAtIHgzLCBkNCA9IHkzIC0geTEsIGQgPSAxIC8gKGQwICogZDIgKyBkMSAqICh5MSAtIHkzKSk7XG5cdFx0XHRcdGNvbnN0IGl2ID0gdGhpcy5pbnZlcnNlVmVydGljZXM7XG5cdFx0XHRcdGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IG5uOykge1xuXHRcdFx0XHRcdGNvbnN0IHBvbHlnb25TaXplID0gaXZbb2Zmc2V0KytdO1xuXHRcdFx0XHRcdGNvbnN0IHZlcnRleENvdW50ID0gcG9seWdvblNpemUgPj4gMTtcblxuXHRcdFx0XHRcdGxldCBzID0gdGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGg7XG5cdFx0XHRcdFx0Y29uc3QgbmV3TGVuZ3RoID0gcyArIHZlcnRleENvdW50ICogc3RyaWRlO1xuXHRcdFx0XHRcdGNvbnN0IG5ld1VWTGVuZ3RoID0gdGhpcy5jbGlwcGVkVVZzTGVuZ3RoICsgdmVydGV4Q291bnQgKiAyO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVmVydGljZXMubGVuZ3RoIDwgbmV3TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkobmV3TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZC5zZXQoY2xpcHBlZFZlcnRpY2VzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlcyA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoY2xpcHBlZFVWcy5sZW5ndGggPCBuZXdVVkxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkID0gbmV3IEZsb2F0MzJBcnJheShuZXdVVkxlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkLnNldChjbGlwcGVkVVZzLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFVWc0xlbmd0aCkpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFVWcyA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGggPSBuZXdMZW5ndGg7XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVVZzTGVuZ3RoID0gbmV3VVZMZW5ndGg7XG5cblx0XHRcdFx0XHRjb25zdCBjdiA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkO1xuXHRcdFx0XHRcdGNvbnN0IGN1ID0gdGhpcy5fY2xpcHBlZFVWc1R5cGVkO1xuXHRcdFx0XHRcdGxldCB1dkluZGV4ID0gbmV3VVZMZW5ndGggLSB2ZXJ0ZXhDb3VudCAqIDI7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHBvbHlnb25TaXplOyBpaSArPSAyLCBzICs9IHN0cmlkZSwgdXZJbmRleCArPSAyKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gaXZbb2Zmc2V0ICsgaWldLCB5ID0gaXZbb2Zmc2V0ICsgaWkgKyAxXTtcblx0XHRcdFx0XHRcdGN2W3NdID0geDtcblx0XHRcdFx0XHRcdGN2W3MgKyAxXSA9IHk7XG5cdFx0XHRcdFx0XHRjb25zdCBjMCA9IHggLSB4MywgYzEgPSB5IC0geTMsIGEgPSAoZDAgKiBjMCArIGQxICogYzEpICogZCwgYiA9IChkNCAqIGMwICsgZDIgKiBjMSkgKiBkLCBjID0gMSAtIGEgLSBiO1xuXHRcdFx0XHRcdFx0Y3VbdXZJbmRleF0gPSB1MSAqIGEgKyB1MiAqIGIgKyB1MyAqIGM7XG5cdFx0XHRcdFx0XHRjdVt1dkluZGV4ICsgMV0gPSB2MSAqIGEgKyB2MiAqIGIgKyB2MyAqIGM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBuZXdMZW5ndGhUcmlhbmdsZXMgPSBzICsgMyAqICh2ZXJ0ZXhDb3VudCAtIDIpO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA8IG5ld0xlbmd0aFRyaWFuZ2xlcykge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkID0gbmV3IFVpbnQxNkFycmF5KG5ld0xlbmd0aFRyaWFuZ2xlcyAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkLnNldChjbGlwcGVkVHJpYW5nbGVzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCA9IG5ld0xlbmd0aFRyaWFuZ2xlcztcblx0XHRcdFx0XHRjb25zdCBjdCA9IGNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IHZlcnRleENvdW50IC0gMTsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gaW5kZXggKyBpaTtcblx0XHRcdFx0XHRcdGN0W3MgKyAyXSA9IGluZGV4ICsgaWkgKyAxO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbmRleCArPSB2ZXJ0ZXhDb3VudDtcblx0XHRcdFx0XHRvZmZzZXQgKz0gcG9seWdvblNpemU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzVHlwZWQgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZC5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aCk7XG5cdFx0XHR0aGlzLmNsaXBwZWRVVnNUeXBlZCA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZC5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRVVnNMZW5ndGgpO1xuXHRcdFx0dGhpcy5jbGlwcGVkVHJpYW5nbGVzVHlwZWQgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNsaXBPdXRwdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0Y29uc3QgcG9seWdvbnMgPSB0aGlzLmNsaXBwaW5nUG9seWdvbnM7XG5cdFx0Y29uc3QgcG9seWdvbnNDb3VudCA9IHRoaXMuY2xpcHBpbmdQb2x5Z29ucy5sZW5ndGg7XG5cdFx0bGV0IGNsaXBPdXRwdXRJdGVtcyA9IG51bGw7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXNMZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0bGV0IHQgPSB0cmlhbmdsZXNbaV07XG5cdFx0XHRsZXQgdiA9IHQgKiBzdHJpZGU7XG5cdFx0XHRjb25zdCB4MSA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdl0sIHkxID0gdmVydGljZXNbdmVydGV4U3RhcnQgKyB2ICsgMV07XG5cdFx0XHRsZXQgdXYgPSB0IDw8IDE7XG5cdFx0XHRjb25zdCB1MSA9IHV2c1t1dl0sIHYxID0gdXZzW3V2ICsgMV07XG5cdFx0XHR0ID0gdHJpYW5nbGVzW2kgKyAxXTtcblx0XHRcdHYgPSB0ICogc3RyaWRlO1xuXHRcdFx0Y29uc3QgeDIgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MiA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0dXYgPSB0IDw8IDE7XG5cdFx0XHRjb25zdCB1MiA9IHV2c1t1dl0sIHYyID0gdXZzW3V2ICsgMV07XG5cdFx0XHR0ID0gdHJpYW5nbGVzW2kgKyAyXTtcblx0XHRcdHYgPSB0ICogc3RyaWRlO1xuXHRcdFx0Y29uc3QgeDMgPSB2ZXJ0aWNlc1t2ZXJ0ZXhTdGFydCArIHZdLCB5MyA9IHZlcnRpY2VzW3ZlcnRleFN0YXJ0ICsgdiArIDFdO1xuXHRcdFx0dXYgPSB0IDw8IDE7XG5cdFx0XHRjb25zdCB1MyA9IHV2c1t1dl0sIHYzID0gdXZzW3V2ICsgMV07XG5cdFx0XHRsZXQgZDAgPSAwLCBkMSA9IDAsIGQyID0gMCwgZDQgPSAwLCBkID0gMDtcblxuXHRcdFx0Zm9yIChsZXQgcCA9IDA7IHAgPCBwb2x5Z29uc0NvdW50OyBwKyspIHtcblx0XHRcdFx0bGV0IHMgPSB0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aDtcblx0XHRcdFx0aWYgKHRoaXMuY2xpcCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCBwb2x5Z29uc1twXSkpIHtcblx0XHRcdFx0XHRjbGlwT3V0cHV0SXRlbXMgPSBjbGlwT3V0cHV0O1xuXHRcdFx0XHRcdGNvbnN0IGNsaXBPdXRwdXRMZW5ndGggPSBjbGlwT3V0cHV0Lmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoY2xpcE91dHB1dExlbmd0aCA9PT0gMCkgY29udGludWU7XG5cdFx0XHRcdFx0bGV0IGNsaXBPdXRwdXRDb3VudCA9IGNsaXBPdXRwdXRMZW5ndGggPj4gMTtcblx0XHRcdFx0XHRpZiAoZCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0ZDAgPSB5MiAtIHkzO1xuXHRcdFx0XHRcdFx0ZDEgPSB4MyAtIHgyO1xuXHRcdFx0XHRcdFx0ZDIgPSB4MSAtIHgzO1xuXHRcdFx0XHRcdFx0ZDQgPSB5MyAtIHkxO1xuXHRcdFx0XHRcdFx0ZCA9IDEgLyAoZDAgKiBkMiAtIGQxICogZDQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IG5ld0xlbmd0aCA9IHMgKyBjbGlwT3V0cHV0Q291bnQgKiBzdHJpZGU7XG5cdFx0XHRcdFx0aWYgKGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGggPCBuZXdMZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkID0gbmV3IEZsb2F0MzJBcnJheShuZXdMZW5ndGggKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkLnNldChjbGlwcGVkVmVydGljZXMuc3ViYXJyYXkoMCwgcykpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkID0gbmV3IEZsb2F0MzJBcnJheSgodGhpcy5jbGlwcGVkVVZzTGVuZ3RoICsgY2xpcE91dHB1dENvdW50ICogMikgKiAyKTtcblx0XHRcdFx0XHRcdHRoaXMuX2NsaXBwZWRVVnNUeXBlZC5zZXQoY2xpcHBlZFVWcy5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRVVnNMZW5ndGgpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlcyA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFVWcyA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgY3YgPSBjbGlwcGVkVmVydGljZXM7XG5cdFx0XHRcdFx0Y29uc3QgY3UgPSBjbGlwcGVkVVZzO1xuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzTGVuZ3RoID0gbmV3TGVuZ3RoO1xuXG5cdFx0XHRcdFx0bGV0IHV2SW5kZXggPSB0aGlzLmNsaXBwZWRVVnNMZW5ndGg7XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVVZzTGVuZ3RoID0gdXZJbmRleCArIGNsaXBPdXRwdXRDb3VudCAqIDI7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGNsaXBPdXRwdXRMZW5ndGg7IGlpICs9IDIsIHMgKz0gc3RyaWRlLCB1dkluZGV4ICs9IDIpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSBjbGlwT3V0cHV0SXRlbXNbaWldLCB5ID0gY2xpcE91dHB1dEl0ZW1zW2lpICsgMV07XG5cdFx0XHRcdFx0XHRjdltzXSA9IHg7XG5cdFx0XHRcdFx0XHRjdltzICsgMV0gPSB5O1xuXG5cdFx0XHRcdFx0XHRjb25zdCBjMCA9IHggLSB4MywgYzEgPSB5IC0geTMsIGEgPSAoZDAgKiBjMCArIGQxICogYzEpICogZCwgYiA9IChkNCAqIGMwICsgZDIgKiBjMSkgKiBkLCBjID0gMSAtIGEgLSBiO1xuXHRcdFx0XHRcdFx0Y3VbdXZJbmRleF0gPSB1MSAqIGEgKyB1MiAqIGIgKyB1MyAqIGM7XG5cdFx0XHRcdFx0XHRjdVt1dkluZGV4ICsgMV0gPSB2MSAqIGEgKyB2MiAqIGIgKyB2MyAqIGM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cyA9IHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aDtcblx0XHRcdFx0XHRjb25zdCBuZXdMZW5ndGhUcmlhbmdsZXMgPSBzICsgMyAqIChjbGlwT3V0cHV0Q291bnQgLSAyKVxuXHRcdFx0XHRcdGlmIChjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA8IG5ld0xlbmd0aFRyaWFuZ2xlcykge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkID0gbmV3IFVpbnQxNkFycmF5KG5ld0xlbmd0aFRyaWFuZ2xlcyAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkLnNldChjbGlwcGVkVHJpYW5nbGVzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCA9IG5ld0xlbmd0aFRyaWFuZ2xlcztcblx0XHRcdFx0XHRjb25zdCBjdCA9IGNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdFx0Y2xpcE91dHB1dENvdW50LS07XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAxOyBpaSA8IGNsaXBPdXRwdXRDb3VudDsgaWkrKywgcyArPSAzKSB7XG5cdFx0XHRcdFx0XHRjdFtzXSA9IGluZGV4O1xuXHRcdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgaWkpO1xuXHRcdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgaWkgKyAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5kZXggKz0gY2xpcE91dHB1dENvdW50ICsgMTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0bGV0IG5ld0xlbmd0aCA9IHMgKyAzICogc3RyaWRlO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVmVydGljZXMubGVuZ3RoIDwgbmV3TGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZCA9IG5ldyBGbG9hdDMyQXJyYXkobmV3TGVuZ3RoICogMik7XG5cdFx0XHRcdFx0XHR0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZC5zZXQoY2xpcHBlZFZlcnRpY2VzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlcyA9IHRoaXMuX2NsaXBwZWRWZXJ0aWNlc1R5cGVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbc10gPSB4MTtcblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbcyArIDFdID0geTE7XG5cdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzW3MgKyBzdHJpZGVdID0geDI7XG5cdFx0XHRcdFx0Y2xpcHBlZFZlcnRpY2VzW3MgKyBzdHJpZGUgKyAxXSA9IHkyO1xuXHRcdFx0XHRcdGNsaXBwZWRWZXJ0aWNlc1tzICsgc3RyaWRlICogMl0gPSB4Mztcblx0XHRcdFx0XHRjbGlwcGVkVmVydGljZXNbcyArIHN0cmlkZSAqIDIgKyAxXSA9IHkzO1xuXG5cdFx0XHRcdFx0Y29uc3QgdXZMZW5ndGggPSB0aGlzLmNsaXBwZWRVVnNMZW5ndGggKyAzICogMjtcblx0XHRcdFx0XHRpZiAoY2xpcHBlZFVWcy5sZW5ndGggPCB1dkxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkID0gbmV3IEZsb2F0MzJBcnJheSh1dkxlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFVWc1R5cGVkLnNldChjbGlwcGVkVVZzLnN1YmFycmF5KDAsIHRoaXMuY2xpcHBlZFVWc0xlbmd0aCkpO1xuXHRcdFx0XHRcdFx0Y2xpcHBlZFVWcyA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgdXZJbmRleCA9IHRoaXMuY2xpcHBlZFVWc0xlbmd0aDtcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXhdID0gdTE7XG5cdFx0XHRcdFx0Y2xpcHBlZFVWc1t1dkluZGV4ICsgMV0gPSB2MTtcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXggKyAyXSA9IHUyO1xuXHRcdFx0XHRcdGNsaXBwZWRVVnNbdXZJbmRleCArIDNdID0gdjI7XG5cdFx0XHRcdFx0Y2xpcHBlZFVWc1t1dkluZGV4ICsgNF0gPSB1Mztcblx0XHRcdFx0XHRjbGlwcGVkVVZzW3V2SW5kZXggKyA1XSA9IHYzO1xuXG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVmVydGljZXNMZW5ndGggPSBuZXdMZW5ndGg7XG5cdFx0XHRcdFx0dGhpcy5jbGlwcGVkVVZzTGVuZ3RoID0gdXZMZW5ndGg7XG5cblx0XHRcdFx0XHRzID0gdGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoO1xuXHRcdFx0XHRcdG5ld0xlbmd0aCA9IHMgKyAzO1xuXHRcdFx0XHRcdGlmIChjbGlwcGVkVHJpYW5nbGVzLmxlbmd0aCA8IG5ld0xlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkID0gbmV3IFVpbnQxNkFycmF5KG5ld0xlbmd0aCAqIDIpO1xuXHRcdFx0XHRcdFx0dGhpcy5fY2xpcHBlZFRyaWFuZ2xlc1R5cGVkLnNldChjbGlwcGVkVHJpYW5nbGVzLnN1YmFycmF5KDAsIHMpKTtcblx0XHRcdFx0XHRcdGNsaXBwZWRUcmlhbmdsZXMgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQ7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgY3QgPSBjbGlwcGVkVHJpYW5nbGVzO1xuXHRcdFx0XHRcdGN0W3NdID0gaW5kZXg7XG5cdFx0XHRcdFx0Y3RbcyArIDFdID0gKGluZGV4ICsgMSk7XG5cdFx0XHRcdFx0Y3RbcyArIDJdID0gKGluZGV4ICsgMik7XG5cdFx0XHRcdFx0aW5kZXggKz0gMztcblxuXHRcdFx0XHRcdHRoaXMuY2xpcHBlZFRyaWFuZ2xlc0xlbmd0aCA9IG5ld0xlbmd0aDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMuY2xpcHBlZFZlcnRpY2VzVHlwZWQgPSB0aGlzLl9jbGlwcGVkVmVydGljZXNUeXBlZC5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRWZXJ0aWNlc0xlbmd0aClcblx0XHR0aGlzLmNsaXBwZWRVVnNUeXBlZCA9IHRoaXMuX2NsaXBwZWRVVnNUeXBlZC5zdWJhcnJheSgwLCB0aGlzLmNsaXBwZWRVVnNMZW5ndGgpXG5cdFx0dGhpcy5jbGlwcGVkVHJpYW5nbGVzVHlwZWQgPSB0aGlzLl9jbGlwcGVkVHJpYW5nbGVzVHlwZWQuc3ViYXJyYXkoMCwgdGhpcy5jbGlwcGVkVHJpYW5nbGVzTGVuZ3RoKVxuXHRcdHJldHVybiBjbGlwT3V0cHV0SXRlbXMgIT09IG51bGw7XG5cdH1cblxuXHRwcml2YXRlIGNsaXAgKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIHgzOiBudW1iZXIsIHkzOiBudW1iZXIsIHBvbHlnb246IG51bWJlcltdKSB7XG5cdFx0Y29uc3Qgb3JpZ2luYWxPdXRwdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0bGV0IGNsaXBwZWQgPSBmYWxzZTtcblxuXHRcdC8vIEF2b2lkIGNvcHkgYXQgdGhlIGVuZC5cblx0XHRsZXQgaW5wdXQ6IG51bWJlcltdLCBvdXRwdXQ6IG51bWJlcltdO1xuXHRcdGlmIChwb2x5Z29uLmxlbmd0aCAlIDQgPj0gMikge1xuXHRcdFx0aW5wdXQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0XHRvdXRwdXQgPSB0aGlzLnNjcmF0Y2g7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlucHV0ID0gdGhpcy5zY3JhdGNoO1xuXHRcdFx0b3V0cHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdH1cblxuXHRcdGNvbnN0IHYgPSBwb2x5Z29uO1xuXHRcdGlucHV0Lmxlbmd0aCA9IDg7XG5cdFx0Y29uc3QgaXYgPSBpbnB1dDtcblx0XHRpdlswXSA9IHgxO1xuXHRcdGl2WzFdID0geTE7XG5cdFx0aXZbMl0gPSB4Mjtcblx0XHRpdlszXSA9IHkyO1xuXHRcdGl2WzRdID0geDM7XG5cdFx0aXZbNV0gPSB5Mztcblx0XHRpdls2XSA9IHgxO1xuXHRcdGl2WzddID0geTE7XG5cdFx0b3V0cHV0Lmxlbmd0aCA9IDA7XG5cblx0XHRjb25zdCBsYXN0ID0gcG9seWdvbi5sZW5ndGggLSA0O1xuXHRcdGZvciAobGV0IGkgPSAwOyA7IGkgKz0gMikge1xuXHRcdFx0Y29uc3QgZWRnZVggPSB2W2ldLCBlZGdlWSA9IHZbaSArIDFdLCBleCA9IGVkZ2VYIC0gdltpICsgMl0sIGV5ID0gZWRnZVkgLSB2W2kgKyAzXTtcblx0XHRcdGNvbnN0IG91dHB1dFN0YXJ0ID0gb3V0cHV0Lmxlbmd0aDtcblx0XHRcdGNvbnN0IGl2ID0gaW5wdXQ7XG5cdFx0XHR4MSA9IGl2WzBdO1xuXHRcdFx0eTEgPSBpdlsxXTtcblx0XHRcdGxldCBzMSA9IGV5ICogKGVkZ2VYIC0geDEpIC0gZXggKiAoZWRnZVkgLSB5MSk7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDIsIG5uID0gaW5wdXQubGVuZ3RoIC0gMjsgaWkgPD0gbm47IGlpICs9IDIpIHtcblx0XHRcdFx0eDIgPSBpdltpaV07XG5cdFx0XHRcdHkyID0gaXZbaWkgKyAxXTtcblx0XHRcdFx0Y29uc3QgczIgPSBleSAqIChlZGdlWCAtIHgyKSAtIGV4ICogKGVkZ2VZIC0geTIpO1xuXHRcdFx0XHRpZiAoczEgPiAwKSB7XG5cdFx0XHRcdFx0aWYgKHMyID4gMCkgLy8gdjEgaW4sIHYyIGluXG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaCh4MiwgeTIpO1xuXHRcdFx0XHRcdGVsc2UgeyAvLyB2MSBpbiwgdjIgb3V0XG5cdFx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRcdGlmICh0ID49IDAgJiYgdCA8PSAxKSB7XG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgxICsgaXggKiB0LCB5MSArIGl5ICogdCk7XG5cdFx0XHRcdFx0XHRcdGNsaXBwZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKHMyID4gMCkgeyAvLyB2MSBvdXQsIHYyIGluXG5cdFx0XHRcdFx0Y29uc3QgaXggPSB4MiAtIHgxLCBpeSA9IHkyIC0geTEsIHQgPSBzMSAvIChpeCAqIGV5IC0gaXkgKiBleCk7XG5cdFx0XHRcdFx0aWYgKHQgPj0gMCAmJiB0IDw9IDEpIHtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgxICsgaXggKiB0LCB5MSArIGl5ICogdCwgeDIsIHkyKTtcblx0XHRcdFx0XHRcdGNsaXBwZWQgPSB0cnVlO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDIsIHkyKTtcblx0XHRcdFx0fSBlbHNlIC8vIHYxIG91dCwgdjIgb3V0XG5cdFx0XHRcdFx0Y2xpcHBlZCA9IHRydWU7XG5cdFx0XHRcdHgxID0geDI7XG5cdFx0XHRcdHkxID0geTI7XG5cdFx0XHRcdHMxID0gczI7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvdXRwdXRTdGFydCA9PT0gb3V0cHV0Lmxlbmd0aCkgeyAvLyBBbGwgb3V0c2lkZS5cblx0XHRcdFx0b3JpZ2luYWxPdXRwdXQubGVuZ3RoID0gMDtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdG91dHB1dC5wdXNoKG91dHB1dFswXSwgb3V0cHV0WzFdKTtcblxuXHRcdFx0aWYgKGkgPT09IGxhc3QpIGJyZWFrO1xuXHRcdFx0Y29uc3QgdGVtcCA9IG91dHB1dDtcblx0XHRcdG91dHB1dCA9IGlucHV0O1xuXHRcdFx0b3V0cHV0Lmxlbmd0aCA9IDA7XG5cdFx0XHRpbnB1dCA9IHRlbXA7XG5cdFx0fVxuXG5cdFx0aWYgKG9yaWdpbmFsT3V0cHV0ICE9PSBvdXRwdXQpIHtcblx0XHRcdG9yaWdpbmFsT3V0cHV0Lmxlbmd0aCA9IDA7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IG91dHB1dC5sZW5ndGggLSAyOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRvcmlnaW5hbE91dHB1dFtpXSA9IG91dHB1dFtpXTtcblx0XHR9IGVsc2Vcblx0XHRcdG9yaWdpbmFsT3V0cHV0Lmxlbmd0aCA9IG9yaWdpbmFsT3V0cHV0Lmxlbmd0aCAtIDI7XG5cblx0XHRyZXR1cm4gY2xpcHBlZDtcblx0fVxuXG5cdHByaXZhdGUgY2xpcEludmVyc2UgKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIHgzOiBudW1iZXIsIHkzOiBudW1iZXIsIHBvbHlnb246IG51bWJlcltdKTogdm9pZCB7XG5cdFx0dGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoID0gMDtcblx0XHRjb25zdCB2TGFzdCA9IHBvbHlnb24ubGVuZ3RoIC0gNDtcblxuXHRcdGxldCBpbnB1dDogbnVtYmVyW10sIG91dHB1dDogbnVtYmVyW107IC8vIEF2b2lkIGNvcHkgYXQgdGhlIGVuZC5cblx0XHRpZiAocG9seWdvbi5sZW5ndGggJSA0ID49IDIpIHtcblx0XHRcdGlucHV0ID0gdGhpcy5jbGlwT3V0cHV0O1xuXHRcdFx0b3V0cHV0ID0gdGhpcy5zY3JhdGNoO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbnB1dCA9IHRoaXMuc2NyYXRjaDtcblx0XHRcdG91dHB1dCA9IHRoaXMuY2xpcE91dHB1dDtcblx0XHR9XG5cblx0XHRpbnB1dC5sZW5ndGggPSA4O1xuXHRcdGxldCB2ID0gcG9seWdvbiwgaXYgPSBpbnB1dDtcblx0XHRpdlswXSA9IHgxO1xuXHRcdGl2WzFdID0geTE7XG5cdFx0aXZbMl0gPSB4Mjtcblx0XHRpdlszXSA9IHkyO1xuXHRcdGl2WzRdID0geDM7XG5cdFx0aXZbNV0gPSB5Mztcblx0XHRpdls2XSA9IHgxO1xuXHRcdGl2WzddID0geTE7XG5cdFx0b3V0cHV0Lmxlbmd0aCA9IDA7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgOyBpICs9IDIpIHtcblx0XHRcdGNvbnN0IGVkZ2VYID0gdltpXSwgZWRnZVkgPSB2W2kgKyAxXSwgZXggPSBlZGdlWCAtIHZbaSArIDJdLCBleSA9IGVkZ2VZIC0gdltpICsgM107XG5cdFx0XHRjb25zdCBvdXRwdXRTdGFydCA9IG91dHB1dC5sZW5ndGgsIGZyYWdtZW50U3RhcnQgPSB0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGg7XG5cdFx0XHR0aGlzLmludmVyc2VWZXJ0aWNlcy5wdXNoKDApO1xuXHRcdFx0aXYgPSBpbnB1dDtcblx0XHRcdHgxID0gaXZbMF07XG5cdFx0XHR5MSA9IGl2WzFdO1xuXHRcdFx0bGV0IHMxID0gZXkgKiAoZWRnZVggLSB4MSkgLSBleCAqIChlZGdlWSAtIHkxKTtcblx0XHRcdGZvciAobGV0IGlpID0gMiwgbm4gPSBpbnB1dC5sZW5ndGggLSAyOyBpaSA8PSBubjsgaWkgKz0gMikge1xuXHRcdFx0XHR4MiA9IGl2W2lpXTtcblx0XHRcdFx0eTIgPSBpdltpaSArIDFdO1xuXHRcdFx0XHRjb25zdCBzMiA9IGV5ICogKGVkZ2VYIC0geDIpIC0gZXggKiAoZWRnZVkgLSB5Mik7XG5cdFx0XHRcdGlmIChzMSA+IDApIHtcblx0XHRcdFx0XHRpZiAoczIgPiAwKSAvLyB2MSBpbiwgdjIgaW5cblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdFx0ZWxzZSB7IC8vIHYxIGluLCB2MiBvdXRcblx0XHRcdFx0XHRcdGNvbnN0IGl4ID0geDIgLSB4MSwgaXkgPSB5MiAtIHkxLCB0ID0gczEgLyAoaXggKiBleSAtIGl5ICogZXgpO1xuXHRcdFx0XHRcdFx0aWYgKHQgPj0gMCAmJiB0IDw9IDEpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3ggPSB4MSArIGl4ICogdCwgY3kgPSB5MSArIGl5ICogdDtcblx0XHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goY3gsIGN5KTtcblx0XHRcdFx0XHRcdFx0dGhpcy5pbnZlcnNlVmVydGljZXMucHVzaChjeCwgY3ksIHgyLCB5Mik7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0b3V0cHV0LnB1c2goeDIsIHkyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoczIgPiAwKSB7IC8vIHYxIG91dCwgdjIgaW5cblx0XHRcdFx0XHRjb25zdCBpeCA9IHgyIC0geDEsIGl5ID0geTIgLSB5MSwgdCA9IHMxIC8gKGl4ICogZXkgLSBpeSAqIGV4KTtcblx0XHRcdFx0XHRpZiAodCA+PSAwICYmIHQgPD0gMSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY3ggPSB4MSArIGl4ICogdCwgY3kgPSB5MSArIGl5ICogdDtcblx0XHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goY3gsIGN5KTtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKGN4LCBjeSwgeDIsIHkyKTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKHgyLCB5Mik7XG5cdFx0XHRcdH0gZWxzZSAvLyB2MSBvdXQsIHYyIG91dFxuXHRcdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzLnB1c2goeDIsIHkyKTtcblx0XHRcdFx0eDEgPSB4Mjtcblx0XHRcdFx0eTEgPSB5Mjtcblx0XHRcdFx0czEgPSBzMjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZnJhZ21lbnRTaXplID0gdGhpcy5pbnZlcnNlVmVydGljZXMubGVuZ3RoIC0gZnJhZ21lbnRTdGFydCAtIDE7XG5cdFx0XHRpZiAoZnJhZ21lbnRTaXplID49IDYpXG5cdFx0XHRcdHRoaXMuaW52ZXJzZVZlcnRpY2VzW2ZyYWdtZW50U3RhcnRdID0gZnJhZ21lbnRTaXplO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHR0aGlzLmludmVyc2VWZXJ0aWNlcy5sZW5ndGggPSBmcmFnbWVudFN0YXJ0OyAvLyBEZWdlbmVyYXRlLlxuXG5cdFx0XHRpZiAob3V0cHV0U3RhcnQgPT09IG91dHB1dC5sZW5ndGgpIGJyZWFrOyAvLyBBbGwgb3V0c2lkZS5cblxuXHRcdFx0b3V0cHV0LnB1c2gob3V0cHV0WzBdLCBvdXRwdXRbMV0pO1xuXG5cdFx0XHRpZiAoaSA9PT0gdkxhc3QpIGJyZWFrO1xuXHRcdFx0Y29uc3QgdGVtcCA9IG91dHB1dDtcblx0XHRcdG91dHB1dCA9IGlucHV0O1xuXHRcdFx0b3V0cHV0Lmxlbmd0aCA9IDA7XG5cdFx0XHRpbnB1dCA9IHRlbXA7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBtYWtlQ2xvY2t3aXNlIChwb2x5Z29uOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHYgPSBwb2x5Z29uO1xuXHRcdGNvbnN0IG4gPSBwb2x5Z29uLmxlbmd0aDtcblx0XHRsZXQgbm9DVyA9IHRydWUsIG5vQ0NXID0gdHJ1ZTtcblx0XHRsZXQgYXJlYSA9IDAsIHByZXZYID0gdltuIC0gMl0sIHByZXZZID0gdltuIC0gMV0sIGN1cnJYID0gdlswXSwgY3VyclkgPSB2WzFdO1xuXHRcdGZvciAobGV0IGkgPSAyOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCBuZXh0WCA9IHZbaV0sIG5leHRZID0gdltpICsgMV07XG5cdFx0XHRhcmVhICs9IGN1cnJYICogbmV4dFkgLSBuZXh0WCAqIGN1cnJZO1xuXHRcdFx0Y29uc3QgY3Jvc3MgPSAoY3VyclggLSBwcmV2WCkgKiAobmV4dFkgLSBjdXJyWSkgLSAoY3VyclkgLSBwcmV2WSkgKiAobmV4dFggLSBjdXJyWCk7XG5cdFx0XHRub0NDVyA9IG5vQ0NXICYmIGNyb3NzIDw9IDA7XG5cdFx0XHRub0NXID0gbm9DVyAmJiBjcm9zcyA+PSAwO1xuXHRcdFx0cHJldlggPSBjdXJyWDtcblx0XHRcdHByZXZZID0gY3Vyclk7XG5cdFx0XHRjdXJyWCA9IG5leHRYO1xuXHRcdFx0Y3VyclkgPSBuZXh0WTtcblx0XHR9XG5cdFx0YXJlYSArPSBjdXJyWCAqIHZbMV0gLSB2WzBdICogY3Vyclk7XG5cdFx0Y29uc3QgY3Jvc3MgPSAoY3VyclggLSBwcmV2WCkgKiAodlsxXSAtIGN1cnJZKSAtIChjdXJyWSAtIHByZXZZKSAqICh2WzBdIC0gY3VyclgpO1xuXHRcdG5vQ0NXID0gbm9DQ1cgJiYgY3Jvc3MgPD0gMDtcblx0XHRub0NXID0gbm9DVyAmJiBjcm9zcyA+PSAwO1xuXHRcdGlmIChhcmVhID49IDApIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBsYXN0WCA9IG4gLSAyLCBoYWxmID0gbiA+PiAxOyBpIDwgaGFsZjsgaSArPSAyKSB7XG5cdFx0XHRcdGNvbnN0IHggPSB2W2ldLCB5ID0gdltpICsgMV07XG5cdFx0XHRcdGNvbnN0IG90aGVyID0gbGFzdFggLSBpO1xuXHRcdFx0XHR2W2ldID0gdltvdGhlcl07XG5cdFx0XHRcdHZbaSArIDFdID0gdltvdGhlciArIDFdO1xuXHRcdFx0XHR2W290aGVyXSA9IHg7XG5cdFx0XHRcdHZbb3RoZXIgKyAxXSA9IHk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbm9DVztcblx0XHR9XG5cdFx0cmV0dXJuIG5vQ0NXO1xuXHR9XG5cblx0cHJpdmF0ZSBtYWtlQ29udmV4IChwb2x5Z29uOiBudW1iZXJbXSk6IHZvaWQge1xuXHRcdGNvbnN0IG4gPSBwb2x5Z29uLmxlbmd0aDtcblx0XHRjb25zdCB2ID0gcG9seWdvbjtcblx0XHR0aGlzLmNsaXBPdXRwdXQubGVuZ3RoID0gbjtcblx0XHRjb25zdCBzb3J0ZWQgPSB0aGlzLmNsaXBPdXRwdXQ7XG5cdFx0c29ydGVkWzBdID0gdlswXTtcblx0XHRzb3J0ZWRbMV0gPSB2WzFdO1xuXHRcdGZvciAobGV0IGkgPSAyOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRjb25zdCB4ID0gdltpXSwgeSA9IHZbaSArIDFdO1xuXHRcdFx0bGV0IHAgPSBpIC0gMjtcblx0XHRcdGZvciAoOyBwID49IDAgJiYgKHNvcnRlZFtwXSA+IHggfHwgKHNvcnRlZFtwXSA9PT0geCAmJiBzb3J0ZWRbcCArIDFdID4geSkpOyBwIC09IDIpIHtcblx0XHRcdFx0c29ydGVkW3AgKyAyXSA9IHNvcnRlZFtwXTtcblx0XHRcdFx0c29ydGVkW3AgKyAzXSA9IHNvcnRlZFtwICsgMV07XG5cdFx0XHR9XG5cdFx0XHRzb3J0ZWRbcCArIDJdID0geDtcblx0XHRcdHNvcnRlZFtwICsgM10gPSB5O1xuXHRcdH1cblx0XHR2WzBdID0gc29ydGVkWzBdO1xuXHRcdHZbMV0gPSBzb3J0ZWRbMV07XG5cdFx0dlsyXSA9IHNvcnRlZFsyXTtcblx0XHR2WzNdID0gc29ydGVkWzNdO1xuXHRcdGxldCBzID0gNDtcblx0XHRmb3IgKGxldCBpID0gNDsgaSA8IG47IGkgKz0gMiwgcyArPSAyKSB7XG5cdFx0XHRjb25zdCB4ID0gc29ydGVkW2ldLCB5ID0gc29ydGVkW2kgKyAxXTtcblx0XHRcdHdoaWxlICgodltzIC0gMl0gLSB2W3MgLSA0XSkgKiAoeSAtIHZbcyAtIDNdKSAtICh2W3MgLSAxXSAtIHZbcyAtIDNdKSAqICh4IC0gdltzIC0gNF0pID49IDApIHtcblx0XHRcdFx0cyAtPSAyO1xuXHRcdFx0XHRpZiAocyA9PT0gMikgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR2W3NdID0geDtcblx0XHRcdHZbcyArIDFdID0geTtcblx0XHR9XG5cdFx0dltzXSA9IHNvcnRlZFtuIC0gNF07XG5cdFx0dltzICsgMV0gPSBzb3J0ZWRbbiAtIDNdO1xuXHRcdGNvbnN0IHQgPSBzO1xuXHRcdHMgKz0gMjtcblx0XHRmb3IgKGxldCBpID0gbiAtIDY7IGkgPj0gMDsgaSAtPSAyLCBzICs9IDIpIHtcblx0XHRcdGNvbnN0IHggPSBzb3J0ZWRbaV0sIHkgPSBzb3J0ZWRbaSArIDFdO1xuXHRcdFx0d2hpbGUgKCh2W3MgLSAyXSAtIHZbcyAtIDRdKSAqICh5IC0gdltzIC0gM10pIC0gKHZbcyAtIDFdIC0gdltzIC0gM10pICogKHggLSB2W3MgLSA0XSkgPj0gMCkge1xuXHRcdFx0XHRzIC09IDI7XG5cdFx0XHRcdGlmIChzID09PSB0KSBicmVhaztcblx0XHRcdH1cblx0XHRcdHZbc10gPSB4O1xuXHRcdFx0dltzICsgMV0gPSB5O1xuXHRcdH1cblx0XHRwb2x5Z29uLmxlbmd0aCA9IHMgLSAyO1xuXHR9XG59XG4iXX0=
|