object Day20 {
    enum class ModuleType {
        BROADCASTER,
        CONJUNCTION,
        FLIP_FLOP
    }

    enum class PulseType {
        HIGH,
        LOW
    }

    data class Pulse(val type: PulseType, val sender: String)

    data class Module(
        val id: String,
        val type: ModuleType,
        val destinations: List<String>,
        var on: Boolean,
        val inputs: MutableSet<String> = mutableSetOf(),
        val lastPulses: MutableMap<String, PulseType> = mutableMapOf()
    ) {

        fun process(pulse: Pulse): List<Pair<String, Pulse>> {
            lastPulses[pulse.sender] = pulse.type
            return when (type) {
                ModuleType.BROADCASTER -> destinations.map { it to pulse }
                ModuleType.CONJUNCTION -> {
                    val typeToSend = if (inputs.map { lastPulses[it] ?: PulseType.LOW }.all { it == PulseType.HIGH }) {
                        PulseType.LOW
                    } else {
                        PulseType.HIGH
                    }
                    destinations.map { it to Pulse(typeToSend, id) }
                }

                ModuleType.FLIP_FLOP -> {
                    if (pulse.type == PulseType.HIGH) {
                        emptyList()
                    } else {
                        val typeToSend = if (on) {
                            PulseType.LOW
                        } else {
                            PulseType.HIGH
                        }
                        on = !on
                        destinations.map { it to Pulse(typeToSend, id) }
                    }
                }
            }
        }

        companion object {
            fun parse(input: String): Module {
                val (moduleIdAndType, destinations) = input.split(" -> ")
                if (moduleIdAndType == "broadcaster") {
                    return Module(
                        "broadcaster",
                        ModuleType.BROADCASTER,
                        destinations.split(", "),
                        true
                    )
                }
                val type = moduleIdAndType.take(1)
                val id = moduleIdAndType.drop(1)
                return Module(
                    id,
                    when (type) {
                        "%" -> ModuleType.FLIP_FLOP
                        "&" -> ModuleType.CONJUNCTION
                        else -> throw IllegalArgumentException("Unknown module type: $type")
                    },
                    destinations.split(", "),
                    type == "&"
                )
            }
        }
    }

    fun part1(input: List<String>): String {
        val modules = input.map { Module.parse(it) }.associateBy { it.id }
        modules.forEach { key, value ->
            value.destinations.forEach { modules[it]?.inputs?.add(key) }
        }
        val presses = (1..1000).map { pushButton(modules) }.flatMap { it.values }.reduce { acc, map ->
            (acc.toList() + map.toList())
                .groupBy { it.first }
                .mapValues { it.value.map { it.second }.sum() }
        }
        return presses.values.reduce(Long::times).toString()
    }

    private fun pushButton(modules: Map<String, Module>): Map<String, Map<PulseType, Long>> {
        val initialModule = modules["broadcaster"]!!
        val initialPulse = Pulse(PulseType.LOW, "broadcaster")
        val queue = ArrayDeque<Pair<Module?, Pulse>>(listOf(initialModule to initialPulse))
        val pulseTypeMap = mutableMapOf<String, MutableMap<PulseType, Long>>()
        pulseTypeMap["broadcaster"] = mutableMapOf(PulseType.LOW to 1L)
        while (queue.isNotEmpty()) {
            val (module, pulse) = queue.removeFirst()
            val destinations = module?.process(pulse) ?: emptyList()
            destinations.forEach { (destination, pulse) ->
                val moduleMap = pulseTypeMap.getOrPut(destination) { mutableMapOf() }
                moduleMap[pulse.type] = moduleMap.getOrDefault(pulse.type, 0) + 1
            }
            queue.addAll(destinations.map { (destination, pulse) -> modules[destination] to pulse })
        }
        return pulseTypeMap
    }

    private fun numberOfButtonPushesUntilLowState(modules: Map<String, Module>, key: String): Long {
        val initialModule = modules["broadcaster"]!!
        val initialPulse = Pulse(PulseType.LOW, "broadcaster")
        val queue = ArrayDeque<Pair<Module?, Pulse>>(listOf(initialModule to initialPulse))
        var count = 1L
        // We know the input to the target is a cond, so we can just find when the inputs to the cond are all high
        val targetInput =
            modules.values.find { it.destinations.contains(key) } ?: throw IllegalStateException("Invalid input: $key")
        val inputsOfTargetInput = targetInput.inputs.toSet()
        val countWhenHighPulse = mutableMapOf<String, Long>()
        while (true) {
            if (countWhenHighPulse.size == inputsOfTargetInput.size) {
                return countWhenHighPulse.values.reduce(Long::times)
            }
            val (module, pulse) = queue.removeFirst()
            val destinations = module?.process(pulse) ?: emptyList()
            val destinationsToPulses = destinations.map { (destination, pulse) -> modules[destination] to pulse }
            destinationsToPulses.forEach { (desination, pulse) ->
                if ((desination?.id ?: "") == targetInput.id)
                    if (pulse.type == PulseType.HIGH && !countWhenHighPulse.containsKey(module?.id)) {
                        countWhenHighPulse[module!!.id] = count
                    }
            }
            queue.addAll(destinationsToPulses)
            if (queue.isEmpty()) {
                queue.add(initialModule to initialPulse)
                count++
            }
        }
    }

    fun part2(input: List<String>): String {
        val modules = input.map { Module.parse(it) }.associateBy { it.id }
        return numberOfButtonPushesUntilLowState(modules, "rx").toString()
    }

}

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

  private final java.lang.String id;

  private final Day20$ModuleType type;

  private final java.util.List<java.lang.String> destinations;

  private boolean on;

  private final java.util.Set<java.lang.String> inputs;

  private final java.util.Map<java.lang.String, Day20$PulseType> lastPulses;

  public Day20$Module(java.lang.String, Day20$ModuleType, java.util.List<java.lang.String>, boolean, java.util.Set<java.lang.String>, java.util.Map<java.lang.String, Day20$PulseType>);
    Code:
       0: aload_1
       1: ldc           #10                 // String id
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #18                 // String type
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_3
      13: ldc           #20                 // String destinations
      15: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      18: aload         5
      20: ldc           #22                 // String inputs
      22: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      25: aload         6
      27: ldc           #24                 // String lastPulses
      29: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      32: aload_0
      33: invokespecial #27                 // Method java/lang/Object."<init>":()V
      36: aload_0
      37: aload_1
      38: putfield      #30                 // Field id:Ljava/lang/String;
      41: aload_0
      42: aload_2
      43: putfield      #33                 // Field type:LDay20$ModuleType;
      46: aload_0
      47: aload_3
      48: putfield      #36                 // Field destinations:Ljava/util/List;
      51: aload_0
      52: iload         4
      54: putfield      #40                 // Field on:Z
      57: aload_0
      58: aload         5
      60: putfield      #43                 // Field inputs:Ljava/util/Set;
      63: aload_0
      64: aload         6
      66: putfield      #46                 // Field lastPulses:Ljava/util/Map;
      69: return

  public Day20$Module(java.lang.String, Day20$ModuleType, java.util.List, boolean, java.util.Set, java.util.Map, int, kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: iload         7
       2: bipush        16
       4: iand
       5: ifeq          20
       8: new           #51                 // class java/util/LinkedHashSet
      11: dup
      12: invokespecial #52                 // Method java/util/LinkedHashSet."<init>":()V
      15: checkcast     #54                 // class java/util/Set
      18: astore        5
      20: iload         7
      22: bipush        32
      24: iand
      25: ifeq          40
      28: new           #56                 // class java/util/LinkedHashMap
      31: dup
      32: invokespecial #57                 // Method java/util/LinkedHashMap."<init>":()V
      35: checkcast     #59                 // class java/util/Map
      38: astore        6
      40: aload_0
      41: aload_1
      42: aload_2
      43: aload_3
      44: iload         4
      46: aload         5
      48: aload         6
      50: invokespecial #61                 // Method "<init>":(Ljava/lang/String;LDay20$ModuleType;Ljava/util/List;ZLjava/util/Set;Ljava/util/Map;)V
      53: return

  public final java.lang.String getId();
    Code:
       0: aload_0
       1: getfield      #30                 // Field id:Ljava/lang/String;
       4: areturn

  public final Day20$ModuleType getType();
    Code:
       0: aload_0
       1: getfield      #33                 // Field type:LDay20$ModuleType;
       4: areturn

  public final java.util.List<java.lang.String> getDestinations();
    Code:
       0: aload_0
       1: getfield      #36                 // Field destinations:Ljava/util/List;
       4: areturn

  public final boolean getOn();
    Code:
       0: aload_0
       1: getfield      #40                 // Field on:Z
       4: ireturn

  public final void setOn(boolean);
    Code:
       0: aload_0
       1: iload_1
       2: putfield      #40                 // Field on:Z
       5: return

  public final java.util.Set<java.lang.String> getInputs();
    Code:
       0: aload_0
       1: getfield      #43                 // Field inputs:Ljava/util/Set;
       4: areturn

  public final java.util.Map<java.lang.String, Day20$PulseType> getLastPulses();
    Code:
       0: aload_0
       1: getfield      #46                 // Field lastPulses:Ljava/util/Map;
       4: areturn

  public final java.util.List<kotlin.Pair<java.lang.String, Day20$Pulse>> process(Day20$Pulse);
    Code:
       0: aload_1
       1: ldc           #84                 // String pulse
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #46                 // Field lastPulses:Ljava/util/Map;
      10: aload_1
      11: invokevirtual #89                 // Method Day20$Pulse.getSender:()Ljava/lang/String;
      14: aload_1
      15: invokevirtual #92                 // Method Day20$Pulse.getType:()LDay20$PulseType;
      18: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      23: pop
      24: aload_0
      25: getfield      #33                 // Field type:LDay20$ModuleType;
      28: getstatic     #102                // Field Day20$Module$WhenMappings.$EnumSwitchMapping$0:[I
      31: swap
      32: invokevirtual #108                // Method Day20$ModuleType.ordinal:()I
      35: iaload
      36: tableswitch   { // 1 to 3
                     1: 64
                     2: 167
                     3: 500
               default: 664
          }
      64: aload_0
      65: getfield      #36                 // Field destinations:Ljava/util/List;
      68: checkcast     #110                // class java/lang/Iterable
      71: astore_2
      72: iconst_0
      73: istore_3
      74: aload_2
      75: astore        4
      77: new           #112                // class java/util/ArrayList
      80: dup
      81: aload_2
      82: bipush        10
      84: invokestatic  #118                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      87: invokespecial #121                // Method java/util/ArrayList."<init>":(I)V
      90: checkcast     #123                // class java/util/Collection
      93: astore        5
      95: iconst_0
      96: istore        6
      98: aload         4
     100: invokeinterface #127,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     105: astore        7
     107: aload         7
     109: invokeinterface #132,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     114: ifeq          158
     117: aload         7
     119: invokeinterface #136,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     124: astore        8
     126: aload         5
     128: aload         8
     130: checkcast     #138                // class java/lang/String
     133: astore        9
     135: astore        12
     137: iconst_0
     138: istore        10
     140: aload         9
     142: aload_1
     143: invokestatic  #144                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     146: aload         12
     148: swap
     149: invokeinterface #148,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     154: pop
     155: goto          107
     158: aload         5
     160: checkcast     #150                // class java/util/List
     163: nop
     164: goto          672
     167: aload_0
     168: getfield      #43                 // Field inputs:Ljava/util/Set;
     171: checkcast     #110                // class java/lang/Iterable
     174: astore_3
     175: iconst_0
     176: istore        4
     178: aload_3
     179: astore        5
     181: new           #112                // class java/util/ArrayList
     184: dup
     185: aload_3
     186: bipush        10
     188: invokestatic  #118                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     191: invokespecial #121                // Method java/util/ArrayList."<init>":(I)V
     194: checkcast     #123                // class java/util/Collection
     197: astore        6
     199: iconst_0
     200: istore        7
     202: aload         5
     204: invokeinterface #127,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     209: astore        8
     211: aload         8
     213: invokeinterface #132,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     218: ifeq          278
     221: aload         8
     223: invokeinterface #136,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     228: astore        9
     230: aload         6
     232: aload         9
     234: checkcast     #138                // class java/lang/String
     237: astore        10
     239: astore        12
     241: iconst_0
     242: istore        11
     244: aload_0
     245: getfield      #46                 // Field lastPulses:Ljava/util/Map;
     248: aload         10
     250: invokeinterface #154,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     255: checkcast     #156                // class Day20$PulseType
     258: dup
     259: ifnonnull     266
     262: pop
     263: getstatic     #160                // Field Day20$PulseType.LOW:LDay20$PulseType;
     266: aload         12
     268: swap
     269: invokeinterface #148,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     274: pop
     275: goto          211
     278: aload         6
     280: checkcast     #150                // class java/util/List
     283: nop
     284: checkcast     #110                // class java/lang/Iterable
     287: astore_3
     288: iconst_0
     289: istore        4
     291: aload_3
     292: instanceof    #123                // class java/util/Collection
     295: ifeq          314
     298: aload_3
     299: checkcast     #123                // class java/util/Collection
     302: invokeinterface #163,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     307: ifeq          314
     310: iconst_1
     311: goto          372
     314: aload_3
     315: invokeinterface #127,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     320: astore        5
     322: aload         5
     324: invokeinterface #132,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     329: ifeq          371
     332: aload         5
     334: invokeinterface #136,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     339: astore        6
     341: aload         6
     343: checkcast     #156                // class Day20$PulseType
     346: astore        7
     348: iconst_0
     349: istore        8
     351: aload         7
     353: getstatic     #166                // Field Day20$PulseType.HIGH:LDay20$PulseType;
     356: if_acmpne     363
     359: iconst_1
     360: goto          364
     363: iconst_0
     364: ifne          322
     367: iconst_0
     368: goto          372
     371: iconst_1
     372: ifeq          381
     375: getstatic     #160                // Field Day20$PulseType.LOW:LDay20$PulseType;
     378: goto          384
     381: getstatic     #166                // Field Day20$PulseType.HIGH:LDay20$PulseType;
     384: astore_2
     385: aload_0
     386: getfield      #36                 // Field destinations:Ljava/util/List;
     389: checkcast     #110                // class java/lang/Iterable
     392: astore_3
     393: iconst_0
     394: istore        4
     396: aload_3
     397: astore        5
     399: new           #112                // class java/util/ArrayList
     402: dup
     403: aload_3
     404: bipush        10
     406: invokestatic  #118                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     409: invokespecial #121                // Method java/util/ArrayList."<init>":(I)V
     412: checkcast     #123                // class java/util/Collection
     415: astore        6
     417: iconst_0
     418: istore        7
     420: aload         5
     422: invokeinterface #127,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     427: astore        8
     429: aload         8
     431: invokeinterface #132,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     436: ifeq          491
     439: aload         8
     441: invokeinterface #136,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     446: astore        9
     448: aload         6
     450: aload         9
     452: checkcast     #138                // class java/lang/String
     455: astore        10
     457: astore        12
     459: iconst_0
     460: istore        11
     462: aload         10
     464: new           #86                 // class Day20$Pulse
     467: dup
     468: aload_2
     469: aload_0
     470: getfield      #30                 // Field id:Ljava/lang/String;
     473: invokespecial #169                // Method Day20$Pulse."<init>":(LDay20$PulseType;Ljava/lang/String;)V
     476: invokestatic  #144                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     479: aload         12
     481: swap
     482: invokeinterface #148,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     487: pop
     488: goto          429
     491: aload         6
     493: checkcast     #150                // class java/util/List
     496: nop
     497: goto          672
     500: aload_1
     501: invokevirtual #92                 // Method Day20$Pulse.getType:()LDay20$PulseType;
     504: getstatic     #166                // Field Day20$PulseType.HIGH:LDay20$PulseType;
     507: if_acmpne     516
     510: invokestatic  #172                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
     513: goto          672
     516: aload_0
     517: getfield      #40                 // Field on:Z
     520: ifeq          529
     523: getstatic     #160                // Field Day20$PulseType.LOW:LDay20$PulseType;
     526: goto          532
     529: getstatic     #166                // Field Day20$PulseType.HIGH:LDay20$PulseType;
     532: astore_2
     533: aload_0
     534: aload_0
     535: getfield      #40                 // Field on:Z
     538: ifne          545
     541: iconst_1
     542: goto          546
     545: iconst_0
     546: putfield      #40                 // Field on:Z
     549: aload_0
     550: getfield      #36                 // Field destinations:Ljava/util/List;
     553: checkcast     #110                // class java/lang/Iterable
     556: astore_3
     557: iconst_0
     558: istore        4
     560: aload_3
     561: astore        5
     563: new           #112                // class java/util/ArrayList
     566: dup
     567: aload_3
     568: bipush        10
     570: invokestatic  #118                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     573: invokespecial #121                // Method java/util/ArrayList."<init>":(I)V
     576: checkcast     #123                // class java/util/Collection
     579: astore        6
     581: iconst_0
     582: istore        7
     584: aload         5
     586: invokeinterface #127,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     591: astore        8
     593: aload         8
     595: invokeinterface #132,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     600: ifeq          655
     603: aload         8
     605: invokeinterface #136,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     610: astore        9
     612: aload         6
     614: aload         9
     616: checkcast     #138                // class java/lang/String
     619: astore        10
     621: astore        12
     623: iconst_0
     624: istore        11
     626: aload         10
     628: new           #86                 // class Day20$Pulse
     631: dup
     632: aload_2
     633: aload_0
     634: getfield      #30                 // Field id:Ljava/lang/String;
     637: invokespecial #169                // Method Day20$Pulse."<init>":(LDay20$PulseType;Ljava/lang/String;)V
     640: invokestatic  #144                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     643: aload         12
     645: swap
     646: invokeinterface #148,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     651: pop
     652: goto          593
     655: aload         6
     657: checkcast     #150                // class java/util/List
     660: nop
     661: goto          672
     664: new           #174                // class kotlin/NoWhenBranchMatchedException
     667: dup
     668: invokespecial #175                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     671: athrow
     672: areturn

  public final java.lang.String component1();
    Code:
       0: aload_0
       1: getfield      #30                 // Field id:Ljava/lang/String;
       4: areturn

  public final Day20$ModuleType component2();
    Code:
       0: aload_0
       1: getfield      #33                 // Field type:LDay20$ModuleType;
       4: areturn

  public final java.util.List<java.lang.String> component3();
    Code:
       0: aload_0
       1: getfield      #36                 // Field destinations:Ljava/util/List;
       4: areturn

  public final boolean component4();
    Code:
       0: aload_0
       1: getfield      #40                 // Field on:Z
       4: ireturn

  public final java.util.Set<java.lang.String> component5();
    Code:
       0: aload_0
       1: getfield      #43                 // Field inputs:Ljava/util/Set;
       4: areturn

  public final java.util.Map<java.lang.String, Day20$PulseType> component6();
    Code:
       0: aload_0
       1: getfield      #46                 // Field lastPulses:Ljava/util/Map;
       4: areturn

  public final Day20$Module copy(java.lang.String, Day20$ModuleType, java.util.List<java.lang.String>, boolean, java.util.Set<java.lang.String>, java.util.Map<java.lang.String, Day20$PulseType>);
    Code:
       0: aload_1
       1: ldc           #10                 // String id
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #18                 // String type
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_3
      13: ldc           #20                 // String destinations
      15: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      18: aload         5
      20: ldc           #22                 // String inputs
      22: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      25: aload         6
      27: ldc           #24                 // String lastPulses
      29: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      32: new           #2                  // class Day20$Module
      35: dup
      36: aload_1
      37: aload_2
      38: aload_3
      39: iload         4
      41: aload         5
      43: aload         6
      45: invokespecial #61                 // Method "<init>":(Ljava/lang/String;LDay20$ModuleType;Ljava/util/List;ZLjava/util/Set;Ljava/util/Map;)V
      48: areturn

  public static Day20$Module copy$default(Day20$Module, java.lang.String, Day20$ModuleType, java.util.List, boolean, java.util.Set, java.util.Map, int, java.lang.Object);
    Code:
       0: iload         7
       2: iconst_1
       3: iand
       4: ifeq          12
       7: aload_0
       8: getfield      #30                 // Field id:Ljava/lang/String;
      11: astore_1
      12: iload         7
      14: iconst_2
      15: iand
      16: ifeq          24
      19: aload_0
      20: getfield      #33                 // Field type:LDay20$ModuleType;
      23: astore_2
      24: iload         7
      26: iconst_4
      27: iand
      28: ifeq          36
      31: aload_0
      32: getfield      #36                 // Field destinations:Ljava/util/List;
      35: astore_3
      36: iload         7
      38: bipush        8
      40: iand
      41: ifeq          50
      44: aload_0
      45: getfield      #40                 // Field on:Z
      48: istore        4
      50: iload         7
      52: bipush        16
      54: iand
      55: ifeq          64
      58: aload_0
      59: getfield      #43                 // Field inputs:Ljava/util/Set;
      62: astore        5
      64: iload         7
      66: bipush        32
      68: iand
      69: ifeq          78
      72: aload_0
      73: getfield      #46                 // Field lastPulses:Ljava/util/Map;
      76: astore        6
      78: aload_0
      79: aload_1
      80: aload_2
      81: aload_3
      82: iload         4
      84: aload         5
      86: aload         6
      88: invokevirtual #209                // Method copy:(Ljava/lang/String;LDay20$ModuleType;Ljava/util/List;ZLjava/util/Set;Ljava/util/Map;)LDay20$Module;
      91: areturn

  public java.lang.String toString();
    Code:
       0: new           #212                // class java/lang/StringBuilder
       3: dup
       4: invokespecial #213                // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #215                // String Module(id=
       9: invokevirtual #219                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #30                 // Field id:Ljava/lang/String;
      16: invokevirtual #219                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      19: ldc           #221                // String , type=
      21: invokevirtual #219                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #33                 // Field type:LDay20$ModuleType;
      28: invokevirtual #224                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      31: ldc           #226                // String , destinations=
      33: invokevirtual #219                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      36: aload_0
      37: getfield      #36                 // Field destinations:Ljava/util/List;
      40: invokevirtual #224                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      43: ldc           #228                // String , on=
      45: invokevirtual #219                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      48: aload_0
      49: getfield      #40                 // Field on:Z
      52: invokevirtual #231                // Method java/lang/StringBuilder.append:(Z)Ljava/lang/StringBuilder;
      55: ldc           #233                // String , inputs=
      57: invokevirtual #219                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      60: aload_0
      61: getfield      #43                 // Field inputs:Ljava/util/Set;
      64: invokevirtual #224                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      67: ldc           #235                // String , lastPulses=
      69: invokevirtual #219                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      72: aload_0
      73: getfield      #46                 // Field lastPulses:Ljava/util/Map;
      76: invokevirtual #224                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      79: bipush        41
      81: invokevirtual #238                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      84: invokevirtual #240                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      87: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #30                 // Field id:Ljava/lang/String;
       4: invokevirtual #243                // Method java/lang/String.hashCode:()I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #33                 // Field type:LDay20$ModuleType;
      16: invokevirtual #244                // Method Day20$ModuleType.hashCode:()I
      19: iadd
      20: istore_1
      21: iload_1
      22: bipush        31
      24: imul
      25: aload_0
      26: getfield      #36                 // Field destinations:Ljava/util/List;
      29: invokevirtual #245                // Method java/lang/Object.hashCode:()I
      32: iadd
      33: istore_1
      34: iload_1
      35: bipush        31
      37: imul
      38: aload_0
      39: getfield      #40                 // Field on:Z
      42: invokestatic  #250                // Method java/lang/Boolean.hashCode:(Z)I
      45: iadd
      46: istore_1
      47: iload_1
      48: bipush        31
      50: imul
      51: aload_0
      52: getfield      #43                 // Field inputs:Ljava/util/Set;
      55: invokevirtual #245                // Method java/lang/Object.hashCode:()I
      58: iadd
      59: istore_1
      60: iload_1
      61: bipush        31
      63: imul
      64: aload_0
      65: getfield      #46                 // Field lastPulses:Ljava/util/Map;
      68: invokevirtual #245                // Method java/lang/Object.hashCode:()I
      71: iadd
      72: istore_1
      73: iload_1
      74: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Day20$Module
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day20$Module
      20: astore_2
      21: aload_0
      22: getfield      #30                 // Field id:Ljava/lang/String;
      25: aload_2
      26: getfield      #30                 // Field id:Ljava/lang/String;
      29: invokestatic  #257                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      32: ifne          37
      35: iconst_0
      36: ireturn
      37: aload_0
      38: getfield      #33                 // Field type:LDay20$ModuleType;
      41: aload_2
      42: getfield      #33                 // Field type:LDay20$ModuleType;
      45: if_acmpeq     50
      48: iconst_0
      49: ireturn
      50: aload_0
      51: getfield      #36                 // Field destinations:Ljava/util/List;
      54: aload_2
      55: getfield      #36                 // Field destinations:Ljava/util/List;
      58: invokestatic  #257                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      61: ifne          66
      64: iconst_0
      65: ireturn
      66: aload_0
      67: getfield      #40                 // Field on:Z
      70: aload_2
      71: getfield      #40                 // Field on:Z
      74: if_icmpeq     79
      77: iconst_0
      78: ireturn
      79: aload_0
      80: getfield      #43                 // Field inputs:Ljava/util/Set;
      83: aload_2
      84: getfield      #43                 // Field inputs:Ljava/util/Set;
      87: invokestatic  #257                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      90: ifne          95
      93: iconst_0
      94: ireturn
      95: aload_0
      96: getfield      #46                 // Field lastPulses:Ljava/util/Map;
      99: aload_2
     100: getfield      #46                 // Field lastPulses:Ljava/util/Map;
     103: invokestatic  #257                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     106: ifne          111
     109: iconst_0
     110: ireturn
     111: iconst_1
     112: ireturn

  static {};
    Code:
       0: new           #261                // class Day20$Module$Companion
       3: dup
       4: aconst_null
       5: invokespecial #264                // Method Day20$Module$Companion."<init>":(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
       8: putstatic     #268                // Field Companion:LDay20$Module$Companion;
      11: return
}

Compiled from "Day20.kt"
public final class Day20$Pulse {
  private final Day20$PulseType type;

  private final java.lang.String sender;

  public Day20$Pulse(Day20$PulseType, java.lang.String);
    Code:
       0: aload_1
       1: ldc           #9                  // String type
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #17                 // String sender
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_0
      13: invokespecial #20                 // Method java/lang/Object."<init>":()V
      16: aload_0
      17: aload_1
      18: putfield      #23                 // Field type:LDay20$PulseType;
      21: aload_0
      22: aload_2
      23: putfield      #26                 // Field sender:Ljava/lang/String;
      26: return

  public final Day20$PulseType getType();
    Code:
       0: aload_0
       1: getfield      #23                 // Field type:LDay20$PulseType;
       4: areturn

  public final java.lang.String getSender();
    Code:
       0: aload_0
       1: getfield      #26                 // Field sender:Ljava/lang/String;
       4: areturn

  public final Day20$PulseType component1();
    Code:
       0: aload_0
       1: getfield      #23                 // Field type:LDay20$PulseType;
       4: areturn

  public final java.lang.String component2();
    Code:
       0: aload_0
       1: getfield      #26                 // Field sender:Ljava/lang/String;
       4: areturn

  public final Day20$Pulse copy(Day20$PulseType, java.lang.String);
    Code:
       0: aload_1
       1: ldc           #9                  // String type
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #17                 // String sender
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: new           #2                  // class Day20$Pulse
      15: dup
      16: aload_1
      17: aload_2
      18: invokespecial #38                 // Method "<init>":(LDay20$PulseType;Ljava/lang/String;)V
      21: areturn

  public static Day20$Pulse copy$default(Day20$Pulse, Day20$PulseType, java.lang.String, int, java.lang.Object);
    Code:
       0: iload_3
       1: iconst_1
       2: iand
       3: ifeq          11
       6: aload_0
       7: getfield      #23                 // Field type:LDay20$PulseType;
      10: astore_1
      11: iload_3
      12: iconst_2
      13: iand
      14: ifeq          22
      17: aload_0
      18: getfield      #26                 // Field sender:Ljava/lang/String;
      21: astore_2
      22: aload_0
      23: aload_1
      24: aload_2
      25: invokevirtual #42                 // Method copy:(LDay20$PulseType;Ljava/lang/String;)LDay20$Pulse;
      28: areturn

  public java.lang.String toString();
    Code:
       0: new           #45                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #46                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #48                 // String Pulse(type=
       9: invokevirtual #52                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #23                 // Field type:LDay20$PulseType;
      16: invokevirtual #55                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      19: ldc           #57                 // String , sender=
      21: invokevirtual #52                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #26                 // Field sender:Ljava/lang/String;
      28: invokevirtual #52                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      31: bipush        41
      33: invokevirtual #60                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      36: invokevirtual #62                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      39: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #23                 // Field type:LDay20$PulseType;
       4: invokevirtual #68                 // Method Day20$PulseType.hashCode:()I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #26                 // Field sender:Ljava/lang/String;
      16: invokevirtual #71                 // Method java/lang/String.hashCode:()I
      19: iadd
      20: istore_1
      21: iload_1
      22: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Day20$Pulse
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day20$Pulse
      20: astore_2
      21: aload_0
      22: getfield      #23                 // Field type:LDay20$PulseType;
      25: aload_2
      26: getfield      #23                 // Field type:LDay20$PulseType;
      29: if_acmpeq     34
      32: iconst_0
      33: ireturn
      34: aload_0
      35: getfield      #26                 // Field sender:Ljava/lang/String;
      38: aload_2
      39: getfield      #26                 // Field sender:Ljava/lang/String;
      42: invokestatic  #80                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      45: ifne          50
      48: iconst_0
      49: ireturn
      50: iconst_1
      51: ireturn
}

Compiled from "Day20.kt"
public final class Day20$ModuleType extends java.lang.Enum<Day20$ModuleType> {
  public static final Day20$ModuleType BROADCASTER;

  public static final Day20$ModuleType CONJUNCTION;

  public static final Day20$ModuleType FLIP_FLOP;

  private static final Day20$ModuleType[] $VALUES;

  private static final kotlin.enums.EnumEntries $ENTRIES;

  private Day20$ModuleType();
    Code:
       0: aload_0
       1: aload_1
       2: iload_2
       3: invokespecial #10                 // Method java/lang/Enum."<init>":(Ljava/lang/String;I)V
       6: return

  public static Day20$ModuleType[] values();
    Code:
       0: getstatic     #22                 // Field $VALUES:[LDay20$ModuleType;
       3: invokevirtual #28                 // Method java/lang/Object.clone:()Ljava/lang/Object;
       6: checkcast     #29                 // class "[LDay20$ModuleType;"
       9: areturn

  public static Day20$ModuleType valueOf(java.lang.String);
    Code:
       0: ldc           #2                  // class Day20$ModuleType
       2: aload_0
       3: invokestatic  #34                 // Method java/lang/Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
       6: checkcast     #2                  // class Day20$ModuleType
       9: areturn

  public static kotlin.enums.EnumEntries<Day20$ModuleType> getEntries();
    Code:
       0: getstatic     #43                 // Field $ENTRIES:Lkotlin/enums/EnumEntries;
       3: areturn

  private static final Day20$ModuleType[] $values();
    Code:
       0: iconst_3
       1: anewarray     #2                  // class Day20$ModuleType
       4: astore_0
       5: aload_0
       6: iconst_0
       7: getstatic     #47                 // Field BROADCASTER:LDay20$ModuleType;
      10: aastore
      11: aload_0
      12: iconst_1
      13: getstatic     #50                 // Field CONJUNCTION:LDay20$ModuleType;
      16: aastore
      17: aload_0
      18: iconst_2
      19: getstatic     #53                 // Field FLIP_FLOP:LDay20$ModuleType;
      22: aastore
      23: aload_0
      24: areturn

  static {};
    Code:
       0: new           #2                  // class Day20$ModuleType
       3: dup
       4: ldc           #55                 // String BROADCASTER
       6: iconst_0
       7: invokespecial #56                 // Method "<init>":(Ljava/lang/String;I)V
      10: putstatic     #47                 // Field BROADCASTER:LDay20$ModuleType;
      13: new           #2                  // class Day20$ModuleType
      16: dup
      17: ldc           #57                 // String CONJUNCTION
      19: iconst_1
      20: invokespecial #56                 // Method "<init>":(Ljava/lang/String;I)V
      23: putstatic     #50                 // Field CONJUNCTION:LDay20$ModuleType;
      26: new           #2                  // class Day20$ModuleType
      29: dup
      30: ldc           #58                 // String FLIP_FLOP
      32: iconst_2
      33: invokespecial #56                 // Method "<init>":(Ljava/lang/String;I)V
      36: putstatic     #53                 // Field FLIP_FLOP:LDay20$ModuleType;
      39: invokestatic  #60                 // Method $values:()[LDay20$ModuleType;
      42: putstatic     #22                 // Field $VALUES:[LDay20$ModuleType;
      45: getstatic     #22                 // Field $VALUES:[LDay20$ModuleType;
      48: checkcast     #62                 // class "[Ljava/lang/Enum;"
      51: invokestatic  #68                 // Method kotlin/enums/EnumEntriesKt.enumEntries:([Ljava/lang/Enum;)Lkotlin/enums/EnumEntries;
      54: putstatic     #43                 // Field $ENTRIES:Lkotlin/enums/EnumEntries;
      57: return
}

Compiled from "Day20.kt"
public final class Day20$Module$WhenMappings {
  public static final int[] $EnumSwitchMapping$0;

  static {};
    Code:
       0: invokestatic  #14                 // Method Day20$ModuleType.values:()[LDay20$ModuleType;
       3: arraylength
       4: newarray       int
       6: astore_0
       7: nop
       8: aload_0
       9: getstatic     #18                 // Field Day20$ModuleType.BROADCASTER:LDay20$ModuleType;
      12: invokevirtual #22                 // Method Day20$ModuleType.ordinal:()I
      15: iconst_1
      16: iastore
      17: goto          21
      20: astore_1
      21: nop
      22: aload_0
      23: getstatic     #25                 // Field Day20$ModuleType.CONJUNCTION:LDay20$ModuleType;
      26: invokevirtual #22                 // Method Day20$ModuleType.ordinal:()I
      29: iconst_2
      30: iastore
      31: goto          35
      34: astore_1
      35: nop
      36: aload_0
      37: getstatic     #28                 // Field Day20$ModuleType.FLIP_FLOP:LDay20$ModuleType;
      40: invokevirtual #22                 // Method Day20$ModuleType.ordinal:()I
      43: iconst_3
      44: iastore
      45: goto          49
      48: astore_1
      49: aload_0
      50: putstatic     #32                 // Field $EnumSwitchMapping$0:[I
      53: return
    Exception table:
       from    to  target type
           7    17    20   Class java/lang/NoSuchFieldError
          21    31    34   Class java/lang/NoSuchFieldError
          35    45    48   Class java/lang/NoSuchFieldError
}

Compiled from "Day20.kt"
public final class Day20$PulseType extends java.lang.Enum<Day20$PulseType> {
  public static final Day20$PulseType HIGH;

  public static final Day20$PulseType LOW;

  private static final Day20$PulseType[] $VALUES;

  private static final kotlin.enums.EnumEntries $ENTRIES;

  private Day20$PulseType();
    Code:
       0: aload_0
       1: aload_1
       2: iload_2
       3: invokespecial #10                 // Method java/lang/Enum."<init>":(Ljava/lang/String;I)V
       6: return

  public static Day20$PulseType[] values();
    Code:
       0: getstatic     #22                 // Field $VALUES:[LDay20$PulseType;
       3: invokevirtual #28                 // Method java/lang/Object.clone:()Ljava/lang/Object;
       6: checkcast     #29                 // class "[LDay20$PulseType;"
       9: areturn

  public static Day20$PulseType valueOf(java.lang.String);
    Code:
       0: ldc           #2                  // class Day20$PulseType
       2: aload_0
       3: invokestatic  #34                 // Method java/lang/Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
       6: checkcast     #2                  // class Day20$PulseType
       9: areturn

  public static kotlin.enums.EnumEntries<Day20$PulseType> getEntries();
    Code:
       0: getstatic     #43                 // Field $ENTRIES:Lkotlin/enums/EnumEntries;
       3: areturn

  private static final Day20$PulseType[] $values();
    Code:
       0: iconst_2
       1: anewarray     #2                  // class Day20$PulseType
       4: astore_0
       5: aload_0
       6: iconst_0
       7: getstatic     #47                 // Field HIGH:LDay20$PulseType;
      10: aastore
      11: aload_0
      12: iconst_1
      13: getstatic     #50                 // Field LOW:LDay20$PulseType;
      16: aastore
      17: aload_0
      18: areturn

  static {};
    Code:
       0: new           #2                  // class Day20$PulseType
       3: dup
       4: ldc           #52                 // String HIGH
       6: iconst_0
       7: invokespecial #53                 // Method "<init>":(Ljava/lang/String;I)V
      10: putstatic     #47                 // Field HIGH:LDay20$PulseType;
      13: new           #2                  // class Day20$PulseType
      16: dup
      17: ldc           #54                 // String LOW
      19: iconst_1
      20: invokespecial #53                 // Method "<init>":(Ljava/lang/String;I)V
      23: putstatic     #50                 // Field LOW:LDay20$PulseType;
      26: invokestatic  #56                 // Method $values:()[LDay20$PulseType;
      29: putstatic     #22                 // Field $VALUES:[LDay20$PulseType;
      32: getstatic     #22                 // Field $VALUES:[LDay20$PulseType;
      35: checkcast     #58                 // class "[Ljava/lang/Enum;"
      38: invokestatic  #64                 // Method kotlin/enums/EnumEntriesKt.enumEntries:([Ljava/lang/Enum;)Lkotlin/enums/EnumEntries;
      41: putstatic     #43                 // Field $ENTRIES:Lkotlin/enums/EnumEntries;
      44: return
}

Compiled from "Day20.kt"
public final class Day20 {
  public static final Day20 INSTANCE;

  private Day20();
    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: 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          100
      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        38
      77: iconst_0
      78: istore        11
      80: getstatic     #59                 // Field Day20$Module.Companion:LDay20$Module$Companion;
      83: aload         10
      85: invokevirtual #65                 // Method Day20$Module$Companion.parse:(Ljava/lang/String;)LDay20$Module;
      88: aload         38
      90: swap
      91: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      96: pop
      97: goto          47
     100: aload         6
     102: checkcast     #71                 // class java/util/List
     105: nop
     106: checkcast     #24                 // class java/lang/Iterable
     109: astore_3
     110: nop
     111: iconst_0
     112: istore        4
     114: aload_3
     115: bipush        10
     117: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     120: invokestatic  #77                 // Method kotlin/collections/MapsKt.mapCapacity:(I)I
     123: bipush        16
     125: invokestatic  #83                 // Method kotlin/ranges/RangesKt.coerceAtLeast:(II)I
     128: istore        5
     130: aload_3
     131: astore        6
     133: new           #85                 // class java/util/LinkedHashMap
     136: dup
     137: iload         5
     139: invokespecial #86                 // Method java/util/LinkedHashMap."<init>":(I)V
     142: checkcast     #88                 // class java/util/Map
     145: astore        7
     147: iconst_0
     148: istore        8
     150: aload         6
     152: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     157: astore        9
     159: aload         9
     161: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     166: ifeq          211
     169: aload         9
     171: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     176: astore        10
     178: aload         7
     180: aload         10
     182: checkcast     #55                 // class Day20$Module
     185: astore        11
     187: astore        38
     189: iconst_0
     190: istore        12
     192: aload         11
     194: invokevirtual #92                 // Method Day20$Module.getId:()Ljava/lang/String;
     197: aload         38
     199: swap
     200: aload         10
     202: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     207: pop
     208: goto          159
     211: aload         7
     213: nop
     214: astore_2
     215: aload_2
     216: aload_2
     217: invokedynamic #115,  0            // InvokeDynamic #0:invoke:(Ljava/util/Map;)Lkotlin/jvm/functions/Function2;
     222: invokedynamic #126,  0            // InvokeDynamic #1:accept:(Lkotlin/jvm/functions/Function2;)Ljava/util/function/BiConsumer;
     227: invokeinterface #130,  2          // InterfaceMethod java/util/Map.forEach:(Ljava/util/function/BiConsumer;)V
     232: new           #132                // class kotlin/ranges/IntRange
     235: dup
     236: iconst_1
     237: sipush        1000
     240: invokespecial #135                // Method kotlin/ranges/IntRange."<init>":(II)V
     243: checkcast     #24                 // class java/lang/Iterable
     246: astore        4
     248: iconst_0
     249: istore        5
     251: aload         4
     253: astore        6
     255: new           #26                 // class java/util/ArrayList
     258: dup
     259: aload         4
     261: bipush        10
     263: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     266: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     269: checkcast     #37                 // class java/util/Collection
     272: astore        7
     274: iconst_0
     275: istore        8
     277: aload         6
     279: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     284: astore        9
     286: aload         9
     288: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     293: ifeq          336
     296: aload         9
     298: checkcast     #137                // class kotlin/collections/IntIterator
     301: invokevirtual #141                // Method kotlin/collections/IntIterator.nextInt:()I
     304: istore        10
     306: aload         7
     308: iload         10
     310: istore        11
     312: astore        38
     314: iconst_0
     315: istore        12
     317: getstatic     #144                // Field INSTANCE:LDay20;
     320: aload_2
     321: invokespecial #148                // Method pushButton:(Ljava/util/Map;)Ljava/util/Map;
     324: aload         38
     326: swap
     327: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     332: pop
     333: goto          286
     336: aload         7
     338: checkcast     #71                 // class java/util/List
     341: nop
     342: checkcast     #24                 // class java/lang/Iterable
     345: astore        4
     347: nop
     348: iconst_0
     349: istore        5
     351: aload         4
     353: astore        6
     355: new           #26                 // class java/util/ArrayList
     358: dup
     359: invokespecial #149                // Method java/util/ArrayList."<init>":()V
     362: checkcast     #37                 // class java/util/Collection
     365: astore        7
     367: iconst_0
     368: istore        8
     370: aload         6
     372: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     377: astore        9
     379: aload         9
     381: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     386: ifeq          431
     389: aload         9
     391: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     396: astore        10
     398: aload         10
     400: checkcast     #88                 // class java/util/Map
     403: astore        11
     405: iconst_0
     406: istore        12
     408: aload         11
     410: invokeinterface #153,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     415: checkcast     #24                 // class java/lang/Iterable
     418: astore        11
     420: aload         7
     422: aload         11
     424: invokestatic  #157                // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
     427: pop
     428: goto          379
     431: aload         7
     433: checkcast     #71                 // class java/util/List
     436: nop
     437: checkcast     #24                 // class java/lang/Iterable
     440: astore        4
     442: nop
     443: iconst_0
     444: istore        5
     446: aload         4
     448: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     453: astore        6
     455: aload         6
     457: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     462: ifne          475
     465: new           #159                // class java/lang/UnsupportedOperationException
     468: dup
     469: ldc           #161                // String Empty collection can\'t be reduced.
     471: invokespecial #164                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
     474: athrow
     475: aload         6
     477: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     482: astore        7
     484: aload         6
     486: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     491: ifeq          957
     494: aload         7
     496: aload         6
     498: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     503: checkcast     #88                 // class java/util/Map
     506: astore        8
     508: checkcast     #88                 // class java/util/Map
     511: astore        9
     513: iconst_0
     514: istore        10
     516: aload         9
     518: invokestatic  #168                // Method kotlin/collections/MapsKt.toList:(Ljava/util/Map;)Ljava/util/List;
     521: checkcast     #37                 // class java/util/Collection
     524: aload         8
     526: invokestatic  #168                // Method kotlin/collections/MapsKt.toList:(Ljava/util/Map;)Ljava/util/List;
     529: checkcast     #24                 // class java/lang/Iterable
     532: invokestatic  #172                // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
     535: checkcast     #24                 // class java/lang/Iterable
     538: astore        11
     540: nop
     541: iconst_0
     542: istore        12
     544: aload         11
     546: astore        13
     548: new           #85                 // class java/util/LinkedHashMap
     551: dup
     552: invokespecial #173                // Method java/util/LinkedHashMap."<init>":()V
     555: checkcast     #88                 // class java/util/Map
     558: astore        14
     560: iconst_0
     561: istore        15
     563: aload         13
     565: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     570: astore        16
     572: aload         16
     574: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     579: ifeq          687
     582: aload         16
     584: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     589: astore        17
     591: aload         17
     593: checkcast     #175                // class kotlin/Pair
     596: astore        18
     598: iconst_0
     599: istore        19
     601: aload         18
     603: invokevirtual #178                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     606: checkcast     #180                // class Day20$PulseType
     609: astore        20
     611: aload         14
     613: astore        21
     615: iconst_0
     616: istore        22
     618: aload         21
     620: aload         20
     622: invokeinterface #184,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     627: astore        23
     629: aload         23
     631: ifnonnull     666
     634: iconst_0
     635: istore        24
     637: new           #26                 // class java/util/ArrayList
     640: dup
     641: invokespecial #149                // Method java/util/ArrayList."<init>":()V
     644: checkcast     #71                 // class java/util/List
     647: astore        24
     649: aload         21
     651: aload         20
     653: aload         24
     655: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     660: pop
     661: aload         24
     663: goto          668
     666: aload         23
     668: nop
     669: checkcast     #71                 // class java/util/List
     672: astore        18
     674: aload         18
     676: aload         17
     678: invokeinterface #185,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     683: pop
     684: goto          572
     687: aload         14
     689: nop
     690: astore        11
     692: nop
     693: iconst_0
     694: istore        12
     696: aload         11
     698: astore        13
     700: new           #85                 // class java/util/LinkedHashMap
     703: dup
     704: aload         11
     706: invokeinterface #188,  1          // InterfaceMethod java/util/Map.size:()I
     711: invokestatic  #77                 // Method kotlin/collections/MapsKt.mapCapacity:(I)I
     714: invokespecial #86                 // Method java/util/LinkedHashMap."<init>":(I)V
     717: checkcast     #88                 // class java/util/Map
     720: astore        14
     722: iconst_0
     723: istore        15
     725: aload         13
     727: invokeinterface #192,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     732: checkcast     #24                 // class java/lang/Iterable
     735: astore        16
     737: iconst_0
     738: istore        17
     740: aload         16
     742: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     747: astore        18
     749: aload         18
     751: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     756: ifeq          947
     759: aload         18
     761: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     766: astore        19
     768: aload         14
     770: aload         19
     772: checkcast     #194                // class java/util/Map$Entry
     775: astore        20
     777: astore        21
     779: iconst_0
     780: istore        22
     782: aload         20
     784: invokeinterface #197,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     789: aload         21
     791: swap
     792: aload         19
     794: checkcast     #194                // class java/util/Map$Entry
     797: astore        23
     799: astore        25
     801: astore        26
     803: iconst_0
     804: istore        24
     806: aload         23
     808: invokeinterface #200,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     813: checkcast     #24                 // class java/lang/Iterable
     816: astore        27
     818: iconst_0
     819: istore        28
     821: aload         27
     823: astore        29
     825: new           #26                 // class java/util/ArrayList
     828: dup
     829: aload         27
     831: bipush        10
     833: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     836: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     839: checkcast     #37                 // class java/util/Collection
     842: astore        30
     844: iconst_0
     845: istore        31
     847: aload         29
     849: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     854: astore        32
     856: aload         32
     858: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     863: ifeq          915
     866: aload         32
     868: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     873: astore        33
     875: aload         30
     877: aload         33
     879: checkcast     #175                // class kotlin/Pair
     882: astore        34
     884: astore        35
     886: iconst_0
     887: istore        36
     889: aload         34
     891: invokevirtual #203                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     894: checkcast     #205                // class java/lang/Number
     897: invokevirtual #209                // Method java/lang/Number.longValue:()J
     900: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     903: aload         35
     905: swap
     906: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     911: pop
     912: goto          856
     915: aload         30
     917: checkcast     #71                 // class java/util/List
     920: nop
     921: checkcast     #24                 // class java/lang/Iterable
     924: invokestatic  #219                // Method kotlin/collections/CollectionsKt.sumOfLong:(Ljava/lang/Iterable;)J
     927: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     930: astore        37
     932: aload         26
     934: aload         25
     936: aload         37
     938: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     943: pop
     944: goto          749
     947: aload         14
     949: nop
     950: nop
     951: nop
     952: astore        7
     954: goto          484
     957: aload         7
     959: checkcast     #88                 // class java/util/Map
     962: astore_3
     963: aload_3
     964: invokeinterface #153,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     969: checkcast     #24                 // class java/lang/Iterable
     972: astore        4
     974: iconst_0
     975: istore        5
     977: aload         4
     979: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     984: astore        6
     986: aload         6
     988: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     993: ifne          1006
     996: new           #159                // class java/lang/UnsupportedOperationException
     999: dup
    1000: ldc           #161                // String Empty collection can\'t be reduced.
    1002: invokespecial #164                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
    1005: athrow
    1006: aload         6
    1008: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1013: astore        7
    1015: aload         6
    1017: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1022: ifeq          1066
    1025: aload         7
    1027: aload         6
    1029: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1034: checkcast     #205                // class java/lang/Number
    1037: invokevirtual #209                // Method java/lang/Number.longValue:()J
    1040: lstore        8
    1042: checkcast     #205                // class java/lang/Number
    1045: invokevirtual #209                // Method java/lang/Number.longValue:()J
    1048: lstore        10
    1050: iconst_0
    1051: istore        12
    1053: lload         10
    1055: lload         8
    1057: lmul
    1058: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
    1061: astore        7
    1063: goto          1015
    1066: aload         7
    1068: checkcast     #205                // class java/lang/Number
    1071: invokevirtual #209                // Method java/lang/Number.longValue:()J
    1074: invokestatic  #222                // Method java/lang/String.valueOf:(J)Ljava/lang/String;
    1077: areturn

  private final java.util.Map<java.lang.String, java.util.Map<Day20$PulseType, java.lang.Long>> pushButton(java.util.Map<java.lang.String, Day20$Module>);
    Code:
       0: aload_1
       1: ldc_w         #292                // String broadcaster
       4: invokeinterface #184,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
       9: dup
      10: invokestatic  #296                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      13: checkcast     #55                 // class Day20$Module
      16: astore_2
      17: new           #298                // class Day20$Pulse
      20: dup
      21: getstatic     #302                // Field Day20$PulseType.LOW:LDay20$PulseType;
      24: ldc_w         #292                // String broadcaster
      27: invokespecial #305                // Method Day20$Pulse."<init>":(LDay20$PulseType;Ljava/lang/String;)V
      30: astore_3
      31: new           #307                // class kotlin/collections/ArrayDeque
      34: dup
      35: aload_2
      36: aload_3
      37: invokestatic  #313                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      40: invokestatic  #317                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
      43: checkcast     #37                 // class java/util/Collection
      46: invokespecial #320                // Method kotlin/collections/ArrayDeque."<init>":(Ljava/util/Collection;)V
      49: astore        4
      51: new           #85                 // class java/util/LinkedHashMap
      54: dup
      55: invokespecial #173                // Method java/util/LinkedHashMap."<init>":()V
      58: checkcast     #88                 // class java/util/Map
      61: astore        5
      63: aload         5
      65: astore        6
      67: ldc_w         #292                // String broadcaster
      70: astore        7
      72: iconst_1
      73: anewarray     #175                // class kotlin/Pair
      76: astore        8
      78: aload         8
      80: iconst_0
      81: getstatic     #302                // Field Day20$PulseType.LOW:LDay20$PulseType;
      84: lconst_1
      85: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      88: invokestatic  #313                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      91: aastore
      92: aload         8
      94: invokestatic  #324                // Method kotlin/collections/MapsKt.mutableMapOf:([Lkotlin/Pair;)Ljava/util/Map;
      97: astore        8
      99: aload         6
     101: aload         7
     103: aload         8
     105: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     110: pop
     111: aload         4
     113: checkcast     #37                 // class java/util/Collection
     116: invokeinterface #327,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     121: ifne          128
     124: iconst_1
     125: goto          129
     128: iconst_0
     129: ifeq          507
     132: aload         4
     134: invokevirtual #330                // Method kotlin/collections/ArrayDeque.removeFirst:()Ljava/lang/Object;
     137: checkcast     #175                // class kotlin/Pair
     140: astore        6
     142: aload         6
     144: invokevirtual #333                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     147: checkcast     #55                 // class Day20$Module
     150: astore        7
     152: aload         6
     154: invokevirtual #336                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     157: checkcast     #298                // class Day20$Pulse
     160: astore        8
     162: aload         7
     164: dup
     165: ifnull        177
     168: aload         8
     170: invokevirtual #340                // Method Day20$Module.process:(LDay20$Pulse;)Ljava/util/List;
     173: dup
     174: ifnonnull     181
     177: pop
     178: invokestatic  #344                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
     181: astore        9
     183: aload         9
     185: checkcast     #24                 // class java/lang/Iterable
     188: astore        10
     190: iconst_0
     191: istore        11
     193: aload         10
     195: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     200: astore        12
     202: aload         12
     204: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     209: ifeq          360
     212: aload         12
     214: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     219: astore        13
     221: aload         13
     223: checkcast     #175                // class kotlin/Pair
     226: astore        14
     228: iconst_0
     229: istore        15
     231: aload         14
     233: invokevirtual #333                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     236: checkcast     #53                 // class java/lang/String
     239: astore        16
     241: aload         14
     243: invokevirtual #336                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     246: checkcast     #298                // class Day20$Pulse
     249: astore        17
     251: aload         5
     253: astore        18
     255: iconst_0
     256: istore        19
     258: aload         18
     260: aload         16
     262: invokeinterface #184,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     267: astore        20
     269: aload         20
     271: ifnonnull     307
     274: iconst_0
     275: istore        21
     277: new           #85                 // class java/util/LinkedHashMap
     280: dup
     281: invokespecial #173                // Method java/util/LinkedHashMap."<init>":()V
     284: checkcast     #88                 // class java/util/Map
     287: nop
     288: astore        21
     290: aload         18
     292: aload         16
     294: aload         21
     296: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     301: pop
     302: aload         21
     304: goto          309
     307: aload         20
     309: nop
     310: checkcast     #88                 // class java/util/Map
     313: astore        22
     315: aload         22
     317: aload         17
     319: invokevirtual #348                // Method Day20$Pulse.getType:()LDay20$PulseType;
     322: aload         22
     324: aload         17
     326: invokevirtual #348                // Method Day20$Pulse.getType:()LDay20$PulseType;
     329: lconst_0
     330: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     333: invokeinterface #351,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     338: checkcast     #205                // class java/lang/Number
     341: invokevirtual #209                // Method java/lang/Number.longValue:()J
     344: lconst_1
     345: ladd
     346: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     349: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     354: pop
     355: nop
     356: nop
     357: goto          202
     360: nop
     361: aload         4
     363: aload         9
     365: checkcast     #24                 // class java/lang/Iterable
     368: astore        10
     370: astore        23
     372: iconst_0
     373: istore        11
     375: aload         10
     377: astore        12
     379: new           #26                 // class java/util/ArrayList
     382: dup
     383: aload         10
     385: bipush        10
     387: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     390: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     393: checkcast     #37                 // class java/util/Collection
     396: astore        13
     398: iconst_0
     399: istore        14
     401: aload         12
     403: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     408: astore        15
     410: aload         15
     412: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     417: ifeq          488
     420: aload         15
     422: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     427: astore        16
     429: aload         13
     431: aload         16
     433: checkcast     #175                // class kotlin/Pair
     436: astore        17
     438: astore        24
     440: iconst_0
     441: istore        18
     443: aload         17
     445: invokevirtual #333                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     448: checkcast     #53                 // class java/lang/String
     451: astore        19
     453: aload         17
     455: invokevirtual #336                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     458: checkcast     #298                // class Day20$Pulse
     461: astore        20
     463: aload_1
     464: aload         19
     466: invokeinterface #184,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     471: aload         20
     473: invokestatic  #313                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     476: aload         24
     478: swap
     479: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     484: pop
     485: goto          410
     488: aload         13
     490: checkcast     #71                 // class java/util/List
     493: nop
     494: aload         23
     496: swap
     497: checkcast     #37                 // class java/util/Collection
     500: invokevirtual #354                // Method kotlin/collections/ArrayDeque.addAll:(Ljava/util/Collection;)Z
     503: pop
     504: goto          111
     507: aload         5
     509: areturn

  private final long numberOfButtonPushesUntilLowState(java.util.Map<java.lang.String, Day20$Module>, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #292                // String broadcaster
       4: invokeinterface #184,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
       9: dup
      10: invokestatic  #296                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      13: checkcast     #55                 // class Day20$Module
      16: astore_3
      17: new           #298                // class Day20$Pulse
      20: dup
      21: getstatic     #302                // Field Day20$PulseType.LOW:LDay20$PulseType;
      24: ldc_w         #292                // String broadcaster
      27: invokespecial #305                // Method Day20$Pulse."<init>":(LDay20$PulseType;Ljava/lang/String;)V
      30: astore        4
      32: new           #307                // class kotlin/collections/ArrayDeque
      35: dup
      36: aload_3
      37: aload         4
      39: invokestatic  #313                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      42: invokestatic  #317                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
      45: checkcast     #37                 // class java/util/Collection
      48: invokespecial #320                // Method kotlin/collections/ArrayDeque."<init>":(Ljava/util/Collection;)V
      51: astore        5
      53: lconst_0
      54: lstore        26
      56: lconst_1
      57: lstore        26
      59: aload_1
      60: invokeinterface #153,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
      65: checkcast     #24                 // class java/lang/Iterable
      68: astore        9
      70: aload         9
      72: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      77: astore        10
      79: aload         10
      81: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      86: ifeq          127
      89: aload         10
      91: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      96: astore        11
      98: aload         11
     100: checkcast     #55                 // class Day20$Module
     103: astore        12
     105: iconst_0
     106: istore        13
     108: aload         12
     110: invokevirtual #380                // Method Day20$Module.getDestinations:()Ljava/util/List;
     113: aload_2
     114: invokeinterface #383,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     119: ifeq          79
     122: aload         11
     124: goto          128
     127: aconst_null
     128: checkcast     #55                 // class Day20$Module
     131: dup
     132: ifnonnull     164
     135: pop
     136: new           #385                // class java/lang/IllegalStateException
     139: dup
     140: new           #387                // class java/lang/StringBuilder
     143: dup
     144: invokespecial #388                // Method java/lang/StringBuilder."<init>":()V
     147: ldc_w         #390                // String Invalid input:
     150: invokevirtual #394                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     153: aload_2
     154: invokevirtual #394                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     157: invokevirtual #397                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     160: invokespecial #398                // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     163: athrow
     164: astore        6
     166: aload         6
     168: invokevirtual #401                // Method Day20$Module.getInputs:()Ljava/util/Set;
     171: checkcast     #24                 // class java/lang/Iterable
     174: invokestatic  #405                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     177: astore        7
     179: new           #85                 // class java/util/LinkedHashMap
     182: dup
     183: invokespecial #173                // Method java/util/LinkedHashMap."<init>":()V
     186: checkcast     #88                 // class java/util/Map
     189: astore        8
     191: nop
     192: aload         8
     194: invokeinterface #188,  1          // InterfaceMethod java/util/Map.size:()I
     199: aload         7
     201: invokeinterface #408,  1          // InterfaceMethod java/util/Set.size:()I
     206: if_icmpne     322
     209: aload         8
     211: invokeinterface #153,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     216: checkcast     #24                 // class java/lang/Iterable
     219: astore        9
     221: iconst_0
     222: istore        10
     224: aload         9
     226: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     231: astore        11
     233: aload         11
     235: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     240: ifne          253
     243: new           #159                // class java/lang/UnsupportedOperationException
     246: dup
     247: ldc           #161                // String Empty collection can\'t be reduced.
     249: invokespecial #164                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
     252: athrow
     253: aload         11
     255: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     260: astore        12
     262: aload         11
     264: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     269: ifeq          313
     272: aload         12
     274: aload         11
     276: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     281: checkcast     #205                // class java/lang/Number
     284: invokevirtual #209                // Method java/lang/Number.longValue:()J
     287: lstore        13
     289: checkcast     #205                // class java/lang/Number
     292: invokevirtual #209                // Method java/lang/Number.longValue:()J
     295: lstore        15
     297: iconst_0
     298: istore        17
     300: lload         15
     302: lload         13
     304: lmul
     305: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     308: astore        12
     310: goto          262
     313: aload         12
     315: checkcast     #205                // class java/lang/Number
     318: invokevirtual #209                // Method java/lang/Number.longValue:()J
     321: lreturn
     322: aload         5
     324: invokevirtual #330                // Method kotlin/collections/ArrayDeque.removeFirst:()Ljava/lang/Object;
     327: checkcast     #175                // class kotlin/Pair
     330: astore        9
     332: aload         9
     334: invokevirtual #333                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     337: checkcast     #55                 // class Day20$Module
     340: astore        10
     342: aload         9
     344: invokevirtual #336                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     347: checkcast     #298                // class Day20$Pulse
     350: astore        11
     352: aload         10
     354: dup
     355: ifnull        367
     358: aload         11
     360: invokevirtual #340                // Method Day20$Module.process:(LDay20$Pulse;)Ljava/util/List;
     363: dup
     364: ifnonnull     371
     367: pop
     368: invokestatic  #344                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
     371: astore        12
     373: aload         12
     375: checkcast     #24                 // class java/lang/Iterable
     378: astore        14
     380: iconst_0
     381: istore        15
     383: aload         14
     385: astore        16
     387: new           #26                 // class java/util/ArrayList
     390: dup
     391: aload         14
     393: bipush        10
     395: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     398: invokespecial #35                 // Method java/util/ArrayList."<init>":(I)V
     401: checkcast     #37                 // class java/util/Collection
     404: astore        17
     406: iconst_0
     407: istore        18
     409: aload         16
     411: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     416: astore        19
     418: aload         19
     420: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     425: ifeq          496
     428: aload         19
     430: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     435: astore        20
     437: aload         17
     439: aload         20
     441: checkcast     #175                // class kotlin/Pair
     444: astore        21
     446: astore        25
     448: iconst_0
     449: istore        22
     451: aload         21
     453: invokevirtual #333                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     456: checkcast     #53                 // class java/lang/String
     459: astore        23
     461: aload         21
     463: invokevirtual #336                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     466: checkcast     #298                // class Day20$Pulse
     469: astore        24
     471: aload_1
     472: aload         23
     474: invokeinterface #184,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     479: aload         24
     481: invokestatic  #313                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     484: aload         25
     486: swap
     487: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     492: pop
     493: goto          418
     496: aload         17
     498: checkcast     #71                 // class java/util/List
     501: nop
     502: astore        13
     504: aload         13
     506: checkcast     #24                 // class java/lang/Iterable
     509: astore        14
     511: iconst_0
     512: istore        15
     514: aload         14
     516: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     521: astore        16
     523: aload         16
     525: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     530: ifeq          662
     533: aload         16
     535: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     540: astore        17
     542: aload         17
     544: checkcast     #175                // class kotlin/Pair
     547: astore        18
     549: iconst_0
     550: istore        19
     552: aload         18
     554: invokevirtual #333                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     557: checkcast     #55                 // class Day20$Module
     560: astore        20
     562: aload         18
     564: invokevirtual #336                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     567: checkcast     #298                // class Day20$Pulse
     570: astore        21
     572: aload         20
     574: dup
     575: ifnull        585
     578: invokevirtual #92                 // Method Day20$Module.getId:()Ljava/lang/String;
     581: dup
     582: ifnonnull     589
     585: pop
     586: ldc_w         #410                // String
     589: aload         6
     591: invokevirtual #92                 // Method Day20$Module.getId:()Ljava/lang/String;
     594: invokestatic  #414                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     597: ifeq          657
     600: aload         21
     602: invokevirtual #348                // Method Day20$Pulse.getType:()LDay20$PulseType;
     605: getstatic     #417                // Field Day20$PulseType.HIGH:LDay20$PulseType;
     608: if_acmpne     657
     611: aload         8
     613: aload         10
     615: dup
     616: ifnull        625
     619: invokevirtual #92                 // Method Day20$Module.getId:()Ljava/lang/String;
     622: goto          627
     625: pop
     626: aconst_null
     627: invokeinterface #420,  2          // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z
     632: ifne          657
     635: aload         8
     637: aload         10
     639: dup
     640: invokestatic  #296                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     643: invokevirtual #92                 // Method Day20$Module.getId:()Ljava/lang/String;
     646: lload         26
     648: invokestatic  #215                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     651: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     656: pop
     657: nop
     658: nop
     659: goto          523
     662: nop
     663: aload         5
     665: aload         13
     667: checkcast     #37                 // class java/util/Collection
     670: invokevirtual #354                // Method kotlin/collections/ArrayDeque.addAll:(Ljava/util/Collection;)Z
     673: pop
     674: aload         5
     676: invokevirtual #421                // Method kotlin/collections/ArrayDeque.isEmpty:()Z
     679: ifeq          191
     682: aload         5
     684: aload_3
     685: aload         4
     687: invokestatic  #313                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     690: invokevirtual #422                // Method kotlin/collections/ArrayDeque.add:(Ljava/lang/Object;)Z
     693: pop
     694: lload         26
     696: lstore        14
     698: lload         14
     700: lconst_1
     701: ladd
     702: lstore        26
     704: goto          191

  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: 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          100
      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        13
      77: iconst_0
      78: istore        11
      80: getstatic     #59                 // Field Day20$Module.Companion:LDay20$Module$Companion;
      83: aload         10
      85: invokevirtual #65                 // Method Day20$Module$Companion.parse:(Ljava/lang/String;)LDay20$Module;
      88: aload         13
      90: swap
      91: invokeinterface #69,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      96: pop
      97: goto          47
     100: aload         6
     102: checkcast     #71                 // class java/util/List
     105: nop
     106: checkcast     #24                 // class java/lang/Iterable
     109: astore_3
     110: nop
     111: iconst_0
     112: istore        4
     114: aload_3
     115: bipush        10
     117: invokestatic  #32                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     120: invokestatic  #77                 // Method kotlin/collections/MapsKt.mapCapacity:(I)I
     123: bipush        16
     125: invokestatic  #83                 // Method kotlin/ranges/RangesKt.coerceAtLeast:(II)I
     128: istore        5
     130: aload_3
     131: astore        6
     133: new           #85                 // class java/util/LinkedHashMap
     136: dup
     137: iload         5
     139: invokespecial #86                 // Method java/util/LinkedHashMap."<init>":(I)V
     142: checkcast     #88                 // class java/util/Map
     145: astore        7
     147: iconst_0
     148: istore        8
     150: aload         6
     152: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     157: astore        9
     159: aload         9
     161: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     166: ifeq          211
     169: aload         9
     171: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     176: astore        10
     178: aload         7
     180: aload         10
     182: checkcast     #55                 // class Day20$Module
     185: astore        11
     187: astore        13
     189: iconst_0
     190: istore        12
     192: aload         11
     194: invokevirtual #92                 // Method Day20$Module.getId:()Ljava/lang/String;
     197: aload         13
     199: swap
     200: aload         10
     202: invokeinterface #96,  3           // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     207: pop
     208: goto          159
     211: aload         7
     213: nop
     214: astore_2
     215: aload_0
     216: aload_2
     217: ldc_w         #437                // String rx
     220: invokespecial #439                // Method numberOfButtonPushesUntilLowState:(Ljava/util/Map;Ljava/lang/String;)J
     223: invokestatic  #222                // Method java/lang/String.valueOf:(J)Ljava/lang/String;
     226: areturn

  private static final kotlin.Unit part1$lambda$3(java.util.Map, java.lang.String, Day20$Module);
    Code:
       0: aload_1
       1: ldc_w         #442                // String key
       4: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_2
       8: ldc_w         #444                // String value
      11: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_2
      15: invokevirtual #380                // Method Day20$Module.getDestinations:()Ljava/util/List;
      18: checkcast     #24                 // class java/lang/Iterable
      21: astore_3
      22: iconst_0
      23: istore        4
      25: aload_3
      26: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      31: astore        5
      33: aload         5
      35: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      40: ifeq          99
      43: aload         5
      45: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      50: astore        6
      52: aload         6
      54: checkcast     #53                 // class java/lang/String
      57: astore        7
      59: iconst_0
      60: istore        8
      62: aload_0
      63: aload         7
      65: invokeinterface #184,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      70: checkcast     #55                 // class Day20$Module
      73: dup
      74: ifnull        94
      77: invokevirtual #401                // Method Day20$Module.getInputs:()Ljava/util/Set;
      80: dup
      81: ifnull        94
      84: aload_1
      85: invokeinterface #445,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
      90: pop
      91: goto          95
      94: pop
      95: nop
      96: goto          33
      99: nop
     100: getstatic     #450                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     103: areturn

  private static final void part1$lambda$4(kotlin.jvm.functions.Function2, java.lang.Object, java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: invokeinterface #456,  3          // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
       8: pop
       9: return

  static {};
    Code:
       0: new           #2                  // class Day20
       3: dup
       4: invokespecial #460                // Method "<init>":()V
       7: putstatic     #144                // Field INSTANCE:LDay20;
      10: return
}

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

  public final Day20$Module parse(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #15                 // String input
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #23                 // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #25                 // class java/lang/String
      14: astore_3
      15: aload_3
      16: iconst_0
      17: ldc           #27                 // String  ->
      19: aastore
      20: aload_3
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #33                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: astore_2
      30: aload_2
      31: iconst_0
      32: invokeinterface #39,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      37: checkcast     #25                 // class java/lang/String
      40: astore_3
      41: aload_2
      42: iconst_1
      43: invokeinterface #39,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      48: checkcast     #25                 // class java/lang/String
      51: astore        4
      53: aload_3
      54: ldc           #41                 // String broadcaster
      56: invokestatic  #45                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      59: ifeq          108
      62: new           #47                 // class Day20$Module
      65: dup
      66: ldc           #41                 // String broadcaster
      68: getstatic     #53                 // Field Day20$ModuleType.BROADCASTER:LDay20$ModuleType;
      71: aload         4
      73: checkcast     #23                 // class java/lang/CharSequence
      76: iconst_1
      77: anewarray     #25                 // class java/lang/String
      80: astore        5
      82: aload         5
      84: iconst_0
      85: ldc           #55                 // String ,
      87: aastore
      88: aload         5
      90: iconst_0
      91: iconst_0
      92: bipush        6
      94: aconst_null
      95: invokestatic  #33                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      98: iconst_1
      99: aconst_null
     100: aconst_null
     101: bipush        48
     103: aconst_null
     104: invokespecial #58                 // Method Day20$Module."<init>":(Ljava/lang/String;LDay20$ModuleType;Ljava/util/List;ZLjava/util/Set;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     107: areturn
     108: aload_3
     109: iconst_1
     110: invokestatic  #62                 // Method kotlin/text/StringsKt.take:(Ljava/lang/String;I)Ljava/lang/String;
     113: astore        5
     115: aload_3
     116: iconst_1
     117: invokestatic  #65                 // Method kotlin/text/StringsKt.drop:(Ljava/lang/String;I)Ljava/lang/String;
     120: astore        6
     122: new           #47                 // class Day20$Module
     125: dup
     126: aload         6
     128: aload         5
     130: astore        7
     132: aload         7
     134: ldc           #67                 // String %
     136: invokestatic  #45                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     139: ifeq          148
     142: getstatic     #70                 // Field Day20$ModuleType.FLIP_FLOP:LDay20$ModuleType;
     145: goto          192
     148: aload         7
     150: ldc           #72                 // String &
     152: invokestatic  #45                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     155: ifeq          164
     158: getstatic     #75                 // Field Day20$ModuleType.CONJUNCTION:LDay20$ModuleType;
     161: goto          192
     164: new           #77                 // class java/lang/IllegalArgumentException
     167: dup
     168: new           #79                 // class java/lang/StringBuilder
     171: dup
     172: invokespecial #80                 // Method java/lang/StringBuilder."<init>":()V
     175: ldc           #82                 // String Unknown module type:
     177: invokevirtual #86                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     180: aload         5
     182: invokevirtual #86                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     185: invokevirtual #90                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     188: invokespecial #93                 // Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
     191: athrow
     192: aload         4
     194: checkcast     #23                 // class java/lang/CharSequence
     197: iconst_1
     198: anewarray     #25                 // class java/lang/String
     201: astore        7
     203: aload         7
     205: iconst_0
     206: ldc           #55                 // String ,
     208: aastore
     209: aload         7
     211: iconst_0
     212: iconst_0
     213: bipush        6
     215: aconst_null
     216: invokestatic  #33                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     219: aload         5
     221: ldc           #72                 // String &
     223: invokestatic  #45                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     226: aconst_null
     227: aconst_null
     228: bipush        48
     230: aconst_null
     231: invokespecial #58                 // Method Day20$Module."<init>":(Ljava/lang/String;LDay20$ModuleType;Ljava/util/List;ZLjava/util/Set;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     234: areturn

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