fun main() {
    val input = readInput("Day08")
    println(Day08.part1(input))
    println(Day08.part2(input))
}

class Day08 {
    companion object {

        fun part1(input: List<String>): Int {
            val forest =
                input.map { it.split("").filter { c -> c.isNotEmpty() }.map { character -> character.toInt() } }
            val visibilityForest = input.map { it.map { false }.toMutableList() }

            for (i in forest.indices) {
                var currentTop = -1
                for (j in forest[i].indices) {
                    if (forest[i][j] > currentTop) {
                        currentTop = forest[i][j]
                        visibilityForest[i][j] = true
                    }
                }

                currentTop = -1
                for (j in forest[i].indices.reversed()) {
                    if (forest[i][j] > currentTop) {
                        currentTop = forest[i][j]
                        visibilityForest[i][j] = true
                    }
                }
            }

            for (j in forest.first().indices) {
                var currentTop = -1

                for (i in forest.indices) {
                    if (forest[i][j] > currentTop) {
                        currentTop = forest[i][j]
                        visibilityForest[i][j] = true
                    }
                }

                currentTop = -1
                for (i in forest.indices.reversed()) {
                    if (forest[i][j] > currentTop) {
                        currentTop = forest[i][j]
                        visibilityForest[i][j] = true
                    }
                }
            }
            return visibilityForest.flatten().count { it }
        }

        fun part2(input: List<String>): Int {
            val forest =
                input.map { it.split("").filter { c -> c.isNotEmpty() }.map { character -> character.toInt() } }
            val forestOfScores = input.map { it.map { 0 }.toMutableList() }

            for (i in forest.indices) {
                if (i == 0 || i == forest.size - 1) continue
                for (j in forest[i].indices) {
                    if (j == 0 || j == forest[i].size - 1) continue
                    var leftDistance = 0
                    for (j2 in (j - 1 downTo 0)) {
                        leftDistance++
                        if (forest[i][j2] >= forest[i][j]) {
                            break
                        }
                    }
                    if (leftDistance == 0) continue

                    var rightDistance = 0
                    for (j2 in (j + 1 until forest[i].size)) {
                        rightDistance++
                        if (forest[i][j2] >= forest[i][j]) {
                            break
                        }
                    }
                    if (rightDistance == 0) continue

                    var topDistance = 0
                    for (i2 in (i - 1 downTo 0)) {
                        topDistance++
                        if (forest[i2][j] >= forest[i][j]) {
                            break
                        }
                    }
                    if (topDistance == 0) continue

                    var botDistance = 0
                    for (i2 in (i + 1 until forest.size)) {
                        botDistance++
                        if (forest[i2][j] >= forest[i][j]) {
                            break
                        }
                    }
                    if (botDistance == 0) continue
                    forestOfScores[i][j] = leftDistance * rightDistance * topDistance * botDistance
                }
            }

            return forestOfScores.flatten().max()
        }
    }
}

Compiled from "Day08.kt"
public final class Day08 {
  public static final Day08$Companion Companion;

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

  static {};
    Code:
       0: new           #13                 // class Day08$Companion
       3: dup
       4: aconst_null
       5: invokespecial #16                 // Method Day08$Companion."<init>":(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
       8: putstatic     #20                 // Field Companion:LDay08$Companion;
      11: return
}

Compiled from "Day08.kt"
public final class Day08$Companion {
  private Day08$Companion();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final int part1(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #24                 // class java/lang/Iterable
      10: astore_3
      11: iconst_0
      12: istore        4
      14: aload_3
      15: astore        5
      17: new           #26                 // class java/util/ArrayList
      20: dup
      21: aload_3
      22: bipush        10
      24: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      27: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
      30: checkcast     #37                 // class java/util/Collection
      33: astore        6
      35: iconst_0
      36: istore        7
      38: aload         5
      40: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        8
      47: aload         8
      49: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          330
      57: aload         8
      59: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: astore        9
      66: aload         6
      68: aload         9
      70: checkcast     #53                 // class java/lang/String
      73: astore        10
      75: astore        23
      77: iconst_0
      78: istore        11
      80: aload         10
      82: checkcast     #55                 // class java/lang/CharSequence
      85: iconst_1
      86: anewarray     #53                 // class java/lang/String
      89: astore        12
      91: aload         12
      93: iconst_0
      94: ldc           #57                 // String
      96: aastore
      97: aload         12
      99: iconst_0
     100: iconst_0
     101: bipush        6
     103: aconst_null
     104: invokestatic  #63                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     107: checkcast     #24                 // class java/lang/Iterable
     110: astore        12
     112: iconst_0
     113: istore        13
     115: aload         12
     117: astore        14
     119: new           #26                 // class java/util/ArrayList
     122: dup
     123: invokespecial #64                 // Method java/util/ArrayList."<init>":()V
     126: checkcast     #37                 // class java/util/Collection
     129: astore        15
     131: iconst_0
     132: istore        16
     134: aload         14
     136: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     141: astore        17
     143: aload         17
     145: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     150: ifeq          207
     153: aload         17
     155: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     160: astore        18
     162: aload         18
     164: checkcast     #53                 // class java/lang/String
     167: astore        19
     169: iconst_0
     170: istore        20
     172: aload         19
     174: checkcast     #55                 // class java/lang/CharSequence
     177: invokeinterface #68,  1           // InterfaceMethod java/lang/CharSequence.length:()I
     182: ifle          189
     185: iconst_1
     186: goto          190
     189: iconst_0
     190: nop
     191: ifeq          143
     194: aload         15
     196: aload         18
     198: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     203: pop
     204: goto          143
     207: aload         15
     209: checkcast     #74                 // class java/util/List
     212: nop
     213: checkcast     #24                 // class java/lang/Iterable
     216: astore        12
     218: nop
     219: iconst_0
     220: istore        13
     222: aload         12
     224: astore        14
     226: new           #26                 // class java/util/ArrayList
     229: dup
     230: aload         12
     232: bipush        10
     234: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     237: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     240: checkcast     #37                 // class java/util/Collection
     243: astore        15
     245: iconst_0
     246: istore        16
     248: aload         14
     250: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     255: astore        17
     257: aload         17
     259: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     264: ifeq          311
     267: aload         17
     269: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     274: astore        18
     276: aload         15
     278: aload         18
     280: checkcast     #53                 // class java/lang/String
     283: astore        19
     285: astore        21
     287: iconst_0
     288: istore        20
     290: aload         19
     292: invokestatic  #80                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     295: nop
     296: invokestatic  #84                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     299: aload         21
     301: swap
     302: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     307: pop
     308: goto          257
     311: aload         15
     313: checkcast     #74                 // class java/util/List
     316: nop
     317: nop
     318: aload         23
     320: swap
     321: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     326: pop
     327: goto          47
     330: aload         6
     332: checkcast     #74                 // class java/util/List
     335: nop
     336: astore_2
     337: aload_1
     338: checkcast     #24                 // class java/lang/Iterable
     341: astore        4
     343: iconst_0
     344: istore        5
     346: aload         4
     348: astore        6
     350: new           #26                 // class java/util/ArrayList
     353: dup
     354: aload         4
     356: bipush        10
     358: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     361: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     364: checkcast     #37                 // class java/util/Collection
     367: astore        7
     369: iconst_0
     370: istore        8
     372: aload         6
     374: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     379: astore        9
     381: aload         9
     383: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     388: ifeq          530
     391: aload         9
     393: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     398: astore        10
     400: aload         7
     402: aload         10
     404: checkcast     #53                 // class java/lang/String
     407: astore        11
     409: astore        23
     411: iconst_0
     412: istore        12
     414: aload         11
     416: checkcast     #55                 // class java/lang/CharSequence
     419: astore        13
     421: iconst_0
     422: istore        14
     424: aload         13
     426: astore        15
     428: new           #26                 // class java/util/ArrayList
     431: dup
     432: aload         13
     434: invokeinterface #68,  1           // InterfaceMethod java/lang/CharSequence.length:()I
     439: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     442: checkcast     #37                 // class java/util/Collection
     445: astore        16
     447: iconst_0
     448: istore        17
     450: iconst_0
     451: istore        18
     453: iload         18
     455: aload         15
     457: invokeinterface #68,  1           // InterfaceMethod java/lang/CharSequence.length:()I
     462: if_icmpge     506
     465: aload         15
     467: iload         18
     469: invokeinterface #88,  2           // InterfaceMethod java/lang/CharSequence.charAt:(I)C
     474: istore        19
     476: aload         16
     478: iload         19
     480: istore        20
     482: astore        21
     484: iconst_0
     485: istore        22
     487: iconst_0
     488: invokestatic  #93                 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     491: aload         21
     493: swap
     494: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     499: pop
     500: iinc          18, 1
     503: goto          453
     506: aload         16
     508: checkcast     #74                 // class java/util/List
     511: nop
     512: checkcast     #37                 // class java/util/Collection
     515: invokestatic  #97                 // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     518: aload         23
     520: swap
     521: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     526: pop
     527: goto          381
     530: aload         7
     532: checkcast     #74                 // class java/util/List
     535: nop
     536: astore_3
     537: iconst_0
     538: istore        4
     540: aload_2
     541: checkcast     #37                 // class java/util/Collection
     544: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     549: istore        5
     551: iload         4
     553: iload         5
     555: if_icmpge     799
     558: iconst_m1
     559: istore        6
     561: iconst_0
     562: istore        7
     564: aload_2
     565: iload         4
     567: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     572: checkcast     #37                 // class java/util/Collection
     575: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     580: istore        8
     582: iload         7
     584: iload         8
     586: if_icmpge     673
     589: aload_2
     590: iload         4
     592: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     597: checkcast     #74                 // class java/util/List
     600: iload         7
     602: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     607: checkcast     #106                // class java/lang/Number
     610: invokevirtual #109                // Method java/lang/Number.intValue:()I
     613: iload         6
     615: if_icmple     667
     618: aload_2
     619: iload         4
     621: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     626: checkcast     #74                 // class java/util/List
     629: iload         7
     631: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     636: checkcast     #106                // class java/lang/Number
     639: invokevirtual #109                // Method java/lang/Number.intValue:()I
     642: istore        6
     644: aload_3
     645: iload         4
     647: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     652: checkcast     #74                 // class java/util/List
     655: iload         7
     657: iconst_1
     658: invokestatic  #93                 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     661: invokeinterface #113,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     666: pop
     667: iinc          7, 1
     670: goto          582
     673: iconst_m1
     674: istore        6
     676: aload_2
     677: iload         4
     679: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     684: checkcast     #37                 // class java/util/Collection
     687: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     692: iconst_m1
     693: iadd
     694: istore        7
     696: iconst_0
     697: iload         7
     699: if_icmpgt     793
     702: iload         7
     704: istore        8
     706: iinc          7, -1
     709: aload_2
     710: iload         4
     712: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     717: checkcast     #74                 // class java/util/List
     720: iload         8
     722: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     727: checkcast     #106                // class java/lang/Number
     730: invokevirtual #109                // Method java/lang/Number.intValue:()I
     733: iload         6
     735: if_icmple     787
     738: aload_2
     739: iload         4
     741: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     746: checkcast     #74                 // class java/util/List
     749: iload         8
     751: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     756: checkcast     #106                // class java/lang/Number
     759: invokevirtual #109                // Method java/lang/Number.intValue:()I
     762: istore        6
     764: aload_3
     765: iload         4
     767: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     772: checkcast     #74                 // class java/util/List
     775: iload         8
     777: iconst_1
     778: invokestatic  #93                 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     781: invokeinterface #113,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     786: pop
     787: iconst_0
     788: iload         7
     790: if_icmple     702
     793: iinc          4, 1
     796: goto          551
     799: iconst_0
     800: istore        4
     802: aload_2
     803: invokestatic  #117                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     806: checkcast     #37                 // class java/util/Collection
     809: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     814: istore        5
     816: iload         4
     818: iload         5
     820: if_icmpge     1050
     823: iconst_m1
     824: istore        6
     826: iconst_0
     827: istore        7
     829: aload_2
     830: checkcast     #37                 // class java/util/Collection
     833: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     838: istore        8
     840: iload         7
     842: iload         8
     844: if_icmpge     931
     847: aload_2
     848: iload         7
     850: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     855: checkcast     #74                 // class java/util/List
     858: iload         4
     860: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     865: checkcast     #106                // class java/lang/Number
     868: invokevirtual #109                // Method java/lang/Number.intValue:()I
     871: iload         6
     873: if_icmple     925
     876: aload_2
     877: iload         7
     879: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     884: checkcast     #74                 // class java/util/List
     887: iload         4
     889: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     894: checkcast     #106                // class java/lang/Number
     897: invokevirtual #109                // Method java/lang/Number.intValue:()I
     900: istore        6
     902: aload_3
     903: iload         7
     905: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     910: checkcast     #74                 // class java/util/List
     913: iload         4
     915: iconst_1
     916: invokestatic  #93                 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
     919: invokeinterface #113,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     924: pop
     925: iinc          7, 1
     928: goto          840
     931: iconst_m1
     932: istore        6
     934: aload_2
     935: checkcast     #37                 // class java/util/Collection
     938: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     943: iconst_m1
     944: iadd
     945: istore        7
     947: iconst_0
     948: iload         7
     950: if_icmpgt     1044
     953: iload         7
     955: istore        8
     957: iinc          7, -1
     960: aload_2
     961: iload         8
     963: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     968: checkcast     #74                 // class java/util/List
     971: iload         4
     973: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     978: checkcast     #106                // class java/lang/Number
     981: invokevirtual #109                // Method java/lang/Number.intValue:()I
     984: iload         6
     986: if_icmple     1038
     989: aload_2
     990: iload         8
     992: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     997: checkcast     #74                 // class java/util/List
    1000: iload         4
    1002: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1007: checkcast     #106                // class java/lang/Number
    1010: invokevirtual #109                // Method java/lang/Number.intValue:()I
    1013: istore        6
    1015: aload_3
    1016: iload         8
    1018: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1023: checkcast     #74                 // class java/util/List
    1026: iload         4
    1028: iconst_1
    1029: invokestatic  #93                 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
    1032: invokeinterface #113,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
    1037: pop
    1038: iconst_0
    1039: iload         7
    1041: if_icmple     953
    1044: iinc          4, 1
    1047: goto          816
    1050: aload_3
    1051: checkcast     #24                 // class java/lang/Iterable
    1054: invokestatic  #121                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
    1057: checkcast     #24                 // class java/lang/Iterable
    1060: astore        4
    1062: iconst_0
    1063: istore        5
    1065: aload         4
    1067: instanceof    #37                 // class java/util/Collection
    1070: ifeq          1090
    1073: aload         4
    1075: checkcast     #37                 // class java/util/Collection
    1078: invokeinterface #124,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
    1083: ifeq          1090
    1086: iconst_0
    1087: goto          1155
    1090: iconst_0
    1091: istore        6
    1093: aload         4
    1095: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1100: astore        7
    1102: aload         7
    1104: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1109: ifeq          1153
    1112: aload         7
    1114: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1119: astore        8
    1121: aload         8
    1123: checkcast     #90                 // class java/lang/Boolean
    1126: invokevirtual #127                // Method java/lang/Boolean.booleanValue:()Z
    1129: istore        9
    1131: iconst_0
    1132: istore        10
    1134: iload         9
    1136: ifeq          1102
    1139: iinc          6, 1
    1142: iload         6
    1144: ifge          1102
    1147: invokestatic  #130                // Method kotlin/collections/CollectionsKt.throwCountOverflow:()V
    1150: goto          1102
    1153: iload         6
    1155: ireturn

  public final int part2(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #24                 // class java/lang/Iterable
      10: astore_3
      11: iconst_0
      12: istore        4
      14: aload_3
      15: astore        5
      17: new           #26                 // class java/util/ArrayList
      20: dup
      21: aload_3
      22: bipush        10
      24: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      27: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
      30: checkcast     #37                 // class java/util/Collection
      33: astore        6
      35: iconst_0
      36: istore        7
      38: aload         5
      40: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        8
      47: aload         8
      49: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          330
      57: aload         8
      59: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: astore        9
      66: aload         6
      68: aload         9
      70: checkcast     #53                 // class java/lang/String
      73: astore        10
      75: astore        23
      77: iconst_0
      78: istore        11
      80: aload         10
      82: checkcast     #55                 // class java/lang/CharSequence
      85: iconst_1
      86: anewarray     #53                 // class java/lang/String
      89: astore        12
      91: aload         12
      93: iconst_0
      94: ldc           #57                 // String
      96: aastore
      97: aload         12
      99: iconst_0
     100: iconst_0
     101: bipush        6
     103: aconst_null
     104: invokestatic  #63                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     107: checkcast     #24                 // class java/lang/Iterable
     110: astore        12
     112: iconst_0
     113: istore        13
     115: aload         12
     117: astore        14
     119: new           #26                 // class java/util/ArrayList
     122: dup
     123: invokespecial #64                 // Method java/util/ArrayList."<init>":()V
     126: checkcast     #37                 // class java/util/Collection
     129: astore        15
     131: iconst_0
     132: istore        16
     134: aload         14
     136: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     141: astore        17
     143: aload         17
     145: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     150: ifeq          207
     153: aload         17
     155: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     160: astore        18
     162: aload         18
     164: checkcast     #53                 // class java/lang/String
     167: astore        19
     169: iconst_0
     170: istore        20
     172: aload         19
     174: checkcast     #55                 // class java/lang/CharSequence
     177: invokeinterface #68,  1           // InterfaceMethod java/lang/CharSequence.length:()I
     182: ifle          189
     185: iconst_1
     186: goto          190
     189: iconst_0
     190: nop
     191: ifeq          143
     194: aload         15
     196: aload         18
     198: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     203: pop
     204: goto          143
     207: aload         15
     209: checkcast     #74                 // class java/util/List
     212: nop
     213: checkcast     #24                 // class java/lang/Iterable
     216: astore        12
     218: nop
     219: iconst_0
     220: istore        13
     222: aload         12
     224: astore        14
     226: new           #26                 // class java/util/ArrayList
     229: dup
     230: aload         12
     232: bipush        10
     234: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     237: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     240: checkcast     #37                 // class java/util/Collection
     243: astore        15
     245: iconst_0
     246: istore        16
     248: aload         14
     250: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     255: astore        17
     257: aload         17
     259: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     264: ifeq          311
     267: aload         17
     269: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     274: astore        18
     276: aload         15
     278: aload         18
     280: checkcast     #53                 // class java/lang/String
     283: astore        19
     285: astore        21
     287: iconst_0
     288: istore        20
     290: aload         19
     292: invokestatic  #80                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     295: nop
     296: invokestatic  #84                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     299: aload         21
     301: swap
     302: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     307: pop
     308: goto          257
     311: aload         15
     313: checkcast     #74                 // class java/util/List
     316: nop
     317: nop
     318: aload         23
     320: swap
     321: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     326: pop
     327: goto          47
     330: aload         6
     332: checkcast     #74                 // class java/util/List
     335: nop
     336: astore_2
     337: aload_1
     338: checkcast     #24                 // class java/lang/Iterable
     341: astore        4
     343: iconst_0
     344: istore        5
     346: aload         4
     348: astore        6
     350: new           #26                 // class java/util/ArrayList
     353: dup
     354: aload         4
     356: bipush        10
     358: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     361: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     364: checkcast     #37                 // class java/util/Collection
     367: astore        7
     369: iconst_0
     370: istore        8
     372: aload         6
     374: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     379: astore        9
     381: aload         9
     383: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     388: ifeq          530
     391: aload         9
     393: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     398: astore        10
     400: aload         7
     402: aload         10
     404: checkcast     #53                 // class java/lang/String
     407: astore        11
     409: astore        23
     411: iconst_0
     412: istore        12
     414: aload         11
     416: checkcast     #55                 // class java/lang/CharSequence
     419: astore        13
     421: iconst_0
     422: istore        14
     424: aload         13
     426: astore        15
     428: new           #26                 // class java/util/ArrayList
     431: dup
     432: aload         13
     434: invokeinterface #68,  1           // InterfaceMethod java/lang/CharSequence.length:()I
     439: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     442: checkcast     #37                 // class java/util/Collection
     445: astore        16
     447: iconst_0
     448: istore        17
     450: iconst_0
     451: istore        18
     453: iload         18
     455: aload         15
     457: invokeinterface #68,  1           // InterfaceMethod java/lang/CharSequence.length:()I
     462: if_icmpge     506
     465: aload         15
     467: iload         18
     469: invokeinterface #88,  2           // InterfaceMethod java/lang/CharSequence.charAt:(I)C
     474: istore        19
     476: aload         16
     478: iload         19
     480: istore        20
     482: astore        21
     484: iconst_0
     485: istore        22
     487: iconst_0
     488: invokestatic  #84                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     491: aload         21
     493: swap
     494: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     499: pop
     500: iinc          18, 1
     503: goto          453
     506: aload         16
     508: checkcast     #74                 // class java/util/List
     511: nop
     512: checkcast     #37                 // class java/util/Collection
     515: invokestatic  #97                 // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     518: aload         23
     520: swap
     521: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     526: pop
     527: goto          381
     530: aload         7
     532: checkcast     #74                 // class java/util/List
     535: nop
     536: astore_3
     537: iconst_0
     538: istore        4
     540: aload_2
     541: checkcast     #37                 // class java/util/Collection
     544: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     549: istore        5
     551: iload         4
     553: iload         5
     555: if_icmpge     1043
     558: iload         4
     560: ifeq          1037
     563: iload         4
     565: aload_2
     566: invokeinterface #170,  1          // InterfaceMethod java/util/List.size:()I
     571: iconst_1
     572: isub
     573: if_icmpne     579
     576: goto          1037
     579: iconst_0
     580: istore        6
     582: aload_2
     583: iload         4
     585: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     590: checkcast     #37                 // class java/util/Collection
     593: invokeinterface #100,  1          // InterfaceMethod java/util/Collection.size:()I
     598: istore        7
     600: iload         6
     602: iload         7
     604: if_icmpge     1037
     607: iload         6
     609: ifeq          1031
     612: iload         6
     614: aload_2
     615: iload         4
     617: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     622: checkcast     #74                 // class java/util/List
     625: invokeinterface #170,  1          // InterfaceMethod java/util/List.size:()I
     630: iconst_1
     631: isub
     632: if_icmpne     638
     635: goto          1031
     638: iconst_0
     639: istore        8
     641: iload         6
     643: iconst_1
     644: isub
     645: istore        9
     647: iconst_m1
     648: iload         9
     650: if_icmpge     716
     653: iinc          8, 1
     656: aload_2
     657: iload         4
     659: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     664: checkcast     #74                 // class java/util/List
     667: iload         9
     669: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     674: checkcast     #106                // class java/lang/Number
     677: invokevirtual #109                // Method java/lang/Number.intValue:()I
     680: aload_2
     681: iload         4
     683: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     688: checkcast     #74                 // class java/util/List
     691: iload         6
     693: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     698: checkcast     #106                // class java/lang/Number
     701: invokevirtual #109                // Method java/lang/Number.intValue:()I
     704: if_icmplt     710
     707: goto          716
     710: iinc          9, -1
     713: goto          647
     716: iload         8
     718: ifeq          1031
     721: iconst_0
     722: istore        9
     724: iload         6
     726: iconst_1
     727: iadd
     728: istore        10
     730: aload_2
     731: iload         4
     733: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     738: checkcast     #74                 // class java/util/List
     741: invokeinterface #170,  1          // InterfaceMethod java/util/List.size:()I
     746: istore        11
     748: iload         10
     750: iload         11
     752: if_icmpge     818
     755: iinc          9, 1
     758: aload_2
     759: iload         4
     761: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     766: checkcast     #74                 // class java/util/List
     769: iload         10
     771: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     776: checkcast     #106                // class java/lang/Number
     779: invokevirtual #109                // Method java/lang/Number.intValue:()I
     782: aload_2
     783: iload         4
     785: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     790: checkcast     #74                 // class java/util/List
     793: iload         6
     795: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     800: checkcast     #106                // class java/lang/Number
     803: invokevirtual #109                // Method java/lang/Number.intValue:()I
     806: if_icmplt     812
     809: goto          818
     812: iinc          10, 1
     815: goto          748
     818: iload         9
     820: ifeq          1031
     823: iconst_0
     824: istore        10
     826: iload         4
     828: iconst_1
     829: isub
     830: istore        11
     832: iconst_m1
     833: iload         11
     835: if_icmpge     901
     838: iinc          10, 1
     841: aload_2
     842: iload         11
     844: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     849: checkcast     #74                 // class java/util/List
     852: iload         6
     854: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     859: checkcast     #106                // class java/lang/Number
     862: invokevirtual #109                // Method java/lang/Number.intValue:()I
     865: aload_2
     866: iload         4
     868: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     873: checkcast     #74                 // class java/util/List
     876: iload         6
     878: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     883: checkcast     #106                // class java/lang/Number
     886: invokevirtual #109                // Method java/lang/Number.intValue:()I
     889: if_icmplt     895
     892: goto          901
     895: iinc          11, -1
     898: goto          832
     901: iload         10
     903: ifeq          1031
     906: iconst_0
     907: istore        11
     909: iload         4
     911: iconst_1
     912: iadd
     913: istore        12
     915: aload_2
     916: invokeinterface #170,  1          // InterfaceMethod java/util/List.size:()I
     921: istore        13
     923: iload         12
     925: iload         13
     927: if_icmpge     993
     930: iinc          11, 1
     933: aload_2
     934: iload         12
     936: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     941: checkcast     #74                 // class java/util/List
     944: iload         6
     946: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     951: checkcast     #106                // class java/lang/Number
     954: invokevirtual #109                // Method java/lang/Number.intValue:()I
     957: aload_2
     958: iload         4
     960: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     965: checkcast     #74                 // class java/util/List
     968: iload         6
     970: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     975: checkcast     #106                // class java/lang/Number
     978: invokevirtual #109                // Method java/lang/Number.intValue:()I
     981: if_icmplt     987
     984: goto          993
     987: iinc          12, 1
     990: goto          923
     993: iload         11
     995: ifeq          1031
     998: aload_3
     999: iload         4
    1001: invokeinterface #104,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1006: checkcast     #74                 // class java/util/List
    1009: iload         6
    1011: iload         8
    1013: iload         9
    1015: imul
    1016: iload         10
    1018: imul
    1019: iload         11
    1021: imul
    1022: invokestatic  #84                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1025: invokeinterface #113,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
    1030: pop
    1031: iinc          6, 1
    1034: goto          600
    1037: iinc          4, 1
    1040: goto          551
    1043: aload_3
    1044: checkcast     #24                 // class java/lang/Iterable
    1047: invokestatic  #121                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
    1050: checkcast     #24                 // class java/lang/Iterable
    1053: invokestatic  #174                // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
    1056: checkcast     #106                // class java/lang/Number
    1059: invokevirtual #109                // Method java/lang/Number.intValue:()I
    1062: ireturn

  public Day08$Companion(kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: aload_0
       1: invokespecial #188                // Method "<init>":()V
       4: return
}

Compiled from "Day08.kt"
public final class Day08Kt {
  public static final void main();
    Code:
       0: ldc           #8                  // String Day08
       2: invokestatic  #14                 // Method UtilsKt.readInput:(Ljava/lang/String;)Ljava/util/List;
       5: astore_0
       6: getstatic     #19                 // Field Day08.Companion:LDay08$Companion;
       9: aload_0
      10: invokevirtual #25                 // Method Day08$Companion.part1:(Ljava/util/List;)I
      13: istore_1
      14: getstatic     #31                 // Field java/lang/System.out:Ljava/io/PrintStream;
      17: iload_1
      18: invokevirtual #37                 // Method java/io/PrintStream.println:(I)V
      21: getstatic     #19                 // Field Day08.Companion:LDay08$Companion;
      24: aload_0
      25: invokevirtual #40                 // Method Day08$Companion.part2:(Ljava/util/List;)I
      28: istore_1
      29: getstatic     #31                 // Field java/lang/System.out:Ljava/io/PrintStream;
      32: iload_1
      33: invokevirtual #37                 // Method java/io/PrintStream.println:(I)V
      36: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #45                 // Method main:()V
       3: return
}


fun main() {
    val input = readInput("Day05")
    println(Day05.part1(input))
    println(Day05.part2(input))
}

data class Move(val size: Int, val from: Int, val to: Int)

class Day05 {
    companion object {

        fun part1(input: List<String>): String {
            val (initial, rawActions) = input.partitionOnElement("")

            val numberOfStacks = initial.maxOf { it.length } / 3
            val stacks: List<ArrayDeque<Char>> = (1..numberOfStacks).toList().map { ArrayDeque<Char>(initial.size * 2) }
            val initialReversed = initial.dropLast(1).reversed()
            for (level in initialReversed) {
                for (i in 1..numberOfStacks) {
                    val value = level.getOrNull((4 * i) - 3)
                    if (value != null && value != ' ') {
                        stacks[i - 1].addLast(value)
                    }
                }
            }

            val actions = rawActions.map { it.split("move ", " from ", " to ").subList(1, 4).map { v -> v.toInt() } }
                .map { (size, from, to) -> Move(size, from, to) }

            for (action in actions) {
                for (i in 0 until action.size) {
                    stacks[action.to - 1].addLast(stacks[action.from - 1].removeLast())
                }
            }

            return stacks.mapNotNull { it.removeLastOrNull() }.joinToString("")
        }

        fun part2(input: List<String>): String {
            val (initial, rawActions) = input.partitionOnElement("")

            val numberOfStacks = initial.maxOf { it.length } / 3
            val stacks: MutableList<ArrayDeque<Char>> =
                (1..numberOfStacks).toList().map { ArrayDeque<Char>(initial.size * 2) }.toMutableList()
            val initialReversed = initial.dropLast(1).reversed()
            for (level in initialReversed) {
                for (i in 1..numberOfStacks) {
                    val value = level.getOrNull((4 * i) - 3)
                    if (value != null && value != ' ') {
                        stacks[i - 1].addLast(value)
                    }
                }
            }

            val actions = rawActions.map { it.split("move ", " from ", " to ").subList(1, 4).map { v -> v.toInt() } }
                .map { (size, from, to) -> Move(size, from, to) }

            for (action in actions) {
                val splitPoint = stacks[action.from - 1].size - action.size
                val newFrom = stacks[action.from - 1].subList(0, splitPoint)
                val swap = stacks[action.from - 1].subList(splitPoint, stacks[action.from - 1].size)

                stacks[action.from - 1] = ArrayDeque(newFrom)
                stacks[action.to - 1].addAll(swap)
            }

            return stacks.mapNotNull { it.removeLastOrNull() }.joinToString("")
        }

    }
}

Compiled from "Day05.kt"
public final class Day05Kt {
  public static final void main();
    Code:
       0: ldc           #8                  // String Day05
       2: invokestatic  #14                 // Method UtilsKt.readInput:(Ljava/lang/String;)Ljava/util/List;
       5: astore_0
       6: getstatic     #19                 // Field Day05.Companion:LDay05$Companion;
       9: aload_0
      10: invokevirtual #25                 // Method Day05$Companion.part1:(Ljava/util/List;)Ljava/lang/String;
      13: getstatic     #31                 // Field java/lang/System.out:Ljava/io/PrintStream;
      16: swap
      17: invokevirtual #37                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      20: getstatic     #19                 // Field Day05.Companion:LDay05$Companion;
      23: aload_0
      24: invokevirtual #40                 // Method Day05$Companion.part2:(Ljava/util/List;)Ljava/lang/String;
      27: getstatic     #31                 // Field java/lang/System.out:Ljava/io/PrintStream;
      30: swap
      31: invokevirtual #37                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      34: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #45                 // Method main:()V
       3: return
}

Compiled from "Day05.kt"
public final class Day05$Companion {
  private Day05$Companion();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final java.lang.String part1(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #24                 // String
       9: invokestatic  #30                 // Method UtilsKt.partitionOnElement:(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
      12: astore_2
      13: aload_2
      14: iconst_0
      15: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      20: checkcast     #32                 // class java/util/List
      23: astore_3
      24: aload_2
      25: iconst_1
      26: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      31: checkcast     #32                 // class java/util/List
      34: astore        4
      36: aload_3
      37: checkcast     #38                 // class java/lang/Iterable
      40: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        7
      47: aload         7
      49: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifne          65
      57: new           #50                 // class java/util/NoSuchElementException
      60: dup
      61: invokespecial #51                 // Method java/util/NoSuchElementException."<init>":()V
      64: athrow
      65: aload         7
      67: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      72: checkcast     #57                 // class java/lang/String
      75: astore        8
      77: iconst_0
      78: istore        9
      80: aload         8
      82: invokevirtual #61                 // Method java/lang/String.length:()I
      85: istore        8
      87: aload         7
      89: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      94: ifeq          133
      97: aload         7
      99: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     104: checkcast     #57                 // class java/lang/String
     107: astore        9
     109: iconst_0
     110: istore        10
     112: aload         9
     114: invokevirtual #61                 // Method java/lang/String.length:()I
     117: istore        9
     119: iload         8
     121: iload         9
     123: if_icmpge     87
     126: iload         9
     128: istore        8
     130: goto          87
     133: iload         8
     135: iconst_3
     136: idiv
     137: istore        5
     139: new           #63                 // class kotlin/ranges/IntRange
     142: dup
     143: iconst_1
     144: iload         5
     146: invokespecial #66                 // Method kotlin/ranges/IntRange."<init>":(II)V
     149: checkcast     #38                 // class java/lang/Iterable
     152: invokestatic  #72                 // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     155: checkcast     #38                 // class java/lang/Iterable
     158: astore        7
     160: iconst_0
     161: istore        8
     163: aload         7
     165: astore        9
     167: new           #74                 // class java/util/ArrayList
     170: dup
     171: aload         7
     173: bipush        10
     175: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     178: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     181: checkcast     #83                 // class java/util/Collection
     184: astore        10
     186: iconst_0
     187: istore        11
     189: aload         9
     191: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     196: astore        12
     198: aload         12
     200: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     205: ifeq          261
     208: aload         12
     210: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     215: astore        13
     217: aload         10
     219: aload         13
     221: checkcast     #85                 // class java/lang/Number
     224: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     227: istore        14
     229: astore        28
     231: iconst_0
     232: istore        15
     234: new           #90                 // class kotlin/collections/ArrayDeque
     237: dup
     238: aload_3
     239: invokeinterface #93,  1           // InterfaceMethod java/util/List.size:()I
     244: iconst_2
     245: imul
     246: invokespecial #94                 // Method kotlin/collections/ArrayDeque."<init>":(I)V
     249: aload         28
     251: swap
     252: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     257: pop
     258: goto          198
     261: aload         10
     263: checkcast     #32                 // class java/util/List
     266: nop
     267: astore        6
     269: aload_3
     270: iconst_1
     271: invokestatic  #102                // Method kotlin/collections/CollectionsKt.dropLast:(Ljava/util/List;I)Ljava/util/List;
     274: checkcast     #38                 // class java/lang/Iterable
     277: invokestatic  #105                // Method kotlin/collections/CollectionsKt.reversed:(Ljava/lang/Iterable;)Ljava/util/List;
     280: astore        7
     282: aload         7
     284: invokeinterface #106,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     289: astore        8
     291: aload         8
     293: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     298: ifeq          390
     301: aload         8
     303: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     308: checkcast     #57                 // class java/lang/String
     311: astore        9
     313: iconst_1
     314: istore        10
     316: iload         10
     318: iload         5
     320: if_icmpgt     291
     323: aload         9
     325: checkcast     #108                // class java/lang/CharSequence
     328: iconst_4
     329: iload         10
     331: imul
     332: iconst_3
     333: isub
     334: invokestatic  #114                // Method kotlin/text/StringsKt.getOrNull:(Ljava/lang/CharSequence;I)Ljava/lang/Character;
     337: astore        11
     339: aload         11
     341: ifnull        377
     344: aload         11
     346: bipush        32
     348: istore        12
     350: invokevirtual #120                // Method java/lang/Character.charValue:()C
     353: iload         12
     355: if_icmpeq     377
     358: aload         6
     360: iload         10
     362: iconst_1
     363: isub
     364: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     369: checkcast     #90                 // class kotlin/collections/ArrayDeque
     372: aload         11
     374: invokevirtual #124                // Method kotlin/collections/ArrayDeque.addLast:(Ljava/lang/Object;)V
     377: iload         10
     379: iload         5
     381: if_icmpeq     291
     384: iinc          10, 1
     387: goto          323
     390: aload         4
     392: checkcast     #38                 // class java/lang/Iterable
     395: astore        9
     397: iconst_0
     398: istore        10
     400: aload         9
     402: astore        11
     404: new           #74                 // class java/util/ArrayList
     407: dup
     408: aload         9
     410: bipush        10
     412: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     415: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     418: checkcast     #83                 // class java/util/Collection
     421: astore        12
     423: iconst_0
     424: istore        13
     426: aload         11
     428: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     433: astore        14
     435: aload         14
     437: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     442: ifeq          630
     445: aload         14
     447: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     452: astore        15
     454: aload         12
     456: aload         15
     458: checkcast     #57                 // class java/lang/String
     461: astore        16
     463: astore        28
     465: iconst_0
     466: istore        17
     468: aload         16
     470: checkcast     #108                // class java/lang/CharSequence
     473: iconst_3
     474: anewarray     #57                 // class java/lang/String
     477: astore        18
     479: aload         18
     481: iconst_0
     482: ldc           #126                // String move
     484: aastore
     485: aload         18
     487: iconst_1
     488: ldc           #128                // String  from
     490: aastore
     491: aload         18
     493: iconst_2
     494: ldc           #130                // String  to
     496: aastore
     497: aload         18
     499: iconst_0
     500: iconst_0
     501: bipush        6
     503: aconst_null
     504: invokestatic  #134                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     507: iconst_1
     508: iconst_4
     509: invokeinterface #138,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     514: checkcast     #38                 // class java/lang/Iterable
     517: astore        18
     519: iconst_0
     520: istore        19
     522: aload         18
     524: astore        20
     526: new           #74                 // class java/util/ArrayList
     529: dup
     530: aload         18
     532: bipush        10
     534: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     537: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     540: checkcast     #83                 // class java/util/Collection
     543: astore        21
     545: iconst_0
     546: istore        22
     548: aload         20
     550: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     555: astore        23
     557: aload         23
     559: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     564: ifeq          611
     567: aload         23
     569: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     574: astore        24
     576: aload         21
     578: aload         24
     580: checkcast     #57                 // class java/lang/String
     583: astore        25
     585: astore        26
     587: iconst_0
     588: istore        27
     590: aload         25
     592: invokestatic  #144                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     595: nop
     596: invokestatic  #148                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     599: aload         26
     601: swap
     602: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     607: pop
     608: goto          557
     611: aload         21
     613: checkcast     #32                 // class java/util/List
     616: nop
     617: nop
     618: aload         28
     620: swap
     621: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     626: pop
     627: goto          435
     630: aload         12
     632: checkcast     #32                 // class java/util/List
     635: nop
     636: checkcast     #38                 // class java/lang/Iterable
     639: astore        9
     641: nop
     642: iconst_0
     643: istore        10
     645: aload         9
     647: astore        11
     649: new           #74                 // class java/util/ArrayList
     652: dup
     653: aload         9
     655: bipush        10
     657: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     660: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     663: checkcast     #83                 // class java/util/Collection
     666: astore        12
     668: iconst_0
     669: istore        13
     671: aload         11
     673: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     678: astore        14
     680: aload         14
     682: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     687: ifeq          786
     690: aload         14
     692: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     697: astore        15
     699: aload         12
     701: aload         15
     703: checkcast     #32                 // class java/util/List
     706: astore        16
     708: astore        28
     710: iconst_0
     711: istore        17
     713: aload         16
     715: iconst_0
     716: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     721: checkcast     #85                 // class java/lang/Number
     724: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     727: istore        18
     729: aload         16
     731: iconst_1
     732: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     737: checkcast     #85                 // class java/lang/Number
     740: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     743: istore        19
     745: aload         16
     747: iconst_2
     748: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     753: checkcast     #85                 // class java/lang/Number
     756: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     759: istore        20
     761: new           #150                // class Move
     764: dup
     765: iload         18
     767: iload         19
     769: iload         20
     771: invokespecial #153                // Method Move."<init>":(III)V
     774: aload         28
     776: swap
     777: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     782: pop
     783: goto          680
     786: aload         12
     788: checkcast     #32                 // class java/util/List
     791: nop
     792: astore        8
     794: aload         8
     796: invokeinterface #106,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     801: astore        9
     803: aload         9
     805: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     810: ifeq          888
     813: aload         9
     815: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     820: checkcast     #150                // class Move
     823: astore        10
     825: iconst_0
     826: istore        11
     828: aload         10
     830: invokevirtual #156                // Method Move.getSize:()I
     833: istore        12
     835: iload         11
     837: iload         12
     839: if_icmpge     803
     842: aload         6
     844: aload         10
     846: invokevirtual #159                // Method Move.getTo:()I
     849: iconst_1
     850: isub
     851: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     856: checkcast     #90                 // class kotlin/collections/ArrayDeque
     859: aload         6
     861: aload         10
     863: invokevirtual #162                // Method Move.getFrom:()I
     866: iconst_1
     867: isub
     868: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     873: checkcast     #90                 // class kotlin/collections/ArrayDeque
     876: invokevirtual #165                // Method kotlin/collections/ArrayDeque.removeLast:()Ljava/lang/Object;
     879: invokevirtual #124                // Method kotlin/collections/ArrayDeque.addLast:(Ljava/lang/Object;)V
     882: iinc          11, 1
     885: goto          835
     888: aload         6
     890: checkcast     #38                 // class java/lang/Iterable
     893: astore        9
     895: iconst_0
     896: istore        10
     898: aload         9
     900: astore        11
     902: new           #74                 // class java/util/ArrayList
     905: dup
     906: invokespecial #166                // Method java/util/ArrayList."<init>":()V
     909: checkcast     #83                 // class java/util/Collection
     912: astore        12
     914: iconst_0
     915: istore        13
     917: aload         11
     919: astore        14
     921: iconst_0
     922: istore        15
     924: aload         14
     926: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     931: astore        16
     933: aload         16
     935: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     940: ifeq          1004
     943: aload         16
     945: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     950: astore        17
     952: aload         17
     954: astore        18
     956: iconst_0
     957: istore        19
     959: aload         18
     961: checkcast     #90                 // class kotlin/collections/ArrayDeque
     964: astore        20
     966: iconst_0
     967: istore        21
     969: aload         20
     971: invokevirtual #169                // Method kotlin/collections/ArrayDeque.removeLastOrNull:()Ljava/lang/Object;
     974: checkcast     #116                // class java/lang/Character
     977: dup
     978: ifnull        999
     981: astore        22
     983: iconst_0
     984: istore        23
     986: aload         12
     988: aload         22
     990: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     995: pop
     996: goto          1000
     999: pop
    1000: nop
    1001: goto          933
    1004: nop
    1005: aload         12
    1007: checkcast     #32                 // class java/util/List
    1010: nop
    1011: checkcast     #38                 // class java/lang/Iterable
    1014: ldc           #24                 // String
    1016: checkcast     #108                // class java/lang/CharSequence
    1019: aconst_null
    1020: aconst_null
    1021: iconst_0
    1022: aconst_null
    1023: aconst_null
    1024: bipush        62
    1026: aconst_null
    1027: invokestatic  #173                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1030: areturn

  public final java.lang.String part2(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #24                 // String
       9: invokestatic  #30                 // Method UtilsKt.partitionOnElement:(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List;
      12: astore_2
      13: aload_2
      14: iconst_0
      15: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      20: checkcast     #32                 // class java/util/List
      23: astore_3
      24: aload_2
      25: iconst_1
      26: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      31: checkcast     #32                 // class java/util/List
      34: astore        4
      36: aload_3
      37: checkcast     #38                 // class java/lang/Iterable
      40: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        7
      47: aload         7
      49: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifne          65
      57: new           #50                 // class java/util/NoSuchElementException
      60: dup
      61: invokespecial #51                 // Method java/util/NoSuchElementException."<init>":()V
      64: athrow
      65: aload         7
      67: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      72: checkcast     #57                 // class java/lang/String
      75: astore        8
      77: iconst_0
      78: istore        9
      80: aload         8
      82: invokevirtual #61                 // Method java/lang/String.length:()I
      85: istore        8
      87: aload         7
      89: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      94: ifeq          133
      97: aload         7
      99: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     104: checkcast     #57                 // class java/lang/String
     107: astore        9
     109: iconst_0
     110: istore        10
     112: aload         9
     114: invokevirtual #61                 // Method java/lang/String.length:()I
     117: istore        9
     119: iload         8
     121: iload         9
     123: if_icmpge     87
     126: iload         9
     128: istore        8
     130: goto          87
     133: iload         8
     135: iconst_3
     136: idiv
     137: istore        5
     139: new           #63                 // class kotlin/ranges/IntRange
     142: dup
     143: iconst_1
     144: iload         5
     146: invokespecial #66                 // Method kotlin/ranges/IntRange."<init>":(II)V
     149: checkcast     #38                 // class java/lang/Iterable
     152: invokestatic  #72                 // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     155: checkcast     #38                 // class java/lang/Iterable
     158: astore        7
     160: iconst_0
     161: istore        8
     163: aload         7
     165: astore        9
     167: new           #74                 // class java/util/ArrayList
     170: dup
     171: aload         7
     173: bipush        10
     175: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     178: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     181: checkcast     #83                 // class java/util/Collection
     184: astore        10
     186: iconst_0
     187: istore        11
     189: aload         9
     191: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     196: astore        12
     198: aload         12
     200: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     205: ifeq          261
     208: aload         12
     210: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     215: astore        13
     217: aload         10
     219: aload         13
     221: checkcast     #85                 // class java/lang/Number
     224: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     227: istore        14
     229: astore        28
     231: iconst_0
     232: istore        15
     234: new           #90                 // class kotlin/collections/ArrayDeque
     237: dup
     238: aload_3
     239: invokeinterface #93,  1           // InterfaceMethod java/util/List.size:()I
     244: iconst_2
     245: imul
     246: invokespecial #94                 // Method kotlin/collections/ArrayDeque."<init>":(I)V
     249: aload         28
     251: swap
     252: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     257: pop
     258: goto          198
     261: aload         10
     263: checkcast     #32                 // class java/util/List
     266: nop
     267: checkcast     #83                 // class java/util/Collection
     270: invokestatic  #224                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     273: astore        6
     275: aload_3
     276: iconst_1
     277: invokestatic  #102                // Method kotlin/collections/CollectionsKt.dropLast:(Ljava/util/List;I)Ljava/util/List;
     280: checkcast     #38                 // class java/lang/Iterable
     283: invokestatic  #105                // Method kotlin/collections/CollectionsKt.reversed:(Ljava/lang/Iterable;)Ljava/util/List;
     286: astore        7
     288: aload         7
     290: invokeinterface #106,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     295: astore        8
     297: aload         8
     299: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     304: ifeq          396
     307: aload         8
     309: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     314: checkcast     #57                 // class java/lang/String
     317: astore        9
     319: iconst_1
     320: istore        10
     322: iload         10
     324: iload         5
     326: if_icmpgt     297
     329: aload         9
     331: checkcast     #108                // class java/lang/CharSequence
     334: iconst_4
     335: iload         10
     337: imul
     338: iconst_3
     339: isub
     340: invokestatic  #114                // Method kotlin/text/StringsKt.getOrNull:(Ljava/lang/CharSequence;I)Ljava/lang/Character;
     343: astore        11
     345: aload         11
     347: ifnull        383
     350: aload         11
     352: bipush        32
     354: istore        12
     356: invokevirtual #120                // Method java/lang/Character.charValue:()C
     359: iload         12
     361: if_icmpeq     383
     364: aload         6
     366: iload         10
     368: iconst_1
     369: isub
     370: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     375: checkcast     #90                 // class kotlin/collections/ArrayDeque
     378: aload         11
     380: invokevirtual #124                // Method kotlin/collections/ArrayDeque.addLast:(Ljava/lang/Object;)V
     383: iload         10
     385: iload         5
     387: if_icmpeq     297
     390: iinc          10, 1
     393: goto          329
     396: aload         4
     398: checkcast     #38                 // class java/lang/Iterable
     401: astore        9
     403: iconst_0
     404: istore        10
     406: aload         9
     408: astore        11
     410: new           #74                 // class java/util/ArrayList
     413: dup
     414: aload         9
     416: bipush        10
     418: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     421: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     424: checkcast     #83                 // class java/util/Collection
     427: astore        12
     429: iconst_0
     430: istore        13
     432: aload         11
     434: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     439: astore        14
     441: aload         14
     443: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     448: ifeq          636
     451: aload         14
     453: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     458: astore        15
     460: aload         12
     462: aload         15
     464: checkcast     #57                 // class java/lang/String
     467: astore        16
     469: astore        28
     471: iconst_0
     472: istore        17
     474: aload         16
     476: checkcast     #108                // class java/lang/CharSequence
     479: iconst_3
     480: anewarray     #57                 // class java/lang/String
     483: astore        18
     485: aload         18
     487: iconst_0
     488: ldc           #126                // String move
     490: aastore
     491: aload         18
     493: iconst_1
     494: ldc           #128                // String  from
     496: aastore
     497: aload         18
     499: iconst_2
     500: ldc           #130                // String  to
     502: aastore
     503: aload         18
     505: iconst_0
     506: iconst_0
     507: bipush        6
     509: aconst_null
     510: invokestatic  #134                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     513: iconst_1
     514: iconst_4
     515: invokeinterface #138,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     520: checkcast     #38                 // class java/lang/Iterable
     523: astore        18
     525: iconst_0
     526: istore        19
     528: aload         18
     530: astore        20
     532: new           #74                 // class java/util/ArrayList
     535: dup
     536: aload         18
     538: bipush        10
     540: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     543: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     546: checkcast     #83                 // class java/util/Collection
     549: astore        21
     551: iconst_0
     552: istore        22
     554: aload         20
     556: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     561: astore        23
     563: aload         23
     565: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     570: ifeq          617
     573: aload         23
     575: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     580: astore        24
     582: aload         21
     584: aload         24
     586: checkcast     #57                 // class java/lang/String
     589: astore        25
     591: astore        26
     593: iconst_0
     594: istore        27
     596: aload         25
     598: invokestatic  #144                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     601: nop
     602: invokestatic  #148                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     605: aload         26
     607: swap
     608: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     613: pop
     614: goto          563
     617: aload         21
     619: checkcast     #32                 // class java/util/List
     622: nop
     623: nop
     624: aload         28
     626: swap
     627: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     632: pop
     633: goto          441
     636: aload         12
     638: checkcast     #32                 // class java/util/List
     641: nop
     642: checkcast     #38                 // class java/lang/Iterable
     645: astore        9
     647: nop
     648: iconst_0
     649: istore        10
     651: aload         9
     653: astore        11
     655: new           #74                 // class java/util/ArrayList
     658: dup
     659: aload         9
     661: bipush        10
     663: invokestatic  #78                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     666: invokespecial #81                 // Method java/util/ArrayList."<init>":(I)V
     669: checkcast     #83                 // class java/util/Collection
     672: astore        12
     674: iconst_0
     675: istore        13
     677: aload         11
     679: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     684: astore        14
     686: aload         14
     688: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     693: ifeq          792
     696: aload         14
     698: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     703: astore        15
     705: aload         12
     707: aload         15
     709: checkcast     #32                 // class java/util/List
     712: astore        16
     714: astore        28
     716: iconst_0
     717: istore        17
     719: aload         16
     721: iconst_0
     722: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     727: checkcast     #85                 // class java/lang/Number
     730: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     733: istore        18
     735: aload         16
     737: iconst_1
     738: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     743: checkcast     #85                 // class java/lang/Number
     746: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     749: istore        19
     751: aload         16
     753: iconst_2
     754: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     759: checkcast     #85                 // class java/lang/Number
     762: invokevirtual #88                 // Method java/lang/Number.intValue:()I
     765: istore        20
     767: new           #150                // class Move
     770: dup
     771: iload         18
     773: iload         19
     775: iload         20
     777: invokespecial #153                // Method Move."<init>":(III)V
     780: aload         28
     782: swap
     783: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     788: pop
     789: goto          686
     792: aload         12
     794: checkcast     #32                 // class java/util/List
     797: nop
     798: astore        8
     800: aload         8
     802: invokeinterface #106,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     807: astore        9
     809: aload         9
     811: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     816: ifeq          984
     819: aload         9
     821: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     826: checkcast     #150                // class Move
     829: astore        10
     831: aload         6
     833: aload         10
     835: invokevirtual #162                // Method Move.getFrom:()I
     838: iconst_1
     839: isub
     840: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     845: checkcast     #90                 // class kotlin/collections/ArrayDeque
     848: invokevirtual #225                // Method kotlin/collections/ArrayDeque.size:()I
     851: aload         10
     853: invokevirtual #156                // Method Move.getSize:()I
     856: isub
     857: istore        11
     859: aload         6
     861: aload         10
     863: invokevirtual #162                // Method Move.getFrom:()I
     866: iconst_1
     867: isub
     868: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     873: checkcast     #90                 // class kotlin/collections/ArrayDeque
     876: iconst_0
     877: iload         11
     879: invokevirtual #226                // Method kotlin/collections/ArrayDeque.subList:(II)Ljava/util/List;
     882: astore        12
     884: aload         6
     886: aload         10
     888: invokevirtual #162                // Method Move.getFrom:()I
     891: iconst_1
     892: isub
     893: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     898: checkcast     #90                 // class kotlin/collections/ArrayDeque
     901: iload         11
     903: aload         6
     905: aload         10
     907: invokevirtual #162                // Method Move.getFrom:()I
     910: iconst_1
     911: isub
     912: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     917: checkcast     #90                 // class kotlin/collections/ArrayDeque
     920: invokevirtual #225                // Method kotlin/collections/ArrayDeque.size:()I
     923: invokevirtual #226                // Method kotlin/collections/ArrayDeque.subList:(II)Ljava/util/List;
     926: astore        13
     928: aload         6
     930: aload         10
     932: invokevirtual #162                // Method Move.getFrom:()I
     935: iconst_1
     936: isub
     937: new           #90                 // class kotlin/collections/ArrayDeque
     940: dup
     941: aload         12
     943: checkcast     #83                 // class java/util/Collection
     946: invokespecial #229                // Method kotlin/collections/ArrayDeque."<init>":(Ljava/util/Collection;)V
     949: invokeinterface #233,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     954: pop
     955: aload         6
     957: aload         10
     959: invokevirtual #159                // Method Move.getTo:()I
     962: iconst_1
     963: isub
     964: invokeinterface #36,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     969: checkcast     #90                 // class kotlin/collections/ArrayDeque
     972: aload         13
     974: checkcast     #83                 // class java/util/Collection
     977: invokevirtual #237                // Method kotlin/collections/ArrayDeque.addAll:(Ljava/util/Collection;)Z
     980: pop
     981: goto          809
     984: aload         6
     986: checkcast     #38                 // class java/lang/Iterable
     989: astore        9
     991: iconst_0
     992: istore        10
     994: aload         9
     996: astore        11
     998: new           #74                 // class java/util/ArrayList
    1001: dup
    1002: invokespecial #166                // Method java/util/ArrayList."<init>":()V
    1005: checkcast     #83                 // class java/util/Collection
    1008: astore        12
    1010: iconst_0
    1011: istore        13
    1013: aload         11
    1015: astore        14
    1017: iconst_0
    1018: istore        15
    1020: aload         14
    1022: invokeinterface #42,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1027: astore        16
    1029: aload         16
    1031: invokeinterface #48,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1036: ifeq          1100
    1039: aload         16
    1041: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1046: astore        17
    1048: aload         17
    1050: astore        18
    1052: iconst_0
    1053: istore        19
    1055: aload         18
    1057: checkcast     #90                 // class kotlin/collections/ArrayDeque
    1060: astore        20
    1062: iconst_0
    1063: istore        21
    1065: aload         20
    1067: invokevirtual #169                // Method kotlin/collections/ArrayDeque.removeLastOrNull:()Ljava/lang/Object;
    1070: checkcast     #116                // class java/lang/Character
    1073: dup
    1074: ifnull        1095
    1077: astore        22
    1079: iconst_0
    1080: istore        23
    1082: aload         12
    1084: aload         22
    1086: invokeinterface #98,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1091: pop
    1092: goto          1096
    1095: pop
    1096: nop
    1097: goto          1029
    1100: nop
    1101: aload         12
    1103: checkcast     #32                 // class java/util/List
    1106: nop
    1107: checkcast     #38                 // class java/lang/Iterable
    1110: ldc           #24                 // String
    1112: checkcast     #108                // class java/lang/CharSequence
    1115: aconst_null
    1116: aconst_null
    1117: iconst_0
    1118: aconst_null
    1119: aconst_null
    1120: bipush        62
    1122: aconst_null
    1123: invokestatic  #173                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1126: areturn

  public Day05$Companion(kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: aload_0
       1: invokespecial #248                // Method "<init>":()V
       4: return
}

Compiled from "Day05.kt"
public final class Day05 {
  public static final Day05$Companion Companion;

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

  static {};
    Code:
       0: new           #13                 // class Day05$Companion
       3: dup
       4: aconst_null
       5: invokespecial #16                 // Method Day05$Companion."<init>":(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
       8: putstatic     #20                 // Field Companion:LDay05$Companion;
      11: return
}