// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: IM.File.proto

package com.mogujie.tt.protobuf;

public final class IMFile {
  private IMFile() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public interface IMFileLoginReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileLoginReq)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id:	0x0501
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    boolean hasUserId();
    /**
     * <pre>
     *cmd id:	0x0501
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    long getUserId();

    /**
     * <code>required string task_id = 2;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
     */
    boolean hasFileRole();
    /**
     * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole getFileRole();
  }
  /**
   * Protobuf type {@code IM.File.IMFileLoginReq}
   */
  public  static final class IMFileLoginReq extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileLoginReq, IMFileLoginReq.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileLoginReq)
      IMFileLoginReqOrBuilder {
    private IMFileLoginReq() {
      taskId_ = "";
      fileRole_ = 1;
    }
    private int bitField0_;
    public static final int USER_ID_FIELD_NUMBER = 1;
    private long userId_;
    /**
     * <pre>
     *cmd id:	0x0501
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id:	0x0501
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    public long getUserId() {
      return userId_;
    }
    /**
     * <pre>
     *cmd id:	0x0501
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    private void setUserId(long value) {
      bitField0_ |= 0x00000001;
      userId_ = value;
    }
    /**
     * <pre>
     *cmd id:	0x0501
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    private void clearUserId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      userId_ = 0L;
    }

    public static final int TASK_ID_FIELD_NUMBER = 2;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 2;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value.toStringUtf8();
    }

    public static final int FILE_ROLE_FIELD_NUMBER = 3;
    private int fileRole_;
    /**
     * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
     */
    public boolean hasFileRole() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole getFileRole() {
      com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole result = com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole.forNumber(fileRole_);
      return result == null ? com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole.CLIENT_REALTIME_SENDER : result;
    }
    /**
     * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
     */
    private void setFileRole(com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000004;
      fileRole_ = value.getNumber();
    }
    /**
     * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
     */
    private void clearFileRole() {
      bitField0_ = (bitField0_ & ~0x00000004);
      fileRole_ = 1;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeString(2, getTaskId());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, fileRole_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(2, getTaskId());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, fileRole_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileLoginReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileLoginReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileLoginReq, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileLoginReq)
        com.mogujie.tt.protobuf.IMFile.IMFileLoginReqOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileLoginReq.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id:	0x0501
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public boolean hasUserId() {
        return instance.hasUserId();
      }
      /**
       * <pre>
       *cmd id:	0x0501
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public long getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       *cmd id:	0x0501
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public Builder setUserId(long value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id:	0x0501
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <code>required string task_id = 2;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      /**
       * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
       */
      public boolean hasFileRole() {
        return instance.hasFileRole();
      }
      /**
       * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole getFileRole() {
        return instance.getFileRole();
      }
      /**
       * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
       */
      public Builder setFileRole(com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole value) {
        copyOnWrite();
        instance.setFileRole(value);
        return this;
      }
      /**
       * <code>required .IM.BaseDefine.ClientFileRole file_role = 3;</code>
       */
      public Builder clearFileRole() {
        copyOnWrite();
        instance.clearFileRole();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileLoginReq)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileLoginReq();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileRole()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileLoginReq other = (com.mogujie.tt.protobuf.IMFile.IMFileLoginReq) arg1;
          userId_ = visitor.visitLong(
              hasUserId(), userId_,
              other.hasUserId(), other.userId_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          fileRole_ = visitor.visitInt(hasFileRole(), fileRole_,
              other.hasFileRole(), other.fileRole_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  userId_ = input.readUInt64();
                  break;
                }
                case 18: {
                  String s = input.readString();
                  bitField0_ |= 0x00000002;
                  taskId_ = s;
                  break;
                }
                case 24: {
                  int rawValue = input.readEnum();
                  com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole value = com.mogujie.tt.protobuf.IMBaseDefine.ClientFileRole.forNumber(rawValue);
                  if (value == null) {
                    super.mergeVarintField(3, rawValue);
                  } else {
                    bitField0_ |= 0x00000004;
                    fileRole_ = rawValue;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileLoginReq.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileLoginReq)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileLoginReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileLoginReq();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileLoginReq> PARSER;

    public static com.google.protobuf.Parser<IMFileLoginReq> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileLoginRspOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileLoginRsp)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id:	0x0502
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    boolean hasResultCode();
    /**
     * <pre>
     *cmd id:	0x0502
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    int getResultCode();

    /**
     * <code>required string task_id = 2;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();
  }
  /**
   * Protobuf type {@code IM.File.IMFileLoginRsp}
   */
  public  static final class IMFileLoginRsp extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileLoginRsp, IMFileLoginRsp.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileLoginRsp)
      IMFileLoginRspOrBuilder {
    private IMFileLoginRsp() {
      taskId_ = "";
    }
    private int bitField0_;
    public static final int RESULT_CODE_FIELD_NUMBER = 1;
    private int resultCode_;
    /**
     * <pre>
     *cmd id:	0x0502
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    public boolean hasResultCode() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id:	0x0502
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    public int getResultCode() {
      return resultCode_;
    }
    /**
     * <pre>
     *cmd id:	0x0502
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    private void setResultCode(int value) {
      bitField0_ |= 0x00000001;
      resultCode_ = value;
    }
    /**
     * <pre>
     *cmd id:	0x0502
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    private void clearResultCode() {
      bitField0_ = (bitField0_ & ~0x00000001);
      resultCode_ = 0;
    }

    public static final int TASK_ID_FIELD_NUMBER = 2;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 2;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value.toStringUtf8();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, resultCode_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeString(2, getTaskId());
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, resultCode_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(2, getTaskId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileLoginRsp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileLoginRsp)
        com.mogujie.tt.protobuf.IMFile.IMFileLoginRspOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id:	0x0502
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public boolean hasResultCode() {
        return instance.hasResultCode();
      }
      /**
       * <pre>
       *cmd id:	0x0502
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public int getResultCode() {
        return instance.getResultCode();
      }
      /**
       * <pre>
       *cmd id:	0x0502
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public Builder setResultCode(int value) {
        copyOnWrite();
        instance.setResultCode(value);
        return this;
      }
      /**
       * <pre>
       *cmd id:	0x0502
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public Builder clearResultCode() {
        copyOnWrite();
        instance.clearResultCode();
        return this;
      }

      /**
       * <code>required string task_id = 2;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileLoginRsp)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasResultCode()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp other = (com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp) arg1;
          resultCode_ = visitor.visitInt(
              hasResultCode(), resultCode_,
              other.hasResultCode(), other.resultCode_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  resultCode_ = input.readUInt32();
                  break;
                }
                case 18: {
                  String s = input.readString();
                  bitField0_ |= 0x00000002;
                  taskId_ = s;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileLoginRsp)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileLoginRsp();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileLoginRsp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileLoginRsp> PARSER;

    public static com.google.protobuf.Parser<IMFileLoginRsp> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileState)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id: 	0x0503
     * </pre>
     *
     * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
     */
    boolean hasState();
    /**
     * <pre>
     *cmd id: 	0x0503
     * </pre>
     *
     * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState getState();

    /**
     * <code>required string task_id = 2;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>required uint64 user_id = 3;</code>
     */
    boolean hasUserId();
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    long getUserId();
  }
  /**
   * Protobuf type {@code IM.File.IMFileState}
   */
  public  static final class IMFileState extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileState, IMFileState.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileState)
      IMFileStateOrBuilder {
    private IMFileState() {
      taskId_ = "";
    }
    private int bitField0_;
    public static final int STATE_FIELD_NUMBER = 1;
    private int state_;
    /**
     * <pre>
     *cmd id: 	0x0503
     * </pre>
     *
     * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
     */
    public boolean hasState() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id: 	0x0503
     * </pre>
     *
     * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState getState() {
      com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState result = com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState.forNumber(state_);
      return result == null ? com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState.CLIENT_FILE_PEER_READY : result;
    }
    /**
     * <pre>
     *cmd id: 	0x0503
     * </pre>
     *
     * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
     */
    private void setState(com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000001;
      state_ = value.getNumber();
    }
    /**
     * <pre>
     *cmd id: 	0x0503
     * </pre>
     *
     * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
     */
    private void clearState() {
      bitField0_ = (bitField0_ & ~0x00000001);
      state_ = 0;
    }

    public static final int TASK_ID_FIELD_NUMBER = 2;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 2;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value.toStringUtf8();
    }

    public static final int USER_ID_FIELD_NUMBER = 3;
    private long userId_;
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    public long getUserId() {
      return userId_;
    }
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    private void setUserId(long value) {
      bitField0_ |= 0x00000004;
      userId_ = value;
    }
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    private void clearUserId() {
      bitField0_ = (bitField0_ & ~0x00000004);
      userId_ = 0L;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, state_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeString(2, getTaskId());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(3, userId_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, state_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(2, getTaskId());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, userId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileState parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileState prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileState, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileState)
        com.mogujie.tt.protobuf.IMFile.IMFileStateOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileState.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id: 	0x0503
       * </pre>
       *
       * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
       */
      public boolean hasState() {
        return instance.hasState();
      }
      /**
       * <pre>
       *cmd id: 	0x0503
       * </pre>
       *
       * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState getState() {
        return instance.getState();
      }
      /**
       * <pre>
       *cmd id: 	0x0503
       * </pre>
       *
       * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
       */
      public Builder setState(com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState value) {
        copyOnWrite();
        instance.setState(value);
        return this;
      }
      /**
       * <pre>
       *cmd id: 	0x0503
       * </pre>
       *
       * <code>required .IM.BaseDefine.ClientFileState state = 1;</code>
       */
      public Builder clearState() {
        copyOnWrite();
        instance.clearState();
        return this;
      }

      /**
       * <code>required string task_id = 2;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public boolean hasUserId() {
        return instance.hasUserId();
      }
      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public long getUserId() {
        return instance.getUserId();
      }
      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public Builder setUserId(long value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileState)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileState();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasState()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileState other = (com.mogujie.tt.protobuf.IMFile.IMFileState) arg1;
          state_ = visitor.visitInt(hasState(), state_,
              other.hasState(), other.state_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          userId_ = visitor.visitLong(
              hasUserId(), userId_,
              other.hasUserId(), other.userId_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  int rawValue = input.readEnum();
                  com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState value = com.mogujie.tt.protobuf.IMBaseDefine.ClientFileState.forNumber(rawValue);
                  if (value == null) {
                    super.mergeVarintField(1, rawValue);
                  } else {
                    bitField0_ |= 0x00000001;
                    state_ = rawValue;
                  }
                  break;
                }
                case 18: {
                  String s = input.readString();
                  bitField0_ |= 0x00000002;
                  taskId_ = s;
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  userId_ = input.readUInt64();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileState.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileState)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileState DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileState();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileState> PARSER;

    public static com.google.protobuf.Parser<IMFileState> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFilePullDataReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFilePullDataReq)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    boolean hasTaskId();
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    java.lang.String getTaskId();
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>required uint64 user_id = 2;</code>
     */
    boolean hasUserId();
    /**
     * <code>required uint64 user_id = 2;</code>
     */
    long getUserId();

    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
     */
    boolean hasTransMode();
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode();

    /**
     * <code>required uint32 offset = 4;</code>
     */
    boolean hasOffset();
    /**
     * <code>required uint32 offset = 4;</code>
     */
    int getOffset();

    /**
     * <code>required uint32 data_size = 5;</code>
     */
    boolean hasDataSize();
    /**
     * <code>required uint32 data_size = 5;</code>
     */
    int getDataSize();
  }
  /**
   * Protobuf type {@code IM.File.IMFilePullDataReq}
   */
  public  static final class IMFilePullDataReq extends
      com.google.protobuf.GeneratedMessageLite<
          IMFilePullDataReq, IMFilePullDataReq.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFilePullDataReq)
      IMFilePullDataReqOrBuilder {
    private IMFilePullDataReq() {
      taskId_ = "";
      transMode_ = 1;
    }
    private int bitField0_;
    public static final int TASK_ID_FIELD_NUMBER = 1;
    private java.lang.String taskId_;
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
      taskId_ = value;
    }
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <pre>
     *cmd id:	0x0504
     * </pre>
     *
     * <code>required string task_id = 1;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
      taskId_ = value.toStringUtf8();
    }

    public static final int USER_ID_FIELD_NUMBER = 2;
    private long userId_;
    /**
     * <code>required uint64 user_id = 2;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 user_id = 2;</code>
     */
    public long getUserId() {
      return userId_;
    }
    /**
     * <code>required uint64 user_id = 2;</code>
     */
    private void setUserId(long value) {
      bitField0_ |= 0x00000002;
      userId_ = value;
    }
    /**
     * <code>required uint64 user_id = 2;</code>
     */
    private void clearUserId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      userId_ = 0L;
    }

    public static final int TRANS_MODE_FIELD_NUMBER = 3;
    private int transMode_;
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
     */
    public boolean hasTransMode() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
      com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType result = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(transMode_);
      return result == null ? com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.FILE_TYPE_ONLINE : result;
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
     */
    private void setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000004;
      transMode_ = value.getNumber();
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
     */
    private void clearTransMode() {
      bitField0_ = (bitField0_ & ~0x00000004);
      transMode_ = 1;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    private int offset_;
    /**
     * <code>required uint32 offset = 4;</code>
     */
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required uint32 offset = 4;</code>
     */
    public int getOffset() {
      return offset_;
    }
    /**
     * <code>required uint32 offset = 4;</code>
     */
    private void setOffset(int value) {
      bitField0_ |= 0x00000008;
      offset_ = value;
    }
    /**
     * <code>required uint32 offset = 4;</code>
     */
    private void clearOffset() {
      bitField0_ = (bitField0_ & ~0x00000008);
      offset_ = 0;
    }

    public static final int DATA_SIZE_FIELD_NUMBER = 5;
    private int dataSize_;
    /**
     * <code>required uint32 data_size = 5;</code>
     */
    public boolean hasDataSize() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required uint32 data_size = 5;</code>
     */
    public int getDataSize() {
      return dataSize_;
    }
    /**
     * <code>required uint32 data_size = 5;</code>
     */
    private void setDataSize(int value) {
      bitField0_ |= 0x00000010;
      dataSize_ = value;
    }
    /**
     * <code>required uint32 data_size = 5;</code>
     */
    private void clearDataSize() {
      bitField0_ = (bitField0_ & ~0x00000010);
      dataSize_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeString(1, getTaskId());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, userId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeEnum(3, transMode_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(4, offset_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(5, dataSize_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getTaskId());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, userId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, transMode_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, offset_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, dataSize_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFilePullDataReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFilePullDataReq)
        com.mogujie.tt.protobuf.IMFile.IMFilePullDataReqOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id:	0x0504
       * </pre>
       *
       * <code>required string task_id = 1;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <pre>
       *cmd id:	0x0504
       * </pre>
       *
       * <code>required string task_id = 1;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <pre>
       *cmd id:	0x0504
       * </pre>
       *
       * <code>required string task_id = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <pre>
       *cmd id:	0x0504
       * </pre>
       *
       * <code>required string task_id = 1;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id:	0x0504
       * </pre>
       *
       * <code>required string task_id = 1;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <pre>
       *cmd id:	0x0504
       * </pre>
       *
       * <code>required string task_id = 1;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      /**
       * <code>required uint64 user_id = 2;</code>
       */
      public boolean hasUserId() {
        return instance.hasUserId();
      }
      /**
       * <code>required uint64 user_id = 2;</code>
       */
      public long getUserId() {
        return instance.getUserId();
      }
      /**
       * <code>required uint64 user_id = 2;</code>
       */
      public Builder setUserId(long value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <code>required uint64 user_id = 2;</code>
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
       */
      public boolean hasTransMode() {
        return instance.hasTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
        return instance.getTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
       */
      public Builder setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
        copyOnWrite();
        instance.setTransMode(value);
        return this;
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 3;</code>
       */
      public Builder clearTransMode() {
        copyOnWrite();
        instance.clearTransMode();
        return this;
      }

      /**
       * <code>required uint32 offset = 4;</code>
       */
      public boolean hasOffset() {
        return instance.hasOffset();
      }
      /**
       * <code>required uint32 offset = 4;</code>
       */
      public int getOffset() {
        return instance.getOffset();
      }
      /**
       * <code>required uint32 offset = 4;</code>
       */
      public Builder setOffset(int value) {
        copyOnWrite();
        instance.setOffset(value);
        return this;
      }
      /**
       * <code>required uint32 offset = 4;</code>
       */
      public Builder clearOffset() {
        copyOnWrite();
        instance.clearOffset();
        return this;
      }

      /**
       * <code>required uint32 data_size = 5;</code>
       */
      public boolean hasDataSize() {
        return instance.hasDataSize();
      }
      /**
       * <code>required uint32 data_size = 5;</code>
       */
      public int getDataSize() {
        return instance.getDataSize();
      }
      /**
       * <code>required uint32 data_size = 5;</code>
       */
      public Builder setDataSize(int value) {
        copyOnWrite();
        instance.setDataSize(value);
        return this;
      }
      /**
       * <code>required uint32 data_size = 5;</code>
       */
      public Builder clearDataSize() {
        copyOnWrite();
        instance.clearDataSize();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFilePullDataReq)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTransMode()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasOffset()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasDataSize()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq other = (com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq) arg1;
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          userId_ = visitor.visitLong(
              hasUserId(), userId_,
              other.hasUserId(), other.userId_);
          transMode_ = visitor.visitInt(hasTransMode(), transMode_,
              other.hasTransMode(), other.transMode_);
          offset_ = visitor.visitInt(
              hasOffset(), offset_,
              other.hasOffset(), other.offset_);
          dataSize_ = visitor.visitInt(
              hasDataSize(), dataSize_,
              other.hasDataSize(), other.dataSize_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  String s = input.readString();
                  bitField0_ |= 0x00000001;
                  taskId_ = s;
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  userId_ = input.readUInt64();
                  break;
                }
                case 24: {
                  int rawValue = input.readEnum();
                  com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(rawValue);
                  if (value == null) {
                    super.mergeVarintField(3, rawValue);
                  } else {
                    bitField0_ |= 0x00000004;
                    transMode_ = rawValue;
                  }
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  offset_ = input.readUInt32();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  dataSize_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFilePullDataReq)
    private static final com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFilePullDataReq();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFilePullDataReq> PARSER;

    public static com.google.protobuf.Parser<IMFilePullDataReq> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFilePullDataRspOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFilePullDataRsp)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id: 	0x0505
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    boolean hasResultCode();
    /**
     * <pre>
     *cmd id: 	0x0505
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    int getResultCode();

    /**
     * <code>required string task_id = 2;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 2;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>required uint64 user_id = 3;</code>
     */
    boolean hasUserId();
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    long getUserId();

    /**
     * <code>required uint32 offset = 4;</code>
     */
    boolean hasOffset();
    /**
     * <code>required uint32 offset = 4;</code>
     */
    int getOffset();

    /**
     * <code>required bytes file_data = 5;</code>
     */
    boolean hasFileData();
    /**
     * <code>required bytes file_data = 5;</code>
     */
    com.google.protobuf.ByteString getFileData();
  }
  /**
   * Protobuf type {@code IM.File.IMFilePullDataRsp}
   */
  public  static final class IMFilePullDataRsp extends
      com.google.protobuf.GeneratedMessageLite<
          IMFilePullDataRsp, IMFilePullDataRsp.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFilePullDataRsp)
      IMFilePullDataRspOrBuilder {
    private IMFilePullDataRsp() {
      taskId_ = "";
      fileData_ = com.google.protobuf.ByteString.EMPTY;
    }
    private int bitField0_;
    public static final int RESULT_CODE_FIELD_NUMBER = 1;
    private int resultCode_;
    /**
     * <pre>
     *cmd id: 	0x0505
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    public boolean hasResultCode() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id: 	0x0505
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    public int getResultCode() {
      return resultCode_;
    }
    /**
     * <pre>
     *cmd id: 	0x0505
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    private void setResultCode(int value) {
      bitField0_ |= 0x00000001;
      resultCode_ = value;
    }
    /**
     * <pre>
     *cmd id: 	0x0505
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    private void clearResultCode() {
      bitField0_ = (bitField0_ & ~0x00000001);
      resultCode_ = 0;
    }

    public static final int TASK_ID_FIELD_NUMBER = 2;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 2;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 2;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      taskId_ = value.toStringUtf8();
    }

    public static final int USER_ID_FIELD_NUMBER = 3;
    private long userId_;
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    public long getUserId() {
      return userId_;
    }
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    private void setUserId(long value) {
      bitField0_ |= 0x00000004;
      userId_ = value;
    }
    /**
     * <code>required uint64 user_id = 3;</code>
     */
    private void clearUserId() {
      bitField0_ = (bitField0_ & ~0x00000004);
      userId_ = 0L;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    private int offset_;
    /**
     * <code>required uint32 offset = 4;</code>
     */
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required uint32 offset = 4;</code>
     */
    public int getOffset() {
      return offset_;
    }
    /**
     * <code>required uint32 offset = 4;</code>
     */
    private void setOffset(int value) {
      bitField0_ |= 0x00000008;
      offset_ = value;
    }
    /**
     * <code>required uint32 offset = 4;</code>
     */
    private void clearOffset() {
      bitField0_ = (bitField0_ & ~0x00000008);
      offset_ = 0;
    }

    public static final int FILE_DATA_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString fileData_;
    /**
     * <code>required bytes file_data = 5;</code>
     */
    public boolean hasFileData() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required bytes file_data = 5;</code>
     */
    public com.google.protobuf.ByteString getFileData() {
      return fileData_;
    }
    /**
     * <code>required bytes file_data = 5;</code>
     */
    private void setFileData(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
      fileData_ = value;
    }
    /**
     * <code>required bytes file_data = 5;</code>
     */
    private void clearFileData() {
      bitField0_ = (bitField0_ & ~0x00000010);
      fileData_ = getDefaultInstance().getFileData();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, resultCode_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeString(2, getTaskId());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(3, userId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(4, offset_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBytes(5, fileData_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, resultCode_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(2, getTaskId());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, userId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, offset_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, fileData_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFilePullDataRsp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFilePullDataRsp)
        com.mogujie.tt.protobuf.IMFile.IMFilePullDataRspOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id: 	0x0505
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public boolean hasResultCode() {
        return instance.hasResultCode();
      }
      /**
       * <pre>
       *cmd id: 	0x0505
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public int getResultCode() {
        return instance.getResultCode();
      }
      /**
       * <pre>
       *cmd id: 	0x0505
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public Builder setResultCode(int value) {
        copyOnWrite();
        instance.setResultCode(value);
        return this;
      }
      /**
       * <pre>
       *cmd id: 	0x0505
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public Builder clearResultCode() {
        copyOnWrite();
        instance.clearResultCode();
        return this;
      }

      /**
       * <code>required string task_id = 2;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 2;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public boolean hasUserId() {
        return instance.hasUserId();
      }
      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public long getUserId() {
        return instance.getUserId();
      }
      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public Builder setUserId(long value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <code>required uint64 user_id = 3;</code>
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <code>required uint32 offset = 4;</code>
       */
      public boolean hasOffset() {
        return instance.hasOffset();
      }
      /**
       * <code>required uint32 offset = 4;</code>
       */
      public int getOffset() {
        return instance.getOffset();
      }
      /**
       * <code>required uint32 offset = 4;</code>
       */
      public Builder setOffset(int value) {
        copyOnWrite();
        instance.setOffset(value);
        return this;
      }
      /**
       * <code>required uint32 offset = 4;</code>
       */
      public Builder clearOffset() {
        copyOnWrite();
        instance.clearOffset();
        return this;
      }

      /**
       * <code>required bytes file_data = 5;</code>
       */
      public boolean hasFileData() {
        return instance.hasFileData();
      }
      /**
       * <code>required bytes file_data = 5;</code>
       */
      public com.google.protobuf.ByteString getFileData() {
        return instance.getFileData();
      }
      /**
       * <code>required bytes file_data = 5;</code>
       */
      public Builder setFileData(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setFileData(value);
        return this;
      }
      /**
       * <code>required bytes file_data = 5;</code>
       */
      public Builder clearFileData() {
        copyOnWrite();
        instance.clearFileData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFilePullDataRsp)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasResultCode()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasOffset()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileData()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp other = (com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp) arg1;
          resultCode_ = visitor.visitInt(
              hasResultCode(), resultCode_,
              other.hasResultCode(), other.resultCode_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          userId_ = visitor.visitLong(
              hasUserId(), userId_,
              other.hasUserId(), other.userId_);
          offset_ = visitor.visitInt(
              hasOffset(), offset_,
              other.hasOffset(), other.offset_);
          fileData_ = visitor.visitByteString(
              hasFileData(), fileData_,
              other.hasFileData(), other.fileData_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  resultCode_ = input.readUInt32();
                  break;
                }
                case 18: {
                  String s = input.readString();
                  bitField0_ |= 0x00000002;
                  taskId_ = s;
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  userId_ = input.readUInt64();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  offset_ = input.readUInt32();
                  break;
                }
                case 42: {
                  bitField0_ |= 0x00000010;
                  fileData_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFilePullDataRsp)
    private static final com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFilePullDataRsp();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFilePullDataRsp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFilePullDataRsp> PARSER;

    public static com.google.protobuf.Parser<IMFilePullDataRsp> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileReq)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id: 	0x0506
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    boolean hasFromUserId();
    /**
     * <pre>
     *cmd id: 	0x0506
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    long getFromUserId();

    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    boolean hasToUserId();
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    long getToUserId();

    /**
     * <code>required string file_name = 3;</code>
     */
    boolean hasFileName();
    /**
     * <code>required string file_name = 3;</code>
     */
    java.lang.String getFileName();
    /**
     * <code>required string file_name = 3;</code>
     */
    com.google.protobuf.ByteString
        getFileNameBytes();

    /**
     * <code>required uint32 file_size = 4;</code>
     */
    boolean hasFileSize();
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    int getFileSize();

    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
     */
    boolean hasTransMode();
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode();
  }
  /**
   * Protobuf type {@code IM.File.IMFileReq}
   */
  public  static final class IMFileReq extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileReq, IMFileReq.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileReq)
      IMFileReqOrBuilder {
    private IMFileReq() {
      fileName_ = "";
      transMode_ = 1;
    }
    private int bitField0_;
    public static final int FROM_USER_ID_FIELD_NUMBER = 1;
    private long fromUserId_;
    /**
     * <pre>
     *cmd id: 	0x0506
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public boolean hasFromUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id: 	0x0506
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public long getFromUserId() {
      return fromUserId_;
    }
    /**
     * <pre>
     *cmd id: 	0x0506
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void setFromUserId(long value) {
      bitField0_ |= 0x00000001;
      fromUserId_ = value;
    }
    /**
     * <pre>
     *cmd id: 	0x0506
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void clearFromUserId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      fromUserId_ = 0L;
    }

    public static final int TO_USER_ID_FIELD_NUMBER = 2;
    private long toUserId_;
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public boolean hasToUserId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public long getToUserId() {
      return toUserId_;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void setToUserId(long value) {
      bitField0_ |= 0x00000002;
      toUserId_ = value;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void clearToUserId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      toUserId_ = 0L;
    }

    public static final int FILE_NAME_FIELD_NUMBER = 3;
    private java.lang.String fileName_;
    /**
     * <code>required string file_name = 3;</code>
     */
    public boolean hasFileName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    public java.lang.String getFileName() {
      return fileName_;
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    public com.google.protobuf.ByteString
        getFileNameBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(fileName_);
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    private void setFileName(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      fileName_ = value;
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    private void clearFileName() {
      bitField0_ = (bitField0_ & ~0x00000004);
      fileName_ = getDefaultInstance().getFileName();
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    private void setFileNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      fileName_ = value.toStringUtf8();
    }

    public static final int FILE_SIZE_FIELD_NUMBER = 4;
    private int fileSize_;
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    public boolean hasFileSize() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    public int getFileSize() {
      return fileSize_;
    }
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    private void setFileSize(int value) {
      bitField0_ |= 0x00000008;
      fileSize_ = value;
    }
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    private void clearFileSize() {
      bitField0_ = (bitField0_ & ~0x00000008);
      fileSize_ = 0;
    }

    public static final int TRANS_MODE_FIELD_NUMBER = 5;
    private int transMode_;
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
     */
    public boolean hasTransMode() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
      com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType result = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(transMode_);
      return result == null ? com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.FILE_TYPE_ONLINE : result;
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
     */
    private void setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000010;
      transMode_ = value.getNumber();
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
     */
    private void clearTransMode() {
      bitField0_ = (bitField0_ & ~0x00000010);
      transMode_ = 1;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeString(3, getFileName());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(4, fileSize_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeEnum(5, transMode_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getFileName());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, fileSize_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, transMode_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileReq, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileReq)
        com.mogujie.tt.protobuf.IMFile.IMFileReqOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileReq.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id: 	0x0506
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public boolean hasFromUserId() {
        return instance.hasFromUserId();
      }
      /**
       * <pre>
       *cmd id: 	0x0506
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public long getFromUserId() {
        return instance.getFromUserId();
      }
      /**
       * <pre>
       *cmd id: 	0x0506
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder setFromUserId(long value) {
        copyOnWrite();
        instance.setFromUserId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id: 	0x0506
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder clearFromUserId() {
        copyOnWrite();
        instance.clearFromUserId();
        return this;
      }

      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public boolean hasToUserId() {
        return instance.hasToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public long getToUserId() {
        return instance.getToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder setToUserId(long value) {
        copyOnWrite();
        instance.setToUserId(value);
        return this;
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder clearToUserId() {
        copyOnWrite();
        instance.clearToUserId();
        return this;
      }

      /**
       * <code>required string file_name = 3;</code>
       */
      public boolean hasFileName() {
        return instance.hasFileName();
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public java.lang.String getFileName() {
        return instance.getFileName();
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getFileNameBytes() {
        return instance.getFileNameBytes();
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public Builder setFileName(
          java.lang.String value) {
        copyOnWrite();
        instance.setFileName(value);
        return this;
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public Builder clearFileName() {
        copyOnWrite();
        instance.clearFileName();
        return this;
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public Builder setFileNameBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setFileNameBytes(value);
        return this;
      }

      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public boolean hasFileSize() {
        return instance.hasFileSize();
      }
      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public int getFileSize() {
        return instance.getFileSize();
      }
      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public Builder setFileSize(int value) {
        copyOnWrite();
        instance.setFileSize(value);
        return this;
      }
      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public Builder clearFileSize() {
        copyOnWrite();
        instance.clearFileSize();
        return this;
      }

      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
       */
      public boolean hasTransMode() {
        return instance.hasTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
        return instance.getTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
       */
      public Builder setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
        copyOnWrite();
        instance.setTransMode(value);
        return this;
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 5;</code>
       */
      public Builder clearTransMode() {
        copyOnWrite();
        instance.clearTransMode();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileReq)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileReq();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasFromUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasToUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileName()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileSize()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTransMode()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileReq other = (com.mogujie.tt.protobuf.IMFile.IMFileReq) arg1;
          fromUserId_ = visitor.visitLong(
              hasFromUserId(), fromUserId_,
              other.hasFromUserId(), other.fromUserId_);
          toUserId_ = visitor.visitLong(
              hasToUserId(), toUserId_,
              other.hasToUserId(), other.toUserId_);
          fileName_ = visitor.visitString(
              hasFileName(), fileName_,
              other.hasFileName(), other.fileName_);
          fileSize_ = visitor.visitInt(
              hasFileSize(), fileSize_,
              other.hasFileSize(), other.fileSize_);
          transMode_ = visitor.visitInt(hasTransMode(), transMode_,
              other.hasTransMode(), other.transMode_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  fromUserId_ = input.readUInt64();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  toUserId_ = input.readUInt64();
                  break;
                }
                case 26: {
                  String s = input.readString();
                  bitField0_ |= 0x00000004;
                  fileName_ = s;
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  fileSize_ = input.readUInt32();
                  break;
                }
                case 40: {
                  int rawValue = input.readEnum();
                  com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(rawValue);
                  if (value == null) {
                    super.mergeVarintField(5, rawValue);
                  } else {
                    bitField0_ |= 0x00000010;
                    transMode_ = rawValue;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileReq.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileReq)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileReq();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileReq> PARSER;

    public static com.google.protobuf.Parser<IMFileReq> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileRspOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileRsp)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id: 	0x0507
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    boolean hasResultCode();
    /**
     * <pre>
     *cmd id: 	0x0507
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    int getResultCode();

    /**
     * <code>required uint64 from_user_id = 2;</code>
     */
    boolean hasFromUserId();
    /**
     * <code>required uint64 from_user_id = 2;</code>
     */
    long getFromUserId();

    /**
     * <code>required uint64 to_user_id = 3;</code>
     */
    boolean hasToUserId();
    /**
     * <code>required uint64 to_user_id = 3;</code>
     */
    long getToUserId();

    /**
     * <code>required string file_name = 4;</code>
     */
    boolean hasFileName();
    /**
     * <code>required string file_name = 4;</code>
     */
    java.lang.String getFileName();
    /**
     * <code>required string file_name = 4;</code>
     */
    com.google.protobuf.ByteString
        getFileNameBytes();

    /**
     * <code>required string task_id = 5;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 5;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 5;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> 
        getIpAddrListList();
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index);
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    int getIpAddrListCount();

    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    boolean hasTransMode();
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode();
  }
  /**
   * Protobuf type {@code IM.File.IMFileRsp}
   */
  public  static final class IMFileRsp extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileRsp, IMFileRsp.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileRsp)
      IMFileRspOrBuilder {
    private IMFileRsp() {
      fileName_ = "";
      taskId_ = "";
      ipAddrList_ = emptyProtobufList();
      transMode_ = 1;
    }
    private int bitField0_;
    public static final int RESULT_CODE_FIELD_NUMBER = 1;
    private int resultCode_;
    /**
     * <pre>
     *cmd id: 	0x0507
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    public boolean hasResultCode() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id: 	0x0507
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    public int getResultCode() {
      return resultCode_;
    }
    /**
     * <pre>
     *cmd id: 	0x0507
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    private void setResultCode(int value) {
      bitField0_ |= 0x00000001;
      resultCode_ = value;
    }
    /**
     * <pre>
     *cmd id: 	0x0507
     * </pre>
     *
     * <code>required uint32 result_code = 1;</code>
     */
    private void clearResultCode() {
      bitField0_ = (bitField0_ & ~0x00000001);
      resultCode_ = 0;
    }

    public static final int FROM_USER_ID_FIELD_NUMBER = 2;
    private long fromUserId_;
    /**
     * <code>required uint64 from_user_id = 2;</code>
     */
    public boolean hasFromUserId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 from_user_id = 2;</code>
     */
    public long getFromUserId() {
      return fromUserId_;
    }
    /**
     * <code>required uint64 from_user_id = 2;</code>
     */
    private void setFromUserId(long value) {
      bitField0_ |= 0x00000002;
      fromUserId_ = value;
    }
    /**
     * <code>required uint64 from_user_id = 2;</code>
     */
    private void clearFromUserId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      fromUserId_ = 0L;
    }

    public static final int TO_USER_ID_FIELD_NUMBER = 3;
    private long toUserId_;
    /**
     * <code>required uint64 to_user_id = 3;</code>
     */
    public boolean hasToUserId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required uint64 to_user_id = 3;</code>
     */
    public long getToUserId() {
      return toUserId_;
    }
    /**
     * <code>required uint64 to_user_id = 3;</code>
     */
    private void setToUserId(long value) {
      bitField0_ |= 0x00000004;
      toUserId_ = value;
    }
    /**
     * <code>required uint64 to_user_id = 3;</code>
     */
    private void clearToUserId() {
      bitField0_ = (bitField0_ & ~0x00000004);
      toUserId_ = 0L;
    }

    public static final int FILE_NAME_FIELD_NUMBER = 4;
    private java.lang.String fileName_;
    /**
     * <code>required string file_name = 4;</code>
     */
    public boolean hasFileName() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    public java.lang.String getFileName() {
      return fileName_;
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    public com.google.protobuf.ByteString
        getFileNameBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(fileName_);
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    private void setFileName(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
      fileName_ = value;
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    private void clearFileName() {
      bitField0_ = (bitField0_ & ~0x00000008);
      fileName_ = getDefaultInstance().getFileName();
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    private void setFileNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
      fileName_ = value.toStringUtf8();
    }

    public static final int TASK_ID_FIELD_NUMBER = 5;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 5;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000010);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
      taskId_ = value.toStringUtf8();
    }

    public static final int IP_ADDR_LIST_FIELD_NUMBER = 6;
    private com.google.protobuf.Internal.ProtobufList<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> ipAddrList_;
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> getIpAddrListList() {
      return ipAddrList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public java.util.List<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddrOrBuilder> 
        getIpAddrListOrBuilderList() {
      return ipAddrList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public int getIpAddrListCount() {
      return ipAddrList_.size();
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index) {
      return ipAddrList_.get(index);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.IpAddrOrBuilder getIpAddrListOrBuilder(
        int index) {
      return ipAddrList_.get(index);
    }
    private void ensureIpAddrListIsMutable() {
      if (!ipAddrList_.isModifiable()) {
        ipAddrList_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(ipAddrList_);
       }
    }

    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void setIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.set(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void setIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.add(value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.add(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(
        com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.add(builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addAllIpAddrList(
        java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> values) {
      ensureIpAddrListIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, ipAddrList_);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void clearIpAddrList() {
      ipAddrList_ = emptyProtobufList();
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void removeIpAddrList(int index) {
      ensureIpAddrListIsMutable();
      ipAddrList_.remove(index);
    }

    public static final int TRANS_MODE_FIELD_NUMBER = 7;
    private int transMode_;
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    public boolean hasTransMode() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
      com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType result = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(transMode_);
      return result == null ? com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.FILE_TYPE_ONLINE : result;
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    private void setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000020;
      transMode_ = value.getNumber();
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    private void clearTransMode() {
      bitField0_ = (bitField0_ & ~0x00000020);
      transMode_ = 1;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt32(1, resultCode_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, fromUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeUInt64(3, toUserId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeString(4, getFileName());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeString(5, getTaskId());
      }
      for (int i = 0; i < ipAddrList_.size(); i++) {
        output.writeMessage(6, ipAddrList_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeEnum(7, transMode_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, resultCode_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, fromUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, toUserId_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(4, getFileName());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(5, getTaskId());
      }
      for (int i = 0; i < ipAddrList_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, ipAddrList_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, transMode_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileRsp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileRsp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileRsp, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileRsp)
        com.mogujie.tt.protobuf.IMFile.IMFileRspOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileRsp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id: 	0x0507
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public boolean hasResultCode() {
        return instance.hasResultCode();
      }
      /**
       * <pre>
       *cmd id: 	0x0507
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public int getResultCode() {
        return instance.getResultCode();
      }
      /**
       * <pre>
       *cmd id: 	0x0507
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public Builder setResultCode(int value) {
        copyOnWrite();
        instance.setResultCode(value);
        return this;
      }
      /**
       * <pre>
       *cmd id: 	0x0507
       * </pre>
       *
       * <code>required uint32 result_code = 1;</code>
       */
      public Builder clearResultCode() {
        copyOnWrite();
        instance.clearResultCode();
        return this;
      }

      /**
       * <code>required uint64 from_user_id = 2;</code>
       */
      public boolean hasFromUserId() {
        return instance.hasFromUserId();
      }
      /**
       * <code>required uint64 from_user_id = 2;</code>
       */
      public long getFromUserId() {
        return instance.getFromUserId();
      }
      /**
       * <code>required uint64 from_user_id = 2;</code>
       */
      public Builder setFromUserId(long value) {
        copyOnWrite();
        instance.setFromUserId(value);
        return this;
      }
      /**
       * <code>required uint64 from_user_id = 2;</code>
       */
      public Builder clearFromUserId() {
        copyOnWrite();
        instance.clearFromUserId();
        return this;
      }

      /**
       * <code>required uint64 to_user_id = 3;</code>
       */
      public boolean hasToUserId() {
        return instance.hasToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 3;</code>
       */
      public long getToUserId() {
        return instance.getToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 3;</code>
       */
      public Builder setToUserId(long value) {
        copyOnWrite();
        instance.setToUserId(value);
        return this;
      }
      /**
       * <code>required uint64 to_user_id = 3;</code>
       */
      public Builder clearToUserId() {
        copyOnWrite();
        instance.clearToUserId();
        return this;
      }

      /**
       * <code>required string file_name = 4;</code>
       */
      public boolean hasFileName() {
        return instance.hasFileName();
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public java.lang.String getFileName() {
        return instance.getFileName();
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public com.google.protobuf.ByteString
          getFileNameBytes() {
        return instance.getFileNameBytes();
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public Builder setFileName(
          java.lang.String value) {
        copyOnWrite();
        instance.setFileName(value);
        return this;
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public Builder clearFileName() {
        copyOnWrite();
        instance.clearFileName();
        return this;
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public Builder setFileNameBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setFileNameBytes(value);
        return this;
      }

      /**
       * <code>required string task_id = 5;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> getIpAddrListList() {
        return java.util.Collections.unmodifiableList(
            instance.getIpAddrListList());
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public int getIpAddrListCount() {
        return instance.getIpAddrListCount();
      }/**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index) {
        return instance.getIpAddrList(index);
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder setIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.setIpAddrList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder setIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.setIpAddrList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.addIpAddrList(value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.addIpAddrList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(
          com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.addIpAddrList(builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.addIpAddrList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addAllIpAddrList(
          java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> values) {
        copyOnWrite();
        instance.addAllIpAddrList(values);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder clearIpAddrList() {
        copyOnWrite();
        instance.clearIpAddrList();
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder removeIpAddrList(int index) {
        copyOnWrite();
        instance.removeIpAddrList(index);
        return this;
      }

      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public boolean hasTransMode() {
        return instance.hasTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
        return instance.getTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public Builder setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
        copyOnWrite();
        instance.setTransMode(value);
        return this;
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public Builder clearTransMode() {
        copyOnWrite();
        instance.clearTransMode();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileRsp)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileRsp();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasResultCode()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFromUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasToUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileName()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTransMode()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          for (int i = 0; i < getIpAddrListCount(); i++) {
            if (!getIpAddrList(i).isInitialized()) {
              if (shouldMemoize) {
                memoizedIsInitialized = 0;
              }
              return null;
            }
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          ipAddrList_.makeImmutable();
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileRsp other = (com.mogujie.tt.protobuf.IMFile.IMFileRsp) arg1;
          resultCode_ = visitor.visitInt(
              hasResultCode(), resultCode_,
              other.hasResultCode(), other.resultCode_);
          fromUserId_ = visitor.visitLong(
              hasFromUserId(), fromUserId_,
              other.hasFromUserId(), other.fromUserId_);
          toUserId_ = visitor.visitLong(
              hasToUserId(), toUserId_,
              other.hasToUserId(), other.toUserId_);
          fileName_ = visitor.visitString(
              hasFileName(), fileName_,
              other.hasFileName(), other.fileName_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          ipAddrList_= visitor.visitList(ipAddrList_, other.ipAddrList_);
          transMode_ = visitor.visitInt(hasTransMode(), transMode_,
              other.hasTransMode(), other.transMode_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  resultCode_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  fromUserId_ = input.readUInt64();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  toUserId_ = input.readUInt64();
                  break;
                }
                case 34: {
                  String s = input.readString();
                  bitField0_ |= 0x00000008;
                  fileName_ = s;
                  break;
                }
                case 42: {
                  String s = input.readString();
                  bitField0_ |= 0x00000010;
                  taskId_ = s;
                  break;
                }
                case 50: {
                  if (!ipAddrList_.isModifiable()) {
                    ipAddrList_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(ipAddrList_);
                  }
                  ipAddrList_.add(
                      input.readMessage(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.parser(), extensionRegistry));
                  break;
                }
                case 56: {
                  int rawValue = input.readEnum();
                  com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(rawValue);
                  if (value == null) {
                    super.mergeVarintField(7, rawValue);
                  } else {
                    bitField0_ |= 0x00000020;
                    transMode_ = rawValue;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileRsp.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileRsp)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileRsp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileRsp();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileRsp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileRsp> PARSER;

    public static com.google.protobuf.Parser<IMFileRsp> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileNotifyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileNotify)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id: 	0x0508
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    boolean hasFromUserId();
    /**
     * <pre>
     *cmd id: 	0x0508
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    long getFromUserId();

    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    boolean hasToUserId();
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    long getToUserId();

    /**
     * <code>required string file_name = 3;</code>
     */
    boolean hasFileName();
    /**
     * <code>required string file_name = 3;</code>
     */
    java.lang.String getFileName();
    /**
     * <code>required string file_name = 3;</code>
     */
    com.google.protobuf.ByteString
        getFileNameBytes();

    /**
     * <code>required uint32 file_size = 4;</code>
     */
    boolean hasFileSize();
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    int getFileSize();

    /**
     * <code>required string task_id = 5;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 5;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 5;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> 
        getIpAddrListList();
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index);
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    int getIpAddrListCount();

    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    boolean hasTransMode();
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode();

    /**
     * <pre>
     *1:True 0:False
     * </pre>
     *
     * <code>required uint32 offline_ready = 8;</code>
     */
    boolean hasOfflineReady();
    /**
     * <pre>
     *1:True 0:False
     * </pre>
     *
     * <code>required uint32 offline_ready = 8;</code>
     */
    int getOfflineReady();
  }
  /**
   * Protobuf type {@code IM.File.IMFileNotify}
   */
  public  static final class IMFileNotify extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileNotify, IMFileNotify.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileNotify)
      IMFileNotifyOrBuilder {
    private IMFileNotify() {
      fileName_ = "";
      taskId_ = "";
      ipAddrList_ = emptyProtobufList();
      transMode_ = 1;
    }
    private int bitField0_;
    public static final int FROM_USER_ID_FIELD_NUMBER = 1;
    private long fromUserId_;
    /**
     * <pre>
     *cmd id: 	0x0508
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public boolean hasFromUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id: 	0x0508
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public long getFromUserId() {
      return fromUserId_;
    }
    /**
     * <pre>
     *cmd id: 	0x0508
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void setFromUserId(long value) {
      bitField0_ |= 0x00000001;
      fromUserId_ = value;
    }
    /**
     * <pre>
     *cmd id: 	0x0508
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void clearFromUserId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      fromUserId_ = 0L;
    }

    public static final int TO_USER_ID_FIELD_NUMBER = 2;
    private long toUserId_;
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public boolean hasToUserId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public long getToUserId() {
      return toUserId_;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void setToUserId(long value) {
      bitField0_ |= 0x00000002;
      toUserId_ = value;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void clearToUserId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      toUserId_ = 0L;
    }

    public static final int FILE_NAME_FIELD_NUMBER = 3;
    private java.lang.String fileName_;
    /**
     * <code>required string file_name = 3;</code>
     */
    public boolean hasFileName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    public java.lang.String getFileName() {
      return fileName_;
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    public com.google.protobuf.ByteString
        getFileNameBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(fileName_);
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    private void setFileName(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      fileName_ = value;
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    private void clearFileName() {
      bitField0_ = (bitField0_ & ~0x00000004);
      fileName_ = getDefaultInstance().getFileName();
    }
    /**
     * <code>required string file_name = 3;</code>
     */
    private void setFileNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      fileName_ = value.toStringUtf8();
    }

    public static final int FILE_SIZE_FIELD_NUMBER = 4;
    private int fileSize_;
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    public boolean hasFileSize() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    public int getFileSize() {
      return fileSize_;
    }
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    private void setFileSize(int value) {
      bitField0_ |= 0x00000008;
      fileSize_ = value;
    }
    /**
     * <code>required uint32 file_size = 4;</code>
     */
    private void clearFileSize() {
      bitField0_ = (bitField0_ & ~0x00000008);
      fileSize_ = 0;
    }

    public static final int TASK_ID_FIELD_NUMBER = 5;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 5;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000010);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 5;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000010;
      taskId_ = value.toStringUtf8();
    }

    public static final int IP_ADDR_LIST_FIELD_NUMBER = 6;
    private com.google.protobuf.Internal.ProtobufList<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> ipAddrList_;
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> getIpAddrListList() {
      return ipAddrList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public java.util.List<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddrOrBuilder> 
        getIpAddrListOrBuilderList() {
      return ipAddrList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public int getIpAddrListCount() {
      return ipAddrList_.size();
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index) {
      return ipAddrList_.get(index);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.IpAddrOrBuilder getIpAddrListOrBuilder(
        int index) {
      return ipAddrList_.get(index);
    }
    private void ensureIpAddrListIsMutable() {
      if (!ipAddrList_.isModifiable()) {
        ipAddrList_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(ipAddrList_);
       }
    }

    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void setIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.set(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void setIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.add(value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.add(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(
        com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.add(builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void addAllIpAddrList(
        java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> values) {
      ensureIpAddrListIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, ipAddrList_);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void clearIpAddrList() {
      ipAddrList_ = emptyProtobufList();
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
     */
    private void removeIpAddrList(int index) {
      ensureIpAddrListIsMutable();
      ipAddrList_.remove(index);
    }

    public static final int TRANS_MODE_FIELD_NUMBER = 7;
    private int transMode_;
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    public boolean hasTransMode() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
      com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType result = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(transMode_);
      return result == null ? com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.FILE_TYPE_ONLINE : result;
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    private void setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000020;
      transMode_ = value.getNumber();
    }
    /**
     * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
     */
    private void clearTransMode() {
      bitField0_ = (bitField0_ & ~0x00000020);
      transMode_ = 1;
    }

    public static final int OFFLINE_READY_FIELD_NUMBER = 8;
    private int offlineReady_;
    /**
     * <pre>
     *1:True 0:False
     * </pre>
     *
     * <code>required uint32 offline_ready = 8;</code>
     */
    public boolean hasOfflineReady() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <pre>
     *1:True 0:False
     * </pre>
     *
     * <code>required uint32 offline_ready = 8;</code>
     */
    public int getOfflineReady() {
      return offlineReady_;
    }
    /**
     * <pre>
     *1:True 0:False
     * </pre>
     *
     * <code>required uint32 offline_ready = 8;</code>
     */
    private void setOfflineReady(int value) {
      bitField0_ |= 0x00000040;
      offlineReady_ = value;
    }
    /**
     * <pre>
     *1:True 0:False
     * </pre>
     *
     * <code>required uint32 offline_ready = 8;</code>
     */
    private void clearOfflineReady() {
      bitField0_ = (bitField0_ & ~0x00000040);
      offlineReady_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeString(3, getFileName());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeUInt32(4, fileSize_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeString(5, getTaskId());
      }
      for (int i = 0; i < ipAddrList_.size(); i++) {
        output.writeMessage(6, ipAddrList_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeEnum(7, transMode_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeUInt32(8, offlineReady_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getFileName());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, fileSize_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(5, getTaskId());
      }
      for (int i = 0; i < ipAddrList_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, ipAddrList_.get(i));
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, transMode_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(8, offlineReady_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileNotify prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileNotify}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileNotify, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileNotify)
        com.mogujie.tt.protobuf.IMFile.IMFileNotifyOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileNotify.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id: 	0x0508
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public boolean hasFromUserId() {
        return instance.hasFromUserId();
      }
      /**
       * <pre>
       *cmd id: 	0x0508
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public long getFromUserId() {
        return instance.getFromUserId();
      }
      /**
       * <pre>
       *cmd id: 	0x0508
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder setFromUserId(long value) {
        copyOnWrite();
        instance.setFromUserId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id: 	0x0508
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder clearFromUserId() {
        copyOnWrite();
        instance.clearFromUserId();
        return this;
      }

      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public boolean hasToUserId() {
        return instance.hasToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public long getToUserId() {
        return instance.getToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder setToUserId(long value) {
        copyOnWrite();
        instance.setToUserId(value);
        return this;
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder clearToUserId() {
        copyOnWrite();
        instance.clearToUserId();
        return this;
      }

      /**
       * <code>required string file_name = 3;</code>
       */
      public boolean hasFileName() {
        return instance.hasFileName();
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public java.lang.String getFileName() {
        return instance.getFileName();
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getFileNameBytes() {
        return instance.getFileNameBytes();
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public Builder setFileName(
          java.lang.String value) {
        copyOnWrite();
        instance.setFileName(value);
        return this;
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public Builder clearFileName() {
        copyOnWrite();
        instance.clearFileName();
        return this;
      }
      /**
       * <code>required string file_name = 3;</code>
       */
      public Builder setFileNameBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setFileNameBytes(value);
        return this;
      }

      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public boolean hasFileSize() {
        return instance.hasFileSize();
      }
      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public int getFileSize() {
        return instance.getFileSize();
      }
      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public Builder setFileSize(int value) {
        copyOnWrite();
        instance.setFileSize(value);
        return this;
      }
      /**
       * <code>required uint32 file_size = 4;</code>
       */
      public Builder clearFileSize() {
        copyOnWrite();
        instance.clearFileSize();
        return this;
      }

      /**
       * <code>required string task_id = 5;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 5;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> getIpAddrListList() {
        return java.util.Collections.unmodifiableList(
            instance.getIpAddrListList());
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public int getIpAddrListCount() {
        return instance.getIpAddrListCount();
      }/**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index) {
        return instance.getIpAddrList(index);
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder setIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.setIpAddrList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder setIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.setIpAddrList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.addIpAddrList(value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.addIpAddrList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(
          com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.addIpAddrList(builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.addIpAddrList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder addAllIpAddrList(
          java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> values) {
        copyOnWrite();
        instance.addAllIpAddrList(values);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder clearIpAddrList() {
        copyOnWrite();
        instance.clearIpAddrList();
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 6;</code>
       */
      public Builder removeIpAddrList(int index) {
        copyOnWrite();
        instance.removeIpAddrList(index);
        return this;
      }

      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public boolean hasTransMode() {
        return instance.hasTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType getTransMode() {
        return instance.getTransMode();
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public Builder setTransMode(com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value) {
        copyOnWrite();
        instance.setTransMode(value);
        return this;
      }
      /**
       * <code>required .IM.BaseDefine.TransferFileType trans_mode = 7;</code>
       */
      public Builder clearTransMode() {
        copyOnWrite();
        instance.clearTransMode();
        return this;
      }

      /**
       * <pre>
       *1:True 0:False
       * </pre>
       *
       * <code>required uint32 offline_ready = 8;</code>
       */
      public boolean hasOfflineReady() {
        return instance.hasOfflineReady();
      }
      /**
       * <pre>
       *1:True 0:False
       * </pre>
       *
       * <code>required uint32 offline_ready = 8;</code>
       */
      public int getOfflineReady() {
        return instance.getOfflineReady();
      }
      /**
       * <pre>
       *1:True 0:False
       * </pre>
       *
       * <code>required uint32 offline_ready = 8;</code>
       */
      public Builder setOfflineReady(int value) {
        copyOnWrite();
        instance.setOfflineReady(value);
        return this;
      }
      /**
       * <pre>
       *1:True 0:False
       * </pre>
       *
       * <code>required uint32 offline_ready = 8;</code>
       */
      public Builder clearOfflineReady() {
        copyOnWrite();
        instance.clearOfflineReady();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileNotify)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileNotify();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasFromUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasToUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileName()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileSize()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTransMode()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasOfflineReady()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          for (int i = 0; i < getIpAddrListCount(); i++) {
            if (!getIpAddrList(i).isInitialized()) {
              if (shouldMemoize) {
                memoizedIsInitialized = 0;
              }
              return null;
            }
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          ipAddrList_.makeImmutable();
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileNotify other = (com.mogujie.tt.protobuf.IMFile.IMFileNotify) arg1;
          fromUserId_ = visitor.visitLong(
              hasFromUserId(), fromUserId_,
              other.hasFromUserId(), other.fromUserId_);
          toUserId_ = visitor.visitLong(
              hasToUserId(), toUserId_,
              other.hasToUserId(), other.toUserId_);
          fileName_ = visitor.visitString(
              hasFileName(), fileName_,
              other.hasFileName(), other.fileName_);
          fileSize_ = visitor.visitInt(
              hasFileSize(), fileSize_,
              other.hasFileSize(), other.fileSize_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          ipAddrList_= visitor.visitList(ipAddrList_, other.ipAddrList_);
          transMode_ = visitor.visitInt(hasTransMode(), transMode_,
              other.hasTransMode(), other.transMode_);
          offlineReady_ = visitor.visitInt(
              hasOfflineReady(), offlineReady_,
              other.hasOfflineReady(), other.offlineReady_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  fromUserId_ = input.readUInt64();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  toUserId_ = input.readUInt64();
                  break;
                }
                case 26: {
                  String s = input.readString();
                  bitField0_ |= 0x00000004;
                  fileName_ = s;
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  fileSize_ = input.readUInt32();
                  break;
                }
                case 42: {
                  String s = input.readString();
                  bitField0_ |= 0x00000010;
                  taskId_ = s;
                  break;
                }
                case 50: {
                  if (!ipAddrList_.isModifiable()) {
                    ipAddrList_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(ipAddrList_);
                  }
                  ipAddrList_.add(
                      input.readMessage(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.parser(), extensionRegistry));
                  break;
                }
                case 56: {
                  int rawValue = input.readEnum();
                  com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType value = com.mogujie.tt.protobuf.IMBaseDefine.TransferFileType.forNumber(rawValue);
                  if (value == null) {
                    super.mergeVarintField(7, rawValue);
                  } else {
                    bitField0_ |= 0x00000020;
                    transMode_ = rawValue;
                  }
                  break;
                }
                case 64: {
                  bitField0_ |= 0x00000040;
                  offlineReady_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileNotify.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileNotify)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileNotify DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileNotify();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileNotify getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileNotify> PARSER;

    public static com.google.protobuf.Parser<IMFileNotify> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileHasOfflineReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileHasOfflineReq)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id: 	0x0509
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    boolean hasUserId();
    /**
     * <pre>
     *cmd id: 	0x0509
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    long getUserId();

    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    boolean hasAttachData();
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    com.google.protobuf.ByteString getAttachData();
  }
  /**
   * Protobuf type {@code IM.File.IMFileHasOfflineReq}
   */
  public  static final class IMFileHasOfflineReq extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileHasOfflineReq, IMFileHasOfflineReq.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileHasOfflineReq)
      IMFileHasOfflineReqOrBuilder {
    private IMFileHasOfflineReq() {
      attachData_ = com.google.protobuf.ByteString.EMPTY;
    }
    private int bitField0_;
    public static final int USER_ID_FIELD_NUMBER = 1;
    private long userId_;
    /**
     * <pre>
     *cmd id: 	0x0509
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id: 	0x0509
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    public long getUserId() {
      return userId_;
    }
    /**
     * <pre>
     *cmd id: 	0x0509
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    private void setUserId(long value) {
      bitField0_ |= 0x00000001;
      userId_ = value;
    }
    /**
     * <pre>
     *cmd id: 	0x0509
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    private void clearUserId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      userId_ = 0L;
    }

    public static final int ATTACH_DATA_FIELD_NUMBER = 20;
    private com.google.protobuf.ByteString attachData_;
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    public boolean hasAttachData() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    public com.google.protobuf.ByteString getAttachData() {
      return attachData_;
    }
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    private void setAttachData(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      attachData_ = value;
    }
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    private void clearAttachData() {
      bitField0_ = (bitField0_ & ~0x00000002);
      attachData_ = getDefaultInstance().getAttachData();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(20, attachData_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, userId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(20, attachData_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileHasOfflineReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileHasOfflineReq)
        com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReqOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id: 	0x0509
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public boolean hasUserId() {
        return instance.hasUserId();
      }
      /**
       * <pre>
       *cmd id: 	0x0509
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public long getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       *cmd id: 	0x0509
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public Builder setUserId(long value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id: 	0x0509
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public boolean hasAttachData() {
        return instance.hasAttachData();
      }
      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public com.google.protobuf.ByteString getAttachData() {
        return instance.getAttachData();
      }
      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public Builder setAttachData(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setAttachData(value);
        return this;
      }
      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public Builder clearAttachData() {
        copyOnWrite();
        instance.clearAttachData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileHasOfflineReq)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq other = (com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq) arg1;
          userId_ = visitor.visitLong(
              hasUserId(), userId_,
              other.hasUserId(), other.userId_);
          attachData_ = visitor.visitByteString(
              hasAttachData(), attachData_,
              other.hasAttachData(), other.attachData_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  userId_ = input.readUInt64();
                  break;
                }
                case 162: {
                  bitField0_ |= 0x00000002;
                  attachData_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileHasOfflineReq)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileHasOfflineReq();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileHasOfflineReq> PARSER;

    public static com.google.protobuf.Parser<IMFileHasOfflineReq> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileHasOfflineRspOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileHasOfflineRsp)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id:	0x050a
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    boolean hasUserId();
    /**
     * <pre>
     *cmd id:	0x050a
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    long getUserId();

    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo> 
        getOfflineFileListList();
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo getOfflineFileList(int index);
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    int getOfflineFileListCount();

    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> 
        getIpAddrListList();
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index);
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    int getIpAddrListCount();

    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    boolean hasAttachData();
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    com.google.protobuf.ByteString getAttachData();
  }
  /**
   * Protobuf type {@code IM.File.IMFileHasOfflineRsp}
   */
  public  static final class IMFileHasOfflineRsp extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileHasOfflineRsp, IMFileHasOfflineRsp.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileHasOfflineRsp)
      IMFileHasOfflineRspOrBuilder {
    private IMFileHasOfflineRsp() {
      offlineFileList_ = emptyProtobufList();
      ipAddrList_ = emptyProtobufList();
      attachData_ = com.google.protobuf.ByteString.EMPTY;
    }
    private int bitField0_;
    public static final int USER_ID_FIELD_NUMBER = 1;
    private long userId_;
    /**
     * <pre>
     *cmd id:	0x050a
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    public boolean hasUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id:	0x050a
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    public long getUserId() {
      return userId_;
    }
    /**
     * <pre>
     *cmd id:	0x050a
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    private void setUserId(long value) {
      bitField0_ |= 0x00000001;
      userId_ = value;
    }
    /**
     * <pre>
     *cmd id:	0x050a
     * </pre>
     *
     * <code>required uint64 user_id = 1;</code>
     */
    private void clearUserId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      userId_ = 0L;
    }

    public static final int OFFLINE_FILE_LIST_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.ProtobufList<com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo> offlineFileList_;
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo> getOfflineFileListList() {
      return offlineFileList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    public java.util.List<? extends com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfoOrBuilder> 
        getOfflineFileListOrBuilderList() {
      return offlineFileList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    public int getOfflineFileListCount() {
      return offlineFileList_.size();
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo getOfflineFileList(int index) {
      return offlineFileList_.get(index);
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfoOrBuilder getOfflineFileListOrBuilder(
        int index) {
      return offlineFileList_.get(index);
    }
    private void ensureOfflineFileListIsMutable() {
      if (!offlineFileList_.isModifiable()) {
        offlineFileList_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(offlineFileList_);
       }
    }

    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void setOfflineFileList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureOfflineFileListIsMutable();
      offlineFileList_.set(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void setOfflineFileList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo.Builder builderForValue) {
      ensureOfflineFileListIsMutable();
      offlineFileList_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void addOfflineFileList(com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureOfflineFileListIsMutable();
      offlineFileList_.add(value);
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void addOfflineFileList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureOfflineFileListIsMutable();
      offlineFileList_.add(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void addOfflineFileList(
        com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo.Builder builderForValue) {
      ensureOfflineFileListIsMutable();
      offlineFileList_.add(builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void addOfflineFileList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo.Builder builderForValue) {
      ensureOfflineFileListIsMutable();
      offlineFileList_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void addAllOfflineFileList(
        java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo> values) {
      ensureOfflineFileListIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, offlineFileList_);
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void clearOfflineFileList() {
      offlineFileList_ = emptyProtobufList();
    }
    /**
     * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
     */
    private void removeOfflineFileList(int index) {
      ensureOfflineFileListIsMutable();
      offlineFileList_.remove(index);
    }

    public static final int IP_ADDR_LIST_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.ProtobufList<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> ipAddrList_;
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> getIpAddrListList() {
      return ipAddrList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    public java.util.List<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddrOrBuilder> 
        getIpAddrListOrBuilderList() {
      return ipAddrList_;
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    public int getIpAddrListCount() {
      return ipAddrList_.size();
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index) {
      return ipAddrList_.get(index);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    public com.mogujie.tt.protobuf.IMBaseDefine.IpAddrOrBuilder getIpAddrListOrBuilder(
        int index) {
      return ipAddrList_.get(index);
    }
    private void ensureIpAddrListIsMutable() {
      if (!ipAddrList_.isModifiable()) {
        ipAddrList_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(ipAddrList_);
       }
    }

    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void setIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.set(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void setIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void addIpAddrList(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.add(value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void addIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureIpAddrListIsMutable();
      ipAddrList_.add(index, value);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void addIpAddrList(
        com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.add(builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void addIpAddrList(
        int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
      ensureIpAddrListIsMutable();
      ipAddrList_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void addAllIpAddrList(
        java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> values) {
      ensureIpAddrListIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, ipAddrList_);
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void clearIpAddrList() {
      ipAddrList_ = emptyProtobufList();
    }
    /**
     * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
     */
    private void removeIpAddrList(int index) {
      ensureIpAddrListIsMutable();
      ipAddrList_.remove(index);
    }

    public static final int ATTACH_DATA_FIELD_NUMBER = 20;
    private com.google.protobuf.ByteString attachData_;
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    public boolean hasAttachData() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    public com.google.protobuf.ByteString getAttachData() {
      return attachData_;
    }
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    private void setAttachData(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
      attachData_ = value;
    }
    /**
     * <code>optional bytes attach_data = 20;</code>
     */
    private void clearAttachData() {
      bitField0_ = (bitField0_ & ~0x00000002);
      attachData_ = getDefaultInstance().getAttachData();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, userId_);
      }
      for (int i = 0; i < offlineFileList_.size(); i++) {
        output.writeMessage(2, offlineFileList_.get(i));
      }
      for (int i = 0; i < ipAddrList_.size(); i++) {
        output.writeMessage(3, ipAddrList_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(20, attachData_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, userId_);
      }
      for (int i = 0; i < offlineFileList_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, offlineFileList_.get(i));
      }
      for (int i = 0; i < ipAddrList_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, ipAddrList_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(20, attachData_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileHasOfflineRsp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileHasOfflineRsp)
        com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRspOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id:	0x050a
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public boolean hasUserId() {
        return instance.hasUserId();
      }
      /**
       * <pre>
       *cmd id:	0x050a
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public long getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       *cmd id:	0x050a
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public Builder setUserId(long value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id:	0x050a
       * </pre>
       *
       * <code>required uint64 user_id = 1;</code>
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo> getOfflineFileListList() {
        return java.util.Collections.unmodifiableList(
            instance.getOfflineFileListList());
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public int getOfflineFileListCount() {
        return instance.getOfflineFileListCount();
      }/**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo getOfflineFileList(int index) {
        return instance.getOfflineFileList(index);
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder setOfflineFileList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo value) {
        copyOnWrite();
        instance.setOfflineFileList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder setOfflineFileList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo.Builder builderForValue) {
        copyOnWrite();
        instance.setOfflineFileList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder addOfflineFileList(com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo value) {
        copyOnWrite();
        instance.addOfflineFileList(value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder addOfflineFileList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo value) {
        copyOnWrite();
        instance.addOfflineFileList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder addOfflineFileList(
          com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo.Builder builderForValue) {
        copyOnWrite();
        instance.addOfflineFileList(builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder addOfflineFileList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo.Builder builderForValue) {
        copyOnWrite();
        instance.addOfflineFileList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder addAllOfflineFileList(
          java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo> values) {
        copyOnWrite();
        instance.addAllOfflineFileList(values);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder clearOfflineFileList() {
        copyOnWrite();
        instance.clearOfflineFileList();
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.OfflineFileInfo offline_file_list = 2;</code>
       */
      public Builder removeOfflineFileList(int index) {
        copyOnWrite();
        instance.removeOfflineFileList(index);
        return this;
      }

      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public java.util.List<com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> getIpAddrListList() {
        return java.util.Collections.unmodifiableList(
            instance.getIpAddrListList());
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public int getIpAddrListCount() {
        return instance.getIpAddrListCount();
      }/**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public com.mogujie.tt.protobuf.IMBaseDefine.IpAddr getIpAddrList(int index) {
        return instance.getIpAddrList(index);
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder setIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.setIpAddrList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder setIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.setIpAddrList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder addIpAddrList(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.addIpAddrList(value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder addIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr value) {
        copyOnWrite();
        instance.addIpAddrList(index, value);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder addIpAddrList(
          com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.addIpAddrList(builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder addIpAddrList(
          int index, com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.Builder builderForValue) {
        copyOnWrite();
        instance.addIpAddrList(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder addAllIpAddrList(
          java.lang.Iterable<? extends com.mogujie.tt.protobuf.IMBaseDefine.IpAddr> values) {
        copyOnWrite();
        instance.addAllIpAddrList(values);
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder clearIpAddrList() {
        copyOnWrite();
        instance.clearIpAddrList();
        return this;
      }
      /**
       * <code>repeated .IM.BaseDefine.IpAddr ip_addr_list = 3;</code>
       */
      public Builder removeIpAddrList(int index) {
        copyOnWrite();
        instance.removeIpAddrList(index);
        return this;
      }

      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public boolean hasAttachData() {
        return instance.hasAttachData();
      }
      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public com.google.protobuf.ByteString getAttachData() {
        return instance.getAttachData();
      }
      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public Builder setAttachData(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setAttachData(value);
        return this;
      }
      /**
       * <code>optional bytes attach_data = 20;</code>
       */
      public Builder clearAttachData() {
        copyOnWrite();
        instance.clearAttachData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileHasOfflineRsp)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          for (int i = 0; i < getOfflineFileListCount(); i++) {
            if (!getOfflineFileList(i).isInitialized()) {
              if (shouldMemoize) {
                memoizedIsInitialized = 0;
              }
              return null;
            }
          }
          for (int i = 0; i < getIpAddrListCount(); i++) {
            if (!getIpAddrList(i).isInitialized()) {
              if (shouldMemoize) {
                memoizedIsInitialized = 0;
              }
              return null;
            }
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          offlineFileList_.makeImmutable();
          ipAddrList_.makeImmutable();
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp other = (com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp) arg1;
          userId_ = visitor.visitLong(
              hasUserId(), userId_,
              other.hasUserId(), other.userId_);
          offlineFileList_= visitor.visitList(offlineFileList_, other.offlineFileList_);
          ipAddrList_= visitor.visitList(ipAddrList_, other.ipAddrList_);
          attachData_ = visitor.visitByteString(
              hasAttachData(), attachData_,
              other.hasAttachData(), other.attachData_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  userId_ = input.readUInt64();
                  break;
                }
                case 18: {
                  if (!offlineFileList_.isModifiable()) {
                    offlineFileList_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(offlineFileList_);
                  }
                  offlineFileList_.add(
                      input.readMessage(com.mogujie.tt.protobuf.IMBaseDefine.OfflineFileInfo.parser(), extensionRegistry));
                  break;
                }
                case 26: {
                  if (!ipAddrList_.isModifiable()) {
                    ipAddrList_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(ipAddrList_);
                  }
                  ipAddrList_.add(
                      input.readMessage(com.mogujie.tt.protobuf.IMBaseDefine.IpAddr.parser(), extensionRegistry));
                  break;
                }
                case 162: {
                  bitField0_ |= 0x00000002;
                  attachData_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileHasOfflineRsp)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileHasOfflineRsp();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileHasOfflineRsp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileHasOfflineRsp> PARSER;

    public static com.google.protobuf.Parser<IMFileHasOfflineRsp> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileAddOfflineReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileAddOfflineReq)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id:	0x050b
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    boolean hasFromUserId();
    /**
     * <pre>
     *cmd id:	0x050b
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    long getFromUserId();

    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    boolean hasToUserId();
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    long getToUserId();

    /**
     * <code>required string task_id = 3;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 3;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();

    /**
     * <code>required string file_name = 4;</code>
     */
    boolean hasFileName();
    /**
     * <code>required string file_name = 4;</code>
     */
    java.lang.String getFileName();
    /**
     * <code>required string file_name = 4;</code>
     */
    com.google.protobuf.ByteString
        getFileNameBytes();

    /**
     * <code>required uint32 file_size = 5;</code>
     */
    boolean hasFileSize();
    /**
     * <code>required uint32 file_size = 5;</code>
     */
    int getFileSize();
  }
  /**
   * Protobuf type {@code IM.File.IMFileAddOfflineReq}
   */
  public  static final class IMFileAddOfflineReq extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileAddOfflineReq, IMFileAddOfflineReq.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileAddOfflineReq)
      IMFileAddOfflineReqOrBuilder {
    private IMFileAddOfflineReq() {
      taskId_ = "";
      fileName_ = "";
    }
    private int bitField0_;
    public static final int FROM_USER_ID_FIELD_NUMBER = 1;
    private long fromUserId_;
    /**
     * <pre>
     *cmd id:	0x050b
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public boolean hasFromUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id:	0x050b
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public long getFromUserId() {
      return fromUserId_;
    }
    /**
     * <pre>
     *cmd id:	0x050b
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void setFromUserId(long value) {
      bitField0_ |= 0x00000001;
      fromUserId_ = value;
    }
    /**
     * <pre>
     *cmd id:	0x050b
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void clearFromUserId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      fromUserId_ = 0L;
    }

    public static final int TO_USER_ID_FIELD_NUMBER = 2;
    private long toUserId_;
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public boolean hasToUserId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public long getToUserId() {
      return toUserId_;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void setToUserId(long value) {
      bitField0_ |= 0x00000002;
      toUserId_ = value;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void clearToUserId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      toUserId_ = 0L;
    }

    public static final int TASK_ID_FIELD_NUMBER = 3;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 3;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000004);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      taskId_ = value.toStringUtf8();
    }

    public static final int FILE_NAME_FIELD_NUMBER = 4;
    private java.lang.String fileName_;
    /**
     * <code>required string file_name = 4;</code>
     */
    public boolean hasFileName() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    public java.lang.String getFileName() {
      return fileName_;
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    public com.google.protobuf.ByteString
        getFileNameBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(fileName_);
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    private void setFileName(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
      fileName_ = value;
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    private void clearFileName() {
      bitField0_ = (bitField0_ & ~0x00000008);
      fileName_ = getDefaultInstance().getFileName();
    }
    /**
     * <code>required string file_name = 4;</code>
     */
    private void setFileNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
      fileName_ = value.toStringUtf8();
    }

    public static final int FILE_SIZE_FIELD_NUMBER = 5;
    private int fileSize_;
    /**
     * <code>required uint32 file_size = 5;</code>
     */
    public boolean hasFileSize() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>required uint32 file_size = 5;</code>
     */
    public int getFileSize() {
      return fileSize_;
    }
    /**
     * <code>required uint32 file_size = 5;</code>
     */
    private void setFileSize(int value) {
      bitField0_ |= 0x00000010;
      fileSize_ = value;
    }
    /**
     * <code>required uint32 file_size = 5;</code>
     */
    private void clearFileSize() {
      bitField0_ = (bitField0_ & ~0x00000010);
      fileSize_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeString(3, getTaskId());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeString(4, getFileName());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeUInt32(5, fileSize_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getTaskId());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(4, getFileName());
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, fileSize_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileAddOfflineReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileAddOfflineReq)
        com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReqOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id:	0x050b
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public boolean hasFromUserId() {
        return instance.hasFromUserId();
      }
      /**
       * <pre>
       *cmd id:	0x050b
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public long getFromUserId() {
        return instance.getFromUserId();
      }
      /**
       * <pre>
       *cmd id:	0x050b
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder setFromUserId(long value) {
        copyOnWrite();
        instance.setFromUserId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id:	0x050b
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder clearFromUserId() {
        copyOnWrite();
        instance.clearFromUserId();
        return this;
      }

      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public boolean hasToUserId() {
        return instance.hasToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public long getToUserId() {
        return instance.getToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder setToUserId(long value) {
        copyOnWrite();
        instance.setToUserId(value);
        return this;
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder clearToUserId() {
        copyOnWrite();
        instance.clearToUserId();
        return this;
      }

      /**
       * <code>required string task_id = 3;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      /**
       * <code>required string file_name = 4;</code>
       */
      public boolean hasFileName() {
        return instance.hasFileName();
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public java.lang.String getFileName() {
        return instance.getFileName();
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public com.google.protobuf.ByteString
          getFileNameBytes() {
        return instance.getFileNameBytes();
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public Builder setFileName(
          java.lang.String value) {
        copyOnWrite();
        instance.setFileName(value);
        return this;
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public Builder clearFileName() {
        copyOnWrite();
        instance.clearFileName();
        return this;
      }
      /**
       * <code>required string file_name = 4;</code>
       */
      public Builder setFileNameBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setFileNameBytes(value);
        return this;
      }

      /**
       * <code>required uint32 file_size = 5;</code>
       */
      public boolean hasFileSize() {
        return instance.hasFileSize();
      }
      /**
       * <code>required uint32 file_size = 5;</code>
       */
      public int getFileSize() {
        return instance.getFileSize();
      }
      /**
       * <code>required uint32 file_size = 5;</code>
       */
      public Builder setFileSize(int value) {
        copyOnWrite();
        instance.setFileSize(value);
        return this;
      }
      /**
       * <code>required uint32 file_size = 5;</code>
       */
      public Builder clearFileSize() {
        copyOnWrite();
        instance.clearFileSize();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileAddOfflineReq)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasFromUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasToUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileName()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasFileSize()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq other = (com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq) arg1;
          fromUserId_ = visitor.visitLong(
              hasFromUserId(), fromUserId_,
              other.hasFromUserId(), other.fromUserId_);
          toUserId_ = visitor.visitLong(
              hasToUserId(), toUserId_,
              other.hasToUserId(), other.toUserId_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          fileName_ = visitor.visitString(
              hasFileName(), fileName_,
              other.hasFileName(), other.fileName_);
          fileSize_ = visitor.visitInt(
              hasFileSize(), fileSize_,
              other.hasFileSize(), other.fileSize_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  fromUserId_ = input.readUInt64();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  toUserId_ = input.readUInt64();
                  break;
                }
                case 26: {
                  String s = input.readString();
                  bitField0_ |= 0x00000004;
                  taskId_ = s;
                  break;
                }
                case 34: {
                  String s = input.readString();
                  bitField0_ |= 0x00000008;
                  fileName_ = s;
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000010;
                  fileSize_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileAddOfflineReq)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileAddOfflineReq();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileAddOfflineReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileAddOfflineReq> PARSER;

    public static com.google.protobuf.Parser<IMFileAddOfflineReq> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface IMFileDelOfflineReqOrBuilder extends
      // @@protoc_insertion_point(interface_extends:IM.File.IMFileDelOfflineReq)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     *cmd id:	0x050c
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    boolean hasFromUserId();
    /**
     * <pre>
     *cmd id:	0x050c
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    long getFromUserId();

    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    boolean hasToUserId();
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    long getToUserId();

    /**
     * <code>required string task_id = 3;</code>
     */
    boolean hasTaskId();
    /**
     * <code>required string task_id = 3;</code>
     */
    java.lang.String getTaskId();
    /**
     * <code>required string task_id = 3;</code>
     */
    com.google.protobuf.ByteString
        getTaskIdBytes();
  }
  /**
   * Protobuf type {@code IM.File.IMFileDelOfflineReq}
   */
  public  static final class IMFileDelOfflineReq extends
      com.google.protobuf.GeneratedMessageLite<
          IMFileDelOfflineReq, IMFileDelOfflineReq.Builder> implements
      // @@protoc_insertion_point(message_implements:IM.File.IMFileDelOfflineReq)
      IMFileDelOfflineReqOrBuilder {
    private IMFileDelOfflineReq() {
      taskId_ = "";
    }
    private int bitField0_;
    public static final int FROM_USER_ID_FIELD_NUMBER = 1;
    private long fromUserId_;
    /**
     * <pre>
     *cmd id:	0x050c
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public boolean hasFromUserId() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     *cmd id:	0x050c
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    public long getFromUserId() {
      return fromUserId_;
    }
    /**
     * <pre>
     *cmd id:	0x050c
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void setFromUserId(long value) {
      bitField0_ |= 0x00000001;
      fromUserId_ = value;
    }
    /**
     * <pre>
     *cmd id:	0x050c
     * </pre>
     *
     * <code>required uint64 from_user_id = 1;</code>
     */
    private void clearFromUserId() {
      bitField0_ = (bitField0_ & ~0x00000001);
      fromUserId_ = 0L;
    }

    public static final int TO_USER_ID_FIELD_NUMBER = 2;
    private long toUserId_;
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public boolean hasToUserId() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    public long getToUserId() {
      return toUserId_;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void setToUserId(long value) {
      bitField0_ |= 0x00000002;
      toUserId_ = value;
    }
    /**
     * <code>required uint64 to_user_id = 2;</code>
     */
    private void clearToUserId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      toUserId_ = 0L;
    }

    public static final int TASK_ID_FIELD_NUMBER = 3;
    private java.lang.String taskId_;
    /**
     * <code>required string task_id = 3;</code>
     */
    public boolean hasTaskId() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    public java.lang.String getTaskId() {
      return taskId_;
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getTaskIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(taskId_);
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    private void setTaskId(
        java.lang.String value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      taskId_ = value;
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    private void clearTaskId() {
      bitField0_ = (bitField0_ & ~0x00000004);
      taskId_ = getDefaultInstance().getTaskId();
    }
    /**
     * <code>required string task_id = 3;</code>
     */
    private void setTaskIdBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
      taskId_ = value.toStringUtf8();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeUInt64(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeUInt64(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeString(3, getTaskId());
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, fromUserId_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, toUserId_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getTaskId());
      }
      size += unknownFields.getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code IM.File.IMFileDelOfflineReq}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq, Builder> implements
        // @@protoc_insertion_point(builder_implements:IM.File.IMFileDelOfflineReq)
        com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReqOrBuilder {
      // Construct using com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       *cmd id:	0x050c
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public boolean hasFromUserId() {
        return instance.hasFromUserId();
      }
      /**
       * <pre>
       *cmd id:	0x050c
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public long getFromUserId() {
        return instance.getFromUserId();
      }
      /**
       * <pre>
       *cmd id:	0x050c
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder setFromUserId(long value) {
        copyOnWrite();
        instance.setFromUserId(value);
        return this;
      }
      /**
       * <pre>
       *cmd id:	0x050c
       * </pre>
       *
       * <code>required uint64 from_user_id = 1;</code>
       */
      public Builder clearFromUserId() {
        copyOnWrite();
        instance.clearFromUserId();
        return this;
      }

      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public boolean hasToUserId() {
        return instance.hasToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public long getToUserId() {
        return instance.getToUserId();
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder setToUserId(long value) {
        copyOnWrite();
        instance.setToUserId(value);
        return this;
      }
      /**
       * <code>required uint64 to_user_id = 2;</code>
       */
      public Builder clearToUserId() {
        copyOnWrite();
        instance.clearToUserId();
        return this;
      }

      /**
       * <code>required string task_id = 3;</code>
       */
      public boolean hasTaskId() {
        return instance.hasTaskId();
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public java.lang.String getTaskId() {
        return instance.getTaskId();
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getTaskIdBytes() {
        return instance.getTaskIdBytes();
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public Builder setTaskId(
          java.lang.String value) {
        copyOnWrite();
        instance.setTaskId(value);
        return this;
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public Builder clearTaskId() {
        copyOnWrite();
        instance.clearTaskId();
        return this;
      }
      /**
       * <code>required string task_id = 3;</code>
       */
      public Builder setTaskIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTaskIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:IM.File.IMFileDelOfflineReq)
    }
    private byte memoizedIsInitialized = -1;
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq();
        }
        case IS_INITIALIZED: {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return DEFAULT_INSTANCE;
          if (isInitialized == 0) return null;

          boolean shouldMemoize = ((Boolean) arg0).booleanValue();
          if (!hasFromUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasToUserId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (!hasTaskId()) {
            if (shouldMemoize) {
              memoizedIsInitialized = 0;
            }
            return null;
          }
          if (shouldMemoize) memoizedIsInitialized = 1;
          return DEFAULT_INSTANCE;

        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq other = (com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq) arg1;
          fromUserId_ = visitor.visitLong(
              hasFromUserId(), fromUserId_,
              other.hasFromUserId(), other.fromUserId_);
          toUserId_ = visitor.visitLong(
              hasToUserId(), toUserId_,
              other.hasToUserId(), other.toUserId_);
          taskId_ = visitor.visitString(
              hasTaskId(), taskId_,
              other.hasTaskId(), other.taskId_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
            bitField0_ |= other.bitField0_;
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(tag, input)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  fromUserId_ = input.readUInt64();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  toUserId_ = input.readUInt64();
                  break;
                }
                case 26: {
                  String s = input.readString();
                  bitField0_ |= 0x00000004;
                  taskId_ = s;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:IM.File.IMFileDelOfflineReq)
    private static final com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new IMFileDelOfflineReq();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static com.mogujie.tt.protobuf.IMFile.IMFileDelOfflineReq getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<IMFileDelOfflineReq> PARSER;

    public static com.google.protobuf.Parser<IMFileDelOfflineReq> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
