package org.aoc2021

import java.nio.file.Files
import java.nio.file.Path
import kotlin.math.abs

typealias Vector = List<Int>
typealias Matrix = List<List<Int>>

private fun Vector.vectorAdd(vector: Vector): Vector {
    return this.mapIndexed { i, value ->
        value + vector[i]
    }
}

private fun Vector.vectorSubtract(vector: Vector): Vector {
    return this.mapIndexed { i, value ->
        value - vector[i]
    }
}

private fun Vector.matrixMultiply(matrix: Matrix): Vector {
    return this.indices.map { i ->
        matrix.indices.sumOf { j ->
            this[j] * matrix[j][i]
        }
    }
}

private fun Matrix.multiply(matrix: Matrix): Matrix {
    return this.map { vector -> vector.matrixMultiply(matrix) }
}

object Day19 {
    data class ScannerLocation(val coordinates: Vector, val rotation: Matrix)

    private val identityMatrix = listOf(
        listOf(1, 0, 0),
        listOf(0, 1, 0),
        listOf(0, 0, 1),
    )

    private val xRotationMatrix = listOf(
        listOf(1, 0, 0),
        listOf(0, 0, -1),
        listOf(0, 1, 0),
    )

    private val yRotationMatrix = listOf(
        listOf(0, 0, -1),
        listOf(0, 1, 0),
        listOf(1, 0, 0),
    )

    private val zRotationMatrix = listOf(
        listOf(0, 1, 0),
        listOf(-1, 0, 0),
        listOf(0, 0, 1),
    )

    private val all3DRotationMatrices = generateRotationMatrices()

    private fun solve(lines: List<String>): Pair<Int, Int> {
        val scanners = parseLines(lines)

        val scannerLocations = findScanners(scanners)

        val solution1 = countBeacons(scanners, scannerLocations)

        val solution2 = scannerLocations.values.maxOf { a ->
            scannerLocations.values.filter { it !== a }.maxOf { b ->
                a.coordinates.vectorSubtract(b.coordinates).map(::abs).sum()
            }
        }

        return solution1 to solution2
    }

    private fun parseLines(lines: List<String>): List<List<Vector>> {
        if (lines.isEmpty()) {
            return listOf()
        }

        val nextScanner = lines.drop(1)
            .takeWhile(String::isNotBlank)
            .map { line -> line.split(",").map(String::toInt) }

        return listOf(nextScanner).plus(parseLines(lines.dropWhile(String::isNotBlank).drop(1)))
    }

    private fun findScanners(scanners: List<List<Vector>>): Map<Int, ScannerLocation> {
        val scannerLocations = mutableMapOf(
            0 to ScannerLocation(listOf(0, 0, 0), identityMatrix),
        )

        // Triple(rotation matrix, base beacon, other beacon distances)
        val precomputedRotatedDistances = scanners.mapIndexed { i, beaconLocations ->
            i to beaconLocations.flatMap { beaconLocation ->
                all3DRotationMatrices.map { rotationMatrix ->
                    val rotatedBeaconLocation = beaconLocation.matrixMultiply(rotationMatrix)
                    val rotatedBeaconDistances = beaconLocations.filter { it !== beaconLocation }
                        .map { it.matrixMultiply(rotationMatrix).vectorSubtract(rotatedBeaconLocation) }

                    Triple(rotationMatrix, rotatedBeaconLocation, rotatedBeaconDistances.toSet())
                }
            }
        }.toMap()

        while (scannerLocations.size < scanners.size) {
            val foundScannerIds = scanners.indices.filter { i -> scannerLocations.containsKey(i) }

            foundScannerIds.forEach { foundScannerId ->
                val foundScannerLocation = scannerLocations[foundScannerId]!!
                val foundBeaconDistances = precomputedRotatedDistances[foundScannerId]!!
                    .filter { (rotationMatrix, _, _) -> rotationMatrix == foundScannerLocation.rotation }

                val unknownScannerIds = scanners.indices.filter { i -> !scannerLocations.containsKey(i) }
                unknownScannerIds.forEach { unknownScannerId ->
                    for (t in precomputedRotatedDistances[unknownScannerId]!!) {
                        val (rotationMatrix, rotatedBeaconLocation, rotatedBeaconDistances) = t

                        val matchingFoundDistances = foundBeaconDistances.find { (_, _, foundDistancesSet) ->
                            foundDistancesSet.intersect(rotatedBeaconDistances).size >= 11
                        }
                        if (matchingFoundDistances != null) {
                            val (_, foundBeaconLocation, _) = matchingFoundDistances
                            val scannerCoordinates = foundScannerLocation.coordinates
                                .vectorAdd(foundBeaconLocation)
                                .vectorSubtract(rotatedBeaconLocation)

                            scannerLocations[unknownScannerId] = ScannerLocation(scannerCoordinates, rotationMatrix)
                            break
                        }
                    }
                }
            }
        }

        return scannerLocations.toMap()
    }

    private fun countBeacons(scanners: List<List<Vector>>, scannerLocations: Map<Int, ScannerLocation>): Int {
        val allBeaconLocations = mutableSetOf<Vector>()
        scanners.forEachIndexed { i, beaconLocations ->
            val scannerLocation = scannerLocations[i]!!

            allBeaconLocations.addAll(beaconLocations.map { beaconLocation ->
                beaconLocation.matrixMultiply(scannerLocation.rotation).vectorAdd(scannerLocation.coordinates)
            })
        }
        return allBeaconLocations.size
    }

    private fun generateRotationMatrices(): List<Matrix> {
        val result = mutableListOf<Matrix>()

        var currentMatrix = identityMatrix
        listOf(
            zRotationMatrix to yRotationMatrix,
            yRotationMatrix to xRotationMatrix,
            xRotationMatrix to zRotationMatrix,
        ).forEach { (axis1Matrix, axis2Matrix) ->
            currentMatrix = currentMatrix.multiply(axis2Matrix)
            result.addAll(generateRotationMatricesForAxis(currentMatrix, axis1Matrix))

            currentMatrix = currentMatrix.multiply(axis2Matrix).multiply(axis2Matrix)
            result.addAll(generateRotationMatricesForAxis(currentMatrix, axis1Matrix))
        }

        return result.toList()
    }

    private fun generateRotationMatricesForAxis(matrix: Matrix, rotation: Matrix): List<Matrix> {
        val result = mutableListOf<Matrix>()
        var current = matrix
        (1..4).forEach { _ ->
            result.add(current)
            current = current.multiply(rotation)
        }
        return result.toList()
    }

    @JvmStatic
    fun main(args: Array<String>) {
        val lines = Files.readAllLines(Path.of("input19.txt"), Charsets.UTF_8)
        val (solution1, solution2) = solve(lines)
        println(solution1)
        println(solution2)
    }
}

Compiled from "Day19.kt"
public final class org.aoc2021.Day19$ScannerLocation {
  private final java.util.List<java.lang.Integer> coordinates;

  private final java.util.List<java.util.List<java.lang.Integer>> rotation;

  public org.aoc2021.Day19$ScannerLocation(java.util.List<java.lang.Integer>, java.util.List<? extends java.util.List<java.lang.Integer>>);
    Code:
       0: aload_1
       1: ldc           #10                 // String coordinates
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #18                 // String rotation
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_0
      13: invokespecial #21                 // Method java/lang/Object."<init>":()V
      16: aload_0
      17: aload_1
      18: putfield      #24                 // Field coordinates:Ljava/util/List;
      21: aload_0
      22: aload_2
      23: putfield      #26                 // Field rotation:Ljava/util/List;
      26: return

  public final java.util.List<java.lang.Integer> getCoordinates();
    Code:
       0: aload_0
       1: getfield      #24                 // Field coordinates:Ljava/util/List;
       4: areturn

  public final java.util.List<java.util.List<java.lang.Integer>> getRotation();
    Code:
       0: aload_0
       1: getfield      #26                 // Field rotation:Ljava/util/List;
       4: areturn

  public final java.util.List<java.lang.Integer> component1();
    Code:
       0: aload_0
       1: getfield      #24                 // Field coordinates:Ljava/util/List;
       4: areturn

  public final java.util.List<java.util.List<java.lang.Integer>> component2();
    Code:
       0: aload_0
       1: getfield      #26                 // Field rotation:Ljava/util/List;
       4: areturn

  public final org.aoc2021.Day19$ScannerLocation copy(java.util.List<java.lang.Integer>, java.util.List<? extends java.util.List<java.lang.Integer>>);
    Code:
       0: aload_1
       1: ldc           #10                 // String coordinates
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #18                 // String rotation
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: new           #2                  // class org/aoc2021/Day19$ScannerLocation
      15: dup
      16: aload_1
      17: aload_2
      18: invokespecial #40                 // Method "<init>":(Ljava/util/List;Ljava/util/List;)V
      21: areturn

  public static org.aoc2021.Day19$ScannerLocation copy$default(org.aoc2021.Day19$ScannerLocation, java.util.List, java.util.List, int, java.lang.Object);
    Code:
       0: iload_3
       1: iconst_1
       2: iand
       3: ifeq          11
       6: aload_0
       7: getfield      #24                 // Field coordinates:Ljava/util/List;
      10: astore_1
      11: iload_3
      12: iconst_2
      13: iand
      14: ifeq          22
      17: aload_0
      18: getfield      #26                 // Field rotation:Ljava/util/List;
      21: astore_2
      22: aload_0
      23: aload_1
      24: aload_2
      25: invokevirtual #44                 // Method copy:(Ljava/util/List;Ljava/util/List;)Lorg/aoc2021/Day19$ScannerLocation;
      28: areturn

  public java.lang.String toString();
    Code:
       0: new           #48                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #49                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #51                 // String ScannerLocation(coordinates=
       9: invokevirtual #55                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #24                 // Field coordinates:Ljava/util/List;
      16: invokevirtual #58                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      19: ldc           #60                 // String , rotation=
      21: invokevirtual #55                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #26                 // Field rotation:Ljava/util/List;
      28: invokevirtual #58                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      31: bipush        41
      33: invokevirtual #63                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      36: invokevirtual #65                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      39: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #24                 // Field coordinates:Ljava/util/List;
       4: invokevirtual #69                 // Method java/lang/Object.hashCode:()I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #26                 // Field rotation:Ljava/util/List;
      16: invokevirtual #69                 // Method java/lang/Object.hashCode:()I
      19: iadd
      20: istore_1
      21: iload_1
      22: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class org/aoc2021/Day19$ScannerLocation
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class org/aoc2021/Day19$ScannerLocation
      20: astore_2
      21: aload_0
      22: getfield      #24                 // Field coordinates:Ljava/util/List;
      25: aload_2
      26: getfield      #24                 // Field coordinates:Ljava/util/List;
      29: invokestatic  #78                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      32: ifne          37
      35: iconst_0
      36: ireturn
      37: aload_0
      38: getfield      #26                 // Field rotation:Ljava/util/List;
      41: aload_2
      42: getfield      #26                 // Field rotation:Ljava/util/List;
      45: invokestatic  #78                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      48: ifne          53
      51: iconst_0
      52: ireturn
      53: iconst_1
      54: ireturn
}

Compiled from "Day19.kt"
public final class org.aoc2021.Day19Kt {
  private static final java.util.List<java.lang.Integer> vectorAdd(java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>);
    Code:
       0: aload_0
       1: checkcast     #9                  // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #11                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: bipush        10
      17: invokestatic  #17                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      20: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
      23: checkcast     #23                 // class java/util/Collection
      26: astore        5
      28: iconst_0
      29: istore        6
      31: iconst_0
      32: istore        7
      34: aload         4
      36: invokeinterface #27,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      41: astore        8
      43: aload         8
      45: invokeinterface #33,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      50: ifeq          130
      53: aload         8
      55: invokeinterface #37,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      60: astore        9
      62: aload         5
      64: iload         7
      66: iinc          7, 1
      69: istore        10
      71: iload         10
      73: ifge          79
      76: invokestatic  #41                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
      79: iload         10
      81: aload         9
      83: checkcast     #43                 // class java/lang/Number
      86: invokevirtual #47                 // Method java/lang/Number.intValue:()I
      89: istore        11
      91: istore        12
      93: astore        14
      95: iconst_0
      96: istore        13
      98: iload         11
     100: aload_1
     101: iload         12
     103: invokeinterface #53,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     108: checkcast     #43                 // class java/lang/Number
     111: invokevirtual #47                 // Method java/lang/Number.intValue:()I
     114: iadd
     115: invokestatic  #59                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     118: aload         14
     120: swap
     121: invokeinterface #63,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     126: pop
     127: goto          43
     130: aload         5
     132: checkcast     #49                 // class java/util/List
     135: nop
     136: areturn

  private static final java.util.List<java.lang.Integer> vectorSubtract(java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>);
    Code:
       0: aload_0
       1: checkcast     #9                  // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #11                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: bipush        10
      17: invokestatic  #17                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      20: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
      23: checkcast     #23                 // class java/util/Collection
      26: astore        5
      28: iconst_0
      29: istore        6
      31: iconst_0
      32: istore        7
      34: aload         4
      36: invokeinterface #27,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      41: astore        8
      43: aload         8
      45: invokeinterface #33,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      50: ifeq          130
      53: aload         8
      55: invokeinterface #37,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      60: astore        9
      62: aload         5
      64: iload         7
      66: iinc          7, 1
      69: istore        10
      71: iload         10
      73: ifge          79
      76: invokestatic  #41                 // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
      79: iload         10
      81: aload         9
      83: checkcast     #43                 // class java/lang/Number
      86: invokevirtual #47                 // Method java/lang/Number.intValue:()I
      89: istore        11
      91: istore        12
      93: astore        14
      95: iconst_0
      96: istore        13
      98: iload         11
     100: aload_1
     101: iload         12
     103: invokeinterface #53,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     108: checkcast     #43                 // class java/lang/Number
     111: invokevirtual #47                 // Method java/lang/Number.intValue:()I
     114: isub
     115: invokestatic  #59                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     118: aload         14
     120: swap
     121: invokeinterface #63,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     126: pop
     127: goto          43
     130: aload         5
     132: checkcast     #49                 // class java/util/List
     135: nop
     136: areturn

  private static final java.util.List<java.lang.Integer> matrixMultiply(java.util.List<java.lang.Integer>, java.util.List<? extends java.util.List<java.lang.Integer>>);
    Code:
       0: aload_0
       1: checkcast     #23                 // class java/util/Collection
       4: invokestatic  #89                 // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
       7: checkcast     #9                  // class java/lang/Iterable
      10: astore_2
      11: iconst_0
      12: istore_3
      13: aload_2
      14: astore        4
      16: new           #11                 // class java/util/ArrayList
      19: dup
      20: aload_2
      21: bipush        10
      23: invokestatic  #17                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      26: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
      29: checkcast     #23                 // class java/util/Collection
      32: astore        5
      34: iconst_0
      35: istore        6
      37: aload         4
      39: invokeinterface #27,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      44: astore        7
      46: aload         7
      48: invokeinterface #33,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      53: ifeq          201
      56: aload         7
      58: checkcast     #91                 // class kotlin/collections/IntIterator
      61: invokevirtual #94                 // Method kotlin/collections/IntIterator.nextInt:()I
      64: istore        8
      66: aload         5
      68: iload         8
      70: istore        9
      72: astore        19
      74: iconst_0
      75: istore        10
      77: aload_1
      78: checkcast     #23                 // class java/util/Collection
      81: invokestatic  #89                 // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
      84: checkcast     #9                  // class java/lang/Iterable
      87: astore        11
      89: iconst_0
      90: istore        12
      92: aload         11
      94: invokeinterface #27,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      99: astore        13
     101: aload         13
     103: invokeinterface #33,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     108: ifeq          183
     111: aload         13
     113: checkcast     #91                 // class kotlin/collections/IntIterator
     116: invokevirtual #94                 // Method kotlin/collections/IntIterator.nextInt:()I
     119: istore        14
     121: iload         12
     123: iload         14
     125: istore        15
     127: istore        16
     129: iconst_0
     130: istore        17
     132: aload_0
     133: iload         15
     135: invokeinterface #53,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     140: checkcast     #43                 // class java/lang/Number
     143: invokevirtual #47                 // Method java/lang/Number.intValue:()I
     146: aload_1
     147: iload         15
     149: invokeinterface #53,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     154: checkcast     #49                 // class java/util/List
     157: iload         9
     159: invokeinterface #53,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     164: checkcast     #43                 // class java/lang/Number
     167: invokevirtual #47                 // Method java/lang/Number.intValue:()I
     170: imul
     171: istore        18
     173: iload         16
     175: iload         18
     177: iadd
     178: istore        12
     180: goto          101
     183: iload         12
     185: nop
     186: invokestatic  #59                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     189: aload         19
     191: swap
     192: invokeinterface #63,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     197: pop
     198: goto          46
     201: aload         5
     203: checkcast     #49                 // class java/util/List
     206: nop
     207: areturn

  private static final java.util.List<java.util.List<java.lang.Integer>> multiply(java.util.List<? extends java.util.List<java.lang.Integer>>, java.util.List<? extends java.util.List<java.lang.Integer>>);
    Code:
       0: aload_0
       1: checkcast     #9                  // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #11                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: bipush        10
      17: invokestatic  #17                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      20: invokespecial #21                 // Method java/util/ArrayList."<init>":(I)V
      23: checkcast     #23                 // class java/util/Collection
      26: astore        5
      28: iconst_0
      29: istore        6
      31: aload         4
      33: invokeinterface #27,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      38: astore        7
      40: aload         7
      42: invokeinterface #33,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      47: ifeq          91
      50: aload         7
      52: invokeinterface #37,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      57: astore        8
      59: aload         5
      61: aload         8
      63: checkcast     #49                 // class java/util/List
      66: astore        9
      68: astore        11
      70: iconst_0
      71: istore        10
      73: aload         9
      75: aload_1
      76: invokestatic  #107                // Method matrixMultiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
      79: aload         11
      81: swap
      82: invokeinterface #63,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      87: pop
      88: goto          40
      91: aload         5
      93: checkcast     #49                 // class java/util/List
      96: nop
      97: areturn

  public static final java.util.List access$vectorSubtract(java.util.List, java.util.List);
    Code:
       0: aload_0
       1: aload_1
       2: invokestatic  #112                // Method vectorSubtract:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
       5: areturn

  public static final java.util.List access$matrixMultiply(java.util.List, java.util.List);
    Code:
       0: aload_0
       1: aload_1
       2: invokestatic  #107                // Method matrixMultiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
       5: areturn

  public static final java.util.List access$vectorAdd(java.util.List, java.util.List);
    Code:
       0: aload_0
       1: aload_1
       2: invokestatic  #117                // Method vectorAdd:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
       5: areturn

  public static final java.util.List access$multiply(java.util.List, java.util.List);
    Code:
       0: aload_0
       1: aload_1
       2: invokestatic  #120                // Method multiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
       5: areturn
}

Compiled from "Day19.kt"
public final class org.aoc2021.Day19 {
  public static final org.aoc2021.Day19 INSTANCE;

  private static final java.util.List<java.util.List<java.lang.Integer>> identityMatrix;

  private static final java.util.List<java.util.List<java.lang.Integer>> xRotationMatrix;

  private static final java.util.List<java.util.List<java.lang.Integer>> yRotationMatrix;

  private static final java.util.List<java.util.List<java.lang.Integer>> zRotationMatrix;

  private static final java.util.List<java.util.List<java.util.List<java.lang.Integer>>> all3DRotationMatrices;

  private org.aoc2021.Day19();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  private final kotlin.Pair<java.lang.Integer, java.lang.Integer> solve(java.util.List<java.lang.String>);
    Code:
       0: aload_0
       1: aload_1
       2: invokespecial #17                 // Method parseLines:(Ljava/util/List;)Ljava/util/List;
       5: astore_2
       6: aload_0
       7: aload_2
       8: invokespecial #21                 // Method findScanners:(Ljava/util/List;)Ljava/util/Map;
      11: astore_3
      12: aload_0
      13: aload_2
      14: aload_3
      15: invokespecial #25                 // Method countBeacons:(Ljava/util/List;Ljava/util/Map;)I
      18: istore        4
      20: aload_3
      21: invokeinterface #31,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
      26: checkcast     #33                 // class java/lang/Iterable
      29: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      34: astore        6
      36: aload         6
      38: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      43: ifne          54
      46: new           #45                 // class java/util/NoSuchElementException
      49: dup
      50: invokespecial #46                 // Method java/util/NoSuchElementException."<init>":()V
      53: athrow
      54: aload         6
      56: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      61: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
      64: astore        7
      66: iconst_0
      67: istore        8
      69: aload_3
      70: invokeinterface #31,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
      75: checkcast     #33                 // class java/lang/Iterable
      78: astore        9
      80: iconst_0
      81: istore        10
      83: aload         9
      85: astore        11
      87: new           #54                 // class java/util/ArrayList
      90: dup
      91: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
      94: checkcast     #57                 // class java/util/Collection
      97: astore        12
      99: iconst_0
     100: istore        13
     102: aload         11
     104: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     109: astore        14
     111: aload         14
     113: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     118: ifeq          168
     121: aload         14
     123: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     128: astore        15
     130: aload         15
     132: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     135: astore        16
     137: iconst_0
     138: istore        17
     140: aload         16
     142: aload         7
     144: if_acmpeq     151
     147: iconst_1
     148: goto          152
     151: iconst_0
     152: ifeq          111
     155: aload         12
     157: aload         15
     159: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     164: pop
     165: goto          111
     168: aload         12
     170: checkcast     #63                 // class java/util/List
     173: nop
     174: checkcast     #33                 // class java/lang/Iterable
     177: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     182: astore        10
     184: aload         10
     186: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     191: ifne          202
     194: new           #45                 // class java/util/NoSuchElementException
     197: dup
     198: invokespecial #46                 // Method java/util/NoSuchElementException."<init>":()V
     201: athrow
     202: aload         10
     204: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     209: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     212: astore        11
     214: iconst_0
     215: istore        12
     217: aload         7
     219: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     222: aload         11
     224: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     227: invokestatic  #73                 // Method org/aoc2021/Day19Kt.access$vectorSubtract:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     230: checkcast     #33                 // class java/lang/Iterable
     233: astore        13
     235: iconst_0
     236: istore        14
     238: aload         13
     240: astore        15
     242: new           #54                 // class java/util/ArrayList
     245: dup
     246: aload         13
     248: bipush        10
     250: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     253: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     256: checkcast     #57                 // class java/util/Collection
     259: astore        16
     261: iconst_0
     262: istore        17
     264: aload         15
     266: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     271: astore        18
     273: aload         18
     275: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     280: ifeq          330
     283: aload         18
     285: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     290: astore        19
     292: aload         16
     294: aload         19
     296: checkcast     #84                 // class java/lang/Number
     299: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     302: istore        20
     304: astore        21
     306: iconst_0
     307: istore        22
     309: iload         20
     311: invokestatic  #94                 // Method java/lang/Math.abs:(I)I
     314: nop
     315: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     318: aload         21
     320: swap
     321: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     326: pop
     327: goto          273
     330: aload         16
     332: checkcast     #63                 // class java/util/List
     335: nop
     336: checkcast     #33                 // class java/lang/Iterable
     339: invokestatic  #104                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     342: istore        11
     344: aload         10
     346: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     351: ifeq          510
     354: aload         10
     356: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     361: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     364: astore        12
     366: iconst_0
     367: istore        13
     369: aload         7
     371: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     374: aload         12
     376: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     379: invokestatic  #73                 // Method org/aoc2021/Day19Kt.access$vectorSubtract:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     382: checkcast     #33                 // class java/lang/Iterable
     385: astore        14
     387: iconst_0
     388: istore        15
     390: aload         14
     392: astore        16
     394: new           #54                 // class java/util/ArrayList
     397: dup
     398: aload         14
     400: bipush        10
     402: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     405: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     408: checkcast     #57                 // class java/util/Collection
     411: astore        17
     413: iconst_0
     414: istore        18
     416: aload         16
     418: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     423: astore        19
     425: aload         19
     427: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     432: ifeq          482
     435: aload         19
     437: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     442: astore        20
     444: aload         17
     446: aload         20
     448: checkcast     #84                 // class java/lang/Number
     451: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     454: istore        21
     456: astore        22
     458: iconst_0
     459: istore        23
     461: iload         21
     463: invokestatic  #94                 // Method java/lang/Math.abs:(I)I
     466: nop
     467: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     470: aload         22
     472: swap
     473: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     478: pop
     479: goto          425
     482: aload         17
     484: checkcast     #63                 // class java/util/List
     487: nop
     488: checkcast     #33                 // class java/lang/Iterable
     491: invokestatic  #104                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     494: istore        12
     496: iload         11
     498: iload         12
     500: if_icmpge     344
     503: iload         12
     505: istore        11
     507: goto          344
     510: iload         11
     512: nop
     513: istore        7
     515: aload         6
     517: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     522: ifeq          1000
     525: aload         6
     527: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     532: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     535: astore        8
     537: iconst_0
     538: istore        9
     540: aload_3
     541: invokeinterface #31,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     546: checkcast     #33                 // class java/lang/Iterable
     549: astore        10
     551: iconst_0
     552: istore        11
     554: aload         10
     556: astore        12
     558: new           #54                 // class java/util/ArrayList
     561: dup
     562: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
     565: checkcast     #57                 // class java/util/Collection
     568: astore        13
     570: iconst_0
     571: istore        14
     573: aload         12
     575: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     580: astore        15
     582: aload         15
     584: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     589: ifeq          639
     592: aload         15
     594: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     599: astore        16
     601: aload         16
     603: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     606: astore        17
     608: iconst_0
     609: istore        18
     611: aload         17
     613: aload         8
     615: if_acmpeq     622
     618: iconst_1
     619: goto          623
     622: iconst_0
     623: ifeq          582
     626: aload         13
     628: aload         16
     630: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     635: pop
     636: goto          582
     639: aload         13
     641: checkcast     #63                 // class java/util/List
     644: nop
     645: checkcast     #33                 // class java/lang/Iterable
     648: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     653: astore        11
     655: aload         11
     657: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     662: ifne          673
     665: new           #45                 // class java/util/NoSuchElementException
     668: dup
     669: invokespecial #46                 // Method java/util/NoSuchElementException."<init>":()V
     672: athrow
     673: aload         11
     675: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     680: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     683: astore        12
     685: iconst_0
     686: istore        13
     688: aload         8
     690: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     693: aload         12
     695: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     698: invokestatic  #73                 // Method org/aoc2021/Day19Kt.access$vectorSubtract:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     701: checkcast     #33                 // class java/lang/Iterable
     704: astore        14
     706: iconst_0
     707: istore        15
     709: aload         14
     711: astore        16
     713: new           #54                 // class java/util/ArrayList
     716: dup
     717: aload         14
     719: bipush        10
     721: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     724: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     727: checkcast     #57                 // class java/util/Collection
     730: astore        17
     732: iconst_0
     733: istore        18
     735: aload         16
     737: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     742: astore        19
     744: aload         19
     746: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     751: ifeq          801
     754: aload         19
     756: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     761: astore        20
     763: aload         17
     765: aload         20
     767: checkcast     #84                 // class java/lang/Number
     770: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     773: istore        21
     775: astore        22
     777: iconst_0
     778: istore        23
     780: iload         21
     782: invokestatic  #94                 // Method java/lang/Math.abs:(I)I
     785: nop
     786: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     789: aload         22
     791: swap
     792: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     797: pop
     798: goto          744
     801: aload         17
     803: checkcast     #63                 // class java/util/List
     806: nop
     807: checkcast     #33                 // class java/lang/Iterable
     810: invokestatic  #104                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     813: istore        12
     815: aload         11
     817: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     822: ifeq          981
     825: aload         11
     827: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     832: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     835: astore        13
     837: iconst_0
     838: istore        14
     840: aload         8
     842: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     845: aload         13
     847: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     850: invokestatic  #73                 // Method org/aoc2021/Day19Kt.access$vectorSubtract:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     853: checkcast     #33                 // class java/lang/Iterable
     856: astore        15
     858: iconst_0
     859: istore        16
     861: aload         15
     863: astore        17
     865: new           #54                 // class java/util/ArrayList
     868: dup
     869: aload         15
     871: bipush        10
     873: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     876: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     879: checkcast     #57                 // class java/util/Collection
     882: astore        18
     884: iconst_0
     885: istore        19
     887: aload         17
     889: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     894: astore        20
     896: aload         20
     898: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     903: ifeq          953
     906: aload         20
     908: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     913: astore        21
     915: aload         18
     917: aload         21
     919: checkcast     #84                 // class java/lang/Number
     922: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     925: istore        22
     927: astore        23
     929: iconst_0
     930: istore        24
     932: iload         22
     934: invokestatic  #94                 // Method java/lang/Math.abs:(I)I
     937: nop
     938: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     941: aload         23
     943: swap
     944: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     949: pop
     950: goto          896
     953: aload         18
     955: checkcast     #63                 // class java/util/List
     958: nop
     959: checkcast     #33                 // class java/lang/Iterable
     962: invokestatic  #104                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     965: istore        13
     967: iload         12
     969: iload         13
     971: if_icmpge     815
     974: iload         13
     976: istore        12
     978: goto          815
     981: iload         12
     983: nop
     984: istore        8
     986: iload         7
     988: iload         8
     990: if_icmpge     515
     993: iload         8
     995: istore        7
     997: goto          515
    1000: iload         7
    1002: istore        5
    1004: iload         4
    1006: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1009: iload         5
    1011: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1014: invokestatic  #110                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
    1017: areturn

  private final java.util.List<java.util.List<java.util.List<java.lang.Integer>>> parseLines(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: invokeinterface #145,  1          // InterfaceMethod java/util/List.isEmpty:()Z
       6: ifeq          13
       9: invokestatic  #148                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
      12: areturn
      13: aload_1
      14: checkcast     #33                 // class java/lang/Iterable
      17: iconst_1
      18: invokestatic  #152                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
      21: checkcast     #33                 // class java/lang/Iterable
      24: astore_3
      25: nop
      26: iconst_0
      27: istore        4
      29: new           #54                 // class java/util/ArrayList
      32: dup
      33: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
      36: astore        5
      38: aload_3
      39: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      44: astore        6
      46: aload         6
      48: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      53: ifeq          109
      56: aload         6
      58: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      63: astore        7
      65: aload         7
      67: checkcast     #154                // class java/lang/String
      70: astore        8
      72: iconst_0
      73: istore        9
      75: aload         8
      77: checkcast     #156                // class java/lang/CharSequence
      80: invokestatic  #162                // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
      83: ifne          90
      86: iconst_1
      87: goto          91
      90: iconst_0
      91: nop
      92: ifne          98
      95: goto          109
      98: aload         5
     100: aload         7
     102: invokevirtual #163                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     105: pop
     106: goto          46
     109: aload         5
     111: checkcast     #63                 // class java/util/List
     114: checkcast     #33                 // class java/lang/Iterable
     117: astore_3
     118: nop
     119: iconst_0
     120: istore        4
     122: aload_3
     123: astore        5
     125: new           #54                 // class java/util/ArrayList
     128: dup
     129: aload_3
     130: bipush        10
     132: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     135: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     138: checkcast     #57                 // class java/util/Collection
     141: astore        6
     143: iconst_0
     144: istore        7
     146: aload         5
     148: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     153: astore        8
     155: aload         8
     157: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     162: ifeq          331
     165: aload         8
     167: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     172: astore        9
     174: aload         6
     176: aload         9
     178: checkcast     #154                // class java/lang/String
     181: astore        10
     183: astore        22
     185: iconst_0
     186: istore        11
     188: aload         10
     190: checkcast     #156                // class java/lang/CharSequence
     193: iconst_1
     194: anewarray     #154                // class java/lang/String
     197: astore        12
     199: aload         12
     201: iconst_0
     202: ldc           #165                // String ,
     204: aastore
     205: aload         12
     207: iconst_0
     208: iconst_0
     209: bipush        6
     211: aconst_null
     212: invokestatic  #169                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     215: checkcast     #33                 // class java/lang/Iterable
     218: astore        12
     220: iconst_0
     221: istore        13
     223: aload         12
     225: astore        14
     227: new           #54                 // class java/util/ArrayList
     230: dup
     231: aload         12
     233: bipush        10
     235: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     238: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     241: checkcast     #57                 // class java/util/Collection
     244: astore        15
     246: iconst_0
     247: istore        16
     249: aload         14
     251: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     256: astore        17
     258: aload         17
     260: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     265: ifeq          312
     268: aload         17
     270: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     275: astore        18
     277: aload         15
     279: aload         18
     281: checkcast     #154                // class java/lang/String
     284: astore        19
     286: astore        20
     288: iconst_0
     289: istore        21
     291: aload         19
     293: invokestatic  #173                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     296: nop
     297: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     300: aload         20
     302: swap
     303: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     308: pop
     309: goto          258
     312: aload         15
     314: checkcast     #63                 // class java/util/List
     317: nop
     318: nop
     319: aload         22
     321: swap
     322: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     327: pop
     328: goto          155
     331: aload         6
     333: checkcast     #63                 // class java/util/List
     336: nop
     337: astore_2
     338: aload_2
     339: invokestatic  #177                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     342: checkcast     #57                 // class java/util/Collection
     345: aload_0
     346: aload_1
     347: checkcast     #33                 // class java/lang/Iterable
     350: astore_3
     351: astore        23
     353: astore        22
     355: iconst_0
     356: istore        4
     358: iconst_0
     359: istore        5
     361: new           #54                 // class java/util/ArrayList
     364: dup
     365: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
     368: astore        6
     370: aload_3
     371: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     376: astore        7
     378: aload         7
     380: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     385: ifeq          457
     388: aload         7
     390: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     395: astore        8
     397: iload         5
     399: ifeq          413
     402: aload         6
     404: aload         8
     406: invokevirtual #163                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     409: pop
     410: goto          378
     413: aload         8
     415: checkcast     #154                // class java/lang/String
     418: astore        9
     420: iconst_0
     421: istore        10
     423: aload         9
     425: checkcast     #156                // class java/lang/CharSequence
     428: invokestatic  #162                // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
     431: ifne          438
     434: iconst_1
     435: goto          439
     438: iconst_0
     439: nop
     440: ifne          378
     443: aload         6
     445: aload         8
     447: invokevirtual #163                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     450: pop
     451: iconst_1
     452: istore        5
     454: goto          378
     457: aload         6
     459: checkcast     #63                 // class java/util/List
     462: astore        24
     464: aload         22
     466: aload         23
     468: aload         24
     470: checkcast     #33                 // class java/lang/Iterable
     473: iconst_1
     474: invokestatic  #152                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
     477: invokespecial #17                 // Method parseLines:(Ljava/util/List;)Ljava/util/List;
     480: checkcast     #33                 // class java/lang/Iterable
     483: invokestatic  #181                // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
     486: areturn

  private final java.util.Map<java.lang.Integer, org.aoc2021.Day19$ScannerLocation> findScanners(java.util.List<? extends java.util.List<? extends java.util.List<java.lang.Integer>>>);
    Code:
       0: iconst_1
       1: anewarray     #200                // class kotlin/Pair
       4: astore_3
       5: aload_3
       6: iconst_0
       7: iconst_0
       8: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      11: new           #52                 // class org/aoc2021/Day19$ScannerLocation
      14: dup
      15: iconst_3
      16: anewarray     #96                 // class java/lang/Integer
      19: astore        4
      21: aload         4
      23: iconst_0
      24: iconst_0
      25: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      28: aastore
      29: aload         4
      31: iconst_1
      32: iconst_0
      33: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      36: aastore
      37: aload         4
      39: iconst_2
      40: iconst_0
      41: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      44: aastore
      45: aload         4
      47: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      50: getstatic     #206                // Field identityMatrix:Ljava/util/List;
      53: invokespecial #209                // Method org/aoc2021/Day19$ScannerLocation."<init>":(Ljava/util/List;Ljava/util/List;)V
      56: invokestatic  #110                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      59: aastore
      60: aload_3
      61: invokestatic  #215                // Method kotlin/collections/MapsKt.mutableMapOf:([Lkotlin/Pair;)Ljava/util/Map;
      64: astore_2
      65: aload_1
      66: checkcast     #33                 // class java/lang/Iterable
      69: astore        4
      71: iconst_0
      72: istore        5
      74: aload         4
      76: astore        6
      78: new           #54                 // class java/util/ArrayList
      81: dup
      82: aload         4
      84: bipush        10
      86: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      89: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
      92: checkcast     #57                 // class java/util/Collection
      95: astore        7
      97: iconst_0
      98: istore        8
     100: iconst_0
     101: istore        9
     103: aload         6
     105: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     110: astore        10
     112: aload         10
     114: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     119: ifeq          615
     122: aload         10
     124: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     129: astore        11
     131: aload         7
     133: iload         9
     135: iinc          9, 1
     138: istore        12
     140: iload         12
     142: ifge          148
     145: invokestatic  #218                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     148: iload         12
     150: aload         11
     152: checkcast     #63                 // class java/util/List
     155: astore        13
     157: istore        14
     159: astore        48
     161: iconst_0
     162: istore        15
     164: iload         14
     166: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     169: aload         13
     171: checkcast     #33                 // class java/lang/Iterable
     174: astore        16
     176: astore        17
     178: iconst_0
     179: istore        18
     181: aload         16
     183: astore        19
     185: new           #54                 // class java/util/ArrayList
     188: dup
     189: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
     192: checkcast     #57                 // class java/util/Collection
     195: astore        20
     197: iconst_0
     198: istore        21
     200: aload         19
     202: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     207: astore        22
     209: aload         22
     211: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     216: ifeq          590
     219: aload         22
     221: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     226: astore        23
     228: aload         23
     230: checkcast     #63                 // class java/util/List
     233: astore        24
     235: iconst_0
     236: istore        25
     238: getstatic     #221                // Field all3DRotationMatrices:Ljava/util/List;
     241: checkcast     #33                 // class java/lang/Iterable
     244: astore        26
     246: iconst_0
     247: istore        27
     249: aload         26
     251: astore        28
     253: new           #54                 // class java/util/ArrayList
     256: dup
     257: aload         26
     259: bipush        10
     261: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     264: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     267: checkcast     #57                 // class java/util/Collection
     270: astore        29
     272: iconst_0
     273: istore        30
     275: aload         28
     277: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     282: astore        31
     284: aload         31
     286: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     291: ifeq          567
     294: aload         31
     296: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     301: astore        32
     303: aload         29
     305: aload         32
     307: checkcast     #63                 // class java/util/List
     310: astore        33
     312: astore        34
     314: iconst_0
     315: istore        35
     317: aload         24
     319: aload         33
     321: invokestatic  #224                // Method org/aoc2021/Day19Kt.access$matrixMultiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     324: astore        36
     326: aload         13
     328: checkcast     #33                 // class java/lang/Iterable
     331: astore        37
     333: iconst_0
     334: istore        38
     336: aload         37
     338: astore        39
     340: new           #54                 // class java/util/ArrayList
     343: dup
     344: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
     347: checkcast     #57                 // class java/util/Collection
     350: astore        40
     352: iconst_0
     353: istore        41
     355: aload         39
     357: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     362: astore        42
     364: aload         42
     366: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     371: ifeq          421
     374: aload         42
     376: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     381: astore        43
     383: aload         43
     385: checkcast     #63                 // class java/util/List
     388: astore        44
     390: iconst_0
     391: istore        45
     393: aload         44
     395: aload         24
     397: if_acmpeq     404
     400: iconst_1
     401: goto          405
     404: iconst_0
     405: ifeq          364
     408: aload         40
     410: aload         43
     412: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     417: pop
     418: goto          364
     421: aload         40
     423: checkcast     #63                 // class java/util/List
     426: nop
     427: checkcast     #33                 // class java/lang/Iterable
     430: astore        37
     432: nop
     433: iconst_0
     434: istore        38
     436: aload         37
     438: astore        39
     440: new           #54                 // class java/util/ArrayList
     443: dup
     444: aload         37
     446: bipush        10
     448: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     451: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     454: checkcast     #57                 // class java/util/Collection
     457: astore        40
     459: iconst_0
     460: istore        41
     462: aload         39
     464: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     469: astore        42
     471: aload         42
     473: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     478: ifeq          528
     481: aload         42
     483: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     488: astore        43
     490: aload         40
     492: aload         43
     494: checkcast     #63                 // class java/util/List
     497: astore        44
     499: astore        46
     501: iconst_0
     502: istore        45
     504: aload         44
     506: aload         33
     508: invokestatic  #224                // Method org/aoc2021/Day19Kt.access$matrixMultiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     511: aload         36
     513: invokestatic  #73                 // Method org/aoc2021/Day19Kt.access$vectorSubtract:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     516: aload         46
     518: swap
     519: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     524: pop
     525: goto          471
     528: aload         40
     530: checkcast     #63                 // class java/util/List
     533: nop
     534: astore        47
     536: new           #226                // class kotlin/Triple
     539: dup
     540: aload         33
     542: aload         36
     544: aload         47
     546: checkcast     #33                 // class java/lang/Iterable
     549: invokestatic  #230                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     552: invokespecial #233                // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
     555: aload         34
     557: swap
     558: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     563: pop
     564: goto          284
     567: aload         29
     569: checkcast     #63                 // class java/util/List
     572: nop
     573: checkcast     #33                 // class java/lang/Iterable
     576: nop
     577: astore        24
     579: aload         20
     581: aload         24
     583: invokestatic  #237                // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
     586: pop
     587: goto          209
     590: aload         20
     592: checkcast     #63                 // class java/util/List
     595: nop
     596: aload         17
     598: swap
     599: invokestatic  #110                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     602: nop
     603: aload         48
     605: swap
     606: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     611: pop
     612: goto          112
     615: aload         7
     617: checkcast     #63                 // class java/util/List
     620: nop
     621: checkcast     #33                 // class java/lang/Iterable
     624: invokestatic  #241                // Method kotlin/collections/MapsKt.toMap:(Ljava/lang/Iterable;)Ljava/util/Map;
     627: astore_3
     628: aload_2
     629: invokeinterface #244,  1          // InterfaceMethod java/util/Map.size:()I
     634: aload_1
     635: invokeinterface #245,  1          // InterfaceMethod java/util/List.size:()I
     640: if_icmpge     1369
     643: aload_1
     644: checkcast     #57                 // class java/util/Collection
     647: invokestatic  #249                // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
     650: checkcast     #33                 // class java/lang/Iterable
     653: astore        5
     655: iconst_0
     656: istore        6
     658: aload         5
     660: astore        7
     662: new           #54                 // class java/util/ArrayList
     665: dup
     666: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
     669: checkcast     #57                 // class java/util/Collection
     672: astore        8
     674: iconst_0
     675: istore        9
     677: aload         7
     679: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     684: astore        10
     686: aload         10
     688: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     693: ifeq          745
     696: aload         10
     698: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     703: astore        11
     705: aload         11
     707: checkcast     #84                 // class java/lang/Number
     710: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     713: istore        12
     715: iconst_0
     716: istore        13
     718: aload_2
     719: iload         12
     721: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     724: invokeinterface #252,  2          // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z
     729: ifeq          686
     732: aload         8
     734: aload         11
     736: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     741: pop
     742: goto          686
     745: aload         8
     747: checkcast     #63                 // class java/util/List
     750: nop
     751: astore        4
     753: aload         4
     755: checkcast     #33                 // class java/lang/Iterable
     758: astore        5
     760: iconst_0
     761: istore        6
     763: aload         5
     765: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     770: astore        7
     772: aload         7
     774: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     779: ifeq          1365
     782: aload         7
     784: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     789: astore        8
     791: aload         8
     793: checkcast     #84                 // class java/lang/Number
     796: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     799: istore        9
     801: iconst_0
     802: istore        10
     804: aload_2
     805: iload         9
     807: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     810: invokeinterface #256,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     815: dup
     816: invokestatic  #262                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     819: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
     822: astore        11
     824: aload_3
     825: iload         9
     827: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     830: invokeinterface #256,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     835: dup
     836: invokestatic  #262                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     839: checkcast     #33                 // class java/lang/Iterable
     842: astore        12
     844: nop
     845: iconst_0
     846: istore        13
     848: aload         12
     850: astore        14
     852: new           #54                 // class java/util/ArrayList
     855: dup
     856: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
     859: checkcast     #57                 // class java/util/Collection
     862: astore        15
     864: iconst_0
     865: istore        16
     867: aload         14
     869: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     874: astore        17
     876: aload         17
     878: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     883: ifeq          941
     886: aload         17
     888: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     893: astore        18
     895: aload         18
     897: checkcast     #226                // class kotlin/Triple
     900: astore        19
     902: iconst_0
     903: istore        20
     905: aload         19
     907: invokevirtual #265                // Method kotlin/Triple.component1:()Ljava/lang/Object;
     910: checkcast     #63                 // class java/util/List
     913: astore        21
     915: aload         21
     917: aload         11
     919: invokevirtual #268                // Method org/aoc2021/Day19$ScannerLocation.getRotation:()Ljava/util/List;
     922: invokestatic  #272                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     925: ifeq          876
     928: aload         15
     930: aload         18
     932: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     937: pop
     938: goto          876
     941: aload         15
     943: checkcast     #63                 // class java/util/List
     946: nop
     947: astore        22
     949: aload_1
     950: checkcast     #57                 // class java/util/Collection
     953: invokestatic  #249                // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
     956: checkcast     #33                 // class java/lang/Iterable
     959: astore        13
     961: iconst_0
     962: istore        14
     964: aload         13
     966: astore        15
     968: new           #54                 // class java/util/ArrayList
     971: dup
     972: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
     975: checkcast     #57                 // class java/util/Collection
     978: astore        16
     980: iconst_0
     981: istore        17
     983: aload         15
     985: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     990: astore        18
     992: aload         18
     994: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     999: ifeq          1059
    1002: aload         18
    1004: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1009: astore        19
    1011: aload         19
    1013: checkcast     #84                 // class java/lang/Number
    1016: invokevirtual #88                 // Method java/lang/Number.intValue:()I
    1019: istore        20
    1021: iconst_0
    1022: istore        21
    1024: aload_2
    1025: iload         20
    1027: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1030: invokeinterface #252,  2          // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z
    1035: ifne          1042
    1038: iconst_1
    1039: goto          1043
    1042: iconst_0
    1043: ifeq          992
    1046: aload         16
    1048: aload         19
    1050: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1055: pop
    1056: goto          992
    1059: aload         16
    1061: checkcast     #63                 // class java/util/List
    1064: nop
    1065: astore        12
    1067: aload         12
    1069: checkcast     #33                 // class java/lang/Iterable
    1072: astore        13
    1074: iconst_0
    1075: istore        14
    1077: aload         13
    1079: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1084: astore        15
    1086: aload         15
    1088: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1093: ifeq          1359
    1096: aload         15
    1098: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1103: astore        16
    1105: aload         16
    1107: checkcast     #84                 // class java/lang/Number
    1110: invokevirtual #88                 // Method java/lang/Number.intValue:()I
    1113: istore        17
    1115: iconst_0
    1116: istore        18
    1118: aload_3
    1119: iload         17
    1121: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1124: invokeinterface #256,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
    1129: dup
    1130: invokestatic  #262                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
    1133: checkcast     #63                 // class java/util/List
    1136: invokeinterface #273,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
    1141: astore        19
    1143: aload         19
    1145: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1150: ifeq          1354
    1153: aload         19
    1155: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1160: checkcast     #226                // class kotlin/Triple
    1163: astore        20
    1165: aload         20
    1167: invokevirtual #265                // Method kotlin/Triple.component1:()Ljava/lang/Object;
    1170: checkcast     #63                 // class java/util/List
    1173: astore        21
    1175: aload         20
    1177: invokevirtual #276                // Method kotlin/Triple.component2:()Ljava/lang/Object;
    1180: checkcast     #63                 // class java/util/List
    1183: astore        23
    1185: aload         20
    1187: invokevirtual #279                // Method kotlin/Triple.component3:()Ljava/lang/Object;
    1190: checkcast     #281                // class java/util/Set
    1193: astore        24
    1195: aload         22
    1197: checkcast     #33                 // class java/lang/Iterable
    1200: astore        25
    1202: aload         25
    1204: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1209: astore        26
    1211: aload         26
    1213: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1218: ifeq          1286
    1221: aload         26
    1223: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1228: astore        27
    1230: aload         27
    1232: checkcast     #226                // class kotlin/Triple
    1235: astore        28
    1237: iconst_0
    1238: istore        29
    1240: aload         28
    1242: invokevirtual #279                // Method kotlin/Triple.component3:()Ljava/lang/Object;
    1245: checkcast     #281                // class java/util/Set
    1248: astore        30
    1250: aload         30
    1252: checkcast     #33                 // class java/lang/Iterable
    1255: aload         24
    1257: checkcast     #33                 // class java/lang/Iterable
    1260: invokestatic  #285                // Method kotlin/collections/CollectionsKt.intersect:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Set;
    1263: invokeinterface #286,  1          // InterfaceMethod java/util/Set.size:()I
    1268: bipush        11
    1270: if_icmplt     1277
    1273: iconst_1
    1274: goto          1278
    1277: iconst_0
    1278: ifeq          1211
    1281: aload         27
    1283: goto          1287
    1286: aconst_null
    1287: checkcast     #226                // class kotlin/Triple
    1290: astore        31
    1292: aload         31
    1294: ifnull        1143
    1297: aload         31
    1299: invokevirtual #276                // Method kotlin/Triple.component2:()Ljava/lang/Object;
    1302: checkcast     #63                 // class java/util/List
    1305: astore        32
    1307: aload         11
    1309: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
    1312: aload         32
    1314: invokestatic  #289                // Method org/aoc2021/Day19Kt.access$vectorAdd:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    1317: aload         23
    1319: invokestatic  #73                 // Method org/aoc2021/Day19Kt.access$vectorSubtract:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    1322: astore        25
    1324: iload         17
    1326: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1329: astore        27
    1331: aload_2
    1332: aload         27
    1334: new           #52                 // class org/aoc2021/Day19$ScannerLocation
    1337: dup
    1338: aload         25
    1340: aload         21
    1342: invokespecial #209                // Method org/aoc2021/Day19$ScannerLocation."<init>":(Ljava/util/List;Ljava/util/List;)V
    1345: invokeinterface #293,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1350: pop
    1351: goto          1354
    1354: nop
    1355: nop
    1356: goto          1086
    1359: nop
    1360: nop
    1361: nop
    1362: goto          772
    1365: nop
    1366: goto          628
    1369: aload_2
    1370: invokestatic  #296                // Method kotlin/collections/MapsKt.toMap:(Ljava/util/Map;)Ljava/util/Map;
    1373: areturn

  private final int countBeacons(java.util.List<? extends java.util.List<? extends java.util.List<java.lang.Integer>>>, java.util.Map<java.lang.Integer, org.aoc2021.Day19$ScannerLocation>);
    Code:
       0: new           #345                // class java/util/LinkedHashSet
       3: dup
       4: invokespecial #346                // Method java/util/LinkedHashSet."<init>":()V
       7: checkcast     #281                // class java/util/Set
      10: astore_3
      11: aload_1
      12: checkcast     #33                 // class java/lang/Iterable
      15: astore        4
      17: iconst_0
      18: istore        5
      20: iconst_0
      21: istore        6
      23: aload         4
      25: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      30: astore        7
      32: aload         7
      34: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      39: ifeq          234
      42: aload         7
      44: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      49: astore        8
      51: iload         6
      53: iinc          6, 1
      56: istore        9
      58: iload         9
      60: ifge          66
      63: invokestatic  #218                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
      66: iload         9
      68: aload         8
      70: checkcast     #63                 // class java/util/List
      73: astore        10
      75: istore        11
      77: iconst_0
      78: istore        12
      80: aload_2
      81: iload         11
      83: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      86: invokeinterface #256,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      91: dup
      92: invokestatic  #262                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      95: checkcast     #52                 // class org/aoc2021/Day19$ScannerLocation
      98: astore        13
     100: aload_3
     101: aload         10
     103: checkcast     #33                 // class java/lang/Iterable
     106: astore        14
     108: astore        15
     110: iconst_0
     111: istore        16
     113: aload         14
     115: astore        17
     117: new           #54                 // class java/util/ArrayList
     120: dup
     121: aload         14
     123: bipush        10
     125: invokestatic  #79                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     128: invokespecial #82                 // Method java/util/ArrayList."<init>":(I)V
     131: checkcast     #57                 // class java/util/Collection
     134: astore        18
     136: iconst_0
     137: istore        19
     139: aload         17
     141: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     146: astore        20
     148: aload         20
     150: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     155: ifeq          211
     158: aload         20
     160: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     165: astore        21
     167: aload         18
     169: aload         21
     171: checkcast     #63                 // class java/util/List
     174: astore        22
     176: astore        23
     178: iconst_0
     179: istore        24
     181: aload         22
     183: aload         13
     185: invokevirtual #268                // Method org/aoc2021/Day19$ScannerLocation.getRotation:()Ljava/util/List;
     188: invokestatic  #224                // Method org/aoc2021/Day19Kt.access$matrixMultiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     191: aload         13
     193: invokevirtual #67                 // Method org/aoc2021/Day19$ScannerLocation.getCoordinates:()Ljava/util/List;
     196: invokestatic  #289                // Method org/aoc2021/Day19Kt.access$vectorAdd:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     199: aload         23
     201: swap
     202: invokeinterface #61,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     207: pop
     208: goto          148
     211: aload         18
     213: checkcast     #63                 // class java/util/List
     216: nop
     217: aload         15
     219: swap
     220: checkcast     #57                 // class java/util/Collection
     223: invokeinterface #349,  2          // InterfaceMethod java/util/Set.addAll:(Ljava/util/Collection;)Z
     228: pop
     229: nop
     230: nop
     231: goto          32
     234: nop
     235: aload_3
     236: invokeinterface #286,  1          // InterfaceMethod java/util/Set.size:()I
     241: ireturn

  private final java.util.List<java.util.List<java.util.List<java.lang.Integer>>> generateRotationMatrices();
    Code:
       0: new           #54                 // class java/util/ArrayList
       3: dup
       4: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
       7: checkcast     #63                 // class java/util/List
      10: astore_1
      11: aconst_null
      12: astore_2
      13: getstatic     #206                // Field identityMatrix:Ljava/util/List;
      16: astore_2
      17: iconst_3
      18: anewarray     #200                // class kotlin/Pair
      21: astore_3
      22: aload_3
      23: iconst_0
      24: getstatic     #361                // Field zRotationMatrix:Ljava/util/List;
      27: getstatic     #364                // Field yRotationMatrix:Ljava/util/List;
      30: invokestatic  #110                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      33: aastore
      34: aload_3
      35: iconst_1
      36: getstatic     #364                // Field yRotationMatrix:Ljava/util/List;
      39: getstatic     #367                // Field xRotationMatrix:Ljava/util/List;
      42: invokestatic  #110                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      45: aastore
      46: aload_3
      47: iconst_2
      48: getstatic     #367                // Field xRotationMatrix:Ljava/util/List;
      51: getstatic     #361                // Field zRotationMatrix:Ljava/util/List;
      54: invokestatic  #110                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      57: aastore
      58: aload_3
      59: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      62: checkcast     #33                 // class java/lang/Iterable
      65: astore_3
      66: nop
      67: iconst_0
      68: istore        4
      70: aload_3
      71: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      76: astore        5
      78: aload         5
      80: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      85: ifeq          189
      88: aload         5
      90: invokeinterface #50,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      95: astore        6
      97: aload         6
      99: checkcast     #200                // class kotlin/Pair
     102: astore        7
     104: iconst_0
     105: istore        8
     107: aload         7
     109: invokevirtual #368                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     112: checkcast     #63                 // class java/util/List
     115: astore        9
     117: aload         7
     119: invokevirtual #369                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     122: checkcast     #63                 // class java/util/List
     125: astore        10
     127: aload_2
     128: aload         10
     130: invokestatic  #372                // Method org/aoc2021/Day19Kt.access$multiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     133: astore_2
     134: aload_1
     135: getstatic     #375                // Field INSTANCE:Lorg/aoc2021/Day19;
     138: aload_2
     139: aload         9
     141: invokespecial #378                // Method generateRotationMatricesForAxis:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     144: checkcast     #57                 // class java/util/Collection
     147: invokeinterface #379,  2          // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
     152: pop
     153: aload_2
     154: aload         10
     156: invokestatic  #372                // Method org/aoc2021/Day19Kt.access$multiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     159: aload         10
     161: invokestatic  #372                // Method org/aoc2021/Day19Kt.access$multiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     164: astore_2
     165: aload_1
     166: getstatic     #375                // Field INSTANCE:Lorg/aoc2021/Day19;
     169: aload_2
     170: aload         9
     172: invokespecial #378                // Method generateRotationMatricesForAxis:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
     175: checkcast     #57                 // class java/util/Collection
     178: invokeinterface #379,  2          // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
     183: pop
     184: nop
     185: nop
     186: goto          78
     189: nop
     190: aload_1
     191: checkcast     #33                 // class java/lang/Iterable
     194: invokestatic  #383                // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     197: areturn

  private final java.util.List<java.util.List<java.util.List<java.lang.Integer>>> generateRotationMatricesForAxis(java.util.List<? extends java.util.List<java.lang.Integer>>, java.util.List<? extends java.util.List<java.lang.Integer>>);
    Code:
       0: new           #54                 // class java/util/ArrayList
       3: dup
       4: invokespecial #55                 // Method java/util/ArrayList."<init>":()V
       7: checkcast     #63                 // class java/util/List
      10: astore_3
      11: aconst_null
      12: astore        4
      14: aload_1
      15: astore        4
      17: new           #391                // class kotlin/ranges/IntRange
      20: dup
      21: iconst_1
      22: iconst_4
      23: invokespecial #394                // Method kotlin/ranges/IntRange."<init>":(II)V
      26: checkcast     #33                 // class java/lang/Iterable
      29: astore        5
      31: iconst_0
      32: istore        6
      34: aload         5
      36: invokeinterface #37,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      41: astore        7
      43: aload         7
      45: invokeinterface #43,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      50: ifeq          88
      53: aload         7
      55: checkcast     #396                // class kotlin/collections/IntIterator
      58: invokevirtual #399                // Method kotlin/collections/IntIterator.nextInt:()I
      61: istore        8
      63: iconst_0
      64: istore        9
      66: aload_3
      67: aload         4
      69: invokeinterface #400,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      74: pop
      75: aload         4
      77: aload_2
      78: invokestatic  #372                // Method org/aoc2021/Day19Kt.access$multiply:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
      81: astore        4
      83: nop
      84: nop
      85: goto          43
      88: nop
      89: aload_3
      90: checkcast     #33                 // class java/lang/Iterable
      93: invokestatic  #383                // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
      96: areturn

  public static final void main(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc_w         #410                // String args
       4: invokestatic  #414                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: ldc_w         #416                // String input19.txt
      10: iconst_0
      11: anewarray     #154                // class java/lang/String
      14: invokestatic  #422                // InterfaceMethod java/nio/file/Path.of:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
      17: getstatic     #428                // Field kotlin/text/Charsets.UTF_8:Ljava/nio/charset/Charset;
      20: invokestatic  #434                // Method java/nio/file/Files.readAllLines:(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/util/List;
      23: astore_1
      24: getstatic     #375                // Field INSTANCE:Lorg/aoc2021/Day19;
      27: aload_1
      28: invokestatic  #262                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      31: aload_1
      32: invokespecial #436                // Method solve:(Ljava/util/List;)Lkotlin/Pair;
      35: astore_2
      36: aload_2
      37: invokevirtual #368                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      40: checkcast     #84                 // class java/lang/Number
      43: invokevirtual #88                 // Method java/lang/Number.intValue:()I
      46: istore_3
      47: aload_2
      48: invokevirtual #369                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      51: checkcast     #84                 // class java/lang/Number
      54: invokevirtual #88                 // Method java/lang/Number.intValue:()I
      57: istore        4
      59: getstatic     #442                // Field java/lang/System.out:Ljava/io/PrintStream;
      62: iload_3
      63: invokevirtual #447                // Method java/io/PrintStream.println:(I)V
      66: getstatic     #442                // Field java/lang/System.out:Ljava/io/PrintStream;
      69: iload         4
      71: invokevirtual #447                // Method java/io/PrintStream.println:(I)V
      74: return

  static {};
    Code:
       0: new           #2                  // class org/aoc2021/Day19
       3: dup
       4: invokespecial #450                // Method "<init>":()V
       7: putstatic     #375                // Field INSTANCE:Lorg/aoc2021/Day19;
      10: iconst_3
      11: anewarray     #63                 // class java/util/List
      14: astore_0
      15: aload_0
      16: iconst_0
      17: iconst_3
      18: anewarray     #96                 // class java/lang/Integer
      21: astore_1
      22: aload_1
      23: iconst_0
      24: iconst_1
      25: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      28: aastore
      29: aload_1
      30: iconst_1
      31: iconst_0
      32: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: aastore
      36: aload_1
      37: iconst_2
      38: iconst_0
      39: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      42: aastore
      43: aload_1
      44: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      47: aastore
      48: aload_0
      49: iconst_1
      50: iconst_3
      51: anewarray     #96                 // class java/lang/Integer
      54: astore_1
      55: aload_1
      56: iconst_0
      57: iconst_0
      58: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      61: aastore
      62: aload_1
      63: iconst_1
      64: iconst_1
      65: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      68: aastore
      69: aload_1
      70: iconst_2
      71: iconst_0
      72: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      75: aastore
      76: aload_1
      77: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      80: aastore
      81: aload_0
      82: iconst_2
      83: iconst_3
      84: anewarray     #96                 // class java/lang/Integer
      87: astore_1
      88: aload_1
      89: iconst_0
      90: iconst_0
      91: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      94: aastore
      95: aload_1
      96: iconst_1
      97: iconst_0
      98: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     101: aastore
     102: aload_1
     103: iconst_2
     104: iconst_1
     105: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     108: aastore
     109: aload_1
     110: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     113: aastore
     114: aload_0
     115: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     118: putstatic     #206                // Field identityMatrix:Ljava/util/List;
     121: iconst_3
     122: anewarray     #63                 // class java/util/List
     125: astore_0
     126: aload_0
     127: iconst_0
     128: iconst_3
     129: anewarray     #96                 // class java/lang/Integer
     132: astore_1
     133: aload_1
     134: iconst_0
     135: iconst_1
     136: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     139: aastore
     140: aload_1
     141: iconst_1
     142: iconst_0
     143: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     146: aastore
     147: aload_1
     148: iconst_2
     149: iconst_0
     150: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     153: aastore
     154: aload_1
     155: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     158: aastore
     159: aload_0
     160: iconst_1
     161: iconst_3
     162: anewarray     #96                 // class java/lang/Integer
     165: astore_1
     166: aload_1
     167: iconst_0
     168: iconst_0
     169: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     172: aastore
     173: aload_1
     174: iconst_1
     175: iconst_0
     176: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     179: aastore
     180: aload_1
     181: iconst_2
     182: iconst_m1
     183: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     186: aastore
     187: aload_1
     188: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     191: aastore
     192: aload_0
     193: iconst_2
     194: iconst_3
     195: anewarray     #96                 // class java/lang/Integer
     198: astore_1
     199: aload_1
     200: iconst_0
     201: iconst_0
     202: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     205: aastore
     206: aload_1
     207: iconst_1
     208: iconst_1
     209: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     212: aastore
     213: aload_1
     214: iconst_2
     215: iconst_0
     216: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     219: aastore
     220: aload_1
     221: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     224: aastore
     225: aload_0
     226: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     229: putstatic     #367                // Field xRotationMatrix:Ljava/util/List;
     232: iconst_3
     233: anewarray     #63                 // class java/util/List
     236: astore_0
     237: aload_0
     238: iconst_0
     239: iconst_3
     240: anewarray     #96                 // class java/lang/Integer
     243: astore_1
     244: aload_1
     245: iconst_0
     246: iconst_0
     247: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     250: aastore
     251: aload_1
     252: iconst_1
     253: iconst_0
     254: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     257: aastore
     258: aload_1
     259: iconst_2
     260: iconst_m1
     261: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     264: aastore
     265: aload_1
     266: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     269: aastore
     270: aload_0
     271: iconst_1
     272: iconst_3
     273: anewarray     #96                 // class java/lang/Integer
     276: astore_1
     277: aload_1
     278: iconst_0
     279: iconst_0
     280: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     283: aastore
     284: aload_1
     285: iconst_1
     286: iconst_1
     287: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     290: aastore
     291: aload_1
     292: iconst_2
     293: iconst_0
     294: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     297: aastore
     298: aload_1
     299: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     302: aastore
     303: aload_0
     304: iconst_2
     305: iconst_3
     306: anewarray     #96                 // class java/lang/Integer
     309: astore_1
     310: aload_1
     311: iconst_0
     312: iconst_1
     313: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     316: aastore
     317: aload_1
     318: iconst_1
     319: iconst_0
     320: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     323: aastore
     324: aload_1
     325: iconst_2
     326: iconst_0
     327: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     330: aastore
     331: aload_1
     332: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     335: aastore
     336: aload_0
     337: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     340: putstatic     #364                // Field yRotationMatrix:Ljava/util/List;
     343: iconst_3
     344: anewarray     #63                 // class java/util/List
     347: astore_0
     348: aload_0
     349: iconst_0
     350: iconst_3
     351: anewarray     #96                 // class java/lang/Integer
     354: astore_1
     355: aload_1
     356: iconst_0
     357: iconst_0
     358: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     361: aastore
     362: aload_1
     363: iconst_1
     364: iconst_1
     365: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     368: aastore
     369: aload_1
     370: iconst_2
     371: iconst_0
     372: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     375: aastore
     376: aload_1
     377: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     380: aastore
     381: aload_0
     382: iconst_1
     383: iconst_3
     384: anewarray     #96                 // class java/lang/Integer
     387: astore_1
     388: aload_1
     389: iconst_0
     390: iconst_m1
     391: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     394: aastore
     395: aload_1
     396: iconst_1
     397: iconst_0
     398: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     401: aastore
     402: aload_1
     403: iconst_2
     404: iconst_0
     405: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     408: aastore
     409: aload_1
     410: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     413: aastore
     414: aload_0
     415: iconst_2
     416: iconst_3
     417: anewarray     #96                 // class java/lang/Integer
     420: astore_1
     421: aload_1
     422: iconst_0
     423: iconst_0
     424: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     427: aastore
     428: aload_1
     429: iconst_1
     430: iconst_0
     431: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     434: aastore
     435: aload_1
     436: iconst_2
     437: iconst_1
     438: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     441: aastore
     442: aload_1
     443: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     446: aastore
     447: aload_0
     448: invokestatic  #203                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     451: putstatic     #361                // Field zRotationMatrix:Ljava/util/List;
     454: getstatic     #375                // Field INSTANCE:Lorg/aoc2021/Day19;
     457: invokespecial #452                // Method generateRotationMatrices:()Ljava/util/List;
     460: putstatic     #221                // Field all3DRotationMatrices:Ljava/util/List;
     463: return
}