@datagrok-libraries/utils 4.1.34 → 4.1.35
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/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-lines-on-sp.d.ts","sourceRoot":"","sources":["render-lines-on-sp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,QAAQ,MAAM,aAAa,CAAC;AAEnC,oBAAY,2BAA2B;IACnC,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;CACpB;AAED,KAAK,UAAU,GAAG;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"render-lines-on-sp.d.ts","sourceRoot":"","sources":["render-lines-on-sp.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,12 +46,12 @@ export class ScatterPlotLinesRenderer {
|
|
|
46
46
|
this.arrowWidth = lines.arrowSize;
|
|
47
47
|
this.canvas.onmousedown = (event) => {
|
|
48
48
|
if (this.mouseOverLineId !== -1)
|
|
49
|
-
this.lineClicked.next({ x: event.clientX, y: event.clientY, id: this.mouseOverLineId });
|
|
49
|
+
this.lineClicked.next({ x: event.clientX, y: event.clientY, id: this.mouseOverLineId, event: event });
|
|
50
50
|
};
|
|
51
51
|
this.canvas.onmousemove = (event) => {
|
|
52
52
|
this.mouseOverLineId = this.checkCoordsOnLine(event.offsetX, event.offsetY);
|
|
53
53
|
if (this.mouseOverLineId !== -1)
|
|
54
|
-
this.lineHover.next({ x: event.clientX, y: event.clientY, id: this.mouseOverLineId });
|
|
54
|
+
this.lineHover.next({ x: event.clientX, y: event.clientY, id: this.mouseOverLineId, event: event });
|
|
55
55
|
};
|
|
56
56
|
sp.onEvent('d4-before-draw-scene')
|
|
57
57
|
.subscribe((_) => {
|
|
@@ -323,4 +323,4 @@ export class ScatterPlotLinesRenderer {
|
|
|
323
323
|
path.lineTo(arrowEndX - (this.arrowWidth * Math.sin(arrowAngle + Math.PI / 10)), arrowEndY - (this.arrowWidth * Math.cos(arrowAngle + Math.PI / 10)));
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWxpbmVzLW9uLXNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVuZGVyLWxpbmVzLW9uLXNwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFFbkMsTUFBTSxDQUFOLElBQVksMkJBSVg7QUFKRCxXQUFZLDJCQUEyQjtJQUNuQyw0Q0FBYSxDQUFBO0lBQ2IsNENBQWEsQ0FBQTtJQUNiLGdEQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFKVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBSXRDO0FBNEJELE1BQU0sT0FBTyx3QkFBd0I7SUFnQmpDLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsRUFBVTtRQUN4QixJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxLQUFrQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsVUFBb0I7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFF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Q0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQVksRUFBRSxFQUFZO1FBQ3RFLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakgsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFD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QUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztZQUNyQyxNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxHQUFHLEtBQUs7Z0JBQzdCLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDckIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUN0QjtRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVM7Z0JBQ3BCLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUNELElB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QUFDO0lBRUQsV0FBVyxDQUFDLElBQThCLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQzFHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUMzRSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQzNFLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICcuL2JpdC1hcnJheSc7XG5cbmV4cG9ydCBlbnVtIFNjYXR0ZXJQbG90Q3VycmVudExpbmVTdHlsZSB7XG4gICAgbm9uZSA9ICdub25lJyxcbiAgICBib2xkID0gJ2JvbGQnLFxuICAgIGRhc2hlZCA9ICdkYXNoZWQnXG59XG5cbnR5cGUgTWFya2VyU2l6ZSA9IHtcbiAgICBzaXplRnJvbTogbnVtYmVyLFxuICAgIHNpemVUbzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIE1vdXNlT3ZlckxpbmVFdmVudCA9IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICAgIGlkOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIElMaW5lU2VyaWVzID0ge1xuICAgIGZyb206IFVpbnQzMkFycmF5O1xuICAgIHRvOiBVaW50MzJBcnJheTtcbiAgICBjb2xvcj86IHN0cmluZzsgICAgICAgICAgICAgLy8gY29tbW9uIGNvbG9yLiBVc2UgW2NvbG9yc10gaWYgeW91IG5lZWQgaW5kaXZpZHVhbCBjb2xvcnMgcGVyIGxpbmVcbiAgICBjb2xvcnM/OiBzdHJpbmdbXTsgICAgICAgICAgLy8gbGluZSBjb2xvcnMuIElmIHRoZXkgYXJlIHRoZSBzYW1lIGZvciB0aGUgc2VyaWVzLCB1c2UgW2NvbG9yXSBpbnN0ZWFkLlxuICAgIHdpZHRoPzogbnVtYmVyOyAgICAgICAgICAgICAvLyBjb21tb24gd2lkdGguIFVzZSBbY29sb3JzXSBpZiB5b3UgbmVlZCBpbmRpdmlkdWFsIHdpZHRocyBwZXIgbGluZVxuICAgIHdpZHRocz86IEZsb2F0MzJBcnJheTsgICAgICAvLyBsaW5lIHdpZHRocy4gSWYgdGhleSBhcmUgdGhlIHNhbWUgZm9yIHRoZSBzZXJpZXMsIHVzZSBbd2lkdGhdIGluc3RlYWQuXG4gICAgb3BhY2l0eT86IG51bWJlcjsgICAgICAgICAgIC8vIGNvbW1vbiBvcGFjaXR5LiBVc2UgW29wYWNpdGllc10gaWYgeW91IG5lZWQgaW5kaXZpZHVhbCBvcGFjaXRpZXMgcGVyIGxpbmVcbiAgICBvcGFjaXRpZXM/OiBGbG9hdDMyQXJyYXk7ICAgLy8gbGluZSBvcGFjaXRpZXMuIElmIHRoZXkgYXJlIHRoZSBzYW1lIGZvciB0aGUgc2VyaWVzLCB1c2UgW29wYWNpdHldIGluc3RlYWRcbiAgICBkcmF3QXJyb3dzPzogYm9vbGVhbjsgICAgICAgLy8gY29tbW9uIHBhcmFtZXRlciB0byBkcmF3IGFycm93cy4gVXNlIFtkcmF3QXJyb3dzQXJyXSBpZiB5b3UgbmVlZCB0byBkcmF3IGFycm93cyBub3QgZm9yIGVhY2ggbGluZVxuICAgIGRyYXdBcnJvd3NBcnI/OiBCaXRBcnJheTsgICAvLyBpbmRpdmlkdWFsIHBhcmFtZXRlciBmb3IgZWFjaCBsaW5lLiBJZiB0aGV5IGFyZSB0aGUgc2FtZSBmb3IgdGhlIHNlcmllcywgdXNlIFtkcmF3QXJyb3dzXSBpbnN0ZWFkXG4gICAgdmlzaWJpbGl0eT86IEJpdEFycmF5OyAgICAgIC8vIGluZGl2aWR1YWwgcGFyYW1ldGVyIGZvciBlYWNoIGxpbmUuIFNldCBiaXQgdG8gZmFsc2UgdG8gaGlkZSB0aGUgbGluZVxuICAgIGFycm93U2l6ZT86IG51bWJlcjsgICAgICAgICAvLyBjb21tb24gZm9yIGFsbCBhcnJvd3Ncbn1cblxuZXhwb3J0IGNsYXNzIFNjYXR0ZXJQbG90TGluZXNSZW5kZXJlciB7XG4gICAgc3A6IERHLlNjYXR0ZXJQbG90Vmlld2VyO1xuICAgIHhBeGlzQ29sOiBERy5Db2x1bW47XG4gICAgeUF4aXNDb2w6IERHLkNvbHVtbjtcbiAgICBfY3VycmVudExpbmVJZHggPSAtMTtcbiAgICBsaW5lcyE6IElMaW5lU2VyaWVzO1xuICAgIGxpbmVDbGlja2VkID0gbmV3IFN1YmplY3Q8TW91c2VPdmVyTGluZUV2ZW50PigpO1xuICAgIGxpbmVIb3ZlciA9IG5ldyBTdWJqZWN0PE1vdXNlT3ZlckxpbmVFdmVudD4oKTtcbiAgICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICAgIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICAgIG1vdXNlT3ZlckxpbmVJZCA9IC0xO1xuICAgIG11bHRpcGxlTGluZXNDb3VudHMhOiBVaW50OEFycmF5O1xuICAgIHZpc2liaWxpdHk6IEJpdEFycmF5O1xuICAgIGN1cnJlbnRMaW5lU3R5bGU6IFNjYXR0ZXJQbG90Q3VycmVudExpbmVTdHlsZTtcbiAgICBhcnJvd1dpZHRoID0gMTU7XG5cbiAgICBnZXQgY3VycmVudExpbmVJZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudExpbmVJZHg7XG4gICAgfVxuXG4gICAgc2V0IGN1cnJlbnRMaW5lSWQoaWQ6IG51bWJlcikge1xuICAgICAgICBpZiAoaWQgIT09IHRoaXMuX2N1cnJlbnRMaW5lSWR4KSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50TGluZUlkeCA9IGlkO1xuICAgICAgICAgICAgdGhpcy5zcC5yZW5kZXIodGhpcy5jdHgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IGxpbmVzVG9SZW5kZXIobGluZXM6IElMaW5lU2VyaWVzKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTGluZXMobGluZXMpO1xuICAgICAgICB0aGlzLnNwLnJlbmRlcih0aGlzLmN0eCk7XG4gICAgfVxuXG4gICAgc2V0IGxpbmVzVmlzaWJpbGl0eSh2aXNpYmlsaXR5OiBCaXRBcnJheSkge1xuICAgICAgICB0aGlzLnZpc2liaWxpdHkgPSB2aXNpYmlsaXR5O1xuICAgICAgICB0aGlzLnNwLnJlbmRlcih0aGlzLmN0eCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioc3A6IERHLlNjYXR0ZXJQbG90Vmlld2VyLCB4QXhpczogc3RyaW5nLCB5QXhpczogc3RyaW5nLCBsaW5lczogSUxpbmVTZXJpZXMsXG4gICAgICAgIGN1cnJlbnRMaW5lU3R5bGUgPSBTY2F0dGVyUGxvdEN1cnJlbnRMaW5lU3R5bGUubm9uZSkge1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIHRoaXMueEF4aXNDb2wgPSB0aGlzLnNwLmRhdGFGcmFtZSEuY29sdW1ucy5ieU5hbWUoeEF4aXMpO1xuICAgICAgICB0aGlzLnlBeGlzQ29sID0gdGhpcy5zcC5kYXRhRnJhbWUhLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgICAgICAgdGhpcy5jYW52YXMgPSB0aGlzLnNwLmdldEluZm8oKVsnY2FudmFzJ107XG4gICAgICAgIHRoaXMuY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgICAgIHRoaXMuY3VycmVudExpbmVTdHlsZSA9IGN1cnJlbnRMaW5lU3R5bGU7XG4gICAgICAgIHRoaXMudXBkYXRlTGluZXMobGluZXMpO1xuICAgICAgICB0aGlzLnZpc2liaWxpdHkgPSBsaW5lcy52aXNpYmlsaXR5ID8/IG5ldyBCaXRBcnJheSh0aGlzLmxpbmVzLmZyb20ubGVuZ3RoKTtcbiAgICAgICAgaWYgKCFsaW5lcy52aXNpYmlsaXR5KVxuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5LnNldEFsbCh0cnVlLCBmYWxzZSk7XG4gICAgICAgIGlmIChsaW5lcy5hcnJvd1NpemUpXG4gICAgICAgICAgICB0aGlzLmFycm93V2lkdGggPSBsaW5lcy5hcnJvd1NpemU7XG5cbiAgICAgICAgdGhpcy5jYW52YXMub25tb3VzZWRvd24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vdXNlT3ZlckxpbmVJZCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5saW5lQ2xpY2tlZC5uZXh0KHt4OiBldmVudC5jbGllbnRYLCB5OiBldmVudC5jbGllbnRZLCBpZDogdGhpcy5tb3VzZU92ZXJMaW5lSWR9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FudmFzLm9ubW91c2Vtb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlT3ZlckxpbmVJZCA9IHRoaXMuY2hlY2tDb29yZHNPbkxpbmUoZXZlbnQub2Zmc2V0WCwgZXZlbnQub2Zmc2V0WSk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb3VzZU92ZXJMaW5lSWQgIT09IC0xKVxuICAgICAgICAgICAgICAgIHRoaXMubGluZUhvdmVyLm5leHQoe3g6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFksIGlkOiB0aGlzLm1vdXNlT3ZlckxpbmVJZH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc3Aub25FdmVudCgnZDQtYmVmb3JlLWRyYXctc2NlbmUnKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoXzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJMaW5lcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlTGluZXMobGluZXM6IElMaW5lU2VyaWVzKSB7XG4gICAgICAgIHRoaXMubGluZXMgPSBsaW5lcztcbiAgICAgICAgdGhpcy5tdWx0aXBsZUxpbmVzQ291bnRzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5saW5lcy5mcm9tLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuY3JlYXRlTXVsdGlMaW5lc0luZGljZXMoKTtcbiAgICB9XG5cbiAgICByZW5kZXJMaW5lcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3BMb29rID0gdGhpcy5zcC5nZXRPcHRpb25zKCkubG9vaztcbiAgICAgICAgY29uc3QgaW5kaXZpZHVhbExpbmVTdHlsZXMgPSB0aGlzLmxpbmVzLmNvbG9ycyB8fCB0aGlzLmxpbmVzLndpZHRoIHx8IHRoaXMubGluZXMub3BhY2l0aWVzIHx8IHRoaXMubGluZXMuZHJhd0Fycm93c0FycjtcbiAgICAgICAgaWYgKCFpbmRpdmlkdWFsTGluZVN0eWxlcykge1xuICAgICAgICAgICAgdGhpcy5jdHgubGluZVdpZHRoID0gdGhpcy5saW5lcy53aWR0aCA/PyAxO1xuICAgICAgICAgICAgdGhpcy5jdHguc3Ryb2tlU3R5bGUgPSBgcmdiYSgke3RoaXMubGluZXMuY29sb3IgPz8gJzAsMTI4LDAnfSwke3RoaXMubGluZXMub3BhY2l0eSA/PyAxfSlgO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hcmtlclNpemVDb2wgPSBzcExvb2tbJ3NpemVDb2x1bW5OYW1lJ10gPyB0aGlzLnNwLmRhdGFGcmFtZS5jb2woc3BMb29rWydzaXplQ29sdW1uTmFtZSddKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuc3AuZGF0YUZyYW1lLmZpbHRlcjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVzLmZyb20ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIuZ2V0KHRoaXMubGluZXMuZnJvbVtpXSkgJiYgZmlsdGVyLmdldCh0aGlzLmxpbmVzLnRvW2ldKSAmJiB0aGlzLnZpc2liaWxpdHkuZ2V0Qml0KGkpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxpbmVMZW4gPSAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2l6ZUZyb20sIHNpemVUbyB9ID0gdGhpcy5nZXRNYXJrZXJzU2l6ZXMoc3BMb29rLCBtYXJrZXJTaXplQ29sLCBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludEZyb20gPSB0aGlzLnNwLndvcmxkVG9TY3JlZW4odGhpcy54QXhpc0NvbC5nZXQodGhpcy5saW5lcy5mcm9tW2ldKSwgdGhpcy55QXhpc0NvbC5nZXQodGhpcy5saW5lcy5mcm9tW2ldKSk7XG4gICAgICAgICAgICAgICAgbGV0IGFYID0gcG9pbnRGcm9tPy54O1xuICAgICAgICAgICAgICAgIGxldCBhWSA9IHBvaW50RnJvbT8ueTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludFRvID0gdGhpcy5zcC53b3JsZFRvU2NyZWVuKHRoaXMueEF4aXNDb2wuZ2V0KHRoaXMubGluZXMudG9baV0pLCB0aGlzLnlBeGlzQ29sLmdldCh0aGlzLmxpbmVzLnRvW2ldKSk7XG4gICAgICAgICAgICAgICAgbGV0IGJYID0gcG9pbnRUbz8ueDtcbiAgICAgICAgICAgICAgICBsZXQgYlkgPSBwb2ludFRvPy55O1xuICAgICAgICAgICAgICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgICAgIGlmIChhWCAmJiBhWSAmJiBiWCAmJiBiWSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kaXZpZHVhbExpbmVTdHlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5saW5lcy5jb2xvcnM/LltpXSA/IHRoaXMubGluZXMuY29sb3JzPy5baV0gOiAnMCwxMjgsMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGFjaXR5ID0gdGhpcy5saW5lcy5vcGFjaXRpZXM/LltpXSA/IHRoaXMubGluZXMub3BhY2l0aWVzPy5baV0gOiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguc3Ryb2tlU3R5bGUgPSBgcmdiYSgke2NvbG9yfSwke29wYWNpdHl9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lV2lkdGggPSB0aGlzLmxpbmVzLndpZHRocz8uW2ldID8gdGhpcy5saW5lcy53aWR0aHM/LltpXSA6IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuX2N1cnJlbnRMaW5lSWR4KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVDdXJyZW50TGluZVN0eWxlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aUxpbmVzID0gdGhpcy5tdWx0aXBsZUxpbmVzQ291bnRzW2ldO1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29udHJvbFBvaW50OiBERy5Qb2ludCB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlMaW5lcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZUxlbiA9IHRoaXMuZ2V0TGluZUxlbmd0aChhWCwgYVksIGJYLCBiWSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydFBvaW50V2l0aE1hcmtlciA9IHRoaXMuZ2V0UG9pbnRPbkRpc3RhbmNlKGFYLCBhWSwgYlgsIGJZLCBzaXplVG8sIGxpbmVMZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kdFBvaW50V2l0aE1hcmtlciA9IHRoaXMuZ2V0UG9pbnRPbkRpc3RhbmNlKGJYLCBiWSwgYVgsIGFZLCBzaXplRnJvbSwgbGluZUxlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBhWCA9IHN0YXJ0UG9pbnRXaXRoTWFya2VyLng7XG4gICAgICAgICAgICAgICAgICAgICAgICBhWSA9IHN0YXJ0UG9pbnRXaXRoTWFya2VyLnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBiWCA9IGVuZHRQb2ludFdpdGhNYXJrZXIueDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJZID0gZW5kdFBvaW50V2l0aE1hcmtlci55O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFBvaW50ID0gdGhpcy5saW5lcy5mcm9tW2ldID4gdGhpcy5saW5lcy50b1tpXSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQ29udHJvbFBvaW50KG11bHRpTGluZXMsIGFYLCBhWSwgYlgsIGJZLCBpKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQ29udHJvbFBvaW50KG11bHRpTGluZXMsIGJYLCBiWSwgYVgsIGFZLCBpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4Lm1vdmVUbyhhWCEsIGFZISk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5xdWFkcmF0aWNDdXJ2ZVRvKGNvbnRyb2xQb2ludC54LCBjb250cm9sUG9pbnQueSwgYlgsIGJZKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4Lm1vdmVUbyhhWCEsIGFZISk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8oYlgsIGJZKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saW5lcy5kcmF3QXJyb3dzID8/IHRoaXMubGluZXMuZHJhd0Fycm93c0Fycj8uZ2V0Qml0KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmVMZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUxlbiA9IHRoaXMuZ2V0TGluZUxlbmd0aChhWCwgYVksIGJYLCBiWSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZUxlbiA+IHRoaXMuYXJyb3dXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFycm93UG9pbnQgPSAhbXVsdGlMaW5lcyA/IHRoaXMuZ2V0UG9pbnRPbkRpc3RhbmNlKGFYLCBhWSwgYlgsIGJZLCBzaXplVG8sIGxpbmVMZW4pIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJvd0NQWCA9IG11bHRpTGluZXMgPyBjb250cm9sUG9pbnQhLnggOiBhWDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJvd0NQWSA9IG11bHRpTGluZXMgPyBjb250cm9sUG9pbnQhLnkgOiBhWTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhc0Fycm93KHRoaXMuY3R4LCBhcnJvd1BvaW50Py54ID8/IGFYLCBhcnJvd1BvaW50Py55ID8/IGFZLCBhcnJvd0NQWCwgYXJyb3dDUFkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5jbG9zZVBhdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuX2N1cnJlbnRMaW5lSWR4KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVDdXJyZW50TGluZVN0eWxlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxsTGVmdEJvdHRvbVJlY3QoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVDdXJyZW50TGluZVN0eWxlKGZsYWc6IGJvb2xlYW4pIHtcbiAgICAgICAgc3dpdGNoKHRoaXMuY3VycmVudExpbmVTdHlsZSl7XG4gICAgICAgICAgICBjYXNlIFNjYXR0ZXJQbG90Q3VycmVudExpbmVTdHlsZS5ib2xkOiB7XG4gICAgICAgICAgICAgICAgZmxhZyA/IHRoaXMuY3R4LmxpbmVXaWR0aCArPSAyIDogdGhpcy5jdHgubGluZVdpZHRoIC09IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFNjYXR0ZXJQbG90Q3VycmVudExpbmVTdHlsZS5kYXNoZWQ6IHtcbiAgICAgICAgICAgICAgICBmbGFnID8gdGhpcy5jdHguc2V0TGluZURhc2goWzUsIDVdKSA6IHRoaXMuY3R4LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TWFya2Vyc1NpemVzKHNwTG9vazogYW55LCBtYXJrZXJTaXplQ29sOiBERy5Db2x1bW4gfCBudWxsLCBpOiBudW1iZXIpOiBNYXJrZXJTaXplIHtcbiAgICAgICAgbGV0IHNpemVGcm9tID0gMztcbiAgICAgICAgbGV0IHNpemVUbyA9IDM7XG4gICAgICAgIGlmIChtYXJrZXJTaXplQ29sKSB7XG4gICAgICAgICAgICBzaXplRnJvbSA9IChzcExvb2subWFya2VyTWluU2l6ZSArIChzcExvb2subWFya2VyTWF4U2l6ZSAtIHNwTG9vay5tYXJrZXJNaW5TaXplKSAqIG1hcmtlclNpemVDb2wuc2NhbGUodGhpcy5saW5lcy5mcm9tW2ldKSkgLyAyO1xuICAgICAgICAgICAgc2l6ZVRvID0gKHNwTG9vay5tYXJrZXJNaW5TaXplICsgKHNwTG9vay5tYXJrZXJNYXhTaXplIC0gc3BMb29rLm1hcmtlck1pblNpemUpICogbWFya2VyU2l6ZUNvbC5zY2FsZSh0aGlzLmxpbmVzLnRvW2ldKSkgLyAyO1xuICAgICAgICB9IGVsc2UgaWYgKHNwTG9vay5tYXJrZXJEZWZhdWx0U2l6ZSkge1xuICAgICAgICAgICAgc2l6ZUZyb20gPSBzcExvb2subWFya2VyRGVmYXVsdFNpemUgLyAyO1xuICAgICAgICAgICAgc2l6ZVRvID0gc3BMb29rLm1hcmtlckRlZmF1bHRTaXplIC8gMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaXplRnJvbSwgc2l6ZVRvIH07XG4gICAgfVxuXG5cbiAgICBmaWxsTGVmdEJvdHRvbVJlY3QoKSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBuZXcgUGF0aDJEKCk7XG4gICAgICAgIHJlY3QucmVjdCh0aGlzLnNwLnlBeGlzQm94Lm1pblgsIHRoaXMuc3AueUF4aXNCb3gubWF4WSwgdGhpcy5zcC55QXhpc0JveC53aWR0aCwgdGhpcy5zcC54QXhpc0JveC5oZWlnaHQpO1xuICAgICAgICB0aGlzLmN0eC5maWxsU3R5bGUgPSBgd2hpdGVgO1xuICAgICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgdGhpcy5jdHguZmlsbChyZWN0KTtcbiAgICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgfVxuXG4gICAgY3JlYXRlTXVsdGlMaW5lc0luZGljZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5SWR4c0JpdEFycmF5ID0gbmV3IEJpdEFycmF5KHRoaXMubGluZXMuZnJvbS5sZW5ndGgpO1xuICAgICAgICBhcnJheUlkeHNCaXRBcnJheS5zZXRBbGwodHJ1ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMTsgKGkgPSBhcnJheUlkeHNCaXRBcnJheS5maW5kTmV4dChpKSkgIT09IC0xOykge1xuICAgICAgICAgICAgbGV0IGZpcnN0TGluZUlkeCA9IGk7XG4gICAgICAgICAgICBsZXQgcDEgPSB0aGlzLmxpbmVzLmZyb21bZmlyc3RMaW5lSWR4XTtcbiAgICAgICAgICAgIGxldCBwMiA9IHRoaXMubGluZXMudG9bZmlyc3RMaW5lSWR4XTtcbiAgICAgICAgICAgIGxldCBsaW5lc1BlclBhaXIgPSAxO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGk7IChqID0gYXJyYXlJZHhzQml0QXJyYXkuZmluZE5leHQoaikpICE9PSAtMTspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludFRvQ29tcGFyZTEgPSB0aGlzLmxpbmVzLmZyb21bal07XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRUb0NvbXBhcmUyID0gdGhpcy5saW5lcy50b1tqXTtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRUb0NvbXBhcmUxID09PSBwMSAmJiBwb2ludFRvQ29tcGFyZTIgPT09IHAyIHx8XG4gICAgICAgICAgICAgICAgICAgIHBvaW50VG9Db21wYXJlMiA9PT0gcDEgJiYgcG9pbnRUb0NvbXBhcmUxID09PSBwMikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpcGxlTGluZXNDb3VudHNbal0gPSArK2xpbmVzUGVyUGFpcjtcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlJZHhzQml0QXJyYXkuc2V0Qml0KGosIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmVzUGVyUGFpciA+IDEpXG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZUxpbmVzQ291bnRzW2ZpcnN0TGluZUlkeF0gPSAxO1xuICAgICAgICAgICAgYXJyYXlJZHhzQml0QXJyYXkuc2V0Qml0KGksIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja0Nvb3Jkc09uTGluZSh4OiBudW1iZXIsIHk6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGxldCBjYW5kaWRhdGVJZHggPSAtMTtcbiAgICAgICAgbGV0IG1pbkRpc3QgPSBudWxsO1xuICAgICAgICBsZXQgZGlzdCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHNwTG9vayA9IHRoaXMuc3AuZ2V0T3B0aW9ucygpLmxvb2s7XG4gICAgICAgIGNvbnN0IG1hcmtlclNpemVDb2wgPSBzcExvb2tbJ3NpemVDb2x1bW5OYW1lJ10gPyB0aGlzLnNwLmRhdGFGcmFtZS5jb2woc3BMb29rWydzaXplQ29sdW1uTmFtZSddKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuc3AuZGF0YUZyYW1lLmZpbHRlcjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVzLmZyb20ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIuZ2V0KHRoaXMubGluZXMuZnJvbVtpXSkgJiYgZmlsdGVyLmdldCh0aGlzLmxpbmVzLnRvW2ldKSAmJiB0aGlzLnZpc2liaWxpdHkuZ2V0Qml0KGkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzaXplRnJvbSwgc2l6ZVRvIH0gPSB0aGlzLmdldE1hcmtlcnNTaXplcyhzcExvb2ssIG1hcmtlclNpemVDb2wsIGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBGcm9tID0gdGhpcy5zcC53b3JsZFRvU2NyZWVuKHRoaXMueEF4aXNDb2wuZ2V0KHRoaXMubGluZXMuZnJvbVtpXSksIHRoaXMueUF4aXNDb2wuZ2V0KHRoaXMubGluZXMuZnJvbVtpXSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBUbyA9IHRoaXMuc3Aud29ybGRUb1NjcmVlbih0aGlzLnhBeGlzQ29sLmdldCh0aGlzLmxpbmVzLnRvW2ldKSwgdGhpcy55QXhpc0NvbC5nZXQodGhpcy5saW5lcy50b1tpXSkpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlTGluZXNDb3VudHNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVuID0gdGhpcy5nZXRMaW5lTGVuZ3RoKHBGcm9tLngsIHBGcm9tLnksIHBUby54LCBwVG8ueSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyb21NYXJrZXIgPSB0aGlzLmdldFBvaW50T25EaXN0YW5jZShwRnJvbS54LCBwRnJvbS55LCBwVG8ueCwgcFRvLnksIHNpemVUbywgbGVuKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9NYXJrZXIgPSB0aGlzLmdldFBvaW50T25EaXN0YW5jZShwVG8ueCwgcFRvLnksIHBGcm9tPy54LCBwRnJvbT8ueSwgc2l6ZUZyb20sIGxlbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xQb2ludCA9IHRoaXMubGluZXMuZnJvbVtpXSA+IHRoaXMubGluZXMudG9baV0gP1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQ29udHJvbFBvaW50KHRoaXMubXVsdGlwbGVMaW5lc0NvdW50c1tpXSwgZnJvbU1hcmtlci54LCBmcm9tTWFya2VyLnksIHRvTWFya2VyLngsIHRvTWFya2VyLnksIGkpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZENvbnRyb2xQb2ludCh0aGlzLm11bHRpcGxlTGluZXNDb3VudHNbaV0sIHRvTWFya2VyLngsIHRvTWFya2VyLnksIGZyb21NYXJrZXIueCwgZnJvbU1hcmtlci55LCBpKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzdCA9IHRoaXMuY2FsY3VsYXRlRGlzdFRvQ3VydmVMaW5lKGksIHgsIHksIGZyb21NYXJrZXIsIHRvTWFya2VyLCBjb250cm9sUG9pbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3QgPSB0aGlzLmNhbGN1bGF0ZURpc3RUb1N0cmFpZ2h0TGluZSh4LCB5LCBwRnJvbSwgcFRvKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCghbWluRGlzdCAmJiBkaXN0ICE9PSBudWxsICYmIGRpc3QgPCA1KSB8fCBtaW5EaXN0ICYmIGRpc3QgIT09IG51bGwgJiYgZGlzdCA8IG1pbkRpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgbWluRGlzdCA9IGRpc3Q7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUlkeCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYW5kaWRhdGVJZHg7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlRGlzdFRvU3RyYWlnaHRMaW5lKHg6IG51bWJlciwgeTogbnVtYmVyLCBwMTogREcuUG9pbnQsIHAyOiBERy5Qb2ludCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICAvKiBjYWxjdWxhdGluZyBjb29yZGluYXRlcyBvZiBhIHJlY3QgYXJvdW5kIGEgbGluZS4gSWYgY3Vyc29yIGNvb3JkcyBhcmUgb3V0c2lkZSB0aGlzIHJlY3QgLSBhc3N1bWUgdGhhdFxuICAgICAgICBwb2ludCBpcyBub3Qgb24gbGluZSBhbmQgZG8gbm90IGNhbGN1bGF0ZSBkaXN0YW5jZSB0byBsaW5lICovXG4gICAgICAgIGxldCB4TWluID0gTWF0aC5taW4ocDEueCwgcDIueCk7XG4gICAgICAgIGxldCB4TWF4ID0gTWF0aC5tYXgocDEueCwgcDIueCk7XG4gICAgICAgIGxldCB5TWluID0gTWF0aC5taW4ocDEueSwgcDIueSk7XG4gICAgICAgIGxldCB5TWF4ID0gTWF0aC5tYXgocDEueSwgcDIueSk7XG5cbiAgICAgICAgLy9hZGRpbmcgYSBjb3VwbGUgb2YgcGl4ZWxzIHRvIGluY3JlYXNlIHRoZSB3aWR0aC9oZWlnaHQgb2YgdGhlIHJlY3RcbiAgICAgICAgY29uc3QgdGhyZXNob2xkID0gMjtcbiAgICAgICAgcmV0dXJuIHggPj0geE1pbiAtIHRocmVzaG9sZCAmJiB4IDw9IHhNYXggKyB0aHJlc2hvbGQgJiYgeSA+PSB5TWluIC0gdGhyZXNob2xkICYmIHkgPD0geU1heCArIHRocmVzaG9sZCA/XG4gICAgICAgICAgICB0aGlzLmRpc3RUb1N0cmFpZ2h0TGluZVNlZ21lbnQoeCwgeSwgcDEsIHAyKSA6XG4gICAgICAgICAgICBudWxsO1xuICAgIH1cblxuICAgIGRpc3RUb1N0cmFpZ2h0TGluZVNlZ21lbnQoeDogbnVtYmVyLCB5OiBudW1iZXIsIHAxOiBERy5Qb2ludCwgcDI6IERHLlBvaW50KSB7XG4gICAgICAgIGNvbnN0IGRpc3QgPSAoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikgPT4gTWF0aC5wb3coKHgxIC0geDIpLCAyKSArIE1hdGgucG93KCh5MSAtIHkyKSwgMik7XG4gICAgICAgIGNvbnN0IGwgPSBkaXN0KHAxLngsIHAxLnksIHAyLngsIHAyLnkpO1xuICAgICAgICBpZiAobCA9PSAwKSByZXR1cm4gZGlzdCh4LCB5LCBwMS54LCBwMS55KTtcbiAgICAgICAgbGV0IHQgPSAoKHggLSBwMS54KSAqIChwMi54IC0gcDEueCkgKyAoeSAtIHAxLnkpICogKHAyLnkgLSBwMS55KSkgLyBsO1xuICAgICAgICB0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgdCkpO1xuICAgICAgICByZXR1cm4gZGlzdCh4LCB5LCBwMS54ICsgdCAqIChwMi54IC0gcDEueCksIHAxLnkgKyB0ICogKHAyLnkgLSBwMS55KSlcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVEaXN0VG9DdXJ2ZUxpbmUoaTogbnVtYmVyLCB4OiBudW1iZXIsIHk6IG51bWJlciwgcDE6IERHLlBvaW50LCBwMjogREcuUG9pbnQsXG4gICAgICAgIHBjOiBERy5Qb2ludCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICAvKiBjYWxjdWxhdGluZyBjb29yZGluYXRlcyBvZiBhIHJlY3QgYXJvdW5kIGEgbGluZS4gSWYgY3Vyc29yIGNvb3JkcyBhcmUgb3V0c2lkZSB0aGlzIHNoYXBlIC0gYXNzdW1lIHRoYXRcbiAgICAgICAgcG9pbnQgaXMgbm90IG9uIGxpbmUgYW5kIGRvIG5vdCBjYWxjdWxhdGUgZGlzdGFuY2UgdG8gbGluZSAqL1xuICAgICAgICBsZXQgeE1pbiA9IE1hdGgubWluKHAxLngsIHAyLngsIHBjLngpO1xuICAgICAgICBsZXQgeE1heCA9IE1hdGgubWF4KHAxLngsIHAyLngsIHBjLngpO1xuICAgICAgICBsZXQgeU1pbiA9IE1hdGgubWluKHAxLnksIHAyLnksIHBjLnkpO1xuICAgICAgICBsZXQgeU1heCA9IE1hdGgubWF4KHAxLnksIHAyLnksIHBjLnkpO1xuXG4gICAgICAgIC8vYWRkaW5nIGEgY291cGxlIG9mIHBpeGVscyB0byBpbmNyZWFzZSB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSByZWN0XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZCA9IDI7XG4gICAgICAgIGlmICh4ID49IHhNaW4gLSB0aHJlc2hvbGQgJiYgeCA8PSB4TWF4ICsgdGhyZXNob2xkICYmIHkgPj0geU1pbiAtIHRocmVzaG9sZCAmJiB5IDw9IHlNYXggKyB0aHJlc2hvbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IHcgPSB4TWF4IC0geE1pbjtcbiAgICAgICAgICAgIGNvbnN0IGggPSB5TWF4IC0geU1pbjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZURpc3RUb0N1cnZlSW5SZWN0KHgsIHksIHAxLCBwYywgcDIsIHcsIGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZURpc3RUb0N1cnZlSW5SZWN0KHg6IG51bWJlciwgeTogbnVtYmVyLCBwMDogREcuUG9pbnQsIHAxOiBERy5Qb2ludCwgcDI6IERHLlBvaW50LFxuICAgICAgICB3OiBudW1iZXIsIGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHN0ZXBMZW4gPSAzO1xuICAgICAgICBjb25zdCBzdGVwc051bSA9IE1hdGguZmxvb3IoKHcgKyBoKSAvIHN0ZXBMZW4pO1xuICAgICAgICBjb25zdCBkZWx0YVQgPSAxIC8gc3RlcHNOdW07XG4gICAgICAgIGNvbnN0IGFyclggPSBuZXcgVWludDMyQXJyYXkoc3RlcHNOdW0pO1xuICAgICAgICBjb25zdCBhcnJZID0gbmV3IFVpbnQzMkFycmF5KHN0ZXBzTnVtKTtcbiAgICAgICAgbGV0IG1heEhXID0gbmV3IFVpbnQzMkFycmF5KHN0ZXBzTnVtKTtcbiAgICAgICAgbGV0IG1pblN1bUhXOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlSWR4cyA9IG5ldyBCaXRBcnJheShzdGVwc051bSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyWC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdCA9IGkgKiBkZWx0YVQ7XG4gICAgICAgICAgICBjb25zdCB4T25DdXJ2ZSA9IE1hdGgucG93KCgxIC0gdCksIDIpICogcDAueCArIDIgKiB0ICogKDEgLSB0KSAqIHAxLnggKyBNYXRoLnBvdyh0LCAyKSAqIHAyLng7XG4gICAgICAgICAgICBjb25zdCB5T25DdXJ2ZSA9IE1hdGgucG93KCgxIC0gdCksIDIpICogcDAueSArIDIgKiB0ICogKDEgLSB0KSAqIHAxLnkgKyBNYXRoLnBvdyh0LCAyKSAqIHAyLnk7XG4gICAgICAgICAgICBjb25zdCByZWN0VyA9IE1hdGguYWJzKHggLSB4T25DdXJ2ZSk7XG4gICAgICAgICAgICBjb25zdCByZWN0SCA9IE1hdGguYWJzKHkgLSB5T25DdXJ2ZSk7XG4gICAgICAgICAgICBjb25zdCBzdW1IVyA9IHJlY3RXICsgcmVjdEg7XG4gICAgICAgICAgICBpZiAoIW1pblN1bUhXIHx8IG1pblN1bUhXID4gc3VtSFcpXG4gICAgICAgICAgICAgICAgbWluU3VtSFcgPSBzdW1IVztcbiAgICAgICAgICAgIG1heEhXW2ldID0gTWF0aC5tYXgocmVjdFcsIHJlY3RIKTtcbiAgICAgICAgICAgIGFyclhbaV0gPSB4T25DdXJ2ZTtcbiAgICAgICAgICAgIGFycllbaV0gPSB5T25DdXJ2ZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyclgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYXhIV1tpXSA8IG1pblN1bUhXISlcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVJZHhzLnNldEJpdChpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1pbkRpc3Q6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgICBmb3IgKGxldCBqID0gLTE7IChqID0gY2FuZGlkYXRlSWR4cy5maW5kTmV4dChqKSkgIT09IC0xOykge1xuICAgICAgICAgICAgY29uc3QgZGlzdCA9IE1hdGguaHlwb3QoKGFyclhbal0gLSB4KSwgKGFycllbal0gLSB5KSk7XG4gICAgICAgICAgICBpZiAoIW1pbkRpc3QgfHwgbWluRGlzdCA+IGRpc3QpXG4gICAgICAgICAgICAgICAgbWluRGlzdCA9IGRpc3Q7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbkRpc3QhO1xuICAgIH1cblxuICAgIGdldExpbmVMZW5ndGgocDF4OiBudW1iZXIsIHAxeTogbnVtYmVyLCBwMng6IG51bWJlciwgcDJ5OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHAyeCAtIHAxeCwgMikgKyBNYXRoLnBvdyhwMnkgLSBwMXksIDIpKTtcbiAgICB9XG5cbiAgICBnZXRQb2ludE9uRGlzdGFuY2UocDF4OiBudW1iZXIsIHAxeTogbnVtYmVyLCBwMng6IG51bWJlciwgcDJ5OiBudW1iZXIsIGRpc3RhbmNlOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogREcuUG9pbnQge1xuICAgICAgICBjb25zdCBkeCA9IChwMnggLSBwMXgpIC8gbGVuZ3RoO1xuICAgICAgICBjb25zdCBkeSA9IChwMnkgLSBwMXkpIC8gbGVuZ3RoO1xuICAgICAgICBjb25zdCBwM3ggPSBwMnggLSBkaXN0YW5jZSAqIGR4O1xuICAgICAgICBjb25zdCBwM3kgPSBwMnkgLSBkaXN0YW5jZSAqIGR5O1xuXG4gICAgICAgIHJldHVybiBuZXcgREcuUG9pbnQocDN4LCBwM3kpO1xuICAgIH1cblxuICAgIGZpbmRDb250cm9sUG9pbnQoaWR4OiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIGk/OiBudW1iZXIpOiBERy5Qb2ludCB7XG4gICAgICAgIGNvbnN0IG1pZFggPSB4MSArICh4MiAtIHgxKSAvIDI7XG4gICAgICAgIGNvbnN0IG1pZFkgPSB5MSArICh5MiAtIHkxKSAvIDI7XG4gICAgICAgIGxldCBkeCA9IG1pZFggLSB4MTtcbiAgICAgICAgbGV0IGR5ID0gbWlkWSAtIHkxO1xuICAgICAgICBjb25zdCBkaXN0ID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICAgICAgZHggLz0gZGlzdDtcbiAgICAgICAgZHkgLz0gZGlzdDtcbiAgICAgICAgY29uc3QgcGVycGVuZGljdWxhckxlbiA9IDUwICogTWF0aC5jZWlsKGlkeCAvIDIpO1xuICAgICAgICByZXR1cm4gaWR4ICUgMiA9PT0gMCA/XG4gICAgICAgICAgICBuZXcgREcuUG9pbnQobWlkWCArIChwZXJwZW5kaWN1bGFyTGVuIC8gMikgKiBkeSwgbWlkWSAtIChwZXJwZW5kaWN1bGFyTGVuIC8gMikgKiBkeCkgOlxuICAgICAgICAgICAgbmV3IERHLlBvaW50KG1pZFggLSAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHksIG1pZFkgKyAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHgpO1xuICAgIH1cblxuICAgIGNhbnZhc0Fycm93KHBhdGg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgYXJyb3dFbmRYOiBudW1iZXIsIGFycm93RW5kWTogbnVtYmVyLCBxdWFkWDogbnVtYmVyLCBxdWFkWTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycm93QW5nbGUgPSBNYXRoLmF0YW4yKHF1YWRYIC0gYXJyb3dFbmRYLCBxdWFkWSAtIGFycm93RW5kWSkgKyBNYXRoLlBJO1xuICAgICAgICBwYXRoLm1vdmVUbyhhcnJvd0VuZFggLSAodGhpcy5hcnJvd1dpZHRoICogTWF0aC5zaW4oYXJyb3dBbmdsZSAtIE1hdGguUEkgLyAxMCkpLFxuICAgICAgICAgICAgYXJyb3dFbmRZIC0gKHRoaXMuYXJyb3dXaWR0aCAqIE1hdGguY29zKGFycm93QW5nbGUgLSBNYXRoLlBJIC8gMTApKSk7XG4gICAgICAgIHBhdGgubGluZVRvKGFycm93RW5kWCwgYXJyb3dFbmRZKTtcbiAgICAgICAgcGF0aC5saW5lVG8oYXJyb3dFbmRYIC0gKHRoaXMuYXJyb3dXaWR0aCAqIE1hdGguc2luKGFycm93QW5nbGUgKyBNYXRoLlBJIC8gMTApKSxcbiAgICAgICAgICAgIGFycm93RW5kWSAtICh0aGlzLmFycm93V2lkdGggKiBNYXRoLmNvcyhhcnJvd0FuZ2xlICsgTWF0aC5QSSAvIDEwKSkpO1xuICAgIH1cblxufSJdfQ==
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWxpbmVzLW9uLXNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVuZGVyLWxpbmVzLW9uLXNwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFFbkMsTUFBTSxDQUFOLElBQVksMkJBSVg7QUFKRCxXQUFZLDJCQUEyQjtJQUNuQyw0Q0FBYSxDQUFBO0lBQ2IsNENBQWEsQ0FBQTtJQUNiLGdEQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFKVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBSXRDO0FBNkJELE1BQU0sT0FBTyx3QkFBd0I7SUFnQmpDLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsRUFBVTtRQUN4QixJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxLQUFrQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsVUFBb0I7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFF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LENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFZLEVBQUUsRUFBWSxFQUNoRixFQUFZO1FBQ1o7cUVBQzZEO1FBQzdELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0QyxvRUFBb0U7UUFDcEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRyxTQUFTLEVBQUU7WUFDbEcsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztZQUN0QixNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDBCQUEwQixDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBWSxFQUFFLEVBQVksRUFBRSxFQUFZLEVBQ3JGLENBQVMsRUFBRSxDQUFTO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsSUFBSSxRQUFRLEdBQWtCLElBQUksQ0FBQztRQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDckMsTUFBTSxLQUFLLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsR0FBRyxLQUFLO2dCQUM3QixRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ25CLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDdEI7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFTO2dCQUNwQixhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFB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QUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUE4QixFQUFFLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUMxRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDM0UsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUMzRSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgQml0QXJyYXkgZnJvbSAnLi9iaXQtYXJyYXknO1xuXG5leHBvcnQgZW51bSBTY2F0dGVyUGxvdEN1cnJlbnRMaW5lU3R5bGUge1xuICAgIG5vbmUgPSAnbm9uZScsXG4gICAgYm9sZCA9ICdib2xkJyxcbiAgICBkYXNoZWQgPSAnZGFzaGVkJ1xufVxuXG50eXBlIE1hcmtlclNpemUgPSB7XG4gICAgc2l6ZUZyb206IG51bWJlcixcbiAgICBzaXplVG86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBNb3VzZU92ZXJMaW5lRXZlbnQgPSB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICBpZDogbnVtYmVyO1xuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG59XG5cbmV4cG9ydCB0eXBlIElMaW5lU2VyaWVzID0ge1xuICAgIGZyb206IFVpbnQzMkFycmF5O1xuICAgIHRvOiBVaW50MzJBcnJheTtcbiAgICBjb2xvcj86IHN0cmluZzsgICAgICAgICAgICAgLy8gY29tbW9uIGNvbG9yLiBVc2UgW2NvbG9yc10gaWYgeW91IG5lZWQgaW5kaXZpZHVhbCBjb2xvcnMgcGVyIGxpbmVcbiAgICBjb2xvcnM/OiBzdHJpbmdbXTsgICAgICAgICAgLy8gbGluZSBjb2xvcnMuIElmIHRoZXkgYXJlIHRoZSBzYW1lIGZvciB0aGUgc2VyaWVzLCB1c2UgW2NvbG9yXSBpbnN0ZWFkLlxuICAgIHdpZHRoPzogbnVtYmVyOyAgICAgICAgICAgICAvLyBjb21tb24gd2lkdGguIFVzZSBbY29sb3JzXSBpZiB5b3UgbmVlZCBpbmRpdmlkdWFsIHdpZHRocyBwZXIgbGluZVxuICAgIHdpZHRocz86IEZsb2F0MzJBcnJheTsgICAgICAvLyBsaW5lIHdpZHRocy4gSWYgdGhleSBhcmUgdGhlIHNhbWUgZm9yIHRoZSBzZXJpZXMsIHVzZSBbd2lkdGhdIGluc3RlYWQuXG4gICAgb3BhY2l0eT86IG51bWJlcjsgICAgICAgICAgIC8vIGNvbW1vbiBvcGFjaXR5LiBVc2UgW29wYWNpdGllc10gaWYgeW91IG5lZWQgaW5kaXZpZHVhbCBvcGFjaXRpZXMgcGVyIGxpbmVcbiAgICBvcGFjaXRpZXM/OiBGbG9hdDMyQXJyYXk7ICAgLy8gbGluZSBvcGFjaXRpZXMuIElmIHRoZXkgYXJlIHRoZSBzYW1lIGZvciB0aGUgc2VyaWVzLCB1c2UgW29wYWNpdHldIGluc3RlYWRcbiAgICBkcmF3QXJyb3dzPzogYm9vbGVhbjsgICAgICAgLy8gY29tbW9uIHBhcmFtZXRlciB0byBkcmF3IGFycm93cy4gVXNlIFtkcmF3QXJyb3dzQXJyXSBpZiB5b3UgbmVlZCB0byBkcmF3IGFycm93cyBub3QgZm9yIGVhY2ggbGluZVxuICAgIGRyYXdBcnJvd3NBcnI/OiBCaXRBcnJheTsgICAvLyBpbmRpdmlkdWFsIHBhcmFtZXRlciBmb3IgZWFjaCBsaW5lLiBJZiB0aGV5IGFyZSB0aGUgc2FtZSBmb3IgdGhlIHNlcmllcywgdXNlIFtkcmF3QXJyb3dzXSBpbnN0ZWFkXG4gICAgdmlzaWJpbGl0eT86IEJpdEFycmF5OyAgICAgIC8vIGluZGl2aWR1YWwgcGFyYW1ldGVyIGZvciBlYWNoIGxpbmUuIFNldCBiaXQgdG8gZmFsc2UgdG8gaGlkZSB0aGUgbGluZVxuICAgIGFycm93U2l6ZT86IG51bWJlcjsgICAgICAgICAvLyBjb21tb24gZm9yIGFsbCBhcnJvd3Ncbn1cblxuZXhwb3J0IGNsYXNzIFNjYXR0ZXJQbG90TGluZXNSZW5kZXJlciB7XG4gICAgc3A6IERHLlNjYXR0ZXJQbG90Vmlld2VyO1xuICAgIHhBeGlzQ29sOiBERy5Db2x1bW47XG4gICAgeUF4aXNDb2w6IERHLkNvbHVtbjtcbiAgICBfY3VycmVudExpbmVJZHggPSAtMTtcbiAgICBsaW5lcyE6IElMaW5lU2VyaWVzO1xuICAgIGxpbmVDbGlja2VkID0gbmV3IFN1YmplY3Q8TW91c2VPdmVyTGluZUV2ZW50PigpO1xuICAgIGxpbmVIb3ZlciA9IG5ldyBTdWJqZWN0PE1vdXNlT3ZlckxpbmVFdmVudD4oKTtcbiAgICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICAgIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICAgIG1vdXNlT3ZlckxpbmVJZCA9IC0xO1xuICAgIG11bHRpcGxlTGluZXNDb3VudHMhOiBVaW50OEFycmF5O1xuICAgIHZpc2liaWxpdHk6IEJpdEFycmF5O1xuICAgIGN1cnJlbnRMaW5lU3R5bGU6IFNjYXR0ZXJQbG90Q3VycmVudExpbmVTdHlsZTtcbiAgICBhcnJvd1dpZHRoID0gMTU7XG5cbiAgICBnZXQgY3VycmVudExpbmVJZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudExpbmVJZHg7XG4gICAgfVxuXG4gICAgc2V0IGN1cnJlbnRMaW5lSWQoaWQ6IG51bWJlcikge1xuICAgICAgICBpZiAoaWQgIT09IHRoaXMuX2N1cnJlbnRMaW5lSWR4KSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50TGluZUlkeCA9IGlkO1xuICAgICAgICAgICAgdGhpcy5zcC5yZW5kZXIodGhpcy5jdHgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IGxpbmVzVG9SZW5kZXIobGluZXM6IElMaW5lU2VyaWVzKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTGluZXMobGluZXMpO1xuICAgICAgICB0aGlzLnNwLnJlbmRlcih0aGlzLmN0eCk7XG4gICAgfVxuXG4gICAgc2V0IGxpbmVzVmlzaWJpbGl0eSh2aXNpYmlsaXR5OiBCaXRBcnJheSkge1xuICAgICAgICB0aGlzLnZpc2liaWxpdHkgPSB2aXNpYmlsaXR5O1xuICAgICAgICB0aGlzLnNwLnJlbmRlcih0aGlzLmN0eCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioc3A6IERHLlNjYXR0ZXJQbG90Vmlld2VyLCB4QXhpczogc3RyaW5nLCB5QXhpczogc3RyaW5nLCBsaW5lczogSUxpbmVTZXJpZXMsXG4gICAgICAgIGN1cnJlbnRMaW5lU3R5bGUgPSBTY2F0dGVyUGxvdEN1cnJlbnRMaW5lU3R5bGUubm9uZSkge1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIHRoaXMueEF4aXNDb2wgPSB0aGlzLnNwLmRhdGFGcmFtZSEuY29sdW1ucy5ieU5hbWUoeEF4aXMpO1xuICAgICAgICB0aGlzLnlBeGlzQ29sID0gdGhpcy5zcC5kYXRhRnJhbWUhLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgICAgICAgdGhpcy5jYW52YXMgPSB0aGlzLnNwLmdldEluZm8oKVsnY2FudmFzJ107XG4gICAgICAgIHRoaXMuY3R4ID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gICAgICAgIHRoaXMuY3VycmVudExpbmVTdHlsZSA9IGN1cnJlbnRMaW5lU3R5bGU7XG4gICAgICAgIHRoaXMudXBkYXRlTGluZXMobGluZXMpO1xuICAgICAgICB0aGlzLnZpc2liaWxpdHkgPSBsaW5lcy52aXNpYmlsaXR5ID8/IG5ldyBCaXRBcnJheSh0aGlzLmxpbmVzLmZyb20ubGVuZ3RoKTtcbiAgICAgICAgaWYgKCFsaW5lcy52aXNpYmlsaXR5KVxuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5LnNldEFsbCh0cnVlLCBmYWxzZSk7XG4gICAgICAgIGlmIChsaW5lcy5hcnJvd1NpemUpXG4gICAgICAgICAgICB0aGlzLmFycm93V2lkdGggPSBsaW5lcy5hcnJvd1NpemU7XG5cbiAgICAgICAgdGhpcy5jYW52YXMub25tb3VzZWRvd24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vdXNlT3ZlckxpbmVJZCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5saW5lQ2xpY2tlZC5uZXh0KHt4OiBldmVudC5jbGllbnRYLCB5OiBldmVudC5jbGllbnRZLCBpZDogdGhpcy5tb3VzZU92ZXJMaW5lSWQsIGV2ZW50OiBldmVudH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYW52YXMub25tb3VzZW1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW91c2VPdmVyTGluZUlkID0gdGhpcy5jaGVja0Nvb3Jkc09uTGluZShldmVudC5vZmZzZXRYLCBldmVudC5vZmZzZXRZKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vdXNlT3ZlckxpbmVJZCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5saW5lSG92ZXIubmV4dCh7eDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSwgaWQ6IHRoaXMubW91c2VPdmVyTGluZUlkLCBldmVudDogZXZlbnR9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwLm9uRXZlbnQoJ2Q0LWJlZm9yZS1kcmF3LXNjZW5lJylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF86IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyTGluZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUxpbmVzKGxpbmVzOiBJTGluZVNlcmllcykge1xuICAgICAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gICAgICAgIHRoaXMubXVsdGlwbGVMaW5lc0NvdW50cyA9IG5ldyBVaW50OEFycmF5KHRoaXMubGluZXMuZnJvbS5sZW5ndGgpO1xuICAgICAgICB0aGlzLmNyZWF0ZU11bHRpTGluZXNJbmRpY2VzKCk7XG4gICAgfVxuXG4gICAgcmVuZGVyTGluZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNwTG9vayA9IHRoaXMuc3AuZ2V0T3B0aW9ucygpLmxvb2s7XG4gICAgICAgIGNvbnN0IGluZGl2aWR1YWxMaW5lU3R5bGVzID0gdGhpcy5saW5lcy5jb2xvcnMgfHwgdGhpcy5saW5lcy53aWR0aCB8fCB0aGlzLmxpbmVzLm9wYWNpdGllcyB8fCB0aGlzLmxpbmVzLmRyYXdBcnJvd3NBcnI7XG4gICAgICAgIGlmICghaW5kaXZpZHVhbExpbmVTdHlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IHRoaXMubGluZXMud2lkdGggPz8gMTtcbiAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHt0aGlzLmxpbmVzLmNvbG9yID8/ICcwLDEyOCwwJ30sJHt0aGlzLmxpbmVzLm9wYWNpdHkgPz8gMX0pYDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXJrZXJTaXplQ29sID0gc3BMb29rWydzaXplQ29sdW1uTmFtZSddID8gdGhpcy5zcC5kYXRhRnJhbWUuY29sKHNwTG9va1snc2l6ZUNvbHVtbk5hbWUnXSkgOiBudWxsO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnNwLmRhdGFGcmFtZS5maWx0ZXI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5mcm9tLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLmdldCh0aGlzLmxpbmVzLmZyb21baV0pICYmIGZpbHRlci5nZXQodGhpcy5saW5lcy50b1tpXSkgJiYgdGhpcy52aXNpYmlsaXR5LmdldEJpdChpKSkge1xuICAgICAgICAgICAgICAgIGxldCBsaW5lTGVuID0gMDtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNpemVGcm9tLCBzaXplVG8gfSA9IHRoaXMuZ2V0TWFya2Vyc1NpemVzKHNwTG9vaywgbWFya2VyU2l6ZUNvbCwgaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRGcm9tID0gdGhpcy5zcC53b3JsZFRvU2NyZWVuKHRoaXMueEF4aXNDb2wuZ2V0KHRoaXMubGluZXMuZnJvbVtpXSksIHRoaXMueUF4aXNDb2wuZ2V0KHRoaXMubGluZXMuZnJvbVtpXSkpO1xuICAgICAgICAgICAgICAgIGxldCBhWCA9IHBvaW50RnJvbT8ueDtcbiAgICAgICAgICAgICAgICBsZXQgYVkgPSBwb2ludEZyb20/Lnk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRUbyA9IHRoaXMuc3Aud29ybGRUb1NjcmVlbih0aGlzLnhBeGlzQ29sLmdldCh0aGlzLmxpbmVzLnRvW2ldKSwgdGhpcy55QXhpc0NvbC5nZXQodGhpcy5saW5lcy50b1tpXSkpO1xuICAgICAgICAgICAgICAgIGxldCBiWCA9IHBvaW50VG8/Lng7XG4gICAgICAgICAgICAgICAgbGV0IGJZID0gcG9pbnRUbz8ueTtcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoYVggJiYgYVkgJiYgYlggJiYgYlkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGl2aWR1YWxMaW5lU3R5bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IHRoaXMubGluZXMuY29sb3JzPy5baV0gPyB0aGlzLmxpbmVzLmNvbG9ycz8uW2ldIDogJzAsMTI4LDAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IHRoaXMubGluZXMub3BhY2l0aWVzPy5baV0gPyB0aGlzLmxpbmVzLm9wYWNpdGllcz8uW2ldIDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgubGluZVdpZHRoID0gdGhpcy5saW5lcy53aWR0aHM/LltpXSA/IHRoaXMubGluZXMud2lkdGhzPy5baV0gOiAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSB0aGlzLl9jdXJyZW50TGluZUlkeClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQ3VycmVudExpbmVTdHlsZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlMaW5lcyA9IHRoaXMubXVsdGlwbGVMaW5lc0NvdW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRyb2xQb2ludDogREcuUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpTGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVMZW4gPSB0aGlzLmdldExpbmVMZW5ndGgoYVgsIGFZLCBiWCwgYlkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRQb2ludFdpdGhNYXJrZXIgPSB0aGlzLmdldFBvaW50T25EaXN0YW5jZShhWCwgYVksIGJYLCBiWSwgc2l6ZVRvLCBsaW5lTGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZHRQb2ludFdpdGhNYXJrZXIgPSB0aGlzLmdldFBvaW50T25EaXN0YW5jZShiWCwgYlksIGFYLCBhWSwgc2l6ZUZyb20sIGxpbmVMZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYVggPSBzdGFydFBvaW50V2l0aE1hcmtlci54O1xuICAgICAgICAgICAgICAgICAgICAgICAgYVkgPSBzdGFydFBvaW50V2l0aE1hcmtlci55O1xuICAgICAgICAgICAgICAgICAgICAgICAgYlggPSBlbmR0UG9pbnRXaXRoTWFya2VyLng7XG4gICAgICAgICAgICAgICAgICAgICAgICBiWSA9IGVuZHRQb2ludFdpdGhNYXJrZXIueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xQb2ludCA9IHRoaXMubGluZXMuZnJvbVtpXSA+IHRoaXMubGluZXMudG9baV0gP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZENvbnRyb2xQb2ludChtdWx0aUxpbmVzLCBhWCwgYVksIGJYLCBiWSwgaSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZENvbnRyb2xQb2ludChtdWx0aUxpbmVzLCBiWCwgYlksIGFYLCBhWSwgaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oYVghLCBhWSEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgucXVhZHJhdGljQ3VydmVUbyhjb250cm9sUG9pbnQueCwgY29udHJvbFBvaW50LnksIGJYLCBiWSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oYVghLCBhWSEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHgubGluZVRvKGJYLCBiWSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubGluZXMuZHJhd0Fycm93cyA/PyB0aGlzLmxpbmVzLmRyYXdBcnJvd3NBcnI/LmdldEJpdChpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5lTGVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVMZW4gPSB0aGlzLmdldExpbmVMZW5ndGgoYVgsIGFZLCBiWCwgYlkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVMZW4gPiB0aGlzLmFycm93V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJvd1BvaW50ID0gIW11bHRpTGluZXMgPyB0aGlzLmdldFBvaW50T25EaXN0YW5jZShhWCwgYVksIGJYLCBiWSwgc2l6ZVRvLCBsaW5lTGVuKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyb3dDUFggPSBtdWx0aUxpbmVzID8gY29udHJvbFBvaW50IS54IDogYVg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyb3dDUFkgPSBtdWx0aUxpbmVzID8gY29udHJvbFBvaW50IS55IDogYVk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW52YXNBcnJvdyh0aGlzLmN0eCwgYXJyb3dQb2ludD8ueCA/PyBhWCwgYXJyb3dQb2ludD8ueSA/PyBhWSwgYXJyb3dDUFgsIGFycm93Q1BZKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN0eC5zdHJva2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSB0aGlzLl9jdXJyZW50TGluZUlkeClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQ3VycmVudExpbmVTdHlsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsbExlZnRCb3R0b21SZWN0KCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlQ3VycmVudExpbmVTdHlsZShmbGFnOiBib29sZWFuKSB7XG4gICAgICAgIHN3aXRjaCh0aGlzLmN1cnJlbnRMaW5lU3R5bGUpe1xuICAgICAgICAgICAgY2FzZSBTY2F0dGVyUGxvdEN1cnJlbnRMaW5lU3R5bGUuYm9sZDoge1xuICAgICAgICAgICAgICAgIGZsYWcgPyB0aGlzLmN0eC5saW5lV2lkdGggKz0gMiA6IHRoaXMuY3R4LmxpbmVXaWR0aCAtPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTY2F0dGVyUGxvdEN1cnJlbnRMaW5lU3R5bGUuZGFzaGVkOiB7XG4gICAgICAgICAgICAgICAgZmxhZyA/IHRoaXMuY3R4LnNldExpbmVEYXNoKFs1LCA1XSkgOiB0aGlzLmN0eC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE1hcmtlcnNTaXplcyhzcExvb2s6IGFueSwgbWFya2VyU2l6ZUNvbDogREcuQ29sdW1uIHwgbnVsbCwgaTogbnVtYmVyKTogTWFya2VyU2l6ZSB7XG4gICAgICAgIGxldCBzaXplRnJvbSA9IDM7XG4gICAgICAgIGxldCBzaXplVG8gPSAzO1xuICAgICAgICBpZiAobWFya2VyU2l6ZUNvbCkge1xuICAgICAgICAgICAgc2l6ZUZyb20gPSAoc3BMb29rLm1hcmtlck1pblNpemUgKyAoc3BMb29rLm1hcmtlck1heFNpemUgLSBzcExvb2subWFya2VyTWluU2l6ZSkgKiBtYXJrZXJTaXplQ29sLnNjYWxlKHRoaXMubGluZXMuZnJvbVtpXSkpIC8gMjtcbiAgICAgICAgICAgIHNpemVUbyA9IChzcExvb2subWFya2VyTWluU2l6ZSArIChzcExvb2subWFya2VyTWF4U2l6ZSAtIHNwTG9vay5tYXJrZXJNaW5TaXplKSAqIG1hcmtlclNpemVDb2wuc2NhbGUodGhpcy5saW5lcy50b1tpXSkpIC8gMjtcbiAgICAgICAgfSBlbHNlIGlmIChzcExvb2subWFya2VyRGVmYXVsdFNpemUpIHtcbiAgICAgICAgICAgIHNpemVGcm9tID0gc3BMb29rLm1hcmtlckRlZmF1bHRTaXplIC8gMjtcbiAgICAgICAgICAgIHNpemVUbyA9IHNwTG9vay5tYXJrZXJEZWZhdWx0U2l6ZSAvIDI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc2l6ZUZyb20sIHNpemVUbyB9O1xuICAgIH1cblxuXG4gICAgZmlsbExlZnRCb3R0b21SZWN0KCkge1xuICAgICAgICBjb25zdCByZWN0ID0gbmV3IFBhdGgyRCgpO1xuICAgICAgICByZWN0LnJlY3QodGhpcy5zcC55QXhpc0JveC5taW5YLCB0aGlzLnNwLnlBeGlzQm94Lm1heFksIHRoaXMuc3AueUF4aXNCb3gud2lkdGgsIHRoaXMuc3AueEF4aXNCb3guaGVpZ2h0KTtcbiAgICAgICAgdGhpcy5jdHguZmlsbFN0eWxlID0gYHdoaXRlYDtcbiAgICAgICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgICAgIHRoaXMuY3R4LmZpbGwocmVjdCk7XG4gICAgICAgIHRoaXMuY3R4LmNsb3NlUGF0aCgpO1xuICAgIH1cblxuICAgIGNyZWF0ZU11bHRpTGluZXNJbmRpY2VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJheUlkeHNCaXRBcnJheSA9IG5ldyBCaXRBcnJheSh0aGlzLmxpbmVzLmZyb20ubGVuZ3RoKTtcbiAgICAgICAgYXJyYXlJZHhzQml0QXJyYXkuc2V0QWxsKHRydWUpO1xuICAgICAgICBmb3IgKGxldCBpID0gLTE7IChpID0gYXJyYXlJZHhzQml0QXJyYXkuZmluZE5leHQoaSkpICE9PSAtMTspIHtcbiAgICAgICAgICAgIGxldCBmaXJzdExpbmVJZHggPSBpO1xuICAgICAgICAgICAgbGV0IHAxID0gdGhpcy5saW5lcy5mcm9tW2ZpcnN0TGluZUlkeF07XG4gICAgICAgICAgICBsZXQgcDIgPSB0aGlzLmxpbmVzLnRvW2ZpcnN0TGluZUlkeF07XG4gICAgICAgICAgICBsZXQgbGluZXNQZXJQYWlyID0gMTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpOyAoaiA9IGFycmF5SWR4c0JpdEFycmF5LmZpbmROZXh0KGopKSAhPT0gLTE7KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRUb0NvbXBhcmUxID0gdGhpcy5saW5lcy5mcm9tW2pdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50VG9Db21wYXJlMiA9IHRoaXMubGluZXMudG9bal07XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50VG9Db21wYXJlMSA9PT0gcDEgJiYgcG9pbnRUb0NvbXBhcmUyID09PSBwMiB8fFxuICAgICAgICAgICAgICAgICAgICBwb2ludFRvQ29tcGFyZTIgPT09IHAxICYmIHBvaW50VG9Db21wYXJlMSA9PT0gcDIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZUxpbmVzQ291bnRzW2pdID0gKytsaW5lc1BlclBhaXI7XG4gICAgICAgICAgICAgICAgICAgIGFycmF5SWR4c0JpdEFycmF5LnNldEJpdChqLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW5lc1BlclBhaXIgPiAxKVxuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwbGVMaW5lc0NvdW50c1tmaXJzdExpbmVJZHhdID0gMTtcbiAgICAgICAgICAgIGFycmF5SWR4c0JpdEFycmF5LnNldEJpdChpLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tDb29yZHNPbkxpbmUoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBsZXQgY2FuZGlkYXRlSWR4ID0gLTE7XG4gICAgICAgIGxldCBtaW5EaXN0ID0gbnVsbDtcbiAgICAgICAgbGV0IGRpc3QgPSBudWxsO1xuICAgICAgICBjb25zdCBzcExvb2sgPSB0aGlzLnNwLmdldE9wdGlvbnMoKS5sb29rO1xuICAgICAgICBjb25zdCBtYXJrZXJTaXplQ29sID0gc3BMb29rWydzaXplQ29sdW1uTmFtZSddID8gdGhpcy5zcC5kYXRhRnJhbWUuY29sKHNwTG9va1snc2l6ZUNvbHVtbk5hbWUnXSkgOiBudWxsO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnNwLmRhdGFGcmFtZS5maWx0ZXI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5saW5lcy5mcm9tLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLmdldCh0aGlzLmxpbmVzLmZyb21baV0pICYmIGZpbHRlci5nZXQodGhpcy5saW5lcy50b1tpXSkgJiYgdGhpcy52aXNpYmlsaXR5LmdldEJpdChpKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2l6ZUZyb20sIHNpemVUbyB9ID0gdGhpcy5nZXRNYXJrZXJzU2l6ZXMoc3BMb29rLCBtYXJrZXJTaXplQ29sLCBpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwRnJvbSA9IHRoaXMuc3Aud29ybGRUb1NjcmVlbih0aGlzLnhBeGlzQ29sLmdldCh0aGlzLmxpbmVzLmZyb21baV0pLCB0aGlzLnlBeGlzQ29sLmdldCh0aGlzLmxpbmVzLmZyb21baV0pKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwVG8gPSB0aGlzLnNwLndvcmxkVG9TY3JlZW4odGhpcy54QXhpc0NvbC5nZXQodGhpcy5saW5lcy50b1tpXSksIHRoaXMueUF4aXNDb2wuZ2V0KHRoaXMubGluZXMudG9baV0pKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZUxpbmVzQ291bnRzW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbiA9IHRoaXMuZ2V0TGluZUxlbmd0aChwRnJvbS54LCBwRnJvbS55LCBwVG8ueCwgcFRvLnkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm9tTWFya2VyID0gdGhpcy5nZXRQb2ludE9uRGlzdGFuY2UocEZyb20ueCwgcEZyb20ueSwgcFRvLngsIHBUby55LCBzaXplVG8sIGxlbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvTWFya2VyID0gdGhpcy5nZXRQb2ludE9uRGlzdGFuY2UocFRvLngsIHBUby55LCBwRnJvbT8ueCwgcEZyb20/LnksIHNpemVGcm9tLCBsZW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sUG9pbnQgPSB0aGlzLmxpbmVzLmZyb21baV0gPiB0aGlzLmxpbmVzLnRvW2ldID9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZENvbnRyb2xQb2ludCh0aGlzLm11bHRpcGxlTGluZXNDb3VudHNbaV0sIGZyb21NYXJrZXIueCwgZnJvbU1hcmtlci55LCB0b01hcmtlci54LCB0b01hcmtlci55LCBpKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRDb250cm9sUG9pbnQodGhpcy5tdWx0aXBsZUxpbmVzQ291bnRzW2ldLCB0b01hcmtlci54LCB0b01hcmtlci55LCBmcm9tTWFya2VyLngsIGZyb21NYXJrZXIueSwgaSk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3QgPSB0aGlzLmNhbGN1bGF0ZURpc3RUb0N1cnZlTGluZShpLCB4LCB5LCBmcm9tTWFya2VyLCB0b01hcmtlciwgY29udHJvbFBvaW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkaXN0ID0gdGhpcy5jYWxjdWxhdGVEaXN0VG9TdHJhaWdodExpbmUoeCwgeSwgcEZyb20sIHBUbyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoIW1pbkRpc3QgJiYgZGlzdCAhPT0gbnVsbCAmJiBkaXN0IDwgNSkgfHwgbWluRGlzdCAmJiBkaXN0ICE9PSBudWxsICYmIGRpc3QgPCBtaW5EaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbkRpc3QgPSBkaXN0O1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVJZHggPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FuZGlkYXRlSWR4O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZURpc3RUb1N0cmFpZ2h0TGluZSh4OiBudW1iZXIsIHk6IG51bWJlciwgcDE6IERHLlBvaW50LCBwMjogREcuUG9pbnQpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgLyogY2FsY3VsYXRpbmcgY29vcmRpbmF0ZXMgb2YgYSByZWN0IGFyb3VuZCBhIGxpbmUuIElmIGN1cnNvciBjb29yZHMgYXJlIG91dHNpZGUgdGhpcyByZWN0IC0gYXNzdW1lIHRoYXRcbiAgICAgICAgcG9pbnQgaXMgbm90IG9uIGxpbmUgYW5kIGRvIG5vdCBjYWxjdWxhdGUgZGlzdGFuY2UgdG8gbGluZSAqL1xuICAgICAgICBsZXQgeE1pbiA9IE1hdGgubWluKHAxLngsIHAyLngpO1xuICAgICAgICBsZXQgeE1heCA9IE1hdGgubWF4KHAxLngsIHAyLngpO1xuICAgICAgICBsZXQgeU1pbiA9IE1hdGgubWluKHAxLnksIHAyLnkpO1xuICAgICAgICBsZXQgeU1heCA9IE1hdGgubWF4KHAxLnksIHAyLnkpO1xuXG4gICAgICAgIC8vYWRkaW5nIGEgY291cGxlIG9mIHBpeGVscyB0byBpbmNyZWFzZSB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSByZWN0XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZCA9IDI7XG4gICAgICAgIHJldHVybiB4ID49IHhNaW4gLSB0aHJlc2hvbGQgJiYgeCA8PSB4TWF4ICsgdGhyZXNob2xkICYmIHkgPj0geU1pbiAtIHRocmVzaG9sZCAmJiB5IDw9IHlNYXggKyB0aHJlc2hvbGQgP1xuICAgICAgICAgICAgdGhpcy5kaXN0VG9TdHJhaWdodExpbmVTZWdtZW50KHgsIHksIHAxLCBwMikgOlxuICAgICAgICAgICAgbnVsbDtcbiAgICB9XG5cbiAgICBkaXN0VG9TdHJhaWdodExpbmVTZWdtZW50KHg6IG51bWJlciwgeTogbnVtYmVyLCBwMTogREcuUG9pbnQsIHAyOiBERy5Qb2ludCkge1xuICAgICAgICBjb25zdCBkaXN0ID0gKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpID0+IE1hdGgucG93KCh4MSAtIHgyKSwgMikgKyBNYXRoLnBvdygoeTEgLSB5MiksIDIpO1xuICAgICAgICBjb25zdCBsID0gZGlzdChwMS54LCBwMS55LCBwMi54LCBwMi55KTtcbiAgICAgICAgaWYgKGwgPT0gMCkgcmV0dXJuIGRpc3QoeCwgeSwgcDEueCwgcDEueSk7XG4gICAgICAgIGxldCB0ID0gKCh4IC0gcDEueCkgKiAocDIueCAtIHAxLngpICsgKHkgLSBwMS55KSAqIChwMi55IC0gcDEueSkpIC8gbDtcbiAgICAgICAgdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHQpKTtcbiAgICAgICAgcmV0dXJuIGRpc3QoeCwgeSwgcDEueCArIHQgKiAocDIueCAtIHAxLngpLCBwMS55ICsgdCAqIChwMi55IC0gcDEueSkpXG4gICAgfVxuXG4gICAgY2FsY3VsYXRlRGlzdFRvQ3VydmVMaW5lKGk6IG51bWJlciwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHAxOiBERy5Qb2ludCwgcDI6IERHLlBvaW50LFxuICAgICAgICBwYzogREcuUG9pbnQpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgLyogY2FsY3VsYXRpbmcgY29vcmRpbmF0ZXMgb2YgYSByZWN0IGFyb3VuZCBhIGxpbmUuIElmIGN1cnNvciBjb29yZHMgYXJlIG91dHNpZGUgdGhpcyBzaGFwZSAtIGFzc3VtZSB0aGF0XG4gICAgICAgIHBvaW50IGlzIG5vdCBvbiBsaW5lIGFuZCBkbyBub3QgY2FsY3VsYXRlIGRpc3RhbmNlIHRvIGxpbmUgKi9cbiAgICAgICAgbGV0IHhNaW4gPSBNYXRoLm1pbihwMS54LCBwMi54LCBwYy54KTtcbiAgICAgICAgbGV0IHhNYXggPSBNYXRoLm1heChwMS54LCBwMi54LCBwYy54KTtcbiAgICAgICAgbGV0IHlNaW4gPSBNYXRoLm1pbihwMS55LCBwMi55LCBwYy55KTtcbiAgICAgICAgbGV0IHlNYXggPSBNYXRoLm1heChwMS55LCBwMi55LCBwYy55KTtcblxuICAgICAgICAvL2FkZGluZyBhIGNvdXBsZSBvZiBwaXhlbHMgdG8gaW5jcmVhc2UgdGhlIHdpZHRoL2hlaWdodCBvZiB0aGUgcmVjdFxuICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSAyO1xuICAgICAgICBpZiAoeCA+PSB4TWluIC0gdGhyZXNob2xkICYmIHggPD0geE1heCArIHRocmVzaG9sZCAmJiB5ID49IHlNaW4gLSB0aHJlc2hvbGQgJiYgeSA8PSB5TWF4ICsgdGhyZXNob2xkKSB7XG4gICAgICAgICAgICBjb25zdCB3ID0geE1heCAtIHhNaW47XG4gICAgICAgICAgICBjb25zdCBoID0geU1heCAtIHlNaW47XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVEaXN0VG9DdXJ2ZUluUmVjdCh4LCB5LCBwMSwgcGMsIHAyLCB3LCBoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVEaXN0VG9DdXJ2ZUluUmVjdCh4OiBudW1iZXIsIHk6IG51bWJlciwgcDA6IERHLlBvaW50LCBwMTogREcuUG9pbnQsIHAyOiBERy5Qb2ludCxcbiAgICAgICAgdzogbnVtYmVyLCBoOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBzdGVwTGVuID0gMztcbiAgICAgICAgY29uc3Qgc3RlcHNOdW0gPSBNYXRoLmZsb29yKCh3ICsgaCkgLyBzdGVwTGVuKTtcbiAgICAgICAgY29uc3QgZGVsdGFUID0gMSAvIHN0ZXBzTnVtO1xuICAgICAgICBjb25zdCBhcnJYID0gbmV3IFVpbnQzMkFycmF5KHN0ZXBzTnVtKTtcbiAgICAgICAgY29uc3QgYXJyWSA9IG5ldyBVaW50MzJBcnJheShzdGVwc051bSk7XG4gICAgICAgIGxldCBtYXhIVyA9IG5ldyBVaW50MzJBcnJheShzdGVwc051bSk7XG4gICAgICAgIGxldCBtaW5TdW1IVzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZUlkeHMgPSBuZXcgQml0QXJyYXkoc3RlcHNOdW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyclgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBpICogZGVsdGFUO1xuICAgICAgICAgICAgY29uc3QgeE9uQ3VydmUgPSBNYXRoLnBvdygoMSAtIHQpLCAyKSAqIHAwLnggKyAyICogdCAqICgxIC0gdCkgKiBwMS54ICsgTWF0aC5wb3codCwgMikgKiBwMi54O1xuICAgICAgICAgICAgY29uc3QgeU9uQ3VydmUgPSBNYXRoLnBvdygoMSAtIHQpLCAyKSAqIHAwLnkgKyAyICogdCAqICgxIC0gdCkgKiBwMS55ICsgTWF0aC5wb3codCwgMikgKiBwMi55O1xuICAgICAgICAgICAgY29uc3QgcmVjdFcgPSBNYXRoLmFicyh4IC0geE9uQ3VydmUpO1xuICAgICAgICAgICAgY29uc3QgcmVjdEggPSBNYXRoLmFicyh5IC0geU9uQ3VydmUpO1xuICAgICAgICAgICAgY29uc3Qgc3VtSFcgPSByZWN0VyArIHJlY3RIO1xuICAgICAgICAgICAgaWYgKCFtaW5TdW1IVyB8fCBtaW5TdW1IVyA+IHN1bUhXKVxuICAgICAgICAgICAgICAgIG1pblN1bUhXID0gc3VtSFc7XG4gICAgICAgICAgICBtYXhIV1tpXSA9IE1hdGgubWF4KHJlY3RXLCByZWN0SCk7XG4gICAgICAgICAgICBhcnJYW2ldID0geE9uQ3VydmU7XG4gICAgICAgICAgICBhcnJZW2ldID0geU9uQ3VydmU7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJYLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobWF4SFdbaV0gPCBtaW5TdW1IVyEpXG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlSWR4cy5zZXRCaXQoaSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtaW5EaXN0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgICAgZm9yIChsZXQgaiA9IC0xOyAoaiA9IGNhbmRpZGF0ZUlkeHMuZmluZE5leHQoaikpICE9PSAtMTspIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3QgPSBNYXRoLmh5cG90KChhcnJYW2pdIC0geCksIChhcnJZW2pdIC0geSkpO1xuICAgICAgICAgICAgaWYgKCFtaW5EaXN0IHx8IG1pbkRpc3QgPiBkaXN0KVxuICAgICAgICAgICAgICAgIG1pbkRpc3QgPSBkaXN0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW5EaXN0ITtcbiAgICB9XG5cbiAgICBnZXRMaW5lTGVuZ3RoKHAxeDogbnVtYmVyLCBwMXk6IG51bWJlciwgcDJ4OiBudW1iZXIsIHAyeTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhwMnggLSBwMXgsIDIpICsgTWF0aC5wb3cocDJ5IC0gcDF5LCAyKSk7XG4gICAgfVxuXG4gICAgZ2V0UG9pbnRPbkRpc3RhbmNlKHAxeDogbnVtYmVyLCBwMXk6IG51bWJlciwgcDJ4OiBudW1iZXIsIHAyeTogbnVtYmVyLCBkaXN0YW5jZTogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IERHLlBvaW50IHtcbiAgICAgICAgY29uc3QgZHggPSAocDJ4IC0gcDF4KSAvIGxlbmd0aDtcbiAgICAgICAgY29uc3QgZHkgPSAocDJ5IC0gcDF5KSAvIGxlbmd0aDtcbiAgICAgICAgY29uc3QgcDN4ID0gcDJ4IC0gZGlzdGFuY2UgKiBkeDtcbiAgICAgICAgY29uc3QgcDN5ID0gcDJ5IC0gZGlzdGFuY2UgKiBkeTtcblxuICAgICAgICByZXR1cm4gbmV3IERHLlBvaW50KHAzeCwgcDN5KTtcbiAgICB9XG5cbiAgICBmaW5kQ29udHJvbFBvaW50KGlkeDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBpPzogbnVtYmVyKTogREcuUG9pbnQge1xuICAgICAgICBjb25zdCBtaWRYID0geDEgKyAoeDIgLSB4MSkgLyAyO1xuICAgICAgICBjb25zdCBtaWRZID0geTEgKyAoeTIgLSB5MSkgLyAyO1xuICAgICAgICBsZXQgZHggPSBtaWRYIC0geDE7XG4gICAgICAgIGxldCBkeSA9IG1pZFkgLSB5MTtcbiAgICAgICAgY29uc3QgZGlzdCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgICAgIGR4IC89IGRpc3Q7XG4gICAgICAgIGR5IC89IGRpc3Q7XG4gICAgICAgIGNvbnN0IHBlcnBlbmRpY3VsYXJMZW4gPSA1MCAqIE1hdGguY2VpbChpZHggLyAyKTtcbiAgICAgICAgcmV0dXJuIGlkeCAlIDIgPT09IDAgP1xuICAgICAgICAgICAgbmV3IERHLlBvaW50KG1pZFggKyAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHksIG1pZFkgLSAocGVycGVuZGljdWxhckxlbiAvIDIpICogZHgpIDpcbiAgICAgICAgICAgIG5ldyBERy5Qb2ludChtaWRYIC0gKHBlcnBlbmRpY3VsYXJMZW4gLyAyKSAqIGR5LCBtaWRZICsgKHBlcnBlbmRpY3VsYXJMZW4gLyAyKSAqIGR4KTtcbiAgICB9XG5cbiAgICBjYW52YXNBcnJvdyhwYXRoOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGFycm93RW5kWDogbnVtYmVyLCBhcnJvd0VuZFk6IG51bWJlciwgcXVhZFg6IG51bWJlciwgcXVhZFk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJvd0FuZ2xlID0gTWF0aC5hdGFuMihxdWFkWCAtIGFycm93RW5kWCwgcXVhZFkgLSBhcnJvd0VuZFkpICsgTWF0aC5QSTtcbiAgICAgICAgcGF0aC5tb3ZlVG8oYXJyb3dFbmRYIC0gKHRoaXMuYXJyb3dXaWR0aCAqIE1hdGguc2luKGFycm93QW5nbGUgLSBNYXRoLlBJIC8gMTApKSxcbiAgICAgICAgICAgIGFycm93RW5kWSAtICh0aGlzLmFycm93V2lkdGggKiBNYXRoLmNvcyhhcnJvd0FuZ2xlIC0gTWF0aC5QSSAvIDEwKSkpO1xuICAgICAgICBwYXRoLmxpbmVUbyhhcnJvd0VuZFgsIGFycm93RW5kWSk7XG4gICAgICAgIHBhdGgubGluZVRvKGFycm93RW5kWCAtICh0aGlzLmFycm93V2lkdGggKiBNYXRoLnNpbihhcnJvd0FuZ2xlICsgTWF0aC5QSSAvIDEwKSksXG4gICAgICAgICAgICBhcnJvd0VuZFkgLSAodGhpcy5hcnJvd1dpZHRoICogTWF0aC5jb3MoYXJyb3dBbmdsZSArIE1hdGguUEkgLyAxMCkpKTtcbiAgICB9XG5cbn0iXX0=
|