package com.airlock.iam.admin.application.service.settings;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class LogviewerSettings implements Settings {
   private List<LogviewerSettings.LogviewerFilter> filters;
   private List<LogviewerSettings.LogviewerColorRule> colors;
   @Nullable
   private String defaultApplication;
   @Nonnull
   private String defaultConfigContextIdentifier;

   @SuppressFBWarnings(justification = "generated code")
   public static LogviewerSettings.LogviewerSettingsBuilder builder() {
      return new LogviewerSettings.LogviewerSettingsBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public List<LogviewerSettings.LogviewerFilter> getFilters() {
      return this.filters;
   }

   @SuppressFBWarnings(justification = "generated code")
   public List<LogviewerSettings.LogviewerColorRule> getColors() {
      return this.colors;
   }

   @Nullable
   @SuppressFBWarnings(justification = "generated code")
   public String getDefaultApplication() {
      return this.defaultApplication;
   }

   @Nonnull
   @SuppressFBWarnings(justification = "generated code")
   public String getDefaultConfigContextIdentifier() {
      return this.defaultConfigContextIdentifier;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setFilters(List<LogviewerSettings.LogviewerFilter> filters) {
      this.filters = filters;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setColors(List<LogviewerSettings.LogviewerColorRule> colors) {
      this.colors = colors;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setDefaultApplication(@Nullable String defaultApplication) {
      this.defaultApplication = defaultApplication;
   }

   @SuppressFBWarnings(justification = "generated code")
   public void setDefaultConfigContextIdentifier(@Nonnull String defaultConfigContextIdentifier) {
      if (defaultConfigContextIdentifier == null) {
         throw new NullPointerException("defaultConfigContextIdentifier is marked non-null but is null");
      }

      this.defaultConfigContextIdentifier = defaultConfigContextIdentifier;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public boolean equals(Object o) {
      if (o == this) {
         return true;
      } else if (!(o instanceof LogviewerSettings other)) {
         return false;
      } else {
         if (!other.canEqual(this)) {
            return false;
         }

         Object this$filters = this.filters;
         Object other$filters = other.filters;
         if (this$filters == null ? other$filters == null : this$filters.equals(other$filters)) {
            Object this$colors = this.colors;
            Object other$colors = other.colors;
            if (this$colors == null ? other$colors == null : this$colors.equals(other$colors)) {
               Object this$defaultApplication = this.defaultApplication;
               Object other$defaultApplication = other.defaultApplication;
               if (this$defaultApplication == null ? other$defaultApplication == null : this$defaultApplication.equals(other$defaultApplication)) {
                  Object this$defaultConfigContextIdentifier = this.defaultConfigContextIdentifier;
                  Object other$defaultConfigContextIdentifier = other.defaultConfigContextIdentifier;
                  return this$defaultConfigContextIdentifier == null
                     ? other$defaultConfigContextIdentifier == null
                     : this$defaultConfigContextIdentifier.equals(other$defaultConfigContextIdentifier);
               } else {
                  return false;
               }
            } else {
               return false;
            }
         } else {
            return false;
         }
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   protected boolean canEqual(Object other) {
      return other instanceof LogviewerSettings;
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public int hashCode() {
      int PRIME = 59;
      int result = 1;
      Object $filters = this.filters;
      result = result * 59 + ($filters == null ? 43 : $filters.hashCode());
      Object $colors = this.colors;
      result = result * 59 + ($colors == null ? 43 : $colors.hashCode());
      Object $defaultApplication = this.defaultApplication;
      result = result * 59 + ($defaultApplication == null ? 43 : $defaultApplication.hashCode());
      Object $defaultConfigContextIdentifier = this.defaultConfigContextIdentifier;
      return result * 59 + ($defaultConfigContextIdentifier == null ? 43 : $defaultConfigContextIdentifier.hashCode());
   }

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String toString() {
      return "LogviewerSettings(filters="
         + this.getFilters()
         + ", colors="
         + this.getColors()
         + ", defaultApplication="
         + this.getDefaultApplication()
         + ", defaultConfigContextIdentifier="
         + this.getDefaultConfigContextIdentifier()
         + ")";
   }

   @SuppressFBWarnings(justification = "generated code")
   public LogviewerSettings(
      List<LogviewerSettings.LogviewerFilter> filters,
      List<LogviewerSettings.LogviewerColorRule> colors,
      @Nullable String defaultApplication,
      @Nonnull String defaultConfigContextIdentifier
   ) {
      if (defaultConfigContextIdentifier == null) {
         throw new NullPointerException("defaultConfigContextIdentifier is marked non-null but is null");
      }

      this.filters = filters;
      this.colors = colors;
      this.defaultApplication = defaultApplication;
      this.defaultConfigContextIdentifier = defaultConfigContextIdentifier;
   }

   @SuppressFBWarnings(justification = "generated code")
   public LogviewerSettings() {
   }

   public static final class LogviewerColorRule {
      private String pattern;
      private String foregroundColor;
      private String backgroundColor;
      private String metaForegroundColor;

      @SuppressFBWarnings(justification = "generated code")
      public static LogviewerSettings.LogviewerColorRule.LogviewerColorRuleBuilder builder() {
         return new LogviewerSettings.LogviewerColorRule.LogviewerColorRuleBuilder();
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getPattern() {
         return this.pattern;
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getForegroundColor() {
         return this.foregroundColor;
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getBackgroundColor() {
         return this.backgroundColor;
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getMetaForegroundColor() {
         return this.metaForegroundColor;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setPattern(String pattern) {
         this.pattern = pattern;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setForegroundColor(String foregroundColor) {
         this.foregroundColor = foregroundColor;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setBackgroundColor(String backgroundColor) {
         this.backgroundColor = backgroundColor;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setMetaForegroundColor(String metaForegroundColor) {
         this.metaForegroundColor = metaForegroundColor;
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public boolean equals(Object o) {
         if (o == this) {
            return true;
         } else if (!(o instanceof LogviewerSettings.LogviewerColorRule other)) {
            return false;
         } else {
            Object this$pattern = this.pattern;
            Object other$pattern = other.pattern;
            if (this$pattern == null ? other$pattern == null : this$pattern.equals(other$pattern)) {
               Object this$foregroundColor = this.foregroundColor;
               Object other$foregroundColor = other.foregroundColor;
               if (this$foregroundColor == null ? other$foregroundColor == null : this$foregroundColor.equals(other$foregroundColor)) {
                  Object this$backgroundColor = this.backgroundColor;
                  Object other$backgroundColor = other.backgroundColor;
                  if (this$backgroundColor == null ? other$backgroundColor == null : this$backgroundColor.equals(other$backgroundColor)) {
                     Object this$metaForegroundColor = this.metaForegroundColor;
                     Object other$metaForegroundColor = other.metaForegroundColor;
                     return this$metaForegroundColor == null ? other$metaForegroundColor == null : this$metaForegroundColor.equals(other$metaForegroundColor);
                  } else {
                     return false;
                  }
               } else {
                  return false;
               }
            } else {
               return false;
            }
         }
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public int hashCode() {
         int PRIME = 59;
         int result = 1;
         Object $pattern = this.pattern;
         result = result * 59 + ($pattern == null ? 43 : $pattern.hashCode());
         Object $foregroundColor = this.foregroundColor;
         result = result * 59 + ($foregroundColor == null ? 43 : $foregroundColor.hashCode());
         Object $backgroundColor = this.backgroundColor;
         result = result * 59 + ($backgroundColor == null ? 43 : $backgroundColor.hashCode());
         Object $metaForegroundColor = this.metaForegroundColor;
         return result * 59 + ($metaForegroundColor == null ? 43 : $metaForegroundColor.hashCode());
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "LogviewerSettings.LogviewerColorRule(pattern="
            + this.getPattern()
            + ", foregroundColor="
            + this.getForegroundColor()
            + ", backgroundColor="
            + this.getBackgroundColor()
            + ", metaForegroundColor="
            + this.getMetaForegroundColor()
            + ")";
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerColorRule(String pattern, String foregroundColor, String backgroundColor, String metaForegroundColor) {
         this.pattern = pattern;
         this.foregroundColor = foregroundColor;
         this.backgroundColor = backgroundColor;
         this.metaForegroundColor = metaForegroundColor;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerColorRule() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public static class LogviewerColorRuleBuilder {
         @SuppressFBWarnings(justification = "generated code")
         private String pattern;
         @SuppressFBWarnings(justification = "generated code")
         private String foregroundColor;
         @SuppressFBWarnings(justification = "generated code")
         private String backgroundColor;
         @SuppressFBWarnings(justification = "generated code")
         private String metaForegroundColor;

         @SuppressFBWarnings(justification = "generated code")
         LogviewerColorRuleBuilder() {
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerColorRule.LogviewerColorRuleBuilder pattern(String pattern) {
            this.pattern = pattern;
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerColorRule.LogviewerColorRuleBuilder foregroundColor(String foregroundColor) {
            this.foregroundColor = foregroundColor;
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerColorRule.LogviewerColorRuleBuilder backgroundColor(String backgroundColor) {
            this.backgroundColor = backgroundColor;
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerColorRule.LogviewerColorRuleBuilder metaForegroundColor(String metaForegroundColor) {
            this.metaForegroundColor = metaForegroundColor;
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerColorRule build() {
            return new LogviewerSettings.LogviewerColorRule(this.pattern, this.foregroundColor, this.backgroundColor, this.metaForegroundColor);
         }

         @SuppressFBWarnings(justification = "generated code")
         @Override
         public String toString() {
            return "LogviewerSettings.LogviewerColorRule.LogviewerColorRuleBuilder(pattern="
               + this.pattern
               + ", foregroundColor="
               + this.foregroundColor
               + ", backgroundColor="
               + this.backgroundColor
               + ", metaForegroundColor="
               + this.metaForegroundColor
               + ")";
         }
      }
   }

   public static final class LogviewerFilter {
      private String key;
      private List<LogviewerSettings.LogviewerPredefinedFilter> predefinedFilters;

      @SuppressFBWarnings(justification = "generated code")
      public static LogviewerSettings.LogviewerFilter.LogviewerFilterBuilder builder() {
         return new LogviewerSettings.LogviewerFilter.LogviewerFilterBuilder();
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getKey() {
         return this.key;
      }

      @SuppressFBWarnings(justification = "generated code")
      public List<LogviewerSettings.LogviewerPredefinedFilter> getPredefinedFilters() {
         return this.predefinedFilters;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setKey(String key) {
         this.key = key;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setPredefinedFilters(List<LogviewerSettings.LogviewerPredefinedFilter> predefinedFilters) {
         this.predefinedFilters = predefinedFilters;
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public boolean equals(Object o) {
         if (o == this) {
            return true;
         } else if (!(o instanceof LogviewerSettings.LogviewerFilter other)) {
            return false;
         } else {
            Object this$key = this.key;
            Object other$key = other.key;
            if (this$key == null ? other$key == null : this$key.equals(other$key)) {
               Object this$predefinedFilters = this.predefinedFilters;
               Object other$predefinedFilters = other.predefinedFilters;
               return this$predefinedFilters == null ? other$predefinedFilters == null : this$predefinedFilters.equals(other$predefinedFilters);
            } else {
               return false;
            }
         }
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public int hashCode() {
         int PRIME = 59;
         int result = 1;
         Object $key = this.key;
         result = result * 59 + ($key == null ? 43 : $key.hashCode());
         Object $predefinedFilters = this.predefinedFilters;
         return result * 59 + ($predefinedFilters == null ? 43 : $predefinedFilters.hashCode());
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "LogviewerSettings.LogviewerFilter(key=" + this.getKey() + ", predefinedFilters=" + this.getPredefinedFilters() + ")";
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerFilter(String key, List<LogviewerSettings.LogviewerPredefinedFilter> predefinedFilters) {
         this.key = key;
         this.predefinedFilters = predefinedFilters;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerFilter() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public static class LogviewerFilterBuilder {
         @SuppressFBWarnings(justification = "generated code")
         private String key;
         @SuppressFBWarnings(justification = "generated code")
         private ArrayList<LogviewerSettings.LogviewerPredefinedFilter> predefinedFilters;

         @SuppressFBWarnings(justification = "generated code")
         LogviewerFilterBuilder() {
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerFilter.LogviewerFilterBuilder key(String key) {
            this.key = key;
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerFilter.LogviewerFilterBuilder predefinedFilter(LogviewerSettings.LogviewerPredefinedFilter predefinedFilter) {
            if (this.predefinedFilters == null) {
               this.predefinedFilters = new ArrayList<>();
            }

            this.predefinedFilters.add(predefinedFilter);
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerFilter.LogviewerFilterBuilder predefinedFilters(
            Collection<? extends LogviewerSettings.LogviewerPredefinedFilter> predefinedFilters
         ) {
            if (predefinedFilters == null) {
               throw new NullPointerException("predefinedFilters cannot be null");
            }

            if (this.predefinedFilters == null) {
               this.predefinedFilters = new ArrayList<>();
            }

            this.predefinedFilters.addAll(predefinedFilters);
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerFilter.LogviewerFilterBuilder clearPredefinedFilters() {
            if (this.predefinedFilters != null) {
               this.predefinedFilters.clear();
            }

            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerFilter build() {
            return new LogviewerSettings.LogviewerFilter(this.key, switch (this.predefinedFilters == null ? 0 : this.predefinedFilters.size()) {
               case 0 -> Collections.emptyList();
               case 1 -> Collections.singletonList(this.predefinedFilters.get(0));
               default -> Collections.unmodifiableList(new ArrayList<>(this.predefinedFilters));
            });
         }

         @SuppressFBWarnings(justification = "generated code")
         @Override
         public String toString() {
            return "LogviewerSettings.LogviewerFilter.LogviewerFilterBuilder(key=" + this.key + ", predefinedFilters=" + this.predefinedFilters + ")";
         }
      }
   }

   public static final class LogviewerPredefinedFilter {
      private String key;
      private String filter;

      @SuppressFBWarnings(justification = "generated code")
      public static LogviewerSettings.LogviewerPredefinedFilter.LogviewerPredefinedFilterBuilder builder() {
         return new LogviewerSettings.LogviewerPredefinedFilter.LogviewerPredefinedFilterBuilder();
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getKey() {
         return this.key;
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getFilter() {
         return this.filter;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setKey(String key) {
         this.key = key;
      }

      @SuppressFBWarnings(justification = "generated code")
      public void setFilter(String filter) {
         this.filter = filter;
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public boolean equals(Object o) {
         if (o == this) {
            return true;
         } else if (!(o instanceof LogviewerSettings.LogviewerPredefinedFilter other)) {
            return false;
         } else {
            Object this$key = this.key;
            Object other$key = other.key;
            if (this$key == null ? other$key == null : this$key.equals(other$key)) {
               Object this$filter = this.filter;
               Object other$filter = other.filter;
               return this$filter == null ? other$filter == null : this$filter.equals(other$filter);
            } else {
               return false;
            }
         }
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public int hashCode() {
         int PRIME = 59;
         int result = 1;
         Object $key = this.key;
         result = result * 59 + ($key == null ? 43 : $key.hashCode());
         Object $filter = this.filter;
         return result * 59 + ($filter == null ? 43 : $filter.hashCode());
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "LogviewerSettings.LogviewerPredefinedFilter(key=" + this.getKey() + ", filter=" + this.getFilter() + ")";
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerPredefinedFilter(String key, String filter) {
         this.key = key;
         this.filter = filter;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerPredefinedFilter() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public static class LogviewerPredefinedFilterBuilder {
         @SuppressFBWarnings(justification = "generated code")
         private String key;
         @SuppressFBWarnings(justification = "generated code")
         private String filter;

         @SuppressFBWarnings(justification = "generated code")
         LogviewerPredefinedFilterBuilder() {
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerPredefinedFilter.LogviewerPredefinedFilterBuilder key(String key) {
            this.key = key;
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerPredefinedFilter.LogviewerPredefinedFilterBuilder filter(String filter) {
            this.filter = filter;
            return this;
         }

         @SuppressFBWarnings(justification = "generated code")
         public LogviewerSettings.LogviewerPredefinedFilter build() {
            return new LogviewerSettings.LogviewerPredefinedFilter(this.key, this.filter);
         }

         @SuppressFBWarnings(justification = "generated code")
         @Override
         public String toString() {
            return "LogviewerSettings.LogviewerPredefinedFilter.LogviewerPredefinedFilterBuilder(key=" + this.key + ", filter=" + this.filter + ")";
         }
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class LogviewerSettingsBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private ArrayList<LogviewerSettings.LogviewerFilter> filters;
      @SuppressFBWarnings(justification = "generated code")
      private ArrayList<LogviewerSettings.LogviewerColorRule> colors;
      @SuppressFBWarnings(justification = "generated code")
      private String defaultApplication;
      @SuppressFBWarnings(justification = "generated code")
      private String defaultConfigContextIdentifier;

      @SuppressFBWarnings(justification = "generated code")
      LogviewerSettingsBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder filter(LogviewerSettings.LogviewerFilter filter) {
         if (this.filters == null) {
            this.filters = new ArrayList<>();
         }

         this.filters.add(filter);
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder filters(Collection<? extends LogviewerSettings.LogviewerFilter> filters) {
         if (filters == null) {
            throw new NullPointerException("filters cannot be null");
         }

         if (this.filters == null) {
            this.filters = new ArrayList<>();
         }

         this.filters.addAll(filters);
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder clearFilters() {
         if (this.filters != null) {
            this.filters.clear();
         }

         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder color(LogviewerSettings.LogviewerColorRule color) {
         if (this.colors == null) {
            this.colors = new ArrayList<>();
         }

         this.colors.add(color);
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder colors(Collection<? extends LogviewerSettings.LogviewerColorRule> colors) {
         if (colors == null) {
            throw new NullPointerException("colors cannot be null");
         }

         if (this.colors == null) {
            this.colors = new ArrayList<>();
         }

         this.colors.addAll(colors);
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder clearColors() {
         if (this.colors != null) {
            this.colors.clear();
         }

         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder defaultApplication(@Nullable String defaultApplication) {
         this.defaultApplication = defaultApplication;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings.LogviewerSettingsBuilder defaultConfigContextIdentifier(@Nonnull String defaultConfigContextIdentifier) {
         if (defaultConfigContextIdentifier == null) {
            throw new NullPointerException("defaultConfigContextIdentifier is marked non-null but is null");
         }

         this.defaultConfigContextIdentifier = defaultConfigContextIdentifier;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public LogviewerSettings build() {
         List filters = switch (this.filters == null ? 0 : this.filters.size()) {
            case 0 -> Collections.emptyList();
            case 1 -> Collections.singletonList(this.filters.get(0));
            default -> Collections.unmodifiableList(new ArrayList<>(this.filters));
         };

         return new LogviewerSettings(filters, switch (this.colors == null ? 0 : this.colors.size()) {
            case 0 -> Collections.emptyList();
            case 1 -> Collections.singletonList(this.colors.get(0));
            default -> Collections.unmodifiableList(new ArrayList<>(this.colors));
         }, this.defaultApplication, this.defaultConfigContextIdentifier);
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "LogviewerSettings.LogviewerSettingsBuilder(filters="
            + this.filters
            + ", colors="
            + this.colors
            + ", defaultApplication="
            + this.defaultApplication
            + ", defaultConfigContextIdentifier="
            + this.defaultConfigContextIdentifier
            + ")";
      }
   }
}
