@plait/core 0.75.0-next.5 → 0.75.0-next.6

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.
@@ -149,11 +149,11 @@ export const isLineHitLine = (a, b, c, d) => {
149
149
  const cd = [d[0] - c[0], d[1] - c[1]];
150
150
  return crossProduct(ab, ac) * crossProduct(ab, ad) <= 0 && crossProduct(cd, ca) * crossProduct(cd, cb) <= 0;
151
151
  };
152
- export const isLineHitRectangle = (points, rectangle, isClose = true) => {
152
+ export const isLineHitRectangle = (points, rectangle) => {
153
153
  const rectanglePoints = RectangleClient.getCornerPoints(rectangle);
154
154
  const len = points.length;
155
155
  for (let i = 0; i < len; i++) {
156
- if (i === len - 1 && !isClose)
156
+ if (i === len - 1)
157
157
  continue;
158
158
  const p1 = points[i];
159
159
  const p2 = points[(i + 1) % len];
@@ -381,4 +381,4 @@ export function getCrossingPointsBetweenEllipseAndSegment(startPoint, endPoint,
381
381
  export function getPointBetween(x0, y0, x1, y1, d = 0.5) {
382
382
  return [x0 + (x1 - x0) * d, y0 + (y1 - y0) * d];
383
383
  }
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsOEJBQThCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQy9HLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xCLDJCQUEyQjtRQUMzQixLQUFLLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ1gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDWixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENBQUM7U0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENB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RUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWxCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVuQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFN0IsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNSLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxLQUFhO0lBQ2hGLCtDQUErQztJQUMvQyxnREFBZ0Q7SUFDaEQsa0hBQWtIO0lBQ2xILE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM1SSxDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVU7SUFDdkYsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNuQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELHVIQUF1SDtBQUN2SCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxJQUFxQjtJQUN4RixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFRLEVBQUUsQ0FBUSxFQUFFLENBQVEsRUFBRSxDQUFRLEVBQVcsRUFBRTtJQUM3RSxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQVMsRUFBRSxFQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3RSxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QyxPQUFPLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQWUsRUFBRSxTQUEwQixFQUFFLFVBQW1CLElBQUksRUFBRSxFQUFFO0lBQ3ZHLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxTQUFTO1FBQ3hDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsNEJBQTRCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDMUYsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE1BQWUsRUFBRSxTQUEwQixFQUFFLFVBQW1CLElBQUksRUFBRSxFQUFFO0lBQzNHLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN4QyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLDRCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxFQUFTLEVBQUUsRUFBUyxFQUFFLFNBQTBCLEVBQUUsRUFBRTtJQUM3RixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLE9BQU8sQ0FDSCxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hFLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsTUFBZSxFQUFFLEVBQUU7SUFDOUQsaUNBQWlDO0lBQ2pDLDREQUE0RDtJQUU1RCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ2QsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDakIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEIsSUFBSSxTQUFTLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hGLElBQUksU0FBUztZQUFFLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsTUFBYSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQy9GLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQ2pGLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFFakYsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFZLEVBQUUsU0FBMEIsRUFBRSxNQUFjLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQzNHLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUN4RCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDeEgsTUFBTSxhQUFhLEdBQ2YsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbEYsTUFBTSxnQkFBZ0IsR0FDbEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7UUFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDM0YsTUFBTSxjQUFjLEdBQ2hCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU07UUFDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFGLE1BQU0saUJBQWlCLEdBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLE1BQU07UUFDbEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU07UUFDbkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxNQUFNO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ25HLE1BQU0sVUFBVSxHQUFHLGFBQWEsSUFBSSxnQkFBZ0IsSUFBSSxjQUFjLElBQUksaUJBQWlCLENBQUM7SUFFNUYsT0FBTyxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFVBQVUsTUFBZTtJQUN0RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDbEIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25CLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXpDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhFLGdEQUFnRDtRQUNoRCxvQ0FBb0M7UUFDcEMsb0NBQW9DO1FBQ3BDLHlEQUF5RDtRQUN6RCx5REFBeUQ7UUFDekQseURBQXlEO1FBQ3pELHlEQUF5RDtRQUV6RCxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUVsQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDaEQsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ2hELENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxDQUFDO1FBQ0QsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDUixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLENBQUM7UUFFRCxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkgsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFakgsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QixHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQVksRUFBRSxHQUFZLEVBQUUsRUFBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTO0lBQzdFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQyxPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEtBQWE7SUFDMUUsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBVSxDQUFDO0lBQzVCLENBQUM7U0FBTSxJQUFJLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFVLENBQUM7SUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDUixNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxPQUFPLE1BQWUsQ0FBQztBQUMzQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQVM7SUFDcEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsQ0FBUztJQUM3QixPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFhLEVBQUUsYUFBcUI7SUFDOUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxTQUFTLEdBQUcsUUFBUTtJQUNwRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsd0lBQXdJO0FBQ3hJLE1BQU0sVUFBVSx5Q0FBeUMsQ0FDckQsVUFBaUIsRUFDakIsUUFBZSxFQUNmLEVBQVUsRUFDVixFQUFVLEVBQ1YsRUFBVSxFQUNWLEVBQVUsRUFDVixZQUFZLEdBQUcsSUFBSTtJQUVuQiwrREFBK0Q7SUFDL0QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNGLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRXZCLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEIsc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxHQUNELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtRQUN6RSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUM5RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVsRyxxRkFBcUY7SUFDckYsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBRTNCLDhCQUE4QjtJQUM5QixJQUFJLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXJDLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JCLHFCQUFxQjtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO1NBQU0sSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsc0JBQXNCO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPLENBQ0gsT0FBTztRQUNILGlEQUFpRDtTQUNoRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkQsb0JBQW9CO1NBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQ3BJLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLENBQUMsR0FBRyxHQUFHO0lBQ25GLE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFJlY3RhbmdsZUNsaWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdGFuZ2xlLWNsaWVudCc7XG5cbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS82ODUzOTI2LzIzMjEyMlxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudCh4OiBudW1iZXIsIHk6IG51bWJlciwgeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikge1xuICAgIGNvbnN0IEEgPSB4IC0geDE7XG4gICAgY29uc3QgQiA9IHkgLSB5MTtcbiAgICBjb25zdCBDID0geDIgLSB4MTtcbiAgICBjb25zdCBEID0geTIgLSB5MTtcblxuICAgIGNvbnN0IGRvdCA9IEEgKiBDICsgQiAqIEQ7XG4gICAgY29uc3QgbGVuU3F1YXJlID0gQyAqIEMgKyBEICogRDtcbiAgICBsZXQgcGFyYW0gPSAtMTtcbiAgICBpZiAobGVuU3F1YXJlICE9PSAwKSB7XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgMCBsZW5ndGggbGluZVxuICAgICAgICBwYXJhbSA9IGRvdCAvIGxlblNxdWFyZTtcbiAgICB9XG5cbiAgICBsZXQgeHgsIHl5O1xuICAgIGlmIChwYXJhbSA8IDApIHtcbiAgICAgICAgeHggPSB4MTtcbiAgICAgICAgeXkgPSB5MTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtID4gMSkge1xuICAgICAgICB4eCA9IHgyO1xuICAgICAgICB5eSA9IHkyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHh4ID0geDEgKyBwYXJhbSAqIEM7XG4gICAgICAgIHl5ID0geTEgKyBwYXJhbSAqIEQ7XG4gICAgfVxuXG4gICAgY29uc3QgZHggPSB4IC0geHg7XG4gICAgY29uc3QgZHkgPSB5IC0geXk7XG4gICAgcmV0dXJuIE1hdGguaHlwb3QoZHgsIGR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnQ6IFBvaW50LCBsaW5lUG9pbnRzOiBbUG9pbnQsIFBvaW50XSkge1xuICAgIGNvbnN0IHggPSBwb2ludFswXSxcbiAgICAgICAgeSA9IHBvaW50WzFdLFxuICAgICAgICB4MSA9IGxpbmVQb2ludHNbMF1bMF0sXG4gICAgICAgIHkxID0gbGluZVBvaW50c1swXVsxXSxcbiAgICAgICAgeDIgPSBsaW5lUG9pbnRzWzFdWzBdLFxuICAgICAgICB5MiA9IGxpbmVQb2ludHNbMV1bMV07XG4gICAgY29uc3QgQSA9IHggLSB4MTtcbiAgICBjb25zdCBCID0geSAtIHkxO1xuICAgIGNvbnN0IEMgPSB4MiAtIHgxO1xuICAgIGNvbnN0IEQgPSB5MiAtIHkxO1xuXG4gICAgY29uc3QgZG90ID0gQSAqIEMgKyBCICogRDtcbiAgICBjb25zdCBsZW5TcXVhcmUgPSBDICogQyArIEQgKiBEO1xuICAgIGxldCBwYXJhbSA9IC0xO1xuICAgIGlmIChsZW5TcXVhcmUgIT09IDApIHtcbiAgICAgICAgLy8gaW4gY2FzZSBvZiAwIGxlbmd0aCBsaW5lXG4gICAgICAgIHBhcmFtID0gZG90IC8gbGVuU3F1YXJlO1xuICAgIH1cblxuICAgIGxldCB4eCwgeXk7XG4gICAgaWYgKHBhcmFtIDwgMCkge1xuICAgICAgICB4eCA9IHgxO1xuICAgICAgICB5eSA9IHkxO1xuICAgIH0gZWxzZSBpZiAocGFyYW0gPiAxKSB7XG4gICAgICAgIHh4ID0geDI7XG4gICAgICAgIHl5ID0geTI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgeHggPSB4MSArIHBhcmFtICogQztcbiAgICAgICAgeXkgPSB5MSArIHBhcmFtICogRDtcbiAgICB9XG5cbiAgICByZXR1cm4gW3h4LCB5eV0gYXMgUG9pbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKHBvaW50czogUG9pbnRbXSwgcG9pbnQ6IFBvaW50KSB7XG4gICAgY29uc3QgbGVuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBsZXQgZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbiAtIDE7IGkrKykge1xuICAgICAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBwMiA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludFswXSwgcG9pbnRbMV0sIHBbMF0sIHBbMV0sIHAyWzBdLCBwMlsxXSk7XG4gICAgICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPCBkaXN0YW5jZSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSBjdXJyZW50RGlzdGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpc3RhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnQ6IFBvaW50LCBwb2ludHM6IFBvaW50W10sIGlzQ2xvc2U6IEJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3QgbGVuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBsZXQgZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICBsZXQgcmVzdWx0OiBQb2ludCA9IHBvaW50O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgICAgICBpZiAoaSA9PT0gbGVuIC0gMSAmJiAhaXNDbG9zZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IHAyID0gaSA9PT0gbGVuIC0gMSA/IHBvaW50c1swXSA6IHBvaW50c1tpICsgMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludFswXSwgcG9pbnRbMV0sIHBbMF0sIHBbMV0sIHAyWzBdLCBwMlsxXSk7XG4gICAgICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPCBkaXN0YW5jZSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSBjdXJyZW50RGlzdGFuY2U7XG4gICAgICAgICAgICByZXN1bHQgPSBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50LCBbcCwgcDJdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kRWxsaXBzZShwb2ludDogUG9pbnQsIGNlbnRlcjogUG9pbnQsIHJ4OiBudW1iZXIsIHJ5OiBudW1iZXIsIHJvdGF0aW9uOiBudW1iZXIgPSAwKTogUG9pbnQge1xuICAgIGNvbnN0IHJlY3RhbmdsZUNsaWVudCA9IHtcbiAgICAgICAgeDogY2VudGVyWzBdIC0gcngsXG4gICAgICAgIHk6IGNlbnRlclsxXSAtIHJ5LFxuICAgICAgICBoZWlnaHQ6IHJ5ICogMixcbiAgICAgICAgd2lkdGg6IHJ4ICogMlxuICAgIH07XG4gICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ2MDA3NTQwLzIzMjEyMlxuICAgIGNvbnN0IHB4ID0gTWF0aC5hYnMocG9pbnRbMF0gLSByZWN0YW5nbGVDbGllbnQueCAtIHJlY3RhbmdsZUNsaWVudC53aWR0aCAvIDIpO1xuICAgIGNvbnN0IHB5ID0gTWF0aC5hYnMocG9pbnRbMV0gLSByZWN0YW5nbGVDbGllbnQueSAtIHJlY3RhbmdsZUNsaWVudC5oZWlnaHQgLyAyKTtcblxuICAgIGxldCB0eCA9IDAuNzA3O1xuICAgIGxldCB0eSA9IDAuNzA3O1xuXG4gICAgY29uc3QgYSA9IE1hdGguYWJzKHJlY3RhbmdsZUNsaWVudC53aWR0aCkgLyAyO1xuICAgIGNvbnN0IGIgPSBNYXRoLmFicyhyZWN0YW5nbGVDbGllbnQuaGVpZ2h0KSAvIDI7XG5cbiAgICBbMCwgMSwgMiwgM10uZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICBjb25zdCB4eCA9IGEgKiB0eDtcbiAgICAgICAgY29uc3QgeXkgPSBiICogdHk7XG5cbiAgICAgICAgY29uc3QgZXggPSAoKGEgKiBhIC0gYiAqIGIpICogdHggKiogMykgLyBhO1xuICAgICAgICBjb25zdCBleSA9ICgoYiAqIGIgLSBhICogYSkgKiB0eSAqKiAzKSAvIGI7XG5cbiAgICAgICAgY29uc3QgcnggPSB4eCAtIGV4O1xuICAgICAgICBjb25zdCByeSA9IHl5IC0gZXk7XG5cbiAgICAgICAgY29uc3QgcXggPSBweCAtIGV4O1xuICAgICAgICBjb25zdCBxeSA9IHB5IC0gZXk7XG5cbiAgICAgICAgY29uc3QgciA9IE1hdGguaHlwb3QocnksIHJ4KTtcbiAgICAgICAgY29uc3QgcSA9IE1hdGguaHlwb3QocXksIHF4KTtcblxuICAgICAgICB0eCA9IE1hdGgubWluKDEsIE1hdGgubWF4KDAsICgocXggKiByKSAvIHEgKyBleCkgLyBhKSk7XG4gICAgICAgIHR5ID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgKChxeSAqIHIpIC8gcSArIGV5KSAvIGIpKTtcbiAgICAgICAgY29uc3QgdCA9IE1hdGguaHlwb3QodHksIHR4KTtcbiAgICAgICAgdHggLz0gdDtcbiAgICAgICAgdHkgLz0gdDtcbiAgICB9KTtcbiAgICBjb25zdCBzaWduWCA9IHBvaW50WzBdID4gY2VudGVyWzBdID8gMSA6IC0xO1xuICAgIGNvbnN0IHNpZ25ZID0gcG9pbnRbMV0gPiBjZW50ZXJbMV0gPyAxIDogLTE7XG5cbiAgICByZXR1cm4gW2NlbnRlclswXSArIGEgKiB0eCAqIHNpZ25YLCBjZW50ZXJbMV0gKyBiICogdHkgKiBzaWduWV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGUoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgYW5nbGU6IG51bWJlcikge1xuICAgIC8vIPCdkY7igLLwnZGlPSjwnZGO8J2RpeKIkvCdkZDwnZGlKWNvc/CdnIPiiJIo8J2RjvCdkabiiJLwnZGQ8J2RpilzaW7wnZyDK/CdkZDwnZGlXG4gICAgLy8g8J2RjuKAsvCdkaY9KPCdkY7wnZGl4oiS8J2RkPCdkaUpc2lu8J2cgyso8J2RjvCdkabiiJLwnZGQ8J2Rpiljb3PwnZyDK/CdkZDwnZGmLlxuICAgIC8vIGh0dHBzOi8vbWF0aC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjIwNDUyMC9ob3ctZG8taS1yb3RhdGUtYS1saW5lLXNlZ21lbnQtaW4tYS1zcGVjaWZpYy1wb2ludC1vbi10aGUtbGluZVxuICAgIHJldHVybiBbKHgxIC0geDIpICogTWF0aC5jb3MoYW5nbGUpIC0gKHkxIC0geTIpICogTWF0aC5zaW4oYW5nbGUpICsgeDIsICh4MSAtIHgyKSAqIE1hdGguc2luKGFuZ2xlKSArICh5MSAtIHkyKSAqIE1hdGguY29zKGFuZ2xlKSArIHkyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcikge1xuICAgIGNvbnN0IGR4ID0geDEgLSB4MjtcbiAgICBjb25zdCBkeSA9IHkxIC0geTI7XG4gICAgcmV0dXJuIE1hdGguaHlwb3QoZHgsIGR5KTtcbn1cblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTI1NDgzOC9jYWxjdWxhdGluZy1kaXN0YW5jZS1iZXR3ZWVuLWEtcG9pbnQtYW5kLWEtcmVjdGFuZ3VsYXItYm94LW5lYXJlc3QtcG9pbnRcbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFJlY3RhbmdsZSh4OiBudW1iZXIsIHk6IG51bWJlciwgcmVjdDogUmVjdGFuZ2xlQ2xpZW50KSB7XG4gICAgdmFyIGR4ID0gTWF0aC5tYXgocmVjdC54IC0geCwgMCwgeCAtIChyZWN0LnggKyByZWN0LndpZHRoKSk7XG4gICAgdmFyIGR5ID0gTWF0aC5tYXgocmVjdC55IC0geSwgMCwgeSAtIChyZWN0LnkgKyByZWN0LmhlaWdodCkpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xufVxuXG5leHBvcnQgY29uc3QgaXNMaW5lSGl0TGluZSA9IChhOiBQb2ludCwgYjogUG9pbnQsIGM6IFBvaW50LCBkOiBQb2ludCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGNyb3NzUHJvZHVjdCA9ICh2MTogUG9pbnQsIHYyOiBQb2ludCkgPT4gdjFbMF0gKiB2MlsxXSAtIHYxWzFdICogdjJbMF07XG5cbiAgICBjb25zdCBhYjogUG9pbnQgPSBbYlswXSAtIGFbMF0sIGJbMV0gLSBhWzFdXTtcbiAgICBjb25zdCBhYzogUG9pbnQgPSBbY1swXSAtIGFbMF0sIGNbMV0gLSBhWzFdXTtcbiAgICBjb25zdCBhZDogUG9pbnQgPSBbZFswXSAtIGFbMF0sIGRbMV0gLSBhWzFdXTtcblxuICAgIGNvbnN0IGNhOiBQb2ludCA9IFthWzBdIC0gY1swXSwgYVsxXSAtIGNbMV1dO1xuICAgIGNvbnN0IGNiOiBQb2ludCA9IFtiWzBdIC0gY1swXSwgYlsxXSAtIGNbMV1dO1xuICAgIGNvbnN0IGNkOiBQb2ludCA9IFtkWzBdIC0gY1swXSwgZFsxXSAtIGNbMV1dO1xuXG4gICAgcmV0dXJuIGNyb3NzUHJvZHVjdChhYiwgYWMpICogY3Jvc3NQcm9kdWN0KGFiLCBhZCkgPD0gMCAmJiBjcm9zc1Byb2R1Y3QoY2QsIGNhKSAqIGNyb3NzUHJvZHVjdChjZCwgY2IpIDw9IDA7XG59O1xuXG5leHBvcnQgY29uc3QgaXNMaW5lSGl0UmVjdGFuZ2xlID0gKHBvaW50czogUG9pbnRbXSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGlzQ2xvc2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIGNvbnN0IGxlbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBpZiAoaSA9PT0gbGVuIC0gMSAmJiAhaXNDbG9zZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IHAxID0gcG9pbnRzW2ldO1xuICAgICAgICBjb25zdCBwMiA9IHBvaW50c1soaSArIDEpICUgbGVuXTtcbiAgICAgICAgY29uc3QgaXNIaXQgPSBpc1NpbmdsZUxpbmVIaXRSZWN0YW5nbGVFZGdlKHAxLCBwMiwgcmVjdGFuZ2xlKTtcbiAgICAgICAgaWYgKGlzSGl0IHx8IGlzUG9pbnRJblBvbHlnb24ocDEsIHJlY3RhbmdsZVBvaW50cykgfHwgaXNQb2ludEluUG9seWdvbihwMiwgcmVjdGFuZ2xlUG9pbnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTGluZUhpdFJlY3RhbmdsZUVkZ2UgPSAocG9pbnRzOiBQb2ludFtdLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgaXNDbG9zZTogYm9vbGVhbiA9IHRydWUpID0+IHtcbiAgICBjb25zdCBsZW4gPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPT09IGxlbiAtIDEgJiYgIWlzQ2xvc2UpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBwMSA9IHBvaW50c1tpXTtcbiAgICAgICAgY29uc3QgcDIgPSBwb2ludHNbKGkgKyAxKSAlIGxlbl07XG4gICAgICAgIGNvbnN0IGlzSGl0ID0gaXNTaW5nbGVMaW5lSGl0UmVjdGFuZ2xlRWRnZShwMSwgcDIsIHJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChpc0hpdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2luZ2xlTGluZUhpdFJlY3RhbmdsZUVkZ2UgPSAocDE6IFBvaW50LCBwMjogUG9pbnQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50KSA9PiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgIHJldHVybiAoXG4gICAgICAgIGlzTGluZUhpdExpbmUocDEsIHAyLCByZWN0YW5nbGVQb2ludHNbMF0sIHJlY3RhbmdsZVBvaW50c1sxXSkgfHxcbiAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1sxXSwgcmVjdGFuZ2xlUG9pbnRzWzJdKSB8fFxuICAgICAgICBpc0xpbmVIaXRMaW5lKHAxLCBwMiwgcmVjdGFuZ2xlUG9pbnRzWzJdLCByZWN0YW5nbGVQb2ludHNbM10pIHx8XG4gICAgICAgIGlzTGluZUhpdExpbmUocDEsIHAyLCByZWN0YW5nbGVQb2ludHNbM10sIHJlY3RhbmdsZVBvaW50c1swXSlcbiAgICApO1xufTtcblxuLy9odHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjUyMTk4Mi9jaGVjay1pZi1wb2ludC1pcy1pbnNpZGUtYS1wb2x5Z29uXG5leHBvcnQgY29uc3QgaXNQb2ludEluUG9seWdvbiA9IChwb2ludDogUG9pbnQsIHBvaW50czogUG9pbnRbXSkgPT4ge1xuICAgIC8vIHJheS1jYXN0aW5nIGFsZ29yaXRobSBiYXNlZCBvblxuICAgIC8vIGh0dHBzOi8vd3JmLmVjc2UucnBpLmVkdS9SZXNlYXJjaC9TaG9ydF9Ob3Rlcy9wbnBvbHkuaHRtbFxuXG4gICAgY29uc3QgeCA9IHBvaW50WzBdLFxuICAgICAgICB5ID0gcG9pbnRbMV07XG5cbiAgICBsZXQgaW5zaWRlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSBwb2ludHMubGVuZ3RoIC0gMTsgaSA8IHBvaW50cy5sZW5ndGg7IGogPSBpKyspIHtcbiAgICAgICAgbGV0IHhpID0gcG9pbnRzW2ldWzBdLFxuICAgICAgICAgICAgeWkgPSBwb2ludHNbaV1bMV07XG4gICAgICAgIGxldCB4aiA9IHBvaW50c1tqXVswXSxcbiAgICAgICAgICAgIHlqID0gcG9pbnRzW2pdWzFdO1xuXG4gICAgICAgIGxldCBpbnRlcnNlY3QgPSB5aSA+IHkgIT0geWogPiB5ICYmIHggPCAoKHhqIC0geGkpICogKHkgLSB5aSkpIC8gKHlqIC0geWkpICsgeGk7XG4gICAgICAgIGlmIChpbnRlcnNlY3QpIGluc2lkZSA9ICFpbnNpZGU7XG4gICAgfVxuICAgIHJldHVybiBpbnNpZGU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQb2ludEluRWxsaXBzZSA9IChwb2ludDogUG9pbnQsIGNlbnRlcjogUG9pbnQsIHJ4OiBudW1iZXIsIHJ5OiBudW1iZXIsIGFuZ2xlID0gMCkgPT4ge1xuICAgIGNvbnN0IGNvc0FuZ2xlID0gTWF0aC5jb3MoYW5nbGUpO1xuICAgIGNvbnN0IHNpbkFuZ2xlID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgIGNvbnN0IHgxID0gKHBvaW50WzBdIC0gY2VudGVyWzBdKSAqIGNvc0FuZ2xlICsgKHBvaW50WzFdIC0gY2VudGVyWzFdKSAqIHNpbkFuZ2xlO1xuICAgIGNvbnN0IHkxID0gKHBvaW50WzFdIC0gY2VudGVyWzFdKSAqIGNvc0FuZ2xlIC0gKHBvaW50WzBdIC0gY2VudGVyWzBdKSAqIHNpbkFuZ2xlO1xuXG4gICAgcmV0dXJuICh4MSAqIHgxKSAvIChyeCAqIHJ4KSArICh5MSAqIHkxKSAvIChyeSAqIHJ5KSA8PSAxO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUG9pbnRJblJvdW5kUmVjdGFuZ2xlID0gKHBvaW50OiBQb2ludCwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIHJhZGl1czogbnVtYmVyLCBhbmdsZSA9IDApID0+IHtcbiAgICBjb25zdCB7IHg6IHJlY3RYLCB5OiByZWN0WSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdGFuZ2xlO1xuICAgIGNvbnN0IGlzSW5SZWN0YW5nbGUgPSBwb2ludFswXSA+PSByZWN0WCAmJiBwb2ludFswXSA8PSByZWN0WCArIHdpZHRoICYmIHBvaW50WzFdID49IHJlY3RZICYmIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0O1xuICAgIGNvbnN0IGhhbmRsZUxlZnRUb3AgPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIHJhZGl1cyAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBoYW5kbGVMZWZ0Qm90dG9tID1cbiAgICAgICAgcG9pbnRbMF0gPj0gcmVjdFggJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMV0gPj0gcmVjdFkgKyBoZWlnaHQgJiZcbiAgICAgICAgcG9pbnRbMV0gPD0gcmVjdFkgKyBoZWlnaHQgLSByYWRpdXMgJiZcbiAgICAgICAgTWF0aC5oeXBvdChwb2ludFswXSAtIChyZWN0WCArIHJhZGl1cyksIHBvaW50WzFdIC0gKHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzKSkgPiByYWRpdXM7XG4gICAgY29uc3QgaGFuZGxlUmlnaHRUb3AgPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCArIHdpZHRoIC0gcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiZcbiAgICAgICAgcG9pbnRbMV0gPj0gcmVjdFkgJiZcbiAgICAgICAgcG9pbnRbMV0gPD0gcmVjdFkgKyByYWRpdXMgJiZcbiAgICAgICAgTWF0aC5oeXBvdChwb2ludFswXSAtIChyZWN0WCArIHdpZHRoIC0gcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBoYW5kbGVSaWdodEJvdHRvbSA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICsgd2lkdGggLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJlxuICAgICAgICBwb2ludFsxXSA+PSByZWN0WSArIGhlaWdodCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodCAmJlxuICAgICAgICBNYXRoLmh5cG90KHBvaW50WzBdIC0gKHJlY3RYICsgd2lkdGggLSByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIGhlaWdodCAtIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGlzSW5Db3JuZXIgPSBoYW5kbGVMZWZ0VG9wIHx8IGhhbmRsZUxlZnRCb3R0b20gfHwgaGFuZGxlUmlnaHRUb3AgfHwgaGFuZGxlUmlnaHRCb3R0b207XG5cbiAgICByZXR1cm4gaXNJblJlY3RhbmdsZSAmJiAhaXNJbkNvcm5lcjtcbn07XG5cbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL25pY2hvbGFzd21pbi9jMjY2MWViMTFjYWQ1NjcxZDgxNlxuZXhwb3J0IGNvbnN0IGNhdG11bGxSb21GaXR0aW5nID0gZnVuY3Rpb24gKHBvaW50czogUG9pbnRbXSkge1xuICAgIGNvbnN0IGFscGhhID0gMC41O1xuICAgIGxldCBwMCwgcDEsIHAyLCBwMywgYnAxLCBicDIsIGQxLCBkMiwgZDMsIEEsIEIsIE4sIE07XG4gICAgdmFyIGQzcG93QSwgZDJwb3dBLCBkM3BvdzJBLCBkMnBvdzJBLCBkMXBvdzJBLCBkMXBvd0E7XG4gICAgY29uc3QgcmVzdWx0OiBQb2ludFtdID0gW107XG4gICAgcmVzdWx0LnB1c2goW01hdGgucm91bmQocG9pbnRzWzBdWzBdKSwgTWF0aC5yb3VuZChwb2ludHNbMF1bMV0pXSk7XG4gICAgdmFyIGxlbmd0aCA9IHBvaW50cy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgcDAgPSBpID09IDAgPyBwb2ludHNbMF0gOiBwb2ludHNbaSAtIDFdO1xuICAgICAgICBwMSA9IHBvaW50c1tpXTtcbiAgICAgICAgcDIgPSBwb2ludHNbaSArIDFdO1xuICAgICAgICBwMyA9IGkgKyAyIDwgbGVuZ3RoID8gcG9pbnRzW2kgKyAyXSA6IHAyO1xuXG4gICAgICAgIGQxID0gTWF0aC5zcXJ0KE1hdGgucG93KHAwWzBdIC0gcDFbMF0sIDIpICsgTWF0aC5wb3cocDBbMV0gLSBwMVsxXSwgMikpO1xuICAgICAgICBkMiA9IE1hdGguc3FydChNYXRoLnBvdyhwMVswXSAtIHAyWzBdLCAyKSArIE1hdGgucG93KHAxWzFdIC0gcDJbMV0sIDIpKTtcbiAgICAgICAgZDMgPSBNYXRoLnNxcnQoTWF0aC5wb3cocDJbMF0gLSBwM1swXSwgMikgKyBNYXRoLnBvdyhwMlsxXSAtIHAzWzFdLCAyKSk7XG5cbiAgICAgICAgLy8gQ2F0bXVsbC1Sb20gdG8gQ3ViaWMgQmV6aWVyIGNvbnZlcnNpb24gbWF0cml4XG4gICAgICAgIC8vIEEgPSAyZDFeMmEgKyAzZDFeYSAqIGQyXmEgKyBkM14yYVxuICAgICAgICAvLyBCID0gMmQzXjJhICsgM2QzXmEgKiBkMl5hICsgZDJeMmFcbiAgICAgICAgLy8gWyAgIDAgICAgICAgICAgICAgMSAgICAgICAgICAgIDAgICAgICAgICAgMCAgICAgICAgICBdXG4gICAgICAgIC8vIFsgICAtZDJeMmEgL04gICAgIEEvTiAgICAgICAgICBkMV4yYSAvTiAgIDAgICAgICAgICAgXVxuICAgICAgICAvLyBbICAgMCAgICAgICAgICAgICBkM14yYSAvTSAgICAgQi9NICAgICAgICAtZDJeMmEgL00gIF1cbiAgICAgICAgLy8gWyAgIDAgICAgICAgICAgICAgMCAgICAgICAgICAgIDEgICAgICAgICAgMCAgICAgICAgICBdXG5cbiAgICAgICAgZDNwb3dBID0gTWF0aC5wb3coZDMsIGFscGhhKTtcbiAgICAgICAgZDNwb3cyQSA9IE1hdGgucG93KGQzLCAyICogYWxwaGEpO1xuICAgICAgICBkMnBvd0EgPSBNYXRoLnBvdyhkMiwgYWxwaGEpO1xuICAgICAgICBkMnBvdzJBID0gTWF0aC5wb3coZDIsIDIgKiBhbHBoYSk7XG4gICAgICAgIGQxcG93QSA9IE1hdGgucG93KGQxLCBhbHBoYSk7XG4gICAgICAgIGQxcG93MkEgPSBNYXRoLnBvdyhkMSwgMiAqIGFscGhhKTtcblxuICAgICAgICBBID0gMiAqIGQxcG93MkEgKyAzICogZDFwb3dBICogZDJwb3dBICsgZDJwb3cyQTtcbiAgICAgICAgQiA9IDIgKiBkM3BvdzJBICsgMyAqIGQzcG93QSAqIGQycG93QSArIGQycG93MkE7XG4gICAgICAgIE4gPSAzICogZDFwb3dBICogKGQxcG93QSArIGQycG93QSk7XG4gICAgICAgIGlmIChOID4gMCkge1xuICAgICAgICAgICAgTiA9IDEgLyBOO1xuICAgICAgICB9XG4gICAgICAgIE0gPSAzICogZDNwb3dBICogKGQzcG93QSArIGQycG93QSk7XG4gICAgICAgIGlmIChNID4gMCkge1xuICAgICAgICAgICAgTSA9IDEgLyBNO1xuICAgICAgICB9XG5cbiAgICAgICAgYnAxID0gWygtZDJwb3cyQSAqIHAwWzBdICsgQSAqIHAxWzBdICsgZDFwb3cyQSAqIHAyWzBdKSAqIE4sICgtZDJwb3cyQSAqIHAwWzFdICsgQSAqIHAxWzFdICsgZDFwb3cyQSAqIHAyWzFdKSAqIE5dO1xuICAgICAgICBicDIgPSBbKGQzcG93MkEgKiBwMVswXSArIEIgKiBwMlswXSAtIGQycG93MkEgKiBwM1swXSkgKiBNLCAoZDNwb3cyQSAqIHAxWzFdICsgQiAqIHAyWzFdIC0gZDJwb3cyQSAqIHAzWzFdKSAqIE1dO1xuXG4gICAgICAgIGlmIChicDFbMF0gPT0gMCAmJiBicDFbMV0gPT0gMCkge1xuICAgICAgICAgICAgYnAxID0gcDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJwMlswXSA9PSAwICYmIGJwMlsxXSA9PSAwKSB7XG4gICAgICAgICAgICBicDIgPSBwMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5wdXNoKGJwMSBhcyBQb2ludCwgYnAyIGFzIFBvaW50LCBwMiBhcyBQb2ludCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogdGhlIHJlc3VsdCBvZiBzbG9wZSBpcyBiYXNlZCBvbiBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW1cbiAqIHgsIHkgYXJlIGJhc2VkIG9uIHRoZSBwb3NpdGlvbiBpbiB0aGUgQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGxpcHNlVGFuZ2VudFNsb3BlKHg6IG51bWJlciwgeTogbnVtYmVyLCBhOiBudW1iZXIsIGI6IG51bWJlcikge1xuICAgIGlmIChNYXRoLmFicyh5KSA9PT0gMCkge1xuICAgICAgICByZXR1cm4geCA+IDAgPyAtSW5maW5pdHkgOiBJbmZpbml0eTtcbiAgICB9XG4gICAgY29uc3QgayA9ICgtYiAqIGIgKiB4KSAvIChhICogYSAqIHkpO1xuICAgIHJldHVybiBrO1xufVxuXG4vKipcbiAqIHgsIHkgYXJlIGJhc2VkIG9uIHRoZSBwb3NpdGlvbiBpbiB0aGUgQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZWN0b3JGcm9tUG9pbnRBbmRTbG9wZSh4OiBudW1iZXIsIHk6IG51bWJlciwgc2xvcGU6IG51bWJlcikge1xuICAgIGlmIChzbG9wZSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgcmV0dXJuIFswLCAtMV0gYXMgUG9pbnQ7XG4gICAgfSBlbHNlIGlmIChzbG9wZSA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiBbMCwgMV0gYXMgUG9pbnQ7XG4gICAgfVxuICAgIGxldCB2ZWN0b3IgPSBbMSwgLXNsb3BlXSBhcyBQb2ludDtcbiAgICBpZiAoeSA8IDApIHtcbiAgICAgICAgdmVjdG9yID0gWy12ZWN0b3JbMF0sIC12ZWN0b3JbMV1dO1xuICAgIH1cbiAgICByZXR1cm4gdmVjdG9yIGFzIFBvaW50O1xufVxuXG4vKipcbiAqIFRoZSBET00gbGlrZXMgdmFsdWVzIHRvIGJlIGZpeGVkIHRvIDMgZGVjaW1hbCBwbGFjZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRG9tUHJlY2lzaW9uKHY6IG51bWJlcikge1xuICAgIHJldHVybiArdi50b0ZpeGVkKDQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9GaXhlZCh2OiBudW1iZXIpIHtcbiAgICByZXR1cm4gK3YudG9GaXhlZCgyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlaWxUb0RlY2ltYWwodmFsdWU6IG51bWJlciwgZGVjaW1hbFBsYWNlczogbnVtYmVyKSB7XG4gICAgY29uc3QgZmFjdG9yID0gTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpO1xuICAgIHJldHVybiBNYXRoLmNlaWwodmFsdWUgKiBmYWN0b3IpIC8gZmFjdG9yO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdHdvIG51bWJlcnMgbnVtYmVycyBhIGFuZCBiIGFyZSBhcHByb3hpbWF0ZWx5IGVxdWFsLlxuICpcbiAqIEBwYXJhbSBhIC0gVGhlIGZpcnN0IHBvaW50LlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHBvaW50LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwcm94aW1hdGVseShhOiBudW1iZXIsIGI6IG51bWJlciwgcHJlY2lzaW9uID0gMC4wMDAwMDEpIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoYSAtIGIpIDw9IHByZWNpc2lvbjtcbn1cblxuLy8gaHR0cHM6Ly9tZWRpdW0uY29tL0BzdGV2ZXJ1aXovZmluZC10aGUtcG9pbnRzLXdoZXJlLWEtbGluZS1zZWdtZW50LWludGVyY2VwdHMtYW4tYW5nbGVkLWVsbGlwc2UtaW4tamF2YXNjcmlwdC10eXBlc2NyaXB0LWU0NTE1MjRiZWVjZVxuZXhwb3J0IGZ1bmN0aW9uIGdldENyb3NzaW5nUG9pbnRzQmV0d2VlbkVsbGlwc2VBbmRTZWdtZW50KFxuICAgIHN0YXJ0UG9pbnQ6IFBvaW50LFxuICAgIGVuZFBvaW50OiBQb2ludCxcbiAgICBjeDogbnVtYmVyLFxuICAgIGN5OiBudW1iZXIsXG4gICAgcng6IG51bWJlcixcbiAgICByeTogbnVtYmVyLFxuICAgIHNlZ21lbnRfb25seSA9IHRydWVcbikge1xuICAgIC8vIElmIHRoZSBlbGxpcHNlIG9yIGxpbmUgc2VnbWVudCBhcmUgZW1wdHksIHJldHVybiBubyB0VmFsdWVzLlxuICAgIGlmIChyeCA9PT0gMCB8fCByeSA9PT0gMCB8fCAoc3RhcnRQb2ludFswXSA9PT0gZW5kUG9pbnRbMF0gJiYgc3RhcnRQb2ludFsxXSA9PT0gZW5kUG9pbnRbMV0pKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByeCA9IHJ4IDwgMCA/IHJ4IDogLXJ4O1xuICAgIHJ5ID0gcnkgPCAwID8gcnkgOiAtcnk7XG5cbiAgICBzdGFydFBvaW50WzBdIC09IGN4O1xuICAgIHN0YXJ0UG9pbnRbMV0gLT0gY3k7XG4gICAgZW5kUG9pbnRbMF0gLT0gY3g7XG4gICAgZW5kUG9pbnRbMV0gLT0gY3k7XG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIHF1YWRyYXRpYyBwYXJhbWV0ZXJzLlxuICAgIHZhciBBID1cbiAgICAgICAgKChlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0pICogKGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXSkpIC8gcnggLyByeCArXG4gICAgICAgICgoZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdKSAqIChlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV0pKSAvIHJ5IC8gcnk7XG4gICAgdmFyIEIgPSAoMiAqIHN0YXJ0UG9pbnRbMF0gKiAoZW5kUG9pbnRbMF0gLSBzdGFydFBvaW50WzBdKSkgLyByeCAvIHJ4ICsgKDIgKiBzdGFydFBvaW50WzFdICogKGVuZFBvaW50WzFdIC0gc3RhcnRQb2ludFsxXSkpIC8gcnkgLyByeTtcbiAgICB2YXIgQyA9IChzdGFydFBvaW50WzBdICogc3RhcnRQb2ludFswXSkgLyByeCAvIHJ4ICsgKHN0YXJ0UG9pbnRbMV0gKiBzdGFydFBvaW50WzFdKSAvIHJ5IC8gcnkgLSAxO1xuXG4gICAgLy8gTWFrZSBhIGxpc3Qgb2YgdCB2YWx1ZXMgKG5vcm1hbGl6ZWQgcG9pbnRzIG9uIHRoZSBsaW5lIHdoZXJlIGludGVyc2VjdGlvbnMgb2NjdXIpLlxuICAgIHZhciB0VmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBkaXNjcmltaW5hbnQuXG4gICAgdmFyIGRpc2NyaW1pbmFudCA9IEIgKiBCIC0gNCAqIEEgKiBDO1xuXG4gICAgaWYgKGRpc2NyaW1pbmFudCA9PT0gMCkge1xuICAgICAgICAvLyBPbmUgcmVhbCBzb2x1dGlvbi5cbiAgICAgICAgdFZhbHVlcy5wdXNoKC1CIC8gMiAvIEEpO1xuICAgIH0gZWxzZSBpZiAoZGlzY3JpbWluYW50ID4gMCkge1xuICAgICAgICAvLyBUd28gcmVhbCBzb2x1dGlvbnMuXG4gICAgICAgIHRWYWx1ZXMucHVzaCgoLUIgKyBNYXRoLnNxcnQoZGlzY3JpbWluYW50KSkgLyAyIC8gQSk7XG4gICAgICAgIHRWYWx1ZXMucHVzaCgoLUIgLSBNYXRoLnNxcnQoZGlzY3JpbWluYW50KSkgLyAyIC8gQSk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAgIHRWYWx1ZXNcbiAgICAgICAgICAgIC8vIEZpbHRlciB0byBvbmx5IHBvaW50cyB0aGF0IGFyZSBvbiB0aGUgc2VnbWVudC5cbiAgICAgICAgICAgIC5maWx0ZXIoKHQpID0+ICFzZWdtZW50X29ubHkgfHwgKHQgPj0gMCAmJiB0IDw9IDEpKVxuICAgICAgICAgICAgLy8gU29sdmUgZm9yIHBvaW50cy5cbiAgICAgICAgICAgIC5tYXAoKHQpID0+IFtzdGFydFBvaW50WzBdICsgKGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXSkgKiB0ICsgY3gsIHN0YXJ0UG9pbnRbMV0gKyAoZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdKSAqIHQgKyBjeV0pXG4gICAgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSBwb2ludCBiZXR3ZWVuIHR3byBwb2ludHMuXG4gKiBAcGFyYW0geDAgVGhlIHgtYXhpcyBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAqIEBwYXJhbSB5MCBUaGUgeS1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IHBvaW50LlxuICogQHBhcmFtIHgxIFRoZSB4LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgc2Vjb25kIHBvaW50LlxuICogQHBhcmFtIHkxIFRoZSB5LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgc2Vjb25kIHBvaW50LlxuICogQHBhcmFtIGQgTm9ybWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9pbnRCZXR3ZWVuKHgwOiBudW1iZXIsIHkwOiBudW1iZXIsIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGQgPSAwLjUpIHtcbiAgICByZXR1cm4gW3gwICsgKHgxIC0geDApICogZCwgeTAgKyAoeTEgLSB5MCkgKiBkXTtcbn1cbiJdfQ==
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3V0aWxzL21hdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsOEJBQThCLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO0lBQy9HLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNmLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xCLDJCQUEyQjtRQUMzQixLQUFLLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ1gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDWixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENBQUM7U0FBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuQixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNaLENB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RUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWxCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVuQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFN0IsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FB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Q0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3RSxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QyxNQUFNLEVBQUUsR0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxHQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLEdBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QyxPQUFPLFlBQVksQ0FB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LEVBQVUsRUFBRSxFQUFVLEVBQUUsQ0FBQyxHQUFHLEdBQUc7SUFDbkYsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzY4NTM5MjYvMjMyMTIyXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHg6IG51bWJlciwgeTogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgY29uc3QgQSA9IHggLSB4MTtcbiAgICBjb25zdCBCID0geSAtIHkxO1xuICAgIGNvbnN0IEMgPSB4MiAtIHgxO1xuICAgIGNvbnN0IEQgPSB5MiAtIHkxO1xuXG4gICAgY29uc3QgZG90ID0gQSAqIEMgKyBCICogRDtcbiAgICBjb25zdCBsZW5TcXVhcmUgPSBDICogQyArIEQgKiBEO1xuICAgIGxldCBwYXJhbSA9IC0xO1xuICAgIGlmIChsZW5TcXVhcmUgIT09IDApIHtcbiAgICAgICAgLy8gaW4gY2FzZSBvZiAwIGxlbmd0aCBsaW5lXG4gICAgICAgIHBhcmFtID0gZG90IC8gbGVuU3F1YXJlO1xuICAgIH1cblxuICAgIGxldCB4eCwgeXk7XG4gICAgaWYgKHBhcmFtIDwgMCkge1xuICAgICAgICB4eCA9IHgxO1xuICAgICAgICB5eSA9IHkxO1xuICAgIH0gZWxzZSBpZiAocGFyYW0gPiAxKSB7XG4gICAgICAgIHh4ID0geDI7XG4gICAgICAgIHl5ID0geTI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgeHggPSB4MSArIHBhcmFtICogQztcbiAgICAgICAgeXkgPSB5MSArIHBhcmFtICogRDtcbiAgICB9XG5cbiAgICBjb25zdCBkeCA9IHggLSB4eDtcbiAgICBjb25zdCBkeSA9IHkgLSB5eTtcbiAgICByZXR1cm4gTWF0aC5oeXBvdChkeCwgZHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVhcmVzdFBvaW50QmV0d2VlblBvaW50QW5kU2VnbWVudChwb2ludDogUG9pbnQsIGxpbmVQb2ludHM6IFtQb2ludCwgUG9pbnRdKSB7XG4gICAgY29uc3QgeCA9IHBvaW50WzBdLFxuICAgICAgICB5ID0gcG9pbnRbMV0sXG4gICAgICAgIHgxID0gbGluZVBvaW50c1swXVswXSxcbiAgICAgICAgeTEgPSBsaW5lUG9pbnRzWzBdWzFdLFxuICAgICAgICB4MiA9IGxpbmVQb2ludHNbMV1bMF0sXG4gICAgICAgIHkyID0gbGluZVBvaW50c1sxXVsxXTtcbiAgICBjb25zdCBBID0geCAtIHgxO1xuICAgIGNvbnN0IEIgPSB5IC0geTE7XG4gICAgY29uc3QgQyA9IHgyIC0geDE7XG4gICAgY29uc3QgRCA9IHkyIC0geTE7XG5cbiAgICBjb25zdCBkb3QgPSBBICogQyArIEIgKiBEO1xuICAgIGNvbnN0IGxlblNxdWFyZSA9IEMgKiBDICsgRCAqIEQ7XG4gICAgbGV0IHBhcmFtID0gLTE7XG4gICAgaWYgKGxlblNxdWFyZSAhPT0gMCkge1xuICAgICAgICAvLyBpbiBjYXNlIG9mIDAgbGVuZ3RoIGxpbmVcbiAgICAgICAgcGFyYW0gPSBkb3QgLyBsZW5TcXVhcmU7XG4gICAgfVxuXG4gICAgbGV0IHh4LCB5eTtcbiAgICBpZiAocGFyYW0gPCAwKSB7XG4gICAgICAgIHh4ID0geDE7XG4gICAgICAgIHl5ID0geTE7XG4gICAgfSBlbHNlIGlmIChwYXJhbSA+IDEpIHtcbiAgICAgICAgeHggPSB4MjtcbiAgICAgICAgeXkgPSB5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB4eCA9IHgxICsgcGFyYW0gKiBDO1xuICAgICAgICB5eSA9IHkxICsgcGFyYW0gKiBEO1xuICAgIH1cblxuICAgIHJldHVybiBbeHgsIHl5XSBhcyBQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kU2VnbWVudHMocG9pbnRzOiBQb2ludFtdLCBwb2ludDogUG9pbnQpIHtcbiAgICBjb25zdCBsZW4gPSBwb2ludHMubGVuZ3RoO1xuICAgIGxldCBkaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IHAyID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50WzBdLCBwb2ludFsxXSwgcFswXSwgcFsxXSwgcDJbMF0sIHAyWzFdKTtcbiAgICAgICAgaWYgKGN1cnJlbnREaXN0YW5jZSA8IGRpc3RhbmNlKSB7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzdGFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRTZWdtZW50cyhwb2ludDogUG9pbnQsIHBvaW50czogUG9pbnRbXSwgaXNDbG9zZTogQm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBsZW4gPSBwb2ludHMubGVuZ3RoO1xuICAgIGxldCBkaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGxldCByZXN1bHQ6IFBvaW50ID0gcG9pbnQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIGlmIChpID09PSBsZW4gLSAxICYmICFpc0Nsb3NlKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcDIgPSBpID09PSBsZW4gLSAxID8gcG9pbnRzWzBdIDogcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRTZWdtZW50KHBvaW50WzBdLCBwb2ludFsxXSwgcFswXSwgcFsxXSwgcDJbMF0sIHAyWzFdKTtcbiAgICAgICAgaWYgKGN1cnJlbnREaXN0YW5jZSA8IGRpc3RhbmNlKSB7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnQocG9pbnQsIFtwLCBwMl0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZWFyZXN0UG9pbnRCZXR3ZWVuUG9pbnRBbmRFbGxpcHNlKHBvaW50OiBQb2ludCwgY2VudGVyOiBQb2ludCwgcng6IG51bWJlciwgcnk6IG51bWJlciwgcm90YXRpb246IG51bWJlciA9IDApOiBQb2ludCB7XG4gICAgY29uc3QgcmVjdGFuZ2xlQ2xpZW50ID0ge1xuICAgICAgICB4OiBjZW50ZXJbMF0gLSByeCxcbiAgICAgICAgeTogY2VudGVyWzFdIC0gcnksXG4gICAgICAgIGhlaWdodDogcnkgKiAyLFxuICAgICAgICB3aWR0aDogcnggKiAyXG4gICAgfTtcbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDYwMDc1NDAvMjMyMTIyXG4gICAgY29uc3QgcHggPSBNYXRoLmFicyhwb2ludFswXSAtIHJlY3RhbmdsZUNsaWVudC54IC0gcmVjdGFuZ2xlQ2xpZW50LndpZHRoIC8gMik7XG4gICAgY29uc3QgcHkgPSBNYXRoLmFicyhwb2ludFsxXSAtIHJlY3RhbmdsZUNsaWVudC55IC0gcmVjdGFuZ2xlQ2xpZW50LmhlaWdodCAvIDIpO1xuXG4gICAgbGV0IHR4ID0gMC43MDc7XG4gICAgbGV0IHR5ID0gMC43MDc7XG5cbiAgICBjb25zdCBhID0gTWF0aC5hYnMocmVjdGFuZ2xlQ2xpZW50LndpZHRoKSAvIDI7XG4gICAgY29uc3QgYiA9IE1hdGguYWJzKHJlY3RhbmdsZUNsaWVudC5oZWlnaHQpIC8gMjtcblxuICAgIFswLCAxLCAyLCAzXS5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgIGNvbnN0IHh4ID0gYSAqIHR4O1xuICAgICAgICBjb25zdCB5eSA9IGIgKiB0eTtcblxuICAgICAgICBjb25zdCBleCA9ICgoYSAqIGEgLSBiICogYikgKiB0eCAqKiAzKSAvIGE7XG4gICAgICAgIGNvbnN0IGV5ID0gKChiICogYiAtIGEgKiBhKSAqIHR5ICoqIDMpIC8gYjtcblxuICAgICAgICBjb25zdCByeCA9IHh4IC0gZXg7XG4gICAgICAgIGNvbnN0IHJ5ID0geXkgLSBleTtcblxuICAgICAgICBjb25zdCBxeCA9IHB4IC0gZXg7XG4gICAgICAgIGNvbnN0IHF5ID0gcHkgLSBleTtcblxuICAgICAgICBjb25zdCByID0gTWF0aC5oeXBvdChyeSwgcngpO1xuICAgICAgICBjb25zdCBxID0gTWF0aC5oeXBvdChxeSwgcXgpO1xuXG4gICAgICAgIHR4ID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgKChxeCAqIHIpIC8gcSArIGV4KSAvIGEpKTtcbiAgICAgICAgdHkgPSBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCAoKHF5ICogcikgLyBxICsgZXkpIC8gYikpO1xuICAgICAgICBjb25zdCB0ID0gTWF0aC5oeXBvdCh0eSwgdHgpO1xuICAgICAgICB0eCAvPSB0O1xuICAgICAgICB0eSAvPSB0O1xuICAgIH0pO1xuICAgIGNvbnN0IHNpZ25YID0gcG9pbnRbMF0gPiBjZW50ZXJbMF0gPyAxIDogLTE7XG4gICAgY29uc3Qgc2lnblkgPSBwb2ludFsxXSA+IGNlbnRlclsxXSA/IDEgOiAtMTtcblxuICAgIHJldHVybiBbY2VudGVyWzBdICsgYSAqIHR4ICogc2lnblgsIGNlbnRlclsxXSArIGIgKiB0eSAqIHNpZ25ZXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdGF0ZSh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBhbmdsZTogbnVtYmVyKSB7XG4gICAgLy8g8J2RjuKAsvCdkaU9KPCdkY7wnZGl4oiS8J2RkPCdkaUpY29z8J2cg+KIkijwnZGO8J2RpuKIkvCdkZDwnZGmKXNpbvCdnIMr8J2RkPCdkaVcbiAgICAvLyDwnZGO4oCy8J2Rpj0o8J2RjvCdkaXiiJLwnZGQ8J2RpSlzaW7wnZyDKyjwnZGO8J2RpuKIkvCdkZDwnZGmKWNvc/CdnIMr8J2RkPCdkaYuXG4gICAgLy8gaHR0cHM6Ly9tYXRoLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8yMjA0NTIwL2hvdy1kby1pLXJvdGF0ZS1hLWxpbmUtc2VnbWVudC1pbi1hLXNwZWNpZmljLXBvaW50LW9uLXRoZS1saW5lXG4gICAgcmV0dXJuIFsoeDEgLSB4MikgKiBNYXRoLmNvcyhhbmdsZSkgLSAoeTEgLSB5MikgKiBNYXRoLnNpbihhbmdsZSkgKyB4MiwgKHgxIC0geDIpICogTWF0aC5zaW4oYW5nbGUpICsgKHkxIC0geTIpICogTWF0aC5jb3MoYW5nbGUpICsgeTJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCh4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKSB7XG4gICAgY29uc3QgZHggPSB4MSAtIHgyO1xuICAgIGNvbnN0IGR5ID0geTEgLSB5MjtcbiAgICByZXR1cm4gTWF0aC5oeXBvdChkeCwgZHkpO1xufVxuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81MjU0ODM4L2NhbGN1bGF0aW5nLWRpc3RhbmNlLWJldHdlZW4tYS1wb2ludC1hbmQtYS1yZWN0YW5ndWxhci1ib3gtbmVhcmVzdC1wb2ludFxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUmVjdGFuZ2xlKHg6IG51bWJlciwgeTogbnVtYmVyLCByZWN0OiBSZWN0YW5nbGVDbGllbnQpIHtcbiAgICB2YXIgZHggPSBNYXRoLm1heChyZWN0LnggLSB4LCAwLCB4IC0gKHJlY3QueCArIHJlY3Qud2lkdGgpKTtcbiAgICB2YXIgZHkgPSBNYXRoLm1heChyZWN0LnkgLSB5LCAwLCB5IC0gKHJlY3QueSArIHJlY3QuaGVpZ2h0KSk7XG4gICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG59XG5cbmV4cG9ydCBjb25zdCBpc0xpbmVIaXRMaW5lID0gKGE6IFBvaW50LCBiOiBQb2ludCwgYzogUG9pbnQsIGQ6IFBvaW50KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgY3Jvc3NQcm9kdWN0ID0gKHYxOiBQb2ludCwgdjI6IFBvaW50KSA9PiB2MVswXSAqIHYyWzFdIC0gdjFbMV0gKiB2MlswXTtcblxuICAgIGNvbnN0IGFiOiBQb2ludCA9IFtiWzBdIC0gYVswXSwgYlsxXSAtIGFbMV1dO1xuICAgIGNvbnN0IGFjOiBQb2ludCA9IFtjWzBdIC0gYVswXSwgY1sxXSAtIGFbMV1dO1xuICAgIGNvbnN0IGFkOiBQb2ludCA9IFtkWzBdIC0gYVswXSwgZFsxXSAtIGFbMV1dO1xuXG4gICAgY29uc3QgY2E6IFBvaW50ID0gW2FbMF0gLSBjWzBdLCBhWzFdIC0gY1sxXV07XG4gICAgY29uc3QgY2I6IFBvaW50ID0gW2JbMF0gLSBjWzBdLCBiWzFdIC0gY1sxXV07XG4gICAgY29uc3QgY2Q6IFBvaW50ID0gW2RbMF0gLSBjWzBdLCBkWzFdIC0gY1sxXV07XG5cbiAgICByZXR1cm4gY3Jvc3NQcm9kdWN0KGFiLCBhYykgKiBjcm9zc1Byb2R1Y3QoYWIsIGFkKSA8PSAwICYmIGNyb3NzUHJvZHVjdChjZCwgY2EpICogY3Jvc3NQcm9kdWN0KGNkLCBjYikgPD0gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0xpbmVIaXRSZWN0YW5nbGUgPSAocG9pbnRzOiBQb2ludFtdLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZVBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICBjb25zdCBsZW4gPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPT09IGxlbiAtIDEpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBwMSA9IHBvaW50c1tpXTtcbiAgICAgICAgY29uc3QgcDIgPSBwb2ludHNbKGkgKyAxKSAlIGxlbl07XG4gICAgICAgIGNvbnN0IGlzSGl0ID0gaXNTaW5nbGVMaW5lSGl0UmVjdGFuZ2xlRWRnZShwMSwgcDIsIHJlY3RhbmdsZSk7XG4gICAgICAgIGlmIChpc0hpdCB8fCBpc1BvaW50SW5Qb2x5Z29uKHAxLCByZWN0YW5nbGVQb2ludHMpIHx8IGlzUG9pbnRJblBvbHlnb24ocDIsIHJlY3RhbmdsZVBvaW50cykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0xpbmVIaXRSZWN0YW5nbGVFZGdlID0gKHBvaW50czogUG9pbnRbXSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGlzQ2xvc2U6IGJvb2xlYW4gPSB0cnVlKSA9PiB7XG4gICAgY29uc3QgbGVuID0gcG9pbnRzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChpID09PSBsZW4gLSAxICYmICFpc0Nsb3NlKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIGNvbnN0IHAyID0gcG9pbnRzWyhpICsgMSkgJSBsZW5dO1xuICAgICAgICBjb25zdCBpc0hpdCA9IGlzU2luZ2xlTGluZUhpdFJlY3RhbmdsZUVkZ2UocDEsIHAyLCByZWN0YW5nbGUpO1xuICAgICAgICBpZiAoaXNIaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NpbmdsZUxpbmVIaXRSZWN0YW5nbGVFZGdlID0gKHAxOiBQb2ludCwgcDI6IFBvaW50LCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHJlY3RhbmdsZVBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICByZXR1cm4gKFxuICAgICAgICBpc0xpbmVIaXRMaW5lKHAxLCBwMiwgcmVjdGFuZ2xlUG9pbnRzWzBdLCByZWN0YW5nbGVQb2ludHNbMV0pIHx8XG4gICAgICAgIGlzTGluZUhpdExpbmUocDEsIHAyLCByZWN0YW5nbGVQb2ludHNbMV0sIHJlY3RhbmdsZVBvaW50c1syXSkgfHxcbiAgICAgICAgaXNMaW5lSGl0TGluZShwMSwgcDIsIHJlY3RhbmdsZVBvaW50c1syXSwgcmVjdGFuZ2xlUG9pbnRzWzNdKSB8fFxuICAgICAgICBpc0xpbmVIaXRMaW5lKHAxLCBwMiwgcmVjdGFuZ2xlUG9pbnRzWzNdLCByZWN0YW5nbGVQb2ludHNbMF0pXG4gICAgKTtcbn07XG5cbi8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI1MjE5ODIvY2hlY2staWYtcG9pbnQtaXMtaW5zaWRlLWEtcG9seWdvblxuZXhwb3J0IGNvbnN0IGlzUG9pbnRJblBvbHlnb24gPSAocG9pbnQ6IFBvaW50LCBwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICAvLyByYXktY2FzdGluZyBhbGdvcml0aG0gYmFzZWQgb25cbiAgICAvLyBodHRwczovL3dyZi5lY3NlLnJwaS5lZHUvUmVzZWFyY2gvU2hvcnRfTm90ZXMvcG5wb2x5Lmh0bWxcblxuICAgIGNvbnN0IHggPSBwb2ludFswXSxcbiAgICAgICAgeSA9IHBvaW50WzFdO1xuXG4gICAgbGV0IGluc2lkZSA9IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwLCBqID0gcG9pbnRzLmxlbmd0aCAtIDE7IGkgPCBwb2ludHMubGVuZ3RoOyBqID0gaSsrKSB7XG4gICAgICAgIGxldCB4aSA9IHBvaW50c1tpXVswXSxcbiAgICAgICAgICAgIHlpID0gcG9pbnRzW2ldWzFdO1xuICAgICAgICBsZXQgeGogPSBwb2ludHNbal1bMF0sXG4gICAgICAgICAgICB5aiA9IHBvaW50c1tqXVsxXTtcblxuICAgICAgICBsZXQgaW50ZXJzZWN0ID0geWkgPiB5ICE9IHlqID4geSAmJiB4IDwgKCh4aiAtIHhpKSAqICh5IC0geWkpKSAvICh5aiAtIHlpKSArIHhpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0KSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUG9pbnRJbkVsbGlwc2UgPSAocG9pbnQ6IFBvaW50LCBjZW50ZXI6IFBvaW50LCByeDogbnVtYmVyLCByeTogbnVtYmVyLCBhbmdsZSA9IDApID0+IHtcbiAgICBjb25zdCBjb3NBbmdsZSA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICBjb25zdCBzaW5BbmdsZSA9IE1hdGguc2luKGFuZ2xlKTtcbiAgICBjb25zdCB4MSA9IChwb2ludFswXSAtIGNlbnRlclswXSkgKiBjb3NBbmdsZSArIChwb2ludFsxXSAtIGNlbnRlclsxXSkgKiBzaW5BbmdsZTtcbiAgICBjb25zdCB5MSA9IChwb2ludFsxXSAtIGNlbnRlclsxXSkgKiBjb3NBbmdsZSAtIChwb2ludFswXSAtIGNlbnRlclswXSkgKiBzaW5BbmdsZTtcblxuICAgIHJldHVybiAoeDEgKiB4MSkgLyAocnggKiByeCkgKyAoeTEgKiB5MSkgLyAocnkgKiByeSkgPD0gMTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BvaW50SW5Sb3VuZFJlY3RhbmdsZSA9IChwb2ludDogUG9pbnQsIHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCByYWRpdXM6IG51bWJlciwgYW5nbGUgPSAwKSA9PiB7XG4gICAgY29uc3QgeyB4OiByZWN0WCwgeTogcmVjdFksIHdpZHRoLCBoZWlnaHQgfSA9IHJlY3RhbmdsZTtcbiAgICBjb25zdCBpc0luUmVjdGFuZ2xlID0gcG9pbnRbMF0gPj0gcmVjdFggJiYgcG9pbnRbMF0gPD0gcmVjdFggKyB3aWR0aCAmJiBwb2ludFsxXSA+PSByZWN0WSAmJiBwb2ludFsxXSA8PSByZWN0WSArIGhlaWdodDtcbiAgICBjb25zdCBoYW5kbGVMZWZ0VG9wID1cbiAgICAgICAgcG9pbnRbMF0gPj0gcmVjdFggJiZcbiAgICAgICAgcG9pbnRbMF0gPD0gcmVjdFggKyByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMV0gPj0gcmVjdFkgJiZcbiAgICAgICAgcG9pbnRbMV0gPD0gcmVjdFkgKyByYWRpdXMgJiZcbiAgICAgICAgTWF0aC5oeXBvdChwb2ludFswXSAtIChyZWN0WCArIHJhZGl1cyksIHBvaW50WzFdIC0gKHJlY3RZICsgcmFkaXVzKSkgPiByYWRpdXM7XG4gICAgY29uc3QgaGFuZGxlTGVmdEJvdHRvbSA9XG4gICAgICAgIHBvaW50WzBdID49IHJlY3RYICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICsgaGVpZ2h0ICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgaGVpZ2h0IC0gcmFkaXVzICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyByYWRpdXMpLCBwb2ludFsxXSAtIChyZWN0WSArIGhlaWdodCAtIHJhZGl1cykpID4gcmFkaXVzO1xuICAgIGNvbnN0IGhhbmRsZVJpZ2h0VG9wID1cbiAgICAgICAgcG9pbnRbMF0gPj0gcmVjdFggKyB3aWR0aCAtIHJhZGl1cyAmJlxuICAgICAgICBwb2ludFswXSA8PSByZWN0WCArIHdpZHRoICYmXG4gICAgICAgIHBvaW50WzFdID49IHJlY3RZICYmXG4gICAgICAgIHBvaW50WzFdIDw9IHJlY3RZICsgcmFkaXVzICYmXG4gICAgICAgIE1hdGguaHlwb3QocG9pbnRbMF0gLSAocmVjdFggKyB3aWR0aCAtIHJhZGl1cyksIHBvaW50WzFdIC0gKHJlY3RZICsgcmFkaXVzKSkgPiByYWRpdXM7XG4gICAgY29uc3QgaGFuZGxlUmlnaHRCb3R0b20gPVxuICAgICAgICBwb2ludFswXSA+PSByZWN0WCArIHdpZHRoIC0gcmFkaXVzICYmXG4gICAgICAgIHBvaW50WzBdIDw9IHJlY3RYICsgd2lkdGggJiZcbiAgICAgICAgcG9pbnRbMV0gPj0gcmVjdFkgKyBoZWlnaHQgLSByYWRpdXMgJiZcbiAgICAgICAgcG9pbnRbMV0gPD0gcmVjdFkgKyBoZWlnaHQgJiZcbiAgICAgICAgTWF0aC5oeXBvdChwb2ludFswXSAtIChyZWN0WCArIHdpZHRoIC0gcmFkaXVzKSwgcG9pbnRbMV0gLSAocmVjdFkgKyBoZWlnaHQgLSByYWRpdXMpKSA+IHJhZGl1cztcbiAgICBjb25zdCBpc0luQ29ybmVyID0gaGFuZGxlTGVmdFRvcCB8fCBoYW5kbGVMZWZ0Qm90dG9tIHx8IGhhbmRsZVJpZ2h0VG9wIHx8IGhhbmRsZVJpZ2h0Qm90dG9tO1xuXG4gICAgcmV0dXJuIGlzSW5SZWN0YW5nbGUgJiYgIWlzSW5Db3JuZXI7XG59O1xuXG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9uaWNob2xhc3dtaW4vYzI2NjFlYjExY2FkNTY3MWQ4MTZcbmV4cG9ydCBjb25zdCBjYXRtdWxsUm9tRml0dGluZyA9IGZ1bmN0aW9uIChwb2ludHM6IFBvaW50W10pIHtcbiAgICBjb25zdCBhbHBoYSA9IDAuNTtcbiAgICBsZXQgcDAsIHAxLCBwMiwgcDMsIGJwMSwgYnAyLCBkMSwgZDIsIGQzLCBBLCBCLCBOLCBNO1xuICAgIHZhciBkM3Bvd0EsIGQycG93QSwgZDNwb3cyQSwgZDJwb3cyQSwgZDFwb3cyQSwgZDFwb3dBO1xuICAgIGNvbnN0IHJlc3VsdDogUG9pbnRbXSA9IFtdO1xuICAgIHJlc3VsdC5wdXNoKFtNYXRoLnJvdW5kKHBvaW50c1swXVswXSksIE1hdGgucm91bmQocG9pbnRzWzBdWzFdKV0pO1xuICAgIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIHAwID0gaSA9PSAwID8gcG9pbnRzWzBdIDogcG9pbnRzW2kgLSAxXTtcbiAgICAgICAgcDEgPSBwb2ludHNbaV07XG4gICAgICAgIHAyID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgcDMgPSBpICsgMiA8IGxlbmd0aCA/IHBvaW50c1tpICsgMl0gOiBwMjtcblxuICAgICAgICBkMSA9IE1hdGguc3FydChNYXRoLnBvdyhwMFswXSAtIHAxWzBdLCAyKSArIE1hdGgucG93KHAwWzFdIC0gcDFbMV0sIDIpKTtcbiAgICAgICAgZDIgPSBNYXRoLnNxcnQoTWF0aC5wb3cocDFbMF0gLSBwMlswXSwgMikgKyBNYXRoLnBvdyhwMVsxXSAtIHAyWzFdLCAyKSk7XG4gICAgICAgIGQzID0gTWF0aC5zcXJ0KE1hdGgucG93KHAyWzBdIC0gcDNbMF0sIDIpICsgTWF0aC5wb3cocDJbMV0gLSBwM1sxXSwgMikpO1xuXG4gICAgICAgIC8vIENhdG11bGwtUm9tIHRvIEN1YmljIEJlemllciBjb252ZXJzaW9uIG1hdHJpeFxuICAgICAgICAvLyBBID0gMmQxXjJhICsgM2QxXmEgKiBkMl5hICsgZDNeMmFcbiAgICAgICAgLy8gQiA9IDJkM14yYSArIDNkM15hICogZDJeYSArIGQyXjJhXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDEgICAgICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgXVxuICAgICAgICAvLyBbICAgLWQyXjJhIC9OICAgICBBL04gICAgICAgICAgZDFeMmEgL04gICAwICAgICAgICAgIF1cbiAgICAgICAgLy8gWyAgIDAgICAgICAgICAgICAgZDNeMmEgL00gICAgIEIvTSAgICAgICAgLWQyXjJhIC9NICBdXG4gICAgICAgIC8vIFsgICAwICAgICAgICAgICAgIDAgICAgICAgICAgICAxICAgICAgICAgIDAgICAgICAgICAgXVxuXG4gICAgICAgIGQzcG93QSA9IE1hdGgucG93KGQzLCBhbHBoYSk7XG4gICAgICAgIGQzcG93MkEgPSBNYXRoLnBvdyhkMywgMiAqIGFscGhhKTtcbiAgICAgICAgZDJwb3dBID0gTWF0aC5wb3coZDIsIGFscGhhKTtcbiAgICAgICAgZDJwb3cyQSA9IE1hdGgucG93KGQyLCAyICogYWxwaGEpO1xuICAgICAgICBkMXBvd0EgPSBNYXRoLnBvdyhkMSwgYWxwaGEpO1xuICAgICAgICBkMXBvdzJBID0gTWF0aC5wb3coZDEsIDIgKiBhbHBoYSk7XG5cbiAgICAgICAgQSA9IDIgKiBkMXBvdzJBICsgMyAqIGQxcG93QSAqIGQycG93QSArIGQycG93MkE7XG4gICAgICAgIEIgPSAyICogZDNwb3cyQSArIDMgKiBkM3Bvd0EgKiBkMnBvd0EgKyBkMnBvdzJBO1xuICAgICAgICBOID0gMyAqIGQxcG93QSAqIChkMXBvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTiA+IDApIHtcbiAgICAgICAgICAgIE4gPSAxIC8gTjtcbiAgICAgICAgfVxuICAgICAgICBNID0gMyAqIGQzcG93QSAqIChkM3Bvd0EgKyBkMnBvd0EpO1xuICAgICAgICBpZiAoTSA+IDApIHtcbiAgICAgICAgICAgIE0gPSAxIC8gTTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJwMSA9IFsoLWQycG93MkEgKiBwMFswXSArIEEgKiBwMVswXSArIGQxcG93MkEgKiBwMlswXSkgKiBOLCAoLWQycG93MkEgKiBwMFsxXSArIEEgKiBwMVsxXSArIGQxcG93MkEgKiBwMlsxXSkgKiBOXTtcbiAgICAgICAgYnAyID0gWyhkM3BvdzJBICogcDFbMF0gKyBCICogcDJbMF0gLSBkMnBvdzJBICogcDNbMF0pICogTSwgKGQzcG93MkEgKiBwMVsxXSArIEIgKiBwMlsxXSAtIGQycG93MkEgKiBwM1sxXSkgKiBNXTtcblxuICAgICAgICBpZiAoYnAxWzBdID09IDAgJiYgYnAxWzFdID09IDApIHtcbiAgICAgICAgICAgIGJwMSA9IHAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChicDJbMF0gPT0gMCAmJiBicDJbMV0gPT0gMCkge1xuICAgICAgICAgICAgYnAyID0gcDI7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQucHVzaChicDEgYXMgUG9pbnQsIGJwMiBhcyBQb2ludCwgcDIgYXMgUG9pbnQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIHRoZSByZXN1bHQgb2Ygc2xvcGUgaXMgYmFzZWQgb24gQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtXG4gKiB4LCB5IGFyZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24gaW4gdGhlIENhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxsaXBzZVRhbmdlbnRTbG9wZSh4OiBudW1iZXIsIHk6IG51bWJlciwgYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICBpZiAoTWF0aC5hYnMoeSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHggPiAwID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gICAgfVxuICAgIGNvbnN0IGsgPSAoLWIgKiBiICogeCkgLyAoYSAqIGEgKiB5KTtcbiAgICByZXR1cm4gaztcbn1cblxuLyoqXG4gKiB4LCB5IGFyZSBiYXNlZCBvbiB0aGUgcG9zaXRpb24gaW4gdGhlIENhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVjdG9yRnJvbVBvaW50QW5kU2xvcGUoeDogbnVtYmVyLCB5OiBudW1iZXIsIHNsb3BlOiBudW1iZXIpIHtcbiAgICBpZiAoc2xvcGUgPT09IEluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiBbMCwgLTFdIGFzIFBvaW50O1xuICAgIH0gZWxzZSBpZiAoc2xvcGUgPT09IC1JbmZpbml0eSkge1xuICAgICAgICByZXR1cm4gWzAsIDFdIGFzIFBvaW50O1xuICAgIH1cbiAgICBsZXQgdmVjdG9yID0gWzEsIC1zbG9wZV0gYXMgUG9pbnQ7XG4gICAgaWYgKHkgPCAwKSB7XG4gICAgICAgIHZlY3RvciA9IFstdmVjdG9yWzBdLCAtdmVjdG9yWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvciBhcyBQb2ludDtcbn1cblxuLyoqXG4gKiBUaGUgRE9NIGxpa2VzIHZhbHVlcyB0byBiZSBmaXhlZCB0byAzIGRlY2ltYWwgcGxhY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RvbVByZWNpc2lvbih2OiBudW1iZXIpIHtcbiAgICByZXR1cm4gK3YudG9GaXhlZCg0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRml4ZWQodjogbnVtYmVyKSB7XG4gICAgcmV0dXJuICt2LnRvRml4ZWQoMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZWlsVG9EZWNpbWFsKHZhbHVlOiBudW1iZXIsIGRlY2ltYWxQbGFjZXM6IG51bWJlcikge1xuICAgIGNvbnN0IGZhY3RvciA9IE1hdGgucG93KDEwLCBkZWNpbWFsUGxhY2VzKTtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHZhbHVlICogZmFjdG9yKSAvIGZhY3Rvcjtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHR3byBudW1iZXJzIG51bWJlcnMgYSBhbmQgYiBhcmUgYXBwcm94aW1hdGVseSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCBwb2ludC5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCBwb2ludC5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcHJveGltYXRlbHkoYTogbnVtYmVyLCBiOiBudW1iZXIsIHByZWNpc2lvbiA9IDAuMDAwMDAxKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKGEgLSBiKSA8PSBwcmVjaXNpb247XG59XG5cbi8vIGh0dHBzOi8vbWVkaXVtLmNvbS9Ac3RldmVydWl6L2ZpbmQtdGhlLXBvaW50cy13aGVyZS1hLWxpbmUtc2VnbWVudC1pbnRlcmNlcHRzLWFuLWFuZ2xlZC1lbGxpcHNlLWluLWphdmFzY3JpcHQtdHlwZXNjcmlwdC1lNDUxNTI0YmVlY2VcbmV4cG9ydCBmdW5jdGlvbiBnZXRDcm9zc2luZ1BvaW50c0JldHdlZW5FbGxpcHNlQW5kU2VnbWVudChcbiAgICBzdGFydFBvaW50OiBQb2ludCxcbiAgICBlbmRQb2ludDogUG9pbnQsXG4gICAgY3g6IG51bWJlcixcbiAgICBjeTogbnVtYmVyLFxuICAgIHJ4OiBudW1iZXIsXG4gICAgcnk6IG51bWJlcixcbiAgICBzZWdtZW50X29ubHkgPSB0cnVlXG4pIHtcbiAgICAvLyBJZiB0aGUgZWxsaXBzZSBvciBsaW5lIHNlZ21lbnQgYXJlIGVtcHR5LCByZXR1cm4gbm8gdFZhbHVlcy5cbiAgICBpZiAocnggPT09IDAgfHwgcnkgPT09IDAgfHwgKHN0YXJ0UG9pbnRbMF0gPT09IGVuZFBvaW50WzBdICYmIHN0YXJ0UG9pbnRbMV0gPT09IGVuZFBvaW50WzFdKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcnggPSByeCA8IDAgPyByeCA6IC1yeDtcbiAgICByeSA9IHJ5IDwgMCA/IHJ5IDogLXJ5O1xuXG4gICAgc3RhcnRQb2ludFswXSAtPSBjeDtcbiAgICBzdGFydFBvaW50WzFdIC09IGN5O1xuICAgIGVuZFBvaW50WzBdIC09IGN4O1xuICAgIGVuZFBvaW50WzFdIC09IGN5O1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBxdWFkcmF0aWMgcGFyYW1ldGVycy5cbiAgICB2YXIgQSA9XG4gICAgICAgICgoZW5kUG9pbnRbMF0gLSBzdGFydFBvaW50WzBdKSAqIChlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0pKSAvIHJ4IC8gcnggK1xuICAgICAgICAoKGVuZFBvaW50WzFdIC0gc3RhcnRQb2ludFsxXSkgKiAoZW5kUG9pbnRbMV0gLSBzdGFydFBvaW50WzFdKSkgLyByeSAvIHJ5O1xuICAgIHZhciBCID0gKDIgKiBzdGFydFBvaW50WzBdICogKGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXSkpIC8gcnggLyByeCArICgyICogc3RhcnRQb2ludFsxXSAqIChlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV0pKSAvIHJ5IC8gcnk7XG4gICAgdmFyIEMgPSAoc3RhcnRQb2ludFswXSAqIHN0YXJ0UG9pbnRbMF0pIC8gcnggLyByeCArIChzdGFydFBvaW50WzFdICogc3RhcnRQb2ludFsxXSkgLyByeSAvIHJ5IC0gMTtcblxuICAgIC8vIE1ha2UgYSBsaXN0IG9mIHQgdmFsdWVzIChub3JtYWxpemVkIHBvaW50cyBvbiB0aGUgbGluZSB3aGVyZSBpbnRlcnNlY3Rpb25zIG9jY3VyKS5cbiAgICB2YXIgdFZhbHVlczogbnVtYmVyW10gPSBbXTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgZGlzY3JpbWluYW50LlxuICAgIHZhciBkaXNjcmltaW5hbnQgPSBCICogQiAtIDQgKiBBICogQztcblxuICAgIGlmIChkaXNjcmltaW5hbnQgPT09IDApIHtcbiAgICAgICAgLy8gT25lIHJlYWwgc29sdXRpb24uXG4gICAgICAgIHRWYWx1ZXMucHVzaCgtQiAvIDIgLyBBKTtcbiAgICB9IGVsc2UgaWYgKGRpc2NyaW1pbmFudCA+IDApIHtcbiAgICAgICAgLy8gVHdvIHJlYWwgc29sdXRpb25zLlxuICAgICAgICB0VmFsdWVzLnB1c2goKC1CICsgTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCkpIC8gMiAvIEEpO1xuICAgICAgICB0VmFsdWVzLnB1c2goKC1CIC0gTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCkpIC8gMiAvIEEpO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgICB0VmFsdWVzXG4gICAgICAgICAgICAvLyBGaWx0ZXIgdG8gb25seSBwb2ludHMgdGhhdCBhcmUgb24gdGhlIHNlZ21lbnQuXG4gICAgICAgICAgICAuZmlsdGVyKCh0KSA9PiAhc2VnbWVudF9vbmx5IHx8ICh0ID49IDAgJiYgdCA8PSAxKSlcbiAgICAgICAgICAgIC8vIFNvbHZlIGZvciBwb2ludHMuXG4gICAgICAgICAgICAubWFwKCh0KSA9PiBbc3RhcnRQb2ludFswXSArIChlbmRQb2ludFswXSAtIHN0YXJ0UG9pbnRbMF0pICogdCArIGN4LCBzdGFydFBvaW50WzFdICsgKGVuZFBvaW50WzFdIC0gc3RhcnRQb2ludFsxXSkgKiB0ICsgY3ldKVxuICAgICk7XG59XG5cbi8qKlxuICogR2V0IGEgcG9pbnQgYmV0d2VlbiB0d28gcG9pbnRzLlxuICogQHBhcmFtIHgwIFRoZSB4LWF4aXMgY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgcG9pbnQuXG4gKiBAcGFyYW0geTAgVGhlIHktYXhpcyBjb29yZGluYXRlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAqIEBwYXJhbSB4MSBUaGUgeC1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqIEBwYXJhbSB5MSBUaGUgeS1heGlzIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBwb2ludC5cbiAqIEBwYXJhbSBkIE5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBvaW50QmV0d2Vlbih4MDogbnVtYmVyLCB5MDogbnVtYmVyLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCBkID0gMC41KSB7XG4gICAgcmV0dXJuIFt4MCArICh4MSAtIHgwKSAqIGQsIHkwICsgKHkxIC0geTApICogZF07XG59XG4iXX0=
@@ -984,11 +984,11 @@ const isLineHitLine = (a, b, c, d) => {
984
984
  const cd = [d[0] - c[0], d[1] - c[1]];
985
985
  return crossProduct(ab, ac) * crossProduct(ab, ad) <= 0 && crossProduct(cd, ca) * crossProduct(cd, cb) <= 0;
986
986
  };
987
- const isLineHitRectangle = (points, rectangle, isClose = true) => {
987
+ const isLineHitRectangle = (points, rectangle) => {
988
988
  const rectanglePoints = RectangleClient.getCornerPoints(rectangle);
989
989
  const len = points.length;
990
990
  for (let i = 0; i < len; i++) {
991
- if (i === len - 1 && !isClose)
991
+ if (i === len - 1)
992
992
  continue;
993
993
  const p1 = points[i];
994
994
  const p2 = points[(i + 1) % len];
@@ -5111,6 +5111,7 @@ const trackBy = (index, element) => {
5111
5111
  const createPluginComponent = (board, componentType, context, childrenContext) => {
5112
5112
  const instance = new componentType();
5113
5113
  instance.context = context;
5114
+ board.normalizeElement(context);
5114
5115
  try {
5115
5116
  instance.initialize();
5116
5117
  }
@@ -5466,6 +5467,8 @@ function createBoard(children, options) {
5466
5467
  },
5467
5468
  getDeletedFragment: (data) => data,
5468
5469
  getRelatedFragment: (data, originData) => data,
5470
+ normalizeElement: (context) => {
5471
+ },
5469
5472
  drawElement: (context) => {
5470
5473
  throw new Error(`can not resolve plugin element component type: ${context.element.type}`);
5471
5474
  },
@@ -6309,7 +6312,6 @@ function withSelection(board) {
6309
6312
  timerId = setTimeout(() => {
6310
6313
  start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
6311
6314
  timerId = null;
6312
- console.log('enter selection');
6313
6315
  }, 120);
6314
6316
  }
6315
6317
  else {