// Path: src/main/java/org/graylog/collector/inputs/InputService.java
// public abstract class InputService extends AbstractService implements Input {
// }


import com.google.inject.assistedinject.Assisted;
import com.typesafe.config.Config;
import org.graylog.collector.config.ConfigurationUtils;
import org.graylog.collector.inputs.InputConfiguration;
import org.graylog.collector.inputs.InputService;
import javax.inject.Inject;
import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

    @Inject
    public WindowsEventlogInputConfiguration(@Assisted String id,
                                             @Assisted Config config,
                                             WindowsEventlogInput.Factory inputFactory) {
        super(id, config);
        this.inputFactory = inputFactory;

        if (config.hasPath("source-name")) {
            this.sourceName = config.getString("source-name");
        } else {
            this.sourceName = "Application";
        }

        if (config.hasPath("poll-interval")) {
            this.pollInterval = config.getDuration("poll-interval", TimeUnit.MILLISECONDS);
        } else {
            this.pollInterval = 1000L;
        }
    }

    public String getSourceName() {
        return sourceName;
    }

    public long getPollInterval() {
        return pollInterval;
    }

    @Override
// Path: src/main/java/org/graylog/collector/inputs/InputService.java
// public abstract class InputService extends AbstractService implements Input {
// }


// Path: src/main/java/org/graylog/collector/inputs/eventlog/WindowsEventlogInputConfiguration.java
import com.google.inject.assistedinject.Assisted;
import com.typesafe.config.Config;
import org.graylog.collector.config.ConfigurationUtils;
import org.graylog.collector.inputs.InputConfiguration;
import org.graylog.collector.inputs.InputService;
import javax.inject.Inject;
import javax.validation.constraints.NotNull;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;


    @Inject
    public WindowsEventlogInputConfiguration(@Assisted String id,
                                             @Assisted Config config,
                                             WindowsEventlogInput.Factory inputFactory) {
        super(id, config);
        this.inputFactory = inputFactory;

        if (config.hasPath("source-name")) {
            this.sourceName = config.getString("source-name");
        } else {
            this.sourceName = "Application";
        }

        if (config.hasPath("poll-interval")) {
            this.pollInterval = config.getDuration("poll-interval", TimeUnit.MILLISECONDS);
        } else {
            this.pollInterval = 1000L;
        }
    }

    public String getSourceName() {
        return sourceName;
    }

    public long getPollInterval() {
        return pollInterval;
    }

    @Override
    public InputService createInput() {