// Code generated by protocol buffer compiler. Do not edit!
package emu.nebula.proto;

import java.io.IOException;
import us.hebi.quickbuf.FieldName;
import us.hebi.quickbuf.InvalidProtocolBufferException;
import us.hebi.quickbuf.JsonSink;
import us.hebi.quickbuf.JsonSource;
import us.hebi.quickbuf.MessageFactory;
import us.hebi.quickbuf.ProtoMessage;
import us.hebi.quickbuf.ProtoSink;
import us.hebi.quickbuf.ProtoSource;
import us.hebi.quickbuf.RepeatedByte;
import us.hebi.quickbuf.RepeatedMessage;

public final class TravelerDuelLevelSettle {
  /**
   * Protobuf type {@code TravelerDuelLevelSettleReq}
   */
  public static final class TravelerDuelLevelSettleReq extends ProtoMessage<TravelerDuelLevelSettleReq> implements Cloneable {
    private static final long serialVersionUID = 0L;

    /**
     * <code>optional uint32 Star = 1;</code>
     */
    private int star;

    /**
     * <code>optional uint32 Time = 2;</code>
     */
    private int time;

    /**
     * <code>optional .Events Events = 15;</code>
     */
    private final Public.Events events = Public.Events.newInstance();

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     */
    private final RepeatedByte nextPackage = RepeatedByte.newEmptyInstance();

    private TravelerDuelLevelSettleReq() {
    }

    /**
     * @return a new empty instance of {@code TravelerDuelLevelSettleReq}
     */
    public static TravelerDuelLevelSettleReq newInstance() {
      return new TravelerDuelLevelSettleReq();
    }

    /**
     * <code>optional uint32 Star = 1;</code>
     * @return whether the star field is set
     */
    public boolean hasStar() {
      return (bitField0_ & 0x00000001) != 0;
    }

    /**
     * <code>optional uint32 Star = 1;</code>
     * @return this
     */
    public TravelerDuelLevelSettleReq clearStar() {
      bitField0_ &= ~0x00000001;
      star = 0;
      return this;
    }

    /**
     * <code>optional uint32 Star = 1;</code>
     * @return the star
     */
    public int getStar() {
      return star;
    }

    /**
     * <code>optional uint32 Star = 1;</code>
     * @param value the star to set
     * @return this
     */
    public TravelerDuelLevelSettleReq setStar(final int value) {
      bitField0_ |= 0x00000001;
      star = value;
      return this;
    }

    /**
     * <code>optional uint32 Time = 2;</code>
     * @return whether the time field is set
     */
    public boolean hasTime() {
      return (bitField0_ & 0x00000002) != 0;
    }

    /**
     * <code>optional uint32 Time = 2;</code>
     * @return this
     */
    public TravelerDuelLevelSettleReq clearTime() {
      bitField0_ &= ~0x00000002;
      time = 0;
      return this;
    }

    /**
     * <code>optional uint32 Time = 2;</code>
     * @return the time
     */
    public int getTime() {
      return time;
    }

    /**
     * <code>optional uint32 Time = 2;</code>
     * @param value the time to set
     * @return this
     */
    public TravelerDuelLevelSettleReq setTime(final int value) {
      bitField0_ |= 0x00000002;
      time = value;
      return this;
    }

    /**
     * <code>optional .Events Events = 15;</code>
     * @return whether the events field is set
     */
    public boolean hasEvents() {
      return (bitField0_ & 0x00000004) != 0;
    }

    /**
     * <code>optional .Events Events = 15;</code>
     * @return this
     */
    public TravelerDuelLevelSettleReq clearEvents() {
      bitField0_ &= ~0x00000004;
      events.clear();
      return this;
    }

    /**
     * <code>optional .Events Events = 15;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableEvents()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public Public.Events getEvents() {
      return events;
    }

    /**
     * <code>optional .Events Events = 15;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public Public.Events getMutableEvents() {
      bitField0_ |= 0x00000004;
      return events;
    }

    /**
     * <code>optional .Events Events = 15;</code>
     * @param value the events to set
     * @return this
     */
    public TravelerDuelLevelSettleReq setEvents(final Public.Events value) {
      bitField0_ |= 0x00000004;
      events.copyFrom(value);
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @return whether the nextPackage field is set
     */
    public boolean hasNextPackage() {
      return (bitField0_ & 0x00000008) != 0;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @return this
     */
    public TravelerDuelLevelSettleReq clearNextPackage() {
      bitField0_ &= ~0x00000008;
      nextPackage.clear();
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableNextPackage()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedByte getNextPackage() {
      return nextPackage;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedByte getMutableNextPackage() {
      bitField0_ |= 0x00000008;
      return nextPackage;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @param value the nextPackage to add
     * @return this
     */
    public TravelerDuelLevelSettleReq addNextPackage(final byte value) {
      bitField0_ |= 0x00000008;
      nextPackage.add(value);
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @param values the nextPackage to add
     * @return this
     */
    public TravelerDuelLevelSettleReq addAllNextPackage(final byte... values) {
      bitField0_ |= 0x00000008;
      nextPackage.addAll(values);
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @param values the nextPackage to set
     * @return this
     */
    public TravelerDuelLevelSettleReq setNextPackage(final byte... values) {
      bitField0_ |= 0x00000008;
      nextPackage.copyFrom(values);
      return this;
    }

    @Override
    public TravelerDuelLevelSettleReq copyFrom(final TravelerDuelLevelSettleReq other) {
      cachedSize = other.cachedSize;
      if ((bitField0_ | other.bitField0_) != 0) {
        bitField0_ = other.bitField0_;
        star = other.star;
        time = other.time;
        events.copyFrom(other.events);
        nextPackage.copyFrom(other.nextPackage);
      }
      return this;
    }

    @Override
    public TravelerDuelLevelSettleReq mergeFrom(final TravelerDuelLevelSettleReq other) {
      if (other.isEmpty()) {
        return this;
      }
      cachedSize = -1;
      if (other.hasStar()) {
        setStar(other.star);
      }
      if (other.hasTime()) {
        setTime(other.time);
      }
      if (other.hasEvents()) {
        getMutableEvents().mergeFrom(other.events);
      }
      if (other.hasNextPackage()) {
        getMutableNextPackage().copyFrom(other.nextPackage);
      }
      return this;
    }

    @Override
    public TravelerDuelLevelSettleReq clear() {
      if (isEmpty()) {
        return this;
      }
      cachedSize = -1;
      bitField0_ = 0;
      star = 0;
      time = 0;
      events.clear();
      nextPackage.clear();
      return this;
    }

    @Override
    public TravelerDuelLevelSettleReq clearQuick() {
      if (isEmpty()) {
        return this;
      }
      cachedSize = -1;
      bitField0_ = 0;
      events.clearQuick();
      nextPackage.clear();
      return this;
    }

    @Override
    public boolean equals(Object o) {
      if (o == this) {
        return true;
      }
      if (!(o instanceof TravelerDuelLevelSettleReq)) {
        return false;
      }
      TravelerDuelLevelSettleReq other = (TravelerDuelLevelSettleReq) o;
      return bitField0_ == other.bitField0_
        && (!hasStar() || star == other.star)
        && (!hasTime() || time == other.time)
        && (!hasEvents() || events.equals(other.events))
        && (!hasNextPackage() || nextPackage.equals(other.nextPackage));
    }

    @Override
    public void writeTo(final ProtoSink output) throws IOException {
      if ((bitField0_ & 0x00000001) != 0) {
        output.writeRawByte((byte) 8);
        output.writeUInt32NoTag(star);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        output.writeRawByte((byte) 16);
        output.writeUInt32NoTag(time);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        output.writeRawByte((byte) 122);
        output.writeMessageNoTag(events);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        output.writeRawLittleEndian16((short) 32762);
        output.writeBytesNoTag(nextPackage);
      }
    }

    @Override
    protected int computeSerializedSize() {
      int size = 0;
      if ((bitField0_ & 0x00000001) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(star);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(time);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        size += 1 + ProtoSink.computeMessageSizeNoTag(events);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        size += 2 + ProtoSink.computeBytesSizeNoTag(nextPackage);
      }
      return size;
    }

    @Override
    @SuppressWarnings("fallthrough")
    public TravelerDuelLevelSettleReq mergeFrom(final ProtoSource input) throws IOException {
      // Enabled Fall-Through Optimization (QuickBuffers)
      int tag = input.readTag();
      while (true) {
        switch (tag) {
          case 8: {
            // star
            star = input.readUInt32();
            bitField0_ |= 0x00000001;
            tag = input.readTag();
            if (tag != 16) {
              break;
            }
          }
          case 16: {
            // time
            time = input.readUInt32();
            bitField0_ |= 0x00000002;
            tag = input.readTag();
            if (tag != 122) {
              break;
            }
          }
          case 122: {
            // events
            input.readMessage(events);
            bitField0_ |= 0x00000004;
            tag = input.readTag();
            if (tag != 16378) {
              break;
            }
          }
          case 16378: {
            // nextPackage
            input.readBytes(nextPackage);
            bitField0_ |= 0x00000008;
            tag = input.readTag();
            if (tag != 0) {
              break;
            }
          }
          case 0: {
            return this;
          }
          default: {
            if (!input.skipField(tag)) {
              return this;
            }
            tag = input.readTag();
            break;
          }
        }
      }
    }

    @Override
    public void writeTo(final JsonSink output) throws IOException {
      output.beginObject();
      if ((bitField0_ & 0x00000001) != 0) {
        output.writeUInt32(FieldNames.star, star);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        output.writeUInt32(FieldNames.time, time);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        output.writeMessage(FieldNames.events, events);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        output.writeBytes(FieldNames.nextPackage, nextPackage);
      }
      output.endObject();
    }

    @Override
    public TravelerDuelLevelSettleReq mergeFrom(final JsonSource input) throws IOException {
      if (!input.beginObject()) {
        return this;
      }
      while (!input.isAtEnd()) {
        switch (input.readFieldHash()) {
          case 2587250: {
            if (input.isAtField(FieldNames.star)) {
              if (!input.trySkipNullValue()) {
                star = input.readUInt32();
                bitField0_ |= 0x00000001;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 2606829: {
            if (input.isAtField(FieldNames.time)) {
              if (!input.trySkipNullValue()) {
                time = input.readUInt32();
                bitField0_ |= 0x00000002;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 2087505209: {
            if (input.isAtField(FieldNames.events)) {
              if (!input.trySkipNullValue()) {
                input.readMessage(events);
                bitField0_ |= 0x00000004;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -2082324045: {
            if (input.isAtField(FieldNames.nextPackage)) {
              if (!input.trySkipNullValue()) {
                input.readBytes(nextPackage);
                bitField0_ |= 0x00000008;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          default: {
            input.skipUnknownField();
            break;
          }
        }
      }
      input.endObject();
      return this;
    }

    @Override
    public TravelerDuelLevelSettleReq clone() {
      return new TravelerDuelLevelSettleReq().copyFrom(this);
    }

    @Override
    public boolean isEmpty() {
      return ((bitField0_) == 0);
    }

    public static TravelerDuelLevelSettleReq parseFrom(final byte[] data) throws
        InvalidProtocolBufferException {
      return ProtoMessage.mergeFrom(new TravelerDuelLevelSettleReq(), data).checkInitialized();
    }

    public static TravelerDuelLevelSettleReq parseFrom(final ProtoSource input) throws IOException {
      return ProtoMessage.mergeFrom(new TravelerDuelLevelSettleReq(), input).checkInitialized();
    }

    public static TravelerDuelLevelSettleReq parseFrom(final JsonSource input) throws IOException {
      return ProtoMessage.mergeFrom(new TravelerDuelLevelSettleReq(), input).checkInitialized();
    }

    /**
     * @return factory for creating TravelerDuelLevelSettleReq messages
     */
    public static MessageFactory<TravelerDuelLevelSettleReq> getFactory() {
      return TravelerDuelLevelSettleReqFactory.INSTANCE;
    }

    private enum TravelerDuelLevelSettleReqFactory implements MessageFactory<TravelerDuelLevelSettleReq> {
      INSTANCE;

      @Override
      public TravelerDuelLevelSettleReq create() {
        return TravelerDuelLevelSettleReq.newInstance();
      }
    }

    /**
     * Contains name constants used for serializing JSON
     */
    static class FieldNames {
      static final FieldName star = FieldName.forField("Star");

      static final FieldName time = FieldName.forField("Time");

      static final FieldName events = FieldName.forField("Events");

      static final FieldName nextPackage = FieldName.forField("NextPackage");
    }
  }

  /**
   * Protobuf type {@code TravelerDuelLevelSettleResp}
   */
  public static final class TravelerDuelLevelSettleResp extends ProtoMessage<TravelerDuelLevelSettleResp> implements Cloneable {
    private static final long serialVersionUID = 0L;

    /**
     * <code>optional int32 DuelExpChange = 7;</code>
     */
    private int duelExpChange;

    /**
     * <code>optional uint32 DuelLevel = 5;</code>
     */
    private int duelLevel;

    /**
     * <code>optional uint32 DuelExp = 6;</code>
     */
    private int duelExp;

    /**
     * <code>optional uint32 BaseScore = 9;</code>
     */
    private int baseScore;

    /**
     * <code>optional uint32 TimeScore = 10;</code>
     */
    private int timeScore;

    /**
     * <code>optional uint32 FinalScore = 11;</code>
     */
    private int finalScore;

    /**
     * <code>optional uint32 MaxScore = 12;</code>
     */
    private int maxScore;

    /**
     * <code>optional uint32 UploadRemainTimes = 13;</code>
     */
    private int uploadRemainTimes;

    /**
     * <code>optional bool First = 1;</code>
     */
    private boolean first;

    /**
     * <code>optional .ChangeInfo Change = 2;</code>
     */
    private final Public.ChangeInfo change = Public.ChangeInfo.newInstance();

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     */
    private final RepeatedByte nextPackage = RepeatedByte.newEmptyInstance();

    /**
     * <code>repeated .ItemTpl AwardItems = 3;</code>
     */
    private final RepeatedMessage<Public.ItemTpl> awardItems = RepeatedMessage.newEmptyInstance(Public.ItemTpl.getFactory());

    /**
     * <code>repeated .ItemTpl FirstItems = 4;</code>
     */
    private final RepeatedMessage<Public.ItemTpl> firstItems = RepeatedMessage.newEmptyInstance(Public.ItemTpl.getFactory());

    /**
     * <code>repeated .AffinityInfo Affinities = 8;</code>
     */
    private final RepeatedMessage<Public.AffinityInfo> affinities = RepeatedMessage.newEmptyInstance(Public.AffinityInfo.getFactory());

    /**
     * <code>repeated .ItemTpl SurpriseItems = 14;</code>
     */
    private final RepeatedMessage<Public.ItemTpl> surpriseItems = RepeatedMessage.newEmptyInstance(Public.ItemTpl.getFactory());

    private TravelerDuelLevelSettleResp() {
    }

    /**
     * @return a new empty instance of {@code TravelerDuelLevelSettleResp}
     */
    public static TravelerDuelLevelSettleResp newInstance() {
      return new TravelerDuelLevelSettleResp();
    }

    /**
     * <code>optional int32 DuelExpChange = 7;</code>
     * @return whether the duelExpChange field is set
     */
    public boolean hasDuelExpChange() {
      return (bitField0_ & 0x00000001) != 0;
    }

    /**
     * <code>optional int32 DuelExpChange = 7;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearDuelExpChange() {
      bitField0_ &= ~0x00000001;
      duelExpChange = 0;
      return this;
    }

    /**
     * <code>optional int32 DuelExpChange = 7;</code>
     * @return the duelExpChange
     */
    public int getDuelExpChange() {
      return duelExpChange;
    }

    /**
     * <code>optional int32 DuelExpChange = 7;</code>
     * @param value the duelExpChange to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setDuelExpChange(final int value) {
      bitField0_ |= 0x00000001;
      duelExpChange = value;
      return this;
    }

    /**
     * <code>optional uint32 DuelLevel = 5;</code>
     * @return whether the duelLevel field is set
     */
    public boolean hasDuelLevel() {
      return (bitField0_ & 0x00000002) != 0;
    }

    /**
     * <code>optional uint32 DuelLevel = 5;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearDuelLevel() {
      bitField0_ &= ~0x00000002;
      duelLevel = 0;
      return this;
    }

    /**
     * <code>optional uint32 DuelLevel = 5;</code>
     * @return the duelLevel
     */
    public int getDuelLevel() {
      return duelLevel;
    }

    /**
     * <code>optional uint32 DuelLevel = 5;</code>
     * @param value the duelLevel to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setDuelLevel(final int value) {
      bitField0_ |= 0x00000002;
      duelLevel = value;
      return this;
    }

    /**
     * <code>optional uint32 DuelExp = 6;</code>
     * @return whether the duelExp field is set
     */
    public boolean hasDuelExp() {
      return (bitField0_ & 0x00000004) != 0;
    }

    /**
     * <code>optional uint32 DuelExp = 6;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearDuelExp() {
      bitField0_ &= ~0x00000004;
      duelExp = 0;
      return this;
    }

    /**
     * <code>optional uint32 DuelExp = 6;</code>
     * @return the duelExp
     */
    public int getDuelExp() {
      return duelExp;
    }

    /**
     * <code>optional uint32 DuelExp = 6;</code>
     * @param value the duelExp to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setDuelExp(final int value) {
      bitField0_ |= 0x00000004;
      duelExp = value;
      return this;
    }

    /**
     * <code>optional uint32 BaseScore = 9;</code>
     * @return whether the baseScore field is set
     */
    public boolean hasBaseScore() {
      return (bitField0_ & 0x00000008) != 0;
    }

    /**
     * <code>optional uint32 BaseScore = 9;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearBaseScore() {
      bitField0_ &= ~0x00000008;
      baseScore = 0;
      return this;
    }

    /**
     * <code>optional uint32 BaseScore = 9;</code>
     * @return the baseScore
     */
    public int getBaseScore() {
      return baseScore;
    }

    /**
     * <code>optional uint32 BaseScore = 9;</code>
     * @param value the baseScore to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setBaseScore(final int value) {
      bitField0_ |= 0x00000008;
      baseScore = value;
      return this;
    }

    /**
     * <code>optional uint32 TimeScore = 10;</code>
     * @return whether the timeScore field is set
     */
    public boolean hasTimeScore() {
      return (bitField0_ & 0x00000010) != 0;
    }

    /**
     * <code>optional uint32 TimeScore = 10;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearTimeScore() {
      bitField0_ &= ~0x00000010;
      timeScore = 0;
      return this;
    }

    /**
     * <code>optional uint32 TimeScore = 10;</code>
     * @return the timeScore
     */
    public int getTimeScore() {
      return timeScore;
    }

    /**
     * <code>optional uint32 TimeScore = 10;</code>
     * @param value the timeScore to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setTimeScore(final int value) {
      bitField0_ |= 0x00000010;
      timeScore = value;
      return this;
    }

    /**
     * <code>optional uint32 FinalScore = 11;</code>
     * @return whether the finalScore field is set
     */
    public boolean hasFinalScore() {
      return (bitField0_ & 0x00000020) != 0;
    }

    /**
     * <code>optional uint32 FinalScore = 11;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearFinalScore() {
      bitField0_ &= ~0x00000020;
      finalScore = 0;
      return this;
    }

    /**
     * <code>optional uint32 FinalScore = 11;</code>
     * @return the finalScore
     */
    public int getFinalScore() {
      return finalScore;
    }

    /**
     * <code>optional uint32 FinalScore = 11;</code>
     * @param value the finalScore to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setFinalScore(final int value) {
      bitField0_ |= 0x00000020;
      finalScore = value;
      return this;
    }

    /**
     * <code>optional uint32 MaxScore = 12;</code>
     * @return whether the maxScore field is set
     */
    public boolean hasMaxScore() {
      return (bitField0_ & 0x00000040) != 0;
    }

    /**
     * <code>optional uint32 MaxScore = 12;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearMaxScore() {
      bitField0_ &= ~0x00000040;
      maxScore = 0;
      return this;
    }

    /**
     * <code>optional uint32 MaxScore = 12;</code>
     * @return the maxScore
     */
    public int getMaxScore() {
      return maxScore;
    }

    /**
     * <code>optional uint32 MaxScore = 12;</code>
     * @param value the maxScore to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setMaxScore(final int value) {
      bitField0_ |= 0x00000040;
      maxScore = value;
      return this;
    }

    /**
     * <code>optional uint32 UploadRemainTimes = 13;</code>
     * @return whether the uploadRemainTimes field is set
     */
    public boolean hasUploadRemainTimes() {
      return (bitField0_ & 0x00000080) != 0;
    }

    /**
     * <code>optional uint32 UploadRemainTimes = 13;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearUploadRemainTimes() {
      bitField0_ &= ~0x00000080;
      uploadRemainTimes = 0;
      return this;
    }

    /**
     * <code>optional uint32 UploadRemainTimes = 13;</code>
     * @return the uploadRemainTimes
     */
    public int getUploadRemainTimes() {
      return uploadRemainTimes;
    }

    /**
     * <code>optional uint32 UploadRemainTimes = 13;</code>
     * @param value the uploadRemainTimes to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setUploadRemainTimes(final int value) {
      bitField0_ |= 0x00000080;
      uploadRemainTimes = value;
      return this;
    }

    /**
     * <code>optional bool First = 1;</code>
     * @return whether the first field is set
     */
    public boolean hasFirst() {
      return (bitField0_ & 0x00000100) != 0;
    }

    /**
     * <code>optional bool First = 1;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearFirst() {
      bitField0_ &= ~0x00000100;
      first = false;
      return this;
    }

    /**
     * <code>optional bool First = 1;</code>
     * @return the first
     */
    public boolean getFirst() {
      return first;
    }

    /**
     * <code>optional bool First = 1;</code>
     * @param value the first to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setFirst(final boolean value) {
      bitField0_ |= 0x00000100;
      first = value;
      return this;
    }

    /**
     * <code>optional .ChangeInfo Change = 2;</code>
     * @return whether the change field is set
     */
    public boolean hasChange() {
      return (bitField0_ & 0x00000200) != 0;
    }

    /**
     * <code>optional .ChangeInfo Change = 2;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearChange() {
      bitField0_ &= ~0x00000200;
      change.clear();
      return this;
    }

    /**
     * <code>optional .ChangeInfo Change = 2;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableChange()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public Public.ChangeInfo getChange() {
      return change;
    }

    /**
     * <code>optional .ChangeInfo Change = 2;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public Public.ChangeInfo getMutableChange() {
      bitField0_ |= 0x00000200;
      return change;
    }

    /**
     * <code>optional .ChangeInfo Change = 2;</code>
     * @param value the change to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setChange(final Public.ChangeInfo value) {
      bitField0_ |= 0x00000200;
      change.copyFrom(value);
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @return whether the nextPackage field is set
     */
    public boolean hasNextPackage() {
      return (bitField0_ & 0x00000400) != 0;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearNextPackage() {
      bitField0_ &= ~0x00000400;
      nextPackage.clear();
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableNextPackage()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedByte getNextPackage() {
      return nextPackage;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedByte getMutableNextPackage() {
      bitField0_ |= 0x00000400;
      return nextPackage;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @param value the nextPackage to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addNextPackage(final byte value) {
      bitField0_ |= 0x00000400;
      nextPackage.add(value);
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @param values the nextPackage to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addAllNextPackage(final byte... values) {
      bitField0_ |= 0x00000400;
      nextPackage.addAll(values);
      return this;
    }

    /**
     * <code>optional bytes NextPackage = 2047;</code>
     * @param values the nextPackage to set
     * @return this
     */
    public TravelerDuelLevelSettleResp setNextPackage(final byte... values) {
      bitField0_ |= 0x00000400;
      nextPackage.copyFrom(values);
      return this;
    }

    /**
     * <code>repeated .ItemTpl AwardItems = 3;</code>
     * @return whether the awardItems field is set
     */
    public boolean hasAwardItems() {
      return (bitField0_ & 0x00000800) != 0;
    }

    /**
     * <code>repeated .ItemTpl AwardItems = 3;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearAwardItems() {
      bitField0_ &= ~0x00000800;
      awardItems.clear();
      return this;
    }

    /**
     * <code>repeated .ItemTpl AwardItems = 3;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableAwardItems()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedMessage<Public.ItemTpl> getAwardItems() {
      return awardItems;
    }

    /**
     * <code>repeated .ItemTpl AwardItems = 3;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedMessage<Public.ItemTpl> getMutableAwardItems() {
      bitField0_ |= 0x00000800;
      return awardItems;
    }

    /**
     * <code>repeated .ItemTpl AwardItems = 3;</code>
     * @param value the awardItems to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addAwardItems(final Public.ItemTpl value) {
      bitField0_ |= 0x00000800;
      awardItems.add(value);
      return this;
    }

    /**
     * <code>repeated .ItemTpl AwardItems = 3;</code>
     * @param values the awardItems to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addAllAwardItems(final Public.ItemTpl... values) {
      bitField0_ |= 0x00000800;
      awardItems.addAll(values);
      return this;
    }

    /**
     * <code>repeated .ItemTpl FirstItems = 4;</code>
     * @return whether the firstItems field is set
     */
    public boolean hasFirstItems() {
      return (bitField0_ & 0x00001000) != 0;
    }

    /**
     * <code>repeated .ItemTpl FirstItems = 4;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearFirstItems() {
      bitField0_ &= ~0x00001000;
      firstItems.clear();
      return this;
    }

    /**
     * <code>repeated .ItemTpl FirstItems = 4;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableFirstItems()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedMessage<Public.ItemTpl> getFirstItems() {
      return firstItems;
    }

    /**
     * <code>repeated .ItemTpl FirstItems = 4;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedMessage<Public.ItemTpl> getMutableFirstItems() {
      bitField0_ |= 0x00001000;
      return firstItems;
    }

    /**
     * <code>repeated .ItemTpl FirstItems = 4;</code>
     * @param value the firstItems to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addFirstItems(final Public.ItemTpl value) {
      bitField0_ |= 0x00001000;
      firstItems.add(value);
      return this;
    }

    /**
     * <code>repeated .ItemTpl FirstItems = 4;</code>
     * @param values the firstItems to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addAllFirstItems(final Public.ItemTpl... values) {
      bitField0_ |= 0x00001000;
      firstItems.addAll(values);
      return this;
    }

    /**
     * <code>repeated .AffinityInfo Affinities = 8;</code>
     * @return whether the affinities field is set
     */
    public boolean hasAffinities() {
      return (bitField0_ & 0x00002000) != 0;
    }

    /**
     * <code>repeated .AffinityInfo Affinities = 8;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearAffinities() {
      bitField0_ &= ~0x00002000;
      affinities.clear();
      return this;
    }

    /**
     * <code>repeated .AffinityInfo Affinities = 8;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableAffinities()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedMessage<Public.AffinityInfo> getAffinities() {
      return affinities;
    }

    /**
     * <code>repeated .AffinityInfo Affinities = 8;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedMessage<Public.AffinityInfo> getMutableAffinities() {
      bitField0_ |= 0x00002000;
      return affinities;
    }

    /**
     * <code>repeated .AffinityInfo Affinities = 8;</code>
     * @param value the affinities to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addAffinities(final Public.AffinityInfo value) {
      bitField0_ |= 0x00002000;
      affinities.add(value);
      return this;
    }

    /**
     * <code>repeated .AffinityInfo Affinities = 8;</code>
     * @param values the affinities to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addAllAffinities(final Public.AffinityInfo... values) {
      bitField0_ |= 0x00002000;
      affinities.addAll(values);
      return this;
    }

    /**
     * <code>repeated .ItemTpl SurpriseItems = 14;</code>
     * @return whether the surpriseItems field is set
     */
    public boolean hasSurpriseItems() {
      return (bitField0_ & 0x00004000) != 0;
    }

    /**
     * <code>repeated .ItemTpl SurpriseItems = 14;</code>
     * @return this
     */
    public TravelerDuelLevelSettleResp clearSurpriseItems() {
      bitField0_ &= ~0x00004000;
      surpriseItems.clear();
      return this;
    }

    /**
     * <code>repeated .ItemTpl SurpriseItems = 14;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableSurpriseItems()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedMessage<Public.ItemTpl> getSurpriseItems() {
      return surpriseItems;
    }

    /**
     * <code>repeated .ItemTpl SurpriseItems = 14;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedMessage<Public.ItemTpl> getMutableSurpriseItems() {
      bitField0_ |= 0x00004000;
      return surpriseItems;
    }

    /**
     * <code>repeated .ItemTpl SurpriseItems = 14;</code>
     * @param value the surpriseItems to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addSurpriseItems(final Public.ItemTpl value) {
      bitField0_ |= 0x00004000;
      surpriseItems.add(value);
      return this;
    }

    /**
     * <code>repeated .ItemTpl SurpriseItems = 14;</code>
     * @param values the surpriseItems to add
     * @return this
     */
    public TravelerDuelLevelSettleResp addAllSurpriseItems(final Public.ItemTpl... values) {
      bitField0_ |= 0x00004000;
      surpriseItems.addAll(values);
      return this;
    }

    @Override
    public TravelerDuelLevelSettleResp copyFrom(final TravelerDuelLevelSettleResp other) {
      cachedSize = other.cachedSize;
      if ((bitField0_ | other.bitField0_) != 0) {
        bitField0_ = other.bitField0_;
        duelExpChange = other.duelExpChange;
        duelLevel = other.duelLevel;
        duelExp = other.duelExp;
        baseScore = other.baseScore;
        timeScore = other.timeScore;
        finalScore = other.finalScore;
        maxScore = other.maxScore;
        uploadRemainTimes = other.uploadRemainTimes;
        first = other.first;
        change.copyFrom(other.change);
        nextPackage.copyFrom(other.nextPackage);
        awardItems.copyFrom(other.awardItems);
        firstItems.copyFrom(other.firstItems);
        affinities.copyFrom(other.affinities);
        surpriseItems.copyFrom(other.surpriseItems);
      }
      return this;
    }

    @Override
    public TravelerDuelLevelSettleResp mergeFrom(final TravelerDuelLevelSettleResp other) {
      if (other.isEmpty()) {
        return this;
      }
      cachedSize = -1;
      if (other.hasDuelExpChange()) {
        setDuelExpChange(other.duelExpChange);
      }
      if (other.hasDuelLevel()) {
        setDuelLevel(other.duelLevel);
      }
      if (other.hasDuelExp()) {
        setDuelExp(other.duelExp);
      }
      if (other.hasBaseScore()) {
        setBaseScore(other.baseScore);
      }
      if (other.hasTimeScore()) {
        setTimeScore(other.timeScore);
      }
      if (other.hasFinalScore()) {
        setFinalScore(other.finalScore);
      }
      if (other.hasMaxScore()) {
        setMaxScore(other.maxScore);
      }
      if (other.hasUploadRemainTimes()) {
        setUploadRemainTimes(other.uploadRemainTimes);
      }
      if (other.hasFirst()) {
        setFirst(other.first);
      }
      if (other.hasChange()) {
        getMutableChange().mergeFrom(other.change);
      }
      if (other.hasNextPackage()) {
        getMutableNextPackage().copyFrom(other.nextPackage);
      }
      if (other.hasAwardItems()) {
        getMutableAwardItems().addAll(other.awardItems);
      }
      if (other.hasFirstItems()) {
        getMutableFirstItems().addAll(other.firstItems);
      }
      if (other.hasAffinities()) {
        getMutableAffinities().addAll(other.affinities);
      }
      if (other.hasSurpriseItems()) {
        getMutableSurpriseItems().addAll(other.surpriseItems);
      }
      return this;
    }

    @Override
    public TravelerDuelLevelSettleResp clear() {
      if (isEmpty()) {
        return this;
      }
      cachedSize = -1;
      bitField0_ = 0;
      duelExpChange = 0;
      duelLevel = 0;
      duelExp = 0;
      baseScore = 0;
      timeScore = 0;
      finalScore = 0;
      maxScore = 0;
      uploadRemainTimes = 0;
      first = false;
      change.clear();
      nextPackage.clear();
      awardItems.clear();
      firstItems.clear();
      affinities.clear();
      surpriseItems.clear();
      return this;
    }

    @Override
    public TravelerDuelLevelSettleResp clearQuick() {
      if (isEmpty()) {
        return this;
      }
      cachedSize = -1;
      bitField0_ = 0;
      change.clearQuick();
      nextPackage.clear();
      awardItems.clearQuick();
      firstItems.clearQuick();
      affinities.clearQuick();
      surpriseItems.clearQuick();
      return this;
    }

    @Override
    public boolean equals(Object o) {
      if (o == this) {
        return true;
      }
      if (!(o instanceof TravelerDuelLevelSettleResp)) {
        return false;
      }
      TravelerDuelLevelSettleResp other = (TravelerDuelLevelSettleResp) o;
      return bitField0_ == other.bitField0_
        && (!hasDuelExpChange() || duelExpChange == other.duelExpChange)
        && (!hasDuelLevel() || duelLevel == other.duelLevel)
        && (!hasDuelExp() || duelExp == other.duelExp)
        && (!hasBaseScore() || baseScore == other.baseScore)
        && (!hasTimeScore() || timeScore == other.timeScore)
        && (!hasFinalScore() || finalScore == other.finalScore)
        && (!hasMaxScore() || maxScore == other.maxScore)
        && (!hasUploadRemainTimes() || uploadRemainTimes == other.uploadRemainTimes)
        && (!hasFirst() || first == other.first)
        && (!hasChange() || change.equals(other.change))
        && (!hasNextPackage() || nextPackage.equals(other.nextPackage))
        && (!hasAwardItems() || awardItems.equals(other.awardItems))
        && (!hasFirstItems() || firstItems.equals(other.firstItems))
        && (!hasAffinities() || affinities.equals(other.affinities))
        && (!hasSurpriseItems() || surpriseItems.equals(other.surpriseItems));
    }

    @Override
    public void writeTo(final ProtoSink output) throws IOException {
      if ((bitField0_ & 0x00000001) != 0) {
        output.writeRawByte((byte) 56);
        output.writeInt32NoTag(duelExpChange);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        output.writeRawByte((byte) 40);
        output.writeUInt32NoTag(duelLevel);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        output.writeRawByte((byte) 48);
        output.writeUInt32NoTag(duelExp);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        output.writeRawByte((byte) 72);
        output.writeUInt32NoTag(baseScore);
      }
      if ((bitField0_ & 0x00000010) != 0) {
        output.writeRawByte((byte) 80);
        output.writeUInt32NoTag(timeScore);
      }
      if ((bitField0_ & 0x00000020) != 0) {
        output.writeRawByte((byte) 88);
        output.writeUInt32NoTag(finalScore);
      }
      if ((bitField0_ & 0x00000040) != 0) {
        output.writeRawByte((byte) 96);
        output.writeUInt32NoTag(maxScore);
      }
      if ((bitField0_ & 0x00000080) != 0) {
        output.writeRawByte((byte) 104);
        output.writeUInt32NoTag(uploadRemainTimes);
      }
      if ((bitField0_ & 0x00000100) != 0) {
        output.writeRawByte((byte) 8);
        output.writeBoolNoTag(first);
      }
      if ((bitField0_ & 0x00000200) != 0) {
        output.writeRawByte((byte) 18);
        output.writeMessageNoTag(change);
      }
      if ((bitField0_ & 0x00000400) != 0) {
        output.writeRawLittleEndian16((short) 32762);
        output.writeBytesNoTag(nextPackage);
      }
      if ((bitField0_ & 0x00000800) != 0) {
        for (int i = 0; i < awardItems.length(); i++) {
          output.writeRawByte((byte) 26);
          output.writeMessageNoTag(awardItems.get(i));
        }
      }
      if ((bitField0_ & 0x00001000) != 0) {
        for (int i = 0; i < firstItems.length(); i++) {
          output.writeRawByte((byte) 34);
          output.writeMessageNoTag(firstItems.get(i));
        }
      }
      if ((bitField0_ & 0x00002000) != 0) {
        for (int i = 0; i < affinities.length(); i++) {
          output.writeRawByte((byte) 66);
          output.writeMessageNoTag(affinities.get(i));
        }
      }
      if ((bitField0_ & 0x00004000) != 0) {
        for (int i = 0; i < surpriseItems.length(); i++) {
          output.writeRawByte((byte) 114);
          output.writeMessageNoTag(surpriseItems.get(i));
        }
      }
    }

    @Override
    protected int computeSerializedSize() {
      int size = 0;
      if ((bitField0_ & 0x00000001) != 0) {
        size += 1 + ProtoSink.computeInt32SizeNoTag(duelExpChange);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(duelLevel);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(duelExp);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(baseScore);
      }
      if ((bitField0_ & 0x00000010) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(timeScore);
      }
      if ((bitField0_ & 0x00000020) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(finalScore);
      }
      if ((bitField0_ & 0x00000040) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(maxScore);
      }
      if ((bitField0_ & 0x00000080) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(uploadRemainTimes);
      }
      if ((bitField0_ & 0x00000100) != 0) {
        size += 2;
      }
      if ((bitField0_ & 0x00000200) != 0) {
        size += 1 + ProtoSink.computeMessageSizeNoTag(change);
      }
      if ((bitField0_ & 0x00000400) != 0) {
        size += 2 + ProtoSink.computeBytesSizeNoTag(nextPackage);
      }
      if ((bitField0_ & 0x00000800) != 0) {
        size += (1 * awardItems.length()) + ProtoSink.computeRepeatedMessageSizeNoTag(awardItems);
      }
      if ((bitField0_ & 0x00001000) != 0) {
        size += (1 * firstItems.length()) + ProtoSink.computeRepeatedMessageSizeNoTag(firstItems);
      }
      if ((bitField0_ & 0x00002000) != 0) {
        size += (1 * affinities.length()) + ProtoSink.computeRepeatedMessageSizeNoTag(affinities);
      }
      if ((bitField0_ & 0x00004000) != 0) {
        size += (1 * surpriseItems.length()) + ProtoSink.computeRepeatedMessageSizeNoTag(surpriseItems);
      }
      return size;
    }

    @Override
    @SuppressWarnings("fallthrough")
    public TravelerDuelLevelSettleResp mergeFrom(final ProtoSource input) throws IOException {
      // Enabled Fall-Through Optimization (QuickBuffers)
      int tag = input.readTag();
      while (true) {
        switch (tag) {
          case 56: {
            // duelExpChange
            duelExpChange = input.readInt32();
            bitField0_ |= 0x00000001;
            tag = input.readTag();
            if (tag != 40) {
              break;
            }
          }
          case 40: {
            // duelLevel
            duelLevel = input.readUInt32();
            bitField0_ |= 0x00000002;
            tag = input.readTag();
            if (tag != 48) {
              break;
            }
          }
          case 48: {
            // duelExp
            duelExp = input.readUInt32();
            bitField0_ |= 0x00000004;
            tag = input.readTag();
            if (tag != 72) {
              break;
            }
          }
          case 72: {
            // baseScore
            baseScore = input.readUInt32();
            bitField0_ |= 0x00000008;
            tag = input.readTag();
            if (tag != 80) {
              break;
            }
          }
          case 80: {
            // timeScore
            timeScore = input.readUInt32();
            bitField0_ |= 0x00000010;
            tag = input.readTag();
            if (tag != 88) {
              break;
            }
          }
          case 88: {
            // finalScore
            finalScore = input.readUInt32();
            bitField0_ |= 0x00000020;
            tag = input.readTag();
            if (tag != 96) {
              break;
            }
          }
          case 96: {
            // maxScore
            maxScore = input.readUInt32();
            bitField0_ |= 0x00000040;
            tag = input.readTag();
            if (tag != 104) {
              break;
            }
          }
          case 104: {
            // uploadRemainTimes
            uploadRemainTimes = input.readUInt32();
            bitField0_ |= 0x00000080;
            tag = input.readTag();
            if (tag != 8) {
              break;
            }
          }
          case 8: {
            // first
            first = input.readBool();
            bitField0_ |= 0x00000100;
            tag = input.readTag();
            if (tag != 18) {
              break;
            }
          }
          case 18: {
            // change
            input.readMessage(change);
            bitField0_ |= 0x00000200;
            tag = input.readTag();
            if (tag != 16378) {
              break;
            }
          }
          case 16378: {
            // nextPackage
            input.readBytes(nextPackage);
            bitField0_ |= 0x00000400;
            tag = input.readTag();
            if (tag != 26) {
              break;
            }
          }
          case 26: {
            // awardItems
            tag = input.readRepeatedMessage(awardItems, tag);
            bitField0_ |= 0x00000800;
            if (tag != 34) {
              break;
            }
          }
          case 34: {
            // firstItems
            tag = input.readRepeatedMessage(firstItems, tag);
            bitField0_ |= 0x00001000;
            if (tag != 66) {
              break;
            }
          }
          case 66: {
            // affinities
            tag = input.readRepeatedMessage(affinities, tag);
            bitField0_ |= 0x00002000;
            if (tag != 114) {
              break;
            }
          }
          case 114: {
            // surpriseItems
            tag = input.readRepeatedMessage(surpriseItems, tag);
            bitField0_ |= 0x00004000;
            if (tag != 0) {
              break;
            }
          }
          case 0: {
            return this;
          }
          default: {
            if (!input.skipField(tag)) {
              return this;
            }
            tag = input.readTag();
            break;
          }
        }
      }
    }

    @Override
    public void writeTo(final JsonSink output) throws IOException {
      output.beginObject();
      if ((bitField0_ & 0x00000001) != 0) {
        output.writeInt32(FieldNames.duelExpChange, duelExpChange);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        output.writeUInt32(FieldNames.duelLevel, duelLevel);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        output.writeUInt32(FieldNames.duelExp, duelExp);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        output.writeUInt32(FieldNames.baseScore, baseScore);
      }
      if ((bitField0_ & 0x00000010) != 0) {
        output.writeUInt32(FieldNames.timeScore, timeScore);
      }
      if ((bitField0_ & 0x00000020) != 0) {
        output.writeUInt32(FieldNames.finalScore, finalScore);
      }
      if ((bitField0_ & 0x00000040) != 0) {
        output.writeUInt32(FieldNames.maxScore, maxScore);
      }
      if ((bitField0_ & 0x00000080) != 0) {
        output.writeUInt32(FieldNames.uploadRemainTimes, uploadRemainTimes);
      }
      if ((bitField0_ & 0x00000100) != 0) {
        output.writeBool(FieldNames.first, first);
      }
      if ((bitField0_ & 0x00000200) != 0) {
        output.writeMessage(FieldNames.change, change);
      }
      if ((bitField0_ & 0x00000400) != 0) {
        output.writeBytes(FieldNames.nextPackage, nextPackage);
      }
      if ((bitField0_ & 0x00000800) != 0) {
        output.writeRepeatedMessage(FieldNames.awardItems, awardItems);
      }
      if ((bitField0_ & 0x00001000) != 0) {
        output.writeRepeatedMessage(FieldNames.firstItems, firstItems);
      }
      if ((bitField0_ & 0x00002000) != 0) {
        output.writeRepeatedMessage(FieldNames.affinities, affinities);
      }
      if ((bitField0_ & 0x00004000) != 0) {
        output.writeRepeatedMessage(FieldNames.surpriseItems, surpriseItems);
      }
      output.endObject();
    }

    @Override
    public TravelerDuelLevelSettleResp mergeFrom(final JsonSource input) throws IOException {
      if (!input.beginObject()) {
        return this;
      }
      while (!input.isAtEnd()) {
        switch (input.readFieldHash()) {
          case -248943115: {
            if (input.isAtField(FieldNames.duelExpChange)) {
              if (!input.trySkipNullValue()) {
                duelExpChange = input.readInt32();
                bitField0_ |= 0x00000001;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 2006347084: {
            if (input.isAtField(FieldNames.duelLevel)) {
              if (!input.trySkipNullValue()) {
                duelLevel = input.readUInt32();
                bitField0_ |= 0x00000002;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -628085275: {
            if (input.isAtField(FieldNames.duelExp)) {
              if (!input.trySkipNullValue()) {
                duelExp = input.readUInt32();
                bitField0_ |= 0x00000004;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 175964705: {
            if (input.isAtField(FieldNames.baseScore)) {
              if (!input.trySkipNullValue()) {
                baseScore = input.readUInt32();
                bitField0_ |= 0x00000008;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 2029048741: {
            if (input.isAtField(FieldNames.timeScore)) {
              if (!input.trySkipNullValue()) {
                timeScore = input.readUInt32();
                bitField0_ |= 0x00000010;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 120578780: {
            if (input.isAtField(FieldNames.finalScore)) {
              if (!input.trySkipNullValue()) {
                finalScore = input.readUInt32();
                bitField0_ |= 0x00000020;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 461163438: {
            if (input.isAtField(FieldNames.maxScore)) {
              if (!input.trySkipNullValue()) {
                maxScore = input.readUInt32();
                bitField0_ |= 0x00000040;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -1281247399: {
            if (input.isAtField(FieldNames.uploadRemainTimes)) {
              if (!input.trySkipNullValue()) {
                uploadRemainTimes = input.readUInt32();
                bitField0_ |= 0x00000080;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 67887760: {
            if (input.isAtField(FieldNames.first)) {
              if (!input.trySkipNullValue()) {
                first = input.readBool();
                bitField0_ |= 0x00000100;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 2017198032: {
            if (input.isAtField(FieldNames.change)) {
              if (!input.trySkipNullValue()) {
                input.readMessage(change);
                bitField0_ |= 0x00000200;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -2082324045: {
            if (input.isAtField(FieldNames.nextPackage)) {
              if (!input.trySkipNullValue()) {
                input.readBytes(nextPackage);
                bitField0_ |= 0x00000400;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -1943188605: {
            if (input.isAtField(FieldNames.awardItems)) {
              if (!input.trySkipNullValue()) {
                input.readRepeatedMessage(awardItems);
                bitField0_ |= 0x00000800;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 1812344592: {
            if (input.isAtField(FieldNames.firstItems)) {
              if (!input.trySkipNullValue()) {
                input.readRepeatedMessage(firstItems);
                bitField0_ |= 0x00001000;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -238867482: {
            if (input.isAtField(FieldNames.affinities)) {
              if (!input.trySkipNullValue()) {
                input.readRepeatedMessage(affinities);
                bitField0_ |= 0x00002000;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 477801015: {
            if (input.isAtField(FieldNames.surpriseItems)) {
              if (!input.trySkipNullValue()) {
                input.readRepeatedMessage(surpriseItems);
                bitField0_ |= 0x00004000;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          default: {
            input.skipUnknownField();
            break;
          }
        }
      }
      input.endObject();
      return this;
    }

    @Override
    public TravelerDuelLevelSettleResp clone() {
      return new TravelerDuelLevelSettleResp().copyFrom(this);
    }

    @Override
    public boolean isEmpty() {
      return ((bitField0_) == 0);
    }

    public static TravelerDuelLevelSettleResp parseFrom(final byte[] data) throws
        InvalidProtocolBufferException {
      return ProtoMessage.mergeFrom(new TravelerDuelLevelSettleResp(), data).checkInitialized();
    }

    public static TravelerDuelLevelSettleResp parseFrom(final ProtoSource input) throws
        IOException {
      return ProtoMessage.mergeFrom(new TravelerDuelLevelSettleResp(), input).checkInitialized();
    }

    public static TravelerDuelLevelSettleResp parseFrom(final JsonSource input) throws IOException {
      return ProtoMessage.mergeFrom(new TravelerDuelLevelSettleResp(), input).checkInitialized();
    }

    /**
     * @return factory for creating TravelerDuelLevelSettleResp messages
     */
    public static MessageFactory<TravelerDuelLevelSettleResp> getFactory() {
      return TravelerDuelLevelSettleRespFactory.INSTANCE;
    }

    private enum TravelerDuelLevelSettleRespFactory implements MessageFactory<TravelerDuelLevelSettleResp> {
      INSTANCE;

      @Override
      public TravelerDuelLevelSettleResp create() {
        return TravelerDuelLevelSettleResp.newInstance();
      }
    }

    /**
     * Contains name constants used for serializing JSON
     */
    static class FieldNames {
      static final FieldName duelExpChange = FieldName.forField("DuelExpChange");

      static final FieldName duelLevel = FieldName.forField("DuelLevel");

      static final FieldName duelExp = FieldName.forField("DuelExp");

      static final FieldName baseScore = FieldName.forField("BaseScore");

      static final FieldName timeScore = FieldName.forField("TimeScore");

      static final FieldName finalScore = FieldName.forField("FinalScore");

      static final FieldName maxScore = FieldName.forField("MaxScore");

      static final FieldName uploadRemainTimes = FieldName.forField("UploadRemainTimes");

      static final FieldName first = FieldName.forField("First");

      static final FieldName change = FieldName.forField("Change");

      static final FieldName nextPackage = FieldName.forField("NextPackage");

      static final FieldName awardItems = FieldName.forField("AwardItems");

      static final FieldName firstItems = FieldName.forField("FirstItems");

      static final FieldName affinities = FieldName.forField("Affinities");

      static final FieldName surpriseItems = FieldName.forField("SurpriseItems");
    }
  }
}
